/* MOT-4 — Texte masque montant (impose) */
.reveal-mask{overflow: hidden; display: block;}
.reveal-mask > *{
  transform: translateY(105%);
  transition: transform .8s cubic-bezier(.2,.8,.2,1);
  display: inline-block;
  will-change: transform;
}
.reveal-mask.in > *{transform: none;}

/* Fade vertical sobre pour le reste (jamais translateX -- PIEGE PROD #13) */
[data-reveal]:not(.reveal-mask){
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .65s ease, transform .65s ease;
  will-change: transform, opacity;
}
[data-reveal]:not(.reveal-mask).in{
  opacity: 1;
  transform: none;
}

/* Stagger sur les enfants de grilles */
.stagger > *{
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .55s ease, transform .55s ease;
}
.stagger.in > *{
  opacity: 1;
  transform: none;
}
.stagger.in > *:nth-child(1){transition-delay: .04s;}
.stagger.in > *:nth-child(2){transition-delay: .10s;}
.stagger.in > *:nth-child(3){transition-delay: .16s;}
.stagger.in > *:nth-child(4){transition-delay: .22s;}
.stagger.in > *:nth-child(5){transition-delay: .28s;}
.stagger.in > *:nth-child(6){transition-delay: .34s;}
.stagger.in > *:nth-child(7){transition-delay: .40s;}
.stagger.in > *:nth-child(8){transition-delay: .46s;}

@media (prefers-reduced-motion: reduce){
  .reveal-mask > *,
  [data-reveal]:not(.reveal-mask),
  .stagger > *{
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* Compteurs stats : transition douce */
.stat-num{transition: opacity .4s ease;}
