# Recommended fonts — Terminal

Every family flows through the admin typography picker via CSS variables. Templates never
hardcode a `font-family`; they read `var(--font-heading, ...)`, `var(--font-body, ...)`,
and `var(--font-mono, ...)`, each with a bundled fallback so the intended look survives
before the admin assigns a slot.

## Bundled (ship as-is)

The theme bundles two OFL monospace families (latin subset, ~69 KB total) as
`source=template` rows, already selectable in the picker. They back the fallbacks:

| Slot | Fallback family | File |
|---|---|---|
| Heading | JetBrains Mono | `assets/fonts/jetbrains-mono-latin.woff2` |
| Mono | JetBrains Mono | `assets/fonts/jetbrains-mono-latin.woff2` |
| Body | IBM Plex Mono | `assets/fonts/ibm-plex-mono-400.woff2`, `ibm-plex-mono-500.woff2` |

A terminal theme is monospace top to bottom, so all three slots default to a mono family.
License record: `assets/fonts/LICENSES.md`.

## Recommended admin assignments (Google Fonts tab)

Assign these from Admin -> Appearance -> Typography if you want the full family (extended
glyph coverage) or the display accent the bundled subset omits:

| Slot | Assign | Why |
|---|---|---|
| Heading | JetBrains Mono or IBM Plex Mono | Sharp, even monospace headings that read as terminal chrome. |
| Body | IBM Plex Mono | Slightly wider, highly readable for long docs and man pages. |
| Mono | JetBrains Mono | Code blocks, prompts, keybind tables. |
| Display accent (optional) | VT323 | Chunky bitmap-CRT face for big phosphor hero display type. Not bundled; assign from the Google Fonts tab if you want the retro-CRT accent. |

All four are SIL Open Font License 1.1. Nothing here hardcodes a family, so any admin
assignment overrides the bundled fallback cleanly.

## Fallback chain (already in theme CSS)

Before any admin selection the theme degrades through:

```
"JetBrains Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace
```
