/*
 * Remodeling Veterans editorial system v2.
 * Scoped below the established heroes so the approved homepage/header design
 * stays intact while deeper pages gain consistent rhythm and readable width.
 */

:root {
  --rv-v2-ink: #151816;
  --rv-v2-forest: #1d3933;
  --rv-v2-sage: #3c7468;
  --rv-v2-copper: #d95622;
  --rv-v2-sand: #f2eee6;
  --rv-v2-mist: #edf3f0;
  --rv-v2-paper: #fbfaf7;
  --rv-v2-line: rgba(21, 24, 22, 0.13);
  --rv-v2-shadow: 0 24px 70px rgba(19, 32, 28, 0.1);
}

body:is(
  .rv-family-article,
  .rv-family-city-service,
  .rv-family-city-hub,
  .rv-family-area-directory,
  .rv-family-root-service,
  .rv-family-service-hub,
  .rv-family-consultation,
  .rv-family-page
) .wp-block-post-content > .section:not(.page-hero) {
  position: relative;
  isolation: isolate;
  overflow: clip;
}

body:is(
  .rv-family-article,
  .rv-family-city-service,
  .rv-family-city-hub,
  .rv-family-area-directory,
  .rv-family-root-service,
  .rv-family-service-hub,
  .rv-family-consultation,
  .rv-family-page
) .section[data-rv-section] > .rv-container {
  width: min(calc(100% - clamp(40px, 5vw, 88px)), 1480px);
  max-width: none;
}

body:is(
  .rv-family-article,
  .rv-family-city-service,
  .rv-family-city-hub,
  .rv-family-area-directory,
  .rv-family-root-service,
  .rv-family-service-hub,
  .rv-family-consultation,
  .rv-family-page
) .section[data-rv-section] :is(p, li, dd) {
  text-wrap: pretty;
}

body:is(
  .rv-family-article,
  .rv-family-city-service,
  .rv-family-city-hub,
  .rv-family-area-directory,
  .rv-family-root-service,
  .rv-family-service-hub,
  .rv-family-consultation,
  .rv-family-page
) .section[data-rv-section] :is(.wp-block-columns, .split, .conversion-flow) > * {
  min-width: 0;
}

/* Reading progress is informational, unobtrusive, and disabled for reduced motion. */
.rv-reading-progress {
  position: fixed;
  z-index: 999;
  top: 0;
  right: 0;
  left: 0;
  height: 3px;
  pointer-events: none;
  opacity: 0;
  transition: opacity 180ms ease;
}

.rv-reading-progress::before {
  display: block;
  width: calc(var(--rv-reading-progress, 0) * 1%);
  height: 100%;
  border-radius: 0 999px 999px 0;
  background: linear-gradient(90deg, var(--rv-v2-copper), #f2a56f, var(--rv-v2-sage));
  box-shadow: 0 1px 8px rgba(217, 86, 34, 0.26);
  content: "";
}

.rv-reading-progress.is-active {
  opacity: 1;
}

/* A code-native diagram creates a useful early visual without implying project
   statistics, prices, durations, or completed-work photography. */
.rv-pathway-visual {
  position: relative;
  display: grid;
  grid-template-columns: minmax(190px, 0.72fr) minmax(0, 1.28fr);
  align-items: stretch;
  gap: clamp(22px, 3.2vw, 48px);
  width: 100%;
  margin: clamp(28px, 4vw, 52px) 0 6px;
  padding: clamp(24px, 3.6vw, 44px);
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 12px;
  background:
    radial-gradient(circle at 90% 10%, rgba(217, 86, 34, 0.2), transparent 30%),
    linear-gradient(132deg, #151a18 0%, #1b2d29 58%, #284b43 100%);
  color: #fff;
  box-shadow: var(--rv-v2-shadow);
}

body:not(.rv-family-home) .rv-layout-guide .rv-pathway-visual {
  grid-column: 1 / -1;
}

.rv-pathway-visual::after {
  position: absolute;
  right: 8%;
  bottom: -44px;
  width: 190px;
  height: 190px;
  border: 1px solid rgba(255, 255, 255, 0.11);
  border-radius: 50%;
  content: "";
}

.rv-pathway-visual__heading {
  position: relative;
  z-index: 1;
  display: grid;
  align-content: center;
  gap: 10px;
  padding-right: 12px;
}

.rv-pathway-visual__heading > span {
  color: #ffb07c;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.rv-pathway-visual__heading > strong {
  max-width: 16ch;
  color: #fff !important;
  font-family: var(--rv-serif);
  font-size: clamp(30px, 3.2vw, 48px);
  font-weight: 700;
  line-height: 0.98;
  text-wrap: balance;
}

.rv-pathway-visual ol {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: stretch;
  gap: 10px;
  margin: 0;
  padding: 30px 0 0;
  list-style: none;
}

.rv-pathway-visual ol::before,
.rv-pathway-visual ol::after {
  position: absolute;
  top: 11px;
  right: 8%;
  left: 8%;
  height: 3px;
  border-radius: 999px;
  content: "";
}

.rv-pathway-visual ol::before {
  background: rgba(255, 255, 255, 0.16);
}

.rv-pathway-visual ol::after {
  background: linear-gradient(90deg, var(--rv-v2-copper), #ffb07c, #78ad9f);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 900ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.rv-pathway-visual.is-rv-in-view ol::after,
.is-rv-in-view .rv-pathway-visual ol::after {
  transform: scaleX(1);
}

.rv-pathway-visual li {
  position: relative;
  display: grid;
  min-height: 112px;
  padding: 22px 16px 18px;
  align-content: space-between;
  gap: 18px;
  border: 1px solid rgba(255, 255, 255, 0.13);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.07);
  color: #fff !important;
  backdrop-filter: blur(8px);
}

.rv-pathway-visual li::before {
  position: absolute;
  top: -24px;
  left: 50%;
  width: 13px;
  height: 13px;
  border: 4px solid #263d37;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1);
  content: "";
  transform: translateX(-50%);
}

.rv-pathway-visual li > span {
  color: #ffb07c;
  font-size: 10px;
  font-weight: 950;
  letter-spacing: 0.12em;
}

.rv-pathway-visual li > strong {
  color: #fff !important;
  font-size: clamp(14px, 1.25vw, 17px);
  line-height: 1.2;
}

/* Dense reference material is still available, but no longer occupies several
   default-visible screens between high-intent sections. */
.rv-technical-disclosure {
  width: 100%;
  margin: 0;
  border-top: 1px solid var(--rv-v2-line);
  border-bottom: 1px solid var(--rv-v2-line);
  background: linear-gradient(135deg, var(--rv-v2-paper), var(--rv-v2-mist));
}

.rv-technical-disclosure > summary {
  display: grid;
  grid-template-columns: minmax(160px, 0.34fr) minmax(0, 1fr) 44px;
  width: min(calc(100% - clamp(40px, 5vw, 88px)), 1480px);
  min-height: 112px;
  margin: 0 auto;
  padding: 28px 0;
  align-items: center;
  gap: clamp(18px, 3vw, 40px);
  cursor: pointer;
  list-style: none;
}

.rv-technical-disclosure > summary::-webkit-details-marker {
  display: none;
}

.rv-technical-disclosure > summary > span {
  color: var(--rv-v2-sage);
  font-size: 11px;
  font-weight: 950;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}

.rv-technical-disclosure > summary > strong {
  color: var(--rv-v2-ink) !important;
  font-family: var(--rv-serif);
  font-size: clamp(26px, 2.8vw, 40px);
  line-height: 1.03;
  text-wrap: balance;
}

.rv-technical-disclosure > summary > i {
  position: relative;
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border-radius: 50%;
  background: var(--rv-v2-ink);
}

.rv-technical-disclosure > summary > i::before,
.rv-technical-disclosure > summary > i::after {
  position: absolute;
  width: 14px;
  height: 2px;
  background: #fff;
  content: "";
  transition: transform 180ms ease;
}

.rv-technical-disclosure > summary > i::after {
  transform: rotate(90deg);
}

.rv-technical-disclosure[open] > summary > i::after {
  transform: rotate(0deg);
}

.rv-technical-disclosure > .section {
  border-top: 1px solid var(--rv-v2-line);
}

/* Article spreads: an intentional headline rail and readable story column. */
.rv-family-article
  .section[data-rv-section="editorial"]:not(:is(
    .section--dark,
    .section--conversion,
    .rv-layout-guide,
    .rv-layout-conversion,
    .rv-layout-process,
    .rv-layout-inspiration,
    .rv-layout-contact,
    .rv-layout-verify
  )) {
  background: var(--rv-v2-paper);
}

.rv-family-article
  .section[data-rv-section="editorial"]:not(:is(
    .section--dark,
    .section--conversion,
    .rv-layout-guide,
    .rv-layout-conversion,
    .rv-layout-process,
    .rv-layout-inspiration,
    .rv-layout-contact,
    .rv-layout-verify
  )):nth-of-type(even) {
  background:
    linear-gradient(90deg, var(--rv-v2-mist) 0 31%, #fff 31% 100%);
}

.rv-family-article .rv-layout-editorial > .rv-container {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 18px clamp(24px, 4.5vw, 72px);
  width: min(calc(100% - clamp(40px, 7vw, 112px)), 1240px);
}

.rv-family-article .rv-layout-editorial > .rv-container > :is(.section-heading, h2:first-child) {
  grid-column: 1 / 6;
  align-self: start;
}

.rv-family-article .rv-layout-editorial > .rv-container > :not(.section-heading):not(h2:first-child) {
  grid-column: 6 / -1;
  width: 100%;
  max-width: 76ch;
}

.rv-family-article .rv-layout-editorial[data-rv-media="photo"] > .rv-container,
.rv-family-article .rv-layout-inspiration > .rv-container {
  display: block;
}

.rv-family-article .rv-layout-editorial[data-rv-density="long"] > .rv-container > p {
  padding-bottom: 18px;
  border-bottom: 1px solid var(--rv-v2-line);
}

/* City and service pages alternate distinct scenes rather than repeating one
   generic white two-column section all the way down the page. */
body:is(.rv-family-city-service, .rv-family-city-hub, .rv-family-area-directory)
  .section[data-rv-section="editorial"][data-rv-media="none"]:nth-of-type(odd) {
  background:
    repeating-linear-gradient(90deg, rgba(60, 116, 104, 0.045) 0 1px, transparent 1px 110px),
    linear-gradient(135deg, #f8faf8, var(--rv-v2-mist));
}

body:is(.rv-family-city-service, .rv-family-city-hub, .rv-family-area-directory)
  .section[data-rv-section="editorial"][data-rv-media="none"]:nth-of-type(even) {
  background:
    radial-gradient(circle at 88% 16%, rgba(217, 86, 34, 0.1), transparent 25%),
    #fff;
}

body:is(.rv-family-city-service, .rv-family-city-hub, .rv-family-area-directory)
  .section[data-rv-section="editorial"] > .rv-container > :is(p, ul, ol) {
  max-width: 76ch;
}

body:is(.rv-family-root-service, .rv-family-service-hub)
  .section[data-rv-section="editorial"][data-rv-media="none"]:not(.section--dark) {
  background: linear-gradient(132deg, var(--rv-v2-paper), #fff 56%, var(--rv-v2-mist));
}

body:is(.rv-family-root-service, .rv-family-service-hub)
  .section[data-rv-section="editorial"][data-rv-density="long"] > .rv-container {
  display: grid;
  grid-template-columns: minmax(260px, 0.72fr) minmax(0, 1.28fr);
  gap: clamp(28px, 5vw, 78px);
}

/* The consultation guide has an eyebrow and an introductory paragraph in its
   title rail. Give each its own desktop row so the generic guide grid cannot
   place both paragraphs on top of one another. */
@media (min-width: 1081px) {
  body.rv-family-consultation
    .section.commercial-consultation-guide.rv-layout-guide > .rv-container > .eyebrow {
    grid-column: 1;
    grid-row: 1;
    align-self: end;
    margin: 0 0 12px;
  }

  body.rv-family-consultation
    .section.commercial-consultation-guide.rv-layout-guide > .rv-container > h2 {
    grid-column: 1;
    grid-row: 2;
  }

  body.rv-family-consultation
    .section.commercial-consultation-guide.rv-layout-guide > .rv-container > p:not(.eyebrow) {
    grid-column: 1;
    grid-row: 3;
    margin: 16px 0 0;
  }

  body.rv-family-consultation
    .section.commercial-consultation-guide.rv-layout-guide > .rv-container > :is(nav, ul, .check-list) {
    grid-column: 2;
    grid-row: 1 / span 3;
  }
}

/* Existing real imagery is promoted and presented with stronger editorial crop. */
body:not(.rv-family-home) .rv-layout-inspiration {
  background: #101412;
}

body:not(.rv-family-home) .rv-layout-inspiration :is(h2, h3, .section-heading h2) {
  color: #fff;
}

body:not(.rv-family-home) .rv-layout-inspiration :is(p, .section-heading p) {
  color: rgba(255, 255, 255, 0.74);
}

body:not(.rv-family-home) .rv-layout-inspiration .inspiration-card {
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.13);
  border-radius: 10px;
  background: #1d2623;
  box-shadow: 0 26px 70px rgba(0, 0, 0, 0.24);
}

body:not(.rv-family-home) .rv-layout-inspiration .inspiration-card img {
  transition: transform 650ms cubic-bezier(0.2, 0.8, 0.2, 1), filter 250ms ease;
}

body:not(.rv-family-home) .rv-layout-inspiration .inspiration-card:hover img {
  filter: saturate(1.04) contrast(1.03);
  transform: scale(1.025);
}

/* Conversion-first consultation pages use the full viewport width efficiently. */
.rv-family-consultation .rv-layout-contact {
  padding-top: clamp(52px, 7vw, 96px);
}

.rv-family-consultation .rv-layout-contact > .rv-container,
.rv-family-consultation .rv-layout-contact > .rv-container.split {
  width: min(calc(100% - clamp(40px, 5vw, 88px)), 1380px);
  max-width: none;
}

.rv-family-consultation .rv-layout-contact > .rv-container > .split {
  width: 100%;
  max-width: none;
}

.rv-family-consultation .rv-layout-contact .lead-card,
.rv-family-consultation .rv-layout-contact .rv-native-form-shell {
  width: 100%;
  max-width: none;
}

/* Dark-surface contract: saved Gutenberg colors cannot create black-on-dark
   headings or white-on-white form copy. */
body:not(.rv-family-home) .section:is(.rv-layout-guide, .rv-layout-conversion, .rv-layout-process, .rv-layout-inspiration, .rv-layout-contact, .rv-layout-verify)
  :is(h1, h2, h3, h4, h5, h6, strong, b):not(.lead-card *):not(.rv-native-form-shell *):not(.planning-panel *):not(.rv-visual-interlude *) {
  color: #fff !important;
}

body:not(.rv-family-home) .section:is(.rv-layout-guide, .rv-layout-conversion, .rv-layout-process, .rv-layout-inspiration, .rv-layout-contact, .rv-layout-verify)
  :is(p, li, dd, label, small):not(.lead-card *):not(.rv-native-form-shell *):not(.planning-panel *):not(.rv-visual-interlude *) {
  color: #dbe5e1 !important;
}

.section:is(.rv-layout-contact, .rv-layout-conversion)
  :is(.lead-card, .rv-native-form-shell, .planning-panel) :is(h1, h2, h3, h4, h5, h6, strong, b, label, legend) {
  color: var(--rv-v2-ink) !important;
}

.section:is(.rv-layout-contact, .rv-layout-conversion)
  :is(.lead-card, .rv-native-form-shell, .planning-panel) :is(p, li, dd, small) {
  color: rgba(21, 24, 22, 0.74) !important;
}

.section:is(.rv-layout-contact, .rv-layout-conversion) .planning-panel a:not(.rv-button):not(.wp-block-button__link) {
  color: #245c52 !important;
}

.section:is(.rv-layout-contact, .rv-layout-conversion) form {
  color: var(--rv-v2-ink);
}

.section:is(.rv-layout-contact, .rv-layout-conversion) form
  :is(h1, h2, h3, h4, strong, b, label, legend, summary) {
  color: var(--rv-v2-ink) !important;
}

.section:is(.rv-layout-contact, .rv-layout-conversion) form
  :is(p, li, dd, small, .rv-form__help, .rv-form__legal-links) {
  color: rgba(21, 24, 22, 0.74) !important;
}

/* At large breakpoints, use available space; at intermediate widths, remove
   squeezed half-columns before they become awkward. */
@media (min-width: 1280px) {
  body:is(.rv-family-city-service, .rv-family-city-hub, .rv-family-area-directory, .rv-family-service-hub)
    .section[data-rv-section] .section-heading {
    grid-template-columns: minmax(300px, 0.78fr) minmax(0, 1.22fr);
    gap: clamp(42px, 7vw, 110px);
  }

  body:is(.rv-family-city-service, .rv-family-city-hub, .rv-family-area-directory, .rv-family-service-hub)
    .section[data-rv-section] .section-heading > p:not(.eyebrow) {
    max-width: 72ch;
  }
}

@media (max-width: 1080px) {
  body.rv-family-consultation
    .section.commercial-consultation-guide.rv-layout-guide > .rv-container {
    grid-template-columns: 1fr;
    align-items: start;
    gap: 18px;
  }

  body.rv-family-consultation
    .section.commercial-consultation-guide.rv-layout-guide > .rv-container
    > :is(.eyebrow, h2, p, nav, ul, .check-list) {
    grid-column: 1 !important;
    grid-row: auto !important;
    width: 100%;
    max-width: 100%;
  }

  body.rv-family-consultation
    .section.commercial-consultation-guide.rv-layout-guide > .rv-container > :is(.eyebrow, p:not(.eyebrow)) {
    margin: 0;
  }

  .rv-pathway-visual {
    grid-template-columns: 1fr;
  }

  .rv-pathway-visual__heading > strong {
    max-width: 24ch;
  }

  .rv-family-article .rv-layout-editorial > .rv-container,
  body:is(.rv-family-root-service, .rv-family-service-hub)
    .section[data-rv-section="editorial"][data-rv-density="long"] > .rv-container {
    display: grid;
    grid-template-columns: 1fr;
    gap: 20px;
  }

  .rv-family-article .rv-layout-editorial > .rv-container > * {
    grid-column: 1 / -1 !important;
    max-width: 76ch;
  }
}

@media (max-width: 800px) {
  body:is(
    .rv-family-article,
    .rv-family-city-service,
    .rv-family-city-hub,
    .rv-family-area-directory,
    .rv-family-root-service,
    .rv-family-service-hub,
    .rv-family-consultation,
    .rv-family-page
  ) .section[data-rv-section] > .rv-container,
  .rv-technical-disclosure > summary {
    width: min(calc(100% - 36px), 1480px);
  }

  .rv-pathway-visual {
    margin-top: 24px;
    padding: 24px;
  }

  .rv-pathway-visual ol {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding-top: 0;
  }

  .rv-pathway-visual ol::before,
  .rv-pathway-visual ol::after,
  .rv-pathway-visual li::before {
    content: none;
  }

  .rv-technical-disclosure > summary {
    grid-template-columns: 1fr 42px;
    gap: 8px 18px;
  }

  .rv-technical-disclosure > summary > span {
    grid-column: 1;
  }

  .rv-technical-disclosure > summary > strong {
    grid-column: 1;
  }

  .rv-technical-disclosure > summary > i {
    grid-column: 2;
    grid-row: 1 / span 2;
  }

  .rv-family-article
    .section[data-rv-section="editorial"]:not(:is(
      .section--dark,
      .section--conversion,
      .rv-layout-guide,
      .rv-layout-conversion,
      .rv-layout-process,
      .rv-layout-inspiration,
      .rv-layout-contact,
      .rv-layout-verify
    )):nth-of-type(even) {
    background: linear-gradient(180deg, var(--rv-v2-mist) 0 18%, #fff 18% 100%);
  }
}

@media (max-width: 560px) {
  .rv-reading-progress {
    top: 0;
  }

  .rv-pathway-visual {
    border-radius: 9px;
  }

  .rv-pathway-visual ol {
    grid-template-columns: 1fr;
  }

  .rv-pathway-visual li {
    grid-template-columns: 42px minmax(0, 1fr);
    min-height: 72px;
    align-items: center;
    gap: 12px;
  }

  .rv-pathway-visual li > span,
  .rv-pathway-visual li > strong {
    align-self: center;
  }

  .rv-technical-disclosure > summary {
    min-height: 96px;
    padding: 22px 0;
  }

  .rv-technical-disclosure > summary > strong {
    font-size: 25px;
  }
}

/* --------------------------------------------------------------------------
   Release 1.1.55: visual-contract and services-hub editorial repair

   The full viewport sweep found failures that overflow checks cannot see:
   inherited black copy on dark blocks, a progress bar floating through the
   document, repeated qualitative diagrams, and long service-hub tracks with
   no photographic rhythm. These rules repair the shared causes while keeping
   heroes, destinations, forms, and saved WordPress content unchanged.
   -------------------------------------------------------------------------- */

/* A section explicitly authored as dark must remain readable even when its
   semantic role is the generic editorial role. Bright nested cards are reset
   immediately below so their form and card copy remains dark on white. */
.section--dark :is(h1, h2, h3, h4, h5, h6, .wp-block-heading, strong, b) {
  color: var(--rv-on-dark-heading) !important;
}

.section--dark :is(p, li, dt, dd, small, figcaption, label, legend) {
  color: var(--rv-on-dark-body) !important;
}

.section--dark a:not(.rv-button):not(.wp-block-button__link) {
  color: #fff !important;
  text-decoration-color: var(--rv-on-dark-kicker);
  text-underline-offset: 3px;
}

.section--dark :is(
  .planning-panel,
  .feature-card,
  .service-card,
  .lead-card,
  .rv-native-form-shell,
  .wp-block-table
) :is(h1, h2, h3, h4, h5, h6, .wp-block-heading, strong, b, label, legend) {
  color: var(--rv-v2-ink) !important;
}

.section--dark :is(
  .planning-panel,
  .feature-card,
  .service-card,
  .lead-card,
  .rv-native-form-shell,
  .wp-block-table
) :is(p, li, dt, dd, small, figcaption) {
  color: rgba(21, 24, 22, 0.76) !important;
}

.section--dark :is(
  .planning-panel,
  .feature-card,
  .service-card,
  .lead-card,
  .rv-native-form-shell,
  .wp-block-table
) a:not(.rv-button):not(.wp-block-button__link) {
  color: #245c52 !important;
}

/* The services selector is a decision page, so the branch choice now follows
   the hero and reads as a photographic pair rather than two empty text cards. */
body.page-id-6 #choose-a-branch {
  overflow: hidden;
  background:
    radial-gradient(circle at 96% 4%, rgba(55, 94, 87, 0.12), transparent 29%),
    linear-gradient(145deg, #fbfaf7 0%, #f1f5f2 100%);
}

body.page-id-6 #choose-a-branch .section-heading {
  align-items: start;
  margin-bottom: clamp(30px, 4vw, 52px);
}

body.page-id-6 #choose-a-branch .lane-choice-grid {
  gap: clamp(18px, 2.6vw, 34px);
}

body.page-id-6 #choose-a-branch .lane-choice-card {
  display: flex;
  min-height: 0;
  padding: 0;
  flex-direction: column;
  gap: 15px;
  border-radius: 12px;
}

body.page-id-6 #choose-a-branch .lane-choice-card__media,
body.page-id-6 #choose-a-branch .lane-choice-card__media > picture {
  display: block;
  width: 100%;
  height: clamp(220px, 21vw, 310px);
  overflow: hidden;
}

body.page-id-6 #choose-a-branch .lane-choice-card__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: filter 260ms ease, transform 650ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

body.page-id-6 #choose-a-branch .lane-choice-card:hover .lane-choice-card__media img,
body.page-id-6 #choose-a-branch .lane-choice-card:focus-visible .lane-choice-card__media img {
  filter: saturate(1.04) contrast(1.03);
  transform: scale(1.022);
}

body.page-id-6 #choose-a-branch .lane-choice-card > :not(.lane-choice-card__media) {
  margin-right: clamp(22px, 3vw, 36px);
  margin-left: clamp(22px, 3vw, 36px);
}

body.page-id-6 #choose-a-branch .lane-choice-card__eyebrow {
  margin-top: 12px;
}

body.page-id-6 #choose-a-branch .lane-choice-card strong {
  font-size: clamp(31px, 3.5vw, 47px);
}

body.page-id-6 #choose-a-branch .lane-choice-card ul {
  flex: 1;
}

body.page-id-6 #choose-a-branch .lane-choice-card__action {
  margin-bottom: clamp(24px, 3vw, 36px);
}

/* The generic long-section two-track grid squeezed media and tables into a
   narrow rail while leaving the opposite half empty. These audited service
   modules use deliberate full-width editorial compositions instead. */
body.page-id-6 :is(
  #decision-guidance,
  #residential-services,
  #commercial-services,
  #project-fit,
  #permit-readiness,
  #consultation-ready
).rv-layout-editorial > .rv-container {
  width: min(calc(100% - clamp(40px, 5vw, 80px)), 1440px);
  display: block;
}

body.page-id-6 #decision-guidance .section-heading {
  align-items: start;
}

body.page-id-6 #decision-guidance .service-media {
  width: 100%;
  max-width: none;
  margin: 0 0 clamp(44px, 6vw, 76px);
  overflow: hidden;
  border-radius: 12px;
  box-shadow: 0 26px 72px rgba(20, 34, 30, 0.13);
}

body.page-id-6 #decision-guidance .service-media img {
  display: block;
  width: 100%;
  aspect-ratio: 21 / 8;
  object-fit: cover;
  object-position: center;
}

body.page-id-6 #decision-guidance .service-media figcaption {
  padding: 12px 16px;
  background: #17201e;
  color: #dbe5e1;
  font-size: 12px;
  line-height: 1.5;
}

body.page-id-6 #decision-guidance > .rv-container > h3,
body.page-id-6 #project-fit > .rv-container > h3 {
  max-width: 22ch;
  margin: clamp(40px, 5vw, 68px) 0 22px;
  font-family: var(--rv-serif);
  font-size: clamp(28px, 3vw, 40px);
  line-height: 1.02;
}

body.page-id-6 #decision-guidance > .rv-container > .wp-block-columns:not(:has(img)) {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

body.page-id-6 #decision-guidance > .rv-container > .wp-block-columns > .wp-block-column {
  min-height: 100%;
  padding: clamp(22px, 2.6vw, 32px);
  border: 1px solid rgba(21, 24, 22, 0.11);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 18px 46px rgba(19, 32, 28, 0.07);
}

/* Residential and commercial service lists become compact navigation cards.
   Their surrounding copy occupies a useful rail instead of being squeezed
   into a few words per line beside an otherwise empty half-page. */
@media (min-width: 1081px) {
  body.page-id-6 :is(#residential-services, #commercial-services) > .rv-container {
    display: grid !important;
    grid-template-columns: minmax(290px, 0.7fr) minmax(0, 1.3fr);
    grid-template-rows: auto auto auto 1fr;
    align-items: start;
    gap: 14px clamp(38px, 6vw, 88px);
  }

  body.page-id-6 :is(#residential-services, #commercial-services) > .rv-container > .eyebrow {
    grid-column: 1;
    grid-row: 1;
  }

  body.page-id-6 :is(#residential-services, #commercial-services) > .rv-container > h2 {
    grid-column: 1;
    grid-row: 2;
    max-width: 13ch;
  }

  body.page-id-6 :is(#residential-services, #commercial-services) > .rv-container > p {
    grid-column: 1;
    grid-row: 3;
    max-width: 48ch;
  }

  body.page-id-6 :is(#residential-services, #commercial-services) > .rv-container > .wp-block-buttons {
    grid-column: 1;
    grid-row: 4;
    align-self: end;
  }

  body.page-id-6 :is(#residential-services, #commercial-services) > .rv-container > .service-selector-list {
    grid-column: 2;
    grid-row: 1 / span 4;
  }
}

body.page-id-6 :is(#residential-services, #commercial-services) .service-selector-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  list-style: none;
}

body.page-id-6 :is(#residential-services, #commercial-services) .service-selector-list > li {
  min-height: 138px;
  margin: 0;
  padding: 22px;
  border: 1px solid rgba(21, 24, 22, 0.11);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.92);
  color: rgba(21, 24, 22, 0.74) !important;
  box-shadow: 0 15px 38px rgba(19, 32, 28, 0.065);
  line-height: 1.58;
}

body.page-id-6 :is(#residential-services, #commercial-services) .service-selector-list > li::before {
  content: none !important;
}

body.page-id-6 :is(#residential-services, #commercial-services) .service-selector-list a {
  color: #245c52 !important;
  font-weight: 900;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}

body.page-id-6 #commercial-services .service-selector-list > li {
  border-color: rgba(255, 255, 255, 0.14);
  background: rgba(255, 255, 255, 0.095);
  color: #dbe5e1 !important;
  box-shadow: 0 18px 44px rgba(0, 0, 0, 0.16);
}

body.page-id-6 #commercial-services .service-selector-list a {
  color: #fff !important;
  text-decoration-color: #ffb07c;
}

/* The project-fit table and its follow-up note use the whole reading measure. */
@media (min-width: 901px) {
  body.page-id-6 #project-fit > .rv-container {
    display: grid !important;
    grid-template-columns: minmax(280px, 0.72fr) minmax(0, 1.28fr);
    gap: 20px clamp(40px, 7vw, 96px);
  }

  body.page-id-6 #project-fit > .rv-container > h2:first-child,
  body.page-id-6 #project-fit > .rv-container > h3 {
    grid-column: 1;
  }

  body.page-id-6 #project-fit > .rv-container > p:first-of-type,
  body.page-id-6 #project-fit > .rv-container > p:last-of-type {
    grid-column: 2;
    max-width: 72ch;
    margin-top: 0;
  }

  body.page-id-6 #project-fit > .rv-container > .service-fit-table {
    grid-column: 1 / -1;
    width: 100%;
  }
}

/* Permit readiness is intentionally dark, but its source references and packet
   now scan as cards separated by a relevant planning image. */
body.page-id-6 #permit-readiness .section-heading {
  align-items: start;
}

body.page-id-6 #permit-readiness .section-heading > .rv-rhythm-insert {
  margin-top: clamp(32px, 4vw, 54px);
}

body.page-id-6 #permit-readiness > .rv-container > h3 {
  max-width: 28ch;
  margin: clamp(42px, 6vw, 78px) 0 22px;
  font-family: var(--rv-serif);
  font-size: clamp(27px, 2.8vw, 39px);
  line-height: 1.04;
}

body.page-id-6 #permit-readiness > .rv-container > .check-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  max-width: none;
  margin-top: 0;
}

body.page-id-6 #permit-readiness > .rv-container > .check-list > li {
  min-height: 128px;
  padding: 22px 22px 22px 54px;
  border: 1px solid rgba(255, 255, 255, 0.13);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.075);
  box-shadow: 0 18px 44px rgba(0, 0, 0, 0.14);
}

body.page-id-6 #permit-readiness > .rv-container > .wp-block-columns {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

body.page-id-6 #permit-readiness > .rv-container > .wp-block-columns > .wp-block-column {
  min-height: 100%;
  padding: clamp(22px, 2.5vw, 31px);
  border: 1px solid rgba(255, 255, 255, 0.13);
  border-radius: 9px;
  background: linear-gradient(145deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.045));
  box-shadow: 0 18px 46px rgba(0, 0, 0, 0.15);
}

body.page-id-6 #permit-readiness > .rv-container > .wp-block-columns .check-list {
  margin-top: 18px;
}

/* The first-response module ends with two real destinations. A planning scene,
   compact checklist board, and non-sticky request cards create a deliberate
   conversion sequence without changing either form link. */
body.page-id-6 #consultation-ready > .rv-container > h2:first-child {
  max-width: 16ch;
}

body.page-id-6 #consultation-ready > .rv-container > .rv-rhythm-insert {
  width: 100%;
  max-width: none;
  margin: clamp(34px, 5vw, 64px) 0;
}

body.page-id-6 #consultation-ready > .rv-container > h3 {
  max-width: 18ch;
  margin: clamp(38px, 5vw, 64px) 0 20px;
  font-family: var(--rv-serif);
  font-size: clamp(28px, 3vw, 40px);
  line-height: 1.03;
}

body.page-id-6 #consultation-ready > .rv-container > .check-list {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 22px;
  max-width: none;
  margin: 30px 0;
  padding: clamp(22px, 3vw, 34px);
  border: 1px solid rgba(55, 94, 87, 0.14);
  border-radius: 10px;
  background: linear-gradient(135deg, #f7faf8, #eef4f1);
}

body.page-id-6 #consultation-ready .conversion-choice-grid {
  gap: clamp(16px, 2.5vw, 28px);
  margin-top: clamp(34px, 5vw, 62px);
}

body.page-id-6 #consultation-ready .planning-panel {
  position: relative;
  top: auto;
  display: grid;
  min-height: 270px;
  padding: clamp(24px, 3vw, 36px);
  align-content: start;
}

body.page-id-6 #consultation-ready .planning-panel .wp-block-buttons {
  align-self: end;
  margin-top: auto;
  padding-top: 24px;
}

/* The short scope summary belongs near the close, where it now reads as a
   deliberate magazine pull-quote instead of an orphaned paragraph. */
body.page-id-6 #remodeling-services-final-check {
  overflow: hidden;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  background:
    radial-gradient(circle at 92% 10%, rgba(217, 86, 34, 0.2), transparent 32%),
    linear-gradient(135deg, #111210, #1e2a27 62%, #2b4942);
  color: #fff;
}

body.page-id-6 #remodeling-services-final-check > .rv-container {
  display: grid;
  grid-template-columns: minmax(260px, 0.72fr) minmax(0, 1.28fr);
  align-items: center;
  gap: clamp(28px, 6vw, 88px);
}

body.page-id-6 #remodeling-services-final-check h2 {
  max-width: 12ch;
  color: #fff;
}

body.page-id-6 #remodeling-services-final-check p {
  max-width: 70ch;
  margin: 0;
  padding: clamp(24px, 3vw, 36px);
  border: 1px solid rgba(255, 255, 255, 0.13);
  border-left: 4px solid #ffb07c;
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.075);
  color: #dbe5e1;
}

@media (max-width: 1180px) {
  body.page-id-6 #permit-readiness > .rv-container > .wp-block-columns {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body.page-id-6 #permit-readiness > .rv-container > .wp-block-columns > .wp-block-column:last-child {
    grid-column: 1 / -1;
  }
}

@media (max-width: 1080px) {
  body.page-id-6 :is(#residential-services, #commercial-services) .service-selector-list {
    margin-top: 28px;
  }

  body.page-id-6 #decision-guidance > .rv-container > .wp-block-columns:not(:has(img)) {
    grid-template-columns: 1fr;
  }

  body.page-id-6 #decision-guidance .service-media img {
    aspect-ratio: 16 / 9;
  }

  body.page-id-6 #remodeling-services-final-check > .rv-container {
    grid-template-columns: 1fr;
  }

  body.page-id-6 #remodeling-services-final-check h2 {
    max-width: 18ch;
  }
}

@media (max-width: 700px) {
  body.page-id-6 #choose-a-branch .lane-choice-grid,
  body.page-id-6 :is(#residential-services, #commercial-services) .service-selector-list,
  body.page-id-6 #permit-readiness > .rv-container > .check-list,
  body.page-id-6 #permit-readiness > .rv-container > .wp-block-columns,
  body.page-id-6 #consultation-ready > .rv-container > .check-list {
    grid-template-columns: 1fr;
  }

  body.page-id-6 #permit-readiness > .rv-container > .wp-block-columns > .wp-block-column:last-child {
    grid-column: auto;
  }

  body.page-id-6 #choose-a-branch .lane-choice-card__media,
  body.page-id-6 #choose-a-branch .lane-choice-card__media > picture {
    height: auto;
    aspect-ratio: 16 / 10;
  }

  body.page-id-6 :is(#residential-services, #commercial-services) .service-selector-list > li,
  body.page-id-6 #permit-readiness > .rv-container > .check-list > li {
    min-height: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.page-id-6 #choose-a-branch .lane-choice-card__media img {
    transition: none !important;
    transform: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .rv-reading-progress,
  .rv-pathway-visual ol::after,
  .rv-technical-disclosure > summary > i::after,
  body:not(.rv-family-home) .rv-layout-inspiration .inspiration-card img {
    animation: none !important;
    transition: none !important;
  }

  .rv-pathway-visual ol::after {
    transform: scaleX(1);
  }

  body:not(.rv-family-home) .rv-layout-inspiration .inspiration-card:hover img {
    transform: none;
  }
}

@media print {
  .rv-reading-progress,
  .rv-technical-disclosure > summary > i {
    display: none !important;
  }

  .rv-technical-disclosure > summary {
    min-height: 0;
    padding-bottom: 12px;
  }

  .rv-technical-disclosure:not([open]) > :not(summary) {
    display: block !important;
  }
}

/* --------------------------------------------------------------------------
   Release 1.1.52: audited visual-rhythm repair

   These rules are intentionally limited to the deep-page families and
   release-owned visual components. Heroes, forms, saved content, and the
   approved homepage remain outside this layer.
   -------------------------------------------------------------------------- */

/* A long service-hub heading can sit inside an outer editorial grid. Do not
   apply a second two-column heading grid inside that narrow first track. */
@media (min-width: 1081px) {
  body:is(.rv-family-root-service, .rv-family-service-hub)
    .section[data-rv-section="editorial"][data-rv-density="long"]
    > .rv-container
    > .section-heading {
    display: block;
    min-width: 0;
    align-self: start;
  }

  body:is(.rv-family-root-service, .rv-family-service-hub)
    .section[data-rv-section="editorial"][data-rv-density="long"]
    > .rv-container
    > .section-heading
    > .eyebrow {
    margin: 0 0 16px;
  }

  body:is(.rv-family-root-service, .rv-family-service-hub)
    .section[data-rv-section="editorial"][data-rv-density="long"]
    > .rv-container
    > .section-heading
    > h2 {
    max-width: 15ch;
  }

  body:is(.rv-family-root-service, .rv-family-service-hub)
    .section[data-rv-section="editorial"][data-rv-density="long"]
    > .rv-container
    > .section-heading
    > p:not(.eyebrow) {
    width: 100%;
    max-width: 58ch;
    margin: 18px 0 0;
  }
}

/* The expanded commercial brief has eight evidence cards. Two readable cards
   in its content rail are preferable to three 175px text columns. */
@media (min-width: 801px) {
  body:is(.rv-family-service-hub, .rv-family-root-service, .rv-family-city-service)
    .rv-layout-record
    > .rv-container
    > .feature-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Long article lists become an editorial decision board rather than one
   unbroken manuscript column. The content and sequence remain unchanged. */
body.rv-family-article
  .section[data-rv-density="long"]
  > .rv-container
  > .section-heading:has(> .planning-steps) {
  display: block;
  grid-column: 1 / -1;
  width: 100%;
  max-width: none;
}

body.rv-family-article
  .section[data-rv-density="long"]
  > .rv-container
  > .section-heading:has(> .planning-steps)
  > h2 {
  max-width: 18ch;
}

body.rv-family-article
  .section[data-rv-density="long"]
  > .rv-container
  > .section-heading:has(> .planning-steps)
  > p:first-of-type {
  max-width: 74ch;
  margin: 22px 0 34px auto;
  font-size: clamp(16px, 1.3vw, 18px);
  line-height: 1.72;
}

body.rv-family-article
  .section[data-rv-density="long"]
  .section-heading
  > .planning-steps {
  counter-reset: rv-article-decision;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  max-width: none;
  margin: 0;
  padding: 0;
  list-style: none;
}

body.rv-family-article
  .section[data-rv-density="long"]
  .section-heading
  > .planning-steps
  > li {
  counter-increment: rv-article-decision;
  position: relative;
  min-height: 220px;
  margin: 0;
  padding: clamp(66px, 6vw, 82px) clamp(22px, 2.6vw, 32px) clamp(24px, 2.8vw, 34px);
  overflow: hidden;
  border: 1px solid rgba(21, 24, 22, 0.11);
  border-radius: 10px;
  background:
    radial-gradient(circle at 100% 0%, rgba(60, 116, 104, 0.12), transparent 34%),
    rgba(255, 255, 255, 0.96);
  box-shadow: 0 18px 46px rgba(19, 32, 28, 0.07);
  color: rgba(21, 24, 22, 0.76);
  line-height: 1.65;
}

body.rv-family-article
  .section[data-rv-density="long"]
  .section-heading
  > .planning-steps
  > li::before {
  position: absolute;
  top: 24px;
  left: clamp(22px, 2.6vw, 32px);
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--rv-v2-ink), var(--rv-family-accent, var(--rv-v2-sage)));
  color: #fff;
  content: counter(rv-article-decision, decimal-leading-zero);
  font-size: 10px;
  font-weight: 950;
  letter-spacing: 0.08em;
}

body.rv-family-article
  .section[data-rv-density="long"]
  .section-heading:has(> .planning-steps)
  > :is(h3, .planning-steps ~ h3) {
  max-width: 18ch;
  margin-top: clamp(42px, 6vw, 72px);
  font-family: var(--rv-serif);
  font-size: clamp(27px, 2.7vw, 38px);
  line-height: 1.04;
}

body.rv-family-article
  .section[data-rv-density="long"]
  .section-heading:has(> .planning-steps)
  > h3
  ~ :is(p, ul, ol):not(.planning-steps) {
  max-width: 74ch;
  margin-right: 0;
  margin-left: auto;
}

/* Shared shell lets injected visuals sit between sections even when the saved
   block's inner container is deliberately narrower. */
.rv-rhythm-insert {
  position: relative;
  z-index: 2;
  width: min(calc(100% - clamp(40px, 7vw, 112px)), 1280px);
  margin: clamp(36px, 5.5vw, 72px) auto 4px;
}

.rv-rhythm-insert + .rv-rhythm-insert {
  margin-top: 18px;
}

/* Paragraph-aware scenes can be inserted inside a saved heading group. When
   that group is a two-track editorial grid, the scene must span both tracks. */
.section-heading > .rv-rhythm-insert {
  grid-column: 1 / -1;
  width: 100%;
  max-width: 1280px;
}

/* Work-stage spread: one relevant natural scene plus a compact planning lens.
   No visible warning overlay is placed on the image. */
.rv-editorial-scene {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.46fr) minmax(250px, 0.54fr);
  min-height: 430px;
  margin: 0;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 12px;
  background: #17201e;
  color: #fff;
  box-shadow: 0 28px 78px rgba(19, 32, 28, 0.16);
}

.rv-editorial-scene__media,
.rv-editorial-scene__media > picture {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 430px;
}

.rv-editorial-scene__media img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 430px;
  object-fit: cover;
  object-position: center;
  transition: transform 700ms cubic-bezier(0.2, 0.8, 0.2, 1), filter 260ms ease;
}

.rv-editorial-scene:hover .rv-editorial-scene__media img {
  filter: saturate(1.04) contrast(1.02);
  transform: scale(1.018);
}

.rv-editorial-scene > figcaption {
  position: relative;
  display: grid;
  align-content: end;
  gap: 16px;
  margin: 0;
  padding: clamp(30px, 4vw, 52px);
  background:
    radial-gradient(circle at 100% 0%, rgba(217, 86, 34, 0.24), transparent 36%),
    linear-gradient(145deg, #17201e, #24463f);
  color: #fff;
}

.rv-editorial-scene > figcaption::before {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--rv-v2-copper), #f2a56f, var(--rv-v2-sage));
  content: "";
}

.rv-editorial-scene > figcaption > span {
  color: #ffb07c;
  font-size: 11px;
  font-weight: 950;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.rv-editorial-scene > figcaption > strong {
  max-width: 14ch;
  color: #fff !important;
  font-family: var(--rv-serif);
  font-size: clamp(29px, 3vw, 43px);
  line-height: 1;
  text-wrap: balance;
}

.rv-editorial-scene > figcaption > ul {
  display: grid;
  gap: 0;
  margin: 8px 0 0;
  padding: 0;
  list-style: none;
}

.rv-editorial-scene > figcaption > ul > li {
  display: grid;
  grid-template-columns: 14px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  padding: 11px 0;
  border-top: 1px solid rgba(255, 255, 255, 0.14);
  color: rgba(255, 255, 255, 0.78) !important;
  font-size: 13px;
  font-weight: 760;
}

.rv-editorial-scene > figcaption > ul > li::before {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #ffb07c;
  content: "";
}

.rv-editorial-scene--article {
  grid-template-columns: minmax(250px, 0.56fr) minmax(0, 1.44fr);
}

.rv-editorial-scene--article .rv-editorial-scene__media {
  order: 2;
}

.rv-editorial-scene--article > figcaption {
  order: 1;
}

.rv-editorial-scene--city-service > figcaption {
  background:
    radial-gradient(circle at 0% 100%, rgba(217, 86, 34, 0.2), transparent 40%),
    linear-gradient(145deg, #1a2d29, #31584f);
}

/* A second graphic language for dense hubs: light, ruled, and horizontal so it
   never reads like a duplicate of the dark primary pathway component. */
.rv-visual-interlude {
  position: relative;
  display: grid;
  grid-template-columns: minmax(230px, 0.64fr) minmax(0, 1.36fr);
  gap: clamp(26px, 4vw, 60px);
  padding: clamp(30px, 4.4vw, 58px);
  overflow: hidden;
  border: 1px solid rgba(21, 24, 22, 0.12);
  border-radius: 12px;
  background:
    repeating-linear-gradient(90deg, rgba(60, 116, 104, 0.05) 0 1px, transparent 1px 92px),
    linear-gradient(135deg, #fff, var(--rv-v2-mist));
  box-shadow: 0 22px 64px rgba(19, 32, 28, 0.1);
}

.rv-visual-interlude::before {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--rv-v2-copper), #f2a56f 44%, var(--rv-v2-sage));
  content: "";
  transform: scaleX(0);
  transform-origin: left center;
}

.rv-visual-interlude > header {
  display: grid;
  align-content: center;
  gap: 12px;
}

.rv-visual-interlude > header > span {
  color: var(--rv-v2-sage);
  font-size: 11px;
  font-weight: 950;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.rv-visual-interlude > header > strong {
  max-width: 17ch;
  color: var(--rv-v2-ink) !important;
  font-family: var(--rv-serif);
  font-size: clamp(29px, 3.1vw, 44px);
  line-height: 1;
  text-wrap: balance;
}

.rv-visual-interlude > ol {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
  padding: 30px 0 0;
  list-style: none;
}

.rv-visual-interlude > ol::before {
  position: absolute;
  top: 12px;
  right: 8%;
  left: 8%;
  height: 2px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--rv-v2-copper), #f2a56f, var(--rv-v2-sage));
  content: "";
}

.rv-visual-interlude > ol > li {
  position: relative;
  display: grid;
  min-height: 126px;
  align-content: space-between;
  gap: 22px;
  padding: 24px 18px 20px;
  border: 1px solid rgba(21, 24, 22, 0.1);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.82);
  box-shadow: 0 12px 30px rgba(19, 32, 28, 0.055);
}

.rv-visual-interlude > ol > li::before {
  position: absolute;
  top: -24px;
  left: 50%;
  width: 12px;
  height: 12px;
  border: 4px solid var(--rv-v2-mist);
  border-radius: 50%;
  background: var(--rv-v2-sage);
  content: "";
  transform: translateX(-50%);
}

.rv-visual-interlude > ol > li > span {
  color: #a33f18;
  font-size: 10px;
  font-weight: 950;
  letter-spacing: 0.12em;
}

.rv-visual-interlude > ol > li > strong {
  color: var(--rv-v2-ink) !important;
  font-size: clamp(14px, 1.2vw, 17px);
  line-height: 1.22;
}

.rv-visual-interlude--source {
  background:
    radial-gradient(circle at 92% 8%, rgba(217, 86, 34, 0.11), transparent 30%),
    linear-gradient(135deg, #fbfaf7, #edf3f0);
}

.rv-visual-interlude--compare {
  background:
    repeating-linear-gradient(0deg, rgba(217, 86, 34, 0.045) 0 1px, transparent 1px 72px),
    #fff;
}

@keyframes rv-v2-interlude-line {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

@keyframes rv-v2-scene-enter {
  from { opacity: 0.72; transform: translateY(18px); }
  to { opacity: 1; transform: translateY(0); }
}

@supports (animation-timeline: view()) {
  .rv-visual-interlude::before {
    animation: rv-v2-interlude-line linear both;
    animation-timeline: view();
    animation-range: entry 10% cover 44%;
  }

  .rv-editorial-scene {
    animation: rv-v2-scene-enter linear both;
    animation-timeline: view();
    animation-range: entry 8% cover 34%;
  }
}

@media (max-width: 1080px) {
  .rv-editorial-scene,
  .rv-editorial-scene--article,
  .rv-visual-interlude {
    grid-template-columns: 1fr;
  }

  .rv-editorial-scene--article .rv-editorial-scene__media,
  .rv-editorial-scene--article > figcaption {
    order: initial;
  }

  .rv-editorial-scene > figcaption > strong,
  .rv-visual-interlude > header > strong {
    max-width: 24ch;
  }
}

@media (max-width: 800px) {
  .rv-rhythm-insert {
    width: min(calc(100% - 36px), 1280px);
    margin-top: 34px;
  }

  .rv-editorial-scene,
  .rv-editorial-scene__media,
  .rv-editorial-scene__media > picture,
  .rv-editorial-scene__media img {
    min-height: 0;
  }

  .rv-editorial-scene__media img {
    aspect-ratio: 16 / 10;
  }

  .rv-visual-interlude > ol {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding-top: 0;
  }

  .rv-visual-interlude > ol::before,
  .rv-visual-interlude > ol > li::before {
    content: none;
  }
}

@media (max-width: 640px) {
  body.rv-family-article
    .section[data-rv-density="long"]
    .section-heading
    > .planning-steps,
  .rv-visual-interlude > ol {
    grid-template-columns: 1fr;
  }

  body.rv-family-article
    .section[data-rv-density="long"]
    .section-heading
    > .planning-steps
    > li {
    min-height: 0;
  }

  .rv-editorial-scene,
  .rv-visual-interlude {
    border-radius: 9px;
  }

  .rv-editorial-scene > figcaption,
  .rv-visual-interlude {
    padding: 24px;
  }

  .rv-visual-interlude > ol > li {
    grid-template-columns: 40px minmax(0, 1fr);
    min-height: 72px;
    align-items: center;
    gap: 12px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .rv-editorial-scene,
  .rv-editorial-scene__media img,
  .rv-visual-interlude::before {
    animation: none !important;
    transition: none !important;
    transform: none !important;
  }
}

@media print {
  .rv-editorial-scene,
  .rv-visual-interlude {
    break-inside: avoid;
    box-shadow: none;
  }
}

/* --------------------------------------------------------------------------
   Release 1.1.53: final responsive readability pass

   The full 206-page breakpoint audit exposed three technically scroll-safe
   layouts whose text measure was still too narrow for comfortable reading.
   Keep the saved content and form behavior unchanged while giving those
   components the full track they already have available.
   -------------------------------------------------------------------------- */

/* At tablet widths the commercial record grid retained its desktop column
   assignment, which created an implicit empty rail. Span the available track
   and preserve the useful two-card comparison. City-hub editorial columns
   receive the same full-width treatment before their inner columns divide. */
@media (min-width: 801px) and (max-width: 1080px) {
  body:is(.rv-family-service-hub, .rv-family-root-service, .rv-family-city-service)
    .rv-layout-record
    > .rv-container
    > *,
  body.rv-family-city-hub
    .rv-layout-editorial
    .section-heading
    > .wp-block-columns {
    grid-column: 1 / -1 !important;
    grid-row: auto !important;
    width: 100%;
    min-width: 0;
  }
}

/* The city-hub consultation copy has two cards, so a third empty desktop
   column only narrows the copy beside the lead form. */
@media (min-width: 1081px) {
body.rv-family-city-hub #estimate .feature-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Santa Clara's plan-review module intentionally contains a second direct
   H2 after its checklist. The shared magazine grid positions the first H2 in
   the opening rail; return only the later resource heading to normal flow so
   both headings keep their full measure without occupying the same cell. */
@media (min-width: 801px) {
  body.page-id-6453 #santa-clara-plan-review ~ h2 {
    grid-row: auto;
  }

  body.page-id-6453
    .rv-layout-editorial
    .section-heading
    > .wp-block-columns {
    grid-column: 1 / -1 !important;
    grid-row: auto !important;
    width: 100%;
    min-width: 0;
  }
}

/* The services comparison tables remain semantic tables for assistive
   technology. Visually, small screens use labeled row cards instead of an
   easy-to-miss horizontal scroller with cropped right-side copy. */
@media (max-width: 700px) {
  body.rv-family-service-hub
    :is(#decision-guidance, #project-fit)
    .service-fit-table {
    overflow: visible;
    border: 0;
    background: transparent;
    box-shadow: none;
  }

  body.rv-family-service-hub
    :is(#decision-guidance, #project-fit)
    .service-fit-table
    > table {
    display: block;
    width: 100%;
    min-width: 0;
    background: transparent;
  }

  body.rv-family-service-hub
    :is(#decision-guidance, #project-fit)
    .service-fit-table
    thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }

  body.rv-family-service-hub
    :is(#decision-guidance, #project-fit)
    .service-fit-table
    tbody {
    display: grid;
    gap: 14px;
  }

  body.rv-family-service-hub
    :is(#decision-guidance, #project-fit)
    .service-fit-table
    tr {
    display: grid;
    gap: 0;
    overflow: hidden;
    border: 1px solid rgba(21, 24, 22, 0.11);
    border-radius: 9px;
    background: rgba(255, 255, 255, 0.98);
    box-shadow: 0 16px 38px rgba(19, 32, 28, 0.07);
  }

  body.rv-family-service-hub
    :is(#decision-guidance, #project-fit)
    .service-fit-table
    td {
    display: grid;
    gap: 5px;
    padding: 14px 17px;
    border-top: 1px solid rgba(21, 24, 22, 0.09);
    color: rgba(21, 24, 22, 0.76);
    font-size: 15px;
    line-height: 1.56;
  }

  body.rv-family-service-hub
    :is(#decision-guidance, #project-fit)
    .service-fit-table
    td:first-child {
    border-top: 0;
    color: var(--rv-v2-ink);
    font-family: var(--rv-serif);
    font-size: 21px;
    font-weight: 800;
    line-height: 1.08;
  }

  body.rv-family-service-hub
    :is(#decision-guidance, #project-fit)
    .service-fit-table
    td::before {
    color: #8c3516;
    content: "Detail";
    font-family: var(--rv-sans);
    font-size: 10px;
    font-weight: 950;
    letter-spacing: 0.1em;
    line-height: 1.3;
    text-transform: uppercase;
  }

  body.rv-family-service-hub #decision-guidance .service-fit-table td:nth-child(1)::before {
    content: "Decision signal";
  }

  body.rv-family-service-hub #decision-guidance .service-fit-table td:nth-child(2)::before {
    content: "Residential starting point";
  }

  body.rv-family-service-hub #decision-guidance .service-fit-table td:nth-child(3)::before {
    content: "Commercial starting point";
  }

  body.rv-family-service-hub #decision-guidance .service-fit-table td:nth-child(4)::before {
    content: "Why it matters early";
  }

  body.rv-family-service-hub #project-fit .service-fit-table td:nth-child(1)::before {
    content: "Primary outcome";
  }

  body.rv-family-service-hub #project-fit .service-fit-table td:nth-child(2)::before {
    content: "Recommended starting page";
  }

  body.rv-family-service-hub #project-fit .service-fit-table td:nth-child(3)::before {
    content: "Why it fits";
  }
}

/* --------------------------------------------------------------------------
   Release 1.1.55: sitewide visual-balance and reusable contrast safeguards
   -------------------------------------------------------------------------- */

/* Small accent labels must remain readable at normal-text contrast. The old
   saturated orange was attractive as a rule color, but too dark for 10–14px
   copy on the site's charcoal and green gradient surfaces. */
.section--dark .eyebrow,
.section--conversion .eyebrow,
.readiness-panel--dark > .eyebrow,
.rv-pathway-visual__heading > span,
.rv-pathway-visual li > span,
.rv-layout-process .process-step > span,
.rv-layout-conversion .conversion-flow__step > span,
.section--conversion .conversion-flow__step > span,
.rv-editorial-scene > figcaption > span {
  color: #ffd0b8 !important;
}

/* WordPress Columns renders as flex after the theme's layout rules. Make the
   intended tablet stacking contract explicit so rich split sections cannot
   leave narrow 120px copy rails beside unused space. General editorial
   columns keep two comfortable lanes and let an odd final card fill its row. */
@media (max-width: 1180px) {
  :is(
    .hero__inner,
    .split,
    .service-detail__grid,
    .service-rich-split,
    .readiness-columns,
    .conversion-flow,
    .local-seo
  ).wp-block-columns {
    flex-wrap: wrap !important;
  }

  :is(
    .hero__inner,
    .split,
    .service-detail__grid,
    .service-rich-split,
    .readiness-columns,
    .conversion-flow,
    .local-seo
  ).wp-block-columns > .wp-block-column {
    flex: 1 1 100% !important;
    width: 100%;
    min-width: 0;
  }
}

@media (min-width: 641px) and (max-width: 980px) {
  body:not(.rv-family-legal):not(.rv-family-utility)
    .wp-block-post-content
    > .section:not(.page-hero)
    .wp-block-columns {
    flex-wrap: wrap !important;
  }

  body:not(.rv-family-legal):not(.rv-family-utility)
    .wp-block-post-content
    > .section:not(.page-hero)
    .wp-block-columns:not(:is(
      .hero__inner,
      .split,
      .service-detail__grid,
      .service-rich-split,
      .readiness-columns,
      .conversion-flow,
      .local-seo
    ))
    > .wp-block-column {
    flex: 1 1 min(100%, 320px) !important;
    min-width: 0;
  }
}

@media (max-width: 1180px) {
  :is(
    .hero__inner,
    .split,
    .service-detail__grid,
    .service-rich-split,
    .readiness-columns,
    .conversion-flow,
    .local-seo
  ).wp-block-columns > .wp-block-column {
    flex-basis: 100% !important;
  }
}

/* A dark panel nested inside a light section needs the same contract as an
   entire dark section. This closes the root-service and matcher regressions. */
.readiness-panel--dark :is(h2, h3, h4, strong, b) {
  color: #fff !important;
}

.readiness-panel--dark :is(p, li, dt, dd, small) {
  color: #dbe5e1 !important;
}

.section--conversion:not(:has(.rv-native-form-shell))
  :is(h1, h2, h3, h4, h5, h6, strong, b) {
  color: #fff !important;
}

.section--conversion:not(:has(.rv-native-form-shell))
  :is(p, li, dt, dd, small) {
  color: #dbe5e1 !important;
}

/* The interlude is always a light, self-contained surface, including when it
   sits inside a dark or conversion section. Reset only its title and step
   labels so ancestor readability safeguards cannot turn them white-on-white;
   the kicker remains sage and the numbered accents remain accessible copper. */
:is(
  .section--dark,
  .readiness-panel--dark,
  .section--conversion:not(:has(.rv-native-form-shell))
) .rv-visual-interlude > header > strong,
:is(
  .section--dark,
  .readiness-panel--dark,
  .section--conversion:not(:has(.rv-native-form-shell))
) .rv-visual-interlude > ol > li > strong {
  color: var(--rv-v2-ink) !important;
}

/* Information density is now content-led. Grids still equalize each row, but
   short qualitative labels no longer reserve large empty card interiors. */
.rv-layout-brief .feature-card,
.rv-layout-process .process-step,
.rv-layout-conversion .conversion-flow__step,
.rv-visual-interlude > ol > li {
  min-height: 0;
}

.rv-layout-conversion .conversion-flow__step,
.rv-family-city-service .rv-layout-conversion .conversion-flow__step {
  padding: clamp(20px, 2vw, 27px);
}

.rv-layout-process .process-step {
  padding: clamp(22px, 2.2vw, 28px);
}

/* The branch and final-request cards are Gutenberg flow children. Reset its
   automatic 24px second-child margin so paired cards align at every width. */
body.page-id-6 :is(.lane-choice-grid, .conversion-choice-grid) > * {
  margin-block-start: 0 !important;
}

/* A photo break is deliberately simpler than the numbered planning boards it
   replaces: one relevant scene, one short caption, and three layout variants. */
.rv-rhythm-insert--photo {
  width: 100%;
  max-width: 1320px;
  margin: clamp(30px, 5vw, 68px) 0;
}

.rv-editorial-photo {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.38fr) minmax(260px, 0.62fr);
  min-width: 0;
  margin: 0;
  overflow: hidden;
  border: 1px solid rgba(21, 24, 22, 0.12);
  border-radius: 12px;
  background: #17201e;
  box-shadow: 0 26px 72px rgba(19, 32, 28, 0.15);
}

.rv-editorial-photo__media,
.rv-editorial-photo__media > picture {
  display: block;
  width: 100%;
  min-width: 0;
  height: 100%;
  min-height: clamp(300px, 32vw, 470px);
  overflow: hidden;
}

.rv-editorial-photo__media img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: clamp(300px, 32vw, 470px);
  object-fit: cover;
  object-position: center;
  transition: filter 280ms ease, transform 700ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.rv-editorial-photo:hover .rv-editorial-photo__media img {
  filter: saturate(1.04) contrast(1.025);
  transform: scale(1.018);
}

.rv-editorial-photo > figcaption {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-content: end;
  gap: 15px;
  margin: 0;
  padding: clamp(28px, 4vw, 50px);
  background:
    radial-gradient(circle at 100% 0%, rgba(217, 86, 34, 0.2), transparent 38%),
    linear-gradient(145deg, #17201e, #284b43);
}

.rv-editorial-photo > figcaption::before {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--rv-v2-copper), #f2a56f, var(--rv-v2-sage));
  content: "";
}

.rv-editorial-photo > figcaption > strong {
  max-width: 17ch;
  color: #fff !important;
  font-family: var(--rv-serif);
  font-size: clamp(28px, 3vw, 42px);
  line-height: 1;
  text-wrap: balance;
}

.rv-editorial-photo > figcaption > span {
  max-width: 38ch;
  color: #dbe5e1 !important;
  font-size: 14px;
  line-height: 1.65;
}

.rv-editorial-photo > figcaption > :is(strong, span) {
  width: 100%;
  min-width: 0;
  overflow-wrap: anywhere;
}

.rv-editorial-photo--right .rv-editorial-photo__media {
  order: 2;
}

.rv-editorial-photo--right > figcaption {
  order: 1;
}

.rv-editorial-photo--wide {
  grid-template-columns: 1fr;
}

.rv-editorial-photo--wide .rv-editorial-photo__media,
.rv-editorial-photo--wide .rv-editorial-photo__media > picture,
.rv-editorial-photo--wide .rv-editorial-photo__media img {
  min-height: 0;
  aspect-ratio: 21 / 8;
}

.rv-editorial-photo--wide > figcaption {
  grid-template-columns: minmax(240px, 0.72fr) minmax(0, 1.28fr);
  align-items: center;
  padding-block: clamp(24px, 3vw, 38px);
}

.rv-editorial-photo--wide > figcaption > span {
  max-width: 62ch;
}

/* Article diagrams no longer all look like the same four-card sequence. The
   markup stays semantic and qualitative while subtype-specific geometry gives
   checklists, risk articles, and cost/sequence articles distinct visual cues. */
.rv-pathway-visual--scorecard ol {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  padding-top: 0;
}

.rv-pathway-visual--scorecard ol::before,
.rv-pathway-visual--scorecard ol::after,
.rv-pathway-visual--scorecard li::before {
  content: none;
}

.rv-pathway-visual--scorecard li {
  min-height: 86px;
  grid-template-columns: 38px minmax(0, 1fr);
  align-items: center;
  align-content: center;
}

.rv-pathway-visual--risk {
  background:
    radial-gradient(circle at 88% 14%, rgba(217, 86, 34, 0.28), transparent 34%),
    linear-gradient(135deg, #171312, #34221c 60%, #29433e);
}

.rv-pathway-visual--risk li:nth-child(odd) {
  background: rgba(255, 208, 184, 0.095);
}

.rv-pathway-visual--drivers li {
  min-height: 94px;
  border-top: 0;
  border-right: 0;
  border-bottom: 0;
  border-left: 3px solid #ffd0b8;
  border-radius: 0;
  background: transparent;
  backdrop-filter: none;
}

.rv-pathway-visual--drivers li::before {
  content: none;
}

/* Long articles alternate quiet paper treatments, while their nested heading
   groups use the full available rail instead of creating 250px paragraphs. */
@media (min-width: 1081px) {
  body.rv-family-article
    .rv-layout-editorial
    > .rv-container
    > .section-heading {
    display: block;
    min-width: 0;
  }

  body.rv-family-article
    .rv-layout-editorial
    > .rv-container
    > .section-heading
    > p {
    width: 100%;
    max-width: 58ch;
  }

  body.rv-family-article
    .rv-layout-editorial
    > .rv-container
    > .section-heading:has(> .rv-rhythm-insert--photo) {
    grid-column: 1 / -1;
    width: 100%;
    max-width: none;
  }

  body.rv-family-article
    .rv-layout-editorial
    > .rv-container
    > .section-heading
    > .rv-rhythm-insert--photo {
    width: 100%;
    max-width: none;
  }

  body.rv-family-article
    .rv-layout-editorial
    > .rv-container:has(> .section-heading > .rv-rhythm-insert--photo)
    > :not(.section-heading) {
    grid-column: 1 / -1;
  }

  body.rv-family-article
    .rv-layout-editorial
    > .rv-container:has(> .section-heading > .rv-rhythm-insert--photo)
    > :is(ul, ol) {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px clamp(22px, 3vw, 42px);
    width: 100%;
    max-width: none;
  }
}

body.rv-family-article
  .rv-layout-editorial:not(:is(
    .section--dark,
    .section--conversion,
    .rv-layout-guide,
    .rv-layout-conversion,
    .rv-layout-process,
    .rv-layout-inspiration,
    .rv-layout-contact,
    .rv-layout-verify
  )):nth-of-type(4n + 1) {
  background:
    radial-gradient(circle at 94% 8%, rgba(55, 94, 87, 0.1), transparent 30%),
    #f7f8f5;
}

body.rv-family-article
  .rv-layout-editorial:not(:is(
    .section--dark,
    .section--conversion,
    .rv-layout-guide,
    .rv-layout-conversion,
    .rv-layout-process,
    .rv-layout-inspiration,
    .rv-layout-contact,
    .rv-layout-verify
  )):nth-of-type(4n + 3) {
  border-top: 1px solid rgba(55, 94, 87, 0.12);
  border-bottom: 1px solid rgba(55, 94, 87, 0.12);
  background: #fff;
}

/* The service-area decision record nested a two-card grid inside the narrow
   half of a second grid. Give the complete module one magazine-width canvas. */
body.rv-family-area-directory
  #choose-service-path.rv-layout-matcher
  > .rv-container {
  display: block !important;
  width: min(calc(100% - clamp(40px, 5vw, 80px)), 1380px);
}

body.rv-family-area-directory #choose-service-path .section-heading {
  display: grid;
  grid-template-columns: minmax(280px, 0.78fr) minmax(0, 1.22fr);
  align-items: end;
  gap: 14px clamp(38px, 6vw, 86px);
}

body.rv-family-area-directory #choose-service-path .section-heading > .eyebrow,
body.rv-family-area-directory #choose-service-path .section-heading > h2 {
  grid-column: 1;
}

body.rv-family-area-directory #choose-service-path .section-heading > p {
  grid-column: 2;
  grid-row: 1 / span 2;
  max-width: 66ch;
}

body.rv-family-area-directory #choose-service-path .service-media {
  width: 100%;
  max-width: none;
  margin: clamp(30px, 4vw, 52px) 0;
  overflow: hidden;
  border-radius: 12px;
}

body.rv-family-area-directory #choose-service-path .service-media img {
  display: block;
  width: 100%;
  aspect-ratio: 21 / 8;
  object-fit: cover;
}

body.rv-family-area-directory #choose-service-path > .rv-container > .feature-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  width: 100%;
  max-width: none;
}

/* --------------------------------------------------------------------------
   Release 1.1.57 foundation / 1.1.58 responsive hardening: text-only magazine shells

   These audited modules needed structural contrast, not another repeated
   four-step diagram or a clustered stock photo. The supplemental classes keep
   their original semantic role and copy while reusing the established record,
   verification, decision, and conversion visual language.
   -------------------------------------------------------------------------- */

.rv-layout-record--text-only,
.rv-layout-verify--text-only,
.rv-layout-decisions--text-only,
.rv-layout-contact--cta {
  position: relative;
  overflow: hidden;
}

.rv-layout-record--text-only > .rv-container,
.rv-layout-verify--text-only > .rv-container,
.rv-layout-decisions--text-only > .rv-container {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  width: min(100%, var(--rv-container, 1560px));
  gap: clamp(18px, 2.2vw, 34px);
  align-items: start;
}

.rv-layout-record--text-only > .rv-container > *,
.rv-layout-verify--text-only > .rv-container > *,
.rv-layout-decisions--text-only > .rv-container > * {
  min-width: 0;
}

/* Light editorial record: a strong title rail with a useful content field. */
.rv-layout-record--text-only > .rv-container > :is(.eyebrow, h2:first-of-type, .section-heading) {
  grid-column: 1 / 5 !important;
}

.rv-layout-record--text-only > .rv-container > .eyebrow {
  grid-column: 1 / 5 !important;
  grid-row: 1 !important;
}

.rv-layout-record--text-only > .rv-container > h2:first-of-type {
  grid-row: 2;
  max-width: 11ch;
}

.rv-layout-record--text-only > .rv-container > .section-heading {
  grid-row: 1 / span 2 !important;
  align-self: start;
}

.rv-layout-record--text-only > .rv-container > .section-heading,
.rv-layout-verify--text-only > .rv-container > .section-heading,
.rv-layout-decisions--text-only > .rv-container > .section-heading {
  display: block !important;
  grid-template-columns: 1fr !important;
}

.rv-layout-record--text-only > .rv-container > .section-heading > *,
.rv-layout-verify--text-only > .rv-container > .section-heading > *,
.rv-layout-decisions--text-only > .rv-container > .section-heading > * {
  display: block !important;
  grid-column: 1 !important;
  grid-row: auto !important;
  width: auto !important;
  max-width: none !important;
}

.rv-layout-record--text-only > .rv-container > p:first-of-type:not(.eyebrow) {
  grid-column: 5 / -1 !important;
  grid-row: 1 / span 2 !important;
  align-self: stretch;
}

.rv-layout-record--text-only > .rv-container > :is(.service-selector-list, .wp-block-columns) {
  grid-column: 5 / -1 !important;
  width: 100%;
  max-width: none;
}

.rv-layout-record--text-only > .rv-container > :is(h3, p:not(:first-of-type), .wp-block-buttons) {
  grid-column: 5 / -1 !important;
}

.rv-layout-record--text-only .service-selector-list,
.rv-layout-verify--text-only .service-selector-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.rv-layout-record--text-only .service-selector-list > li,
.rv-layout-verify--text-only .service-selector-list > li {
  position: relative;
  min-height: 100%;
  margin: 0;
  padding: 18px 20px 18px 44px;
  border: 1px solid rgba(55, 94, 87, 0.14);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.82);
  box-shadow: 0 12px 34px rgba(22, 34, 31, 0.055);
}

.rv-layout-record--text-only .service-selector-list > li::before,
.rv-layout-verify--text-only .service-selector-list > li::before {
  position: absolute;
  top: 22px;
  left: 20px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--rv-copper), var(--rv-family-accent, var(--rv-sage)));
  content: "";
}

/* Dark specification panel: clear contrast and a full-width evidence rail. */
.rv-layout-verify--text-only {
  background:
    radial-gradient(circle at 88% 12%, rgba(77, 127, 116, 0.28), transparent 34%),
    linear-gradient(118deg, #111310 0%, #173029 100%) !important;
  color: #fff;
}

.rv-layout-verify--text-only > .rv-container > :is(.eyebrow, h2:first-of-type) {
  grid-column: 1 / 5 !important;
}

.rv-layout-verify--text-only > .rv-container > .eyebrow {
  grid-row: 1 !important;
  color: var(--rv-on-dark-kicker, #ffd0b8);
}

.rv-layout-verify--text-only > .rv-container > h2:first-of-type {
  grid-row: 2 !important;
  max-width: 12ch;
  color: #fff;
}

.rv-layout-verify--text-only > .rv-container > p:first-of-type:not(.eyebrow) {
  grid-column: 5 / -1 !important;
  grid-row: 1 !important;
}

.rv-layout-verify--text-only > .rv-container > :is(.service-selector-list, h3, .check-list, .wp-block-buttons) {
  grid-column: 5 / -1 !important;
  width: 100%;
  max-width: none;
}

.rv-layout-verify--text-only > .rv-container > h3 {
  margin: 8px 0 0;
  color: #fff;
}

.rv-layout-verify--text-only > .rv-container > .check-list {
  grid-row: auto !important;
  margin: 0;
}

body .section.rv-layout-verify--text-only > .rv-container > h3 + .check-list {
  border-color: rgba(255, 255, 255, 0.14) !important;
  background: rgba(255, 255, 255, 0.08) !important;
  box-shadow: 0 18px 42px rgba(0, 0, 0, 0.14);
}

.rv-layout-verify--text-only > .rv-container > p:last-of-type {
  grid-column: 5 / -1 !important;
  grid-row: auto !important;
}

.rv-layout-verify--text-only .service-selector-list > li {
  border-color: rgba(255, 255, 255, 0.14);
  background: rgba(255, 255, 255, 0.075);
  color: var(--rv-on-dark-body, rgba(255, 255, 255, 0.82));
  box-shadow: 0 16px 34px rgba(0, 0, 0, 0.12);
}

.rv-layout-verify--text-only .service-selector-list a,
.rv-layout-verify--text-only .service-selector-list strong {
  color: #fff;
}

/* Decision module: retain the copy while changing repeated columns into a
   numbered editorial field with a separate closing note. */
.rv-layout-decisions--text-only {
  background:
    linear-gradient(90deg, rgba(255, 88, 20, 0.035), transparent 32%),
    #f7f6f2;
}

.rv-layout-decisions--text-only > .rv-container > .section-heading {
  grid-column: 1 / 5 !important;
  grid-row: 1 / span 2 !important;
}

.rv-layout-decisions--text-only > .rv-container > .wp-block-columns {
  grid-column: 5 / -1 !important;
  grid-row: 1 !important;
  gap: 14px;
  width: 100%;
  max-width: none;
}

.rv-layout-decisions--text-only > .rv-container > .wp-block-columns > .wp-block-column {
  padding: clamp(22px, 2.4vw, 30px);
  border: 1px solid rgba(21, 21, 21, 0.1);
  border-top: 4px solid var(--rv-copper);
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 16px 38px rgba(15, 14, 13, 0.055);
}

.rv-layout-decisions--text-only > .rv-container > h3 {
  grid-column: 5 / 9 !important;
  grid-row: 2 !important;
  margin-top: 4px;
}

.rv-layout-decisions--text-only > .rv-container > p {
  grid-column: 9 / -1 !important;
  grid-row: 2 !important;
  margin: 0;
  padding: 24px;
  border-left: 3px solid var(--rv-family-accent, var(--rv-sage));
  background: rgba(255, 255, 255, 0.7);
}

/* Homepage closing band: visually distinct, compact, and conversion focused. */
.rv-layout-contact--cta {
  background:
    radial-gradient(circle at 90% 0%, rgba(55, 94, 87, 0.34), transparent 38%),
    linear-gradient(118deg, #111310, #1b302b);
}

.rv-layout-contact--cta .cta-band,
.rv-layout-contact--cta .cta-band__inner {
  width: 100%;
  max-width: none;
}

.rv-layout-contact--cta .cta-band__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: clamp(24px, 4vw, 64px);
  padding: clamp(34px, 5vw, 70px);
  border: 1px solid rgba(255, 255, 255, 0.13);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.055);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.18);
}

.rv-layout-contact--cta .cta-band__inner h2 {
  max-width: 14ch;
  color: #fff;
}

.rv-layout-contact--cta .cta-band__inner p {
  max-width: 66ch;
  color: var(--rv-on-dark-body, rgba(255, 255, 255, 0.82));
}

.rv-layout-contact--cta .wp-block-button__link {
  min-width: 220px;
  background: var(--rv-copper);
  color: #111;
  box-shadow: 0 14px 34px rgba(255, 88, 20, 0.24);
}

@media (min-width: 1081px) {
  body.page-id-6 #residential-services.rv-layout-record--text-only > .rv-container,
  body.page-id-6 #commercial-services.rv-layout-verify--text-only > .rv-container {
    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
    grid-template-rows: auto !important;
  }

  body.page-id-6 :is(
    #residential-services.rv-layout-record--text-only,
    #commercial-services.rv-layout-verify--text-only
  ) > .rv-container > p:not(.eyebrow) {
    grid-row: 1 !important;
  }

  body.page-id-6 :is(
    #residential-services.rv-layout-record--text-only,
    #commercial-services.rv-layout-verify--text-only
  ) > .rv-container > .service-selector-list {
    grid-row: 2 !important;
  }

  body.page-id-6 :is(
    #residential-services.rv-layout-record--text-only,
    #commercial-services.rv-layout-verify--text-only
  ) > .rv-container > .wp-block-buttons {
    grid-row: 3 !important;
  }
}

@media (max-width: 1080px) {
  .rv-editorial-photo,
  .rv-editorial-photo--wide > figcaption,
  body.rv-family-area-directory #choose-service-path .section-heading {
    grid-template-columns: 1fr;
  }

  .rv-editorial-photo--right .rv-editorial-photo__media,
  .rv-editorial-photo--right > figcaption {
    order: initial;
  }

  body.rv-family-area-directory #choose-service-path .section-heading > :is(.eyebrow, h2, p) {
    grid-column: auto;
    grid-row: auto;
  }

  body.rv-family-area-directory #choose-service-path .section-heading > p {
    max-width: 68ch;
  }

  body .section.rv-layout-record--text-only > .rv-container,
  body .section.rv-layout-verify--text-only > .rv-container,
  body .section.rv-layout-decisions--text-only > .rv-container {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
  }

  body .section.rv-layout-record--text-only > .rv-container > *,
  body .section.rv-layout-verify--text-only > .rv-container > *,
  body .section.rv-layout-decisions--text-only > .rv-container > * {
    grid-column: 1 / -1 !important;
    grid-row: auto !important;
    width: 100% !important;
    max-width: none !important;
  }

  /* Legacy editorial placements also use !important and can otherwise create
     implicit columns after the shell collapses. Repeating the component class
     deliberately raises this responsive reset above those older selectors. */
  body .section.section.rv-layout-record--text-only.rv-layout-record--text-only
    > .rv-container.rv-container > *,
  body .section.section.rv-layout-verify--text-only.rv-layout-verify--text-only
    > .rv-container.rv-container > *,
  body .section.section.rv-layout-decisions--text-only.rv-layout-decisions--text-only
    > .rv-container.rv-container > * {
    grid-column: 1 / -1 !important;
    grid-row: auto !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
  }

  .rv-layout-record--text-only > .rv-container > :is(h2:first-of-type, .section-heading),
  .rv-layout-verify--text-only > .rv-container > h2:first-of-type {
    max-width: 18ch;
  }
}

@media (max-width: 700px) {
  .rv-rhythm-insert--photo {
    margin: 26px 0 38px;
  }

  .rv-editorial-photo__media,
  .rv-editorial-photo__media > picture,
  .rv-editorial-photo__media img,
  .rv-editorial-photo--wide .rv-editorial-photo__media,
  .rv-editorial-photo--wide .rv-editorial-photo__media > picture,
  .rv-editorial-photo--wide .rv-editorial-photo__media img {
    min-height: 0;
    aspect-ratio: 4 / 3;
  }

  .rv-editorial-photo > figcaption {
    padding: 24px;
  }

  .rv-editorial-photo > figcaption > strong {
    font-size: clamp(26px, 9vw, 34px);
  }

  .rv-pathway-visual--scorecard ol,
  body.rv-family-area-directory #choose-service-path > .rv-container > .feature-grid {
    grid-template-columns: 1fr;
  }

  body.rv-family-area-directory #choose-service-path .service-media img {
    aspect-ratio: 4 / 3;
  }

  .rv-layout-record--text-only .service-selector-list,
  .rv-layout-verify--text-only .service-selector-list,
  .rv-layout-contact--cta .cta-band__inner {
    grid-template-columns: 1fr;
  }

  .rv-layout-contact--cta .cta-band__inner {
    padding: 28px 22px;
  }

  .rv-layout-contact--cta .wp-block-button__link {
    width: 100%;
    min-width: 0;
  }
}

@keyframes rv-photo-break-reveal {
  from {
    opacity: 0.72;
    transform: translateY(14px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@supports (animation-timeline: view()) {
  .rv-rhythm-insert--photo {
    animation: rv-photo-break-reveal linear both;
    animation-range: entry 8% cover 28%;
    animation-timeline: view();
  }
}

@media (prefers-reduced-motion: reduce) {
  .rv-rhythm-insert--photo,
  .rv-editorial-photo__media img {
    animation: none !important;
    transition: none !important;
    transform: none !important;
  }
}

/* --------------------------------------------------------------------------
   Release 1.1.77: durable service imagery and alignment repair
   -------------------------------------------------------------------------- */

.rv-service-stage {
  overflow: hidden;
  background:
    radial-gradient(circle at 96% 8%, rgba(60, 116, 104, 0.12), transparent 28rem),
    linear-gradient(180deg, #f7f8f5 0%, #eef3ef 100%);
}

.rv-service-stage > .rv-container {
  display: grid;
  gap: clamp(26px, 3.6vw, 46px);
}

.rv-service-stage .section-heading {
  align-items: end;
}

.rv-service-stage__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-auto-rows: 1fr;
  gap: clamp(16px, 2vw, 24px);
  align-items: stretch;
}

.rv-service-stage__card {
  display: grid;
  grid-template-rows: auto 1fr;
  min-width: 0;
  height: 100%;
  margin: 0;
  overflow: hidden;
  border: 1px solid rgba(21, 24, 22, 0.14);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 20px 54px rgba(19, 32, 28, 0.1);
}

.rv-service-stage__picture,
.rv-service-stage__picture > img {
  display: block;
  width: 100%;
  aspect-ratio: 8 / 5;
}

.rv-service-stage__picture {
  overflow: hidden;
  background: #dce4df;
}

.rv-service-stage__picture > img {
  height: 100%;
  object-fit: cover;
  transition: transform 0.45s ease;
}

.rv-service-stage__card:hover .rv-service-stage__picture > img {
  transform: scale(1.025);
}

.rv-service-stage__card > figcaption {
  display: grid;
  grid-template-rows: auto auto 1fr;
  gap: 10px;
  min-height: 0;
  padding: clamp(20px, 2.2vw, 28px);
  color: #303834;
}

.rv-service-stage__card > figcaption > span {
  color: #a33f18;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.rv-service-stage__card > figcaption > strong {
  color: #151816;
  font-family: var(--rv-serif);
  font-size: clamp(23px, 2vw, 30px);
  line-height: 1.05;
}

.rv-service-stage__card > figcaption > p {
  margin: 0;
  color: #4c5954;
  font-size: 14px;
  line-height: 1.58;
}

.rv-service-stage__card--during {
  border-color: rgba(217, 86, 34, 0.34);
}

.rv-service-stage__card--after {
  border-color: rgba(60, 116, 104, 0.34);
}

.rv-context-gallery__card:nth-child(2) {
  border-color: rgba(217, 86, 34, 0.3);
}

.rv-context-gallery__card:nth-child(3) {
  border-color: rgba(60, 116, 104, 0.34);
}

.rv-service-stage__disclosure {
  max-width: 92ch;
  margin: 0;
  padding: 16px 18px;
  border-left: 4px solid var(--rv-v2-sage, #3c7468);
  background: rgba(255, 255, 255, 0.72);
  color: #46524d;
  font-size: 13px;
  line-height: 1.55;
}

/* Keep the conversion board compact, row-aligned, and information-dense. */
.rv-layout-conversion .conversion-flow__steps,
.rv-family-city-service .rv-layout-conversion .conversion-flow__steps {
  grid-auto-rows: 1fr;
  align-items: stretch;
}

.rv-layout-conversion .conversion-flow__step,
.rv-family-city-service .rv-layout-conversion .conversion-flow__step {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  grid-template-rows: auto 1fr;
  min-height: 0;
  height: 100%;
  padding: 14px 18px;
  align-content: center;
  column-gap: 14px;
  row-gap: 4px;
}

.rv-layout-conversion .conversion-flow__step > span,
.rv-family-city-service .rv-layout-conversion .conversion-flow__step > span {
  grid-column: 1;
  grid-row: 1 / span 2;
  width: 36px;
  height: 36px;
  margin: 0;
  align-self: start;
}

/* Four-card briefs use two equal columns instead of a deliberately asymmetric
   7/5 composition. Compact internal rhythm preserves alignment without empty
   160px cards around one-line labels. */
.rv-layout-brief .feature-grid {
  grid-auto-rows: 1fr;
}

.rv-layout-brief .feature-grid:has(> .feature-card:nth-child(4):last-child) > .feature-card:nth-child(n) {
  grid-column: span 6;
}

.rv-layout-brief .feature-card {
  padding: 16px 18px;
}

.rv-layout-brief .feature-card::before {
  margin-bottom: 10px;
}

.rv-layout-brief .feature-card h3 {
  margin-bottom: 6px;
  font-size: clamp(20px, 1.7vw, 23px);
}

.rv-layout-brief .feature-card p {
  font-size: 14px;
  line-height: 1.42;
}

.rv-layout-conversion .conversion-flow__step > strong,
.rv-family-city-service .rv-layout-conversion .conversion-flow__step > strong {
  grid-column: 2;
  grid-row: 1;
  font-size: clamp(18px, 1.35vw, 22px);
}

.rv-layout-conversion .conversion-flow__step > p,
.rv-family-city-service .rv-layout-conversion .conversion-flow__step > p {
  grid-column: 2;
  grid-row: 2;
  font-size: 14px;
  line-height: 1.45;
}

/* These interludes are light cards even when nested in a dark editorial
   section. An explicit surface contract prevents ancestor styles or saved
   Gutenberg colors from producing low-contrast headings. */
body .section .rv-visual-interlude {
  background:
    repeating-linear-gradient(90deg, rgba(60, 116, 104, 0.05) 0 1px, transparent 1px 92px),
    linear-gradient(135deg, #fff 0%, #eef4f1 100%) !important;
  color: #151816 !important;
}

body .section .rv-visual-interlude > header > span {
  color: #2f6257 !important;
}

body .section .rv-visual-interlude > header > strong,
body .section .rv-visual-interlude > ol > li > strong {
  color: #151816 !important;
}

@media (max-width: 760px) {
  .rv-service-stage__grid {
    grid-template-columns: 1fr;
    grid-auto-rows: 1fr;
  }

  .rv-service-stage__card {
    height: 100%;
  }

  .rv-layout-brief .feature-grid {
    grid-template-columns: 1fr;
    grid-auto-rows: auto;
  }

  .rv-layout-brief .feature-grid:has(> .feature-card:nth-child(4):last-child) > .feature-card:nth-child(n) {
    grid-column: 1 / -1;
  }

  .rv-service-stage__picture,
  .rv-service-stage__picture > img {
    aspect-ratio: 4 / 3;
  }

  .rv-layout-conversion .conversion-flow__step,
  .rv-family-city-service .rv-layout-conversion .conversion-flow__step {
    padding: 16px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .rv-service-stage__picture > img {
    transition: none !important;
    transform: none !important;
  }
}

/* The desktop Services hub uses a governed 12-column record layout. Its
   residential rhythm photo is an additional direct grid child, so give that
   photo and the following actions explicit full-width rows instead of letting
   the generic auto-placement squeeze the photo into one narrow column. */
@media (min-width: 1081px) {
  body.page-id-6
    #residential-services.rv-layout-record--text-only
    > .rv-container
    > .rv-rhythm-insert--photo {
    grid-column: 1 / -1 !important;
    grid-row: 3 !important;
    align-self: start;
    justify-self: center;
    width: 100%;
    max-width: 1320px;
    margin: clamp(28px, 4vw, 52px) auto 0;
  }

  body.page-id-6
    #residential-services.rv-layout-record--text-only
    > .rv-container
    > .wp-block-buttons {
    grid-column: 1 / -1 !important;
    grid-row: 4 !important;
    justify-content: center;
    margin-top: clamp(22px, 3vw, 36px);
  }
}
