/* Estados pre-animación: ocultar mientras GSAP no haya inicializado */
[data-reveal] { opacity: 0; }
[data-reveal-up] { opacity: 0; transform: translateY(40px); }
[data-reveal-mask] { clip-path: inset(0 0 100% 0); }
[data-line-draw] { transform-origin: left; transform: scaleX(0); }
[data-stagger] > * { opacity: 0; transform: translateY(24px); }

.js-loaded [data-reveal],
.js-loaded [data-reveal-up],
.js-loaded [data-reveal-mask],
.js-loaded [data-line-draw],
.js-loaded [data-stagger] > * { transition: none; }

/* Fallback si JS no carga (degradación elegante) */
.no-js [data-reveal], .no-js [data-reveal-up], .no-js [data-reveal-mask], .no-js [data-stagger] > * { opacity: 1 !important; transform: none !important; clip-path: none !important; }
.no-js [data-line-draw] { transform: scaleX(1) !important; }

/* Caracteres con SplitText */
.char, .word, .line { display: inline-block; will-change: transform, opacity; }
.split-mask { overflow: hidden; display: inline-block; }

/* Hover lift en tarjetas */
[data-magnetic] { will-change: transform; }
