GeoGraSim V2 — Entwurfsdokument

Lebendes Doku-File für V2-Entwicklung. Liegt in .dontDeploy/entwurf.html — nicht im Deploy, nicht im V1-Verzeichnis. Letzte Änderung: 2026-06-08.

📂 Dokumente: entwurf.html (Architektur / Policies / IA / Change-Log) · review.html (Modul-Reviews — Basis für die Überarbeitung) · entwurfswerkzeug/ (Legacy + Lösch-Kandidaten)

Info / Fakt Erledigt TODO Offene Frage

A · Rollen und Zugangsdaten (V1-Bestand)

A.1 — System-Admin (mit 2-Faktor-Auth)

A.1.1Account existiert in V1-Tabelle admin_users
FeldWert
id1
usernameThomas
email_2fa (PIN-Empfänger)thomas.schroffenegger@ph-vorarlberg.ac.at
Passwortnur dir bekannt (in DB nur als Bcrypt-Hash)
A.1.2Login-URL Admin (V1, unverändert)
http://localhost/geograsim/App/admin.html

2FA-Flow: Username + Passwort → PIN per E-Mail an oben genannte Adresse → 4-stelliger PIN eintippen → Admin-Session aktiv.

A.1.3Lokales Admin-Passwort
UsernameThomas
Passwort (lokal)fnahc

Original-Hash aus Backup wiederhergestellt. Passwort war auch vorher schon „fnahc" — nicht von Atlas verändert.

A.1.4Lokales 2FA blockiert — PHPMailer fehlt
V1-Admin-Login crashed lokal beim Mailversand (PHPMailer-Lib fehlt → kein composer install in App/). Folge: Login-Flow stoppt vor der PIN-Eingabe. Lokal nicht testbar ohne Eingriff in V1 oder Bypass.

Atlas hatte einen Bypass gebaut, wurde wegen V1-Workflow-Eingriff wieder entfernt.

Frage an Thomas: Wie wollen wir hier weiter?

A.2 — Lehrperson

A.2.1Test-Lehrer-Account auswählen oder anlegen
V1 hat lokal mehrere Lehrer-Accounts (z.B. testlehrer / test@geograsim.at, jakob / jakob@geograsim.at). Username ist die Mail-Adresse beim Login.

Atlas wartet auf deine Vorgabe: welcher Account, oder soll ich einen neuen v2demo-Lehrer anlegen mit bekanntem Passwort?

A.3 — Schüler*innen (2 Accounts)

A.3.1Zwei Test-Schüler*innen auswählen
Lokal sind z.B. in der Test-Klasse (JoinCode TEST01) die Schüler*innen anna, ben, clara. Username ist nur der Name, plus Passwort. Klassencode nur als Disambiguator, wenn Username doppelt.

Atlas wartet auf deine Vorgabe: welche zwei, oder soll ich neu anlegen?

B · Policies und Konventionen

B.1V1 wird nicht angefasst (außer Bugfix)
Seit 2026-05-04 produktiv. V2 läuft in eigenem Pfad. Stable-Switch erst wenn alles fertig.
B.2Sprache: „Lehrperson", nicht „Lehrkraft" · keine Spielsprache
Bildungstheoretisch (Wygotski): Lernarbeit statt Spiel. Lehrperson, Schüler*in, Simulation, Bearbeiter*in.
B.3API-Keys nur lokal, niemals auf Server
DALL-E / ElevenLabs API-Keys liegen in v2-platform/.env.local (gitignored). Assets werden VOR Deploy generiert. Atlas ist einziger Akteur.
B.4Barrierefreiheit WCAG 2.1 AA Pflicht ab Tag 1
High-Contrast (hell + dunkel), Reduced Motion, Keyboard-Navigation, ARIA, Easy-Sprache. Pro Modul im Konformitäts-Check verpflichtend.

C · System-Architektur (Status quo)

C.1V1-Hauptseite
http://localhost/geograsim/App/
C.2V1-Admin-Board
http://localhost/geograsim/App/admin.html (Login mit Thomas / 2FA)
C.3V2-Plattform-Ordner
c:\xampp\htdocs\geograsim\v2-platform\ (alles lokal, kein Deploy)
C.4V2-Spec
c:\xampp\htdocs\geograsim\v2-modules\_spec\ — v1.0-stable, 9 Files

N · Sitemap & Navigation

N.0Problem-Befund
Aktuell gibt es drei verschiedene Header-Varianten über die Seiten verteilt, plus 8 Seiten ganz ohne Header. Folge: wer von der Startseite auf ueber.html klickt, verliert die Hauptnav und kommt nur über Browser-Zurück wieder raus. Ziel: einheitliche Header-Konsistenz im öffentlichen Bereich, klarer visueller Schnitt zu Login-/Admin-Bereich.

N.1 — Vollständige Sitemap (Stand 2026-05-28)

N.1.0Grafische Informationsarchitektur — ausgehend von der Landingpage

Top-Down-Übersicht: vier Stränge zweigen von der Landingpage ab. Die Tabellen in N.1.1–N.1.7 sind die Datei-Inventur dazu, dies hier ist die Navigations-Hierarchie.

Übersicht (Big Picture)

                            ┌─────────────────┐
                            │   LANDINGPAGE   │  index.html
                            └────────┬────────┘
                                     │
   ┌─────────────┬───────────────────┼──────────────────┬──────────────┐
   ▼             ▼                   ▼                  ▼              ▼
ÖFFENTLICH   SIMULATIONEN        ANMELDEN          APP-STRANG      ADMIN-WELT
(Info &     (per Sim-Card     (Brücke)            ▲              (separat,
 Marketing)   anspielbar)        login.html         │ nach Login    eigener
                                     │              │               2FA-Login)
                                     └──────────────┘
                                                ┌──────┴──────┐
                                                ▼             ▼
                                          LEHRPERSON      SCHÜLER:IN
                                          teacher.html    schueler.html

Stamm-Hierarchie mit Page-IDs (jeder Strang aufgeklappt)

ID-Schema: [P-..] Public · [M-..] Modul/Sim · [S-..] Schüler*in · [T-..] Lehrperson · [A-..] Admin. Sub-Tabs erhalten Punkt-Suffix (z.B. [A-04.3]).

LANDINGPAGE                                   [P-01]  index.html                            ●NAV: Logo (überall)
│
├─ 1. ÖFFENTLICH · MARKETING & INFO  (vor Login, jeder erreichbar)
│   │
│   ├─ Handbuch (inkl. „Über GeoGraSim")      [P-02]  handbuch.html                         ●NAV: Header
│   ├─ Lehrplan-Bezug                         [P-03]  /lehrplan                             ●NAV: Header
│   ├─ Glossar                                [P-04]  /glossar                              ●NAV: Header
│   │   └─ Mindmap (Begriffs-Querverweise)    [P-05]  /mindmap
│   ├─ Forschung & Literatur
│   │   ├─ Forschung Index                    [P-06]  forschung/index.html                  ●NAV: Header
│   │   ├─ Fachartikel GW-Didaktik            [P-07]  forschung/geografie-didaktik.html
│   │   ├─ Fachartikel Simulationen           [P-08]  forschung/lernen-durch-simulation.html
│   │   ├─ Literatur GW-Didaktik              [P-09]  forschung/quellen-geografie.html
│   │   ├─ Literatur Simulation               [P-10]  forschung/quellen-simulation.html
│   │   ├─ Präsentation GW-Didaktik           [P-11]  forschung/presentation-geografie/   [Footer-Link offen]
│   │   └─ Präsentation Simulation            [P-12]  forschung/presentation-simulation/  [Footer-Link offen]
│   ├─ Kontakt                                [P-13]  kontakt.html                          ●NAV: Footer
│   ├─ Marktplatz-Einreichung [später auth]   [P-18]  marktplatz-einreichung.html
│   └─ Footer-Pflicht
│       ├─ Impressum                          [P-14]  impressum.html                        ●NAV: Footer
│       ├─ Datenschutz                        [P-15]  datenschutz.html                      ●NAV: Footer
│       └─ Barrierefreiheit                   [P-16]  barrierefreiheit.html                 ●NAV: Footer
│
├─ 2. SIMULATIONEN  (von Landingpage UND aus Cockpits anspielbar)
│   ├─ Klimasimulator 2D                      [M-01]  /klima-2d
│   ├─ Klimasimulator 3D                      [M-02]  /klima-3d
│   ├─ Heli                                   [M-03]  /heli-game
│   ├─ Fluss                                  [M-04]  /fluss
│   ├─ Logistik                               [M-05]  /logistik
│   ├─ Sonnensystem                           [M-06]  /sonnensystem
│   ├─ Busfahrt                               [M-07]  /busfahrt
│   ├─ Farmer                                 [M-08]  /farmer
│   ├─ Energiemanager (β)                     [M-09]  /energiemanager
│   ├─ Entscheidungstag (β)                   [M-10]  /entscheidungstag
│   └─ Staustufen (pausiert, Pivot → M-09)    [M-11]  /staustufen
│      (Sims selbst nicht in Nav — Sektion „Simulationen" auf Landingpage als Anchor #sims)
│
├─ 3. ANMELDEN                                [P-17]  login.html  → Brücke in die App      ●NAV: Header-Button
│   │
│   │  (Nach Login öffnet sich der jeweilige App-Strang — keine direkten Landingpage-Links)
│   │
│   ├──▶ APP-STRANG · LEHRPERSON-COCKPIT      [T-00]  teacher.html        (Detail siehe unten — Topbar nach Lehrperson-Login)
│   │
│   └──▶ APP-STRANG · SCHÜLER:IN-COCKPIT      [S-00]  schueler.html       (Detail siehe unten — Topbar nach Schüler-Login)
│
└─ 4. ADMIN-WELT                              [A-00]  admin.html (2FA)    nicht von Landingpage verlinkt — nur direkter URL-Aufruf / Bookmark

Detail: Schüler-Strang

SCHÜLER:IN-COCKPIT                            [S-00]  schueler.html                         ●NAV: Cockpit-Topbar Logo
│
├─ Topbar  (überall in Schüler-Sicht identisch, siehe profil.html)
│   ├─ Logo                  →  Cockpit       [S-00]
│   ├─ User-Pill (Avatar+Name) →  Profil      [S-04]
│   └─ Abmelden               →  Landingpage  [P-01]
│
├─ Tab „Meine Module"                         [S-01]
│   ├─ Modul-Cards (von Lehrperson freigegeben)
│   │   ├─ ▶ Starten         →  Sim          [M-..]
│   │   ├─ 📖 Infos          →  Modul-Info    [S-05]
│   │   └─ 📚 Glossar        →  Glossar-Filter [S-06]
│   └─ Divider „Kann durch die Lehrperson freigegeben werden"
│       └─ gesperrte Modul-Cards (ohne Start-Button)
│       coming_soon-Module werden NICHT angezeigt (Schüler-Sicht filtert sie raus)
│
├─ Tab „Meine Erfolge"                        [S-02]
│   ├─ Übersicht (Plays / XP / beste Sterne)
│   ├─ Modul-Verlauf
│   └─ Badges
│
└─ Tab „Profil" (inline-Vorschau)             [S-03]
    ├─ Avatar (klick)        →  Profil       [S-04]
    └─ „Profil bearbeiten"   →  Profil       [S-04]

PROFIL (Schüler-Sicht)                        [S-04]  profil.html                           ●NAV: Cockpit-Topbar User-Pill
├─ Topbar identisch zu [S-00] (Logo→Cockpit, User-Pill→Profil, Abmelden)
├─ Avatar-Picker (3 Gruppen: Geo-Welt, Cool & Lustig, Tier-Begleiter)
└─ Konto-Info (Anzeigename, Benutzername, Klasse, Klassencode, Dabei seit)

MODUL-INFO-SEITE                              [S-05]  modul-<id>   (PHP-Wrapper)
GLOSSAR (modul-gefiltert)                     [S-06]  /glossar?module=<id>

Detail: Lehrer-Strang

LEHRPERSON-COCKPIT                            [T-00]  teacher.html                          ●NAV: Cockpit-Topbar Logo
│
├─ Topbar (App-Topbar, eigener Look)
│   ├─ Logo / Home           →  Cockpit       [T-00]
│   ├─ Klassen-Dropdown
│   ├─ Profil-Link           →  Profil        [T-08]
│   └─ Abmelden              →  Landingpage   [P-01]
│
├─ Tab „Übersicht"                            [T-01]
│   └─ Resultate-Matrix, Aktivitäts-Timeline, Auftrags-Liste, Schüler*innen-Übersicht
│
├─ Tab „Modulfreigabe"                        [T-02]
│   └─ Freigabe-Matrix pro Klasse / pro Schüler*in
│       └─ ▶ Sim starten (Modal)              [T-17]
│
├─ Tab „Klasse"                               [T-03]
│   ├─ Schüler*innen-Liste
│   ├─ + Schüler*in anlegen (Modal)           [T-10]
│   ├─ Batch anlegen (Modal)                  [T-11]
│   ├─ CSV-Import (Modal)                     [T-12]
│   ├─ Schüler*in bearbeiten (Modal)          [T-14]
│   └─ PIN-Liste drucken (Modal)              [T-13]
│       └─ PDF via /api/tickets?class_id=<id>
│
├─ Tab „Live"                                 [T-04]
│   ├─ Echtzeit-Sitzungsmonitor
│   └─ Spectator-Modal (pollt /api/live)      [T-16]
│
├─ Tab „Ergebnisse"                           [T-05]
│   ├─ Modul-Performance-Matrix
│   ├─ Aktivitäts-Heatmap
│   └─ Modul-Detail-Drilldown (Modal)         [T-15]
│
├─ Tab „Lizenzen"                             [T-06]
│   ├─ Lizenz-Übersicht der Klasse
│   └─ Code einlösen (Modal)                  [T-18]
│
└─ Tab „Klassen"                              [T-07]
    └─ Klasse anlegen / umbenennen / löschen (Modal)  [T-09]

PROFIL (Lehrer-Sicht)                         [T-08]  profil.html                           ●NAV: Cockpit-Topbar Profil-Link
├─ Topbar identisch zur App-Topbar
├─ Avatar-Picker (30 Bild-Avatare + Emoji-Fallback)
└─ Konto-Info (Anzeigename, Schule, …)

EXTERNE QUERVERWEISE aus dem Lehrer-Cockpit (target=_blank)
├─ Modul-Info-Seite                           [T-19]  modul-<id>
├─ Glossar gefiltert                          [T-20]  /glossar?module=<id>
└─ Lehrplan gefiltert                         [T-21]  /lehrplan?module=<id>

Detail: Admin-Welt

ADMIN-LOGIN                                   [A-00]  admin.html
├─ Schritt 1: Username + Passwort
├─ Schritt 2: 4-stelliger PIN per E-Mail (2FA)
└─ (nach Auth) →  [A-03] oder [A-01] (je nach Voranmeldung)

ADMIN-NAV (auf jeder Admin-Seite identisch)
├─ Logo „Admin"
├─ Reiter: Sims [A-01] · Module [A-02] · Lizenzen [A-03] · Styleguide [A-04]
└─ Logout                 →  Admin-Login      [A-00]

SIMS & WAYPOINTS                              [A-01]  admin-levels.html                     ●NAV: Admin-Topbar
├─ Tab „Simulationen"                         [A-01.1]
│   └─ Sim-Grid (~9 Module)
│       └─ Sim-Detail-Panel (inline, unter dem Grid)
│           └─ 3 Stufen (Leicht/Mittel/Schwer) mit Param-Slidern
├─ Tab „Waypoints"                            [A-01.2]
│   ├─ Tabelle (Region- + Typ-Filter)
│   ├─ Waypoint bearbeiten (Modal, Map-Editor)
│   └─ Neuer Waypoint (Click-to-Place)
└─ externer Link: Heli-Map  →  /heli  (target=_blank)

MODULE                                        [A-02]  admin-modules.html                    ●NAV: Admin-Topbar
├─ Modul-Grid + Status-Filter (Alle / Aktiv / Beta / Geplant / Archiv)
└─ Modul bearbeiten (Modal)                   [A-02.1]
    └─ Emoji-Picker, Image-Upload, Dauer/Alter, play_url, page_url

LIZENZEN                                      [A-03]  admin-licenses.html                   ●NAV: Admin-Topbar
├─ Stats (Total / Frei / Vergeben)
├─ Code-Generator
└─ Lizenz-Tabelle mit Status-Filter + Paginierung

STYLEGUIDE                                    [A-04]  admin-styleguide.html                 ●NAV: Admin-Topbar
├─ [A-04.1]  Bildstil (DALL-E-Prompt-Template + Specs)
├─ [A-04.2]  Bild-Farbpalette (5 Swatches)
├─ [A-04.3]  UI-Farbtokens (Fjord / Moss / Coral+Orange / Sand+Text)
├─ [A-04.4]  Layout & Spacing (Gap / Radius / Schatten)
├─ [A-04.5]  Typografie (Font-Stack + Size-Scale)
├─ [A-04.6]  Bildformate (Karten / Glossar / Splash / Avatare)
├─ [A-04.7]  iPad-Patterns (Touch-Min, Modal-Regeln)
└─ [A-04.8]  Sprache (keine Spielsprache; „Lehrperson" statt „Lehrkraft")

Konsequenzen für die Header-Strategie

Aus den vier Strängen folgen drei Header-Klassen (Detail in N.3.1):

StrangHeader-KlasseInhalt
Öffentlich + Simulationen + AnmeldenHauptnav (wie index.html heute)Logo · Simulationen · Lehrperson · Handbuch · Anmelden/Profil
App-Strang (Cockpits)App-TopbarLogo · Klassen-/Modul-Auswahl · Profil · Abmelden
Admin-WeltAdmin-TopbarLogo „Admin" · Reiter (Sims/Module/Lizenzen/Styleguide) · Logout

App-Strang im Fokus

Der App-Strang beginnt nach dem Login und umfasst alles, was eine angemeldete Person tut: Lehrperson plant Klassen + freigegebene Module + sieht Live + wertet aus; Schüler*in spielt die für ihre Klasse freigegebenen Sims. Die Sims selbst (Strang 2) sind nicht Teil der App-Topbar — sie laufen vollbild in der eigenen Wrapper-Welt unter App/pages/, mit modulinternem Header. Aus den Cockpits werden sie über deren eigene Modul-Auswahl gestartet, aus der Landingpage über die Sim-Cards.

Legende: ── direkter Link · ──▶ Rollen-/Bereichswechsel · /pfad öffentliche URL · (β) Beta · […] offene Punkte/Pendenzen · ●NAV: Ort = Seite gehört als eigener Eintrag in eine Navigation; Ort sagt wo (z.B. Header, Footer, Header-Button, Logo, Cockpit-Topbar, Admin-Topbar) · ●LEG? = vermutlich Legacy / Aufräum-Kandidat (siehe N.1.7 / N.1.8)

Wichtig: Die App-Stränge [T-00]/[S-00] sowie die Admin-Welt [A-00] werden nicht direkt von der Landingpage verlinkt — sie ergeben sich aus dem Login (Lehrperson, Schüler*in, Admin). Der einzige Public-Nav-Eintrag, der dort hineinführt, ist [P-17] Anmelden als Header-Button. Der Admin-Bereich ist nur über direkten URL-Aufruf / Bookmark erreichbar — bewusst keine Verlinkung.

N.1.1Öffentlicher Bereich (vor Login, jeder darf hier sein)
SeiteURLHeaderKommentar
Landingindex.html✓ HauptnavReferenz
Überueber.html△ eigene topbarHeader-Bruch
Handbuchhandbuch.html✗ kein HeaderHeader-Bruch
Kontaktkontakt.html△ eigene topbarHeader-Bruch
Impressumimpressum.html△ eigene topbarHeader-Bruch
Datenschutzdatenschutz.html△ eigene topbarHeader-Bruch
Barrierefreiheitbarrierefreiheit.html△ eigene topbarHeader-Bruch
Marktplatz-Einreichungmarktplatz-einreichung.html✗ kein HeaderSoll laut Memory später nicht-öffentlich werden (Lehrkraft-Auth-pflichtig)
N.1.2Forschungs-Artikel (öffentlich erreichbar, aktuell aus Footer)
SeiteURLKommentar
Fachartikel: GW-Didaktikforschung/geografie-didaktik.html2,1 MB Inhaltsseite
Fachartikel: Simulationen im Unterrichtforschung/lernen-durch-simulation.html2,4 MB
Literatur: GW-Didaktikforschung/quellen-geografie.html
Literatur: Simulationforschung/quellen-simulation.html
Präsentation: GW-Didaktikforschung/presentation-geografie/Im Footer derzeit nicht verlinkt
Präsentation: Simulationforschung/presentation-simulation/Im Footer derzeit nicht verlinkt
N.1.3Login & geschützter Bereich
SeiteURLHeaderRolle
Login Lehrperson/Schüler*inlogin.html✗ kein Headerjeder
Lehrer-Cockpitteacher.html△ eigene topbarLehrperson
Schüler-Cockpitschueler.html△ eigene topbarSchüler*in
Profilprofil.html△ eigene topbarLehrperson
Dashboard (alt?)dashboard.html✓ HauptnavStatus klären
N.1.4Admin-Bereich (separate Welt, eigener Login mit 2FA)
SeiteURLHeader
Admin-Loginadmin.html✗ kein Header (Card-Login)
Admin: Simulationen + Waypointsadmin-levels.html△ eigene Admin-Topbar
Admin: Moduleadmin-modules.html△ eigene Admin-Topbar
Admin: Lizenzenadmin-licenses.html△ eigene Admin-Topbar
Admin: Styleguideadmin-styleguide.html△ eigene Admin-Topbar

Admin-Bereich ist bewusst von der Hauptnav getrennt — das ist richtig. Innerhalb des Admin-Bereichs ist die Topbar konsistent.

N.1.5Simulationen (über PHP-Wrapper unter App/pages/ aufgerufen)
Wrapper-URL z.B. geograsim.at/heli-game → lädt App/sims/heli/game.html in eingebettetem Modus.
SlugSim-OrdnerStatus
heliApp/sims/heli/live
klima-2d / klima-3dApp/sims/klima/live
flussApp/sims/fluss/live
logistikApp/sims/logistik/live
sonnensystemApp/sims/sonnensystem/live
busfahrtApp/sims/busfahrt/live
farmerApp/sims/farmer/live
energiemanagerApp/sims/energiemanager/beta
entscheidungstagApp/sims/entscheidungstag/beta
staustufenApp/sims/staustufen/pausiert (Pivot zu Energiemanager)
N.1.6Plattform-Services (Glossar, Lehrplan, Mindmap)
ServicePfad
GlossarApp/pages/glossar.php → URL /glossar
Mindmap (Glossar-Querverweise)App/pages/mindmap.php
LehrplanApp/pages/lehrplan.php
N.1.7Aufräum-Kandidaten in App/ (alte Top-Level-HTMLs) ●LEG?
Diese Files liegen direkt in App/ und sehen aus wie Legacy-Prototypen oder alte Standalone-Sims. Alle ●LEG? = Verdacht auf Lösch-Kandidat — bitte Thomas-Entscheidung:
DateiVerdacht
●LEG? energiemix.htmlalte Standalone-Sim?
●LEG? erdbeben.htmlalte Standalone-Sim?
●LEG? fluss.htmlalte Standalone-Sim? (echte Sim liegt in App/sims/fluss/)
●LEG? game.html / game-3d.htmlGenerische Wrapper? oder Legacy?
●LEG? heli.htmlVermutlich alte Standalone (echte Sim in App/sims/heli/)
●LEG? lieferketten.htmlalter Prototyp?
●LEG? regenwald.htmlalter Prototyp?
●LEG? sim.htmlGenerischer Sim-Wrapper?
●LEG? stadt.html / stadt-editor.htmlalte Sim?
●LEG? stilauswahl.html?
●LEG? tile-test.htmlMap-Test, sicher dev-only
●LEG? dashboard.htmlAlter Lehrer-Dashboard? (heute ist es teacher.html)

Atlas kann diese nicht von sich aus löschen — bitte Thomas prüfen welche tatsächlich noch verlinkt/genutzt sind.

N.1.8Weitere Legacy-Kandidaten außerhalb App/ ●LEG?
Thomas-Hinweis (Beispiel file:///C:/xampp/htdocs/geograsim/index.html) — neben App/ liegen weitere alte Verzeichnisse/Dateien im Repo-Root:
Pfad (relativ zum Repo-Root)Inhalt / Verdacht
●LEG? /index.html„Projektübersicht"-Seite im Repo-Root — vermutlich Vorgänger der heutigen Landingpage App/index.html. Wird vom Apache-Wrapper nicht ausgeliefert, könnte aber Verwirrung stiften.
●LEG? App/dist/*Alte Build-Output-HTMLs (dashboard, energiemix, erdbeben (1), game, game-3d, index (1), lieferketten, regenwald, sim, stilauswahl) — sieht nach altem Vite/Webpack-Build aus.
●LEG? didaktik_geografie/Eigenständige Mini-Site (index, syllabus, quellen, handbuch, presentation/, standalone.html). Inhalte vermutlich in App/forschung/geografie-didaktik.html und App/forschung/presentation-geografie/ überführt.
●LEG? didaktik_simulation/Eigenständige Mini-Site (analog zu didaktik_geografie). Inhalte vermutlich in App/forschung/lernen-durch-simulation.html und App/forschung/presentation-simulation/ überführt.
●LEG? Konzept/Planungsdokumente (lehrplan-gw.html, lehrplan-simulation-mapping.html, projekt-todos.html) — alte Arbeitsstände, vermutlich nicht mehr aktiv referenziert.

Atlas-Empfehlung: vor dem Löschen git log --diff-filter=A + Volltextsuche „/index.html" / „didaktik_" im aktiven Code (App/) prüfen. Konkrete Lösch-Freigabe bitte Thomas geben.

N.4 — Header- & Footer-Entwurf Landingpage (iPad-Referenz)

N.4.0iPad-Bildschirmgrößen an österreichischen Schulen
Schulen verteilen meist Standard-iPads (kein Pro). Die CSS-Pixel-Breite ist geräteunabhängig identisch — egal ob 10,2" oder 10,9".
ModellPhysischCSS LandscapeCSS PortraitSchul-Vorkommen
iPad 9 (2021, A13)10,2"1080 × 810810 × 1080häufigstes Schul-iPad
iPad 10 (2022, A14)10,9"1180 × 820820 × 1180neuere Klassensätze
iPad 7/8 (älter)10,2"1080 × 810810 × 1080Bestand
iPad mini 68,3"1133 × 744744 × 1133selten
iPad Pro 11"11"1194 × 834834 × 1194einzelne Schulen

Atlas-Referenz: Layout-Tests bei 1080 px Landscape als Worst-Case, bei 1180 px (Memory reference_ipad_referenz.md) als Komfort-Standard. Beides liegt deutlich unter unserer Desktop-Referenz (1440 px) — die Hauptnav muss bei 1080 px noch alle Items zeigen, ohne in den Hamburger-Modus zu kollabieren.

N.4.1Atlas-Empfehlung: Glossar bleibt Catcher, nicht im Header

Die NAV-markierten Public-Pages auf der Landingpage sind [P-02] Handbuch, [P-03] Lehrplan, [P-04] Glossar, [P-06] Forschung-Index, [P-13] Kontakt, [P-17] Anmelden (siehe N.1.0). Sechs davon hätten als Header-Eintrag Sinn — sieben sind technisch noch in 1080 px verträglich, kommunikativ aber dicht.

Vorschlag:

Lehrpersonen + Schüler*innen im Cockpit erreichen das Glossar weiterhin über ihre Modul-Cards (📚 Glossar pro Modul) — kein Verlust dort.

N.4.2Header-Variante A — alle NAV im Header (eng, aber passt)

7 Links + Logo + Anmelde-Button. Bei 1080 px CSS-Breite knapp passend (≈ 1060 px reine Inhaltsbreite), Wide-Layout für iPad 10.

▼ Live-Mockup bei 1080 px (Standard-iPad Landscape):

GG
GeoGraSim
Simulationen Lehrperson Lehrplan Glossar Forschung Handbuch Kontakt
Anmelden

Breitenbudget: Logo ≈ 150 · Links 7 × ≈ 90 · Gaps 8 × ≈ 18 · Anmelden ≈ 120 → ≈ 1044 px. Passt bei 1080 px mit 36 px Reserve.

N.4.3Header-Variante B — Glossar bleibt Catcher (Atlas-Empfehlung) ✓

6 Links + Logo + Anmelde-Button. Komfortabel bei 1080 px, viel Atmungsraum bei 1180 px (iPad 10).

▼ Live-Mockup bei 1080 px (Standard-iPad Landscape):

GG
GeoGraSim
Simulationen Lehrperson Lehrplan Forschung Handbuch Kontakt
Anmelden

Breitenbudget: Logo ≈ 150 · Links 6 × ≈ 90 · Gaps 7 × ≈ 22 · Anmelden ≈ 120 → ≈ 964 px. Bei 1080 px bleiben 116 px Atmungsraum — keine Drängelei.

▼ Glossar bleibt als großer Catcher-Pill direkt unter dem Hero-Titel (wie heute, mit dynamischer Zahl):

Geografie erleben. Nicht nur lesen.

📋 Lehrplan-Bezug 1. - 4. Klasse 📚 Glossar · 164 Begriffe — alle bebildert

Optional-Verstärkung: der Glossar-Pill bekommt eine orange-akzentuierte Border (wie oben skizziert) statt der Standard-Pill-Farbe, plus den Zusatz „alle bebildert". So sticht der Catcher-Effekt klar heraus.

N.4.4Footer-Vorschlag (zweizeilig, klassisch + Forschungs-Reihe)

Sekundäre NAV-Ziele unten — was im Header nicht passt oder hingehört (Pflicht-Links + Forschungs-Tiefe).

▼ Live-Mockup bei 1080 px:

GeoGraSim — Schroffenegger & Mößlang, 2026 · Handbuch · Lehrplan · Glossar · Kontakt · Impressum · Datenschutz · Barrierefreiheit

Forschung-Übersicht · Aktueller Forschungsstand GW-Didaktik · Literatur GW-Didaktik · Simulationen im Unterricht · Literatur Simulation

Zeile 1: Public-Hauptlinks + Pflicht-Links (Impressum / Datenschutz / Barrierefreiheit). Zeile 2 (kleiner): Forschungs-Tiefe als 5er-Reihe. Aktuell schon so umgesetzt — N.4.4 dokumentiert den Soll-Zustand.

N.4.5Entscheidung Thomas — Variante B umgesetzt ✓ (2026-05-28)
Thomas: „machen wir deine empfehlung". → Variante B umgesetzt: Konsistenz: Damit sind 2 von 7 öffentlichen Seiten (Landingpage + Handbuch) auf der neuen Hauptnav. Verbleibende N.3.2-Kandidaten: kontakt.html · impressum.html · datenschutz.html · barrierefreiheit.html · ueber.html (das jetzt Redirect ist, OK). Atlas wartet auf Thomas-Freigabe für diese Sammel-Migration (eigene Iteration).

N.5 — Lehrplan-Nav-Harmonisierung (Vorschlag)

N.5.0Befund — heutiger Stand

Thomas-Diagnose: „wir hängen jetzt immer noch an der navigation … wenn ich auf Lehrplan gehe, erscheint aber ein neues Menü … momentan werden alle möglichen Lehrplaninhalte aus anderen Ländern angezeigt, obwohl auf Österreich steht … auch redundanz: Landesauswahl oben im Dropdown, unten dann als Pill-Filter".

N.5.1Atlas-Konzept — zweistufige Nav: Standard oben + Kontext-Sub-Nav darunter

Thomas-Wunsch verstanden: die Standard-Menüleiste außerhalb (Simulationen · Lehrperson · Lehrplan · Forschung · Handbuch · Kontakt · Anmelden + Logo) bleibt überall identisch sichtbar. Darunter eine zweite Leiste, die kontextspezifisch ist — auf Lehrplan/Glossar/Simulationen mit „eine Ebene darunter"-Items (Lehrplan / Glossar / Simulationen als Geschwister-Tabs) + Country-Picker rechts.

Vorschlag-Architektur:

EbeneInhaltWo gleich?
1. Standard-HauptnavLogo · Simulationen · Lehrperson · Lehrplan · Forschung · Handbuch · Kontakt · AnmeldenÜberall im öffentlichen Bereich identisch (Landingpage + alle Subpages)
2. Kontext-Sub-Nav (nur auf „Erkundungs"-Seiten)Tab-Reihe (Lehrplan · Glossar · Simulationen, aktiver Tab markiert) + Country-Picker rechtsLehrplan, Glossar, Simulationen-Übersicht (gemeinsamer Tab-Cluster)
3. Filter-Pills (im Content)Thema + Typ (NICHT mehr Land — Land kommt aus dem Picker oben)Pro Seite spezifisch

▼ Mockup zwei-zeilige Nav für Lehrplan bei 1080 px:

GG
GeoGraSim
Simulationen Lehrperson Lehrplan Forschung Handbuch Kontakt
Anmelden
Erkunden 📋 Lehrplan 📚 Glossar 🎮 Simulationen
Land:
🇦🇹 Österreich ▾

Erste Zeile = Standard-Hauptnav (immer identisch). Zweite Zeile = Erkundungs-Tab-Cluster, der aktive Tab visuell hervorgehoben. Country-Picker wandert in diese zweite Zeile (rechts) — verschwindet aus dem Filter-Bereich darunter.

N.5.2Filter-Harmonisierung — Land-Chips raus, Pills nur noch Thema + Typ

Wenn der Country-Picker in der Sub-Nav-Leiste sitzt, ist die Land-Chip-Reihe darunter überflüssig. Atlas-Vorschlag für den Filter-Bereich im Content:

▼ Mockup Filter-Bereich (ohne Land-Reihe):

Anzeige: 🇦🇹 Österreich · 47 Anker passend zum Lehrplan AT + 18 fächerübergreifend
Thema Alle 8 Klima Raum Natur Gesellschaft
Typ Alle Fachbezug Fächerübergreifend Anderes Fach

Statt Land-Chip-Reihe: eine Ergebnis-Zeile oben („Anzeige: 🇦🇹 Österreich · 47 + 18 fächerübergreifend") macht transparent, was gerade gefiltert ist und warum fächerübergreifende Anker zusätzlich erscheinen. Land-Wechsel passiert ausschließlich über den Picker in der Sub-Nav.

N.5.3Anchor-Filter-Logik geklärt — Variante (a) Transparenz-Zeile + 🌐-Badge ✓ (2026-05-28)

Heutige Logik (lehrplan.php:685-697):

Folge fürs Erleben: User wählt AT, sieht aber Anker mit DE/CH/LI-Flagge oder ohne Flagge → wirkt wie „Filter greift nicht". Tatsächlich sind das fächerübergreifende Anker, die land-agnostisch gemeint sind.

Atlas-Empfehlung — drei Optionen, bitte Thomas wählen:

N.5.4Übertragung auf Glossar + Simulationen-Übersicht ✓ (2026-05-28)

Wenn Lehrplan / Glossar / Simulationen als geteilter Tab-Cluster funktionieren sollen (Thomas-Idee: „hier sind wir dann eine Ebene darunter — Lehrplan / Glossar / Simulationen"), müssen auch die anderen beiden den gleichen Sub-Nav-Stil bekommen:

Atlas-Frage an Thomas: Country-Picker auch auf Glossar + Simulationen anzeigen oder nur auf Lehrplan? Vorschlag: nur Lehrplan (dort ist Land-Filter inhaltlich relevant); Glossar + Simulationen bekommen die Tab-Reihe ohne Picker.

N.5.5Entscheidung Thomas — alle 3 nach Atlas-Empfehlung umgesetzt ✓ (2026-05-28)
Thomas: „überall deine Empfehlung … setzt alles um".
  1. Architektur N.5.1 — zweistufige Nav umgesetzt via PHP-Include (siehe L.35).
  2. Filter-Logik Variante (a) — Transparenz-Zeile oben + 🌐-Badge auf Universell-Anker.
  3. Übertragung — Sub-Nav auf Lehrplan + Glossar + Simulationen. Country-Picker nur auf Lehrplan (Atlas-Empfehlung übernommen).
Zusätzlich-Auftrag: Simulationen-Übersicht ohne Direkt-Start. Start-Button → „🔑 Mit Lehrperson nutzen" → Login.

N.6 — Header-Konsistenz-Audit (öffentliche Seiten)

N.6.0Befund — heute existieren 5 verschiedene Header-Varianten

Thomas-Befund (Screenshot-Vergleich): „Menü auf der Landingpage anders aussieht wie unter Lehrplan? bei Forschung wieder anders, bei Kontakt nochmals anders."

VarianteWoLayoutStatus
A — Landingpage-Hauptnav (.nav + .w)index.htmlLogo links, alle 6 Links + Anmelden rechts via justify-content: space-between, leichter Hover-BackgroundReferenz (Thomas: „diese sollten immer so bleiben")
B — Handbuch-Hauptnav (.nav + .w-nav)handbuch.htmlWie A, eigene Class-Names, leicht andere Padding-Wertefast identisch zu A — kosmetische Drift
C — Forschung-Topbar (.nav + .w mit „Über / Handbuch / Forschung")forschung/index.htmlWie A, aber alte Link-Menge (vor Variante B-Umstellung)fehlende Links: Lehrplan, Kontakt; „Über" sollte raus (redirect zu Handbuch)
D — .pub-nav (PHP-Snippet) — JETZT 1:1 wie Alehrplan.php · glossar.php · simulationen.phpLogo links, Links + Anmelden rechts via space-between (siehe L.36)✓ Soeben angeglichen — Layout-Bug behoben
E — .topbar (small-button-Stil)kontakt.html · impressum.html · datenschutz.html · barrierefreiheit.html · marktplatz-einreichung.htmlLogo links, Spacer, kleine .btn-sm-Buttons rechts (Startseite / Über / Handbuch / Impressum)Eigene Welt — Schmalbild-Footer-Pages, alte Link-Menge
N.6.1Sofortfix — public_topnav.php auf Landingpage-Optik angeglichen ✓ (2026-05-28)

Ursache des Drifts beim Lehrplan-Header: meine Snippet-CSS hatte .pub-links { flex: 1; } — das ließ die Links links neben dem Logo „kleben" statt rechts gebündelt zu erscheinen.

Fix: HTML-Struktur — Anmelden-Button wandert IN .pub-links (statt daneben). CSS — justify-content: space-between wie auf Landingpage, plus übernommene Optik-Tokens: gleicher Backdrop-Blur, gleiche Padding-Werte, gleiche Hover-Backgrounds (rgba(0,0,0,.04)), gleiche Active-Hervorhebung (rgba(74,124,138,.12) als Hintergrund statt Unterstrich).

Damit sind Variante A (Landingpage), B (Handbuch) und D (lehrplan/glossar/simulationen via Snippet) jetzt visuell deckungsgleich.

N.6.2Umgesetzt ✓ — alle 7 Subpages auf .pub-nav via Snippet-Include (2026-05-28)

Verbleibende Inkonsistenzen (Variante C + E):

Atlas-Vorschlag — zwei Optionen:

Atlas-Empfehlung: (b) — DRY, künftige Nav-Änderungen treffen alle Seiten gleichzeitig. Aufwand: 7 Dateien renamen + Header-Block 7× durch Include ersetzen. URLs bleiben durch Front-Controller-Routing identisch. Wenn Thomas freigibt, baue ich's in einem Schwung.

N.2 — Header-Inkonsistenz im Detail

N.2.1Drei Header-Varianten heute
TypWoInhalt
Hauptnav (<nav class="nav">)index.htmlLogo + Simulationen | Lehrperson | Über | Handbuch + Auth-Status
Eigene topbarueber/kontakt/impressum/datenschutz/barrierefreiheit + admin-* + profil/teacher/schuelerLogo + paar Buttons (variieren pro Seite)
Kein Headerhandbuch/login/admin/marktplatz-einreichung/stilauswahl/tile-test usw.Nichts. User muss Browser-Back nutzen.

N.3 — Verbesserungs-Vorschlag

N.3.1Drei klar getrennte Header-Klassen
BereichHeaderInhalt
Public (Marketing/Info)einheitliche HauptnavLogo · Simulationen · Lehrperson · Über · Handbuch · Anmelden/Profil
Lehrer-/Schüler-CockpitApp-Topbar (eigener Look, aber konsistent)Logo · Klassen-/Modul-Auswahl · Profil · Abmelden
AdminAdmin-Topbar (eigener Look, klar abgegrenzt)Logo „Admin" · Reiter (Sims/Module/Lizenzen/Styleguide) · Logout

Innerhalb jeder Klasse: konsistenter Look. Zwischen Klassen: bewusster visueller Schnitt (Farbe / Kontext-Label).

N.3.2Konkret zu reparieren (öffentlicher Bereich)
Die folgenden Info-Seiten brauchen die Hauptnav aus index.html:

Pragmatischste Lösung: gemeinsames Header-Snippet (z.B. App/_partials/nav.html oder via JS-Include). Erspart 6× Copy-Paste und macht künftige Änderungen ein-stellig. Atlas wartet auf Thomas-Vorgabe ob: (a) Header in jede Seite hart einkopieren (einfach, redundant) oder (b) kleines JS-Snippet das das Header-HTML injiziert (DRY, etwas Magie).

N.3.3Login-Seite + Marktplatz-Einreichung
Login-Seite sollte mindestens einen „zurück zur Startseite"-Link haben — sonst kein Weg raus außer Browser-Zurück. Marktplatz-Einreichung: laut Memory soll später Auth-pflichtig werden — bis dahin sollte mindestens die Hauptnav drin sein.

K · Konsistenz-Matrix (bei jeder Änderung prüfen)

K.0Grundregel
GeoGraSim ist kein isoliertes Modul-Sammelsurium, sondern ein vernetztes System. Eine Änderung an einem Modul betrifft fast immer mehrere andere Stellen. Vor jedem Commit wird diese Übersicht durchgegangen. Die Liste wächst mit jeder neuen Erkenntnis — bitte erweitern, wenn ein Konsistenz-Problem entdeckt wird.

K.1 — Komponenten-Landkarte (was hängt mit was zusammen)

K.1.1Bausteine
KomponenteWo lebt sieWer schreibtWer liest
Module (Simulationen) App/sims/<slug>/ Modul-Instanz (Atlas integriert) Schüler*in (Spiel), Lehrperson (Cockpit), Auswertung, Handbuch
Modul-Metadaten DB module_info Admin Cockpit, Glossar-Link, Lehrplan-Link, Handbuch
Modul-Defaults (Schwierigkeit/Settings) DB game_levels + sims/<slug>/admin-fields.json Admin Modul-Engine beim Start, Lehrer-Override-UI
Lehrer-Auftrag (Override pro Klasse) DB class_assignments Lehrperson Modul-Engine beim Start, Schüler-Sicht (was ist aktiv)
Lehrplan-Anker DB kompetenzen + kompetenz_modules Admin / Lehrplan-Instanz Lehrer-Cockpit (Anker-Filter), Auswertung, Modul-Karte, Handbuch
Glossar DB glossar + glossar_modules Glossar-Instanz / Admin Module (Tooltips), Mindmap, Handbuch, Lehrplan-Detail
Handbuch App/handbuch.html (statisch) + Modul-Detail-Seiten Manuell (Thomas + Atlas) Lehrperson, Eltern, Schulleitung
Schüler-Ergebnis DB assessments, assessment_answers, player_progress Modul-Engine (am Ende der Sitzung) Lehrer-Auswertung, Schüler-Lerngeschichte
Live-Telemetry (V2: telemetry_events_v2) Modul-Engine während Sitzung Lehrer-Live-Dashboard
Klassenliste mit A11y-Flags DB students Lehrperson (Klassenliste-Tab) Modul-Engine (Profil lesen), Auswertung, Schüler-UI-Defaults

K.2 — Datenflüsse (wer sendet was an wen)

K.2.1Modul → Plattform (während Sitzung)
DatumWannEmpfänger-View
Heartbeat (Phase, Score, Zeit)alle 10–30sLehrer Live-Dashboard
Milestone (definierter Fortschritt)bei jedem Erfolgs-PunktLehrer Live-Dashboard, Auswertung
Stuck-Signalnach 90s InaktivitätLehrer Live-Dashboard (orange Warning)
Zwischenstand (Resume-State)bei Bedarf, ca. alle 30sModul-Engine beim nächsten Start (Resume)
Accessibility-Blockerwenn A11y-HindernisLehrer Live-Dashboard (rot, Sofort-Alert)
K.2.2Modul → Plattform (am Ende der Sitzung)
DatumEmpfänger-View
Score / ScoreMaxAuswertung, Lerngeschichte, Level-Unlock-Berechnung
Dauer (Sekunden)Auswertung, Schulungs-Statistik
Lehrplan-Coverage (pro Anker: full/partial/none)Lehrplan-Fortschritt pro Schüler*in, Klassen-Auswertung
Freitext-Antworten (Reflexionsfragen)Lehrer-Auswertung (mit Klarname)
Artefakte (erzeugte Bilder/Karten)Auswertung als Anhang
Modul-spezifische KennzahlenModul-Detail-Auswertung
K.2.3Lehrperson → Modul (vor Sitzung)
DatumWie ins Modul
Auftrag-Schwierigkeit (Level)URL-Param difficulty
Auftrag-Modus (free / teacher_started / assessment / demo)URL-Param mode
Schüler*in-Profil (Avatar, Easy-Sprache, Nachteilsausgleich, A11y)API /api/student/me
Klassen-Settings (V3: weitere Overrides)Auftrag-Custom-Params (geplant)
K.2.4Admin → Plattform/Module
DatumWo gepflegtEffekt
Modul-Registrierung (Slug, Icon, Card-Bild)admin-modules.htmlModul-Karte, Cockpit-Liste
Default-Schwierigkeit / Parameteradmin-levels.html + admin-fields.jsonModul-Engine bei free-Modus
Klassen-Freigabe (welche Module für welche Klasse)derzeit Admin, später LehrerSchüler-Cockpit Modul-Liste
Lehrplan-Anker (Pool)Lehrplan-VerwaltungModul-Manifest, Auswertung
Glossar-EinträgeGlossar-VerwaltungModul-Tooltips, Mindmap
Lizenzen / Schulkontenadmin-licenses.htmlLehrer-Registrierung

K.3 — „Wenn du X änderst, prüfe auch Y" (Checkliste vor jedem Commit)

K.3.1Modul-Mechanik geändert (Schwierigkeit, Aufgaben, Levels)
Dann prüfen:
K.3.2Lehrplan-Anker geändert/ergänzt
Dann prüfen:
K.3.3Glossar-Eintrag geändert/gelöscht
Dann prüfen:
K.3.4Neues Modul angelegt
Dann anlegen/prüfen:
K.3.5Schüler-Daten-Schema geändert (z.B. neue Spalte in students)
Dann prüfen:
K.3.6Telemetry-Event-Typ geändert/ergänzt
Dann prüfen:
K.3.7UI-Token/Farbe geändert (design-system.css)
Dann prüfen:
K.3.8Sprach-Text geändert (UI / Modul / Glossar)
Dann prüfen:
K.4Workflow für Atlas (Selbstverpflichtung)
Vor jedem Commit/Edit, der eine der oben genannten Komponenten berührt:
  1. Frage: welche K.3.x-Regel greift?
  2. Alle Folge-Punkte aus dieser Regel kurz mental durchgehen
  3. Wo etwas inkonsistent würde → entweder mitfixen ODER als neuen Eintrag in der entwurf.html-TODO-Sektion vermerken
  4. Bei Unsicherheit: vor dem Commit bei Thomas rückfragen

D · Offene Punkte (TODO)

D.1Rückbau: V2-Erfindungen die nicht zu V1 passen
teachers.is_admin Spalte raus, Plattform-Button in teacher.html raus, admin-config.html aufgeben → V2-Plattform-Config wandert ins V1-Admin-Board als neuer Reiter.
D.2V1-Admin-Board erweitern um Reiter „V2 Plattform"
Neue Seite App/admin-platform-v2.html, eingebunden in admin-levels.html-Topbar. UI für Plattform-Config (Heartbeat, Token-TTL etc.). Auth: V1-PHP-Session.
D.3Brücke V1-Admin-Session ↔ V2-API
V2-API-Endpoints unter v2-platform/php/api/admin/* prüfen $_SESSION['admin_id'] statt JWT. Same-Origin reicht. Atlas wartet auf Bestätigung von Thomas.

Z · Änderungs-Log

Z.12026-05-28 (Start)
Dokument angelegt. Erste Einträge zu Rollen, Policies, V1-Links.
L.48Sonnensystem-Polish + Mail-Design + Glossar-Fix (2026-05-29 bis 30)
Sonnensystem als 3. Sim komplett gepolisht (Plattform-Patterns + Onboarding + Glossar + Achievements + FunFacts). Mehrere physikalische Fixes (Solar-Sync, Mond-Phase), iOS/Browser-Patches. Plus: kritischer Glossar-Bug auf Production, Mail-Design. Login-Bug für `schroffenegger@ph-vorarlberg.ac.at` (id 107) aufgeklärt: Passwort `8Zeichen!` ist korrekt, Backend verifiziert, Session wird gesetzt. Vermutete Ursache war Browser-Cache. Forgot-PW-Flow funktioniert (Mail kommt über Provider-Relay, nicht über PHPMailer-Code-Pfad).
L.47EU-Werkstatt Prozessleiste: „Schritt für Schritt"-Visualisierung — kompakt im Spielscreen, voll am Endscreen (2026-05-28)
Thomas: „Stelle den Fortlauf der Prozesse, welche in den vorgegebenen Fällen, in einem Schritt-für-Schritt-Diagramm dar … zum Schluss soll der gesamte Prozess als Grafik sichtbar sein. Du verstehst den didaktischen Wert, oder?" Pattern für andere Sims: SCENARIO_FLOWS-Lookup + zwei Renderer-Modi + CSS .process-flow.compact/.full ist als Vorlage übertragbar. Heli, Klima, Logistik etc. könnten analog eine „Was lief in dieser Session?" Prozesskette bekommen.
L.46EU-Werkstatt Live-State-Hook: GGS_LIVE_STATE() + Health-Ampel für Lehrer-Live-Cockpit (2026-05-28)
Thomas-Befund im Cockpit: „⚠ Diese Simulation meldet noch keine Live-Werte." — Heartbeat lief, Sim-State-Snapshot fehlte. Im Memory-Update zur nächsten Phase ist Heartbeat-Pflicht in JEDER App eh Thema.
L.45EU-Werkstatt Final-Polish: Progress-Text, Easy/Profi, InfoCards, Achievements, Glyphosat +2 Steps, Konzept-Zoom (2026-05-28)
Erste Sim aus der Polishing-Phase fertig. Plan stammt aus review.html Atlas-Verbesserungsvorschläge; 6 Items abgearbeitet, eines bewusst übersprungen (Lehrer-Tracking opt-in — kommt in der nächsten Phase als cross-app Fleißanzeige). Konsequenz: Eine Sim ist „final". Pattern für die folgenden Sims dokumentiert (Progress-Pill, Easy/Profi-Toggle, FunFact-Overlay, Achievement-System mit localStorage + Endscreen-Reveal, Konzept-Zoom-Hint). Datei +12 KB (~225 KB → ~237 KB).
L.44Avatar-Bugs: textContent statt renderAvatar, Server-Truncate 8→64, Teacher-Topbar bekommt User-Pill (2026-05-28)
Thomas: „im Profil Lehrer und Schüler, wenn ich einen Avatar auswähle wird in Großbuchstaben das Wort Avatar nur teilweise sichtbar angezeigt anstatt dem Avatar … es wird auch nicht richtig gespeichert" + „das avatar Logo sollte auch beim Lehrer rechts oben neben dem Namen sichtbar sein .. immer". Konsequenz: Avatar-Wahl funktioniert jetzt korrekt für Lehrer wie Schüler — wird visuell richtig dargestellt und auf Server in voller Länge gespeichert. Teacher-Topbar zeigt den gewählten Avatar permanent (Konsistenz mit Schüler-Cockpit).
L.43Kritischer Render-Bug in renderPage() — JS-Strings mit „</body>" wurden zerstört (2026-05-28)
Thomas-Befund: „wenn ich als Lehrer auf das Logo links oben klicke, lande ich hier: /App/teacher — da wird Unsinn angezeigt, das darf nie sichtbar sein, egal was ich eingebe. Wir müssen die Seite noch härten." Atlas-Hinweis: weitere Seiten könnten ähnliche JS-String-Konstrukte enthalten (z.B. andere PDF/Druck/popup-Funktionen). Mit dem renderPage-Fix sind alle Seiten gehärtet — falls Thomas weitere „weiße/text-Seiten" findet, dürfte es etwas anderes sein.
L.42Login-Modal — Layout-Korrektur: links Toggle Anmelden/Registrieren, rechts Schnell-Login (2026-05-28)
Thomas: „nicht einloggen und Registrieren auf einmal … bitte wieder wie vorhin … aber das Ausprobieren ist in der rechten Spalte, weil das kicken wir später ohnehin" + „der Satz ist unnötig, weg damit: ‚Nur E-Mail und Passwort — Name, Schule etc. ergänzen wir bei Bedarf später im Backend (minimale Zugangshürde + Datenerhebung)'". Konsistenz: das alte Pattern aus pre-L.40 (Toggle + Schnell-Login darunter) wird so kombiniert mit der besseren Höhen-Nutzung des 2-Spalten-Grids. Modal-Höhe bleibt jetzt typisch unter 480 px — kein Vertical-Scroll auf iPad Landscape.
L.41Login-Modal — Blur nochmal halbiert (5px → 2px) + Tönung minimal (2026-05-28)
Thomas: „blur immer noch viel zu stark". Werte: blur(5px → 2px), background rgba(247,246,243, .22 → .10). Hero-Background ist jetzt fast klar lesbar, Card hebt sich durch ihren Schatten ab.
L.40Login-Modal — 2-spaltiges Layout (Anmelden links · Registrieren rechts) (2026-05-28)
Thomas: „mach im Anmelden/Registrieren Overlay Fenster ein 2-spaltiges Layout … wir haben zu wenig Höhe". Höhen-Effekt: vorher Card ~520 px hoch (Anmelden) bzw. ~620 px (Registrieren). Jetzt durchgängig ~440 px hoch — auch auf 1080×810 iPad Landscape kein Vertical-Scroll nötig.
L.39Login-Modal Feintuning: Blur halbiert, Lehrer-Register minimalisiert, DSGVO-Checkbox, Close-Hint weg (2026-05-28)
Thomas (vier Mikro-Vorgaben gebündelt): „Blur ist zu stark, fast nicht sichtbar — halbiere bitte" · „bei der Registrierung als Lehrer bitte die Felder Vorname, Nachname und Schule weg — kann man im Backend eintragen, später, weil nur Zugangshürde und Datenschutzthema" · „wir brauchen hier als Lehrer wohl Hinweis auf Datenschutzerklärung" · „entferne den Hinweis ‚Klick außerhalb oder Esc → zurück'". Atlas-Hinweis: die Schüler*innen-Registrierung wurde nicht angefasst (Klassencode + Username + Passwort bleibt). Falls die auch eine DSGVO-Akzeptanz haben soll (rechtlich relevant bei Minderjährigen), separate Iteration mit Eltern-Einwilligung-Flow überlegen.
L.38Login als Modal über geblurter Landingpage-Hero (Option B umgesetzt) (2026-05-28)
Thomas: „können wir als Hintergrund Blurry den Hintergrund der Hero Section der Landingpage bekommen — inklusive Navigation … Falls man auf diesen Hintergrund klickt, kommt man wieder auf die Landingpage" → „deine Empfehlung umsetzen" (Option B + Nav klar). Bewusste Abweichung von der reinen Option-B-Empfehlung: index.html wurde NICHT auf den Snippet umgestellt (würde tieferen Refactor + Risiko fürs Landingpage-Layout bedeuten). Der Hero-Background im Snippet ist also eine bewusst dupliziertere Implementierung der Landingpage-Atmosphäre. Wenn du später vollständige DRY willst, kann der Snippet auch auf index.html angewendet werden (separate Iteration). Aktuell: visueller Effekt 1:1, Wartungsaufwand minimal höher.
Test lokal: localhost/geograsim/App/login.php oder login.html (via Rewrite). Klick irgendwo neben die Card oder ESC → index.html.
L.37Header-Vereinheitlichung — 7 Subpages auf public_topnav.php via Snippet-Include + .html→.php Rename + .htaccess-Fallback (2026-05-28)
Thomas: „6.2 deine empfehlung umsetzen" — N.6.2 Variante (b) Konversion zu .php + Snippet-Include. Test-URLs lokal: kontakt.php, impressum.php, datenschutz.php, barrierefreiheit.php, marktplatz-einreichung.php, forschung/ (→ index.php), forschung/literatur.php. Alte .html-URLs sollten auch noch funktionieren via .htaccess-Rewrite.
L.36public_topnav.php auf Landingpage-Optik angeglichen + 5 Mojibake-DB-Rows repariert (2026-05-28)
Thomas-Befund 1: „fällt dir auf, dass das Menü auf der Landingpage anders aussieht wie unter Lehrplan? bei Forschung wieder anders, bei Kontakt nochmals anders" — Header-Konsistenz-Drift.
Thomas-Befund 2: „auf Seite /simulationen Text fehler codierung: ÔÇö, f├╝nf, …" — Mojibake im sichtbaren Content. Atlas-Hinweis: die Mojibake-Reparatur betrifft ausschließlich die lokale Atlas-DB. Auf geograsim.at-Production müsste die gleiche UPDATE-Sequenz laufen — bitte Meister-Instanz pingen, wenn deployed werden soll.
L.35Zweistufige öffentliche Nav umgesetzt: Standard-Hauptnav + Erkundungs-Sub-Nav auf Lehrplan/Glossar/Simulationen — plus Login-Hinweis statt Direkt-Start auf Sims-Übersicht (2026-05-28)
Thomas: „überall deine empfehlung … setzt alles um". Konsistenz: Drei Public-Pages (Lehrplan / Glossar / Simulationen) haben jetzt identischen Header. Country-Picker nur auf Lehrplan (dort inhaltlich relevant). Filter-Redundanz beseitigt. Die alten Topbar-CSS-Klassen (.lp-topbar, .gl-topbar, .sp-topbar) bleiben als Definitionen liegen — niemand referenziert sie mehr, aber kein Cleanup ohne explizite Freigabe.
L.34N.5 angelegt — Lehrplan-Nav-Harmonisierung (Vorschlag, noch nicht umgesetzt) (2026-05-28)
Thomas-Vorgabe: „wir hängen jetzt immer noch an der navigation … wenn ich auf Lehrplan gehe, erscheint aber ein neues Menü … sollten wir hier nicht die standard Menüleiste außerhalb stehen lassen und die auswahl des Landes für den Lehrplan darunter anlegen? … mach einen Vorschlag zur harmonisierung" Atlas wartet auf Freigabe bevor lehrplan.php / glossar.php / simulationen.php angefasst werden.
L.33Subpages — Favicons + Titel-Prefix-Konsistenz (2026-05-28)
Thomas-Vorgabe: „bitte Titel und favicon auch bei den Unterseiten checken .. z. B. beim Artikel fehlt favicon" Konsistenz: alle aktiven öffentlichen Subpages haben jetzt einheitlichen Browser-Tab-Look (Favicon + „GeoGraSim — "-Prefix).
L.32Kontakt-Seite: E-Mail raus (Spam), 2× E-Mail-Check, Pre-Fill je nach Bereich, Cards überarbeitet (2026-05-28)
Thomas-Vorgaben (gebündelt): Atlas-Hinweis: Multiple-Choice-Pro-Formularfeld (Thomas-Frage „evt als formularfeld/multiple choice?") wäre die nächste Ausbau-Stufe — aktuell sind die Stichworte als simple Textarea-Vorlagen umgesetzt, weil sie sofort funktionieren und der User trotzdem frei schreiben kann. Echte Formular-Felder pro Bereich = eigene Iteration, falls gewünscht.
L.31Forschung-Index: Vorname korrigiert „Bernhard" → „Dominik" Mößlang (2026-05-28)
Thomas-Befund: „unter forschung hast du geschrieben Thomas Schroffenegger & Bernhard Mößlang … der gute heißt Dominik, nicht Bernhard"
L.30Lehrplan-Header: doppelte Flagge im Country-Picker entfernt (2026-05-28)
Thomas-Befund: „Links oben ist die Flagge immer doppelt pro Land. Hier zweimal Österreich-Flagge." Reichweite: Country-Picker ist ein geteilter Partial — Fix wirkt auf allen Seiten, die ihn includen (Lehrplan, Simulationen-Übersicht, Modul-Detail).
L.29Hauptnav — Variante B umgesetzt: 6 Links + Glossar-Catcher-Pill (2026-05-28)
Thomas: „machen wir deine empfehlung .. bitte umsetzen" Offen für eigene Iteration (Thomas-Entscheidung abwarten): Sammel-Migration der Hauptnav auf kontakt.html · impressum.html · datenschutz.html · barrierefreiheit.html. Diese Seiten haben aktuell noch ihre eigenen Topbars (N.2.1).
L.28N.4 angelegt — Header- & Footer-Entwurf Landingpage (iPad-Referenz) (2026-05-28)
Thomas-Vorgabe: „nun zur Navigation auf der Landingpage … das sollte nun in den Header … wie würde der Header dann aussehen? Sollen wir das Glossar außen lassen … als Werbung, catcher für Besucher? mach auf Entwurf eine Entwurfsdarstellung des Menüs Header und Footer … auf iPad Bildschirmgröße" Konsistenz: setzt N.3.1 (drei Header-Klassen) und N.3.2 (Konkret-zu-reparieren-Liste) um, ohne sie zu ersetzen — N.4 ist der konkrete Layout-Entwurf, N.3 bleibt die Strategie.
L.27Landingpage — Containerschiff-Tempo halbiert (2026-05-28)
Thomas-Vorgabe: „Containerschiff halbes Tempo"
L.26Race-Yacht „26" — Sail-Print um 45° gedreht + kleiner (2026-05-28)
Thomas-Vorgabe: „die Zahl 26 um 45 grad drehen und etwas kleiner"
L.25Landingpage — Motoryacht (mit Rauch) wieder entfernt (2026-05-28)
Thomas-Vorgabe: „das Motorboot mit dem rauch bitte weglassen auf der Landingpage" Komposition jetzt wieder: drei Schichten — Race-Yacht „26" (bottom 18 %, links) · Segelyacht 1 (30 %, rechts) · Containerschiff (37 %, links, langsam). Kein Schweröl-Rauch mehr.
L.24review.html — 13 Modul-Reviews via 9 parallele Agents konsolidiert (2026-05-28)
Thomas-Vorgabe: „verlinke von der seite entwurf.html im header auf ein weiteres dokument review.html. dort kommen alle Module vor und wir schreiben das review dazu auf … du musst simulieren, was die simulation macht … nicht aufhalten, zieh durch" Konsistenz: Reviews als lebendes Doku-File — bei jeder Modul-Iteration aktualisieren. Sub-Modul-Slugs nutzen die Page-IDs aus N.1.0 (M-01 … M-11, P-03/P-04/P-05) als stabile Referenzen.
L.23Landingpage — Motoryacht mit Abgaswolke + Heckwelle, kreuzt ≈ 1× pro Min (2026-05-28)
Thomas-Vorgabe: „motor.svg liegt eine Motoryacht, etwas kürzer wie das erste segelboot, lass sie etwa jede Minute mit etwas delay verkehren … relativ weit vorne und mit deutlicher Wolkenbildung und Verschmutzung und Wellenbildung im Wasser, dunkler Rauch, der langsam vergeht. zieh durch und frage nicht mehr" Ergebnis: vier-schichtige Hintergrund-Komposition — vorne (14 %) Motoryacht mit dreckigem Abgas, davor / dahinter (18 %) Race-Yacht „26", mittig (30 %) Segelyacht 1, ganz hinten (37 %) Container­schiff. Drei Richtungen (Motor + Segelyacht 1 → rechts; Race + Container → links). Erzählt visuell die ökologische Spannweite (sauberer Segeln vs. Schweröl-Verkehr).
L.22Landingpage — Containerschiff deutlich langsamer + weiter hinten (2026-05-28)
Thomas-Vorgabe: „das containerschiff sollte viel langsamer verkehren … deutlich langsamer als die segler und noch weiter hinten" + zuvor: „Container sollten eigentlich alle gleich groß sein"
L.21Sitemap — NAV-Marker mit Ort + Admin nicht von Landingpage + Footer-Links komplettiert (2026-05-28)
Thomas-Vorgaben: „Admin Welt wird nicht von der Startseite aus verlinkt, ‚Anmelden' ist Nav sichtbar wie aktuell als button. Die App-Stränge ergeben sich dann durch Login als Admin, Schüler, Lehrer. Schreibe bei .NAV noch dazu, wo du den Link machen würdest?" Folge-Vorgabe: „stelle sicher, dass auf der Landingpage alle genannten links vorkommen und verlinkt sind. die Menüleiste sollte sich dann aber auch nicht ändern" Konsistenz: Hauptnav unverändert (Simulationen / Lehrperson / Handbuch / Auth-Button). Die zusätzlichen NAV-Ziele wandern in den Footer, was zu N.3.1 (drei Header-Klassen) passt. Lehrplan + Glossar bleiben zusätzlich als Hero-Pills sichtbar.
L.20Sitemap — GRÜN/ROT-Markierungen (NAV / LEGACY?) + N.1.8 angelegt (2026-05-28)
Thomas-Vorgabe: „markiere grün in deiner sitemap, welche der Punkte in der Navigation als eigene Seiten vorkommen sollen … markiere rot alle seiten die vielleicht noch Legacy sind, aber gar nicht mehr notwendig sind" Atlas-Hinweis: vor dem Löschen Volltextsuche im aktiven Code (App/) auf jeden Pfad — falls noch verlinkt, erst Link entfernen. Konkrete Lösch-Freigabe bleibt bei Thomas.
L.19Landingpage — Containerschiff am Horizont, kreuzt 1× pro 2 Min (2026-05-28)
Thomas-Vorgabe: „unter .humanInput/svg/Container.svg ist das svg eine[s] Containerschiffs .. du könntest es etwas vereinfachen und weit hinten sehr selten queren lassen .. nur einmal pro 2 Minuten" → Folge-Vorgabe: „du kannst das Containerschiff gerne etwas vereinfachen. Die Container sollten eigentlich alle gleich groß sein" Konsistenz: ergänzt die bestehende Schiff-Animation um eine dritte Schicht. Reihenfolge im DOM und visuell: weit hinten Containerschiff (bottom 36%, scale .4), mitte Segelyacht 1 (bottom 30%, scale .32), vorne Race-Yacht „26" (bottom 18%, scale .5). Keine Überlappung dank unterschiedlicher Höhen + Phasenversatz.
L.18Landingpage — Vögel-Bug: 2 Vögel hingen oben links fest (2026-05-28)
Thomas-Befund: „mindestens zwei vögel sind links oben gefangen und schweben am Platz"
L.17Schüler-Sicht — Modul-Liste: coming_soon raus, Divider umbenannt (2026-05-28)
Thomas-Vorgabe: „darunter heißt es aktuell ‚In Kürze verfügbar' .. das wird ersetzt durch: kann durch die Lehrperson freigegeben werden. die Simulationen, welche in Kürze verfügbar sind, werden hier nicht angezeigt." Konsistenz: renderModCard()-Logik unverändert — die Funktion kann isComing/isLocked immer noch rendern, falls sie wieder gebraucht wird. Nur die Filter wurden geändert.
L.16profil.html Topbar — an schueler.html angeglichen (Schüler-Sicht einheitlich) (2026-05-28)
Thomas-Vorgaben: „Schüleransicht. Wenn ein schüler in seinem Profil ist, steht links oben ‚Mein Profil' .. weg damit. wenn er auf das Logo klickt, sollte er wieder auf sein cockpit kommen. damit fällt der cockpit link rechts oben auch weg. die kopfzeile in der schüleransicht sollte immer gleich bleiben .. das sind unterschiedliche Kopfzeilen" Konsistenz: Schüler-Sicht hat jetzt überall (Cockpit + Profil) denselben Header. Erfüllt N.3.1 / N.3.2 für den App-Strang. K-Matrix-Eintrag „App-Topbar" → erste konsistente Implementierung.
L.15Sitemap N.1.0 — Grafische IA + Sub-Strang-Bäume mit Page-IDs (2026-05-28)
Thomas-Vorgabe (in zwei Schritten): „erstelle unter N1 eine grafische informationsarchitektur, sinnvolle hirarchie, ausgehend von der Landingpage … ein Strang davon ist die App, bau bitte jetzt diese Struktur" → später „baue die Sitemap weiter bis in die Schüler-, Lehrer- und Adminseite. gib jeder Seite eine ID in der Sitemap" Konsistenz: dient als Referenz-Index für alle weiteren Header-/Navigations-Arbeiten (N.3.x). Thomas kann ab sofort über die IDs ansprechen: „auf [T-04] fehlt …" statt „auf der Live-Sicht im Lehrer-Cockpit fehlt …".
L.14Landingpage — Glossar-Zahl dynamisch aus DB (2026-05-28)
Thomas-Vorgabe: „glossar hat aktuell 164 begriffe .. auf der Landingpage sollte diese zahlenausgabe dynamisch in der DB nachsehen, wieviele Begriffe im Glossar sind. sonst müssen wir das dauernd korrigieren" Konsistenz: Endpoint-additiv (keine Brüche), Cache-Header werden vom bestehenden GET-Branch nicht gesetzt → Standard-Browser-Caching. Bei jedem neuen Glossar-Eintrag aktualisiert sich die Landingpage-Zahl automatisch beim nächsten Reload.
L.13Landingpage — Mikro-Fixes: Mini-Card höher, Lehrplan-Spaces, „fuehren" → „führen" (2026-05-28)
Thomas-Vorgaben in derselben Iteration: Konsistenz: 3 parallele Explore-Agenten haben index.html / handbuch.html / Footer-Seiten (impressum, datenschutz, barrierefreiheit, kontakt, forschung, literaturverzeichnis, ueber, login) auf weitere Umlaut-Transliterationen (ue/ae/oe/Ue/Ae/Oe) gescannt — nur dieser eine Treffer auf der Landingpage. Alles andere sauber UTF-8.
L.12Landingpage — Zweite Segelyacht „26" (Race-Print, Orange) in Gegenrichtung (2026-05-28)
Thomas-Vorgabe: „ein weiteres gleiches boot verkehrt weiter vorne etwas größer in die jeweils andere richtung. farblich mit unserem orange als SegelDruck Zahl 26 Startnummer und Streifen" Konsistenz: Brand-Orange #e8833a = --ggs-orange/--ggs-warning aus design-system.css. Keine weiteren Sektionen betroffen, K-Matrix unverändert. Beide Boote überlappen sich animation-technisch nicht (unterschiedliche bottom-Höhen + Gegenrichtungen).
L.11Landingpage — Mini-Card-Text umbenannt (2026-05-28)
Thomas-Vorgabe: „landingpage textbehälter vor dem Modulbild oben rechts mit aufschrift „Aktueller Stand didaktischer Forschung" ändern auf „Lernen mit Simulationen"" Konsistenz: nur visueller Hero-Sticker, keine Auswirkungen auf andere Seiten. hero-mini-1 („3 Module sofort testen") bleibt unverändert.
L.10Landingpage — alle Boote entfernt, einzelne Segelyacht im hinteren Drittel (2026-05-28)
Thomas-Vorgabe: „entferne alle boote auf der landingpage. im ordner svg ist eine vektografik eines segelyacht .. sehte diese stattdessen ein. … sie sollte im hinteren drittel des meers auf der landingpage verkehren" Konsistenz: Hero-Animation jetzt deutlich ruhiger — nur noch Vögel + Fachbegriffe-Drift + 1 ferne Segelyacht. card-fluss-Text „Fahre mit dem Boot den Fluss hoch" bleibt unverändert (Modul-Beschreibung, kein visuelles Boot).
L.9Über + Handbuch zusammengefasst + Logout/Logo führen zur Landingpage (2026-05-28)
Thomas-Vorgabe: „über und Handbuch wird zusammengefasst unter Handbuch … bitte prüfe: wenn man nicht eingeloggt ist führt Klick auf das Logo oder Schriftzug links oben immer zur Landingpage. / Abmelden rechts oben führt immer zur Landingpage." Konsistenz: K-Matrix-Eintrag „Über/Handbuch" → jetzt eine Quelle (handbuch.html), Redirect-Stub für externe Verweise. Sitemap N.3.1 angepasst.
L.8Landingpage — Schiffsrümpfe realistischer + Animation final (2026-05-28)
Nach Thomas-Feedback komplett überarbeitet: Konsistenz-Note: V1-Eingriff-Policy heute aufgehoben (Thomas-Vorgabe). Wir arbeiten lokal an V1 weiter, V2 bleibt als Skizze stehen für Ideen-Ernte.
L.7Landingpage — Boote-Animation überarbeitet (2026-05-28)
Drei Punkte gefixt nach Thomas-Feedback: Datei: App/index.html CSS-Sektion .hero-boat*.
L.6Forschung & Literaturverzeichnis als eigene Übersichts-Seiten (2026-05-28)
Footer-Links reduziert: statt 4 direkter Artikel-Links jetzt nur noch 2 Übersichts-Seiten: Beide Seiten haben die Hauptnav aus index.html — erster Schritt zur Header-Konsistenz (N.3.2). Stil: ruhig, akademisch, Fjord-Token, klare Karten-Struktur.
L.5Sitemap + Navigations-Review angelegt (2026-05-28)
Neuer Abschnitt N oben: vollständige Sitemap, Header-Inkonsistenz-Befund (3 Varianten + 8 Seiten ohne Header), Aufräum-Kandidaten, Verbesserungs-Vorschlag (3 klar getrennte Header-Klassen). Atlas wartet auf Thomas-Entscheidung in N.3.2 (Header-Snippet hart einkopieren oder JS-Include).
L.4Footer-Links zu Forschungs-Artikeln repariert (2026-05-28)
Zeile 993 in App/index.html: drei tote Links auf ../didaktik_geografie/… bzw. ../didaktik_simulation/… entfernt. Vier korrekte Links eingesetzt — Dateien liegen in App/forschung/:

Anwendung der Konsistenz-Regel K.3.5 (Dokumenten-Pfad-Konsistenz). Die Hauptinhalt-Sektion „Forschung & Didaktik" (Zeilen 805–825) hatte bereits korrekte Links auf forschung/ — nur der Footer war veraltet. Präsentationen unter forschung/presentation-geografie/ und forschung/presentation-simulation/ sind im Footer nicht verlinkt — Thomas entscheidet ob das soll.

L.3Konsistenz-Matrix angelegt (2026-05-28)
Neuer Abschnitt K oben dokumentiert alle Komponenten, Datenflüsse, und „bei X-Änderung prüfe Y"-Regeln. Wird vor jedem Commit konsultiert.
L.2Landingpage — Typewriter-Satz entfernt (2026-05-28)
In App/index.html Zeile ~905: Satz „Genau wie bei Typewriter — einem Werkzeug, das erst im schulischen Kontext seine volle Wirkung entfaltet." entfernt. Rest des Absatzes (Einbettung im Unterricht) bleibt.
L.1Landingpage — Boote überarbeitet (2026-05-28)
Alte Boote (1 grobes Segelboot groß, 1 klein) ersetzt durch sechs neu gezeichnete SVG-Boote im Flat-Stil: Datei: App/index.html Zeilen ~139-180 (CSS) und ~272-... (HTML).
Z.22026-05-28 (Admin-Zugang lokal)
Admin-Passwort: Hash neu generiert (Klartext blieb „fnahc"). Lokales 2FA-Problem entdeckt (PHPMailer fehlt) → Bypass-Tool kurz gebaut, dann wieder rückgebaut, weil V1-Workflow-Eingriff. Backup-Hash wiederhergestellt, Bypass-Skript gelöscht. V1 wieder unangetastet.
D.5PHPMailer lokal installieren (langfristig)
Damit der echte 2FA-Flow lokal auch funktioniert: composer install im App/-Ordner ausführen. Voraussetzung: composer.json mit PHPMailer-Dependency vorhanden. Falls nicht: composer require phpmailer/phpmailer. Vertagt — Bypass reicht für jetzt.