/*
Animations - Keyframe animations for Snacked AI
Includes float, wave, wobble, and other playful animations
*/

/* ========== FLOAT ANIMATION ========== */
/* Makes elements gently float up and down with slight rotation */
@keyframes float {
    0%, 100% {
        transform: translateY(0px) rotate(0deg);
    }
    50% {
        transform: translateY(-20px) rotate(2deg);
    }
}

/* Variation with opposite direction */
@keyframes float-reverse {
    0%, 100% {
        transform: translateY(-10px) rotate(0deg);
    }
    50% {
        transform: translateY(10px) rotate(-2deg);
    }
}

/* ========== WAVE ANIMATION ========== */
/* Creates a wave-like horizontal and vertical movement */
@keyframes wave {
    0%, 100% {
        transform: translateX(0px) translateY(0px);
    }
    25% {
        transform: translateX(10px) translateY(-10px);
    }
    50% {
        transform: translateX(0px) translateY(0px);
    }
    75% {
        transform: translateX(-10px) translateY(10px);
    }
}

/* ========== WOBBLE ANIMATION ========== */
/* Gentle wobble effect with scale */
@keyframes wobble {
    0%, 100% {
        transform: translateY(0) scaleY(1);
    }
    25% {
        transform: translateY(-2%) scaleY(1.02);
    }
    50% {
        transform: translateY(1%) scaleY(0.98);
    }
    75% {
        transform: translateY(-1%) scaleY(1.01);
    }
}

/* ========== ROTATION ANIMATIONS ========== */
/* Slow continuous rotation */
@keyframes rotate-slow {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

/* Gentle back and forth rotation */
@keyframes rotate-wiggle {
    0%, 100% {
        transform: rotate(-5deg);
    }
    50% {
        transform: rotate(5deg);
    }
}

/* ========== PULSE ANIMATION ========== */
/* Subtle scale pulse effect */
@keyframes pulse {
    0%, 100% {
        transform: scale(1);
        opacity: 1;
    }
    50% {
        transform: scale(1.05);
        opacity: 0.9;
    }
}

/* ========== BOUNCE ANIMATION ========== */
/* Bouncy entrance effect */
@keyframes bounce-in {
    0% {
        transform: scale(0.8);
        opacity: 0;
    }
    50% {
        transform: scale(1.05);
    }
    100% {
        transform: scale(1);
        opacity: 1;
    }
}

/* ========== SLIDE ANIMATIONS ========== */
/* Slide in from bottom */
@keyframes slide-up {
    from {
        transform: translateY(30px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

/* Slide in from left */
@keyframes slide-right {
    from {
        transform: translateX(-30px);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

/* ========== FADE ANIMATIONS ========== */
/* Simple fade in */
@keyframes fade-in {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

/* ========== SHIMMER EFFECT ========== */
/* Shimmer for loading states or highlights */
@keyframes shimmer {
    0% {
        background-position: -1000px 0;
    }
    100% {
        background-position: 1000px 0;
    }
}

/* ========== HIGHLIGHT BOX ANIMATION ========== */
/* Gentle rotation for highlight boxes */
@keyframes highlight-float {
    0%, 100% {
        transform: rotate(-1deg) translateY(0);
    }
    50% {
        transform: rotate(1deg) translateY(-2px);
    }
}

/* ========== UTILITY CLASSES ========== */
/* Apply animations via classes */

.animate-float {
    animation: float 6s ease-in-out infinite;
}

.animate-float-reverse {
    animation: float-reverse 7s ease-in-out infinite;
}

.animate-wave {
    animation: wave 8s ease-in-out infinite;
}

.animate-wobble {
    animation: wobble 8s ease-in-out infinite;
}

.animate-rotate-slow {
    animation: rotate-slow 20s linear infinite;
}

.animate-pulse {
    animation: pulse 3s ease-in-out infinite;
}

.animate-bounce-in {
    animation: bounce-in 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

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

.animate-fade-in {
    animation: fade-in 0.5s ease-out;
}

/* Animation delays for staggered effects */
.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;
}

