@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}
@keyframes glowFloat{0%,100%{transform:translate(0,0)}50%{transform:translate(16px,-18px)}}
@keyframes orbitSpin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes badgeFloat{0%,100%{translate:0 0}50%{translate:0 -9px}}
@keyframes orbFloat{0%,100%{translate:0 0}50%{translate:0 -15px}}
@keyframes tickerScroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes coreFloat{0%,100%{translate:0 0}50%{translate:0 -10px}}
.pulse{animation:pulse 2s ease-in-out infinite}
.hero-glow{animation:glowFloat 7s ease-in-out infinite}
.ring-one{animation:orbitSpin 32s linear infinite}
.ring-two{animation:orbitSpin 40s linear infinite reverse}
.hero-core{animation:coreFloat 6s ease-in-out infinite}
.float-card{animation:badgeFloat 5s ease-in-out infinite}
.float-card-bottom{animation-delay:1.2s}
.hero-orb{animation:orbFloat 4.5s ease-in-out infinite}
.ticker-track{animation:tickerScroll 34s linear infinite}
[data-reveal]{opacity:0;transform:translateY(34px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1)}
[data-reveal].is-visible{opacity:1;transform:translateY(0)}
.feature-card[data-reveal]:nth-child(2),.news-card[data-reveal]:nth-child(2){transition-delay:.12s}
.feature-card[data-reveal]:nth-child(3){transition-delay:.22s}
@media(prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transform:none;transition:none}.ticker-track,.hero-core,.hero-glow,.ring-one,.ring-two,.float-card,.hero-orb,.pulse{animation:none}}
