/* Clickove Motion — estados iniciales seguros.
 * Los elementos se ocultan SOLO si JS está activo y GSAP aún no ha cargado;
 * si GSAP falla o el usuario prefiere menos movimiento, todo se ve normal. */
html.js-motion:not(.motion-fail) [data-reveal],
html.js-motion:not(.motion-fail) [data-reveal-group] > * {
  visibility: hidden;      /* GSAP los vuelve visibles con autoAlpha */
}
html.motion-fail [data-reveal],
html.motion-fail [data-reveal-group] > * {
  visibility: visible !important;
  opacity: 1 !important;
  transform: none !important;
}
/* Parallax: el contenedor recorta el desplazamiento */
[data-parallax] { will-change: transform; }
[data-parallax]:not(img) { transform: translateZ(0); }
.parallax-wrap { overflow: hidden; position: relative; }
.parallax-wrap > img, .parallax-wrap > [data-parallax] { width: 100%; height: 115%; object-fit: cover; }
/* SplitText con máscara por líneas */
[data-split] { overflow: visible; }
@media (prefers-reduced-motion: reduce) {
  [data-reveal], [data-reveal-group] > * { visibility: visible !important; opacity: 1 !important; transform: none !important; }
}
