/* netzikon.net — Design-Tokens
   Stand: Turn 11 · Tintenhöhe 0,792 em · Marke immer „netzikon.net"
   Kontrastwerte (WCAG 2.1) sind je Token als Kommentar angegeben. */
:root {
  /* Flächen, hell */
  --nz-paper: #F4F2ED;
  --nz-paper-raised: #FBFAF7;
  --nz-border: #DAD6CD;
  --nz-border-strong: #C9C4B9;

  /* Text, hell */
  --nz-ink: #1A1917;              /* auf paper 15.7:1 */
  --nz-ink-soft: #3A3B38;
  --nz-muted: #5C605E;          /* auf paper 5.71:1 */
  --nz-faint: #8A8D8B;             /* auf paper 3:1 — nur ≥ 18 px, NICHT für Labels */

  /* Akzent, hell */
  --nz-accent: #0A6B5C;        /* auf paper 5.74:1 */
  --nz-accent-soft: #E4EEEA;
  --nz-accent-border: #C7DDD6;
  --nz-grey: #B4AEA2;            /* Klammerton, auf paper 1.97:1 — nie für Text */

  /* Flächen, dunkel */
  --nz-d-bg: #101315;
  --nz-d-surface: #171B1E;
  --nz-d-border: #23292C;
  --nz-d-border-strong: #2F373B;

  /* Text, dunkel */
  --nz-d-ink: #E4E8E9;           /* auf d-bg 15.11:1 */
  --nz-d-muted: #97A0A5;       /* auf d-bg 7:1 */
  --nz-d-faint: #7C858A;       /* auf d-bg 4.95:1 */

  /* Akzent, dunkel */
  --nz-d-accent: #4FB79F;     /* auf d-bg 7.64:1 */
  --nz-d-grey: #5B666B;         /* Klammerton dunkel */

  /* Status */
  --nz-warn: #8A6A18;
  --nz-d-warn: #E0A93A;
  --nz-danger: #A33B33;
  --nz-d-danger: #E4635C;
  --nz-code-bg: #1D211F;

  /* Schrift */
  --nz-font-sans: "Instrument Sans", system-ui, sans-serif;
  --nz-font-mono: "JetBrains Mono", ui-monospace, monospace;

  /* Typo-Skala (fluid, 390 → 1440 px Viewport) */
  --nz-text-term: clamp(30px, 1.6rem + 2.4vw, 52px);   /* Begriffs-Titel, Sans 700, -0.025em */
  --nz-text-h2: clamp(22px, 1.1rem + 1.2vw, 32px);
  --nz-text-lead: clamp(16px, 0.95rem + 0.5vw, 20px);  /* Kurzdefinition */
  --nz-text-body: clamp(15px, 0.9rem + 0.2vw, 16px);
  --nz-text-small: 14px;
  --nz-text-label: 11px;                               /* Mono, 0.12em, uppercase */
  --nz-text-code: 13px;

  /* Raster & Radien */
  --nz-grid: 8px;
  --nz-radius-s: 4px;
  --nz-radius-m: 6px;
  --nz-radius-l: 8px;
  --nz-measure: 70ch;

  /* Logo */
  --nz-logo-ink-height: 0.792em;   /* Tintenhöhe des Signets, alle Regime und beide Strich-Fassungen */
  --nz-logo-stroke-ui: 2px;        /* Lockups bis 40 px: Zielstrich in CSS-px, je Größe eingebacken */
  --nz-logo-stroke-display: 1.13;  /* ab 40 px: viewBox-Einheiten, skaliert mit */
}

/* Signetgröße aus dem Schriftgrad ableiten (affin, nicht proportional):
   Box = 24 · (0,792 · Schriftgrad − 2) / H,  H = 16,8 Vollsignet | 13,2 Mikro
   Beispiele: 40 px → 42,40 · 24 px → 24,30 · 23 px → 29,48 (Mikro) · 14 px → 16,52 (Mikro) */

/* Zwei Strich-Fassungen, stetig an der Scharnierstelle 40 px:
   ≤ 40 px  *-fs<N>.svg    stroke-width = 48 / Box, in viewBox-Einheiten eingebacken
                           → 2,00 CSS-px bei der Nominalgröße; width/height der Datei
                           ist bereits der Boxwert, also unskaliert einsetzen.
                           KEIN vector-effect="non-scaling-stroke": das löst den Strich
                           im Gerätebereich auf und bricht unter Zoom, Transform und Druck.
                           Box = 24 · (0,792 · fs − 2) / H          (affin)
   ≥ 40 px  *-display.svg  stroke-width 1,13 viewBox-Einheiten, skaliert mit
                           Box = 1,0601 · fs                        (proportional)
   Beide Formeln liefern bei fs = 40 px denselben Boxwert 42,40 px und dieselbe
   Tintenhöhe 31,68 px = 0,792 em. Labels verwenden --nz-muted, nie --nz-faint. */

/* Freie Größen (nicht ausgelieferte Nominalstufen): Signet inline einbetten und
   stroke-width per Custom Property setzen —
   svg { --nz-box: 26.6px } path { stroke-width: calc(48 / (var(--nz-box) / 1px)) }
   oder serverseitig 48 / Box einsetzen. <img> ist dafür keine gültige Lieferform. */
