/* 「凑一局」赛事对阵·记分 共享样式（前台只读页 / 后台记分台共用） */
:root{
  --b-primary:#0a5fd9; --b-ok:#2e7d32; --b-red:#c0392b;
}
.bv-tip{background:#eef3fb;color:#3d5a80;font-size:12.5px;padding:9px 16px;line-height:1.6}
/* 顶部管理条（仅后台记分台） */
.bv-admin-bar{display:flex;gap:9px;padding:10px 14px;flex-wrap:wrap}
.ab-btn{border:1px solid #d4d7de;background:#fff;color:#4e5969;border-radius:18px;padding:8px 15px;font-size:13px;font-weight:700;cursor:pointer}
.ab-btn.primary{background:linear-gradient(135deg,#1677ff,#0a5fd9);color:#fff;border:none;box-shadow:0 2px 7px rgba(22,119,255,.3)}
.ab-btn:active{transform:scale(.96)}
/* 阶段标题 / 箭头 */
.stage-head{font-size:15px;font-weight:800;color:#1d2129;padding:15px 16px 2px;display:flex;align-items:center;gap:8px}
.stage-head .tag{font-size:11px;font-weight:600;color:#0a5fd9;background:#e8f1fe;border-radius:6px;padding:2px 7px}
.stage-arrow{text-align:center;color:#a9aeb8;font-size:16px;padding:3px}
/* 冠军 / 出线汇总卡 */
.sum-card{margin:12px 14px 2px;border:1px solid #e5e6eb;border-radius:12px;background:#fff;padding:13px 15px}
.sum-card.champ{background:linear-gradient(135deg,#fff8e6,#fdf3d7);border-color:#f0d99a}
.sum-card .t{font-size:13px;color:#86909c;margin-bottom:7px;font-weight:700}
.sum-card .big{font-size:19px;font-weight:800;color:#a87400}
.qline{font-size:13.5px;color:#1d2129;padding:3px 0}
.qline b{color:var(--b-ok)}
/* 通用卡片 */
.rr-card{margin:10px 14px;border:1px solid #e5e6eb;border-radius:12px;background:#fff;overflow:hidden}
.rr-card-head{padding:11px 14px;border-bottom:1px solid #f0f1f4;display:flex;justify-content:space-between;align-items:center;font-size:14px;font-weight:700;color:#1d2129}
.rr-card-head .sub{font-size:11.5px;color:#86909c;font-weight:400}
/* ===== 循环矩阵 ===== */
.rr-scroll{overflow:auto;-webkit-overflow-scrolling:touch}
table.rr{border-collapse:separate;border-spacing:0;font-size:12px;white-space:nowrap}
.rr th,.rr td{padding:0;text-align:center;box-sizing:border-box}
.rr thead th{position:sticky;top:0;background:#f5f7fa;color:#4e5969;font-weight:600;padding:8px 3px;border-bottom:1px solid #e5e6eb;min-width:37px;font-size:11px;z-index:2}
.rr .nmh{position:sticky;left:0;z-index:4;background:#f5f7fa;text-align:left;min-width:104px;padding-left:12px}
.rr .nm{position:sticky;left:0;background:#fff;text-align:left;padding:8px 8px 8px 12px;min-width:104px;border-right:1px solid #eef0f3;color:#1d2129;z-index:1;font-size:12.5px}
.rr .cell{min-width:40px;height:36px;border-bottom:1px solid #f3f4f6;border-right:1px solid #f3f4f6;vertical-align:middle}
.rr .cell.editable{cursor:pointer}
.rr .cell .v{display:block;line-height:36px;font-weight:700;font-size:12px}
.rr .cell.win{background:#eaf6ea} .rr .cell.win .v{color:var(--b-ok)}
.rr .cell.lose{background:#fdf0ef} .rr .cell.lose .v{color:var(--b-red)}
.rr .cell.open{background:#fff}
.rr .cell.blank{background:#fafbfc}
.rr .cell.dia{background:#f7f8fa;color:#c7cbd4}
.rr .cell.tbd{background:#f7f8fa}
.rr .stat{min-width:33px;padding:8px 3px;font-weight:700;color:#1d2129;border-bottom:1px solid #f3f4f6;font-size:12px}
.rr .stat.neg{color:var(--b-red)} .rr .stat.pos{color:var(--b-ok)}
.rank-badge{display:inline-block;min-width:18px;height:18px;line-height:18px;border-radius:9px;background:#eef0f3;color:#86909c;font-size:11px;text-align:center;margin-right:6px;font-weight:700;padding:0 3px}
.rr tr.qualified .nm{background:#f2faf2}
.rr tr.qualified .rank-badge{background:var(--b-ok);color:#fff}
/* ===== 淘汰对阵（紧凑单轮） ===== */
.match{display:flex;align-items:center;justify-content:space-between;background:#f7f8fa;border:1px solid #e8eaef;border-radius:10px;padding:8px 10px;margin:8px 0;font-size:13.5px}
.match .ply{flex:1;padding:8px 5px;text-align:center;border-radius:8px;color:#4e5969}
.match .ply.editable{cursor:pointer}
.match .ply.win{background:var(--b-ok);color:#fff;font-weight:700}
.match .ply.tbd{color:#a9aeb8}
.match .vs{color:#a9aeb8;padding:0 8px;font-size:11px}
.ko-pad{padding:4px 12px 10px}
/* ===== 淘汰括号树 ===== */
.bk-wrap{margin:10px 14px}
.bk-state{font-size:12px;color:#86909c;margin:2px 2px 9px}
.bk-scroll{overflow:auto;-webkit-overflow-scrolling:touch;border:1px solid #e5e6eb;border-radius:12px;background:#fff}
.bk{display:inline-flex;position:relative;padding:12px 18px 14px 12px;min-width:100%;box-sizing:border-box}
.bk-col{display:flex;flex-direction:column;flex:0 0 auto}
.bk-col + .bk-col{margin-left:34px}
.bk-colhead{font-size:11px;color:#86909c;text-align:center;margin-bottom:5px;min-height:12px}
.bk-m{flex:1;display:flex;flex-direction:column;justify-content:center}
.bk-slot{height:26px;min-width:104px;display:flex;align-items:center;padding:0 8px;border:1px solid #d4d7de;border-radius:5px;background:#fafbfc;font-size:12px;color:#4e5969;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box}
.bk-slot + .bk-slot{margin-top:3px}
.bk-slot.editable{cursor:pointer}
.bk-slot.tbd{color:#a9aeb8;background:#f5f6f8;border-style:dashed}
.bk-slot.win{background:var(--b-ok);border-color:var(--b-ok);color:#fff;font-weight:700}
.bk-slot.lose{color:#86909c;background:#fff}
.bk-m.bye .bk-slot.win{background:#eaf4ea;border-color:#bcd7bc;color:var(--b-ok);font-weight:700}
.bk-m.bye .bk-slot.tbd{opacity:.45}
.bk-slot.swap-pick{cursor:pointer;border:1px dashed #fa8c16;background:#fff7e6;color:#d46b08}
.bk-slot.swap-pick.on{background:#fa8c16;border-color:#fa8c16;color:#fff;font-weight:700;box-shadow:0 0 0 2px rgba(250,140,22,.25)}
.bk-lines{position:absolute;left:0;top:0;pointer-events:none}
/* ===== 局分录入底部弹层（仅后台记分台） ===== */
.mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:50;display:flex;align-items:flex-end;justify-content:center}
.sheet{background:#fff;border-radius:16px 16px 0 0;width:100%;max-width:520px;padding:16px 15px calc(18px + env(safe-area-inset-bottom))}
.sheet h4{margin:0 0 3px;font-size:15.5px;color:#1d2129;text-align:center}
.sheet .vs2{font-size:12px;color:#86909c;margin-bottom:14px;text-align:center}
.score-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:9px}
.score-btn{border:1px solid #d4d7de;background:#f7f8fa;border-radius:10px;padding:12px 0;font-size:16px;font-weight:800;color:#1d2129;cursor:pointer}
.score-btn.win{background:#eaf6ea;border-color:#9ccc9e;color:var(--b-ok)}
.score-btn.lose{background:#fdf0ef;border-color:#e0a3a0;color:var(--b-red)}
.score-btn:active{transform:scale(.96)}
.sheet-clear{width:100%;border:none;background:#f2f3f5;color:#86909c;border-radius:10px;padding:11px 0;font-size:14px;font-weight:700;cursor:pointer;margin-top:2px}
/* 空态 */
.bv-empty{text-align:center;color:#a9aeb8;padding:50px 24px;font-size:14px;line-height:1.8}
@media(min-width:760px){ .bk-wrap,.rr-card,.sum-card{max-width:980px;margin-left:auto;margin-right:auto} }
