/* Red Banana v3 "THE OBJECT" — TYPE LANE
   Owner: type lane. Do not edit outside this file / assets/fonts/v3/**.
   Display: Bricolage Grotesque (var: opsz 12-96, wght 200-800, wdth 75-100).
   Text:    Instrument Sans (var: wght 400-700).
   Mono:    IBM Plex Mono 500 (static, figures only).
   See DESIGN.md "## Type" (or assets/fonts/v3/TYPE-NOTE.md) for the pick reasoning. */

/* ---------- Bricolage Grotesque (display) ---------- */
@font-face {
  font-family: "Bricolage Grotesque";
  src: url("../fonts/v3/bricolage-grotesque-var.woff2") format("woff2-variations"),
       url("../fonts/v3/bricolage-grotesque-var.woff2") format("woff2");
  font-weight: 200 800;
  font-stretch: 75% 100%;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0020-007E, U+00A9, U+00B7, U+2013-2014, U+2018-2019, U+201C-201D, U+2026, U+2122, U+2192;
}

/* Metric-matched fallback so the swap from system font to Bricolage causes no
   reflow: ascent/descent/line-gap copied from the real font's hhea table
   (930/-270/0 of 1000 upm = 93% / 27% / 0%), size-adjust tuned against the
   fallback stack's average glyph width so caps measure the same width. */
@font-face {
  font-family: "Bricolage Grotesque Fallback";
  src: local("Arial"), local("Liberation Sans"), local("Helvetica Neue"), local("Helvetica");
  ascent-override: 93%;
  descent-override: 27%;
  line-gap-override: 0%;
  size-adjust: 126%;
}

/* ---------- Instrument Sans (text) ---------- */
@font-face {
  font-family: "Instrument Sans";
  src: url("../fonts/v3/instrument-sans-var.woff2") format("woff2-variations"),
       url("../fonts/v3/instrument-sans-var.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0020-007E, U+00A9, U+00B7, U+2013-2014, U+2018-2019, U+201C-201D, U+2026, U+2122, U+2192;
}

/* hhea 970/-250/0 of 1000 upm = 97% / 25% / 0%. */
@font-face {
  font-family: "Instrument Sans Fallback";
  src: local("Arial"), local("Liberation Sans"), local("Helvetica Neue"), local("Helvetica");
  ascent-override: 97%;
  descent-override: 25%;
  line-gap-override: 0%;
  size-adjust: 136%;
}

/* ---------- IBM Plex Mono 500 (figures only) ---------- */
@font-face {
  font-family: "IBM Plex Mono";
  src: url("../fonts/v3/ibm-plex-mono-500.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0020-007E, U+00A9, U+00B7, U+2013-2014, U+2018-2019, U+201C-201D, U+2026, U+2122, U+2192;
}

/* hhea 1025/-275/0 of 1000 upm = 102.5% / 27.5% / 0%. */
@font-face {
  font-family: "IBM Plex Mono Fallback";
  src: local("Courier New"), local("Liberation Mono"), local("DejaVu Sans Mono"), local("Courier");
  ascent-override: 102.5%;
  descent-override: 27.5%;
  line-gap-override: 0%;
  size-adjust: 136%;
}

/* ---------- tokens the integrator's v3.css consumes ---------- */
:root {
  --font-display: "Bricolage Grotesque", "Bricolage Grotesque Fallback", ui-sans-serif, system-ui, sans-serif;
  --font-text: "Instrument Sans", "Instrument Sans Fallback", ui-sans-serif, system-ui, sans-serif;
  --font-mono: "IBM Plex Mono", "IBM Plex Mono Fallback", ui-monospace, "SFMono-Regular", monospace;

  /* type scale — display sizes match the Moto reference (6.4/5.2/4.2rem at 1440) */
  --fs-h1: clamp(3rem, 1.6rem + 6vw, 6.4rem);
  --fs-h2: clamp(2.4rem, 1.4rem + 4.6vw, 5.2rem);
  --fs-h3: clamp(2rem, 1.3rem + 3.4vw, 4.2rem);
  --fs-body-lg: 1.125rem;
  --fs-body: 1rem;
  --fs-small: 0.875rem;
  --fs-mono: 0.9375rem;

  --lh-display: 0.96;
  --lh-body: 1.3;

  --ls-display: -0.02em;
  --ls-body: -0.003em;
}

/* ---------- scale ---------- */
h1, .h1 {
  font-family: var(--font-display);
  font-weight: 800;
  font-variation-settings: "opsz" 96, "wdth" 100;
  font-size: var(--fs-h1);
  line-height: var(--lh-display);
  letter-spacing: var(--ls-display);
  text-transform: uppercase;
}

h2, .h2 {
  font-family: var(--font-display);
  font-weight: 700;
  font-variation-settings: "opsz" 96, "wdth" 100;
  font-size: var(--fs-h2);
  line-height: var(--lh-display);
  letter-spacing: var(--ls-display);
  text-transform: uppercase;
}

h3, .h3 {
  font-family: var(--font-display);
  font-weight: 700;
  font-variation-settings: "opsz" 60, "wdth" 100;
  font-size: var(--fs-h3);
  line-height: calc(var(--lh-display) + 0.06);
  letter-spacing: var(--ls-display);
  text-transform: uppercase;
}

body, .text {
  font-family: var(--font-text);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: var(--ls-body);
}

.text-lg { font-size: var(--fs-body-lg); line-height: var(--lh-body); letter-spacing: var(--ls-body); }
.text-small, small { font-size: var(--fs-small); line-height: var(--lh-body); letter-spacing: var(--ls-body); }

/* mono figures — numbers wall, stats, dates. Tabular so columns don't jitter. */
.mono, .fig {
  font-family: var(--font-mono);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1, "lnum" 1;
  letter-spacing: 0;
}
