:root{
  --ink:#1a1a2e;--muted:#6b7280;--line:#e5e7eb;--bg:#f4f6f9;--card:#fff;
  --brand:#1f3864;--brand-2:#2e75b6;--up:#c00000;--down:#2e7d32;--gap:#f2f2f2;
  --shadow:0 1px 3px rgba(0,0,0,.06);
}
@media (prefers-color-scheme: dark){
  :root{--ink:#e8eaed;--muted:#9aa0a6;--line:#3c4043;--bg:#15181c;--card:#1f2328;
        --brand:#9db8e8;--brand-2:#7fb2e5;--up:#ff8a80;--down:#81c995;--gap:#2a2f34;
        --shadow:0 1px 3px rgba(0,0,0,.4)}
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font:15px/1.6 "Microsoft YaHei","PingFang SC",system-ui,sans-serif}
a{color:var(--brand-2)}
.wrap{max-width:1240px;margin:0 auto;padding:18px 16px 60px}
.topbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;
  background:var(--card);border-radius:12px;padding:12px 18px;box-shadow:var(--shadow);margin-bottom:14px}
.brandbox{display:flex;align-items:center;gap:10px}
.brandmark{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--brand),var(--brand-2));
  color:#fff;font-weight:700;font-size:15px;display:flex;align-items:center;justify-content:center;letter-spacing:.5px}
.brand-org{font-weight:700;color:var(--brand);font-size:15px}
.brand-sub{color:var(--muted);font-size:12px}
nav.pages{display:flex;gap:6px;flex-wrap:wrap}
nav.pages a{padding:6px 13px;border-radius:999px;border:1px solid var(--line);text-decoration:none;
  color:var(--ink);font-size:13px;background:transparent}
nav.pages a[aria-current="page"]{background:var(--brand);border-color:var(--brand);color:#fff}
header.page{background:var(--card);border-radius:12px;padding:20px 22px;box-shadow:var(--shadow);border-left:5px solid var(--brand)}
h1{margin:0 0 6px;font-size:22px;color:var(--brand)}
h2{font-size:16px;color:var(--brand);margin:0 0 4px}
.sub{color:var(--muted);font-size:13px}
.share{display:flex;flex-wrap:wrap;gap:14px;margin-top:12px}
.share-name{margin-right:6px}
.share-num{color:var(--muted)}
.share-dot{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:middle}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:16px 0}
.kpi{background:var(--card);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow)}
.kpi-label{color:var(--muted);font-size:13px}
.kpi-value{font-size:28px;font-weight:700;line-height:1.25}
.kpi-unit{font-size:13px;font-weight:400;color:var(--muted);margin-left:4px}
.kpi-sub{color:var(--muted);font-size:12px}
.kpi.up .kpi-value{color:var(--up)}
.kpi.down .kpi-value{color:var(--down)}
.card{background:var(--card);border-radius:12px;padding:16px 18px;box-shadow:var(--shadow);margin-bottom:16px}
.card .hint{color:var(--muted);font-size:12px;margin-bottom:10px}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}
.seg button{border:0;background:transparent;padding:6px 14px;font:inherit;font-size:13px;cursor:pointer;color:var(--ink)}
.seg button[aria-pressed="true"]{background:var(--brand);color:#fff}
.legend{display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:10px}
.lg{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:transparent;border-radius:999px;
  padding:3px 10px;font:inherit;font-size:12px;cursor:pointer;color:var(--ink)}
.lg i{width:16px;height:3px;border-radius:2px;display:inline-block}
.lg.lg-static{cursor:default}
.lg[aria-pressed="false"]{opacity:.55}
.lg.lg-off{background:var(--gap)}
.lg.lg-total{font-weight:700}
.lg.lg-group{font-weight:600}
.lg.lg-active{border-color:var(--brand-2);box-shadow:0 0 0 1px var(--brand-2) inset;font-weight:700}
svg.chart{width:100%;height:auto;display:block;touch-action:pan-y}
.grid{stroke:var(--line);stroke-width:1;opacity:.6}
.axis{fill:var(--muted);font-size:12px}
.axis-line{stroke:var(--line);stroke-width:1}
.axis-title{fill:var(--muted);font-size:12px}
.ln{fill:none;stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round;transition:opacity .15s}
.ln.s-group{stroke-width:3.6}
.ln.s-total{stroke-width:4.6}
.pt{transition:opacity .15s}
.endlabel{font-size:12px;font-weight:700}
.ln.off,.pt.off,.endlabel.off{display:none}
.ln.dim,.pt.dim{opacity:.12}
.crossline{stroke:var(--brand-2);stroke-width:1;stroke-dasharray:3 3;opacity:.8}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{border:1px solid var(--line);padding:6px 8px;text-align:center;white-space:nowrap}
th{background:rgba(46,117,182,.16);color:var(--brand);font-weight:700;position:sticky;top:0;z-index:1}
td.c-name{text-align:left;min-width:210px;white-space:normal}
td.c-group{text-align:left;color:var(--muted)}
td.c-idx{color:var(--muted);width:44px}
td.c-sum{font-weight:600}
td.gap{background:var(--gap);color:var(--muted)}
td.zero{color:var(--muted)}
tr.row-group td{font-weight:600;background:rgba(46,117,182,.08)}
tr.row-total td{font-weight:700;background:rgba(255,193,7,.16)}
tr.detail td{text-align:left;background:rgba(46,117,182,.04)}
tr.day-focus td,td.day-focus{outline:2px solid var(--brand-2);outline-offset:-2px}
.detail-inner{display:grid;gap:2px;padding:4px 2px}
.detail-row{display:grid;grid-template-columns:64px 64px 1fr;gap:8px;font-size:12.5px}
.detail-day{color:var(--muted)}
.detail-val{font-weight:600}
.detail-bd{color:var(--ink);opacity:.85}
.exp{border:1px solid var(--line);background:transparent;border-radius:6px;width:22px;height:22px;line-height:1;
  margin-left:8px;cursor:pointer;color:var(--muted)}
.muted{color:var(--muted);font-weight:400}
.rank{display:grid;gap:6px}
.rank-row{display:grid;grid-template-columns:150px 1fr 96px;gap:10px;align-items:center;font-size:13px}
.rank-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank-bar{height:14px;border-radius:7px;background:var(--gap);position:relative;overflow:hidden}
.rank-bar i{position:absolute;inset:0 auto 0 0;border-radius:7px}
.rank-val{text-align:right;font-variant-numeric:tabular-nums}
.rank-val .up{color:var(--up)}
.rank-val .down{color:var(--down)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:4px 12px;font-size:13px}
.chip b{font-variant-numeric:tabular-nums}
.tip{position:absolute;pointer-events:none;background:var(--card);color:var(--ink);border:1px solid var(--line);
  border-radius:8px;padding:8px 10px;font-size:12px;box-shadow:0 4px 14px rgba(0,0,0,.18);z-index:20;min-width:150px;display:none}
.tip-title{font-weight:700;margin-bottom:4px}
.tip-row{display:flex;justify-content:space-between;gap:12px}
.chart-wrap{position:relative}
.notice{background:rgba(255,193,7,.13);border:1px solid rgba(255,193,7,.45);border-radius:10px;padding:10px 14px;font-size:13px;margin-top:12px}
footer.site{color:var(--muted);font-size:12.5px;margin-top:26px;display:flex;flex-wrap:wrap;gap:6px;justify-content:space-between;align-items:center}
footer.site .pw{color:var(--brand);font-weight:600}
.portal-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
.pcard{display:block;text-decoration:none;color:inherit;background:var(--card);border-radius:12px;padding:18px;
  box-shadow:var(--shadow);border-top:4px solid var(--brand-2);transition:transform .12s}
.pcard:hover{transform:translateY(-2px)}
.pcard-title{font-weight:700;color:var(--brand);font-size:16px;margin-bottom:4px}
.pcard-num{font-size:30px;font-weight:700}
.pcard-sub{color:var(--muted);font-size:12.5px}
.btn{border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:8px;padding:6px 12px;
  font:inherit;font-size:13px;cursor:pointer}
.btn:hover{border-color:var(--brand-2)}
.table-scroll{overflow:auto;max-height:70vh;border-radius:8px}
body.fs .wrap{max-width:none}
body.fs .topbar,body.fs footer.site,body.fs .table-scroll{display:none}
body.fs .card{box-shadow:none;border:1px solid var(--line)}
@media (max-width:640px){
  .kpi-value{font-size:24px}
  td.c-name{min-width:150px}
  .detail-row{grid-template-columns:52px 56px 1fr}
  .rank-row{grid-template-columns:1fr 70px}
  .rank-bar{display:none}
}
@media print{
  body{background:#fff}
  .toolbar,.exp,nav.pages,.btn{display:none}
  .table-scroll{max-height:none;overflow:visible}
  .card{box-shadow:none;border:1px solid var(--line);break-inside:avoid}
}
