@keyframes fade-up {
  from {
    opacity: 0;
    transform: translate3d(0, 2.5rem, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

@keyframes hero-card-one {
  0%, 100% { transform: rotate(-7deg) translate3d(0, 0, 0); }
  50% { transform: rotate(-5deg) translate3d(0, -0.9rem, 0); }
}

@keyframes hero-card-two {
  0%, 100% { transform: rotate(6deg) translate3d(0, 0, 0); }
  50% { transform: rotate(4deg) translate3d(0, 1rem, 0); }
}

@keyframes hero-card-three {
  0%, 100% { transform: rotate(1deg) translate3d(0, 0, 0); }
  50% { transform: rotate(2deg) translate3d(0, -0.65rem, 0); }
}

@keyframes marquee {
  from { transform: translate3d(0, 0, 0); }
  to { transform: translate3d(-50%, 0, 0); }
}

@keyframes scroll-line {
  0% { transform: scaleY(0); transform-origin: top; }
  45% { transform: scaleY(1); transform-origin: top; }
  55% { transform: scaleY(1); transform-origin: bottom; }
  100% { transform: scaleY(0); transform-origin: bottom; }
}

@keyframes glow-pulse {
  0%, 100% { opacity: 0.3; transform: scale(0.96); }
  50% { opacity: 0.55; transform: scale(1.04); }
}

.reveal {
  opacity: 0;
  transform: translate3d(0, 2.25rem, 0);
  transition:
    opacity var(--duration-slow) var(--ease-standard),
    transform var(--duration-slow) var(--ease-standard);
}

.reveal.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.benefits-grid .reveal:nth-child(2),
.plans-grid .reveal:nth-child(2),
.process-list .reveal:nth-child(2) {
  transition-delay: 90ms;
}

.benefits-grid .reveal:nth-child(3),
.plans-grid .reveal:nth-child(3),
.process-list .reveal:nth-child(3) {
  transition-delay: 180ms;
}

.benefits-grid .reveal:nth-child(4),
.process-list .reveal:nth-child(4) {
  transition-delay: 270ms;
}

@media (prefers-reduced-motion: reduce) {
  /* Accessibility override: user motion preferences must win over component animations. */
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }

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