:root{--bg:#f5f4ef;--paper:#fffefa;--ink:#24382f;--muted:#7a8279;--line:#e2e5dc;--green:#274c3b;--lime:#dce8c5;--peach:#e9bc96;--radius:23px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.5}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[role=button]:focus-visible{outline:3px solid #a7773d;outline-offset:3px}button{color:inherit}a{color:inherit}h1,h2,h3,p{margin-top:0}h1{font-size:38px;letter-spacing:-1.5px;font-weight:550;margin-bottom:8px}h2{font-size:23px;letter-spacing:-.65px;font-weight:550;margin-bottom:18px}h3{font-size:17px;font-weight:600}.muted{color:var(--muted);line-height:1.6}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px;color:var(--muted);margin-bottom:10px}.small-text,small{font-size:12px;line-height:1.6}.primary,.secondary,.link-button{border-radius:12px;padding:12px 18px;border:1px solid transparent;min-height:44px;font-weight:600;font-size:13px}.primary{background:var(--green);color:white}.secondary{background:#f0f2eb;border-color:#dfe4d8}.link-button{display:inline-block;text-decoration:none}input,select{border:1px solid #d7ddcf;background:#fffefa;border-radius:10px;padding:12px;width:100%;color:var(--ink);min-height:44px}label{display:block;font-size:12px;font-weight:600;margin:16px 0 7px}form small{display:block;color:var(--muted);margin:10px 0 20px}[hidden]{display:none!important}.brandmark{height:70px;width:70px;background:var(--green);color:var(--lime);border-radius:20px;display:flex;align-items:center;justify-content:center;font-size:28px;letter-spacing:-4px;font-family:Georgia,serif;margin-bottom:40px}.brandmark span{transform:translateY(5px)}.brandmark.small{height:42px;width:42px;min-width:42px;font-size:21px;border-radius:13px;margin:0}.gate{min-height:100dvh;display:grid;grid-template-columns:1fr 1fr}.welcome{max-width:470px;padding:70px 45px;margin:auto}.welcome h1{font-family:Georgia,serif;font-size:52px;font-weight:400;line-height:1.12}.welcome form{margin:35px 0 50px}.welcome form button{width:100%;margin-top:16px;display:flex;justify-content:space-between}.welcome-art{background:#dce5d5;display:grid;place-items:center;margin:22px;border-radius:30px}.art-house{width:65%;max-width:370px}.art-house>span{font-size:11px;letter-spacing:3px}.art-house svg{width:100%;margin:35px 0;fill:none;stroke:#526a55;stroke-width:3}.art-house p{font-family:Georgia,serif;font-size:29px;color:#526a55}.sidebar{position:fixed;inset:0 auto 0 0;width:218px;background:#eef0e7;padding:34px 22px;border-right:1px solid var(--line);display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:17px;font-weight:600}.brand small{display:block;font-size:8px;letter-spacing:2px;margin-top:5px;color:var(--muted)}nav{margin-top:65px;display:grid;gap:9px}nav button,.side-bottom button{display:flex;align-items:center;gap:14px;border:0;background:transparent;text-align:left;border-radius:12px;padding:14px 17px;font-size:13px;min-height:48px}nav button span{font-size:24px;width:22px;text-align:center}nav button.active{background:var(--green);color:white}.side-bottom{margin-top:auto}.side-bottom p{font-size:10px;color:var(--muted);margin-top:24px;text-align:center}.dot{display:inline-block;width:6px;height:6px;background:#89a86e;border-radius:50%;margin-right:7px}main{margin-left:218px;padding:43px 42px 60px;max-width:1700px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}header .muted{font-size:13px;margin-bottom:0}.jarvis-chip{border:1px solid #d9dfd0;border-radius:30px;padding:13px 18px;background:var(--paper);display:flex;align-items:center;gap:10px;font-size:12px;white-space:nowrap}.jarvis-chip i{width:19px;height:19px;border-radius:50%;background:radial-gradient(circle,#e7d9ad,#a4b68d 55%,#3d5942);box-shadow:0 0 0 4px #edf0e5}.jarvis-chip span{margin-left:15px}.overview{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:25px}.overview article{background:var(--paper);border:1px solid var(--line);padding:21px 24px;border-radius:17px}.overview article>span{font-size:11px;color:var(--muted);display:block;margin-bottom:12px}.overview strong{display:block;font-size:21px;font-weight:550;letter-spacing:-.5px}.overview small{display:block;font-size:10px;color:var(--muted);margin-top:8px}.home-grid{display:grid;grid-template-columns:minmax(360px,1.35fr) minmax(280px,1fr);gap:24px;align-items:start}.map-card,.panel,.favorites,.routine-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:26px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.section-heading h2{margin-bottom:0}.segmented{display:flex;border:1px solid var(--line);border-radius:8px;padding:3px;background:#f4f5ef}.segmented button{border:0;background:transparent;border-radius:5px;font-size:10px;padding:8px;white-space:nowrap}.segmented button.active{background:white;box-shadow:0 1px 4px #0001}.map-wrap{margin:20px auto 12px;max-width:390px;background-image:radial-gradient(#cdd4c6 1px,transparent 1px);background-size:16px 16px;border-radius:16px;padding:10px}.map-wrap svg{width:100%;display:block;max-height:680px}.map-wrap img{width:100%;display:block}.map-room{cursor:pointer;outline:none}.map-room polygon{fill:#eef1e6;stroke:#fafbf7;stroke-width:5;transition:fill .2s}.map-room:nth-child(3n) polygon{fill:#e5e9dd}.map-room[data-room=master] polygon,.map-room[data-room=office] polygon{fill:#dce7d1}.map-room[data-room=garage] polygon{fill:#e8e6dd}.map-room[data-room=patio] polygon,.map-room[data-room=porch] polygon{fill:#e4e9d9;stroke-dasharray:7 5}.map-room:hover polygon,.map-room:focus-visible polygon{fill:#c1d4a6;stroke:#658357}.map-room text{fill:#475b45;font-size:13px;text-anchor:middle;pointer-events:none}.map-room .room-symbol{font-size:25px;fill:#7d9271}.map-room .room-status{font-size:9px;fill:#829079}.map-room .tiny-label{font-size:9px}.furniture{stroke:#a9b59d;stroke-width:2;fill:none;opacity:.6;pointer-events:none}.map-footer{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);padding-top:14px;border-top:1px solid var(--line)}.home-right{display:grid;gap:20px}.favorites h2{font-family:Georgia,serif;font-size:25px}.favorite-row{display:flex;align-items:center;gap:14px;width:100%;background:none;border:0;border-top:1px solid var(--line);padding:15px 0;text-align:left}.room-icon{height:42px;min-width:42px;width:42px;border-radius:13px;background:#ecf0e2;display:grid;place-items:center;font-size:21px;color:#718363}.favorite-row strong{font-size:13px;font-weight:600;display:block}.favorite-row small{color:var(--muted);font-size:10px}.favorite-row .arrow{margin-left:auto;color:#86927f}.tank-promo{border-radius:var(--radius);background:#213e34;padding:28px;color:#f4f4df;position:relative;overflow:hidden}.tank-promo:after{content:"";position:absolute;width:210px;height:210px;border-radius:50%;border:1px solid #a3b68a2b;right:-80px;top:-50px;box-shadow:0 0 0 24px #a3b68a0a,0 0 0 48px #a3b68a0a}.tank-promo .eyebrow{color:#b3c4a0}.tank-promo h2{font-family:Georgia,serif;font-size:27px}.tank-promo p:not(.eyebrow){font-size:12px;color:#b7c7b5;max-width:230px;line-height:1.7}.tank-promo button{background:#e3eaca;color:#284637;border:0;border-radius:9px;padding:11px 16px;margin:7px 8px 0 0;position:relative;z-index:1}.fish{font-size:45px;color:#c0d3aa;line-height:1;margin-bottom:18px}.routine-card p.muted{font-size:12px;margin:0}.scene-button{margin:4px;padding:10px;border:1px solid var(--line);border-radius:10px;background:#f4f5ed}.notice{border:1px solid #ded9be;background:#f5efdb;padding:13px 18px;border-radius:12px;font-size:12px;margin-bottom:20px;line-height:1.5}.search-box{display:flex;align-items:center;gap:10px;max-width:400px;margin-bottom:24px}.search-box input{background:var(--paper)}.room-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.room-tile{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:23px;text-align:left;min-height:165px}.room-tile .room-icon{margin-bottom:20px}.room-tile strong{display:block;font-size:16px;font-weight:550}.room-tile small{color:var(--muted)}.empty{text-align:center;padding:70px 30px;max-width:600px;margin:auto}.empty>span{display:block;font-size:50px;color:#94a385;margin-bottom:25px}.empty p{color:var(--muted);font-size:14px;line-height:1.7}.family-layout,.settings-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:24px}.panel p.muted{font-size:13px}.integration{display:flex;justify-content:space-between;gap:12px;padding:17px 0;border-bottom:1px solid var(--line);font-size:13px}.integration small{display:block;color:var(--muted);max-width:270px;margin-top:5px}.integration b{font-weight:500;font-size:10px;color:#7c805e;white-space:nowrap}.panel #logout{margin-top:20px}.mapping{margin-top:24px}.mapping>input{margin:24px 0;max-width:400px}.mapping-row{display:flex;gap:20px;align-items:center;padding:13px 0;border-top:1px solid var(--line)}.mapping-row>div{flex:1;min-width:0}.mapping-row strong{font-size:13px;display:block;overflow-wrap:anywhere}.mapping-row small{display:block;color:var(--muted);overflow-wrap:anywhere}.mapping-row select{width:180px;font-size:12px}.event{display:flex;gap:18px;border-top:1px solid var(--line);padding:20px 0}.event-date{font-size:22px;font-family:Georgia,serif;color:#809169;min-width:65px}.event strong{font-size:14px}.event p{font-size:12px;color:var(--muted);margin:8px 0 0}.mobile-nav{display:none}dialog{padding:0;border:1px solid var(--line);border-radius:25px;max-height:90dvh;color:var(--ink);background:var(--paper);width:min(580px,95vw)}dialog::backdrop{background:#14281f66;backdrop-filter:blur(5px)}.room-header{display:flex;align-items:center;justify-content:space-between;padding:26px 28px 20px;border-bottom:1px solid var(--line)}.room-header h2{font-size:30px;margin-bottom:0}.icon-button{background:#eff1e9;border:0;border-radius:50%;width:40px;height:40px;font-size:24px}.room-content{padding:25px 28px}.room-content>button.primary{width:100%;margin-top:25px}.room-content h3{margin:24px 0 10px}.device{border:1px solid var(--line);padding:17px;border-radius:16px;margin:15px 0}.device-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:12px}.device-head strong{font-size:14px;overflow-wrap:anywhere}.device-head span{font-size:11px;color:var(--muted)}.device .control-row{flex-wrap:wrap}.control-row{display:flex;align-items:center;gap:10px;margin:10px 0 15px}.control-row input[type=range]{flex:1;min-width:60px;padding:0;accent-color:var(--green)}.control-row select{flex:1}.control-row input[type=color]{width:60px;padding:4px}.control-row output{font-size:12px;min-width:35px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:15px}.two-col select{margin-top:8px}.moods{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.moods button{border:1px solid var(--line);border-radius:12px;background:#f0f2e9;font-size:23px;padding:15px 0}.moods button:nth-child(2){background:#f4e5d4}.moods button:nth-child(3){background:#e0ecea}.moods button:nth-child(4){background:#eee1e1}.moods button span{display:block;font-size:9px;margin-top:8px}.tank-status{background:#edf0e6;border-radius:12px;padding:13px;font-size:12px;line-height:1.6;overflow-wrap:anywhere;white-space:pre-wrap;max-height:220px;overflow:auto}.tank-status.error{background:#f5e7df}.camera-card{padding:15px;background:var(--paper);border-radius:18px;border:1px solid var(--line)}.camera-card img,.device img{width:100%;border-radius:12px;min-height:100px;object-fit:contain;background:#edf0e7}.camera-card h3{font-size:14px;margin:10px 0}.camera-card small{color:var(--muted)}#jarvis-dialog{width:min(620px,95vw)}#messages{height:45dvh;overflow:auto;padding:24px;display:flex;flex-direction:column;gap:14px}.message{padding:14px 17px;border-radius:16px;font-size:13px;line-height:1.7;white-space:pre-wrap;max-width:90%;overflow-wrap:anywhere}.message.assistant{background:#eef1e6;align-self:flex-start}.message.user{background:#2d4b3a;color:white;align-self:flex-end}#ask-form{display:flex;gap:10px;padding:20px;border-top:1px solid var(--line)}#ask-form input{min-width:0}#ask-form button{white-space:nowrap}#jarvis-confirm{margin:0 24px 20px;background:#f4edd8;padding:15px;border-radius:12px}#jarvis-confirm p{font-size:13px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#243d30;color:white;padding:16px 23px;border-radius:14px;z-index:1000;max-width:90vw;font-size:13px;box-shadow:0 8px 40px #0002}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0)}
@media(min-width:1450px){main{padding:50px 60px}.home-grid{grid-template-columns:1.45fr 1fr}.map-wrap{max-width:430px}.map-wrap svg{max-height:720px}.home-right{gap:25px}.favorites,.tank-promo,.routine-card{padding:32px}}
@media(max-width:1100px){.sidebar{width:180px;padding:28px 15px}.brand{font-size:14px;gap:8px}main{margin-left:180px;padding:30px 25px}.home-grid{grid-template-columns:minmax(280px,1.2fr) minmax(240px,1fr);gap:18px}.map-card,.favorites,.panel,.routine-card{padding:20px}.overview{gap:10px}.overview article{padding:17px}.overview strong{font-size:17px}.room-grid{grid-template-columns:repeat(2,1fr)}.section-heading{flex-wrap:wrap}.settings-grid{grid-template-columns:1fr}}
@media(max-width:760px){.sidebar{display:none}main{margin:0;padding:25px 18px 100px}header{align-items:flex-start;margin-bottom:24px}h1{font-size:29px}header .eyebrow{font-size:9px;letter-spacing:1.3px}header .muted{font-size:11px}.jarvis-chip{font-size:11px;padding:11px;gap:8px;margin-top:18px}.jarvis-chip span{display:none}.jarvis-chip i{width:14px;height:14px}.overview{gap:8px;margin-bottom:18px}.overview article{padding:13px 10px;border-radius:14px}.overview article>span{font-size:9px;margin-bottom:9px}.overview strong{font-size:13px;letter-spacing:-.3px}.overview small{font-size:9px;line-height:1.4}.home-grid{display:flex;flex-direction:column}.map-card,.home-right{width:100%}.map-card{padding:20px 17px}.map-wrap{max-width:330px;margin-top:16px}.map-wrap svg{max-height:530px}.map-card .section-heading{flex-wrap:nowrap}.map-card h2{font-size:21px}.map-card .eyebrow{font-size:8px;letter-spacing:1.2px}.segmented button{font-size:9px;padding:7px}.home-right{gap:16px}.favorites h2{font-size:23px}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:#fcfcf5f5;backdrop-filter:blur(15px);border-top:1px solid var(--line);z-index:5;justify-content:space-around;margin:0;gap:5px}.mobile-nav button{display:flex;flex-direction:column;gap:0;flex:1;padding:4px;font-size:24px;line-height:1.2;border-radius:10px}.mobile-nav button small{font-size:9px;margin-top:5px}.family-layout{grid-template-columns:1fr}.room-grid{gap:12px}.room-tile{padding:18px;min-height:150px}.room-tile strong{font-size:14px}.room-tile small{font-size:10px}.gate{display:block}.welcome{padding:45px 30px;min-height:100dvh;display:flex;flex-direction:column;justify-content:center}.welcome h1{font-size:46px}.welcome-art{display:none}.welcome form{margin-bottom:30px}.room-header{padding:20px}.room-content{padding:18px 20px}.room-header h2{font-size:26px}.mapping-row{gap:10px}.mapping-row select{width:135px;padding:8px;font-size:11px}.mapping-row strong{font-size:12px}.mapping-row small{font-size:10px}#toast{bottom:85px}.notice{font-size:11px}dialog{max-height:91dvh}.two-col{gap:9px}.two-col select{font-size:12px}#ask-form{padding:13px;gap:7px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

.map-room text{font-size:18px}.map-room .room-status{font-size:12px}.map-room .tiny-label{font-size:11px}

.setup-progress{margin-bottom:24px}.more-devices{margin:20px 0}.more-devices summary{cursor:pointer;padding:13px;background:#eef1e7;border-radius:12px;font-size:13px}.map-room[data-room=pantry] .room-symbol{display:none}.map-room[data-room=pantry] text{font-size:11px}#vacuum-actions{display:flex;gap:9px;margin:15px 0}#vacuum-plan{background:#1d2720;border-radius:12px}

.roof-shortcut{margin-top:15px;font-size:11px;padding:8px 12px;min-height:36px}

.map-room[data-room=steph-office] text{font-size:11px}.map-room[data-room=steph-office] .room-symbol{font-size:20px}

.inventory-device{padding:20px 0;border-bottom:1px solid #dce2d7;overflow-wrap:anywhere}.inventory-device select{max-width:360px}.inventory-device summary{cursor:pointer;margin-top:12px}.inventory-id{display:block;color:#68766d}.mobile-nav button{min-width:0}

#room-editor{width:min(1100px,96vw);max-width:96vw}.room-edit-layout{display:grid;grid-template-columns:300px 1fr;gap:22px;padding:22px}.room-edit-form label{display:block;margin:10px 0}.room-dimensions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.room-dimensions input{min-width:0;width:100%}.map-checkbox{display:flex!important;align-items:center;gap:10px}.map-checkbox input{width:auto}#room-edit-map{width:100%;max-height:75vh;touch-action:none;user-select:none;background:#edf0e7}#room-edit-map [data-move-room]{cursor:move}#room-edit-map circle{cursor:grab}.room-edit-form>button{margin:6px 0}#view-rooms>[data-edit-rooms]{margin-bottom:18px}@media(max-width:650px){.room-edit-layout{grid-template-columns:1fr;padding:14px}#room-edit-map{max-height:none;height:auto}.room-edit-form{min-width:0}#room-editor{max-height:94dvh}.room-edit-layout select{max-width:100%}}

.camera-bridge{padding:16px;margin:14px 0;border:1px solid #dce2d7;border-radius:14px;background:#f5f6ef}.camera-bridge .link-button{display:inline-block;margin:7px 7px 0 0}

.text-button{background:none;border:0;text-decoration:underline;color:#345b49;padding:8px 0;cursor:pointer}.recovery-code{margin-top:16px;padding:18px;border:1px dashed #567361;border-radius:12px;background:#eef2e9}.recovery-code strong{font:700 20px ui-monospace,monospace;letter-spacing:1px;overflow-wrap:anywhere}
