/* Animations for fade, scale, pulse, gradient, etc. */
.fade-up { opacity: 0; transform: translateY(40px); transition: all 0.7s cubic-bezier(0.16, 1, 0.3, 1); }
.fade-up.visible { opacity: 1; transform: translateY(0); }
.fade-left { opacity: 0; transform: translateX(40px); transition: all 0.7s ease; }
.fade-left.visible { opacity: 1; transform: translateX(0); }
.scale-in { opacity: 0; transform: scale(0.9); transition: all 0.5s ease; }
.scale-in.visible { opacity: 1; transform: scale(1); }
@keyframes countUp { from { opacity: 0; } to { opacity: 1; } }
@keyframes pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(37,211,102,0.7); } 70% { box-shadow: 0 0 0 15px rgba(37,211,102,0); } }
@keyframes gradientFlow { 0%,100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
.stagger-children > * { animation-delay: calc(var(--i, 0) * 0.1s); }
