/* IBM Plex Sans — Intrapass brand font, self-hosted (no CDN) */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/assets/fonts/ibm-plex-sans-400.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/assets/fonts/ibm-plex-sans-500.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/assets/fonts/ibm-plex-sans-600.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal; font-weight: 700; font-display: swap;
  src: url('/assets/fonts/ibm-plex-sans-700.woff2') format('woff2');
}

/* Intrapass CI — light theme (see design.md) */
:root {
  --font: 'IBM Plex Sans', system-ui, -apple-system, Segoe UI, Roboto, sans-serif;

  /* Marke */
  --brand: #ed2224;
  --brand-hover: #d41d1f;
  --brand-active: #ba181a;
  --brand-soft: rgba(237, 34, 36, .08);

  /* Flächen & Rahmen. `--bg` ist der Grund der Anwendung und bewusst NICHT weiss:
     weisse Karten auf weissem Grund sind keine Karten. Der Wert ist der
     Bildschirmgrund der Intrapass-Dokumentspezifikation (§2), damit Konsole und
     Dokumente dieselbe Fläche teilen. */
  --bg: #edeff2;
  --surface: #ffffff;
  --surface-2: #f7f7f7;
  --border: #ebebeb;
  --border-2: #d1d1d1;

  /* Text */
  --heading: #212134;
  --fg: #333333;
  --muted: #7f7f7f;
  --on-brand: #ffffff;

  /* Status. `--error` war bis 2026-08-11 bitgleich `--brand` — damit sah ein Fehler
     aus wie eine Primäraktion, und Rot sagte nichts mehr. Es ist jetzt das dunklere
     CI-Rot: dieselbe Familie (die Konsole bekommt keine zweite Akzentfarbe), aber
     unterscheidbar, und auf Weiss mit 5.87:1 auch für Fliesstext AA-fest — was
     `--brand` mit 4.3:1 nie war. `--error-soft` ist die Tintfläche dazu, analog zu
     `--brand-soft`: eine Fehlermarke soll nicht auf Markenrot liegen (5.12:1). */
  --success: #1e8e3e;
  --warning: #b8860b;
  --error: #C81519;
  --error-soft: rgba(200, 21, 25, .08);

  /* Formularraster — Titelspalte, Feldspalte, Abstand dazwischen. Als Token,
     weil sich auch Nicht-Formulare danach ausrichten (.receiver-row). */
  --form-label-col: 13rem;
  --form-field-col: 26rem;
  --form-gutter: 1.5rem;

  /* Tabellenraster — die Dichte aller Tabellen an einer Stelle (styles/tables.css).
     Kompakt: eine Zeile soll überflogen, nicht gelesen werden. */
  --table-font: .85rem;
  --table-head-font: .68rem;
  --table-small-font: .75rem;
  --table-pad-y: .4rem;
  --table-pad-x: .6rem;

  /* Form & Tiefe */
  --radius-sm: 4px;
  --radius: 8px;
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, .06);
  --shadow: 0 1px 3px rgba(0, 0, 0, .08);

  /* Breite der Seitenleiste (styles/shell.css) — als Token, weil eine Media
     Query sie unter 1100px auf 64px umdefiniert (Icons ohne Label) statt eine
     zweite feste Zahl im Grid-Template zu pflegen. */
  --rail: 248px;

  /* Höhe der klebenden Kopfleiste. Die Sprungleiste der Konfiguration klebt
     darunter und muss wissen, wie weit unten das ist. `.topbar` trägt den Wert
     als `min-height`, damit das Token die Höhe *bestimmt* statt sie zu raten —
     ein geschätzter Wert liefe sonst auseinander, sobald sich Polsterung oder
     Schriftgrad der Kopfleiste ändern. Gemessen entspricht er dem bisherigen
     Ist-Stand (67px), die Leiste verschiebt sich also nicht. */
  --topbar-h: 4.2rem;
}

* { box-sizing: border-box; }
[x-cloak] { display: none !important; }
