.topbar[data-v-c579baf7]{background:#fff;border-bottom:1px solid rgba(127,127,127,.15)}@media(prefers-color-scheme:dark){.topbar[data-v-c579baf7]{background:#1d2026;border-bottom-color:#ffffff14}}.inner[data-v-c579baf7]{max-width:960px;margin:0 auto;padding:.5rem 1.25rem;display:flex;align-items:center;gap:1rem}.brand[data-v-c579baf7]{display:inline-flex;align-items:center;text-decoration:none}.brand img[data-v-c579baf7]{height:114px;width:auto;display:block}.health-link[data-v-c579baf7]{font-size:.85rem;padding:4px 10px;border-radius:999px;background:#7f7f7f1f;color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:4px}.health-link.alert[data-v-c579baf7]{background:#fde0e0;color:#9c1a1a;font-weight:700}@media(prefers-color-scheme:dark){.health-link.alert[data-v-c579baf7]{background:#3a1010;color:#f88}}.who[data-v-c579baf7]{color:#888;font-size:.9rem;margin-left:auto}.link[data-v-c579baf7]{background:none;border:none;color:#2563eb;cursor:pointer;padding:0;font:inherit}.login[data-v-b3cba0bc]{max-width:360px}.card[data-v-b3cba0bc]{background:#fff;padding:1.25rem;border-radius:8px;box-shadow:0 1px 3px #00000014;display:flex;flex-direction:column;gap:.75rem}@media(prefers-color-scheme:dark){.card[data-v-b3cba0bc]{background:#1d2026;box-shadow:none}}label[data-v-b3cba0bc]{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem}input[data-v-b3cba0bc]{padding:.5rem;border:1px solid rgba(127,127,127,.3);border-radius:6px;background:transparent;color:inherit;font:inherit}button[data-v-b3cba0bc]{padding:.6rem;border-radius:6px;border:none;background:#2563eb;color:#fff;font-weight:600;cursor:pointer}button[data-v-b3cba0bc]:disabled{opacity:.6;cursor:wait}.err[data-v-b3cba0bc]{color:#c92a2a;margin:0;font-size:.85rem}.bar[data-v-6f4dae0a]{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:1rem}.err[data-v-6f4dae0a]{color:#c92a2a}.row[data-v-6f4dae0a]{cursor:pointer}.row:hover td[data-v-6f4dae0a]{background:#7f7f7f14}.head[data-v-69e10362]{display:flex;align-items:flex-start}.title[data-v-69e10362]{display:flex;gap:.6rem;align-items:center}.icon[data-v-69e10362]{font-size:1.4rem;width:38px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:#7f7f7f1a;filter:grayscale(.5);transition:filter .2s,background .2s}.icon.on[data-v-69e10362]{background:#fef3c7;filter:none}@media(prefers-color-scheme:dark){.icon.on[data-v-69e10362]{background:#4a3b0e}}h3[data-v-69e10362]{margin:0;font-size:1rem}.sub[data-v-69e10362]{margin:0;font-size:.75rem;color:#888}.grid[data-v-69e10362]{display:grid;gap:.5rem;grid-template-columns:1fr 1fr}.ch[data-v-69e10362]{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;padding:.7rem .85rem;border:1px solid rgba(127,127,127,.2);border-radius:10px;background:#7f7f7f0a;cursor:pointer;font:inherit;color:inherit;text-align:left;transition:background .15s,border-color .15s,transform .05s}.ch[data-v-69e10362]:hover{background:#7f7f7f1a}.ch[data-v-69e10362]:active{transform:scale(.97)}.ch.on[data-v-69e10362]{background:#fef9c3;border-color:#facc15;color:#5b4400}@media(prefers-color-scheme:dark){.ch.on[data-v-69e10362]{background:#3a2e0e;border-color:#a87f0a;color:#f1d977}}.ch.pending[data-v-69e10362]{opacity:.5;cursor:wait}.dot[data-v-69e10362]{width:8px;height:8px;border-radius:50%;background:#aaa}.dot.on[data-v-69e10362]{background:#f59e0b;box-shadow:0 0 8px #f59e0b}.label[data-v-69e10362]{font-size:.8rem;color:inherit;opacity:.8}.state[data-v-69e10362]{font-size:1.05rem;font-weight:700}.head[data-v-d7293876]{display:flex}.title[data-v-d7293876]{display:flex;gap:.6rem;align-items:center}h3[data-v-d7293876]{margin:0;font-size:1rem}.sub[data-v-d7293876]{margin:0;font-size:.75rem;color:#888}.readings[data-v-d7293876]{display:flex;gap:1.25rem;justify-content:center;padding:.4rem 0 .2rem}.reading[data-v-d7293876]{display:flex;flex-direction:column;align-items:center}.rd-label[data-v-d7293876]{display:inline-flex;align-items:center;gap:4px;font-size:.7rem;color:#888;text-transform:uppercase;letter-spacing:.04em}.rd-val[data-v-d7293876]{font-size:.95rem;font-weight:600;font-variant-numeric:tabular-nums}.dial-wrap[data-v-d7293876]{display:flex;justify-content:center;margin-top:.2rem;margin-bottom:-.4rem}.dial[data-v-d7293876]{width:100%;max-width:240px;touch-action:none;-webkit-user-select:none;user-select:none}.arc-bg[data-v-d7293876]{stroke:#7f7f7f2e}.arc-fg[data-v-d7293876]{transition:stroke .15s}.knob[data-v-d7293876]{cursor:grab;filter:drop-shadow(0 1px 3px rgba(0,0,0,.2))}.knob[data-v-d7293876]:active{cursor:grabbing}.dial-mode[data-v-d7293876]{text-anchor:middle;font-size:13px;font-weight:600;font-family:inherit}.dial-temp[data-v-d7293876]{text-anchor:middle;font-size:44px;font-weight:200;font-variant-numeric:tabular-nums;font-family:inherit;fill:currentColor}.dial-deci[data-v-d7293876]{font-size:28px;font-weight:300}.dial-unit[data-v-d7293876]{font-size:16px;fill:#888}.bumps[data-v-d7293876]{display:flex;gap:.5rem;justify-content:center;margin-bottom:.5rem}.bump[data-v-d7293876]{width:38px;height:38px;border-radius:50%;border:1px solid rgba(127,127,127,.25);background:#7f7f7f0d;color:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center}.bump[data-v-d7293876]:hover{background:#7f7f7f1f}.modes[data-v-d7293876]{display:flex;gap:.3rem;flex-wrap:wrap}.mode-btn[data-v-d7293876]{flex:1;min-width:60px;padding:5px 10px;border:1px solid rgba(127,127,127,.25);background:transparent;color:inherit;border-radius:8px;font:inherit;font-size:.8rem;cursor:pointer;text-transform:capitalize}.mode-btn.on[data-v-d7293876]{background:var(--accent, #2563eb);border-color:var(--accent, #2563eb);color:#fff;font-weight:600}.fan[data-v-d7293876]{display:flex;align-items:center;gap:.5rem;margin-top:.4rem;padding-top:.4rem;border-top:1px solid rgba(127,127,127,.12)}.fan-label[data-v-d7293876]{font-size:.7rem;color:#888;text-transform:uppercase;letter-spacing:.04em;flex-shrink:0}.fan-pills[data-v-d7293876]{display:flex;gap:3px;flex:1}.fan-btn[data-v-d7293876]{flex:1;padding:4px 6px;border:1px solid rgba(127,127,127,.2);background:transparent;color:inherit;border-radius:6px;font:inherit;font-size:.75rem;cursor:pointer;text-transform:capitalize}.fan-btn.on[data-v-d7293876]{background:#7f7f7f2e;font-weight:600}.head[data-v-228a2b00]{display:flex}.title[data-v-228a2b00]{display:flex;gap:.6rem;align-items:center}.icon[data-v-228a2b00]{font-size:1.4rem;width:38px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:#7f7f7f1a}h3[data-v-228a2b00]{margin:0;font-size:1rem}.sub[data-v-228a2b00]{margin:0;font-size:.75rem;color:#888}.big[data-v-228a2b00]{display:flex;align-items:baseline;gap:.2rem;padding:.4rem 0}.big .num[data-v-228a2b00]{font-size:2.5rem;font-weight:300;line-height:1;font-variant-numeric:tabular-nums}.big .unit[data-v-228a2b00]{font-size:1rem;color:#888}.key[data-v-228a2b00]{font-size:.75rem;color:#888;text-transform:lowercase;margin-top:-.2rem}.empty[data-v-228a2b00]{color:#888;font-style:italic}.secondary[data-v-228a2b00]{display:flex;flex-direction:column;gap:.25rem;padding-top:.4rem;border-top:1px solid rgba(127,127,127,.1);font-size:.85rem}.sec-item[data-v-228a2b00]{display:flex;gap:.4rem;align-items:center}.sec-key[data-v-228a2b00]{color:#888;flex:1}.sec-val[data-v-228a2b00]{font-weight:600;font-variant-numeric:tabular-nums}.head[data-v-6c8053bf]{display:flex}.title[data-v-6c8053bf]{display:flex;gap:.6rem;align-items:center}.icon[data-v-6c8053bf]{font-size:1.4rem;width:38px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:#7f7f7f1a}h3[data-v-6c8053bf]{margin:0;font-size:1rem}.sub[data-v-6c8053bf]{margin:0;font-size:.75rem;color:#888}.toggle[data-v-6c8053bf]{background:none;border:none;color:#2563eb;cursor:pointer;padding:0;font:inherit;font-size:.85rem;text-align:left}.json[data-v-6c8053bf]{background:#7f7f7f0f;padding:.5rem;border-radius:6px;font-size:.7rem;max-height:200px;overflow:auto;margin:0}.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}.chart-wrap[data-v-96ce97fe]{margin-top:.5rem;border-top:1px solid rgba(127,127,127,.15);padding-top:.5rem}header[data-v-96ce97fe]{display:flex;align-items:center;gap:.5rem;font-size:.8rem;margin-bottom:.4rem}select[data-v-96ce97fe]{background:transparent;border:1px solid rgba(127,127,127,.3);color:inherit;padding:2px 6px;border-radius:4px;font:inherit}.range button[data-v-96ce97fe]{background:transparent;border:1px solid rgba(127,127,127,.3);color:inherit;padding:2px 8px;border-radius:4px;cursor:pointer;font:inherit}.range button.on[data-v-96ce97fe]{background:#2563eb;border-color:#2563eb;color:#fff}.muted[data-v-96ce97fe]{color:#888;margin-left:auto}.err[data-v-96ce97fe]{color:#c92a2a;margin-left:auto}.chart[data-v-96ce97fe]{width:100%;min-height:180px}.device-card[data-v-b6f5d29a]{background:#fff;border-radius:14px;padding:1rem;box-shadow:0 1px 3px #0000000f;transition:box-shadow .15s,transform .15s;display:flex;flex-direction:column;gap:.75rem;border:1px solid rgba(127,127,127,.1)}.device-card[data-v-b6f5d29a]:hover{box-shadow:0 4px 14px #00000014;transform:translateY(-1px)}@media(prefers-color-scheme:dark){.device-card[data-v-b6f5d29a]{background:#1d2026;box-shadow:none;border-color:#ffffff0f}.device-card[data-v-b6f5d29a]:hover{box-shadow:0 4px 14px #0006}}.card-footer[data-v-b6f5d29a]{border-top:1px solid rgba(127,127,127,.12);padding-top:.6rem;margin-top:auto}.meta-line[data-v-b6f5d29a]{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;font-size:.75rem}.meta-chip[data-v-b6f5d29a]{background:#7f7f7f1a;padding:2px 8px;border-radius:999px;white-space:nowrap;display:inline-flex;align-items:center;gap:3px}.meta-chip.muted[data-v-b6f5d29a]{color:#888}.chart-btn[data-v-b6f5d29a]{margin-left:auto;background:none;border:1px solid rgba(127,127,127,.2);border-radius:6px;padding:4px 8px;cursor:pointer;font:inherit;color:inherit;display:inline-flex;align-items:center}.chart-btn.on[data-v-b6f5d29a]{background:#2563eb;border-color:#2563eb;color:#fff}.room-line[data-v-b6f5d29a]{margin-bottom:.45rem}.room-btn[data-v-b6f5d29a]{background:none;border:1px dashed rgba(127,127,127,.3);border-radius:6px;padding:3px 10px;cursor:pointer;font:inherit;font-size:.78rem;color:inherit;display:inline-flex;align-items:center;gap:4px}.room-btn[data-v-b6f5d29a]:hover{background:#7f7f7f14}.room-btn.unset[data-v-b6f5d29a]{color:#888;font-style:italic}.room-line input[data-v-b6f5d29a]{width:100%;padding:4px 8px;border:1px solid rgba(127,127,127,.3);border-radius:6px;background:transparent;color:inherit;font:inherit;font-size:.85rem}.action[data-v-c98c896f]{border:1px solid rgba(127,127,127,.18);border-radius:10px;padding:.6rem .8rem;background:#7f7f7f08}.action-head[data-v-c98c896f]{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}.action-head strong[data-v-c98c896f]{flex:1}.room[data-v-c98c896f]{font-size:.7rem;background:#7f7f7f26;padding:1px 8px;border-radius:999px}.rm[data-v-c98c896f]{background:none;border:none;cursor:pointer;color:#c92a2a;display:inline-flex;align-items:center}.kv-list[data-v-c98c896f]{display:flex;flex-direction:column;gap:.4rem}.kv[data-v-c98c896f]{display:flex;align-items:center;gap:.4rem}.kv label[data-v-c98c896f]{flex:1;display:flex;align-items:center;gap:.5rem;font-size:.85rem}.k[data-v-c98c896f]{width:110px;color:#888;text-transform:capitalize;font-size:.78rem}.toggle[data-v-c98c896f]{display:flex;gap:4px}.toggle-btn[data-v-c98c896f]{padding:3px 12px;border:1px solid rgba(127,127,127,.3);background:transparent;border-radius:6px;cursor:pointer;font:inherit;color:inherit;font-size:.8rem}.toggle-btn.on[data-v-c98c896f]{background:#16a34a;color:#fff;border-color:#16a34a}select[data-v-c98c896f],input[type=text][data-v-c98c896f]{flex:1;padding:4px 8px;border:1px solid rgba(127,127,127,.25);border-radius:6px;background:transparent;font:inherit;font-size:.85rem;color:inherit}.num-row[data-v-c98c896f]{display:flex;gap:4px;align-items:center}.num-row input[data-v-c98c896f]{width:70px;padding:4px 6px;border:1px solid rgba(127,127,127,.25);border-radius:6px;background:transparent;font:inherit;font-size:.85rem;color:inherit;text-align:center}.bump[data-v-c98c896f]{width:26px;height:26px;border-radius:50%;border:1px solid rgba(127,127,127,.3);background:transparent;color:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center}.dropk[data-v-c98c896f]{background:none;border:none;cursor:pointer;color:#888;font-size:1.1rem;line-height:1;padding:0 6px}.dropk[data-v-c98c896f]:hover{color:#c92a2a}.modal-bg[data-v-f5eec47b]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:flex-start;justify-content:center;z-index:100;padding-top:5vh}.modal[data-v-f5eec47b]{background:#fff;width:95%;max-width:520px;max-height:88vh;border-radius:14px;box-shadow:0 8px 32px #0003;display:flex;flex-direction:column}@media(prefers-color-scheme:dark){.modal[data-v-f5eec47b]{background:#1d2026;box-shadow:0 8px 32px #0009}}header[data-v-f5eec47b]{display:flex;align-items:center;padding:.8rem 1rem;border-bottom:1px solid rgba(127,127,127,.15)}header h3[data-v-f5eec47b]{margin:0;flex:1}.close[data-v-f5eec47b]{background:none;border:none;cursor:pointer;color:inherit;display:inline-flex;align-items:center}.row[data-v-f5eec47b]{padding:.8rem 1rem}.name-row[data-v-f5eec47b]{display:flex;gap:.5rem}.icon-pick[data-v-f5eec47b]{width:60px;text-align:center;font-size:1.2rem;background:#7f7f7f14;border:1px solid rgba(127,127,127,.25);border-radius:8px;padding:.5rem;color:inherit}.name-row input[data-v-f5eec47b]{flex:1;padding:.5rem .7rem;border:1px solid rgba(127,127,127,.25);border-radius:8px;font:inherit;background:transparent;color:inherit}.hint[data-v-f5eec47b]{padding:0 1rem;font-size:.85rem;color:#888;margin:0 0 .5rem}.empty[data-v-f5eec47b]{color:#888;font-style:italic;padding:.5rem;text-align:center}.actions-list[data-v-f5eec47b]{flex:1;overflow-y:auto;padding:0 1rem .5rem;display:flex;flex-direction:column;gap:.5rem}.schedule-area[data-v-f5eec47b]{padding:0 1rem .5rem}.sched-row[data-v-f5eec47b]{display:flex;align-items:center;gap:.5rem;font-size:.85rem;padding:.4rem .6rem;background:#7f7f7f0d;border-radius:8px}.time-input[data-v-f5eec47b]{padding:3px 8px;border:1px solid rgba(127,127,127,.25);border-radius:6px;background:transparent;color:inherit;font:inherit}.time-input[data-v-f5eec47b]:disabled{opacity:.5}.hint.mini[data-v-f5eec47b]{font-size:.75rem;padding:0 .5rem;margin-top:.2rem}.add-area[data-v-f5eec47b]{padding:0 1rem .8rem}.add-btn[data-v-f5eec47b]{width:100%;padding:.5rem .85rem;border:1px dashed rgba(127,127,127,.3);background:transparent;border-radius:8px;cursor:pointer;font:inherit;color:#2563eb;display:inline-flex;align-items:center;justify-content:center;gap:4px}.add-btn[data-v-f5eec47b]:disabled{opacity:.4;cursor:not-allowed}.picker[data-v-f5eec47b]{display:flex;flex-direction:column;gap:.3rem}.pick-row[data-v-f5eec47b]{display:flex;align-items:center;gap:.5rem;padding:.5rem .7rem;border:1px solid rgba(127,127,127,.18);border-radius:8px;background:transparent;color:inherit;cursor:pointer;font:inherit;text-align:left}.pick-row[data-v-f5eec47b]:hover{background:#7f7f7f14}.pick-row strong[data-v-f5eec47b]{flex:1;font-size:.9rem}.pick-row .room[data-v-f5eec47b]{font-size:.7rem;background:#7f7f7f26;padding:1px 8px;border-radius:999px}footer[data-v-f5eec47b]{display:flex;gap:.5rem;justify-content:flex-end;padding:.8rem 1rem;border-top:1px solid rgba(127,127,127,.15)}.link[data-v-f5eec47b]{background:none;border:none;color:#2563eb;cursor:pointer;font:inherit;padding:.4rem .8rem}.primary[data-v-f5eec47b]{background:#2563eb;color:#fff;border:none;padding:.5rem 1rem;border-radius:8px;font:inherit;font-weight:600;cursor:pointer}.primary[data-v-f5eec47b]:disabled{opacity:.5;cursor:not-allowed}.scenes[data-v-f47ec884]{margin-bottom:1.25rem}.scenes-title[data-v-f47ec884]{font-size:.95rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#555;margin:0 0 .6rem}@media(prefers-color-scheme:dark){.scenes-title[data-v-f47ec884]{color:#ccc}}.scenes-row[data-v-f47ec884]{display:flex;flex-wrap:wrap;gap:.5rem}.scene-card[data-v-f47ec884]{display:flex;align-items:center;border:1px solid rgba(127,127,127,.25);background:#fff;border-radius:999px;overflow:hidden}@media(prefers-color-scheme:dark){.scene-card[data-v-f47ec884]{background:#1d2026}}.scene-card.running[data-v-f47ec884]{background:#2563eb;border-color:#2563eb}.scene-card.running .scene-action[data-v-f47ec884]{color:#fff}.scene-main[data-v-f47ec884]{display:flex;align-items:center;gap:.4rem;padding:.5rem .85rem;background:transparent;border:none;color:inherit;cursor:pointer;font:inherit;font-size:.9rem}.scene-main[data-v-f47ec884]:hover{background:#7f7f7f14}.scene-card.running .scene-main[data-v-f47ec884]{color:#fff}.scene-icon[data-v-f47ec884]{font-size:1rem}.scene-name[data-v-f47ec884]{font-weight:500}.sched-badge[data-v-f47ec884]{display:inline-flex;align-items:center;gap:3px;font-size:.72rem;background:#7f7f7f26;color:#555;padding:1px 6px;border-radius:999px;margin-left:4px}@media(prefers-color-scheme:dark){.sched-badge[data-v-f47ec884]{color:#aaa}}.scene-card.running .sched-badge[data-v-f47ec884]{background:#fff3;color:#fff}.scene-action[data-v-f47ec884]{background:none;border:none;border-left:1px solid rgba(127,127,127,.18);width:28px;height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer;color:inherit}.scene-action[data-v-f47ec884]:hover{background:#7f7f7f1f}.scene-action.del[data-v-f47ec884]:hover{background:#fde0e0;color:#c92a2a}@media(prefers-color-scheme:dark){.scene-action.del[data-v-f47ec884]:hover{background:#3a1010;color:#f88}}.scene-card.add[data-v-f47ec884]{padding:.5rem .85rem;border-style:dashed;color:#2563eb;font-weight:600;cursor:pointer;background:transparent;display:inline-flex;align-items:center;gap:4px;font:inherit;font-size:.9rem}.scene-card.add[data-v-f47ec884]:hover{background:#2563eb14}.topline[data-v-e2d40a5d]{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.link[data-v-e2d40a5d]{background:none;border:none;color:#2563eb;cursor:pointer;padding:0;font:inherit;display:inline-flex;align-items:center;gap:3px}.link.danger[data-v-e2d40a5d]{color:#c92a2a}.pair[data-v-e2d40a5d]{background:#2563eb;color:#fff;border:none;padding:.5rem .9rem;border-radius:8px;font-weight:600;cursor:pointer;font-size:.9rem;display:inline-flex;align-items:center;gap:4px}.pair[data-v-e2d40a5d]:disabled{opacity:.6;cursor:wait}.hero[data-v-e2d40a5d]{margin-bottom:1.25rem}.hero h1[data-v-e2d40a5d]{margin:0;font-size:1.6rem}.sub[data-v-e2d40a5d]{color:#888;font-size:.9rem;margin:0}.err[data-v-e2d40a5d]{color:#c92a2a}.flash[data-v-e2d40a5d]{background:#fffbe6;border:1px solid #f1d977;color:#5e4900;padding:.5rem .75rem;border-radius:6px;margin-bottom:1rem}@media(prefers-color-scheme:dark){.flash[data-v-e2d40a5d]{background:#2a2210;border-color:#5e4900;color:#f1d977}}.tunnel[data-v-e2d40a5d]{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;border-radius:10px;background:#eef2ff;border:1px solid #c7d2fe;margin-bottom:1rem}.tunnel.idle[data-v-e2d40a5d]{background:#7f7f7f0d;border-color:#7f7f7f26}@media(prefers-color-scheme:dark){.tunnel[data-v-e2d40a5d]{background:#1e253a;border-color:#2a3556}.tunnel.idle[data-v-e2d40a5d]{background:#ffffff0a;border-color:#ffffff14}}.tunnel .muted[data-v-e2d40a5d]{font-size:.8rem;color:#888}.tunnel .cmd[data-v-e2d40a5d]{display:inline-block;margin-top:.3rem;padding:4px 8px;background:#0000000f;border-radius:4px;font-size:.85rem;cursor:pointer;-webkit-user-select:all;user-select:all}@media(prefers-color-scheme:dark){.tunnel .cmd[data-v-e2d40a5d]{background:#ffffff0f}}.room-section[data-v-e2d40a5d]{margin-bottom:1.5rem}.room-title[data-v-e2d40a5d]{font-size:.95rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#555;margin:0 0 .6rem;display:flex;align-items:center;gap:.4rem}.room-title.unassigned[data-v-e2d40a5d]{color:#999;font-weight:500;font-style:italic}.room-count[data-v-e2d40a5d]{background:#7f7f7f26;font-size:.75rem;padding:1px 8px;border-radius:999px;font-weight:600;color:#555}@media(prefers-color-scheme:dark){.room-title[data-v-e2d40a5d]{color:#ccc}.room-title.unassigned[data-v-e2d40a5d]{color:#777}.room-count[data-v-e2d40a5d]{color:#ccc}}.cards-grid[data-v-e2d40a5d]{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}.empty[data-v-e2d40a5d]{padding:3rem 1rem;text-align:center;color:#888}.sub[data-v-53034806]{color:#888;font-size:.9rem;margin-bottom:1rem}.err[data-v-53034806]{color:#c92a2a}.counts[data-v-53034806]{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.pill[data-v-53034806]{padding:4px 12px;border-radius:999px;font-size:.85rem;font-weight:600;background:#7f7f7f1a}.pill.online[data-v-53034806]{background:#d4f5dd;color:#06753a}.pill.degraded[data-v-53034806]{background:#fff4cc;color:#8a6800}.pill.down[data-v-53034806]{background:#fde0e0;color:#9c1a1a}.pill.never[data-v-53034806]{background:#7f7f7f26;color:#555}.pill.total[data-v-53034806]{background:#e0e7ff;color:#1e3a8a}@media(prefers-color-scheme:dark){.pill.online[data-v-53034806]{background:#0e3a1f;color:#6ee29a}.pill.degraded[data-v-53034806]{background:#3a2e0e;color:#f1d977}.pill.down[data-v-53034806]{background:#3a1010;color:#f88}.pill.never[data-v-53034806]{background:#ffffff0d;color:#aaa}.pill.total[data-v-53034806]{background:#1e253a;color:#a5b4fc}}.badge[data-v-53034806]{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase}.badge.online[data-v-53034806]{background:#d4f5dd;color:#06753a}.badge.degraded[data-v-53034806]{background:#fff4cc;color:#8a6800}.badge.down[data-v-53034806]{background:#fde0e0;color:#9c1a1a}.badge.never_seen[data-v-53034806]{background:#7f7f7f26;color:#555}@media(prefers-color-scheme:dark){.badge.online[data-v-53034806]{background:#0e3a1f;color:#6ee29a}.badge.degraded[data-v-53034806]{background:#3a2e0e;color:#f1d977}.badge.down[data-v-53034806]{background:#3a1010;color:#f88}}:root{font-family:system-ui,-apple-system,sans-serif;color-scheme:light dark}body{margin:0;background:#f5f6f8;color:#1a1a1a}@media(prefers-color-scheme:dark){body{background:#14161a;color:#e8e8e8}}.app{max-width:960px;margin:0 auto;padding:2rem 1.25rem}h1{margin:0 0 .25rem;font-size:1.5rem}.sub{color:#888;font-size:.9rem;margin-bottom:1.5rem}table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #00000014}@media(prefers-color-scheme:dark){table{background:#1d2026;box-shadow:none}}th,td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid rgba(127,127,127,.15);font-variant-numeric:tabular-nums}th{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:#888;font-weight:600}tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:600}.badge.online{background:#d4f5dd;color:#06753a}.badge.offline{background:#fde0e0;color:#9c1a1a}.empty{text-align:center;padding:3rem 1rem;color:#888}
