async function executeAuthAction(type) { const emailInput = type === 'login' ? get('loginEmail') : get('regEmail'); const passInput = type === 'login' ? get('loginPass') : get('regPass'); const email = emailInput.value.trim(); const password = passInput.value.trim(); if (!email || !password) { triggerToast("Validation Alert", "All credential inputs are mandatory."); return; } try { triggerToast("Processing", "Establishing connection to database validation layers..."); // Using relative path formatting ensures your requests hit your Pages Functions seamlessly const response = await fetch('/api/auth', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: type, email, password }) }); if (response.ok) { const serverData = await response.json(); appState.user = email; // Pull down actual user profiles from KV storage metrics cleanly appState.xp = serverData.xp || 0; appState.completedLessons = serverData.completedLessons || []; appState.streak = serverData.streak || 1; get('authContainer').style.display = 'none'; get('userProfileBadge').textContent = email; initializeWorkspaceCurriculumTree(); triggerToast("Access Granted", "Cloud synchronization connection active and stable."); } else { const errorText = await response.text(); triggerToast("Authentication Refused", errorText || "Invalid credentials provided."); } } catch (err) { triggerToast("Network Disconnection", "Fatal processing link drop. Verify server context bindings."); } }