/* LGC combined stylesheet - generated, do not edit.
   Source files live in the theme at assets/css/.
   Regenerated whenever LGC_VERSION changes. */


/* ===== 04b-mega-menu.css ===== */
/* 04b-mega-menu.css – hardcoded Commercial mega menu (adapted from LPVI, LGC tokens) */

.site-nav__item--has-mega{position:static;display:flex;align-items:center;}
.site-nav__link--mega{padding-right:var(--space-1) !important;}
.site-nav__mega-toggle{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-2) var(--space-1);background:none;border:0;cursor:pointer;color:var(--color-text-body);border-radius:var(--radius-sm);transition:var(--transition-color);line-height:1.2;}
.site-nav__mega-toggle:hover{color:var(--color-action-text);background:var(--color-action-hover-bg);}
.site-nav__chevron{transition:transform var(--duration-base) var(--ease-out);flex-shrink:0;}
.site-nav__mega-toggle[aria-expanded="true"] .site-nav__chevron{transform:rotate(180deg);}

.mega-menu{
  position:fixed;top:0;left:0;right:0;
  background:#fff;border-bottom:1px solid var(--color-border);
  box-shadow:0 16px 48px rgba(26,43,60,0.12);
  z-index:calc(var(--z-nav) - 1);
  visibility:hidden;opacity:0;pointer-events:none;transform:translateY(-8px);
  transition:opacity .22s var(--ease-out),transform .22s var(--ease-out),visibility 0s linear .22s;
}
.mega-menu--open{
  visibility:visible;opacity:1;pointer-events:auto;transform:translateY(0);
  transition:opacity .22s var(--ease-out),transform .22s var(--ease-out),visibility 0s linear 0s;
}

.mega-menu__inner{
  max-width:var(--container-max);margin-inline:auto;
  padding:var(--space-10) var(--section-pad-x) var(--space-8);
  display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-6);
}

.mega-col__head{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);}
.mega-col__icon{width:36px;height:36px;border-radius:50%;background:rgba(107,191,154,0.10);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--color-action-text);}
.mega-col__title{font-family:var(--font-heading);font-size:var(--text-base);font-weight:var(--weight-bold);color:var(--color-navy);line-height:1.2;letter-spacing:var(--tracking-tight);}
.mega-col__divider{height:2px;background:var(--color-action);border-radius:var(--radius-full);margin-bottom:var(--space-4);opacity:.60;}
.mega-col__links{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px;}
.mega-col__links a{display:block;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-navy);text-decoration:none;padding:var(--space-2-5) var(--space-3);border-radius:var(--radius-sm);border-left:2px solid transparent;line-height:var(--leading-snug);transition:color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out),padding-left var(--duration-fast) var(--ease-out);}
.mega-col__links a:hover{color:var(--color-action-text);border-left-color:var(--color-action);background:rgba(107,191,154,0.06);padding-left:var(--space-4);}

.mega-menu__footer{max-width:var(--container-max);margin-inline:auto;padding:var(--space-4) var(--section-pad-x);border-top:0.5px solid var(--color-border);display:flex;align-items:center;gap:var(--space-4);background:var(--color-bg-alt);}
.mega-menu__footer-label{font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--color-text-muted);}
.mega-menu__footer-link{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);text-decoration:none;transition:color var(--duration-fast) var(--ease-out),gap var(--duration-base) var(--ease-out);}
.mega-menu__footer-link:hover{color:var(--color-action-text);gap:var(--space-3);}

.mega-backdrop{position:fixed;inset:0;background:rgba(26,43,60,0.25);z-index:calc(var(--z-nav) - 2);backdrop-filter:blur(2px);visibility:hidden;opacity:0;transition:opacity .2s var(--ease-out),visibility 0s linear .2s;}
.mega-backdrop--open{visibility:visible;opacity:1;transition:opacity .2s var(--ease-out),visibility 0s linear 0s;}

@media(max-width:1100px){.mega-menu__inner{grid-template-columns:repeat(3,1fr);}}
@media(max-width:991px){.mega-menu,.mega-backdrop{display:none;}}
/* Note that the industry columns are examples, not the full scope.
   Pushed to the right of the footer strip so it fills the empty space
   without competing with the gallery links. */
.mega-menu__footer{flex-wrap:wrap;}
.mega-menu__footer-note{
  margin:0 0 0 auto;
  font-size:var(--text-sm);
  line-height:var(--leading-normal);
  color:var(--color-text-body);
  text-align:right;
}
.mega-menu__footer-note a{
  color:var(--color-action-text);
  font-weight:var(--weight-semibold);
  text-decoration:none;
}
.mega-menu__footer-note a:hover{text-decoration:underline;}

@media(max-width:1100px){
  .mega-menu__footer-note{margin-left:0;text-align:left;flex-basis:100%;}
}
/* ── Residential mega menu ──
   Same chrome as Commercial, and now the same full-bleed white bar: the
   earlier version capped the panel at 980px and moved the white background
   onto the inner container, because two short columns looked lost across a
   1440px width. With the areas list grown to fourteen entries the panel has
   the content to fill the container, so those overrides are gone and it
   inherits the Commercial styling unchanged.

   Track ratio is 1:2 rather than equal halves. Services holds two
   sub-columns and Areas holds four, so splitting the panel evenly would
   starve the wider group. At 1:2 every sub-column across both groups ends up
   roughly the same width. */
.mega-menu__inner--res{
  grid-template-columns:minmax(0,1fr) minmax(0,2fr);
  gap:var(--space-10);
}

/* Services: two sub-columns, filled top to bottom then across. Seven links
   land as 4 + 3. */
.mega-col__links--split{
  display:grid;
  grid-template-columns:repeat(2,max-content);
  grid-auto-flow:column;
  grid-template-rows:repeat(4,auto);
  gap:2px var(--space-5);
}

/* Areas: four sub-columns. Grid fills each column to the row count before
   moving to the next, so with fourteen entries and four rows the split lands
   at 4 + 4 + 4 + 2. That is deliberate rather than a compromise: it needs no
   per-item placement, so the list can grow or shrink without anyone having
   to retune the CSS. Adding a fifteenth area simply gives 4 + 4 + 4 + 3. */
.mega-col--areas .mega-col__links--split{
  grid-template-columns:repeat(4,max-content);
}

/* "All Service Areas" is the hub link rather than a place, so it is marked
   out from the cities beneath it. It is always first in the array, hence
   :first-child. The hover rule is repeated because the shared
   .mega-col__links a:hover would otherwise reset the colour on hover. */
.mega-col--areas .mega-col__links--split li:first-child a{
  font-weight:var(--weight-bold);
  color:var(--color-cta);
}
.mega-col--areas .mega-col__links--split li:first-child a:hover{
  color:var(--color-cta-hover);
  border-left-color:var(--color-cta);
  background:rgba(220,88,42,0.06);
}

@media(max-width:1100px){
  /* Stack the two groups, and drop the areas list to three sub-columns with
     five rows so the entries stay readable once the panel narrows. */
  .mega-menu__inner--res{grid-template-columns:1fr;gap:var(--space-8);}
  .mega-col--areas .mega-col__links--split{
    grid-template-columns:repeat(3,max-content);
    grid-template-rows:repeat(5,auto);
  }
}

/* ===== 06-services.css ===== */
/* 06-services.css – treatment card pattern (aes-featured + aes-grid) */
.svc-overview-home__header{text-align:center;margin-bottom:var(--space-12);}
.svc-overview-home__header .section-subheading{margin-inline:auto;}

.aes-featured{display:grid;grid-template-columns:1fr 1fr;border-radius:var(--radius-lg);overflow:hidden;background:var(--color-bg-white);border:1px solid var(--color-border);transition:var(--transition-shadow);margin-bottom:var(--space-8);}
.aes-featured:hover{box-shadow:var(--shadow-card-hover);border-color:var(--color-border-hover);}
.aes-featured__image{position:relative;overflow:hidden;min-height:360px;background:var(--color-bg-alt);}
.aes-featured__image img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-slow) var(--ease-out);}
.aes-featured:hover .aes-featured__image img{transform:scale(1.03);}
.aes-featured__placeholder{width:100%;height:100%;background:var(--color-bg-alt);}
.aes-featured__body{display:flex;flex-direction:column;justify-content:center;padding:var(--space-10);}
.aes-featured__badge{display:inline-block;width:fit-content;padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-action-deep);background:var(--color-action-light);border-radius:var(--radius-full);margin-bottom:var(--space-4);}
.aes-featured__title{font-size:var(--text-xl);margin-bottom:var(--space-3);}
.aes-featured__desc{font-size:var(--text-base);color:var(--color-text-muted);line-height:var(--leading-normal);margin-bottom:var(--space-6);}
.aes-featured__link{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:var(--weight-semibold);font-size:var(--text-sm);color:var(--color-action-text);transition:var(--transition-color);}
.aes-featured:hover .aes-featured__link{color:var(--color-action);}

.aes-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}
.aes-card{display:flex;flex-direction:column;border-radius:var(--radius-lg);overflow:hidden;background:var(--color-bg-white);border:1px solid var(--color-border);transition:var(--transition-shadow);}
.aes-card:hover{box-shadow:var(--shadow-card-hover);border-color:var(--color-border-hover);}
.aes-card__image{position:relative;overflow:hidden;height:220px;background:var(--color-bg-alt);}
.aes-card__image img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-slow) var(--ease-out);}
.aes-card:hover .aes-card__image img{transform:scale(1.03);}
.aes-card__placeholder{width:100%;height:100%;background:var(--color-bg-alt);}
.aes-card__body{display:flex;flex-direction:column;flex:1;padding:var(--space-6);}
.aes-card__title{font-size:var(--text-lg);margin-bottom:var(--space-2);}
.aes-card__desc{font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--leading-normal);margin-bottom:var(--space-4);flex:1;}
.aes-card__link{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:var(--weight-semibold);font-size:var(--text-sm);color:var(--color-action-text);transition:var(--transition-color);margin-top:auto;}
.aes-card:hover .aes-card__link{color:var(--color-action);}

@media(max-width:991px){.aes-featured{grid-template-columns:1fr;}.aes-featured__image{min-height:240px;}}
@media(max-width:767px){.aes-grid{grid-template-columns:1fr;}}

/* Six-card symmetric grid (homepage services) */
.aes-grid--six{grid-template-columns:repeat(3,1fr);}
.aes-grid--six .aes-card__image{aspect-ratio:3/2;min-height:0;}
.aes-grid--six .aes-card__image img{width:100%;height:100%;object-fit:cover;}
@media(max-width:991px){.aes-grid--six{grid-template-columns:repeat(2,1fr);}}
@media(max-width:600px){.aes-grid--six{grid-template-columns:1fr;}}


/* ===== 07-process.css ===== */
/* 07-process.css */
.process-section__header{text-align:center;margin-bottom:var(--space-12);}
.process-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-8);counter-reset:step-counter;}
.process-step{text-align:center;position:relative;}
.process-step__number{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin:0 auto var(--space-5);font-family:var(--font-heading);font-size:var(--text-xl);font-weight:var(--weight-extrabold);color:var(--color-text-inverse);background:var(--color-action-deep);border-radius:var(--radius-full);}
.process-step__title{font-size:var(--text-lg);margin-bottom:var(--space-3);}
.process-step__desc{font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--leading-normal);max-width:36ch;margin-inline:auto;}
.process-section__cta{text-align:center;margin-top:var(--space-10);}
@media(max-width:767px){.process-steps{grid-template-columns:1fr;gap:var(--space-10);}}


/* ===== 08-why.css ===== */
/* 08-why.css */
.why-section{position:relative;overflow:hidden;padding-block:var(--section-pad-y-lg);}
.why-section__parallax{position:absolute;inset:0;background:var(--why-bg, var(--color-navy)) center/cover no-repeat;background-attachment:fixed;}
.why-section__overlay{position:absolute;inset:0;background:linear-gradient(135deg,rgba(0,46,71,.9) 0%,rgba(4,106,56,.82) 100%);}
.why-section__content{position:relative;z-index:1;}
.why-section__statement{text-align:center;margin-bottom:var(--space-12);}
.why-section__eyebrow{display:inline-block;font-family:var(--font-heading);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--color-action);margin-bottom:var(--space-3);}
.why-section__heading{font-size:var(--text-section);color:var(--color-text-inverse);}
.why-section__pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}
.why-section__pillars--six{grid-template-columns:repeat(3,1fr);}
.why-section__pillar{text-align:center;padding:var(--space-8) var(--space-5);background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-lg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:var(--transition-base);}
.why-section__pillar:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);transform:translateY(-3px);}
.why-section__pillar-icon{width:40px;height:40px;margin:0 auto var(--space-4);color:var(--color-action);}
.why-section__pillar-icon svg{width:100%;height:100%;}
.why-section__pillar-title{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-inverse);margin-bottom:var(--space-2);}
.why-section__pillar-desc{font-size:var(--text-sm);color:var(--color-text-inverse-muted);line-height:var(--leading-normal);}

@media(max-width:991px){.why-section__pillars,.why-section__pillars--six{grid-template-columns:repeat(2,1fr);}}
@media(max-width:600px){.why-section__pillars,.why-section__pillars--six{grid-template-columns:1fr;}.why-section__parallax{background-attachment:scroll;}}


/* ===== 09-reviews.css ===== */
/* 09-reviews.css */
.reviews-section__header{text-align:center;margin-bottom:var(--space-8);}
.reviews-summary{display:flex;align-items:center;justify-content:center;gap:var(--space-3);margin-top:var(--space-4);}
.reviews-summary__score{font-family:var(--font-heading);font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--color-action-deep);}
.reviews-summary__stars{display:flex;gap:2px;}
.reviews-summary__star{width:20px;height:20px;fill:#F59E0B;}
.reviews-summary__count{font-size:var(--text-sm);color:var(--color-text-muted);}

.reviews-track-wrap{overflow:hidden;position:relative;padding-block:var(--space-4);}
.reviews-track{display:flex;gap:var(--space-6);animation:marquee-scroll 60s linear infinite;width:max-content;}
@keyframes marquee-scroll{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}
.reviews-track:hover{animation-play-state:paused;}

.review-card{flex-shrink:0;width:380px;padding:var(--space-6) var(--space-8);background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);position:relative;}
.review-card__mark{position:absolute;top:var(--space-3);left:var(--space-5);font-family:Georgia,serif;font-size:3rem;color:var(--color-action-light);line-height:1;}
.review-card__quote{font-size:var(--text-sm);color:var(--color-text-body);line-height:var(--leading-normal);margin-bottom:var(--space-4);}
.review-card__footer{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--color-border);padding-top:var(--space-3);}
.review-card__author{font-weight:var(--weight-semibold);font-size:var(--text-sm);color:var(--color-text-primary);}
.review-card__source{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--color-text-muted);}
.review-card__source svg{width:14px;height:14px;}

.reviews-google-link{text-align:center;margin-top:var(--space-6);}


/* ===== 10-footer.css ===== */
/* 10-footer.css */
.site-footer{background:var(--color-navy);color:var(--color-text-inverse);padding-block:var(--space-16) var(--space-8);text-align:center;}
.site-footer__brand{margin-bottom:var(--space-6);}
.site-footer__brand img,.site-footer__brand .custom-logo{height:48px;width:auto;max-width:220px;object-fit:contain;margin-inline:auto;}
.site-footer__tagline{font-size:var(--text-sm);color:var(--color-text-inverse-muted);max-width:48ch;margin:var(--space-3) auto 0;line-height:var(--leading-normal);}
.site-footer__social{display:flex;justify-content:center;align-items:center;gap:var(--space-4);margin-top:var(--space-5);}
.site-footer__social-link{color:var(--color-text-inverse-muted);opacity:.75;transition:opacity var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out);}
.site-footer__social-link:hover{opacity:1;color:var(--color-text-inverse);}
.site-footer__nav{margin-bottom:var(--space-8);}
.site-footer__nav-row{display:flex;justify-content:center;flex-wrap:wrap;gap:var(--space-2) var(--space-6);}
.site-footer__nav-link{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-inverse-muted);transition:var(--transition-color);}
.site-footer__nav-link:hover{color:var(--color-text-inverse);}

.site-footer__contact{margin-bottom:var(--space-10);padding-top:var(--space-8);border-top:1px solid rgba(255,255,255,.1);}
.site-footer__contact-grid{display:flex;justify-content:center;flex-wrap:wrap;gap:var(--space-8) var(--space-12);margin-bottom:var(--space-6);text-align:center;}
.site-footer__contact-label{display:block;font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-action);margin-bottom:var(--space-2);}
.site-footer__address,.site-footer__hours{font-size:var(--text-sm);color:var(--color-text-inverse-muted);font-style:normal;display:block;}
.site-footer__phone,.site-footer__email{display:block;font-size:var(--text-sm);color:var(--color-text-inverse-muted);transition:var(--transition-color);}
.site-footer__phone:hover,.site-footer__email:hover{color:var(--color-text-inverse);}
.site-footer__cta-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-8);font-family:var(--font-heading);font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);color:var(--color-cta-text);background:var(--color-cta);border-radius:var(--radius-full);transition:var(--transition-base);}
.site-footer__cta-btn:hover{background:var(--color-cta-hover);box-shadow:var(--shadow-cta-hover);}

.site-footer__bottom{padding-top:var(--space-8);border-top:1px solid rgba(255,255,255,.1);font-size:var(--text-xs);color:rgba(255,255,255,.4);}
.site-footer__disclaimer{margin-bottom:var(--space-4);max-width:64ch;margin-inline:auto;line-height:var(--leading-loose);}
.site-footer__legal{display:flex;justify-content:center;flex-wrap:wrap;gap:var(--space-2) var(--space-5);margin-bottom:var(--space-3);}
.site-footer__legal a{color:rgba(255,255,255,.5);transition:var(--transition-color);}
.site-footer__legal a:hover{color:rgba(255,255,255,.8);}
.site-footer__credit{font-size:var(--text-xs);color:rgba(255,255,255,.3);}
.site-footer__credit a{color:rgba(255,255,255,.5);text-decoration:underline;text-underline-offset:2px;transition:var(--transition-color);}
.site-footer__credit a:hover{color:var(--color-action);}

/* ===== 11-page-service.css ===== */
/* 11-page-service.css */
.svc-stats-bar{background:var(--color-cta);padding:var(--space-6) 0;}
.svc-stats{display:flex;align-items:center;justify-content:center;gap:var(--space-8);flex-wrap:wrap;}
.svc-stat{text-align:center;}
.svc-stat__value{display:block;font-family:var(--font-heading);font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--color-text-inverse);}
.svc-stat span{font-size:var(--text-sm);color:rgba(255,255,255,0.75);letter-spacing:var(--tracking-wide);text-transform:uppercase;}
.svc-stat__sep{display:block;width:1px;height:40px;background:rgba(255,255,255,0.25);}

.svc-explain__grid{display:grid;grid-template-columns:1fr 380px;gap:var(--space-12);align-items:start;}
.svc-explain__body{font-size:var(--text-base);color:var(--color-text-body);line-height:var(--leading-normal);}
.svc-explain__approach{margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--color-border);}
.svc-explain__approach-heading{font-size:var(--text-lg);margin-bottom:var(--space-3);}

.svc-trust-box{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);position:sticky;top:calc(var(--nav-height) + var(--space-6));}
.svc-trust-box__item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-2) 0;font-size:var(--text-sm);color:var(--color-text-body);}
.svc-trust-box__item+.svc-trust-box__item{border-top:1px solid var(--color-border);}

.svc-overview__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-6);}
.svc-overview__card{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;transition:var(--transition-shadow);}
.svc-overview__card:hover{box-shadow:var(--shadow-card-hover);border-color:var(--color-border-hover);}
.svc-overview__card-image{height:180px;overflow:hidden;background:var(--color-bg-alt);}
.svc-overview__card-image img{width:100%;height:100%;object-fit:cover;}
.svc-overview__card-body{padding:var(--space-6);}
.svc-overview__card-title{font-size:var(--text-lg);margin-bottom:var(--space-2);}
.svc-overview__card-text{font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--leading-normal);margin-bottom:var(--space-4);}
.svc-overview__card-trigger{font-weight:var(--weight-semibold);font-size:var(--text-sm);color:var(--color-action-text);display:inline-flex;align-items:center;gap:var(--space-2);}

.svc-related__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}

/* Modals */
.svc-modal{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-6);}
.svc-modal__backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);}
.svc-modal__panel{position:relative;background:var(--color-bg-white);border-radius:var(--radius-lg);max-width:600px;width:100%;max-height:80vh;overflow-y:auto;padding:var(--space-10);}
.svc-modal__close{position:absolute;top:var(--space-4);right:var(--space-4);padding:var(--space-2);border-radius:var(--radius-sm);transition:var(--transition-color);}
.svc-modal__close:hover{background:var(--color-bg-alt);}
.svc-modal__title{font-size:var(--text-xl);margin-bottom:var(--space-4);}
.svc-modal__body{font-size:var(--text-base);color:var(--color-text-body);line-height:var(--leading-normal);margin-bottom:var(--space-6);}
.svc-modal__actions{display:flex;gap:var(--space-3);flex-wrap:wrap;}

@media(max-width:991px){.svc-explain__grid{grid-template-columns:1fr;}.svc-trust-box{position:static;}}
@media(max-width:767px){.svc-overview__grid{grid-template-columns:1fr;}.svc-related__grid{grid-template-columns:1fr;}}

/* ===== 12-utilities.css ===== */
/* 12-utilities.css */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0;}
.text-center{text-align:center;}
.text-muted{color:var(--color-text-muted);}
.mt-4{margin-top:var(--space-4);}
.mt-8{margin-top:var(--space-8);}
.mb-4{margin-bottom:var(--space-4);}
.mb-8{margin-bottom:var(--space-8);}

/* Scroll reveal */
.reveal{opacity:0;transform:translateY(20px);transition:opacity var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-out);}
.reveal.is-visible{opacity:1;transform:translateY(0);}

/* Credential marquee */
.cred-marquee{overflow:hidden;padding:var(--space-3) 0;background:var(--color-bg-alt);border-bottom:1px solid var(--color-border);}
.cred-marquee__track{display:flex;width:max-content;}
.cred-marquee__track--left{animation:marquee-left 45s linear infinite;}
.cred-marquee__track--right{animation:marquee-right 50s linear infinite;margin-top:var(--space-2);}
.cred-marquee__track:hover{animation-play-state:paused;}
@keyframes marquee-left{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}
@keyframes marquee-right{0%{transform:translateX(-50%);}100%{transform:translateX(0);}}
.cred-marquee__content{display:flex;align-items:center;gap:var(--space-6);white-space:nowrap;font-family:var(--font-heading);font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-action-deep);opacity:.55;padding-right:var(--space-6);}
.cred-marquee__dot{color:var(--color-action);font-size:var(--text-lg);}

/* Floating CTA - sticky bottom-right Get Free Quote */
.floating-cta{position:fixed;bottom:24px;right:24px;z-index:var(--z-sticky);display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);font-family:var(--font-heading);font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);color:var(--color-cta-text);background:var(--color-cta);border-radius:var(--radius-full);box-shadow:0 4px 16px rgba(220,88,42,0.35),0 2px 6px rgba(0,0,0,0.10);transition:var(--transition-base);text-decoration:none;line-height:1.4;animation:floating-cta-in 600ms var(--ease-bounce) 1500ms backwards;}
.floating-cta:hover{background:var(--color-cta-hover);box-shadow:0 6px 20px rgba(220,88,42,0.45),0 3px 8px rgba(0,0,0,0.15);transform:translateY(-2px);}
.floating-cta__icon{flex-shrink:0;}
@keyframes floating-cta-in{from{opacity:0;transform:translateY(20px) scale(0.85);}to{opacity:1;transform:translateY(0) scale(1);}}
@media(max-width:640px){
  .floating-cta{bottom:16px;right:16px;padding:var(--space-3) var(--space-5);font-size:var(--text-xs);}
  .floating-cta__text{display:none;}
  .floating-cta__icon{width:24px;height:24px;}
  .floating-cta{padding:var(--space-3);}
}

/* In-content links — brand CTA orange.
   Scoped to prose body containers only, so navigation, buttons, cards,
   and other UI links keep their own styling. Covers the wp_kses_post /
   wpautop content areas across service, commercial, case study, review,
   gallery, colors, and standard editor content. */
.svc-explain__body a,
.comm-prose a,
.cs-body__text a,
.entry-content a,
.colors-intro__body a,
.rev-intro__text a,
.gallery-intro a,
.cab-quality__intro a,
.faq-item__answer a{
  color:var(--color-cta);
  text-decoration:underline;
  text-underline-offset:2px;
  transition:color var(--transition-base);
}
.svc-explain__body a:hover,
.comm-prose a:hover,
.cs-body__text a:hover,
.entry-content a:hover,
.colors-intro__body a:hover,
.rev-intro__text a:hover,
.gallery-intro a:hover,
.cab-quality__intro a:hover,
.faq-item__answer a:hover{
  color:var(--color-cta-hover);
}

/* ===== 13-specs.css ===== */
/* 13-specs.css */
.specs-section{background:var(--color-bg-alt);}
.specs-section__header{text-align:center;margin-bottom:var(--space-8);}
.specs-section__title{font-size:var(--text-xl);}
.specs-table-wrap{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg-white);}
.specs-table{width:100%;font-size:var(--text-sm);}
.specs-table td{padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--color-border);vertical-align:top;}
.specs-table tr:last-child td{border-bottom:none;}
.specs-table td:first-child{font-weight:var(--weight-semibold);color:var(--color-text-primary);white-space:nowrap;width:220px;background:var(--color-bg-alt);}
.specs-table td:last-child{color:var(--color-text-body);}


/* ===== 14-faq.css ===== */
/* 14-faq.css */
.faq-list{display:flex;flex-direction:column;gap:var(--space-2);}
.faq-item{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;background:var(--color-bg-white);transition:var(--transition-shadow);}
.faq-item:hover{border-color:var(--color-border-hover);}
.faq-item__trigger{display:flex;align-items:center;justify-content:space-between;width:100%;text-align:left;padding:var(--space-5) var(--space-6);gap:var(--space-4);cursor:pointer;transition:var(--transition-color);}
.faq-item__trigger:hover{background:var(--color-action-hover-bg);}
.faq-item__question{font-family:var(--font-heading);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);}
.faq-item__icon{flex-shrink:0;color:var(--color-action);transition:transform var(--duration-base) var(--ease-out);}
.faq-item__trigger[aria-expanded="true"] .faq-item__icon{transform:rotate(45deg);}
.faq-item__answer{padding:0 var(--space-6) var(--space-5);}
.faq-item__answer p{font-size:var(--text-sm);color:var(--color-text-body);line-height:var(--leading-loose);}


/* ===== 15-about.css ===== */
/* 15-about.css */
.about-hero__grid{display:grid;grid-template-columns:360px 1fr;gap:var(--space-12);align-items:stretch;}
.about-hero__photo-wrap{border-radius:var(--radius-lg);overflow:hidden;}
.about-hero__photo{width:100%;height:100%;border-radius:var(--radius-lg);object-fit:cover;}
.about-hero__photo--placeholder{background:var(--color-bg-alt);min-height:400px;border-radius:var(--radius-lg);}
.about-hero__name{font-size:var(--text-2xl);margin-bottom:var(--space-2);}
.about-hero__specialty{font-size:var(--text-md);color:var(--color-action);font-weight:var(--weight-semibold);margin-bottom:var(--space-5);}
.about-hero__bio{font-size:var(--text-base);color:var(--color-text-body);line-height:var(--leading-normal);margin-bottom:var(--space-5);}
.about-hero__badges{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2);}

.about-stats-bar{background:var(--color-cta);padding:var(--space-6) 0;}
.about-stats{display:flex;align-items:center;justify-content:center;gap:var(--space-8);flex-wrap:wrap;}
.about-stat{text-align:center;}
.about-stat__value{display:block;font-family:var(--font-heading);font-size:var(--text-xl);font-weight:var(--weight-bold);color:var(--color-text-inverse);}
.about-stat__label{font-size:var(--text-xs);color:rgba(255,255,255,0.75);letter-spacing:var(--tracking-wide);text-transform:uppercase;}
.about-stat__sep{display:block;width:1px;height:40px;background:rgba(255,255,255,0.25);}

.about-bio__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-12);align-items:center;}
.about-bio__body{font-size:var(--text-base);color:var(--color-text-body);line-height:var(--leading-normal);}
.about-bio__image{width:100%;border-radius:var(--radius-lg);object-fit:cover;}

.about-cred__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-12);align-items:start;}
.about-cred__cards{display:flex;flex-direction:column;gap:var(--space-4);}
.about-cred-card{display:flex;align-items:flex-start;gap:var(--space-4);padding:var(--space-5);background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-md);}
.about-cred-card__dot{width:10px;height:10px;border-radius:50%;background:var(--color-action);flex-shrink:0;margin-top:6px;}
.about-cred-card__title{font-weight:var(--weight-semibold);margin-bottom:var(--space-1);}
.about-cred-card__inst{font-size:var(--text-sm);color:var(--color-text-muted);}

.about-policies-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-6);}
.about-policy-glass{padding:var(--space-8);background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-lg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);}
.about-policy-glass__title{font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text-inverse);margin-bottom:var(--space-3);}
.about-policy-glass__text{font-size:var(--text-sm);color:var(--color-text-inverse-muted);line-height:var(--leading-normal);}

@media(max-width:991px){.about-hero__grid{grid-template-columns:1fr;}.about-hero__photo-wrap{max-width:320px;}.about-hero__photo{height:auto;aspect-ratio:3/4;}.about-cred__grid{grid-template-columns:1fr;}.about-bio__grid{grid-template-columns:1fr;}}
@media(max-width:767px){.about-policies-grid{grid-template-columns:1fr;}}

/* Our Commitment subsection (within Our Story) */
.about-bio__commitment{
  margin-top:var(--space-8);
  padding-top:var(--space-6);
  border-top:0.5px solid rgba(49,155,66,0.30);
}
.about-bio__commitment-heading{
  font-family:var(--font-heading);
  font-size:var(--text-lg);
  font-weight:var(--weight-semibold);
  color:var(--color-action-deep);
  margin-bottom:var(--space-3);
  letter-spacing:0.01em;
}
.about-bio__commitment p{
  font-size:var(--text-base);
  color:var(--color-text-body);
  line-height:var(--leading-normal);
  font-style:italic;
}

/* ===== 18-services-landing.css ===== */
/* 18-services-landing.css */

.sl-section-header{text-align:center;margin-bottom:var(--space-12);}
.sl-section-header .section-subheading{margin-inline:auto;}

/* Two-column grid variant for basement & patio */
.aes-grid--two{grid-template-columns:repeat(2,1fr);}
@media(max-width:767px){.aes-grid--two{grid-template-columns:1fr;}}

/* Commercial section */
.sl-commercial__grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:var(--space-12);
  align-items:center;
}

.sl-commercial__intro{
  font-size:var(--text-base);
  color:var(--color-text-body);
  line-height:var(--leading-normal);
  margin-bottom:var(--space-6);
}

.sl-commercial__list{
  list-style:none;
  padding:0;
  margin:0 0 var(--space-8) 0;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:var(--space-3) var(--space-5);
}

.sl-commercial__item{
  display:flex;
  align-items:flex-start;
  gap:var(--space-3);
  font-size:var(--text-sm);
  color:var(--color-text-body);
  line-height:var(--leading-snug);
}

.sl-commercial__item svg{
  color:var(--color-action);
  flex-shrink:0;
  margin-top:2px;
}

.sl-commercial__actions{
  display:flex;
  align-items:center;
  gap:var(--space-3);
  flex-wrap:wrap;
}

.sl-commercial__visual{
  position:relative;
  border-radius:var(--radius-lg);
  overflow:hidden;
  aspect-ratio:4/3;
  background:var(--color-bg-alt);
}

.sl-commercial__image{
  width:100%;
  height:100%;
  object-fit:cover;
}

.sl-commercial__placeholder{
  width:100%;
  height:100%;
  background:linear-gradient(135deg,var(--color-bg-alt) 0%,#E8EEE9 100%);
}

@media(max-width:991px){
  .sl-commercial__grid{grid-template-columns:1fr;gap:var(--space-8);}
  .sl-commercial__visual{aspect-ratio:16/9;}
}

@media(max-width:600px){
  .sl-commercial__list{grid-template-columns:1fr;}
  .sl-commercial__actions{flex-direction:column;align-items:stretch;}
  .sl-commercial__actions a{justify-content:center;}
}


/* ===== 22-results-gallery.css ===== */
/* 22-results-gallery.css */
.results-strip{padding-block:var(--section-pad-y);overflow:hidden;}
.results-strip__header{text-align:center;margin-bottom:var(--space-8);}
.results-strip__track{overflow:hidden;position:relative;}
.results-strip__scroll{display:flex;gap:var(--space-4);animation:results-scroll 40s linear infinite;width:max-content;}
@keyframes results-scroll{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}
.results-cell{flex-shrink:0;width:320px;position:relative;}
.results-cell__image{aspect-ratio:4/3;border-radius:var(--radius-md);overflow:hidden;background:var(--color-bg-alt);}
.results-cell__image img{width:100%;height:100%;object-fit:cover;}
.results-cell__treatment{display:block;margin-top:var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-muted);text-align:center;}
.results-strip__footer{text-align:center;margin-top:var(--space-6);}
.results-strip__link{font-weight:var(--weight-semibold);font-size:var(--text-sm);color:var(--color-action-text);display:inline-flex;align-items:center;gap:var(--space-2);transition:var(--transition-color);}
.results-strip__link:hover{color:var(--color-action);}


/* ===== 23-service-cards.css ===== */
/* 23-service-cards.css */
.service-card{display:flex;flex-direction:column;border-radius:var(--radius-lg);overflow:hidden;background:var(--color-bg-white);border:1px solid var(--color-border);transition:var(--transition-shadow);}
.service-card:hover{box-shadow:var(--shadow-card-hover);border-color:var(--color-border-hover);}
.service-card__image{height:200px;overflow:hidden;background:var(--color-bg-alt);}
.service-card__image-inner{width:100%;height:100%;}
.service-card__image-inner img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-slow) var(--ease-out);}
.service-card:hover .service-card__image-inner img{transform:scale(1.03);}
.service-card__body{padding:var(--space-6);flex:1;display:flex;flex-direction:column;}
.service-card__title{font-size:var(--text-lg);margin-bottom:var(--space-2);}
.service-card__desc{font-size:var(--text-sm);color:var(--color-text-muted);flex:1;margin-bottom:var(--space-3);}
.service-card__link{font-weight:var(--weight-semibold);font-size:var(--text-sm);color:var(--color-action-text);margin-top:auto;}


/* ===== 24-comparison.css ===== */
/* 24-comparison.css – Why Choose LGC feature comparison table */
.cmp-section__header{text-align:center;margin-bottom:var(--space-8);}
.cmp-table-wrap{overflow-x:auto;border-radius:var(--radius-lg);border:1px solid var(--color-border);background:var(--color-bg-white);}
.cmp-table{width:100%;border-collapse:collapse;min-width:480px;}
.cmp-table th,.cmp-table td{padding:var(--space-4) var(--space-5);text-align:left;border-bottom:1px solid var(--color-border);}
.cmp-table thead th{font-size:var(--text-sm);font-weight:var(--weight-bold);letter-spacing:var(--tracking-wide);background:var(--color-bg-alt);}
.cmp-table__lgc,.cmp-table__other{text-align:center;width:22%;}
.cmp-table thead .cmp-table__lgc{color:var(--color-action-deep);}
.cmp-table tbody tr:last-child td{border-bottom:none;}
.cmp-table tbody tr:nth-child(even){background:var(--color-bg-alt);}
.cmp-table__feature{font-weight:var(--weight-medium);color:var(--color-text-body);}
.cmp-check{color:var(--color-action);vertical-align:middle;}
.cmp-cross{color:var(--color-border-hover);opacity:.6;vertical-align:middle;}
@media(max-width:600px){.cmp-table th,.cmp-table td{padding:var(--space-3);}}


/* ===== 25-home-extras.css ===== */
/* 25-home-extras.css – homepage video section + certifications carousel */

/* --- Video section --- */
.video-section__header{text-align:center;margin-bottom:var(--space-6);}
.video-section__embed{position:relative;width:100%;max-width:900px;margin:0 auto;aspect-ratio:16/9;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-card);background:#000;}
.video-section__embed iframe,
.video-section__embed video{position:absolute;inset:0;width:100%;height:100%;border:0;}

/* --- Certifications carousel --- */
.certs-carousel__header{text-align:center;margin-bottom:var(--space-6);}
.certs-carousel__viewport{overflow:hidden;position:relative;-webkit-mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent);}
.certs-carousel__track{display:flex;align-items:center;gap:var(--space-10);width:max-content;animation:certs-scroll 30s linear infinite;}
.certs-carousel__item{flex:0 0 auto;display:flex;align-items:center;justify-content:center;height:90px;}
.certs-carousel__logo{max-height:90px;width:auto;object-fit:contain;filter:grayscale(100%);opacity:.7;transition:filter var(--duration-base) var(--ease-out),opacity var(--duration-base) var(--ease-out);}
.certs-carousel__item:hover .certs-carousel__logo{filter:grayscale(0);opacity:1;}
.certs-carousel__viewport:hover .certs-carousel__track{animation-play-state:paused;}
@keyframes certs-scroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}
@media(prefers-reduced-motion:reduce){.certs-carousel__track{animation:none;flex-wrap:wrap;justify-content:center;width:auto;}}
/* Partner logos read larger than cert badges — client names are a
   stronger trust signal and several are wordmarks that need the width. */
.certs-carousel--partners .certs-carousel__item{height:150px;}
/* Name-drop bands show logos in their true colors (no grayscale), per client
   request. Scoped to --partners so the certifications carousel keeps its
   muted treatment. */
.certs-carousel--partners .certs-carousel__logo{max-height:150px;filter:none;opacity:1;}

/* ===== 26-service-pages.css ===== */
/* 26-service-pages.css – residential & commercial service templates */

/* Shared hero actions */
.svc-hero__actions{display:flex;justify-content:center;gap:var(--space-3);flex-wrap:wrap;margin-top:var(--space-6);}

/* Shared section head */
.comm-section-head{text-align:center;max-width:760px;margin:0 auto var(--space-8);}

/* Split layout (challenges) */
.comm-split{display:grid;grid-template-columns:1.2fr 1fr;gap:var(--space-10);align-items:center;}
.comm-split__img{width:100%;height:auto;border-radius:var(--radius-lg);box-shadow:var(--shadow-card);}
.comm-prose{color:var(--color-text-body);line-height:var(--leading-loose);margin-bottom:var(--space-4);}
.comm-bullets{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-3);}
.comm-bullets--challenges li{position:relative;padding-left:var(--space-6);color:var(--color-text-body);}
.comm-bullets--challenges li::before{content:"";position:absolute;left:0;top:.55em;width:8px;height:8px;border-radius:50%;background:var(--color-action);}
@media(max-width:860px){.comm-split{grid-template-columns:1fr;gap:var(--space-6);}}

/* Advantages grid */
.comm-advantages__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-6);}
.comm-advantage{display:flex;gap:var(--space-3);align-items:flex-start;}
.comm-advantage__check{flex-shrink:0;color:var(--color-action);margin-top:2px;}
.comm-advantage__title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-semibold);margin-bottom:var(--space-1);}
.comm-advantage__desc{color:var(--color-text-muted);line-height:var(--leading-normal);}
@media(max-width:760px){.comm-advantages__grid{grid-template-columns:1fr;}}

/* Process grid (commercial) */
.comm-process__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-6);}
.comm-process__step{text-align:center;padding:var(--space-5);}
.comm-process__num{width:48px;height:48px;border-radius:50%;background:var(--color-action);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:var(--weight-bold);font-size:var(--text-lg);margin:0 auto var(--space-4);}
.comm-process__title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-semibold);margin-bottom:var(--space-2);}
.comm-process__desc{color:var(--color-text-muted);line-height:var(--leading-normal);}

/* Maintenance */
.comm-maintenance__list{display:grid;gap:var(--space-5);}
.comm-maintenance__title{font-family:var(--font-heading);font-size:var(--text-base);font-weight:var(--weight-semibold);margin-bottom:var(--space-1);}
.comm-maintenance__desc{color:var(--color-text-muted);line-height:var(--leading-normal);}

/* Color swatches */
.color-swatches__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-5);max-width:840px;margin:0 auto;}
@media(max-width:600px){.color-swatches__grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:400px){.color-swatches__grid{grid-template-columns:1fr;}}.color-swatch{margin:0;text-align:center;}
.color-swatch__img{border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm);aspect-ratio:1/1;}.color-swatch__img img{width:100%;height:100%;object-fit:cover;}
.color-swatch__name{margin-top:var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-medium);}
.color-swatches__note{text-align:center;margin-top:var(--space-6);}

/* Specs PDF button + warranty line */
.specs-section__warranty{text-align:center;color:var(--color-text-muted);font-size:var(--text-sm);margin-top:var(--space-5);}
.specs-section__cta{text-align:center;margin-top:var(--space-5);}

/* Residential intro media */
.svc-explain__media{display:flex;align-items:center;}
.svc-explain__img{width:100%;height:auto;border-radius:var(--radius-lg);box-shadow:var(--shadow-card);}

/* Residential 6-feature grid */
.svc-features__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}
.svc-feature{padding:var(--space-5);background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);}
.svc-feature__title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-semibold);margin-bottom:var(--space-2);}
.svc-feature__desc{color:var(--color-text-muted);line-height:var(--leading-normal);}
@media(max-width:860px){.svc-features__grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.svc-features__grid{grid-template-columns:1fr;}}

/* Residential "why you'll love it" */
.svc-love__list{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4);max-width:760px;margin:0 auto;}
.svc-love__item{display:flex;gap:var(--space-3);align-items:flex-start;}
@media(max-width:560px){.svc-love__list{grid-template-columns:1fr;}}


/* ===== 27-landing-pages.css ===== */
/* 27-landing-pages.css – residential & commercial category hubs */

/* Four-card grid (residential surfaces) */
.aes-grid--four{grid-template-columns:repeat(4,1fr);}
@media(max-width:1000px){.aes-grid--four{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.aes-grid--four{grid-template-columns:1fr;}}

/* Three-up advantages variant */
.comm-advantages__grid--three{grid-template-columns:repeat(3,1fr);}
@media(max-width:860px){.comm-advantages__grid--three{grid-template-columns:1fr;}}

/* Commercial industry cards (image + title + bullets) */
.lc-industries__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}
.lc-industry{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;}
.lc-industry__image{aspect-ratio:16/9;overflow:hidden;}
.lc-industry__image img{width:100%;height:100%;object-fit:cover;}
.lc-industry__body{padding:var(--space-5);}
.lc-industry__title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-semibold);margin-bottom:var(--space-2);}
.lc-industry__title a{color:inherit;text-decoration:none;}
.lc-industry__title a:hover{color:var(--color-action);}
.lc-industry__desc{color:var(--color-text-muted);font-size:var(--text-sm);line-height:var(--leading-normal);margin-bottom:var(--space-3);}
.lc-industry__list{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-1);}
.lc-industry__list li{position:relative;padding-left:var(--space-5);font-size:var(--text-sm);color:var(--color-text-body);}
.lc-industry__list li::before{content:"";position:absolute;left:0;top:.5em;width:6px;height:6px;border-radius:50%;background:var(--color-action);}
@media(max-width:1000px){.lc-industries__grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:600px){.lc-industries__grid{grid-template-columns:1fr;}}

/* Commercial case-study PDF cards */
.lc-cases__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}
.lc-case{display:flex;flex-direction:column;text-decoration:none;background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;transition:box-shadow var(--duration-base) var(--ease-out);}
.lc-case:hover{box-shadow:var(--shadow-card);}
.lc-case__image{aspect-ratio:3/4;overflow:hidden;}
.lc-case__image img{width:100%;height:100%;object-fit:cover;}
.lc-case__title{display:flex;align-items:center;gap:var(--space-2);justify-content:center;padding:var(--space-4);font-weight:var(--weight-semibold);color:var(--color-action-deep);}
@media(max-width:860px){.lc-cases__grid{grid-template-columns:1fr;}}


/* ===== 28-location.css ===== */
/* 28-location.css – corporate location page */

/* Info bar under hero */
.loc-info-bar{background:var(--color-bg-white);border-bottom:1px solid var(--color-border);padding:var(--space-6) 0;}
.loc-info-bar__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-6);}
.loc-info{display:flex;gap:var(--space-3);align-items:flex-start;}
.loc-info svg{flex-shrink:0;color:var(--color-action);margin-top:3px;}
.loc-info__label{display:block;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--color-text-muted);font-weight:var(--weight-semibold);}
.loc-info__value{display:block;color:var(--color-text-body);font-weight:var(--weight-medium);}
a.loc-info__value:hover{color:var(--color-action);}
.loc-info__link{display:inline-block;margin-top:var(--space-1);font-size:var(--text-sm);color:var(--color-action);}

/* Services chips */
.loc-services__grid{display:flex;flex-wrap:wrap;gap:var(--space-3);justify-content:center;}
.loc-service-chip{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-pill,999px);font-weight:var(--weight-medium);color:var(--color-text-body);text-decoration:none;transition:border-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out);}
a.loc-service-chip:hover{border-color:var(--color-action);color:var(--color-action);}

/* Service area + map */
.loc-area__grid{display:grid;grid-template-columns:1fr 1.2fr;gap:var(--space-10);align-items:center;}
.loc-area__list{list-style:none;padding:0;margin:var(--space-5) 0 0;display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2);}
.loc-area__list li{position:relative;padding-left:var(--space-5);color:var(--color-text-body);}
.loc-area__list li::before{content:"";position:absolute;left:0;top:.55em;width:7px;height:7px;border-radius:50%;background:var(--color-action);}
@media(max-width:860px){.loc-area__grid{grid-template-columns:1fr;gap:var(--space-6);}}
@media(max-width:480px){.loc-area__list{grid-template-columns:1fr;}}


/* ===== 29-blog.css ===== */
/* 29-blog.css – blog archive + single post (adapted from LPVI build)
 * Fully tokenized; inherits LGC palette from 00-tokens.css.
 * Two tokens LGC doesn't define are added here so this file is self-contained.
 */
:root{
  --space-14: 3.5rem;   /* LGC defines 12 (3rem) and 16 (4rem); 14 sits between */
  --weight-black: 900;  /* LGC tops out at extrabold (800) */
}

/*
 * LPVI — Blog Archive + Single Post
 * blog.css
 */

/* ══════════════════════════════════════
   ARCHIVE — HERO
══════════════════════════════════════ */

.blog-hero {
  background: var(--color-bg-alt);
  border-bottom: 0.5px solid var(--color-border);
}

/* ══════════════════════════════════════
   ARCHIVE — FEATURED POST
══════════════════════════════════════ */

.blog-featured-section {
  background: var(--color-bg-white);
}

.blog-featured {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-radius: var(--radius-xl);
  overflow: hidden;
  border: 0.5px solid var(--color-border);
  text-decoration: none;
  transition:
    box-shadow  var(--duration-slow) var(--ease-out),
    transform   var(--duration-slow) var(--ease-out);
  min-height: 480px;
}

.blog-featured:hover {
  box-shadow: 0 20px 60px rgba(26,43,60,0.12);
  transform: translateY(-3px);
}

.blog-featured__image {
  position: relative;
  overflow: hidden;
}

.blog-featured__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
  transition: transform 0.7s var(--ease-out);
}

.blog-featured:hover .blog-featured__image img {
  transform: scale(1.04);
}

.blog-featured__image-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient( to right, transparent 60%, rgba(246,251,255,0.20) 100% );
  pointer-events: none;
}

.blog-featured__content {
  padding: var(--space-12) var(--space-10);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--space-4);
  background: var(--color-bg-white);
}

.blog-featured__meta {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  flex-wrap: wrap;
}

.blog-featured__date {
  font-size: var(--text-xs);
  color: var(--color-text-muted);
  letter-spacing: var(--tracking-wide);
}

.blog-featured__title {
  font-family: var(--font-heading);
  font-size: var(--text-2xl);
  font-weight: var(--weight-black);
  color: var(--color-text-primary);
  line-height: var(--leading-snug);
  letter-spacing: var(--tracking-tight);
}

.blog-featured__excerpt {
  font-size: var(--text-base);
  color: var(--color-text-body);
  line-height: var(--leading-normal);
}

.blog-featured__cta {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--color-action-text);
  transition: gap var(--duration-base) var(--ease-out);
}

.blog-featured:hover .blog-featured__cta { gap: var(--space-3); }

/* ══════════════════════════════════════
   ARCHIVE — CARD GRID
══════════════════════════════════════ */

.blog-grid-section { background: var(--color-bg-alt); }

.blog-grid-header {
  margin-bottom: var(--space-8);
}

.blog-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-6);
}

.blog-grid--3 { grid-template-columns: repeat(3, 1fr); }

.blog-card {
  background: var(--color-bg-white);
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  text-decoration: none;
  transition:
    box-shadow  var(--duration-slow) var(--ease-out),
    transform   var(--duration-slow) var(--ease-out),
    border-color var(--duration-fast) var(--ease-out);
}

.blog-card:hover {
  box-shadow: var(--shadow-card-hover);
  transform: translateY(-4px);
  border-color: rgba(107,191,154,0.40);
}

.blog-card__image {
  height: 200px;
  overflow: hidden;
  flex-shrink: 0;
}

.blog-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.6s var(--ease-out);
}

.blog-card:hover .blog-card__image img { transform: scale(1.05); }

.blog-card__image--placeholder {
  background: var(--color-bg-alt);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-border-strong);
}

.blog-card__body {
  padding: var(--space-5) var(--space-5) var(--space-6);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  flex: 1;
}

.blog-card__cat {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-widest);
  text-transform: uppercase;
  color: var(--color-action-text);
  display: block;
}

.blog-card__title {
  font-family: var(--font-heading);
  font-size: var(--text-base);
  font-weight: var(--weight-bold);
  color: var(--color-text-primary);
  line-height: var(--leading-snug);
}

.blog-card__excerpt {
  font-size: var(--text-sm);
  color: var(--color-text-body);
  line-height: var(--leading-normal);
  flex: 1;
}

.blog-card__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: var(--space-3);
  padding-top: var(--space-3);
  border-top: 0.5px solid var(--color-border);
}

.blog-card__date {
  font-size: var(--text-xs);
  color: var(--color-text-muted);
}

.blog-card__read {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--color-action-text);
}

/* ══════════════════════════════════════
   PAGINATION
══════════════════════════════════════ */

.blog-pagination {
  margin-top: var(--space-12);
  display: flex;
  justify-content: center;
}

.blog-pagination .page-numbers {
  display: inline-flex;
  list-style: none;
  gap: var(--space-2);
  padding: 0;
  margin: 0;
}

.blog-pagination .page-numbers li a,
.blog-pagination .page-numbers li span {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 var(--space-3);
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-text-primary);
  background: var(--color-bg-white);
  border: 0.5px solid var(--color-border);
  text-decoration: none;
  transition: all var(--duration-fast) var(--ease-out);
}

.blog-pagination .page-numbers li a:hover {
  border-color: rgba(107,191,154,0.50);
  color: var(--color-action-text);
}

.blog-pagination .page-numbers li span.current {
  background: var(--color-action);
  border-color: var(--color-action);
  color: white;
}

/* ══════════════════════════════════════
   SINGLE — HERO
══════════════════════════════════════ */

.blog-post-hero {
  background: var(--color-bg-alt);
  border-bottom: 0.5px solid var(--color-border);
  padding-block: var(--space-12) var(--space-10);
}

.blog-post-hero__title {
  font-family: var(--font-heading);
  font-size: clamp( 1.75rem, 4vw, 2.75rem );
  font-weight: var(--weight-black);
  color: var(--color-text-primary);
  line-height: var(--leading-snug);
  letter-spacing: var(--tracking-tight);
  margin-top: var(--space-4);
  max-width: 820px;
}

.blog-post-hero__meta {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  margin-top: var(--space-5);
  font-size: var(--text-sm);
  color: var(--color-text-muted);
  flex-wrap: wrap;
}

.blog-post-hero__sep {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--color-border-strong);
  display: inline-block;
  flex-shrink: 0;
}

/* ══════════════════════════════════════
   SINGLE — FEATURED IMAGE
══════════════════════════════════════ */

.blog-post-thumb {
  background: var(--color-bg-white);
  padding-top: var(--space-8);
}

.blog-post-thumb__wrap {
  border-radius: var(--radius-xl);
  overflow: hidden;
  max-height: 520px;
}

.blog-post-thumb__wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* ══════════════════════════════════════
   SINGLE — CONTENT + SIDEBAR GRID
══════════════════════════════════════ */

.blog-post-grid {
  display: grid;
  grid-template-columns: 1fr 300px;
  gap: var(--space-14);
  align-items: start;
}

/* ── Post content typography ── */

.blog-post-content {
  min-width: 0;
}

.post-content h2 {
  font-family: var(--font-heading);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-text-primary);
  line-height: var(--leading-snug);
  letter-spacing: var(--tracking-tight);
  margin-top: var(--space-10);
  margin-bottom: var(--space-4);
  scroll-margin-top: 100px;
}

.post-content h3 {
  font-family: var(--font-heading);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  color: var(--color-text-primary);
  margin-top: var(--space-8);
  margin-bottom: var(--space-3);
  scroll-margin-top: 100px;
}

.post-content p {
  font-size: var(--text-base);
  color: var(--color-text-body);
  line-height: var(--leading-loose);
  margin-bottom: var(--space-5);
}

.post-content ul,
.post-content ol {
  padding-left: var(--space-6);
  margin-bottom: var(--space-5);
}

.post-content li {
  font-size: var(--text-base);
  color: var(--color-text-body);
  line-height: var(--leading-normal);
  margin-bottom: var(--space-2);
}

.post-content ul li::marker { color: var(--color-action); }

.post-content blockquote {
  border-left: 3px solid var(--color-action);
  margin: var(--space-8) 0;
  padding: var(--space-4) var(--space-6);
  background: rgba(107,191,154,0.05);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  font-size: var(--text-base);
  color: var(--color-text-primary);
  font-style: italic;
  line-height: var(--leading-normal);
}

.post-content img {
  max-width: 100%;
  border-radius: var(--radius-lg);
  display: block;
  margin-block: var(--space-6);
}

.post-content a {
  color: var(--color-action-text);
  text-decoration: underline;
  text-decoration-color: rgba(107,191,154,0.40);
  text-underline-offset: 3px;
  transition: text-decoration-color var(--duration-fast) var(--ease-out);
}

.post-content a:hover { text-decoration-color: var(--color-action-text); }

.post-content strong { font-weight: var(--weight-semibold); color: var(--color-text-primary); }

/* ── Tags ── */

.blog-post-tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-top: var(--space-10);
  padding-top: var(--space-8);
  border-top: 0.5px solid var(--color-border);
}

.blog-post-tag {
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  color: var(--color-text-muted);
  background: var(--color-bg-alt);
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-full);
  padding: var(--space-1) var(--space-3);
  text-decoration: none;
  transition:
    border-color var(--duration-fast) var(--ease-out),
    color        var(--duration-fast) var(--ease-out);
}

.blog-post-tag:hover {
  border-color: rgba(107,191,154,0.50);
  color: var(--color-action-text);
}

/* ── Author box ── */

.blog-post-author {
  display: flex;
  align-items: flex-start;
  gap: var(--space-5);
  margin-top: var(--space-8);
  padding: var(--space-6);
  background: var(--color-bg-alt);
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-lg);
}

.blog-post-author__avatar {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  border: 2px solid rgba(107,191,154,0.30);
}

.blog-post-author__name {
  font-family: var(--font-heading);
  font-size: var(--text-base);
  font-weight: var(--weight-bold);
  color: var(--color-text-primary);
  margin-bottom: 2px;
}

.blog-post-author__creds {
  font-size: var(--text-xs);
  color: var(--color-action-text);
  font-weight: var(--weight-medium);
  letter-spacing: var(--tracking-wide);
  margin-bottom: var(--space-2);
}

.blog-post-author__bio {
  font-size: var(--text-sm);
  color: var(--color-text-body);
  line-height: var(--leading-normal);
}

/* ── Disclaimer ── */

.blog-post-disclaimer {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  margin-top: var(--space-5);
  padding: var(--space-4) var(--space-5);
  background: var(--color-bg-alt);
  border-radius: var(--radius-md);
  border: 0.5px solid var(--color-border);
}

.blog-post-disclaimer p {
  font-size: var(--text-xs);
  color: var(--color-text-muted);
  line-height: var(--leading-normal);
  margin: 0;
}

/* ══════════════════════════════════════
   SINGLE — SIDEBAR
══════════════════════════════════════ */

.blog-post-sidebar { min-width: 0; }

.blog-sidebar-sticky {
  position: sticky;
  top: 100px;
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}

/* ── TOC ── */

.blog-toc {
  background: var(--color-bg-white);
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5) var(--space-5);
}

.blog-toc__heading {
  font-family: var(--font-heading);
  font-size: var(--text-sm);
  font-weight: var(--weight-bold);
  color: var(--color-text-primary);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  margin-bottom: var(--space-4);
}

.blog-toc__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.blog-toc__item { }

.blog-toc__item--h3 { padding-left: var(--space-4); }

.blog-toc__link {
  display: block;
  font-size: var(--text-sm);
  color: var(--color-text-body);
  text-decoration: none;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  border-left: 2px solid transparent;
  line-height: var(--leading-snug);
  transition:
    color        var(--duration-fast) var(--ease-out),
    border-color var(--duration-fast) var(--ease-out),
    background   var(--duration-fast) var(--ease-out);
}

.blog-toc__link:hover,
.blog-toc__link.is-active {
  color: var(--color-action-text);
  border-left-color: var(--color-action);
  background: rgba(107,191,154,0.06);
}

/* ── Sidebar CTA ── */

.blog-sidebar-cta {
  background: var(--color-navy);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  position: relative;
  overflow: hidden;
}

.blog-sidebar-cta::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient( ellipse at 100% 0%, rgba(107,191,154,0.15) 0%, transparent 60% );
  pointer-events: none;
}

.blog-sidebar-cta__label {
  font-family: var(--font-heading);
  font-size: var(--text-base);
  font-weight: var(--weight-bold);
  color: white;
  margin-bottom: var(--space-2);
  position: relative;
}

.blog-sidebar-cta__sub {
  font-size: var(--text-sm);
  color: rgba(255,255,255,0.65);
  line-height: var(--leading-normal);
  margin-bottom: var(--space-5);
  position: relative;
}

.blog-sidebar-cta .btn-ghost {
  border-color: rgba(255,255,255,0.20);
  color: rgba(255,255,255,0.80);
}

.blog-sidebar-cta .btn-ghost:hover {
  border-color: rgba(255,255,255,0.50);
  color: white;
}

/* ══════════════════════════════════════
   SINGLE — RELATED
══════════════════════════════════════ */

.blog-related { }

/* ══════════════════════════════════════
   RESPONSIVE
══════════════════════════════════════ */

@media (max-width: 1024px) {
  .blog-grid           { grid-template-columns: repeat(2, 1fr); }
  .blog-grid--3        { grid-template-columns: repeat(2, 1fr); }
  .blog-post-grid      { grid-template-columns: 1fr 260px; gap: var(--space-10); }
}

@media (max-width: 860px) {
  .blog-featured       { grid-template-columns: 1fr; min-height: auto; }
  .blog-featured__image { height: 280px; }
  .blog-post-grid      { grid-template-columns: 1fr; }
  .blog-post-sidebar   { order: -1; }
  .blog-sidebar-sticky { position: static; flex-direction: row; flex-wrap: wrap; }
  .blog-toc            { flex: 1; min-width: 240px; }
  .blog-sidebar-cta    { flex: 1; min-width: 240px; }
}

@media (max-width: 640px) {
  .blog-grid           { grid-template-columns: 1fr; }
  .blog-grid--3        { grid-template-columns: 1fr; }
  .blog-post-author    { flex-direction: column; }
  .blog-sidebar-sticky { flex-direction: column; }
}


/* ===== 30-coverage-fixes.css ===== */
/* 30-coverage-fixes.css – fills class-coverage gaps found in pre-launch audit */

/* --- Commercial service: split-section wrapper children --- */
.comm-split__text{min-width:0;}
.comm-split__media{min-width:0;display:flex;align-items:center;}

/* --- Maintenance / why list items (consistent block spacing) --- */
.comm-maintenance__item{padding:var(--space-4) 0;border-bottom:1px solid var(--color-border);}
.comm-maintenance__item:last-child{border-bottom:none;}

/* --- Gallery CTA block --- */
.gallery-content__cta{padding-top:var(--space-6);border-top:1px solid var(--color-border);}

/* --- Blog: layout wrapper + TOC nav container (missing from merged LPVI css) --- */
.blog-post-layout{padding-top:var(--space-10);}
.blog-toc__nav{margin-top:var(--space-2);}
.blog-toc__empty{margin:0;}
.blog-post-author__info{flex:1;min-width:0;}


/* ===== 31-quote-funnel.css ===== */
/* 31-quote-funnel.css – quote chooser, quote form, why-us extras */

/* --- Quote chooser --- */
.quote-chooser{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-6);max-width:820px;margin:0 auto;}
.quote-choice{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-10) var(--space-6);background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-decoration:none;transition:box-shadow var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out);}
.quote-choice:hover{box-shadow:var(--shadow-md);transform:translateY(-3px);border-color:var(--color-action);}
.quote-choice__icon{width:80px;height:80px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--color-bg-alt);color:var(--color-action);margin-bottom:var(--space-5);}
.quote-choice__title{font-family:var(--font-heading);font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-2);}
.quote-choice__desc{color:var(--color-text-muted);line-height:var(--leading-normal);margin-bottom:var(--space-5);}
.quote-choice__cta{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:var(--weight-semibold);color:var(--color-action);margin-top:auto;}
@media(max-width:600px){.quote-chooser{grid-template-columns:1fr;}}

/* --- Quote form layout --- */
.quote-form-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:var(--space-10);align-items:start;}
.quote-form-grid__form{min-width:0;}
.hs-form-wrap{min-height:200px;}
.quote-form__tcpa{font-size:var(--text-xs);color:var(--color-text-muted);line-height:var(--leading-normal);margin-top:var(--space-4);}
.quote-info-card{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-5);}
.quote-info-card h2{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-4);}
.quote-info-card--call p{color:var(--color-text-muted);margin-bottom:var(--space-4);}
.quote-expect{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-3);}
.quote-expect li{display:flex;gap:var(--space-3);align-items:flex-start;}
.quote-expect svg{flex-shrink:0;color:var(--color-action);margin-top:2px;}
@media(max-width:860px){.quote-form-grid{grid-template-columns:1fr;gap:var(--space-8);}}


/* ===== 32-home-findus.css ===== */
/* 32-home-findus.css – why-section intro + reworked Find Us location cards */

/* Why-section intro paragraph */
.why-section__intro{max-width:760px;margin:var(--space-4) auto 0;color:rgba(255,255,255,.88);line-height:var(--leading-loose);font-size:var(--text-lg);text-align:center;}

/* Find Us — section header */
.find-us__header{text-align:center;margin-bottom:var(--space-10);}

/* Find Us — location cards */
.find-us__locations{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-5);margin-top:var(--space-8);}
.find-us__loc-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-2);padding:var(--space-6);background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-decoration:none;transition:box-shadow var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out);}
a.find-us__loc-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px);border-color:var(--color-action);}
.find-us__loc-pin{color:var(--color-action);}
.find-us__loc-name{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text-primary);}
.find-us__loc-region{font-size:var(--text-sm);color:var(--color-text-muted);}
.find-us__loc-link{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-action);margin-top:var(--space-1);}
.find-us__actions{display:flex;gap:var(--space-3);justify-content:center;flex-wrap:wrap;margin-top:var(--space-8);}

/* ===== 33-residential-landing.css ===== */
/* 33-residential-landing.css – residential landing adjustments (Michael feedback) */

/* Taller hero so the image is more visible */
.svc-hero--tall{min-height:88vh;display:flex;align-items:center;}
.svc-hero--tall .svc-hero__content{padding-block:var(--space-16);}

/* Green callback button in hero */
.btn-callback{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);background:var(--color-action-deep);color:#fff;border:none;border-radius:var(--radius-full);font-weight:var(--weight-semibold);font-size:var(--text-base);cursor:pointer;text-decoration:none;transition:filter var(--duration-base) var(--ease-out);}
.btn-callback:hover{filter:brightness(1.08);}

/* Full-width banner cards (Garage Floors / Garage Cabinets): image left, text right */
.aes-banner{display:grid;grid-template-columns:1fr 1fr;gap:0;background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;text-decoration:none;color:inherit;transition:box-shadow var(--duration-base) var(--ease-out);}
.aes-banner:hover{box-shadow:var(--shadow-md);}
.aes-banner--mt{margin-top:var(--space-6);}
.aes-banner__image{min-height:280px;overflow:hidden;}
.aes-banner__image img{width:100%;height:100%;object-fit:cover;display:block;}
.aes-banner__body{padding:var(--space-8);display:flex;flex-direction:column;justify-content:center;}
.aes-banner__title{font-family:var(--font-heading);font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-3);}
.aes-banner__desc{color:var(--color-text-body);line-height:var(--leading-loose);}
.aes-grid--four{margin-top:var(--space-6);}
@media(max-width:760px){.aes-banner{grid-template-columns:1fr;}.aes-banner__image{min-height:220px;}}

/* Love Your Surfaces — side by side instead of stacked */
.lr-love__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}
.lr-love__card{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);}
.lr-love__title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-2);}
.lr-love__desc{color:var(--color-text-muted);line-height:var(--leading-normal);}
@media(max-width:860px){.lr-love__grid{grid-template-columns:1fr;}}

/* Color swatches: 3 per row on THIS page only (scoped to avoid affecting commercial) */
.page-template-landing-residential .color-swatches__grid{grid-template-columns:repeat(3,1fr);max-width:1100px;margin-inline:auto;gap:var(--space-6);}
.page-template-landing-residential .color-swatch__img{aspect-ratio:1/1;}
@media(max-width:760px){.page-template-landing-residential .color-swatches__grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:480px){.page-template-landing-residential .color-swatches__grid{grid-template-columns:1fr;}}

/* Hero call button (btn-ghost) — solid white pill so it reads on the bright image */
.svc-hero--tall .btn-ghost{background:#fff;border:none;color:var(--color-action-deep);font-weight:var(--weight-semibold);box-shadow:var(--shadow-sm);}
.svc-hero--tall .btn-ghost:hover{background:#f2f2f2;color:var(--color-action-deep);}

/* ===== 34-commercial-landing.css ===== */
/* 34-commercial-landing.css – commercial landing: hero height + process parallax + why cards */

/* Taller hero (mirrors residential; scoped to commercial page) */
.page-template-landing-commercial .svc-hero--tall{min-height:88vh;display:flex;align-items:center;}
.page-template-landing-commercial .svc-hero--tall .svc-hero__content{padding-block:var(--space-16);}

/* ---- Process: parallax band ---- */
.lc-proc-parallax{position:relative;overflow:hidden;padding-block:var(--space-16);isolation:isolate;}
.lc-proc-parallax__bg{position:absolute;inset:0;z-index:-2;background-image:var(--proc-bg);background-size:cover;background-position:center;background-attachment:fixed;}
.lc-proc-parallax__overlay{position:absolute;inset:0;z-index:-1;background:linear-gradient(135deg,rgba(4,106,56,.88),rgba(49,155,66,.82));}
.lc-proc-parallax__content{position:relative;}
.lc-proc__heading{color:#fff;}
.lc-proc__intro{color:rgba(255,255,255,.9);max-width:680px;margin:var(--space-3) auto 0;text-align:center;line-height:var(--leading-loose);}

/* Frosted glass cards, side by side */
.lc-proc__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);margin-top:var(--space-10);}
.lc-proc__card{background:rgba(255,255,255,.12);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.25);border-radius:var(--radius-lg);padding:var(--space-6);transition:transform var(--duration-base) var(--ease-out),background var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out);}
.lc-proc__card:hover{transform:translateY(-4px);background:rgba(255,255,255,.2);box-shadow:0 12px 32px rgba(0,0,0,.18);}
.lc-proc__card-title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:#fff;margin-bottom:var(--space-2);}
.lc-proc__card-desc{color:rgba(255,255,255,.88);line-height:var(--leading-normal);}
@media(max-width:860px){.lc-proc__grid{grid-template-columns:1fr;}.lc-proc-parallax__bg{background-attachment:scroll;}}

/* ---- Why You'll Appreciate: side-by-side cards (matches residential Love Your Surfaces) ---- */
.lc-why__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}
.lc-why__card{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);}
.lc-why__title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-2);}
.lc-why__desc{color:var(--color-text-muted);line-height:var(--leading-normal);}
@media(max-width:860px){.lc-why__grid{grid-template-columns:1fr;}}

/* ---- Color swatches on commercial: 3-col square (match residential treatment) ---- */
.page-template-landing-commercial .color-swatches__grid{grid-template-columns:repeat(3,1fr);max-width:1100px;margin-inline:auto;gap:var(--space-6);}
.page-template-landing-commercial .color-swatch__img{aspect-ratio:1/1;}
@media(max-width:760px){.page-template-landing-commercial .color-swatches__grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:480px){.page-template-landing-commercial .color-swatches__grid{grid-template-columns:1fr;}}

/* Closing line under the industry grid — signals the list is a sample of
   sectors served rather than the limit of what we cover. */
.lc-industry__more{
  max-width:60rem;
  margin:var(--space-8) auto 0;
  text-align:center;
  font-size:var(--text-md);
  line-height:var(--leading-loose);
  color:var(--color-text-body);
}

/* ── Hero coverage claim ──
   Sits between the H1 and the tagline. Green rather than the heading's dark
   type so it reads as a distinct claim instead of a second heading line, and
   uppercase with wide tracking so it carries at a smaller size than the H1. */
.lc-hero__claim{
  font-family:var(--font-heading);
  font-size:clamp(1.25rem, 2.6vw, 1.875rem);
  font-weight:var(--weight-extrabold);
  letter-spacing:var(--tracking-wide);
  text-transform:uppercase;
  /* The deeper green rather than the brand mid-green: this sits over a
     photograph, and a mid-tone has far less contrast against it than the
     near-black heading above. */
  color:var(--color-action-deep);
  margin:calc(var(--space-2) * -1) 0 var(--space-4);
  line-height:1.15;
  /* Same layered white glow as the hero headings, so the claim is legible
     wherever the image happens to be busy behind it. */
  text-shadow:
    0 0 6px  rgba(255,255,255,1),
    0 0 16px rgba(255,255,255,.98),
    0 0 32px rgba(255,255,255,.9),
    0 0 56px rgba(255,255,255,.7);
}

/* ===== 35-visualizer.css ===== */
/* 35-visualizer.css – dedicated Visualizer page (hero + how-it-works + framed tool) */

/* ---- Hero ---- */
.viz-hero{position:relative;overflow:hidden;min-height:62vh;display:flex;flex-direction:column;justify-content:center;isolation:isolate;}
.viz-hero--plain{background:linear-gradient(135deg,var(--color-action-deep),var(--color-action));}
.viz-hero__bg{position:absolute;inset:0;z-index:-2;background-size:cover;background-position:center;}
.viz-hero__overlay{position:absolute;inset:0;z-index:-1;background:linear-gradient(135deg,rgba(4,106,56,.86),rgba(4,42,30,.78));}
.viz-hero__content{position:relative;text-align:center;max-width:760px;margin-inline:auto;padding-block:var(--space-12);}
.viz-hero__eyebrow{display:inline-block;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);font-weight:var(--weight-bold);color:rgba(255,255,255,.85);background:rgba(255,255,255,.15);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);margin-bottom:var(--space-4);}
.viz-hero__heading{font-family:var(--font-heading);font-size:var(--text-4xl,3.25rem);font-weight:var(--weight-bold);color:#fff;line-height:var(--leading-tight);margin-bottom:var(--space-4);}
.viz-hero__sub{color:rgba(255,255,255,.9);font-size:var(--text-lg);line-height:var(--leading-loose);margin-bottom:var(--space-8);}
.viz-hero__cta{display:inline-flex;align-items:center;gap:var(--space-2);}
.viz-hero .svc-hero__breadcrumb{position:relative;z-index:1;padding-top:var(--space-5);}
.viz-hero .svc-hero__breadcrumb a,.viz-hero .svc-hero__breadcrumb span{color:rgba(255,255,255,.8);}

/* ---- How It Works ---- */
.viz-hiw__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);counter-reset:viz;}
.viz-hiw__step{position:relative;text-align:center;padding:var(--space-8) var(--space-6);background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);transition:transform var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out);}
.viz-hiw__step:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);}
.viz-hiw__icon{width:64px;height:64px;margin:0 auto var(--space-4);border-radius:50%;background:var(--color-bg-alt);color:var(--color-action);display:flex;align-items:center;justify-content:center;}
.viz-hiw__icon svg{width:30px;height:30px;}
.viz-hiw__num{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);font-weight:var(--weight-bold);color:var(--color-action);margin-bottom:var(--space-2);}
.viz-hiw__title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-2);}
.viz-hiw__desc{color:var(--color-text-muted);line-height:var(--leading-normal);}
@media(max-width:860px){.viz-hiw__grid{grid-template-columns:1fr;max-width:480px;margin-inline:auto;}}

/* ---- Framed tool ---- */
.viz-tool__embed{margin-top:var(--space-6);}
/* The FloorViz tool self-frames at 960px; give it a soft surface so it doesn't float */
.viz-tool__embed .lgc-floorviz{margin-inline:auto;}
.viz-tool__embed .lgc-floorviz__card{box-shadow:var(--shadow-lg);}

@media(max-width:760px){.viz-hero{min-height:auto;}}

/* ===== 36-service-pages-v2.css ===== */
/* 36-service-pages-v2.css – service template card conversions (res love + comm maintenance) */

/* Residential: Why You'll Love It — as cards */
.svc-love__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-5);}
.svc-love__card{display:flex;gap:var(--space-3);align-items:flex-start;background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);transition:transform var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out);}
.svc-love__card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);}
.svc-love__check{flex-shrink:0;color:var(--color-action);margin-top:2px;}
.svc-love__card span{line-height:var(--leading-normal);color:var(--color-text-body);}
@media(max-width:760px){.svc-love__grid{grid-template-columns:1fr;}}

/* Commercial: Maintenance — as side-by-side cards */
.comm-maintenance__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}
.comm-maintenance__card{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);transition:transform var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out);}
.comm-maintenance__card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);}
.comm-maintenance__card .comm-maintenance__title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-2);}
.comm-maintenance__card .comm-maintenance__desc{color:var(--color-text-muted);line-height:var(--leading-normal);}
@media(max-width:860px){.comm-maintenance__grid{grid-template-columns:1fr;}}


/* ===== 37-service-enhance.css ===== */
/* 37-service-enhance.css – service page enhancements
 * Intro sticky image, elegant feature cards, why-love parallax, green-border call btn,
 * reviews CTA group spacing.
 */

/* ---- Green-border variant of the call button (intro + reviews groups) ---- */
.btn-ghost--green{background:#fff;border:2px solid var(--color-action);color:var(--color-action-deep);font-weight:var(--weight-semibold);}
.btn-ghost--green:hover{background:var(--color-action);color:#fff;}

/* Shared CTA button group */
.cta-btn-group{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-top:var(--space-8);}

/* ---- Intro: sticky image beside scrolling text ---- */
.svc-explain__grid--sticky{display:grid;grid-template-columns:1.1fr .9fr;gap:var(--space-10);align-items:start;}
.svc-explain__media--sticky{position:sticky;top:5.5rem;}
.svc-explain__media--sticky .svc-explain__img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);display:block;}
@media(max-width:860px){.svc-explain__grid--sticky{grid-template-columns:1fr;}.svc-explain__media--sticky{position:static;}.svc-explain__media--sticky .svc-explain__img{aspect-ratio:auto;}}

/* ---- Feature cards: elegance ---- */
.svc-features__grid--elegant{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}
.svc-features__grid--elegant .svc-feature{position:relative;background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);overflow:hidden;transition:transform var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out);}
.svc-features__grid--elegant .svc-feature::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--color-action),var(--color-action-deep));transform:scaleX(0);transform-origin:left;transition:transform var(--duration-base) var(--ease-out);}
.svc-features__grid--elegant .svc-feature:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:transparent;}
.svc-features__grid--elegant .svc-feature:hover::before{transform:scaleX(1);}
.svc-feature__num{display:block;font-family:var(--font-heading);font-size:var(--text-sm);font-weight:var(--weight-bold);color:var(--color-action);letter-spacing:var(--tracking-wide);margin-bottom:var(--space-2);}
@media(max-width:860px){.svc-features__grid--elegant{grid-template-columns:1fr;}}

/* ---- Why You'll Love It: parallax band (mirror commercial process band) ---- */
.svc-love-parallax{position:relative;overflow:hidden;padding-block:var(--space-16);isolation:isolate;}
.svc-love-parallax__bg{position:absolute;inset:0;z-index:-2;background-image:var(--love-bg);background-size:cover;background-position:center;background-attachment:fixed;}
.svc-love-parallax__overlay{position:absolute;inset:0;z-index:-1;background:linear-gradient(135deg,rgba(4,106,56,.9),rgba(49,155,66,.82));}
.svc-love-parallax__content{position:relative;}
.svc-love__heading{color:#fff;}
.svc-love-parallax .svc-love__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);margin-top:var(--space-8);}
.svc-love-parallax .svc-love__card{display:flex;gap:var(--space-3);align-items:flex-start;background:rgba(255,255,255,.12);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.25);border-radius:var(--radius-lg);padding:var(--space-6);transition:transform var(--duration-base) var(--ease-out),background var(--duration-base) var(--ease-out);}
.svc-love-parallax .svc-love__card:hover{transform:translateY(-4px);background:rgba(255,255,255,.2);}
.svc-love-parallax .svc-love__check{flex-shrink:0;color:#fff;margin-top:2px;}
.svc-love-parallax .svc-love__card span{color:#fff;line-height:var(--leading-normal);}
@media(max-width:860px){.svc-love-parallax .svc-love__grid{grid-template-columns:1fr;}.svc-love-parallax__bg{background-attachment:scroll;}}

/* ---- Reviews CTA group ---- */
.reviews-cta{display:flex;justify-content:center;padding-block:var(--space-8);}
.reviews-cta .cta-btn-group{margin-top:0;justify-content:center;}

/* ---- Card breathing room + symmetry (equal heights) ---- */
/* Feature cards: more internal padding + equal height alignment */
.svc-features__grid--elegant .svc-feature{padding:var(--space-8);min-height:230px;display:flex;flex-direction:column;}
.svc-features__grid--elegant .svc-feature__desc{margin-top:var(--space-1);}

/* Why You'll Love It frosted cards: equal height so they align */
.svc-love-parallax .svc-love__card{min-height:130px;padding:var(--space-6);}

/* Find Us actions: center the button group */
.find-us__actions{display:flex;justify-content:center;}
.find-us__actions .cta-btn-group{margin-top:var(--space-6);justify-content:center;}

/* ===== 38-garage-cabinets.css ===== */
/* 38-garage-cabinets.css – dedicated Garage Cabinets product page */

/* Color options grid */
.cab-colors__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-6);}
.cab-color{margin:0;}
.cab-color__img{aspect-ratio:4/3;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);background:var(--color-bg-alt);}
.cab-color__img img{width:100%;height:100%;object-fit:cover;display:block;}
.cab-color__placeholder{width:100%;height:100%;background:var(--color-bg-alt);}
.cab-color__name{margin-top:var(--space-3);text-align:center;font-family:var(--font-heading);font-weight:var(--weight-semibold);color:var(--color-text-primary);}
@media(max-width:860px){.cab-colors__grid{grid-template-columns:repeat(2,1fr);}}

/* Gallery grid */
.cab-gallery__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4);}
.cab-gallery__item{aspect-ratio:4/3;border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm);}
.cab-gallery__item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--duration-base) var(--ease-out);}
.cab-gallery__item:hover img{transform:scale(1.05);}
@media(max-width:860px){.cab-gallery__grid{grid-template-columns:repeat(2,1fr);}}

/* Process steps */
.cab-colors__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);max-width:900px;margin-inline:auto;}
.cab-process__step{text-align:center;padding:var(--space-6);background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);transition:transform var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out);}
.cab-process__step:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);}
.cab-process__num{display:inline-block;font-family:var(--font-heading);font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--color-action);margin-bottom:var(--space-2);}
.cab-process__title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-2);}
.cab-process__desc{color:var(--color-text-muted);line-height:var(--leading-normal);}
@media(max-width:860px){.cab-process__grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:480px){.cab-process__grid{grid-template-columns:1fr;}}

/* ── Why these cabinets (build quality) ───────────────── */
.cab-quality__header{text-align:center;max-width:52rem;margin:0 auto var(--space-10);}
.cab-quality__intro{margin-top:var(--space-4);font-size:var(--text-md);line-height:var(--leading-loose);color:var(--color-text-body);}
.cab-quality__intro p{margin:0;}

.cab-quality__grid{
  list-style:none;
  margin:0;
  padding:0;
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  gap:var(--space-6);
}

.cab-quality__item{display:flex;gap:var(--space-4);align-items:flex-start;}

.cab-quality__check{
  flex-shrink:0;
  width:28px;
  height:28px;
  border-radius:50%;
  background:var(--color-action);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  margin-top:2px;
}

.cab-quality__title{
  font-family:var(--font-heading);
  font-size:var(--text-base);
  font-weight:var(--weight-semibold);
  color:var(--color-text-primary);
  margin:0 0 var(--space-1);
  line-height:var(--leading-snug);
}

.cab-quality__desc{
  margin:0;
  font-size:var(--text-sm);
  line-height:var(--leading-normal);
  color:var(--color-text-muted);
}

.cab-quality__badge{
  margin:var(--space-10) auto 0;
  max-width:44rem;
  text-align:center;
  font-family:var(--font-heading);
  font-size:var(--text-sm);
  font-weight:var(--weight-semibold);
  color:var(--color-text-primary);
  padding:var(--space-4) var(--space-5);
  background:var(--color-bg-alt);
  border-radius:var(--radius-md);
}

@media(max-width:767px){
  .cab-quality__grid{grid-template-columns:1fr;gap:var(--space-5);}
}

/* ===== 39-gallery-carousel.css ===== */
/* 39-gallery-carousel.css – auto-scroll image marquee (matches reviews style) */

.gallery-carousel__wrap{overflow:hidden;position:relative;padding-block:var(--space-4);margin-top:var(--space-8);}
.gallery-carousel__track{display:flex;gap:var(--space-6);width:max-content;animation:marquee-scroll 70s linear infinite;}
.gallery-carousel__track:hover{animation-play-state:paused;}

.gallery-carousel__item{flex-shrink:0;width:420px;aspect-ratio:3/2;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-md);background:var(--color-bg-alt);}
.gallery-carousel__img{width:100%;height:100%;object-fit:cover;display:block;}

/* Soft fade at the edges so cards glide in/out (matches a polished marquee) */
.gallery-carousel__wrap::before,
.gallery-carousel__wrap::after{content:"";position:absolute;top:0;bottom:0;width:80px;z-index:2;pointer-events:none;}
.gallery-carousel__wrap::before{left:0;background:linear-gradient(to right,var(--color-bg-white),transparent);}
.gallery-carousel__wrap::after{right:0;background:linear-gradient(to left,var(--color-bg-white),transparent);}

@media(max-width:560px){.gallery-carousel__item{width:300px;}}

/* Respect reduced motion: stop the auto-scroll, allow manual horizontal scroll */
@media(prefers-reduced-motion:reduce){
  .gallery-carousel__track{animation:none;width:auto;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;}
  .gallery-carousel__item{scroll-snap-align:start;}
  .gallery-carousel__wrap{overflow:visible;}
}


/* ── Large variant ──
   Used where the images are the content rather than supporting decoration,
   such as an installation sequence on the commercial hub. Wider items and a
   slower scroll so each frame is legible as it passes. */
.gallery-carousel--lg .gallery-carousel__item{width:680px;}
.gallery-carousel--lg .gallery-carousel__track{animation-duration:95s;gap:var(--space-8);}

@media(max-width:900px){
  .gallery-carousel--lg .gallery-carousel__item{width:520px;}
}
@media(max-width:560px){
  .gallery-carousel--lg .gallery-carousel__item{width:320px;}
}

/* ===== 40-colors-page.css ===== */
/* 40-colors-page.css – Floor Coating Colors showcase page */

.colors-intro__body{font-size:var(--text-lg);line-height:var(--leading-loose);color:var(--color-text-body);max-width:760px;margin-inline:auto;}

/* Visualizer CTA band — green gradient, mirrors the hero-vision aesthetic */
.colors-viz-cta{padding-block:var(--space-20);background:linear-gradient(135deg,var(--color-action-deep),var(--color-action));position:relative;overflow:hidden;}
.colors-viz-cta__inner{text-align:center;max-width:680px;margin-inline:auto;position:relative;z-index:1;}
.colors-viz-cta__eyebrow{display:inline-block;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);font-weight:var(--weight-bold);color:rgba(255,255,255,.85);background:rgba(255,255,255,.15);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);margin-bottom:var(--space-4);}
.colors-viz-cta__heading{font-family:var(--font-heading);font-size:var(--text-3xl);font-weight:var(--weight-bold);color:#fff;line-height:var(--leading-tight);margin-bottom:var(--space-4);}
.colors-viz-cta__sub{color:rgba(255,255,255,.9);font-size:var(--text-lg);line-height:var(--leading-loose);margin-bottom:var(--space-8);}
.colors-viz-cta__btn{display:inline-flex;align-items:center;gap:var(--space-2);background:#fff;color:var(--color-action-deep);}
.colors-viz-cta__btn:hover{background:rgba(255,255,255,.9);}

/* Visualizer CTA — parallax variant (image behind green overlay) */
.colors-viz-cta--parallax{position:relative;isolation:isolate;background:none;}
.colors-viz-cta__bg{position:absolute;inset:0;z-index:-2;background-image:var(--viz-bg);background-size:cover;background-position:center;background-attachment:fixed;}
.colors-viz-cta__overlay{position:absolute;inset:0;z-index:-1;background:linear-gradient(135deg,rgba(4,106,56,.9),rgba(49,155,66,.82));}
@media(max-width:860px){.colors-viz-cta__bg{background-attachment:scroll;}}

/* Swatch grid — square tiles at a larger size.
   The base rule in 26-service-pages.css uses aspect-ratio:1/2 with 120px
   columns, which crops the square source images and scales a narrow strip
   up, so they render soft. Squares at 3-4 across match the source aspect
   and stay sharp. Same override the residential/commercial landings use. */
.page-template-colors-page .color-swatches__grid{grid-template-columns:repeat(3,1fr);}
  max-width:1200px;
  margin-inline:auto;
  gap:var(--space-6);
}
.page-template-colors-page .color-swatch__img{
  aspect-ratio:1/1;
}
.page-template-colors-page .color-swatch__name{
  font-size:var(--text-base);
}

/* The colours page hero is already a bright, light photograph, so the global
   brightness lift washes it out. Switched off here only; the heading keeps its
   glow, which is what carries legibility on this page. */
.page-template-colors-page .svc-hero__bg { filter: none; }

@media(max-width:960px){
  .page-template-colors-page .color-swatches__grid{grid-template-columns:repeat(3,1fr);}
}
@media(max-width:760px){
  .page-template-colors-page .color-swatches__grid{grid-template-columns:repeat(2,1fr);}
}
@media(max-width:480px){
  .page-template-colors-page .color-swatches__grid{grid-template-columns:1fr;}
}

/* ===== 41-commercial-service-v2.css ===== */
/* 41-commercial-service-v2.css – commercial service template parity enhancements */

/* ---- Elegant Advantages cards (mirror residential feature cards) ---- */
.comm-advantages__grid--elegant{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}
.comm-advantages__grid--elegant .comm-advantage{position:relative;display:block;background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);overflow:hidden;transition:transform var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out);}
.comm-advantages__grid--elegant .comm-advantage::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--color-action),var(--color-action-deep));transform:scaleX(0);transform-origin:left;transition:transform var(--duration-base) var(--ease-out);}
.comm-advantages__grid--elegant .comm-advantage:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:transparent;}
.comm-advantages__grid--elegant .comm-advantage:hover::before{transform:scaleX(1);}
.comm-advantage__num{display:block;font-family:var(--font-heading);font-size:var(--text-sm);font-weight:var(--weight-bold);color:var(--color-action);letter-spacing:var(--tracking-wide);margin-bottom:var(--space-2);}
@media(max-width:860px){.comm-advantages__grid--elegant{grid-template-columns:1fr;}}

/* ---- Installation Process: parallax band with frosted cards ---- */
.comm-proc-parallax{position:relative;overflow:hidden;padding-block:var(--space-16);isolation:isolate;}
.comm-proc-parallax__bg{position:absolute;inset:0;z-index:-2;background-image:var(--proc-bg);background-size:cover;background-position:center;background-attachment:fixed;}
.comm-proc-parallax__overlay{position:absolute;inset:0;z-index:-1;background:linear-gradient(135deg,rgba(4,106,56,.9),rgba(49,155,66,.82));}
.comm-proc-parallax__content{position:relative;}
.comm-proc__heading{color:#fff;}
.comm-proc__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-6);margin-top:var(--space-10);}
.comm-proc__card{background:rgba(255,255,255,.12);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.25);border-radius:var(--radius-lg);padding:var(--space-6);text-align:center;transition:transform var(--duration-base) var(--ease-out),background var(--duration-base) var(--ease-out);}
.comm-proc__card:hover{transform:translateY(-4px);background:rgba(255,255,255,.2);}
.comm-proc__num{width:44px;height:44px;margin:0 auto var(--space-3);border-radius:50%;background:rgba(255,255,255,.2);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--font-heading);font-weight:var(--weight-bold);font-size:var(--text-lg);}
.comm-proc__title{font-family:var(--font-heading);font-size:var(--text-base);font-weight:var(--weight-semibold);color:#fff;margin-bottom:var(--space-2);}
.comm-proc__desc{color:rgba(255,255,255,.88);font-size:var(--text-sm);line-height:var(--leading-normal);}
@media(max-width:860px){.comm-proc__grid{grid-template-columns:repeat(2,1fr);}.comm-proc-parallax__bg{background-attachment:scroll;}}
@media(max-width:480px){.comm-proc__grid{grid-template-columns:1fr;}}

/* ---- Case Studies (PDF link cards) ---- */
.comm-casestudies__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}
.comm-casestudy{display:flex;flex-direction:column;background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;text-decoration:none;transition:transform var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out);}
.comm-casestudy:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);}
.comm-casestudy__thumb{aspect-ratio:3/2;overflow:hidden;background:var(--color-bg-alt);}
.comm-casestudy__thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.comm-casestudy__thumb--placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-action);}
.comm-casestudy__body{padding:var(--space-5) var(--space-6);display:flex;flex-direction:column;gap:var(--space-2);}
.comm-casestudy__title{font-family:var(--font-heading);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);}
.comm-casestudy__link{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-action-deep);}
@media(max-width:860px){.comm-casestudies__grid{grid-template-columns:1fr;}}

/* ---- Optional video section ---- */
.comm-video__frame{position:relative;width:100%;aspect-ratio:16/9;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-md);margin-top:var(--space-6);}
.comm-video__frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}

/* ---- Challenges: sticky image, matched to the residential intro ----
   The grid was centre-aligned and static, so the image sat still while the
   challenge list scrolled past. align-items:start plus a sticky media column
   brings it in line with .svc-explain__media--sticky. The 5.5rem offset
   clears the sticky site nav, which condenses to 60px on scroll. The 3:2
   ratio matches residential so image heights are uniform site-wide. */
.comm-split { align-items: start; }

.comm-split__media { position: sticky; top: 5.5rem; }

.comm-split__img { aspect-ratio: 3 / 2; object-fit: cover; display: block; }

@media (max-width: 860px) {
  .comm-split__media { position: static; }
  .comm-split__img { aspect-ratio: auto; }
}


/* ── Commercial hero with a lead form ──
   Applied only when a form is configured; pages without one keep
   svc-hero--tall and are untouched. */

/* No 88vh floor: the form card sets the height, so the card sits close under
   the nav instead of floating in the middle of a tall band. */
.svc-hero--form{
  display:flex;
  align-items:center;
}
.svc-hero--form .svc-hero__content{
  padding-block:var(--space-10);
}

/* The copy hangs from the bottom of its column rather than centring. The
   overlay fades from opaque white at the foot of the hero, so centred copy
   lands where the wash is thin and dark type disappears into the photograph.
   Dropping it low puts it over the solid part. The form card is unaffected
   and stays centred. */
.svc-hero--form .loc-hero__copy{
  align-self:end;
  padding-bottom:var(--space-4);
}

/* A denser overlay ramp than the shared one, which fades out by 65% and was
   built for a text-only hero. */
.page-template-service-commercial .svc-hero__overlay{
  background:linear-gradient(to top,
    #fff 0%,
    rgba(255,255,255,.97) 14%,
    rgba(255,255,255,.90) 30%,
    rgba(255,255,255,.78) 44%,
    rgba(255,255,255,.56) 60%,
    rgba(255,255,255,.32) 76%,
    rgba(255,255,255,.12) 90%,
    transparent 100%);
}

/* Same layered glow used on the service and location heroes, so the type
   holds wherever the photograph happens to be busy behind it. */
.page-template-service-commercial .svc-hero__heading{
  text-shadow:
    0 0 6px  rgba(255,255,255,1),
    0 0 16px rgba(255,255,255,.98),
    0 0 34px rgba(255,255,255,.92),
    0 0 60px rgba(255,255,255,.7);
}
.page-template-service-commercial .svc-hero__tagline{
  text-shadow:
    0 0 6px  rgba(255,255,255,1),
    0 0 14px rgba(255,255,255,.95),
    0 0 28px rgba(255,255,255,.8);
}

/* With the spec button removed, the call button is the only action in the
   hero. The ghost style was designed to sit beside a solid primary and is far
   too quiet on its own, so it takes the primary treatment here. */
.svc-hero--form .svc-hero__actions .btn-ghost{
  background:var(--color-cta);
  color:#fff;
  border-color:var(--color-cta);
}
.svc-hero--form .svc-hero__actions .btn-ghost:hover{
  background:var(--color-cta-hover);
  border-color:var(--color-cta-hover);
  color:#fff;
}

@media(max-width:1100px){
  /* ── Mobile: image band, then copy on white ──
     The same shape as the homepage mobile hero. Overlaying dark type on a
     photograph is the whole source of the legibility problem, so on a narrow
     screen the image becomes a fixed band at the top and everything else sits
     on white beneath it. Nothing has to be rescued with gradients or glows,
     and the reading order stays natural: image, heading, sub-heading, call,
     then the form. */
  .svc-hero--form{
    display:block;
    background:var(--color-bg-base);
  }

  /* Image band. position:relative lifts it out of the absolute stack so it
     occupies real height at the top of the section rather than sitting behind
     the content. */
  .svc-hero--form .svc-hero__bg{
    position:relative;
    height:240px;
  }

  /* The overlay only has to soften the join into the white below it now, so
     it drops the heavy ramp used on desktop. */
  .svc-hero--form .svc-hero__overlay{
    background:linear-gradient(to bottom,
      transparent 0%,
      transparent 55%,
      rgba(255,255,255,.35) 78%,
      rgba(255,255,255,.85) 94%,
      var(--color-bg-base) 100%) !important;
    height:240px;
    top:0;
  }

  .svc-hero--form .svc-hero__content{
    padding-block:var(--space-8) var(--space-10);
    text-align:center;
  }

  /* Type is on white now, so the glow comes off and the colours revert. */
  .svc-hero--form .svc-hero__heading,
  .svc-hero--form .svc-hero__tagline{
    text-shadow:none;
    text-align:center;
  }
  .svc-hero--form .svc-hero__heading{color:var(--color-text-primary);}
  .svc-hero--form .svc-hero__tagline{color:var(--color-text-body);}

  .svc-hero--form .loc-hero__copy{align-self:auto;padding-bottom:0;}

  /* Half width, centred. align-items rather than justify-content: the shared
     mobile rule makes this a column flex container, where justify-content
     controls the vertical axis and does nothing horizontally. */
  .svc-hero--form .svc-hero__actions{
    align-items:center;
  }
  .svc-hero--form .svc-hero__actions .btn-ghost{
    width:50%;
    min-width:220px;
    justify-content:center;
  }
}

/* ===== 43-reviews-page.css ===== */
/* =========================================================
   43-reviews-page.css
   Dedicated Reviews page (page-templates/reviews-page.php):
   intro section + gallery-style testimonial card grid.
   Distinct from 09-reviews.css, which styles the scrolling
   marquee used as a section on other pages.
   ========================================================= */

/* ── Intro ────────────────────────────────────────────── */
.rev-intro__inner{
  max-width:64rem;
  margin-inline:auto;
  text-align:center;
}

.rev-intro__text{
  margin-top:var(--space-5);
  font-size:var(--text-md);
  line-height:var(--leading-loose);
  color:var(--color-text-body);
  text-align:left;
}

.rev-intro__text p{margin:0 0 var(--space-4);}
.rev-intro__text p:last-child{margin-bottom:0;}

/* ── Grid ─────────────────────────────────────────────── */
.rev-grid__heading{text-align:center;margin-bottom:var(--space-10);}

/* Masonry-style columns let cards size to their content, so a
   two-line review sits next to a long one without either being
   padded out to match. Wider minimum than a standard card grid
   so reviews read as a gallery rather than a cramped strip. */
.rev-grid{
  columns:3 340px;
  column-gap:var(--space-6);
}

.rev-card{
  break-inside:avoid;
  page-break-inside:avoid;
  margin:0 0 var(--space-6);
  background:var(--color-bg-white);
  border:1px solid var(--color-border);
  border-radius:var(--radius-lg);
  padding:var(--space-8);
  display:flex;
  flex-direction:column;
  gap:var(--space-4);
  transition:box-shadow var(--duration-base) var(--ease-out),
             transform var(--duration-base) var(--ease-out),
             border-color var(--duration-base) var(--ease-out);
}

.rev-card:hover{
  box-shadow:var(--shadow-lg);
  transform:translateY(-3px);
  border-color:transparent;
}

.rev-card__stars{display:flex;gap:3px;color:#F59E0B;}

.rev-card__quote{
  margin:0;
  font-size:var(--text-base);
  line-height:var(--leading-loose);
  color:var(--color-text-body);
}

.rev-card__quote p{margin:0 0 var(--space-3);}
.rev-card__quote p:last-child{margin-bottom:0;}
.rev-card__quote p:first-child::before{content:"\201C";}
.rev-card__quote p:last-child::after{content:"\201D";}

.rev-card__author{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding-top:var(--space-4);
  border-top:1px solid var(--color-border);
  margin-top:auto;
}

.rev-card__name{
  font-family:var(--font-heading);
  font-weight:var(--weight-semibold);
  font-size:var(--text-sm);
  color:var(--color-text-primary);
}

.rev-card__location{
  font-size:var(--text-xs);
  color:var(--color-text-muted);
}

/* ── Actions ──────────────────────────────────────────── */
.rev-actions{
  display:flex;
  flex-wrap:wrap;
  gap:var(--space-4);
  justify-content:center;
  margin-top:var(--space-10);
}

@media(max-width:991px){
  .rev-grid{columns:2 300px;column-gap:var(--space-5);}
  .rev-card{padding:var(--space-6);margin-bottom:var(--space-5);}
}

@media(max-width:767px){
  .rev-grid{columns:1;}
  .rev-intro__inner{text-align:left;}
  .rev-actions{flex-direction:column;align-items:stretch;}
  .rev-actions .btn-primary,.rev-actions .btn-ghost{width:100%;justify-content:center;}
}

/* ===== 44-benefit-rows.css ===== */
/* =========================================================
   44-benefit-rows.css
   Alternating image + text benefit rows
   (template-parts/benefit-rows.php).
   Replaces stacked block-editor content with a designed,
   two-column layout that alternates left/right per row.
   ========================================================= */

.benefit-rows__header{
  text-align:center;
  max-width:none;
  margin:0 auto var(--space-16);
}

/* The shared .section-subheading caps at 56ch for short one-line intros.
   This intro carries full paragraphs, so widen it, centre it as a block,
   and left-align the prose — centred text is hard to read past one line. */
.benefit-rows__header .section-subheading{
  max-width:none;
  margin-inline:auto;
  text-align:left;
}

/* Short intros (a single line) still look better centred. */
.benefit-rows__header .section-subheading--short{text-align:center;max-width:56ch;}

.benefit-rows__list{
  display:flex;
  flex-direction:column;
  gap:var(--space-12);
}

.benefit-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:var(--space-10);
  align-items:center;
}

/* Every second row flips so image and text alternate sides. */
.benefit-row--reverse .benefit-row__media{order:2;}
.benefit-row--reverse .benefit-row__content{order:1;}

.benefit-row__media{
  border-radius:var(--radius-lg);
  overflow:hidden;
  box-shadow:var(--shadow-md);
  line-height:0;
}

.benefit-row__img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  aspect-ratio:4/3;
  transition:transform var(--duration-slow) var(--ease-out);
}

.benefit-row:hover .benefit-row__img{transform:scale(1.03);}

.benefit-row__content--full{grid-column:1 / -1;max-width:60ch;margin-inline:auto;text-align:center;}

.benefit-row__title{
  font-family:var(--font-heading);
  font-size:var(--text-2xl);
  font-weight:var(--weight-bold);
  line-height:var(--leading-tight);
  color:var(--color-text-primary);
  margin:0 0 var(--space-4);
}

/* Accent rule under each title, echoing the section-heading treatment. */
.benefit-row__title::after{
  content:"";
  display:block;
  width:48px;
  height:3px;
  margin-top:var(--space-3);
  background:var(--color-action);
  border-radius:2px;
}

.benefit-row__content--full .benefit-row__title::after{margin-inline:auto;}

.benefit-row__body{
  font-size:var(--text-base);
  line-height:var(--leading-loose);
  color:var(--color-text-body);
}

.benefit-row__body p{margin:0 0 var(--space-4);}
.benefit-row__body p:last-child{margin-bottom:0;}

@media(max-width:991px){
  .benefit-rows__list{gap:var(--space-10);}
  .benefit-row{grid-template-columns:1fr;gap:var(--space-5);}
  /* On one column the image always leads, so reset the flip. */
  .benefit-row--reverse .benefit-row__media,
  .benefit-row--reverse .benefit-row__content{order:initial;}
  .benefit-row__img{aspect-ratio:16/9;}
}

@media(max-width:767px){
  .benefit-rows__header{margin-bottom:var(--space-10);}
  .benefit-row__title{font-size:var(--text-xl);}
}

/* ── Partner logo band ─────────────────────────────────
   Reuses the .certs-carousel marquee but sits on the base
   background so it reads as a distinct band when stacked
   under the (tinted) certifications carousel. A slightly
   slower scroll keeps the two from looking synchronised. */
.certs-carousel--partners{background:var(--color-bg-base);}
.certs-carousel--partners .certs-carousel__track{animation-duration:38s;}

/* Paragraph spacing inside the intro block. */
.benefit-rows__header .section-subheading p{margin:0 0 var(--space-4);}
.benefit-rows__header .section-subheading p:last-child{margin-bottom:0;}

/* ===== 45-case-studies.css ===== */
/* =========================================================
   45-case-studies.css
   Case Studies hub (card grid) + individual case study page
   (meta bar, body sections, gallery, back link).
   ========================================================= */

/* ── Hub: intro ───────────────────────────────────────── */
.cs-hub-intro__inner{
  max-width:64rem;
  margin-inline:auto;
  font-size:var(--text-md);
  line-height:var(--leading-loose);
  color:var(--color-text-body);
}

.cs-hub-intro__inner p{margin:0 0 var(--space-4);}
.cs-hub-intro__inner p:last-child{margin-bottom:0;}

/* ── Hub: card grid ───────────────────────────────────── */
.cs-list__heading{text-align:center;margin-bottom:var(--space-10);}

.cs-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(340px,1fr));
  gap:var(--space-6);
}

.cs-card{
  background:var(--color-bg-white);
  border:1px solid var(--color-border);
  border-radius:var(--radius-lg);
  overflow:hidden;
  transition:box-shadow var(--duration-base) var(--ease-out),
             transform var(--duration-base) var(--ease-out);
}

.cs-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px);}

.cs-card__link{
  display:flex;
  flex-direction:column;
  height:100%;
  text-decoration:none;
  color:inherit;
}

.cs-card__media{
  aspect-ratio:16/10;
  overflow:hidden;
  background:var(--color-bg-alt);
  line-height:0;
}

.cs-card__img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform var(--duration-slow) var(--ease-out);
}

.cs-card:hover .cs-card__img{transform:scale(1.04);}

.cs-card__placeholder{width:100%;height:100%;background:var(--color-bg-alt);}

.cs-card__body{
  padding:var(--space-6);
  display:flex;
  flex-direction:column;
  gap:var(--space-3);
  flex-grow:1;
}

.cs-card__title{
  font-family:var(--font-heading);
  font-size:var(--text-lg);
  font-weight:var(--weight-bold);
  line-height:var(--leading-snug);
  color:var(--color-text-primary);
  margin:0;
}

.cs-card__meta{
  margin:0;
  display:flex;
  flex-direction:column;
  gap:2px;
  font-size:var(--text-xs);
  color:var(--color-text-muted);
}

.cs-card__meta-row{display:flex;gap:var(--space-2);}
.cs-card__meta-row dt{font-weight:var(--weight-semibold);margin:0;}
.cs-card__meta-row dd{margin:0;}

.cs-card__excerpt{
  margin:0;
  font-size:var(--text-sm);
  line-height:var(--leading-normal);
  color:var(--color-text-body);
  display:-webkit-box;
  -webkit-line-clamp:4;
  -webkit-box-orient:vertical;
  overflow:hidden;
}

.cs-card__more{
  margin-top:auto;
  padding-top:var(--space-3);
  font-family:var(--font-heading);
  font-size:var(--text-sm);
  font-weight:var(--weight-semibold);
  color:var(--color-action);
}

.cs-card:hover .cs-card__more{text-decoration:underline;}

.cs-hub-actions{display:flex;justify-content:center;margin-top:var(--space-10);}

/* =========================================================
   SINGLE CASE STUDY — brand-aligned "field report"
   Matches svc-hero (white overlay, dark text) and standard
   white / --color-bg-alt section bands. No navy.
   ========================================================= */

/* ── Hero: same treatment as service heroes ───────────── */
.cs-hero{
  position:relative;
  width:100%;
  min-height:540px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  overflow:hidden;
  background-color:var(--color-bg-alt);
}
.cs-hero--flat{min-height:300px;}
.cs-hero__bg{
  position:absolute;inset:0;
  background-size:cover;background-repeat:no-repeat;background-position:center;
}
.cs-hero__scrim{
  position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(
    to top,
    var(--color-bg-base)       0%,
    rgba(255,255,255,0.92)     5%,
    rgba(255,255,255,0.78)    15%,
    rgba(255,255,255,0.60)    25%,
    rgba(255,255,255,0.40)    35%,
    rgba(255,255,255,0.22)    45%,
    rgba(255,255,255,0.10)    55%,
    transparent               65%
  );
}
.cs-hero__inner{
  position:relative;z-index:1;
  width:100%;
  padding-block:0 var(--space-12);
}
.cs-hero__back{
  display:inline-block;
  margin-bottom:var(--space-4);
  font-size:var(--text-sm);
  font-weight:var(--weight-medium);
  letter-spacing:var(--tracking-wide);
  color:var(--color-text-muted);
  text-decoration:none;
  transition:var(--transition-color);
}
.cs-hero__back:hover{color:var(--color-text-primary);}
.cs-hero__eyebrow{
  display:block;
  margin-bottom:var(--space-3);
  font-size:var(--text-xs);
  font-weight:var(--weight-semibold);
  text-transform:uppercase;
  letter-spacing:var(--tracking-widest);
  color:var(--color-action);
}
.cs-hero__heading{
  max-width:22ch;
  margin:0;
  font-family:var(--font-heading);
  font-size:var(--text-hero);
  font-weight:var(--weight-bold);
  line-height:var(--leading-tight);
  letter-spacing:var(--tracking-tight);
  color:var(--color-text-primary);
}
.cs-hero__meta{
  display:flex;flex-wrap:wrap;
  gap:var(--space-8);
  margin:var(--space-6) 0 0;
  padding-top:var(--space-5);
  border-top:1px solid var(--color-border-strong);
}
.cs-hero__meta-item dt{
  margin:0 0 2px;
  font-size:var(--text-xs);
  font-weight:var(--weight-semibold);
  text-transform:uppercase;
  letter-spacing:var(--tracking-wide);
  color:var(--color-text-muted);
}
.cs-hero__meta-item dd{
  margin:0;
  font-size:var(--text-md);
  font-weight:var(--weight-semibold);
  color:var(--color-text-primary);
}

/* ── Intro: breathing room below hero ─────────────────── */
.cs-intro{padding-block:var(--space-16) var(--space-12);}
.cs-intro__text{
  font-size:var(--text-md);
  line-height:var(--leading-loose);
  color:var(--color-text-body);
}
.cs-intro__text p{margin:0 0 var(--space-4);}
.cs-intro__text p:last-child{margin-bottom:0;}

/* ── Results stat strip: light band, brand accents ────── */
.cs-stats{
  background:var(--color-bg-alt);
  padding-block:var(--space-12);
  border-block:1px solid var(--color-border);
}
.cs-stats__grid{
  list-style:none;margin:0;padding:0;
  display:grid;gap:var(--space-8);text-align:center;
}
.cs-stats__grid--1{grid-template-columns:1fr;max-width:24rem;margin-inline:auto;}
.cs-stats__grid--2{grid-template-columns:repeat(2,1fr);max-width:40rem;margin-inline:auto;}
.cs-stats__grid--3{grid-template-columns:repeat(3,1fr);}
.cs-stat{
  display:flex;flex-direction:column;gap:var(--space-2);
  padding:var(--space-2) var(--space-4);
  position:relative;
}
.cs-stats__grid--3 .cs-stat:not(:last-child)::after,
.cs-stats__grid--2 .cs-stat:not(:last-child)::after{
  content:"";position:absolute;right:calc(var(--space-8) / -2);top:10%;bottom:10%;
  width:1px;background:var(--color-border-strong);
}
.cs-stat__value{
  font-size:clamp(2.5rem,6vw,var(--text-3xl));
  font-weight:var(--weight-extrabold);
  line-height:1;letter-spacing:var(--tracking-tight);
  color:var(--color-cta);
}
.cs-stat__label{
  font-size:var(--text-sm);
  font-weight:var(--weight-medium);
  letter-spacing:var(--tracking-wide);
  text-transform:uppercase;
  color:var(--color-text-muted);
}

/* ── Problem + Solution: equal-height paired cards ────── */
.cs-challenge{background:var(--color-bg-white);}
.cs-challenge__grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:var(--space-6);
  align-items:stretch;              /* equal height, fixes lopsided look */
}
.cs-panel{
  display:flex;flex-direction:column;
  background:var(--color-bg-white);
  border:1px solid var(--color-border);
  border-radius:var(--radius-lg);
  padding:var(--space-8);
  box-shadow:var(--shadow-sm);
}
.cs-panel--problem{border-top:3px solid var(--color-cta);}
.cs-panel--solution{border-top:3px solid var(--color-action);}
.cs-panel__tag{
  display:inline-block;
  margin-bottom:var(--space-3);
  font-size:var(--text-xs);
  font-weight:var(--weight-semibold);
  text-transform:uppercase;
  letter-spacing:var(--tracking-widest);
  color:var(--color-text-muted);
}
.cs-panel__heading{
  margin:0 0 var(--space-4);
  font-family:var(--font-heading);
  font-size:var(--text-xl);
  font-weight:var(--weight-bold);
  line-height:var(--leading-snug);
  color:var(--color-text-primary);
}
.cs-panel__text{
  font-size:var(--text-base);
  line-height:var(--leading-loose);
  color:var(--color-text-body);
}
.cs-panel__text p{margin:0 0 var(--space-4);}
.cs-panel__text p:last-child{margin-bottom:0;}

/* ── Why It Works: subtle accent card on alt band ─────── */
.cs-why{background:var(--color-bg-alt);}
.cs-why__card{
  background:var(--color-bg-white);
  border:1px solid var(--color-border);
  border-left:4px solid var(--color-action);
  border-radius:var(--radius-md);
  padding:var(--space-8) var(--space-10);
  box-shadow:var(--shadow-sm);
}

/* ── Gallery ──────────────────────────────────────────── */
.cs-gallery__grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(300px,1fr));
  gap:var(--space-4);
}
.cs-gallery__item{margin:0;border-radius:var(--radius-lg);overflow:hidden;line-height:0;}
.cs-gallery__img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3;display:block;}

/* ── Results: WHITE band, dark text (brand) ───────────── */
.cs-results{background:var(--color-bg-white);}
.cs-results__tag{
  display:inline-block;
  margin-bottom:var(--space-3);
  font-size:var(--text-xs);
  font-weight:var(--weight-semibold);
  text-transform:uppercase;
  letter-spacing:var(--tracking-widest);
  color:var(--color-action);
}
.cs-results__heading{
  margin:0 0 var(--space-5);
  font-family:var(--font-heading);
  font-size:var(--text-section);
  font-weight:var(--weight-bold);
  line-height:var(--leading-snug);
  color:var(--color-text-primary);
}
.cs-results__text{
  font-size:var(--text-md);
  line-height:var(--leading-loose);
  color:var(--color-text-body);
}
.cs-results__text p{margin:0 0 var(--space-4);}
.cs-results__text p:last-child{margin-bottom:0;}

/* ── Bottom actions ───────────────────────────────────── */
.cs-bottom-actions .container{
  display:flex;flex-wrap:wrap;gap:var(--space-4);
  justify-content:center;padding-block:var(--space-16);
}

/* ── Responsive ───────────────────────────────────────── */
@media(max-width:767px){
  .cs-hero{min-height:300px;}
  .cs-challenge__grid{grid-template-columns:1fr;gap:var(--space-5);}
  .cs-stats__grid--2,.cs-stats__grid--3{grid-template-columns:1fr;gap:var(--space-6);}
  .cs-stats__grid--2 .cs-stat::after,.cs-stats__grid--3 .cs-stat::after{display:none;}
  .cs-hero__meta{gap:var(--space-5);}
  .cs-why__card{padding:var(--space-6);}
  .cs-gallery__grid{grid-template-columns:1fr;}
  .cs-bottom-actions .container{flex-direction:column;align-items:stretch;}
  .cs-bottom-actions .btn-primary,.cs-bottom-actions .btn-ghost{width:100%;justify-content:center;}
}

/* ===== 46-methods-grid.css ===== */
/* ==========================================================================
   46 - Methods Grid
   Competing-approach cards on the Comparison / Benefits template.
   Pairs with 44-benefit-rows.css and shares its header conventions.

   Used by: template-parts/methods-grid.php
   ========================================================================== */

.methods-grid__header{
  max-width:var(--container-text);
  margin:0 auto var(--space-10);
  text-align:center;
}

.methods-grid__list{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:var(--space-6);
}

.method-card{
  position:relative;
  padding:var(--space-8) var(--space-6) var(--space-6);
  background:var(--color-bg-white);
  border:1px solid var(--color-border);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);
}

.method-card__num{
  position:absolute;
  top:calc(var(--space-4) * -1);
  left:var(--space-6);
  display:flex;
  align-items:center;
  justify-content:center;
  width:2.5rem;
  height:2.5rem;
  border-radius:50%;
  background:var(--color-action-deep);
  color:#fff;
  font-weight:700;
  font-size:var(--text-base);
  line-height:1;
}

.method-card__title{
  margin:0 0 var(--space-3);
  font-size:var(--text-lg);
  line-height:var(--leading-snug);
  color:var(--color-action-deep);
}

.method-card__body{
  color:var(--color-text-body);
  font-size:var(--text-sm);
  line-height:var(--leading-normal);
}

.method-card__body :where(p):last-child{
  margin-bottom:0;
}

.method-card__body :where(ul,ol){
  margin:var(--space-3) 0 0;
  padding-left:var(--space-5);
}

.method-card__body :where(li) + :where(li){
  margin-top:var(--space-2);
}

@media (max-width:640px){
  .methods-grid__list{
    grid-template-columns:1fr;
  }
}


/* ===== 47-hero-video.css ===== */
/* 47-hero-video.css - full-width video homepage hero
   Loaded alongside the original split hero (05-hero.css); only one of the two
   layouts renders, chosen in the Customizer. White type on a dark gradient is
   deliberate here: dark type cannot be kept legible over moving footage. */

.vhero{
  position:relative;
  isolation:isolate;
  min-height:min(88vh,760px);
  display:flex;
  align-items:center;
  overflow:hidden;
  background:var(--color-navy);
}

/* ---- Media layer ---- */
.vhero__media{position:absolute;inset:0;z-index:0;}
.vhero__poster,
.vhero__video{position:absolute;inset:0;width:100%;height:100%;}
/* No background-image here on purpose: it is applied by hero-video.php inside
   a mobile-only media query, so desktop never fetches the still. */
.vhero__poster{background-size:cover;background-position:center;}
.vhero__video{object-fit:cover;border:0;}

/* Gradient rather than a flat wash: heavier on the left where the type sits,
   lighter on the right so the footage still reads behind the promo card. */
.vhero__overlay{
  position:absolute;inset:0;
  background:
    linear-gradient(to right, rgba(0,0,0,.78) 0%, rgba(0,0,0,.66) 34%, rgba(0,0,0,.42) 62%, rgba(0,0,0,.34) 100%),
    linear-gradient(to top, rgba(0,0,0,.45) 0%, transparent 45%);
}

/* ---- Layout ---- */
.vhero__inner{
  position:relative;z-index:1;
  width:100%;
  display:grid;
  grid-template-columns:1fr;
  gap:var(--space-10);
  padding-block:var(--space-12);
}
.vhero--with-promo .vhero__inner{grid-template-columns:1fr 1.05fr;align-items:center;}

/* ---- Type ----
   Sizes, weights and spacing are matched exactly to the original split hero
   (05-hero.css) so the two layouts are interchangeable and the only visible
   difference is the background and the type colour. */
.vhero__content{max-width:640px;color:#fff;}

.vhero__eyebrow{
  display:block;
  font-family:var(--font-body);
  font-size:var(--text-xs);
  font-weight:var(--weight-semibold);
  letter-spacing:var(--tracking-widest);
  text-transform:uppercase;
  color:rgba(255,255,255,.82);
  margin-bottom:var(--space-4);
}

.vhero__tagline{
  display:block;
  font-family:var(--font-heading);
  font-size:var(--text-md);
  font-weight:var(--weight-semibold);
  letter-spacing:.01em;
  color:var(--color-action);
  margin-bottom:var(--space-3);
}

.vhero__headline{
  font-family:var(--font-heading);
  font-size:var(--text-hero);
  font-weight:var(--weight-bold);
  line-height:var(--leading-tight);
  letter-spacing:var(--tracking-tight);
  color:#fff;
  margin-bottom:var(--space-5);
  max-width:16ch;
}
.vhero__headline em{font-style:normal;color:var(--color-action);}

.vhero__subheadline{
  font-size:var(--text-base);
  line-height:var(--leading-normal);
  color:rgba(255,255,255,.92);
  max-width:44ch;
  margin-bottom:var(--space-8);
}

/* ---- Credential chips ---- */
.vhero__credentials{
  display:flex;align-items:center;flex-wrap:wrap;
  gap:var(--space-2);
  margin-bottom:var(--space-8);
  font-size:var(--text-sm);
  color:rgba(255,255,255,.75);
}
.vhero__cred{font-weight:var(--weight-medium);color:#fff;}
.vhero__cred-sep{color:var(--color-action);font-size:var(--text-xs);}

/* Optional: credentials in brand green rather than white. Add the class
   vhero--cred-green to the <section> to switch, or move this rule out of the
   modifier to make green the default. */
.vhero--cred-green .vhero__cred{color:var(--color-action);}

/* ---- Actions ---- */
.vhero__actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3);}
.vhero__cta-primary,
.vhero__cta-secondary{
  display:inline-flex;align-items:center;gap:var(--space-2);
  font-size:var(--text-sm);
  font-weight:var(--weight-semibold);
  border-radius:var(--radius-full);
  cursor:pointer;text-decoration:none;
  transition:background-color var(--duration-base) var(--ease-out),
             color var(--duration-base) var(--ease-out),
             transform var(--duration-base) var(--ease-out);
}
.vhero__cta-primary{
  padding:var(--space-3) var(--space-6);
  background:var(--color-cta);color:#fff;border:0;
}
.vhero__cta-primary:hover{background:var(--color-cta-hover);transform:translateY(-1px);}
.vhero__cta-secondary{
  padding:var(--space-3) var(--space-5);
  background:rgba(255,255,255,.10);
  color:#fff;
  border:1px solid rgba(255,255,255,.45);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}
.vhero__cta-secondary:hover{background:rgba(255,255,255,.18);transform:translateY(-1px);}

/* ---- Promo card ----
   The offer sits in a dark header block, the form on white beneath it, so the
   two read as one designed object rather than a heading floating above an
   embed. The form itself is a HubSpot iframe and cannot be styled from here,
   so the shell does the work: generous padding, a light frame around the
   embed, and muted fine print. */
.vhero__promo{
  background:var(--color-bg-white);
  border-radius:var(--radius-lg);
  box-shadow:0 24px 60px rgba(0,0,0,.35);
  overflow:hidden;
  padding:0;
  max-width:600px;
  width:100%;
  margin-inline-start:auto;
}

/* Offer header */
.vhero__promo-head{
  background:var(--color-navy);
  padding:var(--space-6) var(--space-6) var(--space-5);
  text-align:center;
}
.vhero__promo-eyebrow{
  display:inline-block;
  background:var(--color-cta);
  color:#fff;
  font-size:var(--text-xs);
  font-weight:var(--weight-bold);
  letter-spacing:var(--tracking-wide);
  text-transform:uppercase;
  padding:var(--space-1) var(--space-3);
  border-radius:var(--radius-full);
  margin-bottom:var(--space-3);
}
.vhero__promo-heading{
  font-family:var(--font-heading);
  font-size:var(--text-xl);
  font-weight:var(--weight-extrabold);
  line-height:1.15;
  letter-spacing:var(--tracking-tight);
  color:#fff;
  margin:0 0 var(--space-2);
  text-wrap:balance;
}
.vhero__promo-sub{
  font-size:var(--text-sm);
  font-weight:var(--weight-semibold);
  letter-spacing:var(--tracking-wide);
  color:var(--color-action);
  margin:0;
}

/* Form body */
.vhero__promo-body{padding:var(--space-6);}

.vhero__promo-form{
  border:1px solid var(--color-border);
  border-radius:var(--radius-md);
  padding:var(--space-4);
  background:var(--color-bg-alt);
}
/* HubSpot injects an iframe that sizes itself; make sure it can fill the
   frame and never introduces a horizontal scrollbar. */
.vhero__promo-form iframe{width:100%!important;max-width:100%!important;border:0;display:block;}

.vhero__promo-disclaimer{
  margin:var(--space-4) 0 0;
  font-size:.6875rem;
  line-height:1.5;
  color:var(--color-text-muted);
  text-align:left;
}
.vhero__promo-disclaimer a{color:var(--color-text-muted);text-decoration:underline;}

/* ---- Responsive ---- */
@media (max-width:1100px){
  .vhero--with-promo .vhero__inner{grid-template-columns:1fr;}
  .vhero__promo{margin-inline-start:0;max-width:640px;}
}
@media (max-width:860px){
  /* ---- Mobile: white stacked layout ----
     The dark full-bleed composition has nowhere to go on a narrow screen, so
     mobile reflows into the same shape as the original split hero: a static
     image band on top, then the promotional offer card, then the copy on
     white. The video file is never fetched here (the source stays in
     data-src until 861px), so the band shows the poster still.
     Order inside .vhero__inner puts the promo card above the copy, which
     places it directly between the image and the "Durable. Non-toxic."
     eyebrow line. */
  .vhero{
    display:block;
    min-height:0;
    background:var(--color-bg-base);
  }

  /* Image band: static, sits at the top of the stack rather than behind. */
  .vhero__media{
    position:relative;
    height:280px;
  }
  .vhero__poster{position:absolute;inset:0;}
  .vhero__video{display:none;}

  /* Fade the band into the white below it instead of darkening it. */
  .vhero__overlay{
    background:linear-gradient(to bottom,
      transparent 0%,
      transparent 45%,
      rgba(255,255,255,.35) 72%,
      rgba(255,255,255,.85) 92%,
      var(--color-bg-base) 100%);
  }

  .vhero__inner,
  .vhero--with-promo .vhero__inner{
    display:flex;
    flex-direction:column;
    gap:var(--space-8);
    padding-block:var(--space-8) var(--space-10);
  }
  .vhero__promo{order:1;margin-inline:auto;max-width:640px;}
  .vhero__content{order:2;max-width:none;}

  /* Type flips back to dark now the backdrop is white. */
  .vhero__content{color:var(--color-text-primary);}
  .vhero__eyebrow{color:var(--color-text-muted);}
  .vhero__headline{color:var(--color-text-primary);}
  .vhero__subheadline{color:var(--color-text-body);}
  .vhero__cred{color:var(--color-text-primary);}
  .vhero__credentials{color:var(--color-text-muted);}
  .vhero__cta-secondary{
    color:var(--color-text-primary);
    background:var(--color-bg-white);
    border-color:var(--color-border-strong);
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
  }
  .vhero__cta-secondary:hover{background:var(--color-bg-alt);}

  .vhero__promo-head{padding:var(--space-5);}
  .vhero__promo-body{padding:var(--space-5);}
}
@media (max-width:560px){
  .vhero__subheadline{font-size:var(--text-base);}
  .vhero__actions{flex-direction:column;align-items:stretch;}
  .vhero__cta-primary,.vhero__cta-secondary{justify-content:center;}
}

/* Motion preference: the script already skips loading the video, this keeps
   the poster steady for anything that slips through. */
@media (prefers-reduced-motion:reduce){
  .vhero__video{display:none;}
}

/* ── Collapsed hero form ──
   Matches the location pages. The HubSpot embed is cross-origin so its
   internals cannot be styled, but the wrapper is ours: cap the height, fade
   the cut so it reads as "more below" rather than clipped, and release the
   cap on the visitor's first interaction. The height is a pixel value
   because nothing here can see inside the iframe to count fields. */
.vhero__promo-form--collapsed{
  position:relative;
  max-height:300px;
  overflow:hidden;
  transition:max-height .45s var(--ease-out);
}
.vhero__promo-form--collapsed.is-open{
  max-height:2200px;
  overflow:visible;
}
.vhero__promo-form--collapsed::after{
  content:"";
  position:absolute;
  left:0;right:0;bottom:0;
  height:90px;
  pointer-events:none;
  background:linear-gradient(to bottom, rgba(242,244,245,0) 0%, var(--color-bg-alt) 85%);
  transition:opacity .3s var(--ease-out);
}
.vhero__promo-form--collapsed.is-open::after{opacity:0;}

.vhero__promo-expand{
  display:block;
  width:100%;
  margin-top:var(--space-3);
  padding:var(--space-3);
  background:none;
  border:1px solid var(--color-border-strong);
  border-radius:var(--radius-full);
  font-family:var(--font-heading);
  font-size:var(--text-sm);
  font-weight:var(--weight-semibold);
  color:var(--color-text-primary);
  cursor:pointer;
  transition:background-color var(--duration-base) var(--ease-out);
}
.vhero__promo-expand:hover{background:var(--color-bg-alt);}
.vhero__promo-expand.is-hidden{display:none;}

@media (prefers-reduced-motion:reduce){
  .vhero__promo-form--collapsed{transition:none;}
}

/* ===== 48-mobile-polish.css ===== */
/* 48-mobile-polish.css
   Mobile-only corrections. Loads last in the deferred list. Every rule sits
   inside a media query, so desktop is untouched.

   Selectors and breakpoints were checked against the rendered pages rather
   than assumed. Two notes on why some selectors look verbose:

   - The image rules repeat the full descendant selector used in
     37-service-enhance.css (.svc-explain__media--sticky .svc-explain__img).
     A single-class selector loses to it on specificity no matter how late
     this file loads.
   - The stats separator element is .svc-stat__sep, not __divider.
*/

/* ============================================================
   1. CTA BUTTON ALIGNMENT
   .svc-hero__actions is the shared container across residential service,
   commercial service, and both landing pages. Its children are
   .btn-primary / .btn-ghost / .btn-callback, which size to their own text
   and so wrap at three different widths on a narrow screen.

   2. PERFORMANCE DATA TABLE
   The label cell is pinned to 220px with white-space:nowrap. On a 328px
   viewport that leaves roughly a hundred pixels for the value and wraps the
   data into a narrow ribbon. Stacking each row gives the value the full
   width and turns the label into a quiet caption above it.

   3. STATS STRIP
   .svc-stats is a centred flex row with .svc-stat items separated by
   .svc-stat__sep. Wrapping leaves a trailing stat centred on its own line.
   ============================================================ */
@media (max-width: 700px) {

  .svc-hero__actions,
  .cta-center__actions,
  .cta-section__actions,
  .hero__actions {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    width: 100%;
  }

  .svc-hero__actions > *,
  .cta-center__actions > *,
  .cta-section__actions > *,
  .hero__actions > * {
    width: 100%;
    justify-content: center;
    text-align: center;
  }

  .specs-table,
  .specs-table tbody,
  .specs-table tr,
  .specs-table td {
    display: block;
    width: 100%;
  }

  .specs-table tr {
    border-bottom: 1px solid var(--color-border);
    padding: var(--space-3) 0;
  }
  .specs-table tr:last-child { border-bottom: none; }

  .specs-table td {
    border-bottom: none;
    padding: 0 var(--space-4);
  }

  .specs-table td:first-child {
    width: 100%;
    white-space: normal;
    background: transparent;
    margin-bottom: var(--space-1);
    font-size: var(--text-xs);
    font-weight: var(--weight-semibold);
    letter-spacing: var(--tracking-wide);
    text-transform: uppercase;
    color: var(--color-text-muted);
  }

  .specs-table td:last-child {
    font-size: var(--text-base);
    font-weight: var(--weight-semibold);
    color: var(--color-text-primary);
  }

  .specs-table-wrap { overflow-x: visible; }

  .svc-stats {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-5) var(--space-4);
    align-items: start;
    justify-content: stretch;
    text-align: center;
  }

  .svc-stats .svc-stat__sep { display: none; }

  .svc-stats .svc-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-1);
  }

  /* No orphan-spanning rule here on purpose. The separators remain DOM
     children even when hidden, so the stats always sit on odd nth-child
     positions and any :nth-child(odd) test matches the last one every time,
     which pushed it onto a row of its own. Four stats fill a 2x2 grid
     cleanly; an odd count simply leaves the last cell empty. */
}

/* ============================================================
   4. INLINE IMAGES
   Breakpoint matches the 860px at which both grids collapse to one column.

   Root cause of the over-tall images: at mobile the existing rules reset
   aspect-ratio to auto. Because these images are lazy-loaded, the browser
   has no intrinsic size at layout time and reserves a box far taller than
   the picture needs (measured at 1500px tall in a 308px-wide column).
   Pinning an explicit landscape ratio gives the browser a correct box before
   the file arrives, which also removes the layout shift when it does.
   ============================================================ */
@media (max-width: 860px) {

  .svc-explain__media--sticky .svc-explain__img,
  .svc-explain__img,
  .comm-split__img,
  .benefit-row__img {
    aspect-ratio: 16 / 10;
    object-fit: cover;
    width: 100%;
    height: auto;
    max-height: 260px;
  }

  .svc-explain__media,
  .svc-explain__media--sticky,
  .comm-split__media {
    display: block;
    height: auto;
  }
}

/* ===== 50-location-form.css ===== */
/* 50-location-form.css - lead form in the location page hero
   These pages are the destination for paid search, so the form sits beside
   the headline rather than behind the callback modal. Mirrors the homepage
   promo card, dark head with the offer, form on white beneath. */

/* Two columns only when a form is present; without one the hero is unchanged. */
/* .svc-hero__content is inlined critical CSS with max-width:680px,
   margin-inline:auto and text-align:center, which is right for a centred
   hero but wrong here: it squeezed the grid into 680px and left the copy
   column about 120px wide. These three overrides release the container so
   the layout matches the homepage hero, copy left, card right. */
.svc-hero__content.loc-hero--split{
  display:grid;
  grid-template-columns:1fr 520px;
  gap:var(--space-10);
  align-items:center;
  /* The shared hero rule sets padding 0 top / space-12 bottom, which suits a
     centred hero whose content sits low. Here a tall form card is centred in
     the row, so with no top padding it rides up against the nav while keeping
     space beneath. Matching the top to the bottom balances it. */
  padding-top:var(--space-12);
  max-width:var(--container-max);
  margin-inline:auto;
  text-align:left;
  width:100%;
}
.loc-hero__copy{min-width:0;}
/* The shared hero rules centre these; the split layout needs them ranged left. */
.loc-hero--split .svc-hero__heading,
.loc-hero--split .svc-hero__tagline{text-align:left;}
.loc-hero--split .svc-hero__actions{justify-content:flex-start;}

/* ---- Form card ---- */
.loc-form{
  background:var(--color-bg-white);
  border-radius:var(--radius-lg);
  box-shadow:0 24px 60px rgba(0,0,0,.28);
  overflow:hidden;
  width:100%;
}

.loc-form__head{
  background:var(--color-navy);
  padding:var(--space-6) var(--space-6) var(--space-5);
  text-align:center;
}
.loc-form__eyebrow{
  display:inline-block;
  background:var(--color-cta);color:#fff;
  font-size:var(--text-xs);font-weight:var(--weight-bold);
  letter-spacing:var(--tracking-wide);text-transform:uppercase;
  padding:var(--space-1) var(--space-3);
  border-radius:var(--radius-full);
  margin-bottom:var(--space-3);
}
.loc-form__heading{
  font-family:var(--font-heading);
  font-size:var(--text-xl);
  font-weight:var(--weight-extrabold);
  line-height:1.15;
  letter-spacing:var(--tracking-tight);
  color:#fff;
  margin:0 0 var(--space-2);
  text-wrap:balance;
}
.loc-form__sub{
  font-size:var(--text-sm);
  font-weight:var(--weight-semibold);
  color:var(--color-action);
  margin:0;
}

.loc-form__body{padding:var(--space-6);}
.loc-form__embed{
  border:1px solid var(--color-border);
  border-radius:var(--radius-md);
  padding:var(--space-4);
  background:var(--color-bg-alt);
}
/* HubSpot renders inside an iframe that sizes itself; keep it contained. */
.loc-form__embed iframe{width:100%!important;max-width:100%!important;border:0;display:block;}

.loc-form__disclaimer{
  margin:var(--space-4) 0 0;
  font-size:.6875rem;
  line-height:1.5;
  color:var(--color-text-muted);
}
.loc-form__disclaimer a{color:var(--color-text-muted);text-decoration:underline;}

/* ---- Responsive ----
   The form moves above the copy on narrow screens: someone arriving from an
   ad should reach it without scrolling past the headline. */
@media (max-width:1100px){
  .svc-hero__content.loc-hero--split{
    display:flex;
    flex-direction:column;
    gap:var(--space-8);
    text-align:center;
  }
  .loc-hero--split .svc-hero__heading,
  .loc-hero--split .svc-hero__tagline{text-align:center;}
  .loc-hero--split .svc-hero__actions{justify-content:center;}
  /* Copy first, then the form. Putting the form above the heading was the
     original instinct for ad traffic, but it left the page opening on a form
     with no context: a visitor landing from a search sees a card before they
     see which city they are on. Heading, sub-heading, then the form reads
     properly and the form is still within the first screen or two. */
  .loc-hero__copy{order:1;}
  .loc-form{order:2;max-width:600px;margin-inline:auto;}
}

@media (max-width:700px){
  .loc-form__head{padding:var(--space-5);}
  .loc-form__body{padding:var(--space-5);}
  .loc-form__embed{padding:var(--space-3);}
}


/* ── Hero legibility ──
   Mirrors the treatment on the service heroes (05-hero.css): the photograph
   is lifted and slightly desaturated so it reads as a backdrop, and the type
   carries a soft white glow so it stays legible wherever the image happens to
   be dark. Scoped to this template so it does not alter other heroes. */
.page-template-location-page .svc-hero__bg{
  filter:brightness(1.16) saturate(.82) contrast(.95);
}


/* Hero copy ranged left. The shared hero rules centre the heading and
   tagline; in the split layout they should sit against the left edge of
   their column, above the buttons. */
.loc-hero__copy--left,
.loc-hero__copy--left .svc-hero__heading,
.loc-hero__copy--left .svc-hero__tagline{
  text-align:left;
}
.loc-hero__copy--left .svc-hero__tagline{margin-inline:0;}

@media(max-width:1100px){
  /* Stacked layout re-centres everything, so the override comes off. */
  .loc-hero__copy--left,
  .loc-hero__copy--left .svc-hero__heading,
  .loc-hero__copy--left .svc-hero__tagline{text-align:center;}
  .loc-hero__copy--left .svc-hero__tagline{margin-inline:auto;}
}


/* ── Collapsed form ──
   The HubSpot form runs to nine fields plus a consent block, far taller than
   the hero can carry. The embed is cross-origin so its internals cannot be
   restyled, but the wrapper is ours: cap it, fade the cut so it reads as
   "more below" rather than clipped, and release the cap on first interaction.

   The height is a pixel value rather than a field count because nothing on
   this side can see inside the iframe. 300px lands around the fourth field
   on a typical render. */
.loc-form__embed--collapsed{
  position:relative;
  max-height:300px;
  overflow:hidden;
  transition:max-height .45s var(--ease-out);
}
.loc-form__embed--collapsed.is-open{
  max-height:2200px;
  overflow:visible;
}

/* Fade over the cut. Above the iframe visually, but must not eat clicks. */
.loc-form__embed--collapsed::after{
  content:"";
  position:absolute;
  left:0;right:0;bottom:0;
  height:90px;
  pointer-events:none;
  background:linear-gradient(to bottom, rgba(242,244,245,0) 0%, var(--color-bg-alt) 85%);
  transition:opacity .3s var(--ease-out);
}
.loc-form__embed--collapsed.is-open::after{opacity:0;}

.loc-form__expand{
  display:block;
  width:100%;
  margin-top:var(--space-3);
  padding:var(--space-3);
  background:none;
  border:1px solid var(--color-border-strong);
  border-radius:var(--radius-full);
  font-family:var(--font-heading);
  font-size:var(--text-sm);
  font-weight:var(--weight-semibold);
  color:var(--color-text-primary);
  cursor:pointer;
  transition:background-color var(--duration-base) var(--ease-out);
}
.loc-form__expand:hover{background:var(--color-bg-alt);}
.loc-form__expand.is-hidden{display:none;}

@media (prefers-reduced-motion:reduce){
  .loc-form__embed--collapsed{transition:none;}
}


/* ── Hero type legibility ──
   The copy stays vertically centred with the form card, so it rises and falls
   as the form collapses and expands. Pinning it to the bottom would keep it
   over the opaque part of the overlay, but leaves a large gap above it in the
   collapsed state, which is what most visitors see.

   Legibility is carried by the type instead. This hero runs close to 1000px
   because of the form card, so the shared overlay has faded to near-nothing
   by the time it reaches the heading. A stronger, wider glow holds the text
   against open sky without touching the photograph or the composition. */
.page-template-location-page .svc-hero__heading{
  text-shadow:
    0 0 6px  rgba(255,255,255,1),
    0 0 16px rgba(255,255,255,.98),
    0 0 34px rgba(255,255,255,.92),
    0 0 60px rgba(255,255,255,.75),
    0 0 90px rgba(255,255,255,.5);
}
.page-template-location-page .svc-hero__tagline{
  text-shadow:
    0 0 6px  rgba(255,255,255,1),
    0 0 14px rgba(255,255,255,.95),
    0 0 28px rgba(255,255,255,.8),
    0 0 48px rgba(255,255,255,.55);
}


/* A flat 10% white wash over the whole hero, layered on top of the existing
   gradient. The gradient covers the lower half; this lifts the upper half
   too, where the heading sits when the form is collapsed. */
.page-template-location-page .svc-hero__bg::after{
  content:"";
  position:absolute;
  inset:0;
  background:rgba(255,255,255,.40);
  pointer-events:none;
}

/* ===== 51-locations-hub.css ===== */
/* 51-locations-hub.css - locations hub grid
   Tiles are deliberately uniform: fixed image ratio and a flex body, so a
   city with a long service-area line sits at exactly the same height as one
   with none. */

.lh-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:var(--space-6);
}

.lh-card{
  display:flex;
  flex-direction:column;
  background:var(--color-bg-white);
  border:1px solid var(--color-border);
  border-radius:var(--radius-lg);
  overflow:hidden;
  text-decoration:none;
  color:inherit;
  box-shadow:var(--shadow-sm);
  transition:transform var(--duration-base) var(--ease-out),
             box-shadow var(--duration-base) var(--ease-out),
             border-color var(--duration-base) var(--ease-out);
}
.lh-card:hover{
  transform:translateY(-3px);
  box-shadow:var(--shadow-card);
  border-color:var(--color-action);
}

/* Fixed ratio keeps every tile's image the same height whatever the source. */
.lh-card__media{
  aspect-ratio:16/10;
  background:var(--color-bg-alt);
  overflow:hidden;
}
.lh-card__img{width:100%;height:100%;object-fit:cover;display:block;}

.lh-card__body{
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
  padding:var(--space-5);
  gap:var(--space-2);
}
.lh-card__title{
  font-family:var(--font-heading);
  font-size:var(--text-lg);
  font-weight:var(--weight-semibold);
  color:var(--color-text-primary);
  margin:0;
}
.lh-card__area{
  font-size:var(--text-sm);
  line-height:var(--leading-normal);
  color:var(--color-text-muted);
  margin:0;
}
/* margin-top:auto pins the link to the bottom, so it lines up across the row
   regardless of how much text sits above it. */
.lh-card__cta{
  margin-top:auto;
  padding-top:var(--space-2);
  font-size:var(--text-sm);
  font-weight:var(--weight-semibold);
  color:var(--color-action);
}

.lh-empty{
  text-align:center;
  color:var(--color-text-muted);
  padding:var(--space-8) 0;
}

@media (max-width:900px){
  .lh-grid{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:560px){
  .lh-grid{grid-template-columns:1fr;}
}


/* ===== 52-promo-marquee.css ===== */
/* 52-promo-marquee.css - promotional offer marquee
   Single line, large and bold, sitting between the hero and the page body on
   the location templates. Reuses the credential marquee's loop technique: a
   width:max-content track holding two identical content blocks, animated by
   exactly -50% so the second lands where the first began. */

.promo-marquee{
  overflow:hidden;
  padding:var(--space-5) 0;
  background:var(--color-bg-alt);
  border-top:1px solid var(--color-border);
  border-bottom:1px solid var(--color-border);
}

.promo-marquee__track{
  display:flex;
  width:max-content;
  animation:promo-marquee-scroll 38s linear infinite;
}
/* Pause on hover so the offer can actually be read. */
.promo-marquee:hover .promo-marquee__track{animation-play-state:paused;}

.promo-marquee__content{
  display:flex;
  align-items:center;
  gap:var(--space-5);
  white-space:nowrap;
  padding-right:var(--space-5);
  font-family:var(--font-heading);
  font-size:clamp(1.5rem, 3.2vw, 2.5rem);
  font-weight:var(--weight-extrabold);
  letter-spacing:var(--tracking-tight);
  text-transform:uppercase;
  line-height:1.1;
}

.promo-marquee__label{color:var(--color-cta);}
.promo-marquee__offer{color:var(--color-action-deep);}
.promo-marquee__dot{
  color:var(--color-action);
  font-size:.6em;
  transform:translateY(-.12em);
}

@keyframes promo-marquee-scroll{
  from{transform:translateX(0);}
  to{transform:translateX(-50%);}
}

/* Decorative motion: hold it still for anyone who has asked for less. */
@media (prefers-reduced-motion:reduce){
  .promo-marquee__track{animation:none;}
  .promo-marquee__content:nth-child(2){display:none;}
  .promo-marquee{text-align:center;}
  .promo-marquee__content{
    flex-wrap:wrap;
    justify-content:center;
    white-space:normal;
  }
}

@media (max-width:700px){
  .promo-marquee{padding:var(--space-4) 0;}
  .promo-marquee__content{gap:var(--space-4);padding-right:var(--space-4);}
}


/* ===== 53-error-404.css ===== */
/* 53-error-404.css - 404 page
   Three routes out rather than an apology: service areas, residential,
   commercial. Most 404 traffic here is a legacy location URL the redirect
   rules did not cover, so the area card leads. */

.error-404__intro{
  font-size:var(--text-lg);
  line-height:var(--leading-loose);
  color:var(--color-text-body);
  max-width:52ch;
    margin:var(--space-4) auto var(--space-12);
}

.error-404__search{
  max-width:520px;
  margin:0 auto var(--space-12);
}
.error-404__search input[type="search"],
.error-404__search .search-field{
  width:100%;
  padding:var(--space-4) var(--space-5);
  font-size:var(--text-base);
  border:1px solid var(--color-border-strong);
  border-radius:var(--radius-full);
  background:var(--color-bg-white);
}
.error-404__search input[type="submit"],
.error-404__search .search-submit{
  margin-top:var(--space-3);
  padding:var(--space-3) var(--space-6);
  background:var(--color-cta);
  color:#fff;
  border:0;
  border-radius:var(--radius-full);
  font-family:var(--font-heading);
  font-weight:var(--weight-semibold);
  cursor:pointer;
}

.error-404__grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:var(--space-6);
  margin-bottom:var(--space-10);
}

.error-404__card{
  display:flex;
  flex-direction:column;
  background:var(--color-bg-white);
  border:1px solid var(--color-border);
  border-radius:var(--radius-lg);
    padding:var(--space-10) var(--space-8);
  box-shadow:var(--shadow-sm);
  text-align:center;
}
.error-404__card-title{
  font-family:var(--font-heading);
  font-size:var(--text-lg);
  font-weight:var(--weight-semibold);
  color:var(--color-text-primary);
  margin:0 0 var(--space-3);
}
.error-404__card-desc{
  font-size:var(--text-sm);
  line-height:var(--leading-normal);
  color:var(--color-text-body);
  margin:0 0 var(--space-5);
}
/* margin-top:auto pins the buttons to the bottom so they align across the
   row regardless of how much copy sits above them. */
.error-404__card .btn-primary,
.error-404__card .btn-ghost{
  margin-top:auto;
  align-self:center;
}

.error-404__links,
.error-404__phone{
  text-align:center;
  font-size:var(--text-base);
  color:var(--color-text-body);
}
.error-404__links a,
.error-404__phone a{
  color:var(--color-action-text);
  font-weight:var(--weight-semibold);
}
.error-404__phone{margin-top:var(--space-3);}

@media(max-width:900px){
  .error-404__grid{grid-template-columns:1fr;}
}


/* ===== contact.css ===== */
/* contact.css */
.contact-grid__inner{display:grid;grid-template-columns:1fr 380px;gap:var(--space-12);align-items:start;}
.contact-grid__heading{font-size:var(--text-xl);margin-bottom:var(--space-6);}
.contact-form{display:flex;flex-direction:column;gap:var(--space-4);}
.contact-form__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);}
.contact-form__field{display:flex;flex-direction:column;gap:var(--space-1);}
.contact-form__field label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-primary);}
.contact-form__field input,.contact-form__field select,.contact-form__field textarea{padding:var(--space-3) var(--space-4);border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-base);transition:border-color var(--duration-fast) var(--ease-out);background:var(--color-bg-white);}
.contact-form__field input:focus,.contact-form__field select:focus,.contact-form__field textarea:focus{border-color:var(--color-action);outline:none;box-shadow:var(--shadow-focus);}
.contact-grid__expect{margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--color-border);}
.contact-grid__expect h3{font-size:var(--text-lg);margin-bottom:var(--space-3);}
.contact-grid__expect ul{padding-left:var(--space-6);list-style:disc;}
.contact-grid__expect li{font-size:var(--text-sm);color:var(--color-text-body);line-height:var(--leading-loose);}

.contact-grid__info{display:flex;flex-direction:column;gap:var(--space-6);}
.contact-info-card{background:var(--color-bg-alt);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-6);}
.contact-info-card h3{font-size:var(--text-base);margin-bottom:var(--space-4);}
.contact-info-card__row{font-size:var(--text-sm);color:var(--color-text-body);margin-bottom:var(--space-2);}
.contact-info-card__row a{color:var(--color-action-text);transition:var(--transition-color);}
.contact-info-card__row a:hover{color:var(--color-action);}
.contact-grid__map{border-radius:var(--radius-md);overflow:hidden;}

/* Callback modal */
.cb-modal{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:flex-end;justify-content:center;}
.cb-modal__backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);}
.cb-modal__panel{position:relative;background:var(--color-bg-white);border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:520px;max-height:85vh;overflow-y:auto;padding:var(--space-8);animation:slideUp var(--duration-base) var(--ease-out);}
@keyframes slideUp{from{transform:translateY(100%);}to{transform:translateY(0);}}
.cb-modal__close{position:absolute;top:var(--space-4);right:var(--space-4);padding:var(--space-2);border-radius:var(--radius-sm);transition:var(--transition-color);}
.cb-modal__close:hover{background:var(--color-bg-alt);}
.cb-modal__head{margin-bottom:var(--space-6);}
.cb-modal__title{font-size:var(--text-xl);margin-top:var(--space-2);}
.cb-modal__sub{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-2);}
.cb-form{display:flex;flex-direction:column;gap:var(--space-4);}
.cb-form__field{display:flex;flex-direction:column;gap:var(--space-1);}
.cb-form__field label{font-size:var(--text-sm);font-weight:var(--weight-medium);}
.cb-form__field input,.cb-form__field select,.cb-form__field textarea{padding:var(--space-3) var(--space-4);border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-base);transition:border-color var(--duration-fast) var(--ease-out);}
.cb-form__field input:focus,.cb-form__field select:focus,.cb-form__field textarea:focus{border-color:var(--color-action);outline:none;box-shadow:var(--shadow-focus);}

@media(max-width:991px){.contact-grid__inner{grid-template-columns:1fr;}}
@media(max-width:600px){.contact-form__row{grid-template-columns:1fr;}}

/* CTA section */
.cta-section--parallax{position:relative;overflow:hidden;padding-block:var(--section-pad-y-lg);}
.cta-section__parallax{position:absolute;inset:0;background:var(--cta-bg, var(--color-navy)) center/cover no-repeat;background-attachment:fixed;}
.cta-section__overlay{position:absolute;inset:0;background:linear-gradient(135deg,rgba(0,46,71,.88) 0%,rgba(4,106,56,.78) 100%);}
.cta-section__container{position:relative;z-index:1;}
.cta-center{text-align:center;max-width:var(--container-text);margin-inline:auto;}
.cta-section__eyebrow{display:inline-block;font-family:var(--font-heading);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--color-action);margin-bottom:var(--space-4);}
.cta-center__heading--light{font-size:var(--text-section);color:var(--color-text-inverse);margin-bottom:var(--space-4);}
.cta-center__sub--light{font-size:var(--text-base);color:var(--color-text-inverse-muted);line-height:var(--leading-normal);margin-bottom:var(--space-4);max-width:50ch;margin-inline:auto;}
.cta-center__tagline--light{display:block;font-family:var(--font-heading);font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-action);margin-bottom:var(--space-8);}
.cta-center__actions{display:flex;align-items:center;justify-content:center;gap:var(--space-4);flex-wrap:wrap;}
.cta-section__btn--primary{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);font-family:var(--font-heading);font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);color:var(--color-cta-text);background:var(--color-cta);border-radius:var(--radius-full);transition:var(--transition-base);cursor:pointer;border:none;}
.cta-section__btn--primary:hover{background:var(--color-cta-hover);box-shadow:var(--shadow-cta-hover);transform:translateY(-1px);}
.cta-section__btn--ghost{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);font-family:var(--font-heading);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-inverse);border:1.5px solid rgba(255,255,255,.3);border-radius:var(--radius-full);transition:var(--transition-base);background:transparent;}
.cta-section__btn--ghost:hover{border-color:rgba(255,255,255,.6);background:rgba(255,255,255,.08);}
@media(max-width:600px){.cta-section__parallax,.why-section__parallax{background-attachment:scroll;}}

/* Find Us styles live in 32-home-findus.css (current markup API). */


/* ── CF7 Form Styling ── */

.wpcf7-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.wpcf7-form p {
  margin: 0;
}

/* Row layout for paired fields */
.wpcf7-form .contact-form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-5);
  margin-bottom: var(--space-1);
}

.wpcf7-form .contact-form__field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
}

.wpcf7-form .contact-form__label {
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-text-primary);
}

/* Input fields */
.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form select,
.wpcf7-form textarea {
  width: 100%;
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-text-primary);
  background: var(--color-bg-white);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-4);
  transition:
    border-color var(--duration-fast) var(--ease-out),
    box-shadow var(--duration-fast) var(--ease-out);
  outline: none;
  appearance: none;
  -webkit-appearance: none;
}

.wpcf7-form input:focus,
.wpcf7-form select:focus,
.wpcf7-form textarea:focus {
  border-color: var(--color-action);
  box-shadow: 0 0 0 3px rgba(49, 155, 66, 0.15);
}

.wpcf7-form input::placeholder,
.wpcf7-form textarea::placeholder {
  color: var(--color-text-muted);
}

/* Select dropdown arrow */
.wpcf7-form select {
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none' stroke='%236B7280' stroke-width='1.5' stroke-linecap='round'%3E%3Cpath d='M2 4l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--space-4) center;
  padding-right: var(--space-10);
}

/* Textarea */
.wpcf7-form textarea {
  resize: vertical;
  min-height: 130px;
  line-height: var(--leading-normal);
}

/* Footer: submit */
.wpcf7-form .contact-form__footer {
  display: flex;
  align-items: center;
  gap: var(--space-6);
  flex-wrap: wrap;
  margin-top: var(--space-4);
}

.wpcf7-form input[type="submit"] {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--color-cta-text);
  background: var(--color-cta);
  border: none;
  border-radius: var(--radius-full);
  padding: var(--space-3) var(--space-8);
  cursor: pointer;
  transition:
    background var(--duration-fast) var(--ease-out),
    transform var(--duration-fast) var(--ease-out);
}

.wpcf7-form input[type="submit"]:hover {
  background: var(--color-cta-hover);
  transform: translateY(-1px);
}

/* Response messages */
.wpcf7-response-output {
  padding: var(--space-4) var(--space-5);
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  margin-top: var(--space-4);
}

.wpcf7-mail-sent-ok {
  background: rgba(49, 155, 66, 0.08);
  border: 0.5px solid rgba(49, 155, 66, 0.30);
  color: var(--color-action-text);
}

.wpcf7-validation-errors {
  background: rgba(220, 53, 69, 0.06);
  border: 0.5px solid rgba(220, 53, 69, 0.25);
  color: #dc3545;
}

.wpcf7-not-valid-tip {
  font-size: var(--text-xs);
  color: #dc3545;
  margin-top: var(--space-1);
}

/* Hide the CF7 spinner */
.wpcf7-spinner {
  display: none;
}

/* Callback modal CF7 reset */
.cb-modal__body .wpcf7 { margin: 0; padding: 0; }

@media (max-width: 640px) {
  .wpcf7-form .contact-form__row {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }

  .wpcf7-form .contact-form__footer {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* ── Booking Embed Section (service-agnostic) ── */

.booking-section{
  background:var(--color-bg-alt);
  border-top:1px solid var(--color-border);
  border-bottom:1px solid var(--color-border);
}

.booking-section__header{
  text-align:center;
  margin-bottom:var(--space-10);
}

.booking-section__header .section-subheading{
  margin-inline:auto;
}

.booking-embed{
  border-radius:var(--radius-lg);
  overflow:hidden;
  background:var(--color-bg-white);
  box-shadow:var(--shadow-md);
}

.booking-embed iframe{
  display:block;
  width:100%;
  border:0;
}

/* Placeholder state (no booking URL set) */
.booking-placeholder{
  border:2px dashed rgba(49,155,66,0.30);
  border-radius:var(--radius-lg);
  background:var(--color-bg-white);
  padding:var(--space-16) var(--space-8);
  text-align:center;
}

.booking-placeholder__inner{
  max-width:480px;
  margin-inline:auto;
}

.booking-placeholder__icon{
  color:var(--color-action);
  margin:0 auto var(--space-5);
  opacity:0.75;
}

.booking-placeholder__title{
  font-family:var(--font-heading);
  font-size:var(--text-lg);
  font-weight:var(--weight-semibold);
  color:var(--color-text-primary);
  margin-bottom:var(--space-3);
}

.booking-placeholder__text{
  font-size:var(--text-sm);
  color:var(--color-text-muted);
  line-height:var(--leading-normal);
  margin-bottom:var(--space-6);
}

.booking-placeholder__actions{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:var(--space-3);
  flex-wrap:wrap;
}

@media(max-width:640px){
  .booking-embed iframe{
    height:680px !important;
  }
  .booking-placeholder{
    padding:var(--space-10) var(--space-5);
  }
  .booking-placeholder__actions{
    flex-direction:column;
    align-items:stretch;
  }
}

/* ===== service-areas.css ===== */
/* service-areas.css */
.service-areas-bar{background:var(--color-bg-alt);padding-block:var(--space-12);border-top:1px solid var(--color-border);}
.service-areas-bar__header{text-align:center;margin-bottom:var(--space-8);}
.service-areas-bar__heading{font-size:var(--text-xl);margin-top:var(--space-2);}
.service-areas-bar__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-8);max-width:var(--container-text);margin-inline:auto;}
.service-areas-bar__state{font-size:var(--text-base);font-weight:var(--weight-bold);color:var(--color-action-deep);margin-bottom:var(--space-2);}
.service-areas-bar__cities{font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--leading-loose);}
@media(max-width:600px){.service-areas-bar__grid{grid-template-columns:1fr;}}
