.network-indicator{display:inline-flex;align-items:center;flex-shrink:0;position:relative}.network-chip{background:#132126;color:#dce7e4;border:1px solid currentColor;border-radius:20px;font-family:inherit;font-size:10px;font-weight:700;line-height:1.3;white-space:nowrap;padding:4px 8px;cursor:pointer;position:relative;min-width:70px}.network-chip:before{content:"";position:absolute;top:-10px;right:-3px;bottom:-10px;left:-3px}.network-chip.green,.network-status.green{color:#81e2a8}.network-chip.yellow,.network-status.yellow{color:#ffd36b}.network-chip.red,.network-status.red{color:#ff8585}.network-chip.unknown,.network-status.unknown{color:#aab8bd}.network-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1400;background:rgba(0,0,0,.733);display:flex;align-items:center;justify-content:center;padding:20px}.network-backdrop[hidden]{display:none}.network-modal{background:#16272d;color:#edf5f1;border:1px solid #567c86;border-radius:14px;padding:22px;width:min(600px,100%);max-height:85vh;overflow:auto;font:16px/1.5 system-ui,sans-serif}.network-modal>button{float:right;min-height:44px;padding:8px 20px;border:1px solid #89bfc9;background:#213f47;color:#fff;border-radius:8px;cursor:pointer}.network-modal h2{margin-top:0}.network-note{font-size:13px;color:#bacbd1}.network-status{font-weight:700}@media(max-width:600px){.wall.compact-wall .wall-heading time{display:none}.wall.compact-wall .wall-heading [data-network-host]{margin-left:auto}}:root{--wall-heat: #e8693a;--wall-cool: #4a9de0;--wall-fan: #8bd24a;--wall-neutral: #c9d0cd}.wall .locations{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-flow:dense;align-items:start;gap:7px}.wall .location-group{min-width:0;display:grid;gap:5px;padding:6px;border:1px solid #2e3734;border-radius:11px;background:rgba(25,29,28,.72)}.wall .location-group.wide{grid-column:1 / -1}.wall .location-group h2{color:#d2d8d5;margin:0;font-size:.67rem;line-height:1;font-weight:900;letter-spacing:.13em;text-transform:uppercase}.wall .device-category{min-width:0;display:grid;gap:3px}.wall .device-category h3{margin:0;color:#75817c;font-size:.48rem;line-height:1;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.wall .category-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(122px,1fr));gap:5px}.wall .location-group.small .category-grid{grid-template-columns:repeat(auto-fit,minmax(88px,1fr))}.wall .media-row{min-width:0;display:grid;gap:7px}.wall .media-row.both{grid-template-columns:repeat(2,minmax(0,1fr))}.wall .media-row.both .climate-category{padding-left:7px;border-left:1px solid #46504c}.wall .media-row .category-grid{grid-template-columns:repeat(auto-fit,minmax(102px,1fr))}.wall .tile{min-width:0;height:var(--tile-height);min-height:40px;border-radius:9px;padding:6px 8px;color:#f5f6f5;background:#1b1d21;border:1px solid #4b5153;text-align:left;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;transition:transform .08s ease,background-color .15s ease,border-color .15s ease}.wall .tile strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.74rem;line-height:1.12}.wall .tile-state{color:#aeb5b4;font-size:.57rem;line-height:1;font-weight:850;letter-spacing:.035em}.wall .control{cursor:pointer;touch-action:manipulation}.wall .control:active{transform:scale(.975)}.wall .control.off{border:2px solid #43b9aa;padding:7px 9px}.wall .control.on{color:#17191a;border-color:#eeb047;background:#eeb047}.wall .control.on .tile-state{color:#25201a}.wall .control.pending{border-color:#f0d28d;animation:wall-pulse 1s ease-in-out infinite}.wall .control.failed{background:#522522;border-color:#d06159;color:#fff}.wall .control.failed .tile-state{color:#ffb5af}.wall .control.offline,.wall .sensor.offline,.wall .status.offline{border-color:#a94c47;background:#302322;color:#b8afad}.wall .control.offline .tile-state,.wall .status.offline .tile-state{color:#ff8a82}.wall .control.offline{cursor:not-allowed}.wall .sensor{border-color:#363d40;background:#1d2024}.wall .tile-metrics{display:flex;align-items:baseline;gap:9px;overflow:hidden}.wall .tile-metrics span{color:#f1b84e;font-size:1.03rem;line-height:1;font-weight:500;white-space:nowrap}.wall .tile-metrics .no-data{color:#777e7d;font-size:.57rem;font-weight:800}.wall .tile-metrics span.missing{color:#ff675e;font-weight:800}.wall .status{border-color:#30353a;color:#c7ccca}.wall .status .tile-state{color:#767d7b}.wall .tile.climate{cursor:pointer;touch-action:manipulation}.wall .climate-summary{display:flex;align-items:end;justify-content:space-between;gap:6px;min-width:0}.wall .climate-summary>span{font-family:Georgia,serif;font-size:1rem;white-space:nowrap}.wall .climate-summary small{overflow:hidden;color:#aeb5b4;font-size:.52rem;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.wall .tile.sensor{cursor:pointer;touch-action:manipulation}.wall .tile.sensor:active{transform:scale(.975)}.wall .preset-row{display:flex;gap:5px;margin-top:5px}.wall .tile.preset{flex:1 1 0;min-width:0;height:auto;min-height:38px;padding:4px 3px;flex-direction:row;align-items:center;justify-content:center;gap:5px;border-color:#3d5a63;background:#1c2a30;color:#cfe3ea;cursor:pointer;touch-action:manipulation}.wall .tile.preset svg{flex:0 0 auto;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.wall .tile.preset span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.58rem;font-weight:850}.wall .tile.preset.active{border-color:#f4f7f8;background:#e9eef0;color:#14181a}.wall .tile.preset.pending{opacity:.55}.wall .tile.preset:active{transform:scale(.97)}.wall.icons-only .tile.preset span{display:none}.wall.icons-only .tile.preset{min-height:32px}@keyframes wall-pulse{50%{opacity:.56}}@media(orientation:portrait),(max-width:850px){.wall .locations{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(prefers-reduced-motion:reduce){.wall .tile{transition:none}.wall .control.pending{animation:none}}.wall.embedded{position:relative;height:auto;overflow:visible;padding:10px;border-radius:18px;--tile-height: 74px;color:#f5f6f5;font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,Arial,sans-serif;background:radial-gradient(circle at 70% -30%,#20252a 0,#111214 42%)}.wall.embedded .connection.floating{position:absolute;right:12px;bottom:12px}@media(max-width:640px){.wall.embedded{padding:7px;border-radius:14px}.wall.embedded .locations,.wall.embedded .media-row.both{grid-template-columns:minmax(0,1fr)}.wall.embedded .media-row.both .climate-category{padding-left:0;border-left:0}.wall.embedded .preset-row{flex-wrap:wrap}.wall.embedded .tile.preset{flex:1 1 40%;min-height:42px}}.wall .connection{color:#757b7a;border:1px solid #3b4140;border-radius:999px;padding:3px 7px;font-size:.57rem;font-weight:800;letter-spacing:.08em}.wall .connection.online{color:#7bd7c8;border-color:#38766d}.wall .connection.floating{position:fixed;z-index:30;right:max(8px,env(safe-area-inset-right));bottom:max(8px,env(safe-area-inset-bottom));background:rgba(17,18,20,.9);box-shadow:0 3px 14px rgba(0,0,0,.533)}.wall .tile.climate.heat{border-color:var(--wall-heat);background:var(--wall-heat);color:#1d130d}.wall .tile.climate.heat-idle{border:2px solid var(--wall-heat);padding:5px 7px}.wall .tile.climate.cool{border-color:var(--wall-cool);background:var(--wall-cool);color:#0c1822}.wall .tile.climate.fan{border-color:var(--wall-fan);background:var(--wall-fan);color:#14200a}.wall .tile.climate.auto,.wall .tile.climate.dry{border-color:var(--wall-neutral);background:var(--wall-neutral);color:#181b1a}.wall .tile.climate.temper{border:2px dashed var(--wall-heat);padding:5px 7px;background:#3a2418;color:#f6e4d8}.wall .tile.climate.heat .climate-summary small,.wall .tile.climate.cool .climate-summary small,.wall .tile.climate.fan .climate-summary small,.wall .tile.climate.auto .climate-summary small,.wall .tile.climate.dry .climate-summary small{color:rgba(0,0,0,.66)}.wall .tile.climate.temper .climate-summary small{color:#e8a37f}.wall .tile.climate.offline{border-color:#a94c47;background:#302322;color:#b8afad}.wall .tile.climate.offline .climate-summary small{color:#ff8a82}.wall .tile.climate.pending{opacity:.6;animation:wall-pulse 1s ease-in-out infinite}.climate-mode-grid button.selected.m-heat,.web-climate-mode-grid button.selected.m-heat{border-color:var(--wall-heat);background:var(--wall-heat);color:#1d130d}.climate-mode-grid button.selected.m-temper,.web-climate-mode-grid button.selected.m-temper{border:2px dashed var(--wall-heat);background:#3a2418;color:#f6e4d8}.climate-mode-grid button.selected.m-cool,.web-climate-mode-grid button.selected.m-cool{border-color:var(--wall-cool);background:var(--wall-cool);color:#0c1822}.climate-mode-grid button.selected.m-fan,.web-climate-mode-grid button.selected.m-fan{border-color:var(--wall-fan);background:var(--wall-fan);color:#14200a}.climate-current button.selected.m-off,.web-climate-current button.selected.m-off{border-color:var(--wall-neutral);background:var(--wall-neutral);color:#181b1a}.wall .tile.sensor{position:relative}.wall .tile.sensor>strong{padding-right:46px}.wall .tile .stamp{position:absolute;top:5px;right:6px;max-width:84px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.5rem;font-weight:800;letter-spacing:.02em;color:#6f7a76}.wall .tile .stamp.aging,.wall .tile .stamp.stuck{color:#e5a93d}.wall .tile .stamp.stale{color:#ff7b72}.history-modal .stamp-lines,.sensor-history-modal .stamp-lines{margin:4px 0 0;color:#8f9c95;font-size:.66rem;line-height:1.5}.chart-plot{position:relative;height:190px;margin:10px 0 2px 46px}.history-chart .chart-svg{width:100%;height:100%;margin:0;overflow:visible}.history-chart svg line.grid{stroke:#33413a;stroke-dasharray:none;stroke-width:1;vector-effect:non-scaling-stroke}.history-chart svg line.zero{stroke:#819087;stroke-dasharray:4 4;stroke-width:1;vector-effect:non-scaling-stroke}.chart-y{position:absolute;left:-46px;width:40px;transform:translateY(-50%);text-align:right;color:#84938b;font-size:.62rem;font-variant-numeric:tabular-nums}.chart-y.zero{color:#c3cdc7;font-weight:800}.chart-x{display:flex;justify-content:space-between;margin:0 0 6px 46px;color:#84938b;font-size:.62rem}@media(max-width:650px){.chart-plot{height:150px;margin-left:38px}.chart-y{left:-38px;width:32px}.chart-x{margin-left:38px}}.wall .tile.offline{border-color:#a94c47;background:#302322;color:#b8afad}.wall .tile.offline .tile-state{color:#ff8a82}.wall .tile .since{display:block;margin-top:2px;font-size:.5rem;font-weight:800;letter-spacing:.02em;text-transform:none;color:#ff9d96}.wall .last-observation{font-size:.58rem;color:#a9b8af;line-height:1.3;margin-top:6px;overflow-wrap:anywhere}.wall-head{display:flex;align-items:flex-end;justify-content:space-between;margin:0 2px 10px}.wall-head h1{margin:0;font-size:1.85rem;font-weight:650;letter-spacing:-.04em}.wall-head p{margin:2px 0 0;color:#8f9997;font-size:.78rem;text-transform:capitalize}.head-status{display:flex;align-items:center;gap:12px}.head-status time{font-variant-numeric:tabular-nums;font-size:1.65rem;font-weight:300}.alarm-strip{display:flex;gap:7px;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 2px 10px;padding-bottom:1px;scrollbar-width:none}.alarm-strip::-webkit-scrollbar{display:none}.alarm-badge{flex:none;padding:5px 9px;border-radius:999px;color:#8f9997;background:#1b1d21;border:1px solid #34383d;font-size:.67rem;font-weight:750}.alarm-badge.armed{color:#fff;background:#8b3430;border-color:#c14a43}.wall .empty{color:#8f9997;text-align:center;padding:18vh 0}.pair{width:min(420px,calc(100% - 32px));margin:10vh auto;padding:26px;border-radius:18px;background:#1b1d21;border:1px solid #353a3e;box-shadow:0 20px 60px rgba(0,0,0,.533)}.pair h1{margin:0 0 8px;font-size:1.65rem}.pair p{color:#9da5a3}.pair label{display:grid;gap:6px;margin:17px 0;color:#cbd0ce;font-size:.8rem}.pair input{padding:13px;border-radius:9px;border:1px solid #4f5757;background:#101214;color:#fff;font-size:1rem}.pair button{width:100%;min-height:46px;padding:12px;border:0;border-radius:9px;color:#17191a;background:#eeb047;font-weight:850}.pair button:disabled{opacity:.55}.pair .error{min-height:1.2em;color:#ff8278}@media(orientation:portrait),(max-width:850px){.wall-head h1{font-size:1.65rem}.head-status time{font-size:1.45rem}}.climate-backdrop{position:fixed;z-index:1000;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:14px;background:rgba(3,7,5,.82)}.climate-modal{width:min(430px,100%);display:grid;gap:13px;padding:18px;border:1px solid #52635a;border-radius:18px;background:#18231e;color:#f5f7f6;box-shadow:0 28px 80px rgba(0,0,0,.6)}.climate-modal>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.climate-modal h2{margin:2px 0 0;font:600 1.55rem/1.05 Georgia,serif}.climate-modal header small{color:#75cdb2;font-size:.57rem;font-weight:900;letter-spacing:.15em}.climate-modal header>button{-webkit-appearance:none;appearance:none;display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;aspect-ratio:1;padding:0;border:0;border-radius:99px;background:#2b3932;color:#fff;font-size:1.3rem;line-height:1}.climate-current{display:flex;align-items:end;justify-content:space-between;padding:12px;border-radius:12px;background:#202e27}.climate-current span{color:#97a69e;font-size:.67rem}.climate-current strong{font:500 1.55rem/1 Georgia,serif}.climate-mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.climate-mode-grid button,.climate-stepper button,.climate-modal footer button{min-height:42px;border:1px solid #4a5b52;border-radius:10px;background:#25342d;color:#eef2f0;font-size:.75rem;font-weight:850}.climate-mode-grid button.selected{border-color:#e9ae42;background:#e9ae42;color:#1c201d}.climate-stepper{display:grid;grid-template-columns:52px 1fr 52px;gap:7px}.climate-stepper>div{display:grid;place-items:center;padding:5px;border-radius:10px;background:#202e27}.climate-stepper small{color:#91a198;font-size:.55rem}.climate-stepper strong{font:500 1.2rem/1 Georgia,serif}.climate-stepper.disabled{opacity:.42}.climate-modal button:disabled{opacity:.45}.climate-error{min-height:.8em;margin:0;color:#ff8d84;font-size:.66rem}.climate-modal footer{display:grid;grid-template-columns:1fr 1.5fr;gap:8px}.climate-modal footer .secondary{background:#29352f}.climate-modal footer .primary{border-color:#e9ae42;background:#e9ae42;color:#1b201d}.history-backdrop{position:fixed;z-index:1100;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:14px;background:rgba(3,7,5,.82)}.history-modal{width:min(950px,100%);max-height:calc(100vh - 28px);overflow:auto;display:grid;gap:13px;padding:18px;border:1px solid #52635a;border-radius:18px;background:#18231e;color:#f5f7f6;box-shadow:0 28px 80px rgba(0,0,0,.6)}.history-modal>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.history-modal h2{margin:2px 0 0;font:600 1.55rem/1.05 Georgia,serif}.history-modal header small{color:#75cdb2;font-size:.57rem;font-weight:900;letter-spacing:.15em}.history-modal header p{margin:4px 0 0;color:#97a69e;font-size:.7rem}.history-modal header>button{width:36px;height:36px;border:0;border-radius:99px;background:#2b3932;color:#fff;font-size:1.3rem}.history-modal>nav{display:flex;gap:7px;overflow:auto}.history-modal>nav button{flex:none;min-height:38px;padding:7px 12px;border:1px solid #4a5b52;border-radius:999px;background:#25342d;color:#eef2f0;font-size:.7rem;font-weight:850}.history-modal>nav button.selected{border-color:#e9ae42;background:#e9ae42;color:#1c201d}.history-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}.history-chart{padding:12px;border:1px solid #3c4a43;border-radius:14px;background:#1e2923}.history-chart>header,.history-chart>footer{display:flex;justify-content:space-between;gap:10px}.history-chart header span,.history-chart p{color:#84938b}.history-chart svg{width:100%;height:180px;margin:8px 0;overflow:visible}.history-chart svg polyline{fill:none;stroke:#edb84f;stroke-width:2;vector-effect:non-scaling-stroke}.history-chart svg line{stroke:#819087;stroke-width:1;stroke-dasharray:4 4;vector-effect:non-scaling-stroke}.history-chart footer{flex-wrap:wrap;color:#aab5af;font-size:.7rem}.history-chart footer b{color:#f0c05d}.history-loading,.history-error{text-align:center;padding:50px;color:#9da9a3}.history-error{color:#ff8d84}@media(max-width:650px){.history-charts{grid-template-columns:1fr}.history-modal{padding:14px}}.history-modal header>button{-webkit-appearance:none;appearance:none;display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;aspect-ratio:1;padding:0;line-height:1}.climate-current>div{display:grid;gap:3px}.climate-current button{min-width:86px;min-height:42px;border:1px solid #4a5b52;border-radius:10px;background:#25342d;color:#eef2f0;font-size:.75rem;font-weight:850}.climate-current button.selected{border-color:#e9ae42;background:#e9ae42;color:#1c201d}.climate-options{display:grid;grid-template-columns:1fr 1fr;gap:7px}.climate-options button{min-height:38px;border:1px solid #4a5b52;border-radius:10px;background:#25342d;color:#eef2f0;font-size:.7rem;font-weight:850}.climate-options button.selected{border-color:#72cbb1;background:#245c4b;color:#fff}.wall .camera-launch{background:#a6d9f5;border-color:#a6d9f5;color:#142c3c}.wall .camera-launch .tile-state{color:#244b63}.wall-cameras button{font:inherit;color:#f5f5f6;cursor:pointer;touch-action:manipulation}.wall-cameras .camera-header button,.wall-cameras .camera-message button,.wall-cameras .camera-live-message button{border:1px solid #565961;border-radius:8px;background:#292c32;padding:8px 18px;min-height:44px}.wall-cameras{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#111214;color:#f5f5f6;display:flex;flex-direction:column;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);box-sizing:border-box}.wall-cameras[hidden]{display:none}.wall-cameras .camera-header{display:flex;align-items:center;flex:0 0 auto;padding:8px;gap:16px;border-bottom:1px solid #36383e}.wall-cameras .camera-header h1{margin:0;font-size:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wall-cameras .camera-header button{flex-shrink:0}.wall-cameras .camera-grid{overflow-y:auto;-webkit-overflow-scrolling:touch;min-height:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:12px;padding:12px}.wall-cameras .camera-card{display:block;padding:0;border:1px solid #42454d;border-radius:10px;overflow:hidden;background:#1b1d22;text-align:left;min-width:0}.wall-cameras .camera-picture{position:relative;height:0;padding-bottom:56.25%;background:#08090b}.wall-cameras .camera-picture img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain}.wall-cameras .camera-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#aeb2bc}.wall-cameras .camera-placeholder[hidden]{display:none}.wall-cameras .camera-card footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px 12px;padding:10px 12px}.wall-cameras .camera-card strong{font-size:18px}.wall-cameras .camera-stamp{color:#aeb2bc;font-size:12px}.wall-cameras .camera-stale .camera-stamp{color:#ffc16a}.wall-cameras .camera-stale{border-color:#9c6a32}.wall-cameras .camera-message{grid-column:1 / -1;padding:20px}.wall-cameras .camera-live{position:relative;flex:1 1 auto;min-height:0;background:#000}.wall-cameras .camera-live video{width:100%;height:100%;object-fit:contain}.wall-cameras .camera-live-message{position:absolute;bottom:16px;left:16px;right:16px;padding:12px;background:rgba(34,34,34,.867);text-align:center;border-radius:8px}.wall-cameras .camera-live-message button{display:block;margin:8px auto 0}@media(min-width:1000px)and (orientation:landscape){.wall-cameras .camera-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:500px){.wall-cameras .camera-grid{grid-template-columns:minmax(0,1fr)}}.wall .tile.cover{cursor:pointer;touch-action:manipulation;border-color:#83b9d7;background:#20323e}.wall .tile.cover:active{transform:scale(.975)}.wall .cover-summary{display:flex;align-items:baseline;justify-content:space-between;gap:7px;min-width:0}.wall .cover-summary span{font-size:1.03rem;line-height:1;color:#b7dff6;white-space:nowrap}.wall .cover-summary small{font-size:.52rem;line-height:1;color:#bbd3e2;text-align:right}.wall .tile.cover.moving{border-color:#edb956}.wall .tile.cover.offline{background:#302322;border-color:#a94c47}.wall .tile.cover.offline .cover-summary small{color:#ff8a82}.cover-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;display:grid;place-items:center;padding:14px;background:rgba(3,7,5,.82)}.cover-modal{width:min(460px,100%);max-height:calc(100vh - 28px);overflow-y:auto;display:grid;gap:14px;padding:18px;border:1px solid #52635a;border-radius:18px;background:#18231e;color:#f5f7f6;font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,Arial,sans-serif}.cover-modal>header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.cover-modal h2{margin:2px 0 0;font:600 1.4rem/1.1 Georgia,serif}.cover-modal header small{color:#9acfea;font-size:.6rem;font-weight:850;letter-spacing:.12em}.cover-modal header button{flex:0 0 40px;height:40px;padding:0;border:0;border-radius:50%;background:#30433a;color:#fff;font-size:1.5rem}.cover-current{display:flex;align-items:baseline;justify-content:space-between;padding:12px;border-radius:10px;background:#23342b}.cover-current strong{font-size:1.8rem}.cover-actions{display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:8px}.cover-modal .cover-actions button,.cover-modal .cover-apply{min-height:48px;border:1px solid #7195a9;border-radius:10px;background:#294353;color:#eef6fb;font:inherit;font-weight:750;cursor:pointer;touch-action:manipulation}.cover-modal .cover-actions [data-cover-action=stop]{border-color:#d6b26b;background:#644d28}.cover-position{display:grid;grid-template-columns:1fr auto;gap:6px}.cover-position input{grid-column:1 / -1;width:100%;min-height:44px;margin:0;accent-color:#9acfea}.cover-scale,.cover-note{color:#b5c5bb;font-size:.75rem}.cover-note,.cover-message{margin:0}.cover-note:empty{display:none}.cover-message{min-height:1.2em;font-size:.8rem;color:#b7dff6}.cover-message.failed{color:#ff9d97}.cover-modal button:disabled,.cover-modal input:disabled{opacity:.45;cursor:default}.wall.compact-wall{display:grid;height:100%;grid-template-rows:auto minmax(0,1fr);gap:8px;--tile-height:68px}.wall.compact-wall.embedded{height:auto;grid-template-rows:auto auto}.wall .wall-heading{display:flex;align-items:center;gap:12px;min-height:26px;border-bottom:1px solid #31444b;padding-bottom:5px}.wall .wall-heading>strong{display:flex;align-items:center;gap:8px;font-size:1.1rem}.wall .wall-heading time{margin-left:auto;font-size:.72rem;color:#c6d3ce}.wall .wall-heading .connection{position:static;padding:4px 7px;font-size:.53rem}.wall .dashboard-icon{flex:0 0 21px;width:21px;height:24px}.wall .dashboard-body{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:8px;min-height:0;min-width:0}.wall.has-cameras .dashboard-body{grid-template-columns:minmax(0,1fr) clamp(185px,24vw,300px)}.wall.compact-wall .locations{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-content:start;align-items:stretch;gap:8px;min-width:0}.wall.compact-wall .location-group{position:relative;display:block;padding:18px 6px 6px;border-color:#355263;border-radius:9px}.wall.compact-wall .location-group h2{position:absolute;top:0;left:0;padding:3px 9px;border-right:1px solid #355263;border-bottom:1px solid #355263;border-radius:8px 0 7px;font-size:.65rem;line-height:1;letter-spacing:.06em;background:#16242d}.wall.compact-wall .location-group.small{grid-column:span var(--group-span,2)}.wall .unified-grid{display:grid;grid-template-columns:repeat(var(--columns,1),minmax(0,1fr));grid-auto-flow:row dense;align-items:start;gap:5px}.wall .unified-grid .tile{height:var(--tile-height);min-height:60px;padding:5px 6px}.wall .unified-grid .control.off{padding:4px 5px}.wall .tile .device-title{display:flex;align-items:center;gap:5px;min-width:0;white-space:normal;font-size:.74rem;font-weight:750;line-height:1.12}.wall .device-title>span{min-width:0;overflow-wrap:normal;word-break:normal;hyphens:none}.wall .unified-grid .tile.control{justify-content:center;gap:5px}.wall .unified-grid .tile-state{font-size:.56rem;letter-spacing:0;padding-left:26px;line-height:1.15}.wall .unified-grid .tile.sensor .device-title{padding:0;flex-shrink:0}.wall .unified-grid .tile.sensor .device-title>span{flex:1}.wall .unified-grid .tile.sensor .dashboard-icon{width:15px;flex-basis:15px;height:21px}.wall .unified-grid .tile-metrics{gap:5px;flex-wrap:wrap;overflow:visible}.wall .unified-grid .tile-metrics span{font-family:Georgia,serif;font-size:.95rem}.wall .unified-grid .tile .stamp{position:static;display:block;order:-1;flex:0 0 10px;height:10px;line-height:10px;align-self:stretch;text-align:right;max-width:none;font-variant-numeric:tabular-nums;font-size:.5rem}.wall .unified-grid .stamp.fresh{color:#aeb5b4}.wall .unified-grid .climate-summary{align-items:flex-start;flex-direction:column;gap:2px}.wall .unified-grid .climate-summary small{white-space:normal;font-size:.48rem;line-height:1.1}.wall .unified-grid .preset-row{grid-column:1/-1;display:flex;align-items:stretch;margin:0;gap:4px;height:var(--tile-height)}.wall .unified-grid .tile.preset{flex-direction:column;gap:3px;justify-content:center;padding:3px 2px;min-height:0;height:100%}.wall .unified-grid .tile.preset span{white-space:normal;text-align:center;font-size:.5rem}.wall .unified-grid .tile.preset svg{flex-basis:20px}.wall .location-group.small .device-title{gap:4px}.wall .location-group.small .unified-grid .tile-state{padding-left:0}.wall .heating-group .device-category>h3{display:none}.wall .camera-rail{position:static;top:auto;display:grid;grid-template-columns:minmax(0,1fr);gap:6px;align-content:start;align-self:start;min-width:0;width:auto;height:auto;margin:0;padding:6px;background:#131e26;color:#e8f3ef;border:1px solid #355263;border-radius:9px;max-height:calc(100vh - 56px);overflow-y:auto;-webkit-overflow-scrolling:touch}.wall .camera-rail[hidden]{display:none}.wall .camera-rail>h2{grid-column:1/-1;margin:0;font-size:.65rem;letter-spacing:.07em}.wall .camera-rail .camera-launch{grid-column:1/-1;height:48px;min-height:48px;justify-content:center;align-items:center;font-size:.85rem;font-weight:750;flex-shrink:0}.wall .camera-rail.many{grid-template-columns:repeat(2,minmax(0,1fr))}.wall .snapshot-card{display:block;position:relative;min-width:0;width:100%;aspect-ratio:16/10;overflow:hidden;padding:0;border:1px solid #355263;border-radius:6px;background:#10151a;color:#eef6f4;text-align:left;touch-action:manipulation}.wall .snapshot-card img{display:block;position:absolute;top:0;right:0;bottom:21px;left:0;width:100%;height:calc(100% - 21px);object-fit:cover}.wall .snapshot-card img[hidden],.wall .snapshot-placeholder[hidden]{display:none}.wall .snapshot-placeholder{display:grid;place-items:center;height:100%;padding:18px 8px 30px;font-size:.65rem;color:#94a8b1}.wall .snapshot-caption{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:2px 6px;min-height:21px;padding:4px 5px;background:#14232d}.wall .snapshot-caption strong{font-size:.62rem}.wall .snapshot-caption time{font-size:.5rem}.wall .snapshot-card.stale{border-color:#b57248}.wall .snapshot-card.stale time{color:#efbc8e}.wall.has-cameras:not(.embedded):not(.cameras-below) .locations{height:var(--panel-height);min-height:0;overflow-y:auto;align-content:space-between;row-gap:6px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.wall.has-cameras:not(.embedded):not(.cameras-below) .location-group{padding-bottom:4px}.wall.has-cameras:not(.embedded):not(.cameras-below) .unified-grid{row-gap:4px}.wall.has-cameras:not(.embedded):not(.cameras-below) .locations.fitting{align-content:start;overflow-y:hidden}.wall.has-cameras:not(.embedded):not(.cameras-below) .camera-rail{height:var(--panel-height);max-height:none;grid-template-rows:auto repeat(var(--camera-rows,4),minmax(64px,1fr)) 48px}.wall.has-cameras:not(.embedded):not(.cameras-below) .snapshot-card{height:100%;aspect-ratio:auto}.wall.needs-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.wall .last-observation{font-size:.5rem}.wall-camera-settings .menu-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;width:100%}.snapshot-order{display:grid;gap:6px;width:100%}.snapshot-order>div{display:flex;align-items:center;gap:6px}.snapshot-order span{margin-right:auto}@media(orientation:portrait),(max-width:700px){.wall.has-cameras .dashboard-body{grid-template-columns:minmax(0,1fr)}.wall .camera-rail,.wall .camera-rail.many{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none}}@media(max-width:600px){.wall .unified-grid .preset-row{grid-column:1/-1}.wall.compact-wall .locations{grid-template-columns:minmax(0,1fr)}.wall.compact-wall .location-group.wide,.wall.compact-wall .location-group.small{grid-column:1/-1}.wall .snapshot-caption{position:relative}}.wall.has-cameras.cameras-below .dashboard-body{grid-template-columns:minmax(0,1fr)}.wall.cameras-below .camera-rail,.wall.cameras-below .camera-rail.many{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none}.wall.compact-wall.functional-groups:not(.camera-overview) .locations{grid-template-columns:repeat(2,minmax(0,1fr))}.wall.compact-wall.functional-groups .location-group{grid-column:span 1}.wall.compact-wall.functional-groups .unified-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.wall.compact-wall.functional-groups .location-group:nth-child(3) .unified-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.wall.compact-wall.functional-groups .tile.cover .device-title .dashboard-icon{display:none}@media(max-width:450px){.wall.compact-wall.functional-groups:not(.camera-overview) .locations{grid-template-columns:minmax(0,1fr)}}
