.app{max-width:1240px;margin:0 auto;padding:0 16px 40px}.loading{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--text-dim);font-size:15px}.loading.error{color:var(--dn)}.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--border);margin-bottom:16px;position:sticky;top:0;background:var(--bg);z-index:10}.brand{display:flex;align-items:center;gap:10px}.brand-icon{font-size:20px}.brand h1{font-size:16px;font-weight:600;letter-spacing:.02em}.meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-dim)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-fresh{background:var(--up);box-shadow:0 0 6px var(--up);animation:pulse 2s infinite}.dot-stale{background:#d9a441}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.tabs{display:flex;gap:6px;margin-bottom:18px;flex-wrap:wrap}.tabs button{font-size:13px;padding:6px 14px;border-radius:8px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-dim);cursor:pointer;transition:all .15s}.tabs button:hover{background:var(--bg-hover);color:var(--text)}.tabs button.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:500}.metrics-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:16px}.metric{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.metric-label{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.metric-value{font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}.metric-sub{font-size:12px;color:var(--text-faint);margin-top:2px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}@media(max-width:860px){.grid2{grid-template-columns:1fr}}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;overflow-x:auto}.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.card-title{font-size:13px;font-weight:600}.card-age{font-size:11px;color:var(--text-faint)}.card-cadence{font-size:11px;color:var(--text-faint);margin:-4px 0 10px}.filter-input{width:100%;box-sizing:border-box;margin-bottom:10px;padding:7px 10px;font-size:13px;border:1px solid var(--border, #2a2a3a);border-radius:6px;background:var(--bg-input, rgba(255,255,255,.04));color:inherit}.filter-input::placeholder{color:var(--text-faint)}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{font-size:11px;font-weight:500;color:var(--text-dim);text-align:left;padding:5px 8px;border-bottom:1px solid var(--border)}.tbl th.r{text-align:right}.tbl td{padding:7px 8px;border-bottom:1px solid var(--border)}.tbl td.r{text-align:right}.tbl tr:last-child td{border-bottom:none}.tbl tbody tr:hover td{background:var(--bg-hover)}.dim{color:var(--text-faint);font-size:.92em}.pct.up{color:var(--up)}.pct.dn{color:var(--dn)}.pct.neutral{color:var(--neutral)}code{background:var(--bg);padding:1px 5px;border-radius:4px;color:var(--text-dim)}.fg-wrap{margin-bottom:14px}.fg-head{display:flex;justify-content:space-between;font-size:12px;color:var(--text-dim);margin-bottom:6px}.fg-bar{height:8px;border-radius:4px;background:linear-gradient(90deg,var(--dn),#d9a441,var(--up));position:relative}.fg-ptr{width:12px;height:12px;border-radius:50%;background:#fff;border:2px solid var(--bg);position:absolute;top:-2px;transform:translate(-50%)}.mini-metrics{display:flex;gap:16px}.mini-metrics>div{display:flex;flex-direction:column;gap:2px}.mini-metrics strong{font-size:16px}.footer{margin-top:24px;padding-top:16px;border-top:1px solid var(--border);font-size:11px;color:var(--text-faint);text-align:center}.energy-card{margin-bottom:12px}.energy-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.energy-item{background:var(--bg-hover);border-radius:var(--border-radius-md, 8px);padding:10px 12px;border:1px solid var(--border)}.energy-name{font-size:12px;color:var(--text-dim);margin-bottom:4px}.energy-price{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums}.energy-chg{font-size:12px;margin-top:2px;font-variant-numeric:tabular-nums}.energy-chg.up{color:var(--up)}.energy-chg.dn{color:var(--dn)}.energy-chg.neutral{color:var(--neutral)}.indices-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.index-card{background:var(--bg-hover);border-radius:var(--radius);padding:14px 12px;border:1px solid var(--border);display:flex;flex-direction:column;gap:4px;text-align:center}.index-name{font-size:12px;font-weight:600;color:var(--text)}.index-symbol{font-size:10px;color:var(--text-faint)}.index-value{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text)}.index-change{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}.index-change.up{color:var(--up)}.index-change.dn{color:var(--dn)}.sparkline{display:block;margin:4px auto}.sparkline polyline{stroke:var(--neutral)}.sparkline.up polyline{stroke:var(--up)}.sparkline.dn polyline{stroke:var(--dn)}.sparkline-empty{display:flex;align-items:center;justify-content:center;margin:4px auto}.range-toggle{display:flex;gap:4px;margin-bottom:10px}.range-toggle button{font-size:11px;padding:3px 10px;border-radius:6px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-dim);cursor:pointer;transition:all .15s}.range-toggle button:hover{background:var(--bg-hover);color:var(--text)}.range-toggle button.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:500}.change-row{display:flex;justify-content:space-between;gap:6px;font-size:10px;margin-top:4px}.change-row .dim{margin-right:2px}.asset-name{font:inherit;color:inherit;background:none;border:none;padding:0;margin:0;cursor:pointer;text-align:left;display:inline}.asset-name:hover{color:var(--accent);text-decoration:underline}.asset-name:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}.chart-popup-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:200;padding:16px}.chart-popup{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px 18px;width:100%;max-width:520px;box-shadow:0 12px 40px #00000080}.chart-popup-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.chart-popup-title{font-size:1.05rem;font-weight:600;color:var(--text)}.chart-popup-sym{font-size:.8rem;margin-top:2px}.chart-popup-close{background:none;border:none;color:var(--text-dim);font-size:1.5rem;line-height:1;cursor:pointer;padding:0 4px}.chart-popup-close:hover{color:var(--text)}.chart-popup-meta{display:flex;align-items:baseline;gap:10px;margin:6px 0 12px}.chart-popup-val{font-size:1.3rem;font-weight:600;color:var(--text)}.chart-popup-range{margin-top:8px;font-size:.8rem}.chart-empty{padding:40px 8px;text-align:center}.chart{display:block;margin-top:4px}.chart .chart-line{stroke:var(--neutral);stroke-width:2;vector-effect:non-scaling-stroke}.chart.up .chart-line{stroke:var(--up)}.chart.dn .chart-line{stroke:var(--dn)}.chart .chart-area{fill:var(--neutral);opacity:.1}.chart.up .chart-area{fill:var(--up)}.chart.dn .chart-area{fill:var(--dn)}.chart-grid{stroke:var(--border);stroke-width:1;vector-effect:non-scaling-stroke}.chart-axis-label{fill:var(--text-dim);font-size:11px;font-family:inherit}:root{--bg: #0f1115;--bg-card: #171a21;--bg-hover: #1e2229;--border: #262b34;--text: #e4e7ec;--text-dim: #9aa3b2;--text-faint: #5f6878;--up: #2ecc8f;--dn: #ff5470;--neutral: #7a8290;--accent: #4a9eff;--radius: 10px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-size:14px}code{font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:.9em}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}.tabular{font-variant-numeric:tabular-nums}
