:root{--edge-space: 18px;--side-panel-width: clamp(270px, 15vw, 360px);color:#182024;font-family:Inter,Segoe UI,Microsoft YaHei,sans-serif;font-synthesis:none;background:#dfe5e7}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}button{font:inherit;letter-spacing:0}#app{position:relative;isolation:isolate;background:#dfe5e7}#scene{position:absolute;inset:0;display:flex;width:100%;height:100%;touch-action:none}.scene-settings{position:absolute;z-index:6;top:84px;right:18px;width:min(350px,calc(100% - 36px));max-height:calc(100% - 120px);overflow-y:auto;padding:16px;color:#253036;background:#f8fafaf7;border:1px solid #cdd4d7;border-radius:6px;box-shadow:0 10px 34px #141c1f2e;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.scene-settings[hidden]{display:none}.settings-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.settings-heading strong{font-size:15px}.settings-heading button{width:30px;height:30px;border:0;border-radius:4px;background:#e8ecee;color:#3c474c;font-size:22px;cursor:pointer}.scene-settings h2{margin:18px 0 10px;font-size:12px;font-weight:650}.layer-row{display:flex;align-items:center;gap:8px;min-height:32px;cursor:pointer;font-size:12px}.layer-row input{accent-color:#287cab}.site-mask{margin-top:8px;padding-top:8px;border-top:1px solid #dce2e4}.layer-row small{margin-left:auto;font-size:10px;color:#758087}.layer-row small[data-state=ready]{color:#176842}.layer-row small[data-state=error]{color:#b0442e}.settings-note{margin:8px 0;color:#687378;font-size:11px;line-height:1.7}.building-picker-label{display:block;margin:12px 0 6px;font-size:12px}#building-picker{width:100%;min-height:34px;padding:0 8px;border:1px solid #cdd4d7;border-radius:4px;color:#253036;background:#fff;font:inherit;font-size:12px}.building-details{position:absolute;z-index:4;top:175px;right:18px;width:min(265px,calc(100% - 36px));padding:14px;border:1px solid #b9d6df;border-radius:6px;background:#f8fcfdf7;box-shadow:0 8px 28px #142d3a29}.building-details[hidden]{display:none}.building-selected-tag{display:inline-block;margin-top:10px;padding:4px 7px;border-radius:3px;color:#08728f;background:#dcf3f8;font-size:11px}.building-details dl{margin:12px 0;font-size:11px}.building-details dl div{display:flex;justify-content:space-between;gap:12px;margin-top:10px}.building-details dt{color:#69777d}.building-details dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}.building-details p{margin:0;color:#748188;font-size:10px;line-height:1.6}@media(max-width:900px){.building-details{top:132px;right:18px}}.placement-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0}.placement-grid label{display:grid;gap:6px;font-size:11px}.placement-grid input{width:100%;min-width:0;height:34px;padding:0 8px;border:1px solid #cdd4d7;border-radius:4px;background:#fff;color:#253036;font:inherit;font-variant-numeric:tabular-nums}.placement-actions{display:flex;flex-wrap:wrap;gap:6px}.placement-actions button{min-height:32px;padding:0 10px;border:1px solid #cdd4d7;border-radius:4px;background:#fff;color:#3c474c;font-size:11px;cursor:pointer}.placement-actions .primary-button{border-color:#287cab;background:#287cab;color:#fff}.map-status{position:absolute;z-index:3;bottom:max(5px,env(safe-area-inset-bottom));left:18px;display:flex;flex-wrap:wrap;gap:6px 14px;max-width:calc(100% - 120px);padding:3px 7px;background:#f8fafae0;border-radius:3px;color:#4c595e;font-size:10px;font-variant-numeric:tabular-nums}.map-status button{border:0;padding:0;color:#176842;background:transparent;cursor:pointer;font:inherit}.map-status button[data-warning=true]{color:#b0442e}.topbar{position:absolute;z-index:3;top:max(16px,env(safe-area-inset-top));left:18px;right:18px;min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:9px 10px 9px 16px;color:#182024;background:#f8fafae6;border:1px solid rgba(24,32,36,.12);border-radius:6px;box-shadow:0 7px 22px #141c1f1f;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.identity,.toolbar,.segmented{display:flex;align-items:center}.identity{min-width:138px;gap:11px}.mark{width:8px;height:34px;flex:0 0 auto;background:#d44d32}.identity h1,.identity p{margin:0;letter-spacing:0}.identity h1{font-size:16px;line-height:20px;font-weight:700}.identity p{margin-top:1px;color:#687378;font-size:11px;line-height:14px}.toolbar{min-width:0;gap:8px}.segmented{height:34px;padding:3px;gap:2px;background:#e8ecee;border-radius:5px}.segmented button{min-width:52px;height:28px;padding:0 10px;color:#5c676c;background:transparent;border:0;border-radius:3px;cursor:pointer}.segmented button.selected{color:#182024;background:#fff;box-shadow:0 1px 4px #141c1f24;cursor:default}.backend{min-width:70px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0 9px;color:#4c595e;font-size:11px;font-weight:650;border:1px solid #cdd4d7;border-radius:3px}.backend[data-active=true]{color:#176842;border-color:#9bc4af;background:#eef8f2}.divider{width:1px;height:24px;margin:0 1px;background:#d3d9db}.icon-button{width:36px;height:36px;display:inline-grid;place-items:center;padding:0;color:#3c474c;background:transparent;border:0;border-radius:4px;cursor:pointer}.icon-button:hover{color:#151b1e;background:#e9edef}.icon-button:focus-visible,.segmented button:focus-visible,.error button:focus-visible{outline:2px solid #287cab;outline-offset:2px}.icon-button svg{width:18px;height:18px;stroke-width:1.8}.screen-title{position:absolute;left:50%;top:50%;display:flex;align-items:center;gap:20px;transform:translate(-50%,-50%);pointer-events:none}.screen-title>div{display:grid;justify-items:center;min-width:320px;line-height:1}.screen-title strong{color:#102d60;font-size:27px;font-weight:780;text-shadow:0 1px 0 rgba(255,255,255,.9),0 3px 12px rgba(28,85,154,.13);white-space:nowrap}.screen-title span{margin-top:6px;color:#536987;font-size:10px;font-weight:550;white-space:nowrap}.title-wing{position:relative;width:116px;height:11px;flex:0 0 auto;overflow:hidden;opacity:.92;transform:skew(-28deg)}.title-wing:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,rgba(48,132,239,.18) 0 14px,rgba(48,132,239,.78) 14px 28px,transparent 28px 35px)}.wing-left{transform:scaleX(-1) skew(-28deg)}.header-status{display:flex;align-items:center;gap:14px;margin-right:4px;color:#47617d;font-size:10px;white-space:nowrap}.header-status span{display:flex;align-items:center;gap:5px}.header-status svg{width:15px;height:15px;stroke-width:1.7}.dashboard-layer{position:absolute;z-index:2;inset:0;pointer-events:none}.glass-panel,.kpi-item{color:#1a2a3a;background:#f6fafcb3;border:1px solid rgba(255,255,255,.68);border-radius:6px;box-shadow:0 8px 28px #101c2621,inset 0 1px #ffffff85;-webkit-backdrop-filter:blur(18px) saturate(1.18);backdrop-filter:blur(18px) saturate(1.18)}.kpi-strip{position:absolute;top:88px;left:18px;right:18px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.kpi-item{position:relative;height:66px;display:grid;grid-template-columns:38px minmax(0,1fr) 52px;align-items:center;gap:9px;min-width:0;padding:8px 10px;overflow:hidden}.metric-icon{width:36px;height:36px;display:grid;place-items:center;border:1px solid currentColor;border-radius:50%}.metric-icon svg{width:19px;height:19px;stroke-width:1.8}.metric-blue{color:#347ff0;background:#347ff014}.metric-cyan{color:#0ba8c8;background:#0ba8c814}.metric-green{color:#1d9f73;background:#1d9f7314}.metric-amber{color:#e59622;background:#e5962214}.metric-violet{color:#7a5de8;background:#7a5de814}.kpi-item>div{min-width:0}.kpi-item>div>span,.kpi-item strong,.kpi-item em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpi-item>div>span{color:#526474;font-size:10px;font-weight:650}.kpi-item strong{margin:2px 0 1px;color:#17335e;font-size:19px;line-height:20px}.kpi-item small{margin-left:2px;font-size:9px;font-weight:650}.kpi-item em{color:#75838d;font-size:8px;font-style:normal}.kpi-item em.up{color:#168c63}.kpi-item em.warn{color:#d67f12}.sparkline{width:52px;height:28px;align-self:end;fill:none}.sparkline polyline{stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.sparkline.blue{color:#347ff0}.sparkline.cyan{color:#0ba8c8}.sparkline.green{color:#1d9f73}.sparkline.amber{color:#e59622}.sparkline.violet{color:#7a5de8}.side-stack{position:absolute;top:166px;bottom:190px;width:var(--side-panel-width);display:grid;grid-template-rows:repeat(3,minmax(0,1fr));gap:10px}.side-left{left:var(--edge-space)}.side-right{right:var(--edge-space)}.chart-panel,.composition-panel,.status-panel{min-height:0;padding:12px;overflow:hidden}.panel-heading{min-height:28px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.panel-heading>div{min-width:0}.panel-heading span,.panel-heading small{display:block}.panel-heading span{color:#1c385f;font-size:12px;font-weight:720}.panel-heading small{margin-top:2px;color:#7a8995;font-size:8px}.panel-heading b{min-width:30px;height:20px;display:inline-grid;place-items:center;padding:0 7px;color:#2e78dc;background:#347ff01a;border:1px solid rgba(52,127,240,.16);border-radius:3px;font-size:9px}.panel-heading b.green-tag{color:#14845e;background:#1d9f731a;border-color:#1d9f7329}.panel-heading>svg{width:17px;height:17px;color:#728697;stroke-width:1.7}.chart-legend{display:flex;gap:13px;margin:6px 0 1px;color:#647582;font-size:8px}.dot{width:6px;height:6px;display:inline-block;margin-right:4px;border-radius:50%}.blue-dot{background:#347ff0}.green-dot{background:#27a879}.amber-dot{background:#e9a42c}.violet-dot{background:#8c70e9}.line-chart,.bar-chart{width:100%;height:calc(100% - 49px);min-height:96px;overflow:visible}.bar-chart{height:calc(100% - 31px)}.chart-grid line{stroke:#3d52621f;stroke-width:.8}.area-blue{fill:#347ff012}.chart-line{fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.line-blue{stroke:#347ff0}.line-green{stroke:#28a879}.x-labels text{fill:#7f8d97;font-size:6px}.bars rect{rx:1}.blue-bars rect{fill:#3a82ef}.green-bars rect{fill:#24ad7c}.composition-body{height:calc(100% - 34px);display:grid;grid-template-columns:104px 1fr;align-items:center;gap:8px}.donut{width:96px;height:96px;display:grid;place-items:center;background:conic-gradient(#347ff0 0 31.2%,#27a879 31.2% 59.8%,#e9a42c 59.8% 81.2%,#8c70e9 81.2% 100%);border-radius:50%;box-shadow:0 7px 18px #1d38521f}.donut>div{width:64px;height:64px;display:grid;place-content:center;text-align:center;background:#f8fbfced;border-radius:50%}.donut strong,.donut span{display:block}.donut strong{color:#17335e;font-size:16px}.donut span{margin-top:2px;color:#7b8a95;font-size:8px}.donut-legend{display:grid;gap:8px;min-width:0}.donut-legend div{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;color:#5f7180;font-size:8px}.donut-legend div strong{color:#243d5d;font-size:9px}.status-list{display:grid;gap:10px;margin-top:9px}.status-list div{display:grid;grid-template-columns:1fr auto;align-items:center;gap:6px;color:#5d6f7d;font-size:9px}.status-list div strong{color:#253e5e;font-size:9px}.status-list div>i{grid-column:1 / -1;height:4px;overflow:hidden;background:#475b6b1f;border-radius:2px}.status-list div>i:after{content:"";display:block;width:var(--value);height:100%;background:#28a879;border-radius:inherit}.status-list div>i.amber-progress:after{background:#e9a42c}.status-note{height:31px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;margin-top:12px;padding:0 8px;color:#667987;background:#e6911814;border-left:2px solid #e9a42c;font-size:8px}.status-note span{display:flex;align-items:center;gap:5px}.status-note svg{width:12px;height:12px;color:#d48618}.status-note strong{color:#d17e13;font-size:13px}.status-note em{color:#18865f;font-style:normal}.bottom-dashboard{position:absolute;left:var(--edge-space);right:var(--edge-space);bottom:18px;height:162px;display:grid;grid-template-columns:minmax(220px,.8fr) minmax(220px,.72fr) minmax(320px,1.3fr);overflow:hidden}.bottom-dashboard>div{min-width:0;padding:12px 14px}.bottom-dashboard>div+div{border-left:1px solid rgba(59,79,94,.12)}.environment-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:16px}.environment-grid>div{min-width:0;display:flex;align-items:center;gap:7px}.environment-grid svg{width:17px;height:17px;flex:0 0 auto;color:#178db3;stroke-width:1.7}.environment-grid span,.environment-grid strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.environment-grid span{color:#778792;font-size:8px}.environment-grid strong{margin-top:3px;color:#29435f;font-size:10px}.event-list{display:grid;margin-top:9px}.event-list>div{min-width:0;height:27px;display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:8px;color:#5e7180;border-top:1px solid rgba(59,79,94,.09);font-size:8px}.event-list time{color:#82909a}.event-list span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-list em{color:#198861;font-style:normal}.event-list em.processing{color:#d58114}.energy-panel,.service-panel{min-height:0;padding:12px;overflow:hidden}.energy-summary{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:7px}.energy-summary strong{color:#17335e;font-size:18px}.energy-summary strong small{font-size:8px}.energy-summary em{color:#168c63;font-size:8px;font-style:normal}.energy-chart{width:100%;height:calc(100% - 86px);min-height:72px;margin-top:3px}.energy-area{fill:#0ba8c817}.energy-line{stroke:#0ba8c8}.energy-legend{display:flex;justify-content:space-between;gap:7px;color:#71818c;font-size:8px}.energy-legend i{width:6px;height:6px;display:inline-block;margin-right:4px;background:#0ba8c8;border-radius:1px}.energy-legend span:nth-child(2) i{background:#347ff0}.energy-legend span:nth-child(3) i{background:#8c70e9}.service-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.service-metrics>div{min-width:0;padding:8px;background:#ffffff47;border-left:2px solid #347ff0}.service-metrics>div:nth-child(2){border-left-color:#27a879}.service-metrics>div:nth-child(3){border-left-color:#e9a42c}.service-metrics>div:nth-child(4){border-left-color:#8c70e9}.service-metrics span,.service-metrics strong,.service-metrics em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.service-metrics span{color:#74848f;font-size:8px}.service-metrics strong{margin:2px 0;color:#203b5e;font-size:15px}.service-metrics em{color:#71818c;font-size:7px;font-style:normal}.service-timeline{display:grid;margin-top:8px}.service-timeline>div{min-width:0;height:25px;display:grid;grid-template-columns:35px minmax(0,1fr) auto;align-items:center;gap:7px;border-top:1px solid rgba(59,79,94,.1);color:#667987;font-size:7px}.service-timeline span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.service-timeline time{color:#85939d}.service-timeline em{color:#18865f;font-style:normal}.health-content{height:calc(100% - 29px);display:grid;grid-template-columns:78px minmax(0,1fr);align-items:center;gap:12px}.health-ring{width:68px;height:68px;display:grid;place-content:center;text-align:center;background:radial-gradient(circle at center,rgba(247,251,252,.96) 56%,transparent 57%),conic-gradient(#27a879 0 92%,#e9a42c 92% 98%,#df5d5d 98% 100%);border-radius:50%}.health-ring strong,.health-ring span{display:block}.health-ring strong{color:#17335e;font-size:15px}.health-ring span{margin-top:2px;color:#7a8994;font-size:7px}.health-content>div:last-child{display:grid;gap:7px}.health-content>div:last-child span{display:grid;grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:4px;color:#6c7d89;font-size:8px}.health-content>div:last-child i{width:6px;height:6px;border-radius:50%}.health-content>div:last-child strong{color:#29425f;font-size:9px}.red-dot{background:#df5d5d}.loading{position:absolute;z-index:4;left:50%;bottom:max(30px,env(safe-area-inset-bottom));width:min(390px,calc(100% - 36px));padding:13px 14px 14px;color:#253036;background:#f8fafaeb;border:1px solid rgba(24,32,36,.12);border-radius:6px;box-shadow:0 7px 22px #141c1f1f;transform:translate(-50%);transition:opacity .18s ease,visibility .18s ease;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.loading.hidden{visibility:hidden;opacity:0}.loading-row{display:flex;justify-content:space-between;gap:16px;margin-bottom:9px;font-size:12px;font-weight:600}.progress-track{height:4px;overflow:hidden;background:#d8dee0}.progress-track span{display:block;width:100%;height:100%;background:#d44d32;transform:scaleX(0);transform-origin:left center;transition:transform .14s ease}.error{position:absolute;z-index:5;left:50%;top:50%;width:min(390px,calc(100% - 36px));padding:18px;background:#fff;border:1px solid #e0a89c;border-radius:6px;box-shadow:0 10px 34px #141c1f2e;transform:translate(-50%,-50%)}.error strong,.error span{display:block}.error strong{margin-bottom:7px}.error span{margin-bottom:14px;color:#69747a;font-size:12px;overflow-wrap:anywhere}.error button{height:34px;padding:0 13px;color:#fff;background:#283337;border:0;border-radius:4px;cursor:pointer}@media(max-width:1500px){.screen-title{gap:0}.title-wing,.header-status{display:none}}@media(max-width:1200px){:root{--side-panel-width: 220px}.screen-title{gap:0}.screen-title>div{min-width:250px}.screen-title strong{font-size:20px}.kpi-item{grid-template-columns:34px minmax(0,1fr)}.sparkline{display:none}.bottom-dashboard{grid-template-columns:minmax(200px,.8fr) minmax(260px,1.2fr)}.health-block{display:none}.composition-body{grid-template-columns:84px 1fr}.donut{width:78px;height:78px}.donut>div{width:52px;height:52px}.donut strong{font-size:14px}}@media(max-height:800px)and (min-width:901px){.side-stack{grid-template-rows:repeat(2,minmax(0,1fr))}.coverage-panel{display:none}}@media(max-width:900px){.screen-title{display:none}.kpi-strip{top:84px;left:10px;right:10px;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:168px;gap:7px;overflow-x:auto;pointer-events:auto;scrollbar-width:none}.kpi-strip::-webkit-scrollbar{display:none}.kpi-item{height:60px;grid-template-columns:34px minmax(0,1fr);padding:7px 9px}.side-stack,.bottom-dashboard{display:none}}@media(max-width:680px){.scene-settings{top:70px;right:10px;width:min(350px,calc(100% - 20px));max-height:calc(100% - 110px)}.map-status{left:10px;max-width:calc(100% - 80px);font-size:9px}.topbar{top:max(10px,env(safe-area-inset-top));left:10px;right:10px;min-height:54px;padding:7px 7px 7px 11px;gap:8px}.identity{min-width:94px;gap:8px}.mark{width:6px;height:30px}.identity h1{font-size:14px}.identity p,.backend,.divider,#fullscreen{display:none}.toolbar{gap:3px}.segmented button{min-width:44px;padding:0 7px;font-size:12px}.icon-button{width:32px;height:34px}.kpi-strip{top:74px}.loading{bottom:max(76px,calc(env(safe-area-inset-bottom) + 66px))}}@media(prefers-reduced-motion:reduce){.loading,.progress-track span{transition:none}}
