document.addEventListener('DOMContentLoaded', () => {

    // CONFIGURAÇÕES DE INTEGRAÇÃO DO AGENDAMENTO
    const GOOGLE_SHEET_URL = 'https://script.google.com/macros/s/AKfycbxSr7iVsz9VdMI4W6vAZPHD-u-D1RGIHeJI6PJtfWa89d51217ucFOpF0YK8XC0kSkc2A/exec'; // Substitua pela URL da Web App publicada no Apps Script
    const CLINIC_WHATSAPP_NUMBER = '5511999999999'; // Substitua pelo número real de WhatsApp da clínica (apenas números, com DDD)

    /* ==========================================================================
       1. CURSOR CUSTOMIZADO COM LERP (LINEAR INTERPOLATION)
       ========================================================================== */
    const cursor = document.querySelector('.custom-cursor');
    const cursorDot = document.querySelector('.custom-cursor-dot');

    let mouseX = 0, mouseY = 0; // Coordenadas reais do mouse
    let cursorX = 0, cursorY = 0; // Coordenadas interpoladas do círculo externo

    // Velocidade de aproximação (0.1 = mais suave/lento, 1.0 = instantâneo)
    const speed = 0.15;

    // Monitora a movimentação física do mouse
    window.addEventListener('mousemove', (e) => {
        mouseX = e.clientX;
        mouseY = e.clientY;

        // Ativa a visibilidade na primeira movimentação
        if (cursor.style.opacity === '0' || !cursor.style.opacity) {
            cursor.style.opacity = '1';
            cursorDot.style.opacity = '1';
        }
    });

    // Função de animação de loop para suavizar o círculo externo
    function animateCursor() {
        // LERP formula: valor_atual + (valor_destino - valor_atual) * velocidade
        cursorX += (mouseX - cursorX) * speed;
        cursorY += (mouseY - cursorY) * speed;

        // Posiciona a esfera externa (suave)
        cursor.style.left = `${cursorX}px`;
        cursor.style.top = `${cursorY}px`;

        // Posiciona o ponto interno (instantâneo)
        cursorDot.style.left = `${mouseX}px`;
        cursorDot.style.top = `${mouseY}px`;

        requestAnimationFrame(animateCursor);
    }
    requestAnimationFrame(animateCursor);

    // Efeitos de Hover
    const hoverElements = document.querySelectorAll('a, button, .bento-card, .accordion-header, .form-control, select');
    hoverElements.forEach(elem => {
        elem.addEventListener('mouseenter', () => {
            cursor.classList.add('hovered');
        });
        elem.addEventListener('mouseleave', () => {
            cursor.classList.remove('hovered');
        });
    });

    // Ocultar cursor se o mouse sair da janela do navegador
    document.addEventListener('mouseleave', () => {
        cursor.style.opacity = '0';
        cursorDot.style.opacity = '0';
    });

    document.addEventListener('mouseenter', () => {
        cursor.style.opacity = '1';
        cursorDot.style.opacity = '1';
    });


    /* ==========================================================================
       2. SCROLL REVEAL (INTERSECTION OBSERVER)
       ========================================================================== */
    const revealItems = document.querySelectorAll('.reveal-item');

    const revealCallback = (entries, observer) => {
        entries.forEach(entry => {
            if (entry.isIntersecting) {
                entry.target.classList.add('revealed');
                // Opcional: parar de observar após revelar
                // observer.unobserve(entry.target);
            }
        });
    };

    const revealObserver = new IntersectionObserver(revealCallback, {
        root: null, // viewport
        threshold: 0.1, // Dispara quando 10% do elemento está visível
        rootMargin: '0px 0px -40px 0px' // Margem na parte inferior para iniciar antes do elemento passar completamente
    });

    revealItems.forEach(item => {
        revealObserver.observe(item);
    });


    /* ==========================================================================
       3. BENTO CARD GLOW EFFECT (MOUSE TRACKING)
       ========================================================================== */
    const bentoCards = document.querySelectorAll('.bento-card');
    
    bentoCards.forEach(card => {
        card.addEventListener('mousemove', (e) => {
            const rect = card.getBoundingClientRect();
            // Calcula coordenadas do mouse relativas ao card em porcentagem
            const x = ((e.clientX - rect.left) / rect.width) * 100;
            const y = ((e.clientY - rect.top) / rect.height) * 100;
            
            card.style.setProperty('--mouse-x', `${x}%`);
            card.style.setProperty('--mouse-y', `${y}%`);
        });
    });


    /* ==========================================================================
       4. ACCORDION DE FAQ
       ========================================================================== */
    const accordionHeaders = document.querySelectorAll('.accordion-header');

    accordionHeaders.forEach(header => {
        header.addEventListener('click', () => {
            const parent = header.parentElement;
            const isActive = parent.classList.contains('active');

            // Fecha todos os outros accordions (efeito sanfona exclusivo)
            document.querySelectorAll('.accordion-item').forEach(item => {
                item.classList.remove('active');
            });

            // Se o item clicado não estava ativo, abre-o
            if (!isActive) {
                parent.classList.add('active');
            }
        });
    });


    /* ==========================================================================
       5. MENU MOBILE
       ========================================================================== */
    const menuToggle = document.querySelector('.menu-toggle');
    const navMenu = document.querySelector('.nav-menu');
    const navLinks = document.querySelectorAll('.nav-link');

    menuToggle.addEventListener('click', () => {
        menuToggle.classList.toggle('active');
        navMenu.classList.toggle('active');
    });

    // Fecha o menu móvel ao clicar em qualquer link
    navLinks.forEach(link => {
        link.addEventListener('click', () => {
            menuToggle.classList.remove('active');
            navMenu.classList.remove('active');
        });
    });


    /* ==========================================================================
       6. MONITORAMENTO DO LINK ATIVO NA NAVBAR (HIGHLIGHT ON SCROLL)
       ========================================================================== */
    const sections = document.querySelectorAll('section');
    
    const navActiveCallback = (entries) => {
        entries.forEach(entry => {
            if (entry.isIntersecting) {
                const id = entry.target.getAttribute('id');
                navLinks.forEach(link => {
                    link.classList.remove('active');
                    if (link.getAttribute('href') === `#${id}`) {
                        link.classList.add('active');
                    }
                });
            }
        });
    };

    const navActiveObserver = new IntersectionObserver(navActiveCallback, {
        root: null,
        threshold: 0.5, // Considera a seção ativa se 50% dela estiver visível
        rootMargin: '-80px 0px 0px 0px' // Compensa a altura do menu sticky
    });

    sections.forEach(section => {
        navActiveObserver.observe(section);
    });


    /* ==========================================================================
       7. ENVIO DE FORMULÁRIO (GOOGLE SHEETS + WHATSAPP REDIRECT)
       ========================================================================== */
    const appointmentForm = document.getElementById('appointment-form');
    const formFeedback = document.getElementById('form-feedback');

    if (appointmentForm) {
        appointmentForm.addEventListener('submit', (e) => {
            e.preventDefault();
            
            const submitBtn = appointmentForm.querySelector('button[type="submit"]');
            const originalBtnText = submitBtn.innerHTML;
            
            submitBtn.disabled = true;
            submitBtn.innerHTML = '<span>Processando...</span>';

            const name = document.getElementById('name').value;
            const email = document.getElementById('email').value;
            const phone = document.getElementById('phone').value;
            const subjectSelect = document.getElementById('subject');
            const subjectText = subjectSelect.options[subjectSelect.selectedIndex].text;

            const data = {
                name: name,
                email: email,
                phone: phone,
                subject: subjectText
            };

            // Função de redirecionamento para o WhatsApp
            const redirect = () => {
                const msg = `Olá! Acabei de preencher meus dados no site para solicitar um agendamento:\n\n*Nome:* ${data.name}\n*E-mail:* ${data.email}\n*WhatsApp:* ${data.phone}\n*Procedimento:* ${data.subject}`;
                const whatsappUrl = `https://wa.me/${CLINIC_WHATSAPP_NUMBER}?text=${encodeURIComponent(msg)}`;
                window.location.href = whatsappUrl;
            };

            if (GOOGLE_SHEET_URL && GOOGLE_SHEET_URL !== 'SUA_URL_DO_GOOGLE_APPS_SCRIPT_AQUI') {
                formFeedback.textContent = 'Enviando dados da solicitação...';
                formFeedback.className = 'form-feedback success';
                formFeedback.style.display = 'block';

                fetch(GOOGLE_SHEET_URL, {
                    method: 'POST',
                    mode: 'no-cors', // Permite envio cross-origin sem erros de redirecionamento no navegador
                    headers: {
                        'Content-Type': 'application/x-www-form-urlencoded'
                    },
                    body: new URLSearchParams(data)
                })
                .then(() => {
                    formFeedback.textContent = 'Dados salvos com sucesso! Redirecionando para o WhatsApp de agendamento...';
                    appointmentForm.reset();
                    setTimeout(redirect, 1000);
                })
                .catch(err => {
                    console.error('Erro de envio ao Sheets:', err);
                    // Redireciona para o WhatsApp mesmo em caso de erro na planilha
                    formFeedback.textContent = 'Conectando ao atendimento... Redirecionando...';
                    setTimeout(redirect, 1000);
                });
            } else {
                formFeedback.textContent = 'Redirecionando para o WhatsApp...';
                formFeedback.className = 'form-feedback success';
                formFeedback.style.display = 'block';
                setTimeout(redirect, 1000);
            }
        });
    }

});
