:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--page:#f3f5f7;--surface:#fff;--surface-2:#f6f7f9;--surface-3:#eceef2;--ink:#0d1117;--ink-2:#4b5563;--ink-3:#8a919c;--hairline:#0d111714;--hairline-strong:#0d111724;--accent:#1c7ae8;--accent-ink:#fff;--accent-soft:#e3effd;--accent-text:#135fb8;--heat:#e8601c;--heat-soft:#fdebe1;--heat-strong:#c2410c;--good:#0f9d58;--good-soft:#e1f4ea;--warn:#b97800;--warn-soft:#fff3d6;--danger:#d03b3b;--danger-soft:#fbe4e4;--cold:#2f7fd1;--cold-soft:#e2eefb;--shadow:0 1px 2px #0d11170a, 0 4px 16px #0d11170d;--shadow-lift:0 2px 6px #0d111714, 0 12px 32px #0d11171f;--scrim:#0d111761;--chart-surface:#fff;--chart-grid:#e1e0d9;--chart-axis:#c3c2b7;--chart-muted:#898781;--series-pool:#2a78d6;--series-spa:#eb6834;--series-air:#1baf7a;--series-heater:#eda100;--series-pool-wash:#2a78d61a;--radius-lg:20px;--radius:14px;--radius-sm:10px;--tap:44px;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--tabbar-h:64px}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#0b0f14;--surface:#151b22;--surface-2:#1b222b;--surface-3:#242c37;--ink:#f2f4f7;--ink-2:#b4bcc8;--ink-3:#7d8796;--hairline:#ffffff14;--hairline-strong:#ffffff24;--accent:#3d8ff0;--accent-ink:#fff;--accent-soft:#15283f;--accent-text:#7db5ff;--heat:#ff7a3d;--heat-soft:#3a2116;--heat-strong:#c2410c;--good:#2fbf71;--good-soft:#13291e;--warn:#f0b429;--warn-soft:#32270f;--danger:#ef6464;--danger-soft:#3a1818;--cold:#5aa2ee;--cold-soft:#142740;--shadow:0 1px 2px #0000004d;--shadow-lift:0 4px 24px #00000080;--scrim:#0000008c;--chart-surface:#151b22;--chart-grid:#2c2c2a;--chart-axis:#383835;--chart-muted:#898781;--series-pool:#3987e5;--series-spa:#d95926;--series-air:#199e70;--series-heater:#c98500;--series-pool-wash:#3987e51f}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}html,body{background:var(--page);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;padding:0;font-size:16px;line-height:1.4;overflow-x:hidden}body{overscroll-behavior-y:none;min-height:100dvh}#root{min-height:100dvh}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:650}p{margin:0}a{color:var(--accent-text)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.muted{color:var(--ink-3)}.secondary{color:var(--ink-2)}.num{font-variant-numeric:tabular-nums}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}.shell{min-height:100dvh}.skip-link{z-index:100;background:var(--surface);border-radius:8px;padding:8px 12px;position:absolute;top:8px;left:-9999px}.skip-link:focus{left:8px}.main{padding:calc(var(--safe-top) + 8px) calc(16px + var(--safe-right)) calc(var(--tabbar-h) + var(--safe-bottom) + 24px) calc(16px + var(--safe-left));max-width:1120px;margin:0 auto}.page{flex-direction:column;gap:16px;animation:.18s ease-out page-in;display:flex}@keyframes page-in{0%{opacity:0;transform:translateY(4px)}}.page-header{align-items:center;gap:8px;min-height:56px;padding:12px 0 2px;display:flex}.page-header h1{letter-spacing:-.02em;font-size:30px;font-weight:720}.page-header-text{flex:1;min-width:0}.page-sub{color:var(--ink-3);margin-top:2px;font-size:14px}.page-header-right{align-items:center;gap:8px;display:flex}.back-btn{margin-left:-10px}.tabbar{z-index:20;padding:6px calc(6px + var(--safe-right)) calc(6px + var(--safe-bottom)) calc(6px + var(--safe-left));background:var(--surface);border-top:1px solid var(--hairline);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.tab{min-height:50px;color:var(--ink-3);background:0 0;border:0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:11px;font-weight:560;transition:color .15s;display:flex}.tab.is-active{color:var(--accent)}.tab:active svg{transform:scale(.92)}.sidenav{display:none}@media (min-width:900px){.tabbar{display:none}.sidenav{width:240px;padding:calc(20px + var(--safe-top)) 14px 20px calc(14px + var(--safe-left));background:var(--surface);border-right:1px solid var(--hairline);z-index:20;flex-direction:column;gap:4px;display:flex;position:fixed;top:0;bottom:0;left:0}.main{padding:calc(var(--safe-top) + 16px) 40px 48px;max-width:none;margin-left:240px}.main>.page{max-width:1080px;margin:0 auto}}.sidenav-brand{align-items:center;gap:10px;padding:0 8px 18px;display:flex}.sidenav-brand img{border-radius:9px}.sidenav-title{font-size:17px;font-weight:700}.conn{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;max-width:160px;font-size:12px;overflow:hidden}.conn-ok:before,.conn-bad:before{content:"";vertical-align:middle;background:var(--good);border-radius:50%;width:6px;height:6px;margin-right:6px;display:inline-block}.conn-bad:before{background:var(--warn)}.sidenav-item{min-height:44px;color:var(--ink-2);text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:12px;padding:0 12px;font-weight:560;display:flex}.sidenav-item:hover{background:var(--surface-2)}.sidenav-item.is-active{background:var(--accent-soft);color:var(--accent-text)}.sidenav-foot{color:var(--ink-2);align-items:center;gap:8px;margin-top:auto;padding:8px 12px;font-size:14px;display:flex}.sidenav-age{margin-left:auto;font-size:12px}.splash{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:18px;min-height:100dvh;padding:24px;display:flex}.splash img{border-radius:16px}.splash-icon{color:var(--ink-3)}.login{min-height:100dvh;padding:calc(24px + var(--safe-top)) 16px calc(24px + var(--safe-bottom));background:radial-gradient(1200px 500px at 50% -10%, color-mix(in srgb, var(--accent) 18%, transparent), transparent 70%), var(--page);place-items:center;display:grid}.login-card{background:var(--surface);width:100%;max-width:380px;box-shadow:var(--shadow-lift);border-radius:24px;flex-direction:column;gap:14px;padding:28px 22px 24px;display:flex}.login-logo{box-shadow:0 6px 20px color-mix(in srgb, var(--accent) 30%, transparent);border-radius:18px;align-self:center}.login-card h1{text-align:center;font-size:26px}.login-sub{text-align:center;margin-top:-8px;margin-bottom:4px}.login-error{background:var(--danger-soft);color:var(--danger);border-radius:10px;align-items:center;gap:8px;padding:10px 12px;font-size:14px;display:flex}.btn{min-height:var(--tap);white-space:nowrap;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:15px;font-weight:600;transition:background .15s,transform 80ms,opacity .15s;display:inline-flex}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.5}.btn[aria-busy=true]{opacity:.85}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 88%, black)}.btn-secondary{background:var(--surface-3);color:var(--ink)}.btn-secondary:hover:not(:disabled){background:color-mix(in srgb, var(--surface-3) 85%, var(--ink))}.btn-ghost{color:var(--ink-2);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-danger{background:var(--danger-soft);color:var(--danger)}.btn-block{width:100%}.btn-small{border-radius:10px;min-height:38px;padding:0 14px;font-size:14px}.danger-text{color:var(--danger)!important}.icon-btn{width:var(--tap);height:var(--tap);color:var(--ink-2);background:0 0;border:0;border-radius:12px;flex:none;place-items:center;display:inline-grid}.icon-btn:hover:not(:disabled){background:var(--surface-3)}.icon-btn:disabled{opacity:.35}.icon-btn.rot90 svg{transform:rotate(90deg)}.link-btn{color:var(--accent-text);background:0 0;border:0;min-height:36px;padding:6px 4px;font-size:15px;font-weight:600}.link-btn.small{font-size:13px}.spinner{place-items:center;display:inline-grid}.spinner svg{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.switch{background:var(--surface-3);outline-offset:3px;border:0;border-radius:999px;flex:none;width:52px;height:32px;padding:0;transition:background .2s;position:relative}.switch:after{content:"";position:absolute;inset:-7px -4px}.switch-thumb{background:#fff;border-radius:50%;width:26px;height:26px;transition:transform .22s cubic-bezier(.3,1.4,.5,1);position:absolute;top:3px;left:3px;box-shadow:0 2px 5px #00000038}.switch.is-on .switch-thumb{transform:translate(20px)}.switch-accent.is-on{background:var(--accent)}.switch-heat.is-on{background:var(--heat)}.switch-good.is-on{background:var(--good)}.switch.is-pending .switch-thumb{animation:.9s ease-in-out infinite pulse}.switch:disabled{opacity:.5}@keyframes pulse{50%{box-shadow:0 0 0 5px color-mix(in srgb, var(--accent) 25%, transparent)}}.stepper{background:var(--surface-2);border-radius:14px;align-items:center;padding:3px;display:inline-flex}.stepper-btn{background:var(--surface);width:44px;height:44px;color:var(--ink);box-shadow:var(--shadow);border:0;border-radius:11px;place-items:center;transition:transform 80ms;display:grid}.stepper-btn:active:not(:disabled){transform:scale(.92)}.stepper-btn:disabled{opacity:.35}.stepper-value{text-align:center;font-variant-numeric:tabular-nums;min-width:64px;font-size:20px;font-weight:680}.segmented{background:var(--surface-2);scrollbar-width:none;border-radius:12px;gap:2px;max-width:100%;padding:3px;display:inline-flex;overflow-x:auto}.segmented::-webkit-scrollbar{display:none}.segmented button{color:var(--ink-2);white-space:nowrap;background:0 0;border:0;border-radius:9px;flex:1 0 auto;min-height:38px;padding:0 14px;font-size:14px;font-weight:600;transition:background .15s,color .15s}.segmented button.is-selected{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.segmented-small button{min-height:34px;padding:0 11px;font-size:13px}.segmented button:disabled{opacity:.5}.form{flex-direction:column;gap:16px;display:flex}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field-label{color:var(--ink-2);font-size:13px;font-weight:620}.field-hint{color:var(--ink-3);font-size:13px}.warn{color:var(--warn)}.input{width:100%;min-height:var(--tap);border:1px solid var(--hairline-strong);background:var(--surface);border-radius:12px;padding:0 12px;font-size:16px;transition:border-color .15s,box-shadow .15s}select.input{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238a919c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:34px}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent);outline:none}.input:disabled{opacity:.6}.input-small{width:auto;max-width:100%;min-height:40px;font-size:15px}.input-num{text-align:right;width:84px}.inline-field{align-items:center;gap:6px;display:inline-flex}.checkbox-line{color:var(--ink-2);align-items:center;gap:8px;min-height:36px;font-size:14px;display:flex}.checkbox{cursor:pointer;align-items:center;gap:10px;display:flex}.checkbox input{opacity:0;position:absolute}.checkbox-box{border:1.5px solid var(--hairline-strong);color:#0000;border-radius:6px;place-items:center;width:22px;height:22px;display:grid}.checkbox input:checked+.checkbox-box{background:var(--accent);border-color:var(--accent);color:#fff}.checkbox input:focus-visible+.checkbox-box{outline:2px solid var(--accent);outline-offset:2px}.slider{flex-direction:column;gap:6px;display:flex}.slider-head{justify-content:space-between;align-items:baseline;gap:12px;font-size:15px;display:flex}.slider-head label{font-weight:560}.slider-value{color:var(--ink);font-weight:650}.slider input[type=range]{appearance:none;background:0 0;width:100%;height:32px;margin:0}.slider input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) var(--pct), var(--surface-3) var(--pct));border-radius:6px;height:6px}.slider input[type=range]::-moz-range-track{background:linear-gradient(to right, var(--accent) var(--pct), var(--surface-3) var(--pct));border-radius:6px;height:6px}.slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:#fff;border:0;border-radius:50%;width:26px;height:26px;margin-top:-10px;box-shadow:0 1px 4px #0000004d}.slider input[type=range]::-moz-range-thumb{background:#fff;border:0;border-radius:50%;width:26px;height:26px;box-shadow:0 1px 4px #0000004d}.card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow);flex-direction:column;gap:14px;min-width:0;padding:16px;display:flex}.card-header{align-items:center;gap:12px;display:flex}.card-icon{background:var(--accent-soft);width:38px;height:38px;color:var(--accent-text);border-radius:11px;flex:none;place-items:center;display:grid}.card-title-wrap{flex:1;min-width:0}.card-title{font-size:17px;font-weight:650}.card-sub{color:var(--ink-3);text-overflow:ellipsis;font-size:13px;overflow:hidden}.card-right{flex:none}.card-foot-note{color:var(--ink-2);border-top:1px solid var(--hairline);padding-top:10px;font-size:13px}.card .section{gap:8px}.section{flex-direction:column;gap:10px;min-width:0;display:flex}.section-head{justify-content:space-between;align-items:center;min-height:28px;padding:0 4px;display:flex}.section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);font-size:13px;font-weight:650}.stack{flex-direction:column;gap:16px;display:flex}.stack-tight{flex-direction:column;gap:8px;display:flex}.spacer{flex:1}.small{font-size:13px}.note{padding:0 4px}.pill{white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:12px;font-weight:650;display:inline-flex}.pill-good{background:var(--good-soft);color:var(--good)}.pill-warn{background:var(--warn-soft);color:var(--warn)}.pill-muted{background:var(--surface-2);color:var(--ink-3)}.list{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden}.row{text-align:left;background:0 0;border:0;align-items:center;gap:12px;width:100%;min-height:60px;padding:10px 16px;display:flex}.row+.row,.list>*+*{border-top:1px solid var(--hairline)}.row-button:hover{background:var(--surface-2)}.row-button:active{background:var(--surface-3)}.row-icon{background:var(--surface-2);width:34px;height:34px;color:var(--ink-2);border-radius:10px;flex:none;place-items:center;display:grid}.row-text{flex-direction:column;flex:1;min-width:0;display:flex}.row-title{font-weight:580}.row-sub{color:var(--ink-3);text-overflow:ellipsis;font-size:13px;overflow:hidden}.row-right{color:var(--ink-2);flex:none}.row-chevron{color:var(--ink-3);flex:none}.row-danger .row-title{color:var(--danger)}.row-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.sticky-actions{bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 8px);background:color-mix(in srgb, var(--page) 90%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:14px;padding:8px;position:sticky}@media (min-width:900px){.sticky-actions{bottom:16px}}.setting-row{align-items:center;gap:12px;min-height:64px;padding:10px 16px;display:flex}.card .setting-row{min-height:0;padding:0}.threshold{flex:none;align-items:center;gap:10px;display:flex}@media (max-width:420px){.setting-row{flex-wrap:wrap}.setting-row .row-text{flex-basis:calc(100% - 70px)}.threshold{margin-left:auto}}.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.stat-row{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;display:grid}.stat-row .stat{background:var(--surface);box-shadow:var(--shadow);border-radius:16px;padding:12px 14px}.stat{min-width:0}.stat-label{color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.stat-value{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:22px;font-weight:680;overflow:hidden}.stat-unit{color:var(--ink-3);margin-left:3px;font-size:13px;font-weight:600}.stat-hint{color:var(--ink-3);font-size:12px}.banners{flex-direction:column;gap:8px;display:flex}.banner{background:var(--surface-2);border-radius:16px;align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.banner-icon{flex:none;margin-top:1px}.banner-body{flex:1;min-width:0}.banner-title{font-weight:650}.banner-text{color:var(--ink-2);margin-top:2px;font-size:14px}.banner-action{flex:none;align-self:center}.banner-info{background:var(--accent-soft)}.banner-info .banner-icon{color:var(--accent-text)}.banner-warn{background:var(--warn-soft)}.banner-warn .banner-icon{color:var(--warn)}.banner-danger{background:var(--danger-soft)}.banner-danger .banner-icon{color:var(--danger)}.banner-cold{background:var(--cold-soft)}.banner-cold .banner-icon{color:var(--cold)}.banner-good{background:var(--good-soft)}.banner-good .banner-icon{color:var(--good)}@media (max-width:480px){.banner{flex-wrap:wrap}.banner-action{margin-left:32px}}.skeleton{background:linear-gradient(90deg, var(--surface-3) 0%, var(--surface-2) 50%, var(--surface-3) 100%);background-size:200% 100%;animation:1.3s ease-in-out infinite shimmer;display:block}@keyframes shimmer{to{background-position:-200% 0}}.empty{text-align:center;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow);flex-direction:column;align-items:center;gap:8px;padding:32px 20px;display:flex}.empty-icon{background:var(--surface-2);width:56px;height:56px;color:var(--ink-3);border-radius:18px;place-items:center;margin-bottom:4px;display:grid}.empty-title{font-size:17px;font-weight:650}.empty-text{color:var(--ink-2);max-width:380px;margin-bottom:8px;font-size:14px}.error-note{background:var(--danger-soft);color:var(--danger);border-radius:12px;align-items:center;gap:8px;padding:10px 14px;font-size:14px;display:flex}.error-note span{flex:1}dl.facts{grid-template-columns:max-content 1fr;gap:8px 16px;margin:0;font-size:14px;display:grid}dl.facts dt{color:var(--ink-3)}dl.facts dd{overflow-wrap:anywhere;min-width:0;margin:0}.sheet-root{z-index:50;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-scrim{background:var(--scrim);animation:.2s ease-out fade-in;position:absolute;inset:0}.sheet{width:100%;max-height:calc(100dvh - 24px - var(--safe-top));background:var(--surface);box-shadow:var(--shadow-lift);border-radius:22px 22px 0 0;outline:none;flex-direction:column;animation:.26s cubic-bezier(.2,.9,.3,1) sheet-up;display:flex;position:relative}.sheet-grabber{background:var(--surface-3);border-radius:3px;width:38px;height:5px;margin:8px auto 0}.sheet-head{align-items:center;gap:8px;padding:8px 10px 4px 20px;display:flex}.sheet-title{flex:1;font-size:19px}.sheet-body{overscroll-behavior:contain;padding:8px 20px 20px;overflow-y:auto}.sheet-foot{padding:12px 16px calc(12px + var(--safe-bottom));border-top:1px solid var(--hairline);justify-content:flex-end;align-items:center;gap:8px;display:flex}@media (min-width:640px){.sheet-root{align-items:center;padding:24px}.sheet{border-radius:22px;max-width:460px;animation:.2s cubic-bezier(.2,.9,.3,1) pop-in}.sheet-wide{max-width:640px}.sheet-grabber{display:none}.sheet-head{padding-top:16px}.sheet-foot{padding-bottom:14px}}@keyframes sheet-up{0%{transform:translateY(100%)}}@keyframes pop-in{0%{opacity:0;transform:scale(.96)}}@keyframes fade-in{0%{opacity:0}}.toast-stack{z-index:60;left:50%;top:calc(12px + var(--safe-top));pointer-events:none;flex-direction:column;gap:8px;width:min(440px,100vw - 24px);display:flex;position:fixed;transform:translate(-50%)}.toast{pointer-events:auto;background:var(--ink);color:var(--page);box-shadow:var(--shadow-lift);border-radius:14px;align-items:center;gap:10px;padding:10px 8px 10px 14px;font-size:14px;animation:.22s cubic-bezier(.2,.9,.3,1) toast-in;display:flex}.toast-error svg:first-child{color:#ff8a8a}.toast-success svg:first-child{color:#5fe39a}@media (prefers-color-scheme:dark){.toast{background:var(--surface-3);color:var(--ink)}}.toast-msg{flex:1}.toast-close{color:inherit;opacity:.6;background:0 0;border:0;border-radius:8px;place-items:center;width:32px;height:32px;display:grid}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}}.home-sub{flex-wrap:wrap;align-items:center;gap:4px 10px;display:flex}.air-temp{color:var(--ink-2);align-items:center;gap:4px;font-weight:560;display:inline-flex}.live-dot{background:var(--good);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in srgb, var(--good) 22%, transparent);border-radius:50%}.live-dot.is-stale{background:var(--warn);box-shadow:0 0 0 3px color-mix(in srgb, var(--warn) 22%, transparent)}.bodies{gap:14px;display:grid}@media (min-width:640px){.bodies{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}}.body-card{--tone:var(--accent);--tone-soft:var(--accent-soft);background:var(--surface);box-shadow:var(--shadow);border-radius:24px;flex-direction:column;min-width:0;padding:16px;transition:box-shadow .2s;display:flex;position:relative;overflow:hidden}.body-spa{--tone:var(--heat);--tone-soft:var(--heat-soft)}.body-card.is-active{background:radial-gradient(420px 220px at 100% 0%, color-mix(in srgb, var(--tone) 14%, transparent), transparent 70%), var(--surface)}.body-head{align-items:center;gap:10px;display:flex}.body-icon{background:var(--surface-2);width:36px;height:36px;color:var(--ink-3);border-radius:11px;place-items:center;transition:background .2s,color .2s;display:grid}.body-card.is-active .body-icon{background:var(--tone-soft);color:var(--tone)}.body-name{flex:1;font-size:18px}.body-temp-row{flex-wrap:wrap;align-items:center;gap:12px;margin-top:10px;display:flex}.body-temp{align-items:flex-start;line-height:1;display:flex}.body-temp-value{letter-spacing:-.04em;color:var(--ink);font-size:68px;font-weight:700}.body-card:not(.is-active) .body-temp-value{color:var(--ink-3)}.body-temp-unit{color:var(--ink-3);margin:6px 0 0 2px;font-size:22px;font-weight:620}.heat-chip{background:var(--heat-soft);color:var(--heat);border-radius:999px;align-items:center;gap:5px;padding:5px 10px 5px 8px;font-size:13px;font-weight:650;display:inline-flex}.heat-chip svg{transform-origin:50% 90%;animation:1.6s ease-in-out infinite flicker}@keyframes flicker{50%{transform:scale(1.12)rotate(-3deg)}}.body-note{color:var(--ink-2);min-height:20px;margin-top:6px;font-size:14px}.body-stale{color:var(--ink-3)}.body-controls{border-top:1px solid var(--hairline);flex-direction:column;gap:12px;margin-top:16px;padding-top:14px;display:flex}.body-control{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.body-control-label{color:var(--ink-2);font-size:14px;font-weight:600}.tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}@media (min-width:560px){.tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1100px){.tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}.tile{background:var(--surface);min-height:100px;box-shadow:var(--shadow);text-align:left;-webkit-user-select:none;user-select:none;border:0;border-radius:20px;flex-direction:column;align-items:flex-start;gap:2px;padding:14px;transition:background .2s,color .2s,transform .1s;display:flex;position:relative}.tile:active{transform:scale(.96)}.tile-icon{background:var(--surface-2);width:38px;height:38px;color:var(--ink-3);border-radius:12px;place-items:center;margin-bottom:auto;transition:background .2s,color .2s;display:grid}.tile-text{flex-direction:column;gap:2px;min-width:0;max-width:100%;display:flex}.tile-name{text-overflow:ellipsis;max-width:100%;margin-top:10px;font-size:15px;font-weight:620;line-height:1.25;overflow:hidden}.tile-state{color:var(--ink-3);font-size:13px}.tile.is-on{background:var(--accent);color:#fff}.tile.is-on .tile-icon{color:#fff;background:#fff3}.tile.is-on .tile-state{color:#ffffffd9}.tile-light.is-on{color:#3a2500;background:linear-gradient(145deg,#ffc94a,#f59e0b)}.tile-light.is-on .tile-icon{color:#3a2500;background:#ffffff59}.tile-light.is-on .tile-state{color:#3a2500bf}.tile.is-pending:after{content:"";opacity:.6;background:currentColor;border-radius:50%;width:8px;height:8px;animation:.8s ease-in-out infinite blink;position:absolute;top:14px;right:14px}@keyframes blink{50%{opacity:.15}}.body-quick{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.heater-btn{background:var(--surface-2);min-width:0;min-height:50px;color:var(--ink);text-align:left;-webkit-user-select:none;user-select:none;border:0;border-radius:14px;align-items:center;gap:10px;padding:7px 12px 7px 7px;transition:background .2s,color .2s,transform .1s;display:flex;position:relative}.heater-btn:active{transform:scale(.97)}.heater-icon{background:var(--surface);width:36px;height:36px;color:var(--ink-3);border-radius:11px;flex:none;place-items:center;display:grid}.heater-text{flex-direction:column;min-width:0;line-height:1.25;display:flex}.heater-name{font-size:15px;font-weight:650}.heater-state{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.heater-btn.is-on{background:var(--heat-strong);color:#fff}.heater-btn.is-on .heater-icon{color:#fff;background:#fff3}.heater-btn.is-on .heater-state{color:#ffffffe0}.heater-btn.is-heating .heater-icon svg{transform-origin:50% 90%;animation:1.6s ease-in-out infinite flicker}.heater-btn.is-pending:after{content:"";opacity:.6;background:currentColor;border-radius:50%;width:7px;height:7px;animation:.8s ease-in-out infinite blink;position:absolute;top:8px;right:8px}.body-companions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.tile-compact{background:var(--surface-2);min-height:56px;box-shadow:none;border-radius:14px;flex-direction:row;align-items:center;gap:10px;padding:9px 12px 9px 9px}.tile-compact .tile-icon{background:var(--surface);flex:none;width:36px;height:36px;margin-bottom:0}.tile-compact .tile-name{white-space:nowrap;margin-top:0}.tile-compact.is-pending:after{top:8px;right:8px}.equip-grid{gap:14px;display:grid}@media (min-width:720px){.equip-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start}}.presets{border-top:1px solid var(--hairline);margin:0;padding:0;list-style:none}.presets li{color:var(--ink-2);justify-content:space-between;padding:8px 2px;font-size:14px;display:flex}.presets li+li{border-top:1px solid var(--hairline)}.presets li.is-active{color:var(--accent-text);font-weight:650}.presets li.is-active span:first-child:before{content:"";vertical-align:middle;background:currentColor;border-radius:50%;width:6px;height:6px;margin-right:8px;display:inline-block}.scenes{scroll-snap-type:x proximity;scrollbar-width:none;gap:10px;margin:0 -16px;padding:2px 16px 6px;display:flex;overflow-x:auto}.scenes::-webkit-scrollbar{display:none}@media (min-width:900px){.scenes{flex-wrap:wrap;margin:0;padding:2px 0 6px}}.scene-chip{background:var(--surface);min-height:52px;box-shadow:var(--shadow);scroll-snap-align:start;border:0;border-radius:999px;flex:none;align-items:center;gap:10px;padding:0 18px 0 8px;font-weight:620;transition:transform .1s;display:inline-flex}.scene-chip:active:not(:disabled){transform:scale(.96)}.scene-chip:disabled:not(.is-running){opacity:.55}.scene-emoji{background:var(--surface-2);border-radius:50%;place-items:center;width:38px;height:38px;font-size:19px;display:grid}.scene-chip.is-running{background:var(--accent-soft);color:var(--accent-text)}.scene-empty{text-align:left;border:1.5px dashed var(--hairline-strong);color:var(--ink);background:0 0;border-radius:16px;align-items:center;gap:12px;padding:14px 16px;font-size:14px;display:flex}.scene-empty svg{color:var(--accent-text);flex:none}.step-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.step-list li{align-items:flex-start;gap:10px;display:flex}.step-list li.ok svg{color:var(--good)}.step-list li.bad svg{color:var(--danger)}.all-lights-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.all-lights-icon{color:#3a2500;background:linear-gradient(145deg,#ffc94a,#f59e0b);border-radius:14px;place-items:center;width:44px;height:44px;display:grid}.all-lights-text{flex:1;min-width:140px}.all-lights-title{font-weight:650}.all-lights-actions{gap:8px;display:flex}.light-row{align-items:center;gap:12px;min-height:64px;padding:12px 16px;display:flex}.light-glow{background:var(--surface-2);width:40px;height:40px;color:var(--ink-3);border-radius:50%;place-items:center;transition:background .25s,color .25s,box-shadow .25s;display:grid}.light-row.is-on .light-glow{color:#3a2500;background:#ffcf5c;box-shadow:0 0 18px #ffc440a6}.swatches{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:10px;display:grid}.swatch{background:var(--surface);box-shadow:var(--shadow);border:0;border-radius:18px;flex-direction:column;align-items:center;gap:8px;padding:12px 6px 10px;font-size:13px;font-weight:600;transition:transform .1s;display:flex}.swatch:active:not(:disabled){transform:scale(.95)}.swatch:disabled{opacity:.6}.swatch-color{border-radius:50%;width:48px;height:48px;box-shadow:inset 0 0 0 1px #00000014}.palette-note{flex-wrap:wrap;align-items:center;gap:10px;padding:0 4px;display:flex}.palette-dots{gap:6px;display:flex}.palette-dot{border-radius:50%;width:16px;height:16px;box-shadow:inset 0 0 0 1px #0000001f}.mode-buttons{flex-wrap:wrap;gap:8px;display:flex}.sched-list{gap:10px;display:grid}@media (min-width:720px){.sched-list{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}}.sched-card{background:var(--surface);box-shadow:var(--shadow);text-align:left;border:0;border-radius:18px;flex-direction:column;align-items:flex-start;gap:6px;width:100%;padding:14px 40px 14px 16px;display:flex;position:relative}.sched-card:hover{box-shadow:var(--shadow-lift)}.sched-time{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.sched-range{letter-spacing:-.01em;font-size:19px;font-weight:680}.sched-dur{font-size:13px}.sched-main{align-items:center;gap:8px;display:flex}.sched-circuit{color:var(--ink-2);font-weight:600}.sched-days{gap:4px;display:flex}.day-dot{background:var(--surface-2);width:24px;height:24px;color:var(--ink-3);border-radius:50%;place-items:center;font-size:11px;font-weight:700;display:grid}.day-dot.is-on{background:var(--accent-soft);color:var(--accent-text)}.sched-heat{color:var(--heat);align-items:center;gap:4px;font-size:13px;font-weight:600;display:inline-flex}.sched-chevron{color:var(--ink-3);position:absolute;top:50%;right:14px;transform:translateY(-50%)}.day-chips{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.day-chip{background:var(--surface-2);min-height:44px;color:var(--ink-2);border:0;border-radius:12px;padding:0;font-size:13px;font-weight:650}.day-chip.is-on{background:var(--accent);color:#fff}.day-presets{gap:12px;display:flex}.filter-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.chart{background:var(--chart-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow);flex-direction:column;gap:8px;min-width:0;margin:0;padding:14px 14px 10px;transition:opacity .2s;display:flex}.chart.is-dimmed{opacity:.5}.chart-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.chart-title{font-size:15px;font-weight:650}.chart-sub{color:var(--ink-3);font-size:12px}.legend{color:var(--ink-2);flex-wrap:wrap;gap:4px 14px;margin:0;padding:0;font-size:12px;list-style:none;display:flex}.legend li{align-items:center;gap:6px;display:inline-flex}.chart-box{width:100%;min-width:0;position:relative}.chart-box svg{display:block;overflow:visible}.chart .grid{stroke:var(--chart-grid);stroke-width:1px}.chart .baseline{stroke:var(--chart-axis);stroke-width:1px}.chart .axis-label{fill:var(--chart-muted);font-variant-numeric:tabular-nums;font-size:11px}.chart .end-label{fill:var(--ink-2);font-variant-numeric:tabular-nums;font-size:11px;font-weight:650}.chart .crosshair{stroke:var(--ink-3);stroke-width:1px}.chart .ring{stroke:var(--chart-surface);stroke-width:2px}.chart-overlay{cursor:crosshair;touch-action:pan-y;outline:none}.chart-overlay:focus-visible{stroke:var(--accent);stroke-width:1px}.tooltip{background:var(--surface);min-width:140px;box-shadow:var(--shadow-lift);border:1px solid var(--hairline);pointer-events:none;z-index:2;border-radius:10px;padding:8px 10px;font-size:12px;position:absolute;top:0;transform:translate(-50%)}.tooltip-time{color:var(--ink-3);white-space:nowrap;margin-bottom:4px}.tooltip-row{white-space:nowrap;align-items:center;gap:6px;display:flex}.tooltip-row strong{min-width:40px;color:var(--ink)}.tooltip-row span{color:var(--ink-2)}.chart .gap-band{fill:var(--surface-2)}.gap-band-key{fill:var(--surface-3)}.chart .lane-label{fill:var(--ink-2);font-size:12px;font-weight:600}.chart .lane-track{stroke:var(--chart-grid);stroke-width:1px}.chart .run{transition:opacity .12s}.chart .run.is-hover{opacity:.75}.lane-totals{color:var(--ink-2);flex-wrap:wrap;gap:4px 16px;font-size:12px;display:flex}.lane-totals span{align-items:center;gap:6px;display:inline-flex}.chart-table-wrap{border:1px solid var(--hairline);border-radius:12px;max-height:320px;overflow:auto}.chart-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:13px}.chart-table th,.chart-table td{text-align:right;white-space:nowrap;border-bottom:1px solid var(--hairline);padding:7px 10px}.chart-table th[scope=row],.chart-table thead th:first-child{text-align:left;font-weight:560}.chart-table thead th{background:var(--surface-2);color:var(--ink-2);font-weight:650;position:sticky;top:0}.table-unbounded{max-height:none}.circuits-table th,.circuits-table td{text-align:left}.circuits-table tr.muted{color:var(--ink-3)}.preset-editor{flex-direction:column;gap:14px;display:flex}.preset-row{justify-content:space-between;padding:4px 0;font-size:15px;display:flex}.preset-name{font-weight:560}.preset-edit{flex-direction:column;gap:4px;display:flex}.preset-actions{justify-content:flex-end;gap:8px;min-height:0;display:flex}.super-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.egg-list{flex-direction:column;display:flex}.egg-row{justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex}.egg-row+.egg-row{border-top:1px solid var(--hairline)}.egg-name{text-overflow:ellipsis;min-width:0;font-weight:560;overflow:hidden}.emoji-pick{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.emoji-pick button{background:var(--surface-2);border:0;border-radius:12px;width:44px;height:44px;font-size:21px}.emoji-pick button.is-selected{background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent)}.emoji-input{text-align:center;width:80px;min-height:44px}.scene-emoji-inline{font-size:18px}.action-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.action-item{background:var(--surface-2);border-radius:14px;grid-template-columns:auto 1fr auto;grid-template-areas:"num.tools""fields fields fields";align-items:center;gap:4px 10px;padding:6px 6px 10px 10px;display:grid}@media (min-width:640px){.action-item{grid-template-areas:"num fields tools";padding:8px 6px 8px 10px}}.action-num{background:var(--surface);width:24px;height:24px;color:var(--ink-2);border-radius:50%;flex:none;grid-area:num;place-items:center;font-size:12px;font-weight:700;display:grid}.action-fields{flex-wrap:wrap;grid-area:fields;align-items:center;gap:8px;min-width:0;display:flex}.action-fields select{flex:140px}.action-tools{grid-area:tools;display:flex}.add-actions{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.all-clear{background:var(--good-soft);color:var(--good);border-radius:16px;align-items:center;gap:8px;padding:14px 16px;font-weight:650;display:flex}.settings-list .setting-row+.setting-row{border-top:1px solid var(--hairline)}.event-list,.audit-list{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow);margin:0;padding:0;list-style:none;overflow:hidden}.event,.audit-list li{align-items:flex-start;gap:12px;padding:12px 16px;display:flex}.event+.event,.audit-list li+li{border-top:1px solid var(--hairline)}.event-icon,.audit-icon{background:var(--warn-soft);width:28px;height:28px;color:var(--warn);border-radius:9px;flex:none;place-items:center;display:grid}.event-cleared .event-icon,.audit-icon{background:var(--good-soft);color:var(--good)}.audit-list li.is-failed .audit-icon{background:var(--danger-soft);color:var(--danger)}.event-text,.audit-body{overflow-wrap:anywhere;flex-direction:column;gap:2px;min-width:0;display:flex}.audit-error{color:var(--danger);font-size:13px}
