/* ===== WhatsApp Floating Button ===== */
.whatsapp-pulse {
    animation: whatsapp-ping 2s cubic-bezier(0, 0, 0.2, 1) infinite;
}

@keyframes whatsapp-ping {
    0% { transform: scale(1); opacity: 0.5; }
    75%, 100% { transform: scale(1.6); opacity: 0; }
}

/* ===== Hide reCAPTCHA Badge ===== */
.grecaptcha-badge {
    visibility: hidden !important;
}

/* ===== Base ===== */
html {
    scroll-behavior: smooth;
}

html, body {
    overscroll-behavior: contain;
}

/* ===== Header GPU Compositing ===== */
#site-header {
    transform: translateZ(0);
    -webkit-transform: translate3d(0, 0, 0);
    -webkit-backface-visibility: hidden;
}

/* ===== Scroll Animations (data-animate system) ===== */
[data-animate] {
    opacity: 0;
    transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1),
                transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}

[data-animate="fade-up"] {
    transform: translateY(40px);
}

[data-animate="fade-down"] {
    transform: translateY(-40px);
}

[data-animate="fade-left"] {
    transform: translateX(40px);
}

[data-animate="fade-right"] {
    transform: translateX(-40px);
}

[data-animate="fade-in"] {
    transform: scale(0.95);
}

[data-animate="zoom-in"] {
    transform: scale(0.8);
}

/* Animated state */
[data-animate].animated {
    opacity: 1;
    transform: translate(0, 0) scale(1);
}

/* Stagger delays */
[data-delay="100"] { transition-delay: 0.1s; }
[data-delay="200"] { transition-delay: 0.2s; }
[data-delay="300"] { transition-delay: 0.3s; }
[data-delay="400"] { transition-delay: 0.4s; }
[data-delay="500"] { transition-delay: 0.5s; }
[data-delay="600"] { transition-delay: 0.6s; }
[data-delay="700"] { transition-delay: 0.7s; }
[data-delay="800"] { transition-delay: 0.8s; }

/* ===== FAQ Accordion ===== */
.faq-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.faq-item.active .faq-content {
    max-height: 500px;
}

.faq-item .faq-icon {
    transition: transform 0.3s ease;
}

.faq-item.active .faq-icon {
    transform: rotate(45deg);
}

/* ===== Counter Animation ===== */
@keyframes counter-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.05); }
}

.counter-done {
    animation: counter-pulse 0.5s ease-out;
}

/* ===== Parallax Helper ===== */
.bg-parallax {
    background-attachment: fixed;
    background-size: cover;
    background-position: center;
}

@media (max-width: 768px) {
    .bg-parallax {
        background-attachment: scroll;
    }
}

/* ===== Service Card Accent Bar ===== */
.service-card .accent-bar {
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.service-card:hover .accent-bar {
    transform: scaleX(1);
}

/* ===== Lightbox ===== */
#lightbox-overlay {
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
}

#lightbox-overlay.active {
    opacity: 1;
    pointer-events: all;
}

#lightbox-overlay img {
    transform: scale(0.9);
    transition: transform 0.3s ease;
}

#lightbox-overlay.active img {
    transform: scale(1);
}

/* ===== Back to Top Button ===== */
#back-to-top.visible {
    opacity: 1;
    transform: translateY(0);
    pointer-events: all;
}

/* ===== Hero Text Animation ===== */
@keyframes hero-slide-up {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.hero-animate {
    animation: hero-slide-up 0.8s ease-out forwards;
    opacity: 0;
}

.hero-animate-delay-1 { animation-delay: 0.2s; }
.hero-animate-delay-2 { animation-delay: 0.4s; }
.hero-animate-delay-3 { animation-delay: 0.6s; }
.hero-animate-delay-4 { animation-delay: 0.8s; }

/* ===== Testimonial Cards ===== */
.testimonial-card {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.testimonial-card:hover {
    transform: translateY(-4px);
}

/* ===== Project Cards Overlay ===== */
.project-card .project-overlay {
    opacity: 0;
    transition: opacity 0.4s ease;
}

.project-card:hover .project-overlay {
    opacity: 1;
}

.project-card:hover img {
    transform: scale(1.1);
}

.project-card img {
    transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}
