:root{--bg:#01050b;--cyan:#00e5ff;--blue:#4a7dff;--red:#ff2a48;--amber:#ffb020;--good:#2bd99f;--text:#d8f3ff;--text-dim:#7fa6bd;--line:#00e5ff4d;--font-num:"Bahnschrift", "DIN Alternate", "Segoe UI", sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#app{background:var(--bg);height:100%;color:var(--text);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;margin:0;font-family:Microsoft YaHei,PingFang SC,system-ui,sans-serif;overflow:hidden}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-thumb{background:#00e5ff59;border-radius:2px}::-webkit-scrollbar-track{background:0 0}.label-layer>div{will-change:transform}.station-label{font-family:var(--font-num);color:var(--text);border:1px solid #00e5ff73;border-bottom:2px solid var(--cyan);white-space:nowrap;text-shadow:0 0 6px #00e5ffcc;background:#001e328c;flex-direction:column;align-items:center;padding:2px 8px;font-size:12px;line-height:1.25;display:flex}.station-label b{color:#fff;letter-spacing:1px;font-weight:600}.station-label span{color:var(--text-dim);font-size:10px}.station-label.face{border-color:#ff7a1a99 #ff7a1a99 #ff7a1a}.station-label.face b{color:#ffb37a}.station-label.shaft{font-size:13px}.station-label.pvi{border-color:#b18cff8c #b18cff8c #b18cff}.station-label.pvi b{color:#d9c9ff}.station-label.section-zone{border-color:#5aa8ff99 #5aa8ff99 #5aa8ff}.station-label.section-zone b{color:#bcd9ff}.station-label.chainbreak{background:#28120099;border-color:#ff7a1aa6 #ff7a1aa6 #ff7a1a}.station-label.chainbreak b{color:#ffc28f}.station-label.ghost{background:#0a142280;border:1px dashed #6f8fb3b3;border-bottom-color:#6f8fb3e6}.station-label.ghost b{color:#a9c1dc;font-weight:500}.station-label.holed{background:#00281e99;border-color:#2bd99f99 #2bd99f99 #2bd99f}.station-label.holed b{color:#8ff5cf}.station-label.waiting{border-style:dashed;border-color:#5aa8ff8c #5aa8ff8c #5aa8ff}.station-label.waiting b{color:#bcd9ff}.sensor-label{font-family:var(--font-num);color:#e9ffd0;white-space:nowrap;pointer-events:auto;background:#142800a6;border:1px solid #b8ff2e99;border-radius:2px;padding:0 4px;font-size:10px}.sensor-label b{color:#b8ff2e;margin-right:3px}.sensor-label.CO{background:#281000a6;border-color:#ff7a1ab3}.sensor-label.CO b{color:#ffb37a}.sensor-label.smoke{background:#14181ea6;border-color:#c9d3de99}.sensor-label.smoke b{color:#dfe7ef}.station-label.goaf{background:#28000899;border-color:#c0485ab3 #c0485ab3 #c0485a}.station-label.goaf b{color:#ff9aa8}.keypoint-label{font-family:var(--font-num);color:#ffd28ce6;white-space:nowrap;text-shadow:0 0 4px #000000e6;font-size:10.5px}.keypoint-label b{color:#ffb020;margin-right:4px;font-weight:700}.segment-label{color:#d8f3ffbf;white-space:nowrap;text-align:center;padding:1px 6px;font-size:11px}.segment-label em{color:var(--text-dim);font-size:10px;font-style:normal;display:block}.junction-label{color:#fff;text-align:center;white-space:nowrap;background:#0a1e3299;border:1px dashed #e8fbffb3;padding:2px 8px;font-size:12px;font-weight:600;box-shadow:0 0 10px #e8fbff40}.junction-label em{color:var(--text-dim);font-size:10px;font-style:normal;font-weight:400;display:block}.scene-compass{z-index:1;pointer-events:none;flex-direction:column;align-items:center;width:84px;display:flex;position:absolute}.scene-compass svg{filter:drop-shadow(0 0 6px #00e5ff73);width:64px;height:64px}.scene-compass .ring{fill:#041222bf;stroke:#00e5ff8c;stroke-width:1px}.scene-compass .t{stroke:#00e5ff59;stroke-width:.8px}.scene-compass .T{stroke:var(--cyan);stroke-width:1.4px}.scene-compass .n{fill:#ff3b5c}.scene-compass .s{fill:#d8f3ff8c}.scene-compass .hub{fill:#fff}.scene-compass .lbl{font:600 7px var(--font-num);fill:var(--text-dim);text-anchor:middle}.scene-compass .lbl.N{fill:#fff;font-size:8px}.scene-compass .az{font-family:var(--font-num);color:var(--text-dim);white-space:nowrap;text-shadow:0 0 4px #000;margin-top:2px;font-size:10px}.edit-label{color:#fff;text-align:center;white-space:nowrap;background:#3c0032b8;border:1px solid #ff5ad1;border-radius:3px;padding:3px 10px;font-size:12px;box-shadow:0 0 14px #ff5ad180}.edit-label b{font-weight:600;display:block}.edit-label em{font-family:var(--font-num);color:#ffd0f2;font-size:10.5px;font-style:normal;display:block}.elev-label{font-family:var(--font-num);color:var(--cyan);text-shadow:0 0 6px #00e5ffcc;white-space:nowrap;font-size:11px}.danger-label{color:#fff;text-align:center;white-space:nowrap;border:1px solid var(--red);background:#ff2a4859;padding:3px 10px;font-size:13px;font-weight:700;animation:1.2s infinite danger-blink;box-shadow:0 0 16px #ff2a4899}.danger-label em{font-size:10px;font-style:normal;font-weight:400;font-family:var(--font-num);color:#ffc9d1;display:block}@keyframes danger-blink{50%{opacity:.55}}.danger-label.restricted{background:#ffb0202e;border-color:#ffb020b3;font-size:12px;font-weight:600;animation:none;box-shadow:0 0 10px #ffb02059}.danger-label.restricted em{color:#ffe2b0}.danger-label.blast{background:#ffb02047;border-color:#ffb020;box-shadow:0 0 16px #ffb02099}.danger-label.blast em{color:#ffe2b0}.anchor-label{font-family:var(--font-num);color:var(--cyan);pointer-events:auto;cursor:pointer;background:#00142299;border:1px solid #00e5ff59;align-items:center;gap:4px;padding:1px 6px;font-size:11px;transition:color .2s,background-color .2s,box-shadow .2s,border-color .2s;display:flex}.anchor-label i{background:currentColor;width:6px;height:6px;transform:rotate(45deg)}.anchor-label.warning{color:var(--amber);border-color:#ffb02073}.anchor-label.offline{color:#6b7a8c;border-color:#3b4656}.anchor-label.linked{box-shadow:0 0 10px #00e5ff8c}.anchor-label.pending{opacity:.45;border-style:dashed}.anchor-label.mobile{color:#ffd166;border-color:#ffd166b3}.anchor-label:hover,.anchor-label.active{color:#001018;background:var(--cyan);box-shadow:0 0 16px var(--cyan)}.ranging-label{font-family:var(--font-num);color:#eaffff;white-space:nowrap;background:#003c508c;border:1px solid #00e5ff99;border-radius:10px;padding:1px 6px;font-size:12px;transition:opacity .2s;box-shadow:0 0 8px #00e5ff73}.ranging-label b{font-size:13px;font-weight:600}.ranging-label em{color:var(--text-dim);margin-left:4px;font-size:9px;font-style:normal}.tag-label{min-width:132px;color:var(--text);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:linear-gradient(160deg,#143c8cb8,#041028b8);border:1px solid #4a7dffbf;border-radius:4px;padding:6px 8px;font-size:12px;transition:background .3s,border-color .3s,box-shadow .3s;box-shadow:0 0 14px #4a7dff8c}.tag-label:after{content:"";background:inherit;border-right:inherit;border-bottom:inherit;width:10px;height:10px;margin-left:-5px;position:absolute;bottom:-6px;left:50%;transform:rotate(45deg)}.tl-head{border-bottom:1px solid #ffffff26;align-items:baseline;gap:5px;margin-bottom:3px;padding-bottom:3px;display:flex}.tl-name{color:#fff;font-size:14px;font-weight:700}.tl-role{color:var(--text-dim);font-size:10px}.tl-id{font-family:var(--font-num);color:var(--text-dim);margin-left:auto;font-size:10px}.tl-grid{grid-template-columns:auto auto 1fr;align-items:baseline;gap:1px 6px;display:grid}.tl-grid span{color:var(--text-dim);font-size:10px}.tl-grid b{font-family:var(--font-num);text-align:right;font-weight:600}.tl-grid small{color:var(--text-dim);font-size:9px}.tl-grid b.over{color:#ff8a9b}.tl-gas4{border-top:1px solid #ffffff1f;grid-template-columns:1fr 1fr;gap:2px 8px;margin-top:4px;padding-top:3px;display:grid}.tl-gas4 span{white-space:nowrap;align-items:baseline;gap:3px;display:flex}.tl-gas4 i{color:var(--text-dim);font-size:10px;font-style:normal}.tl-gas4 b{font-family:var(--font-num);font-weight:600}.tl-gas4 small{color:var(--text-dim);font-size:9px}.tl-gas4 .warn b{color:var(--amber)}.tl-gas4 .alarm b{color:#ff8a9b}.tl-gas4 .warn:after,.tl-gas4 .alarm:after{content:"▲";font-size:8px}.tl-gas4 .warn:after{color:var(--amber)}.tl-gas4 .alarm:after{color:#ff6b83}.tl-status{color:var(--good);margin-top:3px;font-size:11px}.tl-xy{font-family:var(--font-num);color:#ffd166;white-space:pre;margin-top:2px;font-size:10px}.tag-label.danger,.tag-label.sos{border-color:var(--red);background:linear-gradient(160deg,#aa001ed9,#32000ad9);animation:.5s infinite alternate tag-alarm;box-shadow:0 0 22px #ff2a48e6}.tag-label.danger .tl-status,.tag-label.sos .tl-status{color:#fff;font-weight:700}@keyframes tag-alarm{to{box-shadow:0 0 6px #ff2a4866}}
