/* Enhanced section transitions with in/out animations */

/* Base transition styles */
.section-transition {
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

/* Section states */
.section-hidden {
    opacity: 0;
    transform: translateY(30px);
}

.section-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Elements within sections that animate */
.animate-on-scroll {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    will-change: opacity, transform;
}

.animate-on-scroll.animated {
    opacity: 1;
    transform: translateY(0);
}

/* Special section-specific animations */
#hero .hero-text h1.animated {
    animation: fadeInUp 0.8s ease-out forwards;
}

#hero .hero-text p.animated {
    animation: fadeInUp 0.8s ease-out 0.2s forwards;
}

#hero .hero-buttons.animated {
    animation: fadeInUp 0.8s ease-out 0.4s forwards;
}

#announcements .announcement-title.animated {
    animation: fadeInLeft 0.8s ease-out forwards;
}

#announcements .carousel-slide.animated {
    animation: fadeInRight 0.8s ease-out forwards;
}

#about .about-image-container.animated {
    animation: fadeInScale 1s ease-out forwards;
}

#services .section-banner.animated {
    animation: fadeInDown 0.8s ease-out forwards;
}

#services .service-item.animated {
    animation: fadeInUp 0.8s ease-out forwards;
}

/* Animation keyframes */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    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(-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.9);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}