/* Animations */
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}100%{opacity:1;transform:translateY(0)}}
@keyframes slideLeft{0%{opacity:0;transform:translateX(24px)}100%{opacity:1;transform:translateX(0)}}
@keyframes ripple{0%{box-shadow:0 0 0 0 rgba(255,255,255,0.2)}70%{box-shadow:0 0 0 12px rgba(79,111,255,0)}100%{box-shadow:0 0 0 0 rgba(79,111,255,0)}}
/* Utility animation classes */
.ani-float{animation:floatY 6s ease-in-out infinite}
.ani-fade-up{animation:fadeUp .9s ease both}
.ani-slide-left{animation:slideLeft .9s ease both}
.btn.ripple:after{content:'';display:block;border-radius:999px;position:absolute;transform:scale(0);opacity:.6;pointer-events:none}
.btn:active:after{animation:ripple .6s ease}
/* Stagger helpers */
.stagger > *{opacity:0;transform:translateY(12px);animation:fadeUp .7s ease both}
.stagger > *:nth-child(1){animation-delay:.06s}
.stagger > *:nth-child(2){animation-delay:.12s}
.stagger > *:nth-child(3){animation-delay:.18s}
.stagger > *:nth-child(4){animation-delay:.24s}
