/* ===== SCROLL ANIMATION ===== */ const observer = new IntersectionObserver(entries => { entries.forEach(e => { if(e.isIntersecting) e.target.style.opacity = 1, e.target.style.transform = 'translateY(0)'; }); }, { threshold: 0.1 }); document.querySelectorAll('.service-card, .why-card, .process-step').forEach(el => { el.style.opacity = '0'; el.style.transform = 'translateY(24px)'; el.style.transition = 'all .5s ease'; observer.observe(el); });