@keyframes scrollLine { 0% { transform: translateY(-100%); } 50%, 100% { transform: translateY(100%); } }
@keyframes panelIn { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }
@keyframes marquee { to { transform: translateX(-50%); } }
@keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-9px); } }
@keyframes growLine { from { transform: scaleY(.15); } to { transform: scaleY(1); } }
@keyframes loaderBars { from { transform: scaleY(.35); opacity: .45; } to { transform: scaleY(1); opacity: 1; } }
@keyframes dash { to { stroke-dashoffset: 0; } }

.reveal { opacity: 0; transform: translateY(28px); transition: opacity .8s var(--ease), transform .8s var(--ease); }
.reveal.is-visible { opacity: 1; transform: translateY(0); }
.stagger > * { opacity: 0; transform: translateY(24px); transition: opacity .7s var(--ease), transform .7s var(--ease); }
.stagger.is-visible > * { opacity: 1; transform: translateY(0); }
.stagger.is-visible > *:nth-child(2) { transition-delay: .08s; }
.stagger.is-visible > *:nth-child(3) { transition-delay: .16s; }
.stagger.is-visible > *:nth-child(4) { transition-delay: .24s; }
.stagger.is-visible > *:nth-child(5) { transition-delay: .32s; }
.stagger.is-visible > *:nth-child(6) { transition-delay: .4s; }
.stagger.is-visible > *:nth-child(7) { transition-delay: .48s; }
.stagger.is-visible > *:nth-child(8) { transition-delay: .56s; }

.hero-copy > * { opacity: 0; transform: translateY(22px); animation: heroIn .8s var(--ease) forwards; }
.hero-copy > *:nth-child(2) { animation-delay: .1s; }
.hero-copy > *:nth-child(3) { animation-delay: .2s; }
.hero-copy > *:nth-child(4) { animation-delay: .3s; }
.hero-copy > *:nth-child(5) { animation-delay: .4s; }
.hero-visual { opacity: 0; transform: scale(.96); animation: visualIn 1s .25s var(--ease) forwards; }
.growth-lines span { animation: growLine 1s var(--ease) both; }
.growth-lines span:nth-child(2) { animation-delay: .12s; }.growth-lines span:nth-child(3) { animation-delay: .24s; }.growth-lines span:nth-child(4) { animation-delay: .36s; }
.floating-card { animation: float 5s ease-in-out infinite; }
.floating-card--two { animation-delay: -1.5s; }.floating-card--three { animation-delay: -3s; }
@keyframes heroIn { to { opacity: 1; transform: translateY(0); } }
@keyframes visualIn { to { opacity: 1; transform: scale(1); } }

.diagram-path { stroke-dasharray: 1200; stroke-dashoffset: 1200; }
.framework-diagram.is-visible .diagram-path { animation: dash 2.2s var(--ease) forwards; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; transition-delay: 0ms !important; }
  .reveal, .stagger > *, .hero-copy > *, .hero-visual { opacity: 1 !important; transform: none !important; }
  .promise-track { animation: none !important; }
  .site-update-badge span { animation: none !important; }
}
