:root{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#243d37;background:#f7f8f4;font-size:15px;scroll-behavior:smooth}*{box-sizing:border-box}body{margin:0}aside{width:232px;position:fixed;inset:0 auto 0 0;padding:42px 28px;background:#eef1e9;border-right:1px solid #e0e5dc}.brand{font-size:32px;display:flex;gap:12px;align-items:center;font-weight:700;letter-spacing:-1.5px;text-decoration:none;color:inherit}.dot{color:#d19d63}aside small{display:block;font-size:10px;letter-spacing:2px;color:#8a968c;margin:42px 0 20px}nav{display:grid;gap:12px}nav a{font-size:14px;padding:13px 10px;color:#5f7268;text-decoration:none;border-radius:8px}nav a:hover,nav a[aria-current=page]{background:#dfe7db;color:#294d3b}.aside-note{position:absolute;bottom:30px;line-height:1.8;font-size:14px}.aside-note span{font-size:11px;color:#819084}main{max-width:1500px;padding:30px 48px;margin-left:232px}header{display:flex;justify-content:space-between;font-size:12px;color:#6c7d73}.pill{background:#e4eddf;border-radius:20px;padding:7px 12px;color:#50734c}.intro{margin:48px 0 30px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:650;color:#7f8b7c}h1{font-family:Georgia,serif;font-size:54px;letter-spacing:-2px;font-weight:400;margin:12px 0}p{line-height:1.65;color:#7a847a;font-size:13px}h2{font-size:20px;font-weight:550;letter-spacing:-.5px}h3{font-size:15px;font-weight:550}article{background:#fff;border:1px solid #e4e8df;border-radius:16px;padding:25px}.summary{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:18px}.summary article{min-height:235px}.summary p{margin-bottom:8px}.weather{background:#e7eddb;border-color:#e7eddb}.weather-line{display:flex;gap:24px;align-items:center;color:#a48c42;font-size:45px;margin:16px 0}.weather strong{font-size:55px;font-weight:400;color:#344e3a}.weather a{color:#4f6747;font-size:12px}.metric{font-size:56px;font-weight:350;margin:24px 0}.metric span{font-size:30px;color:#a7b0a5}.section-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:24px 0 16px}.section-head span{font-size:11px;color:#8a9385}.section-head h2{margin:0}.devices{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.devices article{padding:22px;display:flex;flex-direction:column;align-items:flex-start}.devices p{font-size:11px;min-height:26px;margin-top:0}.icon{width:44px;height:44px;border-radius:12px;background:#f0f2e9;display:grid;place-items:center;font-size:28px}.status{font-size:10px;border-radius:12px;background:#f1f2ec;padding:6px 9px;color:#899180;display:inline-block}.devices button,.devices .button{margin-top:24px;width:100%}button,.button{font:inherit;font-size:12px;border:0;background:#344f3f;color:white;border-radius:8px;padding:12px 16px;text-decoration:none;text-align:center;cursor:pointer}button:disabled{background:#f1f3ee;color:#a2aa9d;cursor:not-allowed}.lower{display:grid;grid-template-columns:1.5fr 1fr;gap:18px;margin-top:26px}.lower .section-head{margin-top:0}.muted{color:#8d9689}.empty{padding:26px 0;color:#8a9385;font-size:13px}.bridge{border-top:1px solid #e5e8df;margin-top:26px;padding-top:15px}form{display:grid;gap:15px}#event-form{border-top:1px solid #e8ebe2;padding-top:10px;margin-top:22px;grid-template-columns:1fr 1fr}#event-form h3{grid-column:1/-1}#event-form button{justify-self:start}label{font-size:12px;display:grid;gap:8px;color:#657361}input,select{width:100%;min-width:0;padding:11px;border:1px solid #dfe4d8;border-radius:7px;background:#fcfdf9;font:inherit;color:#344f3f}label small{font-size:10px;color:#85917e}#settings{margin-top:30px;background:#eff2e9;padding:5px 24px 25px;border-radius:16px}#settings-form{grid-template-columns:1fr 1fr}#settings-form button{justify-self:start}.event{display:flex;justify-content:space-between;gap:15px;padding:15px 0;border-bottom:1px solid #edf0e8;font-size:12px}.event span{color:#8c9685;font-size:11px}.alert{padding:14px;background:#fbf0db;border-radius:9px;font-size:13px;line-height:1.7;margin:10px 0}footer{display:flex;justify-content:space-between;margin-top:35px;font-size:13px;color:#8a9685}footer span{font-size:10px}#message:not(:empty){position:fixed;bottom:24px;right:24px;background:#304c3b;color:white;padding:14px 22px;border-radius:10px;max-width:80vw}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #bc9558;outline-offset:3px}@media(min-width:1600px){main{margin-right:auto}}@media(max-width:1100px){aside{width:190px;padding:30px 18px}main{margin-left:190px;padding:26px}.devices{grid-template-columns:repeat(2,1fr)}.summary{grid-template-columns:1fr 1fr}.weather{grid-column:1/-1}.lower{grid-template-columns:1fr}}@media(max-width:650px){aside{position:static;width:auto;padding:18px 20px;border-bottom:1px solid #e0e5dc}.brand{font-size:25px}aside small,.aside-note{display:none}nav{display:flex;gap:3px;margin-top:12px;overflow:auto}nav a{white-space:nowrap;padding:9px;font-size:11px}main{margin:0;padding:22px 18px}.intro{margin-top:32px}h1{font-size:44px}.summary{gap:12px}.summary article{padding:19px;min-height:210px}.devices{gap:12px}.devices article{padding:17px}.lower article{padding:20px}.section-head span{max-width:130px;text-align:right}#settings-form,#event-form{grid-template-columns:1fr}footer span{max-width:180px;text-align:right}}
:root .consent{display:flex;align-items:flex-start;line-height:1.6;grid-column:1/-1}.consent input{width:18px;min-width:18px;margin-top:3px}#location-results{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px}#location-results p{width:100%}#location-results button{background:#e0e7d8;color:#344f3f}.summary article>a{font-size:10px;color:#58704e}

#light-card label{width:100%;margin-top:16px}#light-card input{padding:0;accent-color:#456347}#light-card .light-presets{display:flex;gap:8px;width:100%}#light-card .light-presets button{margin-top:12px}#light-card small{font-size:10px;color:#819078;line-height:1.6;margin-top:12px}#light-card #light-refresh{background:#ecf0e6;color:#456347;margin-top:12px}

.sun-phases{display:grid;grid-template-columns:1fr 1fr;gap:12px}.sun-phase .metric{font-size:34px;margin:16px 0}.sun-phase h3{font-size:13px}.sun-phase p{font-size:11px}#sun-card>p{font-size:10px}

.internet-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.internet-metrics span{font-size:11px;color:#7a847a;display:block}.internet-metrics strong{font-size:28px;font-weight:400;display:block;margin-top:12px}#internet article>p,#internet-history p{font-size:11px}#internet button{margin-top:18px}#internet details{font-size:12px}.setup-main{margin:50px auto;max-width:650px;padding:24px}.setup-main h1{font-size:38px}@media(max-width:650px){.internet-metrics{gap:10px}.internet-metrics strong{font-size:21px}}

#climate-card label{width:100%;margin-top:14px}#climate-note{font-size:10px;line-height:1.6}#st-devices{display:grid;gap:12px;margin-top:20px}

.remaining-display{margin:16px 0;padding:16px 12px;border-radius:12px;background:#16231d;color:#92aa9b;display:flex;flex-direction:column;gap:7px;align-items:center;box-shadow:inset 0 2px 7px #0005}.remaining-display strong{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:clamp(2rem,5vw,3rem);font-variant-numeric:tabular-nums;letter-spacing:.08em;line-height:1.15;color:#b3c5b9}.remaining-display small{font-size:.65rem;letter-spacing:.05em;text-align:center}.remaining-display.is-active strong{color:#b9ffd0;text-shadow:0 0 10px #79ff9e50}

#internet-chart svg,#room-map svg{width:100%;height:auto;display:block}#room-map svg{max-height:250px;background:#f1f4ed;border-radius:10px;margin:12px 0}.room-row{display:flex;align-items:center;gap:8px;padding:5px 8px}.room-row input[type=checkbox]{width:auto}.room-row input[type=text],.room-row input:not([type]){min-width:0;width:100%}#notification-list{max-height:240px;overflow:auto}#notification-list p{border-top:1px solid #dce3d9;padding-top:10px}
.room-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.room-badge{font-size:10px;color:#496451;background:#edf2e9;padding:5px 8px;border-radius:8px;margin:0 0 12px}.admin-room{display:flex;gap:8px;margin:12px 0;flex-wrap:wrap}.admin-room input{flex:1;min-width:130px}#device-assignments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}#room-add-form{display:flex;align-items:end;gap:10px;flex-wrap:wrap}#room-add-form label{flex:1}#home-layout,#internet-settings{margin-top:28px}@media(max-width:650px){#device-assignments{grid-template-columns:1fr}}

.quick-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:24px 0}.quick-links a{display:grid;gap:12px;background:white;border:1px solid #e4e8df;border-radius:14px;padding:22px;color:#344f3f;text-decoration:none}.quick-links span{font-size:12px;color:#7a847a}.devices article[hidden]{display:none}.managed-device{border-top:1px solid #dfe5da;padding:20px 0;margin-top:18px;display:grid;gap:12px}.managed-device h3,.managed-device p{margin:0}.managed-device button{justify-self:start}#device-management{margin-top:28px}body:has(#device-management) main{max-width:1100px}@media(max-width:650px){.quick-links{grid-template-columns:1fr;gap:10px}.quick-links a{padding:16px}.intro{margin-bottom:24px}.devices{grid-template-columns:1fr}}
html:not([data-role=admin]) [data-admin-only],html:not([data-role=admin]) a[href^="/admin"]{display:none!important}.room-filter{max-width:320px;margin:16px 0}.filter-hidden{display:none!important}.login-page main{margin:8vh auto;padding:24px;max-width:480px}.login-page h1{font-size:30px}.managed-device form{margin-top:16px}#users,#robot-rooms{margin-top:28px}.internet-overview{margin-top:24px}.internet-overview .internet-metrics strong{font-size:28px}html[data-role=member] .room-badge{display:inline-block}

.atmosphere-head h2{font-size:17px;margin:0 0 20px}.atmosphere-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.atmosphere-grid:has(#indoor-summary[hidden]){grid-template-columns:1fr 1fr}.atmosphere-grid>div{min-width:0}.atmosphere-grid .metric{font-size:34px;margin:12px 0}.atmosphere-grid h3{font-size:13px;margin:8px 0}.atmosphere-grid p{font-size:11px;margin:6px 0}.atmosphere-grid a{font-size:10px;color:#647b60}.atmosphere-grid .sun-phases{gap:10px}.atmosphere-grid .sun-phase .metric{font-size:24px}.atmosphere-grid .eyebrow{font-size:9px}.atmosphere-card{background:#f0f3e9}@media(max-width:650px){.atmosphere-grid{grid-template-columns:1fr 1fr;gap:16px}#sun-card{grid-column:1/-1}.atmosphere-grid:has(#indoor-summary[hidden]) #sun-card{grid-column:auto}.atmosphere-grid .sun-phases{justify-content:flex-start;gap:28px}.atmosphere-card{padding:20px}.atmosphere-grid .metric{font-size:30px}}

#home-internet-chart svg{display:block;width:100%;height:auto;max-height:180px}#home-internet-chart p{font-size:10px}

[hidden]{display:none!important}
#guide-body{max-width:900px}#guide-body p{white-space:pre-wrap;color:#536752}#guide-body pre{white-space:pre-wrap;overflow-wrap:anywhere;padding:16px;background:#eef2e9;border-radius:8px}fieldset{border:1px solid #dfe5d8;border-radius:10px;padding:16px}fieldset legend{font-size:13px}
aside nav a{color:#496451}.push-actions{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0}.push-actions button{margin:0;flex:1 1 180px;min-height:44px}#device-settings{margin-top:32px}#managed-devices .managed-device>h3{font-size:18px;margin-bottom:10px}.history-row{display:grid;grid-template-columns:1fr auto;gap:10px;padding:18px 0;border-bottom:1px solid #e4e8df}.history-detail{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.history-detail strong{font-size:14px}.history-row time{font-size:12px;color:#526651}.history-row>small{grid-column:1/-1;color:#7b877a;font-size:11px}.history-kind{font-size:11px;padding:5px 8px;border-radius:7px;background:#edf3e9;color:#416745}.history-kind.started{background:#eef1f5;color:#4b6275}.history-pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:20px 0}.history-pagination span{font-size:12px}.history-pagination button{min-height:44px}.devices details{width:100%}@media(max-width:650px){.history-row{grid-template-columns:1fr}.history-row>small{grid-column:1}.history-detail{align-items:flex-start}.history-pagination button{padding:10px}#managed-devices button{min-height:44px}.push-actions{display:grid;grid-template-columns:1fr}}

.automation-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px}.automation-actions button{margin:0;min-height:44px}
.weather-alert{padding:16px;margin:16px 0;border-left:4px solid #b58a22;background:#fcf6e6}.weather-alert.orange{border-color:#cd7330}.weather-alert.red{border-color:#b84949}#official-weather-alerts p{white-space:pre-wrap}

.weather-info-bar{display:flex;align-items:flex-start;gap:12px;padding:16px 20px;margin:0 0 18px;background:#edf2ed;border:1px solid #dce5dc;border-radius:12px;color:#3c5948}.info-symbol{font-size:21px;line-height:1.4;flex:none}.weather-info-content{min-width:0;flex:1}.weather-info-bar #weather-advice{margin:0;font-size:14px;line-height:1.6}.weather-info-details{margin-top:8px;font-size:12px}.weather-info-details summary{cursor:pointer;color:#5c7163}.weather-info-details small{display:block;margin-top:12px}.earthquake-overview{margin-top:32px}@media(max-width:650px){.weather-info-bar{padding:14px;gap:10px}}
/* iOS focuses controls below 16px by zooming; keep focus stable on iPhone. */
input,select,textarea{font-size:16px}input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{min-height:44px}main,article,section,fieldset{min-width:0}article a,article p,.managed-device{overflow-wrap:anywhere}@media(max-width:650px){.section-head{flex-wrap:wrap}.devices{grid-template-columns:1fr}.admin-room{flex-wrap:wrap}.admin-room input{flex:1 1 180px}.setup-main{padding:22px 18px}header{gap:12px;flex-wrap:wrap}}

html,body{touch-action:pan-x pan-y}

.archived-device-tools{margin-top:24px;padding-top:20px;border-top:1px solid #dfe5da}.archived-device-tools>button{min-height:44px;background:#e6ece2;color:#344f3f}.archived-device-tools>#archived-devices{margin-top:16px}
.tv-remote-keys{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:100%;margin:14px 0}.devices .tv-remote-keys button{margin:0;min-height:44px}.devices details{margin-top:16px}.devices details>summary{cursor:pointer;min-height:32px}
.device-order-row{display:flex;align-items:center;gap:10px;margin:10px 0}.device-order-row>span{flex:1;min-width:0;overflow-wrap:anywhere}.device-order-row button{min-height:44px;min-width:44px}
.tv-keyboard-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.devices .tv-keyboard-actions button{margin:0;flex:1;min-height:44px}.devices details form{margin-top:14px;width:100%}.devices details input[type=range]{width:100%}

/* Cleaning cycles and weekly activity chart */
.history-times{display:flex;flex-direction:column;gap:6px;font-size:.85rem}.history-row{align-items:start;gap:10px}.history-row>small,.history-times{grid-column:1/-1}.weekly-cleaning{margin:24px 0;padding:18px 0;border-block:1px solid var(--line,#ddd)}#weekly-chart{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin:20px 0 12px}.week-column{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:0}.week-column>strong{font-size:.85rem}.week-stack{height:120px;width:min(100%,32px);display:flex;flex-direction:column-reverse;justify-content:flex-start;background:#eff1ed;border-radius:5px;overflow:hidden}.week-segment.washer,.week-legend .washer:before{background:#5790ba}.week-segment.dishwasher,.week-legend .dishwasher:before{background:#c99248}.week-segment.vacuum,.week-legend .vacuum:before{background:#647c61}.week-legend{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;font-size:.8rem}.week-legend span:before{content:'';display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px}.weekly-cleaning .history-pagination{gap:10px;justify-content:space-between}.weekly-cleaning .history-pagination strong{text-align:center;font-size:.85rem}

/* Room summaries share row height and keep their action aligned. */
.room-cards{grid-auto-rows:1fr;align-items:stretch}.room-cards>article{min-width:0;display:flex;flex-direction:column;align-items:stretch}.room-cards>article h3{margin:0 0 10px}.room-cards>article p{flex:1;margin:0 0 18px;overflow-wrap:anywhere}.room-cards>article button{margin-top:auto;width:100%;min-height:44px}

.devices .tv-card{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-content:start;align-items:start}.devices .tv-card>h3,.devices .tv-card>.room-badge,.devices .tv-card>p,.devices .tv-card>small,.devices .tv-card>label,.devices .tv-card>details,.devices .tv-card>button:last-child{grid-column:1/-1}.devices .tv-card>h3{margin:0}.devices .tv-card>.room-badge{justify-self:start;margin:0}.devices .tv-card>p{margin:0}.devices .tv-card button{margin-top:0;min-height:44px}.devices .tv-card>small{line-height:1.6;color:#7a847a}
.devices .tv-card [hidden]{display:none!important}

.devices .tv-card>.tv-volume-apply{grid-column:1/-1}.tv-remote-keys{display:flex;flex-wrap:wrap}.tv-remote-keys button{flex:1 1 calc((100% - 20px)/3)}.tv-remote-keys button:nth-child(n+4){flex-basis:calc((100% - 30px)/4)}
.tv-apps select{margin:14px 0}.tv-app-actions{display:grid;grid-template-columns:1fr;gap:12px;margin:14px 0}.tv-app-actions button{width:100%;min-height:44px}
.tv-joystick{width:min(200px,100%);aspect-ratio:1;margin:22px auto;position:relative;display:grid;place-items:center;border:2px solid #a8b8a0;border-radius:50%;background:radial-gradient(circle,#dce5d6 0 25%,#edf2e9 26% 64%,#dae3d5 65%);touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}.tv-joystick:active{cursor:grabbing}.tv-joystick-knob{width:64px;height:64px;border-radius:50%;background:linear-gradient(145deg,#526e59,#2f4839);box-shadow:0 5px 12px #243d3733;border:3px solid #fff8;pointer-events:none}.tv-joystick:focus-visible{outline:3px solid #bc9558;outline-offset:4px}
.camera-view{display:block;width:100%;border-radius:12px;background:#243d37;margin-top:16px}.camera-view[hidden]{display:none}.devices button[hidden]{display:none}

.camera-directions{width:100%;margin-top:16px;text-align:center}.camera-directions p:empty{display:none}
.device-fullscreen{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));border:0;background:#f7f8f4;color:inherit;overflow:auto;overscroll-behavior:contain}
.device-fullscreen>article{position:relative;width:100%;max-width:900px;margin:0 auto}
.devices .device-fullscreen-toggle{grid-column:1/-1;min-height:44px}
.devices .device-fullscreen .device-fullscreen-toggle{position:absolute;top:8px;right:8px;width:44px;height:44px;margin:0;padding:0;font-size:24px;line-height:1}.device-fullscreen>article>h3{padding-right:44px}
.device-fullscreen .camera-view{max-height:55vh;object-fit:contain}
body:has(.device-fullscreen[open]){overflow:hidden}

.room-results-scrolled{min-height:calc(100dvh + 2rem)}#device-room-filter{scroll-margin-top:8px}
