Deliver the full conservation-nonprofit theme per OVERRIDE-CONTRACT (Wave A).
- 49 mandatory builtin overrides in templates/overrides/earthen/ (chrome,
marketing, primitives, commerce, blog family, auth surface, page-suggestions),
re-skinned from the frozen builtins into botanical/paper-grain chrome with
all content fields, custom tags, provider vars, HTMX/auth wiring and JS
preserved verbatim. Stale button/card/image/text/heading overrides fixed to
the new field contract (link/style/label, media/text via {% img %}).
- 7 page templates: default, full-width, landing, article, blog-index, contact,
auth.
- Blocks rework: impact_metrics/partner_logos/botanical_divider/footer converted
to builtin overrides (deleted as theme blocks); donation_cta and field_note
kept; impact_report added. Persona blocks now 3.
- 5 presets (all 19 tokens; mossbed/sage-morning/ember-loam are dual-mode).
- Bundled Fraunces + Work Sans woff2 (OFL) in assets/fonts/; fonts.json,
RECOMMENDED_FONTS.md, RECOMMENDED_ICONS.md; required_icon_packs=[lucide].
- Seed: home/about/blog(3 posts)/contact/login as Rootline Trust, contact-form
formConfig.targetTable=contact_submissions + row_inserted email-admins workflow.
- Themed email-safe wrapper; on-theme master pages; CSS-first botanical motion.
Verified: make (build) exit 0, make archive-check exit 0, check-safety exit 0.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.0 KiB
2.0 KiB
Earthen — fonts
Earthen bundles its display and body faces as source=template rows via
fonts.json, so the theme reads correctly on activation with no admin setup.
All CSS references fonts through var(--font-heading) / var(--font-body) /
var(--font-mono) with a fallback stack, so the admin can still override any
role from the Typography panel.
Bundled faces (ship with the theme)
| Role | Family | Weights | File | License |
|---|---|---|---|---|
| Heading | Fraunces | 400, 600 | assets/fonts/fraunces-latin-400.woff2, fraunces-latin-600.woff2 |
SIL Open Font License 1.1 (assets/fonts/OFL.txt) |
| Body | Work Sans | 400, 600 | assets/fonts/worksans-latin-400.woff2, worksans-latin-600.woff2 |
SIL Open Font License 1.1 (assets/fonts/OFL.txt) |
Fraunces gives the organic, slightly wobbly display voice the persona wants; Work Sans keeps body copy warm but legible for donation and report pages. Both are OFL, subset to the Latin range to stay inside the marketplace size gate.
Fallback stacks (used before/without admin fonts)
- Heading:
var(--font-heading, "Fraunces", "Playfair Display", Georgia, serif) - Body:
var(--font-body, "Work Sans", ui-sans-serif, system-ui, sans-serif) - Mono:
var(--font-mono, "JetBrains Mono", ui-monospace, monospace)
Optional admin choices
- Mono is not bundled. If your content uses monospace (data captions, code),
add JetBrains Mono (
google:JetBrains Mono, OFL) from the Typography panel Google Fonts tab and assign it to Mono. Until then the system mono stack applies. - Alegreya (
google:Alegreya, OFL) is a good serif alternative for Body if you want a more literary, long-read feel for field journals. Assign it to Body to swap.
Notes
- Do not hardcode a
font-familyanywhere. Every family flows through the CSS variables so the admin font picker keeps working. - Bundled woff2 files are subset to Latin. Extend the subset only if you serve non-Latin content, and keep the total artifact within the registry size gate.