/* ============================================================
   ASU Plongée — styles du moteur d'animation (asu-motion.js)
   Chargé après lenis.css. Tout est neutre si le JS ne démarre pas.
   ============================================================ */

/* Lenis gère le défilement : on coupe le smooth natif qui le contrarie */
html.lenis{scroll-behavior:auto !important}

/* Quand GSAP pilote les révélations, les transitions CSS ne doivent pas
   ralentir chaque image de l'animation */
html.asu-motion .reveal:not(.in){transition:none !important}

/* Titre découpé (port de React Bits « SplitText ») : caché le temps du
   découpage pour éviter le flash. Un minuteur dans <head> retire
   .motion-pending au bout de 2,5 s quoi qu'il arrive. */
html.motion-pending [data-split],
html.motion-pending [data-intro]{visibility:hidden}
[data-split] .split-char,[data-split] .split-word{will-change:transform,opacity}

/* Titres « Bulles » : bulles décoratives qui s'échappent du titre */
[data-split]{position:relative}
[data-split] .title-bubble{
  position:absolute;border-radius:50%;pointer-events:none;opacity:0;
  border:1px solid rgba(79,216,224,.45);
}

/* Rayons de lumière animés par GSAP (accueil) : l'ondulation CSS est
   coupée, et le flou est remplacé par des bords dégradés (plus léger). */
html.rays-live header .ray{
  animation:none;filter:none;will-change:transform,opacity;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 20%,#000 80%,transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0,#000 20%,#000 80%,transparent 100%);
}

/* Paragraphes « ScrollReveal » : les mots doivent rester en ligne */
[data-scroll-reveal] .sr-word{display:inline-block}

/* Port de React Bits « SpotlightCard » : halo cyan qui suit le pointeur */
.spotlight{position:relative;isolation:isolate;overflow:hidden}
.spotlight > .spot-light,
.spotlight > .spot-edge{
  position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;
}
.spotlight > .spot-light{z-index:-1}
.spotlight > .spot-edge{
  z-index:1;inset:-1px;padding:1px;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);
}

/* Port de React Bits « Magnet » */
.magnet{position:relative;display:inline-block}
.magnet > .magnet-inner{display:inline-block;will-change:transform}

@media (prefers-reduced-motion: reduce){
  html.motion-pending [data-split],
  html.motion-pending [data-intro]{visibility:visible}
}
