/* ============================================================
   ASTRA GENESIS, 14-effects.css
   v0.67.0, effets atmosphériques et carte vivante (js/01g-effects.js).
   Aucune couleur de jeu ici : les teintes viennent d'AG.FX
   (js/00x-effects-config.js), posées en variables par le moteur.
   ============================================================ */

/* ---------- couche d'ambiance (jour/nuit + météo) ----------
   Posée dans le conteneur de fond de l'écran, juste AVANT le projecteur
   (.dv2-spotlight, z-index 3) : au-dessus de l'image, sous le voile, la
   vignette, les panneaux et le HUD. Aucun clic intercepté. */
.fx-layer{
  position:absolute;inset:0;width:100%;height:100%;
  z-index:2;pointer-events:none;display:block;
}
.fx-static{transition:background 1.2s linear;}
html.fx-reduced .fx-static{transition:none;}

/* ---------- flux de production (écran Usines) ----------
   Points ronds (tiret quasi nul + bout rond) qui avancent le long du
   tracé. Écart, durée, couleur et diamètre posés par arête. */
.fg-pulse{
  fill:none;pointer-events:none;
  stroke:var(--fg-pulse-c, #2DD4BF);
  stroke-width:var(--fg-pulse-w, 4.5px);
  stroke-linecap:round;
  stroke-dasharray:0.01px var(--fg-pulse-gap, 42px);
  opacity:var(--fg-pulse-o, .95);
  animation:fgPulseRun var(--fg-pulse-dur, 1s) linear infinite;
  transition:opacity .15s ease;
}
@keyframes fgPulseRun{
  from{stroke-dashoffset:0;}
  to{stroke-dashoffset:calc(var(--fg-pulse-gap, 42px) * -1);}
}
/* arête à l'arrêt : statique et estompée, comme un lien non construit */
.fg-link.fx-stopped{opacity:.3;filter:none;}
.fg-links-svg.fg-hover .fg-pulse{opacity:.2;}
html.fx-reduced .fg-pulse{display:none;}

/* ---------- carte vivante ---------- */
.route-ships{position:absolute;inset:0;z-index:6;pointer-events:none;}
.route-ships .route-ship{
  pointer-events:auto;cursor:pointer;border:none;padding:0;
  background:var(--fx-head, var(--cyan));
  box-shadow:0 0 14px color-mix(in srgb, var(--fx-head, #2DD4BF) 65%, transparent);
  /* position patchée à chaque image : pas de transition */
  transition:box-shadow .15s ease, filter .15s ease;
}
.route-ships .route-ship:hover,
.route-ships .route-ship:focus-visible{
  filter:brightness(1.15);
  box-shadow:0 0 0 2px #0A0F16, 0 0 0 4px var(--fx-head, #2DD4BF), 0 0 18px var(--fx-head, #2DD4BF);
  outline:none;
}
.route-ships .fx-loot{
  position:absolute;right:-3px;top:-3px;width:8px;height:8px;border-radius:50%;
  background:#FBBF24;box-shadow:0 0 6px rgba(251,191,36,.8);
}
.fx-trail{fill:none;stroke-linecap:round;}
/* reste du trajet : pointillés existants (.route-line), couleur du type */
.route-line.fx-rest{filter:none;}
/* effets réduits : marqueurs mis à jour chaque seconde, glissement CSS */
html.fx-reduced .route-ships .route-ship{transition:left 1s linear, top 1s linear, box-shadow .15s ease;}
html.fx-reduced .route-line{animation:none;}

/* sélection d'une mission depuis son marqueur */
.map-mission.fx-selected{animation:fxSelect 1.2s ease-out 1;}
@keyframes fxSelect{
  0%{box-shadow:0 0 0 2px #2DD4BF, 0 0 22px rgba(45,212,191,.55);}
  100%{box-shadow:0 0 0 0 transparent;}
}

/* onglet masqué : toutes les animations CSS des effets en pause */
html.fx-paused .fg-pulse,
html.fx-paused .route-line{animation-play-state:paused;}

/* ---------- compteur DEV (?fxdebug) ---------- */
.fx-debug{
  position:fixed;left:8px;bottom:calc(var(--nav-h, 60px) + 8px);z-index:9999;
  padding:4px 8px;border-radius:8px;pointer-events:none;
  background:#121C2B;border:1px solid #1E2E40;color:#E6EDF5;
  font:11px/1.4 'JetBrains Mono', monospace;
}

@media (prefers-reduced-motion: reduce){
  .map-mission.fx-selected{animation:none;}
}
