/*
  Keyframes + scroll-reveal utility
  ----------------------------------
  Every @keyframes used by components/layout lives here so motion is
  easy to audit or disable in one place. The .reveal class is toggled
  to .reveal.visible by js/modules/reveal.js via IntersectionObserver.
*/

@keyframes pulseRing{0%{opacity:.8;transform:scale(.6);}100%{opacity:0;transform:scale(1.8);}}

@keyframes float1{0%{transform:translate(0,0) scale(1);}100%{transform:translate(70px,50px) scale(1.15);}}
@keyframes float2{0%{transform:translate(0,0) scale(1);}100%{transform:translate(-60px,40px) scale(1.1);}}
@keyframes float3{0%{transform:translate(0,0) scale(1);}100%{transform:translate(40px,-40px) scale(.9);}}

@keyframes floatChip{0%,100%{transform:translateY(0);}50%{transform:translateY(-10px);}}

@keyframes scrollMarquee{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}

@keyframes waPing{0%{opacity:.7;transform:scale(1);}100%{opacity:0;transform:scale(1.7);}}

.reveal{opacity:0;transform:translateY(30px);transition:opacity .7s cubic-bezier(.2,.8,.2,1), transform .7s cubic-bezier(.2,.8,.2,1);}
.reveal.visible{opacity:1;transform:translateY(0);}
