/**
 * Lawrence Air & Heat — the Playbook stylesheet, on theme tokens.
 *
 * Design TOKENS live in theme.json. This file is the Playbook's site.css
 * (demos/lawrence-air-heat/output/assets/site.css in yd-website-playbook)
 * ported verbatim, with every colour, font, radius and the container width
 * resolved to a --wp--preset--* / --wp--custom--* token. Component class names
 * are the Playbook's own, carried on the blocks as `className`, so a section
 * looks the same here as in the approved static build.
 *
 * Three adaptations to how WordPress serializes blocks, applied by the port:
 *   - an image's class lands on its <figure>, so image rules target the <img>
 *     inside it (`.hero__img img`);
 *   - `.btn` is a core/button: `.btn--call/--primary/--outline/--onnavy` are the
 *     button block styles `call` / `fill` / `outline` / `onnavy`;
 *   - flow layouts add a block-gap margin to every child; inside the theme's
 *     wrappers that margin is zeroed, because the Playbook spaces every element
 *     itself. (Enqueued after global-styles so the zeroing wins.)
 */

/* ============ WordPress adapters ============ */
/* Balanced wrapping: a heading never leaves one word alone on its last line. */
:where(.lah-page, .lah-head, .lah-foot) :where(h1, h2, h3, h4) { text-wrap: balance; }
/* In-page links (the menus' "All services" -> #all-services) land below the sticky header. */
.lah-page [id] { scroll-margin-top: 96px; }

html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; overflow-x: hidden; }
*, *::before, *::after { box-sizing: border-box; }
:where(.lah-page, .lah-head, .lah-foot) :where(h1, h2, h3, h4, h5, h6, p, figure, ul, ol) { margin: 0; }
:where(.lah-page, .lah-head, .lah-foot) img { max-width: 100%; height: auto; display: block; }

/* The Playbook spaces every element itself: no flow-layout block-gap inside. */
:is(.lah-page, .lah-head, .lah-foot):where(.is-layout-flow, .is-layout-constrained) > *,
:is(.lah-page, .lah-head, .lah-foot) :where(.is-layout-flow, .is-layout-constrained) > * { margin-block-start: 0; margin-block-end: 0; }

/* No seams between header, page and footer (root block-gap). */
.wp-site-blocks > * + * { margin-block-start: 0; }
.wp-site-blocks > main .lah-page { margin-block: 0; }
.wp-block-post-content:has(> .lah-page) { margin-block: 0; }

/* core/image figures carry no margin of their own here. */
:where(.lah-page, .lah-head, .lah-foot) figure.wp-block-image { margin: 0; }
:where(.lah-page) .wp-block-list { margin: 0; }

/* A text block that holds one link (`<p><a class="tile">`) is just the link. */
.tile-grid > p, .chips > p, .brand-chips > p { margin: 0; }
:root .tile-grid > p { font-size: inherit; line-height: inherit; }
/* A grid of only links converts to one paragraph; keep `.prose h2 + p` off it. */
:root .prose p.tile-grid { margin-top: 8px; line-height: inherit; }
/* The card's "go" line and label were spans in the Playbook, outside `.post-card p`'s
   flex: as paragraphs the label would stretch and push each title down by a different amount. */
:root .post-card .post-card__go, :root .post-card p.post-card__meta { flex: 0 0 auto; }
/* The card's gap spaces its parts, as in the Playbook (whose headings have no margin);
   doubled class so it outranks `.prose h3` when the grid sits in an article column. */
:root .post-card.post-card > * { margin: 0; }
/* Short Playbook labels (a span or div) that convert to paragraphs: keep the
   card's own `p` rule off them so they keep the label's size and colour. */
:root .post-card p.post-card__go { font-size: 14.5px; line-height: inherit; color: var(--wp--preset--color--blue-deep); }
:root .rev-card p.rev-card__by { font-size: 14px; line-height: inherit; color: var(--wp--preset--color--ink); }
:root .svc-card p:has(> .svc-card__link) { font-size: 14px; line-height: inherit; }
:root .prose :is(p.fact, p.badge) { line-height: inherit; }
/* In-copy images: the figure takes the Playbook's `.prose > * + *` spacing slot,
   the <img> keeps its own 24px, so the figure adds none. A width="" attribute in
   the Playbook arrives as a lah-w-<n> class. */
:root .prose > figure.wp-block-image { margin-top: 0; }
:root .prose .lah-w-600 img { width: 600px; }
:root .prose .lah-w-900 img { width: 900px; }
:root .prose .lah-w-1200 img { width: 1200px; }
p:has(> .svc-card__link) { margin-top: auto; }

/* Lawrence Air & Heat — design system. (Every selector below carries a
   `:root` prefix: core's flow-layout `:root :where(.is-layout-flow) > :first-child`
   rule is 0,2,0 and would otherwise cancel the Playbook's first-child margins.)
   Extracted verbatim from the approved homepage; page-level components appended below.
   Every token here maps 1:1 to a theme.json setting for the WP FSE conversion. */
:root .container{max-width:var(--wp--custom--container);margin:0 auto;padding:0 var(--wp--custom--gutter)}
:root .eyebrow{font-family:var(--wp--preset--font-family--barlow);font-weight:600;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--wp--preset--color--blue);margin:0 0 14px}
:root :focus-visible{outline:3px solid var(--wp--preset--color--blue);outline-offset:2px;border-radius:4px}

/* buttons (shapes/labels unchanged — colors retuned per REVISION2 §2) */
:root .wp-block-button__link{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:var(--wp--preset--font-family--barlow);font-weight:700;font-size:16px;padding:14px 22px;border-radius:999px;border:2px solid transparent;cursor:pointer;transition:transform .12s ease,box-shadow .2s ease,background .2s ease;line-height:1;white-space:nowrap}
:root .wp-block-button__link:hover{transform:translateY(-1px)}
:root .wp-block-button.is-style-call .wp-block-button__link{background:var(--wp--preset--color--red);color:var(--wp--preset--color--white);box-shadow:0 12px 26px -14px rgba(192,57,43,.6)}
:root .wp-block-button.is-style-call .wp-block-button__link:hover{background:var(--wp--preset--color--red-deep)}
:root .wp-block-button.is-style-fill .wp-block-button__link{background:var(--wp--preset--color--blue-btn);color:var(--wp--preset--color--white);box-shadow:0 12px 26px -16px rgba(51,122,183,.6)}
:root .wp-block-button.is-style-fill .wp-block-button__link:hover{background:var(--wp--preset--color--blue-btn-hover)}
:root .wp-block-button.is-style-outline .wp-block-button__link{background:transparent;color:var(--wp--preset--color--blue);border-color:var(--wp--preset--color--line-2)}
:root .wp-block-button.is-style-outline .wp-block-button__link:hover{border-color:var(--wp--preset--color--blue);background:var(--wp--preset--color--blue-soft)}
:root .wp-block-button.is-style-onnavy .wp-block-button__link{background:var(--wp--preset--color--white);color:var(--wp--preset--color--blue-deep);border-color:var(--wp--preset--color--white)}
:root .wp-block-button.is-style-onnavy .wp-block-button__link:hover{background:var(--wp--preset--color--blue-soft)}
:root .wp-block-button__link svg{width:18px;height:18px}

/* labeled placeholder (kept available; real photos preferred) */
:root .ph{background:var(--wp--preset--color--surface-2);border:1px dashed var(--wp--preset--color--line-2);border-radius:var(--wp--custom--radius);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:200px;color:var(--wp--preset--color--ink-3);text-align:center;padding:20px}
:root .ph span{font-family:var(--wp--preset--font-family--barlow);font-weight:700;letter-spacing:.15em;font-size:12px;color:var(--wp--preset--color--blue-deep)}
:root .ph em{font-style:normal;font-size:13px;color:var(--wp--preset--color--ink-2);max-width:280px}

/* ============ UTILITY BAR (light) ============ */
:root .util{background:var(--wp--preset--color--blue-soft);color:var(--wp--preset--color--ink-2);border-bottom:1px solid var(--wp--preset--color--line)}
:root .util__in{max-width:var(--wp--custom--container);margin:0 auto;padding:8px var(--wp--custom--gutter);display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:13px}
:root .util__facts{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
:root .util__facts span{display:inline-flex;align-items:center;gap:8px;font-weight:500}
:root .util__facts .dot{width:4px;height:4px;border-radius:50%;background:var(--wp--preset--color--blue)}
:root .util__phone{font-family:var(--wp--preset--font-family--barlow);font-weight:800;color:var(--wp--preset--color--red);white-space:nowrap}
:root .util__phone:hover{color:var(--wp--preset--color--red-deep)}
@media(max-width:640px){:root .util__facts span:nth-child(n+3){display:none}}

/* ============ SITE HEADER (white) ============ */
:root .site-head{background:var(--wp--preset--color--white);border-bottom:1px solid var(--wp--preset--color--line);position:sticky;top:0;z-index:60}
:root .site-head__in{max-width:var(--wp--custom--container);margin:0 auto;padding:12px var(--wp--custom--gutter);display:flex;align-items:center;gap:20px}
:root .brand{display:flex;align-items:center;gap:11px}
:root .site-logo img{height:46px;width:auto;display:block}
:root .nav-desktop{display:flex;align-items:center;gap:26px;margin-left:auto}
:root .nav-desktop a{font-family:var(--wp--preset--font-family--barlow);font-weight:600;font-size:15px;color:var(--wp--preset--color--ink);position:relative;padding:4px 0}
:root .nav-desktop a:hover{color:var(--wp--preset--color--blue)}
:root .head-cta{display:flex;align-items:center;gap:14px}
:root .head-phone{font-family:var(--wp--preset--font-family--barlow);font-weight:800;font-size:18px;color:var(--wp--preset--color--red);display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
:root .head-phone:hover{color:var(--wp--preset--color--red-deep)}
:root .head-phone svg{width:18px;height:18px}
:root .nav-burger{display:none;flex-direction:column;justify-content:center;gap:5px;width:46px;height:46px;padding:0 12px;background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line-2);border-radius:10px;cursor:pointer;margin-left:auto}
:root .nav-burger span{display:block;height:2px;width:100%;background:var(--wp--preset--color--ink);border-radius:2px}

/* drawer */
:root .nav-backdrop{position:fixed;inset:0;background:transparent;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);opacity:0;visibility:hidden;transition:opacity .25s ease;z-index:70}
:root .nav-backdrop.is-open{opacity:1;visibility:visible;background:rgba(27,42,51,.5)}
:root .nav-drawer{position:fixed;top:0;right:0;height:100dvh;width:min(86vw,340px);background:var(--wp--preset--color--white);border-left:1px solid var(--wp--preset--color--line);box-shadow:-30px 0 60px -20px rgba(27,42,51,.35);transform:translateX(100%);transition:transform .3s ease;z-index:80;display:flex;flex-direction:column;padding:20px}
:root .nav-drawer.is-open{transform:translateX(0)}
:root .nav-drawer__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
:root .nav-drawer__label{font-family:var(--wp--preset--font-family--barlow);font-weight:600;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--wp--preset--color--blue)}
:root .nav-drawer__close{background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line-2);border-radius:8px;width:40px;height:40px;color:var(--wp--preset--color--ink);font-size:26px;line-height:1;cursor:pointer}
:root .nav-drawer__links{display:flex;flex-direction:column;margin-top:6px}
:root .nav-drawer__links a{font-family:var(--wp--preset--font-family--barlow);font-weight:600;font-size:18px;color:var(--wp--preset--color--ink);padding:15px 6px;border-bottom:1px solid var(--wp--preset--color--line)}
:root .nav-drawer__foot{margin-top:auto;display:flex;flex-direction:column;gap:12px;padding-top:18px}
/* the full desktop nav + phone + button genuinely does not fit between
   861-1069px (confirmed: every width in that range overflowed) - raised
   from 860px so the hamburger menu covers that dead zone instead of a
   broken, overflowing header. 1024px (iPad landscape) was inside the gap. */
/* WordPress: 1140px, not the Playbook's 1080px. The dropdown arrows and the
   wider crisp logo make the row ~60px longer than the Playbook's, and below
   1140px it can no longer hold logo + menu + phone + button on one line. */
@media(max-width:1140px){
  :root .nav-desktop,:root .head-cta{display:none}
  :root .nav-burger{display:flex}
}

/* ============ HERO (white, split) ============ */
:root .hero{background:var(--wp--preset--color--white);border-bottom:1px solid var(--wp--preset--color--line)}
:root .hero__in{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,5vw,64px);align-items:center;padding:clamp(48px,7vw,84px) var(--wp--custom--gutter);max-width:var(--wp--custom--container);margin:0 auto}
:root .hero__badge{display:inline-flex;align-items:center;gap:9px;background:var(--wp--preset--color--blue-soft);border:1px solid var(--wp--preset--color--line-2);border-radius:999px;padding:7px 15px;font-family:var(--wp--preset--font-family--barlow);font-weight:600;font-size:13px;color:var(--wp--preset--color--ink);margin-bottom:22px}
:root .hero__badge .pulse{width:9px;height:9px;border-radius:50%;background:var(--wp--preset--color--red);box-shadow:0 0 0 4px rgba(192,57,43,.18)}
:root .hero h1{font-size:clamp(34px,5.2vw,56px);color:var(--wp--preset--color--ink);max-width:16ch}
:root .hero h1 .hl{color:var(--wp--preset--color--blue)}
:root .hero__sub{font-size:clamp(17px,2vw,20px);color:var(--wp--preset--color--ink-2);margin-top:20px;max-width:44ch}
:root .hero__ctas{display:flex;gap:14px;margin-top:32px;flex-wrap:wrap}
:root .hero__trust{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:34px;padding-top:26px;border-top:1px solid var(--wp--preset--color--line);padding-left:0}
:root .hero__trust li{list-style:none;display:inline-flex;align-items:center;gap:8px;font-family:var(--wp--preset--font-family--barlow);font-weight:600;font-size:14px;color:var(--wp--preset--color--ink)}
:root .hero__trust svg{width:18px;height:18px;color:var(--wp--preset--color--ok);flex-shrink:0}
:root .hero__trust ul{display:contents}
:root .hero__media{position:relative}
:root .hero__img img{width:100%;height:100%;min-height:320px;max-height:460px;object-fit:cover;border-radius:var(--wp--custom--radius);box-shadow:var(--wp--custom--shadow)}
:root .hero__float{position:absolute;bottom:-18px;left:-14px;background:var(--wp--preset--color--white);border:1px solid var(--wp--preset--color--line);border-radius:var(--wp--custom--radius);box-shadow:var(--wp--custom--shadow);padding:14px 18px;display:flex;align-items:center;gap:12px;max-width:230px}
:root .hero__float .num{font-family:var(--wp--preset--font-family--barlow);font-weight:800;font-size:26px;color:var(--wp--preset--color--blue);line-height:1}
:root .hero__float .lbl{font-size:13px;color:var(--wp--preset--color--ink-2);line-height:1.35}
@media(max-width:860px){
  :root .hero__in{grid-template-columns:1fr;gap:32px}
  :root .hero__float{left:auto;right:-6px}
}

/* section scaffolding */
:root .section{padding:var(--wp--custom--section-space) 0}
:root .section--tint{background:var(--wp--preset--color--surface)}
:root .section__head{max-width:680px;margin:0 auto clamp(36px,5vw,54px);text-align:center}
:root .section__head h2{font-size:clamp(28px,4vw,44px)}
:root .section__head p{margin-top:16px;font-size:18px;color:var(--wp--preset--color--ink-2)}

/* ============ TRUST BAR (light) ============ */
:root .trustbar{background:var(--wp--preset--color--surface);border-bottom:1px solid var(--wp--preset--color--line)}
:root .trustbar__in{max-width:var(--wp--custom--container);margin:0 auto;padding:26px var(--wp--custom--gutter);display:grid;grid-template-columns:repeat(6,1fr);gap:18px}
:root .trustbar__item{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;color:var(--wp--preset--color--ink-2)}
:root .trustbar__item svg{width:26px;height:26px;color:var(--wp--preset--color--blue)}
:root .trustbar__item span{font-family:var(--wp--preset--font-family--barlow);font-weight:600;font-size:14px;color:var(--wp--preset--color--ink);line-height:1.25}
@media(max-width:860px){:root .trustbar__in{grid-template-columns:repeat(3,1fr);gap:22px 12px}}
@media(max-width:480px){:root .trustbar__in{grid-template-columns:repeat(2,1fr)}}

/* ============ SERVICES ============ */
:root .svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media(max-width:860px){:root .svc-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){:root .svc-grid{grid-template-columns:1fr}}
:root .svc-card{background:var(--wp--preset--color--white);border:1px solid var(--wp--preset--color--line);border-radius:var(--wp--custom--radius);padding:26px 24px;display:flex;flex-direction:column;gap:12px;transition:border-color .2s,box-shadow .2s,transform .12s}
:root .svc-card:hover{border-color:var(--wp--preset--color--blue);box-shadow:var(--wp--custom--shadow);transform:translateY(-2px)}
:root .svc-card__ic{width:48px;height:48px;border-radius:12px;background:var(--wp--preset--color--blue-soft);color:var(--wp--preset--color--blue);display:grid;place-items:center}
:root .svc-card__ic svg{width:26px;height:26px}
:root .svc-card__img img{width:100%;height:168px;object-fit:cover;border-radius:var(--wp--custom--radius-sm)}
:root .svc-card h3{font-size:20px;color:var(--wp--preset--color--ink)}
:root .svc-card p{font-size:15px;color:var(--wp--preset--color--ink-2)}
:root .svc-card__link{margin-top:auto;font-family:var(--wp--preset--font-family--barlow);font-weight:600;font-size:14px;color:var(--wp--preset--color--blue);display:inline-flex;align-items:center;gap:7px}
:root .svc-card__link svg{width:15px;height:15px;transition:transform .2s}
:root .svc-card:hover .svc-card__link svg{transform:translateX(3px)}

/* ============ WHY LAWRENCE ============ */
:root .why__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,60px);align-items:center}
@media(max-width:860px){:root .why__grid{grid-template-columns:1fr;gap:36px}}
:root .why__lead h2{font-size:clamp(28px,4vw,42px);color:var(--wp--preset--color--ink)}
:root .why__lead p{margin-top:18px;font-size:18px;color:var(--wp--preset--color--ink-2)}
:root .why__lead .middle{background:var(--wp--preset--color--blue-soft);border-left:4px solid var(--wp--preset--color--blue);border-radius:var(--wp--custom--radius-sm);padding:18px 20px;margin-top:24px;font-family:var(--wp--preset--font-family--barlow);font-weight:600;color:var(--wp--preset--color--ink);font-size:17px;line-height:1.5}
:root .guarantees{display:grid;gap:14px}
:root .g-item{display:flex;gap:14px;align-items:flex-start;background:var(--wp--preset--color--white);border:1px solid var(--wp--preset--color--line);border-radius:var(--wp--custom--radius);padding:18px 20px}
:root .g-item__ic{width:40px;height:40px;border-radius:10px;background:var(--wp--preset--color--blue-soft);color:var(--wp--preset--color--blue);display:grid;place-items:center;flex-shrink:0}
:root .g-item__ic svg{width:22px;height:22px}
:root .g-item h3{font-size:16px;color:var(--wp--preset--color--ink)}
:root .g-item p{font-size:14px;color:var(--wp--preset--color--ink-2);margin-top:3px}

/* ============ SERVICE AREAS ============ */
:root .areas__banner{border-radius:var(--wp--custom--radius);overflow:hidden;margin-bottom:clamp(28px,4vw,44px);box-shadow:var(--wp--custom--shadow)}
:root .areas__banner img{width:100%;height:clamp(180px,26vw,240px);object-fit:cover;object-position:50% 78%}
:root .areas__wrap{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(28px,4vw,52px);align-items:center}
@media(max-width:860px){:root .areas__wrap{grid-template-columns:1fr;gap:30px}}
:root .areas__intro h2{font-size:clamp(26px,3.6vw,40px);color:var(--wp--preset--color--ink)}
:root .areas__intro p{margin-top:16px;font-size:17px;color:var(--wp--preset--color--ink-2)}
:root .areas__intro .hq{display:inline-flex;align-items:center;gap:9px;margin-top:20px;font-family:var(--wp--preset--font-family--barlow);font-weight:600;color:var(--wp--preset--color--ink);font-size:15px}
:root .areas__intro .hq svg{width:20px;height:20px;color:var(--wp--preset--color--blue);flex-shrink:0}
:root .chips{display:flex;flex-wrap:wrap;gap:9px}
:root .chip{font-family:var(--wp--preset--font-family--barlow);font-weight:600;font-size:14px;color:var(--wp--preset--color--ink);background:var(--wp--preset--color--white);border:1px solid var(--wp--preset--color--line-2);border-radius:999px;padding:8px 15px;transition:background .15s,border-color .15s}
:root .chip:hover{background:var(--wp--preset--color--blue-soft);border-color:var(--wp--preset--color--blue)}
:root .chip--star{background:var(--wp--preset--color--blue);color:var(--wp--preset--color--white);border-color:var(--wp--preset--color--blue);display:inline-flex;align-items:center;gap:7px}
:root .chip--star svg{width:14px;height:14px;color:var(--wp--preset--color--amber)}
:root .areas__note{margin-top:20px;font-size:15px;color:var(--wp--preset--color--ink-2)}
:root .areas__note a{font-weight:600}

/* ============ REVIEWS ============ */
:root .rev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media(max-width:860px){:root .rev-grid{grid-template-columns:1fr}}
:root .rev-card{background:var(--wp--preset--color--white);border:1px solid var(--wp--preset--color--line);border-radius:var(--wp--custom--radius);padding:26px 24px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--wp--custom--shadow)}
:root .rev-card__stars{display:flex;gap:3px;color:var(--wp--preset--color--amber)}
:root .rev-card__stars svg{width:20px;height:20px}
:root .rev-card p{font-size:16px;color:var(--wp--preset--color--ink);line-height:1.55}
:root .rev-card__by{margin-top:auto;font-family:var(--wp--preset--font-family--barlow);font-weight:600;font-size:14px;color:var(--wp--preset--color--ink)}
:root .rev-card__by small{display:block;font-weight:500;color:var(--wp--preset--color--ink-3);font-size:12px;text-transform:uppercase;letter-spacing:.05em;margin-top:2px}
:root .rev-note{text-align:center;margin-top:30px;font-size:14px;color:var(--wp--preset--color--ink-2)}
:root .rev-actions{text-align:center;margin-top:20px}

/* ============ BRANDS ============ */
:root .brands__rec{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;background:var(--wp--preset--color--blue-soft);border:1px solid var(--wp--preset--color--line-2);border-radius:var(--wp--custom--radius);padding:26px;max-width:620px;margin:0 auto 26px}
:root .brands__badge img{width:82px;height:auto;border-radius:8px;flex-shrink:0}
:root .brands__rec .rec-body{display:flex;flex-direction:column;gap:12px;align-items:center;text-align:center;min-width:0}
:root .brands__rec .rec-body .badge{font-family:var(--wp--preset--font-family--barlow);font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--wp--preset--color--white);background:var(--wp--preset--color--blue-deep);border-radius:999px;padding:6px 13px;white-space:nowrap}
:root .brands__as-logo img{height:36px;width:auto}
:root .brands__rec .rec-body span,:root .brands__rec .rec-body > p:not(.badge){font-size:14px;color:var(--wp--preset--color--ink-2);line-height:1.6;max-width:44ch}
:root .brand-chips{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:820px;margin:0 auto}
:root .brand-chips .chip{background:var(--wp--preset--color--surface)}

/* ============ CTA BAND (the one solid blue field) ============ */
:root .ctaband{background:var(--wp--preset--color--blue);color:var(--wp--preset--color--white)}
:root .ctaband__in{max-width:900px;margin:0 auto;padding:var(--wp--custom--section-space) var(--wp--custom--gutter);text-align:center}
:root .ctaband h2{color:var(--wp--preset--color--white);font-size:clamp(30px,4.4vw,50px)}
:root .ctaband h2 .hl{color:var(--wp--preset--color--blue-soft)}
:root .ctaband p{color:var(--wp--preset--color--blue-soft);font-size:19px;margin-top:18px;max-width:50ch;margin-left:auto;margin-right:auto}
:root .ctaband__phone{display:inline-flex;align-items:center;gap:12px;margin-top:28px;font-family:var(--wp--preset--font-family--barlow);font-weight:800;font-size:clamp(30px,5vw,44px);color:var(--wp--preset--color--white)}
:root .ctaband__phone:hover{color:var(--wp--preset--color--blue-soft)}
:root .ctaband__phone svg{width:clamp(30px,5vw,42px);height:clamp(30px,5vw,42px);color:var(--wp--preset--color--blue-soft)}
:root .ctaband__actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:30px}
:root .ctaband__hours{margin-top:24px;font-size:14px;color:rgba(234,242,248,.9)}

/* ============ SITE FOOTER (blue-deep band) ============ */
:root .site-foot{background:var(--wp--preset--color--blue-deep);color:var(--wp--preset--color--white)}
:root .site-foot__top{max-width:var(--wp--custom--container);margin:0 auto;padding:clamp(44px,6vw,64px) var(--wp--custom--gutter);display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:36px}
@media(max-width:860px){:root .site-foot__top{grid-template-columns:1fr 1fr}}
@media(max-width:520px){:root .site-foot__top{grid-template-columns:1fr}}
:root .site-foot h3{font-family:var(--wp--preset--font-family--barlow);font-weight:700;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--wp--preset--color--blue-mist);margin-bottom:16px}
:root .foot-brand__name{font-family:var(--wp--preset--font-family--barlow);font-weight:800;font-size:20px;color:var(--wp--preset--color--white);letter-spacing:-.02em;line-height:1.05}
:root .foot-brand__name small{display:block;font-weight:600;font-size:11px;letter-spacing:.06em;color:var(--wp--preset--color--blue-mist);text-transform:uppercase;margin-top:3px}
:root .foot-brand p{margin-top:16px;font-size:14px;color:rgba(255,255,255,.85);line-height:1.6;max-width:34ch}
:root .foot-nap{margin-top:18px;font-size:15px;line-height:1.7;color:var(--wp--preset--color--white)}
:root .foot-nap a{color:var(--wp--preset--color--white);font-family:var(--wp--preset--font-family--barlow);font-weight:700}
:root .foot-nap a:hover{color:var(--wp--preset--color--blue-mist)}
:root .foot-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:9px}
:root .foot-list a{color:rgba(255,255,255,.9);font-size:15px}
:root .foot-list a:hover{color:var(--wp--preset--color--white)}
:root .foot-cred{display:flex;flex-direction:column;gap:12px;font-size:13px;color:rgba(255,255,255,.85);line-height:1.55}
:root .foot-cred .tag{display:inline-flex;align-items:center;gap:8px;font-family:var(--wp--preset--font-family--barlow);font-weight:600;color:var(--wp--preset--color--white)}
:root .foot-cred .tag svg{width:18px;height:18px;color:var(--wp--preset--color--blue-mist);flex-shrink:0}
:root .foot-cred .tag a{color:var(--wp--preset--color--white)}
:root .foot-badges{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
:root .foot-badges img{height:46px;width:auto;background:var(--wp--preset--color--white);border-radius:6px;padding:5px}
:root .site-foot__bar{border-top:1px solid rgba(255,255,255,.18)}
:root .site-foot__bar-in{max-width:var(--wp--custom--container);margin:0 auto;padding:20px var(--wp--custom--gutter);display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;font-size:13px;color:rgba(255,255,255,.8)}
:root .site-foot__bar a{color:var(--wp--preset--color--white)}

:root .visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ============================================================
   PAGE-LEVEL COMPONENTS (inner pages)
   Built only from the tokens above — no new colors, fonts or radii.
   Each block below maps to one WP block pattern in the FSE conversion.
   ============================================================ */

/* --- utilities lifted out of inline styles (FSE: no inline CSS) --- */
:root .eyebrow--center{text-align:center;margin-bottom:14px}
:root .anchor{display:block;height:0;overflow:hidden}

/* --- breadcrumbs --- */
:root .crumbs{font-size:13px;color:var(--wp--preset--color--ink-3);padding:14px 0 0}
:root .crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0}
:root .crumbs li{display:inline-flex;align-items:center;gap:6px}
:root .crumbs li+li::before{content:"/";color:var(--wp--preset--color--line-2)}
:root .crumbs a{color:var(--wp--preset--color--ink-2)}
:root .crumbs a:hover{color:var(--wp--preset--color--blue)}
:root .crumbs [aria-current]{color:var(--wp--preset--color--ink);font-weight:600}

/* --- compact page banner (inner-page counterpart to the homepage hero) --- */
:root .page-hero{background:var(--wp--preset--color--blue-soft);border-bottom:1px solid var(--wp--preset--color--line)}
:root .page-hero__in{max-width:var(--wp--custom--container);margin:0 auto;padding:clamp(30px,4.5vw,56px) var(--wp--custom--gutter) clamp(34px,5vw,60px)}
:root .page-hero h1{font-size:clamp(28px,4.4vw,46px);max-width:28ch} /* two lines, not three, for almost every title */
/* override for titles short enough to read as one line - doesn't touch the
   default 20ch wrap other page-hero headings rely on */
:root .page-hero h1.h1--line{max-width:none}
:root .page-hero__sub{font-size:clamp(16px,1.7vw,19px);color:var(--wp--preset--color--ink-2);margin-top:16px;max-width:60ch}
:root .page-hero__ctas{display:flex;gap:12px;margin-top:26px;flex-wrap:wrap}
:root .page-hero--plain{background:var(--wp--preset--color--white)}

/* --- main column + sticky sidebar --- */
:root .layout{max-width:var(--wp--custom--container);margin:0 auto;padding:var(--wp--custom--section-space) var(--wp--custom--gutter);
  display:grid;grid-template-columns:minmax(0,1fr) 336px;gap:clamp(28px,4vw,56px);align-items:start}
:root .layout--wide{grid-template-columns:minmax(0,1fr)}
/* two white blocks in a row share one gap instead of stacking both paddings */
:root .layout+.layout,:root .layout+.section:not(.section--tint),:root .section:not(.section--tint)+.layout,
:root .section:not(.section--tint)+.section:not(.section--tint),:root .page-hero--plain+.layout{padding-top:0}
:root .layout__aside{position:sticky;top:124px;display:flex;flex-direction:column;gap:18px}
@media(max-width:980px){
  :root .layout{grid-template-columns:minmax(0,1fr);gap:34px}
  :root .layout__aside{position:static;top:auto}
}

/* --- long-form copy --- */
:root .prose{max-width:70ch;color:var(--wp--preset--color--ink-2)}
/* no sidebar: the column takes the full container instead of leaving the sidebar's space empty */
:root .layout--wide .prose{max-width:none}
:root .prose>*+*{margin-top:18px}
:root .prose h2{font-size:clamp(23px,2.6vw,30px);margin-top:40px}
:root .prose h3{font-size:clamp(19px,2vw,22px);margin-top:30px}
:root .prose h2+p,:root .prose h3+p{margin-top:12px}
:root .prose>h2:first-child{margin-top:0} /* a heading that opens the column lines up with the sidebar */
:root .prose p{font-size:17px;line-height:1.7}
:root .prose ul,:root .prose ol{padding-left:22px;margin-top:14px}
:root .prose li{margin:9px 0}
:root .prose li::marker{color:var(--wp--preset--color--blue)}
:root .prose strong{color:var(--wp--preset--color--ink)}
:root .prose a{text-decoration:underline;text-underline-offset:3px}
:root .prose .tile,:root .prose .wp-block-button__link,:root .prose .post-card,:root .prose .tile:hover{text-decoration:none}
:root .prose img{border-radius:var(--wp--custom--radius);margin-top:24px}
:root .prose blockquote{margin:26px 0;padding:18px 24px;background:var(--wp--preset--color--surface);
  border-left:4px solid var(--wp--preset--color--blue);border-radius:0 var(--wp--custom--radius-sm) var(--wp--custom--radius-sm) 0;color:var(--wp--preset--color--ink)}
:root .prose blockquote p{margin:0}

/* --- checklist (tune-up lists, inclusions) --- */
:root .checks{list-style:none;padding:0;margin:20px 0 0;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:10px 26px}
:root .checks li{display:flex;align-items:flex-start;gap:10px;margin:0;font-size:16px;color:var(--wp--preset--color--ink-2)}
:root .checks svg{width:19px;height:19px;color:var(--wp--preset--color--ok);flex-shrink:0;margin-top:2px}

/* --- sidebar cards --- */
:root .aside-card{background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line);border-radius:var(--wp--custom--radius);padding:24px}
:root .aside-card--call{background:var(--wp--preset--color--blue-deep);border-color:var(--wp--preset--color--blue-deep);color:var(--wp--preset--color--white)}
:root .aside-card h3{font-size:19px;margin-bottom:10px}
:root .aside-card--call h3{color:var(--wp--preset--color--white)}
:root .aside-card p{font-size:15px;color:var(--wp--preset--color--ink-2)}
:root .aside-card--call p{color:rgba(255,255,255,.9)}
:root .aside-card .wp-block-button__link{width:100%;margin-top:16px}
:root .aside-card__list{list-style:none;padding:0;margin:14px 0 0;display:flex;flex-direction:column;gap:2px}
:root .aside-card__list a{display:block;padding:9px 0;border-bottom:1px solid var(--wp--preset--color--line-2);font-size:15px;color:var(--wp--preset--color--ink)}
:root .aside-card__list li:last-child a{border-bottom:0}
:root .aside-card__list a:hover{color:var(--wp--preset--color--blue)}

/* --- FAQ accordion --- */
:root .faq{margin-top:22px;border-top:1px solid var(--wp--preset--color--line)}
:root .faq details{border-bottom:1px solid var(--wp--preset--color--line)}
:root .faq summary{list-style:none;cursor:pointer;padding:18px 40px 18px 0;position:relative;
  font-family:var(--wp--preset--font-family--barlow);font-weight:700;font-size:17px;color:var(--wp--preset--color--ink)}
:root .faq summary::-webkit-details-marker{display:none}
:root .faq summary::after{content:"";position:absolute;right:8px;top:24px;width:10px;height:10px;
  border-right:2px solid var(--wp--preset--color--blue);border-bottom:2px solid var(--wp--preset--color--blue);transform:rotate(45deg);transition:transform .2s ease}
:root .faq details[open] summary::after{transform:rotate(-135deg)}
:root .faq summary:hover{color:var(--wp--preset--color--blue)}
:root .faq__body{padding:0 0 20px;color:var(--wp--preset--color--ink-2);font-size:16px;line-height:1.7}
:root .faq__body>*+*{margin-top:12px}

/* --- link grids (cities, services, related) --- */
:root .tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:14px;margin-top:8px}
:root .tile{display:block;background:var(--wp--preset--color--white);border:1px solid var(--wp--preset--color--line);border-radius:var(--wp--custom--radius-sm);
  padding:16px 18px;color:var(--wp--preset--color--ink);font-family:var(--wp--preset--font-family--barlow);font-weight:600;
  transition:border-color .16s ease,transform .16s ease}
:root .tile:hover{border-color:var(--wp--preset--color--blue);transform:translateY(-2px);color:var(--wp--preset--color--blue)}
:root .tile small{display:block;font-family:var(--wp--preset--font-family--inter);font-weight:400;font-size:13.5px;
  color:var(--wp--preset--color--ink-3);margin-top:4px;line-height:1.5}

/* --- article cards (resources hub) --- */
:root .post-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px}
:root .post-card{display:flex;flex-direction:column;gap:10px;background:var(--wp--preset--color--white);border:1px solid var(--wp--preset--color--line);
  border-radius:var(--wp--custom--radius);padding:24px;box-shadow:var(--wp--custom--shadow);transition:transform .16s ease,border-color .16s ease}
:root .post-card:hover{transform:translateY(-3px);border-color:var(--wp--preset--color--blue)}
:root .post-card h3{font-size:20px;line-height:1.25}
:root .post-card p{font-size:15px;color:var(--wp--preset--color--ink-2);flex:1}
/* Cards in a row share their rows: every label, title, description and link starts level. */
@supports (grid-template-rows:subgrid){
  :root .post-grid .post-card{display:grid;grid-row:span 4;grid-template-rows:subgrid;row-gap:10px;align-content:start}
}
:root .post-card__meta{font-family:var(--wp--preset--font-family--barlow);font-weight:600;font-size:12px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--wp--preset--color--blue)}
:root .post-card__go{font-family:var(--wp--preset--font-family--barlow);font-weight:700;font-size:14.5px;color:var(--wp--preset--color--blue-deep)}

/* --- article header meta --- */
:root .art-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin-top:18px;
  font-size:14px;color:var(--wp--preset--color--ink-3)}
:root .art-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--wp--preset--color--line-2)}

/* --- stat / fact row --- */
:root .facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:16px;margin-top:26px}
:root .fact{background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line);border-radius:var(--wp--custom--radius);padding:20px}
:root .fact b{display:block;font-family:var(--wp--preset--font-family--barlow);font-size:27px;color:var(--wp--preset--color--blue-deep);line-height:1.1}
:root .fact span{display:block;font-size:14px;color:var(--wp--preset--color--ink-2);margin-top:6px}

/* --- honest empty state (e.g. no current offers) --- */
:root .empty-state{background:var(--wp--preset--color--surface);border:1px dashed var(--wp--preset--color--line-2);border-radius:var(--wp--custom--radius);
  padding:clamp(28px,4vw,44px);text-align:center;max-width:640px;margin:0 auto}
:root .empty-state h2{font-size:23px}
:root .empty-state p{color:var(--wp--preset--color--ink-2);margin-top:12px}
:root .empty-state .wp-block-button__link{margin-top:22px}

/* --- next/prev + related strip --- */
:root .related{border-top:1px solid var(--wp--preset--color--line);margin-top:44px;padding-top:28px}
:root .related h2{font-size:20px;margin-bottom:16px}

/* --- form + long-word safety (mobile overflow guards) --- */
:root fieldset{min-width:0;max-width:100%;border:0;margin:0;padding:0}
:root legend{padding:0}
:root .prose,:root .prose li,:root .prose p,:root .faq__body{overflow-wrap:anywhere}
:root input,:root select,:root textarea{max-width:100%}

/* mobile: keep "Call now" + "Request an appointment" on one line. At normal
   button size they need 407px but mobile only has ~354px, so a small, measured
   tightening (not a drastic shrink) closes the gap with real margin to spare
   rather than a 1px-tight fit. */
@media(max-width:600px){
  :root .hero__ctas,:root .ctaband__actions,:root .page-hero__ctas{gap:8px;flex-wrap:nowrap}
  :root .hero__ctas .wp-block-button__link,:root .ctaband__actions .wp-block-button__link,:root .page-hero__ctas .wp-block-button__link{font-size:14px;padding:12px 15px;white-space:nowrap}
}

/* mobile: service-card photos and the service-area banner read as short,
   inset strips at the base sizing above -- make them real, full-bleed
   photos on phones instead. Placed here (after every base rule above,
   including .svc-card__img img and .areas__banner img) so the override
   actually wins the cascade; a same-specificity rule earlier in the file
   was silently losing to its own base rule at every viewport. */
@media(max-width:600px){
  :root .svc-card{padding:0 0 22px}
  :root .svc-card__img img{height:auto;aspect-ratio:1/1;border-radius:var(--wp--custom--radius) var(--wp--custom--radius) 0 0;margin-bottom:4px}
  :root .svc-card h3,:root .svc-card p,:root .svc-card__link{margin-left:22px;margin-right:22px}
  :root .svc-card__ic{margin:22px 0 0 22px}
  :root .areas__banner img{height:280px}
}

/* --- forms (appointment request, etc.) --- */
:root .form{margin-top:28px;max-width:640px;background:var(--wp--preset--color--surface);border:1px solid var(--wp--preset--color--line);border-radius:var(--wp--custom--radius);padding:clamp(24px,4vw,36px)}
:root .form__section{border:0;margin:0;padding:0}
:root .form__section+.form__section{margin-top:30px;padding-top:30px;border-top:1px solid var(--wp--preset--color--line)}
:root .form__section legend{padding:0 0 18px;font-family:var(--wp--preset--font-family--barlow);font-weight:700;font-size:13px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--wp--preset--color--blue)}
:root .form__grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px}
:root .form__field{display:flex;flex-direction:column;gap:7px;min-width:0}
:root .form__field--wide{grid-column:1/-1}
:root .form__field label{font-family:var(--wp--preset--font-family--barlow);font-weight:600;font-size:14.5px;color:var(--wp--preset--color--ink)}
:root .form__field input,:root .form__field select,:root .form__field textarea{
  font:inherit;font-size:16px;color:var(--wp--preset--color--ink);background:var(--wp--preset--color--white);
  border:1.5px solid var(--wp--preset--color--line-2);border-radius:var(--wp--custom--radius-sm);
  padding:12px 14px;width:100%;transition:border-color .15s ease,box-shadow .15s ease}
:root .form__field textarea{resize:vertical;min-height:120px;font-family:var(--wp--preset--font-family--inter)}
:root .form__field select{appearance:none;background-repeat:no-repeat;background-position:right 14px center;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2345555F' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  padding-right:40px}
:root .form__field input:hover,:root .form__field select:hover,:root .form__field textarea:hover{border-color:var(--wp--preset--color--ink-3)}
:root .form__field input:focus-visible,:root .form__field select:focus-visible,:root .form__field textarea:focus-visible{
  outline:none;border-color:var(--wp--preset--color--blue);box-shadow:0 0 0 4px var(--wp--preset--color--blue-soft)}
:root .form__submit{margin-top:30px;display:flex;flex-direction:column;align-items:flex-start;gap:12px}
:root .form__submit .wp-block-button__link{padding:15px 28px}
:root .form__note{font-size:13.5px;color:var(--wp--preset--color--ink-3)}
@media(max-width:560px){
  :root .form__grid{grid-template-columns:1fr}
  :root .form__submit .wp-block-button__link{width:100%}
}

/* sidebar call card: keep "Call now" + "Request an appointment" on one line
   even in the narrow 336px fixed-width sidebar column (tighter than the
   354px content-width contexts, since there's less room to work with) */
:root .aside-card__cta-row{display:flex;flex-wrap:nowrap;gap:6px;margin-top:16px}
:root .aside-card__cta-row .wp-block-button__link{width:auto;margin-top:0;flex:0 0 auto;
  font-size:13px;padding:11px 10px;white-space:nowrap}


/* ============================================================
   WordPress-specific completions
   ============================================================ */

/* Buttons: the base pill lives in theme.json (elements.button). */
.wp-block-button__link { display: inline-flex; align-items: center; justify-content: center; gap: 9px; white-space: nowrap; transition: transform .12s ease, box-shadow .2s ease, background .2s ease; }
.wp-block-button__link:hover { transform: translateY(-1px); }
.wp-block-button.is-style-outline .wp-block-button__link { border-width: 2px; border-style: solid; }
.wp-block-buttons.aside-card__cta-row,
.wp-block-buttons.hero__ctas,
.wp-block-buttons.page-hero__ctas { flex-wrap: wrap; }
/* Recent Projects feed: the See more button under the RealWork Labs widget. */
:root .rwl-more { display: flex; justify-content: center; margin-top: 28px; }
:root .rwl-more[hidden] { display: none; }
.aside-card__cta-row .wp-block-button,
.aside-card .wp-block-button { margin: 0; }
.aside-card > .wp-block-buttons:not(.aside-card__cta-row) .wp-block-button,
.aside-card > .wp-block-buttons:not(.aside-card__cta-row) .wp-block-button__link { width: 100%; }
.aside-card > .wp-block-buttons:not(.aside-card__cta-row) { margin-top: 0; gap: 0; flex-direction: column; }
.rev-actions { justify-content: center; }
.ctaband__actions .wp-block-buttons { justify-content: center; }

/* The Playbook's hero trust row kept the browser's default list margin. */
.lah-page .hero__trust { margin-block-end: 1em; }

/* Two-tone headline word: core's text-colour <mark>. */
.lah-page mark.has-inline-color { background: transparent; }

/* Icons the Playbook drew with inline SVG, redrawn in CSS so the text stays
   editable rich text: list checks and the card "go" arrow. */
.checks li::before,
.hero__trust li::before {
	content: ""; width: 19px; height: 19px; flex-shrink: 0; margin-top: 2px;
	background: var(--wp--preset--color--ok);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
}
.hero__trust li::before { width: 18px; height: 18px; margin-top: 0; }
.svc-card__link::after {
	content: ""; width: 15px; height: 15px; background: currentColor; transition: transform .2s;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
}
.svc-card:hover .svc-card__link::after { transform: translateX(3px); }
/* The whole service card is the link: its "Explore ..." link stretches over the
   card, so a click anywhere on the card goes to the service page. */
:root .svc-card { position: relative; cursor: pointer; }
:root .svc-card__link::before { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.hero__badge::before { content: ""; width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; background: var(--wp--preset--color--red); box-shadow: 0 0 0 4px rgba(192,57,43,.18); }

/* Article cards: the whole card is the heading's link. */
.post-card { position: relative; color: var(--wp--preset--color--ink-2); }
.post-card h3 a { color: var(--wp--preset--color--ink); }
.post-card h3 a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.post-card:hover h3 a { color: var(--wp--preset--color--blue); }

/* The blue CTA band reuses .aside-card__cta-row to keep its two buttons on one
   line, but that row's compact sizing is for the 336px sidebar: in the band the
   buttons match the hero's, full size on desktop and the hero's mobile size. */
:root .ctaband .aside-card__cta-row { gap: 14px; margin-top: 0; justify-content: center; }
:root .ctaband .aside-card__cta-row .wp-block-button__link { font-size: 16px; padding: 14px 22px; }
@media (max-width: 600px) {
	:root .ctaband .aside-card__cta-row { gap: 8px; }
	:root .ctaband .aside-card__cta-row .wp-block-button__link { font-size: 14px; padding: 12px 15px; }
}

/* Clickable city chips (homepage service-area list). The Playbook's inline star
   on the first chip is drawn here, so the list stays editable text. */
:root .chips > p, :root p.chips { margin: 0; }
a.chip:focus-visible { outline: 3px solid var(--wp--preset--color--blue); outline-offset: 2px; }
.chip--star::before {
	content: ""; width: 14px; height: 14px; flex-shrink: 0; background: var(--wp--preset--color--amber);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m12 2 3 6.3 6.9 1-5 4.9 1.2 6.8L12 17.8 5.9 21l1.2-6.8-5-4.9 6.9-1z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m12 2 3 6.3 6.9 1-5 4.9 1.2 6.8L12 17.8 5.9 21l1.2-6.8-5-4.9 6.9-1z'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Footer: one text size for all footer copy (it mixed 13, 14 and 15px), and the
   brand name at its designed 20px, top-aligned with the column headings. The
   name and the address had been losing to `.foot-brand p` (14px, margin-top 16px). */
:root .foot-brand .foot-brand__name { font-size: 20px; margin-top: 0; }
:root .site-foot :is(.foot-brand p:not(.foot-brand__name), .foot-nap, .foot-list a, .foot-cred, .foot-cred p, .foot-cred .tag, .site-foot__bar-in, .site-foot__bar-in p) { font-size: 15px; line-height: 1.6; }

/* Mobile: every two-button row (hero, page banner, CTA band) splits the width
   into two equal buttons; a label too long for half the row wraps onto two
   balanced lines, and the pair stays the same size. */
@media (max-width: 600px) {
	/* the band's actions are either a group around a buttons row, or the buttons block itself */
	:root .lah-page .ctaband__actions:not(.wp-block-buttons) { display: block; }
	:root .lah-page :is(.hero__ctas, .page-hero__ctas, .wp-block-buttons.ctaband__actions, .ctaband__actions > .wp-block-buttons) {
		display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; align-items: stretch;
	}
	:root .lah-page :is(.hero__ctas, .page-hero__ctas, .ctaband__actions) .wp-block-button { display: flex; width: auto; margin: 0; }
	:root .lah-page :is(.hero__ctas, .page-hero__ctas, .ctaband__actions) .wp-block-button__link {
		flex: 1; width: 100%; font-size: 14px; padding: 12px 5px;
		white-space: normal; text-wrap: balance; line-height: 1.15; text-align: center;
	}
}
@media (max-width: 380px) {
	:root .lah-page :is(.hero__ctas, .page-hero__ctas, .ctaband__actions) .wp-block-button__link { font-size: 13px; padding: 12px 4px; }
}

/* Sidebar call card: its two buttons share the row evenly. Full-width card
   (tablet/phone): exactly equal halves. Narrow desktop sidebar: as equal as the
   row allows while each label stays on one line. */
:root .aside-card .aside-card__cta-row .wp-block-button { flex: 1 1 0; min-width: max-content; display: flex; }
:root .aside-card .aside-card__cta-row .wp-block-button__link { flex: 1; width: 100%; justify-content: center; text-align: center; }
@media (max-width: 600px) {
	:root .aside-card .aside-card__cta-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; align-items: stretch; }
	:root .aside-card .aside-card__cta-row .wp-block-button { min-width: 0; }
	:root .aside-card .aside-card__cta-row .wp-block-button__link { font-size: 14px; padding: 12px 5px; white-space: normal; text-wrap: balance; line-height: 1.15; }
}

/* ---- Header: logo, core/navigation, drawer ---- */
.lah-head .wp-block-site-logo img, .site-logo img { height: 46px; width: auto; }
.nav-desktop { margin-left: auto; }
/* Nothing in the header row squeezes: the logo and the phone/button group keep
   their size, and menu labels never wrap (a squeezed label wrapped onto two
   lines and ran into its neighbours). The menu gap tightens on narrower
   desktops so the row still fits. */
.site-head .brand, .site-head .wp-block-site-logo, .site-head .head-cta { flex-shrink: 0; }
.nav-desktop .wp-block-navigation__container > li { flex-shrink: 0; }
.lah-head .nav-desktop .wp-block-navigation-item__content { white-space: nowrap; }
.nav-desktop .wp-block-navigation__container { gap: 20px; }
@media (max-width: 1240px) { .nav-desktop .wp-block-navigation__container { gap: 14px; } }
.lah-head .nav-desktop .wp-block-navigation-item__content { font-family: var(--wp--preset--font-family--barlow); font-weight: 600; font-size: 15px; color: var(--wp--preset--color--ink); padding: 4px 0; }
.nav-desktop .wp-block-navigation-item__content:hover,
.nav-desktop .current-menu-item > .wp-block-navigation-item__content { color: var(--wp--preset--color--blue); }
.head-cta .wp-block-buttons { margin: 0; }
/* Desktop dropdowns: a card with the hub link across the top. Services is one
   column; Service Areas spreads its 23 cities over three. Core shows the panel
   on hover/focus; this only dresses it. Keyed on core's .has-child, so a
   submenu an editor adds in the menu gets the same card with no class to
   remember; .lah-dropdown--* and .lah-dropdown__all stay as opt-in variants. */
.lah-head .nav-desktop .wp-block-navigation-submenu__toggle { color: var(--wp--preset--color--ink); margin-left: 4px; }
.lah-head .nav-desktop .has-child:hover > .wp-block-navigation-item__content,
.lah-head .nav-desktop .has-child:focus-within > .wp-block-navigation-item__content { color: var(--wp--preset--color--blue); }
:root .lah-head .nav-desktop .has-child > .wp-block-navigation__submenu-container {
	display: grid; grid-template-columns: minmax(0, 1fr); gap: 2px 10px;
	background: var(--wp--preset--color--white); border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius); box-shadow: var(--wp--custom--shadow);
	padding: 12px; left: -16px; top: calc(100% + 10px); z-index: 70;
}
/* Keeps the pointer inside the item while it crosses the gap to the panel. */
.lah-head .nav-desktop .has-child > .wp-block-navigation__submenu-container::before { content: ""; position: absolute; left: 0; right: 0; top: -12px; height: 12px; }
:root .lah-head .nav-desktop .has-child:is(:hover, :focus-within) > .wp-block-navigation__submenu-container { width: 280px; }
:root .lah-head .nav-desktop .lah-dropdown--service-areas > .wp-block-navigation__submenu-container { grid-template-columns: repeat(3, minmax(0, 1fr)); }
:root .lah-head .nav-desktop .lah-dropdown--service-areas:is(:hover, :focus-within) > .wp-block-navigation__submenu-container { width: 600px; }
:root .lah-head .nav-desktop .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	display: block; padding: 8px 10px; border-radius: var(--wp--custom--radius-sm); font-size: 14.5px; color: var(--wp--preset--color--ink);
}
:root .lah-head .nav-desktop .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
:root .lah-head .nav-desktop .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus-visible { background: var(--wp--preset--color--blue-soft); color: var(--wp--preset--color--blue); }
.lah-head .nav-desktop .lah-dropdown__all { grid-column: 1 / -1; border-bottom: 1px solid var(--wp--preset--color--line); margin-bottom: 6px; padding-bottom: 6px; }
:root .lah-head .nav-desktop .lah-dropdown__all .wp-block-navigation-item__content { color: var(--wp--preset--color--blue); }

/* Drawer dropdown: the parent is a toggle; the cities open in place, indented. */
:root .lah-head .nav-drawer__links .wp-block-navigation-submenu__toggle {
	width: 100%; display: flex; align-items: center; justify-content: space-between; text-align: left;
	background: none; border: 0; border-bottom: 1px solid var(--wp--preset--color--line); cursor: pointer;
}
/* Core prints the chevron as a sibling after the toggle; pin it to the row. */
:root .lah-head .nav-drawer__links .has-child { position: relative; }
:root .lah-head .nav-drawer__links .has-child > .wp-block-navigation__submenu-icon {
	position: absolute; right: 10px; top: 24px; width: 14px; height: 14px; margin: 0; pointer-events: none;
}
:root .lah-head .nav-drawer__links .wp-block-navigation__submenu-container {
	position: static; border: 0; box-shadow: none; background: transparent; padding: 0; min-width: 0;
}
:root .lah-head .nav-drawer__links .wp-block-navigation-submenu__toggle[aria-expanded="true"] ~ .wp-block-navigation__submenu-container { width: 100%; }
:root .lah-head .nav-drawer__links .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	font-size: 16px; font-weight: 500; padding: 11px 6px 11px 18px; color: var(--wp--preset--color--ink-2);
}
:root .lah-head .nav-drawer__links .lah-dropdown__all .wp-block-navigation-item__content { color: var(--wp--preset--color--blue); font-weight: 600; }

.nav-drawer:not(.is-open) { visibility: hidden; }
.nav-drawer.is-open { visibility: visible; }
.nav-drawer { overflow-y: auto; }
.nav-drawer .nav-drawer__links { width: 100%; align-self: stretch; }
.nav-drawer .nav-drawer__links .wp-block-navigation__container { flex-direction: column; align-items: stretch; gap: 0; width: 100%; }
.nav-drawer .nav-drawer__links .wp-block-navigation-item { width: 100%; display: block; }
.nav-drawer__foot .is-style-call .wp-block-button__link::before {
	content: ""; width: 18px; height: 18px; background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3-8.6A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1 1 .4 1.9.7 2.8a2 2 0 0 1-.5 2.1L8.1 9.9a16 16 0 0 0 6 6l1.3-1.2a2 2 0 0 1 2.1-.5c.9.3 1.8.6 2.8.7a2 2 0 0 1 1.7 2z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3-8.6A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1 1 .4 1.9.7 2.8a2 2 0 0 1-.5 2.1L8.1 9.9a16 16 0 0 0 6 6l1.3-1.2a2 2 0 0 1 2.1-.5c.9.3 1.8.6 2.8.7a2 2 0 0 1 1.7 2z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.lah-head .nav-drawer__links .wp-block-navigation-item__content { display: block; font-family: var(--wp--preset--font-family--barlow); font-weight: 600; font-size: 18px; color: var(--wp--preset--color--ink); padding: 15px 6px; border-bottom: 1px solid var(--wp--preset--color--line); }
.nav-drawer__foot .wp-block-button, .nav-drawer__foot .wp-block-button__link { width: 100%; }
.admin-bar .site-head { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-head { top: 46px; } }
@media (max-width: 600px) { .admin-bar .site-head { top: 0; } }

/* The template part wrappers step out of the way, so the sticky header sticks
   to the page (a sticky element only sticks inside its own parent). */
.wp-site-blocks > header.wp-block-template-part,
.wp-site-blocks > header.wp-block-template-part > .lah-head { display: contents; }

/* ---- Appointment request form ---- */
.lah-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.form-notice { margin-top: 28px; max-width: 640px; padding: 16px 20px; border-radius: var(--wp--custom--radius-sm); font-weight: 600; }
.form-notice--ok { background: var(--wp--preset--color--blue-soft); border-left: 4px solid var(--wp--preset--color--ok); color: var(--wp--preset--color--ink); }
.form-notice--error { background: var(--wp--preset--color--surface); border-left: 4px solid var(--wp--preset--color--red); color: var(--wp--preset--color--ink); }
.form__submit .wp-block-button__link { padding: 15px 28px; border: 0; cursor: pointer; }
@media (max-width: 560px) { .form__submit .wp-block-button__link { width: 100%; } }

/* ---- Gravity Forms in the Playbook's .form card (Contact page) ----
   Gravity Forms' Orbital theme reads custom properties, and prints its defaults
   in an inline rule scoped by the wrapper's ID, which no class selector can
   outrank. So these variables, and only these, carry !important: pointing them
   at the theme tokens dresses the form like the Playbook's .form__field inputs. */
.lah-gform .gform_wrapper {
	--gf-color-primary: var(--wp--preset--color--blue-btn) !important;
	--gf-color-primary-rgb: 51, 122, 183 !important;
	--gf-color-primary-darker: var(--wp--preset--color--blue-btn-hover) !important;
	--gf-color-primary-lighter: var(--wp--preset--color--blue) !important;
	--gf-color-in-ctrl-primary: var(--wp--preset--color--blue) !important;
	--gf-color-in-ctrl-contrast: var(--wp--preset--color--ink) !important;
	--gf-color-out-ctrl-dark: var(--wp--preset--color--ink-2) !important;
	--gf-color-out-ctrl-dark-darker: var(--wp--preset--color--ink) !important;
	--gf-ctrl-border-color: var(--wp--preset--color--line-2) !important;
	--gf-ctrl-label-color-primary: var(--wp--preset--color--ink) !important;
	--gf-ctrl-label-color-secondary: var(--wp--preset--color--ink-2) !important;
	--gf-radius: var(--wp--custom--radius-sm) !important;
	--gf-ctrl-btn-radius: 999px !important;
	--gf-ctrl-btn-font-size: 16px !important;
	--gf-ctrl-btn-padding-x: 28px !important;
	--gf-ctrl-btn-size: 48px !important;
	margin: 0;
}
.lah-gform .gform_wrapper .gfield_label { font-family: var(--wp--preset--font-family--barlow); font-size: 14.5px; font-weight: 600; }
.lah-gform .gform_wrapper :is(input, textarea, select) { font-family: var(--wp--preset--font-family--inter); font-size: 16px; }
.lah-gform .gform_wrapper .gform_button { font-family: var(--wp--preset--font-family--barlow); font-weight: 700; }
.lah-gform .gform_wrapper .gform_footer { margin-top: 26px; padding: 0; }
.lah-gform .gform_confirmation_message { font-weight: 600; color: var(--wp--preset--color--ink); }
@media (max-width: 560px) {
	.lah-gform .gform_wrapper .gform_button { width: 100%; }
}

/* ---- Footer ---- */
.site-foot .foot-list { list-style: none; padding: 0; }
.site-foot__bar-in p { margin: 0; }

/* ---- Breadcrumbs feature + blog templates: on-brand defaults ---- */
.yd-crumbs { font-size: 13px; color: var(--wp--preset--color--ink-3); }
.yd-crumbs__list { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; }
.yd-crumbs__item { display: inline-flex; align-items: center; gap: 6px; }
.yd-crumbs__item + .yd-crumbs__item::before { content: "/"; color: var(--wp--preset--color--line-2); }
.yd-crumbs [aria-current] { color: var(--wp--preset--color--ink); font-weight: 600; }

/* Eyebrow block style (core/paragraph). */
.is-style-eyebrow { font-family: var(--wp--preset--font-family--barlow); font-weight: 600; font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: var(--wp--preset--color--blue); }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.wp-block-button__link, .svc-card, .tile, .post-card, .nav-drawer, .nav-backdrop { transition: none; }
}
