/* 讲师端 */
.hidden{display:none!important}
.wrap{max-width:1220px;margin:0 auto;padding:20px}
.grid.cols2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.grid.cols3{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.grid.cols4{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}

/* 登录 */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;
  background:linear-gradient(150deg,var(--navy-900),var(--navy-700) 60%,#24507f)}
.login-card{background:#fff;border-radius:22px;box-shadow:0 24px 70px rgba(0,0,0,.3);padding:38px 34px;width:100%;max-width:400px}
.brand{display:flex;gap:14px;align-items:center;margin-bottom:26px}
.brand-mark{width:52px;height:52px;border-radius:14px;flex-shrink:0;
  background:linear-gradient(135deg,var(--gold-500),var(--gold-300));
  display:flex;align-items:center;justify-content:center;font-size:25px;font-weight:800;color:#3b2c05}
.brand h1{font-size:21px;letter-spacing:.5px}
.brand p{font-size:12px;color:var(--muted)}

/* 顶栏 */
.topbar{background:var(--navy-800);color:#fff;padding:0 20px;height:56px;display:flex;
  align-items:center;justify-content:space-between;gap:14px;position:sticky;top:0;z-index:50}
.tb-left,.tb-right{display:flex;align-items:center;gap:12px}
.tb-logo{font-weight:800;letter-spacing:1px;color:var(--gold-300)}
.tb-sub{font-size:12.5px;opacity:.72}
.tb-room{font-size:13px;opacity:.9}
.tb-room b{font-size:19px;letter-spacing:3px;color:var(--gold-300);font-variant-numeric:tabular-nums}

/* 闸门条 */
.gatebar{background:#fff;border-bottom:1px solid var(--line);padding:14px 20px;
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  position:sticky;top:56px;z-index:40;box-shadow:0 2px 10px rgba(15,36,64,.05)}
.gate-step{font-size:16px;font-weight:800}
.gate-hint{font-size:12.5px;color:var(--muted);margin-top:2px}
.gate-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.gate-actions .cd{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--navy-700);
  padding:0 10px;min-width:78px;text-align:center}
.gate-actions .cd.urgent{color:var(--err)}

/* 标签页 */
.tabs{display:flex;gap:2px;background:#fff;padding:0 20px;border-bottom:1px solid var(--line);overflow-x:auto}
.tab{background:none;border:none;padding:12px 18px;cursor:pointer;font-weight:700;color:var(--muted);
  border-bottom:3px solid transparent;white-space:nowrap}
.tab.active{color:var(--navy-700);border-bottom-color:var(--gold-500)}

/* 组卡片 */
.gcard{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:14px;box-shadow:var(--sh)}
.gcard.turn{border-color:var(--gold-500);box-shadow:0 0 0 3px rgba(201,162,39,.18),var(--sh)}
.gcard.done{border-left:4px solid var(--ok)}
.gcard-h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.gcard-h .gn{font-weight:800;font-size:15px;display:flex;align-items:center;gap:7px}
.gcard-h .rg{font-size:11px;color:var(--muted);background:var(--bg);padding:1px 7px;border-radius:5px}
.stat{display:flex;flex-wrap:wrap;gap:6px;font-size:12px}
.stat span{background:var(--bg);padding:2px 8px;border-radius:6px;color:#475569}
.stat span b{color:var(--ink);font-variant-numeric:tabular-nums}
.stat span.bad{background:var(--err-bg);color:var(--err)}
.stat span.good{background:var(--ok-bg);color:var(--ok)}

/* 顺位榜 */
.ranklist{display:grid;gap:6px}
.rankrow{display:flex;align-items:center;gap:10px;padding:7px 11px;background:var(--bg);border-radius:9px;font-size:13px}
.rankrow .no{width:22px;height:22px;border-radius:50%;background:var(--navy-700);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex-shrink:0}
.rankrow .no.n1{background:linear-gradient(135deg,var(--gold-500),var(--gold-300));color:#3b2c05}
.rankrow .why{margin-left:auto;font-size:11.5px;color:var(--muted)}

/* 季度勾选 */
.qpick{display:flex;gap:8px;flex-wrap:wrap}
.qbox{border:1.5px solid var(--line);border-radius:12px;padding:10px 14px;cursor:pointer;background:#fff;min-width:150px;flex:1}
.qbox.on{border-color:var(--gold-500);background:#fffdf5;box-shadow:0 0 0 3px rgba(201,162,39,.14)}
.qbox .qn{font-weight:800;font-size:13.5px;display:flex;align-items:center;gap:6px}
.qbox .qd{font-size:11.5px;color:var(--muted);margin-top:3px;line-height:1.45}

/* 二维码 */
.qrgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}
.qrbox{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:16px;text-align:center;box-shadow:var(--sh)}
.qrbox img{width:100%;max-width:180px;image-rendering:pixelated}
.qrbox .qt{font-weight:800;margin-bottom:8px}
.qrbox .qu{font-size:11px;color:var(--muted);word-break:break-all;margin-top:6px}

/* 结算表 */
.settle-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:14px}
.pl{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh);overflow:hidden}
.pl-h{padding:12px 16px;background:var(--navy-800);color:#fff;display:flex;justify-content:space-between;align-items:center}
.pl-h .pn{font-weight:800}
.pl-b{padding:12px 16px}
.pl-profit{padding:12px 16px;background:#fafbfd;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;align-items:center}
.pl-profit .v{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums}
.pl-profit .v.pos{color:var(--ok)} .pl-profit .v.neg{color:var(--err)}
.chipcmd{display:flex;gap:8px;padding:10px 16px;background:#fffdf5;border-top:1px dashed var(--gold-500);flex-wrap:wrap;align-items:center}
.chipcmd .lbl{font-size:12px;font-weight:700;color:#8a6d1a}

.issue{font-size:12px;padding:6px 9px;border-radius:7px;margin-top:5px;line-height:1.5}
.issue.err{background:var(--err-bg);color:var(--err)}
.issue.warn{background:var(--warn-bg);color:var(--warn)}
.issue.ok{background:var(--ok-bg);color:var(--ok)}

@media print{
  .topbar,.gatebar,.tabs,.btn{display:none!important}
  .qrgrid{grid-template-columns:repeat(2,1fr)}
  .qrbox{break-inside:avoid;border:1px solid #999}
}
