(function () { document.documentElement.classList.add('js-ready'); // Reveal-on-scroll if ('IntersectionObserver' in window) { var io = new IntersectionObserver(function (entries) { entries.forEach(function (e) { if (e.isIntersecting) { e.target.classList.add('in'); io.unobserve(e.target); } }); }, { threshold: .12, rootMargin: '0px 0px -8% 0px' }); document.querySelectorAll('.rv').forEach(function (el) { io.observe(el); }); } else { document.querySelectorAll('.rv').forEach(function (el) { el.classList.add('in'); }); } // CTA fixo mobile: aparece depois de rolar além do hero, some no calendário var cta = document.getElementById('mobileCta'); var agendar = document.getElementById('agendar'); if (cta) { window.addEventListener('scroll', function () { var passouHero = window.scrollY > window.innerHeight * 0.6; var noAgendar = agendar && agendar.getBoundingClientRect().top < window.innerHeight; if (passouHero && !noAgendar) { cta.classList.add('show'); } else { cta.classList.remove('show'); } }, { passive: true }); } // Fallback do iframe do calendário setTimeout(function () { if (!window.__calLoaded) { var fb = document.getElementById('calFallback'); if (fb) { fb.style.display = 'flex'; } } }, 5000); // Carrossel de depoimentos (function () { var track = document.getElementById('depoTrack'); if (!track) return; var slides = track.querySelectorAll('.depo-slide'); var dots = document.querySelectorAll('.depo-dots button'); var prev = document.querySelector('.depo-nav.prev'); var next = document.querySelector('.depo-nav.next'); if (!slides.length) return; var idx = 0, timer; var reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches; function go(i) { idx = (i + slides.length) % slides.length; track.scrollTo({ left: slides[idx].offsetLeft, behavior: reduced ? 'auto' : 'smooth' }); dots.forEach(function (d, k) { d.setAttribute('aria-selected', k === idx); }); } function loop() { if (reduced) return; timer = setInterval(function () { go(idx + 1); }, 4000); } function stop() { clearInterval(timer); } if (prev) prev.addEventListener('click', function () { stop(); go(idx - 1); loop(); }); if (next) next.addEventListener('click', function () { stop(); go(idx + 1); loop(); }); dots.forEach(function (d, k) { d.addEventListener('click', function () { stop(); go(k); loop(); }); }); track.addEventListener('pointerenter', stop); track.addEventListener('pointerleave', loop); loop(); })(); })();