/* All content is visible by default. JS adds this class only when an observed
   element enters the viewport. A finite animation cannot leave it hidden. */
.reveal-pending {
  animation: page-soft-enter 620ms cubic-bezier(.22, .7, .2, 1) var(--reveal-delay, 0ms) both;
}

@keyframes page-soft-enter {
  from { opacity: 0; translate: 0 12px; }
  to { opacity: 1; translate: 0 0; }
}

.hero-copy > .reveal-pending {
  animation-duration: 650ms;
}

/* Keyboard navigation should never have to wait for an entrance to finish. */
.reveal-pending:focus-within {
  animation: none;
}

@media (prefers-reduced-motion: reduce) {
  .reveal-pending { animation: none !important; }
}

@media print {
  .reveal-pending { animation: none !important; }
}
