Custom CSS

Where to put a few rules, where to put a lot, and the class names you will need.

A few rules: Additional CSS

Appearance → Customize → Additional CSS.

Previews live, saves with everything else, survives theme updates. For under a hundred lines this is the right place, and it needs no child theme.

It is stored per theme, so it does not carry over if you later switch to a child theme.

A lot of rules: a child theme

Past a hundred lines you want version control, comments and a real editor. See Create a child theme — and note the enqueue priority there, which is what makes your rules load after the theme’s inline Customizer CSS rather than before it.

Specificity

The theme writes your Customizer choices as an inline stylesheet attached to the main stylesheet handle. Additional CSS loads after it, so a plain rule normally wins.

Where it does not, prefer adding one more element to the selector over reaching for !important:

/* Rather than .entry-title { ... !important } */
.primary .entry-title { ... }

Most of the theme’s own values are CSS custom properties on :root, so the tidiest override is often to change the token rather than the rule:

:root {
  --narrow-width: 700px;
}

Useful class names

Structure

Selector
.site-headerThe header bar. Also .header-layout-*, .header-border-*, .header-static
.site-brandingLogo or site title, plus the tagline
.site-titleThe text logo
.site-descriptionThe tagline
.primary-navigationThe primary menu
.header-actionsSocial, search and the button
.header-buttonThe call-to-action. Plus .header-button--primary etc.
.content-layoutThe content wrapper. Plus .layout-narrow / -fullwidth / -sidebar-left / -sidebar-right
.primaryThe content column
.secondaryThe sidebar
.site-footerThe footer. Plus .footer-layout-*, .footer-border-*
.scroll-topThe scroll-to-top button
.offcanvasThe mobile panel

Listings and entries

Selector
.rural-blog-blogThe post flow. Plus .display-stacked / -list / -grid, .grid-cols-N, .stacked-align-*
.rural-blog-postOne entry in a listing
.entry-titleA post title
.entry-subtitleThe subtitle
.entry-metaThe meta row
.entry-excerptThe excerpt
.entry-contentThe post or page body
.post-thumbnailThe featured image figure
.sticky-labelThe Pinned post label
.author-bio, .entry-tagsThe blocks under a post
.archives-indexThe Archives page index

<body> also carries .has-layout-*, .has-display-*, .header-layout-*, .single-header-align-* and .has-sidebar-divider-*, which is often the easiest hook for a rule that has to know about the layout from outside the wrapper.

One name that changed: the content column is .primary. It was .main before version 1.3.

Breakpoints

The theme’s own media queries change over at these widths:

592pxphone → tablet
646pxthe narrow column stops tracking the viewport
822pxtablet → desktop; sidebars start sitting side by side
1090pxthe band where a wide grid thins itself
1244pxthe container reaches its maximum

Match these when you add your own, or you will get a band where two rules disagree.

Last updated September 12, 2026

Something missing or out of date? Ask us and we will fix the page.