diff --git a/.output/nitro.json b/.output/nitro.json
index 1ae2a5a..c8dbd3a 100644
--- a/.output/nitro.json
+++ b/.output/nitro.json
@@ -1,5 +1,5 @@
{
- "date": "2025-10-21T08:05:05.459Z",
+ "date": "2025-10-21T09:30:49.008Z",
"preset": "node-server",
"framework": {
"name": "nuxt",
diff --git a/.output/public/_nuxt/0HxIkpDh.js b/.output/public/_nuxt/0HxIkpDh.js
new file mode 100644
index 0000000..5254d24
--- /dev/null
+++ b/.output/public/_nuxt/0HxIkpDh.js
@@ -0,0 +1,6 @@
+import{e as _,r as i,c as p,a as e,j as k,h as g,k as x,v,n as y,b as n,d,u,t as f,l as L,w as M,_ as V,o as m,m as b}from"#entry";import{u as z}from"./BHFrGoXk.js";import{A}from"./C8kQt0fa.js";import{C}from"./DaSgy0Cl.js";import{L as S}from"./CUq_0rkE.js";/**
+ * @license lucide-vue-next v0.344.0 - ISC
+ *
+ * This source code is licensed under the ISC license.
+ * See the LICENSE file in the root directory of this source tree.
+ */const N=_("LockIcon",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]),T={class:"min-h-full flex items-center justify-center py-16 px-4 sm:px-6 lg:px-8 bg-gray-50"},B={class:"max-w-md w-full space-y-8"},j={class:"bg-white rounded-xl shadow-lg p-8"},D={key:0,class:"bg-red-50 border border-red-200 rounded-lg p-4"},I={class:"text-sm text-red-800 flex items-center"},P={key:1,class:"bg-green-50 border border-green-200 rounded-lg p-4"},q={class:"text-sm text-green-800 flex items-center"},E=["disabled"],H={class:"text-center"},K={class:"bg-primary-50 border border-primary-100 rounded-lg p-4"},U={class:"text-sm text-primary-800 text-center"},Q={__name:"login",setup(Z){const t=i({email:"",password:""}),o=i(!1),r=i(""),l=i(""),w=async()=>{o.value=!0,r.value="",l.value="";try{const a=await $fetch("/api/auth/login",{method:"POST",body:{email:t.value.email,password:t.value.password}});a.success&&(l.value="Anmeldung erfolgreich! Sie werden weitergeleitet...",setTimeout(()=>{a.user.role==="admin"||a.user.role==="vorstand"?b("/cms"):b("/mitgliederbereich")},1e3))}catch(a){r.value=a.data?.message||"Anmeldung fehlgeschlagen. Bitte prüfen Sie Ihre Zugangsdaten."}finally{o.value=!1}};return z({title:"Login - Harheimer TC"}),(a,s)=>{const h=V;return m(),p("div",T,[e("div",B,[s[6]||(s[6]=e("div",{class:"text-center"},[e("h2",{class:"text-3xl font-display font-bold text-gray-900"}," Mitglieder-Login "),e("p",{class:"mt-2 text-sm text-gray-600"}," Melden Sie sich an, um auf den Mitgliederbereich zuzugreifen ")],-1)),e("div",j,[e("form",{onSubmit:k(w,["prevent"]),class:"space-y-6"},[e("div",null,[s[2]||(s[2]=e("label",{for:"email",class:"block text-sm font-medium text-gray-700 mb-2"}," E-Mail-Adresse ",-1)),x(e("input",{id:"email","onUpdate:modelValue":s[0]||(s[0]=c=>t.value.email=c),type:"email",required:"",autocomplete:"email",class:y(["w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all",{"border-red-500":r.value}]),placeholder:"ihre-email@example.com"},null,2),[[v,t.value.email]])]),e("div",null,[s[3]||(s[3]=e("label",{for:"password",class:"block text-sm font-medium text-gray-700 mb-2"}," Passwort ",-1)),x(e("input",{id:"password","onUpdate:modelValue":s[1]||(s[1]=c=>t.value.password=c),type:"password",required:"",autocomplete:"current-password",class:y(["w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all",{"border-red-500":r.value}]),placeholder:"••••••••"},null,2),[[v,t.value.password]])]),r.value?(m(),p("div",D,[e("p",I,[n(u(A),{size:18,class:"mr-2"}),d(" "+f(r.value),1)])])):g("",!0),l.value?(m(),p("div",P,[e("p",q,[n(u(C),{size:18,class:"mr-2"}),d(" "+f(l.value),1)])])):g("",!0),e("button",{type:"submit",disabled:o.value,class:"w-full px-6 py-3 bg-primary-600 hover:bg-primary-700 disabled:bg-gray-400 text-white font-semibold rounded-lg transition-colors flex items-center justify-center"},[o.value?(m(),L(u(S),{key:0,size:20,class:"mr-2 animate-spin"})):g("",!0),e("span",null,f(o.value?"Anmeldung läuft...":"Anmelden"),1)],8,E),e("div",H,[n(h,{to:"/passwort-vergessen",class:"text-sm text-primary-600 hover:text-primary-700 font-medium"},{default:M(()=>[...s[4]||(s[4]=[d(" Passwort vergessen? ",-1)])]),_:1})])],32)]),e("div",K,[e("p",U,[n(u(N),{size:16,class:"inline mr-1"}),s[5]||(s[5]=d(" Nur für Vereinsmitglieder. Kein Zugang? Kontaktieren Sie den Vorstand. ",-1))])])])])}}};export{Q as default};
diff --git a/.output/public/_nuxt/BMsfuDsV.js b/.output/public/_nuxt/7Il07067.js
similarity index 99%
rename from .output/public/_nuxt/BMsfuDsV.js
rename to .output/public/_nuxt/7Il07067.js
index e2cd1ce..d14c6dc 100644
--- a/.output/public/_nuxt/BMsfuDsV.js
+++ b/.output/public/_nuxt/7Il07067.js
@@ -1,4 +1,4 @@
-import{u as V}from"./Bhv0LDrk.js";import{U as L}from"./DkeYb0_S.js";import{C as D}from"./YJHbYJtA.js";import{e as z,r as _,f as k,g as F,c as a,a as t,F as w,i as S,n as h,b as d,u as m,d as c,o as i,t as n,h as b}from"#entry";import{S as H}from"./XZ6RV9KH.js";import{B as K}from"./CkzaQq3X.js";import{E as T}from"./Cx4UcKGu.js";/**
+import{u as V}from"./BHFrGoXk.js";import{U as L}from"./DkeYb0_S.js";import{C as D}from"./YJHbYJtA.js";import{e as z,r as _,f as k,g as F,c as a,a as t,F as w,i as S,n as h,b as d,u as m,d as c,o as i,t as n,h as b}from"#entry";import{S as H}from"./XZ6RV9KH.js";import{B as K}from"./CkzaQq3X.js";import{E as T}from"./Cx4UcKGu.js";/**
* @license lucide-vue-next v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
diff --git a/.output/public/_nuxt/OxTlf1ZK.js b/.output/public/_nuxt/9Bmm8Ml1.js
similarity index 94%
rename from .output/public/_nuxt/OxTlf1ZK.js
rename to .output/public/_nuxt/9Bmm8Ml1.js
index 226b0c6..c578eb9 100644
--- a/.output/public/_nuxt/OxTlf1ZK.js
+++ b/.output/public/_nuxt/9Bmm8Ml1.js
@@ -1 +1 @@
-import{u as t}from"./Bhv0LDrk.js";import{c as s,j as e,o as r}from"#entry";const l={class:"min-h-full py-16 bg-gray-50"},p={__name:"herren",setup(i){return t({title:"Herrenmannschaften - Harheimer TC"}),(n,a)=>(r(),s("div",l,[...a[0]||(a[0]=[e('
Herrenmannschaften
1. Herren
Liga: Bezirksoberliga
Mannschaftsführer: Name folgt
2. Herren
Liga: Bezirksliga
Mannschaftsführer: Name folgt
3. Herren
Liga: Kreisliga
Mannschaftsführer: Name folgt
',1)])]))}};export{p as default};
+import{u as t}from"./BHFrGoXk.js";import{c as s,p as e,o as r}from"#entry";const l={class:"min-h-full py-16 bg-gray-50"},p={__name:"herren",setup(i){return t({title:"Herrenmannschaften - Harheimer TC"}),(n,a)=>(r(),s("div",l,[...a[0]||(a[0]=[e('
Herrenmannschaften
1. Herren
Liga: Bezirksoberliga
Mannschaftsführer: Name folgt
2. Herren
Liga: Bezirksliga
Mannschaftsführer: Name folgt
3. Herren
Liga: Kreisliga
Mannschaftsführer: Name folgt
',1)])]))}};export{p as default};
diff --git a/.output/public/_nuxt/CxnG1kov.js b/.output/public/_nuxt/B-j_qHre.js
similarity index 98%
rename from .output/public/_nuxt/CxnG1kov.js
rename to .output/public/_nuxt/B-j_qHre.js
index ea1e28a..ab39f44 100644
--- a/.output/public/_nuxt/CxnG1kov.js
+++ b/.output/public/_nuxt/B-j_qHre.js
@@ -1,2 +1,2 @@
-import{u as y}from"./Bhv0LDrk.js";import{C as w}from"./YJHbYJtA.js";import{r as v,f as _,g as k,c as l,a as t,F as D,i as T,b as M,u as F,o as i,t as o,n as z}from"#entry";const S={class:"min-h-full py-16 bg-gray-50"},A={class:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8"},H={key:0,class:"space-y-4"},J={class:"flex items-start space-x-4"},C={class:"flex-shrink-0 w-16 h-16 bg-primary-600 rounded-xl flex flex-col items-center justify-center text-white"},$={class:"text-2xl font-bold"},B={class:"text-xs"},E={class:"flex-1"},N={class:"flex items-start justify-between"},V={class:"text-xl font-semibold text-gray-900 mb-1"},j={class:"text-gray-600 mb-2"},L={class:"text-sm text-gray-500"},O={key:1,class:"text-center py-16 bg-white rounded-xl shadow-lg"},G={__name:"termine",setup(K){const x=v([]),g=_(()=>{const n=new Date;return n.setHours(0,0,0,0),x.value.filter(e=>new Date(e.datum)>=n).sort((e,s)=>new Date(e.datum)-new Date(s.datum))}),h=n=>new Date(n).getDate(),p=n=>{const e=new Date(n);return["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"][e.getMonth()]},b=n=>{const e=new Date(n),s=["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],a=["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"];return`${s[e.getDay()]}, ${e.getDate()}. ${a[e.getMonth()]} ${e.getFullYear()}`},f=async()=>{try{const n=await fetch("/data/termine.csv");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const s=(await n.text()).split(`
+import{u as y}from"./BHFrGoXk.js";import{C as w}from"./YJHbYJtA.js";import{r as v,f as _,g as k,c as l,a as t,F as D,i as T,b as M,u as F,o as i,t as o,n as z}from"#entry";const S={class:"min-h-full py-16 bg-gray-50"},A={class:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8"},H={key:0,class:"space-y-4"},J={class:"flex items-start space-x-4"},C={class:"flex-shrink-0 w-16 h-16 bg-primary-600 rounded-xl flex flex-col items-center justify-center text-white"},$={class:"text-2xl font-bold"},B={class:"text-xs"},E={class:"flex-1"},N={class:"flex items-start justify-between"},V={class:"text-xl font-semibold text-gray-900 mb-1"},j={class:"text-gray-600 mb-2"},L={class:"text-sm text-gray-500"},O={key:1,class:"text-center py-16 bg-white rounded-xl shadow-lg"},G={__name:"termine",setup(K){const x=v([]),g=_(()=>{const n=new Date;return n.setHours(0,0,0,0),x.value.filter(e=>new Date(e.datum)>=n).sort((e,s)=>new Date(e.datum)-new Date(s.datum))}),h=n=>new Date(n).getDate(),p=n=>{const e=new Date(n);return["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"][e.getMonth()]},b=n=>{const e=new Date(n),s=["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],a=["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"];return`${s[e.getDay()]}, ${e.getDate()}. ${a[e.getMonth()]} ${e.getFullYear()}`},f=async()=>{try{const n=await fetch("/data/termine.csv");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const s=(await n.text()).split(`
`).filter(a=>a.trim()!=="");if(s.length<2)return;x.value=s.slice(1).map((a,P)=>{const r=[];let m="",u=!1;for(let d=0;da!==null)}catch(n){console.error("Fehler beim Laden der Termine:",n)}};return k(()=>{f()}),y({title:"Termine & Events - Harheimer TC"}),(n,e)=>(i(),l("div",S,[t("div",A,[e[2]||(e[2]=t("div",{class:"text-center mb-12"},[t("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"}," Termine & Events "),t("div",{class:"w-24 h-1 bg-primary-600 mx-auto mb-6"}),t("p",{class:"text-xl text-gray-600 max-w-3xl mx-auto"}," Alle kommenden Termine und Veranstaltungen des Harheimer TC ")],-1)),g.value.length>0?(i(),l("div",H,[(i(!0),l(D,null,T(g.value,(s,a)=>(i(),l("div",{key:a,class:"bg-white rounded-xl shadow-lg p-6 hover:shadow-xl transition-shadow"},[t("div",J,[t("div",C,[t("span",$,o(h(s.datum)),1),t("span",B,o(p(s.datum)),1)]),t("div",E,[t("div",N,[t("div",null,[t("h3",V,o(s.titel),1),t("p",j,o(s.beschreibung),1),t("p",L,o(b(s.datum)),1)]),t("span",{class:z(["px-3 py-1 text-sm font-medium rounded-full",s.kategorie==="Turnier"?"bg-yellow-100 text-yellow-800":"bg-blue-100 text-blue-800"])},o(s.kategorie),3)])])])]))),128))])):(i(),l("div",O,[M(F(w),{size:64,class:"text-gray-400 mx-auto mb-4"}),e[0]||(e[0]=t("h3",{class:"text-2xl font-semibold text-gray-900 mb-2"},"Keine kommenden Termine",-1)),e[1]||(e[1]=t("p",{class:"text-gray-600"}," Aktuell sind keine Termine geplant. Schauen Sie bald wieder vorbei! ",-1))])),e[3]||(e[3]=t("div",{class:"mt-12 bg-primary-50 border border-primary-100 rounded-xl p-6"},[t("h3",{class:"text-lg font-semibold text-primary-900 mb-2"}," Hinweis "),t("p",{class:"text-primary-800"}," Alle Termine sind vorbehaltlich kurzfristiger Änderungen. Bei Fragen zu einzelnen Veranstaltungen kontaktieren Sie uns gerne. ")],-1))])]))}};export{G as default};
diff --git a/.output/public/_nuxt/91SGRVOW.js b/.output/public/_nuxt/B9EeawL0.js
similarity index 92%
rename from .output/public/_nuxt/91SGRVOW.js
rename to .output/public/_nuxt/B9EeawL0.js
index 8499933..2de0e6b 100644
--- a/.output/public/_nuxt/91SGRVOW.js
+++ b/.output/public/_nuxt/B9EeawL0.js
@@ -1 +1 @@
-import{c as n,a as e,j as r,b as o,d as s,w as l,_ as i,o as d}from"#entry";import{u as g}from"./Bhv0LDrk.js";const p={class:"min-h-full py-16 bg-gray-50"},x={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},m={class:"space-y-8"},u={class:"bg-primary-50 p-8 rounded-xl border border-primary-100"},h={__name:"jugend",setup(b){return g({title:"Jugendmannschaften - Harheimer TC"}),(y,t)=>{const a=i;return d(),n("div",p,[e("div",x,[t[4]||(t[4]=e("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Jugendmannschaften ",-1)),t[5]||(t[5]=e("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),e("div",m,[t[3]||(t[3]=r('
Jugend 1 (U18)
Liga: Bezirksliga
Betreuer: Name folgt
Jugend 2 (U15)
Liga: Kreisliga
Betreuer: Name folgt
',2)),e("div",u,[t[1]||(t[1]=e("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-4"}," Jugendtraining ",-1)),t[2]||(t[2]=e("p",{class:"text-gray-600 mb-6"},[e("strong",null,"Dienstag & Donnerstag:"),s(" 17:00 - 19:00 Uhr"),e("br"),s(" Für Kinder und Jugendliche von 8-18 Jahren ")],-1)),o(a,{to:"/training",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},{default:l(()=>[...t[0]||(t[0]=[s(" Mehr zum Training ",-1)])]),_:1})])])])])}}};export{h as default};
+import{c as n,a as e,p as r,b as o,d as s,w as l,_ as i,o as d}from"#entry";import{u as g}from"./BHFrGoXk.js";const p={class:"min-h-full py-16 bg-gray-50"},x={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},m={class:"space-y-8"},u={class:"bg-primary-50 p-8 rounded-xl border border-primary-100"},h={__name:"jugend",setup(b){return g({title:"Jugendmannschaften - Harheimer TC"}),(y,t)=>{const a=i;return d(),n("div",p,[e("div",x,[t[4]||(t[4]=e("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Jugendmannschaften ",-1)),t[5]||(t[5]=e("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),e("div",m,[t[3]||(t[3]=r('
Jugend 1 (U18)
Liga: Bezirksliga
Betreuer: Name folgt
Jugend 2 (U15)
Liga: Kreisliga
Betreuer: Name folgt
',2)),e("div",u,[t[1]||(t[1]=e("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-4"}," Jugendtraining ",-1)),t[2]||(t[2]=e("p",{class:"text-gray-600 mb-6"},[e("strong",null,"Dienstag & Donnerstag:"),s(" 17:00 - 19:00 Uhr"),e("br"),s(" Für Kinder und Jugendliche von 8-18 Jahren ")],-1)),o(a,{to:"/training",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},{default:l(()=>[...t[0]||(t[0]=[s(" Mehr zum Training ",-1)])]),_:1})])])])])}}};export{h as default};
diff --git a/.output/public/_nuxt/BHFrGoXk.js b/.output/public/_nuxt/BHFrGoXk.js
new file mode 100644
index 0000000..cf52e28
--- /dev/null
+++ b/.output/public/_nuxt/BHFrGoXk.js
@@ -0,0 +1 @@
+import{y as a,z as s,A as r,B as u,C as o}from"#entry";function i(e){const t=e||s();return t?.ssrContext?.head||t?.runWithContext(()=>{if(r())return u(o)})}function x(e,t={}){const n=i(t.nuxt);if(n)return a(e,{head:n,...t})}export{x as u};
diff --git a/.output/public/_nuxt/BS-ozMaL.js b/.output/public/_nuxt/BS-ozMaL.js
new file mode 100644
index 0000000..f5f28fb
--- /dev/null
+++ b/.output/public/_nuxt/BS-ozMaL.js
@@ -0,0 +1,6 @@
+import{e as x,r as p,f as n,g as u,c as y,a as e,t as a,d as m,b as r,w as l,_ as h,o as b,u as d}from"#entry";import{u as f}from"./BHFrGoXk.js";import{U as w}from"./DkeYb0_S.js";import{N as v}from"./DAACT36i.js";/**
+ * @license lucide-vue-next v0.344.0 - ISC
+ *
+ * This source code is licensed under the ISC license.
+ * See the LICENSE file in the root directory of this source tree.
+ */const _=x("UserCogIcon",[["circle",{cx:"18",cy:"15",r:"3",key:"gjjjvw"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M10 15H6a4 4 0 0 0-4 4v2",key:"1nfge6"}],["path",{d:"m21.7 16.4-.9-.3",key:"12j9ji"}],["path",{d:"m15.2 13.9-.9-.3",key:"1fdjdi"}],["path",{d:"m16.6 18.7.3-.9",key:"heedtr"}],["path",{d:"m19.1 12.2.3-.9",key:"1af3ki"}],["path",{d:"m19.6 18.7-.4-1",key:"1x9vze"}],["path",{d:"m16.8 12.3-.4-1",key:"vqeiwj"}],["path",{d:"m14.3 16.6 1-.4",key:"1qlj63"}],["path",{d:"m20.7 13.8 1-.4",key:"1v5t8k"}]]),k={class:"min-h-full py-16 bg-gray-50"},j={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},L={class:"bg-white rounded-xl shadow-lg p-8 mb-8"},M={class:"text-2xl font-display font-bold text-gray-900 mb-4"},N={class:"text-gray-600 mb-4"},z={class:"font-semibold text-primary-600"},V={class:"text-sm text-gray-500"},B={class:"grid md:grid-cols-2 lg:grid-cols-3 gap-6"},C={class:"flex items-center mb-4"},I={class:"w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mr-4"},U={class:"flex items-center mb-4"},D={class:"w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mr-4"},E={class:"flex items-center mb-4"},H={class:"w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mr-4"},T={__name:"index",setup(P){const i=p(null),g=n(()=>({admin:"Administrator",vorstand:"Vorstand",mitglied:"Mitglied"})[i.value?.role]||"Mitglied"),c=n(()=>i.value?.lastLogin?new Date(i.value.lastLogin).toLocaleString("de-DE"):"Erste Anmeldung");return u(async()=>{try{const s=await $fetch("/api/auth/status");s.isLoggedIn&&(i.value=s.user)}catch(s){console.error("Fehler beim Laden der Benutzerdaten:",s)}}),f({title:"Mitgliederbereich - Harheimer TC"}),(s,t)=>{const o=h;return b(),y("div",k,[e("div",j,[t[8]||(t[8]=e("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Mitgliederbereich ",-1)),t[9]||(t[9]=e("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),e("div",L,[e("h2",M," Willkommen, "+a(i.value?.name)+"! ",1),e("p",N,[t[0]||(t[0]=m(" Sie sind als ",-1)),e("span",z,a(g.value),1),t[1]||(t[1]=m(" angemeldet. ",-1))]),e("p",V," Letzter Login: "+a(c.value),1)]),e("div",B,[r(o,{to:"/mitgliederbereich/mitglieder",class:"bg-white p-6 rounded-xl shadow-lg hover:shadow-xl transition-shadow border border-gray-100"},{default:l(()=>[e("div",C,[e("div",I,[r(d(w),{size:24,class:"text-primary-600"})]),t[2]||(t[2]=e("h3",{class:"text-lg font-semibold text-gray-900"},"Mitgliederliste",-1))]),t[3]||(t[3]=e("p",{class:"text-gray-600 text-sm"}," Kontaktdaten aller Vereinsmitglieder ",-1))]),_:1}),r(o,{to:"/mitgliederbereich/news",class:"bg-white p-6 rounded-xl shadow-lg hover:shadow-xl transition-shadow border border-gray-100"},{default:l(()=>[e("div",U,[e("div",D,[r(d(v),{size:24,class:"text-primary-600"})]),t[4]||(t[4]=e("h3",{class:"text-lg font-semibold text-gray-900"},"Interne News",-1))]),t[5]||(t[5]=e("p",{class:"text-gray-600 text-sm"}," Neuigkeiten nur für Mitglieder ",-1))]),_:1}),r(o,{to:"/mitgliederbereich/profil",class:"bg-white p-6 rounded-xl shadow-lg hover:shadow-xl transition-shadow border border-gray-100"},{default:l(()=>[e("div",E,[e("div",H,[r(d(_),{size:24,class:"text-primary-600"})]),t[6]||(t[6]=e("h3",{class:"text-lg font-semibold text-gray-900"},"Mein Profil",-1))]),t[7]||(t[7]=e("p",{class:"text-gray-600 text-sm"}," Profil bearbeiten und Passwort ändern ",-1))]),_:1})])])])}}};export{T as default};
diff --git a/.output/public/_nuxt/BQH-LsLF.js b/.output/public/_nuxt/BVSdBhsj.js
similarity index 98%
rename from .output/public/_nuxt/BQH-LsLF.js
rename to .output/public/_nuxt/BVSdBhsj.js
index f7c040d..5989548 100644
--- a/.output/public/_nuxt/BQH-LsLF.js
+++ b/.output/public/_nuxt/BVSdBhsj.js
@@ -1,2 +1,2 @@
-import{u as N}from"./Bhv0LDrk.js";import{T as k}from"./CrCcIvVp.js";import{r as C,f as u,g as R,c as a,a as t,F as x,i as f,n as h,b as _,u as w,t as d,d as z,o as n,h as V}from"#entry";const F={class:"min-h-full py-16 bg-gray-50"},G={class:"max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"},H={class:"mb-8 flex flex-wrap gap-4"},L=["onClick"],M={key:0,class:"space-y-8"},S={class:"text-2xl font-display font-bold text-gray-900 mb-6 flex items-center"},W={key:0,class:"mb-6 p-4 bg-yellow-50 border border-yellow-200 rounded-lg"},O={class:"text-yellow-800 font-medium"},$={key:1,class:"space-y-6"},A={class:"text-xl font-semibold text-gray-900 mb-4"},K={class:"grid gap-3"},P={class:"flex items-center"},Q={class:"font-semibold text-gray-900"},Y={key:0,class:"text-gray-600"},q={class:"text-sm text-gray-500"},I={key:1,class:"text-center py-12 bg-white rounded-xl shadow-lg"},U={class:"mt-12 bg-gradient-to-r from-primary-600 to-primary-700 rounded-xl p-8 text-white"},X={class:"grid md:grid-cols-3 gap-6"},Z={class:"text-center"},ee={class:"text-3xl font-bold mb-2"},te={class:"text-center"},re={class:"text-3xl font-bold mb-2"},se={class:"text-center"},le={class:"text-3xl font-bold mb-2"},ae={class:"mt-8 text-center"},ne={class:"bg-white rounded-xl shadow-lg p-8 border-l-4 border-primary-600"},oe={class:"text-2xl font-display font-bold text-gray-900 mb-4 flex items-center justify-center"},ge={__name:"vereinsmeisterschaften",setup(ie){const c=C([]),g=C("alle"),J=async()=>{try{const r=await fetch("/data/vereinsmeisterschaften.csv");if(!r.ok)return;const s=(await r.text()).split(`
+import{u as N}from"./BHFrGoXk.js";import{T as k}from"./CrCcIvVp.js";import{r as C,f as u,g as R,c as a,a as t,F as x,i as f,n as h,b as _,u as w,t as d,d as z,o as n,h as V}from"#entry";const F={class:"min-h-full py-16 bg-gray-50"},G={class:"max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"},H={class:"mb-8 flex flex-wrap gap-4"},L=["onClick"],M={key:0,class:"space-y-8"},S={class:"text-2xl font-display font-bold text-gray-900 mb-6 flex items-center"},W={key:0,class:"mb-6 p-4 bg-yellow-50 border border-yellow-200 rounded-lg"},O={class:"text-yellow-800 font-medium"},$={key:1,class:"space-y-6"},A={class:"text-xl font-semibold text-gray-900 mb-4"},K={class:"grid gap-3"},P={class:"flex items-center"},Q={class:"font-semibold text-gray-900"},Y={key:0,class:"text-gray-600"},q={class:"text-sm text-gray-500"},I={key:1,class:"text-center py-12 bg-white rounded-xl shadow-lg"},U={class:"mt-12 bg-gradient-to-r from-primary-600 to-primary-700 rounded-xl p-8 text-white"},X={class:"grid md:grid-cols-3 gap-6"},Z={class:"text-center"},ee={class:"text-3xl font-bold mb-2"},te={class:"text-center"},re={class:"text-3xl font-bold mb-2"},se={class:"text-center"},le={class:"text-3xl font-bold mb-2"},ae={class:"mt-8 text-center"},ne={class:"bg-white rounded-xl shadow-lg p-8 border-l-4 border-primary-600"},oe={class:"text-2xl font-display font-bold text-gray-900 mb-4 flex items-center justify-center"},ge={__name:"vereinsmeisterschaften",setup(ie){const c=C([]),g=C("alle"),J=async()=>{try{const r=await fetch("/data/vereinsmeisterschaften.csv");if(!r.ok)return;const s=(await r.text()).split(`
`).filter(i=>i.trim()!=="");if(s.length<2)return;c.value=s.slice(1).map(i=>{const o=[];let l="",m=!1;for(let b=0;bi!==null)}catch(r){console.error("Fehler beim Laden der Vereinsmeisterschaften:",r)}},j=u(()=>[...new Set(c.value.map(e=>e.jahr).filter(e=>e!==""))].sort((e,s)=>s-e)),E=u(()=>g.value==="alle"?c.value:c.value.filter(r=>r.jahr===g.value)),y=u(()=>{const r={};return E.value.forEach(e=>{if(r[e.jahr]||(r[e.jahr]={kategorien:{},bemerkungen:null}),e.bemerkung&&e.bemerkung!==""){r[e.jahr].bemerkungen=e.bemerkung;return}e.kategorie&&e.kategorie!==""&&(r[e.jahr].kategorien[e.kategorie]||(r[e.jahr].kategorien[e.kategorie]=[]),r[e.jahr].kategorien[e.kategorie].push(e))}),r}),p=u(()=>{const r={};return Object.keys(y.value).sort((s,i)=>i-s).forEach(s=>{r[s]=y.value[s]}),r}),T=u(()=>Object.keys(y.value).sort((r,e)=>e-r)),D=u(()=>c.value.filter(r=>r.kategorie==="Einzel"&&r.platz==="1").length),B=u(()=>c.value.filter(r=>r.kategorie==="Doppel"&&r.platz==="1").length);return R(()=>{J()}),N({title:"Vereinsmeisterschaften - Harheimer TC"}),(r,e)=>(n(),a("div",F,[t("div",G,[e[9]||(e[9]=t("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Vereinsmeisterschaften ",-1)),e[10]||(e[10]=t("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),e[11]||(e[11]=t("p",{class:"text-xl text-gray-600 mb-12"}," Die Ergebnisse unserer Vereinsmeisterschaften der letzten Jahre ",-1)),t("div",H,[(n(!0),a(x,null,f(j.value,s=>(n(),a("button",{key:s,onClick:i=>g.value=s,class:h(["px-4 py-2 rounded-lg font-medium transition-colors",g.value===s?"bg-primary-600 text-white":"bg-white text-gray-700 hover:bg-gray-100 border border-gray-300"])},d(s),11,L))),128)),t("button",{onClick:e[0]||(e[0]=s=>g.value="alle"),class:h(["px-4 py-2 rounded-lg font-medium transition-colors",g.value==="alle"?"bg-primary-600 text-white":"bg-white text-gray-700 hover:bg-gray-100 border border-gray-300"])}," Alle Jahre ",2)]),E.value.length>0?(n(),a("div",M,[(n(!0),a(x,null,f(T.value,s=>(n(),a("div",{key:s,class:"bg-white rounded-xl shadow-lg p-6"},[t("h2",S,[_(w(k),{size:28,class:"text-primary-600 mr-3"}),z(" "+d(s),1)]),p.value[s]?.bemerkungen?(n(),a("div",W,[t("p",O,d(p.value[s].bemerkungen),1)])):V("",!0),p.value[s]?.kategorien?(n(),a("div",$,[(n(!0),a(x,null,f(p.value[s].kategorien,(i,o)=>(n(),a("div",{key:o,class:"border-l-4 border-primary-600 pl-4"},[t("h3",A,d(o),1),t("div",K,[(n(!0),a(x,null,f(i,(l,m)=>(n(),a("div",{key:m,class:h(["flex items-center justify-between p-3 rounded-lg",l.platz==="1"?"bg-yellow-50 border border-yellow-200":l.platz==="2"?"bg-gray-50 border border-gray-200":l.platz==="3"?"bg-orange-50 border border-orange-200":"bg-gray-100"])},[t("div",P,[t("div",{class:h(["w-8 h-8 rounded-full flex items-center justify-center text-sm font-bold mr-3",l.platz==="1"?"bg-yellow-500 text-white":l.platz==="2"?"bg-gray-400 text-white":l.platz==="3"?"bg-orange-500 text-white":"bg-gray-300 text-gray-700"])},d(l.platz),3),t("div",null,[t("span",Q,[z(d(l.spieler1)+" ",1),l.spieler2?(n(),a("span",Y," / "+d(l.spieler2),1)):V("",!0)])])]),t("div",q,d(l.platz==="1"?"Vereinsmeister":l.platz+". Platz"),1)],2))),128))])]))),128))])):V("",!0)]))),128))])):(n(),a("div",I,[_(w(k),{size:48,class:"text-gray-400 mx-auto mb-4"}),e[1]||(e[1]=t("p",{class:"text-gray-600"},"Keine Ergebnisse für das ausgewählte Jahr gefunden.",-1))])),t("div",U,[e[5]||(e[5]=t("h3",{class:"text-2xl font-display font-bold mb-6"},"Statistik",-1)),t("div",X,[t("div",Z,[t("div",ee,d(j.value.length),1),e[2]||(e[2]=t("div",{class:"text-primary-100"},"Jahre mit Meisterschaften",-1))]),t("div",te,[t("div",re,d(D.value),1),e[3]||(e[3]=t("div",{class:"text-primary-100"},"Einzelgewinner",-1))]),t("div",se,[t("div",le,d(B.value),1),e[4]||(e[4]=t("div",{class:"text-primary-100"},"Doppelgewinner",-1))])])]),t("div",ae,[t("div",ne,[t("h3",oe,[_(w(k),{size:32,class:"text-primary-600 mr-3"}),e[6]||(e[6]=z(" Herzlichen Glückwunsch! ",-1))]),e[7]||(e[7]=t("p",{class:"text-lg text-gray-700 leading-relaxed"}," Wir gratulieren allen Teilnehmern und Gewinnern der Vereinsmeisterschaften zu ihren großartigen Leistungen! ",-1)),e[8]||(e[8]=t("p",{class:"text-lg text-gray-700 leading-relaxed mt-4"}," Besonders stolz sind wir auf die kontinuierliche Teilnahme und den fairen Wettkampfgeist unserer Mitglieder. ",-1))])])])]))}};export{ge as default};
diff --git a/.output/public/_nuxt/Bhv0LDrk.js b/.output/public/_nuxt/Bhv0LDrk.js
deleted file mode 100644
index 392e628..0000000
--- a/.output/public/_nuxt/Bhv0LDrk.js
+++ /dev/null
@@ -1 +0,0 @@
-import{x as a,y as s,z as r,A as u,B as o}from"#entry";function i(e){const t=e||s();return t?.ssrContext?.head||t?.runWithContext(()=>{if(r())return u(o)})}function c(e,t={}){const n=i(t.nuxt);if(n)return a(e,{head:n,...t})}export{c as u};
diff --git a/.output/public/_nuxt/B-8zBTYH.js b/.output/public/_nuxt/Bt7nK3rf.js
similarity index 98%
rename from .output/public/_nuxt/B-8zBTYH.js
rename to .output/public/_nuxt/Bt7nK3rf.js
index de7db7a..9a06f5e 100644
--- a/.output/public/_nuxt/B-8zBTYH.js
+++ b/.output/public/_nuxt/Bt7nK3rf.js
@@ -1 +1 @@
-import{u as r}from"./Bhv0LDrk.js";import{c as n,j as s,o as i}from"#entry";const t={class:"min-h-full py-16 bg-gray-50"},g={__name:"geschichte",setup(a){return r({title:"Geschichte - Harheimer TC"}),(d,e)=>(i(),n("div",t,[...e[0]||(e[0]=[s('
Vereinsgeschichte
Die bewegte Geschichte des Harheimer Tischtennis Clubs seit 1954.
Nach dem zweiten Weltkrieg entwickelte sich sprunghaft der Tischtennissport in der Bundesrepublik. Auch in der damaligen Gemeinde Harheim gab es junge Menschen, die an diesem neuen Sport Gefallen fanden, so dass am 10.05.1950 durch deren Initiative eine Tischtennisabteilung innerhalb der Sportgemeinschaft Harheim (SGH) gegründet wurde.
Zu Anfang waren es nur wenige TT-Begeisterte und nur durch deren Idealismus, Opfer und Gemeinschaftssinn wurden die Anfangsschwierigkeiten überwunden. Im Laufe der Zeit kamen auch die Kritiker innerhalb der SGH nicht umhin, die damaligen Tischtennisspieler mit ihrer neuen Sportart anzuerkennen.
10.06.1954 - Gründung des HTC
Bei der am 20.05.1954 stattgefundenen Sitzung der SGH wurde die Trennung der einzelnen Abteilungen beschlossen. Somit sah sich die TT-Abteilung veranlasst, ihren Sportbetrieb in eigener Regie weiterzuführen.
Am 10.06.1954 trafen sich 6 Damen und 22 Herren zur Gründungsversammlung in der Gaststätte „Zum Löwen". Der neu gegründete Verein wurde unter dem Namen "Harheimer Tischtennis-Club" Mitglied des Landessportbundes Hessen.
1964 - Neue Trainingsstätte
Mit der Erbauung der Schulturnhalle im Jahre 1964 stand eine für die damaligen Verhältnisse recht moderne Übungsstätte zur Verfügung, die dem HTC für einen Tag in der Woche überlassen wurde. Damit waren viele Probleme gelöst und es gab einen Aufschwung, der sich in einer steigenden Spielerzahl bemerkbar machte.
1974 - Bürgerhaus
Mit der Erstellung des Bürgerhauses wurde wiederum neuer Trainingsraum geschaffen, der besonders für den Tischtennissport geeignet ist. Der HTC nahm die Gelegenheit war und hielt ab Mai 1974 seine Übungsabende im großen Saal des Bürgerhauses ab.
1976 - Eintragung ins Vereinsregister
Die Eintragung in das Vereinsregister (e. V.) erfolgte im Jahre 1976 und gleichzeitig wurde dem Verein die Gemeinnützigkeit zuerkannt.
1978/79 - Sportlicher Höhepunkt
Ein besonderes Geschenk machten die Spieler des HTC im Jubiläumsjahr ihrem Verein: Die 1. Herrenmannschaft wurde Meister der Bezirksklasse Ffm.-Ost und die 2. Herrenmannschaft Meister der Kreisklasse-A Ffm.-Nord. Nachdem auch die Schülermannschaft Meister ihrer Klasse wurde, ist die Saison 78/79 als absolut sportlicher Höhepunkt in der Vereinsgeschichte zu werten.
Heute
Der HTC hat sich auch in Zukunft zur Aufgabe gemacht, allen interessierten Bürgern und Jugendlichen im Rahmen seiner Möglichkeiten das Tischtennisspielen als Leistungssport oder zur Freizeitgestaltung zu ermöglichen.
',1)])]))}};export{g as default};
+import{u as r}from"./BHFrGoXk.js";import{c as n,p as s,o as i}from"#entry";const t={class:"min-h-full py-16 bg-gray-50"},g={__name:"geschichte",setup(a){return r({title:"Geschichte - Harheimer TC"}),(d,e)=>(i(),n("div",t,[...e[0]||(e[0]=[s('
Vereinsgeschichte
Die bewegte Geschichte des Harheimer Tischtennis Clubs seit 1954.
Nach dem zweiten Weltkrieg entwickelte sich sprunghaft der Tischtennissport in der Bundesrepublik. Auch in der damaligen Gemeinde Harheim gab es junge Menschen, die an diesem neuen Sport Gefallen fanden, so dass am 10.05.1950 durch deren Initiative eine Tischtennisabteilung innerhalb der Sportgemeinschaft Harheim (SGH) gegründet wurde.
Zu Anfang waren es nur wenige TT-Begeisterte und nur durch deren Idealismus, Opfer und Gemeinschaftssinn wurden die Anfangsschwierigkeiten überwunden. Im Laufe der Zeit kamen auch die Kritiker innerhalb der SGH nicht umhin, die damaligen Tischtennisspieler mit ihrer neuen Sportart anzuerkennen.
10.06.1954 - Gründung des HTC
Bei der am 20.05.1954 stattgefundenen Sitzung der SGH wurde die Trennung der einzelnen Abteilungen beschlossen. Somit sah sich die TT-Abteilung veranlasst, ihren Sportbetrieb in eigener Regie weiterzuführen.
Am 10.06.1954 trafen sich 6 Damen und 22 Herren zur Gründungsversammlung in der Gaststätte „Zum Löwen". Der neu gegründete Verein wurde unter dem Namen "Harheimer Tischtennis-Club" Mitglied des Landessportbundes Hessen.
1964 - Neue Trainingsstätte
Mit der Erbauung der Schulturnhalle im Jahre 1964 stand eine für die damaligen Verhältnisse recht moderne Übungsstätte zur Verfügung, die dem HTC für einen Tag in der Woche überlassen wurde. Damit waren viele Probleme gelöst und es gab einen Aufschwung, der sich in einer steigenden Spielerzahl bemerkbar machte.
1974 - Bürgerhaus
Mit der Erstellung des Bürgerhauses wurde wiederum neuer Trainingsraum geschaffen, der besonders für den Tischtennissport geeignet ist. Der HTC nahm die Gelegenheit war und hielt ab Mai 1974 seine Übungsabende im großen Saal des Bürgerhauses ab.
1976 - Eintragung ins Vereinsregister
Die Eintragung in das Vereinsregister (e. V.) erfolgte im Jahre 1976 und gleichzeitig wurde dem Verein die Gemeinnützigkeit zuerkannt.
1978/79 - Sportlicher Höhepunkt
Ein besonderes Geschenk machten die Spieler des HTC im Jubiläumsjahr ihrem Verein: Die 1. Herrenmannschaft wurde Meister der Bezirksklasse Ffm.-Ost und die 2. Herrenmannschaft Meister der Kreisklasse-A Ffm.-Nord. Nachdem auch die Schülermannschaft Meister ihrer Klasse wurde, ist die Saison 78/79 als absolut sportlicher Höhepunkt in der Vereinsgeschichte zu werten.
Heute
Der HTC hat sich auch in Zukunft zur Aufgabe gemacht, allen interessierten Bürgern und Jugendlichen im Rahmen seiner Möglichkeiten das Tischtennisspielen als Leistungssport oder zur Freizeitgestaltung zu ermöglichen.
',1)])]))}};export{g as default};
diff --git a/.output/public/_nuxt/D3zFABjp.js b/.output/public/_nuxt/BvMz9Jgl.js
similarity index 95%
rename from .output/public/_nuxt/D3zFABjp.js
rename to .output/public/_nuxt/BvMz9Jgl.js
index cae8a25..d534e10 100644
--- a/.output/public/_nuxt/D3zFABjp.js
+++ b/.output/public/_nuxt/BvMz9Jgl.js
@@ -1 +1 @@
-import{c as n,a as s,b as a,w as o,_ as r,o as l,d as i}from"#entry";import{u as m}from"./Bhv0LDrk.js";const d={class:"min-h-full py-16 bg-gray-50"},x={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},p={class:"bg-white p-8 rounded-xl shadow-lg"},f={class:"mt-8"},h={__name:"damen",setup(g){return m({title:"Damenmannschaft - Harheimer TC"}),(u,t)=>{const e=r;return l(),n("div",d,[s("div",x,[t[6]||(t[6]=s("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Damenmannschaft ",-1)),t[7]||(t[7]=s("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),s("div",p,[t[3]||(t[3]=s("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-4"},"1. Damen",-1)),t[4]||(t[4]=s("p",{class:"text-gray-600 mb-4"},"Liga: Bezirksliga",-1)),t[5]||(t[5]=s("p",{class:"text-gray-600 mb-6"},"Mannschaftsführerin: Name folgt",-1)),s("div",f,[t[1]||(t[1]=s("h4",{class:"text-lg font-semibold text-gray-900 mb-4"},"Wir suchen Verstärkung!",-1)),t[2]||(t[2]=s("p",{class:"text-gray-600 mb-4"}," Unsere Damenmannschaft freut sich über neue Spielerinnen. Interessiert? Dann melde dich bei uns! ",-1)),a(e,{to:"/kontakt",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},{default:o(()=>[...t[0]||(t[0]=[i(" Kontakt aufnehmen ",-1)])]),_:1})])])])])}}};export{h as default};
+import{c as n,a as s,b as a,w as o,_ as r,o as l,d as i}from"#entry";import{u as m}from"./BHFrGoXk.js";const d={class:"min-h-full py-16 bg-gray-50"},x={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},p={class:"bg-white p-8 rounded-xl shadow-lg"},f={class:"mt-8"},h={__name:"damen",setup(g){return m({title:"Damenmannschaft - Harheimer TC"}),(u,t)=>{const e=r;return l(),n("div",d,[s("div",x,[t[6]||(t[6]=s("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Damenmannschaft ",-1)),t[7]||(t[7]=s("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),s("div",p,[t[3]||(t[3]=s("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-4"},"1. Damen",-1)),t[4]||(t[4]=s("p",{class:"text-gray-600 mb-4"},"Liga: Bezirksliga",-1)),t[5]||(t[5]=s("p",{class:"text-gray-600 mb-6"},"Mannschaftsführerin: Name folgt",-1)),s("div",f,[t[1]||(t[1]=s("h4",{class:"text-lg font-semibold text-gray-900 mb-4"},"Wir suchen Verstärkung!",-1)),t[2]||(t[2]=s("p",{class:"text-gray-600 mb-4"}," Unsere Damenmannschaft freut sich über neue Spielerinnen. Interessiert? Dann melde dich bei uns! ",-1)),a(e,{to:"/kontakt",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},{default:o(()=>[...t[0]||(t[0]=[i(" Kontakt aufnehmen ",-1)])]),_:1})])])])])}}};export{h as default};
diff --git a/.output/public/_nuxt/C8kQt0fa.js b/.output/public/_nuxt/C8kQt0fa.js
new file mode 100644
index 0000000..0f5d96f
--- /dev/null
+++ b/.output/public/_nuxt/C8kQt0fa.js
@@ -0,0 +1,6 @@
+import{e}from"#entry";/**
+ * @license lucide-vue-next v0.344.0 - ISC
+ *
+ * This source code is licensed under the ISC license.
+ * See the LICENSE file in the root directory of this source tree.
+ */const r=e("AlertCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);export{r as A};
diff --git a/.output/public/_nuxt/CuqbzRJp.js b/.output/public/_nuxt/CG6EwBRh.js
similarity index 98%
rename from .output/public/_nuxt/CuqbzRJp.js
rename to .output/public/_nuxt/CG6EwBRh.js
index 864a1b1..67ec4b3 100644
--- a/.output/public/_nuxt/CuqbzRJp.js
+++ b/.output/public/_nuxt/CG6EwBRh.js
@@ -1 +1 @@
-import{c as a,o as i,a as e,t as r,b as u,w as c,d as l,_ as d}from"#entry";import{_ as p}from"./DlAUqK2U.js";import{u as f}from"./Bhv0LDrk.js";const m={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},g={class:"max-w-520px text-center z-20"},b=["textContent"],h=["textContent"],x={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return f({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,o)=>{const s=d;return i(),a("div",m,[o[0]||(o[0]=e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),e("div",g,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:r(t.statusCode)},null,8,b),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:r(t.description)},null,8,h),e("div",x,[u(s,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:c(()=>[l(r(t.backHome),1)]),_:1})])])])}}},z=p(y,[["__scopeId","data-v-06403dcb"]]);export{z as default};
+import{c as a,o as i,a as e,t as r,b as u,w as c,d as l,_ as d}from"#entry";import{_ as p}from"./DlAUqK2U.js";import{u as f}from"./BHFrGoXk.js";const m={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},g={class:"max-w-520px text-center z-20"},b=["textContent"],h=["textContent"],x={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return f({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,o)=>{const s=d;return i(),a("div",m,[o[0]||(o[0]=e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),e("div",g,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:r(t.statusCode)},null,8,b),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:r(t.description)},null,8,h),e("div",x,[u(s,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:c(()=>[l(r(t.backHome),1)]),_:1})])])])}}},z=p(y,[["__scopeId","data-v-06403dcb"]]);export{z as default};
diff --git a/.output/public/_nuxt/CemKpROJ.js b/.output/public/_nuxt/CIqfbIjz.js
similarity index 94%
rename from .output/public/_nuxt/CemKpROJ.js
rename to .output/public/_nuxt/CIqfbIjz.js
index cf8fb0b..306ae53 100644
--- a/.output/public/_nuxt/CemKpROJ.js
+++ b/.output/public/_nuxt/CIqfbIjz.js
@@ -1,4 +1,4 @@
-import{e as o,c as s,o as r,a as e,j as p,b as l,w as h,d as u,_ as g,F as x,i as b,k as f,l as y,t as a}from"#entry";import{H as _}from"./CWEkTB1z.js";import{T as w}from"./B4mSF5Ac.js";import{u as k}from"./Bhv0LDrk.js";/**
+import{e as o,c as s,o as r,a as e,p,b as l,w as h,d as u,_ as g,F as x,i as b,l as f,q as y,t as a}from"#entry";import{H as _}from"./CWEkTB1z.js";import{T as w}from"./B4mSF5Ac.js";import{u as k}from"./BHFrGoXk.js";/**
* @license lucide-vue-next v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
diff --git a/.output/public/_nuxt/CPBCerx_.js b/.output/public/_nuxt/CPBCerx_.js
new file mode 100644
index 0000000..c6bbeb4
--- /dev/null
+++ b/.output/public/_nuxt/CPBCerx_.js
@@ -0,0 +1,6 @@
+import{e as w,r as d,c as f,a as s,j as h,h as b,k as l,v as n,b as u,d as m,u as p,t as y,l as k,w as M,_ as P,o as g,m as V}from"#entry";import{u as _}from"./BHFrGoXk.js";import{A as B}from"./C8kQt0fa.js";import{C as I}from"./DaSgy0Cl.js";import{L as R}from"./CUq_0rkE.js";/**
+ * @license lucide-vue-next v0.344.0 - ISC
+ *
+ * This source code is licensed under the ISC license.
+ * See the LICENSE file in the root directory of this source tree.
+ */const S=w("InfoIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]),T={class:"min-h-full flex items-center justify-center py-16 px-4 sm:px-6 lg:px-8 bg-gray-50"},C={class:"max-w-md w-full space-y-8"},L={class:"bg-white rounded-xl shadow-lg p-8"},N={key:0,class:"bg-red-50 border border-red-200 rounded-lg p-4"},Z={class:"text-sm text-red-800 flex items-center"},z={key:1,class:"bg-green-50 border border-green-200 rounded-lg p-4"},D={class:"text-sm text-green-800 flex items-center"},U=["disabled"],q={class:"text-center"},E={class:"bg-yellow-50 border border-yellow-200 rounded-lg p-4"},j={class:"text-sm text-yellow-800"},G={__name:"registrieren",setup(A){const r=d({name:"",email:"",phone:"",password:"",confirmPassword:""}),o=d(!1),a=d(""),i=d(""),v=async()=>{if(a.value="",i.value="",r.value.password.length<8){a.value="Das Passwort muss mindestens 8 Zeichen lang sein.";return}if(r.value.password!==r.value.confirmPassword){a.value="Die Passwörter stimmen nicht überein.";return}o.value=!0;try{(await $fetch("/api/auth/register",{method:"POST",body:{name:r.value.name,email:r.value.email,phone:r.value.phone,password:r.value.password}})).success&&(i.value="Registrierung erfolgreich! Sie erhalten eine E-Mail, sobald Ihr Zugang freigeschaltet wurde.",r.value={name:"",email:"",phone:"",password:"",confirmPassword:""},setTimeout(()=>{V("/login")},3e3))}catch(c){a.value=c.data?.message||"Registrierung fehlgeschlagen. Bitte versuchen Sie es später erneut."}finally{o.value=!1}};return _({title:"Registrierung - Harheimer TC"}),(c,e)=>{const x=P;return g(),f("div",T,[s("div",C,[e[14]||(e[14]=s("div",{class:"text-center"},[s("h2",{class:"text-3xl font-display font-bold text-gray-900"}," Registrierung "),s("p",{class:"mt-2 text-sm text-gray-600"}," Beantragen Sie Zugang zum Mitgliederbereich ")],-1)),s("div",L,[s("form",{onSubmit:h(v,["prevent"]),class:"space-y-6"},[s("div",null,[e[5]||(e[5]=s("label",{for:"name",class:"block text-sm font-medium text-gray-700 mb-2"}," Vollständiger Name ",-1)),l(s("input",{id:"name","onUpdate:modelValue":e[0]||(e[0]=t=>r.value.name=t),type:"text",required:"",autocomplete:"name",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all",placeholder:"Max Mustermann"},null,512),[[n,r.value.name]])]),s("div",null,[e[6]||(e[6]=s("label",{for:"email",class:"block text-sm font-medium text-gray-700 mb-2"}," E-Mail-Adresse ",-1)),l(s("input",{id:"email","onUpdate:modelValue":e[1]||(e[1]=t=>r.value.email=t),type:"email",required:"",autocomplete:"email",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all",placeholder:"ihre-email@example.com"},null,512),[[n,r.value.email]])]),s("div",null,[e[7]||(e[7]=s("label",{for:"phone",class:"block text-sm font-medium text-gray-700 mb-2"}," Telefonnummer (optional) ",-1)),l(s("input",{id:"phone","onUpdate:modelValue":e[2]||(e[2]=t=>r.value.phone=t),type:"tel",autocomplete:"tel",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all",placeholder:"069-12345678"},null,512),[[n,r.value.phone]])]),s("div",null,[e[8]||(e[8]=s("label",{for:"password",class:"block text-sm font-medium text-gray-700 mb-2"}," Passwort ",-1)),l(s("input",{id:"password","onUpdate:modelValue":e[3]||(e[3]=t=>r.value.password=t),type:"password",required:"",autocomplete:"new-password",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all",placeholder:"••••••••"},null,512),[[n,r.value.password]]),e[9]||(e[9]=s("p",{class:"mt-1 text-xs text-gray-500"}," Mindestens 8 Zeichen ",-1))]),s("div",null,[e[10]||(e[10]=s("label",{for:"confirmPassword",class:"block text-sm font-medium text-gray-700 mb-2"}," Passwort bestätigen ",-1)),l(s("input",{id:"confirmPassword","onUpdate:modelValue":e[4]||(e[4]=t=>r.value.confirmPassword=t),type:"password",required:"",autocomplete:"new-password",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all",placeholder:"••••••••"},null,512),[[n,r.value.confirmPassword]])]),a.value?(g(),f("div",N,[s("p",Z,[u(p(B),{size:18,class:"mr-2"}),m(" "+y(a.value),1)])])):b("",!0),i.value?(g(),f("div",z,[s("p",D,[u(p(I),{size:18,class:"mr-2"}),m(" "+y(i.value),1)])])):b("",!0),s("button",{type:"submit",disabled:o.value,class:"w-full px-6 py-3 bg-primary-600 hover:bg-primary-700 disabled:bg-gray-400 text-white font-semibold rounded-lg transition-colors flex items-center justify-center"},[o.value?(g(),k(p(R),{key:0,size:20,class:"mr-2 animate-spin"})):b("",!0),s("span",null,y(o.value?"Wird gesendet...":"Registrierung beantragen"),1)],8,U),s("div",q,[u(x,{to:"/login",class:"text-sm text-primary-600 hover:text-primary-700 font-medium"},{default:M(()=>[...e[11]||(e[11]=[m(" Bereits registriert? Zum Login ",-1)])]),_:1})])],32)]),s("div",E,[s("p",j,[u(p(S),{size:16,class:"inline mr-1"}),e[12]||(e[12]=s("strong",null,"Hinweis:",-1)),e[13]||(e[13]=m(" Ihre Registrierung muss vom Vorstand freigegeben werden. Sie erhalten eine E-Mail, sobald Ihr Zugang aktiviert wurde. ",-1))])])])])}}};export{G as default};
diff --git a/.output/public/_nuxt/CUq_0rkE.js b/.output/public/_nuxt/CUq_0rkE.js
new file mode 100644
index 0000000..bb4e44d
--- /dev/null
+++ b/.output/public/_nuxt/CUq_0rkE.js
@@ -0,0 +1,6 @@
+import{e as a}from"#entry";/**
+ * @license lucide-vue-next v0.344.0 - ISC
+ *
+ * This source code is licensed under the ISC license.
+ * See the LICENSE file in the root directory of this source tree.
+ */const o=a("Loader2Icon",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);export{o as L};
diff --git a/.output/public/_nuxt/CYBxhx9-.js b/.output/public/_nuxt/CYBxhx9-.js
new file mode 100644
index 0000000..51d4762
--- /dev/null
+++ b/.output/public/_nuxt/CYBxhx9-.js
@@ -0,0 +1,65 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DuCL6zMI.js","./YJHbYJtA.js","./DlAUqK2U.js","./index.BYYJS8tV.css","./0HxIkpDh.js","./BHFrGoXk.js","./C8kQt0fa.js","./DaSgy0Cl.js","./CUq_0rkE.js","./DjgE_sEr.js","./HjuZPL1x.js","./WIFjVsoU.js","./C5SyyWEb.js","./MfuAw3Pu.js","./BteKZQ9T.js","./B-j_qHre.js","./DosETvDb.js","./DrcpzAie.js","./DAACT36i.js","./DkeYb0_S.js","./C_7cz6DH.js","./Czdc6-TI.js","./CYU0Dj4j.js","./B4mSF5Ac.js","./CrCcIvVp.js","./CkzaQq3X.js","./CIqfbIjz.js","./CWEkTB1z.js","./Bt7nK3rf.js","./CPBCerx_.js","./7Il07067.js","./XZ6RV9KH.js","./Cx4UcKGu.js","./DdCvOctW.js","./CxCUaO3C.js","./CnDB0aJH.js","./BvMz9Jgl.js","./Cc_YSIsc.js","./jVj3QaoK.js","./wEYEdgGa.js","./p9tSJNbO.js","./DCNxe3RA.js","./9Bmm8Ml1.js","./B9EeawL0.js","./BVSdBhsj.js","./BS-ozMaL.js","./Cu9pESPT.js","./CG6EwBRh.js","./error-404.BSvats-j.css","./DdaR8fUb.js","./error-500.DOWD7OuR.css"])))=>i.map(i=>d[i]);
+(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();/**
+* @vue/shared v3.5.22
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function ao(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const he={},un=[],ht=()=>{},da=()=>!1,er=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),lo=e=>e.startsWith("onUpdate:"),ke=Object.assign,co=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ec=Object.prototype.hasOwnProperty,de=(e,t)=>Ec.call(e,t),Y=Array.isArray,fn=e=>tr(e)==="[object Map]",pa=e=>tr(e)==="[object Set]",Tc=e=>tr(e)==="[object RegExp]",X=e=>typeof e=="function",_e=e=>typeof e=="string",Dt=e=>typeof e=="symbol",ge=e=>e!==null&&typeof e=="object",ha=e=>(ge(e)||X(e))&&X(e.then)&&X(e.catch),ga=Object.prototype.toString,tr=e=>ga.call(e),Rc=e=>tr(e).slice(8,-1),ma=e=>tr(e)==="[object Object]",uo=e=>_e(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,dn=ao(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ur=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Cc=/-\w/g,rt=Ur(e=>e.replace(Cc,t=>t.slice(1).toUpperCase())),Ac=/\B([A-Z])/g,en=Ur(e=>e.replace(Ac,"-$1").toLowerCase()),Vr=Ur(e=>e.charAt(0).toUpperCase()+e.slice(1)),rs=Ur(e=>e?`on${Vr(e)}`:""),Ht=(e,t)=>!Object.is(e,t),pn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Ss=e=>{const t=parseFloat(e);return isNaN(t)?e:t},va=e=>{const t=_e(e)?Number(e):NaN;return isNaN(t)?e:t};let Bo;const Wr=()=>Bo||(Bo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Kr(e){if(Y(e)){const t={};for(let n=0;n{if(n){const r=n.split(kc);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function ot(e){let t="";if(_e(e))t=e;else if(Y(e))for(let n=0;n!!(e&&e.__v_isRef===!0),Tr=e=>_e(e)?e:e==null?"":Y(e)||ge(e)&&(e.toString===ga||!X(e.toString))?ba(e)?Tr(e.value):JSON.stringify(e,wa,2):String(e),wa=(e,t)=>ba(t)?wa(e,t.value):fn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[ss(r,o)+" =>"]=s,n),{})}:pa(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ss(n))}:Dt(t)?ss(t):ge(t)&&!Y(t)&&!ma(t)?String(t):t,ss=(e,t="")=>{var n;return Dt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
+* @vue/reactivity v3.5.22
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let Le;class xa{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Le,!t&&Le&&(this.index=(Le.scopes||(Le.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(Le=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if($n){let t=$n;for($n=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;jn;){let t=jn;for(jn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Aa(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Sa(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),ho(r),Hc(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function ks(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ka(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ka(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Gn)||(e.globalVersion=Gn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ks(e))))return;e.flags|=2;const t=e.dep,n=ye,r=at;ye=e,at=!0;try{Aa(e);const s=e.fn(e._value);(t.version===0||Ht(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{ye=n,at=r,Sa(e),e.flags&=-3}}function ho(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)ho(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Hc(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let at=!0;const Pa=[];function Et(){Pa.push(at),at=!1}function Tt(){const e=Pa.pop();at=e===void 0?!0:e}function Uo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ye;ye=void 0;try{t()}finally{ye=n}}}let Gn=0;class Dc{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class go{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ye||!at||ye===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ye)n=this.activeLink=new Dc(ye,this),ye.deps?(n.prevDep=ye.depsTail,ye.depsTail.nextDep=n,ye.depsTail=n):ye.deps=ye.depsTail=n,Oa(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=ye.depsTail,n.nextDep=void 0,ye.depsTail.nextDep=n,ye.depsTail=n,ye.deps===n&&(ye.deps=r)}return n}trigger(t){this.version++,Gn++,this.notify(t)}notify(t){fo();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{po()}}}function Oa(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Oa(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Rr=new WeakMap,qt=Symbol(""),Ps=Symbol(""),qn=Symbol("");function He(e,t,n){if(at&&ye){let r=Rr.get(e);r||Rr.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new go),s.map=r,s.key=n),s.track()}}function bt(e,t,n,r,s,o){const i=Rr.get(e);if(!i){Gn++;return}const a=c=>{c&&c.trigger()};if(fo(),t==="clear")i.forEach(a);else{const c=Y(e),p=c&&uo(n);if(c&&n==="length"){const l=Number(r);i.forEach((f,u)=>{(u==="length"||u===qn||!Dt(u)&&u>=l)&&a(f)})}else switch((n!==void 0||i.has(void 0))&&a(i.get(n)),p&&a(i.get(qn)),t){case"add":c?p&&a(i.get("length")):(a(i.get(qt)),fn(e)&&a(i.get(Ps)));break;case"delete":c||(a(i.get(qt)),fn(e)&&a(i.get(Ps)));break;case"set":fn(e)&&a(i.get(qt));break}}po()}function jc(e,t){const n=Rr.get(e);return n&&n.get(t)}function rn(e){const t=le(e);return t===e?t:(He(t,"iterate",qn),nt(e)?t:t.map(Ie))}function Gr(e){return He(e=le(e),"iterate",qn),e}const $c={__proto__:null,[Symbol.iterator](){return is(this,Symbol.iterator,Ie)},concat(...e){return rn(this).concat(...e.map(t=>Y(t)?rn(t):t))},entries(){return is(this,"entries",e=>(e[1]=Ie(e[1]),e))},every(e,t){return gt(this,"every",e,t,void 0,arguments)},filter(e,t){return gt(this,"filter",e,t,n=>n.map(Ie),arguments)},find(e,t){return gt(this,"find",e,t,Ie,arguments)},findIndex(e,t){return gt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return gt(this,"findLast",e,t,Ie,arguments)},findLastIndex(e,t){return gt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return gt(this,"forEach",e,t,void 0,arguments)},includes(...e){return as(this,"includes",e)},indexOf(...e){return as(this,"indexOf",e)},join(e){return rn(this).join(e)},lastIndexOf(...e){return as(this,"lastIndexOf",e)},map(e,t){return gt(this,"map",e,t,void 0,arguments)},pop(){return In(this,"pop")},push(...e){return In(this,"push",e)},reduce(e,...t){return Vo(this,"reduce",e,t)},reduceRight(e,...t){return Vo(this,"reduceRight",e,t)},shift(){return In(this,"shift")},some(e,t){return gt(this,"some",e,t,void 0,arguments)},splice(...e){return In(this,"splice",e)},toReversed(){return rn(this).toReversed()},toSorted(e){return rn(this).toSorted(e)},toSpliced(...e){return rn(this).toSpliced(...e)},unshift(...e){return In(this,"unshift",e)},values(){return is(this,"values",Ie)}};function is(e,t,n){const r=Gr(e),s=r[t]();return r!==e&&!nt(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.done||(o.value=n(o.value)),o}),s}const Fc=Array.prototype;function gt(e,t,n,r,s,o){const i=Gr(e),a=i!==e&&!nt(e),c=i[t];if(c!==Fc[t]){const f=c.apply(e,o);return a?Ie(f):f}let p=n;i!==e&&(a?p=function(f,u){return n.call(this,Ie(f),u,e)}:n.length>2&&(p=function(f,u){return n.call(this,f,u,e)}));const l=c.call(i,p,r);return a&&s?s(l):l}function Vo(e,t,n,r){const s=Gr(e);let o=n;return s!==e&&(nt(e)?n.length>3&&(o=function(i,a,c){return n.call(this,i,a,c,e)}):o=function(i,a,c){return n.call(this,i,Ie(a),c,e)}),s[t](o,...r)}function as(e,t,n){const r=le(e);He(r,"iterate",qn);const s=r[t](...n);return(s===-1||s===!1)&&vo(n[0])?(n[0]=le(n[0]),r[t](...n)):s}function In(e,t,n=[]){Et(),fo();const r=le(e)[t].apply(e,n);return po(),Tt(),r}const Bc=ao("__proto__,__v_isRef,__isVue"),Ia=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Dt));function Uc(e){Dt(e)||(e=String(e));const t=le(this);return He(t,"has",e),t.hasOwnProperty(e)}class Ma{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?Xc:Da:o?Ha:La).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=Y(t);if(!s){let c;if(i&&(c=$c[n]))return c;if(n==="hasOwnProperty")return Uc}const a=Reflect.get(t,n,Ae(t)?t:r);if((Dt(n)?Ia.has(n):Bc(n))||(s||He(t,"get",n),o))return a;if(Ae(a)){const c=i&&uo(n)?a:a.value;return s&&ge(c)?Is(c):c}return ge(a)?s?Is(a):jt(a):a}}class Na extends Ma{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=Rt(o);if(!nt(r)&&!Rt(r)&&(o=le(o),r=le(r)),!Y(t)&&Ae(o)&&!Ae(r))return c||(o.value=r),!0}const i=Y(t)&&uo(n)?Number(n)e,ar=e=>Reflect.getPrototypeOf(e);function qc(e,t,n){return function(...r){const s=this.__v_raw,o=le(s),i=fn(o),a=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,p=s[e](...r),l=n?Os:t?Cr:Ie;return!t&&He(o,"iterate",c?Ps:qt),{next(){const{value:f,done:u}=p.next();return u?{value:f,done:u}:{value:a?[l(f[0]),l(f[1])]:l(f),done:u}},[Symbol.iterator](){return this}}}}function lr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function zc(e,t){const n={get(s){const o=this.__v_raw,i=le(o),a=le(s);e||(Ht(s,a)&&He(i,"get",s),He(i,"get",a));const{has:c}=ar(i),p=t?Os:e?Cr:Ie;if(c.call(i,s))return p(o.get(s));if(c.call(i,a))return p(o.get(a));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&He(le(s),"iterate",qt),s.size},has(s){const o=this.__v_raw,i=le(o),a=le(s);return e||(Ht(s,a)&&He(i,"has",s),He(i,"has",a)),s===a?o.has(s):o.has(s)||o.has(a)},forEach(s,o){const i=this,a=i.__v_raw,c=le(a),p=t?Os:e?Cr:Ie;return!e&&He(c,"iterate",qt),a.forEach((l,f)=>s.call(o,p(l),p(f),i))}};return ke(n,e?{add:lr("add"),set:lr("set"),delete:lr("delete"),clear:lr("clear")}:{add(s){!t&&!nt(s)&&!Rt(s)&&(s=le(s));const o=le(this);return ar(o).has.call(o,s)||(o.add(s),bt(o,"add",s,s)),this},set(s,o){!t&&!nt(o)&&!Rt(o)&&(o=le(o));const i=le(this),{has:a,get:c}=ar(i);let p=a.call(i,s);p||(s=le(s),p=a.call(i,s));const l=c.call(i,s);return i.set(s,o),p?Ht(o,l)&&bt(i,"set",s,o):bt(i,"add",s,o),this},delete(s){const o=le(this),{has:i,get:a}=ar(o);let c=i.call(o,s);c||(s=le(s),c=i.call(o,s)),a&&a.call(o,s);const p=o.delete(s);return c&&bt(o,"delete",s,void 0),p},clear(){const s=le(this),o=s.size!==0,i=s.clear();return o&&bt(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=qc(s,e,t)}),n}function mo(e,t){const n=zc(e,t);return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(de(n,s)&&s in r?n:r,s,o)}const Jc={get:mo(!1,!1)},Yc={get:mo(!1,!0)},Qc={get:mo(!0,!1)};const La=new WeakMap,Ha=new WeakMap,Da=new WeakMap,Xc=new WeakMap;function Zc(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function eu(e){return e.__v_skip||!Object.isExtensible(e)?0:Zc(Rc(e))}function jt(e){return Rt(e)?e:yo(e,!1,Wc,Jc,La)}function xt(e){return yo(e,!1,Gc,Yc,Ha)}function Is(e){return yo(e,!0,Kc,Qc,Da)}function yo(e,t,n,r,s){if(!ge(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=eu(e);if(o===0)return e;const i=s.get(e);if(i)return i;const a=new Proxy(e,o===2?r:n);return s.set(e,a),a}function zt(e){return Rt(e)?zt(e.__v_raw):!!(e&&e.__v_isReactive)}function Rt(e){return!!(e&&e.__v_isReadonly)}function nt(e){return!!(e&&e.__v_isShallow)}function vo(e){return e?!!e.__v_raw:!1}function le(e){const t=e&&e.__v_raw;return t?le(t):e}function tu(e){return!de(e,"__v_skip")&&Object.isExtensible(e)&&ya(e,"__v_skip",!0),e}const Ie=e=>ge(e)?jt(e):e,Cr=e=>ge(e)?Is(e):e;function Ae(e){return e?e.__v_isRef===!0:!1}function Se(e){return ja(e,!1)}function bn(e){return ja(e,!0)}function ja(e,t){return Ae(e)?e:new nu(e,t)}class nu{constructor(t,n){this.dep=new go,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:le(t),this._value=n?t:Ie(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||nt(t)||Rt(t);t=r?t:le(t),Ht(t,n)&&(this._rawValue=t,this._value=r?t:Ie(t),this.dep.trigger())}}function ne(e){return Ae(e)?e.value:e}function ru(e){return X(e)?e():ne(e)}const su={get:(e,t,n)=>t==="__v_raw"?e:ne(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return Ae(s)&&!Ae(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function $a(e){return zt(e)?e:new Proxy(e,su)}class ou{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return jc(le(this._object),this._key)}}class iu{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function au(e,t,n){return Ae(e)?e:X(e)?new iu(e):ge(e)&&arguments.length>1?lu(e,t,n):Se(e)}function lu(e,t,n){const r=e[t];return Ae(r)?r:new ou(e,t,n)}class cu{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new go(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Gn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&ye!==this)return Ca(this,!0),!0}get value(){const t=this.dep.track();return ka(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function uu(e,t,n=!1){let r,s;return X(e)?r=e:(r=e.get,s=e.set),new cu(r,s,n)}const cr={},Ar=new WeakMap;let Wt;function fu(e,t=!1,n=Wt){if(n){let r=Ar.get(n);r||Ar.set(n,r=[]),r.push(e)}}function du(e,t,n=he){const{immediate:r,deep:s,once:o,scheduler:i,augmentJob:a,call:c}=n,p=v=>s?v:nt(v)||s===!1||s===0?wt(v,1):wt(v);let l,f,u,d,m=!1,_=!1;if(Ae(e)?(f=()=>e.value,m=nt(e)):zt(e)?(f=()=>p(e),m=!0):Y(e)?(_=!0,m=e.some(v=>zt(v)||nt(v)),f=()=>e.map(v=>{if(Ae(v))return v.value;if(zt(v))return p(v);if(X(v))return c?c(v,2):v()})):X(e)?t?f=c?()=>c(e,2):e:f=()=>{if(u){Et();try{u()}finally{Tt()}}const v=Wt;Wt=l;try{return c?c(e,3,[d]):e(d)}finally{Wt=v}}:f=ht,t&&s){const v=f,b=s===!0?1/0:s;f=()=>wt(v(),b)}const T=Ea(),E=()=>{l.stop(),T&&T.active&&co(T.effects,l)};if(o&&t){const v=t;t=(...b)=>{v(...b),E()}}let w=_?new Array(e.length).fill(cr):cr;const g=v=>{if(!(!(l.flags&1)||!l.dirty&&!v))if(t){const b=l.run();if(s||m||(_?b.some((A,L)=>Ht(A,w[L])):Ht(b,w))){u&&u();const A=Wt;Wt=l;try{const L=[b,w===cr?void 0:_&&w[0]===cr?[]:w,d];w=b,c?c(t,3,L):t(...L)}finally{Wt=A}}}else l.run()};return a&&a(g),l=new Ta(f),l.scheduler=i?()=>i(g,!1):g,d=v=>fu(v,!1,l),u=l.onStop=()=>{const v=Ar.get(l);if(v){if(c)c(v,4);else for(const b of v)b();Ar.delete(l)}},t?r?g(!0):w=l.run():i?i(g.bind(null,!0),!0):l.run(),E.pause=l.pause.bind(l),E.resume=l.resume.bind(l),E.stop=E,E}function wt(e,t=1/0,n){if(t<=0||!ge(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Ae(e))wt(e.value,t,n);else if(Y(e))for(let r=0;r{wt(r,t,n)});else if(ma(e)){for(const r in e)wt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&wt(e[r],t,n)}return e}/**
+* @vue/runtime-core v3.5.22
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function nr(e,t,n,r){try{return r?e(...r):e()}catch(s){An(s,t,n)}}function lt(e,t,n,r){if(X(e)){const s=nr(e,t,n,r);return s&&ha(s)&&s.catch(o=>{An(o,t,n)}),s}if(Y(e)){const s=[];for(let o=0;o>>1,s=Fe[r],o=Jn(s);o=Jn(n)?Fe.push(e):Fe.splice(hu(t),0,e),e.flags|=1,Ba()}}function Ba(){Sr||(Sr=Fa.then(Ua))}function Ms(e){Y(e)?hn.push(...e):Mt&&e.id===-1?Mt.splice(on+1,0,e):e.flags&1||(hn.push(e),e.flags|=1),Ba()}function Wo(e,t,n=dt+1){for(;nJn(n)-Jn(r));if(hn.length=0,Mt){Mt.push(...t);return}for(Mt=t,on=0;one.id==null?e.flags&2?-1:1/0:e.id;function Ua(e){try{for(dt=0;dt{r._d&&Lr(-1);const o=Pr(t);let i;try{i=e(...s)}finally{Pr(o),r._d&&Lr(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Jm(e,t){if(Qe===null)return e;const n=Yr(Qe),r=e.dirs||(e.dirs=[]);for(let s=0;se.__isTeleport,_t=Symbol("_leaveCb"),ur=Symbol("_enterCb");function mu(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Zt(()=>{e.isMounted=!0}),kn(()=>{e.isUnmounting=!0}),e}const Ze=[Function,Array],Ka={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ze,onEnter:Ze,onAfterEnter:Ze,onEnterCancelled:Ze,onBeforeLeave:Ze,onLeave:Ze,onAfterLeave:Ze,onLeaveCancelled:Ze,onBeforeAppear:Ze,onAppear:Ze,onAfterAppear:Ze,onAppearCancelled:Ze},Ga=e=>{const t=e.subTree;return t.component?Ga(t.component):t},yu={name:"BaseTransition",props:Ka,setup(e,{slots:t}){const n=Pn(),r=mu();return()=>{const s=t.default&&Ja(t.default(),!0);if(!s||!s.length)return;const o=qa(s),i=le(e),{mode:a}=i;if(r.isLeaving)return ls(o);const c=Ko(o);if(!c)return ls(o);let p=Ns(c,i,r,n,f=>p=f);c.type!==Ce&&wn(c,p);let l=n.subTree&&Ko(n.subTree);if(l&&l.type!==Ce&&!it(l,c)&&Ga(n).type!==Ce){let f=Ns(l,i,r,n);if(wn(l,f),a==="out-in"&&c.type!==Ce)return r.isLeaving=!0,f.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,l=void 0},ls(o);a==="in-out"&&c.type!==Ce?f.delayLeave=(u,d,m)=>{const _=za(r,l);_[String(l.key)]=l,u[_t]=()=>{d(),u[_t]=void 0,delete p.delayedLeave,l=void 0},p.delayedLeave=()=>{m(),delete p.delayedLeave,l=void 0}}:l=void 0}else l&&(l=void 0);return o}}};function qa(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Ce){t=n;break}}return t}const vu=yu;function za(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Ns(e,t,n,r,s){const{appear:o,mode:i,persisted:a=!1,onBeforeEnter:c,onEnter:p,onAfterEnter:l,onEnterCancelled:f,onBeforeLeave:u,onLeave:d,onAfterLeave:m,onLeaveCancelled:_,onBeforeAppear:T,onAppear:E,onAfterAppear:w,onAppearCancelled:g}=t,v=String(e.key),b=za(n,e),A=(M,I)=>{M&<(M,r,9,I)},L=(M,I)=>{const W=I[1];A(M,I),Y(M)?M.every(P=>P.length<=1)&&W():M.length<=1&&W()},z={mode:i,persisted:a,beforeEnter(M){let I=c;if(!n.isMounted)if(o)I=T||c;else return;M[_t]&&M[_t](!0);const W=b[v];W&&it(e,W)&&W.el[_t]&&W.el[_t](),A(I,[M])},enter(M){let I=p,W=l,P=f;if(!n.isMounted)if(o)I=E||p,W=w||l,P=g||f;else return;let K=!1;const oe=M[ur]=ue=>{K||(K=!0,ue?A(P,[M]):A(W,[M]),z.delayedLeave&&z.delayedLeave(),M[ur]=void 0)};I?L(I,[M,oe]):oe()},leave(M,I){const W=String(e.key);if(M[ur]&&M[ur](!0),n.isUnmounting)return I();A(u,[M]);let P=!1;const K=M[_t]=oe=>{P||(P=!0,I(),oe?A(_,[M]):A(m,[M]),M[_t]=void 0,b[W]===e&&delete b[W])};b[W]=e,d?L(d,[M,K]):K()},clone(M){const I=Ns(M,t,n,r,s);return s&&s(I),I}};return z}function ls(e){if(rr(e))return e=Ct(e),e.children=null,e}function Ko(e){if(!rr(e))return Wa(e.type)&&e.children?qa(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&X(n.default))return n.default()}}function wn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,wn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ja(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;ogn(m,t&&(Y(t)?t[_]:t),n,r,s));return}if(Jt(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&gn(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?Yr(r.component):r.el,i=s?null:o,{i:a,r:c}=e,p=t&&t.r,l=a.refs===he?a.refs={}:a.refs,f=a.setupState,u=le(f),d=f===he?da:m=>de(u,m);if(p!=null&&p!==c){if(Go(t),_e(p))l[p]=null,d(p)&&(f[p]=null);else if(Ae(p)){p.value=null;const m=t;m.k&&(l[m.k]=null)}}if(X(c))nr(c,a,12,[i,l]);else{const m=_e(c),_=Ae(c);if(m||_){const T=()=>{if(e.f){const E=m?d(c)?f[c]:l[c]:c.value;if(s)Y(E)&&co(E,o);else if(Y(E))E.includes(o)||E.push(o);else if(m)l[c]=[o],d(c)&&(f[c]=l[c]);else{const w=[o];c.value=w,e.k&&(l[e.k]=w)}}else m?(l[c]=i,d(c)&&(f[c]=i)):_&&(c.value=i,e.k&&(l[e.k]=i))};if(i){const E=()=>{T(),Or.delete(e)};E.id=-1,Or.set(e,E),Pe(E,n)}else Go(e),T()}}}function Go(e){const t=Or.get(e);t&&(t.flags|=8,Or.delete(e))}let qo=!1;const sn=()=>{qo||(console.error("Hydration completed but contains mismatches."),qo=!0)},_u=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",bu=e=>e.namespaceURI.includes("MathML"),fr=e=>{if(e.nodeType===1){if(_u(e))return"svg";if(bu(e))return"mathml"}},cn=e=>e.nodeType===8;function wu(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:a,insert:c,createComment:p}}=e,l=(g,v)=>{if(!v.hasChildNodes()){n(null,g,v),kr(),v._vnode=g;return}f(v.firstChild,g,null,null,null),kr(),v._vnode=g},f=(g,v,b,A,L,z=!1)=>{z=z||!!v.dynamicChildren;const M=cn(g)&&g.data==="[",I=()=>_(g,v,b,A,L,M),{type:W,ref:P,shapeFlag:K,patchFlag:oe}=v;let ue=g.nodeType;v.el=g,oe===-2&&(z=!1,v.dynamicChildren=null);let U=null;switch(W){case Qt:ue!==3?v.children===""?(c(v.el=s(""),i(g),g),U=g):U=I():(g.data!==v.children&&(sn(),g.data=v.children),U=o(g));break;case Ce:w(g)?(U=o(g),E(v.el=g.content.firstChild,g,b)):ue!==8||M?U=I():U=o(g);break;case Bn:if(M&&(g=o(g),ue=g.nodeType),ue===1||ue===3){U=g;const te=!v.children.length;for(let V=0;V{z=z||!!v.dynamicChildren;const{type:M,props:I,patchFlag:W,shapeFlag:P,dirs:K,transition:oe}=v,ue=M==="input"||M==="option";if(ue||W!==-1){K&&pt(v,null,b,"created");let U=!1;if(w(g)){U=ml(null,oe)&&b&&b.vnode.props&&b.vnode.props.appear;const V=g.content.firstChild;if(U){const be=V.getAttribute("class");be&&(V.$cls=be),oe.beforeEnter(V)}E(V,g,b),v.el=g=V}if(P&16&&!(I&&(I.innerHTML||I.textContent))){let V=d(g.firstChild,v,g,b,A,L,z);for(;V;){dr(g,1)||sn();const be=V;V=V.nextSibling,a(be)}}else if(P&8){let V=v.children;V[0]===`
+`&&(g.tagName==="PRE"||g.tagName==="TEXTAREA")&&(V=V.slice(1)),g.textContent!==V&&(dr(g,0)||sn(),g.textContent=v.children)}if(I){if(ue||!z||W&48){const V=g.tagName.includes("-");for(const be in I)(ue&&(be.endsWith("value")||be==="indeterminate")||er(be)&&!dn(be)||be[0]==="."||V)&&r(g,be,null,I[be],void 0,b)}else if(I.onClick)r(g,"onClick",null,I.onClick,void 0,b);else if(W&4&&zt(I.style))for(const V in I.style)I.style[V]}let te;(te=I&&I.onVnodeBeforeMount)&&Ve(te,b,v),K&&pt(v,null,b,"beforeMount"),((te=I&&I.onVnodeMounted)||K||U)&&El(()=>{te&&Ve(te,b,v),U&&oe.enter(g),K&&pt(v,null,b,"mounted")},A)}return g.nextSibling},d=(g,v,b,A,L,z,M)=>{M=M||!!v.dynamicChildren;const I=v.children,W=I.length;for(let P=0;P{const{slotScopeIds:M}=v;M&&(L=L?L.concat(M):M);const I=i(g),W=d(o(g),v,I,b,A,L,z);return W&&cn(W)&&W.data==="]"?o(v.anchor=W):(sn(),c(v.anchor=p("]"),I,W),W)},_=(g,v,b,A,L,z)=>{if(dr(g.parentElement,1)||sn(),v.el=null,z){const W=T(g);for(;;){const P=o(g);if(P&&P!==W)a(P);else break}}const M=o(g),I=i(g);return a(g),n(null,v,I,M,b,A,fr(I),L),b&&(b.vnode.el=v.el,Jr(b,v.el)),M},T=(g,v="[",b="]")=>{let A=0;for(;g;)if(g=o(g),g&&cn(g)&&(g.data===v&&A++,g.data===b)){if(A===0)return o(g);A--}return g},E=(g,v,b)=>{const A=v.parentNode;A&&A.replaceChild(g,v);let L=b;for(;L;)L.vnode.el===v&&(L.vnode.el=L.subTree.el=g),L=L.parent},w=g=>g.nodeType===1&&g.tagName==="TEMPLATE";return[l,f]}const zo="data-allow-mismatch",xu={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function dr(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(zo);)e=e.parentElement;const n=e&&e.getAttribute(zo);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:r.includes(xu[t])}}Wr().requestIdleCallback;Wr().cancelIdleCallback;function Eu(e,t){if(cn(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(cn(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const Jt=e=>!!e.type.__asyncLoader;function Jo(e){X(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:o,timeout:i,suspensible:a=!0,onError:c}=e;let p=null,l,f=0;const u=()=>(f++,p=null,d()),d=()=>{let m;return p||(m=p=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),c)return new Promise((T,E)=>{c(_,()=>T(u()),()=>E(_),f+1)});throw _}).then(_=>m!==p&&p?p:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),l=_,_)))};return Sn({name:"AsyncComponentWrapper",__asyncLoader:d,__asyncHydrate(m,_,T){let E=!1;(_.bu||(_.bu=[])).push(()=>E=!0);const w=()=>{E||T()},g=o?()=>{const v=o(w,b=>Eu(m,b));v&&(_.bum||(_.bum=[])).push(v)}:w;l?g():d().then(()=>!_.isUnmounted&&g())},get __asyncResolved(){return l},setup(){const m=Me;if(bo(m),l)return()=>cs(l,m);const _=g=>{p=null,An(g,m,13,!r)};if(a&&m.suspense||Tn)return d().then(g=>()=>cs(g,m)).catch(g=>(_(g),()=>r?$(r,{error:g}):null));const T=Se(!1),E=Se(),w=Se(!!s);return s&&setTimeout(()=>{w.value=!1},s),i!=null&&setTimeout(()=>{if(!T.value&&!E.value){const g=new Error(`Async component timed out after ${i}ms.`);_(g),E.value=g}},i),d().then(()=>{T.value=!0,m.parent&&rr(m.parent.vnode)&&m.parent.update()}).catch(g=>{_(g),E.value=g}),()=>{if(T.value&&l)return cs(l,m);if(E.value&&r)return $(r,{error:E.value});if(n&&!w.value)return $(n)}}})}function cs(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=$(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const rr=e=>e.type.__isKeepAlive,Tu={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=Pn(),r=n.ctx;if(!r.renderer)return()=>{const w=t.default&&t.default();return w&&w.length===1?w[0]:w};const s=new Map,o=new Set;let i=null;const a=n.suspense,{renderer:{p:c,m:p,um:l,o:{createElement:f}}}=r,u=f("div");r.activate=(w,g,v,b,A)=>{const L=w.component;p(w,g,v,0,a),c(L.vnode,w,g,v,L,a,b,w.slotScopeIds,A),Pe(()=>{L.isDeactivated=!1,L.a&&pn(L.a);const z=w.props&&w.props.onVnodeMounted;z&&Ve(z,L.parent,w)},a)},r.deactivate=w=>{const g=w.component;Mr(g.m),Mr(g.a),p(w,u,null,1,a),Pe(()=>{g.da&&pn(g.da);const v=w.props&&w.props.onVnodeUnmounted;v&&Ve(v,g.parent,w),g.isDeactivated=!0},a)};function d(w){us(w),l(w,n,a,!0)}function m(w){s.forEach((g,v)=>{const b=Us(g.type);b&&!w(b)&&_(v)})}function _(w){const g=s.get(w);g&&(!i||!it(g,i))?d(g):i&&us(i),s.delete(w),o.delete(w)}yn(()=>[e.include,e.exclude],([w,g])=>{w&&m(v=>Hn(w,v)),g&&m(v=>!Hn(g,v))},{flush:"post",deep:!0});let T=null;const E=()=>{T!=null&&(Nr(n.subTree.type)?Pe(()=>{s.set(T,pr(n.subTree))},n.subTree.suspense):s.set(T,pr(n.subTree)))};return Zt(E),Za(E),kn(()=>{s.forEach(w=>{const{subTree:g,suspense:v}=n,b=pr(g);if(w.type===b.type&&w.key===b.key){us(b);const A=b.component.da;A&&Pe(A,v);return}d(w)})}),()=>{if(T=null,!t.default)return i=null;const w=t.default(),g=w[0];if(w.length>1)return i=null,w;if(!En(g)||!(g.shapeFlag&4)&&!(g.shapeFlag&128))return i=null,g;let v=pr(g);if(v.type===Ce)return i=null,v;const b=v.type,A=Us(Jt(v)?v.type.__asyncResolved||{}:b),{include:L,exclude:z,max:M}=e;if(L&&(!A||!Hn(L,A))||z&&A&&Hn(z,A))return v.shapeFlag&=-257,i=v,g;const I=v.key==null?b:v.key,W=s.get(I);return v.el&&(v=Ct(v),g.shapeFlag&128&&(g.ssContent=v)),T=I,W?(v.el=W.el,v.component=W.component,v.transition&&wn(v,v.transition),v.shapeFlag|=512,o.delete(I),o.add(I)):(o.add(I),M&&o.size>parseInt(M,10)&&_(o.values().next().value)),v.shapeFlag|=256,i=v,Nr(g.type)?g:v}}},Ru=Tu;function Hn(e,t){return Y(e)?e.some(n=>Hn(n,t)):_e(e)?e.split(",").includes(t):Tc(e)?(e.lastIndex=0,e.test(t)):!1}function Ya(e,t){Xa(e,"a",t)}function Qa(e,t){Xa(e,"da",t)}function Xa(e,t,n=Me){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(qr(t,r,n),n){let s=n.parent;for(;s&&s.parent;)rr(s.parent.vnode)&&Cu(r,t,n,s),s=s.parent}}function Cu(e,t,n,r){const s=qr(t,e,r,!0);wo(()=>{co(r[t],s)},n)}function us(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function pr(e){return e.shapeFlag&128?e.ssContent:e}function qr(e,t,n=Me,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Et();const a=sr(n),c=lt(t,n,e,i);return a(),Tt(),c});return r?s.unshift(o):s.push(o),o}}const At=e=>(t,n=Me)=>{(!Tn||e==="sp")&&qr(e,(...r)=>t(...r),n)},Au=At("bm"),Zt=At("m"),Su=At("bu"),Za=At("u"),kn=At("bum"),wo=At("um"),ku=At("sp"),Pu=At("rtg"),Ou=At("rtc");function el(e,t=Me){qr("ec",e,t)}const tl="components";function Yo(e,t){return rl(tl,e,!0,t)||e}const nl=Symbol.for("v-ndc");function Iu(e){return _e(e)?rl(tl,e,!1)||e:e||nl}function rl(e,t,n=!0,r=!1){const s=Qe||Me;if(s){const o=s.type;{const a=Us(o,!1);if(a&&(a===t||a===rt(t)||a===Vr(rt(t))))return o}const i=Qo(s[e]||o[e],t)||Qo(s.appContext[e],t);return!i&&r?o:i}}function Qo(e,t){return e&&(e[t]||e[rt(t)]||e[Vr(rt(t))])}function Xo(e,t,n,r){let s;const o=n,i=Y(e);if(i||_e(e)){const a=i&&zt(e);let c=!1,p=!1;a&&(c=!nt(e),p=Rt(e),e=Gr(e)),s=new Array(e.length);for(let l=0,f=e.length;lt(a,c,void 0,o));else{const a=Object.keys(e);s=new Array(a.length);for(let c=0,p=a.length;c
e?Sl(e)?Yr(e):Ls(e.parent):null,Fn=ke(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ls(e.parent),$root:e=>Ls(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ol(e),$forceUpdate:e=>e.f||(e.f=()=>{_o(e.update)}),$nextTick:e=>e.n||(e.n=zn.bind(e.proxy)),$watch:e=>Zu.bind(e)}),fs=(e,t)=>e!==he&&!e.__isScriptSetup&&de(e,t),Mu={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:a,appContext:c}=e;let p;if(t[0]!=="$"){const d=i[t];if(d!==void 0)switch(d){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(fs(r,t))return i[t]=1,r[t];if(s!==he&&de(s,t))return i[t]=2,s[t];if((p=e.propsOptions[0])&&de(p,t))return i[t]=3,o[t];if(n!==he&&de(n,t))return i[t]=4,n[t];Hs&&(i[t]=0)}}const l=Fn[t];let f,u;if(l)return t==="$attrs"&&He(e.attrs,"get",""),l(e);if((f=a.__cssModules)&&(f=f[t]))return f;if(n!==he&&de(n,t))return i[t]=4,n[t];if(u=c.config.globalProperties,de(u,t))return u[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return fs(s,t)?(s[t]=n,!0):r!==he&&de(r,t)?(r[t]=n,!0):de(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o,type:i}},a){let c,p;return!!(n[a]||e!==he&&a[0]!=="$"&&de(e,a)||fs(t,a)||(c=o[0])&&de(c,a)||de(r,a)||de(Fn,a)||de(s.config.globalProperties,a)||(p=i.__cssModules)&&p[a])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:de(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Zo(e){return Y(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Hs=!0;function Nu(e){const t=ol(e),n=e.proxy,r=e.ctx;Hs=!1,t.beforeCreate&&ei(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:a,provide:c,inject:p,created:l,beforeMount:f,mounted:u,beforeUpdate:d,updated:m,activated:_,deactivated:T,beforeDestroy:E,beforeUnmount:w,destroyed:g,unmounted:v,render:b,renderTracked:A,renderTriggered:L,errorCaptured:z,serverPrefetch:M,expose:I,inheritAttrs:W,components:P,directives:K,filters:oe}=t;if(p&&Lu(p,r,null),i)for(const te in i){const V=i[te];X(V)&&(r[te]=V.bind(n))}if(s){const te=s.call(n,n);ge(te)&&(e.data=jt(te))}if(Hs=!0,o)for(const te in o){const V=o[te],be=X(V)?V.bind(n,n):X(V.get)?V.get.bind(n,n):ht,Pt=!X(V)&&X(V.set)?V.set.bind(n):ht,ut=xe({get:be,set:Pt});Object.defineProperty(r,te,{enumerable:!0,configurable:!0,get:()=>ut.value,set:Be=>ut.value=Be})}if(a)for(const te in a)sl(a[te],r,n,te);if(c){const te=X(c)?c.call(n):c;Reflect.ownKeys(te).forEach(V=>{mn(V,te[V])})}l&&ei(l,e,"c");function U(te,V){Y(V)?V.forEach(be=>te(be.bind(n))):V&&te(V.bind(n))}if(U(Au,f),U(Zt,u),U(Su,d),U(Za,m),U(Ya,_),U(Qa,T),U(el,z),U(Ou,A),U(Pu,L),U(kn,w),U(wo,v),U(ku,M),Y(I))if(I.length){const te=e.exposed||(e.exposed={});I.forEach(V=>{Object.defineProperty(te,V,{get:()=>n[V],set:be=>n[V]=be,enumerable:!0})})}else e.exposed||(e.exposed={});b&&e.render===ht&&(e.render=b),W!=null&&(e.inheritAttrs=W),P&&(e.components=P),K&&(e.directives=K),M&&bo(e)}function Lu(e,t,n=ht){Y(e)&&(e=Ds(e));for(const r in e){const s=e[r];let o;ge(s)?"default"in s?o=Ge(s.from||r,s.default,!0):o=Ge(s.from||r):o=Ge(s),Ae(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function ei(e,t,n){lt(Y(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function sl(e,t,n,r){let s=r.includes(".")?_l(n,r):()=>n[r];if(_e(e)){const o=t[e];X(o)&&yn(s,o)}else if(X(e))yn(s,e.bind(n));else if(ge(e))if(Y(e))e.forEach(o=>sl(o,t,n,r));else{const o=X(e.handler)?e.handler.bind(n):t[e.handler];X(o)&&yn(s,o,e)}}function ol(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,a=o.get(t);let c;return a?c=a:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(p=>Ir(c,p,i,!0)),Ir(c,t,i)),ge(t)&&o.set(t,c),c}function Ir(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&Ir(e,o,n,!0),s&&s.forEach(i=>Ir(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const a=Hu[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const Hu={data:ti,props:ni,emits:ni,methods:Dn,computed:Dn,beforeCreate:je,created:je,beforeMount:je,mounted:je,beforeUpdate:je,updated:je,beforeDestroy:je,beforeUnmount:je,destroyed:je,unmounted:je,activated:je,deactivated:je,errorCaptured:je,serverPrefetch:je,components:Dn,directives:Dn,watch:ju,provide:ti,inject:Du};function ti(e,t){return t?e?function(){return ke(X(e)?e.call(this,this):e,X(t)?t.call(this,this):t)}:t:e}function Du(e,t){return Dn(Ds(e),Ds(t))}function Ds(e){if(Y(e)){const t={};for(let n=0;n1)return n&&X(t)?t.call(r&&r.proxy):t}}function xo(){return!!(Pn()||Yt)}const al={},ll=()=>Object.create(al),cl=e=>Object.getPrototypeOf(e)===al;function Bu(e,t,n,r=!1){const s={},o=ll();e.propsDefaults=Object.create(null),ul(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:xt(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Uu(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,a=le(s),[c]=e.propsOptions;let p=!1;if((r||i>0)&&!(i&16)){if(i&8){const l=e.vnode.dynamicProps;for(let f=0;f{c=!0;const[u,d]=fl(f,t,!0);ke(i,u),d&&a.push(...d)};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}if(!o&&!c)return ge(e)&&r.set(e,un),un;if(Y(o))for(let l=0;le==="_"||e==="_ctx"||e==="$stable",To=e=>Y(e)?e.map(Ye):[Ye(e)],Wu=(e,t,n)=>{if(t._n)return t;const r=Z((...s)=>To(t(...s)),n);return r._c=!1,r},dl=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Eo(s))continue;const o=e[s];if(X(o))t[s]=Wu(s,o,r);else if(o!=null){const i=To(o);t[s]=()=>i}}},pl=(e,t)=>{const n=To(t);e.slots.default=()=>n},hl=(e,t,n)=>{for(const r in t)(n||!Eo(r))&&(e[r]=t[r])},Ku=(e,t,n)=>{const r=e.slots=ll();if(e.vnode.shapeFlag&32){const s=t._;s?(hl(r,t,n),n&&ya(r,"_",s,!0)):dl(t,r)}else t&&pl(e,t)},Gu=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=he;if(r.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:hl(s,t,n):(o=!t.$stable,dl(t,s)),i=t}else t&&(pl(e,t),i={default:1});if(o)for(const a in s)!Eo(a)&&i[a]==null&&delete s[a]},Pe=El;function qu(e){return gl(e)}function zu(e){return gl(e,wu)}function gl(e,t){const n=Wr();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:a,createComment:c,setText:p,setElementText:l,parentNode:f,nextSibling:u,setScopeId:d=ht,insertStaticContent:m}=e,_=(h,y,x,S=null,R=null,k=null,D=void 0,H=null,N=!!y.dynamicChildren)=>{if(h===y)return;h&&!it(h,y)&&(S=C(h),Be(h,R,k,!0),h=null),y.patchFlag===-2&&(N=!1,y.dynamicChildren=null);const{type:O,ref:J,shapeFlag:F}=y;switch(O){case Qt:T(h,y,x,S);break;case Ce:E(h,y,x,S);break;case Bn:h==null&&w(y,x,S,D);break;case Te:P(h,y,x,S,R,k,D,H,N);break;default:F&1?b(h,y,x,S,R,k,D,H,N):F&6?K(h,y,x,S,R,k,D,H,N):(F&64||F&128)&&O.process(h,y,x,S,R,k,D,H,N,q)}J!=null&&R?gn(J,h&&h.ref,k,y||h,!y):J==null&&h&&h.ref!=null&&gn(h.ref,null,k,h,!0)},T=(h,y,x,S)=>{if(h==null)r(y.el=a(y.children),x,S);else{const R=y.el=h.el;y.children!==h.children&&p(R,y.children)}},E=(h,y,x,S)=>{h==null?r(y.el=c(y.children||""),x,S):y.el=h.el},w=(h,y,x,S)=>{[h.el,h.anchor]=m(h.children,y,x,S,h.el,h.anchor)},g=({el:h,anchor:y},x,S)=>{let R;for(;h&&h!==y;)R=u(h),r(h,x,S),h=R;r(y,x,S)},v=({el:h,anchor:y})=>{let x;for(;h&&h!==y;)x=u(h),s(h),h=x;s(y)},b=(h,y,x,S,R,k,D,H,N)=>{y.type==="svg"?D="svg":y.type==="math"&&(D="mathml"),h==null?A(y,x,S,R,k,D,H,N):M(h,y,R,k,D,H,N)},A=(h,y,x,S,R,k,D,H)=>{let N,O;const{props:J,shapeFlag:F,transition:G,dirs:ee}=h;if(N=h.el=i(h.type,k,J&&J.is,J),F&8?l(N,h.children):F&16&&z(h.children,N,null,S,R,ds(h,k),D,H),ee&&pt(h,null,S,"created"),L(N,h,h.scopeId,D,S),J){for(const me in J)me!=="value"&&!dn(me)&&o(N,me,null,J[me],k,S);"value"in J&&o(N,"value",null,J.value,k),(O=J.onVnodeBeforeMount)&&Ve(O,S,h)}ee&&pt(h,null,S,"beforeMount");const ie=ml(R,G);ie&&G.beforeEnter(N),r(N,y,x),((O=J&&J.onVnodeMounted)||ie||ee)&&Pe(()=>{O&&Ve(O,S,h),ie&&G.enter(N),ee&&pt(h,null,S,"mounted")},R)},L=(h,y,x,S,R)=>{if(x&&d(h,x),S)for(let k=0;k{for(let O=N;O{const H=y.el=h.el;let{patchFlag:N,dynamicChildren:O,dirs:J}=y;N|=h.patchFlag&16;const F=h.props||he,G=y.props||he;let ee;if(x&&Ft(x,!1),(ee=G.onVnodeBeforeUpdate)&&Ve(ee,x,y,h),J&&pt(y,h,x,"beforeUpdate"),x&&Ft(x,!0),(F.innerHTML&&G.innerHTML==null||F.textContent&&G.textContent==null)&&l(H,""),O?I(h.dynamicChildren,O,H,x,S,ds(y,R),k):D||V(h,y,H,null,x,S,ds(y,R),k,!1),N>0){if(N&16)W(H,F,G,x,R);else if(N&2&&F.class!==G.class&&o(H,"class",null,G.class,R),N&4&&o(H,"style",F.style,G.style,R),N&8){const ie=y.dynamicProps;for(let me=0;me{ee&&Ve(ee,x,y,h),J&&pt(y,h,x,"updated")},S)},I=(h,y,x,S,R,k,D)=>{for(let H=0;H{if(y!==x){if(y!==he)for(const k in y)!dn(k)&&!(k in x)&&o(h,k,y[k],null,R,S);for(const k in x){if(dn(k))continue;const D=x[k],H=y[k];D!==H&&k!=="value"&&o(h,k,H,D,R,S)}"value"in x&&o(h,"value",y.value,x.value,R)}},P=(h,y,x,S,R,k,D,H,N)=>{const O=y.el=h?h.el:a(""),J=y.anchor=h?h.anchor:a("");let{patchFlag:F,dynamicChildren:G,slotScopeIds:ee}=y;ee&&(H=H?H.concat(ee):ee),h==null?(r(O,x,S),r(J,x,S),z(y.children||[],x,J,R,k,D,H,N)):F>0&&F&64&&G&&h.dynamicChildren?(I(h.dynamicChildren,G,x,R,k,D,H),(y.key!=null||R&&y===R.subTree)&&yl(h,y,!0)):V(h,y,x,J,R,k,D,H,N)},K=(h,y,x,S,R,k,D,H,N)=>{y.slotScopeIds=H,h==null?y.shapeFlag&512?R.ctx.activate(y,x,S,D,N):oe(y,x,S,R,k,D,N):ue(h,y,N)},oe=(h,y,x,S,R,k,D)=>{const H=h.component=vf(h,S,R);if(rr(h)&&(H.ctx.renderer=q),_f(H,!1,D),H.asyncDep){if(R&&R.registerDep(H,U,D),!h.el){const N=H.subTree=$(Ce);E(null,N,y,x),h.placeholder=N.el}}else U(H,h,y,x,R,k,D)},ue=(h,y,x)=>{const S=y.component=h.component;if(af(h,y,x))if(S.asyncDep&&!S.asyncResolved){te(S,y,x);return}else S.next=y,S.update();else y.el=h.el,S.vnode=y},U=(h,y,x,S,R,k,D)=>{const H=()=>{if(h.isMounted){let{next:F,bu:G,u:ee,parent:ie,vnode:me}=h;{const ze=vl(h);if(ze){F&&(F.el=me.el,te(h,F,D)),ze.asyncDep.then(()=>{h.isUnmounted||H()});return}}let pe=F,Ue;Ft(h,!1),F?(F.el=me.el,te(h,F,D)):F=me,G&&pn(G),(Ue=F.props&&F.props.onVnodeBeforeUpdate)&&Ve(Ue,ie,F,me),Ft(h,!0);const Ne=ps(h),st=h.subTree;h.subTree=Ne,_(st,Ne,f(st.el),C(st),h,R,k),F.el=Ne.el,pe===null&&Jr(h,Ne.el),ee&&Pe(ee,R),(Ue=F.props&&F.props.onVnodeUpdated)&&Pe(()=>Ve(Ue,ie,F,me),R)}else{let F;const{el:G,props:ee}=y,{bm:ie,m:me,parent:pe,root:Ue,type:Ne}=h,st=Jt(y);if(Ft(h,!1),ie&&pn(ie),!st&&(F=ee&&ee.onVnodeBeforeMount)&&Ve(F,pe,y),Ft(h,!0),G&&ve){const ze=()=>{h.subTree=ps(h),ve(G,h.subTree,h,R,null)};st&&Ne.__asyncHydrate?Ne.__asyncHydrate(G,h,ze):ze()}else{Ue.ce&&Ue.ce._def.shadowRoot!==!1&&Ue.ce._injectChildStyle(Ne);const ze=h.subTree=ps(h);_(null,ze,x,S,h,R,k),y.el=ze.el}if(me&&Pe(me,R),!st&&(F=ee&&ee.onVnodeMounted)){const ze=y;Pe(()=>Ve(F,pe,ze),R)}(y.shapeFlag&256||pe&&Jt(pe.vnode)&&pe.vnode.shapeFlag&256)&&h.a&&Pe(h.a,R),h.isMounted=!0,y=x=S=null}};h.scope.on();const N=h.effect=new Ta(H);h.scope.off();const O=h.update=N.run.bind(N),J=h.job=N.runIfDirty.bind(N);J.i=h,J.id=h.uid,N.scheduler=()=>_o(J),Ft(h,!0),O()},te=(h,y,x)=>{y.component=h;const S=h.vnode.props;h.vnode=y,h.next=null,Uu(h,y.props,S,x),Gu(h,y.children,x),Et(),Wo(h),Tt()},V=(h,y,x,S,R,k,D,H,N=!1)=>{const O=h&&h.children,J=h?h.shapeFlag:0,F=y.children,{patchFlag:G,shapeFlag:ee}=y;if(G>0){if(G&128){Pt(O,F,x,S,R,k,D,H,N);return}else if(G&256){be(O,F,x,S,R,k,D,H,N);return}}ee&8?(J&16&&Xe(O,R,k),F!==O&&l(x,F)):J&16?ee&16?Pt(O,F,x,S,R,k,D,H,N):Xe(O,R,k,!0):(J&8&&l(x,""),ee&16&&z(F,x,S,R,k,D,H,N))},be=(h,y,x,S,R,k,D,H,N)=>{h=h||un,y=y||un;const O=h.length,J=y.length,F=Math.min(O,J);let G;for(G=0;GJ?Xe(h,R,k,!0,!1,F):z(y,x,S,R,k,D,H,N,F)},Pt=(h,y,x,S,R,k,D,H,N)=>{let O=0;const J=y.length;let F=h.length-1,G=J-1;for(;O<=F&&O<=G;){const ee=h[O],ie=y[O]=N?Nt(y[O]):Ye(y[O]);if(it(ee,ie))_(ee,ie,x,null,R,k,D,H,N);else break;O++}for(;O<=F&&O<=G;){const ee=h[F],ie=y[G]=N?Nt(y[G]):Ye(y[G]);if(it(ee,ie))_(ee,ie,x,null,R,k,D,H,N);else break;F--,G--}if(O>F){if(O<=G){const ee=G+1,ie=eeG)for(;O<=F;)Be(h[O],R,k,!0),O++;else{const ee=O,ie=O,me=new Map;for(O=ie;O<=G;O++){const Je=y[O]=N?Nt(y[O]):Ye(y[O]);Je.key!=null&&me.set(Je.key,O)}let pe,Ue=0;const Ne=G-ie+1;let st=!1,ze=0;const On=new Array(Ne);for(O=0;O=Ne){Be(Je,R,k,!0);continue}let ft;if(Je.key!=null)ft=me.get(Je.key);else for(pe=ie;pe<=G;pe++)if(On[pe-ie]===0&&it(Je,y[pe])){ft=pe;break}ft===void 0?Be(Je,R,k,!0):(On[ft-ie]=O+1,ft>=ze?ze=ft:st=!0,_(Je,y[ft],x,null,R,k,D,H,N),Ue++)}const jo=st?Ju(On):un;for(pe=jo.length-1,O=Ne-1;O>=0;O--){const Je=ie+O,ft=y[Je],$o=y[Je+1],Fo=Je+1{const{el:k,type:D,transition:H,children:N,shapeFlag:O}=h;if(O&6){ut(h.component.subTree,y,x,S);return}if(O&128){h.suspense.move(y,x,S);return}if(O&64){D.move(h,y,x,q);return}if(D===Te){r(k,y,x);for(let F=0;FH.enter(k),R);else{const{leave:F,delayLeave:G,afterLeave:ee}=H,ie=()=>{h.ctx.isUnmounted?s(k):r(k,y,x)},me=()=>{k._isLeaving&&k[_t](!0),F(k,()=>{ie(),ee&&ee()})};G?G(k,ie,me):me()}else r(k,y,x)},Be=(h,y,x,S=!1,R=!1)=>{const{type:k,props:D,ref:H,children:N,dynamicChildren:O,shapeFlag:J,patchFlag:F,dirs:G,cacheIndex:ee}=h;if(F===-2&&(R=!1),H!=null&&(Et(),gn(H,null,x,h,!0),Tt()),ee!=null&&(y.renderCache[ee]=void 0),J&256){y.ctx.deactivate(h);return}const ie=J&1&&G,me=!Jt(h);let pe;if(me&&(pe=D&&D.onVnodeBeforeUnmount)&&Ve(pe,y,h),J&6)$t(h.component,x,S);else{if(J&128){h.suspense.unmount(x,S);return}ie&&pt(h,null,y,"beforeUnmount"),J&64?h.type.remove(h,y,x,q,S):O&&!O.hasOnce&&(k!==Te||F>0&&F&64)?Xe(O,y,x,!1,!0):(k===Te&&F&384||!R&&J&16)&&Xe(N,y,x),S&&tn(h)}(me&&(pe=D&&D.onVnodeUnmounted)||ie)&&Pe(()=>{pe&&Ve(pe,y,h),ie&&pt(h,null,y,"unmounted")},x)},tn=h=>{const{type:y,el:x,anchor:S,transition:R}=h;if(y===Te){nn(x,S);return}if(y===Bn){v(h);return}const k=()=>{s(x),R&&!R.persisted&&R.afterLeave&&R.afterLeave()};if(h.shapeFlag&1&&R&&!R.persisted){const{leave:D,delayLeave:H}=R,N=()=>D(x,k);H?H(h.el,k,N):N()}else k()},nn=(h,y)=>{let x;for(;h!==y;)x=u(h),s(h),h=x;s(y)},$t=(h,y,x)=>{const{bum:S,scope:R,job:k,subTree:D,um:H,m:N,a:O}=h;Mr(N),Mr(O),S&&pn(S),R.stop(),k&&(k.flags|=8,Be(D,h,y,x)),H&&Pe(H,y),Pe(()=>{h.isUnmounted=!0},y)},Xe=(h,y,x,S=!1,R=!1,k=0)=>{for(let D=k;D{if(h.shapeFlag&6)return C(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const y=u(h.anchor||h.el),x=y&&y[gu];return x?u(x):y};let B=!1;const j=(h,y,x)=>{h==null?y._vnode&&Be(y._vnode,null,null,!0):_(y._vnode||null,h,y,null,null,null,x),y._vnode=h,B||(B=!0,Wo(),kr(),B=!1)},q={p:_,um:Be,m:ut,r:tn,mt:oe,mc:z,pc:V,pbc:I,n:C,o:e};let re,ve;return t&&([re,ve]=t(q)),{render:j,hydrate:re,createApp:Fu(j,re)}}function ds({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Ft({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ml(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function yl(e,t,n=!1){const r=e.children,s=t.children;if(Y(r)&&Y(s))for(let o=0;o>1,e[n[a]]
',2))]),e("div",B,[e("div",_,[e("div",I,[r(l(g),{size:24,class:"text-white"})]),t[2]||(t[2]=e("div",null,[e("h2",{class:"text-2xl font-display font-bold text-gray-900"},"Tischtennis-Regeln Light"),e("p",{class:"text-gray-600"},"Vereinfachte Übersicht")],-1))]),t[3]||(t[3]=e("p",{class:"text-gray-700 mb-6 leading-relaxed flex-grow"}," Eine kompakte Übersicht der wichtigsten Tischtennis-Regeln für Einsteiger und Hobbyspieler. Diese vereinfachte Version erklärt die Grundlagen verständlich und übersichtlich. ",-1)),t[4]||(t[4]=e("div",{class:"space-y-3 mt-auto"},[e("a",{href:"/documents/Tischtennisregeln light.pdf",target:"_blank",download:"",class:"block w-full px-6 py-4 bg-primary-600 hover:bg-primary-700 text-white font-bold rounded-lg transition-colors text-center text-lg border-2 border-primary-600 shadow-lg"}," ⬇️ Regeln Light herunterladen "),e("p",{class:"text-sm text-gray-500 text-center"}," PDF-Dokument (vereinfachte Fassung) ")],-1))])]),e("div",R,[t[17]||(t[17]=e("h2",{class:"text-3xl font-display font-bold text-gray-900 mb-8 text-center"}," Grundregeln im Überblick ",-1)),e("div",D,[e("div",F,[e("div",j,[r(l(m),{size:32,class:"text-primary-600"})]),t[5]||(t[5]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-2"},"Spielfeld",-1)),t[6]||(t[6]=e("p",{class:"text-gray-600 text-sm"},[s(" Tisch: 2,74m × 1,525m, Höhe: 76cm"),e("br"),s(" Netz: 15,25cm hoch ")],-1))]),e("div",V,[e("div",S,[r(l(b),{size:32,class:"text-primary-600"})]),t[7]||(t[7]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-2"},"Ball",-1)),t[8]||(t[8]=e("p",{class:"text-gray-600 text-sm"},[s(" Durchmesser: 40mm"),e("br"),s(" Gewicht: 2,7g ")],-1))]),e("div",G,[e("div",H,[r(l(y),{size:32,class:"text-primary-600"})]),t[9]||(t[9]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-2"},"Schläger",-1)),t[10]||(t[10]=e("p",{class:"text-gray-600 text-sm"},[s(" Belag: schwarz + farbig"),e("br"),s(" (rot, grün, pink, blau, gelb, lila)"),e("br"),s(" Holz: mindestens 85% ")],-1))]),e("div",P,[e("div",N,[r(l(f),{size:32,class:"text-primary-600"})]),t[11]||(t[11]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-2"},"Aufschlag",-1)),t[12]||(t[12]=e("p",{class:"text-gray-600 text-sm"},[s(" Ball muss sichtbar hochgeworfen werden"),e("br"),s(" Mindestens 16cm Höhe ")],-1))]),e("div",O,[e("div",M,[r(l(x),{size:32,class:"text-primary-600"})]),t[13]||(t[13]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-2"},"Satz",-1)),t[14]||(t[14]=e("p",{class:"text-gray-600 text-sm"},[s(" Gewinn bei 11 Punkten"),e("br"),s(" Mindestens 2 Punkte Vorsprung ")],-1))]),e("div",W,[e("div",A,[r(l(c),{size:32,class:"text-primary-600"})]),t[15]||(t[15]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-2"},"Spiel",-1)),t[16]||(t[16]=e("p",{class:"text-gray-600 text-sm"},[s(" Best of 5 oder 7 Sätze"),e("br"),s(" Wechsel alle 2 Punkte ")],-1))])])]),e("div",C,[e("h3",E,[r(l(p),{size:28,class:"mr-3"}),t[18]||(t[18]=s(" Weitere Informationen ",-1))]),t[19]||(t[19]=i('
Die offiziellen ITTF-Regeln werden regelmäßig aktualisiert und gelten für alle internationalen Wettkämpfe. Für regionale Turniere können abweichende Bestimmungen gelten.
',2))]),e("div",B,[e("div",_,[e("div",I,[r(l(g),{size:24,class:"text-white"})]),t[2]||(t[2]=e("div",null,[e("h2",{class:"text-2xl font-display font-bold text-gray-900"},"Tischtennis-Regeln Light"),e("p",{class:"text-gray-600"},"Vereinfachte Übersicht")],-1))]),t[3]||(t[3]=e("p",{class:"text-gray-700 mb-6 leading-relaxed flex-grow"}," Eine kompakte Übersicht der wichtigsten Tischtennis-Regeln für Einsteiger und Hobbyspieler. Diese vereinfachte Version erklärt die Grundlagen verständlich und übersichtlich. ",-1)),t[4]||(t[4]=e("div",{class:"space-y-3 mt-auto"},[e("a",{href:"/documents/Tischtennisregeln light.pdf",target:"_blank",download:"",class:"block w-full px-6 py-4 bg-primary-600 hover:bg-primary-700 text-white font-bold rounded-lg transition-colors text-center text-lg border-2 border-primary-600 shadow-lg"}," ⬇️ Regeln Light herunterladen "),e("p",{class:"text-sm text-gray-500 text-center"}," PDF-Dokument (vereinfachte Fassung) ")],-1))])]),e("div",R,[t[17]||(t[17]=e("h2",{class:"text-3xl font-display font-bold text-gray-900 mb-8 text-center"}," Grundregeln im Überblick ",-1)),e("div",D,[e("div",F,[e("div",V,[r(l(m),{size:32,class:"text-primary-600"})]),t[5]||(t[5]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-2"},"Spielfeld",-1)),t[6]||(t[6]=e("p",{class:"text-gray-600 text-sm"},[s(" Tisch: 2,74m × 1,525m, Höhe: 76cm"),e("br"),s(" Netz: 15,25cm hoch ")],-1))]),e("div",j,[e("div",S,[r(l(b),{size:32,class:"text-primary-600"})]),t[7]||(t[7]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-2"},"Ball",-1)),t[8]||(t[8]=e("p",{class:"text-gray-600 text-sm"},[s(" Durchmesser: 40mm"),e("br"),s(" Gewicht: 2,7g ")],-1))]),e("div",G,[e("div",H,[r(l(y),{size:32,class:"text-primary-600"})]),t[9]||(t[9]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-2"},"Schläger",-1)),t[10]||(t[10]=e("p",{class:"text-gray-600 text-sm"},[s(" Belag: schwarz + farbig"),e("br"),s(" (rot, grün, pink, blau, gelb, lila)"),e("br"),s(" Holz: mindestens 85% ")],-1))]),e("div",P,[e("div",N,[r(l(f),{size:32,class:"text-primary-600"})]),t[11]||(t[11]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-2"},"Aufschlag",-1)),t[12]||(t[12]=e("p",{class:"text-gray-600 text-sm"},[s(" Ball muss sichtbar hochgeworfen werden"),e("br"),s(" Mindestens 16cm Höhe ")],-1))]),e("div",O,[e("div",M,[r(l(x),{size:32,class:"text-primary-600"})]),t[13]||(t[13]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-2"},"Satz",-1)),t[14]||(t[14]=e("p",{class:"text-gray-600 text-sm"},[s(" Gewinn bei 11 Punkten"),e("br"),s(" Mindestens 2 Punkte Vorsprung ")],-1))]),e("div",W,[e("div",A,[r(l(c),{size:32,class:"text-primary-600"})]),t[15]||(t[15]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-2"},"Spiel",-1)),t[16]||(t[16]=e("p",{class:"text-gray-600 text-sm"},[s(" Best of 5 oder 7 Sätze"),e("br"),s(" Wechsel alle 2 Punkte ")],-1))])])]),e("div",C,[e("h3",E,[r(l(p),{size:28,class:"mr-3"}),t[18]||(t[18]=s(" Weitere Informationen ",-1))]),t[19]||(t[19]=i('
Die offiziellen ITTF-Regeln werden regelmäßig aktualisiert und gelten für alle internationalen Wettkämpfe. Für regionale Turniere können abweichende Bestimmungen gelten.
',4)),n("div",null,[e[2]||(e[2]=n("h2",{class:"text-xl font-display font-bold text-gray-900 mb-2"},"Vereinsatzung",-1)),e[3]||(e[3]=n("p",{class:"text-gray-700 mb-4"}," Unsere aktuelle Vereinsatzung können Sie hier herunterladen oder online einsehen: ",-1)),n("div",p,[n("a",x,[t(s(g),{size:16,class:"mr-2"}),e[0]||(e[0]=i(" Satzung herunterladen (PDF) ",-1))]),t(a,{to:"/satzung",class:"inline-flex items-center px-4 py-2 bg-gray-100 hover:bg-gray-200 text-gray-900 font-medium rounded-lg transition-colors"},{default:d(()=>[t(s(m),{size:16,class:"mr-2"}),e[1]||(e[1]=i(" Online ansehen ",-1))]),_:1})])]),e[5]||(e[5]=r('
Verantwortlich für den Inhalt
Roger Dichmann Reginastr. 46 60437 Frankfurt
Haftungsausschluss
Haftung für Inhalte
Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen. Grundsätzlich sind alle unsere Informationen ohne Gewähr. Auch für den Fall das unzutreffende oder falsche Informationen enthalten sind, wird vom HTC jegliche Haftung ausgeschlossen.
Haftung für Links
Unser Angebot enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Eine Haftung für Schäden, die ggf. durch das Aufrufen dieser Seiten, bzw. deren Inhalte entstehen, wird vom HTC nicht übernommen. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
Urheberrecht
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
Datenschutzerklärung
Datenschutz
Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und entsprechend der gesetzlichen Datenschutzvorschriften sowie dieser Datenschutzerklärung. Die Nutzung unserer Website ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder E-Mail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben. Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
Widerspruch Werbe-Mails
Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-E-Mails, vor.
',3))])])])}}};export{S as default};
+import{c as l,a as n,p as r,b as t,d as i,u as s,w as d,_ as h,o}from"#entry";import{u}from"./BHFrGoXk.js";import{F as g}from"./BteKZQ9T.js";import{E as m}from"./Czdc6-TI.js";const c={class:"min-h-full py-16 px-4 sm:px-6 lg:px-8 bg-gray-50"},b={class:"max-w-4xl mx-auto"},f={class:"bg-white p-8 rounded-xl shadow-lg space-y-6"},p={class:"flex flex-col sm:flex-row gap-3"},x={href:"/documents/satzung.pdf",target:"_blank",class:"inline-flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-medium rounded-lg transition-colors"},S={__name:"impressum",setup(w){return u({title:"Impressum - Harheimer TC"}),(v,e)=>{const a=h;return o(),l("div",c,[n("div",b,[e[6]||(e[6]=n("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Impressum ",-1)),e[7]||(e[7]=n("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),n("div",f,[e[4]||(e[4]=r('
Angaben gemäß § 5 TMG
Harheimer Tischtennis-Club 1954 e. V. (HTC) In der Fuchskaut 4 60437 Frankfurt am Main
',4)),n("div",null,[e[2]||(e[2]=n("h2",{class:"text-xl font-display font-bold text-gray-900 mb-2"},"Vereinsatzung",-1)),e[3]||(e[3]=n("p",{class:"text-gray-700 mb-4"}," Unsere aktuelle Vereinsatzung können Sie hier herunterladen oder online einsehen: ",-1)),n("div",p,[n("a",x,[t(s(g),{size:16,class:"mr-2"}),e[0]||(e[0]=i(" Satzung herunterladen (PDF) ",-1))]),t(a,{to:"/satzung",class:"inline-flex items-center px-4 py-2 bg-gray-100 hover:bg-gray-200 text-gray-900 font-medium rounded-lg transition-colors"},{default:d(()=>[t(s(m),{size:16,class:"mr-2"}),e[1]||(e[1]=i(" Online ansehen ",-1))]),_:1})])]),e[5]||(e[5]=r('
Verantwortlich für den Inhalt
Roger Dichmann Reginastr. 46 60437 Frankfurt
Haftungsausschluss
Haftung für Inhalte
Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen. Grundsätzlich sind alle unsere Informationen ohne Gewähr. Auch für den Fall das unzutreffende oder falsche Informationen enthalten sind, wird vom HTC jegliche Haftung ausgeschlossen.
Haftung für Links
Unser Angebot enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Eine Haftung für Schäden, die ggf. durch das Aufrufen dieser Seiten, bzw. deren Inhalte entstehen, wird vom HTC nicht übernommen. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
Urheberrecht
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
Datenschutzerklärung
Datenschutz
Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und entsprechend der gesetzlichen Datenschutzvorschriften sowie dieser Datenschutzerklärung. Die Nutzung unserer Website ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder E-Mail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben. Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
Widerspruch Werbe-Mails
Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-E-Mails, vor.
',3))])])])}}};export{S as default};
diff --git a/.output/public/_nuxt/Br56r5HY.js b/.output/public/_nuxt/Cc_YSIsc.js
similarity index 99%
rename from .output/public/_nuxt/Br56r5HY.js
rename to .output/public/_nuxt/Cc_YSIsc.js
index 2206145..7452a01 100644
--- a/.output/public/_nuxt/Br56r5HY.js
+++ b/.output/public/_nuxt/Cc_YSIsc.js
@@ -1,2 +1,2 @@
-import{r as S,g as C,c as i,o as l,F as w,i as k,a as e,t as m,n as D,h as M,b as a,d as $,u as f,w as x,_ as N}from"#entry";import{B as T}from"./jVj3QaoK.js";import{U as y}from"./DkeYb0_S.js";import{u as B}from"./Bhv0LDrk.js";const H={key:0,class:"space-y-8"},V={class:"bg-gradient-to-r from-primary-600 to-primary-700 p-6"},E={class:"text-2xl font-display font-bold text-white mb-2"},U={class:"text-primary-100 text-lg"},j={class:"p-6"},A={class:"grid md:grid-cols-2 gap-6 mb-6"},F={class:"space-y-3"},W={class:"flex items-center space-x-3"},Z={class:"font-semibold text-gray-900"},I={class:"flex items-center space-x-3"},J={class:"font-semibold text-gray-900"},K={class:"space-y-3"},P={class:"flex items-center space-x-3"},Q={class:"font-semibold text-gray-900"},R={class:"flex items-center space-x-3"},q={class:"font-semibold text-gray-900"},G={class:"border-t border-gray-200 pt-6"},O={class:"grid sm:grid-cols-2 lg:grid-cols-4 gap-4"},X={class:"font-semibold text-gray-900"},Y={key:0,class:"text-xs text-primary-600 font-medium mt-1"},ee={class:"border-t border-gray-200 pt-6 mt-6"},te={class:"text-center"},se=["href"],re={class:"border-t border-gray-200 pt-4 mt-6"},ne={class:"text-sm text-gray-500 text-center"},oe={key:1,class:"text-center py-12 bg-gray-50 rounded-xl"},ie={__name:"MannschaftenUebersicht",setup(z){const u=S([]),s=async()=>{try{console.log("Lade Mannschaften...");const o=await fetch("/data/mannschaften.csv");if(console.log("Response:",o),!o.ok)throw new Error(`HTTP error! status: ${o.status}`);const t=await o.text();console.log("CSV Text:",t);const n=t.split(`
+import{r as S,g as C,c as i,o as l,F as w,i as k,a as e,t as m,n as D,h as M,b as a,d as $,u as f,w as x,_ as N}from"#entry";import{B as T}from"./jVj3QaoK.js";import{U as y}from"./DkeYb0_S.js";import{u as B}from"./BHFrGoXk.js";const H={key:0,class:"space-y-8"},V={class:"bg-gradient-to-r from-primary-600 to-primary-700 p-6"},E={class:"text-2xl font-display font-bold text-white mb-2"},U={class:"text-primary-100 text-lg"},j={class:"p-6"},A={class:"grid md:grid-cols-2 gap-6 mb-6"},F={class:"space-y-3"},W={class:"flex items-center space-x-3"},Z={class:"font-semibold text-gray-900"},I={class:"flex items-center space-x-3"},J={class:"font-semibold text-gray-900"},K={class:"space-y-3"},P={class:"flex items-center space-x-3"},Q={class:"font-semibold text-gray-900"},R={class:"flex items-center space-x-3"},q={class:"font-semibold text-gray-900"},G={class:"border-t border-gray-200 pt-6"},O={class:"grid sm:grid-cols-2 lg:grid-cols-4 gap-4"},X={class:"font-semibold text-gray-900"},Y={key:0,class:"text-xs text-primary-600 font-medium mt-1"},ee={class:"border-t border-gray-200 pt-6 mt-6"},te={class:"text-center"},se=["href"],re={class:"border-t border-gray-200 pt-4 mt-6"},ne={class:"text-sm text-gray-500 text-center"},oe={key:1,class:"text-center py-12 bg-gray-50 rounded-xl"},ie={__name:"MannschaftenUebersicht",setup(z){const u=S([]),s=async()=>{try{console.log("Lade Mannschaften...");const o=await fetch("/data/mannschaften.csv");if(console.log("Response:",o),!o.ok)throw new Error(`HTTP error! status: ${o.status}`);const t=await o.text();console.log("CSV Text:",t);const n=t.split(`
`).filter(d=>d.trim()!=="");if(console.log("CSV Lines:",n),n.length<2){console.log("Keine Datenzeilen gefunden");return}u.value=n.slice(1).map((d,p)=>{const r=[];let c="",h=!1;for(let b=0;bd!==null),console.log("Alle geparsten Mannschaften:",u.value)}catch(o){console.error("Fehler beim Laden der Mannschaften:",o)}},g=o=>o.spieler?o.spieler.split(";").map(t=>t.trim()).filter(t=>t!==""):[],L=o=>{if(!o)return"";if(/^\d{2}\.\d{2}\.\d{4}$/.test(o))return o;const t=new Date(o);return isNaN(t.getTime())?o:t.toLocaleDateString("de-DE",{day:"2-digit",month:"2-digit",year:"numeric"})};return C(()=>{s()}),(o,t)=>(l(),i("div",null,[u.value.length>0?(l(),i("div",H,[(l(!0),i(w,null,k(u.value,(n,d)=>(l(),i("div",{key:d,class:"bg-white rounded-xl shadow-lg border border-gray-100 overflow-hidden"},[e("div",V,[e("h2",E,m(n.mannschaft),1),e("p",U,m(n.liga),1)]),e("div",j,[e("div",A,[e("div",F,[e("div",W,[t[0]||(t[0]=e("div",{class:"w-2 h-2 bg-primary-600 rounded-full"},null,-1)),t[1]||(t[1]=e("span",{class:"text-gray-600"},"Staffelleiter:",-1)),e("span",Z,m(n.staffelleiter),1)]),e("div",I,[t[2]||(t[2]=e("div",{class:"w-2 h-2 bg-primary-600 rounded-full"},null,-1)),t[3]||(t[3]=e("span",{class:"text-gray-600"},"Telefon:",-1)),e("span",J,m(n.telefon),1)])]),e("div",K,[e("div",P,[t[4]||(t[4]=e("div",{class:"w-2 h-2 bg-primary-600 rounded-full"},null,-1)),t[5]||(t[5]=e("span",{class:"text-gray-600"},"Heimspieltag:",-1)),e("span",Q,m(n.heimspieltag),1)]),e("div",R,[t[6]||(t[6]=e("div",{class:"w-2 h-2 bg-primary-600 rounded-full"},null,-1)),t[7]||(t[7]=e("span",{class:"text-gray-600"},"Spielsystem:",-1)),e("span",q,m(n.spielsystem),1)])])]),e("div",G,[t[8]||(t[8]=e("h3",{class:"text-xl font-semibold text-gray-900 mb-4"}," Mannschaftsaufstellung Saison 2025/26 (Hinrunde) ",-1)),e("div",O,[(l(!0),i(w,null,k(g(n),(p,r)=>(l(),i("div",{key:r,class:D(["bg-gray-50 rounded-lg p-4 text-center",p===n.mannschaftsfuehrer?"ring-2 ring-primary-500 bg-primary-50":""])},[e("div",X,m(p),1),p===n.mannschaftsfuehrer?(l(),i("div",Y," Mannschaftsführer ")):M("",!0)],2))),128))])]),e("div",ee,[e("div",te,[n.weitere_informationen_link&&n.weitere_informationen_link!==""?(l(),i("a",{key:0,href:n.weitere_informationen_link,target:"_blank",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},[a(f(T),{size:20,class:"mr-2"}),t[9]||(t[9]=$(" Weitere Informationen ",-1))],8,se)):M("",!0)])]),e("div",re,[e("p",ne," Zuletzt aktualisiert am: "+m(L(n.letzte_aktualisierung)),1)])])]))),128))])):(l(),i("div",oe,[a(f(y),{size:48,class:"text-gray-400 mx-auto mb-4"}),t[10]||(t[10]=e("p",{class:"text-gray-600"},"Keine Mannschaftsdaten geladen",-1))]))]))}},le={class:"min-h-full py-16 bg-gray-50"},ae={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},de={class:"mt-16"},me={class:"grid md:grid-cols-3 gap-8"},ge={class:"w-16 h-16 bg-gradient-to-br from-primary-500 to-primary-700 rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 transition-transform"},pe={class:"w-16 h-16 bg-gradient-to-br from-primary-500 to-primary-700 rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 transition-transform"},ue={class:"w-16 h-16 bg-gradient-to-br from-primary-500 to-primary-700 rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 transition-transform"},fe={class:"mt-12 bg-primary-50 p-8 rounded-xl border border-primary-100"},be={__name:"index",setup(z){return B({title:"Mannschaften - Harheimer TC"}),(u,s)=>{const g=N;return l(),i("div",le,[e("div",ae,[s[10]||(s[10]=e("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Unsere Mannschaften ",-1)),s[11]||(s[11]=e("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),s[12]||(s[12]=e("p",{class:"text-xl text-gray-600 mb-12"}," Unsere aktiven Mannschaften in der Saison 2025/26 ",-1)),a(ie),e("div",de,[s[9]||(s[9]=e("h2",{class:"text-3xl font-display font-bold text-gray-900 mb-8 text-center"}," Weitere Informationen ",-1)),e("div",me,[a(g,{to:"/mannschaften/herren",class:"group bg-white p-8 rounded-xl shadow-lg hover:shadow-2xl transition-all border border-gray-100 hover:border-primary-600"},{default:x(()=>[e("div",ge,[a(f(y),{size:32,class:"text-white"})]),s[0]||(s[0]=e("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-2 group-hover:text-primary-600 transition-colors"}," Herren ",-1)),s[1]||(s[1]=e("p",{class:"text-gray-600"}," 3 Mannschaften in verschiedenen Ligen ",-1))]),_:1}),a(g,{to:"/mannschaften/damen",class:"group bg-white p-8 rounded-xl shadow-lg hover:shadow-2xl transition-all border border-gray-100 hover:border-primary-600"},{default:x(()=>[e("div",pe,[a(f(y),{size:32,class:"text-white"})]),s[2]||(s[2]=e("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-2 group-hover:text-primary-600 transition-colors"}," Damen ",-1)),s[3]||(s[3]=e("p",{class:"text-gray-600"}," 1 Mannschaft in der Bezirksliga ",-1))]),_:1}),a(g,{to:"/mannschaften/jugend",class:"group bg-white p-8 rounded-xl shadow-lg hover:shadow-2xl transition-all border border-gray-100 hover:border-primary-600"},{default:x(()=>[e("div",ue,[a(f(y),{size:32,class:"text-white"})]),s[4]||(s[4]=e("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-2 group-hover:text-primary-600 transition-colors"}," Jugend ",-1)),s[5]||(s[5]=e("p",{class:"text-gray-600"}," 2 Jugendmannschaften ",-1))]),_:1})]),e("div",fe,[s[7]||(s[7]=e("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-4"}," Spielpläne & Ergebnisse ",-1)),s[8]||(s[8]=e("p",{class:"text-gray-600 mb-6"}," Alle aktuellen Spielpläne und Ergebnisse unserer Mannschaften finden Sie hier. ",-1)),a(g,{to:"/mannschaften/spielplaene",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},{default:x(()=>[...s[6]||(s[6]=[$(" Zu den Spielplänen ",-1)])]),_:1})])])])])}}};export{be as default};
diff --git a/.output/public/_nuxt/NR0kh36x.js b/.output/public/_nuxt/CnDB0aJH.js
similarity index 95%
rename from .output/public/_nuxt/NR0kh36x.js
rename to .output/public/_nuxt/CnDB0aJH.js
index c9e86b1..b7615af 100644
--- a/.output/public/_nuxt/NR0kh36x.js
+++ b/.output/public/_nuxt/CnDB0aJH.js
@@ -1 +1 @@
-import{u as e}from"./Bhv0LDrk.js";import{c as r,j as s,o as a}from"#entry";const n={class:"min-h-full py-16 bg-gray-50"},p={__name:"trainer",setup(i){return e({title:"Trainer - Harheimer TC"}),(l,t)=>(a(),r("div",n,[...t[0]||(t[0]=[s('
Unsere Trainer
Erfahrene und qualifizierte Trainer für alle Leistungsstufen
C-Trainer
Torsten Schulz
Lizenz: C-Trainer Schwerpunkt: Nachwuchsförderung Erwachsenen bei Wunsch zur Verfügung
',1)])]))}};export{p as default};
+import{u as e}from"./BHFrGoXk.js";import{c as r,p as s,o as a}from"#entry";const n={class:"min-h-full py-16 bg-gray-50"},p={__name:"trainer",setup(i){return e({title:"Trainer - Harheimer TC"}),(l,t)=>(a(),r("div",n,[...t[0]||(t[0]=[s('
Unsere Trainer
Erfahrene und qualifizierte Trainer für alle Leistungsstufen
C-Trainer
Torsten Schulz
Lizenz: C-Trainer Schwerpunkt: Nachwuchsförderung Erwachsenen bei Wunsch zur Verfügung
',1)])]))}};export{p as default};
diff --git a/.output/public/_nuxt/BhSG1dHk.js b/.output/public/_nuxt/Cu9pESPT.js
similarity index 98%
rename from .output/public/_nuxt/BhSG1dHk.js
rename to .output/public/_nuxt/Cu9pESPT.js
index 5dd2f1a..51ca0eb 100644
--- a/.output/public/_nuxt/BhSG1dHk.js
+++ b/.output/public/_nuxt/Cu9pESPT.js
@@ -1,4 +1,4 @@
-import{u as $}from"./Bhv0LDrk.js";import{F as b}from"./BteKZQ9T.js";import{e as j,r as _,f as w,g as E,c as a,a as l,t as c,F as k,i as S,b as x,u as g,h as M,o as r,d as L}from"#entry";import{E as z}from"./Cx4UcKGu.js";/**
+import{u as $}from"./BHFrGoXk.js";import{F as b}from"./BteKZQ9T.js";import{e as j,r as _,f as w,g as E,c as a,a as l,t as c,F as k,i as S,b as x,u as g,h as M,o as r,d as L}from"#entry";import{E as z}from"./Cx4UcKGu.js";/**
* @license lucide-vue-next v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
diff --git a/.output/public/_nuxt/BWBYU0do.js b/.output/public/_nuxt/CxCUaO3C.js
similarity index 98%
rename from .output/public/_nuxt/BWBYU0do.js
rename to .output/public/_nuxt/CxCUaO3C.js
index 178c603..58d2585 100644
--- a/.output/public/_nuxt/BWBYU0do.js
+++ b/.output/public/_nuxt/CxCUaO3C.js
@@ -1 +1 @@
-import{c as d,a as t,b as e,u as r,d as n,w as o,_ as m,o as x}from"#entry";import{u as p}from"./Bhv0LDrk.js";import{M as a,C as l}from"./C5SyyWEb.js";const g={class:"min-h-full py-16 bg-gray-50"},b={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},f={class:"bg-white rounded-xl shadow-lg p-8 mb-12"},y={class:"flex items-start space-x-4 mb-6"},u={href:"https://www.google.com/maps/search/?api=1&query=In+den+Schafgärten+25+60437+Frankfurt",target:"_blank",class:"inline-flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-medium rounded-lg transition-colors text-sm"},h={class:"grid gap-6 mb-12"},c={class:"bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"},v={class:"flex items-start justify-between"},w={class:"bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"},_={class:"flex items-start justify-between"},k={class:"mt-12 bg-primary-50 p-8 rounded-xl border border-primary-100"},z={class:"flex flex-wrap gap-4"},H={__name:"index",setup(T){return p({title:"Trainingszeiten - Harheimer TC"}),(I,s)=>{const i=m;return x(),d("div",g,[t("div",b,[s[11]||(s[11]=t("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Trainingszeiten ",-1)),s[12]||(s[12]=t("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),t("div",f,[t("div",y,[e(r(a),{size:32,class:"text-primary-600 flex-shrink-0"}),t("div",null,[s[1]||(s[1]=t("h2",{class:"text-2xl font-display font-bold text-gray-900 mb-4"},"Trainingsort",-1)),s[2]||(s[2]=t("h3",{class:"text-lg font-semibold text-gray-900 mb-2"}," Sporthalle der Grundschule Harheim ",-1)),s[3]||(s[3]=t("p",{class:"text-gray-700 mb-1"},"In den Schafgärten 25",-1)),s[4]||(s[4]=t("p",{class:"text-gray-700 mb-4"},"60437 Frankfurt/Main",-1)),t("a",u,[e(r(a),{size:16,class:"mr-2"}),s[0]||(s[0]=n(" Anfahrtsplan anzeigen ",-1))])])])]),s[13]||(s[13]=t("h2",{class:"text-2xl font-display font-bold text-gray-900 mb-6"}," Trainingszeiten ",-1)),t("div",h,[t("div",c,[t("div",v,[s[5]||(s[5]=t("div",null,[t("h3",{class:"text-xl font-display font-bold text-gray-900 mb-2"},"Damen und Herren"),t("div",{class:"space-y-2"},[t("p",{class:"text-lg font-semibold text-primary-600"}," Dienstag: 19:30 - 22:30 Uhr "),t("p",{class:"text-lg font-semibold text-primary-600"}," Donnerstag: 19:30 - 22:30 Uhr ")])],-1)),e(r(l),{size:32,class:"text-primary-600"})])]),t("div",w,[t("div",_,[s[6]||(s[6]=t("div",null,[t("h3",{class:"text-xl font-display font-bold text-gray-900 mb-2"},"Schüler/Jugend"),t("p",{class:"text-gray-600 mb-2"},"Ab 6 Jahre"),t("p",{class:"text-lg font-semibold text-primary-600"}," Dienstag: 17:30 - 19:30 Uhr ")],-1)),e(r(l),{size:32,class:"text-primary-600"})])])]),t("div",k,[s[9]||(s[9]=t("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-4"}," Interessiert? ",-1)),s[10]||(s[10]=t("p",{class:"text-gray-600 mb-6"}," Komm einfach zum Schnuppertraining vorbei oder kontaktiere uns für weitere Informationen! ",-1)),t("div",z,[e(i,{to:"/training/anfaenger",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},{default:o(()=>[...s[7]||(s[7]=[n(" Infos für Anfänger ",-1)])]),_:1}),e(i,{to:"/kontakt",class:"inline-flex items-center px-6 py-3 bg-white hover:bg-gray-50 text-primary-600 border-2 border-primary-600 font-semibold rounded-lg transition-colors"},{default:o(()=>[...s[8]||(s[8]=[n(" Kontakt ",-1)])]),_:1})])])])])}}};export{H as default};
+import{c as d,a as t,b as e,u as r,d as n,w as o,_ as m,o as x}from"#entry";import{u as p}from"./BHFrGoXk.js";import{M as a,C as l}from"./C5SyyWEb.js";const g={class:"min-h-full py-16 bg-gray-50"},b={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},f={class:"bg-white rounded-xl shadow-lg p-8 mb-12"},y={class:"flex items-start space-x-4 mb-6"},u={href:"https://www.google.com/maps/search/?api=1&query=In+den+Schafgärten+25+60437+Frankfurt",target:"_blank",class:"inline-flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-medium rounded-lg transition-colors text-sm"},h={class:"grid gap-6 mb-12"},c={class:"bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"},v={class:"flex items-start justify-between"},w={class:"bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"},_={class:"flex items-start justify-between"},k={class:"mt-12 bg-primary-50 p-8 rounded-xl border border-primary-100"},z={class:"flex flex-wrap gap-4"},H={__name:"index",setup(T){return p({title:"Trainingszeiten - Harheimer TC"}),(I,s)=>{const i=m;return x(),d("div",g,[t("div",b,[s[11]||(s[11]=t("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Trainingszeiten ",-1)),s[12]||(s[12]=t("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),t("div",f,[t("div",y,[e(r(a),{size:32,class:"text-primary-600 flex-shrink-0"}),t("div",null,[s[1]||(s[1]=t("h2",{class:"text-2xl font-display font-bold text-gray-900 mb-4"},"Trainingsort",-1)),s[2]||(s[2]=t("h3",{class:"text-lg font-semibold text-gray-900 mb-2"}," Sporthalle der Grundschule Harheim ",-1)),s[3]||(s[3]=t("p",{class:"text-gray-700 mb-1"},"In den Schafgärten 25",-1)),s[4]||(s[4]=t("p",{class:"text-gray-700 mb-4"},"60437 Frankfurt/Main",-1)),t("a",u,[e(r(a),{size:16,class:"mr-2"}),s[0]||(s[0]=n(" Anfahrtsplan anzeigen ",-1))])])])]),s[13]||(s[13]=t("h2",{class:"text-2xl font-display font-bold text-gray-900 mb-6"}," Trainingszeiten ",-1)),t("div",h,[t("div",c,[t("div",v,[s[5]||(s[5]=t("div",null,[t("h3",{class:"text-xl font-display font-bold text-gray-900 mb-2"},"Damen und Herren"),t("div",{class:"space-y-2"},[t("p",{class:"text-lg font-semibold text-primary-600"}," Dienstag: 19:30 - 22:30 Uhr "),t("p",{class:"text-lg font-semibold text-primary-600"}," Donnerstag: 19:30 - 22:30 Uhr ")])],-1)),e(r(l),{size:32,class:"text-primary-600"})])]),t("div",w,[t("div",_,[s[6]||(s[6]=t("div",null,[t("h3",{class:"text-xl font-display font-bold text-gray-900 mb-2"},"Schüler/Jugend"),t("p",{class:"text-gray-600 mb-2"},"Ab 6 Jahre"),t("p",{class:"text-lg font-semibold text-primary-600"}," Dienstag: 17:30 - 19:30 Uhr ")],-1)),e(r(l),{size:32,class:"text-primary-600"})])])]),t("div",k,[s[9]||(s[9]=t("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-4"}," Interessiert? ",-1)),s[10]||(s[10]=t("p",{class:"text-gray-600 mb-6"}," Komm einfach zum Schnuppertraining vorbei oder kontaktiere uns für weitere Informationen! ",-1)),t("div",z,[e(i,{to:"/training/anfaenger",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},{default:o(()=>[...s[7]||(s[7]=[n(" Infos für Anfänger ",-1)])]),_:1}),e(i,{to:"/kontakt",class:"inline-flex items-center px-6 py-3 bg-white hover:bg-gray-50 text-primary-600 border-2 border-primary-600 font-semibold rounded-lg transition-colors"},{default:o(()=>[...s[8]||(s[8]=[n(" Kontakt ",-1)])]),_:1})])])])])}}};export{H as default};
diff --git a/.output/public/_nuxt/DAACT36i.js b/.output/public/_nuxt/DAACT36i.js
new file mode 100644
index 0000000..f7fa990
--- /dev/null
+++ b/.output/public/_nuxt/DAACT36i.js
@@ -0,0 +1,6 @@
+import{e as a}from"#entry";/**
+ * @license lucide-vue-next v0.344.0 - ISC
+ *
+ * This source code is licensed under the ISC license.
+ * See the LICENSE file in the root directory of this source tree.
+ */const p=a("NewspaperIcon",[["path",{d:"M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-2 2Zm0 0a2 2 0 0 1-2-2v-9c0-1.1.9-2 2-2h2",key:"7pis2x"}],["path",{d:"M18 14h-8",key:"sponae"}],["path",{d:"M15 18h-5",key:"95g1m2"}],["path",{d:"M10 6h8v4h-8V6Z",key:"smlsk5"}]]);export{p as N};
diff --git a/.output/public/_nuxt/B6WBbdVo.js b/.output/public/_nuxt/DCNxe3RA.js
similarity index 97%
rename from .output/public/_nuxt/B6WBbdVo.js
rename to .output/public/_nuxt/DCNxe3RA.js
index 462856a..b5e1315 100644
--- a/.output/public/_nuxt/B6WBbdVo.js
+++ b/.output/public/_nuxt/DCNxe3RA.js
@@ -1,2 +1,2 @@
-import{s as M,r as L,g as N,c as l,a as e,t as a,F as z,i as C,h as y,b as x,d as h,u as D,w as _,_ as B,o,n as H}from"#entry";import{u as T}from"./Bhv0LDrk.js";import{B as V}from"./jVj3QaoK.js";const F={class:"min-h-full py-16 bg-gray-50"},I={class:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8"},S={key:0,class:"space-y-8"},Z={class:"bg-gradient-to-r from-primary-600 to-primary-700 rounded-xl p-8 text-white"},E={class:"text-4xl font-display font-bold mb-2"},W={class:"text-primary-100 text-xl"},$={class:"bg-white rounded-xl shadow-lg p-6"},Q={class:"grid md:grid-cols-2 gap-6"},R={class:"space-y-4"},j={class:"flex items-center space-x-3"},q={class:"font-semibold text-gray-900"},A={class:"flex items-center space-x-3"},G={class:"font-semibold text-gray-900"},J={class:"space-y-4"},K={class:"flex items-center space-x-3"},O={class:"font-semibold text-gray-900"},P={class:"flex items-center space-x-3"},U={class:"font-semibold text-gray-900"},X={class:"bg-white rounded-xl shadow-lg p-6"},Y={class:"grid sm:grid-cols-2 lg:grid-cols-4 gap-4"},tt={class:"font-semibold text-gray-900"},et={key:0,class:"text-xs text-primary-600 font-medium mt-1"},st={class:"bg-white rounded-xl shadow-lg p-6"},nt={class:"text-center"},it=["href"],rt={class:"bg-white rounded-xl shadow-lg p-6"},at={class:"text-sm text-gray-500 text-center"},lt={class:"text-center"},ot={key:1,class:"text-center py-16"},ft={__name:"[slug]",setup(dt){const v=M(),s=L(null),b=async()=>{try{const n=await fetch("/data/mannschaften.csv");if(!n.ok)return;const d=(await n.text()).split(`
+import{x as M,r as L,g as N,c as l,a as e,t as a,F as z,i as C,h as y,b as x,d as h,u as D,w as _,_ as B,o,n as H}from"#entry";import{u as T}from"./BHFrGoXk.js";import{B as V}from"./jVj3QaoK.js";const F={class:"min-h-full py-16 bg-gray-50"},I={class:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8"},S={key:0,class:"space-y-8"},Z={class:"bg-gradient-to-r from-primary-600 to-primary-700 rounded-xl p-8 text-white"},E={class:"text-4xl font-display font-bold mb-2"},W={class:"text-primary-100 text-xl"},$={class:"bg-white rounded-xl shadow-lg p-6"},Q={class:"grid md:grid-cols-2 gap-6"},R={class:"space-y-4"},j={class:"flex items-center space-x-3"},q={class:"font-semibold text-gray-900"},A={class:"flex items-center space-x-3"},G={class:"font-semibold text-gray-900"},J={class:"space-y-4"},K={class:"flex items-center space-x-3"},O={class:"font-semibold text-gray-900"},P={class:"flex items-center space-x-3"},U={class:"font-semibold text-gray-900"},X={class:"bg-white rounded-xl shadow-lg p-6"},Y={class:"grid sm:grid-cols-2 lg:grid-cols-4 gap-4"},tt={class:"font-semibold text-gray-900"},et={key:0,class:"text-xs text-primary-600 font-medium mt-1"},st={class:"bg-white rounded-xl shadow-lg p-6"},nt={class:"text-center"},it=["href"],rt={class:"bg-white rounded-xl shadow-lg p-6"},at={class:"text-sm text-gray-500 text-center"},lt={class:"text-center"},ot={key:1,class:"text-center py-16"},ft={__name:"[slug]",setup(dt){const v=M(),s=L(null),b=async()=>{try{const n=await fetch("/data/mannschaften.csv");if(!n.ok)return;const d=(await n.text()).split(`
`).filter(r=>r.trim()!=="");if(d.length<2)return;const m=d.slice(1).map(r=>{const i=[];let u="",f=!1;for(let p=0;pr!==null),c=v.params.slug;s.value=m.find(r=>r.slug===c)||null,s.value&&T({title:`${s.value.mannschaft} - Harheimer TC`})}catch(n){console.error("Fehler beim Laden der Mannschaften:",n)}},w=n=>n.spieler?n.spieler.split(";").map(t=>t.trim()).filter(t=>t!==""):[],k=n=>{if(!n)return"";if(/^\d{2}\.\d{2}\.\d{4}$/.test(n))return n;const t=new Date(n);return isNaN(t.getTime())?n:t.toLocaleDateString("de-DE",{day:"2-digit",month:"2-digit",year:"numeric"})};return N(()=>{b()}),(n,t)=>{const d=B;return o(),l("div",F,[e("div",I,[s.value?(o(),l("div",S,[e("div",Z,[e("h1",E,a(s.value.mannschaft),1),e("p",W,a(s.value.liga),1)]),e("div",$,[t[8]||(t[8]=e("h2",{class:"text-2xl font-semibold text-gray-900 mb-6"},"Liga-Informationen",-1)),e("div",Q,[e("div",R,[e("div",j,[t[0]||(t[0]=e("div",{class:"w-2 h-2 bg-primary-600 rounded-full"},null,-1)),t[1]||(t[1]=e("span",{class:"text-gray-600"},"Staffelleiter:",-1)),e("span",q,a(s.value.staffelleiter),1)]),e("div",A,[t[2]||(t[2]=e("div",{class:"w-2 h-2 bg-primary-600 rounded-full"},null,-1)),t[3]||(t[3]=e("span",{class:"text-gray-600"},"Telefon:",-1)),e("span",G,a(s.value.telefon),1)])]),e("div",J,[e("div",K,[t[4]||(t[4]=e("div",{class:"w-2 h-2 bg-primary-600 rounded-full"},null,-1)),t[5]||(t[5]=e("span",{class:"text-gray-600"},"Heimspieltag:",-1)),e("span",O,a(s.value.heimspieltag),1)]),e("div",P,[t[6]||(t[6]=e("div",{class:"w-2 h-2 bg-primary-600 rounded-full"},null,-1)),t[7]||(t[7]=e("span",{class:"text-gray-600"},"Spielsystem:",-1)),e("span",U,a(s.value.spielsystem),1)])])])]),e("div",X,[t[9]||(t[9]=e("h2",{class:"text-2xl font-semibold text-gray-900 mb-6"}," Mannschaftsaufstellung Saison 2025/26 (Hinrunde) ",-1)),e("div",Y,[(o(!0),l(z,null,C(w(s.value),(m,c)=>(o(),l("div",{key:c,class:H(["bg-gray-50 rounded-lg p-4 text-center",m===s.value.mannschaftsfuehrer?"ring-2 ring-primary-500 bg-primary-50":""])},[e("div",tt,a(m),1),m===s.value.mannschaftsfuehrer?(o(),l("div",et," Mannschaftsführer ")):y("",!0)],2))),128))])]),e("div",st,[t[11]||(t[11]=e("h2",{class:"text-2xl font-semibold text-gray-900 mb-6"},"Weitere Informationen",-1)),e("div",nt,[s.value.weitere_informationen_link&&s.value.weitere_informationen_link!==""?(o(),l("a",{key:0,href:s.value.weitere_informationen_link,target:"_blank",class:"inline-flex items-center px-8 py-4 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},[x(D(V),{size:24,class:"mr-3"}),t[10]||(t[10]=h(" Weitere Informationen ",-1))],8,it)):y("",!0)])]),e("div",rt,[e("p",at," Zuletzt aktualisiert am: "+a(k(s.value.letzte_aktualisierung)),1)]),e("div",lt,[x(d,{to:"/mannschaften",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},{default:_(()=>[...t[12]||(t[12]=[h(" ← Zurück zur Übersicht ",-1)])]),_:1})])])):(o(),l("div",ot,[t[14]||(t[14]=e("h1",{class:"text-4xl font-display font-bold text-gray-900 mb-4"},"Mannschaft nicht gefunden",-1)),t[15]||(t[15]=e("p",{class:"text-gray-600 mb-8"},"Die angeforderte Mannschaft konnte nicht gefunden werden.",-1)),x(d,{to:"/mannschaften",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},{default:_(()=>[...t[13]||(t[13]=[h(" Zur Mannschaftsübersicht ",-1)])]),_:1})]))])])}}};export{ft as default};
diff --git a/.output/public/_nuxt/DT67Eyw3.js b/.output/public/_nuxt/DdCvOctW.js
similarity index 91%
rename from .output/public/_nuxt/DT67Eyw3.js
rename to .output/public/_nuxt/DdCvOctW.js
index 878d620..1b6c90a 100644
--- a/.output/public/_nuxt/DT67Eyw3.js
+++ b/.output/public/_nuxt/DdCvOctW.js
@@ -1 +1 @@
-import{c as n,o as r,a as e,F as p,i as u,n as o,h as y,b as i,k as _,l as v,t as a,u as m,w as c,d as l,_ as w}from"#entry";import{C as b}from"./DaSgy0Cl.js";import{S as k}from"./XZ6RV9KH.js";import{H as z}from"./CWEkTB1z.js";import{F as S}from"./BteKZQ9T.js";import{E as V}from"./Czdc6-TI.js";import{u as C}from"./Bhv0LDrk.js";const J={id:"membership",class:"py-16 sm:py-20 bg-gradient-to-b from-gray-50 to-white"},F={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},T={class:"grid md:grid-cols-3 gap-8 max-w-6xl mx-auto"},H={key:0,class:"absolute top-0 right-0 bg-primary-600 text-white px-4 py-1 text-sm font-semibold rounded-bl-lg"},N={class:"p-8"},B={class:"text-2xl font-display font-bold text-gray-900 mb-2"},E={class:"text-gray-600 mb-6 min-h-[3rem]"},K={class:"mb-6"},M={class:"flex items-baseline"},L={class:"text-5xl font-bold text-gray-900"},j={class:"text-gray-600 ml-2"},D={class:"space-y-3 mb-8"},P={class:"text-gray-700"},U={class:"mt-16 bg-white rounded-2xl shadow-xl p-8 border border-gray-100"},G={class:"flex flex-col sm:flex-row gap-4 justify-center items-center"},W={href:"/documents/satzung.pdf",target:"_blank",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},$={class:"mt-16 bg-gradient-to-r from-primary-600 to-primary-700 rounded-2xl p-8 sm:p-12 text-center"},I={__name:"Membership",setup(h){const g=[{name:"Kinder/Jugend",price:"72",period:"Jahr",description:"Perfekt für junge Tischtennisspieler bis 18 Jahre",features:["Unbegrenzte Hallennutzung","Kostenfreies Jugendtraining","Teilnahme an Jugendturnieren","Clubveranstaltungen","Gäste mitbringen"],icon:k,gradient:"from-blue-500 to-cyan-500"},{name:"Erwachsene",price:"120",period:"Jahr",description:"Vollmitgliedschaft für Erwachsene",features:["Unbegrenzte Hallennutzung","Freies Spielen nach Verfügbarkeit","Clubveranstaltungen","Gäste mitbringen","Zugang Trainingsbereich"],icon:b,gradient:"from-primary-500 to-green-600",popular:!0},{name:"Passiv",price:"30",period:"Jahr",description:"Unterstützen Sie Ihren Lieblingsverein",features:["Vereinsunterstützung","Vereinsinformationen","Keine Spielberechtigung"],icon:z,gradient:"from-orange-500 to-red-500"}];return(f,t)=>{const d=w;return r(),n("section",J,[e("div",F,[t[8]||(t[8]=e("div",{class:"text-center mb-16"},[e("h2",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"}," Mitgliedschaft "),e("div",{class:"w-24 h-1 bg-primary-600 mx-auto mb-6"}),e("p",{class:"text-xl text-gray-600 max-w-3xl mx-auto"}," Werden Sie Teil unserer Tischtennis-Familie - Wählen Sie die passende Mitgliedschaft für sich ")],-1)),e("div",T,[(r(),n(p,null,u(g,s=>e("div",{key:s.name,class:o(["relative bg-white rounded-2xl shadow-xl overflow-hidden",s.popular?"ring-4 ring-primary-500 scale-105":""])},[s.popular?(r(),n("div",H," Beliebt ")):y("",!0),e("div",{class:o(["h-2 bg-gradient-to-r",s.gradient])},null,2),e("div",N,[e("div",{class:o(["w-12 h-12 bg-gradient-to-br rounded-xl flex items-center justify-center mb-4",s.gradient])},[(r(),_(v(s.icon),{size:24,class:"text-white"}))],2),e("h3",B,a(s.name),1),e("p",E,a(s.description),1),e("div",K,[e("div",M,[e("span",L,a(s.price)+"€",1),e("span",j,"/ "+a(s.period),1)])]),e("ul",D,[(r(!0),n(p,null,u(s.features,x=>(r(),n("li",{key:x,class:"flex items-start"},[i(m(b),{size:20,class:"text-primary-600 mr-3 flex-shrink-0 mt-0.5"}),e("span",P,a(x),1)]))),128))]),i(d,{to:"/kontakt",class:o(["block w-full text-center px-6 py-3 rounded-lg font-semibold transition-all duration-300",s.popular?"bg-primary-600 hover:bg-primary-700 text-white shadow-lg hover:shadow-xl":"bg-gray-100 hover:bg-gray-200 text-gray-900"])},{default:c(()=>[...t[0]||(t[0]=[l(" Jetzt beitreten ",-1)])]),_:1},8,["class"])])],2)),64))]),e("div",U,[t[4]||(t[4]=e("div",{class:"text-center mb-8"},[e("h3",{class:"text-3xl font-display font-bold text-gray-900 mb-4"}," Vereinsatzung "),e("p",{class:"text-xl text-gray-600"}," Laden Sie unsere aktuelle Vereinsatzung herunter ")],-1)),e("div",G,[e("a",W,[i(m(S),{size:20,class:"mr-2"}),t[1]||(t[1]=l(" Satzung herunterladen (PDF) ",-1))]),t[3]||(t[3]=e("span",{class:"text-sm text-gray-500"},"oder",-1)),i(d,{to:"/satzung",class:"inline-flex items-center px-6 py-3 bg-gray-100 hover:bg-gray-200 text-gray-900 font-semibold rounded-lg transition-colors"},{default:c(()=>[i(m(V),{size:20,class:"mr-2"}),t[2]||(t[2]=l(" Online ansehen ",-1))]),_:1})])]),e("div",$,[t[6]||(t[6]=e("h3",{class:"text-3xl font-display font-bold text-white mb-4"}," Noch Fragen zur Mitgliedschaft? ",-1)),t[7]||(t[7]=e("p",{class:"text-xl text-primary-100 mb-6"}," Kontaktieren Sie uns - wir beraten Sie gerne persönlich ",-1)),i(d,{to:"/kontakt",class:"inline-flex items-center px-8 py-4 bg-white text-primary-600 font-semibold rounded-lg hover:bg-gray-100 transition-colors"},{default:c(()=>[...t[5]||(t[5]=[l(" Jetzt Kontakt aufnehmen ",-1)])]),_:1})])])])}}},O={class:"min-h-screen"},ee={__name:"mitgliedschaft",setup(h){return C({title:"Mitgliedschaft - Harheimer TC"}),(g,f)=>(r(),n("div",O,[i(I)]))}};export{ee as default};
+import{c as n,o as r,a as e,F as p,i as u,n as o,h as y,b as i,l as _,q as v,t as a,u as m,w as c,d as l,_ as w}from"#entry";import{C as b}from"./DaSgy0Cl.js";import{S as k}from"./XZ6RV9KH.js";import{H as z}from"./CWEkTB1z.js";import{F as S}from"./BteKZQ9T.js";import{E as V}from"./Czdc6-TI.js";import{u as C}from"./BHFrGoXk.js";const J={id:"membership",class:"py-16 sm:py-20 bg-gradient-to-b from-gray-50 to-white"},F={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},T={class:"grid md:grid-cols-3 gap-8 max-w-6xl mx-auto"},H={key:0,class:"absolute top-0 right-0 bg-primary-600 text-white px-4 py-1 text-sm font-semibold rounded-bl-lg"},N={class:"p-8"},B={class:"text-2xl font-display font-bold text-gray-900 mb-2"},E={class:"text-gray-600 mb-6 min-h-[3rem]"},K={class:"mb-6"},M={class:"flex items-baseline"},L={class:"text-5xl font-bold text-gray-900"},j={class:"text-gray-600 ml-2"},D={class:"space-y-3 mb-8"},P={class:"text-gray-700"},U={class:"mt-16 bg-white rounded-2xl shadow-xl p-8 border border-gray-100"},G={class:"flex flex-col sm:flex-row gap-4 justify-center items-center"},W={href:"/documents/satzung.pdf",target:"_blank",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},$={class:"mt-16 bg-gradient-to-r from-primary-600 to-primary-700 rounded-2xl p-8 sm:p-12 text-center"},q={__name:"Membership",setup(h){const g=[{name:"Kinder/Jugend",price:"72",period:"Jahr",description:"Perfekt für junge Tischtennisspieler bis 18 Jahre",features:["Unbegrenzte Hallennutzung","Kostenfreies Jugendtraining","Teilnahme an Jugendturnieren","Clubveranstaltungen","Gäste mitbringen"],icon:k,gradient:"from-blue-500 to-cyan-500"},{name:"Erwachsene",price:"120",period:"Jahr",description:"Vollmitgliedschaft für Erwachsene",features:["Unbegrenzte Hallennutzung","Freies Spielen nach Verfügbarkeit","Clubveranstaltungen","Gäste mitbringen","Zugang Trainingsbereich"],icon:b,gradient:"from-primary-500 to-green-600",popular:!0},{name:"Passiv",price:"30",period:"Jahr",description:"Unterstützen Sie Ihren Lieblingsverein",features:["Vereinsunterstützung","Vereinsinformationen","Keine Spielberechtigung"],icon:z,gradient:"from-orange-500 to-red-500"}];return(f,t)=>{const d=w;return r(),n("section",J,[e("div",F,[t[8]||(t[8]=e("div",{class:"text-center mb-16"},[e("h2",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"}," Mitgliedschaft "),e("div",{class:"w-24 h-1 bg-primary-600 mx-auto mb-6"}),e("p",{class:"text-xl text-gray-600 max-w-3xl mx-auto"}," Werden Sie Teil unserer Tischtennis-Familie - Wählen Sie die passende Mitgliedschaft für sich ")],-1)),e("div",T,[(r(),n(p,null,u(g,s=>e("div",{key:s.name,class:o(["relative bg-white rounded-2xl shadow-xl overflow-hidden",s.popular?"ring-4 ring-primary-500 scale-105":""])},[s.popular?(r(),n("div",H," Beliebt ")):y("",!0),e("div",{class:o(["h-2 bg-gradient-to-r",s.gradient])},null,2),e("div",N,[e("div",{class:o(["w-12 h-12 bg-gradient-to-br rounded-xl flex items-center justify-center mb-4",s.gradient])},[(r(),_(v(s.icon),{size:24,class:"text-white"}))],2),e("h3",B,a(s.name),1),e("p",E,a(s.description),1),e("div",K,[e("div",M,[e("span",L,a(s.price)+"€",1),e("span",j,"/ "+a(s.period),1)])]),e("ul",D,[(r(!0),n(p,null,u(s.features,x=>(r(),n("li",{key:x,class:"flex items-start"},[i(m(b),{size:20,class:"text-primary-600 mr-3 flex-shrink-0 mt-0.5"}),e("span",P,a(x),1)]))),128))]),i(d,{to:"/kontakt",class:o(["block w-full text-center px-6 py-3 rounded-lg font-semibold transition-all duration-300",s.popular?"bg-primary-600 hover:bg-primary-700 text-white shadow-lg hover:shadow-xl":"bg-gray-100 hover:bg-gray-200 text-gray-900"])},{default:c(()=>[...t[0]||(t[0]=[l(" Jetzt beitreten ",-1)])]),_:1},8,["class"])])],2)),64))]),e("div",U,[t[4]||(t[4]=e("div",{class:"text-center mb-8"},[e("h3",{class:"text-3xl font-display font-bold text-gray-900 mb-4"}," Vereinsatzung "),e("p",{class:"text-xl text-gray-600"}," Laden Sie unsere aktuelle Vereinsatzung herunter ")],-1)),e("div",G,[e("a",W,[i(m(S),{size:20,class:"mr-2"}),t[1]||(t[1]=l(" Satzung herunterladen (PDF) ",-1))]),t[3]||(t[3]=e("span",{class:"text-sm text-gray-500"},"oder",-1)),i(d,{to:"/satzung",class:"inline-flex items-center px-6 py-3 bg-gray-100 hover:bg-gray-200 text-gray-900 font-semibold rounded-lg transition-colors"},{default:c(()=>[i(m(V),{size:20,class:"mr-2"}),t[2]||(t[2]=l(" Online ansehen ",-1))]),_:1})])]),e("div",$,[t[6]||(t[6]=e("h3",{class:"text-3xl font-display font-bold text-white mb-4"}," Noch Fragen zur Mitgliedschaft? ",-1)),t[7]||(t[7]=e("p",{class:"text-xl text-primary-100 mb-6"}," Kontaktieren Sie uns - wir beraten Sie gerne persönlich ",-1)),i(d,{to:"/kontakt",class:"inline-flex items-center px-8 py-4 bg-white text-primary-600 font-semibold rounded-lg hover:bg-gray-100 transition-colors"},{default:c(()=>[...t[5]||(t[5]=[l(" Jetzt Kontakt aufnehmen ",-1)])]),_:1})])])])}}},I={class:"min-h-screen"},ee={__name:"mitgliedschaft",setup(h){return C({title:"Mitgliedschaft - Harheimer TC"}),(g,f)=>(r(),n("div",I,[i(q)]))}};export{ee as default};
diff --git a/.output/public/_nuxt/DvQPLLks.js b/.output/public/_nuxt/DdaR8fUb.js
similarity index 98%
rename from .output/public/_nuxt/DvQPLLks.js
rename to .output/public/_nuxt/DdaR8fUb.js
index 45b36ec..43a2c24 100644
--- a/.output/public/_nuxt/DvQPLLks.js
+++ b/.output/public/_nuxt/DdaR8fUb.js
@@ -1 +1 @@
-import{_ as s}from"./DlAUqK2U.js";import{u as a}from"./Bhv0LDrk.js";import{c as i,o as u,a as e,t as o}from"#entry";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const r=t;return a({title:`${r.statusCode} - ${r.statusMessage} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,n)=>(u(),i("div",l,[n[0]||(n[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.statusCode)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},x=s(f,[["__scopeId","data-v-4b6f0a29"]]);export{x as default};
+import{_ as s}from"./DlAUqK2U.js";import{u as a}from"./BHFrGoXk.js";import{c as i,o as u,a as e,t as o}from"#entry";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const r=t;return a({title:`${r.statusCode} - ${r.statusMessage} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,n)=>(u(),i("div",l,[n[0]||(n[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.statusCode)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},x=s(f,[["__scopeId","data-v-4b6f0a29"]]);export{x as default};
diff --git a/.output/public/_nuxt/DJ7dbBSo.js b/.output/public/_nuxt/DjgE_sEr.js
similarity index 95%
rename from .output/public/_nuxt/DJ7dbBSo.js
rename to .output/public/_nuxt/DjgE_sEr.js
index c0cf626..b83cc66 100644
--- a/.output/public/_nuxt/DJ7dbBSo.js
+++ b/.output/public/_nuxt/DjgE_sEr.js
@@ -1,4 +1,4 @@
-import{e as s,c as i,o as a,a as e,j as p,F as h,i as m,n as r,k as u,l as g,t as l,b as f}from"#entry";import{u as v}from"./Bhv0LDrk.js";/**
+import{e as s,c as i,o as a,a as e,p,F as h,i as m,n as r,l as u,q as g,t as l,b as f}from"#entry";import{u as v}from"./BHFrGoXk.js";/**
* @license lucide-vue-next v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -28,4 +28,4 @@ import{e as s,c as i,o as a,a as e,j as p,F as h,i as m,n as r,k as u,l as g,t a
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
- */const w=s("WifiIcon",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]),M={id:"facilities",class:"py-16 sm:py-20 bg-white"},z={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},j={class:"grid sm:grid-cols-2 lg:grid-cols-3 gap-8 mb-16"},A={class:"p-8"},D={class:"text-2xl font-display font-bold text-gray-900 mb-3"},I={class:"text-gray-600 leading-relaxed"},S={__name:"Facilities",setup(c){const n=[{icon:k,title:"8 Tischtennisplatten",description:"Hochwertige Wettkampftische für optimales Spielvergnügen",color:"from-yellow-400 to-orange-500"},{icon:x,title:"Klimatisierte Halle",description:"Optimale Bedingungen bei jedem Wetter in unserer modernen Halle",color:"from-blue-400 to-blue-600"},{icon:y,title:"Trainingsbereich",description:"Ballmaschinen und Trainingsgeräte für gezieltes Training",color:"from-red-400 to-red-600"},{icon:_,title:"Clubhaus",description:"Gemütliches Clubhaus mit Aufenthaltsraum und Küche",color:"from-green-400 to-green-600"},{icon:w,title:"Kostenloses WLAN",description:"Schnelles Internet auf der gesamten Anlage",color:"from-purple-400 to-purple-600"},{icon:b,title:"Umkleiden & Duschen",description:"Moderne, saubere Umkleideräume mit Duschen",color:"from-cyan-400 to-cyan-600"}];return(d,o)=>(a(),i("section",M,[e("div",z,[o[0]||(o[0]=e("div",{class:"text-center mb-16"},[e("h2",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"}," Unsere Anlagen "),e("div",{class:"w-24 h-1 bg-primary-600 mx-auto mb-6"}),e("p",{class:"text-xl text-gray-600 max-w-3xl mx-auto"}," Moderne Ausstattung und erstklassige Einrichtungen für ein perfektes Tischtenniserlebnis ")],-1)),e("div",j,[(a(),i(h,null,m(n,t=>e("div",{key:t.title,class:"group relative bg-white rounded-2xl shadow-lg hover:shadow-2xl transition-all duration-300 overflow-hidden border border-gray-100"},[e("div",{class:r(["absolute top-0 left-0 right-0 h-1 bg-gradient-to-r opacity-0 group-hover:opacity-100 transition-opacity",t.color])},null,2),e("div",A,[e("div",{class:r(["w-16 h-16 bg-gradient-to-br rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 transition-transform",t.color])},[(a(),u(g(t.icon),{size:32,class:"text-white"}))],2),e("h3",D,l(t.title),1),e("p",I,l(t.description),1)])])),64))]),o[1]||(o[1]=p('
Hochwertige Wettkampftische
Moderne Tischtennishalle
',1))])]))}},C={class:"min-h-screen"},B={__name:"anlagen",setup(c){return v({title:"Anlagen - Harheimer TC"}),(n,d)=>(a(),i("div",C,[f(S)]))}};export{B as default};
+ */const w=s("WifiIcon",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]),M={id:"facilities",class:"py-16 sm:py-20 bg-white"},z={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},j={class:"grid sm:grid-cols-2 lg:grid-cols-3 gap-8 mb-16"},A={class:"p-8"},D={class:"text-2xl font-display font-bold text-gray-900 mb-3"},I={class:"text-gray-600 leading-relaxed"},S={__name:"Facilities",setup(c){const n=[{icon:k,title:"8 Tischtennisplatten",description:"Hochwertige Wettkampftische für optimales Spielvergnügen",color:"from-yellow-400 to-orange-500"},{icon:x,title:"Klimatisierte Halle",description:"Optimale Bedingungen bei jedem Wetter in unserer modernen Halle",color:"from-blue-400 to-blue-600"},{icon:y,title:"Trainingsbereich",description:"Ballmaschinen und Trainingsgeräte für gezieltes Training",color:"from-red-400 to-red-600"},{icon:_,title:"Clubhaus",description:"Gemütliches Clubhaus mit Aufenthaltsraum und Küche",color:"from-green-400 to-green-600"},{icon:w,title:"Kostenloses WLAN",description:"Schnelles Internet auf der gesamten Anlage",color:"from-purple-400 to-purple-600"},{icon:b,title:"Umkleiden & Duschen",description:"Moderne, saubere Umkleideräume mit Duschen",color:"from-cyan-400 to-cyan-600"}];return(d,o)=>(a(),i("section",M,[e("div",z,[o[0]||(o[0]=e("div",{class:"text-center mb-16"},[e("h2",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"}," Unsere Anlagen "),e("div",{class:"w-24 h-1 bg-primary-600 mx-auto mb-6"}),e("p",{class:"text-xl text-gray-600 max-w-3xl mx-auto"}," Moderne Ausstattung und erstklassige Einrichtungen für ein perfektes Tischtenniserlebnis ")],-1)),e("div",j,[(a(),i(h,null,m(n,t=>e("div",{key:t.title,class:"group relative bg-white rounded-2xl shadow-lg hover:shadow-2xl transition-all duration-300 overflow-hidden border border-gray-100"},[e("div",{class:r(["absolute top-0 left-0 right-0 h-1 bg-gradient-to-r opacity-0 group-hover:opacity-100 transition-opacity",t.color])},null,2),e("div",A,[e("div",{class:r(["w-16 h-16 bg-gradient-to-br rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 transition-transform",t.color])},[(a(),u(g(t.icon),{size:32,class:"text-white"}))],2),e("h3",D,l(t.title),1),e("p",I,l(t.description),1)])])),64))]),o[1]||(o[1]=p('
Hochwertige Wettkampftische
Moderne Tischtennishalle
',1))])]))}},q={class:"min-h-screen"},B={__name:"anlagen",setup(c){return v({title:"Anlagen - Harheimer TC"}),(n,d)=>(a(),i("div",q,[f(S)]))}};export{B as default};
diff --git a/.output/public/_nuxt/CnKUmKR9.js b/.output/public/_nuxt/DosETvDb.js
similarity index 96%
rename from .output/public/_nuxt/CnKUmKR9.js
rename to .output/public/_nuxt/DosETvDb.js
index f2f95c0..839d955 100644
--- a/.output/public/_nuxt/CnKUmKR9.js
+++ b/.output/public/_nuxt/DosETvDb.js
@@ -1 +1 @@
-import{u as e}from"./Bhv0LDrk.js";import{c as r,j as s,o as a}from"#entry";const d={class:"min-h-full py-16 bg-gray-50"},n={__name:"vorstand",setup(l){return e({title:"Vorstand - Harheimer TC"}),(o,t)=>(a(),r("div",d,[...t[0]||(t[0]=[s('
Vorstand
Unser engagiertes Vorstandsteam leitet den Harheimer TC mit Herz und Sachverstand.
Vorsitzender
Roger Dichmann
Reginastr. 46
60437 Frankfurt
Tel. 06101-9953015
Stellvertreter des Vorsitzenden
Jürgen Kratz
Bürgerstr. 68
60437 Frankfurt
Tel. 06101-43221
Kassenwart
Olaf Nüßlein
Am Eschbachtal 52
60437 Frankfurt
Tel. 06101-47469
Schriftführer
Jürgen Dichmann
In der Fuchskaut 4
60437 Frankfurt
Tel. 06101-4992227
',1)])]))}};export{n as default};
+import{u as e}from"./BHFrGoXk.js";import{c as r,p as s,o as a}from"#entry";const d={class:"min-h-full py-16 bg-gray-50"},n={__name:"vorstand",setup(l){return e({title:"Vorstand - Harheimer TC"}),(o,t)=>(a(),r("div",d,[...t[0]||(t[0]=[s('
Vorstand
Unser engagiertes Vorstandsteam leitet den Harheimer TC mit Herz und Sachverstand.
(1) Der Verein führt den Namen "Harheimer Tischtennis-Club 1954 e.V." (HTC).
(2) Der Verein hat seinen Sitz in Frankfurt am Main.
(3) Das Geschäftsjahr ist das Kalenderjahr.
§ 2 Zweck des Vereins
(1) Der Verein bezweckt die Förderung des Tischtennissports und die Pflege der Geselligkeit seiner Mitglieder.
(2) Der Verein ist selbstlos tätig; er verfolgt nicht in erster Linie eigenwirtschaftliche Zwecke.
§ 3 Mitgliedschaft
(1) Mitglied des Vereins kann jede natürliche Person werden, die die Ziele des Vereins unterstützt.
(2) Der Antrag auf Mitgliedschaft ist schriftlich an den Vorstand zu richten.
(3) Über die Aufnahme entscheidet der Vorstand.
§ 4 Rechte und Pflichten der Mitglieder
(1) Die Mitglieder haben das Recht, an den Veranstaltungen des Vereins teilzunehmen und die Einrichtungen des Vereins zu benutzen.
(2) Die Mitglieder sind verpflichtet, die Satzung und die Beschlüsse der Vereinsorgane zu beachten und den Mitgliedsbeitrag zu entrichten.
§ 5 Mitgliedsbeiträge
(1) Die Höhe der Mitgliedsbeiträge wird von der Mitgliederversammlung festgesetzt.
(2) Die Mitgliedsbeiträge sind im Voraus zu entrichten.
§ 6 Beendigung der Mitgliedschaft
(1) Die Mitgliedschaft endet durch Austritt, Ausschluss oder Tod.
(2) Der Austritt erfolgt durch schriftliche Erklärung gegenüber dem Vorstand.
(3) Ein Mitglied kann aus wichtigem Grund ausgeschlossen werden.
§ 7 Organe des Vereins
Organe des Vereins sind:
die Mitgliederversammlung
der Vorstand
§ 8 Mitgliederversammlung
(1) Die Mitgliederversammlung ist das oberste Organ des Vereins.
(2) Sie wird vom Vorsitzenden mindestens einmal im Jahr einberufen.
(3) Die Mitgliederversammlung beschließt über alle wichtigen Angelegenheiten des Vereins.
§ 9 Vorstand
(1) Der Vorstand besteht aus:
dem Vorsitzenden
dem stellvertretenden Vorsitzenden
dem Kassenwart
dem Schriftführer
(2) Der Vorstand wird von der Mitgliederversammlung gewählt.
(3) Der Vorstand führt die Geschäfte des Vereins.
§ 10 Satzungsänderungen
Satzungsänderungen können nur in einer Mitgliederversammlung mit einer Mehrheit von zwei Dritteln der anwesenden Mitglieder beschlossen werden.
§ 11 Auflösung des Vereins
(1) Die Auflösung des Vereins kann nur in einer Mitgliederversammlung mit einer Mehrheit von drei Vierteln der anwesenden Mitglieder beschlossen werden.
(2) Bei Auflösung des Vereins fällt das Vereinsvermögen an eine gemeinnützige Organisation.
',1)),t("div",h,[t("div",m,[e[1]||(e[1]=t("div",null,[t("h4",{class:"text-lg font-semibold text-primary-800 mb-2"},"Satzung als PDF herunterladen"),t("p",{class:"text-primary-700 text-sm"}," Laden Sie die vollständige Satzung als PDF-Dokument herunter. ")],-1)),t("a",v,[d(a(i),{size:20,class:"mr-2"}),e[0]||(e[0]=l(" PDF herunterladen ",-1))])])])])])])]))}};export{z as default};
+import{u as s}from"./BHFrGoXk.js";import{F as i}from"./BteKZQ9T.js";import{c as n,a as t,p as r,b as d,d as l,u as a,o as g}from"#entry";const o={class:"min-h-full py-16 bg-gray-50"},p={class:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8"},c={class:"bg-white p-8 rounded-xl shadow-lg"},u={class:"prose prose-lg max-w-none"},h={class:"mt-12 p-6 bg-primary-50 rounded-lg border border-primary-200"},m={class:"flex flex-col sm:flex-row gap-4 items-center justify-between"},v={href:"/documents/satzung.pdf",target:"_blank",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},z={__name:"satzung",setup(x){return s({title:"Satzung - Harheimer TC"}),(f,e)=>(g(),n("div",o,[t("div",p,[e[4]||(e[4]=t("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Vereinssatzung ",-1)),e[5]||(e[5]=t("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),t("div",c,[e[3]||(e[3]=t("p",{class:"text-lg text-gray-600 mb-8"}," Die Satzung des Harheimer Tischtennis Clubs regelt die Grundlagen unseres Vereins. ",-1)),t("div",u,[e[2]||(e[2]=r('
§ 1 Name, Sitz und Geschäftsjahr
(1) Der Verein führt den Namen "Harheimer Tischtennis-Club 1954 e.V." (HTC).
(2) Der Verein hat seinen Sitz in Frankfurt am Main.
(3) Das Geschäftsjahr ist das Kalenderjahr.
§ 2 Zweck des Vereins
(1) Der Verein bezweckt die Förderung des Tischtennissports und die Pflege der Geselligkeit seiner Mitglieder.
(2) Der Verein ist selbstlos tätig; er verfolgt nicht in erster Linie eigenwirtschaftliche Zwecke.
§ 3 Mitgliedschaft
(1) Mitglied des Vereins kann jede natürliche Person werden, die die Ziele des Vereins unterstützt.
(2) Der Antrag auf Mitgliedschaft ist schriftlich an den Vorstand zu richten.
(3) Über die Aufnahme entscheidet der Vorstand.
§ 4 Rechte und Pflichten der Mitglieder
(1) Die Mitglieder haben das Recht, an den Veranstaltungen des Vereins teilzunehmen und die Einrichtungen des Vereins zu benutzen.
(2) Die Mitglieder sind verpflichtet, die Satzung und die Beschlüsse der Vereinsorgane zu beachten und den Mitgliedsbeitrag zu entrichten.
§ 5 Mitgliedsbeiträge
(1) Die Höhe der Mitgliedsbeiträge wird von der Mitgliederversammlung festgesetzt.
(2) Die Mitgliedsbeiträge sind im Voraus zu entrichten.
§ 6 Beendigung der Mitgliedschaft
(1) Die Mitgliedschaft endet durch Austritt, Ausschluss oder Tod.
(2) Der Austritt erfolgt durch schriftliche Erklärung gegenüber dem Vorstand.
(3) Ein Mitglied kann aus wichtigem Grund ausgeschlossen werden.
§ 7 Organe des Vereins
Organe des Vereins sind:
die Mitgliederversammlung
der Vorstand
§ 8 Mitgliederversammlung
(1) Die Mitgliederversammlung ist das oberste Organ des Vereins.
(2) Sie wird vom Vorsitzenden mindestens einmal im Jahr einberufen.
(3) Die Mitgliederversammlung beschließt über alle wichtigen Angelegenheiten des Vereins.
§ 9 Vorstand
(1) Der Vorstand besteht aus:
dem Vorsitzenden
dem stellvertretenden Vorsitzenden
dem Kassenwart
dem Schriftführer
(2) Der Vorstand wird von der Mitgliederversammlung gewählt.
(3) Der Vorstand führt die Geschäfte des Vereins.
§ 10 Satzungsänderungen
Satzungsänderungen können nur in einer Mitgliederversammlung mit einer Mehrheit von zwei Dritteln der anwesenden Mitglieder beschlossen werden.
§ 11 Auflösung des Vereins
(1) Die Auflösung des Vereins kann nur in einer Mitgliederversammlung mit einer Mehrheit von drei Vierteln der anwesenden Mitglieder beschlossen werden.
(2) Bei Auflösung des Vereins fällt das Vereinsvermögen an eine gemeinnützige Organisation.
',1)),t("div",h,[t("div",m,[e[1]||(e[1]=t("div",null,[t("h4",{class:"text-lg font-semibold text-primary-800 mb-2"},"Satzung als PDF herunterladen"),t("p",{class:"text-primary-700 text-sm"}," Laden Sie die vollständige Satzung als PDF-Dokument herunter. ")],-1)),t("a",v,[d(a(i),{size:20,class:"mr-2"}),e[0]||(e[0]=l(" PDF herunterladen ",-1))])])])])])])]))}};export{z as default};
diff --git a/.output/public/_nuxt/CXsdaXH6.js b/.output/public/_nuxt/WIFjVsoU.js
similarity index 76%
rename from .output/public/_nuxt/CXsdaXH6.js
rename to .output/public/_nuxt/WIFjVsoU.js
index fc906f7..6e21fbd 100644
--- a/.output/public/_nuxt/CXsdaXH6.js
+++ b/.output/public/_nuxt/WIFjVsoU.js
@@ -1,26 +1,21 @@
-import{e as u,r as p,c as n,o as a,a as e,F as x,i as h,n as b,k as g,l as I,t as f,p as C,h as q,q as i,v as d,u as y,d as z,b as N}from"#entry";import{M as j,C as V}from"./C5SyyWEb.js";import{u as T}from"./Bhv0LDrk.js";/**
+import{e as f,r as c,c as n,o as a,a as e,F as x,i as y,n as b,l as p,q as I,t as g,j as C,h as j,k as i,v as d,u as h,d as z,b as N}from"#entry";import{M as q,C as V}from"./C5SyyWEb.js";import{A as T}from"./C8kQt0fa.js";import{u as E}from"./BHFrGoXk.js";/**
* @license lucide-vue-next v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
- */const E=u("AlertCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);/**
+ */const F=f("CheckCircleIcon",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/**
* @license lucide-vue-next v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
- */const F=u("CheckCircleIcon",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/**
+ */const U=f("MailIcon",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/**
* @license lucide-vue-next v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
- */const U=u("MailIcon",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/**
+ */const _=f("PhoneIcon",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/**
* @license lucide-vue-next v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
- */const _=u("PhoneIcon",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/**
- * @license lucide-vue-next v0.344.0 - ISC
- *
- * This source code is licensed under the ISC license.
- * See the LICENSE file in the root directory of this source tree.
- */const A=u("SendIcon",[["path",{d:"m22 2-7 20-4-9-9-4Z",key:"1q3vgg"}],["path",{d:"M22 2 11 13",key:"nzbqef"}]]),B={id:"contact",class:"py-16 sm:py-20 bg-white"},D={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},L={class:"grid lg:grid-cols-2 gap-12 items-start"},P={class:"space-y-6"},H={class:"font-display font-bold text-gray-900 mb-2"},W={class:"bg-gradient-to-br from-primary-50 to-primary-100/50 rounded-2xl p-8 shadow-xl"},G={class:"flex items-center"},K=["disabled"],$={key:1,class:"animate-spin rounded-full h-5 w-5 border-b-2 border-white mr-2"},O={__name:"Contact",setup(v){const s=p({name:"",email:"",phone:"",subject:"",message:""}),o=p(!1),l=p(null),c=p(""),k=async()=>{o.value=!0,l.value=null,c.value="";try{(await $fetch("/api/contact",{method:"POST",body:s.value})).success&&(l.value="success",c.value="E-Mail wurde erfolgreich gesendet! Wir melden uns bald bei Ihnen.",s.value={name:"",email:"",phone:"",subject:"",message:""})}catch(m){console.error("Fehler beim Senden:",m),l.value="error",c.value=m.data?.message||"Fehler beim Senden der E-Mail. Bitte versuchen Sie es später erneut."}finally{o.value=!1}},w=[{icon:j,title:"Trainingsort",content:["Sporthalle der Grundschule Harheim","In den Schafgärten 25","60437 Frankfurt/Main"],color:"from-red-500 to-pink-500"},{icon:_,title:"Telefon",content:["06101-4992227"],color:"from-green-500 to-emerald-500"},{icon:U,title:"E-Mail",content:["j.dichmann@gmx.de"],color:"from-blue-500 to-cyan-500"},{icon:V,title:"Trainingszeiten",content:["Dienstag: 19:30 - 22:30 Uhr","Donnerstag: 19:30 - 22:30 Uhr"],color:"from-purple-500 to-indigo-500"}];return(m,t)=>(a(),n("section",B,[e("div",D,[t[14]||(t[14]=e("div",{class:"text-center mb-16"},[e("h2",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"}," Kontakt "),e("div",{class:"w-24 h-1 bg-primary-600 mx-auto mb-6"}),e("p",{class:"text-xl text-gray-600 max-w-3xl mx-auto"}," Wir freuen uns auf Ihre Nachricht - Kontaktieren Sie uns! ")],-1)),e("div",L,[e("div",P,[(a(),n(x,null,h(w,r=>e("div",{key:r.title,class:"flex items-start space-x-4 bg-gray-50 p-6 rounded-xl hover:shadow-lg transition-shadow"},[e("div",{class:b(["flex-shrink-0 w-12 h-12 bg-gradient-to-br rounded-lg flex items-center justify-center",r.color])},[(a(),g(I(r.icon),{size:24,class:"text-white"}))],2),e("div",null,[e("h3",H,f(r.title),1),(a(!0),n(x,null,h(r.content,(M,S)=>(a(),n("p",{key:S,class:"text-gray-600"},f(M),1))),128))])])),64)),t[5]||(t[5]=e("div",{class:"space-y-4"},[e("div",{class:"rounded-2xl overflow-hidden shadow-xl h-64"},[e("iframe",{src:"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2554.5!2d8.660947!3d50.187044!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47bd0e5e5e5e5e5e%3A0x5e5e5e5e5e5e5e5e!2sIn%20den%20Schafg%C3%A4rten%2025%2C%2060437%20Frankfurt%20am%20Main!5e0!3m2!1sde!2sde!4v1234567890",width:"100%",height:"100%",style:{border:"0"},loading:"lazy",allowfullscreen:"",referrerpolicy:"no-referrer-when-downgrade",title:"Sporthalle der Grundschule Harheim"})]),e("a",{href:"https://www.google.com/maps/search/?api=1&query=In+den+Schafgärten+25+60437+Frankfurt",target:"_blank",class:"block text-center px-4 py-3 bg-primary-600 hover:bg-primary-700 text-white font-medium rounded-lg transition-colors"}," In Google Maps öffnen ")],-1))]),e("div",W,[t[12]||(t[12]=e("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-6"}," Senden Sie uns eine Nachricht ",-1)),e("form",{class:"space-y-4",onSubmit:C(k,["prevent"])},[e("div",null,[t[6]||(t[6]=e("label",{for:"name",class:"block text-sm font-medium text-gray-700 mb-1"}," Name * ",-1)),i(e("input",{type:"text",id:"name","onUpdate:modelValue":t[0]||(t[0]=r=>s.value.name=r),required:"",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all",placeholder:"Ihr Name"},null,512),[[d,s.value.name]])]),e("div",null,[t[7]||(t[7]=e("label",{for:"email",class:"block text-sm font-medium text-gray-700 mb-1"}," E-Mail * ",-1)),i(e("input",{type:"email",id:"email","onUpdate:modelValue":t[1]||(t[1]=r=>s.value.email=r),required:"",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all",placeholder:"ihre@email.de"},null,512),[[d,s.value.email]])]),e("div",null,[t[8]||(t[8]=e("label",{for:"phone",class:"block text-sm font-medium text-gray-700 mb-1"}," Telefon ",-1)),i(e("input",{type:"tel",id:"phone","onUpdate:modelValue":t[2]||(t[2]=r=>s.value.phone=r),class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all",placeholder:"+49 123 456789"},null,512),[[d,s.value.phone]])]),e("div",null,[t[9]||(t[9]=e("label",{for:"subject",class:"block text-sm font-medium text-gray-700 mb-1"}," Betreff * ",-1)),i(e("input",{type:"text",id:"subject","onUpdate:modelValue":t[3]||(t[3]=r=>s.value.subject=r),required:"",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all",placeholder:"Worum geht es?"},null,512),[[d,s.value.subject]])]),e("div",null,[t[10]||(t[10]=e("label",{for:"message",class:"block text-sm font-medium text-gray-700 mb-1"}," Nachricht * ",-1)),i(e("textarea",{id:"message","onUpdate:modelValue":t[4]||(t[4]=r=>s.value.message=r),required:"",rows:"5",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all resize-none",placeholder:"Ihre Nachricht..."},null,512),[[d,s.value.message]])]),l.value?(a(),n("div",{key:0,class:b(["p-4 rounded-lg",l.value==="success"?"bg-green-50 border border-green-200":"bg-red-50 border border-red-200"])},[e("div",G,[l.value==="success"?(a(),g(y(F),{key:0,size:20,class:"text-green-600 mr-2"})):(a(),g(y(E),{key:1,size:20,class:"text-red-600 mr-2"})),e("p",{class:b([l.value==="success"?"text-green-800":"text-red-800","text-sm font-medium"])},f(c.value),3)])],2)):q("",!0),e("button",{type:"submit",disabled:o.value,class:"w-full px-6 py-4 bg-primary-600 hover:bg-primary-700 disabled:bg-gray-400 disabled:cursor-not-allowed text-white font-semibold rounded-lg shadow-lg hover:shadow-xl transition-all duration-300 flex items-center justify-center"},[o.value?(a(),n("div",$)):(a(),g(y(A),{key:0,size:20,class:"mr-2"})),z(" "+f(o.value?"Wird gesendet...":"E-Mail senden"),1)],8,K),t[11]||(t[11]=e("p",{class:"text-sm text-gray-600 text-center"}," * Pflichtfelder ",-1))],32),t[13]||(t[13]=e("p",{class:"mt-4 text-sm text-gray-600 text-center"}," Ihre Nachricht wird direkt an j.dichmann@gmx.de gesendet ",-1))])])])]))}},Z={class:"min-h-screen"},X={__name:"kontakt",setup(v){return T({title:"Kontakt - Harheimer TC"}),(s,o)=>(a(),n("div",Z,[N(O)]))}};export{X as default};
+ */const A=f("SendIcon",[["path",{d:"m22 2-7 20-4-9-9-4Z",key:"1q3vgg"}],["path",{d:"M22 2 11 13",key:"nzbqef"}]]),B={id:"contact",class:"py-16 sm:py-20 bg-white"},D={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},L={class:"grid lg:grid-cols-2 gap-12 items-start"},P={class:"space-y-6"},H={class:"font-display font-bold text-gray-900 mb-2"},W={class:"bg-gradient-to-br from-primary-50 to-primary-100/50 rounded-2xl p-8 shadow-xl"},G={class:"flex items-center"},K=["disabled"],$={key:1,class:"animate-spin rounded-full h-5 w-5 border-b-2 border-white mr-2"},O={__name:"Contact",setup(v){const s=c({name:"",email:"",phone:"",subject:"",message:""}),o=c(!1),l=c(null),u=c(""),w=async()=>{o.value=!0,l.value=null,u.value="";try{(await $fetch("/api/contact",{method:"POST",body:s.value})).success&&(l.value="success",u.value="E-Mail wurde erfolgreich gesendet! Wir melden uns bald bei Ihnen.",s.value={name:"",email:"",phone:"",subject:"",message:""})}catch(m){console.error("Fehler beim Senden:",m),l.value="error",u.value=m.data?.message||"Fehler beim Senden der E-Mail. Bitte versuchen Sie es später erneut."}finally{o.value=!1}},k=[{icon:q,title:"Trainingsort",content:["Sporthalle der Grundschule Harheim","In den Schafgärten 25","60437 Frankfurt/Main"],color:"from-red-500 to-pink-500"},{icon:_,title:"Telefon",content:["06101-4992227"],color:"from-green-500 to-emerald-500"},{icon:U,title:"E-Mail",content:["j.dichmann@gmx.de"],color:"from-blue-500 to-cyan-500"},{icon:V,title:"Trainingszeiten",content:["Dienstag: 19:30 - 22:30 Uhr","Donnerstag: 19:30 - 22:30 Uhr"],color:"from-purple-500 to-indigo-500"}];return(m,t)=>(a(),n("section",B,[e("div",D,[t[14]||(t[14]=e("div",{class:"text-center mb-16"},[e("h2",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"}," Kontakt "),e("div",{class:"w-24 h-1 bg-primary-600 mx-auto mb-6"}),e("p",{class:"text-xl text-gray-600 max-w-3xl mx-auto"}," Wir freuen uns auf Ihre Nachricht - Kontaktieren Sie uns! ")],-1)),e("div",L,[e("div",P,[(a(),n(x,null,y(k,r=>e("div",{key:r.title,class:"flex items-start space-x-4 bg-gray-50 p-6 rounded-xl hover:shadow-lg transition-shadow"},[e("div",{class:b(["flex-shrink-0 w-12 h-12 bg-gradient-to-br rounded-lg flex items-center justify-center",r.color])},[(a(),p(I(r.icon),{size:24,class:"text-white"}))],2),e("div",null,[e("h3",H,g(r.title),1),(a(!0),n(x,null,y(r.content,(M,S)=>(a(),n("p",{key:S,class:"text-gray-600"},g(M),1))),128))])])),64)),t[5]||(t[5]=e("div",{class:"space-y-4"},[e("div",{class:"rounded-2xl overflow-hidden shadow-xl h-64"},[e("iframe",{src:"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2554.5!2d8.660947!3d50.187044!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47bd0e5e5e5e5e5e%3A0x5e5e5e5e5e5e5e5e!2sIn%20den%20Schafg%C3%A4rten%2025%2C%2060437%20Frankfurt%20am%20Main!5e0!3m2!1sde!2sde!4v1234567890",width:"100%",height:"100%",style:{border:"0"},loading:"lazy",allowfullscreen:"",referrerpolicy:"no-referrer-when-downgrade",title:"Sporthalle der Grundschule Harheim"})]),e("a",{href:"https://www.google.com/maps/search/?api=1&query=In+den+Schafgärten+25+60437+Frankfurt",target:"_blank",class:"block text-center px-4 py-3 bg-primary-600 hover:bg-primary-700 text-white font-medium rounded-lg transition-colors"}," In Google Maps öffnen ")],-1))]),e("div",W,[t[12]||(t[12]=e("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-6"}," Senden Sie uns eine Nachricht ",-1)),e("form",{class:"space-y-4",onSubmit:C(w,["prevent"])},[e("div",null,[t[6]||(t[6]=e("label",{for:"name",class:"block text-sm font-medium text-gray-700 mb-1"}," Name * ",-1)),i(e("input",{type:"text",id:"name","onUpdate:modelValue":t[0]||(t[0]=r=>s.value.name=r),required:"",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all",placeholder:"Ihr Name"},null,512),[[d,s.value.name]])]),e("div",null,[t[7]||(t[7]=e("label",{for:"email",class:"block text-sm font-medium text-gray-700 mb-1"}," E-Mail * ",-1)),i(e("input",{type:"email",id:"email","onUpdate:modelValue":t[1]||(t[1]=r=>s.value.email=r),required:"",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all",placeholder:"ihre@email.de"},null,512),[[d,s.value.email]])]),e("div",null,[t[8]||(t[8]=e("label",{for:"phone",class:"block text-sm font-medium text-gray-700 mb-1"}," Telefon ",-1)),i(e("input",{type:"tel",id:"phone","onUpdate:modelValue":t[2]||(t[2]=r=>s.value.phone=r),class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all",placeholder:"+49 123 456789"},null,512),[[d,s.value.phone]])]),e("div",null,[t[9]||(t[9]=e("label",{for:"subject",class:"block text-sm font-medium text-gray-700 mb-1"}," Betreff * ",-1)),i(e("input",{type:"text",id:"subject","onUpdate:modelValue":t[3]||(t[3]=r=>s.value.subject=r),required:"",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all",placeholder:"Worum geht es?"},null,512),[[d,s.value.subject]])]),e("div",null,[t[10]||(t[10]=e("label",{for:"message",class:"block text-sm font-medium text-gray-700 mb-1"}," Nachricht * ",-1)),i(e("textarea",{id:"message","onUpdate:modelValue":t[4]||(t[4]=r=>s.value.message=r),required:"",rows:"5",class:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all resize-none",placeholder:"Ihre Nachricht..."},null,512),[[d,s.value.message]])]),l.value?(a(),n("div",{key:0,class:b(["p-4 rounded-lg",l.value==="success"?"bg-green-50 border border-green-200":"bg-red-50 border border-red-200"])},[e("div",G,[l.value==="success"?(a(),p(h(F),{key:0,size:20,class:"text-green-600 mr-2"})):(a(),p(h(T),{key:1,size:20,class:"text-red-600 mr-2"})),e("p",{class:b([l.value==="success"?"text-green-800":"text-red-800","text-sm font-medium"])},g(u.value),3)])],2)):j("",!0),e("button",{type:"submit",disabled:o.value,class:"w-full px-6 py-4 bg-primary-600 hover:bg-primary-700 disabled:bg-gray-400 disabled:cursor-not-allowed text-white font-semibold rounded-lg shadow-lg hover:shadow-xl transition-all duration-300 flex items-center justify-center"},[o.value?(a(),n("div",$)):(a(),p(h(A),{key:0,size:20,class:"mr-2"})),z(" "+g(o.value?"Wird gesendet...":"E-Mail senden"),1)],8,K),t[11]||(t[11]=e("p",{class:"text-sm text-gray-600 text-center"}," * Pflichtfelder ",-1))],32),t[13]||(t[13]=e("p",{class:"mt-4 text-sm text-gray-600 text-center"}," Ihre Nachricht wird direkt an j.dichmann@gmx.de gesendet ",-1))])])])]))}},Z={class:"min-h-screen"},Y={__name:"kontakt",setup(v){return E({title:"Kontakt - Harheimer TC"}),(s,o)=>(a(),n("div",Z,[N(O)]))}};export{Y as default};
diff --git a/.output/public/_nuxt/builds/latest.json b/.output/public/_nuxt/builds/latest.json
index 6980d71..bc7b46d 100644
--- a/.output/public/_nuxt/builds/latest.json
+++ b/.output/public/_nuxt/builds/latest.json
@@ -1 +1 @@
-{"id":"3f41ef7c-4e7d-47ac-be92-3158208aa3f3","timestamp":1761033899613}
\ No newline at end of file
+{"id":"c7d727aa-6261-4dc2-a9f3-dbb4e2f26b06","timestamp":1761039042710}
\ No newline at end of file
diff --git a/.output/public/_nuxt/builds/meta/3f41ef7c-4e7d-47ac-be92-3158208aa3f3.json b/.output/public/_nuxt/builds/meta/3f41ef7c-4e7d-47ac-be92-3158208aa3f3.json
deleted file mode 100644
index e4b8d61..0000000
--- a/.output/public/_nuxt/builds/meta/3f41ef7c-4e7d-47ac-be92-3158208aa3f3.json
+++ /dev/null
@@ -1 +0,0 @@
-{"id":"3f41ef7c-4e7d-47ac-be92-3158208aa3f3","timestamp":1761033899613,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
\ No newline at end of file
diff --git a/.output/public/_nuxt/builds/meta/c7d727aa-6261-4dc2-a9f3-dbb4e2f26b06.json b/.output/public/_nuxt/builds/meta/c7d727aa-6261-4dc2-a9f3-dbb4e2f26b06.json
new file mode 100644
index 0000000..f560043
--- /dev/null
+++ b/.output/public/_nuxt/builds/meta/c7d727aa-6261-4dc2-a9f3-dbb4e2f26b06.json
@@ -0,0 +1 @@
+{"id":"c7d727aa-6261-4dc2-a9f3-dbb4e2f26b06","timestamp":1761039042710,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
\ No newline at end of file
diff --git a/.output/public/_nuxt/gLPgOmla.js b/.output/public/_nuxt/gLPgOmla.js
new file mode 100644
index 0000000..13eb61c
--- /dev/null
+++ b/.output/public/_nuxt/gLPgOmla.js
@@ -0,0 +1 @@
+import{f as S,D as w,E as q,G as $,H as A,I as L,s as H,B as W,J as R,K as G,L as J,r as Q,M as U,N as Z,O as X,P as Y,u as x,Q as K,R as I,S as k,T as ee,U as te,V as ae,m as M}from"#entry";function se(s){return typeof s=="string"?`'${s}'`:new re().serialize(s)}const re=(function(){class s{#e=new Map;compare(e,t){const r=typeof e,o=typeof t;return r==="string"&&o==="string"?e.localeCompare(t):r==="number"&&o==="number"?e-t:String.prototype.localeCompare.call(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return"null";switch(typeof e){case"string":return t?e:`'${e}'`;case"bigint":return`${e}n`;case"object":return this.$object(e);case"function":return this.$function(e)}return String(e)}serializeObject(e){const t=Object.prototype.toString.call(e);if(t!=="[object Object]")return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);const r=e.constructor,o=r===Object||r===void 0?"":r.name;if(o!==""&&globalThis[o]===r)return this.serializeBuiltInType(o,e);if(typeof e.toJSON=="function"){const n=e.toJSON();return o+(n!==null&&typeof n=="object"?this.$object(n):`(${this.serialize(n)})`)}return this.serializeObjectEntries(o,Object.entries(e))}serializeBuiltInType(e,t){const r=this["$"+e];if(r)return r.call(this,t);if(typeof t?.entries=="function")return this.serializeObjectEntries(e,t.entries());throw new Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){const r=Array.from(t).sort((n,i)=>this.compare(n[0],i[0]));let o=`${e}{`;for(let n=0;nthis.compare(t,r)))}`}$Map(e){return this.serializeObjectEntries("Map",e.entries())}}for(const a of["Error","RegExp","URL"])s.prototype["$"+a]=function(e){return`${a}(${e})`};for(const a of["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array"])s.prototype["$"+a]=function(e){return`${a}[${e.join(",")}]`};for(const a of["BigInt64Array","BigUint64Array"])s.prototype["$"+a]=function(e){return`${a}[${e.join("n,")}${e.length>0?"n":""}]`};return s})(),ne=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],ie=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],oe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",O=[];class ce{_data=new C;_hash=new C([...ne]);_nDataBytes=0;_minBufferSize=0;finalize(a){a&&this._append(a);const e=this._nDataBytes*8,t=this._data.sigBytes*8;return this._data.words[t>>>5]|=128<<24-t%32,this._data.words[(t+64>>>9<<4)+14]=Math.floor(e/4294967296),this._data.words[(t+64>>>9<<4)+15]=e,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(a,e){const t=this._hash.words;let r=t[0],o=t[1],n=t[2],i=t[3],f=t[4],_=t[5],c=t[6],u=t[7];for(let l=0;l<64;l++){if(l<16)O[l]=a[e+l]|0;else{const p=O[l-15],h=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,m=O[l-2],b=(m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10;O[l]=h+O[l-7]+b+O[l-16]}const D=f&_^~f&c,y=r&o^r&n^o&n,d=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),g=(f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25),v=u+g+D+ie[l]+O[l],B=d+y;u=c,c=_,_=f,f=i+v|0,i=n,n=o,o=r,r=v+B|0}t[0]=t[0]+r|0,t[1]=t[1]+o|0,t[2]=t[2]+n|0,t[3]=t[3]+i|0,t[4]=t[4]+f|0,t[5]=t[5]+_|0,t[6]=t[6]+c|0,t[7]=t[7]+u|0}_append(a){typeof a=="string"&&(a=C.fromUtf8(a)),this._data.concat(a),this._nDataBytes+=a.sigBytes}_process(a){let e,t=this._data.sigBytes/64;a?t=Math.ceil(t):t=Math.max((t|0)-this._minBufferSize,0);const r=t*16,o=Math.min(r*4,this._data.sigBytes);if(r){for(let n=0;n>>2]|=(e.charCodeAt(o)&255)<<24-o%4*8;return new C(r,t)}toBase64(){const a=[];for(let e=0;e>>2]>>>24-e%4*8&255,r=this.words[e+1>>>2]>>>24-(e+1)%4*8&255,o=this.words[e+2>>>2]>>>24-(e+2)%4*8&255,n=t<<16|r<<8|o;for(let i=0;i<4&&e*8+i*6>>6*(3-i)&63))}return a.join("")}concat(a){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let e=0;e>>2]>>>24-e%4*8&255;this.words[this.sigBytes+e>>>2]|=t<<24-(this.sigBytes+e)%4*8}else for(let e=0;e>>2]=a.words[e>>>2];this.sigBytes+=a.sigBytes}}function le(s){return new ce().finalize(s).toBase64()}function j(s){return le(se(s))}const ue={trailing:!0};function fe(s,a=25,e={}){if(e={...ue,...e},!Number.isFinite(a))throw new TypeError("Expected `wait` to be a finite number");let t,r,o=[],n,i;const f=(u,l)=>(n=he(s,u,l),n.finally(()=>{if(n=null,e.trailing&&i&&!r){const D=f(u,i);return i=null,D}}),n),_=function(...u){return e.trailing&&(i=u),n||new Promise(l=>{const D=!r&&e.leading;clearTimeout(r),r=setTimeout(()=>{r=null;const y=e.leading?t:f(this,u);i=null;for(const d of o)d(y);o=[]},a),D?(t=f(this,u),l(t)):o.push(l)})},c=u=>{u&&(clearTimeout(u),r=null)};return _.isPending=()=>!!r,_.cancel=()=>{c(r),o=[],i=null},_.flush=()=>{if(c(r),!i||n)return;const u=i;return i=null,f(this,u)},_}async function he(s,a,e){return await s.apply(a,e)}const de=Symbol.for("nuxt:client-only"),ye=s=>s==="defer"||s===!1;function me(...s){const a=typeof s[s.length-1]=="string"?s.pop():void 0;_e(s[0],s[1])&&s.unshift(a);let[e,t,r={}]=s,o=!1;const n=S(()=>w(e));if(typeof n.value!="string")throw new TypeError("[nuxt] [useAsyncData] key must be a string.");if(typeof t!="function")throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");const i=q();r.server??=!0,r.default??=ve,r.getCachedData??=V,r.lazy??=!1,r.immediate??=!0,r.deep??=$.deep,r.dedupe??="cancel",r._functionName,i._asyncData[n.value];function f(){const y={cause:"initial",dedupe:r.dedupe};return i._asyncData[n.value]?._init||(y.cachedData=r.getCachedData(n.value,i,{cause:"initial"}),i._asyncData[n.value]=F(i,n.value,t,r,y.cachedData)),()=>i._asyncData[n.value].execute(y)}const _=f(),c=i._asyncData[n.value];c._deps++;const u=r.server!==!1&&i.payload.serverRendered;{let y=function(h){const m=i._asyncData[h];m?._deps&&(m._deps--,m._deps===0&&m?._off())};const d=A();if(d&&u&&r.immediate&&!d.sp&&(d.sp=[]),d&&!d._nuxtOnBeforeMountCbs){d._nuxtOnBeforeMountCbs=[];const h=d._nuxtOnBeforeMountCbs;L(()=>{h.forEach(m=>{m()}),h.splice(0,h.length)}),H(()=>h.splice(0,h.length))}const g=d&&(d._nuxtClientOnly||W(de,!1));u&&i.isHydrating&&(c.error.value||c.data.value!=null)?(c.pending.value=!1,c.status.value=c.error.value?"error":"success"):d&&(!g&&i.payload.serverRendered&&i.isHydrating||r.lazy)&&r.immediate?d._nuxtOnBeforeMountCbs.push(_):r.immediate&&_();const v=J(),B=R(n,(h,m)=>{if((h||m)&&h!==m){o=!0;const b=i._asyncData[m]?.data.value!==$.value,P=i._asyncDataPromises[m]!==void 0,T={cause:"initial",dedupe:r.dedupe};if(!i._asyncData[h]?._init){let z;m&&b?z=i._asyncData[m].data.value:(z=r.getCachedData(h,i,{cause:"initial"}),T.cachedData=z),i._asyncData[h]=F(i,h,t,r,z)}i._asyncData[h]._deps++,m&&y(m),(r.immediate||b||P)&&i._asyncData[h].execute(T),K(()=>{o=!1})}},{flush:"sync"}),p=r.watch?R(r.watch,()=>{o||c._execute({cause:"watch",dedupe:r.dedupe})}):()=>{};v&&G(()=>{B(),p(),y(n.value)})}const l={data:E(()=>i._asyncData[n.value]?.data),pending:E(()=>i._asyncData[n.value]?.pending),status:E(()=>i._asyncData[n.value]?.status),error:E(()=>i._asyncData[n.value]?.error),refresh:(...y)=>i._asyncData[n.value]?._init?i._asyncData[n.value].execute(...y):f()(),execute:(...y)=>l.refresh(...y),clear:()=>N(i,n.value)},D=Promise.resolve(i._asyncDataPromises[n.value]).then(()=>l);return Object.assign(D,l),D}function E(s){return S({get(){return s()?.value},set(a){const e=s();e&&(e.value=a)}})}function _e(s,a){return!(typeof s=="string"||typeof s=="object"&&s!==null||typeof s=="function"&&typeof a=="function")}function N(s,a){a in s.payload.data&&(s.payload.data[a]=void 0),a in s.payload._errors&&(s.payload._errors[a]=$.errorValue),s._asyncData[a]&&(s._asyncData[a].data.value=void 0,s._asyncData[a].error.value=$.errorValue,s._asyncData[a].pending.value=!1,s._asyncData[a].status.value="idle"),a in s._asyncDataPromises&&(s._asyncDataPromises[a]&&(s._asyncDataPromises[a].cancelled=!0),s._asyncDataPromises[a]=void 0)}function ge(s,a){const e={};for(const t of a)e[t]=s[t];return e}function F(s,a,e,t,r){s.payload._errors[a]??=$.errorValue;const o=t.getCachedData!==V,n=e,i=t.deep?Q:U,f=r!=null,_=s.hook("app:data:refresh",async u=>{(!u||u.includes(a))&&await c.execute({cause:"refresh:hook"})}),c={data:i(f?r:t.default()),pending:U(!f),error:Z(s.payload._errors,a),status:U("idle"),execute:(...u)=>{const[l,D=void 0]=u,y=l&&D===void 0&&typeof l=="object"?l:{};if(s._asyncDataPromises[a]){if(ye(y.dedupe??t.dedupe))return s._asyncDataPromises[a];s._asyncDataPromises[a].cancelled=!0}if(y.cause==="initial"||s.isHydrating){const g="cachedData"in y?y.cachedData:t.getCachedData(a,s,{cause:y.cause??"refresh:manual"});if(g!=null)return s.payload.data[a]=c.data.value=g,c.error.value=$.errorValue,c.status.value="success",Promise.resolve(g)}c.pending.value=!0,c.status.value="pending";const d=new Promise((g,v)=>{try{g(n(s))}catch(B){v(B)}}).then(async g=>{if(d.cancelled)return s._asyncDataPromises[a];let v=g;t.transform&&(v=await t.transform(g)),t.pick&&(v=ge(v,t.pick)),s.payload.data[a]=v,c.data.value=v,c.error.value=$.errorValue,c.status.value="success"}).catch(g=>{if(d.cancelled)return s._asyncDataPromises[a];c.error.value=Y(g),c.data.value=x(t.default()),c.status.value="error"}).finally(()=>{d.cancelled||(c.pending.value=!1,delete s._asyncDataPromises[a])});return s._asyncDataPromises[a]=d,s._asyncDataPromises[a]},_execute:fe((...u)=>c.execute(...u),0,{leading:!0}),_default:t.default,_deps:0,_init:!0,_hash:void 0,_off:()=>{_(),s._asyncData[a]?._init&&(s._asyncData[a]._init=!1),o||X(()=>{s._asyncData[a]?._init||(N(s,a),c.execute=()=>Promise.resolve(),c.data.value=$.value)})}};return c}const ve=()=>$.value,V=(s,a,e)=>{if(a.isHydrating)return a.payload.data[s];if(e.cause!=="refresh:manual"&&e.cause!=="refresh:hook")return a.static.data[s]};function De(s,a,e){const[t={},r]=[{},a],o=S(()=>w(s)),n=S(()=>w(t.key)||"$f"+j([r,typeof o.value=="string"?o.value:"",...pe(t)]));if(!t.baseURL&&typeof o.value=="string"&&o.value[0]==="/"&&o.value[1]==="/")throw new Error('[nuxt] [useFetch] the request URL must not start with "//".');const{server:i,lazy:f,default:_,transform:c,pick:u,watch:l,immediate:D,getCachedData:y,deep:d,dedupe:g,...v}=t,B=I({...k,...v,cache:typeof t.cache=="boolean"?void 0:t.cache}),p={server:i,lazy:f,default:_,transform:c,pick:u,immediate:D,getCachedData:y,deep:d,dedupe:g,watch:l===!1?[]:[...l||[],B]};if(!D){let b=function(){p.immediate=!0};R(n,b,{flush:"sync",once:!0}),R([...l||[],B],b,{flush:"sync",once:!0})}let h;return me(l===!1?n.value:n,()=>{h?.abort?.(new DOMException("Request aborted as another request to the same endpoint was initiated.","AbortError")),h=typeof AbortController<"u"?new AbortController:{};const b=w(t.timeout);let P;return b&&(P=setTimeout(()=>h.abort(new DOMException("Request aborted due to timeout.","AbortError")),b),h.signal.onabort=()=>clearTimeout(P)),(t.$fetch||globalThis.$fetch)(o.value,{signal:h.signal,...B}).finally(()=>{clearTimeout(P)})},p)}function pe(s){const a=[w(s.method)?.toUpperCase()||"GET",w(s.baseURL)];for(const e of[s.params||s.query]){const t=w(e);if(!t)continue;const r={};for(const[o,n]of Object.entries(t))r[w(o)]=w(n);a.push(r)}if(s.body){const e=w(s.body);if(!e)a.push(j(e));else if(e instanceof ArrayBuffer)a.push(j(Object.fromEntries([...new Uint8Array(e).entries()].map(([t,r])=>[t,r.toString()]))));else if(e instanceof FormData){const t={};for(const r of e.entries()){const[o,n]=r;t[o]=n instanceof File?n.name:n}a.push(j(t))}else if(ee(e))a.push(j(I(e)));else try{a.push(j(e))}catch{console.warn("[useFetch] Failed to hash body",e)}}return a}const we=te(async(s,a)=>{let e,t;if(["/mitgliederbereich","/cms"].some(n=>s.path.startsWith(n)))try{const{data:n}=([e,t]=ae(()=>De("/api/auth/status","$iafshigZRx")),e=await e,t(),e);if(!n.value||!n.value.isLoggedIn)return M("/login?redirect="+s.path);if(s.path.startsWith("/cms")&&!(n.value.role==="admin"||n.value.role==="vorstand"))return M("/mitgliederbereich")}catch{return M("/login?redirect="+s.path)}});export{we as default};
diff --git a/.output/public/_nuxt/BGqINamU.js b/.output/public/_nuxt/p9tSJNbO.js
similarity index 95%
rename from .output/public/_nuxt/BGqINamU.js
rename to .output/public/_nuxt/p9tSJNbO.js
index 2c3ef7c..7412637 100644
--- a/.output/public/_nuxt/BGqINamU.js
+++ b/.output/public/_nuxt/p9tSJNbO.js
@@ -1 +1 @@
-import{c as a,a as t,b as e,u as r,j as l,w as o,_ as m,o as d,d as x}from"#entry";import{u as p}from"./Bhv0LDrk.js";import{C as n}from"./DaSgy0Cl.js";const g={class:"min-h-full py-16 bg-gray-50"},f={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},y={class:"prose prose-lg max-w-none"},u={class:"bg-white p-8 rounded-xl shadow-lg not-prose mb-8"},b={class:"space-y-3"},c={class:"flex items-start"},h={class:"flex items-start"},_={class:"flex items-start"},k={class:"flex items-start"},v={class:"flex items-start"},w={class:"bg-primary-50 p-8 rounded-xl border border-primary-100 not-prose"},C={__name:"anfaenger",setup(z){return p({title:"Für Anfänger - Harheimer TC"}),(D,s)=>{const i=m;return d(),a("div",g,[t("div",f,[s[9]||(s[9]=t("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Tischtennis für Anfänger ",-1)),s[10]||(s[10]=t("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),t("div",y,[s[8]||(s[8]=t("p",{class:"text-xl text-gray-600 mb-8"}," Du möchtest mit Tischtennis anfangen? Perfekt! Bei uns bist du richtig. ",-1)),t("div",u,[s[5]||(s[5]=t("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-4"}," Was du wissen solltest ",-1)),t("ul",b,[t("li",c,[e(r(n),{size:24,class:"text-primary-600 mr-3 flex-shrink-0 mt-0.5"}),s[0]||(s[0]=t("span",{class:"text-gray-700"},"Keine Vorkenntnisse nötig",-1))]),t("li",h,[e(r(n),{size:24,class:"text-primary-600 mr-3 flex-shrink-0 mt-0.5"}),s[1]||(s[1]=t("span",{class:"text-gray-700"},"Schläger und Material werden gestellt",-1))]),t("li",_,[e(r(n),{size:24,class:"text-primary-600 mr-3 flex-shrink-0 mt-0.5"}),s[2]||(s[2]=t("span",{class:"text-gray-700"},"Sportkleidung und Hallenschuhe mitbringen",-1))]),t("li",k,[e(r(n),{size:24,class:"text-primary-600 mr-3 flex-shrink-0 mt-0.5"}),s[3]||(s[3]=t("span",{class:"text-gray-700"},"3x kostenlos Probetraining",-1))]),t("li",v,[e(r(n),{size:24,class:"text-primary-600 mr-3 flex-shrink-0 mt-0.5"}),s[4]||(s[4]=t("span",{class:"text-gray-700"},"Einstieg jederzeit möglich",-1))])])]),t("div",w,[s[7]||(s[7]=l('
Anfängergruppen
Schüler/Jugend (ab 6 Jahre)
Dienstag, 17:30 - 19:30 Uhr
Damen und Herren
Dienstag & Donnerstag, 19:30 - 22:30 Uhr
',2)),e(i,{to:"/kontakt",class:"inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},{default:o(()=>[...s[6]||(s[6]=[x(" Zum Probetraining anmelden ",-1)])]),_:1})])])])])}}};export{C as default};
+import{c as a,a as t,b as e,u as r,p as l,w as o,_ as m,o as d,d as x}from"#entry";import{u as p}from"./BHFrGoXk.js";import{C as n}from"./DaSgy0Cl.js";const g={class:"min-h-full py-16 bg-gray-50"},f={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},y={class:"prose prose-lg max-w-none"},u={class:"bg-white p-8 rounded-xl shadow-lg not-prose mb-8"},b={class:"space-y-3"},c={class:"flex items-start"},h={class:"flex items-start"},_={class:"flex items-start"},k={class:"flex items-start"},v={class:"flex items-start"},w={class:"bg-primary-50 p-8 rounded-xl border border-primary-100 not-prose"},C={__name:"anfaenger",setup(z){return p({title:"Für Anfänger - Harheimer TC"}),(D,s)=>{const i=m;return d(),a("div",g,[t("div",f,[s[9]||(s[9]=t("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Tischtennis für Anfänger ",-1)),s[10]||(s[10]=t("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),t("div",y,[s[8]||(s[8]=t("p",{class:"text-xl text-gray-600 mb-8"}," Du möchtest mit Tischtennis anfangen? Perfekt! Bei uns bist du richtig. ",-1)),t("div",u,[s[5]||(s[5]=t("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-4"}," Was du wissen solltest ",-1)),t("ul",b,[t("li",c,[e(r(n),{size:24,class:"text-primary-600 mr-3 flex-shrink-0 mt-0.5"}),s[0]||(s[0]=t("span",{class:"text-gray-700"},"Keine Vorkenntnisse nötig",-1))]),t("li",h,[e(r(n),{size:24,class:"text-primary-600 mr-3 flex-shrink-0 mt-0.5"}),s[1]||(s[1]=t("span",{class:"text-gray-700"},"Schläger und Material werden gestellt",-1))]),t("li",_,[e(r(n),{size:24,class:"text-primary-600 mr-3 flex-shrink-0 mt-0.5"}),s[2]||(s[2]=t("span",{class:"text-gray-700"},"Sportkleidung und Hallenschuhe mitbringen",-1))]),t("li",k,[e(r(n),{size:24,class:"text-primary-600 mr-3 flex-shrink-0 mt-0.5"}),s[3]||(s[3]=t("span",{class:"text-gray-700"},"3x kostenlos Probetraining",-1))]),t("li",v,[e(r(n),{size:24,class:"text-primary-600 mr-3 flex-shrink-0 mt-0.5"}),s[4]||(s[4]=t("span",{class:"text-gray-700"},"Einstieg jederzeit möglich",-1))])])]),t("div",w,[s[7]||(s[7]=l('
`);
+ _push(ssrRenderComponent(unref(Info), {
+ size: 16,
+ class: "inline mr-1"
+ }, null, _parent));
+ _push(`Hinweis: Ihre Registrierung muss vom Vorstand freigegeben werden. Sie erhalten eine E-Mail, sobald Ihr Zugang aktiviert wurde.