/* Self-hosted site fonts — SIL Open Font License 1.1, see the OFL-*.txt files beside this stylesheet.
   Variable woff2 subsets as served by Google Fonts on 2026-09-23; latin and latin-ext only. */

/* bricolage-grotesque — latin-ext */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 200 800;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url('bricolage-grotesque-latin-ext.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;
}

/* bricolage-grotesque — latin */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 200 800;
  font-stretch: 75% 100%;
  font-display: swap;
  src: url('bricolage-grotesque-latin.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;
}

/* mona-sans — latin-ext */
@font-face {
  font-family: 'Mona Sans';
  font-style: normal;
  font-weight: 200 900;
  font-stretch: 75% 125%;
  font-display: swap;
  src: url('mona-sans-latin-ext.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;
}

/* mona-sans — latin */
@font-face {
  font-family: 'Mona Sans';
  font-style: normal;
  font-weight: 200 900;
  font-stretch: 75% 125%;
  font-display: swap;
  src: url('mona-sans-latin.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;
}

/* martian-mono — latin-ext */
@font-face {
  font-family: 'Martian Mono';
  font-style: normal;
  font-weight: 100 800;
  font-stretch: 75% 112.5%;
  font-display: swap;
  src: url('martian-mono-latin-ext.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;
}

/* martian-mono — latin */
@font-face {
  font-family: 'Martian Mono';
  font-style: normal;
  font-weight: 100 800;
  font-stretch: 75% 112.5%;
  font-display: swap;
  src: url('martian-mono-latin.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;
}

/* Metric-matched fallbacks (the final craft review, 7 Oct 2026: a hero's title rose in a narrow fallback face and
   jumped when Bricolage arrived). While a face is still on its way, the titles and the body set in a local face sized
   to the same advance widths and line boxes, so the swap changes the letters' shape, never the lines' length, their
   breaks or their height. Measured with fontTools from these woff2s (Bricolage at wght 600 / 400, wdth 100, opsz 96,
   on an uppercase and a sentence sample; Mona Sans at 400) against Arial Bold and Arial. */
@font-face {
  font-family: 'Bricolage Fallback';
  src: local('Arial Bold'), local('Arial-BoldMT'), local('Helvetica Neue Bold'), local('HelveticaNeue-Bold'), local('Roboto Bold'), local('Roboto-Bold');
  font-weight: 500 900;
  size-adjust: 84.3%;
  ascent-override: 110.3%;
  descent-override: 32%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Bricolage Fallback';
  src: local('Arial'), local('ArialMT'), local('Helvetica Neue'), local('HelveticaNeue'), local('Roboto'), local('Roboto-Regular');
  font-weight: 100 499;
  size-adjust: 93.6%;
  ascent-override: 99.4%;
  descent-override: 28.8%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Mona Fallback';
  src: local('Arial'), local('ArialMT'), local('Helvetica Neue'), local('HelveticaNeue'), local('Roboto'), local('Roboto-Regular');
  size-adjust: 102.6%;
  ascent-override: 106.2%;
  descent-override: 31.2%;
  line-gap-override: 0%;
}
/* (P15 [5], 9 Nov 2026) Martian Mono's metric-matched fallbacks, for the Insights articles' contents list, open in a
   phone's first view: while Martian Mono is on its way the list sets in a local monospace face scaled to Martian's
   advance (0.7 em at wdth 100) with its ascent and descent (1.0 / 0.2 em), so an entry wraps on the same character and
   the list keeps its height when the face swaps (an entry that wrapped late pushed the text below it). One family per
   advance: Consolas 0.5498 em, Cascadia Mono 0.5859, the 0.600 faces (Courier New, Liberation, Roboto, Droid and Noto
   Sans Mono, Courier), the 0.602 faces (Menlo, DejaVu Sans Mono); measured in Chrome. */
@font-face {
  font-family: 'Martian Fallback Consolas';
  src: local('Consolas');
  font-weight: 100 900;
  size-adjust: 127.32%;
  ascent-override: 78.54%;
  descent-override: 15.71%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Martian Fallback Cascadia';
  src: local('Cascadia Mono'), local('CascadiaMono-Regular');
  font-weight: 100 900;
  size-adjust: 119.47%;
  ascent-override: 83.7%;
  descent-override: 16.74%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Martian Fallback 600';
  src: local('Courier New'), local('CourierNewPSMT'), local('Liberation Mono'), local('LiberationMono'), local('Roboto Mono'), local('RobotoMono-Regular'), local('Droid Sans Mono'), local('DroidSansMono'), local('Noto Sans Mono'), local('NotoSansMono-Regular'), local('Courier');
  font-weight: 100 900;
  size-adjust: 116.65%;
  ascent-override: 85.73%;
  descent-override: 17.15%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Martian Fallback 602';
  src: local('Menlo'), local('Menlo-Regular'), local('DejaVu Sans Mono'), local('DejaVuSansMono');
  font-weight: 100 900;
  size-adjust: 116.27%;
  ascent-override: 86.01%;
  descent-override: 17.2%;
  line-gap-override: 0%;
}

/* (the gap fix, 11 Nov 2026) An Insights article's title panel on a phone, which the reading now follows directly (no
   reserve under it): faces that keep its height whether or not the web faces have arrived. Named only by the article
   hero's phone rules in insights.css.
   - The title (Bricolage, wght 600 at font-stretch 84%, uppercase, max-width 6.8em on a phone): Arial Bold at 68%, the
     middle of the sizes at which all seven titles take the same number of lines in the fallback as in Bricolage, in
     Chrome and in WebKit, at 320 to 430 px (62.25% to 74.25%: a title's lines never depend on a few pixels). Ascent and
     descent are Bricolage's (0.93 / 0.27 em), so the baseline sits where Bricolage's does. Without Arial (Android) the
     same at Roboto Bold's size, 72%: an estimate from Roboto's narrower capitals, not measured here (no Roboto on the
     workstation), well inside the same window.
   - The dek (Mona Sans): its own family on the same files with font-display: optional. Mona Fallback (Arial at 102.6%,
     above) is already the closest single size, yet a dek line can turn on a fraction of a pixel ("website" misses a
     line by 0.3 px at 430 px), which no fallback can follow; so the dek keeps the face it was first laid out in: Mona
     Sans when it is in at the first paint (preloaded; from the cache on every later page), else Mona Fallback for that
     view. Its lines never move after the first paint. */
@font-face {
  font-family: 'Bricolage Fallback 84';
  src: local('Arial Bold'), local('Arial-BoldMT');
  font-weight: 500 900;
  size-adjust: 68%;
  ascent-override: 136.76%;
  descent-override: 39.71%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Bricolage Fallback 84 Roboto';
  src: local('Roboto Bold'), local('Roboto-Bold');
  font-weight: 500 900;
  size-adjust: 72%;
  ascent-override: 129.17%;
  descent-override: 37.5%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Mona Sans Hero';
  font-style: normal;
  font-weight: 200 900;
  font-stretch: 75% 125%;
  font-display: optional;
  src: url('mona-sans-latin-ext.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: 'Mona Sans Hero';
  font-style: normal;
  font-weight: 200 900;
  font-stretch: 75% 125%;
  font-display: optional;
  src: url('mona-sans-latin.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;
}
