/* =============================================================================
   SECOND WIND - ANIMATIONS (wind + renewal, 2D only, reduced-motion aware)
   ============================================================================= */
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes toast-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }

/* Message fragments assemble like wind (hero) */
@keyframes windUp { from { opacity: 0; transform: translateY(105%) skewY(6deg); } to { opacity: 1; transform: translateY(0) skewY(0); } }
.hero__frag .line span { animation: windUp var(--dur-4) var(--ease) both; }
.hero__frag .line:nth-child(1) span { animation-delay: 0.08s; }
.hero__frag .line:nth-child(2) span { animation-delay: 0.26s; }
.hero__sub, .hero__cta, .hero__paths { animation: fadeUp var(--dur-3) var(--ease) both; }
.hero__sub { animation-delay: 0.44s; }
.hero__cta { animation-delay: 0.54s; }
.hero__paths { animation-delay: 0.64s; }

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

/* Scroll reveal (JS adds .in) */
.reveal { opacity: 0; transform: translateY(22px); transition: opacity var(--dur-3) var(--ease), transform var(--dur-3) var(--ease); }
.reveal.in { opacity: 1; transform: translateY(0); }
.reveal-stagger > * { opacity: 0; transform: translateY(20px); transition: opacity var(--dur-3) var(--ease), transform var(--dur-3) var(--ease); }
.reveal-stagger.in > * { opacity: 1; transform: translateY(0); }
.reveal-stagger.in > *:nth-child(1) { transition-delay: 0.04s; }
.reveal-stagger.in > *:nth-child(2) { transition-delay: 0.09s; }
.reveal-stagger.in > *:nth-child(3) { transition-delay: 0.14s; }
.reveal-stagger.in > *:nth-child(4) { transition-delay: 0.19s; }
.reveal-stagger.in > *:nth-child(5) { transition-delay: 0.24s; }
.reveal-stagger.in > *:nth-child(6) { transition-delay: 0.29s; }
.reveal-stagger.in > *:nth-child(7) { transition-delay: 0.34s; }
.reveal-stagger.in > *:nth-child(8) { transition-delay: 0.39s; }


/* Animated underline on links handled in layout; reveal counters use JS */

/* ------- REDUCED MOTION: honour the system setting fully ------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .ribbon__track { animation: none !important; transform: none !important; }
  .reveal, .reveal-stagger > * { opacity: 1 !important; transform: none !important; }
  .hero__frag .line span, .hero__sub, .hero__cta, .hero__paths { opacity: 1 !important; transform: none !important; }
}
