{"id":11,"date":"2026-03-11T17:49:09","date_gmt":"2026-03-11T17:49:09","guid":{"rendered":"https:\/\/docs.fasterthemes.com\/legal-wordpress-theme\/2026\/03\/11\/custom-css\/"},"modified":"2026-03-11T17:49:09","modified_gmt":"2026-03-11T17:49:09","slug":"custom-css","status":"publish","type":"post","link":"https:\/\/docs.fasterthemes.com\/legal-wordpress-theme\/2026\/03\/11\/custom-css\/","title":{"rendered":"Adding Custom CSS"},"content":{"rendered":"<p>The Customizer covers most things, but eventually you&#8217;ll want a small visual change it doesn&#8217;t expose: a different shade of oxblood, more space between practice tiles, a tighter line-height in the body. This is where Custom CSS comes in.<\/p>\n<p>Legal is built on CSS custom properties (variables). Most overrides take one or two lines because you&#8217;re targeting a variable, not chasing component classes. Knowing the variables is the unlock.<\/p>\n<h2>Where to put your custom CSS<\/h2>\n<p>Two places, in order of preference:<\/p>\n<ol>\n<li><strong>Customizer \u2192 Additional CSS<\/strong> \u2014 for site-specific tweaks. Updates instantly. Survives theme updates. Recommended for most users.<\/li>\n<li><strong>A child theme<\/strong> \u2014 for larger overrides or template changes. See <a href=\"\/child-theme\/\">Child Themes<\/a>.<\/li>\n<\/ol>\n<p>Avoid editing <code>style.css<\/code> directly. Theme updates will overwrite your changes.<\/p>\n<h2>The CSS variables you&#8217;ll override most often<\/h2>\n<p>Legal defines its design tokens in <code>:root<\/code> at the top of <code>style.css<\/code>. The most common overrides:<\/p>\n<pre><code>:root {\n    \/* Canvas *\/\n    --lg-bg:             #fafaf7;   \/* page background \u2014 bone *\/\n    --lg-bg-card:        #ffffff;   \/* card backgrounds *\/\n    --lg-bg-soft:        #f3efe7;   \/* soft band backgrounds *\/\n    --lg-bg-dark:        #1a1a1a;   \/* footer ink *\/\n\n    \/* Text *\/\n    --lg-text:           #1a1a1a;\n    --lg-text-muted:     #555555;\n    --lg-text-soft:      #737373;\n    --lg-text-faint:     #a0a0a0;\n\n    \/* Accent \u2014 oxblood *\/\n    --lg-accent:         #5C1A1B;\n    --lg-accent-dark:    #3f1011;\n\n    \/* Gold leaf \u2014 secondary accent *\/\n    --lg-gold:           #B8923D;\n\n    \/* Borders *\/\n    --lg-border:         #e8e2d5;\n    --lg-border-strong:  #d6cfc0;\n\n    \/* Type *\/\n    --lg-serif:          'Fraunces', Georgia, serif;\n    --lg-sans:           'Inter', sans-serif;\n    --lg-mono:           'JetBrains Mono', monospace;\n}<\/code><\/pre>\n<h2>Common overrides<\/h2>\n<h3>Change the accent color from oxblood to navy<\/h3>\n<pre><code>:root {\n    --lg-accent:      #1e3a5f;\n    --lg-accent-dark: #142a48;\n}<\/code><\/pre>\n<p>That&#8217;s the whole change. Every italic accent, every CTA, every focus ring updates. You don&#8217;t need to chase individual selectors.<\/p>\n<h3>Soften the gold leaf to copper<\/h3>\n<pre><code>:root {\n    --lg-gold: #a7763a;\n}<\/code><\/pre>\n<h3>Switch to a different serif<\/h3>\n<p>If you have Cormorant Garamond loaded (or any other serif you&#8217;ve added via a font plugin):<\/p>\n<pre><code>:root {\n    --lg-serif: 'Cormorant Garamond', 'Iowan Old Style', Georgia, serif;\n}<\/code><\/pre>\n<h3>Tighten or loosen body line-height<\/h3>\n<pre><code>body {\n    line-height: 1.65; \/* default is 1.7 *\/\n}<\/code><\/pre>\n<h3>Add more space between sections<\/h3>\n<pre><code>.lg-section {\n    padding: clamp(80px, 10vw, 160px) 0; \/* default is 64-128 *\/\n}<\/code><\/pre>\n<h3>Hide the folio strip without disabling it<\/h3>\n<pre><code>.lg-folio {\n    display: none;\n}<\/code><\/pre>\n<h3>Change practice tiles from 3-up to 2-up on desktop<\/h3>\n<pre><code>.lg-practice-grid {\n    grid-template-columns: repeat(2, 1fr); \/* default is repeat(3, 1fr) *\/\n}<\/code><\/pre>\n<h3>Round the retainer card more aggressively<\/h3>\n<pre><code>.lg-retainer {\n    border-radius: 16px; \/* default is 8px *\/\n}<\/code><\/pre>\n<h2>Targeting specific elements<\/h2>\n<p>If you need to style something specific, use these top-level component classes as your hooks:<\/p>\n<table>\n<thead>\n<tr>\n<th>Class<\/th>\n<th>What it targets<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>.lg-hero<\/code><\/td>\n<td>Hero section<\/td>\n<\/tr>\n<tr>\n<td><code>.lg-folio<\/code><\/td>\n<td>Folio strip under hero<\/td>\n<\/tr>\n<tr>\n<td><code>.lg-marquee<\/code><\/td>\n<td>Credentials marquee<\/td>\n<\/tr>\n<tr>\n<td><code>.lg-practice-tile<\/code><\/td>\n<td>Each practice tile<\/td>\n<\/tr>\n<tr>\n<td><code>.lg-counsel-card<\/code><\/td>\n<td>Each counsel card<\/td>\n<\/tr>\n<tr>\n<td><code>.lg-ledger<\/code><\/td>\n<td>Ledger section<\/td>\n<\/tr>\n<tr>\n<td><code>.lg-testimony<\/code><\/td>\n<td>Testimony pull-quote<\/td>\n<\/tr>\n<tr>\n<td><code>.lg-engage<\/code><\/td>\n<td>Engagement section<\/td>\n<\/tr>\n<tr>\n<td><code>.lg-retainer<\/code><\/td>\n<td>Retainer card<\/td>\n<\/tr>\n<tr>\n<td><code>.lg-footer<\/code><\/td>\n<td>Footer<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Targeting Legal Pro features<\/h2>\n<p>Pro features use the <code>lgpro-<\/code> class prefix. For example:<\/p>\n<ul>\n<li><code>.lgpro-watermark<\/code> \u2014 the hero watermark<\/li>\n<li><code>.lgpro-ornament<\/code> \u2014 the \u00a7 glyph<\/li>\n<li><code>.lgpro-seal<\/code> \u2014 the wax seal on the retainer card<\/li>\n<li><code>.lgpro-cursor-dot<\/code>, <code>.lgpro-cursor-ring<\/code> \u2014 the custom cursor<\/li>\n<li><code>.lgpro-foot-counsel<\/code> \u2014 the footer&#8217;s counsel-direct-lines column<\/li>\n<\/ul>\n<p>For example, to make the wax seal larger:<\/p>\n<pre><code>.lgpro-seal {\n    width: 96px;\n    height: 96px;\n}<\/code><\/pre>\n<h2>What to avoid<\/h2>\n<ul>\n<li><strong>Do not use <code>!important<\/code> liberally.<\/strong> Legal&#8217;s CSS uses very low specificity on purpose so your overrides win without it. If you need <code>!important<\/code>, you&#8217;re probably targeting the wrong selector.<\/li>\n<li><strong>Don&#8217;t override variables in component selectors.<\/strong> Always override at <code>:root<\/code> so the change cascades everywhere.<\/li>\n<li><strong>Don&#8217;t fight the design system.<\/strong> If you find yourself writing 200 lines of CSS, you probably want a different theme \u2014 or a child theme that takes over wholesale rather than patching at the edges.<\/li>\n<\/ul>\n<h2>For more drastic changes<\/h2>\n<p>If your customizations exceed about 100 lines of CSS, consider creating a child theme. The child theme can selectively replace specific Legal templates (like <code>template-firm.php<\/code>), define its own CSS variables file, and remain update-safe forever.<\/p>\n<p>See <a href=\"\/child-theme\/\">Child Themes<\/a> for the setup.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Override Legal&#8217;s default colors, spacing, and typography with custom CSS \u2014 using the right hooks and the theme&#8217;s CSS variables.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[17,18,19],"class_list":["post-11","post","type-post","status-publish","format-standard","hentry","category-customization","tag-css","tag-customization","tag-styling"],"_links":{"self":[{"href":"https:\/\/docs.fasterthemes.com\/legal-wordpress-theme\/wp-json\/wp\/v2\/posts\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.fasterthemes.com\/legal-wordpress-theme\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/docs.fasterthemes.com\/legal-wordpress-theme\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/docs.fasterthemes.com\/legal-wordpress-theme\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.fasterthemes.com\/legal-wordpress-theme\/wp-json\/wp\/v2\/comments?post=11"}],"version-history":[{"count":0,"href":"https:\/\/docs.fasterthemes.com\/legal-wordpress-theme\/wp-json\/wp\/v2\/posts\/11\/revisions"}],"wp:attachment":[{"href":"https:\/\/docs.fasterthemes.com\/legal-wordpress-theme\/wp-json\/wp\/v2\/media?parent=11"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/docs.fasterthemes.com\/legal-wordpress-theme\/wp-json\/wp\/v2\/categories?post=11"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/docs.fasterthemes.com\/legal-wordpress-theme\/wp-json\/wp\/v2\/tags?post=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}