/* animations.css — Entry animations vía IntersectionObserver. Cinematográficas
   pero discretas: escala + desvanecido, no solo desplazamiento. */

.will-animate {
  opacity: 0;
  transform: translateY(28px) scale(0.98);
  transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1), transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.will-animate.is-visible {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .will-animate {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
