/* ==========================================================================
   DESIGN TOKENS — measured off assets/EXAMPLE.png.

   The reference is the source of truth and spec/STYLE.md is the reading of it.
   Every raw value in the project lives here: the two faces, the palette, and
   the handful of numbers the DOM chassis needs. The canvas mirrors this
   palette in src/ui/paint.js and holds no colour of its own; tools/style.mjs
   checks that the two agree and that nothing else carries a literal.

   The board is drawn on a canvas, so this file is short by design. What it
   still owns: the fonts (vendored, no network), the ground colour behind the
   canvas, and the ink the admin editor is set in.
   ========================================================================== */

/* ---- three voices -----------------------------------------------------
   All OFL, all vendored, nothing here reaches the network.

   Canela            the NAME, when it is licensed. Canela is a commercial face
                     from Commercial Type and cannot be vendored here; drop the
                     licensed `canela-latin.woff2` (and `canela-medium-latin.woff2`
                     if you buy the weight) into css/fonts and it takes over the
                     display voice on its own - the face below is the fallback
                     and nothing else has to change.
   Fraunces          the NAME until then. A modern cut of an old wood-type
                     serif. Names, stat values, screen titles, big numbers.
   Newsreader        the READING voice. Rule text, lore in italic, prose.
   Archivo           the LABEL voice, and only that: kickers, ATK/GRD/SPD,
                     buttons, counters.

   EVERY FACE HERE IS PINNED TO ONE OPTICAL SIZE, and that is not a detail.
   The game is drawn on a canvas, and a canvas has no font-optical-sizing: a
   variable face with an `opsz` axis is drawn at the file's DEFAULT instance
   whatever size ctx.font asks for. As shipped, Fraunces defaults to opsz 9 -
   a caption cut - so the display face was being drawn in its smallest optical
   cut at sixty pixels, which is why the type looked wrong while the fonts were
   loading perfectly well. tools/fonts.py pins each face to the cut its job
   wants and writes a plain static woff2 with no axes left to argue about.

   Playfair Display, EB Garamond and Jost went before this. Cinzel, Alegreya
   Sans, Alegreya Sans SC and IBM Plex Mono went before them. */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url('./fonts/fraunces-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2122, U+2212, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url('./fonts/newsreader-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2122, U+2212, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Newsreader';
  font-style: italic;
  font-weight: 400;
  font-display: block;
  src: url('./fonts/newsreader-italic-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2122, U+2212, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url('./fonts/archivo-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2122, U+2212, U+FEFF, U+FFFD;
}

:root {
  --font-display: 'Canela', 'Fraunces', 'Didot', Georgia, serif;
  --font-serif: 'Newsreader', 'Iowan Old Style', Georgia, serif;
  --font-label: 'Archivo', 'Helvetica Neue', Arial, sans-serif;

  /* ---- palette (spec/STYLE.md §2) -------------------------------------
     Thirteen values, every one sampled off the reference. The accent is a
     BURNT AMBER, not a gold and not a yellow — that single change is what
     separates this from what came before. Red is reserved: damage, FEAR, an
     enemy's telegraph, the aiming rim. It is never decoration.

     There is no pure white and no bright gold anywhere in the game. */
  --table: #08080a; /* the ground behind everything */
  --panel: #141515; /* a card's rules panel, a drawer, a pill */
  --raised: #1b1c1c; /* a panel lifted off the panel */
  --paper: #c9bdad; /* the art ground: aged bone */
  --unpainted: #b8a894; /* an art window with no painting in it yet */
  --ink-dark: #171614; /* type ON the paper — a card's header */
  --sepia: #4a4038; /* the header's kicker and sigil, on the paper */
  --ink: #e6d5bd; /* names, rules, values — the primary voice */
  --bone: #c3b09a; /* icons and secondary type */
  --muted: #867c6f; /* lore, and type stepped back */
  --dim: #565049; /* disabled, a hint */
  --amber: #a87f57; /* labels, kickers, rings, rules */
  --amber-hi: #c39d71; /* the accent lit */
  --rim: #6b5a46; /* a card's border, a hard edge */
  --hairline: #3a3229; /* a division */
  --blood: #8c3b32; /* damage, FEAR, the enemy side */
  --blood-hi: #c05a4a; /* the same, lit */

  --table-rgb: 8 8 10;
  --panel-rgb: 20 21 21;
  --raised-rgb: 27 28 28;
  --paper-rgb: 201 189 173;
  --ink-dark-rgb: 23 22 20;
  --sepia-rgb: 74 64 56;
  --ink-rgb: 230 213 189;
  --bone-rgb: 195 176 154;
  --muted-rgb: 134 124 111;
  --dim-rgb: 86 80 73;
  --amber-rgb: 168 127 87;
  --amber-hi-rgb: 195 157 113;
  --rim-rgb: 107 90 70;
  --hairline-rgb: 58 50 41;
  --blood-rgb: 140 59 50;
  --blood-hi-rgb: 192 90 74;

  /* ---- the card (spec/STYLE.md §1) ------------------------------------
     The reference measures 2.511, which is a splinter on a real table. 1.75
     keeps what the height was for — a rules panel with room to breathe — and
     gives back the width the stat row needs. */
  --card-aspect: 1.75;
  --card-radius: 0.06; /* of the card's width */
  --card-pad: 0.085; /* of the card's width, all four sides */
  --card-art: 0.53; /* of the card's height: where the art ends */

  /* ---- tracking -------------------------------------------------------
     The serif is NEVER tracked. Only labels are. */
  --ls-kicker: 0.18em;
  --ls-label: 0.16em;
}
