diff --git a/docs/03_Domain/02_Reference/OETO_Regelwerk/Checkliste_Start-Ergebnislisten_Dressur-Springen.md b/docs/03_Domain/02_Reference/OETO_Regelwerk/Checkliste_Start-Ergebnislisten_Dressur-Springen.md
new file mode 100644
index 00000000..973bc7cf
--- /dev/null
+++ b/docs/03_Domain/02_Reference/OETO_Regelwerk/Checkliste_Start-Ergebnislisten_Dressur-Springen.md
@@ -0,0 +1,161 @@
+---
+type: Reference
+status: DRAFT
+owner: Rulebook Expert
+updated: 2026-03-30
+---
+
+# Checkliste: Pflicht-/Sollangaben für Start- und Ergebnislisten (Dressur & Springen)
+
+Quelle/Bezug:
+- ÖTO Update „Genaue Definition des Feldes NATION im Ergebnisfile“, März 2011 → `OETO-2026_Meldestelle_Update-Ergebnisfile.md` (Z. 9–20)
+- Legacy-Erweiterung Ergebnisschnittstelle (XML), 2014 → `Legacy_Specs/OETO-2026_Meldestelle_Erweiterung-Schnittstelle_2014.md` (u. a. Z. 68–72, 75–99)
+- FEI Jumping Rules (für Richtverfahren 238/239/269/274) – TODO: exakte Artikelzitate ins Repo referenzieren
+
+Hinweis: Diese Checkliste fokussiert auf Sichtbarkeits- und Datenpflichten für Ausdrucke/Exports. Felder mit „Intern“ sind nicht zwingend auf dem Ausdruck, aber in Daten/Schnittstellen zu führen.
+
+## 1) Gemeinsame Kopf-/Eventdaten
+- Turniernummer (XXXXX) — Typ: string(5), Sichtbar: Ja
+- Turniername — Typ: string, Sichtbar: Ja
+- Datum(e) — Typ: date/date-range, Sichtbar: Ja
+- Ort/Adresse, Bundesland, Land (ISO-3) — Typ: string, Sichtbar: Ja
+- Veranstalter/OC — Typ: string, Sichtbar: Ja
+- Meldestelle (Kontakt intern) — Typ: string, Sichtbar: Optional, Intern: Ja
+- Reglementversion (ÖTO/FEI) — Typ: string, Sichtbar: Optional
+
+## 2) Gemeinsame Bewerbsdaten
+- Bewerb-Nr. (dreistellig) — Typ: string(3), Sichtbar: Ja (Kopf/Zeile)
+- Bewerbsname — Typ: string, Sichtbar: Ja
+- Sparte — Werte: Dressur|Springen, Sichtbar: Ja
+- Klasse/Level — Typ: string (z. B. A,L,M,S bzw. „1.10 m“), Sichtbar: Ja
+- Kategorie (Allg., Jugend, Pony, …) — Typ: string, Sichtbar: Ja
+- Startzeit(en) — Typ: time, Sichtbar: Optional
+- Offizielle: Richter/Jury (mit Funktion), Parcourschef, TD, Tierarzt, Hufschmied — Typ: Liste, Sichtbar: Ja (mind. Richter/Parcourschef)
+
+## 3) Teilnehmer-/Pferdestammdaten (gemeinsam)
+- Startnummer — Typ: int, Sichtbar: Ja
+- Reiter: Nachname, Vorname — Typ: string, Sichtbar: Ja
+- Reiter: Jahrgang/Altersklasse — Typ: year/string, Sichtbar: Optional
+- Reiter: Lizenznummer + Lizenzstufe — Typ: string, Sichtbar: Optional/Ja
+- Verein/Klub — Typ: string, Sichtbar: Ja
+- Nation (Anzeige) — Typ: string(3), Sichtbar: Ja
+ - Regel: Wenn Start für AUT‑Klub → `NATION=AUT`, sonst Staatsbürgerschaft lt. `lizenz01.dat`
+ - Quelle: ÖTO-Update 2011 (Z. 16–20)
+- NATIONALITÄT (Staatsbürgerschaft) — Typ: string(3), Sichtbar: Optional, Intern: Ja
+- Pferd: Name — Typ: string, Sichtbar: Ja
+- Pferd: UELN/Registriernr. — Typ: string, Sichtbar: Optional, Intern: Ja
+- Pferd: Geschlecht/Jahrgang/Rasse — Typ: string/int, Sichtbar: Optional
+- Pferd: Besitzer — Typ: string, Sichtbar: Optional (Datenschutz)
+- Pony-Status (A/B/C/D) — Typ: enum, Sichtbar: falls relevant
+- Startstatus — Werte: gemeldet/zurückgezogen/gestrichen/OK — Sichtbar: Ja
+
+---
+
+# STARTLISTEN
+
+## 4) Startlisten – Pflichtfelder (alle Sparten)
+- Kopf: Abschnitte 1–2
+- Pro Startzeile:
+ - Startnummer
+ - Reiter (Name), Lizenz (optional), Verein/Klub, Nation (per Anzeige-Regel)
+ - Pferd (Name)
+ - Geplante Startzeit (falls festgelegt)
+ - Bemerkung (z. B. „außer Konkurrenz“ sofern zulässig)
+
+## 5) Startlisten – Dressur Zusatz
+- Aufgabe/Test (z. B. FEI/ÖTO Bezeichnung) — Sichtbar: Ja
+- Vierecksgröße (20×60 / 20×40) — Sichtbar: Optional
+- Richterpositionen (C, M, B, E, H) — Sichtbar: Ja (Kopf)
+
+## 6) Startlisten – Springen Zusatz
+- Richtverfahren/Art — Sichtbar: Ja (Kopf)
+ - Beispiele: FEI Art. 238.2.1/.2.2 (Table A), 274 (2‑Phasen), 269 (Accumulator), 239 (Table C)
+ - TODO: Exakte FEI-Artikel mit Wortlaut verlinken
+- Parcoursdaten: Höhe/Weite, Hindernisanzahl, Baugeschw., erlaubte Zeit (TA), Zeitlimit (TL) — Sichtbar: Optional/Kopf
+
+---
+
+# ERGEBNISLISTEN
+
+## 7) Ergebnislisten – Pflichtfelder (gemeinsam)
+- Kopf: Abschnitte 1–2
+- Pro Start:
+ - Rang/Platz — Typ: int|string (mit „ex aequo“ möglich), Sichtbar: Ja
+ - Statuscode — Werte: CR/DNS/RET/EL/DSQ/WO … — Sichtbar: Ja
+ - TODO: ÖTO/FEI-Statuscodetabelle im Repo referenzieren/vereinheitlichen
+ - Nation (Anzeige-Regel, s. 3) — Sichtbar: Ja
+ - NATIONALITÄT (Staatsbürgerschaft) — Sichtbar: Optional, Intern: Ja
+ - Preisgeld/Punkte/Qualistatus — Sichtbar: Optional
+
+## 8) Ergebnislisten – Dressur
+- Richtereinzelwerte je Position (E,H,C,M,B):
+ - Prozent je Richter — Typ: decimal(5,2), Dezimaltrennzeichen „,“ (Textformat lt. Legacy) — Sichtbar: Optional/Detail
+ - Platzziffer „PZ“ je Richter — Typ: int — Sichtbar: Optional/Detail
+ - Hinweis: Umbenennung E‑FS/H‑FS … sowie Attribut „Prozent“/„PZ“ (Legacy 2014)
+- Endergebnis:
+ - Gesamtpunkte/Endprozent — Typ: decimal(5,2) — Sichtbar: Ja
+ - Rundung/Arithmetik — TODO: Exakte Regel je Prüfungsart (getrennt gerichtet/Kür) verlinken
+- Fehler/Strafen:
+ - Fehler des Weges/Verstöße — Sichtbar: Optional; Status ggf. EL/DSQ/RET
+- Rangbildung/Ties — TODO: Exakte Paragraphenreferenz (z. B. Richter C Priorität?)
+
+## 9) Ergebnislisten – Springen (je Richtverfahren)
+Gemeinsame Felder pro Umlauf/Phase/Stechen:
+- Fehler (Stangen/Wasser/Weigerung) — Typ: int — Sichtbar: Ja
+- Zeit — Typ: decimal mit 1–2 Nachkommastellen — Sichtbar: Ja
+- Strafpunkte gesamt — Typ: decimal — Sichtbar: Ja (wo anwendbar)
+
+Spezifika:
+- Table A gegen die Zeit (z. B. FEI Art. 238.2.1):
+ - Ausweisen: Fehler, Zeit, Strafpunkte gesamt, Endrang
+- Table A mit Stechen (FEI Art. 238.2.2/.2.3):
+ - Grundumlauf: Fehler/Zeit; Stechen: Fehler/Zeit; Qualifikation fürs Stechen; Endrang
+- Zwei‑Phasen (FEI Art. 274):
+ - Phase 1 Fehler/Zeit; Quali in Phase 2 (je Variante); Phase 2 Fehler/Zeit; Endrang
+- Accumulator (FEI Art. 269):
+ - Punkte je Sprung, Jokerpunkte, Gesamtpunkte; Zeit als Tie‑Break; Rang
+- Table C (FEI Art. 239):
+ - Zeit + Fehlerkorrektur → Endzeit; Rang
+- Ties/Ex‑aequo — TODO: Exakte FEI-Artikel/Wortlaut verlinken
+
+---
+
+## 10) Format-/Schnittstellenvorgaben (Legacy)
+- LinkID eindeutig zwischen A-/B-/D‑Sätzen und XML-Detailteil (2014, Z. 75–99)
+- Bewerbsnummer dreistellig verpflichtend bei XML‑Verlinkung (2014, Z. 83–92)
+- Numerik als Text mit Dezimaltrennzeichen „,“; keine Tausenderpunkte (2014, Z. 68–72)
+
+---
+
+## 11) Compliance & Datenschutz
+- Öffentliche Ausgaben minimieren personenbezogene Daten (z. B. Besitzer optional)
+- Nation vs. Staatsbürgerschaft strikt gemäß ÖTO‑Update 2011 führen
+
+---
+
+## 12) Offene Punkte / TODO
+1. FEI-Artikel exakte Paragraphenzitate (Art. 238/239/269/274) im Repo verlinken und in diese Checkliste integrieren.
+2. Dressur: Aggregations-/Rundungsregeln pro Prüfungsart verorten und zitieren.
+3. Statuscode-Norm (DNS/RET/EL/DSQ/WO/…): Referenzdatei anlegen und hier verlinken.
+4. Sichtbarkeitsmatrix „Öffentlicher Ausdruck vs. nur Datei“ final beschließen (Besitzer, UELN etc.).
+
+## Implementierungsstand v07 (2026-03-30)
+
+- Vorlagen/Entwürfe (Frontend):
+ - Druck‑Templates und Partials unter `docs/06_Frontend/StartErgListen/templates/` (v07‑Stand):
+ - `Ergebnisliste_v07.html` (derzeit inhaltlich Startliste)
+ - `print.css`
+ - Partials: `partials/header.html`, `partials/footer.html`, `partials/table_head_common.html`, `partials/dressur_row.html`
+ - Überblick & How‑to: `docs/06_Frontend/StartErgListen/README.md` und `docs/06_Frontend/StartErgListen/examples/README.md`
+
+- Abweichungen ggü. Checkliste (bekannt, in Arbeit):
+ - Spaltenbeschriftung „Land“ → fachlich „Nation“ gemäß ÖTO‑Update 2011.
+ - Ergebnislisten‑spezifische Felder (Rang, Statuscodes, Variantenfelder Dressur/Springen) werden in separaten Partials ergänzt.
+
+- TODOs aus dieser Checkliste (offen):
+ 1. Exakte FEI‑Artikelzitate/Varianten für Springen: Art. 238 (2.1/2.2/2.3), 239, 269, 274 — im Repo derzeit nicht im Volltext hinterlegt. Bitte Referenzen nachpflegen.
+ 2. Dressur: Rundungs-/Aggregationsregeln (Endprozent; getrennt gerichtet/Kür) mit Rechenbeispielen verifizieren und dokumentieren.
+ 3. Einheitliche Statuscodetabelle (CR/DNS/RET/EL/DSQ/WO …) festlegen und in Templates/DTOs verwenden.
+ 4. Sichtbarkeitsmatrix (Druck vs. Datei) finalisieren, insbesondere für `UELN`, Besitzer.
+
+Hinweis: Numerik‑Format (Text, Dezimal‑Komma, keine Tausenderpunkte) und `LinkID`/dreistellige Bewerbsnummer gemäß Legacy‑Spezifikation 2014 sind in Backend/Exporter zu erzwingen.
diff --git a/docs/04_Agents/Journal/2026-03-30_Session-Log.md b/docs/04_Agents/Journal/2026-03-30_Session-Log.md
new file mode 100644
index 00000000..2d83e6cf
--- /dev/null
+++ b/docs/04_Agents/Journal/2026-03-30_Session-Log.md
@@ -0,0 +1,30 @@
+---
+type: Journal
+status: FINAL
+owner: Curator
+date: 2026-03-30
+---
+
+# Session Log – Start-/Ergebnislisten Docs & Templates (v07)
+
+## Umfang dieser Session
+- Regel-Referenzen (ÖTO/Legacy) eingesehen und mit Frontend-Entwürfen abgeglichen.
+- Dokumentation konsolidiert und vervollständigt:
+ - Aktualisierung How‑to für Beispiele (Mustache + Renderpfad).
+ - Neuer Überblick `StartErgListen/README.md` (Bestand, Compliance, Render‑Pfad, bekannte Abweichungen).
+ - Implementierungsstand v07 in Checkliste verankert (Links, TODO‑Liste, Abweichungen).
+
+## Geänderte/neu angelegte Dateien
+- Update: `docs/06_Frontend/StartErgListen/examples/README.md` → Status ACTIVE, korrekte Pfade, TODO‑Hinweise.
+- Neu: `docs/06_Frontend/StartErgListen/README.md` → Referenz/How‑to für Templates v07.
+- Update: `docs/03_Domain/02_Reference/OETO_Regelwerk/Checkliste_Start-Ergebnislisten_Dressur-Springen.md` → Abschnitt „Implementierungsstand v07“.
+
+## Offene Punkte (übernommen in Checkliste)
+1) FEI‑Artikelzitate (238/239/269/274) präzisieren und nachpflegen.
+2) Dressur‑Rundungs-/Aggregationsregeln verbindlich dokumentieren.
+3) Einheitliche Statuscodetabelle (CR/DNS/RET/EL/DSQ/WO …) festlegen.
+4) Sichtbarkeitsmatrix Druck vs. Datei finalisieren (z. B. UELN, Besitzer).
+
+## Nächste empfohlene Schritte (außerhalb dieser Session)
+- Separate Templates `Startliste_v07.html` und `Ergebnisliste_v07.html` anlegen und Partials für Springen‑Varianten ergänzen.
+- Beispiel‑Datensätze für Dressur‑ und Springen‑Ergebnislisten hinzufügen und Golden‑Master‑PDFs erzeugen.
diff --git a/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v01.html b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v01.html
new file mode 100644
index 00000000..c42e8e0f
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v01.html
@@ -0,0 +1,237 @@
+
+
+
+
+ Ergebnisliste - Turniersystem
+
+
+
+
+
+
+
+
+
+ Richter: C: Oberhumer Julia;
+
+
+
+
+
+ | Pos. |
+ Kopf Nr. |
+ Pferd Abstammung |
+ Reiter Verein |
+ K |
+ Land |
+ Wertung Gesamtnote |
+ Geldpreis |
+
+
+
+
+ | 1 |
+ 5617 |
+
+ Amigo 222
+ Andalusier-PRE/2013/W/Brauner/Decisivo A
+ |
+
+ Pelzeder Sandra
+ Sportunion Pferdefreunde Altenberg
+ |
+ |
+ O |
+ 8,00 |
+ |
+
+
+ | 2 |
+ 4G13 |
+
+ Kokusz
+ Ung. HB/2011/S/Fuchs/3108 Dárda
+ |
+
+ Resch Lisa
+ Reitclub Scherhaufgut
+ |
+ |
+ O |
+ 7,80 |
+ |
+
+
+ | 3 |
+ A404 |
+
+ Cordonello
+ Österr. WB/2018/W/Schimmel/Cordolensky
+ |
+
+ Neubauer Sandra
+ Union Reiterhof Premser
+ |
+ |
+ O |
+ 5,00 |
+ |
+
+
+
+
+
+
+
+
diff --git a/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v02.html b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v02.html
new file mode 100644
index 00000000..46d170ca
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v02.html
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Veranstaltungsort
+ Neumarkt/M. OÖ — CDN-C_Neu
+
+
+ Prüfung / Klasse
+ Dressurreiterprüfung | Klasse A
+
+
+ Datum / Richter
+ 08.06.2025 | Julia Oberhumer (C)
+
+
+
+
+
+
+ | Rang |
+ KNR |
+ Pferd / Abstammung |
+ Reiter / Verein |
+ Land |
+ Wertung |
+
+
+
+
+ | 1 |
+ 5617 |
+
+ Amigo 222
+ Andalusier-PRE / 2013 / W / Brauner
+ |
+
+ Pelzeder Sandra
+ Sportunion Pferdefreunde Altenberg
+ |
+ AUT |
+ 8,00 |
+
+
+ | 2 |
+ 4G13 |
+
+ Kokusz
+ Ung. HB / 2011 / S / Fuchs
+ |
+
+ Resch Lisa
+ Reitclub Scherhaufgut
+ |
+ AUT |
+ 7,80 |
+
+
+
+
+
+
+
+
diff --git a/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v03.html b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v03.html
new file mode 100644
index 00000000..ededb14c
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v03.html
@@ -0,0 +1,255 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
Bewerb-Informationen
+
+ Bewerb:
+ 008 | Dressurreiterprüfung
+
+
+ Klasse/Aufg:
+ A | Aufgabe A3 (20x40m)
+
+
+ Richtverf.:
+ ÖTO §204.2 (Gemeinsames Richten)
+
+
+
+
+
Jury & Offizielle
+
+ Richter:
+ Julia Oberhumer (C), Dr. Max Mustermann
+
+
+ Parcours:
+ Ing. Franz Beispieler
+
+
+ Startzeit:
+ 12:30 Uhr
+
+
+
+
+
+
+
+ | Zeit |
+ KNR |
+ Reiter / Verein |
+ Nat. |
+ Pferd / Abstammung |
+ Info |
+
+
+
+
+ | 12:30 |
+ 5617 |
+
+ PELZEDER Sandra
+ Sportunion Pferdefreunde Altenberg
+ |
+ AUT |
+
+ Amigo 222
+ PRE / 2013 / W / Brauner / Decisivo A
+ |
+ OK |
+
+
+ | 12:38 |
+ 4G13 |
+
+ RESCH Lisa
+ Reitclub Scherhaufgut
+ |
+ AUT |
+
+ Kokusz
+ Ung. HB / 2011 / S / Fuchs / Dárda
+ |
+ OK |
+
+
+ | 12:46 |
+ 4Y59 |
+
+ RINTELEN-BERNEGGER Flora
+ Reitverein Exaequo
+ |
+ AUT |
+
+ Legolas 196
+ Oldenburger / 2011 / W / Brauner / Levisonn
+ |
+ a.K. |
+
+
+
+
+
+
diff --git a/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v04.html b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v04.html
new file mode 100644
index 00000000..5fc6da31
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v04.html
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Start |
+ KNR |
+ Reiter / Verein |
+ Land |
+ Pferd / Abstammung |
+ Info |
+
+
+
+
+ | 12:30 |
+ 5617 |
+
+ PELZEDER Sandra
+ Sportunion Pferdefreunde Altenberg
+ |
+ AUT |
+ Amigo 222
+ Andalusier-PRE / 2013 / W / Brauner / Decisivo A
+ |
+ |
+
+
+ | 12:38 |
+ 4G13 |
+
+ RESCH Lisa
+ Reitclub Scherhaufgut
+ |
+ AUT |
+
+ Kokusz
+ Ung. HB / 2011 / S / Fuchs / 3108 Dárda
+ |
+ |
+
+
+ | 12:46 |
+ 4Y59 |
+
+ RINTELEN-BERNEGGER Flora
+ Reitverein Exaequo
+ |
+ AUT |
+
+ Legolas 196
+ Oldenburger / 2011 / W / Brauner / Levisonn
+ |
+ a.K. |
+
+
+
+
+
+
+
+
diff --git a/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v05.html b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v05.html
new file mode 100644
index 00000000..cc757083
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v05.html
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+
+
+
Startliste
+
Bewerb Nr. 008 | Abteilung 1
+
+
+ Turnier-Nr.: 25320
+ Datum: 30.03.2026
+ Ort: Neumarkt/M. OÖ
+
+
+
+
+
+
+ Richter: C: Oberhumer Julia; M: Dr. Max Mustermann | Parcours: Ing. Franz Beispieler
+
+
+
+
+
+
+ | Start |
+ KNR |
+ Reiter / Verein |
+ Pferd / Abstammung |
+ Land |
+ Status |
+
+
+
+
+ | 12:30 |
+ 5617 |
+
+ PELZEDER Sandra
+ Sportunion Pferdefreunde Altenberg
+ |
+
+ Amigo 222
+ Andalusier-PRE / 2013 / W / Brauner / Decisivo A
+ |
+ AUT |
+ OK |
+
+
+ | 12:38 |
+ 4G13 |
+
+ RESCH Lisa
+ Reitclub Scherhaufgut
+ |
+
+ Kokusz
+ Ung. HB / 2011 / S / Fuchs / 3108 Dárda
+ |
+ AUT |
+ OK |
+
+
+
+
+
+
+
+
diff --git a/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v06.html b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v06.html
new file mode 100644
index 00000000..c578bf9e
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v06.html
@@ -0,0 +1,278 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
Startliste
+
Bewerb 008 | Abt. 1
+
+
+ Turnier-Nr.: 25320
+ Datum: 30.03.2026
+ Ort: Neumarkt/M. OÖ
+
+
+
+
+
+
+ Richter: C: Oberhumer Julia; M: Dr. Max Mustermann | Parcours: Ing. Franz Beispieler
+
+
+
+
+
+
+ | Start |
+ Reiter / Verein |
+ KNR |
+ Pferd / Abstammung |
+ Land |
+ Status |
+
+
+
+
+ | 12:30 |
+
+ PELZEDER Sandra
+ Sportunion Pferdefreunde Altenberg
+ |
+ 5617 |
+
+ Amigo 222
+ Andalusier-PRE / 2013 / W / Brauner / Decisivo A
+ |
+ AUT |
+ OK |
+
+
+ | 12:38 |
+
+ RESCH Lisa
+ Reitclub Scherhaufgut
+ |
+ 4G13 |
+
+ Kokusz
+ Ung. HB / 2011 / S / Fuchs / 3108 Dárda
+ |
+ AUT |
+ OK |
+
+
+ | 12:46 |
+
+ RINTELEN-BERNEGGER Flora
+ Reitverein Exaequo
+ |
+ 4Y59 |
+
+ Legolas 196
+ Oldenburger / 2011 / W / Brauner / Levisonn
+ |
+ AUT |
+ a.K. |
+
+
+
+
+
+
+
+
diff --git a/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v07.html b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v07.html
new file mode 100644
index 00000000..db78b179
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/Ergebnisliste-Template_v07.html
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
Startliste
+
BW 008 | Abt. 1
+
Start: 12:30 Uhr
+
+
+ Turnier-Nr.: 25320
+ Turnier: CDN-C Neumarkt/M. OÖ
+ Datum: 08.06.2025
+
+
+
+
+
+
+ Richter: C: Oberhumer Julia; M: Dr. Max Mustermann | Parcours: Ing. Franz Beispieler
+
+
+
+
+
+
+ | Start |
+ Reiter / Verein |
+ KNR |
+ Pferd / Abstammung |
+ Land |
+ Status |
+
+
+
+
+ | 12:30 |
+
+ PELZEDER Sandra
+ Sportunion Pferdefreunde Altenberg
+ |
+ 5617 |
+
+ Amigo 222
+ Andalusier-PRE / 2013 / W / Brauner
+ |
+ AUT | OK |
+
+
+ | 12:38 |
+
+ RESCH Lisa
+ Reitclub Scherhaufgut
+ |
+ 4G13 |
+
+ Kokusz
+ Ung. HB / 2011 / S / Fuchs
+ |
+ AUT |
+ OK |
+
+
+
+
+
+
+
+
diff --git a/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_01.png b/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_01.png
new file mode 100644
index 00000000..235937bc
Binary files /dev/null and b/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_01.png differ
diff --git a/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_02.png b/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_02.png
new file mode 100644
index 00000000..41dd121c
Binary files /dev/null and b/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_02.png differ
diff --git a/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_03.png b/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_03.png
new file mode 100644
index 00000000..84d05852
Binary files /dev/null and b/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_03.png differ
diff --git a/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_04.png b/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_04.png
new file mode 100644
index 00000000..47defa90
Binary files /dev/null and b/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_04.png differ
diff --git a/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_05.png b/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_05.png
new file mode 100644
index 00000000..2ea82f85
Binary files /dev/null and b/docs/06_Frontend/StartErgListen/Ergebnisliste_Bewerb_05.png differ
diff --git a/docs/06_Frontend/StartErgListen/README.md b/docs/06_Frontend/StartErgListen/README.md
new file mode 100644
index 00000000..930631a2
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/README.md
@@ -0,0 +1,50 @@
+---
+type: Reference
+status: ACTIVE
+owner: Frontend Expert
+updated: 2026-03-30
+---
+
+# Start- und Ergebnislisten – Templates v07 (HTML + Mustache)
+
+Ziel: Drucktaugliche, hochdichte Start-/Ergebnislisten auf Basis von HTML/CSS (Print‑CSS) und logikarmen Mustache‑Templates. PDF‑Erzeugung via Headless Chromium empfohlen.
+
+## Bestand (aktueller Stand)
+- templates/
+ - `Ergebnisliste_v07.html` – v07‑Grundtemplate (derzeit mit „Startliste“-Inhalt befüllt)
+ - `print.css` – gemeinsames Druck‑Stylesheet (A4, thead/tfoot‑Wiederholung, Umbruchschutz)
+ - partials/
+ - `header.html`, `footer.html`
+ - `table_head_common.html`
+ - `dressur_row.html` (Basis für Dressur‑Zeilen)
+
+## Geplante Ergänzungen (Next)
+- `Startliste_v07.html` – separates Startlisten‑Template.
+- Partials für Springen‑Varianten: Table A (238.2.1/2.2), Table C (239), Two‑Phases (274), Accumulator (269).
+- `ergebnisliste_*_data.json` Beispiel‑Daten (Dressur, Springen Table A).
+
+## Compliance/Regelwerk
+- „Nation“ gemäß ÖTO‑Update 2011 (docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_Meldestelle_Update-Ergebnisfile.md):
+ - Start für AUT‑Klub → `NATION = AUT`, sonst `NATION = NATIONALITÄT` laut `lizenz01.dat`.
+- Numerik als Text mit Dezimal‑Komma, keine Tausenderpunkte (Legacy 2014‑Spezifikation).
+
+## Render‑Pfad (lokal)
+1) Mustache rendern (CLI):
+```
+mustache docs/06_Frontend/StartErgListen/examples/startliste_data.json \
+ docs/06_Frontend/StartErgListen/templates/Ergebnisliste_v07.html \
+ /tmp/Startliste_v07.html
+```
+2) PDF erzeugen (Chromium):
+```
+chromium --headless --disable-gpu \
+ --print-to-pdf=/tmp/Startliste_v07.pdf \
+ /tmp/Startliste_v07.html
+```
+
+## Bekannte Abweichungen (werden gefixt)
+- Spaltenüberschrift „Land“ wird auf „Nation“ vereinheitlicht.
+- Doppelte Fußzeilen vermeiden: Entweder CSS‑Footer ODER Renderer‑Footer verwenden.
+
+## Bezug/Checkliste
+- Siehe Referenz‑Checkliste: `docs/03_Domain/02_Reference/OETO_Regelwerk/Checkliste_Start-Ergebnislisten_Dressur-Springen.md`
diff --git a/docs/06_Frontend/StartErgListen/examples/README.md b/docs/06_Frontend/StartErgListen/examples/README.md
new file mode 100644
index 00000000..c7acac46
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/examples/README.md
@@ -0,0 +1,45 @@
+type: How-to
+status: ACTIVE
+owner: Frontend Expert
+updated: 2026-03-30
+---
+
+# Beispiele: Start-/Ergebnislisten rendern (Mustache + HTML/CSS)
+
+Dieser Ordner enthält Beispiel-Daten (JSON) für die Mustache-Templates unter `../templates/`.
+
+Struktur (aktueller Stand):
+- `../templates/print.css` – gemeinsames Druck-CSS (A4, Wiederhol-Header, Umbruchschutz)
+- `../templates/Ergebnisliste_v07.html` – v07-Template (aktuell als Startliste befüllt; Spalten und Kopf sind bereits drucktauglich)
+- `../templates/partials/` – Header, Footer, Tabellenkopf, Dressur-Zeile (Grundlage für Varianten)
+
+Beispiel-Daten (verfügbar):
+- `startliste_data.json` – Startliste Dressur
+
+Geplante Beispiel-Daten (TODO):
+- `ergebnisliste_springen_tableA_data.json` – Ergebnisliste Springen (Table A 238.2.1)
+- `ergebnisliste_dressur_data.json` – Ergebnisliste Dressur (Endprozent)
+
+Hinweise (Compliance):
+- Dezimaltrennzeichen „,“ bitte bereits im Backend/Formatter vorbereiten (Legacy‑Vorgabe: numerisch als Text; kein Tausenderpunkt).
+- Spalte „Nation“ gemäß ÖTO‑Update 2011 bilden: Start für AUT‑Klub → `AUT`, sonst Staatsbürgerschaft lt. `lizenz01.dat`.
+- In den v07‑Entwürfen ist die Spaltenüberschrift teils noch „Land“; fachlich korrekt ist „Nation“ (siehe Checkliste). Dies wird in den finalen Templates vereinheitlicht.
+
+Quick Render (Beispiel, ohne Gewähr):
+1) Mustache rendern (CLI-Beispiel):
+```
+mustache startliste_data.json ../templates/Ergebnisliste_v07.html > /tmp/Startliste_v07.html
+```
+2) PDF erzeugen (Headless Chromium):
+```
+chromium --headless --disable-gpu --print-to-pdf=/tmp/Startliste_v07.pdf /tmp/Startliste_v07.html
+```
+
+Alternativ: wkhtmltopdf (Achtung Rendering‑Unterschiede)
+```
+wkhtmltopdf /tmp/Startliste_v07.html /tmp/Startliste_v07.pdf
+```
+
+Status & Nächste Schritte:
+- Ergänzung der fehlenden Beispiel‑Daten für Ergebnislisten (Dressur, Springen Table A) – siehe TODO oben.
+- Aufteilung in separate Templates `Startliste_v07.html` und `Ergebnisliste_v07.html`, sobald beide Varianten produktiv befüllt sind.
diff --git a/docs/06_Frontend/StartErgListen/examples/ergebnisliste_dressur_data.json b/docs/06_Frontend/StartErgListen/examples/ergebnisliste_dressur_data.json
new file mode 100644
index 00000000..bc93ceab
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/examples/ergebnisliste_dressur_data.json
@@ -0,0 +1,46 @@
+{
+ "docTitle": "Ergebnisliste",
+ "bewerbLabel": "BW 008 | Abt. 1",
+ "turnierNummer": "25320",
+ "turnierName": "CDN-C Neumarkt/M. OÖ",
+ "datum": "08.06.2025",
+ "printedAt": "30.03.2026 22:40",
+ "bewerbShort": "BW 008 | Abt. 1",
+ "isErgebnisliste": true,
+ "meta": [
+ {"label": "Sparte", "value": "Dressur"},
+ {"label": "Aufgabe / Viereck", "value": "Aufgabe A3 | 20 x 40 m"},
+ {"label": "Richtverfahren", "value": "A (ÖTO §204.2)"},
+ {"label": "Starter / Platziert", "value": "8 / 5"}
+ ],
+ "officials": ["Richter: C: Oberhumer Julia; M: Dr. Max Mustermann"],
+ "starts": [
+ {
+ "isDressur": true,
+ "rang": 1,
+ "reiter": {"name": "PELZEDER Sandra", "verein": "Sportunion Pferdefreunde Altenberg", "knr": "5617"},
+ "pferd": {"name": "Amigo 222", "details": "Andalusier-PRE / 2013 / W / Brauner"},
+ "nation": "AUT",
+ "endProzent": "69,58",
+ "status": "CR"
+ },
+ {
+ "isDressur": true,
+ "rang": 2,
+ "reiter": {"name": "RESCH Lisa", "verein": "Reitclub Scherhaufgut", "knr": "4G13"},
+ "pferd": {"name": "Kokusz", "details": "Ung. HB / 2011 / S / Fuchs"},
+ "nation": "AUT",
+ "endProzent": "68,22",
+ "status": "CR"
+ },
+ {
+ "isDressur": true,
+ "rang": "EL",
+ "reiter": {"name": "MUSTERMANN Paul", "verein": "RV Exemplar", "knr": "9Z99"},
+ "pferd": {"name": "Dorian", "details": "Old. / 2012 / W / Rappe"},
+ "nation": "AUT",
+ "endProzent": "",
+ "status": "EL"
+ }
+ ]
+}
diff --git a/docs/06_Frontend/StartErgListen/examples/ergebnisliste_springen_tableA_data.json b/docs/06_Frontend/StartErgListen/examples/ergebnisliste_springen_tableA_data.json
new file mode 100644
index 00000000..d14344d9
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/examples/ergebnisliste_springen_tableA_data.json
@@ -0,0 +1,46 @@
+{
+ "docTitle": "Ergebnisliste",
+ "bewerbLabel": "BW 012 | Abt. 1",
+ "turnierNummer": "25320",
+ "turnierName": "CSN-B Neumarkt/M. OÖ",
+ "datum": "08.06.2025",
+ "printedAt": "30.03.2026 22:35",
+ "bewerbShort": "BW 012 | Abt. 1",
+ "isErgebnisliste": true,
+ "meta": [
+ {"label": "Sparte", "value": "Springen"},
+ {"label": "Richtverfahren", "value": "Table A gegen die Zeit (FEI Art. 238.2.1)"},
+ {"label": "Höhe", "value": "1.10 m"},
+ {"label": "Starter / Platziert", "value": "32 / 8"}
+ ],
+ "officials": ["Parcours: Ing. Franz Beispieler"],
+ "starts": [
+ {
+ "isSpringenTableA": true,
+ "rang": 1,
+ "reiter": {"name": "MUSTER Anna", "verein": "RV Linz", "knr": "A123"},
+ "pferd": {"name": "Quickstar", "abstammung": "Holst. / 2014 / W / Dunkelbraun"},
+ "nation": "AUT",
+ "ergebnisA": {"fehler": 0, "zeit": "59,38"},
+ "status": "CR"
+ },
+ {
+ "isSpringenTableA": true,
+ "rang": 2,
+ "reiter": {"name": "HUBER Leo", "verein": "RC Traun", "knr": "B987"},
+ "pferd": {"name": "Blue Moon", "abstammung": "Zang. / 2012 / S / Schimmel"},
+ "nation": "AUT",
+ "ergebnisA": {"fehler": 0, "zeit": "60,12"},
+ "status": "CR"
+ },
+ {
+ "isSpringenTableA": true,
+ "rang": 18,
+ "reiter": {"name": "GAST Max", "verein": "Gast", "knr": "G001"},
+ "pferd": {"name": "Visitor", "abstammung": "KWPN / 2011 / W / Braun"},
+ "nation": "GER",
+ "ergebnisA": {"fehler": 8, "zeit": "75,44"},
+ "status": "CR"
+ }
+ ]
+}
diff --git a/docs/06_Frontend/StartErgListen/examples/startliste_data.json b/docs/06_Frontend/StartErgListen/examples/startliste_data.json
new file mode 100644
index 00000000..ca9f4095
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/examples/startliste_data.json
@@ -0,0 +1,36 @@
+{
+ "docTitle": "Startliste",
+ "bewerbLabel": "BW 008 | Abt. 1",
+ "startTime": "12:30 Uhr",
+ "turnierNummer": "25320",
+ "turnierName": "CDN-C Neumarkt/M. OÖ",
+ "datum": "08.06.2025",
+ "printedAt": "30.03.2026 22:30",
+ "bewerbShort": "BW 008 | Abt. 1",
+ "isStartliste": true,
+ "meta": [
+ {"label": "Prüfung / Klasse", "value": "Dressurreiterprüfung | Klasse A"},
+ {"label": "Aufgabe / Viereck", "value": "Aufgabe A3 | 20 x 40 m"},
+ {"label": "Richtverfahren", "value": "A (ÖTO §204.2)"},
+ {"label": "Starter / Platziert", "value": "8 / 5"}
+ ],
+ "officials": ["Richter: C: Oberhumer Julia; M: Dr. Max Mustermann"],
+ "starts": [
+ {
+ "isDressur": true,
+ "startSlot": "12:30",
+ "reiter": {"name": "PELZEDER Sandra", "verein": "Sportunion Pferdefreunde Altenberg", "knr": "5617"},
+ "pferd": {"name": "Amigo 222", "details": "Andalusier-PRE / 2013 / W / Brauner"},
+ "nation": "AUT",
+ "status": "OK"
+ },
+ {
+ "isDressur": true,
+ "startSlot": "12:38",
+ "reiter": {"name": "RESCH Lisa", "verein": "Reitclub Scherhaufgut", "knr": "4G13"},
+ "pferd": {"name": "Kokusz", "details": "Ung. HB / 2011 / S / Fuchs"},
+ "nation": "AUT",
+ "status": "OK"
+ }
+ ]
+}
diff --git a/docs/06_Frontend/StartErgListen/templates/Ergebnisliste_v07.html b/docs/06_Frontend/StartErgListen/templates/Ergebnisliste_v07.html
new file mode 100644
index 00000000..14ac122f
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/templates/Ergebnisliste_v07.html
@@ -0,0 +1,34 @@
+
+
+
+
+ {{docTitle}}
+
+
+
+
+{{! Ergebnisliste: setzt isErgebnisliste=true }}
+{{> header }}
+
+
+ {{> table_head_common }}
+
+ {{#starts}}
+ {{#isDressur}}
+ {{> dressur_row }}
+ {{/isDressur}}
+ {{#isSpringenTableA}}
+ {{> springen_tableA_row }}
+ {{/isSpringenTableA}}
+ {{#isOther}}
+ {{> dressur_row }}
+ {{/isOther}}
+ {{/starts}}
+
+
+
+
+{{> footer }}
+
+
+
diff --git a/docs/06_Frontend/StartErgListen/templates/Startliste_v07.html b/docs/06_Frontend/StartErgListen/templates/Startliste_v07.html
new file mode 100644
index 00000000..cd7e5513
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/templates/Startliste_v07.html
@@ -0,0 +1,33 @@
+
+
+
+
+ {{docTitle}}
+
+
+
+
+{{> header }}
+
+
+ {{> table_head_common }}
+
+ {{#starts}}
+ {{#isDressur}}
+ {{> dressur_row }}
+ {{/isDressur}}
+ {{#isSpringenTableA}}
+ {{> springen_tableA_row }}
+ {{/isSpringenTableA}}
+ {{#isOther}}
+ {{> dressur_row }}
+ {{/isOther}}
+ {{/starts}}
+
+
+
+
+{{> footer }}
+
+
+
diff --git a/docs/06_Frontend/StartErgListen/templates/partials/dressur_row.html b/docs/06_Frontend/StartErgListen/templates/partials/dressur_row.html
new file mode 100644
index 00000000..16f96bc0
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/templates/partials/dressur_row.html
@@ -0,0 +1,22 @@
+
+ {{#isStartliste}}
+ | {{startSlot}} |
+ {{/isStartliste}}
+ {{#isErgebnisliste}}
+ {{rang}} |
+ {{/isErgebnisliste}}
+
+ {{reiter.name}}
+ {{reiter.verein}}
+ |
+ {{reiter.knr}} |
+
+ {{pferd.name}}
+ {{pferd.details}}
+ |
+ {{nation}} |
+ {{#isErgebnisliste}}
+ {{endProzent}} |
+ {{/isErgebnisliste}}
+ {{status}} |
+
diff --git a/docs/06_Frontend/StartErgListen/templates/partials/footer.html b/docs/06_Frontend/StartErgListen/templates/partials/footer.html
new file mode 100644
index 00000000..1c953335
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/templates/partials/footer.html
@@ -0,0 +1,6 @@
+
diff --git a/docs/06_Frontend/StartErgListen/templates/partials/header.html b/docs/06_Frontend/StartErgListen/templates/partials/header.html
new file mode 100644
index 00000000..a7310d5a
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/templates/partials/header.html
@@ -0,0 +1,31 @@
+
diff --git a/docs/06_Frontend/StartErgListen/templates/partials/springen_tableA_row.html b/docs/06_Frontend/StartErgListen/templates/partials/springen_tableA_row.html
new file mode 100644
index 00000000..e134acc9
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/templates/partials/springen_tableA_row.html
@@ -0,0 +1,23 @@
+
+ {{#isStartliste}}
+ | {{startSlot}} |
+ {{/isStartliste}}
+ {{#isErgebnisliste}}
+ {{rang}} |
+ {{/isErgebnisliste}}
+
+ {{reiter.name}}
+ {{reiter.verein}}
+ |
+ {{reiter.knr}} |
+
+ {{pferd.name}}
+ {{pferd.abstammung}}
+ |
+ {{nation}} |
+ {{#isErgebnisliste}}
+ {{ergebnisA.fehler}} |
+ {{ergebnisA.zeit}} |
+ {{/isErgebnisliste}}
+ {{status}} |
+
diff --git a/docs/06_Frontend/StartErgListen/templates/partials/table_head_common.html b/docs/06_Frontend/StartErgListen/templates/partials/table_head_common.html
new file mode 100644
index 00000000..dbbe8446
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/templates/partials/table_head_common.html
@@ -0,0 +1,24 @@
+
+
+ {{#isStartliste}}
+ | Start |
+ {{/isStartliste}}
+ {{#isErgebnisliste}}
+ Rang |
+ {{/isErgebnisliste}}
+ Reiter / Verein |
+ KNR |
+ Pferd / Abstammung |
+ Nation |
+ {{#isErgebnisliste}}
+ {{#isDressur}}
+ % Endergebnis |
+ {{/isDressur}}
+ {{#isSpringenTableA}}
+ Fehler |
+ Zeit |
+ {{/isSpringenTableA}}
+ {{/isErgebnisliste}}
+ Status |
+
+
diff --git a/docs/06_Frontend/StartErgListen/templates/print.css b/docs/06_Frontend/StartErgListen/templates/print.css
new file mode 100644
index 00000000..9d672056
--- /dev/null
+++ b/docs/06_Frontend/StartErgListen/templates/print.css
@@ -0,0 +1,69 @@
+:root {
+ --primary: #000;
+ --secondary: #4a5568;
+ --highlight-bg: #edf2f7;
+ --border-bold: #1a202c;
+ --border-light: #cbd5e0;
+ --font-main: 'Helvetica Neue', Helvetica, Arial, sans-serif;
+}
+
+@page {
+ size: A4;
+ margin: 12mm 12mm 18mm 12mm;
+}
+
+/* Headless Chromium/WKHTMLTOPDF friendly repeating headers/footers */
+thead { display: table-header-group; }
+tfoot { display: table-footer-group; }
+tr, .row { page-break-inside: avoid; }
+
+html, body { margin: 0; padding: 0; }
+body {
+ font-family: var(--font-main), serif;
+ color: var(--primary);
+ font-size: 9pt;
+ line-height: 1.3;
+}
+
+header {
+ border-bottom: 3px solid var(--primary);
+ margin-bottom: 12px;
+ padding-bottom: 10px;
+}
+
+.title-row { display: flex; justify-content: space-between; align-items: flex-start; }
+.title-group h1 { font-size: 20pt; margin: 0; font-weight: 900; text-transform: uppercase; }
+.bewerb-subtitle { font-size: 14pt; font-weight: 700; margin-top: 2px; }
+.tournament-info { text-align: right; font-size: 8.5pt; line-height: 1.4; }
+
+.meta-grid {
+ display: grid;
+ grid-template-columns: 1.5fr 1fr 1fr 0.8fr;
+ gap: 10px;
+ margin-top: 12px;
+ padding: 10px;
+ background-color: var(--highlight-bg);
+ border: 1px solid var(--border-light);
+ border-radius: 4px;
+}
+.meta-item b { display: block; font-size: 6.5pt; text-transform: uppercase; color: var(--secondary); margin-bottom: 2px; }
+.meta-item span { font-size: 9pt; font-weight: 600; }
+
+table { width: 100%; border-collapse: collapse; margin-top: 12px; }
+thead th { text-align: left; border-top: 1px solid var(--primary); border-bottom: 1px solid var(--primary); padding: 8px 4px; font-size: 8pt; font-weight: bold; text-transform: uppercase; }
+tbody tr { border-bottom: 1px solid var(--border-light); }
+tbody td { padding: 8px 4px; vertical-align: top; }
+
+.col-start { width: 42px; font-weight: bold; }
+.col-rider { width: 30%; }
+.col-knr { width: 52px; font-family: 'Courier New', monospace; font-weight: bold; text-align: center; }
+.col-horse { width: 35%; }
+.col-nation { width: 40px; text-align: center; font-weight: bold; }
+.col-status { width: 54px; text-align: right; font-size: 8pt; color: var(--secondary); }
+
+.main-info { display: block; font-weight: bold; font-size: 9.5pt; }
+.sub-info { display: block; font-size: 7.5pt; color: var(--secondary); margin-top: 3px; overflow-wrap: anywhere; }
+
+.num, .time { text-align: right; font-variant-numeric: tabular-nums; }
+
+.footer-fixed { position: fixed; bottom: 0; width: 100%; font-size: 7pt; color: var(--secondary); border-top: 1px solid var(--border-light); padding-top: 5px; }
diff --git a/docs/OePS/drive-download-20260330T181156Z-1-001.zip b/docs/OePS/drive-download-20260330T181156Z-1-001.zip
new file mode 100644
index 00000000..b13c4c69
Binary files /dev/null and b/docs/OePS/drive-download-20260330T181156Z-1-001.zip differ
diff --git a/docs/OePS/n2-25405.dat b/docs/OePS/n2-25405.dat
new file mode 100644
index 00000000..852c9f75
--- /dev/null
+++ b/docs/OePS/n2-25405.dat
@@ -0,0 +1,194 @@
+A25405Hrm 2025070520250706CDN-B
+RREITERLISTE
+148294Pewny Sophia 07Union Reit- u. Fahrclub Gut Weissenhof AUTR1D4 25 73615062 2025W20021212
+058440Prammer Susanne 02Reitclub St. Plten Hart AUTRD1 2414036802746 3223 2025W19630622
+204592Sutter Barbara 02Reitsport Jolly Jumper AUTR2D4 28210087 2025W19920428
+129318Sachers Hanna 03MBTK Equestrian AUTR1 25 31590041 2025W20031120
+208404Doppler Jennifer 02Reit- und Fahrverein Bergerhof AUTR1D4 2587000507416 53216 2025W1992092110045862
+224340Gluszko Ludwig 02Reitclub Schlo Krllendorf AUTR2D3 2533011107416 53528 2025M19800414
+204809Binder Anna 02Union Pferdesportverein Waidhofen a.d.Ybbs AUTR2 29590004 2025W19881222
+187145Hofer Nina 03Equiteam Auhof Neufeld AUTRD2 25 30440279 2025W20010912
+002230Wegrostek Eva 02Reitsportzentrum Gutenhof AUTR2D4 2870022301 9439393 2025W19630408
+224941Lumper Bettina 02Reitanlage Kronberg AUTRD2 26340028 2025W19811212
+146734Sedlmaier Theresa 02Reit-u.Fahrverein Unteres Traisental AUTR1 26220192 2025W19940110
+108064Pchhacker Manuel 02Reitclub Schlo Krllendorf AUTRD2 25330112 2025M19860723
+217792Mayerhofer Natalie 02Verein der Pferdefreunde N AUTRD3 28002529 2025W19950725
+225943Gritsch Heliane 02Verein Reitclub Sagl AUTR1 2812017502753 6123 2025W19840624
+214757Marcharth Nina 02Reit- u. Fahrverein Karlstetten AUTR1D2 24210143 2025W19910307
+167278Herbst Eleonora 06Union Reit- u. Fahrverein Kirchschlag-Geng AUTRD3 JG 61540199 2025W2010051210348162
+129150Hofbauer Victoria 02Gestt Weidenholz AUTRD2 24340108 2025W19930819
+211010Hochgerner Christina 02Verein der Pferdefreunde N AUTRD3 28003030 2025W19690511
+219208Bugl Marina 02Pferdehof Vogt AUTRD2 25790030 2025W19950922
+213821Hackl Valentina 02Verein Reitclub Sagl AUTRD1 28120040 2025W19960418
+190185Grohs Sebastian 02Reitclub Hofbauer AUTRD1 25 27060343 2025M20000608
+179633Aigner Jona 02Reitclub Niedernhof AUTRD3 JG 27720091 2025W20100105
+121145Stritzinger Michaela 06Reitclub von Aigen AUTRD2 64180009 2025W19880913
+617832Gfatter Christine 02Verein der Pferdefreunde N AUTRD1 2800261002772 52559 2025W19920816
+197388ZIJL Carolina 02Reitsportzentrum Pany AUTRD1 Y21020073 2025W20041117
+122648Handl Alina 02K & K Pferdesport Mostviertel AUTRD1 25 28200153 2025W20031219
+140883Holzapfel Celine 02Reitclub St. Plten Hart AUTRD1 24140374 2025W19991126
+040563Vieghofer Birgit 02Reitclub Hofbauer AUTRD3 2706023207482 43720 2025W19620410
+215810Schoder Eva Maria 02Reitsportclub Schoder AUTR1D3 2229004307472 67271 2025W19930713
+065551Spiegelfeld Ludmilla 02Reit- und Fahrclub Gut Aichhof GERR1 23280001 2025W19640729
+213306Pany Jennifer 02Reitsportzentrum Pany AUTR1D4 2102000102849 2500 2025W19891206
+161309Schiefer Viola 02Reit- und Fahrverein Tullnerfeld AUTRD1 JRY25100190 2025W20090621
+214752Marcharth Alice 02Gestt Weidenholz AUTRD2 2434012602747 4756 2025W19941201
+219584Brenner Hannah 02Reit- und Fahrverein Sonnberg AUTRD3 F1 2556011202722 2040 2025W19991026
+129314Lacsni Sabrina 02Reitsportverein Grbern AUTRD1 26570031 2025W19940324
+043615Rausch Nadja 02Reitclub Ober Grafendorf AUTR1D2 29370041 2025W19750526
+201327Ottenschlger Bettina 02K & K Pferdesport Mostviertel AUTR3D4 F2 2820002407448 3088 2025W19791124
+084226Koch Sophie 02Gestt Heinrichsberg AUTR1 28890047 2025W19880723
+603039Kager Sonja 02Reitverein Kromoser AUTR1D4 29290005 2025W19800908
+221822Eidher Jessica 02Reit-und Fahrverein Mhlfeld AUTR1D3 29820008 2025W19971024
+212098Wagner Stefanie 02Reitclub Hofbauer AUTR1D2 2706014507416 55165 2025W19920601
+210676Dotter Leopold 02Gestt Weidenholz AUTRD1 24340066 2025M19930410
+214179Riedl Melanie 02Reitclub St. Plten Hart AUTR2S4 F1 24140358 2025W1998030910159141
+910268Schngut Rebecca Luise 02Union Reit- und Fahrverein Siegersdorf AUTRD1 20750437 2025W19980524
+138803Ohnesorg Sandra 02Reitverein Unterrohrbach AUTR1D2 28550106 2025W19990813
+143013Johann Lara 02Team Unicornio AUTR1D2 Y21360035 2025W20041128
+208621Schabasser Lisa 02Union Reit- u. Fahrverein Wlbling AUTR1D2 2203036002786 6723 2025W19940720
+155821Kafka Julia 02Reitsportzentrum Pany AUTRD1 Y21020063 2025W20060616
+061384Enzinger Daniela 02Gestt Equitamus AUTRD4 28630001 2025W19790901
+169688Winkler Bianca 02Gestt Weidenholz AUTRD1 JRY24340112 2025W20081026
+119798Bruckner Viktoria 02Reitverein Mein Ponyclub AUTR1D2 F1 24080003 2025W19990811
+061693Pchhacker Sara 02RC Scheibbs AUTR2D4 23110126 2025W1980112110143955
+131920Vornwagner Marie Christine 02Reitclub Hofbauer AUTRD1 27060344 2025W19990911
+*
+BBEWERBE
+ 010Dressurprfung A CDN-B 20250705001
+ 020Dressurprfung L CDN-B 20250705002
+ 030Dressurpferdeprfung A CDN-B 20250705003
+ 040Fhrzgelklasse CDN-B 20250705004
+ 050Dressurreiterbewerb lzf CDN-B 20250705005
+ 060Dressurprfung LM CDN-B 20250705006
+ 070Lizenzprfungsaufgabe LP CDN-B 20250705007
+ 080Dressurprfung FEI Junioren Vorber.M CDN-B 20250705008
+ 090Dressurprfung A CDN-B 20250706009
+ 100Dressurprfung L CDN-B 20250706010
+ 110Dressurpferdeprfung A CDN-B 20250706011
+ 120First Ridden CDN-B 20250706012
+ 130Dressurprfung LM CDN-B 20250706013
+ 140Lizenzprfungsaufgabe LP CDN-B 20250706014
+ 150Dressurprfung FEI Junioren MannschM CDN-B 20250706015
+*
+PPFERDELISTE
+0474Zimsalabim 11 000010519W2019Dunkelfuchs Oldenburger 73612025Pewny Sophia Zoom
+4F01Bobby Brown 18 000010611W2011Brauner Oldenburger 24142025Prammer Susanne Belstaff
+2266Fancy Francy SB 000018019S2019Schwarzbraun Deutsches Sport 28212025Sutter Barbara Don Martillo
+4048For Me HS 000019219S2019Brauner Hannoveraner 31592025Sachers Hanna Frsten-Look
+3116Old Avenues Camelot 000022418H2018Rappe Welsh Cob 25872025Doppler Jennifer Westerhuis Cupido
+3586Don Carlos BL 000023118W2018Dunkelbraun Oldenburger 25332025Lumper Bettina Don Martillo
+4X00Valentina T 000038214S2014Brauner WB 29592025Tanzer Markus
+2066Smokie B 000042716W2016Schimmel WB 30442025Hofer Nina
+1H69Greys Gentle Giant 000063514W2014Brauner Oldenburger 73612025Pewny Sophia Grey Flanell
+0097Van Primero 000065615W2015Fuchs Oldenburger 28702025Wegrostek Eva Van Vivaldi
+2127Lord Henrico 000067412W2012Brauner Baden-Wrttemb. 26342025Lumper Bettina Lord Leopold
+4K53High Society 3 000072112S2012Dunkelbraun KWPN 26222025Sedlmaier Theresa Apache
+5649Tis Alcapone Z 000075313W2013Brauner Zangersheide 25332025Gluszko Ludwig T's Voltaire
+4P17Le Rouge 2 000079112S2012Fuchs Westfale 28002025Mayerhofer Natalie Jazzmate
+H553Alpensterns Cinderella 000081511S2011Goldfuchs Haflinger 28122025Gritsch Heliane Nil - E
+4S04Bontissimo 000083212W2012Brauner Hannoveraner 28702025Wegrostek Eva Belissimo M
+3C55Paul 18 000089317W2017Schimmel WB 24212025Marcharth Nina Pi Quatorze
+P927Flashback 6 000090807W2007Falbe Deutsches Pony 108NI08 61542025Herbst Eleonora Frankenhoeh's Kir Royal
+5246Diadoro WH 000095512W2012Schwarzbraun Holsteiner 24342025Hofbauer Victoria Diarado
+2R94Daytona 68 000097013S2013Rappe Hannoveraner 28002025Hochgerner Christina Don Index
+HC49Mahady 000107509W2009Fuchs Haflinger 25792025Bugl Marina Maifrst (0% ox)
+1488Tamanga 000140411S2011Brauner Westfale 28122025Hackl Valentina Tamango
+4C05Good Boy 7 000142414W2014Brauner WB 27062025Grohs Sebastian
+P583Glitzerstern 000148910S2010Palomino Deutsches Pony 27722025Aigner Silvia Golden Atreju
+2280New Gift ST 000150310S2010Brauner XX 64182025Stritzinger Michaela 4939 En Passant
+3567Christian Grey 000163011W2011Schimmel Hannoveraner 28002025Gfatter Christine Christ
+1G69Lady Danbury 000178511S2011Brauner Holsteiner 21022025ZIJL Carolina Numero Uno
+3H48Jamero 000192610W2010Brauner Andalusier-PRE 28202025Mayrhofer Josef Cadenas AG
+P732Thomas 2 000258808W2008Brauner Pony 24142025Holzapfel Celine
+2K11First Hazel 000360609S2009Brauner Oldenburger 27062025Vieghofer Birgit Hoftanz
+2220Fraternite 000563309S2009Dunkelbraun Hannoveraner 22292025Schefbnker Tina-Claudia Fidertanz
+4A97Kleines B 000727305S2005Dunkelbraun Hannoveraner 30442025Hofer Nina Sandro Hit
+6303Kenya 000912301S2001Brauner Ung. HB 23282025Spiegelfeld Ludmilla Ravallo
+2Y78Alvaro 12 100006020W2020Fuchs WB 21022025Kaufmann-Tuchny Barbara
+3G79Alexander Der Groe 3 100021918H2018Schimmel WB 21022025Pany Jennifer
+0423Crome in Oakley 100051719W2019Palomino Quarter Horse 25102025Schiefer Viola
+4654Inocencio De Salud 100051720W2020Grauschimmel Andalusier-PRE 24342025Marcharth Alice Ingenioso LVI
+2T39Grace Kelly 3 100484707S2007Dunkelbraun WB 25562025Pfosser Valerie Charmeur
+AA47Bassadora Bambina 121019513S2013Brauner sterr. WB 26572025Lacsni Sabrina Dante Weltino
+AA46Toscana K 121020114S2014Rappe sterr. WB 29372025Rausch Nadja Canaster
+AY81Aventure de bonne 121020414S2014Schimmel sterr. WB 28202025Ottenschlger Bettina Cantaro
+A179Frst Farbenfroh GH 121035515W2015Schecke sterr. WB 28892025Neumann-Grner Nina Finest
+AK89Henry K 121059808W2008Schwarzbraun sterr. WB 29292025Kager Sonja Hofrat
+AI29Red Ransom 121090910W2010Rotfuchs sterr. WB 29822025Eidher Jessica Royal Diamond
+AX64Special Edition K 121095611W2011Brauner sterr. WB 27062025Wagner Stefanie San Amour
+H157Neoptelemos 122062517W2017Lichtrotfuchs Haflinger 24342025Dotter Leopold Nottings Golden
+H396Michael Angelo 122065217W2017Lichtlehmfuchs Haflinger 24142025Kaiser Katharina Mahady
+AM85Wolke 7 W 131020415S2015Schwarzbraun sterr. WB 20752025Schngut Rebecca Luise Digitalo W
+AG49Just a Boy 2 141440919W2019Brauner sterr. WB 28552025Ohnesorg Sandra Just Wimphof
+AX29Alia Rosediamond 141948313S2013Fuchs sterr. WB 21362025Johann Lara Abanos
+H666Stradello W 142470609W2009Lichtfuchs Haflinger 22032025Schabasser Lisa Sternbild
+P952Sanja 146109109S2009Schwarzschecke Tinker 21022025Pany Jennifer
+A785Erle GSH 151153609S2009Brauner sterr. WB 22292025Wimmer Christine Danny Wilde
+AL41Moccaccino E 161005920W2020Brauner sterr. WB 28632025Enzinger Daniela Morricone
+AF76Honeymoon TBR 161051505S2005Rappe sterr. WB 24342025Winkler Bianca Davignon II
+HA83Maximus 15 172000109W2009Fuchs Haflinger 24082025Bruckner Tanja Walddorf
+A622Glennmorangie PP 210070619W2019Brauner sterr. WB 23112025Pchhacker Sara Grey Flanell
+HE40Flica 220095511S2011Lichtfuchs Haflinger 27062025Vornwagner Marie Christine Windsor
+AU65Coco VA 710070920S2020Brauner sterr. WB 25872025Doppler Jennifer Chubakko
+*
+KKARTEI
+0474Zimsalabim 11 148294Pewny Sophia 000250003,11 02500000000
+4F01Bobby Brown 18 058440Prammer Susanne 000250001,2,10 02500217792Mayerhofer Natalie
+2266Fancy Francy SB 204592Sutter Barbara 001050027,14 10500000000
+4048For Me HS 129318Sachers Hanna 001050021,9 10500000000
+3116Old Avenues Camelot 208404Doppler Jennifer 000250008,15 02500000000
+3586Don Carlos BL 224340Gluszko Ludwig 000250007,8,15 02500000000
+4X00Valentina T 204809Binder Anna 400250008,15 02500000000
+2066Smokie B 187145Hofer Nina 001050026 10500000000
+1H69Greys Gentle Giant 148294Pewny Sophia 000250008,15 02500000000
+0097Van Primero 002230Wegrostek Eva 001850028,15 18500000000
+2127Lord Henrico 224941Lumper Bettina 000250006,7,13,14 02500000000
+4K53High Society 3 146734Sedlmaier Theresa 000250009,10 02500000000
+5649Tis Alcapone Z 108064Pchhacker Manuel 000250002,10 02500000000
+4P17Le Rouge 2 217792Mayerhofer Natalie 000250008 02500000000
+H553Alpensterns Cinderella 225943Gritsch Heliane 000250001,9 02500000000
+4S04Bontissimo 002230Wegrostek Eva 001050028 10500000000
+3C55Paul 18 214757Marcharth Nina 000250009 02500000000
+P927Flashback 6 167278Herbst Eleonora 000250007,8,14,15 02500000000
+5246Diadoro WH 129150Hofbauer Victoria 000250001,9 02500000000
+2R94Daytona 68 211010Hochgerner Christina 000250008,15 02500000000
+HC49Mahady 219208Bugl Marina 000250006,13 02500000000
+1488Tamanga 213821Hackl Valentina 0002500010 02500000000
+4C05Good Boy 7 190185Grohs Sebastian 000250009 02500000000
+P583Glitzerstern 179633Aigner Jona 000250008,15 02500000000
+2280New Gift ST 121145Stritzinger Michaela 001050027,14 10500000000
+3567Christian Grey 617832Gfatter Christine 000250001,2,9,10 02500000000
+1G69Lady Danbury 197388ZIJL Carolina 001050021,2,9,10 10500000000
+3H48Jamero 122648Handl Alina 000250001,9 02500000000
+P732Thomas 2 140883Holzapfel Celine 000250001,2,9,10 02500000000
+2K11First Hazel 040563Vieghofer Birgit 000250008,15 02500000000
+2220Fraternite 215810Schoder Eva Maria 0002500015 02500000000
+4A97Kleines B 187145Hofer Nina 001050021 10500000000
+6303Kenya 065551Spiegelfeld Ludmilla 001050021,9 10500000000
+2Y78Alvaro 12 197388ZIJL Carolina 001050021,3,9,11 10500000000
+3G79Alexander Der Groe 3 213306Pany Jennifer 001850026,13 18500000000
+0423Crome in Oakley 161309Schiefer Viola 000250001,2,9,10 02500000000
+4654Inocencio De Salud 214752Marcharth Alice 000250003,11 02500000000
+2T39Grace Kelly 3 219584Brenner Hannah 000250008 02500000000
+AA47Bassadora Bambina 129314Lacsni Sabrina 000250009 02500000000
+AA46Toscana K 043615Rausch Nadja 001050026,13 10500000000
+AY81Aventure de bonne 201327Ottenschlger Bettina 000250006 02500000000
+A179Frst Farbenfroh GH 084226Koch Sophie 000250001,2 02500000000
+AK89Henry K 603039Kager Sonja 000250008,15 02500000000
+AI29Red Ransom 221822Eidher Jessica 000250007,8,14,15 02500000000
+AX64Special Edition K 212098Wagner Stefanie 000250006,13 02500000000
+H157Neoptelemos 210676Dotter Leopold 000250001,9 02500000000
+H396Michael Angelo 214179Riedl Melanie 000250001,2,9,10 02500000000
+AM85Wolke 7 W 910268Schngut Rebecca Luise 001050021,9 10500000000
+AG49Just a Boy 2 138803Ohnesorg Sandra 000250001,3,9,11 02500000000
+AX29Alia Rosediamond 143013Johann Lara 000250006,13 02500000000
+H666Stradello W 208621Schabasser Lisa 000250002,6 02500000000
+P952Sanja 155821Kafka Julia 001050021,9 10500000000
+A785Erle GSH 215810Schoder Eva Maria 0002500015 02500000000
+AL41Moccaccino E 061384Enzinger Daniela 000250001,3,9,11 02500000000
+AF76Honeymoon TBR 169688Winkler Bianca 000250001,10 02500000000
+HA83Maximus 15 119798Bruckner Viktoria 000250007,14 02500000000
+A622Glennmorangie PP 061693Pchhacker Sara 001050023 10500000000
+HE40Flica 131920Vornwagner Marie Christine 000250001 02500000000
+AU65Coco VA 208404Doppler Jennifer 0002500011 02500000000
\ No newline at end of file