:root{--bg: #0f1115;--surface: #171a21;--surface-alt: #1e222b;--border: #2a2f3a;--text: #e6e8ec;--text-dim: #9aa1ad;--primary: #5b8cff;--success: #3fb984;--warning: #e0a33e;--danger: #e05c5c;--radius: 8px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.layout{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:16px 0}.sidebar h1{font-size:15px;padding:0 16px 12px;margin:0;letter-spacing:.02em}.sidebar nav a{display:block;padding:8px 16px;color:var(--text-dim);border-left:2px solid transparent}.sidebar nav a:hover{background:var(--surface-alt);text-decoration:none}.sidebar nav a.active{color:var(--text);border-left-color:var(--primary);background:var(--surface-alt)}.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;border-bottom:1px solid var(--border);background:var(--surface)}.content{padding:24px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.metric-label{color:var(--text-dim);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.metric-value{font-size:26px;font-weight:650;margin-top:4px}.metric-note{color:var(--text-dim);font-size:12px;margin-top:4px}.badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;border:1px solid currentColor}.badge-success{color:var(--success)}.badge-warning{color:var(--warning)}.badge-danger{color:var(--danger)}.badge-muted{color:var(--text-dim)}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius)}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}th{color:var(--text-dim);font-weight:600;font-size:12px;background:var(--surface-alt)}tbody tr:hover{background:var(--surface-alt)}input,select,button{font:inherit;color:var(--text);background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius);padding:7px 10px}button{cursor:pointer}button.primary{background:var(--primary);border-color:var(--primary);color:#0b0d11;font-weight:600}button:disabled{opacity:.5;cursor:not-allowed}.state{padding:32px;text-align:center;color:var(--text-dim)}.error{color:var(--danger)}.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.section{font-size:15px;margin:24px 0 8px}.chart-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(420px,1fr))}.chart-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.chart{width:100%;height:auto;margin-top:8px}line.chart-grid{stroke:var(--border);stroke-dasharray:3 3}.chart-axis-line{stroke:var(--border)}.chart-axis{fill:var(--text-dim);font-size:10px}.chart-bar{fill:var(--primary)}.chart-bar-partial{fill:var(--warning)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:grid;place-items:center;z-index:10}.dialog{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;width:min(420px,90vw)}@media(max-width:900px){.layout{grid-template-columns:1fr}.sidebar{display:flex;overflow-x:auto;border-right:none;border-bottom:1px solid var(--border)}.sidebar nav{display:flex}}
