// ===== FORM ===== const form = document.getElementById('waitlist-form'); const emailInput = document.getElementById('email-input'); const submitBtn = document.getElementById('submit-btn'); const formMessage = document.getElementById('form-message'); function showMessage(text, isError) { formMessage.textContent = text; formMessage.className = 'mt-4 text-sm ' + (isError ? 'text-red-500' : 'font-medium'); formMessage.classList.remove('hidden'); } form.addEventListener('submit', async (e) => { e.preventDefault(); const email = emailInput.value.trim(); if (!email) return; submitBtn.disabled = true; submitBtn.textContent = 'Skickar...'; try { const res = await fetch(`${API_URL}/api/waitlist`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email }) }); const data = await res.json(); if (res.ok) { window.location.href = 'success.html'; } else { showMessage(data.error || 'Något gick fel. Försök igen.', true); submitBtn.disabled = false; submitBtn.textContent = 'Ställ mig i kön'; } } catch (err) { showMessage('Kunde inte nå servern. Försök igen senare.', true); submitBtn.disabled = false; submitBtn.textContent = 'Ställ mig i kön'; } }); // ===== SCROLL TO TOP ON PAGE LOAD (back-button fix) ===== if ('scrollRestoration' in history) { history.scrollRestoration = 'manual'; } window.scrollTo(0, 0); // ===== SCROLL ANIMATIONS ===== const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('visible'); } }); }, { threshold: 0.1 }); document.querySelectorAll('.fade-up').forEach(el => { observer.observe(el); });