@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.hero [data-animate="hero"] {
  animation: fadeInUp 0.9s var(--ease-out) both;
}

html.js-gsap .hero [data-animate="hero"] {
  animation: none;
  opacity: 1;
  transform: none;
}

.about-hero__finnegan,
.about-hero__monroe,
.about-hero__photo {
  animation: fadeInUp 1s var(--ease-out) both;
}

.about-hero__photo {
  animation-delay: 0.12s;
}

.about-hero__monroe {
  animation-delay: 0.22s;
}

html.js-gsap .about-hero__finnegan,
html.js-gsap .about-hero__monroe,
html.js-gsap .about-hero__photo {
  animation: none;
  opacity: 1;
  transform: none;
}

/* Regression / headless capture — final visible state */
html.capture-mode *,
html.capture-mode *::before,
html.capture-mode *::after {
  animation: none !important;
  transition: none !important;
}

html.capture-mode .reveal,
html.capture-mode .hero [data-animate="hero"],
html.capture-mode .hero__intro,
html.capture-mode .title-solid,
html.capture-mode .title-ghost,
html.capture-mode .hero-bottom-bar,
html.capture-mode .about-hero__finnegan,
html.capture-mode .about-hero__monroe,
html.capture-mode .about-hero__photo,
html.capture-mode .stat,
html.capture-mode .blog-tile,
html.capture-mode .blog-featured-split {
  opacity: 1 !important;
  transform: none !important;
}

.hero [data-animate="hero"]:nth-child(2) {
  animation-delay: 0.1s;
}

.hero [data-animate="hero"]:nth-child(3) {
  animation-delay: 0.2s;
}

.hero [data-animate="hero"]:nth-child(4) {
  animation-delay: 0.3s;
}
