/* Only decorative details move. Text and controls are always available. */
@media (prefers-reduced-motion: no-preference) {
  .hero-art.motion-ready .journey-tail {
    stroke-dasharray: 1;
    stroke-dashoffset: 1;
  }

  .hero-art.motion-ready .journey-arrow {
    opacity: 0;
  }

  .hero-art.motion-ready.is-visible .journey-tail {
    animation: journey-draw 1150ms cubic-bezier(.42, 0, .25, 1) both;
  }

  .hero-art.motion-ready.is-visible .journey-arrow {
    animation: detail-appear 180ms ease-out 1000ms both;
  }

  .approach-steps li.motion-ready .step-number {
    opacity: .45;
    transform: translateY(5px);
  }

  .approach-steps li.motion-ready::after {
    transform: scaleX(0);
    transform-origin: right center;
  }

  .approach-steps li.motion-ready.is-visible .step-number {
    animation: step-arrive 480ms cubic-bezier(.25, 1, .5, 1) var(--step-delay, 120ms) both;
  }

  .approach-steps li.motion-ready.is-visible::after {
    animation: step-connect 560ms cubic-bezier(.25, 1, .5, 1) calc(var(--step-delay, 120ms) + 100ms) both;
  }

  .button-primary span[aria-hidden="true"] {
    display: inline-block;
    transition: transform 200ms cubic-bezier(.25, 1, .5, 1);
  }

  .button-primary:not(:disabled):focus-visible span[aria-hidden="true"] {
    transform: translateX(-3px);
  }

  @media (hover: hover) and (pointer: fine) {
    .button-primary:not(:disabled):hover span[aria-hidden="true"] {
      transform: translateX(-3px);
    }
  }
}

@keyframes journey-draw {
  from { stroke-dashoffset: 1; }
  to { stroke-dashoffset: 0; }
}

@keyframes detail-appear {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes step-arrive {
  from { opacity: .45; transform: translateY(5px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes step-connect {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}
