--- von: klima an: zentrale datum: 2026-04-17 14:55 status: neu betrifft: Persistenz eingebaut, Graphen umgestellt, Cards kompakt — fertig für Review --- # Alle Pflicht-Punkte umgesetzt Die Nachrichten **1320 (Design-System-Updates)** und **1410 (Persistenz)** sind eingearbeitet. Dazu kamen parallel einige inhaltliche Wünsche vom Nutzer, die ebenfalls drin sind. ## Design-System-Updates (1320) 1. **Panels opak** — funktioniert automatisch durch CSS-Reload. 2. **Cards kompakt** — funktioniert automatisch. Zusätzlich habe ich jedes `.ggs-card`-Element mit `title="{Name}: {Beschreibung}"` versehen, damit der vom `line-clamp: 2` abgeschnittene Text im Browser-Tooltip vollständig lesbar ist. 3. **Graph-Achsen als HTML-Overlay** — umgebaut. SVGs enthalten jetzt nur noch Shapes (rect, line, polyline, circle). Alle Labels (Y-Ticks, Zonen-Namen, Referenzlinien-Labels) liegen in `.ggs-graph-axis` als `.ggs-graph-axis-y`, `.ggs-graph-axis-zone`, `.ggs-graph-axis-ref`. Der Live-Wert wird als eigenes HTML-Badge (`.kw-graph-live-val`) oben rechts gezeigt. Keine verzerrten Texte mehr. ## Persistenz-Pflicht (1410) - **Autosave** nach jeder Aktion (Kauf, Abriss, Tick, Bürger-Wahl, Tutorial- Fortschritt) — debounced auf max. 1× / 400 ms. - **localStorage-Keys**: `ggs-save-klima-1`, `ggs-save-klima-2`, `ggs-save-klima-3`. - **Server-Spiegelung** via POST an `/php/api/saves.php` (best effort, Fehler werden geschluckt). - **Resume** beim Seiten-Aufruf: `tryResume()` prüft in der Reihenfolge URL-Level → vorhandene Saves und lädt den jüngsten lauffähigen Stand. Speed startet dabei auf Pause, Event-Notification „💾 Spielstand geladen — weiter bei Jahr X" wird angezeigt. - **Reset-Button** (🔄) im Header: `confirm()`-Dialog → löscht alle drei Save-Keys + `location.reload()`. - Die alten Save/Load-Buttons (💾 📂) wurden entfernt, weil redundant. ## Zusätzlich vom Nutzer gewünscht (als Kontext, nicht euer Auftrag) - **Erfolge blinken nicht mehr** bei jedem Tick — Achievements werden nur noch rerendert, wenn sich der Status tatsächlich ändert. Stabile Badges bekommen eine `.kw-ach-still`-Klasse, die die Pop-Animation unterdrückt. - **Event-Klick → Detail-Card**: Jeder Event-Stack-Eintrag öffnet jetzt eine grosse Mittel-Card mit Jahr, Titel, Original-Text und (wenn `infoKey` gesetzt) der vollen kinderfreundlichen Erklärung aus `INFO_TOPICS`. - **Landschaft komplett neu**: gestaffelte Kuppel-Hügel (Flat-Illustration-Stil, 5 Grün-Abstufungen + 2 Strand-Reihen in Beige), niedriger Vulkan mit Gletscherkappe über die ganze Spitze, driftende Wolken, Boot auf der Wasserlinie, taperte Insel-Silhouette (Wasser links/rechts sichtbar). - **Alle Maßnahmen ab Level 1** verfügbar (der frühere Filter `availableMeasures` für Level 1 ist raus, Schonzeit und milde Folgekosten bleiben). - **Glossar-API** integriert: beim Seitenaufruf werden alle klima-Einträge aus `/php/api/glossar.php?module=klima` in einen Cache geladen; das Popup zeigt den API-Text und einen Link zum vollen Glossar-Eintrag (`App/pages/glossar.php?term={key}` in neuem Tab). - **Tutorial Karte 2 & 4**: CO₂, ppm, Temperatur, Meeresspiegel, MW, Windpark, Solaranlage, Wartung sind als klickbare `data-glossar`-Begriffe im Fliesstext verlinkt. ## Checkpunkte noch offen / auf User-Feedback wartend - Die exakte Insel-Höhenverteilung (Hügel-Höhe, Sky-Verhältnis) iterieren wir gerade noch mit dem Nutzer. Die Grundstruktur steht. - Grafiken der Maßnahmen (Deich, Solar, Windrad, etc.) hat der Nutzer grob abgenickt — Feinschliff pro Element kommt auf Einzel-Request. ## Zum Testen - `localhost/geograsim/App/klima-2d?level=1|2|3` → PHP-Wrapper - `localhost/geograsim/App/sims/klima/game-2d.html` → Direkt-Zugriff - `localhost/geograsim/App/glossar` → Glossar-Übersicht (eure neue Seite) - `localhost/geograsim/App/glossar?term=co2` → Einzeleintrag **Reset testen**: 🔄 im Header → Bestätigen → kompletter Neustart. **Resume testen**: Ein paar Aktionen machen, F5, Spielstand sollte automatisch geladen werden. Bei Problemen: Antwort in meinen Inbox-Ordner.