@charset "UTF-8";.chart-panel[data-v-e776ac4e]{width:100%;height:100%}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden;font-family:Microsoft YaHei,PingFang SC,Arial,sans-serif;color:#1d2530;background:#f4f7fb}button{font:inherit;cursor:pointer}.screen-shell{position:relative;width:100vw;height:100vh;overflow:hidden;background:#f4f7fb}.screen-stage{position:absolute;left:50%;top:50%;width:1920px;height:1080px;transform-origin:center center;background:#f6f8fb}.topbar{height:90px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:#fff;border-bottom:1px solid #e8edf4;box-shadow:0 1px 3px #0f172a05}h1{margin:0;font-size:30px;color:#151a22;font-weight:700;letter-spacing:.5px}.top-actions{display:flex;align-items:center;gap:18px;color:#141923}.top-runtime-pill{height:58px;display:inline-flex;align-items:center;gap:10px;min-width:0;padding:0 18px;border:1px solid #dce8f7;border-radius:8px;background:linear-gradient(180deg,#fbfdff,#f4f8ff);box-shadow:inset 0 0 0 1px #ffffffb3;color:#536174;white-space:nowrap}.runtime-icon{width:30px;height:30px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;background:#e8f3ff;color:#1d67d8}.runtime-icon svg{width:18px;height:18px;fill:currentColor}.top-runtime-pill span:not(.runtime-icon){font-size:15px;font-weight:700}.top-runtime-pill strong{color:#172033;font-size:24px;line-height:1;font-weight:800}.top-runtime-pill em{color:#607086;font-size:14px;font-style:normal;font-weight:700}.backend-btn{height:58px;padding:0 24px;display:flex;align-items:center;gap:12px;border-radius:8px;border:1px solid #2d83ff;background:#fff;color:#1275f6;font-size:20px;font-weight:700}.backend-icon{width:24px;height:24px;display:inline-flex}.backend-icon svg{width:100%;height:100%;fill:currentColor}.weather{height:32px;display:flex;align-items:center;gap:10px;min-width:0;font-size:16px;white-space:nowrap}.weather-location{max-width:210px;overflow:hidden;color:#4b5563;text-overflow:ellipsis;white-space:nowrap}.weather-icon{width:20px;text-align:center;font-size:18px;line-height:1}.weather-temperature{color:#141923;font-weight:500}.weather i{width:1px;height:28px;background:#9ca3af}.weather b{font-weight:500}.time-box{display:flex;flex-direction:column;align-items:flex-start;border-left:1px solid #d1d5db;padding-left:20px;line-height:1.1}.time-box strong{font-size:20px;font-weight:500}.time-box small{margin-top:5px;color:#555f6e}.layout-grid{height:calc(100% - 90px);padding:20px 24px 24px;display:grid;grid-template-columns:minmax(0,1fr) 420px;grid-template-rows:minmax(0,1fr);gap:20px;position:relative;overflow:hidden}.main-area{min-width:0;min-height:0;height:100%;overflow:hidden;display:grid;grid-template-rows:minmax(0,1fr) 280px;gap:16px}.right-area{min-width:0;min-height:0;height:100%;overflow:hidden;display:grid;grid-template-rows:500px minmax(0,1fr);gap:16px}.panel,.map-card{background:#fff;border:1px solid #edf1f6;border-radius:8px;box-shadow:0 8px 22px #0f172a0d}.panel{padding:18px 20px;overflow:hidden}.panel-head{height:32px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #eef2f7;margin-bottom:8px}.panel-head h2{margin:0;display:flex;align-items:center;gap:8px;font-size:18px;color:#172033}.panel-head h2:before{content:"▣";color:#2f80ff;font-size:15px}.panel-head a{color:#2f80ff;font-size:14px}.panel-meta{color:#64748b;font-size:13px;font-weight:700;padding:4px 9px;border-radius:999px;background:#f4f8ff;border:1px solid #e6eefb;white-space:nowrap}.map-card{position:relative;min-height:0;overflow:hidden;padding:18px}.local-map-shell{position:relative;width:100%;height:100%;overflow:hidden;border-radius:4px;background:#eef4fb}.local-map-canvas{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:linear-gradient(135deg,#eef6ee,#edf8ee 42%,#d8eaff 72%,#c5defd)}.local-map-canvas:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.5) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.5) 1px,transparent 1px);background-size:46px 46px;opacity:.66}.local-map-canvas:after{content:"";position:absolute;left:-8%;right:-6%;top:44%;height:48px;border-top:2px solid rgba(91,136,182,.18);border-bottom:2px solid rgba(91,136,182,.16);background:#ffffff3d;transform:rotate(-8deg)}.local-map-canvas i{position:absolute;display:block;border-radius:999px;background:#ffffff57;border:1px solid rgba(89,140,181,.12)}.local-map-canvas i:nth-child(1){left:10%;top:14%;width:330px;height:150px;transform:rotate(-13deg)}.local-map-canvas i:nth-child(2){right:16%;top:20%;width:260px;height:118px;transform:rotate(18deg)}.local-map-canvas i:nth-child(3){left:38%;bottom:12%;width:370px;height:140px;transform:rotate(7deg)}.local-map-toolbar{position:absolute;right:18px;top:18px;z-index:6;padding:8px 10px;border:1px solid rgba(216,229,246,.92);border-radius:6px;background:#ffffffe0;box-shadow:0 10px 24px #1e375a1a;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.local-map-marker{--marker-color: #3d83ea;position:absolute;z-index:5;display:flex;align-items:center;gap:8px;min-width:0;max-width:210px;padding:0;border:0;background:transparent;color:#1f2937;transform:translate(-15px,-30px)}.local-map-marker:hover .local-map-label{border-color:#3b82f657;box-shadow:0 6px 16px #1e375a2e}.local-map-pin{width:34px;height:42px;flex:0 0 auto;filter:drop-shadow(0 8px 12px rgba(30,55,90,.22))}.local-map-pin svg{width:100%;height:100%;display:block}.local-map-pin path{fill:var(--marker-color)}.local-map-pin circle{fill:#fff;opacity:.92}.local-map-runtime-ball{width:30px;height:30px;flex:0 0 auto;border-radius:50%;border:2px solid rgba(255,255,255,.95);background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.96) 0 13%,var(--marker-color) 36%,color-mix(in srgb,var(--marker-color),#0f172a 24%) 100%);box-shadow:0 0 0 5px color-mix(in srgb,var(--marker-color),transparent 82%),0 8px 14px #1e375a38}.local-map-alert-light{position:relative;width:34px;height:42px;flex:0 0 auto;filter:drop-shadow(0 7px 11px rgba(30,55,90,.18))}.local-map-alert-light:before{content:"";position:absolute;left:8px;top:4px;width:18px;height:29px;border:2px solid rgba(255,255,255,.9);border-radius:12px 12px 6px 6px;transform-origin:center bottom;background:linear-gradient(180deg,color-mix(in srgb,var(--marker-color),#fff 38%) 0%,color-mix(in srgb,var(--marker-color),#fff 14%) 28%,var(--marker-color) 62%,color-mix(in srgb,var(--marker-color),#0f172a 26%) 100%);box-shadow:inset 5px 0 #ffffff38,inset 0 -5px #0f172a21,0 0 0 4px color-mix(in srgb,var(--marker-color),transparent 87%)}.local-map-alert-light:after{content:"";position:absolute;left:5px;right:5px;bottom:8px;height:9px;border-radius:5px 5px 6px 6px;background:linear-gradient(180deg,color-mix(in srgb,var(--marker-color),#020617 44%),#1f2937 80%);box-shadow:inset 0 1px #fff3}.local-map-alert-light i{position:absolute;left:11px;right:11px;bottom:3px;z-index:1;height:5px;border-radius:3px;background:#111827}.local-map-alert-light i:before{content:"";position:absolute;left:-3px;right:-3px;top:-8px;height:5px;border-radius:3px;background:#ffffff3d}.local-map-marker.is-blinking .local-map-runtime-ball,.local-map-marker.is-blinking .local-map-alert-light:before{animation:sensorBlink 1.05s ease-in-out infinite}.local-map-label{max-width:160px;height:28px;display:inline-flex;align-items:center;padding:0 10px;overflow:hidden;border:1px solid rgba(216,229,246,.92);border-radius:5px;background:#fffffff0;box-shadow:0 3px 10px #1e375a1f;color:#303846;font-size:13px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.model-scene-shell{position:relative;width:100%;height:100%;overflow:hidden;border-radius:4px;background:#eef4fb}.model-scene-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.model-scene-canvas canvas{display:block;width:100%;height:100%}.model-scene-canvas canvas.is-picking-point{cursor:pointer}.model-scene-toolbar{position:absolute;right:18px;top:18px;z-index:6;display:flex;align-items:center;gap:10px;min-width:0;max-width:560px;padding:8px 12px;border:1px solid rgba(216,229,246,.92);border-radius:6px;color:#1f2937;background:#ffffffe0;box-shadow:0 10px 24px #1e375a1a;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.model-scene-toolbar strong{min-width:0;overflow:hidden;color:#1269cf;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.model-scene-toolbar span{flex:0 0 auto;color:#64748b;font-size:13px;font-weight:700}.model-scene-mode-switch{flex:0 0 auto;display:inline-flex;padding:2px;border:1px solid #d7e3f1;border-radius:999px;background:#f5f9ffe6}.model-scene-toolbar>.model-scene-mode-switch:first-of-type{margin-left:auto}.model-scene-mode-switch button{min-width:54px;height:24px;padding:0 10px;border:0;border-radius:999px;background:transparent;color:#607086;font-size:12px;font-weight:700;white-space:nowrap;cursor:pointer}.model-scene-mode-switch.sensor-visual-switch button{min-width:68px}.model-scene-mode-switch button.active{background:#2f80ff;color:#fff;box-shadow:0 4px 12px #2f80ff3d}.map-fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#64748b;background:linear-gradient(90deg,#eef6ee,#edf8ee 48%,#c5defd,#b8d7fb)}.info-window{position:absolute;z-index:7;left:0;top:0;width:408px;padding:14px 18px 18px;background:#fffffff5;border:1px solid rgba(215,226,241,.95);border-radius:8px;box-shadow:0 18px 42px #22406933;overflow:hidden;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);will-change:left,top}.info-window:before{content:"";position:absolute;left:0;top:0;right:0;height:4px;background:linear-gradient(90deg,#2f80ff,#38bdf8)}.info-window .info-close-btn{position:absolute;right:12px;top:10px;width:30px;height:30px;display:grid;place-items:center;border:0;border-radius:50%;background:#f3f7fd;color:#718096;font-size:24px;line-height:1}.info-window .info-close-btn:hover{background:#e8f1ff;color:#2563eb}.info-window h3{margin:0 0 12px;padding:5px 40px 12px 0;border-bottom:1px solid #edf1f5;color:#1269cf;font-size:18px;font-weight:700;background:transparent}.info-window p{display:grid;grid-template-columns:104px minmax(0,1fr);align-items:center;gap:16px;min-height:34px;margin:8px 0;padding:8px 12px;color:#202631;font-size:15px;border-radius:6px;background:#f8fbff;border:1px solid #edf4fb}.info-window b{font-weight:500;color:#66758a;white-space:nowrap}.info-window p>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-window .status-pill{justify-self:start;padding:4px 10px;border-radius:999px;font-size:14px;font-weight:700;line-height:1.2;background:#f1f5f9;color:#64748b}.info-window .status-online{background:#eaf8ef;color:#16a34a}.info-window .status-offline{background:#eef2f7;color:#64748b}.info-window .status-fault{background:#feecec;color:#dc2626}.info-window .status-unknown{background:#fff7e6;color:#f59e0b}.hover-window{position:absolute;z-index:6;width:326px;padding:12px 14px;border:1px solid rgba(184,204,230,.9);border-radius:8px;background:#fffffff0;box-shadow:0 12px 30px #2240692e;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.hover-window h4{margin:0 0 8px;color:#1269cf;font-size:16px}.hover-window p{display:grid;grid-template-columns:94px minmax(0,1fr);gap:8px;align-items:center;min-height:26px;margin:4px 0;color:#1f2937;font-size:13px}.hover-window b{color:#66758a;font-weight:500}.hover-window span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hover-window .status-pill{justify-self:start;padding:3px 8px;border-radius:999px;font-weight:700;background:#f1f5f9;color:#64748b}.hover-window .status-online{background:#eaf8ef;color:#16a34a}.hover-window .status-offline{background:#eef2f7;color:#64748b}.hover-window .status-fault{background:#feecec;color:#dc2626}.hover-window .status-unknown{background:#fff7e6;color:#f59e0b}.point-alerts{margin-top:12px;padding-top:12px;border-top:1px solid #edf1f5}.point-alerts h4{margin:0 0 8px;color:#334155;font-size:15px}.point-alert-card{display:grid;gap:8px}.point-alert-card p{margin:0}.point-alert-card .point-waveform-btn{height:32px;border:1px solid #bfdbfe;border-radius:6px;background:#eff6ff;color:#1d4ed8;font-size:13px;font-weight:800;cursor:pointer}.point-alert-card .point-waveform-btn:hover{background:#dbeafe}.point-alerts .level-red{color:#dc2626}.point-alerts .level-orange{color:#f97316}.point-alerts .level-yellow{color:#ca8a04}.point-alerts .level-blue{color:#2563eb}.point-alert-empty{padding:10px;color:#94a3b8;text-align:center;border-radius:6px;background:#f8fbff}.local-map-copy{position:absolute;right:16px;bottom:14px;z-index:6;color:#26313f;font-size:13px;background:#ffffff9e;padding:2px 6px;border-radius:3px}.bottom-grid{height:280px;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.15fr);gap:16px;overflow:hidden}.operation-overview{height:calc(100% - 40px);display:grid;grid-template-columns:156px 1fr;align-items:center;gap:20px}.overview-ring-wrap{--online-color: #16a34a;--online-soft-color: rgba(22, 163, 74, .18);--online-rate: 0%;height:154px;display:grid;place-items:center;align-content:center;gap:6px;text-align:center;border-right:1px solid #eef2f7}.overview-ring{width:94px;height:94px;display:grid;place-items:center;border-radius:50%;background:conic-gradient(var(--online-color) var(--online-rate),#e9eff7 0);box-shadow:0 8px 18px var(--online-soft-color)}.overview-ring:before{content:"";grid-area:1/1;width:72px;height:72px;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 1px #edf2f8}.overview-ring-core{grid-area:1/1;z-index:1;display:flex;align-items:baseline;justify-content:center;min-width:68px;color:#172033}.overview-ring-core strong{font-size:28px;line-height:1}.overview-ring-core span{color:#66758a;font-size:15px;font-weight:700}.overview-ring-wrap p{margin:4px 0 0;color:#202938;font-size:16px;font-weight:700}.overview-ring-wrap em{color:var(--online-color);font-size:13px;font-style:normal;font-weight:700}.overview-side{display:grid;gap:16px;min-width:0}.overview-side p{margin:0;min-height:58px;display:grid;grid-template-columns:minmax(0,1fr);align-content:center;gap:6px;padding:10px 14px;color:#1f2937;background:linear-gradient(180deg,#f8fbff,#f3f7fd);border:1px solid #edf2f8;border-radius:8px}.overview-side p.amplitude{background:linear-gradient(180deg,#fffaf3,#fff5e8);border-color:#ffe6c7}.overview-side span{min-width:0;color:#556174;font-size:14px;font-weight:700;white-space:nowrap}.overview-side strong{justify-self:end;max-width:100%;color:#0f172a;font-size:22px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overview-side p.amplitude strong{color:#f97316;font-size:26px}.abnormal-list,.notice-list{margin:0;padding:0;list-style:none}.abnormal-list li{height:45px;display:grid;grid-template-columns:10px minmax(0,1fr) 88px 74px 150px;gap:10px;align-items:center;color:#273140;font-size:14px}.abnormal-list span{width:5px;height:5px;border-radius:50%;background:#2f80ff}.abnormal-list b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.abnormal-list em{justify-self:start;min-width:70px;padding:6px 10px;border-radius:5px;font-style:normal;text-align:center;white-space:nowrap}.abnormal-list strong{justify-self:start;min-width:62px;padding:6px 10px;border-radius:5px;font-size:14px;font-weight:500;text-align:center;white-space:nowrap}.abnormal-list strong.resolved{color:#16a34a;background:#eaf8ef}.abnormal-list strong.unresolved{color:#f97316;background:#fff2df}.tag-orange{color:#f49a26;background:#fff2df}.tag-blue{color:#2f80ff;background:#e8f1ff}.abnormal-list time{color:#303846;white-space:nowrap}.severity-chart-wrap{position:relative;height:calc(100% - 40px);border-radius:8px;background:radial-gradient(circle at 33% 53%,#fff 0,#fff 25%,#f7fbff 26%,#f7fbff)}.severity-chart-wrap .chart-panel{height:100%}.severity-total{position:absolute;left:33%;top:53%;transform:translate(-50%,-50%);z-index:2;text-align:center;pointer-events:none}.severity-total strong{display:block;color:#172033;font-size:29px;line-height:1}.severity-total span{margin-top:5px;display:block;color:#64748b;font-size:13px;font-weight:700}.ring-content{height:calc(100% - 40px);display:grid;grid-template-columns:82px 1fr 82px;align-items:center;text-align:center}.ring-content .chart-panel{height:176px}.ring-num strong{display:block;font-size:31px;color:#121826}.ring-num span{color:#2f3846}.chart-shell{position:relative;border:1px solid #edf2f8;border-radius:8px;background:linear-gradient(180deg,#fbfdff,#f6f9fd);overflow:hidden}.sensor-chart-shell{height:calc(100% - 40px)}.sensor-chart-shell .chart-panel{height:100%}.waveform-head{gap:8px}.waveform-head-actions{min-width:0;display:flex;align-items:center;gap:8px}.waveform-open-btn{height:26px;display:inline-flex;align-items:center;gap:5px;padding:0 9px;border:1px solid #d8e5f6;border-radius:6px;color:#1d67d8;background:#f7fbff;font-size:12px;font-weight:700;white-space:nowrap}.waveform-open-btn:hover{border-color:#9fc4ff;background:#edf6ff}.waveform-open-btn svg{width:14px;height:14px;fill:currentColor}.waveform-status-live{color:#16a34a}.waveform-status-stopped{color:#f59e0b}.waveform-status-empty{color:#64748b}.waveform-status-loading{color:#1d67d8}.waveform-status-online{color:#16a34a}.waveform-status-offline{color:#64748b}.waveform-status-fault{color:#dc2626}.waveform-status-unknown{color:#f59e0b}.waveform-controls{height:34px;display:grid;grid-template-columns:minmax(0,1fr);gap:7px;margin-bottom:8px}.waveform-controls label{min-width:0;display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:5px;color:#64748b;font-size:12px;font-weight:700}.waveform-controls select{width:100%;min-width:0;height:28px;border:1px solid #dfe7f1;border-radius:6px;padding:0 7px;color:#223047;background:#fff;font-size:12px;outline:none}.waveform-controls select:disabled{color:#94a3b8;background:#f4f7fb}.waveform-meta{height:5px;margin-bottom:6px;color:#64748b;font-size:12px;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.waveform-shell{position:relative;height:calc(100% - 98px);padding:8px}.waveform-panel-grid{min-width:0;height:100%;display:grid;grid-template-rows:repeat(2,minmax(0,1fr));gap:8px}.waveform-panel-card{min-width:0;min-height:0;display:grid;grid-template-rows:34px minmax(0,1fr);gap:6px}.waveform-panel-card>header{min-width:0;display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.waveform-panel-card h4{margin:0;color:#172033;font-size:13px;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.waveform-panel-card p{margin:4px 0 0;color:#64748b;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.waveform-panel-card header span{flex:0 0 auto;padding:4px 8px;border-radius:999px;background:#f4f8ff;border:1px solid #e6eefb;font-size:12px;font-weight:800;white-space:nowrap}.waveform-panel-chart{position:relative;min-height:0}.waveform-panel-chart .chart-panel{height:100%}.waveform-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#94a3b8;font-size:13px;font-weight:700;background:#f8fbffb8;pointer-events:none}.panel-empty{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;display:grid;place-items:center;color:#94a3b8;font-size:13px;font-weight:700;background:#f8fbffc7;pointer-events:none}.list-empty{height:calc(100% - 74px);display:grid;place-items:center;color:#94a3b8;font-size:13px;font-weight:700;border:1px dashed #dbe6f3;border-radius:7px;background:#fbfdff}.waveform-dialog-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1010;display:grid;place-items:center;padding:36px;background:#141e2e52;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.waveform-dialog{position:relative;z-index:1;width:calc(100vw - 72px);max-width:1640px;height:calc(100vh - 72px);min-height:520px;max-height:860px;display:grid;grid-template-rows:64px 42px 58px minmax(0,1fr);gap:12px;padding:22px;overflow:hidden;border:1px solid #d8e5f6;border-radius:8px;background:#fff;box-shadow:0 24px 70px #0f172a3d}.waveform-dialog-head{min-width:0;display:flex;align-items:flex-start;justify-content:space-between;gap:18px;border-bottom:1px solid #eef2f7}.waveform-dialog-head h2{margin:0;color:#172033;font-size:24px;line-height:1.1}.waveform-dialog-head p{max-width:920px;margin:9px 0 0;color:#64748b;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.waveform-dialog-close{width:34px;height:34px;flex:0 0 auto;display:grid;place-items:center;border:1px solid #e1e8f2;border-radius:50%;color:#64748b;background:#f8fbff;font-size:24px;line-height:1}.waveform-dialog-close:hover{color:#1d67d8;background:#edf6ff;border-color:#b8d4ff}.waveform-dialog-status{display:flex;align-items:center;gap:18px;min-width:0;color:#64748b;font-size:15px;font-weight:700}.waveform-dialog-status span{padding:5px 11px;border-radius:999px;background:#f4f8ff;border:1px solid #e6eefb}.waveform-dialog-status strong{color:#172033;font-size:18px}.waveform-dialog-status time{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.waveform-dialog-controls{display:grid;grid-template-columns:210px 210px minmax(0,1fr);grid-auto-rows:46px;gap:10px 14px;align-items:center}.waveform-dialog-controls label{min-width:0;display:grid;grid-template-columns:72px minmax(0,1fr);align-items:center;gap:8px;color:#64748b;font-size:14px;font-weight:700}.waveform-dialog-controls select{width:100%;min-width:0;height:34px;border:1px solid #dfe7f1;border-radius:7px;padding:0 10px;color:#223047;background:#fff;font-size:14px;outline:none}.waveform-dialog-controls select:focus{border-color:#93c5fd;box-shadow:0 0 0 3px #3b82f61f}.waveform-dialog-controls select:disabled{color:#94a3b8;background:#f4f7fb}.waveform-range-field{grid-template-columns:72px minmax(0,1fr)}.waveform-range-control{--range-start: 0%;--range-end: 100%;position:relative;min-width:0;height:46px;padding-top:1px}.waveform-range-values{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#223047;font-size:13px;font-weight:800;line-height:18px}.waveform-range-values output{white-space:nowrap}.waveform-range-track{position:absolute;left:0;right:0;bottom:10px;height:6px;border-radius:999px;background:linear-gradient(to right,#e4ebf5 0 var(--range-start),#2f80ff var(--range-start) var(--range-end),#e4ebf5 var(--range-end) 100%)}.waveform-range-control input[type=range]{position:absolute;left:0;right:0;bottom:3px;z-index:2;width:100%;height:20px;margin:0;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:transparent;pointer-events:none;outline:none}.waveform-range-control input[type=range]::-webkit-slider-runnable-track{height:6px;background:transparent}.waveform-range-control input[type=range]::-moz-range-track{height:6px;background:transparent;border:0}.waveform-range-control input[type=range]::-webkit-slider-thumb{width:17px;height:17px;margin-top:-5px;border:3px solid #fff;border-radius:50%;background:#2f80ff;box-shadow:0 2px 7px #2563eb59;cursor:pointer;pointer-events:auto;-webkit-appearance:none}.waveform-range-control input[type=range]::-moz-range-thumb{width:17px;height:17px;border:3px solid #fff;border-radius:50%;background:#2f80ff;box-shadow:0 2px 7px #2563eb59;cursor:pointer;pointer-events:auto}.waveform-range-control .range-upper{z-index:3}.waveform-range-control.is-disabled{opacity:.55}.waveform-range-control.is-disabled input[type=range]::-webkit-slider-thumb{cursor:not-allowed}.waveform-range-control.is-disabled input[type=range]::-moz-range-thumb{cursor:not-allowed}.waveform-dialog-body{min-height:0;display:grid;align-content:start;gap:16px;padding-right:8px;overflow-y:auto}.waveform-dialog-body::-webkit-scrollbar{width:8px}.waveform-dialog-body::-webkit-scrollbar-thumb{border-radius:999px;background:#c9d6e8}.waveform-dialog-body::-webkit-scrollbar-track{border-radius:999px;background:#f2f6fb}.waveform-dialog-empty{min-height:320px;display:grid;place-items:center;color:#94a3b8;font-size:15px;font-weight:700;border:1px dashed #dbe6f3;border-radius:8px;background:#fbfdff}.waveform-edge-group{min-width:0;display:grid;gap:10px}.waveform-edge-head{position:sticky;top:0;z-index:2;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) 94px 88px;align-items:center;gap:12px;padding:10px 12px;border:1px solid #e2ebf7;border-radius:8px;background:#f8fbfff5;box-shadow:0 8px 18px #1e375a0f}.waveform-edge-head h3{margin:0;color:#172033;font-size:17px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.waveform-edge-head p{margin:4px 0 0;color:#64748b;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.waveform-edge-head span,.waveform-edge-head em{justify-self:end;padding:5px 10px;border-radius:999px;font-size:13px;font-style:normal;font-weight:800;white-space:nowrap;background:#f4f8ff;border:1px solid #e6eefb}.waveform-dialog-grid{min-width:0;display:grid;grid-template-columns:minmax(0,1fr);gap:12px}.waveform-channel-card{min-width:0;display:grid;grid-template-rows:48px 300px;gap:8px;padding:12px;border:1px solid #e3ecf8;border-radius:8px;background:linear-gradient(180deg,#fff,#fbfdff);box-shadow:0 8px 18px #1e375a0d}.waveform-channel-card.is-loading{opacity:.86}.waveform-channel-card>header{min-width:0;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.waveform-channel-card h4{margin:0;color:#172033;font-size:16px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.waveform-channel-card p{margin:5px 0 0;color:#64748b;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.waveform-channel-card header span{flex:0 0 auto;padding:5px 10px;border-radius:999px;background:#f4f8ff;border:1px solid #e6eefb;font-size:13px;font-weight:800;white-space:nowrap}.waveform-channel-chart{position:relative;min-height:0}.waveform-channel-chart .chart-panel{height:100%}.legend{color:#475569;font-size:14px;display:flex;align-items:center;gap:8px}.legend span,.legend i{width:11px;height:5px;display:inline-block;border-radius:2px;background:#3b82f6}.legend i{background:#f6b441}.warning-stat{position:relative}.warning-chart-wrap{position:relative;height:calc(100% - 40px);width:235px}.warning-chart-wrap .chart-panel{width:235px;height:100%}.total-warning{position:absolute;left:50%;top:52%;width:120px;z-index:2;text-align:center;pointer-events:none;transform:translate(-50%,-50%)}.total-warning strong{display:block;font-size:28px;color:#151a22;line-height:1.1}.total-warning span{color:#586575;font-size:13px}.topology-card{position:relative}.topology-canvas{position:relative;height:calc(100% - 40px);overflow:hidden;border:1px solid #e5edf8;border-radius:8px;background:linear-gradient(180deg,#fbfdff,#f2f7fd);box-shadow:inset 0 0 0 1px #ffffffb3}.topology-canvas:before{content:"";position:absolute;top:14px;right:14px;bottom:14px;left:14px;border-radius:8px;background-image:linear-gradient(#eaf0f8 1px,transparent 1px),linear-gradient(90deg,#eaf0f8 1px,transparent 1px);background-size:34px 34px;opacity:.55}.topology-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.topology-svg line{stroke:#2c7bdc;stroke-width:.46;stroke-dasharray:2 2;vector-effect:non-scaling-stroke}.topology-svg text{fill:#1f5ca8;font-size:3.2px;font-weight:700;dominant-baseline:middle;text-anchor:middle;paint-order:stroke;stroke:#f8fbff;stroke-width:.7px}.topology-node{position:absolute;z-index:2;min-width:58px;transform:translate(-50%,-50%);display:grid;justify-items:center;gap:3px;color:#24517e;font-size:11px;text-align:center}.topology-node i{width:22px;height:22px;display:block;border:2px solid #57a8e8;border-radius:50%;background:#fff;box-shadow:0 0 0 5px #2f80ff14,0 6px 12px #1e497d1f;position:relative}.topology-node i:before{content:"";position:absolute;left:50%;top:-7px;width:16px;height:9px;border:2px solid #57a8e8;border-bottom:0;border-radius:16px 16px 0 0;transform:translate(-50%)}.topology-node b{max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.topology-node.center{color:#0f4ea8;font-size:12px;font-weight:700}.topology-node.center i{width:38px;height:25px;border-radius:5px;background:linear-gradient(180deg,#eef7ff,#d9ebff);border-color:#2f80ff;box-shadow:0 0 0 6px #2f80ff1a,0 8px 15px #1e497d29}.topology-node.center i:before{display:none}.topology-node.center i:after{content:"";position:absolute;left:8px;right:8px;bottom:-5px;height:3px;border-radius:2px;background:#2f80ff}.topology-node.edge{color:#17645e}.topology-node.edge i{width:32px;height:23px;border-radius:5px;border-color:#22a399;background:linear-gradient(180deg,#f0fffc,#d9f8f3);box-shadow:0 0 0 5px #22a3991a,0 7px 13px #1e497d21}.topology-node.edge i:before{display:none}.topology-node.edge i:after{content:"";position:absolute;left:6px;right:6px;top:6px;height:3px;border-radius:2px;background:#22a399;box-shadow:0 7px #22a3998c}.topology-node.sensor i{width:20px;height:20px}.topology-node.estimated b:after{content:" 未配置坐标";display:block;margin-top:2px;color:#f59e0b;font-size:10px;font-weight:500}.topology-node.estimated i{border-style:dashed}.topology-node.alert i{border-color:#ff8a22;box-shadow:0 0 0 5px #ff8a221f}.topology-node.fault i{border-color:#ef4444;box-shadow:0 0 0 5px #ef44441f}.topology-node.offline{opacity:.58}.notice-head{gap:10px}.notice-list-btn{height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0 10px;border:1px solid #d8e5f6;border-radius:6px;color:#1d67d8;background:#f7fbff;font-size:12px;font-weight:800;white-space:nowrap}.notice-list-btn:hover{border-color:#9fc4ff;background:#edf6ff}.notice-header,.notice-list li{display:grid;grid-template-columns:minmax(0,1fr) 98px 132px;align-items:center;gap:8px}.notice-header{height:34px;padding:0 10px;color:#2d3440;font-weight:700;font-size:14px}.notice-scroll{height:calc(100% - 74px);overflow:hidden}.notice-scroll-track{transform:translateY(var(--notice-scroll-offset, 0));transition:var(--notice-scroll-transition, transform .56s ease-in-out);will-change:transform}.notice-list{display:grid;gap:6px}.notice-scroll .notice-list{padding-bottom:6px}.notice-list li{position:relative;min-height:54px;padding:7px 10px 7px 12px;color:#303846;font-size:14px;border:1px solid #edf2f8;border-radius:7px;background:#fbfdff}.notice-list li.notice-new{border-color:#ef444485;background:linear-gradient(90deg,#fff7edf5,#fffffffa);box-shadow:0 0 0 1px #ef44441f,0 8px 18px #ef444429;animation:noticeNewPulse 1.2s ease-in-out infinite}.notice-list li:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:#f97316}.notice-list li.notice-new:before{width:5px;top:6px;bottom:6px;background:#ef4444;box-shadow:0 0 10px #ef44448c}.notice-list li.notice-red:before{background:#ef4444}.notice-list li.notice-yellow:before{background:#f59e0b}.notice-list li.notice-blue:before{background:#2f80ff}.notice-sensor{min-width:0;display:grid;gap:3px}.notice-list b{min-width:0;display:flex;align-items:center;gap:6px;font-weight:700;white-space:nowrap}.notice-code-text{min-width:0;overflow:hidden;text-overflow:ellipsis}.notice-new-badge{flex:0 0 auto;padding:1px 5px;border-radius:999px;background:#ef4444;color:#fff;font-size:11px;line-height:16px;font-weight:900;box-shadow:0 0 0 3px #ef444421}.notice-sensor>span{min-width:0;color:#64748b;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notice-list em{justify-self:start;display:flex;align-items:center;gap:5px;padding:4px 7px;border-radius:999px;font-style:normal;font-size:13px;white-space:nowrap;background:#fff7ed}.warn-orange{color:#f49a26}.warn-blue{color:#2f80ff}.warn-red{color:#ef4444}.warn-yellow{color:#f59e0b}.notice-list time{color:#4b5563;font-size:13px;white-space:nowrap}.notice-dialog-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;place-items:center;padding:36px;background:#141e2e52;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.notice-dialog{position:relative;z-index:1;width:calc(100vw - 72px);max-width:1380px;height:calc(100vh - 120px);min-height:520px;max-height:760px;display:grid;grid-template-rows:64px minmax(0,1fr);gap:14px;padding:22px;overflow:hidden;border:1px solid #d8e5f6;border-radius:8px;background:#fff;box-shadow:0 24px 70px #0f172a3d}.notice-dialog-head{min-width:0;display:flex;align-items:flex-start;justify-content:space-between;gap:18px;border-bottom:1px solid #eef2f7}.notice-dialog-head h2{margin:0;color:#172033;font-size:24px;line-height:1.1}.notice-dialog-head p{margin:9px 0 0;color:#64748b;font-size:14px}.notice-dialog-close{width:34px;height:34px;flex:0 0 auto;display:grid;place-items:center;border:1px solid #e1e8f2;border-radius:50%;color:#64748b;background:#f8fbff;font-size:24px;line-height:1}.notice-dialog-close:hover{color:#1d67d8;background:#edf6ff;border-color:#b8d4ff}.notice-dialog-body{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:12px;overflow:hidden}.notice-dialog-filters{min-width:0;display:grid;grid-template-columns:minmax(230px,1fr) 170px 190px 72px;gap:10px;align-items:end;padding:10px 12px;border:1px solid #e6eefb;border-radius:8px;background:#f8fbff}.notice-dialog-filters label{min-width:0;display:grid;gap:5px;color:#64748b;font-size:12px;font-weight:800}.notice-dialog-filters input,.notice-dialog-filters select{width:100%;min-width:0;height:34px;border:1px solid #dfe7f1;border-radius:7px;padding:0 10px;color:#223047;background:#fff;font-size:14px;outline:none}.notice-dialog-filters input:focus,.notice-dialog-filters select:focus{border-color:#93c5fd;box-shadow:0 0 0 3px #3b82f61f}.notice-dialog-filters button{height:34px;border:1px solid #d8e5f6;border-radius:7px;color:#1d67d8;background:#fff;font-size:13px;font-weight:800}.notice-dialog-filters button:hover{border-color:#9fc4ff;background:#edf6ff}.notice-dialog-empty{min-height:320px;display:grid;place-items:center;color:#94a3b8;font-size:15px;font-weight:700;border:1px dashed #dbe6f3;border-radius:8px;background:#fbfdff}.notice-dialog-table-wrap{min-height:0;overflow:auto;padding-right:8px}.notice-dialog-table-wrap::-webkit-scrollbar{width:8px;height:8px}.notice-dialog-table-wrap::-webkit-scrollbar-thumb{border-radius:999px;background:#c9d6e8}.notice-dialog-table-wrap::-webkit-scrollbar-track{border-radius:999px;background:#f2f6fb}.notice-dialog-table{min-width:1160px;display:grid;gap:8px}.notice-dialog-row{position:relative;min-height:50px;display:grid;grid-template-columns:minmax(160px,1.1fr) minmax(170px,1.1fr) minmax(128px,.9fr) 104px 86px 150px 92px 58px;align-items:center;gap:10px;padding:7px 12px 7px 14px;color:#303846;border:1px solid #edf2f8;border-radius:7px;background:#fbfdff;font-size:14px}.notice-dialog-row:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:#f97316}.notice-dialog-row.notice-red:before{background:#ef4444}.notice-dialog-row.notice-yellow:before{background:#f59e0b}.notice-dialog-row.notice-blue:before{background:#2f80ff}.notice-dialog-row-head{min-height:38px;color:#2d3440;background:#f4f8ff;border-color:#e6eefb;font-weight:800}.notice-dialog-row-head:before{display:none}.notice-dialog-row>span,.notice-dialog-row time,.notice-dialog-row strong,.notice-dialog-sensor span,.notice-dialog-sensor small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notice-dialog-row em{justify-self:start;padding:4px 8px;border-radius:999px;background:#fff7ed;font-style:normal;font-size:13px;font-weight:800;white-space:nowrap}.notice-dialog-row strong{color:#f97316;font-size:15px}.notice-dialog-row time{color:#4b5563;font-size:13px}.notice-dialog-sensor{min-width:0;display:grid;gap:4px}.notice-dialog-sensor b{min-width:0;display:flex;align-items:center;gap:6px;color:#172033;font-weight:800}.notice-dialog-sensor small{color:#64748b;font-size:12px}.notice-dialog-pagination{min-height:34px;display:flex;align-items:center;justify-content:flex-end;gap:10px;color:#64748b;font-size:13px;font-weight:800}.notice-dialog-pagination button{min-width:68px;height:30px;border:1px solid #d8e5f6;border-radius:7px;color:#1d67d8;background:#f7fbff;font-size:13px;font-weight:800}.notice-dialog-pagination button:hover:not(:disabled){border-color:#9fc4ff;background:#edf6ff}.notice-dialog-pagination button:disabled{cursor:not-allowed;color:#94a3b8;background:#f4f7fb}.notice-dialog-pagination strong{min-width:54px;color:#172033;text-align:center}.notice-waveform-btn{width:50px;height:28px;border:1px solid #bfdbfe;border-radius:6px;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:800}.notice-waveform-btn:hover{background:#dbeafe}@keyframes noticeNewPulse{0%,to{transform:translate(0)}50%{transform:translate(2px)}}@keyframes sensorBlink{0%,to{opacity:1;transform:scale(1)}50%{opacity:.42;transform:scale(.86)}}@media (prefers-reduced-motion: reduce){.notice-scroll-track{transition:none}.notice-list li.notice-new,.local-map-marker.is-blinking .local-map-runtime-ball,.local-map-marker.is-blinking .local-map-alert-light:before{animation:none}}.loading-mask,.toast{position:absolute;left:50%;z-index:9;transform:translate(-50%);padding:12px 22px;border-radius:999px;background:#ffffffeb;box-shadow:0 8px 20px #1e375a1f;color:#2563eb}.loading-mask{top:50%}.toast{bottom:18px;color:#ef4444}
