
  :root{
    --bg:#f4f5f7; --card:#ffffff; --line:#e4e7ec; --line2:#d6dae1;
    --txt:#1f2328; --dim:#6b7280; --head:#f2f4f7;
    --plus:#c0392b; --minus:#1e8e3e; --zero:#9aa1ab;
    --ld:#fff8e6; --gold:#b8860b; --blue:#2563eb;
  }
  *{box-sizing:border-box}
  body{margin:0;background:var(--bg);color:var(--txt);
    font:14px/1.5 "PingFang SC","Microsoft YaHei",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;}
  .page{max-width:1100px;margin:0 auto;padding:22px 18px 60px}
  h1{font-size:20px;margin:0 0 14px;font-weight:700}
  h1 .sub{font-size:12px;font-weight:400;color:var(--dim);margin-left:8px}
  .bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--card);
    border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:14px}
  .bar input#code{width:110px;padding:7px 10px;border:1px solid var(--line2);border-radius:7px;
    font-size:15px;letter-spacing:2px;text-align:center;outline:none}
  .bar input#code:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
  .bar select{padding:7px 8px;border:1px solid var(--line2);border-radius:7px;background:#fff;color:var(--txt);max-width:220px}
  button{padding:7px 13px;border:1px solid var(--line2);border-radius:7px;background:#fff;color:var(--txt);
    cursor:pointer;font-size:13px}
  button:hover{border-color:#bfc5cd;background:#fafbfc}
  button.primary{background:var(--blue);border-color:var(--blue);color:#fff}
  button.primary:hover{background:#1d4ed8}
  button:disabled{opacity:.45;cursor:not-allowed}
  .chk{font-size:12.5px;color:var(--dim);display:inline-flex;align-items:center;gap:4px;user-select:none;cursor:pointer}
  .spacer{flex:1 1 0}
  .msg{color:var(--dim);padding:10px 2px;font-size:13px}
  .msg.err{color:#c0392b}
  #card{background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden}
  .meta{padding:11px 14px;border-bottom:1px solid var(--line);font-size:13px;color:var(--dim);
    display:flex;flex-wrap:wrap;gap:14px;align-items:center}
  .meta b{color:var(--txt);font-size:15px;letter-spacing:1px}
  .badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;border:1px solid}
  .badge.ok{color:#1e8e3e;border-color:#bfe2c8;background:#f0f9f2}
  .badge.bad{color:#c0392b;border-color:#f0c4bd;background:#fdf1ef}
  .badge.info{color:var(--blue);border-color:#c7d8f5;background:#eef4ff}
  .wrap{overflow:auto}
  td.selcol,th.selcol{width:34px;padding:4px}
  td.selcol input,th.selcol input{cursor:pointer;width:16px;height:16px}
  tr.row-off td.num,tr.row-off td.result,tr.row-off td.k,tr.row-off td.time,tr.row-off td.note{opacity:.32}
  .badge.recalc{color:var(--blue);border-color:#c7d8f5;background:#eef4ff}
  table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}
  th,td{border:1px solid var(--line);padding:7px 10px;text-align:center;white-space:nowrap}
  thead th{background:var(--head);font-weight:600;position:sticky;top:0;z-index:2}
  thead th.pcol{color:var(--txt)}
  td.k{color:var(--dim);font-weight:600}          /* 局 / 结果 / 包 */
  td.time{color:var(--dim);font-weight:400;font-size:12.5px}
  td.result{font-weight:600}
  td.result.r-ld{color:var(--gold)}
  td.result.r-poor{color:var(--minus)}
  td.result.r-draw{color:var(--zero);font-weight:400}
  td.num{font-weight:600}
  td.num.plus{color:var(--plus)}
  td.num.minus{color:var(--minus)}
  td.num.zero{color:var(--zero);font-weight:400}
  td.num.na{color:#c1c7d0;font-weight:400}   /* 该局未参与（中途离场/尚未上场） */
  td.ld{background:var(--ld)}
  td.num .cell-sub{display:flex;flex-direction:column;gap:2px;margin-top:3px;align-items:center;
    font-size:11px;font-weight:400;line-height:1.35}
  td.num .unfin{color:#c0392b;background:#fdf1ef;border:1px solid #f0c4bd;border-radius:4px;padding:0 4px;white-space:nowrap}
  td.num .sp{color:var(--gold);background:var(--ld);border:1px solid #ecd9a8;border-radius:4px;padding:0 4px;white-space:nowrap}
  td.unfin-cell{vertical-align:top}
  td.note{text-align:left;color:var(--dim);font-weight:400;font-size:12.5px;max-width:340px;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  tfoot td{border-top:2px solid var(--line2);background:#fafbfc;font-weight:700;font-size:15px}
  tfoot td.k{color:var(--txt)}
  .foot{padding:9px 14px;border-top:1px solid var(--line);font-size:12px;color:var(--dim);
    display:flex;flex-wrap:wrap;gap:16px}
  .swatch{display:inline-block;width:11px;height:11px;border-radius:3px;background:var(--ld);
    border:1px solid #ecd9a8;vertical-align:-1px;margin-right:4px}
  a.dl{color:var(--blue);text-decoration:none}
  a.dl:hover{text-decoration:underline}
  a.rp-btn{display:inline-block;margin-left:6px;padding:0 6px;border:1px solid #c7d8f5;border-radius:5px;
    color:var(--blue);background:#eef4ff;font-size:11px;line-height:18px;text-decoration:none;white-space:nowrap}
  a.rp-btn:hover{background:#dbe8fb}
  button.rp-share{margin-left:4px;padding:0 5px;border:1px solid var(--line2);border-radius:5px;
    background:#fff;font-size:11px;line-height:18px;cursor:pointer;vertical-align:middle}
  button.rp-share:hover{border-color:var(--blue);background:#eef4ff}
  .room-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
  .room-chips .rchip{display:inline-flex;align-items:center;gap:5px;padding:3px 6px 3px 10px;border:1px solid var(--line2);
    border-radius:999px;background:#fff;font-size:12.5px;color:var(--txt)}
  .room-chips .rchip b{color:var(--blue);letter-spacing:1px}
  .room-chips .rchip .x{cursor:pointer;border:0;background:none;color:var(--dim);font-size:14px;line-height:1;padding:0 2px}
  .room-chips .rchip .x:hover{color:var(--plus)}
  td.roomhdr{background:#eef4ff;color:var(--blue);font-weight:700;text-align:left;letter-spacing:1px}
  @media(max-width:640px){ .bar input#code{width:92px} .note{max-width:180px} }
