Useful LInks:
- Agnostic Design: https://www.figma.com/design/QJa6sj5iHBmR1PBVJsXlHh
- Plugin (responsive controls): https://wordpress.org/plugins/block-responsive/
- Plugin (responsive controls): https://wordpress.org/plugins/tzm-responsive-block-controls/
Documentation of the core-fse parent theme and its design-system contract.
Related docs
- Design-System:
- Architecture — the overall model and system boundaries.
- CSS architecture — the cascade, bundles, and editor parity.
- Tokens and contracts — variable layers and usage rules.
- Fluid values — how responsive values work.
- theme.json — editor settings and WordPress presets.
- Child theme — the required contract and the Benedictine example.
- Public API reference — available public values.
- Limitations and technical details — WordPress workarounds and compatibility.
Contents:
Purpose
core-fse is a parent Full Site Editing theme. It provides the shared design system, Gutenberg settings, and base CSS layer for sites implemented as child themes.
Every production child theme:
- declares
Template: core-fse; - inherits its parent
theme.jsonsettings; - defines its own brand values;
- can extend the palette, fonts, gradients, shadows, and global styles;
- compiles
core-fseCSS into its own CSS bundles.
The documentation is normative guidance for developers, but the ultimate sources of truth remain:
assets/css/vars/*.css;assets/css/*.css;theme.json;- the code of an actual child theme.
What the design system includes
- two token layers: Primitive and Semantic;
- an overridable Core contract;
- public WordPress presets from
theme.json; - base frontend and editor styles;
- child-theme inheritance and extension rules;
- fluid typography and spacing;
- shared accessibility rules.
Not included:
- detailed custom-block architecture;
- PHP/JS theme infrastructure that does not affect the design contract;
- the Global Styles administrative custom-CSS editor;
- automatic Figma synchronization.
Sites are built from WordPress core blocks and custom blocks. Both block types must use the same public design-system API.
CSS styles priority
Priority for CSS consumers:
- a WordPress preset;
- a Semantic/Core variable;
- a plain CSS value for a unique case.
Primitive variables are not a public API.
CSS Unit policy
- Use WordPress presets and public design-system variables whenever a suitable
value exists. - If a fixed custom value is unavoidable, use
rem,em,%, viewport units,
or another context-appropriate relative unit. - Do not hardcode layout, spacing, sizing, positioning, or typography in
px. - Use
pxonly where a physical pixel boundary is intentional, such as a1pxborder or separator. - Do not set
letter-spacingunless the design clearly requires a meaningful
deviation from inherited theme typography. It must not be added as a default
styling habit. - For
font-size, always use an existingvar(--wp--preset--font-size--*)value. A percentage may be used for an
intentional relative adjustment. Do not hardcode font sizes inpx,rem,
orem.
| Task | Use |
|---|---|
| Palette color | var(--wp--preset--color--*) |
| Spacing from the system scale | var(--wp--preset--spacing--*) |
| Font size from the system scale | var(--wp--preset--font-size--*) |
| Child-theme font family | var(--wp--preset--font-family--*) |
| Radius, line height, letter spacing | semantic variable |
| Z-index or motion | semantic variable |
| Site brand setting | override the Core contract in the child theme |
| Unique grid/layout construction | plain CSS |
/* Correct */
.card {
padding: var(--wp--preset--spacing--fluid-md);
border-radius: var(--radius-medium);
}
/* Incorrect: a primitive has become the component API */
.card {
padding: var(--size-fluid300-16px);
}