:root{color-scheme:dark;--bg:#0d120f;--panel:#151d17;--panel2:#1b261e;--line:#29352c;--muted:#8e9b8f;--text:#eff4ec;--green:#b5d687;--lime:#d7f0aa;--orange:#e8b66f;--red:#df8271}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 65% -15%,#283c2b 0,transparent 42%),var(--bg);color:var(--text);font:14px 'DM Sans',sans-serif;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}.loading{padding:40px;font:800 24px Manrope, "Avenir Next", "Segoe UI", sans-serif}.loading span,.brand span{color:var(--green);font-size:10px;letter-spacing:.24em;display:block}.layout{min-height:100vh;display:grid;grid-template-columns:244px 1fr}.sidebar{padding:25px 17px;border-right:1px solid var(--line);display:flex;flex-direction:column;background:#101712}.brand{font:800 18px Manrope, "Avenir Next", "Segoe UI", sans-serif;letter-spacing:-.04em;padding:0 10px 34px;color:var(--text);text-decoration:none}.brand span{margin-top:3px}.prop{border:1px solid var(--line);background:var(--panel);padding:13px;border-radius:13px;margin-bottom:26px}.prop small,.eyebrow{display:block;font-size:9px;letter-spacing:.17em;color:var(--muted);font-weight:700}.prop strong{display:block;margin-top:7px;font:700 13px Manrope, "Avenir Next", "Segoe UI", sans-serif}.nav-title{font-size:9px;letter-spacing:.15em;color:#718074;padding:0 11px 8px}.nav{display:grid;gap:5px}.nav button{border:0;text-align:left;color:#aeb9ae;background:none;padding:11px;border-radius:10px}.nav button:hover,.nav button.active{background:#202c22;color:var(--lime)}.side-bottom{margin-top:auto;color:var(--muted);font-size:11px;border-top:1px solid var(--line);padding:16px 9px 0}.side-bottom b{color:var(--green)}main{padding:0 38px 36px;min-width:0}.top{height:76px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px}.top strong{color:var(--text)}.badge{color:var(--green);border:1px solid #3d573c;padding:7px 10px;border-radius:30px;font-size:9px;letter-spacing:.12em}.page{max-width:1200px;margin:0 auto;padding-top:35px}.heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:24px}.heading h1{font:700 clamp(25px,4vw,36px) Manrope, "Avenir Next", "Segoe UI", sans-serif;letter-spacing:-.045em;margin:8px 0}.heading p{color:var(--muted);margin:0}.btn{border:1px solid #445543;background:#263427;color:var(--lime);padding:10px 14px;border-radius:10px;font-weight:700}.btn:hover{background:#344634}.btn.primary{background:var(--green);color:#142016;border:0}.grid{display:grid;gap:14px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px}.card{border:1px solid var(--line);background:linear-gradient(145deg,#18221a,#141b16);border-radius:15px;padding:18px}.stat-label{color:var(--muted);font-size:11px}.stat-value{font:700 27px Manrope, "Avenir Next", "Segoe UI", sans-serif;margin:10px 0 5px}.stat-foot{color:var(--green);font-size:11px}.columns{grid-template-columns:1.35fr 1fr}.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px}.card h2{font:700 15px Manrope, "Avenir Next", "Segoe UI", sans-serif;margin:0}.muted{color:var(--muted)}.rows{display:grid}.row{padding:13px 0;border-top:1px solid #263129;display:flex;align-items:center;justify-content:space-between;gap:12px}.row:first-child{border-top:0}.device-name{font-weight:600}.device-sub{font-size:11px;color:var(--muted);margin-top:4px}.state{font-size:10px;color:var(--green);background:#263628;border-radius:20px;padding:6px 9px;white-space:nowrap}.state.warn{color:var(--orange);background:#372e1e}.state.off{color:#aab3aa;background:#27302a}.chart{height:170px;display:flex;align-items:end;gap:8px;padding:15px 2px 0}.bar{flex:1;min-width:4px;border-radius:5px 5px 1px 1px;background:linear-gradient(#b5d687,#537552);opacity:.82}.chart-labels{display:flex;justify-content:space-between;color:var(--muted);font-size:10px;margin-top:9px}.table{width:100%;border-collapse:collapse}.table th{text-align:left;color:var(--muted);font-size:9px;letter-spacing:.12em;padding:10px;border-bottom:1px solid var(--line)}.table td{padding:12px 10px;border-bottom:1px solid #263129}.empty{padding:24px;color:var(--muted);text-align:center}.stack{display:grid;gap:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field{display:grid;gap:6px}.field label{font-size:11px;color:var(--muted)}.field input,.field select{width:100%;padding:11px 12px;border:1px solid var(--line);background:#0f1511;color:var(--text);border-radius:9px;outline:none}.field input:focus,.field select:focus{border-color:#8eaa6c}.form-actions{display:flex;gap:8px;margin-top:14px}.notice{padding:13px;border:1px solid #61502f;background:#2b2519;border-radius:10px;color:#dfc491;line-height:1.6;font-size:12px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:22px}.login{width:min(440px,100%);border:1px solid var(--line);background:#151d17ed;border-radius:20px;padding:30px;box-shadow:0 25px 100px #0008}.login .brand{padding:0 0 23px}.login h1{font:700 25px Manrope, "Avenir Next", "Segoe UI", sans-serif;margin:5px 0 8px}.login p{color:var(--muted);line-height:1.5;margin:0 0 22px}.login form{display:grid;gap:14px}.login .btn{margin-top:4px}.error{color:#f0a494;font-size:12px;min-height:16px}.footer{margin-top:28px;color:#718074;font-size:10px;display:flex;justify-content:space-between}.toast{position:fixed;bottom:20px;right:20px;background:#d7f0aa;color:#142016;padding:12px 16px;border-radius:10px;box-shadow:0 8px 30px #0008;opacity:0;transform:translateY(10px);transition:.2s;pointer-events:none}.toast.show{opacity:1;transform:none}.mobile-menu{display:none}
@media(max-width:900px){.layout{grid-template-columns:200px 1fr}.sidebar{padding:20px 12px}main{padding:0 22px 28px}.stats{grid-template-columns:repeat(2,1fr)}.columns{grid-template-columns:1fr}}@media(max-width:640px){.layout{display:block}.sidebar{position:fixed;z-index:5;inset:0 auto 0 0;width:min(280px,84vw);transform:translateX(-102%);transition:.2s;box-shadow:20px 0 50px #0008}.sidebar.open{transform:none}main{padding:0 16px 24px}.top{height:62px}.top .crumb{display:none}.mobile-menu{display:inline-flex;background:none;border:0;color:var(--text);font-size:20px;margin-right:10px}.heading{align-items:start;flex-direction:column}.heading .btn{width:100%}.stats{gap:9px}.card{padding:14px}.stat-value{font-size:23px}.form-grid{grid-template-columns:1fr}.table th:nth-child(3),.table td:nth-child(3){display:none}.footer{gap:12px;line-height:1.5}}

.prop select{margin-top:7px;width:100%;padding:8px 24px 8px 0;background:#151d17;color:var(--text);border:0;font:700 13px Manrope, "Avenir Next", "Segoe UI", sans-serif;outline:none}.prop select option{background:#151d17;color:var(--text)}

.nav-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:5px;background:#453529;color:#edbd79;border-radius:20px;font-size:9px}
.side-logout{margin-top:12px}.stat-denominator{font-size:15px;color:var(--muted)}.stat-unit{font-size:16px}.mt-14{margin-top:14px}.mt-16{margin-top:16px}.mb-14{margin-bottom:14px}.mb-12{margin-bottom:12px}.table-scroll{overflow:auto}.modal-overlay{position:fixed;inset:0;z-index:9;background:#000a;display:grid;place-items:center;padding:20px}.bar-height-5{height:5%}
.bar-height-10{height:10%}
.bar-height-15{height:15%}
.bar-height-20{height:20%}
.bar-height-25{height:25%}
.bar-height-30{height:30%}
.bar-height-35{height:35%}
.bar-height-40{height:40%}
.bar-height-45{height:45%}
.bar-height-50{height:50%}
.bar-height-55{height:55%}
.bar-height-60{height:60%}
.bar-height-65{height:65%}
.bar-height-70{height:70%}
.bar-height-75{height:75%}
.bar-height-80{height:80%}
.bar-height-85{height:85%}
.bar-height-90{height:90%}
.bar-height-95{height:95%}
.bar-height-100{height:100%}
.demo-simulator .card-head{align-items:flex-start}.demo-simulator p{color:var(--muted);font-size:12px;line-height:1.5;margin:7px 0 0}.scenario-actions{display:flex;flex-wrap:wrap;gap:8px}.scenario-actions .muted{font-size:12px}@media(max-width:640px){.scenario-actions .btn{flex:1 1 100%;text-align:left}}
.energy-controls,.energy-dates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:620px;margin-bottom:12px}.energy-dates{margin-top:12px}.energy-chart{height:230px}.chart-summary{display:flex;justify-content:space-between;gap:10px;margin-top:10px;color:var(--muted);font-size:11px}.energy-chart+.chart-labels span{max-width:48%;overflow-wrap:anywhere}.energy-chart+.chart-labels span:last-child{text-align:right}@media(max-width:640px){.energy-controls,.energy-dates{grid-template-columns:1fr}.energy-chart{height:180px;gap:4px}.chart-summary{flex-direction:column}}
.connection-banner{display:grid;gap:4px;margin:16px 0 0;padding:13px 15px;border:1px solid #765144;background:#34241f;border-radius:11px;color:#f0c0a9;font-size:12px}.connection-banner strong{letter-spacing:.08em;font-size:10px}.connection-banner span{color:#dfc3b5;line-height:1.5}
.status-panel .card-head{align-items:flex-start}.status-intro{font-size:12px;line-height:1.5;margin:7px 0 0}.status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.status-tile{min-width:0;padding:14px;border:1px solid #29352c;border-radius:12px;background:linear-gradient(145deg,#1a251c,#131a15)}.status-title{color:var(--muted);font-size:11px}.status-value{margin:9px 0 6px;font:700 16px Manrope,"Avenir Next","Segoe UI",sans-serif;overflow-wrap:anywhere}.status-detail{font-size:10px;line-height:1.5;color:#91a092}@media(max-width:900px){.status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:380px){.status-grid{grid-template-columns:1fr}.status-panel .card-head{flex-direction:column;gap:12px}}
.device-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.btn.danger-outline{border-color:#68453c;background:#281d1a;color:#e9a795;padding:7px 9px;font-size:10px}.btn.danger-outline:hover{background:#3b2924}@media(max-width:640px){.device-row-actions{align-items:flex-end;flex-direction:column}.device-row-actions .state{font-size:9px}.device-row-actions .btn{padding:7px 8px}}
.integration-list{display:grid;gap:10px}.integration-item{padding:13px;border:1px solid var(--line);background:#111813;border-radius:12px}.integration-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding-bottom:10px;border-bottom:1px solid #263129}.integration-head strong{font:700 13px Manrope,"Avenir Next","Segoe UI",sans-serif}.integration-facts{display:grid;gap:8px;padding:10px 0}.integration-facts div{display:grid;grid-template-columns:minmax(120px,.7fr) 1.3fr;gap:10px;font-size:10px;line-height:1.5}.integration-facts span{color:var(--muted)}.integration-facts b{font-weight:500;overflow-wrap:anywhere}.integration-foot{border-top:1px solid #263129;padding-top:8px;color:var(--muted);font-size:9px;line-height:1.5}@media(max-width:640px){.integration-facts div{grid-template-columns:1fr;gap:2px}.integration-head{flex-direction:column}}
.alert-controls{display:grid;grid-template-columns:1fr minmax(160px,260px);align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:11px}.alert-controls select{padding:9px 10px;background:#101712;border:1px solid var(--line);border-radius:9px;color:var(--text)}.alert-row{align-items:flex-start}.alert-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:6px;color:var(--muted);font-size:10px}.severity{padding:4px 7px;border-radius:20px;font-size:9px;letter-spacing:.03em}.severity-critical,.severity-error{background:#42251f;color:#f0a18e}.severity-warning{background:#392e1c;color:#e8c47d}.severity-info{background:#22312b;color:#a9c6a3}@media(max-width:640px){.alert-controls{grid-template-columns:1fr}.alert-row{flex-direction:column}.alert-row>div:last-child{align-self:flex-end}}
@media(max-width:640px){.row:has([data-edit-rule]){align-items:flex-start;flex-direction:column}.row:has([data-edit-rule]) .form-actions{margin-top:5px;flex-wrap:wrap}}
.condition-list{display:grid;gap:10px}.condition-row{padding:12px;border:1px solid var(--line);background:#111813;border-radius:12px}.condition-row .form-grid{align-items:end}.condition-remove[hidden]{display:none!important}@media(max-width:640px){.condition-row .form-grid{grid-template-columns:1fr}.condition-row .condition-remove{width:100%}}
.schedule-panel{padding:13px;border:1px solid var(--line);background:#111813;border-radius:12px}.schedule-toggle{display:flex;align-items:center;gap:10px;font-weight:600}.schedule-toggle input,.day-choice input{width:auto;accent-color:var(--green)}.day-picker{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.day-choice{display:flex;align-items:center;justify-content:center;gap:5px;padding:8px 4px;border:1px solid var(--line);border-radius:8px;color:var(--muted);font-size:11px}.day-choice:has(input:checked){border-color:#58724b;color:var(--lime);background:#1d2a20}.schedule-panel [data-schedule-fields][hidden]{display:none!important}@media(max-width:640px){.day-picker{grid-template-columns:repeat(4,minmax(0,1fr))}}

@media(max-width:640px){.settings-edit-form,.settings-add-form{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.settings-edit-form>*,.settings-add-form>*{width:100%;min-width:0}.table-scroll>.table{table-layout:fixed;width:100%}.table-scroll>.table th,.table-scroll>.table td{overflow-wrap:anywhere;padding:10px 7px}.table-scroll>.table th:nth-child(1),.table-scroll>.table td:nth-child(1){width:24%}.table-scroll>.table th:nth-child(2),.table-scroll>.table td:nth-child(2){width:52%}.table-scroll>.table th:nth-child(4),.table-scroll>.table td:nth-child(4){width:24%}}

.backup-create{width:100%;margin:8px 0}
.menu-backdrop{display:none}
@media(max-width:640px){.menu-backdrop{position:fixed;inset:0;z-index:4;width:100%;height:100%;border:0;padding:0;background:rgba(0,0,0,.58)}.layout.menu-open .menu-backdrop{display:block}}
