:root{--page:#f9f9f7;--surface-1:#fcfcfb;--text-primary:#0b0b0b;--text-secondary:#52514e;--text-muted:#898781;--gridline:#e1e0d9;--baseline:#c3c2b7;--border:rgba(11,11,11,0.1);--accent:#2a78d6;--series-1:#2a78d6;--series-2:#1baf7a;--series-3:#eda100;--series-4:#008300;--series-5:#4a3aa7;--series-6:#e34948;--series-7:#e87ba4;--series-8:#eb6834;--state-available:#b7d3f6;--state-booked:#2a78d6;--state-elapsed:#e1e0d9;--state-never:#a5a39b;--state-unbookable:#fab219;--seq-100:#cde2fb;--seq-200:#9ec5f4;--seq-300:#6da7ec;--seq-400:#3987e5;--seq-500:#256abf;--seq-600:#184f95;--seq-700:#0d366b;--seq-ink-100:#0b0b0b;--seq-ink-200:#0b0b0b;--seq-ink-300:#0b0b0b;--seq-ink-400:#ffffff;--seq-ink-500:#ffffff;--seq-ink-600:#ffffff;--seq-ink-700:#ffffff}@media (prefers-color-scheme:dark){:root{--page:#0d0d0d;--surface-1:#1a1a19;--text-primary:#ffffff;--text-secondary:#c3c2b7;--text-muted:#898781;--gridline:#2c2c2a;--baseline:#383835;--border:rgba(255,255,255,0.1);--accent:#3987e5;--series-1:#3987e5;--series-2:#199e70;--series-3:#c98500;--series-4:#008300;--series-5:#9085e9;--series-6:#e66767;--series-7:#d55181;--series-8:#d95926;--state-available:#184f95;--state-booked:#3987e5;--state-elapsed:#2c2c2a;--state-never:#4c4c49;--state-unbookable:#c98500;--seq-100:#14304f;--seq-200:#104281;--seq-300:#184f95;--seq-400:#256abf;--seq-500:#3987e5;--seq-600:#6da7ec;--seq-700:#b7d3f6;--seq-ink-100:#ffffff;--seq-ink-200:#ffffff;--seq-ink-300:#ffffff;--seq-ink-400:#ffffff;--seq-ink-500:#ffffff;--seq-ink-600:#0b0b0b;--seq-ink-700:#0b0b0b}}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--page);color:var(--text-primary);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;line-height:1.45}a{color:var(--accent)}.shell{max-width:1180px;margin:0 auto;padding:20px 20px 64px}.topbar{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:4px}.topbar h1{font-size:19px;font-weight:650;margin:0}.topbar .meta{color:var(--text-muted);font-size:12.5px}.filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:14px 0 18px}.filter-row .spacer{flex:1 1}.chip{border:1px solid var(--border);background:var(--surface-1);color:var(--text-secondary);border-radius:8px;padding:6px 12px;font-size:13px;cursor:pointer;font-family:inherit}.chip:hover{border-color:var(--baseline)}.chip.selected{color:var(--text-primary);border-color:var(--accent);font-weight:600}input[type=date],select{border:1px solid var(--border);background:var(--surface-1);color:var(--text-primary);border-radius:8px;padding:5px 10px;font-size:13px;font-family:inherit}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:12px;padding:16px 18px;margin-bottom:16px}.card h2{font-size:14px;font-weight:650;margin:0 0 2px}.card .sub{color:var(--text-muted);font-size:12.5px;margin:0 0 12px}.kpi-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));grid-gap:10px;gap:10px;margin-bottom:16px}.tile{background:var(--surface-1);border:1px solid var(--border);border-radius:12px;padding:12px 14px}.tile.emph{border-color:var(--accent)}.tile .label{display:flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile .swatch{width:8px;height:8px;border-radius:50%;flex:none}.tile .value{font-size:26px;font-weight:650;margin-top:4px}.tile .detail{color:var(--text-muted);font-size:12px;margin-top:2px}.legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-size:12.5px;color:var(--text-secondary)}.legend .key{display:inline-flex;align-items:center;gap:6px}.legend .key .line{width:14px;height:2px;border-radius:1px}.legend .key .rect{width:11px;height:11px;border-radius:3px}.chart-wrap{position:relative;overflow-x:auto}.viz-tooltip{position:absolute;pointer-events:none;background:var(--surface-1);border:1px solid var(--border);box-shadow:0 4px 14px rgba(0,0,0,.14);border-radius:8px;padding:8px 10px;font-size:12.5px;z-index:10;min-width:130px}.viz-tooltip .tt-title{color:var(--text-muted);font-size:11.5px;margin-bottom:5px}.viz-tooltip .tt-row{display:flex;align-items:center;gap:7px;margin-top:2px}.viz-tooltip .tt-row .k{width:12px;height:2px;border-radius:1px;flex:none}.viz-tooltip .tt-row .v{font-weight:650;margin-left:auto;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.viz-tooltip .tt-row .n{color:var(--text-secondary)}table.data{width:100%;border-collapse:collapse;font-size:12.5px}table.data th{text-align:left;color:var(--text-muted);font-weight:500}table.data td,table.data th{border-bottom:1px solid var(--gridline);padding:5px 8px}table.data td{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}details.table-view summary{cursor:pointer;color:var(--text-muted);font-size:12.5px;margin-top:10px}.login-wrap{min-height:100dvh;display:grid;place-items:center;padding:20px}.login-card{background:var(--surface-1);border:1px solid var(--border);border-radius:14px;padding:28px;width:100%;max-width:360px}.login-card h1{font-size:17px;margin:0 0 4px}.login-card p{color:var(--text-muted);font-size:13px;margin:0 0 18px}.login-card input[type=password]{width:100%;border:1px solid var(--border);background:var(--page);color:var(--text-primary);border-radius:8px;padding:10px 12px;font-size:14px;font-family:inherit;margin-bottom:12px}.login-card button{width:100%;background:var(--accent);color:#fff;border:none;border-radius:8px;padding:10px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}.login-error{color:#d03b3b;font-size:13px;margin-top:10px}.loading{color:var(--text-muted);padding:40px 0;text-align:center}