Skip to main content
The theme’s colors are CSS custom properties on :root. That is why a Customizer change updates the whole site — including dark mode — without rebuilding a stylesheet.

Where the tokens live

Color tokens

Token names are internal. They may change between releases. Use the Customizer for branding you need to be durable, and treat direct variable references as a convenience rather than a contract.

Using the tokens

Dark mode

The theme remaps tokens when dark mode is active rather than applying a filter.
Check the selector before writing dark-mode overrides. The theme applies its theme class to the root element. Confirm whether it is a class or a data attribute in your version — inspect the html or body element with dark mode toggled on rather than guessing.

Where to put your CSS

Three options, in order of durability.

1. Additional CSS — quick, no risk

Appearance → Customize → Additional CSS Best for one or two rules. It loads after the theme’s stylesheets and survives updates. If you find yourself adding more than a few rules, move to a child theme.

2. Child theme style.css — the normal choice

Best for any sustained styling. Version-controlled, portable, and never overwritten by an update. See Child themes.

3. A compiled build — for larger projects

If you use Sass or Tailwind, compile to a file in your child theme and enqueue it with a dependency on the parent stylesheet.
Never edit assets/css/screen.css or style.css in the parent theme. Both are overwritten on every update.
Declaring a dependency on the parent’s stylesheet guarantees your CSS loads after it.

Beating specificity

When your rule does not apply, you are almost always losing a specificity fight.
Use your browser’s developer tools to see which rule wins and where it comes from. This answers the question in seconds.
Setting --vara-primary in your own CSS restyles everything using that token. Overriding individual component selectors means chasing many rules instead of one.
A dependency plus later load order is cleaner than !important chains.
If you must, keep it to a single, well-commented declaration.

Adding a custom font

Self-host it. Do not link Google Fonts — it adds a third-party connection to every page load and gives the provider your visitors’ IP addresses.
The Customizer’s font field is an allowlist of six stacks, so a custom font must come through CSS. See Typography reference.

Responsive breakpoints

The theme’s layout uses mobile-first CSS.

Debugging CSS

Colors reference

The Customizer settings behind these tokens.

Hooks and filters

Enqueue your CSS through a hook.