@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes slideUp { from { transform: translateY(14px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
@keyframes spin { from { transform: rotate(0); } to { transform: rotate(360deg); } }
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: .5; } }
.page-enter { animation: fadeIn .28s ease-out; }.animate-fade-in { animation: fadeIn .3s ease-out; }.animate-slide-up { animation: slideUp .35s ease-out both; }.animate-pulse { animation: pulse 1.8s infinite; }
.stagger-1 { animation-delay: .05s; }.stagger-2 { animation-delay: .1s; }.stagger-3 { animation-delay: .15s; }.stagger-4 { animation-delay: .2s; }.stagger-5 { animation-delay: .25s; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; } }
