:root {
  --surface-canvas: #FFFFFF;
  --surface-raised: #FFFFFF;
  --surface-sunken: #E8F2EC;
  --surface-inverse: #0B4A32;
  --surface-inverse-deep: #072D1F;
  --text-primary: #10201A;
  --text-secondary: #5B6B62;
  --text-on-inverse: #FFFFFF;
  --text-on-inverse-secondary: #CFE0D6;
  --text-link: #157A4E;
  --text-link-hover: #0F5F3C;
  --action-fill: #157A4E;
  --action-on-fill: #FFFFFF;
  --action-hover-fill: #0F5F3C;
  --secondary-fill: #FFFFFF;
  --secondary-on-fill: #0B4A32;
  --secondary-border: #0B4A32;
  --focus-ring: #157A4E;
  --hairline: rgba(192, 160, 98, 0.45);
  --hairline-inverse: rgba(192, 160, 98, 0.35);
  --accent-action-fill: #157A4E;
  --accent-action-text: #157A4E;
  --accent-action-on-fill: #FFFFFF;
  --accent-detail-fill: #ae9159;
  --accent-detail-text: #7A5F24;
  --accent-detail-on-fill: #10201A;
  --accent-detail-on-inverse: #D9BE86;
  --accent-mark-fill: #ae9159;
  --accent-mark-text: #7A5F24;
  --accent-mark-on-fill: #10201A;
  --accent-mark-on-inverse: #D9BE86;
  --font-display: "Fraunces", Georgia, 'Times New Roman', serif;
  --font-body: "Inter", system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --container-max: 1240px;
  --gutter: 24px;
  --section-space: clamp(56px, 7vw, 104px);
  --prose-max: 68ch;
  --radius-card: 18px;
  --radius-input: 12px;
  --radius-chip: 10px;
  --radius-pill: 999px;
  --hairline-width: 1px;
  --accent-emerald-fill: #157A4E;
  --accent-emerald-text: #157A4E;
  --accent-emerald-on-fill: #FFFFFF;
  --accent-gold-fill: #ae9159;
  --accent-gold-text: #7A5F24;
  --accent-gold-on-fill: #10201A;
}

*, *::before, *::after { box-sizing: border-box; }
html { color-scheme: light; background: var(--surface-canvas); }
body { margin: 0; background: var(--surface-canvas); color: var(--text-primary); font-family: var(--font-body); font-family:var(--font-body);font-size:clamp(16px, 1.5vw, 18px);line-height:1.65;letter-spacing:0em;font-weight:400;text-transform:none; }
img, svg { display: block; max-inline-size: 100%; block-size: auto; }
a { color: var(--text-link); text-decoration-thickness: max(1px, var(--hairline-width)); text-underline-offset: 0.16em; }
a:hover { color: var(--text-link-hover); }
a:focus-visible, button:focus-visible, summary:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
.container { inline-size: min(calc(100% - (2 * var(--gutter))), var(--container-max)); margin-inline: auto; }
.skip-link { position: fixed; inset-block-start: -8rem; inset-inline-start: 1rem; z-index: 100; }
.skip-link:focus { inset-block-start: 1rem; }
.prose { max-inline-size: var(--prose-max); margin-inline: auto; }
.prose > * { overflow-wrap: anywhere; }
.prose p { margin-block: 0 1.25em; }
.prose ul, .prose ol { padding-inline-start: 1.25em; }
h1, h2, h3 { margin-block: 0 0.6em; color: var(--text-primary); text-wrap: balance; }
h1 { font-family:var(--font-display);font-size:clamp(30px, 4vw, 44px);line-height:1.12;letter-spacing:-0.02em;font-weight:600;text-transform:none; }
h2 { font-family:var(--font-display);font-size:clamp(24px, 3vw, 34px);line-height:1.2;letter-spacing:-0.02em;font-weight:600;text-transform:none; }
h3 { font-family:var(--font-body);font-size:clamp(20px, 2.4vw, 26px);line-height:1.3;letter-spacing:0em;font-weight:600;text-transform:none; }
.eyebrow { margin: 0 0 0.9rem; color: var(--accent-mark-text); font-family:var(--font-body);font-size:clamp(11px, 0.9vw, 12px);line-height:1.2;letter-spacing:0.14em;font-weight:600;text-transform:uppercase; }
.section { padding-block: var(--section-space); border-block-start: var(--hairline-width) solid var(--hairline); }
body[data-section-density="compact"] { --section-space: clamp(1.5rem, 3vw, 2.75rem); --content-section-space: clamp(1.1rem, 3vw, 2.5rem); }
body[data-section-density="spacious"] { --section-space: clamp(3.5rem, 8vw, 7rem); --content-section-space: clamp(2.6rem, 7vw, 5.5rem); }
body[data-hero-treatment="centered"] .hero__grid { grid-template-columns: minmax(0, 1fr); text-align: center; }
body[data-hero-treatment="centered"] .hero h1,
body[data-hero-treatment="centered"] .hero__lede { margin-inline: auto; }
body[data-hero-treatment="centered"] .hero .button-row { justify-content: center; }
/* .hero .hero__lede carries a left accent bar, which reads as a deliberate margin rule while the
   text is left-aligned and as a mistake the moment the text is centred -- an accent anchored to one
   edge of a block that has no edge alignment. Measured on the live design artifact: 8 pages take
   this branch (static_quote, plus 7 centred city hubs). The accent is not lost, because the centred
   heading already carries its own centred rule; this only removes the second, contradictory one. */
body[data-hero-treatment="centered"] .hero .hero__lede { padding-inline-start: 0; border-inline-start: 0; }
/* The money layouts (192 of 229 pages on the client config) render .money-hero and never .hero, so
   every rule above this line was inert on them: centred and inverse were assigned by the design
   artifact and painted nothing. The h1::after rule is a left-anchored underline, so centring the
   block without it leaves the rule hanging off to one side. */
body[data-hero-treatment="centered"] .money-hero { text-align: center; }
body[data-hero-treatment="centered"] .money-hero h1,
body[data-hero-treatment="centered"] .money-hero .hero__lede { margin-inline: auto; }
body[data-hero-treatment="centered"] .money-hero h1::after { margin-inline: auto; }
body[data-hero-treatment="framed"] .hero,
body[data-hero-treatment="framed"] .money-hero { margin-block: var(--gutter); padding-inline: var(--gutter); border: var(--hairline-width) solid var(--hairline); background: var(--surface-raised); }
body[data-hero-treatment="inverse"] .hero { background: var(--surface-inverse); color: var(--text-on-inverse); }
body[data-hero-treatment="inverse"] .hero h1 { color: var(--text-on-inverse); }
body[data-hero-treatment="inverse"] .hero .eyebrow { color: var(--accent-mark-on-inverse); }
/* Scoped deliberately, and the scope is the whole point. An UNSCOPED .hero__lede rule painted
   on-inverse-secondary text onto the light canvas of every money page: 1.49:1, on 200 of 231
   pages, because .hero__lede is used inside .money-hero too and only .hero had the dark
   background. The fix is not to withhold the treatment from .money-hero but to give it the
   background and all three text colours AS A UNIT, below. Never add an inverse text colour
   without the surface it is legible on in the same rule block. */
body[data-hero-treatment="inverse"] .hero .hero__lede { color: var(--text-on-inverse-secondary); }
body[data-hero-treatment="inverse"] .money-hero { margin-block: var(--gutter); padding-inline: var(--gutter); background: var(--surface-inverse); color: var(--text-on-inverse); border-block-end-color: var(--hairline-inverse); }
body[data-hero-treatment="inverse"] .money-hero h1 { color: var(--text-on-inverse); }
body[data-hero-treatment="inverse"] .money-hero h1::after { border-block-end-color: var(--accent-mark-on-inverse); }
body[data-hero-treatment="inverse"] .money-hero .eyebrow { color: var(--accent-mark-on-inverse); }
body[data-hero-treatment="inverse"] .money-hero .hero__lede { color: var(--text-on-inverse-secondary); }
body[data-hero-treatment="inverse"] .hero .button-row .button--secondary { background: transparent; border-color: var(--accent-mark-on-inverse); color: var(--text-on-inverse); }
body[data-hero-treatment="inverse"] .hero .button-row .button--secondary:hover { background: var(--surface-inverse-deep); color: var(--text-on-inverse); }
body[data-hero-treatment="inverse"] .hero .hero__aside.card { color: var(--text-primary); }
body[data-layout-variant="editorial"] .money-layout__article { grid-column: span 9; }
body[data-layout-variant="editorial"] .money-layout__rail { grid-column: span 3; }
body[data-layout-variant="conversion"] .money-layout__article { grid-column: span 7; }
body[data-layout-variant="conversion"] .money-layout__rail { grid-column: span 5; }
body[data-layout-variant="conversion"] .estimator { border-block-start-width: calc(var(--hairline-width) * 5); }
.section--sunken { background: var(--surface-sunken); }
.card { background: var(--surface-raised); border: var(--hairline-width) solid var(--hairline); border-radius: var(--radius-card); padding: clamp(1rem, 2.5vw, 2rem); }
.button { display: inline-flex; min-block-size: 45px; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.7rem 1.1rem; border: var(--hairline-width) solid var(--action-fill); border-radius: var(--radius-input); background: var(--action-fill); color: var(--action-on-fill); font-weight: 700; line-height: 1.2; text-decoration: none; }
.button:hover { background: var(--action-hover-fill); color: var(--action-on-fill); }
.button--secondary { border-color: var(--secondary-border); background: var(--secondary-fill); color: var(--secondary-on-fill); }
.button--secondary:hover { background: var(--secondary-fill); color: var(--secondary-on-fill); }
.button-row { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; }
.site-header { position: sticky; inset-block-start: 0; z-index: 20; background: var(--surface-inverse); color: var(--text-on-inverse); border-block-end: calc(var(--hairline-width) * 2) solid var(--accent-mark-fill); }
.site-header__inner { min-block-size: 72px; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 1.25rem; }
.site-wordmark { display: inline-flex; min-block-size: 44px; align-items: center; gap: 0.75rem; color: var(--text-on-inverse); font-family: var(--font-display); font-weight: 700; text-decoration: none; }
.primary-nav ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.25rem 1rem; margin: 0; padding: 0; list-style: none; }
.primary-nav a { display: inline-flex; min-block-size: 44px; align-items: center; color: var(--text-on-inverse-secondary); text-decoration: none; }
.primary-nav a[aria-current="page"] { color: var(--accent-mark-on-inverse); text-decoration: underline; text-underline-offset: 0.35em; }
.header-actions { display: flex; align-items: center; gap: 0.75rem; white-space: nowrap; }
.header-actions__phone { display: inline-flex; min-block-size: 44px; align-items: center; color: var(--text-on-inverse); font-variant-numeric: tabular-nums; }
.mobile-nav-disclosure { display: none; }
.mobile-nav-disclosure summary { min-inline-size: 44px; min-block-size: 44px; align-items: center; justify-content: center; cursor: pointer; user-select: none; }
.mobile-nav-disclosure summary::marker { content: ""; }
.mobile-nav-disclosure summary::-webkit-details-marker { display: none; }
.breadcrumbs { padding-block: 1rem; border-block-end: var(--hairline-width) solid var(--hairline); }
.breadcrumbs ol { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 0; padding: 0; list-style: none; font-size: 0.9em; color: var(--text-secondary); }
.breadcrumbs li:not(:last-child)::after { content: "/"; margin-inline-start: 0.4rem; color: var(--accent-detail-text); }
.breadcrumbs a { display: inline-flex; min-inline-size: 44px; min-block-size: 44px; align-items: center; justify-content: center; }
.hero { padding-block: var(--section-space); }
/* The two columns are centred against each other, not top-aligned. Measured on the client home
   page at 1440: the left column ends at y=591 and the right column runs to y=855, so align-items:
   start left 264px of empty navy under the buttons -- a third of the hero's height painted with
   nothing in it. The side column is only emitted on the 25 pages that have one, so the other 204
   pages are a single column and cannot be affected. Below 60rem the grid is one column
   (see the breakpoint below) and cross-axis alignment of an auto-sized row is a no-op. */
.hero__grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(16rem, 0.65fr); gap: clamp(2rem, 6vw, 5rem); align-items: center; }
/* renderHero adds --single when it emitted no side column, so the reserved second track
   collapses instead of painting an empty band beside the heading. */
.hero__grid--single { grid-template-columns: minmax(0, 1fr); }
.hero h1 { max-inline-size: 18ch; font-family:var(--font-display);font-size:clamp(38px, 5.2vw, 62px);line-height:1.05;letter-spacing:-0.03em;font-weight:600;text-transform:none; }
.hero h1::after { content: ""; display: block; inline-size: min(8rem, 32%); margin-block-start: 0.6em; border-block-end: calc(var(--hairline-width) * 2) solid var(--accent-mark-fill); }
.hero__lede { max-inline-size: var(--prose-max); color: var(--text-secondary); font-family:var(--font-body);font-size:clamp(17px, 1.6vw, 20px);line-height:1.6;letter-spacing:0em;font-weight:400;text-transform:none; }
.hero .hero__lede { padding: 0.9rem 0 0.9rem 1.1rem; border-inline-start: calc(var(--hairline-width) * 3) solid var(--accent-mark-fill); }
.hero__side { display: grid; gap: 1.25rem; align-content: start; }
.hero__media img { inline-size: 100%; border-radius: var(--radius-card); }
.hero__aside { padding-block-start: 0; }
.hero__aside h2 { font-family:var(--font-body);font-size:clamp(20px, 2.4vw, 26px);line-height:1.3;letter-spacing:0em;font-weight:600;text-transform:none; }
.hero__aside-phone { margin: 1rem 0 0.75rem; font-family: var(--font-display); font-size: clamp(1.35rem, 2.6vw, 1.9rem); font-weight: 700; font-variant-numeric: tabular-nums; }
.hero__aside-phone a { color: var(--text-primary); text-decoration: none; }
.hero__aside .button { inline-size: 100%; }
.hero__aside-note { margin: 0.75rem 0 0; color: var(--text-secondary); font-size: 0.82em; }
.section-head { max-inline-size: 46rem; margin-inline: auto; margin-block-end: clamp(1.5rem, 4vw, 3rem); text-align: center; }
.section-head .eyebrow { margin-block-end: 0.55rem; }
.section-head h2 { margin-block-end: 0; }
.section-head h2::after { content: ""; display: block; inline-size: 4.5rem; margin: 0.75rem auto 0; border-block-end: calc(var(--hairline-width) * 3) solid var(--accent-mark-fill); }
.section-head__intro { margin: 1rem auto 0; max-inline-size: var(--prose-max); color: var(--text-secondary); }
.trust-strip { border-block: var(--hairline-width) solid var(--hairline); background: var(--surface-sunken); }
.trust-strip ul { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); margin: 0; padding: 1rem 0; list-style: none; }
.trust-strip li { position: relative; padding: 0.4rem 1rem 0.4rem 2rem; border-inline-start: var(--hairline-width) solid var(--hairline); }
.trust-strip li::before { content: ""; position: absolute; inset-block-start: 0.75rem; inset-inline-start: 1rem; inline-size: 0.55rem; block-size: 0.55rem; background: var(--accent-mark-fill); }
.trust-strip strong { display: block; color: var(--text-primary); font-family: var(--font-display); letter-spacing: 0.04em; text-transform: uppercase; }
.trust-strip span { color: var(--text-secondary); font-size: 0.88em; }
.trust-strip a { display: inline-flex; min-block-size: 44px; align-items: center; color: var(--text-secondary); font-size: 0.88em; }
.answer-block { max-inline-size: var(--prose-max); padding: clamp(1.25rem, 3vw, 2.25rem); border-inline-start: calc(var(--hairline-width) * 3) solid var(--accent-mark-fill); background: var(--surface-sunken); }
.answer-block p { margin: 0; font-family:var(--font-body);font-size:clamp(17px, 1.6vw, 20px);line-height:1.6;letter-spacing:0em;font-weight:400;text-transform:none; }
.steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: 1.25rem; counter-reset: steps; list-style: none; padding: 0; }
.step { counter-increment: steps; position: relative; padding: 2.5rem 1.25rem 1.5rem; border: var(--hairline-width) solid var(--hairline); border-block-start: calc(var(--hairline-width) * 3) solid var(--accent-mark-fill); background: var(--surface-raised); }
.step::before { content: counter(steps, decimal-leading-zero); position: absolute; display: inline-flex; align-items: center; justify-content: center; min-inline-size: 2.6rem; padding: 0.35rem 0.6rem; margin-block-start: -3.6rem; background: var(--surface-inverse); color: var(--accent-mark-on-inverse); font-family: var(--font-display); font-weight: 700; font-variant-numeric: tabular-nums; }
.table-scroll { overflow-x: auto; border: var(--hairline-width) solid var(--hairline); border-radius: var(--radius-card); }
.spec-table { inline-size: 100%; border-collapse: collapse; text-align: start; }
.spec-table caption { padding: 1rem; text-align: start; font-weight: 700; background: var(--surface-sunken); }
.spec-table th, .spec-table td { padding: 0.85rem 1rem; border-block-start: var(--hairline-width) solid var(--hairline); vertical-align: top; text-align: start; }
.spec-table th { inline-size: 32%; font-weight: 700; }
.spec-table thead th { background: var(--surface-inverse); color: var(--text-on-inverse); font-family: var(--font-display); letter-spacing: 0.03em; text-transform: uppercase; }
.spec-table tbody tr:nth-child(even) { background: var(--surface-sunken); }
.spec-table tbody td:last-child { font-family: var(--font-display); font-weight: 700; font-variant-numeric: tabular-nums; }
.faq-list { max-inline-size: var(--prose-max); border-block-start: var(--hairline-width) solid var(--hairline); }
.faq-list details { border-block-end: var(--hairline-width) solid var(--hairline); }
.faq-list summary { min-block-size: 52px; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-block: 0.9rem; cursor: pointer; font-weight: 700; }
.faq-list summary { padding-inline: 1rem; }
.faq-list summary::after { content: "+"; flex: none; color: var(--accent-mark-text); font-family: var(--font-display); font-size: 1.4em; font-weight: 700; }
.faq-list details[open] summary { background: var(--surface-inverse); color: var(--text-on-inverse); }
.faq-list details[open] summary::after { content: "−"; color: var(--accent-mark-on-inverse); }
.faq-list__answer { padding: 1rem; color: var(--text-secondary); background: var(--surface-raised); }
.link-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); margin: 0; padding: 0; list-style: none; border-block-start: var(--hairline-width) solid var(--hairline); border-inline-start: var(--hairline-width) solid var(--hairline); }
.link-grid > li { display: flex; }
.link-grid a { display: flex; flex: 1; min-block-size: 52px; align-items: center; padding: 0.9rem 1rem; background: var(--surface-raised); color: var(--text-primary); font-weight: 650; text-decoration: none; box-shadow: inset calc(-1 * var(--hairline-width)) calc(-1 * var(--hairline-width)) 0 var(--hairline); }
.link-grid a::after { content: "→"; margin-inline-start: auto; color: var(--accent-mark-text); }
.link-grid small { display: block; margin-block-start: 0.35rem; color: var(--text-secondary); font-weight: 400; }
.nap { font-style: normal; }
.nap a { display: inline-flex; min-block-size: 44px; align-items: center; }
.nap p { margin: 0 0 0.75rem; }
.nap__phone { font-variant-numeric: tabular-nums; font-weight: 700; }
.hours { inline-size: 100%; border-collapse: collapse; font-size: 0.9em; }
.hours th, .hours td { padding-block: 0.35rem; border-block-end: var(--hairline-width) solid var(--hairline); text-align: start; }
.estimator { background: var(--surface-sunken); border-block-start: calc(var(--hairline-width) * 3) solid var(--accent-mark-fill); }
.estimator__range { margin: 0.5rem 0; color: var(--text-primary); font-family: var(--font-mono); font-size: clamp(1.45rem, 3vw, 2.2rem); font-weight: 700; font-variant-numeric: tabular-nums; }
.estimator__basis { color: var(--text-secondary); font-size: 0.9em; }
.money-layout { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(1.5rem, 3vw, 2.5rem); align-items: start; }
.money-hero h1 { max-inline-size: 20ch; font-family:var(--font-display);font-size:clamp(38px, 5.2vw, 62px);line-height:1.05;letter-spacing:-0.03em;font-weight:600;text-transform:none; }
.money-hero h1::after { content: ""; display: block; inline-size: min(8rem, 32%); margin-block-start: 0.6em; border-block-end: calc(var(--hairline-width) * 2) solid var(--accent-mark-fill); }
/* The lede and the storefront photograph share one row on a wide screen. .bgimg carried NO rule
   at all before this, so a 512px photograph rendered flush-left at its natural size inside an
   840px column and left 328px of dead surface beside it on 192 of the client's 229 pages. Capped
   at 22rem so it is never upscaled: 512px into a 352px box is a downscale on a 1x display and
   still sharp on a 2x one. The wrapper is only emitted when a photograph exists. */
.money-hero__intro { display: grid; gap: var(--gutter); align-items: center; }
.money-hero__intro .bgimg { display: block; inline-size: 100%; block-size: auto; border-radius: var(--radius-sm); }
@media (min-width: 60rem) {
  .money-hero__intro { grid-template-columns: minmax(0, 1fr) minmax(0, 22rem); }
}
.money-layout__article { grid-column: span 8; min-inline-size: 0; }
.money-layout__rail { grid-column: span 4; min-inline-size: 0; position: sticky; inset-block-start: 96px; display: grid; gap: 1rem; }
/* A grid item's default min-width is auto, and the rail's own min-inline-size:0 does not reach
   its children, so a rail card whose min-content floor exceeds the track bursts out instead of
   shrinking. Measured at 1440px: 24 elements at right=1445 on all 8 editorial pages (rail is
   span 3 = 290px there) and none of the default or conversion ones. The rail measured correctly
   at right=1360 throughout, which is why the grid rule above looks innocent. */
.money-layout__rail > * { min-inline-size: 0; }
.content-section { padding-block: var(--content-section-space, clamp(1.8rem, 5vw, 4rem)); border-block-end: var(--hairline-width) solid var(--hairline); }
.content-section:last-child { border-block-end: 0; }
.content-section > h2::after { content: ""; display: block; inline-size: 3.5rem; margin-block: 0.55rem 1.1rem; border-block-end: calc(var(--hairline-width) * 3) solid var(--accent-mark-fill); }
.card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: 1rem; }
.service-cards + .card-grid { margin-block-start: clamp(1.5rem, 4vw, 3rem); }
.service-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(21rem, 1fr)); gap: 1.25rem; margin: 0; padding: 0; list-style: none; }
.service-card { display: flex; flex-direction: column; padding: 1.5rem; border: var(--hairline-width) solid var(--hairline); border-block-start: calc(var(--hairline-width) * 3) solid var(--accent-mark-fill); background: var(--surface-raised); }
.service-card h3 { margin-block-end: 0.35rem; }
.service-card__link { color: var(--text-primary); text-decoration: none; }
.service-card__link:hover h3 { text-decoration: underline; text-underline-offset: 0.16em; }
.service-card__price { display: inline-block; align-self: start; margin: 0 0 0.85rem; padding: 0.3rem 0.7rem; background: var(--surface-inverse); color: var(--text-on-inverse); font-family: var(--font-display); font-weight: 700; font-variant-numeric: tabular-nums; }
.service-card__text { margin: 0; color: var(--text-secondary); }
.service-card__more { margin: 1rem 0 0; }
.service-card__more a { color: var(--accent-mark-text); font-family: var(--font-display); font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; text-decoration: none; }
.service-card__more a::after { content: " →"; }
.chip-cloud { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0; padding: 0; list-style: none; }
.chip { display: inline-flex; min-block-size: 44px; align-items: center; padding: 0.4rem 0.85rem; border: var(--hairline-width) solid var(--hairline); border-radius: var(--radius-chip); background: var(--surface-raised); color: var(--text-primary); font-family: var(--font-display); font-size: 0.86em; font-weight: 600; letter-spacing: 0.03em; text-decoration: none; text-transform: uppercase; }
.chip:hover { border-color: var(--accent-mark-fill); color: var(--text-primary); }
.chip--all { border-color: var(--accent-mark-fill); color: var(--accent-mark-text); }
.chip--all::after { content: " →"; }
.cta-band { padding-block: clamp(2.75rem, 7vw, 5rem); background: var(--surface-inverse-deep); color: var(--text-on-inverse); border-block-start: calc(var(--hairline-width) * 3) solid var(--accent-mark-fill); text-align: center; }
.cta-band h2 { max-inline-size: 24ch; margin-inline: auto; color: var(--text-on-inverse); }
.cta-band .eyebrow { color: var(--accent-mark-on-inverse); }
.cta-band__text { max-inline-size: var(--prose-max); margin: 0 auto 1.75rem; color: var(--text-on-inverse-secondary); }
.cta-band .button-row { justify-content: center; }
.cta-band .button--secondary { background: transparent; border-color: var(--accent-mark-on-inverse); color: var(--text-on-inverse); }
.cta-band .button--secondary:hover { background: var(--surface-inverse); color: var(--text-on-inverse); }
.review-band { text-align: center; }
.review-band__score { margin: 0; color: var(--text-primary); font-family: var(--font-display); font-size: clamp(2rem, 5vw, 3.25rem); font-weight: 700; font-variant-numeric: tabular-nums; }
.review-band__count { margin: 0.25rem 0 1.25rem; color: var(--text-secondary); }
.local-facts { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 1rem 0 0; padding: 0; list-style: none; }
.local-facts li { padding: 0.35rem 0.6rem; border: var(--hairline-width) solid var(--hairline); border-radius: var(--radius-chip); color: var(--text-secondary); font-size: 0.88em; }
.locations-groups > section + section { margin-block-start: clamp(2rem, 5vw, 4rem); }
.site-footer { padding-block: clamp(2.5rem, 7vw, 5rem); background: var(--surface-inverse-deep); color: var(--text-on-inverse); border-block-start: calc(var(--hairline-width) * 3) solid var(--accent-mark-fill); }
.site-footer h2 { color: var(--text-on-inverse); }
.site-footer__grid { display: grid; grid-template-columns: minmax(0, 1.5fr) repeat(2, minmax(10rem, 1fr)); gap: 2rem; }
.site-footer__grid--wide { grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(9rem, 1fr)); }
.site-footer__grid > * > h2 { font-family:var(--font-body);font-size:clamp(20px, 2.4vw, 26px);line-height:1.3;letter-spacing:0em;font-weight:600;text-transform:none; color: var(--text-on-inverse); }
.site-footer__grid > section > h2 a { color: var(--accent-mark-on-inverse); text-decoration: none; }
.site-footer__phone a { color: var(--text-on-inverse); font-family: var(--font-display); font-size: 1.25em; font-weight: 700; font-variant-numeric: tabular-nums; }
.site-footer a { display: inline-flex; min-block-size: 44px; align-items: center; color: var(--text-on-inverse-secondary); }
.site-footer ul { margin: 0; padding: 0; list-style: none; }
.site-footer li + li { margin-block-start: 0.45rem; }
.site-footer__legal { margin-block-start: 2rem; padding-block-start: 1rem; border-block-start: var(--hairline-width) solid var(--hairline-inverse); color: var(--text-on-inverse-secondary); font-size: 0.85em; }
.visually-hidden { position: absolute !important; inline-size: 1px !important; block-size: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }

@media (max-width: 768px) {
  :root { --gutter: max(16px, 24px); }
  .site-header__inner { grid-template-columns: minmax(0, 1fr) auto auto; gap: 0.75rem; padding-block: 0.6rem; position: relative; }
  .primary-nav { display: none; }
  .mobile-nav-disclosure { display: block; }
  .mobile-nav-disclosure summary { display: inline-flex; padding-inline: 0.75rem; border: var(--hairline-width) solid var(--hairline-inverse); border-radius: var(--radius-input); color: var(--text-on-inverse); font-weight: 700; }
  .mobile-nav { position: absolute; inset-block-start: 100%; inset-inline: 0; max-block-size: calc(100vh - 72px); overflow-y: auto; z-index: 30; background: var(--surface-inverse-deep); border-block: var(--hairline-width) solid var(--hairline-inverse); }
  .mobile-nav ul { display: grid; margin: 0; padding: 0.5rem; list-style: none; }
  .mobile-nav a { display: flex; min-block-size: 44px; align-items: center; padding-inline: 1rem; color: var(--text-on-inverse-secondary); text-decoration: none; }
  .mobile-nav a[aria-current="page"] { color: var(--accent-mark-on-inverse); text-decoration: underline; text-underline-offset: 0.35em; }
  .header-actions__phone { display: none; }
  .hero__grid, .site-footer__grid, .site-footer__grid--wide { grid-template-columns: minmax(0, 1fr); }
  .service-cards { grid-template-columns: minmax(0, 1fr); }
  .section-head { text-align: start; }
  .section-head h2::after, .section-head__intro { margin-inline: 0; }
  .steps { grid-template-columns: minmax(0, 1fr); }
  .money-layout { grid-template-columns: minmax(0, 1fr); }
  .money-layout__article, .money-layout__rail { grid-column: 1 / -1; }
  .money-layout__rail { position: static; inset-block-start: auto; }
  .spec-table th { inline-size: 40%; }
}

@media (max-width: 420px) {
  .button-row { align-items: stretch; }
  .button-row .button { inline-size: 100%; }
  .header-actions .button { min-block-size: 48px; padding-inline: 0.75rem; }
}
