/* Movimiento: estados iniciales (solo con JS), transiciones entre páginas y movimiento reducido */

/* --- Reveal (reveal.js añade .is-revealed) --- */
.js [data-reveal] {
  opacity: 0;
  transform: translate3d(0, 40px, 0);
  transition:
    opacity var(--dur-slow) var(--ease-out),
    transform var(--dur-slow) var(--ease-out);
  transition-delay: var(--reveal-delay, 0ms);
}
.js [data-reveal="fade"] { transform: none; }
.js [data-reveal="left"] { transform: translate3d(-48px, 0, 0); }
.js [data-reveal="right"] { transform: translate3d(48px, 0, 0); }
.js [data-reveal="scale"] { transform: scale(.94); }
.js [data-reveal].is-revealed { opacity: 1; transform: none; }

.js [data-reveal-stagger] > * {
  opacity: 0;
  transform: translate3d(0, 32px, 0);
  transition:
    opacity var(--dur-slow) var(--ease-out),
    transform var(--dur-slow) var(--ease-out);
  transition-delay: var(--reveal-delay, 0ms);
}
.js [data-reveal-stagger].is-revealed > * { opacity: 1; transform: none; }

/* --- Split text: split-text.js (GSAP SplitText con máscara) añade .is-split al dividir --- */
.js [data-split]:not(.is-split) { visibility: hidden; }
.js [data-split].split-failed { visibility: visible; }

/* --- Título del hero: animación solo CSS para que se pinte en el primer frame (LCP) --- */
.hero__title { animation: hero-rise 1.4s var(--ease-out) both; }
.hero__title em { display: inline-block; animation: hero-rise 1.4s var(--ease-out) .15s both; }
@keyframes hero-rise {
  from { transform: translateY(.3em); filter: blur(10px); }
  to { transform: none; filter: none; }
}

/* --- Transiciones entre páginas (View Transitions, mismo origen) --- */
@view-transition { navigation: auto; }

::view-transition-old(root) {
  animation: vt-out 420ms var(--ease-in-out) both;
}
::view-transition-new(root) {
  animation: vt-in 720ms var(--ease-out) both;
}
::view-transition-group(site-header) { animation-duration: 420ms; }

@keyframes vt-out {
  to { opacity: 0; transform: translateY(-24px) scale(.985); }
}
@keyframes vt-in {
  from { clip-path: inset(100% 0 0 0); }
  to { clip-path: inset(0 0 0 0); }
}

/* --- Movimiento reducido: todo estático e inmediato --- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    transition-delay: 0ms !important;
    scroll-behavior: auto !important;
  }
  .js [data-reveal],
  .js [data-reveal-stagger] > * { opacity: 1; transform: none; }
  .js [data-split]:not(.is-split) { visibility: visible; }
  .hero__light, .hero__spot { animation: none !important; }
  @view-transition { navigation: none; }
  ::view-transition-old(root), ::view-transition-new(root) { animation: none !important; }
}

/* Scroll suave nativo solo si no hay Lenis */
@media (prefers-reduced-motion: no-preference) {
  html:not(.lenis) { scroll-behavior: smooth; }
}
