/* ===========================================================================
   DESIGN-TOKENS – DAS WÖRTERBUCH VON SCHLAUSTART
   ===========================================================================
   Die Regel dazu steht in docs/DESIGN_SYSTEM.md. Diese Datei ist NUR das
   Wörterbuch: Werte, keine Bausteine. Hier steht kein `.knopf{}`, kein
   `.karte{}` – ausschließlich `--token: wert`.

   WIE ES FUNKTIONIERT
   -------------------
   Die Datei wird VOR index.css eingebunden (templates/index.html). Das ist
   Absicht und der ganze Trick der ersten Stufe:

     design-tokens.css  ->  :root { --muted:#636B7C; … }   (der Zielwert)
     index.css          ->  :root { --muted:#6A7384; … }   (der heutige Wert)

   Bei gleicher Spezifität gewinnt die SPÄTERE Regel. Also gilt heute überall
   weiterhin der Wert aus index.css, und **kein einziger Bildschirm ändert
   sein Aussehen**. Neue Namen (--ok-ink, --r-card, --e-2 …) kollidieren mit
   nichts und stehen ab sofort zur Verfügung.

   DIE MIGRATION besteht dann darin, in index.css Zeile für Zeile einen
   Token-Eintrag zu LÖSCHEN. In dem Moment greift der gemessene Wert von hier.
   Eine Seite nach der anderen, jede einzeln vergleichbar – statt eines großen
   Umbaus, den niemand mehr prüfen kann.

   WOHER DIE ZAHLEN KOMMEN
   -----------------------
   Nicht aus dem Gefühl. `scripts/design_kontrast.py` rechnet jeden Ton gegen
   die Flächen, auf denen er wirklich steht (WCAG 2.1: Schrift 4.5:1,
   Fläche/Rand/Icon 3:1). Wer hier einen Wert ändert, ändert ihn ZUERST dort
   und lässt das Skript laufen. Drei Werte stammen genau daher und sind
   deshalb NICHT identisch mit dem heutigen Bestand – Begründung jeweils
   direkt an der Zeile.

   VERBUNDEN MIT
   -------------
   * docs/DESIGN_SYSTEM.md        – die Regel (Farbe §3, Maß §4, Erhebung §5)
   * scripts/design_kontrast.py   – rechnet die Farbwerte nach
   * templates/index.html         – bindet diese Datei VOR index.css ein
   * app.py `_sw_version()`       – muss diese Datei mithashen, sonst liefert
                                    der Service-Worker ein altes Wörterbuch aus
   * static/css/index.css         – hält heute noch die Altwerte; die
                                    Migration leert dessen :root nach und nach
   * docs/DUNKEL_BEFUND.md        – dieselbe Altlast aus Richtung Dunkelmodus
   =========================================================================== */

:root{

  /* ===== FLÄCHEN =========================================================
     --paper          Grundfläche der Seite (hinter Leiste und Panel)
     --surface-subtle leicht abgesetzte Fläche INNERHALB einer weißen Karte.
                      NEU: bisher wurde dafür --paper missbraucht, weshalb
                      „Fläche der Seite" und „Fläche im Kasten" nicht mehr
                      unterscheidbar waren.
     --card           weiße Inhaltsfläche
     Hinweis: --shell-bg bleibt bewusst in index.css. Sie ist die vom Nutzer
     WÄHLBARE Fläche (applyShellFarbe) und damit kein fester Token.          */
  --paper:          #F1F2F6;
  --surface-subtle: #F7F8FA;
  --card:           #FFFFFF;

  /* ===== SCHRIFT-STUFEN ==================================================
     Drei Stufen genügen: Aussage, Nebenaussage, Beiwerk.                    */
  --ink:   #0F172A;   /* Überschrift, Fließtext                             */
  --sub:   #4A5568;   /* Nebentext, Beschreibung                            */
  /* GEMESSEN GEÄNDERT: der bisherige Ton aus index.css erreicht auf --paper
     nur 4.27:1 und fällt damit knapp durch. Dieser Wert schafft 4.78:1 und
     ist vom Auge nicht als andere Farbe zu erkennen. Zahlen und Altwert:
     scripts/design_kontrast.py, docs/DESIGN_SYSTEM.md §3.2. */
  --muted: #636B7C;

  /* GEMESSEN – und der Grund, warum es diesen Ton ZUSAETZLICH gibt:
     --muted ist gegen --paper gerechnet. Die SCHALE hinter Seitenleiste und
     Panel ist aber vom Nutzer waehlbar (--shell-bg in index.css, sieben feste
     Toene + freie Wunschfarbe). Auf dem dunkelsten festen Ton "stein"
     (#E8EAEF) erreicht --muted nur 4.45:1 und faellt damit knapp durch – die
     Beschriftung der Seitenleiste sitzt genau dort.
     #565E6C haelt 5.43:1 auf allen sieben festen Toenen und 4.71:1 im
     schlechtesten ueberhaupt erreichbaren Wunschton (ssPastellHex deckelt auf
     HSL L>=0.90, S<=0.50). Nachgerechnet von qa/unit/test_seitenleiste.py –
     der Test liest die Toene und die Deckel selbst aus, statt sie zu glauben. */
  --muted-shell: #565E6C;

  /* Schrift auf einer gefuellten Markenflaeche (Knopf, aktiver Menueeintrag).
     Braucht einen eigenen Namen, weil --card im Dunkelmodus dunkel wird –
     wer dort "weiss" meint, darf nicht --card schreiben. */
  --on-brand: #FFFFFF;

  /* ===== LINIEN ==========================================================
     Die tragende Trennung ist die Linie, nicht der Schatten (§5).           */
  --line: #E4E7EE;    /* sichtbare Trennung, Kastenrand                     */
  /* DIESELBE LINIE, EINE STUFE KRAEFTIGER (v2.564.1). Seit die Blattfarben
     den Hintergrund faerben koennen, verschwindet --line auf einem hellen
     Rosa oder Gelb - man sieht dann nicht mehr, wo ein Kasten aufhoert
     (Befund Murat 30.08.2026 am Editor). NUR fuer die grossen Kaesten, die
     eine Struktur tragen; die feinen Trennungen bleiben bei --line, sonst
     wird die Seite ein Gitter. */
  --line-kraeftig: #C9D0DE;
  --hair: #F0F1F4;    /* Andeutung, Tabellenzeile                           */

  /* ===== MARKE ===========================================================  */
  --brand:      #2E5BFF;
  --brand-dk:   #1B3FCC;   /* Hover, Schrift auf hellem Markenton           */
  --brand-soft: #E9EEFF;

  /* ===== BEDEUTUNGSFARBEN ================================================
     ZWEI TÖNE JE BEDEUTUNG – das ist die wichtigste Regel dieser Datei.

       --x       Fläche, Rand, Icon, Balken        (3:1 genügt)
       --x-ink   SCHRIFT auf --x-soft              (4.5:1 nötig)
       --x-soft  weiche Füllung hinter der Schrift

     WARUM: Grün (#15A05A) und Bernstein als SCHRIFT sind heute nirgends
     lesbar genug – „Erledigt" in Grün erreicht 3.38:1 bei einer Anforderung
     von 4.5:1. Die Lösung ist nicht, den grünen Kasten zu ändern, sondern
     die Schrift darin abzudunkeln. Siehe docs/DESIGN_SYSTEM.md §3.3.
     Das ist kein Schönheitsthema: Barrierefreiheit (BITV 2.0) wird beim
     Verkauf an Schulen gefragt.                                            */

  --ok:       #15A05A;   /* Fläche/Rand: 3.38:1 auf weiß                    */
  --ok-ink:   #0E7A43;   /* NEU – Schrift: 5.41:1 weiß / 4.81:1 auf ok-soft */
  --ok-soft:  #E4F6EC;

  /* GEMESSEN GEÄNDERT: der bisherige Bernstein aus index.css erreicht als
     Icon oder Rand nur 2.03:1 – ein Warnzeichen, das man nicht sieht. Auch
     der Ton aus landing_neu reicht auf --paper nur für 2.85:1. Dieser Wert
     besteht auf beiden neutralen Flächen (3.62 / 3.23) und wird noch als
     Bernstein gelesen, nicht als Braun. Nur 16 Verwendungen im Bestand –
     der Wechsel ist billig. Altwerte: docs/DESIGN_SYSTEM.md §3.2. */
  --amber:      #C97005;
  --amber-ink:  #B45309;  /* NEU – Schrift: 5.02:1 / 4.68:1                 */
  --amber-soft: #FFF6E6;

  /* GEMESSEN GEÄNDERT: der bisherige Ton aus index.css liegt mit 4.02:1
     unter der Schriftschwelle, dieser (aus landing_neu) erreicht 4.83:1.
     Der NAME bleibt --bad: 213 Verwendungen umzubenennen wäre Risiko ohne
     Gegenwert, und ein Präfix liesse sich später per Alias nachrüsten
     (docs/DESIGN_SYSTEM.md §3.4). */
  --bad:      #DC2626;
  --bad-ink:  #B42318;   /* NEU – Schrift: 6.57:1 / 5.62:1                  */
  --bad-soft: #FCE9E7;

  /* ===== VIOLETT – die VIERTE Kachelfarbe, und KEINE Bedeutungsfarbe =====
     Grün/Bernstein/Rot sagen „gut/beobachten/gefährlich". Violett sagt gar
     nichts über die Lage – es sagt „das hier gehört zu Unterricht & Üben"
     bzw. „das ist die Hausaufgaben-Zahl". Genau diese Unterscheidung steht
     in DESIGN_SYSTEM.md §3: Bedeutungsfarbe vs. Kategoriefarbe.

     WARUM ES DIESEN EINTRAG ÜBERHAUPT GIBT: der Ton existierte längst –
     als festes #6D5BD0 mitten in einer JavaScript-Zeichenfunktion
     (renderKpis) und als #7F77DD in wzKatalog(). Zwei Orte, zwei Werte,
     kein Dunkelmodus. Hier ist es EIN Wert, den der Dunkelblock unten
     mitzieht.

     Gemessen (scripts/design_kontrast.py): --violett 5.18 auf --card /
     4.63 auf --paper (Fläche braucht 3.0) · --violett-ink 7.80 auf --card /
     6.71 auf --violett-soft (Schrift braucht 4.5). Der Flächenton selbst
     erreicht auf --violett-soft nur 4.45 – deshalb gibt es das -ink-Token,
     genau wie bei Grün und Bernstein.                                     */
  --violett:      #6D5BD0;
  --violett-ink:  #4B44A8;
  --violett-soft: #EFECFB;

  /* ===== ROSA – die ZWEITE Kategoriefarbe: Lernstand-Beobachtungen =======
     Entscheidung Murat 19.09.2026 („tüm Lernstand'la alakalı girdiler
     pembe olur … hafif güzel bir renk"). Eine Beobachtung („selbständig",
     „mit Hilfe") ist keine Note und sagt nichts über gut oder schlecht –
     sie muss in der chronologischen Liste des Kindes neben Klassenarbeit
     (rot), Quiz (blau), Sonstige (grau) und Hausaufgaben (violett) auf einen
     Blick als ETWAS ANDERES lesbar sein. Violett war dort schon vergeben.
     Gemessen (scripts/design_kontrast.py): --rosa 4.60 auf --card / 4.11
     auf --paper (Fläche braucht 3.0) · --rosa-ink 7.88 auf --card / 6.71
     auf --rosa-soft (Schrift braucht 4.5). DESIGN_SYSTEM.md §3.5.       */
  --rosa:      #DB2777;
  --rosa-ink:  #9D174D;
  --rosa-soft: #FCE7F3;

  /* ===== TAGESKONTINGENTE – UNTERSCHEIDUNGSFARBEN (v2.290.0) =============
     Sechs kleine Icon-Plättchen in der Cockpit-Karte „Tageskontingente".
     Diese Farben sagen NICHT „gut/schlecht" – sie unterscheiden nur die
     Arten voneinander, damit man die Zeile im Vorbeigehen wiedererkennt
     (die Bedeutung trägt die Zahl daneben, siehe `.knapp`).
     WARUM ÜBERHAUPT TOKENS: sie standen als feste Hex-Werte im JavaScript,
     mitten in einer Zeichenfunktion. Dort findet sie niemand, und jede neue
     Art brachte eine neue feste Farbe mit. Hier stehen sie an der einen
     Stelle, an der das Wörterbuch sie erwartet (DESIGN_SYSTEM.md §3).
     Das Plättchen trägt ein weisses Glyph – alle sechs Töne sind dafür
     dunkel genug, in beiden Themes; deshalb gibt es bewusst KEINE eigenen
     Dunkelmodus-Werte (die Fläche bringt ihren Grund selbst mit).           */
  --kont-quiz:  #2E5BFF;   /* Aufgaben – derselbe Ton wie --brand           */
  --kont-bild:  #7C3AED;
  --kont-plan:  #E8852A;
  --kont-abki:  #16856A;
  --kont-kurs:  #B0533A;
  --kont-chat:  #0F6E56;

  /* ===== SCHULVERWALTUNG =================================================
     Der Bereich hatte diese Farbe schon: sie stand als fester Hex-Wert im
     JavaScript (SB_FARBE.schule, index-app.js) und faerbte den Eintrag
     „Schulverwaltung" in der Seitenleiste. Seit v2.353.0 gibt es diesen
     Eintrag nicht mehr; der einzige Einstieg ist der Knopf in der
     Schul-Kapsel oben rechts (.av-school-adm). Die Farbe wandert mit dem
     Einstieg mit - derselbe Weg wie bei den --kont-* daneben: raus aus der
     Zeichenfunktion, rein ins Woerterbuch.
     KEINE NEUE FARBE, sondern eine umgezogene. Und ausdruecklich NICHT
     --bad: Rot heisst hier ueberall Gefahr, und ein Knopf fuer die taegliche
     Arbeit in der Alarmfarbe nimmt Rot seine Warnwirkung (§3.1).
     Weisses Glyph darauf: 5.6:1 - wie bei den --kont-* bringt die Flaeche
     ihren Grund selbst mit, deshalb kein eigener Dunkelmodus-Wert.        */
  --sv-verwaltung: #6B4BD8;

  /* ===== ERKLAERBLATT ====================================================
     Der Einstieg auf der Material-Seite steht seit v2.528.0 NEBEN dem
     Lernspiel-Einstieg. Zwei Knoepfe nebeneinander in derselben Farbe sehen
     aus wie EIN Knopf mit zwei Haelften; der Unterschied muss sichtbar sein,
     bevor man liest. Das Lernspiel traegt Violett-Blau, das Erklaerblatt
     bekommt den Tuerkis-Gruen-Verlauf des Fachportals (F_TUERK/F_GRUEN in
     fach_gliederung.py) - keine neue Farbwelt, sondern die, unter der die
     Themen ohnehin stehen. Weisses Glyph darauf: die Flaeche bringt ihren
     Grund selbst mit, deshalb kein eigener Dunkelmodus-Wert.             */
  --eb-einstieg-a: #0E9384;
  --eb-einstieg-b: #15A05A;

  /* ===== DIE ZWEI MODUL-EINSTIEGE ALS REINE SYMBOLE (v2.534.0) ==========
     Anweisung Murat 29.08.2026: „o kare icinde sey yapmissin ya, hani o
     renkli bir joystick olsun … arkasindaki dolguyu kaldir, ikon olsun
     sadece ikon. Böyle hersyin arkaplanini yapip beyazlastirman iconu bu
     hosuma gitmiyor."

     DIESELBE ANSAGE WIE BEIM KROENCHEN darunter (24.08.2026), nur an einer
     anderen Stelle - und deshalb hier gleich als Tonpaar, statt sie ein
     drittes Mal zu hoeren. Bis v2.533.x sassen beide Glyphen weiss auf einer
     34-px-Scheibe mit Verlauf. Zwei gefuellte Kacheln nebeneinander lesen
     sich wie zwei Knoepfe in einem Knopf; die Kopfzeile IST schon der Knopf.

     WARUM EIGENE TOENE UND NICHT --brand: die beiden Einstiege fuehren zu
     ZWEI verschiedenen Werkzeugen. Genau das war der Sinn der Verlaeufe -
     er faellt nicht weg, er wandert nur von der Flaeche ins Glyph.
     Dunkelmodus getrennt, weil ein Glyph seinen Grund nicht mehr selbst
     mitbringt: Tuerkis #0E9384 erreicht auf dunklem Grund keine 3:1 mehr
     (DESIGN_SYSTEM.md §3.3), aufgehellt sehr wohl.                        */
  --ls-glyph:   #6D4AF6;
  --eb-glyph:   #0E9384;

  /* ===== DAS KROENCHEN DES SCHUL-ADMINS (v2.419.0) =======================
     Anweisung Murat 24.08.2026: „arkaplan koymadan baya bildigin sari tac
     ikonu ... sari olsun ama kronen iste." Das Kroenchen sass bis v2.418.0
     als weisses Glyph auf einer violetten Scheibe (--sv-verwaltung). Es
     stimmte fachlich - der Bereich hat diese Farbe -, aber ein Kroenchen ist
     ein ORDEN, kein Knopf: die Scheibe machte daraus ein zweites
     Bedienelement neben dem Schullogo, und genau das eine sollte v2.414.0
     abschaffen.

     ZWEI TOENE, WEIL EIN GELB ALLEIN NICHT TRAEGT. Gold erreicht auf Weiss
     nur 1.9:1 - unter den 3:1, die DESIGN_SYSTEM.md §3.3 fuer grafische
     Elemente verlangt, und das Kroenchen liegt ausserdem auf einem
     SCHULLOGO, dessen Farbe wir nicht kennen. Deshalb: Flaeche in Gold,
     Kante in dunklem Gold. Die Kante traegt die Lesbarkeit (5.9:1 auf Weiss,
     3.1:1 gegen die eigene Fuellung), das Gold traegt die Aussage. So bleibt
     es ohne jede Scheibe auf hellem wie auf dunklem Grund ablesbar.

     UND AUSDRUECKLICH NICHT --amber: Bernstein heisst in SchlauStart
     „Hinweis/Achtung" (§3.1). Eine Rolle ist kein Hinweis - sie steht den
     ganzen Tag da. Zwei Bedeutungen an einem Ton nehmen dem Ton beide.    */
  --krone:      #F2B01E;
  --krone-rand: #8A5A06;

  /* ===== ECKEN – NACH BAUTEIL, NICHT GLOBAL ==============================
     Ein einziger Radius für alles ist falsch: ein Knopf mit 22px wird zur
     Pille, ein Panel mit 8px wirkt hart. Zwischenwerte gibt es nicht.       */
  --r-control: 8px;    /* Knopf, Eingabefeld, Chip, kleines Feld            */
  --r-card:   14px;    /* Karte, Listeneintrag, Aufklapp-Menü               */
  --r-panel:  22px;    /* Panel, Modal, große Fläche                        */
  --r-pill:  999px;    /* echte Pille (Zähler, Status-Chip)                 */

  /* ===== ABSTÄNDE ========================================================
     Nur aus dieser Reihe. Kein padding:13px, kein gap:18px.                 */
  --s-1:  4px;  --s-2:  8px;  --s-3: 12px;  --s-4: 16px;  --s-5: 24px;
  --s-6: 32px;  --s-7: 48px;  --s-8: 64px;  --s-9: 96px;

  /* ===== SCHRIFTGRÖSSEN ==================================================
     EINE Skala. Halbe Pixel (16.5px, 13.5px) sind Altlast und werden bei
     der Migration hierher gezogen.

     WARUM ES UNTER 12px ZWEI STUFEN GIBT (entschieden 12.08.2026):
     Der Bestand benutzt unterhalb von --fs-xs neun verschiedene Größen
     (6 · 8 · 8.5 · 9 · 9.5 · 10 · 10.5 · 11 · 11.5px) an rund 650 Stellen –
     Diagrammachsen, Mini-Zähler, Chips, Tabellenkürzel. Die Skala bei 12px
     enden zu lassen hieße, all das auf 12px anzuheben; das ist keine
     Migration mehr, sondern eine Gestaltungsänderung mit Überlaufrisiko an
     650 Stellen, die niemand im Browser nachsehen kann. Also zwei Stufen –
     und dafür KEINE weiteren: was kleiner als 10px sein will, ist zu klein.
     Die Zuordnung steht in docs/DESIGN_SYSTEM.md §4.3 als Tabelle; sie wird
     Abschnitt für Abschnitt mit der Migration (§10) gezogen, nicht auf
     einmal.                                                                 */
  --fs-3xs: 10px;   /* Diagramm-Beschriftung, Mini-Zähler – die Untergrenze */
  --fs-2xs: 11px;   /* Chip, Zähler, Tabellenkürzel                         */
  --fs-xs:  12px;   /* Marke, Kürzel                                        */
  --fs-sm:  13px;   /* Nebentext, Chip                                      */
  --fs-md:  15px;   /* Bedienelemente                                       */
  --fs-base:16px;   /* Fließtext                                            */
  --fs-lg:  19px;   /* Abschnittsüberschrift                                */
  --fs-xl:  24px;   /* Seitenüberschrift                                    */
  --fs-2xl: 32px;   /* Titel                                                */

  /* ===== SCHRIFTFAMILIE ==================================================
     System-Stack: keine externe Anfrage, kein DSGVO-Thema, keine Ladezeit.  */
  --font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter",
          "Segoe UI", system-ui, sans-serif;

  /* ===== ERHEBUNG (ELEVATION) – VIER STUFEN, KEINE FÜNFTE ================
     Heute liegen 274 verschiedene box-shadow-Werte im Bestand. Das ist kein
     Gestaltungsmittel mehr, sondern Zufall. Der Normalfall ist --e-0: kein
     Schatten, eine 1px-Linie. Wer eine fünfte Stufe braucht, braucht in
     Wahrheit keine – er braucht eine Linie.
     Die Werte sind nicht erfunden, sondern die drei im Bestand am häufigsten
     benutzten: --e-1 = das bisherige --shadow (24 Verwendungen), --e-2 aus
     dem Aufklapp-Menü der Startseite, --e-3 aus dem Modal (index-module).  */
  --e-0: none;
  /* -------------------------------------------------------------------
     FACH-FARBEN (2.329.9)
     -------------------------------------------------------------------
     WOFUER: In der Unterrichtsplanung liegen die erzeugten Plaene als
     Karten nebeneinander. Ein farbiger Streifen je FACH macht sie auf
     einen Blick unterscheidbar (Wunsch Murat 18.08.2026: "fachlar ayni
     renk olsun mathematik bi renk fizik bi renk gibi").

     WARUM HIER UND NICHT IM JAVASCRIPT: 26 feste Farbwerte im Frontend
     waeren genau die eigene Farbwelt, die das Design-System verhindern
     soll - `qa/unit/test_design_system.py` hat sie sofort gemeldet, und
     zu Recht. Als Token stehen sie an EINER Stelle, lassen sich im
     Dunkelmodus getrennt aufhellen und tauchen in keiner Datei doppelt auf.

     Die Toene sind bewusst gedeckt: sie stehen als 3px-Streifen und als
     kleine Beschriftung auf weisser Karte, nicht als Flaeche.
     Unbekannte Faecher (das Feld ist Freitext) bekommen einen Ton aus
     --fach-1 bis --fach-10, berechnet aus dem Namen. */
  --fach-mathematik: #2E5BFF;
  --fach-deutsch:    #DC2626;
  --fach-englisch:   #7C3AED;
  --fach-physik:     #0EA5A5;
  --fach-chemie:     #059669;
  --fach-biologie:   #16A34A;
  --fach-geschichte: #92400E;
  --fach-erdkunde:   #0E7490;
  --fach-politik:    #86198F;
  --fach-sport:      #F59E0B;
  --fach-kunst:      #EA580C;
  --fach-musik:      #9333EA;
  --fach-informatik: #475569;
  --fach-religion:   #6D6875;
  /* -------------------------------------------------------------------
     SECHS FAECHER FEHLTEN, UND JEDES BEKOMMT EINE FLAECHE (2.615.0)
     -------------------------------------------------------------------
     Anweisung Murat 03.09.2026: „renkleri her birinin farkli olsun yani."
     Bis hierher teilten sich zwanzig Faecher ACHT Farben - Geschichte,
     Textil und Kunst trugen dasselbe Pink, Latein, Philosophie und
     Informatik dasselbe Grau. Auf einer Seite, die alle zwanzig
     nebeneinander zeigt, ist eine geteilte Farbe keine Farbe mehr.

     Sechs Toene fehlten ganz; sie stehen jetzt hier - und NICHT in
     templates/unterrichtsfaecher.html. Dort waeren es vierzig feste
     Farben in einem <style>-Block, also genau die eigene Farbwelt, die
     der Waechter verhindern soll (DESIGN_SYSTEM.md 9). Als Token stehen
     sie einmal, lassen sich im Dunkelmodus getrennt anfassen und gelten
     ueberall gleich.

     Die -soft-Toene sind die FLAECHE der Kachel, der Grundton ihre
     Schrift und ihr Zeichen. Beide muessen zusammen den Kontrast der
     Schrift tragen - deshalb ist soft sehr hell und der Grundton
     kraeftig, nicht umgekehrt. */
  --fach-franzoesisch:   #DB2777;
  --fach-spanisch:       #CA8A04;
  --fach-latein:         #7F1D1D;
  --fach-philosophie:    #5B7C99;
  --fach-textil:         #BE185D;
  --fach-sachunterricht: #65A30D;
  /* Arbeitslehre. Technik traegt den Bronzeton der Werkstatt - dunkler als
     das Sport-Amber, waermer als das Braun der Geschichte.

     ⛔ HAUSWIRTSCHAFT WAR ZUERST EIN CRIMSON (#BE123C, v2.709.0) UND IST ES
     NICHT MEHR (v2.709.1). Am Bildschirm gemessen statt am Hex-Wert: auf
     /unterrichtsfaecher steht die Kachel alphabetisch NEBEN Franzoesisch
     (#FCE1ED) und zwei Felder neben Textilgestaltung (#FCE1EC) - drei
     Rosatoene in einer Reihe. Die Grundtoene waren verschieden, die
     FLAECHEN nicht, und die Flaeche ist das, was man sieht. Jetzt ein
     dunkles Petrol: es liegt in der kleinsten Farbfamilie der Seite und
     traegt zum Fach (Ernaehrung, Kueche). Anweisung Murat 03.09.2026:
     „renkleri her birinin farkli olsun yani." */
  --fach-technik:        #B45309;
  --fach-hauswirtschaft: #0F766E;

  /* Die Flaeche zu jedem Grundton. */
  --fach-mathematik-soft:   #E1E7FC;
  --fach-deutsch-soft:      #FCE1E1;
  --fach-englisch-soft:     #EBE1FC;
  --fach-franzoesisch-soft: #FCE1ED;
  --fach-spanisch-soft:     #FCF3E1;
  --fach-latein-soft:       #FAD9D9;
  --fach-physik-soft:       #E1FCFC;
  --fach-chemie-soft:       #D8FBF0;
  --fach-biologie-soft:     #E1FCEB;
  --fach-geschichte-soft:   #FBE5D8;
  --fach-erdkunde-soft:     #D8F3FB;
  --fach-politik-soft:      #F8D8FB;
  --fach-religion-soft:     #EEEBF1;
  --fach-musik-soft:        #EFE1FC;
  --fach-philosophie-soft:  #E8EFF5;
  --fach-textil-soft:       #FCE1EC;
  --fach-kunst-soft:        #FCEAE1;
  --fach-sport-soft:        #FCF2E1;
  --fach-informatik-soft:   #E9EEF4;
  --fach-sachunterricht-soft: #F1FCE1;
  --fach-technik-soft:        #FBEEDD;
  --fach-hauswirtschaft-soft: #D7EEE9;

  /* -------------------------------------------------------------------
     KLASSENSTUFEN 5 BIS 13 (2.615.0)
     -------------------------------------------------------------------
     Die Etiketten "Klasse 5" bis "Klasse 13" standen bisher als NEUN
     inline-styles mit achtzehn festen Farben in
     templates/unterrichtsfaecher.html - genau die Sorte Altlast, die der
     Waechter zaehlt. Sie gehoeren hierher: dieselben Etiketten stehen auch
     an den Themenseiten, und eine zweite Fassung waere eine Kopie.
     Die Werte sind die bisher benutzten, unveraendert uebernommen. */
  --klasse-5:  #2E5BFF;
  --klasse-5-soft:  #E9EEFF;
  --klasse-6:  #0E9384;
  --klasse-6-soft:  #E0F5F2;
  --klasse-7:  #15A05A;
  --klasse-7-soft:  #E7F6EF;
  --klasse-8:  #E6A700;
  --klasse-8-soft:  #FEF6E6;
  --klasse-9:  #E0552E;
  --klasse-9-soft:  #FDEEE9;
  --klasse-10: #D6336C;
  --klasse-10-soft: #FCEBF1;
  --klasse-11: #7A5AF8;
  --klasse-11-soft: #F3EEFF;
  --klasse-12: #B42318;
  --klasse-12-soft: #FCE9E7;
  --klasse-13: #475467;
  --klasse-13-soft: #EEF0F4;

  /* Der Kreis fuer alles Uebrige - dieselben Toene, nur ohne festen Namen. */
  --fach-1: #2E5BFF;
  --fach-2: #0EA5A5;
  --fach-3: #16A05A;
  --fach-4: #D6455D;
  --fach-5: #8B5CF6;
  --fach-6: #B4682B;
  --fach-7: #0E7490;
  --fach-8: #E07B39;
  --fach-9: #7C3A6B;
  --fach-10:#475569;

  --e-1: 0 1px 2px rgba(27,34,48,.06), 0 8px 24px rgba(27,34,48,.07);
  --e-2: 0 14px 38px rgba(15,23,42,.11);
  --e-3: 0 24px 70px rgba(20,30,60,.30);

  /* ===== BRÜCKE ZUM BESTAND ==============================================
     Alte Namen zeigen auf neue Werte, damit während der Migration BEIDE
     Schreibweisen funktionieren. index.css überschreibt diese Zeilen heute
     noch – sie greifen erst, wenn dort der jeweilige Eintrag gelöscht wird.
     Werden mit der Migration nach und nach entfernt.                        */
  --radius: var(--r-card);
  --shadow: var(--e-1);
}

/* ===========================================================================
   DUNKELMODUS – EIN WERTETAUSCH, KEIN ZWEITES DESIGN
   ---------------------------------------------------------------------------
   Er steht ab der ersten Zeile hier, obwohl er heute NICHT eingeschaltet ist
   (applyTheme() in index-app.js setzt fest "light"). Grund: würde das
   Wörterbuch ohne Dunkelfassung gebaut, müsste es beim Einschalten komplett
   neu gedacht werden.

   HEUTE OHNE WIRKUNG, ABER BEWUSST BEACHTET: `html[data-theme="dark"]` ist
   spezifischer als das `:root` in index.css und würde dieses schlagen. Da
   applyTheme() das Attribut nie auf "dark" setzt, greift der Block nicht –
   und sobald er greifen soll, ist genau das erwünscht.

   WAS NOCH FEHLT: 61 verstreute Dunkel-Regeln mit festen Farben in index.css
   und 143 feste Farben in index-app.js (docs/DUNKEL_BEFUND.md). Die stehen im
   Grundstand des Wächters und werden abgetragen, nicht auf einen Schlag
   repariert. Wer eine feste Farbe durch ein Token ersetzt, arbeitet damit
   gleichzeitig am Dunkelmodus – es ist dieselbe Aufgabe.
   =========================================================================== */
html[data-theme="dark"]{
  --paper:          #161B26;
  --surface-subtle: #1C2230;
  --card:           #1F2739;

  --ink:   #E8EBF2;
  --sub:   #B4BCCB;
  --muted: #8A93A5;
  /* Im Dunkeln ist die Schale nicht mehr waehlbar (html[data-theme="dark"]
     setzt --shell-bg fest auf --paper, index.css). Damit gibt es nur EINE
     Flaeche, und der Sonderton hat keinen Zweck mehr. */
  --muted-shell: #8A93A5;
  --on-brand: #FFFFFF;

  --line: #2E3646;
  --line-kraeftig: #414B5E;   /* Gegenstueck zum hellen Modus, s. o. */
  --hair: #252C3A;

  /* aufgehellt: der helle Markenton ist auf dunklem Grund zu schwach – die
     Marke muss auch dort lesbar bleiben. */
  --ls-glyph:   #A78BFA;   /* die Modul-Glyphen, aufgehellt - siehe oben */
  --eb-glyph:   #2DD4BF;
  --brand:      #6E8CFF;
  --brand-dk:   #9DB0FF;
  --brand-soft: #222C4A;

  --ok:       #2FB672;
  --ok-ink:   #6FD6A0;   /* im Dunkeln ist die Schrift HELLER als die Fläche –
                            die Rollen kehren sich um, die Namen bleiben     */
  --ok-soft:  #16301F;

  --amber:      #E08A1E;
  --amber-ink:  #F0B25C;
  --amber-soft: #33260F;

  --bad:      #EF5350;
  --bad-ink:  #FF8A85;
  --bad-soft: #351A1A;

  /* Violett im Dunkeln: dieselbe Rollenumkehr wie bei Grün/Bernstein/Rot –
     die weiche Fläche wird dunkel, die Schrift heller als die Fläche. */
  --violett:      #9A8CF0;
  --violett-ink:  #BCB0FB;
  --violett-soft: #272348;

  /* Rosa im Dunkeln: dieselbe Rollenumkehr. --rosa 5.63 auf --card,
     --rosa-ink 8.23 auf --card / 8.18 auf --rosa-soft. */
  --rosa:      #F472B6;
  --rosa-ink:  #F9A8D4;
  --rosa-soft: #3A1F2E;

  /* Fach-Farben im Dunkeln: dieselben Toene, aufgehellt - als Streifen und
     Beschriftung auf dunkler Karte muessen sie heller sein als auf weiss.
     Die NAMEN bleiben gleich, damit das Frontend nichts davon wissen muss. */
  --fach-mathematik: #2E5BFF;
  --fach-deutsch:    #DC2626;
  --fach-englisch:   #7C3AED;
  --fach-physik:     #0EA5A5;
  --fach-chemie:     #059669;
  --fach-biologie:   #16A34A;
  --fach-geschichte: #92400E;
  --fach-erdkunde:   #0E7490;
  --fach-politik:    #86198F;
  --fach-sport:      #F59E0B;
  --fach-kunst:      #EA580C;
  --fach-musik:      #9333EA;
  --fach-informatik: #475569;
  --fach-religion:   #6D6875;
  --fach-1: #7D97FF;
  --fach-2: #4FC9C9;
  --fach-3: #5CC98A;
  --fach-4: #F0808F;
  --fach-5: #B393F8;
  --fach-6: #D79B6A;
  --fach-7: #4FAFC4;
  --fach-8: #F0A473;
  --fach-9: #BE8FB1;
  --fach-10:#94A3B8;

  --e-1: 0 1px 2px rgba(0,0,0,.30), 0 8px 24px rgba(0,0,0,.35);
  --e-2: 0 14px 38px rgba(0,0,0,.45);
  --e-3: 0 24px 70px rgba(0,0,0,.60);
}

/* ===========================================================================
   ERKLÄRBLATT-DESIGNS – die Paletten der fertigen Blattvorlagen
   ===========================================================================
   BEFUND MURAT 27.08.2026: „bir sürü html taslaklar hazirlayip ilgili
   bilgileri oraya koyacaksin. önhazirlanmis html ler yani. ihticaca göre
   secer kisi. ama düzen bozulmaz htmlde."

   Er hat recht, und es ist die Umkehrung des bisherigen Wegs: Bis hierher
   wurde jedes Blatt mit jsPDF VERMESSEN und danach absolut positioniert –
   deshalb die abgeschnittenen Ecken und die verrutschten Kästen. Ein
   HTML-Blatt im normalen Fluss kann nicht abschneiden; der Drucker bricht
   um, nicht wir.

   WARUM DIE FARBEN HIER STEHEN UND NICHT IM DESIGN-STYLESHEET:
   `docs/DESIGN_SYSTEM.md` §3 – feste Farben gehören ins Wörterbuch. Damit
   bleibt `static/css/erklaerblatt-designs.css` frei von Hexwerten und der
   Wächter (`qa/unit/test_design_system.py`) kann dort bei NULL bleiben.

   AUFBAU EINER PALETTE (immer dieselben sechs Namen, damit das Stylesheet
   nur EINE Regelmenge braucht und die Vorlagen sich ausschliesslich in den
   Werten unterscheiden):
     --ebd-<id>-akzent   die tragende Farbe (Titel, Linien, Kastenrand)
     --ebd-<id>-weich    ihre helle Fläche (Kasten-Hintergrund)
     --ebd-<id>-dunkel   die dunkle Variante (Kopfband, starke Flächen)
     --ebd-<id>-papier   der Blattgrund
     --ebd-<id>-text     die Schriftfarbe des Fliesstextes
     --ebd-<id>-linie    Trennlinien und feine Ränder
   =========================================================================== */
:root{
  /* ---- Sek I: ruhig und klar ------------------------------------------ */
  --ebd-tafel-akzent:#0f766e;
  --ebd-tafel-weich:#ecfdf5;
  --ebd-tafel-dunkel:#134e4a;
  --ebd-tafel-papier:#ffffff;
  --ebd-tafel-text:#26333a;
  --ebd-tafel-linie:#cfe3de;

  --ebd-heft-akzent:#2563eb;
  --ebd-heft-weich:#eff6ff;
  --ebd-heft-dunkel:#1e3a8a;
  --ebd-heft-papier:#ffffff;
  --ebd-heft-text:#28313f;
  --ebd-heft-linie:#d3ddf0;

  --ebd-sonne-akzent:#c2620a;
  --ebd-sonne-weich:#fff5e8;
  --ebd-sonne-dunkel:#7c3f06;
  --ebd-sonne-papier:#fffdf9;
  --ebd-sonne-text:#3b3229;
  --ebd-sonne-linie:#f0ddc4;

  --ebd-wiese-akzent:#2f7d32;
  --ebd-wiese-weich:#eef8ee;
  --ebd-wiese-dunkel:#1b4d1e;
  --ebd-wiese-papier:#ffffff;
  --ebd-wiese-text:#2b342b;
  --ebd-wiese-linie:#cfe4cf;

  --ebd-notiz-akzent:#a16207;
  --ebd-notiz-weich:#fefbe8;
  --ebd-notiz-dunkel:#713f12;
  --ebd-notiz-papier:#fffef7;
  --ebd-notiz-text:#3a352a;
  --ebd-notiz-linie:#e8dfbe;

  /* ---- Sek II: sachlich ------------------------------------------------ */
  --ebd-akademie-akzent:#334155;
  --ebd-akademie-weich:#f4f6f8;
  --ebd-akademie-dunkel:#0f172a;
  --ebd-akademie-papier:#fdfdfc;
  --ebd-akademie-text:#2b3440;
  --ebd-akademie-linie:#dce1e7;

  --ebd-journal-akzent:#7f1d1d;
  --ebd-journal-weich:#fdf3f3;
  --ebd-journal-dunkel:#450a0a;
  --ebd-journal-papier:#fffdfd;
  --ebd-journal-text:#33292a;
  --ebd-journal-linie:#e7d5d5;

  --ebd-pruefung-akzent:#3f3f46;
  --ebd-pruefung-weich:#f4f4f5;
  --ebd-pruefung-dunkel:#18181b;
  --ebd-pruefung-papier:#ffffff;
  --ebd-pruefung-text:#27272a;
  --ebd-pruefung-linie:#d8d8dc;

  --ebd-technik-akzent:#1d4ed8;
  --ebd-technik-weich:#eef2ff;
  --ebd-technik-dunkel:#111827;
  --ebd-technik-papier:#ffffff;
  --ebd-technik-text:#1f2937;
  --ebd-technik-linie:#d6dcea;

  --ebd-kontrast-akzent:#111827;
  --ebd-kontrast-weich:#f3f4f6;
  --ebd-kontrast-dunkel:#000000;
  --ebd-kontrast-papier:#ffffff;
  --ebd-kontrast-text:#111827;
  --ebd-kontrast-linie:#c9ced6;

  /* ---- Fachgesichter --------------------------------------------------- */
  --ebd-mathe-akzent:#1d4ed8;
  --ebd-mathe-weich:#eef4ff;
  --ebd-mathe-dunkel:#0f172a;
  --ebd-mathe-papier:#ffffff;
  --ebd-mathe-text:#25303f;
  --ebd-mathe-linie:#d5dfef;

  --ebd-physik-akzent:#b45309;
  --ebd-physik-weich:#fff6ea;
  --ebd-physik-dunkel:#1f2937;
  --ebd-physik-papier:#ffffff;
  --ebd-physik-text:#2b3038;
  --ebd-physik-linie:#ecdcc6;

  --ebd-chemie-akzent:#0e7490;
  --ebd-chemie-weich:#ecfeff;
  --ebd-chemie-dunkel:#0f172a;
  --ebd-chemie-papier:#ffffff;
  --ebd-chemie-text:#27333a;
  --ebd-chemie-linie:#cbe6ec;

  --ebd-biologie-akzent:#15803d;
  --ebd-biologie-weich:#effaf1;
  --ebd-biologie-dunkel:#14532d;
  --ebd-biologie-papier:#ffffff;
  --ebd-biologie-text:#2a352d;
  --ebd-biologie-linie:#cee7d5;

  --ebd-geschichte-akzent:#8a5a1b;
  --ebd-geschichte-weich:#faf3e6;
  --ebd-geschichte-dunkel:#4a3418;
  --ebd-geschichte-papier:#fbf7ef;
  --ebd-geschichte-text:#3b3227;
  --ebd-geschichte-linie:#e2d3b8;

  --ebd-deutsch-akzent:#9a2c2c;
  --ebd-deutsch-weich:#fdf4f3;
  --ebd-deutsch-dunkel:#3f2222;
  --ebd-deutsch-papier:#fefdfb;
  --ebd-deutsch-text:#332e2c;
  --ebd-deutsch-linie:#e6dad6;

  --ebd-sprachen-akzent:#0f766e;
  --ebd-sprachen-weich:#eefbf8;
  --ebd-sprachen-dunkel:#134e4a;
  --ebd-sprachen-papier:#ffffff;
  --ebd-sprachen-text:#28353a;
  --ebd-sprachen-linie:#cde8e3;

  --ebd-geo-akzent:#0369a1;
  --ebd-geo-weich:#eff8fd;
  --ebd-geo-dunkel:#0c4a6e;
  --ebd-geo-papier:#fdfefe;
  --ebd-geo-text:#293640;
  --ebd-geo-linie:#cfe3ef;

  --ebd-kunst-akzent:#a21caf;
  --ebd-kunst-weich:#fdf2fd;
  --ebd-kunst-dunkel:#4a044e;
  --ebd-kunst-papier:#ffffff;
  --ebd-kunst-text:#332b36;
  --ebd-kunst-linie:#ebd6ec;

  --ebd-informatik-akzent:#0f766e;
  --ebd-informatik-weich:#f1f5f9;
  --ebd-informatik-dunkel:#0f172a;
  --ebd-informatik-papier:#ffffff;
  --ebd-informatik-text:#1f2937;
  --ebd-informatik-linie:#d5dbe3;

  /* ---- Jüngere Kinder --------------------------------------------------- */
  --ebd-bunt-akzent:#d6336c;
  --ebd-bunt-weich:#fff0f5;
  --ebd-bunt-dunkel:#7d1a3c;
  --ebd-bunt-papier:#fffdfe;
  --ebd-bunt-text:#3a2b31;
  --ebd-bunt-linie:#f6d4e0;

  --ebd-weltraum-akzent:#4338ca;
  --ebd-weltraum-weich:#eef0fe;
  --ebd-weltraum-dunkel:#1e1b4b;
  --ebd-weltraum-papier:#fdfdff;
  --ebd-weltraum-text:#2b2b3d;
  --ebd-weltraum-linie:#d8daf5;

  /* ---- Nachtrag v2.504.0: die Vorlagen nach Gemini's Entwürfen ---------
     Sieben eigene Paletten; die übrigen neuen Vorlagen leihen sich eine der
     vorhandenen (siehe erklaerblatt-designs.css). Farbe ist die SCHWÄCHSTE
     Unterscheidung – die neuen Vorlagen unterscheiden sich vor allem im
     AUFBAU (`.ebf-*`) und im Blattschmuck (`.ebs-*`). */
  --ebd-analysis-akzent:#047857;
  --ebd-analysis-weich:#ecfdf5;
  --ebd-analysis-dunkel:#064e3b;
  --ebd-analysis-papier:#ffffff;
  --ebd-analysis-text:#27332e;
  --ebd-analysis-linie:#cbe6da;

  --ebd-zentriert-akzent:#52525b;
  --ebd-zentriert-weich:#f4f4f5;
  --ebd-zentriert-dunkel:#18181b;
  --ebd-zentriert-papier:#fefefe;
  --ebd-zentriert-text:#2a2a2e;
  --ebd-zentriert-linie:#d6d6db;

  --ebd-mission-akzent:#1d4ed8;
  --ebd-mission-weich:#eef3ff;
  --ebd-mission-dunkel:#0b1b3f;
  --ebd-mission-papier:#ffffff;
  --ebd-mission-text:#242b3a;
  --ebd-mission-linie:#d3ddf5;

  --ebd-neseli-akzent:#0d9488;
  --ebd-neseli-weich:#e9f8f6;
  --ebd-neseli-dunkel:#134e4a;
  --ebd-neseli-papier:#fdfffe;
  --ebd-neseli-text:#26353a;
  --ebd-neseli-linie:#c9e9e3;

  --ebd-natur-akzent:#4d7c0f;
  --ebd-natur-weich:#f2f9e8;
  --ebd-natur-dunkel:#365314;
  --ebd-natur-papier:#fdfdfa;
  --ebd-natur-text:#2f3527;
  --ebd-natur-linie:#dbe9c6;

  --ebd-firin-akzent:#be185d;
  --ebd-firin-weich:#fdf2f7;
  --ebd-firin-dunkel:#831843;
  --ebd-firin-papier:#fffaf4;
  --ebd-firin-text:#3d2f33;
  --ebd-firin-linie:#f3d9e4;

  --ebd-orman-akzent:#3f8f4d;
  --ebd-orman-weich:#eef8ee;
  --ebd-orman-dunkel:#245c2f;
  --ebd-orman-papier:#fdfcf7;
  --ebd-orman-text:#33382f;
  --ebd-orman-linie:#d3e8d3;

  --ebd-baecker-akzent:#b45309;
  --ebd-baecker-weich:#fff7ec;
  --ebd-baecker-dunkel:#7c2d12;
  --ebd-baecker-papier:#fffcf6;
  --ebd-baecker-text:#3d322a;
  --ebd-baecker-linie:#f0dcc2;
}
