*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --gd:#1a3a1f;--gm:#2d5c35;--ga:#4a8c55;--gl:#e8f2e9;
  --gold:#c9a84c;--goldl:#f0dda0;
  --w:#fff;--ow:#f8f7f4;--gray:#f0eeea;--grm:#8a8780;--grd:#3a3834;--txt:#1e1d1a;
  --fd:'Playfair Display',Georgia,serif;--fb:'DM Sans',system-ui,sans-serif;
  --r:4px;--rl:10px;
  --sh:0 2px 20px rgba(26,58,31,.10);--shl:0 8px 40px rgba(26,58,31,.15);
}
html{scroll-behavior:smooth;scroll-padding-top:80px}
body{font-family:var(--fb);color:var(--txt);background:var(--w);font-size:16px;line-height:1.6;overflow-x:hidden}

/* NAV — editorial header. Translucent cream surface with a subtle
   backdrop blur over scrolling content; transparent over the hero on
   pages that opt in via body.has-hero-bg, switching to the blurred
   surface after a small scroll. */
nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  height:80px;padding:0 56px;
  background:var(--w);
  border-bottom:1px solid rgba(26,58,31,.08);
  transition:background 360ms ease,border-color 360ms ease,color 360ms ease,backdrop-filter 360ms ease;
}
@supports ((backdrop-filter:saturate(180%) blur(12px)) or (-webkit-backdrop-filter:saturate(180%) blur(12px))){
  nav{
    background:rgba(255,255,255,.82);
    -webkit-backdrop-filter:saturate(180%) blur(14px);
    backdrop-filter:saturate(180%) blur(14px);
  }
}
.nl{
  display:flex;flex-direction:column;align-items:flex-start;
  text-decoration:none;color:var(--gd);line-height:1;gap:6px;
  transition:color 320ms ease;
}
.nl .wm-primary{
  font-family:var(--fd);font-weight:400;
  font-size:1.4rem;letter-spacing:-.012em;line-height:1;
}
.nl .wm-secondary{
  font-family:var(--fb);font-size:.62rem;font-weight:500;
  letter-spacing:.26em;text-transform:uppercase;
  color:var(--gm);transition:color 320ms ease;
}
.nlinks{display:flex;gap:44px;list-style:none;align-items:center}
.nlinks a{
  font-family:var(--fb);font-weight:500;font-size:13.5px;
  letter-spacing:.04em;color:var(--gd);text-decoration:none;
  position:relative;padding:8px 0;
  transition:color 240ms ease;
}
.nlinks a::after{
  content:"";position:absolute;left:0;bottom:0;
  width:0;height:1px;background:var(--gold);
  transition:width 380ms cubic-bezier(.2,.7,.2,1);
}
.nlinks a:hover{color:var(--gm)}
.nlinks a:hover::after{width:100%}
.nlinks a[aria-current="page"]{color:var(--gd)}
.nlinks a[aria-current="page"]::after{
  width:100%;background:var(--gold);
}
/* The old .ncta gold pill is dropped; the Quote link inherits .nlinks a */

.hbg{display:none;flex-direction:column;gap:5px;cursor:pointer;background:transparent;border:0;padding:8px}
.hbg span{width:22px;height:1.5px;background:var(--gd);display:block;transition:background 320ms ease}

/* Transparent over hero (homepage initial state) — kill the blur so the
   photography reads cleanly through the header. */
body.has-hero-bg nav{
  background:transparent;border-bottom-color:transparent;
  -webkit-backdrop-filter:none;backdrop-filter:none;
}
body.has-hero-bg nav .nl{color:rgba(255,255,255,.96)}
body.has-hero-bg nav .nl .wm-secondary{color:rgba(255,255,255,.7)}
body.has-hero-bg nav .nlinks a{color:rgba(255,255,255,.92)}
body.has-hero-bg nav .nlinks a:hover{color:var(--goldl)}
body.has-hero-bg nav .nlinks a[aria-current="page"]::after{background:var(--goldl)}
body.has-hero-bg nav .hbg span{background:#fff}
/* After scroll → blurred cream surface */
body.has-hero-bg nav.nav-scrolled{
  background:var(--w);border-bottom-color:rgba(26,58,31,.08);
}
@supports ((backdrop-filter:saturate(180%) blur(12px)) or (-webkit-backdrop-filter:saturate(180%) blur(12px))){
  body.has-hero-bg nav.nav-scrolled{
    background:rgba(255,255,255,.82);
    -webkit-backdrop-filter:saturate(180%) blur(14px);
    backdrop-filter:saturate(180%) blur(14px);
  }
}
body.has-hero-bg nav.nav-scrolled .nl{color:var(--gd)}
body.has-hero-bg nav.nav-scrolled .nl .wm-secondary{color:var(--gm)}
body.has-hero-bg nav.nav-scrolled .nlinks a{color:var(--gd)}
body.has-hero-bg nav.nav-scrolled .nlinks a:hover{color:var(--gm)}
body.has-hero-bg nav.nav-scrolled .nlinks a[aria-current="page"]::after{background:var(--gold)}
body.has-hero-bg nav.nav-scrolled .hbg span{background:var(--gd)}

/* HERO — full-bleed editorial. Photography is the centerpiece; type sits
   lower-left over a subtle bottom darkening. No decorative geometry.
   No form. No stats. One call-to-action. */
.hero{
  position:relative;
  min-height:100vh;
  display:flex;align-items:flex-end;
  padding:0;margin:0;overflow:hidden;isolation:isolate;
}
.hero-media{position:absolute;inset:0;z-index:-2}
.hero-media img{
  width:100%;height:100%;
  object-fit:cover;
  /* y=55% balances the crop on the landscape 1000x750 hero asset —
     the row of homes anchors the upper third, mowing stripes dominate
     the lower two-thirds, and the bottom edge stays clean. */
  object-position:center 55%;
  /* Subtle Ken-Burns; reduced-motion users get a still image */
  animation:hero-zoom 28s ease-in-out infinite alternate;
}
.hero-media::after{
  /* Two-stop overlay: light shadow at top for nav legibility,
     stronger fall-off at bottom for type legibility. No color tint. */
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(180deg, rgba(0,0,0,.32) 0%, rgba(0,0,0,0) 22%, rgba(0,0,0,0) 48%, rgba(0,0,0,.62) 100%);
}
.hero-content{
  position:relative;z-index:2;
  width:100%;max-width:1280px;
  margin:0 auto;
  padding:0 48px 112px;
  color:#fff;
}
.hero-eyebrow{
  display:inline-flex;align-items:center;gap:14px;
  font-family:var(--fb);font-weight:500;font-size:11px;
  letter-spacing:.22em;text-transform:uppercase;
  color:var(--goldl);
  margin-bottom:28px;
}
.hero-eyebrow::before{
  content:"";display:block;width:36px;height:1px;background:var(--gold)
}
.hero-title{
  font-family:var(--fd);font-weight:400;
  font-size:clamp(2.6rem, 6.2vw, 5.6rem);
  line-height:1.04;letter-spacing:-.015em;
  color:#fff;
  margin:0 0 28px;
  max-width:14ch;
}
.hero-title em{font-style:italic;font-weight:400;color:#fff}
.hero-sub{
  font-family:var(--fb);font-weight:400;
  font-size:clamp(1rem, 1.35vw, 1.15rem);
  line-height:1.6;
  color:rgba(255,255,255,.86);
  max-width:42ch;
  margin:0 0 44px;
}
.hero-cta{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--fb);font-weight:500;
  font-size:13px;letter-spacing:.16em;text-transform:uppercase;
  color:#fff;background:var(--gd);
  padding:18px 30px;border:1px solid rgba(255,255,255,.16);
  border-radius:2px;text-decoration:none;
  transition:background 260ms ease,border-color 260ms ease,transform 260ms ease;
}
.hero-cta:hover{background:var(--gm);border-color:rgba(255,255,255,.32)}
.hero-cta:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.hero-cta__arrow{display:inline-block;transition:transform 260ms ease}
.hero-cta:hover .hero-cta__arrow{transform:translateX(4px)}

@keyframes hero-zoom{
  from{transform:scale(1)}
  to{transform:scale(1.06)}
}
@media (prefers-reduced-motion: reduce){
  .hero-media img{animation:none}
}

/* ================================
   PAGE HERO — inner-page hero band. Replaces the homepage full-bleed
   hero on /services, /about, /gallery, /reviews, /quote. Cream surface
   with the page-anchoring H1 and lede; thin gold-leader eyebrow above.
   ================================ */
.page-hero{
  background:var(--ow);
  padding:160px 56px 96px;
  border-bottom:1px solid rgba(26,58,31,.07);
}
.page-hero__inner{
  max-width:1280px;margin:0 auto;
}
.page-hero__title{
  font-family:var(--fd);font-weight:400;
  font-size:clamp(2.6rem, 6vw, 5.2rem);
  line-height:1.05;letter-spacing:-.015em;
  color:var(--gd);margin:0 0 32px;
  max-width:18ch;
}
.page-hero__title em{font-style:italic;font-weight:400;color:var(--gd)}
.page-hero__lede{
  font-family:var(--fb);font-weight:400;
  font-size:clamp(1.05rem, 1.4vw, 1.2rem);
  line-height:1.6;color:var(--grd);
  max-width:52ch;margin:0;
}

/* SHARED */
section{padding:5rem 2rem}
.con{max-width:1100px;margin:0 auto}
.slbl{font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;color:var(--ga);font-weight:600;margin-bottom:.75rem;display:flex;align-items:center;gap:10px}
.slbl::before{content:'';width:24px;height:2px;background:var(--gold);display:block}
.stit{font-family:var(--fd);font-size:clamp(1.8rem,4vw,2.8rem);color:var(--gd);line-height:1.2;margin-bottom:1rem}
.ssub{font-size:1.05rem;color:var(--grm);max-width:540px;line-height:1.7;margin-bottom:3rem}

/* ================================
   Editorial section primitives (reusable)
   Eyebrow + title + lede composition used by Services and Gallery
   to match the hero's typographic system.
   ================================ */
.section-eyebrow{
  display:inline-flex;align-items:center;gap:14px;
  font-family:var(--fb);font-weight:500;font-size:11px;
  letter-spacing:.22em;text-transform:uppercase;
  color:var(--ga);margin:0 0 24px;
}
.section-eyebrow::before{
  content:"";display:block;width:36px;height:1px;background:var(--gold);
}
.section-title{
  font-family:var(--fd);font-weight:400;
  font-size:clamp(2rem, 4.2vw, 3.5rem);
  line-height:1.08;letter-spacing:-.012em;
  color:var(--gd);margin:0 0 26px;
  max-width:22ch;
}
.section-title em{font-style:italic;font-weight:400;color:var(--gd)}
.section-lede{
  font-family:var(--fb);font-weight:400;
  font-size:clamp(1rem, 1.2vw, 1.125rem);
  line-height:1.6;color:var(--grm);
  max-width:48ch;margin:0;
}

/* ================================
   Reveal — viewport-intersection fade
   JS in main.js toggles .is-visible on intersect.
   ================================ */
.reveal{
  opacity:0;transform:translateY(28px);
  transition:opacity 900ms cubic-bezier(.16,1,.3,1),
             transform 900ms cubic-bezier(.16,1,.3,1);
  will-change:opacity,transform;
}
.reveal.is-visible{opacity:1;transform:translateY(0)}
@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1;transform:none;transition:none}
}

/* Image-led reveals — slower, more cinematic. Hero is excluded (it has
   its own Ken-Burns). Targets sections that lead with photography. */
.service-chapter.reveal,
.about-media.reveal,
.gallery-figure.reveal{
  transition-duration:1200ms;
}

/* Staggered cascades — small per-element delays inside grouped lists.
   Each reveal still fires on its own intersection, but when siblings
   enter together the cascade lands cleanly. */
.services .service-chapter.reveal:nth-of-type(2){transition-delay:90ms}
.services .service-chapter.reveal:nth-of-type(3){transition-delay:180ms}
.services .service-chapter.reveal:nth-of-type(4){transition-delay:270ms}

.reviews-list .review.reveal:nth-of-type(2){transition-delay:120ms}
.reviews-list .review.reveal:nth-of-type(3){transition-delay:240ms}
.reviews-list .review.reveal:nth-of-type(4){transition-delay:360ms}

.gallery-grid .gallery-figure.reveal:nth-of-type(2){transition-delay:80ms}
.gallery-grid .gallery-figure.reveal:nth-of-type(3){transition-delay:160ms}
.gallery-grid .gallery-figure.reveal:nth-of-type(4){transition-delay:240ms}
.gallery-grid .gallery-figure.reveal:nth-of-type(5){transition-delay:320ms}
.gallery-grid .gallery-figure.reveal:nth-of-type(6){transition-delay:400ms}

@media (prefers-reduced-motion: reduce){
  .services .service-chapter.reveal,
  .reviews-list .review.reveal,
  .gallery-grid .gallery-figure.reveal{transition-delay:0ms}
}

/* ================================
   TRUST STRIP — quiet credibility band beneath the hero.
   Four claims, small caps, gold leader marks, no icons.
   ================================ */
.trust-strip{
  background:var(--w);
  padding:40px 56px;
  border-bottom:1px solid rgba(26,58,31,.07);
}
.trust-strip__inner{
  max-width:1280px;margin:0 auto;
  display:grid;grid-template-columns:repeat(4, 1fr);
  column-gap:48px;
}
.trust-strip__item{
  display:flex;align-items:center;gap:14px;min-width:0;
}
.trust-strip__mark{
  display:block;width:24px;height:1px;
  background:var(--gold);flex-shrink:0;
}
.trust-strip__copy{
  font-family:var(--fb);font-weight:500;
  font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gd);margin:0;line-height:1.45;
}

/* ================================
   SERVICES — editorial chapters
   Four disciplines alternating image-right / image-left. No cards,
   no icons, no bullet lists. Photography carries the section.
   ================================ */
.services{
  background:var(--w);
  padding:144px 48px;
}
.services-intro{
  max-width:1280px;margin:0 auto 96px;
}
.service-chapter{
  max-width:1280px;margin:0 auto 152px;
  display:grid;
  grid-template-columns:5fr 7fr;
  column-gap:80px;row-gap:48px;
  align-items:center;
}
.service-chapter:last-child{margin-bottom:0}
.service-chapter--reverse{grid-template-columns:7fr 5fr}
.service-chapter--reverse .service-chapter__media{order:2}
.service-chapter--reverse .service-chapter__body{order:1}
.service-chapter__media{
  margin:0;overflow:hidden;
  /* Slight tonal frame — preserves photographic edges without a card feel */
  background:#000;
}
.service-chapter__media img{
  display:block;width:100%;
  aspect-ratio:4 / 5;
  object-fit:cover;
  /* Subtle settle on slow scroll. No hover-zoom. */
}
.service-chapter--reverse .service-chapter__media img{
  aspect-ratio:4 / 5;
}
.service-chapter__body{padding:16px 8px}
.service-chapter__number{
  display:block;font-family:var(--fd);font-style:italic;font-weight:400;
  font-size:1.15rem;color:var(--gold);
  margin:0 0 20px;letter-spacing:.005em;
}
.service-chapter__title{
  font-family:var(--fd);font-weight:400;
  font-size:clamp(1.8rem, 2.8vw, 2.5rem);
  line-height:1.1;letter-spacing:-.012em;
  color:var(--gd);margin:0 0 24px;
}
.service-chapter__copy{
  font-family:var(--fb);font-weight:400;
  font-size:17px;line-height:1.7;
  color:var(--grd);margin:0 0 32px;
  max-width:44ch;
}
.service-chapter__link{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--fb);font-weight:500;
  font-size:13px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gd);text-decoration:none;
  padding-bottom:6px;
  border-bottom:1px solid var(--gold);
  transition:color 220ms ease, border-color 220ms ease;
}
.service-chapter__link:hover{color:var(--gm);border-bottom-color:var(--gm)}
.service-chapter__link:focus-visible{outline:2px solid var(--gold);outline-offset:6px}
.service-chapter__link__arrow{display:inline-block;transition:transform 240ms ease}
.service-chapter__link:hover .service-chapter__link__arrow{transform:translateX(4px)}

/* Compact inline list of sub-services for /services chapters. Editorial
   pipe-separated line, sits between the body copy and the CTA. */
.service-chapter__list{
  margin:-12px 0 32px;
  font-family:var(--fb);font-weight:500;
  font-size:12.5px;line-height:1.75;letter-spacing:.04em;
  color:var(--grm);
  max-width:48ch;
}

/* Trust line — small caps, accent green, gold hairline leader. Sits
   between a chapter's copy and its CTA. Reads as understated
   credibility, never as a badge. */
.service-chapter__trust{
  margin:-12px 0 32px;
  display:inline-flex;align-items:center;gap:14px;
  font-family:var(--fb);font-weight:500;
  font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ga);
}
.service-chapter__trust::before{
  content:"";display:block;width:32px;height:1px;background:var(--gold);
}

/* ================================
   ABOUT — editorial owner story
   ================================ */
.about{
  background:var(--w);
  padding:144px 48px;
}
.about-grid{
  max-width:1280px;margin:0 auto;
  display:grid;grid-template-columns:5fr 7fr;
  column-gap:88px;row-gap:56px;align-items:center;
}
.about-body{padding:8px 0}
.about-prose{
  font-family:var(--fb);font-weight:400;
  font-size:17px;line-height:1.75;
  color:var(--grd);margin:0 0 28px;
  max-width:46ch;
}
.about-quote{
  margin:36px 0 36px;
  padding:0 0 0 24px;
  border-left:2px solid var(--gold);
  max-width:42ch;
}
.about-quote p{
  font-family:var(--fd);font-style:italic;font-weight:400;
  font-size:clamp(1.15rem, 1.7vw, 1.45rem);
  line-height:1.45;color:var(--gd);
  margin:0;letter-spacing:-.005em;
}
.about-meta{
  margin:40px 0 0;
  font-family:var(--fb);font-weight:500;
  font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ga);
  display:flex;align-items:center;gap:14px;
}
.about-meta::before{
  content:"";display:block;width:36px;height:1px;background:var(--gold);
}
.about-media{margin:0;overflow:hidden;background:#000}
.about-media img{
  display:block;width:100%;
  aspect-ratio:4 / 5;object-fit:cover;
}

/* ================================
   ABOUT STANDARDS — three editorial standards block on /about.
   No cards, no icons; gold-italic numerals + restrained typography.
   ================================ */
.about-standards{
  background:var(--ow);
  padding:144px 56px;
}
.about-standards__inner{
  max-width:1280px;margin:0 auto;
}
.about-standards__title{
  margin:0 0 80px;
}
.about-standards__grid{
  display:grid;grid-template-columns:repeat(3, 1fr);
  column-gap:64px;row-gap:48px;
}
.about-standard{
  display:flex;flex-direction:column;gap:18px;
}
.about-standard__num{
  font-family:var(--fd);font-style:italic;font-weight:400;
  font-size:1.15rem;color:var(--gold);
  letter-spacing:.005em;
}
.about-standard__title{
  font-family:var(--fd);font-weight:400;
  font-size:clamp(1.4rem, 2vw, 1.85rem);
  line-height:1.15;letter-spacing:-.01em;
  color:var(--gd);margin:0;
}
.about-standard__copy{
  font-family:var(--fb);font-weight:400;
  font-size:16px;line-height:1.7;
  color:var(--grd);margin:0;max-width:38ch;
}

/* ================================
   GALLERY — uniform editorial grid
   3 columns × 2 rows on desktop, 2 columns on tablet, 1 column on
   mobile. Every tile renders at the same 4:5 aspect with consistent
   24px gutters. Italic captions sit beneath each photo. No overlays,
   no hover-lift, no image zoom — only a 1px gold underline on the
   caption on hover.
   ================================ */
.gallery{
  background:var(--ow);
  padding:144px 48px;
}
.gallery-intro{
  max-width:1280px;margin:0 auto 88px;
}
.gallery-grid{
  max-width:1280px;margin:0 auto;
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  column-gap:24px;row-gap:48px;
}
.gallery-figure{
  margin:0;
  overflow:hidden;
  background:var(--ow);
}
.gallery-figure img{
  display:block;
  width:100%;height:100%;
  aspect-ratio:1 / 1;
  object-fit:cover;
  transition:transform 600ms cubic-bezier(.2,.7,.2,1);
  will-change:transform;
}
.gallery-figure:hover img,
.gallery-figure:focus-within img{
  transform:scale(1.02);
}
.gallery-figure figcaption{
  font-family:var(--fd);font-style:italic;font-weight:400;
  font-size:14px;line-height:1.5;
  color:var(--grd);letter-spacing:.005em;
  margin-top:14px;
  /* Captions get a 1px gold underline on hover — the only "interaction"
     on a gallery figure. No image transform. */
  position:relative;display:inline-block;padding-bottom:4px;
}
.gallery-figure figcaption::after{
  content:"";position:absolute;left:0;bottom:0;
  width:0;height:1px;background:var(--gold);
  transition:width 280ms ease;
}
.gallery-figure:hover figcaption::after,
.gallery-figure:focus-within figcaption::after{width:48px}

/* Tablet: 2 columns */
@media (max-width:1024px){
  .gallery{padding:120px 32px}
  .gallery-grid{
    grid-template-columns:repeat(2, 1fr);
    column-gap:20px;row-gap:40px;
  }
  nav{padding:0 40px}
  .trust-strip{padding:36px 40px}
}
@media (max-width:900px){
  .trust-strip__inner{
    grid-template-columns:repeat(2, 1fr);
    column-gap:32px;row-gap:20px;
  }
}

/* ================================
   REVIEWS — editorial pull-quotes (no cards, no stars, no avatars)
   ================================ */
.reviews{
  background:var(--ow);
  padding:144px 48px;
}
.reviews-intro{
  max-width:1280px;margin:0 auto 112px;
}
/* Yelp aggregate mark — five small gold diamonds + 'Yelp verified'.
   Diamond shape echoes the wordmark and avoids generic five-star clutter. */
.reviews-rating{
  margin:28px 0 0;
  display:inline-flex;align-items:center;gap:18px;
}
.reviews-rating__marks{
  display:inline-flex;align-items:center;gap:9px;
}
.reviews-rating__marks span{
  display:block;width:8px;height:8px;
  background:var(--gold);
  transform:rotate(45deg);
  box-shadow:0 0 0 1px rgba(201,168,76,.2);
}
.reviews-rating__source{
  font-family:var(--fb);font-weight:500;
  font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--grm);
}
.reviews-list{
  max-width:820px;margin:0 auto;
  display:flex;flex-direction:column;
  gap:120px;
}
.review{
  margin:0;
  display:flex;flex-direction:column;
}
.review-rule{
  display:block;width:48px;height:1px;
  background:var(--gold);
  margin-bottom:36px;
}
.review-quote{
  margin:0 0 32px;padding:0;border:0;
}
.review-quote p{
  font-family:var(--fd);font-style:italic;font-weight:400;
  font-size:clamp(1.55rem, 2.4vw, 2.05rem);
  line-height:1.38;letter-spacing:-.008em;
  color:var(--gd);margin:0;
  max-width:32ch;
}
.review-attribution{
  margin:0;
  font-family:var(--fb);font-weight:500;
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--grm);
}
/* Yelp call-to-action sits at the foot of the reviews list. */
.reviews-cta{
  max-width:820px;margin:96px auto 0;text-align:center;
}
.reviews-cta__link{
  display:inline-flex;align-items:center;gap:12px;
  font-family:var(--fb);font-weight:500;
  font-size:13px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gd);text-decoration:none;
  padding-bottom:6px;
  border-bottom:1px solid var(--gold);
  transition:color 220ms ease, border-color 220ms ease;
}
.reviews-cta__link:hover{color:var(--gm);border-bottom-color:var(--gm)}
.reviews-cta__link:focus-visible{outline:2px solid var(--gold);outline-offset:6px}
.reviews-cta__arrow{display:inline-block;transition:transform 240ms ease}
.reviews-cta__link:hover .reviews-cta__arrow{transform:translateX(4px)}

/* ================================
   CONSULTATION — closing invitation on the homepage
   Centered editorial composition. Single primary CTA to /quote.
   ================================ */
.consultation{
  background:var(--w);
  padding:144px 48px 168px;
  text-align:center;
}
.consultation-inner{
  max-width:780px;margin:0 auto;
}
.consultation-eyebrow{
  display:inline-flex;align-items:center;gap:14px;
  font-family:var(--fb);font-weight:500;font-size:11px;
  letter-spacing:.22em;text-transform:uppercase;
  color:var(--ga);margin:0 auto 28px;
}
.consultation-eyebrow::before{
  content:"";display:block;width:36px;height:1px;background:var(--gold);
}
.consultation-title{
  font-family:var(--fd);font-weight:400;
  font-size:clamp(2rem, 4.2vw, 3.5rem);
  line-height:1.08;letter-spacing:-.012em;
  color:var(--gd);margin:0 auto 28px;
  max-width:18ch;
}
.consultation-lede{
  font-family:var(--fb);font-weight:400;
  font-size:clamp(1rem, 1.25vw, 1.15rem);
  line-height:1.65;color:var(--grm);
  max-width:46ch;margin:0 auto 56px;
}
.consultation-cta{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--fb);font-weight:500;
  font-size:13px;letter-spacing:.16em;text-transform:uppercase;
  color:#fff;background:var(--gd);
  padding:18px 36px;border:1px solid var(--gd);
  border-radius:2px;text-decoration:none;
  transition:background 260ms ease, border-color 260ms ease;
}
.consultation-cta:hover{background:var(--gm);border-color:var(--gm)}
.consultation-cta:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.consultation-cta__arrow{display:inline-block;transition:transform 240ms ease}
.consultation-cta:hover .consultation-cta__arrow{transform:translateX(4px)}

/* Consultation form — editorial intake. Hairline-only inputs on the cream
   ground; no card surface, no rounded boxes, no inset shadow. Labels sit
   above each input in small caps gold-leader rhythm. Inputs are 16px to
   prevent iOS focus-zoom; the submit button is min-48px tall. */
.consult-form{
  max-width:640px;
  margin:64px auto 0;
  text-align:left;
}
.consult-form__fields{
  display:flex;flex-direction:column;gap:28px;
}
.consult-form__row{
  display:grid;grid-template-columns:1fr 1fr;column-gap:28px;
}
.consult-field{
  display:flex;flex-direction:column;gap:10px;min-width:0;
}
.consult-field__label{
  font-family:var(--fb);font-weight:500;
  font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gd);
}
.consult-field__label-opt{
  font-family:var(--fd);font-style:italic;font-weight:400;
  font-size:11px;letter-spacing:0;text-transform:none;
  color:var(--grm);margin-left:6px;
}
.consult-field__input{
  width:100%;
  background:transparent;
  border:0;
  border-bottom:1px solid rgba(26,58,31,.2);
  border-radius:0;
  padding:12px 0 12px;
  font-family:var(--fb);font-weight:400;
  font-size:16px;line-height:1.4;
  color:var(--gd);
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  outline:none;
  transition:border-color 280ms ease;
}
.consult-field__input::placeholder{
  color:var(--grm);font-style:italic;opacity:.85;
}
.consult-field__input:hover{border-bottom-color:rgba(26,58,31,.4)}
.consult-field__input:focus{border-bottom-color:var(--gold)}
.consult-field__input:focus-visible{outline:none}
.consult-field__select-wrap{
  position:relative;display:block;
}
.consult-field__select{
  padding-right:28px;cursor:pointer;
  background-image:none;
}
.consult-field__select::-ms-expand{display:none}
.consult-field__chevron{
  position:absolute;right:0;top:50%;
  transform:translateY(-55%);
  font-size:14px;color:var(--gm);
  pointer-events:none;
}
.consult-field__textarea{
  resize:vertical;min-height:112px;
  padding:14px 0 12px;line-height:1.55;
}
.consult-turnstile{
  margin-top:8px;
  display:flex;justify-content:flex-start;
  min-height:65px; /* reserve space before the widget loads */
}
.consult-form__error{
  margin:0;padding:0;
  font-family:var(--fb);font-weight:400;
  font-size:14px;line-height:1.5;
  color:#a8341a;
}
.consult-form__submit{
  align-self:flex-start;
  display:inline-flex;align-items:center;gap:12px;
  font-family:var(--fb);font-weight:500;
  font-size:13px;letter-spacing:.16em;text-transform:uppercase;
  color:#fff;background:var(--gd);
  padding:18px 36px;border:1px solid var(--gd);
  border-radius:2px;cursor:pointer;
  min-height:48px;
  transition:background 260ms ease, border-color 260ms ease, opacity 260ms ease, transform 260ms ease;
}
.consult-form__submit:hover{background:var(--gm);border-color:var(--gm)}
.consult-form__submit:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.consult-form__submit:disabled{opacity:.7;cursor:wait}
.consult-form__submit-arrow{display:inline-block;transition:transform 240ms ease}
.consult-form__submit:hover:not(:disabled) .consult-form__submit-arrow{
  transform:translateX(4px);
}

.consult-form__success{
  padding:40px 0 16px;text-align:left;
}
.consult-form__success-eyebrow{
  display:inline-flex;align-items:center;gap:14px;
  font-family:var(--fb);font-weight:500;
  font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ga);margin:0 0 18px;
}
.consult-form__success-eyebrow::before{
  content:"";display:block;width:36px;height:1px;background:var(--gold);
}
.consult-form__success-line{
  font-family:var(--fd);font-style:italic;font-weight:400;
  font-size:clamp(1.15rem, 1.7vw, 1.45rem);line-height:1.45;
  letter-spacing:-.005em;
  color:var(--gd);margin:0;max-width:40ch;
}

/* Trust line sits above the direct-contact block — same gold-leader
   vocabulary as the section eyebrows. */
.consultation-trust{
  margin:56px auto 0;
  display:inline-flex;align-items:center;gap:14px;
  font-family:var(--fb);font-weight:500;
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ga);line-height:1.55;
  text-align:center;
}
.consultation-trust::before{
  content:"";display:block;width:36px;height:1px;
  background:var(--gold);flex-shrink:0;
}

.consultation-direct{
  margin:48px auto 0;
  display:flex;flex-direction:column;align-items:center;gap:10px;
}
.consultation-direct__label{
  font-family:var(--fb);font-weight:500;
  font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--grm);margin:0 0 6px;
}
.consultation-direct__lines{
  margin:0;font-family:var(--fb);font-size:15px;line-height:1.5;
  color:var(--grd);
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:center;
}
.consultation-direct__lines a{
  color:var(--gd);text-decoration:none;
  border-bottom:1px solid transparent;
  padding-bottom:2px;
  transition:border-color 220ms ease;
}
.consultation-direct__lines a:hover{border-bottom-color:var(--gold)}
.consultation-direct__sep{color:var(--gold)}
.consultation-direct__hours{
  margin:6px 0 0;
  font-family:var(--fd);font-style:italic;
  font-size:14px;color:var(--grm);
}

/* ================================
   QUOTE SECTION — /quote page form wrapper. Reuses .consult-form
   styling primitives; centers the form column on a clean cream surface.
   ================================ */
.quote-section{
  background:var(--w);
  padding:96px 56px 144px;
}
.quote-section__inner{
  max-width:680px;margin:0 auto;
  text-align:center;
}
.quote-section__inner .consult-form{
  margin-top:0;
}
.quote-form__next{
  margin:20px 0 0;
  font-family:var(--fd);font-style:italic;font-weight:400;
  font-size:14px;line-height:1.6;
  color:var(--grm);max-width:44ch;
}

/* CONTACT (legacy — old /quote page styling, kept for any external
   references; the live /quote page uses .quote-section + .consult-form
   classes above.) */
#contact{background:var(--w)}
.cgrid{display:grid;grid-template-columns:1fr 1.4fr;gap:4rem;align-items:start}
.cdet{display:flex;flex-direction:column;gap:1rem}
.citem{display:flex;gap:12px;align-items:flex-start}
.cicon{width:38px;height:38px;background:var(--gl);border-radius:var(--r);display:flex;align-items:center;justify-content:center;font-size:1rem;flex-shrink:0}
.ctxt{font-size:.9rem;color:var(--grd);line-height:1.5}
.ctxt strong{display:block;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ga);margin-bottom:2px;font-weight:600}
.qf{background:var(--ow);border-radius:var(--rl);padding:2.5rem;border:1px solid rgba(0,0,0,.07)}
.ftit{font-family:var(--fd);font-size:1.5rem;color:var(--gd);margin-bottom:.5rem}
.fsub{font-size:.9rem;color:var(--grm);margin-bottom:1.75rem}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.fg{display:flex;flex-direction:column;gap:6px;margin-bottom:1rem}
.fg label{font-size:.82rem;font-weight:600;color:var(--gd);letter-spacing:.04em;text-transform:uppercase}
.fg input,.fg select,.fg textarea{border:1.5px solid rgba(0,0,0,.12);border-radius:var(--r);padding:10px 14px;font-family:var(--fb);font-size:.95rem;color:var(--txt);background:var(--w);outline:none;transition:border-color .2s;width:100%}
.fg input:focus,.fg select:focus,.fg textarea:focus{border-color:var(--ga);box-shadow:0 0 0 3px rgba(74,140,85,.1)}
.fg textarea{min-height:110px;resize:vertical}
.fsub-btn{width:100%;background:var(--gd);color:var(--w);border:none;padding:14px 24px;border-radius:var(--r);font-size:1rem;font-weight:600;font-family:var(--fb);cursor:pointer;transition:background .2s,transform .15s;margin-top:.5rem}
.fsub-btn:hover{background:var(--ga);transform:translateY(-1px)}
.fsuc{display:none;text-align:center;padding:2rem;color:var(--gd)}
.fsuc span{font-size:2.5rem;margin-bottom:1rem;display:block}
.fsuc h3{font-family:var(--fd);font-size:1.4rem;margin-bottom:.5rem}
.fsuc p{color:var(--grm);font-size:.95rem}

/* ================================
   FOOTER — editorial close. Dark green ground, three columns, italic
   closing line above a thin gold rule, minimal bottom bar.
   ================================ */
.site-footer{
  background:var(--gd);
  color:rgba(255,255,255,.78);
  padding:128px 48px 56px;
  font-family:var(--fb);
}
.site-footer__grid{
  max-width:1280px;margin:0 auto;
  display:grid;grid-template-columns:5fr 4fr 4fr;
  column-gap:80px;row-gap:56px;
}
.footer-col{
  display:flex;flex-direction:column;align-items:flex-start;
}
.footer-col__heading{
  font-size:11px;font-weight:500;
  letter-spacing:.22em;text-transform:uppercase;
  color:var(--goldl);
  margin:0 0 24px;padding:0;
}
.footer-col--brand .footer-wordmark__primary{
  font-family:var(--fd);font-weight:400;
  font-size:1.5rem;letter-spacing:-.005em;
  color:#fff;line-height:1;display:block;
}
.footer-col--brand .footer-wordmark__secondary{
  font-family:var(--fb);font-weight:500;
  font-size:.65rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--goldl);margin-top:6px;display:block;
}
.footer-tagline{
  font-family:var(--fd);font-style:italic;font-weight:400;
  font-size:16px;line-height:1.55;
  color:rgba(255,255,255,.78);
  margin:32px 0 0;max-width:38ch;
}
.footer-trust{
  margin:28px 0 0;
  font-family:var(--fb);font-weight:500;
  font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold);
  display:flex;align-items:center;gap:14px;
}
.footer-trust::before{
  content:"";display:block;width:32px;height:1px;background:var(--gold);
}
.footer-link{
  display:block;color:rgba(255,255,255,.88);
  text-decoration:none;font-size:15px;line-height:1.55;
  margin-bottom:8px;
  border-bottom:1px solid transparent;padding-bottom:2px;
  align-self:flex-start;
  transition:color 200ms ease, border-color 200ms ease;
}
.footer-link:hover{color:#fff;border-bottom-color:var(--gold)}
.footer-link--strong{
  font-family:var(--fd);font-size:1.15rem;
  color:#fff;letter-spacing:-.005em;margin-bottom:14px;
}
.footer-meta{
  margin:14px 0 0;
  font-size:14px;line-height:1.6;
  color:rgba(255,255,255,.6);
}
.footer-areas{
  list-style:none;padding:0;margin:0;
  display:flex;flex-direction:column;gap:6px;
}
.footer-areas li{
  font-size:14px;line-height:1.55;
  color:rgba(255,255,255,.78);
}
.footer-closer{
  max-width:720px;margin:120px auto 0;
  text-align:center;
}
.footer-closer em{
  font-family:var(--fd);font-style:italic;font-weight:400;
  font-size:clamp(1rem, 1.4vw, 1.2rem);
  line-height:1.55;
  color:rgba(255,255,255,.85);
}
.footer-rule{
  max-width:1280px;margin:48px auto 0;
  border:0;border-top:1px solid rgba(201,168,76,.32);
  height:0;
}
.site-footer__bottom{
  max-width:1280px;margin:24px auto 0;
  display:flex;align-items:center;justify-content:space-between;
  gap:24px;flex-wrap:wrap;
}
.footer-copyright{
  margin:0;font-size:12px;letter-spacing:.04em;
  color:rgba(255,255,255,.5);
}
.footer-nav{
  display:flex;gap:24px;flex-wrap:wrap;
}
.footer-nav a{
  font-size:12px;letter-spacing:.04em;
  color:rgba(255,255,255,.65);text-decoration:none;
  border-bottom:1px solid transparent;padding-bottom:2px;
  transition:color 200ms ease, border-color 200ms ease;
}
.footer-nav a:hover{color:#fff;border-bottom-color:var(--gold)}

/* MOBILE */
@media(max-width:768px){
  /* Nav is 64px tall on mobile — keep scroll-padding-top in lockstep so
     hash-anchor clicks land below the fixed header, not under it. */
  html{scroll-padding-top:64px}
  nav{padding:0 24px;height:64px}
  .nl .wm-primary{font-size:1.2rem;letter-spacing:-.015em}
  .nl .wm-secondary{font-size:.55rem;letter-spacing:.24em}
  .nlinks{display:none}
  .hbg{display:flex}
  /* Mobile drawer — cream/white surface to match the new header */
  .nlinks.open{
    display:flex;flex-direction:column;
    position:fixed;top:64px;left:0;right:0;
    background:var(--w);padding:1.5rem 24px 2rem;gap:1.25rem;
    border-top:1px solid rgba(26,58,31,.08);
  }
  .nlinks.open a{color:var(--gd);font-size:1.05rem}
  /* When the drawer is open over a transparent-hero nav, force solid */
  body.has-hero-bg nav .nlinks.open{background:var(--w)}
  body.has-hero-bg nav .nlinks.open a{color:var(--gd)}

  /* Hero — preserve full-bleed image, tighten composition for portrait */
  .hero{min-height:88vh}
  /* Portrait viewport + portrait image = minimal cropping; center keeps
     the full sky→home→lawn arc in view. */
  .hero-media img{object-position:center 50%}
  .hero-content{padding:0 24px 72px}
  .hero-eyebrow{font-size:10px;letter-spacing:.18em;margin-bottom:18px}
  .hero-eyebrow::before{width:24px}
  .hero-title{
    font-size:clamp(2.1rem, 8.5vw, 3rem);
    line-height:1.06;
    max-width:none;
    margin-bottom:20px;
  }
  .hero-sub{
    font-size:15px;line-height:1.55;
    max-width:none;margin-bottom:32px;
  }
  .hero-cta{padding:17px 26px;font-size:12px;letter-spacing:.14em;min-height:48px}

  /* PAGE HERO — tighter padding, larger H1 ratio for portrait screens */
  .page-hero{padding:104px 24px 64px}
  .page-hero__title{
    font-size:clamp(2.2rem, 8.5vw, 3.1rem);
    max-width:none;
    margin-bottom:24px;
  }
  .page-hero__lede{font-size:16px;max-width:none}

  /* SERVICE CHAPTER LIST — mobile */
  .service-chapter__list{font-size:12px;margin:-8px 0 24px;max-width:none;line-height:1.7}

  /* ABOUT STANDARDS — single column on mobile */
  .about-standards{padding:96px 24px}
  .about-standards__title{margin-bottom:48px}
  .about-standards__grid{
    grid-template-columns:1fr;
    column-gap:0;row-gap:36px;
  }
  .about-standard{gap:14px}
  .about-standard__copy{max-width:none}

  /* QUOTE SECTION — mobile */
  .quote-section{padding:64px 24px 96px}
  .quote-form__next{font-size:13px;line-height:1.55}

  /* TRUST STRIP — stack 2x2, then 1-col on very narrow screens */
  .trust-strip{padding:28px 24px}
  .trust-strip__inner{
    grid-template-columns:repeat(2, 1fr);
    column-gap:24px;row-gap:18px;
  }
  .trust-strip__copy{font-size:10.5px;letter-spacing:.18em}
  .trust-strip__mark{width:18px}

  /* Legacy /quote page form layout */
  .cgrid{grid-template-columns:1fr;gap:2rem}
  .frow{grid-template-columns:1fr}
  section{padding:3.5rem 1.25rem}

  /* ABOUT — rebuilt mobile composition (Phase 3) */
  .about{padding:96px 24px 104px}
  .about-grid{
    grid-template-columns:1fr;
    column-gap:0;row-gap:32px;
  }
  .about-media{order:-1;margin:0 -24px} /* photo first, edge-to-edge */
  .about-media img{aspect-ratio:4 / 5}
  .about-body{padding:0}
  .about-prose{font-size:16px;line-height:1.7;margin-bottom:22px;max-width:none}
  .about-quote{margin:28px 0;padding-left:18px;max-width:none}
  .about-quote p{font-size:1.2rem}
  .about-meta{margin-top:32px;letter-spacing:.18em}
  .about-meta::before{width:24px}

  /* REVIEWS — rebuilt mobile composition (Phase 3) */
  .reviews{padding:96px 24px 104px}
  .reviews-intro{margin-bottom:72px}
  .reviews-rating{margin-top:22px;gap:14px}
  .reviews-rating__marks{gap:7px}
  .reviews-rating__marks span{width:7px;height:7px}
  .reviews-rating__source{font-size:10px;letter-spacing:.18em}
  .reviews-list{gap:88px}
  .review-rule{margin-bottom:24px;width:36px}
  .review-quote p{font-size:1.35rem;line-height:1.42;max-width:none}
  .review-attribution{font-size:10px;letter-spacing:.16em}
  .reviews-cta{margin-top:72px}
  .reviews-cta__link{font-size:12px;letter-spacing:.14em}

  /* CONSULTATION — rebuilt mobile composition (Phase 3) */
  .consultation{padding:96px 24px 112px}
  .consultation-title{font-size:clamp(1.8rem, 7vw, 2.4rem);max-width:none}
  .consultation-lede{font-size:16px;margin-bottom:44px;max-width:none}
  .consultation-cta{padding:16px 26px;font-size:12px;letter-spacing:.14em}

  /* Consultation form — single-column stack, full-width submit */
  .consult-form{margin-top:48px;max-width:none}
  .consult-form__fields{gap:24px}
  .consult-form__row{
    grid-template-columns:1fr;
    column-gap:0;row-gap:24px;
  }
  .consult-field__label{font-size:10.5px;letter-spacing:.2em}
  .consult-field__input{font-size:16px;padding:11px 0}
  .consult-field__textarea{min-height:96px}
  .consult-form__submit{
    width:100%;justify-content:center;
    padding:17px 24px;font-size:12px;letter-spacing:.14em;
  }
  .consult-form__success{padding:32px 0 8px}
  .consult-form__success-eyebrow{margin-bottom:14px}
  .consult-form__success-eyebrow::before{width:24px}
  .consult-form__success-line{font-size:1.1rem;line-height:1.5;max-width:none}

  /* Trust line — wraps cleanly on small screens */
  .consultation-trust{
    margin-top:44px;
    font-size:10.5px;letter-spacing:.18em;
    display:flex;align-items:flex-start;
    text-align:left;line-height:1.6;
  }
  .consultation-trust::before{width:24px;margin-top:9px}

  .consultation-direct{margin-top:48px}
  .consultation-direct__lines{font-size:14px;gap:8px}
  .consultation-direct__sep{display:none}
  .consultation-direct__lines a{display:block}

  /* FOOTER — rebuilt mobile composition (Phase 3) */
  .site-footer{padding:88px 24px 40px}
  .site-footer__grid{
    grid-template-columns:1fr;
    column-gap:0;row-gap:48px;
  }
  .footer-tagline{font-size:15px;margin-top:24px}
  .footer-trust{margin-top:22px}
  .footer-closer{margin-top:80px;padding:0 8px}
  .footer-rule{margin-top:40px}
  .site-footer__bottom{flex-direction:column;align-items:flex-start;gap:16px;margin-top:24px}
  .footer-nav{gap:18px}

  /* SERVICES — rebuilt mobile composition. Not a desktop-stack: photo
     edge-to-edge, body sits in 24px padding below. Alternation cancels. */
  .services{padding:96px 24px 104px}
  .services-intro{margin-bottom:64px}
  .service-chapter,
  .service-chapter--reverse{
    grid-template-columns:1fr;
    column-gap:0;row-gap:24px;
    margin-bottom:96px;
  }
  .service-chapter--reverse .service-chapter__media{order:initial}
  .service-chapter--reverse .service-chapter__body{order:initial}
  .service-chapter__media{margin:0 -24px} /* edge-to-edge */
  .service-chapter__media img{aspect-ratio:4 / 5}
  .service-chapter__body{padding:0}
  .service-chapter__number{margin-bottom:14px;font-size:1rem}
  .service-chapter__title{font-size:1.9rem;margin-bottom:18px}
  .service-chapter__copy{font-size:16px;margin-bottom:24px;max-width:none}
  .service-chapter__link{font-size:12px}

  /* GALLERY — single-column mobile. Tiles stay perfect squares;
     captions tighten slightly. */
  .gallery{padding:96px 24px 104px}
  .gallery-intro{margin-bottom:56px}
  .gallery-grid{
    grid-template-columns:1fr;
    row-gap:32px;
  }
  .gallery-figure figcaption{font-size:13px;margin-top:12px}
}

/* Very small phones — ensure type doesn't crowd and CTA stays comfortable */
@media(max-width:380px){
  .hero{min-height:92vh}
  .hero-content{padding:0 20px 64px}
  .hero-title{font-size:2rem}
}
