/* ========== GLOBAL SCROLL ANIMATIONS ========== */

/* Page Load Animations */
body {
    opacity: 0;
    animation: fadeInBody 0.4s ease-out 0.1s forwards;
}

@keyframes fadeInBody {
    to {
        opacity: 1;
    }
}

/* Hero Initial Load Animations - VARIED EFFECTS */
.page-load-animate {
    opacity: 0;
}

.page-load-animate.loaded {
    animation-duration: 0.8s;
    animation-fill-mode: forwards;
    animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
}

/* Slide from Bottom */
.load-slide-up {
    transform: translateY(30px);
}

.load-slide-up.loaded {
    animation-name: slideInUp;
}

/* Slide from Left */
.load-slide-right {
    transform: translateX(-40px);
}

.load-slide-right.loaded {
    animation-name: slideInRight;
}

/* Slide from Right */
.load-slide-left {
    transform: translateX(40px);
}

.load-slide-left.loaded {
    animation-name: slideInLeft;
}

/* Zoom In */
.load-zoom {
    transform: scale(0.9);
}

.load-zoom.loaded {
    animation-name: zoomIn;
}

/* Bounce In */
.load-bounce {
    transform: scale(0.3);
}

.load-bounce.loaded {
    animation-name: bounceIn;
    animation-duration: 1s;
}

/* Fade In Only */
.load-fade {
    opacity: 0;
}

.load-fade.loaded {
    animation-name: fadeIn;
}

/* Stagger Delays */
.load-delay-1 {
    animation-delay: 0.15s;
}

.load-delay-2 {
    animation-delay: 0.3s;
}

.load-delay-3 {
    animation-delay: 0.45s;
}

.load-delay-4 {
    animation-delay: 0.6s;
}

.load-delay-5 {
    animation-delay: 0.75s;
}

/* Keyframe Animations */
@keyframes slideInUp {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideInRight {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes slideInLeft {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes zoomIn {
    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes bounceIn {
    0% {
        opacity: 0;
        transform: scale(0.3);
    }

    50% {
        transform: scale(1.05);
    }

    70% {
        transform: scale(0.95);
    }

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

@keyframes fadeIn {
    to {
        opacity: 1;
    }
}

/* Fix for preserving layout */
.page-load-animate,
.animate-on-scroll {
    position: relative;
}

/* Prevent layout shift for absolute positioned elements */
.heritage-ornament.page-load-animate {
    position: absolute !important;
}

/* Animation Utilities */
.animate-on-scroll {
    opacity: 0;
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

.animate-on-scroll.animated {
    opacity: 1;
    transform: translateY(0) !important;
}

/* Fade In */
.fade-in {
    opacity: 0;
}

.fade-in.animated {
    opacity: 1;
}

/* Slide Up */
.slide-up {
    transform: translateY(30px);
}

.slide-up.animated {
    transform: translateY(0);
}

/* Slide Left */
.slide-left {
    transform: translateX(30px);
}

.slide-left.animated {
    transform: translateX(0);
}

/* Slide Right */
.slide-right {
    transform: translateX(-30px);
}

.slide-right.animated {
    transform: translateX(0);
}

/* Scale In */
.scale-in {
    transform: scale(0.95);
    opacity: 0;
}

.scale-in.animated {
    transform: scale(1);
    opacity: 1;
}

/* Stagger Delays for Lists/Grids */
.animate-on-scroll.delay-1 {
    transition-delay: 0.1s;
}

.animate-on-scroll.delay-2 {
    transition-delay: 0.2s;
}

.animate-on-scroll.delay-3 {
    transition-delay: 0.3s;
}

.animate-on-scroll.delay-4 {
    transition-delay: 0.4s;
}

.animate-on-scroll.delay-5 {
    transition-delay: 0.5s;
}

.animate-on-scroll.delay-6 {
    transition-delay: 0.6s;
}

/* Smooth Transitions */
.animate-fast {
    transition-duration: 0.3s !important;
}

.animate-slow {
    transition-duration: 1s !important;
}

/* Reduced Motion for Accessibility */
@media (prefers-reduced-motion: reduce) {
    .animate-on-scroll {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}