.control-wrapper{display:flex;align-items:center;justify-content:center;width:100%;height:100%;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.control-wrapper.debug-item{cursor:move;outline:1px dashed var(--accent-presence);touch-action:none}.control-wrapper.debug-item.debug-active{outline-style:solid}.control-wrapper.debug-item>*{pointer-events:none}.debug-handle{fill:var(--accent-presence);stroke:var(--bg-primary, #000);stroke-width:.5}.debug-handle-resize{cursor:nwse-resize}.debug-handle-mode{cursor:pointer}.control-icon{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all var(--transition);padding:0}.control-icon.off{background:var(--bg-secondary);color:var(--text-muted)}.control-icon.light-icon.on{background:var(--accent-light);color:#1a1d27;box-shadow:0 0 8px var(--accent-light-glow)}.control-icon.fan-icon.on{background:var(--accent-fan);color:#1a1d27;box-shadow:0 0 8px var(--accent-fan-glow)}.radiator-figure{width:100%;height:100%;background:none;border:none;padding:0;margin:0;cursor:pointer;line-height:0;transition:filter var(--transition)}.radiator-figure.on{filter:drop-shadow(0 0 3px var(--accent-radiator)) drop-shadow(0 0 6px var(--accent-radiator-glow))}.control-icon.generic-icon.on{background:var(--accent-presence);color:#1a1d27}.control-icon.power-icon.on{background:var(--accent-power);color:#1a1d27;box-shadow:0 0 8px var(--accent-power-glow)}.tilt-control{display:flex;align-items:center;gap:2px}.tilt-control.vertical{flex-direction:column}.control-icon.tilt-icon{width:12px;height:12px;background:var(--accent-curtain);color:#1a1d27}.control-icon.tilt-icon:disabled{background:var(--bg-secondary);color:var(--text-muted);cursor:default}.fan-spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.slider-control{display:flex;touch-action:none;-webkit-user-select:none;user-select:none}.slider-control.horizontal{flex-direction:row;align-items:center;width:100%;height:100%}.slider-control.vertical{flex-direction:column;align-items:center;width:100%;height:100%}.slider-track{position:relative;border-radius:3px;background:var(--accent-curtain-track);cursor:pointer}.slider-control.horizontal .slider-track{flex:1;height:4px}.slider-control.vertical .slider-track{flex:1;width:4px}.slider-fill{position:absolute;background:var(--accent-curtain);border-radius:3px}.slider-thumb{position:absolute;width:10px;height:10px;border-radius:50%;background:var(--accent-curtain);border:2px solid var(--bg-primary);box-shadow:0 0 4px #0000004d;pointer-events:none}.led-strip{fill:none;stroke-width:5;stroke-linejoin:round;stroke-linecap:round;cursor:pointer;-webkit-touch-callout:none;transition:stroke var(--transition),filter var(--transition)}.led-strip-off{stroke:var(--text-muted)}.led-strip-on{stroke:#fbbf24bf;filter:drop-shadow(0 0 6px var(--accent-light-glow))}.control-fo{overflow:visible}.control-icon.camera-icon{background:var(--bg-secondary);color:var(--text-secondary)}.control-icon.camera-icon:hover{color:var(--text-primary);background:var(--bg-tertiary)}.item-tooltip{position:fixed;left:0;top:0;z-index:1000;max-width:calc(100vw - 16px);padding:4px 8px;border-radius:var(--radius-sm);background:var(--bg-secondary);border:1px solid var(--border-room);box-shadow:0 4px 12px #00000080;color:var(--text-primary);font-size:12px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;-webkit-user-select:none;user-select:none;animation:item-tooltip-in .12s ease}@keyframes item-tooltip-in{0%{opacity:0}to{opacity:1}}.presence-dot{width:10px;height:10px;border-radius:50%;display:inline-block;transition:all var(--transition)}.presence-dot.active{background:var(--accent-presence);box-shadow:0 0 6px var(--accent-presence)}.presence-dot.inactive{background:var(--accent-presence-off)}.leak-badge{display:inline-flex;align-items:center;color:var(--accent-leak);animation:leak-flash .6s ease-in-out infinite}@keyframes leak-flash{0%,to{opacity:1}50%{opacity:.3}}.window-sensor{width:10px;height:10px;border-radius:2px;display:inline-block;transition:all var(--transition)}.window-sensor.closed{background:var(--accent-presence-off)}.window-sensor.open{background:var(--accent-fan);box-shadow:0 0 6px var(--accent-fan-glow)}.temp-label{display:inline-flex;align-items:center;gap:2px;font-size:10px;color:var(--text-secondary);white-space:nowrap}.room-group{cursor:pointer}.room-group.room-expanded{cursor:default}.room-fill{fill:#25284059;transition:fill var(--transition)}.room-fill.room-lit{fill:#2a2f5080}.room-label{fill:var(--text-primary);font-size:11px;font-weight:500;pointer-events:none;-webkit-user-select:none;user-select:none}.room-label-bg{pointer-events:none}.room-fill.room-leak{animation:leak-pulse 1s ease-in-out infinite}@keyframes leak-pulse{0%,to{fill:#25284059}50%{fill:#ef444433}}.floor-card{width:100%;padding:20px 40px}@media(max-width:600px){.floor-card{padding:10px 8px}.floor-iso-wrapper{padding:8px;border-radius:var(--radius-md)}}.floor-label{display:none}.floor-iso-wrapper{background:var(--bg-card);border:1px solid var(--border-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:20px;overflow:hidden}.floor-svg{width:100%;height:auto;max-height:calc(100vh - 140px);display:block}.floor-bg-image{pointer-events:none;opacity:.5}.floor-content{transform-origin:0 0;transition:transform .5s cubic-bezier(.4,0,.2,1)}.zoom-overlay{cursor:pointer;animation:overlay-fade-in .4s ease}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}.floor-iso-wrapper{position:relative}.floor-iso-wrapper.room-view{touch-action:none}.zoom-layer{transform-origin:0 0}.zoom-layer.animate{transition:transform .25s ease}.zoom-reset{position:absolute;top:8px;left:8px;z-index:5;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--border-card);border-radius:50%;background:var(--bg-secondary);color:var(--text-primary);box-shadow:var(--shadow-card);cursor:pointer;animation:overlay-fade-in .2s ease}.invertor-panel{padding:10px 40px;display:flex;justify-content:center;align-items:center;min-height:calc(100vh - var(--header-h) - 60px)}.energy-flow{position:relative;width:100%;max-width:580px;aspect-ratio:1 / 1}.energy-node{position:absolute;width:160px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}.energy-node-solar{top:0;left:50%;transform:translate(-50%)}.energy-node-grid{top:50%;left:0;transform:translateY(-50%)}.energy-node-battery{bottom:0;left:50%;transform:translate(-50%)}.energy-node-house{top:50%;right:0;transform:translateY(-50%)}.energy-node-inverter{top:50%;left:50%;transform:translate(-50%,-50%);width:100px}.node-card-inverter{border-radius:50%;width:100px;height:100px;justify-content:center;padding:12px}.node-icon-inverter{color:var(--text-secondary)}.node-card{background:var(--bg-card);border:1px solid var(--border-card);border-radius:var(--radius-lg);padding:16px 20px;width:100%;position:relative;display:flex;flex-direction:column;align-items:center;gap:4px}.node-icon{width:32px;height:32px;color:var(--text-secondary)}.node-icon-solar{color:var(--accent-light)}.node-icon-battery{color:var(--accent-presence)}.node-icon-grid{color:var(--accent-fan)}.node-icon-house{color:var(--accent-radiator)}.node-label{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary)}.node-power{font-size:22px;font-weight:600;color:var(--text-primary)}.node-unit{font-size:13px;font-weight:400;color:var(--text-secondary)}.node-detail{font-size:12px;color:var(--text-muted)}.node-soc{font-size:14px;font-weight:600;color:var(--accent-presence);transition:color .5s ease}.node-soc.mid{color:var(--accent-light)}.node-soc.low{color:var(--accent-leak)}.flow-lines{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.flow-line{fill:none;stroke-width:2;stroke-linecap:round}.flow-line-active{stroke-dasharray:8 6;animation:flow-dash 1s linear infinite}.flow-line-reverse{animation-direction:reverse}.flow-line-inactive{stroke:var(--border-room);opacity:.3}.flow-line-solar{stroke:var(--accent-light)}.flow-line-battery-charge{stroke:var(--accent-presence)}.flow-line-battery-discharge{stroke:var(--accent-radiator)}.flow-line-grid-import{stroke:var(--accent-fan)}.flow-line-grid-export{stroke:var(--accent-presence)}.flow-line-house{stroke:var(--accent-radiator)}@keyframes flow-dash{to{stroke-dashoffset:-14}}.soc-bar{width:100%;height:6px;background:var(--bg-room);border-radius:3px;overflow:hidden;margin-top:2px;position:relative}.soc-bar-target{position:absolute;inset:0 auto 0 0;border-radius:3px;background:var(--accent-fan);opacity:.35;transition:width .5s ease}.soc-bar-fill{position:relative;height:100%;border-radius:3px;background:var(--accent-presence);transition:width .5s ease}.soc-bar-fill.low{background:var(--accent-leak)}.soc-bar-fill.mid{background:var(--accent-light)}.invertor-stats{display:flex;gap:20px;justify-content:center;flex-wrap:wrap;margin-top:12px;max-width:900px;width:100%}.stat-card{background:var(--bg-card);border:1px solid var(--border-card);border-radius:var(--radius-md);padding:12px 16px;text-align:center;min-width:120px}.stat-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.stat-value{font-size:16px;font-weight:600;color:var(--text-primary);margin-top:2px}.stat-value.warn{color:var(--accent-radiator)}.balancing-badge{position:absolute;top:10px;right:10px;display:flex;color:var(--accent-light);animation:balancing-pulse 2s ease-in-out infinite}.balancing-badge.pending{animation:none}@keyframes balancing-pulse{0%,to{opacity:1}50%{opacity:.35}}.invertor-wrapper{display:flex;flex-direction:column;align-items:center;width:100%;max-width:580px}.flow-arrow,.stat-card-temperature{display:none}@media(max-width:500px){.invertor-panel{padding:10px 12px;min-height:auto}.energy-flow{aspect-ratio:auto;display:flex;flex-direction:column;align-items:center;gap:12px;padding:8px 0}.flow-lines{display:none}.energy-node{position:static;width:100%;max-width:280px;transform:none}.node-card{position:relative;padding:12px 16px}.flow-arrow{display:block;position:absolute;top:6px;left:8px;width:14px;height:24px;overflow:hidden;mask-image:linear-gradient(to bottom,transparent,black 25%,black 75%,transparent);-webkit-mask-image:linear-gradient(to bottom,transparent,black 25%,black 75%,transparent)}.flow-arrow-track{display:flex;flex-direction:column}.flow-arrow-track svg{flex-shrink:0;margin-top:-8px}.flow-arrow-track svg:first-child{margin-top:0}.flow-arrow-up .flow-arrow-track{animation:flow-chevrons-up 1s linear infinite}.flow-arrow-down .flow-arrow-track{animation:flow-chevrons-down 1s linear infinite}@keyframes flow-chevrons-up{0%{transform:translateY(0)}to{transform:translateY(-4px)}}@keyframes flow-chevrons-down{0%{transform:translateY(-4px)}to{transform:translateY(0)}}.energy-node-inverter{display:none}.energy-node-solar{order:1}.energy-node-battery{order:2}.energy-node-house{order:3}.energy-node-grid{order:4}.stat-card-temperature{display:block}.node-power{font-size:18px}.invertor-stats{gap:10px;margin-top:8px}.stat-card{min-width:100px;padding:8px 12px}}.user-management{padding:24px;max-width:800px;margin:0 auto}.user-management h2{font-size:20px;font-weight:600;margin-bottom:20px}.user-table-wrapper{overflow-x:auto}.user-table{width:100%;border-collapse:collapse;font-size:14px}.user-table th,.user-table td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border-card)}.user-table th{color:var(--text-secondary);font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.5px}.user-table td{color:var(--text-primary)}.user-actions{display:flex;gap:8px}.btn{padding:6px 12px;border:1px solid var(--border-room);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-primary);font-size:13px;cursor:pointer;transition:background var(--transition)}.btn:hover{background:var(--bg-room)}.btn-primary{background:var(--accent-light);color:#0f1117;border-color:var(--accent-light);font-weight:600}.btn-primary:hover{opacity:.9;background:var(--accent-light)}.btn-danger{color:var(--accent-leak);border-color:#ef44444d}.btn-danger:hover{background:#ef44441a}.user-form-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.user-form-card{background:var(--bg-card);border:1px solid var(--border-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:28px;width:100%;max-width:400px}.user-form-card h3{font-size:18px;font-weight:600;margin-bottom:20px}.user-form{display:flex;flex-direction:column;gap:14px}.user-form .login-field input,.user-form .login-field select{background:var(--bg-secondary);border:1px solid var(--border-room);border-radius:var(--radius-md);padding:8px 12px;font-size:14px;color:var(--text-primary);outline:none;width:100%}.user-form .login-field select{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.user-form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.user-form-error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-sm);padding:8px 12px;font-size:13px;color:var(--accent-leak)}.role-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;font-weight:500}.role-badge.admin{background:#fbbf2426;color:var(--accent-light)}.role-badge.user{background:#60a5fa26;color:var(--accent-fan)}.camera-snapshot{position:relative;width:100%;height:100%;background:#000;overflow:hidden;container-type:size}.camera-snapshot img{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:min(100cqw,100cqh * var(--camera-aspect));height:min(100cqh,100cqw / var(--camera-aspect));object-fit:fill;display:block}.camera-offline{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:12px;color:var(--text-muted);background:#0f1117b3}.camera-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;padding:16px}.camera-tile{position:relative;aspect-ratio:16 / 9;border-radius:var(--radius-md);border:1px solid var(--border-card);overflow:hidden;background:#000;transition:border-color var(--transition)}.camera-tile:hover{border-color:var(--text-muted)}.camera-tile-name{position:absolute;left:0;right:0;bottom:0;padding:16px 8px 6px;font-size:13px;text-align:left;color:var(--text-primary);background:linear-gradient(transparent,#000000bf);pointer-events:none}.camera-empty{padding:32px 16px;text-align:center;color:var(--text-secondary)}@media(max-width:600px){.camera-grid{grid-template-columns:repeat(2,1fr);gap:6px;padding:6px}.camera-tile-name{font-size:11px;padding:12px 6px 4px}}.camera-viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;flex-direction:column;background:#000;touch-action:none;-webkit-user-select:none;user-select:none}.camera-viewer-header{display:flex;align-items:center;gap:12px;padding:8px 8px 8px 16px;padding-top:max(8px,env(safe-area-inset-top));color:var(--text-primary);background:var(--bg-secondary)}.camera-viewer-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.camera-viewer-count{font-size:13px;color:var(--text-secondary)}.camera-viewer-close{margin-left:auto;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%}.camera-viewer-close:hover{background:var(--bg-tertiary)}.camera-viewer-media{position:relative;flex:1;min-height:0}.camera-viewer-media>.camera-snapshot,.camera-viewer-live{position:absolute;top:0;right:0;bottom:0;left:0}.camera-viewer-live{opacity:0;transition:opacity .2s ease}.camera-viewer-live.visible{opacity:1}.camera-live{width:100%;height:100%;object-fit:contain;display:block;background:transparent}.camera-viewer-status{position:absolute;left:12px;bottom:12px;display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;color:var(--text-secondary);background:#0009}.camera-spin{animation:camera-spin 1s linear infinite}@keyframes camera-spin{to{transform:rotate(360deg)}}.camera-viewer-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--text-primary);background:#00000059;opacity:.6;transition:opacity var(--transition)}.camera-viewer-nav:hover{opacity:1}.camera-viewer-nav.prev{left:8px}.camera-viewer-nav.next{right:8px}@media(hover:none){.camera-viewer-nav{display:none}}.dashboard{min-height:100vh;display:flex;flex-direction:column}.tab-bar{display:flex;align-items:center;gap:4px;padding:12px 40px;border-bottom:1px solid var(--border-card)}.tab-button{padding:8px 20px;font-size:13px;font-weight:500;letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);border-radius:var(--radius-md) var(--radius-md) 0 0;transition:color var(--transition),background var(--transition);border-bottom:2px solid transparent;white-space:nowrap}.tab-button:hover{color:var(--text-secondary);background:var(--bg-secondary)}.tab-button.active{color:var(--text-primary)}.tab-scroller{position:relative;display:flex;align-items:center;gap:inherit;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;--fade-l: 0px;--fade-r: 0px;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--fade-l),#000 calc(100% - var(--fade-r)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--fade-l),#000 calc(100% - var(--fade-r)),transparent 100%)}.tab-scroller::-webkit-scrollbar{display:none}.tab-scroller[data-fade-left]{--fade-l: 24px}.tab-scroller[data-fade-right]{--fade-r: 24px}.tab-indicator{position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--accent-presence);pointer-events:none;transition:transform var(--transition),width var(--transition),opacity var(--transition)}.tab-indicator.dragging{transition:none}.nav-right{display:flex;align-items:center;gap:12px;margin-left:auto;padding-left:8px;flex-shrink:0}.debug-switch{display:flex;align-items:center;gap:6px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.debug-switch input{position:absolute;opacity:0;pointer-events:none}.debug-switch-track{position:relative;width:26px;height:14px;border-radius:7px;background:var(--bg-tertiary);transition:background var(--transition)}.debug-switch-track:after{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:var(--text-muted);transition:transform var(--transition),background var(--transition)}.debug-switch input:checked+.debug-switch-track{background:var(--accent-presence)}.debug-switch input:checked+.debug-switch-track:after{transform:translate(12px);background:#1a1d27}.debug-switch input:focus-visible+.debug-switch-track{outline:1px solid var(--text-secondary)}@media(max-width:600px),(pointer:coarse){.debug-switch{display:none}}.status-dot{width:8px;height:8px;border-radius:50%;transition:background var(--transition)}.status-dot.connected{background:var(--accent-presence);box-shadow:0 0 6px var(--accent-presence)}.status-dot.disconnected{background:var(--accent-leak);box-shadow:0 0 6px var(--accent-leak)}.status-dot.loading{background:var(--accent-light);box-shadow:0 0 6px var(--accent-light);animation:pulse-dot 1.5s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.burger-menu{position:relative}.burger-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;color:var(--text-secondary);border-radius:var(--radius-sm);transition:color var(--transition),background var(--transition);cursor:pointer}.burger-button:hover{color:var(--text-primary);background:var(--bg-room)}.burger-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;background:var(--bg-card);border:1px solid var(--border-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:8px 0;z-index:100}.menu-user{padding:12px 16px;display:flex;flex-direction:column;gap:2px}.menu-user-name{font-size:14px;font-weight:500;color:var(--text-primary)}.menu-user-role{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.menu-divider{height:1px;background:var(--border-card);margin:4px 0}.menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 16px;font-size:13px;color:var(--text-secondary);transition:color var(--transition),background var(--transition);cursor:pointer}.menu-item:hover{color:var(--text-primary);background:var(--bg-room)}.menu-item.active{color:var(--accent-presence)}.menu-item-logout:hover{color:var(--accent-leak)}.tab-content{flex:1}@media(max-width:600px){.tab-bar{padding:8px 12px;gap:2px}.tab-button{padding:6px 10px;font-size:12px;flex-shrink:0}}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:16px}.login-card{background:var(--bg-card);border:1px solid var(--border-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:40px;width:100%;max-width:380px}.login-title{font-size:24px;font-weight:600;color:var(--text-primary);text-align:center;margin-bottom:8px}.login-subtitle{font-size:14px;color:var(--text-secondary);text-align:center;margin-bottom:32px}.login-form{display:flex;flex-direction:column;gap:16px}.login-field{display:flex;flex-direction:column;gap:6px}.login-field label{font-size:13px;color:var(--text-secondary);font-weight:500}.login-field input{background:var(--bg-secondary);border:1px solid var(--border-room);border-radius:var(--radius-md);padding:10px 12px;font-size:15px;color:var(--text-primary);outline:none;transition:border-color var(--transition)}.login-field input:focus{border-color:var(--accent-light)}.login-error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-sm);padding:8px 12px;font-size:13px;color:var(--accent-leak)}.login-button{background:var(--accent-light);color:#0f1117;border:none;border-radius:var(--radius-md);padding:10px;font-size:15px;font-weight:600;cursor:pointer;transition:opacity var(--transition);margin-top:8px}.login-button:hover{opacity:.9}.login-button:disabled{opacity:.5;cursor:not-allowed}:root{--header-h: 0px;--bg-primary: #0f1117;--bg-secondary: #1a1d27;--bg-tertiary: #2f3450;--bg-card: #1e2130;--bg-room: #252840;--bg-room-active: #2a2f50;--text-primary: #e8eaed;--text-secondary: #9aa0b0;--text-muted: #5f6577;--accent-light: #fbbf24;--accent-light-glow: rgba(251, 191, 36, .25);--accent-fan: #60a5fa;--accent-fan-glow: rgba(96, 165, 250, .25);--accent-radiator: #ef4444;--accent-radiator-glow: rgba(239, 68, 68, .4);--accent-power: #fb923c;--accent-power-glow: rgba(251, 146, 60, .25);--accent-curtain: #a78bfa;--accent-curtain-track: #453f6b;--accent-presence: #34d399;--accent-presence-off: #4b5563;--accent-leak: #ef4444;--border-room: #3a3f55;--border-card: #2a2f45;--shadow-card: 0 8px 32px rgba(0, 0, 0, .4);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--transition: .15s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-primary);color:var(--text-primary);min-height:100vh;overflow-x:hidden}#root{min-height:100vh}button{cursor:pointer;border:none;background:none;color:inherit;font:inherit}html{touch-action:pan-x pan-y}
