/* ============================================================================
   RARA · tokens.css — design tokens + self-hosted type
   Slice 4a foundation. This is the ONLY place raw hex/font files are declared;
   every other stylesheet consumes the CSS custom properties below.

   Palette evolution (Slice 4):
     • --burgundy is THE single locked accent (buttons, links, focus, active).
     • Neutrals cooled away from the old warm cream toward a calmer paper.
     • --gold is RETIRED (owner 5th escalation 2026-07-08 "that golden is awful"):
       the legacy gold token NAMES now resolve to the replacement system
       (oxblood / muted / cream) — see the :root block. No gold hex renders anywhere.
     • No pure #000 / #fff anywhere. AA (4.5:1 body / 3:1 large + UI) holds for
       every text/bg pair shipped (ratios verified in the build report).
   ============================================================================ */

/* ---- Self-hosted fonts (latin + latin-ext woff2; no Google CDN) ---------- */
/* Bodoni Moda — display serif (400, 600, italic 400) */
@font-face{
  font-family:'Bodoni Moda';font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/bodoni-400-latin.530e21dc0628.woff2") format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Bodoni Moda';font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/bodoni-400-latin-ext.26376fd79d81.woff2") format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Bodoni Moda';font-style:normal;font-weight:600;font-display:swap;
  src:url("../fonts/bodoni-600-latin.530e21dc0628.woff2") format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Bodoni Moda';font-style:normal;font-weight:600;font-display:swap;
  src:url("../fonts/bodoni-600-latin-ext.26376fd79d81.woff2") format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Bodoni Moda';font-style:italic;font-weight:400;font-display:swap;
  src:url("../fonts/bodoni-400-italic-latin.5604463d7cee.woff2") format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Bodoni Moda';font-style:italic;font-weight:400;font-display:swap;
  src:url("../fonts/bodoni-400-italic-latin-ext.8b1007975aa9.woff2") format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* Hanken Grotesk — UI sans (400, 500, 600) */
@font-face{
  font-family:'Hanken Grotesk';font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/hanken-400-latin.a6b899943e31.woff2") format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Hanken Grotesk';font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/hanken-400-latin-ext.a3a0917757d7.woff2") format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Hanken Grotesk';font-style:normal;font-weight:500;font-display:swap;
  src:url("../fonts/hanken-500-latin.a6b899943e31.woff2") format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Hanken Grotesk';font-style:normal;font-weight:500;font-display:swap;
  src:url("../fonts/hanken-500-latin-ext.a3a0917757d7.woff2") format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Hanken Grotesk';font-style:normal;font-weight:600;font-display:swap;
  src:url("../fonts/hanken-600-latin.a6b899943e31.woff2") format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Hanken Grotesk';font-style:normal;font-weight:600;font-display:swap;
  src:url("../fonts/hanken-600-latin-ext.a3a0917757d7.woff2") format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* JetBrains Mono — mono / labels (400, 500) */
@font-face{
  font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/jetbrains-400-latin.570751c5f8b4.woff2") format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/jetbrains-400-latin-ext.e6155c5cfacf.woff2") format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url("../fonts/jetbrains-500-latin.570751c5f8b4.woff2") format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url("../fonts/jetbrains-500-latin-ext.e6155c5cfacf.woff2") format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ---- Design tokens ------------------------------------------------------- */
:root{
  /* Accent — the ONE locked color (buttons, links, focus, active states). */
  --burgundy:#591C2A; --burgundy-deep:#4A1622;

  /* Neutrals — OWNER DIRECTIVE 2026-07-07: the page canvas is PURE WHITE.
     No sand, no warm beige, ever. Depth comes from cool neutral grays only.
     --bg is the page canvas; --surface is cards/rails/summaries. Legacy names
     (--paper, --cream, --cream-2) are preserved as aliases so every
     faithfully-migrated selector resolves unchanged (single source of truth). */
  --bg:#FFFFFF; --surface:#FFFFFF;
  --paper:#FFFFFF;          /* legacy alias of --surface (cards, summaries, inputs) */
  --ink:#1A1518;            /* near-black body text — never pure #000 */
  /* Achromatic grays (designer-blessed, AA-verified on #FFF): R==G==B exactly,
     zero hue cast — the owner's no-warm-tints law, un-escalatable. */
  --muted:#555555;          /* AA body muted on white (7.46) */
  --warm-grey:#6E6E6E;      /* AA labels/eyebrows/meta (5.10); name is legacy */
  --line:#E5E5E5; --line-2:#D4D4D4;   /* hairlines / stronger dividers */

  /* Dual-role neutral: light text on burgundy surfaces AND soft fill on --bg
     (buttons-ghost, chips, meter tracks, card mats). Achromatic. */
  --cream:#F5F5F5; --cream-2:#EBEBEB;
  /* Placeholder-gradient companions, achromatic to match the white canvas. */
  --ph-1:#E5E5E5; --ph-2:#DBDBDB; --sk-1:#F5F5F5;

  /* Gold RETIRED — owner 5th warmth escalation (2026-07-08): gold rejected at the
     PALETTE level ("that golden is awful"). These legacy token NAMES now resolve to the
     replacement system so every consumer updates with no re-sweep: guilloché/engraving
     -> oxblood (--burgundy-deep), amber-status -> --muted, footer-on-burgundy -> --cream.
     No gold hex renders anywhere. Signature burgundy #591C2A stays scarce; the darker
     oxblood does only reduced-opacity hairline/engraving work, never a solid mass. */
  --gold:var(--burgundy-deep); --gold-ink:var(--muted); --gold-light:var(--cream);

  /* Support */
  --good:#4F6B4F;

  /* Ultra-diffuse hover lift — the "expensive-by-detail" shadow the brief reserves
     for cards, CTA and the acta (BRAND_BRIEF §Expensive-by-detail). Ink-tinted,
     achromatic, ~7% on the white canvas so it reads as depth, never as a box. */
  --lift:0 10px 28px rgba(26,21,24,.07);

  /* Type */
  --serif:'Bodoni Moda',Georgia,'Times New Roman',serif;
  --sans:'Hanken Grotesk',-apple-system,BlinkMacSystemFont,sans-serif;
  --mono:'JetBrains Mono','Courier New',monospace;

  --wrap:1320px;

  /* Brand component aliases (Intaglio) — semantic names mapping the CLOSED palette
     to brand roles; NO new color values. Guilloché hairlines are decorative only
     (gold is never small text); acta band text is --cream on --brand-band. */
  --brand-seal:var(--burgundy); --brand-seal-hover:var(--burgundy-deep);
  --brand-verified:var(--good); --brand-folio:var(--burgundy);
  --brand-folio-chip:var(--cream-2); --brand-mat:var(--cream-2);
  --brand-guillo:var(--gold); --brand-band:var(--burgundy-deep);
}

/* ---- Wide-screen container tiers (Slice · widescreen pass) ----------------
   The owner reviews on a 3840px monitor: at the base --wrap (1320px) the page
   sits in a narrow centered column with vast dead margins on anything above
   ~1600px. These tiers ONLY engage at >=1920px so the <=1600px look the owner
   already signed off on is byte-for-byte unchanged (guarded with min-width).
   Card width is held roughly constant (~310-320px, matching the base 4-col
   desktop card) as columns are added in components.css/pdp.css, so the grids
   gain columns rather than the cards themselves stretching. */
@media(min-width:1920px){:root{--wrap:1680px}}
@media(min-width:2560px){:root{--wrap:2040px}}
@media(min-width:3200px){:root{--wrap:2400px}}
