/* =============================================
   DEMA MONTAGE — Animations & Transitions
   ============================================= */

/* ============ SCROLL REVEAL ============ */
.scroll-reveal {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}

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

/* Staggered children */
.scroll-reveal:nth-child(1) { transition-delay: 0s; }
.scroll-reveal:nth-child(2) { transition-delay: 0.1s; }
.scroll-reveal:nth-child(3) { transition-delay: 0.2s; }
.scroll-reveal:nth-child(4) { transition-delay: 0.3s; }

/* Services grid stagger */
.services-grid .service-card:nth-child(1) { transition-delay: 0s; }
.services-grid .service-card:nth-child(2) { transition-delay: 0.1s; }
.services-grid .service-card:nth-child(3) { transition-delay: 0.2s; }
.services-grid .service-card:nth-child(4) { transition-delay: 0.3s; }

/* Reference grid stagger */
.reference-grid .reference-card:nth-child(1) { transition-delay: 0s; }
.reference-grid .reference-card:nth-child(2) { transition-delay: 0.08s; }
.reference-grid .reference-card:nth-child(3) { transition-delay: 0.16s; }
.reference-grid .reference-card:nth-child(4) { transition-delay: 0.24s; }
.reference-grid .reference-card:nth-child(5) { transition-delay: 0.32s; }
.reference-grid .reference-card:nth-child(6) { transition-delay: 0.4s; }

/* ============ HERO LOAD ANIMATION ============ */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(32px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}

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

.hero-title {
    animation: fadeInUp 0.7s ease both;
    animation-delay: 0.15s;
}

.hero-subtitle {
    animation: fadeInUp 0.7s ease both;
    animation-delay: 0.3s;
}

.hero-desc {
    animation: fadeInUp 0.7s ease both;
    animation-delay: 0.45s;
}

.hero-buttons {
    animation: fadeInUp 0.7s ease both;
    animation-delay: 0.6s;
}

.hero-stats {
    animation: fadeInUp 0.7s ease both;
    animation-delay: 0.75s;
}

/* ============ COUNTER ANIMATION ============ */
@keyframes countUp {
    from { opacity: 0.3; }
    to   { opacity: 1; }
}

.stat-number.counting {
    animation: countUp 0.1s ease;
}

/* ============ HEADER SHRINK ============ */
.site-header {
    transition: background 0.3s ease, box-shadow 0.3s ease, height 0.3s ease;
}

/* ============ NAV LINK UNDERLINE ============ */
.nav-link::after {
    transition: width 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

/* ============ CARD HOVER ============ */
.service-card {
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
                box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.service-icon svg {
    transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.service-card:hover .service-icon svg {
    transform: rotate(8deg) scale(1.15);
}

/* ============ REFERENCE CARD HOVER ============ */
.reference-card {
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
                box-shadow 0.3s ease;
}

/* ============ FORM MESSAGE ANIMATION ============ */
@keyframes slideDown {
    from {
        opacity: 0;
        transform: translateY(-8px);
        max-height: 0;
    }
    to {
        opacity: 1;
        transform: translateY(0);
        max-height: 200px;
    }
}

.form-message.success,
.form-message.error {
    animation: slideDown 0.35s ease forwards;
}

/* ============ LIGHTBOX ANIMATION ============ */
@keyframes lightboxIn {
    from {
        opacity: 0;
        transform: scale(0.92);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

.lightbox.open .lightbox-content {
    animation: lightboxIn 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}

/* ============ MOBILE MENU ANIMATION ============ */
.main-nav {
    transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}

.mobile-overlay {
    transition: opacity 0.35s ease;
}

/* ============ COOKIE NOTICE ============ */
.cookie-notice {
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

/* ============ BACK TO TOP ============ */
.back-to-top {
    transition: opacity 0.3s ease, transform 0.3s ease, background 0.2s ease;
}

/* ============ FILTER BUTTONS ============ */
.filter-btn {
    transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease,
                transform 0.1s ease;
}

.filter-btn:active {
    transform: scale(0.97);
}

/* ============ FOOTER LINKS ============ */
.footer-links a {
    transition: color 0.2s ease, padding-left 0.2s ease;
}

/* ============ REDUCE MOTION ============ */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }

    .scroll-reveal {
        opacity: 1;
        transform: none;
    }

    html {
        scroll-behavior: auto;
    }
}
