document.addEventListener('DOMContentLoaded', () => { // Intersection Observer for fade-in animations const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('visible'); } }); }, { threshold: 0.15 }); document.querySelectorAll('.fade-in').forEach(el => observer.observe(el)); // Logo 3D effect on mousemove const logo = document.querySelector('.logo-small'); if(logo && window.matchMedia("(pointer: fine)").matches) { document.addEventListener('mousemove', (e) => { const x = e.clientX; const y = e.clientY; const centerX = window.innerWidth / 2; const centerY = window.innerHeight / 2; // Calculate rotation (inverted for natural feel) const rotateX = ((y - centerY) / centerY) * -15; const rotateY = ((x - centerX) / centerX) * 15; logo.style.transform = `scale(1.08) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; }); document.addEventListener('mouseleave', () => { logo.style.transform = `scale(1) rotateX(0deg) rotateY(0deg)`; }); } });