/* =========================================================================
   SecondBrain — Faerbung der LibreChat-Chatoberflaeche
   Angelegt 11.09.2026. NOCH OHNE GESTALTUNG — siehe unten.

   WOZU. LibreChat v0.8.8-rc1 traegt eine zweischichtige Farbstruktur:
   unten Primitive (--gray-*, --green-*, --red-*, …), darueber eine
   Semantikschicht (--surface-*, --text-*, --border-*, --status-*), auf
   die praktisch die ganze Oberflaeche zeigt. Am 11.09.2026 gemessen:
   4811 von 4914 Farbklassen im Quelltext haengen an dieser Schicht,
   also 97,9 %. Wer sie neu belegt, faerbt alles um, was daran haengt —
   in beiden Themen, ohne einen einzigen Selektor anzufassen.

   WARUM CSS UND NICHT LIBRECHATS THEME-SYSTEM. Es gibt eines, es ist
   versioniert und validiert (packages/client/src/theme/), und es waere
   der vom Hersteller vorgesehene Weg. Er wurde geprueft und verworfen,
   nicht uebersehen. Vier Wege fuehren hinein:

     REACT_APP_THEME_*      Build-Zeit. Vite backt das Env-Objekt in das
                            Bundle; im ausgelieferten Bundle steht
                            {BASE_URL:'./',DEV:!1,MODE:'production',…} —
                            kein einziger Theme-Eintrag. Zur Laufzeit
                            wird nichts mehr gelesen. Gegenprobe von der
                            anderen Seite: /api/config liefert 23
                            Schluessel, keinen theme-artigen. Diesen Weg
                            zu oeffnen hiesse, den Client neu zu bauen.
     Prop themeDefinition   Quelltextaenderung. Gleicher Preis.
     localStorage           Offen, aber:
                            (1) von aussen NICHT messbar — die
                                Gestaltung laege im Browser jedes
                                einzelnen Benutzers, und --check kann
                                dort nicht hineinsehen;
                            (2) die Validierung ist eine Positivliste,
                                und ein einziger von einem Update
                                umbenannter Token verwirft die GANZE
                                Definition — lautlos, zurueck auf
                                LibreChats Farben;
                            (3) AO() mischt vor dem Anwenden alle 75
                                Vorgaben DIESES Builds ein und schreibt
                                sie als Inline-Eigenschaft auf <html>.
                                Wir wuerden 35 Werte einfrieren, die uns
                                nichts angehen;
                            (4) angewandt wird in einem useEffect NACH
                                dem Mounten — bis dahin gilt die
                                Kaskade, also LibreChats Farben;
                            (5) die Deckkraft-Begleiter der Raender
                                (--border-light-alpha und drei weitere)
                                gehoeren keiner der drei Registries an
                                und sind darueber gar nicht erreichbar.
     dieses Stylesheet      Was fehlt, ist die Namensvalidierung zur
                            Laufzeit. Sie wird ersetzt durch Pruefung 3
                            in patch-index.py --check: jeder Token, den
                            wir setzen, muss in den Themenbloecken des
                            IMAGES vorkommen. Der Massstab kommt damit
                            von aussen und wandert mit jedem Update mit.

   Die Entscheidung lautete: Pruefbarkeit vor Herstellerkonformitaet.

   REIHENFOLGE UND SPEZIFITAET — nachgerechnet, nicht geraten.
   LibreChat definiert hell in "html" (0,0,1) und ":root" (0,1,0),
   dunkel in ".dark" (0,1,0). Diese Datei wird von patch-index.py hinter
   assets/index.<hash>.css in den <head> gehaengt (Zeilen 225 und 227 der
   ausgelieferten index.html). Fuer hell genuegt damit Gleichstand plus
   Reihenfolge; fuer dunkel braucht es mindestens (0,1,0) — "html.dark"
   ist (0,1,1) und reicht. KEIN !important noetig, und keines benutzen:
   es nimmt der naechsten Fassung die Moeglichkeit, sauber zu gewinnen.

   KEINE INLINE-EIGENSCHAFT IM WEG. Waere eines der Theme-Systeme aktiv,
   schriebe es die Variablen als style="" auf <html> — das schlaegt jedes
   Stylesheet. Gemessen: keines ist aktiv, und kein Bedienelement kann
   eines aktivieren (setThemeDefinition und resetTheme kommen in den
   Bundles je zweimal vor: Kontext-Vorgabe und Provider-Memo, kein
   Aufrufer).

   WAS HIER NICHT HINEINGEHOERT:
     - Form. Radien, Hoehen, Abstaende und Schrift (--radius,
       --theme-*) bleiben, wie sie sind. Der Auftrag ist Farbe.
     - Die Anmeldeseite. login.css steht und wird nicht angefasst.

   STAND: leer. Die Einstufung aller 77 wirksamen Variablen steht in
   tokens.erwartet, die Palette folgt. Bis dahin meldet
   "patch-index.py --check" absichtlich rot: 0 von 62 Tokens gesetzt.
   Eine Pruefung, die ueber eine leere Menge laeuft, bestuende sonst
   immer — darum steht die Zahl in der Ausgabe und nicht nur das
   Ergebnis.
   ========================================================================= */
