:root{color-scheme:light;--page:#f9f9f7;--surface-1:#fcfcfb;--text-primary:#0b0b0b;--text-secondary:#52514e;--text-muted:#898781;--grid:#e1e0d9;--baseline:#c3c2b7;--border:rgba(11,11,11,0.1);--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a;--seq-250:#86b6ef;--delta-good:#006300;--delta-bad:#d03b3b;--accent:#2a78d6;--accent-ink:#ffffff;--wash:rgba(11,11,11,0.045);--focus:#2a78d6}:root[data-theme=dark]{color-scheme:dark;--page:#0d0d0d;--surface-1:#1a1a19;--text-primary:#ffffff;--text-secondary:#c3c2b7;--text-muted:#898781;--grid:#2c2c2a;--baseline:#383835;--border:rgba(255,255,255,0.1);--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--seq-250:#184f95;--delta-good:#0ca30c;--delta-bad:#d03b3b;--accent:#3987e5;--accent-ink:#ffffff;--wash:rgba(255,255,255,0.06);--focus:#3987e5}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--page:#0d0d0d;--surface-1:#1a1a19;--text-primary:#ffffff;--text-secondary:#c3c2b7;--text-muted:#898781;--grid:#2c2c2a;--baseline:#383835;--border:rgba(255,255,255,0.1);--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--seq-250:#184f95;--delta-good:#0ca30c;--delta-bad:#d03b3b;--accent:#3987e5;--accent-ink:#ffffff;--wash:rgba(255,255,255,0.06);--focus:#3987e5}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--page);color:var(--text-primary);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.shell{display:flex;min-height:100dvh}.sidebar{width:232px;flex-shrink:0;border-right:1px solid var(--border);background:var(--surface-1);display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100dvh}.brand{display:flex;align-items:center;gap:10px;padding:18px 16px;border-bottom:1px solid var(--border)}.brand-mark{width:28px;height:28px;border-radius:7px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;font-weight:700;font-size:13px}.brand-name{font-weight:650;font-size:14px;letter-spacing:.01em}.brand-sub{font-size:11px;color:var(--text-muted)}.nav{padding:10px 8px;display:flex;flex-direction:column;gap:2px;flex:1 1}.nav-link{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--text-secondary);font-weight:500}.nav-link svg{flex-shrink:0;opacity:.85}.nav-link.active,.nav-link:hover{background:var(--wash);color:var(--text-primary)}.nav-link.active{font-weight:600;box-shadow:inset 2px 0 0 var(--accent)}.sidebar-foot{padding:12px;border-top:1px solid var(--border);justify-content:space-between}.sidebar-foot,.user-chip{display:flex;align-items:center;gap:8px}.user-chip{min-width:0}.user-chip .avatar{width:26px;height:26px;border-radius:50%;background:var(--wash);border:1px solid var(--border);display:grid;place-items:center;font-size:11px;font-weight:650;color:var(--text-secondary)}.user-chip .name{font-size:12.5px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main{flex:1 1;min-width:0;padding:24px 28px 48px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.page-title{font-size:21px;font-weight:650;margin:0;letter-spacing:-.01em}.page-desc{margin:4px 0 0;color:var(--text-secondary);font-size:13px}.range-chip{font-size:12.5px;color:var(--text-secondary);border:1px solid var(--border);padding:6px 10px;border-radius:8px;white-space:nowrap}.card,.range-chip{background:var(--surface-1)}.card{border:1px solid var(--border);border-radius:12px;padding:16px}.card-title{font-size:13px;font-weight:600;color:var(--text-secondary);margin:0 0 2px}.card-sub{font-size:12px;color:var(--text-muted);margin:0 0 10px}.grid{display:grid;grid-gap:14px;gap:14px}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(158px,1fr))}.two-col{grid-template-columns:1fr 1fr}.section{margin-top:14px}@media (max-width:980px){.two-col{grid-template-columns:1fr}}.stat-label{font-size:12.5px;color:var(--text-secondary);margin:0}.stat-value{font-size:26px;font-weight:650;margin:2px 0 0;letter-spacing:-.01em}.stat-delta{font-size:12px;font-weight:600;margin-top:2px}.stat-delta.good{color:var(--delta-good)}.stat-delta.bad{color:var(--delta-bad)}.stat-delta .vs{color:var(--text-muted);font-weight:400}.hero-value{font-size:48px;font-weight:650;letter-spacing:-.02em;margin:2px 0 0;line-height:1.1}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface-1)}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data td,table.data th{padding:9px 12px;text-align:right;white-space:nowrap}table.data td.txt,table.data td:first-child,table.data th.txt,table.data th:first-child{text-align:left}table.data thead th{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:600;border-bottom:1px solid var(--grid);position:-webkit-sticky;position:sticky;top:0;background:var(--surface-1);z-index:1}table.data thead th a{color:inherit;display:inline-flex;align-items:center;gap:4px}table.data thead th a:hover{color:var(--text-primary)}table.data thead th .dir{font-size:9px}table.data tbody td{border-bottom:1px solid var(--grid);color:var(--text-secondary);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}table.data tbody tr:last-child td{border-bottom:none}table.data tbody tr:hover td{background:var(--wash)}table.data td.strong{color:var(--text-primary);font-weight:550}.cell-name{max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}a.row-link:hover{text-decoration:underline;text-underline-offset:2px}.pos{color:var(--delta-good)!important}.neg,.pos{font-weight:550}.neg{color:var(--delta-bad)!important}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.filter-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}.input,.select{background:var(--surface-1);border:1px solid var(--border);color:var(--text-primary);border-radius:8px;padding:7px 10px;font-size:13px;font-family:inherit}.input:hover,.select:hover{border-color:var(--baseline)}.input::placeholder{color:var(--text-muted)}.btn{background:var(--surface-1);border:1px solid var(--border);color:var(--text-primary);border-radius:8px;padding:7px 12px;font-size:13px;font-weight:550;font-family:inherit;cursor:pointer}.btn:hover{background:var(--wash)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{filter:brightness(1.06)}.btn.ghost{border-color:transparent;color:var(--text-secondary)}.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface-1)}.seg a,.seg button{padding:6px 11px;font-size:12.5px;color:var(--text-secondary);border:none;background:none;cursor:pointer;font-family:inherit}.seg .on,.seg a:hover,.seg button:hover{background:var(--wash)}.seg .on{color:var(--text-primary);font-weight:600}.spacer{flex:1 1}.pager{display:flex;align-items:center;gap:8px;justify-content:space-between;margin-top:12px;flex-wrap:wrap}.pager .info{color:var(--text-muted);font-size:12.5px}.pager-nav{display:flex;gap:6px}.pager-nav a,.pager-nav span.pg{padding:5px 10px;border:1px solid var(--border);border-radius:7px;font-size:12.5px;color:var(--text-secondary);background:var(--surface-1)}.pager-nav a:hover{background:var(--wash);color:var(--text-primary)}.pager-nav span.pg.disabled{opacity:.4}.pager-nav span.pg.current{color:var(--text-primary);font-weight:600}.login-wrap{min-height:100dvh;display:grid;place-items:center;padding:24px;background:radial-gradient(1200px 600px at 20% -10%,rgba(42,120,214,.09),transparent 60%),radial-gradient(900px 500px at 110% 110%,rgba(27,175,122,.07),transparent 60%),var(--page)}.login-card{width:100%;max-width:380px;padding:28px}.login-card h1{font-size:19px;margin:14px 0 2px}.login-card .sub{color:var(--text-secondary);font-size:13px;margin:0 0 20px}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field label{font-size:12.5px;font-weight:600;color:var(--text-secondary)}.field .input{padding:9px 11px}.form-error{color:var(--delta-bad);font-size:12.5px;margin:0 0 12px;display:flex;align-items:center;gap:6px}.chart-box{width:100%;height:260px}.chart-box.tall{height:300px}.legend-row{display:flex;gap:16px;flex-wrap:wrap;margin:0 0 8px}.legend-item{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-secondary)}.legend-swatch{width:12px;height:12px;border-radius:3px}.legend-line{width:14px;height:2px;border-radius:1px}.viz-tooltip{background:var(--surface-1);border:1px solid var(--border);border-radius:10px;padding:10px 12px;box-shadow:0 6px 24px rgba(0,0,0,.14);font-size:12.5px;min-width:170px}.viz-tooltip .tt-title{font-weight:600;color:var(--text-secondary);margin-bottom:6px;font-size:12px}.viz-tooltip .tt-row{display:flex;align-items:center;gap:8px;padding:2px 0}.viz-tooltip .tt-key{width:14px;height:2px;border-radius:1px;flex-shrink:0}.viz-tooltip .tt-name{color:var(--text-secondary);flex:1 1}.viz-tooltip .tt-val{font-weight:650;color:var(--text-primary);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.kv{display:grid;grid-template-columns:minmax(140px,max-content) 1fr;grid-gap:6px 18px;gap:6px 18px;font-size:13px}.kv dt{color:var(--text-muted)}.kv dd{margin:0;color:var(--text-primary);word-break:break-all}.pill{display:inline-block;padding:2px 8px;border-radius:999px;border:1px solid var(--border);font-size:11.5px;color:var(--text-secondary);background:var(--wash)}.empty{padding:40px;text-align:center;color:var(--text-muted)}@media (max-width:860px){.shell{flex-direction:column}.sidebar{width:100%;height:auto;position:static;flex-direction:row;align-items:center;border-right:none;border-bottom:1px solid var(--border);overflow-x:auto}.brand{border-bottom:none;flex-shrink:0}.nav{flex-direction:row;padding:8px}.nav-link{white-space:nowrap}.nav-link.active{box-shadow:inset 0 -2px 0 var(--accent)}.sidebar-foot{border-top:none;flex-shrink:0}.user-chip .name{display:none}.main{padding:16px 14px 40px}.hero-value{font-size:38px}}