/* Active motion system */
:root { --ease-spring: cubic-bezier(.16,1,.3,1); }
.reveal { opacity:0; transform:translateY(42px) scale(.98); transition:opacity .8s var(--ease-spring), transform .8s var(--ease-spring); }
.reveal.revealed { opacity:1; transform:none; }
.reveal-stagger > * { opacity:0; transform:translateY(28px); transition:opacity .7s var(--ease-spring),transform .7s var(--ease-spring); transition-delay:calc(var(--i,0) * 90ms); }
.reveal-stagger.revealed > *, .reveal-stagger > *.revealed { opacity:1; transform:none; }
@keyframes fadeUp { from{opacity:0;transform:translateY(35px)} to{opacity:1;transform:none} }
@keyframes float { 0%,100%{transform:translate3d(0,0,0)} 50%{transform:translate3d(0,-16px,0)} }
@keyframes pulseGlow { 0%,100%{box-shadow:0 0 0 0 rgba(34,211,238,.18)} 50%{box-shadow:0 0 0 14px rgba(34,211,238,0)} }
@keyframes shimmer { from{background-position:-200% 0} to{background-position:200% 0} }
@keyframes scan { from{transform:translateY(-100%)} to{transform:translateY(100vh)} }
.fade-up { animation:fadeUp .9s var(--ease-spring) both; }
.fade-up--delay-1{animation-delay:.15s}.fade-up--delay-2{animation-delay:.3s}
