/* Erzeugt aus src/app/globals.css (scripts/design-tokens.mjs) – nicht von Hand ändern. */
/* Für angebundene Dienste (Rechnungsmodul). Hell: :root, Dunkel: .dark am <html>. */
:root {
  color-scheme: light;               /* native Controls (Datum/Zahl-Picker, Scrollbars) hell */

  /* ══ die 60 V3-Rollen, Fassung HELL (= `V3_HELL`) ═════════════════════════ */

  /* Auskunft — „hell" oder „dunkel" für die wenigen Fälle, in denen sich die LOGIK
     unterscheidet. In der PWA gibt es dafür auch `useTheme().resolvedTheme`
     (next-themes); diese Rolle ist der Weg für CSS und für `getComputedStyle`. */
  --v3-schema: "hell";

  /* Der Grund: drei Stopps, 150 Grad, zweiter bei 60 %. */
  --v3-verlauf-1: #F7FAFD;
  --v3-verlauf-2: #F1F5FB;
  --v3-verlauf-3: #E6EEF8;
  --v3-verlauf-stelle-1: 0%;
  --v3-verlauf-stelle-2: 60%;
  --v3-verlauf-stelle-3: 100%;
  /* 🔴 Ton und Deckkraft GETRENNT — nicht als rgba zusammenlegen. In SVG verwirft
     `stopColor="rgba(...)"` den Alphakanal (Gerätebefund 24.08.2026: aus dem zarten
     Lichtschein wurde ein deckender blauer Kreis über der halben Startseite).
     🔴 Und der HELLE Ton ist ein anderer: `#3B7FCC` bei 10 % über dem hellsten
     Verlaufsstopp ergibt Leuchtdichte 0,8428 und ist damit DUNKLER als der dunkelste
     Punkt des Grundes (#E6EEF8 = 0,8475) — der „Lichtschein" wäre der dunkelste Fleck
     des Bildschirms. `#5B9FE8` bei 10 % ergibt 0,8687 und hellt auf. */
  --v3-glow-ton: #5B9FE8;
  --v3-glow-deckung: 0.10;
  /* Der deckende Trägerton — derselbe Wert wie `--v3-verlauf-1`, aber eine andere
     Aussage: „hier liegt etwas VOR dem Verlauf" (Glocke, Menüblatt, Marken-Rand). */
  --v3-traeger: #F7FAFD;

  /* Marke und Aktion. Vier davon sind hell ANDERE Werte, weil die dunklen hier auf
     1,32–2,37:1 kämen. */
  --v3-aktion:          #1B4F8A;
  --v3-band-1:          #2363A8;
  --v3-akzent:          #2363A8;
  --v3-akzent-hell:     #3D6389;
  --v3-gruen:           #166534;
  --v3-gruen-punkt:     #15803D;
  --v3-feld-aktiv:      #EEF5FC;
  --v3-rand-netto:      rgba(35,99,168,0.35);
  --v3-rand-sekundaer:  rgba(35,99,168,0.45);

  /* Die zehn Textstufen: hell ist es TINTE mit Deckkraft, nicht Weiß. */
  --v3-stufe-100: #0A1F3C;
  --v3-stufe-90:  rgba(10,31,60,0.86);
  --v3-stufe-82:  rgba(10,31,60,0.80);
  --v3-stufe-78:  rgba(10,31,60,0.76);
  --v3-stufe-72:  rgba(10,31,60,0.72);
  --v3-stufe-70:  rgba(10,31,60,0.70);
  --v3-stufe-60:  rgba(10,31,60,0.68);
  --v3-stufe-55:  rgba(10,31,60,0.64);
  --v3-stufe-50:  rgba(10,31,60,0.62);
  --v3-stufe-45:  rgba(10,31,60,0.58);

  /* Die Flächen kehren hell die Richtung um: auf dunklem Grund hebt eine Karte mit
     Licht ab, auf hellem wäre eine dunklere Karte ein Loch im Papier. Deshalb sind
     alle vier hier DECKENDES WEISS. 🔴 Der Preis steht offen da: eine weiße Karte auf
     dem hellsten Verlaufsstopp kommt auf 1,05:1 — im hellen Theme macht der RAND die
     Kante, nicht die Fläche. Eine Karte ohne Rand ist hier keine Karte. Genau deshalb
     kommt V3 ohne Schatten aus. */
  --v3-flaeche-06: #FFFFFF;
  --v3-flaeche-07: #FFFFFF;
  --v3-flaeche-08: #FFFFFF;
  --v3-flaeche-12: #FFFFFF;

  /* Ränder und Haarlinien — hell Tinte. */
  --v3-rand-14: rgba(10,31,60,0.10);
  --v3-rand-16: rgba(10,31,60,0.12);
  --v3-rand-18: rgba(10,31,60,0.12);
  --v3-rand-20: rgba(10,31,60,0.15);
  --v3-rand-22: rgba(10,31,60,0.16);
  --v3-rand-24: rgba(10,31,60,0.18);

  /* Schrift auf einer GEFÜLLTEN Fläche. */
  --v3-auf-knopf:      #FFFFFF;
  --v3-auf-warn-knopf: #FFFFFF;

  /* Drei Aufgaben, die eine Stufennummer nicht ausdrücken kann, und die Ringrille. */
  --v3-platzhalter:  rgba(10,31,60,0.68);
  --v3-nachbarmonat: rgba(10,31,60,0.68);
  --v3-raster-zahl:  rgba(10,31,60,0.68);
  --v3-ring-spur:    rgba(10,31,60,0.15);

  /* Ein Rand, der die 3:1 für Bedienelemente hält (WCAG 1.4.11) — keine Randstufe
     tut das (rand14…24 liegen bei 1,22–1,45:1). Gemessen: 3,32–3,48:1. */
  --v3-rand-bedien:    rgba(10,31,60,0.52);
  --v3-flaeche-still:  rgba(10,31,60,0.10);
  /* Eine Linie, an der eine AUSSAGE hängt (Ziellinie „8 h") — deshalb 3:1 und keine
     Randstufe. Gemessen 3,92:1 auf Weiß. */
  --v3-linie-info:     rgba(10,31,60,0.56);
  --v3-grund-halb:     #EFF4FB;
  --v3-wochenende:     rgba(10,31,60,0.12);
  --v3-band-bruch:     #F1F5FB;
  --v3-band-schraffur: rgba(10,31,60,0.12);

  /* Die Zustandsfamilie — hell aus `FARBEN.hell`, nicht neu erfunden. Diese drei
     Schriftfarben sind DUNKLER als die naheliegenden (#15803D / #B45309 / #DC2626):
     auf der eigenen sanften Fläche kamen die naheliegenden auf 4,10 / 4,21 / 3,87:1
     und lagen damit unter den 4,5:1, die WCAG für Kleintext verlangt. */
  --v3-warn-schrift:   #92400E;
  --v3-warn-flaeche:   rgba(245,159,10,0.14);
  --v3-warn-linie:     rgba(245,159,10,0.35);
  --v3-fehl-schrift:   #BE1B1B;
  --v3-fehl-flaeche:   rgba(237,44,44,0.10);
  --v3-fehl-linie:     rgba(237,44,44,0.35);
  --v3-erfolg-schrift: #126B33;
  --v3-erfolg-flaeche: rgba(41,163,86,0.12);
  --v3-erfolg-linie:   rgba(41,163,86,0.35);
  --v3-warn-knopf:     #B45309;
  --v3-gefahr-knopf:   #B91C1C;
  --v3-glocke-marke:   #E11D48;
  /* Heute-Marke (Abwesenheits-Streifen): Gelb, damit sie sich von Urlaub-Blau und beantragt-Blau abhebt (Marcel 29.10.2026). */
  --v3-heute-marke:    #F59E0B;
  /* Zeitraumfeld: die gewählte Spanne im Kalender (29.10.2026). */
  --v3-zr-spanne:      rgba(35,99,168,0.14);

  /* ── Zusammensetzungen, keine Rollen ──────────────────────────────────────
     Der Verlauf und der Lichtschein als fertige Bilder. 🔴 Die rgba-Werte hier MÜSSEN
     `--v3-glow-ton` + `--v3-glow-deckung` entsprechen; `tests/v3-fundament.test.ts`
     rechnet das nach, damit die beiden Schreibweisen nicht auseinanderlaufen.
     ⚠️ Der Schein hat eine feste Größe in rem statt in Prozent: auf einer sehr langen
     Seite wäre „70 % des Radius" ein bildschirmhoher Schleier statt eines Lichtflecks. */
  --v3-verlauf: linear-gradient(150deg, #F7FAFD 0%, #F1F5FB 60%, #E6EEF8 100%);
  --v3-glanz: radial-gradient(60rem 40rem at 100% 0%, rgba(91,159,232,0.10) 0%, rgba(91,159,232,0) 70%);

  /* ══ die 25 `--jt-*` als ALIAS ════════════════════════════════════════════ */

  /* GRUND (deckend gerechnet, siehe Kopf). */
  --jt-bg:            #F7FAFD;   /* = --v3-traeger */
  --jt-surface:       #FFFFFF;   /* = --v3-flaeche-07 */
  /* 🔴 NICHT die Formel: gerechnet waere `--v3-flaeche-still` (10 %) über Weiß = #EBEDEF.
     #E7E9EC ist Marcels Entscheidung vom 25.08.2026 -- bewusst grauer, damit der Streifen
     gegen die weiße Karte überhaupt zu sehen ist. Wer hier „nachrechnet“, dreht die
     Entscheidung zurück. */
  --jt-surface-2:     #E7E9EC;

  /* Podest unter einem hochgeladenen Fremdlogo auf dunkler Fläche. Siehe die Fassung im
     `.dark`-Block weiter unten: dort ist sie ebenfalls weiss, mit Begründung. */
  --jt-logo-plate:    #FFFFFF;
  --jt-input-bg:      #FFFFFF;   /* = --v3-flaeche-06 */
  --jt-brand-soft-bg: #EEF5FC;   /* = --v3-feld-aktiv */
  --jt-nav-bg:        #EFF4FB;   /* = --v3-grund-halb */

  /* SCHRIFT. Diese drei müssen deckende Hexwerte bleiben, weil
     `tests/farbkontrast.test.ts` sie so liest — sie sind ihre V3-Stufe über
     `--jt-surface` ausgerechnet.
     🔴 --jt-text-muted steckt an 497 Stellen. Die Wahl ist `--v3-stufe-72`, die
     mittlere LESE-Stufe: schwächster gemessener Wert 5,43:1 hell / 5,80:1 dunkel, und
     damit fast genau die Stärke, die der Token heute hat (5,90 / 6,85 auf `surface`).
     Eine Stufe stärker (82) machte 497 Stellen zu Fließtext, eine Stufe schwächer (60)
     nähme dem daruntersitzenden `--jt-text-dim` seinen Platz.
     --jt-text-dim ist deshalb `--v3-stufe-60` — die LETZTE Lese-Stufe (4,74 / 4,72:1).
     ⚠️ Wo das Alias falsch wird, steht in der Übergabe: überall, wo V3 an dieser
     Stelle eine Mono-Beschriftung (`--v3-stufe-55`) oder eine Zierschrift
     (`--v3-stufe-50/45`) will. Zu STARK ist nie ein Kontrastfehler, nur eine flachere
     Hierarchie — deshalb ist es hier bewusst so und nicht umgekehrt. */
  --jt-text:          #0A1F3C;   /* = --v3-stufe-100 */
  --jt-text-muted:    #4F5E73;   /* = --v3-stufe-72 über --jt-surface */
  --jt-text-dim:      #58677A;   /* = --v3-stufe-60 über --jt-surface */
  --jt-input-text:    var(--v3-stufe-100);

  /* INK, LINIE, AUFLAGE (per var, halbdurchsichtig wo V3 es ist). */
  --jt-border:        var(--v3-rand-16);
  --jt-brand:         var(--v3-aktion);
  /* 🔴 `--jt-brand-ink` ist Marke als SCHRIFT (241 Stellen, 13 davon auf
     `--jt-brand-soft-bg`). `--v3-akzent` ist hier ausgeschlossen: Er fällt dunkel auf
     der sanften Markenfläche auf 3,64:1 und auf dem untersten Verlaufsstopp auf
     3,81:1 durch.
     ✅ ENTSCHIEDEN am 25.08.2026 (Marcel, auf Vorlage beider Werte): der KRÄFTIGERE
     Ton. Im Hellen steht die Markenschrift damit auf `--v3-aktion` (#1B4F8A, 6,79:1) —
     das heutige Justen-Blau, satter als das kühlere #3D6389 von `--v3-akzent-hell`.
     Beide halten die Norm; das war eine Geschmacksfrage, keine Kontrastfrage.
     🔴 Nur HELL. Im dunklen Block bleibt `--v3-akzent-hell` stehen: #1B4F8A auf dem
     dunklen Verlauf sind 1,68:1, also unlesbar. Wer diese Zeile in den `.dark`-Block
     kopiert, löscht dort die Markenschrift. */
  --jt-brand-ink:     var(--v3-aktion);
  --jt-brand-light:   var(--v3-akzent);
  --jt-brand-soft-bd: var(--v3-rand-netto);
  /* 🔴 `--v3-rand-bedien` statt `--v3-rand-20`: Sobald `--jt-input-bg` hell auf
     `--v3-flaeche-06` (= Weiß) liegt, ist der Rand das EINZIGE, was ein Feld zum Feld
     macht — und `--v3-rand-20` hält 1,36:1 statt der 3:1 aus WCAG 1.4.11. Es ist
     dasselbe Argument, mit dem die App ihre acht Umrissknöpfe von `randSekundaer` auf
     `randBedien` gezogen hat. Bestand war 1,15:1, das ist also auch keine
     Verschlechterung, sondern die Behebung eines Bestandsfehlers. */
  --jt-input-bd:      var(--v3-rand-bedien);
  --jt-nav-bd:        var(--v3-rand-14);
  --jt-nav-active:    var(--v3-akzent);
  /* Seitenleiste F.2 „Leuchtspur" (Marcel 12.10.2026): der aktive Eintrag als leuchtende Pille.
     Weiß auf #1B4F8A 8,3:1, auf #2F6FD0 4,9:1 — beide Enden tragen die Schrift (WCAG 1.4.3). */
  --jt-nav-pille:        linear-gradient(90deg, #1B4F8A, #2F6FD0);
  --jt-nav-pille-text:   #FFFFFF;
  --jt-nav-pille-schein: 0 6px 14px -6px rgba(35, 99, 168, 0.44);  /* Marcel 14.10.: 20 % weniger Schein (0.55 → 0.44). Negativer Spread: der Schein fällt nach unten und bleibt im Rollbereich */
  --jt-nav-kopf-aktiv:   var(--v3-akzent);
  /* Die Einträge der unteren Leiste in Ruhe — V3 setzt dafür `--t-50`, und das ist hier
     übernommen. ℹ️ Ich hatte zuerst `--v3-stufe-70` genommen, weil ich `--v3-stufe-50` für
     zu schwach hielt; die eigene Prüfung hat die ERWARTUNG widerlegt, nicht die Messung:
     `--v3-stufe-50` hält auf `--v3-grund-halb` 4,57:1 hell und 4,88:1 dunkel, also die
     4,5:1 für die 10-px-Beschriftungen der Leiste. Bestand war 2,54:1. */
  --jt-nav-idle:      var(--v3-stufe-50);

  /* 🔴 V3 arbeitet OHNE SCHATTEN — „ein Schatten auf einem Verlauf ist ein grauer
     Fleck, kein Relief". Die drei Variablen stehen auf `none`, damit die 36 Stellen,
     die sie ziehen (24 card, 11 btn, 1 lift), in einem Zug fallen.
     Nachgesehen, nicht angenommen: ALLE 36 tragen zusätzlich einen `border` — keine
     Karte verliert also ihre Kante, und das war die einzige Gefahr an diesem Schritt.
     ⚠️ Die ~16 Stellen mit Tailwind-Klassen (`shadow-sm/lg/xl`) hängen NICHT an diesen
     Variablen und bleiben stehen; die gehören Trupp T2. */
  --jt-shadow-card:   none;
  --jt-shadow-lift:   none;
  --jt-shadow-btn:    none;

  /* Der Markenverlauf als Variable. Er war bis heute definiert und wurde NIRGENDS
     benutzt — dafür an 3 Stellen in 2 Dateien als Literal abgetippt
     (`login/page.tsx:169`, `change-password/page.tsx:42` und `:73`). Genau die
     Fehlerklasse, die die App mit `V3_VERLAUF` beseitigt hat.
     ⚠️ Er ist nicht länger „in beiden Modi identisch": V3 hat einen hellen Verlauf. */
  --jt-header:        var(--v3-verlauf);

  /* Ohne V3-Rolle — V3 kennt kein Violett. Unverändert, Entscheidung für Stufe B. */
  --jt-accent:        #5730B3;
  --jt-accent-soft:   #B5A8F5;

  /* 🔴 Die gefüllte Fläche der LAUFENDEN Zelle im Anwesenheitsraster (07.09.2026).
     Marcel wollte das satte Grün aus dem Entwurf: weisse Schrift auf vollem Grün.

     ⚠️ Warum das eine EIGENE Variable braucht: Keine vorhandene grüne Rolle taugt als
     Fläche. `--v3-erfolg-schrift`, `--v3-gruen` und `--v3-gruen-punkt` sind SCHRIFT-Töne
     und schlagen in der dunklen Fassung auf helles Mint um (#6EE7B7 / #6EE7A0 / #22C55E),
     weil sie dort auf dunklem Grund lesbar sein müssen. Als Fläche mit weisser Schrift
     ergibt das 1,52:1 — genau der Fehler REG-2026-09-07-LAUFEND-DUNKEL.

     ⚠️ Und warum KEINE 61. V3-Rolle: Die 60 V3-Rollen sind maschinell aus `V3Rollen` der
     Mobil-App gezählt (`tests/v3-fundament.test.ts`). Eine Rolle nur hier anzulegen würde
     die beiden Produkte auseinanderlaufen lassen, ohne dass es jemand merkt. Der
     `--jt-*`-Namensraum ist der EIGENE der PWA und hat für genau solche Fälle sechs
     Einträge ohne V3-Rolle (`--jt-accent`, `--jt-header`, die Schatten).

     Der Wert folgt dem Muster von `--v3-warn-knopf` und `--v3-gefahr-knopf`: in BEIDEN
     Fassungen derselbe, dunkel genug für weisse Schrift. Gerechnet (WCAG 2.1):
       weisse Schrift darauf   6,61:1  hell UND dunkel
       Block gegen den Grund   6,61:1 hell · 2,05:1 dunkel
     Der zweite Wert liegt bewusst in derselben Gegend wie die ausgelieferten
     `--v3-gefahr-knopf` (2,09:1) und `--v3-warn-knopf` (2,69:1): Bei einem Knopf trägt die
     SCHRIFT die Bedeutung, nicht die Abgrenzung des Blocks. */
  --jt-laufend:       #126B33;

  /* Siegel hell (Review 07.10., A5.4, REG-2026-10-07-SIEGEL-HELL): Seit 2.37.0 standen die
     Siegel-Farben NUR im dunklen Block — hell war `fill: var(--v3-siegel-…)` ungültig und die
     Tarif-Kacheln (TarifSiegel.tsx) wurden schwarz gezeichnet. Die Schattierungen sind dieselben;
     die Kachel ist hell etwas dunkler als dunkel (dort „etwas heller, damit sie sich von der Karte
     abheben“), damit sie auf Weiß steht: Kachel gegen #FFFFFF ≥ 3:1 (gerechnet in tests/review-fixes). */
  --v3-siegel-bronze:    #8C5A26; --v3-siegel-bronze-2:  #F0BE7E; --v3-siegel-bronze-3:  #F7D6A8; --v3-siegel-bronze-4:  #FBE9CC;
  --v3-siegel-silber:    #5A6673; --v3-siegel-silber-2:  #D6DEE6; --v3-siegel-silber-3:  #E9EEF3; --v3-siegel-silber-4:  #FFFFFF;
  --v3-siegel-diamant:   #2A7FBE; --v3-siegel-diamant-2: #BCE4FA; --v3-siegel-diamant-3: #E6F6FF; --v3-siegel-diamant-4: #FFFFFF;
}
.dark {
  color-scheme: dark;                /* native Controls im Dark Mode dunkel */

  /* ══ die 60 V3-Rollen, Fassung DUNKEL (Graphit, 06.10.2026) ═════════════════ */
  --v3-schema: "dunkel";

  --v3-verlauf-1: #161719;
  --v3-verlauf-2: #161719;
  --v3-verlauf-3: #161719;
  --v3-verlauf-stelle-1: 0%;
  --v3-verlauf-stelle-2: 60%;
  --v3-verlauf-stelle-3: 100%;
  --v3-glow-ton: #3B6FC6;
  --v3-glow-deckung: 0.04;
  --v3-traeger: #161719;

  --v3-aktion:          #3B6FC6;
  --v3-band-1:          #34507A;
  --v3-akzent:          #7FA6DC;
  --v3-akzent-hell:     #A9C4EA;
  /* Siegel dunkel: Kacheln etwas heller, damit sie sich von der Karte (#202124) abheben. */
  --v3-siegel-bronze:    #A0692F; --v3-siegel-bronze-2:  #F0BE7E; --v3-siegel-bronze-3:  #F7D6A8; --v3-siegel-bronze-4:  #FBE9CC;
  --v3-siegel-silber:    #6B7886; --v3-siegel-silber-2:  #D6DEE6; --v3-siegel-silber-3:  #E9EEF3; --v3-siegel-silber-4:  #FFFFFF;
  --v3-siegel-diamant:   #3A93D2; --v3-siegel-diamant-2: #BCE4FA; --v3-siegel-diamant-3: #E6F6FF; --v3-siegel-diamant-4: #FFFFFF;
  --v3-gruen:           #A9C4EA;
  --v3-gruen-punkt:     #7FA6DC;
  --v3-feld-aktiv:      #1C2738;
  --v3-rand-netto:      #34507A;
  --v3-rand-sekundaer:  #4A6A9A;

  --v3-stufe-100: #E8E8EA;
  --v3-stufe-90:  #DCDDE0;
  --v3-stufe-82:  #D0D2D6;
  --v3-stufe-78:  #C3C5CA;
  --v3-stufe-72:  #A4A7AD;
  --v3-stufe-70:  #9EA1A7;
  --v3-stufe-60:  #9C9FA5;
  --v3-stufe-55:  #93969C;
  --v3-stufe-50:  #8E9197;
  --v3-stufe-45:  #7F8288;

  --v3-flaeche-06: rgba(255,255,255,0.03);
  --v3-flaeche-07: rgba(255,255,255,0.045);
  --v3-flaeche-08: rgba(255,255,255,0.06);
  --v3-flaeche-12: rgba(255,255,255,0.09);

  --v3-rand-14: #2B2C30;
  --v3-rand-16: #2B2C30;
  --v3-rand-18: #303236;
  --v3-rand-20: #35373C;
  --v3-rand-22: #3A3C42;
  --v3-rand-24: #3A3C42;

  --v3-auf-knopf:      #FFFFFF;
  --v3-auf-warn-knopf: #FFFFFF;

  /* Graphit (06.10.2026): Platzhalter, Nachbarmonat und Rasterzahl teilen sich einen Ton,
     #9C9FA5, der auf dem hellsten Grund (Streifen #2B2C2F) noch 4,5:1 hält. */
  --v3-platzhalter:  #9C9FA5;
  --v3-nachbarmonat: #9C9FA5;
  --v3-raster-zahl:  #9C9FA5;
  --v3-ring-spur:    rgba(255,255,255,0.05);

  --v3-rand-bedien:    #85888E;
  --v3-flaeche-still:  rgba(255,255,255,0.05);
  --v3-linie-info:     #7F8288;
  --v3-grund-halb:     #1B1C1F;
  --v3-wochenende:     rgba(255,255,255,0.05);
  --v3-band-bruch:     #161719;
  --v3-band-schraffur: rgba(255,255,255,0.10);

  --v3-warn-schrift:   #A9C4EA;
  --v3-warn-flaeche:   rgba(59,111,198,0.14);
  --v3-warn-linie:     #34507A;
  --v3-fehl-schrift:   #FCA5A5;
  --v3-fehl-flaeche:   rgba(237,44,44,0.16);
  --v3-fehl-linie:     rgba(237,44,44,0.35);
  --v3-erfolg-schrift: #C3C5CA;
  --v3-erfolg-flaeche: rgba(255,255,255,0.06);
  --v3-erfolg-linie:   #3A3C42;
  /* Gefüllte Zustandsknöpfe: Gefahr bleibt rot wie hell. Der Warnknopf ist dunkel ein
     dunkles Blau (#34507A), absichtlich dunkler als der Primärknopf (--v3-aktion), damit
     „Trotzdem speichern" nicht wie der normale Knopf aussieht. Die Zählmarke ist dunkel
     das Aktionsblau. */
  --v3-warn-knopf:     #34507A;
  --v3-gefahr-knopf:   #B91C1C;
  --v3-glocke-marke:   #3B6FC6;
  --v3-heute-marke:    #FBBF24;
  --v3-zr-spanne:      rgba(127,166,220,0.20);

  --v3-verlauf: linear-gradient(150deg, #161719 0%, #161719 60%, #161719 100%);
  --v3-glanz: radial-gradient(60rem 40rem at 100% 0%, rgba(59,111,198,0.04) 0%, rgba(59,111,198,0) 70%);

  /* ══ die 25 `--jt-*` als ALIAS ════════════════════════════════════════════ */

  /* GRUND — deckend über `--v3-traeger` bzw. über `--jt-surface` ausgerechnet. */
  --jt-bg:            #161719;   /* = --v3-traeger */
  --jt-surface:       #202124;   /* = --v3-flaeche-07 über --v3-traeger */
  /* = `--v3-flaeche-still` (5 %) über `--jt-surface`, gerechnet 43/44/47. Das Mockup nennt
     #2B2C30 (ein Bit mehr im Blaukanal); hier steht der gerechnete Wert, damit die Überfahrung
     (Tönung 5 % über der Karte) GENAU auf diesem Grund landet (Wächter in v3-rahmen). Unter
     jeder Wahrnehmungsschwelle. Bleibt so, damit niemand die Farbe wegen eines Bits anfasst. */
  --jt-surface-2:     #2B2C2F;

  /* 🔴 BLEIBT WEISS, auch hier im dunklen Schema. Das ist kein Flächenton, sondern das
     Podest unter einem FREMDEN Logo: Ein Firmenlogo ist für weisses Briefpapier gemacht
     und verschwindet auf dunklem Grund (Befund vom 01.09.2026). Würde diese Fläche mit dem
     Schema dunkel, wäre das Podest sinnlos — es liegt ja gerade DESHALB da.
     ⚠️ Deshalb steht sie in der Palette und nicht als Literal im Bauteil: Wer sie sucht,
     findet hier auch den Grund. */
  --jt-logo-plate:    #FFFFFF;
  --jt-input-bg:      #161719;   /* = --v3-flaeche-06 über --jt-surface */
  --jt-brand-soft-bg: #1C2738;   /* = --v3-feld-aktiv über --jt-surface */
  --jt-nav-bg:        #1B1C1F;   /* = --v3-grund-halb */

  --jt-text:          #E8E8EA;   /* = --v3-stufe-100 */
  --jt-text-muted:    #A4A7AD;   /* = --v3-stufe-72 über --jt-surface */
  --jt-text-dim:      #9C9FA5;   /* = --v3-stufe-60 über --jt-surface */
  --jt-input-text:    var(--v3-stufe-100);

  --jt-border:        var(--v3-rand-16);
  --jt-brand:         var(--v3-aktion);
  --jt-brand-ink:     var(--v3-akzent-hell);
  --jt-brand-light:   var(--v3-akzent);
  --jt-brand-soft-bd: var(--v3-rand-netto);
  --jt-input-bd:      var(--v3-rand-bedien);
  --jt-nav-bd:        var(--v3-rand-14);
  --jt-nav-active:    var(--v3-akzent);
  /* F.2 dunkel: Weiß auf #2F6FD0 4,9:1, auf #3B6FC6 4,9:1; der Schein macht sie zur Leuchtspur. */
  --jt-nav-pille:        linear-gradient(90deg, #2F6FD0, #3B6FC6);
  --jt-nav-pille-text:   #FFFFFF;
  --jt-nav-pille-schein: 0 0 0 1px rgba(143, 192, 242, 0.28), 0 8px 18px -6px rgba(91, 159, 232, 0.56);  /* 14.10.: 20 % weniger (0.35/0.7) */
  --jt-nav-kopf-aktiv:   var(--v3-akzent);
  --jt-nav-idle:      var(--v3-stufe-50);

  --jt-shadow-card:   none;
  --jt-shadow-lift:   none;
  --jt-shadow-btn:    none;

  --jt-header:        var(--v3-verlauf);

  --jt-accent:        #B5A8F5;
  --jt-accent-soft:   #B5A8F5;

  /* Dunkel (Graphit): das Aktionsblau, Weiß darauf 4,91:1. Hell bleibt #126B33. Das Grün
     fällt im Dunkeln weg, weil der Dark Mode nur noch Blau, Grau und Rot kennt. */
  --jt-laufend:       #3B6FC6;
}
