/* ==========================================================================
   Animations — Scroll Reveals, Page Loader & Micro-interactions
   ========================================================================== */

/* --- Fade In Up --- */
/* Elements are visible by default — animation is progressive enhancement only */
.fade-in-up {
    opacity: 1;
    transform: translateY(0);
}
/* JS adds 'animate-ready' class, then IntersectionObserver adds 'visible' */
.fade-in-up.animate-ready {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}
.fade-in-up.animate-ready.visible {
    opacity: 1;
    transform: translateY(0);
}
.delay-1 { transition-delay: 0.15s; }
.delay-2 { transition-delay: 0.30s; }
.delay-3 { transition-delay: 0.45s; }
.delay-4 { transition-delay: 0.60s; }

/* --- Page Loader Removed for stability --- */

/* --- Pulse for cart badge --- */
@keyframes pulse {
    0%   { transform: scale(1); }
    50%  { transform: scale(1.4); }
    100% { transform: scale(1); }
}
.pulse-once { animation: pulse 0.5s ease; }

/* --- Skeleton Loader --- */
@keyframes shimmer {
    0%   { background-position: -468px 0; }
    100% { background-position: 468px 0; }
}
.skeleton {
    background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
    background-size: 936px 100%;
    animation: shimmer 1.5s infinite linear;
    border-radius: 4px;
}

/* --- Image zoom cursor --- */
.zoom-enabled { cursor: zoom-in; overflow: hidden; }
.zoom-enabled img { transition: transform 0.3s ease; }
