:root{--bg: #0b0f17;--surface: #131a26;--surface-2: #1a2333;--border: #26324a;--grid: #1e2940;--hover: rgba(255, 255, 255, .04);--text: #e8edf5;--muted: #94a3b8;--gain: #34d399;--loss: #f87171;--accent: #3b82f6;color-scheme:dark}@media(prefers-color-scheme:light){:root{--bg: #f5f7fb;--surface: #ffffff;--surface-2: #f0f3f9;--border: #e2e8f0;--grid: #eaeef5;--hover: rgba(0, 0, 0, .03);--text: #0f172a;--muted: #64748b;--gain: #059669;--loss: #dc2626;color-scheme:light}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}.app{max-width:1120px;margin:0 auto;padding:28px 20px 60px;display:flex;flex-direction:column;gap:18px}.app-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.app-head h1{margin:0;font-size:24px;letter-spacing:-.01em}.head-right{display:flex;align-items:center;gap:16px}.head-total{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}.head-total-value{font-size:20px;font-weight:700}.refresh{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer}.refresh:disabled{opacity:.6;cursor:default}.muted{color:var(--muted)}.small{font-size:12.5px}.gain{color:var(--gain)}.loss{color:var(--loss)}h2{margin:0 0 2px;font-size:15px;font-weight:600}.state{padding:40px;text-align:center;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:12px}.state.error{color:var(--loss)}.banner{display:flex;align-items:center;gap:10px;background:color-mix(in srgb,var(--loss) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--loss) 40%,var(--border));border-radius:10px;padding:10px 14px;font-size:13.5px}.banner-dot{width:9px;height:9px;border-radius:50%;background:var(--loss);flex:none}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px}.kpi-label{color:var(--muted);font-size:12.5px;margin-bottom:6px}.kpi-value{font-size:22px;font-weight:700;letter-spacing:-.01em}.kpi-value.neutral{color:var(--text)}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:18px}.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:4px}.chart-summary{display:flex;align-items:baseline;gap:12px;margin:8px 0 6px}.chart-big{font-size:26px;font-weight:700}.range-group{display:flex;gap:4px;background:var(--surface-2);border-radius:8px;padding:3px}.range{background:transparent;border:none;color:var(--muted);font-size:12.5px;font-weight:600;padding:6px 10px;border-radius:6px;cursor:pointer}.range.active{background:var(--accent);color:#fff}.alloc-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:14px}.legend{display:flex;gap:16px;justify-content:center;margin-top:6px}.legend-item{display:flex;align-items:center;gap:6px;font-size:13px}.swatch{width:12px;height:12px;border-radius:3px}.wbars{display:flex;flex-direction:column;gap:9px;margin-top:4px}.wbar-row{display:grid;grid-template-columns:64px 1fr 48px;align-items:center;gap:10px;font-size:13px}.wbar-label{color:var(--muted);font-weight:600}.wbar-track{background:var(--surface-2);border-radius:5px;height:12px;overflow:hidden}.wbar-fill{height:100%;border-radius:5px}.wbar-value{text-align:right;color:var(--muted)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13.5px}th,td{padding:9px 10px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}td.num,th.num{text-align:right}.th-btn{background:none;border:none;color:var(--muted);font-weight:600;font-size:12.5px;cursor:pointer;padding:0}tbody tr:hover{background:var(--hover)}.stale-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--loss);margin-left:6px;vertical-align:middle}.app-foot{text-align:center;padding-top:6px}@media(max-width:720px){.kpis{grid-template-columns:repeat(2,1fr)}.alloc-grid{grid-template-columns:1fr}}
