/* ====== PrepP — die Prüfungsoberfläche dunkel (13.09.2026) ======
   Jonas: „In der Prüfung soll man zwischen Dark und Light Mode wechseln
   können, dann kann jeder entscheiden, wie er es haben möchte. Das Gleiche
   auch für die Einsicht in der Prüfungsoberfläche."

   Das hebt „die Prüfungsansicht bleibt in beiden Themes hell" für eine
   AUSDRÜCKLICHE Wahl auf. Der Standard bleibt hell, und hell bleibt
   pixelgleich — daran hängen die drei Regeln dieser Datei:

   1. JEDE Regel beginnt mit `body.ex-dunkel`. Die Klasse setzt genau eine
      Stelle (pruefDunkelAnwenden in js/app.js): nur bei
      `prefs().pruefDunkel === true` und nur, solange der body KEIN
      `pp-mode` trägt. Im Portal steht sie nie, und die PrepP-Fassung der
      Einsicht gehört dem Portal-Theme. Ohne die Klasse greift hier keine
      einzige Zeile — test/verify-pruef-dunkel.js liest das als Regel.
   2. css/exam.css bleibt unangetastet (Zwei-Welten). Diese Datei steht
      direkt dahinter und überschreibt nur FARBEN: keine Maße, keine
      Abstände, keine Struktur. Wo dunkel eine Kante braucht, die hell nicht
      hatte, steht sie als `box-shadow` — der verschiebt nichts.
   3. Feste Werte statt --pp-Tokens. Der Schalter ist unabhängig vom
      Portal-Theme; ein Token trüge im hellen Portal seinen hellen Wert, und
      die „dunkle" Prüfung wäre hell (Fallstrick 11 in einer vierten
      Gestalt). Die eine Ausnahme sind die zwei PrepP-Bausteine, die in der
      Prüfungsfassung auf Tokens laufen (KI-Leiste, Bewerter-Karte): Dort
      werden die Tokens LOKAL auf dunkle Werte gestellt — wörtlich das
      Muster, mit dem ki-fenster.css und prepp.css sie heute hell pinnen.

   SPEZIFITÄT, die Falle beim Überschreiben: `body.ex-dunkel .x` (0,2,1)
   schlägt nicht nur `.x` (0,1,0), sondern auch jede Zustandsregel
   `.x.zustand` (0,2,0) aus exam.css. Wer hier eine Eigenschaft an einer
   Grundklasse umfärbt, zieht deshalb jeden Zustand nach, der DIESELBE
   Eigenschaft setzt (hover, answered, graded-*, active, done, on) — und
   zwar NACH der Grundregel, weil bei gleicher Spezifität die spätere
   gewinnt. Die Reihenfolge der Blöcke unten ist deshalb Absicht.

   Schwarze Zeichnungen (Schaltbilder, Bode, PLA, Graphen, Fotos) liegen auf
   einer hellen Kachel wie `.tr-kachel` im dunklen Training — KEINE
   Invertierung, kein Umfärben der SVG-Quellen. Anders als dort steht der
   weiße Rand hier als `box-shadow`-Spreizung statt als `padding`: So bleibt
   jede Abbildung pixelgenau so groß wie im hellen Bild.

   Kontraste an den GEMALTEN Farben gemessen (WebKit,
   docs/abnahme/pruef-dunkel-0913): Schrift ≥ 4,5 : 1, Rahmen von
   Bedienelementen ≥ 3 : 1. docs/PRUEFUNG-DUNKEL-2026-09-13.md */

/* ---------------- Die Farben ----------------
   Die Namen aus exam.css, dunkel belegt — alles, was dort über var() läuft,
   folgt damit von selbst. --navy, --navy-2, --gold und --blue-btn bleiben:
   Die Kopfleiste ist schon dunkel, Gold ist nur Rand und Stern, und
   --blue-btn ist eine GEFÜLLTE Knopffläche (siehe .btn-blue unten).
   Die gerechneten Kontraste gegen die Kartenfläche --card stehen daneben. */
body.ex-dunkel {
  --bg: #11161c;
  --card: #1b2129;
  --line: #323b46;
  --line-dark: #6f7c8b;      /* Unterstrich und Rand der Felder: 3,80 : 1 */
  --txt: #d6dde5;            /* 11,83 : 1 */
  --txt-head: #e9eef3;       /* 13,88 : 1 */
  --muted: #9ba7b3;          /*  6,61 : 1, auf --task-bg 5,68 */
  --muted-2: #a8b3be;        /*  7,60 : 1 */
  --task-bg: #252d37;
  --answer-bg: #1f262e;
  --pill-bg: #1c3148;
  --blue: #6db2f2;           /*  7,18 : 1 */
  --blue-dark: #a9d1f7;      /*  Text auf --pill-bg: 8,31 : 1 */
  --ok: #5fcf92;             /*  8,35 : 1 */
  --err: #f38b81;            /*  6,81 : 1 */
  --shadow: 0 0 0 1px #262e38, 0 1px 4px rgba(0, 0, 0, .5);
  /* Eigene Namen mit Präfix (Fallstrick 11) für die Flächen, die exam.css
     als Literal schreibt. */
  --exd-hover: #262e38;
  /* WO6: die Schrift-Töne aus exam.css (--blue-text, --muted-text,
     --warn-text) dunkel belegt — dieselben Werte wie --blue, --muted und
     --exd-warn, deren Kontraste oben stehen. */
  --blue-text: #6db2f2;
  --muted-text: #9ba7b3;
  --warn-text: #e6bb5c;
  --exd-feld: #151a20;
  --exd-kante: #4b5664;
  --exd-warn: #e6bb5c;       /*  8,97 : 1 */
  --exd-ok-tint: #16311f;
  --exd-err-tint: #3a1e1e;
  --exd-warn-tint: #352b12;
  --exd-blau-tint: #1a2c40;
  /* Die eingebauten Bedienelemente (Radio, Kästchen, Auswahlliste,
     Bildlaufleisten) zeichnet der Browser dann ebenfalls dunkel. */
  color-scheme: dark;
}

/* ---------------- Kopfleiste, Uhr, Punktekasten ---------------- */
/* Die Leiste bleibt navyblau (sie ist das Erkennungszeichen der
   Oberfläche); auf dem dunklen Grund bekommt sie eine Unterkante. */
body.ex-dunkel .exam-top { box-shadow: 0 1px 0 #2a3a50; }
body.ex-dunkel .timerbox,
body.ex-dunkel .viewbadge,
body.ex-dunkel .scorebox {
  background: var(--card);
  box-shadow: 0 0 0 1px #2a323c, 0 1px 6px rgba(0, 0, 0, .55);
}
body.ex-dunkel .timerbox.warn { color: var(--exd-warn); }
body.ex-dunkel .scorebox { color: var(--txt-head); }
/* Der Fassungswechsel im Punktekasten (Regeln in css/prepp.css): Grund-
   regel, dann Hover und `.on` — beide setzen dieselbe Eigenschaft. */
body.ex-dunkel .scorebox .ein-switch.flat { border-color: var(--line-dark); }
body.ex-dunkel .scorebox .ein-switch.flat button { color: var(--muted-2); }
body.ex-dunkel .scorebox .ein-switch.flat button + button { border-left-color: var(--line-dark); }
body.ex-dunkel .scorebox .ein-switch.flat button:hover { color: var(--txt-head); }
body.ex-dunkel .scorebox .ein-switch.flat button.on { background: var(--pill-bg); color: var(--txt-head); }
body.ex-dunkel .scorebox-note,
body.ex-dunkel .scorebox-note.offen { color: var(--muted-2); }
body.ex-dunkel .scorebox-note b { color: var(--txt-head); }

/* ---------------- Untere Leiste und Aufgabenstreifen ---------------- */
body.ex-dunkel .exam-bottom {
  background: var(--card);
  box-shadow: 0 -1px 0 #2a323c, 0 -1px 6px rgba(0, 0, 0, .45);
}
body.ex-dunkel .ov-btn { background: transparent; border-color: var(--line-dark); color: var(--txt); }
body.ex-dunkel .ov-btn.on { background: var(--pill-bg); border-color: var(--blue-dark); color: var(--blue-dark); }
/* Reihenfolge wie in exam.css: bearbeitet vor aktiv vor den drei
   Bewertungsfarben der Einsicht (dort gewinnt die Farbe der Wertung). */
body.ex-dunkel .itembtn { color: var(--muted); }
body.ex-dunkel .itembtn.answered { color: var(--txt-head); }
body.ex-dunkel .itembtn:hover { background: var(--exd-hover); }
body.ex-dunkel .itembtn.active { color: var(--blue); }
body.ex-dunkel .itembtn.res-full { color: var(--ok); }
body.ex-dunkel .itembtn.res-partial { color: var(--exd-warn); }
body.ex-dunkel .itembtn.res-zero { color: var(--err); }
body.ex-dunkel .submit-btn { background: transparent; color: var(--txt-head); }
body.ex-dunkel .submit-btn:hover { background: var(--exd-hover); }

/* ---------------- Blätterkarten, Aufgabenkarte, Text ---------------- */
body.ex-dunkel .navcard { background: var(--card); color: var(--txt); }
body.ex-dunkel .navcard .dir { color: var(--muted-2); }
body.ex-dunkel .navcard .arrow { color: var(--txt); }
body.ex-dunkel .item-card { background: var(--card); }
body.ex-dunkel .item-topic { color: var(--txt-head); }
/* Verweise im Aufgabentext — nur die ohne eigene Klasse (ein Knopf, der
   ein <a> ist, bringt seine Farbe selbst mit). */
body.ex-dunkel .item-card a:not([class]) { color: var(--blue); }
body.ex-dunkel .iblock-img .cap,
body.ex-dunkel .tab-cap,
body.ex-dunkel .opt-cap,
body.ex-dunkel .iblock-figrow figcaption,
body.ex-dunkel .iblock-figrow .cap,
body.ex-dunkel .radio-opt .opt-txt { color: var(--muted-2); }
body.ex-dunkel .iblock-html-tot { color: var(--err); border-color: #7a4a4a; }
body.ex-dunkel .fl-row .fl-num { background: #2c5a8f; }
body.ex-dunkel .task-bar .icon { color: var(--muted); }
body.ex-dunkel .task-bar .txt { color: var(--txt); }
body.ex-dunkel .answer-row { border-top-color: var(--line); }
body.ex-dunkel .multi-hint { color: var(--muted); }
/* Physik: Die Konvention setzt Variablennamen als
   `<code style="color:#c0392b">` in den Aufgabentext (PHYSIK_REGELN in
   js/ai-meta.js). Das Rot ist für weißes Papier gemacht und steht auf der
   dunklen Karte bei 2,98 : 1 — ausgerechnet die Namen, die man tippen
   muss. Ein Inline-Stil lässt sich nur mit !important überstimmen; der
   Selektor trifft genau diese eine Konvention und sonst nichts. */
body.ex-dunkel .item-card code[style*="#c0392b" i] { color: var(--err) !important; }
body.ex-dunkel code.red { color: var(--err); background: var(--exd-err-tint); }
/* Tabellen und Formelzeilen, die als HTML im Aufgabentext stehen. */
body.ex-dunkel .formula { background: var(--task-bg); border-left-color: #4f6c8c; }
body.ex-dunkel .given-table td { border-color: var(--exd-kante); }
body.ex-dunkel .given-table td:first-child { background: var(--task-bg); color: var(--blue-dark); }
body.ex-dunkel .ov-table th { border-bottom-color: var(--line-dark); color: var(--txt-head); }
body.ex-dunkel .ov-table td { border-bottom-color: var(--line); }
body.ex-dunkel .ov-head { color: var(--txt-head); border-bottom-color: var(--line); }

/* ---------------- Die helle Kachel unter Zeichnungen ----------------
   Weiß bleibt hier bewusst hart: Die Zeichnungen sind für weißes Papier
   gemacht (Muster .tr-kachel). Der Rand ist eine Spreizung — 10 px weiß,
   darum eine 1-px-Kante — und nimmt im Layout keinen Platz ein. */
body.ex-dunkel .iblock-img .inline-svg,
body.ex-dunkel .iblock-img img,
body.ex-dunkel .iblock-figrow .inline-svg,
body.ex-dunkel .iblock-figrow img,
body.ex-dunkel .fl-fig,
body.ex-dunkel .pla-wrap,
body.ex-dunkel .radio-opt .opt-fig {
  background: #fff;
  box-shadow: 0 0 0 10px #fff, 0 0 0 11px var(--exd-kante);
}

/* ---------------- Eingabefelder ---------------- */
body.ex-dunkel .ex-input { color: var(--txt-head); }
body.ex-dunkel .ex-input::placeholder { color: #8e99a5; }
body.ex-dunkel .ex-input.answered { background: var(--exd-blau-tint); }
body.ex-dunkel .ex-textarea,
body.ex-dunkel pre.res-code { background: var(--exd-feld); color: var(--txt-head); }
body.ex-dunkel pre.res-code { border-color: var(--line); }
/* Die Notiz eines Handschrift-Feldes steht seit dem 15.09.2026 in einem
   <div class="hs-notiz-txt"> statt in einem <pre> (KaTeX' ignoredTags,
   siehe hsNotizHtml in js/app.js). Sie bekommt hier dieselben drei
   Werte wie der Kasten, aus dem sie kommt — sonst haette der Umbau ihr
   im dunklen Pruefungs-Theme die Faerbung genommen. */
body.ex-dunkel .hs-notiz-txt {
  background: var(--exd-feld); color: var(--txt-head); border-color: var(--line);
}
body.ex-dunkel .ex-select { background: var(--exd-feld); }
body.ex-dunkel .radio-opt { border-top-color: var(--line); }
body.ex-dunkel .radio-list.opt-grid .radio-opt { border-color: var(--line); }
/* Lückentext: Grund, Fokus, beantwortet — in dieser Reihenfolge, die
   Bewertung folgt im Block „Bewertung" weiter unten. */
body.ex-dunkel .cloze-in { background: var(--exd-feld); color: var(--txt-head); }
body.ex-dunkel .cloze-in:focus { background: #172636; }
body.ex-dunkel .cloze-in.answered { background: var(--exd-blau-tint); }
body.ex-dunkel .cz-bank { color: var(--muted-2); }
body.ex-dunkel .cz-chip { background: var(--task-bg); border-color: var(--exd-kante); color: var(--txt); }
/* `tr + tr` trägt die Linie nur in der Telefonfassung (exam.css, 760 px);
   am Desktop hat die Zeile keinen Rand, die Farbe ändert dort nichts. */
body.ex-dunkel .match-table tr + tr td,
body.ex-dunkel .match-table tr + tr { border-top-color: var(--line); }
/* Matrix und Vektor. */
body.ex-dunkel table.mx-table { border-color: #8a96a3; }
body.ex-dunkel table.mx-table td { border-color: var(--line-dark); }
body.ex-dunkel table.mx-table .mx-cell { background: var(--exd-feld); }
/* Formelfeld (Antwortfläche mit gesetzter Formel). */
body.ex-dunkel .mexpr-face { color: var(--txt-head); }
body.ex-dunkel .mexpr-face.answered { background: var(--exd-blau-tint); }
body.ex-dunkel .mexpr-face .mexpr-ph { color: #8e99a5; }
body.ex-dunkel .mexpr-chip { background: var(--task-bg); }
/* Physik-Fassung: der Interpretations-Kasten unter dem Textfeld. */
body.ex-dunkel .mexpr-panel:not(:empty) { background: var(--task-bg); border-color: var(--exd-kante); }
body.ex-dunkel .mexpr-panel .mexpr-int { color: var(--txt); }
body.ex-dunkel .mexpr-panel .mexpr-fremd { color: var(--exd-warn); }
body.ex-dunkel .mexpr-panel .mexpr-invalid { background: var(--exd-err-tint); border-color: #7a3b36; color: var(--err); }

/* ---------------- Tabellen, Code, Statusbits ---------------- */
/* .dyn-table steht mit in jedem Selektor: Der Altname steckt wörtlich in
   gespeicherten Importen (siehe exam.css). */
body.ex-dunkel table.ex-table th,
body.ex-dunkel table.dyn-table th { color: var(--txt-head); border-bottom-color: var(--line-dark); }
body.ex-dunkel table.ex-table td,
body.ex-dunkel table.dyn-table td { border-bottom-color: var(--line); }
/* Die klebende Befehlsspalte des Mikroprogramms braucht einen DECKENDEN
   Grund (C16) — hell ist er weiß, hier die Kartenfläche. */
body.ex-dunkel table.ex-table.mp-table th:first-child,
body.ex-dunkel table.dyn-table.mp-table th:first-child,
body.ex-dunkel table.ex-table.mp-table td:first-child,
body.ex-dunkel table.dyn-table.mp-table td:first-child { background: var(--card); }
body.ex-dunkel .kvcorner { color: var(--txt); }
body.ex-dunkel table.machine th { background: var(--task-bg); border-color: var(--exd-kante); }
body.ex-dunkel table.machine td { border-color: var(--exd-kante); }
body.ex-dunkel pre.asm span { background: var(--exd-err-tint); color: var(--err); }
body.ex-dunkel .codeblock { border-color: var(--line); background: var(--exd-feld); }
body.ex-dunkel .codeline .clabel { color: var(--blue); }
body.ex-dunkel .codeline .ccomment { color: var(--muted-2); }
body.ex-dunkel .attach-btn { background: transparent; border-color: var(--blue); color: var(--blue); }
body.ex-dunkel .pla-hint { color: var(--muted-2); }

/* ---------------- Übersicht der Prüfung ---------------- */
body.ex-dunkel .ovcell { background: var(--card); border-color: var(--exd-kante); }
body.ex-dunkel .ovcell:hover { border-color: var(--blue); }
body.ex-dunkel .ovcell .s { color: var(--muted-2); }
body.ex-dunkel .ovcell.done .s { color: var(--ok); }

/* ---------------- Bewertung (Einsicht, #view mit Lösungen) ---------------- */
body.ex-dunkel .ex-input.graded-ok,
body.ex-dunkel .ex-textarea.graded-ok,
body.ex-dunkel .ex-select.graded-ok,
body.ex-dunkel .mexpr-face.graded-ok,
body.ex-dunkel table.mx-table .mx-cell.graded-ok,
body.ex-dunkel .radio-opt.opt-correct { background: var(--exd-ok-tint); }
body.ex-dunkel .ex-input.graded-err,
body.ex-dunkel .ex-textarea.graded-err,
body.ex-dunkel .ex-select.graded-err,
body.ex-dunkel .mexpr-face.graded-err,
body.ex-dunkel table.mx-table .mx-cell.graded-err,
body.ex-dunkel .radio-opt.opt-wrong { background: var(--exd-err-tint); }
body.ex-dunkel .ex-input.graded-part { background: var(--exd-warn-tint); }
body.ex-dunkel .ex-input.graded-manual,
body.ex-dunkel .ex-textarea.graded-manual { background: var(--exd-blau-tint); }
body.ex-dunkel .cloze-in.graded-ok { border-bottom-color: var(--ok); background: var(--exd-ok-tint); }
body.ex-dunkel .cloze-in.graded-err { border-bottom-color: var(--err); background: var(--exd-err-tint); }
body.ex-dunkel .gmark.part,
body.ex-dunkel .res-field .mark.part { color: var(--exd-warn); }
/* Schlüssel-Badge (über --pill-bg/--blue-dark), Lösungsweg, Hinweise. */
body.ex-dunkel .solution-path { border-color: #34506e; }
body.ex-dunkel .sp-head { background: var(--pill-bg); }
body.ex-dunkel .sp-body { color: var(--txt); }
body.ex-dunkel .sp-row { border-bottom-color: var(--line); }
body.ex-dunkel .sp-row .sp-note { color: var(--err); }
body.ex-dunkel .manual-hint.hs-papier { background: var(--exd-blau-tint); }
body.ex-dunkel .auto-hint { background: var(--exd-blau-tint); border-color: #34506e; color: var(--blue-dark); }
/* Handschrift: Das FOTO bleibt auf Weiß (es ist ein Blatt Papier, und
   „wird geladen" steht auf dieser weißen Fläche — deshalb fehlt
   .hs-foto-lade hier ausdrücklich). Umgefärbt wird, was Schrift ist. */
body.ex-dunkel .hs-foto { border-color: var(--exd-kante); }
body.ex-dunkel .hs-zaehler,
body.ex-dunkel .hs-msg,
body.ex-dunkel .hs-notiz-kopf { color: var(--muted-2); }
body.ex-dunkel .hs-msg.err { color: var(--err); }
body.ex-dunkel .hs-foto-weg { background: var(--card); border-color: var(--exd-kante); color: var(--txt); }
body.ex-dunkel .hs-foto-weg:hover { border-color: var(--err); color: var(--err); }
/* Kopf der Aufgabe in der Einsicht: Stern, Filter, Punkte von Hand. */
body.ex-dunkel .res-flag { background: transparent; }
body.ex-dunkel .res-flag.on { background: #3a3014; }
body.ex-dunkel .res-filter { color: var(--muted-2); }
body.ex-dunkel .override-row { color: var(--muted-2); }
body.ex-dunkel .override-row .or-label { color: var(--txt); }
body.ex-dunkel .override-row input { background: var(--exd-feld); color: var(--txt-head); border-color: var(--line-dark); }
body.ex-dunkel .res-sum-row { border-bottom-color: var(--line); }
body.ex-dunkel .res-sum-row:hover { background: var(--exd-hover); }
body.ex-dunkel .res-sum-hint { color: var(--muted-2); }

/* ---------------- Dialoge der Prüfung ----------------
   Abgeben und Formeleingabe hängen am body. Die Laborfenster tragen die
   Marke `lab-modal` und färbt css/lab.css — sie bleiben hier außen vor. */
body.ex-dunkel .modal-bg:not(.lab-modal) > .modal {
  background: var(--card); color: var(--txt);
  box-shadow: 0 0 0 1px #323b46, 0 8px 36px rgba(0, 0, 0, .6);
}
body.ex-dunkel .modal .warnline { color: var(--exd-warn); }
body.ex-dunkel .mexpr-syntax { color: var(--muted-2); }
body.ex-dunkel .mexpr-modal .mexpr-input { background: var(--exd-feld); }
body.ex-dunkel .mexpr-preview .mexpr-none,
body.ex-dunkel .mexpr-preview .mexpr-nofml,
body.ex-dunkel .mexpr-preview .mexpr-varhint { color: var(--muted); }
body.ex-dunkel .btn-ghost { border-color: var(--line-dark); color: var(--muted-2); }
body.ex-dunkel .btn-ghost:hover { background: var(--exd-hover); color: var(--txt-head); border-color: #8a96a3; }
/* Weiß auf --blue-btn ergab mit #2f80d0 4,10 : 1 — hell steht seit
   rel1018-R6 #2a72ba (4,98), dunkel wird die Fläche so weit abgesenkt,
   dass es 5,42 sind. */
body.ex-dunkel .btn-blue { background: #2b6cb0; }
body.ex-dunkel .btn-blue:hover { background: #245c96; }
body.ex-dunkel .btn-outline { background: transparent; color: var(--blue); border-color: var(--blue); }
body.ex-dunkel .btn-outline:hover { background: var(--exd-blau-tint); }

/* ---------------- PrepP-Bausteine in der Prüfungsfassung ---------------- */
/* Die KI-Reiterleiste (css/ki-fenster.css pinnt ihre Tokens dort hell:
   `body:not(.pp-mode) .kf-wirt-dyn`, 0,2,1). Diese Regel muss sie
   schlagen, und exam-dunkel.css lädt VOR ki-fenster.css — deshalb das
   zusätzliche `:not(.pp-mode)` (0,3,1). Die Werte sind die des dunklen
   Portal-Themes, die Flächen auf die Kartenfarbe dieser Datei gezogen. */
body.ex-dunkel:not(.pp-mode) .kf-wirt-dyn {
  background: var(--card);
  --pp-bg: #1b2129;
  --pp-bg-2: #1b2129;
  --pp-surface: #1b2129;
  --pp-surface-2: #252d37;
  --pp-line: #323b46;
  --pp-line-2: #4b5664;
  --pp-line-feld: #6e7681;
  --pp-text: #e9eef3;
  --pp-text-2: #a8b3be;
  --pp-text-3: #9ba7b3;
  --pp-accent: #5a9cf8;
  --pp-accent-2: #7db1fa;
  --pp-accent-contrast: #0d1117;
  --pp-accent-tint: rgba(31, 111, 235, .22);
  --pp-accent-line: rgba(90, 156, 248, .45);
  --pp-err: #f38b81;
  --pp-err-tint: rgba(248, 81, 73, .15);
}
/* Die Bewerter-Karte (css/prepp.css pinnt sie ebenso hell, gleiche
   Spezifitätsfrage). */
body.ex-dunkel:not(.pp-mode) .ki-bew-halter {
  --pp-surface: #1b2129;
  --pp-surface-2: #252d37;
  --pp-line: #323b46;
  --pp-line-2: #4b5664;
  --pp-line-feld: #6e7681;
  --pp-text: #e9eef3;
  --pp-text-2: #a8b3be;
  --pp-text-3: #9ba7b3;
  --pp-accent: #5a9cf8;
  --pp-accent-2: #7db1fa;
  --pp-accent-contrast: #0d1117;
  --pp-accent-tint: rgba(31, 111, 235, .22);
  --pp-accent-line: rgba(90, 156, 248, .45);
  --pp-ok: #5fcf92;
  --pp-warn: #e6bb5c;
  --pp-err: #f38b81;
}
/* ⚑ „Falsch bewertet?" steht auf --pp-text-3 — also auf dem PORTAL-Theme,
   das hier nichts zu sagen hat. Grundregel, dann Hover. */
body.ex-dunkel .ein-melde { color: var(--muted-2); }
body.ex-dunkel .ein-melde:hover,
body.ex-dunkel .ein-melde:focus-visible { color: var(--blue); }
/* Der Hinweis unter einem Graphen (fester heller Ton #175bc7). */
body.ex-dunkel .geo-oeffnen { color: var(--blue); }
