@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-opsz-normal-CfYZpDVp.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-opsz-normal-BFQXbQ-f.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-opsz-normal-BmPQvyvo.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-opsz-normal-BM0NlUE_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-opsz-normal-Ci9T9ieq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-opsz-normal-DpK-iCPk.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-opsz-normal-BwkfbSeq.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-ext-400-normal-C2je3j2s.woff2)format("woff2"),url(/assets/instrument-serif-latin-ext-400-normal-CFCUzsTy.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-400-normal-DnYpCC2O.woff2)format("woff2"),url(/assets/instrument-serif-latin-400-normal-BVbkICAY.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#f5f3ef;--surface:#fff;--surface-2:#edeae4;--border:#dcd8d0;--border-strong:#8a847b;--text:#1a1917;--text-muted:#5c5852;--text-faint:#6f6960;--accent:#f3b65a;--on-accent:#1a1917;--accent-ink:#9a550a;--accent-soft:#fbefd9;--ok:#2a7449;--danger:#b5301f;--ring:#1a1917;--scrim:#1a191766;--thumb-off:#fff;--house-shadow:#1a191714;--glass:linear-gradient(160deg, #fff, #fbfaf7);--glass-border:var(--border);--glass-shadow:0 1px 2px #1a19170a, 0 16px 32px -20px #1a19172e;--glow:0 0 0 1px #9a550a40, 0 10px 30px -14px #f3b65a99;--ambient:none;--shadow-sheet:0 -8px 32px #1a19171f;--shadow-modal:0 24px 64px #1a19172e}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--bg:#0b0a09;--surface:#161513;--surface-2:#211f1c;--border:#2e2b27;--border-strong:#5a564f;--text:#f5f1ea;--text-muted:#a69f95;--text-faint:#8f887e;--accent:#f2b65c;--on-accent:#1a1917;--accent-ink:#f2b65c;--accent-soft:#3a2b15;--glass:linear-gradient(160deg, #ffffff0f, #ffffff04 55%);--glass-border:#ffffff12;--glass-shadow:0 1px 0 #ffffff0a inset, 0 24px 48px -24px #0009;--glow:0 0 0 1px #f2b65c47, 0 12px 40px -12px #f2b65c73;--ambient:radial-gradient(1100px 620px at 72% -12%, #f2b65c17, transparent 62%);--floor:#141311;--floor-outdoor:#0e0d0b;--floor-active:#1b1916;--floor-active-hover:#25221e;--floor-on:#1f1b16;--wall-top:#2d2a26;--wall-r:#1c1a17;--wall-l:#141311;--wall-edge:#ffffff29;--ok:#6cc493;--danger:#f0776a;--ring:#f3f0ea;--scrim:#0000008c;--thumb-off:#f3f0ea;--house-shadow:#0006;--shadow-sheet:0 -8px 32px #00000080;--shadow-modal:0 24px 64px #0009}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b0a09;--surface:#161513;--surface-2:#211f1c;--border:#2e2b27;--border-strong:#5a564f;--text:#f5f1ea;--text-muted:#a69f95;--text-faint:#8f887e;--accent:#f2b65c;--on-accent:#1a1917;--accent-ink:#f2b65c;--accent-soft:#3a2b15;--glass:linear-gradient(160deg, #ffffff0f, #ffffff04 55%);--glass-border:#ffffff12;--glass-shadow:0 1px 0 #ffffff0a inset, 0 24px 48px -24px #0009;--glow:0 0 0 1px #f2b65c47, 0 12px 40px -12px #f2b65c73;--ambient:radial-gradient(1100px 620px at 72% -12%, #f2b65c17, transparent 62%);--floor:#141311;--floor-outdoor:#0e0d0b;--floor-active:#1b1916;--floor-active-hover:#25221e;--floor-on:#1f1b16;--wall-top:#2d2a26;--wall-r:#1c1a17;--wall-l:#141311;--wall-edge:#ffffff29;--ok:#6cc493;--danger:#f0776a;--ring:#f3f0ea;--scrim:#0000008c;--thumb-off:#f3f0ea;--house-shadow:#0006;--shadow-sheet:0 -8px 32px #00000080;--shadow-modal:0 24px 64px #0009}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root{--floor:var(--surface-2);--floor-outdoor:var(--bg);--floor-active:var(--surface);--floor-active-hover:var(--surface-2);--floor-on:var(--accent-soft);--wall-top:var(--surface);--wall-r:var(--surface-2);--wall-l:var(--border);--wall-edge:var(--border-strong);--font-sans:"Inter Variable", Inter, system-ui, -apple-system, "Segoe UI", sans-serif;--font-serif:"Instrument Serif", "Iowan Old Style", "Palatino Linotype", Georgia, serif;--fs-display:3.5rem;--fs-title-1:2.125rem;--fs-title-2:1.5rem;--fs-title-3:1.25rem;--fs-headline:1.0625rem;--fs-body:1.0625rem;--fs-callout:.9375rem;--fs-label:.8125rem;--fs-caption:.75rem;--fs-reading:.9375rem;--f-display:300 var(--fs-display) / 1 var(--font-sans);--f-title-1:500 var(--fs-title-1) / 1.1 var(--font-sans);--f-title-2:500 var(--fs-title-2) / 1.15 var(--font-sans);--f-title-3:500 var(--fs-title-3) / 1.2 var(--font-sans);--f-headline:600 var(--fs-headline) / 1.3 var(--font-sans);--f-body:400 var(--fs-body) / 1.45 var(--font-sans);--f-callout:400 var(--fs-callout) / 1.4 var(--font-sans);--f-label:500 var(--fs-label) / 1.3 var(--font-sans);--f-caption:500 var(--fs-caption) / 1.3 var(--font-sans);--f-reading:450 var(--fs-reading) / 1.3 var(--font-sans);--ls-display:-.03em;--ls-title-1:-.025em;--ls-title-2:-.02em;--ls-title-3:-.015em;--ls-headline:-.01em;--ls-label:.01em;--ls-caption:.04em}@media (width<=359px){:root{--fs-title-1:1.75rem}}:root{--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-7:32px;--s-8:40px;--s-9:48px;--s-10:64px;--gutter:16px;--tile-gap:12px;--card-pad:16px;--header-h:56px;--panel-w:400px;--r-xs:6px;--r-s:10px;--r-m:16px;--r-l:24px;--r-full:999px;--target:44px}@media (width>=640px){:root{--gutter:24px;--tile-gap:16px;--card-pad:20px}}@media (width>=1024px){:root{--gutter:32px}}@media (width>=1440px){:root{--panel-w:440px}}:root{--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--spring:var(--ease-out);--dur-tap:80ms;--dur-fade:.16s;--dur-color:.18s;--dur-thumb:.22s;--dur-fill:.24s;--dur-sheet-in:.32s;--dur-sheet-out:.24s}@supports (transition-timing-function:linear(0, 1)){:root{--spring:linear(0, .4 20%, .9 45%, 1.02 65%, 1)}}:root{--surface-solid:var(--surface);--primary:var(--text);--warn:var(--accent-ink);--radius:var(--r-m)}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--ambient), var(--bg);color:var(--text);font:var(--f-body);font-optical-sizing:auto;font-feature-settings:"cv11", "ss01", "tnum";-webkit-font-smoothing:antialiased;background-attachment:fixed}p{font-feature-settings:"cv11", "ss01", "pnum"}button,input{font:inherit;color:inherit}button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.app-root{min-height:100dvh}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.icon-btn:focus-visible,.toggle:focus-visible{outline-offset:3px}.t-display{font:var(--f-display);letter-spacing:var(--ls-display)}.t-title-1{font:var(--f-title-1);letter-spacing:var(--ls-title-1)}.t-title-2{font:var(--f-title-2);letter-spacing:var(--ls-title-2)}.t-title-3{font:var(--f-title-3);letter-spacing:var(--ls-title-3)}.t-headline{font:var(--f-headline);letter-spacing:var(--ls-headline)}.t-body{font:var(--f-body)}.t-callout{font:var(--f-callout)}.t-label{font:var(--f-label);letter-spacing:var(--ls-label)}.t-caption{font:var(--f-caption);letter-spacing:var(--ls-caption);text-transform:uppercase}.t-reading{font:var(--f-reading)}.t-muted{color:var(--text-muted)}.surface{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-m)}.btn{justify-content:center;align-items:center;gap:var(--s-2);min-height:var(--target);padding:0 var(--s-5);border:1px solid var(--text);border-radius:var(--r-s);background:var(--text);color:var(--bg);font:var(--f-label);cursor:pointer;transition:background var(--dur-color) var(--ease-out), transform var(--dur-tap) var(--ease-out);font-weight:600;display:inline-flex}.btn:active{transform:scale(.98)}.btn--ghost{border-color:var(--border-strong);color:var(--text);background:0 0}.btn--soft{background:var(--accent-soft);color:var(--accent-ink);border-color:#0000}@media (hover:hover){.btn--ghost:hover{background:var(--surface-2)}.btn--soft:hover{border-color:var(--accent-ink)}}.icon-btn{width:var(--target);height:var(--target);border:1px solid var(--border);border-radius:var(--r-s);background:var(--surface-2);color:var(--text-muted);cursor:pointer;transition:background var(--dur-color) var(--ease-out), color var(--dur-color) var(--ease-out);flex:none;place-items:center;padding:0;display:grid}.icon-btn:active{background:var(--border)}@media (hover:hover){.icon-btn:hover{background:var(--border);color:var(--text)}}.toggle{width:52px;height:var(--target);cursor:pointer;background:0 0;border:none;flex:none;padding:0;position:relative}.toggle:before{content:"";border:1.5px solid var(--border-strong);border-radius:var(--r-full);background:var(--surface-2);transition:background var(--dur-color) var(--ease-out), border-color var(--dur-color) var(--ease-out);position:absolute;inset:6px 0}.toggle__thumb{border:1px solid var(--border-strong);background:var(--thumb-off);width:28px;height:28px;transition:transform var(--dur-thumb) var(--spring), background var(--dur-color) var(--ease-out);border-radius:50%;position:absolute;top:8px;left:4px}.toggle.is-on:before{border-color:var(--accent);background:var(--accent)}.toggle.is-on .toggle__thumb{border-color:var(--on-accent);background:var(--on-accent);transform:translate(20px)}.toggle:disabled{cursor:not-allowed}.toggle:disabled:before{background:var(--surface-2);border-color:var(--border)}.toggle:disabled .toggle__thumb{background:var(--text-faint);border-color:var(--text-faint)}.toggle.is-pending .toggle__thumb{animation:.9s ease-in-out infinite pulse-thumb}@keyframes pulse-thumb{50%{transform:translate(10px)}}.chip-btn{min-height:var(--target);padding:0 var(--s-4);border:1px solid var(--border-strong);border-radius:var(--r-full);background:var(--surface);color:var(--text);font:var(--f-label);cursor:pointer;transition:background var(--dur-color) var(--ease-out), border-color var(--dur-color) var(--ease-out)}.chip-btn:active:not(:disabled){background:var(--surface-2)}.chip-btn.is-active{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.chip-btn:disabled{color:var(--text-faint);cursor:not-allowed}@media (hover:hover){.chip-btn:hover:not(:disabled):not(.is-active){background:var(--surface-2)}}.wordmark{font-size:var(--wordmark-size,1.75rem);color:var(--text);line-height:1;display:inline-block}.wordmark svg{width:2.64em;height:.92em;display:block;overflow:visible}.wordmark__lunette{fill:var(--accent)}.splash{align-content:center;place-items:center;gap:var(--s-4);min-height:100dvh;padding:var(--s-6) var(--gutter);color:var(--text-muted);font:var(--f-callout);text-align:center;display:grid}.splash__error{justify-items:center;gap:var(--s-3);max-width:360px;display:grid}.splash__error p{margin:0}.splash__hint{color:var(--text-muted)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.toggle.is-pending .toggle__thumb{opacity:.5}}.floorplan{padding:var(--s-4) var(--s-4) var(--s-2);border-radius:var(--r-l)}.floorplan__head{justify-content:space-between;align-items:baseline;gap:var(--s-3);margin:0 var(--s-1) var(--s-1);display:flex}.section-title{font:var(--f-caption);letter-spacing:var(--ls-caption);text-transform:uppercase;color:var(--text-muted);margin:0}.floorplan__hint{font:var(--f-label);color:var(--text-muted)}.floorplan__scroll{padding-block:var(--s-3);scrollbar-width:thin;overflow-x:auto}.floorplan__svg{touch-action:pan-x pan-y pinch-zoom;width:100%;height:auto;max-height:72dvh;display:block;overflow:visible}.house-shadow{fill:var(--house-shadow)}.floor{fill:var(--floor);stroke:none}.floor--outdoor{fill:var(--floor-outdoor);stroke:var(--border);stroke-width:.8px}.floor--active{fill:var(--floor-active);cursor:pointer;transition:fill var(--dur-fill) var(--ease-in-out);outline:none}@media (hover:hover){.floor--active:hover{fill:var(--floor-active-hover)}}.floor--active.is-on{fill:var(--floor-on)}.floor--active.is-selected,.floor--active:focus-visible{stroke:var(--ring);stroke-width:2px;vector-effect:non-scaling-stroke}.walls{pointer-events:none}.wall__top{fill:var(--wall-top)}.wall-tops-edge{fill:var(--wall-edge);stroke:var(--wall-edge);stroke-width:.75px;stroke-linejoin:round}.wall__side--r{fill:var(--wall-r)}.wall__side--l{fill:var(--wall-l)}.labels{pointer-events:none}.label__name{fill:var(--text-muted);font-size:var(--label-px,10.5px);text-anchor:middle;dominant-baseline:middle;letter-spacing:.01em;font-weight:500}.label--active .label__name{fill:var(--text);font-weight:600}.label:not(.label--active) .label__name{paint-order:stroke;stroke:var(--floor);stroke-width:3px;stroke-linejoin:round}.treads{pointer-events:none;fill:none;stroke:var(--border);stroke-width:.8px;stroke-linecap:round}.chip{transform-box:fill-box;transform-origin:50% 0;scale:var(--chip-scale,1)}.chip__bg{fill:var(--surface);stroke:var(--border)}.chip__icon{color:var(--text-muted)}.chip__icon.is-on{color:var(--accent-ink)}.chip__text{fill:var(--text);text-anchor:middle;dominant-baseline:middle;font-variant-numeric:tabular-nums;font-size:9.5px;font-weight:600}@media (width<=639px){.floorplan__svg{min-width:520px}.floorplan{padding-inline:var(--s-2)}.floorplan__head{margin-inline:var(--s-2)}.label--compact,.floorplan__hint{display:none}}.ac__side--r{fill:var(--surface-2);stroke:var(--border-strong);stroke-width:.5px}.ac__side--l{fill:var(--border);stroke:var(--border-strong);stroke-width:.5px}.ac__top{fill:var(--surface);stroke:var(--border-strong);stroke-width:.5px}.ac.is-on .ac__side--r,.ac.is-on .ac__side--l,.ac.is-on .ac__top{fill:var(--accent)}.glow-stop--core{stop-color:#ffd697;stop-opacity:1}.glow-stop--mid{stop-color:#f2b65c;stop-opacity:.62}.glow-stop--edge{stop-color:#c9842e;stop-opacity:.18}.glows,.blooms{pointer-events:none}.glow{transition:opacity var(--dur-fill) var(--ease-out)}.blooms{mix-blend-mode:screen;opacity:.85}:root[data-theme=light] .blooms{display:none}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) .blooms{display:none}}:root[data-theme=light] .glow-stop--core{stop-color:var(--accent);stop-opacity:.55}.floorplan--hero{background:0 0;border:0;padding:0}.shell{--nav-w:0px;--map-w:420px;--tabbar-h:64px;grid-template-columns:minmax(0,1fr);min-height:100dvh;display:grid}.shell__col{flex-direction:column;min-width:0;display:flex}.main{width:100%;max-width:1200px;padding:var(--s-4) var(--gutter) calc(var(--tabbar-h) + var(--s-4) + var(--s-6) + env(safe-area-inset-bottom));flex:1;margin:0 auto;container:main/inline-size}.main__page{animation:page-in var(--dur-fade) ease}@keyframes page-in{0%{opacity:0}}.header{z-index:5;justify-content:space-between;align-items:center;gap:var(--s-3);min-height:calc(var(--header-h) + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(var(--gutter), env(safe-area-inset-right)) 0 max(var(--gutter), env(safe-area-inset-left));border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(20px)saturate(140%);backdrop-filter:blur(20px)saturate(140%);display:flex;position:sticky;top:0}@media (prefers-reduced-transparency:reduce){.header,.tabbar{background:var(--bg);-webkit-backdrop-filter:none;backdrop-filter:none}}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.header,.tabbar{background:var(--bg)}}.header__title{min-width:0;font:var(--f-title-3);letter-spacing:var(--ls-title-3);white-space:nowrap;text-overflow:ellipsis;opacity:0;transition:opacity var(--dur-fade) ease;margin:0;overflow:hidden}.header__title.is-shown{opacity:1}@media (width>=640px){.header__title{font:var(--f-title-2);letter-spacing:var(--ls-title-2)}}.header__meta{align-items:center;gap:var(--s-3);flex:none;margin-left:auto;display:flex}.header__clock{font:var(--f-headline);letter-spacing:var(--ls-headline);font-variant-numeric:tabular-nums}.conn{align-items:center;gap:var(--s-2);color:var(--text-muted);font:var(--f-label);white-space:nowrap;display:inline-flex}.conn__dot{background:currentColor;border-radius:50%;width:8px;height:8px}.conn--connected .conn__dot{background:var(--ok)}.conn--reconnecting{color:var(--accent-ink)}.conn--reconnecting .conn__dot{animation:1s steps(2,start) infinite blink}.conn--offline{color:var(--danger)}@keyframes blink{to{opacity:.3}}.demo-banner{justify-content:space-between;align-items:center;gap:var(--s-3);min-height:var(--target);padding:0 max(var(--s-2), calc(var(--gutter) - var(--s-3))) 0 var(--gutter);border-bottom:1px solid var(--border);background:var(--accent-soft);color:var(--accent-ink);font:var(--f-label);letter-spacing:var(--ls-label);display:flex}.demo-banner__close{width:var(--target);height:var(--target);border-radius:var(--r-s);color:inherit;cursor:pointer;background:0 0;border:0;flex:none;place-items:center;padding:0;display:grid}.tabbar{z-index:6;inset-inline:var(--s-4);bottom:calc(var(--s-4) + env(safe-area-inset-bottom));height:var(--tabbar-h);max-width:440px;padding:0 var(--s-2);border:1px solid var(--border);border-radius:var(--r-l);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(20px)saturate(140%);backdrop-filter:blur(20px)saturate(140%);transition:transform .2s var(--ease-out);margin-inline:auto;display:flex;position:fixed}.tabbar.is-hidden{transform:translateY(calc(100% + var(--s-6) + env(safe-area-inset-bottom)))}.tabbar:focus-within{transform:none}.tabbar__tab{min-width:0;min-height:48px;margin:var(--s-2) 0;padding:0 var(--s-2);border-radius:var(--r-m);color:var(--text-muted);font:var(--f-caption);letter-spacing:var(--ls-label);cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;display:flex}.tabbar__tab[aria-current=page]{color:var(--text);font-weight:600}.tabbar__tab:active{background:var(--surface-2)}@media (height<=500px) and (width<=1023px){.shell{padding-left:calc(64px + env(safe-area-inset-left))}.tabbar{width:calc(64px + env(safe-area-inset-left));max-width:none;height:auto;padding:0 0 0 env(safe-area-inset-left);background:var(--bg);-webkit-backdrop-filter:none;backdrop-filter:none;border-width:0 1px 0 0;border-radius:0;flex-direction:column;justify-content:center;margin:0;inset:0 auto 0 0}.tabbar.is-hidden{transform:none}.tabbar__tab{min-height:var(--target);margin:var(--s-1) var(--s-1);flex:none}.main{padding-bottom:var(--s-6)}.home__greeting{display:none}}.sidebar,.map-pane{display:none}@media (width>=1024px){.shell{--nav-w:72px;grid-template-columns:var(--nav-w) minmax(0, 1fr)}.tabbar{display:none}.main{padding-bottom:var(--s-8)}.header{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-bottom:0;min-height:64px;position:static}.header__title{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.sidebar{z-index:4;gap:var(--s-6);height:100dvh;padding:var(--s-6) var(--s-3);border-right:1px solid var(--border);background:var(--bg);flex-direction:column;display:flex;position:sticky;top:0}.sidebar__brand{justify-items:center;gap:var(--s-1);align-content:center;min-height:48px;display:grid}.sidebar__home,.sidebar__label,.sidebar__foot{display:none}.sidebar__nav{gap:var(--s-1);display:grid}.sidebar__tab{justify-content:center;align-items:center;gap:var(--s-3);min-height:48px;padding:0 var(--s-3);border-radius:var(--r-s);color:var(--text-muted);font:var(--f-headline);letter-spacing:var(--ls-headline);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.sidebar__tab[aria-current=page]{background:var(--surface-2);color:var(--text)}.sidebar__tab:active{background:var(--border)}}@media (width>=1024px) and (hover:hover){.sidebar__tab:hover{color:var(--text)}}@media (width>=1280px){.shell{--nav-w:240px}.sidebar{padding-inline:var(--s-4)}.sidebar__brand{padding-inline:var(--s-3);justify-items:start}.sidebar__home{color:var(--text-muted);font:var(--f-callout);display:block}.sidebar__tab{justify-content:flex-start}.sidebar__label{display:inline}.sidebar__foot{gap:var(--s-2);padding:var(--s-3);border-top:1px solid var(--border);margin-top:auto;display:grid}}@media (width>=1440px){.shell{--nav-w:280px;--map-w:clamp(500px, 38vw, 720px)}.main{max-width:1640px}.map-pane{height:100dvh;padding:var(--s-9) var(--s-6) var(--s-6) 0;display:block;position:sticky;top:0;overflow-y:auto}}.more{gap:var(--s-6);max-width:720px;margin:0 auto;display:grid}.more__title{font:var(--f-title-1);letter-spacing:var(--ls-title-1);margin:0;display:none}@media (width>=1024px){.more__title{display:block}}.more__body{gap:var(--s-6);display:grid}.more__section{gap:var(--s-2);display:grid}.more__eyebrow{margin:0 var(--s-2);font:var(--f-caption);letter-spacing:var(--ls-caption);text-transform:uppercase;color:var(--text-muted)}.list{overflow:hidden}.row{justify-content:space-between;align-items:center;gap:var(--s-3);min-height:56px;padding:var(--s-2) var(--s-4);color:var(--text);text-decoration:none;display:flex}.row+.row{border-top:1px solid var(--border)}.row--stack{padding-bottom:var(--s-3);flex-direction:column;justify-content:center;align-items:stretch}.row__text{min-width:0;display:grid}.row__label{font:var(--f-body);font-weight:500}.row__hint,.row__value{font:var(--f-callout);color:var(--text-muted)}.row__value{text-align:right;overflow-wrap:anywhere}@media (hover:hover){a.row:hover{background:var(--surface-2)}}a.row:active{background:var(--surface-2)}.seg{gap:var(--s-1);padding:var(--s-1);border-radius:var(--r-s);background:var(--surface-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.seg__opt{position:relative}.seg__opt span{min-height:var(--target);padding:0 var(--s-2);border-radius:var(--r-xs);color:var(--text-muted);font:var(--f-label);text-align:center;cursor:pointer;border:1px solid #0000;place-items:center;display:grid}.seg__opt input:checked+span{border-color:var(--border-strong);background:var(--surface);color:var(--text);font-weight:600}.seg__opt input:focus-visible+span{outline:2px solid var(--ring);outline-offset:2px}.lang-pick{gap:var(--s-2);grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));display:grid}.lang-pick__opt{display:grid;position:relative}.lang-pick__box{justify-content:space-between;align-items:center;gap:var(--s-3);min-height:calc(var(--target) + var(--s-3));padding:var(--s-2) var(--s-3) var(--s-2) var(--s-4);border:1px solid var(--border);border-radius:var(--r-s);background:var(--surface-2);cursor:pointer;transition:border-color var(--dur-color) var(--ease-out), background-color var(--dur-color) var(--ease-out);display:flex}.lang-pick__text{align-items:baseline;gap:var(--s-2);min-width:0;display:flex}.lang-pick__name{font:var(--f-body);color:var(--text-muted);transition:color var(--dur-color) var(--ease-out);font-weight:500}.lang-pick__code{font:var(--f-caption);letter-spacing:var(--ls-caption);color:var(--text-faint)}.lang-pick__mark{border:1.5px solid var(--border-strong);border-radius:var(--r-full);color:#0000;width:22px;height:22px;transition:background-color var(--dur-color) var(--ease-out), border-color var(--dur-color) var(--ease-out), color var(--dur-color) var(--ease-out);flex:none;place-items:center;display:grid}@media (hover:hover){.lang-pick__opt:hover input:not(:checked)+.lang-pick__box{border-color:var(--border-strong)}}.lang-pick__opt input:checked+.lang-pick__box{border-color:var(--accent);background:var(--accent-soft)}.lang-pick__opt input:checked+.lang-pick__box .lang-pick__name{color:var(--text)}.lang-pick__opt input:checked+.lang-pick__box .lang-pick__code{color:var(--accent-ink)}.lang-pick__opt input:checked+.lang-pick__box .lang-pick__mark{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.lang-pick__opt input:focus-visible+.lang-pick__box{outline:2px solid var(--ring);outline-offset:2px}@media (width>=1024px){.shell{--panel-top:0px}}.home{gap:var(--s-6);display:grid}.home__top{gap:var(--s-4);display:grid}.home__status{gap:var(--s-2);min-width:0;display:grid}.home__greeting{margin:0 0 var(--s-1);font:var(--f-title-1);letter-spacing:var(--ls-title-1)}.home__line{align-items:center;gap:var(--s-2);font:var(--f-body);color:var(--text);margin:0;display:flex}.home__line svg{color:var(--text-muted);flex:none}.home__line svg.is-on{color:var(--accent-ink)}.home__line--muted{padding-left:var(--s-6);color:var(--text-muted)}.eyebrow{margin:0 0 var(--s-3) var(--s-1);font:var(--f-caption);letter-spacing:var(--ls-caption);text-transform:uppercase;color:var(--text-muted)}.scenes{gap:var(--s-2);margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);scrollbar-width:none;display:flex;overflow-x:auto}.scenes::-webkit-scrollbar{display:none}.scene-btn{align-items:center;gap:var(--s-2);min-height:var(--target);padding:0 var(--s-4);border:1px solid var(--border);border-radius:var(--r-full);background:var(--surface);color:var(--text);font:var(--f-label);white-space:nowrap;cursor:pointer;transition:background var(--dur-color) var(--ease-out), color var(--dur-color) var(--ease-out), transform var(--dur-tap) var(--ease-out);flex:none;font-weight:500;display:inline-flex}.scene-btn:active{background:var(--surface-2);transform:scale(.98)}.scene-btn.is-running{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.scene-btn:disabled{color:var(--text-faint);cursor:not-allowed}.rooms__list{gap:var(--tile-gap);grid-template-columns:minmax(0,1fr);margin:0;padding:0;list-style:none;display:grid}.room-card{border:1px solid var(--border);border-radius:var(--r-m);background:var(--surface);min-height:72px;transition:background var(--dur-fill) var(--ease-in-out), transform var(--dur-tap) var(--ease-out);display:flex;position:relative}.room-card.is-on{background:var(--accent-soft)}.room-card.is-selected{box-shadow:inset 0 0 0 2px var(--ring)}.room-card:has(.room-card__main:active){background:var(--surface-2);transform:scale(.98)}@media (hover:hover){.room-card:not(.is-on):has(.room-card__main:hover){background:var(--surface-2)}}.room-card__main{align-items:center;gap:var(--s-3);min-width:0;min-height:inherit;padding:var(--s-3) calc(52px + var(--s-4) + var(--s-3)) var(--s-3) var(--s-4);border-radius:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:1;display:flex}.has-more>.room-card__main{padding-right:var(--s-4)}.room-card__icon{background:var(--surface-2);width:40px;height:40px;color:var(--text-muted);transition:background var(--dur-fill) var(--ease-in-out), color var(--dur-fill) var(--ease-in-out);border-radius:50%;flex:none;place-items:center;display:grid}.room-card.is-on .room-card__icon{background:var(--accent);color:var(--on-accent)}.room-card__text{min-width:0;display:grid}.room-card__name{font:var(--f-title-3);letter-spacing:var(--ls-title-3);overflow-wrap:anywhere}.room-card__state{font:var(--f-callout);color:var(--text-muted)}.room-card__toggle{top:50%;right:var(--s-4);position:absolute;translate:0 -50%}.room-card__more{align-items:center;gap:var(--s-2);color:var(--text-muted);margin-left:auto;display:flex}.room-card__count{min-width:28px;padding:2px var(--s-2);border-radius:var(--r-full);background:var(--surface-2);font:var(--f-label);text-align:center}@media (width>=640px){.rooms__list{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.room-card{min-height:128px}.room-card__main{justify-content:space-between;align-items:flex-start;gap:var(--s-4);padding:var(--s-5);flex-direction:column}.room-card__text{width:100%}.room-card__toggle{top:var(--s-4);right:var(--s-4);translate:none}.room-card__more{top:var(--s-5);right:var(--s-5);position:absolute}.home__top{grid-template-columns:minmax(0,1fr) auto;align-items:end}.scenes{flex-wrap:wrap;justify-content:flex-end;margin:0;padding:0;overflow:visible}}.readings{gap:var(--tile-gap);grid-template-columns:repeat(auto-fit,minmax(104px,1fr));display:grid}.kpi{gap:var(--s-1);padding:var(--s-3) var(--s-4);flex-direction:column;display:flex}@media (width>=640px){.kpi{padding:var(--s-4) var(--s-5)}}.kpi__label{align-items:center;gap:var(--s-2);font:var(--f-label);letter-spacing:var(--ls-label);color:var(--text-muted);display:flex}.kpi__label svg{flex:none}.kpi__value{letter-spacing:var(--ls-title-2);font-variant-numeric:tabular-nums;font-size:clamp(1.15rem,.95rem + 1.2vw,1.75rem);font-weight:450;line-height:1.15}.kpi__unit{color:var(--text-muted);margin-left:3px;font-size:.55em;font-weight:400}.skel{background:var(--surface-2);border-radius:var(--r-s);animation:1.4s linear 7 skel-pulse}@keyframes skel-pulse{50%{opacity:.55}}.skel--line{width:min(280px,80%);height:24px}.room-card--skeleton{align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4)}.skel--icon{border-radius:50%;flex:none;width:40px;height:40px}.skel-text{gap:var(--s-2);flex:1;display:grid}.skel--name{width:50%;height:20px}.skel--state{width:70%;height:16px}@media (width>=640px){.room-card--skeleton{padding:var(--s-5);flex-direction:column;justify-content:space-between;align-items:flex-start}.skel-text{flex:none;width:100%}}.card-glass{background:var(--glass), var(--surface);border:1px solid var(--glass-border);border-radius:var(--r-l);box-shadow:var(--glass-shadow)}.dash{gap:var(--s-4);grid-template-columns:minmax(0,1fr);grid-template-areas:"greet""hero""widgets""rooms""readings";display:grid}.dash-greeting{grid-area:greet}.dash-hero{grid-area:hero}.dash__widgets{gap:var(--s-4);grid-area:widgets;min-width:0;display:grid}.dash__devices{grid-area:devices;min-width:0;display:none}.dash__rooms{grid-area:rooms;min-width:0}.dash>.summary{grid-area:readings}@media (width>=640px){.dash{gap:var(--s-5)}.dash__widgets{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-climate{grid-row:span 2}}@container main (width>=860px){.dash{gap:var(--s-6);grid-template-columns:minmax(0,1fr) minmax(320px,380px);grid-template-areas:"greet greet""hero widgets""devices widgets""readings readings";align-items:start}.dash__widgets{grid-template-columns:minmax(0,1fr)}.dash-climate{grid-row:auto}.dash__devices{display:block}.dash__rooms{display:none}}.dash-greeting{justify-content:space-between;align-items:flex-end;gap:var(--s-4) var(--s-6);padding-top:var(--s-2);flex-wrap:wrap;display:flex}.dash-greeting__date{margin:0 0 var(--s-1);font:var(--f-label);letter-spacing:var(--ls-caption);text-transform:uppercase;color:var(--text-muted)}.dash-greeting__title{font-family:var(--font-serif);letter-spacing:-.01em;margin:0;font-size:clamp(2.25rem,4vw + 1rem,3.5rem);font-weight:400;line-height:1.02}.dash-pills{gap:var(--s-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.dash-pill{align-items:center;gap:var(--s-2);min-height:36px;padding:0 var(--s-4);border:1px solid var(--glass-border);border-radius:var(--r-full);background:var(--glass), var(--surface);font:var(--f-label);color:var(--text);display:inline-flex}@media (width<=639px){.dash-greeting{gap:var(--s-3)}.dash-pills{width:calc(100% + 2 * var(--gutter));margin:0 calc(-1 * var(--gutter));padding:0 var(--gutter);scrollbar-width:none;flex-wrap:nowrap;overflow-x:auto}.dash-pill{flex:none}}.dash-pill svg{color:var(--text-muted)}.dash-pill.is-on svg{color:var(--accent-ink)}.dash-hero{padding:var(--s-3) var(--s-3) var(--s-9);position:relative;overflow:hidden}@media (width>=1024px){.dash-hero{padding:var(--s-4) var(--s-6) var(--s-10)}}.dash-hero:before{content:"";pointer-events:none;background:radial-gradient(70% 60% at 60% 45%,#f2b65c1a,#0000 70%);position:absolute;inset:0}.dash-hero__plan{position:relative}.dash-hero__plan .floorplan__scroll{overflow:visible}.dash-hero__plan .floorplan__svg{min-width:0;max-height:none}.dash-hero__caption{left:var(--s-6);bottom:var(--s-5);pointer-events:none;gap:2px;display:grid;position:absolute}.dash-hero__eyebrow{align-items:center;gap:var(--s-2);font:var(--f-caption);letter-spacing:var(--ls-caption);text-transform:uppercase;color:var(--text-muted);display:inline-flex}.dash-hero__live{background:var(--accent);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #f2b65c33}.dash-hero__title{font-family:var(--font-serif);font-size:clamp(1.75rem,2vw + 1rem,2.5rem);line-height:1.05}@media (width<=639px){.dash-hero{padding:var(--s-2) var(--s-2) var(--s-8)}.dash-hero .labels{display:none}.dash-hero__caption{left:var(--s-4);bottom:var(--s-3)}}.dash-card{gap:var(--s-3);min-width:0;padding:var(--s-5);align-content:start;display:grid}.dash-card__head{justify-content:space-between;align-items:center;gap:var(--s-3);min-width:0;display:flex}.dash-card__title{align-items:baseline;gap:var(--s-2);font:var(--f-headline);letter-spacing:var(--ls-headline);margin:0;display:flex}.dash-card__meta,.dash-card__count{font:var(--f-label);color:var(--text-muted)}.dash-seg{border-radius:var(--r-full);background:var(--surface-2);padding:3px;display:inline-flex}.dash-seg__btn{min-height:32px;padding:0 var(--s-3);border-radius:var(--r-full);font:var(--f-label);color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:0}.dash-seg__btn[aria-selected=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #00000040}.dial{justify-items:center;display:grid;position:relative}.dial__svg{width:min(100%,260px);height:auto;overflow:visible}.dial__track{fill:none;stroke:var(--surface-2);stroke-width:6px;stroke-linecap:round}.dial__value{fill:none;stroke:var(--border-strong);stroke-width:6px;stroke-linecap:round;transition:stroke var(--dur-color) var(--ease-out)}.dial.is-on .dial__value{stroke:var(--accent);filter:drop-shadow(0 0 6px #f2b65c8c)}.dial__tick{stroke:var(--border);stroke-width:1.2px;stroke-linecap:round}.dial__tick.is-active{stroke:var(--accent)}.dial__knob{fill:var(--surface);stroke:var(--border-strong);stroke-width:2px}.dial.is-on .dial__knob{fill:var(--accent);stroke:#fff7e8}.dial__center{justify-items:center;gap:var(--s-1);display:grid;position:absolute;top:26%}.dial__temp{font:var(--f-display);letter-spacing:var(--ls-display);font-variant-numeric:tabular-nums}.dial__unit{vertical-align:super;color:var(--text-muted);font-size:.45em}.dial__mode{font:var(--f-label);color:var(--text-muted);align-items:center;gap:6px;display:inline-flex}.dial.is-on .dial__mode{color:var(--accent-ink)}.dial__controls{align-items:center;gap:var(--s-4);margin-top:calc(-1 * var(--s-6));display:flex}.dial__btn,.dial__power{border:1px solid var(--glass-border);background:var(--surface-2);width:48px;height:48px;color:var(--text);font:400 1.5rem / 1 var(--font-sans);cursor:pointer;transition:background var(--dur-color) var(--ease-out);border-radius:50%;place-items:center;display:inline-grid}.dial__power.is-on{background:var(--accent);color:var(--on-accent);box-shadow:var(--glow);border-color:#0000}.dial__btn:disabled,.dial__power:disabled{opacity:.4;cursor:default}.dial__ambient{margin:var(--s-3) 0 0;font:var(--f-callout);color:var(--text-muted)}.dash-energy__now{align-items:baseline;gap:var(--s-2);margin:0;display:flex}.dash-energy__value{font:300 2.75rem / 1 var(--font-sans);letter-spacing:-.03em;font-variant-numeric:tabular-nums}.dash-energy__unit{font:var(--f-headline);color:var(--text-muted)}.dash-energy__label{font:var(--f-label);color:var(--text-muted);margin-left:auto}.bars{align-items:flex-end;gap:3px;height:72px;display:flex}.bars__bar{background:linear-gradient(#f2b65c99,#f2b65c1a);border-radius:3px 3px 1px 1px;flex:1;min-width:0}.bars__bar.is-now{background:var(--accent);box-shadow:0 0 12px #f2b65c73}.bars__axis{font:var(--f-caption);color:var(--text-faint);justify-content:space-between;display:flex}.dash-lights__off{min-height:36px;padding:0 var(--s-3);font:var(--f-label)}.dash-lights__list{gap:var(--s-2);grid-template-columns:repeat(auto-fill,minmax(132px,1fr));margin:0;padding:0;list-style:none;display:grid}.light-pill{column-gap:var(--s-2);width:100%;min-height:var(--target);padding:var(--s-2) var(--s-3);border:1px solid var(--glass-border);border-radius:var(--r-m);background:var(--surface-2);color:var(--text);text-align:left;cursor:pointer;transition:background var(--dur-color) var(--ease-out), box-shadow var(--dur-color) var(--ease-out);grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-items:center;display:grid}.light-pill svg{color:var(--text-muted);grid-row:span 2}.light-pill__room{font:var(--f-label);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.light-pill__state{font:var(--f-caption);color:var(--text-muted)}.light-pill.is-on{background:var(--accent);color:var(--on-accent);box-shadow:var(--glow);border-color:#0000}.light-pill.is-on svg,.light-pill.is-on .light-pill__state{color:var(--on-accent)}.light-pill.is-pending{opacity:.7}.light-pill:disabled{opacity:.4;cursor:default}.device-list{margin:0;padding:0;list-style:none}.device-row{align-items:center;gap:var(--s-3);border-top:1px solid var(--glass-border);display:flex}.device-row:first-child{border-top:0}.device-row__main{align-items:center;gap:var(--s-3);min-width:0;min-height:60px;padding:var(--s-2) 0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:1;grid-template-columns:40px minmax(0,1fr) auto;display:grid}.device-row__icon{border-radius:var(--r-s);background:var(--surface-2);width:40px;height:40px;color:var(--text-muted);place-items:center;display:inline-grid}.device-row.is-on .device-row__icon{background:var(--accent-soft);color:var(--accent-ink)}.device-row__text{min-width:0;display:grid}.device-row__name{font:var(--f-headline);text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.device-row__room{font:var(--f-label);color:var(--text-muted)}.device-row__status{align-items:center;gap:var(--s-2);font:var(--f-label);color:var(--text-muted);white-space:nowrap;display:inline-flex}.device-row__dot{background:var(--border-strong);border-radius:50%;width:7px;height:7px}.device-row.is-on .device-row__dot{background:var(--accent);box-shadow:0 0 8px #f2b65cb3}.device-row.is-on .device-row__status{color:var(--text)}.device-row.is-unavailable .device-row__dot{background:var(--danger);box-shadow:none}.rooms-page{gap:var(--s-5);display:grid}.rooms-page__title{margin:var(--s-2) 0 0;font-family:var(--font-serif);font-size:clamp(2.25rem,4vw + 1rem,3rem);font-weight:400;line-height:1.05}@media (prefers-reduced-motion:reduce){.light-pill,.dial__value,.dial__btn,.dial__power{transition:none}}.avatar{color:#f5e3c4;letter-spacing:.02em;-webkit-user-select:none;user-select:none;background:radial-gradient(circle at 30% 25%,#2d2924,#171513);border-radius:50%;flex:none;place-items:center;font-weight:500;display:inline-grid;box-shadow:0 0 0 1px #f2b65c8c,0 0 0 3px #f2b65c14}:root[data-theme=light] .avatar{background:var(--accent-soft);color:var(--accent-ink)}.profile{align-items:center;gap:var(--s-4);margin-bottom:var(--s-2);padding:var(--s-5);display:flex}.profile__text{flex:1;min-width:0;display:grid}.profile__name{font-family:var(--font-serif);text-overflow:ellipsis;white-space:nowrap;font-size:1.75rem;line-height:1.1;overflow:hidden}.profile__detail{font:var(--f-label);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.profile__out{flex:none}.profile__out.is-armed{border-color:var(--accent);color:var(--accent-ink)}.header__avatar{width:var(--target);height:var(--target);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:inline-grid}.header__avatar:focus-visible{outline:2px solid var(--ring);outline-offset:2px}@media (width>=1024px){.header__avatar{display:none}}.sidebar__profile{align-items:center;gap:var(--s-3);width:100%;min-height:var(--target);padding:var(--s-2);border-radius:var(--r-m);color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.sidebar__profile:hover{background:var(--surface-2)}.sidebar__avatar{flex:none;display:inline-flex;position:relative}.presence{background:var(--ok);width:10px;height:10px;box-shadow:0 0 0 2px var(--bg);border-radius:50%;position:absolute;bottom:-1px;right:-1px}.presence--connected{animation:2.4s ease-in-out infinite presence-pulse}.presence--reconnecting{background:var(--accent-ink);animation:1s steps(2,start) infinite blink}.presence--offline{background:var(--danger)}.sidebar__profile:hover .presence{box-shadow:0 0 0 2px var(--surface-2)}@keyframes presence-pulse{50%{opacity:.45}}.sidebar__profile-text{min-width:0;display:grid}.sidebar__profile-name{font:var(--f-label);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.sidebar__profile-detail{font:var(--f-caption);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (width>=1024px) and (width<=1279px){.sidebar__profile{justify-content:center}.sidebar__profile-text{display:none}}.rpanel-scrim{z-index:40;background:var(--scrim);transition:opacity .2s;animation:.2s rscrim-in;position:fixed;inset:0}.rpanel-scrim.is-closing{opacity:0}.rpanel{--detent:55dvh;z-index:41;width:min(560px,100%);max-height:var(--detent);border:1px solid var(--border);border-radius:var(--r-l) var(--r-l) 0 0;background:var(--surface);box-shadow:var(--shadow-sheet);animation:rsheet-in var(--dur-sheet-in) var(--ease-out);transition:max-height var(--dur-fill) var(--ease-out), transform var(--dur-sheet-out) var(--ease-out), opacity var(--dur-fade) ease;border-bottom:0;flex-direction:column;margin-inline:auto;display:flex;position:fixed;bottom:0;left:0;right:0}.rpanel[data-detent=full]{--detent:92dvh}@media (width<=359px){.rpanel{--detent:92dvh}}.rpanel.is-dragging{transition:none}.rpanel.is-closing{transform:translateY(100%)}.rpanel__drag{touch-action:none;-webkit-user-select:none;user-select:none;flex:none}.rpanel__grabber{width:36px;height:5px;margin:var(--s-3) auto var(--s-2);border-radius:var(--r-full);background:var(--border-strong)}.rpanel__head{justify-content:space-between;align-items:flex-start;gap:var(--s-3);padding:var(--s-1) var(--s-5) var(--s-4);display:flex}.rpanel__heading{min-width:0}.rpanel__title{font:var(--f-title-1);letter-spacing:var(--ls-title-1);overflow-wrap:anywhere;margin:0;font-size:1.75rem}.rpanel__meta{margin:var(--s-1) 0 0;font:var(--f-callout);color:var(--text-muted)}.rpanel__body{overscroll-behavior:contain;min-height:0;padding:0 var(--s-5) max(var(--s-6), env(safe-area-inset-bottom));flex:auto;overflow-y:auto}@media (width>=640px) and (width<=1023px){.rdevs{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=1024px),(height<=500px) and (width>=640px){.rpanel{top:var(--panel-top,calc(var(--header-h) + env(safe-area-inset-top)));border:0;border-left:1px solid var(--border);width:min(360px,100%);max-height:none;box-shadow:none;animation:rpanel-in .24s var(--ease-out);border-radius:0;margin:0;left:auto}.rpanel.is-closing{opacity:0;transition-duration:.16s;transform:translate(16px)}.rpanel__grabber{display:none}.rpanel__head{padding:var(--s-6) var(--s-6) var(--s-4)}.rpanel__title{font-size:var(--fs-title-2);letter-spacing:var(--ls-title-2)}.rpanel__body{padding:0 var(--s-6) var(--s-6)}.rdevs{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1024px){.rpanel{width:var(--panel-w);box-shadow:-16px 0 48px #00000047}}@media (width>=1280px){.rpanel-scrim{display:none}}.is-panel .rpanel-scrim{display:none}.is-panel .rpanel{--panel-w:480px;--target:56px}.is-panel .rpanel__title{font-size:calc(var(--fs-title-2) * 1.25)}.rpanel.is-swap{animation:none}.rpanel.is-swap .rpanel__drag,.rpanel.is-swap .rpanel__body{animation:rfade-in var(--dur-fade) var(--ease-out)}@keyframes rsheet-in{0%{transform:translateY(100%)}}@keyframes rpanel-in{0%{opacity:0;transform:translate(16px)}}@keyframes rfade-in{0%{opacity:0}}@keyframes rscrim-in{0%{opacity:0}}.rdevs{gap:var(--tile-gap);grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;display:grid}.rdev{gap:var(--s-2);flex-direction:column;min-width:0;display:flex}.rdev.is-wide,.rdev:only-child{grid-column:1/-1}.rdev__controls{gap:var(--s-4);flex-direction:column;display:flex}.rdev__controls[hidden]{display:none}.dtile{border:1px solid var(--border);border-radius:var(--r-m);background:var(--surface);color:var(--text);transition:background var(--dur-fill) var(--ease-in-out), border-color var(--dur-fill) var(--ease-in-out), transform var(--dur-tap) var(--ease-out);position:relative}.dtile.is-on{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.dtile.is-error{border-color:var(--danger)}.dtile:has(.dtile__main:active){background:var(--surface-2);transform:scale(.98)}.dtile.is-on:has(.dtile__main:active){background:color-mix(in srgb, var(--accent) 94%, black)}@media (hover:hover){.dtile:not(.is-on):has(.dtile__main:hover){background:var(--surface-2)}}.dtile__main{align-items:start;gap:var(--s-3);width:100%;min-height:104px;padding:var(--s-4);border-radius:inherit;color:inherit;text-align:left;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background:0 0;border:0;grid-template-rows:auto 1fr;grid-template-columns:minmax(0,1fr) auto;display:grid}@media (width>=640px){.dtile__main{min-height:120px;padding:var(--s-5)}}.dtile__icon{background:var(--surface-2);width:36px;height:36px;color:var(--text-muted);transition:background var(--dur-fill) var(--ease-in-out), color var(--dur-fill) var(--ease-in-out);border-radius:50%;place-items:center;display:grid}.dtile.is-on .dtile__icon{background:color-mix(in srgb, var(--on-accent) 12%, transparent);color:var(--on-accent)}.dtile__track{border:1.5px solid var(--border-strong);border-radius:var(--r-full);background:var(--surface-2);width:44px;height:26px;transition:background var(--dur-color) var(--ease-out), border-color var(--dur-color) var(--ease-out);position:relative}.dtile__thumb{border:1px solid var(--border-strong);background:var(--thumb-off);width:20px;height:20px;transition:transform var(--dur-thumb) var(--spring), background var(--dur-color) var(--ease-out);border-radius:50%;position:absolute;top:1.5px;left:1.5px}.dtile.is-on .dtile__track{border-color:var(--on-accent);background:0 0}.dtile.is-on .dtile__thumb{border-color:var(--on-accent);background:var(--on-accent);transform:translate(18px)}.dtile.is-pending .dtile__thumb{animation:.9s ease-in-out infinite dtile-pulse;transform:translate(9px)}@keyframes dtile-pulse{50%{opacity:.4}}.dtile__text{flex-direction:column;grid-column:1/-1;align-self:end;gap:2px;min-width:0;display:flex}.dtile.has-more .dtile__text{padding-right:var(--s-6)}.dtile__name{-webkit-line-clamp:2;line-clamp:2;font:var(--f-headline);letter-spacing:var(--ls-headline);overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.dtile__state{font:var(--f-label);letter-spacing:var(--ls-label);color:var(--text-muted)}.dtile.is-on .dtile__state{color:inherit}.dtile.is-error .dtile__state{padding:2px var(--s-2);border-radius:var(--r-xs);background:var(--surface);color:var(--danger);align-self:flex-start;margin-top:2px;font-weight:600}.dtile__more{right:var(--s-1);bottom:var(--s-1);width:var(--target);height:var(--target);border-radius:var(--r-s);color:inherit;cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid;position:absolute}.dtile__more svg{transition:transform .2s var(--ease-out)}.dtile__more[aria-expanded=true] svg{transform:rotate(180deg)}.dtile__more:active{background:color-mix(in srgb, currentColor 10%, transparent)}.dtile__main:focus-visible,.dtile__more:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.dtile.is-unavailable .dtile__icon{color:var(--text-muted)}@media (prefers-reduced-motion:reduce){.dtile.is-pending .dtile__thumb{opacity:.5}.dtile:has(.dtile__main:active){transform:none}}.rdev__controls.climate-panel{gap:var(--s-2);container-type:inline-size}.dtile--row{align-items:center;gap:var(--s-3);min-height:var(--target);background:0 0;border:0;grid-template-columns:36px minmax(0,1fr) auto auto;display:grid}.dtile--row.is-on{color:var(--text);background:0 0}.dtile--row.is-on .dtile__icon{background:var(--surface-2);color:var(--text-muted)}.dtile--row .dtile__text,.dtile--row.has-more .dtile__text{grid-column:auto;align-self:center;padding-right:0}.dtile--row .dtile__name{-webkit-line-clamp:1;line-clamp:1}.dtile--row .dtile__state,.dtile--row.is-on .dtile__state{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dtile--row .dtile__more{color:var(--text-muted);position:static}.dtile__power{width:var(--power,44px);height:var(--power,44px);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);cursor:pointer;transition:background var(--dur-color) var(--ease-out), border-color var(--dur-color) var(--ease-out), box-shadow var(--dur-color) var(--ease-out);border-radius:50%;place-items:center;padding:0;display:grid}.dtile.is-on .dtile__power{background:var(--accent);color:var(--on-accent);box-shadow:var(--glow);border-color:#0000}.dtile.is-pending .dtile__power{animation:.9s ease-in-out infinite dtile-pulse}.dtile__power:disabled{opacity:.4;cursor:not-allowed}.dtile__power:active:not(:disabled){transform:scale(.96)}.dtile__power:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.dial--room{margin-top:-10px}.dial--room .dial__svg{width:168px}.dial--room .dial__center{gap:2px;top:25%}.dial--room .dial__temp{font-size:3rem}.dial--room:not(.is-on) .dial__temp{color:var(--text-muted)}.dial__ctl{--step:56px;grid-template-columns:var(--step) minmax(0, 1fr) var(--step);align-items:center;width:100%;margin-top:-50px;padding:0 10px;display:grid}.dial__step{width:var(--step);height:var(--step);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font:400 1.75rem / 1 var(--font-sans);cursor:pointer;transition:background var(--dur-color) var(--ease-out);border-radius:50%;padding:0}.dial__step:active:not(:disabled){background:var(--border)}.dial__step:disabled{border-color:var(--border);color:var(--text-faint);cursor:not-allowed}@media (hover:hover){.dial__step:hover:not(:disabled){background:var(--border)}}.dial__hint{padding-bottom:var(--s-1);font:var(--f-caption);letter-spacing:var(--ls-caption);text-align:center;text-transform:uppercase;color:var(--text-faint);align-self:end}.fan{min-height:var(--target);padding:0 var(--s-1);transition:opacity var(--dur-color) var(--ease-out);grid-template-columns:auto auto minmax(0,1fr) auto;grid-template-areas:"label auto bars word";align-items:center;column-gap:10px;display:grid}.fan--many{grid-template-columns:auto auto minmax(0,1fr);grid-template-areas:"label auto word""bars bars bars"}@container (width<=340px){.fan:not(.fan--many){grid-template-columns:auto auto minmax(0,1fr)}.fan:not(.fan--many) .fan__word{display:none}}.fan__label{font:var(--f-label);letter-spacing:var(--ls-label);color:var(--text-muted);grid-area:label}.fan__auto{height:32px;padding:0 var(--s-3);border:1px solid var(--border-strong);border-radius:var(--r-full);background:var(--surface);color:var(--text);font:var(--f-label);cursor:pointer;transition:background var(--dur-color) var(--ease-out), border-color var(--dur-color) var(--ease-out);grid-area:auto;position:relative}.fan__auto:before{content:"";inset:calc((32px - var(--target)) / 2) -4px;position:absolute}.fan__auto.is-active{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.fan__bars{grid-area:bars;grid-template-columns:repeat(var(--n), minmax(var(--target), 1fr));height:var(--target);border-radius:var(--r-xs);cursor:pointer;touch-action:pan-y;-webkit-user-select:none;user-select:none;display:grid}.fan__step{align-items:flex-end;padding:0 1.5px 7px;display:flex}.fan__bar{width:100%;height:var(--h);box-shadow:inset 0 0 0 1.5px var(--border-strong);transition:background var(--dur-tap) var(--ease-out), box-shadow var(--dur-tap) var(--ease-out);border-radius:4px}.fan__step.is-lit .fan__bar{background:var(--accent);box-shadow:none}.fan__word{min-width:3.5em;font:var(--f-label);letter-spacing:var(--ls-label);text-align:right;white-space:nowrap;color:var(--text-muted);grid-area:word}.fan.is-off{opacity:.45}.fan.is-off .fan__bars,.fan.is-off .fan__auto{cursor:not-allowed}.fan__bars:focus-visible,.fan__auto:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.seg{grid-template-columns:repeat(var(--n), minmax(0, 1fr));border-radius:var(--r-m);background:var(--surface-2);gap:2px;padding:3px;display:grid}.seg__btn{min-width:0;height:var(--seg-h,56px);border-radius:calc(var(--r-m) - 3px);color:var(--text-muted);font:var(--f-caption);letter-spacing:.01em;cursor:pointer;transition:background var(--dur-color) var(--ease-out), color var(--dur-color) var(--ease-out);background:0 0;border:0;align-content:center;justify-items:center;gap:3px;padding:0 2px;display:grid}.seg__label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.seg__btn.is-active{background:var(--accent);color:var(--on-accent);font-weight:600}.seg__btn:disabled{cursor:not-allowed}.seg__btn:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}@media (hover:hover){.seg__btn:hover:not(:disabled):not(.is-active){color:var(--text)}}@media (width>=1024px),(height<=500px) and (width>=640px){.rdev__controls.climate-panel{gap:var(--s-4)}.dtile--row{--power:48px}.dial--room{margin-top:0}.dial--room .dial__svg{width:260px}.dial--room .dial__temp{font-size:4rem}.dial__ctl{padding:0 var(--s-5);margin-top:-34px}.seg{--seg-h:60px}}.is-panel .rpanel .dtile--row{--power:56px}.is-panel .rpanel .dial--room .dial__svg{width:300px}.is-panel .rpanel .dial--room .dial__temp{font-size:5.25rem}.is-panel .rpanel .dial__ctl{--step:72px}.is-panel .rpanel .fan__auto{height:40px;padding:0 var(--s-4)}.is-panel .rpanel .fan__auto:before{inset:calc((40px - var(--target)) / 2) -4px}.is-panel .rpanel .fan__step{padding-bottom:10px}.is-panel .rpanel .fan__bar{height:calc(var(--h) * 1.3 + 2px)}.is-panel .rpanel .seg{--seg-h:64px}@media (prefers-reduced-motion:reduce){.dtile.is-pending .dtile__power{opacity:.6;animation:none}.dtile__power:active:not(:disabled){transform:none}}.climate{gap:var(--s-4);flex-direction:column;display:flex}.climate:not(:last-child){margin-bottom:var(--s-4)}.chips__label{margin:0 2px var(--s-2);font:var(--f-label);letter-spacing:var(--ls-label);color:var(--text-muted);display:block}.chips__row{gap:var(--s-2);flex-wrap:wrap;display:flex}.details__toggle{justify-content:space-between;align-items:center;gap:var(--s-2);width:100%;min-height:var(--target);padding:0 var(--s-3);border-radius:var(--r-s);color:var(--text-muted);font:var(--f-label);text-align:left;cursor:pointer;background:0 0;border:0;font-weight:600;display:flex}.details__toggle:active{background:var(--surface-2)}@media (hover:hover){.details__toggle:hover{background:var(--surface-2);color:var(--text)}}.details__toggle svg{transition:transform .2s var(--ease-out);flex:none}.details__summary{font-variant-numeric:tabular-nums;color:var(--text-faint);margin-left:auto;font-weight:400}@media (hover:hover){.details__toggle:hover .details__summary{color:var(--text-muted)}}.details.is-open .details__toggle svg{transform:rotate(180deg)}.details__body{padding-top:var(--s-2)}.device__meta{justify-content:space-between;align-items:center;gap:var(--s-1) var(--s-3);margin:0 var(--s-1) var(--s-4);font:var(--f-reading);color:var(--text-muted);flex-wrap:wrap;display:flex}.wifi{white-space:nowrap;color:var(--text-muted);align-items:center;gap:6px;display:inline-flex}.wifi__bars rect{fill:var(--border)}.wifi__bars .is-lit{fill:var(--text)}.wifi--weak,.wifi--poor{font-weight:600}.wifi--poor{color:var(--danger)}.wifi--weak{color:var(--text)}.wifi__dbm{font-variant-numeric:tabular-nums;font-weight:400}.tiles{gap:var(--s-3);margin-bottom:var(--s-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.tile{gap:var(--s-1);min-width:0;padding:var(--s-3) var(--s-4);border:1px solid var(--border);border-radius:var(--r-s);background:var(--bg);flex-direction:column;display:flex}.tile__label{color:var(--text-muted);font:var(--f-label);letter-spacing:var(--ls-label);align-items:center;gap:6px;display:flex}.tile__icon{display:inline-flex}.tile__value{font:var(--f-reading);font-size:var(--fs-headline);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.tile__unit{font:var(--f-callout);color:var(--text-muted)}.chart{padding:var(--s-4);border:1px solid var(--border);border-radius:var(--r-s);background:var(--bg);margin:0}.chart__head{justify-content:space-between;align-items:baseline;gap:var(--s-2);margin-bottom:var(--s-3);display:flex}.chart__title{font:var(--f-label);font-weight:600}.chart__peak{font:var(--f-label);color:var(--text-muted);font-variant-numeric:tabular-nums}.chart__svg{width:100%;height:120px;display:block}.chart__line{fill:none;stroke:var(--accent-ink);stroke-width:1.75px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.chart__area{fill:url(#chart-fill)}.chart__stop{stop-color:var(--accent)}.chart__grid{stroke:var(--border);vector-effect:non-scaling-stroke}.chart__axis{margin-top:var(--s-2);font:var(--f-caption);color:var(--text-muted);justify-content:space-between;display:flex}.chart__message{margin:var(--s-7) 0;text-align:center;color:var(--text-muted);font:var(--f-callout)}.status{min-height:100dvh;padding:var(--s-6) var(--gutter);place-items:center;display:grid}.status__col{justify-items:center;gap:var(--s-4);text-align:center;width:100%;max-width:360px;display:grid}.status__bar{background:var(--border);border-radius:1px;width:120px;height:2px;position:relative;overflow:hidden}.status__bar:after{content:"";background:var(--accent);width:40%;animation:status-bar 1.4s var(--ease-in-out) infinite;position:absolute;inset:0 auto 0 0}@keyframes status-bar{0%{transform:translate(-100%)}to{transform:translate(300%)}}@media (prefers-reduced-motion:reduce){.status__bar:after{opacity:.5;width:100%}}.status__caption,.status__slow{font:var(--f-callout);color:var(--text-muted);margin:0}.status__icon{color:var(--text-muted);place-items:center;display:grid}.status__title{font:var(--f-title-2);letter-spacing:var(--ls-title-2);margin:0}.status__body{font:var(--f-body);margin:0}.status__body--muted{color:var(--text-muted)}.status__actions{gap:var(--s-3);width:100%;margin-top:var(--s-2);display:grid}.status__actions .btn{width:100%;text-decoration:none}.is-panel .status__col{max-width:450px}.is-panel .status__title{font-size:calc(var(--fs-title-2) * 1.25)}.is-panel .status__body,.is-panel .status__caption,.is-panel .status__slow{font-size:calc(var(--fs-body) * 1.25)}.skeleton{border-radius:var(--r-s);background:var(--surface-2);animation:1.4s linear 7 skeleton-pulse}@keyframes skeleton-pulse{50%{opacity:.94}}.login{isolation:isolate;min-height:100dvh;padding:max(var(--s-7), env(safe-area-inset-top)) var(--gutter) max(var(--s-7), env(safe-area-inset-bottom));place-items:center;display:grid;position:relative;overflow:hidden}.login:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(60rem 36rem at 50% -14rem,#f2b65c1f,#0000 70%),radial-gradient(40rem 30rem at 50% 115%,#f2b65c0d,#0000 70%);position:absolute;inset:0}:root[data-theme=light] .login:before{background:radial-gradient(60rem 36rem at 50% -14rem,#f3b65a38,#0000 70%),radial-gradient(40rem 30rem at 50% 115%,#f3b65a14,#0000 70%)}@media (prefers-color-scheme:light){:root:not([data-theme]) .login:before{background:radial-gradient(60rem 36rem at 50% -14rem,#f3b65a38,#0000 70%),radial-gradient(40rem 30rem at 50% 115%,#f3b65a14,#0000 70%)}}.login__card{width:100%;max-width:26rem}.login__brand{margin-bottom:var(--s-8);justify-content:center;display:flex}.login__step{animation:login-in var(--dur-sheet-in) var(--ease-out);display:grid}@keyframes login-in{0%{opacity:0;transform:translateY(6px)}}.login__title{font:400 2.75rem / 1.05 var(--font-serif);letter-spacing:-.01em;text-align:center;text-wrap:balance;margin:0}.login__title:focus{outline:none}.login__lead{margin:var(--s-3) 0 0;color:var(--text-muted);font:var(--f-callout);text-align:center;text-wrap:pretty;overflow-wrap:anywhere}.login__form{gap:var(--s-5);margin-top:var(--s-7);display:grid}.field{gap:var(--s-2);display:grid}.field__label{color:var(--text);font:var(--f-label);letter-spacing:var(--ls-label)}.field__box{align-items:center;display:flex;position:relative}.field__input{width:100%;min-width:0;min-height:max(52px, var(--target));padding:0 var(--s-4);border:1px solid var(--border-strong);border-radius:var(--r-s);background:var(--surface);color:var(--text);font:var(--f-body);font-feature-settings:"cv11", "ss01";transition:border-color var(--dur-color) var(--ease-out), box-shadow var(--dur-color) var(--ease-out)}:root[data-theme=dark] .field__input{background:#00000047}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .field__input{background:#00000047}}.field__input:focus{border-color:var(--accent-ink);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent-ink) 30%, transparent);outline:none}.field__input[readonly]{color:var(--text-muted)}.field__input:-webkit-autofill{-webkit-text-fill-color:var(--text);box-shadow:0 0 0 100px var(--surface) inset;caret-color:var(--text)}.field__input:-webkit-autofill:focus{box-shadow:0 0 0 100px var(--surface) inset, 0 0 0 3px color-mix(in srgb, var(--accent-ink) 30%, transparent)}.field__box:has(.field__reveal) .field__input{padding-right:calc(var(--target) + var(--s-2))}.field--invalid .field__input{border-color:var(--danger)}.field__error{color:var(--danger);font:var(--f-callout);margin:0}.field--code .field__input{letter-spacing:.3em;font-feature-settings:"tnum";font-size:1.5rem;font-weight:500}.field--code .field__input::placeholder{letter-spacing:.3em}.field__reveal{right:max(4px, calc((max(52px, var(--target)) - var(--target)) / 2));width:var(--target);height:var(--target);border-radius:var(--r-xs);color:var(--text-muted);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid;position:absolute}@media (hover:hover){.field__reveal:hover{color:var(--text)}}.rules{margin-top:calc(var(--s-2) * -1)}.rules__list{gap:var(--s-2) var(--s-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,10.5rem),1fr));margin:0;padding:0;list-style:none;display:grid}.rules__item{align-items:center;gap:var(--s-2);color:var(--text-muted);font:var(--f-callout);transition:color var(--dur-color) var(--ease-out);display:inline-flex}.rules__mark{border:1.5px solid var(--border-strong);width:18px;height:18px;transition:background var(--dur-color) var(--ease-out), border-color var(--dur-color) var(--ease-out);border-radius:50%;flex:none;place-items:center;display:grid}.rules__item.is-met{color:var(--text)}.rules__item.is-met .rules__mark{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.login__error,.login__notice{align-items:flex-start;gap:var(--s-2);font:var(--f-callout);margin:0;display:flex}.login__error svg,.login__notice svg{flex:none;margin-top:1px}.login__error{color:var(--danger)}.login__notice{padding:var(--s-3) var(--s-4);border-radius:var(--r-s);background:var(--accent-soft);color:var(--text)}.login__notice svg{color:var(--accent-ink)}.login__submit{width:100%;min-height:max(52px, var(--target));margin-top:var(--s-1);border-color:var(--accent);background:var(--accent);color:var(--on-accent);font:var(--f-headline);letter-spacing:var(--ls-headline)}@media (hover:hover){.login__submit:hover{background:color-mix(in srgb, var(--accent) 88%, white)}}.login__submit[aria-disabled=true]{cursor:progress}.login__spinner{border:2px solid color-mix(in srgb, var(--on-accent) 30%, transparent);border-top-color:var(--on-accent);border-radius:50%;width:18px;height:18px;animation:.8s linear infinite login-spin}@keyframes login-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.login__spinner{border-color:var(--on-accent);border-right-color:#0000}}.login__footer{justify-items:center;gap:var(--s-1);margin-top:var(--s-4);display:grid}.login__link{justify-content:center;align-items:center;gap:var(--s-2);min-height:var(--target);padding:0 var(--s-3);border-radius:var(--r-xs);color:var(--text-muted);font:var(--f-callout);text-align:center;cursor:pointer;background:0 0;border:0;font-weight:500;display:inline-flex}@media (hover:hover){.login__link:hover:not(:disabled){color:var(--text);text-underline-offset:3px;text-decoration:underline}}.login__link:disabled{color:var(--text-faint);cursor:default}@media (width>=600px){.login__card{max-width:30rem;padding:var(--s-8) var(--s-8) var(--s-7);border:1px solid var(--glass-border);border-radius:var(--r-l);background:var(--glass), var(--surface);box-shadow:var(--glass-shadow)}}@media (width<=359px){.login__title{font-size:2.25rem}.login__brand{margin-bottom:var(--s-7)}}@media (width>=600px) and (height<=880px){.login{padding-block:var(--s-5)}.login__card{padding:var(--s-7) var(--s-8) var(--s-5)}.login__brand{margin-bottom:var(--s-6)}.login__form{gap:var(--s-4);margin-top:var(--s-6)}.login__footer{margin-top:var(--s-2);gap:0}}.is-panel .login__card{max-width:32rem}.is-panel .login__title{font-size:3rem}.login__lang{top:max(var(--s-3), env(safe-area-inset-top));right:max(var(--s-3), env(safe-area-inset-right));position:absolute}.lang-switch{padding:0 var(--s-1);border:1px solid var(--glass-border);border-radius:var(--r-full);background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);align-items:center;display:inline-flex}.lang-switch__opt{align-items:center;display:flex;position:relative}.lang-switch__opt+.lang-switch__opt:before{content:"·";color:var(--text-faint);font:var(--f-label)}.lang-switch__opt span{min-width:var(--target);min-height:var(--target);padding:0 var(--s-2);border-radius:var(--r-full);color:var(--text-muted);font:var(--f-label);letter-spacing:var(--ls-caption);cursor:pointer;transition:color var(--dur-color) var(--ease-out);place-items:center;display:grid}@media (hover:hover){.lang-switch__opt:hover span{color:var(--text)}}.lang-switch__opt input:checked+span{color:var(--accent-ink);font-weight:650}.lang-switch__opt input:focus-visible+span{outline:2px solid var(--ring);outline-offset:-4px}html.is-panel{--target:56px;--gutter:32px;--tile-gap:16px;--card-pad:20px;--fs-display:4.2rem;--panel-w:480px;font-size:112.5%}.is-panel .shell{grid-template-columns:minmax(0,1fr)}.is-panel .sidebar,.is-panel .tabbar{display:none}.is-panel .header{min-height:64px;padding-top:var(--s-5);-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-bottom:0;position:static}.is-panel .header .icon-btn{border:1px solid var(--glass-border);background:var(--glass), var(--surface);border-radius:50%}.is-panel .header__title{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.is-panel .main{max-width:none;padding-top:0;padding-bottom:var(--s-6)}@media (orientation:landscape){.is-panel .dash{gap:var(--s-5);grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);grid-template-areas:"greet greet""hero widgets""devices devices""readings readings"}.is-panel .dash__widgets{grid-template-columns:minmax(0,1fr);align-content:start}.is-panel .dash-climate{grid-row:auto}.is-panel .dash__devices{display:block}.is-panel .dash__rooms{display:none}.is-panel .dash-hero .floorplan__svg{max-height:calc(100dvh - 84px - 15rem);margin:0 auto}}@media (orientation:portrait){.is-panel .dash__widgets{grid-template-columns:repeat(2,minmax(0,1fr))}}.is-panel .dash-greeting{padding-top:0}.is-panel .dash-greeting__title{font-size:clamp(2.25rem,2vw + 1rem,3rem)}.is-panel .dial__btn,.is-panel .dial__power{width:var(--target);height:var(--target)}.is-panel .room-card{min-height:112px}.is-panel .toggle:before{inset:12px 0}.is-panel .toggle__thumb{top:14px}.idle{z-index:50;color:#f5f1ea;cursor:none;animation:idle-in 1.2s var(--ease-out);background:radial-gradient(60% 55% at 62% 48%,#f2b65c14,#0000 70%),#070605;position:fixed;inset:0;overflow:hidden}@keyframes idle-in{0%{opacity:0}}.idle:after{content:"";pointer-events:none;background:radial-gradient(120% 90%,#0000 55%,#0000008c);position:absolute;inset:0}.idle__plan{pointer-events:none;opacity:.9;align-items:center;display:grid;position:absolute;inset:4% 3% 4% 30%}.idle .floorplan--ambient{background:0 0;border:0;padding:0}.idle .floorplan__scroll{overflow:visible}.idle .floorplan__svg{min-width:0;max-height:92dvh}.idle .labels{display:none}.idle__info{z-index:1;gap:var(--s-2);transition:translate 2s var(--ease-in-out);display:grid;position:absolute;bottom:12%;left:6%}.idle__clock{font-family:var(--font-serif);letter-spacing:-.02em;font-variant-numeric:lining-nums tabular-nums;font-size:clamp(6rem,13vw,11rem);font-weight:400;line-height:.9}.idle__date{font:var(--f-title-3);color:#f5f1eab8;margin:0}.idle__date:first-letter{text-transform:uppercase}.idle__status{align-items:center;gap:var(--s-2);margin:var(--s-2) 0 0;font:var(--f-callout);color:#f5f1ea99;display:inline-flex}.idle__dot{background:#f5f1ea59;border-radius:50%;width:8px;height:8px}.idle__dot.is-on{background:var(--accent);box-shadow:0 0 10px #f2b65ccc}.idle__hint{right:0;bottom:var(--s-6);z-index:1;text-align:center;font:var(--f-caption);letter-spacing:var(--ls-caption);text-transform:uppercase;color:#f5f1ea73;margin:0;position:absolute;left:0}@media (orientation:portrait){.idle__plan{inset:6% 4% 38%}.idle__info{bottom:10%;left:8%}}@media (prefers-reduced-motion:reduce){.idle{animation:none}.idle__info{transition:none}}@keyframes slide-up{0%{transform:translateY(100%)}}@keyframes slide-in{0%{opacity:0;transform:translate(16px)}}@keyframes fade-in{0%{opacity:0}}
