/* ========== RESET & BASE ========== */
*,:before,:after{margin:0;padding:0;box-sizing:border-box}
:root {
  --bg: #05060f;
  --surface: rgba(10, 15, 30, 0.88);
  --surface-solid: #0b1022;
  --border: rgba(0, 255, 136, 0.15);
  --border-bright: rgba(0, 255, 136, 0.4);
  --green: #00ff88;
  --cyan: #00d4ff;
  --pink: #ff3366;
  --orange: #ff6622;
  --purple: #aa44ff;
  --military: #4488ff;
  --parks: #22cc66;
  --historic: #ffaa22;
  --airspace: #ff4466;
  --airport: #8899ff;
  --earthquake: #ff8844;
  --cave: #aa8866;
  --fireball: #ffcc00;
  --cryptid: #cc44ff;
  --missing411: #ff2222;
  --geomagnetic: #44ffcc;
  --text: #c8d4e0;
  --text-dim: #8a9bac;
  --text-bright: #e8f0f8;
  --font-display: 'Orbitron', sans-serif;
  --font-mono: 'Space Mono', monospace;
  --sidebar-w: 320px;
  --header-h: 52px;
  --timeline-h: 180px;
  /* Typography scale */
  --fs-xs: 11px;
  --fs-sm: 12px;
  --fs-base: 13px;
  --fs-md: 16px;
  --fs-lg: 20px;
  --lh-tight: 1.35;
  --lh-normal: 1.55;
  --lh-loose: 1.7;
  /* Spacing scale */
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 24px;
}
html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--font-mono);font-size:var(--fs-base);line-height:var(--lh-normal)}
input,select,button,textarea{font-family:inherit;font-size:inherit}
::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-bright);border-radius:3px}

/* ========== HEADER ========== */
#header {
  position:fixed;top:0;left:0;right:0;height:var(--header-h);z-index:1100;
  background:var(--surface);border-bottom:1px solid var(--border);
  display:flex;align-items:center;padding:0 16px;gap:16px;
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
}
.logo{display:flex;align-items:center;gap:10px}
.logo-icon{width:32px;height:32px;position:relative}
.logo-icon .ring{stroke:var(--green);fill:none;stroke-width:1.5;animation:radar-spin 4s linear infinite}
.logo-icon .dot{fill:var(--green);animation:pulse-dot 2s ease-in-out infinite}
@keyframes radar-spin{to{transform:rotate(360deg);transform-origin:50% 50%}}
@keyframes pulse-dot{0%,100%{opacity:1;r:2}50%{opacity:.4;r:3.5}}
.logo h1{font-family:var(--font-display);font-size:16px;font-weight:700;letter-spacing:3px;color:var(--green)}
.logo h1 span{color:var(--cyan)}
.header-nav{display:flex;gap:2px;margin-left:24px}
.nav-btn{background:none;border:1px solid transparent;color:var(--text-dim);padding:6px 14px;
  border-radius:4px;cursor:pointer;font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:0.8px;
  font-weight:500;transition:all .2s}
.nav-btn:hover{color:var(--text);border-color:var(--border)}
.nav-btn.active{color:var(--green);border-color:var(--border-bright);background:rgba(0,255,136,0.06)}
.header-right{margin-left:auto;display:flex;align-items:center;gap:12px}
#search-box{background:rgba(255,255,255,0.04);border:1px solid var(--border);border-radius:4px;
  padding:5px 10px;color:var(--text);width:200px;outline:none;transition:border-color .2s}
#search-box:focus{border-color:var(--green)}
#search-box::placeholder{color:var(--text-dim)}
.kbd-hint{font-size:9px;color:var(--text-dim);letter-spacing:1px}

/* ========== LAYOUT ========== */
#app{position:fixed;top:var(--header-h);left:0;right:0;bottom:0;display:flex}
#sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--surface-solid);
  border-right:1px solid var(--border);overflow-y:auto;overflow-x:hidden;
  display:flex;flex-direction:column;z-index:1000;transition:margin-left .3s}
#sidebar.collapsed{margin-left:calc(-1 * var(--sidebar-w))}
#main{flex:1;display:flex;flex-direction:column;position:relative}
#map-container{flex:1;position:relative}
#map{width:100%;height:100%}
#timeline-panel{height:var(--timeline-h);background:var(--surface-solid);
  border-top:1px solid var(--border);padding:8px 16px 4px;flex-shrink:0;position:relative}
#timeline-panel.collapsed{height:28px;overflow:hidden;cursor:pointer}

/* ========== SIDEBAR SECTIONS ========== */
.sb-section{padding:12px 14px;border-bottom:1px solid var(--border)}
.sb-section:last-child{border-bottom:none}
.sb-title{font-family:var(--font-display);font-size:9px;font-weight:600;letter-spacing:2px;
  color:var(--text-dim);text-transform:uppercase;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.sb-title .icon{font-size:12px}

/* Layer toggles */
.layer-row{display:flex;align-items:center;gap:8px;padding:6px 0;cursor:pointer;user-select:none}
.layer-row input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.layer-dot{width:14px;height:14px;border-radius:50%;border:2px solid #333;transition:all .2s;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;font-size:9px;line-height:1;color:transparent}
.layer-row input:checked+.layer-dot{border-color:#fff;box-shadow:0 0 6px;color:#05060f}
#layer-ufo .layer-dot::before{content:"▲"}
#layer-bigfoot .layer-dot::before{content:"●"}
#layer-haunted .layer-dot::before{content:"✦"}
#layer-ufo .layer-dot::before,
#layer-bigfoot .layer-dot::before,
#layer-haunted .layer-dot::before{font-family:var(--font-mono);font-weight:700;font-size:8px;line-height:1}
.layer-name{font-size:var(--fs-xs);flex:1;line-height:var(--lh-tight)}
.layer-count{font-size:var(--fs-xs);color:var(--text-dim);font-variant-numeric:tabular-nums}
.layer-count--glyph{font-size:10px;color:var(--text-dim)}
.layer-count--tag{font-size:9px;letter-spacing:0.5px;color:var(--text-dim)}

/* Layer-dot color variants — replaces inline style="background:..." */
.layer-dot--ufo{background:var(--green)}
.layer-dot--bigfoot{background:var(--orange)}
.layer-dot--haunted{background:var(--purple)}
.layer-dot--military{background:var(--military)}
.layer-dot--airspace{background:var(--airspace)}
.layer-dot--airport{background:var(--airport)}
.layer-dot--parks{background:var(--parks)}
.layer-dot--earthquake{background:var(--earthquake)}
.layer-dot--cave{background:var(--cave)}
.layer-dot--fireball{background:var(--fireball)}
.layer-dot--cryptid{background:var(--cryptid)}
.layer-dot--missing411{background:var(--missing411)}
.layer-dot--historic{background:var(--historic)}
.layer-dot--geomagnetic{background:var(--geomagnetic)}
.layer-dot--percapita{background:#e8f0f8}

/* Per-capita hint text */
.percapita-hint{font-size:10px;color:var(--text-dim);padding:4px 0 0 20px;line-height:1.5}

/* View mode */
.view-modes{display:flex;gap:4px;flex-wrap:wrap}
.view-btn{padding:5px 10px;background:rgba(255,255,255,0.04);border:1px solid var(--border);
  border-radius:4px;color:var(--text-dim);cursor:pointer;font-size:var(--fs-xs);letter-spacing:0.6px;
  font-family:var(--font-display);transition:all .2s}
.view-btn:hover{color:var(--text);border-color:var(--border-bright)}
.view-btn.active{color:var(--green);border-color:var(--green);background:rgba(0,255,136,0.08)}

/* Correlation controls */
.corr-controls{display:flex;flex-direction:column;gap:8px}
.corr-row{display:flex;gap:8px;align-items:center}
.corr-row label{font-size:10px;color:var(--text-dim);width:20px;flex-shrink:0}
.corr-row select,.corr-row input[type=range]{flex:1;background:rgba(255,255,255,0.04);
  border:1px solid var(--border);border-radius:3px;color:var(--text);padding:4px 6px}
select option{background:var(--surface-solid);color:var(--text)}
.corr-btn{padding:8px;background:linear-gradient(135deg,rgba(0,255,136,0.15),rgba(0,212,255,0.15));
  border:1px solid var(--green);border-radius:4px;color:var(--green);cursor:pointer;
  font-family:var(--font-display);font-size:10px;letter-spacing:2px;font-weight:600;transition:all .2s}
.corr-btn:hover{background:linear-gradient(135deg,rgba(0,255,136,0.25),rgba(0,212,255,0.25));box-shadow:0 0 12px rgba(0,255,136,0.2)}
.corr-result{background:rgba(0,255,136,0.05);border:1px solid var(--border);border-radius:4px;padding:10px;display:none}
.corr-result.visible{display:block}
.corr-r{font-family:var(--font-display);font-size:22px;font-weight:700;text-align:center}
.corr-label{font-size:10px;color:var(--text-dim);text-align:center;margin-top:2px}
.corr-detail{font-size:10px;color:var(--text-dim);margin-top:6px;line-height:1.6}

/* Sub-mode tabs */
.corr-submodes{display:flex;gap:2px;margin-bottom:10px;flex-wrap:wrap}
.corr-sub-btn{padding:4px 7px;background:rgba(255,255,255,0.04);border:1px solid var(--border);border-radius:3px;
  color:var(--text-dim);cursor:pointer;font-size:8px;letter-spacing:1px;font-family:var(--font-display);transition:all .2s}
.corr-sub-btn:hover{color:var(--text);border-color:var(--border-bright)}
.corr-sub-btn.active{color:var(--cyan);border-color:var(--cyan);background:rgba(0,212,255,0.08)}
.corr-subpanel{margin-top:8px}

/* Matrix SVG */
#corr-matrix-svg text{font-family:var(--font-mono);fill:var(--text)}

/* Cluster list */
.cluster-list{max-height:280px;overflow-y:auto;margin-top:8px}
.cluster-item{padding:8px;margin-bottom:4px;background:rgba(255,255,255,0.02);border:1px solid var(--border);
  border-radius:4px;cursor:pointer;transition:all .15s}
.cluster-item:hover{border-color:var(--border-bright);background:rgba(0,255,136,0.04)}
.cluster-rank{font-family:var(--font-display);font-size:14px;font-weight:700;color:var(--cyan);float:left;margin-right:8px;line-height:1}
.cluster-name{font-size:11px;font-weight:700;color:var(--text-bright)}
.cluster-stats{font-size:9px;color:var(--text-dim);margin-top:2px}
.cluster-cats{display:flex;gap:6px;margin-top:3px}
.cluster-cat-badge{font-size:9px;padding:1px 5px;border-radius:2px}

/* Temporal overlay */
/* temporal-overlay positioning now handled by WindowManager */
.temporal-content{padding:12px}
.temporal-chart-row{margin-bottom:10px}
.temporal-chart-label{font-family:var(--font-display);font-size:8px;letter-spacing:1.5px;
  color:var(--text-dim);margin-bottom:4px}
.temporal-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-top:8px}
.temporal-stat{background:rgba(255,255,255,0.02);border:1px solid var(--border);border-radius:4px;
  padding:6px;text-align:center}
.temporal-stat-val{font-family:var(--font-display);font-size:12px;font-weight:700}
.temporal-stat-lbl{font-size:8px;color:var(--text-dim);letter-spacing:1px;margin-top:2px}

/* NN results table */
.nn-table{width:100%;font-size:10px;border-collapse:collapse;margin-top:8px}
.nn-table th,.nn-table td{padding:4px;text-align:center;border:1px solid var(--border)}
.nn-table th{font-size:9px;color:var(--text-dim);font-weight:600}
.nn-dist{font-weight:700}
.nn-stddev{font-size:8px;color:var(--text-dim)}

/* ========== HEX DETAIL PANEL ========== */
.hex-detail{padding:14px;overflow-y:auto;height:100%;font-size:11px;line-height:1.5}
.hex-detail-header{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.hex-detail-count{font-family:var(--font-display);font-size:22px;font-weight:700;color:var(--text-bright)}
.hex-detail-loc{font-size:10px;color:var(--text-dim);margin-top:2px}

/* Category bars */
.hex-cat-bars{display:flex;flex-direction:column;gap:4px;margin-bottom:14px}
.hex-cat-row{display:flex;align-items:center;gap:8px}
.hex-cat-label{font-size:10px;width:64px;flex-shrink:0;text-align:right}
.hex-cat-bar-track{flex:1;height:14px;background:rgba(255,255,255,0.04);border-radius:2px;overflow:hidden;position:relative}
.hex-cat-bar-fill{height:100%;border-radius:2px;transition:width .3s}
.hex-cat-pct{font-size:9px;color:var(--text-dim);width:36px;text-align:right;flex-shrink:0}

/* Stat chips */
.hex-stat-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.hex-stat-chip{background:rgba(255,255,255,0.03);border:1px solid var(--border);border-radius:4px;
  padding:6px 10px;text-align:center;flex:1;min-width:80px}
.hex-stat-chip-val{font-family:var(--font-display);font-size:12px;font-weight:700;color:var(--text-bright)}
.hex-stat-chip-lbl{font-size:8px;color:var(--text-dim);letter-spacing:1px;margin-top:1px}

/* Section headings */
.hex-section{font-family:var(--font-display);font-size:8px;letter-spacing:1.5px;
  color:var(--cyan);margin:12px 0 6px;display:flex;align-items:center;gap:6px}
.hex-section::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,var(--border-bright),transparent)}

/* Temporal mini-chart */
.hex-temporal-chart{margin-bottom:12px}

/* Tags */
.hex-tags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}
.hex-tag{font-size:9px;padding:2px 7px;border-radius:2px;background:rgba(255,255,255,0.04);
  border:1px solid var(--border);color:var(--text)}
.hex-tag-count{color:var(--text-dim);margin-left:3px}

/* Top locations */
.hex-locations{margin-bottom:10px}
.hex-loc-row{display:flex;justify-content:space-between;padding:2px 0;font-size:10px}
.hex-loc-row span:last-child{color:var(--text-dim)}

/* Military distance */
.hex-military{background:rgba(68,136,255,0.06);border:1px solid rgba(68,136,255,0.2);
  border-radius:4px;padding:8px;margin-bottom:12px;font-size:10px}
.hex-military b{color:var(--military)}

/* Confounder ledger note — honest annotation, amber = caution */
.hex-confounder{background:rgba(255,204,0,0.05);border:1px solid rgba(255,204,0,0.25);
  border-radius:4px;padding:8px;margin:-6px 0 12px;font-size:9px;letter-spacing:0.3px;
  color:var(--historic);line-height:1.5}

/* Anomaly breakdown (Signal Engine output) */
.hex-anomaly{background:rgba(0,255,136,0.03);border:1px solid var(--border-bright);
  border-radius:4px;padding:10px;margin-bottom:4px}
.hex-anomaly-head{display:flex;align-items:center;gap:12px}
.hex-anomaly-index{font-family:var(--font-display);font-size:30px;font-weight:700;
  color:var(--green);font-variant-numeric:tabular-nums;min-width:56px;text-align:center;
  text-shadow:0 0 12px rgba(0,255,136,0.35)}
.hex-anomaly-meta{flex:1;font-size:10px;line-height:1.5}
.hex-anomaly-sub{color:var(--text-dim);font-size:9px}
.hex-anomaly-bars{margin-top:8px;display:flex;flex-direction:column;gap:3px}
.hex-anomaly-bar-row{display:flex;align-items:center;gap:8px}
.hex-anomaly-bar-row span{font-family:var(--font-display);font-size:7px;letter-spacing:1px;
  color:var(--text-dim);width:64px;flex-shrink:0;text-align:right}

/* Sighting list */
.hex-sighting-list{border-top:1px solid var(--border);padding-top:8px}
.hex-sighting-toggle{background:none;border:1px solid var(--border);border-radius:3px;
  color:var(--text-dim);padding:4px 10px;cursor:pointer;font-size:9px;letter-spacing:1px;
  font-family:var(--font-display);width:100%;text-align:left;transition:all .15s;margin-bottom:6px}
.hex-sighting-toggle:hover{color:var(--text);border-color:var(--border-bright)}
.hex-sighting-item{padding:8px;margin-bottom:4px;background:rgba(255,255,255,0.02);
  border:1px solid var(--border);border-radius:4px;font-size:10px}
.hex-sighting-item-head{display:flex;gap:8px;align-items:center;margin-bottom:2px}
.hex-sighting-cat{font-family:var(--font-display);font-size:8px;letter-spacing:1px;font-weight:600}
.hex-sighting-date{color:var(--text-dim)}
.hex-sighting-loc{color:var(--text-dim)}
.hex-sighting-sub{color:var(--text-dim);font-style:italic}
.hex-sighting-desc{color:var(--text);margin-top:4px;line-height:1.5;max-height:42px;overflow:hidden;position:relative;
  transition:max-height .3s}
.hex-sighting-desc.expanded{max-height:500px;overflow:visible}
.hex-sighting-desc.truncated{cursor:pointer}
.hex-sighting-desc.truncated:not(.expanded)::after{content:'';position:absolute;bottom:0;left:0;right:0;
  height:18px;background:linear-gradient(transparent,var(--surface-solid))}
.hex-sighting-expand{color:var(--cyan);font-size:9px;cursor:pointer;font-style:italic;display:inline;margin-left:4px}
.hex-sighting-expand:hover{text-decoration:underline}
.hex-sighting-more{text-align:center;margin-top:6px}
.hex-sighting-more button{background:none;border:1px solid var(--border);border-radius:3px;
  color:var(--cyan);padding:4px 12px;cursor:pointer;font-size:9px;font-family:var(--font-display)}

/* Zoom button */
.hex-zoom-btn{width:100%;padding:10px;background:linear-gradient(135deg,rgba(0,255,136,0.1),rgba(0,212,255,0.1));
  border:1px solid var(--green);border-radius:4px;color:var(--green);cursor:pointer;
  font-family:var(--font-display);font-size:10px;letter-spacing:2px;font-weight:600;
  transition:all .2s;margin-top:10px}
.hex-zoom-btn:hover{background:linear-gradient(135deg,rgba(0,255,136,0.2),rgba(0,212,255,0.2));
  box-shadow:0 0 12px rgba(0,255,136,0.2)}

/* Analysis progress */
.analysis-progress{margin-top:8px}
.analysis-progress .progress-track{width:100%;height:3px;background:rgba(255,255,255,0.06);border-radius:2px;overflow:hidden}
.analysis-progress .progress-fill{height:100%;background:linear-gradient(90deg,var(--cyan),var(--green));transition:width .2s}

/* Filters */
.filter-row{display:flex;gap:6px;margin-bottom:6px}
.filter-row input,.filter-row select{flex:1;background:rgba(255,255,255,0.04);border:1px solid var(--border);
  border-radius:3px;color:var(--text);padding:5px 8px;outline:none}
.filter-row input:focus{border-color:var(--green)}
.filter-row input::placeholder{color:var(--text-dim)}
.filter-actions{display:flex;gap:6px}
.btn-sm{padding:5px 10px;border:1px solid var(--border);border-radius:3px;background:rgba(255,255,255,0.04);
  color:var(--text-dim);cursor:pointer;font-size:10px;transition:all .15s}
.btn-sm:hover{color:var(--text);border-color:var(--border-bright)}
.btn-sm.primary{border-color:var(--green);color:var(--green)}
.btn-sm.primary:hover{background:rgba(0,255,136,0.1)}

/* Stats */
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.stat-box{background:rgba(255,255,255,0.02);border:1px solid var(--border);border-radius:4px;padding:8px;text-align:center}
.stat-val{font-family:var(--font-display);font-size:14px;font-weight:700;color:var(--text-bright)}
.stat-label{font-size:9px;color:var(--text-dim);letter-spacing:1px;margin-top:2px}

/* ========== SIDEBAR TOGGLE ========== */
#sidebar-toggle{position:absolute;top:8px;left:8px;z-index:1050;width:32px;height:32px;
  background:var(--surface);border:1px solid var(--border);border-radius:4px;color:var(--green);
  cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .2s}
#sidebar-toggle:hover{border-color:var(--green);box-shadow:0 0 8px rgba(0,255,136,0.2)}

/* ========== TIMELINE ========== */
#timeline-toggle{position:absolute;top:4px;right:12px;background:none;border:none;color:var(--text-dim);
  cursor:pointer;font-size:14px;z-index:10}
#timeline-label{font-family:var(--font-display);font-size:9px;letter-spacing:2px;color:var(--text-dim)}
#timeline-svg{width:100%;height:calc(100% - 20px)}
.timeline-bar{cursor:pointer;transition:opacity .15s}
.timeline-bar:hover{opacity:1!important}
.brush-overlay{fill:rgba(0,255,136,0.08);stroke:var(--green);stroke-width:1}
.timeline-axis text{fill:var(--text-dim);font-family:var(--font-mono);font-size:9px}
.timeline-axis line,.timeline-axis path{stroke:var(--border)}
.timeline-tooltip{position:absolute;background:var(--surface);border:1px solid var(--border);
  border-radius:4px;padding:6px 10px;font-size:10px;pointer-events:none;display:none;z-index:10}

/* ========== POPUPS ========== */
.leaflet-popup-content-wrapper{background:var(--surface-solid)!important;color:var(--text)!important;
  border-radius:6px!important;border:1px solid var(--border)!important;box-shadow:0 4px 20px rgba(0,0,0,.6)!important}
.leaflet-popup-tip{background:var(--surface-solid)!important}
.popup-cat{font-family:var(--font-display);font-size:9px;font-weight:600;letter-spacing:2px;margin-bottom:4px}
.popup-loc{font-size:12px;font-weight:700;color:var(--text-bright)}
.popup-date{font-size:10px;color:var(--text-dim);margin-top:2px}
.popup-sub{font-size:10px;color:var(--text-dim)}
.popup-desc{font-size:10px;color:var(--text);margin-top:4px;line-height:1.4;font-style:italic;max-height:300px;overflow-y:auto}
.popup-expand{color:var(--cyan);text-decoration:none;font-style:normal;font-size:9px;cursor:pointer;
  background:none;border:0;padding:0;font-family:inherit;letter-spacing:0.4px}
.popup-expand:hover{text-decoration:underline}
.popup-expand:focus-visible{outline:2px solid var(--cyan);outline-offset:2px;border-radius:2px}
/* Deep-dive launcher inside a sighting popup. Previously the dossier was
   reachable only via right-click on the map, with no way back once closed. */
.popup-dossier{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;
  margin-top:8px;padding:6px 8px;background:rgba(0,255,136,0.08);
  border:1px solid var(--border-bright);border-radius:3px;color:var(--green);
  font-family:var(--font-display);font-size:9px;letter-spacing:1.2px;cursor:pointer;
  transition:background .15s,border-color .15s}
.popup-dossier:hover{background:rgba(0,255,136,0.16);border-color:var(--green)}
.popup-dossier:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.popup-dossier-hint{color:var(--text-dim);letter-spacing:.5px;font-family:var(--font-mono);font-size:8px}
.popup-coords{font-size:9px;color:var(--text-dim);margin-top:4px}
.popup-prox{margin-top:6px;padding-top:6px;border-top:1px solid var(--border);font-size:10px}
.popup-prox-title{font-family:var(--font-display);font-size:8px;letter-spacing:1.5px;color:var(--cyan);margin-bottom:3px}

/* ========== LOADING ========== */
#loading{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--bg);z-index:9999;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px}
.radar-container{width:180px;height:180px;position:relative}
.radar-ring{position:absolute;border-radius:50%;border:1.5px solid var(--green);
  animation:radar-pulse 2.5s ease-out infinite}
.radar-ring:nth-child(1){inset:0;animation-delay:0s}
.radar-ring:nth-child(2){inset:22px;animation-delay:0.5s}
.radar-ring:nth-child(3){inset:44px;animation-delay:1s}
.radar-ring:nth-child(4){inset:63px;animation-delay:1.5s}
.radar-sweep{position:absolute;inset:0;border-radius:50%;
  background:conic-gradient(from 0deg,transparent 0deg,rgba(0,255,136,0.15) 30deg,transparent 60deg);
  animation:radar-spin 2s linear infinite}
@keyframes radar-pulse{0%{opacity:.8;transform:scale(1)}100%{opacity:0;transform:scale(1.3)}}
#loading h1{font-family:var(--font-display);font-size:36px;letter-spacing:8px;color:var(--green);
  text-shadow:0 0 30px rgba(0,255,136,0.3)}
#loading-status{font-size:18px;color:var(--text);letter-spacing:2px;transition:opacity 0.25s;
  font-family:var(--font-mono)}
.progress-track{width:400px;height:4px;background:rgba(255,255,255,0.08);border-radius:2px;overflow:hidden;
  box-shadow:0 0 12px rgba(0,255,136,0.1)}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--green),var(--cyan));width:0%;
  box-shadow:0 0 8px rgba(0,255,136,0.4);animation:progress-sweep 8s cubic-bezier(0.25,0.1,0.25,1) forwards}
@keyframes progress-sweep{0%{width:0%}15%{width:18%}40%{width:45%}60%{width:62%}80%{width:78%}95%{width:88%}100%{width:95%}}
#loading-bytes{font-size:14px;color:var(--cyan);letter-spacing:1px;min-height:20px;font-family:var(--font-mono);opacity:0.8}
#loading-flavor-wrap{overflow:hidden;height:28px;max-width:650px;text-align:center;margin-top:4px}
#loading-flavor{font-size:16px;color:var(--green);letter-spacing:1px;line-height:28px;
  font-style:italic;max-width:650px;text-align:center;
  text-shadow:0 0 12px rgba(0,255,136,0.4),0 0 30px rgba(0,255,136,0.15);
  animation:flavor-glow 3s ease-in-out infinite}
#loading-flavor.slide-up{animation:flavor-slide-up 0.5s ease forwards}
#loading-flavor.slide-in{animation:flavor-slide-in 0.5s ease forwards}
@keyframes flavor-glow{0%,100%{opacity:0.7;text-shadow:0 0 8px rgba(0,255,136,0.3),0 0 20px rgba(0,255,136,0.1)}
  50%{opacity:1;text-shadow:0 0 15px rgba(0,255,136,0.5),0 0 40px rgba(0,255,136,0.2)}}
@keyframes flavor-slide-up{0%{transform:translateY(0);opacity:1}100%{transform:translateY(-100%);opacity:0}}
@keyframes flavor-slide-in{0%{transform:translateY(100%);opacity:0}100%{transform:translateY(0);opacity:1}}

/* ========== PROXIMITY CIRCLE ========== */
.prox-circle{fill:rgba(0,212,255,0.06);stroke:var(--cyan);stroke-width:1.5;stroke-dasharray:6 4}

/* ========== SCANLINE OVERLAY (subtle) ========== */
#sidebar::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;
  background:repeating-linear-gradient(transparent,transparent 2px,rgba(0,0,0,0.03) 2px,rgba(0,0,0,0.03) 4px);
  pointer-events:none;z-index:1}
#sidebar{position:relative}

/* ========== PER CAPITA INDICATOR ========== */
#percapita-indicator{position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:1050;
  background:rgba(0,0,0,0.75);border:1px solid rgba(255,255,255,0.3);border-radius:4px;
  padding:4px 12px;font-size:10px;color:#fff;letter-spacing:1px;
  font-family:var(--font-display);pointer-events:none;white-space:nowrap}
#percapita-indicator span{color:var(--cyan);font-weight:700}

/* ========== MAP LEGEND ========== */
#map-legend{position:absolute;bottom:36px;right:12px;z-index:1050;
  background:rgba(0,0,0,0.8);border:1px solid rgba(255,255,255,0.15);border-radius:6px;
  padding:8px 12px;font-size:10px;color:var(--text);letter-spacing:0.5px;
  font-family:var(--font-mono);backdrop-filter:blur(4px);max-width:200px}
#map-legend .legend-title{font-family:var(--font-display);font-size:8px;letter-spacing:1.5px;
  color:var(--cyan);margin-bottom:6px;text-transform:uppercase}
#map-legend .legend-gradient{width:100%;height:10px;border-radius:3px;margin:4px 0}
#map-legend .legend-labels{display:flex;justify-content:space-between;font-size:9px;color:var(--text-dim)}
#map-legend .legend-row{display:flex;align-items:center;gap:6px;margin:3px 0}
#map-legend .legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
#map-legend .legend-swatch{width:14px;height:10px;border-radius:2px;flex-shrink:0}
#map-legend .legend-hotspot{border:1.5px solid #fff}
#map-legend .legend-engine-status{margin-top:5px;padding-top:5px;border-top:1px solid var(--border);
  font-size:9px;color:var(--green);font-variant-numeric:tabular-nums;letter-spacing:0.3px}

/* ========== MILITARY TOOLTIP ========== */
.mil-tooltip{background:var(--surface-solid)!important;color:var(--text)!important;
  border:1px solid rgba(68,136,255,0.3)!important;border-radius:4px!important;
  font-family:var(--font-mono)!important;font-size:11px!important;
  box-shadow:0 2px 12px rgba(0,0,0,.5)!important;padding:4px 8px!important}

/* ========== SCREEN READER ONLY ========== */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ========== DISABLED STATES ========== */
button:disabled,input:disabled,select:disabled{opacity:0.5;cursor:not-allowed}

/* ========== SNAPSHOT BUTTON ========== */
#snapshot-btn{padding:4px 10px;border:1px solid var(--cyan);border-radius:3px;
  background:rgba(0,212,255,0.1);color:var(--cyan);cursor:pointer;
  font-family:var(--font-display);font-size:10px;letter-spacing:1px;transition:all .15s}
#snapshot-btn:hover{background:rgba(0,212,255,0.2)}

/* ========== SHORTCUTS HELP OVERLAY ========== */
.shortcuts-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9000;
  background:rgba(5,6,15,0.85);display:flex;align-items:center;justify-content:center;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.shortcuts-panel{background:var(--surface-solid);border:1px solid var(--border-bright);
  border-radius:8px;padding:24px;max-width:560px;width:90%;max-height:80vh;overflow-y:auto}
.shortcuts-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.shortcuts-header h2{font-family:var(--font-display);font-size:14px;letter-spacing:3px;color:var(--green)}
.shortcuts-close{background:none;border:1px solid var(--border);border-radius:3px;color:var(--text-dim);
  width:28px;height:28px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .15s}
.shortcuts-close:hover{color:var(--text);border-color:var(--border-bright)}
.shortcuts-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.shortcut-group h3{font-family:var(--font-display);font-size:10px;letter-spacing:2px;color:var(--cyan);margin-bottom:8px}
.shortcut-row{display:flex;align-items:center;gap:10px;padding:4px 0;font-size:11px;color:var(--text)}
.shortcut-row kbd{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:22px;
  padding:0 6px;background:rgba(255,255,255,0.06);border:1px solid var(--border);border-radius:3px;
  font-family:var(--font-mono);font-size:11px;color:var(--text-dim);flex-shrink:0}

/* ========== MOBILE ========== */
@media(max-width:768px){
  :root{--sidebar-w:100vw;--header-h:44px;--timeline-h:120px}

  /* Header */
  #header{padding:0 8px;gap:8px;overflow:hidden}
  .header-nav{display:none}
  .logo h1{font-size:12px;letter-spacing:2px}
  .logo h1 span{display:none}
  #search-box{width:80px;font-size:11px;padding:4px 8px;min-width:0}
  .kbd-hint{display:none}
  .header-right{gap:6px;overflow:hidden;flex-shrink:1;min-width:0}
  #ai-toggle{padding:3px 8px;font-size:9px;flex-shrink:0}
  #snapshot-btn{padding:3px 6px;font-size:9px;flex-shrink:0;white-space:nowrap}

  /* Sidebar: slide-over from left */
  #sidebar{position:fixed;top:var(--header-h);left:0;right:0;bottom:0;z-index:1050;
    transform:translateX(-100%);transition:transform .3s;width:100vw;padding-top:8px}
  #sidebar.open{transform:translateX(0)}
  #sidebar.collapsed{margin-left:0;transform:translateX(-100%)}
  /* Push first section below the toggle button on mobile */
  #sidebar .sb-section:first-child{padding-top:48px}

  /* Sidebar toggle - larger touch target (HIG 44pt minimum) */
  #sidebar-toggle{width:44px;height:44px;font-size:18px}

  /* Touch-friendly controls */
  .layer-row{padding:10px 0;min-height:44px}
  .view-btn{padding:8px 12px;font-size:11px;min-height:36px}
  .corr-sub-btn{padding:6px 10px;font-size:9px;min-height:32px}
  .corr-btn{padding:12px;font-size:11px;min-height:44px}
  .btn-sm{padding:8px 12px;font-size:11px;min-height:36px}
  .filter-row input{padding:8px 10px;font-size:12px;min-height:36px}

  /* Timeline - shorter on mobile */
  #timeline-panel{height:var(--timeline-h);padding:6px 10px 2px}

  /* Popups - wider on mobile */
  .leaflet-popup-content-wrapper{max-width:280px!important}

  /* Correlation panel */
  .corr-submodes{flex-wrap:wrap;gap:4px}
  #corr-matrix-svg{width:100%;max-width:260px}

  /* Windows - full-width on mobile */
  .ss-window{left:4px!important;right:4px!important;width:auto!important;
    max-height:70vh;bottom:60px!important;top:auto!important}
  .ss-window-resize{display:none}
  .ss-dock{bottom:4px;left:4px;right:4px;transform:none;justify-content:center}

  /* Signal chat - full width */
  .signal-input{font-size:14px}
  .signal-send{padding:10px 16px;font-size:11px}

  /* Help overlay - single column */
  .shortcuts-grid{grid-template-columns:1fr}
  .shortcuts-panel{padding:16px;margin:8px}
}

/* Narrow phones: full-bleed modals, icon-only search, legend reposition */
@media(max-width:640px){
  .ss-window{inset:12px!important;width:auto!important;height:auto!important;max-height:calc(100dvh - 24px)!important;
    top:auto!important;left:12px!important;right:12px!important;bottom:12px!important}
  .ss-window-footer{flex-wrap:wrap}
  #search-box{width:32px;padding:5px 6px;transition:width .2s ease,padding .2s ease}
  #search-box:focus{width:160px;padding:5px 10px}
  .map-legend,#map-legend{left:8px!important;right:auto!important;bottom:8px!important;max-width:42vw}
}

/* Touch device: enlarge Leaflet zoom controls */
@media(pointer:coarse){
  .leaflet-control-zoom a{width:36px!important;height:36px!important;line-height:36px!important;font-size:18px!important}
  .leaflet-bar a{width:36px!important;height:36px!important}
}

/* ========== OVERLAY MARKERS ========== */
.overlay-marker{text-align:center;line-height:12px;background:transparent!important;border:none!important}
.tabler-marker{background:none!important;border:none!important}
.tabler-marker svg{filter:drop-shadow(0 0 3px rgba(255,255,255,0.4))}
.overlay-group-label{font-family:var(--font-display);font-size:8px;letter-spacing:2px;color:var(--text-dim);
  padding:8px 0 2px 4px;opacity:0.6}
.airspace-circle{stroke-width:1.5;fill-opacity:0.08;stroke-opacity:0.5;stroke-dasharray:6 3}
.geomag-band{opacity:0.25;pointer-events:all}
.geomag-band:hover{opacity:0.5}

/* ========== COCKPIT INSTRUMENTATION ========== */
/* Tick marks, status rules, solid hover fills. Green marks signal.   */
/* No cyan→purple gradients. No glow-blur hovers. No decorative       */
/* stripes. Every accent functions.                                   */

/* Noise grain — atmospheric depth on dark surfaces */
body::before{content:'';position:fixed;inset:0;z-index:9998;pointer-events:none;
  opacity:0.035;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-repeat:repeat;background-size:256px 256px}

/* Header status rule — 1px flat, no animation, no purple */
#header::after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:1px;
  background:var(--border-bright);opacity:0.5}

/* Active layer dot — steady indicator, no pulse */
.layer-row input:checked+.layer-dot{box-shadow:0 0 4px currentColor}

/* Stat boxes — flat border, top tick mark, tabular numerics */
.stat-box{background:rgba(0,255,136,0.02);border:1px solid var(--border);
  position:relative;font-variant-numeric:tabular-nums}
.stat-box::before{content:'';position:absolute;top:-1px;left:0;width:14px;height:1px;
  background:var(--green)}
.stat-val{font-variant-numeric:tabular-nums}

/* Button hover — solid fill on primary, underline tick on tabs */
.corr-btn{transition:background-color .15s,border-color .15s,color .15s}
.corr-btn:hover{background:var(--green);color:var(--bg);border-color:var(--green)}
.view-btn,.nav-btn{position:relative;transition:color .15s,border-color .15s}
.view-btn::after,.nav-btn::after{content:'';position:absolute;bottom:0;left:50%;width:0;height:1px;
  background:var(--green);transition:width .2s ease-out;transform:translateX(-50%)}
.view-btn:hover::after,.view-btn.active::after,
.nav-btn:hover::after,.nav-btn.active::after{width:80%}

/* Sidebar section dividers — flat 1px rule */
.sb-section{border-bottom:none;position:relative}
.sb-section::after{content:'';position:absolute;bottom:0;left:14px;right:14px;height:1px;
  background:var(--border)}
.sb-section:last-child::after{display:none}

/* Timeline label — flanking 1px ticks */
#timeline-label{display:flex;align-items:center;gap:8px}
#timeline-label::before,#timeline-label::after{content:'';flex:0 0 20px;height:1px;
  background:var(--border)}

/* Sidebar grid pattern */
#sidebar{background:var(--surface-solid);
  background-image:linear-gradient(rgba(0,255,136,0.015) 1px,transparent 1px),
    linear-gradient(90deg,rgba(0,255,136,0.015) 1px,transparent 1px);
  background-size:24px 24px}

/* Sidebar toggle — border flash, no glow bleed */
#sidebar-toggle{transition:border-color .15s,color .15s}
#sidebar-toggle:hover{border-color:var(--green);color:var(--text-bright)}

/* Correlation result — tabular, brightened text (no cyan glow stack) */
.corr-r{font-variant-numeric:tabular-nums;color:var(--text-bright)}

/* Cluster items — 1px green left-border flash on hover (state-triggered affordance) */
.cluster-item{transition:background-color .15s,border-left-color .15s;border-left:1px solid transparent}
.cluster-item:hover{background:rgba(0,255,136,0.04);border-left-color:var(--green)}

/* Search + filter focus — border brighten, no soft-glow bleed */
#search-box:focus,.filter-row input:focus{border-color:var(--green);outline:none}

/* Header action buttons — SNAP cyan, SIGNAL green. No purple. */
#snapshot-btn:hover{border-color:var(--cyan);color:var(--cyan)}
#ai-toggle:hover{border-color:var(--green);color:var(--green)}
#ai-toggle.active{border-color:var(--green);color:var(--green);background:rgba(0,255,136,0.06)}

/* Loading screen — single restrained glow for readability */
#loading h1{text-shadow:0 0 8px rgba(0,255,136,0.25)}

/* ========== ACCESSIBILITY: FOCUS VISIBLE ========== */
:focus-visible{outline:2px solid var(--green);outline-offset:2px}
button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--green);outline-offset:2px}

/* ========== REDUCED MOTION ========== */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:0.01ms!important;animation-iteration-count:1!important;transition-duration:0.01ms!important}
  .radar-sweep,.radar-ring,.logo-icon .ring,.logo-icon .dot{animation:none!important}
}

/* ========== PRINT ========== */
@media print{
  body::before,#sidebar::after,.scanline-overlay{display:none!important}
  #header,#sidebar,#timeline-panel,#loading,.shortcuts-overlay,
  .annotation-toolbar,#percapita-indicator{display:none!important}
  #app{position:static!important}
  #main{position:static!important}
  #map-container{position:static!important;height:600px!important}
  #map{height:600px!important}
}

/* ========== DOSSIER (deep-dive window) ========== */
.dossier{padding:14px 16px;color:var(--text);font-family:var(--font-mono);font-size:11px;
  line-height:1.6;overflow:auto;height:100%}
.dossier-coords{font-size:9px;color:var(--text-dim);letter-spacing:1px;margin-bottom:10px;
  font-variant-numeric:tabular-nums}
.dossier-verdict{border:1px solid var(--border-bright);border-radius:6px;padding:12px 14px;
  margin-bottom:6px;background:rgba(0,0,0,0.25)}
.dossier-verdict-label{font-family:var(--font-display);font-size:13px;letter-spacing:3px;
  font-weight:700;margin-bottom:10px}
.dossier-verdict-grid{display:flex;gap:20px;flex-wrap:wrap}
.dossier-verdict-grid>div{display:flex;flex-direction:column}
.dv-num{font-family:var(--font-display);font-size:17px;font-weight:700;color:var(--text-bright);
  font-variant-numeric:tabular-nums}
.dv-lbl{font-size:7px;color:var(--text-dim);letter-spacing:1.5px;margin-top:2px}
.dossier-section{font-family:var(--font-display);font-size:8px;letter-spacing:2px;
  color:var(--cyan);margin:14px 0 6px;display:flex;align-items:center;gap:6px}
.dossier-section::after{content:'';flex:1;height:1px;
  background:linear-gradient(90deg,var(--border-bright),transparent)}
.dossier-section-note{font-family:var(--font-mono);font-size:8px;color:var(--text-dim);
  letter-spacing:0.5px;text-transform:none}
.dossier-cat-row,.dossier-ctx-row,.dossier-flap-row{display:flex;gap:10px;padding:3px 0;
  font-size:10px;align-items:baseline;font-variant-numeric:tabular-nums}
.dc-name{width:84px;font-family:var(--font-display);font-size:9px;letter-spacing:1px;flex-shrink:0}
.dc-obs{color:var(--text-bright)}
.dc-exp{color:var(--text-dim);font-size:9px}
.dc-rr{margin-left:auto;font-family:var(--font-display);font-size:11px}
.dx-kind{width:84px;color:var(--text-dim);font-size:8px;letter-spacing:1px;
  font-family:var(--font-display);flex-shrink:0}
.dx-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dx-dist{color:var(--text-dim);font-size:9px;flex-shrink:0}
.df-period{width:150px;flex-shrink:0;color:var(--text-bright)}
.df-stat{color:var(--text-dim);font-size:9px}
.df-x{margin-left:auto;color:var(--historic);font-family:var(--font-display)}
.dossier-chart{background:rgba(0,0,0,0.25);border:1px solid var(--border);border-radius:4px;
  padding:6px;margin-bottom:6px;min-height:60px}
.dossier-ledger-row{font-size:9px;color:var(--historic);padding:3px 0 3px 14px;position:relative;
  line-height:1.5}
.dossier-ledger-row::before{content:'!';position:absolute;left:2px;font-family:var(--font-display);
  font-weight:700}
.dossier-case{border:1px solid var(--border);border-radius:4px;padding:8px 10px;margin-bottom:6px;
  background:rgba(255,255,255,0.015)}
.dossier-case-head{display:flex;gap:12px;font-size:8px;margin-bottom:4px;color:var(--text-dim);
  font-family:var(--font-display);letter-spacing:0.5px}
.dossier-case-desc{font-size:9.5px;color:var(--text);opacity:0.85;line-height:1.55}
.dossier-note{font-size:9px;color:var(--text-dim);padding:2px 0 6px}
.dossier-btns{display:flex;gap:8px;margin-top:14px;padding-bottom:6px}
.dossier-btn{background:rgba(0,255,136,0.07);border:1px solid var(--green);color:var(--green);
  font-family:var(--font-display);font-size:9px;letter-spacing:1.5px;padding:7px 14px;
  cursor:pointer;border-radius:3px;transition:background .15s}
.dossier-btn:hover{background:rgba(0,255,136,0.18)}
.dossier-ctxmenu{text-align:center;padding:2px}
.dossier-ctxmenu-sub{font-size:8px;color:var(--text-dim);margin-top:5px;letter-spacing:0.5px;
  font-variant-numeric:tabular-nums}
.dossier-popup .leaflet-popup-content-wrapper{background:var(--panel,#0a0e1d);
  border:1px solid var(--border-bright);border-radius:6px;color:var(--text)}
.dossier-popup .leaflet-popup-tip{background:var(--panel,#0a0e1d)}
.dossier-controls-verdict{font-size:10px;color:var(--text);padding:2px 0 6px;
  font-variant-numeric:tabular-nums}
.dossier-controls-verdict b{font-family:var(--font-display);font-size:11px}

/* ========== COCKPIT STATUS BAR + ENGINE SWEEP ========== */
#map-statusbar{position:absolute;bottom:8px;left:10px;z-index:900;font-family:var(--font-mono);
  font-size:9px;letter-spacing:1px;color:var(--text-dim);background:rgba(5,6,15,0.72);
  border:1px solid var(--border);border-radius:3px;padding:4px 10px;display:flex;gap:8px;
  font-variant-numeric:tabular-nums;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
#map-statusbar .sb-sep{opacity:0.3}
#sb-mode{color:var(--text)}
#sb-engine.busy{color:var(--green);animation:engine-pulse 1s ease-in-out infinite}
@keyframes engine-pulse{50%{opacity:0.45}}
/* Progressive-load readout. Sits directly above the status bar so the two
   read as one instrument stack. Only visible between first paint and the
   moment the UFO payload finishes arriving. */
#map-inbound{position:absolute;bottom:32px;left:10px;z-index:900;font-family:var(--font-mono);
  font-size:9px;letter-spacing:1px;color:var(--text-dim);background:rgba(5,6,15,0.72);
  border:1px solid var(--border);border-radius:3px;padding:4px 10px;display:flex;gap:8px;
  align-items:center;font-variant-numeric:tabular-nums;pointer-events:none;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
#map-inbound[hidden]{display:none}
#map-inbound .inb-label{color:var(--green);animation:engine-pulse 1s ease-in-out infinite}
#map-inbound .sb-sep{opacity:0.3}
#inb-name{color:var(--text)}
#inb-bytes{color:var(--text);min-width:76px}
.inb-track{width:52px;height:2px;background:var(--border);border-radius:1px;overflow:hidden}
.inb-fill{height:100%;width:0;background:var(--green);transition:width .2s linear}
@media (max-width:768px){#map-inbound{display:none}}
@media (prefers-reduced-motion:reduce){#map-inbound .inb-label{animation:none}}

#map-container{overflow:hidden}
#map-container.computing::after{content:'';position:absolute;left:-50%;top:-50%;width:200%;height:200%;
  z-index:850;pointer-events:none;
  background:conic-gradient(from 0deg,transparent 0deg,rgba(0,255,136,0.04) 24deg,rgba(0,255,136,0.1) 38deg,transparent 56deg);
  animation:radar-sweep 2.2s linear infinite}
@keyframes radar-sweep{to{transform:rotate(360deg)}}
@media (max-width:768px){#map-statusbar{display:none}}
@media (prefers-reduced-motion:reduce){
  #map-container.computing::after{animation:none;display:none}
  #sb-engine.busy{animation:none}
}
