/* =========================================================
   Clear Link v1.11.25 — authoritative heading / lead / body alignment system

   Design policy
   1) Page titles and section headings (H1/H2/H3) are centered.
   2) Section lead copy is centered as a block and as text.
   3) Ordinary body copy remains left-aligned inside the centered page shell.
   4) Alignment is CSS-owned. No heading/lead JavaScript may change geometry.
   5) Long editorial headings use server-rendered phrase lines only.

   Scope: site UI/pages. Long-form article entry content keeps editorial
   left-aligned typography for reading comfort.
   ========================================================= */

:root{
  --cl-policy-lead-max: 880px;
  --cl-policy-body-max: 920px;
}

/* ---------- Ordinary prose copy ----------
   Narrative paragraphs are centered as text. Lists, labels, cards and other
   item/UI structures keep their own alignment. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main section p{
  text-align:center!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main section :where(li,figcaption,summary,dt,dd){
  text-align:left!important;
}

/* Structural/card/item copy is not continuous prose and keeps its native left
   alignment. This prevents service cards, FAQ rows and lists from becoming
   visually unstable while ordinary explanatory paragraphs remain centered. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main section :where(
  article,li,details,table,
  .reform-menu-card,.work-card,.journal-card,.voice-card,
  .find-grid>a,.support-links__grid>a,.bp-feature-grid article,.bp-service-grid>a,
  .bp-problem-grid>a,.reason-cards>article,.sf-water-menu>a,
  [class*="card"]
) p{
  text-align:left!important;
}

/* Standalone explanatory copy sits inside a centered readable measure and the
   actual lines are centered as requested. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main section :where(
  .container,
  .container-wide,
  .sf-shell,
  .pf-shell,
  .cf-shell,
  .af-shell,
  .ftc-shell,
  .ft-shell,
  .fq-shell,
  .bp-shell,
  .case-shell
) > p:not([class*="lead"]):not([class*="kicker"]):not([class*="eyebrow"]){
  width:min(100%,var(--cl-policy-body-max))!important;
  max-width:var(--cl-policy-body-max)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
}

/* ---------- All UI headings / section titles ---------- */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(h1,h2,h3),
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-ui-heading{
  max-width:100%;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  word-break:normal!important;
  overflow-wrap:normal!important;
  line-break:strict!important;
  hyphens:none!important;
  text-wrap:balance;
}

@supports (word-break:auto-phrase){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(h1,h2,h3),
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-ui-heading{
    word-break:auto-phrase!important;
  }
}

/* Heading wrapper geometry follows the same centered axis. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(
  .section-title,
  .home-section-head,
  .sf-heading,
  .sf-heading-grid,
  .pf-heading,
  .pf-heading-grid,
  .cf-heading,
  .cf-intro__grid,
  .cf-note__grid,
  .af-heading,
  .af-intro__grid,
  .ftc-heading,
  .ftc-intro__grid,
  .ft-section-head,
  .ft-consult__head,
  .ft-promise__heading,
  .bp-section__heading,
  .bp-gallery__heading,
  .bp-page-title__main,
  .fq-group__heading,
  .cl-common-faq__heading,
  .case-summary__heading,
  .column-focus__intro,
  .column-category-heading,
  .column-featured__heading,
  .column-latest__heading,
  .archive-intro
){
  width:100%;
  min-width:0;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
}

/* ---------- Kicker / eyebrow labels ---------- */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(
  .section-title__en,
  .section-kicker,
  .home-hero__script,
  .sf-kicker,
  .pf-kicker,
  .cf-kicker,
  .af-kicker,
  .ftc-kicker,
  .ft-kicker,
  .fq-kicker,
  .bp-eyebrow,
  p[class*="kicker"],
  p[class*="eyebrow"]
){
  width:max-content;
  max-width:100%;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
}

/* ---------- Lead / subcatch copy ---------- */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(
  .home-hero__lead,
  .section-title__lead,
  .bp-gallery__lead,
  .cf-heading__lead,
  .cl-final-cta__lead,
  .support-links__lead,
  p[class*="__lead"],
  p[class*="-lead"]
),
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(
  .sf-heading,
  .pf-heading,
  .cf-heading,
  .af-heading,
  .ftc-heading,
  .ft-section-head,
  .ft-consult__head,
  .ft-promise__heading,
  .bp-section__heading,
  .cl-common-faq__heading
) > p:not(:first-child),
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(.sf-heading-grid,.pf-heading-grid) > p,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(.cf-intro__grid,.cf-note__grid,.af-intro__grid,.ftc-intro__grid) > p,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .bp-page-title__main > p,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .fq-intro__grid > div:last-child > p,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .fq-contact__grid > div:last-child > p,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .column-focus__intro > p,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .column-category-heading > p,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .home-section-copy > p,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .support-links__lead-copy > p,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .sf-philosophy-grid > div:last-child > p{
  width:min(100%,var(--cl-policy-lead-max))!important;
  max-width:var(--cl-policy-lead-max)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:normal!important;
  line-break:strict!important;
  text-wrap:pretty;
}

@supports (word-break:auto-phrase){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(
    .home-hero__lead,.section-title__lead,.bp-gallery__lead,.cf-heading__lead,
    .cl-final-cta__lead,.support-links__lead,p[class*="__lead"],p[class*="-lead"]
  ){
    word-break:auto-phrase!important;
  }
}

/* ---------- Stable editorial line breaks (server-rendered, not JS) ---------- */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-heading-fixed-break{
  white-space:normal!important;
  text-wrap:wrap!important;
  overflow:visible!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-heading-fixed-break > .cl-heading-line{
  display:block!important;
  width:fit-content!important;
  max-width:100%!important;
  margin-left:auto!important;
  margin-right:auto!important;
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
  text-align:center!important;
}

/* Top FV uses two manually authored lines and its established safe mobile size. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .home-hero__title-line{
  text-align:center!important;
}

/* ---------- Long-form editorial content stays readable ---------- */
.single-post main :where(h1,h2,h3),
main .entry-content :where(h1,h2,h3){
  text-align:left!important;
  margin-left:0!important;
  margin-right:0!important;
  text-wrap:pretty;
  white-space:normal!important;
}
.single-post main :where(p,li,figcaption),
main .entry-content :where(p,li,figcaption){
  text-align:left!important;
}

/* ---------- Mobile ---------- */
@media (max-width:820px){
  :root{
    --cl-policy-lead-max:34em;
    --cl-policy-body-max:34em;
  }

  /* Phrase lines are sized server-side against a 360px baseline. This replaces
     the old viewport-measuring JS and guarantees the two approved lines fit. */
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-heading-fixed-break{
    font-size:var(--cl-mobile-heading-fit,25px)!important;
    line-height:1.42!important;
  }
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-heading-fixed-break > .cl-heading-line{
    max-width:calc(100vw - 36px)!important;
  }

  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(
    .home-hero__lead,
    .section-title__lead,
    .bp-gallery__lead,
    .cf-heading__lead,
    .cl-final-cta__lead,
    .support-links__lead,
    p[class*="__lead"],
    p[class*="-lead"]
  ){
    width:min(100%,34em)!important;
    max-width:34em!important;
  }
}

/* Server-assigned mobile fit classes. No inline geometry and no JS measurement. */
@media (max-width:820px){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-15{--cl-mobile-heading-fit:15px}
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-16{--cl-mobile-heading-fit:16px}
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-17{--cl-mobile-heading-fit:17px}
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-18{--cl-mobile-heading-fit:18px}
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-19{--cl-mobile-heading-fit:19px}
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-20{--cl-mobile-heading-fit:20px}
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-21{--cl-mobile-heading-fit:21px}
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-22{--cl-mobile-heading-fit:22px}
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-23{--cl-mobile-heading-fit:23px}
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-24{--cl-mobile-heading-fit:24px}
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-25{--cl-mobile-heading-fit:25px}
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-26{--cl-mobile-heading-fit:26px}
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-mobile-fit-27{--cl-mobile-heading-fit:27px}
}

/* If a page uses a long-form .entry-content region, keep its authored reading
   flow even when a phrase happens to match the UI editorial-break map. */
main .entry-content .cl-heading-fixed-break > .cl-heading-line{
  display:inline!important;
  width:auto!important;
  max-width:none!important;
  margin:0!important;
  white-space:normal!important;
  text-align:inherit!important;
}

/* Additional intro/lead structures that historically had no dedicated `lead`
   class. Treat these as lead copy, not body copy. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .bp-profile__intro > p,
  .bp-contact-routing__intro > p:last-child,
  .first-guide__intro > p,
  .cf-alert > .cf-shell > p:not(.cf-kicker)
){
  width:min(100%,var(--cl-policy-lead-max))!important;
  max-width:var(--cl-policy-lead-max)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:normal!important;
  line-break:strict!important;
  text-wrap:pretty;
}

/* Numeric/stat UI is not prose body copy. Preserve its centered presentation. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .reason-cards__stat p,
  .reason-experience-stat p,
  .af-profile-stats p,
  [class*="stat"] > p
){
  text-align:center!important;
}

/* Wrapping rules migrated from the retired v1.11.9 typography layer. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(p,summary,figcaption){
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:normal!important;
  line-break:strict!important;
}

/* Non-typographic spacing migrated from the retired typography layer. */
.sf-page--hub .sf-hub-primary{
  padding-top:clamp(84px,8vw,124px)!important;
}
@media (max-width:820px){
  .sf-page--hub .sf-hub-primary{padding-top:68px!important}
}

/* v1.11.27 — PC editorial breaks restored independently from mobile. */
@media (min-width:821px){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-heading-fixed-break,
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-semantic-two-lines{
    white-space:normal!important;
    text-align:center!important;
  }
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-heading-fixed-break > .cl-heading-line,
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-semantic-two-lines > .cl-heading-line{
    display:block!important;
    width:max-content!important;
    max-width:100%!important;
    margin-inline:auto!important;
    white-space:nowrap!important;
    word-break:keep-all!important;
    overflow-wrap:normal!important;
    text-align:center!important;
  }
}


/* v1.11.28 — FV subcatch is a dedicated centered component.
   This intentionally sits at the end of the authoritative alignment stylesheet
   so legacy page-specific lead rules cannot pull FV copy back to the left. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .home-hero .home-hero__panel > .cl-hero-subcatch{
  display:block!important;
  width:min(100%,720px)!important;
  max-width:720px!important;
  margin:20px auto 0!important;
  padding-left:0!important;
  padding-right:0!important;
  text-align:center!important;
  text-align-last:center!important;
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:normal!important;
  line-break:strict!important;
  text-wrap:pretty;
}
@supports (word-break:auto-phrase){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .home-hero .home-hero__panel > .cl-hero-subcatch{
    word-break:auto-phrase!important;
  }
}
@media (max-width:820px){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .home-hero .home-hero__panel > .cl-hero-subcatch{
    width:min(calc(100vw - 48px),34em)!important;
    max-width:min(calc(100vw - 48px),34em)!important;
    margin-left:auto!important;
    margin-right:auto!important;
    text-align:center!important;
    text-align-last:center!important;
  }
}


/* =========================================================
   v1.11.29 — section English label alignment
   Keep ordinary kicker text on the same center axis as the section title.
   Pill-style labels keep their intrinsic width and are centered as elements.
   ========================================================= */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(
  .section-title__en,
  .section-kicker,
  .sf-kicker,
  .pf-kicker,
  .ftc-kicker,
  .ft-kicker,
  .fq-kicker
){
  display:block!important;
  width:100%!important;
  max-width:none!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
}

/* Pill / badge-style English labels: center the badge itself without stretching it. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .af-kicker{
  width:max-content!important;
  max-width:100%!important;
  margin-left:auto!important;
  margin-right:auto!important;
  justify-content:center!important;
  text-align:center!important;
}

/* Blueprint eyebrow labels are flex in some layouts, so center their contents explicitly. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .bp-eyebrow{
  width:100%!important;
  max-width:100%!important;
  margin-left:auto!important;
  margin-right:auto!important;
  justify-content:center!important;
  text-align:center!important;
}


/* =========================================================
   v1.11.30 — root section label + prose alignment contract
   ========================================================= */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-section-title-block{
  display:block!important;
  width:100%!important;
  max-width:880px!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-section-title-block > .cl-section-label{
  display:block!important;
  width:100%!important;
  max-width:none!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  text-align-last:center!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-section-title-block > .cl-section-lead{
  width:min(100%,760px)!important;
  max-width:760px!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  text-align-last:center!important;
}


/* =========================================================
   v1.11.33 — sitewide component-axis normalization

   This is intentionally role/class based, not tag-global:
   - section labels / section titles / explanatory prose share one center axis
   - numeric indexes remain UI markers and do not shift the text axis
   - FAQ, navigation, tables-as-data and long-form entry content are excluded
   - no DOM structure is changed
   ========================================================= */

:root{
  --cl-ui-text-max: 760px;
  --cl-ui-heading-max: 1040px;
}

/* 1) Header/lead split grids: these wrappers are only heading + explanatory copy.
      Collapse the visual axis without changing HTML structure. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .sf-heading-grid,
  .pf-heading-grid,
  .cf-intro__grid,
  .cf-note__grid,
  .af-intro__grid,
  .ftc-intro__grid
){
  grid-template-columns:1fr!important;
  grid-template-areas:none!important;
  gap:18px!important;
  align-items:start!important;
  justify-items:center!important;
  text-align:center!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .sf-heading-grid,
  .pf-heading-grid,
  .cf-intro__grid,
  .cf-note__grid,
  .af-intro__grid,
  .ftc-intro__grid
) > *{
  grid-column:1/-1!important;
  width:min(100%,var(--cl-ui-heading-max))!important;
  max-width:var(--cl-ui-heading-max)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .sf-heading-grid,
  .pf-heading-grid,
  .cf-intro__grid,
  .cf-note__grid,
  .af-intro__grid,
  .ftc-intro__grid
) > p{
  width:min(100%,var(--cl-ui-text-max))!important;
  max-width:var(--cl-ui-text-max)!important;
  text-align:center!important;
}

/* 2) All dedicated section heading wrappers use one physical axis. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .sf-heading,.pf-heading,.cf-heading,.af-heading,.ftc-heading,
  .ft-section-head,.ft-consult__head,.ft-promise__heading,
  .bp-section__heading,.bp-gallery__heading,.cl-common-faq__heading,
  .case-summary__heading,.column-focus__intro,.column-category-heading,
  .column-featured__heading,.column-latest__heading,.home-section-head
){
  width:min(100%,var(--cl-ui-heading-max))!important;
  max-width:var(--cl-ui-heading-max)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
}

/* Section labels that live outside the shared section-title helper. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .sf-kicker,.pf-kicker,.cf-kicker,.af-kicker,.ftc-kicker,.ft-kicker,.fq-kicker,
  .section-kicker,.section-title__en,
  .sf-dual-visuals small,.sf-single-visual small,.sf-water-menu small,
  .cf-menu-card small,.af-nav-card small,.bp-service-grid small,.bp-problem-grid small,
  .pf-special-grid article>span
){
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  text-align-last:center!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .sf-dual-visuals small,.sf-single-visual small,.sf-water-menu small,
  .cf-menu-card small,.af-nav-card small,.bp-service-grid small,.bp-problem-grid small,
  .pf-special-grid article>span
){
  display:block!important;
  width:100%!important;
}

/* 3) Ordinary UI-card prose is prose, so center it. Numeric markers / CTA rows
      are untouched. FAQ/details and actual lists keep their own reading layout. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .sf-card,.pf-card,.cf-card,.af-card,.bp-card,
  .pf-special-grid article,.sf-priority-grid article,.sf-transform-grid article,
  .sf-door-grid article,.sf-plan-grid article,.sf-heating-grid article,
  .sf-roof-signs article,.sf-landscape-grid article,.sf-barrier-flow article,
  .sf-repair-grid article,.sf-used-timeline article,.sf-apartment-rules article,
  .sf-store-flow article,.sf-custom-day article,
  .ftc-three article,.ftc-four article,.ftc-choose__grid article,
  .ftc-question-grid article,.ftc-communication__grid article
) :is(h3,p){
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  text-align-last:center!important;
}

/* English/text labels inside special cards are centered; numeric-only indexes in
   .sf-card/.pf-card/.cf-card/.af-card are deliberately not selected here. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .sf-roof-signs,.sf-landscape-grid,.sf-repair-grid,.sf-used-timeline,
  .sf-store-flow,.sf-custom-day
) article>span{
  display:block!important;
  width:100%!important;
  text-align:center!important;
}

/* 4) Numbered rows: remove the artificial left text column. The index remains a
      small anchored UI marker, while heading/body use the full centered axis. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .pf-check-list article,
  .cf-flow__list li,
  .cf-ledger>div,
  .af-process-list li,
  .ftc-checklist article
){
  position:relative!important;
  display:block!important;
  grid-template-columns:none!important;
  gap:0!important;
  padding-left:46px!important;
  padding-right:46px!important;
  min-width:0!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .pf-check-list article>span,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cf-flow__list li>span,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cf-ledger>div>span,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .af-process-list li>span,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .ftc-checklist article>b{
  position:absolute!important;
  left:4px!important;
  top:28px!important;
  width:30px!important;
  margin:0!important;
  padding:0!important;
  text-align:left!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .pf-check-list article,
  .cf-flow__list li,
  .cf-ledger>div,
  .af-process-list li,
  .ftc-checklist article
) > div{
  width:100%!important;
  max-width:100%!important;
  margin:0!important;
  grid-column:auto!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .pf-check-list article,
  .cf-flow__list li,
  .cf-ledger>div,
  .af-process-list li,
  .ftc-checklist article
) :is(h3,p){
  grid-column:auto!important;
  width:min(100%,var(--cl-ui-text-max))!important;
  max-width:var(--cl-ui-text-max)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  text-align-last:center!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .pf-check-list article,
  .cf-flow__list li,
  .cf-ledger>div,
  .af-process-list li,
  .ftc-checklist article
) h3{
  margin-top:0!important;
  margin-bottom:8px!important;
}

/* Service check cards use the same two-column legacy pattern. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .sf-card--check{
  position:relative!important;
  display:block!important;
  grid-template-columns:none!important;
  padding-left:46px!important;
  padding-right:46px!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .sf-card--check>span{
  position:absolute!important;
  left:18px!important;
  top:24px!important;
  margin:0!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .sf-card--check :is(h3,p){
  grid-column:auto!important;
  text-align:center!important;
  text-align-last:center!important;
}

/* Complex timelines keep their image/index geometry, but their textual column is
   centered internally. No grid columns are changed. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .ftc-timeline li>div,
  .ftc-communication__grid article,
  .ftc-start__grid li>div
) :is(h3,p){
  text-align:center!important;
  text-align-last:center!important;
}

/* 5) Comparison/estimate rows: labels and prose share a center axis on mobile
      and desktop, while the table header remains data UI. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .ftc-compare__table>div:not(.is-head) :is(strong,p){
  display:block!important;
  width:min(100%,var(--cl-ui-text-max))!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  text-align-last:center!important;
}

/* 6) Long heading safety. Fixed phrase lines must never clip. Server-side fit
      classes set the preferred size; viewport cap adds a second hard guard. */
@media (max-width:820px){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-heading-fixed-break{
    max-width:calc(100vw - 28px)!important;
    margin-left:auto!important;
    margin-right:auto!important;
    font-size:min(var(--cl-mobile-heading-fit,24px),7vw)!important;
    line-height:1.46!important;
    overflow:visible!important;
  }
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-heading-fixed-break>.cl-heading-line{
    display:block!important;
    width:max-content!important;
    max-width:calc(100vw - 32px)!important;
    margin-left:auto!important;
    margin-right:auto!important;
    white-space:nowrap!important;
    letter-spacing:.01em!important;
    text-align:center!important;
  }

  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
    .pf-check-list article,
    .cf-flow__list li,
    .cf-ledger>div,
    .af-process-list li,
    .ftc-checklist article,
    .sf-card--check
  ){
    padding-left:40px!important;
    padding-right:40px!important;
  }
}

/* 7) Exceptions: UI/data components are intentionally not converted to centered
      prose. These keep their native alignment and interaction structure. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .fq-list,.sf-faq-list,.pf-faq-list,.cl-common-faq__list,
  nav,table,.entry-content,ul
) :is(p,li,summary,dt,dd){
  text-align:left!important;
  text-align-last:auto!important;
}


/* v1.11.33b — remaining card families share the same centered prose axis. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .bp-feature-grid article,.bp-timeline__list article,.bp-service-grid>a>div,
  .bp-problem-card__body,.work-card,.journal-card,.column-guide-card,
  .column-category-card,.reason-cards--stable>article,.support-links__grid>a,
  .find-grid>a,.voice-card
) :is(h3,p){
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  text-align-last:center!important;
}

/* Service flow cards with a top label/number have no side text column; their
   label, heading and prose can safely use the card center axis. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .sf-priority-grid,.sf-transform-grid,.sf-door-grid,.sf-plan-grid,.sf-heating-grid,
  .sf-barrier-flow,.sf-apartment-rules
) article>span{
  display:block!important;
  width:100%!important;
  text-align:center!important;
}

/* =========================================================
   v1.11.33c — sitewide split-section axis normalization
   These selectors target only known narrative section families. Existing
   list/table/FAQ/navigation structure is intentionally untouched.
   ========================================================= */

/* Legacy two-column narrative sections are already normalized to one column
   by layout-safety-v11102. Lock the textual parts to the physical center so
   later mobile legacy rules cannot put them back on a left axis. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .sf-philosophy-grid,.sf-check__grid,.pf-unsure-grid,.pf-check-grid,
  .cf-budget__grid,.cf-insurance__grid,.af-philosophy__grid,.af-position__grid
) > :first-child :is(h2,p:not(.sf-kicker):not(.pf-kicker):not(.cf-kicker):not(.af-kicker)),
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .sf-philosophy-grid,.pf-unsure-grid,.af-position__grid
) > :last-child > p{
  width:min(100%,var(--cl-ui-text-max))!important;
  max-width:var(--cl-ui-text-max)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  text-align-last:center!important;
}

body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .sf-philosophy-grid,.sf-check__grid,.pf-unsure-grid,.pf-check-grid,
  .cf-budget__grid,.cf-insurance__grid,.af-philosophy__grid,.af-position__grid
) > :first-child :is(.sf-kicker,.pf-kicker,.af-kicker){
  display:block!important;
  width:100%!important;
}

/* Budget-design option cards have no semantic left/right dependency. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cf-budget__grid > :last-child > div :is(span,h3,p){
  display:block!important;
  width:100%!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  text-align-last:center!important;
}

/* Standard-page intro prose is introductory copy, not long-form article body. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .page-intro__grid > :first-child :is(.section-kicker,h2),
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .page-intro__grid .entry-content--intro > p,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .service-concept__copy > h2,
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .service-concept__copy > .entry-content > p{
  width:min(100%,var(--cl-ui-text-max))!important;
  max-width:var(--cl-ui-text-max)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
  text-align-last:center!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .page-intro__grid > :first-child .section-kicker{
  display:block!important;
  width:100%!important;
}

/* Keep actual list/data content native even when it lives inside an intro block. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :is(
  .page-intro__grid,.service-concept__grid,
  .sf-check__grid,.pf-check-grid,.cf-budget__grid,.af-philosophy__grid
) :is(ul,ol,dl,table) :is(li,dt,dd,p,th,td){
  text-align:left!important;
  text-align-last:auto!important;
}




/* =========================================================
   v1.11.35 — route-specific fixes that match the actual DOM
   Important: .cf-page / .fq-page are classes ON <main>, not descendants.
   ========================================================= */

/* COST / SUPPORT: compact intrinsic-width English pill, centered as an item. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page .cf-kicker{
  display:flex!important;
  width:max-content!important;
  min-width:0!important;
  max-width:calc(100% - 32px)!important;
  margin:0 auto 18px!important;
  padding:8px 14px!important;
  align-items:center!important;
  justify-content:center!important;
  justify-self:center!important;
  align-self:center!important;
  text-align:center!important;
  text-align-last:center!important;
  white-space:nowrap!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page :is(
  .cf-heading,.cf-intro__grid>div,.cf-note__grid>div,.cf-budget__grid>div:first-child,
  .cf-visual__grid>div,.cf-insurance__grid>div,.cf-alert .cf-shell,.cf-subsidy-check__grid>div
){
  text-align:center!important;
}

/* PRICE: explicit editorial lines must fit at every supported viewport. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .site-unified-hero .hero-semantic-title{
  width:min(100%,920px)!important;
  max-width:920px!important;
  margin-inline:auto!important;
  font-size:clamp(34px,3.4vw,54px)!important;
  line-height:1.34!important;
  overflow:visible!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .cf-section .cl-heading-fixed-break{
  width:min(100%,980px)!important;
  max-width:980px!important;
  margin-inline:auto!important;
  font-size:clamp(32px,3.25vw,50px)!important;
  line-height:1.42!important;
  overflow:visible!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .cl-heading-fixed-break>.cl-heading-line{
  display:block!important;
  width:max-content!important;
  max-width:100%!important;
  margin-inline:auto!important;
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
}
@media (min-width:821px) and (max-width:1180px){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .site-unified-hero .hero-semantic-title{
    font-size:clamp(30px,3.45vw,42px)!important;
    max-width:calc(100vw - 72px)!important;
  }
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .cf-section .cl-heading-fixed-break{
    font-size:clamp(27px,3.25vw,38px)!important;
    max-width:calc(100vw - 72px)!important;
  }
}
@media (max-width:820px){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page .cf-kicker{
    padding:7px 12px!important;
    font-size:10px!important;
    max-width:calc(100vw - 44px)!important;
  }
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .site-unified-hero .hero-semantic-title{
    width:calc(100vw - 40px)!important;
    max-width:calc(100vw - 40px)!important;
    font-size:clamp(22px,6.3vw,28px)!important;
    line-height:1.42!important;
  }
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .cf-section .cl-heading-fixed-break{
    width:calc(100vw - 40px)!important;
    max-width:calc(100vw - 40px)!important;
    font-size:clamp(18px,5.1vw,23px)!important;
    line-height:1.5!important;
  }
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .cl-heading-fixed-break>.cl-heading-line{
    width:max-content!important;
    max-width:100%!important;
    white-space:nowrap!important;
  }
}

/* FAQ MOBILE: the class is on main itself. Keep an in-flow grid, never a carousel. */
@media (max-width:820px){
  body.cl-alignment-policy main.fq-page,
  body.cl-alignment-policy main.fq-page *{
    box-sizing:border-box;
    min-width:0;
  }
  body.cl-alignment-policy main.fq-page .fq-shell{
    width:calc(100% - 32px)!important;
    max-width:none!important;
    margin-inline:auto!important;
  }
  body.cl-alignment-policy main.fq-page .fq-category-nav{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:10px!important;
    width:100%!important;
    max-width:100%!important;
    margin:32px 0 0!important;
    padding:0!important;
    overflow:visible!important;
    border:0!important;
    scroll-snap-type:none!important;
  }
  body.cl-alignment-policy main.fq-page .fq-category-nav a{
    position:relative!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:center!important;
    width:100%!important;
    min-width:0!important;
    min-height:124px!important;
    padding:16px 12px!important;
    border:1px solid var(--fq-line)!important;
    border-radius:16px!important;
    text-align:center!important;
    overflow:hidden!important;
  }
  body.cl-alignment-policy main.fq-page .fq-category-nav a :is(small,span,b){
    position:static!important;
    inset:auto!important;
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    margin:0!important;
    text-align:center!important;
    text-align-last:center!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
  }
  body.cl-alignment-policy main.fq-page .fq-category-nav a span{
    margin-top:8px!important;
    font-size:13px!important;
    line-height:1.5!important;
  }
  body.cl-alignment-policy main.fq-page .fq-category-nav a b{
    margin-top:7px!important;
    font-size:9px!important;
  }
  body.cl-alignment-policy main.fq-page :is(.fq-intro__grid,.fq-group__grid,.fq-contact__grid){
    grid-template-columns:1fr!important;
    gap:24px!important;
  }
  body.cl-alignment-policy main.fq-page .fq-list,
  body.cl-alignment-policy main.fq-page .fq-list details{
    width:100%!important;
    max-width:100%!important;
    overflow:hidden!important;
  }
  body.cl-alignment-policy main.fq-page .fq-list summary{
    grid-template-columns:28px minmax(0,1fr) 22px!important;
    gap:8px!important;
    width:100%!important;
    max-width:100%!important;
    padding:22px 0!important;
  }
  body.cl-alignment-policy main.fq-page .fq-list summary strong,
  body.cl-alignment-policy main.fq-page .fq-answer p{
    min-width:0!important;
    max-width:100%!important;
    white-space:normal!important;
    word-break:normal!important;
    overflow-wrap:anywhere!important;
    line-break:strict!important;
  }
  body.cl-alignment-policy main.fq-page .fq-answer{
    grid-template-columns:28px minmax(0,1fr)!important;
    gap:8px!important;
    width:100%!important;
    max-width:100%!important;
  }
}
@media (max-width:360px){
  body.cl-alignment-policy main.fq-page .fq-category-nav{
    grid-template-columns:1fr!important;
  }
}

/* =========================================================
   v1.11.36 — deterministic text safety / FAQ controls
   ========================================================= */

/* Price FV: honor the server-calculated safe phrase size instead of overriding
   it with a larger viewport clamp. The two approved phrase lines remain intact. */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .site-unified-hero--cost-price .hero-semantic-title{
  width:min(920px,calc(100% - 48px))!important;
  max-width:min(920px,calc(100% - 48px))!important;
  margin-inline:auto!important;
  overflow:visible!important;
  text-align:center!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .site-unified-hero--cost-price .hero-semantic-title.cl-heading-fixed-break>.cl-heading-line{
  display:block!important;
  width:max-content!important;
  max-width:100%!important;
  margin-inline:auto!important;
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
}
@media (max-width:820px){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .site-unified-hero--cost-price .hero-semantic-title{
    width:calc(100vw - 44px)!important;
    max-width:calc(100vw - 44px)!important;
    font-size:min(var(--cl-mobile-heading-fit,24px),6.45vw)!important;
    line-height:1.48!important;
  }
}
@media (min-width:821px) and (max-width:1180px){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .site-unified-hero--cost-price .hero-semantic-title{
    font-size:clamp(30px,3.25vw,40px)!important;
  }
}
@media (min-width:1181px){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main.cf-page--price .site-unified-hero--cost-price .hero-semantic-title{
    font-size:clamp(38px,3vw,50px)!important;
  }
}

/* Mobile text safety: remove legacy nowrap from ordinary copy/headings while
   preserving explicit approved phrase lines. */
@media (max-width:820px){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(h1,h2,h3,p,summary,strong,figcaption){
    max-width:100%!important;
    min-width:0!important;
  }
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(h1,h2,h3):not(.cl-heading-fixed-break){
    white-space:normal!important;
    word-break:normal!important;
    overflow-wrap:normal!important;
    line-break:strict!important;
    text-wrap:balance!important;
    overflow:visible!important;
  }
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main p{
    white-space:normal!important;
    word-break:normal!important;
    line-break:strict!important;
  }
  @supports (word-break:auto-phrase){
    body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main :where(h1,h2,h3):not(.cl-heading-fixed-break){
      word-break:auto-phrase!important;
    }
  }
}

/* FAQ mobile: reserve an actual 38px column and internal right padding for the
   plus control. The circle never sits on / beyond the card edge. Applies to the
   dedicated FAQ page and FAQ blocks used throughout the site. */
@media (max-width:820px){
  body.cl-alignment-policy main :is(
    .fq-list,.cl-common-faq__list,.faq-accordion,.sf-faq-list,.pf-faq-list,.bp-faq__list
  ) details{
    width:100%!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }
  body.cl-alignment-policy main :is(
    .fq-list,.cl-common-faq__list,.faq-accordion,.sf-faq-list,.pf-faq-list,.bp-faq__list
  ) summary{
    display:grid!important;
    grid-template-columns:28px minmax(0,1fr) 38px!important;
    gap:9px!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    margin:0!important;
    padding:16px 12px 16px 14px!important;
    box-sizing:border-box!important;
    overflow:visible!important;
    align-items:center!important;
  }
  body.cl-alignment-policy main :is(
    .fq-list,.cl-common-faq__list,.faq-accordion,.sf-faq-list,.pf-faq-list,.bp-faq__list
  ) summary :is(strong,span){
    min-width:0!important;
    max-width:100%!important;
  }
  body.cl-alignment-policy main :is(
    .fq-list,.cl-common-faq__list,.faq-accordion,.sf-faq-list,.pf-faq-list,.bp-faq__list
  ) summary strong{
    white-space:normal!important;
    word-break:normal!important;
    overflow-wrap:normal!important;
    line-break:strict!important;
  }
  body.cl-alignment-policy main :is(
    .fq-list,.cl-common-faq__list,.faq-accordion,.sf-faq-list,.pf-faq-list,.bp-faq__list
  ) summary i{
    position:static!important;
    inset:auto!important;
    justify-self:center!important;
    align-self:center!important;
    width:32px!important;
    height:32px!important;
    min-width:32px!important;
    max-width:32px!important;
    margin:0!important;
    box-sizing:border-box!important;
    transform:none!important;
  }
  body.cl-alignment-policy main.fq-page .fq-list,
  body.cl-alignment-policy main.fq-page .fq-list details{
    overflow:visible!important;
  }
}


/* v1.11.36 FINAL — price / FAQ / mobile text safety / persistent navigation */

/* /cost-support/price/: every heading/copy block remains inside its own real
   container. Explicit approved phrase lines are kept intact; ordinary headings
   may wrap naturally instead of being clipped by older fixed-width rules. */
body.cl-alignment-policy main.cf-page--price :is(.cf-shell,.cf-heading,.cf-budget__grid,.cf-visual__grid,.cf-note__grid,.cf-flow__list,.cf-four,.cf-card){
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
body.cl-alignment-policy main.cf-page--price :is(h1,h2,h3,p){
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
body.cl-alignment-policy main.cf-page--price :is(h2,h3):not(.cl-heading-fixed-break){
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:normal!important;
  line-break:strict!important;
  overflow:visible!important;
}
@supports (word-break:auto-phrase){
  body.cl-alignment-policy main.cf-page--price :is(h2,h3):not(.cl-heading-fixed-break){word-break:auto-phrase!important}
}
body.cl-alignment-policy main.cf-page--price .cl-heading-fixed-break{
  width:min(100%,920px)!important;
  max-width:100%!important;
  margin-inline:auto!important;
  overflow:visible!important;
}
body.cl-alignment-policy main.cf-page--price .cl-heading-fixed-break>.cl-heading-line{
  display:block!important;
  width:max-content!important;
  max-width:100%!important;
  margin-inline:auto!important;
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
}
@media (max-width:820px){
  body.cl-alignment-policy main.cf-page--price .site-unified-hero--cost-price .hero-semantic-title{
    width:calc(100vw - 48px)!important;
    max-width:calc(100vw - 48px)!important;
    font-size:min(var(--cl-mobile-heading-fit,23px),6.05vw)!important;
    line-height:1.5!important;
  }
  body.cl-alignment-policy main.cf-page--price :is(.cf-heading h2,.cf-budget h2,.cf-visual h2,.cf-note h2,.cf-flow h2){
    font-size:min(var(--cl-mobile-heading-fit,24px),6.25vw)!important;
    line-height:1.55!important;
  }
}
@media (min-width:821px) and (max-width:1180px){
  body.cl-alignment-policy main.cf-page--price .site-unified-hero--cost-price .hero-semantic-title{font-size:clamp(28px,3.05vw,38px)!important}
  body.cl-alignment-policy main.cf-page--price :is(.cf-heading h2,.cf-budget h2,.cf-visual h2,.cf-note h2,.cf-flow h2){font-size:clamp(27px,2.7vw,36px)!important}
}
@media (min-width:1181px){
  body.cl-alignment-policy main.cf-page--price .site-unified-hero--cost-price .hero-semantic-title{font-size:clamp(36px,2.85vw,48px)!important}
}

/* /faq/ mobile: the plus control lives in its own real column inside the card.
   Nothing is positioned on the right edge, so the circle cannot be cropped. */
@media (max-width:820px){
  body.cl-alignment-policy main.fq-page .fq-shell{
    width:calc(100% - 32px)!important;
    max-width:calc(100% - 32px)!important;
    margin-inline:auto!important;
  }
  body.cl-alignment-policy main.fq-page .fq-list,
  body.cl-alignment-policy main.fq-page .fq-list details{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    overflow:visible!important;
    box-sizing:border-box!important;
  }
  body.cl-alignment-policy main.fq-page .fq-list details{border-radius:14px!important}
  body.cl-alignment-policy main.fq-page .fq-list summary{
    position:relative!important;
    display:grid!important;
    grid-template-columns:24px minmax(0,1fr) 36px!important;
    gap:8px!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    padding:16px 14px!important;
    box-sizing:border-box!important;
    overflow:visible!important;
  }
  body.cl-alignment-policy main.fq-page .fq-list summary>span{
    width:24px!important;
    min-width:24px!important;
    height:28px!important;
  }
  body.cl-alignment-policy main.fq-page .fq-list summary strong{
    min-width:0!important;
    max-width:100%!important;
    white-space:normal!important;
    word-break:normal!important;
    overflow-wrap:anywhere!important;
    line-break:strict!important;
    font-size:15px!important;
    line-height:1.6!important;
  }
  body.cl-alignment-policy main.fq-page .fq-list summary i{
    position:static!important;
    inset:auto!important;
    justify-self:center!important;
    width:30px!important;
    height:30px!important;
    min-width:30px!important;
    max-width:30px!important;
    margin:0!important;
    border-radius:50%!important;
    box-sizing:border-box!important;
    overflow:visible!important;
    transform:none!important;
  }
  body.cl-alignment-policy main.fq-page .fq-answer{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    box-sizing:border-box!important;
    padding-right:14px!important;
  }
  body.cl-alignment-policy main.fq-page .fq-answer p{
    min-width:0!important;
    max-width:100%!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
  }
}

/* Site-wide mobile clipping guard for prose/headings only. UI rows, tables,
   navigation, data chips and list controls keep their own layout rules. */
@media (max-width:820px){
  body.cl-alignment-policy:not(.single-post) main :is(
    .section-title,.home-section-head,.sf-heading,.sf-heading-grid,.pf-heading,.pf-heading-grid,
    .cf-heading,.cf-intro__grid,.cf-note__grid,.af-heading,.af-intro__grid,.ftc-heading,.ftc-intro__grid,
    .bp-section__heading,.bp-gallery__heading,.fq-group__heading,.cl-common-faq__heading
  ){
    min-width:0!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }
  body.cl-alignment-policy:not(.single-post) main :is(
    .section-title,.home-section-head,.sf-heading,.sf-heading-grid,.pf-heading,.pf-heading-grid,
    .cf-heading,.cf-intro__grid,.cf-note__grid,.af-heading,.af-intro__grid,.ftc-heading,.ftc-intro__grid,
    .bp-section__heading,.bp-gallery__heading,.fq-group__heading,.cl-common-faq__heading
  ) :is(h1,h2,h3,p){
    min-width:0!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }
}

/* =========================================================
   v1.11.37 — deterministic overflow safety
   Alignment is unchanged. Fixed editorial lines never break mid-phrase;
   ordinary prose only receives emergency wrapping if it really overflows.
   ========================================================= */
body.cl-alignment-policy main,
body.cl-alignment-policy main :where(section,article,header,div,li,details,summary){
  min-width:0;
}

/* Never clip text boxes themselves. Media clipping remains on figure/image wrappers. */
body.cl-alignment-policy:not(.single-post) main :where(h1,h2,h3,p,figcaption,summary,strong){
  text-overflow:clip!important;
}
body.cl-alignment-policy:not(.single-post) main :where(h1,h2,h3,p,figcaption):not(.screen-reader-text){
  max-height:none!important;
}

/* Approved phrase lines: keep the editorial boundary and let the runtime guard
   reduce only font size when a real rendered font is wider than expected. */
body.cl-alignment-policy:not(.single-post) main .cl-heading-fixed-break,
body.cl-alignment-policy:not(.single-post) main .hero-semantic-title:has(.home-hero__title-line){
  width:min(100%,var(--cl-ui-heading-max,1040px))!important;
  max-width:100%!important;
  overflow:visible!important;
}
body.cl-alignment-policy:not(.single-post) main :is(.cl-heading-fixed-break,.hero-semantic-title) > :is(.cl-heading-line,.home-hero__title-line){
  display:block!important;
  width:max-content!important;
  max-width:100%!important;
  margin-inline:auto!important;
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
}

/* Ordinary headings: remove legacy single-line locks. Phrase-aware line breaking
   is preferred where the browser supports it. */
body.cl-alignment-policy:not(.single-post) main :where(h1,h2,h3):not(.cl-heading-fixed-break):not(:has(.home-hero__title-line)){
  width:min(100%,var(--cl-ui-heading-max,1040px))!important;
  max-width:100%!important;
  min-width:0!important;
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:normal!important;
  line-break:strict!important;
  overflow:visible!important;
}
@supports (word-break:auto-phrase){
  body.cl-alignment-policy:not(.single-post) main :where(h1,h2,h3):not(.cl-heading-fixed-break):not(:has(.home-hero__title-line)){
    word-break:auto-phrase!important;
  }
}

/* Runtime emergency class is added only after a real overflow is measured. */
body.cl-alignment-policy:not(.single-post) main :where(p,figcaption,summary strong).cl-runtime-overflow{
  min-width:0!important;
  max-width:100%!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  word-break:normal!important;
  overflow:visible!important;
}
body.cl-alignment-policy:not(.single-post) main :where(h1,h2,h3).cl-runtime-overflow{
  min-width:0!important;
  max-width:100%!important;
  white-space:normal!important;
  overflow:visible!important;
}

/* FAQ question text and plus control must coexist inside the card at every phone width. */
@media (max-width:820px){
  body.cl-alignment-policy main :is(.fq-list,.cl-common-faq__list,.faq-accordion,.sf-faq-list,.pf-faq-list,.bp-faq__list) summary{
    grid-template-columns:24px minmax(0,1fr) 34px!important;
    gap:8px!important;
    padding-left:12px!important;
    padding-right:12px!important;
    overflow:visible!important;
  }
  body.cl-alignment-policy main :is(.fq-list,.cl-common-faq__list,.faq-accordion,.sf-faq-list,.pf-faq-list,.bp-faq__list) summary strong{
    min-width:0!important;
    max-width:100%!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
    word-break:normal!important;
  }
  body.cl-alignment-policy main :is(.fq-list,.cl-common-faq__list,.faq-accordion,.sf-faq-list,.pf-faq__list,.bp-faq__list) summary i{
    position:static!important;
    justify-self:center!important;
    width:30px!important;
    min-width:30px!important;
    max-width:30px!important;
    height:30px!important;
    margin:0!important;
    transform:none!important;
    box-sizing:border-box!important;
  }
}


/* =========================================================
   v1.11.38 — deterministic heading line policy
   Runtime font shrinking is intentionally disabled.
   PHP outputs approved two-line phrase spans; CSS only sizes them.
   ========================================================= */
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-heading-fixed-break{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  overflow:visible!important;
  text-align:center!important;
}
body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-heading-fixed-break>.cl-heading-line{
  display:block!important;
  width:max-content!important;
  max-width:100%!important;
  margin-inline:auto!important;
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
  line-break:strict!important;
  text-align:center!important;
  visibility:visible!important;
  opacity:1!important;
}

/* PC/tablet keeps the existing component typography; only the approved line boundary is enforced. */

/* Mobile: exactly two server-rendered lines. Font size is assigned from the
   longest line length; it never drops to the old 10px runtime floor. */
@media (max-width:820px){
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-heading-fixed-break{
    font-size:var(--cl-mobile-heading-fit,24px)!important;
    line-height:1.48!important;
    width:calc(100% - 8px)!important;
    max-width:calc(100% - 8px)!important;
    margin-inline:auto!important;
  }
  body.cl-alignment-policy.cl-copy-policy.cl-heading-policy:not(.single-post) main .cl-heading-fixed-break>.cl-heading-line{
    max-width:calc(100vw - 36px)!important;
  }
  /* Cost/price title had been visually reduced by the retired runtime guard. */
  body.cl-alignment-policy main.cf-page--price .cf-budget h2.cl-heading-fixed-break{
    min-height:2.96em!important;
    margin:0 auto 18px!important;
    color:var(--cl-ink,#17231e)!important;
  }
}


/* =========================================================
   v1.11.39 — shared copy-axis alignment
   Keep section headers centered, but align the first character of headings
   and prose inside cards / text columns to one shared reading axis.
   Existing server-rendered phrase breaks are preserved exactly.
   ========================================================= */
:root{
  --cl-card-copy-axis:30em;
  --cl-column-copy-axis:36em;
}

/* Text-card families only. Numbered lists, FAQ, tables and navigation are not
   included here because their marker/control columns are intentional UI. */
body.cl-alignment-policy:not(.single-post) main :is(
  .sf-card,
  .sf-priority-grid>article,
  .sf-transform-grid>article,
  .sf-door-grid>article,
  .sf-plan-grid>article,
  .sf-heating-grid>article,
  .sf-swatch-grid>article,
  .sf-material-grid>article,
  .sf-kitchen-flow>article,
  .sf-bath-grid>article,
  .sf-washroom-flow>article,
  .sf-store-flow>article,
  .sf-repair-grid>article,
  .sf-barrier-flow>article,
  .sf-landscape-grid>article,
  .sf-three>a,
  .sf-hub-card>div,
  .pf-card,
  .pf-special-grid>article,
  .pf-signs-grid>article,
  .pf-hub-card>div,
  .cf-card,
  .cf-programs>a,
  .cf-menu-card>div,
  .cf-budget__grid>div:last-child>div,
  .af-card,
  .af-nav-card>div,
  .ftc-priority__grid>article,
  .ftc-choose__grid>article,
  .ftc-three>article,
  .ftc-four>article,
  .ftc-during__list>article,
  .ftc-after__grid>article,
  .ftc-communication__grid article,
  .ftc-checklist>article>div,
  .bp-card__content,
  .bp-feature-grid>article
) :is(h3,p){
  width:min(100%,var(--cl-card-copy-axis))!important;
  max-width:var(--cl-card-copy-axis)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:left!important;
  box-sizing:border-box!important;
}

/* A card label remains visually centered above the common copy axis. */
body.cl-alignment-policy:not(.single-post) main :is(
  .sf-priority-grid>article,
  .sf-transform-grid>article,
  .sf-door-grid>article,
  .sf-plan-grid>article,
  .sf-heating-grid>article,
  .sf-swatch-grid>article,
  .cf-budget__grid>div:last-child>div,
  .ftc-priority__grid>article
) > span{
  display:block!important;
  width:max-content!important;
  max-width:100%!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
}

/* Preserve approved phrase breaks while moving each fixed line to the same
   left edge as the paragraph underneath it. */
body.cl-alignment-policy:not(.single-post) main :is(
  .sf-card,
  .sf-priority-grid>article,
  .sf-transform-grid>article,
  .sf-door-grid>article,
  .sf-plan-grid>article,
  .sf-heating-grid>article,
  .sf-swatch-grid>article,
  .sf-material-grid>article,
  .sf-kitchen-flow>article,
  .sf-bath-grid>article,
  .sf-washroom-flow>article,
  .sf-store-flow>article,
  .pf-card,
  .pf-special-grid>article,
  .cf-card,
  .cf-budget__grid>div:last-child>div,
  .af-card,
  .ftc-priority__grid>article,
  .ftc-choose__grid>article,
  .ftc-three>article,
  .ftc-four>article,
  .ftc-during__list>article,
  .ftc-after__grid>article,
  .ftc-communication__grid article,
  .bp-card__content,
  .bp-feature-grid>article
) h3.cl-heading-fixed-break>.cl-heading-line{
  width:auto!important;
  max-width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
  text-align:left!important;
}

/* Split-layout text columns use one centered reading box. The English kicker
   stays centered; the Japanese heading and prose share the same left edge. */
body.cl-alignment-policy:not(.single-post) main :is(
  .cf-budget__grid>div:first-child,
  .cf-visual__grid>div:first-child,
  .cf-insurance__grid>div:first-child,
  .cf-subsidy-check__grid>div:first-child,
  .sf-check__grid>div:first-child,
  .pf-check-grid>div:first-child,
  .pf-note-grid>div:first-child,
  .af-visual-story__grid>div:first-child,
  .af-company-scope__grid>div:first-child,
  .af-rep-message__grid>div:first-child,
  .ftc-choose__visual>div,
  .ftc-note>div,
  .service-concept__grid>div,
  .page-intro__grid>div
) > :is(h2,h3,p):not([class*="kicker"]):not([class*="eyebrow"]):not([class*="label"]){
  width:min(100%,var(--cl-column-copy-axis))!important;
  max-width:var(--cl-column-copy-axis)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:left!important;
  box-sizing:border-box!important;
}

body.cl-alignment-policy:not(.single-post) main :is(
  .cf-budget__grid>div:first-child,
  .cf-visual__grid>div:first-child,
  .cf-insurance__grid>div:first-child,
  .cf-subsidy-check__grid>div:first-child,
  .sf-check__grid>div:first-child,
  .pf-check-grid>div:first-child,
  .pf-note-grid>div:first-child,
  .af-visual-story__grid>div:first-child,
  .af-company-scope__grid>div:first-child,
  .af-rep-message__grid>div:first-child,
  .ftc-choose__visual>div,
  .ftc-note>div,
  .service-concept__grid>div,
  .page-intro__grid>div
) > :is(.sf-kicker,.pf-kicker,.cf-kicker,.af-kicker,.ftc-kicker,.section-kicker,p[class*="kicker"],p[class*="eyebrow"]){
  width:max-content!important;
  max-width:100%!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
}

/* Fixed H2/H3 phrase lines in those text columns retain the authored split but
   start from the same edge as their body copy. */
body.cl-alignment-policy:not(.single-post) main :is(
  .cf-budget__grid>div:first-child,
  .cf-visual__grid>div:first-child,
  .cf-insurance__grid>div:first-child,
  .cf-subsidy-check__grid>div:first-child,
  .sf-check__grid>div:first-child,
  .pf-check-grid>div:first-child,
  .pf-note-grid>div:first-child,
  .af-visual-story__grid>div:first-child,
  .af-company-scope__grid>div:first-child,
  .af-rep-message__grid>div:first-child,
  .ftc-choose__visual>div,
  .ftc-note>div,
  .service-concept__grid>div,
  .page-intro__grid>div
) > :is(h2,h3).cl-heading-fixed-break>.cl-heading-line{
  width:auto!important;
  max-width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
  text-align:left!important;
}

/* The MUST / WANT / LATER cards were the clearest mismatch on phones. Their
   label is a header, not a left marker, so stack it above a single copy axis. */
@media (max-width:820px){
  body.cl-alignment-policy main.cf-page--price .cf-budget__grid>div:last-child>div{
    grid-template-columns:1fr!important;
    justify-items:center!important;
    gap:8px!important;
    padding:24px 22px!important;
  }
  body.cl-alignment-policy main.cf-page--price .cf-budget__grid>div:last-child>div>span{
    grid-column:1!important;
    margin:0 auto 4px!important;
  }
  body.cl-alignment-policy main.cf-page--price .cf-budget__grid>div:last-child>div>h3,
  body.cl-alignment-policy main.cf-page--price .cf-budget__grid>div:last-child>div>p{
    grid-column:1!important;
    width:min(100%,18em)!important;
    max-width:18em!important;
    margin-left:auto!important;
    margin-right:auto!important;
    text-align:left!important;
  }
  body.cl-alignment-policy main.cf-page--price .cf-budget__grid>div:last-child>div>h3{
    margin-top:0!important;
    margin-bottom:4px!important;
  }
}

/* v1.11.39 supplemental: numbered/check rows that already provide a dedicated
   copy column keep their marker column, while the heading and paragraph share
   one left edge. No marker or list geometry is changed. */
body.cl-alignment-policy:not(.single-post) main :is(
  .pf-check-list article>div,
  .ftc-checklist>article>div,
  .cf-flow__list li>div,
  .ftc-timeline li>div,
  .ftc-start__grid li>div
) :is(h3,p){
  text-align:left!important;
  margin-left:0!important;
  margin-right:0!important;
}
body.cl-alignment-policy:not(.single-post) main :is(
  .sf-card--check,
  .sf-toilet-layout article,
  .cf-ledger>div
) :is(h3,p){
  text-align:left!important;
}
body.cl-alignment-policy:not(.single-post) main :is(
  .pf-check-list article>div,
  .ftc-checklist>article>div,
  .cf-flow__list li>div,
  .ftc-timeline li>div,
  .ftc-start__grid li>div,
  .sf-card--check,
  .sf-toilet-layout article,
  .cf-ledger>div
) h3.cl-heading-fixed-break>.cl-heading-line{
  margin-left:0!important;
  margin-right:0!important;
  text-align:left!important;
}

/* v1.11.39 supplemental: remaining text-card families that share the same
   heading + paragraph pattern. Image/media geometry is untouched. */
body.cl-alignment-policy:not(.single-post) main :is(
  .service-reasons__grid>article,
  .sf-roof-signs>article,
  .sf-apartment-rules>article,
  .sf-used-timeline>article,
  .sf-custom-day>article,
  .sf-water-menu>a>div,
  .sf-dual-visuals>article>div,
  .sf-home-visuals>article>div,
  .sf-single-visual>div
) :is(h3,p){
  width:min(100%,var(--cl-card-copy-axis))!important;
  max-width:var(--cl-card-copy-axis)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:left!important;
  box-sizing:border-box!important;
}
body.cl-alignment-policy:not(.single-post) main :is(
  .service-reasons__grid>article,
  .sf-roof-signs>article,
  .sf-apartment-rules>article,
  .sf-used-timeline>article,
  .sf-custom-day>article,
  .sf-water-menu>a>div,
  .sf-dual-visuals>article>div,
  .sf-home-visuals>article>div,
  .sf-single-visual>div
) h3.cl-heading-fixed-break>.cl-heading-line{
  width:auto!important;
  max-width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
  text-align:left!important;
}


/* =========================================================
   v1.11.40 — /cost-support/price/ authoritative manual headings
   These two headings are intentionally excluded from the generic fitter.
   Their editorial lines are written in PHP and must always remain visible.
   ========================================================= */
body.cl-alignment-policy main.cf-page--price .cf-budget-title,
body.cl-alignment-policy main.cf-page--price .cf-value-title{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  width:min(100%,760px)!important;
  max-width:760px!important;
  min-height:0!important;
  margin:0 auto 20px!important;
  padding:0!important;
  color:var(--cl-ink,#1d2923)!important;
  font-family:var(--cl-serif,Georgia,serif)!important;
  font-weight:500!important;
  font-size:clamp(32px,3.2vw,48px)!important;
  line-height:1.42!important;
  letter-spacing:.005em!important;
  text-align:center!important;
  overflow:visible!important;
}
body.cl-alignment-policy main.cf-page--price :is(.cf-budget-title,.cf-value-title)>.cl-heading-line{
  display:block!important;
  width:auto!important;
  max-width:100%!important;
  margin:0 auto!important;
  padding:0!important;
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
  text-align:center!important;
}
@media (max-width:820px){
  body.cl-alignment-policy main.cf-page--price .cf-budget-title{
    width:calc(100vw - 52px)!important;
    max-width:calc(100vw - 52px)!important;
    font-size:clamp(23px,6.6vw,27px)!important;
    line-height:1.48!important;
    margin-bottom:18px!important;
  }
  body.cl-alignment-policy main.cf-page--price .cf-value-title{
    width:calc(100vw - 44px)!important;
    max-width:calc(100vw - 44px)!important;
    font-size:clamp(22px,6.2vw,26px)!important;
    line-height:1.48!important;
    margin-bottom:18px!important;
  }
}
@media (max-width:360px){
  body.cl-alignment-policy main.cf-page--price .cf-budget-title{font-size:22px!important}
  body.cl-alignment-policy main.cf-page--price .cf-value-title{font-size:21px!important}
}


/* =========================================================
   v1.11.41 — author-saved heading breaks + price heading center lock
   ========================================================= */
body.cl-alignment-policy main .cl-heading-manual-lines{
  max-width:100%!important;
  margin-left:auto!important;
  margin-right:auto!important;
}
body.cl-alignment-policy main .cl-heading-manual-lines>.cl-heading-line{
  display:block!important;
  max-width:100%!important;
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
}
body.cl-alignment-policy main.cf-page--price .cf-visual__grid>div:first-child,
body.cl-alignment-policy main.cf-page--price .cf-visual__grid>div:first-child .cf-kicker,
body.cl-alignment-policy main.cf-page--price .cf-value-title,
body.cl-alignment-policy main.cf-page--price .cf-value-title>.cl-heading-line{
  text-align:center!important;
}
body.cl-alignment-policy main.cf-page--price .cf-value-title{
  width:100%!important;
  max-width:100%!important;
  margin-left:auto!important;
  margin-right:auto!important;
}
