@tailwind base;
@tailwind components;
@tailwind utilities;

.z-60 {
    z-index: 60;
}

.bottom-5r {
    bottom: 5rem;
}

.text-base {
    font-size: 1rem;
}

.w-90 {
    width: 90%;
}

/* ✅ Scrollbar propre et confinée */
.custom-scrollbar::-webkit-scrollbar {
    width: 6px;
}

.custom-scrollbar::-webkit-scrollbar-track {
    background: transparent;
}


@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(10px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideIn {
    from {
        transform: translateX(100%);
    }

    to {
        transform: translateX(0);
    }
}


@keyframes fadeSlideUp {
    0% {
        opacity: 0;
        transform: translateY(10px);
    }

    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

.animate-fadeSlideUp {
    animation: fadeSlideUp 0.4s ease-out both;
}

.animate-fadeIn {
    animation: fadeIn 0.6s ease-out forwards;
}

.animate-slideIn {
    animation: slideIn 0.6s ease-out forwards;
}

@keyframes shake-modal {

    0%,
    100% {
        transform: translateX(0);
    }

    20% {
        transform: translateX(-8px);
    }

    40% {
        transform: translateX(8px);
    }

    60% {
        transform: translateX(-6px);
    }

    80% {
        transform: translateX(6px);
    }
}

.shake {
    animation: shake-modal 0.4s ease-in-out;
}

.dish-card {
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.dish-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
}

.category-tab {
    position: relative;
}


.quantity-selector button {
    transition: all 0.2s ease;
}

.quantity-selector button:hover {
    background-color: #f0f0f0;
}

.scroll-hidden::-webkit-scrollbar {
    display: none;
}

.scroll-hidden {
    -ms-overflow-style: none;
    scrollbar-width: none;
}

.backdrop-blur {
    backdrop-filter: blur(5px);
}

@keyframes infinityScroll {
    0% {
        transform: translateX(0%);
    }

    100% {
        transform: translateX(-50%);
    }
}

.animate-infinity {
    display: inline-block;
    white-space: nowrap;
    animation: infinityScroll 40s linear infinite;
}

/* 🌈 Gradient animé avec mouvement fluide et profondeur */
@keyframes gradientWave {
    0% {
        background-position: 0% 50%;
    }

    50% {
        background-position: 100% 50%;
    }

    100% {
        background-position: 0% 50%;
    }
}


.animate-utensils {
    animation: iconBounceGlow 1.3s ease-out forwards;
}

/* ✨ Titre avec slide + fade élégant */
@keyframes slideFadeTitle {
    0% {
        opacity: 0;
        transform: translateY(30px);
    }

    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

.animate-title {
    animation: slideFadeTitle 1s ease forwards;
    animation-delay: 0.8s;
    opacity: 0;
}

/* Bouton d'entrée avec zoom subtil */
@keyframes popInButton {
    0% {
        transform: scale(0.8);
        opacity: 0;
    }

    100% {
        transform: scale(1);
        opacity: 1;
    }
}

.animate-cta {
    animation: popInButton 0.6s ease-out forwards;
    animation-delay: 1.4s;
    opacity: 0;
}

@keyframes fadeZoom {
    0% {
        opacity: 0;
        transform: scale(0.95);
    }

    100% {
        opacity: 1;
        transform: scale(1);
    }
}

.animate-fadeIn {
    animation: fadeZoom 0.3s ease-out forwards;
}

.animate-clickPulse {
    animation: clickPulse 0.3s ease;
}

.flip-horizontal {
    display: inline-block;
    -webkit-transform: scaleX(-1);
    transform: scaleX(-1);
}