@font-face{font-family:Jakarta;src:url('./assets/jakarta.ttf') format('truetype');font-style:normal;font-weight:200 800;font-display:swap}
:root{font-family:Jakarta,Segoe UI,Roboto,sans-serif;font-synthesis:none;color-scheme:dark}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;touch-action:manipulation}button,.file-button{min-height:48px;min-width:48px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:14px;padding:10px 16px;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .16s,box-shadow .16s}button:hover{background:var(--hover)}button:active{box-shadow:inset 0 0 0 2px var(--accent)}button:focus-visible,input:focus-visible,summary:focus-visible,.file-button:focus-within{outline:3px solid var(--focus);outline-offset:3px}button:disabled{cursor:default;opacity:.5}.icon{display:inline-block;flex:none;width:24px;height:24px;vertical-align:middle}p,h1,h2{margin:0}.countertop{--bg:#101b22;--surface:#1b2931;--surface-alt:#22343b;--text:#edf2f1;--muted:#a6b7bc;--border:#34464f;--accent:#bad8be;--on-accent:#14251e;--gold:#e9be7d;--grid:#8cbed0;--battery:#c7b8de;--warn:#f0c48a;--warn-bg:#382f27;--good:#b6d8bc;--hover:#2a3c43;--focus:#e1f4f1;min-height:100dvh;background:var(--bg);color:var(--text);font-size:15px;line-height:1.5;font-variant-numeric:tabular-nums}.dashboard-state,.photo-state,.security-state{display:none}.countertop[data-mode=PHOTOS] .photo-state{display:block}.countertop[data-mode=DASHBOARD] .dashboard-state{display:flex}.countertop[data-mode=CAMERA_ALERT] .security-state{display:block}.dashboard-state{min-height:100dvh}.rail{width:92px;padding:28px 12px 20px;display:flex;flex-direction:column;flex:none;align-items:center;border-right:1px solid var(--border);background:var(--bg)}.brand{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--accent);margin-bottom:48px}.brand>.icon{width:31px;height:31px}.rail nav{display:flex;flex-direction:column;gap:12px;width:100%}.rail button{width:100%;border:0;background:transparent;flex-direction:column;gap:6px;font-size:11px;padding:12px 4px;min-height:72px;color:var(--muted)}.rail button.nav-active{color:var(--accent);background:var(--surface-alt)}.rail button:hover{background:var(--surface-alt)}.rail-settings{margin-top:auto}.dashboard-content{width:calc(100% - 92px);padding:28px 28px 18px;max-width:1520px;margin:0 auto}.home-header{display:flex;align-items:center;gap:24px;margin-bottom:22px}.welcome{min-width:0;flex:1}.eyebrow{display:block;color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.13em;margin-bottom:6px}h1{font-size:31px;line-height:1.2;font-weight:500;letter-spacing:-1.2px}.greeting-dot{color:var(--accent)}.date-line{font-size:13px;color:var(--muted);margin-top:7px}.weather{display:flex;align-items:center;gap:12px;padding-right:24px;border-right:1px solid var(--border)}.weather-icon{color:var(--gold)}.weather-icon .icon{width:34px;height:34px}.weather strong{font-size:26px;font-weight:500;line-height:1.2}.weather span:not(.weather-icon){display:block;color:var(--muted);font-size:12px;margin-top:3px}.dashboard-time{font-size:30px;letter-spacing:-1px;font-weight:400;white-space:nowrap}.photo-return{font-size:12px;background:var(--accent);color:var(--on-accent);border-color:transparent}.photo-return:hover{background:var(--good)}.photo-return .icon{width:19px;height:19px}.attention-banner{display:flex;align-items:center;gap:12px;padding:0 14px 0 16px;min-height:52px;background:var(--warn-bg);border:1px solid color-mix(in srgb,var(--warn) 28%,transparent);border-radius:14px;margin-bottom:20px;color:var(--warn);font-size:13px}.attention-banner>.icon{width:20px;height:20px}.attention-banner>span{flex:1}.attention-banner button{min-height:48px;background:transparent;border:0;padding:8px;font-size:12px;color:var(--warn)}.attention-banner button .icon{width:17px;height:17px}.home-grid{display:grid;grid-template-columns:minmax(340px,1.12fr) minmax(330px,1fr);grid-template-areas:'energy mining' 'energy house';gap:16px}.panel{padding:22px;border:1px solid var(--border);border-radius:22px;background:var(--surface);min-width:0}.energy-panel{grid-area:energy}.mining-panel{grid-area:mining}.house-panel{grid-area:house}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-heading h2{font-size:18px;line-height:1.35;letter-spacing:-.5px;font-weight:500}.tag,.neutral-tag{display:inline-flex;align-items:center;font-size:10px;line-height:1.4;padding:5px 8px;border:1px solid var(--border);border-radius:8px;color:var(--accent);white-space:nowrap;background:var(--surface-alt)}.tag{max-width:50%;white-space:normal}.flow-wrap{display:flex;align-items:center;justify-content:center;height:285px;margin:5px 0}.energy-flow{width:100%;height:100%;overflow:visible}.flow-lines .line-solar{stroke:var(--gold)}.flow-lines .line-grid{stroke:var(--grid)}.flow-lines .line-battery{stroke:var(--battery)}.node circle{fill:var(--surface);stroke-width:2.5}.solar-node circle{stroke:var(--gold)}.grid-node circle{stroke:var(--grid)}.home-node circle{stroke:var(--accent)}.battery-node circle{stroke:var(--battery)}.node text{text-anchor:middle;fill:var(--text);font-family:inherit}.node-title{font-size:12px;fill:var(--muted)!important}.node-value{font-size:21px;font-weight:500}.flow-unit,.flow-note{text-anchor:middle;fill:var(--muted);font-family:inherit}.flow-unit{font-size:13px}.flow-note{font-size:8px;letter-spacing:.05em}.energy-bottom{display:flex;align-items:center;border-top:1px solid var(--border);gap:26px;padding-top:18px}.metric{min-width:0;display:flex;flex-direction:column}.metric>span{font-size:12px;color:var(--muted);margin-bottom:4px}.metric strong{font-size:28px;font-weight:500;line-height:1.2;letter-spacing:-.8px;white-space:nowrap}.metric small{font-size:11px;color:var(--muted);margin-top:2px}.energy-detail{font-size:11px;color:var(--muted);max-width:140px;margin-left:auto;display:flex;align-items:flex-start;gap:7px}.soft-dot{width:6px;height:6px;flex:none;border-radius:50%;background:var(--accent);margin-top:5px}.mining-metrics{display:flex;justify-content:space-between;gap:16px;margin-top:17px}.mining-metrics .metric strong{font-size:27px}.mini-chart{display:flex;align-items:center;gap:10px;color:var(--accent);margin-top:13px}.mini-chart svg{height:29px;width:55%;flex:1}.mini-chart span{font-size:9px;color:var(--muted)}.status-caption{font-size:11px;color:var(--muted);white-space:nowrap}.door-list{margin-top:8px}.door-row{display:flex;align-items:center;gap:10px;min-height:37px;border-bottom:1px solid var(--border);font-size:12px}.door-symbol{color:var(--muted)}.door-symbol .icon{width:17px;height:17px}.door-row>span:nth-child(2){flex:1}.door-row strong{font-weight:500;font-size:12px;color:var(--good)}.door-row strong[data-state=unlocked],.door-row strong[data-state=jammed]{color:var(--warn)}.door-row strong[data-state=unavailable],.door-row strong[data-state=unknown]{color:var(--muted)}.water-row{display:flex;align-items:center;gap:10px;padding-top:12px}.water-row>.icon{color:var(--grid);width:20px;height:20px}.water-row>div{display:flex;flex:1;flex-direction:column}.water-row strong{font-size:12px;font-weight:500}.water-row span{font-size:10px;color:var(--muted)}.water-row .neutral-tag{font-size:9px}.camera-strip{margin-top:20px}.camera-strip-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.camera-strip h2{font-size:16px;font-weight:500;letter-spacing:-.3px}.camera-strip-title button{min-height:48px;background:transparent;border:0;padding:4px 0 4px 16px;font-size:12px;color:var(--muted)}.camera-strip-title button .icon{width:16px;height:16px}.camera-thumbnails{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.camera-thumbnail{position:relative;display:block;text-align:left;overflow:hidden;height:118px;padding:0;border-radius:15px;background:var(--surface-alt);color:var(--muted)}.scene{display:block;width:100%;height:100%;object-fit:cover;color:var(--grid)}.camera-thumbnail>.scene{height:100%;opacity:.6}.camera-thumbnail>span{position:absolute;bottom:11px;left:14px;color:var(--text);font-size:12px;font-weight:500}.camera-thumbnail>small{position:absolute;top:9px;right:10px;background:var(--bg);border-radius:5px;padding:2px 5px;font-size:8px;color:var(--muted)}.display-footer{display:flex;justify-content:space-between;gap:12px;font-size:9px;color:var(--muted);letter-spacing:.07em;margin-top:17px}.photo-state{position:fixed;inset:0;background:#080d11;color:white}.frame-image{position:absolute;inset:0;background-repeat:no-repeat;background-position:center;background-size:contain}.frame-back{opacity:0;transition:opacity 1.5s ease}.frame-back.visible{opacity:1}.frame-touch{position:absolute;inset:0;background:linear-gradient(0deg,#0009,transparent 42%);width:100%;height:100%;border:0;border-radius:0;display:block;text-align:left;padding:5%;color:white}.frame-touch:hover{background:linear-gradient(0deg,#0009,transparent 42%)}.frame-caption{position:absolute;bottom:6%;left:5%;display:flex;flex-direction:column;align-items:flex-start;gap:5px}.frame-time{font-size:60px;font-weight:400;line-height:1.2;letter-spacing:-2px}.frame-date{font-size:17px}.frame-caption small{font-size:10px;letter-spacing:.12em;margin-top:12px;color:#eee}.pause-photo{position:absolute;bottom:6%;right:5%;background:#0005;border:1px solid #fff7;color:#fff;opacity:0;transition:opacity .2s}.photo-state:hover .pause-photo,.pause-photo:focus-visible{opacity:1}.security-state{min-height:100dvh;padding:32px;background:var(--bg)}.security-state>header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:26px}.security-state h1{font-size:34px}.security-state #security-reason{font-size:13px;color:var(--muted);margin-top:9px}.camera-controls{display:flex;gap:12px}.camera-controls button{font-size:14px;min-height:52px}#hold-camera[aria-pressed=true]{background:var(--accent);color:var(--on-accent)}.security-feeds{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;min-height:65dvh}.security-feed{border:1px solid var(--border);border-radius:20px;overflow:hidden;background:var(--surface);display:flex;flex-direction:column;min-width:0}.feed-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px;border-bottom:1px solid var(--border)}.feed-header strong{font-size:17px;font-weight:500}.feed-header span{font-size:10px;color:var(--warn)}.feed-content{flex:1;min-height:230px;display:grid;place-items:center;background:var(--surface-alt)}.feed-content>.scene{height:100%;min-height:300px}.feed-unavailable{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;padding:30px;text-align:center;color:var(--muted)}.feed-unavailable strong{font-size:23px;color:var(--text)}.feed-unavailable>.icon{width:45px;height:45px}.security-state>footer{display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:12px;margin-top:22px}.security-state footer .icon{width:17px;height:17px;margin-right:6px}.settings-dialog{color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:24px;width:min(560px,calc(100vw - 32px));padding:24px;max-height:90dvh}.settings-dialog::backdrop{background:#000a}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.dialog-heading h2{font-weight:500;font-size:22px}.dialog-heading button{padding:10px;background:transparent}.dialog-body p{color:var(--muted);font-size:14px;line-height:1.7;margin:14px 0}.dialog-body strong{color:var(--text)}.file-button{cursor:pointer;position:relative;overflow:hidden;background:var(--accent);color:var(--on-accent);font-size:14px}.file-button input{position:absolute;inset:0;opacity:0;cursor:pointer}.cache-choice{display:flex;align-items:center;gap:10px;font-size:14px;margin:18px 0;min-height:48px}.cache-choice input{width:22px;height:22px;accent-color:var(--accent)}.alert-item{display:flex;gap:15px;padding:16px 0;border-bottom:1px solid var(--border)}.alert-item>.icon{color:var(--warn);margin-top:4px}.alert-item p{margin:5px 0;font-size:13px}.qa-panel{position:fixed;bottom:10px;left:10px;right:10px;z-index:50;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:14px;padding:8px 12px;max-height:30dvh;overflow:auto;box-shadow:0 8px 24px #0003}.qa-panel summary{cursor:pointer;min-height:32px;display:flex;align-items:center;font-size:12px}.qa-panel>div{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0}.qa-panel button{font-size:12px}.qa-panel output{font-size:12px;padding:10px}.countertop[data-concept=canvas]{--bg:#f5f2e9;--surface:#fffdf7;--surface-alt:#eeeee3;--text:#27382f;--muted:#5c6c60;--border:#d4d9ca;--accent:#38604c;--on-accent:#fff;--gold:#9e6b25;--grid:#3e7382;--battery:#806a95;--warn:#775021;--warn-bg:#eee3cb;--good:#2c6549;--hover:#e5eadd;--focus:#1f513e;color-scheme:light}.countertop[data-concept=canvas] .rail{width:112px;background:var(--surface);border:0}.countertop[data-concept=canvas] .dashboard-content{width:calc(100% - 112px);padding:32px}.countertop[data-concept=canvas] h1{font-size:38px;font-weight:400}.countertop[data-concept=canvas] .panel{border:0;box-shadow:0 3px 10px #25382b08}.countertop[data-concept=canvas] .home-grid{grid-template-columns:1.25fr 1fr}.countertop[data-concept=canvas] .home-header{margin-bottom:26px}.countertop[data-concept=canvas] .dashboard-time{display:none}.countertop[data-concept=canvas] .attention-banner{border:0}.countertop[data-concept=studio]{--bg:#e5ece7;--surface:#f7faf7;--surface-alt:#d9e4dc;--text:#183c31;--muted:#4e6b61;--border:#b7cbbf;--accent:#235841;--on-accent:#fff;--gold:#8b681c;--grid:#3c6d80;--battery:#716783;--warn:#745020;--warn-bg:#f1e4ca;--good:#255b40;--hover:#cdded2;--focus:#164b34;color-scheme:light}.countertop[data-concept=studio] .dashboard-state{flex-direction:column}.countertop[data-concept=studio] .rail{width:100%;height:76px;flex-direction:row;border-right:0;border-bottom:1px solid var(--border);padding:8px 28px;gap:24px}.countertop[data-concept=studio] .brand{flex-direction:row;margin:0;font-size:18px}.countertop[data-concept=studio] .rail nav{flex-direction:row;gap:12px;margin-left:auto;width:auto}.countertop[data-concept=studio] .rail button{flex-direction:row;min-height:48px;width:auto;padding:8px 16px;font-size:12px}.countertop[data-concept=studio] .rail-settings{margin:0}.countertop[data-concept=studio] .dashboard-content{width:100%;padding:20px 28px}.countertop[data-concept=studio] .home-grid{grid-template-columns:1.4fr 1fr;grid-template-areas:'energy mining' 'energy house';gap:12px}.countertop[data-concept=studio] .panel{border-radius:12px;padding:18px}.countertop[data-concept=studio] .flow-wrap{height:250px}.countertop[data-concept=studio] .home-header h1{font-size:27px}.countertop[data-concept=studio] .home-header .eyebrow{display:none}.countertop[data-concept=studio] .attention-banner{border-radius:8px;margin-bottom:12px}.countertop[data-concept=studio] .camera-thumbnail{height:90px;border-radius:10px}.countertop[data-concept=studio] .camera-strip{margin-top:10px}.countertop[data-concept=studio] .energy-bottom{gap:36px}.countertop[data-concept=studio] .home-header{margin-bottom:16px}
@media(min-width:1150px) and (min-height:760px){.countertop[data-concept=observatory] .dashboard-content{padding:30px 32px 22px}.countertop[data-concept=observatory] .home-grid{grid-template-columns:1.12fr 1fr}.countertop[data-concept=observatory] .flow-wrap{height:265px}.countertop[data-concept=observatory] .house-panel{padding-top:18px;padding-bottom:18px}.countertop[data-concept=observatory] .camera-strip{margin-top:14px}}
@media(max-width:1100px){.dashboard-content{padding:20px}.rail{width:78px;padding-left:8px;padding-right:8px}.dashboard-content{width:calc(100% - 78px)}.home-header{gap:18px;margin-bottom:16px}h1{font-size:27px}.weather{padding-right:0;border:0}.dashboard-time{display:none}.panel{padding:18px}.home-grid{grid-template-columns:minmax(300px,1fr) minmax(300px,1fr);gap:12px}.flow-wrap{height:250px}.panel-heading h2{font-size:16px}.tag{font-size:9px}.energy-bottom{gap:16px}.metric strong{font-size:25px}.energy-detail{max-width:90px;font-size:10px}.camera-thumbnail{height:100px}.countertop[data-concept=canvas] .dashboard-content{padding:24px}.countertop[data-concept=canvas] h1{font-size:30px}.countertop[data-concept=canvas] .rail{width:90px}.countertop[data-concept=canvas] .dashboard-content{width:calc(100% - 90px)}}
@media(max-height:680px) and (min-width:901px){.dashboard-content{padding-top:16px}.brand{margin-bottom:25px}.home-header{margin-bottom:12px}.home-header h1{font-size:24px}.attention-banner{min-height:48px;margin-bottom:12px}.home-grid{gap:12px}.panel{padding:14px}.flow-wrap{height:200px}.panel-heading h2{font-size:15px}.eyebrow{font-size:9px;margin-bottom:4px}.mining-metrics{margin-top:12px}.mining-metrics .metric strong{font-size:23px}.mini-chart{margin-top:8px}.door-row{min-height:32px}.water-row{padding-top:9px}.energy-bottom{padding-top:12px}.camera-strip{margin-top:8px}.camera-strip-title{margin-bottom:4px}.camera-thumbnail{height:82px}.display-footer{margin-top:12px}.countertop[data-concept=canvas] .dashboard-content{padding:18px 24px}.countertop[data-concept=canvas] .home-header{margin-bottom:16px}.countertop[data-concept=studio] .rail{height:64px}.countertop[data-concept=studio] .flow-wrap{height:190px}.countertop[data-concept=studio] .camera-thumbnail{height:78px}}
@media(max-width:900px){.dashboard-state,.countertop[data-concept=canvas] .dashboard-state{flex-direction:column}.rail,.countertop[data-concept=canvas] .rail,.countertop[data-concept=studio] .rail{order:2;position:sticky;bottom:0;z-index:10;width:100%;height:auto;min-height:78px;flex-direction:row;padding:8px 16px;border:0;border-top:1px solid var(--border);gap:8px}.brand{display:none}.rail nav,.countertop[data-concept=studio] .rail nav{width:100%;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0}.rail button,.countertop[data-concept=studio] .rail button{flex-direction:column;min-height:58px;font-size:10px;padding:6px;gap:4px}.rail-settings,.countertop[data-concept=studio] .rail-settings{display:none}.dashboard-content,.countertop[data-concept=canvas] .dashboard-content,.countertop[data-concept=studio] .dashboard-content{width:100%;padding:24px 24px 20px;flex:1}.home-header{gap:18px}.home-header h1,.countertop[data-concept=canvas] h1{font-size:30px}.home-grid,.countertop[data-concept=canvas] .home-grid,.countertop[data-concept=studio] .home-grid{grid-template-columns:1fr 1fr;grid-template-areas:'energy energy' 'mining house';gap:16px}.flow-wrap,.countertop[data-concept=studio] .flow-wrap{height:255px;max-width:510px;margin:auto}.energy-bottom{gap:40px}.energy-detail{max-width:none}.mining-metrics{flex-wrap:wrap;gap:18px}.panel{padding:20px}.mining-panel .mini-chart{margin-top:24px}.mining-panel .mini-chart svg{display:none}.mining-panel .mini-chart span{font-size:11px}.house-panel .panel-heading{gap:8px}.house-panel h2{font-size:16px}.status-caption{font-size:10px}.door-row{min-height:42px;font-size:12px}.water-row .neutral-tag{display:none}.camera-thumbnail,.countertop[data-concept=studio] .camera-thumbnail{height:120px}.camera-strip{margin-top:16px}.camera-strip h2{font-size:18px}.security-state{padding:24px}.security-feeds{grid-template-columns:1fr;min-height:0}.security-feed .feed-content{min-height:280px}.security-state>footer{flex-direction:column;gap:8px}.security-state h1{font-size:28px}.camera-controls button{padding:12px}.camera-controls button .icon{width:20px;height:20px}.security-state>header{align-items:flex-start}.camera-controls{gap:8px}}
@media(max-width:650px){.dashboard-content,.countertop[data-concept=canvas] .dashboard-content,.countertop[data-concept=studio] .dashboard-content{padding:20px 16px}.home-header{flex-wrap:wrap;gap:16px}.welcome{min-width:55%}.home-header h1,.countertop[data-concept=canvas] h1{font-size:28px}.photo-return{display:none}.weather{margin-left:auto}.weather-icon .icon{width:28px;height:28px}.weather strong{font-size:25px}.weather span:not(.weather-icon){font-size:11px}.home-grid,.countertop[data-concept=canvas] .home-grid,.countertop[data-concept=studio] .home-grid{grid-template-columns:1fr;grid-template-areas:'energy' 'house' 'mining'}.energy-bottom{gap:22px}.energy-detail{font-size:10px}.flow-wrap{height:245px}.camera-thumbnails{grid-template-columns:1fr}.camera-thumbnail,.countertop[data-concept=studio] .camera-thumbnail{height:120px}.camera-thumbnail .scene{object-fit:cover}.attention-banner{font-size:12px;gap:8px;padding-left:12px}.attention-banner button{font-size:11px;padding-right:0}.panel-heading h2{font-size:17px}.door-row{font-size:14px;min-height:44px}.door-row strong{font-size:13px}.status-caption{font-size:12px}.mining-metrics{flex-wrap:nowrap;gap:12px}.mining-panel .mini-chart{margin-top:16px}.display-footer{font-size:8px;flex-direction:column;gap:4px}.security-state{padding:20px 16px}.security-state>header{flex-direction:column;gap:18px}.security-state h1{font-size:29px}.camera-controls{width:100%}.camera-controls button{flex:1}.feed-header{padding:14px}.feed-header span{font-size:9px}.feed-content>.scene{min-height:200px}.frame-time{font-size:48px}.frame-date{font-size:14px}.frame-caption small{font-size:8px}.settings-dialog{padding:20px}.dialog-heading h2{font-size:19px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}.pause-photo{opacity:1}}
/* Iteration 2: keep the primary landscape view within an 800px tablet viewport. */
.countertop{font-family:Jakarta,Segoe UI,Roboto,sans-serif}
@media(min-width:901px){
.countertop[data-concept] .dashboard-content{padding-top:22px;padding-bottom:14px}
.countertop[data-concept] .home-header{margin-bottom:14px}
.countertop[data-concept] .home-header h1{font-size:28px}
.countertop[data-concept] .home-header .eyebrow{font-size:9px;margin-bottom:4px}
.countertop[data-concept] .date-line{margin-top:4px}
.countertop[data-concept] .attention-banner{margin-bottom:14px}
.countertop[data-concept] .home-grid{gap:12px}
.countertop[data-concept] .panel{padding:16px}
.countertop[data-concept] .panel-heading h2{font-size:17px}
.countertop[data-concept] .flow-wrap{height:212px}
.countertop[data-concept] .energy-bottom{padding-top:14px}
.countertop[data-concept] .mining-metrics{margin-top:12px}
.countertop[data-concept] .mini-chart{margin-top:8px}
.countertop[data-concept] .mini-chart svg{height:20px}
.countertop[data-concept] .door-row{min-height:34px}
.countertop[data-concept] .water-row{padding-top:9px}
.countertop[data-concept] .camera-strip{margin-top:10px}
.countertop[data-concept] .camera-strip-title{margin-bottom:4px}
.countertop[data-concept] .camera-thumbnail{height:86px}
.countertop[data-concept] .display-footer{margin-top:12px}
.countertop[data-concept] .energy-detail{font-size:11px}
}
.camera-snapshot{width:100%;height:100%;object-fit:cover;display:block}.snapshot-unavailable{display:flex!important;position:static!important;align-items:center;justify-content:center;height:100%;color:var(--muted)!important;font-size:14px!important}.camera-thumbnail:has(.camera-snapshot)>span{background:#101b22da;color:#fff;padding:2px 6px;border-radius:4px}
/* Weather remains a small header target; the regional map is deliberate disclosure. */
.weather{background:transparent;border:0;border-radius:12px;text-align:left;justify-content:flex-start;padding:6px 10px;min-height:58px}.weather-copy{text-align:left}.weather .weather-copy{display:flex;flex-direction:column;color:var(--text);margin:0}.weather .weather-copy strong{color:var(--text)}.weather .weather-copy #weather-label{margin:3px 0 0}.weather-dialog{width:min(1000px,calc(100vw - 32px))}.weather-context{display:flex;justify-content:space-between;gap:24px;padding:0 8px}.weather-context>div{display:flex;flex-direction:column}.weather-context strong{font-size:25px;font-weight:500;line-height:1.3}.weather-context>div>span:last-child{font-size:12px;color:var(--muted);margin-top:4px}.metar-map{display:block;width:100%;max-height:420px;margin:4px auto}.metar-map polygon{fill:var(--surface-alt);stroke:var(--border);stroke-width:2}.province-label{fill:var(--muted);font-size:14px;letter-spacing:3px}.station text{fill:var(--text);font-size:14px;font-family:inherit}.station circle{stroke:var(--surface);stroke-width:2;fill:var(--muted)}.station-VFR circle{fill:#7cbb8b}.station-MVFR circle{fill:#75b5ed}.station-IFR circle{fill:#ef9c8e}.station-LIFR circle{fill:#cfa8e7}.station-stale circle,.station-unknown circle{fill:#8e969c}.station .regina-icao{font-size:9px;fill:var(--gold)}.station-regina circle{stroke:var(--gold);stroke-width:3}.map-caption{fill:var(--muted);font-size:11px}.metar-legend{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;margin:4px 0 18px;font-size:12px}.metar-legend>span::before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--muted);margin-right:6px}.metar-legend .vfr::before{background:#7cbb8b}.metar-legend .mvfr::before{background:#75b5ed}.metar-legend .ifr::before{background:#ef9c8e}.metar-legend .lifr::before{background:#cfa8e7}.station-select-label{display:flex;align-items:center;gap:14px;font-size:14px}.station-select-label select{min-height:48px;padding:8px 14px;flex:1;border:1px solid var(--border);border-radius:12px;background:var(--surface-alt);color:var(--text);font:inherit}.airport-detail{border-top:1px solid var(--border);margin-top:16px;padding-top:16px}.airport-detail>div{display:flex;justify-content:space-between;align-items:center;gap:16px}.airport-detail .report-category{font-size:12px;color:var(--warn)}.airport-detail .metar-raw{font-family:Consolas,monospace;font-size:12px;overflow-wrap:anywhere;background:var(--bg);padding:12px;border-radius:10px}.qa-panel{left:110px}
@media(max-width:900px){.rail .rail-settings,.countertop[data-concept=studio] .rail .rail-settings{display:flex;flex:none;min-width:56px;width:64px;margin:0}.rail nav,.countertop[data-concept=studio] .rail nav{flex:1;width:auto}.qa-panel{left:12px;bottom:88px}.weather-context{flex-wrap:wrap;gap:16px}.weather-context strong{font-size:21px}.metar-map{max-height:none}.weather-dialog .dialog-body .quiet{font-size:11px}.airport-detail>div{flex-wrap:wrap}}
.wind-arrow{stroke:var(--muted);stroke-width:1.4;fill:none;opacity:.85}
.countertop[data-concept=canvas] .home-grid{grid-template-areas:'energy house' 'energy mining'}
@media(max-width:900px){.countertop[data-concept=canvas] .home-grid{grid-template-areas:'energy energy' 'house mining'}}
@media(max-width:650px){.countertop[data-concept=canvas] .home-grid{grid-template-areas:'energy' 'house' 'mining'}}
/* Local geographic LED-style airport map, with a stable adjacent report panel. */
.weather-map-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);gap:20px;margin-top:20px}.leaflet-weather-map{height:410px;max-height:none!important;margin:0!important;border:1px solid var(--border);border-radius:14px;background:#22322f;font-family:inherit}.leaflet-weather-map .leaflet-pane{z-index:1}.leaflet-weather-map .leaflet-top,.leaflet-weather-map .leaflet-bottom{z-index:5}.leaflet-weather-map .leaflet-control-zoom a{width:48px;height:48px;line-height:48px;color:#e5eee9;background:#20352c;border-color:#506b5c;font-size:24px}.leaflet-weather-map .leaflet-control-zoom{border:1px solid #6b8176}.airport-marker{background:none;border:0}.airport-led{padding:0;border:0;min-width:48px;min-height:48px;width:48px;height:48px;background:transparent!important;border-radius:50%;display:grid;place-items:center}.airport-led>span{width:11px;height:11px;border:1px solid #152a20;border-radius:50%;background:#9aa3a2;box-shadow:0 0 8px #9aa3a255}.airport-led.led-VFR>span{background:#3ce282;box-shadow:0 0 10px #3ce28277}.airport-led.led-MVFR>span{background:#54a7ff;box-shadow:0 0 10px #54a7ff77}.airport-led.led-IFR>span{background:#ff6d70;box-shadow:0 0 10px #ff6d7077}.airport-led.led-LIFR>span{background:#e57dff;box-shadow:0 0 10px #e57dff77}.airport-led.led-regina>span{width:14px;height:14px;outline:2px solid #efc17a;outline-offset:3px}.airport-cluster>span{width:28px;height:28px;font-size:12px;font-weight:600;background:#e0ebe2;color:#193f2b;display:grid;place-items:center;border:2px solid #577866;box-shadow:0 0 0 4px #20392baa}.leaflet-weather-map .map-province-name{color:#a6bdb1;text-align:center;letter-spacing:1.5px;font-size:10px;pointer-events:none}.leaflet-weather-map .airport-map-label{background:#172b23cc;border:0;color:#ecf4ed;box-shadow:none;font-size:10px;padding:1px 4px}.leaflet-weather-map .airport-map-label::before{display:none}.weather-detail-column{min-width:0}.weather-detail-column .station-select-label{flex-direction:column;align-items:stretch;gap:7px;font-size:12px}.weather-detail-column .station-select-label select{width:100%;font-size:13px}.weather-detail-column .airport-detail>div{flex-direction:column;align-items:flex-start;gap:6px}.airport-detail h3{font-size:13px;font-weight:600;margin:18px 0 0;color:var(--text)}.airport-detail p{font-size:12px;line-height:1.65;margin:8px 0}.airport-detail pre{white-space:pre-wrap;overflow-wrap:anywhere;font-family:Consolas,monospace;font-size:11px;line-height:1.7;padding:12px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text)}.map-credit{font-size:10px!important;line-height:1.5!important;color:var(--muted);margin:9px 0!important}.weather-map-layout .metar-legend{gap:12px;margin:12px 0 8px}.weather-map-layout .metar-legend>span{font-size:10px}.weather-dialog .weather-context strong{font-size:22px}
@media(max-width:760px){.weather-map-layout{grid-template-columns:1fr}.leaflet-weather-map{height:390px}.weather-detail-column .airport-detail>div{flex-direction:row;flex-wrap:wrap}.weather-dialog{padding:16px}.weather-dialog .dialog-heading h2{font-size:20px}.weather-dialog .weather-context strong{font-size:19px}.weather-dialog .weather-context .eyebrow{font-size:9px}.weather-dialog .weather-context{gap:12px;padding:0}.weather-detail-column .station-select-label{flex-direction:row;align-items:center}.weather-detail-column .station-select-label select{min-width:0;flex:1}.airport-detail pre{font-size:12px}}
.map-toolbar{display:flex;gap:16px;margin:12px 0 16px}.map-toolbar label{display:grid;gap:6px;flex:1;font-size:12px;color:var(--muted)}.map-toolbar select{width:100%;min-height:48px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text)}.leaflet-weather-map[data-theme=paper]{background:#cbd0bc}.leaflet-weather-map[data-theme=paper] .leaflet-overlay-pane{filter:brightness(2.1) saturate(.4)}.leaflet-weather-map[data-theme=paper] .map-province-name{color:#192e26;text-shadow:0 1px #fff}.weather-dialog{max-height:94vh}.weather-dialog .dialog-body{overflow:auto}.leaflet-weather-map .leaflet-tile-pane{z-index:200}.leaflet-weather-map .leaflet-overlay-pane{z-index:400}.leaflet-weather-map .leaflet-marker-pane{z-index:600}.leaflet-weather-map .leaflet-tooltip-pane{z-index:650}.leaflet-weather-map .leaflet-control-container{position:relative;z-index:800}.airport-detail p{line-height:1.65}
@media(max-width:700px){.map-toolbar{flex-wrap:wrap}.map-toolbar label{min-width:180px}}
/* Full-screen airport light map. Reports and options are overlays, hidden initially. */
dialog.weather-dialog{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;overflow:hidden;background:#25382e}.weather-dialog .dialog-body{position:absolute;inset:0;overflow:hidden}.weather-dialog .dialog-heading{position:absolute;z-index:1100;top:14px;left:72px;right:16px;pointer-events:none;display:flex;align-items:center;justify-content:space-between;margin:0}.weather-dialog .dialog-heading h2{font-size:16px;padding:10px 14px;background:#14242bd9;border-radius:12px;margin:0;color:#eaf2eb}.weather-dialog .dialog-heading button{pointer-events:auto;background:#14242be8;color:white}.weather-dialog .weather-map-layout,.weather-dialog .map-canvas-wrap{display:block;position:absolute;inset:0;margin:0}.weather-dialog .leaflet-weather-map{height:100%!important;width:100%;border:0;border-radius:0}.weather-dialog .weather-detail-column{position:absolute;z-index:1200;right:16px;top:86px;bottom:90px;width:380px;max-width:calc(100vw - 32px);padding:18px;border:1px solid #526562;border-radius:16px;background:#1b2b33f5;box-shadow:0 12px 40px #0006;overflow:auto;color:#eaf2eb}.weather-detail-column[hidden]{display:none!important}.weather-dialog #airport-detail-close{float:right;width:48px;height:48px;margin:0 0 8px 10px}.weather-dialog .station-select-label{clear:both}.map-floating-controls{position:absolute;z-index:1100;top:16px;right:80px;display:flex;align-items:start;gap:10px}.map-floating-controls>button,.map-options summary{background:#14242be8;color:#eaf2eb;border:1px solid #60716e;border-radius:12px;min-height:48px;padding:10px 16px;font-size:13px;cursor:pointer}.map-options summary{display:flex;align-items:center;list-style:none}.map-options[open]{width:290px;background:#1b2b33f5;border-radius:12px;padding-bottom:12px}.map-options .map-toolbar{display:grid;padding:0 12px;margin:12px 0 0}.map-bottom-overlay{position:absolute;z-index:1000;bottom:12px;left:12px;max-width:calc(100vw - 24px);padding:7px 12px;border-radius:12px;background:#14242bd9;color:#eaf2eb;pointer-events:none}.map-bottom-overlay .metar-legend{margin:0 0 4px;gap:12px;font-size:11px}.map-bottom-overlay .map-credit{margin:2px 0!important;font-size:10px!important;color:#c4d4cf}.weather-dialog .leaflet-weather-map .airport-dot{cursor:pointer}.weather-dialog .airport-dot:focus{outline:none;stroke:#fff;stroke-width:4}.weather-dialog .leaflet-control-zoom{margin-top:16px}.weather-dialog .leaflet-weather-map .airport-led{min-width:0;min-height:0;width:auto;height:auto;padding:0}.weather-dialog .leaflet-container a{color:#eaf2eb}
@media(max-width:850px){.weather-dialog .dialog-heading h2{display:none}.map-floating-controls{right:76px}.weather-dialog .weather-detail-column{top:80px;bottom:85px;width:350px}}@media(max-width:500px){.map-floating-controls>button,.map-options summary{font-size:11px;padding:8px}.map-floating-controls{gap:6px;left:72px;right:70px}.map-options[open]{position:absolute;right:0;top:0;width:240px}.weather-dialog .weather-detail-column{top:auto;bottom:0;right:0;width:100%;max-width:none;height:55dvh;border-radius:18px 18px 0 0}.map-bottom-overlay .metar-legend{gap:7px;font-size:9px}}
/* Three-minute combined alert view: each outdoor camera stays distinct. */
.security-feeds[data-count="1"]{grid-template-columns:minmax(0,1fr)}
.security-feeds[data-count="3"],.security-feeds[data-count="4"]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));height:calc(100dvh - 210px);min-height:360px;gap:16px}
.security-feeds[data-count="3"] .feed-header,.security-feeds[data-count="4"] .feed-header{padding:8px 14px;min-height:42px}
.security-feeds[data-count="3"] .feed-content,.security-feeds[data-count="4"] .feed-content{min-height:0;overflow:hidden}
.security-feeds[data-count="3"] .scene,.security-feeds[data-count="4"] .scene{min-height:0;max-height:100%;width:100%}
.security-feeds[data-count="3"] hui-picture-entity-card,.security-feeds[data-count="4"] hui-picture-entity-card{width:min(100%,calc((100dvh - 340px)*.8889));max-height:100%;overflow:hidden}
@media(max-width:600px){.security-feeds[data-count="3"],.security-feeds[data-count="4"]{height:auto;grid-template-columns:1fr;grid-template-rows:none}.security-feeds[data-count="3"] .feed-content,.security-feeds[data-count="4"] .feed-content{min-height:170px}.security-feeds[data-count="3"] hui-picture-entity-card,.security-feeds[data-count="4"] hui-picture-entity-card{width:100%}}
/* Compact airport wind on the home header; full detail lives in the map panel. */
.weather-copy #weather-airport-wind{font-size:11px;color:var(--accent);white-space:normal;line-height:1.4;margin-top:4px}
.weather .weather-icon .runway-mini{width:55px;height:55px;display:block}
.runway-compass{width:100%;max-width:280px;display:block;margin:8px auto;color:var(--text);overflow:visible}
.compass-ring{fill:var(--surface-alt);stroke:var(--border);stroke-width:2}.compass-tick{stroke:var(--muted);stroke-width:2}.runway-axis>path{stroke:var(--muted);stroke-width:11;stroke-linecap:butt}.runway-axis .runway-centre{stroke:var(--bg);stroke-width:1.5;stroke-dasharray:6 5}.runway-compass text{fill:var(--text);font:600 14px Jakarta,Segoe UI,sans-serif;text-anchor:middle}.runway-compass .compass-north{fill:var(--gold);font-size:13px}.runway-compass .compass-cardinal{font-size:10px;fill:var(--muted)}.runway-wind-arrow{fill:var(--grid);stroke:var(--grid);stroke-width:2}.runway-wind-arrow .wind-shaft{stroke-width:5}.wind-calm{fill:none;stroke:var(--grid);stroke-width:3}.runway-mini .compass-tick{stroke-width:4}.runway-mini .runway-axis>path{stroke-width:16}.runway-mini .runway-centre{display:none}.runway-mini .wind-shaft{stroke-width:10}.runway-mini .compass-north{font-size:34px}
.runway-panel{margin:14px 0;padding:14px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.runway-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.runway-heading h3{margin:0!important}.runway-heading strong{font-size:13px;color:var(--grid)}.airport-detail .runway-wind-note,.airport-detail .runway-source-note{font-size:11px;line-height:1.5;color:var(--muted)}.runway-components{width:100%;border-collapse:collapse;margin:12px 0;font-size:11px}.runway-components caption{text-align:left;font-size:10px;color:var(--muted);line-height:1.5;margin-bottom:8px}.runway-components td,.runway-components th{padding:8px 4px;text-align:left;border-bottom:1px solid var(--border)}.runway-components th{font-weight:600}.runway-components td{white-space:nowrap}
.runway-panel .runway-compass{max-width:220px}.runway-calculations summary{cursor:pointer;min-height:48px;display:flex;align-items:center;color:var(--grid);font-size:12px;border-top:1px solid var(--border);margin-top:10px}.runway-calculations summary::before{content:'+';font-size:18px;margin-right:10px}.runway-calculations[open] summary::before{content:'-'}
/* Focused insight views keep the resting dashboard quiet. */
[hidden]{display:none!important}.compact-action{font-size:12px;padding:8px 12px;min-height:48px;white-space:nowrap}.energy-panel .panel-heading{flex-wrap:wrap}.recent-activity-strip{margin-top:22px}#recent-events{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}#recent-events>p{grid-column:1/-1;color:var(--muted);font-size:12px}.recent-event{display:flex;gap:12px;align-items:center;text-align:left;min-height:64px;overflow:hidden;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:8px}.recent-event img{width:74px;height:48px;object-fit:cover;border-radius:8px}.recent-event small{display:block;color:var(--muted);font-size:10px;margin-top:5px}.activity-placeholder{display:grid;place-items:center;min-height:48px;color:var(--muted);font-size:12px}.activity-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.activity-gallery article{border:1px solid var(--border);border-radius:16px;overflow:hidden;padding:12px}.activity-gallery img{width:100%;aspect-ratio:16/9;object-fit:contain;background:#07100e;border-radius:8px}.activity-gallery time{display:block;color:var(--muted);font-size:12px;margin:10px 0}.history-chart{border:1px solid var(--border);border-radius:14px;padding:14px;margin:12px 0;min-width:0}.history-chart h3{margin:0 0 8px!important}.history-chart small{color:var(--muted);font-size:12px}.history-chart svg{width:100%;height:auto;overflow:visible}.history-chart svg text{font-size:11px;fill:var(--muted);font-family:inherit}.chart-baseline{fill:none;stroke:var(--border)}.chart-series{fill:none;stroke:var(--solar,#e7b86b);stroke-width:2.5;stroke-linecap:round}.energy-history-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.airport-trends summary{min-height:48px;display:flex;align-items:center;cursor:pointer;color:var(--grid);font-size:13px}.airport-trends .history-chart{padding:8px}.airport-trends p{font-size:11px;color:var(--muted)}.history-table-wrap{overflow-x:auto}.trend-table{font-size:10px;border-collapse:collapse;width:100%}.trend-table td,.trend-table th{padding:8px 4px;border-bottom:1px solid var(--border);text-align:left}.night-settings{margin-top:24px;border:1px solid var(--border);border-radius:12px;padding:18px}.night-settings label{display:inline-flex;align-items:center;gap:10px;margin:8px}.night-settings input[type=time]{min-height:48px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px}.night-settings p{font-size:12px;color:var(--muted)}.countertop[data-night=true]{filter:brightness(.35)}dialog[data-night=true]{filter:brightness(.35)}.countertop[data-night=false],dialog[data-night=false]{filter:none}#radar-controls{display:flex;align-items:center;flex-wrap:wrap;gap:8px;background:rgba(10,29,25,.94);border-radius:12px;padding:8px;max-width:min(460px,calc(100vw - 100px));color:#f0f5ec}#radar-controls label{display:flex;align-items:center;font-size:12px;gap:8px}#radar-controls input{width:130px;min-height:48px}#radar-time{font-size:11px;max-width:220px;line-height:1.5}#radar-toggle[aria-pressed=true],#radar-play[aria-pressed=true]{background:#316958}.map-floating-controls{flex-wrap:wrap;max-width:calc(100vw - 100px)}.attention-banner[hidden]{display:none!important}
@media(max-width:650px){.activity-gallery,.energy-history-grid{grid-template-columns:1fr}#recent-events{grid-template-columns:1fr}.recent-event{min-height:60px}#radar-controls{max-width:calc(100vw - 90px)}}
.chart-axis{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:11px;line-height:1.5;margin-top:6px}.history-chart h3 small{margin-left:6px}.radar-key summary{cursor:pointer;min-height:48px;display:flex;align-items:center;font-size:12px}.radar-key img{max-height:240px;max-width:220px;background:#fff;border-radius:8px}.radar-key[open]{padding:8px}
.cooking-panel{margin:18px 0}.cooking-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.cook-probe{padding:16px;border-radius:16px;background:rgba(126,164,145,.06);border:1px solid var(--border);border-left:4px solid var(--muted);min-width:0}.cook-probe-name{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;font-size:12px}.cook-probe-name span,.cook-target{color:var(--muted);font-size:11px}.cook-reading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 0}.cook-reading>strong{font-size:32px;white-space:nowrap}.cook-reading small{font-size:16px;margin-left:4px}.cook-reading>span{font-size:11px;text-align:right}.cook-yellow{color:#ffdb6b;border-color:#bca24f;background:rgba(250,204,64,.09)}.cook-red{color:#ff858a;border-color:#d56369;background:rgba(245,91,101,.12)}.cook-normal{color:var(--text);border-left-color:#8ebca5}.cook-neutral{color:var(--text)}.cooking-note{color:var(--muted);font-size:12px;margin:16px 0 0}.cooking-photo-strip{position:absolute;z-index:5;left:24px;right:24px;bottom:110px;display:flex;align-items:center;gap:18px;background:rgba(10,25,23,.92);color:#f4f6ed;border:1px solid #5b7168;border-radius:18px;padding:16px 20px;text-align:left;backdrop-filter:blur(12px);flex-wrap:wrap}.cooking-photo-strip>span{display:flex;flex-direction:column;gap:4px;padding:6px;border-radius:8px}.cooking-photo-strip small{font-size:11px}.cooking-photo-strip strong{font-size:23px}.cooking-photo-title{font-size:12px;max-width:100px}.cooking-photo-strip .cook-yellow,.cooking-photo-strip .cook-red{padding:10px}.cooking-panel>.panel-heading{margin-bottom:16px}@media(max-width:650px){.cooking-photo-strip{left:12px;right:12px;bottom:100px;gap:10px;padding:12px}.cooking-grid{grid-template-columns:1fr 1fr}.cook-probe{padding:12px}.cook-reading{flex-wrap:wrap}.cook-reading>strong{font-size:26px}}
/* Active cooking reserves a right-hand rail; inactive photos keep the full frame. */
.photo-state[data-cooking-active=true]{--cook-rail-width:clamp(200px,25vw,300px)}.photo-state[data-cooking-active=true] .frame-image{right:calc(var(--cook-rail-width) + 48px)}.photo-state[data-cooking-active=true] .frame-touch{right:calc(var(--cook-rail-width) + 48px);width:calc(100% - var(--cook-rail-width) - 48px)}.photo-state[data-cooking-active=true] .pause-photo{right:calc(var(--cook-rail-width) + 48px + 5%)}.cooking-photo-strip{left:auto;right:24px;top:24px;bottom:24px;width:var(--cook-rail-width);max-height:calc(100dvh - 48px);overflow-y:auto;flex-direction:column;align-items:stretch;justify-content:flex-start;flex-wrap:nowrap;padding:20px 14px;gap:14px;touch-action:pan-y}.cooking-photo-strip>span{flex-shrink:0;padding:14px 10px;gap:8px;border-radius:12px;text-align:left}.cooking-photo-strip .cooking-photo-title{max-width:none;padding:6px 10px;font-size:15px;font-weight:600}.cooking-photo-strip strong{font-size:29px}.cooking-photo-strip small{font-size:12px;line-height:1.5}.cooking-photo-strip>span:last-child{margin-top:auto;min-height:48px;font-size:13px;align-items:center;justify-content:center;border-top:1px solid #4a5d55;border-radius:0}@media(max-width:650px){.photo-state[data-cooking-active=true]{--cook-rail-width:clamp(155px,38vw,220px)}.cooking-photo-strip{right:12px;top:12px;bottom:12px;padding:12px 8px;gap:10px}.cooking-photo-strip strong{font-size:24px}.photo-state[data-cooking-active=true] .frame-image{right:calc(var(--cook-rail-width) + 24px)}.photo-state[data-cooking-active=true] .frame-touch{right:calc(var(--cook-rail-width) + 24px);width:calc(100% - var(--cook-rail-width) - 24px)}}

.metar-legend .missing::before{background:#000;border:1px solid #8e969c;box-sizing:border-box}

/* Keep radar controls off the map canvas except for one compact corner panel. */
#radar-controls{position:fixed;z-index:1150;top:76px;right:16px;width:min(340px,calc(100vw - 32px));max-width:none;max-height:min(180px,30dvh);overflow:auto;display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;padding:8px 10px;box-sizing:border-box}
#radar-controls label{min-width:0}#radar-controls input{width:100%;min-width:48px}#radar-time{grid-column:1/-1;max-width:none;font-size:10px;line-height:1.3}#radar-controls .radar-key{grid-column:1/-1}#radar-controls .radar-key summary{min-height:32px}#radar-controls .radar-key img{max-width:100%;max-height:100px}#radar-play{min-width:96px;min-height:48px;padding:8px;font-size:12px}

.photo-temperature-alerts{position:absolute;z-index:6;top:24px;left:24px;width:min(420px,calc(100% - 48px));max-height:38dvh;overflow-y:auto;padding:16px 20px;border:1px solid #ff858a;border-left:5px solid #ff858a;border-radius:14px;background:#2e1721f2;color:#fff0f0;text-align:left;box-shadow:0 6px 22px #0005;pointer-events:auto}.photo-temperature-alerts>strong{font-size:18px}.temperature-alert-row{display:flex;flex-direction:column;gap:3px;margin-top:12px;border-top:1px solid #72424c;padding-top:9px}.temperature-alert-row span{font-size:14px}.temperature-alert-row strong{font-size:20px;color:#ffacb1}.temperature-alert-row small{font-size:12px;color:#edcbd0}.photo-state[data-cooking-active=true] .photo-temperature-alerts{max-width:calc(100% - var(--cook-rail-width) - 72px)}@media(max-width:650px){.photo-temperature-alerts{top:12px;left:12px;width:calc(100% - 24px);padding:12px}.photo-state[data-cooking-active=true] .photo-temperature-alerts{max-width:calc(100% - var(--cook-rail-width) - 36px)}.temperature-alert-row strong{font-size:17px}}

/* Opaque slide canvas and atomic replacement prevent old images showing through. */
.frame-front{background-color:#080d11;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:12px;overflow:hidden}.frame-front[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}.slideshow-photo{width:100%;height:100%;min-width:0;min-height:0;object-fit:contain;display:block}.frame-back{display:none!important;transition:none!important}.frame-caption{bottom:24px;left:24px;gap:2px;padding:8px 12px;border-radius:10px;background:#080d1180;text-shadow:0 1px 3px #0009}.frame-time{font-size:clamp(26px,3vw,34px);line-height:1.15;letter-spacing:-.5px}.frame-date{font-size:13px;line-height:1.4}.frame-caption small{font-size:8px;margin-top:5px}.frame-caption small:empty{display:none}@media(orientation:portrait){.frame-front[data-count="2"]{grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.frame-caption{bottom:16px;left:16px;padding:7px 10px}.frame-front{gap:8px}}

.calendar-panel{margin:0 0 18px}.calendar-panel .panel-heading{margin-bottom:8px}.calendar-layout{display:grid;grid-template-columns:minmax(220px,1fr) minmax(180px,1fr);gap:24px}.calendar-layout h3{font-size:16px;font-weight:500;margin:0 0 10px}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;text-align:center}.calendar-day{position:relative;padding:3px;font-size:13px;border-radius:8px}.calendar-day.other-month{opacity:.35}.calendar-day.today{background:var(--accent);color:var(--on-accent);font-weight:700}.weekday{color:var(--muted);font-size:10px}.calendar-day i{position:absolute;bottom:0;left:calc(50% - 2px);width:4px;height:4px;background:var(--gold);border-radius:50%}.calendar-agenda p{color:var(--muted);font-size:12px}.calendar-agenda article{display:flex;flex-direction:column;padding:8px 0;border-bottom:1px solid var(--border)}.calendar-agenda article span,.calendar-agenda article small{font-size:12px;color:var(--muted)}dialog.calendar-dialog{width:min(1050px,calc(100vw - 32px));max-height:90dvh}.calendar-dialog .calendar-day{font-size:clamp(18px,2.5vw,28px);padding:12px 4px}.calendar-dialog .weekday{font-size:13px}.calendar-dialog .calendar-layout h3{font-size:22px}.calendar-dialog .calendar-layout{grid-template-columns:minmax(0,1.5fr) minmax(180px,1fr)}@media(max-width:650px){.calendar-layout,.calendar-dialog .calendar-layout{grid-template-columns:1fr;gap:16px}.calendar-dialog .calendar-day{padding:7px;font-size:19px}.calendar-panel .calendar-agenda{display:none}}

.calendar-legend{display:flex;flex-wrap:wrap;gap:10px 20px;margin:8px 0 16px;font-size:14px}.calendar-legend span{display:inline-flex;align-items:center;gap:7px}.calendar-legend i{width:11px;height:11px;border-radius:50%;display:inline-block;flex-shrink:0}

.calendar-week h3{font-size:20px;font-weight:500;margin:0 0 16px}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.week-day{min-width:0;border:1px solid var(--border);border-radius:12px;overflow:hidden;padding:8px;background:#ffffff03}.week-day header{display:flex;align-items:center;justify-content:space-between;gap:4px;padding:4px 2px 12px;color:var(--muted);font-size:13px}.week-day header strong{font-size:24px;font-weight:500;color:var(--text)}.week-day.today{border-color:var(--accent)}.week-day.today header strong{background:var(--accent);color:var(--on-accent);border-radius:50%;width:36px;height:36px;text-align:center;line-height:36px}.week-day .calendar-agenda{display:block}.week-day .calendar-agenda article{padding:8px 6px;margin-bottom:8px;background:#ffffff06;border-radius:5px;overflow-wrap:anywhere}.week-day article strong{font-size:13px;line-height:1.4;font-weight:500}.week-day .calendar-agenda article span,.week-day .calendar-agenda article small{font-size:11px;line-height:1.5}.day-empty{display:block;text-align:center;padding:22px 0;color:var(--muted)}.week-more{display:block;color:var(--muted);font-size:11px}.calendar-notice{color:var(--muted);font-size:14px}.calendar-dialog .week-grid{min-height:330px}.compact-week .week-day{padding:5px}.compact-week h3{font-size:16px}.compact-week .week-day header strong{font-size:19px}@media(max-width:700px){.week-grid{grid-template-columns:1fr}.week-day{display:grid;grid-template-columns:75px minmax(0,1fr);gap:10px}.week-day header{align-self:start;flex-direction:column;padding:8px 0}.week-day .calendar-agenda{min-width:0}.day-empty{padding:10px}.calendar-dialog .week-grid{min-height:0}}

/* Dark family planner: one shared time axis with duration-sized appointments. */
dialog.calendar-dialog{position:fixed;inset:12px;margin:0;width:calc(100vw - 24px);height:calc(100dvh - 24px);max-width:none;max-height:none;border-radius:20px;padding:18px 22px;background:#151e28;--surface:#151e28;--border:#2b3745;--text:#eef2f6;--muted:#9eaec0;overflow:hidden}
dialog.calendar-dialog[open]{display:flex;flex-direction:column}.calendar-dialog .dialog-heading{margin-bottom:8px;flex-shrink:0}.calendar-dialog .dialog-heading h2{font-size:18px;color:#9eaec0;letter-spacing:.02em}.calendar-dialog .dialog-heading button{min-width:44px;min-height:44px;padding:6px;border-radius:12px}.calendar-dialog .dialog-body{display:flex;flex:1;min-height:0}.family-planner{display:flex;flex-direction:column;width:100%;min-width:0;min-height:0}.planner-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;flex-shrink:0}.planner-toolbar small{font-size:10px;letter-spacing:.18em;color:#9eaec0}.planner-toolbar h3{font-size:clamp(21px,2.6vw,31px);font-weight:600;letter-spacing:-.7px;line-height:1.4;margin:0}.planner-toolbar h3 span{font-size:15px;font-weight:400;letter-spacing:0;color:#9eaec0;margin-left:12px}.planner-toolbar nav{display:flex;gap:6px}.planner-toolbar nav button{min-height:46px;min-width:46px;border-radius:12px;background:#1c2835;padding:7px 13px;font-size:15px}.planner-toolbar nav button:first-child,.planner-toolbar nav button:last-child{font-size:27px;font-weight:400}.planner-people{gap:8px;margin:0 0 15px}.planner-people .calendar-person{min-height:44px;padding:7px 15px;border-radius:24px;background:#1d2936;border:1px solid #344253;font-size:13px;gap:8px}.planner-people .calendar-person[aria-pressed=false]{opacity:.45;background:transparent}.planner-people .calendar-person i{width:10px;height:10px}.planner-people .calendar-person[aria-pressed=false] i{background:transparent!important;box-shadow:0 0 0 1px #9eaec0}.planner-viewport{display:flex;flex:1;min-height:0;overflow-x:auto;border:1px solid #2b3745;border-radius:14px;background:#111923}.planner-board{display:flex;flex-direction:column;min-width:840px;width:100%;min-height:0}.planner-days,.planner-allday,.planner-time-grid{display:grid;grid-template-columns:60px repeat(7,minmax(0,1fr))}.planner-days{background:#19232f;flex-shrink:0}.planner-days .planner-zone{font-size:9px;letter-spacing:.08em;color:#8295aa;align-self:center;text-align:center;line-height:1.6}.planner-days .planner-day{display:flex;justify-content:center;align-items:center;gap:10px;border:0;border-left:1px solid #2b3745;border-radius:0;padding:10px 5px;background:transparent;min-width:0;overflow:hidden}.planner-day>span{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:#9eaec0}.planner-day>strong{font-size:25px;font-weight:500;line-height:36px;width:36px;height:36px;text-align:center}.planner-day.today>strong{border-radius:50%;background:#e9eef4;color:#13202d}.planner-day.today{box-shadow:inset 0 -2px #cbd5df}.planner-allday{flex-shrink:0;max-height:100px;overflow-y:auto;min-height:36px;background:#141e29;border-bottom:1px solid #354252;scrollbar-gutter:stable}.all-day-label{font-size:10px;color:#91a2b5;align-self:start;text-align:center;padding-top:10px}.planner-allday>.calendar-agenda{border-left:1px solid #2b3745;min-width:0;padding:4px;display:flex;flex-direction:column;gap:3px}.planner-event{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;text-align:left;min-width:0;min-height:0;padding:5px 7px;gap:1px;border:1px solid color-mix(in srgb,var(--event-color) 35%,transparent);border-radius:7px;background:color-mix(in srgb,var(--event-color) 20%,#17202b);color:#f1f4f7;box-shadow:0 1px 2px #0003;overflow:hidden;overflow-wrap:anywhere;line-height:1.25}.planner-event:hover{background:color-mix(in srgb,var(--event-color) 35%,#17202b)}.planner-event strong{font-size:12px;font-weight:600;line-height:1.3}.planner-event span,.planner-event small{font-size:10px;font-weight:400;line-height:1.4;color:#d1dbe6}.planner-allday .planner-event{min-height:28px;padding:4px 6px}.planner-allday .planner-event span{display:none}.planner-allday .planner-event small{font-size:9px}.planner-scroll{overflow-y:auto;flex:1;min-height:0;scrollbar-gutter:stable;overscroll-behavior:contain}.planner-time-grid{height:1344px;position:relative}.planner-hours{position:relative;background:#151e28}.planner-hours span{position:absolute;left:0;right:8px;text-align:right;font-size:10px;line-height:18px;color:#91a2b5;transform:translateY(-8px)}.planner-hours span:first-child{transform:none}.planner-lane{position:relative;border-left:1px solid #2b3745;min-width:0;background:repeating-linear-gradient(to bottom,#2b3745 0,#2b3745 1px,transparent 1px,transparent 28px,#202d3b 28px,#202d3b 29px,transparent 29px,transparent 56px)}.planner-lane.today{background-color:#ffffff03}.planner-lane .planner-event{position:absolute}.planner-now{position:absolute;left:0;right:0;height:1px;background:#f18b86;pointer-events:none;z-index:3}.planner-now:before{content:'';position:absolute;left:-3px;top:-3px;width:7px;height:7px;border-radius:50%;background:#f18b86}.dialog-body .planner-hint{margin:9px 0 0;color:#8193a8;font-size:10px;flex-shrink:0}.calendar-event-detail h3{font-size:24px;line-height:1.4;margin:10px 0;overflow-wrap:anywhere}.calendar-event-detail .event-person{font-size:14px}.calendar-event-detail button{margin-top:16px}@media(max-width:700px){dialog.calendar-dialog{inset:6px;width:calc(100vw - 12px);height:calc(100dvh - 12px);padding:14px 12px;border-radius:15px}.planner-toolbar{gap:8px}.planner-toolbar h3{font-size:21px}.planner-toolbar h3 span{display:none}.planner-toolbar nav{gap:3px}.planner-toolbar nav button{padding:5px 10px}.planner-people{gap:6px}.planner-people .calendar-person{padding:6px 11px}.planner-board{min-width:800px}.planner-people{flex-wrap:wrap}.calendar-dialog .calendar-notice{font-size:12px;margin:0 0 10px}}

.planner-event strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planner-event span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planner-board{min-width:1050px}@media(max-width:700px){.planner-board{min-width:1050px}}

/* Countertop overview: cameras first, mining below the initial viewport. */
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.countertop[data-concept] .dashboard-content{padding:12px;max-width:none;min-width:0}.dashboard-primary{height:calc(100dvh - 24px);min-height:560px;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:48px auto 92px 68px minmax(0,1fr);grid-template-areas:'header' 'attention' 'calendar' 'energy' 'cameras';gap:8px}.dashboard-primary>.home-header{grid-area:header;margin:0;gap:12px;min-width:0}.dashboard-primary>.attention-banner{grid-area:attention;margin:0;min-height:30px;padding:0 8px;font-size:11px;border-radius:9px}.dashboard-primary .attention-banner button{min-height:30px;min-width:48px;padding:0 6px;font-size:11px}.dashboard-primary .attention-banner .icon{width:17px;height:17px}.dashboard-primary>.calendar-panel{grid-area:calendar}.dashboard-primary>.energy-panel{grid-area:energy}.dashboard-primary>.camera-strip{grid-area:cameras}.countertop[data-concept] .home-header h1{font-size:20px;white-space:nowrap}.home-header .eyebrow{display:none}.home-header .date-line{font-size:11px;line-height:1.3;margin-top:3px}.home-header .dashboard-time{font-size:21px;white-space:nowrap}.home-header .weather{gap:6px;padding:0;min-height:48px}.home-header .weather-icon{width:42px;height:42px}.home-header .weather-icon svg{width:42px;height:42px}.home-header .weather strong{font-size:20px}.home-header .weather-copy>span{font-size:10px;line-height:1.3}.home-header .photo-return{min-width:48px;height:48px;padding:10px}.home-header .photo-return span{display:none}.home-status-icons{display:flex;align-items:center;gap:4px;flex:none}.home-status-icons .door-row{display:block;min-height:0;border:0;padding:0}.home-status-icons .door-row>span,.home-status-icons .door-row>strong{display:none}.home-status-icon{position:relative;min-height:48px;min-width:48px;width:48px;height:48px;padding:10px;border-radius:12px;background:#ffffff05;border:1px solid var(--border);color:#9aa9b7}.home-status-icon .icon{width:25px;height:25px}.home-status-icon[data-level=good]{color:#6bce96}.home-status-icon[data-level=warning]{color:#f3cd64}.home-status-icon[data-level=bad]{color:#f18080}.home-status-icon[data-level=bad]:after{content:'!';position:absolute;right:3px;top:0;font-size:11px;font-weight:800}.water-icon[data-level=good]{color:#71bcef}.water-icon .icon{fill:currentColor;stroke-width:1}.dashboard-primary .calendar-panel{margin:0;padding:8px 10px;border-radius:12px;display:grid;grid-template-columns:130px minmax(0,1fr);gap:8px;overflow:hidden}.dashboard-primary .calendar-panel .panel-heading{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:0;margin:0;min-width:0}.dashboard-primary .calendar-panel h2{font-size:14px}.dashboard-primary #open-calendar{min-height:48px;padding:6px 8px;font-size:11px;white-space:nowrap}.dashboard-primary .calendar-preview{min-width:0}.dashboard-primary .calendar-legend,.dashboard-primary .compact-week h3{display:none}.dashboard-primary .compact-week .week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;min-height:0}.dashboard-primary .compact-week .week-day{display:block;padding:3px 5px;border-radius:7px;min-height:72px}.dashboard-primary .week-day header{display:flex;flex-direction:row;padding:0 0 3px;font-size:10px;gap:2px}.dashboard-primary .week-day header strong{font-size:14px;width:23px;height:23px;line-height:23px}.dashboard-primary .week-day article{padding:2px 4px;margin:0;border-radius:3px;line-height:1.2}.dashboard-primary .week-day article strong{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:10px;line-height:1.3}.dashboard-primary .week-day article span{display:block;white-space:nowrap;overflow:hidden;font-size:9px;line-height:1.2}.dashboard-primary .week-day article small{display:none}.dashboard-primary .week-more{font-size:8px;white-space:nowrap;overflow:hidden}.dashboard-primary .day-empty{padding:8px 0;font-size:11px}.dashboard-primary .calendar-notice{font-size:10px;margin:0}.dashboard-primary .calendar-notice+.week-grid{display:none}.dashboard-primary .energy-panel{padding:7px 10px;border-radius:12px;display:grid;grid-template-columns:180px minmax(0,1fr);gap:10px;overflow:hidden}.dashboard-primary .energy-panel .panel-heading{display:flex;align-items:flex-start;justify-content:center;flex-direction:column;gap:1px;margin:0;min-width:0}.dashboard-primary .energy-panel .eyebrow,.dashboard-primary .energy-panel .flow-wrap,.dashboard-primary .energy-panel .energy-bottom{display:none}.dashboard-primary .energy-panel .panel-heading h2{font-size:13px}.dashboard-primary .energy-panel #solar-tag{font-size:8px;padding:0;border:0;background:transparent}.dashboard-primary .energy-panel #energy-history{position:absolute;inset:0;opacity:0;margin:0;width:100%;height:100%;padding:0;min-height:48px}.dashboard-primary .energy-panel{position:relative}.energy-quick{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;align-items:center}.energy-quick>div{display:grid;grid-template-columns:auto 1fr;column-gap:4px;align-items:baseline;min-width:0}.energy-quick>div>span{grid-column:1/-1;font-size:10px;color:var(--muted);line-height:1.3}.energy-quick strong{font-size:20px;line-height:1.3;font-weight:500;white-space:nowrap}.energy-quick small{font-size:9px;color:var(--muted)}.dashboard-primary .camera-strip{margin:0;display:flex;flex-direction:column;gap:6px;min-height:0;min-width:0}.dashboard-primary .camera-strip-title{margin:0;min-height:34px;height:34px;justify-content:flex-start;gap:16px;flex:none}.dashboard-primary .camera-strip-title h2{font-size:13px;flex:1}.dashboard-primary .camera-strip-title button{min-height:34px;min-width:48px;font-size:10px;padding:4px 8px;white-space:nowrap}.dashboard-primary .camera-thumbnails{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:8px;min-height:0;flex:1}.dashboard-camera{position:relative;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#05090d;min-width:0;min-height:0}.dashboard-camera-content{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden}.dashboard-camera-content>hui-picture-entity-card{display:block;width:100%;height:100%;--ha-card-border-radius:0;--ha-card-border-width:0;pointer-events:none}.camera-expand{position:absolute;inset:0;width:100%;height:100%;display:flex;align-items:flex-end;justify-content:flex-start;gap:8px;padding:9px 11px;background:linear-gradient(transparent 65%,#05090dba);border:0;border-radius:0;min-height:48px;text-align:left;color:white}.camera-expand:hover{background:linear-gradient(transparent 55%,#05090ddd)}.camera-expand span{font-size:12px;font-weight:600;text-shadow:0 1px 3px black}.camera-expand small{font-size:9px;color:#d2dde7;margin-left:auto}.camera-expand .icon{height:17px;width:17px}.live-demo-scene{position:absolute;inset:0;overflow:hidden;background:linear-gradient(165deg,#243c46 0 43%,#435654 44% 48%,#25343b 49% 100%)}.live-demo-scene:before{content:'';position:absolute;left:14%;top:18%;width:35%;height:45%;background:#82928b44;clip-path:polygon(0 38%,50% 0,100% 38%,100% 100%,0 100%)}.live-demo-scene:after{content:'';position:absolute;width:26%;height:24%;left:55%;top:57%;border-radius:18px 22px 8px 8px;background:#98a8ae44;box-shadow:-160px 12px 0 -8px #5e7f8c80}.live-demo-scene span{position:absolute;top:9px;left:11px;font-size:8px;letter-spacing:.09em;color:#c0d2dc}.dashboard-camera:nth-child(2) .live-demo-scene{filter:hue-rotate(15deg)}.dashboard-camera:nth-child(3) .live-demo-scene{filter:hue-rotate(-20deg)}.dashboard-camera:nth-child(4) .live-demo-scene{filter:hue-rotate(35deg)}.dashboard-camera-content .feed-unavailable{font-size:12px;padding:12px}.dashboard-secondary{padding-top:22px}.secondary-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.secondary-heading h2{font-size:17px;font-weight:500}.secondary-heading span{font-size:11px;color:var(--muted)}.dashboard-secondary .home-grid{display:block}.dashboard-secondary .mining-panel{grid-area:auto}.dashboard-secondary .cooking-panel{margin-top:14px}.dashboard-secondary .display-footer{margin-top:18px}.security-feed .feed-content>hui-picture-entity-card{display:block;width:100%;height:100%;--ha-card-border-radius:0;--ha-card-border-width:0}
@media(min-width:901px){.countertop[data-concept] .dashboard-state{flex-direction:row}.countertop[data-concept] .rail{position:sticky;top:0;bottom:auto;order:0;width:64px;height:100dvh;min-height:0;padding:10px 6px;flex-direction:column;gap:0;flex:none}.countertop[data-concept] .rail .brand{display:none}.countertop[data-concept] .rail nav{display:flex;flex-direction:column;gap:6px;width:100%;margin:0;flex:none}.countertop[data-concept] .rail button{min-height:52px;min-width:48px;width:100%;padding:5px 0;gap:2px;font-size:9px;flex-direction:column}.countertop[data-concept] .rail .icon{width:22px;height:22px}.countertop[data-concept] .rail .rail-settings{margin-top:auto}.countertop[data-concept] .dashboard-content{width:calc(100% - 64px)}}
@media(max-width:900px){.dashboard-primary{height:calc(100dvh - 110px);min-height:640px;grid-template-rows:auto auto 92px 68px minmax(0,1fr)}.countertop[data-concept] .dashboard-content{width:100%}.dashboard-primary .home-header{flex-wrap:wrap;gap:8px}.home-header .welcome{flex:1;min-width:140px}.home-header .dashboard-time{font-size:18px}.home-header .date-line{display:none}.home-header .photo-return{display:none}.dashboard-primary .energy-panel{grid-template-columns:130px minmax(0,1fr)}.dashboard-primary .calendar-panel{grid-template-columns:105px minmax(0,1fr)}}
@media(max-width:600px){.dashboard-primary{height:auto;min-height:0;grid-template-rows:auto auto auto auto minmax(400px,1fr)}.home-status-icons{order:3}.home-header .weather{margin-left:auto}.home-header .dashboard-time{display:none}.dashboard-primary .calendar-panel{display:block;min-height:140px}.dashboard-primary .calendar-panel .panel-heading{flex-direction:row;align-items:center;justify-content:space-between;margin-bottom:6px}.dashboard-primary .compact-week .week-grid{gap:2px}.dashboard-primary .compact-week .week-day{padding:3px 2px}.dashboard-primary .week-day header{flex-direction:column;gap:1px}.dashboard-primary .week-day article span{display:none}.dashboard-primary .energy-panel{display:block;min-height:100px}.dashboard-primary .energy-panel .panel-heading{flex-direction:row;justify-content:space-between}.energy-quick{margin-top:8px;gap:4px}.energy-quick strong{font-size:17px}.camera-expand span{font-size:10px}.camera-expand small{display:none}.camera-expand{padding:6px}.dashboard-primary .camera-thumbnails{min-height:350px}.home-header .welcome{min-width:100px}.countertop[data-concept] .home-header h1{font-size:18px}.dashboard-primary .camera-strip-title button{min-height:48px}.dashboard-primary .camera-strip-title{min-height:48px;height:48px}}

.dashboard-primary .attention-banner button{min-height:48px}.dashboard-primary .camera-strip-title{height:48px;min-height:48px}.dashboard-primary .camera-strip-title button{min-height:48px}.dashboard-primary .energy-panel #energy-history{opacity:1;background:transparent;color:transparent}.dashboard-primary .energy-panel #energy-history:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}

/* Preserve full camera frames: dedicated 2x2 video area plus a narrow glance column. */
.dashboard-primary{grid-template-columns:minmax(0,1fr) clamp(230px,25vw,300px);grid-template-rows:48px auto minmax(0,1fr);grid-template-areas:'header header' 'attention attention' 'cameras glance'}.dashboard-glance{grid-area:glance;display:flex;flex-direction:column;gap:8px;min-height:0;min-width:0}.dashboard-glance .calendar-panel{display:flex;flex-direction:column;flex:1;min-height:0}.dashboard-glance .calendar-panel .panel-heading{flex-direction:row;align-items:center;justify-content:space-between;flex:none;width:100%;height:48px;gap:4px}.dashboard-glance .calendar-preview{flex:1;min-height:0}.dashboard-glance .compact-week{height:100%}.dashboard-glance .compact-week .week-grid{grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(7,minmax(0,1fr));height:100%;gap:2px}.dashboard-glance .compact-week .week-day{display:grid;grid-template-columns:55px minmax(0,1fr);align-items:center;gap:4px;min-height:0;padding:3px 5px;border-radius:6px}.dashboard-glance .week-day header{justify-content:flex-start;align-items:center;padding:0;font-size:10px;gap:3px}.dashboard-glance .week-day header strong{flex:none}.dashboard-glance .week-day article{padding:2px 4px}.dashboard-glance .week-day article span{font-size:9px}.dashboard-glance .week-day article strong{font-size:10px}.dashboard-glance .week-more{font-size:8px;line-height:1.1}.dashboard-glance .day-empty{padding:0;font-size:12px}.dashboard-glance .energy-panel{display:block;flex:none;height:174px;padding:10px}.dashboard-glance .energy-panel .panel-heading{height:30px;justify-content:flex-start;gap:1px}.dashboard-glance .energy-quick{grid-template-columns:repeat(2,minmax(0,1fr));margin:6px 0 0;gap:6px 12px}.dashboard-glance .energy-quick>div>span{font-size:9px}.dashboard-glance .energy-quick strong{font-size:18px;line-height:1.2}.dashboard-glance .energy-quick small{font-size:9px}.dashboard-glance .energy-panel .panel-heading h2{font-size:13px}.dashboard-glance .calendar-notice{padding-top:5px}
@media(max-width:900px){.dashboard-primary{grid-template-columns:minmax(0,1fr) 230px;grid-template-rows:auto auto minmax(0,1fr);grid-template-areas:'header header' 'attention attention' 'cameras glance'}}
@media(max-width:600px){.dashboard-primary{height:auto;grid-template-columns:1fr;grid-template-rows:auto auto minmax(430px,1fr) auto;grid-template-areas:'header' 'attention' 'cameras' 'glance'}.dashboard-glance{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.dashboard-glance .calendar-panel{min-height:300px}.dashboard-glance .energy-panel{min-height:174px}.dashboard-glance .calendar-panel .panel-heading{height:48px}.dashboard-glance .calendar-preview{min-height:220px}.dashboard-glance .week-day article span{display:block}}

@media(min-width:901px) and (max-height:680px){.dashboard-glance .week-day article span,.dashboard-glance .week-more{display:none}.dashboard-glance .week-day article{margin-bottom:0}.dashboard-glance .week-day article strong{line-height:1.3}.dashboard-glance .energy-panel{height:164px}}

/* High-contrast watch-style wind pointer; double head only for reported gusts. */
.runway-wind-arrow{fill:none;stroke:#39caff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 2px #00121f)}.runway-wind-arrow .wind-shaft{stroke-width:4}.runway-wind-arrow .wind-head{fill:#082735;fill-opacity:.85;stroke-width:4}.runway-wind-arrow .wind-source{stroke-width:4}.runway-wind-arrow .wind-gust-head{stroke-width:5}.runway-wind-arrow .wind-hub{fill:#39caff;stroke:#082735;stroke-width:2}.runway-mini .wind-shaft,.runway-mini .wind-source{stroke-width:7}.runway-mini .wind-head{stroke-width:7}.runway-mini .wind-gust-head{stroke-width:8}.runway-mini .runway-axis>path{opacity:.55}.runway-mini .compass-tick{opacity:.55}

/* Tablet refinement: named door chips and a toolbar alert rather than a banner row. */
.dashboard-primary{grid-template-rows:52px minmax(0,1fr);grid-template-areas:'header header' 'cameras glance';gap:6px}.dashboard-primary>.home-header{gap:9px}.home-status-icons{gap:4px}.home-status-icons .home-status-icon{width:76px;min-width:76px;height:50px;padding:4px 3px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;border-radius:9px}.home-status-icons .home-status-icon .icon{width:21px;height:21px}.home-status-icons .water-icon{width:48px;min-width:48px}.door-short{display:block;font-size:10px;line-height:1.15;font-weight:500;white-space:nowrap}.dashboard-primary .camera-strip-title{gap:6px;justify-content:flex-start;height:48px;min-height:48px}.dashboard-primary .camera-strip-title h2{margin-right:auto;font-size:13px;white-space:nowrap}.dashboard-primary .camera-strip-title .attention-banner{grid-area:auto;display:inline-flex;flex:none;width:auto;max-width:210px;height:32px;min-height:32px;margin:0 0 0 4px;padding:5px 9px;gap:6px;border-radius:8px;border:1px solid #b98a3955;background:#b98a391a;font-size:10px;text-align:left;position:relative}.camera-strip-title .attention-banner:before{content:'';position:absolute;inset:-8px 0}.camera-strip-title .attention-banner .icon{width:15px;height:15px;flex:none}.camera-strip-title .attention-banner span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-primary .camera-strip-title>.compact-action,.dashboard-primary .camera-strip-title>#all-cameras{font-size:10px;padding:5px 7px}.dashboard-glance .calendar-panel{padding:7px 10px}.dashboard-glance .compact-week .week-day{border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent}.dashboard-glance .compact-week .week-day.today{background:#ffffff06;border-radius:5px}.dashboard-glance .calendar-panel .panel-heading{height:42px}.dashboard-primary .camera-strip{gap:3px}.dashboard-primary .camera-thumbnails{gap:6px}
@media(min-width:901px) and (max-width:1100px){.home-header .welcome{min-width:85px}.countertop[data-concept] .home-header h1{font-size:17px}.home-header .date-line{font-size:10px}.home-header .dashboard-time{font-size:17px}.dashboard-primary>.home-header{gap:7px}.home-status-icons .home-status-icon{width:66px;min-width:66px}.home-status-icons .water-icon{width:44px;min-width:44px}.door-short{font-size:9px}.dashboard-primary .camera-strip-title .attention-banner{max-width:165px}.dashboard-primary .camera-strip-title h2{font-size:12px}}
@media(max-width:900px){.dashboard-primary{grid-template-rows:auto minmax(0,1fr);grid-template-areas:'header header' 'cameras glance'}.dashboard-primary .camera-strip-title{flex-wrap:wrap;height:auto;min-height:48px}.dashboard-primary .camera-strip-title .attention-banner{max-width:180px}}
@media(max-width:600px){.dashboard-primary{grid-template-rows:auto minmax(430px,1fr) auto;grid-template-areas:'header' 'cameras' 'glance'}.home-status-icons{width:100%}.home-status-icons .home-status-icon{width:74px;min-width:74px}.home-status-icons .water-icon{width:48px;min-width:48px}.dashboard-primary .camera-strip-title .attention-banner{margin-bottom:5px}}

.home-status-icons .home-status-icon{width:90px;min-width:90px}.home-status-icons .water-icon{width:48px;min-width:48px}.door-short{font-size:12px}.dashboard-primary .camera-strip-title .attention-banner{color:var(--gold)}
@media(min-width:901px) and (max-width:1100px){.home-status-icons .home-status-icon{width:84px;min-width:84px}.home-status-icons .water-icon{width:44px;min-width:44px}.door-short{font-size:11px}}
@media(max-width:600px){.home-status-icons .home-status-icon{width:82px;min-width:82px}.home-status-icons .water-icon{width:48px;min-width:48px}.door-short{font-size:11px}}

/* Fixed weather geometry keeps the compass separate from its text. */
.dashboard-primary .home-header .welcome{display:none}.dashboard-primary .home-header .weather{margin-left:auto;flex:0 1 auto;min-width:0;gap:9px;overflow:visible}.home-header .weather .weather-icon{display:grid;place-items:center;width:52px;height:52px;flex:0 0 52px;margin:0}.home-header .weather .weather-icon .runway-mini{width:52px;height:52px;margin:0;max-width:none}.home-header .weather .weather-copy{display:flex;flex-direction:column;align-items:flex-start;min-width:0;margin:0;gap:1px}.home-header .weather .weather-copy>span{margin:0;line-height:1.3}.home-header .weather .weather-copy #weather-airport-wind{max-width:200px;font-size:10px;margin:0;line-height:1.3}.header-clock{flex:none;text-align:right;white-space:nowrap;display:flex;flex-direction:column;gap:2px}.home-header .header-clock .dashboard-time{display:block;line-height:1.2;font-size:20px;margin:0}.home-header .header-clock .date-line{display:block;margin:0;font-size:10px;line-height:1.2}.dashboard-primary .home-header{flex-wrap:nowrap}.dashboard-primary .home-status-icons{order:0}
@media(max-width:900px){.dashboard-primary .home-header{flex-wrap:wrap}.header-clock{margin-left:auto}.home-header .weather .weather-copy #weather-airport-wind{max-width:165px}}
@media(max-width:600px){.dashboard-primary .home-status-icons{width:100%;justify-content:space-between}.dashboard-primary .home-header .weather{margin-left:0}.home-header .header-clock .dashboard-time{font-size:18px}.home-header .header-clock .date-line{font-size:9px}}

/* Keep a 48px touch target while painting only a slim 32px alert chip. */
.dashboard-primary .camera-strip-title .attention-banner{height:48px;min-height:48px;border:0;background:transparent;isolation:isolate}.dashboard-primary .camera-strip-title .attention-banner:before{content:none}.dashboard-primary .camera-strip-title .attention-banner:after{content:'';position:absolute;inset:8px 0;border:1px solid #b98a3955;border-radius:8px;background:#b98a391a;z-index:-1;pointer-events:none}.home-status-icons .water-icon{width:48px;min-width:48px}

/* Camera-first activity view: edge-to-edge footage, small overlay controls and name. */
.countertop[data-mode=CAMERA_ALERT] .security-state{display:block;position:relative;width:100%;height:100dvh;min-height:0;padding:0!important;overflow:hidden;background:#050a0d}.security-state>header{position:absolute;top:10px;right:10px;left:auto;z-index:5;margin:0;padding:0;display:block;pointer-events:none}.security-state>header>div:first-child{display:none}.security-state .camera-controls{pointer-events:auto;display:flex;gap:6px;width:auto}.security-state .camera-controls button{width:48px;height:48px;min-width:48px;min-height:48px;padding:10px;border-radius:10px;background:#10212cbb;border:1px solid #ffffff33;backdrop-filter:blur(6px);flex:none}.security-state .camera-controls button span{display:none}.security-state .camera-controls button .icon{width:23px;height:23px}.security-state .camera-controls button[aria-pressed=true]{background:#386e62e6;border-color:#9bdec6}.security-state>footer{display:none}.security-state .security-feeds{position:absolute;inset:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:4px;width:100%;height:100%;min-height:0;margin:0}.security-state .security-feeds[data-count="1"]{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}.security-state .security-feeds[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:minmax(0,1fr)}.security-state .security-feed{position:relative;min-height:0;min-width:0;border:0;border-radius:0;overflow:hidden;background:#050a0d}.security-state .feed-header{position:absolute;bottom:10px;left:10px;right:auto;z-index:3;padding:5px 10px;max-width:calc(100% - 20px);border:0;border-radius:7px;background:#10212cbb;pointer-events:none;line-height:1.3}.security-state .feed-header strong{font-size:12px;line-height:1.3;white-space:nowrap}.security-state .feed-header span{display:none}.security-state .security-feed .feed-content{position:absolute;inset:0;display:block;width:100%;height:100%;min-height:0;overflow:hidden;background:#050a0d}.security-state .feed-content>.scene{display:block;width:100%;height:100%;min-height:0;object-fit:contain}.security-state .feed-unavailable{height:100%;min-height:0;padding:15px}.security-state .feed-unavailable strong{font-size:16px}.security-state .feed-unavailable span{font-size:12px}.security-state .feed-content>hui-picture-entity-card{display:block;width:100%;height:100%;--ha-card-border-radius:0;--ha-card-border-width:0}
@media(orientation:portrait){.security-state .security-feeds[data-count="2"]{grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(2,minmax(0,1fr))}}

/* Three-state miner lamp alongside the door status chips. */
.home-status-icons .miner-icon{width:52px;min-width:52px;gap:5px}.miner-light{display:block;width:13px;height:13px;border-radius:50%;background:currentColor;box-shadow:0 0 9px color-mix(in srgb,currentColor 35%,transparent)}.miner-short{font-size:10px;line-height:1.15}.home-status-icons .miner-icon[data-level=good]{color:#6bce96}.home-status-icons .miner-icon[data-level=warning]{color:#f3cd64}.home-status-icons .miner-icon[data-level=bad]{color:#f18080}
/* Allocate the calendar sidebar to appointments, not seven equally empty rows. */
.dashboard-glance .compact-week .week-grid{display:flex;flex-direction:column;gap:2px;overflow:auto}.dashboard-glance .compact-week .week-day{flex:0 0 23px;grid-template-columns:48px minmax(0,1fr);padding:2px 3px;overflow:hidden}.dashboard-glance .compact-week .week-day.past-day{flex-basis:18px;opacity:.5}.dashboard-glance .compact-week .week-day.event-day{flex:var(--day-weight) 0 64px;align-items:start;padding-top:5px}.dashboard-glance .compact-week .week-day.today.quiet-day{flex-basis:28px}.dashboard-glance .compact-week .week-day header{padding-top:2px}.dashboard-glance .compact-week .week-day header strong{font-size:12px;width:auto;height:auto;line-height:1.2}.dashboard-glance .compact-week .week-day.today header strong{min-width:20px;line-height:20px}.dashboard-glance .compact-week .calendar-agenda{min-width:0;min-height:0;max-height:100%;overflow:auto}.dashboard-glance .compact-week .calendar-agenda article{margin:0 0 4px;padding:2px 5px;background:#ffffff06;border-bottom:0}.dashboard-glance .compact-week .calendar-agenda article strong{display:block;font-size:12px;line-height:1.3;overflow-wrap:anywhere}.dashboard-glance .compact-week .calendar-agenda article span{display:block;font-size:10px;line-height:1.3}.dashboard-glance .compact-week .calendar-agenda article small{display:block;font-size:10px;line-height:1.3;color:var(--muted)}.dashboard-glance .compact-week .week-more{display:block;font-size:10px}.dashboard-glance .past-summary{font-size:9px;color:var(--muted)}
.dashboard-glance .compact-week .past-day .calendar-agenda{line-height:12px;align-self:center}.dashboard-glance .compact-week .past-day header{padding-top:0}

/* Compact vector illustrations, with motion only on reported active power paths. */
.dashboard-glance .energy-panel{height:250px;padding:8px 10px;display:flex;flex-direction:column}.dashboard-glance .energy-panel .panel-heading{height:25px;min-height:25px;flex:none}.dashboard-glance .energy-quick{display:none}.energy-visual{flex:1;min-height:0;width:100%}.compact-power-flow{display:block;width:100%;height:100%;overflow:visible}.compact-power-flow text{font-family:Jakarta,Segoe UI,sans-serif;text-anchor:middle;fill:var(--text);stroke:none}.compact-power-flow .power-reading{font-size:14px;font-weight:650;letter-spacing:-.3px}.compact-power-flow .power-direction{font-size:10px;fill:var(--muted)}.power-node>g{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.power-solar{color:#f0c467}.power-home{color:#7fbeed}.power-grid{color:#b99bef}.power-battery{color:#73d4ad}.panel-face{fill:#f0c4671c}.house-face{fill:#7fbeed1c}.battery-case{fill:#73d4ad0d}.power-node .battery-fill{fill:currentColor;stroke:none}.power-node[data-available=false]{color:#82919c;opacity:.65}.inverter-art rect{fill:#132630;stroke:#ffffff38}.inverter-art path{fill:none;stroke:#c6e5e6;stroke-width:1.8;stroke-linecap:round}.inverter-art circle{fill:#73d4ad}.inverter-art text{font-size:8px;fill:var(--muted)}.power-connections path{fill:none;stroke-width:2.5;stroke-linecap:round}.power-track{stroke:#8aabb62e}.power-motion{stroke:currentColor;stroke-dasharray:2 9;animation:power-travel 1.5s linear infinite}[data-energy-link=solar]{color:#f0c467}[data-energy-link=grid]{color:#b99bef}[data-energy-link=home]{color:#7fbeed}[data-energy-link=battery]{color:#73d4ad}[data-energy-link][data-reverse=true] .power-motion{animation-direction:reverse}[data-energy-link][data-direction=unknown] .power-motion,[data-energy-link][data-direction=idle] .power-motion{display:none}@keyframes power-travel{to{stroke-dashoffset:-22}}@media(prefers-reduced-motion:reduce){.power-motion{animation:none;stroke-dasharray:4 4}}@media(min-width:901px) and (max-height:680px){.dashboard-glance .energy-panel{height:205px}}
.power-chevron{stroke:currentColor;stroke-width:1.7!important;transform-box:fill-box;transform-origin:center}[data-energy-link][data-reverse=true] .power-chevron{transform:rotate(180deg)}[data-energy-link][data-direction=idle] .power-chevron,[data-energy-link][data-direction=unknown] .power-chevron{display:none}
.countertop[data-concept] .dashboard-glance .energy-panel{padding:8px 10px;height:250px;flex:none}.dashboard-glance .energy-panel .panel-heading{margin:0}.compact-power-flow .power-reading,.compact-power-flow .power-direction,.inverter-art text{paint-order:stroke fill;stroke:#142730;stroke-width:3px;stroke-linejoin:round}@media(min-width:901px) and (max-height:680px){.countertop[data-concept] .dashboard-glance .energy-panel{height:205px}}
.compact-power-flow .battery-percent{text-anchor:start;font-size:22px;font-weight:650;letter-spacing:-.5px;fill:#8be3bf;paint-order:stroke fill;stroke:#142730;stroke-width:3px;stroke-linejoin:round}
.compact-power-flow .power-reading{font-size:20px;font-weight:650;letter-spacing:-.6px}
/* Small data health badges and a focused next appointment, without changing camera geometry. */
.offline-chip{color:#f4ad90;border:1px solid #f4ad9044;border-radius:8px;font-size:10px!important;white-space:nowrap}.camera-health{position:absolute;top:9px;left:9px;z-index:2;background:#782e2edb;color:#fff0e9;padding:4px 7px;border-radius:6px;font-size:10px;pointer-events:none}.energy-tap,.camera-back-hit{position:absolute;inset:0;width:100%;height:100%;min-height:48px;min-width:48px;border:0;border-radius:0;background:transparent;padding:0;cursor:pointer}.energy-tap:hover,.camera-back-hit:hover{background:#ffffff04}.energy-tap:focus-visible,.camera-back-hit:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}.camera-back-hit{z-index:2}.next-appointment{flex:none;margin:2px 0 7px;padding:6px 8px;border-left:3px solid var(--event-color);background:#ffffff05;border-radius:4px;min-width:0}.next-appointment>span{display:block;font-size:10px;line-height:1.4;color:var(--muted)}.next-appointment>strong{display:block;font-size:12px;font-weight:600;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.next-appointment[data-imminent=true]{background:#e6b85e12;box-shadow:inset 0 0 0 1px #e6b85e22}.next-appointment[data-imminent=true]>span{color:#eac77e}.energy-totals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:8px 0 18px}.energy-totals>div{padding:14px;border:1px solid var(--border);border-radius:12px;background:#ffffff04}.energy-totals span{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}.energy-totals strong{font-size:24px;font-weight:600}.energy-totals small{font-size:12px;color:var(--muted)}@media(max-width:600px){.energy-totals{grid-template-columns:1fr}}
.dashboard-glance .compact-week .week-day{flex-basis:19px}.dashboard-glance .compact-week .week-day.past-day{flex-basis:16px}.dashboard-glance .compact-week .week-day.event-day{flex-basis:56px}.dashboard-glance .compact-week .week-day.today.quiet-day{flex-basis:24px}
/* Trial: a low horizontal clock/date overlay on the photo frame. */
.frame-caption{flex-direction:row;align-items:center;gap:16px;max-width:calc(100% - 120px);flex-wrap:wrap}.frame-caption .frame-date{border-left:1px solid #ffffff40;padding-left:16px}.frame-caption small{flex-basis:100%;margin-top:0}.photo-state[data-cooking-active=true] .frame-caption{max-width:calc(100% - var(--cook-rail-width) - 72px)}@media(max-width:650px){.frame-caption{gap:4px 10px;max-width:calc(100% - 96px)}.frame-caption .frame-date{padding-left:10px}}
/* Larger horizontal clock/date and a compact bottom strip fitting six tablet probes. */
.frame-time{font-size:clamp(36px,3.5vw,44px)}.frame-date{font-size:18px}.frame-caption{padding:10px 16px;gap:18px}.photo-state[data-cooking-active=true]{--cook-band-height:112px}.photo-state[data-cooking-active=true] .frame-image{right:0}.photo-state[data-cooking-active=true] .frame-touch{right:0;width:100%}.photo-state[data-cooking-active=true] .frame-caption{top:auto;bottom:calc(var(--cook-band-height) + 48px);max-width:calc(100% - 120px)}.photo-state[data-cooking-active=true] .pause-photo{right:24px;bottom:calc(var(--cook-band-height) + 48px)}.cooking-photo-strip{left:24px;right:24px;top:auto;bottom:24px;width:auto;height:var(--cook-band-height);max-height:none;overflow-x:auto;overflow-y:hidden;flex-direction:row;align-items:stretch;justify-content:space-between;flex-wrap:nowrap;padding:10px 14px;gap:8px;touch-action:pan-x;scrollbar-width:thin}.cooking-photo-strip>span{flex:1 0 110px;min-width:110px;padding:6px 8px;justify-content:center;gap:4px;overflow-y:auto}.cooking-photo-strip .cooking-photo-title{flex:0 0 90px;min-width:90px;max-width:90px;padding:4px 2px;font-size:14px;line-height:1.3}.cooking-photo-strip strong{font-size:26px;line-height:1.2;white-space:nowrap}.cooking-photo-strip small{font-size:11px;line-height:1.3}.cooking-photo-strip strong .probe-unit{font-size:12px;line-height:1;margin-left:2px}.cooking-photo-strip>span:last-child{flex:0 0 54px;min-width:54px;margin:0;border-top:0;border-left:1px solid #4a5d55;border-radius:0;font-size:12px;padding:4px}.photo-state[data-cooking-active=true] .photo-temperature-alerts{max-width:calc(100% - 48px)}@media(max-width:900px){.cooking-photo-strip{left:12px;right:12px;bottom:12px;padding:10px 12px;gap:8px}.cooking-photo-strip .cooking-photo-title{flex-basis:76px;min-width:76px;max-width:76px;font-size:12px}.cooking-photo-strip>span{flex-basis:88px;min-width:88px;padding:6px}.cooking-photo-strip strong{font-size:22px}.cooking-photo-strip small{font-size:10px}.cooking-photo-strip>span:last-child{flex-basis:48px;min-width:48px;font-size:11px}}@media(max-width:650px){.frame-time{font-size:36px}.frame-date{font-size:16px}.frame-caption{padding:8px 12px;gap:10px}.photo-state[data-cooking-active=true] .photo-temperature-alerts{max-width:calc(100% - 24px)}}
/* Tight clock backplate: bottom-left, sitting just above active probes. */
.frame-caption{left:16px;bottom:16px;padding:6px 10px;gap:12px;width:max-content;max-width:calc(100% - 100px)}.frame-caption .frame-date{padding-left:12px}.frame-caption small:not(:empty){position:absolute;left:0;bottom:calc(100% + 6px);margin:0;padding:3px 6px;border-radius:4px;background:#080d1180;white-space:nowrap}.photo-state[data-cooking-active=true] .frame-caption{bottom:calc(var(--cook-band-height) + 36px)}@media(max-width:900px){.photo-state[data-cooking-active=true] .frame-caption{bottom:calc(var(--cook-band-height) + 24px)}}

/* Distance-readable airport names; dots remain geographic and unclustered. */
.leaflet-weather-map .airport-map-label{font-size:18px;font-weight:650;line-height:1.35;padding:7px 10px;border:1px solid #a7beb0;border-radius:8px;background:#10231df2;color:#fff;box-shadow:0 2px 8px #0008;width:max-content;max-width:280px;white-space:normal}

/* Photo-cycle calendar: larger text and taller time slots for room-distance reading. */
.distance-planner .planner-board{min-width:0}
.distance-planner .planner-toolbar h3{font-size:30px}
.distance-planner .planner-toolbar small,.distance-planner .planner-people .calendar-person{font-size:16px}
.distance-planner .planner-people{margin-bottom:10px;flex-wrap:wrap}
.distance-planner .planner-day>span{font-size:17px;color:#dce5ef}
.distance-planner .planner-day>strong{font-size:30px}
.distance-planner .planner-event{padding:6px;gap:3px}
.distance-planner .planner-event strong{white-space:normal;overflow-wrap:anywhere;font-size:18px;line-height:1.25;color:#fff}
.distance-planner .planner-event span{white-space:normal;font-size:14px;color:#ecf1f7}
.distance-planner .timed-event small{display:none}
.distance-planner .planner-allday{max-height:130px}
.distance-planner .planner-allday .planner-event small{font-size:13px}
.distance-planner .planner-hours span{font-size:14px;color:#c1cedc}
.distance-planner .planner-lane{background-size:auto;background-image:repeating-linear-gradient(to bottom,#3d4c5e 0,#3d4c5e 1px,transparent 1px,transparent 56px,#293747 56px,#293747 57px,transparent 57px,transparent 112px)}
.distance-planner .planner-hint{font-size:13px}
@media(max-width:900px){.distance-planner .planner-board{min-width:900px}}

/* Solid calendar fills support tablet WebViews without CSS color-mix. */
.planner-people .calendar-person i{width:16px;height:16px;flex:none;box-shadow:0 0 0 1px #ffffff30}
.planner-people .calendar-person{border-color:#536176}
.distance-planner .timed-event small{display:block;font-size:12px;color:#fff;font-weight:600;line-height:1.25}

/* Decoded next slide dissolves over the old slide, then the spare layer is cleared. */
.frame-back[data-crossfade=true]{display:grid!important;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:12px;overflow:hidden;background-color:#080d11;opacity:0;pointer-events:none}
.frame-back[data-crossfade=true][data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(orientation:portrait){.frame-back[data-crossfade=true][data-count="2"]{grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.frame-back[data-crossfade=true]{gap:8px}}

/* Room-distance power direction: filled arrowheads remain clear without motion. */
.power-chevron{fill:currentColor!important;stroke:#10212c!important;stroke-width:1.4!important;stroke-linejoin:round;paint-order:stroke fill}
[data-energy-link]:not([data-direction=idle]):not([data-direction=unknown]) .power-track{stroke:currentColor;stroke-width:3;opacity:.5}
.power-motion{stroke-width:4!important;stroke-dasharray:5 11;animation:power-direction-travel 1.2s linear infinite}
@keyframes power-direction-travel{to{stroke-dashoffset:-32}}
@media(prefers-reduced-motion:reduce){.power-motion{animation:none;stroke-dasharray:5 11}}

/* Dim only chart raster tiles: METAR colours, radar, labels and details stay original. */
.leaflet-weather-map[data-theme=vnc-dark] .vnc-chart-tiles{filter:invert(1) hue-rotate(180deg) saturate(.45) brightness(.65) contrast(1.15)}
.leaflet-weather-map .airport-dot.led-VFR,.leaflet-weather-map .airport-dot.led-MVFR,.leaflet-weather-map .airport-dot.led-IFR,.leaflet-weather-map .airport-dot.led-LIFR{filter:drop-shadow(0 1px 3px #000) drop-shadow(0 0 4px #000)}
.leaflet-weather-map .airport-map-label{font-size:22px;padding:8px 12px;max-width:340px}
.leaflet-weather-map .airport-city-label{overflow:visible;pointer-events:none}
.airport-city-label button{pointer-events:auto;position:absolute;transform:translate(20px,-50%);width:max-content;min-width:0;min-height:44px;padding:5px 10px;border:1px solid #8195a5;border-radius:8px;background:#101c2ef2;color:#fff;font-size:22px;font-weight:700;line-height:1.25;white-space:nowrap;box-shadow:0 2px 6px #0009;text-shadow:0 1px 2px #000}
.airport-city-label.city-label-west button{transform:translate(calc(-100% - 22px),-50%)}
@media(max-width:900px){.airport-city-label button{font-size:20px}}

.security-state .camera-controls button[hidden]{display:none}

/* Family event entry stays inside the display; GCOL remains read-only. */
.planner-toolbar .calendar-add{background:#bad8be;color:#14251e;border-color:#bad8be;white-space:nowrap}
.calendar-save-notice{font-size:13px;color:#a7dfba;margin:0 0 10px}
dialog.calendar-entry-dialog{width:min(740px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:18px 22px;border-radius:18px;overflow:auto;background:#17232e;color:#edf2f1}
.calendar-entry-dialog .dialog-heading{margin-bottom:12px}.calendar-entry-dialog .dialog-heading h2{font-size:24px}
.calendar-entry-fields{display:grid;grid-template-columns:1fr 1.4fr;gap:12px}
.calendar-entry label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:#c3d0da;min-width:0}
.calendar-entry input,.calendar-entry select,.calendar-entry textarea{font:inherit;font-size:16px;min-width:0;width:100%;min-height:48px;border:1px solid #526376;border-radius:9px;padding:10px;background:#0f1b26;color:#fff;color-scheme:dark}
.calendar-entry select{border-left:5px solid var(--person-color)}
.calendar-entry .calendar-all-day{grid-column:1/-1;display:flex;flex-direction:row;align-items:center;gap:10px;min-height:40px}
.calendar-all-day input{width:24px;height:24px;min-height:24px;accent-color:var(--person-color)}
.calendar-entry-times,.calendar-entry-dates{display:grid;grid-column:1/-1;grid-template-columns:1fr 1fr;gap:12px}
.calendar-entry [hidden]{display:none!important}.calendar-entry-notes{grid-column:1/-1}
.calendar-entry textarea{resize:vertical;max-height:160px}.calendar-entry-error{color:#ffb3ad;background:#42272b;border-radius:9px;padding:10px;margin-top:10px;font-size:14px}
.calendar-entry footer{display:flex;gap:8px;align-items:center;position:sticky;bottom:-18px;background:#17232ef5;padding:14px 0 4px;margin-top:8px}
.calendar-entry footer>span{margin-right:auto;font-size:12px;color:#a6b8c6}.calendar-save{background:#bad8be;color:#14251e;border-color:#bad8be}
.calendar-detail-notes{white-space:pre-wrap}
@media(max-width:620px){.calendar-entry-fields{grid-template-columns:1fr}.calendar-entry-times,.calendar-entry-dates{grid-template-columns:1fr}.calendar-entry footer{flex-wrap:wrap}.calendar-entry footer>span{width:100%}}

/* One prominent upcoming event beside the clock, above any active probes. */
.photo-events{position:absolute;z-index:5;left:var(--photo-reminder-left,310px);right:auto;width:max-content;max-width:min(560px,calc(100% - var(--photo-reminder-left,310px) - 88px));bottom:16px;min-height:100px;display:flex;align-items:center;gap:12px;padding:10px 14px;background:#101b25ed;border:1px solid #637885;border-radius:12px;color:#fff;text-align:left;box-shadow:0 4px 20px #0006}
.photo-events[hidden]{display:none!important}.photo-event{flex:1;min-width:0;border-left:5px solid var(--event-color);padding-left:12px;display:flex;flex-direction:column;justify-content:center;gap:3px}.photo-event>span{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.photo-event b{font-size:28px;color:var(--event-color)}.photo-event time{font-size:28px;color:#e3ecf1}.photo-event>strong{font-size:44px;line-height:1.12;white-space:normal;overflow:hidden;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-overflow:ellipsis}.photo-event-more{align-self:center;font-size:20px;white-space:nowrap}
.photo-state[data-upcoming-active=true] .frame-caption{bottom:32px}.photo-state[data-upcoming-active=true] .pause-photo{right:24px;bottom:36px}
.photo-state[data-upcoming-active=true][data-cooking-active=true] .photo-events{bottom:calc(var(--cook-band-height) + 36px)}
.photo-state[data-upcoming-active=true][data-cooking-active=true] .frame-caption{bottom:calc(var(--cook-band-height) + 52px)}
.photo-state[data-upcoming-active=true][data-cooking-active=true] .pause-photo{bottom:calc(var(--cook-band-height) + 56px)}
@media(max-width:1100px){.photo-events{padding:10px 12px;gap:8px}.photo-event{padding-left:9px}}
@media(max-width:900px){.photo-state[data-upcoming-active=true][data-cooking-active=true] .photo-events{bottom:calc(var(--cook-band-height) + 24px)}.photo-state[data-upcoming-active=true][data-cooking-active=true] .frame-caption{bottom:calc(var(--cook-band-height) + 40px)}.photo-state[data-upcoming-active=true][data-cooking-active=true] .pause-photo{bottom:calc(var(--cook-band-height) + 44px)}}
@media(max-width:650px){.photo-events{left:12px;right:auto;max-width:calc(100% - 24px);bottom:12px}.photo-state[data-upcoming-active=true] .frame-caption,.photo-state[data-upcoming-active=true] .pause-photo{bottom:180px}.photo-state[data-upcoming-active=true][data-cooking-active=true] .frame-caption,.photo-state[data-upcoming-active=true][data-cooking-active=true] .pause-photo{bottom:calc(var(--cook-band-height) + 192px)}}

/* Larger photo-page clock; date retains its compact horizontal layout. */
.frame-caption .frame-time{font-size:56px;font-weight:550;line-height:1.1;white-space:nowrap}
@media(max-width:650px){.frame-caption .frame-time{font-size:48px}}

/* Keep the clock tight to the lower edge, or four pixels above active probes. */
.photo-state .frame-caption,.photo-state[data-upcoming-active=true] .frame-caption{bottom:4px;padding-bottom:0}
.frame-caption .frame-time{line-height:1}
.photo-state[data-cooking-active=true] .frame-caption,.photo-state[data-upcoming-active=true][data-cooking-active=true] .frame-caption{bottom:calc(var(--cook-band-height) + 28px)}
@media(max-width:900px){.photo-state[data-cooking-active=true] .frame-caption,.photo-state[data-upcoming-active=true][data-cooking-active=true] .frame-caption{bottom:calc(var(--cook-band-height) + 16px)}}
@media(max-width:650px){.photo-events{bottom:92px}.photo-state[data-upcoming-active=true][data-cooking-active=true] .photo-events{bottom:calc(var(--cook-band-height) + 104px)}}

/* Room-distance schedule labels: full weekday names and a wider time gutter. */
.planner-days,.planner-allday,.planner-time-grid{grid-template-columns:90px repeat(7,minmax(0,1fr))}
.planner-hours span{font-size:20px;line-height:26px;color:#f3f6fa;font-weight:600;right:10px}
.distance-planner .planner-hours span{font-size:24px;line-height:30px;color:#fff}
.planner-day>span,.distance-planner .planner-day>span{font-size:clamp(14px,1.7vw,24px);letter-spacing:0;text-transform:none;font-weight:700;color:#f1f4f8;white-space:nowrap}
.planner-days .planner-day{flex-direction:column;gap:2px;padding:6px 2px}
.planner-event span,.distance-planner .planner-event span{font-size:17px;font-weight:600;color:#fff}
.countertop[data-readability=large] .frame-time{font-size:64px}.countertop[data-readability=large] .frame-date{font-size:22px}
.countertop[data-readability=large] .photo-event>strong{font-size:48px}.countertop[data-readability=large] .photo-event time,.countertop[data-readability=large] .photo-event b{font-size:30px}
.countertop[data-readability=large] .planner-event strong{font-size:20px}.countertop[data-readability=large] .planner-event span{font-size:19px}
.connection-warning{position:absolute;right:16px;top:16px;z-index:8;max-width:300px;min-height:36px;font-size:13px;padding:5px 10px;background:#382e21e8;color:#ffe1a4;border-color:#87713f}.connection-warning[hidden]{display:none!important}
.countertop[data-mode=CAMERA_ALERT]>.connection-warning{display:none}
.morning-briefing{max-width:900px}.morning-briefing .briefing-weather{font-size:26px}.briefing-weather>strong{font-size:42px}.morning-briefing h3{font-size:26px;margin:16px 0 8px}.briefing-event{display:grid;grid-template-columns:100px 140px 1fr;gap:12px;font-size:22px;padding:10px 0;border-bottom:1px solid #405362}
@media(max-width:900px){.planner-day>span,.distance-planner .planner-day>span{font-size:18px}.briefing-event{grid-template-columns:80px 100px 1fr;font-size:19px}}

.dialog-body .morning-briefing .briefing-event{font-size:22px}.dialog-body .morning-briefing>p:not(.briefing-weather){font-size:19px}.morning-briefing .briefing-event strong{font-size:22px}.morning-briefing .briefing-event b{font-size:20px}

/* Keep large event times readable instead of wrapping into single letters. */
.timed-event>span{order:0;white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis}.timed-event>strong{order:1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.timed-event>small{order:2}.timed-event[data-overlap=true]>strong{display:block;white-space:nowrap!important;text-overflow:ellipsis}.timed-event[data-overlap=true]>small{display:none!important}
/* Voice timers stay separate from the compact cooking rail and yield to security. */
.voice-timers{position:absolute;z-index:9;top:70px;right:14px;display:grid;gap:6px;width:max-content;max-width:min(300px,40vw);max-height:40vh;overflow:auto;pointer-events:none}
.countertop[data-mode=PHOTOS] .voice-timers{top:16px}
.voice-timer{background:rgba(9,22,31,.94);border:1px solid #6e9faf;border-radius:12px;padding:10px 16px;box-shadow:0 3px 18px #0006;display:flex;gap:16px;align-items:center;justify-content:space-between;color:#f7fcff}
.voice-timer>span{font-size:17px;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.voice-timer>strong{font-size:36px;font-variant-numeric:tabular-nums;line-height:1.1;white-space:nowrap}
.cook-eta{font-size:16px;font-weight:600;margin-top:8px}.cook-eta small{font-size:11px;font-weight:400;color:var(--muted)}
.cooking-photo-strip .probe-eta{font-size:13px;line-height:1.1;font-weight:600}

/* Keep BBQ temperatures and voice countdowns visible during security video. */
.countertop{--cook-band-height:112px}
.countertop[data-mode=CAMERA_ALERT][data-cooking-active=true] .feed-header{top:10px;bottom:auto}
.lock-feedback{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);z-index:30;max-width:min(480px,90vw);background:#142d35f5;border:1px solid #79b6bc;border-radius:12px;padding:10px 16px;color:#f1faff;font-size:16px;box-shadow:0 4px 20px #0008;pointer-events:none}
.lock-feedback[data-error=true]{border-color:#ec9d83;color:#ffe3d7}
.countertop[data-mode=CAMERA_ALERT]>.lock-feedback{display:none}
.home-status-icon[data-pending=true]{box-shadow:inset 0 0 0 2px #b9e8f2;opacity:.75}

/* Stack the photo month/day beside the clock, matching its full line height. */
.frame-caption{--photo-clock-size:56px}
.frame-caption .frame-time{font-size:var(--photo-clock-size)}
.frame-caption .frame-date{display:flex;flex-direction:column;align-items:center;justify-content:center;height:var(--photo-clock-size);font-size:calc(var(--photo-clock-size) / 2);font-weight:600;line-height:1;gap:0;white-space:nowrap}
.frame-date>span{display:block}
@media(max-width:650px){.frame-caption{--photo-clock-size:48px}}
.countertop[data-readability=large] .frame-caption{--photo-clock-size:64px}
.countertop[data-readability=large] .frame-caption .frame-date{font-size:calc(var(--photo-clock-size) / 2)}

/* Portrait: stack the glance panels without inherited grid areas creating extra columns. */
@media (orientation:portrait){
 .dashboard-glance{display:flex;flex-direction:column}
}

/* On narrow portrait screens, let each day's appointments determine its height. */
@media (orientation:portrait) and (max-width:600px){
 .dashboard-glance .calendar-panel,.dashboard-glance .calendar-preview{flex:none}
 .dashboard-glance .compact-week{height:auto}
 .dashboard-glance .compact-week .week-grid{height:auto;overflow:visible}
 .dashboard-glance .compact-week .week-day{flex:none}
 .dashboard-glance .compact-week .calendar-agenda{max-height:none;overflow:visible}
}

/* Family photo reminders: show every current/upcoming event, including simultaneous starts. */
.photo-events:not([data-count="1"]){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;width:680px;max-width:calc(100% - var(--photo-reminder-left,310px) - 88px);gap:10px 16px}
.photo-events:not([data-count="1"]) .photo-event{padding-left:9px;gap:4px}
.photo-events:not([data-count="1"]) .photo-event>span{gap:3px 8px}
.photo-events:not([data-count="1"]) .photo-event b,.photo-events:not([data-count="1"]) .photo-event time{font-size:clamp(14px,1.8vw,22px);line-height:1.25}
.photo-events:not([data-count="1"]) .photo-event>strong{font-size:clamp(22px,2.8vw,34px);-webkit-line-clamp:3;line-height:1.25}
@media(max-width:650px){.photo-events:not([data-count="1"]){width:calc(100% - 24px);max-width:calc(100% - 24px);gap:10px}.photo-events,.photo-state[data-upcoming-active=true][data-cooking-active=true] .photo-events{bottom:var(--photo-reminder-bottom,160px)}}

/* Landscape reminders share the clock's lower edge, clearing active cooking probes. */
@media (orientation:landscape){
 .photo-events{bottom:4px}
 .photo-state[data-upcoming-active=true][data-cooking-active=true] .photo-events{bottom:calc(var(--cook-band-height) + 28px)}
}
@media (orientation:landscape) and (max-width:900px){
 .photo-state[data-upcoming-active=true][data-cooking-active=true] .photo-events{bottom:calc(var(--cook-band-height) + 16px)}
}

/* Additional rows only when pinned feeds plus activity exceed four cameras. */
.security-state .security-feeds[data-count="5"],.security-state .security-feeds[data-count="6"]{grid-template-rows:repeat(3,minmax(0,1fr))}
.security-state .security-feeds[data-count="7"]{grid-template-rows:repeat(4,minmax(0,1fr))}

/* Reveal the decoded next photo as the schedule or map fades away. */
dialog.photo-interlude-leaving::backdrop{background:transparent;transition:background 450ms ease-in-out}

.tablet-music-settings{margin-top:1.5rem;padding-top:1rem;border-top:1px solid #ffffff24}.tablet-music-settings h3{margin:0 0 .5rem}.music-buttons{display:flex;flex-wrap:wrap;gap:.65rem;align-items:center}.music-buttons a{color:#efdaa3}.music-status{color:#efdaa3}

/* Larger individual voice timers; dragging never changes the underlying display. */
.voice-timers{position:fixed;inset:auto;left:0;top:0;right:auto;bottom:auto;display:block;width:100vw;height:100dvh;max-width:none;max-height:none;overflow:visible;pointer-events:none}
.voice-timers .voice-timer{position:absolute;left:0;top:0;display:block;width:400px;max-width:100%;padding:10px 16px 16px;border-radius:16px;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;container-type:inline-size}
.voice-timer-heading{display:flex;align-items:center;gap:4px;margin-bottom:4px}
.voice-timer-heading .voice-timer-move{flex:1;min-width:0;min-height:44px;padding:0 2px;border:0;border-radius:8px;background:transparent;justify-content:flex-start;cursor:grab;touch-action:none;color:#d3e4eb}
.voice-timer-move svg{flex:none;opacity:.65}
.voice-timer-move .voice-timer-name{font-size:clamp(12px,5.4cqw,21px);min-width:0;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.voice-timer-heading .voice-timer-reset{flex:none;width:44px;height:44px;min-width:44px;min-height:44px;padding:8px;border:0;border-radius:10px;background:transparent;color:#a6b7bc}
.voice-timers .voice-timer>strong{display:block;font-size:clamp(18px,19cqw,72px);line-height:1.08;letter-spacing:-.02em;text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}
.voice-timer[data-paused=true]>strong{color:#a6b7bc}
.voice-timer[data-dragging=true]{z-index:1;cursor:grabbing;border-color:#efdaa3;box-shadow:0 8px 28px #0009}
.voice-timer[data-dragging=true] .voice-timer-move{cursor:grabbing}

/* Fit countdown glyphs to their own card instead of leaving a small fixed-size clock. */
.voice-timers .voice-timer{padding:6px 12px 10px}
.voice-timer-heading{margin-bottom:2px}
.voice-timers .voice-timer>strong{line-height:.94;letter-spacing:-.02em}

.voice-timer-heading{position:relative;z-index:1}
.voice-timers .voice-timer>strong{pointer-events:none}

/* Keep the Family Hub shortcut on the existing portrait navigation row. */
@media(max-width:900px){.rail nav,.countertop[data-concept=studio] .rail nav{grid-template-columns:repeat(5,minmax(0,1fr))}}

/* The dashboard glance card lists every appointment for the current local day. */
.calendar-today{display:flex;flex-direction:column;gap:8px;height:100%;min-height:0;min-width:0}
.today-date{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex:none;color:var(--muted)}
.today-date h3{margin:0;font-size:13px;font-weight:500;line-height:1.4}
.today-date>span{font-size:11px;white-space:nowrap}
.today-agenda{display:flex;flex-direction:column;gap:8px;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;touch-action:pan-y}
.today-agenda article{flex:none;display:flex;flex-direction:column;gap:3px;padding:8px 10px;background:#ffffff06;border-radius:7px;border-left:4px solid var(--event-color);overflow-wrap:anywhere}
.today-agenda article strong{font-size:16px;line-height:1.3;font-weight:600}
.today-event-time,.today-agenda article small{font-size:12px;line-height:1.35;color:var(--muted)}
.today-empty{padding:12px 0;color:var(--muted);font-size:14px}

/* Zoom-aware city labels: names stay readable while weather dots remain uncovered. */
.airport-city-label button{overflow:hidden;text-overflow:ellipsis}
.airport-city-label.city-label-missing button{min-height:36px;font-weight:600;border-color:#62737d;background:#142028eb;color:#c8d4d9}

/* Map shortcuts and observation details stay separate from geographic weather dots. */
.map-quicknav{position:absolute;z-index:1090;top:78px;left:72px;right:16px;display:flex;flex-wrap:wrap;gap:6px;width:max-content;max-width:calc(100% - 88px)}
.map-quicknav button{min-height:48px;min-width:48px;padding:8px 12px;font-size:13px;background:#14242bf0;color:#eaf2eb;border:1px solid #60716e;border-radius:10px}
#map-prairie-view{border-color:#bfcaac;color:#ecedcb}
.airport-city-label button{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:4px}
.airport-label-title{display:flex;align-items:center;gap:10px;min-width:0;line-height:1.25}
.airport-label-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.airport-report-age{flex:none;font-size:11px;font-weight:600;line-height:1.3;color:#c2d2dc}
.airport-report-age[data-stale=true]{color:#f0bd83}
.airport-label-wind{display:flex;align-items:center;gap:6px;min-width:0;font-size:12px;font-weight:500;line-height:1.3;color:#e3ecf0}
.airport-label-wind>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.airport-wind-arrow{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:600px){.map-quicknav{top:132px;left:12px;right:12px;max-width:calc(100% - 24px);gap:5px}.map-quicknav button{font-size:12px;padding:8px}}

/* Map shortcuts form two rows on smaller displays. */
@media(max-width:900px){.map-quicknav{display:grid;grid-template-columns:repeat(4,max-content)}}

/* Compact airport-code favourites with current observations. */
.map-quicknav button{width:100px;min-height:72px;padding:6px 8px;display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:3px}
.favourite-heading{display:flex;align-items:center;justify-content:center;gap:5px;min-width:0}
.favourite-code{font-size:14px;font-weight:700;letter-spacing:.03em}
.favourite-category{width:9px;height:9px;flex:none;border-radius:50%;border:1px solid #d4dfe4;background:#858c95}
.favourite-category[data-category=VFR]{background:#35df79}.favourite-category[data-category=MVFR]{background:#4ba5ff}.favourite-category[data-category=IFR]{background:#ff6268}.favourite-category[data-category=LIFR]{background:#e574ff}.favourite-category[data-category=missing]{background:#080d10}
.favourite-wind{font-size:11px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.favourite-note{font-size:10px;line-height:1.3;color:#bdcdd4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.favourite-changed{color:#f3d99e;font-weight:700}
.airport-label-data{display:flex;align-items:center;gap:6px;min-width:0;font-size:12px;font-weight:500;line-height:1.3;color:#e3ecf0}
.airport-data-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.airport-wx-symbols{display:inline-flex;flex:none;gap:3px;font-size:17px;line-height:20px}
.airport-category-change{font-size:11px;font-weight:600;line-height:1.25;color:#f3d99e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.leaflet-weather-map .airport-dot.category-changed{stroke:#f3d99e;stroke-width:4;stroke-dasharray:4 3}
#map-data-toggle[aria-pressed=true]{background:#315950;border-color:#c8dfc9}
.map-search{position:absolute;z-index:1250;top:16px;right:16px;width:min(440px,calc(100% - 32px));max-height:calc(100dvh - 32px);display:flex;flex-direction:column;gap:10px;padding:14px;border:1px solid #71878d;border-radius:14px;background:#14222bf7;color:#edf4f3;box-shadow:0 12px 40px #0007}
.map-search header{display:flex;align-items:center;gap:12px;justify-content:space-between}.map-search h3{font-size:17px;margin:0}.map-search header button{width:48px;min-height:48px;padding:10px}
.map-search input{min-height:48px;width:100%;padding:10px 12px;border:1px solid #8ca4ad;border-radius:9px;background:#20323d;color:#f3f7f5;font-size:16px}
#map-search-status{font-size:12px;line-height:1.4;color:#c4d4da}
#map-airport-results{list-style:none;padding:0;margin:0;overflow-y:auto;overscroll-behavior:contain;min-height:0}
#map-airport-results button{width:100%;min-height:58px;margin:0 0 6px;display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:4px;padding:9px 12px;background:#223540;border-color:#4d6570;border-radius:9px}
#map-airport-results strong{font-size:14px;line-height:1.3}#map-airport-results span{font-size:12px;line-height:1.3;color:#bfd1db}
@media(max-width:900px){.weather-dialog .dialog-heading{left:auto;right:16px;width:48px}.weather-dialog .dialog-heading h2{display:none}.map-floating-controls{left:72px;right:76px;max-width:none;justify-content:flex-end}}
@media(max-width:740px){.map-quicknav{top:132px}}
@media(max-width:600px){.map-quicknav button{width:84px;padding:6px}.favourite-code{font-size:13px}.map-search{inset:12px;width:auto;max-height:calc(100dvh - 24px)}}

.airport-wx-symbols>span{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center}.airport-wx-symbols svg{width:20px;height:20px;display:block}

/* Today keeps completed appointments while making current plans easy to spot. */
.calendar-today .today-date{min-height:48px;flex:none;align-items:center;gap:8px}.today-date>div{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;min-width:0;flex:1}.today-date .agenda-day-toggle{min-height:48px;min-width:64px;padding:5px 8px;font-size:11px;flex:none}.today-agenda article[data-phase=finished]{opacity:.52}.today-agenda article[data-phase=now]{background:#bad8be16;box-shadow:inset 0 0 0 1px #bad8be66}.today-agenda article[data-phase=next]{background:#efdaa30c}.today-agenda article small{display:flex;justify-content:space-between;gap:8px}.agenda-phase{font-size:10px;font-weight:600;color:#efdaa3}.today-agenda article[data-phase=finished] .agenda-phase{color:inherit}

/* Kitchen tools and controls on the existing movable timers. */
.kitchen-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}.kitchen-tabs [aria-pressed=true]{background:var(--accent);color:var(--on-accent)}.timer-presets{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.timer-presets button{min-width:88px}.timer-tools h3{margin:0 0 8px}.timer-tools p{font-size:14px}.timer-preset-status{margin-top:12px}.voice-timer-actions{display:flex;gap:8px;pointer-events:auto;margin-top:4px}.voice-timer-actions button{flex:1;min-height:48px;padding:6px 12px;font-size:14px}.voice-timer .timer-action-status{margin:5px 0 0;font-size:12px;line-height:1.3;max-width:100%;pointer-events:none}.voice-timer button:disabled{opacity:.55}
@media(max-width:900px){.rail{grid-template-columns:repeat(7,minmax(0,1fr))}.rail nav{display:contents}.rail button{min-width:0}}

/* Music controls follow playback without changing the landscape grid. */
.now-playing{position:fixed;z-index:1900;left:76px;right:12px;bottom:12px;min-height:64px;padding:8px 12px;display:flex;align-items:center;gap:10px;border:1px solid #60716e;border-radius:14px;background:#1b2931f7;color:#edf2f1;font-family:Jakarta,Segoe UI,Roboto,sans-serif;box-shadow:0 6px 25px #0006}.now-playing-track{flex:1;min-width:70px}.now-playing-track strong,.now-playing-track small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-playing-track strong{font-size:16px}.now-playing-track small{font-size:12px;color:#a6b7bc}.now-playing button{min-height:48px;padding:7px 12px;background:#22343b;color:#edf2f1;border:1px solid #60716e;border-radius:10px}.music-bar-volume{display:flex;flex-direction:column;font-size:10px;color:#a6b7bc;width:120px;flex:none}.music-bar-volume input{height:36px;width:100%;margin:0;accent-color:#bad8be}.music-bar-feedback:empty{display:none}.music-bar-feedback{font-size:12px;max-width:160px}.countertop[data-music-active=true] .dashboard-content{padding-bottom:90px}
@media(max-width:900px){.now-playing{left:12px;bottom:88px}.music-bar-volume{width:90px}}
@media(max-width:600px){.now-playing{flex-wrap:wrap;gap:6px;padding:8px;bottom:90px}.now-playing-track{flex-basis:100%}.music-bar-volume{flex:1}.now-playing-track strong{font-size:14px}}
/* Wider tablets also get a deliberate portrait layout; landscape is unchanged. */
@media(orientation:portrait){
 .countertop[data-concept] .dashboard-primary{height:auto;min-height:0;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto;grid-template-areas:'header' 'cameras' 'glance';gap:12px}
 .dashboard-primary .camera-strip{height:auto;min-height:0;flex:none}.dashboard-primary .camera-strip-title{height:auto;min-height:48px;flex-wrap:wrap;gap:6px 12px}.dashboard-primary .camera-thumbnails{flex:none;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto auto;min-height:0}
 .dashboard-primary .dashboard-camera{aspect-ratio:16/9;min-height:0;height:auto}.dashboard-glance{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;min-width:0}.dashboard-glance .calendar-panel{height:clamp(260px,30dvh,360px);min-height:0}.dashboard-glance .calendar-preview{min-height:0}.dashboard-glance .energy-panel{height:250px;min-height:0}.dashboard-primary .calendar-panel .panel-heading{height:auto;min-height:48px}
 .dashboard-primary .home-header{flex-wrap:wrap}.dashboard-secondary{margin-top:8px}
}

#camera-pin-status{font-size:16px;color:#efdaa3;padding:8px 12px;border:1px solid #efdaa3;border-radius:10px;background:#efdaa312}#return-note{font-size:15px;font-variant-numeric:tabular-nums}#return-note[data-pinned=true]{color:#efdaa3;font-weight:700}

.shared-lists h3{margin:0 0 8px}.shared-lists>p{font-size:13px;color:var(--muted);margin-bottom:14px}.shared-list-choices{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.shared-list-choices button{min-height:48px;padding:8px 12px;font-size:13px}.shared-list-choices [aria-pressed=true]{background:var(--accent);color:var(--on-accent)}.shared-list-card{min-height:130px}.shared-list-card hui-todo-list-card{display:block;color-scheme:dark}

.forecast-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.forecast-heading h3{margin:0}.forecast-heading button{font-size:13px}.weather-current{display:grid;gap:3px;margin:12px 0 18px}.weather-current>strong{font-size:40px;font-weight:500}.weather-current>small{color:var(--muted)}.household-weather h4{margin:18px 0 8px;font-size:14px;font-weight:600}.household-forecast{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.household-forecast article{padding:12px;border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;gap:5px;min-width:0}.household-forecast time,.household-forecast small{font-size:12px;color:var(--muted)}.household-forecast strong{font-size:21px}.household-forecast span{font-size:13px}.forecast-source{font-size:11px;color:var(--muted);margin-top:16px}

.mining-panel .miner-standby{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-top:14px}.miner-standby>div{min-width:0}.miner-standby strong{font-size:22px;font-weight:500}.miner-standby p{font-size:13px;color:var(--muted);margin-top:5px}.miner-standby button{flex:none;font-size:13px}.mining-panel[data-level=bad]{border-color:#ef8888}

/* Keep the photo clock, family reminders and cooking strip above active music. */
.countertop[data-music-active=true] .frame-caption,.countertop[data-music-active=true] .photo-events{bottom:var(--music-bottom-offset,100px)}.countertop[data-music-active=true] .cooking-photo-strip{bottom:var(--music-bottom-offset,100px)}.countertop[data-music-active=true] .photo-state[data-cooking-active=true] .photo-events{bottom:calc(var(--music-bottom-offset,100px) + var(--cook-band-height,0px) + 28px)}
@media(orientation:portrait){.dashboard-glance>.calendar-panel,.dashboard-glance>.energy-panel{grid-area:auto;grid-column:1;min-width:0;width:100%}}
@media(max-width:900px){.countertop[data-concept] .rail{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;padding:8px;height:76px;align-items:stretch}.countertop[data-concept] .rail .brand{display:none}.countertop[data-concept] .rail nav{display:contents}.countertop[data-concept] .rail button,.countertop[data-concept] .rail .rail-settings{display:flex;min-width:44px;width:100%;min-height:58px;margin:0;padding:4px 0;font-size:9px}}

/* Regina forecast: large condition photographs and distance-readable values. */
.forecast-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
dialog.weekly-weather-dialog[open]{position:fixed;inset:0;margin:0;width:100vw;height:100dvh;max-width:none;max-height:none;padding:14px 24px 10px;border:0;border-radius:0;background:#101b22;color:#f4f7f6;display:flex;flex-direction:column;gap:6px;overflow:hidden}
.weekly-weather-dialog .dialog-heading{flex:none;margin:0;gap:12px;align-items:center}
.weekly-weather-dialog .dialog-heading h2{font-size:clamp(25px,2.8vw,36px);font-weight:600;letter-spacing:-.5px}
.weekly-weather-dialog .dialog-heading button{width:48px;height:48px;padding:10px;flex:none}
.weekly-weather-dialog .dialog-body{flex:1;min-height:0;display:flex;overflow:auto}
.weekly-weather-dialog .dialog-body p{margin:0}
.regina-week{display:flex;flex-direction:column;gap:8px;min-height:0;width:100%}
.week-forecast-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none}
.regina-week .week-forecast-status{font-size:14px;color:#c1cfd2}
.regina-week .week-forecast-status[data-warning=true]{color:#efdaa3}
.week-forecast-refresh{min-height:44px;padding:6px 14px;font-size:16px;flex:none}
.weather-halves{display:grid;grid-template-rows:minmax(0,1fr) minmax(0,1fr);gap:16px;min-height:0;flex:1}
.today-weather,.weekly-weather{display:flex;flex-direction:column;min-height:0;gap:8px}
.weather-section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex:none}
.weather-section-heading h3{font-size:clamp(23px,2vw,34px);font-weight:600;margin:0}
.weather-section-heading p{font-size:clamp(15px,1.35vw,22px);color:#c1cfd2}
.today-weather-main{display:grid;grid-template-columns:minmax(330px,.95fr) 1.45fr;align-items:stretch;gap:22px;flex:1;min-height:0}
.today-weather-current{position:relative;isolation:isolate;overflow:hidden;border-radius:14px;padding:16px 20px;display:flex;flex-direction:column;justify-content:center;gap:5px;background:#24363e;min-width:0;min-height:0;text-shadow:0 2px 8px #000b}
.forecast-photo{display:block;width:100%;height:100%;object-fit:cover;object-position:center;position:absolute;inset:0;pointer-events:none}
.today-weather-current::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#08121cd9,#08121c54),linear-gradient(0deg,#08121caa,transparent 75%);z-index:0}
.today-weather-current>:not(.forecast-photo){position:relative;z-index:1}
.today-weather-reading{display:flex;align-items:center;gap:14px;line-height:1}
.today-weather-reading>strong{font-size:clamp(72px,7vw,112px);font-weight:600;line-height:1;letter-spacing:-3px}
.today-weather-icon{display:none;color:#efdaa3}
.today-weather-current[data-has-photo=false] .today-weather-icon{display:inline-flex}
.today-weather-icon svg{width:48px;height:48px}
.regina-week .today-weather-condition{color:#f4f7f6;font-size:clamp(24px,2.1vw,32px);font-weight:600;line-height:1.12}
.regina-week .today-weather-feels{font-size:20px;color:#f4f7f6;line-height:1.3}
.today-weather-feels span{display:inline-block;margin-left:10px}
.today-weather-observed{font-size:12px;color:#e2eaed;line-height:1.25}
.today-weather-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-self:center;gap:18px 16px;margin:0}
.today-weather-metric{border-left:2px solid #445b64;padding-left:12px;min-width:0}
.today-weather-metric dt{font-size:16px;color:#c1cfd2;line-height:1.2;margin-bottom:3px}
.today-weather-metric dd{font-size:clamp(24px,2.3vw,32px);font-weight:600;line-height:1.2;margin:0}
.today-weather-metric small{display:block;font-size:14px;line-height:1.25;color:#c1cfd2;margin-top:3px}
.today-weather-hours{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;flex:none;border-top:1px solid #445b64;padding-top:8px}
.today-weather-hour{display:grid;grid-template-columns:auto auto;align-items:center;justify-content:center;gap:2px 8px}
.today-weather-hour time{font-size:15px;color:#c1cfd2}
.today-weather-hour span svg{display:block;width:28px;height:28px}
.today-weather-hour strong{font-size:25px;font-weight:600;line-height:1.15}
.today-weather-hour small{font-size:13px;color:#c1cfd2;white-space:nowrap}
.today-weather-hours>p{grid-column:1/-1;font-size:16px;color:#c1cfd2}
.week-forecast-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;flex:1;min-height:0}
.week-forecast-day{position:relative;padding:0 8px 9px;display:flex;flex-direction:column;align-items:stretch;text-align:center;gap:4px;min-width:0;min-height:0;border:1px solid #445b64;border-radius:12px;overflow:hidden;background:#1b2931}
.week-forecast-day[data-today=true]{border:2px solid #bad8be;background:#21332f}
.week-day-date{position:absolute;top:7px;left:8px;right:8px;z-index:2;color:#fff;text-shadow:0 2px 7px #000c}
.week-day-date strong,.week-day-date time{display:block;line-height:1.15}
.week-day-date strong{font-size:clamp(22px,2vw,32px);font-weight:700}
.week-day-date time{font-size:clamp(14px,1.25vw,20px);margin-top:2px}
.week-weather-icon{position:relative;isolation:isolate;flex:1;min-height:76px;margin:0 -8px 2px;color:#bad8be;display:grid;place-items:center;background:#263b44}
.week-weather-icon::after{content:'';position:absolute;inset:0;background:linear-gradient(#07121cd9,transparent 80%);pointer-events:none}
.week-weather-icon svg{width:52px;height:52px;margin-top:45px}
.regina-week .week-condition{font-size:clamp(16px,1.5vw,24px);line-height:1.08;min-height:2.16em;display:flex;align-items:center;justify-content:center;color:#f4f7f6}
.week-temperatures{display:flex;align-items:baseline;justify-content:center;gap:9px;line-height:1.05;flex:none}
.week-temperatures strong{font-size:clamp(36px,3.4vw,48px);font-weight:700}
.week-temperatures span{font-size:clamp(25px,2.4vw,32px);color:#c1cfd2}
.week-day-details{display:flex;flex-direction:column;gap:2px;font-size:clamp(14px,1.25vw,20px);line-height:1.2;color:#c1cfd2;flex:none}
.week-chance{font-size:clamp(16px,1.4vw,24px);color:#f4f7f6}
.week-amounts{font-size:clamp(11px,.95vw,16px)}
.week-forecast-credit{font-size:12px;line-height:1.2;color:#c1cfd2;flex:none;text-align:center}
.week-forecast-credit a{color:#c1cfd2}
.week-forecast-day[data-wide-temperatures=true] .week-temperatures{gap:4px}
.week-forecast-day[data-wide-temperatures=true] .week-temperatures strong{font-size:clamp(31px,3.1vw,48px)}
.week-forecast-day[data-wide-temperatures=true] .week-temperatures span{font-size:clamp(21px,2vw,30px)}
.week-weather-icon svg{display:none}
@media(orientation:landscape) and (max-height:680px){
 dialog.weekly-weather-dialog[open]{padding:6px 16px;gap:2px}.weekly-weather-dialog .dialog-heading h2{font-size:26px}.weekly-weather-dialog .dialog-heading button{height:44px;width:44px}.regina-week{gap:5px}.week-forecast-heading{min-height:32px}.week-forecast-refresh{min-height:32px;font-size:14px;padding:4px 12px}.regina-week .week-forecast-status{font-size:12px}.weather-halves{gap:10px}.today-weather,.weekly-weather{gap:5px}.weather-section-heading h3{font-size:21px}.weather-section-heading p{font-size:15px}.today-weather-main{grid-template-columns:minmax(300px,.95fr) 1.45fr;gap:18px}.today-weather-current{padding:10px 14px;gap:3px}.today-weather-reading>strong{font-size:66px}.regina-week .today-weather-condition{font-size:22px}.regina-week .today-weather-feels{font-size:16px}.today-weather-observed{font-size:10px}.today-weather-metrics{gap:8px 12px}.today-weather-metric{padding-left:10px}.today-weather-metric dt{font-size:14px;margin-bottom:2px}.today-weather-metric dd{font-size:24px}.today-weather-metric small{font-size:12px}.today-weather-hours{gap:5px;padding-top:5px}.today-weather-hour{gap:1px 5px}.today-weather-hour time{font-size:13px}.today-weather-hour strong{font-size:21px}.today-weather-hour small{font-size:11px}.today-weather-hour span svg{width:24px;height:24px}.week-forecast-grid{gap:8px}.week-forecast-day{padding:0 6px 6px;gap:3px}.week-day-date{top:5px;left:5px;right:5px}.week-day-date strong{font-size:22px}.week-day-date time{font-size:14px}.week-weather-icon{margin:0 -6px;min-height:62px}.regina-week .week-condition{font-size:16px}.week-temperatures strong{font-size:35px}.week-temperatures span{font-size:25px}.week-day-details{font-size:14px;gap:1px}.week-chance{font-size:16px}.week-amounts{display:none}.week-forecast-credit{font-size:10px}
}
@media(orientation:portrait){
 .week-forecast-day[data-wide-temperatures=true] .week-temperatures strong{font-size:35px}.week-forecast-day[data-wide-temperatures=true] .week-temperatures span{font-size:25px}
 dialog.weekly-weather-dialog[open]{padding:12px 18px 10px}.weather-halves{gap:18px}.today-weather-main{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(160px,1fr) auto;gap:16px}.today-weather-current{padding:16px 24px}.today-weather-reading>strong{font-size:96px}.regina-week .today-weather-condition{font-size:28px}.regina-week .today-weather-feels{font-size:22px}.today-weather-metrics{gap:16px 14px}.today-weather-metric dd{font-size:28px}.today-weather-hours{gap:6px}.today-weather-hour{gap:2px 4px}.today-weather-hour time{font-size:14px}.today-weather-hour small{font-size:12px}.today-weather-hour strong{font-size:24px}.week-forecast-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:9px}.week-forecast-day{padding:0 6px 7px;gap:3px}.week-day-date strong{font-size:25px}.week-day-date time{font-size:15px}.week-weather-icon{margin:0 -6px;min-height:74px}.regina-week .week-condition{font-size:18px}.week-temperatures strong{font-size:39px}.week-temperatures span{font-size:27px}.week-day-details{font-size:15px}.week-chance{font-size:17px}.week-amounts{font-size:11px}
}
@media(orientation:portrait) and (max-width:600px){
 .week-forecast-day[data-wide-temperatures=true] .week-temperatures strong{font-size:39px}.week-forecast-day[data-wide-temperatures=true] .week-temperatures span{font-size:26px}
 dialog.weekly-weather-dialog[open]{padding:8px 12px}.weekly-weather-dialog .dialog-heading h2{font-size:24px}.weekly-weather-dialog .dialog-body{display:block}.regina-week{min-height:100%;height:auto;gap:12px;padding-bottom:12px}.week-forecast-heading{align-items:flex-start}.regina-week .week-forecast-status{font-size:12px;max-width:230px}.week-forecast-refresh{font-size:14px}.weather-halves{display:flex;flex-direction:column;gap:22px;flex:none}.today-weather,.weekly-weather{min-height:initial;gap:10px}.weather-section-heading h3{font-size:23px}.weather-section-heading p{font-size:14px}.today-weather-main{display:flex;flex-direction:column;gap:16px;flex:none}.today-weather-current{min-height:230px;padding:18px}.today-weather-reading>strong{font-size:84px}.regina-week .today-weather-condition{font-size:25px}.regina-week .today-weather-feels{font-size:19px}.today-weather-feels span{display:block;margin:3px 0 0}.today-weather-observed{font-size:12px}.today-weather-metrics{width:100%;gap:16px 10px}.today-weather-metric{padding-left:8px}.today-weather-metric dt{font-size:14px;margin-bottom:2px}.today-weather-metric dd{font-size:21px}.today-weather-metric small{font-size:12px}.today-weather-hours{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.today-weather-hour time{font-size:15px}.today-weather-hour strong{font-size:24px}.today-weather-hour small{font-size:13px}.week-forecast-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;grid-auto-rows:290px;gap:10px;flex:none}.week-forecast-day{padding:0 8px 10px;gap:5px}.week-day-date strong{font-size:27px}.week-day-date time{font-size:17px}.week-weather-icon{margin:0 -8px;min-height:96px}.regina-week .week-condition{font-size:20px}.week-temperatures strong{font-size:43px}.week-temperatures span{font-size:29px}.week-day-details{font-size:17px}.week-chance{font-size:19px}.week-amounts{font-size:13px}.week-forecast-credit{font-size:12px}
}

/* Compact system health control; existing calendar and camera geometry is retained. */
.system-health-chip[data-level="warning"],.system-health-chip[data-level="critical"]{color:#efdaa3;border-color:#efdaa366}
.system-health-chip[data-level="unknown"]{color:#b9c7c9}
.system-health-details{display:grid;gap:14px;overflow-wrap:anywhere}
.system-health-details dl{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0}
.system-health-details dd{margin:0;text-align:right}
.system-health-details article{padding:12px;border:1px solid #efdaa344;border-radius:12px;background:#efdaa309}
.system-health-details article p{margin:8px 0 0}

/* METAR stays clear until its map controls are needed. */
.weather-dialog .map-controls-launcher{position:absolute;z-index:1100;top:16px;right:80px}
.weather-dialog .map-controls-launcher button{display:flex;align-items:center;gap:8px;min-height:48px;padding:10px 14px;border:1px solid #60716e;border-radius:12px;background:#14242be8;color:#eaf2eb;font-size:14px}
.weather-dialog .map-controls-launcher .icon{width:21px;height:21px}
.weather-dialog:has(#dialog-close[hidden]) .map-controls-launcher{right:16px}
.weather-dialog .map-controls-panel{position:absolute;z-index:1200;inset:0 0 0 auto;width:360px;max-width:calc(100% - 24px);box-sizing:border-box;padding:16px;display:flex;flex-direction:column;gap:20px;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;border-left:1px solid #60716e;background:#14242b;color:#eaf2eb;box-shadow:-8px 0 28px #0006;transform:translateX(102%);visibility:hidden;transition:transform .2s ease,visibility 0s .2s}
.weather-dialog .map-controls-panel[data-open=true]{transform:translateX(0);visibility:visible;transition:transform .2s ease}
.weather-dialog .map-controls-panel>header{position:sticky;top:-16px;z-index:1;flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-16px -16px 0;padding:16px;background:#14242b;border-bottom:1px solid #60716e66}
.weather-dialog .map-controls-panel h3{font-size:20px;line-height:1.3;margin:0}
.weather-dialog .map-controls-panel #map-controls-close{width:48px;min-height:48px;padding:10px}
.weather-dialog .map-control-group{flex:none;min-width:0}
.weather-dialog .map-control-group h4{font-size:15px;line-height:1.3;margin:0 0 10px;font-weight:600;color:#c4d4cf}
.weather-dialog .map-controls-panel button,.weather-dialog .map-controls-panel select,.weather-dialog .map-controls-panel summary{min-height:48px;border:1px solid #60716e;border-radius:10px;background:#1b2b33;color:#eaf2eb;font-size:14px}
.weather-dialog .map-controls-panel button{padding:10px}
.weather-dialog .map-controls-panel button:disabled{opacity:.5;cursor:default}
.weather-dialog .map-controls-panel :is(button,select,input,summary):focus-visible,.weather-dialog #map-controls-toggle:focus-visible{outline:2px solid #eaf2eb;outline-offset:3px}
.weather-dialog .map-controls-panel .map-quicknav{position:static;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;max-width:none;gap:6px}
.weather-dialog .map-controls-panel .map-quicknav button{width:auto;min-width:0;min-height:72px;padding:6px}
.weather-dialog .map-controls-panel #map-prairie-view{grid-column:1/-1;min-height:48px;border-color:#bfcaac;color:#ecedcb}
.weather-dialog .map-radar-actions,.weather-dialog .map-tool-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.weather-dialog .map-tool-actions #map-data-toggle{grid-column:1/-1}
.weather-dialog .map-controls-panel #radar-controls{position:static;display:grid;grid-template-columns:minmax(0,1fr);width:100%;max-width:none;max-height:none;margin-top:8px;padding:10px;background:#1b2b33;box-shadow:none;overflow:visible;gap:8px}
.weather-dialog .map-controls-panel #radar-controls label{gap:10px;min-height:48px;font-size:13px}
.weather-dialog .map-controls-panel #radar-controls input{min-width:0;flex:1}
.weather-dialog .map-controls-panel #radar-time{font-size:12px;line-height:1.4}
.weather-dialog .map-controls-panel #radar-controls .radar-key summary{min-height:48px;padding:8px;font-size:13px}
.weather-dialog .map-controls-panel #radar-controls .radar-key img{max-height:240px}
.weather-dialog .map-controls-panel #radar-toggle[aria-pressed=true],.weather-dialog .map-controls-panel #radar-play[aria-pressed=true]{background:#316958}
.weather-dialog .map-controls-panel .map-options{display:block;margin-top:8px}
.weather-dialog .map-controls-panel .map-options[open]{width:auto;background:transparent;padding:0}
.weather-dialog .map-controls-panel .map-options summary,.weather-dialog .map-information summary{padding:10px;display:flex;align-items:center;cursor:pointer}
.weather-dialog .map-controls-panel .map-toolbar{display:grid;gap:12px;padding:0;margin:12px 0 0}
.weather-dialog .map-controls-panel .map-toolbar label{display:grid;gap:6px;font-size:13px}
.weather-dialog .map-controls-panel .map-toolbar select{width:100%;padding:8px;font-size:14px}
.weather-dialog .map-information{flex:none;font-size:12px;line-height:1.5}
.weather-dialog .map-information p{margin:10px 0 0;color:#c4d4cf}
.weather-dialog .map-radar-summary{font-size:12px;line-height:1.4;margin:3px 0 0;color:#eaf2eb}
.weather-dialog .map-radar-summary[data-state=error],.weather-dialog .map-radar-summary[data-state=stale]{color:#efdaa3}
@media(prefers-reduced-motion:reduce){.weather-dialog .map-controls-panel,.weather-dialog .map-controls-panel[data-open=true]{transition:none}}

/* The six requested airports are primary; secondary map tools stay in the drawer. */
.weather-dialog .map-quicknav{position:absolute;z-index:1090;top:80px;left:72px;right:16px;bottom:auto;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;width:auto;max-width:none;padding:0;background:none;overflow:visible}
.weather-dialog .map-quicknav button{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;width:100%;max-width:none;justify-self:stretch;min-width:0;min-height:88px;padding:9px 12px;text-align:left;border:1px solid #60716e;border-radius:12px;background:#14242bf2;color:#eaf2eb;box-shadow:0 2px 8px #0004}
.weather-dialog .map-quicknav .favourite-heading{display:flex;align-items:center;gap:8px}
.weather-dialog .map-quicknav .favourite-code{font-size:22px;line-height:1.1;font-weight:650}
.weather-dialog .map-quicknav .favourite-name{font-size:14px;line-height:1.2;color:#eaf2eb;white-space:nowrap}
.weather-dialog .map-quicknav .favourite-wind{font-size:12px;line-height:1.2;color:#c4d4cf;white-space:nowrap}
.weather-dialog .map-quicknav .favourite-note{display:none}
.weather-dialog .map-quicknav button:focus-visible{outline:2px solid #eaf2eb;outline-offset:2px}
.weather-dialog .map-quicknav button[aria-pressed=true]{border-color:#eaf2eb;background:#285447}
.weather-dialog .map-controls-panel #map-prairie-view{grid-column:1/-1;border-color:#bfcaac;color:#ecedcb}
@media(max-width:900px){.weather-dialog .map-quicknav{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;overflow-y:hidden;padding:2px 2px 8px;scrollbar-width:thin;scrollbar-color:#60716e #14242b;overscroll-behavior-x:contain;touch-action:pan-x;scroll-snap-type:x proximity}.weather-dialog .map-quicknav button{flex:0 0 136px;scroll-snap-align:start;min-height:88px;box-sizing:border-box}}
@media(max-width:500px){.weather-dialog .dialog-heading h2{max-width:120px;font-size:13px;padding:10px}.weather-dialog .map-controls-launcher button{font-size:13px;padding:10px}.weather-dialog .map-controls-launcher .icon{display:none}.weather-dialog .map-quicknav{left:72px;right:10px}}

/* Favourite airports stay behind one edge arrow until requested. */
.weather-dialog .map-favourites-launcher{position:absolute;z-index:1100;left:0;top:50%;transform:translateY(-50%)}
.weather-dialog #map-favourites-toggle{display:flex;align-items:center;justify-content:center;width:48px;min-height:64px;padding:12px;border:1px solid #60716e;border-left:0;border-radius:0 14px 14px 0;background:#14242be8;color:#eaf2eb}
.weather-dialog #map-favourites-toggle .icon{width:24px;height:24px}
.weather-dialog #map-favourites-toggle:focus-visible,.weather-dialog .map-favourites-panel button:focus-visible{outline:2px solid #eaf2eb;outline-offset:2px}
.weather-dialog .map-favourites-panel{position:absolute;z-index:1200;inset:0 auto 0 0;width:320px;max-width:calc(100% - 48px);box-sizing:border-box;padding:16px;display:flex;flex-direction:column;gap:20px;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;border-right:1px solid #60716e;background:#14242b;color:#eaf2eb;box-shadow:8px 0 28px #0006;transform:translateX(-102%);visibility:hidden;transition:transform .2s ease,visibility 0s .2s}
.weather-dialog .map-favourites-panel[data-open=true]{transform:translateX(0);visibility:visible;transition:transform .2s ease}
.weather-dialog .map-favourites-panel>header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.weather-dialog .map-favourites-panel h3{font-size:20px;line-height:1.3;margin:0}
.weather-dialog #map-favourites-close{width:48px;min-height:48px;padding:10px;border:1px solid #60716e;border-radius:10px;background:#1b2b33;color:#eaf2eb}
.weather-dialog .map-favourites-panel .map-quicknav{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));flex-wrap:nowrap;gap:8px;width:100%;max-width:none;margin:0;padding:0;overflow:visible;scroll-snap-type:none;touch-action:auto}
.weather-dialog .map-favourites-panel .map-quicknav button{width:100%;min-width:0;min-height:88px;box-sizing:border-box;box-shadow:none}
@media(prefers-reduced-motion:reduce){.weather-dialog .map-favourites-panel,.weather-dialog .map-favourites-panel[data-open=true]{transition:none}}

.weather-dialog .airport-label-data{font-size:12px;line-height:1.3;gap:5px}
.weather-dialog .airport-label-data .airport-wind-arrow{width:16px;height:16px}
.weather-dialog .airport-label-data .airport-wx-symbols{gap:2px;line-height:18px}
.weather-dialog .airport-label-data .airport-wx-symbols svg{width:18px;height:18px}
