html {
    scroll-behavior: smooth;
}
/* Micro estilos adicionales */
.card-hover {
    transition: transform .28s cubic-bezier(.2, .8, .2, 1), box-shadow .28s;
}

.card-hover:hover {
    transform: translateY(-6px);
    box-shadow: 0 18px 40px rgba(20, 40, 80, 0.12);
}

.pulse-btn {
    transition: transform .18s;
}

.pulse-btn:active {
    transform: scale(.98);
}

.cart-badge-anim {
    animation: cartPulse .36s ease;
}

@keyframes cartPulse {
    0% {
        transform: scale(1);
    }

    50% {
        transform: scale(1.25);
    }

    100% {
        transform: scale(1);
    }
}

/* loader pequeño */
.skeleton {
    background: linear-gradient(90deg, #f3f4f6, #e6eefc, #f3f4f6);
    background-size: 200% 100%;
    animation: shine 1.2s linear infinite;
}

@keyframes shine {
    0% {
        background-position: 200% 0
    }

    100% {
        background-position: -200% 0
    }
}


@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes zoomIn {
    from {
        transform: scale(0.85);
        opacity: 0;
    }

    to {
        transform: scale(1);
        opacity: 1;
    }
}

.animate-fadeIn {
    animation: fadeIn .25s ease-out;
}

.animate-zoomIn {
    animation: zoomIn .25s ease-out;
}