/* ============ Tab 1: 实时监控 ============ */
#tab-live { flex-direction: row; }
#tab-live .live-map-shell { flex:1; min-width:0; height:100%; position:relative; overflow:hidden; }
#tab-live #map { width:100%; height:100%; background:#1a1f2e; }
#tab-live .live-map-layer-control {
  position:absolute; z-index:700; top:16px; right:16px; display:flex; align-items:center;
  padding:4px; border:1px solid rgba(71,85,105,.9); border-radius:9px;
  background:rgba(15,23,42,.92); box-shadow:0 5px 18px rgba(0,0,0,.42); backdrop-filter:blur(6px);
}
#tab-live .live-map-layer-divider { width:1px; height:22px; margin:0 4px; background:#475569; }
#tab-live .live-map-layer-button {
  min-width:64px; height:32px; padding:0 11px; border:0; border-radius:6px;
  background:transparent; color:#94a3b8; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight:600; cursor:pointer;
  transition:background .16s,color .16s,box-shadow .16s;
}
#tab-live .live-map-layer-button:hover { color:#e2e8f0; background:rgba(51,65,85,.7); }
#tab-live .live-map-layer-button.active,
#tab-live .live-map-layer-button[aria-pressed="true"] { background:#2563eb; color:#fff; box-shadow:0 2px 8px rgba(37,99,235,.38); }
#tab-live .live-map-layer-button:focus-visible { outline:2px solid #60a5fa; outline-offset:2px; }
#tab-live #panel {
  width: 380px; height: 100%; background: #111827; color: #e5e7eb;
  display: flex; flex-direction: column; border-left: 1px solid #1f2937;
  overflow: hidden; flex-shrink: 0;
}

.panel-header {
  padding: 16px 20px; background: #1a2332;
  border-bottom: 2px solid #dc2626; display: flex; align-items: center; gap: 10px;
}
.panel-header h2 { font-size:calc(18px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight: 600; color: #f3f4f6; }
.panel-header .dot {
  width: 10px; height: 10px; background: #22c55e; border-radius: 50%;
  animation: pulse 1.5s infinite;
}
@keyframes pulse { 0%,100% { opacity:1; } 50% { opacity:0.3; } }

.stats-bar {
  display: flex; padding: 12px 20px; background: #1a2332;
  border-bottom: 1px solid #1f2937; gap: 16px;
}
.stat-item { text-align: center; flex: 1; }
.stat-value { font-size:calc(22px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight: 700; color: #f3f4f6; }
.stat-label { font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); color: #9ca3af; margin-top: 2px; }

#drone-list {
  flex: 1; overflow-y: auto; padding: 8px 0;
}
#drone-list::-webkit-scrollbar { width: 4px; }
#drone-list::-webkit-scrollbar-thumb { background: #374151; border-radius: 2px; }

.drone-card {
  margin: 6px 12px; background: #1e293b; border-radius: 8px;
  border: 1px solid #374151; cursor: pointer; transition: all 0.2s;
}
.drone-card.retained { border-color:#475569; }
.drone-card:hover, .drone-card.active { border-color: #dc2626; background: #1f2937; }
.drone-card-header {
  padding: 8px 10px; display: grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; align-items: center;
  border-bottom: 1px solid #374151;
}
.drone-id { font-size:calc(14px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight: 600; color: #f3f4f6; font-family: monospace; }
.drone-card-title-line { min-width:0; display:flex; align-items:center; gap:5px; overflow:hidden; white-space:nowrap; }
.drone-card-title-line .drone-id { flex:0 0 auto; }
.drone-card-title-separator { flex:0 0 auto; color:#475569; }
.drone-card-title-model { flex:0 1 auto; min-width:0; max-width:105px; overflow:hidden; text-overflow:ellipsis; color:#93c5fd; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.drone-card-title-remark { flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; color:#94a3b8; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.drone-card-stale-row { margin-top:2px; padding-top:6px; border-top:1px solid #334155; align-items:center; }
.drone-card-stale-status { display:inline-flex; align-items:center; justify-content:center; padding:3px 8px; border-radius:5px; background:#78350f; color:#fcd34d; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight:700; line-height:1.35; white-space:nowrap; word-break:normal; }
.drone-remark-btn { max-width:120px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding:3px 7px; border:1px dashed #3b82f6; border-radius:9px; background:rgba(30,64,175,.18); color:#93c5fd; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); cursor:pointer; }
.drone-remark-btn:hover { border-style:solid; background:rgba(37,99,235,.3); color:#dbeafe; }
.drone-type-badge {
  font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); padding: 2px 8px; border-radius: 10px; background: #991b1b; color: #fca5a5;
}
.drone-card-expand { padding:3px 7px; border:1px solid #475569; border-radius:6px; background:#111827; color:#94a3b8; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); cursor:pointer; white-space:nowrap; }
.drone-card-expand:hover { border-color:#60a5fa; color:#bfdbfe; background:#172554; }
.drone-card-body { padding: 8px 10px; display: grid; grid-template-columns: 1fr 1fr; gap: 5px 10px; }
.drone-card-body .info-row { font-size:calc(13px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); line-height:1.45; }
.drone-card-body .info-section-title { font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.identity-toggle { display:flex; align-items:center; justify-content:space-between; cursor:pointer; user-select:none; }
.identity-toggle:hover { color:#93c5fd; }
.identity-toggle-icon { color:#64748b; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); letter-spacing:0; }
.identity-detail-grid { grid-column:1/-1; display:none; grid-template-columns:1fr 1fr; gap:5px 10px; }
.identity-detail-grid.open { display:grid; }
.drone-card-detail-grid { grid-column:1/-1; display:none; grid-template-columns:1fr 1fr; gap:5px 10px; margin-top:3px; padding-top:6px; border-top:1px solid #334155; }
.drone-card-detail-grid.open { display:grid; }
.live-risk-rules-button { margin-left:auto; padding:5px 9px; border:1px solid #475569; border-radius:7px; background:#111827; color:#cbd5e1; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); cursor:pointer; }
.live-risk-rules-button:hover { border-color:#60a5fa; color:#dbeafe; background:#172554; }
.live-risk-visibility-toggle { display:flex; align-items:center; gap:6px; color:#cbd5e1; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); white-space:nowrap; cursor:pointer; user-select:none; }
.live-risk-visibility-toggle input { position:absolute; opacity:0; pointer-events:none; }
.live-risk-switch-track { position:relative; width:34px; height:18px; border-radius:10px; background:#475569; box-shadow:inset 0 0 0 1px rgba(148,163,184,.25); transition:background .18s; }
.live-risk-switch-track::after { content:""; position:absolute; left:2px; top:2px; width:14px; height:14px; border-radius:50%; background:#e2e8f0; box-shadow:0 1px 4px rgba(0,0,0,.45); transition:transform .18s; }
.live-risk-visibility-toggle input:checked + .live-risk-switch-track { background:#2563eb; }
.live-risk-visibility-toggle input:checked + .live-risk-switch-track::after { transform:translateX(16px); background:#fff; }
.live-risk-visibility-toggle input:focus-visible + .live-risk-switch-track { outline:2px solid #60a5fa; outline-offset:2px; }
#tab-live.risk-display-off .live-risk-summary,
#tab-live.risk-display-off .map-popup-risk-row,
#tab-live.risk-display-off .drone-risk-marker-badge { display:none !important; }
.live-risk-summary { grid-column:1/-1; display:flex; align-items:center; gap:7px; min-width:0; margin-top:3px; padding:7px 8px; border:1px solid #334155; border-radius:7px; background:#111827; color:#cbd5e1; cursor:pointer; text-align:left; }
.live-risk-summary:hover { border-color:#64748b; background:#172033; }
.live-risk-badge { display:inline-flex; align-items:center; justify-content:center; min-width:46px; height:22px; padding:0 7px; border-radius:11px; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight:800; white-space:nowrap; }
.live-risk-badge.safe { background:rgba(22,101,52,.28); color:#86efac; border:1px solid rgba(34,197,94,.55); }
.live-risk-badge.low { background:rgba(30,64,175,.3); color:#93c5fd; border:1px solid rgba(59,130,246,.55); }
.live-risk-badge.medium { background:rgba(154,52,18,.3); color:#fdba74; border:1px solid rgba(249,115,22,.65); }
.live-risk-badge.high { background:rgba(153,27,27,.34); color:#fca5a5; border:1px solid rgba(239,68,68,.68); }
.live-risk-badge.insufficient { background:rgba(71,85,105,.35); color:#cbd5e1; border:1px solid #64748b; }
.live-risk-score { font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight:800; color:#f8fafc; white-space:nowrap; }
.live-risk-recent { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#94a3b8; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.live-risk-arrow { color:#64748b; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.map-popup-risk-row { display:flex; align-items:center; gap:7px; width:100%; margin:0 0 8px; padding:6px 8px; box-sizing:border-box; border:1px solid #334155; border-radius:7px; background:#0f172a; color:#e2e8f0; cursor:pointer; }
.map-popup-risk-row:hover { border-color:#64748b; background:#172033; }
.map-popup-risk-row .live-risk-recent { text-align:left; }
.drone-heading-marker .drone-risk-marker-badge { position:absolute; z-index:3; right:-2px; top:-1px; min-width:var(--utm-risk-badge-min-width,24px); height:var(--utm-risk-badge-height,19px); padding:0 var(--utm-risk-badge-padding,5px); border-radius:var(--utm-risk-badge-radius,10px); box-sizing:border-box; display:flex; align-items:center; justify-content:center; border:2px solid #0f172a; color:#fff; font-size:var(--utm-risk-badge-font-size,9px); font-weight:900; line-height:1; box-shadow:0 2px 7px rgba(0,0,0,.5); transition:font-size .18s ease,min-width .18s ease,height .18s ease; }
.drone-heading-marker .drone-risk-marker-badge.low { background:#2563eb; }
.drone-heading-marker .drone-risk-marker-badge.medium { background:#ea580c; }
.drone-heading-marker .drone-risk-marker-badge.high { background:#dc2626; animation:liveRiskPulse 1.5s infinite; }
@keyframes liveRiskPulse { 0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,.55),0 2px 7px rgba(0,0,0,.5)} 50%{box-shadow:0 0 0 7px rgba(239,68,68,0),0 2px 7px rgba(0,0,0,.5)} }
.live-risk-card { width:min(1020px,96vw); }
.live-risk-summary-panel { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:14px 0; }
.live-risk-metric { min-width:0; padding:12px; border:1px solid #334155; border-radius:9px; background:#0f172a; }
.live-risk-metric > span { display:block; margin-bottom:5px; color:#94a3b8; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.live-risk-metric strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#f8fafc; font-size:calc(18px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.live-risk-notice { margin:0 0 12px; padding:9px 11px; border-left:3px solid #f59e0b; border-radius:5px; background:rgba(120,53,15,.24); color:#fde68a; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); line-height:1.55; }
.live-risk-table-wrap { overflow:auto; border:1px solid #334155; border-radius:9px; }
.live-risk-table { width:100%; border-collapse:collapse; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.live-risk-table th { padding:9px 10px; background:#1e293b; color:#cbd5e1; text-align:left; white-space:nowrap; }
.live-risk-table td { padding:9px 10px; border-top:1px solid #273449; color:#e2e8f0; vertical-align:top; }
.live-risk-table .risk-observed { min-width:160px; color:#cbd5e1; }
.live-risk-table .risk-rule { min-width:150px; color:#94a3b8; }
.live-risk-table .risk-points { color:#fbbf24; font-weight:800; white-space:nowrap; }
.live-risk-state { display:inline-flex; padding:2px 7px; border-radius:9px; font-size:calc(10px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight:700; white-space:nowrap; }
.live-risk-state.hit { background:rgba(154,52,18,.35); color:#fdba74; }
.live-risk-state.clear { background:rgba(22,101,52,.28); color:#86efac; }
.live-risk-state.insufficient { background:rgba(71,85,105,.38); color:#cbd5e1; }
.live-risk-evidence-toggle { padding:3px 7px; border:1px solid #475569; border-radius:5px; background:#111827; color:#93c5fd; font-size:calc(10px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); cursor:pointer; white-space:nowrap; }
.live-risk-evidence { display:none; padding:9px 10px; border-top:1px dashed #475569; background:#0b1220; color:#94a3b8; line-height:1.6; }
.live-risk-evidence.open { display:block; }
.live-risk-table .live-risk-evidence-row td { padding:0; }
.live-risk-rule-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:14px; }
.live-risk-rule-item { padding:12px; border:1px solid #334155; border-radius:9px; background:#0f172a; }
.live-risk-rule-item h4 { margin:0 0 7px; color:#f8fafc; font-size:calc(13px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }
.live-risk-rule-item p { margin:3px 0; color:#94a3b8; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); line-height:1.5; }
.live-risk-rule-foot { margin-top:12px; color:#fbbf24; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); line-height:1.55; }
@media (max-width:900px) { .live-risk-summary-panel,.live-risk-rule-grid{grid-template-columns:1fr 1fr;} }
.map-point-label { display:flex; align-items:center; gap:5px; padding:4px 7px; border-radius:12px; color:#fff; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight:700; white-space:nowrap; box-shadow:0 2px 8px rgba(0,0,0,.45); }
.map-point-label.remote { background:#7c3aed; border:1px solid #c4b5fd; }
.map-point-dot { width:7px; height:7px; border-radius:50%; background:#fff; }
.remote-controller-icon { width:40px; height:40px; display:block; border-radius:50%; filter:drop-shadow(0 3px 5px rgba(0,0,0,.55)); }
.remote-controller-icon { cursor:pointer; }
.airport-station-icon { width:42px; height:42px; display:block; border-radius:50%; filter:drop-shadow(0 3px 5px rgba(0,0,0,.58)); }
.airport-station-marker { position:relative; width:42px; height:42px; }
.airport-station-marker::after { content:""; position:absolute; inset:-5px; border:1px solid rgba(56,189,248,.55); border-radius:50%; box-shadow:0 0 10px rgba(56,189,248,.36); pointer-events:none; }
.nav-qr-float { position:relative; width:218px; padding:12px; border:1px solid #475569; border-radius:10px; background:#111827; color:#e5e7eb; box-shadow:0 14px 35px rgba(0,0,0,.58); text-align:center; }
.nav-qr-float::after { content:""; position:absolute; left:50%; bottom:-9px; width:16px; height:16px; background:#111827; border-right:1px solid #475569; border-bottom:1px solid #475569; transform:translateX(-50%) rotate(45deg); }
.nav-qr-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:9px; font-size:calc(14px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight:700; }
.nav-qr-close { width:25px; height:25px; border:0; border-radius:6px; background:#1f2937; color:#cbd5e1; cursor:pointer; font-size:calc(18px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); line-height:23px; }
.nav-qr-close:hover { background:#374151; color:#fff; }
.nav-qr-code { width:154px; height:154px; margin:0 auto 8px; padding:7px; border-radius:7px; background:#fff; }
.nav-qr-code img, .nav-qr-code canvas { display:block; width:140px !important; height:140px !important; }
.nav-qr-tip { margin:0 0 9px; color:#94a3b8; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); line-height:1.45; }
.nav-qr-link { display:block; padding:7px 10px; border-radius:7px; background:#1677ff; color:#fff; text-decoration:none; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight:700; }
.nav-qr-link:hover { background:#4096ff; }
.drone-heading-marker { position:relative; width:76px; height:76px; overflow:visible; }
.drone-heading-marker img { position:absolute; width:68px; height:auto; left:50%; top:50%; transform-origin:50% 50%; filter:drop-shadow(0 3px 4px rgba(0,0,0,.55)); }
.drone-heading-marker.is-stale img { filter:drop-shadow(1px 0 0 #facc15) drop-shadow(-1px 0 0 #facc15) drop-shadow(0 1px 0 #facc15) drop-shadow(0 -1px 0 #facc15) drop-shadow(0 0 2px rgba(250,204,21,.95)) drop-shadow(0 3px 4px rgba(0,0,0,.58)); }
.drone-heading-marker.is-control-zone-intrusion img { filter:hue-rotate(145deg) saturate(4.8) brightness(1.08) drop-shadow(0 0 7px rgba(239,68,68,.96)); }
.drone-heading-marker.is-control-zone-intrusion::before { content:""; position:absolute; inset:5px; border:2px solid #ef4444; border-radius:50%; box-shadow:0 0 13px rgba(239,68,68,.95); animation:controlZoneMarkerPulse 1s ease-in-out infinite alternate; }
@keyframes controlZoneMarkerPulse { from { opacity:.38; transform:scale(.82); } to { opacity:1; transform:scale(1.06); } }
.live-drone-hover-window {
  position:relative; width:248px; padding:10px 12px; border:1px solid rgba(71,85,105,.92); border-radius:9px;
  box-sizing:border-box; background:rgba(15,23,42,.94); color:#e5e7eb;
  box-shadow:0 10px 28px rgba(0,0,0,.42); backdrop-filter:blur(7px);
  pointer-events:none; user-select:none;
}
.live-drone-hover-window::after {
  content:""; position:absolute; left:-6px; bottom:16px; width:10px; height:10px;
  border-left:1px solid rgba(71,85,105,.92); border-bottom:1px solid rgba(71,85,105,.92);
  background:rgba(15,23,42,.94); transform:rotate(45deg);
}
.live-drone-hover-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:7px; padding-bottom:7px; border-bottom:1px solid #334155; }
.live-drone-hover-head strong { min-width:0; overflow:hidden; color:#f8fafc; font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
.live-drone-hover-tail { flex:0 0 auto; padding:2px 6px; border-radius:8px; background:#1e3a5f; color:#93c5fd; font:700 10px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace; }
.live-drone-hover-grid { display:grid; grid-template-columns:72px minmax(0,1fr); gap:4px 8px; font-size:11px; line-height:1.45; }
.live-drone-hover-grid b { color:#7f8da3; font-weight:500; white-space:nowrap; }
.live-drone-hover-grid span { min-width:0; overflow:hidden; color:#e2e8f0; text-align:right; text-overflow:ellipsis; white-space:nowrap; }
.live-drone-hover-grid .registered { color:#86efac; }
.live-drone-hover-grid .unregistered { color:#fbbf24; }
.published-control-zone-popup { min-width:220px; max-width:310px; padding:10px 12px; border:1px solid #ef9a9a; border-radius:8px; background:rgba(31,18,24,.96); color:#f8fafc; box-shadow:0 10px 28px rgba(0,0,0,.42); font-size:11px; line-height:1.55; }
.published-control-zone-popup strong { display:block; margin-bottom:5px; color:#fecaca; font-size:13px; }
.published-control-zone-popup span { display:block; color:#cbd5e1; }
.ccs-site-marker { width:46px; height:46px; display:flex; align-items:center; justify-content:center; }
.ccs-site-marker img { width:42px; height:42px; object-fit:contain; filter:drop-shadow(0 3px 5px rgba(0,0,0,.62)); }
.ccs-site-popup { width:69px; max-width:69px; padding:8px 4px; font-size:calc(15px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); line-height:1.5; }
.ccs-site-popup .map-popup-title { margin-bottom:7px; font-size:calc(16px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); line-height:1.35; }
.ccs-site-popup .ccs-online-row { display:flex; align-items:center; justify-content:space-between; gap:2px; white-space:nowrap; }
.ccs-site-popup .ccs-online-label { color:#a8b4c7; }
.ccs-site-popup .ccs-online-value { color:#5eead4; font-weight:700; }

.info-row { display: flex; justify-content: space-between; gap: 6px; padding: 2px 0; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); min-width: 0; }
.info-row.full { grid-column: 1 / -1; }
.info-label { color: #7f8da3; white-space: nowrap; }
.info-value { color: #e5e7eb; text-align: right; min-width: 0; word-break: break-all; }
.pilot-nav-row { cursor:pointer; margin:0 -4px; padding:4px; border-radius:5px; transition:background .16s,color .16s; }
.pilot-nav-row:hover { background:#1e3a5f; }
.pilot-nav-row:hover .info-label, .pilot-nav-row:hover .info-value { color:#93c5fd; }
.map-nav-row { cursor:pointer; margin:-2px -4px; padding:3px 4px; border-radius:5px; transition:background .16s,color .16s; }
.map-nav-row:hover { background:#1e3a5f; color:#93c5fd; }
.info-section-title { grid-column:1/-1; margin-top:3px; padding-top:5px; border-top:1px solid #334155; color:#64748b; font-size:calc(10px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); letter-spacing:.08em; }
.amap-info-content { background:#111827 !important; color:#e5e7eb !important; border:1px solid #374151 !important; border-radius:9px !important; box-shadow:0 14px 35px rgba(0,0,0,.5) !important; padding:0 !important; }
.amap-info-sharp { border-top-color:#111827 !important; }
.amap-info-close { color:#94a3b8 !important; top:8px !important; right:10px !important; }
.map-popup-dark { width:280px; min-width:0; max-width:280px; box-sizing:border-box; padding:9px 10px; font-size:calc(10px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); line-height:1.4; background:#111827; color:#dbe5f1; }
.map-popup-title { color:#f87171; font-weight:700; font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); margin-bottom:5px; padding-right:18px; }
.drone-map-popup { font-size:calc(12px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); line-height:1.5; }
.drone-map-popup .map-popup-title { display:flex; align-items:center; gap:7px; min-width:0; font-size:calc(15px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); line-height:1.4; margin-bottom:7px; }
.drone-map-popup .map-popup-model { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.drone-map-popup .map-popup-remark { max-width:120px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding:2px 7px; border:1px solid #3b82f6; border-radius:9px; background:rgba(30,64,175,.24); color:#bfdbfe; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); font-weight:600; }
.map-popup-grid { display:grid; grid-template-columns:1fr 1fr; gap:3px 9px; }
.map-popup-grid div { display:flex; justify-content:space-between; align-items:flex-start; gap:5px; min-width:0; }
.map-popup-grid .wide { grid-column:1/-1; }
.map-popup-grid b { flex-shrink:0; color:#8291a7; font-weight:500; }
.map-popup-grid span { min-width:0; text-align:right; overflow-wrap:anywhere; }
.map-popup-identity { margin-top:6px; padding-top:5px; border-top:1px solid #334155; display:grid; grid-template-columns:1fr 1fr; gap:3px 9px; }
.map-popup-identity div { min-width:0; overflow-wrap:anywhere; }

.no-data { padding: 40px 20px; text-align: center; color: #6b7280; font-size:calc(14px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }

.panel-footer {
  padding: 10px 20px; background: #1a2332; border-top: 1px solid #1f2937;
  font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); color: #6b7280; text-align: center;
}
.live-retention-footer { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:7px; }
.live-retention-footer select { padding:4px 7px; border:1px solid #374151; border-radius:5px; background:#111827; color:#d1d5db; font-size:calc(11px + var(--utm-text-delta, 0px) + var(--utm-area-text-delta, 0px)); }


