:root{color-scheme:dark;font-family:Microsoft YaHei,PingFang SC,Noto Sans CJK SC,Arial,sans-serif;background:#020711;color:#e9f8ff;font-synthesis:none}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}button{font:inherit}.screen-shell{position:relative;display:grid;width:100%;height:100%;place-items:center;overflow:hidden;background:radial-gradient(circle at 50% 42%,rgba(10,91,128,.2),transparent 40%),#020711}.dashboard{position:absolute;width:1920px;height:1080px;overflow:hidden;transform-origin:center;background:linear-gradient(rgba(21,65,91,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(21,65,91,.055) 1px,transparent 1px),radial-gradient(circle at 54% 40%,rgba(0,157,209,.09),transparent 36%),linear-gradient(180deg,#071524,#030a14);background-size:48px 48px,48px 48px,auto,auto}.grid-glow{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(90deg,rgba(38,191,235,.06),transparent 14%,transparent 86%,rgba(38,191,235,.06)),linear-gradient(180deg,rgba(64,194,235,.06),transparent 18%)}.topbar{position:relative;z-index:2;display:grid;height:84px;padding:0 32px;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid rgba(69,176,219,.25);background:linear-gradient(90deg,#081b2df5,#04111fdb,#081b2df5);box-shadow:0 12px 36px #0003}.topbar:after{position:absolute;right:30%;bottom:-1px;left:30%;height:2px;content:"";background:linear-gradient(90deg,transparent,#42d7ff,transparent)}.brand{display:flex;align-items:center;gap:15px}.brand-icon{display:grid;width:48px;height:48px;place-items:center;color:#63e5ff;border:1px solid rgba(93,224,255,.48);border-radius:12px;background:linear-gradient(145deg,#1980ab59,#061f34cc);box-shadow:inset 0 0 20px #44d5ff14,0 0 24px #23aedb1c}.brand-kicker{margin-bottom:4px;color:#4da2c2;font-size:12px;font-weight:700;letter-spacing:2.1px}h1{margin:0;color:#effbff;font-size:25px;font-weight:700;letter-spacing:1px}.site-badge{display:flex;align-items:center;gap:9px;padding:9px 14px;color:#bfefff;border:1px solid rgba(63,189,231,.28);border-radius:999px;background:#082d44ad;font-size:14px;font-weight:700}.site-badge i,footer i{width:7px;height:7px;border-radius:50%;background:#55e4b6;box-shadow:0 0 12px #55e4b6}.site-badge span{padding-left:9px;color:#6ea4bb;border-left:1px solid rgba(94,166,194,.3);font-size:12px;font-weight:500}.route-nav{position:relative;display:flex;height:54px;padding:0 10px;align-items:center;gap:2px;align-self:center;background:linear-gradient(90deg,transparent,rgba(67,199,238,.08),transparent),linear-gradient(180deg,#0a2d4338,#04111e0a)}.route-nav:before,.route-nav:after{position:absolute;right:0;left:0;height:1px;content:"";background:linear-gradient(90deg,transparent,rgba(72,204,242,.34),transparent)}.route-nav:before{top:0}.route-nav:after{bottom:0}.route-nav a{position:relative;display:flex;width:178px;height:54px;padding:0 18px;align-items:center;justify-content:center;gap:7px;overflow:hidden;color:#6e98ad;border-right:1px solid rgba(62,137,166,.16);font-size:14px;font-weight:700;letter-spacing:.3px;text-decoration:none;white-space:nowrap;transition:.2s ease}.route-nav a:first-child{border-left:1px solid rgba(62,137,166,.16)}.route-nav a:before{position:absolute;top:0;right:14px;left:14px;height:2px;content:"";opacity:0;background:linear-gradient(90deg,transparent,#42d7ff,transparent);transition:.2s ease}.route-nav a:after{position:absolute;right:22px;bottom:0;left:22px;height:3px;content:"";opacity:0;background:linear-gradient(90deg,transparent,#55e4ff,transparent);box-shadow:0 0 16px #4ad9ff8c;transition:.2s ease}.route-nav a:hover{color:#bdeeff;background:#2a92b91a}.route-nav a svg{position:relative;z-index:1}.route-nav a.router-link-active{color:#e8fbff;background:radial-gradient(circle at 50% 100%,rgba(72,217,255,.2),transparent 62%),linear-gradient(180deg,#2ba1c72e,#1451701a)}.route-nav a.router-link-active:before,.route-nav a.router-link-active:after{opacity:1}.header-actions{display:flex;justify-content:flex-end;align-items:center;gap:22px;color:#8fb0c2;font-size:13px}.weather{display:flex;align-items:center;gap:7px}.header-line{display:flex;padding-left:20px;align-items:center;gap:7px;color:#c4e7f3;border-left:1px solid rgba(93,165,193,.3);font-size:13px;font-weight:700;white-space:nowrap}main{position:relative;z-index:1;padding:16px 26px 0}.scenario-bar{display:grid;height:58px;padding:0 18px;grid-template-columns:160px 150px 1fr 340px;align-items:center;border:1px solid rgba(67,155,193,.22);border-radius:10px;background:linear-gradient(90deg,rgba(38,141,177,.1),transparent 36%),#071828b8}.power-scenario-bar{grid-template-columns:330px 1fr;column-gap:18px}.scenario-title{display:flex;align-items:baseline;gap:10px}.scenario-title span{color:#7294a7;font-size:12px}.scenario-title strong{color:#dcf8ff;font-family:DIN Alternate,Consolas,monospace;font-size:24px;letter-spacing:1px}.timeline-row{display:flex;height:50px;margin-top:8px;align-items:center;justify-content:flex-end;border:1px solid rgba(62,143,178,.16);border-radius:9px;background:#06162485}.power-scenario-bar .timeline-row{height:48px;margin-top:0;min-width:0;border:0;border-left:1px solid rgba(79,150,183,.16);border-radius:0;background:transparent}.timeline-head{display:flex;height:100%;padding-left:20px;align-items:center;gap:10px;flex:0 0 auto}.timeline-head span{flex:0 0 auto;color:#78a0b4;font-size:12px;font-weight:700;white-space:nowrap}.timeline-head strong{color:#e6fbff;font-family:DIN Alternate,Consolas,monospace;font-size:24px;letter-spacing:1px}.timeline-head em{flex:0 0 auto;color:#5f8296;font-size:12px;font-style:normal;white-space:nowrap}.timeline-steps{position:relative;display:flex;height:100%;padding:6px 4px 6px 14px;flex:0 0 auto;justify-content:flex-end;align-items:center;gap:6px}.timeline-steps button{position:relative;z-index:1;display:flex;width:134px;height:36px;padding:0 12px;align-items:center;justify-content:center;gap:7px;cursor:pointer;color:#7f9fb1;border:1px solid rgba(71,137,165,.3);border-radius:6px;background:linear-gradient(180deg,#1f5c7b2e,#061927e0);box-shadow:inset 0 1px #97e1ff0d;white-space:nowrap;transition:border-color .15s ease,background .15s ease,color .15s ease,transform .15s ease}.timeline-steps button:before{width:6px;height:6px;flex:0 0 auto;content:"";border-radius:50%;background:#5d8296;box-shadow:0 0 8px #4ad6ff29}.timeline-steps button span{font-family:Consolas,monospace;font-size:13px;line-height:1}.timeline-steps button strong{color:#b8d8e4;font-size:14px;line-height:1}.timeline-steps button.control strong{color:#ffbd68}.timeline-steps button.active{color:#eafcff;border-color:#4ad6ff6b;background:#2389ad47;box-shadow:0 0 16px #4ad6ff1f}.timeline-steps button:hover{color:#eafcff;border-color:#4ad6ff75;background:linear-gradient(180deg,#2ba1c742,#092a3ee6);transform:translateY(-1px)}.timeline-steps button:active{transform:translateY(0)}.timeline-steps button.active:before{background:#4ad6ff;box-shadow:0 0 12px #4ad6ffb8}.timeline-steps button.active strong{color:#f2fdff}.timeline-arrow{flex:0 0 auto;color:#4fa9c9;opacity:.72}.timeline-auto-button{display:flex;width:106px;height:36px;margin-left:30px;align-items:center;justify-content:center;gap:6px;flex:0 0 auto;cursor:pointer;color:#e8fbff;border:1px solid rgba(74,214,255,.42);border-radius:6px;background:linear-gradient(135deg,#1c87addb,#0f4869e6);box-shadow:0 8px 18px #4ad6ff1a;font-size:12px;font-weight:800;white-space:nowrap;transition:border-color .15s ease,background .15s ease,color .15s ease}.timeline-auto-button:hover{color:#fff;border-color:#5be2ff9e;background:linear-gradient(135deg,#2aa3cdf0,#125b82f5)}.timeline-auto-button.active{color:#8fb4c7;border-color:#49bbe038;background:#071f309e;box-shadow:none}.supply-select-card{display:grid;height:48px;padding:0;grid-template-columns:62px 1fr;align-items:center;column-gap:8px;background:transparent}.supply-select-card>span{color:#75a0b4;font-size:12px;font-weight:700}.supply-dropdown{position:relative;min-width:0}.supply-trigger{display:flex;width:100%;height:36px;padding:0 34px 0 13px;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;color:#e6fbff;border:1px solid rgba(73,187,224,.2);border-radius:6px;outline:0;background:#071f30ad;font-size:15px;font-weight:800}.supply-trigger span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.supply-trigger svg{flex:0 0 auto;color:#75dfff;transform:rotate(90deg);transition:transform .16s ease}.supply-dropdown.open .supply-trigger svg{transform:rotate(270deg)}.supply-trigger:focus{border-color:#4edbff94;box-shadow:0 0 0 2px #48d6ff1a}.supply-menu{position:absolute;z-index:20;top:42px;right:0;left:0;display:grid;gap:4px;padding:6px;border:1px solid rgba(73,187,224,.28);border-radius:7px;background:#051422fa;box-shadow:0 18px 36px #0000005c,inset 0 1px #97e1ff0f}.supply-menu button{height:34px;padding:0 10px;cursor:pointer;color:#8fb4c7;border:1px solid transparent;border-radius:5px;background:transparent;font-size:13px;font-weight:700;text-align:left}.supply-menu button:hover{color:#e8fbff;border-color:#49bbe02e;background:#2389ad33}.supply-menu button.active{color:#e8fbff;border-color:#42cbf25c;background:#2389ad4d}.scenario-conclusion{display:flex;height:42px;padding:0 13px;align-items:center;gap:10px;color:#63e0ba;border-left:2px solid #42cda5;background:linear-gradient(90deg,rgba(50,198,153,.12),transparent)}.scenario-conclusion.danger{color:#ffb758;border-left-color:#ff9f43;background:linear-gradient(90deg,rgba(255,125,50,.14),transparent)}.scenario-conclusion.critical{color:#ff7e68;border-left-color:#ff5d52;background:linear-gradient(90deg,rgba(255,76,64,.16),transparent)}.scenario-conclusion.controlled{color:#5de9bc}.scenario-conclusion div{display:flex;flex-direction:column;gap:2px}.scenario-conclusion strong{font-size:13px}.scenario-conclusion span{color:#789aae;font-size:12px}.kpi-strip{display:grid;margin-top:12px;grid-template-columns:repeat(4,1fr);gap:12px}.power-kpi-strip{grid-template-columns:repeat(5,1fr)}.kpi-card{position:relative;display:flex;height:96px;padding:12px 18px;align-items:center;gap:15px;overflow:hidden;border:1px solid rgba(76,151,181,.2);border-radius:10px;background:linear-gradient(135deg,#0b263cd6,#051422d1)}.kpi-card:after{position:absolute;top:0;right:0;width:90px;height:2px;content:"";background:linear-gradient(90deg,transparent,var(--tone))}.kpi-card.cyan{--tone: #43d8ff}.kpi-card.blue{--tone: #5f9dff}.kpi-card.green{--tone: #55e4b6}.kpi-card.yellow{--tone: #ffd45a}.kpi-card.amber{--tone: #ffbd59}.kpi-card.text-kpi .kpi-body strong{font-family:inherit;font-size:22px}.kpi-icon{display:grid;width:46px;height:46px;flex:0 0 auto;place-items:center;color:var(--tone);border:1px solid color-mix(in srgb,var(--tone) 40%,transparent);border-radius:10px;background:color-mix(in srgb,var(--tone) 10%,transparent)}.kpi-body{min-width:0}.kpi-body>span{display:block;margin-bottom:1px;color:#7e9caf;font-size:12px}.kpi-body div{display:flex;align-items:baseline;gap:7px}.kpi-body strong{color:#f2fbff;font-family:DIN Alternate,Consolas,monospace;font-size:29px;line-height:1.1}.kpi-body em{color:var(--tone);font-size:12px;font-style:normal;font-weight:700}.kpi-body small{color:#527589;font-size:12px}.content-grid{display:grid;height:748px;margin-top:12px;grid-template-columns:402px 1fr 398px;gap:12px}.power-content-grid{height:704px}.power-content-grid .left-column{grid-template-rows:392px 300px}.power-content-grid .right-column{grid-template-rows:246px 270px 164px}.power-content-grid .profile-chart{height:282px}.left-column,.right-column{display:grid;gap:12px}.left-column{grid-template-rows:436px 300px}.right-column{grid-template-rows:274px 286px 164px}.panel{position:relative;overflow:hidden;border:1px solid rgba(64,143,176,.22);border-radius:10px;background:linear-gradient(135deg,#0a2338e3,#04111ee8),#05121fe6;box-shadow:inset 0 1px #97e1ff06,0 12px 28px #00000014}.panel:before,.panel:after{position:absolute;z-index:2;width:18px;height:18px;pointer-events:none;content:""}.panel:before{top:-1px;left:-1px;border-top:2px solid #46c9ed;border-left:2px solid #46c9ed}.panel:after{right:-1px;bottom:-1px;border-right:2px solid rgba(70,201,237,.5);border-bottom:2px solid rgba(70,201,237,.5)}.panel-heading{position:relative;z-index:3;display:flex;height:55px;padding:0 16px;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(72,137,166,.15)}.panel-heading>div:first-child{display:flex;align-items:center;gap:9px}.panel-heading h2{margin:0;color:#dff7ff;font-size:15px;font-weight:700;letter-spacing:.5px}.section-index{color:#3bb8e2;font-family:Consolas,monospace;font-size:12px}.section-index:after{margin-left:8px;color:#284e62;content:"/"}.data-tag,.control-state,.risk-badge{padding:5px 8px;color:#68bdda;border:1px solid rgba(67,167,202,.23);border-radius:5px;background:#0f475f40;font-size:12px}.profile-chart{width:100%;height:326px}.chart-insight{display:flex;height:37px;margin:3px 15px 0;padding:0 12px;align-items:center;gap:9px;color:#7398aa;border:1px solid rgba(61,151,180,.12);border-radius:6px;background:#0a2b3d6b;font-size:12px}.insight-dot{width:7px;height:7px;border-radius:50%;background:#52dcb1;box-shadow:0 0 9px #52dcb1}.chart-insight strong{color:#d9f7ff;font-size:12px}.chart-insight.warning .insight-dot{background:#ff9f43;box-shadow:0 0 9px #ff9f43}.chart-insight.warning strong{color:#ffbd68}.chart-insight.resolved .insight-dot{background:#55e4b6}.capacity-layout{display:grid;height:244px;padding:14px 16px 16px;grid-template-columns:145px 1fr;align-items:center;gap:16px}.capacity-gauge{position:relative;display:grid;width:138px;height:138px;place-items:center;border-radius:50%;background:conic-gradient(from 225deg,#48d6ff 0 var(--capacity-angle),rgba(54,90,109,.2) var(--capacity-angle) 270deg,transparent 270deg);transform:rotate(0)}.capacity-gauge:before{position:absolute;top:12px;right:12px;bottom:12px;left:12px;border:1px solid rgba(89,160,190,.18);border-radius:50%;content:"";background:#071522}.capacity-gauge.danger{background:conic-gradient(from 225deg,#ff6969 0 12deg,rgba(80,50,55,.26) 12deg 270deg,transparent 270deg)}.capacity-gauge.critical{background:conic-gradient(from 225deg,#ff514d 0 8deg,rgba(80,38,44,.3) 8deg 270deg,transparent 270deg)}.capacity-gauge.controlled{background:conic-gradient(from 225deg,#55e4b6 0 var(--capacity-angle),rgba(54,90,109,.2) var(--capacity-angle) 270deg,transparent 270deg)}.capacity-gauge>div{position:relative;z-index:1;display:flex;align-items:baseline;justify-content:center;flex-wrap:wrap}.capacity-gauge strong{font-family:Consolas,monospace;font-size:34px}.capacity-gauge span{margin-left:4px;color:#58cbe9;font-size:12px}.capacity-gauge small{width:100%;margin-top:2px;color:#6d91a5;text-align:center;font-size:12px}.capacity-levels{display:flex;flex-direction:column;gap:12px}.capacity-levels>div{display:grid;grid-template-columns:64px 1fr 48px;align-items:center;gap:8px;color:#7898aa;font-size:12px}.capacity-levels i,.risk-reasons i{position:relative;height:5px;overflow:hidden;border-radius:5px;background:#3a5a695c}.capacity-levels b,.risk-reasons b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#337fa1,#4ad8ff)}.capacity-levels strong{color:#8db2c3;text-align:right;font-size:12px}.capacity-levels .focus{color:#c8edf7}.capacity-levels .focus b{background:linear-gradient(90deg,#31a9d5,#55e4b6)}.power-levels>div{grid-template-columns:72px 1fr 64px}.power-levels>div:nth-child(2) b,.power-levels .focus b{background:linear-gradient(90deg,#d66f42,#ffae5b)}.topology-panel{display:grid;grid-template-rows:55px 1fr 65px}.topology-legend{display:flex;align-items:center;gap:15px;color:#6f8fa2;font-size:12px}.topology-legend span{display:flex;align-items:center;gap:5px}.topology-legend i{width:7px;height:7px;border-radius:50%}.topology-legend .safe,.topology-legend .yonglong{background:#4ad6ff}.topology-legend .yongshan{background:#55e4b6}.topology-legend .warn{background:#ff8a4c}.topology-legend .flow{width:14px;height:2px;border-radius:0;background:#4ad6ff}.topology-stage{position:relative;overflow:hidden;background:radial-gradient(circle at 50% 50%,rgba(24,105,140,.12),transparent 42%),linear-gradient(rgba(48,116,146,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(48,116,146,.04) 1px,transparent 1px);background-size:auto,24px 24px,24px 24px}.substation-card{position:absolute;z-index:4;top:28px;left:26px;display:flex;width:210px;height:62px;padding:0 14px;align-items:center;gap:12px;border:1px solid rgba(74,189,226,.25);border-radius:8px;background:#051928d1}.source-right-card{right:26px;left:auto}.substation-card:not(.active){opacity:.46;border-color:#4a89a62e}.substation-card.active{border-color:#4ad6ff6b;box-shadow:0 0 22px #4ad6ff14}.source-right-card.active{border-color:#55e4b661;box-shadow:0 0 22px #55e4b614}.substation-symbol{position:relative;width:38px;height:38px}.substation-symbol span{position:absolute;top:8px;width:23px;height:23px;border:2px solid #50d9ff;border-radius:50%}.substation-symbol span:first-child{left:0}.substation-symbol span:last-child{right:0}.substation-card div:last-child{display:flex;flex-direction:column;gap:4px}.substation-card strong{color:#d6f6ff;font-size:13px}.substation-card span{color:#60889c;font-size:12px}.topology-svg{position:absolute;top:40px;right:8px;bottom:18px;left:8px;width:calc(100% - 16px);height:calc(100% - 58px);overflow:visible}.feeder-base,.source-line{fill:none;stroke:#24647f;stroke-width:5;filter:url(#glow-cyan)}.feeder-flow{fill:none;stroke:#56dcff;stroke-width:2;stroke-dasharray:8 14;animation:flow-forward 1.3s linear infinite}.topology-stage.has-reverse-flow .feeder-flow{animation-direction:reverse}.topology-stage.is-risk .feeder-flow{stroke:#ff9e50}.topology-stage.is-critical .feeder-flow,.topology-stage.is-critical .branch-flow{stroke:#ff5f54}.topology-stage.is-controlled .feeder-flow{stroke:#56e6b7;stroke-width:1.7;opacity:.78;animation-duration:1.9s}.branch-base{fill:none;stroke:#265d73;stroke-width:3}.branch-flow{fill:none;stroke:#48ccec;stroke-width:2;stroke-dasharray:5 9;animation:flow-branch 1s linear infinite}.topology-stage.has-reverse-flow .branch-flow{animation-direction:reverse}.backup-source{stroke:#55e4b6;opacity:.75}.yonglong-flow{stroke:#56dcff}.yongshan-flow{stroke:#55e4b6}.mode-yongshan .source-line:not(.backup-source){opacity:.28}.mode-yonglong .backup-source{opacity:.28}.tie-point circle{fill:#071522;stroke:#4ad6ff;stroke-width:2.5;filter:url(#glow-cyan)}.tie-point text{fill:#cbeefa;font-size:12px;font-weight:700}.tie-point text:last-child{fill:#64899c;font-weight:500}.tie-right circle{stroke:#55e4b6}.mode-yonglong .tie-right,.mode-yongshan .tie-left{opacity:.46}.tie-point.active text:last-child{fill:#55e4b6}.switch-node line{stroke:#5aa7c5;stroke-width:3;stroke-linecap:round}.switch-node circle{fill:#071522;stroke:#80dfff;stroke-width:2}.switch-node text{fill:#87aabd;font-size:12px;font-weight:700}.switch-node text:last-child{fill:#5e8295;font-weight:500}.switch-node.open .switch-blade{stroke:#ffad61}.switch-node.closed .switch-blade{stroke:#55e4b6}.tap-point{fill:#071522;stroke:#50d8fb;stroke-width:2}.transformer-box{cursor:pointer;fill:#0c2b3d;stroke:#4fcde9;stroke-width:2}.transformer-mark{fill:none;stroke:#72e7ff;stroke-width:1.4}.pv-mark circle{fill:#ffbe4a14;stroke:#ffc55a;stroke-width:1.5}.pv-mark path{fill:none;stroke:#ffc55a;stroke-width:1.5}.node-name{fill:#c9e9f3;font-size:13px;font-weight:700}.node-meta{fill:#678da0;font-size:12px}.topology-node{cursor:pointer}.topology-node:hover .transformer-box,.topology-node.selected .transformer-box{fill:#10415a;stroke:#8be9ff}.topology-node.focus .transformer-box{stroke-width:2.5}.topology-node.supply-yonglong .branch-base,.topology-node.supply-yonglong .branch-flow,.topology-node.supply-yonglong .tap-point,.topology-node.supply-yonglong .transformer-box,.topology-node.supply-yonglong .transformer-mark{stroke:#4ad6ff}.topology-node.supply-yongshan .branch-base,.topology-node.supply-yongshan .branch-flow,.topology-node.supply-yongshan .tap-point,.topology-node.supply-yongshan .transformer-box,.topology-node.supply-yongshan .transformer-mark{stroke:#55e4b6}.topology-node.supply-yongshan .transformer-box{fill:#0b3433}.topology-node.supply-yongshan .node-name{fill:#d2f7ee}.topology-node.risk .branch-base,.topology-node.risk .branch-flow,.topology-node.risk .tap-point,.topology-node.risk .transformer-box,.topology-node.risk .transformer-mark{stroke:#ff745c;filter:url(#glow-red)}.topology-node.risk .branch-flow{animation-direction:reverse}.topology-node.risk .node-name,.topology-node.risk .node-meta{fill:#ffb06d}.topology-node.controlled .branch-base,.topology-node.controlled .branch-flow,.topology-node.controlled .tap-point,.topology-node.controlled .transformer-box{stroke:#55e4b6}.topology-node.controlled .branch-flow{animation-direction:reverse;opacity:.75;animation-duration:1.45s}.risk-ring{fill:none;stroke:#ff6a54;stroke-width:1.5;opacity:.8;animation:risk-ring 1.5s ease-out infinite}.topology-status{position:absolute;right:22px;bottom:24px;display:flex;height:64px;padding:0 15px;align-items:center;gap:11px;color:#5be1b6;border:1px solid rgba(78,224,179,.25);border-radius:8px;background:#041b25e0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.topology-status.danger{color:#ff9d55;border-color:#ff7e4852}.topology-status.watch{color:#ffd45a;border-color:#ffd45a57}.topology-status.critical{color:#ff6f64;border-color:#ff5e5361}.status-pulse{width:9px;height:9px;border-radius:50%;background:currentColor;box-shadow:0 0 12px currentColor;animation:pulse 1.5s infinite}.topology-status>div{display:flex;flex-direction:column;gap:2px}.topology-status small,.status-metric span{color:#66899b;font-size:12px}.topology-status strong{color:#d9f7ff;font-size:12px}.status-metric{min-width:76px;margin-left:8px;padding-left:12px;border-left:1px solid rgba(89,150,174,.22)}.risk-callout,.control-callout{position:absolute;z-index:5;top:76px;right:44px;display:flex;width:190px;height:58px;padding:0 13px;align-items:center;gap:11px;color:#ff9b53;border:1px solid rgba(255,115,75,.43);border-radius:8px;background:#371514e0;box-shadow:0 0 28px #ff50371f}.risk-callout div,.control-callout div{display:flex;flex-direction:column;gap:2px}.risk-callout span,.control-callout span{color:#b98267;font-size:12px}.risk-callout strong,.control-callout strong{color:#ffd3b7;font-family:Consolas,monospace;font-size:17px}.power-callout strong{font-size:16px}.risk-callout i{position:absolute;bottom:-46px;left:54px;width:1px;height:46px;background:linear-gradient(#ff7b50,transparent);transform:rotate(27deg);transform-origin:top}.control-callout{color:#55e4b6;border-color:#55e4b659;background:#082e28e0}.control-callout span{color:#72a999}.control-callout strong{color:#a4f8dc}.topology-footer{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid rgba(64,132,161,.15);background:#051523b3}.topology-footer>div{display:flex;padding:0 17px;align-items:center;justify-content:space-between;border-right:1px solid rgba(67,131,159,.13)}.topology-footer>div:last-child{border:0}.topology-footer span{color:#5e8295;font-size:12px}.topology-footer strong{color:#bdebf7;font-family:Consolas,monospace;font-size:14px}.topology-footer strong.danger{color:#ff8a58}.power-footer strong{font-size:13px;white-space:nowrap}.warning-panel{transition:.3s ease}.warning-panel.danger{border-color:#ff754952;background:linear-gradient(145deg,#2f1a1ceb,#09141ded)}.warning-panel.watch{border-color:#ffd45a4d;background:linear-gradient(145deg,#2b240fe6,#09141ded)}.warning-panel.critical{border-color:#ff524c61;background:linear-gradient(145deg,#36141cf0,#09141ded)}.warning-panel.controlled{border-color:#4fd7ad45}.warning-panel.danger:before{border-color:#ff7652}.warning-panel.watch:before{border-color:#ffd45a}.warning-panel.critical:before{border-color:#ff5a54}.risk-badge{color:#5ee3b7;border-color:#4edbad33;background:#1b644e2e}.warning-panel.danger .risk-badge{color:#ffad62;border-color:#ff88484d;background:#6f301a3d}.warning-panel.watch .risk-badge{color:#ffd45a;border-color:#ffd45a61;background:#70581242}.warning-panel.critical .risk-badge{color:#ff7f72;border-color:#ff5e5357;background:#7b232645}.warning-main{display:grid;height:105px;padding:13px 17px 7px;grid-template-columns:61px 1fr;align-items:center;gap:12px}.warning-icon{display:grid;width:56px;height:56px;place-items:center;color:#55e4b6;border:1px solid rgba(85,228,182,.28);border-radius:50%;background:#2fb98d14}.warning-panel.danger .warning-icon{color:#ff8a55;border-color:#ff794b59;background:#ff663c14;box-shadow:0 0 24px #ff583714}.warning-panel.critical .warning-icon{color:#ff6f64;border-color:#ff5e5361;background:#ff524c1a}.warning-main>div:last-child{display:grid;grid-template-columns:auto 1fr;align-items:baseline}.warning-main small{grid-column:1 / -1;color:#66889b;font-size:12px}.warning-main strong{color:#effcff;font-family:Consolas,monospace;font-size:38px;line-height:1}.warning-main em{margin-left:4px;color:#5fb8d4;font-size:12px;font-style:normal}.warning-main span{margin-left:13px;color:#8cb0c1;font-size:12px}.risk-reasons{display:grid;padding:6px 17px 0;grid-template-columns:1fr 1fr;gap:12px}.risk-reasons>div{display:grid;grid-template-columns:1fr auto;gap:7px}.risk-reasons span{color:#688a9d;font-size:12px}.risk-reasons strong{color:#bfe8f2;font-size:12px}.risk-reasons strong.danger{color:#ff9b63}.risk-reasons i{grid-column:1 / -1}.risk-reasons b{background:linear-gradient(90deg,#3e9ebe,#54d7f5)}.warning-panel.danger .risk-reasons b{background:linear-gradient(90deg,#ce6945,#ff9e51)}.warning-panel.critical .risk-reasons b{background:linear-gradient(90deg,#c94c4a,#ff7368)}.control-panel{transition:.3s ease}.control-panel.active{border-color:#ffa94459}.control-panel.done{border-color:#55e4b652}.strategy-flow{display:grid;height:70px;padding:10px 15px 4px;grid-template-columns:1fr 18px 1fr;align-items:center;gap:7px;color:#4b778c}.strategy-item{display:grid;height:53px;padding:0 8px;grid-template-columns:32px 1fr;grid-template-rows:1fr 1fr;align-items:center;column-gap:7px;border:1px solid rgba(68,137,166,.18);border-radius:7px;background:#08223394}.strategy-item>div{display:grid;width:30px;height:30px;grid-row:1 / 3;place-items:center;color:#48c9ee;border-radius:6px;background:#36a1c51a}.strategy-item span{align-self:end;color:#88a9b9;font-size:12px}.strategy-item strong{align-self:start;color:#c9eef6;font-size:12px}.strategy-item.primary{border-color:#4ad0f447}.control-actions{display:grid;height:82px;padding:8px 14px 3px;grid-template-columns:repeat(3,1fr);gap:8px}.control-action{display:grid;padding:6px 7px;grid-template-rows:25px 17px 17px;justify-items:center;align-items:center;border:1px solid rgba(68,137,166,.18);border-radius:7px;background:#08223394}.control-action>div{display:grid;width:25px;height:25px;place-items:center;color:#4ad6ff;border-radius:6px;background:#36a1c51a}.control-action span{color:#86a8b8;font-size:12px}.control-action strong{color:#5e8194;font-size:12px}.control-action.enabled{border-color:#ffa65247;background:#47251957}.control-action.enabled>div,.control-action.enabled strong{color:#ffb05f}.control-panel.done .control-action.enabled{border-color:#53e0b347;background:#124b3d4d}.control-panel.done .control-action.enabled>div,.control-panel.done .control-action.enabled strong{color:#61e1b8}.before-after{display:grid;height:79px;padding:10px 17px 6px;grid-template-columns:1fr 24px 1fr;align-items:center;gap:10px;color:#4e7589}.before-after>div{position:relative;display:grid;grid-template-columns:1fr auto;align-items:baseline;row-gap:7px}.before-after span{color:#66889b;font-size:12px}.before-after strong{color:#d9f5fb;font-family:Consolas,monospace;font-size:17px}.before-after em{margin-left:3px;color:#698ea0;font-size:12px;font-style:normal}.before-after i{grid-column:1 / -1;width:100%;height:5px;border-radius:5px;transition:width .55s ease}.before-after .before{background:linear-gradient(90deg,#d96949,#ff9760)}.before-after .after{background:linear-gradient(90deg,#38aa89,#57e4b7)}.power-before-after{height:78px;padding-top:7px}.execute-button{display:flex;width:calc(100% - 30px);height:42px;margin:5px 15px 0;align-items:center;justify-content:center;gap:8px;cursor:pointer;color:#07131b;border:0;border-radius:7px;background:linear-gradient(135deg,#ffbd59,#ff8a4f);box-shadow:0 8px 22px #ff763a26;font-size:12px;font-weight:800}.execute-button:disabled{cursor:default;color:#587689;border:1px solid rgba(67,127,151,.16);background:#1232437a;box-shadow:none}.control-panel.done .execute-button:disabled{color:#8ce8ca;border-color:#4ecfa53d;background:#1e67502e}.panel-heading.compact{height:45px}.value-grid{display:grid;height:118px;padding:10px 12px 14px;grid-template-columns:repeat(3,1fr);gap:7px}.value-grid>div{display:flex;align-items:center;justify-content:center;flex-direction:column;border:1px solid rgba(64,137,166,.15);border-radius:7px;background:#08223280}.value-grid span{margin-bottom:4px;color:#638699;font-size:12px}.value-grid strong{color:#d9f7ff;font-family:Consolas,monospace;font-size:20px}.value-grid em{margin-left:2px;color:#58c6e3;font-size:12px;font-style:normal}footer{position:absolute;right:26px;bottom:8px;left:26px;display:grid;height:22px;grid-template-columns:1fr auto 1fr;align-items:center;color:#42677a;font-size:12px}.copyright{grid-column:2;color:#54788a;letter-spacing:.2px}@keyframes flow-forward{to{stroke-dashoffset:-22}}@keyframes flow-branch{to{stroke-dashoffset:-14}}@keyframes risk-ring{0%{opacity:.9;transform:scale(.8)}to{opacity:0;transform:scale(1.55)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.75)}}.capacity-main{padding-top:16px}.capacity-toolbar{height:58px;padding:0 14px 0 18px;display:flex;align-items:center;justify-content:flex-start;border:1px solid rgba(67,155,193,.22);border-radius:10px;background:#071828b8}.capacity-site{display:flex;align-items:center;justify-content:flex-start;gap:12px}.capacity-site>span{display:flex;align-items:center;gap:6px;color:#6e93a7;font-size:12px}.capacity-site strong{color:#e2f8ff;font-size:18px}.capacity-site em{padding-left:12px;color:#668a9d;border-left:1px solid rgba(93,153,179,.22);font-size:12px;font-style:normal}.mode-switch,.range-switch{display:flex;align-items:center;gap:5px}.mode-switch>span{margin-right:5px;color:#668a9d;font-size:12px}.mode-switch button,.range-switch button{height:32px;padding:0 13px;cursor:pointer;color:#7194a7;border:1px solid rgba(71,137,165,.18);border-radius:6px;background:#0926388c;font-size:12px}.mode-switch button.active,.range-switch button.active{color:#dff9ff;border-color:#42cbf261;background:#2389ad47}.capacity-kpis{margin-top:12px;grid-template-columns:repeat(4,1fr)}.capacity-kpi.text-kpi .kpi-body strong{font-family:inherit;font-size:23px}.capacity-analysis-grid{display:grid;height:748px;margin-top:12px;grid-template-columns:1fr 610px;grid-template-rows:330px 406px;gap:12px}.capacity-trend-panel,.constraint-panel,.area-list-panel{min-width:0}.constraint-panel{grid-column:1 / -1;grid-row:1}.capacity-trend-panel{grid-column:1;grid-row:2}.area-list-panel{grid-column:2;grid-row:2;overflow:hidden}.capacity-trend-chart{width:100%;height:344px}.trend-legend-note{display:flex;align-items:center;gap:6px;color:#6d92a5;font-size:12px}.trend-heading-actions{display:flex;align-items:center;gap:12px}.trend-mode-select{width:292px;height:38px;grid-template-columns:58px 1fr}.trend-mode-select .supply-trigger{height:34px;font-size:13px}.trend-range-switch button{height:28px;padding:0 10px}.constraint-panel{border-color:#49bbdf4a}.mode-capacity-compare{display:grid;margin:8px 15px 0;padding:12px 16px;grid-template-columns:repeat(3,1fr);gap:96px}.mode-capacity-card{position:relative;display:grid;min-width:0;height:226px;padding:8px;grid-template-columns:minmax(150px,.95fr) minmax(136px,.74fr) 168px;align-items:stretch;column-gap:14px;color:#779aab;border:0;border-radius:0;background:transparent;text-align:left}.mode-capacity-card:before{display:none}.mode-capacity-card:not(:last-child):after{position:absolute;top:8px;right:-48px;bottom:8px;width:1px;content:"";background:linear-gradient(180deg,transparent,rgba(82,166,197,.34),transparent)}.mode-card-primary{display:flex;grid-column:1;grid-row:1;min-width:0;flex-direction:column;justify-content:space-between}.mode-card-primary>div{display:flex;min-width:0;flex-direction:column;gap:5px}.mode-card-primary span{color:#cceef7;font-size:18px;font-weight:800}.mode-card-primary small{min-width:0;overflow:hidden;color:#638698;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.mode-card-primary>strong{color:#e8fbff;font-family:Consolas,monospace;font-size:28px;line-height:1.05}.mode-card-primary>strong em{margin-left:2px;color:#58cce8;font-size:12px;font-style:normal}.mode-card-primary i{width:fit-content;padding:3px 8px;color:#6e93a5;border:1px solid rgba(73,137,164,.16);border-radius:999px;background:#061d2d3d;font-size:11px;font-style:normal}.mode-constraint-mini{display:flex;grid-column:3;grid-row:1;min-width:0;padding:1px 0;flex-direction:column;justify-content:space-between;gap:3px}.mode-constraint-mini span{display:grid;height:26px;padding:0 6px;grid-template-columns:minmax(0,1fr) 72px;align-items:center;gap:8px;border:0;border-bottom:1px solid rgba(68,139,168,.13);border-radius:0;background:transparent}.mode-constraint-mini span.bottleneck{padding:0 6px;border-bottom-color:#ff994c40;border-left:2px solid rgba(255,153,76,.62);border-radius:4px;background:#783a1a1c}.mode-constraint-mini span:last-child{border-bottom-color:transparent}.mode-constraint-mini em{min-width:0;overflow:hidden;color:#6e93a5;font-size:11px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.mode-constraint-mini strong{color:#d4f2fa;font-family:Consolas,monospace;font-size:12px;text-align:right}.mode-constraint-mini span.bottleneck em,.mode-constraint-mini span.bottleneck strong{color:#ffb063}.mode-card-summary{display:flex;grid-column:2;grid-row:1;min-width:0;flex-direction:column;justify-content:space-between;gap:5px}.mode-card-summary b{display:flex;min-height:52px;padding:4px 8px 7px;justify-content:center;flex-direction:column;gap:4px;border:0;border-bottom:1px solid rgba(68,139,168,.13);border-radius:0;background:transparent;font-weight:400}.mode-card-summary b:last-child{border-bottom-color:transparent}.mode-card-summary b span{color:#638698;font-size:11px}.mode-card-summary b strong{min-width:0;overflow:hidden;color:#d5f3fb;font-size:12px;text-overflow:ellipsis;white-space:normal;line-height:1.25}.mode-card-primary i.up{color:#55e4b6;border-color:#55e4b63d;background:#1c675021}.mode-card-primary i.down{color:#ff9d63;border-color:#ff9d633d;background:#783a1a21}.constraint-formula{position:relative;display:flex;height:38px;margin:5px 15px 2px;padding:0 55px 0 13px;align-items:center;justify-content:space-between;overflow:hidden;border:1px solid rgba(68,166,199,.2);border-radius:7px;background:linear-gradient(90deg,#144e6759,#061f3066)}.constraint-formula span{color:#789caf;font-size:12px}.constraint-formula strong{color:#d7f7ff;font-size:13px}.constraint-formula i{position:absolute;top:0;right:0;display:grid;width:40px;height:38px;place-items:center;color:#59d8f8;border-left:1px solid rgba(68,166,199,.2);background:#2387aa24;font-family:Consolas,monospace;font-size:12px;font-style:normal;font-weight:800}.constraint-list{display:flex;padding:0 15px 2px;flex-direction:column;gap:2px}.constraint-row{display:grid;min-height:24px;padding:0 8px;grid-template-columns:132px 1fr 74px;align-items:center;gap:8px;border:1px solid transparent;border-radius:5px}.constraint-row>span{color:#7396a8;font-size:12px}.constraint-row>i{height:5px;overflow:hidden;border-radius:5px;background:#41637452}.constraint-row>i b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#337da0,#4fd1f4)}.constraint-row>strong{color:#c8edf7;font-family:Consolas,monospace;font-size:14px;text-align:right}.constraint-row>strong em{margin-left:3px;color:#6d91a3;font-size:12px;font-style:normal}.constraint-row small{display:none}.constraint-row.bottleneck{border-color:#ff994c52;background:#783a1a1f}.constraint-row.bottleneck>span,.constraint-row.bottleneck>strong{color:#ffb063}.constraint-row.bottleneck>i b{background:linear-gradient(90deg,#d66f42,#ffae5b)}.constraint-result{display:grid;height:52px;margin:0 15px;padding:0 12px;grid-template-columns:1fr 24px 1fr 1fr;align-items:center;gap:8px;color:#52798d;border-top:1px solid rgba(70,137,164,.16)}.constraint-result>div{display:flex;flex-direction:column;gap:3px}.constraint-result span{color:#6f91a3;font-size:12px}.constraint-result strong{color:#e1f9ff;font-family:Consolas,monospace;font-size:19px}.constraint-result strong em{margin-left:3px;color:#54c6e5;font-size:12px;font-style:normal}.constraint-result .result-time{padding-left:12px;border-left:1px solid rgba(73,137,164,.18)}.constraint-result .result-time strong{font-size:15px}.area-summary{display:flex;align-items:center;gap:16px;color:#7295a7;font-size:12px}.area-summary span{display:flex;align-items:center;gap:6px}.area-summary i,.status-dot{width:7px;height:7px;border-radius:50%}.area-summary .normal,.status-dot.正常,.status-dot.safe{background:#56dfb5;box-shadow:0 0 8px #56dfb58c}.area-summary .watch,.status-dot.关注,.status-dot.watch{background:#ffc25a}.area-summary .warning,.status-dot.预警,.status-dot.warning{background:#ff745c;box-shadow:0 0 8px #ff634e73}.area-summary em{padding-left:12px;color:#54788a;border-left:1px solid rgba(71,135,162,.2);font-style:normal}.area-table{height:330px;padding:0 12px 8px;overflow-y:auto;scrollbar-color:rgba(84,179,213,.38) rgba(7,29,45,.34);scrollbar-width:thin}.area-table::-webkit-scrollbar{width:6px}.area-table::-webkit-scrollbar-track{background:#071d2d57}.area-table::-webkit-scrollbar-thumb{border-radius:6px;background:#54b3d561}.area-table-head,.area-table-row{display:grid;grid-template-columns:1.35fr .95fr 1fr .95fr 24px;align-items:center;column-gap:10px}.area-table-head{position:sticky;z-index:2;top:0;height:34px;padding:0 12px;color:#5f8396;border-bottom:1px solid rgba(65,129,157,.16);background:#071828f5;font-size:12px}.area-table-row{width:100%;height:48px;padding:0 12px;cursor:pointer;color:#87a8b8;border:0;border-bottom:1px solid rgba(54,111,138,.11);background:transparent;font-size:12px;text-align:left;transition:.18s ease}.area-table-row:hover{background:#206f8f24}.area-table-row strong{color:#c9eef7;font-size:13px}.area-table-row span{display:flex;align-items:center;gap:6px;white-space:nowrap}.area-table-row span em{color:#688b9d;font-size:12px;font-style:normal}.area-table-row .capacity-cell{color:#58d7f5;font-family:Consolas,monospace;font-size:13px;font-weight:700}.area-table-row .recommend-cell{color:#61e0b8;font-family:Consolas,monospace;font-size:13px;font-weight:700}.area-table-row .danger{color:#ff9664}.area-table-row>svg{color:#4f7589}.area-modal-layer{position:absolute;z-index:30;top:84px;right:0;bottom:0;left:0;display:grid;place-items:center;background:#00050b94;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.area-modal{width:980px;max-width:calc(100% - 96px);height:690px;max-height:calc(100% - 64px);padding:0 22px 24px;overflow:hidden;border:1px solid rgba(75,189,225,.34);border-radius:12px;background:radial-gradient(circle at 100% 0,rgba(31,133,172,.15),transparent 30%),#071522;box-shadow:0 24px 80px #00000070}.drawer-head{display:flex;height:82px;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(73,142,169,.18)}.drawer-head>div{display:flex;flex-direction:column;gap:5px}.drawer-head span{color:#62899c;font-size:12px}.drawer-head h2{margin:0;color:#e1f8ff;font-size:21px}.drawer-head button{display:grid;width:36px;height:36px;place-items:center;cursor:pointer;color:#82a7b8;border:1px solid rgba(74,140,167,.22);border-radius:7px;background:#0d30428c}.drawer-kpis{display:grid;margin:15px 0;grid-template-columns:repeat(4,1fr);gap:8px}.drawer-kpis>div{display:flex;height:76px;align-items:center;justify-content:center;flex-direction:column;border:1px solid rgba(68,139,167,.17);border-radius:7px;background:#08243594}.drawer-kpis span{margin-bottom:5px;color:#64889a;font-size:12px}.drawer-kpis strong{color:#d9f6fd;font-family:Consolas,monospace;font-size:19px}.drawer-kpis strong.cyan{color:#55d7f5}.drawer-kpis em{margin-left:2px;color:#6f95a6;font-size:12px;font-style:normal}.drawer-section{margin-top:13px;padding:14px;border:1px solid rgba(67,136,164,.17);border-radius:8px;background:#071f2f85}.drawer-section-title{display:flex;height:28px;align-items:center;justify-content:space-between}.drawer-section-title>div{display:flex;align-items:center;gap:8px;color:#57d1ef}.drawer-section-title strong{color:#cdeef6;font-size:13px}.drawer-section-title>span{color:#5e8294;font-size:12px}.drawer-sparkline{width:100%;height:120px}.drawer-sparkline line{stroke:#4b849d29;stroke-width:1}.drawer-sparkline polyline{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.drawer-sparkline .load{stroke:#55dfb5}.drawer-sparkline .pv{stroke:#ffc65a}.sparkline-legend{display:flex;justify-content:center;gap:24px;color:#7294a5;font-size:12px}.sparkline-legend span{display:flex;align-items:center;gap:6px}.sparkline-legend i{width:15px;height:2px}.sparkline-legend i.load{background:#55dfb5}.sparkline-legend i.pv{background:#ffc65a}.drawer-constraints{display:flex;margin-top:8px;flex-direction:column;gap:7px}.drawer-constraints>div{display:grid;height:31px;padding:0 7px;grid-template-columns:78px 1fr 70px;align-items:center;gap:8px;border:1px solid transparent;border-radius:5px}.drawer-constraints span,.drawer-constraints strong{color:#789aab;font-size:12px}.drawer-constraints strong{color:#c6eaf3;font-family:Consolas,monospace;text-align:right}.drawer-constraints i{height:5px;overflow:hidden;border-radius:5px;background:#41657757}.drawer-constraints b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#347fa1,#4dd3f3)}.drawer-constraints .minimum{border-color:#ff9e4e47;background:#74381b1f}.drawer-constraints .minimum span,.drawer-constraints .minimum strong{color:#ffad61}.drawer-constraints .minimum b{background:linear-gradient(90deg,#d56d41,#ffac58)}.drawer-conclusion{display:grid;height:72px;margin-top:14px;padding:0 14px;grid-template-columns:34px 1fr 1fr;align-items:center;gap:10px;color:#56dcb3;border:1px solid rgba(80,220,176,.24);border-radius:8px;background:#1c675021}.drawer-conclusion>div{display:flex;flex-direction:column;gap:4px}.drawer-conclusion>div:last-child{padding-left:14px;border-left:1px solid rgba(85,166,143,.2)}.drawer-conclusion span{color:#6b998d;font-size:12px}.drawer-conclusion strong{color:#bcf4e1;font-size:14px}.simulation-workspace{display:flex;width:100%;height:100%;overflow:hidden;background:#020711}.workspace-stage{position:relative;min-width:0;flex:1}.scenario-toggle{display:flex;height:38px;padding:0 14px;align-items:center;gap:8px;cursor:pointer;color:#f2e4bb;border:1px solid rgba(218,178,88,.48);border-radius:7px;background:#68512047}.scenario-toggle:hover{color:#fff2c8;border-color:#eec465c2;background:#7e602361}.scenario-simulator{position:relative;z-index:20;display:flex;width:350px;height:100%;padding:0 18px 14px;flex:0 0 350px;flex-direction:column;overflow:auto;color:#e8e8e4;border-left:3px solid #6f7378;background:#181a1d;box-shadow:-20px 0 42px #0000007a}.simulator-heading{position:sticky;z-index:2;top:0;display:flex;height:64px;margin:0 -18px;padding:0 18px;flex:0 0 auto;align-items:center;justify-content:space-between;border-bottom:1px solid #3d4044;background:#222428}.simulator-heading>div,.simulator-heading button,.simulator-footer button{display:flex;align-items:center}.simulator-heading>div{gap:9px;font-size:17px;font-weight:800}.simulator-heading>div svg{color:#e6b957}.simulator-heading>div small{margin-left:3px;padding:3px 7px;color:#cab77e;border:1px solid rgba(218,178,88,.36);border-radius:3px;background:#6f551f40;font-size:11px;font-weight:600}.simulator-heading button{width:34px;height:34px;padding:0;cursor:pointer;justify-content:center;color:#92969a;border:0;border-radius:6px;background:transparent}.simulator-heading button:hover{color:#f2f2ee;background:#36393d}.simulator-context{display:flex;min-height:76px;margin-top:16px;padding:12px 14px;flex-direction:column;justify-content:center;border:1px solid #3b3e42;border-left:3px solid #d8aa4a;background:#202226}.simulator-context span,.simulator-context small{color:#8e9296;font-size:12px}.simulator-context strong{margin:4px 0 2px;color:#f0f0ec;font-size:18px}.simulator-group{padding:18px 0;border-bottom:1px solid #303236}.simulator-label{display:flex;margin-bottom:11px;align-items:center;justify-content:space-between}.simulator-label span{color:#d8d8d4;font-size:13px;font-weight:700}.simulator-label em{color:#777b80;font-size:11px;font-style:normal}.simulator-stack{display:grid;gap:7px}.simulator-stack button{display:flex;height:48px;padding:0 12px;cursor:pointer;align-items:center;justify-content:space-between;color:#a1a4a6;border:1px solid #383b3f;border-radius:6px;background:#202226}.simulator-stack button span{font-weight:700}.simulator-stack button small{color:#797d81}.simulator-stack button.active,.simulator-segments button.active{color:#fff2ca;border-color:#e0b4508f;background:#6f551f5c;box-shadow:inset 3px 0 #e1b14d}.simulator-stack button.active small{color:#c3ae73}.simulator-segments{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.simulator-segments.four{grid-template-columns:repeat(4,1fr)}.simulator-segments button{display:flex;height:38px;cursor:pointer;align-items:center;justify-content:center;gap:6px;color:#a1a4a6;border:1px solid #383b3f;border-radius:6px;background:#202226}.simulator-segments button.active{box-shadow:none}.simulator-timeline{position:relative;display:grid;padding-left:2px}.simulator-timeline:before{position:absolute;top:17px;bottom:17px;left:10px;width:1px;content:"";background:#46494d}.simulator-timeline button{position:relative;display:grid;height:44px;padding:0 8px 0 28px;cursor:pointer;grid-template-columns:58px 1fr;align-items:center;color:#92969a;border:0;border-radius:5px;background:transparent;text-align:left}.simulator-timeline button i{position:absolute;z-index:1;left:2px;width:17px;height:17px;border:4px solid #181a1d;border-radius:50%;background:#666a6f}.simulator-timeline button span{font-family:Consolas,monospace;font-size:12px}.simulator-timeline button strong{font-size:13px}.simulator-timeline button:hover{background:#25272b}.simulator-timeline button.active{color:#fff1c5;background:#6f551f4d}.simulator-timeline button.active i{background:#e1b14d;box-shadow:0 0 10px #e1b14d80}.simulator-play{display:flex;width:100%;height:40px;margin-top:10px;cursor:pointer;align-items:center;justify-content:center;gap:8px;color:#fff0c2;border:1px solid rgba(218,178,88,.5);border-radius:6px;background:#6f551f57}.simulator-play.active{color:#a1a4a6;border-color:#3b3e42;background:#222428}.simulator-footer{display:flex;min-height:54px;margin-top:auto;padding-top:13px;align-items:center;justify-content:space-between;color:#777b80;font-size:11px}.simulator-footer button{gap:6px;cursor:pointer;color:#a1a4a6;border:0;background:transparent;font-size:12px}.route-nav a{width:158px}.kpi-card.normal{--tone: #55e4b6}.kpi-card.orange{--tone: #ffad58}.kpi-card.red{--tone: #ff6868}.risk-badge.normal{color:#55e4b6}.risk-badge.yellow{color:#ffd45a;border-color:#ffd45a59}.risk-badge.orange{color:#ffad58;border-color:#ffad5861}.risk-badge.red{color:#ff7373;border-color:#ff68686b}.monitoring-main,.control-main{padding-top:14px}.monitoring-kpis{margin-top:0}.monitoring-grid{display:grid;height:798px;margin-top:12px;grid-template-columns:minmax(0,1fr) 430px;grid-template-rows:530px 256px;gap:12px}.pv-network-panel,.monitor-summary-panel,.monitoring-chart-panel,.site-list-panel{min-width:0}.pv-network-stage{position:relative;height:475px;padding:16px 22px 18px}.monitor-cloud{display:flex;width:380px;height:58px;margin:0 auto;padding:0 17px;align-items:center;gap:13px;color:#53d5fa;border:1px solid rgba(67,183,220,.32);border-radius:7px;background:#0b3146b8}.monitor-cloud>div{display:flex;flex-direction:column}.monitor-cloud strong{color:#e5faff;font-size:16px}.monitor-cloud span{margin-top:3px;color:#6f9aab;font-size:12px}.monitor-comm-link{position:relative;width:280px;height:42px;margin:0 auto}.monitor-comm-link i{position:absolute;top:0;bottom:0;left:calc(50% - 14px);width:28px}.monitor-comm-link i:before,.monitor-comm-link i:after{position:absolute;top:0;bottom:0;width:1px;content:"";background:repeating-linear-gradient(to bottom,#3e9dbc 0 5px,transparent 5px 10px)}.monitor-comm-link i:before{left:0;animation:communication-flow-down .7s linear infinite}.monitor-comm-link i:after{right:0;background-image:repeating-linear-gradient(to bottom,#48b99a 0 5px,transparent 5px 10px);animation:communication-flow-up .7s linear infinite}.monitor-comm-link span{position:absolute;top:13px;color:#6895a7;font-size:12px;white-space:nowrap}.monitor-downlink{right:calc(50% + 24px)}.monitor-downlink:after{margin-left:4px;color:#4ca9c6;content:"↓"}.monitor-uplink{left:calc(50% + 24px)}.monitor-uplink:before{margin-right:4px;color:#55c9aa;content:"↑"}.network-transformer{display:flex;width:380px;height:58px;margin:0 auto;padding:0 17px;align-items:center;gap:15px;border:1px solid rgba(67,183,220,.32);border-radius:7px;background:#0b3146b8}.transformer-coils{position:relative;width:45px;height:44px}.transformer-coils i{position:absolute;width:29px;height:29px;border:2px solid #4bcff3;border-radius:50%}.transformer-coils i:first-child{top:0;left:7px}.transformer-coils i:last-child{bottom:0;left:7px}.network-transformer>div:nth-child(2){display:flex;min-width:0;flex:1;flex-direction:column}.network-transformer small,.network-transformer span{color:#63889b;font-size:11px}.network-transformer strong{margin:2px 0;color:#e5faff;font-size:18px}.network-transformer>em{padding:5px 8px;color:#56dfb5;border:1px solid currentColor;border-radius:4px;font-size:12px;font-style:normal}.network-transformer>em.yellow{color:#ffd45a}.network-transformer>em.orange{color:#ffad58}.network-transformer>em.red{color:#ff6f6f}.network-bus{position:relative;height:50px}.network-bus:before{position:absolute;top:0;left:50%;width:1px;height:27px;content:"";background:repeating-linear-gradient(to bottom,#42c7eb 0 5px,transparent 5px 9px);animation:communication-flow-up .7s linear infinite}.network-bus i{position:absolute;top:26px;right:4.5%;left:4.5%;height:2px;background:linear-gradient(90deg,transparent,#3fc2e8 8%,#3fc2e8 92%,transparent)}.network-bus span{position:absolute;top:31px;left:50%;padding:0 7px;color:#52798c;background:#071b2b;font-size:12px;transform:translate(-50%)}.pv-site-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px 12px}.pv-site-monitor{position:relative;min-width:0;height:112px;padding:11px 10px 8px;border:1px solid rgba(69,145,176,.18);border-radius:6px;background:#061b2ab8}.pv-site-monitor.risk{border-color:#ff7e5b85;background:#4b231f5c}.site-branch{position:absolute;top:-12px;left:50%;width:1px;height:12px;background:repeating-linear-gradient(to bottom,#357e9b 0 4px,transparent 4px 8px);animation:communication-flow-up .7s linear infinite}.pv-site-grid .pv-site-monitor:nth-child(n+6) .site-branch{display:none}.site-monitor-head{display:flex;align-items:center;justify-content:space-between;gap:5px}.site-monitor-head span{display:-webkit-box;overflow:hidden;color:#badde8;font-size:13px;font-weight:700;line-height:1.25;-webkit-box-orient:vertical;-webkit-line-clamp:2}.site-monitor-head em{flex:0 0 auto;color:#4f8499;font-size:9px;font-style:normal}.site-power{display:flex;height:48px;align-items:center;justify-content:center;color:#55e4b6}.pv-site-monitor.exporting .site-power{color:#ffbd62}.pv-site-monitor.risk .site-power{color:#ff806c}.site-power strong{margin-left:5px;font-family:Consolas,monospace;font-size:23px}.site-power small{margin-left:2px;font-size:12px}.site-source-row{display:flex;justify-content:space-between;color:#557b8e;font-size:9px}.site-source-row span{white-space:nowrap}.monitor-summary-panel{grid-column:2;grid-row:1}.monitor-boundary{display:grid;height:286px;padding:28px 24px 20px;grid-template-columns:178px 1fr;align-items:center;gap:24px}.boundary-ring{position:relative;display:grid;width:170px;height:170px;place-items:center;border-radius:50%;background:conic-gradient(#55e4b6 0 var(--usage),rgba(58,91,106,.22) var(--usage) 360deg)}.boundary-ring.yellow{background:conic-gradient(#ffd45a 0 var(--usage),rgba(58,91,106,.22) var(--usage) 360deg)}.boundary-ring.orange{background:conic-gradient(#ffad58 0 var(--usage),rgba(58,91,106,.22) var(--usage) 360deg)}.boundary-ring.red{background:conic-gradient(#ff6868 0 var(--usage),rgba(58,91,106,.22) var(--usage) 360deg)}.boundary-ring:before{position:absolute;top:11px;right:11px;bottom:11px;left:11px;border-radius:50%;content:"";background:#071625}.boundary-ring>div{position:relative;z-index:1;display:flex;align-items:baseline;justify-content:center;flex-wrap:wrap}.boundary-ring strong{font-family:Consolas,monospace;font-size:43px}.boundary-ring em{color:#6ca0b4;font-size:14px;font-style:normal}.boundary-ring span{width:100%;color:#66899b;text-align:center;font-size:11px}.boundary-values{display:grid;gap:14px}.boundary-values>div{padding-bottom:11px;border-bottom:1px solid rgba(70,134,160,.16)}.boundary-values span{display:block;color:#678b9e;font-size:11px}.boundary-values strong{color:#dff8ff;font-family:Consolas,monospace;font-size:24px}.boundary-values strong.danger{color:#ff7771}.boundary-values em{margin-left:3px;color:#5e93a8;font-size:10px;font-style:normal}.boundary-note{display:flex;height:66px;margin:0 16px;padding:0 14px;align-items:center;gap:10px;color:#82a7b8;border:1px solid rgba(67,145,175,.14);border-radius:6px;background:#0a263685;font-size:12px}.boundary-note svg{color:#59dcb3}.monitoring-chart-panel{grid-column:1;grid-row:2}.monitoring-profile-chart{width:100%;height:198px}.site-list-panel{grid-column:2;grid-row:2}.site-list-head,.site-monitor-list>div{display:grid;grid-template-columns:minmax(0,1.35fr) .72fr .72fr .72fr .9fr;align-items:center;gap:4px}.site-list-head{height:28px;padding:0 12px;color:#4e7487;font-size:10px}.site-monitor-list{height:172px;overflow-y:auto}.site-monitor-list>div{min-height:32px;padding:0 12px;color:#7397a8;border-top:1px solid rgba(71,133,157,.1);font-size:10px}.site-monitor-list strong{display:block;min-width:0;overflow:hidden;color:#b9dce7;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.site-monitor-list em{color:#69b7cf;font-style:normal}.site-monitor-list>div.risk em{color:#ff9a70}.control-context{display:flex;height:56px;padding:0 16px;align-items:center;justify-content:space-between;border:1px solid rgba(67,155,193,.2);border-radius:7px;background:#071828b3}.control-context>div:first-child{display:flex;align-items:baseline;gap:12px}.control-context span{color:#668a9c;font-size:12px}.control-context strong{color:#e3f9ff;font-size:18px}.control-context em{color:#668a9c;font-size:12px;font-style:normal}.context-tags{display:flex;gap:7px}.context-tags span{padding:5px 10px;color:#8cc5d8;border:1px solid rgba(66,154,188,.2);border-radius:4px;background:#103e5247}.control-kpis{margin-top:10px;grid-template-columns:repeat(5,1fr);gap:10px}.control-kpis .kpi-card{height:88px;padding:10px 14px}.control-kpis .kpi-body strong{font-size:25px}.control-kpis .kpi-card:first-child .kpi-body strong{font-family:inherit;font-size:20px}.control-kpis .kpi-card:first-child .kpi-body small{display:block;margin-top:3px;color:var(--tone);font-size:15px;font-weight:700;line-height:1.2;text-shadow:0 0 10px color-mix(in srgb,var(--tone) 38%,transparent);white-space:nowrap}.control-kpis .kpi-card.orange .kpi-body small,.control-kpis .kpi-card.red .kpi-body small{animation:control-summary-pulse 1.2s ease-in-out infinite}.control-process{display:flex;height:76px;margin-top:10px;padding:0 24px;align-items:center;justify-content:center;gap:20px;border:1px solid rgba(66,151,185,.2);border-radius:7px;background:#061827b8}.control-process>div{display:grid;min-width:225px;grid-template-columns:39px 1fr;grid-template-rows:22px 19px;align-items:center;column-gap:10px;opacity:.46}.control-process>div.active{opacity:1}.control-process>div>span{display:grid;width:38px;height:38px;grid-row:1 / 3;place-items:center;color:#5d91a7;border:1px solid rgba(75,147,176,.25);border-radius:50%;background:#0b2d3fb8}.control-process>div.active>span{color:#52d6fa;border-color:#48d1f67a}.control-process>div.current>span{animation:control-node-pulse 1.4s infinite}.control-process strong{color:#cbeaf3;font-size:13px}.control-process small{color:#577b8d;font-size:12px}.control-process>svg{color:#315e72}.control-grid{display:grid;height:638px;margin-top:10px;grid-template-columns:minmax(0,1fr) 520px;gap:12px}.dispatch-panel{min-width:0}.control-state.idle{color:#78a3b4}.control-state.planning,.control-state.dispatching,.control-state.executing,.control-state.validating{color:#52d8ff;border-color:#52d8ff59}.control-state.complete{color:#55e4b6;border-color:#55e4b659}.dispatch-stage{position:relative;height:583px;padding:14px 22px 16px}.cloud-controller,.edge-controller{position:absolute;display:flex;left:50%;width:400px;height:68px;padding:0 15px;align-items:center;gap:13px;border:1px solid rgba(70,166,202,.28);border-radius:7px;background:#0a3145b8;transform:translate(-50%)}.cloud-controller{top:12px}.edge-controller{top:128px}.cloud-controller>svg,.edge-controller>svg{color:#4ed6fc}.cloud-controller>div,.edge-controller>div{display:flex;flex-direction:column}.cloud-controller small,.edge-controller small{color:#608699;font-size:12px}.cloud-controller strong,.edge-controller strong{margin:2px 0;color:#dff8ff;font-size:14px}.cloud-controller span,.edge-controller span{color:#6ea6b9;font-size:12px}.command-link{position:absolute;top:80px;left:50%;width:270px;height:48px;transform:translate(-50%)}.command-link i{position:absolute;top:0;bottom:0;left:calc(50% - 13px);width:27px}.command-link i:before,.command-link i:after{position:absolute;top:0;bottom:0;width:1px;content:"";background:repeating-linear-gradient(to bottom,#3e9dbc 0 5px,transparent 5px 10px)}.command-link i:before{left:0;animation:communication-flow-down .7s linear infinite}.command-link i:after{right:0;background-color:transparent;background-image:repeating-linear-gradient(to bottom,#48b99a 0 5px,transparent 5px 10px);animation:communication-flow-up .7s linear infinite}.command-link span{position:absolute;display:flex;align-items:center;gap:4px;color:#5f91a5;background:#071a29;font-size:12px;white-space:nowrap}.command-link .downlink{top:15px;right:calc(50% + 23px)}.command-link .downlink:after{color:#4ca9c6;content:"↓"}.command-link .uplink{top:15px;left:calc(50% + 23px)}.command-link .uplink:before{color:#55c9aa;content:"↑"}.dispatch-stage.dispatching .command-link:after{position:absolute;top:0;left:calc(50% - 17px);width:8px;height:8px;border-radius:50%;content:"";background:#56dcff;box-shadow:0 0 12px #56dcff;animation:command-travel-down .8s infinite linear}.dispatch-stage.validating .command-link:before{position:absolute;bottom:0;left:calc(50% + 9px);width:8px;height:8px;border-radius:50%;content:"";background:#55e4b6;box-shadow:0 0 12px #55e4b6;animation:feedback-travel-up .8s infinite linear}.dispatch-stage.planning .cloud-controller{animation:controller-working 1.2s ease-in-out infinite}.dispatch-stage.validating .edge-controller{animation:controller-validating 1.2s ease-in-out infinite}.edge-bus{position:absolute;top:204px;right:54px;left:54px;height:35px}.edge-bus:before{position:absolute;top:-18px;left:50%;width:1px;height:27px;content:"";background:#3b93b2}.edge-bus span{position:absolute;top:8px;right:0;left:0;height:2px;background:linear-gradient(90deg,transparent,#3c9dbd 5%,#3c9dbd 95%,transparent)}.edge-bus em{position:absolute;top:14px;left:50%;padding:0 8px;color:#4e778a;background:#071a2a;font-size:12px;font-style:normal;transform:translate(-50%)}.control-site-grid{position:absolute;top:246px;right:22px;bottom:auto;left:22px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(2,153px);gap:18px 12px}.control-site{position:relative;min-width:0;padding:10px 10px 8px;overflow:hidden;border:1px solid rgba(69,139,166,.18);border-radius:6px;background:#061b2abd}.control-site:before{position:absolute;top:-12px;left:50%;width:1px;height:12px;content:"";background:#347d99}.control-site.targeted{border-color:#4ec1e37a;background:#0a3749c2}.control-site.executing{border-color:#ffb454b3;box-shadow:inset 0 0 24px #ffa03e17,0 0 18px #ffa03e14}.control-site.validating{border-color:#55e4b67a;background:#0b3e3b57;animation:control-site-validating 1.2s ease-in-out infinite}.control-site.completed{border-color:#55e4b694;background:#0b3e3b7a}.control-site-head{display:flex;height:38px;flex-direction:column}.control-site-name{display:-webkit-box;overflow:hidden;color:#8eafbc;font-size:12px;font-weight:400;line-height:1.25;-webkit-box-orient:vertical;-webkit-line-clamp:2}.control-site-power{display:flex;height:49px;align-items:baseline;gap:4px}.control-site-power span{color:#5c8193;font-size:12px}.control-site-power strong{margin-left:auto;color:#f1bd67;font-family:Consolas,monospace;font-size:28px;line-height:1}.control-site-power em{margin-left:2px;color:#678fa1;font-size:12px;font-style:normal}.planned-action{display:grid;min-height:42px;padding:4px;grid-template-columns:21px 1fr auto;grid-template-rows:1fr;align-items:center;color:#71cce6;border:0;background:transparent;font-size:12px}.planned-action svg{color:currentColor}.planned-action strong{color:currentColor;font-family:Consolas,monospace;font-size:13px}.planned-action.action-storage{color:#63dfba}.planned-action.action-inverter{color:#ffd06b}.planned-action.action-switch{color:#ff8d78}.planned-action.standby{display:flex;align-items:center;justify-content:center;color:#466c7e;background:transparent}.site-command-pulse{display:none;position:absolute;top:5px;right:5px;bottom:5px;left:5px;pointer-events:none;border:0;border-radius:5px;box-shadow:inset 0 0 20px #ffb05221}.control-site.executing .site-command-pulse{display:block;animation:site-execute 1.1s infinite}.control-side{display:grid;grid-template-rows:392px 234px;gap:12px}.strategy-content{height:337px}.strategy-totals{display:grid;height:82px;padding:12px 13px;grid-template-columns:repeat(3,1fr);gap:7px}.strategy-totals>div{display:grid;padding:7px 8px;grid-template-columns:22px 1fr;grid-template-rows:19px 18px;align-items:center;color:#50cce9;border:1px solid rgba(67,151,183,.15);border-radius:5px;background:#08263785}.strategy-totals svg{grid-row:1 / 3}.strategy-totals span{color:#608699;font-size:12px}.strategy-totals strong{color:#d4f1f8;font-size:12px}.strategy-action-list{height:244px;padding:0 13px 12px;overflow-y:auto}.strategy-action-list>div{display:grid;min-height:47px;padding:5px 9px;grid-template-columns:26px 1fr auto;align-items:center;border-top:1px solid rgba(69,133,159,.12)}.strategy-action-list>div>svg{color:#53cbea}.strategy-action-list>div>span{display:flex;flex-direction:column}.strategy-action-list strong{color:#bfe1ea;font-size:12px}.strategy-action-list small{color:#55798b;font-size:12px}.strategy-action-list em{color:#ffbd67;font-family:Consolas,monospace;font-size:12px;font-style:normal}.strategy-empty{display:flex;height:337px;align-items:center;justify-content:center;flex-direction:column;color:#55dcb2}.strategy-empty strong{margin:14px 0 5px;color:#cbeaf3;font-size:15px}.strategy-empty span{color:#5c8193;font-size:12px}.effect-comparison{display:grid;height:111px;padding:15px 18px 10px;grid-template-columns:1fr 28px 1fr;align-items:center;gap:8px}.effect-comparison>div{display:flex;flex-direction:column}.effect-comparison span{color:#64899b;font-size:12px}.effect-comparison strong{color:#e2f8ff;font-family:Consolas,monospace;font-size:24px}.effect-comparison em{margin-left:3px;color:#6191a5;font-size:12px;font-style:normal}.effect-comparison i{height:5px;overflow:hidden;border-radius:4px;background:#3e5d6c52}.effect-comparison b{display:block;height:100%;background:#ff806a;transition:width .5s ease}.effect-comparison b.after{background:#55e4b6}.effect-comparison>svg{color:#426d7e}.automatic-control-status{display:flex;width:calc(100% - 36px);height:48px;margin:3px 18px 0;padding:0 14px;align-items:center;gap:9px;color:#79dfff;border:1px solid rgba(61,197,234,.34);border-radius:6px;background:#12536b42}.automatic-control-status>div{display:flex;min-width:0;flex-direction:column}.automatic-control-status strong{font-size:12px}.automatic-control-status small{overflow:hidden;color:#6c98aa;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.automatic-control-status.idle{color:#7da5b5;border-color:#45839b29;background:#07233280}.automatic-control-status.complete,.automatic-control-status.normal{color:#9fe8d1;border-color:#55e4b659;background:#12655047}.automatic-control-status.complete small,.automatic-control-status.normal small{color:#72bca5}.button-spinner{width:16px;height:16px;border:2px solid rgba(78,154,181,.3);border-top-color:#57d7fb;border-radius:50%;animation:spinner .8s linear infinite}@keyframes command-travel-down{0%{top:0}to{top:calc(100% - 8px)}}@keyframes feedback-travel-up{0%{bottom:0}to{bottom:calc(100% - 8px)}}@keyframes communication-flow-down{0%{background-position-y:0}to{background-position-y:10px}}@keyframes communication-flow-up{0%{background-position-y:10px}to{background-position-y:0}}@keyframes site-execute{0%,to{opacity:.25;transform:scale(.98)}50%{opacity:.9;transform:scale(1)}}@keyframes control-node-pulse{0%,to{box-shadow:0 0 4px #3fcbf01f}50%{box-shadow:0 0 20px #3fcbf061}}@keyframes controller-working{0%,to{border-color:#46a6ca47;box-shadow:0 0 #46cbef00}50%{border-color:#46cbefad;box-shadow:0 0 22px #46cbef24}}@keyframes controller-validating{0%,to{border-color:#55e4b647;box-shadow:0 0 #55e4b600}50%{border-color:#55e4b6ad;box-shadow:0 0 22px #55e4b624}}@keyframes control-site-validating{0%,to{opacity:.72}50%{opacity:1}}@keyframes control-summary-pulse{0%,to{opacity:.72}50%{opacity:1}}@keyframes spinner{to{transform:rotate(360deg)}}.monitoring-grid{height:830px;grid-template-rows:550px 268px}.pv-network-stage{height:495px}.monitor-boundary{height:306px}.boundary-note{height:76px}.monitoring-profile-chart{height:210px}.site-monitor-list{height:184px}.control-grid{height:690px}.dispatch-stage{height:635px}.control-side{grid-template-rows:423px 255px}.strategy-content,.strategy-empty{height:368px}.strategy-action-list{height:275px}.effect-comparison{height:130px}.panel-heading h2{font-size:17px}.section-index,.data-tag,.control-state,.risk-badge{font-size:13px}.kpi-body>span{font-size:14px}.kpi-body small{font-size:13px}.site-monitor-head em,.site-source-row,.control-site-power span,.control-site-power em{font-size:12px}.network-source,.network-transformer small,.network-transformer span,.boundary-note{font-size:13px}.site-list-head{font-size:12px}.site-monitor-list>div{min-height:36px;font-size:12px}.site-monitor-list strong{font-size:13px}.planned-action,.strategy-totals span,.strategy-action-list small{font-size:12px}.planned-action strong,.strategy-totals strong,.strategy-action-list strong,.strategy-action-list em{font-size:13px}.cloud-controller small,.edge-controller small,.cloud-controller span,.edge-controller span,.command-link span,.edge-bus em{font-size:12px}.cloud-controller strong,.edge-controller strong{font-size:16px}.control-process strong{font-size:15px}.control-process small{font-size:12px}
