/* États initiaux pour GSAP. Sans JS (classe .no-js) ou si mouvement réduit, tout reste visible. */
.js [data-reveal]{opacity:0;transform:translateY(28px)}
.js [data-reveal="scale"]{transform:scale(.96)}
.js .reveal-done{opacity:1!important;transform:none!important;transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}
.js .split .word{opacity:0;transform:translateY(.5em) rotate(2deg)}
.magnetic{transition:transform .25s var(--ease)}
.page-fade{animation:pagein .5s var(--ease) both}
@keyframes pagein{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.grad-anim{background-size:200% 200%;animation:gradmove 8s ease infinite}
@keyframes gradmove{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@media (prefers-reduced-motion:reduce){
  .js [data-reveal],.js .split .word{opacity:1!important;transform:none!important}
  .page-fade,.grad-anim{animation:none}
  .magnetic{transition:none}
}
