:root{--bg:#050509;--bg-alt:#0f0f17;--surface:#15151f;--surface-2:#1c1c28;--border:#ffffff1f;--border-subtle:#ffffff0f;--gold:#d4af37;--gold-hover:#e3c150;--gold-soft:#d4af371f;--text:#f5f5f5;--muted:#a4a4b8;--soft:#6f6f86;--green:#4ade80;--red:#f87171;--amber:#facc15;--radius:16px;--shadow:0 8px 28px #00000073;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display:"Playfair Display", "Times New Roman", serif}:root[data-theme=light]{--bg:#f4f0e7;--bg-alt:#fff;--surface:#fff;--surface-2:#efe9dd;--border:#1414201f;--border-subtle:#1414200f;--text:#1b1b24;--muted:#5a5a68;--soft:#8a8a96;--gold:#b8860b;--gold-hover:#a0700a;--gold-soft:#b8860b21}:root[data-palette=emerald]{--gold:#5fbf80;--gold-hover:#76d098;--gold-soft:#5fbf8024}:root[data-palette=emerald][data-theme=light]{--gold:#2f7a4e;--gold-soft:#2f7a4e21}:root[data-palette=sapphire]{--gold:#5b9cf0;--gold-hover:#79b0f5;--gold-soft:#5b9cf026}:root[data-palette=sapphire][data-theme=light]{--gold:#2563eb;--gold-soft:#2563eb1f}:root[data-palette=rose]{--gold:#e07aa8;--gold-hover:#ec92bb;--gold-soft:#e07aa826}:root[data-palette=rose][data-theme=light]{--gold:#c2407e;--gold-soft:#c2407e1f}:root:not([data-palette=gold]) .gold-text,:root:not([data-palette=gold]) .dial-temp span{-webkit-text-fill-color:var(--gold)!important;color:var(--gold)!important;background:0 0!important}*{box-sizing:border-box}body{background:radial-gradient(1200px 600px at 50% -10%, #d4af370f, transparent 60%), var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0}img[src*=serenza-logo]:not(.no-halo){filter:drop-shadow(0 4px 18px #d4af378c)drop-shadow(0 0 32px #d4af374d)}.app{max-width:720px;padding:calc(70px + env(safe-area-inset-top)) 16px 96px;margin:0 auto}.gold-text{background:linear-gradient(#f0d27a 0%,#d4af37 55%,#a8862a 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.site-nav{height:calc(64px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 20px 0;z-index:100;-webkit-backdrop-filter:blur(18px);border-bottom:1px solid var(--border-subtle);background:#050509c7;justify-content:space-between;align-items:center;gap:16px;display:flex;position:fixed;top:0;left:0;right:0}.site-nav .logo{align-items:center;gap:12px;text-decoration:none;display:flex}.site-nav .logo img{width:auto;height:46px;display:block}.site-nav .home-tag{font-family:var(--font-display);letter-spacing:.34em;text-transform:uppercase;padding-left:.34em;font-size:18px;font-style:italic}.badge{border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;padding:5px 12px;font-size:11px}@media (width<=520px){.site-nav{padding:env(safe-area-inset-top) 12px 0;gap:8px}.site-nav .logo{gap:6px}.site-nav .logo img{height:36px}.site-nav .home-tag{display:none}.nav-right{gap:6px}.home-select{max-width:110px;padding:5px 8px;font-size:11px}.nav-account{padding:6px 9px;font-size:11px}.nav-tablette .lbl{display:none}}.badge.live{color:var(--green);border-color:var(--green)}.badge.demo{color:var(--gold);background:#d4af3714;border-color:#d4af3766}.hero{text-align:center;padding:2px 4px 10px}.hero-eyebrow{color:var(--gold);letter-spacing:.26em;text-transform:uppercase;background:#d4af3714;border:1px solid #d4af3766;border-radius:100px;align-items:center;gap:10px;padding:8px 18px;font-size:.68rem;font-weight:600;display:inline-flex}.hero-eyebrow .dot{font-size:.7rem}.hero h1{font-family:var(--font-display);color:#fff;letter-spacing:-.012em;margin:16px 0 0;font-size:clamp(1.8rem,6vw,2.6rem);font-weight:600;line-height:1.1}.hero h1 em{font-style:italic}.scenes{grid-auto-columns:1fr;grid-auto-flow:column;gap:10px;padding:4px 4px 14px;display:grid}.scene-btn{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);text-align:center;cursor:pointer;min-width:0;padding:14px 10px;transition:transform .12s,border-color .12s}.scene-btn:active{border-color:var(--gold);transform:scale(.96)}.scene-btn .icon{margin-bottom:6px;font-size:26px;display:block}.scene-btn .label{color:var(--muted);font-size:13px}.room{margin-top:22px}.room h2{font-family:var(--font-display);letter-spacing:.01em;margin:0 4px 12px;font-size:1.15rem;font-style:italic;font-weight:500}.ambient-glow{pointer-events:none;z-index:0;background:radial-gradient(80% 100% at 50% 0,#e0aa5080,#0000 70%);height:45vh;transition:opacity .8s;position:fixed;top:0;left:0;right:0}.app>:not(.ambient-glow){z-index:1;position:relative}.room-panel{border-radius:var(--radius);border:1px solid var(--border-subtle);margin-top:22px;padding:16px 14px 4px;transition:border-color .6s;position:relative;overflow:hidden}.room-panel .room-ambiance{pointer-events:none;opacity:0;background:radial-gradient(120% 90% at 50% -10%,#e0aa5029,#0000 60%);transition:opacity .7s;position:absolute;inset:0}.room-panel.lit{border-color:#d4af3747}.room-panel.lit .room-ambiance{opacity:1}.room-bar{z-index:1;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex;position:relative}.room-bar h2{font-family:var(--font-display);margin:0 0 4px;font-size:1.2rem;font-style:italic;font-weight:500}.room-stats{color:var(--muted);gap:12px;font-size:12px;display:flex}.room-master{background:var(--surface-2);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:999px;flex:none;padding:7px 16px;font-family:inherit;font-size:12px;font-weight:600;transition:all .15s}.room-master.on{background:var(--gold-soft);border-color:var(--gold);color:var(--gold)}.room-panel .grid{z-index:1;position:relative}.grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:12px;min-height:112px;padding:16px;display:flex}.card.on{border-color:var(--gold);background:linear-gradient(180deg, var(--gold-soft), var(--surface))}.card .top{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.card .name{font-size:15px;font-weight:600;line-height:1.2}.card .meta{color:var(--muted);margin-top:4px;font-size:12px}.card .emoji{font-size:22px}.card.offline{opacity:.5}.toggle{background:var(--surface-2);border:1px solid var(--border);cursor:pointer;border-radius:999px;flex:none;width:52px;height:30px;transition:background .15s;position:relative}.toggle.on{background:var(--gold);border-color:var(--gold)}.toggle .knob{background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .15s;position:absolute;top:3px;left:3px}.toggle.on .knob{transform:translate(22px)}.slider{width:100%;accent-color:var(--gold)}.thermo{justify-content:space-between;align-items:center;display:flex}.thermo .temp{font-size:26px;font-weight:600}.thermo .target{color:var(--muted);font-size:13px}.stepper{align-items:center;gap:8px;display:flex}.stepper button{border:1px solid var(--border);background:var(--surface-2);width:34px;height:34px;color:var(--text);cursor:pointer;border-radius:10px;font-size:18px}.sensor-state{font-size:14px;font-weight:600}.sensor-state.ok{color:var(--green)}.sensor-state.alert{color:var(--red)}.alert-banner{border-radius:var(--radius);align-items:center;gap:12px;margin:6px 4px 4px;padding:14px 16px;font-size:14px;display:flex}.alert-banner.critical{border:1px solid var(--red);background:#e06a6a29}.alert-banner.warning{border:1px solid var(--amber);background:#e0b15a24}.alert-banner.info{background:var(--surface);border:1px solid var(--border)}.alert-banner .ack{color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:8px;margin-left:auto;padding:6px 10px;font-size:12px}.energy{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:baseline;gap:8px;margin:6px 4px 0;padding:16px;display:flex}.energy .val{color:var(--gold);font-size:30px;font-weight:700}.energy .unit{color:var(--muted)}.energy .hint{color:var(--muted);margin-left:auto;font-size:12px}.demo-bar{border-top:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:12px 16px calc(12px + env(safe-area-inset-bottom));color:var(--muted);background:#0d0d10eb;align-items:center;gap:12px;font-size:13px;display:flex;position:fixed;bottom:0;left:0;right:0}.demo-bar button{background:var(--surface-2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:10px;margin-left:auto;padding:8px 14px;font-size:13px}.demo-bar button.armed{border-color:var(--red);color:var(--red)}.loading,.error{text-align:center;color:var(--muted);padding:64px 16px}.error{color:var(--red)}@media (width>=860px){.app{max-width:1120px;padding-left:28px;padding-right:28px}.rooms{grid-template-columns:1fr 1fr;align-items:start;gap:18px;display:grid}.rooms .room-panel{margin-top:0}.cam-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.room>.grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}}.admin-overlay{z-index:300;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;justify-content:center;align-items:flex-start;padding:24px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.admin-panel{border-radius:20px;flex-direction:column;gap:16px;width:100%;max-width:460px;padding:22px;display:flex}.admin-head{justify-content:space-between;align-items:center;display:flex}.admin-head h2{font-family:var(--font-display);margin:0;font-size:1.4rem;font-style:italic}.admin-close{background:var(--surface-2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:10px;width:34px;height:34px}.admin-form,.admin-list{flex-direction:column;gap:10px;display:flex}.admin-form-h{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:12px}.admin-form input{background:var(--bg-alt);border:1px solid var(--border);color:var(--text);border-radius:11px;padding:12px 14px;font-family:inherit;font-size:15px}.admin-pwd{gap:8px;display:flex}.admin-pwd input{flex:1}.admin-pwd button{background:var(--surface-2);border:1px solid var(--border);cursor:pointer;border-radius:11px;width:48px;font-size:18px}.admin-submit{background:var(--gold);color:#14110a;cursor:pointer;border:none;border-radius:12px;padding:13px;font-family:inherit;font-size:15px;font-weight:700}.admin-submit:disabled{opacity:.6}.admin-err{color:var(--red);font-size:13px}.admin-created{border:1px solid var(--green);background:#57c98b1f;border-radius:14px;flex-direction:column;gap:8px;padding:14px;display:flex}.admin-created-h{color:var(--green);font-weight:600}.admin-cred{justify-content:space-between;gap:10px;font-size:13px;display:flex}.admin-cred span{color:var(--muted)}.admin-cred b{text-align:right;word-break:break-all}.admin-copy{background:var(--gold-soft);border:1px solid var(--gold);color:var(--gold);cursor:pointer;border-radius:11px;margin-top:4px;padding:11px;font-family:inherit;font-size:13px;font-weight:600}.admin-row{border-top:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:10px;padding:10px 0;display:flex}.admin-row b{font-size:14px}.admin-row-sub{color:var(--muted);font-size:12px;display:block}.admin-row-count{color:var(--soft);white-space:nowrap;font-size:11px}.admin-config{background:var(--surface-2);border:1px solid var(--border);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:10px;padding:8px 12px;font-family:inherit;font-size:12px}.admin-config:hover{border-color:var(--gold);color:var(--gold)}.admin-form select{background:var(--bg-alt);border:1px solid var(--border);color:var(--text);border-radius:11px;padding:12px 14px;font-family:inherit;font-size:15px}.ed-tabs{gap:6px;display:flex}.ed-tabs button{background:var(--surface-2);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:11px;flex:1;padding:10px;font-family:inherit;font-size:13px}.ed-tabs button.on{border-color:var(--gold);color:var(--gold);background:var(--gold-soft)}.ed-list{flex-direction:column;display:flex}.ed-row{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:8px;padding:9px 0;font-size:14px;display:flex}.ed-row i{color:var(--muted);font-size:12px;font-style:normal}.ed-row button{border:1px solid var(--border);color:var(--red);cursor:pointer;background:0 0;border-radius:8px;flex:none;width:28px;height:28px}.ed-empty{color:var(--muted);padding:10px 0;font-size:13px}.ed-note{color:var(--gold);margin-top:4px;font-size:11px}.login{justify-content:center;align-items:center;min-height:100dvh;padding:24px;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:360px;box-shadow:var(--shadow);text-align:center;flex-direction:column;gap:14px;padding:32px 26px;display:flex}.login-logo{width:auto;height:54px;margin:0 auto}.login-tag{font-family:var(--font-display);letter-spacing:.34em;margin-bottom:4px;padding-left:.34em;font-size:16px;font-style:italic}.login-card h1{font-family:var(--font-display);margin:0 0 6px;font-size:1.5rem;font-weight:600}.login-card input{background:var(--bg-alt);border:1px solid var(--border);width:100%;color:var(--text);border-radius:12px;padding:13px 14px;font-family:inherit;font-size:15px}.login-card input:focus{border-color:var(--gold);outline:none}.pwd-wrap{position:relative}.pwd-wrap input{width:100%}.pwd-eye{cursor:pointer;background:0 0;border:none;padding:6px;font-size:18px;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.login-error{color:var(--red);font-size:13px}.login-btn{background:var(--gold);color:#14110a;cursor:pointer;border:none;border-radius:12px;width:100%;padding:13px;font-size:15px;font-weight:600}.login-btn:disabled{opacity:.6}.login-link{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:13px;text-decoration:underline}.nav-right{align-items:center;gap:10px;display:flex}.home-select{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:999px;max-width:150px;padding:6px 12px;font-family:inherit;font-size:12px}.nav-account{background:var(--surface-2);border:1px solid var(--border);color:var(--muted);cursor:pointer;white-space:nowrap;border-radius:999px;padding:6px 10px;font-size:12px}.empty-state{text-align:center;color:var(--muted);border:1px dashed var(--border);border-radius:var(--radius);margin-top:18px;padding:40px 20px}.empty-state .big{margin-bottom:10px;font-size:32px;display:block}.thermo-card,.shutter-card{grid-column:span 2;gap:8px}.thermo-card.heating{box-shadow:0 0 32px #e096461f, var(--shadow);border-color:#e0b15a80}.dial{aspect-ratio:1;width:200px;max-width:64%;margin:2px auto 0;position:relative}.dial-svg{width:100%;height:100%;overflow:visible}.dial-track{fill:none;stroke:var(--surface-2);stroke-width:13px;stroke-linecap:round}.dial-value{fill:none;stroke:url(#thermoGrad);stroke-width:13px;stroke-linecap:round;filter:drop-shadow(0 0 7px #e0b15a73);transition:d .5s}.dial-knob{fill:#fff;stroke:var(--gold);stroke-width:2.5px;transition:cx .5s,cy .5s}.dial-center{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.dial-temp{font-family:var(--font-display);font-size:2.5rem;font-weight:600;line-height:1}.dial-temp span{color:var(--gold)}.thermo-card.heating .dial-temp span{color:var(--amber)}.dial-target{color:var(--muted);margin-top:6px;font-size:12px}.thermo-controls{justify-content:center;gap:14px;margin-top:4px;display:flex}.thermo-controls button{border:1px solid var(--border);background:var(--surface-2);width:52px;height:52px;color:var(--text);cursor:pointer;border-radius:16px;font-size:26px;line-height:1;transition:transform .1s,border-color .1s}.thermo-controls button:active{border-color:var(--gold);color:var(--gold);transform:scale(.94)}.window{aspect-ratio:5/4;border:4px solid #23232d;border-radius:12px;width:100%;max-width:240px;margin:2px auto 0;position:relative;overflow:hidden;box-shadow:inset 0 0 0 2px #ffffff0a,0 6px 18px #00000080}.window-pane{background:linear-gradient(#aedcff 0%,#dff0ff 50%,#eaf6e6 78%,#cfe4c4 100%);position:absolute;inset:0}.window-pane:after{content:"";background:linear-gradient(120deg,#0000 40%,#ffffff59 50%,#0000 60%);position:absolute;inset:0}.sun{background:radial-gradient(circle,#fff7d6,#ffd76b 70%);border-radius:50%;width:30px;height:30px;position:absolute;top:14%;right:16%;box-shadow:0 0 24px #ffd86bd9}.shutter-blind{background:repeating-linear-gradient(#d9c79a 0 5px,#c2ac76 5px 7px,#b09a64 7px 8px);transition:height .55s cubic-bezier(.4,0,.2,1);position:absolute;top:0;left:0;right:0;box-shadow:0 4px 10px #00000073}.blind-grip{background:#7d6a3e;border-radius:3px;width:42%;height:4px;position:absolute;bottom:3px;left:50%;transform:translate(-50%)}.shutter-range{width:90%;accent-color:var(--gold);margin:12px auto 0;display:block}.shutter-btns{justify-content:center;gap:8px;margin-top:8px;display:flex}.shutter-btns button{border:1px solid var(--border);background:var(--surface-2);max-width:64px;height:42px;color:var(--text);cursor:pointer;border-radius:12px;flex:1;font-size:14px;transition:transform .1s,border-color .1s}.shutter-btns button:active{border-color:var(--gold);color:var(--gold);transform:scale(.94)}.access-card{justify-content:flex-start}.access-code{text-align:center;cursor:pointer;background:var(--bg-alt);border:1px solid var(--border);width:100%;color:var(--text);border-radius:12px;padding:12px;font-family:inherit}.access-code .code-val{font-family:var(--font-display);letter-spacing:.25em;color:var(--gold);font-size:1.7rem;font-weight:600}.access-code .code-hidden{color:var(--muted);font-size:13px}.access-managed{color:var(--muted);padding:6px 0;font-size:12px}.access-loc{color:var(--soft);margin-top:2px;font-size:11px}.access-unlock{cursor:pointer;background:var(--gold-soft);border:1px solid var(--gold);width:100%;color:var(--gold);border-radius:12px;padding:13px;font-family:inherit;font-size:14px;font-weight:600;transition:all .2s}.access-unlock:active{transform:scale(.97)}.access-unlock:disabled{cursor:default}.access-unlock.open{border-color:var(--green);color:var(--green);background:#57c98b29}.access-card.unlocked{border-color:var(--green);box-shadow:0 0 24px #57c98b26}.access-pin-toggle{width:100%;color:var(--muted);cursor:pointer;background:0 0;border:none;padding:6px 0 2px;font-family:inherit;font-size:12px;text-decoration:underline}.access-pin-panel{flex-direction:column;gap:10px;margin-top:4px;display:flex}.pin-durations{gap:6px;display:flex}.pin-durations button{background:var(--surface-2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:10px;flex:1;padding:9px 0;font-family:inherit;font-size:13px}.pin-durations button:active{border-color:var(--gold);color:var(--gold)}.pin-durations button:disabled{opacity:.5}.pin-result{background:var(--bg-alt);border:1px solid var(--gold);border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:12px;display:flex}.pin-valid{color:var(--muted);font-size:11px}.access-error{color:var(--red);margin-top:6px;font-size:12px}.cam-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.cam-tile{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;aspect-ratio:16/9;background:#000;padding:0;position:relative;overflow:hidden}.cam-tile img{object-fit:cover;width:100%;height:100%;display:block}.cam-fallback{width:100%;height:100%;color:var(--muted);background:var(--surface-2);flex-direction:column;justify-content:center;align-items:center;gap:6px;font-size:28px;display:flex}.cam-fallback span{font-size:12px}.cam-overlay{text-align:left;background:linear-gradient(#00000059,#0000 30% 70%,#0000008c);flex-direction:column;justify-content:space-between;padding:10px;display:flex;position:absolute;inset:0}.cam-live{letter-spacing:.05em;color:#fff;background:#e03c3cd9;border-radius:6px;align-self:flex-start;padding:3px 8px;font-size:11px;font-weight:700}.cam-live.off{background:#787882d9}.cam-name{color:#fff;text-shadow:0 1px 4px #000000b3;font-size:14px;font-weight:600}.cam-brand{color:var(--muted);background:#00000080;border-radius:6px;padding:3px 7px;font-size:10px;position:absolute;top:10px;right:10px}.cam-modal{z-index:200;background:#000000eb;flex-direction:column;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.cam-modal img{border-radius:12px;max-width:100%;max-height:80vh}.cam-modal-bar{color:var(--text);align-items:center;gap:14px;margin-top:14px;font-size:14px;display:flex}.cam-modal-bar button{background:var(--surface-2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:8px;padding:8px 16px}.ult{min-height:100dvh;position:relative}.ult-body{padding:clamp(14px,2vw,22px) clamp(16px,3vw,40px) 64px}.ult-aura{pointer-events:none;z-index:0;background:radial-gradient(70% 100% at 50% 0,#e0aa5080,#0000 70%);height:60vh;transition:opacity .9s;position:fixed;top:0;left:0;right:0}.ult>:not(.ult-aura){z-index:1;position:relative}.ult-loading{text-align:center;color:var(--gold);font-family:var(--font-display);padding:38vh 0;font-size:6vmin;font-style:italic}.glass{-webkit-backdrop-filter:blur(18px)saturate(130%);background:linear-gradient(160deg,#ffffff0e,#ffffff05);border:1px solid #ffffff17;border-radius:24px;box-shadow:0 14px 44px #0006}.ult-hero{min-height:clamp(160px,24vh,260px);padding:calc(env(safe-area-inset-top) + clamp(14px, 2vw, 24px)) clamp(16px, 3vw, 40px) clamp(20px, 2.5vw, 34px);color:#fff;background-color:#0000;background-image:linear-gradient(#05050973 0%,#0505090d 38%,#050509d1 100%),url(/pic-saint-loup.jpg);background-position:50% 38%;background-repeat:repeat,repeat;background-size:cover;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;flex-direction:column;justify-content:space-between;display:flex;position:relative;overflow:hidden;box-shadow:0 14px 44px #0006}.ult-hero-bar{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.ult-hero-foot{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.ult-hero-main{text-shadow:0 2px 18px #0000008c}.ult-hello{color:#fff;letter-spacing:.26em;text-transform:uppercase;opacity:.92;font-size:clamp(.7rem,1.8vw,.9rem);font-weight:600}.ult-clock{font-family:var(--font-display);letter-spacing:-.02em;margin-top:4px;font-size:clamp(2.6rem,9vw,4.6rem);font-weight:600;line-height:.9}.ult-date{text-transform:capitalize;opacity:.9;margin-top:8px;font-size:clamp(.95rem,2.8vw,1.35rem)}.ult-hero-meta{text-align:right;text-shadow:0 2px 14px #0009}.ult-home{font-family:var(--font-display);color:var(--gold);font-size:clamp(1rem,2.6vw,1.4rem);font-style:italic}.ult-climate{opacity:.95;flex-wrap:wrap;justify-content:flex-end;gap:16px;margin-top:6px;font-size:clamp(.85rem,2.2vw,1.05rem);display:flex}.ult-climate b{font-weight:700}.ult-logo{width:auto;height:clamp(32px,5vw,48px)}.ult-exit{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#00000059;border:1px solid #ffffff40;border-radius:999px;padding:8px 16px;font-family:inherit;font-size:13px}.ult-exit:hover{border-color:#fff}.ult-alert{border-radius:16px;align-items:center;gap:12px;margin-bottom:12px;padding:14px 18px;font-size:14px;display:flex}.ult-alert.critical{border:1px solid var(--red);background:#f8717129}.ult-alert.warning{border:1px solid var(--amber);background:#facc1524}.ult-alert.info{border:1px solid var(--border);background:#ffffff0d}.ult-alert button{color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:8px;margin-left:auto;padding:5px 12px}.ult-scenes{grid-auto-columns:1fr;grid-auto-flow:column;gap:12px;margin-bottom:clamp(14px,2vw,22px);padding:2px;display:grid}.ult-scene{cursor:pointer;color:var(--text);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:18px 12px;font-family:inherit;font-size:.95rem;transition:transform .15s,border-color .15s,background .15s;display:flex}.ult-scene:hover{border-color:#d4af3780;transform:translateY(-3px)}.ult-scene:active{transform:scale(.97)}.ult-scene .ic{font-size:30px}.ult-kpi{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:clamp(8px,1.2vw,14px);margin-bottom:clamp(12px,1.6vw,18px);display:grid}.ult-kpi-tile{text-align:center;flex-direction:column;align-items:center;gap:3px;padding:clamp(10px,1.4vw,16px) 8px;display:flex}.ult-kpi-tile .k-ic{font-size:clamp(18px,2vw,24px)}.ult-kpi-tile .k-v{font-family:var(--font-display);color:var(--gold);font-size:clamp(1.2rem,1.9vw,1.6rem);font-weight:600;line-height:1}.ult-kpi-tile .k-v small{color:var(--muted);font-size:.55em;font-family:var(--font-sans)}.ult-kpi-tile .k-l{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11px}.ult-kpi-tile.k-alert{border-color:var(--red)}.ult-kpi-tile.k-alert .k-v{color:var(--red)}.ult-bento{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));align-items:stretch;gap:clamp(12px,1.6vw,20px);display:grid}.ult-card{flex-direction:column;gap:10px;min-height:clamp(125px,16vh,175px);padding:clamp(13px,1.5vw,18px);display:flex}.ult-card-h{font-family:var(--font-display);background:linear-gradient(#f0d27a,#d4af37 60%,#a8862a);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.15rem;font-style:italic;font-weight:500}.ult-energy .ult-watt{align-items:baseline;gap:8px;display:flex}.ult-energy .ult-watt b{font-family:var(--font-display);color:var(--gold);font-size:clamp(2.6rem,5vw,3.4rem);line-height:1}.ult-energy .ult-watt span{color:var(--muted);font-size:1.1rem}.ult-sub{color:var(--muted);font-size:13px}.ult-lock{cursor:pointer;background:var(--gold-soft);border:1px solid var(--gold);width:100%;color:var(--gold);border-radius:14px;padding:14px;font-family:inherit;font-size:15px;font-weight:600;transition:all .2s}.ult-lock.open{border-color:var(--green);color:var(--green);background:#57c98b2e}.ult-lock:disabled{cursor:default;opacity:.85}.ult-lock-err{color:var(--red);font-size:12px}.ult-pinrow{gap:8px;display:flex}.ult-pinrow button{border:1px solid var(--border);color:var(--text);cursor:pointer;background:#ffffff0d;border-radius:12px;flex:1;padding:10px 0;font-family:inherit;font-size:13px}.ult-pinrow button:hover{border-color:var(--gold);color:var(--gold)}.ult-pin{background:var(--bg-alt);border:1px solid var(--gold);border-radius:14px;flex-direction:column;align-items:center;gap:2px;padding:12px;display:flex}.ult-pin b{font-family:var(--font-display);letter-spacing:.25em;color:var(--gold);font-size:1.8rem}.ult-pin span,.ult-code span{color:var(--muted);font-size:12px}.ult-code{border-top:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:8px 0;display:flex}.ult-code b{font-family:var(--font-display);letter-spacing:.15em;color:var(--text);font-size:1.2rem}.ult-cam{aspect-ratio:auto;padding:0;position:relative;overflow:hidden}.ult-cam img{object-fit:cover;width:100%;height:100%;display:block}.ult-cam-fallback{width:100%;height:100%;color:var(--muted);background:var(--surface-2);flex-direction:column;justify-content:center;align-items:center;gap:6px;font-size:30px;display:flex}.ult-cam-fallback span{font-size:13px}.ult-cam-tag{color:#fff;background:linear-gradient(#0000,#000000a6);align-items:center;gap:10px;padding:14px;font-size:14px;font-weight:600;display:flex;position:absolute;bottom:0;left:0;right:0}.ult-cam-tag .live{color:#fff;background:#e03c3ce6;border-radius:6px;padding:3px 8px;font-size:11px;font-weight:700}.ult-fam-h{justify-content:space-between;align-items:center;gap:8px;display:flex}.ult-fam-all{border:1px solid var(--border);color:var(--muted);cursor:pointer;white-space:nowrap;background:#7f7f8c1f;border-radius:999px;padding:5px 12px;font-family:inherit;font-size:11px}.ult-fam-all:hover{border-color:var(--gold);color:var(--gold)}.music-card{flex-direction:column;gap:12px;margin-top:22px;display:flex}.music-h{font-family:var(--font-display);font-size:1.15rem;font-style:italic}.music-now{color:var(--gold);font-size:.9rem}.music-stations{grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:8px;display:grid}.music-st{background:var(--surface);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;font-family:inherit;transition:border-color .12s;display:flex}.music-st.on{border-color:var(--gold);background:var(--gold-soft);color:var(--gold)}.music-ic{font-size:22px}.music-lbl{text-align:center;font-size:11px}.room-tag{color:var(--soft)!important}.ult-room.lit{border-color:#d4af3752;box-shadow:0 0 36px #e096461f,0 14px 44px #0006}.ult-devs{flex-direction:column;gap:8px;display:flex}.ult-dev{background:#ffffff09;border:1px solid #0000;border-radius:14px;align-items:center;gap:11px;padding:11px 13px;transition:background .2s,border-color .2s;display:flex}.ult-dev.on{background:var(--gold-soft);border-color:#d4af374d}.ult-dev.col{flex-direction:column;align-items:stretch;gap:8px}.ult-dev-top{align-items:center;gap:11px;display:flex}.ult-dev-ic{flex:none;font-size:18px}.ult-dev-name{flex:1;min-width:0;font-size:14px;line-height:1.2}.ult-dev-name small{color:var(--muted);margin-top:2px;font-size:11px;display:block}.ult-dev-val{color:var(--muted);font-size:13px;font-weight:600}.ult-dev-val.ok{color:var(--green)}.ult-dev-val.alert{color:var(--red)}.ult-dev input[type=range]{width:100%;accent-color:var(--gold)}.ult-toggle{background:var(--surface-2);border:1px solid var(--border);cursor:pointer;border-radius:999px;flex:none;width:48px;height:28px;transition:background .15s;position:relative}.ult-toggle i{background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .15s;position:absolute;top:3px;left:3px}.ult-toggle.on{background:var(--gold);border-color:var(--gold)}.ult-toggle.on i{transform:translate(20px)}.ult-thermo{flex:none;gap:6px;display:flex}.ult-thermo button{border:1px solid var(--border);width:34px;height:34px;color:var(--text);cursor:pointer;background:#ffffff0f;border-radius:10px;font-size:18px}.ult-thermo button:hover{border-color:var(--gold);color:var(--gold)}.ult-actions{align-items:center;gap:8px;display:flex}.ult-mode{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#00000059;border:1px solid #ffffff40;border-radius:12px;width:40px;height:40px;padding:0;font-family:inherit;font-size:18px;line-height:1}.ult-mode:hover{border-color:#fff}.theme-ctl{display:inline-flex;position:relative}.theme-pop{z-index:200;border-radius:16px;flex-direction:column;gap:8px;width:220px;padding:14px;display:flex;position:absolute;top:calc(100% + 8px);right:0}.theme-pop-h{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:4px;font-size:11px}.theme-modes{gap:6px;display:flex}.theme-modes button{border:1px solid var(--border);color:var(--text);cursor:pointer;background:#7f7f8c1a;border-radius:11px;flex-direction:column;flex:1;align-items:center;gap:3px;padding:9px 0;font-family:inherit;font-size:11px;display:flex}.theme-modes button.on{border-color:var(--gold);color:var(--gold);background:var(--gold-soft)}.theme-modes button span{font-size:17px}.theme-palettes{gap:10px;padding:2px 0;display:flex}.theme-palettes .swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:30px;height:30px;box-shadow:0 2px 6px #00000040}.theme-palettes .swatch.on{border-color:var(--text);transform:scale(1.12)}:root[data-theme=light] body{background:radial-gradient(1200px 600px at 50% -10%, #b8860b1a, transparent 60%), var(--bg)}:root[data-theme=light] .site-nav{background:#ffffffd1}:root[data-theme=light] .glass{background:linear-gradient(160deg,#ffffffc7,#ffffff94);border-color:#14142014;box-shadow:0 12px 34px #3c32141a}:root[data-theme=light] .ult-dev{background:#1414200a}:root[data-theme=light] .ult-toggle,:root[data-theme=light] .toggle{background:#e3ddcf}:root[data-theme=light] .ult-thermo button,:root[data-theme=light] .ult-pinrow button,:root[data-theme=light] .scene-btn,:root[data-theme=light] .card{background:var(--surface)}:root[data-theme=light] .ult-aura,:root[data-theme=light] .ambient-glow{background:radial-gradient(70% 100% at 50% 0,#b8860b47,#0000 70%)}:root[data-theme=light] .demo-bar{background:#ffffffeb}
