:root{--brand:#0F9F9B;--brand-hover:#0B8783;--brand-weak:#E8F7F6;--gray-1:#F7F8FA;--gray-2:#F2F3F5;--gray-3:#E5E6EB;--gray-4:#C9CDD4;--gray-5:#A9AEB8;--gray-6:#86909C;--gray-7:#6B7785;--gray-8:#4E5969;--gray-9:#272E3B;--gray-10:#1D2129;--success:#00B42A;--warning:#FF7D00;--danger:#F53F3F;--success-weak:#E8FFEA;--warning-weak:#FFF7E8;--danger-weak:#FFECE8;--energy-elec:var(--brand);--energy-pv:#F7BA1E;--energy-gas:#722ED1;--energy-water:#165DFF;--energy-carbon:#4E5969;--bg:var(--gray-1);--card:#FFFFFF;--line:var(--gray-3);--hover:var(--gray-1);--text:var(--gray-10);--text-2:var(--gray-8);--text-3:var(--gray-6);--r-sm:4px;--r:6px;--r-lg:8px;--shadow-pop:0 4px 10px rgba(0,0,0,.08);--side-w:252px;--side-w-min:60px;--top-h:56px;--teal:var(--brand);--teal-d:var(--brand-hover);--green:var(--success);--orange:var(--warning);--red:var(--danger);--blue:#165DFF;--shadow:none;--shadow-h:var(--shadow-pop)}[data-theme=dark]{--brand:#26B5AF;--brand-hover:#3CC5BF;--brand-weak:rgba(38,181,175,.16);--success:#27C346;--warning:#FF9626;--danger:#F76965;--success-weak:rgba(39,195,70,.15);--warning-weak:rgba(255,150,38,.15);--danger-weak:rgba(247,105,101,.15);--bg:#17171A;--card:#232324;--line:#333335;--hover:#2A2A2B;--text:#E5E6EB;--text-2:#A9AEB8;--text-3:#86909C;--shadow-pop:0 4px 10px rgba(0,0,0,.4);color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{font:14px/22px -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.num,.tb td,.tb th{font-variant-numeric:tabular-nums}a{color:inherit;text-decoration:none}button{font-family:inherit}.layout{display:flex;min-height:100vh}.sidebar{width:var(--side-w);background:var(--card);border-right:1px solid var(--line);position:fixed;inset:0 auto 0 0;z-index:50;display:flex;flex-direction:column;transition:width .2s;overflow:hidden}.sidebar.mini{width:var(--side-w-min)}.brand{display:flex;align-items:center;gap:10px;height:var(--top-h);padding:0 16px;border-bottom:1px solid var(--line);flex:none}.brand-logo{width:28px;height:28px;border-radius:var(--r-sm);flex:none;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:14px;font-weight:600}.brand b{font-size:16px;font-weight:600;color:var(--text);white-space:nowrap}.nav{flex:1;overflow-y:auto;padding:8px}.nav-group{padding:16px 12px 4px;font-size:12px;color:var(--text-3);white-space:nowrap}.nav-group:first-child{padding-top:4px}.sidebar.mini .brand b,.sidebar.mini .nav a span,.sidebar.mini .nav-group{display:none}.nav a{display:flex;align-items:center;gap:10px;height:36px;padding:0 12px;margin:2px 0;border-radius:var(--r-sm);color:var(--text-2);white-space:nowrap}.nav a span{overflow:hidden;text-overflow:ellipsis}.nav a .ic{flex:none}.nav a:hover{background:var(--hover);color:var(--text)}.nav a.on{background:var(--brand-weak);color:var(--brand);font-weight:500}.main{flex:1;margin-left:var(--side-w);transition:margin .2s;min-width:0}.sidebar.mini~.main{margin-left:var(--side-w-min)}.topbar{height:var(--top-h);background:var(--card);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 20px;position:sticky;top:0;z-index:40}.topbar .crumb{font-size:16px;font-weight:500;color:var(--text);white-space:nowrap}.spacer{flex:1}.icon-btn{width:32px;height:32px;border-radius:var(--r-sm);border:0;background:0 0;color:var(--text-2);cursor:pointer;display:grid;place-items:center;flex:none}.icon-btn:hover{background:var(--hover);color:var(--text)}.search{display:flex;align-items:center;gap:8px;height:32px;background:var(--gray-2);border:1px solid transparent;border-radius:var(--r-sm);padding:0 10px;color:var(--text-3);font-size:13px;min-width:200px;cursor:pointer}[data-theme=dark] .search{background:var(--hover)}.search:hover{border-color:var(--line)}.search kbd{margin-left:auto;font:12px/18px inherit;border:1px solid var(--line);border-radius:var(--r-sm);padding:0 4px;background:var(--card);color:var(--text-3)}.seg,.time-picker{display:inline-flex;align-items:center;background:var(--gray-2);border-radius:var(--r-sm);padding:2px;gap:2px;flex:none}[data-theme=dark] .seg,[data-theme=dark] .time-picker{background:var(--hover)}.seg button,.time-picker button{border:0;background:0 0;height:28px;padding:0 12px;border-radius:3px;color:var(--text-2);cursor:pointer;font-size:13px}.seg button:hover,.time-picker button:hover{color:var(--text)}.seg button.on,.time-picker button.on{background:var(--card);color:var(--brand);font-weight:500;box-shadow:0 1px 2px rgba(0,0,0,.06)}[data-theme=dark] .seg button.on,[data-theme=dark] .time-picker button.on{background:#3a3a3c}.bell{position:relative}.avatar{width:32px;height:32px;border-radius:50%;background:var(--gray-2);color:var(--text-2);display:grid;place-items:center;font-size:13px;flex:none}[data-theme=dark] .avatar{background:var(--hover)}.content{padding:20px 24px 32px}.card[onclick],.clickable,.kpi[onclick]{cursor:pointer}.page-title{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;margin-bottom:16px}.page-title h1{font-size:20px;line-height:28px;font-weight:600}.page-title .sub{font-size:12px;color:var(--text-3)}.page-desc{font-size:13px;color:var(--text-2);margin:-8px 0 16px}.grid{display:grid;gap:16px}.grid>*{min-width:0}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g5{grid-template-columns:repeat(5,1fr)}.g23{grid-template-columns:2fr 1fr}.g32{grid-template-columns:1fr 2fr}.mt{margin-top:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 20px}.card-h{display:flex;align-items:center;gap:8px;min-height:24px;margin-bottom:12px}.card-h b{font-size:16px;line-height:24px;font-weight:500}.card-h .hint,.card-h em{font-style:normal;font-size:12px;color:var(--text-3);font-weight:400}.card-h .more{margin-left:auto;font-size:13px;color:var(--text-3);cursor:pointer;white-space:nowrap}.card-h .more:hover{color:var(--brand)}.card-note{font-size:12px;color:var(--text-3);margin-top:10px}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.toolbar .lb{font-size:13px;color:var(--text-3)}.grid:has(> .kpi){gap:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.kpi{position:relative;border:0;border-radius:0;box-shadow:1px 0 0 var(--line),0 1px 0 var(--line);padding:16px 20px}.kpi[onclick]:hover{background:var(--hover)}.kpi .label{font-size:13px;color:var(--text-2);display:flex;align-items:center;gap:6px}.kpi .value{font-size:28px;line-height:36px;font-weight:600;margin:6px 0 2px;white-space:nowrap}.kpi .value small{font-size:13px;color:var(--text-3);font-weight:400;margin-left:4px}.kpi .delta{font-size:12px;color:var(--text-3)}.kpi.compact .value{font-size:22px;line-height:30px}.up{color:var(--danger)}.down{color:var(--success)}.kpi .badge-src,.src-badge{display:none}.tb{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}.tb th,.tb thead th{text-align:left;padding:9px 12px;white-space:nowrap;font-size:13px;font-weight:500;color:var(--text-2);background:var(--gray-1);border-bottom:1px solid var(--line)}[data-theme=dark] .tb th{background:var(--hover)}.tb td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}.tb tbody tr:hover td{background:var(--hover)}.tb td.num,.tb th.num{text-align:right}.tb tfoot td{font-weight:500;background:var(--gray-1);border-bottom:0}[data-theme=dark] .tb tfoot td{background:var(--hover)}.tb.compact td{padding:6px 12px}.tb .muted,.tb .na{color:var(--text-3)}.tb tr.hl td{background:var(--brand-weak)}.tb tr.off td{color:var(--text-3)}.tb .sub{display:block;font-size:12px;color:var(--text-3)}.tb-scroll{overflow-x:auto}.tb-wrap{overflow:auto}.tb-sticky thead th,.tb-wrap .tb thead th{position:sticky;top:0;z-index:2}.tb-empty{text-align:center!important;color:var(--text-3);padding:28px 12px!important}.pager{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:12px;font-size:13px;color:var(--text-3)}.tag{display:inline-block;font-size:12px;line-height:20px;border-radius:var(--r-sm);padding:0 8px;white-space:nowrap;background:var(--gray-2);color:var(--text-2)}[data-theme=dark] .tag{background:var(--hover)}.tag.g{background:var(--success-weak);color:var(--success)}.tag.o{background:var(--warning-weak);color:var(--warning)}.tag.r{background:var(--danger-weak);color:var(--danger)}.tag.t{background:var(--brand-weak);color:var(--brand)}.tag.b{background:var(--gray-2);color:var(--text-2)}[data-theme=dark] .tag.b{background:var(--hover)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:var(--r-sm);padding:0 14px;font-size:14px;cursor:pointer;white-space:nowrap}.btn:hover{border-color:var(--brand);color:var(--brand)}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-hover);border-color:var(--brand-hover);color:#fff}.btn.text{border-color:transparent;background:0 0;color:var(--brand);padding:0 4px}.btn.sm{height:28px;padding:0 10px;font-size:13px}.btn:disabled{opacity:.5;cursor:default}.input{height:32px;border:1px solid var(--line);border-radius:var(--r-sm);padding:0 10px;background:var(--card);color:var(--text);font-size:14px;outline:0}.input:focus{border-color:var(--brand)}.skeleton{border-radius:var(--r-sm);background:var(--gray-2)}[data-theme=dark] .skeleton{background:var(--hover)}.empty{padding:28px 16px;text-align:center;color:var(--text-3);font-size:14px}.empty .ic{width:28px;height:28px;stroke-width:1.5;color:var(--gray-5);display:block;margin:0 auto 8px}.empty .big{display:none}.empty small{display:block;font-size:12px;margin-top:4px}.empty .btn{margin-top:12px}.toast-wrap{position:fixed;top:68px;right:20px;z-index:200;display:flex;flex-direction:column;gap:8px}.toast{background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-pop);padding:10px 14px;min-width:220px;max-width:360px;font-size:14px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none;background:var(--gray-4)}.dot.on{background:var(--success)}.dot.off{background:var(--danger)}.dot.idle{background:var(--gray-4)}.ring{--p:0;width:104px;height:104px;border-radius:50%;margin:0 auto;display:grid;place-items:center;background:conic-gradient(var(--brand) calc(var(--p)*1%),var(--gray-2) 0)}.ring i{width:84px;height:84px;border-radius:50%;background:var(--card);display:grid;place-items:center;font-style:normal;font-weight:600;font-size:18px}.steps{display:none}.foot{display:none}.chart{width:100%;height:300px}.chart.sm{height:240px}.list-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}.list-row:last-child{border-bottom:0}.list-row .t{color:var(--text-3);font-size:13px;white-space:nowrap}.list-row .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;font-size:14px}.kv dt{color:var(--text-3)}.kv dd{text-align:right}.bar-line{height:8px;background:var(--gray-2);border-radius:4px;overflow:hidden}.bar-line i{display:block;height:100%;background:var(--brand);border-radius:4px}[data-theme=dark] .bar-line{background:var(--hover)}.drawer-mask{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:90;display:none}.drawer{position:fixed;top:0;right:-520px;width:480px;max-width:92vw;bottom:0;background:var(--card);z-index:95;box-shadow:var(--shadow-pop);transition:right .25s;padding:20px;overflow-y:auto}.drawer.open{right:0}.drawer-mask.open{display:block}.drawer h3{font-size:16px;font-weight:500;margin-bottom:14px}.cmdk-mask{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:150;display:none}.cmdk{position:fixed;top:12vh;left:50%;transform:translateX(-50%);width:520px;max-width:92vw;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);z-index:151;overflow:hidden;display:none}.cmdk-mask.open,.cmdk.open{display:block}.cmdk input{width:100%;border:0;outline:0;padding:14px 16px;font-size:15px;background:0 0;color:var(--text)}.cmdk .list{max-height:320px;overflow-y:auto;border-top:1px solid var(--line);padding:4px}.cmdk .list a{display:flex;gap:10px;padding:9px 12px;font-size:14px;border-radius:var(--r-sm)}.cmdk .list a:hover{background:var(--hover)}.cmdk .list a[hidden]{display:none}.v3-tip{background:var(--card)!important;border:1px solid var(--line)!important;color:var(--text)!important;box-shadow:var(--shadow-pop)!important;border-radius:var(--r)!important}.v3-tip span:not([style*=background]){color:inherit!important}html{scrollbar-gutter:stable}*{scrollbar-width:thin;scrollbar-color:transparent transparent}:hover{scrollbar-color:rgba(134,144,156,.4) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:0 0;border-radius:4px}:hover::-webkit-scrollbar-thumb{background:rgba(134,144,156,.35)}:hover::-webkit-scrollbar-thumb:hover{background:rgba(134,144,156,.55)}html::-webkit-scrollbar{width:9px}html::-webkit-scrollbar-thumb{background:0 0}html:hover::-webkit-scrollbar-thumb{background:rgba(134,144,156,.3)}#rangeBox{padding:18px}#rangeBox .range-mode{margin-top:14px}#rangeBox .range-fields{display:flex;gap:10px;margin:16px 0;align-items:flex-end}#rangeBox .range-fields[hidden]{display:none}#rangeBox label{flex:1;min-width:0;font-size:13px;color:var(--text-2)}#rangeBox .input{display:block;width:100%;margin-top:6px;font:inherit}#rangeBox .input:focus-visible,#rangeBox button:focus-visible{outline:2px solid var(--brand);outline-offset:2px}#rangeBox #rangeError{color:var(--danger);font-size:13px}.range-check{display:flex;align-items:center;gap:8px;margin:10px 0;white-space:nowrap;font-size:13px;color:var(--text-2)}.range-hours{margin:10px 0;gap:12px;grid-template-columns:1fr 1fr}.range-hours:not([hidden]){display:grid}.range-help,.v3-period-note{font-size:12px;line-height:1.6;color:var(--text-3);margin:0 0 10px}.v3-period-note[hidden]{display:none}.range-actions{display:flex;gap:8px;justify-content:flex-end}svg.ic{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none;vertical-align:-3px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (max-width:1360px){.g5{grid-template-columns:repeat(3,1fr)}}@media (max-width:1180px){.g4,.g5{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(2,1fr)}.g23,.g32{grid-template-columns:1fr}.search{min-width:0}.search .search-text,.search kbd{display:none}}@media (max-width:900px){.content{padding:16px}.kpi .value{font-size:24px;line-height:32px}.time-picker{display:none}.time-select{display:block!important}}.time-select{display:none;height:32px}@media (max-width:640px){.sidebar{transform:translateX(-100%);transition:transform .2s;box-shadow:none}.sidebar.mini{width:var(--side-w);transform:translateX(0);box-shadow:var(--shadow-pop)}.sidebar.mini .brand b,.sidebar.mini .nav-group{display:block}.sidebar.mini .nav a span{display:inline}.main,.sidebar.mini~.main{margin-left:0;width:100%}.topbar{padding:0 12px;gap:6px}.topbar .crumb{overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.topbar .spacer{display:none}.topbar .crumb{display:none}.topbar .bell{display:none}.topbar .time-select{margin-right:auto}#hgPreviewChip{min-width:0;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:0 1 auto}.search{display:none}.g4,.g5{grid-template-columns:repeat(2,1fr)}.g2,.g3{grid-template-columns:1fr}.content{padding:12px}.card{padding:14px}.page-title h1{font-size:18px}.kpi{padding:12px 14px}.kpi .value{font-size:20px;line-height:28px}.tb{font-size:13px}.card:has(> .tb),.card>.tb-scroll{overflow-x:auto}.tb td,.tb th{white-space:nowrap}.drawer{width:100vw;max-width:100vw}}