/* ===========================================================================
   ERSCHEINUNGSBILD: WERTE-DATEI

   DIE SCHRIFTEN DES HAUSES — als Dateien HIER, nicht von einem fremden Dienst.

   Montserrat für alles Geschriebene, JetBrains Mono für Zahlen. Beide liegen als
   `.woff2` in `bilder/schriften/` und werden über die Steckdose dieses Moduls
   ausgeliefert (`/erscheinungsbild/schrift/…`).

   WARUM NICHT VON GOOGLE: dann hinge jede Ansicht an einem fremden Dienst, der
   hängen oder verschwinden kann — und sobald ein Kunde Bruno benutzt, entstünde
   nebenbei eine Datenschutz-Frage, weil sein Browser bei jedem Seitenaufruf eine
   fremde Adresse anspräche. Die Seite muss OHNE Internetzugang vollständig
   richtig aussehen.

   LIZENZ: beide Schriften stehen unter der SIL Open Font License 1.1. Die
   vollständigen Lizenztexte liegen neben den Dateien (`schriften/OFL-*.txt`) —
   das ist die Bedingung der Lizenz, keine Beigabe.

   `latin` und `latin-ext` — beides, weil Bruno Ungarisch spricht (ő, ű) und die
   ungarischen Buchstaben im `latin`-Ausschnitt nicht enthalten sind.
   =========================================================================== */

@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("/erscheinungsbild/schrift/montserrat-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("/erscheinungsbild/schrift/montserrat-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
    U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
    U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url("/erscheinungsbild/schrift/jetbrains-mono-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url("/erscheinungsbild/schrift/jetbrains-mono-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
    U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
    U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ===========================================================================
   ERSCHEINUNGSBILD: WERTE-DATEI

   DUNKEL — das Erscheinungsbild von Bruno. Abgenommen von Gabor am 20.9.2026
   nach vier Entwurfs-Durchgängen (Notiz 917 und 918 am Baukonzept 100.2.3).

   JEDER NAME DIESER DATEI STEHT IN DER NAMENSLISTE (`../vertrag.py`), und jeder
   Name der Namensliste steht hier. Beide Richtungen sind bewacht
   (`proben/test_erscheinungsbild_werte.py`, Sabotage-Probe B): ein fehlender Wert
   fiele sonst still auf die Vorgabe des Browsers zurück, und die Seite sähe nicht
   kaputt aus, sondern nur ein bisschen falsch.

   ALLE WERTE STEHEN AN DER WURZEL DES DOKUMENTS. Das ist die Bedingung für den
   Austausch: ein zweites Erscheinungsbild ist eine zweite solche Datei mit
   denselben Namen und anderen Zahlen — kein Bauteil wird dafür angefasst.

   DIE NAMEN TRAGEN IHRE ROLLE, NICHT IHR AUSSEHEN. `--akzent`, nicht `--orange`:
   ein Bauteil, das `--orange` einsetzt, wird beim blauen Kundenportal zur Lüge.
   =========================================================================== */

:root {

  /* --- AKZENT ------------------------------------------------------------ */
  --akzent: #FF8800;
  --akzent-hell: #FFA845;

  /* --- FLÄCHEN ----------------------------------------------------------- */
  --grund: #17150F;
  --grund-schein: radial-gradient(820px 340px at 84% -10%,
                                  rgba(255, 136, 0, .22), transparent 62%);
  --seitenleiste: rgba(11, 10, 8, .5);
  --karte: linear-gradient(160deg, rgba(255, 255, 255, .06),
                                   rgba(255, 255, 255, .015));
  --linie: #2A2620;
  --linie-karte: #322B22;
  --zeile-linie: rgba(255, 255, 255, .06);
  --zeile-drueber: rgba(255, 255, 255, .035);

  /* --- SCHRIFT NACH BEDEUTUNG -------------------------------------------- */
  /* NICHT AUFHELLEN. Die beiden schwachen Stufen wurden am 20.9. versuchsweise
     auf #A4A097 und #7C776E gesetzt und wieder zurückgenommen: der Abstand
     zwischen den Stufen geht dabei verloren, und mit ihm die Information, die
     in der Abstufung steckt. Lesbarkeit kommt über die Größe, nicht die Helle. */
  --schrift-1: #F3F2EF;
  --schrift-2: #C8C6C0;
  --schrift-3: #8C8981;
  --schrift-4: #5D5A54;

  /* --- BEDEUTUNG — getrennt vom Akzent ------------------------------------ */
  /* Diese drei wechseln NICHT mit, wenn ein Kunde seine Hausfarbe bekommt:
     ein rotes „kritisch" bleibt rot, auch wenn der Akzent blau wird. */
  --gut: #56C173;
  --achtung: #E6AE45;
  --kritisch: #E85C55;

  /* --- SCHRIFTARTEN UND GRÖSSEN ------------------------------------------ */
  /* Die Ersatz-Schriften dahinter sind kein Beiwerk: sie tragen die Seite in
     dem Augenblick, in dem die Schriftdatei noch nicht da ist. */
  --schriftart: "Montserrat", system-ui, -apple-system, "Segoe UI", sans-serif;
  --schriftart-zahlen: "JetBrains Mono", ui-monospace, monospace;
  --grundgroesse: 16.5px;

  /* Alles Weitere leitet sich von der Grundgröße ab, damit eine einzige
     Änderung die ganze Anwendung mitnimmt. */
  --schrift-ueberschrift: calc(var(--grundgroesse) * 1.1);
  --schrift-text: calc(var(--grundgroesse) * 1);
  --schrift-zelle: calc(var(--grundgroesse) * .93);
  --schrift-bedien: calc(var(--grundgroesse) * .9);
  --schrift-pille: calc(var(--grundgroesse) * .85);
  --schrift-spaltenkopf: calc(var(--grundgroesse) * .8);
  --schrift-grosszahl: calc(var(--grundgroesse) * 1.65);

  /* --- FORM --------------------------------------------------------------- */
  --rund-kachel: 14px;
  --rund-flaeche: 12px;
  --rund-bedien: 9px;
  --rund-pille: 999px;
  --rand-aktiv: 4px;
  /* Das Relief: heller Grat oben, dunkle Unterkante, Schlagschatten darunter. */
  --tiefe-kachel: inset 0 1px 0 rgba(255, 255, 255, .10),
                  inset 0 -1px 0 rgba(0, 0, 0, .45),
                  0 6px 14px rgba(0, 0, 0, .38);

  /* Die vier Maße der Seitenleiste — als VIELFACHE der Grundgröße, nicht als
     feste Bildpunkte (Notiz 918). Dann zieht eine Änderung der Grundgröße sie
     mit, und „die Kacheln sind mir zu groß" ist ein Zahlentausch hier statt
     eines Bau-Auftrags am Rahmen. */
  --kachel-groesse: calc(var(--grundgroesse) * 5);
  --icon-groesse: calc(var(--grundgroesse) * 2.5);
  --leiste-breite: calc(var(--grundgroesse) * 6.7);
  --label-groesse: calc(var(--grundgroesse) * .5);

  --luft: calc(var(--grundgroesse) * .75);
  --luft-gross: calc(var(--grundgroesse) * 1.5);
  --zeilenhoehe: 1.5;
}
