/* Motion is opt-in: only when JS is running and the user has not asked for reduced motion. */
@media (prefers-reduced-motion: no-preference) {
  /* Transform only, so the hero text and image count as painted immediately (LCP). */
  @keyframes lift {
    from { transform: translateY(12px); }
    to { transform: none; }
  }

  .hero__content > * {
    animation: lift var(--dur-slow) var(--ease) both;
  }

  .hero__content > :nth-child(2) { animation-delay: 80ms; }
  .hero__content > :nth-child(3) { animation-delay: 160ms; }
  .hero__content > :nth-child(4) { animation-delay: 240ms; }
  .hero__content > :nth-child(5) { animation-delay: 320ms; }

  /* Why Sainera orbit: slow continuous rotation (40s per turn). */
  @keyframes orbit-spin {
    to { transform: rotate(360deg); }
  }

  .orbit__rings {
    animation: orbit-spin 40s linear infinite;
  }

  .js .reveal {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity var(--dur-slow) var(--ease), transform var(--dur-slow) var(--ease);
    transition-delay: var(--reveal-delay, 0ms);
  }

  .js .reveal.is-visible {
    opacity: 1;
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
