/* TraceVector Mission Network — global styles (ported from Mission Network.dc.html v1.3.1) */
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;background:#0b0e15;}
a{color:oklch(0.80 0.17 150);text-decoration:none;}
a:hover{color:oklch(0.88 0.15 150);}
@keyframes blip{0%,100%{opacity:1;}50%{opacity:0.3;}}
@keyframes sweep{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}
@keyframes ring{0%{transform:scale(0.6);opacity:0.7;}100%{transform:scale(2.4);opacity:0;}}
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.11);border-radius:6px;}
::-webkit-scrollbar-track{background:transparent;}
@media (prefers-reduced-motion: reduce){
  *{animation:none !important;}
  html{scroll-behavior:auto;}
}

/* ---- Common operational picture (Mapbox GL) ------------------------------
   The map layers over the stylised fallback grid and fades in only once the
   basemap has actually loaded, so a missing token, a blocked CDN, or a device
   without WebGL 2 leaves the original placeholder visible rather than a void. */
.cop-map{position:absolute;inset:0;opacity:0;transition:opacity 420ms ease;}
.cop-map.is-ready{opacity:1;}
.cop-map canvas{outline:none;}

/* Mapbox chrome, toned down to the tactical palette. Attribution stays legible
   and clickable — Mapbox and OpenStreetMap terms require it on every map. */
.cop-map .mapboxgl-ctrl-bottom-right,
.cop-map .mapboxgl-ctrl-bottom-left{margin:0;}
.cop-map .mapboxgl-ctrl-attrib{background:rgba(11,14,21,0.72);border-radius:5px 0 0 0;font-size:10px;}
.cop-map .mapboxgl-ctrl-attrib a{color:oklch(0.72 0.02 262);}
.cop-map .mapboxgl-ctrl-attrib a:hover{color:oklch(0.88 0.02 262);}
.cop-map .mapboxgl-ctrl-group{background:rgba(18,22,31,0.9);border:1px solid rgba(255,255,255,0.1);box-shadow:none;}
.cop-map .mapboxgl-ctrl-group button+button{border-top:1px solid rgba(255,255,255,0.1);}
.cop-map .mapboxgl-ctrl-group button .mapboxgl-ctrl-icon{filter:invert(1) opacity(0.65);}

/* Track markers — same colour language as the entity dots elsewhere on the page. */
.cop-track{width:11px;height:11px;border-radius:50%;box-shadow:0 0 0 1px rgba(0,0,0,0.55);}
.cop-track-pulse{position:absolute;inset:0;border-radius:50%;animation:ring 2.6s ease-out infinite;}
