:root{--layout-max:1248px;--bg:#0b0d12;--panel:#141821;--panel2:#1b212d;--line:#262d3b;--ink:#e8eaf0;--mut:#8b93a7;--accent:#3b82f6;--green:#34d399;--amber:#fbbf24;--red:#f87171;--shadow:0 1px 0 #ffffff08, 0 8px 24px #00000059}*{box-sizing:border-box}html,body{margin:0;overflow-x:hidden}body{background:radial-gradient(1200px 600px at 80% -10%, #15213a 0, transparent 60%), var(--bg);color:var(--ink);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}a{color:var(--accent)}header.device-header{z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#0b0d12cc;position:sticky;top:0}.hd{max-width:var(--layout-max);flex-wrap:wrap;align-items:center;gap:10px;margin:0 auto;padding:11px 14px;display:flex}.brand{letter-spacing:.2px;align-items:center;gap:8px;font-size:15px;font-weight:700;display:flex}.dot{background:var(--mut);border-radius:50%;width:9px;height:9px;box-shadow:0 0 #34d39980}.dot.live{background:var(--green);animation:2s infinite pulse}@keyframes pulse{0%{box-shadow:0 0 #34d39980}70%{box-shadow:0 0 0 7px #34d39900}to{box-shadow:0 0 #34d39900}}.meta{color:var(--mut);font-size:12px}.device-meta{text-align:right;flex:120px;margin-left:auto}nav.device-nav{z-index:20;-webkit-overflow-scrolling:touch;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);background:#0b0d12ed;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-x:auto}nav.device-nav a{min-width:72px;color:var(--mut);border-top:2px solid #0000;flex-direction:column;flex:1 0 auto;justify-content:center;align-items:center;gap:3px;min-height:56px;padding:8px 6px;font-size:10px;text-decoration:none;display:flex}nav.device-nav a.act{color:var(--accent);border-top-color:var(--accent)}nav.device-nav .nl{letter-spacing:.02em;text-align:center;font-size:10px;line-height:1.2}nav.config-subnav{border:1px solid var(--line);-webkit-overflow-scrolling:touch;background:#ffffff0a;border-radius:10px;gap:6px;margin:0 0 16px;padding:4px;display:flex;overflow-x:auto}nav.config-subnav a{text-align:center;color:var(--mut);white-space:nowrap;border-radius:7px;flex:1 0 auto;padding:8px 12px;font-size:13px;text-decoration:none}nav.config-subnav a.act{color:var(--ink);box-shadow:inset 0 0 0 1px var(--line);background:#ffffff14}.debug-panel{border:1px dashed var(--line);background:#ffffff08;border-radius:10px;margin-bottom:16px;padding:12px 14px}.debug-panel-label{letter-spacing:.06em;text-transform:uppercase;color:var(--mut);margin:0 0 10px;font-size:11px;font-weight:600}.debug-panel .config-details{margin:0}.debug-section{margin-bottom:12px}.debug-section-title{color:var(--mut);margin:0 0 6px;font-size:11px;font-weight:600}.debug-kv{grid-template-columns:auto 1fr;gap:2px 10px;margin:0;font-size:12px;display:grid}.debug-kv dt{color:var(--mut)}.debug-kv dd{margin:0;font-family:ui-monospace,monospace}.price-interval-badge{color:var(--mut);margin:0 0 10px;font-size:13px}.price-interval-badge.warn{color:var(--amber)}main.device-main{max-width:var(--layout-max);padding:16px 14px calc(78px + env(safe-area-inset-bottom));margin:0 auto}.grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr));gap:12px;display:grid}.grid>*{min-width:0}.card{background:linear-gradient(180deg, var(--panel), var(--panel2));border:1px solid var(--line);box-shadow:var(--shadow);overflow-wrap:break-word;border-radius:14px;min-width:0;padding:15px}.card h2{text-transform:uppercase;letter-spacing:.07em;color:var(--mut);margin:0 0 8px;font-size:11px;font-weight:600}.val{letter-spacing:-.5px;font-size:clamp(18px,5vw,24px);font-weight:650}.val .u{color:var(--mut);margin-left:3px;font-size:13px;font-weight:500}.sub{color:var(--mut);margin-top:5px;font-size:12px}.on{color:var(--green)}.off{color:var(--mut)}.warn{color:var(--amber)}.imp{color:var(--red)}.exp{color:var(--green)}.buy.imp{color:var(--red)}.sell.exp{color:var(--green)}.band{color:var(--mut);margin-left:6px;font-size:11px}.sect{text-transform:uppercase;letter-spacing:.08em;color:var(--mut);border-bottom:1px solid var(--line);margin:24px 0 10px;padding-bottom:6px;font-size:11px;font-weight:600}.hwpanel{background:linear-gradient(180deg, var(--panel), var(--panel2));border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;flex-direction:column;align-items:stretch;gap:10px;padding:12px 14px;display:flex}.loadctrl{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.loadctrl .btn{border-radius:8px;flex:calc(50% - 3px);min-width:0;min-height:36px;padding:7px 10px;font-size:12px;font-weight:550}.evpanel{background:linear-gradient(180deg, var(--panel), var(--panel2));border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;flex-direction:column;align-items:stretch;gap:10px;margin-bottom:16px;padding:12px 14px;display:flex}.evpanel .evstat{flex:auto;min-width:0}.evpanel .evctrl{flex-direction:column;flex:auto;gap:10px;min-width:0;display:flex}.evpanel .evgoal{color:var(--mut);margin-top:8px;font-size:13px;display:block}.evpanel .evgoal input[type=range],.evpanel .evgoal input[type=time],.ev-range input[type=range]{width:100%;margin-top:4px;display:block}input[type=range]{appearance:none;cursor:pointer;background:0 0;border:none;border-radius:0;height:32px;padding:0}input[type=range]::-webkit-slider-runnable-track{background:var(--line);border-radius:3px;height:6px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);border:2px solid var(--panel);border-radius:50%;width:20px;height:20px;margin-top:-7px;box-shadow:0 1px 4px #00000059}input[type=range]::-moz-range-track{background:var(--line);border-radius:3px;height:6px}input[type=range]::-moz-range-thumb{background:var(--accent);border:2px solid var(--panel);border-radius:50%;width:20px;height:20px;box-shadow:0 1px 4px #00000059}input[type=range]:disabled{opacity:.5;cursor:not-allowed}.evpanel .evvehicle{color:var(--text);font-weight:600}.evpanel .evchargegoal{color:var(--text);font-size:15px;font-weight:600}.evpanel .evoptions{flex-direction:column;gap:4px;display:flex}.evpanel .evoptions .hint{margin:0 0 4px}.evpanel .evoptions .chk{margin-top:0}.evpanel .evctrl--locked{background:#fbbf240f;border:1px dashed #fbbf2466;border-radius:10px;padding:10px}.evpanel .evctrl--locked .loadctrl,.evpanel .evctrl--locked .evoptions>:not(.evpairing-notice){opacity:.48;filter:saturate(.85)}.evpanel .evpairing-notice{color:var(--amber);margin:0 0 6px;line-height:1.45}.evpanel .evpairing-notice a{color:var(--accent);font-weight:600}.grid.single{grid-template-columns:1fr}.row{flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0;display:flex}.btn{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:0;border-radius:10px;justify-content:center;align-items:center;gap:6px;min-height:44px;padding:10px 15px;font-family:inherit;font-size:14px;font-weight:550;line-height:1.2;text-decoration:none;display:inline-flex}.btn:hover{filter:brightness(1.08)}button.btn:disabled,.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;pointer-events:none}.btn.sec{background:var(--panel2);border:1px solid var(--line);color:var(--ink)}.btn-sm{min-height:36px;padding:8px 12px;font-size:13px}.pill{border:1px solid var(--line);color:var(--mut);background:#0f1320;border-radius:999px;padding:4px 10px;font-size:12px}.pill.ok{color:var(--green);border-color:#34d39973}.pill.warn{color:var(--amber);border-color:#fbbf2473}.pill.bad{color:var(--red);border-color:#f8717173}fieldset{border:1px solid var(--line);background:linear-gradient(180deg, var(--panel), var(--panel2));border-radius:14px;margin:0 0 16px;padding:16px}legend{color:var(--ink);padding:0 6px;font-size:13px;font-weight:600}details.config-details{border:1px solid var(--line);background:linear-gradient(180deg, var(--panel), var(--panel2));border-radius:14px;margin:0 0 16px;padding:16px}details.config-details>summary{cursor:pointer;color:var(--ink);font-size:13px;font-weight:600;list-style:none}details.config-details>summary::-webkit-details-marker{display:none}details.config-details>summary:before{content:"▸";color:var(--mut);margin-right:6px;transition:transform .15s;display:inline-block}details.config-details[open]>summary:before{transform:rotate(90deg)}details.config-details>.intro{margin-top:12px}.config-page .intro{margin-bottom:20px}.config-section{border:1px solid var(--line);background:linear-gradient(180deg, var(--panel), var(--panel2));border-radius:14px;margin:0 0 16px;padding:16px}.config-section__head{flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:6px;display:flex}.config-section__title{color:var(--ink);margin:0;font-size:14px;font-weight:600}.config-section__desc{color:var(--mut);margin:0 0 14px;font-size:12px;line-height:1.45}.config-section__body .cols3{margin-top:0}details.config-advanced{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}details.config-advanced>summary{cursor:pointer;color:var(--mut);-webkit-user-select:none;user-select:none;font-size:12px;font-weight:600;list-style:none}details.config-advanced>summary::-webkit-details-marker{display:none}details.config-advanced>summary:before{content:"▸";color:var(--mut);margin-right:6px;transition:transform .15s;display:inline-block}details.config-advanced[open]>summary:before{transform:rotate(90deg)}details.config-advanced>summary:hover{color:var(--ink)}.config-advanced__body{margin-top:12px}.config-actions{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.config-actions .btn{flex:0 auto}.vehicle-card{border:1px solid var(--line);background:#0f1320;border-radius:12px;margin-top:12px;padding:14px}.vehicle-card:first-child{margin-top:0}.vehicle-card__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:14px;display:flex}.vehicle-card__title{color:var(--ink);margin:0;font-size:15px;font-weight:600}.vehicle-card__status{flex-wrap:wrap;gap:6px;display:flex}.vehicle-card__meta{color:var(--mut);margin:4px 0 0;font-size:12px;line-height:1.45}.vehicle-card__fields{grid-template-columns:1fr;gap:12px;display:grid}.vehicle-card__fields label{margin-top:0}.vehicle-card__fields .note{grid-column:1/-1;margin:-4px 0 0}.vehicle-card__pairing{border-top:1px solid var(--line);margin-top:14px;padding-top:14px}.vehicle-card__pairing-title{color:var(--ink);margin:0 0 4px;font-size:12px;font-weight:600}.vehicle-card__pairing-desc{color:var(--mut);margin:0 0 8px;font-size:12px;line-height:1.45}.ev-pairing-status{border:1px solid var(--line);background:#ffffff08;border-radius:10px;align-items:flex-start;gap:12px;margin:0 0 12px;padding:12px 14px;display:flex}.ev-pairing-status--ok{background:#34d3991a;border-color:#34d39973}.ev-pairing-status__icon{color:#04210f;background:var(--green);border-radius:999px;flex:none;place-items:center;width:28px;height:28px;font-size:14px;font-weight:700;line-height:1;display:grid}.ev-pairing-status__body{min-width:0}.ev-pairing-status__title{color:var(--ink);margin:0 0 2px;font-size:14px;font-weight:600}.ev-pairing-status__desc{color:var(--mut);margin:0;font-size:12px;line-height:1.45}.ev-pairing-steps{color:var(--mut);margin:0 0 12px;padding-left:18px;font-size:12px;line-height:1.5}.ev-pairing-steps li+li{margin-top:4px}.vehicle-card__actions{margin-top:0;padding-bottom:4px}.vehicle-card__actions .btn,.vehicle-card__actions .pill{scroll-margin-bottom:calc(88px + env(safe-area-inset-bottom))}.vehicle-card .ev-range{margin-top:0}.ev-page__flash{margin-bottom:14px;display:inline-block}.config-section--account{margin-top:4px}.connection-site-row{grid-template-columns:1fr;align-items:end;gap:10px;margin-top:4px;display:grid}.connection-site-row__action{width:100%;min-height:44px}label{color:var(--mut);margin:10px 0 4px;font-size:12px;display:block}.field-save{vertical-align:middle;margin-left:6px;font-size:11px;font-weight:550;display:inline-block}.field-save.ok{color:var(--green)}.field-save.err{color:var(--red)}.field-cell.field-saved input,.field-cell.field-saved select{border-color:var(--green)}.field-cell.field-save-error input,.field-cell.field-save-error select{border-color:var(--red)}label.chk .field-save{margin-left:8px}input,select{width:100%;color:var(--ink);border:1px solid var(--line);background:#0f1320;border-radius:8px;padding:11px;font-size:16px}input:focus,select:focus{border-color:var(--accent);outline:none}.cols,.cols3{grid-template-columns:1fr;gap:12px;display:grid}.pw-wrap{position:relative}.pw-wrap input{padding-right:42px}.eye-btn{width:32px;height:32px;color:var(--mut);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.eye-btn:hover{color:var(--ink)}.eye-btn.on{color:var(--accent)}.eye-btn svg{width:18px;height:18px;display:block}.eye-btn .ico-off,.eye-btn.on .ico-on{display:none}.eye-btn.on .ico-off{display:block}.note,.intro{color:var(--mut);margin:6px 0 0;font-size:12px;line-height:1.45}.intro{margin:0 0 14px}.q{border:1px solid var(--line);width:20px;height:20px;color:var(--mut);cursor:pointer;vertical-align:middle;background:#0f1320;border-radius:50%;flex:none;margin-left:5px;padding:0;font-size:12px;font-weight:700;line-height:1}.q:hover{color:var(--ink);border-color:var(--accent)}.hint{color:var(--mut);border:1px solid var(--line);border-left:3px solid var(--accent);z-index:2;background:#0f1320;border-radius:8px;margin:6px 0 0;padding:8px 10px;font-size:12px;line-height:1.45;display:none;position:relative}.hint.show{animation:.2s fade;display:block;box-shadow:0 4px 14px #00000059}.hint code{color:var(--ink)}.linkish{color:var(--mut);cursor:pointer;background:0 0;border:0;margin-left:10px;padding:0;font-size:12px;text-decoration:underline}.linkish:hover{color:var(--ink)}.load-sites-wrap{align-items:flex-end;padding-bottom:34px;display:flex}.plan-title{text-transform:uppercase;letter-spacing:.07em;color:var(--mut);margin:0 0 8px;font-size:11px}.htl .mk.auto{border-color:var(--green)}.htl .mk.force-on{border-color:var(--accent)}.htl .mk.force-off{border-color:var(--red)}.lh{color:var(--green);margin:5px 0 0;font-size:12px;font-weight:550}.chk{align-items:center;gap:8px;margin-top:12px;display:flex}.chk input{width:auto;margin:0}.dashstats{margin-bottom:14px}.dayhead{flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:8px;display:flex}.daytitle{color:var(--ink);letter-spacing:-.2px;margin:0;font-size:17px;font-weight:650}.dayclock{color:var(--mut);margin:0;font-size:13px}.dashstatgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.dashstatgrid--two{grid-template-columns:repeat(2,minmax(0,1fr))}.dashstat{min-width:0;padding:12px 14px}.dashstat .val{flex-wrap:wrap;align-items:baseline;gap:0;font-size:clamp(16px,4.5vw,20px);line-height:1.25;display:flex}.dashstat .val .dashstat-suffix{color:var(--mut);margin-left:.35em;font-size:.72em;font-weight:600}.flags{color:var(--mut);margin-top:8px;font-size:11px;line-height:1.4}.homemap{background:linear-gradient(180deg, var(--panel), var(--panel2));border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;margin-bottom:14px;padding:12px}.homemap-stage{border-radius:10px;position:relative;overflow:hidden}.homemap .houseimg{border-radius:10px;width:100%;max-width:100%;height:auto;display:block}.homemap .badge{z-index:2;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line);pointer-events:none;word-break:normal;overflow-wrap:normal;background:#0f1320e0;border-radius:10px;width:max-content;min-width:68px;max-width:min(46vw,148px);padding:6px 9px;font-size:10px;line-height:1.25;transition:border-color .3s,box-shadow .3s;position:absolute;left:auto;right:auto;transform:translateY(-50%)}.homemap .badge .bl{text-transform:uppercase;letter-spacing:.06em;color:var(--mut);white-space:nowrap;margin-bottom:2px;font-size:9px;font-weight:600;display:block}.homemap .badge .bv{color:var(--ink);white-space:nowrap;font-size:clamp(10px,2.8vw,13px);font-weight:650;display:block}.homemap .badge .bs{color:var(--mut);overflow-wrap:break-word;word-break:normal;margin-top:2px;font-size:9px;line-height:1.3;display:block}.homemap .badge .bs .buy.imp{color:var(--red)}.homemap .badge .bs .sell.exp{color:var(--green)}.homemap .badge.b-solar{top:10%;left:54%;transform:translate(-50%)}.homemap .badge.b-grid{max-width:min(48vw,148px);top:58%;left:6%;transform:translateY(-50%)}.homemap .badge.b-batt{top:30%;left:12%;transform:translateY(-50%)}.homemap .badge.b-load{top:48%;left:50%;transform:translate(-50%,-50%)}.homemap .badge.b-hw{top:42%;left:auto;right:8%}.homemap .badge.b-ev{top:65%;left:auto;right:28%}.homemap .badge.b-weather{z-index:3;border-top:0;border-right:0;border-radius:0 10px 0 8px;min-width:0;max-width:min(46vw,148px);padding:4px 7px;line-height:1.15;top:0;left:auto;right:0;transform:none}.homemap .badge .weather-bv{align-items:center;gap:5px;line-height:1;display:flex}.homemap .badge.b-weather .bv{font-size:clamp(10px,2.6vw,12px)}.homemap .badge.b-weather .bs{white-space:normal;margin-top:2px;font-size:8px;line-height:1.2}.homemap .badge .weather-icon{flex:none;display:block}.weather-icon.sun{animation:3s ease-in-out infinite weatherSunPulse}.weather-icon.cloud{animation:5s ease-in-out infinite weatherCloudDrift}.weather-icon.rain .rain-drop{animation:1.1s linear infinite weatherRainFall}.weather-icon.rain .rain-drop.d2{animation-delay:.25s}.weather-icon.rain .rain-drop.d3{animation-delay:.5s}.weather-icon.night{animation:4s ease-in-out infinite weatherMoonGlow}@keyframes weatherSunPulse{0%,to{filter:drop-shadow(0 0 2px #fbbf2466);transform:scale(1)}50%{filter:drop-shadow(0 0 6px #fbbf24bf);transform:scale(1.05)}}@keyframes weatherCloudDrift{0%,to{transform:translate(0)}50%{transform:translate(3px)}}@keyframes weatherRainFall{0%{opacity:.9;transform:translateY(0)}to{opacity:.2;transform:translateY(5px)}}@keyframes weatherMoonGlow{0%,to{opacity:.85}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.weather-icon.sun,.weather-icon.cloud,.weather-icon.rain .rain-drop,.weather-icon.night{animation:none}}.homemap .badge.imp{border-color:#f871718c}.homemap .badge.exp{border-color:#34d3998c}.homemap .badge.chg{border-color:#22d3ee8c}.homemap .badge.dchg{border-color:#fbbf248c}.homemap .badge.load{border-color:#94a3b88c}.homemap .badge.on{border-color:#a78bfa8c}.homemap .badge.active{animation:2s ease-in-out infinite badgePulse}.homemap .badge.imp.active{animation-name:badgePulseImp}.homemap .badge.exp.active{animation-name:badgePulseExp}.homemap .badge.chg.active{animation-name:badgePulseChg}.homemap .badge.dchg.active{animation-name:badgePulseDchg}.homemap .badge.on.active{animation-name:badgePulseOn}@keyframes badgePulse{0%,to{box-shadow:0 0 #3b82f659}50%{box-shadow:0 0 0 7px #3b82f600}}@keyframes badgePulseImp{0%,to{box-shadow:0 0 #f8717159}50%{box-shadow:0 0 0 7px #f8717100}}@keyframes badgePulseExp{0%,to{box-shadow:0 0 #34d39959}50%{box-shadow:0 0 0 7px #34d39900}}@keyframes badgePulseChg{0%,to{box-shadow:0 0 #22d3ee59}50%{box-shadow:0 0 0 7px #22d3ee00}}@keyframes badgePulseDchg{0%,to{box-shadow:0 0 #fbbf2459}50%{box-shadow:0 0 0 7px #fbbf2400}}@keyframes badgePulseOn{0%,to{box-shadow:0 0 #a78bfa59}50%{box-shadow:0 0 0 7px #a78bfa00}}.plan{background:linear-gradient(180deg, var(--panel), var(--panel2));border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;padding:16px}.chart-scroll{-webkit-overflow-scrolling:touch;margin-top:14px;overflow-x:auto}.chart-inner{min-width:100%}.chart{align-items:flex-end;gap:3px;height:180px;padding-bottom:24px;display:flex;position:relative}.chart-axis{width:100%;margin-bottom:4px}.chart .col{flex-direction:column;flex:none;justify-content:flex-end;align-items:center;width:18px;height:100%;display:flex;position:relative}.chart.res-5{gap:2px}.chart.res-5 .col .tl{font-size:8px;bottom:-18px}.chart .col .bk{z-index:2;border-radius:4px 4px 0 0;width:100%;min-height:2px}.chart .col .tl{color:var(--mut);transform-origin:0 0;white-space:nowrap;font-size:9px;position:absolute;bottom:-20px;left:6px;transform:rotate(-50deg)}.chart .col.now{outline:2px solid var(--accent);outline-offset:1px;border-radius:5px}.chart .col.heat .bk{box-shadow:inset 0 0 0 2px #a78bfa}.chart .col.heat:after{content:"↑";color:#a78bfa;z-index:3;font-size:9px;position:absolute;top:-2px}.chart .col.day{background:linear-gradient(#facc1521,#facc1500)}.chart .col.ev .bk{outline-offset:-1px;outline:2px dashed #60a5fa}.chart .col.ev:before{content:"⚡";color:#60a5fa;z-index:3;font-size:8px;line-height:1;position:absolute;top:-2px;right:0}.solarline{pointer-events:none;z-index:1;height:100%;position:absolute;top:0;left:0}.lg{color:var(--mut);flex-wrap:wrap;gap:14px;margin-top:8px;font-size:12px;display:flex}.sw{vertical-align:-1px;border-radius:3px;width:11px;height:11px;margin-right:5px;display:inline-block}.htl{border:1px solid var(--line);background:#0f1320;border-radius:8px;height:40px;margin-top:14px;position:relative;overflow:hidden}.htl .dayband{background:#facc1521;position:absolute;top:0;bottom:0}.htl .seg{z-index:2;border-radius:3px;min-width:2px;position:absolute;top:7px;bottom:7px}.htl .mk{border-left:2px dashed var(--mut);z-index:3;width:0;position:absolute;top:0;bottom:0}.haxis{height:14px;margin-top:3px;position:relative}.haxis span{color:var(--mut);white-space:nowrap;font-size:9px;position:absolute;transform:translate(-50%)}.hlist{color:var(--mut);margin-top:14px;font-size:12px;line-height:1.7}.toast{bottom:calc(74px + env(safe-area-inset-bottom));background:var(--green);color:#04210f;opacity:0;pointer-events:none;z-index:30;border-radius:10px;padding:10px 16px;font-weight:600;transition:all .3s;position:fixed;left:50%;transform:translate(-50%)translateY(20px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.auth-box{background:var(--panel);border:1px solid var(--line);border-radius:14px;max-width:400px;margin:48px auto;padding:24px}.auth-box input{width:100%;margin:8px 0 12px}.err{color:var(--red);font-size:13px}.device-list{margin:0;padding:0;list-style:none}.device-list li{margin-bottom:10px}.device-list a{background:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:12px;padding:14px 16px;text-decoration:none;display:block}@media (width>=600px){.cols,.cols3{grid-template-columns:1fr 1fr}.connection-site-row{grid-template-columns:1fr auto;gap:12px}.connection-site-row__action{width:auto;min-width:7.5rem;margin-bottom:10px}.vehicle-card__actions .btn{flex:none}.vehicle-card__fields{grid-template-columns:1fr 1fr}.vehicle-card__fields .ev-range,.vehicle-card__fields .note{grid-column:1/-1}.hwpanel{flex-direction:row;align-items:center;gap:16px;padding:16px 18px}.evpanel{flex-direction:row;align-items:flex-start;gap:16px;padding:16px 18px}.loadctrl .btn{flex:none;min-height:38px;padding:8px 12px;font-size:13px}.dashstatgrid{grid-template-columns:repeat(3,minmax(0,1fr))}.dashstatgrid--two{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=860px){header.device-header{position:static}nav.device-nav{z-index:10;max-width:var(--layout-max);border-top:0;border-bottom:1px solid var(--line);background:#0b0d12d9;margin:0 auto;padding:0 14px;position:sticky;top:0}nav.device-nav a{border-top:0;border-bottom:2px solid #0000;flex-direction:row;flex:none;min-height:0;padding:11px 14px;font-size:14px}nav.device-nav a.act{color:var(--ink);border-top-color:#0000;border-bottom-color:var(--accent)}nav.device-nav .nl{font-size:14px}main.device-main{padding:18px 14px 24px}.cols3{grid-template-columns:1fr 1fr 1fr}.toast{bottom:18px}}@media (width<=479px){.homemap{padding:8px}.homemap .badge{min-width:72px;max-width:min(52vw,132px);padding:6px 8px;font-size:9px}.homemap .badge.b-solar{top:18%;left:56%}.homemap .badge.b-grid{top:54%;left:2%}.homemap .badge.b-batt{top:28%;left:6%}.homemap .badge.b-load{top:50%;left:50%}.homemap .badge.b-hw{top:44%;right:3%}.homemap .badge.b-ev{top:68%;right:22%}.homemap .badge.b-weather{min-width:0;max-width:min(50vw,132px);padding:3px 6px}.homemap .badge.b-weather .bs{font-size:7px}.dashstatgrid{grid-template-columns:1fr}}.learning-shadow-section{margin-top:0}.learning-shadow-grid{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.75rem 1rem;margin:.75rem 0;display:grid}.learning-shadow-grid .label{opacity:.75;font-size:.75rem;display:block}.learning-shadow-dl{grid-template-columns:auto 1fr;gap:.25rem .75rem;margin:.5rem 0 0;font-size:.9rem;display:grid}.learning-shadow-dl dt{opacity:.7}.learning-meta{margin:.5rem 0 0;font-size:.85rem}.learning-shadow-section .positive{color:var(--ok,#2d8a4e)}
