:root{--bg-1:#153d5e;--bg-2:#153d5e;--panel:#16375ad9;--panel-border:#1890ff2e;--text:#e0e6f0;--sub:#8cb8e6;--blue:#69c0ff;--green:#95de64;--yellow:#ffc53d;--red:#ff7875}*{box-sizing:border-box}html,body,#app{width:100%;min-width:320px;height:100%;margin:0;overflow:hidden}@media (width<=1100px){html,body,#app{overflow:auto}}body{color:var(--text);background:radial-gradient(circle at 12% 10%, #2272dc2e, transparent 35%), radial-gradient(circle at 80% 0%, #27beff1f, transparent 32%), linear-gradient(160deg, var(--bg-1), var(--bg-2));font-family:PingFang SC,Microsoft YaHei,sans-serif}.dashboard-screen{box-sizing:border-box;height:100%;padding:12px}.dashboard-grid{grid-template-rows:60px 460px 1fr;grid-template-columns:280px 1fr 280px;gap:12px;width:100%;height:100%;display:grid}.panel{background:var(--panel);border:1px solid var(--panel-border);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border-radius:10px;padding:14px;overflow:hidden}.top-bar{background-color:#08182eeb;background-image:linear-gradient(115deg,#08182eeb 20%,#14457c57 48%,#08182eeb 76%),none;background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:220% 100%;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;border:1px solid #1890ff40;border-radius:8px;grid-row:1;justify-content:space-between;align-items:center;padding:0 18px;display:flex;grid-column:1/-1!important}.title-wrap{align-items:center;gap:14px;display:flex}.top-title{letter-spacing:1px;background:linear-gradient(90deg,#84d7ff,#4bb0ff);-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin:0;font-size:20px}.emergency-btn{color:var(--red);background:#ff4d4f1f;border:1px solid #ff4d4f80;border-radius:6px;padding:5px 12px;font-size:12px;text-decoration:none}.top-right{color:var(--sub);align-items:center;gap:16px;font-size:13px;display:flex}.top-time{color:var(--blue);font-size:15px;font-weight:600}.fullscreen-btn,.map-btn{color:var(--blue);cursor:pointer;background:#1890ff1a;border:1px solid #1890ff59;border-radius:6px}.fullscreen-btn{height:28px;padding:0 12px}.logout-btn{height:28px;color:var(--blue);cursor:pointer;background:#1890ff1a;border:1px solid #1890ff59;border-radius:6px;padding:0 12px;font-size:13px}.panel-title{color:var(--blue);border-bottom:1px solid #1890ff26;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;font-size:16px;font-weight:600;display:flex}.panel-title:before{content:"";background:#1d9eff;border-radius:2px;width:3px;height:13px}.panel-title.with-gap{margin-top:12px}.panel-title.no-border{border-bottom:0;margin-bottom:0;padding-bottom:0}.left-col,.right-col,.center-top,.center-bottom,.zone-alert-panel,.energy-rank-panel{flex-direction:column;height:100%;display:flex}.left-col{grid-area:2/1}.center-top{grid-area:2/2}.right-col{grid-area:2/3}.center-bottom{grid-area:3/2}.zone-alert-panel{grid-area:3/1}.energy-rank-panel{grid-area:3/3}.kpi-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.kpi-card{text-align:center;background:#1890ff14;border:1px solid #1890ff33;border-radius:8px;padding:11px}.kpi-value{font-size:27px;font-weight:700}.kpi-label{color:var(--sub);margin-top:4px;font-size:11px}.pie-chart{width:100%;height:200px}.chart{width:100%;height:190px}.chart.small{height:130px}.map-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.map-controls{align-items:center;gap:6px;display:flex}.map-btn{width:32px;height:28px}.zoom-label{color:var(--sub);text-align:center;min-width:36px;font-size:11px}.map-viewport{cursor:grab;background:radial-gradient(#2a5f8a 0%,#1e4e72 35%,#153d5e 65%,#0d2a4a 100%);border-radius:8px;flex:1;position:relative;overflow:hidden}.map-viewport.grabbing{cursor:grabbing}.map-content{transform-origin:0 0;position:relative}.map-canvas{padding:40px;display:inline-block;position:relative}.road{background:#ffffff0d;position:absolute}.road.horizontal{width:100%;height:30px;top:185px;left:0}.road.vertical{width:20px;height:100%;top:0;left:270px}.building-status{background:#ffffff1a;border-radius:4px;padding:2px 8px;font-size:11px}.building.is-danger{background:#ff4d4f1f;border-color:#ff4d4f8c}.building.is-warning{border-color:#faad148c}.device-dot{cursor:pointer;border:none;border-radius:50%;width:12px;height:12px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 8px}.device-dot.is-online{color:#52c41a;background:#52c41a}.device-dot.is-warning{color:#faad14;background:#faad14}.device-dot.is-danger{color:#ff4d4f;background:#ff4d4f;animation:1.5s ease-in-out infinite pulse-danger}@keyframes pulse-danger{0%,to{transform:translate(-50%,-50%)scale(1);box-shadow:0 0 8px}50%{transform:translate(-50%,-50%)scale(1.3);box-shadow:0 0 16px,0 0 24px}}.device-dot.is-offline{color:#667085;background:#667085}.map-legend{color:var(--sub);background:#06101ecc;border:1px solid #1890ff33;border-radius:4px;gap:10px;padding:5px 8px;font-size:10px;display:flex;position:absolute;bottom:10px;left:10px}.dot{border-radius:50%;width:7px;height:7px;margin-right:4px;display:inline-block}.dot.online{background:#52c41a}.dot.warning{background:#faad14}.dot.danger{background:#ff4d4f}.dot.offline{background:#667085}.map-minimap{background:#06101ecc;border:1px solid #1890ff40;border-radius:5px;width:120px;height:80px;position:absolute;bottom:10px;right:10px}.map-minimap-viewport{background:#1890ff29;border:1px solid #69c0ff;position:absolute}.map-tooltip{background:#051223f5;border:1px solid #1890ff52;border-radius:6px;min-width:170px;padding:9px 10px;font-size:11px;position:absolute}.map-tooltip-title{color:var(--blue);margin-bottom:6px;font-weight:600}.map-tooltip-row{color:var(--sub);justify-content:space-between;padding:2px 0;display:flex}.device-panel{opacity:0;background:#051122f2;border-left:1px solid #1890ff40;width:300px;padding:16px;transition:right .3s;position:absolute;top:0;bottom:0;right:-320px}.device-panel.show{opacity:1;right:0}.close-btn{color:#9ac4ef;cursor:pointer;background:0 0;border:1px solid #fff3;border-radius:6px;width:28px;height:28px;position:absolute;top:10px;right:10px}.device-title{color:var(--blue);padding-right:26px;font-size:16px;font-weight:600}.device-subtitle{color:var(--sub);border-bottom:1px solid #1890ff33;margin-top:4px;padding-bottom:10px;font-size:11px}.device-info-grid{gap:8px;margin-top:14px;display:grid}.device-info-grid div{border-bottom:1px solid #ffffff0a;justify-content:space-between;padding-bottom:6px;font-size:12px;display:flex}.device-info-grid span{color:var(--sub)}.panel.center-top.is-fullscreen{z-index:1000;background:#050d19fa;border:none;border-radius:0;margin:0;padding:0;position:fixed;inset:0}.panel.center-top.is-fullscreen .map-header{background:#050d19f2;border-bottom:1px solid #1890ff26;padding:10px 20px}.panel.center-top.is-fullscreen .map-viewport{position:absolute;inset:60px 0 0}.zone-alert-list{gap:10px;display:grid}.loading-container,.error-container,.empty-container{color:var(--sub);flex-direction:column;justify-content:center;align-items:center;padding:40px 20px;font-size:14px;display:flex}.loading-spinner{border:2px solid #1890ff4d;border-top-color:#69c0ff;border-radius:50%;width:32px;height:32px;margin-bottom:12px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-container{color:#ff7875}.empty-container{color:#8cb8e6}.zone-alert-item{border-bottom:1px solid #ffffff0d;padding-bottom:10px}.zone-alert-item p{color:#6f92bc;margin:4px 0 0;font-size:14px}.zone-row{justify-content:space-between;align-items:center;font-size:16px;display:flex}.bar{background:#ffffff14;border-radius:2px;height:4px;margin-top:4px}.bar span{border-radius:2px;height:100%;display:block}.zone-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;margin-right:8px;display:inline-block}.zone-dot.danger{background:#ff4d4f;box-shadow:0 0 6px #ff4d4f47}.zone-dot.warning{background:#faad14;box-shadow:0 0 6px #faad1438}.zone-dot.normal{background:#52c41a;box-shadow:0 0 6px #52c41a38}.env-compare{margin-left:8px;font-size:11px;font-weight:400}.env-compare.up{color:#ff7875}.env-compare.down{color:#52c41a}.energy-tabs{gap:0;margin-left:auto;display:flex}.energy-tab{cursor:pointer;color:#8cb8e6;background:0 0;border:1px solid #1890ff1f;padding:2px 10px;font-size:11px;transition:all .12s}.energy-tab:first-child{border-radius:4px 0 0 4px}.energy-tab:last-child{border-radius:0 4px 4px 0}.energy-tab.active{color:#69c0ff;background:#1890ff29;border-color:#1890ff47}.energy-view{display:none}.energy-view.active{display:block}.chart-area{position:relative}.center-bottom{overflow:auto}.alert-table{border-collapse:collapse;width:100%;font-size:14px}.alert-table th{text-align:left;color:#88b9ea;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #1890ff33;padding:8px 6px;font-size:14px;overflow:hidden}.alert-table td{color:#c8daf4;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #ffffff0d;padding:9px 6px;overflow:hidden}.live-dot{background:#ff4d4f;border-radius:50%;width:7px;height:7px}.realtime-list{display:grid}.data-row{color:#a9c8ea;border-bottom:1px solid #ffffff0a;justify-content:space-between;padding:8px 0;font-size:12px;display:flex}.text-blue{color:var(--blue)}.text-green,.text-normal{color:var(--green)}.text-yellow,.text-warning{color:var(--yellow)}.text-red,.text-danger{color:var(--red)}@media (width<=1920px){.dashboard-grid{grid-template-rows:56px 460px 1fr;grid-template-columns:280px 1fr 280px;gap:10px}.top-right{gap:12px;font-size:12px}.kpi-value{font-size:24px}.panel{padding:12px}}@media (width<=1680px){.dashboard-grid{grid-template-rows:52px 440px 1fr;grid-template-columns:280px 1fr 280px;gap:8px}.top-title{font-size:18px}.top-right{gap:10px;font-size:11px}.kpi-value{font-size:22px}.kpi-label{font-size:10px}.panel-title{margin-bottom:10px;font-size:14px}.panel{padding:10px}}@media (width<=1360px){.dashboard-grid{grid-template-rows:50px 460px 1fr;grid-template-columns:280px 1fr 280px;gap:8px}.top-title{font-size:16px}.top-right{gap:8px;font-size:11px}.kpi-value{font-size:20px}.chart{height:160px}.chart.small{height:110px}}@media (width<=1100px){.dashboard-grid{grid-template-rows:auto;grid-template-columns:1fr;grid-auto-rows:minmax(200px,auto);gap:10px;height:auto;min-height:100%}.dashboard-screen{height:auto;min-height:100vh;overflow-x:hidden}.top-bar{flex-direction:column;grid-area:auto/1/auto/-1;justify-content:center;align-items:flex-start;gap:10px;min-height:80px;padding:12px 14px}.left-col,.center-top,.right-col,.center-bottom,.zone-alert-panel,.energy-rank-panel{grid-area:auto/1}.top-title{font-size:16px}.top-right{flex-wrap:wrap;gap:8px;font-size:12px}.kpi-value{font-size:24px}.kpi-grid{grid-template-columns:1fr 1fr}.map-viewport{min-height:320px}.chart{height:180px}.chart.small{height:130px}.panel{padding:12px}.panel-title{font-size:15px}.alert-table{font-size:13px}.alert-table th,.alert-table td{padding:6px 4px}}@media (width<=768px){.dashboard-screen{height:auto;min-height:100vh;padding:8px}.dashboard-grid{gap:8px;height:auto}.top-bar{flex-direction:column;align-items:flex-start;gap:8px;min-height:70px;padding:10px 12px}.top-title{font-size:14px}.top-right{flex-wrap:nowrap;justify-content:space-between;gap:10px;font-size:11px}.title-wrap{flex-wrap:wrap;justify-content:space-between;gap:8px}.company-name{opacity:.8;margin-top:2px;font-size:12px;display:block}.emergency-btn{white-space:nowrap;padding:4px 10px;font-size:11px}.action-btns{gap:6px;display:flex}.action-btn{background:#1890ff33;border:1px solid #1890ff4d;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;padding:0;font-size:16px;display:flex}.top-time{font-size:11px}.kpi-value{font-size:22px}.kpi-label{font-size:11px}.map-viewport{min-height:280px}.chart{height:150px}.chart.small{height:100px}.panel{padding:10px}.panel-title{margin-bottom:8px;font-size:14px}.alert-table{font-size:12px}.alert-table th,.alert-table td{text-overflow:ellipsis;white-space:nowrap;padding:5px 3px;overflow:hidden}.alert-table th:first-child,.alert-table td:first-child,.alert-table th:nth-child(5),.alert-table td:nth-child(5){min-width:60px}.alert-table th:nth-child(2),.alert-table td:nth-child(2){min-width:80px}.alert-table th:nth-child(3),.alert-table td:nth-child(3){min-width:100px}.rank-bar{min-width:80px}.rank-right{min-width:140px}}@media (width<=480px){.dashboard-screen{height:auto;min-height:100vh;padding:6px}.dashboard-grid{gap:6px;height:auto}.top-bar{flex-direction:column;align-items:flex-start;gap:6px;min-height:60px;padding:8px 10px}.top-title{font-size:13px}.top-right{flex-wrap:nowrap;justify-content:space-between;gap:8px;font-size:10px}.title-wrap{flex-wrap:wrap;justify-content:space-between;gap:6px}.company-name{opacity:.8;margin-top:0;margin-left:4px;font-size:11px;display:inline}.emergency-btn{display:none}.action-btns{gap:4px}.action-btn{width:32px;height:32px;font-size:14px}.kpi-value{font-size:20px}.kpi-label{font-size:10px}.map-viewport{min-height:240px}.chart{height:130px}.chart.small{height:90px}.panel{padding:8px}.panel-title{margin-bottom:6px;font-size:13px}.alert-table{font-size:11px}.alert-table th,.alert-table td{padding:4px 2px}.zone-alert-item p{font-size:12px}.zone-row{font-size:14px}.rank-badge{width:28px;height:28px;font-size:12px}.rank-label{font-size:12px}.rank-sub{font-size:10px}.rank-right{min-width:100px}.rank-bar{min-width:60px}}.rank-list{flex-direction:column;gap:8px;display:flex}.rank-item{border-bottom:1px solid #ffffff08;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex;overflow:hidden}.rank-left{align-items:center;gap:10px;display:flex}.rank-badge{color:#0b2340;background:#dbe9ff;border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;font-weight:700;display:inline-flex}.rank-1{color:#fff;background:linear-gradient(90deg,#ff7875,#ff4d4f)}.rank-2{color:#2b1500;background:linear-gradient(90deg,#ffc53d,#faad14)}.rank-3{color:#fff;background:linear-gradient(90deg,#73d13d,#52c41a)}.rank-4{color:#fff;background:linear-gradient(90deg,#40a9ff,#1890ff)}.rank-5{color:#fff;background:linear-gradient(90deg,#69c0ff,#40a9ff)}.rank-info{flex-direction:column;flex:1;gap:6px;display:flex}.rank-info .rank-change{margin-left:auto}.rank-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.rank-label{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;font-weight:600;overflow:hidden}.rank-sub{color:var(--sub);white-space:nowrap;text-align:right;flex-shrink:0;min-width:60px;font-size:14px}.rank-right{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.rank-bar-row{align-items:center;gap:10px;display:flex}.rank-bar{background:#ffffff0a;border-radius:6px;flex:1;height:8px;overflow:hidden}.rank-bar span{border-radius:6px;height:100%;display:block}.rank-change{text-align:right;width:40px;font-size:12px;font-weight:600}.rank-change.up{color:var(--red)}.rank-change.down{color:var(--green)}.view-processed-btn{color:#69c0ff;cursor:pointer;background:#1890ff1a;border:1px solid #1890ff66;border-radius:6px;margin-left:auto;padding:4px 12px;font-size:12px;transition:all .15s}.view-processed-btn:hover{background:#1890ff33;border-color:#1890ff99}.alert-row-primary{background:#1890ff14}.alert-row-danger{background:#ff4d4f14}.alert-row-warning{background:#faad140f}.alert-row-success{background:#52c41a0a}.alert-row-info{background:#69c0ff0a}.slide-in{opacity:0;animation:.4s ease-out forwards slideIn;transform:translate(-20px)}@keyframes slideIn{to{opacity:1;transform:translate(0)}}.type-tag,.level-tag,.status-tag{border-radius:4px;padding:2px 8px;font-size:12px;font-weight:500;display:inline-block}.tag-primary{color:#69c0ff;background:#1890ff2e;border:1px solid #1890ff59}.tag-danger{color:#ff4d4f;background:#ff4d4f2e;border:1px solid #ff4d4f59}.tag-warning{color:#faad14;background:#faad142e;border:1px solid #faad1459}.tag-success{color:#52c41a;background:#52c41a26;border:1px solid #52c41a4d}.tag-info{color:#69c0ff;background:#69c0ff26;border:1px solid #69c0ff4d}.alert-thumbs{gap:4px;display:flex}.alert-thumb{cursor:pointer;border:1px solid #1890ff33;border-radius:4px;width:56px;height:38px;overflow:hidden}.alert-thumb:hover{border-color:#1890ff80}.alert-no-img{color:#4a6a8a;font-size:14px}.alert-image{object-fit:cover;width:100%;height:100%}.global-loading[data-v-0ccf4640]{z-index:9999;background:linear-gradient(160deg,#060f1f,#0a1b32);flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loading-spinner[data-v-0ccf4640]{border:3px solid #1890ff33;border-top-color:#69c0ff;border-radius:50%;width:50px;height:50px;animation:1s linear infinite spin-0ccf4640}@keyframes spin-0ccf4640{to{transform:rotate(360deg)}}.loading-text[data-v-0ccf4640]{color:#69c0ff;letter-spacing:2px;margin-top:20px;font-size:16px}.device-energy-panel[data-v-34dfda17]{width:100%}.loading[data-v-34dfda17]{color:#8f9bb3;text-align:center;padding:20px}.dp-section[data-v-34dfda17]{border-top:1px solid #ffffff0f;margin-top:16px;padding-top:16px}.dp-section[data-v-34dfda17]:first-child{border-top:none;margin-top:0;padding-top:0}.dp-section-title[data-v-34dfda17]{color:#8f9bb3;margin-bottom:12px;font-size:12px;font-weight:500}.dp-row[data-v-34dfda17]{justify-content:space-between;padding:6px 0;font-size:12px;display:flex}.dp-label[data-v-34dfda17]{color:#8f9bb3}.dp-value[data-v-34dfda17]{color:#fff;font-weight:500}.dp-value.up[data-v-34dfda17]{color:#52c41a}.dp-value.down[data-v-34dfda17]{color:#ff7875}.dp-chart-mini[data-v-34dfda17]{margin-top:8px}.chart[data-v-34dfda17]{width:100%}.device-info-row[data-v-1349b570]{border-bottom:1px solid #ffffff0a;justify-content:space-between;padding-bottom:6px;font-size:12px;display:flex}.device-id-wrapper[data-v-1349b570]{align-items:center;gap:6px;display:flex}.device-id[data-v-1349b570]{text-overflow:ellipsis;white-space:nowrap;color:#fff;max-width:150px;font-weight:500;overflow:hidden}.copy-btn[data-v-1349b570]{color:#8f9bb3;cursor:pointer;background:#ffffff1a;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;transition:all .2s;display:flex}.copy-btn[data-v-1349b570]:hover{color:#fff;background:#fff3}.copy-btn.copied[data-v-1349b570]{color:#95de64;background:#95de6433}.loading[data-v-1349b570]{color:#8f9bb3;text-align:center;padding:20px}.dp-section[data-v-1349b570]{border-top:1px solid #ffffff0f;margin-top:16px;padding-top:16px}.dp-section-title[data-v-1349b570]{color:#8f9bb3;margin-bottom:12px;font-size:12px;font-weight:500}.no-alarm[data-v-1349b570]{color:#8f9bb3;text-align:center;background:#ffffff05;border-radius:8px;padding:16px;font-size:12px}.dp-alert-item[data-v-1349b570]{border-style:solid;border-width:1px;border-radius:8px;margin-bottom:10px;padding:12px}.dp-alert-item.alert-critical[data-v-1349b570]{background:#ff78750a;border-color:#ff787526}.dp-alert-item.alert-warning[data-v-1349b570]{background:#faad140a;border-color:#faad1426}.dp-alert-item.alert-notice[data-v-1349b570]{background:#52c41a0a;border-color:#52c41a26}.dp-alert-item.alert-info[data-v-1349b570]{background:#1890ff0a;border-color:#1890ff26}.alert-header[data-v-1349b570]{justify-content:space-between;align-items:center;display:flex}.alert-type[data-v-1349b570]{font-size:12px;font-weight:600}.alert-time-ago[data-v-1349b570]{color:#999;font-size:10px}.alert-desc[data-v-1349b570]{color:#8cb8e6;margin-top:4px;font-size:11px}.dp-alert-time[data-v-1349b570]{color:#6b7c93;margin-top:6px;font-size:10px}.more-alarm[data-v-1349b570]{color:#6b7c93;text-align:center;margin-top:4px;padding:8px;font-size:10px}.dp-btn-area[data-v-1349b570]{border-top:1px solid #ffffff0f;margin-top:16px;padding-top:16px}.dp-history-btn[data-v-1349b570]{color:#69c0ff;cursor:pointer;background:#1890ff26;border:1px solid #1890ff4d;border-radius:8px;width:100%;padding:10px;font-size:12px;transition:all .2s}.dp-history-btn[data-v-1349b570]:hover{background:#1890ff40;border-color:#1890ff80}.map-content[data-v-296c2e34]{width:100%;height:100%}.map-canvas[data-v-296c2e34]{width:100%;height:100%;position:relative;overflow:hidden}.map-bg[data-v-296c2e34]{pointer-events:none;z-index:1;background-image:url(/assets/location-bg-Br7yexXj.png);background-position:bottom;background-repeat:no-repeat;background-size:80% 80%;width:100%;height:100%;position:absolute;top:0;left:0}.map-svg[data-v-296c2e34]{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.svg-region[data-v-296c2e34]{cursor:pointer;pointer-events:auto;transition:all .3s}.svg-region[data-v-296c2e34]:hover{fill:#69c0ff4d!important}.svg-label[data-v-296c2e34]{fill:#dbe7fb;pointer-events:none;text-shadow:1px 1px 2px #00000080;font-size:12px;font-weight:500}.building[data-v-296c2e34]{z-index:10;background:#0a1929d9;border:2px solid #1890ff99;border-radius:120px;padding:10px;position:absolute}.building-header[data-v-296c2e34]{justify-content:center;margin-top:14px;display:flex}.building-name[data-v-296c2e34]{text-align:center;color:#64b5f6f2;font-size:12px;font-weight:900}.building-location[data-v-296c2e34]{text-align:center;color:#64b5f6f2;font-size:11px}.building.is-danger[data-v-296c2e34]{background:#2d181ad9;border-color:#ff4d4fb3}.building.is-warning[data-v-296c2e34]{background:#2d2618d9;border-color:#faad14b3}.building.color-1[data-v-296c2e34]{background:#0d2847d9;border-color:#1890ff99}.building.color-2[data-v-296c2e34]{background:#142814d9;border-color:#2e7d3299}.building.color-3[data-v-296c2e34]{background:#211028d9;border-color:#7b1fa299}.building.color-4[data-v-296c2e34]{background:#0a1f1ed9;border-color:#00968899}.device-emoji[data-v-296c2e34]{z-index:20;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;transition:transform .3s;display:flex;position:absolute;transform:translate(-50%,-50%)}.device-emoji[data-v-296c2e34]:hover{transform:translate(-50%,-50%)scale(1.2)}.device-emoji.is-online[data-v-296c2e34]{color:#95de64}.device-emoji.is-warning[data-v-296c2e34]{color:#ffc53d}.device-emoji.is-danger[data-v-296c2e34]{color:#ff7875}.device-emoji.is-offline[data-v-296c2e34]{color:#8f9bb3;opacity:.6}@keyframes warning-pulse-296c2e34{0%,to{transform:translate(-50%,-50%)scale(1)}50%{transform:translate(-50%,-50%)scale(1.15)}}@keyframes danger-pulse-296c2e34{0%,to{transform:translate(-50%,-50%)scale(1)}50%{transform:translate(-50%,-50%)scale(1.25)}}.map-tooltip[data-v-296c2e34]{z-index:100;background:#0a1929f2;border:1px solid #1890ff66;border-radius:8px;min-width:170px;padding:12px 14px;position:absolute;box-shadow:0 4px 20px #0006}.map-tooltip-title[data-v-296c2e34]{color:#64b5f6;border-bottom:1px solid #ffffff1a;margin-bottom:8px;padding-bottom:6px;font-size:14px;font-weight:600}.map-tooltip-row[data-v-296c2e34]{color:#a0aec0;justify-content:space-between;padding:4px 0;font-size:12px;display:flex}.map-tooltip-row span[data-v-296c2e34]:last-child{font-weight:500}.legend-device[data-v-296c2e34]{color:#a0aec0;align-items:center;gap:4px;margin-left:12px;font-size:12px;display:flex}.legend-device svg[data-v-296c2e34]{vertical-align:middle;display:inline-block}.panel[data-v-0b4620fa]{overflow:hidden}.pagination-control[data-v-0b4620fa]{background:#002a5a80;justify-content:center;align-items:center;gap:16px;padding:12px 0;display:flex}.page-btn[data-v-0b4620fa]{color:#8cb8e6;cursor:pointer;background:#003e7580;border:1px solid #8cb8e64d;border-radius:4px;justify-content:center;align-items:center;width:36px;height:36px;transition:all .3s;display:flex}.page-btn[data-v-0b4620fa]:hover:not(:disabled){background:#8cb8e633;border-color:#8cb8e6}.page-btn[data-v-0b4620fa]:disabled{opacity:.4;cursor:not-allowed}.arrow[data-v-0b4620fa]{font-size:20px;line-height:1}.page-info[data-v-0b4620fa]{color:#8cb8e6;text-align:center;min-width:100px;font-size:14px}.alert-table td.no-data[data-v-0b4620fa]{color:#8cb8e6;text-align:center;border-bottom:none;padding:40px}.modal-overlay[data-v-58a455ec]{z-index:1001;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000d9;display:none;position:fixed;inset:0}.modal-overlay.show[data-v-58a455ec]{justify-content:center;align-items:center;animation:.3s ease-out forwards img-fadeIn-58a455ec;display:flex}@keyframes img-fadeIn-58a455ec{0%{opacity:0}to{opacity:1}}.modal-box[data-v-58a455ec]{background:linear-gradient(145deg,#0a1628,#0d1f3a);border:1px solid #1890ff59;border-radius:12px;width:90%;max-width:900px;overflow:hidden;box-shadow:0 20px 60px #00000080,0 0 30px #1890ff26}.slide-in[data-v-58a455ec]{animation:.4s ease-out forwards img-slideIn-58a455ec}@keyframes img-slideIn-58a455ec{0%{opacity:0;transform:translateY(-20px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-header[data-v-58a455ec]{background:linear-gradient(135deg,#1890ff14,#0000);border-bottom:1px solid #1890ff33;justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.header-left[data-v-58a455ec]{align-items:center;gap:12px;display:flex}.alarm-title[data-v-58a455ec]{color:#dbe9ff;font-size:16px;font-weight:600}.alarm-level[data-v-58a455ec]{border-radius:12px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:500;display:flex}.alarm-level.level-critical[data-v-58a455ec]{color:#ff4d4f;background:#ff4d4f33;border:1px solid #ff4d4f66}.alarm-level.level-warning[data-v-58a455ec]{color:#faad14;background:#faad1433;border:1px solid #faad1466}.alarm-level.level-notice[data-v-58a455ec]{color:#52c41a;background:#52c41a33;border:1px solid #52c41a66}.alarm-icon[data-v-58a455ec]{font-size:14px;animation:1.5s ease-in-out infinite img-pulse-58a455ec}@keyframes img-pulse-58a455ec{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.modal-close[data-v-58a455ec]{color:#8cb8e6;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:8px;padding:4px 10px;font-size:18px;transition:all .2s}.modal-close[data-v-58a455ec]:hover{color:#dbe9ff;background:#ffffff26}.modal-body[data-v-58a455ec]{padding:16px}.modal-info[data-v-58a455ec]{background:#001e3c66;border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px;font-size:13px;display:flex}.info-item[data-v-58a455ec]{color:#dbe9ff}.info-divider[data-v-58a455ec]{color:#1890ff4d}.modal-image[data-v-58a455ec]{border:1px solid #1890ff33;border-radius:8px;width:100%;overflow:hidden}.modal-image-content[data-v-58a455ec]{border-radius:6px;width:100%;height:auto;max-height:400px}@media (width<=480px){.modal-box[data-v-58a455ec]{width:95%;margin:10px}.modal-body[data-v-58a455ec]{padding:12px}.alarm-title[data-v-58a455ec]{font-size:14px}}.processed-modal-overlay[data-v-16d659c2]{z-index:1000;background:#000000b3;display:none;position:fixed;inset:0}.processed-modal-overlay.show[data-v-16d659c2]{justify-content:center;align-items:center;display:flex}.processed-modal[data-v-16d659c2]{background:#0a1628;border:1px solid #1890ff4d;border-radius:12px;width:90%;max-width:1200px;max-height:80vh;overflow:hidden}.processed-modal-header[data-v-16d659c2]{border-bottom:1px solid #1890ff33;justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.processed-modal-title[data-v-16d659c2]{color:#dbe9ff;font-size:18px;font-weight:600}.processed-modal-close[data-v-16d659c2]{color:#8cb8e6;cursor:pointer;background:0 0;border:none;padding:4px;font-size:20px}.processed-modal-body[data-v-16d659c2]{max-height:60vh;padding:20px;overflow-y:auto}.processed-table[data-v-16d659c2]{border-collapse:collapse;width:100%}.processed-table th[data-v-16d659c2],.processed-table td[data-v-16d659c2]{text-align:left;border-bottom:1px solid #1890ff1a;padding:12px 8px;font-size:13px}.processed-table th[data-v-16d659c2]{color:#8cb8e6;font-weight:600}.processed-table td[data-v-16d659c2]{color:#dbe9ff}.processed-photo-thumb[data-v-16d659c2]{background:#1890ff33;border-radius:4px;margin-right:4px;padding:2px 6px;font-size:12px;display:inline-block}.processed-table td.no-data[data-v-16d659c2]{color:#8cb8e6;text-align:center;border-bottom:none;padding:40px}.modal-overlay[data-v-f7b491a9]{z-index:1002;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000d9;display:none;position:fixed;inset:0}.modal-overlay.show[data-v-f7b491a9]{justify-content:center;align-items:center;animation:.3s ease-out forwards sse-fadeIn-f7b491a9;display:flex}@keyframes sse-fadeIn-f7b491a9{0%{opacity:0}to{opacity:1}}.modal-box[data-v-f7b491a9]{background:linear-gradient(145deg,#0a1628,#0d1f3a);border:1px solid #1890ff59;border-radius:12px;width:90%;max-width:900px;overflow:hidden;box-shadow:0 20px 60px #00000080,0 0 30px #1890ff26}.slide-in[data-v-f7b491a9]{animation:.4s ease-out forwards sse-slideIn-f7b491a9}@keyframes sse-slideIn-f7b491a9{0%{opacity:0;transform:translateY(-20px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-header[data-v-f7b491a9]{background:linear-gradient(135deg,#1890ff14,#0000);border-bottom:1px solid #1890ff33;justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.header-left[data-v-f7b491a9]{align-items:center;gap:12px;display:flex}.alarm-title[data-v-f7b491a9]{color:#dbe9ff;font-size:16px;font-weight:600}.alarm-level[data-v-f7b491a9]{border-radius:12px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:500;display:flex}.alarm-level.level-critical[data-v-f7b491a9]{color:#ff4d4f;background:#ff4d4f33;border:1px solid #ff4d4f66}.alarm-level.level-warning[data-v-f7b491a9]{color:#faad14;background:#faad1433;border:1px solid #faad1466}.alarm-level.level-notice[data-v-f7b491a9]{color:#52c41a;background:#52c41a33;border:1px solid #52c41a66}.alarm-icon[data-v-f7b491a9]{font-size:14px;animation:1.5s ease-in-out infinite sse-pulse-f7b491a9}@keyframes sse-pulse-f7b491a9{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.modal-close[data-v-f7b491a9]{color:#8cb8e6;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:8px;padding:4px 10px;font-size:18px;transition:all .2s}.modal-close[data-v-f7b491a9]:hover{color:#dbe9ff;background:#ffffff26}.modal-body[data-v-f7b491a9]{padding:16px}.modal-info[data-v-f7b491a9]{background:#001e3c66;border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px;font-size:13px;display:flex}.info-item[data-v-f7b491a9]{color:#dbe9ff}.info-divider[data-v-f7b491a9]{color:#1890ff4d}.modal-image[data-v-f7b491a9]{border:1px solid #1890ff33;border-radius:8px;width:100%;overflow:hidden}.modal-image-content[data-v-f7b491a9]{border-radius:6px;width:100%;height:auto;max-height:400px}@media (width<=480px){.modal-box[data-v-f7b491a9]{width:95%;margin:10px}.modal-body[data-v-f7b491a9]{padding:12px}.alarm-title[data-v-f7b491a9]{font-size:14px}}.login-overlay[data-v-e75a5386]{z-index:2000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.login-overlay.show[data-v-e75a5386]{display:flex}.login-modal[data-v-e75a5386]{background:linear-gradient(145deg,#0d1f3a 0%,#0a1628 100%);border:1px solid #69c0ff4d;border-radius:16px;width:420px;padding:32px;animation:.3s ease-out modalFadeIn-e75a5386;position:relative;box-shadow:0 0 40px #1890ff26,0 20px 60px #00000080}@keyframes modalFadeIn-e75a5386{0%{opacity:0;transform:translateY(-20px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.login-close[data-v-e75a5386]{color:#69c0ff;cursor:pointer;background:#69c0ff1a;border:none;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;transition:all .3s;display:flex;position:absolute;top:12px;right:12px}.login-close[data-v-e75a5386]:hover{background:#69c0ff33;transform:rotate(90deg)}.login-header[data-v-e75a5386]{text-align:center;margin-bottom:28px}.login-title[data-v-e75a5386]{color:#69c0ff;text-shadow:0 0 20px #69c0ff4d;margin:0 0 8px;font-size:20px;font-weight:600}.login-subtitle[data-v-e75a5386]{color:#8cb8e6;margin:0;font-size:13px}.login-form[data-v-e75a5386]{flex-direction:column;gap:20px;display:flex}.form-item[data-v-e75a5386]{flex-direction:column;gap:8px;display:flex}.form-label[data-v-e75a5386]{color:#8cb8e6;font-size:13px;font-weight:500}.input-wrapper[data-v-e75a5386]{align-items:center;display:flex;position:relative}.input-icon[data-v-e75a5386]{color:#5a7da8;pointer-events:none;width:16px;height:16px;position:absolute;left:14px}.form-input[data-v-e75a5386]{color:#dbe9ff;box-sizing:border-box;background:#ffffff0d;border:1px solid #69c0ff33;border-radius:8px;width:100%;height:42px;padding:0 14px 0 44px;font-size:14px;transition:all .3s}.form-input[data-v-e75a5386]:focus{border-color:#69c0ff;outline:none;box-shadow:0 0 0 3px #69c0ff1a}.form-input[data-v-e75a5386]::placeholder{color:#5a7da8}.form-input.error[data-v-e75a5386]{border-color:#ff4d4f}.error-message[data-v-e75a5386]{color:#ff4d4f;font-size:12px}.captcha-item[data-v-e75a5386]{flex-direction:row;align-items:flex-start;gap:12px}.captcha-left[data-v-e75a5386]{flex-direction:column;flex:1;gap:8px;display:flex}.captcha-input[data-v-e75a5386]{width:100%}.captcha-right[data-v-e75a5386]{margin-top:21px}.captcha-img[data-v-e75a5386]{cursor:pointer;border:1px solid #69c0ff33;border-radius:8px;width:100px;height:42px;transition:all .3s}.captcha-img[data-v-e75a5386]:hover{border-color:#69c0ff;box-shadow:0 0 10px #69c0ff4d}.remember-checkbox[data-v-e75a5386]{cursor:pointer;align-items:center;gap:8px;padding-left:4px;display:flex}.remember-checkbox input[data-v-e75a5386]{display:none}.checkmark[data-v-e75a5386]{border:1px solid #69c0ff66;border-radius:4px;width:18px;height:18px;transition:all .3s;position:relative}.remember-checkbox input:checked+.checkmark[data-v-e75a5386]{background:linear-gradient(135deg,#1890ff 0%,#69c0ff 100%);border-color:#1890ff}.remember-checkbox input:checked+.checkmark[data-v-e75a5386]:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:5px;height:10px;position:absolute;top:2px;left:6px;transform:rotate(45deg)}.checkbox-text[data-v-e75a5386]{color:#8cb8e6;font-size:13px}.login-btn[data-v-e75a5386]{color:#fff;cursor:pointer;background:linear-gradient(135deg,#1890ff 0%,#096dd9 100%);border:none;border-radius:8px;justify-content:center;align-items:center;gap:8px;height:44px;font-size:15px;font-weight:500;transition:all .3s;display:flex}.login-btn[data-v-e75a5386]:hover:not(:disabled){background:linear-gradient(135deg,#40a9ff 0%,#1890ff 100%);transform:translateY(-1px);box-shadow:0 4px 16px #1890ff4d}.login-btn[data-v-e75a5386]:disabled{opacity:.6;cursor:not-allowed}.loading-text[data-v-e75a5386]{align-items:center;gap:8px;display:flex}.loading-icon[data-v-e75a5386]{width:18px;height:18px;animation:1s linear infinite spin-e75a5386}@keyframes spin-e75a5386{to{transform:rotate(360deg)}}.loading-ring[data-v-e75a5386]{animation:1.5s ease-in-out infinite loadingDash-e75a5386}@keyframes loadingDash-e75a5386{to{stroke-dashoffset:-100px}}.login-footer[data-v-e75a5386]{text-align:center;border-top:1px solid #69c0ff1a;margin-top:24px;padding-top:20px}.login-footer span[data-v-e75a5386]{color:#5a7da8;font-size:12px}.device-alarm-history-modal-overlay[data-v-21fece6f]{z-index:1000;background:#000000b3;display:none;position:fixed;inset:0}.device-alarm-history-modal-overlay.show[data-v-21fece6f]{justify-content:center;align-items:center;display:flex}.device-alarm-history-modal[data-v-21fece6f]{background:#0a1628;border:1px solid #1890ff4d;border-radius:12px;width:90%;max-width:1200px;max-height:80vh;overflow:hidden}.device-alarm-history-modal-header[data-v-21fece6f]{border-bottom:1px solid #1890ff33;justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.device-alarm-history-modal-title[data-v-21fece6f]{color:#dbe9ff;font-size:18px;font-weight:600}.device-alarm-history-modal-close[data-v-21fece6f]{color:#8cb8e6;cursor:pointer;background:0 0;border:none;padding:4px;font-size:20px}.device-alarm-history-modal-body[data-v-21fece6f]{max-height:60vh;padding:20px;overflow-y:auto}.loading[data-v-21fece6f],.no-data[data-v-21fece6f]{color:#8cb8e6;text-align:center;padding:40px}.device-alarm-history-table[data-v-21fece6f]{border-collapse:collapse;width:100%}.device-alarm-history-table th[data-v-21fece6f],.device-alarm-history-table td[data-v-21fece6f]{text-align:left;border-bottom:1px solid #1890ff1a;padding:12px 8px;font-size:13px}.device-alarm-history-table th[data-v-21fece6f]{color:#8cb8e6;font-weight:600}.device-alarm-history-table td[data-v-21fece6f]{color:#dbe9ff}.pagination[data-v-21fece6f]{border-top:1px solid #1890ff1a;justify-content:center;align-items:center;gap:16px;margin-top:20px;padding-top:16px;display:flex}.page-btn[data-v-21fece6f]{color:#69c0ff;cursor:pointer;background:#1890ff26;border:1px solid #1890ff4d;border-radius:4px;padding:8px 16px;font-size:13px;transition:all .2s}.page-btn[data-v-21fece6f]:hover:not(:disabled){background:#1890ff40}.page-btn[data-v-21fece6f]:disabled{opacity:.5;cursor:not-allowed}.page-info[data-v-21fece6f]{color:#8cb8e6;font-size:13px}
