/* --- Global Animation Specifications --- */
/* Base class for scroll animations */
.animate-on-scroll {
    opacity: 0;
    transition: opacity 0.8s cubic-bezier(0.5, 0, 0, 1), transform 0.8s cubic-bezier(0.5, 0, 0, 1);
    will-change: opacity, transform;
}

/* 1. Fade Up (Titles, Sections, Cards) */
.animate-fade-up {
    transform: translateY(30px);
}
.animate-fade-up.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* 2. Fade Down (Header elements) */
.animate-fade-down {
    transform: translateY(-20px);
}
.animate-fade-down.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* 3. Fade In (Images, Logos, Simple text) */
.animate-fade-in {
    transform: scale(0.98);
}
.animate-fade-in.is-visible {
    opacity: 1;
    transform: scale(1);
}

/* 4. Slide In Right (Sidebars) */
.animate-slide-right {
    transform: translateX(-30px);
}
.animate-slide-right.is-visible {
    opacity: 1;
    transform: translateX(0);
}

/* 5. Slide In Left */
.animate-slide-left {
    transform: translateX(30px);
}
.animate-slide-left.is-visible {
    opacity: 1;
    transform: translateX(0);
}

/* 6. Zoom In (Highlights, Important buttons) */
.animate-zoom-in {
    transform: scale(0.8);
}
.animate-zoom-in.is-visible {
    opacity: 1;
    transform: scale(1);
}

/* Stagger Delays (for lists/grids) */
.delay-100 { transition-delay: 100ms; }
.delay-200 { transition-delay: 200ms; }
.delay-300 { transition-delay: 300ms; }
.delay-400 { transition-delay: 400ms; }
.delay-500 { transition-delay: 500ms; }
.delay-600 { transition-delay: 600ms; }

/* Hover Effects - Specifications */

/* Card Hover Lift */
.hover-lift {
    transition: transform 0.3s ease, box-shadow 0.3s ease !important;
}
.hover-lift:hover {
    transform: translateY(-8px) !important;
    box-shadow: 0 15px 30px rgba(0,0,0,0.15) !important;
}

/* Button Hover Glow */
.hover-glow {
    transition: all 0.3s ease;
    position: relative;
    overflow: hidden;
}
.hover-glow:hover {
    box-shadow: 0 0 20px rgba(0, 240, 255, 0.5);
    border-color: #00F0FF;
    transform: scale(1.02);
}
.hover-glow::after {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
    transition: 0.5s;
}
.hover-glow:hover::after {
    left: 100%;
}

/* Image Hover Zoom */
.hover-zoom-img {
    overflow: hidden;
}
.hover-zoom-img img {
    transition: transform 0.5s ease;
}
.hover-zoom-img:hover img {
    transform: scale(1.05);
}

/* --- Carousel Animations (Handled by CSS state) --- */
.carousel-slide .slide-content {
    opacity: 0;
    transform: translateY(30px);
    transition: all 0.8s ease-out;
}

/* When slide is active (opacity-100), show content */
.carousel-slide.opacity-100 .slide-content {
    opacity: 1;
    transform: translateY(0);
}

/* Stagger delays for carousel items */
.carousel-slide.opacity-100 .slide-content.delay-100 { transition-delay: 100ms; }
.carousel-slide.opacity-100 .slide-content.delay-200 { transition-delay: 200ms; }
.carousel-slide.opacity-100 .slide-content.delay-300 { transition-delay: 300ms; }

/* Zoom in effect for specific carousel elements */
.carousel-slide .slide-zoom {
    opacity: 0;
    transform: scale(0.8);
    transition: all 0.8s ease-out;
}
.carousel-slide.opacity-100 .slide-zoom {
    opacity: 1;
    transform: scale(1);
}
.carousel-slide.opacity-100 .slide-zoom.delay-300 { transition-delay: 300ms; }

.header-bg {
    background-color: #003366;
    transition: transform 0.3s ease-in-out;
    z-index: 50;
}
.dropdown-submenu {
    z-index: 60;
}
.header-scrolled {
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}
