/* Lottie-flavoured CSS motion: layered easing, multi-step keyframes, soft loops */

/* Reveal-on-scroll */
.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity var(--dur-slow) var(--ease-out),
              transform var(--dur-slow) var(--ease-out);
  transition-delay: var(--reveal-delay, 0ms);
}
.reveal.is-in {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger inside a container */
.reveal-stagger > * {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 600ms var(--ease-out),
              transform 600ms var(--ease-out);
}
.reveal-stagger.is-in > *:nth-child(1) { transition-delay: 60ms; }
.reveal-stagger.is-in > *:nth-child(2) { transition-delay: 140ms; }
.reveal-stagger.is-in > *:nth-child(3) { transition-delay: 220ms; }
.reveal-stagger.is-in > *:nth-child(4) { transition-delay: 300ms; }
.reveal-stagger.is-in > *:nth-child(5) { transition-delay: 380ms; }
.reveal-stagger.is-in > *:nth-child(6) { transition-delay: 460ms; }
.reveal-stagger.is-in > *:nth-child(7) { transition-delay: 540ms; }
.reveal-stagger.is-in > *:nth-child(8) { transition-delay: 620ms; }
.reveal-stagger.is-in > * {
  opacity: 1;
  transform: translateY(0);
}

/* Hero statement type-in (multi-step ease, mimics a Lottie text fill) */
@keyframes type-rise {
  0%   { opacity: 0; transform: translateY(28px) skewY(2deg); }
  60%  { opacity: 1; transform: translateY(-2px) skewY(0); }
  100% { opacity: 1; transform: translateY(0); }
}

.hero__statement .line {
  display: block;
  opacity: 0;
  animation: type-rise 900ms var(--ease-out) forwards;
}
.hero__statement .line:nth-child(1) { animation-delay: 120ms; }
.hero__statement .line:nth-child(2) { animation-delay: 280ms; }
.hero__statement .line:nth-child(3) { animation-delay: 440ms; }

/* Underline accent grow (timed with last line) */
.hero__statement em::after {
  transform-origin: left center;
  transform: scaleX(0);
  animation: line-grow 700ms var(--ease-out) 800ms forwards;
}

@keyframes line-grow {
  0%   { transform: scaleX(0); }
  60%  { transform: scaleX(1.04); }
  100% { transform: scaleX(1); }
}

/* Hero meta dot pulse */
.hero__meta .dot {
  animation: dot-pulse 2400ms var(--ease-in-out) infinite;
}

@keyframes dot-pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%      { transform: scale(1.6); opacity: 0.4; }
}

/* Decorative ring slow rotation */
.shape--ring {
  animation: ring-spin 38s linear infinite;
}

@keyframes ring-spin {
  to { transform: rotate(360deg); }
}

/* Decorative bar drift */
.shape--bar {
  animation: bar-drift 6s var(--ease-in-out) infinite alternate;
}

@keyframes bar-drift {
  from { transform: translateX(0); }
  to   { transform: translateX(-22px); }
}

/* Card glyph subtle float */
.card__glyph {
  animation: glyph-float 7s var(--ease-in-out) infinite alternate;
}

@keyframes glyph-float {
  from { transform: translate(0, 0) rotate(0deg); }
  to   { transform: translate(-6px, -6px) rotate(8deg); }
}

/* Cap rail row entrance */
.cap-rail__row {
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 700ms var(--ease-out),
              transform 700ms var(--ease-out);
}
.cap-rail.is-in .cap-rail__row { opacity: 1; transform: translateY(0); }
.cap-rail.is-in .cap-rail__row:nth-child(1) { transition-delay: 60ms; }
.cap-rail.is-in .cap-rail__row:nth-child(2) { transition-delay: 140ms; }
.cap-rail.is-in .cap-rail__row:nth-child(3) { transition-delay: 220ms; }
.cap-rail.is-in .cap-rail__row:nth-child(4) { transition-delay: 300ms; }
.cap-rail.is-in .cap-rail__row:nth-child(5) { transition-delay: 380ms; }
.cap-rail.is-in .cap-rail__row:nth-child(6) { transition-delay: 460ms; }

/* Stats counter feel: subtle on-load shimmer */
.stat__num {
  background: linear-gradient(90deg, var(--ink) 0%, var(--ink) 40%, var(--primary) 50%, var(--ink) 60%, var(--ink) 100%);
  background-size: 220% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: shimmer 6s var(--ease-in-out) infinite;
}

@keyframes shimmer {
  0%, 100% { background-position: 100% 0; }
  50%      { background-position: 0 0; }
}

/* Reduce motion for users who request it */
@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;
  }
  .reveal, .reveal-stagger > *, .cap-rail__row {
    opacity: 1 !important;
    transform: none !important;
  }
  .hero__statement .line { opacity: 1; }
  .hero__statement em::after { transform: scaleX(1); }
}
