/* No-JS / scripts-blocked fallback: show everything */
.reveal { opacity: 1; transform: none; }

/* JS-enabled: hide until revealed */
html.js-reveal .reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 600ms ease-out, transform 600ms ease-out;
  transition-delay: var(--reveal-delay, 0ms);
  will-change: opacity, transform;
}

html.js-reveal .reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  html.js-reveal .reveal,
  html.js-reveal .reveal.is-visible {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
