:root{color-scheme:dark;--bg: #030813;--panel: rgba(4, 29, 48, .78);--panel-strong: rgba(5, 43, 72, .92);--line: rgba(60, 177, 255, .46);--cyan: #00eaff;--blue: #1d94ff;--green: #21e178;--yellow: #ffd64d;--red: #ff313d;--text: #f4fbff;--muted: #7aaed0}*{box-sizing:border-box}html,body{margin:0;height:100%;background:radial-gradient(ellipse at 50% -6%,rgba(70,157,214,.38),transparent 30%),radial-gradient(ellipse at 50% 40%,rgba(0,132,255,.16),transparent 42%),linear-gradient(rgba(34,118,182,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(34,118,182,.06) 1px,transparent 1px),var(--bg);background-size:auto,40px 40px,40px 40px,auto;color:var(--text);font-family:Microsoft YaHei,PingFang SC,Arial,sans-serif;letter-spacing:0;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}.login-gate{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:24px;background:linear-gradient(180deg,#020b16bd,#020a13f0),radial-gradient(ellipse at 50% 20%,rgba(0,234,255,.18),transparent 42%);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.login-gate.hidden{display:none}.login-panel{position:relative;width:min(420px,100%);border:1px solid rgba(95,211,255,.42);border-radius:8px;padding:30px;background:linear-gradient(180deg,#062b46f0,#031627f5),linear-gradient(90deg,rgba(0,234,255,.16),transparent 38%,rgba(33,225,120,.12));box-shadow:0 24px 60px #0000006b,inset 0 1px #d2f6ff1f}.login-close{position:absolute;top:10px;right:10px;width:30px;height:30px;border:1px solid rgba(125,204,255,.3);border-radius:4px;color:#8bd6ff;background:#072a44b8}.login-brand{display:grid;gap:8px;margin-bottom:26px}.login-brand span{width:fit-content;color:#93dc35;font-size:28px;font-weight:900;line-height:1}.login-brand strong{color:#f4fbff;font-size:22px;line-height:30px;text-shadow:0 0 18px rgba(109,199,255,.58)}.login-form{display:grid;gap:16px}.login-form label{display:grid;gap:8px;color:#9dcced;font-size:13px}.login-form input{width:100%;min-width:0;height:42px;border:1px solid rgba(83,189,255,.34);border-radius:6px;padding:0 12px;color:#f4fbff;background:#021322db;outline:none}.login-form input:focus{border-color:#00eaffd6;box-shadow:0 0 0 3px #00eaff1f}.login-error{min-height:18px;margin:-4px 0 0;color:#ff7b86;font-size:13px}.login-submit{height:44px;border:1px solid rgba(0,234,255,.72);border-radius:6px;color:#03101d;font-weight:800;background:linear-gradient(90deg,#00eaff,#21e178);box-shadow:0 0 22px #00eaff47}.auth-chip{position:fixed;top:18px;right:30px;z-index:42;display:inline-flex;align-items:center;gap:10px;min-width:0;max-width:220px;height:34px;padding:0 8px 0 12px;border:1px solid rgba(82,192,255,.38);border-radius:6px;color:#cef;background:#041d30d1;box-shadow:0 0 18px #1195d529}.auth-chip[hidden]{display:none}.auth-chip--guest{height:auto;padding:0;border:0;background:transparent;box-shadow:none}.auth-chip span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.auth-chip span[hidden]{display:none}.auth-chip button{flex:0 0 auto;height:24px;border:1px solid rgba(125,204,255,.36);border-radius:4px;color:#8bd6ff;background:#072a44db}@media(max-width:760px){.login-gate{padding:16px}.login-panel{padding:24px 18px}.login-brand strong{font-size:20px}.auth-chip{position:absolute;top:34px;right:12px;max-width:160px}}.app-shell{height:100vh;padding:0 30px;overflow:hidden}.topbar{height:68px;display:grid;grid-template-columns:90px 160px minmax(520px,1fr) 430px;align-items:start;gap:18px;position:relative;z-index:20;background:transparent}.topbar:before{content:"";position:absolute;inset:0 -30px -18px;z-index:-1;background:url(/moro_ems/assets/lanhu-header-shell-CPHnw_QM.png) center -24px / 1860px 92px no-repeat,linear-gradient(180deg,rgba(25,67,103,.58),rgba(13,42,72,.3) 54%,transparent 100%);filter:drop-shadow(0 14px 24px rgba(0,0,0,.26));pointer-events:none}.brand{padding-top:12px;color:#93dc35;font-weight:800;text-align:center}.brand-mark{font-size:26px;line-height:24px}.brand-name{color:#fff;font-size:14px;letter-spacing:3px}.timebox{padding-top:7px;color:#8cbde1}.timebox strong{display:block;color:#bfe8ff;font-size:24px;line-height:30px}.timebox span{font-size:14px}.title-frame{--title-frame-height: 56px;--title-h1-size: clamp(25px, 1.75vw, 31px);--title-h1-line: 1.18;--title-sub-size: 9px;--title-sub-spacing: 7px;height:var(--title-frame-height);position:relative;display:grid;align-content:center;justify-items:center;isolation:isolate;min-width:0;overflow:visible;padding:4px 102px 7px;text-align:center;background:linear-gradient(90deg,transparent 0%,rgba(11,53,88,.58) 11%,rgba(20,92,137,.7) 50%,rgba(11,53,88,.58) 89%,transparent 100%),linear-gradient(180deg,#9adcff2e,#00c7ff0a 54%,#000c1c1f);border-top:1px solid rgba(126,213,255,.58);border-bottom:2px solid rgba(128,207,255,.72);box-shadow:inset 0 1px #e3faff24,inset 0 -10px 24px #00d6ff14,0 10px 22px #0000002e}.title-frame:before,.title-frame:after{content:"";position:absolute;top:9px;bottom:9px;z-index:-1;width:84px;height:auto;border-top:3px solid rgba(110,198,255,.72);border-bottom:1px solid rgba(110,198,255,.36);transform:skew(-14deg);opacity:.78;background:linear-gradient(90deg,rgba(34,141,205,.36),transparent)}.title-frame:before{left:28px;border-left:3px solid rgba(110,198,255,.72)}.title-frame:after{right:28px;border-right:3px solid rgba(110,198,255,.72);background:linear-gradient(270deg,rgba(34,141,205,.36),transparent)}.title-frame h1{margin:0;max-width:100%;overflow:visible;font-size:var(--title-h1-size);line-height:var(--title-h1-line);font-weight:900;position:relative;z-index:1;white-space:nowrap;text-shadow:0 0 12px rgba(109,199,255,.86),0 2px 0 rgba(0,31,62,.42)}.title-frame small{display:block;max-width:100%;overflow:visible;color:#dff4ff;font-size:var(--title-sub-size);letter-spacing:var(--title-sub-spacing);line-height:1.4;position:relative;z-index:1;white-space:nowrap}.top-actions{display:flex;justify-content:flex-end;align-items:center;gap:12px;padding-top:9px}.top-actions button{min-width:32px;height:32px;border:1px solid transparent;color:#82c9ff;background:transparent}.top-actions .pill{width:44px;height:44px;border-radius:50%;font-size:10px;font-weight:800}.pill.warning{color:#ffad43;border-color:#ffad43;box-shadow:0 0 12px #ff91228c}.pill.ok{color:#34ee54;border-color:#34ee54;box-shadow:0 0 12px #34ee5473}.user{color:#7dbbe5;font-size:14px}.main-nav{height:56px;display:flex;justify-content:center;gap:30px;margin-top:0;position:relative;z-index:19}.nav-item-wrap{position:relative;min-width:165px;height:42px}.nav-item-wrap>.nav-item{width:100%}.nav-item{min-width:165px;height:42px;border:1px solid rgba(77,161,230,.42);border-top:0;border-radius:0 0 5px 5px;color:#65a9d8;background:linear-gradient(180deg,#083052a8,#051426b8);clip-path:polygon(8% 0,92% 0,100% 100%,0 100%);font-size:18px}.nav-item.active{color:#dff8ff;text-shadow:0 0 12px var(--cyan);background:linear-gradient(180deg,#1381cde6,#062f52f0);box-shadow:inset 0 -4px 14px #00eaff52}.nav-submenu{position:absolute;left:50%;top:41px;z-index:30;display:grid;width:135px;padding:7px 0 10px;transform:translate(-50%);border:1px solid rgba(0,181,230,.46);border-top:0;background:linear-gradient(180deg,#042a49fa,#03172afa);box-shadow:0 16px 34px #00000057,inset 0 0 20px #00b4ff14;opacity:0;pointer-events:none;transform-origin:top center}.nav-submenu:before{content:"";position:absolute;left:-1px;right:-1px;top:-1px;height:3px;background:linear-gradient(90deg,transparent,var(--cyan),transparent)}.nav-submenu button{height:30px;border:0;color:#d6ecff;background:transparent;font-size:14px}.nav-submenu button:first-child{color:var(--cyan);font-weight:800}.nav-submenu button:hover{color:#fff;background:#00eaff1f}.nav-item-wrap--ems:hover .nav-submenu,.nav-item-wrap--ems:focus-within .nav-submenu,.nav-item-wrap--ems .nav-item.active+.nav-submenu{opacity:1;pointer-events:auto}main{position:relative}.view{display:none}.view.active{display:block}.dashboard-grid{height:calc(100vh - 124px);position:relative;overflow:hidden}.side-stack{position:absolute;top:0;bottom:0;z-index:3;width:440px;display:flex;flex-direction:column;gap:12px}.side-stack:first-child{left:0}.side-stack:last-child{right:0}.side-stack:first-child .panel:not(.chart-panel){flex:1 1 0;min-height:0;padding:44px 14px 12px}.panel{position:relative;border:1px solid rgba(0,204,204,.5);background:linear-gradient(90deg,#031323e0,#051f37b3 54%,#020f1dc7),linear-gradient(rgba(36,118,180,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(36,118,180,.035) 1px,transparent 1px);background-size:auto,40px 40px,40px 40px;box-shadow:inset 0 0 30px #0064c80d,0 0 18px #00a1ff14;padding:48px 24px 20px;overflow:hidden}.panel:before,.table-frame:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(var(--cyan),var(--cyan)) 0 0 / 16px 2px no-repeat,linear-gradient(var(--cyan),var(--cyan)) 0 0 / 2px 16px no-repeat,linear-gradient(var(--cyan),var(--cyan)) 100% 0 / 16px 2px no-repeat,linear-gradient(var(--cyan),var(--cyan)) 100% 0 / 2px 16px no-repeat,linear-gradient(var(--cyan),var(--cyan)) 0 100% / 16px 2px no-repeat,linear-gradient(var(--cyan),var(--cyan)) 0 100% / 2px 16px no-repeat,linear-gradient(var(--cyan),var(--cyan)) 100% 100% / 16px 2px no-repeat,linear-gradient(var(--cyan),var(--cyan)) 100% 100% / 2px 16px no-repeat;opacity:.75}.panel h2,.table-title{position:absolute;top:6px;left:0;min-width:min(440px,100%);height:38px;margin:0;padding:7px 38px 0 54px;font-size:18px;color:#fff;background:url(/moro_ems/assets/lanhu-panel-title-BPNJyod0.png) left top / 100% 100% no-repeat,linear-gradient(90deg,rgba(0,128,196,.95),rgba(3,62,106,.75),transparent);text-shadow:0 0 10px rgba(0,234,255,.9);white-space:nowrap}.chart-panel{height:322px;display:flex;flex-direction:column;border-color:transparent;background:linear-gradient(180deg,#000a1614,#000f1e33),linear-gradient(90deg,rgba(3,18,32,.3),rgba(4,31,52,.18),transparent);box-shadow:none;padding:48px 4px 4px 0}.chart-panel:before{opacity:0}.chart-panel h2{left:0;min-width:440px}.trend-toolbar{flex:0 0 auto;display:flex;align-items:center;gap:8px;margin:2px 8px 0 18px;min-height:30px}.trend-segments{display:inline-grid;grid-template-columns:repeat(3,34px);gap:2px;padding:2px;border:1px solid rgba(95,214,255,.28);background:#03162794}.trend-segments button{height:24px;border:0;color:#e8fbffc2;background:transparent;font-size:12px;font-weight:800;cursor:pointer}.trend-segments button.active{color:#031626;background:#12f2a1;box-shadow:0 0 10px #12f2a166}.trend-period-input{width:116px;height:30px;border:1px solid rgba(95,214,255,.36);background:#031627bd;color:#e8fbff;padding:0 8px;font-size:12px;font-weight:700}.chart-panel .unit{flex:0 0 auto;margin-left:0;margin-top:2px;margin-bottom:0;padding-left:18px;color:#e8fbffeb;font-weight:600}.unit{color:#fff;font-size:13px;margin-bottom:4px}.line-chart{flex:1 1 auto;width:100%;min-height:0;overflow:visible}.trend-grid line{stroke:#7ac7f42e;stroke-width:1}.trend-zero line{stroke:#ffffff57;stroke-dasharray:4 4;stroke-width:1}.trend-zero text{fill:#e8fbffad;font-size:11px;font-weight:700}.trend-area{fill:url(#greenFill)}.trend-line{fill:none;stroke-linecap:round;stroke-linejoin:round}.trend-line--power{stroke:#12f2a1;stroke-width:3;filter:drop-shadow(0 0 5px rgba(18,242,161,.68))}.trend-line--load{stroke:#4db9ff;stroke-width:2;stroke-dasharray:6 5;opacity:.82}.trend-dot{fill:#12f2a1;stroke:#ffffffb8;stroke-width:1}.trend-hover-hit{cursor:crosshair;fill:transparent;pointer-events:all}.trend-hover-details{opacity:0;pointer-events:none;transition:opacity .16s ease}.trend-hover-target:hover .trend-hover-details{opacity:1}.trend-hover-line{stroke:#e8fbff7a;stroke-dasharray:4 5;stroke-width:1}.trend-hover-dot{fill:#e8fbfff5;stroke-width:2}.trend-hover-dot--power{stroke:#12f2a1}.trend-hover-dot--load{stroke:#4db9ff}.trend-tooltip rect{fill:#021323f0;stroke:#5fd6ff85;stroke-width:1}.trend-tooltip text{fill:#e8fbfff0;font-size:11px;font-weight:600}.trend-tooltip tspan:first-child{fill:#12f2a1;font-size:12px;font-weight:800}.trend-value-label{fill:#e8fbff;font-size:13px;font-weight:700;paint-order:stroke;stroke:#010d19d1;stroke-linejoin:round;stroke-width:4px}.trend-axis text,.trend-legend text{fill:#c3d8e8;font-size:12px}.trend-legend text{font-weight:600}.trend-axis text{text-anchor:middle}.trend-axis text:first-child,.trend-axis text:nth-child(2){text-anchor:start}.trend-empty{fill:#a9c3d8;font-size:24px;font-weight:700}.mini-status{display:grid;grid-template-columns:130px 1fr;gap:18px;align-items:center}.donut{width:112px;aspect-ratio:1;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle,#07131f 0 53%,transparent 54%),conic-gradient(var(--cyan) calc(var(--p) * 1%),rgba(96,166,205,.26) 0 100%)}.side-stack:first-child .panel:not(.chart-panel) .mini-status{grid-template-columns:138px 1fr;gap:10px}.side-stack:first-child .panel:not(.chart-panel) .donut{width:104px}.side-stack:first-child .panel:not(.chart-panel) .bars{gap:6px}.side-stack:first-child .panel:not(.chart-panel) .bars label{font-size:13px}.donut.alert{background:radial-gradient(circle,#07131f 0 53%,transparent 54%),conic-gradient(var(--red) calc(var(--p) * 1%),rgba(96,166,205,.26) 0 100%)}.donut.ticket{background:radial-gradient(circle,#07131f 0 53%,transparent 54%),conic-gradient(var(--yellow) calc(var(--p) * 1%),rgba(96,166,205,.26) 0 100%)}.donut span{display:grid;place-items:center;color:#fff;font-weight:800}.donut small{font-size:12px;font-weight:400}.bars{display:grid;gap:8px}.bars label{display:flex;justify-content:space-between;color:#fff;font-size:14px}progress{width:100%;height:5px;border:0;background:#ffffff29}progress::-webkit-progress-value{background:var(--cyan)}progress::-webkit-progress-bar{background:#ffffff29}.cyan{color:var(--cyan)}.yellow{color:var(--yellow)}.blue{color:var(--blue)}.red{color:var(--red)}.map-stage{position:absolute;inset:0 470px 24px;z-index:1;min-width:0}.map-stage>*{position:relative;z-index:1}.world-map-shell{position:absolute;left:-740px;top:-28px;width:1504px;height:725px;z-index:0;filter:saturate(1.02) contrast(1.04) brightness(.92)}.world-map-shell:after{content:"";position:absolute;inset:-160px;background:radial-gradient(ellipse at 50% 48%,rgba(26,179,255,.08),transparent 50%),radial-gradient(ellipse at 50% 108%,rgba(0,6,14,.78),transparent 52%),linear-gradient(90deg,rgba(2,11,24,.72),transparent 12%,transparent 88%,rgba(2,11,24,.72));pointer-events:none}.world-map{position:absolute;inset:0;z-index:1}.map-empty{position:absolute;left:50%;top:48%;z-index:2;transform:translate(-50%,-50%);padding:10px 18px;border:1px dashed rgba(143,216,255,.36);color:#a9c3d8;background:#031423d1;pointer-events:none}.map-empty.hidden{display:none}.summary-panel{position:absolute;left:0;right:0;bottom:0;min-height:150px;padding:42px 16px 12px}.summary-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0}.data-sync-status{display:flex;align-items:center;min-height:28px;max-width:100%;margin:-2px 0 8px auto;padding:6px 10px;border:1px solid rgba(255,203,87,.42);color:#ffe6a4;background:#492c0575;font-size:12px;font-weight:700;line-height:16px;box-shadow:inset 0 0 18px #ffb54714}.data-sync-status[hidden]{display:none}.data-sync-status span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.summary-group{display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:7px;min-width:0;padding:0 14px;border-right:1px solid rgba(83,185,240,.16)}.summary-group:last-child{border-right:0}.summary-list strong{margin-bottom:2px;color:#fff;font-size:17px;line-height:22px;text-shadow:0 0 10px rgba(0,234,255,.42)}.summary-list span{display:grid;gap:3px;min-width:0;color:#9ed0ed;font-size:12px;line-height:17px}.summary-list b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--yellow);font-size:18px;line-height:22px}.summary-list [data-summary-metric=power],.summary-list [data-summary-metric=online-devices],.summary-list [data-summary-metric=max-temp],.summary-list [data-summary-metric=revenue]{font-size:19px}.summary-list [data-summary-metric=active-mode],.summary-list [data-summary-metric=current-window],.summary-list [data-summary-metric=next-change]{max-width:100%}.summary-list strong,.summary-list span,.summary-list b{min-width:0}.rank-panel{min-height:320px;flex:1 1 320px}.device-status-panel{display:flex;min-height:0;flex:1 1 0;flex-direction:column;padding:44px 14px 12px}.site-live-card,.device-live-list{display:grid}.site-live-card{flex:0 0 auto;grid-template-columns:minmax(0,.9fr) minmax(0,1.5fr);gap:10px;align-items:stretch;width:calc(100% - 44px);margin:14px 22px 10px;padding:10px 12px;border:1px solid rgba(0,221,255,.38);color:inherit;text-align:left;background:#00508238;cursor:pointer;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.site-live-card:hover,.site-live-card:focus-visible{border-color:#00e5ff9e;background:#005f964d;box-shadow:inset 0 0 18px #00e5ff14}.site-live-card:focus-visible{outline:2px solid rgba(0,229,255,.72);outline-offset:2px}.site-live-card>div,.site-live-card dl,.site-live-card b,.site-live-card span,.site-live-card dd{min-width:0}.site-live-card>div{display:grid;gap:4px;align-content:center}.site-live-card b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#e6f7ff;font-size:15px}.site-live-card span{color:#9ed0ed}.site-live-card dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:0}.site-live-card dl div{min-width:0}.site-live-card dt{margin-bottom:2px;color:#9ed0edc2;font-size:12px}.site-live-card dd{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--yellow);font-weight:700}.device-live-list{min-height:0;flex:1 1 auto;gap:8px;padding:0 22px 16px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(0,229,255,.55) rgba(6,31,52,.62)}.device-live-list::-webkit-scrollbar{width:6px}.device-live-list::-webkit-scrollbar-track{background:#061f349e}.device-live-list::-webkit-scrollbar-thumb{border-radius:999px;background:#00e5ff8c}.device-live-card{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 14px;align-items:start;width:100%;padding:10px 12px;border:1px solid rgba(83,185,240,.22);color:inherit;text-align:left;background:#0088cc1a;cursor:pointer;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.device-live-card:hover,.device-live-card:focus-visible{border-color:#00e5ff94;background:#0088cc2e;box-shadow:inset 0 0 18px #00e5ff14}.device-live-card:focus-visible{outline:2px solid rgba(0,229,255,.72);outline-offset:2px}.device-live-card header{display:flex;grid-column:1 / -1;min-width:0;align-items:center;justify-content:space-between;gap:10px}.device-live-card b,.device-live-card span{min-width:0;overflow:hidden;text-overflow:ellipsis}.device-live-card b{white-space:nowrap;color:#e6f7ff;font-size:14px}.device-live-card span{display:grid;gap:2px;color:#9ed0ed;line-height:1.35}.device-live-card small{color:#9ed0edb8;font-size:11px}.device-live-card em{flex:0 0 auto;font-style:normal}.alarm-panel{flex:0 0 264px}.side-stack:last-child .alarm-panel:last-child{flex-basis:226px}.rank{position:relative;display:grid;grid-template-columns:48px 1fr 80px;gap:8px;align-items:center;margin:9px 0 16px}.rank b{background:var(--red);padding:4px 6px}.rank em{color:var(--red);font-style:normal;text-align:right}.rank i{position:absolute;left:8px;right:0;bottom:-10px;height:9px;background:var(--red);box-shadow:0 0 12px currentColor}.rank.yellow b,.rank.yellow i{background:var(--yellow)}.rank.yellow em{color:var(--yellow)}.rank.cyan b,.rank.cyan i{background:#00cbd4}.rank.cyan em{color:#00e8f4}.rank.blue b,.rank.blue i{background:#3a82ba}.rank.blue em{color:#d8e5f0}.empty-state{display:grid;place-items:center;min-height:210px;border:1px dashed rgba(143,216,255,.3);color:#a9c3d8;background:#00375c1f}.alert-list{margin:0;padding:0;list-style:none}.alert-list li{display:flex;align-items:center;gap:14px;min-height:39px;border-bottom:1px solid rgba(218,238,255,.2)}.alert-list .empty-item{justify-content:center;min-height:92px;color:#a9c3d8;border:1px dashed rgba(143,216,255,.24);background:#00375c1a}.tag{min-width:74px;padding:3px 12px;text-align:center;color:#0c1722;clip-path:polygon(10% 0,100% 0,90% 100%,0 100%)}.tag.red{background:var(--red);color:#070c12}.tag.yellow{background:#d6aa43;color:#07101a}.table-screen{height:calc(100vh - 124px)}.table-frame{position:relative;height:100%;padding:76px 30px 34px;overflow:hidden;border:1px solid rgba(81,193,255,.55);background:linear-gradient(180deg,#031a2cd1,#031423bd),linear-gradient(rgba(36,118,180,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(36,118,180,.04) 1px,transparent 1px);background-size:auto,40px 40px,40px 40px}.table-frame.is-loading:before{content:"加载中";position:absolute;inset:0;z-index:12;display:grid;place-items:center;color:#fff;font-size:18px;background:#000f1c94;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.table-frame.is-loading:after{content:"";position:absolute;left:50%;top:calc(50% + 38px);z-index:13;width:92px;height:3px;transform:translate(-50%);background:linear-gradient(90deg,transparent,#00e5ff,transparent);animation:loading-scan 1.1s linear infinite}.table-frame:after{content:"";position:absolute;inset:-1px;pointer-events:none;background:linear-gradient(var(--text),var(--text)) 0 0 / 18px 2px no-repeat,linear-gradient(var(--text),var(--text)) 0 0 / 2px 18px no-repeat,linear-gradient(var(--text),var(--text)) 100% 0 / 18px 2px no-repeat,linear-gradient(var(--text),var(--text)) 100% 0 / 2px 18px no-repeat,linear-gradient(var(--text),var(--text)) 0 100% / 18px 2px no-repeat,linear-gradient(var(--text),var(--text)) 0 100% / 2px 18px no-repeat,linear-gradient(var(--text),var(--text)) 100% 100% / 18px 2px no-repeat,linear-gradient(var(--text),var(--text)) 100% 100% / 2px 18px no-repeat}@keyframes loading-scan{0%{opacity:.28;width:44px}50%{opacity:1;width:126px}to{opacity:.28;width:44px}}.table-title{top:1px;left:50%;transform:translate(-50%);height:36px;padding:8px 54px 0;min-width:250px;text-align:center;background:linear-gradient(90deg,transparent,rgba(0,91,185,.94),transparent);clip-path:polygon(12% 0,88% 0,100% 100%,0 100%)}.kpis{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:10.5vw;max-width:1280px;margin:-8px auto 36px}.kpi{position:relative;height:70px;display:grid;place-items:center;background:linear-gradient(90deg,transparent,rgba(22,99,151,.72),transparent);clip-path:polygon(9% 0,91% 0,100% 50%,91% 100%,9% 100%,0 50%)}.kpi:before,.kpi:after{content:"";position:absolute;top:0;width:58px;height:70px;background:linear-gradient(90deg,transparent,rgba(0,171,255,.66));opacity:.8;clip-path:polygon(0 0,40% 0,100% 50%,40% 100%,0 100%,58% 50%)}.kpi:before{right:calc(100% + 14px)}.kpi:after{left:calc(100% + 14px);transform:rotate(180deg)}.kpi b{color:var(--text);font-size:38px;line-height:36px}.kpi span{color:var(--cyan);font-size:16px}.filters{display:grid;grid-template-columns:repeat(3,minmax(190px,270px)) 114px 1fr;gap:30px;align-items:end;margin-bottom:24px}.field label{display:block;margin-bottom:8px;font-weight:700;color:#fff;font-size:18px}.field input,.field select,.field-select>button{width:100%;height:44px;padding:0 24px;border:1px solid rgba(230,248,255,.9);border-radius:8px;color:#fff;background:#030509eb;box-shadow:inset 0 0 0 1px #ffffff0a}.field-select{position:relative}.field-select>button{display:flex;align-items:center;justify-content:space-between}.field-select>button i{color:var(--cyan);font-style:normal}.filter-menu{position:absolute;left:0;right:0;top:calc(100% + 8px);z-index:12;display:none;padding:8px;border:1px solid rgba(0,234,255,.45);border-radius:8px;background:#031424fa;box-shadow:0 14px 28px #00000052,0 0 18px #00eaff29}.field-select.open .filter-menu{display:grid}.filter-menu button{height:36px;border:0;border-radius:6px;color:#bfeaff;text-align:left;background:transparent;padding:0 12px}.filter-menu button:hover,.filter-menu button.selected{color:#fff;background:linear-gradient(90deg,#00b8dc57,#0076d22e)}.btn-primary,.btn-ghost,.icon-btn{border:0;border-radius:4px;color:#fff;background:linear-gradient(-45deg,#01cbc0,#0096e1);box-shadow:0 0 14px #00c8dc2e}.btn-primary{min-width:114px;height:46px;border:1px solid rgba(0,229,255,.34)}.btn-ghost{height:44px;padding:0 18px;justify-self:end;border:1px solid rgba(0,229,255,.45);background:#0081d333;color:var(--cyan)}.data-table{width:100%;border-collapse:collapse;table-layout:fixed}.data-table th,.data-table td{height:48px;padding:0 13px;border-bottom:1px solid rgba(0,212,255,.14);text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.data-table th:last-child,.data-table td:last-child{width:104px;overflow:visible}.data-table th{color:var(--cyan);font-size:13px;font-weight:500;background:#00285066}.data-table td{color:#ecf7ffdb;font-size:13px;font-weight:500}.data-table tbody tr:hover{background:#0064b41f}.data-table th:last-child,.data-table td:last-child{text-align:center}.status-online{color:var(--cyan)}.status-offline{color:var(--red)}.data-table td.status-unknown{color:#a4aebb}.icon-btn{width:25px;height:25px;margin:0 3px;color:#fff;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;transition:filter .15s ease,transform .15s ease}.icon-btn svg{width:15px;height:14px;display:block}.icon-btn.green{background:linear-gradient(-45deg,#86eb40,#41b947)}.icon-btn:hover{filter:brightness(1.12);transform:translateY(-1px)}.table-toolbar{display:none;align-items:center;gap:10px;min-height:42px;margin:4px 0 12px;color:#dcefff}.table-toolbar div{display:flex;align-items:center;gap:6px;min-width:118px;padding:0 12px;height:34px;border:1px solid rgba(78,190,255,.24);background:#007bbe1f}.table-toolbar b{color:var(--cyan)}.table-toolbar button,.pagination button,.pagination select,.row-menu button{border:1px solid rgba(93,202,255,.28);border-radius:2px;color:#dcefff;background:#0081d329}.table-toolbar button{height:34px;padding:0 12px}.row-more{position:relative;display:inline-block}.row-actions-more{display:inline-block;opacity:0;width:0;pointer-events:none}.row-menu{position:absolute;right:0;top:32px;z-index:8;display:none;width:118px;padding:6px;border:1px solid rgba(83,185,240,.42);background:#031526fa;box-shadow:0 14px 28px #00000052}.row-more.open .row-menu{display:grid;gap:4px}.row-menu button{height:30px;text-align:left;padding:0 9px}.row-menu button:hover,.table-toolbar button:hover,.pagination button:hover{color:#fff;border-color:#00e5ffb8;background:#00c2dc33}.pagination button.active{color:#00131c;border-color:#00eaffdb;background:var(--cyan)}.pagination button:disabled{cursor:not-allowed;opacity:.38}.table-empty{display:none;place-items:center;gap:8px;min-height:160px;margin-top:12px;border:1px dashed rgba(143,216,255,.3);color:#a9c3d8;background:#00375c1f}.table-frame.is-empty .data-table tbody{display:none}.table-frame.is-empty .table-empty{display:grid}.table-empty b{color:#fff}.pagination{position:absolute;right:30px;bottom:30px;display:flex;align-items:center;justify-content:flex-end;gap:16px;margin-top:0;padding:0;color:#dcefff}.pagination b{color:#4fbaff}.pagination button{min-width:28px;height:28px;color:#fff}.pagination em{color:#75bce8;font-style:normal}.page-size{display:inline-flex;align-items:center;gap:8px;color:#8fc6e9}.page-size select{width:64px;height:28px;padding:0 8px;outline:0}.modal{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:#000814a6}.modal.hidden{display:none}.modal-card{position:relative;box-sizing:border-box;width:min(1180px,calc(100vw - 40px));max-width:calc(100vw - 40px);max-height:min(88vh,calc(100vh - 40px));overflow:auto;overflow-x:hidden;padding:20px;border:1px solid rgba(0,229,255,.45);background:linear-gradient(180deg,#061c3afa,#020e20fa);box-shadow:0 0 32px #00e5ff26;scrollbar-color:rgba(0,229,255,.42) rgba(255,255,255,.08);scrollbar-width:thin}.modal-card::-webkit-scrollbar{width:8px}.modal-card::-webkit-scrollbar-track{background:#ffffff0f}.modal-card::-webkit-scrollbar-thumb{background:#00e5ff6b}.modal-card h3{margin:-20px -20px 20px;padding:16px 20px;border-bottom:1px solid rgba(0,229,255,.2);color:#00ffe4;font-size:18px;line-height:1.2}.modal-card--ems-detail{height:min(88vh,calc(100vh - 40px));display:grid;grid-template-rows:auto minmax(0,1fr)}.modal-card--ems-detail #modal-body{min-height:0}.modal-close{position:absolute;top:12px;right:14px;width:32px;height:32px;border:0;color:#8fb7cc;background:transparent;font-size:24px;line-height:1}.modal-close:hover{color:#fff}.detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:92px;gap:12px}.detail-grid div{min-width:0;min-height:0;height:100%;box-sizing:border-box;overflow:hidden;padding:12px;background:#0088cc14;border:1px solid rgba(83,185,240,.14)}.detail-grid b{display:block;margin-bottom:4px;color:#8ba4c4;font-size:12px;font-weight:500}.sub-title{margin:20px 0 10px;color:var(--cyan);font-size:16px;font-weight:700;text-shadow:0 0 8px rgba(0,234,255,.45)}.tab-strip{display:flex;gap:12px;margin-bottom:18px;overflow-x:auto}.tab-strip button,.detail-center aside button{min-width:104px;height:36px;border:1px solid rgba(0,229,255,.28);border-radius:2px;color:#bfeaff;background:#0046783d}.detail-center aside button{display:flex;align-items:center;justify-content:center;width:100%;min-width:0;box-sizing:border-box;padding:0 12px;white-space:nowrap}.tab-strip .active,.detail-center aside button.active{color:#00131c;border-color:#00e5ffdb;background:var(--cyan)}.result-card{display:grid;gap:8px;padding:16px;border:1px solid rgba(83,185,240,.25);background:#0088cc1f}.result-card b{color:var(--yellow)}.modal-loading{display:grid;place-items:center;gap:10px;min-height:260px;color:#bfeaff;text-align:center}.modal-loading:before{content:"";width:34px;height:34px;border:3px solid rgba(0,229,255,.18);border-top-color:var(--cyan);border-radius:50%;animation:modal-loading-spin .9s linear infinite}.modal-loading:after{content:"";width:112px;height:3px;margin-top:4px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:loading-scan 1.1s linear infinite}.modal-loading b{color:#eafaff;font-size:16px}.modal-loading span{color:#86c9ec;font-size:13px}@keyframes modal-loading-spin{to{transform:rotate(360deg)}}.ticket-tab-panel{margin-top:18px}.ticket-confirm-grid,.summary-cards,.record-list{display:grid;gap:12px;margin-top:14px}.ticket-confirm-grid{grid-template-columns:repeat(3,1fr)}.ticket-confirm-grid div,.summary-cards div,.record-list div{min-height:84px;padding:14px;border:1px solid rgba(83,185,240,.22);background:#0088cc1a}.ticket-confirm-grid b,.summary-cards b,.record-list b{display:block;color:var(--cyan)}.ticket-confirm-grid span,.summary-cards span,.record-list time{display:block;margin-top:6px;color:#95cff0}.record-list div{display:grid;grid-template-columns:110px 170px 1fr;align-items:start;gap:14px}.record-list p,.summary-cards p{margin:8px 0 0}.timeline{margin:0;padding:0 0 0 18px;border-left:1px solid rgba(0,234,255,.36);list-style:none}.timeline li{position:relative;display:grid;grid-template-columns:80px 130px 1fr;gap:12px;padding:10px 0 10px 18px;border-bottom:1px solid rgba(199,231,255,.14)}.timeline li:before{content:"";position:absolute;left:-6px;top:18px;width:10px;height:10px;background:var(--cyan);box-shadow:0 0 12px var(--cyan)}.timeline time{color:#7fc9f4}.timeline b{color:#fff}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 20px}.form-grid label{display:grid;gap:8px}.form-grid span{color:#8ba4c4;font-size:12px}.form-grid input,.form-grid select,.form-grid textarea{width:100%;min-height:42px;border:1px solid rgba(0,229,255,.34);border-radius:2px;color:#fff;background:#00070eb8;padding:0 12px}.form-grid textarea{min-height:88px;padding:12px;resize:vertical}.form-grid label:has(textarea){grid-column:1 / -1}.input-watch{position:relative}.input-watch textarea{padding-right:72px}.input-watch em{position:absolute;right:12px;bottom:10px;color:#7aaed0;font-size:12px;font-style:normal}.input-watch.is-editing span{color:var(--cyan)}.input-watch.is-editing textarea{border-color:#00eafff2;box-shadow:0 0 0 2px #00eaff1f,0 0 18px #00eaff29}.input-watch.has-value em{color:var(--cyan)}.input-hint{margin-top:-4px;color:#7aaed0;font-size:13px}.picker-preview,.schedule-list,.schedule-editor,.dispatch-workbench,.channel-row{display:grid;gap:12px;margin-top:18px}.picker-preview{grid-template-columns:repeat(2,1fr)}.picker-preview div,.schedule-list div{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid rgba(83,185,240,.22);background:#0088cc1a}.picker-preview span,.channel-row span{min-width:72px;padding:6px 10px;text-align:center;color:var(--cyan);border:1px solid rgba(0,234,255,.36);background:#00eaff14}.strategy-choice-grid,.time-presets,.ticket-choice-grid,.site-choice-grid{display:grid;gap:12px;margin-top:12px}.strategy-choice-grid{grid-template-columns:repeat(3,1fr)}.strategy-choice-grid button,.time-presets button{min-height:72px;border:1px solid rgba(0,229,255,.24);border-radius:2px;color:#d8f3ff;text-align:left;background:#0088cc14;padding:12px 14px}.strategy-choice-grid button.active,.time-presets button.active{border-color:#00e5ffd1;background:#00e5ff24;box-shadow:inset 0 0 14px #00e5ff14}.strategy-choice-grid b,.strategy-choice-grid span{display:block}.strategy-choice-grid b{color:var(--cyan);margin-bottom:8px}.strategy-choice-grid span{color:#8ec8ea;font-size:13px}.time-presets{grid-template-columns:repeat(3,minmax(0,1fr))}.time-presets button{min-height:42px;text-align:center;color:var(--cyan)}.ticket-choice-grid{grid-template-columns:repeat(3,1fr)}.ticket-choice-grid button,.ticket-picker button{min-height:66px;border:1px solid rgba(0,229,255,.24);border-radius:2px;color:#d9f5ff;text-align:left;background:#0088cc14;padding:12px 14px}.ticket-choice-grid.compact button{min-height:42px;text-align:center}.ticket-choice-grid button.active,.ticket-picker button.active{border-color:#00e5ffd1;color:#fff;background:#00e5ff24;box-shadow:inset 0 0 14px #00e5ff14}.ticket-choice-grid b,.ticket-choice-grid span{display:block}.ticket-choice-grid b{color:var(--cyan);margin-bottom:8px}.ticket-choice-grid.compact b{margin-bottom:0}.ticket-choice-grid span{color:#8ec8ea;font-size:13px}.ticket-picker div{align-items:stretch}.ticket-picker button{min-width:96px;min-height:36px;text-align:center;color:var(--cyan)}.site-choice-grid{grid-template-columns:repeat(3,1fr)}.site-choice-grid button,.cabinet-layout button{min-height:70px;border:1px solid rgba(0,229,255,.24);border-radius:2px;color:#d9f5ff;text-align:left;background:#0088cc14;padding:12px 14px}.site-choice-grid.compact button{min-height:42px;text-align:center}.site-choice-grid button.active,.cabinet-layout button.active{border-color:#00e5ffd1;color:#fff;background:#00e5ff24;box-shadow:inset 0 0 14px #00e5ff14}.site-choice-grid b,.site-choice-grid span,.cabinet-layout b,.cabinet-layout span{display:block}.site-choice-grid b,.cabinet-layout b{color:var(--cyan);margin-bottom:8px}.site-choice-grid.compact b{margin-bottom:0}.site-choice-grid span,.cabinet-layout span{color:#8ec8ea;font-size:13px}.cabinet-layout{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:12px}.message-choice-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px}.message-choice-grid button{min-height:86px;border:1px solid rgba(0,229,255,.24);border-radius:2px;color:#d9f5ff;text-align:left;background:#0088cc14;padding:12px}.message-choice-grid button.active{border-color:#00e5ffd1;background:#00e5ff24;box-shadow:inset 0 0 14px #00e5ff14}.message-choice-grid b,.message-choice-grid span{display:block}.message-choice-grid b{color:var(--cyan);margin-bottom:8px}.message-choice-grid span{color:#8ec8ea;font-size:13px}.message-preview{display:grid;gap:10px;margin-top:18px;padding:16px;border:1px solid rgba(83,185,240,.24);background:#0088cc1a}.message-preview.detail{background:linear-gradient(90deg,#007dd23d,#0046781a)}.message-preview b{color:var(--cyan)}.schedule-list div{display:grid;grid-template-columns:1fr 100px 100px}.schedule-list em{color:var(--yellow);font-style:normal;text-align:right}.schedule-editor div,.dispatch-ticket{display:grid;grid-template-columns:1fr 1fr 1.2fr 1fr;gap:10px}.schedule-editor div{grid-template-columns:1fr 1fr 1.2fr 1fr 1.2fr}.schedule-editor input,.schedule-editor select,.dispatch-ticket input,.dispatch-ticket select{width:100%;height:38px;border:1px solid rgba(153,221,255,.48);border-radius:6px;color:#fff;background:#00070ec7;padding:0 10px}.dispatch-workbench{padding:16px;border:1px solid rgba(83,185,240,.22);background:#0088cc14}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:18px}.confirm-panel{display:grid;gap:10px;padding:18px;border:1px solid rgba(83,185,240,.24);background:#00558c24}.confirm-panel b{color:#fff;font-size:16px}.confirm-panel span{color:#b8cad8}.confirm-panel small{color:#7aaed0}.strategy-confirm{border-color:#ffc75873}.strategy-confirm.enable{border-color:#00e5a97a}.message-detail-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;padding:18px;border:1px solid rgba(83,185,240,.24);background:#00558c24}.message-detail-head b{display:block;color:#fff;font-size:22px;margin-bottom:8px}.message-detail-head span{color:#8cc8ee}.message-detail-head em{min-width:76px;height:34px;display:grid;place-items:center;border:1px solid currentColor;border-radius:6px;font-style:normal;background:#0000002e}.permission-card,.audit-summary{display:grid;gap:10px;padding:18px;border:1px solid rgba(83,185,240,.24);background:#00558c24}.permission-card{border-color:#ff5d6c8c}.permission-card b,.audit-summary b{color:#fff;font-size:18px}.permission-card span,.audit-summary span{color:#8cc8ee}.permission-card p{margin:0;color:#b8cad8}.audit-list{display:grid;gap:10px;margin-top:16px}.audit-list div{display:grid;grid-template-columns:150px 130px 1fr 170px;gap:12px;align-items:center;min-height:44px;padding:10px 12px;border:1px solid rgba(83,185,240,.18);background:#0088cc14}.audit-list time{color:#8cc8ee}.audit-list b{color:var(--cyan)}.audit-list span{color:#fff}.audit-list em{color:#b8cad8;font-style:normal;text-align:right}.field-error span{color:#ff5d6c}.ack-panel{display:grid;gap:10px;margin-top:16px;padding:16px;border:1px solid rgba(83,185,240,.24);background:#00558c1f}.ack-panel h4{margin:0;color:var(--cyan);font-size:16px}.ack-panel section{display:grid;gap:8px}.ack-panel p,.ack-empty{margin:0;color:#8ec8ea}.ack-row{display:grid;grid-template-columns:minmax(120px,180px) minmax(0,1fr);gap:10px;align-items:start;min-height:36px;padding:8px 10px;border:1px solid rgba(83,185,240,.14);background:#0088cc14}.ack-row b{color:#8ba4c4;font-size:12px;font-weight:500}.ack-row span{color:#fff;overflow-wrap:anywhere}.ack-nested{display:grid;gap:8px;min-width:0}.field-error input,.field-error select,.field-error textarea{border-color:#ff5d6ce6!important;box-shadow:0 0 0 2px #ff5d6c24}.toast-host{position:fixed;right:24px;top:92px;z-index:90;display:grid;gap:10px;pointer-events:none}.toast{min-width:220px;max-width:360px;padding:12px 14px;border:1px solid rgba(99,211,255,.42);border-radius:6px;color:#fff;background:#04233af5;box-shadow:0 12px 30px #00000052;animation:toast-in .18s ease-out}.toast.success{border-color:#00e5a994}.toast.warning{border-color:#ffc758b3}.toast.error{border-color:#ff5d6ccc}.toast.leaving{opacity:0;transform:translateY(-6px);transition:.22s ease}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.channel-row{display:flex;flex-wrap:wrap}.revenue-schedule-list{gap:10px}.revenue-schedule-list .revenue-schedule-row{position:relative;display:grid;grid-template-columns:98px minmax(104px,1fr) minmax(104px,.85fr) minmax(72px,.65fr) minmax(72px,.65fr);gap:8px;align-items:center;min-height:54px;padding:12px 10px 12px 16px;border-color:#53b9f02e;background:linear-gradient(90deg,#0088cc24,#00488014)}.revenue-schedule-list .revenue-schedule-row:before{content:"";position:absolute;top:10px;bottom:10px;left:6px;width:3px;border-radius:999px;background:#8ec8eab3}.revenue-schedule-list .revenue-schedule-row.is-charge:before{background:#4db9ff;box-shadow:0 0 10px #4db9ff80}.revenue-schedule-list .revenue-schedule-row.is-discharge:before{background:#12f2a1;box-shadow:0 0 10px #12f2a180}.revenue-schedule-list .revenue-schedule-row.is-stop:before{background:#8ec8ea9e}.revenue-schedule-list .revenue-schedule-row.is-standby:before{background:var(--yellow);box-shadow:0 0 10px #ffd54f6b}.revenue-schedule-list .revenue-schedule-row.is-empty{opacity:.66}.revenue-schedule-list b,.revenue-schedule-list span,.revenue-schedule-list em,.revenue-schedule-list i,.revenue-schedule-list small{min-width:0;overflow:hidden;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.revenue-schedule-list b{color:#e8fbff}.revenue-schedule-list span{color:#8ec8ea}.revenue-schedule-list span strong{color:#e8fbff;font-weight:700}.revenue-schedule-list em{color:#9cc8e6;text-align:left;font-size:13px}.revenue-schedule-list i{color:#d8efff;text-align:right;font-size:13px;line-height:1.2;overflow-wrap:anywhere;white-space:normal}.revenue-schedule-list small{color:#b8cad8;text-align:right;font-size:13px;font-weight:800;line-height:1.2;overflow-wrap:anywhere;white-space:normal}.dispatch-log-list .dispatch-log-row{grid-template-columns:150px minmax(168px,1.2fr) minmax(104px,.8fr) minmax(140px,1fr) 48px}.dispatch-log-list .dispatch-log-row i{text-align:left}.dispatch-log-list .dispatch-log-row small{color:#00d36f;text-align:center}.strategy-log-list .strategy-log-row{grid-template-columns:minmax(112px,.9fr) minmax(76px,.7fr) minmax(86px,.7fr) minmax(112px,1fr) minmax(64px,.6fr)}.alarm-query-list{display:grid;gap:10px}.alarm-query-card{display:grid;gap:12px;min-width:0;padding:14px 16px;border:1px solid rgba(83,185,240,.22);background:linear-gradient(90deg,#0088cc24,#00488014)}.alarm-query-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;min-width:0}.alarm-query-head b,.alarm-query-head small,.alarm-query-details b,.alarm-query-details em,.alarm-query-details small{min-width:0;overflow-wrap:anywhere}.alarm-query-head b{color:#e8fbff;font-size:17px;line-height:1.35}.alarm-query-head small{color:#8ec8ea;font-size:13px;font-weight:700;text-align:right}.alarm-query-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.alarm-query-details span{display:grid;gap:4px;min-width:0;padding:10px;background:#0088cc1a;border-left:3px solid rgba(255,209,92,.78)}.alarm-query-details .alarm-query-reason{background:#ffd15c14}.alarm-query-details .alarm-query-reason--missing{border-left-color:#ffd15c6b;background:#ffd15c0a}.alarm-query-details b{color:#ffd15c}.alarm-query-details em{color:#d8efff;font-style:normal;line-height:1.35}.alarm-query-details small{color:#8ec8ea;font-size:12px;font-weight:700;line-height:1.35}.alarm-query-card p{margin:0;color:#b7eaff;line-height:1.55}.alarm-query-card--empty{border-color:#ffd15c3d;background:#005b961f}.revenue-schedule-list small.is-positive{color:#12f2a1}.revenue-schedule-list small.is-negative{color:#ffd15c}.ems-summary-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;padding:18px;border:1px solid rgba(83,185,240,.24);background:#00558c24}.ems-summary-head>div{min-width:0}.ems-summary-head b{display:block;color:#fff;font-size:24px;margin-bottom:8px}.ems-summary-head span{color:#8cc8ee}.ems-summary-head em{min-width:76px;height:34px;display:grid;place-items:center;border:1px solid currentColor;border-radius:6px;padding:0 12px;font-style:normal;background:#0000002e;overflow-wrap:anywhere}.detail-center{height:100%;min-height:0;display:grid;grid-template-columns:210px 1fr;gap:22px}.detail-center aside{display:grid;gap:8px;align-content:start;min-height:0;padding:14px;border:1px solid rgba(0,229,255,.24);background:#00558c1a}.detail-center>section{min-height:0;overflow:auto;overflow-x:hidden;padding-right:4px;scrollbar-color:rgba(0,229,255,.42) rgba(255,255,255,.08);scrollbar-width:thin}.detail-center aside b{color:#fff;font-size:18px}.detail-center aside span{color:#89c4e9;margin-bottom:10px}.ems-tab-title{height:38px;display:flex;align-items:center;padding:0 18px;margin-bottom:14px;color:var(--cyan);font-weight:700;background:#00285066;border-left:3px solid var(--cyan);text-shadow:0 0 8px rgba(0,234,255,.42)}.overview-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:92px;gap:12px}.overview-cards div{display:grid;min-width:0;min-height:0;height:100%;box-sizing:border-box;align-content:center;justify-items:center;overflow:hidden;padding:12px;border:1px solid rgba(0,229,255,.24);background:#0088cc14}.overview-cards b{max-width:100%;overflow:hidden;color:var(--cyan);font-size:28px;text-overflow:ellipsis;white-space:nowrap}.overview-cards span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ems-config-panel{display:grid;gap:0;min-width:0}.ems-config-panel .overview-cards b,.ems-config-panel .overview-cards span{overflow:visible;line-height:1.16;overflow-wrap:normal;text-align:center;text-overflow:clip}.ems-config-panel .overview-cards b{font-size:clamp(20px,1.65vw,26px);white-space:nowrap}.ems-config-panel .overview-cards span{white-space:normal}.ems-config-list div{display:grid;grid-template-columns:minmax(160px,.9fr) minmax(160px,.75fr) minmax(220px,1.1fr);align-items:center;gap:12px}.ems-config-list b,.ems-config-list span,.ems-config-list em{overflow:visible;line-height:1.35;overflow-wrap:anywhere;text-overflow:clip;white-space:normal}.ems-config-list span{color:#aee7ff;font-size:16px}.ems-config-list em{color:#8ec8ea;font-size:12px;text-align:left}.ems-ops-overview{display:grid;gap:12px}.ops-time{color:#9eeeff;text-align:center;font-weight:700}.ops-frame{position:relative;padding:18px;border:1px solid rgba(0,166,220,.48);background:linear-gradient(135deg,#0a2f53b8,#041e3ac7),radial-gradient(circle at 50% 100%,rgba(0,234,255,.06),transparent 42%);box-shadow:inset 0 0 18px #0082ff14}.ops-frame-title{display:table;margin:-10px auto 16px;padding:0 36px;color:var(--cyan);font-weight:800;text-align:center;text-shadow:0 0 10px rgba(0,234,255,.55)}.ops-topology{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:108px;gap:12px;align-items:stretch}.device-management-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px}.device-management-summary>div,.device-management-row{min-width:0;box-sizing:border-box;border:1px solid rgba(0,188,255,.32);background:#005b9624;box-shadow:inset 0 0 12px #00e5ff0d}.device-management-summary>div{display:grid;gap:6px;grid-auto-rows:min-content;height:100%;align-content:center;overflow:hidden;padding:12px}.device-management-table{display:grid;gap:10px}.device-management-row{display:grid;grid-template-columns:minmax(180px,220px) minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px}.device-management-row>div,.device-management-metrics>div{display:grid;gap:6px;min-width:0}.device-management-metrics{display:grid;grid-template-columns:repeat(5,minmax(104px,1fr));gap:10px;min-width:0}.device-management-main{align-content:center}.device-management-action{width:56px;min-width:56px;height:34px;padding:0}.ops-node,.ops-soc{min-width:0;height:100%;box-sizing:border-box;border:1px solid rgba(0,188,255,.32);background:#005b9624;box-shadow:inset 0 0 12px #00e5ff0d}.ops-node{display:grid;gap:5px;min-height:0;align-content:center;padding:12px;color:#b7eaff}.ops-node span{color:#00d36f;font-weight:700;line-height:1.3}.ops-node b,.device-management-summary b,.device-management-row b{min-width:0;overflow:hidden;color:#fff;font-size:16px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.device-management-metrics b{font-size:15px;white-space:normal}.ops-node em,.device-management-summary em,.device-management-row em{min-width:0;overflow:hidden;color:var(--cyan);font-style:normal;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.device-management-summary em{overflow:visible;overflow-wrap:anywhere;text-overflow:clip;white-space:normal}.device-management-summary span,.device-management-row span{min-width:0;overflow:hidden;color:#00d36f;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.ops-node--center{border-color:#00e5ff99;background:#0084be38;text-align:center}.ops-soc{display:grid;gap:6px;min-height:0;align-content:center;padding:12px;color:var(--cyan)}.ops-soc span{color:#00d36f;font-weight:700}.ops-soc b{font-size:24px}.ops-monitor-grid,.ops-energy-grid,.ops-gauges{display:grid;gap:14px}.ops-monitor-grid{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:12px;align-items:start}.ops-monitor-grid>div{min-height:128px;max-height:168px;overflow:hidden;padding:14px;border:1px solid rgba(83,185,240,.24);background:#0088cc1a}.ops-monitor-grid p{margin:8px 0 0;line-height:1.55}.ops-strategy-panel{margin-top:12px;padding:14px;border:1px solid rgba(0,188,255,.32);background:#005b9624}.ops-strategy-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:68px;gap:12px}.ops-strategy-summary div{display:grid;gap:5px;min-height:0;height:100%;box-sizing:border-box;align-content:center;padding:10px 12px;background:#0088cc1f}.ops-strategy-summary span{color:var(--cyan);font-weight:700}.ops-strategy-summary b{min-width:0;overflow:hidden;color:#fff;text-overflow:ellipsis;white-space:nowrap}.ops-schedule-preview{display:grid;gap:6px;margin-top:10px}.ops-schedule-preview div{display:grid;grid-template-columns:minmax(74px,1.1fr) minmax(44px,.7fr) minmax(52px,.7fr);gap:8px;align-items:center;min-height:30px;padding:6px 8px;border:1px solid rgba(0,188,255,.24);background:#0088cc1f}.ops-schedule-preview b,.ops-schedule-preview span,.ops-schedule-preview em{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ops-schedule-preview b{color:#fff}.ops-schedule-preview span{color:var(--cyan)}.ops-schedule-preview em{color:#b7eaff;font-style:normal}.ops-energy-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:68px}.ops-energy-grid div{display:grid;gap:6px;min-height:0;height:100%;box-sizing:border-box;align-content:center;padding:10px 12px;border:1px solid rgba(0,188,255,.22);background:#0088cc1a}.ops-energy-grid span{color:var(--cyan);font-weight:700}.ops-energy-grid b{color:#fff}.ops-gauges{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:92px;margin-top:16px}.ops-gauges div{display:grid;place-items:center;min-height:0;height:100%;box-sizing:border-box;border:1px solid rgba(0,229,255,.34);background:#005b9624}.ops-gauges b{color:var(--cyan);font-size:24px}.ops-gauges span{color:#b7eaff}.realtime-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:16px}.realtime-grid>div{min-height:130px;padding:16px;border:1px solid rgba(83,185,240,.22);background:#0088cc1a}.ems-screen-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:14px}.ems-map-card{min-height:340px;grid-row:span 2;position:relative;display:grid;align-content:end;padding:24px;border:1px solid rgba(83,185,240,.26);background:radial-gradient(circle at 58% 48%,rgba(255,216,0,.85) 0 7px,transparent 8px),radial-gradient(circle at 54% 56%,rgba(33,225,120,.7) 0 5px,transparent 6px),linear-gradient(135deg,#0088cc29,#001e3a7a);overflow:hidden}.ems-map-card i{position:absolute;inset:16% 10% 20%;border:2px solid rgba(0,234,255,.54);clip-path:polygon(14% 46%,25% 24%,43% 18%,58% 29%,76% 21%,90% 39%,76% 56%,84% 75%,59% 86%,45% 72%,25% 82%,10% 64%);filter:drop-shadow(0 0 18px rgba(0,234,255,.65))}.ems-map-card b,.ems-map-card span{position:relative;z-index:1}.telemetry-board,.device-cards,.stat-columns{display:grid;gap:14px}.telemetry-board,.stat-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.device-cards{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:92px}.telemetry-board div,.device-cards div,.stat-columns>div{padding:16px;border:1px solid rgba(83,185,240,.24);background:#0088cc1a}.telemetry-board div,.stat-columns>div{min-height:116px}.device-cards div{min-width:0;min-height:0;height:100%;box-sizing:border-box;overflow:hidden;padding:12px}.telemetry-board span,.device-cards span,.device-cards em{display:block;color:#8ec8ea;font-style:normal}.telemetry-board b{display:block;margin-top:16px;font-size:28px;color:var(--cyan)}.realtime-device-list{display:grid;gap:16px}.telemetry-device-block{overflow:hidden;border:1px solid rgba(83,185,240,.22);background:#00234652}.telemetry-device-title{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:58px;padding:12px 14px;border-bottom:1px solid rgba(83,185,240,.18);background:#052b4f8f}.telemetry-device-title span,.telemetry-device-title em{color:#83c5ea;font-size:12px;font-style:normal}.telemetry-device-title h4{margin:4px 0 0;color:#eafaff;font-size:15px;font-weight:700;overflow-wrap:anywhere}.telemetry-device-groups{column-count:2;column-gap:12px;padding:12px}.telemetry-table-block{overflow:hidden;break-inside:avoid;margin-bottom:12px;border:1px solid rgba(83,185,240,.22);background:#0088cc14}.telemetry-table-title{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:42px;padding:0 14px;border-bottom:1px solid rgba(83,185,240,.16)}.telemetry-table-title h4{margin:0;color:#eafaff;font-size:14px;font-weight:700}.telemetry-table-title span{color:#7fbfe4;font-size:12px;white-space:nowrap}.telemetry-table-scroll{overflow-x:auto;scrollbar-color:rgba(0,229,255,.34) rgba(255,255,255,.05);scrollbar-width:thin}.telemetry-table{width:100%;min-width:760px;border-collapse:collapse;table-layout:fixed;color:#dff5ff;font-size:13px;line-height:1.25}.telemetry-table th,.telemetry-table td{height:28px;padding:8px 12px;overflow:hidden;border-right:1px solid rgba(83,185,240,.12);border-bottom:1px solid rgba(83,185,240,.12);text-align:left;text-overflow:ellipsis;white-space:nowrap}.telemetry-table th{background:#082a4e85;color:var(--cyan);font-weight:700}.telemetry-table th:first-child,.telemetry-table td:first-child{width:54px;color:#91d9ff;text-align:center}.telemetry-table th:nth-child(2),.telemetry-table td:nth-child(2){width:150px}.telemetry-table tbody tr:nth-child(2n) td{background:#ffffff06}.telemetry-table tr:last-child td{border-bottom:0}.telemetry-table th:last-child,.telemetry-table td:last-child{border-right:0}.telemetry-table--kv{min-width:0}.telemetry-table--kv th:first-child,.telemetry-table--kv td:first-child{width:44%;text-align:left}.telemetry-table--kv th:nth-child(2),.telemetry-table--kv td:nth-child(2){width:auto}.device-cards b{display:block;overflow:hidden;color:var(--cyan);text-overflow:ellipsis;white-space:nowrap}.device-cards p{margin:4px 0 0;overflow:hidden;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}.device-cards span,.device-cards em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-trend{height:180px;display:flex;align-items:end;gap:18px;padding:20px;border:1px solid rgba(83,185,240,.22);background:repeating-linear-gradient(0deg,rgba(255,255,255,.06),rgba(255,255,255,.06) 1px,transparent 1px,transparent 36px)}.mini-trend i{flex:1;min-width:20px;background:linear-gradient(180deg,var(--cyan),rgba(0,234,255,.1));box-shadow:0 0 12px #00eaff6b}@media(max-width:1280px){html,body{overflow:auto}.app-shell{height:auto;min-height:100vh;overflow:visible}.topbar{grid-template-columns:90px 130px 1fr}.top-actions{display:none}.main-nav{overflow-x:auto;justify-content:flex-start;gap:10px}.dashboard-grid{height:auto;min-height:0;display:grid;grid-template-columns:1fr;gap:16px;overflow:visible}.side-stack{position:static;width:auto}.side-stack:first-child .panel:not(.chart-panel){flex:none;min-height:196px;padding-right:22px}.side-stack:first-child .panel:not(.chart-panel) .mini-status{grid-template-columns:120px minmax(0,1fr);gap:12px}.side-stack:first-child .panel:not(.chart-panel) .bars{min-width:0}.chart-panel{height:304px;padding-bottom:6px}.line-chart{min-height:0}.map-stage{position:relative;inset:auto;grid-row:1;min-height:880px}.world-map-shell{left:0;top:0;width:min(1504px,118vw);height:58%}.summary-panel{position:relative;inset:auto}.device-status-panel{display:block;flex:none}.device-live-list{overflow:visible}.summary-list{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:14px}.summary-group:nth-child(3){border-right:0}.filters{grid-template-columns:repeat(2,minmax(180px,1fr))}}@media(max-width:760px){html,body{overflow:auto;overflow-x:hidden}.app-shell{padding:0 12px 16px;height:auto;overflow:visible}.topbar{height:auto;grid-template-columns:80px 1fr;gap:8px 12px;padding-top:8px}.timebox{display:none}.title-frame{grid-column:1 / -1;order:3;height:auto;min-height:58px;padding:8px 12px 10px;clip-path:none;border-top:1px solid rgba(128,207,255,.18)}.title-frame h1{margin-top:0;font-size:22px;line-height:28px}.title-frame small{max-width:100%;overflow:hidden;white-space:nowrap;letter-spacing:2px}.map-stage{grid-row:auto;min-height:0}.main-nav{margin-top:10px;padding-bottom:6px;scrollbar-width:thin;gap:8px;-webkit-overflow-scrolling:touch}.nav-item-wrap{min-width:112px}.nav-item{min-width:112px;height:38px;padding:0 10px;font-size:14px}.panel{padding:40px 12px 14px}.side-stack:first-child .panel:not(.chart-panel){flex:none;min-height:170px}.chart-panel{height:292px}.line-chart{min-height:0}.mini-status,.kpis,.filters{grid-template-columns:1fr}.summary-panel{min-height:0;padding:40px 12px 12px}.map-empty{position:static;width:fit-content;margin:10px auto 0;transform:none}.map-empty.hidden{display:none}.summary-panel h2{min-width:0;max-width:calc(100% - 16px);height:34px;padding:6px 30px 0 42px;font-size:clamp(17px,5vw,22px)}.summary-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.summary-group{grid-template-columns:1fr;gap:6px;padding:10px;border:1px solid rgba(83,185,240,.16);background:linear-gradient(135deg,#0088cc1f,#001e3a2e),#00081447}.summary-group:last-child{grid-column:1 / -1;grid-template-columns:repeat(2,minmax(0,1fr));border-right:1px solid rgba(83,185,240,.16)}.summary-group:last-child strong{grid-column:1 / -1}.summary-list strong{grid-column:1 / -1;margin-bottom:0;font-size:17px;line-height:20px}.summary-list span{display:grid;min-width:0;gap:2px;font-size:12px;line-height:16px}.summary-list b{flex:0 0 auto;font-size:18px;line-height:22px}.summary-list [data-summary-metric=power],.summary-list [data-summary-metric=online-devices],.summary-list [data-summary-metric=max-temp],.summary-list [data-summary-metric=revenue]{font-size:clamp(18px,5.2vw,22px)}.filters{gap:14px;margin-bottom:18px}.field input,.field select,.field-select>button{height:42px;padding:0 14px}.kpis{gap:14px;margin:8px auto 24px}.kpi{height:66px}.table-toolbar{flex-wrap:wrap;align-items:stretch;gap:8px}.table-toolbar div{width:100%}.table-toolbar button{flex:1 1 92px}.site-live-card{grid-template-columns:1fr;width:100%;margin:12px 0}.site-live-card dl{grid-template-columns:repeat(2,minmax(0,1fr))}.device-live-list{padding:0;overflow:visible}.device-live-card{grid-template-columns:repeat(2,minmax(0,1fr))}.device-live-card b{white-space:nowrap}.form-grid,.picker-preview,.detail-grid,.ticket-confirm-grid,.record-list div,.strategy-choice-grid,.time-presets,.ticket-choice-grid,.site-choice-grid,.cabinet-layout,.message-choice-grid,.schedule-editor div,.audit-list div,.ack-row{grid-template-columns:1fr}.audit-list em{text-align:left}.modal{place-items:start center;padding:12px 0}.modal-card{width:calc(100vw - 24px);max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);padding:14px}.modal-card--ems-detail{height:calc(100dvh - 24px)}.modal-card h3{margin:-14px -14px 14px;padding-right:40px;font-size:18px}.modal-close{top:8px;right:8px}.timeline li{grid-template-columns:1fr}.world-map-shell{width:100%;height:260px}.table-frame{height:auto;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:56px 12px 22px}.pagination{position:static;flex-wrap:wrap;justify-content:flex-start;margin-top:16px}.table-screen{height:auto}.data-table{min-width:760px;font-size:13px}.data-table th,.data-table td{padding-left:10px;padding-right:10px}.table-title{min-width:180px;padding-left:34px;padding-right:34px}.schedule-editor input,.schedule-editor select{min-width:0}.toast-host{left:12px;right:12px;top:82px}.toast{min-width:0;max-width:none}}@media(max-width:420px){.app-shell{padding-left:8px;padding-right:8px}.brand-mark{font-size:22px}.brand-name{font-size:12px;letter-spacing:1px}.title-frame:before,.title-frame:after{display:none}.title-frame h1{font-size:18px;line-height:24px}.title-frame small{font-size:8px;letter-spacing:1px}.nav-item{min-width:100px;font-size:13px}.world-map-shell{height:220px}.modal-card{width:calc(100vw - 16px);max-width:calc(100vw - 16px)}.data-table{min-width:700px}.site-live-card dl,.device-live-card{grid-template-columns:1fr}}@media(max-width:760px){.detail-center,.overview-cards,.realtime-grid,.ems-screen-grid,.device-management-summary,.device-management-row,.device-management-metrics,.telemetry-device-groups,.telemetry-board,.device-cards,.stat-columns,.dispatch-ticket{grid-template-columns:1fr}.telemetry-device-groups{column-count:1}.telemetry-board b{margin-top:10px;font-size:22px}.telemetry-board div,.device-cards div,.stat-columns>div,.realtime-grid>div{min-height:0;padding:12px}.device-management-row{align-items:stretch}.device-management-action{justify-self:stretch;width:100%;min-width:0}.detail-center{gap:12px}.detail-center aside{display:flex;align-items:stretch;gap:8px;overflow-x:auto;padding:10px;scrollbar-width:thin}.detail-center aside b,.detail-center aside span{display:none}.detail-center aside button{flex:0 0 auto;width:auto;min-width:82px;height:36px;padding:0 10px;white-space:nowrap}.ems-tab-title{height:auto;min-height:34px;padding:8px 12px;margin-bottom:10px}.overview-cards{grid-auto-rows:72px;gap:10px}.overview-cards div{min-height:0}.overview-cards b{font-size:22px}.ems-config-panel .overview-cards b{font-size:20px}.ems-config-list div{grid-template-columns:1fr;gap:4px}.ems-config-list span,.ems-config-list em{text-align:left}.ops-frame{padding:14px}.ops-frame-title{margin:-6px auto 12px;padding:0 18px}.ops-topology,.ops-strategy-summary,.ops-energy-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.ops-topology{grid-auto-rows:112px}.ops-node,.ops-soc{padding:12px 10px}.ops-node b,.ops-soc b{font-size:18px}.ops-strategy-summary,.ops-energy-grid{grid-auto-rows:74px}.ops-gauges{grid-template-columns:1fr;grid-auto-rows:82px;gap:10px}.ems-revenue-modal{display:grid;gap:12px}.ems-revenue-modal>*{min-width:0;width:100%}.ems-revenue-modal .ems-summary-head{display:grid;gap:12px;margin-bottom:0;padding:14px}.ems-revenue-modal .ems-summary-head b{margin-bottom:6px;font-size:22px;line-height:1.15}.ems-revenue-modal .ems-summary-head span{display:block;font-size:15px;line-height:1.45}.ems-revenue-modal .ems-summary-head em{justify-self:start;width:auto;min-width:0;max-width:100%;height:auto;min-height:32px;padding:5px 10px;font-size:14px;line-height:1.2}.ems-revenue-modal .overview-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0}.ems-revenue-modal .overview-cards div{min-width:0;min-height:68px;padding:10px 6px}.ems-revenue-modal .overview-cards b{font-size:clamp(18px,6vw,24px);line-height:1.15;text-align:center;overflow-wrap:anywhere}.ems-revenue-modal .overview-cards span{font-size:13px;text-align:center}.ems-revenue-modal .stat-columns{gap:10px;min-width:0}.ems-revenue-modal .stat-columns>div{min-width:0;padding:12px}.ems-revenue-modal .schedule-list{display:grid;gap:8px}.ems-revenue-modal .schedule-list div{grid-template-columns:1fr;gap:4px;padding:10px;border:1px solid rgba(83,185,240,.18);background:#0088cc14}.ems-revenue-modal .schedule-list em{text-align:left;overflow-wrap:anywhere}.ems-revenue-modal .revenue-schedule-list .revenue-schedule-row{grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;padding:10px 10px 10px 16px}.ems-revenue-modal .revenue-schedule-list span,.ems-revenue-modal .revenue-schedule-list em{grid-column:1 / -1}.ems-revenue-modal .revenue-schedule-list i,.ems-revenue-modal .revenue-schedule-list small{text-align:left}.dispatch-log-list .dispatch-log-row{grid-template-columns:minmax(0,1fr) auto;align-items:start}.dispatch-log-list .dispatch-log-row span,.dispatch-log-list .dispatch-log-row em,.dispatch-log-list .dispatch-log-row i{grid-column:1 / -1;text-align:left}.dispatch-log-list .dispatch-log-row small{align-self:start;text-align:right}.strategy-log-list .strategy-log-row{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:6px 10px}.strategy-log-list .strategy-log-row span,.strategy-log-list .strategy-log-row em,.strategy-log-list .strategy-log-row i{grid-column:1 / -1;text-align:left}.strategy-log-list .strategy-log-row b,.strategy-log-list .strategy-log-row span,.strategy-log-list .strategy-log-row em,.strategy-log-list .strategy-log-row i,.strategy-log-list .strategy-log-row small{overflow:visible;text-overflow:clip;white-space:normal}.strategy-log-list .strategy-log-row small{align-self:start;text-align:right}.alarm-query-card{gap:10px;padding:12px}.alarm-query-head,.alarm-query-details{grid-template-columns:1fr}.alarm-query-head small{text-align:left}.ems-device-modal{display:grid;gap:12px}.ems-device-modal>*{min-width:0;width:100%}.ems-device-modal .ems-summary-head{display:grid;gap:12px;margin-bottom:0;padding:14px}.ems-device-modal .ems-summary-head b{margin-bottom:6px;font-size:clamp(20px,7.2vw,28px);line-height:1.1;overflow-wrap:anywhere}.ems-device-modal .ems-summary-head span{display:block;font-size:15px;line-height:1.35}.ems-device-modal .ems-summary-head em{justify-self:start;width:auto;min-width:0;height:auto;min-height:32px;padding:5px 12px;font-size:14px;line-height:1.2}.ems-device-modal .overview-cards,.ems-device-modal .telemetry-board,.ems-device-modal .detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.ems-device-modal .overview-cards div{min-width:0;min-height:68px;padding:10px 6px}.ems-device-modal .overview-cards b{font-size:clamp(18px,6.4vw,25px);line-height:1.15;text-align:center;overflow-wrap:anywhere}.ems-device-modal .overview-cards span{font-size:13px;text-align:center}.ems-device-modal .telemetry-board div,.ems-device-modal .detail-grid div{min-width:0;min-height:64px;padding:10px}.ems-device-modal .telemetry-board b{margin-top:8px;font-size:clamp(16px,4.6vw,20px);line-height:1.2;overflow-wrap:anywhere}.ems-device-modal .telemetry-board span,.ems-device-modal .detail-grid b{font-size:12px}.ems-device-modal .detail-grid div{font-size:13px;line-height:1.35;overflow-wrap:anywhere}.ems-device-modal .modal-actions{margin-top:4px}}:root{--shell-x-padding: 30px;--topbar-height: 68px;--nav-height: 56px;--content-height: calc(100vh - var(--topbar-height) - var(--nav-height));--layout-canvas-width: 430px;--dashboard-side-width: 330px;--dashboard-side-gap: 18px;--dashboard-bottom-gap: 12px;--dashboard-map-offset-x: 320px}@media(max-width:1680px)and (min-width:1281px){:root{--shell-x-padding: 34px;--topbar-height: 76px;--nav-height: 72px;--dashboard-side-width: 330px;--dashboard-side-gap: 18px;--dashboard-bottom-gap: 18px;--dashboard-map-offset-x: 320px}}.app-shell{height:100vh;display:grid;grid-template-rows:var(--topbar-height) var(--nav-height) minmax(0,1fr);padding:0 var(--shell-x-padding);overflow:hidden}.app-topbar{height:var(--topbar-height)}.topbar__center{position:absolute;inset:0 0 auto;min-width:0;height:var(--topbar-height);pointer-events:none}.app-title{width:clamp(600px,46vw,780px);margin:4px auto 0;pointer-events:auto}.app-main{min-height:0;overflow:hidden}.page-view.active,.page-surface{height:100%;min-height:0}.dashboard-layout{position:relative;height:100%;overflow:hidden}.dashboard-layout .side-stack{width:var(--dashboard-side-width)}.dashboard-layout .map-stage{inset:0 calc(var(--dashboard-side-width) + var(--dashboard-side-gap)) var(--dashboard-bottom-gap)}.table-layout{height:100%;min-height:0}.table-layout .table-frame{height:100%}.layout-canvas-host,.layout-canvas-host body{width:100%;min-height:100%;overflow:hidden}.layout-canvas-host body{display:grid;place-items:stretch center}.layout-canvas-frame{width:min(100vw,var(--layout-canvas-frame-width, var(--layout-canvas-width)));height:100dvh;border:0;background:transparent}@media(min-width:1281px){.topbar{grid-template-columns:120px 210px minmax(0,1fr);gap:14px}.top-actions{display:none}.main-nav{justify-content:stretch;gap:14px;overflow:visible}.nav-item-wrap,.nav-item{flex:1 1 0;min-width:0;max-width:none}.dashboard-layout .side-stack{display:flex;gap:8px}.world-map-shell{left:50%;width:min(1120px,calc(100vw - 120px));transform:translate(calc(-50% - var(--dashboard-map-offset-x, 0px)))}.summary-panel{top:auto;bottom:0;min-height:150px;padding:40px 12px 10px}.summary-list{grid-template-columns:repeat(5,minmax(0,1fr));gap:0}.summary-group{min-height:0;gap:7px;padding:0 10px}.summary-list strong{margin-bottom:2px;font-size:16px;line-height:21px}.summary-list span{gap:3px;font-size:12px;line-height:17px}.summary-list b,.summary-list [data-summary-metric=power],.summary-list [data-summary-metric=online-devices],.summary-list [data-summary-metric=max-temp],.summary-list [data-summary-metric=revenue]{font-size:18px;line-height:22px}.chart-panel{height:180px;padding-top:38px}.chart-panel h2{min-width:min(var(--dashboard-side-width),100%)}.side-stack:first-child .panel:not(.chart-panel){padding:38px 8px 8px}.side-stack:first-child .panel:not(.chart-panel) .mini-status{grid-template-columns:70px 1fr;gap:8px}.side-stack:first-child .panel:not(.chart-panel) .donut{width:62px}.side-stack:first-child .panel:not(.chart-panel) .bars{gap:4px}.side-stack:first-child .panel:not(.chart-panel) .bars label{font-size:12px}.side-stack:first-child .panel:not(.chart-panel) progress{height:4px}.device-status-panel{padding:42px 10px 10px}.site-live-card{grid-template-columns:1fr;width:calc(100% - 20px);margin:10px 10px 8px;padding:9px 10px}.site-live-card dl{gap:4px}.device-live-list{gap:6px;padding:0 10px 10px}.device-live-card{gap:4px 10px;padding:8px 10px}.alarm-panel{flex-basis:190px}.side-stack:last-child .alarm-panel:last-child{flex-basis:166px}}@media(min-width:1681px){:root{--dashboard-side-width: 440px;--dashboard-side-gap: 30px;--dashboard-bottom-gap: 0px;--dashboard-map-offset-x: 0px}.dashboard-layout .side-stack{gap:12px}.dashboard-layout .map-stage{inset:0 calc(var(--dashboard-side-width) + var(--dashboard-side-gap)) var(--dashboard-bottom-gap)}.world-map-shell{left:-740px;top:-28px;width:1504px;height:725px;transform:none}.summary-panel{min-height:150px;padding:42px 16px 12px}.summary-group{gap:7px;padding:0 14px}.summary-list strong{font-size:17px;line-height:22px}.summary-list b,.summary-list [data-summary-metric=power],.summary-list [data-summary-metric=online-devices],.summary-list [data-summary-metric=max-temp],.summary-list [data-summary-metric=revenue]{font-size:19px;line-height:22px}.chart-panel{height:322px;padding-top:48px}.chart-panel h2{min-width:min(440px,100%)}.side-stack:first-child .panel:not(.chart-panel){padding:44px 14px 12px}.side-stack:first-child .panel:not(.chart-panel) .mini-status{grid-template-columns:138px 1fr;gap:10px}.side-stack:first-child .panel:not(.chart-panel) .donut{width:104px}.side-stack:first-child .panel:not(.chart-panel) .bars{gap:6px}.side-stack:first-child .panel:not(.chart-panel) .bars label{font-size:13px}.side-stack:first-child .panel:not(.chart-panel) progress{height:5px}.device-status-panel{padding:44px 14px 12px}.site-live-card{grid-template-columns:minmax(0,.9fr) minmax(0,1.5fr);width:calc(100% - 44px);margin:14px 22px 10px;padding:10px 12px}.site-live-card dl{gap:6px}.device-live-list{gap:8px;padding:0 22px 16px}.device-live-card{gap:5px 14px;padding:10px 12px}.alarm-panel{flex-basis:264px}.side-stack:last-child .alarm-panel:last-child{flex-basis:226px}}@media(max-width:1280px){:root{--content-height: auto}.app-shell{height:auto;min-height:100vh;grid-template-rows:auto auto auto;overflow:visible}.app-main{overflow:visible}.page-view.active,.page-surface,.dashboard-layout,.table-layout{height:auto}.dashboard-layout{display:grid;grid-template-columns:1fr;gap:16px;overflow:visible}.dashboard-layout .side-stack{position:static;width:auto}.dashboard-layout .map-stage{position:relative;inset:auto;grid-row:1;min-height:880px}}@media(max-width:1680px)and (min-width:1281px){.topbar{grid-template-columns:120px 210px minmax(0,1fr);gap:16px;align-items:start}.topbar:before{inset:0 calc(var(--shell-x-padding) * -1) -16px;background:url(/moro_ems/assets/lanhu-header-shell-CPHnw_QM.png) center -10px / 1640px 96px no-repeat,linear-gradient(180deg,rgba(25,67,103,.58),rgba(13,42,72,.3) 58%,transparent 100%)}.brand{padding-top:12px}.brand-mark{font-size:32px;line-height:31px}.brand-name{font-size:16px;letter-spacing:5px}.timebox{padding-top:10px}.timebox strong{font-size:32px;line-height:36px}.timebox span{font-size:17px}.title-frame{--title-frame-height: 68px;--title-h1-size: 30px;--title-sub-size: 11px;--title-sub-spacing: 8px}.title-frame h1{line-height:1.05}.top-actions{display:none}.main-nav{height:var(--nav-height);justify-content:stretch;gap:16px;padding-top:12px}.nav-item-wrap,.nav-item{flex:1 1 0;min-width:0;max-width:none}.nav-item-wrap{height:58px}.nav-item{height:58px;font-size:24px}.nav-submenu{top:58px}.dashboard-layout .side-stack{display:flex;gap:10px}.dashboard-layout .map-stage{inset:0 calc(var(--dashboard-side-width) + var(--dashboard-side-gap)) var(--dashboard-bottom-gap)}.world-map-shell{left:50%;top:-18px;width:min(1120px,calc(100vw - 120px));height:610px;transform:translate(calc(-50% - var(--dashboard-map-offset-x, 0px)))}.summary-panel{top:auto;bottom:0;min-height:150px;padding:40px 12px 10px;background:linear-gradient(90deg,#031323e6,#051f37b8 54%,#020f1dd1),linear-gradient(rgba(36,118,180,.026) 1px,transparent 1px),linear-gradient(90deg,rgba(36,118,180,.026) 1px,transparent 1px);background-size:auto,40px 40px,40px 40px}.summary-panel h2{min-width:min(440px,100%);height:38px;padding:7px 38px 0 54px;font-size:18px}.summary-list{grid-template-columns:repeat(5,minmax(0,1fr));gap:0}.summary-group{min-height:0;gap:7px;padding:0 10px;border-right:1px solid rgba(83,185,240,.16)}.summary-list strong{margin-bottom:2px;font-size:16px;line-height:21px}.summary-list span{gap:3px;font-size:12px;line-height:17px}.summary-list b,.summary-list [data-summary-metric=power],.summary-list [data-summary-metric=online-devices],.summary-list [data-summary-metric=max-temp],.summary-list [data-summary-metric=revenue]{font-size:18px;line-height:22px}.chart-panel{height:180px;padding-top:38px}.chart-panel h2{min-width:min(330px,100%)}.side-stack:first-child .panel:not(.chart-panel){padding:38px 8px 8px}.side-stack:first-child .panel:not(.chart-panel) .mini-status{grid-template-columns:70px 1fr;gap:8px}.side-stack:first-child .panel:not(.chart-panel) .donut{width:62px}.side-stack:first-child .panel:not(.chart-panel) .bars{gap:4px}.side-stack:first-child .panel:not(.chart-panel) .bars label{font-size:12px}.side-stack:first-child .panel:not(.chart-panel) progress{height:4px}.device-status-panel{padding:42px 10px 10px}.site-live-card{grid-template-columns:1fr;width:calc(100% - 20px);margin:10px 10px 8px;padding:9px 10px}.site-live-card dl{gap:4px}.device-live-list{gap:6px;padding:0 10px 10px}.device-live-card{gap:4px 10px;padding:8px 10px}.alarm-panel{flex-basis:190px}.side-stack:last-child .alarm-panel:last-child{flex-basis:166px}}@media(max-width:1280px)and (min-width:1000px)and (orientation:landscape){:root{--shell-x-padding: 18px;--topbar-height: 54px;--nav-height: 52px;--content-height: calc(100vh - var(--topbar-height) - var(--nav-height));--dashboard-side-width: 240px;--dashboard-side-gap: 10px;--dashboard-bottom-gap: 8px;--dashboard-map-offset-x: 265px}html,body{height:auto;min-height:100%;overflow-x:hidden;overflow-y:auto}.app-shell{height:auto;min-height:100vh;grid-template-rows:var(--topbar-height) var(--nav-height) minmax(520px,1fr);padding:0 var(--shell-x-padding);overflow:visible}.app-main{min-height:max(var(--content-height),520px);overflow:visible}.page-view.active,.page-surface,.dashboard-layout{height:100%;min-height:520px}.topbar{grid-template-columns:90px 150px minmax(0,1fr);gap:10px}.topbar:before{inset:0 calc(var(--shell-x-padding) * -1) -14px;background:url(/moro_ems/assets/lanhu-header-shell-CPHnw_QM.png) center -18px / 1220px 76px no-repeat,linear-gradient(180deg,rgba(25,67,103,.58),rgba(13,42,72,.3) 58%,transparent 100%)}.brand{padding-top:6px}.brand-mark{font-size:25px;line-height:24px}.brand-name{font-size:13px;letter-spacing:3px}.timebox{padding-top:4px}.timebox strong{font-size:26px;line-height:29px}.timebox span{font-size:14px}.title-frame{--title-frame-height: 50px;--title-h1-size: 22px;--title-sub-size: 9px;--title-sub-spacing: 6px;padding-inline:54px}.title-frame h1{line-height:1.08}.top-actions{display:none}.main-nav{height:var(--nav-height);justify-content:stretch;gap:9px;padding-top:8px;overflow:visible}.nav-item-wrap,.nav-item{flex:1 1 0;min-width:0;max-width:none}.nav-item-wrap,.nav-item{height:42px}.nav-item{font-size:17px}.dashboard-layout{position:relative;display:block;gap:0;overflow:visible}.dashboard-layout .side-stack{position:absolute;top:0;bottom:0;display:flex;width:var(--dashboard-side-width);gap:6px}.dashboard-layout .side-stack:first-child{left:0}.dashboard-layout .side-stack:last-child{right:0}.dashboard-layout .map-stage{position:absolute;inset:0 calc(var(--dashboard-side-width) + var(--dashboard-side-gap)) var(--dashboard-bottom-gap);min-height:0}.world-map-shell{left:50%;top:-8px;width:min(900px,calc(100vw - 70px));height:450px;transform:translate(calc(-50% - var(--dashboard-map-offset-x, 0px)))}.summary-panel{position:absolute;inset:auto 0 0;min-height:112px;padding:32px 8px 7px}.summary-panel h2{min-width:min(330px,100%);height:30px;padding:5px 28px 0 40px;font-size:14px}.summary-list{grid-template-columns:repeat(5,minmax(0,1fr));gap:0}.summary-group{min-height:0;gap:3px;padding:0 6px;border-right:1px solid rgba(83,185,240,.16)}.summary-list strong{margin-bottom:1px;font-size:13px;line-height:16px}.summary-list span{gap:2px;font-size:10px;line-height:13px}.summary-list b,.summary-list [data-summary-metric=power],.summary-list [data-summary-metric=online-devices],.summary-list [data-summary-metric=max-temp],.summary-list [data-summary-metric=revenue]{font-size:14px;line-height:17px}.chart-panel{height:98px;padding-top:28px}.chart-panel h2{min-width:min(240px,100%);height:28px;padding:5px 28px 0 40px;font-size:13px}.chart-panel .unit{margin-top:1px;padding-left:9px;font-size:10px}.trend-axis text,.trend-legend text,.trend-tooltip text{font-size:10px}.side-stack:first-child .panel:not(.chart-panel){flex:1 1 0;min-height:0;padding:30px 6px 6px}.side-stack:first-child .panel:not(.chart-panel) .mini-status{grid-template-columns:50px 1fr;gap:5px}.side-stack:first-child .panel:not(.chart-panel) .donut{width:44px}.donut small{font-size:10px}.side-stack:first-child .panel:not(.chart-panel) .bars{gap:2px}.side-stack:first-child .panel:not(.chart-panel) .bars label{font-size:10px}.side-stack:first-child .panel:not(.chart-panel) progress{height:4px}.device-status-panel{display:flex;flex:1 1 0;padding:32px 7px 7px}.device-status-panel h2,.alarm-panel h2{height:30px;padding:5px 28px 0 40px;font-size:14px}.site-live-card{grid-template-columns:1fr;width:calc(100% - 12px);margin:6px 6px 5px;padding:6px}.site-live-card dl{gap:4px}.site-live-card b{font-size:12px}.site-live-card dd{font-size:11px}.device-live-list{gap:5px;padding:0 6px 6px;overflow-y:auto}.device-live-card{gap:3px 6px;padding:6px}.alarm-panel{flex:0 0 132px;padding:32px 7px 7px}.side-stack:last-child .alarm-panel:last-child{flex-basis:112px}}@media(max-height:820px)and (min-width:1281px){:root{--shell-x-padding: 30px;--topbar-height: 74px;--nav-height: 70px;--dashboard-side-width: 330px;--dashboard-side-gap: 16px;--dashboard-bottom-gap: 12px;--dashboard-map-offset-x: 310px}html,body{height:auto;min-height:100%;overflow-x:hidden;overflow-y:auto}.app-shell{height:auto;min-height:100vh;grid-template-rows:var(--topbar-height) var(--nav-height) minmax(620px,1fr);overflow:visible}.app-main{min-height:max(var(--content-height),620px);overflow:visible}.page-view.active,.page-surface,.dashboard-layout{height:100%;min-height:620px}.dashboard-layout{overflow:visible}.topbar{grid-template-columns:120px 210px minmax(0,1fr);gap:14px}.brand{padding-top:11px}.brand-mark{font-size:32px;line-height:31px}.brand-name{font-size:16px}.timebox{padding-top:9px}.timebox strong{font-size:32px;line-height:35px}.timebox span{font-size:17px}.title-frame{--title-frame-height: 66px;--title-h1-size: 30px;--title-sub-size: 10px;--title-sub-spacing: 7px}.title-frame h1{line-height:1.05}.top-actions{display:none}.main-nav{height:var(--nav-height);justify-content:stretch;gap:14px;padding-top:10px;overflow:visible}.nav-item-wrap,.nav-item{flex:1 1 0;min-width:0;max-width:none}.nav-item-wrap,.nav-item{height:56px}.nav-item{font-size:23px}.dashboard-layout .side-stack{display:flex;gap:8px;width:var(--dashboard-side-width)}.dashboard-layout .map-stage{inset:0 calc(var(--dashboard-side-width) + var(--dashboard-side-gap)) var(--dashboard-bottom-gap)}.world-map-shell{left:50%;top:-14px;width:min(1080px,calc(100vw - 100px));height:560px;transform:translate(calc(-50% - var(--dashboard-map-offset-x, 0px)))}.summary-panel{top:auto;bottom:0;min-height:142px;padding:38px 10px 8px}.summary-panel h2{min-width:min(420px,100%);height:36px;padding:6px 34px 0 50px;font-size:17px}.summary-list{grid-template-columns:repeat(5,minmax(0,1fr));gap:0}.summary-group{min-height:0;gap:5px;padding:0 8px}.summary-list strong{margin-bottom:1px;font-size:15px;line-height:20px}.summary-list span{gap:2px;font-size:11px;line-height:15px}.summary-list b,.summary-list [data-summary-metric=power],.summary-list [data-summary-metric=online-devices],.summary-list [data-summary-metric=max-temp],.summary-list [data-summary-metric=revenue]{font-size:17px;line-height:21px}.chart-panel{height:140px;padding-top:36px}.chart-panel h2{min-width:min(330px,100%)}.chart-panel .unit{margin-top:2px;padding-left:12px;font-size:12px}.side-stack:first-child .panel:not(.chart-panel){flex:1 1 0;min-height:0;padding:36px 7px 7px}.side-stack:first-child .panel:not(.chart-panel) .mini-status{grid-template-columns:58px 1fr;gap:6px}.side-stack:first-child .panel:not(.chart-panel) .donut{width:52px}.side-stack:first-child .panel:not(.chart-panel) .bars{gap:3px}.side-stack:first-child .panel:not(.chart-panel) .bars label{font-size:11px}.side-stack:first-child .panel:not(.chart-panel) progress{height:4px}.device-status-panel{flex:1 1 0;padding:38px 8px 8px}.site-live-card{grid-template-columns:1fr;width:calc(100% - 16px);margin:8px 8px 6px;padding:8px}.site-live-card dl{gap:4px}.site-live-card b{font-size:14px}.site-live-card dd{font-size:13px}.device-live-list{gap:6px;padding:0 8px 8px}.device-live-card{gap:4px 8px;padding:8px}.alarm-panel{flex-basis:166px}.side-stack:last-child .alarm-panel:last-child{flex-basis:146px}}@media(max-width:760px){:root{--shell-x-padding: 12px}.app-shell{padding-bottom:16px}.app-topbar{height:auto;min-height:0}.topbar{gap:4px 12px;padding-top:0}.brand{min-height:78px;padding-top:24px;transform:none}.topbar__center{position:relative;inset:auto;grid-column:1 / -1;order:3;height:auto;margin-top:4px;pointer-events:auto}.title-frame{--title-frame-height: auto;min-height:52px;padding-block:6px 8px}.app-title{width:100%}.main-nav{width:100%;height:auto;min-height:48px;margin-top:6px;padding:0 0 8px;overflow-x:auto;overflow-y:hidden;justify-content:flex-start;scroll-padding-inline:var(--shell-x-padding)}.nav-item-wrap,.nav-item{flex:0 0 auto}.dashboard-layout .map-stage{grid-row:auto;min-height:0}.table-layout .table-frame{height:auto}}
