/* ============================================================
   OBSTEC · Typography tokens
   Azonix for brand display & labels (all-caps, tracked-out).
   IBM Plex Sans for everything readable. IBM Plex Mono for the
   technical substance: ports, tokens, subdomains, log lines.
   ============================================================ */

:root {
  /* ---- Families -------------------------------------------- */
  --font-display: 'Azonix', 'Arial Narrow', sans-serif;
  --font-sans:    'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono:    'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  /* ---- Type scale (px) ------------------------------------- */
  --fs-3xs:  11px;
  --fs-2xs:  12px;
  --fs-xs:   13px;
  --fs-sm:   14px;
  --fs-md:   16px;   /* base */
  --fs-lg:   18px;
  --fs-xl:   21px;
  --fs-2xl:  26px;
  --fs-3xl:  32px;
  --fs-4xl:  42px;
  --fs-5xl:  54px;
  --fs-6xl:  72px;

  /* ---- Weights --------------------------------------------- */
  --fw-regular:  400;  /* @kind font */
  --fw-medium:   500;  /* @kind font */
  --fw-semibold: 600;  /* @kind font */
  --fw-bold:     700;  /* @kind font */

  /* ---- Line heights ---------------------------------------- */
  --lh-tight:   1.1;   /* @kind font */
  --lh-snug:    1.25;  /* @kind font */
  --lh-normal:  1.5;   /* @kind font */
  --lh-relaxed: 1.65;  /* @kind font */

  /* ---- Letter spacing -------------------------------------- */
  --ls-tight:   -0.02em;
  --ls-normal:  0em;
  --ls-wide:    0.04em;
  --ls-label:   0.14em;   /* eyebrow / kicker labels */
  --ls-display: 0.06em;   /* Azonix display, breathing room */

  /* ============================================================
     Semantic roles
     ============================================================ */

  /* Brand wordmark / hero display — Azonix, all-caps */
  --type-display-font:  var(--font-display);
  --type-display-size:  var(--fs-5xl);
  --type-display-weight:var(--fw-regular);
  --type-display-ls:    var(--ls-display);
  --type-display-lh:    var(--lh-tight);

  /* Eyebrow / kicker / section label — Azonix small, tracked */
  --type-eyebrow-font:  var(--font-display);
  --type-eyebrow-size:  var(--fs-2xs);
  --type-eyebrow-ls:    var(--ls-label);

  /* Headings — Plex Sans semibold */
  --type-h1-size:  var(--fs-4xl);
  --type-h2-size:  var(--fs-3xl);
  --type-h3-size:  var(--fs-2xl);
  --type-h4-size:  var(--fs-xl);

  /* Body */
  --type-body-size:    var(--fs-md);
  --type-body-lh:      var(--lh-normal);
  --type-body-sm-size: var(--fs-sm);

  /* Mono / technical data */
  --type-mono-font:  var(--font-mono);
  --type-mono-size:  var(--fs-sm);
  --type-mono-ls:    0.01em;
}
