.reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 350ms ease-out, transform 350ms ease-out;
}
.reveal.in-view { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .reveal { opacity: 1; transform: none; }
}
