.reveal {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity 700ms ease, transform 700ms ease;
}

.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

.hero-copy > * {
  opacity: 0;
  transform: translateY(18px);
  animation: fadeUp 800ms ease forwards;
}

.hero-copy .eyebrow { animation-delay: 100ms; }
.hero-copy .hero-title { animation-delay: 200ms; }
.hero-copy .hero-subtitle { animation-delay: 320ms; }
.hero-copy .hero-actions { animation-delay: 440ms; }

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

@keyframes floatGlow {
  0% {
    transform: scale(1) translate3d(0, 0, 0);
    opacity: .65;
  }
  100% {
    transform: scale(1.08) translate3d(1%, -2%, 0);
    opacity: 1;
  }
}

@keyframes sheen {
  0% {
    transform: translateX(-140%) skewX(-18deg);
    opacity: 0;
  }
  20% {
    opacity: 1;
  }
  100% {
    transform: translateX(180%) skewX(-18deg);
    opacity: 0;
  }
}

@keyframes pulseGlow {
  0%, 100% {
    box-shadow: 0 0 0 rgba(255, 90, 79, 0), 0 0 0 rgba(255, 90, 79, 0);
  }
  50% {
    box-shadow: 0 0 24px rgba(255, 90, 79, .28), 0 0 52px rgba(179, 19, 43, .18);
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *, *::before, *::after {
    animation: none !important;
    transition: none !important;
  }

  .reveal {
    opacity: 1;
    transform: none;
  }

  .hero-copy .hero-title {
    clip-path: none;
  }

  .hero-copy .hero-title::after {
    display: none;
  }
}
