:root{--page:#f9f9f7;--surface:#fcfcfb;--ink:#0b0b0b;--ink-secondary:#52514e;--muted:#898781;--hairline:#e1e0d9;--border:#0b0b0b1a;--accent:#2a78d6;--accent-wash:#2a78d61a;--error:#d03b3b;--error-wash:#d03b3b14;--warning-ink:#7a5200;--warning-wash:#fab21924}@media (prefers-color-scheme:dark){:root{--page:#0d0d0d;--surface:#1a1a19;--ink:#fff;--ink-secondary:#c3c2b7;--muted:#898781;--hairline:#2c2c2a;--border:#ffffff1a;--accent:#3987e5;--accent-wash:#3987e529;--error:#e66767;--error-wash:#d03b3b29;--warning-ink:#fab219;--warning-wash:#fab2191a}}*{box-sizing:border-box}body{background:var(--page);color:var(--ink);margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;line-height:1.5}.app{flex-direction:column;gap:16px;max-width:2400px;margin:0 auto;padding:24px 20px 48px;display:flex}.app-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.app-header h1{margin:0;font-size:22px;font-weight:650}.app-subtitle{color:var(--muted);margin:2px 0 0;font-size:13px}.refresh-info{align-items:center;gap:12px;display:flex}.refresh-time{color:var(--muted);font-size:12px}.button{border:1px solid var(--border);background:var(--surface);color:var(--ink);font:inherit;cursor:pointer;border-radius:8px;padding:6px 14px;font-size:13px}.button:hover:not(:disabled){background:var(--accent-wash)}.button:disabled{opacity:.6;cursor:default}.chip{border:1px solid var(--border);color:var(--ink-secondary);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-size:13px;display:inline-flex}.chip:hover{background:var(--accent-wash)}.chip--active{background:var(--accent-wash);border-color:var(--accent);color:var(--ink)}.chip--ghost{border-style:dashed}.chip-dot{border-radius:50%;flex:none;width:9px;height:9px}.chip-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}select,input[type=datetime-local]{border:1px solid var(--border);background:var(--surface);color:var(--ink);font:inherit;border-radius:8px;padding:5px 10px;font-size:13px}.filter-bar{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;gap:20px 32px;padding:14px 18px;display:flex}.filter-group{flex-direction:column;gap:7px;display:flex}.filter-group--wide{flex:100%}.filter-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:600}.filter-sublabel{color:var(--muted);margin-right:6px;font-size:12px}.range-custom{flex-wrap:wrap;gap:14px;display:flex}.band-toggle{color:var(--ink-secondary);cursor:pointer;align-items:center;gap:6px;margin-left:6px;font-size:13px;display:inline-flex}.band-toggle--disabled{opacity:.5;cursor:default}.banner{border-radius:10px;padding:10px 14px;font-size:13px}.banner--error{background:var(--error-wash);color:var(--error);border:1px solid var(--error)}.banner--warning{background:var(--warning-wash);color:var(--warning-ink);border:1px solid var(--border)}.empty-state{text-align:center;color:var(--muted);margin:0;padding:56px 0}.view-toggle{gap:8px;display:flex}.chart-card,.table-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 8px}.chart-card{transition:opacity .25s;position:relative}.chart-card.is-refreshing{opacity:.55}.chart-fullscreen-toggle{z-index:2;padding:4px 10px;font-size:12px;position:absolute;top:10px;right:12px}.chart-card:fullscreen{background:var(--page);border:none;border-radius:0;padding:16px 24px;overflow:hidden}.table-card{padding:0;overflow:hidden}.table-note{color:var(--muted);border-bottom:1px solid var(--hairline);margin:0;padding:10px 16px;font-size:12px}.table-scroll{max-height:70vh;overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}thead th{background:var(--surface);color:var(--muted);letter-spacing:.05em;text-transform:uppercase;text-align:left;border-bottom:1px solid var(--hairline);padding:8px 12px;font-size:11px;font-weight:600;position:sticky;top:0}thead tr:nth-child(2) th{top:33px}tbody td{border-bottom:1px solid var(--hairline);white-space:nowrap;padding:6px 12px}tbody tr:last-child td{border-bottom:none}.table-sensor{color:var(--ink-secondary)}.table-num{text-align:right;font-variant-numeric:tabular-nums}
