/* GENERATED by sync/build_css.py from shared/tokens.css. DO NOT EDIT. */
/* ══════════════════════════════════════════════════════════════════════
   soulbound.tools — design tokens. SINGLE SOURCE OF TRUTH.

   Three Workers render three surfaces (hub, API docs, build planner) and
   they must read as one product. This file is the only place a colour, a
   type step or a spacing unit is defined.

   It is not served directly. `sync/build_css.py` copies it into:
     site/public/tokens.css   (linked by the hub before its own stylesheet)
     api/src/tokens.js        (inlined into the docs Worker's <style>)

   tests/design_tokens_test.py fails if either artifact drifts from this
   file, so the surfaces cannot diverge again the way the docs page did
   (it had shipped an amber accent, #a35b00, against the platform cyan).

   The planner (app/public/style.css) is the origin of these values and is
   deliberately NOT generated from here — it is a working app that predates
   the platform and is out of scope for the refresh. Its palette block is
   the same; the test pins the shared subset so a future planner edit that
   moves the brand is visible.
   ══════════════════════════════════════════════════════════════════════ */

:root {
  /* ── surfaces ─────────────────────────────────────────────────────── */
  --bg:      #0b0d12;
  --panel:   #14171f;
  --panel-2: #1b1f29;
  --line:    #262b38;
  --line-2:  #333a4b;
  --text:    #e4e8f1;
  --dim:     #8b93a7;
  --dimmer:  #5b6376;

  /* ── accent ───────────────────────────────────────────────────────────
     Cyan is the PLATFORM accent. Gold (--r4) is reserved for "legendary /
     official" — it means the same thing in the game, in the planner, and on
     a directory card. Never use gold as a general-purpose accent. */
  --accent:     #2fb6d6;
  --accent-2:   #57d3ef;
  --accent-ink: #04222b;

  /* ── rarity ramp ──────────────────────────────────────────────────── */
  --r0: #a4abb8;  /* common    */
  --r1: #57cc7f;  /* uncommon  */
  --r2: #5aa9ef;  /* rare      */
  --r3: #b478ec;  /* epic      */
  --r4: #e5ad3f;  /* legendary */
  --r5: #ff6a35;  /* unique    */

  /* ── semantic ─────────────────────────────────────────────────────── */
  --ok:   #5ad19b;
  --warn: #e5ad3f;

  /* ── type ─────────────────────────────────────────────────────────────
     A ramp with real steps. The bug this fixes: the hub shipped section
     headings at 12px and card titles at 16px, so sections read as labels
     and cards read as headings. Section > card, always. */
  --sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
          "Liberation Mono", monospace;

  --fs-micro: 11px;   /* uppercase eyebrow label */
  --fs-tiny:  12.5px; /* captions, footnotes */
  --fs-code:  13px;
  --fs-body:  15px;
  --fs-lead:  16.5px;
  --fs-card:  16px;   /* card title */
  --fs-h3:    17px;
  --fs-h2:    22px;   /* section heading — outranks a card title */
  --fs-h1:    40px;

  --lh-tight: 1.2;
  --lh-body:  1.6;
  --track-micro: 1.2px;

  /* ── space ────────────────────────────────────────────────────────── */
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px; --s5: 24px; --s6: 32px;
  --s7: 48px; --s8: 72px;

  /* ── shape ────────────────────────────────────────────────────────── */
  --radius:    10px;
  --radius-sm: 6px;
  --wide:      1120px;  /* hub content column */
  --docs-nav:  240px;   /* docs sidebar */
  --docs-main: 1440px;  /* docs three-column shell */
}

/* ── on light mode ────────────────────────────────────────────────────────
   There is deliberately no light theme, and every surface declares
   `<meta name="color-scheme" content="dark">` so the browser renders form
   controls and scrollbars to match.

   The docs page used to ship one — an amber-brown palette unrelated to
   anything else we make — and because the light values only covered the
   token layer while the component styles kept hard-coded dark panels, a
   light-scheme visitor got a white page with black cards on it. A half-built
   light theme reads as broken in a way that no light theme does not.

   Soulbound is a dark product: the game, the build planner and the hub are
   all dark, and these two pages sit alongside them. If a real light theme is
   ever wanted, it needs the component styles converted to tokens first —
   every hard-coded #0d1017 and #10141c in site/public/style.css and
   api/src/docs_assets.js — not just this block reinstated. */
