// Mobile Navigation Toggle document.addEventListener('DOMContentLoaded', () => { const toggle = document.querySelector('.nav__toggle'); const navList = document.querySelector('.nav__list'); if (toggle && navList) { toggle.addEventListener('click', () => { toggle.classList.toggle('nav__toggle--active'); navList.classList.toggle('nav__list--open'); }); // Close menu when a link is clicked navList.querySelectorAll('.nav__link').forEach(link => { link.addEventListener('click', () => { toggle.classList.remove('nav__toggle--active'); navList.classList.remove('nav__list--open'); }); }); } // Contact form handling const form = document.getElementById('contact-form'); if (form) { form.addEventListener('submit', (e) => { e.preventDefault(); // Gather form data const formData = new FormData(form); const data = Object.fromEntries(formData.entries()); // Basic validation if (!data.name || !data.email || !data.message) { showFormMessage('Please fill in the required fields.', 'error'); return; } // Email format check const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(data.email)) { showFormMessage('Please enter a valid email address.', 'error'); return; } // Simulate form submission (replace with actual endpoint) showFormMessage('Thanks for getting in touch! We\'ll be back to you soon.', 'success'); form.reset(); }); } }); function showFormMessage(message, type) { // Remove existing message const existing = document.querySelector('.form-message'); if (existing) existing.remove(); const el = document.createElement('div'); el.className = `form-message form-message--${type}`; el.textContent = message; el.style.padding = '14px 20px'; el.style.borderRadius = '8px'; el.style.marginTop = '16px'; el.style.fontWeight = '500'; el.style.fontSize = '0.95rem'; if (type === 'success') { el.style.background = '#f7f2ea'; el.style.color = '#123d2a'; el.style.border = '1px solid #8faf8a'; } else { el.style.background = '#fef2f2'; el.style.color = '#b91c1c'; el.style.border = '1px solid #fecaca'; } const form = document.getElementById('contact-form'); form.parentNode.insertBefore(el, form.nextSibling); // Auto-remove after 5 seconds setTimeout(() => el.remove(), 5000); } // Smooth scroll for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function(e) { const target = document.querySelector(this.getAttribute('href')); if (target) { e.preventDefault(); target.scrollIntoView({ behavior: 'smooth', block: 'start' }); } }); });