/* ===== Reveal on scroll / load ===== */
:root{
  --reveal-distance: 28px;
  --reveal-duration: .7s;
  --reveal-ease: cubic-bezier(.2,.65,.3,1);
  --reveal-fade: 0; /* 0 = totalmente transparente no início */
}

[data-reveal]{
  opacity: var(--reveal-fade);
  transform: translate3d(0,var(--reveal-distance),0);
  transition:
    opacity var(--reveal-duration) var(--reveal-ease),
    transform var(--reveal-duration) var(--reveal-ease);
  will-change: transform, opacity;
}
[data-reveal="up"]{ transform: translate3d(0,var(--reveal-distance),0); }
[data-reveal="down"]{ transform: translate3d(0,calc(var(--reveal-distance)*-1),0); }
[data-reveal="left"]{ transform: translate3d(var(--reveal-distance),0,0); }
[data-reveal="right"]{ transform: translate3d(calc(var(--reveal-distance)*-1),0,0); }
[data-reveal="fade"]{ transform: none; }

[data-reveal].is-visible{
  opacity: 1;
  transform: none;
}

/* Stagger (atraso em cascata nos filhos) */
[data-stagger] > *{
  transition-delay: calc(var(--stagger, 80ms) * var(--i, 0));
}

/* Acessibilidade: respeita usuários que preferem menos animação */
@media (prefers-reduced-motion: reduce){
  [data-reveal],
  [data-stagger] > *{
    transition: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
}