@font-face{font-family:Barlow;font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/a35caa4687f434d6.ttf") format("truetype")}@font-face{font-family:Barlow;font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/91c841fdfa8e7b94.ttf") format("truetype")}@font-face{font-family:Barlow;font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/c15439e7a03af571.ttf") format("truetype")}@font-face{font-family:Barlow;font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/74103fd6d41bc32c.ttf") format("truetype")}@font-face{font-family:Barlow Condensed;font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/cc9fb2539cf27df4.ttf") format("truetype")}@font-face{font-family:Barlow Condensed;font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/0d85af813fc3ed87.ttf") format("truetype")}@font-face{font-family:Barlow Condensed;font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/7dde307fa887fc65.ttf") format("truetype")}:root{font-family:Barlow,PingFang SC,Microsoft YaHei,sans-serif;color:#dbe8f2;background:#06111e;font-synthesis:none;--cyan:#58dbe8;--gold:#ffc66c;--green:#39dbb3;--purple:#b9a0f5;--blue:#78adff;--muted:#6d899e;--line:#234054;--panel:#0b1b2b;--number:"Barlow Condensed","DIN Alternate",monospace}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}button,a,input,select{-webkit-tap-highlight-color:transparent}button{border:0;color:inherit;background:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #69e1ee;outline-offset:4px}button:disabled{opacity:.4;cursor:default}a{color:#7fd4e0}svg.lucide{width:19px;height:19px;flex-shrink:0}button svg{pointer-events:none}h1,h2,h3,p{margin:0}button{transition:color .18s,background .18s,border-color .18s}button:hover{color:#ecfbff}button:active{transform:translateY(1px)}[hidden]{display:none!important}#app{height:100dvh;min-height:790px;padding:0 24px;display:flex;flex-direction:column;background:radial-gradient(ellipse at 50% -35%,#16435980,transparent 62%),linear-gradient(160deg,#081827,#06111e 60%)}.app-header{height:86px;flex:0 0 86px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid #2c596044;position:relative}.app-header:after{content:"";position:absolute;bottom:-1px;left:30%;width:40%;height:1px;background:linear-gradient(90deg,transparent,#54d6df80,transparent)}.brand{display:flex;align-items:center;gap:12px;min-width:305px}.brand-symbol{width:46px;height:49px;clip-path:polygon(50% 0,95% 25%,95% 75%,50% 100%,5% 75%,5% 25%);background:linear-gradient(145deg,#237789,#102c3f);display:grid;place-items:center;color:#7bf3f2;border:1px solid #358993}.brand-symbol svg{width:29px;height:29px}.brand strong{display:block;font-family:PingFang SC,Microsoft YaHei,sans-serif;font-size:28px;font-weight:700;letter-spacing:3px;line-height:1.05}.brand strong span{font-size:12px;letter-spacing:2.7px;margin-left:9px;color:#65cfdd;font-weight:500}.brand small{display:block;font-size:9px;letter-spacing:3px;color:#6d8a9d;margin-top:7px}.project-title{text-align:center;margin-left:-15px}.project-title h1{font-size:25px;font-weight:550;letter-spacing:2px;color:#e4f0f6}.project-title>div{font-size:10px;color:#63899e;letter-spacing:2px;margin-top:9px;display:flex;justify-content:center;align-items:center;gap:12px}.project-title span{font-size:9px;color:#6b9bad}.project-title b{width:3px;height:3px;background:#477583;border-radius:50%}.header-status{min-width:305px;display:flex;flex-direction:column;align-items:flex-end;gap:9px}.simulation-badge{display:flex;align-items:center;gap:7px;font-size:11px;color:#8cc8c3;letter-spacing:1px}.simulation-badge i,.data-dot,.app-footer i{width:5px;height:5px;background:#40d7b0;border-radius:50%;box-shadow:0 0 8px #40d7b055}.header-time{display:flex;align-items:baseline;gap:11px;font-family:var(--number);font-size:21px;letter-spacing:1px}.header-time strong{font-weight:500;color:#afc0ce}.header-time span{font-weight:600;color:#e6f0f7}.header-time small{font-family:Barlow,sans-serif;font-size:10px;color:#6d899e;letter-spacing:0}.main-nav{display:flex;align-items:center;justify-content:space-between;flex:0 0 52px;margin-bottom:16px;border-bottom:1px solid #29445865}.nav-tabs{display:flex;align-items:stretch;height:100%;gap:24px}.nav-tab{display:flex;align-items:center;gap:9px;padding:0 13px;color:#7f98ab;font-size:13px;border-bottom:2px solid transparent;position:relative}.nav-tab svg{width:17px;height:17px}.nav-tab.active{color:#87e9f0;border-bottom-color:#51dbe3;background:linear-gradient(0deg,#2c9fb615,transparent)}.nav-tab.active:after{content:"";position:absolute;bottom:0;left:25%;right:25%;height:7px;filter:blur(6px);background:#4adcdf}.nav-meta{display:flex;align-items:center;gap:7px;font-size:11px;color:#638298}.nav-meta button{margin-left:24px;display:flex;align-items:center;gap:6px;color:#91acbf;font-size:11px}.nav-meta svg{width:14px;height:14px}.dashboard{flex:1;min-height:0;display:grid;grid-template-columns:286px minmax(0,1fr) 300px;gap:16px}.left-column,.right-column{display:flex;flex-direction:column;gap:14px;min-height:0}.panel{background:linear-gradient(150deg,#102439c2,#0a1928eb);border:1px solid #2441579c;border-radius:6px;position:relative;overflow:hidden}.panel:before{content:"";position:absolute;width:26px;height:2px;top:-1px;left:16px;background:#4eabb5aa}.panel-heading{display:flex;align-items:center;justify-content:space-between;height:47px;padding:0 18px;border-bottom:1px solid #29425366;gap:6px}.panel-heading h2{font-size:13px;font-weight:500;letter-spacing:1px}.panel-heading>span{font-size:8px;color:#5f8399;letter-spacing:1.15px}.panel-heading>svg{width:16px;height:16px;color:#4bbba1}.energy-panel{flex:1;min-height:380px;display:flex;flex-direction:column}.energy-card{padding:16px 18px 11px;border-bottom:1px solid #24415670;display:block;text-align:left;position:relative;flex:1;min-height:0}.energy-card:last-child{border-bottom:0}.energy-card:hover{background:#16425a35}.energy-card.selected{background:linear-gradient(90deg,#3ad8bd0a,transparent);box-shadow:inset 2px 0 #39dbb3}.energy-card-top{display:flex;align-items:center;gap:9px;font-size:12px;color:#a6b8c8}.equipment-icon{display:flex;align-items:center;justify-content:center;color:var(--accent);width:28px;height:28px;background:color-mix(in srgb,var(--accent) 9%,transparent);border:1px solid color-mix(in srgb,var(--accent) 15%,transparent);border-radius:6px}.equipment-icon svg{width:17px;height:17px}.gold{--accent:var(--gold)}.green{--accent:var(--green)}.purple{--accent:var(--purple)}.blue{--accent:var(--blue)}.cyan{--accent:var(--cyan)}.card-arrow{font-style:normal;color:#466779;margin-left:auto;font-size:15px}.power-value{display:flex;align-items:baseline;gap:8px;padding-left:1px;margin-top:5px}.power-value strong{font-family:var(--number);font-size:39px;line-height:1;font-weight:500;letter-spacing:1.1px;color:var(--accent)}.power-value>span{font-size:11px;color:#849caf}.card-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:5px;font-size:10px;color:#5e7f97;white-space:nowrap}.mini-spark{width:110px;height:23px;margin-bottom:-3px;opacity:.72}.mini-spark svg{width:100%;height:100%}.renewable-panel{flex:0 0 185px}.renewable-value{display:flex;align-items:baseline;gap:4px;padding:12px 19px 10px}.renewable-value strong{font-family:var(--number);font-size:36px;font-weight:500;color:#53dfc0;line-height:1}.renewable-value>span{font-size:13px;color:#53dfc0}.renewable-value small{margin-left:auto;color:#5e8297;font-size:10px}.supply-bar{display:flex;height:5px;margin:0 19px;background:#213649;border-radius:2px;overflow:hidden;gap:2px}.supply-bar i{height:100%;transition:width .3s}.supply-bar i:nth-child(1){background:var(--gold)}.supply-bar i:nth-child(2){background:var(--green)}.supply-bar i:nth-child(3){background:var(--purple)}.supply-legend{display:flex;align-items:center;gap:13px;color:#7f99ac;font-size:10px}.renewable-panel .supply-legend{padding:12px 18px}.supply-legend span,.chart-legend span{display:flex;align-items:center;gap:5px;white-space:nowrap}.supply-legend b,.chart-legend b{display:inline-block;width:5px;height:5px;border-radius:1px}.gold-dot{background:var(--gold)}.green-dot{background:var(--green)}.purple-dot{background:var(--purple)}.blue-dot{background:var(--blue)}.annual-small{display:flex;align-items:center;justify-content:space-between;padding:8px 19px;border-top:1px solid #29425366;font-size:10px;color:#6d8aa0}.annual-small strong{font-size:18px;font-family:var(--number);font-weight:500;color:#b0cec9}.annual-small strong span{font-size:10px;margin-left:3px}.center-column{position:relative;min-width:0;min-height:0;border:1px solid #2647588a;border-radius:7px;overflow:hidden;background:#0a1926}.scene-shell{width:100%;height:100%;position:relative;overflow:hidden}.scene-container{position:absolute;inset:0 0 37px;overflow:hidden}.scene-container>canvas{display:block;width:100%;height:100%;outline:none}.scene-container:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 85px 12px #06142175;background:linear-gradient(180deg,#08182799 0,transparent 17%,transparent 88%,#08182788 100%)}.scene-heading{position:absolute;top:19px;left:22px;right:22px;display:flex;align-items:center;justify-content:space-between;z-index:4;pointer-events:none}.view-eyebrow{font-size:9px;letter-spacing:2.5px;color:#5f9cb0;display:block}.scene-heading h2{margin-top:6px;font-size:15px;font-weight:500;letter-spacing:1px}.scene-mode{display:flex;align-items:center;gap:7px;color:#7496a7;font-size:10px}.scene-mode b{height:5px;width:5px;border-radius:50%;background:#52899a}.scene-toolbar{display:flex;flex-direction:column;gap:8px;position:absolute;right:18px;top:87px;z-index:5}.scene-toolbar button{width:34px;height:34px;border-radius:5px;background:#09202bd9;border:1px solid #355366a1;color:#829dab;display:grid;place-items:center}.scene-toolbar button svg{height:16px;width:16px}.scene-toolbar button:hover,.scene-toolbar button.active{color:#7be8e6;background:#174351b8;border-color:#3f9396}.north-indicator{position:absolute;bottom:95px;left:24px;display:flex;align-items:center;flex-direction:column;color:#7593a3;pointer-events:none}.north-indicator>span{font-size:10px;letter-spacing:1px}.north-indicator>div{font-size:33px;line-height:1.2;transform:rotate(-23deg);font-weight:300;color:#91b7c4}.north-indicator small{font-size:8px;color:#526f80;margin-top:2px}.scene-bottom{position:absolute;bottom:52px;left:23px;right:22px;z-index:2;display:flex;justify-content:space-between;align-items:center;font-size:9px;color:#79929f;pointer-events:none}.scene-bottom>span:first-child{display:flex;align-items:center;gap:6px}.scene-bottom svg{width:13px;height:13px}.scene-status-strip{height:37px;position:absolute;bottom:0;left:0;right:0;background:#0a1c2a;border-top:1px solid #2647588a;display:flex;align-items:center;padding:0 17px;gap:15px;color:#6f91a2;font-size:9px}.scene-status-strip>span:first-child{color:#a8ccd4;display:flex;align-items:center;gap:7px}.scene-status-strip>span:first-child b{width:5px;height:5px;background:#46dcb6;border-radius:50%}.scene-status-strip strong{font-weight:400;font-size:10px}#balance-state{margin-left:auto;margin-right:8px;color:#689f91}.legend-item{display:flex;align-items:center;gap:5px}.legend-item i{width:10px;height:2px}.flow-gold{background:var(--gold)}.flow-green{background:var(--green)}.flow-purple{background:var(--purple)}.flow-blue{background:var(--blue)}.scene-labels{position:absolute;inset:0;z-index:3;pointer-events:none}.scene-label{position:absolute;left:0;top:0;display:flex;align-items:center;gap:8px;padding:9px 12px;background:linear-gradient(120deg,#071a28ed,#0c2432e8);border:1px solid #47717d88;border-radius:5px;box-shadow:0 3px 16px #020a1477;white-space:nowrap;pointer-events:auto;text-align:left;will-change:transform;font-size:11px;min-width:160px}.scene-label:after{content:"";height:16px;width:1px;position:absolute;bottom:-17px;left:50%;background:linear-gradient(#9dc1c877,transparent)}.scene-label b{font-weight:500;font-size:11px;color:#dcecf1;display:block}.scene-label small{display:block;font-size:8px;color:#6d96a5;margin-top:3px}.scene-label .label-dot{width:5px;height:5px;background:var(--accent);box-shadow:0 0 7px color-mix(in srgb,var(--accent) 60%,transparent);border-radius:50%;flex-shrink:0}.label-power{font-size:15px;font-family:var(--number);color:var(--accent);margin-left:8px;letter-spacing:.4px}.label-pv{--accent:var(--gold)}.label-battery{--accent:var(--green)}.label-oil{--accent:var(--purple)}.label-processing,.label-mining{--accent:var(--blue)}.label-transfer{--accent:var(--cyan)}.scene-label.selected{border-color:color-mix(in srgb,var(--accent) 65%,transparent)}.scene-label:hover{background:#15394ae8}.scene-loader{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:12px;color:#6ac9d5;font-size:13px;background:#0c1a26;z-index:6}.scene-loader p{color:#839caa;font-size:12px;padding:20px;max-width:440px;line-height:1.8}.detail-panel{flex:1;min-height:320px}.selected-device{display:flex;align-items:center;gap:10px;padding:16px 18px 6px}.selected-device .equipment-icon{height:35px;width:35px;border-radius:7px}.selected-device h3{font-size:14px;font-weight:500}.selected-device>div>span{font-size:10px;color:#7493a6;display:block;margin-top:4px}.selected-device button{display:grid;place-items:center;margin-left:auto;width:26px;height:28px;color:#5e92a4}.selected-device button svg{width:16px;height:16px}.soc-display{display:flex;align-items:center;justify-content:center;position:relative;flex-direction:column;gap:9px;padding:11px 0 13px}.soc-ring{width:128px;height:128px;border-radius:50%;background:conic-gradient(from -90deg,#40e0b6 var(--soc),#203b4655 0);padding:7px;position:relative;filter:drop-shadow(0 0 11px #26c8a517)}.soc-ring:before{content:"";position:absolute;inset:-5px;border:1px dashed #2b636655;border-radius:50%}.soc-ring>div{border-radius:50%;height:100%;background:radial-gradient(#102c3b,#0b1c2b);display:flex;align-items:center;justify-content:center;flex-direction:column;border:3px solid #102932}.soc-ring span{font-size:10px;color:#7898a6;letter-spacing:2px}.soc-ring strong{font-size:34px;font-family:var(--number);line-height:1.2;font-weight:500;color:#d3fff1}.soc-ring small{font-size:12px;font-family:Barlow,sans-serif;font-weight:400;margin-left:2px}.soc-ring em{font-size:8px;font-style:normal;color:#5b818f;margin-top:3px}.state-badge{font-size:9px;color:var(--accent);padding:3px 14px;background:color-mix(in srgb,var(--accent) 8%,transparent);border:1px solid color-mix(in srgb,var(--accent) 15%,transparent);border-radius:3px;letter-spacing:1px}.detail-rows{padding:0 18px}.detail-rows>div{display:flex;align-items:center;justify-content:space-between;min-height:30px;border-bottom:1px solid #24425645;font-size:10px;color:#7894a8}.detail-rows>div:last-child{border-bottom:0}.detail-rows b{color:#bbd0dc;font-weight:500;font-family:Barlow,PingFang SC,sans-serif;font-size:11px}.detail-rows small{color:#6a8fa1;font-size:9px;margin-left:2px}.detail-note{font-size:9px;color:#526f85;line-height:1.6;padding:10px 18px 12px}.selected-power{padding:27px 20px 25px}.selected-power>span{display:block;font-size:11px;color:#7893a6}.selected-power strong{display:block;color:var(--accent);font-size:48px;font-family:var(--number);font-weight:500;margin-top:5px;line-height:1.2}.selected-power small{font-size:12px;font-family:Barlow,sans-serif;color:#7998ab;margin-left:9px}.load-panel{flex:0 0 180px}.load-item{display:flex;align-items:center;gap:10px;padding:12px 18px 4px;width:100%;text-align:left}.load-icon{width:28px;height:28px;display:grid;place-items:center;color:#799cbd;background:#1c39515e;border-radius:4px}.load-icon svg{width:17px;height:17px}.load-item b{font-size:11px;font-weight:400;display:block;color:#a9bdcc}.load-item small{display:block;font-size:8px;color:#567c94;margin-top:4px}.load-item>strong{margin-left:auto;font-family:var(--number);font-size:22px;color:#bdd3e8;font-weight:500;display:flex;align-items:baseline;gap:4px}.load-item>strong small{font:9px Barlow,sans-serif;color:#6488a1}.load-progress{height:2px;margin:5px 18px 0 56px;background:#29415666;overflow:hidden;border-radius:1px}.load-progress i{display:block;height:100%;background:#76a7e6;min-width:2px}.load-progress.mining i{background:#5eb1d0}.weather-panel{flex:0 0 124px}.panel-heading>.status-ok{display:flex;align-items:center;gap:4px;font-size:9px;color:#559e8f;letter-spacing:0}.status-ok svg{width:13px;height:13px}.weather-values{display:flex;gap:21px;align-items:center;padding:12px 18px 5px}.weather-values>div{display:flex;align-items:baseline;gap:5px}.weather-values svg{color:#668a9e;width:15px;height:15px;align-self:center}.weather-values strong{font-family:var(--number);font-size:24px;font-weight:500;line-height:1}.weather-values span{color:#668a9e;font-size:9px}.weather-panel p{padding:6px 18px;color:#527388;font-size:9px}.playback-panel{flex:0 0 224px;margin-top:16px;background:linear-gradient(100deg,#0c2031e6,#0a1a28ef);border:1px solid #244157b0;border-radius:6px;overflow:hidden}.playback-top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 17px 0;min-height:42px}.playback-title{display:flex;align-items:center;gap:8px;flex-shrink:0}.playback-title>svg{color:#6ea8b9;width:16px;height:16px}.playback-title h2{font-size:12px;letter-spacing:1px;font-weight:500}.playback-title>span{font-size:9px;color:#5c7d94;font-family:Barlow,sans-serif;border-left:1px solid #2b4659;padding-left:12px;margin-left:3px}.scenario-buttons{display:flex;gap:6px;margin-left:auto}.scenario-buttons button{font-size:10px;color:#6e96aa;border:1px solid #244a5b;border-radius:3px;padding:5px 10px;white-space:nowrap}.scenario-buttons button:hover{border-color:#3f7d8e;background:#16445444;color:#c1eaf0}.scenario-buttons button.active{border-color:#3e8d93;background:#224c553d;color:#74e2de}.play-controls{display:flex;align-items:center;gap:7px;margin-left:10px}.play-controls>button{width:27px;height:27px;display:grid;place-items:center;color:#7596ac;border:1px solid #28495d;border-radius:4px}.play-controls>button svg{width:13px;height:13px}#play{background:#239597;color:#d9ffff;border-color:#3dadad;width:32px}#play.playing{background:#216c78}.play-controls select{background:#0b2233;color:#8eb4c8;border:1px solid #29495b;height:27px;font-size:9px;border-radius:4px;padding:0 7px;outline-offset:2px}.play-controls input{height:27px;color:#9bbccd;border:1px solid #29495b;background:#0b2233;border-radius:4px;padding:0 7px;font-size:10px;width:121px;color-scheme:dark}.chart-container{height:128px;position:relative;padding:0 16px}.chart-container canvas{display:block;width:100%;height:100%;cursor:crosshair}.chart-legend{position:absolute;top:5px;right:33px;display:flex;gap:19px;color:#7e9aad;font-size:9px;pointer-events:none}.chart-legend b{width:12px;height:2px}.timeline-row{display:flex;align-items:center;gap:15px;padding:1px 22px;height:25px}.timeline-row>span:first-child{font-size:9px;letter-spacing:1px;color:#5c7f94;min-width:66px}#timeline-timestamp{font-size:10px;font-family:Barlow,sans-serif;letter-spacing:.5px;color:#86bccb;min-width:131px;text-align:right}#year-slider{--progress:.1%;appearance:none;-webkit-appearance:none;width:100%;height:4px;border-radius:3px;background:linear-gradient(to right,#52c2d4 var(--progress),#233d50 var(--progress));margin:0;cursor:pointer;flex:1}#year-slider::-webkit-slider-thumb{appearance:none;width:9px;height:13px;border-radius:2px;border:1px solid #8ff4f2;background:#4ebac9;box-shadow:0 0 9px #4ebac933}#year-slider::-moz-range-thumb{width:9px;height:13px;border-radius:2px;border:1px solid #8ff4f2;background:#4ebac9}.month-labels{margin:0 168px 0 100px;display:flex;justify-content:space-between;color:#4a7188;font-size:9px;font-family:Barlow,sans-serif}.app-footer{height:31px;flex:0 0 31px;display:flex;align-items:center;justify-content:space-between;color:#3d6078;font-size:8px;letter-spacing:.4px}.app-footer>span:first-child{display:flex;align-items:center;gap:7px}.app-footer i{background:#398b80;width:4px;height:4px;box-shadow:none}.app-footer>span:nth-child(2){color:#466d80;letter-spacing:.8px}.app-footer b{font-weight:400;margin:0 9px;color:#2e556c}.overlay-view{height:100%;width:100%;background:radial-gradient(ellipse at 40% 30%,#11314455,transparent),#0b1d2c;display:flex;flex-direction:column;overflow:auto}.view-title{display:flex;justify-content:space-between;align-items:center;padding:24px 28px 20px;border-bottom:1px solid #24445665;flex-shrink:0}.view-title h2{font-weight:500;font-size:18px;letter-spacing:1px;margin-top:7px}.outline-badge{font-size:10px;padding:5px 9px;border:1px solid #2c5a6e;border-radius:4px;color:#739cae}.layout-body{display:grid;grid-template-columns:minmax(0,1fr) 230px;flex:1;min-height:0;padding:20px;gap:22px}.site-map{position:relative;overflow:hidden;border-radius:5px;background:#d7dfd9;min-height:0}.site-map>img{width:100%;height:100%;object-fit:cover;object-position:50% 69%;opacity:.72;filter:sepia(.15) contrast(.7) saturate(.7)}.map-pin{position:absolute;display:flex;align-items:center;gap:5px;transform:translate(-50%,-50%);font-size:10px;font-weight:500;white-space:nowrap;filter:drop-shadow(0 2px 3px #0008)}.map-pin b{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:10px;color:#09252c;background:#6ce1d7;border:2px solid #fff9}.map-pin span{padding:5px 7px;border-radius:3px;background:#0b2639e6;color:#e6f7ff;border:1px solid #649dab77}.pv-pin{left:34%;top:40%}.pv-pin b{background:#ffc66c}.bess-pin{left:41%;top:49%}.hfo-pin{left:46%;top:54%}.hfo-pin b{background:#b9a0f5}.load-pin{left:57%;top:55%}.load-pin b{background:#78adff}.layout-notes{padding:10px 0;overflow:auto}.layout-notes h3{font-size:14px;font-weight:500;line-height:1.8}.layout-notes p{font-size:11px;color:#7a9aad;line-height:1.9;margin-top:10px}.layout-notes ol{list-style:none;padding:0;margin:20px 0}.layout-notes li{margin:0 0 16px;display:flex;gap:16px;font-size:11px}.layout-notes li b{font-size:11px;font-weight:500;color:#b5cedd;min-width:73px}.layout-notes li span{color:#6b91a7;font-size:10px;line-height:1.8}.layout-notes .muted-note{font-size:10px;color:#527c93}.text-action{display:flex;align-items:center;gap:5px;margin-top:15px;color:#73c9cf;padding:8px 0;font-size:11px}.text-action svg{width:14px;height:14px}#topology-diagram{flex:1;display:flex;align-items:center;padding:14px;min-height:0}#topology-diagram svg{width:100%;max-height:100%;font-family:Barlow,PingFang SC,sans-serif}.topo-node{cursor:pointer}.topo-node rect{fill:#112a3b;stroke:#34566c;stroke-width:1}.topo-node:hover rect{fill:#1b3d4f;stroke:#6fa4af}.topo-node text{font-size:15px;fill:#d5e8ed}.topo-node .node-value{font:29px var(--number);fill:#e0edf2}.topo-node .node-unit{font:12px Barlow,sans-serif;fill:#7095ab}.topo-node .node-sub,.node-sub{font-size:11px;fill:#6e92a8}.topo-node .gold-text{fill:var(--gold)}.topo-node .green-text{fill:var(--green)}.topo-node .purple-text{fill:var(--purple)}.topo-node .blue-text{fill:var(--blue)}.topo-line{fill:none;stroke-width:2.5;stroke-dasharray:8 6}.topo-line.gold{stroke:var(--gold)}.topo-line.green{stroke:var(--green)}.topo-line.purple{stroke:var(--purple)}.topo-line.cyan{stroke:var(--cyan)}.topo-line.blue{stroke:var(--blue)}.topo-line.active{animation:flow-dash 1.4s linear infinite}.topo-line.reverse{animation-direction:reverse}.topo-line.inactive{opacity:.17;stroke-dasharray:none}.topo-bus{fill:none;stroke:#5a96af;stroke-width:4}.bus-label{fill:#6d97ae;font-size:11px}.transformer-node{cursor:pointer}.transformer-node circle{fill:#112c3d;stroke:#63bfd3;stroke-width:2}.transformer-node text{fill:#8ebace;font-size:13px}.topology-note{font-size:10px;color:#63879b;text-align:center;padding:10px 30px 20px;line-height:1.8}.annual-metrics{display:grid;grid-template-columns:repeat(3,1fr);padding:27px 30px 22px;gap:25px}.annual-metrics>div{border-right:1px solid #294a5e66}.annual-metrics>div:last-child{border:0}.annual-metrics span{display:block;color:#7899af;font-size:12px}.annual-metrics strong{font-family:var(--number);font-size:40px;font-weight:500;line-height:1.5}.annual-metrics small{font-size:11px;margin-left:8px;color:#7493aa;font-family:Barlow,sans-serif}.green-text{color:var(--green)}.annual-chart-heading{display:flex;justify-content:space-between;align-items:center;margin:8px 30px 5px}.annual-chart-heading h3{font-weight:400;font-size:12px;color:#adcad8}#monthly-chart{width:100%;height:240px;flex:1;min-height:160px;display:block}.annual-foot{display:grid;grid-template-columns:repeat(4,1fr);padding:18px 30px;gap:18px}.annual-foot span{display:block;font-size:10px;color:#688fa5}.annual-foot b{display:block;font:20px var(--number);margin-top:7px;color:#b7d2e1}.muted-note{font-size:10px;color:#51768d;line-height:1.8}#annual-view>.muted-note{padding:0 30px 24px}dialog{padding:0;border:1px solid #3c6d7e;border-radius:10px;width:650px;max-width:92vw;background:#0c2031;color:#ccdee9;box-shadow:0 25px 100px #0008;max-height:90vh}dialog::backdrop{background:#010710b5;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;padding:25px 30px;border-bottom:1px solid #2b4e61}.dialog-head h2{font-size:20px;font-weight:500;margin-top:8px}.dialog-head>button{display:grid;place-items:center;padding:8px;color:#8cafbd}.dialog-body{padding:24px 30px}.info-status{display:flex;gap:9px;align-items:center;font-size:12px;color:#72d6ba;background:#1c554835;border:1px solid #2c6d5a77;padding:13px;border-radius:5px}.info-status svg{width:18px;height:18px}.dialog-body dl{display:grid;grid-template-columns:85px 1fr;font-size:12px;line-height:1.85;margin:22px 0;gap:14px}.dialog-body dt{color:#668ea6}.dialog-body dd{margin:0;color:#afc7d5}.dialog-body h3{font-size:13px;font-weight:500;margin:20px 0 10px}.dialog-body p{font-size:11px;color:#789bad;line-height:1.9}.source-links{display:flex;gap:20px;flex-wrap:wrap;margin-top:15px}.source-links a{font-size:10px;text-decoration:none}.source-links a:hover{text-decoration:underline}#toast{position:fixed;left:50%;bottom:45px;transform:translate(-50%,10px);opacity:0;pointer-events:none;z-index:99;background:#16374cef;border:1px solid #467f8b;border-radius:5px;padding:11px 20px;color:#bfe9ed;font-size:12px;transition:.2s}#toast.show{opacity:1;transform:translate(-50%)}.boot-screen{display:flex;align-items:center;justify-content:center;flex-direction:column;height:100%;gap:20px;background:radial-gradient(#12354d,#06111e 60%)}.boot-mark{width:80px;height:80px;border:1px solid #4497a7;display:grid;place-items:center;font-family:var(--number);font-size:48px;color:#5bdee4;clip-path:polygon(20% 0,100% 0,100% 80%,80% 100%,0 100%,0 20%);background:#153348}.boot-screen h1{font-size:23px;letter-spacing:6px;font-weight:400}.boot-screen p{font-size:12px;color:#638fa7}.boot-line{height:2px;width:200px;background:linear-gradient(90deg,transparent,#51c7d6,transparent);animation:boot-pulse 1.5s ease-in-out infinite}@keyframes flow-dash{to{stroke-dashoffset:-28}}@keyframes boot-pulse{50%{opacity:.25;transform:scaleX(.5)}}@media(min-width:1750px)and (min-height:1000px){.dashboard{grid-template-columns:300px minmax(0,1fr) 316px;gap:18px}.main-nav{margin-bottom:18px}.energy-card{padding:18px 20px 14px}.power-value strong{font-size:43px}.panel-heading{height:49px}.detail-panel{min-height:370px}.soc-ring{width:145px;height:145px}.soc-display{padding:17px 0 15px}.soc-ring strong{font-size:39px}.detail-rows>div{min-height:33px}.load-panel{flex-basis:192px}.load-item{padding-top:15px}.weather-panel{flex-basis:132px}.playback-panel{flex-basis:235px;margin-top:18px}.chart-container{height:139px}.scene-label{padding:10px 13px}.scene-label b{font-size:12px}.scene-label small{font-size:9px}.label-power{font-size:17px}.renewable-panel{flex-basis:196px}.renewable-value{padding-top:17px}.renewable-value strong{font-size:40px}.layout-body{grid-template-columns:minmax(0,1fr) 250px}.annual-metrics strong{font-size:48px}}@media(max-width:1450px){#app{padding:0 14px}.dashboard{grid-template-columns:235px minmax(0,1fr) 245px;gap:12px}.brand,.header-status{min-width:245px}.project-title h1{font-size:20px;letter-spacing:3px}.project-title>div{font-size:8px;letter-spacing:1px}.brand strong{font-size:23px}.brand strong span{font-size:10px}.panel-heading{padding:0 13px}.panel-heading>span{font-size:7px}.energy-card{padding:13px 14px 8px}.power-value strong{font-size:35px}.mini-spark{width:82px}.soc-ring{width:107px;height:107px}.soc-display{padding:10px 0}.soc-ring strong{font-size:30px}.detail-rows{padding:0 14px}.detail-rows>div{min-height:27px}.detail-note{padding:8px 14px}.selected-device{padding:14px 13px 5px}.selected-device>div>span{font-size:9px}.selected-device h3{font-size:12px}.scenario-buttons{gap:5px}.scenario-buttons button{font-size:9px;padding:5px 7px}.playback-title>span{display:none}.play-controls{gap:5px;margin-left:0}.playback-top{gap:10px}.nav-tabs{gap:12px}.nav-meta{font-size:9px}.scene-label{padding:7px 9px;min-width:135px;gap:5px}.scene-label b{font-size:10px}.scene-label small{font-size:7px}.label-power{font-size:13px;margin-left:4px}.scene-status-strip{gap:8px;padding:0 12px}.scene-status-strip .legend-item{font-size:8px}.scene-status-strip #balance-state{display:none}.supply-legend{gap:8px;font-size:8px}.annual-small{padding-top:6px}.load-item{padding-left:13px;padding-right:13px}.load-item>strong{font-size:20px}.weather-values{gap:10px;padding-left:13px}.weather-values strong{font-size:22px}.scene-heading{left:17px;right:17px}.scene-mode{font-size:8px}.layout-body{grid-template-columns:1fr 180px;padding:14px;gap:14px}.layout-notes h3{font-size:12px}.layout-notes p{font-size:10px}.layout-notes li{gap:8px}.layout-notes li b{min-width:65px;font-size:10px}.view-title{padding:19px 20px}.view-title h2{font-size:16px}.annual-metrics{padding:24px 20px;gap:15px}.annual-metrics strong{font-size:31px}.annual-metrics span{font-size:10px}.annual-foot{padding:15px 20px;gap:12px}.annual-foot b{font-size:17px}.annual-foot span{font-size:8px}}@media(max-height:920px){.app-header{height:74px;flex-basis:74px}.main-nav{flex-basis:44px;margin-bottom:12px}.playback-panel{flex-basis:202px;margin-top:12px}.chart-container{height:108px}.app-footer{height:25px;flex-basis:25px}.panel-heading{height:40px}.energy-panel{min-height:320px}.energy-card{padding-top:10px}.power-value strong{font-size:32px}.card-bottom{margin-top:2px}.renewable-panel{flex-basis:160px}.renewable-value{padding-top:9px;padding-bottom:8px}.renewable-value strong{font-size:30px}.renewable-panel .supply-legend{padding-top:9px;padding-bottom:9px}.annual-small{padding-top:6px;padding-bottom:6px}.right-column,.left-column{gap:10px}.detail-panel{min-height:290px}.soc-ring{width:100px;height:100px;padding:5px}.soc-ring strong{font-size:28px}.soc-display{padding:8px 0;gap:7px}.selected-device{padding-top:10px}.detail-rows>div{min-height:25px}.detail-note{font-size:8px;padding-top:6px;padding-bottom:6px}.load-panel{flex-basis:157px}.load-item{padding-top:9px}.weather-panel{flex-basis:110px}.weather-values{padding-top:9px}.scene-label{padding:7px 9px}.scene-label small{font-size:8px}.label-power{font-size:14px}.selected-power{padding-top:19px;padding-bottom:18px}.selected-power strong{font-size:38px}}@media(max-width:1150px){body{overflow:auto}#app{min-width:1024px;min-height:840px}.dashboard{grid-template-columns:210px minmax(0,1fr) 215px;gap:10px}.project-title h1{font-size:17px;letter-spacing:1px}.brand,.header-status{min-width:220px}.brand strong{font-size:22px}.brand strong span{font-size:9px}.brand small{font-size:7px}.scene-label .label-power,.scene-mode{display:none}.scene-label{min-width:115px}.scenario-buttons button:nth-last-child(-n+2){display:none}.nav-meta{font-size:8px}.nav-tabs{gap:4px}.nav-tab{padding:0 10px;font-size:12px}.nav-meta button{margin-left:12px}.play-controls input{width:110px}.soc-ring{height:96px;width:96px}.panel-heading h2{font-size:12px}.panel-heading>span{letter-spacing:.3px}.selected-device>div>span{font-size:8px}.detail-rows>div{font-size:9px}.load-item>strong{font-size:18px}.weather-values{gap:7px}.weather-values strong{font-size:19px}.weather-values svg{width:12px}.supply-legend{gap:6px}.scene-status-strip .legend-item{display:none}.annual-small{font-size:9px}.layout-body{grid-template-columns:1fr}.layout-notes{display:none}.app-footer{font-size:7px}.app-footer>span:nth-child(2){letter-spacing:0}}body{overflow:auto}#app{min-height:960px}.right-column{overflow:hidden}.detail-panel{min-height:0;flex:1}.right-column .panel-heading{height:40px}.right-column .selected-device{padding:12px 16px 4px}.right-column .soc-ring{width:108px;height:108px;padding:6px}.right-column .soc-ring strong{font-size:31px}.right-column .soc-display{padding:8px 0 7px;gap:7px}.right-column .detail-rows>div{min-height:23px}.right-column .detail-note{font-size:8px;line-height:1.5;padding:7px 16px}.right-column .load-panel{flex:0 0 156px}.right-column .load-item{padding-top:9px;padding-bottom:3px}.right-column .weather-panel{flex:0 0 106px}.right-column .weather-values{padding-top:10px;padding-bottom:4px}.right-column .weather-values strong{font-size:23px}.right-column .weather-panel p{padding-top:5px}.right-column .selected-power{padding:24px 18px}.scene-label.label-transfer{min-width:150px}.label-transfer small{max-width:156px;white-space:normal;line-height:1.35}@media(max-height:920px){.right-column .soc-ring{width:86px;height:86px}.right-column .soc-ring strong{font-size:26px}.right-column .soc-display{padding:5px 0;gap:5px}.right-column .detail-rows>div{min-height:20px}.right-column .selected-device{padding-top:9px}.right-column .load-panel{flex-basis:143px}.right-column .weather-panel{flex-basis:98px}.right-column .weather-values{padding-top:7px}.right-column .selected-power{padding-top:17px;padding-bottom:17px}}.right-column{gap:12px}.right-column .load-panel{flex-basis:148px}.right-column .weather-panel{flex-basis:100px}:root{--flow-gold:#ffb51b;--flow-green:#00ffc3;--flow-purple:#d77aff;--flow-blue:#299dff;--flow-cyan:#30e6ff}.legend-item{font-size:10px;color:#9cb7c6}.legend-item i{width:16px;height:3px;border-radius:2px;box-shadow:0 0 5px currentColor}.flow-gold{background:var(--flow-gold);color:var(--flow-gold)}.flow-green{background:var(--flow-green);color:var(--flow-green)}.flow-purple{background:var(--flow-purple);color:var(--flow-purple)}.flow-blue{background:var(--flow-blue);color:var(--flow-blue)}.topo-line{stroke-width:3}.topo-line.gold{stroke:var(--flow-gold);color:var(--flow-gold)}.topo-line.green{stroke:var(--flow-green);color:var(--flow-green)}.topo-line.purple{stroke:var(--flow-purple);color:var(--flow-purple)}.topo-line.cyan{stroke:var(--flow-cyan);color:var(--flow-cyan)}.topo-line.blue{stroke:var(--flow-blue);color:var(--flow-blue)}.topo-line.active{filter:drop-shadow(0 0 3px currentColor)}.topo-line.inactive{stroke:#527387;stroke-width:1.5;opacity:.3}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.topo-line.active,.boot-line{animation:none}.supply-bar i{transition:none}}.scene-label.label-curtailment{--accent:#79909c;min-width:190px;border:1px dashed #607d8d88;background:linear-gradient(120deg,#0a1c29ed,#102733e8);cursor:default;gap:9px}.curtailment-symbol{width:36px;height:36px;flex-shrink:0;color:var(--accent)}.label-curtailment b{color:#9bafb9}.label-curtailment.active{--accent:#ff9656;border-color:#ff9656b3;background:linear-gradient(120deg,#32241ded,#142b36f2);box-shadow:0 0 18px #ff965622,0 3px 16px #020a1477}.label-curtailment.active b{color:#ffe0bd}.label-curtailment.active small{color:#d7ac83}.scene-label.label-curtailment .label-power{display:block}

.brand { color: inherit; text-decoration: none; }
.brand:focus-visible { outline: 2px solid #46e0ef; outline-offset: 4px; }
