:root{--bg: #0d0f12;--deck: #171b1f;--panel: #1e2329;--well: #0c0f0d;--raised: #262c33;--edge: #333b43;--edge-soft: #262d34;--ink: #eae7dd;--ink-dim: #9aa199;--ink-faint: #5f6864;--green: #5de08c;--green-2: #3fae6a;--amber: #e6ad55;--red: #e0685e;--green-glow: rgba(93,224,140,.3);--s1: 5px;--s2: 8px;--s3: 13px;--s4: 21px;--s5: 34px;--s6: 55px;--s7: 89px;--swiss: "Helvetica Neue", Helvetica, "Arial Nova", Arial, system-ui, sans-serif;--mono: ui-monospace, "SF Mono", "Cascadia Code", "JetBrains Mono", Menlo, Consolas, monospace;--radius: 14px;--lamp-off: #33393c;color-scheme:dark}:root[data-theme=light],:root[data-theme=dark]{color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:radial-gradient(120% 90% at 50% -20%,#1a2320 0%,var(--bg) 55%),var(--bg);color:var(--ink);font-family:var(--swiss);-webkit-font-smoothing:antialiased;line-height:1.4;min-height:100vh}.stage{max-width:1100px;margin:0 auto;padding:clamp(14px,4vw,var(--s6)) clamp(12px,3vw,var(--s5))}.deck{background:linear-gradient(180deg,#1c2126 0%,var(--deck) 40%,#14181c 100%);border:1px solid var(--edge);border-radius:22px;box-shadow:0 1px #ffffff0d inset,0 40px 90px -40px #000000d9,0 2px 6px #0006;padding:clamp(14px,3.2vw,var(--s5));display:flex;flex-direction:column;gap:var(--s4)}.deck-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);flex-wrap:wrap}.brand{display:flex;align-items:center;gap:var(--s3);min-width:0}.logomark{width:40px;height:40px;flex:none;filter:drop-shadow(0 0 10px var(--green-glow))}.wordmark h1{margin:0;font-size:15px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}.wordmark p{margin:2px 0 0;font-family:var(--mono);font-size:11px;color:var(--ink-dim);letter-spacing:.04em;font-variant-numeric:tabular-nums}.lamps{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}.lamp{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-dim);background:var(--well);border:1px solid var(--edge-soft);padding:6px 10px 6px 8px;border-radius:999px}.led{width:8px;height:8px;border-radius:50%;background:var(--lamp-off);flex:none}.led.on{background:var(--green);box-shadow:0 0 8px var(--green)}.led.warn{background:var(--amber);box-shadow:0 0 8px var(--amber)}.led.off{background:var(--red);box-shadow:0 0 8px #e0685eb3}.lamp b{color:var(--ink);font-weight:600}.hero{display:grid;grid-template-columns:1.618fr 1fr;gap:var(--s4);align-items:stretch}.module{background:linear-gradient(180deg,var(--panel),#191e23);border:1px solid var(--edge-soft);border-radius:var(--radius);box-shadow:0 1px #ffffff0a inset}.mod-label{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-faint);padding:var(--s3) var(--s4) 0;display:flex;justify-content:space-between;align-items:baseline;gap:var(--s2)}.gauge-mod{display:flex;flex-direction:column}.gauge-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--s3) var(--s4) var(--s5)}.lcd{position:relative;width:min(300px,62vw);aspect-ratio:1;display:grid;place-items:center}.lcd svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;transform:rotate(-90deg)}.lcd .track{fill:none;stroke:#1b211d;stroke-width:13}.lcd .fill{fill:none;stroke:var(--green);stroke-width:13;stroke-linecap:round;filter:drop-shadow(0 0 6px var(--green-glow));transition:stroke-dashoffset 1s cubic-bezier(.2,.7,.2,1),stroke .6s ease}.readout{text-align:center;z-index:1}.soc{font-family:var(--mono);font-weight:600;font-variant-numeric:tabular-nums;font-size:clamp(56px,13vw,92px);line-height:.9;letter-spacing:-.03em;color:var(--green);text-shadow:0 0 18px var(--green-glow)}.soc small{font-size:.34em;color:var(--ink-dim);text-shadow:none;margin-left:4px}.status{margin-top:var(--s2);display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim);border:1px solid var(--edge);border-radius:999px;padding:5px 12px}.status.charging{color:var(--green);border-color:#5de08c59}.status.discharging{color:var(--amber);border-color:#e6ad5559}.status.passthrough{color:var(--green);border-color:#5de08c40}.status .pulse{width:7px;height:7px;border-radius:50%;background:currentColor;animation:pulse 2s ease-in-out infinite}.sub-read{display:flex;justify-content:center;gap:var(--s5);padding:0 var(--s4) var(--s4);font-family:var(--mono);font-variant-numeric:tabular-nums;flex-wrap:wrap}.sub-read div{text-align:center}.sub-read .n{font-size:18px;color:var(--ink)}.sub-read .k{font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin-top:3px}.transport{display:flex;flex-direction:column}.transport-body{flex:1;display:flex;flex-direction:column;gap:var(--s4);padding:var(--s3) var(--s4) var(--s4)}.plugs{display:flex;flex-direction:column;gap:var(--s3)}.plug{display:flex;align-items:flex-start;gap:var(--s4)}.power-btn{--ring: var(--lamp-off);position:relative;width:84px;height:84px;flex:none;border-radius:50%;border:1px solid var(--edge);cursor:pointer;background:radial-gradient(120% 120% at 50% 30%,#2a3138,#14181c 70%);box-shadow:0 6px 14px #00000080,0 1px #ffffff0f inset;display:grid;place-items:center;color:var(--ink-faint);transition:transform .12s ease,color .3s ease,box-shadow .3s ease}.power-btn svg{width:34px;height:34px}.power-btn:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:2px solid var(--ring);opacity:0;transition:opacity .3s,border-color .3s}.power-btn:active{transform:translateY(1px) scale(.985)}.power-btn:focus-visible{outline:2px solid var(--green);outline-offset:4px}.power-btn:disabled{cursor:not-allowed}.plug.on .power-btn{color:var(--green);--ring: var(--green);box-shadow:0 6px 14px #00000080,0 0 22px var(--green-glow),0 1px #ffffff0f inset}.plug.on .power-btn:after{opacity:1}.plug.pending .power-btn{color:var(--amber);--ring: var(--amber);animation:pulse 1s ease-in-out infinite}.plug.offline{opacity:.6}.plug-meta{min-width:0;flex:1}.plug-name{font-size:13px;font-weight:600;letter-spacing:.02em}.plug-name .tag{font-family:var(--mono);font-size:9px;letter-spacing:.12em;color:var(--green);border:1px solid rgba(93,224,140,.4);border-radius:5px;padding:1px 5px;margin-left:6px;vertical-align:2px}.plug-state{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim);margin-top:5px}.plug.on .plug-state{color:var(--green)}.plug.pending .plug-state{color:var(--amber)}.plug.offline .plug-state{color:var(--red)}.plug-metrics{display:flex;gap:var(--s4);margin-top:var(--s3);font-family:var(--mono);font-variant-numeric:tabular-nums;flex-wrap:wrap}.plug-metrics .n{font-size:15px;color:var(--ink)}.plug-metrics .k{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.plug-arm{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.plug-arm input{width:14px;height:14px;accent-color:var(--green);cursor:pointer}.plug-empty{color:var(--ink-dim);font-size:12.5px;font-family:var(--mono);padding:var(--s3) 0}.vu-rack{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3);margin-top:auto}.vu{background:var(--well);border:1px solid var(--edge-soft);border-radius:10px;padding:var(--s3)}.vu-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--s2)}.vu-head .t{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint)}.vu-head .v{font-family:var(--mono);font-size:14px;font-variant-numeric:tabular-nums;color:var(--ink)}.vu-head .v em{font-style:normal;font-size:9px;color:var(--ink-faint);margin-left:2px}.segs{display:flex;flex-direction:column-reverse;gap:3px;height:96px}.seg{flex:1;border-radius:2px;background:#1a1f1c;transition:background .18s ease,box-shadow .18s ease}.vu.in .seg.lit{background:var(--green);box-shadow:0 0 6px var(--green-glow)}.vu.out .seg.lit{background:var(--amber);box-shadow:0 0 6px #e6ad554d}.vu .seg.peak{background:var(--ink);box-shadow:0 0 6px #eae7dd80}.spectrum-mod{padding-bottom:var(--s4)}.legend{display:flex;gap:var(--s4);align-items:center;flex-wrap:wrap}.legend span{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.legend .swatch{width:26px;height:8px;border-radius:2px;background:linear-gradient(90deg,var(--green),var(--amber),var(--red))}.legend .line{width:20px;height:0;border-top:2px solid var(--ink)}.spectrum-wrap{padding:var(--s3) var(--s4) 0;position:relative}.spectrum-wrap svg{width:100%;height:168px;display:block;overflow:visible}.bar{transition:opacity .15s;cursor:crosshair}.bar:hover{opacity:.75}.tip{position:absolute;pointer-events:none;opacity:0;transform:translate(-50%,-8px);background:var(--well);border:1px solid var(--edge);border-radius:8px;padding:7px 10px;font-family:var(--mono);font-size:11px;color:var(--ink);white-space:nowrap;transition:opacity .12s;z-index:3;box-shadow:0 8px 20px #0009}.tip b{color:var(--green)}.plan-note{font-family:var(--mono);font-size:11.5px;color:var(--ink-dim);padding:var(--s3) var(--s4) 0;letter-spacing:.01em}.plan-note b{color:var(--green)}.plan-note .dear{color:var(--amber)}.arm{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);padding:var(--s4);flex-wrap:wrap}.arm-text{min-width:200px;flex:1}.arm-title{font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink)}.arm.armed .arm-title{color:var(--green)}.arm-desc{color:var(--ink-dim);font-size:12.5px;margin-top:5px;max-width:52ch}.arm-foot{font-family:var(--mono);font-size:10px;color:var(--ink-faint);margin-top:7px;letter-spacing:.04em}.rocker{--x: 3px;position:relative;width:92px;height:42px;flex:none;border-radius:999px;border:1px solid var(--edge);cursor:pointer;background:var(--well);box-shadow:0 2px 6px #0006 inset;transition:background .3s}.rocker:focus-visible{outline:2px solid var(--green);outline-offset:3px}.rocker .knob{position:absolute;top:3px;left:var(--x);width:34px;height:34px;border-radius:50%;background:linear-gradient(180deg,#3a424a,#262c33);border:1px solid var(--edge);box-shadow:0 2px 5px #00000080;transition:left .22s cubic-bezier(.3,.8,.3,1),background .3s}.arm.armed .rocker{background:#5de08c24}.arm.armed .rocker .knob{left:calc(100% - 37px);background:linear-gradient(180deg,var(--green),var(--green-2))}.rocker .rock-label{position:absolute;top:50%;transform:translateY(-50%);font-family:var(--mono);font-size:9px;letter-spacing:.12em;color:var(--ink-faint)}.rocker .on-l{left:12px;opacity:0;transition:opacity .2s}.rocker .off-l{right:11px}.arm.armed .rocker .on-l{opacity:1;color:#0d0f12}.arm.armed .rocker .off-l{opacity:0}.spec{border:1px solid var(--edge-soft);border-radius:var(--radius);background:linear-gradient(180deg,var(--panel),#191e23);overflow:hidden}.spec>summary{list-style:none;cursor:pointer;padding:var(--s4);display:flex;align-items:center;justify-content:space-between;gap:var(--s3);font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-dim)}.spec>summary::-webkit-details-marker{display:none}.spec>summary:focus-visible{outline:2px solid var(--green);outline-offset:-4px;border-radius:var(--radius)}.spec .chev{transition:transform .25s;color:var(--ink-faint)}.spec[open] .chev{transform:rotate(90deg)}.spec-body{padding:0 var(--s4) var(--s4);display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--s3)}.spec-settings{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;gap:0 var(--s5);background:var(--well);border:1px solid var(--edge-soft);border-radius:10px;padding:var(--s2) var(--s4)}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding:10px 0;border-bottom:1px solid var(--edge-soft);min-height:44px}.setting-row label{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.setting-row .setting-val{font-family:var(--mono);font-size:12px;color:var(--ink-dim);text-align:right}.setting-row select{background:var(--raised);color:var(--ink);border:1px solid var(--edge);border-radius:8px;padding:7px 10px;font-family:var(--mono);font-size:12px;max-width:60%}.setting-row select:focus{outline:none;border-color:var(--green)}.cell{background:var(--well);border:1px solid var(--edge-soft);border-radius:10px;padding:var(--s3)}.cell .k{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.cell .n{font-family:var(--mono);font-size:17px;font-variant-numeric:tabular-nums;color:var(--ink);margin-top:6px}.cell .n.sm{font-size:13px}.cell .n em{font-style:normal;font-size:10px;color:var(--ink-faint);margin-left:2px}.savings{grid-column:1 / -1;display:flex;align-items:center;gap:var(--s4);background:var(--well);border:1px solid var(--edge-soft);border-radius:10px;padding:var(--s3) var(--s4);flex-wrap:wrap}.savings .big{font-family:var(--mono);font-size:26px;font-variant-numeric:tabular-nums;color:var(--green)}.savings .med{font-family:var(--mono);font-size:18px;font-variant-numeric:tabular-nums;color:var(--ink)}.savings .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.savings .spark{margin-left:auto}.savings-note{grid-column:1 / -1;font-family:var(--mono);font-size:10.5px;color:var(--ink-faint);letter-spacing:.02em}.foot{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);font-family:var(--mono);font-size:10.5px;color:var(--ink-faint);letter-spacing:.06em;flex-wrap:wrap}.foot .mock{color:#0d0f12;background:var(--amber);border-radius:5px;padding:2px 8px;font-weight:700;letter-spacing:.1em}.gate{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:radial-gradient(120% 90% at 50% -10%,#1a2320 0%,var(--bg) 60%)}.gate-box{display:flex;flex-direction:column;gap:var(--s3);width:300px;padding:var(--s5);background:linear-gradient(180deg,var(--panel),#191e23);border:1px solid var(--edge);border-radius:18px;box-shadow:0 40px 90px -40px #000000d9}.gate-brand{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;margin-bottom:4px}.gate-brand .logomark{width:30px;height:30px}.gate-box input{background:var(--well);color:var(--ink);border:1px solid var(--edge);border-radius:10px;padding:12px;font-size:15px;font-family:var(--mono)}.gate-box input:focus{outline:none;border-color:var(--green)}.gate-box button{background:var(--green);color:#04170c;border:none;border-radius:10px;padding:12px;font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;font-family:var(--mono)}.gate-box button:hover{filter:brightness(1.08)}.gate-err{color:var(--red);font-size:12px;min-height:15px;font-family:var(--mono)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}@media (max-width: 720px){.hero,.spec-settings{grid-template-columns:1fr}.lamps{width:100%}}@media (max-width: 420px){.plug-metrics{gap:var(--s3)}.sub-read{gap:var(--s4)}}
