:root{
  --bg:#f5f6f8;--panel:#fff;--ink:#16202c;--muted:#5d6b7a;--line:#dde2e8;
  --brand:#1f4fd1;--brand-ink:#fff;--brand-soft:#e7eefc;--ok:#13824b;--ok-soft:#e3f4ea;
  --warn:#a35b00;--warn-soft:#fdf0dc;--bad:#b42318;--bad-soft:#fde8e6;
  --t1:#1f4fd1;--t2:#d9480f;--t3:#2b8a3e;--t4:#9c36b5;--t5:#0b7285;--t6:#e8590c;--t7:#5c940d;--t8:#c2255c;
  --r:10px;--shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0f141a;--panel:#171e27;--ink:#e6ebf1;--muted:#98a6b5;--line:#2a3441;--brand:#6c93ff;--brand-ink:#0b1220;--brand-soft:#1b2640;
  --ok:#4cc38a;--ok-soft:#14291e;--warn:#f0a43a;--warn-soft:#2e2312;--bad:#ff6b5e;--bad-soft:#331614;--shadow:none}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 "Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--brand)}
header.top{background:var(--panel);border-bottom:1px solid var(--line);padding:10px 16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
header.top .logo{font-weight:800;letter-spacing:-.02em;font-size:18px;display:flex;align-items:center;gap:8px}
header.top .logo i{width:26px;height:26px;border-radius:7px;background:var(--brand);display:inline-grid;place-items:center;color:var(--brand-ink);font-style:normal;font-size:14px}
header.top .sp{flex:1}
.wrap{max-width:1180px;margin:0 auto;padding:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--shadow);margin-bottom:14px}
.card h2{margin:0 0 10px;font-size:17px}.card h3{margin:14px 0 8px;font-size:15px}
.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.g4{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
label{display:block;font-size:13px;color:var(--muted);margin:8px 0 4px}
input,select,textarea{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);font:inherit}
textarea{min-height:70px}
button,.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 14px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font:inherit;font-weight:600;cursor:pointer;text-decoration:none}
button.pri,.btn.pri{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
button.ok{background:var(--ok);color:#fff;border-color:var(--ok)}
button.bad{background:var(--bad);color:#fff;border-color:var(--bad)}
button:disabled{opacity:.5;cursor:not-allowed}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.muted{color:var(--muted)}.small{font-size:13px}
.pill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:600;background:var(--brand-soft);color:var(--brand)}
.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}
.kpi{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--panel)}
.kpi .v{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}.kpi .l{font-size:12px;color:var(--muted)}
table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
th,td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:right;font-size:13.5px}
th:first-child,td:first-child{text-align:left}th{color:var(--muted);font-weight:600;font-size:12.5px}
.tablewrap{overflow-x:auto}
.event{border-left:4px solid var(--warn);background:var(--warn-soft);padding:10px 12px;border-radius:6px;margin:8px 0}
.event b{display:block}
.msg{padding:10px 12px;border-radius:8px;margin:8px 0;background:var(--brand-soft)}
.msg.err{background:var(--bad-soft);color:var(--bad)}
.hide{display:none!important}
.big{font-size:28px;font-weight:800;letter-spacing:.06em}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:middle}
.tags button{padding:4px 10px;font-size:12.5px;font-weight:500}.tags button.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
canvas{max-width:100%}
.hint{font-size:12.5px;color:var(--muted);margin-top:3px}
@media print{header.top,.noprint{display:none!important}body{background:#fff}.card{box-shadow:none;break-inside:avoid}}
.kpi .v.bad{color:var(--bad)}
.chart{position:relative;height:260px;width:100%}
