/* Band-level prose only: existing 730px reading measure; split/card contents untouched. */
html body main .bvg-body > .bvg-sec > :is(h2,h3,p),
html body main.bvg-body > .bvg-sec > :is(h2,h3,p),
html body main .bb-band > .bb-wrap > :is(h2,h3,p),
html body main .bvg-sec > .bvg-reviewproof-head > :is(h2,h3,p) {
  width: min(100%, var(--measure, 730px)) !important;
  max-width: var(--measure, 730px) !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box;
}

/* Additional R329 correction, based on saved release25 DOM measurements.
   Direct band prose stays on the existing 730px reading measure with 16px phone gutters.
   Negative inline margins bridge wider band padding; card/split descendants are excluded.
   Existing vertical rhythm, text alignment, cards, images, forms and grids are preserved. */
html body main > .bvg-sec[class] > :is(h2,h3,p),
html body main :is(.bvg-body,.bb-body) > .bvg-sec[class] > :is(h2,h3,p),
html body main .bb-band > .bb-wrap[class] > :is(h2,h3,p),
html body main :is(.bvg-body,.bb-body)[class] > :is(h2,h3,p),
html body main > article.bvg-post.bvg-blogwrap > :is(h2,h3,p),
html body main > article.bvg-post.bvg-blogwrap > section.bvg-faq > :is(h2,h3,p),
html body main .bb-band > .bb-wrap > .bb-dir-more > :is(h2,h3,p),
html body main :is(.bvg-body,.bb-body) > .bvg-sec > .bvg-review-band > :is(h2,h3,p),
html body main :is(.bvg-body,.bb-body) > .bvg-reviewproof[class] > :is(h2,h3,p),
html body main :is(.bvg-body,.bb-body) > .bvg-reviewproof[class] > .bvg-reviewproof-head {
  width: min(var(--measure,730px),calc(100vw - 32px)) !important;
  max-width: min(var(--measure,730px),calc(100vw - 32px)) !important;
  margin-left: calc((100% - min(var(--measure,730px),calc(100vw - 32px))) / 2) !important;
  margin-right: calc((100% - min(var(--measure,730px),calc(100vw - 32px))) / 2) !important;
  box-sizing: border-box;
}
/* The three landing-page CTA summaries are the sole narrow band paragraphs
   among otherwise shared full-width band heading boxes. Preserve their page's own measure. */
html:has(link[rel="canonical"][href^="https://www.4seasons-construction.com/lp/"]) body main > section.sec.final > .wrap > p {
  max-width: none;
}
/* fs-sprint-1001 — Website Checklist live-render fixes (hamza/Claude 2026-10-01). Loaded after fs-reading-edge. */
/* R382: mobile sticky call bar must never sit at opacity 0 when the entrance animation does not run */
@keyframes bvg-rise{0%{transform:translateY(12px)}to{transform:translateY(0)}}
/* R374: services hub card grid was 3 x 93px columns with clipped text on phones */
@media (max-width:860px){html body .bb-page .bb-svc-cards{grid-template-columns:minmax(0,1fr)!important}}
/* R329: page byline text sat flush to the screen edge at 375; give it the shared reading measure */
html body main > .bvg-byline{box-sizing:border-box;width:min(var(--measure,730px),calc(100vw - 32px));max-width:none;margin-left:auto;margin-right:auto}
/* R384: footer GBP card only renders the populated card at >=320px tall */
html body .bvg-footer-map iframe{height:320px}
/* R384 phones: the Google card only paints when the frame is >=~480px wide, so render the 480x320 frame scaled down inside the footer column */
@media (max-width:520px){html body .bvg-footer-map{overflow:hidden;border-radius:var(--r-sm)}html body .bvg-footer-map iframe{display:block;width:480px;max-width:none;height:320px;transform:scale(.68);transform-origin:0 0;margin-bottom:-102px}}
@media (max-width:357px){html body .bvg-footer-map iframe{transform:scale(.58);margin-bottom:-134px}}
/* R472: service-areas band left a 356-561px empty column beside the maps on desktop; stack ONLY the bands that have the 2-map pair (city, service x city) or the short home band; service/hub bands are balanced and stay 2-col */
@media (min-width:861px){html body .bb-page .bb-areas-grid:has(.fs-town-map-pair),html body .bb-page.bb-home .bb-areas-grid{grid-template-columns:minmax(0,1fr)!important}html body .bb-page .bb-areas-grid .fs-town-map-pair{grid-template-columns:repeat(2,minmax(0,1fr))}}
