F FasterThemes Documentation
Docs Customization Adding Custom CSS
Customization

Adding Custom CSS

Override anything in the theme without editing files. Recommended techniques, the variables that drive the design, and a few worked examples.

Updated May 2026 · 1 min read

Where to add CSS

Use Appearance → Customize → Additional CSS. Anything you add there:

  • Loads after the theme stylesheet (so it overrides without !important).
  • Survives theme updates (it's stored in your database, not in theme files).
  • Has a live preview in the Customizer, so you can iterate quickly.

For larger CSS additions or design overhauls, a child theme is more maintainable. See Child Themes.

CSS variables that drive the design

The theme uses CSS custom properties for colors, spacing, and typography. Override these to retune the design without touching individual selectors:

:root {
    /* Colors */
    --paper: #faf7f0;          /* main background */
    --paper-deep: #f5f0e8;     /* alt background */
    --ink: #1a1a1a;            /* main text */
    --ink-soft: #444;          /* body text */
    --ink-faint: #777;         /* meta, captions */
    --rule: #e0d8c4;           /* dividers */
    --accent: #c8522a;         /* primary accent */

    /* Typography */
    --serif: 'Cormorant Garamond', Georgia, serif;
    --sans: 'Jost', -apple-system, sans-serif;
}

Worked examples

Change the body font to Inter

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

:root {
    --sans: 'Inter', -apple-system, sans-serif;
}

Tighter card grid (4 columns instead of 3)

@media (min-width: 1024px) {
    .fr-card-grid {
        grid-template-columns: repeat(4, 1fr);
        gap: 24px;
    }
}

Different heading style on single posts

.single-post .entry-title {
    font-family: var(--sans);
    font-weight: 800;
    letter-spacing: -0.03em;
}

Finding the right selectors

Right-click any element on your site and choose Inspect. The browser shows the existing CSS — copy a class name and use it in your override. The theme uses BEM-ish naming: .fr-card, .fr-card-title, .fr-card-meta. Pro plugin elements are prefixed with frpro-.

Tip: If a selector isn't taking effect, it's almost always specificity. Add html in front of your selector to win the cascade — e.g. html .fr-card-title { ... } — without resorting to !important.