MAÑANA DE MAÑANA

Die Philosophie der Performativität endet nicht mit ihrer Grundlegung. Sie endet, wenn sie sich vollzieht. MAÑANA DE MAÑANA ist kein Anwendungsfall der Theorie — es ist ihr Vollzug. Das Projekt ist nicht über Performativität. Es ist Performativität. Und genau darin liegt seine philosophische Konsequenz.

<!DOCTYPE html> <html lang="de"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>MAÑANA DE MAÑANA · Spieler-Eingang</title> <link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@400;700&family=Cormorant+Garamond:wght@300;400;500;600&display=swap" rel="stylesheet"> </head> <body>
MAÑANA DE MAÑANA
Spieler-Eingang
3–20 Zeichen, nur Buchstaben und Zahlen
Buchstaben, Zahlen, Sonderzeichen
<script> // STATE let selectedElement = null; // DOM Elements const tabBtns = document.querySelectorAll('.tab-btn'); const forms = document.querySelectorAll('.auth-form'); const elementBtns = document.querySelectorAll('.element-btn'); const loginForm = document.getElementById('login-form'); const registerForm = document.getElementById('register-form'); // TAB SWITCHING function switchTab(tabName) { tabBtns.forEach(btn => btn.classList.remove('active')); forms.forEach(form => form.classList.remove('active')); document.querySelector(`[data-tab="${tabName}"]`).classList.add('active'); document.querySelector(`[data-form="${tabName}"]`).classList.add('active'); } tabBtns.forEach(btn => { btn.addEventListener('click', () => switchTab(btn.dataset.tab)); }); // ELEMENT SELECTION elementBtns.forEach(btn => { btn.addEventListener('click', (e) => { e.preventDefault(); elementBtns.forEach(b => b.classList.remove('selected')); btn.classList.add('selected'); selectedElement = btn.dataset.element; }); }); // VALIDATION function validateEmail(email) { const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return re.test(email); } function validatePassword(password) { return password.length >= 8; } function validateUsername(name) { return /^[a-zA-Z0-9]{3,20}$/.test(name); } // LOGIN loginForm.addEventListener('submit', async (e) => { e.preventDefault(); const email = document.getElementById('login-email').value.trim(); const password = document.getElementById('login-password').value; const remember = document.getElementById('login-remember').checked; const errorDiv = document.getElementById('login-error'); errorDiv.classList.remove('show'); if (!email || !password) { showError(errorDiv, 'Bitte fülle alle Felder aus.'); return; } // MOCK Login (später: API-Call) if (email === 'demo' && password === 'demo123') { const user = { id: 'player_001', name: 'ANON', email: 'demo@manana.de', level: 3, element: 'Äther', loginTime: new Date().toISOString() }; localStorage.setItem('manana_user', JSON.stringify(user)); if (remember) localStorage.setItem('manana_remember', 'true'); // Weiterleitung zum Dashboard setTimeout(() => { window.location.href = 'manana_dashboard_postfach.html'; }, 500); } else { showError(errorDiv, 'Email oder Passwort nicht korrekt. (Demo: demo / demo123)'); } }); // REGISTER registerForm.addEventListener('submit', async (e) => { e.preventDefault(); const name = document.getElementById('register-name').value.trim(); const email = document.getElementById('register-email').value.trim(); const password = document.getElementById('register-password').value; const confirmPassword = document.getElementById('register-password-confirm').value; const terms = document.getElementById('register-terms').checked; const errorDiv = document.getElementById('register-error'); const successDiv = document.getElementById('register-success'); errorDiv.classList.remove('show'); successDiv.classList.remove('show'); // Validierung if (!validateUsername(name)) { showError(errorDiv, 'Spieler-Name: 3–20 Zeichen, nur Buchstaben und Zahlen.'); return; } if (!validateEmail(email)) { showError(errorDiv, 'Ungültige Email-Adresse.'); return; } if (!validatePassword(password)) { showError(errorDiv, 'Passwort: Mindestens 8 Zeichen erforderlich.'); return; } if (password !== confirmPassword) { showError(errorDiv, 'Passwörter stimmen nicht überein.'); return; } if (!selectedElement) { showError(errorDiv, 'Bitte wähle dein Element.'); return; } if (!terms) { showError(errorDiv, 'Bedingungen müssen akzeptiert werden.'); return; } // MOCK Register (später: API-Call) const newUser = { id: 'player_' + Date.now(), name: name.toUpperCase(), email: email, level: 1, element: selectedElement.charAt(0).toUpperCase() + selectedElement.slice(1), joinDate: new Date().toISOString() }; // Speichere Benutzer localStorage.setItem('manana_user', JSON.stringify(newUser)); localStorage.setItem('manana_remember', 'true'); // Erfolgs-Nachricht successDiv.innerHTML = `✓ Willkommen, ${newUser.name}! Du trittst als ${newUser.element} ein...`; successDiv.classList.add('show'); // Weiterleitung setTimeout(() => { window.location.href = 'manana_dashboard_postfach.html'; }, 1500); }); // ERROR DISPLAY function showError(div, message) { div.innerHTML = `⚠ ${message}`; div.classList.add('show'); } // Check if already logged in window.addEventListener('load', () => { const user = localStorage.getItem('manana_user'); if (user) { window.location.href = 'manana_dashboard_postfach.html'; } }); </script> </body> </html>