.side[data-v-446519c8]{width:200px;background:#1f2d3d;color:#cfd8e3;display:flex;flex-direction:column}.logo[data-v-446519c8]{height:56px;display:flex;align-items:center;padding:0 18px;font-weight:700;color:#fff;border-bottom:1px solid #2c3e50;text-decoration:none;cursor:pointer}.logo[data-v-446519c8]:hover{background:#26384a}nav[data-v-446519c8]{padding:10px 0;flex:1}.link[data-v-446519c8]{display:flex;align-items:center;gap:10px;padding:11px 18px;color:#cfd8e3;font-size:14px}.link[data-v-446519c8]:hover{background:#26384a}.link.router-link-exact-active[data-v-446519c8]{background:var(--c-primary);color:#fff}.ico[data-v-446519c8]{width:20px;text-align:center}.btn[data-v-d7cfd696]{border:1px solid var(--c-border);background:#fff;color:var(--c-text);border-radius:var(--radius);padding:8px 14px;cursor:pointer;font-size:14px}.btn.sm[data-v-d7cfd696]{padding:4px 10px;font-size:13px}.btn.primary[data-v-d7cfd696]{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.btn.danger[data-v-d7cfd696]{background:var(--c-danger);border-color:var(--c-danger);color:#fff}.btn[data-v-d7cfd696]:disabled{opacity:.55;cursor:not-allowed}.spinner[data-v-d7cfd696]{display:inline-block;width:12px;height:12px;margin-right:6px;border:2px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:spin-d7cfd696 .7s linear infinite;vertical-align:-1px}@keyframes spin-d7cfd696{to{transform:rotate(360deg)}}.dot[data-v-f4e88a37]{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--c-text-weak)}.dot[data-v-f4e88a37]:before{content:"";width:9px;height:9px;border-radius:50%;background:var(--c-offline)}.dot.online[data-v-f4e88a37]{color:var(--c-online)}.dot.online[data-v-f4e88a37]:before{background:var(--c-online)}.pulse[data-v-f4e88a37]{position:absolute}.top[data-v-8d9df27f]{height:56px;background:#fff;border-bottom:1px solid var(--c-border);display:flex;align-items:center;justify-content:space-between;padding:0 18px}.title[data-v-8d9df27f]{font-weight:600}.right[data-v-8d9df27f]{display:flex;align-items:center;gap:12px}.user[data-v-8d9df27f]{font-size:14px}.mask[data-v-7cb8408e]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal[data-v-7cb8408e]{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);max-width:92vw;max-height:88vh;display:flex;flex-direction:column}.head[data-v-7cb8408e]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--c-border);font-weight:600}.x[data-v-7cb8408e]{border:none;background:none;font-size:20px;cursor:pointer;color:var(--c-text-weak)}.body[data-v-7cb8408e]{padding:16px;overflow:auto}.foot[data-v-7cb8408e]{padding:12px 16px;border-top:1px solid var(--c-border);display:flex;justify-content:flex-end;gap:8px}.msg[data-v-5f6294bf]{margin:0 0 12px;line-height:1.6}.pw[data-v-5f6294bf]{width:100%;padding:8px 10px;border:1px solid var(--c-border);border-radius:var(--radius)}.host[data-v-a3d511b6]{position:fixed;top:16px;left:50%;transform:translate(-50%);z-index:2000;display:flex;flex-direction:column;gap:8px}.toast[data-v-a3d511b6]{padding:10px 18px;border-radius:var(--radius);color:#fff;font-size:14px;box-shadow:var(--shadow)}.toast.info[data-v-a3d511b6]{background:#37474f}.toast.success[data-v-a3d511b6]{background:var(--c-online)}.toast.error[data-v-a3d511b6]{background:var(--c-danger)}.toast.warn[data-v-a3d511b6]{background:var(--c-warn)}.shell[data-v-e0c7d19d]{display:flex;height:100vh}.main[data-v-e0c7d19d]{flex:1;display:flex;flex-direction:column;min-width:0}.content[data-v-e0c7d19d]{flex:1;padding:16px;overflow:auto}.login[data-v-73923d92]{height:100vh;display:flex;align-items:center;justify-content:center;background:#1f2d3d}.card[data-v-73923d92]{background:#fff;padding:32px;border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:14px;width:320px}.card h2[data-v-73923d92]{margin:0 0 8px;text-align:center;font-size:18px}input[data-v-73923d92]{padding:10px 12px;border:1px solid var(--c-border);border-radius:var(--radius)}.info[data-v-42ffc80e]{position:absolute;right:12px;top:12px;width:220px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:12px;z-index:6;font-size:13px}.x[data-v-42ffc80e]{position:absolute;right:8px;top:6px;border:none;background:none;font-size:18px;cursor:pointer;color:var(--c-text-weak)}.name[data-v-42ffc80e]{font-weight:600;margin-bottom:6px}.row[data-v-42ffc80e]{margin:4px 0}.map-wrap[data-v-233e1927]{position:relative;width:100%;height:100%;min-height:0}.map[data-v-233e1927]{width:100%;height:100%}.hint[data-v-233e1927]{position:absolute;left:50%;top:12px;transform:translate(-50%);background:#0009;color:#fff;padding:6px 12px;border-radius:6px;font-size:13px;z-index:5}.hint.error[data-v-233e1927]{background:#c0392b;max-width:90%;text-align:center}.map-tools[data-v-233e1927]{position:absolute;right:12px;top:12px;z-index:6;display:flex;gap:8px}.tool-btn[data-v-233e1927]{padding:6px 14px;border:1px solid rgba(0,0,0,.15);border-radius:18px;background:#fff;color:#333;font-size:13px;cursor:pointer;box-shadow:0 1px 4px #0003;transition:all .15s}.tool-btn[data-v-233e1927]:hover{background:#f0f6ff}.tool-btn.on[data-v-233e1927]{background:var(--c-primary, #185FA5);color:#fff;border-color:var(--c-primary, #185FA5)}.ptt[data-v-058b00c9]{display:flex;align-items:center;gap:8px;padding:12px 18px;border:none;border-radius:24px;background:var(--c-primary);color:#fff;font-size:15px;cursor:pointer;-webkit-user-select:none;user-select:none}.ptt.active[data-v-058b00c9]{background:var(--c-danger)}.ico[data-v-058b00c9]{font-size:18px}.voice[data-v-ecc77b54]{background:#fff;padding:16px;border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}.title[data-v-ecc77b54]{font-weight:600}.grp[data-v-ecc77b54]{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--c-text-weak)}.group-checklist[data-v-ecc77b54]{display:flex;flex-direction:column;gap:6px;max-height:160px;overflow-y:auto;border:1px solid var(--c-border);border-radius:var(--radius);padding:8px}.chk[data-v-ecc77b54]{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--c-text);cursor:pointer}.tip[data-v-ecc77b54]{font-size:12px;margin:0}.dash[data-v-07e44117]{display:flex;gap:16px;height:calc(100vh - 88px)}.map-col[data-v-07e44117]{flex:1;min-width:0}.side-col[data-v-07e44117]{width:300px;display:flex;flex-direction:column;gap:16px}.panel[data-v-07e44117]{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);flex:1;display:flex;flex-direction:column;overflow:hidden}.ph[data-v-07e44117]{padding:10px 12px;font-weight:600;border-bottom:1px solid var(--c-border);display:flex;align-items:center;justify-content:space-between}.traj-toggle[data-v-07e44117]{font-weight:400;font-size:12px;color:var(--c-text-weak);display:flex;align-items:center;gap:4px;cursor:pointer}.list-hint[data-v-07e44117]{padding:16px;color:var(--c-text-weak);font-size:13px}.list[data-v-07e44117]{list-style:none;margin:0;padding:4px;overflow:auto;flex:1}.list li[data-v-07e44117]{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:6px;cursor:pointer;font-size:14px}.list li.sel[data-v-07e44117]{background:#e6f0fb}.list li.off[data-v-07e44117]{opacity:.6;cursor:default}.nm[data-v-07e44117]{flex:1}.badge[data-v-07e44117]{font-size:10px;background:#fce4ec;color:#c2185b;border-radius:8px;padding:1px 6px}.call[data-v-07e44117]{padding:3px 10px;border:none;border-radius:12px;background:var(--c-primary);color:#fff;font-size:12px;cursor:pointer}.call[data-v-07e44117]:hover{filter:brightness(1.08)}.sb[data-v-7e2e4e18]{display:flex;gap:8px;align-items:center}.inp[data-v-7e2e4e18]{padding:7px 10px;border:1px solid var(--c-border);border-radius:var(--radius);min-width:200px}.pg[data-v-c9ea1227]{display:flex;justify-content:space-between;align-items:center;padding:10px 4px}.range[data-v-c9ea1227]{color:var(--c-text-weak);font-size:13px}.btns[data-v-c9ea1227]{display:flex;align-items:center;gap:8px}.cur[data-v-c9ea1227]{font-size:13px;color:var(--c-text-weak)}.dt[data-v-b1c2112d]{width:100%;border-collapse:collapse;background:#fff;font-size:14px}.dt th[data-v-b1c2112d],.dt td[data-v-b1c2112d]{padding:10px 12px;border-bottom:1px solid var(--c-border);text-align:left}.dt th[data-v-b1c2112d]{background:#fafafa;color:var(--c-text-weak);font-weight:600}.dt tbody tr[data-v-b1c2112d]{cursor:pointer}.dt tbody tr[data-v-b1c2112d]:hover{background:#f5f9ff}.empty[data-v-b1c2112d]{text-align:center;color:var(--c-text-weak);padding:24px}.on[data-v-87a987d6]{color:var(--c-online)}.off[data-v-87a987d6]{color:var(--c-danger)}.form[data-v-438c8c11]{display:flex;flex-direction:column;gap:12px}label[data-v-438c8c11]{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--c-text-weak)}input[data-v-438c8c11],select[data-v-438c8c11]{padding:8px 10px;border:1px solid var(--c-border);border-radius:var(--radius);color:var(--c-text)}.bar[data-v-2840a292]{display:flex;gap:8px}.page[data-v-133d1698]{padding:4px}.head[data-v-133d1698]{display:flex;justify-content:flex-end;align-items:center;margin-bottom:12px}.tools[data-v-133d1698]{display:flex;gap:8px;align-items:center}.page[data-v-f5a28206]{padding:4px;display:flex;flex-direction:column;gap:12px}.filters[data-v-f5a28206]{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.inp[data-v-f5a28206]{padding:7px 10px;border:1px solid var(--c-border);border-radius:var(--radius)}.hint[data-v-f5a28206]{padding:24px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow)}.body[data-v-f5a28206]{display:flex;gap:16px;align-items:stretch;height:calc(100vh - 180px);min-height:520px}.map-card[data-v-f5a28206]{flex:1;min-width:0;position:relative;display:flex}.map-card[data-v-f5a28206]>.map-wrap{flex:1;min-height:0;height:100%}.side-card[data-v-f5a28206]{width:260px;display:flex;flex-direction:column;gap:10px;min-height:0}.side-card .period-panel[data-v-f5a28206]{flex:1;min-height:0;display:flex;flex-direction:column}.text-weak[data-v-f5a28206]{color:var(--c-text-weak);font-size:13px}.map-hint[data-v-f5a28206]{position:absolute;left:50%;bottom:56px;transform:translate(-50%);background:#0009;color:#fff;padding:6px 12px;border-radius:6px;font-size:13px;z-index:5;white-space:nowrap}.period-panel[data-v-f5a28206]{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 12px}.pp-h[data-v-f5a28206]{font-weight:600;font-size:13px;margin-bottom:8px}.pp-empty[data-v-f5a28206]{padding:8px 0}.period-list[data-v-f5a28206]{list-style:none;margin:0;padding:0;max-height:100%;overflow:auto}.period-item[data-v-f5a28206]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px;border-radius:8px;cursor:pointer;font-size:14px;color:#333;transition:background .15s}.period-item+.period-item[data-v-f5a28206]{border-top:1px solid #f0f2f5}.period-item[data-v-f5a28206]:hover{background:#f0f6ff}.period-item.on[data-v-f5a28206]{background:var(--c-primary, #185FA5);color:#fff}.period-item.on .pi-count[data-v-f5a28206]{color:#fff}.pi-time[data-v-f5a28206]{font-variant-numeric:tabular-nums;font-weight:600}.pi-count[data-v-f5a28206]{color:var(--c-text-weak);font-size:13px}.fm[data-v-4caf1973]{display:flex;flex-direction:column;gap:10px}.head[data-v-4caf1973]{display:flex}.page[data-v-1c2b7e08]{padding:4px}.badge[data-v-6521664c]{font-size:12px;padding:2px 8px;border-radius:10px;background:#eef2f7;color:var(--c-text-weak)}.badge.super[data-v-6521664c]{background:#fde8e8;color:var(--c-danger)}.badge.admin[data-v-6521664c]{background:#e6f0fb;color:var(--c-primary)}.form[data-v-d3f321de]{display:flex;flex-direction:column;gap:12px}label[data-v-d3f321de]{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--c-text-weak)}input[data-v-d3f321de],select[data-v-d3f321de]{padding:8px 10px;border:1px solid var(--c-border);border-radius:var(--radius);color:var(--c-text)}.form[data-v-2d0e72a7]{display:flex;flex-direction:column;gap:12px}label[data-v-2d0e72a7]{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--c-text-weak)}input[data-v-2d0e72a7]{padding:8px 10px;border:1px solid var(--c-border);border-radius:var(--radius);color:var(--c-text)}.err[data-v-2d0e72a7]{color:var(--c-danger);font-size:12px;margin:0}.page[data-v-1c801d6c]{padding:4px}.head[data-v-1c801d6c]{display:flex;justify-content:flex-end;align-items:center;margin-bottom:12px}.tools[data-v-1c801d6c]{display:flex;gap:8px}.det[data-v-35cf556c]{font-size:12px;color:var(--c-text-weak)}.page[data-v-d10a1701]{padding:4px}.card[data-v-7b91ddbd]{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px;min-width:140px}.label[data-v-7b91ddbd]{color:var(--c-text-weak);font-size:13px}.value[data-v-7b91ddbd]{font-size:26px;font-weight:700;margin:6px 0}.value small[data-v-7b91ddbd]{font-size:13px;font-weight:400;color:var(--c-text-weak);margin-left:3px}.trend[data-v-7b91ddbd]{font-size:12px}.trend.up[data-v-7b91ddbd]{color:var(--c-danger)}.trend.down[data-v-7b91ddbd]{color:var(--c-online)}.chart[data-v-ced179ea]{width:100%}.alerts[data-v-6ea81161]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}li[data-v-6ea81161]{display:flex;gap:10px;padding:8px 12px;background:#fff;border-radius:var(--radius);font-size:13px}li.error[data-v-6ea81161]{border-left:3px solid var(--c-danger)}li.warn[data-v-6ea81161]{border-left:3px solid var(--c-warn)}.time[data-v-6ea81161]{color:var(--c-text-weak)}.ok[data-v-6ea81161]{color:var(--c-online);justify-content:center}.rc[data-v-54e69fd3]{display:flex;flex-direction:column;gap:12px;align-items:flex-start}.warn-box[data-v-54e69fd3]{background:#fff4f4;border:1px solid #f5c6c6;color:#b03a3a;padding:10px 12px;border-radius:var(--radius);font-size:13px;line-height:1.6}.page[data-v-41a751de]{padding:4px}.cards[data-v-41a751de]{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:16px}.charts[data-v-41a751de]{display:flex;gap:16px;margin-bottom:16px}.box[data-v-41a751de]{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:12px;flex:1}.tt[data-v-41a751de]{font-weight:600;margin-bottom:8px}.row[data-v-41a751de]{display:flex;gap:16px}.alerts[data-v-41a751de]{flex:2}.loading[data-v-ab815d5f]{display:flex;align-items:center;gap:8px;color:var(--c-text-weak);padding:24px;justify-content:center}.spin[data-v-ab815d5f]{width:16px;height:16px;border:2px solid var(--c-border);border-top-color:var(--c-primary);border-radius:50%;animation:sp-ab815d5f .7s linear infinite}@keyframes sp-ab815d5f{to{transform:rotate(360deg)}}.page[data-v-ee52d7de]{padding:4px}.box[data-v-ee52d7de]{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:16px;display:flex;flex-direction:column;gap:12px;max-width:640px}.box h4[data-v-ee52d7de]{margin:0 0 4px}.sec-head[data-v-ee52d7de]{display:flex;align-items:center;justify-content:space-between}label[data-v-ee52d7de]{display:flex;flex-direction:column;gap:6px;font-size:14px}input[data-v-ee52d7de]{padding:8px 10px;border:1px solid var(--c-border);border-radius:var(--radius);max-width:160px}.hint[data-v-ee52d7de]{font-size:12px;color:var(--c-text-weak)}.text-weak[data-v-ee52d7de]{color:var(--c-text-weak)}.tl[data-v-ee52d7de]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.trow[data-v-ee52d7de]{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border:1px solid var(--c-border);border-radius:var(--radius)}.tinfo[data-v-ee52d7de]{display:flex;flex-direction:column;gap:2px}.tname[data-v-ee52d7de]{font-weight:600;display:flex;align-items:center;gap:8px}.tid[data-v-ee52d7de]{color:#888;font-size:12px}:root{--c-bg: #f5f7fa;--c-panel: #ffffff;--c-border: #e4e7ed;--c-text: #1f2d3d;--c-text-weak: #909399;--c-primary: #1e88e5;--c-online: #43a047;--c-offline: #9e9e9e;--c-danger: #e53935;--c-warn: #fb8c00;--radius: 8px;--shadow: 0 2px 8px rgba(0, 0, 0, .08)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,Microsoft YaHei,sans-serif;color:var(--c-text);background:var(--c-bg)}a{color:var(--c-primary);text-decoration:none}.text-weak{color:var(--c-text-weak)}.text-danger{color:var(--c-danger)}.text-warn{color:var(--c-warn)}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.flex-1{flex:1}.gap-8{gap:8px}.gap-16{gap:16px}.items-center{align-items:center}.justify-between{justify-content:space-between}
