:root{--bg:#f6f7f9;--card:#fff;--ink:#111827;--mut:#6b7280;--line:#e5e7eb;--pos:#047857;--neg:#b91c1c;--acc:#2563eb}
*{box-sizing:border-box}body{margin:0;font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}
header{background:#111827;color:#fff;padding:10px 16px;display:flex;gap:16px;align-items:center;flex-wrap:wrap;position:sticky;top:0;z-index:5}
header b{font-size:15px}header nav{display:flex;gap:4px;flex-wrap:wrap}header a{color:#cbd5e1;text-decoration:none;padding:4px 8px;border-radius:6px}
header a.on,header a:hover{background:#1f2937;color:#fff}header .r{margin-left:auto;font-size:12px;color:#9ca3af}
main{max-width:1150px;margin:0 auto;padding:16px}
h1{font-size:20px;margin:4px 0 12px}h2{font-size:16px;margin:18px 0 8px}h3{font-size:14px;margin:12px 0 6px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;overflow-x:auto}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:8px;margin:8px 0}
.kpi{background:var(--bg);border-radius:8px;padding:6px 8px}.kpi span{display:block;font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.03em}.kpi b{font-size:17px}
table{border-collapse:collapse;width:100%;font-size:13px}th,td{padding:5px 6px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
th{font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.03em;font-weight:600}td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
tr:hover td{background:#fafafa}a{color:var(--acc)}
.pos{color:var(--pos)}.neg{color:var(--neg)}.flat{color:var(--mut)}.muted{color:var(--mut)}
.badge{display:inline-block;padding:1px 7px;border-radius:999px;font-size:11px;background:#e5e7eb;color:#374151}
.badge.ok{background:#d1fae5;color:#065f46}.badge.bad{background:#fee2e2;color:#991b1b}.badge.warn{background:#fef3c7;color:#92400e}.badge.demo{background:#dbeafe;color:#1e40af}
.note{background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:8px 12px;margin:10px 0;font-size:13px}
.chart{width:100%;height:auto;background:#fff}.chart .zero{stroke:#9ca3af;stroke-dasharray:3 3}.chart .ax{font-size:10px;fill:#6b7280}.chart .lg{font-size:12px}
.chart .wick{stroke:#6b7280;stroke-width:1}.chart .up{fill:#10b981}.chart .dn{fill:#ef4444}.chart .mark{stroke:#a78bfa;stroke-dasharray:2 2}
.chart .lvl{stroke-width:1.2;stroke-dasharray:5 3}.chart .lvl.e{stroke:#2563eb}.chart .lvl.s{stroke:#dc2626}.chart .lvl.p{stroke:#059669}.chart .lvl.x{stroke:#111827}
.chart text.e{fill:#2563eb}.chart text.s{fill:#dc2626}.chart text.p{fill:#059669}
form.f{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:6px 0 10px}select,input,button{font:inherit;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:#fff}
button{background:var(--acc);color:#fff;border:0;cursor:pointer}
.login{max-width:340px;margin:12vh auto;background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px}.login input{width:100%;margin:8px 0}.login button{width:100%}
dl.kv{display:grid;grid-template-columns:max-content 1fr;gap:3px 14px;margin:0}dl.kv dt{color:var(--mut)}dl.kv dd{margin:0;font-variant-numeric:tabular-nums}
@media(max-width:600px){main{padding:10px}th,td{padding:4px}.hide-sm{display:none}h1{font-size:18px}.kpi b{font-size:15px}}
