.vsb{position:fixed;top:0;left:0;bottom:0;width:80px;background:#0a0f17;border-right:1px solid hsla(0,0%,100%,.06);z-index:1000;display:flex;flex-direction:column;box-sizing:border-box;font-family:"Inter",sans-serif}.vsb-nav{display:flex;flex-direction:column;padding:14px 0;gap:4px}.vsb-item{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:10px 6px;margin:0 8px;border-radius:8px;text-decoration:none;color:hsla(0,0%,100%,.65);cursor:pointer;transition:background-color .18s ease,color .18s ease;user-select:none}.vsb-item:hover{background:hsla(0,0%,100%,.04);color:#fff}.vsb-item.is-active{background:rgba(0,229,255,.08);color:#fff}.vsb-item.is-active::before{content:"";position:absolute;left:-8px;top:50%;transform:translateY(-50%);width:3px;height:22px;background:#00e5ff;border-radius:0 3px 3px 0}.vsb-item.is-active .vsb-icon{color:#00e5ff}.vsb-item.is-active .vsb-label{font-weight:700}.vsb-icon{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;color:inherit}.vsb-icon svg{width:100%;height:100%}.vsb-label{font-size:10px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:inherit;line-height:1}.vsb-sep{border:none;border-top:1px solid hsla(0,0%,100%,.06);margin:0 10px 4px}@media(min-resolution: 1.25dppx)and (max-height: 920px){.vsb-nav{padding:9px 0;gap:3px}.vsb-item{padding:7px 5px;gap:3px}.vsb-icon{width:20px;height:20px}.vsb-label{font-size:9px;letter-spacing:.3px}.vsb-item.is-active::before{height:18px}}:root{--ems-bg: #0A0F17;--ems-bg-2: #0e1420;--ems-bg-3: #060a11;--ems-panel-bg: #0e141e;--ems-panel-bg-2: #141b28;--ems-panel-border: rgba(255, 255, 255, 0.06);--ems-panel-border-strong: rgba(255, 255, 255, 0.1);--ems-text: #ffffff;--ems-text-muted: rgba(255, 255, 255, 0.55);--ems-text-dim: rgba(255, 255, 255, 0.35);--ems-accent: #00E5FF;--ems-accent-2: #00B0FF;--ems-ok: #2ECC71;--ems-warn: #F1C40F;--ems-alert: #E74C3C;--ems-info: #00B0FF;--ems-purple: #9B59B6;--ems-green: #2ECC71}html,body{margin:0;padding:0;height:100%;background:var(--ems-bg);font-family:"Inter",sans-serif;color:var(--ems-text);-webkit-font-smoothing:antialiased}body.page-ems{position:relative;display:flex;flex-direction:column;gap:12px;width:100%;height:100vh;background:#0a0f17;padding:14px 14px 14px 94px;box-sizing:border-box;overflow:hidden}.ems-topbar{flex:0 0 auto;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:18px;padding:10px 16px;background:var(--ems-panel-bg);border:1px solid var(--ems-panel-border);border-radius:10px;box-shadow:0 4px 16px rgba(0,0,0,.25),inset 0 1px 0 hsla(0,0%,100%,.03)}.ems-topbar-title{display:flex;flex-direction:column;line-height:1.15}.ems-topbar-title .ems-topbar-eyebrow{font-size:10.5px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:var(--ems-accent)}.ems-topbar-title h1{margin:2px 0 0;font-size:17px;font-weight:800;letter-spacing:.4px;color:#fff}.ems-legend{display:flex;align-items:center;gap:16px;padding:0 18px;border-left:1px solid hsla(0,0%,100%,.07);border-right:1px solid hsla(0,0%,100%,.07)}.ems-legend-item{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:600;color:var(--ems-text-muted)}.ems-legend-dot{width:9px;height:9px;border-radius:50%}.ems-legend-dot.state-ok{background:var(--ems-ok);box-shadow:0 0 7px var(--ems-ok)}.ems-legend-dot.state-warn{background:var(--ems-warn);box-shadow:0 0 7px var(--ems-warn)}.ems-legend-dot.state-alert{background:var(--ems-alert);box-shadow:0 0 7px var(--ems-alert)}.ems-legend-dot.state-off{background:hsla(0,0%,100%,.3)}.ems-demand{display:flex;flex-direction:column;align-items:flex-end;padding:4px 16px;background:linear-gradient(135deg, rgba(0, 229, 255, 0.1), rgba(0, 229, 255, 0.02));border:1px solid rgba(0,229,255,.22);border-radius:9px}.ems-demand .ems-demand-label{font-size:10px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--ems-text-muted)}.ems-demand .ems-demand-val{font-family:"JetBrains Mono",monospace;color:#fff;line-height:1;margin-top:3px}.ems-demand .ems-demand-val strong{font-size:24px;font-weight:700;color:var(--ems-accent)}.ems-demand .ems-demand-val small{font-size:12px;margin-left:4px;color:var(--ems-text-muted)}.ems-grid{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:1.9fr 1fr;gap:14px}.ems-panel{background:var(--ems-panel-bg);border:1px solid var(--ems-panel-border);border-radius:12px;overflow:hidden;box-shadow:0 4px 16px rgba(0,0,0,.2);display:flex;flex-direction:column;min-height:0}.ems-panel-head{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--ems-panel-border);flex-shrink:0}.ems-panel-head .ems-panel-title{font-size:13px;font-weight:800;letter-spacing:.4px;color:#fff;text-transform:uppercase}.ems-panel-head .ems-panel-hint{font-size:11px;color:var(--ems-text-dim);font-weight:500}.ems-panel-head .ems-panel-tools{margin-left:auto;display:flex;align-items:center;gap:8px}.ems-viewtoggle{display:inline-flex;background:hsla(0,0%,100%,.04);border:1px solid hsla(0,0%,100%,.07);border-radius:7px;overflow:hidden}.ems-view-btn{padding:5px 12px;background:rgba(0,0,0,0);border:none;color:var(--ems-text-muted);font-family:inherit;font-size:11px;font-weight:700;letter-spacing:.5px;cursor:pointer;transition:background .18s ease,color .18s ease}.ems-view-btn.is-active{background:rgba(0,229,255,.16);color:var(--ems-accent)}.ems-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:28px;background:hsla(0,0%,100%,.04);border:1px solid hsla(0,0%,100%,.07);border-radius:7px;color:var(--ems-text-muted);cursor:pointer;transition:all .18s ease}.ems-icon-btn svg{width:15px;height:15px}.ems-icon-btn:hover{color:#fff;border-color:var(--ems-accent)}.ems-canvas{min-width:0}.ems-stage{position:relative;flex:1 1 auto;min-height:0;overflow:hidden;background:radial-gradient(120% 90% at 50% 0%, rgba(0, 229, 255, 0.05), transparent 55%),linear-gradient(180deg, #0c121d 0%, #080d15 100%)}.ems-stage-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255, 255, 255, 0.035) 1px, transparent 1px),linear-gradient(90deg, rgba(255, 255, 255, 0.035) 1px, transparent 1px);background-size:34px 34px;pointer-events:none;mask-image:radial-gradient(130% 110% at 50% 40%, #000 60%, transparent 100%)}.ems-wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}@keyframes ems-flow{to{stroke-dashoffset:-18}}.ems-wire{fill:none;stroke-width:2;stroke-dasharray:5 4;animation:ems-flow .9s linear infinite}.flow-cyan{stroke:var(--ems-accent);filter:drop-shadow(0 0 3px rgba(0, 229, 255, 0.55))}.flow-green{stroke:var(--ems-ok);filter:drop-shadow(0 0 3px rgba(46, 204, 113, 0.5))}.flow-amber{stroke:var(--ems-warn);filter:drop-shadow(0 0 3px rgba(241, 196, 15, 0.45))}.flow-off{stroke:hsla(0,0%,100%,.16);stroke-dasharray:3 6;animation:none;filter:none}.flow-tie{stroke:hsla(0,0%,100%,.3);stroke-dasharray:2 4;stroke-width:1.6;animation:none;filter:none}.flow-tie.is-closed{stroke:var(--ems-accent);stroke-dasharray:5 4;animation:ems-flow .7s linear infinite;filter:drop-shadow(0 0 4px rgba(0, 229, 255, 0.6))}.ems-node{position:absolute;transform:translate(-50%, -50%);z-index:3;box-sizing:border-box}.ems-node-grid{display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--ems-accent)}.ems-node-grid .ems-grid-icon svg{width:38px;height:38px;filter:drop-shadow(0 0 8px rgba(0, 229, 255, 0.35))}.ems-node-grid .ems-node-meta{text-align:center;line-height:1.15}.ems-node-grid .ems-node-name{display:block;font-size:11px;font-weight:800;letter-spacing:.6px;color:#fff}.ems-node-grid .ems-node-sub{display:block;font-size:10px;color:var(--ems-text-muted);font-family:"JetBrains Mono",monospace}.ems-substation{width:210px;padding:11px 13px;background:linear-gradient(160deg, rgba(20, 27, 40, 0.96), rgba(12, 17, 26, 0.96));border:1px solid hsla(0,0%,100%,.1);border-radius:11px;cursor:pointer;backdrop-filter:blur(4px);box-shadow:0 8px 24px rgba(0,0,0,.4);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;--st-c: var(--ems-ok)}.ems-substation.state-ok{--st-c: var(--ems-ok)}.ems-substation.state-warn{--st-c: var(--ems-warn)}.ems-substation.state-alert{--st-c: var(--ems-alert)}.ems-substation::before{content:"";position:absolute;inset:0;border-radius:11px;border-top:2px solid var(--st-c);pointer-events:none;opacity:.85}.ems-substation:hover{transform:translate(-50%, calc(-50% - 2px));border-color:var(--st-c);box-shadow:0 12px 30px rgba(0,0,0,.5)}.ems-substation.is-selected{border-color:var(--st-c);box-shadow:0 0 0 1px var(--st-c),0 0 22px color-mix(in srgb, var(--st-c) 40%, transparent)}.ems-substation .ems-sub-head{display:flex;align-items:center;gap:8px;margin-bottom:5px}.ems-substation .ems-sub-status{width:9px;height:9px;border-radius:50%;background:var(--st-c);box-shadow:0 0 8px var(--st-c);flex-shrink:0}.ems-substation .ems-sub-id{font-size:14px;font-weight:800;color:#fff;letter-spacing:.5px}.ems-substation .ems-sub-icon{margin-left:auto;color:var(--st-c)}.ems-substation .ems-sub-icon svg{width:22px;height:22px}.ems-substation .ems-sub-name{display:block;font-size:11px;color:var(--ems-text-muted);margin-bottom:7px}.ems-substation .ems-sub-load{font-size:11px;color:var(--ems-text-muted);margin-bottom:4px}.ems-substation .ems-sub-load .ems-sub-load-pct{font-family:"JetBrains Mono",monospace;font-size:14px;font-weight:700;color:var(--st-c)}.ems-substation .ems-sub-bar{height:5px;background:hsla(0,0%,100%,.07);border-radius:3px;overflow:hidden;margin-bottom:8px}.ems-substation .ems-sub-bar-fill{display:block;height:100%;background:linear-gradient(90deg, var(--st-c), color-mix(in srgb, var(--st-c) 55%, #fff));border-radius:3px;transition:width .5s ease}.ems-substation .ems-sub-foot{display:flex;align-items:center;justify-content:space-between;font-family:"JetBrains Mono",monospace;font-size:10.5px;color:var(--ems-text-muted)}.ems-substation .ems-sub-foot .ems-sub-pf strong{color:#fff}.ems-line-label{z-index:2;text-align:center;line-height:1.1;pointer-events:none}.ems-line-label span{display:block;font-size:9.5px;font-weight:700;letter-spacing:.8px;color:var(--ems-text-muted)}.ems-line-label small{display:block;font-size:9px;color:var(--ems-text-dim);font-family:"JetBrains Mono",monospace}.ems-zone{width:16.5%;min-width:150px;padding:9px 11px;background:rgba(14,20,30,.7);border:1px dashed hsla(0,0%,100%,.14);border-radius:10px;cursor:pointer;transition:border-color .18s ease,background .18s ease,box-shadow .18s ease}.ems-zone:hover{border-color:var(--ems-accent);background:rgba(0,229,255,.05)}.ems-zone.is-selected{border-style:solid;border-color:var(--ems-accent);box-shadow:0 0 0 1px var(--ems-accent),0 0 20px rgba(0,229,255,.3)}.ems-zone.is-dimmed{background:rgba(14,20,30,.55)}.ems-zone .ems-zone-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ems-zone .ems-zone-name{font-size:10.5px;font-weight:800;letter-spacing:.4px;color:#fff}.ems-zone .ems-zone-state{font-family:"JetBrains Mono",monospace;font-size:10px;font-weight:700;color:var(--ems-ok);background:rgba(46,204,113,.12);border:1px solid rgba(46,204,113,.25);border-radius:9px;padding:1px 7px}.ems-zone .ems-zone-state.is-eco{color:var(--ems-warn);background:rgba(241,196,15,.12);border-color:rgba(241,196,15,.3)}.ems-zone .ems-zone-towers{display:flex;flex-wrap:wrap;gap:7px 9px}.ems-tower{--b: 1;color:hsla(0,0%,100%,.22);line-height:0;transition:color .25s ease,opacity .25s ease,filter .25s ease}.ems-tower svg{width:16px;height:16px}.ems-tower.is-on{color:var(--ems-accent);opacity:calc(.35 + .65*var(--b));filter:drop-shadow(0 0 calc(5px * var(--b)) rgba(0, 229, 255, 0.7))}.ems-tower.is-off{opacity:.5}.ems-tower.is-eco.is-on{color:var(--ems-warn);filter:drop-shadow(0 0 calc(4px * var(--b)) rgba(241, 196, 15, 0.6))}.ems-muelle{width:15%;min-width:138px;display:flex;flex-direction:column;align-items:center;gap:5px;padding:9px 10px;background:linear-gradient(165deg, rgba(20, 27, 40, 0.92), rgba(12, 17, 26, 0.92));border:1px solid hsla(0,0%,100%,.09);border-radius:10px;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.ems-muelle:hover{transform:translate(-50%, calc(-50% - 2px));border-color:var(--ems-accent)}.ems-muelle.is-selected{border-color:var(--ems-accent);box-shadow:0 0 0 1px var(--ems-accent),0 0 20px rgba(0,229,255,.3)}.ems-muelle.is-connected{border-color:rgba(46,204,113,.4)}.ems-muelle .ems-muelle-ship{color:hsla(0,0%,100%,.75);line-height:0;transition:color .25s ease,filter .25s ease,opacity .25s ease}.ems-muelle .ems-muelle-ship svg{width:44px;height:22px}.ems-muelle .ems-muelle-ship.is-empty{opacity:.18}.ems-muelle.is-connected .ems-muelle-ship{color:var(--ems-ok);filter:drop-shadow(0 0 7px rgba(46, 204, 113, 0.55))}.ems-muelle .ems-muelle-body{width:100%;text-align:center;line-height:1.2}.ems-muelle .ems-muelle-name{display:block;font-size:10px;font-weight:800;letter-spacing:.5px;color:#fff}.ems-muelle .ems-ops-row{display:inline-flex;align-items:center;gap:5px;margin:3px 0 1px}.ems-muelle .ems-ops-plug{color:var(--ems-text-dim);line-height:0}.ems-muelle .ems-ops-plug svg{width:14px;height:14px}.ems-muelle .ems-ops-plug.is-on{color:var(--ems-ok);filter:drop-shadow(0 0 5px rgba(46, 204, 113, 0.6))}.ems-muelle .ems-ops-id{font-family:"JetBrains Mono",monospace;font-size:11px;font-weight:700;color:var(--ems-text-muted)}.ems-muelle .ems-ops-state{display:block;font-size:9.5px;font-weight:600;color:var(--ems-text-dim)}.ems-muelle.is-connected .ems-ops-state{color:var(--ems-ok)}.ems-muelle .ems-ops-mw{display:block;font-family:"JetBrains Mono",monospace;font-size:11px;font-weight:700;color:var(--ems-accent)}.ems-right{display:flex;flex-direction:column;gap:14px;min-height:0;min-width:0}.ems-card-consumo{flex:0 0 auto}.ems-consumo-body{display:grid;grid-template-columns:auto 1fr;gap:14px;padding:13px 14px;align-items:center}.ems-consumo-main{display:flex;flex-direction:column}.ems-consumo-num{font-family:"JetBrains Mono",monospace;line-height:1;color:#fff}.ems-consumo-num span{font-size:34px;font-weight:700}.ems-consumo-num small{font-size:14px;color:var(--ems-text-muted);margin-left:5px}.ems-consumo-kwh{font-size:11px;color:var(--ems-text-muted);margin-top:6px;font-family:"JetBrains Mono",monospace}.ems-consumo-trend{display:inline-flex;align-items:center;gap:4px;margin-top:8px;font-size:12px;font-weight:700;color:var(--ems-ok)}.ems-consumo-trend svg{width:14px;height:14px}.ems-consumo-trend span{color:var(--ems-text-dim);font-weight:500}.ems-consumo-trend.up{color:var(--ems-ok)}.ems-consumo-chart{position:relative;height:96px;min-width:0}.ems-consumo-chart canvas{display:block}.ems-card-row{flex:0 0 auto;display:grid;grid-template-columns:1fr 1fr;gap:14px}.ems-green-body{display:flex;align-items:center;gap:12px;padding:12px 14px}.ems-green-donut{position:relative;width:78px;height:78px;flex-shrink:0}.ems-green-donut svg{width:100%;height:100%}.ems-green-donut .ems-donut-track{fill:none;stroke:hsla(0,0%,100%,.08);stroke-width:7}.ems-green-donut .ems-donut-fill{fill:none;stroke-width:7;stroke-linecap:round;transition:stroke-dashoffset .8s cubic-bezier(0.16, 1, 0.3, 1)}.ems-green-donut .ems-donut-fill.green{stroke:var(--ems-ok);filter:drop-shadow(0 0 5px rgba(46, 204, 113, 0.5))}.ems-green-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:"JetBrains Mono",monospace;color:#fff}.ems-green-center span{font-size:21px;font-weight:700}.ems-green-center small{font-size:11px;color:var(--ems-text-muted)}.ems-green-meta{display:flex;flex-direction:column;min-width:0}.ems-green-label{font-size:11px;color:var(--ems-text-muted)}.ems-green-val{font-size:13px;color:#fff;margin-top:3px}.ems-green-val strong{color:var(--ems-ok);font-family:"JetBrains Mono",monospace;font-size:16px}.ems-carbon-body{display:flex;align-items:center;gap:12px;padding:12px 14px}.ems-carbon-leaf{color:var(--ems-ok);flex-shrink:0}.ems-carbon-leaf svg{width:42px;height:42px;filter:drop-shadow(0 0 8px rgba(46, 204, 113, 0.4))}.ems-carbon-meta{display:flex;flex-direction:column;min-width:0}.ems-carbon-num{font-family:"JetBrains Mono",monospace;line-height:1;color:#fff}.ems-carbon-num span{font-size:24px;font-weight:700}.ems-carbon-num small{font-size:11px;color:var(--ems-text-muted);margin-left:4px}.ems-carbon-sub{font-size:11px;color:var(--ems-text-muted);margin-top:4px}.ems-carbon-trees{font-size:11px;color:var(--ems-text-muted);margin-top:2px}.ems-carbon-trees strong{color:var(--ems-ok)}.ems-card-alerts{flex:1 1 auto;min-height:0}.ems-alerts-count{margin-left:auto;font-family:"JetBrains Mono",monospace;font-size:11px;font-weight:700;color:var(--ems-alert);background:rgba(231,76,60,.14);border:1px solid rgba(231,76,60,.3);border-radius:9px;padding:1px 8px}.ems-alerts-list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:6px}.ems-alert{position:relative;display:grid;grid-template-columns:3px 1fr auto;gap:10px;align-items:center;padding:8px 11px 8px 8px;background:hsla(0,0%,100%,.025);border:1px solid hsla(0,0%,100%,.05);border-radius:8px;--sev-c: var(--ems-info)}.ems-alert.sev-warn{--sev-c: var(--ems-warn)}.ems-alert.sev-alert{--sev-c: var(--ems-alert)}.ems-alert.sev-info{--sev-c: var(--ems-info)}.ems-alert .ems-alert-bar{width:3px;height:100%;min-height:26px;border-radius:3px;background:var(--sev-c);box-shadow:0 0 7px var(--sev-c)}.ems-alert .ems-alert-body{min-width:0;line-height:1.25}.ems-alert .ems-alert-title{display:block;font-size:12px;font-weight:600;color:#fff}.ems-alert .ems-alert-sub{display:block;font-size:10.5px;color:var(--ems-text-dim);margin-top:2px;font-family:"JetBrains Mono",monospace}.ems-alert .ems-alert-side{text-align:right;line-height:1.3}.ems-alert .ems-alert-time{display:block;font-size:10.5px;font-family:"JetBrains Mono",monospace;color:var(--ems-text-muted)}.ems-alert .ems-alert-sev{display:block;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--sev-c)}.ems-console{flex:0 0 auto;height:200px;min-height:0;display:grid;grid-template-columns:270px 1fr 320px;gap:0;background:var(--ems-panel-bg);border:1px solid var(--ems-panel-border);border-top:1px solid rgba(0,229,255,.25);border-radius:12px;box-shadow:0 -6px 26px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.03);overflow:hidden;transition:border-color .3s ease}.ems-console.is-active{border-top-color:rgba(0,229,255,.5)}.ems-console-asset{padding:14px;border-right:1px solid var(--ems-panel-border);display:flex;flex-direction:column;gap:10px}.ems-console-eyebrow{font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--ems-text-dim)}.ems-asset-card{display:flex;gap:12px;align-items:center;background:hsla(0,0%,100%,.02);border:1px solid hsla(0,0%,100%,.06);border-radius:10px;padding:12px;flex:1 1 auto}.ems-asset-icon{width:46px;height:46px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:rgba(0,229,255,.1);border:1px solid rgba(0,229,255,.25);color:var(--ems-accent);flex-shrink:0}.ems-asset-icon svg{width:26px;height:26px}.ems-asset-info{display:flex;flex-direction:column;gap:3px;min-width:0}.ems-asset-id{font-size:15px;font-weight:800;color:#fff;letter-spacing:.3px}.ems-asset-type{font-size:11px;color:var(--ems-text-muted)}.ems-asset-state{display:inline-flex;align-items:center;gap:6px;margin-top:2px}.ems-asset-dot{width:8px;height:8px;border-radius:50%;background:var(--ems-text-dim)}.ems-asset-state-label{font-size:11.5px;font-weight:700;color:var(--ems-text-muted)}.ems-console-controls{padding:14px 16px;border-right:1px solid var(--ems-panel-border);min-width:0;display:flex;align-items:stretch}.ems-ctrl-panel{width:100%}.ems-ctrl-panel[hidden]{display:none}.ems-ctrl-idle{display:flex;align-items:center;gap:14px;color:var(--ems-text-dim);font-size:13px;line-height:1.5}.ems-ctrl-idle svg{width:34px;height:34px;flex-shrink:0;color:rgba(0,229,255,.4)}.ems-ctrl-idle strong{color:var(--ems-text-muted);font-weight:700}.ems-ctrl-sub{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center}.ems-telemetry{display:grid;grid-template-columns:1fr 1fr;gap:10px 22px}.ems-tele-item{display:flex;flex-direction:column;gap:3px}.ems-tele-label{font-size:10px;color:var(--ems-text-dim);text-transform:uppercase;letter-spacing:.4px;font-weight:600}.ems-tele-val{font-family:"JetBrains Mono",monospace;font-size:15px;font-weight:700;color:#fff}.ems-tele-val.is-warn{color:var(--ems-warn)}.ems-tele-bar{height:4px;background:hsla(0,0%,100%,.08);border-radius:3px;overflow:hidden;margin-top:2px}.ems-tele-bar span{display:block;height:100%;background:var(--ems-ok);border-radius:3px;transition:width .3s ease,background .3s ease}.ems-tele-bar span.is-hot{background:var(--ems-alert)}.ems-ctrl-light{display:grid;grid-template-columns:auto 1fr auto;gap:20px;align-items:center}.ems-light-info{display:flex;flex-direction:column;gap:3px}.ems-light-occ-label{font-size:10px;color:var(--ems-text-dim);text-transform:uppercase;letter-spacing:.4px;font-weight:600}.ems-light-occ{font-size:14px;font-weight:700;color:#fff}.ems-light-save{font-size:11px;color:var(--ems-text-muted);margin-top:4px}.ems-light-save strong{color:var(--ems-ok);font-family:"JetBrains Mono",monospace}.ems-dimmer{display:flex;flex-direction:column;gap:6px;min-width:0}.ems-dimmer-top{display:flex;justify-content:space-between;align-items:baseline;font-size:11px;color:var(--ems-text-muted);font-weight:600}.ems-dimmer-top .ems-dimmer-val{font-family:"JetBrains Mono",monospace;font-size:18px;font-weight:700;color:var(--ems-accent)}.ems-dimmer-range{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:4px;background:linear-gradient(90deg, var(--ems-accent), rgba(255, 255, 255, 0.1));outline:none;cursor:pointer}.ems-dimmer-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#fff;border:3px solid var(--ems-accent);box-shadow:0 0 8px rgba(0,229,255,.6);cursor:pointer}.ems-dimmer-range::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#fff;border:3px solid var(--ems-accent);cursor:pointer}.ems-ctrl-ops{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center}.ems-ops-detail{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center;min-width:0}.ems-ops-detail-rows{display:grid;grid-template-columns:1fr 1fr;gap:4px 20px;min-width:0}.ems-ops-row-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;border-bottom:1px dotted hsla(0,0%,100%,.07);padding-bottom:2px}.ems-ops-k{font-size:10.5px;color:var(--ems-text-dim);white-space:nowrap}.ems-ops-v{font-size:11.5px;font-weight:600;color:#fff;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ems-ops-sync{padding-left:18px;border-left:1px solid var(--ems-panel-border);display:flex;flex-direction:column;gap:6px;min-width:0}.ems-ops-sync-title{font-size:10px;color:var(--ems-text-dim);text-transform:uppercase;letter-spacing:.5px;font-weight:700}.ems-ops-sync-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 14px}.ems-sync-item{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--ems-text-muted)}.ems-sync-item i{width:11px;height:11px;border-radius:50%;border:1.5px solid hsla(0,0%,100%,.25);position:relative;flex-shrink:0;transition:all .25s ease}.ems-sync-item.is-ok{color:#fff}.ems-sync-item.is-ok i{border-color:var(--ems-ok);background:var(--ems-ok);box-shadow:0 0 6px rgba(46,204,113,.6)}.ems-sync-item.is-ok i::after{content:"";position:absolute;left:2.5px;top:.5px;width:3px;height:6px;border:solid #0a0f17;border-width:0 2px 2px 0;transform:rotate(45deg)}.ems-ops-sync-badge{align-self:flex-start;font-size:10px;font-weight:800;letter-spacing:.6px;color:var(--ems-text-dim);background:hsla(0,0%,100%,.05);border:1px solid hsla(0,0%,100%,.08);border-radius:6px;padding:2px 9px}.ems-ops-sync-badge.is-ok{color:var(--ems-ok);background:rgba(46,204,113,.12);border-color:rgba(46,204,113,.35)}.ems-ctrl-actions{display:flex;gap:10px;flex-shrink:0;flex-wrap:wrap}.ems-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;background:hsla(0,0%,100%,.03);border:1px solid hsla(0,0%,100%,.08);border-radius:9px;color:#fff;font-family:inherit;font-size:11.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;cursor:pointer;white-space:nowrap;transition:all .18s ease}.ems-btn svg{width:16px;height:16px}.ems-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 14px rgba(0,0,0,.35)}.ems-btn:disabled{opacity:.4;cursor:not-allowed}.ems-btn.btn-fan{background:rgba(0,176,255,.12);border-color:rgba(0,176,255,.35);color:#6fd0ff}.ems-btn.btn-bypass{background:rgba(241,196,15,.12);border-color:rgba(241,196,15,.35);color:#f3d35e}.ems-btn.btn-eco{background:rgba(46,204,113,.12);border-color:rgba(46,204,113,.35);color:#5fe39b}.ems-btn.btn-eco.is-active{background:var(--ems-ok);color:#06210f;border-color:var(--ems-ok);box-shadow:0 0 16px rgba(46,204,113,.4)}.ems-btn.btn-normal{background:hsla(0,0%,100%,.04)}.ems-btn.btn-normal.is-active{border-color:var(--ems-accent);color:var(--ems-accent)}.ems-btn.btn-authorize{background:rgba(46,204,113,.14);border-color:rgba(46,204,113,.4);color:#5fe39b}.ems-btn.btn-authorize:hover:not(:disabled){background:var(--ems-ok);color:#06210f}.ems-btn.btn-disconnect{background:rgba(231,76,60,.12);border-color:rgba(231,76,60,.35);color:#f0857a}.ems-btn.btn-limit{background:rgba(241,196,15,.1);border-color:rgba(241,196,15,.3);color:#f3d35e}.ems-btn.btn-limit.is-active{background:var(--ems-warn);color:#2a2400;border-color:var(--ems-warn)}.ems-console-log{display:flex;flex-direction:column;min-height:0;background:rgba(0,0,0,.18)}.ems-log-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--ems-panel-border);font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--ems-text-muted);flex-shrink:0}.ems-log-live{display:inline-flex;align-items:center;gap:5px;font-size:9.5px;font-weight:600;letter-spacing:.3px;text-transform:none;color:var(--ems-ok)}.ems-log-live-dot{width:7px;height:7px;border-radius:50%;background:var(--ems-ok);box-shadow:0 0 6px var(--ems-ok);animation:ems-blink 1.4s ease-in-out infinite}@keyframes ems-blink{0%,100%{opacity:1}50%{opacity:.35}}.ems-log-list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:8px 12px;display:flex;flex-direction:column;gap:4px;font-family:"JetBrains Mono",monospace}.ems-log-line{display:grid;grid-template-columns:auto auto 1fr;gap:8px;align-items:baseline;font-size:10.5px;line-height:1.35;animation:ems-log-in .3s ease}@keyframes ems-log-in{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}.ems-log-time{color:var(--ems-text-dim)}.ems-log-tag{font-weight:700;font-size:9px;letter-spacing:.3px;padding:1px 5px;border-radius:4px;text-transform:uppercase;white-space:nowrap}.ems-log-tag.tag-sys{color:var(--ems-info);background:rgba(0,176,255,.12)}.ems-log-tag.tag-usr{color:var(--ems-accent);background:rgba(0,229,255,.12)}.ems-log-tag.tag-ok{color:var(--ems-ok);background:rgba(46,204,113,.12)}.ems-log-tag.tag-warn{color:var(--ems-warn);background:rgba(241,196,15,.12)}.ems-log-msg{color:var(--ems-text-muted)}.ems-toast{position:fixed;right:22px;bottom:222px;z-index:2000;display:flex;gap:12px;align-items:flex-start;min-width:280px;max-width:380px;padding:14px 16px;background:var(--ems-panel-bg-2);border:1px solid var(--ems-panel-border-strong);border-radius:11px;box-shadow:0 12px 40px rgba(0,0,0,.55);transform:translateX(120%);opacity:0;transition:transform .4s cubic-bezier(0.16, 1, 0.3, 1),opacity .3s ease}.ems-toast.is-visible{transform:none;opacity:1}.ems-toast .ems-toast-icon{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;flex-shrink:0}.ems-toast .ems-toast-icon.icon-ok{background:rgba(46,204,113,.18);color:var(--ems-ok)}.ems-toast .ems-toast-icon.icon-warn{background:rgba(241,196,15,.18);color:var(--ems-warn)}.ems-toast .ems-toast-icon.icon-alert{background:rgba(231,76,60,.18);color:var(--ems-alert)}.ems-toast .ems-toast-title{font-size:13px;font-weight:700;color:#fff}.ems-toast .ems-toast-msg{font-size:11.5px;color:var(--ems-text-muted);margin-top:3px;line-height:1.4}.ems-toast.toast-ok{border-left:3px solid var(--ems-ok)}.ems-toast.toast-warn{border-left:3px solid var(--ems-warn)}.ems-toast.toast-alert{border-left:3px solid var(--ems-alert)}.ems-alerts-list::-webkit-scrollbar,.ems-log-list::-webkit-scrollbar{width:6px}.ems-alerts-list::-webkit-scrollbar-thumb,.ems-log-list::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.12);border-radius:3px}.ems-alerts-list::-webkit-scrollbar-track,.ems-log-list::-webkit-scrollbar-track{background:rgba(0,0,0,0)}.ems-stage-3d{position:absolute;inset:0;z-index:5;display:none;background:radial-gradient(58% 50% at 50% 80%, rgba(0, 229, 255, 0.12), transparent 70%),radial-gradient(120% 90% at 50% 0%, rgba(0, 229, 255, 0.05), transparent 55%),linear-gradient(180deg, #0c121d 0%, #05080d 100%)}.ems-stage-3d canvas{display:block;outline:none}.ems-stage.is-3d>.ems-wires,.ems-stage.is-3d>.ems-node{display:none !important}.ems-stage.is-3d .ems-stage-3d{display:block}.ems-3d-badge{position:absolute;left:14px;bottom:12px;z-index:6;font-size:11px;color:var(--ems-text-muted);background:rgba(10,15,23,.7);border:1px solid var(--ems-panel-border);border-radius:8px;padding:6px 11px;backdrop-filter:blur(4px);pointer-events:none}.ems-3d-badge strong{color:var(--ems-accent);font-weight:800;letter-spacing:.4px}.ems-3d-badge span{color:var(--ems-text-dim)}.ems-3d-loader{position:absolute;inset:0;z-index:7;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:rgba(8,12,19,.55);backdrop-filter:blur(2px)}.ems-3d-loader[hidden]{display:none}.ems-3d-spinner{width:42px;height:42px;border-radius:50%;border:3px solid rgba(0,229,255,.18);border-top-color:var(--ems-accent);animation:ems-spin .9s linear infinite;box-shadow:0 0 18px rgba(0,229,255,.25)}@keyframes ems-spin{to{transform:rotate(360deg)}}.ems-3d-loader-text{font-size:12.5px;color:var(--ems-text-muted);font-family:"JetBrains Mono",monospace;letter-spacing:.3px}html.is-iframe body.page-ems{font-size:14.5px}@media(max-height: 960px){.ems-grid{grid-template-columns:2.25fr 1fr}.ems-consumo-body{padding:10px 14px}.ems-consumo-chart{height:72px}.ems-green-body,.ems-carbon-body{padding:9px 12px}.ems-green-donut{width:64px;height:64px}.ems-console{height:168px;grid-template-columns:240px 1fr 290px}.ems-console-asset{padding:10px 12px;gap:6px}.ems-asset-card{padding:9px;gap:10px}.ems-asset-icon{width:40px;height:40px}.ems-asset-icon svg{width:22px;height:22px}.ems-console-controls{padding:10px 14px}.ems-ctrl-ops{grid-template-columns:1fr;gap:8px;align-items:stretch}.ems-ops-detail{gap:14px}.ems-ops-sync-grid{gap:3px 12px}.ems-ctrl-actions{gap:8px}.ems-btn{padding:8px 13px}.ems-substation{padding:9px 12px}}