.animate-fade-in { animation: anim-fade-in 0.25s ease both; }
.animate-fade-in-up { animation: anim-fade-in-up 0.3s ease both; }
.animate-fade-in-scale { animation: anim-fade-in-scale 0.25s ease both; }
.animate-slide-up { animation: slide-up 0.3s cubic-bezier(0.4, 0, 0.2, 1) both; }
.animate-pulse { animation: anim-pulse 2s infinite; }
.animate-shake { animation: anim-shake 0.4s ease; }
.animate-bounce { animation: anim-bounce 0.5s ease; }

@keyframes anim-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes anim-fade-in-up { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
@keyframes anim-fade-in-scale { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }
@keyframes anim-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.03); } }
@keyframes anim-shake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-4px); } 75% { transform: translateX(4px); } }
@keyframes anim-bounce { 0% { transform: translateY(0); } 50% { transform: translateY(-8px); } 100% { transform: translateY(0); } }
@keyframes confetti-fall { 0% { transform: translateY(-100vh) rotate(0deg); opacity: 1; } 100% { transform: translateY(100vh) rotate(720deg); opacity: 0; } }

.stagger-1 { animation-delay: 0.03s; }
.stagger-2 { animation-delay: 0.06s; }
.stagger-3 { animation-delay: 0.09s; }
.stagger-4 { animation-delay: 0.12s; }
.stagger-5 { animation-delay: 0.15s; }
.stagger-6 { animation-delay: 0.18s; }
.stagger-7 { animation-delay: 0.21s; }
.stagger-8 { animation-delay: 0.24s; }
