/*
Theme Name:   SBM Child
Description:  smallbusiness.management. One stylesheet, one functions file. Nothing else.
Author:       World Consulting Group
Template:     astra
Version:      1.0.0
*/

/* ── TOKENS ──────────────────────────────────────────────────────────────
   Every value below is used two or more times. Anything used once is inline. */
:root{
  --paper:#F4F2EC;      /* page ground                                     */
  --panel:#EBE8DF;      /* recessed panels, hover                          */
  --ink:#16150F;        /* body text, rules                                */
  --ink-70:#55534A;     /* secondary text                                  */
  --ink-40:#6A685E;     /* meta + ad label. AA: 5.00:1 paper, 4.57:1 panel */
  --navy:#1e3a5f;       /* links, stats, active states                     */
  --bronze:#805E27;     /* editorial kickers. AA: 5.29:1 on paper          */
  --rule:#C9C5B8;       /* hairline dividers                               */
  --ad-bg:#EDEAE2;      /* ad placeholder ground                           */
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  --serif:"Lora",Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --pad:clamp(16px,3vw,40px);
}

/* ── BASE ────────────────────────────────────────────────────────────────
   Astra prints dynamic CSS against body.ast-separate-container (0,1,1).
   body[class] is (0,1,2) and wins without !important. */
html body[class]{background-color:var(--paper);color:var(--ink);font-family:var(--sans)}
html body[class] h1,html body[class] h2,html body[class] h3,
html body[class] h4,html body[class] h5,html body[class] h6{color:var(--ink)}

/* Astra's separate-container wraps content in white cards. Content sits on paper.
   Astra's selector uses :not(.ast-related-post) (0,3,0); match it to win on order. */
.ast-separate-container .ast-article-single:not(.ast-related-post),
.ast-separate-container .ast-article-post:not(.ast-related-post),
.ast-separate-container .ast-article-inner,
.ast-separate-container .ast-archive-description{background-color:transparent}
#page,.site-content,.ast-container{background:transparent}

a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible{
  outline:3px solid var(--navy);outline-offset:2px}

.sbm-wrap{max-width:1200px;margin:0 auto;padding-inline:var(--pad)}

/* Kept from the retired Customizer CSS — the only four rules that still did work. */
.single .ast-container{max-width:1200px}
#secondary{width:300px;min-width:300px;min-height:350px}
.sidebar .widget_custom_html{min-height:300px}
.ast-single-post-featured-section img{width:100%;height:auto;display:block}

/* ── LABEL SYSTEMS ───────────────────────────────────────────────────────
   Two, deliberately distinguishable. Editorial = bronze + rule.
   Ad = grey, no rule. AdSense permits only "Advertisement"/"Sponsored Links"
   and those words belong to the Google units, never to house content. */
.sbm-kicker{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:var(--bronze);display:inline-block;
  padding-bottom:5px;border-bottom:2px solid var(--bronze)}
.sbm-adlabel,#custom_html-2::before{font-family:var(--mono);font-size:10px;font-weight:500;
  letter-spacing:.2em;text-transform:uppercase;color:var(--ink-40);
  display:block;margin-bottom:6px;text-align:center}

/* ── HEADER ──────────────────────────────────────────────────────────────
   Not sticky. The homepage carries a sticky ad; a sticky nav against a sticky
   ad is the accidental-click geometry the ad placement policy warns about. */
/* Skip link: Astra prints a.skip-link and reveals it on focus. Ours was a
   second one — two skip links means two tab stops for the same job. Deleted. */
.sbm-mast{background:var(--paper);border-bottom:1px solid var(--ink)}
.sbm-mast__inner{display:flex;align-items:center;justify-content:space-between;
  gap:24px;flex-wrap:wrap;min-height:68px}
.sbm-wordmark{text-decoration:none}
.sbm-wordmark b{font-size:18px;font-weight:700;letter-spacing:-.045em;
  text-transform:uppercase;color:var(--ink)}
.sbm-wordmark span{font-family:var(--mono);font-size:10.5px;color:var(--bronze);
  font-weight:600;margin-left:8px}
.sbm-nav{display:flex;gap:24px;flex-wrap:wrap}
.sbm-nav a{font-family:var(--mono);font-size:11.5px;font-weight:500;letter-spacing:.09em;
  text-transform:uppercase;color:var(--ink-70);text-decoration:none;padding-block:14px}
.sbm-nav a:hover,.sbm-nav a[aria-current]{color:var(--navy)}
.sbm-nav a[aria-current]{border-bottom:2px solid var(--navy)}
.sbm-burger{display:none;font-family:var(--mono);font-size:24px;line-height:1;
  cursor:pointer;padding:10px 4px;color:var(--ink)}
@media(max-width:1080px){
  .sbm-burger{display:block}
  .sbm-nav{display:none;width:100%;flex-direction:column;gap:0;border-top:1px solid var(--rule)}
  .sbm-nav a{padding:14px 0;border-bottom:1px solid var(--rule)}
  #sbm-nav-toggle:checked ~ .sbm-nav{display:flex}
}

/* ── FOOTER ──────────────────────────────────────────────────────────── */
.sbm-foot{border-top:1px solid var(--ink);margin-top:60px}
.sbm-foot__grid{display:grid;grid-template-columns:1.4fr repeat(3,1fr);
  gap:clamp(20px,3vw,42px);padding-block:clamp(34px,4.5vw,56px)}
@media(max-width:900px){.sbm-foot__grid{grid-template-columns:1fr 1fr}}
.sbm-foot b{display:block;font-size:19px;font-weight:700;letter-spacing:-.04em;
  text-transform:uppercase;margin-bottom:10px}
.sbm-foot p{font-size:13.5px;color:var(--ink-70);line-height:1.5;margin:0 0 12px;max-width:34ch}
.sbm-foot__h{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-40);margin:0 0 12px}
.sbm-foot ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.sbm-foot li a{font-size:14px;color:var(--ink-70);text-decoration:none}
.sbm-foot li a:hover{color:var(--navy)}
.sbm-foot__bar{border-top:1px solid var(--rule);padding-block:16px;display:flex;
  justify-content:space-between;gap:14px;flex-wrap:wrap;font-family:var(--mono);
  font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-40)}

/* ── ARTICLE ─────────────────────────────────────────────────────────────
   IN-CONTENT COMPONENTS: every post embeds its own ~2.8KB <style> inside
   .entry-content at (0,1,0), later in the document than this file. Bare
   .ww-* selectors always lose. Scope to .entry-content. Do not simplify. */
.ast-article-single .entry-title{font-family:var(--serif);font-weight:600;
  font-size:clamp(30px,4.4vw,52px);line-height:1.14;letter-spacing:-.02em}
.entry-content{font-size:17px;line-height:1.62}
.entry-content > p{max-width:70ch}
.entry-content h2{font-family:var(--serif);font-weight:600;font-size:clamp(23px,2.6vw,32px);
  line-height:1.22;letter-spacing:-.015em;margin:44px 0 14px}
.entry-content h3{font-size:20px;font-weight:700;margin:30px 0 10px}
/* In-content links. This was scoped `.entry-content > p a` — direct-child
   paragraphs only — which missed the external CTA block (div > span > a) on all
   132 posts and left it painting in Astra's link blue. Style the whole class and
   let components that carry their own colour opt out explicitly; a selector that
   only covers the cases you happened to look at will keep growing holes.
   Astra's .ast-single-post .entry-content a is (0,2,1), so this must match it. */
.ast-single-post .entry-content a{color:var(--navy);
	text-decoration:underline;text-underline-offset:2px}
.ast-single-post .entry-content #ez-toc-container a,
.ast-single-post .entry-content .ww-cta a{color:inherit;text-decoration:none}

.entry-content .ww-stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:1px;background:var(--navy);border:1px solid var(--navy);margin:32px 0}
.entry-content .ww-stat{background:var(--navy);color:#fff;padding:20px 18px;text-align:center}
.entry-content .ww-stat strong,.entry-content .ww-stat b{display:block;font-family:var(--mono);
  font-size:30px;font-weight:600;letter-spacing:-.03em;line-height:1;color:#fff}
.entry-content .ww-stat span{display:block;margin-top:8px;font-size:12.5px;color:#bcd4e6;line-height:1.35}

.entry-content .ww-cta{background:var(--navy);color:#fff;padding:28px;margin:36px 0}
.entry-content .ww-cta *{color:#fff}
.entry-content .ww-cta a{display:inline-block;background:#fff;color:var(--navy)!important;
  font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;padding:12px 20px;text-decoration:none;margin-top:8px}

.entry-content table{width:100%;border-collapse:collapse;font-size:14.5px;
  border:1px solid var(--ink);margin:30px 0}
.entry-content table th{background:var(--navy);color:#fff;text-align:left;padding:13px 14px;
  font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;border:0}
.entry-content table td{padding:13px 14px;border:0;border-bottom:1px solid var(--rule);vertical-align:top}
.entry-content table tr:nth-child(even) td{background:#EFEDE6}
/* Measured 689px wide inside a 390px viewport. Scroll, do not push layout. */
@media(max-width:700px){
  .entry-content table{display:block;overflow-x:auto;max-width:100%}
  .entry-content table thead,.entry-content table tbody{display:table;width:100%;min-width:520px}
}

#ez-toc-container{background:var(--panel)!important;border:1px solid var(--ink)!important;
  border-radius:0!important;padding:20px 22px!important;box-shadow:none!important;margin:30px 0!important}
#ez-toc-container .ez-toc-title{font-family:var(--mono)!important;font-size:11px!important;
  font-weight:600!important;letter-spacing:.16em!important;text-transform:uppercase!important;
  color:var(--bronze)!important}
#ez-toc-container a{color:var(--ink)!important;text-decoration:none!important;font-size:14.5px}

.sbm-crumb{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-40);padding:16px 0;border-bottom:1px solid var(--rule)}
.sbm-crumb a{color:var(--ink-40);text-decoration:none}
.sbm-crumb a:hover{color:var(--navy)}

/* ── ARCHIVE ─────────────────────────────────────────────────────────────
   Astra already renders ast-blog-layout-4-grid. No template override needed. */
.ast-archive-title{font-family:var(--serif)!important;font-weight:600!important;
  font-size:clamp(32px,5vw,58px)!important;letter-spacing:-.025em;color:var(--ink)!important}
.ast-blog-layout-4-grid .ast-article-post{border:1px solid var(--ink);border-radius:0;padding:22px 20px 24px}
.ast-blog-layout-4-grid .ast-article-post:hover{background:var(--panel)}
.ast-blog-layout-4-grid .entry-title{font-family:var(--serif);font-weight:600;font-size:20px;line-height:1.24}
.ast-blog-layout-4-grid .entry-title a{color:var(--ink);text-decoration:none}
.ast-blog-layout-4-grid .entry-title a:hover{color:var(--navy)}
.ast-blog-layout-4-grid .entry-content{font-size:14px;line-height:1.45;color:var(--ink-70)}
.ast-blog-layout-4-grid .entry-meta,.ast-blog-layout-4-grid .entry-meta *{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-40)}
/* Astra sizes these boxes in em off their own font-size:
   .ast-pagination .page-numbers{width:2.33333em;height:2.33333em;line-height:calc(2.33333em - 3px)}
   Overriding font-size alone collapses the box to 28px while the line stays 25px
   and the padding stays 10px — six pixels of content box, so the digits spill
   through the border. Own the whole geometry, do not inherit half of it. */
.navigation.pagination .nav-links{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.navigation.pagination .page-numbers{
	display:inline-flex;align-items:center;justify-content:center;gap:.5em;
	width:auto;height:auto;min-width:44px;min-height:44px;
	padding:0 14px;line-height:1;margin:0;float:none;
	font-family:var(--mono);font-size:12px;font-weight:600;
	border:1px solid var(--rule);color:var(--ink-70);text-decoration:none;border-radius:0}
.navigation.pagination .page-numbers.current{background:var(--navy);border-color:var(--navy);color:#fff}
.navigation.pagination .nav-links .next.page-numbers,
.navigation.pagination .nav-links .prev.page-numbers{width:auto;height:auto;float:none;margin:0;padding:0 14px}

/* ── SIDEBAR ─────────────────────────────────────────────────────────── */
#secondary .widget{border:1px solid var(--ink);padding:0;margin-bottom:26px;background:transparent}
#secondary .widget-title{margin:0;padding:12px 14px;border-bottom:1px solid var(--ink);
  background:var(--panel);font-family:var(--mono);font-size:11px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;color:var(--bronze)}
#secondary .widget li{padding:11px 14px;border-bottom:1px dashed var(--rule);list-style:none}
#secondary .widget a{font-size:14px;color:var(--ink);text-decoration:none}
#secondary .widget a:hover{color:var(--navy)}
/* The ad widget takes the grey ad label, never the bronze editorial title.
   Restores the "Advertisement" label removed 2026-06-08. */
#custom_html-2{border:1px solid var(--rule);padding:12px}
#custom_html-2::before{content:"Advertisement"}

/* ── ADS ─────────────────────────────────────────────────────────────────
   The injector ships display:block with no height, which causes CLS on all
   132 posts. Reserve a FLOOR, never a ceiling — a hard height clips taller,
   higher-CPM creatives. 40px clear space on both sides. */
.sbm-ad-slot{min-height:250px;margin-block:40px}
.sbm-ad-slot,.sbm-ad-slot ins{max-width:100%}

/* ── HOMEPAGE ────────────────────────────────────────────────────────── */
.sbm-sec{border-top:1px solid var(--ink);padding-block:clamp(36px,5vw,66px)}
.sbm-sec__head{display:flex;align-items:flex-end;justify-content:space-between;
  gap:24px;flex-wrap:wrap;margin-bottom:26px}
.sbm-sec__title{font-family:var(--serif);font-size:clamp(26px,3.4vw,44px);font-weight:600;
  letter-spacing:-.02em;line-height:1.05;margin:14px 0 0}
.sbm-more{font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;border-bottom:1.5px solid var(--ink);padding:12px 0 5px;
  text-decoration:none;color:var(--ink);white-space:nowrap}
.sbm-more:hover{color:var(--navy);border-color:var(--navy)}

.sbm-hero{padding-block:clamp(38px,5vw,72px) 0}
.sbm-hero h1{font-family:var(--serif);font-size:clamp(38px,7vw,92px);font-weight:600;
  line-height:.99;letter-spacing:-.035em;margin:22px 0}
.sbm-hero h1 em{font-style:normal;color:var(--navy)}
.sbm-hero p{font-size:clamp(16px,1.5vw,20px);line-height:1.5;color:var(--ink-70);max-width:56ch;margin:0 0 26px}
.sbm-btn{display:inline-flex;align-items:center;font-family:var(--mono);font-size:12px;
  font-weight:600;letter-spacing:.09em;text-transform:uppercase;padding:13px 20px;
  border:1.5px solid var(--navy);background:var(--navy);color:#fff;text-decoration:none;margin-right:12px}
.sbm-btn--ghost{background:transparent;color:var(--ink);border-color:var(--ink)}

.sbm-snap{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--ink)}
@media(max-width:900px){.sbm-snap{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.sbm-snap{grid-template-columns:1fr}}
.sbm-cell{padding:22px 20px;border-right:1px solid var(--ink);border-bottom:1px solid var(--ink);
  min-height:150px;display:flex;flex-direction:column;justify-content:space-between;
  text-decoration:none;color:inherit}
.sbm-cell:hover{background:var(--panel)}
.sbm-cell h3{font-family:var(--serif);font-size:21px;font-weight:600;margin:0 0 7px}
.sbm-cell p{margin:0;font-size:13.5px;color:var(--ink-70);line-height:1.42}
.sbm-cell b{font-family:var(--mono);font-size:30px;font-weight:600;letter-spacing:-.04em;
  color:var(--navy);margin-top:16px;display:block}

.sbm-cards{display:grid;grid-template-columns:repeat(4,1fr);
  border-left:1px solid var(--ink);border-top:1px solid var(--ink)}
.sbm-cards--3{grid-template-columns:repeat(3,1fr)}
@media(max-width:1080px){.sbm-cards,.sbm-cards--3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.sbm-cards,.sbm-cards--3{grid-template-columns:1fr}}
.sbm-card{border-right:1px solid var(--ink);border-bottom:1px solid var(--ink);
  padding:20px 18px 22px;display:flex;flex-direction:column;gap:10px;min-height:220px;
  text-decoration:none;color:inherit}
.sbm-card:hover{background:var(--panel)}
.sbm-card h3{font-family:var(--serif);font-size:18px;font-weight:600;line-height:1.24;margin:0;flex:1}
.sbm-card p{margin:0;font-size:13.5px;color:var(--ink-70);line-height:1.45;flex:1}
.sbm-card__meta{display:flex;justify-content:space-between;align-items:center;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-40)}
.sbm-card__meta--foot{padding-top:10px;border-top:1px dashed var(--rule)}
.sbm-tag{font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.13em;
  text-transform:uppercase;color:var(--navy);border:1px solid var(--navy);padding:3px 8px}
/* Page 68's shortcode output renders inside .entry-content, so Astra's
   .ast-single-post .entry-content a underline rule (0,2,1) catches these. */
.ast-single-post .entry-content .sbm-card,
.ast-single-post .entry-content .sbm-cell,
.ast-single-post .entry-content .sbm-btn,
.ast-single-post .entry-content .sbm-more{text-decoration:none}

/* ---------------------------------------------------------------------------
   Folded in from WPCode snippets #355 and #366 at the 2026-08-08 preflight.
   Presentation belongs to the theme. WPCode now keeps only #351, which is PHP
   (it serves ads.txt) and genuinely belongs there.

   Deliberately NOT ported from those snippets:
   - the homepage top ad's sticky/white/shadow block. It was written for the old
     design: a white shadowed bar pinned over a paper-coloured page, following
     the reader down the whole homepage. The slot keeps the .sbm-ad-slot reserve.
   - .sbm-ad-mid-content's dashed "Advertisement" placeholder. .sbm-ad-slot
     already reserves the height, and a labelled dashed box over blank space
     calls empty space an ad.
   - .home .content-area/.home article.page margin tweaks. Old homepage only.
--------------------------------------------------------------------------- */

/* Astra prints the page's featured image above the content. Page 68 carries one
   for social cards, not for display. */
.home .ast-single-post-featured-section,
.home .wp-post-image,
.home .ast-article-image-container{display:none}

/* wpautop leaves empty paragraphs between the homepage shortcodes. */
.home .entry-content>p:empty{display:none;margin:0}

/* The sidebar ad. #secondary is 300px wide and carries 30px of padding, leaving
   270px — so a real 300x250 unit hangs 30px outside the column. That is true on
   the live site today (measured 2026-08-08: ad right edge 1226 vs column 1196);
   it is not caused by the redesign, but it is cheap to end here. Cancel the
   column's padding for this widget only, rather than restyling the column and
   moving the reading measure. Astra wins on specificity, hence !important. */
#custom_html-2{padding:0!important;margin-inline:-30px;width:300px}

/* ---------------------------------------------------------------------------
   Archive cards. Astra doubles the padding on grid cards —
   .ast-blog-layout-4-grid .ast-article-post adds `0 1em` on top of
   .ast-article-inner's 1.5em — but its own featured-image bleed is calculated
   against the inner padding only (-1.5em on .post-thumb-img-content). With the
   extra 1em in play the image lands 16px short of the border: inset, but not to
   anything, while the title sits 40px in. Dropping the outer padding removes the
   duplication AND lets Astra's own bleed land where it was meant to. Matches
   Astra's selector shape and wins on source order. Measured 2026-08-08.

   Second fix: .cat-links a rendered in Astra's link blue rgb(4,107,210) on every
   archive card. Nothing else on the site is that colour.
--------------------------------------------------------------------------- */
.ast-separate-container .ast-blog-layout-4-grid .ast-article-post{padding:0}
.ast-article-post .ast-blog-featured-section{margin-bottom:20px}
.ast-article-post .cat-links a,
.ast-article-post .ast-terms-link a{font-family:var(--mono);font-size:11px;font-weight:600;
	letter-spacing:.1em;text-transform:uppercase;color:var(--bronze);text-decoration:none}

/* Astra paints these in its own link blue, rgb(4,107,210). Nothing else on the
   site is that colour. Note the ` *` on each: Astra's rule is `.entry-meta *`,
   and the byline text sits in a <span> inside the anchor — styling the <a> alone
   never reaches the element that actually paints. Same for the breadcrumb. */
.entry-meta a,.entry-meta a *{color:var(--ink-70);text-decoration:none}
.ast-single-post .entry-meta,.ast-single-post .entry-meta *{color:var(--ink-70)}
.ast-single-post .entry-meta a:hover,.ast-single-post .entry-meta a:hover *{color:var(--navy)}
.ast-breadcrumbs a,.ast-breadcrumbs a *{color:var(--ink-40)}
.aioseo-author-bio-compact a,.aioseo-author-bio-compact a *{color:var(--navy)}
.sbm-wordmark{color:var(--ink)}
/* Astra's skip link. Note there is no `.site` prefix: the anchor is a direct
   child of <body>, outside div.site — which is why Astra's own `.site .skip-link`
   rule never applies to it either, and it falls through to the default link blue
   with no background. Revealed on focus, so it is the first thing a keyboard user
   sees. */
a.skip-link,a.skip-link:focus{background:var(--ink);color:var(--paper);
	font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.06em;
	box-shadow:none;padding:12px 18px;text-decoration:none}

/* Astra's wide featured-image layout pulls the single-post article up -80px to
   overlap the image, assuming an opaque article background masks it. This theme
   makes the article transparent (paper), so the overlap dropped the title onto
   the image ("infringing"). The featured image carries the site branding at its
   lower edge and must show fully -- remove the overlap, sit the title below the
   image with a 24px gap. !important: Astra's wide-featured selector is higher-
   specificity and not cleanly out-specified. */
body.single .site-main article.ast-article-single{margin-top:0!important;padding-top:24px!important}

/* --- Stat / data-card contrast. The navy on these cards is DELIBERATE: SBM is
   an AdSense property and in-content data callouts must read as editorial, not
   as ad/sponsored units (the component's native light-mint card looks ad-like).
   Navy stays; the embedded text — coloured for the light card — is recoloured to
   read on navy (measured >=7:1) and, for the light-background comparison/form
   cells, darkened to clear 4.5:1. Selectors carry .entry-content to out-specify
   the post's in-body embedded rules. The one !important is unavoidable: the pr
   form labels are inline-styled. */
.entry-content .ww-stat .ww-stat-num,.entry-content .ww-stat .num{color:#bbf7d0}
.entry-content .ww-stat .ww-stat-lbl,.entry-content .ww-stat .label{color:#cbd5e1}
.entry-content .pr-header,.entry-content .pr-header *{color:#fff}
.entry-content .ww-yes{color:#166534}
.entry-content .ww-partial{color:#92400e}
.entry-content .ww-no{color:#4b5563}
.entry-content .pr-section-sub,.entry-content .pr-goals-table td.pr-field,.entry-content .pr-sig-line label,.entry-content .pr-print-bar p,.entry-content .pr-scale-legend span,.entry-content .pr-example-field,.entry-content .pr-rating-select span,.entry-content .pr-overall-grid span{color:#4b5563}
.entry-content .pr-wrap [style*="9ca3af"]{color:#4b5563!important}


/* Comparison tables: the embedded component sets th{white-space:nowrap}, which
   inflates 5-column tables past the 732px content column and forces a horizontal
   scrollbar ON DESKTOP (9-127px hidden on 12 posts, measured 2026-08-08). Headers
   wrap instead; the table then fits the column with zero cell clipping. Mobile
   keeps its scroll (min-width:520px floor) -- 5 columns at 350px cannot render
   legibly without it. */
.entry-content .ww-table-wrap th{white-space:normal}

/* Calculator buttons: embedded .ww-calc button uses #2980b9 -- white on it is
   4.30:1, under AA. Navy matches the design system and gives 11.5:1. */
.entry-content .ww-calc button{background:var(--navy)}
.entry-content .ww-calc button:hover{background:#2c4a75}

/* ---- ez-toc: plugin CSS vendored in, 2026-08-09 ----
   Easy Table of Contents is deactivated. Its TOC markup is baked into post_content,
   so the structural rules it used to supply are folded in here.
   Source: easy-table-of-contents/assets/css/screen.min.css v2.0.83 + its eztoc-inline-css block,
   reduced to the selectors the baked markup actually uses (no widget/button/column rules).
   Colours, background, border, padding and fonts are NOT repeated - the #ez-toc-container
   rules earlier in this file already own those with !important. */
#ez-toc-container{display:table}
#ez-toc-container li,#ez-toc-container ul{margin:0;padding:0}
#ez-toc-container li,#ez-toc-container ul,#ez-toc-container ul li{background:none;list-style:none none;line-height:1.6;margin:0;overflow:hidden;z-index:1}
#ez-toc-container ul ul{margin-left:1.5em}
#ez-toc-container .ez-toc-title{text-align:left;line-height:1.45;margin:0;padding:0}
.ez-toc-title-container{display:table;width:100%}
div#ez-toc-container .ez-toc-title{display:initial}
#ez-toc-container div.ez-toc-title-container+ul.ez-toc-list{margin-top:1em}
#ez-toc-container a{box-shadow:none;text-shadow:none;display:inline-flex;align-items:stretch;flex-wrap:nowrap}
div#ez-toc-container ul li,div#ez-toc-container ul li a{font-size:95%;font-weight:500}
div#ez-toc-container nav ul ul li{font-size:90%}
.ez-toc-counter ul{counter-reset:item}
.ez-toc-counter nav ul li a::before{content:counters(item,'.',decimal) '. ';display:inline-block;counter-increment:item;flex-grow:0;flex-shrink:0;margin-right:.2em;float:left}
