Files
tsv08kulmbach-website/data/turnen.json

249 lines
16 KiB
JSON
Raw Normal View History

{
"overview": {
"hero": {
"align": "center",
"compact": true,
"title": "Turnen",
"text": "Entdecke Ansprechpartner und alle wichtigen Informationen rund ums Turnen beim TSV 08 Kulmbach.",
"image": {
"base": "img/pages/vereinsgelaende",
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"widths": [640, 1000, 1600],
"alt": "Luftaufnahme unserer Hans-Rausch-Sportanlage im Katzbachtal"
},
"ctas": []
},
Step Aerobic entfernt, Seite heißt jetzt Fitness & Pilates Rückmeldung der Turnabteilung: Step Aerobic findet nicht mehr statt. Wichtig war der Befund vor der Änderung: die Seite bündelt DREI Angebote — Pilates, Fitness & Stretching und Step-Aerobic. Ein pauschales "die Card raus" hätte Pilates und Fitness mitgenommen. Entfernt ist deshalb nur die eine Gruppe (Donnerstag 19:30, Heike Wahler); Pilates und Fitness & Stretching bei Karola Lorz laufen unverändert weiter. Heike Wahler stand nur in dieser Gruppe und erscheint damit nicht mehr auf der Website — das ist die einzige Nebenwirkung, die jemandem auffallen könnte. Umbenannt in "Fitness & Pilates" an allen zehn Fundstellen: navigation.json, turnen.json (Disziplin-Schlüssel, Hero-Titel, drei Übersichtstexte), ansprechpartner.json, news.json, turnen.php (Karte, Alt-Text, Meta) und die Seiten-Datei selbst. URL mitgezogen wie besprochen: turnen/step-aerobic-fitness-pilates → turnen/fitness-pilates, samt Seiten-Datei und den drei Bilddateien (git mv, Historie bleibt). Der alte Slug war in der Sitemap und ist indexiert, deshalb eine 301 in public/.htaccess — VOR dem Front Controller, sonst würde index.php den Pfad als unbekannten Slug abfangen und 404 rendern. Geprüft: /turnen/fitness-pilates liefert 200 mit nur noch zwei Gruppen, Sitemap führt ausschließlich den neuen Slug, Navigation, Übersichtskarte und der News-Artikel verweisen darauf, keine Referenz auf die alten Bildnamen mehr. Der alte Slug gibt lokal 404, weil php -S keine .htaccess liest; die 301 greift auf Apache. Nicht geändert: das Wort "Step-Aerobic" in der CLAUDE.md-Sprachregel. Dort ist es ein Beispiel für orthografisch nötige Bindestriche und bleibt als solches richtig, auch ohne den Kurs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:50:47 +02:00
"cards_intro": "Die Turnabteilung des TSV 08 Kulmbach bietet neben dem klassischen Gerätturnen sowohl Trampolinturnen als auch Fitness und Pilates an. Weitere Informationen zu den Gruppen findest du in den einzelnen Rubriken.",
"fees_title": "Mitgliedsbeiträge",
"fees_intro": "Der Beitrag der Turnabteilung kommt zum allgemeinen TSV-Mitgliedsbeitrag hinzu. Trainiert dein Kind besonders viel, greift zusätzlich eine Förderstufe.",
"fees": [
{
"title": "Zusatzbeitrag für bestehende TSV-Mitglieder",
"rows": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "label": "Einzelperson", "price": "24,00 € / Jahr" },
{ "label": "Familie", "price": "48,00 € / Jahr" }
],
"note": "Zusatzbeitrag zum bestehenden TSV-Mitgliedsbeitrag."
},
{
"title": "Gesamtbeitrag für Neumitglieder",
"rows": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "label": "Kinder und Jugendliche", "price": "84,00 € / Jahr" },
{ "label": "Erwachsene", "price": "94,00 € / Jahr" },
{ "label": "Familie (ab 3 Personen)", "price": "184,00 € / Jahr" }
],
"note": "Bei einer Neuanmeldung sind sowohl der Grundbeitrag als auch der Abteilungsbeitrag Turnen, Verbandsabgaben und Sportunfall-Versicherung bereits enthalten."
},
{
"title": "Förderstufen (zusätzlich, je Jahr)",
"rows": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "label": "Förderstufe 1 · 2 bis 4 Std. / Woche", "price": "120,00 € / Jahr" },
{ "label": "Förderstufe 2 · über 4 bis 8 Std. / Woche", "price": "180,00 € / Jahr" },
{ "label": "Förderstufe 3 · über 8 Std. / Woche", "price": "240,00 € / Jahr" }
],
"note": "Teilnehmer in Gruppen, die pro Woche zwei und mehr Stunden im „Mäximum Gym“ trainieren, fallen in eine Förderstufe. Die Förderstufenbeiträge fallen jährlich zusätzlich zum Mitgliedsbeitrag an."
}
],
"austritt": {
"title": "Austritt",
"text": "Der Austritt aus dem Verein ist nur zum Ende eines Kalenderjahres möglich und muss bis spätestens 30. September schriftlich erklärt werden. Die Kündigung kannst du formlos per E-Mail an {mail} schicken. Der Beitrag ist in jedem Fall bis zum Jahresende zu entrichten."
},
"faq": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "q": "Welche Turngruppen gibt es beim TSV 08 Kulmbach?", "a": "Eltern-Kind- und Kinderturnen, Erwachsenenturnen, Fitness und Pilates, Trampolinturnen sowie Wettkampfturnen, von den Jüngsten ab 2 Jahren bis zu Erwachsenen." },
{ "q": "Ab welchem Alter kann mein Kind mitturnen?", "a": "Beim Eltern-Kind-Turnen starten die Jüngsten bereits ab etwa 2 Jahren gemeinsam mit ihren Eltern. Für ältere Kinder gibt es nach Alter gestaffelte Breitensportgruppen." },
{ "q": "Wo finden die Turnstunden statt?", "a": "Die meisten Gruppen trainieren im Mäximum Gym (Thurnauer Str. 51, 95326 Kulmbach). Fitness und Pilates laufen in der Max-Hundt-Schule, das Trampolinturnen in der Dreifachturnhalle der Carl-von-Linde-Realschule." },
{ "q": "Was kostet die Turnabteilung?", "a": "Bestehende TSV-Mitglieder zahlen einen Zusatzbeitrag von 24,00 € (Einzelperson) bzw. 48,00 € pro Jahr (Familie). Neumitglieder zahlen 84,00 € (Kinder/Jugendliche), 94,00 € (Erwachsene) oder 184,00 € (Familie ab 3 Personen) im Jahr, inklusive Grundbeitrag, Verbandsabgaben und Sportunfall-Versicherung. Bei hohem Trainingsumfang kommt eine Förderstufe hinzu." },
Turn-Anmeldung als eigene FAQ-Frage, Knöpfe in FAQ-Antworten möglich Der Anmelde-Vorgang der Abteilung (erst Platz anfragen, dann Aufnahmeantrag) stand nirgends auf der Seite. Auf der alten Seite gab es dafür einen Block „ANMELDUNG" mit zwei Knöpfen. Erst als eigene Sektion unter den Beiträgen gebaut (cta-band), auf Wunsch von Felix wieder entfernt und stattdessen als eigene FAQ-Frage umgesetzt. Zwei Sektionen mit denselben Knöpfen auf einer Seite schwächen beide Stellen, und man weiß nicht mehr, welcher der richtige Weg ist. Deshalb ist auch overview.cta ganz aus data/turnen.json raus statt unbenutzt liegen zu bleiben — genau so ein toter Block hat heute schon einmal in die Irre geführt (die Notiz „NOCH unbenutzt" stand monatelang im Docblock von turnen.php). faq.php bekommt dafür ein optionales ctas-Feld pro Eintrag, gerendert über die bestehende cta-Komponente, also keine neue Knopf-Variante. .faq__actions bricht um, weil zwei Knöpfe auf einem schmalen Handy nicht nebeneinander passen. Die Antwort nennt beide Wege bewusst AUCH in Worten: faq_schema() liest nur q und a, Knöpfe landen nie im FAQPage-Schema. Stünde in der Antwort nur „so geht's" plus zwei Knöpfe, hätte Google eine Antwort ohne Ziel. Nachgeprüft: sechs Fragen im Schema, der neue Antworttext ist HTML- und Markup-frei. Gemessen bei 390px: kein Überlauf, Knöpfe 130x44 und 193x44 (Trefferfläche erfüllt). Die fünf Turn-Unterseiten hatten als einzige von 105 PHP-Dateien keinen Zeilenumbruch am Dateiende, das ist mitkorrigiert. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 22:31:57 +02:00
{ "q": "Kann ich vorher zum Probetraining kommen?", "a": "Ja. Schreib uns vorher über unser [Anfrageformular](turnen#kontakt), damit wir die aktuelle Platzverfügbarkeit prüfen können." },
{
"q": "Wie melde ich mich oder mein Kind an?",
"a": "In zwei Schritten. Bei Interesse an einer aktiven Teilnahme schreib uns bitte zunächst über unser Anfrageformular, so prüfen wir die aktuelle Platzverfügbarkeit. Ist ein Platz frei, läuft die Anmeldung über den Aufnahmeantrag als PDF: herunterladen, ausfüllen und beim Übungsleiter abgeben.",
"ctas": [
{ "label": "Platz anfragen", "slug": "turnen", "hash": "kontakt", "style": "outline" },
{ "label": "Anmeldung Turnabteilung", "slug": "mitglied-werden", "hash": "anmeldung-turnen", "style": "primary" }
]
}
],
"contact": {
"title": "Fragen zum Turnen?",
"text": "Schreib direkt der Turnabteilung. Sag uns, welche Gruppe dich interessiert, dann prüfen wir die Platzverfügbarkeit und melden uns bei dir."
}
},
Flamingos zum Wettkampfturnen, Inhalte gegen die alte Seite abgeglichen Die Flamingos sind organisatorisch vom Kinderturnen zum Wettkampfturnen gewechselt. Felix hat dazu die Fassung geschickt, die die Turnabteilung selbst auf der alten Seite gepflegt hatte — dabei kamen sieben Abweichungen heraus, alle korrigiert: - Die zweite Gruppe heißt "Leistungsturnen", nicht "Wettkampfturnen" (so hieß bei uns die Gruppe wie die Disziplin). - Reihenfolge: Flamingos zuerst, Leistungsturnen danach. - Den Flamingos fehlte eine Trainingszeit: Montag gibt es ZWEI Blöcke (18:00–19:00 und 19:00–20:00), wir hatten nur den ersten. - Ansprechpersonen sind pro Gruppe verschieden (Flamingos: Theresa Diener, Leistungsturnen: Franziska Trotzke). Dafür ist `contact` neu an einer Gruppe. Die Kontakt-Kachel oben kann nur EINE Person nennen und wäre für die andere Gruppe falsch — deshalb ist `lead` bei dieser Disziplin jetzt leer, die Kachel trägt nur noch die Abteilungs-Mail. So war es auf der alten Seite auch: dort gab es keine Ansprechperson für die Disziplin, nur je Gruppe. - Theresa Diener steht im Trainerteam vorn und ohne Stern (bei uns hinten). - Intro, Trainingsinhalte, Wettkämpfe und der Hinweis waren gekürzt; jetzt im Wortlaut der Abteilung. Den Gedankenstrich in "(Kür modifiziert – Leistungsklasse 3)" ersetzt ein Komma (Sprache & Ton). - Die Fußnote sagte "* So im Trainingsplan der Abteilung gekennzeichnet" — eine Verlegenheitsformulierung, weil wir die Bedeutung nicht kannten. Die alte Seite schreibt "* = ÜBUNGSLEITER", also jetzt "* Übungsleiterinnen und Übungsleiter" (Paarform, Haus-Stil). `level` bleibt "Turnen · fortgeschritten" ohne "Alter nach Absprache" — das hatte Felix am 31.07.2026 ausdrücklich aus dem Chip genommen. Zwei Folgen, die sonst still kaputtgegangen wären: die Seite hatte eine einzige Gruppe ohne Beschreibung und lief damit im Einzelgruppen-Layout. Mit zwei Gruppen, davon eine mit Beschreibung, rendert group-schedule eine Tab-Leiste — die braucht group-tabs.js, das die Seite nicht lud (tote Tab-Knöpfe). Und drei Flamingos-Trainerinnen tragen ein Sternchen, die erklärende Fußnote wurde auf dieser Seite nicht übergeben (drei unerklärte Sterne). Geprüft: Tabs "Flamingos" und "Leistungsturnen", Skript geladen, Fußnote da, Flamingos auf /turnen/eltern-kind-turnen nicht mehr erwähnt, kein Überlauf bei 390px, alle sechs Turn-Seiten 200. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 22:40:25 +02:00
"footnote": "* Übungsleiterinnen und Übungsleiter.",
"disciplines": {
"erwachsenenturnen": {
"hero": {
"align": "center",
"compact": true,
"title": "Erwachsenenturnen",
"text": "Beweglich bleiben, Kraft und Koordination trainieren: Turnen für Erwachsene im Mäximum Gym.",
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"image": { "base": "img/pages/vereinsgelaende", "widths": [640, 1000, 1600], "alt": "Luftaufnahme unserer Hans-Rausch-Sportanlage im Katzbachtal" },
"ctas": []
},
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"location": { "venue": "Mäximum Gym", "street": "Thurnauer Str. 51", "zip": "95326", "city": "Kulmbach" },
"lead": "Maxi Roßberg",
"groups": [
{
"name": "Erwachsenenturnen",
"sessions": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "day": "Montag", "time": "18:0020:00 Uhr" },
{ "day": "Mittwoch", "time": "18:0020:00 Uhr" },
{ "day": "Donnerstag", "time": "18:3020:00 Uhr" }
],
"trainers": []
}
]
},
"eltern-kind-turnen": {
"hero": {
"align": "center",
"compact": true,
"title": "Eltern-Kind- & Kinderturnen",
"text": "Bei uns starten die Jüngsten bereits ab 2 Jahren gemeinsam mit ihren Eltern und turnen sich über die Breitensportgruppen Schritt für Schritt nach oben.",
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"image": { "base": "img/pages/vereinsgelaende", "widths": [640, 1000, 1600], "alt": "Luftaufnahme unserer Hans-Rausch-Sportanlage im Katzbachtal" },
"ctas": []
},
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"location": { "venue": "Mäximum Gym", "street": "Thurnauer Str. 51", "zip": "95326", "city": "Kulmbach" },
"lead": "Annelie Frisque",
Trampolin: Schnupper-Einladung, Hinweise bekommen zwei Tonlagen Info von Eva aus der Trampolin-Gruppe: neue Kinder können ab September (Schulbeginn) gerne schnuppern kommen. Die Info stand nirgends. Rot wäre dafür falsch gewesen. Die Farbe bekommt deshalb eine Bedeutung: --stop (gefüllt rot) heißt „geht nicht", --info (Glas-Fläche, Rot nur im Icon) heißt „geht". Eine Einladung in Alarmrot liest sich wie eine Absage, und wenn alles rot ist, stumpft Rot ab und der echte Wartelisten-Stopp bei „Tiger" und „Hühner" verliert seine Wirkung. --info ist ab jetzt der Default. Damit steht der Hinweis an drei Stellen, also greift die Bedingung aus dem letzten Commit („kommt ein dritter Ort dazu, gehören die gemeinsamen Eigenschaften in eine geteilte Klasse"): neu app/components/notice.php als einzige Render-Stelle statt dreimal dasselbe Markup. Die beiden bestehenden Klassen schrumpfen auf das, was sie wirklich beitragen — .turnen-dash__notice nur noch grid-area, .contact__notice nur noch die Formularbreite. Die tote .turnen-dash__notice-icon-Regel ist raus, der CSS-Abschnitt neu sortiert (notice als eigener Block hinter turnen-dash statt mitten hinein). Text, Tonlage und Icon stehen wie gehabt in data/turnen.json bei der Disziplin, nicht im Template. Kinderturnen trägt jetzt explizit notice_tone: stop, Trampolin nichts und ist damit neutral. Das Grid-Template für --notice + --single gab es schon, an beiden Breakpoints — die Trampolin-Seite hat eine Gruppe und wäre sonst auseinandergefallen. Gemessen bei 390px: kein Überlauf auf allen drei Seiten, Trampolin-Fläche rgba(0,0,0,0.22) (Glas), die beiden anderen #e20612. Zwölf Seiten geprüft, alle 200. preflight ohne neue Meldungen. OFFEN, mit Eva oder Tina zu klären: der zweite Satz („Schreib uns davor einfach kurz eine Nachricht") ist von mir, Eva hat ihn nicht gesagt. Wenn die Kinder einfach zum Training kommen dürfen, gehört er weg. Und die Einladung steht bisher nur auf /turnen/trampolin, nicht auf der Übersicht /turnen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 22:04:41 +02:00
"notice_tone": "stop",
"notice_title": "Hinweis zur Warteliste",
Wartelisten-Hinweis für Tiger und Hühner, über dem Anfrageformular Die Turnabteilung (Maxi) beantwortet laufend Anfragen nach einem Wartelistenplatz für „Tiger" und „Hühner", den es nicht gibt. Auf der alten Seite stand der Hinweis direkt über dem Anfrageformular, hier fehlte er. Schlimmer: an der Stelle stand das GEGENTEIL. Der bisherige Hinweis lautete "Aktuell sind alle Kinderturngruppen belegt. Bei Interesse setzen wir sie gerne auf die Warteliste." — für alle Kindergruppen, also auch für die beiden, die keine Liste führen. Der Satz hat einen Teil der Anfragen vermutlich erst erzeugt. Er ist nicht gelöscht, sondern auf die übrigen Gruppen eingegrenzt und aufs Du umgestellt (Haus-Stil; vorher stand dort klein "sie"). Der Text steht genau EINMAL, in data/turnen.json unter disciplines.eltern-kind-turnen.notice + notice_title. Zwei Stellen lesen ihn: die rote Kachel auf /turnen/eltern-kind-turnen (gab es schon) und neu ein Block direkt über dem Formular auf /turnen. Ändert die Abteilung die Lage, ist das eine Zeile in einer Datei. Umsetzung: - notice_title ist neu, weil eine rote Fläche ohne Überschrift wie eine Fehlermeldung liest. Abel statt Coolvetica, der Schnitt ist bei ~19px in Versalien unleserlich (CLAUDE.md, Design). - Der Block steht AUSSERHALB des <form> und damit außerhalb der role="status"-Region: ein dauerhafter Hinweis, keine Rückmeldung zum Absenden. In der Live-Region läse ihn ein Screenreader bei jeder Formularmeldung erneut vor. Kein role="alert", er steht schon beim Laden da. - Überschrift als h3 unter der h2 des Intro-Blocks, damit die Folge nicht springt. - .contact__notice übernimmt bewusst die Optik von .turnen-dash__notice, damit beide Stellen als derselbe Hinweis erkennbar sind. Weiß auf --clr-accent erreicht 4,92:1 und trägt damit Fließtext (WCAG 1.4.3). Kommt ein dritter Ort dazu, gehören die gemeinsamen Eigenschaften in eine geteilte .notice-Klasse; für zwei wäre das verfrüht. Gemessen: Hinweisbreite gleich Formularbreite (720px bei 1280, 347px bei 390), kein Überlauf. preflight ohne neue Meldungen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 21:54:10 +02:00
"notice": "Für die Gruppen „Tiger“ und „Hühner“ (ab 8 Jahre) können wir derzeit leider keine neuen Mitglieder aufnehmen und führen deshalb aktuell keine Warteliste. Die übrigen Kinderturngruppen sind ebenfalls belegt, dort nehmen wir dein Kind aber gerne auf die Warteliste.",
"groups": [
{
"name": "Eltern-Kind-Turnen",
"level": "ab ca. 24 Jahren",
"intro": "Bei uns starten die Jüngsten bereits ab 2 Jahren gemeinsam mit ihren Eltern. In dieser Gruppe kombinieren wir das klassische Eltern-Kind-Turnen mit Elementen des Kleinkinderturnens.",
"details": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "heading": "Inhalt und Ziele", "text": "Wir fördern nicht nur eine sportartenübergreifende motorische Grundlagenausbildung, sondern vermitteln auch erste turnspezifische Grundlagen. Das oberste Ziel ist es, Spaß an der Bewegung zu wecken und persönliche Erfolgserlebnisse zu ermöglichen." },
{ "heading": "Ablauf und Struktur", "text": "Unser Konzept folgt festen Ritualen: Ein gemeinsames Aufwärmen und ein gemeinsamer Abschluss bilden den Rahmen. Den Hauptteil der Stunde bilden abwechslungsreiche Stationen oder Parcours, an denen sich die Kinder ausprobieren können. Für die Sicherheit vermitteln wir den Kindern frühzeitig Grundregeln (z. B. nur eine Person am Gerät)." },
{ "heading": "Motto", "text": "„Vieles kann, nichts muss“: Die Kinder entscheiden gemeinsam mit ihren Eltern, was und wie viel sie ausprobieren möchten." }
],
"recommendation": "Bei besonderem Potenzial für Wettkampf- oder Leistungsgruppen sprechen unsere Trainer eine Empfehlung aus.",
"sessions": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "label": "Kängurus", "day": "Dienstag", "time": "16:3017:15 Uhr", "trainers": ["Carina Schleicher*"] },
{ "label": "Grashüpfer", "day": "Donnerstag", "time": "15:3016:15 Uhr", "trainers": ["Annelie Frisque*", "Eva Wünsch"] }
]
},
{
"name": "Mäuse",
"level": "Breitensport · 57 Jahre",
"intro": "In unserer Gruppe für 5- bis 7-Jährige turnen die Kinder erstmals eigenständig und ohne elterliche Begleitung. Wir bieten einen idealen Einstieg in den Turnsport, egal ob das Kind bereits Vorerfahrungen aus dem Eltern-Kind-Turnen mitbringt oder ganz neu mit dem Turnen beginnt.",
"details": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "heading": "Ziele und Entwicklung", "text": "Wir fördern gezielt die Beweglichkeit, Kraft und Koordination der Kinder. Dabei bauen wir auf vorhandenen Grundlagen auf oder vermitteln diese spielerisch neu, um eine vielseitige sportliche Basis zu schaffen." },
{ "heading": "An den Geräten", "text": "Ein Schwerpunkt liegt auf dem Kennenlernen der klassischen Wettkampfgeräte. Hier erlernen die Kinder erste turnspezifische Elemente und entwickeln Sicherheit sowie eine bessere Körperbeherrschung." }
],
"recommendation": "Bei besonderem Potenzial für Wettkampf- oder Leistungsgruppen sprechen unsere Trainer eine Empfehlung aus.",
"sessions": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "label": "Mäuse I", "day": "Dienstag", "time": "17:3018:30 Uhr", "trainers": ["Maxi Roßberg*", "Katrin und Marcus Braese"] },
{ "label": "Mäuse II", "day": "Donnerstag", "time": "16:3017:30 Uhr", "trainers": ["Franziska Trotzke"] }
]
},
{
"name": "Tiger & Hühner",
"level": "Breitensport · ab 8 Jahre",
"intro": "In unseren Breitensportgruppen für Kinder und Jugendliche ab 8 Jahren steht die Begeisterung für Sport und Bewegung im Mittelpunkt. Wir bieten ein vielseitiges Training für alle, die Spaß am Turnen haben, unabhängig vom Leistungsstand.",
"details": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "heading": "Ziele und Training", "text": "Wir fördern die Fitness und Beweglichkeit durch ein breites Spektrum an Übungen. Dabei erlernen die Teilnehmer, je nach ihren individuellen Möglichkeiten und Voraussetzungen, verschiedene Basis-Turnelemente." },
{ "heading": "Der Fokus", "text": "Neben dem sportlichen Fortschritt legen wir großen Wert auf Teamgeist und den Spaß an der gemeinsamen Aktivität in der Halle." }
],
"recommendation": "Bei besonderem Potenzial für Wettkampf- oder Leistungsgruppen sprechen unsere Trainer eine Empfehlung aus.",
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"trainers": ["Maxi Roßberg*", "Franziska Schmitt"],
"sessions": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "label": "Tiger · 810 Jahre", "day": "Dienstag", "time": "18:3019:30 Uhr", "note": "in geraden Kalenderwochen" },
{ "label": "Hühner · ab 11 Jahre", "day": "Dienstag", "time": "19:3020:30 Uhr", "note": "in geraden Kalenderwochen" }
]
}
]
},
Step Aerobic entfernt, Seite heißt jetzt Fitness & Pilates Rückmeldung der Turnabteilung: Step Aerobic findet nicht mehr statt. Wichtig war der Befund vor der Änderung: die Seite bündelt DREI Angebote — Pilates, Fitness & Stretching und Step-Aerobic. Ein pauschales "die Card raus" hätte Pilates und Fitness mitgenommen. Entfernt ist deshalb nur die eine Gruppe (Donnerstag 19:30, Heike Wahler); Pilates und Fitness & Stretching bei Karola Lorz laufen unverändert weiter. Heike Wahler stand nur in dieser Gruppe und erscheint damit nicht mehr auf der Website — das ist die einzige Nebenwirkung, die jemandem auffallen könnte. Umbenannt in "Fitness & Pilates" an allen zehn Fundstellen: navigation.json, turnen.json (Disziplin-Schlüssel, Hero-Titel, drei Übersichtstexte), ansprechpartner.json, news.json, turnen.php (Karte, Alt-Text, Meta) und die Seiten-Datei selbst. URL mitgezogen wie besprochen: turnen/step-aerobic-fitness-pilates → turnen/fitness-pilates, samt Seiten-Datei und den drei Bilddateien (git mv, Historie bleibt). Der alte Slug war in der Sitemap und ist indexiert, deshalb eine 301 in public/.htaccess — VOR dem Front Controller, sonst würde index.php den Pfad als unbekannten Slug abfangen und 404 rendern. Geprüft: /turnen/fitness-pilates liefert 200 mit nur noch zwei Gruppen, Sitemap führt ausschließlich den neuen Slug, Navigation, Übersichtskarte und der News-Artikel verweisen darauf, keine Referenz auf die alten Bildnamen mehr. Der alte Slug gibt lokal 404, weil php -S keine .htaccess liest; die 301 greift auf Apache. Nicht geändert: das Wort "Step-Aerobic" in der CLAUDE.md-Sprachregel. Dort ist es ein Beispiel für orthografisch nötige Bindestriche und bleibt als solches richtig, auch ohne den Kurs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:50:47 +02:00
"fitness-pilates": {
"hero": {
"align": "center",
"compact": true,
Step Aerobic entfernt, Seite heißt jetzt Fitness & Pilates Rückmeldung der Turnabteilung: Step Aerobic findet nicht mehr statt. Wichtig war der Befund vor der Änderung: die Seite bündelt DREI Angebote — Pilates, Fitness & Stretching und Step-Aerobic. Ein pauschales "die Card raus" hätte Pilates und Fitness mitgenommen. Entfernt ist deshalb nur die eine Gruppe (Donnerstag 19:30, Heike Wahler); Pilates und Fitness & Stretching bei Karola Lorz laufen unverändert weiter. Heike Wahler stand nur in dieser Gruppe und erscheint damit nicht mehr auf der Website — das ist die einzige Nebenwirkung, die jemandem auffallen könnte. Umbenannt in "Fitness & Pilates" an allen zehn Fundstellen: navigation.json, turnen.json (Disziplin-Schlüssel, Hero-Titel, drei Übersichtstexte), ansprechpartner.json, news.json, turnen.php (Karte, Alt-Text, Meta) und die Seiten-Datei selbst. URL mitgezogen wie besprochen: turnen/step-aerobic-fitness-pilates → turnen/fitness-pilates, samt Seiten-Datei und den drei Bilddateien (git mv, Historie bleibt). Der alte Slug war in der Sitemap und ist indexiert, deshalb eine 301 in public/.htaccess — VOR dem Front Controller, sonst würde index.php den Pfad als unbekannten Slug abfangen und 404 rendern. Geprüft: /turnen/fitness-pilates liefert 200 mit nur noch zwei Gruppen, Sitemap führt ausschließlich den neuen Slug, Navigation, Übersichtskarte und der News-Artikel verweisen darauf, keine Referenz auf die alten Bildnamen mehr. Der alte Slug gibt lokal 404, weil php -S keine .htaccess liest; die 301 greift auf Apache. Nicht geändert: das Wort "Step-Aerobic" in der CLAUDE.md-Sprachregel. Dort ist es ein Beispiel für orthografisch nötige Bindestriche und bleibt als solches richtig, auch ohne den Kurs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:50:47 +02:00
"title": "Fitness & Pilates",
"text": "Ausdauer, Kräftigung und Beweglichkeit für Erwachsene, in der Max-Hundt-Schule.",
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"image": { "base": "img/pages/vereinsgelaende", "widths": [640, 1000, 1600], "alt": "Luftaufnahme unserer Hans-Rausch-Sportanlage im Katzbachtal" },
"ctas": []
},
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"location": { "venue": "Max-Hundt-Schule", "city": "Kulmbach" },
"lead": "Karola Lorz",
"groups": [
{
"name": "Pilates",
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"sessions": [ { "day": "Mittwoch", "time": "17:3018:30 Uhr" } ],
"trainers": ["Karola Lorz"]
},
{
"name": "Fitness & Stretching",
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"sessions": [ { "day": "Mittwoch", "time": "18:4519:45 Uhr" } ],
"trainers": ["Karola Lorz"]
}
]
},
"trampolin": {
"hero": {
"align": "center",
"compact": true,
"title": "Trampolinturnen",
"text": "Sprünge, Schrauben und Salti auf dem Großtrampolin, in der Dreifachturnhalle der Carl-von-Linde-Realschule.",
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"image": { "base": "img/pages/vereinsgelaende", "widths": [640, 1000, 1600], "alt": "Luftaufnahme unserer Hans-Rausch-Sportanlage im Katzbachtal" },
"ctas": []
},
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"location": { "venue": "Dreifachturnhalle der Carl-von-Linde-Realschule", "city": "Kulmbach" },
"lead": "Tina Kornatz",
Trampolin: Schnupper-Einladung, Hinweise bekommen zwei Tonlagen Info von Eva aus der Trampolin-Gruppe: neue Kinder können ab September (Schulbeginn) gerne schnuppern kommen. Die Info stand nirgends. Rot wäre dafür falsch gewesen. Die Farbe bekommt deshalb eine Bedeutung: --stop (gefüllt rot) heißt „geht nicht", --info (Glas-Fläche, Rot nur im Icon) heißt „geht". Eine Einladung in Alarmrot liest sich wie eine Absage, und wenn alles rot ist, stumpft Rot ab und der echte Wartelisten-Stopp bei „Tiger" und „Hühner" verliert seine Wirkung. --info ist ab jetzt der Default. Damit steht der Hinweis an drei Stellen, also greift die Bedingung aus dem letzten Commit („kommt ein dritter Ort dazu, gehören die gemeinsamen Eigenschaften in eine geteilte Klasse"): neu app/components/notice.php als einzige Render-Stelle statt dreimal dasselbe Markup. Die beiden bestehenden Klassen schrumpfen auf das, was sie wirklich beitragen — .turnen-dash__notice nur noch grid-area, .contact__notice nur noch die Formularbreite. Die tote .turnen-dash__notice-icon-Regel ist raus, der CSS-Abschnitt neu sortiert (notice als eigener Block hinter turnen-dash statt mitten hinein). Text, Tonlage und Icon stehen wie gehabt in data/turnen.json bei der Disziplin, nicht im Template. Kinderturnen trägt jetzt explizit notice_tone: stop, Trampolin nichts und ist damit neutral. Das Grid-Template für --notice + --single gab es schon, an beiden Breakpoints — die Trampolin-Seite hat eine Gruppe und wäre sonst auseinandergefallen. Gemessen bei 390px: kein Überlauf auf allen drei Seiten, Trampolin-Fläche rgba(0,0,0,0.22) (Glas), die beiden anderen #e20612. Zwölf Seiten geprüft, alle 200. preflight ohne neue Meldungen. OFFEN, mit Eva oder Tina zu klären: der zweite Satz („Schreib uns davor einfach kurz eine Nachricht") ist von mir, Eva hat ihn nicht gesagt. Wenn die Kinder einfach zum Training kommen dürfen, gehört er weg. Und die Einladung steht bisher nur auf /turnen/trampolin, nicht auf der Übersicht /turnen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 22:04:41 +02:00
"notice_icon": "calendar-event",
"notice_title": "Schnuppern ab September",
"notice": "Mit dem Schulbeginn im September können neue Kinder bei uns gerne zum Schnuppern vorbeikommen. Schreib uns davor einfach kurz eine Nachricht, dann sagen wir dir, wann es am besten passt.",
"groups": [
{
"name": "Trampolinturnen",
"sessions": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "day": "Montag", "time": "17:30 / 18:0020:30 Uhr" },
{ "day": "Donnerstag", "time": "17:30 / 18:0020:30 Uhr" }
],
"note": "Der Einstieg erfolgt gestaffelt um 17:30 bzw. 18:00 Uhr.",
"trainers": []
}
]
},
"wettkampfturnen": {
"hero": {
"align": "center",
"compact": true,
"title": "Wettkampfturnen",
"text": "Leistungsorientiertes Gerätturnen mit regelmäßigem Training und Wettkämpfen, im Mäximum Gym.",
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"image": { "base": "img/pages/vereinsgelaende", "widths": [640, 1000, 1600], "alt": "Luftaufnahme unserer Hans-Rausch-Sportanlage im Katzbachtal" },
"ctas": []
},
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
"location": { "venue": "Mäximum Gym", "street": "Thurnauer Str. 51", "zip": "95326", "city": "Kulmbach" },
"groups": [
{
Flamingos zum Wettkampfturnen, Inhalte gegen die alte Seite abgeglichen Die Flamingos sind organisatorisch vom Kinderturnen zum Wettkampfturnen gewechselt. Felix hat dazu die Fassung geschickt, die die Turnabteilung selbst auf der alten Seite gepflegt hatte — dabei kamen sieben Abweichungen heraus, alle korrigiert: - Die zweite Gruppe heißt "Leistungsturnen", nicht "Wettkampfturnen" (so hieß bei uns die Gruppe wie die Disziplin). - Reihenfolge: Flamingos zuerst, Leistungsturnen danach. - Den Flamingos fehlte eine Trainingszeit: Montag gibt es ZWEI Blöcke (18:00–19:00 und 19:00–20:00), wir hatten nur den ersten. - Ansprechpersonen sind pro Gruppe verschieden (Flamingos: Theresa Diener, Leistungsturnen: Franziska Trotzke). Dafür ist `contact` neu an einer Gruppe. Die Kontakt-Kachel oben kann nur EINE Person nennen und wäre für die andere Gruppe falsch — deshalb ist `lead` bei dieser Disziplin jetzt leer, die Kachel trägt nur noch die Abteilungs-Mail. So war es auf der alten Seite auch: dort gab es keine Ansprechperson für die Disziplin, nur je Gruppe. - Theresa Diener steht im Trainerteam vorn und ohne Stern (bei uns hinten). - Intro, Trainingsinhalte, Wettkämpfe und der Hinweis waren gekürzt; jetzt im Wortlaut der Abteilung. Den Gedankenstrich in "(Kür modifiziert – Leistungsklasse 3)" ersetzt ein Komma (Sprache & Ton). - Die Fußnote sagte "* So im Trainingsplan der Abteilung gekennzeichnet" — eine Verlegenheitsformulierung, weil wir die Bedeutung nicht kannten. Die alte Seite schreibt "* = ÜBUNGSLEITER", also jetzt "* Übungsleiterinnen und Übungsleiter" (Paarform, Haus-Stil). `level` bleibt "Turnen · fortgeschritten" ohne "Alter nach Absprache" — das hatte Felix am 31.07.2026 ausdrücklich aus dem Chip genommen. Zwei Folgen, die sonst still kaputtgegangen wären: die Seite hatte eine einzige Gruppe ohne Beschreibung und lief damit im Einzelgruppen-Layout. Mit zwei Gruppen, davon eine mit Beschreibung, rendert group-schedule eine Tab-Leiste — die braucht group-tabs.js, das die Seite nicht lud (tote Tab-Knöpfe). Und drei Flamingos-Trainerinnen tragen ein Sternchen, die erklärende Fußnote wurde auf dieser Seite nicht übergeben (drei unerklärte Sterne). Geprüft: Tabs "Flamingos" und "Leistungsturnen", Skript geladen, Fußnote da, Flamingos auf /turnen/eltern-kind-turnen nicht mehr erwähnt, kein Überlauf bei 390px, alle sechs Turn-Seiten 200. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 22:40:25 +02:00
"name": "Flamingos",
"level": "Turnen · fortgeschritten",
"contact": "Theresa Diener",
"intro": "In unserer Gruppe für fortgeschrittenes Turnen bauen wir auf bereits erlernten turnerischen Fähigkeiten auf und entwickeln diese gezielt weiter. Das Training orientiert sich an den Anforderungen der LK3 (Kür modifiziert, Leistungsklasse 3). Trotz des höheren Leistungsniveaus stehen der Spaß am Sport und persönliche Erfolgserlebnisse durch das Erlernen neuer Elemente stets im Vordergrund.",
"details": [
{ "heading": "Trainingsinhalte", "text": "Je nach individuellen Voraussetzungen erlernen und trainieren wir Elemente wie Radwende, Flick-Flack und Salto (Boden), Kippen und Felge vorlings (Barren), Überschläge (Sprung) sowie Räder, Bogengänge und verschiedene Sprünge am Balken." },
{ "heading": "Wettkämpfe & Teamgeist", "text": "Gelegentlich nehmen wir mit einem Teil unserer Turnerinnen an Wettkämpfen teil. Dabei bevorzugen wir Mannschaftswettkämpfe, um den Teamgeist zu stärken und die individuelle Leistung als Teil eines gemeinsamen Erfolgs zu erleben." }
],
"recommendation": "Eine Teilnahme erfolgt ausschließlich auf Empfehlung und Einladung durch unser Trainerteam. Um allen Turnerinnen ein passendes Trainingsumfeld zu bieten, gleichen wir das Leistungsniveau regelmäßig ab und sprechen bei Bedarf Empfehlungen für eine andere Trainingsgruppe aus.",
"trainers": ["Theresa Diener", "Maxi Roßberg*", "Christa Knarr*", "Annelie Frisque*", "Lea Schramm", "Charlyn Simon", "Lia Buchwald"],
"sessions": [
{ "day": "Montag", "time": "18:0019:00 Uhr" },
{ "day": "Montag", "time": "19:0020:00 Uhr" },
{ "day": "Mittwoch", "time": "18:0020:00 Uhr" }
]
},
{
"name": "Leistungsturnen",
"contact": "Franziska Trotzke",
"sessions": [
Beitragsblock: Sektions-Kopf nach Hausmuster, Preise größer Drei Dinge, zwei aus deinem Feedback und eines von mir. 1) Der Einleitungstext klebte ohne Abstand an der Überschrift und lief über die volle Breite, über 120 Zeichen je Zeile ("schaut weird aus"). Ursache: ich hatte <p class="lead"> geschrieben — eine Klasse, die es im Projekt gar nicht gibt, der Absatz war also völlig unformatiert. Jetzt das etablierte Muster (.membership-signup__head, instagram, partners): zentrierter Kopf, 60ch breit, Luft nach unten. Anmerkung im Code: dasselbe Kopf-Muster steht damit zum vierten Mal fast gleich in components.css — ein gemeinsames .section__head wäre die Aufräumung, aber ein eigener Umbau. 2) Preise von 28px auf 34px. Sie tragen die Hervorhebung allein, seit die Farbe weg ist, und sind die Information, auf die man in einer Beitragstabelle sieht. 3) Selbst aufgefallen: die Überschrift "Austritt" lag in .prose und rendert dort mit 21px Abel — exakt Fließtextgröße, also gar keine Auszeichnung. In Impressum und Artikeln ist das richtig, deshalb .prose nicht angetastet, sondern eigene Klassen für den Hinweis: 28px Coolvetica (die Untergrenze für Versalien) mit derselben dezenten Sperrung wie die Kartentitel. Außerdem: data/turnen.json ist wieder in seiner ursprünglichen Formatierung. Mein JSON-Schreiber hatte im vorigen Commit die kompakten Arrays aufgeklappt ("widths": [640, 1000, 1600] wurde vierzeilig) — inhaltlich identisch, aber 371 Diff-Zeilen für eine Umbenennung. Jetzt textuell ersetzt statt neu geschrieben: 17 Diff-Zeilen, Inhalt per Vergleich identisch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 20:55:48 +02:00
{ "day": "Montag", "time": "15:0018:00 Uhr" },
{ "day": "Mittwoch", "time": "15:0018:00 Uhr" },
{ "day": "Donnerstag", "time": "16:3018:30 Uhr" },
{ "day": "Freitag", "time": "14:0017:00 Uhr" },
{ "day": "Samstag", "time": "09:0013:00 Uhr" }
Flamingos zum Wettkampfturnen, Inhalte gegen die alte Seite abgeglichen Die Flamingos sind organisatorisch vom Kinderturnen zum Wettkampfturnen gewechselt. Felix hat dazu die Fassung geschickt, die die Turnabteilung selbst auf der alten Seite gepflegt hatte — dabei kamen sieben Abweichungen heraus, alle korrigiert: - Die zweite Gruppe heißt "Leistungsturnen", nicht "Wettkampfturnen" (so hieß bei uns die Gruppe wie die Disziplin). - Reihenfolge: Flamingos zuerst, Leistungsturnen danach. - Den Flamingos fehlte eine Trainingszeit: Montag gibt es ZWEI Blöcke (18:00–19:00 und 19:00–20:00), wir hatten nur den ersten. - Ansprechpersonen sind pro Gruppe verschieden (Flamingos: Theresa Diener, Leistungsturnen: Franziska Trotzke). Dafür ist `contact` neu an einer Gruppe. Die Kontakt-Kachel oben kann nur EINE Person nennen und wäre für die andere Gruppe falsch — deshalb ist `lead` bei dieser Disziplin jetzt leer, die Kachel trägt nur noch die Abteilungs-Mail. So war es auf der alten Seite auch: dort gab es keine Ansprechperson für die Disziplin, nur je Gruppe. - Theresa Diener steht im Trainerteam vorn und ohne Stern (bei uns hinten). - Intro, Trainingsinhalte, Wettkämpfe und der Hinweis waren gekürzt; jetzt im Wortlaut der Abteilung. Den Gedankenstrich in "(Kür modifiziert – Leistungsklasse 3)" ersetzt ein Komma (Sprache & Ton). - Die Fußnote sagte "* So im Trainingsplan der Abteilung gekennzeichnet" — eine Verlegenheitsformulierung, weil wir die Bedeutung nicht kannten. Die alte Seite schreibt "* = ÜBUNGSLEITER", also jetzt "* Übungsleiterinnen und Übungsleiter" (Paarform, Haus-Stil). `level` bleibt "Turnen · fortgeschritten" ohne "Alter nach Absprache" — das hatte Felix am 31.07.2026 ausdrücklich aus dem Chip genommen. Zwei Folgen, die sonst still kaputtgegangen wären: die Seite hatte eine einzige Gruppe ohne Beschreibung und lief damit im Einzelgruppen-Layout. Mit zwei Gruppen, davon eine mit Beschreibung, rendert group-schedule eine Tab-Leiste — die braucht group-tabs.js, das die Seite nicht lud (tote Tab-Knöpfe). Und drei Flamingos-Trainerinnen tragen ein Sternchen, die erklärende Fußnote wurde auf dieser Seite nicht übergeben (drei unerklärte Sterne). Geprüft: Tabs "Flamingos" und "Leistungsturnen", Skript geladen, Fußnote da, Flamingos auf /turnen/eltern-kind-turnen nicht mehr erwähnt, kein Überlauf bei 390px, alle sechs Turn-Seiten 200. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 22:40:25 +02:00
]
}
]
}
}
}