# Noir — Recommended Fonts

Noir is a detective / true-crime dossier. The typographic voice is a typewriter
for the file itself and a quiet reading serif for the case write-up. The theme
**bundles** two OFL faces so it renders on its intended stack with no admin setup
(`fonts.json`, woff2 in `assets/fonts/`, licenses in
`assets/fonts/LICENSES.md`):

- **IBM Plex Mono** (400, 500) — the shipped typewriter face. Serves both the
  heading (typed case-file headers) and mono (evidence labels, case numbers,
  stamps) slots by default.
- **Source Serif 4** (400, 400 italic) — the shipped reading body for case prose.

Every family flows through `var(--font-heading|body|mono, <fallback>)`; nothing
is hardcoded, so an admin can override any slot from the picker. The fallback
stacks name the *ideal* typewriter faces first, so assigning them lifts the look
further:

## Heading — typed case-file display

- **Ideal**: `google:Special Elite` (Apache 2.0) — worn typewriter, the classic
  true-crime header face.
- **Shipped default**: IBM Plex Mono 500 (bundled, OFL).
- **How**: Site Settings → Typography → Heading → Google Fonts → search
  "Special Elite" → Add → assign to the Heading slot.

## Body — case write-up

- **Ideal & shipped**: Source Serif 4 (bundled, OFL) — a calm high-legibility
  serif for long-form reading.
- **Alternative**: `google:Source Serif 4` for the full weight range, or
  `google:Lora`.
- **How**: it is already assigned via the bundled manifest; to change, Site
  Settings → Typography → Body → pick a serif → assign to the Body slot.

## Mono — evidence labels, case numbers, stamps

- **Ideal**: `google:Courier Prime` (OFL) — clean courier, the report-typewriter
  face.
- **Shipped default**: IBM Plex Mono 400 (bundled, OFL).
- **How**: Site Settings → Typography → Mono → Google Fonts → search
  "Courier Prime" → Add → assign to the Mono slot.

## Licensing

All bundled woff2 files are SIL OFL 1.1 latin subsets. See
`assets/fonts/LICENSES.md`. Special Elite is Apache 2.0 and is *not* bundled — it
is only named as an admin-assignable first choice in the fallback stack.
