/* The one-shot content reveal is driven by motion.js so it reliably runs on
   fresh loads and browser-restored pages. Continuous diagram motion remains CSS. */

.site-header,
.eyebrow,
.eyebrow::before,
h1,
.title-line,
.hero-copy,
.hero-copy p,
.site-footer {
  animation: none !important;
}

.motion-preparing .site-header,
.motion-preparing .eyebrow,
.motion-preparing .title-line,
.motion-preparing .hero-copy p,
.motion-preparing .site-footer {
  opacity: 0;
  filter: blur(2px);
  transform: translateY(0.75rem);
  will-change: opacity, filter, transform;
}

.motion-preparing .title-line {
  transform: translateY(1rem) scale(0.99);
}

@media (prefers-reduced-motion: reduce) {
  .motion-preparing .site-header,
  .motion-preparing .eyebrow,
  .motion-preparing .title-line,
  .motion-preparing .hero-copy p,
  .motion-preparing .site-footer {
    opacity: 1;
    filter: none;
    transform: none;
  }
}
