/* =========================================================================
   WindshieldReplacementRichmondVA.com - main.css
   Profile: frit-line (new, declared). design/DESIGN-DECISION.md is normative;
   this file ports decision-sketch.html sections 1-12 and adds the dormant
   modules of DESIGN-DECISION section 8.16.

   Axes: hyperlegible-grotesk typography (oblique-grotesque while the display
   WOFF2 is absent: body class dp-type-oblique-grotesque) / frit-canopy hero /
   frit-seam section rhythm / frit-edge cards / frit-fade header / frit-ramp
   texture.

   The frit is the black ceramic band round a windshield: solid ink at the
   page's edges (header cell, hero canopy, request band, footer) dissolving
   through a four-row halftone ramp (dots 5.6 / 4.2 / 2.8 / 1.6 px on a 7 px
   hex lattice) into clear white, where the owner's words sit. The ramp is
   geometry only, never a field, never behind text, never animated.

   Palette rules (DESIGN-DECISION 7.4): colour literals appear only inside
   :root (plus two data-URI SVG strokes); text on light is ink only; the
   accent is a fill, an underline or a mark on ink, never text on light;
   every button colour reads --color-cta-*.
   Motion: transitions on controls only, no keyframe animation, no reveal animation.

   1.  Tokens (DESIGN-DECISION 5, verbatim)
   2.  Base
   3.  Buttons (theme .btn + owner core/buttons)
   4.  Header: frit-fade, nested nav, mobile panel, wordmark
   5.  Hero: frit-canopy + mirror-mount blackout
   6.  Sections: frit-seam heads + prose
   7.  Request band #glass-quote + the form
   8.  Cards: frit-edge + cross-link chips + areas
   9.  FAQ
   10. CTA banner, breadcrumbs, pagination, search
   11. Footer + sticky quote bar
   12. Posts, tool templates and dormant modules
   13. Motion
   ========================================================================= */

/* =====================================================================
   1. TOKENS (DESIGN-DECISION.md section 5, verbatim)
   ===================================================================== */
:root{
  /* colour: brand (Customizer primary / accent / text = these three; audit N) */
  --color-primary:#1B1722;
  --color-accent:#9E80FE;
  --color-text:#1B1722;
  --color-primary-hover:#2B2536;
  --color-primary-active:#0E0C12;
  --color-accent-hover:var(--color-primary);
  --color-accent-on-dark:var(--color-accent);
  --color-muted:#5E5870;
  /* colour: CTA indirection (a palette swap is one line here; PHP re-points them when the Customizer accent changes) */
  --color-cta-bg:var(--color-accent);
  --color-cta-fg:var(--color-primary);
  --color-cta-edge:var(--color-accent);
  --color-cta-edge-tint:var(--color-primary);
  --color-cta-bg-hover:var(--color-primary);
  --color-cta-fg-hover:var(--color-accent);
  --color-cta-bg-active:var(--color-primary-active);
  --color-cta-fg-active:var(--color-accent);
  --color-cta-bg-hover-dark:var(--color-white);
  --color-cta-bg-active-dark:var(--color-surface);
  /* colour: surfaces */
  --color-page:#FFFFFF;
  --color-white:#FFFFFF;
  --color-surface:#F1ECFF;
  --color-surface-2:#F4F4F6;
  --color-surface-active:#E4DAFF;
  --color-border:#DCD8E2;
  --color-field-border:#767080;
  /* colour: states */
  --color-focus:var(--color-primary);
  --color-focus-on-dark:#FFFFFF;
  --color-error:#A4202C;
  --color-error-bg:#FCEEF0;
  --color-success:#22693F;
  --color-success-bg:var(--color-surface);
  --color-disabled-bg:#ECEAF0;
  --color-disabled-fg:#6A6475;
  /* colour: dark family (= the frit) */
  --color-dark:var(--color-primary);
  --color-dark-2:var(--color-primary-active);
  --color-on-dark:#FFFFFF;
  --color-on-dark-muted:#BCB5C9;
  --color-dark-border:#453E52;
  --color-star:var(--color-primary);
  --color-primary-rgb:27,23,34;
  --color-accent-rgb:158,128,254;

  /* type */
  --font:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Noto Sans',Ubuntu,Cantarell,sans-serif;
  --font-display:'WRR Hyperlegible',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Noto Sans',Ubuntu,Cantarell,sans-serif;
  --headline-style:normal;
  --text-xs:.8125rem; --text-sm:.875rem; --text-label:1rem; --text-base:1.0625rem; --text-md:1.1875rem;
  --text-lg:1.328rem; --text-xl:1.66rem; --text-2xl:2.075rem; --text-3xl:2.594rem; --text-4xl:3.25rem;
  --h1-size:clamp(2.125rem,1.1rem + 3.2vw,3.25rem);
  --h2-size:clamp(1.625rem,1.25rem + 1.2vw,2.075rem);
  --h3-size:clamp(1.1875rem,1.05rem + .5vw,1.328rem);
  --deck-size:clamp(1.125rem,1.05rem + .45vw,1.328rem);
  --wordmark-size:clamp(.9375rem,.85rem + .35vw,1.125rem);
  --fw-normal:400; --fw-medium:600; --fw-semibold:600; --fw-bold:700; --fw-black:700;
  --lh-tight:1.08; --lh-heading:1.15; --lh-snug:1.3; --lh-normal:1.6;
  --track-h1:-.01em; --track-h2:-.005em; --track-h3:0; --track-body:0; --track-display:var(--track-h1);

  /* space: 0.25rem steps, gap-free 1..24 */
  --space-1:.25rem; --space-2:.5rem; --space-3:.75rem; --space-4:1rem; --space-5:1.25rem; --space-6:1.5rem;
  --space-7:1.75rem; --space-8:2rem; --space-9:2.25rem; --space-10:2.5rem; --space-11:2.75rem; --space-12:3rem;
  --space-13:3.25rem; --space-14:3.5rem; --space-15:3.75rem; --space-16:4rem; --space-17:4.25rem; --space-18:4.5rem;
  --space-19:4.75rem; --space-20:5rem; --space-21:5.25rem; --space-22:5.5rem; --space-23:5.75rem; --space-24:6rem;

  /* layout */
  --width-wide:73.75rem; --width-content:45rem; --measure:68ch; --gutter:1rem;
  /* radii: windshield corners = rounded top, near-square bottom */
  --radius-sm:3px; --radius:3px; --radius-lg:14px; --radius-full:999px;
  --radius-glass:14px 14px 3px 3px;
  /* elevation: none on the page; only floating layers lift */
  --shadow-sm:none;
  --shadow-md:0 12px 28px rgba(var(--color-primary-rgb),.16);
  --shadow-lg:0 18px 40px rgba(var(--color-primary-rgb),.22);
  /* chrome */
  --header-h:4.75rem; --header-h-shrunk:3.75rem; --header-h-mobile:4rem; --topbar-h:0px; --sticky-bar-h:4.5rem;
  --canopy-h:.75rem; --canopy-gap:1rem;
  /* z-index */
  --z-base:1; --z-raised:10; --z-sticky-bar:40; --z-header:50; --z-dropdown:60; --z-panel:70; --z-skip:100;
  /* motion */
  --transition-fast:120ms ease-out; --transition:180ms ease; --transition-slow:240ms ease;

  /* frit-ramp texture (M1): 7px hex lattice, dots 5.6 / 4.2 / 2.8 / 1.6px, solid ink */
  --frit:var(--color-primary);
  --frit-pitch:7px; --frit-depth:28px; --frit-band:8px; --seam-w:210px;
  --frit-dot-0:radial-gradient(circle at 3.5px 3.5px,var(--frit) 3.2px,transparent 3.6px);
  --frit-dot-1:radial-gradient(circle at 3.5px 3.5px,var(--frit) 2.5px,transparent 3.1px);
  --frit-dot-2:radial-gradient(circle at 3.5px 3.5px,var(--frit) 1.8px,transparent 2.4px);
  --frit-dot-3:radial-gradient(circle at 3.5px 3.5px,var(--frit) 1.1px,transparent 1.7px);
  --frit-dot-4:radial-gradient(circle at 3.5px 3.5px,var(--frit) .5px,transparent 1.1px);
  --frit-ramp-down:var(--frit-dot-1) 0 -1px/7px 7px repeat-x,var(--frit-dot-2) 3.5px 6px/7px 7px repeat-x,
                   var(--frit-dot-3) 0 13px/7px 7px repeat-x,var(--frit-dot-4) 3.5px 20px/7px 7px repeat-x;
  --frit-ramp-up:var(--frit-dot-1) 0 22px/7px 7px repeat-x,var(--frit-dot-2) 3.5px 15px/7px 7px repeat-x,
                 var(--frit-dot-3) 0 8px/7px 7px repeat-x,var(--frit-dot-4) 3.5px 1px/7px 7px repeat-x;
  --frit-ramp-right:var(--frit-dot-1) -1px 0/7px 7px repeat-y,var(--frit-dot-2) 6px 3.5px/7px 7px repeat-y,
                    var(--frit-dot-3) 13px 0/7px 7px repeat-y,var(--frit-dot-4) 20px 3.5px/7px 7px repeat-y;
  --frit-edge-down:linear-gradient(var(--frit),var(--frit)) 0 0/100% 8px no-repeat,
                   var(--frit-dot-1) 0 7px/7px 7px repeat-x,var(--frit-dot-2) 3.5px 14px/7px 7px repeat-x,
                   var(--frit-dot-3) 0 21px/7px 7px repeat-x,var(--frit-dot-4) 3.5px 28px/7px 7px repeat-x;
}
@media (min-width:37.5rem){:root{--gutter:1.5rem;--seam-w:280px;--canopy-h:1.5rem}}
@media (min-width:64rem){:root{--gutter:2rem;--seam-w:392px;--canopy-h:2.25rem;--canopy-gap:1.5rem}}
.dp-type-oblique-grotesque{--headline-style:italic}

/* =====================================================================
   2. BASE
   ===================================================================== */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--color-page);color:var(--color-text);font:var(--fw-normal) var(--text-base)/var(--lh-normal) var(--font);letter-spacing:var(--track-body)}
/* [hidden] always wins over component display values ([data-show-for] groups, empty results) */
[hidden]{display:none!important}
/* ...except what a no-JS visitor must still reach (plugin wrr_form_show_attrs( ..., $nojs ): "Which side?", "Which make?",
   insurer, safety/legal notes). All tagged elements are block boxes (p.field__note, fieldset.field, div.field). */
html.no-js .glass-quote__form [data-nojs-show][hidden]{display:block!important}
h1,h2,h3,h4,h5,h6{margin:0 0 var(--space-4);font-family:var(--font-display);font-weight:var(--fw-bold);font-synthesis:none;line-height:var(--lh-heading);color:var(--color-text);text-transform:none}
h1{font-size:var(--h1-size);line-height:var(--lh-tight);letter-spacing:var(--track-h1)}
h2{font-size:var(--h2-size);letter-spacing:var(--track-h2)}
h3{font-size:var(--h3-size);line-height:var(--lh-snug);letter-spacing:var(--track-h3)}
h4{font-size:var(--text-md);line-height:var(--lh-snug);letter-spacing:0}
h5,h6{font-size:var(--text-base);line-height:var(--lh-snug);letter-spacing:0}
b,strong{font-weight:var(--fw-semibold)}
:is(h1,h2,h3,h4,h5,h6) :is(b,strong){font-weight:inherit}
address{font-style:normal}
img{max-width:100%;height:auto}
svg{max-width:100%}
button,input,select,textarea{font:inherit}
hr{height:0;margin:var(--space-10) 0;border:0;border-top:1px solid var(--color-border)}
a{color:var(--color-text);text-decoration-line:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:2px;text-underline-offset:.2em}
a:hover{text-decoration-color:var(--color-primary);text-decoration-thickness:3px}
:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}
/* in-page jumps clear the sticky header (the band sets its own value in section 7) */
[id]{scroll-margin-top:calc(var(--header-h-mobile) + var(--space-4))}
@media (min-width:37.5rem){[id]{scroll-margin-top:calc(var(--wp-admin--admin-bar--height,0px) + var(--header-h-mobile) + var(--space-4))}}
@media (min-width:64rem){[id]{scroll-margin-top:calc(var(--wp-admin--admin-bar--height,0px) + var(--header-h-shrunk) + var(--space-4))}}
.site-main{display:block}
.container{width:100%;max-width:calc(var(--width-wide) + 2 * var(--gutter));margin-inline:auto;padding-inline:var(--gutter)}
.screen-reader-text{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);white-space:nowrap;word-wrap:normal!important}
.screen-reader-text:focus{width:auto;height:auto;margin:0;overflow:visible;clip:auto;clip-path:none;white-space:normal}
.skip-link{position:absolute;left:var(--space-4);top:-10rem;z-index:var(--z-skip);background:var(--color-primary);color:var(--color-on-dark);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);font-weight:var(--fw-semibold);text-decoration:none}
/* two classes + :focus (0,3,0) beat core's .screen-reader-text:focus (grey fill, 5px offset, 15px 23px padding) in any load order */
.skip-link.screen-reader-text:focus{top:var(--space-2);left:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-primary);color:var(--color-on-dark);font-size:1rem;line-height:1.3;outline-color:var(--color-focus-on-dark)}
/* context: ink bands (request band, footer, sticky bar) and the tint (CTA banner) */
.on-dark{color:var(--color-on-dark)}
.on-dark a:not(.btn){color:var(--color-on-dark);text-decoration-color:var(--color-accent-on-dark)}
.on-dark a:not(.btn):hover{text-decoration-color:var(--color-on-dark)}
.on-dark :focus-visible{outline-color:var(--color-focus-on-dark)}
.wrap-any{overflow-wrap:anywhere}
.tabular{font-variant-numeric:tabular-nums}
.text-center{text-align:center}
.content-narrow{max-width:var(--width-content)}
/* core preset classes: theme.json maps the owner's presets onto the tokens (core prints these with !important) */
.has-large-font-size{font-size:var(--deck-size)}
.has-small-font-size{font-size:var(--text-sm)}
/* every display-face role renders the real weight or the fallback, never a faux bold or italic */
.btn,.wp-block-button__link,.site-title,.footer-wordmark,.field__legend,.blackout__title,.glass-quote__title,
.glass-quote__more-title,.glass-quote__errors-title,.cta-banner__title,.card__title,.card__cta,.hero__title{font-synthesis:none}

/* =====================================================================
   3. BUTTONS (theme .btn + owner core/buttons on the same variants;
      every colour through --color-cta-*; owner selectors carry enough
      weight to beat core's is-style-outline rules on WP 6.5 and 6.6+)
   ===================================================================== */
.btn,.wp-block-button .wp-block-button__link{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:3rem;padding:.6875rem var(--space-6);
  border:2px solid transparent;border-radius:var(--radius-sm);font:var(--fw-bold) 1rem/1.2 var(--font-display);letter-spacing:0;text-transform:none;text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;box-shadow:none;
  transition:background-color var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}
a.btn{text-decoration:none}
.btn svg{flex:none;width:1em;height:1em}
.btn__arrow{width:1em;height:1em;flex:none}
/* primary on light: accent fill, ink label 5.85; fill vs white 3.01 (no keyline on white) */
.btn--primary,.wp-block-button:not(.is-style-outline) .wp-block-button__link{background:var(--color-cta-bg);color:var(--color-cta-fg);border-color:var(--color-cta-edge)}
.btn--primary:hover,.wp-block-button:not(.is-style-outline) .wp-block-button__link:hover{background:var(--color-cta-bg-hover);border-color:var(--color-cta-bg-hover);color:var(--color-cta-fg-hover)}
.btn--primary:active,.wp-block-button:not(.is-style-outline) .wp-block-button__link:active{background:var(--color-cta-bg-active);border-color:var(--color-cta-bg-active);color:var(--color-cta-fg-active)}
/* secondary (owner is-style-outline) on light: 2px ink keyline, ink label 17.61 */
.btn--secondary,.wp-block-button.is-style-outline .wp-block-button__link{background:transparent;color:var(--color-primary);border-color:var(--color-primary)}
.btn--secondary:hover,.wp-block-button.is-style-outline .wp-block-button__link:hover{background:var(--color-surface);color:var(--color-primary)}
.btn--secondary:active,.wp-block-button.is-style-outline .wp-block-button__link:active{background:var(--color-surface-active);color:var(--color-primary)}
/* on the tint the accent fill loses its boundary (2.61) -> the 2px ink keyline carries it (15.25) */
.on-tint .btn--primary,.on-tint .wp-block-button:not(.is-style-outline) .wp-block-button__link{border-color:var(--color-cta-edge-tint)}
/* secondary on the tint: the tint hover fill would equal the banner, so hover = white fill (17.61); press keeps the pressed tint (13.23) */
.on-tint .btn--secondary:hover,.on-tint .wp-block-button.is-style-outline .wp-block-button__link:hover{background:var(--color-white)}
.on-tint .btn--secondary:active,.on-tint .wp-block-button.is-style-outline .wp-block-button__link:active{background:var(--color-surface-active)}
/* on dark (request band head, sticky bar, footer): fill vs ink 5.85; hover = white fill, ink label */
.on-dark .btn--primary:hover{background:var(--color-cta-bg-hover-dark);border-color:var(--color-cta-bg-hover-dark);color:var(--color-primary)}
.on-dark .btn--primary:active{background:var(--color-cta-bg-active-dark);border-color:var(--color-cta-bg-active-dark);color:var(--color-primary)}
.on-dark .btn--secondary{color:var(--color-on-dark);border-color:var(--color-on-dark)}
.on-dark .btn--secondary:hover{background:var(--color-white);color:var(--color-primary)}
/* sticky bar: the fill's keyline on the ink; --color-cta-edge-dark (white) prints only when a Customizer accent is < 3:1 against the primary (§15) */
.sticky-bar .btn--primary{border-color:var(--color-cta-edge-dark,var(--color-cta-edge))}
/* disabled beats every hover/active variant above (:root lifts the weight) */
:root .btn:is(:disabled,[aria-disabled=true]),:root .btn:is(:disabled,[aria-disabled=true]):is(:hover,:active),
:root .wp-block-button__link[aria-disabled=true]{background:var(--color-disabled-bg);border-color:var(--color-disabled-bg);color:var(--color-disabled-fg);cursor:not-allowed}
.btn--block{display:flex;width:100%}
.btn--lg{min-height:3.25rem;padding-inline:var(--space-8)}
/* owner core/buttons layout; empty groups render nothing (D19, content-adoption) */
.wp-block-buttons{display:flex;flex-wrap:wrap;gap:var(--space-3);margin:var(--space-8) 0 0}
.wp-block-buttons>.wp-block-button{margin:0}
@media (max-width:29.99rem){
  .wp-block-buttons{flex-direction:column;align-items:stretch}
  .wp-block-buttons>.wp-block-button{width:100%}
  .wp-block-buttons .wp-block-button__link{display:flex;width:100%;white-space:normal;text-align:center}
}

/* =====================================================================
   4. HEADER: frit-fade (media queries = the JS breakpoint 1023/1024)
   ===================================================================== */
.site-header{position:sticky;top:var(--wp-admin--admin-bar--height,0px);z-index:var(--z-header);background:var(--color-page);border-bottom:1px solid var(--color-border);overflow-x:clip}
@media (max-width:37.49rem){.admin-bar .site-header{top:0}}
.site-header__inner{display:flex;align-items:stretch;height:var(--header-h-mobile);max-width:calc(var(--width-wide) + 2 * var(--gutter));margin-inline:auto;padding-inline:var(--gutter)}
/* the ink cell: runs out to the viewport's left edge (::before), dissolves right through the ramp (::after) */
.site-branding{position:relative;display:flex;align-items:center;flex:none;background:var(--color-primary);padding-right:var(--space-2);margin-right:calc(var(--frit-depth) + var(--space-2))}
.site-branding::before{content:"";position:absolute;top:0;bottom:0;right:100%;width:100vw;background:var(--color-primary)}
.site-branding::after{content:"";position:absolute;top:0;bottom:0;left:100%;width:var(--frit-depth);background:var(--frit-ramp-right)}
/* wordmark: p.site-title (never an h1) > a > span.site-title__part x n, no whitespace between parts */
.site-title{margin:0;font:var(--fw-bold) var(--wordmark-size)/1.05 var(--font-display);letter-spacing:-.005em;overflow-wrap:anywhere}
.site-title a{display:block;color:var(--color-on-dark);text-decoration:none}
.site-title a:hover{color:var(--color-on-dark);text-decoration:none}
.site-title a:focus-visible{outline-color:var(--color-focus-on-dark);outline-offset:3px}
.site-title__part{display:block}
.site-title__part:last-child{color:var(--color-accent-on-dark)}
@media (min-width:30rem){.site-title__part{display:inline}.site-title__part:last-child{display:block}}
/* logo option (wrr_header_shows_logo()): a white plate inside the same ink cell */
.site-branding--logo .custom-logo-link{display:block;text-decoration:none}
.site-branding--logo .custom-logo{display:block;width:min(var(--logo-width,160px),38vw);height:auto;max-height:calc(var(--header-h-mobile) - var(--space-3));object-fit:contain;padding:4px;background:var(--color-page);border-radius:var(--radius-sm)}
.site-branding--logo .custom-logo-link:focus-visible{outline-color:var(--color-focus-on-dark)}
.header-actions{display:flex;align-items:center;gap:var(--space-2);margin-left:auto}
.header-cta{min-height:2.75rem;padding-inline:var(--space-3)}
.header-cta__long{display:none}
.menu-toggle{display:inline-flex;align-items:center;justify-content:center;flex:none;width:2.75rem;height:2.75rem;padding:0;border:2px solid var(--color-primary);border-radius:var(--radius-sm);background:var(--color-page);color:var(--color-primary);cursor:pointer}
.site-header .menu-toggle svg{width:22px;height:22px}
.menu-toggle__close{display:none}
.menu-toggle[aria-expanded=true] .menu-toggle__open{display:none}
.menu-toggle[aria-expanded=true] .menu-toggle__close{display:block}
@media (max-width:23.49rem){.site-header__inner{padding-inline:var(--space-3)}.site-branding{margin-right:calc(var(--frit-depth) + 2px)}.header-actions{gap:var(--space-1)}.header-cta{padding-inline:var(--space-2)}}
@media (max-width:22.49rem){:root{--wordmark-size:.875rem}.site-header__inner{padding-inline:.625rem}.site-branding{padding-right:var(--space-1)}.header-cta{padding-inline:.375rem;font-size:.9375rem}}
/* nav: mobile sheet by default (the top list is the direct child ul of nav.main-nav) */
.main-nav{display:none}
.main-nav.is-open{display:block;position:absolute;top:100%;left:0;right:0;z-index:var(--z-panel);background:var(--color-page);border-top:1px solid var(--color-border);box-shadow:var(--shadow-lg);max-height:calc(100dvh - var(--header-h-mobile));overflow:auto;overscroll-behavior:contain}
.main-nav ul{list-style:none;margin:0;padding:0}
.main-nav>ul>li{border-bottom:1px solid var(--color-border)}
.main-nav>ul>li>a{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:3.25rem;padding:0 var(--gutter);font:var(--fw-semibold) var(--text-base)/1.2 var(--font);color:var(--color-text);text-decoration:none;white-space:nowrap}
.main-nav>ul>li>a:hover{text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:3px}
.main-nav>ul>li>a[aria-current=page]{box-shadow:inset 4px 0 0 var(--color-primary)}
.main-nav .menu-caret{width:14px;height:14px;flex:none;transition:transform var(--transition-fast)}
.main-nav .sub-menu{display:none;background:var(--color-surface);padding-block:var(--space-1)}
.main-nav .is-open>.sub-menu{display:block}
.main-nav .is-open>a .menu-caret{transform:rotate(180deg)}
.main-nav .sub-menu a{display:flex;align-items:center;min-height:2.75rem;padding:0 var(--gutter) 0 calc(var(--gutter) + var(--space-4));color:var(--color-text);text-decoration:none;font-size:1rem;line-height:1.3}
.main-nav .sub-menu a:hover{text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:3px}
.main-nav .sub-menu a[aria-current=page]{box-shadow:inset 4px 0 0 var(--color-primary)}
.main-nav .sub-menu .sub-menu a{padding-left:calc(var(--gutter) + var(--space-8))}
.main-nav__cta{padding:var(--space-4) var(--gutter) var(--space-6)}
/* the optional header search (OFF by default) prints in the mobile panel only */
.main-nav .search-form{margin:0;padding:var(--space-4) var(--gutter) 0;max-width:none}
@media (min-width:64rem){
  .site-header__inner{height:var(--header-h)}
  /* dock: instant height switch + margin compensation, so the header's flow box stays 76px (no layout shift) */
  .site-header.is-shrunk{margin-bottom:calc(var(--header-h) - var(--header-h-shrunk))}
  .site-header.is-shrunk .site-header__inner{height:var(--header-h-shrunk)}
  .site-branding{padding-right:var(--space-3);margin-right:calc(var(--frit-depth) + var(--space-4))}
  .site-header:not(.is-nav-overflow) .menu-toggle,.site-header:not(.is-nav-overflow) .main-nav__cta,.site-header:not(.is-nav-overflow) .main-nav .search-form{display:none}
  .site-header:not(.is-nav-overflow) .main-nav,.site-header:not(.is-nav-overflow) .main-nav.is-open{display:flex;position:static;border:0;box-shadow:none;max-height:none;overflow:visible;background:transparent}
  .site-header:not(.is-nav-overflow) .main-nav>ul{display:flex;align-items:stretch;gap:var(--space-1)}
  .site-header:not(.is-nav-overflow) .main-nav>ul>li{position:relative;border:0;display:flex}
  .site-header:not(.is-nav-overflow) .main-nav>ul>li>a{position:relative;min-height:0;padding:0 var(--space-3);gap:var(--space-1);font-size:1rem}
  .site-header:not(.is-nav-overflow) .main-nav>ul>li>a:hover{text-decoration:none}
  /* the 3px indicator under the label: accent on hover/focus-within, ink for the current item or ancestor */
  .site-header:not(.is-nav-overflow) .main-nav>ul>li>a::after{content:"";position:absolute;left:var(--space-3);right:var(--space-3);bottom:calc(50% - 1.1em);height:3px;background:var(--color-accent);transform:scaleX(0);transform-origin:left;transition:transform var(--transition-fast)}
  .site-header:not(.is-nav-overflow) .main-nav>ul>li>a:hover::after,.site-header:not(.is-nav-overflow) .main-nav>ul>li:focus-within>a::after{transform:scaleX(1)}
  .site-header:not(.is-nav-overflow) .main-nav>ul>li>a[aria-current=page]{box-shadow:none}
  .site-header:not(.is-nav-overflow) .main-nav>ul>li>a[aria-current=page]::after,.site-header:not(.is-nav-overflow) .main-nav>ul>li.current-menu-ancestor>a::after,.site-header:not(.is-nav-overflow) .main-nav>ul>li.current-menu-item>a::after{transform:scaleX(1);background:var(--color-primary)}
  .site-header:not(.is-nav-overflow) .main-nav .is-open>a .menu-caret{transform:none}
  /* dropdown: opens on :hover and :focus-within (Esc closes it in JS) */
  .site-header:not(.is-nav-overflow) .main-nav .sub-menu{display:block;position:absolute;top:100%;left:0;min-width:17.5rem;padding:var(--space-2) 0;background:var(--color-page);border:1px solid var(--color-border);border-top:3px solid var(--color-primary);border-radius:0 0 var(--radius-sm) var(--radius-sm);box-shadow:var(--shadow-md);z-index:var(--z-dropdown);opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity var(--transition-fast),transform var(--transition-fast),visibility 0s linear var(--transition-fast)}
  .site-header:not(.is-nav-overflow) .main-nav>ul>li:hover>.sub-menu,.site-header:not(.is-nav-overflow) .main-nav>ul>li:focus-within>.sub-menu{opacity:1;visibility:visible;transform:none;transition-delay:0s}
  .site-header:not(.is-nav-overflow) .main-nav>ul>li:last-child>.sub-menu{left:auto;right:0}
  .site-header:not(.is-nav-overflow) .main-nav .sub-menu a{padding:0 var(--space-5);white-space:nowrap}
  .site-header:not(.is-nav-overflow) .main-nav .sub-menu a:hover{background:var(--color-surface);text-decoration:none}
  .site-header:not(.is-nav-overflow) .main-nav .sub-menu .sub-menu{position:static;min-width:0;padding:0;border:0;border-radius:0;box-shadow:none;opacity:1;visibility:visible;transform:none;transition:none}
  .site-header:not(.is-nav-overflow) .main-nav .sub-menu .sub-menu a{padding-left:calc(var(--space-5) + var(--space-4))}
  .header-cta{padding-inline:var(--space-4)}
  /* overflow mode (main.js adds .is-nav-overflow when the inline row cannot fit beside the CTA): the unscoped mobile panel rules above apply */
  .site-header.is-nav-overflow .main-nav.is-open{max-height:calc(100dvh - var(--wp-admin--admin-bar--height,0px) - var(--header-h))}
}
@media (min-width:75rem){.header-cta__long{display:inline}.header-cta__short{display:none}}
/* main.js tries the compact label before falling back to the panel (.is-cta-short) */
.site-header.is-cta-short .header-cta__long{display:none}
.site-header.is-cta-short .header-cta__short{display:inline}
/* topbar: prints only when at least one child renders (never on the default build) */
.topbar{background:var(--color-page);border-bottom:1px solid var(--color-border);font-size:var(--text-sm);line-height:1.4;color:var(--color-muted)}
.topbar__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--space-2) var(--space-6);min-height:2.25rem;width:100%;max-width:calc(var(--width-wide) + 2 * var(--gutter));margin-inline:auto;padding:var(--space-1) var(--gutter)}
.topbar a{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--color-text)}
.topbar svg{flex:none;width:1em;height:1em}

/* =====================================================================
   5. HERO: frit-canopy (+ mirror-mount blackout >= 64rem)
   ===================================================================== */
.hero{position:relative;padding:calc(var(--canopy-gap) + var(--canopy-h) + var(--frit-depth) + var(--space-6)) 0 var(--space-14)}
/* the canopy: solid ink of --canopy-h, its lower edge dissolving through the four ramp rows */
.hero::before{content:"";position:absolute;left:0;right:0;top:var(--canopy-gap);height:calc(var(--canopy-h) + var(--frit-depth));
  background:linear-gradient(var(--frit),var(--frit)) 0 0/100% var(--canopy-h) no-repeat,
    var(--frit-dot-1) 0 calc(var(--canopy-h) - 1px)/7px 7px repeat-x,var(--frit-dot-2) 3.5px calc(var(--canopy-h) + 6px)/7px 7px repeat-x,
    var(--frit-dot-3) 0 calc(var(--canopy-h) + 13px)/7px 7px repeat-x,var(--frit-dot-4) 3.5px calc(var(--canopy-h) + 20px)/7px 7px repeat-x}
.hero__inner{display:grid}
.hero__content{max-width:46rem;min-width:0}
.hero .breadcrumbs{margin-bottom:var(--space-4)}
.hero__title{margin:0;font-family:var(--font-display);font-weight:var(--fw-bold);font-style:var(--headline-style);font-synthesis:none;font-size:var(--h1-size);line-height:var(--lh-tight);letter-spacing:var(--track-h1);color:var(--color-text);overflow-wrap:anywhere}
.hero__deck{margin:var(--space-6) 0 0;font-size:var(--deck-size);line-height:1.45;max-width:40rem;overflow-wrap:anywhere}
.hero__deck p{margin:0}
.hero__deck p+p{margin-top:var(--space-4)}
.hero__text{margin:var(--space-4) 0 0;max-width:40rem;overflow-wrap:anywhere}
.hero__text p{margin:0}
.hero__ctas{margin-top:var(--space-8)}
.hero__ctas .wp-block-buttons{margin:0}
.hero__ctas .wp-block-button__link,.hero__ctas .btn{min-height:3.25rem;padding-inline:var(--space-7)}
.hero__ctas svg{width:1em;height:1em}
.hero__note{margin:var(--space-8) 0 0;padding-top:var(--space-4);border-top:1px solid var(--color-border);font-size:var(--text-sm);line-height:1.55;color:var(--color-muted);max-width:40rem;overflow-wrap:anywhere}
.hero__note p{margin:0}
.hero__note strong{color:var(--color-text)}
.hero.hero--compact{padding-bottom:var(--space-12)}
.hero--compact .hero__title{font-size:var(--h2-size);line-height:var(--lh-heading);letter-spacing:var(--track-h2)}
.hero--compact .search-form{margin-top:var(--space-6)}
/* dormant (featured spot OFF) */
.hero__featured-badge{display:inline-flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-4);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);background:var(--color-primary);color:var(--color-on-dark);font-size:var(--text-sm);font-weight:var(--fw-semibold);line-height:1.4}
.hero__featured-badge svg{flex:none;width:1em;height:1em}
.hero__featured-tagline{display:block;margin:0 0 var(--space-4);font-size:1rem;color:var(--color-muted)}
.hero__blackout{display:none}
@media (min-width:64rem){
  .hero{padding-top:calc(var(--canopy-gap) + var(--canopy-h) + var(--frit-depth) + var(--space-8));padding-bottom:var(--space-16)}
  .hero.hero--compact{padding-bottom:var(--space-12)}
  .hero--blackout .hero__inner{grid-template-columns:minmax(0,1fr) calc(22rem + 2 * var(--frit-depth));column-gap:calc(var(--space-16) - var(--frit-depth));align-items:start}
  /* five layers, one 7px hex lattice: E4 (aside bg) > E3 (::before) > E2 (::after) > E1, E0 (body pseudos) > text */
  .hero__blackout{display:block;position:relative;margin:calc(-1 * (var(--frit-depth) + var(--space-8)) - 1px) 0 0;isolation:isolate;border-top:1px solid transparent;color:var(--color-on-dark);
    background:var(--frit-dot-4) 0 0/7px 14px padding-box,var(--frit-dot-4) 3.5px 7px/7px 14px padding-box,var(--color-page) padding-box;
    clip-path:polygon(0 0,100% 0,calc(100% - 40px) 100%,40px 100%)}
  .hero__blackout::before,.hero__blackout::after{content:"";position:absolute;inset:0}
  .hero__blackout::before{z-index:1;background:var(--frit-dot-3) 0 0/7px 14px,var(--frit-dot-3) 3.5px 7px/7px 14px,var(--color-page);
    clip-path:polygon(7px 0,calc(100% - 7px) 0,calc(100% - 47px) calc(100% - 7px),47px calc(100% - 7px))}
  .hero__blackout::after{z-index:2;background:var(--frit-dot-2) 0 0/7px 14px,var(--frit-dot-2) 3.5px 7px/7px 14px,var(--color-page);
    clip-path:polygon(14px 0,calc(100% - 14px) 0,calc(100% - 54px) calc(100% - 14px),54px calc(100% - 14px))}
  .blackout__body{position:relative;z-index:3;padding:var(--space-8) 84px calc(var(--frit-depth) + var(--space-6))}
  .blackout__body::before,.blackout__body::after{content:"";position:absolute;inset:0}
  .blackout__body::before{z-index:-2;background:var(--frit-dot-1) 0 0/7px 14px,var(--frit-dot-1) 3.5px 7px/7px 14px,var(--color-page);
    clip-path:polygon(21px 0,calc(100% - 21px) 0,calc(100% - 61px) calc(100% - 21px),61px calc(100% - 21px))}
  .blackout__body::after{z-index:-1;top:-1px;background:var(--color-primary);
    clip-path:polygon(28px 0,calc(100% - 28px) 0,calc(100% - 68px) calc(100% - 28px),68px calc(100% - 28px))}
}
.blackout__title{margin:0;font:var(--fw-bold) var(--text-md)/1.25 var(--font-display);letter-spacing:0;color:var(--color-on-dark)}
.blackout__list{list-style:none;margin:var(--space-4) 0 0;padding:0;display:grid;gap:var(--space-2)}
.blackout__list li{position:relative;padding-left:var(--space-5);line-height:1.35;font-size:1rem}
.blackout__list li::before{content:"";position:absolute;left:0;top:.42em;width:5.6px;height:5.6px;border-radius:50%;background:var(--color-accent-on-dark)}
.blackout__note{margin:var(--space-4) 0 0;font-size:var(--text-sm);line-height:1.45;color:var(--color-on-dark-muted)}

/* =====================================================================
   6. SECTIONS: frit-seam heads + prose
   ===================================================================== */
.section{padding-block:var(--space-16)}
@media (min-width:64rem){.section{padding-block:var(--space-20)}}
.section+.section{padding-top:0}
.section-head{margin-bottom:var(--space-10);max-width:var(--measure)}
.section-head__intro{margin:var(--space-4) 0 0;color:var(--color-muted);font-size:var(--text-md);line-height:1.5}
/* seam: 8px ink band over the left 75% of --seam-w, a bead row continuing it to 100%, four ramp rows under it
   whose right ends step back one pitch per row from row 3 (clip boxes: border / padding / content).
   Every H2 section head carries the same seam; nothing changes down the page. */
.section-head__title,.section-head>h2,h2.section-head,.prose-content>h2,.entry-content>h2,.faq__heading,.silo__heading,.local-areas__heading,.directory__heading{position:relative;padding-top:calc(var(--frit-band) + var(--frit-depth) + var(--space-5))}
.section-head__title::before,.section-head>h2::before,h2.section-head::before,.prose-content>h2::before,.entry-content>h2::before,.faq__heading::before,.silo__heading::before,.local-areas__heading::before,.directory__heading::before{content:"";position:absolute;top:0;left:0;width:var(--seam-w);max-width:100%;height:calc(var(--frit-band) + var(--frit-depth));
  border-right:7px solid transparent;padding-right:7px;
  background:linear-gradient(var(--frit),var(--frit)) 0 0/75% 8px no-repeat border-box border-box,
    var(--frit-dot-0) 0 .5px/7px 7px repeat-x border-box border-box,
    var(--frit-dot-1) 0 7px/7px 7px repeat-x border-box border-box,
    var(--frit-dot-2) 3.5px 14px/7px 7px repeat-x border-box padding-box,
    var(--frit-dot-3) 0 21px/7px 7px repeat-x border-box content-box,
    var(--frit-dot-4) 3.5px 28px/7px 7px repeat-x border-box content-box}
.section-head__title,.section-head>h2,h2.section-head,.silo__heading,.local-areas__heading,.directory__heading{margin:0;font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--h2-size);line-height:var(--lh-heading);letter-spacing:var(--track-h2)}
h2.section-head{margin-bottom:var(--space-8);max-width:var(--measure)}
/* prose: the owner body (.prose-content) and posts (.entry-content) share every rule. Element rules skip
   BEM-classed component markup nested inside (shortcode output), so components keep their own spacing. */
.prose-content,.entry-content{max-width:var(--measure);overflow-wrap:anywhere}
.prose-content>h2,.entry-content>h2{margin:var(--space-20) 0 var(--space-5);font-size:var(--h2-size);line-height:var(--lh-heading);letter-spacing:var(--track-h2)}
.prose-content>h2:first-child,.entry-content>h2:first-child{margin-top:0}
.prose-content h3:where(:not([class*="__"])),.entry-content h3:where(:not([class*="__"])){margin:var(--space-10) 0 var(--space-3);font-size:var(--h3-size);line-height:var(--lh-snug);letter-spacing:var(--track-h3)}
.prose-content h4:where(:not([class*="__"])),.entry-content h4:where(:not([class*="__"])){margin:var(--space-8) 0 var(--space-2)}
.prose-content :is(h3,h4):first-child,.entry-content :is(h3,h4):first-child{margin-top:0}
.prose-content p:where(:not([class*="__"])),.entry-content p:where(:not([class*="__"])){margin:0 0 var(--space-5)}
.prose-content .has-large-font-size,.entry-content .has-large-font-size{line-height:1.45}
.prose-content :is(ul,ol):where(.wp-block-list,:not([class])),.entry-content :is(ul,ol):where(.wp-block-list,:not([class])){margin:0 0 var(--space-6);padding-left:0;list-style:none}
.prose-content :is(ul,ol):where(.wp-block-list,:not([class]))>li,.entry-content :is(ul,ol):where(.wp-block-list,:not([class]))>li{position:relative;margin:0 0 var(--space-3);padding-left:var(--space-7)}
/* ul: one frit dot (5.6px, ink) per item */
.prose-content ul:where(.wp-block-list,:not([class]))>li::before,.entry-content ul:where(.wp-block-list,:not([class]))>li::before{content:"";position:absolute;left:var(--space-1);top:.62em;width:5.6px;height:5.6px;border-radius:50%;background:var(--color-primary)}
/* ol: 28px ink disc with a white tabular numeral in the display face (the owner's quote-process list) */
.prose-content ol:where(.wp-block-list,:not([class])),.entry-content ol:where(.wp-block-list,:not([class])){counter-reset:step}
.prose-content ol:where(.wp-block-list,:not([class]))>li,.entry-content ol:where(.wp-block-list,:not([class]))>li{counter-increment:step;padding-left:var(--space-10);min-height:1.75rem}
.prose-content ol:where(.wp-block-list,:not([class]))>li::before,.entry-content ol:where(.wp-block-list,:not([class]))>li::before{content:counter(step);position:absolute;left:0;top:0;width:1.75rem;height:1.75rem;border-radius:50%;background:var(--color-primary);color:var(--color-on-dark);font:var(--fw-bold) .9375rem/1.75rem var(--font-display);font-synthesis:none;text-align:center;font-variant-numeric:tabular-nums}
.prose-content li>:is(ul,ol),.entry-content li>:is(ul,ol){margin:var(--space-3) 0 0}
.prose-content li>p:last-child,.entry-content li>p:last-child{margin-bottom:0}
.prose-content strong,.entry-content strong{font-weight:var(--fw-semibold)}
.prose-content blockquote,.entry-content blockquote{margin:0 0 var(--space-6);padding-left:var(--space-4);border-left:3px solid var(--color-primary)}
.prose-content blockquote p:last-child,.entry-content blockquote p:last-child{margin-bottom:0}
.prose-content cite,.entry-content cite{display:block;margin-top:var(--space-2);font-size:var(--text-sm);font-style:normal;color:var(--color-muted)}
.prose-content figure,.entry-content figure{margin:0 0 var(--space-6)}
.prose-content figcaption,.entry-content figcaption{margin-top:var(--space-2);font-size:var(--text-sm);line-height:1.45;color:var(--color-muted)}
.prose-content img,.entry-content img{border-radius:var(--radius-sm)}
.prose-content table,.entry-content table{width:100%;border-collapse:collapse;margin:0 0 var(--space-6);font-size:1rem}
.prose-content :is(th,td),.entry-content :is(th,td){padding:var(--space-2) var(--space-3);border:0;border-bottom:1px solid var(--color-border);text-align:left;vertical-align:top}
.prose-content th,.entry-content th{background:var(--color-surface);font-weight:var(--fw-semibold)}
.prose-content thead,.prose-content tfoot,.entry-content thead,.entry-content tfoot{border:0}
.prose-content .wp-block-table,.entry-content .wp-block-table{margin:0 0 var(--space-6);overflow-x:auto}
.prose-content .wp-block-table table,.entry-content .wp-block-table table{margin:0}
.prose-content .wp-block-buttons,.entry-content .wp-block-buttons{margin:var(--space-8) 0 var(--space-4)}

/* =====================================================================
   7. REQUEST BAND #glass-quote: the one ink band; the panel is the clear glass
   ===================================================================== */
.glass-quote{position:relative;background:var(--color-primary);color:var(--color-on-dark);padding-block:var(--space-10) var(--space-12);scroll-margin-top:var(--header-h-mobile)}
@media (min-width:37.5rem){.glass-quote{scroll-margin-top:calc(var(--wp-admin--admin-bar--height,0px) + var(--header-h-mobile))}}
.glass-quote::before,.glass-quote::after{content:"";position:absolute;left:0;right:0;height:var(--frit-depth)}
.glass-quote::before{bottom:100%;background:var(--frit-ramp-up)}
.glass-quote::after{top:100%;background:var(--frit-ramp-down)}
.glass-quote__inner{display:grid;gap:var(--space-6)}
.glass-quote__head{min-width:0}
.glass-quote__title{margin:0;font-family:var(--font-display);font-weight:var(--fw-bold);font-style:var(--headline-style);font-synthesis:none;font-size:var(--h2-size);line-height:var(--lh-heading);letter-spacing:var(--track-h2);color:var(--color-on-dark)}
.glass-quote__intro{display:none;margin:var(--space-4) 0 0;color:var(--color-on-dark);overflow-wrap:anywhere}
.glass-quote__nocharge{margin:var(--space-3) 0 0;font-size:var(--text-sm);line-height:1.45;color:var(--color-on-dark-muted)}
.glass-quote__safety{margin:var(--space-4) 0 0;padding-left:var(--space-4);border-left:3px solid var(--color-accent-on-dark);font-size:var(--text-sm);line-height:1.45;color:var(--color-on-dark)}
.glass-quote__ready{display:none}
.glass-quote__ready h3{margin:var(--space-8) 0 var(--space-3);font-size:var(--text-md);line-height:var(--lh-snug);letter-spacing:0;color:var(--color-on-dark)}
.glass-quote__ready ul{list-style:none;margin:0;padding:0}
.glass-quote__ready li{position:relative;padding-left:var(--space-5);margin-bottom:var(--space-2);color:var(--color-on-dark-muted);font-size:var(--text-sm)}
.glass-quote__ready li::before{content:"";position:absolute;left:0;top:.5em;width:5.6px;height:5.6px;border-radius:50%;background:var(--color-accent-on-dark)}
.glass-quote__panel{position:relative;min-width:0;background:var(--color-page);color:var(--color-text);border-radius:var(--radius-glass);padding:calc(var(--frit-depth) + var(--space-4)) var(--space-4) var(--space-6);margin-inline:calc(var(--space-2) - var(--gutter))}
.glass-quote__panel::before{content:"";position:absolute;top:0;left:0;right:0;height:var(--frit-depth);border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--frit-ramp-down)}
@media (min-width:37.5rem){.glass-quote__panel{margin-inline:0;padding:calc(var(--frit-depth) + var(--space-6)) var(--space-8) var(--space-8)}}
@media (min-width:64rem){
  .glass-quote{padding-block:var(--space-16) var(--space-20);scroll-margin-top:calc(var(--wp-admin--admin-bar--height,0px) + var(--header-h-shrunk))}
  .glass-quote__inner{grid-template-columns:minmax(0,4fr) minmax(0,8fr);column-gap:var(--space-12);align-items:start}
  .glass-quote__head{position:sticky;top:calc(var(--wp-admin--admin-bar--height,0px) + var(--header-h-shrunk) + var(--space-6))}
  .glass-quote__intro,.glass-quote__ready{display:block}
  .glass-quote__panel{padding:calc(var(--frit-depth) + var(--space-8)) var(--space-10) var(--space-10)}
}
/* the white panel is a light context inside the ink band: undo the .on-dark ring, link and button variants */
.glass-quote__panel :focus-visible{outline-color:var(--color-focus)}
.glass-quote__panel a:not(.btn){color:var(--color-text);text-decoration-color:var(--color-accent)}
.glass-quote__panel a:not(.btn):hover{text-decoration-color:var(--color-primary)}
.glass-quote__panel .btn--primary:hover{background:var(--color-cta-bg-hover);border-color:var(--color-cta-bg-hover);color:var(--color-cta-fg-hover)}
.glass-quote__panel .btn--primary:active{background:var(--color-cta-bg-active);border-color:var(--color-cta-bg-active);color:var(--color-cta-fg-active)}
.glass-quote__panel .btn--secondary{color:var(--color-primary);border-color:var(--color-primary)}
.glass-quote__panel .btn--secondary:hover{background:var(--color-surface);color:var(--color-primary)}
/* operators only, while the form is not live (D5) */
.glass-quote__preview{margin:0 0 var(--space-5);padding:var(--space-2) var(--space-3);border:2px dashed var(--color-primary);border-radius:var(--radius-sm);background:var(--color-surface);font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--color-text)}
/* visitors while the form is not live, and the plugin-inactive fallback (never a phone) */
.glass-quote__offline{margin:0;font-size:var(--text-md);font-weight:var(--fw-semibold);line-height:1.45;overflow-wrap:anywhere}
.glass-quote__offline a{font-weight:var(--fw-semibold)}
/* form */
.glass-quote__form{margin:0}
.glass-quote__form [id]{scroll-margin-top:calc(var(--header-h-mobile) + var(--space-6))}
@media (min-width:37.5rem){.glass-quote__form [id]{scroll-margin-top:calc(var(--wp-admin--admin-bar--height,0px) + var(--header-h-mobile) + var(--space-6))}}
@media (min-width:64rem){.glass-quote__form [id]{scroll-margin-top:calc(var(--wp-admin--admin-bar--height,0px) + var(--header-h-shrunk) + var(--space-6))}}
.glass-quote__lead{margin:0 0 var(--space-5);font-size:var(--text-sm);color:var(--color-muted)}
/* error summary (JS focus target and the no-JS PRG error status) */
.glass-quote__errors{margin:0 0 var(--space-6);padding:var(--space-4);border-left:4px solid var(--color-error);border-radius:var(--radius-sm);background:var(--color-error-bg);color:var(--color-text)}
.glass-quote__errors:focus{outline:2px solid var(--color-focus);outline-offset:2px}
.glass-quote__errors-title{margin:0;font:var(--fw-bold) var(--text-md)/1.3 var(--font-display);color:var(--color-text)}
.glass-quote__errors-list{margin:var(--space-2) 0 0;padding-left:var(--space-5);font-size:var(--text-sm)}
.glass-quote__errors-list li{margin-top:var(--space-1)}
.glass-quote__panel .glass-quote__errors-list a{color:var(--color-text);text-decoration-color:var(--color-error)}
/* 6-column grid >= 600: children full width or .span-2 / .span-3 / .span-4 */
.glass-quote__grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:var(--space-6) var(--space-4)}
.glass-quote__grid>*{grid-column:1/-1;min-width:0}
@media (min-width:37.5rem){.glass-quote__grid>.span-2{grid-column:span 2}.glass-quote__grid>.span-3{grid-column:span 3}.glass-quote__grid>.span-4{grid-column:span 4}}
.field{min-width:0}
fieldset.field{margin:0;padding:0;border:0;min-width:0}
.field__legend,.field__label{display:block;margin:0 0 var(--space-2);padding:0;font:var(--fw-semibold) var(--text-label)/var(--lh-snug) var(--font);color:var(--color-text)}
.field__legend{font:var(--fw-bold) var(--text-md)/var(--lh-snug) var(--font-display)}
.field__hint{margin:var(--space-2) 0 0;font-size:var(--text-sm);line-height:1.45;color:var(--color-muted);font-variant-numeric:tabular-nums}
.field__hint--lead{margin:0 0 var(--space-3)}
.field__hint--pull{margin-top:calc(-1 * var(--space-4))}
@media (min-width:37.5rem){.field__hint--pull{margin:0 0 var(--space-2);align-self:end}}
.field__opt{font-weight:var(--fw-normal);color:var(--color-muted);font-size:var(--text-sm)}
.field :is(input[type=text],input[type=tel],input[type=email],input[type=search],input[type=number],input[type=url],input:not([type])),.field select,.field textarea{display:block;width:100%;min-height:3rem;margin:0;padding:.625rem .875rem;border:1px solid var(--color-field-border);border-radius:var(--radius-sm);background-color:var(--color-page);color:var(--color-text);font:var(--fw-normal) 1rem/1.4 var(--font)}
.field textarea{min-height:7.5rem;resize:vertical}
.field select{appearance:none;-webkit-appearance:none;padding-right:2.5rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%231B1722' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .875rem center;background-size:12px 8px}
.field :is(input,select,textarea):focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-color:var(--color-primary)}
.field input::placeholder,.field textarea::placeholder{color:var(--color-muted);opacity:1}
.field input[type=file]{display:block;width:100%;font:var(--fw-normal) var(--text-sm)/1.4 var(--font);color:var(--color-muted)}
.field input[type=file]::file-selector-button{margin-right:var(--space-3);min-height:2.75rem;padding:0 var(--space-4);border:2px solid var(--color-primary);border-radius:var(--radius-sm);background:var(--color-page);color:var(--color-primary);font:var(--fw-bold) .9375rem/1 var(--font-display);cursor:pointer;transition:background-color var(--transition-fast)}
.field input[type=file]::file-selector-button:hover{background:var(--color-surface)}
/* chips = option tiles (checkbox / radio); the input covers the tile, invisible */
.chips{display:grid;gap:var(--space-2)}
@media (min-width:37.5rem){.chips--2,.chips--4{grid-template-columns:1fr 1fr}.chips--3{grid-template-columns:repeat(3,1fr)}}
.chip{position:relative;display:flex;align-items:center;gap:var(--space-3);min-height:3rem;padding:var(--space-2) var(--space-3);border:1px solid var(--color-field-border);border-radius:var(--radius-sm);background:var(--color-page);color:var(--color-text);cursor:pointer;line-height:1.3;font-size:1rem;transition:background-color var(--transition-fast),border-color var(--transition-fast)}
.chip:hover{background:var(--color-surface)}
.chip:active{background:var(--color-surface-active)}
.chip input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.chip__box{flex:none;width:1.25rem;height:1.25rem;border:2px solid var(--color-primary);border-radius:3px;background:var(--color-page)}
.chip--radio .chip__box{border-radius:50%}
.chip__text{min-width:0}
/* selected = CTA fill + CTA label (so a Customizer accent re-derives it, §15) + ink border + ink tick box (a ring for radios) */
.chip:has(input:checked){background:var(--color-cta-bg);color:var(--color-cta-fg);border-color:var(--color-primary)}
.chip:has(input:checked) .pane-icon{color:currentColor}
.chip input:checked~.chip__box{background:var(--color-primary) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath d='M2.5 7.2l3 3 6-6.4' fill='none' stroke='%23FFFFFF' stroke-width='2.2'/%3E%3C/svg%3E") center/14px no-repeat}
.chip--radio input:checked~.chip__box{background:var(--color-page);box-shadow:inset 0 0 0 3px var(--color-page),inset 0 0 0 12px var(--color-primary)}
.chip:has(input:focus-visible){outline:2px solid var(--color-focus);outline-offset:2px}
.chip:has(input:disabled){background:var(--color-disabled-bg);border-color:var(--color-disabled-bg);color:var(--color-disabled-fg);cursor:not-allowed}
/* pane icon (plugin wrr_pane_icon()): decorative, 49 x 21, ink via currentColor */
.pane-icon,.chip .pane-icon,.silo__link .pane-icon{flex:none;display:block;width:49px;height:21px;color:var(--color-primary)}
/* conditional notes (ADAS, features, insurance, safety): [data-show-for] toggles [hidden] */
.field__note{margin:var(--space-3) 0 0;padding:var(--space-3) var(--space-4);border-left:4px solid var(--color-primary);background:var(--color-surface);font-size:var(--text-sm);line-height:1.5;color:var(--color-text)}
.glass-quote__grid>.field__note{margin-top:calc(-1 * var(--space-3))}
/* errors: a 2px error boundary (inset, so nothing shifts) + icon and text */
.field--error :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=file]),.field [aria-invalid=true]:not([type=checkbox]):not([type=radio]){border-color:var(--color-error);box-shadow:inset 0 0 0 1px var(--color-error)}
.field--error .chip{border-color:var(--color-error)}
.field--error .chip:has(input:checked){border-color:var(--color-primary)}
.field__error{display:flex;gap:var(--space-2);align-items:flex-start;margin:var(--space-2) 0 0;font-size:var(--text-sm);font-weight:var(--fw-semibold);line-height:1.45;color:var(--color-error)}
.field__error svg{flex:none;width:16px;height:16px;margin-top:2px}
/* optional block: native <details>, closed by default; JS opens it when an error is inside */
.glass-quote__more{border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}
.glass-quote__more>summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:3.5rem;padding-block:var(--space-3);cursor:pointer;list-style:none}
.glass-quote__more>summary::-webkit-details-marker{display:none}
.glass-quote__more>summary::marker{content:""}
.glass-quote__more-title{display:block;font:var(--fw-bold) var(--text-md)/1.3 var(--font-display)}
.glass-quote__more-title .field__opt{font-family:var(--font)}
.glass-quote__more-sub{display:block;font-size:var(--text-sm);color:var(--color-muted)}
.glass-quote__more-icon{flex:none;width:1.75rem;height:1.75rem;border:2px solid var(--color-primary);border-radius:50%;position:relative}
.glass-quote__more-icon::before,.glass-quote__more-icon::after{content:"";position:absolute;left:50%;top:50%;width:.75rem;height:2px;margin:-1px 0 0 -.375rem;background:var(--color-primary)}
.glass-quote__more-icon::after{transform:rotate(90deg)}
.glass-quote__more[open]>summary .glass-quote__more-icon::after{transform:none}
.glass-quote__more-body{padding:var(--space-2) 0 var(--space-8)}
/* submit area: disclosure -> consent -> (sms) -> submit -> privacy -> feedback (02 D6 order) */
.glass-quote__disclosure{margin:0;padding:var(--space-4);border-radius:var(--radius-sm);background:var(--color-surface-2);font-size:var(--text-sm);line-height:1.5;overflow-wrap:anywhere}
.glass-quote__consent{margin:var(--space-3) 0 0;font-size:var(--text-sm);line-height:1.5;color:var(--color-muted);overflow-wrap:anywhere}
.glass-quote__sms{margin-top:var(--space-3);font-size:var(--text-sm)}
.glass-quote__hp,.field .glass-quote__hp{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;min-height:0;overflow:hidden}
.glass-quote__submit{margin-top:var(--space-5);width:100%}
@media (min-width:37.5rem){.glass-quote__submit{width:auto;min-width:16rem}}
.glass-quote__privacy{margin:var(--space-3) 0 0;font-size:var(--text-sm);line-height:1.5;color:var(--color-muted)}
.glass-quote__feedback:empty{display:none}
.glass-quote__feedback{margin-top:var(--space-4);padding:var(--space-4);border-radius:var(--radius-sm);font-size:var(--text-sm);line-height:1.5}
.glass-quote__feedback p{margin:0}
.glass-quote__feedback p+p{margin-top:var(--space-2)}
.glass-quote__feedback.is-success{background:var(--color-success-bg);border-left:4px solid var(--color-success);color:var(--color-text)}
.glass-quote__feedback.is-error{background:var(--color-error-bg);border-left:4px solid var(--color-error);color:var(--color-error)}
/* the submit row is a plain full-width grid child (disclosure ... feedback stack inside it) */
.glass-quote__submitrow{min-width:0}

/* =====================================================================
   8. CARDS: frit-edge (no image slot) + cross-link chips + areas
   ===================================================================== */
.grid{display:grid;gap:var(--space-5)}
@media (min-width:37.5rem){.grid--4,.grid--3,.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:64rem){.grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}}
.card{position:relative;display:flex;flex-direction:column;min-width:0;background:var(--color-page);border:1px solid var(--color-border);border-radius:var(--radius-glass);padding:calc(var(--frit-band) + var(--frit-depth) + var(--space-4)) var(--space-5) var(--space-5);transition:border-color var(--transition-fast)}
.card::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;height:calc(var(--frit-band) + var(--frit-depth));border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--frit-edge-down)}
.card:hover{border-color:var(--color-primary)}
.card:focus-within{outline:2px solid var(--color-focus);outline-offset:3px}
.card .card__title{margin:0;font-size:var(--text-lg);line-height:1.2;letter-spacing:0;overflow-wrap:anywhere}
.card .card__title a{color:var(--color-text);text-decoration:none}
.card__link::after{content:"";position:absolute;inset:0;border-radius:inherit}
.card__link:focus-visible{outline:none}
.card:hover .card__title a{text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:3px}
.card .card__excerpt{margin:var(--space-3) 0 var(--space-5);font-size:1rem;line-height:1.5;color:var(--color-muted);overflow-wrap:anywhere}
.card .card__cta{margin-top:auto;display:inline-flex;align-items:center;gap:var(--space-2);font:var(--fw-bold) .9375rem/1.2 var(--font-display);color:var(--color-text);text-decoration:none}
.card .card__cta svg{flex:none;width:1em;height:1em}
.card .entry-meta{margin:var(--space-2) 0 0}
/* cross-link chips: silo lists, "Choose the glass" */
.silo,.local-areas{padding-block:var(--space-12)}
.silo__heading,.local-areas__heading{margin-bottom:var(--space-6)}
.silo__links{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.silo__links .silo__link,.silo__links-item{display:inline-flex;align-items:center;gap:var(--space-2);min-height:2.75rem;padding:var(--space-1) var(--space-4);border:1px solid var(--color-field-border);border-radius:var(--radius-sm);background:var(--color-page);color:var(--color-text);text-decoration:none;font-weight:var(--fw-semibold);font-size:1rem;line-height:1.25;transition:background-color var(--transition-fast),border-color var(--transition-fast)}
.silo__links .silo__link:hover{background:var(--color-surface);border-color:var(--color-primary)}
.silo__links .silo__link[aria-current=page]{box-shadow:inset 0 0 0 1px var(--color-primary);border-color:var(--color-primary)}
.silo__links-item{color:var(--color-muted);border-style:dashed}
.silo--glass .silo__links .silo__link{gap:var(--space-3);padding-left:var(--space-3)}
.silo__label{min-width:0}
/* areas: plain text chips + the dormant area checker */
.area-chips{display:flex;flex-wrap:wrap;gap:var(--space-2);list-style:none;margin:0;padding:0}
.area-chips li{padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-sm);line-height:1.5}
.area-check{display:flex;flex-wrap:wrap;align-items:stretch;gap:var(--space-3);max-width:35rem;margin:var(--space-8) 0 0}
.area-check__label{display:block;flex:1 1 14rem;min-width:0}
.area-check input[type=search]{display:block;width:100%;min-height:3rem;padding:.625rem .875rem;border:1px solid var(--color-field-border);border-radius:var(--radius-sm);background:var(--color-page);color:var(--color-text);font:var(--fw-normal) 1rem/1.4 var(--font)}
.area-check input[type=search]:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-color:var(--color-primary)}
.area-check .btn{flex:none}
.area-check__result{max-width:35rem;margin:var(--space-6) 0 0;padding:var(--space-4) var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-page)}
.area-check__result.is-yes{border:0;border-left:4px solid var(--color-primary);background:var(--color-surface)}
.area-check__result.is-yes .btn--primary{border-color:var(--color-cta-edge-tint)}
.area-check__msg{margin:0 0 var(--space-3);font-weight:var(--fw-semibold);color:var(--color-text)}

/* =====================================================================
   9. FAQ module (faq_items meta; details + h3; measure on the children so
      the module aligns whether or not it wraps its own .container)
   ===================================================================== */
.faq{padding-block:var(--space-16)}
@media (min-width:64rem){.faq{padding-block:var(--space-20)}}
.section+.faq,.faq+.section{padding-top:0}
.container>.faq{padding-block:0;margin-top:var(--space-16)}
.container>.faq:first-child{margin-top:0}
.faq__heading{margin:0 0 var(--space-5);max-width:var(--measure);font-size:var(--h2-size);line-height:var(--lh-heading);letter-spacing:var(--track-h2)}
.faq__list{max-width:var(--measure);border-top:1px solid var(--color-border)}
.faq__item{border-bottom:1px solid var(--color-border)}
.faq__item[open]{background:var(--color-surface)}
.faq__summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:3.5rem;padding:var(--space-3);cursor:pointer;list-style:none}
.faq__summary::-webkit-details-marker{display:none}
.faq__summary::marker{content:""}
.faq__summary .faq__question{margin:0;font-size:var(--text-md);line-height:1.3;letter-spacing:0}
/* the chevron: a 28px ink disc with a CSS-drawn white chevron (the span stays empty) */
.faq__chevron{flex:none;width:1.75rem;height:1.75rem;border-radius:50%;background:var(--color-primary);position:relative}
.faq__chevron svg{display:none}
.faq__chevron::before{content:"";position:absolute;left:50%;top:45%;width:7px;height:7px;border-right:2px solid var(--color-on-dark);border-bottom:2px solid var(--color-on-dark);transform:translate(-50%,-50%) rotate(45deg)}
.faq__item[open] .faq__chevron::before{top:58%;transform:translate(-50%,-50%) rotate(-135deg)}
.faq__answer{padding:0 var(--space-3) var(--space-5)}
.faq__answer p{margin:0}
.faq__answer p+p{margin-top:var(--space-3)}

/* =====================================================================
   10. CTA BANNER (tint) · breadcrumbs · pagination · search form
   ===================================================================== */
.cta-banner{position:relative;margin-block:var(--space-16);padding:calc(var(--frit-band) + var(--frit-depth) + var(--space-8)) var(--space-6) var(--space-8);background:var(--color-surface);border-radius:var(--radius-glass)}
.cta-banner::before{content:"";position:absolute;top:0;left:0;right:0;height:calc(var(--frit-band) + var(--frit-depth));border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--frit-edge-down)}
.cta-banner__title{margin:0;font-family:var(--font-display);font-weight:var(--fw-bold);font-style:var(--headline-style);font-synthesis:none;font-size:var(--h2-size);line-height:var(--lh-heading);letter-spacing:var(--track-h2);overflow-wrap:anywhere}
.cta-banner__text{margin:var(--space-3) 0 0;max-width:var(--measure);overflow-wrap:anywhere}
.cta-banner__actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-6)}
@media (max-width:29.99rem){.cta-banner__actions .btn{width:100%;white-space:normal}}
/* breadcrumbs: ancestry only; the separator is a 4.2px ink dot */
.breadcrumbs{margin:0 0 var(--space-4);font-size:var(--text-sm)}
.breadcrumbs__list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);list-style:none;margin:0;padding:0}
.breadcrumbs__item{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--color-muted);overflow-wrap:anywhere}
.breadcrumbs__item+.breadcrumbs__item::before{content:"";flex:none;width:4.2px;height:4.2px;border-radius:50%;background:var(--color-primary)}
.breadcrumbs__item a{color:var(--color-text)}
.breadcrumbs__item [aria-current]{color:var(--color-muted)}
/* pagination: core markup (+ the plugin's [wrr_posts] pagination) */
.pagination{margin-top:var(--space-12)}
.pagination .nav-links,.wrr-posts__pagination{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.wrr-posts__pagination{margin-top:var(--space-8)}
.pagination .page-numbers,.wrr-posts__pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:2.75rem;height:2.75rem;padding:0 var(--space-3);border:1px solid var(--color-field-border);border-radius:var(--radius-sm);background:var(--color-page);color:var(--color-text);text-decoration:none;font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;transition:background-color var(--transition-fast)}
.pagination a.page-numbers:hover,.wrr-posts__pagination a.page-numbers:hover{background:var(--color-surface)}
.pagination .page-numbers.current,.wrr-posts__pagination .page-numbers.current{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-dark)}
.pagination .page-numbers.dots,.wrr-posts__pagination .page-numbers.dots{border-color:transparent;background:transparent}
/* comments.php prints core the_comments_navigation() (comments are off site-wide; prose-level rule only) */
.comment-navigation .nav-links{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-4);margin-block:var(--space-6)}
/* search form: core markup; the submit takes the secondary look */
.search-form{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-6);max-width:34rem}
.search-form label{flex:1 1 12rem;min-width:0}
.search-form .search-field{display:block;width:100%;min-height:3rem;padding:.625rem .875rem;border:1px solid var(--color-field-border);border-radius:var(--radius-sm);font:var(--fw-normal) 1rem/1.4 var(--font);color:var(--color-text);background:var(--color-page)}
.search-form .search-field:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-color:var(--color-primary)}
.search-form .search-submit{min-height:3rem;padding:0 var(--space-6);border:2px solid var(--color-primary);border-radius:var(--radius-sm);background:transparent;color:var(--color-primary);font:var(--fw-bold) 1rem/1.2 var(--font-display);font-synthesis:none;cursor:pointer;transition:background-color var(--transition-fast)}
.search-form .search-submit:hover{background:var(--color-surface)}
.search-form .search-submit:active{background:var(--color-surface-active)}

/* =====================================================================
   11. FOOTER (ink, ramped top) + sticky quote bar
   ===================================================================== */
.site-footer{position:relative;margin-top:calc(var(--frit-depth) + var(--space-8));background:var(--color-primary);color:var(--color-on-dark);padding-block:var(--space-14) var(--space-8);overflow-wrap:anywhere}
.site-footer::before{content:"";position:absolute;left:0;right:0;bottom:100%;height:var(--frit-depth);background:var(--frit-ramp-up)}
/* :not(.btn) matches the weight of the generic .on-dark link rule, so the footer's own values win */
.site-footer a:not(.btn){color:var(--color-on-dark);text-decoration-color:var(--color-dark-border)}
.site-footer a:not(.btn):hover{color:var(--color-accent-on-dark);text-decoration-color:var(--color-accent-on-dark)}
.footer-grid{display:grid;gap:var(--space-10)}
@media (min-width:37.5rem){.footer-grid{grid-template-columns:1fr 1fr}.footer-col--brand{grid-column:1/-1}}
@media (min-width:64rem){.footer-grid{grid-template-columns:4fr 5fr 2fr}.footer-col--brand{grid-column:auto}}
.footer-col{min-width:0}
.footer-wordmark{margin:0;font:var(--fw-bold) 1.25rem/1.1 var(--font-display);letter-spacing:-.005em}
.footer-wordmark__part{display:inline}
.footer-wordmark__part:last-child{display:block;color:var(--color-accent-on-dark)}
.footer-tagline{margin:var(--space-4) 0 0;color:var(--color-on-dark-muted);max-width:28rem}
.footer-widget__title{margin:0 0 var(--space-3);font-size:1rem;line-height:1.3;letter-spacing:0;color:var(--color-on-dark)}
.footer-menu{list-style:none;margin:0;padding:0}
@media (min-width:37.5rem){.footer-menu--2{columns:2;column-gap:var(--space-6)}}
.footer-menu li{break-inside:avoid}
.footer-menu a{display:inline-flex;align-items:center;min-height:2.75rem;text-decoration:none}
.footer-menu a:hover{text-decoration:underline}
.footer-social{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-5)}
.footer-social a{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border:1px solid var(--color-dark-border);border-radius:var(--radius-sm);color:var(--color-on-dark);transition:border-color var(--transition-fast)}
.footer-social a:hover{border-color:var(--color-on-dark);color:var(--color-on-dark)}
.footer-social a svg{width:1.25rem;height:1.25rem}
.footer-disclosure{margin-top:var(--space-10);font-size:var(--text-sm);line-height:1.55;color:var(--color-on-dark-muted)}
.footer-disclosure p{margin:0 0 var(--space-3);max-width:62rem}
.footer-disclosure__lead{padding-top:var(--space-6);border-top:1px solid var(--color-dark-border);color:var(--color-on-dark)}
.footer-bottom{margin-top:var(--space-6);font-size:var(--text-sm);color:var(--color-on-dark-muted);display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-6)}
.footer-bottom p{margin:0}
/* sticky quote bar (< 1024): one action, hidden while #glass-quote is in view */
.sticky-bar{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-sticky-bar);display:flex;align-items:center;min-height:var(--sticky-bar-h);padding:var(--space-3) var(--gutter) calc(var(--space-3) + env(safe-area-inset-bottom,0px));background:var(--color-primary);border-top:1px solid var(--color-dark-border)}
.sticky-bar.is-hidden{transform:translateY(110%);visibility:hidden}
body.has-sticky-bar{padding-bottom:calc(var(--sticky-bar-h) + env(safe-area-inset-bottom,0px))}
@media (min-width:64rem){.sticky-bar{display:none}body.has-sticky-bar{padding-bottom:0}}

/* =====================================================================
   12. POSTS, TOOL TEMPLATES AND DORMANT MODULES (8.7, 8.16)
       Dormant modules are OFF or empty by default and render nothing on
       this site today. Restyled with tokens only: no uppercase, no mono,
       no shadows, no new motif. Boxes = card geometry without the frit band.
   ===================================================================== */
/* 12.1 posts, archive, search results, author archive, sidebar */
.entry-header{margin:0}
.entry-meta{margin:var(--space-3) 0 0;font-size:var(--text-sm);color:var(--color-muted);font-variant-numeric:tabular-nums}
.post-thumb{margin:0 0 var(--space-8)}
.post-thumb img{display:block;width:100%;height:auto;border-radius:var(--radius-glass)}
.post-list{display:grid;gap:var(--space-5)}
@media (min-width:37.5rem){.post-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:64rem){.post-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
.comments-area{max-width:var(--measure);margin-top:var(--space-16)}
.comments-title{font-size:var(--h3-size);line-height:var(--lh-snug)}
.comment-list{list-style:none;margin:0 0 var(--space-6);padding:0}
.comment-list li{padding:var(--space-4) 0;border-top:1px solid var(--color-border)}
.comment-list p{margin:0 0 var(--space-3)}
.no-comments{font-size:var(--text-sm);color:var(--color-muted)}
.widget-area,.blog-sidebar{display:grid;gap:var(--space-6);font-size:1rem}
.widget{margin:0}
.widget__title{margin:0 0 var(--space-3);font-size:var(--text-md);line-height:var(--lh-snug);letter-spacing:0}
.widget ul{list-style:none;margin:0;padding:0}
.widget li{padding-block:var(--space-1)}
/* 12.2 tool templates (page-tool.php, header-tool.php, footer-tool.php) */
.tool-header{background:var(--color-page);border-bottom:1px solid var(--color-border)}
.tool-header__inner{display:flex;align-items:center;justify-content:center;min-height:3.5rem;padding-block:var(--space-2)}
.tool-header .custom-logo{display:block;width:auto;max-height:2.25rem}
.tool-header__title{margin:0;font:var(--fw-bold) var(--text-md)/1.2 var(--font-display);font-synthesis:none;overflow-wrap:anywhere}
.tool-header__title a{color:var(--color-text);text-decoration:none}
.tool-page__inner{max-width:calc(var(--width-content) + 2 * var(--gutter));padding-block:var(--space-8) var(--space-12)}
.tool-page__title{margin:0 0 var(--space-6);font-size:var(--h2-size);line-height:var(--lh-heading);letter-spacing:var(--track-h2)}
.tool-footer{margin-top:var(--space-8);padding-block:var(--space-6);background:var(--color-primary);color:var(--color-on-dark-muted);font-size:var(--text-sm)}
.tool-footer__inner{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-4)}
.tool-footer__inner p{margin:0}
.tool-footer a{color:var(--color-on-dark)}
.tool-footer :focus-visible{outline-color:var(--color-focus-on-dark)}
/* 12.3 shared box geometry for dormant modules */
.author-box,.contact-info,.project-card,.team-card,.testimonial,.guarantee,.directory__card{background:var(--color-page);border:1px solid var(--color-border);border-radius:var(--radius-glass)}
/* 12.4 trust signals (lists empty, toggles OFF; stars never render) */
.trust-bar{background:var(--color-page);border-block:1px solid var(--color-border)}
.trust-bar__inner{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4) var(--space-8);padding-block:var(--space-5)}
.trust-rating{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:var(--fw-semibold)}
.stars{display:inline-flex;color:var(--color-star)}
.stars svg{flex:none;width:1.1em;height:1.1em}
.trust-metric{display:flex;flex-direction:column;gap:2px}
.trust-metric__value{font:var(--fw-bold) var(--text-lg)/1.1 var(--font-display);font-synthesis:none;font-variant-numeric:tabular-nums}
.trust-metric__label{font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--color-muted)}
.trust-chip{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-sm)}
.trust-badges{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3) var(--space-6);padding-block:var(--space-4)}
.trust-badge{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--fw-semibold);line-height:1.3}
.trust-badge svg{flex:none;width:1.125rem;height:1.125rem;color:var(--color-primary)}
/* 12.5 testimonials + [data-carousel] (JS shows one slide at a time when motion is allowed) */
.testimonials{padding-block:var(--space-16)}
.testimonials__track{display:grid;gap:var(--space-5)}
@media (min-width:37.5rem){.testimonials__track{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:64rem){.testimonials__track{grid-template-columns:repeat(3,minmax(0,1fr))}}
.testimonial{margin:0;padding:var(--space-6)}
.testimonial__text{margin:0 0 var(--space-4);padding:0;border:0;font-size:var(--text-md);line-height:1.5}
.testimonial__text p{margin:0 0 var(--space-3)}
.testimonial figcaption{font-size:var(--text-sm)}
.testimonial__author{font-weight:var(--fw-semibold)}
.testimonial__location{color:var(--color-muted)}
/* 12.6 E-E-A-T: author box, fact check, freshness */
.author-box{display:flex;flex-wrap:wrap;gap:var(--space-6);margin-block:var(--space-12);padding:var(--space-6)}
.author-box__photo img{display:block;width:96px;height:96px;border-radius:50%;object-fit:cover}
.author-box__body{flex:1 1 15rem;min-width:0}
.author-box__eyebrow{display:block;margin-bottom:var(--space-1);font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--color-muted)}
.author-box .author-box__name{margin:0 0 var(--space-2);font-size:var(--h3-size);line-height:var(--lh-snug)}
.author-box__creds{margin:0 0 var(--space-3);font-size:var(--text-sm);font-weight:var(--fw-semibold)}
.author-box__bio p{margin:0 0 var(--space-3)}
.author-box__social{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}
.author-box__social a{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border:1px solid var(--color-field-border);border-radius:var(--radius-sm);color:var(--color-primary)}
.author-box__social a:hover{background:var(--color-surface)}
.author-box__social svg{width:1.125rem;height:1.125rem}
.author-box__all{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:var(--fw-semibold)}
.author-box__all svg{flex:none;width:1em;height:1em}
.fact-check{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin:var(--space-3) 0;font-size:var(--text-sm);color:var(--color-muted)}
.fact-check>svg{flex:none;width:1.1em;height:1.1em;color:var(--color-primary)}
.fact-check a{color:var(--color-text)}
.fact-check__details{display:inline-flex;align-items:center}
.fact-check__details summary{display:inline-flex;align-items:center;justify-content:center;min-width:2.75rem;min-height:2.75rem;cursor:pointer;list-style:none;color:var(--color-primary)}
.fact-check__details summary::-webkit-details-marker{display:none}
.fact-check__details summary::marker{content:""}
.fact-check__details summary svg{width:1.1em;height:1.1em}
.fact-check__panel{position:absolute;top:calc(100% + var(--space-2));left:0;z-index:var(--z-raised);min-width:16rem;max-width:min(26rem,calc(100vw - 2 * var(--gutter)));padding:var(--space-4);background:var(--color-page);border:1px solid var(--color-field-border);border-radius:var(--radius-sm);color:var(--color-text)}
.fact-check__panel p{margin:0 0 var(--space-2)}
.fact-check__panel p:last-child{margin-bottom:0}
.freshness{display:flex;align-items:center;gap:var(--space-2);margin:var(--space-3) 0;font-size:var(--text-sm);color:var(--color-muted);font-variant-numeric:tabular-nums}
.freshness svg{flex:none;width:1em;height:1em}
/* 12.7 projects, credentials, awards, guarantees, team */
.projects{padding-block:var(--space-16)}
.projects__grid,.team-grid{display:grid;gap:var(--space-5)}
@media (min-width:37.5rem){.projects__grid,.team-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:64rem){.projects__grid,.team-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.project-card{display:flex;flex-direction:column;overflow:hidden}
.project-card__images{display:grid;grid-template-columns:1fr 1fr;gap:2px}
.project-card__images figure{position:relative;margin:0}
.project-card__images img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.project-card__images figcaption{position:absolute;left:var(--space-2);bottom:var(--space-2);padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--color-primary);color:var(--color-on-dark);font-size:var(--text-xs);font-weight:var(--fw-semibold)}
.project-card__body{padding:var(--space-5)}
.project-card__meta{margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--color-muted)}
.project-card .card__title{margin:0;font-size:var(--text-lg);line-height:1.2}
.project-card .card__title a{color:var(--color-text);text-decoration:none}
.project-card .card__title a:hover{text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:3px}
.project-card .card__excerpt{margin:var(--space-3) 0;font-size:1rem;color:var(--color-muted)}
.project-card .card__cta{font:var(--fw-bold) .9375rem/1.2 var(--font-display)}
.credentials{display:flex;flex-wrap:wrap;gap:var(--space-3);padding-block:var(--space-8)}
.credential{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-page)}
.credential svg{flex:none;width:1.25rem;height:1.25rem;color:var(--color-primary)}
.credential__value{font-weight:var(--fw-semibold)}
.awards{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-8);padding-block:var(--space-8)}
.awards img{display:block;width:auto;max-height:44px}
.guarantees{display:grid;gap:var(--space-5);padding-block:var(--space-8)}
@media (min-width:37.5rem){.guarantees{grid-template-columns:repeat(3,minmax(0,1fr))}}
.guarantee{padding:var(--space-5)}
.guarantee svg{display:block;width:1.75rem;height:1.75rem;margin-bottom:var(--space-2);color:var(--color-primary)}
.team-card{padding:var(--space-6)}
.team-card__photo img{display:block;width:96px;height:96px;margin:0 0 var(--space-4);border-radius:50%;object-fit:cover}
.team-card .card__excerpt{margin:0;font-size:1rem;color:var(--color-muted)}
/* 12.8 contact list, map embed */
.contact-info{padding:var(--space-6)}
.contact-list{display:grid;gap:var(--space-3);list-style:none;margin:0;padding:0}
.contact-list li{display:flex;align-items:flex-start;gap:var(--space-3);overflow-wrap:anywhere}
.contact-list svg{flex:none;width:1.125rem;height:1.125rem;margin-top:.2em;color:var(--color-primary)}
.map-embed{padding-block:var(--space-12)}
.wrr-map{margin-top:var(--space-8)}
.map-embed iframe,.wrr-map iframe{display:block;width:100%;min-height:20rem;border:1px solid var(--color-border);border-radius:var(--radius-glass)}
/* 12.9 promo bar (expires client-side via data-until), open-now badge (hours ship empty) */
.promo-bar{display:block;background:var(--color-primary);color:var(--color-on-dark);font-size:var(--text-sm);font-weight:var(--fw-semibold);line-height:1.4;text-align:center}
.promo-bar__inner{display:block;padding-block:var(--space-2)}
a.promo-bar{color:var(--color-on-dark);text-decoration:none}
a.promo-bar:hover{color:var(--color-on-dark);text-decoration:underline;text-decoration-color:var(--color-accent-on-dark)}
a.promo-bar:focus-visible{outline-color:var(--color-focus-on-dark);outline-offset:-4px}
.open-now{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--fw-semibold)}
.open-now__dot{flex:none;width:.5625rem;height:.5625rem;border-radius:50%;background:var(--color-muted)}
.open-now.is-open .open-now__dot{background:var(--color-success)}
.open-now__next{font-weight:var(--fw-normal);color:var(--color-muted)}
/* 12.10 read-more (JS-gated: no JS shows everything); the button is .btn--secondary */
.readmore__btn{display:none;margin-top:var(--space-6)}
.readmore--center{text-align:center}
.readmore--right{text-align:right}
.readmore__visible,.readmore__hidden,.readmore__inner{text-align:left}
.js .readmore.is-ready .readmore__btn{display:inline-flex}
.js .readmore--block.is-ready .readmore__btn{display:flex;width:100%}
.js .readmore.is-collapsed .readmore__hidden{display:none}
.readmore--height{position:relative}
.js .readmore--height.is-collapsed .readmore__inner{max-height:var(--readmore-h,480px);overflow:hidden;-webkit-mask-image:linear-gradient(180deg,var(--color-primary) 70%,transparent);mask-image:linear-gradient(180deg,var(--color-primary) 70%,transparent)}
/* 12.11 video facade (click-to-load) */
a.video-facade{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);min-height:12rem;margin-top:var(--space-4);padding:var(--space-8) var(--space-4);border-radius:var(--radius-glass);background:var(--color-primary);color:var(--color-on-dark);font-size:var(--text-sm);font-weight:var(--fw-semibold);text-align:center;text-decoration:none}
a.video-facade:hover{color:var(--color-on-dark)}
.video-facade__play{display:inline-flex;align-items:center;justify-content:center;width:3.5rem;height:3.5rem;border-radius:50%;background:var(--color-cta-bg);color:var(--color-cta-fg);transition:background-color var(--transition-fast)}
a.video-facade:hover .video-facade__play{background:var(--color-cta-bg-hover-dark);color:var(--color-primary)}
.video-facade__play svg{width:1.25rem;height:1.25rem;margin-left:2px}
.video-embed{margin-top:var(--space-4)}
.video-embed iframe{display:block;width:100%;height:auto;aspect-ratio:16/9;border:0;border-radius:var(--radius-glass)}
/* 12.12 directory listing (featured spot and directory OFF) */
.directory{padding-block:var(--space-16)}
.directory__heading{margin-bottom:var(--space-8)}
.directory__list{display:grid;gap:var(--space-5)}
@media (min-width:37.5rem){.directory__list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:64rem){.directory__list{grid-template-columns:repeat(3,minmax(0,1fr))}}
.directory__card{position:relative;display:flex;flex-direction:column;gap:var(--space-3);min-width:0;padding:var(--space-6);transition:border-color var(--transition-fast)}
.directory__card:hover{border-color:var(--color-primary)}
.directory__card--featured{border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}
.directory__card .directory__name{margin:0;font-size:var(--text-lg);line-height:1.2;letter-spacing:0;overflow-wrap:anywhere}
.directory__rating{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums}
.directory__desc{margin:0;font-size:var(--text-sm);line-height:1.5;color:var(--color-muted)}
.directory__meta{display:flex;align-items:flex-start;gap:var(--space-2);margin:0;font-size:var(--text-sm);color:var(--color-muted);overflow-wrap:anywhere}
.directory__icon{display:inline-flex;flex:none;margin-top:.2em;color:var(--color-primary)}
.directory__icon svg{width:1em;height:1em}
.directory__actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:auto;padding-top:var(--space-3)}
.directory__actions .directory__action{display:inline-flex;align-items:center;gap:var(--space-2);min-height:2.75rem;padding:0 var(--space-4);border:2px solid var(--color-primary);border-radius:var(--radius-sm);background:transparent;color:var(--color-primary);font:var(--fw-bold) .9375rem/1.2 var(--font-display);font-synthesis:none;text-decoration:none;transition:background-color var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}
.directory__actions .directory__action:hover{background:var(--color-surface)}
.directory__actions .directory__action--call{background:var(--color-cta-bg);border-color:var(--color-cta-edge);color:var(--color-cta-fg)}
.directory__actions .directory__action--call:hover{background:var(--color-cta-bg-hover);border-color:var(--color-cta-bg-hover);color:var(--color-cta-fg-hover)}
.directory__action svg{flex:none;width:1em;height:1em}
/* 12.13 affiliate layer (OFF): .affiliate-link is the button, .affiliate-disclosure the note */
.affiliate-link[target="_blank"]::after{content:"\2197";margin-left:.25em;font-size:.85em;line-height:1}
.affiliate-disclosure{margin:0;font-size:var(--text-sm);line-height:var(--lh-snug);color:var(--color-muted);max-width:var(--measure)}
.site-footer .affiliate-disclosure{color:var(--color-on-dark-muted)}

/* =====================================================================
   13. MOTION: CSS transitions on controls only; no keyframe animation; the frit,
       canopy, blackout, icons and header height never move.
   ===================================================================== */
@media (prefers-reduced-motion:no-preference){
  html{scroll-behavior:smooth}
  .sticky-bar{transition:transform var(--transition),visibility 0s linear 0s}
  .sticky-bar.is-hidden{transition:transform var(--transition),visibility 0s linear .18s}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:0s!important;transition-delay:0s!important;animation-duration:0s!important;scroll-behavior:auto!important}
}
