/* ============================================================
   德州扑克前端样式(快照渲染版)
   ============================================================ */
:root{
  --bg1:#131320; --bg2:#1d1d2e; --panel:#232338; --panel-2:#2b2b44; --line:#3a3a58;
  --text:#eef0f8; --text-dim:#9fa0b8; --text-faint:#6d6e88;
  --gold:#f2c14e; --gold-strong:#ffd466; --gold-dim:#a8842a;
  --red:#e05555; --green:#3fae5a; --purple:#8b6fe0; --blue:#4a9de8;
  --felt-1:#2e9c4f; --felt-2:#1c7034; --felt-3:#14552a;
  --card-w:44px; --card-h:62px;
  --bar-h:56px;          /* 统一顶栏高度(JS 会按实际换行高度回写) */
}
*{margin:0;padding:0;box-sizing:border-box;}
html,body{height:100%;}
body{
  font-family:"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  background:radial-gradient(1200px 700px at 50% 30%,var(--bg2),var(--bg1) 70%);
  color:var(--text);overflow-y:auto;user-select:none;
}
button{font-family:inherit;cursor:pointer;}
.hidden{display:none !important;}

/* 顶部栏:.app-bar 的完整定义见文件末尾"统一顶栏"章节(此处仅保留通用小件) */
.setup-card .subtitle2{text-align:center;color:var(--text-dim);font-size:12.5px;margin-top:2px;margin-bottom:18px;}
.top-item{font-size:13px;color:var(--text-dim);background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:6px 12px;}
.top-item b{color:var(--text);font-variant-numeric:tabular-nums;}

/* 登录页:全屏居中 */

/* ================= 登录页(分栏式) ================= */
#login-screen{display:flex;align-items:center;justify-content:center;padding:20px;overflow-y:auto;}
.login-card{
  display:flex;width:min(860px,100%);min-height:520px;border-radius:22px;overflow:hidden;
  background:linear-gradient(160deg,rgba(30,32,54,.96),rgba(18,19,32,.96));
  border:1px solid rgba(255,255,255,.09);
  box-shadow:0 30px 80px rgba(0,0,0,.55),0 0 0 1px rgba(242,193,78,.08);
  backdrop-filter:blur(8px);
}
/* 左:品牌 */
.login-brand{
  flex:1.05;padding:46px 40px;display:flex;flex-direction:column;position:relative;
  background:radial-gradient(600px 400px at 20% 15%,rgba(242,193,78,.16),transparent 60%),
             radial-gradient(500px 500px at 90% 90%,rgba(74,110,232,.18),transparent 60%),
             linear-gradient(160deg,#191a2e,#101120);
  border-right:1px solid rgba(255,255,255,.07);
}
.login-logo{width:74px;height:74px;margin-bottom:16px;filter:drop-shadow(0 6px 18px rgba(242,193,78,.3));}
.login-brand h1{font-size:26px;letter-spacing:1px;margin:0 0 4px;}
.login-brand h1 b{color:var(--gold);}
.login-en{font-size:11px;letter-spacing:4px;color:var(--text-faint);margin-bottom:22px;}
.login-slogan{font-size:14px;line-height:1.8;color:var(--text-dim);margin:0 0 24px;}
.login-feats{list-style:none;margin:0;padding:0;flex:1;}
.login-feats li{font-size:13px;color:var(--text-dim);padding:7px 0;}
.login-brand-foot{font-size:10.5px;letter-spacing:2px;color:var(--text-faint);border-top:1px solid rgba(255,255,255,.07);padding-top:14px;}
/* 右:表单 */
.login-form{flex:1;padding:46px 42px;display:flex;flex-direction:column;justify-content:center;}
.login-form h2{font-size:21px;margin:0 0 6px;}
.login-sub{font-size:12.5px;color:var(--text-faint);margin:0 0 26px;}
.login-field{margin-bottom:18px;}
.login-field label{display:block;font-size:12px;font-weight:700;color:var(--text-dim);margin-bottom:7px;}
.phone-wrap{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:10px;background:rgba(0,0,0,.25);overflow:hidden;transition:border-color .15s;}
.phone-wrap:focus-within{border-color:var(--gold-dim);}
.phone-prefix{display:flex;align-items:center;padding:0 12px;font-size:13.5px;font-weight:700;color:var(--text-dim);border-right:1px solid var(--line);background:rgba(255,255,255,.03);}
.phone-wrap input{border:none !important;background:transparent !important;flex:1;padding:11px 12px;}
.code-wrap{display:flex;gap:8px;}
.code-wrap input{flex:1;}
#btn-send-code{
  border:1px solid var(--gold-dim);border-radius:10px;background:rgba(242,193,78,.1);
  color:var(--gold);font-size:12.5px;font-weight:700;padding:0 14px;white-space:nowrap;cursor:pointer;transition:all .15s;
}
#btn-send-code:hover:not(:disabled){background:rgba(242,193,78,.2);}
#btn-send-code:disabled{opacity:.5;cursor:not-allowed;}
.login-msg{font-size:12.5px;border-radius:8px;padding:8px 12px;margin-bottom:14px;}
.login-msg:not(.off){background:rgba(63,174,90,.12);color:#7ed49a;border:1px solid rgba(63,174,90,.3);}
.login-msg.off{background:rgba(224,85,85,.1);color:#f0a0a0;border:1px solid rgba(224,85,85,.25);}
.login-form .setup-btn{margin-top:6px;width:100%;padding:13px;font-size:15px;border-radius:11px;}
.login-agree{font-size:10.5px;color:var(--text-faint);text-align:center;margin:14px 0 0;}
/* 移动端:上下叠放,品牌区压缩 */
@media(max-width:860px){
  .login-card{flex-direction:column;min-height:0;}
  .login-brand{padding:26px 24px;border-right:none;border-bottom:1px solid rgba(255,255,255,.07);}
  .login-logo{width:52px;height:52px;margin-bottom:10px;}
  .login-brand h1{font-size:20px;}
  .login-slogan{margin-bottom:12px;font-size:12.5px;}
  .login-feats{display:none;}
  .login-brand-foot{display:none;}
  .login-form{padding:26px 24px;}
}

/* ================= 新控件(stepper/chips/两列) ================= */
.stepper{display:flex;align-items:center;gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:rgba(0,0,0,.25);}
.stepper button{width:52px;height:46px;font-size:22px;font-weight:800;color:var(--gold);background:rgba(242,193,78,.08);border:none;cursor:pointer;transition:background .12s;}
.stepper button:hover{background:rgba(242,193,78,.2);}
.stepper button:active{background:rgba(242,193,78,.3);}
.stepper span{min-width:64px;text-align:center;font-size:20px;font-weight:800;color:var(--text);}
.chip-group{display:flex;gap:7px;flex-wrap:wrap;}
.chip-opt{padding:11px 18px;border-radius:12px;border:1px solid var(--line);background:rgba(0,0,0,.25);
  color:var(--text-dim);font-size:15px;font-weight:700;cursor:pointer;transition:all .15s;min-width:58px;}
.chip-opt:hover{border-color:var(--gold-dim);color:var(--gold);}
.chip-opt.active{background:rgba(242,193,78,.16);border-color:var(--gold);color:var(--gold);box-shadow:0 0 0 1px var(--gold-dim);}
.setup-row.two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:end;}
.setup-row.two-col .col-item{display:flex;flex-direction:column;gap:6px;}
.setup-row.two-col label{font-size:12px;font-weight:700;color:var(--text-dim);}
.difficulty-ctl .diff-opt{padding:10px 16px;font-size:14.5px;}
.text-input{padding:12px 13px;font-size:15px;}

/* 操作区禁用态(常显,未轮到时置灰) */
#action-bar.disabled .abtn,#action-bar.disabled .abtn-sm,#action-bar.disabled #bet-slider,#action-bar.disabled .bet-input{
  opacity:.4;pointer-events:none;filter:saturate(.4);}
#action-bar.disabled .action-wait-hint{display:block;}
.action-wait-hint{display:none;font-size:12px;color:var(--text-faint);text-align:center;margin-top:3px;}

/* ================= 设置界面(原版设计复刻) ================= */
#setup-screen{
  position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(1000px 600px at 50% 35%,#232338,#131320 75%);
  padding:16px;overflow-y:auto;
}
.setup-card{
  width:min(560px,100%);max-height:calc(100vh - 32px);overflow-y:auto;
  background:linear-gradient(180deg,var(--panel),#1e1e31);
  border:1px solid var(--line);border-radius:20px;padding:26px 32px 22px;
  box-shadow:0 30px 80px rgba(0,0,0,.55);
}
.setup-card h1{font-size:26px;text-align:center;margin-bottom:4px;}
.setup-card h1 b{color:var(--gold);}
.setup-card .subtitle{text-align:center;color:var(--text-dim);font-size:13px;margin-bottom:20px;}
.setup-row{margin-bottom:16px;}
.setup-row label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:8px;font-weight:600;}
.setup-row label small{color:var(--text-faint);font-weight:400;margin-left:6px;}
.seat-count-wrap{display:flex;align-items:center;gap:12px;}
.seat-count-wrap input[type=range]{flex:1;accent-color:var(--gold);height:26px;}
.seat-num{min-width:46px;text-align:center;font-size:22px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;}
.seat-preview{display:flex;justify-content:center;gap:6px;margin-top:8px;flex-wrap:wrap;}
.seat-preview .dot{
  width:26px;height:26px;border-radius:50%;background:var(--panel-2);
  border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--text-dim);
}
.seat-preview .dot.human{background:#2a3d5e;border-color:var(--blue);color:#cfe4ff;}
.inputs-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.name-row{display:flex;gap:10px;align-items:stretch;}
.name-row .text-input{flex:1;min-width:0;}
.name-row .diff-btn{flex:none;width:auto;padding:11px 14px;white-space:nowrap;}
.text-input{
  width:100%;background:#181828;border:1px solid var(--line);border-radius:10px;
  color:var(--text);font-size:15px;padding:11px 12px;outline:none;transition:.15s;
}
.text-input:focus{border-color:var(--gold-dim);}
.diff-group{display:flex;gap:8px;}
.diff-btn{
  flex:1;padding:11px 6px;font-size:14px;font-weight:700;border-radius:10px;
  background:var(--panel-2);border:1px solid var(--line);color:var(--text-dim);
  transition:.15s;cursor:pointer;
}
.diff-btn:hover{color:var(--text);border-color:var(--gold-dim);}
.diff-btn.active{
  background:linear-gradient(180deg,var(--gold-strong),var(--gold));
  color:#2c2000;border-color:var(--gold);box-shadow:0 4px 14px rgba(242,193,78,.3);
}
.setup-btn{
  width:100%;padding:14px;font-size:17px;font-weight:800;border:none;border-radius:12px;
  background:linear-gradient(180deg,var(--gold-strong),var(--gold));
  color:#241a02;letter-spacing:2px;box-shadow:0 8px 24px rgba(242,193,78,.25);
  transition:.15s;cursor:pointer;
}
.setup-btn:hover{filter:brightness(1.07);transform:translateY(-1px);}
.setup-btn:active{transform:translateY(0);}
.setup-tip{margin-top:14px;font-size:12px;color:var(--text-faint);text-align:center;line-height:1.7;}
/* 我们的功能项:原版语言延续 */
.chip-group{display:flex;gap:8px;}
.chip-opt{
  flex:1;padding:11px 6px;font-size:14px;font-weight:700;border-radius:10px;
  background:var(--panel-2);border:1px solid var(--line);color:var(--text-dim);transition:.15s;cursor:pointer;
}
.chip-opt:hover{color:var(--text);border-color:var(--gold-dim);}
.chip-opt.active{background:linear-gradient(180deg,var(--gold-strong),var(--gold));color:#2c2000;border-color:var(--gold);}
.switch{position:relative;width:52px;height:28px;flex:none;cursor:pointer;}
.switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;}
.switch i{position:absolute;inset:0;border-radius:999px;background:var(--panel-2);border:1px solid var(--line);transition:.18s;pointer-events:none;}
.switch i::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .18s;box-shadow:0 2px 5px rgba(0,0,0,.4);}
.switch input:checked + i{background:linear-gradient(180deg,var(--gold-strong),var(--gold));border-color:var(--gold);}
.switch input:checked + i::after{transform:translateX(24px);}
.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 0;}
.tg-txt{display:flex;flex-direction:column;gap:2px;}
.tg-txt b{font-size:13px;color:var(--text-dim);}
.tg-txt span{font-size:11px;color:var(--text-faint);line-height:1.4;}
.model-state{font-size:11.5px;margin-top:6px;padding:5px 9px;border-radius:8px;}
.model-state.testing{color:var(--text-dim);background:rgba(255,255,255,.05);}
.model-state.ok{color:#7ed49a;background:rgba(63,174,90,.12);border:1px solid rgba(63,174,90,.3);}
.model-state.bad{color:#f0a0a0;background:rgba(224,85,85,.1);border:1px solid rgba(224,85,85,.25);}
/* 趋势下钻:可点的聚合行 + 历史列表上方的筛选提示条 */
.pf-focus .pf-focus-row{cursor:pointer;}
.pf-focus .pf-focus-row:hover{background:rgba(242,193,78,.08);}
.pf-focus .pf-focus-row.active{background:rgba(242,193,78,.14);border-radius:6px;padding-left:6px;}
.pf-focus-chip{margin:6px 0 8px;font-size:12px;color:var(--gold);display:flex;align-items:center;gap:8px;}
.pf-focus-chip.hidden{display:none;}
.pf-focus-chip .diff-btn{padding:2px 8px;font-size:11px;}
/* 复盘:点重点改进条目跳到那手牌时闪一下,便于对上号 */
.hist-flash{background:rgba(242,193,78,.14);transition:background .25s;}
.focus-row:hover{background:rgba(242,193,78,.08);}
/* 对手强度说明:这桌会遇到什么打法风格(风格名与服务端 STYLE_NAMES 一致) */
.diff-styles{font-size:11px;color:var(--text-faint);margin-top:6px;line-height:1.6;}
.diff-styles b{color:var(--gold);font-weight:700;}
/* 大模型额度行:开打前说明"本小时还能问多少次",额度用尽时标黄(机器人转规则引擎,不是坏了) */
.model-quota{font-size:11px;color:var(--text-faint);margin-top:5px;line-height:1.5;}
.model-quota.warn{color:#e8c07d;}
@media(max-width:820px){
  .setup-card{padding:20px 18px 18px;max-height:none;}
  .diff-group{gap:6px;}
  .diff-btn{font-size:12.5px;padding:10px 2px;}
  .chip-group{gap:6px;}
  .chip-opt{font-size:12.5px;padding:10px 2px;}
}

/* ================= 行动控制栏(原版设计复刻) ================= */
#action-bar{
  position:fixed;right:14px;bottom:14px;z-index:40;
  display:flex;flex-direction:column;gap:8px;align-items:stretch;
  width:min(360px,calc(100vw - 28px));
  background:linear-gradient(180deg,rgba(35,35,56,.97),rgba(26,26,42,.97));
  border:1px solid var(--line);border-radius:16px;padding:12px 14px;
  box-shadow:0 16px 50px rgba(0,0,0,.6);
  backdrop-filter:blur(6px);
}
.action-wait-hint{font-size:11.5px;text-align:center;padding:0;}
.action-btns{display:flex;gap:8px;}
.abtn{
  flex:1;border:none;border-radius:10px;padding:12px 6px;
  font-size:15px;font-weight:800;color:#fff;letter-spacing:1px;
  transition:filter .12s,transform .08s;min-height:46px;
  box-shadow:0 4px 12px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.2);
}
.abtn:hover{filter:brightness(1.1);}
.abtn:active{transform:scale(.97);}
.abtn:disabled{filter:grayscale(.55) brightness(.6);cursor:not-allowed;transform:none;}
#btn-fold{background:linear-gradient(180deg,#e86060,#c43c3c);}
#btn-check{background:linear-gradient(180deg,#5c7fb8,#45649c);}
#btn-call{background:linear-gradient(180deg,#4cb86a,#35904f);}
#btn-bet{background:linear-gradient(180deg,var(--gold-strong),var(--gold));color:#2c2000;}
#btn-allin{background:linear-gradient(180deg,#a48cf0,#7b5cd6);}
.abtn .sub{display:block;font-size:10.5px;font-weight:600;opacity:.85;letter-spacing:0;margin-top:2px;}
/* 下注区 */
.raise-panel{display:flex;flex-direction:column;gap:8px;padding-top:2px;} /* 常显(未轮到置灰) */
@keyframes fadeSlide{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.slider-row{display:flex;align-items:center;gap:10px;}
.slider-row input[type=range]{flex:1;accent-color:var(--gold);height:24px;min-width:90px;}
.bet-input{width:64px;height:34px;font-size:13.5px;flex:none;}
.bet-amount{
  min-width:78px;text-align:center;font-size:17px;font-weight:800;color:var(--gold-strong);
  font-variant-numeric:tabular-nums;background:var(--panel-2);border-radius:8px;padding:4px 6px;
}
.quick-row{display:flex;gap:6px;}
.qbtn{
  flex:1;background:var(--panel-2);border:1px solid var(--line);color:var(--text-dim);
  border-radius:8px;padding:7px 4px;font-size:12px;font-weight:700;transition:.12s;cursor:pointer;
}
.qbtn:hover{color:var(--gold);border-color:var(--gold-dim);}
/* 未轮到我:整条置灰不可点(常显) */
#action-bar.disabled .abtn,#action-bar.disabled .qbtn,#action-bar.disabled #bet-slider,#action-bar.disabled .bet-input{
  opacity:.45;pointer-events:none;filter:grayscale(.5);}
#action-bar.disabled .action-wait-hint{display:block;}
.action-wait-hint{display:none;}
.action-btns{display:flex;gap:8px;}
.abtn{flex:1;border:none;border-radius:10px;padding:10px 6px;font-size:14.5px;font-weight:800;color:#fff;min-height:44px;}
.action-btns{display:flex;gap:8px;}
/* 主操作行:加注按钮通栏 + 全下 */
.action-main{display:flex;gap:8px;}
.abtn-main{flex:2;background:linear-gradient(180deg,var(--gold-strong),var(--gold)) !important;color:#241a02 !important;letter-spacing:1px;}
/* 滑条行:滑条 + 精确输入 */
.slider-row{display:flex;align-items:center;gap:9px;}
.slider-row #bet-slider{flex:1;min-width:0;}
.slider-row .bet-input{width:62px;height:36px;font-size:13.5px;flex:none;}
/* 快捷注额:5 等分,可点区域足够 */
.bet-shortcuts{display:flex;gap:6px;}
.bet-shortcuts .abtn-sm{flex:1;padding:8px 0;font-size:12.5px;min-height:34px;border-radius:9px;}
.abtn:disabled{filter:grayscale(.55) brightness(.6);cursor:not-allowed;}
#btn-fold{background:linear-gradient(180deg,#e86060,#c43c3c);}
#btn-check{background:linear-gradient(180deg,#5c7fb8,#45649c);}
#btn-call{background:linear-gradient(180deg,#4cb86a,#35904f);}
#btn-bet{background:linear-gradient(180deg,var(--gold-strong),var(--gold));color:#2c2000;}
#btn-allin{background:linear-gradient(180deg,#a48cf0,#7b5cd6);}
.raise-panel{display:flex;flex-direction:column;gap:8px;}
.slider-row{display:flex;align-items:center;gap:10px;}
.slider-row input[type=range]{flex:1;accent-color:var(--gold);}
.bet-amount{min-width:92px;text-align:center;font-size:17px;font-weight:800;color:var(--gold-strong);background:var(--panel-2);border-radius:8px;padding:4px 6px;}

/* 日志+聊天 */
#log-panel{
  position:fixed;left:0;top:var(--bar-h);bottom:0;z-index:2;width:min(240px,calc(100vw - 28px));
  display:flex;flex-direction:column;overflow:hidden;background:rgba(12,14,26,.2);
  border-right:1px solid rgba(255,255,255,.08);backdrop-filter:blur(4px);
}
.log-head,.chat-head{flex:none;padding:6px 14px;font-size:12px;font-weight:800;color:var(--gold);letter-spacing:2px;border-bottom:1px solid rgba(255,255,255,.09);}
.chat-head{color:var(--blue);border-top:1px solid rgba(255,255,255,.09);}
#log-list{flex:1;overflow-y:auto;padding:5px 12px;font-size:12px;line-height:1.65;}
#chat-list{flex:none;height:120px;overflow-y:auto;padding:5px 12px;font-size:12px;line-height:1.6;}
/* 可拖动分隔条(聊天/动态) */
#chat-divider{
  cursor:ns-resize;user-select:none;position:relative;
  transition:background .15s;
}
#chat-divider:hover{background:rgba(74,157,232,.15);}
.divider-grip{
  position:absolute;right:10px;top:50%;transform:translateY(-50%);
  font-size:11px;color:var(--text-faint);letter-spacing:2px;
}
.chat-msg{color:var(--text-dim);}
.chat-msg b{font-weight:700;}
.chat-input-row{flex:none;display:flex;gap:6px;padding:6px 10px;border-top:1px solid rgba(255,255,255,.09);}
#chat-input{flex:1;min-width:0;background:rgba(0,0,0,.4);border:1px solid rgba(255,255,255,.14);border-radius:8px;color:var(--text);font-size:12.5px;padding:6px 10px;outline:none;}
#chat-send{flex:none;background:linear-gradient(180deg,#5ea7f0,#3b7fd8);color:#fff;border:none;border-radius:8px;font-size:12.5px;font-weight:700;padding:6px 14px;}

/* 重买条 */
#rebuy-bar{
  position:fixed;right:14px;bottom:14px;z-index:45;display:flex;flex-direction:column;gap:8px;
  width:min(280px,calc(100vw - 28px));background:linear-gradient(180deg,rgba(64,26,26,.96),rgba(42,18,18,.96));
  border:1px solid rgba(232,96,96,.5);border-radius:14px;padding:14px;
}
.rebuy-text{font-size:15px;font-weight:800;color:#ffb3b3;text-align:center;}
.rebuy-btn{background:linear-gradient(180deg,var(--gold-strong),var(--gold));color:#2c2000;border:none;border-radius:10px;padding:12px;font-size:15px;font-weight:800;}

/* 自己的手牌:牌面朝向自己(180° 旋转) */
/* 自己的手牌:正立显示(不旋转) */

/* 摊牌牌型标签样式见下方原版块(.hand-tag,由 JS 以 calc(50% + dx) 定位) */
/* 弃牌后保留的手牌:暗色缩小,标注已弃 */
.seat.folded .hole-cards .card{
  opacity:.45 !important;
  filter:grayscale(.6) brightness(.7);
  box-shadow:0 0 0 1px rgba(220,60,60,.6),0 4px 10px rgba(0,0,0,.4);
  transition:opacity .4s;
}
.seat.folded .hole-cards::after{
  content:"弃";position:absolute;top:-10px;right:-8px;font-size:9px;font-weight:800;
  color:#e8e8f0;background:rgba(190,50,50,.85);border-radius:4px;padding:1px 5px;z-index:7;
}

/* 摊牌胜率徽章 */
.equity-tag{display:none;position:absolute;bottom:-20px;left:50%;transform:translateX(-50%);
  font-size:8px;color:var(--gold-dim);background:rgba(0,0,0,.55);padding:1px 6px;border-radius:4px;white-space:nowrap;z-index:5;}
.equity-tag.show{display:block;}

/* 倒计时气泡 */
.action-bubble .countdown{color:#fff;font-weight:800;}
.action-bubble.turn .countdown{color:#2c2000;}
/* 自动下一局提示 */
#auto-next-tip{
  position:fixed;transform:translate(-50%,-50%);z-index:80;background:transparent;border:none;
  color:#ffe9b0;font-size:16px;font-weight:800;letter-spacing:1px;padding:10px 26px;white-space:nowrap;
  text-shadow:0 2px 8px rgba(0,0,0,.95),0 0 24px rgba(0,0,0,.65);
}

/* ============== 移动端基础适配 ============== */
/* 日志抽屉开关(桌面隐藏) */
#btn-log-toggle{display:none !important;}

@media(max-width:860px){
  /* 移动端:日志抽屉开关(仅牌局页有动态面板,其它页面不能出现这个按钮) */
  body.in-table #btn-log-toggle{display:inline-flex !important;}
  #log-panel{
    left:0;right:0;bottom:0;top:auto;width:100%;height:38vh;max-height:38vh;
    border-right:none;border-top:1px solid rgba(255,255,255,.12);
    background:rgba(12,14,26,.94);z-index:120;border-radius:14px 14px 0 0;
    transform:translateY(calc(100% - 32px));transition:transform .25s ease;
    box-shadow:0 -4px 20px rgba(0,0,0,.45);
  }
  #log-panel .log-head{display:flex;align-items:center;gap:6px;}
  #log-panel .log-head::before{content:"";width:36px;height:4px;border-radius:2px;background:rgba(255,255,255,.25);flex:none;}
  #log-panel.open{transform:translateY(0);}
  /* 抽出头部提示条可点击 */
  #log-panel .log-head{cursor:pointer;}
  /* 行动栏上移避免被抽屉挡住 */
  #action-bar{left:8px;right:8px;bottom:8px;}
  #action-bar:not(.hidden) ~ #log-panel{display:flex;}
  .setup-card{width:92%;padding:20px 16px;}
  .setup-row{flex-direction:column;align-items:flex-start;gap:4px;}
  .setup-row label{width:100%;font-size:13px;}
  .seat-count-wrap{width:100%;}
  .diff-opt{font-size:11px;padding:3px 6px;}
  /* 原版移动端牌桌/座位尺寸(勿改 .seat 尺寸:座位子元素以 calc(50%+dx) 定位) */
  #table-stage{width:66vw;height:26vh;left:50%;}
  .avatar-ring{width:46px;height:46px;}
  .avatar-ring .avatar{font-size:23px;}
  .hole-cards .card{width:30px;height:42px;}
  .seat.human .hole-cards .card{width:36px;height:50px;}
  .player-card{padding:4px 6px 4px 4px;gap:4px;}
  .p-name{font-size:9.5px;max-width:40px;}
  .p-chips{font-size:8.5px;}
  #table-area.crowded .avatar-ring{width:42px;height:42px;}
  #table-area.crowded .avatar-ring .avatar{font-size:21px;}
  #table-area.crowded .player-card{padding:3px 5px 3px 3px;gap:3px;}
  #table-area.crowded .p-name{max-width:34px;font-size:9px;}
  .action-bubble{font-size:9px;padding:2px 6px;}
  .bet-chips{font-size:8px;padding:2px 5px;}
  .pos-badge{font-size:7px;padding:1px 4px;min-width:16px;}
  .hand-tag{font-size:7px;padding:1px 4px;}
  .top-item{font-size:11px;}
  #action-bar{padding:6px 8px;gap:3px;}
  .abtn{font-size:10px;padding:4px 6px 2px;}
  #bet-slider{max-width:80px;}
  .bet-amount{font-size:11px;min-width:30px;}
  .bet-shortcuts{flex-wrap:wrap;}
  .abtn-sm{font-size:9px;padding:2px 5px;}
  #log-list{font-size:10px;max-height:120px;}
  #community-cards .card{width:36px;height:50px;font-size:8px;}
  #community-cards .card .center-suit{font-size:12px;}
  #report-card{width:90%;padding:16px;}
  .report-stats{font-size:10px;}
  .report-stats th,.report-stats td{padding:4px 2px;}
}

/* ================= 原版牌桌/座位/牌面样式(恢复) ================= */
.top-item{
  display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-dim);
  background:var(--panel);border:1px solid var(--line);border-radius:10px;
  padding:7px 12px;white-space:nowrap;
}
.top-item b{color:var(--text);font-variant-numeric:tabular-nums;}
.icon-btn{
  width:36px;height:36px;border-radius:10px;border:1px solid var(--line);
  background:var(--panel);color:var(--text-dim);font-size:16px;
  display:flex;align-items:center;justify-content:center;transition:.15s;
}
.icon-btn:hover{color:var(--gold);border-color:var(--gold-dim);}
.seat-count-wrap{display:flex;align-items:center;gap:12px;}
.seat-count-wrap input[type=range]{flex:1;accent-color:var(--gold);}
.seat-num{
  min-width:46px;text-align:center;font-size:22px;font-weight:800;color:var(--gold);
  font-variant-numeric:tabular-nums;
}
.seat-preview{
  display:flex;justify-content:center;gap:6px;margin-top:10px;flex-wrap:wrap;
}
.seat-preview .dot{
  width:26px;height:26px;border-radius:50%;background:var(--panel-2);
  border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--text-dim);
}
.seat-preview .dot.human{background:#2a3d5e;border-color:var(--blue);color:#cfe4ff;}
#table-screen{
  position:fixed;inset:0;padding-top:var(--bar-h);
  display:flex;flex-direction:column;
}
#table-area{flex:1;position:relative;overflow:hidden;}
#table-stage{
  position:absolute;left:calc(50% + 115px);top:50%;transform:translate(-50%,-50%);
  width:min(76vw,900px);height:min(52.8vh,500px); 
  border-radius:264px; 
  background:linear-gradient(180deg,#7a4a21,#5d3717);
  box-shadow:0 40px 90px rgba(0,0,0,.65),inset 0 -14px 30px rgba(0,0,0,.5),inset 0 8px 18px rgba(255,255,255,.18);
  z-index:1;
}
#table-stage::after{
  content:"";position:absolute;inset:14px;border-radius:250px;
  background:radial-gradient(ellipse at 50% 38%,var(--felt-1),var(--felt-2) 62%,var(--felt-3));
  box-shadow:inset 0 0 60px rgba(0,0,0,.45);
}
#table-felt{
  position:absolute;inset:14px;border-radius:250px;z-index:2;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
}
/* 阶段标识:直接位于桌面公牌正上方(随公牌一起居中) */
#phase-indicator{
  position:static;transform:none;margin:0 0 2px;order:-1;
  font-size:13px;font-weight:700;color:#d9f3e0;letter-spacing:3px;
  background:rgba(0,0,0,.35);padding:5px 16px;border-radius:999px;
  border:1px solid rgba(233,217,168,.35);z-index:3;text-shadow:0 1px 3px rgba(0,0,0,.5);
}
#community-wrap{
  position:relative;z-index:4;display:flex;flex-direction:column;align-items:center;gap:8px;
}
#community-cards{display:flex;gap:8px;min-height:var(--card-h);}
#pot-display{
  font-size:17px;font-weight:800;color:var(--gold-strong);
  text-shadow:0 2px 6px rgba(0,0,0,.6);font-variant-numeric:tabular-nums;
  letter-spacing:.5px;min-height:24px;
}
#pot-display small{color:#d9f3e0;font-weight:600;font-size:12px;letter-spacing:2px;margin-right:8px;}
#deck-pile{
  position:fixed;transform:translate(-50%,-50%);z-index:4;
  width:40px;height:56px;pointer-events:none;
  opacity:0;visibility:hidden;
}
.card{
  width:var(--card-w);height:var(--card-h);border-radius:7px;position:relative;
  background:linear-gradient(160deg,#fdfdfe 0%,#f3f3f8 65%,#e7e7ee 100%);
  border:1px solid #bdbdca;
  box-shadow:0 3px 9px rgba(0,0,0,.42),inset 0 0 0 1.5px rgba(255,255,255,.95);
  display:flex;flex-direction:column;justify-content:space-between;
  padding:4px;
  overflow:hidden;
  font-weight:800;line-height:1;
  transition:transform .35s cubic-bezier(.2,.9,.3,1.4),opacity .3s;
}
.card.red{color:#c93030;}
.card.black{color:#23232e;}
.card .corner-top{display:flex;flex-direction:column;align-items:flex-start;line-height:1;}
.card .corner-bot{
  position:absolute;right:4px;bottom:4px;
  display:flex;flex-direction:column;align-items:flex-start;
  transform:rotate(180deg);line-height:1;
}
.card .rank{font-size:calc(var(--card-w)*.33);letter-spacing:0;white-space:nowrap;}
.card .suit{font-size:calc(var(--card-w)*.29);margin-top:1px;line-height:1;}
.card .center-suit{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font-size:calc(var(--card-w)*.66);opacity:.95;
  text-shadow:0 1px 1px rgba(0,0,0,.1);
  pointer-events:none;line-height:1;
}
.card.empty-slot{
  background:rgba(255,255,255,.05);border:2px dashed rgba(255,255,255,.22);
  box-shadow:none;
}
.card.empty-slot::after{content:"";}
.card.face-down{
  background:linear-gradient(135deg,#3a4a8f,#2b3a77 55%,#22306b);
  border:1px solid #1c2660;
}
.card.face-down::before{
  content:"";position:absolute;inset:5px;border-radius:4px;
  border:1.5px solid rgba(255,255,255,.28);
  background:repeating-linear-gradient(45deg,rgba(255,255,255,.07) 0 4px,transparent 4px 8px);
}
.card.face-down::after{
  content:"♠";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:rgba(255,255,255,.22);font-size:20px;
}
.card.hl{
  box-shadow:0 0 0 3px var(--gold-strong),0 0 16px 5px rgba(255,212,102,.75);
  z-index:7;
  animation:hlPulse 1s ease-in-out infinite;
}
@keyframes hlPulse{
  0%,100%{box-shadow:0 0 0 3px var(--gold-strong),0 0 12px 4px rgba(255,212,102,.6);}
  50%{box-shadow:0 0 0 4px var(--gold-strong),0 0 22px 8px rgba(255,212,102,.95);}
}
.card.anim-in{animation:cardIn .4s cubic-bezier(.2,.9,.3,1.4) both;}
@keyframes cardIn{
  0%{transform:translate(0,-90px) scale(.6) rotate(-8deg);opacity:0;}
  100%{transform:translate(0,0) scale(1) rotate(0);opacity:1;}
}
.card.flip{animation:cardFlip .5s cubic-bezier(.3,.8,.4,1) both;}
@keyframes cardFlip{
  0%{transform:rotateY(0) scale(1);}
  45%{transform:rotateY(88deg) scale(1.08);}
  55%{transform:rotateY(92deg) scale(1.08);}
  100%{transform:rotateY(180deg) scale(1);}
}
.card.win-glow{animation:winGlow 1.2s ease-in-out 2;}
@keyframes winGlow{
  0%,100%{box-shadow:0 4px 10px rgba(0,0,0,.45);}
  50%{box-shadow:0 0 22px 6px rgba(255,212,102,.85);}
}
.seat{
  position:absolute;transform:translate(-50%,-50%);z-index:10;
  display:flex;flex-direction:column;align-items:center;
  transition:left .5s,top .5s;
  pointer-events:none;
}
.seat-inner{display:flex;flex-direction:column;align-items:center;gap:4px;position:relative;}
.avatar-wrap{position:relative;}
.avatar-ring{
  width:54px;height:54px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#f5f5fa,#c9c9d6 70%);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 14px rgba(0,0,0,.5);
  transition:box-shadow .2s,transform .2s;
  position:relative;z-index:2;
}
.seat.human .avatar-ring{
  box-shadow:0 0 0 3px rgba(94,167,240,.95),0 0 22px 6px rgba(94,167,240,.5);
}
.you-badge{
  position:absolute;top:-10px;left:50%;transform:translateX(-50%);
  background:linear-gradient(180deg,#5ea7f0,#3b7fd8);
  color:#fff;font-size:10px;font-weight:800;letter-spacing:1px;
  padding:2px 9px;border-radius:999px;z-index:6;
  box-shadow:0 2px 8px rgba(59,127,216,.55);
  white-space:nowrap;
}
.seat.active .avatar-ring{
  box-shadow:0 0 0 3px var(--gold),0 0 20px 4px rgba(242,193,78,.55);
  transform:scale(1.06);
}
.seat.winner .avatar-ring{
  box-shadow:0 0 0 3px var(--gold-strong),0 0 30px 8px rgba(255,212,102,.8);
  animation:ringPulse 0.9s ease-in-out infinite;
}
.seat.winner .avatar{
  animation:avatarWin .8s ease-in-out 4;
}
.seat.winner .player-card{
  border-color:var(--gold-strong);
  animation:winCardPulse 1s ease-in-out infinite;
}
.seat.folded .avatar-ring{filter:grayscale(.75) brightness(.72);}
.seat.all-in .avatar-ring{box-shadow:0 0 0 2px var(--purple),0 0 16px 4px rgba(139,111,224,.6);}
.avatar-ring .avatar{font-size:27px;line-height:1;filter:drop-shadow(0 2px 2px rgba(0,0,0,.3));}
.seat.active .timer-ring{opacity:1;}
.dealer-btn,.blind-badge,.allin-badge{
  position:absolute;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-weight:800;z-index:3;font-size:11px;
}
.blind-badge{
  min-width:22px;height:22px;padding:0 5px;border-radius:999px;
  background:var(--gold);color:#3a2c00;bottom:-6px;left:-8px;font-size:10px;
  box-shadow:0 2px 6px rgba(0,0,0,.5);
}
.blind-badge.bb-badge{left:auto;right:-8px;background:#c9b8ff;color:#2a1d55;}
.dealer-btn{
  width:22px;height:22px;background:#fff;color:#23232e;top:-6px;right:-8px;
  box-shadow:0 2px 6px rgba(0,0,0,.5);border:1px solid #d8d8e0;
}
.allin-badge{
  min-width:30px;height:22px;padding:0 6px;border-radius:999px;
  background:var(--purple);color:#fff;bottom:-6px;left:-8px;font-size:10px;
  box-shadow:0 2px 6px rgba(0,0,0,.5);
}
.player-card{
  display:flex;flex-direction:row;align-items:center;gap:6px;
  background:rgba(15,17,32,.55);
  border:1px solid rgba(255,255,255,.14);
  border-radius:13px;
  padding:5px 7px 5px 5px;
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  box-shadow:0 6px 18px rgba(0,0,0,.4);
  position:relative;
}
.seat.human .player-card{border-color:rgba(94,167,240,.65);}
.seat.active .player-card{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold),0 6px 22px rgba(0,0,0,.45);}
.seat.folded .player-card{opacity:.55;}
.seat.winner .player-card{border-color:var(--gold-strong);}
.seat .p-name{
  font-size:11px;font-weight:700;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.8);
  max-width:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.seat.human .p-name{color:var(--gold-strong);}
.seat .p-chips{
  font-size:10.5px;color:#e8f7ec;font-variant-numeric:tabular-nums;
  text-shadow:0 1px 3px rgba(0,0,0,.8);font-weight:600;
  background:rgba(0,0,0,.4);padding:0 6px;border-radius:999px;
  border:1px solid rgba(255,255,255,.14);max-width:54px;overflow:hidden;text-overflow:ellipsis;
}
#table-area.crowded .avatar-ring{width:52px;height:52px;}
#table-area.crowded .avatar-ring .avatar{font-size:26px;}
#table-area.crowded .player-card{padding:5px 7px 5px 5px;gap:5px;border-radius:12px;}
#table-area.crowded .p-name{max-width:56px;font-size:10.5px;}
#table-area.crowded .p-chips{font-size:10px;padding:0 5px;}
#table-area.crowded .hole-cards{gap:3px;}
#table-area.crowded .hole-cards .card{--card-w:31px;width:31px;height:44px;}
#table-area.crowded .seat.human .hole-cards .card{--card-w:37px;width:37px;height:52px;}
#table-area.crowded .dealer-btn{width:19px;height:19px;font-size:10px;}
#table-area.crowded .blind-badge{min-width:19px;height:19px;font-size:9px;}
.action-bubble{
  position:absolute;transform:translate(-50%,-50%);
  font-size:11px;font-weight:800;letter-spacing:.5px;
  padding:3px 11px;border-radius:999px;white-space:nowrap;
  z-index:5;pointer-events:none;
  box-shadow:0 2px 8px rgba(0,0,0,.5);
  opacity:0;transition:opacity .2s;
}
.action-bubble.show{opacity:1;animation:tagPop .25s cubic-bezier(.2,.9,.3,1.4);}
.action-bubble.turn{background:linear-gradient(180deg,rgba(242,193,78,.96),rgba(200,150,40,.96));color:#2c2000;border:none;}
.action-bubble.act{background:rgba(20,24,40,.88);border:1px solid rgba(255,255,255,.25);color:#fff;}
.action-bubble.act-raise{background:rgba(120,30,30,.92);border-color:#e86060;color:#ffd7d7;}
.action-bubble.act-call{background:rgba(25,80,40,.92);border-color:#4cb86a;color:#d8f5e0;}
.action-bubble.act-fold{background:rgba(40,42,58,.9);border-color:#8a8aa0;color:#cfcfe0;}
.action-bubble.act-check{background:rgba(30,60,90,.92);border-color:#5ea7f0;color:#d8ecff;}
.action-bubble.act-allin{background:rgba(70,50,120,.92);border-color:#a48cf0;color:#ece3ff;}
.bet-chips{
  position:absolute;transform:translate(-50%,-50%);
  display:flex;align-items:center;justify-content:center;gap:4px;
  background:rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.18);border-radius:999px;
  padding:2px 10px;font-size:12px;font-weight:800;color:#fff;white-space:nowrap;
  font-variant-numeric:tabular-nums;z-index:4;
  animation:betPop .28s cubic-bezier(.2,.9,.3,1.5);
}
.bet-chips .chip-dot{
  width:12px;height:12px;border-radius:50%;flex:none;
  background:radial-gradient(circle at 35% 30%,#ffe9a8,#d8a12c 62%,#9b6c10);
  box-shadow:inset 0 0 0 2px rgba(0,0,0,.25);
}
.hand-tag{
  position:absolute;transform:translate(-50%,-50%);z-index:6;
  font-size:11px;font-weight:800;letter-spacing:1px;color:#ffe9b0;
  background:linear-gradient(180deg,rgba(60,40,5,.92),rgba(40,26,3,.92));
  border:1px solid rgba(242,193,78,.65);
  padding:2px 9px;border-radius:999px;
  white-space:nowrap;pointer-events:none;
  opacity:0;transition:opacity .25s;
  box-shadow:0 2px 8px rgba(0,0,0,.5);
}
.hand-tag.show{opacity:1;animation:tagPop .3s cubic-bezier(.2,.9,.3,1.4);}
.hole-cards{
  position:absolute;transform:translate(-50%,-50%);
  display:flex;gap:4px;z-index:3;
}
.hole-cards .card{--card-w:38px;width:38px;height:53px;}
.seat.human .hole-cards .card{--card-w:44px;width:44px;height:61px;}
.seat-corner-hint{
  position:absolute;z-index:12;pointer-events:none;font-size:12px;color:var(--text-dim);
  text-shadow:0 1px 4px rgba(0,0,0,.9);
}
@keyframes fadeSlide{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}

/* ================= 自定义覆盖(牌背/GTO卡/座位信息) ================= */
/* 牌背:完整 Bee 风格 SVG 缩放到牌面大小 */
.card.face-down{
  background-image:url("../assets/card-back.svg");
  background-size:100% 100%;
  background-repeat:no-repeat;
  background-position:center;
}
.card.face-down::before,.card.face-down::after{display:none;}

/* 座位信息栈(我们的模板:头像下 昵称/筹码) */
.info-stack{display:flex;flex-direction:column;align-items:center;gap:2px;line-height:1.2;}
.info-stack .p-name{font-size:11px;font-weight:700;white-space:nowrap;max-width:64px;overflow:hidden;text-overflow:ellipsis;}
.info-stack .p-chips{font-size:10.5px;color:var(--gold-strong);font-variant-numeric:tabular-nums;}

/* 位置徽章:头像正上方(庄/小盲/大盲/枪口) */
.pos-badge{
  position:absolute;top:-13px;left:50%;transform:translateX(-50%);
  font-size:9px;font-weight:800;padding:2px 7px;border-radius:999px;min-width:18px;text-align:center;
  background:rgba(0,0,0,.6);color:var(--gold);border:1px solid rgba(242,193,78,.5);z-index:6;letter-spacing:1px;
}
.pos-badge.dealer{background:linear-gradient(180deg,#fff,#ddd);color:#23232e;border:none;}
.pos-badge.sb{background:rgba(74,157,232,.9);color:#fff;border:none;}
.pos-badge.bb{background:rgba(242,138,78,.95);color:#2c1600;border:none;}
.pos-badge.utg{background:rgba(139,111,224,.95);color:#fff;border:none;}

/* GTO 实时分析卡(右上角,避开左侧日志与右下操作栏) */
#gto-panel{
  position:fixed;right:14px;top:56px;z-index:62;width:236px;
  background:rgba(14,15,28,.95);border:1px solid rgba(242,193,78,.3);border-radius:14px;
  backdrop-filter:blur(6px);box-shadow:0 10px 30px rgba(0,0,0,.55);padding:10px 13px 11px;
}
#gto-panel .gto-title{font-size:12px;font-weight:800;color:var(--gold);letter-spacing:1px;margin-bottom:6px;}
#gto-panel .gto-src{font-size:10px;color:var(--text-faint);line-height:1.35;margin:-3px 0 4px;letter-spacing:0;}
.gto-line{font-size:11.5px;color:var(--text-dim);padding:2px 0;line-height:1.45;}
.gto-line b{color:var(--gold);font-weight:700;}
.gto-advice{font-size:12px;color:#ffe9b0;background:rgba(242,193,78,.1);border:1px solid rgba(242,193,78,.28);border-radius:8px;padding:6px 9px;margin-top:7px;line-height:1.5;}
.gto-advice b{color:var(--gold);}
@media(max-width:860px){
  #gto-panel{width:auto;left:8px;right:8px;top:auto;bottom:96px;padding:8px 10px;}
  .gto-line{font-size:10.5px;}
}

/* 摊牌胜率徽章 */
.equity-tag{display:none;position:absolute;bottom:-20px;left:50%;transform:translateX(-50%);
  font-size:8px;color:var(--gold-dim);background:rgba(0,0,0,.55);padding:1px 6px;border-radius:4px;white-space:nowrap;z-index:5;}
.equity-tag.show{display:block;}

/* ================= 移动端覆盖(必须位于原版样式之后,否则同名规则被覆盖) ================= */
@media(max-width:860px){
  /* 日志抽屉开关(同上,只在牌局页显示) */
  body.in-table #btn-log-toggle{display:inline-flex !important;}
  #log-panel{
    left:0;right:0;bottom:0;top:auto;width:100%;height:38vh;max-height:38vh;
    border-right:none;border-top:1px solid rgba(255,255,255,.12);
    background:rgba(12,14,26,.94);z-index:120;border-radius:14px 14px 0 0;
    transform:translateY(calc(100% - 32px));transition:transform .25s ease;
    box-shadow:0 -4px 20px rgba(0,0,0,.45);
  }
  #log-panel.open{transform:translateY(0);}
  #log-panel .log-head{cursor:pointer;}
  #log-list{font-size:10px;}
  /* 牌桌:缩小并居中(座位环仍在其外) */
  #table-stage{width:66vw;height:26vh;left:50%;}
  #action-bar{left:8px;right:8px;bottom:8px;width:auto;padding:6px 8px;gap:3px;}
  .abtn{font-size:10px;padding:4px 6px 2px;}
  #bet-slider{max-width:80px;}
  .bet-amount{font-size:11px;min-width:30px;}
  .bet-shortcuts{flex-wrap:wrap;}
  .abtn-sm{font-size:9px;padding:2px 5px;}
  .avatar-ring{width:46px;height:46px;}
  .avatar-ring .avatar{font-size:23px;}
  .hole-cards .card{width:30px;height:42px;}
  .seat.human .hole-cards .card{width:36px;height:50px;}
  #community-cards .card{width:36px;height:50px;}
  .player-card{padding:4px 6px 4px 4px;gap:4px;border-radius:11px;}
  .p-name{font-size:9.5px;max-width:40px;}
  .p-chips{font-size:8.5px;}
  #table-area.crowded .avatar-ring{width:42px;height:42px;}
  #table-area.crowded .avatar-ring .avatar{font-size:21px;}
  #table-area.crowded .player-card{padding:3px 5px 3px 3px;gap:3px;}
  #table-area.crowded .p-name{max-width:34px;font-size:9px;}
  .action-bubble{font-size:9px;padding:2px 6px;}
  .bet-chips{font-size:8px;padding:2px 5px;}
  .hand-tag{font-size:7px;padding:1px 4px;}
  #report-card{width:90%;padding:16px;}
  #top-bar .top-item.hide-mobile{display:none;}
  /* 手机:设置页压缩,保证"开始游戏"在首屏 */
  .setup-card{padding:15px 15px 13px;}
  .setup-card h1{font-size:21px;}
  .setup-card .subtitle{font-size:11.5px;margin-bottom:10px;}
  .setup-row{margin-bottom:8px;}
  .setup-row label{font-size:12px;margin-bottom:4px;}
  .text-input{padding:9px 10px;font-size:14px;}
  .diff-btn,.chip-opt{padding:8px 3px;font-size:12px;}
  .seat-preview{margin-top:4px;}
  .seat-preview .dot{width:20px;height:20px;font-size:9px;}
  .setup-btn{padding:11px;font-size:16px;}
  .setup-tip{margin-top:6px;font-size:10.5px;line-height:1.45;}
}

/* ================= 矮屏压缩(≤860px 高:1366×768 / 1280×800):保证"首页一屏放得下" ================= */
@media(max-height:860px) and (min-width:861px){
  .setup-card{padding:16px 26px 14px;border-radius:16px;}
  .setup-card h1{font-size:22px;margin-bottom:2px;}
  .setup-card .subtitle{font-size:12px;margin-bottom:12px;}
  .setup-row{margin-bottom:9px;}
  .setup-row label{font-size:12px;margin-bottom:5px;}
  .setup-row label small{margin-left:4px;}
  .seat-count-wrap input[type=range]{height:22px;}
  .seat-num{font-size:19px;min-width:38px;}
  .seat-preview{margin-top:4px;}
  .seat-preview .dot{width:22px;height:22px;font-size:10px;}
  .text-input{padding:9px 11px;font-size:14px;}
  .diff-btn,.chip-opt{padding:9px 4px;font-size:13px;}
  .setup-btn{padding:11px;font-size:16px;}
  .setup-tip{margin-top:8px;font-size:11px;line-height:1.5;}
}

/* ================= 拥挤桌(≥8 人)+ 矮屏:操作栏紧凑化 =================
   此时若操作栏保持 200px 高,底部座位要么被挡住、要么必须压到桌面上;
   紧凑模式保留 5 个操作按钮 + 加注快捷额,暂时收起滑条/输入框(点「下注/加注」即可展开) */
@media(max-height:860px){
  #table-area.crowded #table-stage{height:36vh;}
}
#action-bar.compact{padding:8px 10px;gap:6px;}
#action-bar.compact .raise-panel{gap:6px;padding-top:0;}
#action-bar.compact .slider-row{display:none;}
#action-bar.compact .abtn{padding:9px 6px 6px;}
#action-bar.compact .qbtn{padding:6px 4px;font-size:12px;}

/* ================= 续局提示条(刷新/重进时显示"进行中的牌局") ================= */
.resume-bar{
  display:flex;align-items:center;gap:10px;margin-bottom:10px;padding:9px 12px;
  background:rgba(242,193,78,.1);border:1px solid rgba(242,193,78,.35);border-radius:12px;
  font-size:12.5px;color:var(--gold);line-height:1.35;
}
.resume-bar span{flex:1;min-width:0;}
.resume-bar .diff-btn{flex:none;width:auto;padding:8px 12px;font-size:12.5px;white-space:nowrap;
  background:linear-gradient(180deg,var(--gold-strong),var(--gold));color:#241a02;border:none;}
.resume-bar.hidden{display:none;}

/* ================= GTO 方块 / 桌面徽章(本次调整) ================= */
/* GTO 独立方块:位置由 JS 贴在我个人信息框左侧(窄屏仍走底部抽屉) */
@media(min-width:861px){ #gto-panel{right:auto;} }
.gto-why{font-size:11px;color:var(--text-dim);margin-top:3px;line-height:1.45;}
#gto-advice b{font-size:12.5px;}
/* 位置徽章(庄/小盲/大盲)已改为 JS 在桌面上定位:清掉原本挂在头像上的偏移 */
#seats .seat > .dealer-btn,
#seats .seat > .blind-badge{
  top:auto;left:auto;right:auto;bottom:auto;
  transform:translate(-50%,-50%);position:absolute;
}
#seats .seat > .dealer-btn{z-index:7;}
#seats .seat > .blind-badge{z-index:7;}

/* ================= 个人中心 + 全屏训练配置 ================= */
.icon-mini{
  background:none;border:none;cursor:pointer;font-size:15px;padding:2px 4px;opacity:.75;transition:.15s;
}
.icon-mini:hover{opacity:1;transform:scale(1.12);}
.hidden{display:none !important;}

/* ---- 个人中心 ---- */
#profile-screen{position:fixed;inset:0;z-index:30;overflow-y:auto;
  background:radial-gradient(1200px 600px at 50% -10%,#20223a,#12131f 60%);}
.pf-wrap{max-width:1080px;margin:0 auto;padding:26px 22px 60px;}
.pf-head{display:flex;align-items:center;gap:16px;padding:18px 22px;}
.pf-avatar{width:64px;height:64px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;
  font-size:32px;background:radial-gradient(circle at 35% 30%,#f5f5fa,#c9c9d6 70%);box-shadow:0 6px 18px rgba(0,0,0,.45);}
.pf-id{flex:1;min-width:0;}
.pf-name-row{display:flex;align-items:center;gap:8px;}
.pf-name-row b{font-size:22px;color:var(--text);}
#pf-name-input{max-width:240px;padding:7px 10px;font-size:14px;}
.pf-sub{font-size:12px;color:var(--text-faint);margin-top:4px;}
.pf-head-actions{display:flex;flex-direction:column;gap:8px;align-items:stretch;min-width:170px;}
.pf-head-actions .setup-btn{padding:11px;font-size:15px;}
.pf-resume-bar{margin:0 0 14px;}
.pf-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:16px 0;}
.pf-stat{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:13px 16px;}
.pf-stat .k{font-size:12px;color:var(--text-faint);}
.pf-stat .v{font-size:22px;font-weight:800;color:var(--text);margin-top:3px;font-variant-numeric:tabular-nums;}
.pf-stat .v.pos{color:#5fc88f;} .pf-stat .v.neg{color:#e8747c;}
.pf-charts{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:12px;margin-bottom:16px;}
@media(max-width:900px){.pf-charts{grid-template-columns:1fr;}}
.pf-card h3{margin:0 0 10px;font-size:14px;color:var(--gold);letter-spacing:.5px;}
.chart-box{min-height:170px;display:flex;align-items:center;justify-content:center;}
.chart-box svg{width:100%;height:auto;}
.pf-hint{font-size:11px;color:var(--text-faint);font-weight:400;margin-left:8px;}
/* 近期重点:跨局重复问题的聚合卡片,占满一行 */
.pf-card-wide{grid-column:1 / -1;}
.pf-focus{font-size:12px;line-height:1.7;}
.pf-focus .pf-focus-row{display:flex;align-items:baseline;gap:8px;padding:4px 0;border-bottom:1px dashed var(--line);}
.pf-focus .pf-focus-row:last-child{border-bottom:none;}
.pf-focus .pf-focus-n{color:var(--gold);font-weight:700;min-width:52px;}
.pf-focus .pf-focus-eg{color:var(--text-faint);font-size:11px;}
.pf-empty{color:var(--text-faint);font-size:13px;padding:26px 0;text-align:center;}
.hist-item{border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:rgba(0,0,0,.18);overflow:hidden;}
.hist-head{display:flex;align-items:center;gap:12px;padding:11px 14px;cursor:pointer;flex-wrap:wrap;}
.hist-head:hover{background:rgba(255,255,255,.03);}
.hist-net{font-weight:800;font-size:16px;font-variant-numeric:tabular-nums;}
.hist-net.pos{color:#5fc88f;} .hist-net.neg{color:#e8747c;} .hist-net.zero{color:var(--text-dim);}
.hist-meta{font-size:12px;color:var(--text-dim);display:flex;gap:14px;flex-wrap:wrap;flex:1;min-width:0;}
.hist-detail{padding:4px 14px 14px;border-top:1px dashed var(--line);display:none;}
.hist-item.open .hist-detail{display:block;}
.hist-detail h4{margin:12px 0 6px;font-size:12.5px;color:var(--gold);}
.hands-table{width:100%;border-collapse:collapse;font-size:12px;}
.hands-table th,.hands-table td{border-bottom:1px solid rgba(255,255,255,.07);padding:5px 7px;text-align:left;font-variant-numeric:tabular-nums;}
.hands-table th{color:var(--text-faint);font-weight:600;}
.hands-table td.net-pos{color:#5fc88f;} .hands-table td.net-neg{color:#e8747c;}
.reason-list{margin:6px 0 0;padding-left:18px;font-size:12.5px;color:var(--text-dim);line-height:1.7;}
.review-tag{display:inline-block;font-size:11px;padding:1px 7px;border-radius:999px;margin:2px 4px 2px 0;}
.review-tag.ok{background:rgba(95,200,143,.15);color:#5fc88f;}
.review-tag.miss{background:rgba(232,116,124,.15);color:#e8747c;}

/* ---- 全屏训练配置 ---- */
#setup-screen{position:fixed;inset:0;z-index:30;overflow-y:auto;
  background:radial-gradient(1200px 600px at 50% -10%,#20223a,#12131f 60%);}
.sf-wrap{max-width:1180px;margin:0 auto;padding:22px 22px 40px;min-height:100%;display:flex;flex-direction:column;}
.sf-top{display:flex;align-items:center;gap:16px;margin-bottom:18px;flex-wrap:wrap;}
.sf-top h1{margin:0;font-size:24px;}
.sf-top .subtitle{font-size:12.5px;color:var(--text-dim);margin-top:3px;}
.sf-top .llm-status{margin-left:auto;}
.sf-grid{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:14px;flex:1;align-items:start;}
@media(max-width:980px){.sf-grid{grid-template-columns:1fr;}}
.sf-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:16px 18px;}
.sf-card h3{margin:0 0 12px;font-size:15px;color:var(--gold);letter-spacing:.5px;}
.sf-card .setup-row:last-child{margin-bottom:0;}
.sf-bottom{margin-top:16px;display:flex;flex-direction:column;gap:10px;align-items:stretch;}
.sf-bottom .setup-btn{padding:14px;font-size:17px;}
.sf-bottom .resume-bar{margin:0;}

/* ================= 朴素标识(替代风格化 logo) ================= */
.login-mark{font-size:40px;line-height:1;color:var(--gold-strong);margin-bottom:10px;}
.logo-suit{font-size:17px;color:var(--gold-strong);margin-right:4px;}

/* 复盘报告底部按钮 */
.report-actions{display:flex;flex-direction:column;gap:8px;align-items:center;}

/* ================= 复盘报告弹层(此前缺少定位样式,被牌桌遮挡) ================= */
#report-screen{
  position:fixed;inset:0;z-index:200;overflow-y:auto;
  display:flex;flex-direction:column;align-items:center;gap:14px;
  padding:26px 16px 44px;
  background:rgba(8,9,16,.88);backdrop-filter:blur(4px);
}
.report-card{
  width:min(920px,100%);background:var(--panel);border:1px solid var(--line);
  border-radius:16px;padding:20px 22px;box-shadow:0 24px 60px rgba(0,0,0,.6);
}
.report-card h2{margin:0 0 4px;font-size:20px;}

/* ================= 页面职责隔离:游戏内控件只在牌桌页出现 ================= */
body:not(.in-table) #action-bar,
body:not(.in-table) #gto-panel,
body:not(.in-table) #rebuy-bar,
body:not(.in-table) #log-panel{display:none !important;}
/* 顶栏文本按钮(原为 emoji 图标) */
.top-btn{font-size:12.5px;font-weight:700;color:var(--text-dim);background:rgba(255,255,255,.06);
  border:1px solid var(--line);border-radius:8px;padding:5px 10px;cursor:pointer;transition:.15s;white-space:nowrap;}
.top-btn:hover{color:var(--text);background:rgba(255,255,255,.12);}

/* ============================================================
   布局系统(PC 优先 + 动态自适应)
   - 统一容器/间距/圆角/触控尺寸,用 clamp() 做流式缩放
   - 断点:≥1180 多栏 / 860~1180 两栏 / ≤860 单栏(与牌桌断点一致)
   - 支持刘海屏与 Home 条安全区
   ============================================================ */
:root{
  --gutter: clamp(12px, 2vw, 34px);
  --gap: clamp(10px, 1.1vw, 18px);
  --page: 1400px;
  --r: 14px;
  --tap: 44px;
  --safe-b: env(safe-area-inset-bottom, 0px);
  --safe-t: env(safe-area-inset-top, 0px);
}
.page{width:min(100% - var(--gutter) * 2, var(--page));margin-inline:auto;}
body{overflow-x:hidden;}

/* ---------- 登录页:PC 左右分栏 / 手机上下堆叠 ---------- */
#login-screen{padding:calc(var(--gutter) + var(--safe-t)) var(--gutter) calc(var(--gutter) + var(--safe-b));}
.login-card{width:min(100%, 980px);}
.login-brand{padding:clamp(22px, 4vw, 46px) clamp(20px, 3.4vw, 40px);}
.login-mark{font-size:clamp(30px, 4vw, 42px);}
.login-brand h1{font-size:clamp(20px, 2.4vw, 26px);}
@media(max-width:900px){
  .login-brand{padding:22px 20px;}
  .login-brand h1{font-size:20px;}
  .login-slogan{font-size:12.5px;}
  .login-form{padding:22px 20px;}
  .login-form h2{font-size:19px;}
}

/* ---------- 个人中心:侧栏 + 主区 ---------- */
#profile-screen{padding:calc(var(--bar-h) + 14px) 0 calc(40px + var(--safe-b));}
.pf-wrap{padding:0 var(--gutter);}
.pf-grid{display:grid;grid-template-columns:minmax(300px, 340px) minmax(0, 1fr);gap:var(--gap);align-items:start;}
.pf-side{display:flex;flex-direction:column;gap:var(--gap);position:sticky;top:calc(18px + var(--safe-t));}
.pf-main{display:flex;flex-direction:column;gap:var(--gap);min-width:0;}
@media(max-width:1180px){
  .pf-grid{grid-template-columns:minmax(0, 1fr);}
  .pf-side{position:static;}
}
.pf-head{display:grid;grid-template-columns:auto minmax(0, 1fr);gap:14px;align-items:center;padding:16px 18px;}
.pf-head-actions{grid-column:1 / -1;display:grid;grid-template-columns:1fr auto;gap:8px;align-items:stretch;}
.pf-head-actions .setup-btn{padding:12px;font-size:15px;}
.pf-head-actions .diff-btn{padding:12px 16px;font-size:13.5px;}
.pf-name-row b{font-size:clamp(18px, 1.6vw, 22px);}
.pf-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.pf-stat{padding:11px 13px;}
.pf-stat .v{font-size:clamp(17px, 1.5vw, 21px);}
@media(max-width:520px){ .pf-stats{grid-template-columns:1fr 1fr;} .pf-stat .v{font-size:17px;} }
.pf-charts{display:grid;grid-template-columns:repeat(auto-fit, minmax(260px, 1fr));gap:var(--gap);}
.pf-card h3{font-size:13.5px;}
.chart-box{min-height:150px;}
.pf-history{margin:0;}
#pf-history-list{margin-top:4px;}

/* ---------- 训练配置:吸顶标题 + 摘要条 + 吸底操作 ---------- */
#setup-screen{padding:0;}
.sf-wrap{width:min(100% - var(--gutter) * 2, var(--page));padding:calc(var(--bar-h) + var(--gap)) 0 calc(24px + var(--safe-b));}
.sf-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:var(--gap);}
.sf-head-note{font-size:11.5px;color:var(--text-faint);margin-left:auto;}
.sf-summary{display:flex;flex-wrap:wrap;gap:8px;flex:1;margin-bottom:0;}
.sf-chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-dim);
  background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:6px 12px;white-space:nowrap;}
.sf-chip b{color:var(--gold);font-weight:700;}
.sf-grid{grid-template-columns:repeat(3, minmax(0, 1fr));gap:var(--gap);}
@media(max-width:1180px){ .sf-grid{grid-template-columns:repeat(2, minmax(0, 1fr));} }
@media(max-width:760px){ .sf-grid{grid-template-columns:minmax(0, 1fr);} }
.sf-card{padding:clamp(14px, 1.4vw, 18px) clamp(14px, 1.5vw, 20px);}
.sf-bottom{position:fixed;left:0;right:0;bottom:0;z-index:7;margin:0;
  padding:10px var(--gutter) calc(10px + var(--safe-b));
  background:linear-gradient(180deg, rgba(18,19,31,.72), rgba(18,19,31,.97));backdrop-filter:blur(10px);
  border-top:1px solid var(--line);}
.sf-bottom-inner{width:min(100%, var(--page));margin-inline:auto;display:flex;flex-direction:column;gap:8px;}
.sf-bottom .setup-btn{padding:14px;font-size:16.5px;}
@media(min-width:761px){
  .sf-bottom-inner{flex-direction:row;align-items:center;justify-content:flex-end;}
  .sf-bottom-inner .resume-bar{margin:0;flex:1;}
  .sf-bottom-inner .setup-btn{width:min(320px, 40%);}
}

/* ---------- 牌桌:移动端触控与安全区 ---------- */
#table-screen{min-height:100dvh;}
@media(max-width:560px){
  #top-bar{height:auto;min-height:46px;gap:6px;padding:calc(4px + var(--safe-t)) 8px 4px;flex-wrap:wrap;}
  #top-bar .logo b{font-size:13px;}
  .top-item{font-size:11px !important;}
  .top-btn{min-height:34px;padding:6px 9px;}
  .sound-ctl{display:none;}
  #action-bar{padding:8px 8px calc(8px + var(--safe-b));gap:6px;}
  #action-bar .abtn{min-height:var(--tap);font-size:12px;}
  #action-bar .qbtn{min-height:36px;font-size:12px;}
  .abtn-sm{min-height:32px;}
}
@media(max-width:860px){
  #action-bar{left:8px;right:8px;bottom:calc(8px + var(--safe-b));}
  #log-panel{bottom:0;padding-bottom:var(--safe-b);}
}
#report-screen{padding:calc(20px + var(--safe-t)) var(--gutter) calc(32px + var(--safe-b));}
.report-card{width:min(1080px, 100%);}
.report-actions{flex-direction:row;flex-wrap:wrap;justify-content:center;}
.report-actions .setup-btn,.report-actions .diff-btn{width:auto;min-width:200px;max-width:100%;}
/* 改名/保存等文字型小按钮 */
.icon-mini{font-size:12px;font-weight:700;color:var(--text-dim);background:rgba(255,255,255,.06);
  border:1px solid var(--line);border-radius:8px;padding:4px 9px;}
.icon-mini:hover{color:var(--text);background:rgba(255,255,255,.12);transform:none;}

/* 解除旧容器宽度上限,统一交给 .page / --page(1400) */
.pf-wrap{max-width:none;}
.sf-wrap{max-width:none;}
.pf-charts{grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));}
@media(min-width:1600px){
  .pf-grid{grid-template-columns:minmax(320px, 360px) minmax(0, 1fr);}
  .pf-charts{grid-template-columns:repeat(3, minmax(0, 1fr));}
}

/* ============================================================
   全高页面布局:让内容撑满视口并合理分布(PC 优先)
   - 登录:全高分栏卡片,左右内容各自垂直居中
   - 个人中心:侧栏与主区等高,历史列表吃掉剩余高度并内部滚动
   - 训练配置:三栏面板拉伸等高,填满标题与吸底操作区之间
   ============================================================ */

/* ---------- 登录页:全高分栏 ---------- */
.login-card{
  width:min(100%, 1020px);
  height:min(700px, calc(100dvh - var(--gutter) * 2 - var(--safe-t) - var(--safe-b)));
  min-height:440px;
}
.login-brand{justify-content:center;}
.login-form{justify-content:center;}
@media(max-width:900px){
  .login-card{height:auto;min-height:0;}
  .login-brand{justify-content:flex-start;}
  .login-form{justify-content:flex-start;}
}

/* ---------- 个人中心:撑满 + 历史区自适应 ---------- */
#profile-screen{display:flex;flex-direction:column;min-height:100dvh;}
.pf-wrap{flex:1;display:flex;flex-direction:column;}
.pf-grid{flex:1;min-height:0;}
.pf-side{align-self:stretch;}
.pf-main{flex:1;min-height:0;}
.pf-charts{flex:none;}
.chart-box{min-height:clamp(150px, 17vh, 210px);}
.pf-history{flex:1;min-height:240px;display:flex;flex-direction:column;}
#pf-history-list{flex:1;min-height:0;overflow-y:auto;padding-right:2px;}
.hist-item:last-child{margin-bottom:0;}
@media(max-width:1180px){
  /* 单栏时不做内部滚动,交给整页滚动 */
  .pf-grid{flex:none;}
  .pf-history{min-height:0;}
  #pf-history-list{overflow:visible;max-height:none;}
}
@media(min-width:1600px){
  /* 超宽屏:图表与历史并排,三栏仪表盘 */
  .pf-main{display:grid;grid-template-columns:minmax(0, 1.05fr) minmax(400px, .95fr);gap:var(--gap);align-items:stretch;}
  .pf-charts{grid-template-columns:repeat(2, minmax(0, 1fr));}
  .pf-history{min-height:0;}
}

/* ---------- 训练配置:面板拉伸等高 ---------- */
#setup-screen{display:flex;flex-direction:column;min-height:100dvh;}
.sf-wrap{flex:1;display:flex;flex-direction:column;}
.sf-summary{flex:none;}
.sf-grid{flex:1;align-items:stretch;}
.sf-card{display:flex;flex-direction:column;}
.sf-card > h3{flex:none;}
.sf-card .setup-row:last-of-type{margin-bottom:0;}
@media(max-width:760px){ .sf-grid{flex:none;} }

/* ---------- 复盘报告:整体垂直居中 ---------- */
#report-screen{justify-content:center;}

/* 个人中心:主区撑满高度(历史列表吃掉剩余空间),侧栏保持内容高并吸附 */
.pf-main{align-self:stretch;}
.pf-side{align-self:start;}
@media(min-width:1181px){
  .pf-side{position:sticky;top:calc(18px + var(--safe-t));}
}

/* 登录页容器补全高:此前 #login-screen 无高度,卡片只在"内容高度"里居中,整体贴顶 */
#login-screen{min-height:100dvh;box-sizing:border-box;}

/* ============================================================
   GTO 方块改放左侧数据栏(桌面):不再贴个人信息、不覆盖台面边缘
   - 顶部开始,占据左栏上方;牌局动态面板自动下移让位
   - 两列紧凑网格,高度从 ~210px 降到 ~150px
   - 手机端维持底部抽屉(见 @media 覆盖)
   ============================================================ */
@media(min-width:861px){
  #gto-panel{
    left:0;right:auto;top:var(--bar-h);width:326px;max-width:none;
    height:164px;overflow:hidden;   /* 固定尺寸:内容变化不改变位置(JS 用同样的常量算位置) */
    border-radius:0 0 14px 0;border-left:none;border-top:none;
    box-shadow:6px 8px 24px rgba(0,0,0,.45);
    padding:9px 12px 10px;
    display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:2px 12px;
  }
  #gto-panel .gto-title{grid-column:1 / -1;display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:3px;font-size:11.5px;}
  #gto-panel .gto-meta{font-weight:600;color:var(--text-dim);font-size:10.5px;letter-spacing:0;}
  #gto-panel .gto-src{grid-column:1 / -1;margin:-1px 0 2px;font-size:9.5px;}
  #gto-panel .gto-meta b{color:var(--gold);}
  #gto-panel .gto-line{font-size:11px;padding:0;line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  #gto-panel .gto-line i{font-style:normal;color:var(--text-faint);font-size:9.5px;}
  #gto-panel .gto-line b{color:var(--text);}
  /* 对手那行是 id 不是 class(原来写成 .gto-opp 没生效 → 被挤在第三列里截断) */
  #gto-panel #gto-opp{grid-column:1 / -1;}
  #gto-panel .gto-advice{grid-column:1 / -1;margin-top:5px;padding:5px 8px;font-size:12px;}
  #gto-panel .gto-advice > b{color:var(--gold-strong);font-size:12.5px;}
  #gto-panel .gto-ev{float:right;font-size:10px;color:#7ed49a;font-weight:700;}
  #gto-panel .gto-why{font-size:10.5px;margin-top:2px;color:var(--text-dim);
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
  #gto-panel .gto-past,#gto-panel .gto-live{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  #gto-panel .gto-frozen{grid-column:1 / -1;margin-top:4px;font-size:10px;color:var(--text-faint);}
  /* 日志面板下移,给 GTO 方块让出位置(高度由 JS 写入 --gto-h) */
  #log-panel{top:calc(var(--bar-h) + var(--gto-h,0px));}
}
.top-btn-warn{color:#ffd9a0;border-color:rgba(242,193,138,.45);background:rgba(242,150,60,.14);}
.top-btn-warn:hover{background:rgba(242,150,60,.24);color:#ffe9c9;}

/* GTO 建议区:上次决策留痕 + 局面被推进后的实时建议 */
.gto-past,.gto-live{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;font-weight:700;color:#e8e8f0;}
.gto-live{margin-top:6px;}
.gto-tag{font-size:10px;font-weight:700;letter-spacing:.5px;padding:1px 6px;border-radius:6px;
  background:rgba(255,255,255,.1);color:var(--text-faint);}
.gto-tag.live{background:rgba(94,167,240,.2);color:#a8d0ff;}

/* ============================================================
   训练面板(面板页)与训练配置页 — 信息架构与视觉层级
   ============================================================ */
/* ---------- 面板页:顶部英雄区 ---------- */
.pf-hero{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;align-items:center;
  padding:18px clamp(16px, 1.6vw, 22px);margin-bottom:var(--gap);
}
.pf-hero .pf-avatar{width:56px;height:56px;font-size:26px;}
.pf-hero-actions{display:flex;gap:10px;align-items:center;}
.pf-hero-actions .setup-btn{width:auto;min-width:150px;padding:12px 22px;font-size:15.5px;}
.pf-hero-actions .diff-btn{padding:12px 16px;font-size:13.5px;}
@media(max-width:760px){
  .pf-hero{grid-template-columns:auto minmax(0,1fr);gap:12px;}
  .pf-hero-actions{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;}
  .pf-hero-actions .setup-btn{min-width:0;order:-1;grid-column:1 / -1;}
}
.pf-h3{margin:0 0 12px;font-size:14px;color:var(--gold);letter-spacing:.4px;}
/* ---------- 关键指标 ---------- */
.pf-stat .k{display:flex;justify-content:space-between;gap:6px;}
.pf-stat .trend{font-size:11px;font-weight:700;}
.pf-stat .trend.up{color:#5fc88f;} .pf-stat .trend.down{color:#e8747c;} .pf-stat .trend.flat{color:var(--text-faint);}
.pf-stat .sub{font-size:10.5px;color:var(--text-faint);margin-top:2px;}
/* ---------- 快速开始 ---------- */
.pf-quick{display:flex;flex-direction:column;gap:8px;}
.pf-quick-btn{
  display:flex;flex-direction:column;gap:2px;align-items:flex-start;text-align:left;cursor:pointer;
  background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:11px;padding:10px 12px;
  color:var(--text);font-size:13px;font-weight:700;transition:.15s;
}
.pf-quick-btn:hover{border-color:rgba(242,193,78,.5);background:rgba(242,193,78,.08);}
.pf-quick-btn span{font-size:11px;font-weight:400;color:var(--text-faint);}
/* ---------- 诊断建议 ---------- */
.pf-insights{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}
.pf-insights li{
  display:flex;gap:9px;align-items:flex-start;font-size:13px;line-height:1.6;color:var(--text-dim);
  background:rgba(255,255,255,.03);border:1px solid var(--line);border-left:3px solid var(--line);
  border-radius:10px;padding:9px 12px;
}
.pf-insights li b{color:var(--text);}
.pf-insights li.warn{border-left-color:#e8b24c;}
.pf-insights li.bad{border-left-color:#e8747c;}
.pf-insights li.good{border-left-color:#5fc88f;}
.pf-insights li .ico{flex:none;font-weight:800;font-size:12px;color:var(--text-faint);}
/* ---------- 历史战绩:头部与筛选 ---------- */
.pf-hist-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px;}
.pf-hist-head .pf-h3{margin:0;}
.pf-filter{display:flex;gap:6px;}
.pf-filter .chip-opt{flex:none;padding:6px 12px;font-size:12.5px;}
#btn-hist-more{margin-top:10px;width:100%;padding:10px;font-size:13px;}
/* ---------- 训练配置:模式卡 ---------- */
.sf-modes{display:flex;flex-direction:column;gap:9px;}
.sf-mode{
  display:flex;flex-direction:column;gap:3px;align-items:flex-start;width:100%;text-align:left;cursor:pointer;
  background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:12px;padding:11px 13px;
  color:var(--text);transition:.15s;
}
.sf-mode:hover{border-color:rgba(242,193,78,.45);}
.sf-mode.active{border-color:var(--gold);background:rgba(242,193,78,.1);box-shadow:0 0 0 1px rgba(242,193,78,.35) inset;}
.sf-mode b{font-size:13.5px;}
.sf-mode span{font-size:11.5px;color:var(--text-faint);}
.sf-estimate{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line);font-size:12.5px;color:var(--text-dim);line-height:1.7;}
.sf-estimate b{color:var(--gold);}

/* GTO 方块紧凑化:保证能放在台面下方、我的信息框左侧(1440×900 仅约 187px 可用) */
@media(min-width:861px){
  #gto-panel{padding:9px 11px 10px;gap:0 9px;}
  #gto-panel .gto-title{margin-bottom:3px;font-size:11px;}
  #gto-panel .gto-line{font-size:10.5px;line-height:1.4;padding:0;}
  #gto-panel .gto-advice{margin-top:5px;padding:5px 7px;font-size:11px;line-height:1.45;}
  #gto-panel .gto-why{font-size:10px;line-height:1.4;margin-top:1px;}
  #gto-panel .gto-past,#gto-panel .gto-live{gap:5px;font-size:11px;}
  #gto-panel .gto-live{margin-top:4px;}
  #gto-panel .gto-tag{font-size:9.5px;padding:0 5px;}
}

/* ================= 同意勾选 + 协议文档弹层 ================= */
.agree-row{display:flex;gap:9px;align-items:flex-start;margin:2px 0 12px;cursor:pointer;
  font-size:12px;line-height:1.6;color:var(--text-dim);}
.agree-row input{margin-top:2px;width:16px;height:16px;flex:none;accent-color:var(--gold);cursor:pointer;}
.agree-row a{color:var(--gold);text-decoration:underline;text-underline-offset:2px;}
.agree-row.err{color:#e8747c;}
.agree-row.err a{color:#ffb3b8;}
#doc-screen{
  position:fixed;inset:0;z-index:300;display:flex;align-items:flex-start;justify-content:center;
  padding:calc(18px + var(--safe-t)) var(--gutter) calc(24px + var(--safe-b));
  background:rgba(6,7,12,.9);backdrop-filter:blur(5px);overflow-y:auto;
}
.doc-card{width:min(820px,100%);background:var(--panel);border:1px solid var(--line);border-radius:16px;
  box-shadow:0 24px 60px rgba(0,0,0,.6);display:flex;flex-direction:column;max-height:calc(100dvh - 42px - var(--safe-t) - var(--safe-b));}
.doc-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:13px 18px;border-bottom:1px solid var(--line);flex:none;}
.doc-brand{font-size:13px;font-weight:700;color:var(--gold);letter-spacing:.5px;}
.doc-head .diff-btn{width:auto;padding:7px 14px;font-size:12.5px;}
.doc-body{flex:1;overflow-y:auto;padding:16px 20px 4px;font-size:13px;line-height:1.85;color:var(--text-dim);}
.doc-body h2{margin:0 0 10px;font-size:18px;color:var(--text);display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;}
.doc-body .doc-ver{font-size:11px;font-weight:400;color:var(--text-faint);}
.doc-body h4{margin:16px 0 6px;font-size:13.5px;color:var(--gold);}
.doc-body ul{margin:0;padding-left:18px;}
.doc-body li{margin-bottom:5px;}
.doc-body b{color:var(--text);font-weight:700;}
.doc-intro{background:rgba(255,255,255,.04);border:1px solid var(--line);border-left:3px solid var(--gold);
  border-radius:10px;padding:10px 12px;margin:0 0 6px;color:var(--text-dim);}
.doc-foot{padding:12px 18px 16px;border-top:1px solid var(--line);flex:none;display:flex;justify-content:flex-end;}
.doc-foot .setup-btn{width:auto;min-width:150px;padding:11px 22px;font-size:14.5px;}
/* 面板页底部协议入口 */
.pf-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--text-faint);margin:0 2px var(--gap);}
.pf-foot a{color:var(--text-dim);text-decoration:underline;text-underline-offset:2px;}
.pf-foot a:hover{color:var(--gold);}
.pf-foot-tip{margin-left:4px;}

/* ============================================================
   面板页:上/下半屏结构
   - 上半屏(关键指标 + 诊断 + 图表)与下半屏(历史战绩)各占一半
   - 桌面端整页不滚动,历史列表内部滚动;窄屏改为自然堆叠
   ============================================================ */
#profile-screen{display:flex;flex-direction:column;height:100dvh;overflow:hidden;}
.pf-wrap{flex:1;min-height:0;display:flex;flex-direction:column;}
.pf-hero,.pf-foot{flex:none;}
.pf-top{flex:1 1 50%;min-height:0;display:grid;grid-template-columns:minmax(300px, .85fr) minmax(0, 1.5fr);gap:var(--gap);}
.pf-top-left{display:flex;flex-direction:column;gap:var(--gap);min-height:0;}
.pf-top-left .pf-grow{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;}
.pf-insights-wrap{flex:1;min-height:0;overflow-y:auto;padding-right:2px;}
.pf-charts{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:var(--gap);min-height:0;}
.pf-charts .pf-card{display:flex;flex-direction:column;min-height:0;}
.pf-charts .chart-box{flex:1;min-height:0;align-items:center;}
.pf-bottom{flex:1 1 50%;min-height:0;display:flex;flex-direction:column;margin-top:var(--gap);}
.pf-bottom .pf-hist-list{flex:1;min-height:0;overflow-y:auto;padding-right:3px;}
.pf-stats{grid-template-columns:repeat(auto-fit, minmax(140px, 1fr));}
.hist-head{cursor:pointer;}
@media(max-width:1180px){
  /* 窄屏:取消半屏切割,改为自然堆叠;#profile-screen 是 fixed 全屏容器,
     必须让它自身可滚动(overflow-y:auto),否则溢出内容无法到达 */
  #profile-screen{height:100dvh;overflow-y:auto;overflow-x:hidden;}
  .pf-wrap{height:auto;min-height:0;}
  .pf-top{flex:none;display:flex;flex-direction:column;gap:var(--gap);}
  .pf-top-left{flex:none;}
  .pf-charts{grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));}
  .pf-charts .chart-box{min-height:clamp(150px, 17vh, 210px);}
  .pf-insights-wrap{overflow:visible;}
  .pf-bottom{flex:none;min-height:0;}
  .pf-bottom .pf-hist-list{overflow:visible;max-height:none;}
}

/* ================= 头像编辑 ================= */
.pf-avatar{border:none;padding:0;cursor:pointer;position:relative;overflow:hidden;}
.pf-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;}
.pf-avatar::after{content:"改";position:absolute;right:-2px;bottom:-2px;width:20px;height:20px;border-radius:50%;
  background:var(--gold);color:#241a02;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;
  box-shadow:0 2px 6px rgba(0,0,0,.45);}
#avatar-screen{position:fixed;inset:0;z-index:320;display:flex;align-items:center;justify-content:center;
  padding:var(--gutter);background:rgba(6,7,12,.88);backdrop-filter:blur(5px);}
.avatar-card{width:min(520px,100%);background:var(--panel);border:1px solid var(--line);border-radius:16px;
  padding:18px 20px 20px;box-shadow:0 24px 60px rgba(0,0,0,.6);}
.avatar-card h3{margin:0 0 6px;font-size:16px;color:var(--gold);}
.avatar-tip{font-size:12px;color:var(--text-faint);line-height:1.7;margin:0 0 14px;}
.avatar-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(44px,1fr));gap:8px;margin-bottom:14px;}
.avatar-opt{aspect-ratio:1;border-radius:50%;border:1px solid var(--line);background:rgba(255,255,255,.05);
  font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s;}
.avatar-opt:hover{border-color:var(--gold);background:rgba(242,193,78,.12);}
.avatar-opt.active{border-color:var(--gold);box-shadow:0 0 0 2px rgba(242,193,78,.4) inset;}
.avatar-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.avatar-actions .diff-btn{width:auto;padding:10px 16px;font-size:13.5px;}
.avatar-actions .setup-btn{width:auto;min-width:120px;padding:10px 20px;font-size:14.5px;margin-left:auto;}
.avatar-msg{margin-top:10px;font-size:12.5px;color:#e8747c;min-height:18px;}
.avatar-msg.ok{color:#5fc88f;}
/* 座位头像支持图片 */
.avatar-ring{overflow:hidden;}
.avatar-img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;}

/* ============================================================
   面板上半屏:关键指标不再压到历史战绩
   - 根因:auto-fit 在左栏只排 2 列 → 6 张卡 3 行约 393px,超出上半个屏高
   - 修正:桌面固定 3 列(2 行)+ 紧凑化 + 溢出时卡片内部滚动(结构性兜底)
   ============================================================ */
@media(min-width:1181px){
  .pf-top-left{overflow:hidden;}
  .pf-top-left > .sf-card{min-height:0;}
  .pf-top-left > .sf-card:first-child{flex:0 1 auto;display:flex;flex-direction:column;overflow:hidden;}
  .pf-top-left > .sf-card:first-child #pf-stats{flex:1 1 auto;min-height:0;overflow-y:auto;padding-right:2px;}
  #pf-stats{grid-template-columns:repeat(3, minmax(0, 1fr));gap:8px;}
  .pf-stat{padding:8px 10px;}
  .pf-stat .k{font-size:11px;}
  .pf-stat .v{font-size:16.5px;margin-top:1px;}
  .pf-stat .sub{font-size:10px;}
  .pf-stat .trend{font-size:10px;}
}

/* 指标卡按内容自然高度(不收缩、不出现内部滚动条);诊断卡吃剩余高度并自行滚动 */
@media(min-width:1181px){
  .pf-top-left > .sf-card:first-child{flex:0 0 auto;overflow:visible;}
  .pf-top-left > .sf-card:first-child #pf-stats{overflow:visible;}
  .pf-top-left > .sf-card.pf-grow{flex:1 1 auto;min-height:64px;overflow:hidden;}
  .pf-top-left > .sf-card.pf-grow .pf-h3{margin-bottom:8px;}
  .pf-top-left > .sf-card:first-child .pf-h3{margin-bottom:8px;}
  .pf-top-left > .sf-card:first-child{padding-top:12px;padding-bottom:12px;}
}

/* 矮屏(≤860px 高):指标小字隐藏,左栏可内部滚动,避免"诊断"卡被裁切或与历史重叠 */
@media(min-width:1181px){
  .pf-top-left{overflow-y:auto;overflow-x:hidden;}
  .pf-top-left > .sf-card:first-child{flex:0 0 auto;}
}
@media(min-width:1181px) and (max-height:860px){
  .pf-stat .sub{display:none;}
  .pf-stat .v{font-size:16px;}
  .pf-stat{padding:7px 10px;}
  .pf-top-left > .sf-card.pf-grow{min-height:56px;}
}

/* 上半屏平衡:移除"诊断与建议"后,指标卡填满左栏(两行等高拉伸) */
@media(min-width:1181px){
  .pf-top{grid-template-columns:minmax(300px, .78fr) minmax(0, 1.62fr);}
  .pf-top-left > .sf-card:first-child{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;}
  .pf-top-left > .sf-card:first-child #pf-stats{flex:1 1 auto;min-height:0;grid-auto-rows:1fr;}
}

/* ============================================================
   历史战绩:表格栏位风格(替代原来的信息堆叠行)
   ============================================================ */
.hist-table{width:100%;border-collapse:collapse;font-size:12.5px;}
.hist-table th{
  text-align:left;font-weight:600;color:var(--text-faint);font-size:11.5px;letter-spacing:.4px;
  padding:7px 9px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:1;
  background:linear-gradient(180deg, rgba(24,25,40,.98), rgba(24,25,40,.92));backdrop-filter:blur(4px);
}
.hist-table th.th-net{text-align:right;}
.hist-table td{padding:8px 9px;border-bottom:1px solid rgba(255,255,255,.06);color:var(--text-dim);white-space:nowrap;}
.hist-row{cursor:pointer;transition:background .12s;}
.hist-row:hover td{background:rgba(255,255,255,.04);}
.hist-row.open td{background:rgba(242,193,78,.07);}
.hist-table .c-time{color:var(--text);font-variant-numeric:tabular-nums;}
.hist-table .c-num{font-variant-numeric:tabular-nums;}
.hist-table .c-net{text-align:right;font-weight:800;font-size:13.5px;font-variant-numeric:tabular-nums;}
.hist-table .c-net.pos{color:#5fc88f;} .hist-table .c-net.neg{color:#e8747c;} .hist-table .c-net.zero{color:var(--text-dim);}
.hist-table .c-act{text-align:right;color:var(--text-faint);font-size:11.5px;}
.hist-row.open .c-act{color:var(--gold);}
.hist-detail-row td{padding:0;border-bottom:1px solid var(--line);background:rgba(0,0,0,.22);}
.hist-detail-box{max-height:340px;overflow:auto;padding:6px 12px 12px;}
.hist-detail-box h4{margin:10px 0 6px;font-size:12px;color:var(--gold);}
.hist-detail-box .hands-table{font-size:11.5px;}
.hist-detail-box .hands-table th,.hist-detail-box .hands-table td{padding:5px 7px;white-space:nowrap;}
@media(max-width:640px){
  /* 手机:只保留 时间 / 净盈亏 / 明细,避免横向溢出 */
  .hist-table th:nth-child(2), .hist-table td:nth-child(2),
  .hist-table th:nth-child(3), .hist-table td:nth-child(3),
  .hist-table th:nth-child(5), .hist-table td:nth-child(5){display:none;}
  .hist-table th,.hist-table td{padding:8px 6px;}
  .hist-detail-box{padding:4px 8px 10px;}
}

/* 协议弹层底部:同意 / 不同意 + 阻断提示 */
.doc-foot{align-items:center;gap:10px;flex-wrap:wrap;}
.doc-foot-tip{margin-right:auto;font-size:11.5px;color:var(--text-faint);}
.doc-foot .diff-btn{width:auto;padding:10px 18px;font-size:13.5px;}
.doc-foot .setup-btn{width:auto;min-width:130px;padding:10px 20px;font-size:14.5px;}
.agree-block{margin:0 0 10px;padding:9px 12px;font-size:12px;line-height:1.6;color:#ffb3b8;
  background:rgba(232,116,124,.12);border:1px solid rgba(232,116,124,.4);border-radius:10px;}
#btn-login:disabled,#btn-send-code:disabled{opacity:.5;cursor:not-allowed;}

/* ============================================================
   统一顶栏(.app-bar)+ 统一进入/退出操作
   - 位置固定:左 = 返回上一级(根页面为品牌),中 = 页面标题,右 = 本页主操作
   - 所有登录后页面共用同一组件与同一组按钮样式;窄屏时操作组整组吸底
   ============================================================ */
.app-bar{
  position:fixed;top:0;left:0;right:0;z-index:50;min-height:var(--bar-h);
  display:flex;align-items:center;gap:10px;
  padding:6px var(--gutter);
  /* 注意:这里不能用 backdrop-filter —— 它会成为 fixed 后代的包含块,
     导致窄屏吸底的操作组被"钉"在顶栏内部而不是屏幕底部 */
  background:linear-gradient(180deg,rgba(35,35,56,.99),rgba(23,23,38,.98));
  border-bottom:1px solid var(--line);
}
.app-bar .spacer{flex:1;}
.pb-brand{display:flex;align-items:center;gap:7px;flex:none;min-width:0;}
.pb-suit{color:var(--gold);font-size:18px;line-height:1;}
.pb-brand b{color:var(--gold);font-size:15px;letter-spacing:.5px;}
.pb-brand em{font-style:normal;color:var(--text-faint);font-size:9.5px;letter-spacing:1.6px;font-weight:600;}
.pb-title{font-size:16px;font-weight:800;letter-spacing:1.5px;color:var(--text);flex:none;}
.pb-sub{font-size:12px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:min(34vw,380px);}
.pb-info{display:none;align-items:center;gap:8px;min-width:0;}
body.in-table .pb-info{display:flex;}
.pb-info .top-item{padding:5px 10px;font-size:12.5px;}
.pb-actions{display:flex;align-items:center;gap:8px;flex:none;}
.pb-actions.empty{display:none;}
/* 返回上一级:和主操作同一位置(顶栏最左),风格统一 */
.nav-back{
  display:inline-flex;align-items:center;gap:6px;flex:none;min-height:38px;padding:7px 13px;
  border-radius:10px;border:1px solid var(--line);background:rgba(255,255,255,.05);
  color:var(--text-dim);font-size:13.5px;font-weight:700;transition:.15s;
}
.nav-back:hover{color:var(--text);border-color:var(--gold-dim);background:rgba(255,255,255,.1);}
.nb-arrow{color:var(--gold);font-weight:800;}
/* 顶栏按钮:主操作(bar-primary)/ 警示主操作(bar-warn)/ 次级(bar-btn) */
.bar-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  min-height:var(--tap);padding:9px 15px;border-radius:10px;
  background:var(--panel-2);border:1px solid var(--line);color:var(--text-dim);
  font-size:13.5px;font-weight:700;white-space:nowrap;transition:.15s;
}
.bar-btn:hover{color:var(--text);border-color:var(--gold-dim);}
.bar-primary{
  background:linear-gradient(180deg,var(--gold-strong),var(--gold));color:#241a02;
  border-color:var(--gold);box-shadow:0 6px 18px rgba(242,193,78,.22);letter-spacing:1px;
}
.bar-primary:hover{filter:brightness(1.07);color:#241a02;}
.bar-primary:disabled{opacity:.42;cursor:not-allowed;filter:none;box-shadow:none;}
.bar-warn{color:#ffd9a0;border-color:rgba(242,193,138,.45);background:rgba(242,150,60,.14);}
.bar-warn:hover{background:rgba(242,150,60,.24);color:#ffe9c9;}
.sound-btn.off{color:var(--text-faint);}

/* ---------- 面板页:身份区(协议入口移到英雄区右侧) ---------- */
.pf-hero{grid-template-columns:auto minmax(0,1fr) auto;}
.pf-hero .pf-foot{justify-content:flex-end;text-align:right;max-width:360px;margin:0;font-size:11.5px;}
@media(max-width:900px){
  .pf-hero{grid-template-columns:auto minmax(0,1fr);}
  .pf-hero .pf-foot{grid-column:1 / -1;justify-content:flex-start;text-align:left;max-width:none;}
}
/* 训练配置页说明行 */
.sf-head-note{line-height:1.6;}

/* ---------- 决策模型:免费模型单选 + 逐个实测状态 ---------- */
.model-list{display:flex;flex-direction:column;gap:7px;}
.model-item{
  display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 10px;
  width:100%;min-height:var(--tap);padding:9px 12px;border-radius:11px;text-align:left;
  background:rgba(255,255,255,.04);border:1px solid var(--line);color:var(--text);transition:.15s;
}
.model-item:hover{border-color:rgba(242,193,78,.45);}
.model-item.active{border-color:var(--gold);background:rgba(242,193,78,.1);box-shadow:0 0 0 1px rgba(242,193,78,.32) inset;}
.model-item.dead{opacity:.62;}
.model-item.dead:hover{border-color:rgba(224,85,85,.5);}
.mi-name{font-size:13.5px;font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ms{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap;
  background:rgba(255,255,255,.07);color:var(--text-faint);}
.ms.testing{color:#e8c74c;background:rgba(232,199,76,.14);}
.ms.ok{color:#7ed49a;background:rgba(63,174,90,.14);}
.ms.bad{color:#f0a0a0;background:rgba(224,85,85,.14);}
.ms.warn{color:#e8c74c;background:rgba(232,199,76,.16);}
.mi-msg{grid-column:1 / -1;font-size:11px;line-height:1.5;color:#e0a0a0;
  overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.model-fallback{margin-top:10px;padding:10px 12px;border-radius:10px;font-size:12px;line-height:1.6;
  color:var(--text-dim);background:rgba(232,199,76,.08);border:1px solid rgba(232,199,76,.3);}
.model-fallback span{display:block;margin-bottom:8px;}
.model-fallback .diff-btn{width:100%;min-height:var(--tap);}

/* ---------- 复盘报表:标题行 + 底部操作(与顶栏同一套按钮风格) ---------- */
.report-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;}
.report-head h2{margin:0;}
.report-actions{gap:10px;}
.report-actions .bar-btn{min-width:180px;padding:12px 22px;font-size:14.5px;}
@media(max-width:520px){ .report-actions .bar-btn{min-width:0;flex:1;} }

/* ---------- 窄屏:主操作整组吸底(位置与桌面右对齐一致),返回键固定在左上 ---------- */
@media(max-width:860px){
  body:not(.in-table) .pb-actions{
    position:fixed;left:0;right:0;bottom:0;z-index:60;
    padding:8px var(--gutter) calc(8px + var(--safe-b));
    background:linear-gradient(180deg, rgba(18,19,31,.75), rgba(18,19,31,.97));
    backdrop-filter:blur(10px);border-top:1px solid var(--line);
    justify-content:flex-end;flex-wrap:wrap;
  }
  body:not(.in-table) .pb-actions .bar-btn{flex:0 0 auto;}
  body:not(.in-table) .pb-actions .bar-primary{flex:1 1 auto;min-width:150px;}
  /* 内容不被吸底操作条遮住 */
  #profile-screen{padding-bottom:calc(84px + var(--safe-b));}
  .sf-wrap{padding-bottom:calc(84px + var(--safe-b));}
  .pb-brand em{display:none;}
  .pb-sub{max-width:42vw;}
  .app-bar{gap:8px;}
  .bar-btn{padding:9px 12px;font-size:13px;}
  .nav-back{min-height:36px;padding:6px 11px;font-size:13px;}
  .pb-title{font-size:15px;letter-spacing:1px;}
}
@media(max-width:560px){
  .pb-brand b{font-size:13.5px;}
  .pb-brand em{display:none;}
  .pb-sub{display:none;}
  body.in-table .pb-info .top-item{padding:4px 8px;font-size:11.5px;}
  /* 牌局页:顶栏必须保持单行(台面高度全靠它让出来,换行会把底部座位挤到操作栏下) */
  body.in-table .app-bar{flex-wrap:nowrap;padding:5px 8px;gap:6px;overflow:hidden;}
  body.in-table .pb-brand{display:none;}
  body.in-table .pb-title{font-size:13px;letter-spacing:1px;flex:none;}
  body.in-table .pb-info .hide-sm{display:none;}
  body.in-table #btn-restart{display:none !important;}
  body.in-table .bar-btn{padding:8px 10px;font-size:12px;}
  body.in-table .nav-back{padding:6px 9px;font-size:12px;}
  .report-actions .bar-btn{min-width:0;}
}

/* 窄屏:台面略上移,给底部操作栏留出安全距离
   (顶栏固定后牌局区高度减少,底部座位会贴到操作栏;上移 14px 后 7~9 人桌也不重叠) */
@media(max-width:860px){
  #table-stage{top:calc(50% - 14px);}
}

/* 窄屏:摘要条整行换行(避免被 flex 行挤成横向溢出),说明文字另起一行 */
@media(max-width:860px){
  .sf-head{display:block;}
  .sf-summary{margin-bottom:8px;}
  .sf-head-note{margin-left:0;}
}

/* GTO 方块:桌面内容自适应高度(四行事实 + 一行建议,比原来矮) */
