/* MAP */
.map-console{min-width:0;border-right:1px solid #293034;display:flex;flex-direction:column}
.map-toolbar{
  min-height:56px;border-bottom:1px solid #293034;display:grid;
  grid-template-columns:minmax(180px,1fr) minmax(190px,260px) auto;align-items:center;gap:14px;padding:8px 14px
}
.map-status{display:flex;flex-direction:column;gap:4px;min-width:0}
.map-status span,.map-search label{
  font:600 7px ui-monospace,SFMono-Regular,monospace;letter-spacing:.16em;color:#566267
}
.map-status b{font:700 8px ui-monospace,SFMono-Regular,monospace;letter-spacing:.09em;color:#9aa9ae;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.map-search{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:8px;border-left:1px solid #262d30;padding-left:12px}
.map-search input{
  min-width:0;width:100%;border:0;border-bottom:1px solid #313b3f;background:transparent;color:#d9e4e6;
  padding:6px 3px;font:600 8px ui-monospace,SFMono-Regular,monospace;letter-spacing:.08em;outline:none
}
.map-search input:focus{border-color:#8ca7ae}
.map-search input::placeholder{color:#485357}
.map-tools{display:flex;gap:4px}
.map-tools button{
  border:1px solid #2a3336;background:#080a0b;color:#758287;min-width:31px;height:30px;padding:0 8px;
  font:700 8px ui-monospace,SFMono-Regular,monospace;letter-spacing:.08em;cursor:pointer
}
.map-tools button:hover,.map-tools button[aria-pressed="true"]{border-color:#71858b;color:#e5f0f2;background:#101518}
.map-viewport{
  position:relative;min-height:490px;flex:1;overflow:hidden;background:
  radial-gradient(circle at 50% 48%,#11191c 0,transparent 52%),#050708;
  cursor:crosshair;isolation:isolate
}
.world-svg{position:absolute;inset:0;width:100%;height:100%;color:#1f292d;overflow:hidden}
.map-grid-fill{opacity:.62}
#worldMapViewport{transform-origin:0 0}
.world-land path{
  fill:#11191c;stroke:#354247;stroke-width:.65;vector-effect:non-scaling-stroke;
  transition:fill .18s,stroke .18s,opacity .18s;cursor:default
}
.world-land path:hover{fill:#182328;stroke:#71858b}
.world-land path.linked{cursor:pointer}
.world-land path.linked:hover{fill:#1a282d;stroke:#a9c5cc}
.world-land path.selected{fill:#1d2c31;stroke:#cae5eb;stroke-width:1.2}
.map-scanline{
  position:absolute;z-index:3;left:0;right:0;top:-2px;height:1px;background:#d9f3f8;
  box-shadow:0 0 12px #d9f3f877;opacity:0;pointer-events:none
}
.map-viewport.ready .map-scanline{animation:mapBootScan 1.15s .08s cubic-bezier(.2,.7,.2,1) both}
@keyframes mapBootScan{0%{top:0;opacity:0}8%{opacity:.85}90%{opacity:.5}100%{top:100%;opacity:0}}
.map-loading{
  position:absolute;z-index:5;inset:0;display:grid;place-content:center;text-align:center;background:#050708;
  transition:opacity .3s,visibility .3s
}
.map-loading span{font:700 8px ui-monospace,SFMono-Regular,monospace;letter-spacing:.22em;color:#77868b}
.map-loading i{display:block;width:150px;height:1px;background:#252e31;margin:16px auto;position:relative;overflow:hidden}
.map-loading i:after{content:"";position:absolute;inset:0;width:45%;background:#b4d2d9;animation:mapLoad 1s infinite}
@keyframes mapLoad{from{transform:translateX(-120%)}to{transform:translateX(340%)}}
.map-loading.done{opacity:0;visibility:hidden;pointer-events:none}
.map-coordinate{
  position:absolute;z-index:4;left:14px;bottom:13px;
  font:600 7px ui-monospace,SFMono-Regular,monospace;letter-spacing:.13em;color:#526065;pointer-events:none
}
.map-legend{
  position:absolute;z-index:4;right:14px;bottom:11px;display:flex;gap:12px;
  font:600 6px ui-monospace,SFMono-Regular,monospace;letter-spacing:.1em;color:#59666a;pointer-events:none
}
.map-legend span{display:flex;gap:5px;align-items:center}.map-legend i{width:5px;height:5px;border-radius:50%;display:block}
.map-legend .safe{background:var(--safe)}.map-legend .contested{background:var(--contested)}
.map-legend .lost{background:var(--lost)}.map-legend .black{background:#9ca1a4}
.sector-marker{cursor:pointer;outline:none;transition:opacity .2s}.sector-hit{fill:transparent;pointer-events:all}
.sector-marker .sector-core{fill:#d9eef2;filter:url(#sectorGlow)}
.sector-marker .sector-ring{fill:none;stroke:#a9c8d0;stroke-width:1;vector-effect:non-scaling-stroke;opacity:.5}
.sector-marker .sector-pulse{fill:none;stroke:#a9c8d0;stroke-width:.6;vector-effect:non-scaling-stroke;opacity:.25}
.sector-marker text{
  fill:#809095;font:600 8px ui-monospace,SFMono-Regular,monospace;letter-spacing:.05em;
  paint-order:stroke;stroke:#050708;stroke-width:3px;stroke-linejoin:round
}
.sector-marker[data-zone="black"] .sector-core{fill:#b7babc}
.sector-marker[data-zone="black"] .sector-ring,.sector-marker[data-zone="black"] .sector-pulse{stroke:#a7abad}
.sector-marker.selected .sector-ring{stroke:#e5f5f8;opacity:1;stroke-width:1.4}
.sector-marker.selected text{fill:#e3eef0}
.sector-marker.filtered{opacity:.08;pointer-events:none}
.sector-marker:hover .sector-pulse,.sector-marker:focus .sector-pulse{animation:sectorPulse 1.1s ease-out infinite}
@keyframes sectorPulse{from{r:8;opacity:.55}to{r:23;opacity:0}}
.situation-room[data-zone="contested"] .map-viewport,
.situation-room[data-zone="lost"] .map-viewport{background:radial-gradient(circle at 50% 48%,#171713 0,transparent 52%),#050708}
.situation-room[data-zone="black"] .map-viewport{background:radial-gradient(circle at 50% 48%,#111315 0,transparent 46%),#020303}
.situation-room[data-era]:not([data-era="2134"]) .world-land path{opacity:.62}
.situation-room[data-era]:not([data-era="2134"]) .sector-marker{opacity:.35}

