@keyframes hero-rise {
  from { opacity: 0; transform: translateY(1.5rem); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes catalog-card-in {
  from { opacity: 0; transform: translateY(.6rem); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes modal-enter {
  from { opacity: 0; transform: translateY(.8rem) scale(.985); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes faq-answer-in {
  from { opacity: 0; transform: translateY(-.25rem); }
  to { opacity: 1; transform: translateY(0); }
}

.reveal { opacity: 0; animation: hero-rise 850ms cubic-bezier(.2,.7,.2,1) forwards; }
.reveal--delay-1 { animation-delay: 120ms; }
.reveal--delay-2 { animation-delay: 240ms; }
.reveal--delay-3 { animation-delay: 360ms; }
.reveal-on-scroll { opacity: 1; transform: none; }
.js .reveal-on-scroll { opacity: 0; transform: translateY(2rem); transition: opacity 750ms cubic-bezier(.2,.7,.2,1), transform 750ms cubic-bezier(.2,.7,.2,1); }
.js .reveal-on-scroll.is-visible { opacity: 1; transform: translateY(0); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
  .reveal, .reveal-on-scroll { opacity: 1; transform: none; }
}
