Full Wave A build to the OVERRIDE-CONTRACT (frozen cms a0f07e2ae): - 49 mandatory builtin overrides in templates/overrides/magazine-bold/, re-skinned to streetwear cover-story chrome (massive condensed uppercase Archivo Black headlines, heavy 2px rules, hard square edges, mono datelines, fluoro accent slabs). Every content field, provider var, custom tag and JS block preserved verbatim from the frozen builtin defaults; legacy button (link/style/label) and card (media/text) field reads already reconciled. - 7 page templates: default, full-width, landing, article, blog-index, contact, auth. - 4 persona blocks (deleted masthead/photo_essay/pull_quote/issue_archive/ colophon — now overrides of navbar/gallery/quote/post-index/footer): cover_story, lookbook, drop_calendar, credits_ticker. - 5 dual-mode presets (newsprint+voltage light / ink-black+fluoro dark), all 19 tokens, dark tuned not inverted. - Bundled OFL woff2: Archivo Black (display), Inter (body), IBM Plex Mono (labels); fonts.json + assets/fonts/LICENSES.md. All font-family via var(--font-heading|body|mono, fallback). - Themed email-safe wrapper (tables, inline styles, streetwear defaults). - Master pages (navbar/footer/slot chrome) + seed demo site (OFFCUT label: home, about, blog + 3 posts, contact with data table + row_inserted → email-admins workflow, login) in fashion-label voice. - MID motion tier: marquee ticker, scroll reveal, duotone hover, scroll progress bar — all prefers-reduced-motion honored with static fallback, no canvas. - Icon packs (lucide, simple-icons) declared in plugin.mod + RECOMMENDED_ICONS. Verified: `make build` exit 0; `check-safety` 32 checks 19 ok 13 skip -> OK. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
45 lines
2.4 KiB
Markdown
45 lines
2.4 KiB
Markdown
# Magazine Bold — fonts
|
|
|
|
This theme **bundles** a Latin subset of three open-licence (SIL OFL 1.1)
|
|
families, so it looks correct the moment it is activated — no admin setup
|
|
required. The bundled faces are declared in `fonts.json` and land in the
|
|
typography picker as `source=template` rows.
|
|
|
|
| Slot | Bundled family | Weights / styles | Role |
|
|
|---------|----------------|------------------------|---------------------------------------------------------------|
|
|
| Heading | Archivo Black | 400 normal | Massive condensed uppercase cover headlines and the wordmark |
|
|
| Body | Inter | 400 / 500 / 700 normal | Body copy, decks and UI text |
|
|
| Mono | IBM Plex Mono | 400 / 500 normal | Kickers, datelines, folio numbers, captions and button labels |
|
|
|
|
The bundled woff2 files and their licence record live in `assets/fonts/`
|
|
(`LICENSES.md`). Every `font-family` in the theme is routed through
|
|
`var(--font-heading, ...)`, `var(--font-body, ...)` and `var(--font-mono, ...)`
|
|
with a fallback stack, so the layout is usable before any font is assigned and
|
|
the admin font picker stays in full control.
|
|
|
|
## Assigning the bundled faces
|
|
|
|
1. In the BlockNinja admin, open **Settings → Theme → Typography**.
|
|
2. In the **Bundled** tab, assign **Archivo Black** to the *Heading* slot.
|
|
3. Assign **Inter** to the *Body* slot.
|
|
4. Assign **IBM Plex Mono** to the *Mono* slot.
|
|
|
|
## Optional swaps (Google Fonts tab)
|
|
|
|
The identity is condensed-heavy display + neutral sans body + mono details.
|
|
Any of these drop in via the CSS variables with no template change:
|
|
|
|
- **Anton** (`google:Anton`) — a taller, more condensed display face for the
|
|
*Heading* slot; the loudest cover-headline option and the WO's alternate.
|
|
- **Archivo** (`google:Archivo`) — for the *Body* slot if you want the body to
|
|
echo the display family.
|
|
- **Space Grotesk** (`google:Space Grotesk`) — an alternative body / deck face.
|
|
- **Space Mono** (`google:Space Mono`) — a chunkier mono for the *Mono* slot.
|
|
|
|
## Bundling a commercial display face (out of scope for Wave A)
|
|
|
|
If the brand locks in a licensed display face in place of Archivo Black, licence
|
|
and subset the woff2 set, drop it in `assets/fonts/`, and add the family +
|
|
variants to `fonts.json`. The CSS does not change — the same `var(--font-heading)`
|
|
consumer picks up whichever face an admin assigns.
|