*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--font:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--bg:#0b0f1a;--header:#0e1322;--card:#121829;--card2:#182135;--border:#222c42;--border2:#2e3a54;--text:#e4eaf2;--mid:#8a9ab2;--sub:#6f8099;--accent:#cf0;--accent-dim:#a6cc00;--accent-strong:#cf0;--on-accent:#0b0f1a;--series2:#6c8fb0;--good:#cf0;--warn:#f5a524;--crit:#f2555a;--accent-soft:#ccff001a;--accent-faint:#ccff002e;--series2-soft:#6c8fb01f;--warn-soft:#f5a5241f;--crit-soft:#f2555a1f;--accent-edge:#ccff0038;--warn-edge:#f5a52438;--series2-edge:#6c8fb040;--track:#6c8fb01f;--hover-wash:#ccff000a;--row-accent-wash:#ccff000d;--row-warn-wash:#f5a5240d;--fill-accent:#ccff00bf;--fill-series2:#6c8fb0e0;--fill-series2-line:#6c8fb0b3;--fill-series2-ghost:#6c8fb01f;--fill-warn:#f5a524e0;--fill-crit:#f2555ad9;--grid:#222c42d9;--zoom-drag:#ccff0024;--zoom-drag-edge:#ccff008c;--tooltip-bg:#0b0f1a;--tooltip-border:#222c42;--tooltip-title:#8a9ab2;--tooltip-text:#e4eaf2;--glow-accent:0 0 10px #ccff0040;--logo-glow:drop-shadow(0 0 6px #ccff0073);--dot-glow:0 0 6px var(--accent);--card-shadow:none;--header-shadow:none;--table-bg:transparent}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f2f5f9;--header:#fff;--card:#fff;--card2:#f2f5fa;--border:#dce3ed;--border2:#c3cedd;--text:#101827;--mid:#4e5e75;--sub:#616f86;--accent:#617900;--accent-dim:#4d6000;--accent-strong:#7b9800;--on-accent:#171f00;--series2:#3f6e96;--good:#617900;--warn:#8f5a00;--crit:#c0272d;--accent-soft:#61790012;--accent-faint:#61790033;--series2-soft:#3f6e961c;--warn-soft:#8f5a001c;--crit-soft:#c0272d1a;--accent-edge:#61790057;--warn-edge:#8f5a0047;--series2-edge:#3f6e9647;--track:#3f6e9624;--hover-wash:#6179000f;--row-accent-wash:#61790014;--row-warn-wash:#8f5a0012;--fill-accent:#7b9800f2;--fill-series2:#3f6e96d9;--fill-series2-line:#3f6e96b3;--fill-series2-ghost:#3f6e9624;--fill-warn:#8f5a00d9;--fill-crit:#c0272dd9;--grid:#bec9d7e6;--zoom-drag:#7b980029;--zoom-drag-edge:#7b980099;--tooltip-bg:#fff;--tooltip-border:#c3cedd;--tooltip-title:#4e5e75;--tooltip-text:#101827;--glow-accent:0 1px 2px #1018271f;--logo-glow:none;--dot-glow:0 0 0 3px #7b98003d;--card-shadow:0 1px 2px #1018270d;--header-shadow:0 1px 2px #1018270d;--table-bg:#fff}body{background:var(--bg);color:var(--text);font-family:var(--font);min-height:100vh;font-size:13.5px;line-height:1.5;display:flex}body,.header,.page-bar,.card,.kpi,.h-pill,.h-tabs,.itab-group,.theme-toggle,.tbl-wrap,thead tr,.err-stats,.alert,.footer{transition:background-color .18s,border-color .18s,color .18s}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}.main-wrap{flex-direction:column;flex:1;display:flex;overflow:hidden}.header{background:var(--header);border-bottom:1px solid var(--border);height:52px;box-shadow:var(--header-shadow);z-index:2;flex-shrink:0;justify-content:space-between;align-items:center;padding:0 22px;display:flex;position:relative}.logo-block{align-items:center;gap:10px;display:flex}.logo-mark{color:var(--accent);filter:var(--logo-glow);flex-shrink:0;justify-content:center;align-items:center;display:flex}.logo-name{letter-spacing:-.01em;font-size:15px;font-weight:700}.logo-tag{color:var(--mid);letter-spacing:.03em;font-size:11px}.h-tabs{background:var(--card2);border:1px solid var(--border);border-radius:9px;gap:3px;padding:3px;display:flex}.h-tab{color:var(--mid);cursor:default;border-radius:7px;padding:5px 18px;font-size:13px;font-weight:600}.h-tab.active{background:var(--accent-strong);color:var(--on-accent);box-shadow:var(--glow-accent)}.h-right{align-items:center;gap:12px;display:flex}.h-pill{background:var(--card2);border:1px solid var(--border);color:var(--mid);border-radius:6px;padding:5px 12px;font-size:12px}.live{color:var(--accent);align-items:center;gap:6px;font-size:12px;font-weight:500;display:flex}.live-dot{background:var(--accent);width:7px;height:7px;box-shadow:var(--dot-glow);border-radius:50%;animation:2s ease-in-out infinite blink}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.theme-toggle{background:var(--card2);border:1px solid var(--border);width:30px;height:30px;color:var(--mid);cursor:pointer;font-family:var(--font);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:color .15s,border-color .15s,background-color .15s;display:flex}.theme-toggle:hover{color:var(--accent);border-color:var(--accent-edge)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-toggle svg{display:block}.page-bar{background:var(--header);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:0;padding:0 22px;display:flex}.page-tab{color:var(--mid);cursor:pointer;font-size:13.5px;font-weight:500;font-family:var(--font);background:0 0;border:none;border-bottom:2px solid #0000;padding:11px 18px;transition:color .2s,border-color .2s}.page-tab:hover{color:var(--text)}.page-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.page{flex:1;padding:16px 20px 22px;display:none;overflow-y:auto}.page.active{display:block}.kpi-row{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px;display:grid}.kpi{background:var(--card);border:1px solid var(--border);box-shadow:var(--card-shadow);border-radius:10px;padding:13px 16px 11px;position:relative;overflow:hidden}.kpi-bar{background:var(--accent);border-radius:10px 10px 0 0;height:2px;position:absolute;top:0;left:0;right:0}.kpi-label{letter-spacing:.07em;text-transform:uppercase;color:var(--sub);margin-bottom:6px;font-size:11px;font-weight:600}.kpi-value{letter-spacing:-.03em;color:var(--text);margin-bottom:5px;font-size:26px;font-weight:800;line-height:1}.kpi-value .u{color:var(--mid);font-size:14px;font-weight:400}.kpi-meta{color:var(--sub);align-items:center;gap:6px;font-size:12px;display:flex}.badge{border-radius:4px;align-items:center;padding:1px 7px;font-size:11.5px;font-weight:600;display:inline-flex}.badge.up{background:var(--accent-soft);color:var(--accent)}.badge.down{background:var(--crit-soft);color:var(--crit)}.badge.amber{background:var(--warn-soft);color:var(--warn)}.badge.blue{background:var(--series2-soft);color:var(--series2)}.chip{border:1px solid;border-radius:20px;align-items:center;gap:4px;padding:3px 9px;font-size:11.5px;font-weight:600;display:inline-flex}.chip.green{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-edge)}.chip.amber{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-edge)}.chip.blue{background:var(--series2-soft);color:var(--series2);border-color:var(--series2-edge)}.chip.orange{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-edge)}.chip.sub{background:var(--series2-soft);color:var(--mid);border-color:var(--border)}.card{background:var(--card);border:1px solid var(--border);box-shadow:var(--card-shadow);border-radius:10px;padding:14px 18px;overflow:hidden}.card-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.card-title{color:var(--text);font-size:14px;font-weight:600}.card-sub{color:var(--mid);margin-top:2px;font-size:11.5px}.legend{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;display:flex}.leg{color:var(--mid);align-items:center;gap:5px;font-size:11.5px;display:flex}.leg-line{border-radius:1px;width:20px;height:2px}.leg-dash{background:repeating-linear-gradient(90deg,currentColor 0 6px,#0000 6px 10px);border-radius:1px;flex-shrink:0;width:30px;height:3px}.leg-box{border:1px solid;border-radius:2px;width:10px;height:10px}.g2a{grid-template-columns:3fr 1.4fr;gap:14px;margin-bottom:14px;display:grid}.g2b{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;display:grid}.g3{grid-template-columns:1.2fr 1fr 1fr;gap:14px;margin-bottom:14px;display:grid}.g2c{grid-template-columns:2fr 1.3fr;gap:14px;display:grid}.chart-box{width:100%;position:relative}.m-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;padding:7px 0;display:flex}.m-row:last-child{border-bottom:none}.m-name{color:var(--mid);flex:1;font-size:12.5px}.m-right{align-items:center;gap:10px;display:flex}.m-bar{background:var(--border2);border-radius:2px;width:70px;height:4px;overflow:hidden}.m-fill{border-radius:2px;height:100%}.m-val{text-align:right;width:40px;font-size:13.5px;font-weight:700}.itab-group{background:var(--card2);border:1px solid var(--border);border-radius:7px;flex-shrink:0;gap:2px;padding:2px;display:flex}.itab{color:var(--mid);cursor:pointer;font-size:12px;font-weight:600;font-family:var(--font);background:0 0;border:none;border-radius:5px;padding:4px 13px;transition:background .15s,color .15s}.itab.active{background:var(--accent-strong);color:var(--on-accent)}.err-legend{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:8px;display:flex}.err-leg{color:var(--mid);align-items:center;gap:5px;font-size:11.5px;display:flex}.err-leg-sq{border-radius:2px;flex-shrink:0;width:9px;height:9px}.err-stats{background:var(--card2);border:1px solid var(--border);border-radius:6px;margin-top:9px;padding:8px 10px}.err-stat-title{text-transform:uppercase;letter-spacing:.06em;color:var(--sub);margin-bottom:5px;font-size:11px;font-weight:600}.err-slots{flex-wrap:wrap;gap:5px;display:flex}.err-slot{background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn-edge);border-radius:12px;align-items:center;gap:3px;padding:2px 8px;font-size:11.5px;font-weight:600;display:inline-flex}.shap-card{flex-direction:column;display:flex}.shap-list{flex-direction:column;flex:1;justify-content:space-between;gap:11px;display:flex}.shap-row{flex-direction:column;gap:5px;display:flex}.shap-meta{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.shap-name{color:var(--mid);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.shap-val{color:var(--text);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:12px;font-weight:600}.shap-track{background:var(--track);border-radius:999px;height:7px;overflow:hidden}.shap-fill{border-radius:999px;min-width:3px;height:100%}.alert{background:var(--card2);border-left:3px solid;border-radius:8px;align-items:flex-start;gap:10px;margin-bottom:9px;padding:10px 12px;display:flex}.alert:last-child{margin-bottom:0}.alert.warn{border-color:var(--warn)}.alert.critical{border-color:var(--crit)}.alert.info{border-color:var(--series2)}.alert.ok{border-color:var(--accent)}.alert-ico{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:13px;display:flex}.alert.warn .alert-ico{background:var(--warn-soft)}.alert.critical .alert-ico{background:var(--crit-soft)}.alert.info .alert-ico{background:var(--series2-soft)}.alert.ok .alert-ico{background:var(--accent-soft)}.alert-title{color:var(--text);margin-bottom:2px;font-size:12.5px;font-weight:600}.alert-desc{color:var(--sub);font-size:11.5px;line-height:1.5}.alert-time{color:var(--sub);white-space:nowrap;flex-shrink:0;padding-top:2px;font-size:11px}.tbl-controls{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.tbl-title{color:var(--text);flex:1;font-size:15px;font-weight:700}.tbl-title span{color:var(--mid);margin-left:8px;font-size:13px;font-weight:400}.filter-select{background:var(--card);border:1px solid var(--border);font-size:12.5px;font-family:var(--font);color:var(--mid);cursor:default;border-radius:6px;outline:none;padding:6px 12px}.dl-btn{background:var(--accent-strong);font-size:13px;font-weight:700;font-family:var(--font);color:var(--on-accent);cursor:default;box-shadow:var(--glow-accent);border:none;border-radius:20px;padding:7px 20px}.tbl-wrap{border:1px solid var(--border);background:var(--table-bg);width:100%;box-shadow:var(--card-shadow);border-radius:10px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}thead tr{background:var(--card2);border-bottom:2px solid var(--border2)}th{text-align:left;letter-spacing:.05em;text-transform:uppercase;color:var(--mid);white-space:nowrap;padding:12px 16px;font-size:12px;font-weight:700}tbody tr{border-bottom:1px solid var(--border);transition:background .15s}tbody tr:hover{background:var(--hover-wash)}tbody tr:last-child{border-bottom:none}td{color:var(--text);white-space:nowrap;padding:10px 16px;font-size:13px}.td-mono{color:var(--mid);font-family:SF Mono,Consolas,monospace;font-size:12.5px}.td-load{color:var(--accent);font-weight:600}.td-pred{color:var(--series2);font-weight:600}.err-good{color:var(--accent);font-weight:600}.err-ok{color:var(--series2);font-weight:600}.err-warn{color:var(--warn);font-weight:600}.err-bad{color:var(--crit);font-weight:600}.volt-badge{background:var(--series2-soft);color:var(--series2);border-radius:4px;align-items:center;padding:2px 8px;font-size:11.5px;font-weight:700;display:inline-flex}.volt-lv,.volt-mv,.volt-hv{background:var(--series2-soft);color:var(--series2)}.status-badge{border:1px solid;border-radius:12px;align-items:center;gap:4px;padding:2px 8px;font-size:11.5px;font-weight:600;display:inline-flex}.status-ok{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-edge)}.status-peak{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-edge)}.status-hol,.status-wknd{background:var(--series2-soft);color:var(--series2);border-color:var(--series2-edge)}.sum-tbl{border-collapse:collapse;width:100%}.sum-tbl th{text-transform:uppercase;letter-spacing:.06em;color:var(--sub);text-align:left;border-bottom:2px solid var(--border);white-space:nowrap;padding:4px 8px 7px;font-size:11px;font-weight:700}.sum-tbl td{border-bottom:1px solid var(--border);vertical-align:middle;padding:7px 8px;font-size:12.5px}.sum-tbl tr:last-child td{border-bottom:none}.sum-tbl .today-row td{background:var(--row-accent-wash)}.sum-tbl .high-row td{background:var(--row-warn-wash)}.sum-date{color:var(--text);white-space:nowrap}.sum-peak{color:var(--accent);font-weight:700}.sum-energy{color:var(--mid)}.today-tag{background:var(--accent-faint);color:var(--accent);vertical-align:middle;letter-spacing:.04em;border-radius:3px;margin-left:5px;padding:1px 5px;font-size:10px;font-weight:700;display:inline-flex}.risk{white-space:nowrap;border:1px solid;border-radius:10px;align-items:center;gap:3px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.risk-ok{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-edge)}.risk-wknd{background:var(--series2-soft);color:var(--series2);border-color:var(--series2-edge)}.risk-high{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-edge)}.footer{text-align:center;color:var(--sub);border-top:1px solid var(--border);flex-shrink:0;padding:10px;font-size:11px}.footer-link{color:var(--text);text-decoration:none;transition:color .15s}.footer-link:hover{color:var(--accent);text-decoration:underline}#root{width:100%;min-height:100vh;display:flex}
