body{background:#fff;margin:0}.page[data-v-6cc44b10]{--bg:#f3f4f6;--card:#fff;--text:#111827;--muted:#6b7280;--border:#e5e7eb;--heat:#dc2626;--heat-dark:#b91c1c;--cool:#2563eb;--cool-dark:#1d4ed8;--open:#16a34a;--open-bg:#ecfdf3;--closed:#d97706;--closed-bg:#fffbeb;--radius:18px;--shadow:0 1px 2px #0000000a, 0 4px 16px #0000000a;--gutter:.75rem;background:var(--bg);min-height:100dvh;color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){.page[data-v-6cc44b10]{--bg:#0b0f17;--card:#151b26;--text:#f3f4f6;--muted:#9ca3af;--border:#263041;--open-bg:#16a34a1f;--closed-bg:#d977061f;--shadow:none}}[data-v-6cc44b10],[data-v-6cc44b10]:before,[data-v-6cc44b10]:after{box-sizing:border-box}.app[data-v-6cc44b10]{max-width:1040px;padding:max(var(--gutter), env(safe-area-inset-top)) max(var(--gutter), env(safe-area-inset-right)) 2rem max(var(--gutter), env(safe-area-inset-left));margin:0 auto}.has-pending .app[data-v-6cc44b10]{padding-bottom:calc(7rem + env(safe-area-inset-bottom))}.topbar[data-v-6cc44b10]{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.title[data-v-6cc44b10]{align-items:center;gap:.6rem;min-width:0;display:flex}.title h1[data-v-6cc44b10]{letter-spacing:-.01em;margin:0;font-size:1.3rem;font-weight:650}.top-actions[data-v-6cc44b10]{align-items:center;gap:.4rem;display:flex}.status-pill[data-v-6cc44b10]{background:var(--card);border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:.35rem;padding:.2rem .6rem;font-size:.72rem;font-weight:600;display:inline-flex}.status-pill .dot[data-v-6cc44b10]{background:#9ca3af;border-radius:50%;width:7px;height:7px}.status-pill.online[data-v-6cc44b10]{color:var(--open)}.status-pill.online .dot[data-v-6cc44b10]{background:var(--open);box-shadow:0 0 0 3px #16a34a33}.icon-btn[data-v-6cc44b10]{border:1px solid var(--border);background:var(--card);border-radius:12px;place-items:center;width:40px;height:40px;display:grid}.icon-btn svg[data-v-6cc44b10]{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.icon-btn.spinning svg[data-v-6cc44b10]{animation:.9s linear infinite spin-6cc44b10}@keyframes spin-6cc44b10{to{transform:rotate(360deg)}}.grid[data-v-6cc44b10]{grid-template-columns:minmax(0,1fr);grid-template-areas:"hero""duct""controls""device";gap:.75rem;display:grid}.hero[data-v-6cc44b10]{grid-area:hero}.duct[data-v-6cc44b10]{grid-area:duct}.controls[data-v-6cc44b10]{grid-area:controls}.device[data-v-6cc44b10]{grid-area:device}@media (width>=640px){.page[data-v-6cc44b10]{--gutter:1.5rem}.grid[data-v-6cc44b10]{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"hero hero""duct controls""device device";gap:1rem}}@media (width>=960px){.app[data-v-6cc44b10]{padding-top:2.5rem}.grid[data-v-6cc44b10]{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);grid-template-areas:"hero controls""duct controls""device device"}.hero .temp[data-v-6cc44b10]{font-size:7rem}}.card[data-v-6cc44b10]{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}@media (width>=640px){.card[data-v-6cc44b10]{padding:1.2rem 1.3rem}}.eyebrow[data-v-6cc44b10],.label[data-v-6cc44b10]{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-size:.72rem;font-weight:650}.hero[data-v-6cc44b10]{color:#fff;text-align:center;border:none;flex-direction:column;justify-content:center;padding:1.1rem 1.1rem 1rem;transition:background .4s;display:flex}.hero.heat[data-v-6cc44b10]{background:linear-gradient(160deg, var(--heat), var(--heat-dark))}.hero.ac[data-v-6cc44b10]{background:linear-gradient(160deg, var(--cool), var(--cool-dark))}.hero.offline[data-v-6cc44b10]{background:linear-gradient(160deg,#6b7280,#4b5563)}.hero-top[data-v-6cc44b10]{justify-content:space-between;align-items:center;display:flex}.hero-label[data-v-6cc44b10]{text-transform:uppercase;letter-spacing:.08em;opacity:.8;font-size:.75rem;font-weight:650}.mode-badge[data-v-6cc44b10]{background:#fff3;border-radius:999px;padding:.25rem .7rem;font-size:.75rem;font-weight:650}.temp[data-v-6cc44b10]{font-variant-numeric:tabular-nums;margin-top:.5rem;font-size:4.5rem;font-weight:250;line-height:1}.temp .deg[data-v-6cc44b10]{vertical-align:top;opacity:.8;font-size:.5em}.hero-sub[data-v-6cc44b10]{margin-top:.35rem;font-size:.92rem}.hero-sub.muted[data-v-6cc44b10]{opacity:.75;margin-top:.15rem;font-size:.8rem}.stale[data-v-6cc44b10]{background:#0003;border-radius:10px;margin-top:.75rem;padding:.5rem .75rem;font-size:.82rem;font-weight:500}.stats[data-v-6cc44b10]{border-top:1px solid #fff3;grid-template-columns:repeat(3,minmax(0,1fr));gap:.25rem;margin-top:1rem;padding-top:.85rem;display:grid}.stat small[data-v-6cc44b10]{text-transform:uppercase;letter-spacing:.05em;opacity:.75;white-space:nowrap;text-overflow:ellipsis;font-size:.66rem;display:block;overflow:hidden}.stat strong[data-v-6cc44b10]{margin-top:.1rem;font-size:1.05rem;font-weight:600;display:block}@media (width>=640px){.hero[data-v-6cc44b10]{padding:1.5rem 1.5rem 1.25rem}.temp[data-v-6cc44b10]{font-size:5.5rem}.stat small[data-v-6cc44b10]{font-size:.7rem}.stat strong[data-v-6cc44b10]{font-size:1.15rem}}.duct[data-v-6cc44b10]{border-width:2px;align-items:center;gap:1rem;transition:background .3s,border-color .3s;display:flex}.duct-open[data-v-6cc44b10]{border-color:var(--open);background:var(--open-bg)}.duct-closed[data-v-6cc44b10]{border-color:var(--closed);background:var(--closed-bg)}.duct-icon[data-v-6cc44b10]{width:92px;color:var(--muted);flex-shrink:0}.duct-open .duct-icon[data-v-6cc44b10]{color:var(--open)}.duct-closed .duct-icon[data-v-6cc44b10]{color:var(--closed)}.duct-icon .pipe[data-v-6cc44b10]{fill:none;stroke:currentColor;stroke-width:3px}.duct-icon .blade[data-v-6cc44b10]{stroke:currentColor;stroke-width:6px;stroke-linecap:round;transform-box:view-box;transform-origin:60px 30px;transition:transform .5s}.duct-open .duct-icon .blade[data-v-6cc44b10]{transform:rotate(90deg)}.duct-icon .flow path[data-v-6cc44b10]{fill:none;stroke:currentColor;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;opacity:0;transition:opacity .3s}.duct-open .duct-icon .flow path[data-v-6cc44b10]{opacity:1;animation:1.6s ease-in-out infinite flow-6cc44b10}@keyframes flow-6cc44b10{0%,to{opacity:.5;transform:translate(-3px)}50%{opacity:1;transform:translate(3px)}}.duct-text[data-v-6cc44b10]{flex-direction:column;min-width:0;display:flex}.duct-text strong[data-v-6cc44b10]{font-size:1.6rem;font-weight:750;line-height:1.15}.duct-open .duct-text strong[data-v-6cc44b10]{color:var(--open)}.duct-closed .duct-text strong[data-v-6cc44b10]{color:var(--closed)}.duct-text .hint[data-v-6cc44b10]{color:var(--muted);font-size:.85rem}@media (width>=640px){.duct-icon[data-v-6cc44b10]{width:110px}.duct-text strong[data-v-6cc44b10]{font-size:1.8rem}}button[data-v-6cc44b10]{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;transition:background .15s,border-color .15s,transform 50ms,opacity .15s}button[data-v-6cc44b10]:active:not(:disabled){transform:scale(.96)}button[data-v-6cc44b10]:disabled{opacity:.4;cursor:not-allowed}button[data-v-6cc44b10]:focus-visible{outline:3px solid var(--cool);outline-offset:2px}.controls[data-v-6cc44b10]{flex-direction:column;gap:.25rem;display:flex}.segmented[data-v-6cc44b10]{background:var(--bg);border-radius:14px;gap:.35rem;margin-bottom:.4rem;padding:.3rem;display:flex}.seg[data-v-6cc44b10]{min-height:48px;color:var(--muted);background:0 0;border:none;border-radius:11px;flex:1;font-size:1rem;font-weight:650}.seg.heat.active[data-v-6cc44b10]{background:var(--heat);color:#fff}.seg.ac.active[data-v-6cc44b10]{background:var(--cool);color:#fff}.row[data-v-6cc44b10]{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:.5rem;padding:.6rem 0;display:flex}.row-label[data-v-6cc44b10]{flex-direction:column;gap:.25rem;min-width:0;display:flex}.pending-tag[data-v-6cc44b10]{color:var(--closed);background:var(--closed-bg);white-space:nowrap;border-radius:999px;align-self:flex-start;padding:.1rem .45rem;font-size:.68rem;font-weight:650}.stepper[data-v-6cc44b10]{flex-shrink:0;align-items:center;gap:.35rem;display:flex}.round[data-v-6cc44b10]{border:1px solid var(--border);background:var(--card);border-radius:50%;width:48px;height:48px;font-size:1.5rem;line-height:1}.value[data-v-6cc44b10]{text-align:center;font-variant-numeric:tabular-nums;min-width:72px;font-size:1.75rem;font-weight:550;transition:color .2s}.value.dirty[data-v-6cc44b10]{color:var(--closed)}.explain[data-v-6cc44b10]{border-top:1px solid var(--border);color:var(--muted);margin:.25rem 0 0;padding-top:.6rem;font-size:.82rem;line-height:1.4}.device summary[data-v-6cc44b10]{cursor:pointer;justify-content:space-between;align-items:center;gap:.75rem;min-height:28px;font-size:.95rem;font-weight:600;list-style:none;display:flex}.device summary[data-v-6cc44b10]::-webkit-details-marker{display:none}.device summary[data-v-6cc44b10]:after{content:"";border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);flex-shrink:0;width:8px;height:8px;transition:transform .2s;transform:rotate(45deg)}.device[open] summary[data-v-6cc44b10]:after{transform:rotate(-135deg)}.summary-meta[data-v-6cc44b10]{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-left:auto;font-size:.8rem;font-weight:500;overflow:hidden}.kv[data-v-6cc44b10]{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin:1rem 0 0;display:grid}.kv .full[data-v-6cc44b10]{grid-column:1/-1}.kv dt[data-v-6cc44b10]{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:.15rem;font-size:.68rem}.kv dd[data-v-6cc44b10]{word-break:break-word;margin:0;font-size:.88rem;font-weight:550}.mono[data-v-6cc44b10]{font-family:ui-monospace,Menlo,monospace}@media (width>=640px){.kv[data-v-6cc44b10]{grid-template-columns:repeat(4,minmax(0,1fr))}.kv .full[data-v-6cc44b10]{grid-column:auto}}.device-actions[data-v-6cc44b10]{gap:.6rem;margin-top:1rem;display:flex}.device-actions button[data-v-6cc44b10]{flex:1}.primary[data-v-6cc44b10]{background:var(--text);min-height:48px;color:var(--card);border:none;border-radius:12px;padding:0 1.4rem;font-weight:650}.ghost[data-v-6cc44b10]{border:1px solid var(--border);background:var(--card);border-radius:12px;min-height:48px;padding:0 1rem;font-weight:550}.ghost.small[data-v-6cc44b10]{border-radius:12px;min-height:40px;padding:0 .8rem;font-size:.8rem}@media (hover:hover){.round[data-v-6cc44b10]:hover:not(:disabled),.ghost[data-v-6cc44b10]:hover:not(:disabled),.icon-btn[data-v-6cc44b10]:hover:not(:disabled){border-color:var(--muted)}}.pending-bar[data-v-6cc44b10]{z-index:20;padding:.75rem max(var(--gutter), env(safe-area-inset-right)) calc(.75rem + env(safe-area-inset-bottom)) max(var(--gutter), env(safe-area-inset-left));background:var(--card);border-top:1px solid var(--border);align-items:center;gap:.75rem;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 24px #00000014}.pending-text[data-v-6cc44b10]{flex-direction:column;flex:1;min-width:0;display:flex}.pending-text strong[data-v-6cc44b10]{font-size:.9rem}.pending-text span[data-v-6cc44b10]{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;overflow:hidden}.pending-actions[data-v-6cc44b10]{flex-shrink:0;gap:.5rem;display:flex}@media (width>=640px){.pending-bar[data-v-6cc44b10]{left:50%;right:auto;bottom:calc(1rem + env(safe-area-inset-bottom));border:1px solid var(--border);border-radius:16px;width:min(560px,100% - 2rem);padding:.75rem .75rem .75rem 1.1rem;transform:translate(-50%)}}.slide-up-enter-active[data-v-6cc44b10],.slide-up-leave-active[data-v-6cc44b10]{transition:transform .25s,opacity .25s}.slide-up-enter-from[data-v-6cc44b10],.slide-up-leave-to[data-v-6cc44b10]{opacity:0;transform:translateY(100%)}@media (width>=640px){.slide-up-enter-from[data-v-6cc44b10],.slide-up-leave-to[data-v-6cc44b10]{transform:translate(-50%,120%)}}.toast-region[data-v-6cc44b10]{left:0;right:0;bottom:calc(1rem + env(safe-area-inset-bottom));z-index:30;pointer-events:none;justify-content:center;padding:0 1rem;transition:bottom .25s;display:flex;position:fixed}.has-pending .toast-region[data-v-6cc44b10]{bottom:calc(6rem + env(safe-area-inset-bottom))}.toast[data-v-6cc44b10]{background:var(--text);color:var(--card);text-align:center;border-radius:12px;margin:0;padding:.7rem 1.1rem;font-size:.9rem;font-weight:550;box-shadow:0 8px 24px #0000002e}.toast.error[data-v-6cc44b10]{background:var(--heat);color:#fff}.toast.success[data-v-6cc44b10]{background:var(--open);color:#fff}.fade-enter-active[data-v-6cc44b10],.fade-leave-active[data-v-6cc44b10]{transition:opacity .2s,transform .2s}.fade-enter-from[data-v-6cc44b10],.fade-leave-to[data-v-6cc44b10]{opacity:0;transform:translateY(6px)}@media (prefers-reduced-motion:reduce){[data-v-6cc44b10],[data-v-6cc44b10]:before,[data-v-6cc44b10]:after{transition:none!important;animation:none!important}}@media (width<=374px){.title h1[data-v-6cc44b10]{font-size:1.15rem}.status-pill[data-v-6cc44b10]{display:none}.temp[data-v-6cc44b10]{font-size:4rem}.duct-icon[data-v-6cc44b10]{width:72px}.duct-text strong[data-v-6cc44b10]{font-size:1.35rem}.round[data-v-6cc44b10]{width:44px;height:44px}.value[data-v-6cc44b10]{min-width:60px;font-size:1.5rem}.pending-actions .ghost[data-v-6cc44b10]{padding:0 .7rem}}.page[data-v-6ffc3f72]{--bg:#f3f4f6;--card:#fff;--text:#111827;--muted:#6b7280;--border:#e5e7eb;--heat:#dc2626;--cool:#2563eb;--open:#16a34a;min-height:100dvh;padding:max(1.5rem, env(safe-area-inset-top)) max(1.25rem, env(safe-area-inset-right)) max(1.5rem, env(safe-area-inset-bottom)) max(1.25rem, env(safe-area-inset-left));background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;place-items:center;font-family:system-ui,-apple-system,Segoe UI,sans-serif;display:grid;position:relative;overflow:hidden}@media (prefers-color-scheme:dark){.page[data-v-6ffc3f72]{--bg:#0b0f17;--card:#151b26;--text:#f3f4f6;--muted:#9ca3af;--border:#263041}}[data-v-6ffc3f72],[data-v-6ffc3f72]:before,[data-v-6ffc3f72]:after{box-sizing:border-box}.blob[data-v-6ffc3f72]{filter:blur(80px);opacity:.22;pointer-events:none;border-radius:50%;width:60vmax;height:60vmax;position:absolute}.blob.heat[data-v-6ffc3f72]{background:var(--heat);animation:18s ease-in-out infinite alternate drift-a-6ffc3f72;top:-25vmax;right:-20vmax}.blob.cool[data-v-6ffc3f72]{background:var(--cool);animation:22s ease-in-out infinite alternate drift-b-6ffc3f72;bottom:-25vmax;left:-20vmax}@keyframes drift-a-6ffc3f72{to{transform:translate(-8vmax,6vmax)scale(1.1)}}@keyframes drift-b-6ffc3f72{to{transform:translate(8vmax,-6vmax)scale(1.05)}}.login[data-v-6ffc3f72]{z-index:1;text-align:center;background:color-mix(in srgb, var(--card) 82%, transparent);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:24px;width:100%;max-width:380px;padding:2rem 1.5rem 1.5rem;position:relative;box-shadow:0 1px 2px #0000000a,0 20px 50px #00000014}h1[data-v-6ffc3f72]{letter-spacing:-.02em;margin:.5rem 0 .35rem;font-size:1.75rem;font-weight:650}.sub[data-v-6ffc3f72]{color:var(--muted);margin:0 0 1.5rem;font-size:.95rem;line-height:1.45}.dial[data-v-6ffc3f72]{width:200px;height:200px;margin:0 auto;position:relative}.dial svg[data-v-6ffc3f72]{width:100%;height:100%;overflow:visible}.tick[data-v-6ffc3f72]{stroke:var(--border);stroke-width:2px;stroke-linecap:round}.tick.major[data-v-6ffc3f72]{stroke:var(--muted);opacity:.6}.track[data-v-6ffc3f72],.arc[data-v-6ffc3f72]{fill:none;stroke-width:10px;stroke-linecap:round}.track[data-v-6ffc3f72]{stroke:var(--border)}.arc[data-v-6ffc3f72]{stroke:url(#dialGradient);opacity:.85}.knob[data-v-6ffc3f72]{fill:var(--card);stroke-width:4px;stroke:#a855f7;filter:drop-shadow(0 2px 4px #0003);transition:stroke .4s}.dial.heat .knob[data-v-6ffc3f72]{stroke:var(--heat)}.dial.cool .knob[data-v-6ffc3f72]{stroke:var(--cool)}.dial-center[data-v-6ffc3f72]{flex-direction:column;justify-content:center;align-items:center;padding-top:6px;display:flex;position:absolute;inset:0}.dial-temp[data-v-6ffc3f72]{font-variant-numeric:tabular-nums;font-size:3.25rem;font-weight:250;line-height:1;transition:color .4s}.dial-temp .deg[data-v-6ffc3f72]{vertical-align:top;opacity:.7;font-size:.5em}.dial.heat .dial-temp[data-v-6ffc3f72]{color:var(--heat)}.dial.cool .dial-temp[data-v-6ffc3f72]{color:var(--cool)}.dial-mode[data-v-6ffc3f72]{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-top:.35rem;font-size:.7rem;font-weight:650}.primary[data-v-6ffc3f72]{background:var(--text);width:100%;min-height:52px;color:var(--card);font:inherit;cursor:pointer;touch-action:manipulation;border:none;border-radius:14px;justify-content:center;align-items:center;gap:.6rem;font-size:1rem;font-weight:650;transition:transform 50ms,opacity .15s,box-shadow .2s;display:inline-flex}@media (hover:hover){.primary[data-v-6ffc3f72]:hover:not(:disabled){box-shadow:0 8px 20px #00000026}}.primary[data-v-6ffc3f72]:active:not(:disabled){transform:scale(.98)}.primary[data-v-6ffc3f72]:disabled{opacity:.6;cursor:not-allowed}.primary[data-v-6ffc3f72]:focus-visible{outline:3px solid var(--cool);outline-offset:3px}.btn-icon[data-v-6ffc3f72]{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.spinner[data-v-6ffc3f72]{border:2px solid;border-right-color:#0000;border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin-6ffc3f72}@keyframes spin-6ffc3f72{to{transform:rotate(360deg)}}.error[data-v-6ffc3f72]{background:color-mix(in srgb, var(--heat) 12%, transparent);color:var(--heat);border-radius:12px;margin:1rem 0 0;padding:.65rem .85rem;font-size:.88rem;font-weight:550}.fine[data-v-6ffc3f72]{color:var(--muted);margin:1.25rem 0 0;font-size:.75rem}.fade-enter-active[data-v-6ffc3f72],.fade-leave-active[data-v-6ffc3f72]{transition:opacity .2s,transform .2s}.fade-enter-from[data-v-6ffc3f72],.fade-leave-to[data-v-6ffc3f72]{opacity:0;transform:translateY(-4px)}@media (width<=374px){.login[data-v-6ffc3f72]{padding:1.5rem 1.1rem 1.25rem}.dial[data-v-6ffc3f72]{width:170px;height:170px}.dial-temp[data-v-6ffc3f72]{font-size:2.75rem}h1[data-v-6ffc3f72]{font-size:1.5rem}}@media (prefers-reduced-motion:reduce){[data-v-6ffc3f72],[data-v-6ffc3f72]:before,[data-v-6ffc3f72]:after{transition:none!important;animation:none!important}}
