/* SMOOTH SCROLL BEHAVIOR */
html {
    scroll-behavior: smooth;
}

/* Make hero elements ready for JS manipulation */
.hero-content-animated, .hero-photo-animated {
    /* This overrides the fadeInUp animation to allow for parallax */
    animation: none; 
    /* This transition allows the element to move smoothly when its transform is changed by JS */
    transition: transform 0.5s ease-out, opacity 0.5s ease-out;
}

/* === TEXT REVEAL ANIMATION RULES === */
.reveal-text {
    position: relative;
    /* This prevents the initial text from showing before JS splits it */
    opacity: 0; 
}

.reveal-text.is-visible {
    opacity: 1;
}
  
.reveal-text > .word {
    opacity: 0.05;
    transform: translateY(20px);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    display: inline-block;
}
  
.reveal-text.in-view > .word {
    opacity: 1;
    transform: translateY(0);
}

/* === CARD & FORM ANIMATION RULES === */
/* This will target all elements meant to fade in on scroll */
.animate-card, .animate-form-input {
    /* Overrides existing fadeInUp on card-container */
    animation: none; 
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.animate-card.in-view, .animate-form-input.in-view {
    opacity: 1;
    transform: translateY(0);
}