/* ═══════════════════════════════════════════════════════════════════════
   SCROLER — Mur des réalisations : l'amphithéâtre holographique (WebGL)
   ───────────────────────────────────────────────────────────────────────
   Habille le 4e état du mur, data-etat="scene", posé par
   site-web-mur3d.js. Sans ce script (ou sans ses conditions : grand
   écran, pointeur fin, WebGL, mouvement autorisé, filtre « Tout »),
   aucune de ces règles ne s'applique : le mur garde ses états
   defile/grille de site-web.css.
   ═══════════════════════════════════════════════════════════════════════ */

.sw-mur3d {
  position: relative;
  height: min(72svh, 720px);
  cursor: grab;
  touch-action: pan-y;
  user-select: none;
  -webkit-user-select: none;
}
.sw-mur3d.is-saisi { cursor: grabbing; }
.sw-mur3d.is-cible { cursor: pointer; }
.sw-mur3d canvas { position: absolute; inset: 0; }

/* Légende synchronisée avec la carte visée par le pointeur. Le conteneur
   entier est aria-hidden : cette légende est purement visuelle, la vraie
   liste (titres, domaines, liens) reste dans le document.             */
.sw-mur3d__legende {
  position: absolute;
  left: 50%;
  bottom: 12px;
  transform: translateX(-50%);
  margin: 0;
  padding: 9px 18px;
  border: 1px solid var(--scr-bord);
  border-radius: 999px;
  background: rgba(23,18,15,.66);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  font-family: var(--scr-mono);
  font-size: 11.5px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(242,239,234,.74);
  white-space: nowrap;
  max-width: calc(100% - 40px);
  overflow: hidden;
  text-overflow: ellipsis;
  pointer-events: none;
  transition: color .3s ease, border-color .3s ease;
}
.sw-mur3d__legende.is-vise {
  color: var(--scr-paper);
  border-color: var(--scr-bord-vif);
  box-shadow: 0 0 26px -8px rgba(233,78,26,.8);
}
.sw-mur3d__legende b { font-weight: 500; color: var(--scr-orange); }

/* La liste DOM reste dans le document — focus clavier, lecteurs d'écran,
   moteurs — mais disparaît visuellement. PAS de display:none : la
   tabulation doit pouvoir y entrer, ce qui détruit la scène et rend la
   grille (voir le focusin de site-web-mur3d.js).                      */
.sw-mur[data-etat="scene"] .sw-holos {
  position: absolute;
  inset: 0;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}

/* Là où la scène n'a pas le droit d'exister, on ne laisse rien traîner :
   le script se détruit à chaud, ces règles sont la ceinture de sécurité. */
@media (prefers-reduced-motion: reduce), (forced-colors: active), (pointer: coarse) {
  .sw-mur3d { display: none; }
}
@media print {
  .sw-mur3d { display: none; }
  .sw-mur[data-etat="scene"] .sw-holos { position: static; opacity: 1; }
}
