/* Candidate theme. All application-wide changes are opt-in; existing panel guards remain intact. */
html[data-design="chalet"]{
  color-scheme:dark;--ground:#171923;--surface:#222531;--surface-2:#2a2e3d;--line:#454a60;--line-soft:#34394c;
  --ink:#f0f0f7;--ink-2:#cacddd;--ink-3:#a7adc5;--glass:#171923f2;
  --heat:#e7b873;--heat-ink:#f2c88a;--heat-wash:#403626;
  --volt:#afa7f5;--volt-ink:#d4cfff;--volt-wash:#34304f;
  --ok:#8dd7b1;--ok-wash:#234037;--warn:#f0b486;--warn-wash:#46362c;--crit:#ffaaa4;--crit-wash:#472f32;
  --focus:#cbc2ff;--accent:#afa7f5;--r:14px;
  --f-display:'Segoe UI',Arial,sans-serif;--f-body:'Segoe UI',Arial,sans-serif;
  --shadow:0 5px 18px #07101620;--shadow-panel:-20px 0 70px #050c1460;
}
html[data-design="chalet"][data-theme="dark"]{--ground:#101119;--surface:#1b1e2a;--surface-2:#252938;--glass:#101119f2;--line:#3b4054;--line-soft:#2c3143}
html[data-design="chalet"] .card{border-radius:10px;padding:14px}
html[data-design="chalet"] .blk{border-radius:8px;padding:11px}
html[data-design="chalet"] .panel .btn{min-height:40px;padding:8px 10px;font-size:13px;border-radius:7px}
html[data-design="chalet"] .panel .two{grid-template-columns:minmax(0,1fr)}
html[data-design="chalet"] .panel-body{padding:14px;gap:10px}
.chalet-shell{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--surface)}
/* Celý přehled se vejde i na zavřený Fold. Detail zvětšuje nativní pinch zoom,
   bez dotykových handlerů a bez vodorovného posouvání výchozího přehledu. */
.chalet-viewport{display:block;overflow:hidden;width:100%;aspect-ratio:1672/941;touch-action:auto}
.chalet{position:relative;width:var(--scene-width,100%);min-width:0;transform:scale(var(--scene-scale,1));transform-origin:top left;aspect-ratio:1672/941;overflow:hidden;isolation:isolate;container-type:inline-size;color:#fffdf2;font-family:'Segoe UI',sans-serif}
.chalet-base{display:block;width:100%;height:auto}
.chalet-peugeot{position:absolute;inset:0;width:100%;height:100%;clip-path:polygon(0.538% 60.786%,3.170% 56.748%,4.187% 55.579%,5.981% 54.623%,10.407% 54.410%,15.012% 56.323%,17.644% 59.192%,18.840% 60.361%,20.933% 61.211%,21.531% 63.018%,22.010% 67.269%,21.890% 70.457%,20.933% 71.945%,20.514% 73.326%,18.541% 73.858%,17.344% 72.689%,13.876% 72.901%,12.620% 74.176%,10.766% 74.176%,9.569% 72.689%,4.964% 71.520%,3.768% 71.732%,2.871% 72.157%,1.615% 71.413%,0.957% 68.863%,0.598% 66.738%);pointer-events:none}
.chalet-light,.chalet-flows{position:absolute;inset:0;width:100%;aspect-ratio:1672/941;pointer-events:none}
.chalet-light{background:url('/assets/chalet/scene-v1/interior-lit.webp') 0 0/100% auto no-repeat;z-index:1}
.chalet-light.room-0{clip-path:polygon(24.8% 42.6%,50.2% 43%,50.2% 65.8%,24.8% 65.8%)}
.chalet-light.room-1{clip-path:polygon(51.8% 43.4%,69.5% 43.4%,69.5% 65.5%,51.8% 65.5%)}
.chalet-light.room-2{clip-path:polygon(70.6% 43.8%,85.9% 43.8%,85.9% 65.1%,70.6% 65.1%)}
.chalet-flows{z-index:2}.chalet-flows svg{display:block;width:100%;height:100%}
.chalet-flows path{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.chalet-flows .rail{stroke:#122b23a8;stroke-width:4}.chalet-flows .trace{stroke:currentColor;stroke-width:1.3;opacity:.75}.chalet-flows .pulse{stroke:#fffbed;stroke-width:2.5;opacity:0}
.chalet-flows .moving{stroke-dasharray:1 33;opacity:1;animation:chalet-flow var(--travel) linear infinite;filter:drop-shadow(0 0 2px currentColor)}.chalet-flows .reverse{animation-direction:reverse}
@keyframes chalet-flow{to{stroke-dashoffset:-68}}
.chalet-hit,.chalet-temperature,.chalet-permission,.chalet-stove-hit{position:absolute;z-index:3}
.chalet-hit{transform:translate(-50%,-10%);border:0;background:transparent;box-shadow:none;padding:4px;min-height:44px;min-width:44px;display:grid;gap:1px;text-align:center;color:#fffced;text-shadow:0 1px 3px #10231e;cursor:pointer;line-height:1.15}
.chalet-hit strong{font-size:clamp(17px,2cqw,29px);font-weight:650}.chalet-hit small{font-size:10px;letter-spacing:.5px}.chalet-hit span{font-size:clamp(10px,1cqw,13px);max-width:230px}
.chalet-hit.heater>small{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.chalet-hit.boiler{width:6%;gap:3px}.chalet-hit.boiler>small{font-size:9px;letter-spacing:.35px;color:#fff9e7;text-shadow:0 1px 3px #18201d}
.chalet-temperature[data-room="bathroom"]{max-width:7%}
.chalet-hit:is(.heater,.boiler) strong{font-family:'Bahnschrift','Segoe UI',sans-serif;color:#193f68;text-shadow:0 0 2px #fff;-webkit-text-stroke:.6px #fff8eb;paint-order:stroke fill;font-size:clamp(16px,1.7cqw,24px)}
.chalet-hit:is(.heater,.boiler) span{color:#294055;text-shadow:0 0 3px #fff;max-width:90px;font-size:10px}
.chalet-hit.car strong{font-size:clamp(24px,2.8cqw,38px);text-shadow:0 1px 4px #000,0 0 12px #14291f}
.chalet-temperature{pointer-events:none;display:grid;gap:1px;text-shadow:0 1px 3px #17291f;line-height:1.2;max-width:150px}
.chalet-temperature strong{font-size:clamp(18px,1.9cqw,27px)}.chalet-temperature small{font-size:clamp(10px,.95cqw,13px)}
.chalet-hit.light{width:44px;height:44px;transform:translate(-50%,-50%)}.chalet-hit.light>*{display:none}.chalet-hit.light.on::after{content:'';position:absolute;inset:12px;border-radius:50%;background:#fff6d36b;box-shadow:0 0 17px 7px #ffdc8355;pointer-events:none}
.chalet-permission{transform:translateX(-100%);white-space:nowrap}.chalet-permission button{border:0;background:#14271cad;color:#fff8e9;font-size:11px;border-radius:4px;padding:4px 7px;cursor:pointer}
.chalet-permission button::before{content:'●';padding-right:5px;color:#aeb8b1}.chalet-permission .allow::before{color:#75e5c0}.chalet-permission .block::before{color:#ff8878}
.chalet-energy-dock{position:absolute;z-index:3;left:69%;bottom:2%;width:18%;display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.chalet-energy-dock .chalet-hit.battery{position:static;transform:none;width:83%;max-width:none;padding:0}
.chalet-grid-status{position:static;width:78%;align-self:flex-end;display:flex;flex-direction:column;align-items:center;gap:5px}
.chalet-grid-status .chalet-hit,.chalet-grid-status .chalet-permission{position:static;transform:none}
.chalet-grid-status .chalet-hit{padding:0;gap:3px;width:100%;max-width:none;white-space:nowrap}
.chalet-grid-status .chalet-permission button{min-height:28px;line-height:1.3}
.chalet-hit.spa{width:10.8%;line-height:1.3;gap:4px}
.chalet-hit.battery{width:16%;gap:3px}.chalet-hit.battery span{font-size:10px}
.chalet-hit.car{width:24%;max-width:24%;gap:4px}.chalet-hit.car strong{font-size:clamp(22px,2.4cqw,34px)}
.chalet-hit.pv{width:28%;max-width:28%}.chalet-hit.pv span{max-width:none;font-size:clamp(10px,.95cqw,13px)}
.chalet-room-status[data-tone="warn"]{color:#ffdba0}.chalet-hit .chalet-device-alert{color:#fff;background:#842f29;padding:3px;border-radius:3px;font-weight:600}
.chalet-service-hit{position:absolute;z-index:3;transform:translate(-50%,-50%);width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:50%;background:#122326b0;color:#fff;cursor:pointer}
.chalet-service-hit svg{width:21px;height:21px}.chalet-service-hit.on{color:#ffe0a6;box-shadow:0 0 14px #ffd38f70}.chalet-service-hit.running{color:#8de6d1}
.chalet-service-hit svg,.chalet-car-controls svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.chalet-outdoor{background:transparent;color:#dce0d8;width:48px;height:64px;transform:translate(-50%,-40%)}.chalet-outdoor svg{width:46px;height:62px;overflow:visible;filter:drop-shadow(1px 2px 1px #12191ba0)}
.chalet-outdoor .lantern-arm,.chalet-outdoor .lantern-frame{stroke:#23272b;stroke-width:1;fill:none}.chalet-outdoor .lantern-metal{fill:#30353a;stroke:#141a1d;stroke-width:.5}.chalet-outdoor .lantern-glass{fill:#cbdde033;stroke:#e4eff077;stroke-width:.4}.chalet-outdoor .lantern-bulb{fill:#d9d8c9;stroke:#8c948e;stroke-width:.3}
.chalet-outdoor.on{box-shadow:none}.chalet-outdoor.on .lantern-glass{fill:#ffda8738}.chalet-outdoor.on .lantern-bulb{fill:#fff4c5;stroke:#ffe7a4;filter:drop-shadow(0 0 3px #ffca67)}
.chalet-outdoor.on::before{content:'';position:absolute;inset:10px -15px -12px;background:radial-gradient(ellipse,#ffe5a94f,transparent 68%);pointer-events:none}
.chalet-lantern-wash{position:absolute;z-index:1;left:34%;top:64%;width:35%;height:32%;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(ellipse at 50% 10%,#ffd79745, #ffd79725 38%,transparent 72%);filter:blur(9px);transform:perspective(200px) rotateX(20deg)}
.chalet-fan{background:transparent;border-radius:0;padding:10px}.chalet-fan svg{width:clamp(18px,1.8cqw,23px);height:auto;transform:skewY(1deg);filter:none;stroke-width:.4;opacity:.86;mix-blend-mode:multiply}
.chalet-fan .fan-recess{fill:#68615266;stroke:none}.chalet-fan .fan-frame{fill:url(#chalet-fan-face);stroke:#b9ae9b;stroke-width:.25}.chalet-fan .fan-inset-shadow{fill:none;stroke:#665f5080;stroke-width:.6}.chalet-fan .fan-duct{fill:url(#chalet-fan-depth);stroke:none}.chalet-fan .fan-rotor{fill:#767264;stroke:none;opacity:.22;transform-origin:12px 12px}.chalet-fan .fan-grille{stroke:#c6bba9;stroke-width:1.6;stroke-linecap:butt}.chalet-fan .fan-edge-light{fill:none;stroke:#f1e5ce77;stroke-width:.4}.chalet-fan.running .fan-rotor{animation:chalet-fan-turn 2s linear infinite}
@keyframes chalet-fan-turn{to{transform:rotate(360deg)}}
.tesla-temperature{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}.tesla-temperature label{display:flex;align-items:center;gap:8px;flex:1;font-size:13px}.tesla-temperature input{width:76px;min-height:44px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink);font:inherit;padding:6px}.tesla-temperature .hint{flex-basis:100%;margin:0}
html[data-design="chalet"] .svetla-grid[data-room="livingRoom"]{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:9px}
html[data-design="chalet"] .svetla-grid[data-room="livingRoom"] .svetlo-dl{aspect-ratio:1;min-height:118px;justify-content:center;border-radius:9px;padding:13px 10px;gap:7px}
html[data-design="chalet"] .svetla-grid[data-room="livingRoom"] .svetlo-dl b{font-size:15px;line-height:1.25;overflow-wrap:anywhere;padding-right:0}
html[data-design="chalet"] .svetla-grid[data-room="livingRoom"] .svetlo-dl span{font-size:12px;line-height:1.3;overflow-wrap:anywhere}
html[data-design="chalet"] .svetla-grid[data-room="livingRoom"] .tecky{top:0;right:0;width:44px;height:44px}
.device-selection{margin-bottom:18px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.device-selection-header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.device-selection-rooms{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:14px 0}.device-selection-room{border:1px solid var(--line-soft);border-radius:8px;padding:8px}.device-selection label{display:flex;align-items:center;gap:8px;min-height:40px;font-size:12px;cursor:pointer}.device-selection input{width:18px;height:18px;accent-color:var(--volt)}.device-selection-room>label{font-weight:600;border-bottom:1px solid var(--line-soft)}.device-selection-actions{display:flex;gap:8px;flex-wrap:wrap}
.chalet-car-dock{position:absolute;z-index:3;left:2%;bottom:3%;width:23%;display:grid;gap:9px}
.chalet-car-dock .chalet-hit.car{position:static;transform:none;width:100%;max-width:none;gap:4px;padding:0 2px;min-height:0}
.chalet-car-dock .chalet-hit.car span{max-width:none;line-height:1.3}
.chalet-car-controls{position:static;width:100%;display:flex;gap:4px}
.chalet-car-controls button{flex:1;min-width:0;min-height:44px;display:grid;place-items:center;gap:2px;padding:5px 2px;border:1px solid #d4dbe333;border-radius:7px;background:#152329d9;color:#fff;font:10px var(--f-body);cursor:pointer}
.chalet-car-controls svg{width:18px;height:18px}.chalet-car-controls button:disabled{opacity:.65;cursor:default}.chalet-car-controls .confirm{background:#624b1f}
.chalet-shortcuts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:var(--line-soft);border-block:1px solid var(--line-soft)}
.chalet-shortcuts .chalet-price small{flex-basis:100%;font-size:11px;color:var(--ink-2)}
.chalet-shortcuts button{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;min-height:48px;border:0;padding:9px 12px;background:var(--surface);color:var(--ink);font:12px/1.4 var(--f-body);cursor:pointer}
.chalet-foot .chalet-phase-critical{color:var(--crit);font-weight:700}.chalet-foot .chalet-phase-warning{color:var(--warn);font-weight:600}
.chalet-flow-legend{display:flex;flex-wrap:wrap;gap:8px 18px;padding:0 12px 12px;font-size:11px;color:var(--ink-2)}.chalet-flow-legend span{display:flex;align-items:center;gap:6px}.chalet-flow-legend i{width:16px;height:3px;border-radius:2px}
.chalet-mobile-flow{display:none}.chalet-mobile-flow h3{font-size:14px;margin:6px 0}.chalet-mobile-flow svg{width:100%;height:auto}
@media(max-width:700px){.chalet-shortcuts{grid-template-columns:repeat(2,minmax(0,1fr))}.chalet-shortcuts button:last-child{grid-column:1/-1}.chalet-mobile-flow{display:block;padding:12px;border-top:1px solid var(--line-soft)}}
/* Both states occupy the painted vent, independent of labels and room lights. */
.chalet-heater-vent-cover{position:absolute;z-index:2;display:block;width:1.855%;height:1.063%;transform:translate(-50%,-50%);border-radius:1px;pointer-events:none;background:linear-gradient(#68605a,#292b2c 30%,#353434 72%,#8e8275)}
.chalet-heater-vent-cover.releasing{background:linear-gradient(#825843,#ff9044 30%,#ffcb79 65%,#ad5c36);box-shadow:0 0 .35cqw .08cqw #ffc56680}
.chalet-hit.heater.charging strong{color:#ff5252;animation:chalet-heater-charge 3.4s ease-in-out infinite}
@keyframes chalet-heater-charge{50%{opacity:.55;filter:drop-shadow(0 0 3px #ff3636)}}
.chalet-hit.auxiliary::after{content:'ϟ';position:absolute;left:40%;top:-35px;font-size:25px;color:#ffc34c;animation:chalet-charge 2.4s ease-in-out infinite}
@keyframes chalet-charge{50%{opacity:.55;filter:drop-shadow(0 0 3px #ffd385)}}
.chalet-stove-hit{width:4.5%;height:18%;transform:translate(-50%,-45%)}.chalet-stove-hit>button,.chalet-stove-hit>div>button{width:100%;height:100%;font-size:0!important;border:0!important;background:transparent!important;box-shadow:none!important}.chalet-stove-hit>div{height:100%}.chalet-stove-hit .hint{display:none}
.chalet-fire{position:absolute;width:1.1%;height:4%;z-index:2;transform:translate(-50%,-40%);background:radial-gradient(ellipse at 50% 75%,#fff7b8,#ffba3c 38%,#e16d1280 65%,transparent 73%);border-radius:50% 30% 50% 40%;animation:chalet-fire .8s ease-in-out infinite alternate;pointer-events:none}
@keyframes chalet-fire{to{transform:translate(-48%,-45%) scale(.9,1.1)}}
.chalet-smoke,.chalet-steam{position:absolute;z-index:2;width:8%;height:13%;transform:translate(-50%,-100%);pointer-events:none}
.chalet-smoke i,.chalet-steam i{position:absolute;left:40%;bottom:0;width:25%;aspect-ratio:1;background:radial-gradient(ellipse,#fffce6b0,#e6e4d559 45%,transparent 73%);filter:blur(2px);animation:chalet-smoke 6s linear infinite}.chalet-smoke i:nth-child(2n),.chalet-steam i:nth-child(2n){animation-delay:-2s;left:45%}.chalet-smoke i:nth-child(3n),.chalet-steam i:nth-child(3n){animation-delay:-4s;left:35%}
@keyframes chalet-smoke{0%{opacity:0;transform:scale(.6)}15%{opacity:.8}100%{opacity:0;transform:translate(60%,-230%) scale(3)}}

/* Sekačka Dreame — společný animační plán se zvířaty, ovládání panelu zachováno. */
.chalet-mower-hit{position:absolute;z-index:3;transform:translate(-50%,-72%);width:4.8%;min-width:40px;max-width:66px;border:0;background:transparent;padding:0;cursor:pointer;display:block}
/* Stanice se nikdy nehýbe, věž je vzadu u zdi. */
.chalet-mower-dock{position:absolute;z-index:2;transform:translate(-56%,-78%);width:5.9%;min-width:49px;max-width:81px;height:auto;pointer-events:none;filter:drop-shadow(0 3px 4px rgba(10,15,10,.4))}
.chalet-mower-hit .chalet-mower-img{width:100%;height:auto;display:block;filter:drop-shadow(0 3px 4px rgba(10,15,10,.45))}
.chalet-mower-hit.nevim .chalet-mower-img{opacity:.55;filter:drop-shadow(0 3px 4px rgba(10,15,10,.45)) saturate(.55)}
.chalet-mower-hit .chalet-device-alert{position:absolute;top:-16px;left:50%;transform:translateX(-50%);white-space:nowrap;z-index:1}
.chalet-mower-charge{position:absolute;right:-1px;top:8%;width:9px;height:9px;border-radius:50%;background:#ffdc83;box-shadow:0 0 6px 2px #ffc56690;animation:chalet-charge 3.4s ease-in-out infinite}
/* One shared clock reserves mower space and animates the animals. The station
   and its occupied image use exactly the same canvas and anchor. */
.chalet-mower-dock,.chalet-mower-hit.docked{width:3.6%;min-width:0;max-width:none;transform:translate(-50%,-88%)}
.chalet-mower-hit[data-garden-motion]{animation:none;min-width:0;max-width:none;transform:translate(-50%,-88%)}
.chalet-mower-hit[data-garden-motion] .chalet-mower-img{animation:none}
.chalet-mower-hit:focus-visible{outline:2px solid var(--focus);outline-offset:5px;border-radius:7px}
.chalet-mower-hit::before{content:'';position:absolute;inset:-10px}
.chalet-garden{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}
/* Michal 28. 9. odpoledne: „zvířátka mají slabý kontrast, nejsou moc vidět." První pokus
   (dvojitý prstenec, tmavý+světlý) Michal viděl živě na telefonu a odmítl: „Ty zvířata vypadají
   takhle blbě" — tlustý bílý „samolepkový" lem. Druhý pokus (jen tmavý stín + jas/sytost) taky
   neprošel: „To už bylo lepší to původní. Myslel jsem jim trochu jen ztmavit barvy."
   ▶️ Proto beze stínu i obrysu — jen mírně tmavší a sytější barvy nad ORIGINÁLNÍM vzhledem
   (brightness ~0,8–0,85, saturate 1,1), stejně pro všechny druhy i pro den/noc/soumrak/svítání;
   v noci o chlup méně tmavé (0,80 místo původních 0,67), ať nejsou úplně černé. Původní jemný
   `drop-shadow` u paty (1 px, nízká krytí) zůstal — to je „původní vzhled", ne nový obrys.
   🔑 Rozhoduje tu pohled na skutečnou scénu, ne měřený kontrastní poměr — cíl 3:1 z prvního
   pokusu je záměrně opuštěný. */
.chalet-animal{position:absolute;left:0;top:0;display:block;transform-origin:50% 88%;will-change:transform;pointer-events:none;transition:filter 2s;isolation:isolate;filter:brightness(.82) contrast(1.24) saturate(1.1) drop-shadow(0 1px 1px rgba(8,18,20,.65))}
.chalet-animal-body{position:absolute;inset:0;display:block;filter:url(#garden-alpha);transform-origin:50% 85%}
.chalet-animal-frame{position:absolute;inset:0;display:block;background-size:400% 200%;background-repeat:no-repeat;background-position:0 100%}
.chalet-animal-sleep{position:absolute;inset:0;display:none;background-size:contain;background-repeat:no-repeat;background-position:center bottom;mask-image:radial-gradient(ellipse 48% 45% at 50% 63%,#000 67%,transparent 99%)}
.chalet-animal[data-sleeping="true"] .chalet-animal-body{display:none}
.chalet-animal[data-sleeping="true"] .chalet-animal-sleep{display:block}
.chalet-animal::before{content:'';position:absolute;left:20%;right:18%;top:83%;height:9%;border-radius:50%;background:#111b14;opacity:.4;filter:blur(1.3px);transform:skewX(-24deg)}
.chalet[data-period="night"] .chalet-animal:not([data-inside="true"]){filter:brightness(.8) contrast(1.3) saturate(1.1) drop-shadow(0 1px 2px rgba(0,0,0,.8))}
.chalet[data-period="dusk"] .chalet-animal:not([data-inside="true"]){filter:brightness(.8) contrast(1.28) sepia(.1) saturate(1.1) drop-shadow(0 1px 1px rgba(0,0,0,.7))}
.chalet[data-period="dawn"] .chalet-animal:not([data-inside="true"]){filter:brightness(.82) contrast(1.26) sepia(.08) saturate(1.1) drop-shadow(0 1px 1px rgba(0,0,0,.65))}
.chalet [hidden]{display:none!important}.chalet-quick{display:none}.chalet-foot{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:8px 12px;flex-wrap:wrap}.chalet-foot button,.chalet-quick button{background:transparent;border:0;font:inherit;color:var(--ink);min-height:44px;cursor:pointer}.chalet-foot{font-size:12px}.chalet-note{padding:0 12px;margin:5px 0 10px;font-size:11px;color:var(--ink-2)}
@media(max-width:700px){.chalet-quick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;padding:8px}.chalet-quick button{display:grid;text-align:left;border-bottom:1px solid var(--line);font-size:12px;padding:7px}.chalet-temperature{max-width:92px}.chalet-hit span{max-width:160px}}
@media(pointer:coarse){html[data-design="chalet"] .panel .btn{min-height:44px}}
@media(prefers-reduced-motion:reduce){.chalet *{animation:none!important}.chalet-flows .moving{stroke-dasharray:none;stroke:currentColor;stroke-width:1.5}.chalet-smoke i,.chalet-steam i{opacity:.2}}

/* Same quiet typography and hierarchy as the approved cottage prototype. */
html[data-design="chalet"] body{font-size:14px}
html[data-design="chalet"] .top{padding:17px 3%;gap:20px;box-shadow:none}
html[data-design="chalet"] .brand{width:auto;height:auto;border-radius:0;background:none;color:var(--ink);font:38px/1 Georgia,serif;letter-spacing:-1px}
html[data-design="chalet"] .top h1{font:500 10px/1.5 var(--f-body);text-transform:uppercase;letter-spacing:1.8px}
html[data-design="chalet"] .top .stamp{font-size:11px}
html[data-design="chalet"] .top .stamp .hodiny{font-size:16px;font-weight:500}
html[data-design="chalet"] .tabs{background:none;border:0;margin:auto;padding:0;gap:5px}
html[data-design="chalet"] .tabs button{padding:10px 19px;font-weight:500;border-radius:10px}
html[data-design="chalet"] .tabs svg{display:none}
html[data-design="chalet"] .tabs button[aria-current="true"]{background:var(--volt-wash);color:var(--volt-ink);box-shadow:inset 0 0 0 1px var(--line)}
html[data-design="chalet"] .tools{margin-left:0}
html[data-design="chalet"] main{padding:24px 3% 48px;max-width:1560px}
.chalet-weather{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:0 0 19px;padding:4px 0 18px;border-bottom:1px solid var(--line-soft)}
.chalet-eyebrow{font-size:10px;letter-spacing:1.8px;color:var(--ink-3)}
.chalet-weather-reading{display:flex;gap:16px;align-items:center;margin-top:4px}.chalet-weather-reading strong{font-size:31px;font-weight:500;letter-spacing:-1px}.chalet-weather-reading span{font-size:15px;color:var(--ink-2)}
.chalet-weather p{margin:5px 0 0;font-size:12px;color:var(--ink-3)}
.chalet-weather button{border:1px solid var(--line);border-radius:9px;min-height:40px;background:var(--surface);padding:8px 13px;cursor:pointer;font-size:12px}
.chalet-weather .chalet-header-pv{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;background:transparent;border:0;border-left:1px solid var(--line-soft);border-radius:0;padding-left:24px;margin-left:auto}.chalet-header-pv>div{display:flex;gap:24px;flex-wrap:wrap}.chalet-header-pv strong{font-size:20px;font-weight:500;color:var(--heat-ink);margin-left:5px}.chalet-header-pv small{color:var(--ink-3);font-size:11px}
.chalet-environment-controls[hidden]{display:none!important}
@media(max-width:700px){.chalet-weather{flex-wrap:wrap}.chalet-weather .chalet-header-pv{order:3;flex-basis:100%;margin:0;border:0;border-top:1px solid var(--line-soft);padding:12px 0 0}.chalet-weather>button:last-child{margin-left:auto}}
html[data-design="chalet"] .modebar{gap:8px;margin-bottom:16px}
html[data-design="chalet"] :is(.homeseg,.arrival,.arrange-btn,.bigact,.lockchip){border-radius:9px;box-shadow:none;font-weight:500}
html[data-design="chalet"] :is(.arrival,.arrange-btn,.bigact,.lockchip){padding:8px 12px;min-height:42px;font-size:12px}
html[data-design="chalet"] .homeseg{padding:3px}
html[data-design="chalet"] .homeseg button{padding:7px 12px;min-height:36px;font-size:12px;font-weight:500}
html[data-design="chalet"] .homeseg button[aria-pressed="true"]{background:var(--volt-wash);color:var(--ink)}
html[data-design="chalet"] .bigact{background:var(--surface-2);color:var(--ink);border:1px solid var(--line)}
html[data-design="chalet"] :is(.arrival,.lockchip) .v{font-size:12px;font-weight:500}
html[data-design="chalet"] .card{padding:17px 19px;border-radius:14px}
html[data-design="chalet"] .sec-head{margin-bottom:8px}
html[data-design="chalet"] .sec-head h2{font-size:15px;font-weight:500;text-transform:none;letter-spacing:-.2px;color:var(--ink)}
html[data-design="chalet"] .sec-head .note{font-size:11px}
html[data-design="chalet"] .card>h3{font-size:16px;font-weight:500}
html[data-design="chalet"] .row{font-size:12px;padding:8px 0}
html[data-design="chalet"] .row .v{font-weight:500}
html[data-design="chalet"] :is(.plainspeak,.hint){line-height:1.5;font-size:12px}
html[data-design="chalet"] .k{font-size:10px;font-weight:500;letter-spacing:.07em}
html[data-design="chalet"] .num{font-weight:500}
html[data-design="chalet"] :is(.btn.primary,.btn.volt,.seg button[aria-pressed="true"]){color:#14232b}
/* R248: hlavní tlačítko karet (`.ahead .acts button.yes`, „Vrátit pod EC", „Vrátit Doma") mělo
   v chalet bílý text na světle jantarovém `--heat` — kontrast 1,8 (měřeno v prohlížeči). */
html[data-design="chalet"] .ahead .acts button.yes{color:#14232b}
html[data-design="chalet"] .btn.confirm{color:var(--crit)}
html[data-design="chalet"] :is(.tile,.dev){border-radius:12px;box-shadow:none}

/* Compact drawers: original nodes and callbacks, quieter details below controls. */
html[data-design="chalet"] .scrim{background:#07101780;backdrop-filter:blur(3px)}
html[data-design="chalet"] .panel{width:min(430px,100vw,var(--frame));background:var(--ground)}
html[data-design="chalet"] .panel.sirsi{width:min(580px,100vw,var(--frame))}
html[data-design="chalet"] .panel-head{padding:17px 18px;min-height:70px;flex-shrink:0;background:var(--ground)}
html[data-design="chalet"] .panel-head h2{font:24px/1.25 Georgia,serif;letter-spacing:-.3px}
html[data-design="chalet"] .panel-head .x{width:40px;height:40px;flex-shrink:0;background:var(--surface)}
html[data-design="chalet"] .panel-body{padding:12px 16px calc(20px + env(safe-area-inset-bottom,0px));gap:8px;scrollbar-gutter:stable;overscroll-behavior:contain}
html[data-design="chalet"] .panel-body>*{flex-shrink:0;min-width:0}
html[data-design="chalet"] .panel .blk{padding:12px;border-radius:11px;background:var(--surface)}
html[data-design="chalet"] .panel .blk>.k{margin-bottom:7px;font-size:11px;text-transform:none;letter-spacing:0;font-weight:600;color:var(--ink-2)}
html[data-design="chalet"] .panel .chalet-primary-controls{border-color:#615b85;background:var(--volt-wash)}
html[data-design="chalet"] .panel :is(.hint,.plainspeak){font-size:12px;line-height:1.45}
html[data-design="chalet"] .panel .reading{margin:4px 0 9px;gap:5px}
html[data-design="chalet"] .panel .reading .now{font-size:29px;font-weight:500;line-height:1.2}
html[data-design="chalet"] .panel .reading .goal{font-size:12px}
html[data-design="chalet"] .panel .seg{gap:4px;padding:3px;border-radius:9px;grid-auto-columns:minmax(0,1fr)}
html[data-design="chalet"] .panel .seg button{min-height:40px;padding:6px;font-size:12px;font-weight:500;overflow-wrap:break-word}
html[data-design="chalet"] .panel .stepper{margin-top:8px;gap:7px}
html[data-design="chalet"] .panel .stepper button{width:40px;height:40px;border-radius:8px;flex-shrink:0}
html[data-design="chalet"] .panel .stepper .val{font-size:22px;padding:4px;border-radius:8px;min-width:0}
html[data-design="chalet"] .panel .field{padding:8px;min-height:40px;border-radius:8px}
html[data-design="chalet"] .chalet-panel-details{border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow:hidden}
html[data-design="chalet"] .chalet-panel-details>summary{min-height:44px;padding:11px 12px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;list-style:none}
html[data-design="chalet"] .chalet-panel-details>summary::-webkit-details-marker{display:none}
html[data-design="chalet"] .chalet-panel-details>summary::after{content:'+';font-size:18px;color:var(--volt);flex:none}
html[data-design="chalet"] .chalet-panel-details[open]>summary::after{content:'−'}
html[data-design="chalet"] .chalet-panel-details>summary>.k{font-size:12px;letter-spacing:0;text-transform:none;color:var(--ink-2)}
html[data-design="chalet"] .chalet-panel-details>.blk{border:0;border-top:1px solid var(--line-soft);border-radius:0}
html[data-design="chalet"] summary:focus-visible{outline:2px solid var(--focus);outline-offset:-3px}

/* Small superscript markers replace repeated paragraphs over the photograph. */
.chalet-stale-mark{font-size:10px;color:#ffe0a6;vertical-align:super;margin-left:3px;font-weight:600;text-shadow:0 1px 3px #07131e}
.chalet-hit{max-width:19%;font-weight:400}.chalet-hit strong{font-weight:600;letter-spacing:-.5px}
.chalet-hit:is(.heater,.boiler) strong{font-family:'Segoe UI',Arial,sans-serif;font-weight:650;-webkit-text-stroke:0;color:#f6ecd8;text-shadow:0 1px 2px #102d40,1px 0 2px #102d40,-1px 0 2px #102d40,0 0 5px #102d40}
.chalet-hit:is(.heater,.boiler) span{color:#fff4db;text-shadow:0 1px 3px #112735;font-size:10px}
.chalet-hit.battery{max-width:16%;text-align:center;transform:translate(-50%,-10%)}
.chalet-hit.spa{max-width:14%;transform:translate(-50%,-10%)}
.chalet-hit.spa span{font-size:11px;line-height:1.3}
.chalet-temperature{max-width:13%;gap:3px}.chalet-temperature small{max-width:100%;line-height:1.25}
.chalet-hit.boiler[data-heat="cold"] strong{color:#b2e6ff}.chalet-hit.boiler[data-heat="warm"] strong{color:#ffe1a0}.chalet-hit.boiler[data-heat="hot"] strong{color:#ffb38c}
@media(max-width:760px){
  html[data-design="chalet"] .top{padding:12px 4%;gap:12px;flex-wrap:wrap}
  html[data-design="chalet"] .brand{font-size:30px}
  html[data-design="chalet"] .tools{margin-left:auto;gap:4px}
  html[data-design="chalet"] main{padding:18px 3% 100px}
  html[data-design="chalet"] .modebar>:is(.bigact,.arrange-btn){width:auto;margin-left:0}
  html[data-design="chalet"] .modebar{align-items:stretch}
  html[data-design="chalet"] .panel,html[data-design="chalet"] .panel.sirsi{top:auto;bottom:0;height:92dvh;max-height:92dvh;width:min(100%,var(--frame));border:1px solid var(--line);border-bottom:0;border-radius:20px 20px 0 0;transform:translateY(102%)}
  html[data-design="chalet"] .panel.open{transform:none}
  html[data-design="chalet"] .panel-head{padding:20px 14px 12px;border-radius:20px 20px 0 0}
  html[data-design="chalet"] .panel-head::before{content:'';position:absolute;top:7px;left:calc(50% - 18px);width:36px;height:3px;border-radius:4px;background:var(--line)}
  html[data-design="chalet"] .panel-head h2{font-size:22px}
  html[data-design="chalet"] .panel-body{padding-left:12px;padding-right:12px}
  .chalet-weather-reading{gap:10px;flex-wrap:wrap}.chalet-weather-reading strong{font-size:27px}.chalet-weather{gap:8px}.chalet-weather button{white-space:nowrap;padding:8px;font-size:11px}
}
@media(pointer:coarse){html[data-design="chalet"] .panel :is(.btn,.seg button,.stepper button,.field,.x){min-height:44px}html[data-design="chalet"] .panel .stepper button{min-width:44px}}

/* Daylight belongs to the garden and sky, never to a filter over the whole UI. */
.chalet-environment,.chalet-night-sky{position:absolute;inset:0;pointer-events:none;z-index:1}
/* Lampičky kolem domu svítí jen večer a v noci (Michal 27. 9.); ve dne je překryv zhasne. Bez opacity/transition — průhledný předek by backdrop filtru vzal pozadí. */
.chalet-lamps-off{position:absolute;inset:0;pointer-events:none;display:none}
.chalet[data-period="day"] .chalet-lamps-off{display:block}
.chalet-lamp-glow,.chalet-lamp-head{position:absolute;display:block;transform:translate(-50%,-50%)}
.chalet-lamp-glow{border-radius:50%;-webkit-backdrop-filter:brightness(.72) saturate(.55);backdrop-filter:brightness(.72) saturate(.55);-webkit-mask-image:radial-gradient(closest-side,#000 35%,transparent 100%);mask-image:radial-gradient(closest-side,#000 35%,transparent 100%)}
/* Keep the actual glass and frame; no opaque rectangular patches. */
.chalet-lamp-head{border-radius:15%;-webkit-backdrop-filter:brightness(.38) saturate(.08);backdrop-filter:brightness(.38) saturate(.08);background:#8b958f22}
/* The original artwork already contains the warm lamp glow. No extra cones. */
.chalet-path-light{position:absolute;inset:0;z-index:2;pointer-events:none;display:none}
.chalet-path-light svg{display:block;width:100%;height:100%}
.chalet:is([data-period="dusk"],[data-period="night"],[data-period="dawn"]) .chalet-path-light{display:block}
.chalet-festivities{position:absolute;inset:0;z-index:2;pointer-events:none}
.chalet-festivities svg{display:block;width:100%;height:100%;overflow:visible}
.festive-bulb{fill:#bca87d}
.festive-pumpkin-face{fill:#49331c}
.chalet:is([data-period="dusk"],[data-period="night"],[data-period="dawn"]) .festive-bulb{fill:#fff0bc;filter:drop-shadow(0 0 3px #ffd076) drop-shadow(0 0 7px #ffae4677)}
.chalet:is([data-period="dusk"],[data-period="night"],[data-period="dawn"]) .festive-pumpkin-face{fill:#ffd47b;filter:drop-shadow(0 0 3px #ffa938)}
.chalet-wind-trees{position:absolute;inset:0;z-index:1;pointer-events:none}
.chalet-wind-trees i{position:absolute;inset:0;display:block;background-image:var(--tree-image);background-size:100% 100%;background-repeat:no-repeat;will-change:transform}
.chalet-wind-trees .left{mask-image:radial-gradient(ellipse 12% 34% at 5% 31%,#000 34%,transparent 83%);transform-origin:7% 50%;animation:chalet-tree-sway var(--sway-time) ease-in-out infinite alternate}
.chalet-wind-trees .right{mask-image:radial-gradient(ellipse 20% 45% at 94% 25%,#000 41%,transparent 88%);transform-origin:96% 56%;animation:chalet-tree-sway calc(var(--sway-time) * 1.14) ease-in-out infinite alternate-reverse}
.chalet[data-period="night"] .chalet-wind-trees{opacity:.18;filter:brightness(.3) saturate(.35)}
.chalet[data-period="dusk"] .chalet-wind-trees{opacity:.45;filter:brightness(.62) saturate(.8)}
.chalet[data-period="dawn"] .chalet-wind-trees{opacity:.55;filter:brightness(.7) saturate(.85)}
@keyframes chalet-tree-sway{0%{transform:rotate(calc(-1 * var(--sway)))}100%{transform:rotate(var(--sway))}}
.chalet-bird{position:absolute;z-index:2;left:2%;top:15%;width:1.8%;aspect-ratio:28/18;pointer-events:none;opacity:0;filter:drop-shadow(0 1px 1px #f6eee370);animation:chalet-bird-flight 68s linear infinite}
.chalet-bird svg{width:100%;height:100%;fill:#172632;animation:chalet-bird-wing .42s ease-in-out infinite alternate}
.chalet[data-period="night"] .chalet-bird,.chalet[data-precipitation="rain"] .chalet-bird,.chalet[data-precipitation="snow"] .chalet-bird,.chalet[data-precipitation="storm"] .chalet-bird{display:none}
@keyframes chalet-bird-flight{0%{opacity:0;transform:translate3d(0,4cqw,0)}2%{opacity:.8}15%{opacity:.8;transform:translate3d(80cqw,-3cqw,0)}17%,100%{opacity:0;transform:translate3d(89cqw,-4cqw,0)}}
@keyframes chalet-bird-wing{to{transform:scaleY(.62)}}
@media(prefers-reduced-motion:reduce){.chalet-wind-trees i,.chalet-bird,.chalet-bird svg{animation:none!important}.chalet-bird{display:none}}
.chalet-night-sky{mask-image:url('/assets/chalet/scene-v1/sky-mask.webp');mask-mode:luminance;mask-size:100% 100%;clip-path:inset(0 0 68% 0);background:linear-gradient(#3587bc 0%,#91c9e5 15%,#cbe2ed 28%);transition:background 1s}
.chalet[data-period="dawn"] .chalet-night-sky{background:linear-gradient(#455d8c 0%,#a890ba 8%,#f6b9ad 17%,#ffe0a2 28%)}
.chalet[data-period="dusk"] .chalet-night-sky{background:linear-gradient(#404468 0%,#8b628d 7%,#e98773 16%,#ffbf75 28%)}
.chalet[data-period="night"] .chalet-night-sky{background:linear-gradient(#050c20 0%,#10233c 20%,#283848 30%)}
.chalet[data-sky="cloudy"] .chalet-night-sky{background:linear-gradient(#737f8a 0%,#aab2ba 16%,#d0d0ca 30%)}
.chalet[data-period="dusk"][data-sky="cloudy"] .chalet-night-sky{background:linear-gradient(#555362,#88747c 16%,#a6958a 30%)}
.chalet[data-period="dawn"][data-sky="cloudy"] .chalet-night-sky{background:linear-gradient(#515b76,#8c91a3 16%,#b7aca9 30%)}
.chalet[data-period="night"][data-sky="cloudy"] .chalet-night-sky{background:linear-gradient(#101722,#293440 20%,#37414a 30%)}
.chalet-environment svg{width:100%;height:100%;display:block}
.chalet-outside-shade{fill:#071426;opacity:0;transition:opacity 1.2s ease}
.chalet[data-period="dusk"] .chalet-outside-shade{opacity:.4;fill:#202139}
.chalet[data-period="dawn"] .chalet-outside-shade{opacity:.32;fill:#354866}
.chalet[data-period="night"] .chalet-outside-shade{opacity:.64}
.chalet-star{position:absolute;width:var(--star);height:var(--star);border-radius:50%;background:#e5f3ff;box-shadow:0 0 4px #e5f3ff80;opacity:0;transition:opacity 1s ease}
.chalet[data-period="night"][data-sky="clear"] .chalet-star{opacity:.88}
.chalet[data-period="night"][data-sky="partly"] .chalet-star:nth-child(3n){opacity:.65}
.chalet-clouds{position:absolute;left:12%;top:1%;width:43%;height:11%;background:radial-gradient(ellipse at 25% 60%,#f8f8ee 0%,transparent 29%),radial-gradient(ellipse at 45% 40%,#fffdf6 0%,transparent 40%),radial-gradient(ellipse at 68% 60%,#ebedf0 0%,transparent 34%);opacity:0;filter:blur(3px);animation:chalet-cloud-drift 65s ease-in-out infinite alternate}
.chalet-clouds.far{left:46%;top:5%;width:25%;height:8%;animation-delay:-25s}
.chalet[data-sky="partly"] .chalet-clouds{opacity:.95}
.chalet[data-sky="cloudy"] .chalet-clouds{opacity:.4;width:75%;height:18%;filter:blur(14px)}
.chalet[data-period="night"] .chalet-clouds{filter:brightness(.2) blur(5px)}
.chalet[data-period="dusk"] .chalet-clouds{filter:sepia(.45) saturate(1.5) brightness(.85) blur(4px)}
.chalet-environment-controls{display:flex;align-items:center;gap:14px;padding:10px 14px;flex-wrap:wrap;border-bottom:1px solid var(--line);background:var(--surface)}
.chalet-environment-controls label{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--ink-3)}
.chalet-environment-controls select{font:inherit;font-size:12px;min-height:40px;border:1px solid var(--line);border-radius:8px;padding:6px 9px;background:var(--ground);color:var(--ink);max-width:150px}
.chalet-environment-status{margin-left:auto;font-size:11px;color:var(--ink-3)}
@keyframes chalet-cloud-drift{to{transform:translateX(9%)}}
@media(max-width:700px){.chalet-environment-controls{gap:8px;padding:8px}.chalet-environment-status{width:100%;margin-left:0}}
@media(pointer:coarse){.chalet-environment-controls select{min-height:44px}}
.chalet-ground-shadows{position:absolute;inset:0;pointer-events:none;z-index:1;opacity:.55;transition:opacity 1s ease}
.chalet-ground-shadows svg{display:block;width:100%;height:100%}
.chalet[data-period="dusk"] .chalet-ground-shadows{opacity:.8}
.chalet[data-period="night"] .chalet-ground-shadows{opacity:.18}
.chalet[data-sky="cloudy"] .chalet-ground-shadows{opacity:.12}
.chalet-sun,.chalet-moon{position:absolute;width:12%;height:auto;aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none;transition:opacity 1s;z-index:1}
.chalet-sun{opacity:var(--sun-strength,1)}.chalet-moon{width:9%;opacity:.65}
.chalet-sun[hidden],.chalet-moon[hidden]{display:none}
.chalet[data-period="night"] .chalet-moon{opacity:1}
.chalet-moon>circle{opacity:var(--moon-glow,1)}
.chalet[data-sky="partly"] :is(.chalet-sun,.chalet-moon){opacity:.6}
.chalet[data-sky="cloudy"] :is(.chalet-sun,.chalet-moon),.chalet[data-sky="unknown"] :is(.chalet-sun,.chalet-moon){opacity:0}
.chalet-clouds{z-index:2}
.chalet-precipitation{position:absolute;inset:0;pointer-events:none;z-index:1}
.chalet-precipitation svg{width:100%;height:100%;display:block}
.chalet-rain,.chalet-snow{display:none}
.chalet[data-precipitation="rain"] .chalet-rain,.chalet[data-precipitation="storm"] .chalet-rain,.chalet[data-precipitation="snow"] .chalet-snow{display:block}
.chalet-rain path{stroke:#d3eaff;stroke-width:1.4;opacity:.45;animation:chalet-rainfall var(--fall) var(--delay) linear infinite}
.chalet-snow circle{fill:#fff;opacity:.8;animation:chalet-snowfall var(--fall) var(--delay) linear infinite}
.chalet-storm-flash{position:absolute;inset:0;background:#c4d2ff;opacity:0;z-index:3}
.chalet[data-precipitation="storm"] .chalet-storm-flash{animation:chalet-lightning 17s ease-out infinite}
.chalet-fog{display:none}.chalet[data-precipitation="fog"] .chalet-fog{display:block}
@keyframes chalet-rainfall{from{transform:translate(16px,-100px)}to{transform:translate(-40px,220px)}}
@keyframes chalet-snowfall{from{transform:translate(-15px,-100px)}to{transform:translate(50px,260px)}}
@keyframes chalet-lightning{0%,87%,100%{opacity:0}89%{opacity:.4}94%{opacity:0}}
@media(prefers-reduced-motion:reduce){.chalet-storm-flash{display:none}.chalet :is(.chalet-rain path,.chalet-snow circle){animation:none}}
.chalet-astronomy-caption{display:block;margin-top:6px;color:var(--ink-3);font-size:11px}
.chalet[data-season="winter"][data-period="day"] :is(.chalet-car-dock .car,.chalet-grid-status .grid,.chalet-hit.spa){color:#182537;text-shadow:0 1px 3px #fff,0 0 7px #fff}
.chalet[data-season="winter"][data-period="day"] .chalet-car-dock .car strong{color:#182537;text-shadow:0 1px 3px #fff,0 0 7px #fff}

/* Instrument-sheet layout: a compact reading, direct actions, then slim rows. */
html[data-design="chalet"] .stage{background:radial-gradient(ellipse at 72% 0,#7770bf12,transparent 45%),var(--ground)}
html[data-design="chalet"] .panel-body{gap:0}
html[data-design="chalet"] .panel .chalet-primary-controls{margin:0 0 10px;padding:10px 11px;border-radius:10px}
html[data-design="chalet"] .chalet-panel-overview{padding:0 2px 12px}
html[data-design="chalet"] .chalet-panel-overview .reading{display:flex;flex-wrap:wrap;align-items:baseline;margin:0;gap:6px 14px}
html[data-design="chalet"] .chalet-panel-overview .reading .now{font-size:32px;font-weight:500}
html[data-design="chalet"] .chalet-panel-overview .reading .goal{font-size:12px;flex:1;min-width:160px;line-height:1.4;color:var(--ink-2)}
html[data-design="chalet"] .chalet-control-help>summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-size:12px;color:var(--ink-2)}
html[data-design="chalet"] .chalet-control-help>summary::after{content:'⌄';margin-left:auto}
html[data-design="chalet"] .chalet-control-help[open]>summary::after{content:'⌃'}
html[data-design="chalet"] .chalet-panel-details{background:transparent;border:0;border-bottom:1px solid var(--line-soft);border-radius:0}
html[data-design="chalet"] .chalet-panel-details>summary{padding:9px 3px;min-height:44px}
html[data-design="chalet"] .chalet-panel-details>summary::after{content:'⌄';font-size:16px}
html[data-design="chalet"] .chalet-panel-details[open]>summary::after{content:'⌃'}
html[data-design="chalet"] .chalet-panel-details>.blk{padding:10px;margin-bottom:9px;border:1px solid var(--line-soft);border-radius:8px;background:var(--surface)}
html[data-design="chalet"] .chalet-control-row>summary>.k{color:var(--ink);font-weight:500}
html[data-design="chalet"] .panel .row{padding:6px 0;font-size:12px;gap:9px}
html[data-design="chalet"] .panel .tiles4{gap:6px}
html[data-design="chalet"] .panel .tile{padding:9px 10px;min-height:60px}
html[data-design="chalet"] .panel .tile .big{font-size:21px}
html[data-design="chalet"] .panel .mine{padding:10px;margin-bottom:10px;font-size:12px}
html[data-design="chalet"] #secs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:stretch;margin-top:22px}
html[data-design="chalet"] #secs>.sec{margin-top:0;min-width:0}
html[data-design="chalet"] #secs.chalet-cards>.sec{grid-column:auto;border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--surface);overflow:hidden}
html[data-design="chalet"] #secs.chalet-cards>.sec>.sec-head{min-height:44px;border-bottom:1px solid var(--line-soft);padding-bottom:10px;flex-wrap:wrap;gap:6px 10px}
html[data-design="chalet"] #secs.chalet-cards .sec-head .note{flex:1 1 150px}
html[data-design="chalet"] #secs.chalet-cards>.sec>.card{border:0;padding:8px 0;background:transparent;box-shadow:none}
.chalet-drag-handle{touch-action:none;cursor:grab;min-width:44px;min-height:44px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);color:var(--ink);font-size:24px}
.chalet-dragging{outline:2px solid var(--volt);opacity:.75}.chalet-dragging .chalet-drag-handle{cursor:grabbing}
.chalet-drop-target{box-shadow:inset 0 4px var(--volt)}
.chalet-cards>.sr-only{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden}
.chalet-home-details>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:8px;color:var(--ink-2)}
.chalet-home-details>summary::before{content:'›';font-size:22px}.chalet-home-details[open]>summary::before{transform:rotate(90deg)}
.chalet-home-details>summary h3{margin:0}.chalet-home-details>summary::-webkit-details-marker{display:none}
html[data-design="chalet"] .arrange .mv button{min-width:44px;min-height:44px}
html[data-design="chalet"] #secs .two{grid-template-columns:minmax(0,1fr);gap:8px}
html[data-design="chalet"] #secs .card{padding:13px 15px;border-radius:12px}
@media(max-width:1000px){html[data-design="chalet"] #secs{grid-template-columns:minmax(0,1fr)}}
html[data-design="chalet"] .panel .chalet-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 10px}
html[data-design="chalet"] .panel .chalet-form-field>.k{margin:0!important;min-height:30px;font-size:10px;letter-spacing:0;text-transform:none}
html[data-design="chalet"] .panel .chalet-form-field .stepper{gap:4px;margin-top:4px}
html[data-design="chalet"] .panel .chalet-form-field .stepper .val{font-size:18px}
html[data-design="chalet"] .panel .chalet-form-field .stepper button{width:36px;min-width:36px}
@media(pointer:coarse){html[data-design="chalet"] .panel .chalet-form-field .stepper button{width:44px;min-width:44px}}
@media(max-width:380px){html[data-design="chalet"] .panel .chalet-form-grid{grid-template-columns:minmax(0,1fr)}}

/* Devices: independent room heights, compact rows, full-size touch targets. */
html[data-design="chalet"][data-theme] .brand{color:var(--ink)}
html[data-design="chalet"] .rooms{display:block;columns:3 290px;column-gap:12px}
html[data-design="chalet"] .roomcard{break-inside:avoid;display:inline-block;vertical-align:top;width:100%;padding:12px;margin:0 0 12px;border-radius:12px;box-shadow:none}
html[data-design="chalet"] .roomcard h3{font-size:15px;margin:0 0 2px}
html[data-design="chalet"] .roomcard .rsum{font-size:11px;margin-bottom:6px}
html[data-design="chalet"] .roomcard .dev{min-height:52px;padding:5px 0;gap:9px;border-radius:0}
html[data-design="chalet"] .roomcard .dn b{font-size:13px;line-height:1.35;overflow-wrap:anywhere}
html[data-design="chalet"] .roomcard .dn span{font-size:11px;line-height:1.4}
html[data-design="chalet"] .roomcard .di{width:27px;height:27px;border-radius:7px}
html[data-design="chalet"] .roomcard .sw{height:44px;width:48px;border:0;border-radius:0;background:transparent}
html[data-design="chalet"] .roomcard .sw::before{content:'';position:absolute;inset:8px 0;border:1px solid var(--line);border-radius:99px;background:var(--surface-2)}
html[data-design="chalet"] .roomcard .sw::after{top:11px;left:3px;width:22px;height:22px}
html[data-design="chalet"] .roomcard .sw[aria-pressed="true"]::before{background:var(--volt);border-color:var(--volt)}

/* Weather has its own composition; never inherit the home card half-width chart. */
.chalet-wx-hero{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:24px;padding:22px 24px;border:1px solid var(--line);border-radius:16px;background:radial-gradient(ellipse at 15% 0,#8780d91e,transparent 65%),var(--surface)}
.chalet-wx-temperature{display:block;font-size:48px;line-height:1.1;letter-spacing:-2px;font-weight:500;margin:10px 0}
.chalet-wx-current p{font-size:13px;color:var(--ink-2);margin:6px 0;line-height:1.5}
.chalet-wx-current :is(.chalet-wx-source,.chalet-wx-sun){font-size:11px;color:var(--ink-3)}
.chalet-wx-current .chalet-wx-source.warn{color:var(--warn);font-weight:600}
.chalet-wx-production{display:flex;flex-direction:column;gap:5px;align-items:flex-start;text-align:left;border:0;border-left:1px solid var(--line);border-radius:0;padding:4px 0 4px 24px;background:none;color:var(--ink-2);font:13px/1.45 var(--f-body);cursor:pointer;min-width:0}
.chalet-wx-production:hover{color:var(--ink)}
.chalet-wx-production-value{font-size:30px;color:var(--heat-ink);letter-spacing:-.5px;line-height:1.15;margin-top:7px}
.chalet-wx-production-plan{margin-top:9px}.chalet-wx-production small{font-size:11px;color:var(--ink-3)}
html[data-design="chalet"] .wxgrid{gap:8px;grid-template-columns:repeat(6,minmax(0,1fr));margin-top:10px!important}
html[data-design="chalet"] .wxi{padding:10px 12px;border-radius:10px;background:var(--surface);min-width:0}
html[data-design="chalet"] .wxi .v{font-size:20px;font-weight:500}
html[data-design="chalet"] #secs.weather-sections{grid-template-columns:minmax(0,1fr);gap:24px;margin-top:24px}
html[data-design="chalet"] #secs.weather-sections .two{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
html[data-design="chalet"] .weather-sections .sec-head{align-items:baseline;flex-wrap:wrap;gap:5px 15px;margin-bottom:10px}
html[data-design="chalet"] .weather-sections .sec-head h2{font-size:18px;font-weight:500}
html[data-design="chalet"] .weather-sections .sec-head .note{font-size:11px;max-width:820px;line-height:1.5}
html[data-design="chalet"] .weather-sections [data-sec="w48"]>.card{overflow:hidden}
.chalet-chart-scroll{overflow-x:auto}.chalet-hour-picker{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.chalet-hour-picker button,.chalet-hour-picker select{min-height:44px;border:1px solid var(--line);border-radius:7px;background:var(--surface-2);color:var(--ink);padding:6px 12px;font:13px var(--f-body)}.chalet-hour-picker span{font-size:12px;color:var(--ink-3)}
.chalet-hour-values{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;padding:12px 0 18px;border-bottom:1px solid var(--line-soft);margin-bottom:14px}.chalet-hour-values div{display:flex;flex-direction:column;gap:5px}.chalet-hour-values span{font-size:11px;color:var(--ink-3)}.chalet-hour-values strong{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}
html[data-design="chalet"] .w48 .col.selected{fill:var(--volt);fill-opacity:.15;stroke:var(--volt);stroke-width:1}
@media(max-width:700px){.chalet-hour-values{grid-template-columns:repeat(2,minmax(0,1fr))}.chalet-hour-picker span{flex-basis:100%}}
html[data-design="chalet"] .weather-sections .w48{min-width:900px}
html[data-design="chalet"] .wx-days{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
html[data-design="chalet"] .wxday{padding:14px 16px;border-radius:12px;box-shadow:none;min-width:0}
html[data-design="chalet"] .wxday .mm{font-size:30px;font-weight:500;margin:10px 0}
html[data-design="chalet"] .wxday h3{font-size:14px;font-weight:500}
html[data-design="chalet"] .weather-sections .row{padding:7px 0;font-size:12px;gap:12px}
html[data-design="chalet"] .weather-sections .srcs{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
@media(max-width:900px){html[data-design="chalet"] .wxgrid{grid-template-columns:repeat(3,minmax(0,1fr))}.chalet-wx-hero{gap:16px;padding:18px}.chalet-wx-production{padding-left:16px}}
@media(max-width:650px){.chalet-wx-hero{grid-template-columns:minmax(0,1fr)}.chalet-wx-temperature{font-size:40px}.chalet-wx-production{border-left:0;border-top:1px solid var(--line);padding:14px 0 0}html[data-design="chalet"] .wxgrid{grid-template-columns:repeat(2,minmax(0,1fr))}html[data-design="chalet"] .wx-days,html[data-design="chalet"] #secs.weather-sections .two{grid-template-columns:minmax(0,1fr)}html[data-design="chalet"] .rooms{columns:1}}
