@media (prefers-reduced-motion: no-preference) {
  .hero-announcement,
  .hero-copy,
  .hero-visual {
    animation: enter-soft 680ms ease both;
  }

  .hero-copy {
    animation-delay: 80ms;
  }

  .hero-visual {
    animation-delay: 140ms;
  }

  .visual-flow span {
    animation: flow-line 2600ms ease-in-out infinite;
  }

  .visual-flow span:nth-child(2) {
    animation-delay: 220ms;
  }

  .visual-flow span:nth-child(3) {
    animation-delay: 420ms;
  }

  .payer-track {
    animation: payer-scroll 34s linear infinite;
  }

  .payer-track.reverse {
    animation-direction: reverse;
    animation-duration: 40s;
  }

  .ally-logo-track {
    animation: ally-logo-scroll 52s linear infinite;
  }

  .reveal {
    opacity: 0;
    transform: translateY(18px);
    transition:
      opacity 620ms ease,
      transform 620ms ease,
      border-color 220ms ease;
  }

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

  .impact-main,
  .impact-item {
    animation: metric-rise 620ms ease both;
  }

  .impact-item:nth-child(1) {
    animation-delay: 80ms;
  }

  .impact-item:nth-child(2) {
    animation-delay: 150ms;
  }

  .impact-item:nth-child(3) {
    animation-delay: 220ms;
  }

  .metric-char {
    opacity: 1;
    transform: translateY(0) scale(1);
  }

  .metrics-ready .metric-char {
    animation: metric-char-rise 420ms cubic-bezier(0.16, 1, 0.3, 1) both;
    animation-delay: calc(var(--i) * 14ms + var(--metric-delay, 0ms));
  }

  .metrics-ready .impact-main::after,
  .metrics-ready .impact-item::after {
    animation: metric-sheen 820ms ease both;
    animation-delay: var(--metric-delay, 0ms);
  }

  .metrics-ready .metric-line::before {
    animation: metric-line-fill 1100ms cubic-bezier(0.16, 1, 0.3, 1) 260ms both;
  }

  .impact-main:hover,
  .impact-item:hover {
    transform: translateY(-4px);
    border-color: rgba(255, 255, 255, 0.32);
  }

  .solution-grid article:hover,
  .process-grid article:hover,
  .process-aside:hover,
  .faq-grid article:hover {
    transform: translateY(-4px);
    border-color: rgba(7, 94, 168, 0.18);
    box-shadow: 0 18px 44px rgba(9, 33, 59, 0.1);
  }

  .solution-grid article,
  .process-grid article,
  .process-aside,
  .faq-grid article {
    transition:
      transform 220ms ease,
      border-color 220ms ease,
      box-shadow 220ms ease;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ally-logos,
  .payer-marquee {
    overflow-x: auto;
  }

  .ally-logo-track,
  .payer-track {
    animation: none;
  }
}

@keyframes metric-rise {
  from {
    opacity: 0;
    transform: translateY(18px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes enter-soft {
  from {
    opacity: 0;
    transform: translateY(14px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes number-pop {
  from {
    opacity: 0;
    transform: translateY(8px) scale(0.96);
  }

  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes metric-char-rise {
  0% {
    opacity: 0;
    transform: translateY(0.42em) scale(0.94);
  }

  58% {
    opacity: 1;
    transform: translateY(-0.06em) scale(1.02);
  }

  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes metric-sheen {
  from {
    left: -80%;
  }

  to {
    left: 132%;
  }
}

@keyframes metric-line-fill {
  from {
    transform: scaleX(0);
  }

  to {
    transform: scaleX(1);
  }
}

@keyframes flow-line {
  0%,
  100% {
    opacity: 0.28;
    transform: translateX(0);
  }

  50% {
    opacity: 0.9;
    transform: translateX(-16px);
  }
}

@keyframes payer-scroll {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(calc(-50% - 5px));
  }
}

@keyframes ally-logo-scroll {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(calc(-50% - 6px));
  }
}
