:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--ground:#edf2f5;--ground-wash:radial-gradient(120% 80% at 12% -10%, #0e96831a, transparent 55%), radial-gradient(90% 70% at 92% 0%, #0369a114, transparent 60%);--surface:#fff;--surface-2:#f3f7f9;--sunken:#e5edf0;--line:#dae4e8;--glass:linear-gradient(180deg, #ffffffe6, #f6fafbbf);--ink:#0b151a;--ink-2:#4a6068;--ink-3:#7b919a;--accent:#0e9683;--accent-2:#0c7ea8;--accent-soft:#0e96831a;--accent-line:#0e968357;--accent-glow:#0e968338;--crit:#c0392f;--hot:#c2410c;--hot-soft:#c2410c1f;--shadow:0 1px 2px #0b151a0d, 0 10px 28px -14px #0b151a2e;--radius:15px}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--ground:#070a0f;--ground-wash:radial-gradient(120% 80% at 12% -10%, #2ed3b71a, transparent 55%), radial-gradient(90% 70% at 92% 0%, #38bdf812, transparent 60%);--surface:#0e141c;--surface-2:#131a24;--sunken:#0a0f16;--line:#212c39;--glass:linear-gradient(180deg, #1c26328c, #0e141cbf);--ink:#e8f0f5;--ink-2:#93a6b4;--ink-3:#617585;--accent:#2ed3b7;--accent-2:#38bdf8;--accent-soft:#2ed3b721;--accent-line:#2ed3b752;--accent-glow:#2ed3b74d;--crit:#f2635f;--hot:#fb923c;--hot-soft:#fb923c26;--shadow:0 1px 2px #00000073, 0 12px 32px -16px #000c}}*{box-sizing:border-box}body{background:var(--ground);background-image:var(--ground-wash);min-height:100dvh;color:var(--ink);-webkit-font-smoothing:antialiased;background-attachment:fixed;margin:0;font-family:system-ui,-apple-system,sans-serif}main{padding-bottom:48px}.chrome{border-bottom:1px solid var(--line);letter-spacing:-.015em;flex-wrap:wrap;align-items:center;gap:14px;min-height:60px;padding:10px 18px;font-size:18px;display:flex}.chrome-start{align-items:center;gap:12px;min-width:0;display:flex}.chrome-end{align-items:center;gap:12px;margin-left:auto;display:flex}@media (width>=900px){.chrome:has(.segmented){grid-template-columns:1fr auto 1fr;display:grid}}.chrome .back{border:1px solid var(--line);width:34px;height:34px;color:var(--ink-2);border-radius:10px;place-items:center;font-size:16px;text-decoration:none;display:grid}@media (hover:hover){.chrome .back:hover{border-color:var(--accent);color:var(--accent)}}.crumbs{white-space:nowrap;align-items:baseline;gap:8px;min-width:0;display:flex}.crumbs>span{color:var(--ink-2)}.segmented{border:1px solid var(--line);background:var(--sunken);border-radius:10px;gap:2px;padding:3px;font-size:13px;display:inline-flex}.segmented a{color:var(--ink-2);border-radius:7px;padding:6px 12px;text-decoration:none}.segmented a[aria-current=page]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}button{font:inherit;-webkit-tap-highlight-color:transparent;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:10px;padding:9px 15px;font-size:14px}@media (hover:hover){button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.room-hit:hover:not(:disabled){color:inherit}}button:disabled{color:var(--ink-3);cursor:default}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.waiting,.refused{color:var(--ink-2);padding:22px 18px;font-size:14px}.refused{color:var(--crit)}.login{background:var(--surface);background-image:var(--glass);border:1px solid var(--line);border-radius:var(--radius);max-width:340px;box-shadow:var(--shadow);flex-direction:column;gap:15px;margin:14vh auto 0;padding:24px 22px 26px;display:flex}.login h1{letter-spacing:-.02em;margin:0;font-size:19px;font-weight:600}.login label{color:var(--ink-2);flex-direction:column;gap:6px;font-size:13px;display:flex}.login input{font:inherit;border:1px solid var(--line);background:var(--surface-2);color:var(--ink);border-radius:10px;padding:10px 12px;font-size:15px}.login .refused{margin:0;padding:0;font-size:13px}.login .hint{color:var(--ink-3);margin:-6px 0 2px;font-size:13px}.login button[type=submit]{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#fff;box-shadow:0 8px 22px -10px var(--accent-glow);border-color:#0000;padding:11px 15px;font-weight:600}@media (hover:hover){.login button[type=submit]:hover:not(:disabled){color:#fff;filter:brightness(1.08)}}.login .quiet{color:var(--ink-3);background:0 0;border-color:#0000;margin-top:-6px}.node-state{border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--ink-2);border-radius:999px;align-items:center;gap:9px;padding:7px 13px 7px 11px;font-size:12.5px;display:inline-flex}.node-state.down{border-color:var(--crit);color:var(--crit);background:0 0}.live{background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 3px var(--accent-glow);border-radius:50%}.node-state.down .live{background:var(--crit);box-shadow:none}.stamp{color:var(--ink-3);font-variant-numeric:tabular-nums}.rooms{grid-auto-columns:minmax(0,1fr);gap:14px;max-width:1140px;margin:18px auto 0;padding-inline:18px;display:grid}.room{background:var(--surface);background-image:var(--glass);border:1px solid var(--line);border-radius:var(--radius);min-height:150px;box-shadow:var(--shadow);position:relative;overflow:hidden}.room:after{content:"";pointer-events:none;background:radial-gradient(80% 60% at 50% -10%, var(--hot-soft), transparent 62%);opacity:0;transition:opacity .2s;position:absolute;inset:0}.room.heating:after{opacity:1}.room.picked{box-shadow:var(--shadow), 0 0 0 1.5px var(--accent);border-color:#0000}.room-hit{z-index:1;text-align:left;border-radius:var(--radius);width:100%;height:100%;color:inherit;background:0 0;border:0;flex-direction:column;gap:4px;padding:15px 16px 14px;display:flex;position:relative}.room-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.room-read{flex-direction:column;margin-top:auto;display:flex}.room-name{font-size:14.5px;font-weight:500}.room-temp{letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:44px;font-weight:300;line-height:1}.room-target{color:var(--ink-2);font-variant-numeric:tabular-nums;margin-top:6px;font-size:13px}.chip{background:var(--surface-2);color:var(--ink-2);border-radius:8px;padding:4px 9px;font-size:11.5px;font-weight:500}.chip.heat{background:var(--hot-soft);color:var(--hot)}.battery{z-index:2;color:var(--ink-3);line-height:0;position:absolute;bottom:12px;right:13px}.sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (width<=620px){.rooms>.room{grid-area:auto!important}.chrome{font-size:17px}}.dial{flex-direction:column;align-items:center;gap:13px;width:100%;display:flex}.dial-top{justify-content:space-between;align-items:center;gap:12px;width:100%;font-size:15px;display:flex}.shut{width:32px;height:32px;color:var(--ink-2);border-radius:50%;padding:0;font-size:19px;line-height:1}.dial-face{width:204px;height:204px;position:relative}.dial-face svg{width:100%;height:100%;display:block}.dial-mid{flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;inset:0}.dial-value{letter-spacing:-.045em;font-variant-numeric:tabular-nums;font-size:50px;font-weight:300;line-height:1}.dial-label{color:var(--ink-2);font-size:12px}.steppers{align-items:center;gap:11px;display:flex}.steppers button{border-radius:50%;width:46px;height:46px;padding:0;font-size:21px}.step-note{color:var(--ink-3);font-size:11.5px}.facts{flex-direction:column;width:100%;max-width:320px;margin:0;display:flex}.facts>div{border-top:1px solid var(--line);justify-content:space-between;gap:12px;padding:9px 0;font-size:13px;display:flex}.facts dt{color:var(--ink-2)}.facts dd{font-variant-numeric:tabular-nums;margin:0;font-weight:500}.dial-say{text-align:center;max-width:34ch;margin:0;font-size:12.5px;line-height:1.5}.dial-say.failed{color:var(--crit)}.history{border-top:1px solid var(--line);margin-top:18px;padding-top:14px}.history-top{flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:10px;display:flex}.history h3{margin:0;font-size:15px}.legend{color:var(--ink-2);align-items:center;gap:14px;margin-left:auto;font-size:12px;display:flex}.lg{align-items:center;gap:6px;display:inline-flex}.lg i{background:var(--hot);width:16px;height:2px;display:block}.lg .lg-dash{background:repeating-linear-gradient(90deg, var(--accent-2) 0 5px, transparent 5px 9px)}.lg .lg-band{background:var(--hot-soft);border-radius:3px;height:11px}.plot{position:relative}.plot svg{touch-action:pan-y;width:100%;height:auto;display:block}.tip{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);color:var(--ink-2);pointer-events:none;white-space:nowrap;border-radius:10px;gap:2px;padding:7px 10px;font-size:12px;display:grid;position:absolute;top:0;transform:translate(-50%)}.tip b{color:var(--ink)}.chart-say{color:var(--ink-3);margin:18px 0 0;font-size:13px}.table-view{margin-top:10px;font-size:13px}.table-view summary{cursor:pointer;color:var(--ink-2)}.table-view table{border-collapse:collapse;width:100%;margin-top:8px}.table-view caption{text-align:left;color:var(--ink-3);padding-bottom:6px;font-size:12px}.table-view th,.table-view td{border-bottom:1px solid var(--line);text-align:left;padding:5px 8px}.table-view th{color:var(--ink-2);font-weight:500}.chrome select{font:inherit;appearance:none;border:1px solid var(--line);background-color:var(--surface);background-image:linear-gradient(45deg, transparent 50%, var(--ink-3) 50%), linear-gradient(135deg, var(--ink-3) 50%, transparent 50%);color:var(--ink);cursor:pointer;background-position:calc(100% - 18px),calc(100% - 13px);background-repeat:no-repeat;background-size:5px 5px;border-radius:10px;padding:9px 34px 9px 15px;font-size:14px}@media (hover:hover){.chrome select:hover{border-color:var(--accent)}}main:has(.plant){flex-direction:column;height:100dvh;padding-bottom:0;display:flex}.plant{flex:1;min-height:0;position:relative}.plant-passing{z-index:5;color:var(--hot);margin:0;font-size:12px;position:absolute;top:8px;left:8px}.plant .react-flow__handle{opacity:0}.plant .grid-fine{--xy-background-pattern-color:color-mix(in srgb, var(--line) 45%, transparent)}.plant .grid-major{--xy-background-pattern-color:var(--line)}.plant .react-flow__edge-textbg{fill:var(--surface)}.plant .react-flow__edge-text{fill:var(--ink-2)}.plant-card{text-align:left;width:100%;height:100%;font:inherit;color:var(--ink);cursor:pointer;background:var(--surface);border:1px solid var(--line);border-radius:12px;align-content:start;gap:2px;padding:10px 12px;display:grid;position:relative}.plant-card.bad{border-color:var(--crit)}.plant-card.behind{opacity:.55}.plant-card.on{border:2px solid var(--accent)}.plant-card .dot,.plant-pill .dot{border-radius:50%;width:9px;height:9px;position:absolute;top:10px;right:10px}.plant-pill .dot{width:7px;height:7px;position:static}.plant-card.ok .dot,.plant-pill.ok .dot{background:var(--accent)}.plant-card.warn .dot,.plant-pill.warn .dot{background:var(--hot)}.plant-card.bad .dot,.plant-pill.bad .dot{background:var(--crit)}.plant-card.behind .dot,.plant-pill.behind .dot{background:var(--ink-3)}.plant-card.none .dot,.plant-pill.none .dot{border:1.5px solid var(--ink-3)}.plant-card .model,.plant-card .state{color:var(--ink-2);font-size:12px}.plant-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.plant-group{border:1px dashed var(--line);background:var(--surface-2);border-radius:14px;width:100%;height:100%;padding:10px 16px}.plant-group span{color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase;font-size:11px}.react-flow__edge.zigbee path{stroke:var(--accent-2);stroke-dasharray:2 4}.react-flow__edge.broken path{stroke:var(--crit)}.react-flow__edge.behind{opacity:.35}.drawer{z-index:10;overscroll-behavior:contain;background:var(--surface);border-left:1px solid var(--line);width:min(380px,100%);box-shadow:var(--shadow);padding:20px 22px 28px;position:fixed;top:0;bottom:0;right:0;overflow-y:auto}.room-drawer:focus{outline:none}@media (width<=620px){.drawer{width:100%}}.plant .drawer>header{justify-content:space-between;align-items:start;gap:12px;display:flex}.plant .drawer h3{letter-spacing:-.01em;margin:0;font-size:18px;font-weight:600}.plant .drawer .sub{color:var(--ink-2);margin:3px 0 0;font-size:13px}.plant-pill{border:1px solid var(--line);color:var(--ink-2);border-radius:999px;align-items:center;gap:7px;margin:12px 0 0;padding:4px 10px;font-size:12px;display:inline-flex}.plant .drawer dl{grid-template-columns:auto 1fr;align-items:baseline;column-gap:16px;margin:18px 0 0;display:grid}.plant .drawer dt,.plant .drawer dd{border-top:1px solid var(--line);padding:7px 0}.plant .drawer dt{color:var(--ink-3);font-size:12px}.plant .drawer dd{overflow-wrap:anywhere;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;font-weight:500}.plant .drawer .differs{color:var(--hot)}.plant .drawer h4{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin:24px 0 6px;font-size:11px;font-weight:600}.plant .drawer table{border-collapse:collapse;width:100%;font-size:13px}.plant .drawer td{border-top:1px solid var(--line);padding:7px 0}.plant .drawer th{text-align:left;color:var(--ink-3);padding:6px 0;font-size:11px;font-weight:500}.plant .drawer .readings :is(th,td):nth-child(2){text-align:right;font-variant-numeric:tabular-nums;padding-right:16px}.plant .drawer .readings td:nth-child(3){color:var(--ink-2)}.write{border-top:1px dashed var(--line);gap:6px;padding:8px 0;font-size:13px;display:grid}.write-top{color:var(--ink-2);justify-content:space-between;gap:10px;display:flex}.write-values,.write-number{align-items:center;gap:8px;display:flex}.write-number input{width:6em;font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:10px;padding:8px 10px}.write-number select{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:10px;flex:1;min-width:0;padding:8px 10px}.write-values button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.write-said,.writes-none{color:var(--ink-3);margin:0;font-size:12px}.fleet{margin-top:16px;padding-inline:18px;overflow-x:auto}.fleet table{border-collapse:collapse;width:100%;font-size:14px}.fleet th,.fleet td{border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;padding:10px 8px}.fleet th{color:var(--ink-2);font-weight:500}.fleet td small{color:var(--ink-3);font-variant-numeric:tabular-nums;margin-top:2px;font-size:12px;display:block}.fleet tbody tr{cursor:pointer}.fleet tbody tr:hover{background:var(--surface-2)}.fleet a{color:var(--accent)}
