/* ============================================================
   UDAYNAGAR - Luxury Real Estate Animations & Text Reveal
   ============================================================ */

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

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

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

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

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

/* Masked Text Reveal (Editorial Architectural Slide-Up) */
@keyframes textRevealUp {
    0% {
        transform: translateY(105%);
        opacity: 0;
    }
    100% {
        transform: translateY(0);
        opacity: 1;
    }
}

@keyframes kenburnsZoom {
    0% {
        transform: scale(1);
    }
    50% {
        transform: scale(1.05);
    }
    100% {
        transform: scale(1);
    }
}

/* --- Entrance Animation Utilities --- */
.animate-fade-in {
    animation: fadeIn 0.9s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.animate-fade-in-up {
    animation: fadeInUp 0.9s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.kenburns-active {
    animation: kenburnsZoom 24s ease-in-out infinite alternate;
}

/* ============================================================
   TEXT REVEAL MASKING & SCROLL REVEALS
   ============================================================ */

/* The outer container clips the overflowing hidden text while preserving Gabriola font descenders */
.text-reveal-wrap {
    display: block;
    overflow: hidden;
    padding-top: 4px;
    padding-bottom: 12px;
    margin-bottom: -8px;
}

/* The inner text that slides up into view */
.text-reveal-item {
    display: inline-block;
    transform: translateY(115%);
    opacity: 0;
    transition: transform 1.1s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.8s ease;
    will-change: transform, opacity;
}

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

/* Hero Title Specific Reveal */
.hero-headline .text-reveal-item {
    animation: textRevealUp 1.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.hero-headline .text-reveal-item.delay-text-1 {
    animation-delay: 0.2s;
}
.hero-headline .text-reveal-item.delay-text-2 {
    animation-delay: 0.5s;
}

.hero-subtag {
    opacity: 0;
    animation: fadeInUp 1.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    animation-delay: 0.7s;
}

.hero-usp-row {
    opacity: 0;
    animation: fadeInUp 1.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    animation-delay: 0.9s;
}

.hero-actions {
    opacity: 0;
    animation: fadeInUp 1.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    animation-delay: 1.1s;
}

.hero-form-card {
    opacity: 0;
    animation: fadeInRight 1.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    animation-delay: 0.4s;
}

/* General Scroll Reveal Items (Fade In Up on Scroll) */
.reveal-item {
    opacity: 0;
    transform: translateY(35px);
    transition: opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1), transform 0.9s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: opacity, transform;
}

.reveal-item.reveal-left {
    transform: translateX(-40px);
}

.reveal-item.reveal-right {
    transform: translateX(40px);
}

.reveal-item.is-revealed {
    opacity: 1;
    transform: translate(0, 0);
}

/* Stagger Delays for Grid Cards & Elements */
.delay-1 { transition-delay: 0.12s; }
.delay-2 { transition-delay: 0.24s; }
.delay-3 { transition-delay: 0.36s; }
.delay-4 { transition-delay: 0.48s; }
.delay-5 { transition-delay: 0.60s; }
