/* .109 is a bounded solution-card, customer-review and reproduced-defect pass. */

body[data-zmx109-release] [hidden] {
  display: none !important;
}

/* Commercial homepage Solution cards: distinct identities, one tick system and aligned actions. */
body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card {
  --zmx109-card-accent: #bc8b35;
  --zmx109-card-tint: #f6ead1;
  --zmx109-card-ink: #6f4b15;
  position: relative;
  border: 1px solid color-mix(in srgb, var(--zmx109-card-accent) 58%, #ffffff) !important;
  border-top: 5px solid var(--zmx109-card-accent) !important;
  background: linear-gradient(180deg, #fff 0%, var(--zmx109-card-tint) 155%) !important;
  box-shadow: 0 16px 42px rgba(13, 48, 40, .1);
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card--income {
  --zmx109-card-accent: #b7842f;
  --zmx109-card-tint: #f7ead0;
  --zmx109-card-ink: #745016;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card--rooflife {
  --zmx109-card-accent: #26705c;
  --zmx109-card-tint: #deeee7;
  --zmx109-card-ink: #175344;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card--solar {
  --zmx109-card-accent: #42758a;
  --zmx109-card-tint: #dfedf2;
  --zmx109-card-ink: #275c72;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card--protection {
  --zmx109-card-accent: #77845b;
  --zmx109-card-tint: #e8eddc;
  --zmx109-card-ink: #53613d;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card__media {
  border-bottom: 1px solid color-mix(in srgb, var(--zmx109-card-accent) 28%, transparent);
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card__body {
  display: grid !important;
  grid-template-rows: auto minmax(3.25rem, auto) minmax(8.8rem, 1fr) minmax(5.4rem, auto) auto;
  padding: 22px 20px 21px !important;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card .card-kicker {
  margin: 0 0 .52rem;
  color: var(--zmx109-card-ink) !important;
  font-size: .75rem !important;
  font-weight: 900 !important;
  letter-spacing: .105em;
  line-height: 1.25 !important;
  text-transform: uppercase;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card h3 {
  margin: 0 0 .72rem;
  color: #102c26;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card__description {
  margin: 0 0 1rem !important;
  color: #354a44;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card__benefits {
  margin: 0 0 1.2rem !important;
  padding: 0 !important;
  list-style: none !important;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card__benefits > li {
  display: grid !important;
  grid-template-columns: 20px minmax(0, 1fr) !important;
  align-items: start !important;
  gap: .48rem !important;
  margin: 0 !important;
  padding: 0 !important;
  color: #203c34;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card__benefits > li::before,
body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card__benefits > li::after {
  display: none !important;
  content: none !important;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card__benefits > li > span:first-child {
  display: grid !important;
  width: 19px !important;
  height: 19px !important;
  place-items: center;
  border: 1px solid color-mix(in srgb, var(--zmx109-card-accent) 62%, #173f35);
  border-radius: 50%;
  background: var(--zmx109-card-tint) !important;
  color: #123f34 !important;
  font-size: .68rem !important;
  font-weight: 950;
  line-height: 1 !important;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card__benefits > li > span:last-child {
  display: block !important;
  width: auto !important;
  height: auto !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: inherit !important;
  font-size: .82rem !important;
  font-weight: 750;
  line-height: 1.42 !important;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card__actions {
  display: grid;
  gap: .7rem;
  width: 100%;
  margin-top: auto !important;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-primary,
body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-secondary {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  font: inherit;
  font-size: .83rem;
  font-weight: 900;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-primary {
  width: 100%;
  padding: .72rem 1rem;
  border: 1px solid #b68a36;
  background: linear-gradient(135deg, #ead6a4, #caa052);
  box-shadow: 0 8px 20px rgba(98, 69, 22, .16);
  color: #153e34;
  cursor: pointer;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-secondary {
  min-height: 30px;
  justify-content: flex-start;
  padding: .15rem .2rem;
  color: #154e40;
}

body[data-zmx109-release][data-zmx-route="/"] #solutions :is(.zmx109-solution-primary, .zmx109-solution-secondary):focus-visible {
  outline: 3px solid #f4d27c;
  outline-offset: 3px;
}

/* Homepage review carousel: stable cards, source identity and user-controlled motion. */
.zmx109-review-section {
  --zmx109-review-gap: 18px;
  position: relative;
  overflow: hidden;
  padding: clamp(64px, 7.2vw, 96px) 0;
  background:
    radial-gradient(circle at 88% 10%, rgba(222, 188, 111, .2), transparent 31%),
    radial-gradient(circle at 8% 92%, rgba(63, 120, 101, .3), transparent 34%),
    linear-gradient(145deg, #0c352d 0%, #123f35 54%, #0a2c27 100%);
  color: #fff;
}

.zmx109-review-section::before {
  position: absolute;
  inset: 0;
  background: linear-gradient(110deg, rgba(255,255,255,.035), transparent 42%);
  content: "";
  pointer-events: none;
}

.zmx109-review-section > * {
  position: relative;
  z-index: 1;
}

.zmx109-review-heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: clamp(24px, 5vw, 72px);
  margin-bottom: clamp(28px, 4vw, 46px);
}

.zmx109-review-heading :is(.eyebrow, .zmx-res-eyebrow) {
  margin-bottom: .62rem;
  color: #e8c979 !important;
}

.zmx109-review-heading h2 {
  max-width: 760px;
  margin: 0 0 .75rem;
  color: #fff !important;
  font-size: clamp(2rem, 4vw, 3.45rem);
  line-height: 1.02;
}

.zmx109-review-heading > div > p:last-child {
  max-width: 660px;
  margin: 0;
  color: rgba(255,255,255,.76);
}

.zmx109-review-profiles {
  display: grid;
  gap: .58rem;
  min-width: min(100%, 255px);
}

.zmx109-review-profiles > a {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  align-items: center;
  gap: .68rem;
  padding: .68rem .78rem;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 12px;
  background: rgba(255,255,255,.08);
  color: #fff;
  text-decoration: none;
}

.zmx109-review-profiles strong,
.zmx109-review-profiles small {
  display: block;
}

.zmx109-review-profiles strong {
  font-size: .78rem;
  line-height: 1.25;
}

.zmx109-review-profiles small {
  margin-top: .12rem;
  color: rgba(255,255,255,.69);
  font-size: .69rem;
}

.zmx109-google-g {
  display: block;
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
}

.zmx109-review-viewport {
  overflow-x: auto;
  overflow-y: hidden;
  touch-action: pan-y;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.zmx109-review-viewport::-webkit-scrollbar { display: none; width: 0; height: 0; }

.zmx109-review-track {
  display: flex;
  gap: var(--zmx109-review-gap);
  width: 100%;
}

.zmx109-client-ready .zmx109-review-viewport {
  overflow: hidden;
}

.zmx109-client-ready .zmx109-review-track {
  display: flex;
  gap: var(--zmx109-review-gap);
  width: 100%;
  transform: translate3d(calc(-1 * var(--zmx109-review-offset, 0px)), 0, 0);
  transition: transform 520ms cubic-bezier(.2,.75,.25,1);
  will-change: transform;
}

.zmx109-review-card {
  display: flex;
  min-width: 0;
  min-height: 260px;
  flex-direction: column;
  padding: clamp(22px, 2.4vw, 30px);
  border: 1px solid rgba(255,255,255,.17);
  border-radius: 20px;
  background: linear-gradient(155deg, rgba(255,255,255,.13), rgba(255,255,255,.065));
  box-shadow: 0 18px 45px rgba(0,0,0,.16);
  color: #fff;
  flex: 0 0 calc((100% - (var(--zmx109-review-gap) * 2)) / 3);
}

.zmx109-client-ready .zmx109-review-card {
  flex: 0 0 calc((100% - (var(--zmx109-review-gap) * 2)) / 3);
}

.zmx109-review-card__stars {
  margin-bottom: 1.05rem;
  color: #f1c75f;
  font-size: 1rem;
  letter-spacing: .12em;
}

.zmx109-review-card blockquote,
.zmx109-review-card blockquote p {
  margin: 0;
}

.zmx109-review-card blockquote {
  flex: 1;
}

.zmx109-review-card blockquote p {
  color: #fff;
  font-size: clamp(.98rem, 1.25vw, 1.1rem);
  font-weight: 650;
  line-height: 1.55;
}

.zmx109-review-card footer {
  display: grid;
  gap: .55rem;
  margin-top: 1.35rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(255,255,255,.15);
}

.zmx109-review-card cite {
  color: #f4dfaa;
  font-size: .86rem;
  font-style: normal;
  font-weight: 900;
}

.zmx109-review-source {
  display: inline-flex;
  width: fit-content;
  align-items: center;
  gap: .48rem;
  color: rgba(255,255,255,.74);
  font-size: .7rem;
  font-weight: 720;
  line-height: 1.3;
  text-decoration: none;
}

.zmx109-review-source:hover,
.zmx109-review-source:focus-visible,
.zmx109-review-profiles a:hover,
.zmx109-review-profiles a:focus-visible {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.zmx109-review-controls {
  display: none;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  margin-top: 24px;
}

.zmx109-client-ready .zmx109-review-controls {
  display: flex;
}

.zmx109-review-controls button {
  display: inline-flex;
  min-width: 44px;
  min-height: 44px;
  align-items: center;
  justify-content: center;
  gap: .38rem;
  padding: .55rem .78rem;
  border: 1px solid rgba(255,255,255,.26);
  border-radius: 999px;
  background: rgba(255,255,255,.09);
  color: #fff;
  font: inherit;
  font-size: .75rem;
  font-weight: 850;
  cursor: pointer;
}

.zmx109-review-controls button:hover,
.zmx109-review-controls button:focus-visible {
  border-color: #e6c576;
  background: rgba(230,197,118,.16);
}

.zmx109-review-controls strong {
  min-width: 74px;
  color: #ead394;
  font-size: .73rem;
  text-align: center;
}

/* Service-page review modules use the same evidence styling without motion. */
.zmx109-review-section--service {
  padding: clamp(56px, 6vw, 82px) 0;
}

.zmx109-review-section--service .zmx109-review-static-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--zmx109-review-gap);
}

.zmx109-review-section--service .zmx109-review-card {
  min-height: 250px;
}

/* Success receipts stay absent from the accessibility tree until a real success protocol exposes them. */
body[data-zmx109-release] :is(.success-message, .quick-contact-success, .service-success, .callback-success, .contact-success, .property-success, .referral-success-audit, .electrical-success, .income-success, .solution-success, #callbackSuccess, #referralSuccess, #quickContactSuccess, #propertySuccess, #contactSuccess)[aria-hidden="true"] {
  display: none !important;
}

body[data-zmx109-release] .zmx-global-sticky.zmx109-sticky-suppressed,
body[data-zmx109-release] .zmx-global-sticky.is-visible.zmx109-sticky-suppressed {
  visibility: hidden !important;
  pointer-events: none !important;
  transform: translateY(calc(100% + 24px)) !important;
}

@media (max-width: 1080px) {
  .zmx109-review-card,
  .zmx109-client-ready .zmx109-review-card {
    flex-basis: calc((100% - var(--zmx109-review-gap)) / 2);
  }

  .zmx109-review-section--service .zmx109-review-static-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .zmx109-review-heading {
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
  }

  .zmx109-review-profiles {
    grid-template-columns: repeat(2, minmax(0, 240px));
  }
}

@media (max-width: 720px) {
  body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card__body {
    grid-template-rows: auto;
    padding: 19px 17px 20px !important;
  }

  body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-card :is(.card-kicker, h3, .zmx109-solution-card__description, .zmx109-solution-card__benefits) {
    min-height: 0 !important;
  }

  body[data-zmx109-release][data-zmx-route="/"] #solutions .zmx109-solution-secondary {
    justify-content: center;
  }

  .zmx109-review-section {
    --zmx109-review-gap: 14px;
    padding: 58px 0;
  }

  .zmx109-review-heading {
    gap: 20px;
    margin-bottom: 25px;
    text-align: center;
  }

  .zmx109-review-heading h2,
  .zmx109-review-heading > div > p:last-child {
    margin-right: auto;
    margin-left: auto;
  }

  .zmx109-review-profiles {
    grid-template-columns: minmax(0, 1fr);
    width: 100%;
  }

  .zmx109-review-profiles > a {
    max-width: 310px;
    margin: 0 auto;
    text-align: left;
  }

  .zmx109-review-section--service .zmx109-review-static-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .zmx109-review-card,
  .zmx109-client-ready .zmx109-review-card {
    flex-basis: 100%;
  }

  .zmx109-review-card,
  .zmx109-review-section--service .zmx109-review-card {
    min-height: 246px;
  }

  .zmx109-review-controls {
    margin-top: 18px;
  }
}

@media (max-width: 620px) {
  body[data-zmx109-release][data-zmx-route^="/residential/"] .zmx-res-hero-pills {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    justify-items: stretch !important;
    gap: 8px !important;
    width: 100%;
    max-width: none;
    margin-right: 0 !important;
    margin-left: 0 !important;
    text-align: left !important;
  }

  body[data-zmx109-release][data-zmx-route^="/residential/"] .zmx-res-hero-pills > * {
    display: grid !important;
    grid-template-columns: 20px minmax(0, 1fr) !important;
    align-items: start !important;
    justify-content: stretch !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    text-align: left !important;
  }
}

/* Final rendered-alignment correction: the inherited shell gives every
   Commercial hero a full-viewport wrapper as well as inner hero padding.
   Keep that premium desktop treatment, but remove the duplicated vertical
   space on tablet/mobile so the next decision point arrives without a long
   empty image tail. */
@media (max-width: 980px) {
  html body[data-zmx109-release][data-zmx-route="/"] main > .hero-wrap {
    min-height: 0 !important;
    display: block !important;
    align-items: start !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }

  html body[data-zmx109-release][data-zmx-route="/"] main > .hero-wrap > .hero {
    min-height: 0 !important;
    display: block !important;
  }

  html body[data-zmx109-release][data-zmx-route="/"] main > .hero-wrap .hero-inner {
    padding-top: clamp(52px, 8vw, 66px) !important;
    padding-bottom: clamp(50px, 8vw, 68px) !important;
  }

  html body[data-zmx109-release][data-zmx-route="/"] main > .hero-wrap .specialist-overlap {
    transform: none !important;
    margin-top: 24px !important;
  }
}

/* At the narrowest supported viewport the inherited hero height can resolve
   before the final wrapped trust pill contributes to the content box. Keep
   the compact treatment, but let all three reassurance points remain inside
   the visible hero instead of clipping the final row. */
@media (max-width: 375px) {
  html body[data-zmx109-release][data-zmx-route="/"] main > .hero-wrap,
  html body[data-zmx109-release][data-zmx-route="/"] main > .hero-wrap > .hero,
  html body[data-zmx109-release][data-zmx-route="/"] main > .hero-wrap .hero-inner {
    height: auto !important;
    max-height: none !important;
  }

  html body[data-zmx109-release][data-zmx-route="/"] main > .hero-wrap > .hero,
  html body[data-zmx109-release][data-zmx-route="/"] main > .hero-wrap .hero-pills {
    overflow: visible !important;
  }

  html body[data-zmx109-release][data-zmx-route="/"] main > .hero-wrap .hero-inner {
    padding-bottom: 62px !important;
  }
}

/* The two Roofing start actions belong to the same centred offer. The older
   two-column rule placed the action pair in an implicit right-hand row. */
body[data-zmx109-release][data-zmx-route="/residential/services/roofing/"] .zmx102-res-offer-strip > .zmx-res-container {
  grid-template-columns: minmax(0, 1fr) !important;
}

body[data-zmx109-release][data-zmx-route="/residential/services/roofing/"] .zmx102-res-offer-strip .zmx-res-actions {
  justify-content: center !important;
}

@media (prefers-reduced-motion: reduce) {
  .zmx109-client-ready .zmx109-review-track {
    transition: none;
  }
}
