/* Improved animations */
.animate-fade-in { animation: fadeIn 0.8s ease-out; }
.animate-slide-up { animation: slideUp 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.animate-slide-in-left { animation: slideInLeft 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.animate-slide-in-right { animation: slideInRight 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.animate-bounce-gentle { animation: bounceGentle 2s ease-in-out infinite; }

/* Floating elements */
.float-element {
    animation: float 6s ease-in-out infinite;
}

/* Glow effects */
.glow-blue {
    box-shadow: 0 0 20px rgba(37, 99, 235, 0.3);
    animation: glow 2s ease-in-out infinite alternate;
}

/* Staggered animations */
.stagger-animation > * {
    opacity: 0;
    animation: fadeInUp 0.8s ease-out forwards;
}
.stagger-animation > *:nth-child(1) { animation-delay: 0.1s; }
.stagger-animation > *:nth-child(2) { animation-delay: 0.2s; }
.stagger-animation > *:nth-child(3) { animation-delay: 0.3s; }
.stagger-animation > *:nth-child(4) { animation-delay: 0.4s; }
.stagger-animation > *:nth-child(5) { animation-delay: 0.5s; }

/* Keyframe definitions */
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes slideUp {
    from { 
        opacity: 0; 
        transform: translateY(30px); 
    }
    to { 
        opacity: 1; 
        transform: translateY(0); 
    }
}

@keyframes slideInLeft {
    from { 
        opacity: 0; 
        transform: translateX(-30px); 
    }
    to { 
        opacity: 1; 
        transform: translateX(0); 
    }
}

@keyframes slideInRight {
    from { 
        opacity: 0; 
        transform: translateX(30px); 
    }
    to { 
        opacity: 1; 
        transform: translateX(0); 
    }
}

@keyframes fadeInUp {
    from { 
        opacity: 0; 
        transform: translateY(20px); 
    }
    to { 
        opacity: 1; 
        transform: translateY(0); 
    }
}

@keyframes float {
    0%, 100% { transform: translateY(0px); }
    50% { transform: translateY(-20px); }
}

@keyframes glow {
    from { box-shadow: 0 0 20px rgba(37, 99, 235, 0.3); }
    to { box-shadow: 0 0 30px rgba(37, 99, 235, 0.6); }
}

@keyframes bounceGentle {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-5px); }
}

@keyframes gradientShift {
    0% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}

@keyframes shimmer {
    0% { background-position: -1000px 0; }
    100% { background-position: 1000px 0; }
}

@keyframes floatingIcon {
    0%, 100% { transform: translateY(0px) rotate(0deg); }
    25% { transform: translateY(-5px) rotate(2deg); }
    50% { transform: translateY(-10px) rotate(0deg); }
    75% { transform: translateY(-5px) rotate(-2deg); }
}

@keyframes pulseGlow {
    0%, 100% {
        opacity: 0.3;
        transform: scale(0.95);
    }
    50% {
        opacity: 0.6;
        transform: scale(1.05);
    }
}

/* Accessibility: Respect reduced motion preferences */
@media (prefers-reduced-motion: reduce) {
    .animate-fade-in,
    .animate-slide-up,
    .animate-slide-in-left,
    .animate-slide-in-right,
    .animate-bounce-gentle,
    .float-element,
    .glow-blue,
    .stagger-animation > * {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
    }
}

/* Comparison visual elements animations */
@keyframes floatingIcon {
    0%, 100% { 
        transform: translateY(0px) rotate(0deg); 
        opacity: 0.4;
    }
    50% { 
        transform: translateY(-12px) rotate(2deg); 
        opacity: 0.7;
    }
}

@keyframes pulseGlow {
    0%, 100% { 
        transform: scale(1); 
        opacity: 0.4;
    }
    50% { 
        transform: scale(1.1); 
        opacity: 0.8;
    }
}
