/* Animations and Reveal Effects */

/* Scroll reveals */
.reveal-up {
    opacity: 0;
    transform: translateY(80px);
    /* Increased start distance */
    transition: opacity 1.4s cubic-bezier(0.25, 1, 0.5, 1), transform 1.4s cubic-bezier(0.25, 1, 0.5, 1);
    /* Slower and smoother */
    will-change: opacity, transform;
}

.reveal-up.is-revealed {
    opacity: 1;
    transform: translateY(0);
}

/* Delay modifiers */
/* Delay modifiers - INCREASED STAGGERING */
.delay-100 {
    transition-delay: 0.15s;
}

.delay-200 {
    transition-delay: 0.3s;
}

.delay-300 {
    transition-delay: 0.45s;
}

.delay-400 {
    transition-delay: 0.6s;
}

.delay-500 {
    transition-delay: 0.75s;
}

/* Image Mask Reveal */
.img-mask-reveal {
    position: relative;
    overflow: hidden;
}

.img-mask-reveal::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: var(--bg-warm);
    transform-origin: top;
    transition: transform 1.8s cubic-bezier(0.7, 0, 0.3, 1);
    /* Slower, more cinematic mask reveal */
    z-index: 1;
}

.img-mask-reveal.is-revealed::after {
    transform: scaleY(0);
}

/* Background Dark variant for mask reveal */
.bg-dark .img-mask-reveal::after {
    background-color: var(--bg-dark);
}

/* Parallax Container */
.parallax-container {
    overflow: hidden;
    position: relative;
}

.parallax-img {
    width: 100%;
    height: 120%;
    object-fit: cover;
    position: absolute;
    top: -10%;
    left: 0;
    will-change: transform;
}

/* Scale effect strictly on hover for cards */
.hover-scale-img {
    overflow: hidden;
    position: relative;
}

.hover-scale-img img {
    transform: scale(1);
    transition: transform var(--transition-slow);
}

.hover-scale-img:hover img {
    transform: scale(1.05);
}

/* Smooth Page Transitions Loading overlay */
.page-loader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: var(--bg-dark);
    z-index: 9999;
    display: flex;
    justify-content: center;
    align-items: center;
    transition: opacity 0.8s ease-in-out, visibility 0.8s;
}

.page-loader.hidden {
    opacity: 0;
    visibility: hidden;
}

.loader-logo {
    width: 220px;
    max-width: 60vw;
    height: auto;
    animation: pulse 2s infinite ease-in-out;
    filter: brightness(0) invert(1) drop-shadow(0 0 18px rgba(255, 255, 255, 0.35));
}

@keyframes pulse {
    0% {
        opacity: 0.5;
    }

    50% {
        opacity: 1;
    }

    100% {
        opacity: 0.5;
    }
}