/* Scroll Animation Styles */

/* Base animation states - elements start hidden */
.fade-in,
.fade-in-up,
.fade-in-left,
.fade-in-right,
.fade-in-scale {
    opacity: 0;
    animation-duration: 0.8s;
    animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    animation-fill-mode: both;
}

/* Triggered when element enters viewport */
.fade-in.animate-in {
    animation-name: fadeIn;
}

.fade-in-up.animate-in {
    animation-name: fadeInUp;
}

.fade-in-left.animate-in {
    animation-name: fadeInLeft;
}

.fade-in-right.animate-in {
    animation-name: fadeInRight;
}

.fade-in-scale.animate-in {
    animation-name: fadeInScale;
}

/* Keyframe Animations */
@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

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

@keyframes fadeInLeft {
    from {
        opacity: 0;
        transform: translateX(-30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes fadeInRight {
    from {
        opacity: 0;
        transform: translateX(30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

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

/* Header scroll effect */
header {
    transition:
        box-shadow 0.3s ease,
        background-color 0.3s ease;
}

header.scrolled {
    box-shadow: 0 2px 12px rgba(61, 47, 31, 0.08);
    background-color: rgba(255, 254, 249, 0.98);
}

/* Reduce motion for accessibility */
@media (prefers-reduced-motion: reduce) {
    .fade-in,
    .fade-in-up,
    .fade-in-left,
    .fade-in-right,
    .fade-in-scale {
        animation: none;
        opacity: 1;
        transform: none;
    }

    header {
        transition: none;
    }
}

/* Ensure animations work smoothly on mobile */
@media (max-width: 768px) {
    .fade-in,
    .fade-in-up,
    .fade-in-left,
    .fade-in-right,
    .fade-in-scale {
        animation-duration: 0.6s;
    }

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

    @keyframes fadeInLeft {
        from {
            opacity: 0;
            transform: translateX(-20px);
        }
        to {
            opacity: 1;
            transform: translateX(0);
        }
    }

    @keyframes fadeInRight {
        from {
            opacity: 0;
            transform: translateX(20px);
        }
        to {
            opacity: 1;
            transform: translateX(0);
        }
    }
}

/* Gallery Image Fade Animations */
.gallery-slot img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.gallery-slot img.gallery-fade-out {
    animation: galleryFadeOut 1.2s ease-out forwards;
}

.gallery-slot img.gallery-fade-in {
    animation: galleryFadeIn 1.2s ease-in forwards;
}

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

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