The FONTS tab in the skin manager writes three keys to skin_values.csv (scope = global or per-entity). darx_load_skin() step 8 resolves each key to a real CSS stack and emits the custom properties below.
For each surface: what CSS declaration actually controls body / mono / sans text, and whether the skin manager can reach it.
| Surface | Pages | Body font source | Mono font source | Sans font source | Skin effective? |
|---|---|---|---|---|---|
| DARMASTER cockpit home | __darmaster/home.php |
var(--font-body) |
var(--font-mono) |
var(--font-sans) |
✓ All 3 |
| DARMASTER section portals | __darmaster/01–07/index.php |
var(--font-body) |
var(--font-mono) |
var(--font-sans) |
✓ All 3 |
| Entity homepages | __darx / __darh / __darm / __darx07–10 / home.php |
var(--font-body) |
var(--font-mono) |
var(--font-sans) |
✓ All 3 |
| Entity section portals | __darx / __darh / __darm / 01–07 × 8 sites |
var(--font-body) |
var(--font-mono) |
var(--font-sans) |
✓ All 3 |
| Skin manager | __darmaster/08/skin.php |
var(--font-body) |
var(--font-mono) |
var(--font-sans) |
✓ All 3 |
| Widgets / desk / clock | __darmaster/10/ × 3 pages |
var(--font-body) |
var(--font-mono) |
var(--font-sans) |
✓ All 3 |
| Glossary | __darmaster/08/glossary.php |
var(--font-body) |
var(--font-mono) |
var(--font-sans) |
✓ All 3 |
| Doc library — body text | __darmaster/08/index.php + entity shims × 8 |
var(--type-sans) → var(--font-sans) NOT --font-body. Change sans picker, not serif. |
var(--type-mono) → var(--font-mono) ✓ |
var(--font-sans) ✓ |
⚠ Partial |
| Doc library — UI elements | webpage_section_generic.css classes (all 8 libs) |
HARDCODED 'Montserrat' | HARDCODED 'DM Mono' | HARDCODED 'Montserrat' | ✗ None |
| Doc viewer (TXT) | __*/08/txt.php — darx_txt_vwr.php |
var(--font-body) (viewer only) |
var(--font-mono) ✓ |
var(--font-sans) ✓ |
✓ All 3 |
| DARX consumer website | __darx/index.php · root index.php · keycard_slide.php |
var(--f-body) = 'Montserrat' separate old token system |
var(--f-mono) = 'DM Mono' | var(--f-display) = 'Bebas Neue' | ✗ None |
Every __*/08/index.php loads these stylesheets in sequence. Later files WIN the cascade at equal specificity. Annotations show how each affects the font variables.
Net result for the doc library body: body { font-family: var(--type-sans) } (step 9) → --type-sans aliased to var(--font-sans) (step 10) → controlled by the Sans-serif picker in the skin manager. Changing Serif — body text has no effect on doc library body text.
These declarations are concrete values — no CSS variable can override them from outside the file. They affect every instance of the doc library across all 8 entity sites.
section header / page titlemetadata label classtoolbar action labelfilter chip labelbreadcrumb / nav labelpanel headingdocument ID / code labeldate / timestamp fieldstatus badgeentity code chipsection-number labeldept code fieldresponsive label (media query)file-size readoutsearch result countlist item metalist item IDsidebar label (media query)document title / hero heading'Montserrat', sans-serif'DM Mono', monospace'Bebas Neue', 'Wide Sans', sans-serif'Inter', sans-serifvar(--type-sans) → var(--font-sans). Changing the Serif — body text
picker in the skin manager sets --font-body, which the doc library body rule does NOT read.
To change doc library body text, use the Sans-serif — UI text picker.
Portal and cockpit pages are unaffected — they correctly use var(--font-body).
css/webpage_section_generic.css contains concrete font-family: 'Montserrat', sans-serif
and font-family: 'DM Mono', monospace values on specific class selectors (see section 4 above).
These load AFTER the skin step 8 inline style and WIN the cascade at equal specificity.
No CSS variable change from the skin manager can override them without either:var(--font-sans) / var(--font-mono) inside that file, orskin_values.csv stores global,font-serif,alegreya but tokens.css already defaults
--font-body to 'Alegreya', Georgia, serif. Step 8 emits the same stack — no change.
Additionally, if Google Fonts is unreachable in the MAMP dev environment, switching between any two
Google-Font picks (e.g. Alegreya → Lora) produces identical output because both fall back to Georgia.
System-font picks (Georgia, Bahnschrift, Consolas) require no internet and immediately confirm whether the
mechanism works.
__darx/index.php and the root index.php load css/darx_tokens.css and
css/darx_system.css, which use var(--f-body), var(--f-mono),
var(--f-display) — a different variable namespace from the skin manager's --font-* system.
The skin manager has zero effect on these pages by design (they are the public-facing consumer brand site, not the internal platform).
This is expected behaviour, not a bug — but it is a source of confusion when auditing why font changes appear to have no effect.
/darmaster/__darmaster/01/). Body text and labels should switch to Arial. If they do: the mechanism works and Bug 3 explains why you saw nothing before. If they do not: there is a CSV write-permission issue to investigate first.
css/webpage_section_browser.css (which already aliases --type-* vars), change the
--type-sans alias so the doc library body uses --font-body instead:--type-serif: var(--font-body); → already correct--type-sans: var(--font-sans); → change to var(--font-body) if you want serif in doc library bodyfont-family: 'Montserrat', sans-serif → font-family: var(--font-sans)font-family: 'DM Mono', monospace → font-family: var(--font-mono)font-family: 'Cormorant Garamond', Georgia, serif → font-family: var(--font-body)css/darx_system.css / darx_tokens.css pair is intentionally separate — it is the public brand system predating the internal platform skin manager. If you want the skin manager to control the consumer site too, the variables in darx_tokens.css would need to be aliased to the --font-* system. That is a separate project decision.
| Surface group | Pages | Skin manager controls? | Primary issue |
|---|---|---|---|
| Cockpit + portals + entity homepages | ~60 pages | ✓ Full | Bug 3: default selection = no visible change unless Google Fonts loads |
| Skin manager page itself | 1 page | ✓ Full | — |
| Widgets / ddesk / clock | 3 pages | ✓ Full | — |
| Doc library body text | ~11 pages (8 libs + glossary + fable5 + skin) | ⚠ font-sans only | Bug 1: body wired to --font-sans not --font-body |
| Doc library UI elements | same ~11 pages | ✗ None | Bug 2: hardcoded fonts in webpage_section_generic.css |
| DARX consumer website | ~3 pages | ✗ None by design | Bug 4: separate --f-* token system |
END OF DOCUMENT — DARMASTER_AUDIT_FONT_INVENTORY_20260615.html