:root{--bg:#090e17;--card-bg:#131c2b;--header-bg:#1c273a;--text:#e2e8f0;--cyan:#00d2ff;--green-text:#00e676;--red-text:#f87171;--amber-text:#f59e0b;--border:#23334d;--green-bg:#00e67629;--red-bg:#ef444429}#jk-app{background:var(--card-bg);border:1px solid var(--border);border-radius:14px;width:100%;max-width:540px;transition:max-width .3s;overflow:hidden;box-shadow:0 10px 30px #0009}#jk-app.wide-container{width:100%;max-width:1400px}svg{vertical-align:middle;flex-shrink:0;display:inline-block}.header-icon{stroke:var(--cyan);filter:drop-shadow(0 0 6px #00d2ff80);width:18px!important;min-width:18px!important;max-width:18px!important;height:18px!important;min-height:18px!important;max-height:18px!important}.ui-icon{stroke:#94a3b8;width:14px!important;min-width:14px!important;max-width:14px!important;height:14px!important;min-height:14px!important;max-height:14px!important}.soc-svg-icon{stroke:var(--cyan);filter:drop-shadow(0 0 6px #00d2ff73);width:20px!important;min-width:20px!important;max-width:20px!important;height:20px!important;min-height:20px!important;max-height:20px!important}.time-icon{stroke:var(--cyan);width:14px!important;min-width:14px!important;max-width:14px!important;height:14px!important;min-height:14px!important;max-height:14px!important}.item-icon{stroke:var(--cyan);width:13px!important;min-width:13px!important;max-width:13px!important;height:13px!important;min-height:13px!important;max-height:13px!important}.section-icon{stroke:var(--cyan);width:14px!important;min-width:14px!important;max-width:14px!important;height:14px!important;min-height:14px!important;max-height:14px!important}.battery-badge{letter-spacing:.5px;border-radius:20px;align-items:center;gap:6px;padding:3px 9px;font-family:monospace;font-size:.75rem;font-weight:700;transition:all .3s;display:inline-flex}.battery-badge.charging{color:var(--green-text);background:#00e67629;border:1px solid #00e67673;box-shadow:0 0 10px #00e67640}.battery-badge.discharging{color:var(--red-text);background:#ef444429;border:1px solid #ef444473;box-shadow:0 0 10px #ef444440}.battery-badge.idle{color:#94a3b8;background:#94a3b81f;border:1px solid #94a3b840}.battery-badge.paused{color:#f59e0b;background:#f59e0b29;border:1px solid #f59e0b73;box-shadow:0 0 10px #f59e0b33}.paused .pulse-dot{background-color:#f59e0b;box-shadow:0 0 6px #f59e0b}.pulse-dot{border-radius:50%;width:7px;height:7px;display:inline-block}.charging .pulse-dot{background-color:var(--green-text);box-shadow:0 0 8px var(--green-text);animation:1.8s infinite pulse-green}.discharging .pulse-dot{background-color:var(--red-text);box-shadow:0 0 8px var(--red-text);animation:1.8s infinite pulse-red}.idle .pulse-dot{background-color:#94a3b8}@keyframes pulse-green{0%{opacity:.7;transform:scale(.9)}50%{opacity:1;transform:scale(1.3);box-shadow:0 0 10px #00e676}to{opacity:.7;transform:scale(.9)}}@keyframes pulse-red{0%{opacity:.7;transform:scale(.9)}50%{opacity:1;transform:scale(1.3);box-shadow:0 0 10px #f87171}to{opacity:.7;transform:scale(.9)}}.offgrid-banner{border-bottom:2px solid var(--border);background:linear-gradient(90deg,#00e6761f 0%,#152236 60%,#00d2ff14 100%);align-items:center;gap:12px;padding:8px 16px;display:flex}.offgrid-avatar{-o-object-fit:cover;object-fit:cover;-o-object-position:center 15%;object-position:center 15%;border:2px solid var(--green-text);border-radius:50%;flex-shrink:0;box-shadow:0 0 10px #00e67673;width:42px!important;min-width:42px!important;max-width:42px!important;height:42px!important;min-height:42px!important;max-height:42px!important}.offgrid-info{flex-direction:column;flex-grow:1;gap:2px;display:flex}.offgrid-title-row{align-items:center;gap:8px;display:flex}.offgrid-badge{color:var(--green-text);letter-spacing:.5px;background:#00e67633;border:1px solid #00e67673;border-radius:4px;align-items:center;gap:4px;padding:2px 7px;font-family:monospace;font-size:.72rem;font-weight:800;display:inline-flex}.offgrid-pill{color:var(--cyan);letter-spacing:.3px;background:#00d2ff2e;border:1px solid #00d2ff66;border-radius:12px;padding:2px 7px;font-family:monospace;font-size:.68rem;font-weight:700}.offgrid-sub{color:#94a3b8;letter-spacing:.2px;font-size:.73rem;font-weight:500}.dials-showcase{background:var(--bg);grid-template-columns:1fr 1fr;gap:10px;padding:10px 12px;display:grid}@media (width<=700px){.dials-showcase{grid-template-columns:1fr 1fr;gap:8px;padding:8px 10px}}.digital-dial-card{border:1px solid var(--border);background:linear-gradient(145deg,#131d2e 0%,#172439 100%);border-radius:12px;flex-direction:column;min-width:0;padding:8px;transition:all .35s;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 24px #00000059}.digital-dial-card:before{content:"";background:0 0;height:2px;transition:background .35s,box-shadow .35s;position:absolute;top:0;left:0;right:0}.digital-dial-card.mode-charging:before{background:linear-gradient(90deg,#00c853,#00e676,#00b0ff);box-shadow:0 0 12px #00e676b3}.digital-dial-card.mode-discharging:before{background:linear-gradient(90deg,#dc2626,#ef4444,#f87171);box-shadow:0 0 12px #ef4444b3}.digital-dial-card.mode-idle:before{background:#334155}.battery-casing-enclosure{border:1px solid #00d2ff47!important;box-shadow:0 8px 24px #00000073,inset 0 1px #ffffff14!important}.battery-top-terminals-bar{background:#0a101aa6;border:1px solid #ffffff0f;border-radius:6px;justify-content:space-between;align-items:center;min-height:24px;margin-bottom:5px;padding:3px 6px;display:flex}.terminal-post{letter-spacing:.5px;align-items:center;gap:3px;font-family:monospace;font-size:.65rem;font-weight:900;line-height:1;display:flex}.terminal-post.neg-post{color:#94a3b8}.terminal-post.neg-post .post-nut{background:linear-gradient(135deg,#64748b 0%,#334155 100%);border:1px solid #94a3b8;border-radius:3px;width:12px;height:12px;display:inline-block;box-shadow:inset 0 1px 2px #ffffff40}.terminal-post.pos-post{color:#fbbf24}.terminal-post.pos-post .post-nut{background:linear-gradient(135deg,#f59e0b 0%,#b45309 100%);border:1px solid #fde68a;border-radius:3px;width:12px;height:12px;transition:all .35s;display:inline-block;box-shadow:inset 0 1px 2px #fff6,0 0 6px #f59e0b66}.battery-casing-enclosure.charging-active .terminal-post.pos-post .post-nut{background:linear-gradient(135deg,#00e676 0%,#00a854 100%);border-color:#b9f6ca;box-shadow:0 0 8px #00e676,0 0 16px #00e67680}.casing-vent-plug{color:#64748b;letter-spacing:.6px;align-items:center;gap:3px;font-family:monospace;font-size:.52rem;font-weight:700;display:flex}.casing-vent-plug .vent-dot{background:#1e293b;border:1px solid #475569;border-radius:50%;width:6px;height:6px;box-shadow:inset 0 1px 2px #000c}.solar-sun-reactor-bar{background:#0a101aa6;border:1px solid #ffffff0f;border-radius:6px;justify-content:space-between;align-items:center;min-height:24px;margin-bottom:5px;padding:3px 6px;display:flex}.sun-reactor-widget{justify-content:center;align-items:center;width:18px;height:18px;display:flex;position:relative}.sun-core-circle{z-index:2;font-size:13px;line-height:1;transition:transform .3s,filter .3s;position:relative}.sun-rays-corona{pointer-events:none;border-radius:50%;animation:12s linear infinite rotateCorona;position:absolute;inset:-3px}.sun-rays-corona .ray{transform-origin:0 0;background:#fbbf2499;border-radius:1px;width:2px;height:4px;position:absolute;top:50%;left:50%}.sun-rays-corona .ray.r1{transform:rotate(0)translate(-1px,-10px)}.sun-rays-corona .ray.r2{transform:rotate(45deg)translate(-1px,-10px)}.sun-rays-corona .ray.r3{transform:rotate(90deg)translate(-1px,-10px)}.sun-rays-corona .ray.r4{transform:rotate(135deg)translate(-1px,-10px)}.sun-rays-corona .ray.r5{transform:rotate(180deg)translate(-1px,-10px)}.sun-rays-corona .ray.r6{transform:rotate(225deg)translate(-1px,-10px)}.sun-rays-corona .ray.r7{transform:rotate(270deg)translate(-1px,-10px)}.sun-rays-corona .ray.r8{transform:rotate(315deg)translate(-1px,-10px)}@keyframes rotateCorona{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.solar-sun-reactor-bar.active-charging .sun-core-circle{filter:drop-shadow(0 0 6px #f59e0b)drop-shadow(0 0 10px #00e676);animation:1.8s ease-in-out infinite alternate sunPulse}.solar-sun-reactor-bar.active-charging .sun-rays-corona{animation:5s linear infinite rotateCorona}.solar-sun-reactor-bar.active-charging .sun-rays-corona .ray{background:#fbbf24;box-shadow:0 0 4px #00e676}@keyframes sunPulse{0%{transform:scale(.95)}to{transform:scale(1.15)}}.solar-stream-indicator{letter-spacing:.3px;align-items:center;gap:5px;font-family:monospace;font-size:.58rem;font-weight:700;display:flex}.stream-particles{align-items:center;gap:2px;display:flex}.photon-dot{opacity:.5;background:#64748b;border-radius:50%;width:4px;height:4px;transition:all .3s}.photon-arrow{color:#64748b;font-size:.65rem;line-height:1;transition:color .3s}.stream-status-text{color:#94a3b8;white-space:nowrap;letter-spacing:.3px;transition:color .3s}.solar-sun-reactor-bar.active-charging .stream-status-text{color:var(--green-text);text-shadow:0 0 8px #00e67673}.solar-sun-reactor-bar.active-charging .photon-arrow{color:var(--green-text)}.solar-sun-reactor-bar.active-charging .photon-dot{opacity:1;background:#00e676;box-shadow:0 0 6px #00e676}.solar-sun-reactor-bar.active-charging .photon-dot.p1{animation:1.1s infinite photonFlow}.solar-sun-reactor-bar.active-charging .photon-dot.p2{animation:1.1s .25s infinite photonFlow}.solar-sun-reactor-bar.active-charging .photon-dot.p3{animation:1.1s .5s infinite photonFlow}@keyframes photonFlow{0%{opacity:.4;transform:scale(.7)}50%{opacity:1;transform:scale(1.3)}to{opacity:.4;transform:scale(.7)}}.solar-sun-reactor-bar.active-discharging .stream-status-text,.solar-sun-reactor-bar.active-discharging .photon-arrow{color:var(--red-text)}.solar-sun-reactor-bar.active-discharging .photon-dot{background:#ef4444}.dial-header{justify-content:space-between;align-items:center;gap:4px;margin-bottom:2px;display:flex}.dial-title-wrap{align-items:center;gap:5px;min-width:0;display:flex}.dial-icon{stroke:var(--cyan);width:14px!important;min-width:14px!important;height:14px!important;min-height:14px!important}.dial-title{text-transform:uppercase;letter-spacing:.4px;color:#94a3b8;white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;font-weight:700;overflow:hidden}.dial-status-pill{color:var(--cyan);letter-spacing:.3px;white-space:nowrap;background:#00d2ff1f;border:1px solid #00d2ff4d;border-radius:10px;flex-shrink:0;padding:1px 5px;font-family:monospace;font-size:.62rem;font-weight:700}.flow-pill{letter-spacing:.2px;white-space:nowrap;border-radius:10px;flex-shrink:0;padding:1px 5px;font-family:monospace;font-size:.62rem;font-weight:700}.flow-pill.flow-charging{color:var(--green-text);background:#00e6762e;border:1px solid #00e67666}.flow-pill.flow-discharging{color:var(--red-text);background:#ef44442e;border:1px solid #ef444466}.flow-pill.flow-idle{color:#94a3b8;background:#94a3b81f;border:1px solid #94a3b840}.flow-pill.flow-paused{color:#f59e0b;background:#f59e0b2e;border:1px solid #f59e0b66}.dial-gauge-wrapper{aspect-ratio:200/185;justify-content:center;align-items:center;width:100%;max-width:185px;margin:0 auto;display:flex;position:relative}.battery-fluid-chamber{pointer-events:none;z-index:1;background:radial-gradient(circle,#101a2ae6 0%,#0a101afa 100%);border:1px solid #ffffff0d;border-radius:50%;width:136px;height:136px;position:absolute;overflow:hidden;box-shadow:inset 0 0 20px #000000d9}.fluid-wave-wrap{height:var(--fluid-fill-pct,50%);transition:height 1s cubic-bezier(.4,0,.2,1);position:absolute;bottom:0;left:0;right:0;overflow:hidden}.fluid-body{background:linear-gradient(#00e67647 0%,#00b0ff1f 100%);transition:background .4s;position:absolute;inset:10px 0 0}.fluid-wave-svg-box{width:200%;height:14px;animation:3s ease-in-out infinite alternate fluidWaveSway;position:absolute;top:0;left:-50%}.fluid-wave-svg{fill:#00e67659;width:100%;height:100%;transition:fill .4s}@keyframes fluidWaveSway{0%{transform:translate(0)}to{transform:translate(-25%)}}.fluid-bubbles{pointer-events:none;opacity:0;transition:opacity .4s;position:absolute;inset:0}.fluid-wave-wrap.fluid-charging .fluid-bubbles{opacity:1}.fluid-bubbles .bubble{opacity:0;background:#69f0ae;border-radius:50%;width:5px;height:5px;position:absolute;bottom:-6px;box-shadow:0 0 6px #00e676}.fluid-wave-wrap.fluid-charging .bubble.b1{animation:2.2s linear .1s infinite bubbleRise;left:20%}.fluid-wave-wrap.fluid-charging .bubble.b2{animation:2.7s linear .6s infinite bubbleRise;left:40%}.fluid-wave-wrap.fluid-charging .bubble.b3{animation:2.1s linear 1.1s infinite bubbleRise;left:60%}.fluid-wave-wrap.fluid-charging .bubble.b4{animation:2.5s linear 1.6s infinite bubbleRise;left:75%}.fluid-wave-wrap.fluid-charging .bubble.b5{animation:2.9s linear .3s infinite bubbleRise;left:50%}@keyframes bubbleRise{0%{opacity:0;transform:translateY(0)scale(.6)}25%{opacity:.8}75%{opacity:.8}to{opacity:0;transform:translateY(-70px)scale(1.1)}}.fluid-wave-wrap.fluid-discharging .fluid-body{background:linear-gradient(#ef444447 0%,#f59e0b1f 100%)}.fluid-wave-wrap.fluid-discharging .fluid-wave-svg{fill:#ef444459}.fluid-wave-wrap.fluid-idle .fluid-body{background:linear-gradient(#64748b33 0%,#1e293b1a 100%)}.fluid-wave-wrap.fluid-idle .fluid-wave-svg{fill:#64748b40}.dial-svg{z-index:2;width:100%;height:100%;position:relative;overflow:visible}.dial-track{fill:none;stroke:#ffffff14;stroke-width:13px;stroke-linecap:round}.dial-arc{fill:none;stroke-width:13px;stroke-linecap:round;stroke-dasharray:323;stroke-dashoffset:323px;transition:stroke-dashoffset 1s cubic-bezier(.4,0,.2,1),stroke .4s,filter .4s}.dial-flow-tracer{fill:none;stroke-width:5px;stroke-linecap:round;pointer-events:none;opacity:0;transition:opacity .35s}.dial-flow-tracer.tracer-charging{opacity:.95;stroke:#fff;stroke-dasharray:8 28;filter:drop-shadow(0 0 5px #00e676);animation:1.1s linear infinite tracerForward}.dial-flow-tracer.tracer-discharging{opacity:.95;stroke:#fff;stroke-dasharray:8 28;filter:drop-shadow(0 0 5px #ef4444);animation:1.1s linear infinite tracerBackward}@keyframes tracerForward{0%{stroke-dashoffset:72px}to{stroke-dashoffset:0}}@keyframes tracerBackward{0%{stroke-dashoffset:0}to{stroke-dashoffset:72px}}.dial-center-display{text-align:center;pointer-events:none;z-index:3;flex-direction:column;justify-content:center;align-items:center;width:100%;padding:0 4px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-46%)}.dial-direction-label,.dial-top-subtext{letter-spacing:.4px;text-transform:uppercase;color:#94a3b8;text-align:center;white-space:nowrap;text-overflow:ellipsis;justify-content:center;align-items:center;min-height:18px;margin:3px 0 1px;font-family:monospace;font-size:.66rem;font-weight:700;transition:color .3s;display:flex;overflow:hidden}.dial-readout-row{justify-content:center;align-items:baseline;gap:2px;line-height:1;display:flex}.dial-digits{color:#f1f5f9;letter-spacing:-.5px;text-shadow:0 0 16px #00e67659;font-family:monospace;font-size:clamp(1.4rem,5.2vw,1.85rem);font-weight:900;line-height:1;transition:color .3s,text-shadow .3s}.dial-unit-pct{color:#94a3b8;margin-left:2px;font-family:monospace;font-size:clamp(.72rem,2.5vw,.92rem);font-weight:700}.dial-caption{color:#94a3b8;letter-spacing:.2px;white-space:nowrap;margin-top:4px;font-family:monospace;font-size:.74rem;font-weight:600}.dial-power-display{letter-spacing:.2px;color:#f1f5f9;white-space:nowrap;background:#0a101abf;border:1px solid #ffffff17;border-radius:6px;justify-content:center;align-items:center;margin-top:5px;padding:3px 8px;font-family:monospace;font-size:clamp(.85rem,2.8vw,1.02rem);font-weight:800;transition:all .35s;display:inline-flex;box-shadow:inset 0 1px 3px #00000080,0 2px 6px #00000040}.dial-stats-row{border-top:1px solid #ffffff12;grid-template-columns:1fr 1fr;gap:6px;margin-top:4px;padding-top:8px;display:grid}.dial-stat-cell{text-align:center;background:#0a101a73;border:1px solid #ffffff0a;border-radius:6px;flex-direction:column;align-items:center;gap:1px;padding:4px 6px;display:flex}.stat-cell-lbl{text-transform:uppercase;color:#64748b;letter-spacing:.3px;white-space:nowrap;font-size:.58rem;font-weight:600}.stat-cell-val{color:#f1f5f9;white-space:nowrap;font-family:monospace;font-size:.78rem;font-weight:800}.time-estimator-box{background:#0a101ab3;border:1px solid #ffffff14;border-radius:8px;flex-direction:column;grid-column:1/-1;gap:6px;margin-top:2px;padding:10px 12px;transition:all .35s;display:flex}.time-estimator-box.mode-charging{border-left:3px solid var(--green-text);background:linear-gradient(90deg,#00e6761a 0%,#0a101abf 100%)}.time-estimator-box.mode-discharging{border-left:3px solid var(--red-text);background:linear-gradient(90deg,#ef44441a 0%,#0a101abf 100%)}.time-estimator-box.mode-idle{background:#0a101a99;border-left:3px solid #64748b}.time-est-top{justify-content:space-between;align-items:center;display:flex}.time-est-title{align-items:center;gap:6px;display:flex}.time-est-icon-wrap{flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;display:flex}.time-est-title-text{text-transform:uppercase;letter-spacing:.5px;color:#94a3b8;font-size:.73rem;font-weight:700}.time-est-badge{letter-spacing:.3px;color:#94a3b8;background:#94a3b826;border-radius:4px;padding:2px 6px;font-family:monospace;font-size:.65rem;font-weight:700}.time-est-badge.badge-charging{color:var(--green-text);background:#00e67633}.time-est-badge.badge-discharging{color:var(--red-text);background:#ef444433}.time-est-main{flex-direction:column;gap:3px;display:flex}.time-est-primary{color:#f1f5f9;letter-spacing:-.2px;font-family:monospace;font-size:1.25rem;font-weight:800}.time-est-detail{color:#94a3b8;letter-spacing:.2px;font-family:monospace;font-size:.72rem}.summary-grid{background:var(--border);grid-template-columns:repeat(4,1fr);gap:1px;display:grid}.summary-item{background:var(--card-bg);flex-direction:column;align-items:flex-start;gap:4px;padding:10px;font-size:.82rem;transition:background-color .4s;display:flex}.summary-header{align-items:center;gap:4px;width:100%;display:flex}.summary-header span{color:#94a3b8;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;font-weight:600;overflow:hidden}.summary-item .val-wrap{justify-content:space-between;align-items:center;gap:4px;width:100%;display:flex}.summary-item .val{color:var(--cyan);white-space:nowrap;font-family:monospace;font-size:.98rem;font-weight:800}.cell-grid{background:var(--bg);grid-template-columns:repeat(4,1fr);gap:6px;padding:10px 12px;display:grid}.cell-card{border:1px solid var(--border);background:#101928;border-radius:6px;flex-direction:column;justify-content:space-between;gap:3px;min-height:52px;padding:8px 10px;transition:background-color .35s,box-shadow .35s,border-color .35s;display:flex}.cell-card.prismatic-cell{background:linear-gradient(#131d2e 0%,#0d1522 100%);border:1px solid #00d2ff2e;border-radius:6px;flex-direction:column;justify-content:space-between;gap:2px;min-height:66px;padding:4px 6px 5px;transition:all .3s;display:flex;position:relative;box-shadow:0 4px 12px #00000059,inset 0 1px #ffffff0d}.cell-top-cap{border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;width:100%;padding:1px 2px;display:flex;position:relative}.terminal-stud{-webkit-user-select:none;user-select:none;border-radius:50%;justify-content:center;align-items:center;width:12px;height:12px;font-family:monospace;font-size:8px;font-weight:900;line-height:1;display:flex}.terminal-stud.stud-neg{color:#94a3b8;background:#334155;border:1px solid #64748b;box-shadow:inset 0 1px 1px #ffffff4d}.terminal-stud.stud-pos{color:#fde68a;background:#92400e;border:1px solid #d97706;box-shadow:inset 0 1px 1px #ffffff4d,0 0 4px #f59e0b4d}.cell-vent-dot{background:#1e293b;border:1px solid #334155;border-radius:50%;width:5px;height:5px}.cell-busbar-bridge{z-index:3;pointer-events:none;background:linear-gradient(90deg,#d97706,#f59e0b,#b45309);border-radius:1px;width:10px;height:4px;position:absolute;top:9px;right:-6px;box-shadow:0 1px 3px #00000080}.cell-card.prismatic-cell[data-cell="4"] .cell-busbar-bridge,.cell-card.prismatic-cell[data-cell="8"] .cell-busbar-bridge,.cell-card.prismatic-cell[data-cell="12"] .cell-busbar-bridge,.cell-card.prismatic-cell[data-cell="16"] .cell-busbar-bridge{display:none}.cell-canister-face{flex-direction:column;gap:2px;width:100%;display:flex}.cell-meta-bar{justify-content:space-between;align-items:center;width:100%;display:flex}.cell-id-badge{color:var(--cyan);letter-spacing:.4px;font-family:monospace;font-size:.64rem;font-weight:700}.cell-extremum-pill{letter-spacing:.3px;border-radius:3px;padding:1px 4px;font-family:monospace;font-size:.52rem;font-weight:800;display:none}.cell-extremum-pill.max{color:var(--green-text);background:#00e67638;border:1px solid #00e67680;display:inline-block;box-shadow:0 0 6px #00e6764d}.cell-extremum-pill.min{color:#fbbf24;background:#f59e0b38;border:1px solid #f59e0b80;display:inline-block;box-shadow:0 0 6px #f59e0b4d}.cell-volts-digits{color:#f1f5f9;letter-spacing:-.3px;font-family:monospace;font-size:clamp(.78rem,2.5vw,.96rem);font-weight:800;line-height:1.1}.cell-meter-groove{background:#ffffff14;border-radius:2px;width:100%;height:3px;margin-top:1px;overflow:hidden}.cell-meter-fill{background:linear-gradient(90deg,#00b0ff,#00e676);border-radius:2px;height:100%;transition:width .6s,background .4s}.cell-card.prismatic-cell.cell-max{border-color:#00e6768c!important;box-shadow:0 0 10px #00e67640,inset 0 0 10px #00e67614!important}.cell-card.prismatic-cell.cell-min{border-color:#f59e0b8c!important;box-shadow:0 0 10px #f59e0b40,inset 0 0 10px #f59e0b14!important}.cell-header{justify-content:space-between;align-items:center;width:100%;display:flex}.cell-id{color:var(--cyan);letter-spacing:.4px;font-family:monospace;font-size:.72rem;font-weight:700}.cell-val{color:#f1f5f9;letter-spacing:-.2px;text-align:left;font-family:monospace;font-size:.96rem;font-weight:800}.cell-card.status-up{background-color:var(--green-bg)!important;box-shadow:inset 0 0 0 1px #00e67666!important}.cell-card.status-down{background-color:var(--red-bg)!important;box-shadow:inset 0 0 0 1px #ef444466!important}.arrow{min-width:8px;font-size:.68rem;line-height:1;display:inline-block}.arrow-up{color:var(--green-text)}.arrow-down{color:var(--red-text)}@media (width<=480px){body{padding:6px 4px}#jk-app{border-radius:10px}.jk-header{padding:10px 12px}.jk-header h2{font-size:.98rem}.sub-site-info{font-size:.67rem}.offgrid-banner{gap:10px;padding:7px 10px}.offgrid-avatar{width:36px!important;min-width:36px!important;max-width:36px!important;height:36px!important;min-height:36px!important;max-height:36px!important}.offgrid-badge{padding:1px 5px;font-size:.65rem}.offgrid-pill{padding:1px 5px;font-size:.62rem}.offgrid-sub{font-size:.67rem}.dials-showcase{grid-template-columns:1fr 1fr!important;gap:6px!important;padding:6px!important}.digital-dial-card{border-radius:10px!important;padding:8px 6px 6px!important}.dial-header{gap:2px!important}.dial-title{font-size:.64rem!important}.dial-status-pill,.flow-pill{padding:1px 4px!important;font-size:.56rem!important}.battery-top-terminals-bar,.solar-sun-reactor-bar{min-height:20px!important;margin-bottom:3px!important;padding:2px 4px!important}.sun-reactor-widget{width:15px!important;height:15px!important}.sun-core-circle{font-size:11px!important}.stream-status-text{font-size:.5rem!important}.terminal-post{font-size:.56rem!important}.terminal-post .post-nut{width:10px!important;height:10px!important}.dial-gauge-wrapper{max-width:145px!important}.battery-fluid-chamber{width:106px!important;height:106px!important}.dial-direction-label,.dial-top-subtext{min-height:15px!important;margin:2px 0 1px!important;font-size:.58rem!important}.dial-digits{font-size:1.38rem!important}.dial-unit-pct{font-size:.72rem!important}.dial-caption{font-size:.66rem!important}.dial-power-display{margin-top:3px!important;padding:2px 6px!important;font-size:.78rem!important}.dial-stats-row{gap:4px!important;padding-top:5px!important}.dial-stat-cell{padding:3px 4px!important}.stat-cell-lbl{font-size:.52rem!important}.stat-cell-val{font-size:.7rem!important}.time-estimator-box{grid-column:1/-1!important;gap:4px!important;padding:8px!important}.time-est-primary{font-size:1.1rem!important}.time-est-detail{font-size:.66rem!important}.summary-grid{grid-template-columns:repeat(4,1fr)!important}.summary-item{gap:3px;padding:8px 4px}.summary-header{gap:3px}.item-icon{width:11px!important;height:11px!important}.summary-header span{letter-spacing:.2px;font-size:.6rem}.summary-item .val{font-size:.82rem}.cell-grid{grid-template-columns:repeat(4,1fr)!important;gap:4px!important;padding:6px!important}.cell-card{border-radius:5px;min-height:48px;padding:6px 4px}.cell-card.prismatic-cell{border-radius:5px!important;min-height:56px!important;padding:3px 4px 4px!important}.terminal-stud{width:9px!important;height:9px!important;font-size:7px!important}.cell-vent-dot{width:4px!important;height:4px!important}.cell-busbar-bridge{width:8px!important;height:3px!important;top:7px!important;right:-4px!important}.cell-id-badge{font-size:.56rem!important}.cell-extremum-pill{padding:0 2px!important;font-size:.44rem!important}.cell-volts-digits{font-size:.72rem!important}.cell-meter-groove{height:2px!important}.cell-id{font-size:.67rem}.cell-val{font-size:.88rem}.jk-footer{gap:4px;padding:10px}.footer-credits{font-size:.68rem}.footer-meta{font-size:.62rem}}.header-tools{align-items:center;gap:6px;margin-bottom:2px;display:flex}.header-tool-btn{border:1px solid var(--border);color:#94a3b8;cursor:pointer;background:#ffffff0d;border-radius:6px;align-items:center;gap:4px;padding:3px 8px;font-family:inherit;font-size:.72rem;font-weight:600;transition:all .2s;display:inline-flex}.header-tool-btn:hover{border-color:var(--cyan);color:#f1f5f9;background:#00d2ff1f}.header-auth-btn{border:1px solid var(--border);color:#94a3b8;cursor:pointer;background:#ffffff0d;border-radius:6px;align-items:center;gap:4px;padding:3px 8px;font-family:inherit;font-size:.72rem;font-weight:600;transition:all .2s;display:inline-flex}.header-auth-btn.locked{color:#fbbf24;background:#f59e0b1a;border-color:#f59e0b66}.header-auth-btn.locked:hover{background:#f59e0b33;border-color:#fbbf24}.header-auth-btn.unlocked{color:#00e676;background:#00e6761f;border-color:#00e67680}.header-auth-btn.unlocked:hover{background:#00e67638;border-color:#00e676}.control-card{border:1px solid var(--border);background:linear-gradient(135deg,#131d2e 0%,#172439 100%);border-radius:12px;margin:12px 14px;padding:12px 14px;transition:all .3s;box-shadow:0 4px 16px #00000059}.control-card:hover{border-color:#00d2ff59}.control-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.control-title-wrap{align-items:center;gap:7px;display:flex}.control-icon{stroke:var(--cyan);filter:drop-shadow(0 0 6px #00d2ff80)}.control-title{color:#e2e8f0;letter-spacing:.4px;text-transform:uppercase;font-size:.82rem;font-weight:700}.chg-status-badge{letter-spacing:.5px;border-radius:20px;padding:3px 8px;font-family:monospace;font-size:.72rem;font-weight:700;transition:all .3s}.chg-status-badge.on{color:var(--green-text);background:#00e67626;border:1px solid #00e67659;box-shadow:0 0 10px #00e67633}.chg-status-badge.off{color:var(--red-text);background:#ef444426;border:1px solid #ef444459;box-shadow:0 0 10px #ef444433}.chg-status-badge.pending{color:var(--amber-text);background:#f59e0b26;border:1px solid #f59e0b59;animation:1.5s infinite pulse-amber}@keyframes pulse-amber{0%,to{opacity:.8}50%{opacity:1;filter:drop-shadow(0 0 8px #f59e0b)}}.control-body{justify-content:space-between;align-items:center;display:flex}.control-info{flex-direction:column;gap:2px;display:flex}.control-status-text{color:#cbd5e1;font-size:.8rem;font-weight:500}.control-sync-tag{color:#64748b;font-family:monospace;font-size:.7rem}.switch-toggle{cursor:pointer;width:50px;height:28px;display:inline-block;position:relative}.switch-toggle input{opacity:0;width:0;height:0}.slider-round{background-color:#334155;border:1px solid #ffffff1a;border-radius:28px;transition:all .3s cubic-bezier(.4,0,.2,1);position:absolute;inset:0}.slider-round:before{content:"";background-color:#fff;border-radius:50%;width:20px;height:20px;transition:all .3s cubic-bezier(.4,0,.2,1);position:absolute;bottom:3px;left:4px;box-shadow:0 2px 5px #0006}.switch-toggle input:checked+.slider-round{background-color:#00e676;border-color:#00e676;box-shadow:0 0 12px #00e67666}.switch-toggle input:checked+.slider-round:before{background-color:#fff;transform:translate(22px)}.control-divider{background:#ffffff14;height:1px;margin:12px 0 10px}.limit-control-section{flex-direction:column;gap:10px;display:flex}.limit-header{justify-content:space-between;align-items:center;display:flex}.limit-title-wrap{align-items:center;gap:6px;display:flex}.limit-icon{color:#38bdf8}.limit-title{color:#94a3b8;letter-spacing:.4px;text-transform:uppercase;font-size:.76rem;font-weight:700}.limit-status-wrap{align-items:center;gap:8px;display:flex}.limit-val-badge{color:#38bdf8;letter-spacing:.5px;background:#38bdf81f;border:1px solid #38bdf84d;border-radius:6px;padding:2px 9px;font-family:monospace;font-size:.88rem;font-weight:700;box-shadow:0 0 8px #38bdf826}.limit-sync-tag{color:#64748b;font-family:monospace;font-size:.68rem}.limit-sync-tag.pending{color:var(--amber-text);animation:1.5s infinite pulse-amber}.limit-presets-row{flex-wrap:wrap;gap:6px;display:flex}.btn-limit-preset{color:#cbd5e1;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff1f;border-radius:6px;padding:5px 12px;font-family:monospace;font-size:.78rem;font-weight:600;transition:all .2s}.btn-limit-preset:hover{color:#fff;background:#38bdf826;border-color:#38bdf866;transform:translateY(-1px)}.btn-limit-preset.active{color:#fff;background:#0284c7;border-color:#38bdf8;box-shadow:0 0 10px #38bdf859}.limit-custom-row{align-items:center;gap:8px;display:flex}.limit-input-wrap{flex:1;position:relative}#input-custom-limit{color:#f8fafc;box-sizing:border-box;background:#0b1320;border:1px solid #ffffff26;border-radius:6px;width:100%;padding:6px 30px 6px 10px;font-family:monospace;font-size:.82rem;font-weight:600;transition:border-color .2s}#input-custom-limit:focus{border-color:#38bdf8;outline:none;box-shadow:0 0 8px #38bdf840}.limit-input-unit{color:#64748b;pointer-events:none;font-family:monospace;font-size:.78rem;font-weight:700;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.btn-set-limit{color:#fff;cursor:pointer;white-space:nowrap;background:linear-gradient(135deg,#0284c7 0%,#0369a1 100%);border:1px solid #38bdf866;border-radius:6px;padding:6px 14px;font-size:.78rem;font-weight:600;transition:all .2s}.btn-set-limit:hover{background:linear-gradient(135deg,#0ea5e9 0%,#0284c7 100%);transform:translateY(-1px);box-shadow:0 0 10px #0ea5e959}.btn-set-limit:active{transform:translateY(0)}.limit-hint{color:#64748b;margin-top:-6px;margin-bottom:2px;font-size:.68rem;line-height:1.3}.limit-note-box{color:#94a3b8;background:#0ea5e914;border:1px solid #38bdf840;border-radius:8px;align-items:flex-start;gap:8px;margin-top:4px;padding:8px 10px;font-size:.7rem;line-height:1.45;display:flex}.limit-note-box strong{color:#e2e8f0}.limit-note-icon{flex-shrink:0;font-size:.85rem;line-height:1.2}.modal-overlay{-webkit-backdrop-filter:blur(8px);z-index:9999;background:#090e17e0;justify-content:center;align-items:center;padding:16px;animation:.25s ease-out fadeIn;display:flex;position:fixed;inset:0}.modal-overlay.hidden{display:none!important}.modal-card{border:1px solid var(--border);background:#131c2b;border-radius:14px;width:100%;max-width:400px;animation:.25s cubic-bezier(.16,1,.3,1) scaleUp;overflow:hidden;box-shadow:0 16px 40px #000000b3}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleUp{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.modal-header{border-bottom:1px solid var(--border);background:#182335;justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-header h3{color:var(--cyan);margin:0;font-size:1rem}.modal-desc{color:#94a3b8;margin:0 0 14px;font-size:.82rem;line-height:1.45}.form-group{flex-direction:column;gap:5px;margin-bottom:14px;display:flex}.form-group label{color:#cbd5e1;font-size:.78rem;font-weight:600}.form-input{border:1px solid var(--border);color:#f1f5f9;background:#0d1522;border-radius:8px;outline:none;width:100%;padding:9px 12px;font-family:inherit;font-size:.95rem;transition:all .2s}.btn{cursor:pointer;border:1px solid #0000;border-radius:8px;padding:8px 16px;font-family:inherit;font-size:.82rem;font-weight:600;transition:all .2s}.btn-primary{background:var(--cyan);color:#050b14;border-color:var(--cyan)}.btn-primary:hover{background:#38bdf8;box-shadow:0 0 12px #00d2ff66}.btn-secondary{color:#cbd5e1;border-color:var(--border);background:#ffffff0d}.btn-secondary:hover{color:#fff;background:#ffffff1a}.btn-danger{color:#fff;background:#ef4444;border-color:#ef4444}.btn-danger:hover{background:#dc2626;box-shadow:0 0 12px #ef444466}.pin-card{text-align:center;max-width:380px;padding:30px 24px;position:relative}.pin-card .modal-close-btn{color:#94a3b8;cursor:pointer;background:0 0;border:none;font-size:1.5rem;line-height:1;position:absolute;top:14px;right:16px}.pin-card .modal-close-btn:hover{color:#fff}.pin-icon-wrap{background:#00d2ff1f;border:1px solid #00d2ff59;border-radius:50%;justify-content:center;align-items:center;width:58px;height:58px;margin:0 auto 16px;font-size:1.8rem;display:flex;box-shadow:0 0 20px #00d2ff40}.pin-title{color:#f1f5f9;margin:0 0 6px;font-size:1.15rem;font-weight:700}.pin-desc{color:#94a3b8;margin:0 0 20px;font-size:.82rem}.pin-digit{border:2px solid var(--border);width:52px;height:58px;color:var(--cyan);text-align:center;background:#0d1522;border-radius:10px;outline:none;font-family:monospace;font-size:1.8rem;font-weight:700;transition:all .2s}.pin-digit:focus{border-color:var(--cyan);background:#00d2ff0d;box-shadow:0 0 12px #00d2ff4d}.pin-error{color:var(--red-text);min-height:18px;margin-bottom:14px;font-size:.8rem;font-weight:600}@keyframes pinShake{0%,to{transform:translate(0)}20%,60%{border-color:var(--red);transform:translate(-6px)}40%,80%{border-color:var(--red);transform:translate(6px)}}.confirm-card{text-align:center;padding:24px 20px}.confirm-icon{margin-bottom:10px;font-size:2.2rem}.confirm-title{color:#f1f5f9;margin:0 0 8px;font-size:1.1rem}.confirm-desc{color:#94a3b8;margin:0 0 20px;font-size:.85rem;line-height:1.45}.shooting-stars-overlay{pointer-events:none;z-index:999999;width:100vw;height:100vh;position:fixed;top:0;left:0;overflow:hidden}.shooting-star{filter:drop-shadow(0 0 8px #00e676d9);opacity:0;transform-origin:0;height:2.5px;animation:meteorStreak var(--star-duration,1s) cubic-bezier(.25, .8, .25, 1) forwards;background:linear-gradient(90deg,#0000 0%,#00d2ff66 30%,#00e676e6 70%,#fff 100%);border-radius:999px;position:absolute}.shooting-star:after{content:"";background:#fff;border-radius:50%;width:6px;height:6px;position:absolute;top:50%;right:-3px;transform:translateY(-50%);box-shadow:0 0 8px 2px #fff,0 0 16px 4px #00e676,0 0 28px 8px #00d2ff}.stardust-sparkle{opacity:0;pointer-events:none;width:4px;height:4px;animation:sparkleTwinkle var(--sparkle-duration,.9s) ease-out forwards;background:#fff;border-radius:50%;position:absolute;box-shadow:0 0 6px 1px #fff,0 0 12px 3px #00e676d9}@keyframes meteorStreak{0%{transform:rotate(var(--star-angle,145deg)) translateX(0);opacity:0;width:0}15%{width:var(--trail-length,180px);opacity:1}75%{width:var(--trail-length,180px);opacity:.9}to{transform:rotate(var(--star-angle,145deg)) translateX(var(--travel-dist,500px));opacity:0;width:0}}@keyframes sparkleTwinkle{0%{opacity:0;transform:scale(.2)rotate(0)}40%{opacity:1;transform:scale(1.6)rotate(45deg)}to{opacity:0;transform:scale(.1)rotate(90deg)}}.jk-timer.sync-pulse{text-shadow:0 0 12px #00e676e6,0 0 22px #00d2ffb3;transition:all .3s;transform:scale(1.08);color:#00e676!important}@keyframes pulse-ring{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.25)}}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=900px){.camera-stage.layout-grid{grid-template-columns:1fr}.app-header{flex-direction:column;align-items:stretch}.header-left,.header-center,.header-right{justify-content:space-between}.toolbar{flex-direction:column;align-items:stretch}.tool-group-right{justify-content:space-between}}:root{--bg:#090e17;--card-bg:#131c2b;--header-bg:#1c273a;--text:#e2e8f0;--cyan:#00d2ff;--green-text:#00e676;--red-text:#f87171;--amber-text:#f59e0b;--blue-text:#38bdf8;--border:#23334d;--green-bg:#00e67629;--red-bg:#ef444429}*{box-sizing:border-box}body{background-color:var(--bg);color:var(--text);justify-content:center;align-items:flex-start;min-height:100vh;margin:0;padding:16px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,monospace;display:flex}.daily-page-wrapper{flex-direction:column;width:100%;display:flex}#jk-app{background:var(--card-bg);border:1px solid var(--border);border-radius:14px;width:100%;max-width:540px;overflow:hidden;box-shadow:0 10px 30px #0009}.jk-header{background:var(--header-bg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.jk-header-left{flex-direction:column;gap:2px;display:flex}.site-title-row{align-items:center;gap:7px;display:flex}.header-icon{width:18px;height:18px;stroke:var(--cyan);filter:drop-shadow(0 0 6px #00d2ff80)}.jk-header h2{color:var(--cyan);letter-spacing:.5px;margin:0;font-size:1.15rem}.sub-site-info{color:#64748b;font-family:monospace;font-size:.72rem}.jk-header-right{flex-direction:column;align-items:flex-end;gap:5px;display:flex}.jk-timer{color:#94a3b8;font-family:monospace;font-size:.78rem}.battery-badge{letter-spacing:.5px;color:var(--cyan);background:#00d2ff29;border:1px solid #00d2ff66;border-radius:20px;align-items:center;gap:6px;padding:3px 9px;font-family:monospace;font-size:.75rem;font-weight:700;display:inline-flex}.pulse-dot{background-color:var(--cyan);width:7px;height:7px;box-shadow:0 0 8px var(--cyan);border-radius:50%;animation:1.8s infinite pulse-cyan;display:inline-block}@keyframes pulse-cyan{0%{opacity:.7;transform:scale(.9)}50%{opacity:1;box-shadow:0 0 10px var(--cyan);transform:scale(1.3)}to{opacity:.7;transform:scale(.9)}}.nav-tabs{border-bottom:2px solid var(--border);background:#111a29;grid-template-columns:repeat(3,1fr);display:grid}.nav-tab{color:#94a3b8;white-space:nowrap;border-bottom:2px solid #0000;justify-content:center;align-items:center;gap:6px;padding:10px 6px;font-size:.74rem;font-weight:700;text-decoration:none;transition:all .25s;display:flex}.nav-tab:hover{color:var(--cyan);background:#00d2ff0d}.nav-tab.active{color:var(--cyan);border-bottom:2px solid var(--cyan);background:#172438}.date-banner{border-bottom:1px solid var(--border);background:linear-gradient(90deg,#00d2ff1a 0%,#152236 60%,#00e67614 100%);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:10px 16px;display:flex}.date-info{color:#f1f5f9;align-items:center;gap:7px;font-size:.82rem;font-weight:700;display:flex}.date-info svg{stroke:var(--cyan)}.reset-badge{color:#94a3b8;background:#94a3b81f;border:1px solid #94a3b833;border-radius:4px;padding:3px 8px;font-family:monospace;font-size:.7rem;font-weight:600}.section-title{color:var(--cyan);letter-spacing:.5px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:#18253a;justify-content:center;align-items:center;gap:7px;padding:10px 0;font-size:.83rem;font-weight:700;display:flex}.section-icon{width:14px;height:14px;stroke:var(--cyan)}.table-container{background:#101928;width:100%;overflow-x:auto}.daily-table{border-collapse:collapse;text-align:left;width:100%}.daily-table th{color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);white-space:nowrap;background:#142033;padding:10px 14px;font-size:.72rem;font-weight:700}.daily-table td{vertical-align:middle;border-bottom:1px solid #23334d80;padding:10px 14px;font-size:.82rem}.daily-table tbody tr:nth-child(2n){background:#ffffff04}.daily-table tbody tr:hover{background:#00d2ff09}.loading-td{font-family:monospace;text-align:center!important;color:#64748b!important;padding:24px!important}.param-col{flex-direction:column;gap:2px;display:flex}.param-title{color:#e2e8f0;font-size:.82rem;font-weight:700}.param-sub{color:#64748b;font-family:monospace;font-size:.68rem}.val-box{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.val-min{color:var(--blue-text);white-space:nowrap;font-family:monospace;font-size:.94rem;font-weight:800}.val-max{color:var(--green-text);white-space:nowrap;font-family:monospace;font-size:.94rem;font-weight:800}.val-danger{color:var(--red-text)!important}.time-tag{color:#94a3b8;white-space:nowrap;background:#94a3b81f;border:1px solid #ffffff0d;border-radius:4px;padding:1px 5px;font-family:monospace;font-size:.65rem}.spread-val{color:#cbd5e1;white-space:nowrap;font-family:monospace;font-size:.85rem;font-weight:700}.cell-badge{color:var(--cyan);background:#00d2ff1f;border:1px solid #00d2ff40;border-radius:4px;padding:2px 6px;font-family:monospace;font-size:.74rem;font-weight:800;display:inline-block}.jk-footer{border-top:1px solid var(--border);text-align:center;background:#0f1623;flex-direction:column;justify-content:center;align-items:center;gap:5px;padding:12px 16px;display:flex}.footer-credits{color:#94a3b8;letter-spacing:.2px;font-size:.74rem}.brand-text{color:var(--cyan);font-weight:700}.author-text{color:#f1f5f9;font-weight:700}.footer-meta{color:#64748b;justify-content:center;align-items:center;gap:6px;font-family:monospace;font-size:.68rem;display:flex}@media (width<=480px){body{padding:6px 4px}#jk-app{border-radius:10px}.jk-header{padding:10px 12px}.jk-header h2{font-size:.98rem}.sub-site-info{font-size:.67rem}.date-banner{gap:6px;padding:8px 10px}.date-info{font-size:.75rem}.reset-badge{font-size:.65rem}.daily-table th{padding:8px;font-size:.67rem}.daily-table td{padding:8px;font-size:.76rem}.param-title{font-size:.75rem}.param-sub{font-size:.62rem}.val-min,.val-max{font-size:.84rem}.time-tag{padding:1px 4px;font-size:.6rem}.spread-val{font-size:.78rem}.jk-footer{gap:4px;padding:10px}.footer-credits{font-size:.68rem}.footer-meta{font-size:.62rem}}.jk-date-picker{color:#f1f5f9;cursor:pointer;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:0 0;border:none;outline:none;font-family:inherit;font-size:.82rem;font-weight:700}.jk-date-picker:disabled{opacity:.6;cursor:not-allowed}.jk-timer.historic-mode{color:#eab308;background-color:#eab30833;border-color:#eab30880}.charge-estimate-hero-card{background:linear-gradient(135deg,#131c2bf2 0%,#0d1420fa 100%);border:1px solid #00d2ff40;border-radius:14px;flex-direction:column;gap:16px;margin:14px 16px 18px;padding:18px 20px;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 24px #0006,inset 0 1px #ffffff0d}.charge-estimate-hero-card:before{content:"";background:linear-gradient(90deg,#f59e0b,#00d2ff,#00e676);height:2px;position:absolute;top:0;left:0;right:0}.hero-top-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.hero-title-group{align-items:center;gap:10px;display:flex}.hero-icon-pulse{color:#f59e0b;background:#f59e0b26;border:1px solid #f59e0b59;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;display:flex}.hero-icon-pulse.charging{color:#00e676;background:#00e67626;border-color:#00e67666;animation:2s ease-in-out infinite pulse-glow-green}.hero-icon-pulse.historic{color:#38bdf8;background:#38bdf826;border-color:#38bdf866}.hero-icon-pulse.discharging{color:#f87171;background:#ef444426;border-color:#ef444466}@keyframes pulse-glow-green{0%{box-shadow:0 0 #00e6764d}50%{box-shadow:0 0 14px 2px #00e67673}to{box-shadow:0 0 #00e6764d}}.hero-subtitle{color:#94a3b8;letter-spacing:.5px;text-transform:uppercase;font-family:monospace;font-size:.72rem}.hero-heading{color:#f1f5f9;letter-spacing:.2px;margin:0;font-size:1.05rem;font-weight:700}.hero-status-pill{color:#cbd5e1;background:#94a3b81f;border:1px solid #94a3b840;border-radius:20px;align-items:center;gap:7px;padding:4px 12px;font-family:monospace;font-size:.76rem;font-weight:700;display:inline-flex}.hero-status-pill.charging{color:#00e676;background:#00e67624;border-color:#00e67659}.hero-status-pill.historic{color:#38bdf8;background:#38bdf824;border-color:#38bdf859}.hero-status-pill.discharging{color:#f87171;background:#ef444424;border-color:#ef444459}.hero-status-dot{background:currentColor;border-radius:50%;width:7px;height:7px;display:inline-block}.hero-stat-row{flex-direction:column;gap:4px;display:flex}.hero-main-stat{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.hero-duration-val{color:#f59e0b;letter-spacing:-.5px;text-shadow:0 0 16px #f59e0b4d;font-family:monospace;font-size:2.1rem;font-weight:800}.hero-current-reference{color:#00e676;background:#00e6761f;border:1px solid #00e6764d;border-radius:6px;padding:3px 10px;font-family:monospace;font-size:.88rem;font-weight:700}.hero-stat-hint{color:#64748b;font-family:monospace;font-size:.74rem}.hero-kpi-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;display:grid}.hero-kpi-item{background:#0a101ab3;border:1px solid #ffffff0f;border-radius:8px;flex-direction:column;gap:2px;padding:10px 12px;display:flex}.kpi-label{color:#94a3b8;letter-spacing:.3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:.7rem}.kpi-val{color:#f1f5f9;font-family:monospace;font-size:1.05rem;font-weight:800}.kpi-sub{color:#64748b;font-family:monospace;font-size:.68rem}.text-blue{color:#38bdf8!important}.hero-progress-container{flex-direction:column;gap:6px;margin-top:4px;display:flex}.progress-labels{color:#64748b;justify-content:space-between;align-items:center;font-family:monospace;font-size:.68rem;display:flex}.progress-current-soc{color:#38bdf8;font-weight:700}.progress-track{background:#ffffff0f;border:1px solid #ffffff14;border-radius:6px;width:100%;height:10px;position:relative;overflow:hidden}.progress-fill-current{background:linear-gradient(90deg,#00d2ff 0%,#00e676 100%);border-radius:5px;height:100%;transition:width .5s;position:relative}.progress-fill-current.pulse-charging:after{content:"";background:linear-gradient(90deg,#0000,#fff6,#0000);animation:2s linear infinite shimmer-bar;position:absolute;inset:0}@keyframes shimmer-bar{0%{transform:translate(-100%)}to{transform:translate(100%)}}.progress-fill-target-line{z-index:2;background:#f59e0b;width:2px;position:absolute;top:0;bottom:0;box-shadow:0 0 6px #f59e0b}.charge-chart-container{border:1px solid var(--border);background:#111a28;border-radius:12px;flex-direction:column;gap:14px;margin:0 16px 20px;padding:16px;display:flex}.chart-header-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.chart-header-title{flex-direction:column;gap:2px;display:flex}.chart-subtext{color:#64748b;font-family:monospace;font-size:.72rem}.chart-toggles-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chart-canvas-wrapper{width:100%;height:330px;position:relative}.chart-placeholder{color:#64748b;background:#0003;border-radius:8px;justify-content:center;align-items:center;width:100%;height:100%;font-family:monospace;font-size:.82rem;display:flex}.chart-footer-metrics{border-top:1px solid #ffffff0d;flex-wrap:wrap;align-items:center;gap:10px;padding-top:10px;display:flex}.tr-highlighted{background:#f59e0b0d}.val-highlight{font-weight:800;color:#f59e0b!important}:root{--bg:#090e17;--card-bg:#131c2b;--card-inner:#0d1522;--header-bg:#1c273a;--border:#23334d;--text:#e2e8f0;--text-dim:#94a3b8;--cyan:#00d2ff;--cyan-glow:#00d2ff40;--green:#00e676;--green-glow:#00e67640;--red:#f87171;--amber:#fbbf24;--radius-lg:14px;--radius-md:8px;--radius-sm:6px}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg);color:var(--text);flex-direction:column;align-items:center;min-height:100vh;padding:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,monospace;display:flex}#cctv-app{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;width:100%;max-width:1400px;display:flex;overflow:hidden;box-shadow:0 12px 40px #000000b3}.app-header{background:var(--header-bg);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 20px;display:flex}.header-left{align-items:center;display:flex}.brand-title-wrap{align-items:center;gap:10px;display:flex}.brand-title-wrap h2{color:var(--cyan);letter-spacing:.5px;font-size:1.25rem;font-weight:700}.site-sub{color:var(--text-dim);margin-top:2px;font-family:monospace;font-size:.75rem}.pulse{background:var(--green);width:10px;height:10px;box-shadow:0 0 10px var(--green);border-radius:50%;animation:2s cubic-bezier(.4,0,.6,1) infinite pulse-ring;display:inline-block}.header-center{align-items:center;display:flex}.nav-links{border:1px solid var(--border);background:#0d1522bf;border-radius:30px;gap:4px;padding:3px;display:flex}.nav-btn{color:var(--text-dim);border-radius:20px;align-items:center;gap:6px;padding:6px 14px;font-size:.82rem;font-weight:600;text-decoration:none;transition:all .25s;display:flex}.nav-btn:hover{color:var(--text);background:#ffffff0d}.nav-btn.active{background:var(--cyan);color:#090e17;box-shadow:0 2px 10px var(--cyan-glow);font-weight:700}.header-right{align-items:center;gap:12px;display:flex}.status-badge{color:var(--amber);background:#fbbf2426;border:1px solid #fbbf2459;border-radius:20px;align-items:center;gap:6px;padding:4px 10px;font-family:monospace;font-size:.75rem;font-weight:700;transition:all .3s;display:inline-flex}.status-badge.live{color:var(--green);box-shadow:0 0 10px var(--green-glow);background:#00e67626;border-color:#00e67666}.status-badge.offline{color:var(--red);background:#f8717126;border-color:#f8717166}.status-indicator{background:currentColor;border-radius:50%;width:6px;height:6px}.clock-display{color:var(--text-dim);border-radius:var(--radius-sm);background:#0000004d;border:1px solid #ffffff0d;padding:5px 10px;font-family:monospace;font-size:.85rem}.icon-btn{border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;background:#ffffff0f;padding:6px 10px;font-size:.9rem;transition:all .2s}.icon-btn:hover{border-color:var(--cyan);background:#ffffff1f}.toolbar{border-bottom:1px solid var(--border);z-index:50;background:#101826;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 18px;display:flex;position:relative}.tool-group{align-items:center;gap:8px;display:flex}.tool-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;font-size:.78rem;font-weight:600}.segmented-control{border:1px solid var(--border);border-radius:var(--radius-sm);background:#00000059;gap:2px;padding:2px;display:flex}.seg-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:5px;padding:5px 10px;font-size:.78rem;font-weight:600;transition:all .2s;display:flex}.seg-btn:hover{color:var(--text);background:#ffffff0d}.seg-btn.active{color:var(--cyan);background:#1f2d44;box-shadow:0 1px 4px #0000004d}.tool-action-btn{border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;background:#182436;align-items:center;gap:5px;padding:5px 12px;font-size:.78rem;font-weight:600;transition:all .2s;display:flex}.tool-action-btn:hover{border-color:var(--cyan);color:var(--cyan)}.camera-stage{background:var(--bg);flex:1;gap:16px;min-height:580px;padding:16px;display:grid}.camera-stage.layout-grid,.camera-stage.grid-view{grid-template-columns:repeat(2,1fr)}.camera-stage.layout-single .camera-card,.camera-stage.single-view .camera-card{display:none!important}.camera-stage.layout-single .camera-card.active-focus,.camera-stage.layout-single .camera-card.active-cam,.camera-stage.single-view .camera-card.active-focus,.camera-stage.single-view .camera-card.active-cam{grid-column:1/-1;width:100%;max-width:1080px;margin:0 auto;display:flex!important}.camera-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-md);flex-direction:column;transition:border-color .2s,transform .2s;display:flex;overflow:hidden;box-shadow:0 4px 18px #0006}.camera-card:hover{border-color:#00d2ff66}.camera-header{border-bottom:1px solid var(--border);background:#141f30;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.camera-info{align-items:center;gap:8px;display:flex}.cam-dot{background:var(--text-dim);border-radius:50%;width:7px;height:7px}.cam-dot.live{background:var(--green);box-shadow:0 0 6px var(--green)}.cam-name{color:#f1f5f9;letter-spacing:.3px;font-size:.85rem;font-weight:700}.cam-ip-badge{color:#64748b;background:#00000040;border-radius:4px;padding:2px 6px;font-family:monospace;font-size:.7rem}.camera-actions{align-items:center;gap:6px;display:flex}.badge-res{color:var(--cyan);background:#00d2ff26;border:1px solid #00d2ff4d;border-radius:4px;padding:2px 6px;font-family:monospace;font-size:.68rem;font-weight:700}.cam-icon-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 6px;font-size:.85rem;transition:all .2s}.cam-icon-btn:hover{color:var(--text);background:#ffffff14}.video-container{aspect-ratio:16/9;background:#060a10;justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}video,video-stream{width:100%;height:100%;display:block;position:absolute;inset:0}video,video-stream video{-o-object-fit:contain;object-fit:contain;background:#000;width:100%;height:100%;display:block}.mjpeg-feed{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.video-overlay{pointer-events:none;z-index:5;justify-content:space-between;align-items:center;display:flex;position:absolute;top:10px;left:10px;right:10px}.overlay-badge{color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);letter-spacing:.5px;background:#000000a6;border:1px solid #ffffff1a;border-radius:4px;padding:3px 8px;font-family:monospace;font-size:.72rem;font-weight:700}.overlay-badge.status{color:var(--green);border-color:#00e6764d}.loading-state,.error-state{z-index:10;text-align:center;background:#060a10e6;flex-direction:column;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.spinner{border:3px solid #00d2ff26;border-top-color:var(--cyan);border-radius:50%;width:32px;height:32px;margin-bottom:10px;animation:.8s linear infinite spin}.loading-text{color:var(--text-dim);font-family:monospace;font-size:.8rem}.error-icon{margin-bottom:6px;font-size:1.8rem}.error-msg{color:var(--red);margin-bottom:10px;font-size:.82rem;font-weight:500}.retry-btn{color:var(--cyan);cursor:pointer;background:#00d2ff26;border:1px solid #00d2ff66;border-radius:4px;padding:5px 12px;font-size:.76rem;font-weight:600;transition:all .2s}.retry-btn:hover{background:var(--cyan);color:#090e17}.hidden{display:none!important}.app-footer{background:var(--header-bg);border-top:1px solid var(--border);color:var(--text-dim);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:12px 20px;font-size:.78rem;display:flex}.footer-credits .brand-text{color:var(--cyan);font-weight:600}.footer-credits .author-text{color:#f1f5f9;font-weight:600}.footer-meta{color:#64748b;align-items:center;gap:6px;font-family:monospace;font-size:.74rem;display:flex}.meta-sep{color:#334155}.modal-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:1000;background:#000000bf;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:520px;overflow:hidden;box-shadow:0 16px 40px #000c}.modal-header{background:var(--header-bg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-header h3{color:var(--cyan);font-size:1.05rem}.modal-close-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;font-size:1.4rem;line-height:1}.modal-close-btn:hover{color:#fff}.modal-body{padding:18px}.modal-desc{color:var(--text-dim);margin-bottom:16px;font-size:.82rem;line-height:1.5}.form-group{margin-bottom:16px}.form-group label{color:var(--text);margin-bottom:6px;font-size:.8rem;font-weight:600;display:block}.form-input{background:var(--card-inner);border:1px solid var(--border);color:#fff;border-radius:var(--radius-sm);outline:none;width:100%;padding:10px 12px;font-family:monospace;font-size:.85rem;transition:border-color .2s}.form-input:focus{border-color:var(--cyan);box-shadow:0 0 8px var(--cyan-glow)}.form-hint{color:#64748b;margin-top:6px;font-size:.72rem;line-height:1.5;display:block}.channel-map-list{background:var(--card-inner);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 12px;font-family:monospace;font-size:.78rem}.channel-row{border-bottom:1px solid #ffffff0d;justify-content:space-between;padding:4px 0;display:flex}.channel-row:last-child{border-bottom:none}.channel-row code{color:var(--cyan)}.modal-actions{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.btn{border-radius:var(--radius-sm);cursor:pointer;border:none;padding:8px 16px;font-size:.82rem;font-weight:600;transition:all .2s}.btn-secondary{color:var(--text);border:1px solid var(--border);background:#ffffff14}.btn-secondary:hover{background:#ffffff26}.btn-primary{background:var(--cyan);color:#090e17;box-shadow:0 2px 10px var(--cyan-glow);font-weight:700}.btn-primary:hover{background:#22dbff}@media (width<=900px){.camera-stage.layout-grid{grid-template-columns:1fr}.app-header{flex-direction:column;align-items:stretch}.header-left,.header-center,.header-right{justify-content:space-between}.toolbar{flex-direction:column;align-items:stretch}.tool-group-right{justify-content:space-between}}.pin-card{text-align:center;max-width:380px;padding:30px 24px}.pin-icon-wrap{width:60px;height:60px;box-shadow:0 0 20px var(--cyan-glow);background:#00d2ff1a;border:1px solid #00d2ff4d;border-radius:50%;justify-content:center;align-items:center;margin:0 auto 16px;font-size:1.8rem;display:flex}.pin-title{color:#fff;margin-bottom:6px;font-size:1.2rem}.pin-desc{color:var(--text-dim);margin-bottom:22px;font-size:.82rem}.pin-input-group{justify-content:center;gap:12px;margin-bottom:16px;display:flex}.pin-digit{background:var(--card-inner);border:2px solid var(--border);border-radius:var(--radius-md);width:52px;height:58px;color:var(--cyan);text-align:center;outline:none;font-family:monospace;font-size:1.8rem;font-weight:700;transition:all .2s}.pin-digit:focus{border-color:var(--cyan);box-shadow:0 0 12px var(--cyan-glow);background:#00d2ff0d}.pin-error{color:var(--red);min-height:18px;margin-bottom:14px;font-size:.8rem}.pin-remember-wrap{color:var(--text-dim);cursor:pointer;justify-content:center;align-items:center;gap:6px;margin-bottom:20px;font-size:.8rem;display:flex}.pin-remember-wrap input{accent-color:var(--cyan);cursor:pointer}.pin-submit-btn{width:100%;padding:12px;font-size:.95rem}.pin-hint{color:#64748b;margin-top:16px;font-size:.72rem}.pin-hint code{color:var(--cyan);background:#0006;border-radius:4px;padding:2px 6px}.idle-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:900;background:#090e17e0;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.idle-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-lg);text-align:center;width:100%;max-width:420px;padding:32px 28px;box-shadow:0 16px 40px #000000e6}.idle-icon{margin-bottom:12px;font-size:2.5rem}.idle-card h3{color:#fff;margin-bottom:8px;font-size:1.25rem}.idle-card p{color:var(--text-dim);margin-bottom:22px;font-size:.85rem;line-height:1.5}.idle-card .btn{width:100%;padding:12px;font-size:.95rem}.pin-shake{animation:.4s ease-in-out pinShake}:root{--chart-bg:#090e17;--chart-card:#131c2b;--chart-card-inner:#0d1522;--chart-header:#1c273a;--chart-border:#23334d;--chart-cyan:#00d2ff;--chart-green:#00e676;--chart-red:#f87171;--chart-amber:#f59e0b;--chart-purple:#c084fc;--chart-crimson:#f43f5e;--chart-muted:#94a3b8}.charts-page{color:#f8fafc;flex-direction:column;gap:16px;width:100%;padding:12px 10px 40px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,monospace;display:flex}.charts-top-bar{background:var(--chart-card);border:1px solid var(--chart-border);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex;box-shadow:0 4px 20px #0006}.charts-top-left{flex-direction:column;gap:2px;display:flex}.charts-title-row{align-items:center;gap:8px;display:flex}.charts-title-row h2{color:var(--chart-cyan);letter-spacing:.5px;margin:0;font-size:1.15rem;font-weight:700}.charts-sub-info{color:var(--chart-muted);font-family:monospace;font-size:.72rem}.charts-top-right{align-items:center;gap:10px;display:flex}.charts-db-badge{color:var(--chart-cyan);background:#00d2ff26;border:1px solid #00d2ff59;border-radius:20px;align-items:center;gap:6px;padding:3px 10px;font-family:monospace;font-size:.74rem;font-weight:700;display:inline-flex}.charts-pulse-dot{background:var(--chart-cyan);width:8px;height:8px;box-shadow:0 0 8px var(--chart-cyan);border-radius:50%;animation:1.8s infinite chartPulse}@keyframes chartPulse{0%{opacity:.7;transform:scale(.9)}50%{opacity:1;box-shadow:0 0 12px var(--chart-cyan);transform:scale(1.2)}to{opacity:.7;transform:scale(.9)}}.charts-sync-timer{color:var(--chart-muted);font-family:monospace;font-size:.78rem}.charts-timeframe-box{background:var(--chart-card);border:1px solid var(--chart-border);border-radius:14px;flex-direction:column;gap:10px;padding:14px 16px;display:flex;box-shadow:0 4px 16px #0000004d}.tf-label-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;display:flex}.tf-heading{letter-spacing:.5px;text-transform:uppercase;color:var(--chart-muted);font-size:.8rem;font-weight:700}.tf-hint{color:var(--chart-cyan);font-family:monospace;font-size:.75rem}.tf-buttons{grid-template-columns:repeat(8,1fr);gap:6px;display:grid}.tf-btn{color:var(--chart-muted);border:1px solid var(--chart-border);cursor:pointer;text-align:center;background:#ffffff0a;border-radius:8px;padding:8px 4px;font-family:monospace;font-size:.78rem;font-weight:600;transition:all .2s}.tf-btn:hover{color:#fff;background:#ffffff14;border-color:#fff3}.tf-btn.active{color:#090e17;background:var(--chart-cyan);border-color:var(--chart-cyan);font-weight:700;box-shadow:0 0 12px #00d2ff73}.charts-kpi-grid{grid-template-columns:repeat(6,1fr);gap:10px;display:grid}.kpi-card{background:var(--chart-card);border:1px solid var(--chart-border);border-radius:12px;flex-direction:column;gap:4px;padding:12px 14px;transition:transform .2s,border-color .2s;display:flex;box-shadow:0 4px 14px #00000040}.kpi-card:hover{border-color:#00d2ff66;transform:translateY(-2px)}.kpi-label{color:#64748b;text-transform:uppercase;letter-spacing:.4px;font-size:.7rem;font-weight:600}.kpi-value{font-family:monospace;font-size:1.15rem;font-weight:700;line-height:1.2}.kpi-sub{color:var(--chart-muted);white-space:nowrap;text-overflow:ellipsis;font-family:monospace;font-size:.68rem;overflow:hidden}.text-green{color:var(--chart-green)}.text-red{color:var(--chart-red)}.text-cyan{color:var(--chart-cyan)}.text-amber{color:var(--chart-amber)}.text-purple{color:var(--chart-purple)}.text-crimson{color:var(--chart-crimson)}.chart-card{background:var(--chart-card);border:1px solid var(--chart-border);border-radius:16px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 6px 20px #00000059}.chart-header{background:var(--chart-header);border-bottom:1px solid var(--chart-border);justify-content:space-between;align-items:center;padding:12px 18px;display:flex}.chart-title{color:#fff;align-items:center;gap:8px;font-size:.92rem;font-weight:700;display:flex}.chart-icon{font-size:1.1rem}.chart-badge{text-transform:uppercase;letter-spacing:.4px;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:6px;padding:3px 8px;font-family:monospace;font-size:.72rem;font-weight:700}.chart-canvas-wrap{width:100%;height:280px;padding:14px 16px 10px;position:relative}.cell-chips-bar{background:var(--chart-card-inner);border-bottom:1px solid var(--chart-border);flex-wrap:wrap;align-items:center;gap:6px;padding:10px 16px;display:flex}.cell-chip{border:1px solid var(--chart-border);color:var(--chart-muted);cursor:pointer;background:#ffffff08;border-radius:6px;padding:4px 9px;font-family:monospace;font-size:.72rem;font-weight:600;transition:all .18s}.cell-chip:hover{color:#fff;background:#ffffff1a}.cell-chip.active{background:#ffffff14;box-shadow:0 0 10px #00d2ff33}.cell-chip.all-toggle{color:#fff;background:#1c273a;border-color:#38bdf8;font-weight:700}.cell-chip.all-toggle:hover{color:#090e17;background:#38bdf8}.charts-footer{background:var(--chart-header);border:1px solid var(--chart-border);color:var(--chart-muted);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:12px 18px;font-family:monospace;font-size:.78rem;display:flex}@media (width<=1024px){.charts-kpi-grid{grid-template-columns:repeat(3,1fr)}.tf-buttons{grid-template-columns:repeat(4,1fr)}}@media (width<=640px){.charts-kpi-grid{grid-template-columns:repeat(2,1fr)}.tf-buttons{grid-template-columns:repeat(4,1fr)}.chart-canvas-wrap{height:230px;padding:8px 10px}.charts-top-bar{flex-direction:column;align-items:stretch}.charts-top-right{justify-content:space-between}}.chart-toggles-inline{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chart-btn-toggle{color:#94a3b8;cursor:pointer;background:#0f172acc;border:1px solid #ffffff1a;border-radius:6px;align-items:center;gap:6px;padding:4px 9px;font-family:monospace;font-size:.7rem;font-weight:700;transition:all .2s;display:inline-flex}.chart-btn-toggle:hover{color:#f1f5f9;background:#ffffff14}.chart-btn-toggle.active.btn-amber{color:#f59e0b;background:#f59e0b29;border-color:#f59e0b80}.chart-btn-toggle.active.btn-cyan{color:#00d2ff;background:#00d2ff29;border-color:#00d2ff80}.chart-btn-toggle.active.btn-green{color:#00e676;background:#00e67629;border-color:#00e67680}.toggle-dot{border-radius:50%;width:7px;height:7px;display:inline-block}.dot-amber{background:#f59e0b}.dot-cyan{background:#00d2ff}.dot-green{background:#00e676}.chart-card-footer{background:var(--chart-card-inner);border-top:1px solid var(--chart-border);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 18px;display:flex}.footer-metric-pill{background:#0f172a99;border:1px solid #ffffff0f;border-radius:6px;align-items:center;gap:6px;padding:4px 10px;font-family:monospace;font-size:.72rem;display:flex}.metric-pill-label{color:#94a3b8}.metric-pill-val{font-weight:700}.metric-pill-sub{color:#64748b;font-size:.68rem}:root{--arch-bg:#090e17;--arch-card:#131c2b;--arch-card-hover:#172338;--arch-inner:#0d1522;--arch-border:#23334d;--arch-border-glow:#00d2ff;--arch-text:#f8fafc;--arch-muted:#94a3b8;--arch-solar:#f59e0b;--arch-power:#10b981;--arch-ac:#ef4444;--arch-ble:#a855f7;--arch-wifi:#3b82f6;--arch-cctv:#00d2ff}.arch-root{width:100%;max-width:1380px;color:var(--arch-text);margin:0 auto;padding:12px 10px 60px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,monospace}.arch-top-controls{background:var(--arch-card);border:1px solid var(--arch-border);border-radius:16px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;width:100%;margin-bottom:24px;padding:14px 18px;display:flex;box-shadow:0 8px 32px #00000073}.arch-system-tabs{background:var(--arch-inner);border:1px solid var(--arch-border);border-radius:12px;flex-wrap:wrap;gap:4px;padding:4px;display:flex}.arch-sys-btn{cursor:pointer;color:var(--arch-muted);background:0 0;border:none;border-radius:9px;align-items:center;gap:8px;padding:8px 18px;font-size:.88rem;font-weight:600;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex}.arch-sys-btn:hover{color:#fff;background:#ffffff0d}.arch-sys-btn.active.solar{color:#090e17;background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);font-weight:700;box-shadow:0 4px 16px #f59e0b59}.arch-sys-btn.active.cctv{color:#090e17;background:linear-gradient(135deg,#00d2ff 0%,#0284c7 100%);font-weight:700;box-shadow:0 4px 16px #00d2ff59}.arch-view-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.arch-view-segmented{background:var(--arch-inner);border:1px solid var(--arch-border);border-radius:10px;gap:2px;padding:3px;display:flex}.arch-seg-btn{cursor:pointer;color:var(--arch-muted);background:0 0;border:none;border-radius:7px;align-items:center;gap:6px;padding:6px 14px;font-size:.8rem;font-weight:500;transition:all .2s;display:flex}.arch-seg-btn.active{color:#00d2ff;background:#1c273a;font-weight:600;box-shadow:0 2px 8px #0000004d}.arch-external-link{background:var(--arch-inner);border:1px solid var(--arch-border);color:var(--arch-muted);border-radius:10px;align-items:center;gap:6px;padding:7px 14px;font-size:.8rem;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.arch-external-link:hover{color:#00d2ff;border-color:#00d2ff;box-shadow:0 0 12px #00d2ff33}.arch-hero{text-align:center;max-width:960px;margin:0 auto 30px;padding:0 12px}.arch-hero-title{letter-spacing:-.5px;margin-bottom:10px;font-size:2.1rem;font-weight:800;line-height:1.25}.arch-hero-title .glow-solar{color:#f59e0b;text-shadow:0 0 20px #f59e0b66}.arch-hero-title .glow-cctv{color:#00d2ff;text-shadow:0 0 20px #00d2ff66}.arch-hero-sub{color:var(--arch-muted);margin-bottom:16px;font-size:.98rem;line-height:1.6}.arch-sim-banner{border-radius:30px;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;padding:8px 18px;font-family:monospace;font-size:.84rem;display:inline-flex;box-shadow:0 4px 16px #0000004d}.arch-sim-banner.solar{color:#f59e0b;background:#f59e0b1f;border:1px solid #f59e0b59}.arch-sim-banner.cctv{color:#00e676;background:#00e6761f;border:1px solid #00e67659}.arch-sim-toggle-btn{color:inherit;cursor:pointer;background:#ffffff1a;border:1px solid;border-radius:12px;padding:3px 10px;font-size:.75rem;font-weight:700;transition:all .2s}.arch-sim-toggle-btn:hover{color:#090e17;background:currentColor}.arch-pulse-dot{border-radius:50%;width:9px;height:9px;position:relative}.arch-pulse-dot.solar{background:#f59e0b;box-shadow:0 0 10px #f59e0b}.arch-pulse-dot.cctv{background:#00e676;box-shadow:0 0 10px #00e676}.arch-pulse-dot:after{content:"";border:1.5px solid;border-radius:50%;animation:1.8s infinite pulseRipple;position:absolute;inset:-3px}@keyframes pulseRipple{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(2.4)}}.arch-pipeline-container{flex-direction:column;gap:20px;width:100%;max-width:1200px;margin:0 auto;display:flex}.arch-pipeline-stage{flex-direction:column;gap:12px;display:flex;position:relative}.arch-stage-header{color:var(--arch-muted);background:#131c2bb3;border-left:3px solid #00d2ff;border-radius:0 8px 8px 0;justify-content:space-between;align-items:center;padding:6px 14px;font-family:monospace;font-size:.78rem;display:flex}.arch-stage-header.solar{border-left-color:#f59e0b}.arch-stage-title{color:#f8fafc;align-items:center;gap:6px;font-weight:700;display:flex}.arch-stage-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;display:grid;position:relative}.arch-card{background:var(--arch-card);border:1px solid var(--arch-border);cursor:pointer;border-radius:16px;flex-direction:column;gap:12px;padding:16px;transition:all .28s cubic-bezier(.4,0,.2,1);display:flex;position:relative;overflow:hidden;box-shadow:0 4px 20px #0006}.arch-card:hover{background:var(--arch-card-hover);border-color:#00d2ff;transform:translateY(-4px);box-shadow:0 12px 30px #00d2ff26,0 0 1px 1px #00d2ff}.arch-card.solar-highlight:hover{border-color:#f59e0b;box-shadow:0 12px 30px #f59e0b2e,0 0 1px 1px #f59e0b}.arch-card-top{align-items:flex-start;gap:12px;display:flex}.arch-card-icon-wrap{background:var(--arch-inner);border:1px solid var(--arch-border);border-radius:12px;justify-content:center;align-items:center;width:44px;min-width:44px;height:44px;font-size:22px;display:flex}.arch-card-meta{flex:1}.arch-card-title{color:#fff;margin-bottom:4px;font-size:1.05rem;font-weight:700;line-height:1.3}.arch-card-category{color:var(--arch-muted);font-family:monospace;font-size:.72rem}.arch-card-badge{text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;border-radius:6px;padding:3px 8px;font-family:monospace;font-size:.68rem;font-weight:700}.arch-card-badge.solar{color:#f59e0b;background:#f59e0b2e;border:1px solid #f59e0b66}.arch-card-badge.power{color:#10b981;background:#10b9812e;border:1px solid #10b98166}.arch-card-badge.cctv{color:#00d2ff;background:#00d2ff2e;border:1px solid #00d2ff66}.arch-card-badge.bms{color:#c084fc;background:#a855f72e;border:1px solid #a855f766}.arch-card-img-wrap{background:var(--arch-inner);border:1px solid #ffffff0f;border-radius:10px;width:100%;height:140px;position:relative;overflow:hidden}.arch-card-img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;transition:transform .35s}.arch-card:hover .arch-card-img{transform:scale(1.05)}.arch-card-desc{color:var(--arch-muted);margin:0;font-size:.82rem;line-height:1.5}.arch-card-specs{background:var(--arch-inner);border:1px solid #ffffff0d;border-radius:10px;flex-direction:column;gap:5px;padding:10px 12px;font-family:monospace;font-size:.74rem;display:flex}.arch-spec-row{justify-content:space-between;align-items:center;display:flex}.arch-spec-k{color:var(--arch-muted)}.arch-spec-v{color:#00d2ff;font-weight:600}.arch-spec-v.solar{color:#f59e0b}.arch-spec-v.green{color:#00e676}.arch-card-inspect-hint{color:var(--arch-muted);border-top:1px dashed #ffffff14;justify-content:center;align-items:center;gap:6px;padding-top:4px;font-size:.72rem;transition:color .2s;display:flex}.arch-card:hover .arch-card-inspect-hint{color:#00d2ff}.arch-conduit{justify-content:center;align-items:center;height:48px;display:flex;position:relative;overflow:hidden}.arch-conduit-line{background:var(--arch-border);width:2px;height:100%;position:absolute}.arch-conduit-particle{border-radius:3px;width:6px;height:16px;animation:1.4s cubic-bezier(.4,0,.6,1) infinite conduitFlow;position:absolute}.arch-conduit-particle.solar{background:#f59e0b;box-shadow:0 0 10px #f59e0b}.arch-conduit-particle.dc{background:#10b981;box-shadow:0 0 10px #10b981}.arch-conduit-particle.cctv{background:#00d2ff;box-shadow:0 0 10px #00d2ff}.arch-conduit-badge{z-index:2;background:var(--arch-card);border:1px solid var(--arch-border);border-radius:20px;align-items:center;gap:6px;padding:3px 12px;font-family:monospace;font-size:.72rem;font-weight:600;display:flex;box-shadow:0 2px 8px #0006}@keyframes conduitFlow{0%{opacity:0;transform:translateY(-30px)}30%{opacity:1}70%{opacity:1}to{opacity:0;transform:translateY(30px)}}.arch-blueprint-wrapper{-webkit-overflow-scrolling:touch;justify-content:center;width:100%;padding:10px 4px;display:flex;overflow:auto hidden}.arch-blueprint-canvas{border:1px solid var(--arch-border);box-sizing:border-box;background:#0b121e;border-radius:20px;width:100%;max-width:1200px;padding:24px;position:relative;box-shadow:inset 0 0 80px #000c,0 8px 30px #0009}.arch-blueprint-svg{width:100%;height:auto;display:block}.arch-svg-track{fill:none;stroke:#1c273a;stroke-width:4px;stroke-linejoin:round}.arch-svg-flow{fill:none;stroke-width:4px;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:10 20;animation:1.2s linear infinite svgDash}.arch-svg-flow.solar{stroke:#f59e0b;filter:drop-shadow(0 0 6px #f59e0b)}.arch-svg-flow.dc{stroke:#10b981;filter:drop-shadow(0 0 6px #10b981)}.arch-svg-flow.ac{stroke:#ef4444;filter:drop-shadow(0 0 6px #ef4444)}.arch-svg-flow.ble{stroke:#a855f7;filter:drop-shadow(0 0 6px #a855f7)}.arch-svg-flow.wifi{stroke:#3b82f6;filter:drop-shadow(0 0 6px #3b82f6)}.arch-svg-flow.rtsp{stroke:#00e676;filter:drop-shadow(0 0 6px #00e676)}.arch-svg-flow.tunnel{stroke:#f59e0b;filter:drop-shadow(0 0 6px #f59e0b)}.arch-svg-flow.webrtc{stroke:#00d2ff;filter:drop-shadow(0 0 6px #00d2ff)}@keyframes svgDash{0%{stroke-dashoffset:30px}to{stroke-dashoffset:0}}.arch-modal-backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:999;background:#000000bf;justify-content:center;align-items:center;width:100vw;height:100vh;padding:16px;animation:.2s fadeIn;display:flex;position:fixed;top:0;left:0}.arch-modal-box{background:var(--arch-card);border:1px solid #38bdf8;border-radius:20px;flex-direction:column;width:100%;max-width:650px;max-height:90vh;animation:.25s cubic-bezier(.16,1,.3,1) slideUp;display:flex;position:relative;overflow-y:auto;box-shadow:0 20px 60px #000000e6,0 0 30px #00d2ff33}.arch-modal-header{border-bottom:1px solid var(--arch-border);justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.arch-modal-title-group{align-items:center;gap:12px;display:flex}.arch-modal-icon{font-size:28px}.arch-modal-title{color:#fff;margin:0;font-size:1.25rem;font-weight:700}.arch-modal-sub{color:var(--arch-muted);font-family:monospace;font-size:.75rem}.arch-modal-close{background:var(--arch-inner);border:1px solid var(--arch-border);color:var(--arch-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;font-size:16px;transition:all .2s;display:flex}.arch-modal-close:hover{color:#fff;background:#ef444433;border-color:#ef4444}.arch-modal-body{flex-direction:column;gap:16px;padding:22px;display:flex}.arch-modal-hero-img{-o-object-fit:cover;object-fit:cover;border:1px solid var(--arch-border);border-radius:12px;width:100%;max-height:240px}.arch-modal-desc{color:#cbd5e1;font-size:.9rem;line-height:1.6}.arch-modal-section-title{text-transform:uppercase;letter-spacing:.5px;color:#00d2ff;align-items:center;gap:6px;margin-bottom:8px;font-family:monospace;font-size:.85rem;font-weight:700;display:flex}.arch-modal-specs-table{border-collapse:collapse;background:var(--arch-inner);border:1px solid var(--arch-border);border-radius:10px;width:100%;overflow:hidden}.arch-modal-specs-table td{border-bottom:1px solid #ffffff0d;padding:10px 14px;font-size:.82rem}.arch-modal-specs-table tr:last-child td{border-bottom:none}.arch-modal-specs-table td:first-child{color:var(--arch-muted);width:40%;font-family:monospace}.arch-modal-specs-table td:last-child{color:#fff;font-family:monospace;font-weight:600}.arch-modal-highlights{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.arch-modal-highlights li{color:#cbd5e1;align-items:flex-start;gap:8px;font-size:.82rem;line-height:1.4;display:flex}.arch-modal-highlights li:before{content:"⚡";flex-shrink:0;font-size:.8rem}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.arch-legend-bar{background:var(--arch-card);border:1px solid var(--arch-border);border-radius:30px;flex-wrap:wrap;justify-content:center;gap:16px;margin-top:36px;padding:12px 24px;display:flex;box-shadow:0 4px 16px #0000004d}.arch-legend-item{color:var(--arch-muted);align-items:center;gap:8px;font-size:.8rem;font-weight:500;display:flex}.arch-legend-dot{border-radius:50%;width:10px;height:10px}@media (width<=768px){.arch-top-controls{flex-direction:column;align-items:stretch;padding:12px}.arch-system-tabs{justify-content:stretch;width:100%}.arch-sys-btn{flex:1;justify-content:center;padding:8px 10px;font-size:.82rem}.arch-view-controls{justify-content:space-between;width:100%}.arch-hero-title{font-size:1.55rem}.arch-stage-grid{grid-template-columns:1fr}}
