// Initialize tooltips and interactive elements document.addEventListener('DOMContentLoaded', () => { // Smooth scroll 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', block: 'start' }); } }); }); // Add active state to navigation items const sections = document.querySelectorAll('section[id]'); const navLinks = document.querySelectorAll('nav a[href^="#"]'); function highlightNav() { const scrollY = window.pageYOffset; sections.forEach(section => { const sectionHeight = section.offsetHeight; const sectionTop = section.offsetTop - 100; const sectionId = section.getAttribute('id'); if (scrollY > sectionTop && scrollY <= sectionTop + sectionHeight) { navLinks.forEach(link => { link.classList.remove('text-purple-400'); link.classList.add('text-gray-300'); }); document.querySelector(`nav a[href*="${sectionId}"]`)?.classList.add('text-purple-400'); } }); } window.addEventListener('scroll', highlightNav); highlightNav(); // Animate elements on scroll 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('animate-fade-in'); } }); }, observerOptions); // Observe all feature cards and sections document.querySelectorAll('.bg-gray-800, .bg-gray-900').forEach(el => { observer.observe(el); }); }); // Add fade-in animation const style = document.createElement('style'); style.textContent = ` @keyframes fade-in { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animate-fade-in { animation: fade-in 0.6s ease-out forwards; } `; document.head.appendChild(style);