:root{--bg-primary: #090d16;--bg-panel: rgba(15, 23, 42, .88);--bg-panel-solid: #0f172a;--bg-card: rgba(30, 41, 59, .75);--border-color: rgba(56, 189, 248, .18);--border-glow: rgba(0, 245, 212, .35);--color-cyan: #00f5d4;--color-blue: #38bdf8;--color-solar: #ffd166;--color-emerald: #06d6a0;--color-orange: #ff5400;--color-amber: #ffb703;--color-rose: #ef4444;--color-dr: #ff007f;--text-main: #f8fafc;--text-muted: #94a3b8;--text-dim: #64748b;--font-sans: "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, Roboto, sans-serif;--font-mono: "Consolas", "Fira Code", "Courier New", monospace}*{box-sizing:border-box;margin:0;padding:0}body,html{width:100%;height:100%;overflow:hidden;background-color:var(--bg-primary);font-family:var(--font-sans);color:var(--text-main);user-select:none}#viewport-container{position:absolute;top:0;left:0;width:100vw;height:100vh;z-index:1;overflow:hidden;background-color:#070b14}#viewport-container canvas{width:100%!important;height:100%!important;display:block}.scada-hud{position:absolute;top:0;left:0;width:100vw;height:100vh;z-index:10;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between}.scada-hud *{pointer-events:auto}.glass-panel{background:var(--bg-panel);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--border-color);box-shadow:0 8px 32px #00000073}.topbar{height:50px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--border-color);background:#0b1120f0}.brand-section{display:flex;align-items:center;gap:10px}.brand-icon{font-size:22px;filter:drop-shadow(0 0 8px var(--color-cyan))}.brand-title{font-size:14px;font-weight:700;letter-spacing:.5px;color:#fff;text-transform:uppercase}.brand-subtitle{font-size:10.5px;color:var(--text-muted)}.topbar-controls{display:flex;align-items:center;gap:8px}.time-controls-bar{margin:4px 12px 2px;padding:5px 14px;border-radius:8px;display:flex;align-items:center;justify-content:space-between;gap:14px;background:#0f172af2;border:1px solid rgba(56,189,248,.28);box-shadow:0 4px 16px #00000073;z-index:20}.time-bar-left{display:flex;align-items:center;gap:8px;flex-shrink:0}.time-btn-group{display:flex;align-items:center;background:#1e293bb3;border-radius:6px;border:1px solid rgba(255,255,255,.08);padding:2px;gap:2px}.btn-time,.btn-time-mode,.btn-speed{background:transparent;color:var(--text-slate);border:none;border-radius:4px;padding:3px 9px;font-size:11px;font-weight:600;cursor:pointer;transition:all .2s ease;white-space:nowrap}.btn-time:hover,.btn-time-mode:hover,.btn-speed:hover{background:#38bdf833;color:#38bdf8}.btn-time.active,.btn-time-mode.active,.btn-speed.active{background:#0284c7;color:#fff;box-shadow:0 0 8px #0284c780}.speed-label{font-size:9.5px;font-weight:700;color:var(--text-dim);padding:0 5px;text-transform:uppercase;letter-spacing:.5px}.time-bar-center{flex:1;max-width:500px;margin:0 6px}.time-slider-wrapper{display:flex;flex-direction:column;gap:2px}.time-slider-header{display:flex;justify-content:space-between;align-items:center;font-size:9.5px}.time-slider-title{font-weight:700;text-transform:uppercase;color:var(--text-dim);letter-spacing:.5px}.time-slider-sub{color:#38bdf8;font-weight:600;font-variant-numeric:tabular-nums}.time-range-slider{width:100%;height:6px;appearance:none;background:#1e293be6;border-radius:3px;outline:none;cursor:pointer;border:1px solid rgba(56,189,248,.3)}.time-range-slider::-webkit-slider-thumb{appearance:none;width:14px;height:14px;border-radius:50%;background:#38bdf8;border:2px solid #ffffff;cursor:grab;box-shadow:0 0 10px #38bdf8cc;transition:transform .15s ease}.time-range-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.time-range-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#38bdf8;border:2px solid #ffffff;cursor:grab;box-shadow:0 0 10px #38bdf8cc}.time-slider-ticks{display:flex;justify-content:space-between;font-size:8.5px;color:var(--text-dim);padding:0 2px}.time-bar-right{display:flex;align-items:center;gap:10px;flex-shrink:0}.digital-clock-box,.solar-indicator-box{background:#0b1120d9;border:1px solid rgba(56,189,248,.25);border-radius:6px;padding:3px 10px;text-align:center;min-width:90px}.digital-clock-label,.solar-indicator-label{font-size:8px;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;display:block}.digital-clock{font-size:13px;font-weight:800;font-family:JetBrains Mono,Fira Code,monospace;color:#38bdf8;letter-spacing:.5px}.solar-indicator-val{font-size:13px;font-weight:800;font-family:JetBrains Mono,Fira Code,monospace;letter-spacing:.5px}.summary-banner{margin:5px 12px;padding:7px 12px;border-radius:8px;display:grid;grid-template-columns:repeat(10,1fr);gap:8px;background:#0f172af0;border:1px solid rgba(56,189,248,.22);box-shadow:0 4px 20px #00000080}.summary-col{display:flex;flex-direction:column;justify-content:center;padding:3px 6px;border-right:1px solid rgba(255,255,255,.08)}.summary-col:last-child{border-right:none}.summary-col.highlight-p2p{background:#06d6a014;border-radius:6px;border:1px solid rgba(6,214,160,.25)}.summary-col.highlight-3phase{background:#0ea5e914;border-radius:6px;border:1px solid rgba(14,165,233,.25)}.summary-col.highlight-hc{background:#a855f714;border-radius:6px;border:1px solid rgba(168,85,247,.28)}.badge-hc-bottleneck{font-size:8px;font-weight:700;padding:1px 4px;border-radius:4px;background:#a855f733;color:#c084fc;border:1px solid rgba(168,85,247,.4);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.badge-hc-status-tag{font-size:9px;font-weight:700;padding:2px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.5px}.badge-hc-status-tag.status-ok{background:#10b98133;color:#10b981;border:1px solid rgba(16,185,129,.4)}.badge-hc-status-tag.status-alert{background:#f59e0b33;color:#f59e0b;border:1px solid rgba(245,158,11,.4)}.badge-hc-status-tag.status-crit{background:#ef444433;color:#ef4444;border:1px solid rgba(239,68,68,.5);animation:pulse-danger 1.5s infinite}border-radius: 6px; border: 1px solid rgba(14,165,233,.28); } .summary-col.highlight-dsm{background:#ffd16614;border-radius:6px;border:1px solid rgba(255,209,102,.25)}.sc-title{font-size:9.5px;font-weight:700;text-transform:uppercase;color:var(--text-dim);letter-spacing:.5px;margin-bottom:2px}.sc-value-row{display:flex;align-items:baseline;gap:3px}.sc-val{font-family:var(--font-mono);font-size:18px;font-weight:800;line-height:1.1}.sc-val-sm{font-family:var(--font-mono);font-size:11.5px;font-weight:700}.sc-unit{font-size:10.5px;color:var(--text-muted)}.sc-sub{font-size:9px;color:var(--text-dim);margin-top:2px;white-space:nowrap}.p2p-badge-wrap{margin-top:2px}.badge-p2p{background:#06d6a033;color:var(--color-emerald);font-size:9px;font-weight:700;padding:1.5px 5px;border-radius:4px;border:1px solid rgba(6,214,160,.4);display:inline-block}.cert-col{justify-content:center}.cert-box{display:flex;align-items:center;gap:5px;padding:3px 6px;border-radius:4px;font-size:9px;font-weight:700;line-height:1.2}.cert-ok{background:#06d6a026;color:var(--color-emerald);border:1px solid rgba(6,214,160,.35)}.cert-warn{background:#ffb70326;color:var(--color-amber);border:1px solid rgba(255,183,3,.35)}.cert-icon{font-size:11px}.status-pill{padding:2px 7px;border-radius:9999px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;display:inline-block;margin-top:2px}.status-normal{background:#06d6a026;color:var(--color-emerald);border:1px solid rgba(6,214,160,.4)}.status-warning{background:#ffb70326;color:var(--color-amber);border:1px solid rgba(255,183,3,.4)}.status-balanced{background:#ffd16626;color:var(--color-solar);border:1px solid rgba(255,209,102,.4)}.status-overload,.status-critical{background:#ef444433;color:var(--color-rose);border:1px solid rgba(239,68,68,.5);animation:pulse-alert 1.2s infinite}@keyframes pulse-alert{0%,to{opacity:1;filter:drop-shadow(0 0 2px var(--color-rose))}50%{opacity:.6}}.pulse-alarm{animation:pulse-alert 1s infinite}.main-hud-area{flex:1;display:flex;justify-content:space-between;padding:4px 12px;pointer-events:none;overflow:hidden;gap:12px}.sidebar{width:360px;max-height:calc(100vh - 277px);overflow-y:auto;border-radius:8px;padding:9px;display:flex;flex-direction:column;gap:9px;pointer-events:auto}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:#38bdf840;border-radius:4px}.hud-card{background:var(--bg-card);border:1px solid rgba(56,189,248,.12);border-radius:6px;padding:8px 10px;display:flex;flex-direction:column;gap:6px}.hud-card-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:4px}.card-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--color-blue);display:flex;align-items:center;gap:5px}.card-section{background:#0f172a99;border-radius:5px;padding:6px 8px;border:1px solid rgba(255,255,255,.05)}.section-title{font-size:10px;font-weight:600;color:var(--text-muted);margin-bottom:4px;text-transform:uppercase}.dsm-panel-card{border:1px solid rgba(0,245,212,.28);background:#0f172ad9}.badge-dsm-mode{background:#00f5d426;color:var(--color-cyan);border:1px solid rgba(0,245,212,.4);font-size:9.5px;font-weight:700;padding:2px 6px;border-radius:4px;text-transform:uppercase}.dsm-modes-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:4px}.btn-dsm{background:#1e293bb3;border:1px solid rgba(56,189,248,.18);border-radius:5px;padding:6px;text-align:left;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:2px}.btn-dsm:hover{background:#334155d9;border-color:var(--color-cyan)}.btn-dsm.active{background:#00f5d42e;border-color:var(--color-cyan);box-shadow:0 0 10px #00f5d440}.btn-dsm-dr.active{background:#ff007f38;border-color:var(--color-dr);box-shadow:0 0 10px #ff007f59}.dsm-title{font-size:10px;font-weight:700;color:#fff}.btn-dsm.active .dsm-title{color:var(--color-cyan)}.btn-dsm-dr.active .dsm-title{color:var(--color-dr)}.dsm-desc{font-size:8.5px;color:var(--text-muted);line-height:1.25}.dsm-status-callout{display:flex;align-items:flex-start;gap:6px;background:#0b1421bf;border:1px solid rgba(255,255,255,.08);border-radius:4px;padding:5px 7px;font-size:9.5px;color:var(--text-muted);margin-top:4px}.dsm-callout-icon{font-size:12px}.granular-slider-card{background:#0f172a80;border-radius:4px;padding:4px 7px;margin-bottom:5px;border:1px solid rgba(255,255,255,.04)}.house-slider-label{font-size:10.5px}.house-slider-val{font-family:var(--font-mono);font-size:11px;font-weight:700}.slider-granular{width:100%;accent-color:var(--color-cyan);cursor:pointer;margin:2px 0}.role-pill{font-size:8.5px;font-weight:700;padding:1px 5px;border-radius:3px;text-transform:uppercase}.pill-inject{background:#06d6a033;color:var(--color-emerald)}.pill-deficit{background:#ff540033;color:var(--color-orange)}.pill-neutral{background:#64748b33;color:var(--text-muted)}.btn-group-load-mode{display:inline-flex;align-items:center;background:#1e293bcc;border-radius:4px;border:1px solid rgba(255,255,255,.08);padding:1px;gap:2px}.btn-lmode{background:transparent;border:none;font-size:8.5px;font-weight:700;color:var(--text-dim);padding:1px 5px;border-radius:3px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.btn-lmode:hover{color:#38bdf8}.btn-lmode.active{background:#0284c7;color:#fff;box-shadow:0 0 6px #0284c780}.btn-lmode.active.manual{background:#d97706;color:#fff;box-shadow:0 0 6px #d9770680}.ev-toggle-row{display:flex;justify-content:space-between;align-items:center;background:#0f172a80;padding:5px 7px;border-radius:4px;border:1px solid rgba(255,255,255,.05)}.ev-info{display:flex;flex-direction:column;font-size:10.5px}.btn{background:#1e293bd9;border:1px solid var(--border-color);color:var(--text-main);padding:4px 10px;border-radius:6px;font-size:11px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all .2s ease}.btn:hover{background:#334155e6;border-color:var(--color-cyan);box-shadow:0 0 8px #00f5d433}.btn.active{background:#00f5d433;border-color:var(--color-cyan);color:var(--color-cyan)}.btn-cyan{background:#00f5d426;border-color:var(--color-cyan);color:var(--color-cyan)}.btn-warning{background:#ffb70333;border-color:var(--color-amber);color:var(--color-amber)}.btn-sm{padding:3px 6px;font-size:10px;border-radius:4px}.btn-success{background:#06d6a040;border-color:var(--color-emerald);color:var(--color-emerald)}.btn-secondary{background:#33415580;border-color:#94a3b833;color:var(--text-muted)}.btn-pdf{background:linear-gradient(135deg,#ef444447,#b91c1c6b);border:1px solid rgba(239,68,68,.65);color:#fff;font-weight:600;display:inline-flex;align-items:center;gap:6px;box-shadow:0 0 10px #ef444440;transition:all .25s ease}.btn-pdf:hover{background:linear-gradient(135deg,#ef444473,#b91c1ca6);border-color:#ef4444;box-shadow:0 0 16px #ef444480;transform:translateY(-1px);color:#fff}.btn-pdf:active{transform:translateY(1px)}.btn-bayes-pdf{background:linear-gradient(135deg,#8b5cf647,#6d28d973);border:1px solid rgba(139,92,246,.7);color:#fff;font-weight:600;display:inline-flex;align-items:center;gap:6px;box-shadow:0 0 12px #8b5cf64d;transition:all .25s ease}.btn-bayes-pdf:hover{background:linear-gradient(135deg,#8b5cf67a,#6d28d9b8);border-color:#a78bfa;box-shadow:0 0 18px #8b5cf699;transform:translateY(-1px);color:#fff}.btn-bayes-pdf:active{transform:translateY(1px)}.form-select{background:#0f172af2;border:1px solid var(--border-color);color:var(--text-main);padding:4px 8px;border-radius:6px;font-size:11px;cursor:pointer;outline:none}.form-select-sm{background:#0f172af2;border:1px solid var(--border-color);color:var(--text-main);padding:2px 5px;border-radius:4px;font-size:10px}.metric-row{display:flex;justify-content:space-between;align-items:baseline;font-size:11px;margin-bottom:2px}.metric-label{color:var(--text-muted)}.metric-value{font-family:var(--font-mono);font-weight:700;font-size:12px}.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}.m-card{background:#1e293b80;border-radius:4px;padding:4px 6px;display:flex;flex-direction:column}.m-val{font-family:var(--font-mono);font-weight:700;font-size:12.5px}.m-sub{font-size:8.5px;color:var(--text-dim)}.progress-bar-wrap{width:100%;height:5px;background:#33415580;border-radius:3px;overflow:hidden;margin:2px 0}.progress-fill{height:100%;border-radius:3px;transition:width .3s ease,background-color .3s ease}.fill-cyan{background-color:var(--color-cyan)}.fill-amber,.fill-warning{background-color:var(--color-amber)}.fill-danger{background-color:var(--color-rose)}.text-cyan{color:var(--color-cyan)}.text-blue{color:var(--color-blue)}.text-amber{color:var(--color-amber)}.text-solar{color:var(--color-solar)}.text-emerald{color:var(--color-emerald)}.text-orange{color:var(--color-orange)}.text-rose{color:var(--color-rose)}.text-slate{color:#e2e8f0}.text-dim{color:var(--text-dim)}.flex-between{display:flex;justify-content:space-between;align-items:center}.voltage-row{display:flex;align-items:center;gap:6px;font-size:10px;margin-bottom:2px}.v-label{width:26px;font-family:var(--font-mono);color:var(--text-muted)}.v-track{flex:1;height:5px;background:#33415580;border-radius:3px;position:relative;overflow:hidden}.v-bar{height:100%;border-radius:3px;transition:width .3s ease}.v-nominal-mark{position:absolute;left:50%;top:0;width:2px;height:100%;background:#fff6}.v-value{width:40px;text-align:right;font-family:var(--font-mono);font-weight:600}.bottombar{height:140px;display:flex;border-top:1px solid var(--border-color);background:#0b1120f2;padding:5px 12px;gap:12px}.chart-container{flex:3;height:100%;display:flex;flex-direction:column;position:relative}.chart-view-tabs{display:flex;align-items:center;gap:6px;margin-bottom:3px}.btn-chart-tab{background:#1e293bb3;border:1px solid var(--border-color);color:var(--text-muted);font-size:9.5px;font-weight:600;padding:2px 7px;border-radius:4px;cursor:pointer;transition:all .2s ease}.btn-chart-tab:hover{background:#334155e6;color:#fff}.btn-chart-tab.active{background:#00f5d42e;border-color:var(--color-cyan);color:var(--color-cyan)}.chart-info-chip{font-size:9.5px;font-family:var(--font-mono);color:var(--text-dim);margin-left:auto}.chart-container canvas{flex:1}.event-log-box{flex:2;height:100%;background:#0f172ab3;border:1px solid rgba(56,189,248,.12);border-radius:6px;padding:5px 8px;overflow-y:auto;font-family:var(--font-mono);font-size:9.5px;display:flex;flex-direction:column;gap:2px}.log-item{display:flex;gap:5px;line-height:1.3}.log-time{color:var(--text-dim)}.modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000bf;backdrop-filter:blur(8px);z-index:999;display:none;align-items:center;justify-content:center}.modal-overlay.open{display:flex}.modal-window{width:720px;max-width:90vw;max-height:85vh;background:var(--bg-panel-solid);border:1px solid var(--border-color);border-radius:8px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 16px 48px #000000b3}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 18px;border-bottom:1px solid var(--border-color)}.modal-title{font-size:14px;font-weight:700;color:var(--color-cyan)}.modal-close{background:transparent;border:none;color:var(--text-muted);font-size:20px;cursor:pointer}.modal-body{padding:16px 18px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.json-textarea{width:100%;height:320px;background:#060911;border:1px solid var(--border-color);color:#38bdf8;font-family:var(--font-mono);font-size:11px;padding:10px;border-radius:4px;resize:vertical;outline:none}.modal-footer{padding:12px 18px;border-top:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.validation-msg{font-size:11px;padding:6px 10px;border-radius:4px}.validation-msg.info{color:var(--color-blue);background:#38bdf81a}.validation-msg.success{color:var(--color-emerald);background:#06d6a01a}.validation-msg.error{color:var(--color-rose);background:#ef444426;white-space:pre-wrap}.remote-box{display:flex;gap:8px;align-items:center}.remote-input{flex:1;background:#060911;border:1px solid var(--border-color);color:#fff;padding:6px 10px;border-radius:4px;font-family:var(--font-mono);font-size:11px}.text-purple{color:#c084fc!important}.btn-pcc{background:#06d6a026;border:1px solid rgba(6,214,160,.5);color:#06d6a0;font-weight:600;display:flex;align-items:center;gap:6px;transition:all .25s ease}.btn-pcc:hover{background:#06d6a047;border-color:#06d6a0;box-shadow:0 0 12px #06d6a066}.btn-pcc.island-active{background:#ffb70338;border-color:#ffb703;color:#ffbe0b;animation:pulse-island 1.8s infinite}@keyframes pulse-island{0%,to{box-shadow:0 0 4px #ffb7034d}50%{box-shadow:0 0 16px #ffb703b3}}.badge-hc{font-size:9.5px;font-weight:700;padding:2px 7px;border-radius:4px;text-transform:uppercase;letter-spacing:.5px}.badge-hc.hc-normal{background:#06d6a026;border:1px solid rgba(6,214,160,.4);color:#06d6a0}.badge-hc.hc-warning{background:#ffb70333;border:1px solid rgba(255,183,3,.5);color:#ffd166}.badge-hc.hc-curtailment{background:#ef444440;border:1px solid rgba(239,68,68,.7);color:#ff4d6d;animation:pulse-curtail 1.2s infinite}@keyframes pulse-curtail{0%,to{opacity:1}50%{opacity:.5}}.v2g-card{background:#0f172aa6;border:1px solid rgba(56,189,248,.2);border-radius:6px;padding:8px 10px;margin-bottom:8px}.soc-pill{font-size:9.5px;font-weight:700;padding:2px 6px;border-radius:4px;background:#00f5d41f;color:var(--color-cyan);border:1px solid rgba(0,245,212,.3)}.soc-pill.soc-low{background:#ef444433;color:#ff758f;border-color:#ef444480}.v2g-btn-group{display:grid;grid-template-columns:1fr .8fr 1fr;gap:4px;margin:6px 0}.btn-v2g{font-size:9px;font-weight:600;padding:5px 2px;border-radius:4px;border:1px solid rgba(148,163,184,.25);background:#1e293b99;color:var(--text-muted);cursor:pointer;text-align:center;transition:all .2s ease}.btn-v2g:hover{background:#38bdf826;color:#fff}.btn-v2g.active{background:#38bdf840;border-color:var(--color-blue);color:#fff;box-shadow:0 0 8px #38bdf84d}.btn-v2g-discharge.active{background:#00f5d440!important;border-color:var(--color-cyan)!important;color:var(--color-cyan)!important;box-shadow:0 0 10px #00f5d473!important}.v2g-status-text{font-size:10px;margin-top:2px;display:flex;align-items:center;gap:4px}.btn-ev-force{width:100%;margin-top:5px;padding:4px 6px;font-size:9.5px;font-weight:700;border-radius:4px;background:#ef444426;border:1px solid rgba(239,68,68,.45);color:#f87171;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:4px}.btn-ev-force:hover{background:#ef44444d;color:#fff;border-color:#ef4444}.btn-ev-force.active-forced{background:#dc2626!important;color:#fff!important;border-color:#f87171!important;box-shadow:0 0 12px #ef4444b3!important;animation:pulse-ev-force 1.5s infinite}@keyframes pulse-ev-force{0%{box-shadow:0 0 6px #ef444466}50%{box-shadow:0 0 14px #ef4444d9}to{box-shadow:0 0 6px #ef444466}}.bess-minsoc-wrap{margin-top:8px;background:#0f172abf;border:1px solid rgba(56,189,248,.2);border-radius:6px;padding:6px 9px}.bess-minsoc-slider{width:100%;height:5px;appearance:none;background:#1e293be6;border-radius:3px;outline:none;cursor:pointer;margin:5px 0 2px}.bess-minsoc-slider::-webkit-slider-thumb{appearance:none;width:13px;height:13px;border-radius:50%;background:#38bdf8;border:2px solid #ffffff;cursor:grab;box-shadow:0 0 6px #38bdf8cc}.bess-minsoc-slider::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:#38bdf8;border:2px solid #ffffff;cursor:grab}.pv-cap-slider{width:100%;height:5px;appearance:none;background:#1e293be6;border-radius:3px;outline:none;cursor:pointer;margin:5px 0 2px}.pv-cap-slider::-webkit-slider-thumb{appearance:none;width:13px;height:13px;border-radius:50%;background:#f59e0b;border:2px solid #ffffff;cursor:grab;box-shadow:0 0 6px #f59e0bcc}.pv-cap-slider::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:#f59e0b;border:2px solid #ffffff;cursor:grab}.voltage-gauge-wrap{background:#0f172ab3;border:1px solid rgba(56,189,248,.15);border-radius:6px;padding:8px 10px}.v-gauge-bar{position:relative;width:100%;height:10px;background:#0f172a;border-radius:5px;overflow:hidden;border:1px solid rgba(255,255,255,.1)}.v-gauge-fill{height:100%;background:linear-gradient(90deg,#06d6a0,#ffd166 65%,#ef4444);transition:width .3s ease}.v-gauge-marker{position:absolute;top:0;width:2px;height:100%;background:#fff}.v-gauge-marker.m-242{left:71.1%;background:#ffd166}.v-gauge-marker.m-245{left:77.8%;background:#ef4444}.metric-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:6px}.islanding-card{border-color:#ffb7034d}.voltvar-card{border-color:#c084fc4d}.quick-nav-dock{position:absolute;top:202px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:5px;background:#0b1120e0;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:4px 8px;border-radius:20px;border:1px solid rgba(56,189,248,.3);box-shadow:0 4px 20px #00000080;z-index:100;pointer-events:auto}.nav-dock-btn{background:#1e293bb3;color:var(--text-slate);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:3px 10px;font-size:11px;font-weight:600;cursor:pointer;transition:all .2s ease;white-space:nowrap}.nav-dock-btn:hover{background:#38bdf833;color:#38bdf8;border-color:#38bdf8;transform:translateY(-1px)}.nav-dock-btn.active{background:#0284c7;color:#fff;border-color:#38bdf8;box-shadow:0 0 10px #0284c780}.sidebar-header-row{display:flex;justify-content:space-between;align-items:center;padding-bottom:4px}.btn-sidebar-toggle{background:#1e293bcc;color:#38bdf8;border:1px solid rgba(56,189,248,.3);border-radius:4px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:11px;transition:all .2s}.btn-sidebar-toggle:hover{background:#0284c7;color:#fff}.sidebar{transition:width .3s cubic-bezier(.4,0,.2,1),padding .3s ease,transform .3s ease}.sidebar.collapsed{width:44px;min-width:44px;padding:8px 6px;overflow:hidden}.sidebar.collapsed>*:not(.sidebar-header-row){display:none}.sidebar.collapsed .sidebar-header-row{flex-direction:column;align-items:center;gap:8px}.sidebar-title-vertical{display:none}.sidebar.collapsed .sidebar-title-vertical{display:block;writing-mode:vertical-rl;text-orientation:mixed;font-size:11px;font-weight:700;color:#38bdf8;letter-spacing:1px;text-transform:uppercase;margin-top:10px}.scada-hud{transition:all .3s ease}.scada-hud.hud-hidden .time-controls-bar,.scada-hud.hud-hidden .quick-nav-dock,.scada-hud.hud-hidden .summary-banner,.scada-hud.hud-hidden .main-hud-area,.scada-hud.hud-hidden .bottombar{opacity:0;pointer-events:none;transform:translateY(20px);transition:all .3s ease}.scada-hud .time-controls-bar,.scada-hud .quick-nav-dock,.scada-hud .summary-banner,.scada-hud .main-hud-area,.scada-hud .bottombar{transition:opacity .3s ease,transform .3s ease}.btn-perf{background:#10b98126;border:1px solid rgba(16,185,129,.4);color:#10b981}.btn-perf:hover{background:#10b9814d;color:#fff}.btn-perf.eco-active{background:#10b98159;border-color:#10b981;box-shadow:0 0 10px #10b98166}.house-visual-card{background:#0f172ad9;border:1px solid rgba(56,189,248,.25);border-radius:8px;padding:8px;margin-bottom:8px;text-align:center}.house-visual-card svg{width:100%;max-height:140px;filter:drop-shadow(0 4px 8px rgba(0,0,0,.4))}.house-badges-strip{display:flex;justify-content:center;flex-wrap:wrap;gap:5px;margin-top:6px}.house-badge-pill{font-size:9.5px;font-weight:700;padding:2px 7px;border-radius:10px}.pill-pv{background:#ffb70333;color:#ffd166;border:1px solid rgba(255,183,3,.4)}.pill-bess{background:#06d6a033;color:#06d6a0;border:1px solid rgba(6,214,160,.4)}.pill-ev{background:#38bdf833;color:#38bdf8;border:1px solid rgba(56,189,248,.4)}.katex{font-size:1.04em;color:inherit;text-rendering:geometricPrecision}.katex-html{user-select:text}.katex-display{margin:4px 0!important;text-align:center}.sc-sub .katex,.m-sub .katex,.metric-label .katex,.card-title .katex{font-size:.96em;vertical-align:-.04em}.cert-box .katex{font-size:1.08em;color:var(--color-cyan)}.dsm-status-callout .katex{color:#38bdf8;font-weight:600}.sc-title .katex{font-size:.94em;color:#94a3b8}.modal-pdf-window{width:620px;max-width:94vw;max-height:92vh}.modal-pdf-window .modal-body{padding:12px 18px;gap:8px}.pdf-scope-options{display:flex;flex-direction:column;gap:8px;margin:4px 0 8px}.pdf-scope-card{display:flex;align-items:flex-start;gap:12px;padding:9px 12px;border-radius:8px;background:#1e293b99;border:1px solid rgba(56,189,248,.2);cursor:pointer;transition:all .2s ease}.pdf-scope-card:hover{background:#1e293be6;border-color:#38bdf873}.pdf-scope-card.active,.pdf-scope-card:has(input[type=radio]:checked){background:#0ea5e926;border-color:#00f5d4;box-shadow:0 0 12px #00f5d426}.pdf-scope-radio{margin-top:3px;accent-color:#00f5d4;cursor:pointer}.pdf-scope-content{flex:1}.pdf-scope-title{font-size:13px;font-weight:700;color:#f8fafc;margin-bottom:3px}.pdf-scope-card.active .pdf-scope-title,.pdf-scope-card:has(input[type=radio]:checked) .pdf-scope-title{color:#00f5d4}.pdf-scope-desc{font-size:10.5px;line-height:1.4;color:var(--text-muted)}.pdf-module-checkbox-card{display:flex;align-items:flex-start;gap:12px;padding:9px 12px;border-radius:8px;background:#1e293ba6;border:1px solid rgba(148,163,184,.25);cursor:pointer;transition:all .2s ease}.pdf-module-checkbox-card:hover{background:#1e293be6;border-color:#38bdf880}.pdf-module-checkbox-card:has(input[type=checkbox]:checked){background:#0f172ad9;border-color:#38bdf873;box-shadow:0 0 10px #38bdf81a}.pdf-module-checkbox{margin-top:3px;width:16px;height:16px;cursor:pointer}.pdf-module-text{flex:1}.btn-group-reserve{display:inline-flex;gap:4px;background:#0f172ab3;padding:2px;border-radius:6px;border:1px solid rgba(56,189,248,.2)}.btn-reserve{background:transparent;border:none;color:var(--text-muted);font-size:10px;font-weight:600;padding:2px 8px;border-radius:4px;cursor:pointer;transition:all .15s ease}.btn-reserve:hover{color:#f8fafc}.btn-reserve.active{background:#0284c7;color:#fff;font-weight:700;box-shadow:0 0 8px #0284c780}.v2g-security-alert{margin-top:6px;padding:6px 10px;background:#ef44442e;border:1px solid rgba(239,68,68,.5);border-radius:6px;color:#fca5a5;font-size:10px;font-weight:700;display:flex;align-items:center;gap:6px;animation:pulseAlert 2s infinite ease-in-out}@keyframes pulseAlert{0%,to{opacity:1;border-color:#ef444480}50%{opacity:.75;border-color:#ef4444e6}}.phase-fault-controls{display:inline-flex;align-items:center;gap:3px;background:#0f172ad9;border:1px solid rgba(56,189,248,.25);border-radius:6px;padding:2px 4px}.btn-phase-toggle{background:#1e293bd9;color:#94a3b8;border:1px solid rgba(148,163,184,.2);border-radius:4px;padding:3px 7px;font-size:10px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .2s ease;white-space:nowrap}.btn-phase-toggle:hover{filter:brightness(1.2);transform:translateY(-1px)}.btn-phase-toggle.active{background:#10b98126;border-color:#10b981;color:#10b981;box-shadow:0 0 6px #10b9814d}.btn-phase-toggle.fault{background:#ef444440!important;border-color:#ef4444!important;color:#f87171!important;box-shadow:0 0 10px #ef444480!important;animation:pulse-phase-fault 1.5s infinite}@keyframes pulse-phase-fault{0%,to{box-shadow:0 0 4px #ef444466}50%{box-shadow:0 0 12px #ef4444d9}}.phase-dot{width:7px;height:7px;border-radius:50%;display:inline-block}.dot-A{background-color:#ef4444;box-shadow:0 0 5px #ef4444}.dot-B{background-color:#3b82f6;box-shadow:0 0 5px #3b82f6}.dot-C{background-color:#10b981;box-shadow:0 0 5px #10b981}.badge-phase-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;border-radius:4px;font-size:9.5px;font-weight:700;text-transform:uppercase}.badge-phase-A{background:#ef444426;color:#f87171;border:1px solid rgba(239,68,68,.4)}.badge-phase-B{background:#3b82f626;color:#60a5fa;border:1px solid rgba(59,130,246,.4)}.badge-phase-C{background:#10b98126;color:#34d399;border:1px solid rgba(16,185,129,.4)}.three-phase-table{width:100%;border-collapse:collapse;font-size:10px;margin-top:5px}.three-phase-table th,.three-phase-table td{padding:4px 6px;text-align:center;border:1px solid rgba(255,255,255,.08)}.three-phase-table th{background:#0f172ae6;color:var(--text-dim);font-weight:700;text-transform:uppercase;font-size:9px}.three-phase-table tr:nth-child(2n){background:#1e293b66}#vr-enter-button{position:fixed!important;left:50%!important;bottom:26px!important;transform:translate(-50%);width:auto!important;min-width:230px;padding:16px 30px!important;background:linear-gradient(135deg,#00f5d4,#38bdf8)!important;color:#04202b!important;border:2px solid rgba(255,255,255,.9)!important;border-radius:999px!important;font:800 17px var(--font-sans)!important;letter-spacing:.08em;text-align:center!important;opacity:1!important;cursor:pointer!important;z-index:100001!important;box-shadow:0 10px 34px #00f5d473,0 0 #00f5d48c;animation:vr-enter-pulse 1.8s ease-out infinite;pointer-events:auto}#vr-enter-button:hover{transform:translate(-50%) scale(1.06);filter:brightness(1.1)}@keyframes vr-enter-pulse{0%{box-shadow:0 10px 34px #00f5d473,0 0 #00f5d48c}70%{box-shadow:0 10px 34px #00f5d473,0 0 0 18px #00f5d400}to{box-shadow:0 10px 34px #00f5d473,0 0 #00f5d400}}@media(prefers-reduced-motion:reduce){#vr-enter-button{animation:none}}
