`; } function listCard(t){let[s,c]=status(t);return `
${s}

${t.name}

📅 ${fmt(t.date)} · 🤾 ${t.age.join(", ")} · ${t.gender} · 📍 ${t.city}
💶 ${t.fee||0} € · ${t.club}
`} function filterList(){ const q=(document.getElementById("fSearch")?.value||"").toLowerCase(), age=document.getElementById("fAge")?.value||"", gender=document.getElementById("fGender")?.value||"", state=document.getElementById("fState")?.value||"", type=document.getElementById("fType")?.value||"", free=document.getElementById("fFree")?.checked; const r=tournaments.filter(t=>(!q||[t.name,t.city,t.club,t.age.join(" ")].join(" ").toLowerCase().includes(q))&&(!age||t.age.includes(age))&&(!gender||t.gender===gender)&&(!state||t.state===state)&&(!type||t.type===type)&&(!free||t.registeredKeine passenden Turniere gefunden.`; } function detail(id){ const t=tournaments.find(x=>x.id===id)||tournaments[0],[s,c]=status(t); return `
${s}

${t.name}

📅 ${fmt(t.date)}${t.end!==t.date?" – "+fmt(t.end):""} · 🤾 ${t.age.join(", ")} · ${t.gender}
📍 ${t.place}, ${t.address}
Startgebühr${t.fee? t.fee+" €":"kostenlos"}pro Mannschaft

Kurzinfo

Turnierart${t.type}
SpielsystemGruppenphase + Finalrunde
Max. Mannschaften${t.max}
Freie Plätze${Math.max(0,t.max-t.registered)}
Meldeschluss${fmt(t.deadline)}
Übernachtung${t.accom?"Ja":"Nein"}
Verpflegung${t.food?"Ja":"Nein"}

Beschreibung

${t.description}

Rahmenprogramm

✓ Tombola   ✓ Hüpfburg   ✓ Grill   ✓ Trainerabend

`; } function createForm(){ return `

Turnier eintragen

Trage die Daten deines Turniers ein. Mit * markierte Felder sind Pflichtfelder.

1 Grunddaten
2 Datum & Zeit
3 Altersklassen
4 Veranstalter
5 Spielmodus
6 Ort & Ausstattung
`; } function createTournament(e){ e.preventDefault();const f=new FormData(e.target);const city=f.get("city").toString().trim();const parts=city.split(" ");const id=Date.now(); const t={id,name:f.get("name"),date:f.get("date"),end:f.get("end")||f.get("date"),deadline:f.get("deadline"),age:[f.get("age")],gender:f.get("gender"),type:f.get("type"),max:+f.get("max"),registered:0,fee:+f.get("fee")||0,accom:f.get("accom")==="1",food:f.get("food")==="1",club:f.get("club"),place:f.get("place"),address:f.get("address"),city:parts.slice(1).join(" ")||city,state:f.get("state"),description:f.get("description")||f.get("short")||"",image:"https://images.unsplash.com/photo-1518609878373-06d740f60d8b?auto=format&fit=crop&w=900&q=80"}; tournaments.unshift(t);save();toast("Turnier wurde als veröffentlichtes Beispiel angelegt.");show("detail",id) } function registerForm(id){ const t=tournaments.find(x=>x.id===id)||tournaments[0]; return `

Mannschaft anmelden

Melde dein Team für ${t.name} an. Mit * markierte Felder sind Pflichtfelder.

1. Verein & Mannschaft

`; } function registerTeam(e,id){e.preventDefault();const f=new FormData(e.target);registrations.push({id:Date.now(),tournamentId:id,club:f.get("club"),team:f.get("team"),contact:f.get("contact"),email:f.get("email"),status:"offen"});let t=tournaments.find(x=>x.id===id);if(t)t.registered=Math.min(t.max,t.registered+1);save();toast("Mannschaftsanmeldung erfolgreich übermittelt.");show("dashboard")} function dashboard(){ const total=registrations.length;return `

Mein Dashboard

Hallo Max Musterstadt, willkommen zurück!
Meine Turniere${tournaments.length}
Anmeldungen${total+36}
Freie Plätze${tournaments.reduce((a,t)=>a+Math.max(0,t.max-t.registered),0)}

Meine Turniere

${tournaments.map(t=>``).join("")}
TurnierDatumAnmeldungenPlätzeStatus
${t.name}${fmt(t.date)}${t.registered}/${t.max}${Math.max(0,t.max-t.registered)}${status(t)[0]}

Aktuelle Anmeldungen

${(registrations.length?registrations.slice(-6).reverse():[{club:"SG Hamburg",team:"mD",contact:"02.03.2027",status:"bestätigt"},{club:"TSV Kiel",team:"wC",contact:"04.03.2027",status:"offen"},{club:"HSG Nord",team:"mD",contact:"05.03.2027",status:"warteliste"}]).map(r=>``).join("")}
VereinMannschaftAnmeldungStatus
${r.club}${r.team}${r.contact}${r.status}
`; } function about(){return `

Über die Handball-Turnierbörse

Eine zentrale Plattform für Jugend-, Erwachsenen-, Hallen-, Rasen- und Beach-Handballturniere. Vereine veröffentlichen Turniere, Mannschaften finden passende Veranstaltungen und können sich direkt anmelden.

`} function faq(){return `

FAQ

Ist das Eintragen kostenlos?

Im Prototyp ja. Gebührenmodelle können später ergänzt werden.

Wer kann Turniere eintragen?

Vereine und Veranstalter mit Veranstalterkonto.

Kann man Anmeldungen verwalten?

Ja, der Veranstalterbereich ist dafür vorgesehen.

`} function contact(){return `

Kontakt

`} function goSearch(){show("tournaments");setTimeout(()=>{document.getElementById("fSearch").value=document.getElementById("homeSearch").value;document.getElementById("fAge").value=document.getElementById("homeAge").value;document.getElementById("fState").value=document.getElementById("homeState").value;filterList()},20)} function toast(s){const t=document.getElementById("toast");t.textContent=s;t.style.display="block";setTimeout(()=>t.style.display="none",2800)} const hash=location.hash.replace("#","");show(hash==="tournaments"?"tournaments":"home");