/* ===========================================================================
   Prospector Labs brand tokens - THE canonical source.
   Served at https://www.prospectorlabs.io/brand/tokens.css

   This file is the ONLY place a shared colour or a font may be defined.
   Both surfaces consume THIS FILE, cross-origin:
     - the marketing site (www.prospectorlabs.io, Vercel, static)
     - the API pages     (api.prospectorlabs.io, Railway, rendered in api/main.py)

   There is one copy on purpose. The API pages link this URL rather than
   carrying a generated duplicate, so "the two drifted" is not a state that
   can exist. The cost of that choice is stated plainly: if www is down, the
   API pages render unstyled. They are forms and text, no JS depends on this
   sheet, and Vercel static is materially more available than the Railway API
   (which could not deploy at all on the day this was written). That is the
   trade accepted.

   tests/test_brand_tokens.py fails the build if a page disagrees with a value
   here, or declares a font that nothing loads.

   ---------------------------------------------------------------------------
   WHY THE @font-face BLOCKS EXIST, AND WHY THE FONTS ARE IN THIS REPO

   Measured 2026-08-18: every page on this site linked
     https://cdn.jsdelivr.net/npm/geist@1.2.0/dist/fonts/geist-sans/style.min.css
   and that URL is a 404. So is the geist@1.3.1 equivalent. The npm `geist`
   package ships .woff2 files and NO stylesheet - there has never been a file
   at that path. `grep -r "@font-face"` across this whole repo returned zero
   matches. Result: `font-family: 'Geist', system-ui` resolved to system-ui on
   every page, for as long as the link has been there. The site has been
   rendering in the OS default while claiming a typeface - the identical defect
   the API pages have with 'Inter'.

   That bug survived because it depended on a remote path nobody ever fetched.
   So the fonts are committed HERE, as repo assets, and the test asserts every
   @font-face src resolves to a file on disk. A file in the repo cannot 404.

   Both faces are SIL OFL 1.1; licences ship alongside them in fonts/.
   =========================================================================== */

@font-face {
  font-family: 'Geist';
  src: url('/brand/fonts/Geist-Variable.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'JetBrains Mono';
  src: url('/brand/fonts/JetBrainsMono-Variable.woff2') format('woff2');
  font-weight: 100 800;
  font-style: normal;
  font-display: swap;
}

:root {
  /* Neutrals. These twelve are unanimous across every routable page. */
  --white: #ffffff;
  --black: #000000;
  --gray-50: #fafafa;
  --gray-100: #f5f5f5;
  --gray-200: #e5e5e5;
  --gray-300: #d4d4d4;
  --gray-400: #a3a3a3;
  --gray-500: #737373;
  --gray-600: #525252;
  --gray-700: #404040;
  --gray-800: #262626;
  --gray-900: #171717;

  /* Accents. Only values that are unanimous today are canonical.
     --accent and --amber are DELIBERATELY ABSENT: each is declared with two
     different values across live pages (--accent is #16a34a on six pages and
     #00d4aa on the dark /status board; --amber is #ca8a04 on four and #d97706
     on one). Adding them here would force a restyle of a page this batch is
     not scoped to touch. Recorded in docs/found-not-fixed.md instead.
     A token is canonical when it is agreed, not when it is common. */
  --orange: #e85d2f;
  --green: #16a34a;
  --red: #dc2626;
  --blue: #2563eb;

  /* Type. Any page using these gets a font that actually loads. */
  --font-sans: 'Geist', system-ui, -apple-system, sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, monospace;
}
