/* Base animations */
@keyframes fadeIn {
    from { 
        opacity: 0; 
        transform: translateY(20px); 
    }
    to { 
        opacity: 1; 
        transform: translateY(0); 
    }
}

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

@keyframes checkmark {
    from { 
        transform: scale(0); 
        opacity: 0; 
    }
    to { 
        transform: scale(1); 
        opacity: 1; 
    }
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
    20%, 40%, 60%, 80% { transform: translateX(5px); }
}

/* Animation Classes */
.animate-fade-in {
    animation: fadeIn 0.6s ease-out;
}

.animate-slide-up {
    animation: slideUp 0.8s ease-out;
}

.animate-checkmark {
    animation: checkmark 0.5s ease-out 0.3s both;
}

.animate-shake {
    animation: shake 0.8s ease-in-out;
}

/* Animation Delays */
.delay-100 { animation-delay: 0.1s; }
.delay-200 { animation-delay: 0.2s; }
.delay-300 { animation-delay: 0.3s; }
.delay-400 { animation-delay: 0.4s; }
.delay-500 { animation-delay: 0.5s; }

/* Transition Effects */
.transition-all {
    transition: all 0.3s ease;
}

/* Keyframes for Navbar Mobile Menu */
@keyframes fadeInDown {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeOutUp {
    from {
        opacity: 1;
        transform: translateY(0);
    }
    to {
        opacity: 0;
        transform: translateY(-10px);
    }
}

/* Animation Utility Classes */
.animate-fade-in-down {
    animation: fadeInDown 0.3s ease-out forwards;
}

.animate-fade-out-up {
    animation: fadeOutUp 0.3s ease-out forwards;
}

/* Header load animation */
.animate-header-load {
  animation: fadeInDown 0.6s ease-out 0.1s forwards; /* Uses existing fadeInDown */
  opacity: 0; /* Start hidden */
}

.confetti-particle {
    position: absolute;
    opacity: 0;
    animation-timing-function: ease-out;
}

@keyframes confetti-fall {
    0% {
        opacity: 1;
        transform: translateY(-100vh) rotate(0deg);
    }
    100% {
        opacity: 1;
        transform: translateY(100vh) rotate(360deg);
    }
}