:root{--primary:#2421CA;--primary-hover:#1815AC;--primary-60:#6260DC;--primary-70:#8E8DE2;--primary-90:#E0E0F5;--cta:#2421CA;--cta-hover:#1815AC;--cta-ink:#FFFFFF;--black:#000000;--ink:#000000;--body:#1F2328;--muted:#5B636C;--line:#E5E7EB;--link:#2421CA;--on-primary:#FFFFFF;--bg:#FFFFFF;--bg-alt:#F5F6F8;--surface:#FFFFFF;--wrap:1140px;--shadow:0 1px 2px rgba(0,0,0,.05);--r-sm:6px;--r-md:14px;--r-lg:28px;--r-xl:36px;--r-full:9999px;--r-btn:18px;--font-head:"DM Serif Display",Georgia,"Times New Roman",serif;--font-body:"DM Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;--section-pad-d:60px;--section-pad-m:44px;--grid-gap:22px;--head-weight:500;--body-size:16px;--body-leading:1.5;--transition:.15s;--accent:#A9661E;--accent-soft:#F5EBE0;--accent-ink:#FFFFFF;--band-bg:#0B0B0C;--band-ink:#E5E7EB;--band-muted:#AAB0B7;--n-50:#F9FAFB;--n-300:#D1D5DB;--n-500:#6B7280;--n-800:#1F2937;--sh-lg:0 18px 44px rgba(0,0,0,.28);--h1:clamp(28px,4.2vw,36px);--h2:clamp(22px,3vw,26px);--h3:clamp(20px,1.6vw,22px);--h4:clamp(18px,1.4vw,20px);--heading-tracking:-0.01em;--measure:760px}
*{box-sizing:border-box}
/* scrollbar-gutter:stable — expanding an accordion/FAQ must not grow the page
   into scrollbar territory and shove the whole layout sideways (operator rule) */
html{scroll-behavior:smooth;scrollbar-gutter:stable}
body{margin:0;font-family:var(--font-body);color:var(--body);background:var(--bg);
  line-height:var(--body-leading);font-size:var(--body-size);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--font-head);color:var(--ink);line-height:1.15;
  margin:0 0 .5em;letter-spacing:var(--heading-tracking)}
h1{font-size:var(--h1);font-weight:var(--head-weight)}
h2{font-size:var(--h2);font-weight:var(--head-weight)}
h3{font-size:var(--h3);font-weight:var(--head-weight)}
h4{font-size:var(--h4);font-weight:var(--head-weight)}
p{margin:0 0 1rem}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%;height:auto}
.lhn-wrap-c7x{max-width:var(--wrap);margin:0 auto;padding:0 20px}
.lhn-section-c7x{padding:var(--section-pad-d) 0}
.lhn-section--alt-c7x{background:var(--bg-alt)}
.lhn-section--dark-c7x{background:var(--band-bg);color:var(--band-ink)}
.lhn-section--dark-c7x h2,.lhn-section--dark-c7x h3{color:#FFF}
/* Head → content rhythm (rule 39): ONE gap from a section's head to its
   content everywhere; hero and CTA blocks keep their own rules. */
.lhn-section-c7x .lhn-eyebrow-c7x{margin:0 0 10px}
.lhn-eyebrow-c7x + h2,.lhn-eyebrow-c7x + h1{margin-top:0}
.lhn-section-c7x h2 + .lhn-lead-c7x,.lhn-section-c7x h2 + p.lhn-mw-760-c7x{margin-top:12px}
.lhn-section-c7x .lhn-lead-c7x + *:not(.lhn-lead-c7x),.lhn-section-c7x h2 + *:not(.lhn-lead-c7x):not(p.lhn-mw-760-c7x){margin-top:var(--head-gap)}
.lhn-lead-c7x{font-size:var(--lead);line-height:1.55;color:var(--body)}
.lhn-eyebrow-c7x{text-transform:uppercase;letter-spacing:.08em;font-size:var(--meta);
  font-family:var(--font-head);font-weight:700;color:var(--primary);margin:0 0 .6rem}
/* two-part eyebrow variants (marker + label); inline-block keeps centring intact */
[data-lhn-eb-c7x=line] .lhn-eyebrow-c7x::before{content:"";display:inline-block;width:26px;height:2px;
  background:currentColor;vertical-align:middle;margin-right:12px;opacity:.85}
[data-lhn-eb-c7x=line] .lhn-eyebrow-c7x::after{content:"";display:inline-block;width:26px;height:2px;
  background:currentColor;vertical-align:middle;margin-left:12px;opacity:.85}
/* split: two-part 'PRIMARY / secondary' (brand label + muted descriptor) */
[data-lhn-eb-c7x=split] .lhn-eyebrow-c7x .lhn-eb-a-c7x{color:var(--link)}
[data-lhn-eb-c7x=split] .lhn-eyebrow-c7x .lhn-eb-sep-c7x{color:var(--muted);margin:0 .1em}
[data-lhn-eb-c7x=split] .lhn-eyebrow-c7x .lhn-eb-b-c7x{color:var(--muted)}
/* the hero's surface is theme-owned (light, brand or dark): the kicker keeps the
   hero's own ink and reads as a kicker by weight alone, so it is AA on any surface */
.lhn-hero-c7x .lhn-eyebrow-c7x .lhn-eb-a-c7x{color:inherit}
.lhn-hero-c7x .lhn-eyebrow-c7x .lhn-eb-sep-c7x,.lhn-hero-c7x .lhn-eyebrow-c7x .lhn-eb-b-c7x{color:rgba(255,255,255,.6)}
/* the site's tagline above a hero H1 (hero_motto): the eyebrow's slot and ink,
   read as a sentence rather than a label */
.lhn-eyebrow-c7x.lhn-hero-motto-c7x,.lhn-hero-c7x .lhn-eyebrow-c7x.lhn-hero-motto-c7x{text-transform:none;letter-spacing:normal;
  font-size:var(--ui)}
/* the tagline under the footer wordmark */
.lhn-footer-brandline-c7x .lhn-footer-motto-c7x{margin:6px 0 0;font-weight:600}
.lhn-center-c7x{text-align:center}
.lhn-cta-row-c7x{margin-top:18px}
.lhn-cta-row-c7x.lhn-center-c7x{text-align:center}
.lhn-skip-c7x{position:absolute;left:-9999px;top:8px;z-index:100;background:var(--surface);color:var(--ink);padding:8px 14px;border-radius:var(--r-md);box-shadow:0 2px 8px rgba(0,0,0,.15)}
.lhn-skip-c7x:focus{left:8px}
main{display:block}
/* measure (skin, 14th round): every reading column on a site shares ONE
   measure and one wide sibling — blocks were wide, narrow and everywhere in
   between. mw-640 stays a form column. */
:root{--measure:760px;--measure-wide:880px;--meta:.82rem;--small:.92rem;--ui:.96rem;--lead:1.125rem;--big:1.35rem;--display:1.9rem;--glyph:1.2rem;--head-gap:28px;--eyebrow-gap:10px}
[data-lhn-measure-c7x=compact]{--measure:700px;--measure-wide:840px}
[data-lhn-measure-c7x=roomy]{--measure:820px;--measure-wide:960px}
.lhn-mw-720-c7x{max-width:var(--measure);margin-left:auto;margin-right:auto}
.lhn-mw-760-c7x{max-width:var(--measure);margin-left:auto;margin-right:auto}
.lhn-lead-narrow-c7x{max-width:var(--measure)}
.lhn-form-card--narrow-c7x{max-width:520px}
.lhn-mw-640-c7x{max-width:640px;margin-left:auto;margin-right:auto}
.lhn-mw-880-c7x{max-width:var(--measure-wide);margin-left:auto;margin-right:auto}
/* buttons */
.lhn-btn-c7x{display:inline-block;background:var(--cta);color:var(--cta-ink);font-family:var(--font-body);
  font-weight:600;padding:9px 20px;min-height:40px;line-height:22px;border-radius:var(--r-btn);
  border:0;cursor:pointer;font-size:16px;text-align:center;transition:background var(--transition) ease}
.lhn-btn-c7x:hover{background:var(--cta-hover);text-decoration:none;color:var(--cta-ink)}
.lhn-btn--lg-c7x{padding:13px 28px;font-size:var(--lead);min-width:220px;min-height:48px}
/* btn--light: the primary on a near-black hero box/panel when the brand CTA
   itself is dark (a dark fill on a dark surface inverts the hierarchy under
   the outline secondary). White fill, ink text; _hero_primary_cls applies it
   wherever the surface is certainly dark, never on photographic heroes whose
   brightness is unknowable. */
.lhn-btn--light-c7x{background:#FFF;color:var(--ink)}
.lhn-btn--light-c7x:hover{background:var(--bg-alt);color:var(--ink)}

/* header + nav */
.lhn-site-header-c7x{position:sticky;top:0;z-index:50;background:#FFF;border-bottom:1px solid var(--line)}
.lhn-header-inner-c7x{display:flex;align-items:center;justify-content:space-between;
  gap:18px;padding:14px 20px;max-width:var(--wrap);margin:0 auto}
.lhn-brand-c7x{display:flex;align-items:center;gap:10px;font-family:var(--font-head);
  font-weight:700;font-size:var(--big)}
.lhn-brand-c7x:hover{text-decoration:none}
.lhn-brand-c7x svg{display:block}
.lhn-header-actions-c7x{display:flex;align-items:center;gap:12px}
/* header CTA: a colour-differentiated LINK in the link row — the brand
   colour and a heavier weight set it apart, nothing else. Operator (13th
   round): a tinted pill in the nav bar "just looks wrong" — when the CTA
   sits among the links it is styled as a link, never a button. */
/* nav_cta_style=link: the CTA is EXACTLY a nav link — same weight, size and
   box as .lhn-nav-links-c7x a; the brand colour is the only difference. */
/* The header CTA is a one-line control. An inline-flex row centres the label
   and any leading glyph on the same vertical axis. A plain inline anchor put
   the glyph's box on the text baseline, so the arrow rode high and the label
   sat low (operator). The padding and line-height still carry the link
   metrics. */
.lhn-nav-cta-c7x{display:inline-flex;align-items:center;color:var(--primary);font-weight:600;
  font-size:var(--ui);padding:13px 16px;
  border-bottom:3px solid transparent;white-space:nowrap;text-decoration:none;
  line-height:1.4;transition:color var(--transition) ease}
.lhn-nav-cta-c7x:hover{border-bottom-color:var(--primary);text-decoration:none}
/* every layout breaks the CTA out of .lhn-nav-links-c7x, so only the tworow nav row
   ever needs to centre it as a flex item */
.lhn-header-navrow-c7x .lhn-nav-cta-c7x{align-self:center}
/* nav_cta_style violators: the CTA broken out of the link row with ONE
   distinctive treatment — never a filled pill. The glyph centres itself, so
   the arrow holds the label's midline even if a future rule drops the
   anchor's inline-flex. */
.lhn-nav-cta--arrow-c7x .lhn-nav-cta-glyph-c7x{display:inline-flex;align-items:center;vertical-align:middle;
  margin-left:.35em;transition:transform .2s}
.lhn-nav-cta--arrow-c7x:hover .lhn-nav-cta-glyph-c7x{transform:translateX(3px)}
.lhn-nav-cta--highlight-c7x{background:linear-gradient(transparent 58%,var(--primary-90) 58%);
  border-bottom:0;padding:8px 6px;margin:0 10px}
.lhn-nav-cta--highlight-c7x:hover{background:linear-gradient(transparent 50%,var(--primary-90) 50%)}
.lhn-nav-cta--mark-c7x{position:relative;border-bottom:0}
/* the mark and slide rules span exactly the label: inset by the anchor's
   16px side padding, less the trailing letter-spacing. The mark is an svg,
   which keeps its viewBox ratio unless given an explicit width. */
.lhn-nav-cta-mark-c7x{position:absolute;left:16px;width:calc(100% - 32px - var(--nav-track,0px));bottom:8px;height:6px;
  color:var(--primary);opacity:.8}
.lhn-nav-cta--mark-c7x:hover .lhn-nav-cta-mark-c7x{opacity:1}
.lhn-nav-cta--slide-c7x{position:relative;border-bottom:0}
.lhn-nav-cta--slide-c7x::after{content:"";position:absolute;left:16px;right:calc(16px + var(--nav-track,0px));bottom:9px;height:2px;
  background:var(--primary);transform:scaleX(0);transform-origin:left;transition:transform .25s}
.lhn-nav-cta--slide-c7x:hover::after{transform:scaleX(1)}
/* R24: the outline CTA follows the build's button radius (--r-btn) — a
   hard-coded square (or full) corner beside rounded page buttons read as a
   different site's chrome; `pill` (hard-coded full radius) is retired. */
.lhn-nav-cta--boxed-c7x{border:1.5px solid var(--primary);border-radius:var(--r-btn);padding:8px 14px;margin:0 8px}
.lhn-nav-cta--boxed-c7x:hover{background:var(--primary-90)}
.lhn-nav-cta-icon-c7x{display:inline-flex;vertical-align:middle;margin-left:.4em}
.lhn-nav-cta-icon-c7x svg{display:block;width:14px;height:14px}
@media(prefers-reduced-motion:reduce){.lhn-nav-cta--arrow-c7x .lhn-nav-cta-glyph-c7x,.lhn-nav-cta--slide-c7x::after,.lhn-more-c7x .lhn-glyph-c7x{transition:none}}
.lhn-mainnav-c7x{--nav-surface:transparent;--nav-fg:var(--ink);--nav-fg-muted:var(--muted);
  background:var(--nav-surface)}
.lhn-nav-inner-c7x{display:flex;align-items:center;justify-content:space-between;
  max-width:var(--wrap);margin:0 auto;padding:0 12px}
.lhn-nav-links-c7x{display:flex;align-items:center;gap:6px;list-style:none;margin:0;padding:0}
.lhn-nav-links-c7x a{display:block;color:var(--nav-fg);font-weight:600;font-size:var(--ui);
  padding:13px 16px;border-bottom:3px solid transparent;line-height:1.4}
.lhn-nav-links-c7x a:hover,.lhn-nav-links-c7x a[aria-current=page]{text-decoration:none;
  color:var(--nav-fg);border-bottom-color:var(--primary)}
.lhn-menu-toggle-c7x{display:none;background:none;border:0;cursor:pointer;padding:6px}
.lhn-menu-toggle-c7x span{display:block;width:24px;height:2px;background:var(--black);margin:5px 0}
/* header_layout: centered — brand centred on its own row, one centred link row
   with the CTA as its last item; no left/right split at all */
.lhn-head--centered-c7x .lhn-header-brand-row-c7x{justify-content:center;padding:16px 12px 10px;
  position:relative}
.lhn-nav-cta--corner-c7x{position:absolute;right:12px;top:50%;transform:translateY(-50%)}
.lhn-head--centered-c7x .lhn-nav-inner-c7x{justify-content:center}
.lhn-head--centered-c7x .lhn-nav-center-c7x{display:flex;align-items:center;gap:2px;flex-wrap:wrap;
  justify-content:center}
.lhn-head--centered-c7x .lhn-nav-links-c7x a,.lhn-head--centered-c7x .lhn-nav-parent-c7x{padding:10px 14px}
/* I1 (R20): the nav CTA is a conversion control, never a page in the nav —
   it must never pick up the active-page marker. The .lhn-site-header-scoped-c7x
   selectors outrank the head--* aria-current link styles on specificity, so
   the reset holds wherever it sits in the sheet. */
.lhn-site-header-c7x .lhn-nav-links-c7x .lhn-nav-cta-c7x[aria-current],.lhn-site-header-c7x .lhn-nav-links-c7x .lhn-nav-cta-c7x.lhn-is-active-c7x,
.lhn-nav-cta-c7x[aria-current],.lhn-nav-cta-c7x.lhn-is-active-c7x{text-decoration:none;border-bottom:0;background:none}
/* header_layout: brandcenter — ONE row: links left, the brand dead-centre
   (the mark-above stacked lockup when the site ships one), About + CTA right.
   The side columns are minmax(0,1fr), NOT bare 1fr: a bare 1fr column has an
   implicit min-width of its content, so a five-link left group grew past its
   half and shoved the brand right of centre (operator: a logo drifting right
   reads as broken; centred is fine). Equal zero-min columns pin the brand to
   the true centre; _header_layout_fits offers this layout only when the left
   group fits inside its half. */
.lhn-head--brandcenter-c7x .lhn-header-inner-c7x{display:grid;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:center;gap:12px;padding-top:18px;padding-bottom:18px}
.lhn-head--brandcenter-c7x .lhn-brand-c7x{grid-column:2;justify-self:center}
.lhn-head--brandcenter-c7x .lhn-hc-right-c7x{display:flex;align-items:center;justify-content:flex-end;
  gap:8px}
.lhn-head--brandcenter-c7x .lhn-header-actions-c7x{min-width:0}
.lhn-head--brandcenter-c7x .lhn-nav-inner-c7x{display:none}
.lhn-head--brandcenter-c7x .lhn-nav-links-c7x{flex-wrap:nowrap}
.lhn-head--brandcenter-c7x .lhn-nav-links-c7x a,.lhn-head--brandcenter-c7x .lhn-nav-parent-c7x{color:var(--ink);
  padding:8px 12px;border-bottom:0;white-space:nowrap}
.lhn-head--brandcenter-c7x .lhn-nav-links-c7x a:hover,.lhn-head--brandcenter-c7x .lhn-nav-links-c7x a[aria-current=page],
.lhn-head--brandcenter-c7x .lhn-nav-parent-c7x.lhn-is-active-c7x{color:var(--primary);border-bottom:0}
.lhn-head--brandcenter-c7x .lhn-header-actions-c7x .lhn-menu-toggle-c7x{display:none}
@media(max-width:1020px){
  .lhn-head--brandcenter-c7x .lhn-header-inner-c7x{display:flex;justify-content:space-between}
  .lhn-head--brandcenter-c7x .lhn-nav-links-c7x{display:none}
  .lhn-head--brandcenter-c7x .lhn-header-actions-c7x .lhn-menu-toggle-c7x{display:block}
  .lhn-head--brandcenter-c7x .lhn-nav-inner-c7x.lhn-open-c7x{display:flex}
  .lhn-head--brandcenter-c7x .lhn-nav-inner-c7x.lhn-open-c7x .lhn-nav-links-c7x{display:flex}
}
/* centered: the actions block exists for the mobile toggle — the CTA already
   lives in the centred link row, so both actions controls hide at desktop and
   the toggle appears at mobile exactly as brandcenter's does. */
.lhn-head--centered-c7x .lhn-header-actions-c7x .lhn-nav-cta-c7x,.lhn-head--centered-c7x .lhn-header-actions-c7x .lhn-menu-toggle-c7x{display:none}
@media(max-width:1020px){
  .lhn-head--centered-c7x .lhn-nav-links-c7x{display:none}
  .lhn-head--centered-c7x .lhn-header-actions-c7x .lhn-menu-toggle-c7x{display:block}
  .lhn-head--centered-c7x .lhn-nav-inner-c7x.lhn-open-c7x{display:flex}
  .lhn-head--centered-c7x .lhn-nav-inner-c7x.lhn-open-c7x .lhn-nav-links-c7x{display:flex}
}
/* (header_layout `drawer` — nav behind a hamburger at EVERY width — is
   retired: operator rule, a hamburger menu never appears on desktop. The
   toggle is a mobile-only control; every desktop layout shows its links.) */

/* header_layout: inline & split move the nav onto the white bar (links are
   dark-on-white; the historical dark `stacked` bar is retired). */
.lhn-head--inline-c7x .lhn-mainnav-c7x,.lhn-head--split-c7x .lhn-mainnav-c7x{--nav-surface:transparent;--nav-fg:var(--ink);
  --nav-fg-muted:var(--muted);background:var(--nav-surface)}
.lhn-head--inline-c7x .lhn-nav-inner-c7x,.lhn-head--split-c7x .lhn-nav-inner-c7x{padding:0;max-width:none;margin:0}
.lhn-head--inline-c7x .lhn-nav-links-c7x a,.lhn-head--split-c7x .lhn-nav-links-c7x a,
.lhn-head--inline-c7x .lhn-nav-parent-c7x,.lhn-head--split-c7x .lhn-nav-parent-c7x{color:var(--nav-fg);padding:8px 13px;
  border-bottom:0;white-space:nowrap}
.lhn-head--inline-c7x .lhn-nav-links-c7x a:hover,.lhn-head--inline-c7x .lhn-nav-links-c7x a[aria-current=page],
.lhn-head--split-c7x .lhn-nav-links-c7x a:hover,.lhn-head--split-c7x .lhn-nav-links-c7x a[aria-current=page],
.lhn-head--inline-c7x .lhn-nav-parent-c7x.lhn-is-active-c7x,.lhn-head--split-c7x .lhn-nav-parent-c7x.lhn-is-active-c7x{color:var(--primary);
  border-bottom:0}
/* inline: one row — brand | nav (fills the middle) | actions. */
.lhn-head--inline-c7x .lhn-mainnav-c7x{flex:1}
.lhn-head--inline-c7x .lhn-nav-inner-c7x{justify-content:space-between;gap:18px}
/* split: one row — brand left, the nav CENTRED in the free middle, CTA pinned
   right. (It used to cluster nav + CTA on the right, which was a near
   duplicate of inline; the centred link row is a genuinely different header.) */
.lhn-head--split-c7x .lhn-header-cluster-c7x{flex:1;display:grid;grid-template-columns:1fr auto;
  align-items:center;gap:20px}
.lhn-head--split-c7x .lhn-mainnav-c7x{justify-self:center}
.lhn-head--split-c7x .lhn-nav-inner-c7x{gap:2px}
/* header_layout: dual_end — brand | mid links | end-cluster (outline secondary
   + solid primary). Cluster sits OUTSIDE .lhn-nav-links-c7x (R2 still forbids pills
   inside the link row; end-cluster dual buttons are OK). Mobile wave-1 shows
   a single primary in .lhn-nav-cta-cluster--menu-c7x when the menu is open. */
.lhn-head--dual_end-c7x .lhn-header-inner-c7x{display:flex;align-items:center;gap:16px;
  justify-content:space-between}
.lhn-head--dual_end-c7x .lhn-mainnav-c7x{flex:1;min-width:0}
.lhn-head--dual_end-c7x .lhn-nav-inner-c7x{padding:0;max-width:none;margin:0;justify-content:center}
.lhn-head--dual_end-c7x .lhn-nav-links-c7x{flex-wrap:nowrap;justify-content:center}
.lhn-head--dual_end-c7x .lhn-nav-links-c7x a,.lhn-head--dual_end-c7x .lhn-nav-parent-c7x{color:var(--ink);
  padding:8px 12px;border-bottom:0;white-space:nowrap}
.lhn-head--dual_end-c7x .lhn-nav-links-c7x a:hover,.lhn-head--dual_end-c7x .lhn-nav-links-c7x a[aria-current=page],
.lhn-head--dual_end-c7x .lhn-nav-parent-c7x.lhn-is-active-c7x{color:var(--primary);border-bottom:0}
.lhn-nav-cta-cluster-c7x{display:flex;align-items:center;gap:10px;flex-shrink:0}
.lhn-nav-cta-cluster-c7x .lhn-nav-cta-c7x{min-height:44px;display:inline-flex;align-items:center;
  justify-content:center;box-sizing:border-box}
.lhn-nav-cta-cluster-c7x .lhn-nav-cta--boxed-c7x{margin:0}
.lhn-nav-cta-cluster--menu-c7x{display:none}
.lhn-head--dual_end-c7x .lhn-header-actions-c7x .lhn-nav-cta-c7x{display:none}
@media(max-width:680px){
  .lhn-head--dual_end-c7x .lhn-nav-cta-cluster-c7x:not(.lhn-nav-cta-cluster--menu-c7x){display:none}
}
@media(max-width:1020px){
  .lhn-nav-inner-c7x.lhn-open-c7x .lhn-nav-cta-cluster--menu-c7x{display:flex;
    flex-direction:column;padding:12px 20px 4px;gap:10px}
  .lhn-nav-cta-cluster--menu-c7x .lhn-nav-cta-c7x{width:100%;justify-content:center}
  /* On mobile EVERY layout collapses to the same light dropdown pinned below
     the header row (operator rules: never a dark nav surface; and the in-flow
     open used to stretch the header row so the brand floated mid-menu — the
     dropdown must be an overlay, not part of the row). */
  .lhn-nav-inner-c7x.lhn-open-c7x{position:absolute;left:0;right:0;top:100%;z-index:40;
    display:flex;flex-direction:column;--nav-surface:var(--surface);
    --nav-fg:var(--ink);--nav-fg-muted:var(--muted);
    background:var(--nav-surface);padding:8px 0 14px;
    border-bottom:1px solid var(--line);box-shadow:var(--shadow)}
  .lhn-nav-inner-c7x.lhn-open-c7x .lhn-nav-links-c7x{flex-direction:column;align-items:stretch;width:100%}
}
@media(max-width:680px){
  .lhn-head--split-c7x .lhn-header-cluster-c7x{gap:0;grid-template-columns:auto}
  .lhn-head--split-c7x .lhn-mainnav-c7x{justify-self:stretch}
  .lhn-site-header-c7x{position:sticky}
}

/* hero (background varies by imagery strategy; filled by _hero_css via .lhn-hero-c7x{position:relative;color:#FFF;padding:72px 0 88px;background-color:var(--black);background-size:cover;background-position:center}
.lhn-hero-c7x{background-image:linear-gradient(rgba(12,13,14,.90),rgba(12,13,14,.82)),url(/assets/img/image.avif)}
.lhn-hero--svc-pre-purchase-drone-surveys-c7x{background-image:linear-gradient(rgba(12,13,14,.90),rgba(12,13,14,.82)),url(/assets/img/city-skyline-sunset-water.avif)}
.lhn-hero--svc-roof-drone-surveys-c7x{background-image:linear-gradient(rgba(12,13,14,.90),rgba(12,13,14,.82)),url(/assets/img/city-skyline-sunset-water.avif)}
.lhn-hero--svc-storm-damage-drone-surveys-c7x{background-image:linear-gradient(rgba(12,13,14,.90),rgba(12,13,14,.82)),url(/assets/img/city-skyline-sunset-water.avif)}
.lhn-hero--splitrev-c7x{background-image:linear-gradient(90deg,rgba(17,10,10,.94) 0%,rgba(17,10,10,.72) 34%,rgba(17,10,10,0) 68%),url(/assets/img/image.avif);background-position:left center,right center}
.lhn-hero--boxed-c7x .lhn-hero-box-c7x{background-image:linear-gradient(rgba(12,13,14,.90),rgba(12,13,14,.82)),url(/assets/img/image.avif)}) */
.lhn-hero-c7x{position:relative;color:#FFF;padding:72px 0 88px;background-color:var(--black);background-size:cover;background-position:center}
.lhn-hero-c7x{background-image:linear-gradient(rgba(12,13,14,.90),rgba(12,13,14,.82)),url(/assets/img/image.avif)}
.lhn-hero--svc-pre-purchase-drone-surveys-c7x{background-image:linear-gradient(rgba(12,13,14,.90),rgba(12,13,14,.82)),url(/assets/img/city-skyline-sunset-water.avif)}
.lhn-hero--svc-roof-drone-surveys-c7x{background-image:linear-gradient(rgba(12,13,14,.90),rgba(12,13,14,.82)),url(/assets/img/city-skyline-sunset-water.avif)}
.lhn-hero--svc-storm-damage-drone-surveys-c7x{background-image:linear-gradient(rgba(12,13,14,.90),rgba(12,13,14,.82)),url(/assets/img/city-skyline-sunset-water.avif)}
.lhn-hero--splitrev-c7x{background-image:linear-gradient(90deg,rgba(17,10,10,.94) 0%,rgba(17,10,10,.72) 34%,rgba(17,10,10,0) 68%),url(/assets/img/image.avif);background-position:left center,right center}
.lhn-hero--boxed-c7x .lhn-hero-box-c7x{background-image:linear-gradient(rgba(12,13,14,.90),rgba(12,13,14,.82)),url(/assets/img/image.avif)}
.lhn-hero-c7x h1{color:#FFF}
.lhn-hero-c7x .lhn-lead-c7x{color:#F1E7E7}
.lhn-hero-c7x .lhn-eyebrow-c7x{color:#F6C9CA}
.lhn-hero-grid-c7x{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center}
/* flipped two-column: media card first (left), copy right — used by the
   per-town "why" section rotation so location pages don't all share one shape */
.lhn-hero-grid--flip-c7x{grid-template-columns:.9fr 1.1fr}
.lhn-why-head-c7x{margin-bottom:26px}
.lhn-hero-copy-c7x{max-width:680px}
/* hero proof points: a tidy inline ticked row (brand ticks), not a tall stacked
   checklist crammed into the hero copy. Wraps to as many lines as it needs. */
.lhn-hero-proof-c7x{list-style:none;padding:0;margin:18px 0 22px;display:flex;flex-wrap:wrap;
  gap:9px 22px}
.lhn-hero-proof-c7x li{position:relative;padding-left:26px;color:#F2ECEC;font-weight:600;font-size:var(--small)}
.lhn-hero-proof-c7x li::before{content:"";position:absolute;left:2px;top:3px;width:7px;height:12px;
  border:solid var(--primary-70);border-width:0 3px 3px 0;transform:rotate(42deg)}
.lhn-hero-cta-c7x{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:22px}
/* interior heroes now use the full wrap (left edges match the home hero);
   cap the lead at the theme's reading measure so it stays a column, not a banner */
.lhn-hero-c7x .lhn-lead-c7x{max-width:var(--measure)}
.lhn-hero-c7x .lhn-lead-c7x + .lhn-hero-cta-c7x{margin-top:22px}
/* outline buttons draw their ring with an INSET box-shadow, not a border:
   a border adds 4px to the box, which is why the secondary hero button always
   stood taller than the primary beside it. The inset ring changes nothing
   about layout, so outline and solid share the exact same geometry — for good. */
.lhn-btn--outline-light-c7x{background:transparent;color:#FFF;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.55)}
.lhn-btn--outline-light-c7x:hover{background:#FFF;color:var(--ink);
  box-shadow:inset 0 0 0 2px #FFF}
.lhn-btn--ghost-c7x{background:#FFF;color:var(--black);
  box-shadow:inset 0 0 0 2px var(--black)}
.lhn-btn--ghost-c7x:hover{background:var(--black);color:#FFF}
/* hero_variant: structural home-hero layouts (AC-1.1). `stack` needs no rule.
   (The retired `split` container's aside-card CSS is gone with it.) */
/* splitrev: copy sits left over the directional scrim from _hero_css, so cap the
   copy column to keep the right half carrying the photo. */
.lhn-hero--splitrev-c7x .lhn-hero-copy-c7x{max-width:540px}
/* strip: a full-width ticked proof band beneath the hero copy (banner + stack). */
.lhn-hero-strip-c7x{margin-top:34px;border-top:1px solid rgba(255,255,255,.16);
  background:rgba(0,0,0,.14)}
.lhn-hero-strip-c7x .lhn-wrap-c7x{padding-top:20px;padding-bottom:20px}
.lhn-hero--banner-c7x .lhn-hero-strip-c7x{margin-top:40px}
/* a hero ending in the USP strip must not leave dead hero below it (stack
   variant kept its bottom padding, which read as a huge empty bar). ONLY a
   hero that actually carries the strip drops its bottom padding — the old
   unconditional banner zero-padding rule left the CTA buttons flush
   against the hero's bottom edge whenever the banner had no strip (operator
   complaint: "no padding after the CTA buttons"). The class is set by the
   builder; the :has() rule is the belt to that brace. */
.lhn-hero--has-strip-c7x,.lhn-hero-c7x:has(> .lhn-hero-strip-c7x){padding-bottom:0}
/* fullbleed: a tall poster — the hero fills most of the viewport with the copy
   over the photo. (It used to carry no rule at all, so it rendered
   byte-identical to `stack`.) Needs a photo hero: _hero_variant_fits keeps it
   out of the draw for a typographic site. The copy is centred in
   the poster, NOT anchored to the bottom edge: bottom-anchoring left a deep
   gap above the eyebrow and the CTA buttons hugging the hero's bottom edge
   (operator: reads as broken). Hero padding is never tighter below the CTAs
   than above the copy — rule 27. */
.lhn-hero--fullbleed-c7x{min-height:min(72vh,680px);display:flex;flex-direction:column;
  justify-content:center;padding-top:72px;padding-bottom:72px}
.lhn-hero--fullbleed-c7x>.lhn-wrap-c7x{width:100%}
.lhn-hero--fullbleed-c7x .lhn-hero-copy-c7x{max-width:620px}
@media(max-width:680px){.lhn-hero--fullbleed-c7x{min-height:0}}
.lhn-hero-proof--strip-c7x{margin:0;justify-content:center;gap:12px 30px}
.lhn-hero-proof--strip-c7x li{margin:0}

/* --- Footprint knobs (per-site variance, set via body data-attributes) --- */
/* hero_align: centre every hero's copy (default left needs no rule). Centres the
   copy column, its text, the USP list and the CTA row so the whole hero reads as
   deliberately centred rather than a left block nudged over. */
/* hero_align=center must centre the WHOLE hero grammar — eyebrow, H1, lead and
   CTA rows together. Centring only .lhn-hero-copy-c7x left heroes whose builders emit
   bare children (no .lhn-hero-copy-c7x wrapper: area/service heroes) with a mixed
   left-heading/centred-body hero (operator rule: never a mix). */
[data-lhn-halign-c7x=center] .lhn-hero-c7x{text-align:center}
[data-lhn-halign-c7x=center] .lhn-hero-c7x .lhn-hero-copy-c7x{margin-left:auto;margin-right:auto;text-align:center}
[data-lhn-halign-c7x=center] .lhn-hero-c7x .lhn-wrap-c7x.lhn-mw-760-c7x{text-align:center}
[data-lhn-halign-c7x=center] .lhn-hero-c7x .lhn-hero-cta-c7x{justify-content:center}
/* eyebrow markers with rule pseudo-elements re-centre via their own rules;
   keep the eyebrow text centred with the heading */
[data-lhn-halign-c7x=center] .lhn-hero-c7x .lhn-eyebrow-c7x{text-align:center}
/* a hero whose copy sits in a .lhn-center-c7x container keeps copy, buttons + proof
   aligned with the text (left halign + centered copy used to leave the copy
   block hugging the left edge and the CTA row adrift) */
.lhn-center-c7x .lhn-hero-copy-c7x{margin-left:auto;margin-right:auto}
.lhn-center-c7x .lhn-hero-cta-c7x{justify-content:center}
.lhn-center-c7x .lhn-hero-proof-c7x{justify-content:center}
[data-lhn-halign-c7x=center] .lhn-hero-c7x .lhn-lead-c7x{margin-left:auto;margin-right:auto}
[data-lhn-halign-c7x=center] .lhn-hero-c7x .lhn-hero-proof-c7x{justify-content:center}
/* heading_case: title-case sites capitalise section headings for a formal look;
   sentence-case sites leave headings as authored. The <title> tag is never touched
   (it is set server-side, not via this rule). Applied to content headings only. */
[data-lhn-headcase-c7x=title] h1,[data-lhn-headcase-c7x=title] h2,[data-lhn-headcase-c7x=title] h3{text-transform:capitalize}
/* container: 'contained' narrows the shared max-column for a tighter, editorial feel;
   'full' (default via :root --wrap) reads wider. Set on body so it cascades to .lhn-wrap-c7x. */
[data-lhn-container-c7x=contained]{--wrap:1040px}
/* nav_caps: uppercase primary nav labels with tracking (default 'normal' = as-is). */
[data-lhn-navcaps-c7x=upper] .lhn-nav-links-c7x a,[data-lhn-navcaps-c7x=upper] .lhn-nav-parent-c7x,
[data-lhn-navcaps-c7x=upper] .lhn-nav-cta-c7x{--nav-track:.04em;
  text-transform:uppercase;letter-spacing:var(--nav-track);font-size:var(--ui)}
/* R23 (C1): every rendered CTA carries nav-cta--<style> (`link` is retired);
   `solid` is a filled brand button that never renders inside .lhn-nav-links-c7x. */
.lhn-nav-cta--solid-c7x{background:var(--primary);color:var(--bg,#FFF);border-bottom:0;
  border-radius:var(--r-btn,var(--r-full));padding:8px 16px;font-weight:600}
.lhn-nav-cta--solid-c7x:hover{background:var(--primary-hover,var(--primary));color:var(--bg,#FFF)}
/* R25 (C1.2): a corner CTA is the build's PRIMARY button — the .lhn-btn-c7x grammar,
   never an outline box, an underline stroke or bare text. Placed after every
   .lhn-nav-cta---c7x<style> rule so it wins on equal specificity; the text-only
   decorations (highlight gradient, slide stroke, mark) are reset on the
   corner so it never carries them even transiently. The 3px link underline
   border is dropped too: it is transparent on a text link but adds 3px under
   a filled button and pushes the label off centre (operator). */
.lhn-nav-cta--corner-c7x{background:var(--cta);color:var(--cta-ink);border-bottom:0;
  border-radius:var(--r-btn);padding:9px 20px;font-weight:600;min-height:40px;
  line-height:22px}
.lhn-nav-cta--corner-c7x:hover{background:var(--cta-hover);color:var(--cta-ink);text-decoration:none}
.lhn-nav-cta--corner-c7x.lhn-nav-cta--boxed-c7x{border:0}
.lhn-nav-cta--corner-c7x.lhn-nav-cta--highlight-c7x{background-image:none}
.lhn-nav-cta--corner-c7x.lhn-nav-cta--slide-c7x::after,.lhn-nav-cta--corner-c7x.lhn-nav-cta--mark-c7x::after{content:none}

/* ---- deepened variant pools (Sep 2026): footer / header / hero / CTA /
   services / intro / contact / areas structures. Theme tokens only. ---- */
/* footer_style: split — brand half | 2x2 link groups */
.lhn-footer-split-c7x{display:grid;grid-template-columns:1.1fr 1fr;gap:48px;padding:56px 0 32px}
.lhn-footer-split-brand-c7x .lhn-footer-tagline-c7x{margin:12px 0 0;max-width:420px}
.lhn-footer-split-links-c7x{display:grid;grid-template-columns:repeat(2,1fr);gap:28px 32px}
/* footer_style: contactbar — three contact cells, one link row */
.lhn-footer-cbar--two-c7x{grid-template-columns:1.2fr 1fr}
.lhn-footer-cbar-c7x{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:32px;padding:48px 0 28px;
  border-bottom:1px solid var(--n-800)}
.lhn-footer-cell-c7x .lhn-footer-tagline-c7x{margin:10px 0 0;max-width:380px}
.lhn-footer-cell-c7x .lhn-footer-addr-c7x,.lhn-footer-cell-c7x .lhn-footer-email-c7x{margin-top:0}
.lhn-footer-nav--row-c7x{padding:22px 0 18px}
/* footer_style: sitemap — a grouped full-width index over the brand row */
.lhn-footer-sitemap-c7x{padding:48px 0 24px}
/* auto-fit, not repeat(4,1fr): the Explore column is empty on a site with
   no guides / tools / use cases, and a fixed 4-track grid left a quarter of
   the wrap dead on the right (the R22/A8 complaint). Same pattern as
   .lhn-footer-grid--nap-c7x. */
.lhn-footer-sitemap-groups-c7x{display:grid;
  grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:28px 32px}
.lhn-footer-sitemap-brand-c7x{display:flex;flex-wrap:wrap;gap:8px 40px;align-items:flex-start;
  padding:22px 0 24px;border-top:1px solid var(--n-800)}
.lhn-footer-sitemap-brand-c7x .lhn-footer-addr-c7x,.lhn-footer-sitemap-brand-c7x .lhn-footer-email-c7x,
.lhn-footer-sitemap-brand-c7x .lhn-footer-phone-c7x{margin:0}
/* footer_style: minimal — one row */
.lhn-footer-minimal-c7x{display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:14px 28px;padding:30px 0 10px}
.lhn-footer-minimal-contact-c7x .lhn-footer-email-c7x,.lhn-footer-minimal-contact-c7x .lhn-footer-phone-c7x{margin:0;display:inline-block}
.lhn-footer-minimal-contact-c7x .lhn-footer-phone-c7x{margin-left:18px}
/* footer_style: boxed — the columns footer in a contained rounded panel */
.lhn-footer--boxed-c7x{background:var(--bg-alt);padding:0 0 32px}
.lhn-footer--boxed-c7x>.lhn-wrap-c7x.lhn-footer-box-c7x{background:var(--band-bg);border-radius:var(--r-xl);
  padding:8px 40px 10px}
.lhn-footer--boxed-c7x .lhn-footer-grid-c7x{padding:44px 0 28px}
@media(max-width:820px){
  .lhn-footer-split-c7x{grid-template-columns:1fr;gap:30px}
  .lhn-footer-cbar-c7x{grid-template-columns:1fr;gap:22px}
  .lhn-footer-sitemap-groups-c7x{grid-template-columns:repeat(2,1fr)}
  .lhn-footer--boxed-c7x>.lhn-wrap-c7x.lhn-footer-box-c7x{padding:8px 22px 10px;border-radius:var(--r-lg)}
}
@media(max-width:560px){.lhn-footer-sitemap-groups-c7x{grid-template-columns:1fr}}
/* header_layout: tworow — brand + contact row over a left-aligned nav row */
.lhn-head--tworow-c7x .lhn-header-top-c7x{padding-bottom:8px}
.lhn-head--tworow-c7x .lhn-header-top-contact-c7x{display:flex;gap:18px;font-size:var(--small);color:var(--muted)}
.lhn-head--tworow-c7x .lhn-header-top-contact-c7x a{color:var(--primary)}
.lhn-head--tworow-c7x .lhn-header-navrow-c7x{border-top:1px solid var(--line);padding-top:4px;padding-bottom:4px;display:flex;align-items:center}
.lhn-head--tworow-c7x .lhn-mainnav-c7x{flex:1}
.lhn-head--tworow-c7x .lhn-nav-inner-c7x{padding:0;max-width:none;margin:0;justify-content:flex-start}
.lhn-head--tworow-c7x .lhn-nav-links-c7x a,.lhn-head--tworow-c7x .lhn-nav-parent-c7x{color:var(--ink);padding:10px 13px;
  border-bottom:0;white-space:nowrap}
.lhn-head--tworow-c7x .lhn-nav-links-c7x a:hover,.lhn-head--tworow-c7x .lhn-nav-links-c7x a[aria-current=page],
.lhn-head--tworow-c7x .lhn-nav-parent-c7x.lhn-is-active-c7x{color:var(--primary);border-bottom:0}
/* header_layout: pill — the links in a rounded track between brand and CTA */
.lhn-head--pill-c7x .lhn-mainnav-c7x{flex:1;display:flex;justify-content:center}
.lhn-head--pill-c7x .lhn-nav-inner-c7x{background:var(--bg-alt);border-radius:999px;padding:4px 8px;
  max-width:none;margin:0;gap:0}
.lhn-head--pill-c7x .lhn-nav-links-c7x a,.lhn-head--pill-c7x .lhn-nav-parent-c7x{padding:8px 14px;border-bottom:0;
  color:var(--ink);border-radius:999px;white-space:nowrap}
.lhn-head--pill-c7x .lhn-nav-links-c7x a:hover,.lhn-head--pill-c7x .lhn-nav-links-c7x a[aria-current=page],
.lhn-head--pill-c7x .lhn-nav-parent-c7x.lhn-is-active-c7x{background:var(--surface);color:var(--primary);border-bottom:0}
@media(max-width:680px){
  /* tworow collapses to ONE row on mobile: brand left, toggle right (the
     nav row must never sit alone under the brand as a bare hamburger) */
  .lhn-head--tworow-c7x{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}
  .lhn-head--tworow-c7x .lhn-header-top-contact-c7x{display:none}
  .lhn-head--tworow-c7x .lhn-header-top-c7x{flex:1 1 auto;margin:0;padding-bottom:14px}
  .lhn-head--tworow-c7x .lhn-header-navrow-c7x{flex:0 0 auto;margin:0;padding-left:0;
    border-top:0;padding-top:14px;padding-bottom:14px}
  .lhn-head--pill-c7x .lhn-nav-inner-c7x{border-radius:0;background:var(--surface);padding:8px 0 14px}
}
/* hero_variant: boxed — an inset rounded photo panel on the page background,
   with the same gap above and below it (R41: flush on the next band, the
   panel read as cut off) */
.lhn-hero--boxed-c7x{background:var(--bg) !important;background-image:none !important;
  color:var(--ink);padding:26px 0}
.lhn-hero--boxed-c7x .lhn-hero-box-c7x{position:relative;color:#FFF;border-radius:var(--r-xl);
  padding:56px 48px;overflow:hidden;background-size:cover;background-position:center;
  background-color:var(--black)}
.lhn-hero--boxed-c7x.lhn-hero--has-strip-c7x .lhn-hero-box-c7x{padding-bottom:0}
.lhn-hero--boxed-c7x .lhn-hero-strip-c7x{margin:34px -48px 0}
.lhn-hero--boxed-c7x .lhn-hero-strip-c7x .lhn-wrap-c7x{padding-left:48px;padding-right:48px}
/* hero_variant: media — light surface, copy | framed photo */
.lhn-hero--media-c7x,.lhn-hero--light-c7x{background:var(--bg-alt) !important;background-image:none !important;
  color:var(--ink)}
.lhn-hero--light-c7x{background:var(--bg) !important;border-bottom:1px solid var(--line)}
.lhn-hero--media-c7x h1,.lhn-hero--light-c7x h1{color:var(--ink)}
.lhn-hero--media-c7x .lhn-lead-c7x,.lhn-hero--light-c7x .lhn-lead-c7x{color:var(--body)}
.lhn-hero--media-c7x .lhn-eyebrow-c7x,.lhn-hero--light-c7x .lhn-eyebrow-c7x{color:var(--primary)}
.lhn-hero--media-c7x .lhn-hero-proof-c7x li,.lhn-hero--light-c7x .lhn-hero-proof-c7x li{color:var(--ink)}
.lhn-hero--media-c7x .lhn-hero-proof-c7x li::before,.lhn-hero--light-c7x .lhn-hero-proof-c7x li::before{border-color:var(--primary)}
.lhn-hero--media-c7x .lhn-btn--outline-light-c7x,.lhn-hero--light-c7x .lhn-btn--outline-light-c7x{color:var(--ink);
  box-shadow:inset 0 0 0 2px var(--ink)}
.lhn-hero--media-c7x .lhn-btn--outline-light-c7x:hover,.lhn-hero--light-c7x .lhn-btn--outline-light-c7x:hover{background:var(--ink);
  color:#FFF;box-shadow:inset 0 0 0 2px var(--ink)}
.lhn-hero--media-c7x .lhn-hero-strip-c7x,.lhn-hero--light-c7x .lhn-hero-strip-c7x{background:var(--surface);
  border-top:1px solid var(--line)}
.lhn-hero-media-grid-c7x{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center}
.lhn-hero-media-c7x img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;
  border-radius:var(--r-xl);box-shadow:var(--sh-lg)}
@media(max-width:820px){
  .lhn-hero-media-grid-c7x{grid-template-columns:1fr;gap:26px}
  .lhn-hero-media-c7x img{aspect-ratio:16/10}
  .lhn-hero--boxed-c7x .lhn-hero-box-c7x{padding:40px 22px}
  .lhn-hero--boxed-c7x .lhn-hero-strip-c7x{margin:30px -22px 0}
  .lhn-hero--boxed-c7x .lhn-hero-strip-c7x .lhn-wrap-c7x{padding-left:22px;padding-right:22px}
}
/* cta_variant: inline — one tinted bar, copy left, button right */
.lhn-cta-inline-c7x{background:var(--bg-alt);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.lhn-cta-inline-inner-c7x{display:flex;align-items:center;justify-content:space-between;gap:32px;padding:36px 0}
.lhn-cta-inline-c7x h2{margin:.2rem 0 6px}
.lhn-cta-inline-c7x .lhn-lead-c7x{margin:0;color:var(--body);max-width:60ch}
.lhn-cta-inline-action-c7x{flex:0 0 auto}
/* G9: the in-column article CTA is a tinted panel with copy, not a bare
   button in a grey band */
.lhn-cta-inline--in-c7x{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 24px;margin:34px 0;background:var(--bg-alt);border:1px solid var(--line);border-radius:var(--r-md)}
.lhn-cta-inline--in-c7x h3{margin:0 0 4px;font-size:var(--h3)}
.lhn-cta-inline--in-c7x p{margin:0;color:var(--body)}
@media(max-width:640px){.lhn-cta-inline--in-c7x{flex-direction:column;align-items:flex-start}}
/* cta_variant: strip — one brand band, heading + button on one row */
.lhn-cta-strip-c7x{background:var(--primary);color:var(--cta-ink);padding:34px 0}
.lhn-cta-strip-inner-c7x{display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:16px 32px}
.lhn-cta-strip-c7x h2{margin:0;color:var(--cta-ink)}
/* cta_variant: columns — copy | ticks | button on the page surface */
.lhn-cta-cols-c7x{background:var(--bg-alt);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.lhn-cta-cols-inner-c7x{display:grid;grid-template-columns:1.4fr 1fr auto;gap:32px;align-items:center}
.lhn-cta-cols-inner--two-c7x{grid-template-columns:1.4fr auto}
.lhn-cta-cols-copy-c7x .lhn-lead-c7x{margin:0;color:var(--body)}
.lhn-cta-cols-ticks-c7x{color:var(--ink)}
.lhn-cta-cols-c7x .lhn-cta-ticks-c7x{display:block;margin:0;max-width:none;color:var(--ink)}
.lhn-cta-cols-action-c7x{align-self:center}
@media (max-width:820px){.lhn-cta-cols-inner-c7x,.lhn-cta-cols-inner--two-c7x{grid-template-columns:1fr;gap:24px}}
/* cta_variant: minimal — centred sign-off on the page bg under a hairline */
.lhn-cta-minimal-c7x{border-top:1px solid var(--line)}
.lhn-cta-minimal-c7x .lhn-eyebrow-c7x{color:var(--primary)}
.lhn-cta-minimal-c7x .lhn-cta-ticks-c7x{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 26px;
  max-width:none;color:var(--body)}
.lhn-cta-minimal-c7x .lhn-cta-ticks-c7x li{padding-bottom:0}
.lhn-cta-minimal-c7x .lhn-cta-ticks-c7x li::before{background:var(--primary)}
/* cta_variant: dark — the near-black band with the brand button */
.lhn-cta-dark-c7x{background:var(--band-bg);color:var(--band-ink);padding:52px 0;text-align:center}
.lhn-cta-dark-c7x h2{color:var(--band-ink)}
.lhn-cta-dark-c7x .lhn-eyebrow-c7x{color:var(--band-muted)}
.lhn-cta-dark-c7x .lhn-lead-c7x{color:var(--band-muted)}
.lhn-cta-dark-c7x .lhn-cta-ticks-c7x{color:var(--band-muted)}
.lhn-cta-dark-c7x .lhn-cta-ticks-c7x li::before{background:var(--primary-60)}
@media(max-width:820px){.lhn-cta-inline-inner-c7x{flex-direction:column;align-items:flex-start;gap:18px;padding:30px 0}}
/* services_variant: rows — full-width ruled rows in a centred column */
.lhn-svc-rows-c7x{margin:32px auto 0}
.lhn-signs-stack-c7x{display:grid;gap:var(--grid-gap)}
/* intro_variant: panel — the prose in one tinted rounded panel */
.lhn-intro-panel-c7x{background:var(--bg-alt);border-radius:var(--r-xl);padding:40px 44px}
.lhn-intro-panel-c7x h2{margin:.2rem 0 .6rem;max-width:26ch}
.lhn-intro-panel-c7x .lhn-lead-c7x{margin:0;max-width:70ch}
/* contact_variant: stacked — numbered steps row above a full-width form card */
/* Count-matched columns (the promise-grid rule): 2-up, so four steps read
   2x2; three read 3-up; a fifth spans the row. No lone cell at any count. */
.lhn-contact-steps-row-c7x{list-style:none;padding:0;margin:0 0 30px;display:grid;
  grid-template-columns:1fr 1fr;gap:18px}
.lhn-contact-steps-row-c7x li{display:flex;gap:14px;align-items:flex-start;background:var(--bg-alt);
  border-radius:var(--r-md);padding:18px 20px}
.lhn-contact-steps-row-c7x .lhn-cs-num-c7x{flex:0 0 auto;width:32px;height:32px;border-radius:var(--r-full);
  background:var(--primary);color:#FFF;display:flex;align-items:center;justify-content:center;
  font-family:var(--font-head);font-weight:700}
.lhn-contact-steps-row-c7x p{margin:2px 0 0;color:var(--body)}
@media(min-width:821px){
  .lhn-contact-steps-row-c7x:has(li:nth-child(3):last-child){grid-template-columns:repeat(3,1fr)}
  .lhn-contact-steps-row-c7x:has(li:nth-child(5)) li:last-child:nth-child(odd){grid-column:1/-1}
}
@media(max-width:820px){.lhn-contact-steps-row-c7x{grid-template-columns:1fr}}
/* areas_shape: columns (alphabetical index) + tiles (wide tiles) */
.lhn-area-cols-c7x{list-style:none;padding:0;margin:26px 0 0;columns:3;column-gap:36px}
.lhn-area-cols-c7x li{break-inside:avoid;padding:8px 0;border-bottom:1px solid var(--line)}
.lhn-area-cols-c7x a{font-weight:600;color:var(--ink)}
.lhn-area-tiles-c7x{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:26px}
.lhn-area-tile-c7x{display:flex;align-items:center;justify-content:space-between;gap:18px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:22px 26px;color:var(--ink)}
.lhn-area-tile-c7x:hover{text-decoration:none;border-color:var(--n-300);box-shadow:var(--shadow)}
.lhn-area-tile-c7x h3{margin:0}
/* a hub with only a handful of towns (<= 4) takes big two-up tiles so the
   index never reads as a thin row of chips (operator, 13th round). The name
   and its arrow are ONE row sharing a single vertical axis: the base
   .lhn-area-tile-c7x centres both. Pinning the name to the top while the arrow
   stayed centred read as broken alignment (operator, R31). */
.lhn-area-tiles--big-c7x{gap:24px}
.lhn-area-tiles--big-c7x .lhn-area-tile-c7x{padding:32px 32px;min-height:150px}
/* hub groups align to the top row: a shorter group must not vertically
   centre and drop its H3 below the others (operator, R27) */
.lhn-hub-groups-c7x{align-items:start}
.lhn-hub-groups-c7x .lhn-hub-group-c7x{align-self:start}
@media(max-width:820px){.lhn-area-cols-c7x{columns:2}.lhn-area-tiles-c7x{grid-template-columns:1fr}}
@media(max-width:560px){.lhn-area-cols-c7x{columns:1}}

/* cards */
.lhn-grid-c7x{display:grid;gap:var(--grid-gap)}
.lhn-grid-c7x > .lhn-card-c7x{min-width:0}
.lhn-grid-2-c7x{grid-template-columns:repeat(2,1fr)}
.lhn-grid-3-c7x{grid-template-columns:repeat(3,1fr)}
.lhn-grid-4-c7x{grid-template-columns:repeat(4,1fr)}
/* count-matched grids: 4 items read better as 2x2 than a 3+1 orphan row */
.lhn-grid-2x2-c7x{grid-template-columns:repeat(2,1fr);max-width:860px;margin-left:auto;margin-right:auto}
/* A4: a capped container under a LEFT head hugs the left edge of the wrap;
   under a centred head it stays centred (one width + one alignment per block) */
/* B3 (R23): EVERY capped / auto-centred container hugs the left edge under a
   left head — not just the 2x2 grid and the mw-* measures. */
section[data-lhn-align-c7x=left] .lhn-grid-2x2-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-mw-720-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-mw-760-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-mw-880-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-mw-640-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-grid-2-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-grid-3-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-grid-4-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-svc-rows-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-svc-list-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-signs-split-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-signs-num-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-signs-cols-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-steps-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-steps--timeline-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-steps--cards-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-steps--diagram-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-steps--chevrons-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-ticks-cols-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-facts-table-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-promise-grid-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-feature-row-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-feature-stack-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-bento-grid-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-benefits-panel-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-card--centered-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-faq-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-feature-card-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-feature-text-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-hub-compact-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-signs-causes-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-steps--alternate-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-svc-centered-c7x:not(.lhn-wrap-c7x),
section[data-lhn-align-c7x=left] .lhn-toolcard-c7x:not(.lhn-wrap-c7x),section[data-lhn-align-c7x=left] .lhn-trust--3-c7x:not(.lhn-wrap-c7x){margin-left:0}
/* A8 (R27): a card grid under a left head spans the wrap; the 860px cap
   is only for centred heads */
section[data-lhn-align-c7x=left] .lhn-grid-2x2-c7x:not(.lhn-wrap-c7x){max-width:none}
/* A5: under a centred head a capped two-column list container is centred
   as a block; its text stays left inside (left sections keep hugging left) */
section[data-lhn-align-c7x=center] .lhn-ticks-cols-c7x,section[data-lhn-align-c7x=center] .lhn-grid-2x2-c7x{max-width:var(--measure-wide);margin-left:auto;margin-right:auto}
/* grid-2 closing card of an odd method count spans the row (no orphan cell) */
.lhn-grid-2-c7x .lhn-card--wide-c7x{grid-column:1/-1}
/* promise list: an icon + text row grid (distinct from bordered cards, so it can
   sit next to a card grid without the page reading as two identical blocks) */
.lhn-promise-grid-c7x{list-style:none;padding:0;margin:30px auto 0;max-width:880px;
  display:grid;grid-template-columns:1fr 1fr;gap:24px 40px;text-align:left}
/* three items: three even columns (a 2+1 split reads lopsided). 5+ items:
   2x2 + full-width tail (the last odd item spans both columns) — a lone
   orphan cell in the bottom-right is exactly the AI-template tell the
   visual QA gate flags. Desktop only — mobile collapses to one column. */
@media(min-width:821px){
  .lhn-promise-grid-c7x:has(li:nth-child(3):last-child){grid-template-columns:repeat(3,1fr)}
  .lhn-promise-grid-c7x:has(li:nth-child(5)) li:last-child:nth-child(odd){grid-column:1/-1}
}
/* single-line items: icon + text centre-aligned (flex-start made short labels
   float at the top of the row next to the icon); multi-line wraps still read fine */
.lhn-promise-grid-c7x li{display:flex;gap:15px;align-items:center}
.lhn-promise-grid-c7x .lhn-p-ico-c7x{flex:0 0 auto;width:42px;height:42px;border-radius:var(--r-md);
  display:flex;align-items:center;justify-content:center;background:var(--primary-90);color:var(--primary)}
.lhn-promise-grid-c7x .lhn-p-ico-c7x svg{width:22px;height:22px}
.lhn-promise-grid-c7x h3{margin:2px 0 .25rem;}
.lhn-promise-grid-c7x p{margin:0;color:var(--body)}
@media(max-width:640px){.lhn-promise-grid-c7x{grid-template-columns:1fr}}
/* location fact grid: replaces the plain two-column facts table */
/* fact cards: column count comes from the item count via the count-matched
   grid classes (see _grid_cls) — auto-fit produced ragged 4+2 rows on six
   facts. Odd tails span the full width so no row is left half-empty.
   NOTE: no grid-template-columns here (the .lhn-grid-c7x/.lhn-grid-2-c7x/... classes own the
   columns; a later rule would silently override them at every width). */
/* Fact-card grid (codified): the shared count-matched grid container behind
   the 'stats' facts_layout presentation. Layout rule is server-side and
   explicit: bento-3 (n%3==0, 3 cols), bento-2x2 (n==4), bento-2 otherwise,
   with the odd tail spanning the full width — never a ragged row. (The
   labelled fact-card 'bento'/'cards' presentation that used to share this
   grid is retired: known AI-design tell, operator, Sep 2026.) */
.lhn-bento-grid-c7x{display:grid;gap:16px;margin:22px 0 0}
/* 'stats' presentation: infographic stat cards — a big key figure or phrase
   per fact (authored t['fact_stats'][key] wins; otherwise derived from the
   value's leading phrase), label, icon, and the sentence as support text */
.lhn-stat-card-c7x{background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);padding:18px 20px;display:flex;flex-direction:column}
.lhn-stat-ico-c7x{color:var(--primary);width:22px;height:22px;margin-bottom:10px}
.lhn-stat-ico-c7x svg{width:22px;height:22px}
.lhn-stat-big-c7x{font-family:var(--font-head);font-size:var(--display);font-weight:700;
  color:var(--ink);line-height:1.12}
.lhn-stat-label-c7x{font-size:var(--meta);text-transform:uppercase;letter-spacing:.04em;
  color:var(--muted);font-weight:700;margin-top:4px}
.lhn-stat-note-c7x{font-size:var(--small);color:var(--body);line-height:1.45;margin-top:8px}
/* pinned stat-card column counts (LOCATION_DATA['stat_cols']) */
.lhn-stat-cols-2-c7x{grid-template-columns:repeat(2,1fr)}
.lhn-stat-cols-4-c7x{grid-template-columns:repeat(4,1fr)}
.lhn-stat-cols-6-c7x{grid-template-columns:repeat(6,1fr)}
@media(max-width:1020px){.lhn-stat-cols-4-c7x,.lhn-stat-cols-6-c7x{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.lhn-stat-cols-2-c7x,.lhn-stat-cols-4-c7x,.lhn-stat-cols-6-c7x{grid-template-columns:1fr}}
/* optional CTA pair under the facts */
.lhn-loc-cta-c7x{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;margin-top:18px}
/* 'split' presentation: the first fact as a hero card, the rest as a
   two-column mini list beside it */
.lhn-loc-split-c7x{display:grid;grid-template-columns:1.1fr 1.9fr;gap:16px;align-items:stretch}
.lhn-loc-hero-c7x{background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);padding:22px 24px;display:flex;
  flex-direction:column;align-items:flex-start}
.lhn-loc-hero-c7x .lhn-stat-label-c7x{margin-top:6px}
.lhn-loc-hero-c7x .lhn-stat-note-c7x{margin:8px 0 0}
.lhn-loc-hero-c7x .lhn-stat-what-c7x{display:block;margin-top:6px;color:var(--muted)}
.lhn-loc-minis-c7x{display:grid;grid-template-columns:repeat(2,1fr);gap:4px 26px;align-content:start}
.lhn-loc-mini-c7x{padding:11px 0;border-bottom:1px solid var(--line);font-size:var(--small);color:var(--body)}
.lhn-loc-mini-c7x strong{color:var(--ink)}
@media(max-width:820px){.lhn-loc-split-c7x{grid-template-columns:1fr}
  .lhn-loc-minis-c7x{grid-template-columns:1fr}}
/* 'rail' presentation: numbered facts, two columns, big muted numerals.
   The numerals take the muted text colour at full strength: a faded brand
   colour fails the a11y contrast check on a light brand. */
.lhn-loc-rail-c7x{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(2,1fr);gap:2px 52px}
.lhn-loc-rail-c7x li{display:flex;gap:16px;padding:13px 0;
  color:var(--body)}
.lhn-rail-num-c7x{font-family:var(--font-head);font-size:var(--display);font-weight:700;
  color:var(--muted);line-height:1.15;min-width:2ch}
@media(max-width:820px){.lhn-loc-rail-c7x{grid-template-columns:1fr}}
/* 'spec' presentation: compact spec sheet — label, dotted leader, value in a
   fixed right column so values share one right edge; the sentence remainder
   wraps as a muted line under the value (never inline after the leader,
   which read as ragged noise) */
.lhn-spec-row-c7x{display:grid;grid-template-columns:auto 1fr minmax(280px,42%);
  gap:12px;align-items:baseline;padding:9px 0}
.lhn-spec-label-c7x{font-weight:600;color:var(--ink);font-size:var(--small);white-space:nowrap}
.lhn-spec-dots-c7x{border-bottom:1px dotted var(--muted);transform:translateY(-4px)}
.lhn-spec-val-c7x{color:var(--body);font-size:var(--small);text-align:right}
.lhn-spec-val-c7x strong{color:var(--ink)}
.lhn-spec-rest-c7x{display:block;color:var(--muted)}
@media(max-width:640px){.lhn-spec-row-c7x{grid-template-columns:auto 1fr}
  .lhn-spec-dots-c7x{display:none}
  .lhn-spec-val-c7x{text-align:left}}
.lhn-bento-3-c7x{grid-template-columns:repeat(3,1fr)}
.lhn-bento-2x2-c7x,.lhn-bento-2-c7x{grid-template-columns:repeat(2,1fr)}
.lhn-bento-grid-c7x > :last-child:nth-child(odd){grid-column:1/-1}
@media(max-width:820px){.lhn-bento-3-c7x,.lhn-bento-2x2-c7x,.lhn-bento-2-c7x{grid-template-columns:1fr}}
/* gallery: real photos with captions */
.lhn-gallery-c7x{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:26px;margin:8px 0 0}
.lhn-gallery-c7x figure{margin:0;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);overflow:hidden}
.lhn-gallery-c7x img{width:100%;height:280px;object-fit:cover;display:block;background:var(--bg-alt)}
.lhn-gallery-c7x figcaption{padding:14px 16px}
.lhn-gallery-c7x figcaption p{margin:0;color:var(--body)}
p.lhn-note-c7x{color:var(--muted);font-size:var(--small)}
@media(max-width:640px){.lhn-gallery-c7x{grid-template-columns:1fr}.lhn-gallery-c7x img{height:230px}}
/* Curated wizard media pool: the home photo band. */
.lhn-pool-gallery-c7x .lhn-gallery-grid-c7x{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:18px;margin:8px 0 0}
.lhn-pool-gallery-c7x .lhn-gallery-grid-c7x figure{margin:0}
.lhn-pool-gallery-c7x .lhn-gallery-grid-c7x img{width:100%;height:220px;object-fit:cover;display:block;
  border-radius:var(--r-md);background:var(--bg-alt)}
@media(max-width:640px){.lhn-pool-gallery-c7x .lhn-gallery-grid-c7x{grid-template-columns:repeat(2,1fr)}
  .lhn-pool-gallery-c7x .lhn-gallery-grid-c7x img{height:150px}}
.lhn-card-c7x{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:22px;transition:border-color var(--transition) ease,box-shadow var(--transition) ease}
a.lhn-card-c7x:hover{text-decoration:none;border-color:var(--n-300);box-shadow:var(--shadow)}
.lhn-card-c7x h3{margin-bottom:.35rem;color:var(--black)}
.lhn-card-c7x p{color:var(--body);margin-bottom:.5rem}
.lhn-card-c7x .lhn-fin-suits-c7x{font-weight:600;color:var(--black)}
.lhn-card-c7x > :last-child{margin-bottom:0}
.lhn-card-c7x .lhn-more-c7x{color:var(--primary);font-weight:500}
/* services_variant: centered = centred icon cells, no card chrome (ref: alignui). */
.lhn-svc-centered-c7x .lhn-card--centered-c7x{background:transparent;border:0;padding:20px 18px;
  text-align:center;display:flex;flex-direction:column;align-items:center}
.lhn-svc-centered-c7x .lhn-card--centered-c7x:hover{box-shadow:none;border:0}
.lhn-svc-centered-c7x .lhn-card--centered-c7x .lhn-icon-c7x{margin-left:auto;margin-right:auto}
.lhn-svc-centered-c7x .lhn-card--centered-c7x p{margin-left:auto;margin-right:auto;max-width:34ch}
/* services_variant: list = two-column index (heading + lead | scannable rows), so the
   rows sit in a sensible column with context beside them, not a bare full-width list. */
.lhn-svc-index-c7x{display:grid;grid-template-columns:0.82fr 1.18fr;gap:48px;align-items:center;
  margin-top:12px}
.lhn-svc-index-copy-c7x h2{margin:.2rem 0 .7rem}
.lhn-svc-index-copy-c7x .lhn-lead-c7x{margin:0}
.lhn-svc-list-c7x{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.lhn-svc-row-c7x{display:flex;align-items:center;gap:18px;padding:22px 24px;
  border-bottom:1px solid var(--line);color:var(--body)}
.lhn-svc-row-c7x:hover{text-decoration:none;background:var(--bg-alt)}
/* a closing "… →" link at the bottom of a block gets its own breathing room:
   it used to sit tight under the list / prose it closes (operator: poor padding) */
.lhn-section-c7x p:has(> a.lhn-more-c7x:only-child),.lhn-prose-c7x p:has(> a.lhn-more-c7x:only-child),
.lhn-callout-c7x p:has(> a.lhn-more-c7x:only-child){margin:26px 0 4px}
.lhn-svc-row-c7x .lhn-icon-c7x{margin:0;flex:0 0 auto}
.lhn-svc-row-photo-c7x{width:96px;flex:0 0 auto}
.lhn-svc-row-photo-c7x img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-sm)}
@media(max-width:680px){.lhn-svc-row-photo-c7x{width:64px}}
.lhn-svc-row-main-c7x{flex:1;min-width:0}
.lhn-svc-row-main-c7x h3{margin:0;color:var(--black)}
.lhn-svc-row-main-c7x p{margin:2px 0 0;color:var(--body)}
.lhn-svc-row-c7x .lhn-more-c7x{margin-left:auto;color:var(--primary);font-weight:500;
  flex:0 0 auto}
[data-lhn-glyph-c7x=none] .lhn-more-c7x:hover{text-decoration:underline}
/* Closing-link grammar (rule 39): the glyph rides in its own span, vertically
   centred by inline-flex; the anchor text stays at the UI size, never --glyph. */
.lhn-more-c7x{display:inline-flex;align-items:center;gap:.35em;font-weight:500;font-size:var(--ui)}
.lhn-more-c7x .lhn-glyph-c7x{line-height:1;font-size:var(--glyph,1.2rem);display:inline-block}
@media(max-width:820px){.lhn-svc-index-c7x{grid-template-columns:1fr;gap:22px}}
/* faq_variant: aside = heading + prompt beside the accordion. */
.lhn-faq-aside-c7x{display:grid;grid-template-columns:0.8fr 1.2fr;gap:48px;align-items:start;margin-top:8px}
.lhn-faq-aside-copy-c7x h2{margin:.2rem 0 .7rem}
.lhn-faq-aside-copy-c7x .lhn-lead-c7x{margin:0}
/* signs_variant: split = prominent checklist + tinted causes panel. */
.lhn-signs-split-c7x{display:grid;grid-template-columns:1.25fr 0.75fr;gap:26px;align-items:start}
.lhn-card--tint-c7x{background:var(--bg-alt);border-color:transparent}
@media(max-width:820px){.lhn-faq-aside-c7x{grid-template-columns:1fr;gap:22px}
  .lhn-signs-split-c7x{grid-template-columns:1fr}}
/* signs_variant: numbered — an editorial numbered checklist (no cards), the
   causes demoted to a slim tinted footnote panel with a two-column tick list */
.lhn-signs-num-c7x{list-style:none;margin:26px auto 0;padding:0;max-width:880px}
.lhn-signs-num-c7x li{display:flex;gap:18px;align-items:baseline;padding:14px 2px;
  border-bottom:1px solid var(--line)}
.lhn-signs-num-c7x li:last-child{border-bottom:0}
.lhn-signs-num-c7x .lhn-sn-c7x{font-family:var(--font-head);font-weight:700;color:var(--primary);
  font-size:var(--lead);min-width:36px;font-variant-numeric:tabular-nums}
.lhn-signs-num-c7x li p{margin:0}
.lhn-signs-causes-c7x{max-width:880px;margin:26px auto 0;background:var(--bg-alt);
  border-radius:var(--r-xl);padding:26px 28px}
.lhn-signs-causes-c7x h3{margin-top:0}
.lhn-signs-causes-c7x p{margin-bottom:.9rem}
/* J: the engine's balanced two-list grid. CSS multi-column fills by height and
   leaves one column heavy, so the renderer splits the items explicitly. */
.lhn-ticks-cols-c7x{display:grid;grid-template-columns:1fr 1fr;gap:0 36px;max-width:var(--measure-wide)}
@media(max-width:680px){.lhn-ticks-cols-c7x{grid-template-columns:1fr}}
/* signs_variant: columns — two plain lists split by a vertical rule; no card
   chrome at all, so the section reads editorial rather than boxed */
.lhn-signs-cols-c7x{display:grid;grid-template-columns:1fr 1fr;gap:0 52px;align-items:start}
.lhn-signs-cols-c7x>div:first-child{border-right:1px solid var(--line);padding-right:52px}
.lhn-signs-cols-c7x h3{margin-top:0}
@media(max-width:820px){.lhn-signs-cols-c7x{grid-template-columns:1fr}
  .lhn-signs-cols-c7x>div:first-child{border-right:0;padding-right:0;padding-bottom:18px;
    border-bottom:1px solid var(--line);margin-bottom:18px}}
/* svc_uses block: six structural archetypes over the same authored `uses`
   data. Icons are decorative chips drawn in currentColor (icon_style themed). */
.lhn-uses-split-c7x{display:flex;flex-direction:column;gap:34px;margin-top:28px}
.lhn-uses-row-c7x{display:flex;gap:28px;align-items:center}
.lhn-uses-row--rev-c7x{flex-direction:row-reverse}
.lhn-uses-row--rev-c7x .lhn-uses-copy-c7x{text-align:right}
.lhn-uses-row-c7x .lhn-uses-media-c7x .lhn-icon-c7x{width:58px;height:58px}
.lhn-uses-row-c7x .lhn-uses-media-c7x .lhn-icon-c7x svg{width:28px;height:28px}
.lhn-uses-copy-c7x h3{margin:0 0 6px;color:var(--black)}
.lhn-uses-copy-c7x p{margin:0;color:var(--body)}
@media(max-width:640px){.lhn-uses-row-c7x,.lhn-uses-row--rev-c7x{flex-direction:column;align-items:flex-start;gap:12px}
  .lhn-uses-row--rev-c7x .lhn-uses-copy-c7x{text-align:left}}
.lhn-uses-ledger-c7x{list-style:none;margin:0;padding:0}
.lhn-uses-ledger-c7x li{display:flex;gap:16px;align-items:flex-start;padding:14px 2px;
  border-bottom:1px solid var(--line)}
.lhn-uses-ledger-c7x li:last-child{border-bottom:0}
.lhn-uses-ledger-c7x .lhn-icon-c7x{flex:0 0 auto;width:40px;height:40px}
.lhn-uses-ledger-c7x .lhn-icon-c7x svg{width:20px;height:20px}
.lhn-uses-ledger-c7x h3{margin:0 0 4px;color:var(--black)}
.lhn-uses-ledger-c7x p{margin:0;color:var(--body)}
.lhn-uses-num-c7x{list-style:none;margin:26px 0 0;padding:0}
.lhn-uses-num-c7x li{display:grid;grid-template-columns:2.2rem 1fr;gap:18px;align-items:baseline;padding:14px 2px;
  border-bottom:1px solid var(--line)}
.lhn-uses-num-c7x li:last-child{border-bottom:0}
.lhn-uses-num-c7x .lhn-sn-c7x{font-family:var(--font-head);font-weight:700;color:var(--primary);
  font-size:var(--lead);min-width:36px;font-variant-numeric:tabular-nums}
.lhn-uses-num-c7x h3{margin:0 0 4px;color:var(--black)}
.lhn-uses-num-c7x p{margin:0;color:var(--body)}
.lhn-uses-acc-c7x{margin-top:26px}
.lhn-uses-links-c7x{margin-top:30px;padding-top:18px;border-top:1px solid var(--line)}
.lhn-uses-links-c7x p{margin:0 0 10px;font-weight:700;color:var(--black)}
.lhn-uses-links-c7x .lhn-pills-c7x{justify-content:flex-start;margin:0}
/* optional block: sticky_cta — mobile-only fixed quote/call bar. */
.lhn-sticky-cta-c7x{display:none}
@media(max-width:680px){
  .lhn-sticky-cta-c7x{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;gap:10px;
    padding:10px 14px;background:#FFF;border-top:1px solid var(--line);
    box-shadow:0 -6px 20px rgba(0,0,0,.12)}
  .lhn-sticky-cta-btn-c7x{flex:1;text-align:center}
  .lhn-sticky-cta-call-c7x{flex:0 0 auto;display:flex;align-items:center;padding:11px 16px;
    border:2px solid var(--cta);color:var(--cta);border-radius:var(--r-btn);font-weight:700}
  body{padding-bottom:64px}
}
/* optional block: author_box byline (sits in the resource hero, on dark). */
.lhn-byline-c7x{color:rgba(255,255,255,.72);font-size:var(--small);margin:.6rem 0 0;font-weight:600}
/* optional block: legal toc_jump (in prose, on light). */
.lhn-toc-jump-c7x{background:var(--bg-alt);border:1px solid var(--line);border-radius:var(--r-md);
  padding:16px 20px;margin:0 0 1.8rem}
.lhn-toc-jump-h-c7x{margin:0 0 .5rem;font-family:var(--font-head);font-weight:700;font-size:var(--meta);
  text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.lhn-toc-jump-c7x ul{margin:0;padding-left:1.1em}
.lhn-toc-jump--cols-c7x ul{columns:2;column-gap:24px}   /* toc_jump depth L2 */
.lhn-toc-jump-c7x li{margin-bottom:.35rem}
/* expert_quote depth L2: a bordered "in short" box vs the plain L1 callout. */
.lhn-callout--quote-c7x{background:var(--accent-soft)}
.lhn-callout--quote-c7x > p:first-of-type{font-size:var(--lead);font-weight:600}
.lhn-pullquote-c7x{margin:30px 0;padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.lhn-pullquote-c7x blockquote{margin:0;font-size:var(--lead);font-weight:500}
.lhn-pullquote-c7x figcaption{margin-top:8px;font-size:var(--small);color:var(--muted)}
.lhn-lede-c7x{font-size:var(--lead);color:var(--muted)}
.lhn-icon-c7x{width:46px;height:46px;border-radius:var(--r-md);background:var(--primary-90);
  color:var(--primary);border:2px solid transparent;
  display:flex;align-items:center;justify-content:center;margin-bottom:14px}
.lhn-icon-c7x svg{width:24px;height:24px}
/* icon-style variants (icons draw in currentColor) */
[data-lhn-icons-c7x=solid] .lhn-icon-c7x{background:var(--primary);color:#FFF}
[data-lhn-icons-c7x=line] .lhn-icon-c7x{background:transparent;border-color:var(--primary);color:var(--primary)}
/* subtle section motif (footprint variance); only on alt sections, low contrast */
[data-lhn-tex-c7x=dots] .lhn-section--alt-c7x{background-image:radial-gradient(var(--line) 1.1px,transparent 1.1px);background-size:22px 22px}
[data-lhn-tex-c7x=grid] .lhn-section--alt-c7x{background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:30px 30px}
[data-lhn-tex-c7x=lines] .lhn-section--alt-c7x{background-image:repeating-linear-gradient(45deg,var(--line) 0 1px,transparent 1px 15px)}
[data-lhn-tex-c7x=sparse] .lhn-section--alt-c7x{background-image:radial-gradient(var(--line) 1.2px,transparent 1.2px);background-size:44px 44px}
[data-lhn-tex-c7x=crosshatch] .lhn-section--alt-c7x{background-image:repeating-linear-gradient(45deg,var(--line) 0 1px,transparent 1px 18px),repeating-linear-gradient(-45deg,var(--line) 0 1px,transparent 1px 18px)}
[data-lhn-tex-c7x=hlines] .lhn-section--alt-c7x{background-image:repeating-linear-gradient(180deg,var(--line) 0 1px,transparent 1px 12px)}
[data-lhn-tex-c7x=diamonds] .lhn-section--alt-c7x{background-image:linear-gradient(45deg,var(--line) 1px,transparent 1px),linear-gradient(-45deg,var(--line) 1px,transparent 1px);background-size:28px 28px}
[data-lhn-tex-c7x=waves] .lhn-section--alt-c7x{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='24'><path d='M0 12 Q30 2 60 12 T120 12' fill='none' stroke='%23808080' stroke-opacity='.35' stroke-width='1'/></svg>");background-size:120px 24px}
[data-lhn-tex-c7x=plus] .lhn-section--alt-c7x{background-image:repeating-linear-gradient(180deg,transparent 0 15px,var(--line) 15px 16px,transparent 16px 32px),repeating-linear-gradient(90deg,transparent 0 15px,var(--line) 15px 16px,transparent 16px 32px)}
/* B2 (R23): texture never sits directly behind prose — a text-only alt band
   keeps its tint but drops the pattern. */
.lhn-section--alt-c7x.lhn-section--flat-c7x{background-image:none}

/* About-page signature sign-off (script font, optional) */
.lhn-signature-c7x{font-family:"Caveat",cursive;font-size:var(--display);line-height:1;color:var(--primary);
  margin:30px 0 0}
.lhn-signature-img-c7x{height:56px;width:auto;margin:30px auto 0;display:block}

.lhn-signature-c7x{font-family:var(--font-head);font-size:var(--display);color:var(--primary);margin-top:26px}

/* benefits_variant: panel = the benefits copy in one tinted panel;
   centered = narrow centred prose */
.lhn-benefits-panel-c7x{background:var(--bg-alt);border-radius:var(--r-xl);padding:34px 38px}
.lhn-benefits-panel-c7x .lhn-prose-c7x p{max-width:70ch;margin-left:auto;margin-right:auto}
.lhn-benefits-panel-c7x h2{margin-top:0}
/* promises_variant: cards = bordered card grid; numbered reuses the
   signs `numbered` grammar (ol.lhn-signs-num-c7x) but must cancel the centred wrap */
.lhn-promise-grid--cards-c7x{max-width:980px}
.lhn-promise-grid--cards-c7x li{background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);padding:20px 22px;align-items:flex-start}
.lhn-promise-num-c7x{text-align:left}
.lhn-promise-num-c7x li div{text-align:left}
.lhn-promise-num-c7x li div h3{margin:.1rem 0 .3rem}

/* lists */
.lhn-ticks-c7x{list-style:none;padding-left:0;margin:0}
.lhn-ticks-c7x li{position:relative;padding:0 0 .6rem 30px}
.lhn-ticks-c7x li::before{content:"";position:absolute;left:0;top:.4em;width:12px;height:12px;
  border-radius:50%;background:var(--primary)}
/* ticks--cols: the same ticks in two columns (long tick lists in a single
   column read as a wall); collapses to one column on narrow screens */
.lhn-ticks--cols-c7x{display:grid;grid-template-columns:1fr 1fr;gap:0 32px}
@media(max-width:700px){.lhn-ticks--cols-c7x{grid-template-columns:1fr}}
.lhn-steps-c7x{counter-reset:s;list-style:none;padding:0;margin:0;display:grid;gap:18px}
.lhn-steps-c7x li{position:relative;padding-left:56px;counter-increment:s}
.lhn-steps-c7x li::before{content:counter(s);position:absolute;left:0;top:0;width:38px;height:38px;
  background:var(--accent);color:var(--accent-ink);border-radius:var(--r-full);display:flex;
  align-items:center;justify-content:center;font-family:var(--font-head);font-weight:700}
.lhn-steps-c7x li h3{margin:0 0 .3rem;min-height:38px;display:flex;align-items:center}
/* process-page layout variants (a per-site footprint knob) */
.lhn-steps--timeline-c7x{position:relative}
.lhn-steps--timeline-c7x::before{content:"";position:absolute;left:18px;top:10px;bottom:10px;
  width:2px;background:var(--line);z-index:0}
.lhn-steps--timeline-c7x li{padding-bottom:6px}
.lhn-steps--timeline-c7x li::before{z-index:1;box-shadow:0 0 0 4px var(--bg)}
.lhn-steps--cards-c7x{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px}
.lhn-steps--cards-c7x li{padding:24px 20px 20px;border:1px solid var(--line);border-radius:var(--r-lg);
  background:var(--surface);box-shadow:var(--shadow)}
.lhn-steps--cards-c7x li::before{position:static;margin-bottom:14px}
.lhn-steps--cards-c7x li h3{min-height:auto;display:block}
/* process_layout=alternate: steps zig-zag either side of a centre line, the
   number node sitting on the line at each item's inner edge; one column on
   phones (the line moves to 18px like the timeline). */
.lhn-steps--alternate-c7x{display:block;position:relative;list-style:none;padding:0}
.lhn-steps--alternate-c7x::before{content:"";position:absolute;left:50%;top:10px;bottom:10px;
  width:2px;margin-left:-1px;background:var(--line);z-index:0}
.lhn-steps--alternate-c7x li{width:calc(50% - 32px);position:relative;padding:26px 0}
.lhn-steps--alternate-c7x .lhn-steps-l-c7x{margin-right:auto;padding-right:76px}
.lhn-steps--alternate-c7x .lhn-steps-r-c7x{margin-left:auto;padding-left:76px}
.lhn-steps--alternate-c7x li::before{top:26px}
.lhn-steps--alternate-c7x .lhn-steps-l-c7x::before{left:auto;right:-51px}
.lhn-steps--alternate-c7x .lhn-steps-r-c7x::before{left:-51px}
@media(max-width:700px){.lhn-steps--alternate-c7x::before{left:18px;margin-left:0}
  .lhn-steps--alternate-c7x li{width:auto;padding:22px 0 22px 56px}
  .lhn-steps--alternate-c7x li::before{top:22px}
  .lhn-steps--alternate-c7x .lhn-steps-l-c7x{margin-right:0;padding-right:0}
  .lhn-steps--alternate-c7x .lhn-steps-l-c7x::before{right:auto;left:0}
  .lhn-steps--alternate-c7x .lhn-steps-r-c7x{margin-left:0;padding-left:56px}
  .lhn-steps--alternate-c7x .lhn-steps-r-c7x::before{left:0}}
/* process_layout=diagram: a horizontal flow — numbered nodes joined by a
   connector, the title and body under each node; stacks vertically on
   phones. The connector draws in on load (off under reduced motion). */
.lhn-steps--diagram-c7x{grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:20px;position:relative;margin-top:8px}
.lhn-widget-note-c7x{border:1px solid var(--line);border-radius:var(--r-md);padding:20px 24px;background:var(--bg-alt)}
.lhn-widget-note-c7x h3{margin:0 0 .6rem}
.lhn-widget-note-c7x ul{margin:0;padding-left:1.1em}
.lhn-steps--diagram-c7x li{padding:0;text-align:center;position:relative}
.lhn-steps--diagram-c7x li::before{position:static;display:flex;margin:0 auto 16px;width:44px;height:44px;
  font-size:var(--lead);position:relative;z-index:1}
.lhn-steps--diagram-c7x li:not(:last-child)::after{content:"";position:absolute;top:21px;left:calc(50% + 30px);
  width:calc(100% - 40px);height:2px;background:var(--line);transform-origin:left;
  animation:flowline .7s ease-out both}
.lhn-steps--diagram-c7x li:nth-child(2)::after{animation-delay:.15s}
.lhn-steps--diagram-c7x li:nth-child(3)::after{animation-delay:.3s}
.lhn-steps--diagram-c7x li:nth-child(4)::after{animation-delay:.45s}
.lhn-steps--diagram-c7x li:nth-child(5)::after{animation-delay:.6s}
.lhn-steps--diagram-c7x li:nth-child(6)::after{animation-delay:.75s}
.lhn-steps--diagram-c7x li h3{min-height:auto;display:block;margin-bottom:.4rem}
.lhn-steps--diagram-c7x li p{margin:0}
@keyframes flowline{from{transform:scaleX(0)}}
@media(prefers-reduced-motion:reduce){.lhn-steps--diagram-c7x li::after{animation:none}}
/* process_layout=chevrons: an arrow strip of numbered titles, the body under
   each — the classic "how it works" ribbon */
.lhn-steps--chevrons-c7x{grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:8px}
.lhn-steps--chevrons-c7x li{padding:0}
.lhn-steps--chevrons-c7x li::before{position:static;display:inline-flex;width:30px;height:30px;font-size:var(--small);
  margin-right:10px;vertical-align:middle;background:var(--surface);color:var(--ink)}
.lhn-steps--chevrons-c7x li h3{min-height:64px;display:flex;align-items:center;margin:0;padding:12px 18px 12px 26px;
  background:var(--bg-alt);color:var(--ink);font-size:var(--small);line-height:1.3;
  clip-path:polygon(0 0,calc(100% - 16px) 0,100% 50%,calc(100% - 16px) 100%,0 100%,16px 50%)}
.lhn-steps--chevrons-c7x li:first-child h3{padding-left:22px;
  clip-path:polygon(0 0,calc(100% - 16px) 0,100% 50%,calc(100% - 16px) 100%,0 100%)}
.lhn-steps--chevrons-c7x li p{margin:14px 6px 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lhn-avatar-c7x{width:56px;height:56px;border-radius:50%;object-fit:cover;flex:0 0 auto;display:block}
.lhn-avatar--svg-c7x svg{width:56px;height:56px;display:block}
.lhn-card--team-c7x{display:flex;gap:16px;align-items:flex-start;padding:22px 24px}
.lhn-card--team-c7x h3{margin:0 0 2px;font-size:var(--h3)}
.lhn-author-role-c7x{color:var(--muted);font-size:var(--small);margin:0 0 8px}
.lhn-card--team-c7x p:last-child{margin:0}
/* Author card (byline_variant=author-card, R21): a bordered card in the
   reading column; the reviewer sits as a second grid column. */
.lhn-author-card-c7x{border:1px solid var(--line);border-radius:var(--r-md);padding:22px 24px;background:var(--surface)}
.lhn-author-card-grid-c7x{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.lhn-author-card-grid--one-c7x{grid-template-columns:1fr}
.lhn-author-card-id-c7x{display:flex;gap:12px;align-items:center}
.lhn-author-name-c7x{margin:0;font-weight:600}
.lhn-author-role-c7x{margin:0;font-size:var(--small);color:var(--muted)}
.lhn-author-bio-c7x{margin:12px 0 0}
.lhn-author-links-c7x{font-size:var(--small)}
@media (max-width:640px){.lhn-author-card-grid-c7x{grid-template-columns:1fr}}
.lhn-team-grid-c7x{margin-top:var(--head-gap,28px)}
.lhn-team-list-c7x{list-style:none;margin:var(--head-gap,28px) 0 0;padding:0}
.lhn-team-row-c7x{display:flex;gap:16px;align-items:flex-start;padding:18px 0;border-top:1px solid var(--line)}
.lhn-team-row-c7x:first-child{border-top:0;padding-top:0}
.lhn-team-row-c7x h3{margin:0 0 2px;font-size:var(--h3)}
.lhn-team-row-c7x>div,.lhn-card--team-c7x>div{flex:1;min-width:0}
.lhn-team-row-c7x .lhn-author-role-c7x,.lhn-card--team-c7x .lhn-author-role-c7x{margin:0 0 8px}
.lhn-team-row-c7x p:not(.lhn-author-role-c7x){max-width:68ch}
@media(max-width:640px){.lhn-card--team-c7x{flex-direction:column;gap:12px}}
.lhn-team-strip-c7x{display:flex;flex-wrap:wrap;gap:14px 32px;list-style:none;padding:0;margin:var(--head-gap,28px) 0 0}
.lhn-team-strip-c7x li{display:flex;gap:12px;align-items:center}
.lhn-team-strip-c7x .lhn-avatar-c7x,.lhn-team-strip-c7x .lhn-avatar--svg-c7x svg{width:40px;height:40px}
.lhn-team-strip-c7x .lhn-author-role-c7x{display:block;margin:0}
/* team_block split / grid (E12): token colours, no accent borders. */
.lhn-team-split-c7x{display:grid;grid-template-columns:1fr 1fr;gap:12px 48px;align-items:start;margin:var(--head-gap,28px) 0 0}
.lhn-team-split-c7x .lhn-prose-c7x{max-width:760px}
.lhn-team-grid--lg-c7x .lhn-card--team-c7x{display:block}
.lhn-team-grid--lg-c7x .lhn-avatar-c7x,.lhn-team-grid--lg-c7x .lhn-avatar--svg-c7x svg{width:72px;height:72px;margin:0 0 14px}
/* team_block spotlight: lead card over a compact remainder; team-more is the
   closing hub link shared by every capped About layout. */
.lhn-team-spot-c7x{margin:var(--head-gap,28px) 0 4px}
.lhn-team-spot-c7x .lhn-avatar-c7x,.lhn-team-spot-c7x .lhn-avatar--svg-c7x svg{width:72px;height:72px}
.lhn-team-spot-c7x+.lhn-team-strip-c7x{margin-top:20px}
.lhn-team-more-c7x{margin:22px 0 0}
@media(max-width:860px){.lhn-team-split-c7x{grid-template-columns:1fr}}
@media(max-width:820px){
  .lhn-steps--diagram-c7x,.lhn-steps--chevrons-c7x{grid-auto-flow:row;grid-auto-columns:auto}
  .lhn-steps--diagram-c7x li{text-align:left;padding-left:56px}
  .lhn-steps--diagram-c7x li::before{position:absolute;left:0;top:0;margin:0;width:38px;height:38px;font-size:var(--lead)}
  .lhn-steps--diagram-c7x li:not(:last-child)::after{top:44px;left:18px;width:2px;height:calc(100% - 30px);
    transform-origin:top;animation-name:flowline-v}
  @keyframes flowline-v{from{transform:scaleY(0)}}
  .lhn-steps--chevrons-c7x li h3{clip-path:none;border-radius:var(--r-md);padding:14px 18px}
  .lhn-steps--chevrons-c7x li:first-child h3{clip-path:none;padding-left:18px}
}

/* breadcrumbs */
.lhn-crumbs-c7x{font-size:var(--small);color:var(--body);padding:14px 0}
/* in-hero placement: a small muted trail sitting flush above the hero (no bar
   chrome, no wrap padding) — reads as part of the page, not a utility strip */
.lhn-crumbs--inhero-c7x{font-size:var(--small);color:var(--muted);padding:14px 0 12px}
.lhn-crumbs--inhero-c7x .lhn-wrap-c7x{padding-bottom:0}
.lhn-crumbs-c7x a{color:var(--link)}
.lhn-crumbs-c7x a:hover{text-decoration-thickness:2px}
/* margin only on the separators, so spacing is even (the current-page span,
   which has no aria-hidden, must not add its own margin) */
.lhn-crumbs-c7x span[aria-hidden]{margin:0 6px}

/* prose */
/* R23 A2: in-text links get a non-colour cue (underline) plus the AA-safe
   --link token, so link-in-text-block and color-contrast stay fixed at the
   token level. Nav, buttons, cards, pills and footer column links are NOT
   text-block links and keep their own styling. */
.lhn-prose-c7x a:not([class*='btn']):not(.lhn-more-c7x),.lhn-prose-c7x p a:not([class*='btn']):not(.lhn-more-c7x),.lhn-crumbs-c7x a,.lhn-toc-jump-h-c7x,.lhn-callout-c7x a:not([class*='btn']):not(.lhn-more-c7x),.lhn-gtable-c7x a,
.lhn-lede-c7x a:not([class*='btn']):not(.lhn-more-c7x),main p a:not([class*='btn']):not(.lhn-more-c7x){color:var(--link);text-decoration:underline;text-underline-offset:.15em;
  text-decoration-thickness:1px}
.lhn-prose-c7x a:not([class*='btn']):hover,.lhn-prose-c7x p a:not([class*='btn']):hover,.lhn-crumbs-c7x a:hover,
.lhn-callout-c7x a:not([class*='btn']):hover,.lhn-gtable-c7x a:hover,.lhn-lede-c7x a:not([class*='btn']):hover,main p a:not([class*='btn']):hover{text-decoration-thickness:2px}
/* links inside dark chrome keep the surface's ink: --link is tuned for the page surfaces */
[class*='--dark'] p a,footer p a{color:inherit}
.lhn-prose-c7x h2{margin-top:1.8em}
/* inline CTA copy sits flush in its box: the prose rhythm rules above must
   not push the copy up against the centred button (operator, R27) */
.lhn-prose-c7x .lhn-cta-inline--in-c7x h3,.lhn-cta-inline--in-c7x h3{margin:0 0 4px}
.lhn-cta-inline--in-c7x .lhn-cta-inline-copy-c7x>*:first-child{margin-top:0}
.lhn-cta-inline--in-c7x .lhn-cta-inline-copy-c7x>*:last-child{margin-bottom:0}
.lhn-cta-inline-copy-c7x>*:first-child{margin-top:0}
.lhn-cta-inline-copy-c7x>*:last-child{margin-bottom:0}
/* long unbreakable strings (emails, URLs) overflow the reading column on
   narrow viewports — break them instead of scrolling the page */
.lhn-prose-c7x{overflow-wrap:break-word}
.lhn-prose-c7x h3{margin-top:1.4em}
.lhn-prose-c7x ul{padding-left:1.2em}
.lhn-prose-c7x li{margin-bottom:.4rem}
/* in-block rhythm (14th round): a list, step list, grid, callout or table
   that follows a paragraph gets a clear gap, and so does the paragraph that
   follows one — the process intro used to butt straight onto step 1 */
.lhn-prose-c7x>p+:is(ol,ul,.lhn-steps-c7x,.lhn-grid-c7x,.lhn-callout-c7x,.lhn-table-wrap-c7x,table,.lhn-ticks-c7x),
.lhn-prose-c7x>:is(ol,ul,.lhn-steps-c7x,.lhn-grid-c7x,.lhn-callout-c7x,.lhn-table-wrap-c7x,table)+p{margin-top:30px}
.lhn-prose-c7x .lhn-ticks-c7x{padding-left:0}
.lhn-prose-c7x .lhn-card-c7x h3{margin-top:0}
.lhn-prose-ol-c7x{padding-left:1.2em}
.lhn-prose-ol-c7x li{margin-bottom:.5rem}
.lhn-table-wrap-c7x{overflow-x:auto;margin:1.2rem 0;max-width:100%}
.lhn-prose-c7x table{width:100%}
.lhn-ptable-c7x{width:100%;border-collapse:collapse;font-size:var(--small)}
.lhn-ptable-c7x th,.lhn-ptable-c7x td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line)}
.lhn-ptable-c7x thead th{background:var(--bg-alt);color:var(--black);font-family:var(--font-head);font-weight:700}
.lhn-ptable-c7x td:last-child{font-weight:600;color:var(--black);white-space:nowrap}
/* Cost-calculator result table: job names and ranges wrap inside their cells
   instead of forcing the wrapper into horizontal scroll on a narrow screen.
   table-layout:fixed keeps the two columns from stretching the wrapper. */
.lhn-calc-table-c7x{table-layout:fixed}
.lhn-calc-table-c7x th,.lhn-calc-table-c7x td,.lhn-calc-table-c7x td:last-child{white-space:normal;overflow-wrap:anywhere}
/* Guide tables (article/insurance bodies, _normalise_tables): the FIRST
   column is the row header; no bold last column, no nowrap emphasis. */
.lhn-gtable-c7x{width:100%;border-collapse:collapse;font-size:var(--small)}
.lhn-gtable-c7x th,.lhn-gtable-c7x td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.lhn-gtable-c7x thead th{background:var(--bg-alt);color:var(--black);font-family:var(--font-head);font-weight:700}
.lhn-gtable-c7x tbody th{color:var(--black);font-weight:600;background:none}
.lhn-gtable-c7x td{font-weight:400;color:var(--body)}
/* Head-to-head comparison table (svc_comparison): deliberately neutral —
   no bold last column, no thick side borders; the verdict is the explicit
   tick/cross mark, never a colour tint alone. */
.lhn-ctable-c7x{width:100%;border-collapse:collapse;font-size:var(--small)}
.lhn-ctable-c7x th,.lhn-ctable-c7x td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.lhn-ctable-c7x thead th{background:var(--bg-alt);color:var(--black);font-family:var(--font-head);font-weight:700}
.lhn-ctable-c7x tbody th{color:var(--black);font-weight:600;background:none}
.lhn-cmp-mark-c7x{font-weight:700;margin-right:8px}
.lhn-cmp-yes-c7x{color:var(--primary)}
.lhn-cmp-no-c7x{color:var(--muted)}
.lhn-cmp-note-c7x{color:var(--muted);font-size:var(--small)}

/* FAQ */
/* the marker slot is OPT-IN: only shells that draw a ::before marker
   (govpress chevron) reserve it, so every other shell has symmetric
   accordion padding (operator: padding left of the text and right of the
   icon must be equal). */
/* the card's VERTICAL rhythm is ONE token shared by BOTH accordion grammars
   (the <details> card and the always-visible .lhn-faq-item-c7x): --faq-pad-y is the
   space above the question, the space between question and answer, and the
   space under the answer, so an expanded card reads symmetric top to bottom.
   Nothing else may add a second bottom space. The static card used to pad
   18px under an answer that ALREADY carried a 1rem last-line margin and the
   panel's own 4px, so 19px above the question sat under 44px of dead band
   below it, and the card read as broken (operator, a local build). Gates:
   contract F7 — rule 40 in tests/test_operator_design_rules.lhn-py-c7x + the FAQ-PAD
   measurement in scripts/visual_qa.lhn-py-c7x. */
.lhn-faq-c7x{--faq-marker-slot:0px;--faq-marker-gap:0px;--faq-pad-x:20px;--faq-pad-y:18px}
.lhn-faq--marker-c7x{--faq-marker-slot:1em;--faq-marker-gap:12px}
.lhn-faq-c7x details{border:1px solid var(--line);border-radius:var(--r-md);
  padding:0 var(--faq-pad-x);margin-bottom:12px;background:var(--n-50)}
/* flex-start + auto-margin on the "+" (never space-between): themes that add a
   ::before marker (govpress chevron) would otherwise make the question text a
   middle flex item and render it centred — questions always read left-aligned */
.lhn-faq-c7x summary{cursor:pointer;font-family:var(--font-head);font-weight:700;color:var(--black);
  padding:var(--faq-pad-y) 0;list-style:none;display:flex;justify-content:flex-start;
  align-items:center;gap:var(--faq-marker-gap)}
/* the open/closed markers (triangle/chevron glyphs) differ in width — without a
   reserved slot the question text shifted a pixel or two on toggle */
.lhn-faq-c7x summary::before{content:"";display:inline-block;width:var(--faq-marker-slot);flex:0 0 auto}
.lhn-faq-c7x summary::-webkit-details-marker{display:none}
.lhn-faq-c7x summary::after{content:"+";font-size:var(--glyph);color:var(--primary);font-weight:400;
  margin-left:auto}
.lhn-faq-c7x details[open] summary::after{content:"\2212"}
/* no rule under an open summary — a hairline between question and answer read as
   a hard separator mid-prose; spacing alone separates them */
.lhn-faq-c7x .lhn-ans-c7x{padding:0 0 var(--faq-pad-y) calc(var(--faq-marker-slot) + var(--faq-marker-gap))}
/* the answer's last block never carries its own bottom margin — the card pad
   is the whole space under the text (the .lhn-card-c7x > :last-child convention) */
.lhn-faq-c7x .lhn-ans-c7x>:last-child{margin-bottom:0}
.lhn-faq-c7x .lhn-ans-c7x a:not(.lhn-more-c7x){color:var(--link);text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:1px}
.lhn-faq-c7x .lhn-ans-c7x a:hover{text-decoration-thickness:2px}
/* external attribution links (credits, licences) sit in text: underline + AA link colour */
main a[rel*='nofollow']{color:var(--link);text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:1px}
/* mobile: tighter card padding and no marker slot; shells that draw a ::before
   marker (govpress chevron) set .lhn-faq--marker-c7x on the container and keep the
   answer indent so it still lines up with its question. */
@media(max-width:680px){.lhn-faq-c7x{--faq-pad-x:14px}.lhn-faq-c7x:not(.lhn-faq--marker-c7x) summary::before{display:none}
  .lhn-faq-c7x:not(.lhn-faq--marker-c7x) .lhn-ans-c7x{padding-left:0}}
/* faq_static: on = the same cards as plain, always-visible Q&A (no toggle, no
   hidden content). Items share the details card chrome. There is no marker
   slot to zero: the static rows carry no <summary>, so no shell draws a
   ::before marker on them, and accordion_cls() never pairs faq--static with
   faq--marker. */
.lhn-faq--static-c7x .lhn-faq-item-c7x{border:1px solid var(--line);border-radius:var(--r-md);
  padding:0 var(--faq-pad-x);margin-bottom:12px;background:var(--n-50)}
/* the same box as an open <details>: the question pads top AND bottom, so the
   static card and the accordion card measure identically (never a card that
   pads its bottom edge on top of the answer's own space) */
.lhn-faq--static-c7x .lhn-faq-q-c7x{font-family:var(--font-head);font-weight:700;color:var(--black);
  font-size:var(--h4);padding:var(--faq-pad-y) 0;margin:0}
/* faq_variant: two-col = 4+ short FAQs in a 2-column grid (server-gated;
   fewer items render the full-width stack). Cards drop their bottom margin
   inside the grid so rows read evenly. */
.lhn-faq-2col-c7x{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 22px;
  align-items:start}
.lhn-faq-2col-c7x details,.lhn-faq-2col-c7x .lhn-faq-item-c7x{margin-bottom:0}
@media(max-width:820px){.lhn-faq-2col-c7x{grid-template-columns:1fr}}

/* pills / area links */
.lhn-pills-c7x{display:flex;flex-wrap:wrap;gap:10px;list-style:none;padding:0;margin:0}
.lhn-pills-c7x a{display:inline-block;background:#FFF;border:1px solid var(--line);
  border-radius:var(--r-sm);padding:8px 16px;font-weight:600;font-size:var(--small);color:var(--ink)}
.lhn-pills-c7x a:hover{background:var(--primary);border-color:var(--primary);color:#FFF;text-decoration:none}

/* form */
.lhn-form-card-c7x{background:#FFF;border-radius:var(--r-md);box-shadow:var(--shadow);
  padding:28px;border:1px solid var(--line);color:var(--body)}
.lhn-form-card-c7x h3{margin-top:0}
/* contact_variant: split = form beside a reassurance sidebar. */
.lhn-contact-split-c7x{display:grid;grid-template-columns:1.2fr 1fr;gap:36px;align-items:start}
.lhn-contact-sidebar-c7x{background:var(--bg-alt);border-radius:var(--r-md);padding:26px}
.lhn-contact-sidebar-c7x h3{margin-top:0}
.lhn-contact-steps-c7x{margin:0 0 18px;padding-left:20px;color:var(--body)}
.lhn-contact-steps-c7x li{margin-bottom:8px}
.lhn-contact-sidebar-c7x .lhn-ticks-c7x{list-style:none;padding:0;margin:0 0 18px}
.lhn-contact-phone-c7x{margin:0 0 14px}
.lhn-contact-phone-c7x a{font-weight:700;font-size:var(--lead);color:var(--ink)}
/* labelled direct-details block in the contact sidebar (email/address used to
   render as bare orphans below the ticks) */
.lhn-contact-details-c7x{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.lhn-contact-details-c7x h4{font-size:var(--meta);letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);margin:0 0 6px;font-family:var(--font-body)}
.lhn-contact-detail-c7x{margin-bottom:14px}
.lhn-contact-detail-c7x:last-child{margin-bottom:0}
/* address_block ships footer-styled (.lhn-footer-addr-c7x is a light-on-dark value);
   inside the light contact sidebar it must read as body text */
.lhn-contact-details-c7x .lhn-footer-addr-c7x{color:var(--body);font-style:normal;font-size:var(--small);
  line-height:1.6;margin:0}
.lhn-contact-details-c7x .lhn-contact-email-c7x a{color:var(--primary);font-weight:600}
.lhn-contact-phone-c7x a{font-weight:700;font-size:var(--lead);color:var(--ink)}
/* contact_variant: splitrev — mirrored split, the details column left of the
   form. Narrower info column; the details block drops its sidebar top rule.
   Sits ABOVE the 900px collapse so phones still get one column (equal
   specificity: source order decides). */
.lhn-contact-split--rev-c7x{grid-template-columns:1fr 1.25fr}
.lhn-contact-split--rev-c7x .lhn-contact-details-c7x{margin-top:0;padding-top:0;border-top:0}
@media(max-width:900px){.lhn-contact-split-c7x{grid-template-columns:1fr}}
/* cards inside the dark hero must keep dark body text */
.lhn-hero-c7x .lhn-form-card-c7x,.lhn-hero-c7x .lhn-card-c7x{color:var(--body)}
.lhn-hero-c7x .lhn-form-card-c7x h3,.lhn-hero-c7x .lhn-card-c7x h3{color:var(--ink)}
.lhn-field-c7x{margin-bottom:14px}
.lhn-form-more-c7x{margin:0 0 18px;border:1px solid var(--line);border-radius:var(--r-sm)}
.lhn-form-more-c7x summary{padding:12px 14px;min-height:44px;box-sizing:border-box;
  cursor:pointer;color:var(--ink);font-weight:600}
.lhn-form-more-c7x>div{padding:0 14px 4px}
.lhn-field-c7x label{display:block;font-weight:600;color:var(--ink);margin-bottom:5px;font-size:var(--small)}
fieldset{border:0;padding:0;margin:0;min-width:0}
legend{padding:0}
.lhn-field-label-c7x{font-weight:600;color:var(--ink);margin-bottom:5px;font-size:var(--small)}
.lhn-field-c7x input,.lhn-field-c7x select,.lhn-field-c7x textarea{width:100%;padding:12px 14px;
  border:1px solid var(--n-300);border-radius:var(--r-sm);font-size:16px;
  font-family:var(--font-body);color:var(--ink)}
.lhn-field-c7x input:focus,.lhn-field-c7x select:focus,.lhn-field-c7x textarea:focus{outline:none;
  border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-90)}
.lhn-field-c7x textarea{min-height:110px;resize:vertical}
/* checkbox + radio-row inputs: native controls, never full-width text inputs.
   These MUST sit below the generic .lhn-field-c7x input rule (same specificity, so
   source order decides) — above it they lose and radios blow out to 100%. */
.lhn-field-checkbox-c7x label{display:flex;align-items:flex-start;gap:8px;font-weight:500;margin-bottom:0}
.lhn-field-checkbox-c7x input{width:auto;flex:none;margin:2px 0 0;padding:0;border:0;border-radius:0}
.lhn-field-choice-c7x{display:flex;gap:18px;flex-wrap:wrap;align-items:center}
.lhn-field-choice-c7x label{display:inline-flex;align-items:center;gap:8px;font-weight:500;margin-bottom:0;float:none}
.lhn-field-choice-c7x input{width:auto;flex:none;margin:0;padding:0;border:0}
/* free-type numeric inputs: no spinner arrows */
.lhn-field-c7x input[type=number]{-moz-appearance:textfield}
.lhn-field-c7x input[type=number]::-webkit-outer-spin-button,
.lhn-field-c7x input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.lhn-form-note-c7x{font-size:var(--meta);color:var(--muted);margin:8px 0 0}
/* The MANDATORY consent tick, directly above the submit button. Reads as a
   real choice: full-size box, generous tap target, text at body size. */
.lhn-field-c7x.lhn-consent-c7x{margin:18px 0 14px}
.lhn-consent-label-c7x{display:flex;gap:10px;align-items:flex-start;font-size:var(--small);line-height:1.45;color:var(--body);cursor:pointer;min-height:44px;padding:2px 0}
.lhn-consent-label-c7x input[type=checkbox]{flex:0 0 auto;width:18px;height:18px;margin:2px 0 0;accent-color:var(--primary)}
/* axe link-in-text-block: a link inside a run of text must not be
   distinguishable by colour alone, so the policy link inside the
   consent statement is underlined. */
.lhn-consent-label-c7x a{text-decoration:underline}
.lhn-field-c7x input::placeholder,.lhn-field-c7x textarea::placeholder{color:var(--n-500)}
.lhn-hp-c7x{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
/* scored tools (condition-diagnostic + urgency-triage). The question groups render as
   tidy bordered option rows rather than raw fieldsets, and the result reads as a clear
   callout. Both tools share this base; a per-tool accent (below) tells them apart. */
.lhn-widget-c7x{padding:52px 0}
.lhn-widget-c7x>.lhn-wrap-c7x>h2{margin-bottom:.4rem}
/* breathing room below the tool form before the results heading/table that follows */
.lhn-widget-c7x .lhn-form-card-c7x{margin:8px 0 38px}
.lhn-widget-c7x .lhn-form-card-c7x+h3{margin-top:0}
.lhn-diag-q-c7x{border:0;margin:0 0 18px;padding:0}
.lhn-diag-q-c7x:last-of-type{margin-bottom:8px}
.lhn-widget-c7x .lhn-form-card-c7x form{counter-reset:dq}
.lhn-diag-q-legend-c7x{display:block;float:none;width:100%;font-weight:600;color:var(--ink);
  font-size:var(--lead);line-height:1.45;margin:0 0 10px;padding:0}
/* numbered-question badge: gives the checklist a sense of progress without JS */
.lhn-diag-q-legend-c7x::before{counter-increment:dq;content:counter(dq);display:inline-flex;
  align-items:center;justify-content:center;width:1.5em;height:1.5em;margin-right:.55em;
  border-radius:999px;background:var(--primary-90);color:var(--ink);
  font-size:.8em;font-weight:700;vertical-align:1px}
.lhn-diag-opt-c7x{display:flex;align-items:flex-start;gap:11px;padding:11px 14px;margin:0 0 8px;
  border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer;
  color:var(--body);font-size:var(--small);line-height:1.4;transition:border-color .12s,background .12s}
.lhn-diag-opt-c7x:last-child{margin-bottom:0}
.lhn-diag-opt-c7x:hover{border-color:var(--primary);background:var(--bg-alt)}
/* the chosen answer reads as chosen: tinted card + heavier border (and contact-form
   radio rows share .lhn-diag-opt-c7x, so they pick this up too) */
.lhn-diag-opt-c7x:has(input:checked){border-color:var(--primary);background:var(--primary-90);
  color:var(--ink);font-weight:600;box-shadow:inset 0 0 0 1px var(--primary)}
.lhn-diag-opt-c7x:has(input:focus-visible){outline:2px solid var(--primary);outline-offset:2px}
.lhn-diag-opt-c7x input{margin:2px 0 0;flex:0 0 auto;accent-color:var(--primary)}
.lhn-diag-q-c7x .lhn-diag-opt-c7x+.lhn-diag-opt-c7x{margin-top:0}
.lhn-widget-c7x .lhn-btn-c7x{margin-top:6px}
.lhn-diag-out-c7x{margin-top:16px;padding:0}
.lhn-diag-out-c7x:not(:empty){padding:14px 16px;border-radius:var(--r-md);
  background:var(--primary-90);color:var(--ink);font-weight:600;line-height:1.5}
/* severity: the result band colours the outcome by TINT, never an accent
   stripe. low = quiet/neutral, mid = brand tint, high = strong ink panel. */
.lhn-diag-out-c7x.lhn-is-low-c7x:not(:empty){background:var(--bg-alt);font-weight:500}
.lhn-diag-out-c7x.lhn-is-mid-c7x:not(:empty){background:var(--primary-90)}
.lhn-diag-out-c7x.lhn-is-high-c7x:not(:empty){background:var(--ink);color:var(--cta-ink)}
.lhn-diag-out-c7x strong{display:block;margin-bottom:.15em}
.lhn-widget-c7x .lhn-ptable-c7x th,.lhn-widget-c7x .lhn-ptable-c7x td{vertical-align:top}
/* calculator_variant: slider = a live range slider driving a prominent figure. */
.lhn-calc-slider-field-c7x input[type=range]{width:100%;margin-top:10px;accent-color:var(--primary)}
.lhn-calc-figure-c7x{margin-top:20px;padding:18px 20px;border-radius:var(--r-md);
  background:var(--primary-90);text-align:center}
.lhn-calc-figure-eyebrow-c7x{display:block;font-size:var(--meta);font-weight:700;text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted)}
.lhn-calc-figure-out-c7x{font-family:var(--font-head);font-size:var(--display);font-weight:700;
  color:var(--ink);margin-top:4px;min-height:1.2em}
/* (the tools once carried a coloured top rule on their form card to tell the
   two apart — removed: a thick top accent on a card reads as generated; the
   tools live on separate pages and the site's tone knob carries the accent) */
/* (the triage's former ink-only overrides are the `tone-mono` option now —
   one tone per site, seeded, instead of one tool permanently mono) */
/* ---- eleventh round: tool composition (engine/widgets.lhn-py-c7x quiz_style) ---- */
.lhn-is-off-c7x{display:none!important}
.lhn-diag-q-opts-c7x{display:block}
/* option_shape=chips: inline pills, the radio itself hidden, chosen chip filled */
.lhn-diag-q--chips-c7x .lhn-diag-q-opts-c7x{display:flex;flex-wrap:wrap;gap:8px}
.lhn-diag-q--chips-c7x .lhn-diag-opt-c7x,.lhn-diag-q--cards-c7x .lhn-diag-opt-c7x{position:relative}
.lhn-diag-q--chips-c7x .lhn-diag-opt-c7x input,.lhn-diag-q--cards-c7x .lhn-diag-opt-c7x input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.lhn-diag-q--chips-c7x .lhn-diag-opt-c7x{display:inline-flex;margin:0;padding:8px 16px;border-radius:999px;
  font-size:var(--small)}
.lhn-diag-q--chips-c7x .lhn-diag-opt-c7x:has(input:checked){background:var(--primary);border-color:var(--primary);
  color:var(--cta-ink);box-shadow:none}
/* option_shape=cards: a tile grid, centred labels */
.lhn-diag-q--cards-c7x .lhn-diag-q-opts-c7x{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.lhn-diag-q--cards-c7x .lhn-diag-opt-c7x{margin:0;padding:16px 14px;justify-content:center;text-align:center;
  align-items:center;border-width:2px;min-height:64px}
/* option_shape=plain: native radios, no box */
.lhn-diag-q--plain-c7x .lhn-diag-opt-c7x{border:0;padding:4px 0;margin:0 0 4px;background:none!important;
  box-shadow:none!important;font-weight:500!important}
.lhn-diag-q--plain-c7x .lhn-diag-opt-c7x:has(input:checked){color:var(--ink)}
/* quiz_flow=steps: progress bar + counter above, Back / Next below */
.lhn-quiz-top-c7x{margin:0 0 20px}
.lhn-quiz-bar-c7x{height:6px;border-radius:999px;background:var(--bg-alt);overflow:hidden}
.lhn-quiz-bar-c7x span{display:block;height:100%;width:0;background:var(--primary);transition:width .25s ease}
.lhn-quiz-progress-c7x{font-size:var(--meta);color:var(--muted);margin:8px 0 0;font-weight:600}
.lhn-quiz-nav-c7x{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:6px 0 10px}
.lhn-quiz-nav-c7x .lhn-btn-c7x{margin-top:0}
.lhn-quiz-nav-end-c7x{display:flex;gap:10px;margin-left:auto}
/* one question at a time: the numbered badge would read "1" on every step */
[data-lhn-flow-c7x=steps] .lhn-diag-q-legend-c7x::before{display:none}
.lhn-quiz-nav-c7x .lhn-btn-c7x[disabled]{opacity:.45;cursor:default}
.lhn-diag-q-c7x.lhn-is-missing-c7x .lhn-diag-q-legend-c7x{color:var(--ink)}
.lhn-diag-q-c7x.lhn-is-missing-c7x::after{content:"Please choose an answer to continue";display:block;
  font-size:var(--meta);color:var(--muted);margin-top:8px}
/* result_style=prose: a sentence, not a panel */
.lhn-diag-out--prose-c7x:not(:empty){background:none;border-left:0;padding:16px 0 0;font-weight:400;
  font-size:var(--lead);color:var(--body)}
.lhn-diag-out--prose-c7x p{margin:0}
.lhn-diag-out--prose-c7x strong{display:inline;color:var(--ink)}
.lhn-diag-out--prose-c7x.lhn-is-high-c7x:not(:empty),.lhn-diag-out--prose-c7x.lhn-is-mid-c7x:not(:empty),
.lhn-diag-out--prose-c7x.lhn-is-low-c7x:not(:empty){background:none;color:var(--body)}
/* result_style=scale: every band on a strip, the matched one lit */
.lhn-quiz-scale-c7x{list-style:none;display:flex;gap:6px;margin:18px 0 0;padding:0}
.lhn-quiz-scale-c7x li{flex:1;text-align:center;font-size:var(--meta);font-weight:600;padding:9px 6px;
  border-radius:var(--r-md);background:var(--bg-alt);color:var(--muted);border:1px solid var(--line)}
.lhn-quiz-scale-c7x li.lhn-is-on-c7x{background:var(--ink);color:var(--cta-ink);border-color:var(--ink)}
/* result_style=replace: the questions give way to the result card */
.lhn-quiz-c7x.lhn-is-done-c7x fieldset,.lhn-quiz-c7x.lhn-is-done-c7x .lhn-quiz-top-c7x,.lhn-quiz-c7x.lhn-is-done-c7x .lhn-quiz-nav-c7x,.lhn-quiz-c7x.lhn-is-done-c7x>.lhn-btn--lg-c7x{display:none}
.lhn-diag-out--card-c7x:not(:empty){padding:24px 26px;border:1px solid var(--line);font-size:var(--lead)}
.lhn-diag-out--card-c7x strong{font-family:var(--font-head);font-size:var(--big);margin-bottom:.35em}
.lhn-quiz-c7x.lhn-is-done-c7x .lhn-diag-out--card-c7x:not(:empty){margin-top:0}
/* result_motion: quiet arrivals, all off under reduced motion */
@keyframes wfade{from{opacity:0}}
@keyframes wrise{from{opacity:0;transform:translateY(10px)}}
.lhn-motion-fade-c7x .lhn-is-anim-c7x:not(:empty),.lhn-motion-count-c7x .lhn-is-anim-c7x:not(:empty){animation:wfade .4s ease-out}
.lhn-motion-rise-c7x .lhn-is-anim-c7x:not(:empty){animation:wrise .45s ease-out}
@media(prefers-reduced-motion:reduce){.lhn-is-anim-c7x{animation:none!important}.lhn-quiz-bar-c7x span{transition:none}}
/* result_tone=mono: the brand held back on the tools */
.lhn-tone-mono-c7x .lhn-diag-q-legend-c7x::before{background:var(--bg-alt)}
.lhn-tone-mono-c7x .lhn-diag-opt-c7x:hover{border-color:var(--ink);background:var(--bg-alt)}
.lhn-tone-mono-c7x .lhn-diag-opt-c7x:has(input:checked){border-color:var(--ink);background:var(--bg-alt);
  box-shadow:inset 0 0 0 1px var(--ink)}
.lhn-tone-mono-c7x .lhn-diag-q--chips-c7x .lhn-diag-opt-c7x:has(input:checked){background:var(--ink);border-color:var(--ink);
  color:var(--cta-ink);box-shadow:none}
.lhn-tone-mono-c7x .lhn-diag-opt-c7x input{accent-color:var(--ink)}
.lhn-tone-mono-c7x .lhn-quiz-bar-c7x span{background:var(--ink)}
.lhn-tone-mono-c7x .lhn-diag-out-c7x:not(:empty){background:var(--bg-alt)}
.lhn-tone-mono-c7x .lhn-diag-out-c7x.lhn-is-low-c7x:not(:empty){background:var(--bg-alt);font-weight:500}
.lhn-tone-mono-c7x .lhn-diag-out-c7x.lhn-is-mid-c7x:not(:empty){background:var(--bg-alt);font-weight:600;
  box-shadow:inset 0 0 0 1px var(--line)}
.lhn-tone-mono-c7x .lhn-diag-out-c7x.lhn-is-high-c7x:not(:empty){background:var(--ink);color:var(--cta-ink)}
.lhn-tone-mono-c7x .lhn-diag-out--prose-c7x:not(:empty),.lhn-tone-mono-c7x .lhn-diag-out--prose-c7x.lhn-is-low-c7x:not(:empty),
.lhn-tone-mono-c7x .lhn-diag-out--prose-c7x.lhn-is-mid-c7x:not(:empty),.lhn-tone-mono-c7x .lhn-diag-out--prose-c7x.lhn-is-high-c7x:not(:empty){
  background:none;color:var(--body);box-shadow:none}
.lhn-tone-mono-c7x .lhn-calc-figure-c7x{background:var(--bg-alt)}
.lhn-tone-mono-c7x .lhn-form-card-c7x{border-top-color:var(--ink)}
.lhn-sav-compare-c7x{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px}
.lhn-sav-compare-c7x div{padding:14px 12px;border-radius:var(--r-md);background:var(--bg-alt);text-align:center}
.lhn-sav-compare-c7x div:last-child{background:var(--primary-90)}
.lhn-tone-mono-c7x .lhn-sav-compare-c7x div:last-child{background:var(--ink);color:var(--cta-ink)}
.lhn-sav-compare-c7x small{display:block;font-size:var(--meta);text-transform:uppercase;letter-spacing:.04em;
  color:var(--muted);font-weight:700;margin-bottom:4px}
.lhn-tone-mono-c7x .lhn-sav-compare-c7x div:last-child small{color:inherit;opacity:.8}
.lhn-sav-compare-c7x strong{font-family:var(--font-head);font-size:var(--big)}
@media(max-width:560px){.lhn-sav-compare-c7x{grid-template-columns:1fr}}
/* tools hub cards */
.lhn-toolgrid-c7x{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:22px;margin-top:8px}
.lhn-toolcard-c7x{display:flex;flex-direction:column;gap:6px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-md);padding:24px 22px}
a.lhn-toolcard-c7x:hover{text-decoration:none;border-color:var(--n-300);box-shadow:var(--shadow)}
.lhn-toolcard-c7x h3{margin:.4rem 0 .1rem;color:var(--black)}
.lhn-toolcard-c7x p{margin:0;color:var(--body)}
.lhn-toolcard-c7x .lhn-more-c7x{margin-top:auto;color:var(--primary);font-weight:500;font-size:var(--small);padding-top:10px}
/* Eighth round: interior page composition pools (engine/blocks.lhn-py-c7x). */
/* Interior hero sizes (blk_hero, rule 30): the gap UNDER the CTA row is never
   tighter than the gap above the copy — the buttons never hug the hero's foot. */
.lhn-hero--int-c7x{padding:56px 0 76px}
.lhn-hero--utility-c7x{padding:44px 0 52px}
.lhn-hero--tall-c7x{padding:80px 0 92px}
/* hero_layout=ctaright (interior) and hero_variant=ctaright (home): the CTA
   row broken out into a light card top right of the copy */
.lhn-hero-grid--cta-c7x{grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);align-items:center;gap:40px}
.lhn-hero-aside-c7x{background:var(--surface);color:var(--ink);border-radius:var(--r-lg);
  padding:24px 26px;box-shadow:var(--sh-lg);justify-self:end;width:100%;max-width:380px;text-align:center}
.lhn-hero-aside-h-c7x{margin:0 0 14px;font-family:var(--font-head);font-weight:700;font-size:var(--lead);color:var(--ink)}
.lhn-hero-aside-c7x .lhn-hero-cta-c7x{margin-top:0;flex-direction:column;align-items:stretch;gap:10px}
.lhn-hero-aside-c7x .lhn-hero-cta-c7x .lhn-btn-c7x{width:100%;text-align:center}
.lhn-hero-aside-c7x .lhn-btn--outline-light-c7x{color:var(--ink);box-shadow:inset 0 0 0 2px var(--ink)}
.lhn-hero-aside-c7x .lhn-btn--outline-light-c7x:hover{background:var(--ink);color:var(--surface)}
.lhn-hero-aside-phone-c7x{display:block;margin-top:14px;font-weight:700;color:var(--ink);text-align:center}
/* article_layout: rail = reading column beside a sticky side rail; lede = the
   lead as a standfirst over the column; toc uses the .lhn-toc-jump-c7x grammar. */
:root{--sticky-top:96px}
/* logo_size (D1): --sticky-top follows the picked mark height; the taller
   tworow header below overrides it (later rule, same weight). */
[data-lhn-logo-c7x=compact]{--sticky-top:94px}
[data-lhn-logo-c7x=large]{--sticky-top:98px}
[data-lhn-logo-c7x=tall]{--sticky-top:102px}
[data-lhn-header-c7x=tworow]{--sticky-top:150px}
/* C1.1 (R25): a static header scrolls away with the page; the mobile open
   menu is pinned below the header row and relies on the sticky header at
   small widths, so the static override is desktop-scoped only. */
@media(min-width:901px){[data-lhn-sticky-c7x=static] .lhn-site-header-c7x{position:static}}
[data-lhn-sticky-c7x=static]{--sticky-top:16px}
.lhn-article-grid-c7x{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:48px;align-items:start}
.lhn-article-main-c7x{max-width:760px}
.lhn-article-rail-c7x{position:sticky;top:var(--sticky-top);display:flex;flex-direction:column;gap:18px}
.lhn-rail-card-c7x{background:var(--bg-alt);border:1px solid var(--line);border-radius:var(--r-md);padding:20px 22px}
.lhn-rail-card-c7x .lhn-eyebrow-c7x{margin-bottom:.4rem}
.lhn-rail-card-c7x p{margin:0 0 .9rem;color:var(--body)}
.lhn-rail-card-c7x h3{margin:0 0 .5rem;}
.lhn-rail-card-c7x .lhn-btn-c7x{display:block;text-align:center}
.lhn-rail-links-c7x{list-style:none;margin:0;padding:0}
.lhn-rail-links-c7x li{padding:7px 0;border-top:1px solid var(--line)}
/* links_shape=ruled: a single-column ruled list — town name left, site glyph right */
.lhn-ruled-links-c7x{list-style:none;margin:0;padding:0}
.lhn-ruled-links-c7x li{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.lhn-ruled-links-c7x li:first-child{border-top:0}
.lhn-ruled-links-c7x a{font-weight:600;color:var(--ink);flex:1}
.lhn-ruled-links-c7x .lhn-glyph-c7x{color:var(--muted)}
.lhn-rail-links-c7x li:first-child{border-top:0;padding-top:0}
.lhn-standfirst-c7x{font-size:var(--big);line-height:1.55;color:var(--ink);margin:0 0 2rem;
  padding-bottom:1.6rem;border-bottom:1px solid var(--line)}
/* hub_list_variant: list rows (services rows grammar) and the featured lead card */
.lhn-hub-rows-c7x{max-width:880px;margin:0 auto}
.lhn-hub-row-c7x .lhn-res-meta-c7x{margin:0 0 2px}
.lhn-hub-row-c7x .lhn-svc-row-main-c7x h3{margin:0}
.lhn-card--feature-c7x{grid-column:1/-1;background:var(--bg-alt);border-color:transparent;padding:34px 36px}
.lhn-card--feature-c7x h3{font-size:var(--h3)}
.lhn-card--feature-c7x p{max-width:70ch}
/* prose_page_variant + use_case_layout: the split grammar top-aligns for long
   prose (a centred lead beside a long body would float mid-page); panel = the
   lead in a tinted panel over the column. */
.lhn-prose-split-c7x{align-items:start}
.lhn-prose-split-c7x .lhn-svc-index-copy-c7x{position:sticky;top:var(--sticky-top)}
.lhn-tool-panel-c7x p{max-width:none}
.lhn-prose-split-c7x .lhn-prose-c7x>:first-child{margin-top:0}
/* the pull-quote attribution sits on a tinted callout, not the hero: muted, never white */
.lhn-callout-c7x .lhn-byline-c7x{color:var(--muted)}
/* tool_layout: sidebar = tool beside a sticky rail; panel = tool in a tinted panel */
.lhn-tool-grid-c7x{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:40px;align-items:start}
.lhn-tool-main-c7x>h2{margin-top:0}
.lhn-tool-rail-c7x{position:sticky;top:var(--sticky-top)}
.lhn-tool-panel-c7x{background:var(--bg-alt);border-radius:var(--r-xl);padding:36px 40px}
.lhn-tool-panel-c7x>h2{margin-top:0}
.lhn-tool-panel-c7x .lhn-form-card-c7x{background:var(--surface)}
/* article_layout: meta = editorial meta rail left of the column; boxed = the
   column as a white card on a tinted band */
.lhn-article-meta-grid-c7x{display:grid;grid-template-columns:240px minmax(0,1fr);gap:56px;align-items:start}
.lhn-article-meta-c7x{position:sticky;top:var(--sticky-top);padding-top:10px;border-top:1px solid var(--line)}
.lhn-article-meta-c7x .lhn-eyebrow-c7x{margin:14px 0 6px}
.lhn-article-meta-c7x .lhn-byline-c7x{margin:0 0 14px;color:var(--muted);font-size:var(--small)}
.lhn-article-meta-c7x .lhn-meta-h-c7x,.lhn-author-card-c7x .lhn-meta-h-c7x{margin:18px 0 6px;font-family:var(--font-head);font-weight:700;font-size:var(--meta);
  text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.lhn-author-card-c7x .lhn-meta-h-c7x{margin-top:0}
.lhn-article-box-c7x{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:44px 48px;box-shadow:var(--shadow)}
/* hub_list_variant: grouped / compact */
.lhn-hub-group-c7x+.lhn-hub-group-c7x{margin-top:36px}
.lhn-hub-group-h-c7x{max-width:880px;margin:0 auto 4px;font-size:var(--small);text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted)}
.lhn-hub-compact-c7x{list-style:none;margin:0 auto;padding:0;max-width:880px;columns:2;column-gap:44px}
.lhn-hub-compact-c7x li{break-inside:avoid;padding:12px 0;border-bottom:1px solid var(--line)}
.lhn-hub-compact-c7x li a{font-weight:700;color:var(--black)}
.lhn-hub-compact-c7x li .lhn-res-meta-c7x{display:block;margin:2px 0 0}
.lhn-hub-ledger-c7x{list-style:none;margin:var(--head-gap,28px) 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:0 40px}
.lhn-hub-ledger-c7x li{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}
.lhn-hub-ledger-c7x li a{font-weight:600;color:var(--ink)}
.lhn-hub-ledger-c7x li .lhn-res-meta-c7x{margin:0;white-space:nowrap}
.lhn-hub-mag-leads-c7x{margin-top:var(--head-gap,28px)}
.lhn-hub-mag-leads-c7x .lhn-card--feature-c7x h3{font-size:var(--h3)}
.lhn-hub-mag-rest-c7x{margin-top:var(--grid-gap,24px)}
.lhn-card--compact-c7x{padding:16px 18px}
.lhn-card--compact-c7x p{display:none}
@media(max-width:720px){.lhn-hub-ledger-c7x{grid-template-columns:1fr}}
/* tool_layout: band = tool in a tinted band under a centred heading */
/* grid items default to min-width:auto (their content's min-content width):
   a tool form or a long word inside a split / rail column must never widen
   the column past the viewport (visual QA: mobile overflow) */
.lhn-tool-main-c7x,.lhn-article-main-c7x,.lhn-prose-split-c7x>*,.lhn-article-meta-grid-c7x>*{min-width:0}
.lhn-tool-band-c7x>.lhn-wrap-c7x>h2{margin-bottom:22px}
.lhn-tool-band-c7x .lhn-form-card-c7x{background:var(--surface)}
/* use-case page: signs / factors shapes, related links */
.lhn-uc-cards-c7x .lhn-card-c7x p{margin:0;color:var(--ink);font-weight:600}
.lhn-uc-steps-c7x li p{margin:0}
.lhn-uc-callout-c7x h3{margin-bottom:.6rem}
.lhn-uc-callout-c7x .lhn-ticks-c7x{margin:0}
.lhn-card--link-c7x{display:flex;align-items:center;gap:12px}
.lhn-card--link-c7x h3{margin:0;flex:1}
.lhn-card--link-c7x .lhn-more-c7x .lhn-glyph-c7x{font-size:var(--glyph)}
.lhn-uc-panel--onalt-c7x{background:var(--surface);border:1px solid var(--line)}
@media(max-width:900px){
  .lhn-hero-grid--cta-c7x{grid-template-columns:1fr}
  .lhn-hero-aside-c7x{justify-self:stretch;max-width:none}
  .lhn-article-grid-c7x,.lhn-tool-grid-c7x,.lhn-article-meta-grid-c7x{grid-template-columns:1fr}
  .lhn-article-rail-c7x,.lhn-tool-rail-c7x,.lhn-prose-split-c7x .lhn-svc-index-copy-c7x,.lhn-article-meta-c7x{position:static}
  .lhn-hub-compact-c7x{columns:1}
}
@media(max-width:680px){.lhn-tool-panel-c7x{padding:24px 20px}.lhn-card--feature-c7x{padding:24px 22px}
  .lhn-article-box-c7x{padding:26px 22px}}

/* folio: NOTE (operator rule, alignment): the theme used to pull the centred
   section heads (eyebrow / h2 / intro) left while leaving the lead paragraph
   and link line centred — a left heading over centred body copy in the same
   block (the about teaser, signs, coverage). A block is centred or left as a
   whole; no theme may pull `.lhn-section-c7x .lhn-center-c7x` / `.lhn-pills-c7x` left. Gate:
   tests/test_operator_design_rules.lhn-py-c7x TestBlockAlignmentConsistent. */
/* folio CTA: a quiet bordered card, centred at reading width (the left-flush
   card left a dead gap to the right) */
[data-lhn-theme-c7x=folio] .lhn-cta-plain-c7x .lhn-cta-panel-c7x{margin-left:auto;margin-right:auto}

/* folio: process-step markers are neutral outlined numerals, not accent-filled
   discs — the filled circle in a rotated brand hue reads as a stray blob on the
   paper canvas (operator feedback), and a hairline numeral suits the folio */
[data-lhn-theme-c7x=folio] .lhn-steps-c7x li::before{background:transparent;color:var(--ink);
  border:1px solid var(--line);font-weight:500}

/* 'strip' presentation: quiet fact sheet — small uppercase label over the
   value in a balanced grid (column count + tail spans come from the renderer
   via --fc/--fs), a top rule per cell, no pill chrome */
.lhn-fact-strip-c7x{display:grid;grid-template-columns:repeat(var(--fc, 3),1fr);
  gap:18px 30px;margin:0}
.lhn-fact-cell-c7x{grid-column:span var(--fs, 1);border-top:1px solid var(--line);
  padding-top:10px;font-size:var(--small);color:var(--body)}
.lhn-fact-cell-c7x .lhn-fact-what-c7x{display:block;margin-top:4px;color:var(--muted)}
.lhn-fact-label-c7x{display:block;font-size:var(--meta);text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted);font-weight:700;margin-bottom:4px}
@media(max-width:820px){.lhn-fact-strip-c7x{grid-template-columns:repeat(2,1fr)}
  .lhn-fact-cell-c7x{grid-column:auto}}
@media(max-width:560px){.lhn-fact-strip-c7x{grid-template-columns:1fr}}
.lhn-facts-table-c7x{width:100%;border-collapse:collapse;font-size:var(--small)}
/* Uniform row height: every row gets the same floor — sized to hold a
   4-line fact (4 lines at .95rem x --body-leading + the 10px+10px cell
   padding), i.lhn-e-c7x. the natural height of the tallest typical row — so a
   one-line fact no longer sits squashed beside a tall one. tr height acts
   as a minimum in table layout; a longer fact still grows its row. Lives
   in the base sheet, so every theme inherits it (no theme pack restyles
   .lhn-facts-table-c7x). Mobile relaxes the floor: single-column rows of empty
   space read as broken. */
.lhn-facts-table-c7x tr{height:calc(4 * var(--body-leading, 1.5) * 0.95rem + 20px)}
.lhn-facts-table-c7x th{text-align:left;color:var(--muted);font-weight:600;width:220px;
  padding:10px 14px 10px 0;border-bottom:1px solid var(--line);vertical-align:middle}
.lhn-facts-table-c7x td{padding:10px 0;border-bottom:1px solid var(--line);color:var(--body);
  vertical-align:middle}
/* fact icon: one global rule — every fact presentation (table rows, list
   items, mini tiles, stat cards) shares the same sized inline icon. Scoped
   duplicates let bare contexts (split tiles) inherit an unsized svg that
   blew up to container width. */
.lhn-f-ico-c7x{display:inline-block;vertical-align:-4px;margin-right:9px;
  color:var(--primary)}
.lhn-f-ico-c7x svg{width:17px;height:17px;display:block}
@media(max-width:640px){.lhn-facts-table-c7x tr{height:auto}}

/* -- nav / link / spacing fixes (operator review, two local builds) -- */
/* E1: the "all …" link draws its own full-width top rule. A full-width
   row-rules axis (hairline, dotted) already draws that separator under the
   last option, so zero the all-link's rule there and keep one line at the
   seam. The inset axis draws inside the row and the none axis draws nothing,
   so both keep the all-link's rule. No surface skin special-cases this; the
   panel_menu all-link is a .lhn-btn-c7x on its own row, so no option rule doubles
   there either. */
[data-lhn-menurules-c7x=hairline] .lhn-mega-all-c7x,[data-lhn-menurules-c7x=dotted] .lhn-mega-all-c7x{border-top:0}
/* E3: closing links — no underline on the text (an underline stops at the
   glyph box and reads as two links); hover feedback lives on the arrow per
   link_glyph_hover. Link_glyph=none keeps the classic hover underline. */
.lhn-more-c7x{align-items:center}
.lhn-more-c7x:hover{text-decoration:none}
.lhn-more-c7x{color:var(--link)}
main p a.lhn-more-c7x,.lhn-faq-ask-c7x a.lhn-more-c7x{text-decoration:none}
.lhn-more-c7x .lhn-more-text-c7x{text-decoration:none}
.lhn-more-c7x:hover .lhn-more-text-c7x{text-decoration:none}
.lhn-more-c7x .lhn-glyph-c7x{display:inline-flex;align-items:center;line-height:1;font-size:var(--glyph);transition:transform .18s ease,color .18s ease}
.lhn-more-c7x .lhn-glyph-c7x svg{display:block;width:.8em;height:.8em}
.lhn-nav-cta-glyph-c7x svg{display:block;width:1em;height:1em}
/* link_glyph_hover pool: hover feedback lives on the arrow only. Motion
   honours reduced-motion (see the media query with the nav-cta rule). */
[data-lhn-glyphhover-c7x=slide] .lhn-more-c7x:hover .lhn-glyph-c7x{transform:translateX(3px)}
[data-lhn-glyphhover-c7x=tint] .lhn-more-c7x:hover .lhn-glyph-c7x{color:var(--primary)}
[data-lhn-glyphhover-c7x=both] .lhn-more-c7x:hover .lhn-glyph-c7x{transform:translateX(3px);color:var(--primary)}
.lhn-faq-ask-c7x .lhn-more-c7x{display:inline-flex;align-items:center}
/* E4: jump links clear the sticky header instead of landing under it. */
[id]{scroll-margin-top:calc(var(--sticky-top) + 12px)}
/* E5: one eyebrow markup, one gap — a single rule set for every ancestor
   (the .lhn-section-c7x vs bare split is folded away; late in the sheet so it wins). */
.lhn-eyebrow-c7x,.lhn-section-c7x .lhn-eyebrow-c7x{margin:0 0 var(--eyebrow-gap,10px)}
.lhn-eyebrow-c7x + h1,.lhn-eyebrow-c7x + h2,.lhn-eyebrow-c7x + h3{margin-top:0}
/* E7 (C5): the strip CTA is a --primary band, so its button inverts (white
   on brand) exactly like .lhn-cta-band-c7x .lhn-btn-c7x. */
.lhn-cta-strip-c7x .lhn-btn-c7x{background:#FFF;color:var(--primary)}
.lhn-cta-strip-c7x .lhn-btn-c7x:hover{background:var(--primary-90);color:var(--primary)}

/* basalt: the centred solid CTA band is pulled left to match its split-hero
   grammar. (The about-teaser left-pull is removed: it left a narrow
   left-flush column with dead space to its right — a banned stranded-left
   block — and the theme-level `.lhn-center-c7x` override is itself banned.) */
[data-lhn-theme-c7x=basalt] .lhn-cta-band--solid-c7x{text-align:left}
[data-lhn-theme-c7x=basalt] .lhn-cta-band-c7x .lhn-cta-ticks-c7x,
[data-lhn-theme-c7x=basalt] .lhn-cta-band--solid-c7x .lhn-cta-ticks-c7x{display:inline-block;text-align:left}

/* govpress: civic design-system world. Flat, square, no shadows, no photo
   scrims — a white hero with black type, green CTA with the hard bottom edge,
   blue links, inset-rule callouts. Scoped to [data-lhn-theme-c7x=govpress]. */
[data-lhn-theme-c7x=govpress] .lhn-hero-c7x{background:var(--bg) !important;color:var(--ink)}
[data-lhn-theme-c7x=govpress] .lhn-hero-c7x::before,[data-lhn-theme-c7x=govpress] .lhn-hero-c7x::after{display:none}
[data-lhn-theme-c7x=govpress] .lhn-hero-c7x h1{color:var(--ink)}
[data-lhn-theme-c7x=govpress] .lhn-hero-c7x .lhn-lead-c7x,
[data-lhn-theme-c7x=govpress] .lhn-hero-c7x .lhn-hero-proof-c7x li{color:var(--body)}
[data-lhn-theme-c7x=govpress] .lhn-hero-c7x .lhn-hero-proof-c7x li::before{border-color:var(--primary)}
[data-lhn-theme-c7x=govpress] .lhn-hero-c7x .lhn-eyebrow-c7x,
[data-lhn-theme-c7x=govpress] .lhn-hero-c7x .lhn-eyebrow-c7x .lhn-eb-a-c7x{color:inherit}
[data-lhn-theme-c7x=govpress] .lhn-hero-c7x .lhn-eyebrow-c7x .lhn-eb-sep-c7x,
[data-lhn-theme-c7x=govpress] .lhn-hero-c7x .lhn-eyebrow-c7x .lhn-eb-b-c7x{color:var(--muted)}
/* left grammar everywhere: the legacy centred section heads and pill rows are
   pulled left to match the hero (no centred islands — deep-theme learning) */
/* NOTE (operator rule, "fix the areas section once and for all"): the civic
   theme used to force the centred section heads and pill rows left ("left
   grammar everywhere"). That fought the centred areas-we-cover and FAQ
   blocks on every page — the centred grammar wins; do not re-add the
   .lhn-section-c7x .lhn-center-c7x / .lhn-pills-c7x left-pulls for this theme. */
/* green button with the hard bottom edge (the GOV.lhn-UK-c7x button signature) */
[data-lhn-theme-c7x=govpress] .lhn-btn-c7x{box-shadow:0 3px 0 var(--cta-hover)}
[data-lhn-theme-c7x=govpress] .lhn-btn-c7x:hover{background:var(--cta);box-shadow:0 1px 0 var(--cta-hover);
  transform:translateY(2px)}
[data-lhn-theme-c7x=govpress] .lhn-btn--outline-light-c7x{box-shadow:inset 0 0 0 2px var(--line);color:var(--ink)}
[data-lhn-theme-c7x=govpress] .lhn-btn-c7x.lhn-btn--outline-light-c7x{box-shadow:inset 0 0 0 2px var(--line), 0 3px 0 var(--n-300)}
[data-lhn-theme-c7x=govpress] .lhn-btn-c7x.lhn-btn--outline-light-c7x:hover{background:var(--bg-alt);
  box-shadow:inset 0 0 0 2px var(--line), 0 1px 0 var(--n-300);
  transform:translateY(2px)}
/* govpress CTA + why cards: plain flat cards (operator rule: cards never carry
   a thick vertical border on the left — no accent-bar card chrome) */
[data-lhn-theme-c7x=govpress] .lhn-cta-plain-inner-c7x{border:1px solid var(--line);border-radius:0;
  background:var(--bg);padding-left:34px}
[data-lhn-theme-c7x=govpress] .lhn-benefit-c7x{border:1px solid var(--line);border-radius:0;
  background:var(--bg)}
[data-lhn-theme-c7x=govpress] .lhn-benefit-c7x .lhn-icon-c7x{background:transparent;color:var(--primary)}
/* faq accordions read as GOV.lhn-UK-c7x <details> */
[data-lhn-theme-c7x=govpress] .lhn-faq-c7x summary{list-style:none}
[data-lhn-theme-c7x=govpress] .lhn-faq-c7x summary::-webkit-details-marker{display:none}
[data-lhn-theme-c7x=govpress] .lhn-faq-c7x summary::before{content:"\25B8\2002";color:var(--primary)}
[data-lhn-theme-c7x=govpress] .lhn-faq-c7x details[open] summary::before{content:"\25BE\2002"}
/* chevron LEFT or plus RIGHT — never both (operator rule): the chevron carries
   the open/closed state, so the base "+" marker is dropped */
[data-lhn-theme-c7x=govpress] .lhn-faq-c7x summary::after{content:none}
/* breadcrumbs: the civic design-system grammar — a full-width bar with the
   header hairline, underlined blue trail links, grey chevrons, plain current
   page (the engine default's muted non-underlined links read as off-system) */
[data-lhn-theme-c7x=govpress] .lhn-crumbs-c7x{font-size:var(--lead);padding:12px 0;
  border-bottom:1px solid var(--line)}
[data-lhn-theme-c7x=govpress] .lhn-crumbs-c7x a{color:var(--link);text-decoration:underline;
  text-underline-offset:3px}
[data-lhn-theme-c7x=govpress] .lhn-crumbs-c7x a:hover{color:var(--primary-hover)}
[data-lhn-theme-c7x=govpress] .lhn-crumbs-c7x span[aria-hidden]{color:var(--muted)}
/* footer: black band, brand top rule */
[data-lhn-theme-c7x=govpress] .lhn-site-footer-c7x{border-top:6px solid var(--primary)}

/* Every location-data presentation stacks: heading block on top, the facts
   filling the full column beneath (operator feedback — right-column layouts
   left dead space, and the prose measure read as a fixed-width rag).
   Rhythm is fixed here in the base sheet: grid gap owns the space between
   the header block and the facts, and the facts' own component margins are
   zeroed at the container edges so the spacing is identical across themes. */
.lhn-loc-grid-c7x{display:grid;grid-template-columns:1fr;gap:18px}
.lhn-loc-grid-c7x h2{margin:0}
/* optional eyebrow + high-level intro rendered with the heading */
.lhn-loc-intro-c7x{margin-top:10px;color:var(--body);font-size:var(--lead)}
.lhn-loc-body-c7x > :first-child{margin-top:0}
.lhn-loc-body-c7x > :last-child{margin-bottom:0}
/* prose mode: label-led fact paragraphs flow as a two-column fact box, so
   the text fills the width a single measure would leave empty */
.lhn-loc-body-c7x .lhn-prose-c7x{columns:2;column-gap:44px}
.lhn-loc-body-c7x .lhn-prose-c7x p{margin:0 0 14px;break-inside:avoid;max-width:none}
@media(max-width:820px){.lhn-loc-body-c7x .lhn-prose-c7x{columns:1}}
/* 'list' presentation: one icon-led item per fact */
.lhn-facts-list-c7x{list-style:none;margin:0;padding:0}
.lhn-facts-list-c7x li{padding:12px 0;border-bottom:1px solid var(--line);color:var(--body)}
.lhn-facts-list-c7x li strong{color:var(--ink)}
/* 'diagram' presentation: a drawing of a home with a numbered marker on the
   part each fact bears on, beside a numbered key that prints each fact */
.lhn-fact-diagram-c7x{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);
  gap:28px;align-items:center;margin:0}
.lhn-fd-art-c7x{width:100%;height:auto;display:block;border:1px solid var(--line);
  border-radius:var(--r-md);background:var(--surface)}
.lhn-fd-sky-c7x{fill:var(--bg-alt)}
.lhn-fd-ground-c7x{fill:var(--primary-90)}
.lhn-fd-strata-c7x{fill:none;stroke:var(--line);stroke-width:1.5}
.lhn-fd-water-c7x{fill:var(--primary);opacity:.35}
.lhn-fd-tree-c7x{fill:var(--primary);opacity:.45}
.lhn-fd-trunk-c7x{fill:var(--muted)}
.lhn-fd-wall-c7x{fill:var(--surface);stroke:var(--ink);stroke-width:1.5}
.lhn-fd-roof-c7x{fill:var(--ink);opacity:.8}
.lhn-fd-win-c7x{fill:var(--bg-alt);stroke:var(--ink);stroke-width:1}
.lhn-fd-door-c7x{fill:var(--primary)}
.lhn-fd-pin-c7x circle{fill:var(--primary);stroke:var(--surface);stroke-width:2}
.lhn-fd-pin-c7x text{fill:var(--cta-ink);font-size:11px;font-weight:700;font-family:var(--font-head)}
.lhn-fd-key-c7x{list-style:none;margin:0;padding:0}
.lhn-fd-key-c7x li{display:grid;grid-template-columns:auto auto 1fr;gap:0 10px;align-items:start;
  padding:11px 0;border-bottom:1px solid var(--line);color:var(--body)}
.lhn-fd-key-c7x li strong{color:var(--ink)}
.lhn-fd-n-c7x{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;
  border-radius:50%;background:var(--primary);color:var(--cta-ink);font-size:var(--small);
  font-weight:700}
@media(max-width:820px){.lhn-fact-diagram-c7x{grid-template-columns:1fr}}
/* footer */
/* conversion benefits grid (service pages): authored reassurance copy as
   substantive benefit cards, not bare ticks */
.lhn-benefit-grid-c7x{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 22px;
  margin-top:26px}
.lhn-benefit-c7x{display:flex;gap:12px;align-items:flex-start;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-md);padding:16px 18px;
  color:var(--body)}
.lhn-benefit-c7x .lhn-icon-c7x{flex:0 0 auto;width:34px;height:34px;border-radius:var(--r-md);
  display:flex;align-items:center;justify-content:center;
  background:var(--primary-90);color:var(--primary)}
.lhn-benefit-c7x .lhn-icon-c7x svg{width:18px;height:18px}
.lhn-benefit-c7x strong{color:var(--ink)}
.lhn-benefit-c7x > :last-child{margin-bottom:0}
.lhn-benefit-ticks-c7x{font-size:var(--lead);max-width:820px}
.lhn-benefit-ticks-c7x li{margin-bottom:12px}
.lhn-benefit-ticks-c7x strong{color:var(--ink)}
@media(max-width:820px){.lhn-benefit-grid-c7x{grid-template-columns:1fr}}
.lhn-site-footer-c7x{background:var(--band-bg);color:var(--band-muted);font-size:var(--small)}
.lhn-footer-grid-c7x{display:grid;grid-template-columns:1.6fr repeat(4,1fr);gap:32px;padding:56px 0 32px}
/* footer_style: nap — contact-card footer, NAP details dominant left, link
   columns right (the local-business footer; structurally distinct from the
   link-columns default). Degrades to the base grid on narrow screens. */
.lhn-footer-grid--nap-c7x{grid-template-columns:1.5fr repeat(auto-fit,minmax(140px,1fr))}
.lhn-footer-nap-c7x .lhn-footer-wordmark-c7x{font-size:var(--big)}
.lhn-footer-nap-c7x .lhn-footer-addr-c7x{margin-top:10px}
.lhn-footer-nap-c7x{min-width:0}
.lhn-footer-nap-c7x .lhn-footer-addr-c7x,.lhn-footer-nap-c7x .lhn-footer-email-c7x{margin-bottom:0}
.lhn-site-footer-c7x h4{color:#FFF;font-size:var(--lead);line-height:1.3;margin:0 0 14px;padding-top:.3rem}
.lhn-footer-grid-c7x>div>h4:first-child{padding-top:.3rem}
.lhn-site-footer-c7x a{color:var(--n-300)}
.lhn-site-footer-c7x a:hover{color:var(--primary-60)}
.lhn-site-footer-c7x ul{list-style:none;padding:0;margin:0}
.lhn-site-footer-c7x li{margin-bottom:8px}
.lhn-footer-brand-c7x svg{margin-bottom:12px}
.lhn-footer-bottom-c7x{border-top:1px solid var(--n-800);padding:18px 0;
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px 18px;font-size:var(--meta)}
.lhn-footer-legal-c7x{display:flex;flex-wrap:wrap;gap:6px 18px}
.lhn-footer-legal-c7x a{color:var(--n-300)}
.lhn-footer-legal-c7x a:hover{color:var(--primary-60)}
.lhn-footer-credit-c7x{padding:0 0 18px;font-size:var(--meta);color:var(--n-300)}
.lhn-footer-credit-c7x a{color:var(--band-muted)}
.lhn-footer-addr-c7x{margin-top:10px;font-style:normal;font-size:var(--small);color:var(--n-300)}
.lhn-footer-grid-c7x>*{min-width:0}
.lhn-footer-email-c7x{margin-top:8px;font-size:var(--small)}
.lhn-contact-email-c7x{overflow-wrap:anywhere}

/* trust bar (sits on a dark section) */
.lhn-trust-c7x{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;text-align:center;align-items:stretch}
.lhn-trust-c7x>*{min-width:0}
.lhn-trust-c7x>div{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:22px 16px}
.lhn-trust-c7x .lhn-num--long-c7x{font-size:var(--big);line-height:1.15;padding-top:6px}
.lhn-trust-c7x .lhn-num-c7x{font-family:var(--font-head);font-size:var(--display);font-weight:700;
  color:var(--primary-60);line-height:1}
.lhn-trust-c7x .lhn-lbl-c7x{font-size:var(--small);color:var(--n-300);margin-top:4px}
.lhn-section--dark-c7x .lhn-trust-c7x .lhn-num-c7x{color:#FFF}
.lhn-section--dark-c7x .lhn-trust-c7x .lhn-lbl-c7x{color:#B9BFC6}
/* metrics/trust as a branded colour block (per-site brand colour, not the same
   near-black on every site) */
.lhn-trust-band-c7x{background:var(--primary);padding:36px 0}
.lhn-trust-band-c7x .lhn-trust-c7x .lhn-num-c7x{color:#FFF}
.lhn-trust-band-c7x .lhn-trust-c7x .lhn-lbl-c7x{color:rgba(255,255,255,.85)}
.lhn-trust--3-c7x{grid-template-columns:repeat(3,1fr);max-width:900px;margin-left:auto;margin-right:auto}
.lhn-trust--panel-c7x.lhn-trust--odd-c7x>div:first-child{grid-column:1/-1}
.lhn-contact-trust-c7x .lhn-price-line-c7x{margin:0 0 12px}
/* trust_stats=statement: a single prose line, no numbers */
.lhn-trust-statement-c7x{font-family:var(--font-head);font-size:var(--lead);margin:0;text-align:center}
.lhn-trust-band--statement-c7x .lhn-trust-statement-c7x{color:var(--on-primary)}
.lhn-trust-sec--statement-c7x .lhn-trust-statement-c7x{color:var(--ink)}
.lhn-section--dark-c7x .lhn-trust-sec--statement-c7x .lhn-trust-statement-c7x,.lhn-section--dark-c7x .lhn-trust-statement-c7x{color:inherit}
/* statement mode: the statement heads a compact inline row of the items —
   never a lone-sentence section */
.lhn-trust-sec--statement-c7x .lhn-trust-inline-c7x,.lhn-trust-band--statement-c7x .lhn-trust-inline-c7x{
  list-style:none;padding:0;margin:12px 0 0;display:flex;flex-wrap:wrap;
  justify-content:center;gap:6px 18px;font-family:var(--font-body);
  font-size:var(--ui);text-align:center}
/* trust_variant=inline: one centred sentence with bold figures — no boxes */
.lhn-trust-inline-c7x{font-family:var(--font-head);font-size:var(--lead);margin:0;text-align:center;
  color:var(--ink)}
.lhn-trust-inline-c7x strong{color:var(--primary);font-weight:700}
/* on the brand band the items take the band's own ink: a primary-coloured
   figure on the primary band was invisible (R41, a reseeded real site) */
.lhn-trust-band--statement-c7x .lhn-trust-inline-c7x,.lhn-trust-band--statement-c7x .lhn-trust-inline-c7x strong{
  color:var(--on-primary)}
/* a dark band paints its own ink: no descendant keeps a page-surface colour (AA on the band) */
.lhn-section--dark-c7x p,.lhn-section--dark-c7x li,.lhn-section--dark-c7x h2,.lhn-section--dark-c7x h3,.lhn-section--dark-c7x .lhn-lead-c7x,
.lhn-section--dark-c7x .lhn-eyebrow-c7x,.lhn-section--dark-c7x .lhn-trust-inline-c7x,.lhn-section--dark-c7x .lhn-trust-statement-c7x,
.lhn-section--dark-c7x strong,.lhn-section--dark-c7x .lhn-trust-inline-c7x strong{color:inherit}
.lhn-ti-sep-c7x{color:var(--muted);margin:0 .35em}
/* trust_variant=splitpanel: statement copy left, a 2×2 stat grid right */
.lhn-tp-grid-c7x{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center}
.lhn-tp-copy-c7x .lhn-lead-c7x{margin-bottom:0}
.lhn-trust--panel-c7x{grid-template-columns:repeat(2,1fr);gap:14px;text-align:left;
  max-width:none;margin:0}
.lhn-trust--panel-c7x .lhn-num-c7x{font-size:var(--display)}
.lhn-trust--panel-c7x>div{background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);padding:18px 20px;display:flex;flex-direction:column;
  justify-content:center;align-items:center}
.lhn-trust--panel-c7x .lhn-num-c7x{color:var(--primary)}
.lhn-trust--panel-c7x .lhn-lbl-c7x{color:var(--muted)}
@media(max-width:820px){.lhn-tp-grid-c7x{grid-template-columns:1fr;gap:26px}}

/* logo images (no filters, ever) */
.lhn-brand-c7x img{width:auto;display:block}
/* a flex-squeezed wordmark distorts when the box shrinks but the inline height
   stays (glyphs overlap into unreadability). The brand link must be allowed to
   shrink (min-width:0 — the width attribute would otherwise pin it) and the img
   letterboxes inside whatever box is left via object-fit:contain. */
.lhn-brand-c7x{min-width:0}
.lhn-brand-c7x img{max-width:100%;height:auto;object-fit:contain;object-position:left}
.lhn-footer-wordmark-c7x{font-family:var(--font-head);font-weight:700;font-size:var(--big);color:#FFF;
  display:block;line-height:1.3}
.lhn-cta-ticks-c7x{display:inline-block;text-align:left;margin:18px auto 24px;max-width:520px;color:var(--n-300)}
/* CTA band: a branded call-to-action that stands apart from the dark footer. */
.lhn-cta-band-c7x{background:var(--primary);color:#FFF}
.lhn-cta-band-c7x .lhn-eyebrow-c7x{color:rgba(255,255,255,.82)}
/* split-eyebrow spans inherit --primary/--muted, which vanishes on the branded
   (primary-coloured) CTA surfaces — pin every part to light tones there */
.lhn-cta-band-c7x .lhn-eyebrow-c7x .lhn-eb-a-c7x,.lhn-cta-panel-c7x .lhn-eyebrow-c7x .lhn-eb-a-c7x,
.lhn-cta-split-copy-c7x .lhn-eyebrow-c7x .lhn-eb-a-c7x{color:#FFF}
.lhn-cta-band-c7x .lhn-eyebrow-c7x .lhn-eb-sep-c7x,.lhn-cta-band-c7x .lhn-eyebrow-c7x .lhn-eb-b-c7x,
.lhn-cta-panel-c7x .lhn-eyebrow-c7x .lhn-eb-sep-c7x,.lhn-cta-panel-c7x .lhn-eyebrow-c7x .lhn-eb-b-c7x,
.lhn-cta-split-copy-c7x .lhn-eyebrow-c7x .lhn-eb-sep-c7x,.lhn-cta-split-copy-c7x .lhn-eyebrow-c7x .lhn-eb-b-c7x{color:rgba(255,255,255,.75)}
.lhn-cta-band-c7x h2{color:#FFF}
.lhn-cta-band-c7x .lhn-lead-c7x{color:rgba(255,255,255,.92)}
.lhn-cta-band-c7x .lhn-cta-ticks-c7x{color:var(--on-primary)}
.lhn-cta-band-c7x .lhn-cta-ticks-c7x li::before{background:#FFF}
.lhn-cta-band-c7x .lhn-btn-c7x{background:#FFF;color:var(--primary)}
.lhn-cta-band-c7x .lhn-btn-c7x:hover{background:var(--primary-90);color:var(--primary)}
.lhn-cta-band--solid-c7x{padding:52px 0;text-align:center}
/* cta_variant: panel = a contained brand card (not full-bleed). */
.lhn-cta-panel-c7x{background:var(--primary);color:var(--on-primary);border-radius:var(--r-lg);
  padding:44px 40px;box-shadow:var(--sh-lg)}
.lhn-cta-panel-c7x .lhn-eyebrow-c7x{color:rgba(255,255,255,.82)}
.lhn-cta-panel-c7x h2{color:#FFF}
.lhn-cta-panel-c7x .lhn-lead-c7x{color:inherit;margin-bottom:0}
.lhn-cta-panel-c7x .lhn-cta-ticks-c7x{color:var(--on-primary);margin:14px auto 22px}
.lhn-cta-panel-c7x .lhn-cta-ticks-c7x li::before{background:#FFF}
.lhn-cta-panel-c7x .lhn-btn-c7x{background:#FFF;color:var(--primary)}
.lhn-cta-panel-c7x .lhn-btn-c7x:hover{background:var(--primary-90);color:var(--primary)}
/* cta_variant: split = two columns — copy left, a dedicated white action card right. */
.lhn-cta-split-c7x{background:var(--primary)}
.lhn-cta-split-inner-c7x{display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:center;
  padding:44px 0}
.lhn-cta-split-copy-c7x .lhn-eyebrow-c7x{color:rgba(255,255,255,.82)}
.lhn-cta-split-copy-c7x h2{color:#FFF}
.lhn-cta-split-copy-c7x .lhn-lead-c7x{color:rgba(255,255,255,.92)}
.lhn-cta-split-copy-c7x .lhn-cta-ticks-c7x{color:var(--on-primary)}
.lhn-cta-split-copy-c7x .lhn-cta-ticks-c7x li::before{background:#FFF}
.lhn-cta-split-action-c7x{background:#FFF;border-radius:var(--r-lg);padding:28px 26px;text-align:center;
  box-shadow:var(--sh-lg)}
.lhn-cta-split-h-c7x{margin:0 0 14px;font-family:var(--font-head);font-weight:700;color:var(--ink);
  font-size:var(--lead)}
.lhn-cta-split-action-c7x .lhn-btn-c7x{width:100%}
.lhn-cta-split-fine-c7x{margin:14px 0 0;color:var(--muted);font-size:var(--small)}
@media(max-width:820px){.lhn-cta-split-inner-c7x{grid-template-columns:1fr;gap:24px;padding:34px 0}}
/* cta_variant: plain = a light, brand-outlined sign-off (dark text on the page bg). */
.lhn-cta-plain-inner-c7x{border:1px solid var(--line);
  border-radius:var(--r-md);background:var(--surface);padding:34px 34px 30px;
  max-width:820px;margin-left:auto;margin-right:auto}
.lhn-cta-plain-c7x .lhn-eyebrow-c7x{color:var(--primary)}
.lhn-cta-plain-c7x h2{color:var(--ink)}
.lhn-cta-plain-c7x .lhn-lead-c7x{color:var(--body)}
.lhn-cta-plain-c7x .lhn-cta-ticks-c7x{color:var(--body);display:block;margin:16px 0 22px;max-width:none}
.lhn-cta-plain-c7x .lhn-cta-ticks-c7x li::before{background:var(--primary)}
/* trust_variant: cards + plain treatments (band is the default brand strip above). */
.lhn-trust-sec-c7x{padding:40px 0}
.lhn-trust-sec--plain-c7x .lhn-trust-c7x{border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:26px 0}
.lhn-trust-sec--plain-c7x .lhn-num-c7x,.lhn-trust-sec--cards-c7x .lhn-num-c7x{color:var(--primary)}
.lhn-trust-sec--plain-c7x .lhn-lbl-c7x,.lhn-trust-sec--cards-c7x .lhn-lbl-c7x{color:var(--muted)}
.lhn-trust-sec--cards-c7x .lhn-trust-c7x>div{background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);padding:22px 16px}
/* intro_variant: split = heading beside the lead; rule = left with a brand accent. */
.lhn-intro-grid-c7x{display:grid;grid-template-columns:0.9fr 1.1fr;gap:44px;align-items:start}
/* intro_variant form: prose left, a tinted action panel (nudge + CTA) right */
.lhn-intro-grid--action-c7x{grid-template-columns:1.15fr .85fr;align-items:center}
.lhn-intro-action-c7x{background:var(--bg-alt);border-radius:var(--r-lg);padding:28px 30px}
.lhn-intro-action-c7x p{margin:0 0 18px;color:var(--body)}
.lhn-intro-action-c7x .lhn-btn-c7x{width:100%}
.lhn-intro-head-c7x h2{margin:.2rem 0 0}
.lhn-intro-body-c7x .lhn-lead-c7x{margin:0}
.lhn-intro-rule-c7x{background:var(--bg-alt)}
.lhn-intro-rule-c7x .lhn-rule-accent-c7x{display:block;width:52px;height:4px;border-radius:var(--r-sm);
  background:var(--primary);margin:0 0 18px}
@media(max-width:820px){.lhn-intro-grid-c7x{grid-template-columns:1fr;gap:16px}}
/* optional home block: how_we_work teaser — a compact numbered step grid. */
.lhn-hw-steps-c7x{list-style:none;margin:30px 0 0;padding:0;display:grid;
  grid-template-columns:repeat(2,1fr);gap:22px 40px}
.lhn-hw-steps-c7x li{display:flex;gap:15px;align-items:flex-start}
.lhn-hw-steps-c7x .lhn-hw-n-c7x{flex:0 0 auto;width:34px;height:34px;border-radius:50%;
  background:var(--primary-90);color:var(--primary);font-family:var(--font-head);
  font-weight:700;display:flex;align-items:center;justify-content:center}
.lhn-hw-steps-c7x h3{margin:3px 0 .25rem;}
.lhn-hw-steps-c7x p{margin:0;color:var(--body)}
@media(max-width:640px){.lhn-hw-steps-c7x{grid-template-columns:1fr;gap:18px}}

/* mega-menus */
.lhn-has-menu-c7x{position:relative}
/* dropdown parent: a non-navigating button styled like a nav link */
.lhn-nav-parent-c7x{background:none;border:0;cursor:pointer;color:var(--nav-fg);font-family:inherit;
  font-weight:600;font-size:var(--ui);line-height:1.4;padding:13px 16px;
  border-bottom:3px solid transparent;display:flex;align-items:center}
.lhn-nav-parent-c7x.lhn-is-active-c7x,.lhn-has-menu-c7x:hover .lhn-nav-parent-c7x,.lhn-has-menu-c7x:focus-within .lhn-nav-parent-c7x,
.lhn-has-menu-c7x.lhn-is-open-c7x .lhn-nav-parent-c7x{border-bottom-color:var(--primary)}
/* caret: an inline SVG glyph inside a fixed 14px box, drawn symmetric about
   its centre so the open-state rotation about the box centre never shifts or
   wobbles it (the old translated+rotated pseudo-element did). The glyph is a
   per-site variance knob ([data-lhn-caret-c7x=...]); caret_motion (rotate|static)
   decides whether it turns at all — static only brightens to the link colour. */
.lhn-caret-c7x{display:inline-flex;align-items:center;justify-content:center;width:14px;
  height:14px;margin-left:6px;vertical-align:middle;opacity:.7;
  transition:transform .2s ease,opacity .2s ease;transform-origin:50% 50%}
.lhn-caret-c7x svg{display:block}
.lhn-has-menu-c7x:hover .lhn-caret-c7x,.lhn-has-menu-c7x:focus-within .lhn-caret-c7x,.lhn-has-menu-c7x.lhn-is-open-c7x .lhn-caret-c7x{opacity:1}
[data-lhn-caret-motion-c7x=rotate] .lhn-has-menu-c7x:hover .lhn-caret-c7x,
[data-lhn-caret-motion-c7x=rotate] .lhn-has-menu-c7x:focus-within .lhn-caret-c7x,
[data-lhn-caret-motion-c7x=rotate] .lhn-has-menu-c7x.lhn-is-open-c7x .lhn-caret-c7x{transform:rotate(180deg)}
[data-lhn-caret-motion-c7x=rotate][data-lhn-caret-c7x=plus] .lhn-has-menu-c7x:hover .lhn-caret-c7x,
[data-lhn-caret-motion-c7x=rotate][data-lhn-caret-c7x=plus] .lhn-has-menu-c7x:focus-within .lhn-caret-c7x,
[data-lhn-caret-motion-c7x=rotate][data-lhn-caret-c7x=plus] .lhn-has-menu-c7x.lhn-is-open-c7x .lhn-caret-c7x{transform:rotate(45deg)}
[data-lhn-caret-c7x=none] .lhn-caret-c7x{display:none}
/* dark menu, squared at the top so it reads as connected to the dark nav bar */
.lhn-mega-c7x{--nav-surface:var(--surface);--nav-fg:var(--ink);--nav-fg-muted:var(--muted);
  position:absolute;top:100%;left:0;min-width:250px;background:var(--nav-surface);
  border:1px solid var(--line);border-top:0;
  border-radius:0 0 var(--r-md) var(--r-md);
  box-shadow:var(--shadow);padding:8px;display:none;z-index:60}
/* NB: dropdown panels carry their OWN surface (light), so nothing inside may
   use dark-panel literals (#FFF text, rgba(255,255,255,…) borders/hovers) —
   white-on-white links are exactly what that produced (operator rule). Every
   dropdown colour is a theme token, so any panel surface stays legible. */
.lhn-mega-c7x a{display:block;color:var(--nav-fg);padding:9px 12px;border-radius:var(--r-sm);
  font-weight:600;font-size:var(--small);border-bottom:0}
.lhn-mega-c7x a:hover{background:var(--bg-alt);color:var(--primary);text-decoration:none}
.lhn-mega-all-c7x{color:var(--primary);font-weight:600;border-top:1px solid var(--line);margin-top:4px;padding-top:9px}
.lhn-has-menu-c7x:hover>.lhn-mega-c7x,.lhn-has-menu-c7x:focus-within>.lhn-mega-c7x,.lhn-has-menu-c7x.lhn-is-open-c7x>.lhn-mega-c7x{display:block}
/* menu_skin pool (rule: tokens only — nothing inside .lhn-mega-c7x is a dark literal) */
[data-lhn-menu-c7x=tinted] .lhn-mega-c7x{background:var(--bg-alt)}
[data-lhn-menu-c7x=tinted] .lhn-mega-c7x a:hover{background:var(--surface);color:var(--primary)}
[data-lhn-menu-c7x=floating] .lhn-mega-c7x{border:0;border-radius:var(--r-md);margin-top:8px;
  box-shadow:0 14px 36px rgba(0,0,0,.16)}
[data-lhn-menu-c7x=ruled] .lhn-mega-c7x a{border-bottom:1px solid var(--line);border-radius:0}
[data-lhn-menu-c7x=ruled] .lhn-mega-c7x a:hover{background:var(--bg-alt)}
/* Round 26: five INDEPENDENT seeded axes over the menu_skin surface family —
   corners, row rules, hover, shadow, pointer. Desktop only (the mobile overlay
   under 900px keeps its own rules). Tokens only inside .lhn-mega-c7x (no dark
   literals); hover changes colour/decoration only, never layout. The axes
   are stamped on <body> and out-specify the surface family, so the rules
   axis wins over the ruled skin's own hairline. */
@media (min-width:901px){
[data-lhn-menucorners-c7x=square] .lhn-mega-c7x{border-radius:0}
[data-lhn-menucorners-c7x=soft] .lhn-mega-c7x{border-radius:var(--r-sm)}
[data-lhn-menucorners-c7x=bottom] .lhn-mega-c7x{border-radius:0 0 var(--r-md) var(--r-md)}
[data-lhn-menurules-c7x=none] .lhn-mega-c7x a{border-bottom:0}
[data-lhn-menurules-c7x=hairline] .lhn-mega-c7x a{border-bottom:1px solid var(--line)}
[data-lhn-menurules-c7x=dotted] .lhn-mega-c7x a{border-bottom:1px dotted var(--line)}
[data-lhn-menurules-c7x=inset] .lhn-mega-c7x a{position:relative;border-bottom:0}
/* Inset draws its rule inside the row, so skip the option directly above the
   all-link: the all-link's own full-width top rule is the single rule at
   that seam (E1 keeps it for this axis). */
[data-lhn-menurules-c7x=inset] .lhn-mega-c7x a:not(:last-child):not(:has(+ .lhn-mega-all-c7x))::after{content:"";position:absolute;
  left:12px;right:12px;bottom:0;border-bottom:1px solid var(--line)}
[data-lhn-menuhover-c7x=tint] .lhn-mega-c7x a:not(.lhn-btn-c7x):hover{background:var(--bg-alt);color:var(--primary)}
[data-lhn-menuhover-c7x=ink] .lhn-mega-c7x a:not(.lhn-btn-c7x):hover{background:transparent;color:var(--primary)}
[data-lhn-menuhover-c7x=underline] .lhn-mega-c7x a:not(.lhn-btn-c7x):hover{background:transparent;
  color:var(--primary);text-decoration:underline;text-decoration-thickness:2px;
  text-underline-offset:.2em}
[data-lhn-menuhover-c7x=bar] .lhn-mega-c7x a:not(.lhn-btn-c7x):hover{background:transparent;color:var(--primary);
  box-shadow:inset 3px 0 0 var(--primary);border-radius:0}
[data-lhn-menushadow-c7x=none] .lhn-mega-c7x{box-shadow:none}
[data-lhn-menushadow-c7x=soft] .lhn-mega-c7x{box-shadow:0 8px 24px rgba(0,0,0,.08)}
[data-lhn-menushadow-c7x=hard] .lhn-mega-c7x{box-shadow:0 12px 32px rgba(0,0,0,.16)}
[data-lhn-menushadow-c7x=line] .lhn-mega-c7x{box-shadow:none;border:1px solid var(--line);border-top:0}
[data-lhn-menupointer-c7x=none] .lhn-mega-c7x::before{content:none}
[data-lhn-menupointer-c7x=notch] .lhn-mega-c7x::after{content:"";position:absolute;
  top:-5px;left:24px;width:10px;height:10px;background:var(--surface);
  border-left:1px solid var(--line);border-top:1px solid var(--line);transform:rotate(45deg)}
[data-lhn-menupointer-c7x=notch][data-lhn-menu-c7x=tinted] .lhn-mega-c7x::after{background:var(--bg-alt)}
/* Floating skin floats the panel 8px below the bar; margin is not hoverable,
   so the menu would close mid-travel. This transparent bridge holds :hover
   across the gap. It sits after the menupointer rules to win over
   content:none; absolute positioning keeps it out of the mega panel. */
[data-lhn-menu-c7x=floating] .lhn-mega-c7x::before{content:"";position:absolute;top:-8px;left:0;right:0;
  height:8px;background:transparent}
}
/* R25 (C1.3): .lhn-mega-c7x a and the ruled skin out-specify .lhn-btn-c7x on the "All
   services" button — restore the primary button skin AFTER them so it never
   renders as black text on the brand blue with square corners. */
.lhn-mega-c7x a.lhn-btn-c7x{display:inline-block;color:var(--cta-ink);background:var(--cta);
  border-radius:var(--r-btn);border-bottom:0;padding:13px 28px;font-weight:600}
.lhn-mega-c7x a.lhn-btn-c7x:hover{background:var(--cta-hover);color:var(--cta-ink)}
/* menu_skin=header retired (R31): its label strip only repeated the dropdown
   trigger, so a simple dropdown never restates its trigger as a header. */
/* breadcrumb placement post-pass shapes */
.lhn-hero-c7x .lhn-crumbs--inhero-c7x{padding:22px 0 0;font-size:var(--meta,.82rem);color:inherit}
.lhn-hero-c7x .lhn-crumbs--inhero-c7x a{color:inherit;text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:1px}
.lhn-crumbs--foot-c7x{padding:18px 0;border-top:1px solid var(--line)}
/* nav_style rich/panel (the full-width mega panel) are retired: a Services
   parent that may hold as few as three items never needed a promo grid, and
   Locations stayed a plain dropdown throughout (operator, Sep 2026). Every
   nav dropdown is now the plain .lhn-mega-c7x link list below. */
/* footer variants */
.lhn-footer--slim-c7x .lhn-footer-slim-c7x{display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:16px;padding:34px 0 8px}
.lhn-footer-nav-c7x{display:flex;flex-wrap:wrap;gap:6px 18px}
.lhn-footer-nav-c7x a{color:var(--n-300);font-size:var(--small)}
.lhn-footer-nav--center-c7x{justify-content:center;margin:14px 0 4px}
.lhn-footer--centered-c7x .lhn-footer-centered-c7x{text-align:center;padding:40px 0 8px;
  display:flex;flex-direction:column;align-items:center;gap:6px}
.lhn-footer-tagline-c7x{max-width:640px;margin:6px auto 4px}
.lhn-footer-bottom-c7x.lhn-center-c7x{justify-content:center;text-align:center}

/* resources / article */
.lhn-res-meta-c7x{font-size:var(--meta);color:var(--muted);margin-bottom:6px}
.lhn-article-c7x .lhn-prose-c7x{max-width:var(--measure);margin:0 auto}
.lhn-article-c7x .lhn-lead-c7x{margin-bottom:1.4rem}
/* rich article furniture: hero image, figures, charts, callouts, takeaways */
.lhn-article-hero-c7x{margin:0 0 1.6rem}
.lhn-article-hero-c7x img{width:100%;height:auto;border-radius:var(--r-lg);box-shadow:var(--shadow)}
.lhn-prose-c7x figure{margin:1.8rem 0}
.lhn-prose-c7x figure img{width:100%;height:auto;border-radius:var(--r-md);box-shadow:var(--shadow)}
.lhn-prose-c7x figcaption{margin-top:.5rem;font-size:var(--meta);color:var(--muted);text-align:center}
/* a callout is a tinted panel — never an accent stripe down its left edge
   (operator: thick left / top accent borders on cards read as generated) */
.lhn-callout-c7x{background:var(--primary-90);border-radius:var(--r-md);padding:16px 20px;margin:1.6rem 0}
.lhn-callout-c7x h3,.lhn-callout-c7x h4{margin:0 0 .4rem;color:var(--black)}
.lhn-callout-c7x p{margin:0}
.lhn-callout-c7x p+p{margin-top:.6rem}
.lhn-key-takeaways-c7x{background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);padding:18px 22px;margin:1.6rem 0}
.lhn-key-takeaways-c7x h2,.lhn-key-takeaways-c7x h3{margin:0 0 .6rem;font-size:var(--h3)}
.lhn-key-takeaways-c7x ul{margin:0;padding-left:1.1em}
.lhn-key-takeaways-c7x li{margin-bottom:.4rem}
.lhn-diagram-c7x{margin:2rem 0;padding:20px 22px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.lhn-diagram-c7x svg{width:100%;height:auto;display:block}
.lhn-diagram-c7x figcaption{font-size:var(--meta);color:var(--muted);margin:.6rem 0 0}
/* inline SVG bar/comparison chart */
.lhn-chart-c7x{margin:2rem 0;padding:20px 22px;border:1px solid var(--line);border-radius:var(--r-md);
  background:var(--surface)}
.lhn-chart-title-c7x{font-family:var(--font-head);font-weight:700;color:var(--black);margin:0 0 .3rem}
.lhn-chart-sub-c7x{font-size:var(--meta);color:var(--muted);margin:0 0 .8rem}
.lhn-barrow-c7x{display:grid;grid-template-columns:minmax(140px,36%) minmax(0,1fr) auto;gap:12px;align-items:center;
  margin:10px 0;padding-bottom:10px;border-bottom:1px solid var(--line)}
.lhn-chart-c7x .lhn-barrow-c7x:last-of-type{border-bottom:0;padding-bottom:0}
.lhn-barrow-c7x .lhn-blabel-c7x{font-size:var(--small);color:var(--body);min-width:0;overflow-wrap:anywhere;line-height:1.3}
.lhn-bartrack-c7x{background:var(--bg-alt);border-radius:var(--r-full);height:14px}
.lhn-barfill-c7x{border-radius:var(--r-full);opacity:1;background:var(--primary);min-width:2px;height:14px}
.lhn-barval-c7x{position:static;line-height:1;font-size:var(--meta);color:var(--body);min-width:3.5ch;text-align:right}
.lhn-chart-note-c7x{font-size:var(--meta);color:var(--muted);margin:.6rem 0 0}
[data-lhn-chart-c7x=slim] .lhn-barrow-c7x{grid-template-columns:1fr auto;grid-template-areas:"label val" "track track"}
[data-lhn-chart-c7x=slim] .lhn-blabel-c7x{grid-area:label}
[data-lhn-chart-c7x=slim] .lhn-bartrack-c7x{grid-area:track;height:8px}
[data-lhn-chart-c7x=slim] .lhn-barval-c7x{grid-area:val}
[data-lhn-chart-c7x=stacked] .lhn-barrow-c7x{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label label" "track val"}
[data-lhn-chart-c7x=stacked] .lhn-blabel-c7x{grid-area:label}
[data-lhn-chart-c7x=stacked] .lhn-bartrack-c7x{grid-area:track;height:12px}
[data-lhn-chart-c7x=stacked] .lhn-barval-c7x{grid-area:val}
[data-lhn-chart-c7x=ruled] .lhn-chart-c7x{border:0;padding:0;background:transparent}
[data-lhn-chart-c7x=ruled] .lhn-barrow-c7x{border-bottom:1px solid var(--line);padding-bottom:12px}
@media(max-width:560px){.lhn-barrow-c7x{grid-template-columns:1fr}
  .lhn-barrow-c7x .lhn-blabel-c7x,.lhn-bartrack-c7x,.lhn-barval-c7x{grid-column:1}
  .lhn-barval-c7x{text-align:left}}

/* responsive */
@media(max-width:900px){
  .lhn-hero-grid-c7x{grid-template-columns:1fr;gap:30px}
  .lhn-grid-3-c7x,.lhn-grid-4-c7x{grid-template-columns:repeat(2,1fr)}
  .lhn-footer-grid-c7x{grid-template-columns:1fr 1fr}
  .lhn-trust-c7x{grid-template-columns:repeat(2,1fr);gap:26px}
  .lhn-trust--3-c7x>div:first-child{grid-column:1/-1}
}
@media(max-width:680px){
  .lhn-nav-inner-c7x{flex-direction:column;align-items:stretch;padding:0;display:none}
  .lhn-nav-inner-c7x.lhn-open-c7x{display:flex}
  .lhn-nav-links-c7x{flex-direction:column;align-items:stretch;gap:0;padding:0;width:100%}
  .lhn-nav-links-c7x>li>a,.lhn-nav-links-c7x>li>.lhn-nav-parent-c7x{padding:13px 20px;width:100%;
    border-bottom:1px solid var(--line);color:var(--ink)}
  .lhn-nav-parent-c7x{border-bottom-width:1px;color:var(--ink)}
  .lhn-nav-links-c7x a[aria-current=page]{border-bottom-color:var(--line)}
  .lhn-menu-toggle-c7x{display:block}
  .lhn-caret-c7x{display:none}
  .lhn-nav-cta--corner-c7x{display:none}
  /* keep the header row within a narrow viewport: cap the wordmark, and drop the
     header CTA button (its label length varies and would overflow) — the hamburger
     menu, the hero CTA and the optional sticky bar all keep a conversion path on
     mobile, so the header stays brand + menu toggle only. */
  .lhn-header-inner-c7x{gap:10px}
  .lhn-brand-c7x img{max-width:60vw}
  .lhn-header-actions-c7x .lhn-nav-cta-c7x{display:none}
  /* keep the hero within a narrow viewport: never let the copy column, the proof row
     or the CTAs exceed the screen. */
  .lhn-hero-copy-c7x{max-width:100%}
  .lhn-hero-c7x .lhn-hero-proof-c7x{width:auto;max-width:100%}
  .lhn-hero-cta-c7x{width:100%}
  .lhn-hero-cta-c7x .lhn-btn-c7x{flex:1 1 100%;min-width:0}
  /* Drawer is a light surface now (dark nav bars are banned) — dark text,
     hairline separators, mega children inherit the light nav fg. */
  .lhn-mega-c7x{position:static;display:block;background:transparent;border:0;box-shadow:none;
    padding:0 0 6px;--nav-surface:transparent}
  .lhn-mainnav-c7x .lhn-mega-c7x{--nav-fg:var(--ink)}
  .lhn-mega-c7x a{color:var(--nav-fg);padding:11px 34px;font-weight:400;border-bottom:1px solid var(--line)}
  .lhn-mega-c7x a:hover{background:var(--bg-alt);color:var(--ink)}
  .lhn-mega-c7x a.lhn-btn-c7x{color:var(--cta-ink);background:var(--cta);padding:13px 28px;font-weight:600;border-bottom:0}
  .lhn-mega-c7x a.lhn-btn-c7x:hover{background:var(--cta-hover);color:var(--cta-ink)}
  .lhn-mega-all-c7x{color:var(--ink);border-top:0}
  .lhn-grid-2-c7x,.lhn-grid-3-c7x,.lhn-grid-4-c7x,.lhn-grid-2x2-c7x{grid-template-columns:1fr}
  .lhn-section-c7x{padding:var(--section-pad-m) 0}
  .lhn-btn--lg-c7x{min-width:0;width:100%}
}
