/* ------------------------------------------------------------------
   NB International Pro — reading and labelling face for
   stonecastlepictures.com. Neubau, Stefan Gandl.
   Display is Die Grotesk C and ships from die-grotesk.css.

   Rebuilt 24 Aug 2026 from the licensed web files in Dropbox at
   03 Website/Mockups for Allen/NBInternal Font/.

   Subset to Latin + Latin-1 + Latin Extended-A + typographic
   punctuation (380 of 479 glyphs). Kerning and standard features kept.

   Regular 17.1K · Medium 17.7K · Bold 16.9K · Mono 12.4K = 64.1K.
   With Die Grotesk C's 58.2K the whole font payload is 122.3K.

   ⚠ LICENCE. These files carry fsType 4 — Neubau restricts embedding,
   and sells desktop and web licences separately. Local development is
   fine. Nothing here goes to a public URL until it is confirmed that
   the licence held covers web use. Spec §9 open item 1.

   ⚠ This file declares FACES AND FAMILY TOKENS ONLY. The type scale
   lives in src/styles/type.css, so the eight steps are defined in one
   place rather than split across three files. An earlier version of
   this file carried its own scale, and it had drifted: body 17px
   against the spec's 20px, no body-s step at all, and label/label-s
   at 14/12 where §3 wants 12/11 — so the 11px fine-print step did not
   exist. That is corrected in type.css.
   ------------------------------------------------------------------ */

/* Light, 300 — added 13 Sep 2026 for the reading copy in the What We Do
   blocks, Barry's call. ⚠ This is the licensed file as shipped by
   Neubau (21.1K), NOT a subset like the four below: fonttools was not
   on the machine when it went in. Same character set and then some, so
   nothing is missing — it is 3–4K heavier than it needs to be. Subset
   it the way docs/fonts-nb-international.md describes when convenient. */
@font-face {
  font-family: 'NB International Pro';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/nb-international-light.woff2') format('woff2');
}

@font-face {
  font-family: 'NB International Pro';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/nb-international-regular.woff2') format('woff2');
}

@font-face {
  font-family: 'NB International Pro';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/nb-international-medium.woff2') format('woff2');
}

@font-face {
  font-family: 'NB International Pro';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/nb-international-bold.woff2') format('woff2');
}

/* The Mono is 400 and nothing else — there is no second weight and no
   italic. This spec asked for Mono 500 in six places and that cut does
   not exist; every one of those would have been synthetically bolded
   by the browser, which smears a monospace at the 11–12px where the
   counters are tightest. Corrected to 400 throughout, 22 Aug 2026. */

@font-face {
  font-family: 'NB International Pro Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/nb-international-mono.woff2') format('woff2');
}

/* ---------- metrics-matched fallbacks ----------

   CLS < 0.1 is a hard ship gate, and self-hosting removes the network
   risk in front of font swap, not the swap itself.

   size-adjust measured against Arial metrics over a sample of real
   site copy — the same method that reproduced die-grotesk.css's
   published table exactly. ascent/descent are NB's own hhea values
   (800 / -200 per 1000upm), which is why they are round numbers.

   line-gap-override is 0% deliberately, not measured: NB carries a
   7.5% gap, but every type step sets an explicit line-height, so the
   gap would be overridden anyway. Matching die-grotesk.css.

   ⚠ Computed, not observed. §9 item 3 is not closed by this file.
   Re-measure on a built page before trusting the CLS gate. */

@font-face {
  font-family: 'NB International Fallback';
  font-weight: 300;
  src: local('Arial'), local('Helvetica Neue'), local('Liberation Sans');
  size-adjust: 100.8%;
  ascent-override: 80.0%;
  descent-override: 20.0%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'NB International Fallback';
  font-weight: 400;
  src: local('Arial'), local('Helvetica Neue'), local('Liberation Sans');
  size-adjust: 100.8%;
  ascent-override: 80.0%;
  descent-override: 20.0%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'NB International Fallback';
  font-weight: 500;
  src: local('Arial'), local('Helvetica Neue'), local('Liberation Sans');
  size-adjust: 100.8%;
  ascent-override: 80.0%;
  descent-override: 20.0%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'NB International Fallback';
  font-weight: 700;
  src: local('Arial Bold'), local('Helvetica Neue'), local('Liberation Sans Bold');
  size-adjust: 93.9%;
  ascent-override: 80.0%;
  descent-override: 20.0%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'NB International Mono Fallback';
  font-weight: 400;
  src: local('SF Mono'), local('Menlo'), local('Liberation Mono'), local('Courier New');
  size-adjust: 112.8%;
  ascent-override: 80.0%;
  descent-override: 20.0%;
  line-gap-override: 0%;
}

/* ---------- family tokens ---------- */

:root {
  --font-body: 'NB International Pro', 'NB International Fallback', Arial, sans-serif;
  --font-mono: 'NB International Pro Mono', 'NB International Mono Fallback', ui-monospace, monospace;
}

/* Bebas Neue, 400 — the festival laurel's face only (FilmLaurel.astro),
   Barry, 28 Sep 2026: "mimic the font" of the Nashville Film Festival's
   own laurel. Measured against it, Bebas Neue's widths land within 3%
   on every line; Oswald ran 13% wide. Not a third reading or display
   family: it sets that one badge, the way the festival's own art does.
   Copyright 2010 Dharma Type (Ryoichi Tsunekawa), SIL Open Font Licence
   1.1 — free to embed. Latin subset from Fontsource, 13.8K. */
@font-face {
  font-family: 'Bebas Neue';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/bebas-neue.woff2') format('woff2');
}
