document.addEventListener('DOMContentLoaded', () => { // Smooth scrolling for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); const target = document.querySelector(this.getAttribute('href')); if (target) { target.scrollIntoView({ behavior: 'smooth' }); } }); }); // Intersection Observer for fade-in animations const observerOptions = { threshold: 0.1, rootMargin: '0px 0px -50px 0px' }; const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('visible'); observer.unobserve(entry.target); } }); }, observerOptions); // Add fade-in class to elements we want to animate const animatedElements = document.querySelectorAll('.feature-card, .screenshot-item, .hero-content, .hero-image'); animatedElements.forEach(el => { el.classList.add('fade-in'); observer.observe(el); }); }); // Add this CSS to styles.css dynamically or ensure it's in the CSS file const style = document.createElement('style'); style.textContent = ` .fade-in { opacity: 0; transform: translateY(20px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; } .fade-in.visible { opacity: 1; transform: translateY(0); } .feature-card:nth-child(2) { transition-delay: 0.1s; } .feature-card:nth-child(3) { transition-delay: 0.2s; } .feature-card:nth-child(4) { transition-delay: 0.3s; } .feature-card:nth-child(5) { transition-delay: 0.4s; } .feature-card:nth-child(6) { transition-delay: 0.5s; } `; document.head.appendChild(style);