:root{--bg:#0d1014;--text:#eef1f4;--text-2:#9aa3ad;--text-3:#7d8690;--text-4:#6c757f;--value:#e3e7eb;--status:#c4cbd2;--glass:#0d1014b8;--glass-border:#ffffff12;--button-border:#ffffff24;--hover:#ffffff14;--accent:#5fd6ff;--mono:"Geist Mono", ui-monospace, monospace}html,body,#root{background:var(--bg);height:100%;margin:0;overflow:hidden}button{font:inherit;color:inherit}.app{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:Geist,system-ui,sans-serif;position:fixed;inset:0;overflow:hidden}.view,.stage{position:absolute;inset:0}.stage canvas{touch-action:none;outline:none;width:100%;height:100%;display:block}.labels{pointer-events:none;position:absolute;inset:0;overflow:hidden}.label-anchor{opacity:0;will-change:transform;transition:opacity .5s;position:absolute;top:0;left:0}.label{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:auto;cursor:pointer;white-space:nowrap;background:#0d1014cc;border:1px solid #ffffff1a;border-radius:999px;align-items:center;gap:9px;padding:7px 13px 7px 11px;display:flex;position:absolute;bottom:4px;left:0;transform:translate(-50%)}.label-dot{border-radius:50%;width:8px;height:8px}.label-value{font-variant-numeric:tabular-nums;font-size:16px;font-weight:500}.label-unit{color:var(--text-2);margin-left:2px;font-size:11px}.label-short{color:var(--text-2);font-size:12px}.header{pointer-events:none;flex-direction:column;gap:4px;display:flex;position:absolute;top:24px;left:28px}.eyebrow{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--text-3);font-size:11px}.clock{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:40px;font-weight:300}.subline{color:var(--text-2);font-size:13px}.pill-button{pointer-events:auto;cursor:pointer;background:#0d1014b3;border:1px solid #ffffff1f;border-radius:999px;align-self:flex-start;align-items:center;gap:8px;margin-top:14px;padding:8px 14px;font-size:13px;display:flex}.pill-button:hover{background:var(--hover)}.header-actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.header-actions .pill-button{align-self:auto;margin-top:0}.metric-switch{flex-direction:column;align-items:center;gap:12px;display:flex;position:absolute;top:24px;left:50%;transform:translate(-50%)}.segmented{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0d1014bf;border:1px solid #ffffff14;border-radius:999px;gap:2px;padding:3px;display:flex}.segmented button{cursor:pointer;color:var(--text-2);background:0 0;border:none;border-radius:999px;padding:8px 18px;font-size:13px;font-weight:500;transition:background .2s,color .2s}.segmented button.active{background:var(--text);color:var(--bg)}.legend{font-family:var(--mono);color:var(--text-3);align-items:center;gap:10px;font-size:10px;display:flex}.legend-bar{border-radius:2px;width:180px;height:4px}.cards{scrollbar-width:none;flex-direction:column;gap:10px;width:min(300px,38vw);display:flex;position:absolute;top:24px;bottom:150px;right:24px;overflow:hidden auto}.cards::-webkit-scrollbar{display:none}.card{cursor:pointer;background:var(--glass);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:14px;flex-direction:column;gap:10px;padding:16px 16px 12px;transition:border-color .3s,background .3s;display:flex}.card.selected{background:#161b21db}.card-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.card-name{font-size:14px;font-weight:500}.card-meta{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-4);font-size:10px}.card-reading{justify-content:space-between;align-items:flex-end;gap:8px;display:flex}.card-value-row{align-items:baseline;gap:4px;display:flex}.card-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:38px;font-weight:300;line-height:1}.card-unit{color:var(--text-2);font-size:13px}.card-status{color:var(--status);text-align:right;text-wrap:pretty;padding-bottom:3px;font-size:12px}.sparkline{width:100%;height:34px;display:block;overflow:visible}.card-others{font-family:var(--mono);color:var(--text-2);gap:14px;font-size:11px;display:flex}.card-others b{color:var(--value);font-weight:400}.timeline{background:var(--glass);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:16px;align-items:center;gap:18px;padding:14px 18px;display:flex;position:absolute;bottom:22px;left:28px;right:28px}.play{border:1px solid var(--button-border);cursor:pointer;background:0 0;border-radius:50%;flex:none;justify-content:center;align-items:center;gap:4px;width:40px;height:40px;display:flex}.play:hover{background:var(--hover)}.play-bar{background:var(--text);border-radius:1px;width:3px;height:12px}.play-triangle{border-left:11px solid var(--text);border-top:7px solid #0000;border-bottom:7px solid #0000;width:0;height:0;margin-left:3px}.strips-wrap{flex-direction:column;flex:1;gap:7px;min-width:0;display:flex}.strips{--strip-label:68px;flex-direction:column;gap:4px;display:flex;position:relative}.strip-row{align-items:center;gap:10px;display:flex}.strip-name{width:58px;color:var(--text-3);flex:none;font-size:11px}.strip{border-radius:4px;flex:1;height:7px;transition:opacity .3s}.playhead{pointer-events:none;background:#fff;border-radius:1px;width:2px;margin-left:-1px;position:absolute;top:-5px;bottom:-5px;box-shadow:0 0 10px #fff9}.scrub{left:var(--strip-label);width:calc(100% - var(--strip-label));opacity:0;cursor:ew-resize;margin:0;position:absolute;top:-8px;bottom:-8px;right:0}.ticks{margin-left:var(--strip-label);font-family:var(--mono);color:var(--text-4);justify-content:space-between;font-size:10px;display:flex}.live{border:1px solid var(--button-border);cursor:pointer;font-size:12px;font-family:var(--mono);letter-spacing:.08em;background:0 0;border-radius:999px;flex:none;align-items:center;gap:8px;padding:9px 14px;display:flex}.live:hover{background:var(--hover)}.live-dot{border-radius:50%;width:7px;height:7px}.loading{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:absolute;inset:0}.loading-track{background:#ffffff14;border-radius:1px;width:160px;height:2px;overflow:hidden}.loading-fill{background:var(--accent);height:100%}@media (width<=1000px){.metric-switch{align-items:flex-start;top:182px;left:28px;transform:none}}@media (width<=900px){.app{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;display:flex;overflow-y:auto}.view{flex:1;order:3;min-height:240px;position:relative;inset:auto}.label{gap:7px;padding:5px 10px 5px 9px}.label-value{font-size:14px}.label-short{font-size:11px}.header{order:1;grid-template-columns:1fr auto;column-gap:12px;padding:14px 16px 0;display:grid;position:static}.header>*{grid-column:1}.clock{font-size:30px}.header-actions{flex-direction:column;grid-area:1/2/4;align-self:center;align-items:flex-end;gap:6px;margin-top:0}.metric-switch{order:2;align-items:stretch;gap:8px;padding:10px 16px 8px;position:static;transform:none}.segmented button{flex:1;padding:8px 0}.legend{justify-content:center}.cards{scroll-snap-type:x mandatory;flex-direction:row;flex:none;order:4;width:auto;padding:0 16px;position:static;overflow:auto hidden}.card{scroll-snap-align:start;flex:1 0 0}.timeline{flex:none;order:5;gap:12px;margin:10px 16px 14px;padding:12px 14px;position:static}.strips{--strip-label:54px}.strip-name{width:44px;font-size:10px}.ticks span:nth-child(2n){display:none}.live{padding:8px 10px;font-size:11px}}@media (width<=640px){.card{flex:0 0 78vw}.label-short{display:none}}.lab-labels .label{pointer-events:none;cursor:default}.lab-panel{scrollbar-width:none;flex-direction:column;gap:10px;width:min(300px,38vw);display:flex;position:absolute;top:24px;bottom:150px;overflow:hidden auto}.lab-panel::-webkit-scrollbar{display:none}.lab-tools{top:182px;left:28px}.lab-results{right:24px}.lab-panel .card{cursor:default;flex:none}.lab-panel .pill-button{align-self:auto;margin-top:0;padding:7px 12px;font-size:12px}.lab-panel .pill-button:disabled{opacity:.5;cursor:default}.pill-button.primary{background:var(--text);color:var(--bg);border-color:#0000}.pill-button.primary:hover{background:#fff}.pill-button .dot{background:#5b636c;border-radius:50%;width:7px;height:7px}.pill-button.on{border-color:#5fd6ff73}.pill-button.on .dot{background:var(--accent);box-shadow:0 0 8px var(--accent)}.lab-toggles{flex-wrap:wrap;gap:6px;display:flex}.lab-row{align-items:center;gap:8px;display:flex}.lab-input{border:1px solid var(--button-border);min-width:0;color:var(--text);font:inherit;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#0d1014b3;border-radius:999px;flex:1;padding:7px 12px;font-size:12px}.lab-input:focus{border-color:#5fd6ff80;outline:none}.lab-input::placeholder{color:var(--text-4)}.segmented.small button{white-space:nowrap;flex:auto;padding:6px 7px;font-size:12px}.hours{flex-direction:column;gap:4px;display:flex}.hours-cells{cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;grid-template-columns:repeat(24,1fr);gap:2px;height:18px;display:grid}.hours-cell{border-radius:3px;transition:background .15s}.hours-ticks{height:12px;font-family:var(--mono);color:var(--text-4);font-size:10px;position:relative}.hours-ticks span{position:absolute;transform:translate(-50%)}.hours-ticks span:first-child{transform:none}.hours-ticks span:last-child{transform:translate(-100%)}.lab-fan{border:1px solid var(--glass-border);cursor:pointer;background:#ffffff05;border-radius:10px;flex-direction:column;gap:10px;padding:10px;transition:border-color .3s;display:flex}.lab-fan.selected{border-color:#5fd6ff73}.lab-fan .card-meta{margin-left:auto}.lab-fan .card-meta.accent{color:var(--accent)}.lab-slider{color:var(--text-2);align-items:center;gap:10px;font-size:12px;display:flex}.lab-slider b{text-align:right;width:38px;font-weight:400;font-family:var(--mono);color:var(--value);font-variant-numeric:tabular-nums;font-size:11px}.lab-range{appearance:none;cursor:ew-resize;background:#ffffff24;border-radius:1px;flex:1;min-width:0;height:2px;margin:0}.lab-range::-webkit-slider-thumb{appearance:none;background:var(--text);border-radius:50%;width:14px;height:14px}.lab-range::-moz-range-thumb{background:var(--text);border:none;border-radius:50%;width:14px;height:14px}.lab-link{cursor:pointer;color:var(--text-2);background:0 0;border:none;border-radius:6px;padding:4px 7px;font-size:12px}.lab-link:hover{background:var(--hover);color:var(--text)}.lab-link:disabled{opacity:.4;cursor:default}.lab-metrics{grid-template-columns:1fr 1fr;gap:8px;display:grid}.lab-metric{border:1px solid var(--glass-border);cursor:pointer;text-align:left;background:#ffffff05;border-radius:10px;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 10px 8px;transition:border-color .3s,background .3s;display:flex}.lab-metric:hover{background:var(--hover)}.lab-metric.selected{background:#161b21db;border-color:#5fd6ff73}.lab-metric .card-value-row{white-space:nowrap}.lab-rooms{flex-direction:column;gap:6px;font-size:13px;display:flex}.lab-room{justify-content:space-between;align-items:baseline;display:flex}.lab-room b{font-variant-numeric:tabular-nums;font-weight:400}.lab-list{flex-direction:column;display:flex}.lab-item{border:none;border-top:1px solid var(--glass-border);width:100%;color:var(--text);text-align:left;background:0 0;align-items:center;gap:8px;padding:8px 0;font-size:12px;display:flex}button.lab-item{cursor:pointer}button.lab-item:hover{color:var(--accent)}.lab-item-label{text-wrap:pretty;flex:1;min-width:0}.lab-item-label small{font-family:var(--mono);color:var(--text-4);margin-top:2px;font-size:10px;display:block}.lab-item b{font-weight:400;font-family:var(--mono);color:var(--value);white-space:nowrap;font-size:11px}.lab-active{color:var(--status);align-items:center;gap:8px;font-size:12px;display:flex}.lab-active .live-dot{background:#39e0a0;flex:none;box-shadow:0 0 8px #39e0a0}.lab-active span:not(.live-dot){flex:1}.lab-error{color:#ff5a3c;font-size:12px}@media (width<=900px){.lab-panel{flex:none;width:auto;padding:0 16px;position:static;overflow:visible}.lab-tools{order:4}.lab-results{order:5;margin-top:10px}}
