/* Scroll-reveal initial state — js/animations.js toggles .in via IntersectionObserver */
.rv{
  opacity:0;
  transform:translateY(28px);
  transition:opacity .9s var(--ease), transform .9s var(--ease);
}
.rv.in{
  opacity:1;
  transform:none;
}

/* Hero text-lift initial state */
.hero-kicker,
.hero-sub{
  opacity:0;
  animation:rise .9s var(--ease) .1s forwards;
}
.hero-sub{ animation-delay:.6s; }
@keyframes rise{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:none; } }

h1 .ln{ display:block; overflow:hidden; padding-bottom:.16em; margin-bottom:-.16em; }
h1 .ln span{ display:block; transform:translateY(110%); animation:lift 1.1s var(--ease) forwards; }
h1 .ln:nth-child(1) span{ animation-delay:.18s; }
h1 .ln:nth-child(2) span{ animation-delay:.3s; }
h1 .ln:nth-child(3) span{ animation-delay:.42s; }
@keyframes lift{ to{ transform:translateY(0); } }

/* Disable all motion for users who prefer it */
@media (prefers-reduced-motion: reduce){
  *,
  *::before,
  *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
  .rv{ opacity:1 !important; transform:none !important; }
  .hero-kicker,
  .hero-sub{ opacity:1 !important; transform:none !important; }
  h1 .ln span{ transform:none !important; }
  .ticker__inner,
  .marquee__inner,
  .ring-spin,
  .ring-spin-rev,
  .hero-kicker .dot,
  .tag--active::before{ animation:none !important; }
}
