Re-persona noir from photography to the locked detective/true-crime
direction: case-file panels, typewriter type, redaction bars, evidence
board, film grain. High-key gallery (light) / darkroom black + amber
safelight (dark).
- 49 mandatory builtin overrides (chrome, marketing, primitives,
commerce, blog family, auth, page-suggestions), re-skinned from the
frozen builtin defaults with every field/provider/tag/JS preserved;
legacy button/card field reads reconciled to the new contract.
- 7 page templates (default, full-width, landing, article, blog-index,
contact, auth) + themed email wrapper.
- 4 persona blocks (case_file, evidence_board, redacted_quote,
case_dossier); old photography blocks deleted (now overrides).
- 5 dual-mode presets (19 tokens, light+dark tuned).
- Bundled OFL fonts (Source Serif 4, IBM Plex Mono) + licenses;
RECOMMENDED_FONTS/ICONS updated; required_icon_packs=lucide.
- Master pages + seed demo ("The Cold File": home/about/blog x3/contact
with case_tips data table + row_inserted email-admins workflow/login).
- noir CSS vocabulary via manifest css.input_css_append; MID motion
(scroll-reveal + gallery lightbox, reduced-motion honored, no canvas).
Verified: make build exit 0; check-safety 32 checks 19 ok 13 skip -> OK.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
49 lines
2.1 KiB
Markdown
49 lines
2.1 KiB
Markdown
# 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.
|