:root{
  --green:#1F3A1E;          /* deep forest, used for headings & dark sections */
  --green-2:#162B16;        /* darker still, footer */
  --green-ink:#E7EFE3;      /* on-dark text */
  --bg:#E8ECDF;             /* soft sage page bg */
  --bg-2:#EFF1E5;
  --bg-light:#F4F5EC;
  --line:rgba(31,58,30,0.14);
  --line-soft:rgba(31,58,30,0.08);
  --line-dark:rgba(231,239,227,0.14);
  --text:#1F3A1E;
  --text-2:rgba(31,58,30,0.66);
  --text-3:rgba(31,58,30,0.5);
  --accent:#E2F36B;         /* lime-yellow CTA */
  --accent-ink:#1F3A1E;
  --accent-panel:#EFFF9D;   /* pale panel CTA (explainer) */
  --explainer-bg:#F9F9F7;
  --explainer-muted:#707070;
  --pill-bg:#D5DDC3;
  --sans:'DM Sans', ui-sans-serif, system-ui, -apple-system, sans-serif;
  --rad:14px;
  --rad-lg:22px;
  /* Full-bleed sections: prefer svw where supported to reduce classic 100vw + scrollbar horizontal overflow. */
  --viewport-inline:100vw;
  --body-text:18px;
  /* Full-bleed hero intro copy (all site heroes) */
  --hero-lede-text:22px;
}
@supports (width:100svw){
  :root{
    --viewport-inline:100svw;
  }
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased}
html{overflow-x:clip}
body{overflow-x:hidden;font-size:var(--body-text)}
main{position:relative;z-index:0;min-width:0;overflow-x:clip}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
::selection{background:var(--accent);color:var(--accent-ink)}

.wrap{max-width:1240px;margin:0 auto;padding:0 32px}
.num{font-family:var(--sans);font-size:13px;color:var(--text-2);font-weight:400;white-space:nowrap}
.num b{font-weight:400;display:block}
.label-sm{font-size:13px;color:var(--text-2);font-weight:400}
h2,
.h-section{
  font-family:var(--sans);
  font-weight:600;
  letter-spacing:-0.025em;
  color:var(--green);
  font-size:clamp(34px, 4.4vw, 40px);
  line-height:1.05;
  margin:0;
}
.h-display{font-family:var(--sans);font-weight:700;letter-spacing:-0.03em;line-height:1.0;color:#fff;font-size:clamp(44px, 6.6vw, 96px);margin:0}
.body-md{font-size:var(--body-text);line-height:1.6;color:var(--text-2);max-width:46ch}
.body-md.dark{color:rgba(231,239,227,0.78)}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:10px;padding:13px 22px;border-radius:999px;font-weight:500;font-size:14px;border:1px solid transparent;cursor:pointer;transition:transform .25s ease, background .25s ease;white-space:nowrap}
.btn:hover{transform:translateY(-1px)}
.btn-pri{background:var(--accent);color:var(--accent-ink)}
.btn-soft{background:var(--pill-bg);color:var(--green)}
.btn-ghost{background:transparent;color:var(--green);border-color:var(--line)}
.btn .arr{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;color:inherit}

/* tag pills */
.pill{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;font-size:13px;color:#fff;background:rgba(255,255,255,0.12);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,0.18)}
.pill.dot::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);display:inline-block}

/* Hero pills hover state (future: these become clickable product links) */
.hero-pills .pill{transition:background .25s ease, color .25s ease, border-color .25s ease}
.hero-pills a.pill{text-decoration:none;color:inherit}
.hero-pills a.pill:focus-visible{outline:2px solid rgba(255,255,255,0.95);outline-offset:3px;border-radius:999px}
.hero-pills .pill:hover{background:var(--accent);color:var(--accent-ink);border-color:rgba(226,243,107,0.95)}

/* nav — transparent over hero (no blur/frost) */
.nav{
  position:absolute;
  top:0;
  left:0;
  right:0;
  z-index:100;
  padding:18px 0 20px;
  background:transparent;
  border-bottom:0;
  /* Services flyout: fixed panel top offset (match bar height if nav wraps). */
  --svc-mnu-top:5.625rem;
  transition:background .22s ease, backdrop-filter .22s ease, border-color .22s ease;
}
/* When Services mega is open, match the flyout panel so the bar reads as one surface (desktop). */
@media (min-width: 1101px){
  .nav:has(.svc-mnu--open){
    background:rgba(14,28,20,0.97);
    backdrop-filter:blur(18px);
    -webkit-backdrop-filter:blur(18px);
  }
}
@media (max-width: 1100px){
  .nav:has(.svc-mnu--open){
    background:rgba(0,0,0,0.12);
  }
}
/* Horizontal inset comes from `.wrap` (same as main content). */
.nav-inner{position:relative;display:flex;align-items:center;justify-content:space-between;gap:20px}
.nav-toggle{
  display:none;
  width:44px;
  height:44px;
  flex-shrink:0;
  margin-left:auto;
  border-radius:12px;
  border:1px solid rgba(255,255,255,0.2);
  background:rgba(255,255,255,0.06);
  cursor:pointer;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:5px;
  padding:0;
  transition:background .2s ease, border-color .2s ease;
}
.nav-toggle:hover{background:rgba(255,255,255,0.1);border-color:rgba(255,255,255,0.28)}
.nav-toggle__bar{
  width:18px;
  height:2px;
  border-radius:2px;
  background:#fff;
  transition:transform .28s cubic-bezier(.2,.8,.2,1), opacity .2s ease;
}
.nav.is-open .nav-toggle__bar:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav.is-open .nav-toggle__bar:nth-child(2){opacity:0}
.nav.is-open .nav-toggle__bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.nav-links{
  display:flex;
  gap:clamp(16px, 2vw, 32px);
  align-items:center;
  background:transparent;
  border:0;
  padding:0;
  border-radius:0;
}
.visually-hidden{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}
.nav-links > a,
.svc-mnu__trigger{
  padding:8px 2px;
  border-radius:6px;
  font-size:14px;
  color:rgba(255,255,255,0.76);
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-weight:600;
  letter-spacing:0.07em;
  text-transform:uppercase;
  transition:color .18s ease;
}
.svc-mnu__trigger{
  margin:0;
  border:0;
  background:transparent;
  font-family:var(--sans);
  cursor:pointer;
  text-align:left;
  -webkit-appearance:none;
  appearance:none;
}
.nav-links > a:hover,
.svc-mnu__trigger:hover{
  color:rgba(255,255,255,0.95);
  background:transparent;
}
/* Current page: yellow label only — no filled background */
.nav-links > a.active,
.svc-mnu__trigger.active{
  color:var(--accent);
  background:transparent;
}
.nav-links > a.active:hover,
.svc-mnu__trigger.active:hover{
  color:var(--accent);
  background:transparent;
}
/* Same default as other primary links; yellow only when .active (current page). */
.nav-links > .nav-link--emphasis{
  color:rgba(255,255,255,0.76);
}
.nav-links > .nav-link--emphasis:hover{
  color:rgba(255,255,255,0.95);
  background:transparent;
}
.nav-links > .nav-link--emphasis.active{
  color:var(--accent);
  background:transparent;
}
.nav-links > .nav-link--emphasis.active:hover{
  color:var(--accent);
  background:transparent;
}
.svc-mnu__trigger.active .svc-mnu__chev{
  color:var(--accent);
}
.svc-mnu__chev-wrap{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin-left:4px;
  vertical-align:middle;
  flex-shrink:0;
}
.svc-mnu__chev{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:0;
  color:rgba(255,255,255,0.95);
}
.svc-mnu__chev svg{display:block;transition:transform .24s cubic-bezier(.2,.8,.2,1)}
.svc-mnu--open .svc-mnu__chev svg{transform:rotate(180deg)}
.nav-cta{
  padding:12px 20px !important;
  font-weight:700 !important;
  font-size:12px !important;
  letter-spacing:0.08em !important;
  text-transform:uppercase !important;
  box-shadow:0 6px 24px rgba(0,0,0,0.18);
}
.nav-cta:hover{box-shadow:0 8px 28px rgba(0,0,0,0.22)}
@media (min-width: 1101px){
  .nav-inner{
    display:grid;
    grid-template-columns:minmax(0,auto) minmax(0,1fr) minmax(0,auto);
    align-items:center;
    gap:20px 28px;
  }
  .logo{
    justify-self:start;
    margin-right:0;
  }
  .nav-links{
    justify-self:center;
    width:fit-content;
    max-width:100%;
  }
  .nav-inner > .nav-cta{
    justify-self:end;
  }
}
.svc-mnu{
  position:relative;
  display:inline-flex;
  flex-direction:column;
  align-items:stretch;
  min-width:0;
}
.svc-mnu__panel:has(.svc-mnu__mega) .svc-mnu__compact{display:none !important;}
@media (min-width: 1101px){
  .svc-mnu__panel{
    position:fixed;
    inset-inline:0;
    top:var(--svc-mnu-top);
    width:100%;
    max-width:100%;
    margin:0;
    z-index:90;
    box-sizing:border-box;
    padding:0;
    border-radius:0 0 18px 18px;
    background:rgba(14,28,20,0.97);
    backdrop-filter:blur(18px);
    -webkit-backdrop-filter:blur(18px);
    border:1px solid rgba(255,255,255,0.12);
    border-top:1px solid rgba(255,255,255,0.08);
    box-shadow:0 28px 60px rgba(0,0,0,0.35);
    max-height:calc(100dvh - var(--svc-mnu-top) - 16px);
    max-height:calc(100vh - var(--svc-mnu-top) - 16px);
    overflow-y:auto;
    overflow-x:clip;
    overscroll-behavior:contain;
  }
}
.svc-mnu__mega{display:block;padding:18px 0 22px}
@media (max-width: 1100px){
  .svc-mnu__panel{
    position:static;
    width:100%;
    margin:4px 0 8px;
    border-radius:12px;
    background:rgba(0,0,0,0.12);
    border:0;
    box-shadow:none;
    max-height:min(70vh,520px);
    overflow-y:auto;
    overflow-x:clip;
    overscroll-behavior:contain;
  }
  .svc-mnu__search{max-width:none;flex:1 1 100%}
  .svc-mnu__mega{padding:10px 0 12px}
}
.svc-mnu__inner{
  width:100%;
  min-width:0;
  max-width:100%;
}
.svc-mnu__toolbar{
  display:flex;
  flex-wrap:wrap;
  gap:12px 16px;
  justify-content:space-between;
  align-items:center;
  padding-bottom:14px;
  margin-bottom:14px;
  border-bottom:1px solid rgba(255,255,255,0.1);
}
.svc-mnu__toolbar-links{
  display:flex;
  flex-wrap:wrap;
  gap:10px 12px;
  align-items:center;
}
.svc-mnu__search{
  flex:1 1 200px;
  min-width:0;
  max-width:360px;
}
.svc-mnu__filter{
  width:100%;
  box-sizing:border-box;
  padding:10px 14px;
  border-radius:10px;
  border:1px solid rgba(255,255,255,0.16);
  background:rgba(255,255,255,0.06);
  color:#fff;
  font-size:14px;
  font-family:inherit;
  outline:none;
}
.svc-mnu__filter::placeholder{color:rgba(231,239,227,0.45)}
.svc-mnu__filter:focus{
  border-color:rgba(226,243,107,0.45);
  box-shadow:0 0 0 2px rgba(226,243,107,0.12);
}
.svc-mnu__pill{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-size:14px;
  font-weight:700;
  color:#fff;
  text-decoration:none;
  padding:8px 16px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.18);
  background:rgba(255,255,255,0.06);
  transition:background .18s ease,border-color .18s ease,color .18s ease;
}
.svc-mnu__pill:hover{background:rgba(255,255,255,0.1);border-color:rgba(255,255,255,0.28)}
.svc-mnu__pill--accent{border-color:rgba(226,243,107,0.45);color:var(--accent)}
.svc-mnu__hint{
  margin:0 0 10px;
  font-size:13px;
  color:rgba(231,239,227,0.62);
}
.svc-mnu__hubs-label,
.svc-mnu__tiles-label{
  margin:0 0 8px;
  font-size:11px;
  font-weight:800;
  letter-spacing:0.11em;
  text-transform:uppercase;
  color:rgba(231,239,227,0.52);
}
.svc-mnu__tiles-label{margin-top:6px;margin-bottom:6px}
.svc-mnu__hubs + .svc-mnu__tiles-label{margin-top:clamp(14px,2.2vw,24px)}
.svc-mnu__tiles-count{
  font-weight:600;
  font-size:0.88em;
  letter-spacing:0.06em;
  color:rgba(231,239,227,0.42);
  margin-left:8px;
  text-transform:none;
  font-variant-numeric:tabular-nums;
}
.svc-mnu__hubs{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));
  gap:12px 14px;
  margin-bottom:16px;
  padding-bottom:16px;
  border-bottom:1px solid rgba(255,255,255,0.1);
}
.svc-mnu__hubcard{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:0;
  min-width:0;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,0.12);
  background:rgba(255,255,255,0.04);
  text-decoration:none;
  color:#fff;
  transition:background .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.svc-mnu__hubcard:hover{
  background:rgba(255,255,255,0.08);
  border-color:rgba(255,255,255,0.22);
  box-shadow:0 10px 28px rgba(0,0,0,0.18);
}
.svc-mnu__hubcard-title{
  font-size:14px;
  font-weight:700;
  line-height:1.35;
  overflow-wrap:break-word;
}
.svc-mnu__hubcard-sum{
  display:block;
  margin-top:6px;
  font-size:12px;
  font-weight:500;
  line-height:1.45;
  color:rgba(231,239,227,0.74);
  overflow-wrap:break-word;
}
.svc-mnu__tiles{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));
  gap:10px 12px;
  align-items:stretch;
  min-width:0;
  width:100%;
}
.svc-mnu__tile{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:6px;
  min-width:0;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,0.12);
  background:rgba(255,255,255,0.04);
  text-decoration:none;
  color:#fff;
  transition:background .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.svc-mnu__tile:hover{
  background:rgba(255,255,255,0.08);
  border-color:rgba(255,255,255,0.22);
  box-shadow:0 8px 24px rgba(0,0,0,0.16);
}
.svc-mnu__tile-cat{
  font-size:10px;
  font-weight:800;
  letter-spacing:0.09em;
  text-transform:uppercase;
  color:rgba(231,239,227,0.55);
  line-height:1.25;
  overflow-wrap:break-word;
  max-width:100%;
}
.svc-mnu__tile-title{
  font-size:13px;
  font-weight:600;
  line-height:1.4;
  color:rgba(255,255,255,0.92);
  overflow-wrap:break-word;
  max-width:100%;
}
.svc-mnu__link{
  display:block;
  padding:10px 14px;
  border-radius:10px;
  font-size:18px;
  font-weight:500;
  color:rgba(255,255,255,0.9);
  transition:color .16s ease;
}
.svc-mnu__link:hover{background:transparent;color:#fff}
.svc-mnu__link:first-child{font-weight:600;color:#fff}
.svc-mnu__link--accent{color:var(--accent)}
.logo{display:inline-flex;align-items:center;gap:10px;color:rgba(255,255,255,0.94);font-family:var(--sans);font-weight:700;font-size:22px;letter-spacing:-0.03em;line-height:1}
.logo svg{width:32px;height:32px}
.logo span{display:inline-flex;align-items:baseline}
.logo span::after{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:#E2F36B;margin-left:3px;margin-bottom:2px}
/* footer logo gets a subtle uppercase tracking treatment via parent .ft-bottom */
.ft-bottom .logo{font-size:24px}

/* Hero */
.hero{position:relative;z-index:0;min-height:760px;color:#fff;overflow:hidden}
.hero-bg{position:absolute;inset:0;background:var(--green-2)}
.hero-bg img{
  position:relative;
  z-index:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 30%;
}
/* Green scrim — same recipe as `.page-services-hero__bg::after` */
.hero-bg::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(
    180deg,
    color-mix(in srgb, var(--green-2) 58%, transparent) 0%,
    color-mix(in srgb, var(--green-2) 42%, transparent) 38%,
    color-mix(in srgb, var(--green-2) 78%, transparent) 100%
  );
}
/* Horizontal inset from `.wrap` — use padding-top/bottom only so we never override .wrap’s inline padding. */
.hero-inner{
  position:relative;
  z-index:2;
  padding-top:140px;
  padding-bottom:64px;
  display:grid;
  grid-template-columns:1.4fr 1fr;
  gap:48px;
  align-items:start;
}
.hero-tag{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:rgba(15,30,18,0.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,0.16);border-radius:999px;font-size:13px;color:#fff;margin-bottom:28px}
.hero-tag::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent)}
.hero h1{margin-top:24px}
/* Primary H1 line: slightly below full `.h-display` scale so long SEO copy stays readable without dominating the hero. */
.hero .h-display .hero-h1-primary{display:block;font-size:clamp(36px,5.1vw,76px);line-height:1.06;letter-spacing:-0.03em}
.hero p{color:rgba(255,255,255,0.85);font-size:var(--hero-lede-text);line-height:1.55;max-width:48ch;margin:24px 0 36px}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap}
.hero-pills{display:flex;gap:10px;flex-wrap:wrap;margin-top:36px;justify-content:flex-end}
.hero-card{justify-self:end;width:280px;background:rgba(20,32,22,0.55);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,0.16);border-radius:18px;padding:14px;color:#fff}
.hero-card .thumb{position:relative;border-radius:12px;overflow:hidden;aspect-ratio:16/11;background:#0a1410}
.hero-card .thumb img{width:100%;height:100%;object-fit:cover}
.hero-card .play{position:absolute;inset:0;display:grid;place-items:center}
.hero-card .play span{width:46px;height:46px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;box-shadow:0 6px 24px rgba(0,0,0,.25)}
.hero-card .quote{font-style:italic;font-size:13px;line-height:1.5;color:rgba(255,255,255,.82);margin-top:12px;padding:0 4px}

/* Generic section */
section{padding:96px 0;position:relative}
.section-head{display:grid;grid-template-columns:0.4fr 1fr 1fr;gap:32px;align-items:start;margin-bottom:56px}
.section-head .index{font-size:13px;color:var(--text-2);line-height:1.5}
.section-head .index b{display:block;font-weight:400;margin-bottom:2px}
.section-head .right{display:flex;flex-direction:column;align-items:flex-end;gap:16px;text-align:right}
.section-head .right p{margin:0;color:var(--text-2);font-size:var(--body-text);max-width:34ch;line-height:1.55}
.section-head.dark .index, .section-head.dark .right p{color:rgba(231,239,227,0.6)}
.section-head.dark h2{color:#fff}

/* About section */
.about{background:var(--bg)}
.about-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:48px;align-items:start}
.about-img{aspect-ratio:4/5;border-radius:var(--rad-lg);overflow:hidden;background:#cbd5b8;position:relative}
.about-img img{width:100%;height:100%;object-fit:cover}
.about-img::before{content:"";position:absolute;inset:0;border:1px solid rgba(0,0,0,.06);border-radius:inherit;pointer-events:none}
.about-right .h-section{margin-bottom:24px;max-width:18ch}
.about-meta{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto);gap:32px;align-items:start;padding-bottom:36px;border-bottom:1px solid var(--line)}
.about-copy{display:flex;flex-direction:column;gap:14px}
.about-copy p{margin:0;font-size:var(--body-text);line-height:1.6;color:var(--text-2);max-width:42ch}
.about-feats{background:#D7DFC4;border-radius:var(--rad);padding:18px 22px;display:flex;flex-direction:column;gap:14px;font-size:var(--body-text);color:var(--green);min-width:min(300px,100%)}
.about-feats div{display:flex;align-items:center;gap:10px}
.about-feats svg{flex:0 0 auto}
.about-cta{padding:24px 0 0}

/* Services */
.services{background:var(--bg-light)}
.services-intro{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(24px, 3.5vw, 40px);
  align-items:end;
  margin-bottom:clamp(28px, 3.5vw, 40px);
}
.services-intro__num{display:block;margin-bottom:14px}
.services-intro__title{max-width:14ch}
.services-intro__aside{
  display:flex;
  flex-direction:column;
  gap:16px;
  align-items:flex-end;
  text-align:right;
}
.services-intro__lede{
  margin:0;
  color:var(--text-2);
  font-size:var(--body-text);
  max-width:34ch;
  line-height:1.55;
}
.svc-row{display:grid;grid-template-columns:0.85fr 1fr 0.4fr;gap:48px;align-items:center;padding:36px 0;border-top:1px solid var(--line)}
.svc-row:last-child{border-bottom:1px solid var(--line)}
.svc-img{aspect-ratio:1.35/1;border-radius:var(--rad);overflow:hidden;background:#cbd5b8;max-width:280px}
.svc-img img{width:100%;height:100%;object-fit:cover}
.svc-row h3{font-family:var(--sans);font-weight:600;color:var(--green);font-size:clamp(28px, 2.6vw, 38px);letter-spacing:-0.02em;line-height:1.05;margin:0 0 14px}
.svc-row p{font-size:var(--body-text);color:var(--text-2);max-width:42ch;line-height:1.6;margin:0}
.svc-arrow{width:90px;height:90px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;justify-self:end;color:var(--green);transition:background .3s ease, color .3s ease, border-color .3s ease}
.svc-row:hover .svc-arrow{background:var(--green);color:#fff;border-color:var(--green)}

/* Homepage: link to full survey index on /services/ */
.services-all-types{margin:20px 0 0;text-align:center;font-size:var(--body-text);color:var(--text-2);line-height:1.5}
.services-all-types__link{font-weight:600;color:var(--green);text-decoration:none;border-bottom:1px solid rgba(31,58,30,0.22)}
.services-all-types__link:hover{border-bottom-color:var(--green)}
.services-all-types__hint{color:var(--text-2)}

/* /services/#all-surveys — filterable grid (data/survey_offerings.yaml) */
.survey-browser{padding:clamp(52px,5vw,84px) 0;background:var(--bg-light)}
.survey-browser__head{margin-bottom:clamp(18px,2.5vw,28px)}
.survey-browser__title{margin:0 0 8px}
.survey-browser__lede{margin:0;max-width:62ch;line-height:1.55;color:var(--text-2);font-size:var(--body-text)}
.survey-browser__controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:16px 24px;margin-bottom:22px}
.survey-browser__filters{display:flex;flex-wrap:wrap;gap:8px}
.survey-browser__filter{
  cursor:pointer;
  font:inherit;
  font-size:14px;
  font-weight:600;
  padding:8px 14px;
  border-radius:999px;
  border:1px solid var(--line);
  background:#fff;
  color:var(--green);
  transition:background .18s ease,border-color .18s ease,color .18s ease;
}
.survey-browser__filter:hover{background:rgba(31,58,30,0.06)}
.survey-browser__filter.is-active{background:var(--green);color:#fff;border-color:var(--green)}
.survey-browser__filter.is-active:hover{background:var(--green);color:#fff}
.survey-browser__search-wrap{flex:1;min-width:min(300px,100%);position:relative}
.survey-browser__search-label{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}
.survey-browser__search{
  width:100%;
  box-sizing:border-box;
  padding:11px 14px;
  border-radius:12px;
  border:1px solid var(--line);
  font:inherit;
  font-size:16px;
  color:var(--text);
  background:#fff;
}
.survey-browser__search:focus{outline:2px solid var(--green);outline-offset:2px}
.survey-browser__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:14px}
.survey-browser__card{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:8px;
  min-height:100%;
  padding:18px 40px 16px 18px;
  border-radius:14px;
  border:1px solid var(--line);
  background:#fff;
  text-decoration:none;
  color:inherit;
  box-shadow:0 1px 0 rgba(0,0,0,0.04);
  transition:border-color .18s ease,box-shadow .2s ease,transform .2s ease;
}
.survey-browser__card:hover{
  border-color:rgba(31,58,30,0.32);
  box-shadow:0 12px 32px rgba(0,0,0,0.07);
  transform:translateY(-2px);
}
.survey-browser__badge{
  align-self:flex-start;
  font-size:11px;
  font-weight:700;
  letter-spacing:0.04em;
  text-transform:uppercase;
  padding:4px 8px;
  border-radius:6px;
  background:rgba(31,58,30,0.08);
  color:var(--green);
}
.survey-browser__card-title{
  margin:0;
  font-size:17px;
  font-weight:700;
  letter-spacing:-0.02em;
  line-height:1.28;
  color:var(--green);
}
.survey-browser__card-text{margin:0;font-size:15px;line-height:1.52;color:var(--text-2);flex:1}
.survey-browser__go{position:absolute;top:18px;right:14px;color:var(--green);opacity:0.5}
.survey-browser__card:hover .survey-browser__go{opacity:1}
.survey-browser__empty{margin:20px 0 0;text-align:center;color:var(--text-2);font-size:var(--body-text)}
@media (max-width: 640px){
  .survey-browser__controls{flex-direction:column;align-items:stretch}
  .survey-browser__filters{justify-content:flex-start}
}

/* Video gallery */
.vid{padding:0;background:var(--bg)}
.vid-inner{position:relative;height:540px;overflow:hidden}
.vid-inner img{width:100%;height:100%;object-fit:cover}
.vid-inner::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg, rgba(14,26,18,.35), rgba(14,26,18,.55))}
.vid-overlay{position:absolute;inset:0;z-index:2;color:#fff;padding:64px;display:flex;flex-direction:column;justify-content:space-between}
.vid-top{display:flex;justify-content:space-between;align-items:flex-start;gap:32px}
.vid-top__title{font-family:var(--sans);font-weight:600;font-size:34px;line-height:1.1;letter-spacing:-0.02em;margin:0;max-width:14ch}
.vid-top .num{color:rgba(255,255,255,.7)}
.vid-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:32px}
.vid-bottom .pill{align-self:flex-start}
.vid-bottom p{margin:0;color:rgba(255,255,255,.85);font-size:var(--body-text);max-width:40ch;line-height:1.55}
.vid-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;z-index:3;box-shadow:0 10px 32px rgba(0,0,0,.3);cursor:pointer}

/* Projects */
.projects{background:var(--bg-light)}
/* Service pages: “Next steps” — green panel, vertical rail (rounded card on page bg) */
.page-service-next-steps{
  padding:clamp(32px,5vw,64px) clamp(16px,4vw,40px);
  background:var(--bg);
}
.page-service-next-steps .wrap{
  background:var(--green-2);
  color:#fff;
  border-radius:var(--rad-lg);
  box-shadow:0 20px 48px rgba(14,26,18,0.14);
  padding:clamp(40px,6vw,72px) clamp(20px,4vw,32px);
  overflow:hidden;
}
.page-service-next-steps__head{
  max-width:56ch;
  margin:0 auto clamp(36px,5vw,52px);
  text-align:center;
}
.page-service-next-steps h2,
.page-service-next-steps__heading{
  color:#fff;
  margin:0;
}
.page-service-next-steps__lede{
  margin:clamp(14px,2.2vw,18px) auto 0;
  max-width:48ch;
  font-size:var(--body-text);
  line-height:1.65;
  color:rgba(231,239,227,0.82);
}
.page-service-next-steps__list{
  list-style:none;
  margin:0 auto;
  padding:clamp(28px,5vw,48px) clamp(16px,4vw,44px);
  max-width:min(680px,100%);
  position:relative;
  /* 80px rail column; 72px circle centred → axis at 40px from step grid origin */
  --next-steps-rail-x:calc(clamp(16px,4vw,44px) + 40px);
}
/* Single continuous track behind circles (per-row stems can’t bridge row gaps) */
.page-service-next-steps__list::before{
  content:"";
  position:absolute;
  left:var(--next-steps-rail-x);
  /* Line from centre of first circle to centre of last (list pad + rail offset + half circle) */
  top:calc(clamp(28px,5vw,48px) + 36px);
  bottom:calc(clamp(28px,5vw,48px) + 36px);
  width:2px;
  margin-left:-1px;
  background:linear-gradient(180deg, rgba(231,239,227,0.55), rgba(231,239,227,0.18));
  border-radius:2px;
  pointer-events:none;
  z-index:0;
}
.page-service-next-steps__step{
  display:grid;
  grid-template-columns:80px minmax(0,1fr);
  gap:clamp(20px,3vw,28px) clamp(22px,3.5vw,32px);
  padding-bottom:clamp(28px,4vw,40px);
  align-items:start;
  position:relative;
  z-index:1;
}
.page-service-next-steps__step:last-child{padding-bottom:0}
.page-service-next-steps__rail{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  padding-top:4px;
  position:relative;
  z-index:1;
}
.page-service-next-steps__num{
  flex-shrink:0;
  width:72px;
  height:72px;
  border-radius:50%;
  background:#fff;
  color:var(--green-2);
  font-weight:700;
  font-size:clamp(22px,2.8vw,28px);
  display:grid;
  place-items:center;
  box-shadow:0 8px 24px rgba(0,0,0,0.24);
  position:relative;
  z-index:2;
}
.page-service-next-steps__badge{
  display:inline-block;
  margin-bottom:8px;
  padding:4px 12px;
  border-radius:999px;
  border:1px solid rgba(231,239,227,0.35);
  font-size:12px;
  font-weight:600;
  letter-spacing:0.06em;
  text-transform:uppercase;
  color:rgba(231,239,227,0.9);
}
.page-service-next-steps__step-title{
  margin:0 0 10px;
  font-family:var(--sans);
  font-size:clamp(18px,2.1vw,22px);
  font-weight:700;
  letter-spacing:-0.02em;
  line-height:1.25;
  color:#fff;
}
.page-service-next-steps__step-text{
  margin:0;
  font-size:var(--body-text);
  line-height:1.6;
  color:rgba(231,239,227,0.78);
  max-width:52ch;
}
.page-service-next-steps__cta{
  display:flex;
  justify-content:center;
  padding:clamp(28px,4vw,40px) clamp(20px,4vw,32px) clamp(36px,5vw,52px);
  border-top:1px solid rgba(231,239,227,0.14);
}
.projects .header-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:flex-start;margin-bottom:48px}
.projects .h-l{aspect-ratio:1.35/1;border-radius:var(--rad-lg);overflow:hidden;background:#cbd5b8;max-width:420px}
.projects .h-l img{width:100%;height:100%;object-fit:cover}
.projects .h-r{display:flex;flex-direction:column;align-items:flex-end;gap:18px;text-align:right;padding-top:24px}
.projects .h-r p{margin:0;font-size:var(--body-text);color:var(--text-2);max-width:34ch;line-height:1.55}
.projects .h-r-bot{margin-top:auto;text-align:left;align-self:flex-start;width:100%}
.projects .h-r-bot .num{margin-bottom:14px}
.projects .h-r-bot h2{margin:0}

/* Process grid (replaces projects until case studies exist) */
.process-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:0}
.process-card{padding:28px 22px;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:12px;min-height:280px;background:transparent}
.process-card:first-child{border-left:0}
.process-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.process-num{font-size:13px;color:var(--text-2);letter-spacing:.08em}
.process-card h4{font-family:var(--sans);font-weight:600;color:var(--green);font-size:20px;letter-spacing:-0.02em;line-height:1.15;margin:0}
.process-card p{margin:0;font-size:var(--body-text);color:var(--text-2);line-height:1.6;max-width:44ch}
.process-card .badge{border-color:var(--line);background:rgba(31,58,30,0.06);color:var(--green)}
.process-card--highlight{background:rgba(226,243,107,0.18)}
.process-card--highlight .badge{background:var(--accent);color:var(--accent-ink);border-color:rgba(226,243,107,0.9)}


/* Why us */
.why{background:var(--green-2);color:#fff}
.why .section-head .right p{color:rgba(231,239,227,0.65)}
.why .section-head .index, .why .section-head .index b{color:rgba(231,239,227,0.6)}
.why h2{color:#fff}

/* Why header: title + CTA */
.why-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px;align-items:flex-start;margin-bottom:48px}
.why-head__title{
  color:#fff;
  text-align:left;
  max-width:22ch;
  justify-self:start;
  min-width:0;
  word-break:normal;
  overflow-wrap:anywhere;
}
.why-head__cta{justify-self:end;white-space:nowrap;align-self:start}

.why-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:flex-start}
.why-img{aspect-ratio:1.05/1;border-radius:var(--rad-lg);overflow:hidden;background:#0a1410}
.why-img img{width:100%;height:100%;object-fit:cover}
.why-list{display:flex;flex-direction:column}
.why-row{display:grid;grid-template-columns:auto 1fr;gap:24px;align-items:center;padding:26px 0;border-top:1px solid var(--line-dark)}
.why-row:last-child{border-bottom:1px solid var(--line-dark)}
.why-ic{width:60px;height:60px;border-radius:14px;background:#1F3A1E;display:grid;place-items:center;color:var(--accent)}
.why-row h3{font-family:var(--sans);font-weight:600;color:#fff;font-size:20px;margin:0 0 6px;letter-spacing:-0.01em}
.why-row p{margin:0;color:rgba(231,239,227,0.65);font-size:var(--body-text);line-height:1.5;max-width:46ch}

/* Testimonials */
.testi{background:var(--bg)}
.testi .head-row{display:grid;grid-template-columns:1fr 1fr;gap:48px;margin-bottom:48px;align-items:flex-end}
.testi h2{margin:0}
.testi .head-row .right{text-align:left;display:flex;flex-direction:column;gap:18px;align-items:flex-end}
.testi .head-row .right p{margin:0;text-align:right;color:var(--text-2);max-width:30ch;line-height:1.55;font-size:var(--body-text)}
.testi-card{position:relative;border-radius:var(--rad-lg);overflow:hidden;height:520px;background:#1f2c1a}
.testi-bg{position:absolute;inset:0}
.testi-bg.has-img{background-size:cover;background-position:center}
.testi-bg.has-img::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg, rgba(0,0,0,.22) 0%, rgba(0,0,0,.62) 100%);
}
.testi-card img{width:100%;height:100%;object-fit:cover}
.testi-card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg, rgba(0,0,0,.08) 25%, rgba(0,0,0,.55) 100%);pointer-events:none}
.testi-quote{position:absolute;left:48px;bottom:48px;right:48px;z-index:2;color:#fff;display:grid;grid-template-columns:1fr auto;gap:32px;align-items:flex-end}
/* Absolute slides do not expand this box — keep min-height sufficient for quote + author beside .testi-nav */
.testi-slides{position:relative;min-height:clamp(300px,30vw,380px)}
.testi-slide{position:absolute;inset:0;opacity:0;transform:translateY(6px);transition:opacity .25s ease, transform .25s ease;pointer-events:none}
.testi-slide.is-active{opacity:1;transform:translateY(0);pointer-events:auto}
.testi-q-mark{font-family:var(--sans);font-size:44px;line-height:1;color:var(--accent);margin-bottom:18px;display:block}
.testi-quote blockquote{font-size:var(--body-text);line-height:1.5;color:#fff;margin:0;max-width:48ch;font-style:italic;font-weight:400}
.testi-author{display:flex;align-items:center;gap:14px;margin-top:24px}
.testi-author .av{width:46px;height:46px;border-radius:50%;background:#a0b59a;overflow:hidden}
.testi-author .av--initials{
  display:grid;
  place-items:center;
  background:rgba(226,243,107,0.18);
  border:1px solid rgba(231,239,227,0.22);
  color:#fff;
  font-weight:700;
  letter-spacing:0;
  font-size:12px;
  line-height:1;
  text-transform:uppercase;
}

.testi-bg.has-img::after{display:none}
.testi-author b{display:block;font-weight:500;font-size:var(--body-text)}
.testi-author span{display:block;font-size:var(--body-text);color:rgba(255,255,255,.7)}
.testi-nav{display:flex;gap:10px}
.testi-nav button{width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:transparent;color:#fff;cursor:pointer;display:grid;place-items:center}
.testi-nav button:hover{background:rgba(255,255,255,.1)}
.testi-dots{display:flex;align-items:center;gap:8px;margin:0 6px}
.testi-dot{width:10px;height:10px;border-radius:999px;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.18);cursor:pointer;padding:0}
.testi-dot.is-active{background:var(--accent);border-color:rgba(226,243,107,.9)}

/* FAQ (homepage “Why choose us” cards) */
.faq{background:var(--bg-light)}
.faq-head{max-width:860px;margin:0 auto 42px;text-align:center;display:flex;flex-direction:column;gap:14px;align-items:center}
.faq-lede{margin:0;color:var(--text-2);font-size:var(--body-text);line-height:1.65;max-width:70ch}
.faq-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px;align-items:stretch}
.faq-card{
  position:relative;
  background:#fff;
  border:1px solid rgba(31,58,30,0.10);
  border-radius:16px;
  padding:30px 22px 22px;
  box-shadow:0 14px 28px rgba(24,51,29,.06);
}
.faq-card__tick{
  position:absolute;
  top:-16px;
  left:50%;
  transform:translateX(-50%);
  width:34px;
  height:34px;
  border-radius:999px;
  background:#fff;
  border:2px solid rgba(31,58,30,0.12);
  display:grid;
  place-items:center;
  color:var(--green);
  box-shadow:0 10px 22px rgba(24,51,29,.08);
}
.faq-card h3{margin:0 0 10px;font-size:15px;letter-spacing:0.08em;text-transform:uppercase;color:rgba(31,58,30,.82)}
.faq-card p{margin:0;color:var(--text-2);font-size:var(--body-text);line-height:1.6}

/* Footer */
footer{background:var(--green-2);color:var(--green-ink);padding:72px 0 28px}
.ft-cta{display:grid;grid-template-columns:1.6fr 1fr;gap:48px;align-items:center;padding-bottom:64px;border-bottom:1px solid var(--line-dark)}
.ft-cta h2{color:#fff;margin:0 0 32px;max-width:14ch}
.ft-social{text-align:center}
.ft-social .lbl{font-size:13px;color:rgba(231,239,227,0.7);margin-bottom:14px}
.ft-social-icons{display:flex;gap:12px;justify-content:center}
.ft-social-icons a{width:48px;height:48px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center}
.ft-bottom{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:center;padding-top:36px}
.ft-logo{display:flex;align-items:center;gap:12px;color:#fff;font-weight:600;font-size:24px}
.ft-links{display:flex;gap:18px;align-items:center;color:rgba(231,239,227,0.85);font-size:14px}
.ft-links a:hover{color:#fff}
.ft-links span{color:rgba(231,239,227,0.4)}
.ft-copy{display:grid;grid-template-columns:1fr auto;gap:32px;padding-top:18px;font-size:13px;color:rgba(231,239,227,0.6)}
.ft-contact{display:flex;gap:24px;align-items:center}
.ft-contact span{display:inline-flex;align-items:center;gap:8px}

/* placeholder image — colored field with subtle pattern */
.ph{position:relative;width:100%;height:100%;background:linear-gradient(135deg, #b8c8a0 0%, #95a87d 100%)}
.ph::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 30% 30%, rgba(255,255,255,.25), transparent 40%), radial-gradient(circle at 70% 70%, rgba(20,40,20,.2), transparent 50%)}
.ph.dark{background:linear-gradient(135deg, #2a3e2a 0%, #16261a 100%)}
.ph.warm{background:linear-gradient(135deg, #c5a77a 0%, #8a6d49 100%)}
.ph.green{background:linear-gradient(135deg, #5a8a4a 0%, #2c4a25 100%)}
.ph.lime{background:linear-gradient(135deg, #95b56a 0%, #4d6a35 100%)}
.ph.bridge{background:linear-gradient(135deg, #a89a7a 0%, #5e5a3a 100%)}
.ph svg{position:absolute;inset:0;width:100%;height:100%;opacity:.7}

/* basic typography for content pages */
.prose{padding:72px 0 96px}
.prose__header{margin-bottom:18px}
.prose__header h1{font-family:var(--sans);font-weight:700;letter-spacing:-0.03em;line-height:1.05;margin:0;color:var(--green);font-size:clamp(32px,4vw,52px)}
.prose__body{font-size:var(--body-text);line-height:1.65;color:var(--text);overflow-x:auto;-webkit-overflow-scrolling:touch}
.prose__body p{max-width:70ch}
.prose__body h2{
  font-family:var(--sans);
  font-weight:600;
  font-size:clamp(22px, 2.2vw, 30px);
  color:var(--green);
  letter-spacing:-0.02em;
  margin:40px 0 14px;
  line-height:1.15;
}
.prose__body h2:first-child{margin-top:0}
.prose__body h3{
  font-family:var(--sans);
  font-weight:600;
  font-size:clamp(20px,1.2vw,22px);
  color:var(--green);
  margin:28px 0 10px;
  letter-spacing:-0.015em;
}
.prose__body a{text-decoration:underline;text-underline-offset:3px}
.prose__body code{background:rgba(31,58,30,0.06);border:1px solid rgba(31,58,30,0.12);padding:.15rem .35rem;border-radius:10px}
.prose__body .muted{color:var(--text-2);font-size:var(--body-text)}
.prose__body table{
  width:100%;
  max-width:100%;
  border-collapse:collapse;
  font-size:var(--body-text);
  line-height:1.5;
  margin:18px 0 28px;
  background:#fff;
  border:1px solid rgba(31,58,30,0.12);
  border-radius:var(--rad-lg);
  overflow:hidden;
  box-shadow:0 8px 28px rgba(20,40,24,0.06);
}
.prose__body thead th{
  background:rgba(31,58,30,0.07);
  color:var(--green);
  font-weight:600;
  text-align:left;
  padding:12px 14px;
  border-bottom:1px solid rgba(31,58,30,0.12);
}
.prose__body tbody td{
  padding:12px 14px;
  border-bottom:1px solid rgba(31,58,30,0.08);
  vertical-align:top;
}
.prose__body tbody tr:last-child td{border-bottom:0}
.prose__body tbody tr:nth-child(even) td{background:rgba(248,250,246,0.85)}
.prose__body strong{color:inherit;font-weight:inherit}

/* Band hero (`page-services` variant) — styles live on the `<section>`, not on a parent shell */
.page-services-hero{
  position:relative;
  padding:0;
  min-height:clamp(380px, 56vh, 560px);
  color:#fff;
  overflow:hidden;
}
.page-services-hero__bg{
  position:absolute;
  inset:0;
  z-index:0;
  background:var(--green-2);
}
.page-services-hero__bg img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 40%;
  display:block;
}
.page-services-hero__bg::after{
  content:"";
  position:absolute;
  inset:0;
  /* Same hue as footer `--green-2`; scrim over placeholder / photo. */
  background:linear-gradient(
    180deg,
    color-mix(in srgb, var(--green-2) 58%, transparent) 0%,
    color-mix(in srgb, var(--green-2) 42%, transparent) 38%,
    color-mix(in srgb, var(--green-2) 78%, transparent) 100%
  );
}
.page-services-hero__inner{
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  justify-content:flex-end;
  min-height:clamp(380px, 56vh, 560px);
  padding-top:clamp(120px, 16vh, 240px);
  /* Keep bottom inset tight so copy sits low. */
  padding-bottom:clamp(18px, 3.2vh, 44px);
}
.page-services-hero__tag{
  align-self:flex-start;
  background:rgba(8,14,10,0.78);
  border-color:rgba(255,255,255,0.26);
  box-shadow:0 2px 12px rgba(0,0,0,.35);
}
/* Hero H1s share one scale (top-level service hero); overrides `.h-display` on the same element */
.page-services-hero__title,
.page-service-hero__title,
.thanks-hero .thanks-hero__title{
  font-size:clamp(32px, 4.2vw, 60px);
}
.page-services-hero__title{
  margin-top:18px;
  color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.55), 0 2px 28px rgba(0,0,0,.45);
}
.page-services-hero__lede{
  margin:22px 0 0;
  max-width:52ch;
  font-size:var(--hero-lede-text);
  line-height:1.55;
  color:rgba(255,255,255,0.96);
  text-shadow:0 1px 2px rgba(0,0,0,.45);
}
.page-services-bc{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
  gap:10px;
  margin-top:clamp(14px, 2.8vh, 28px);
  padding-top:0;
  font-size:14px;
  color:rgba(255,255,255,0.94);
  text-shadow:0 1px 2px rgba(0,0,0,.4);
}
.page-services-bc a{
  color:#fff;
}
.page-services-bc a:hover{
  color:#fff;
  text-decoration:underline;
  text-underline-offset:3px;
}
.page-services-bc__sep{
  width:30px;
  height:30px;
  border-radius:50%;
  background:var(--accent);
  color:var(--accent-ink);
  display:grid;
  place-items:center;
  flex-shrink:0;
}
.page-services-bc__sep svg{width:12px;height:12px}
.page-services-bc__here{
  color:rgba(255,255,255,0.82);
  min-width:0;
  max-width:100%;
  overflow-wrap:anywhere;
}
.page-services__list .services-intro{margin-bottom:clamp(24px, 3vw, 40px)}

/* News index (/news/) */
.page-news__body{padding:96px 0;background:var(--bg)}
.page-news__head{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(18px, 3vw, 28px);
  align-items:end;
  margin:0 0 clamp(14px, 2.2vw, 22px);
}
.page-news__lede{margin:0;color:var(--text-2);font-size:var(--body-text);line-height:1.55;max-width:58ch;justify-self:end;text-align:right}
.page-news__grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:clamp(18px, 2.2vw, 24px);
}
.page-news__card{
  border:1px solid var(--line-soft);
  border-radius:var(--rad-lg);
  background:#fff;
  box-shadow:0 10px 28px rgba(14,26,18,0.08);
  padding:22px 22px 24px;
  display:flex;
  flex-direction:column;
  gap:12px;
  min-height:260px;
}
.page-news__thumb{
  margin:-22px -22px 10px;
  border-top-left-radius:calc(var(--rad-lg) - 1px);
  border-top-right-radius:calc(var(--rad-lg) - 1px);
  overflow:hidden;
  border-bottom:1px solid var(--line-soft);
  background:rgba(31,58,30,0.04);
}
.page-news__thumb img{
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:16/9;
  object-fit:cover;
}
.page-news__card-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.page-news__badge{border-color:var(--line);background:rgba(31,58,30,0.06);color:var(--green)}
.page-news__date{margin:0;color:var(--text-3);font-size:12px}
.page-news__title{margin:0;font-family:var(--sans);font-weight:650;color:var(--green);font-size:18px;letter-spacing:-0.02em;line-height:1.25}
.page-news__title a:hover{text-decoration:underline;text-underline-offset:3px}
.page-news__desc{margin:0;color:var(--text-2);font-size:var(--body-text);line-height:1.6}
.page-news__cta{margin-top:auto;align-self:flex-start;width:fit-content}

.page-news__featured{margin:0 0 clamp(26px, 4vw, 42px)}
.page-news__featured-card{
  border:1px solid rgba(31,58,30,0.12);
  border-radius:var(--rad-lg);
  background:rgba(226,243,107,0.14);
  padding:clamp(22px, 3vw, 32px);
}
.page-news__eyebrow{
  margin:0 0 10px;
  font-size:10px;
  font-weight:700;
  letter-spacing:0.1em;
  text-transform:uppercase;
  color:var(--text-3);
}
.page-news__featured-title{margin:0 0 12px}
.page-news__featured-title a:hover{text-decoration:underline;text-underline-offset:3px}
.page-news__featured-lede{margin:0 0 14px;color:var(--text-2);font-size:var(--body-text);line-height:1.6;max-width:72ch}
.page-news__meta{display:flex;gap:10px;align-items:center;color:var(--text-3);font-size:13px;margin:0 0 18px}
.page-news__featured-cta{align-self:flex-start}
.page-news__empty{padding:48px 0}

/* News article (Decap / leaf bundle) */
.page-news__article{padding:clamp(56px, 8vw, 96px) 0;background:var(--bg)}
.page-news__figure{
  margin:0 0 clamp(20px, 3vw, 32px);
  border-radius:var(--rad-lg);
  overflow:hidden;
  border:1px solid var(--line-soft);
  box-shadow:0 14px 36px rgba(14,26,18,0.08);
}
.page-news__figure img{
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:1200/630;
  object-fit:cover;
}
.page-news__article-meta{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:10px 14px;
  margin:0 0 clamp(20px, 3vw, 28px);
  font-size:14px;
  color:var(--text-3);
}
.page-news__article-meta time{color:var(--text-3)}
.page-news__prose{max-width:min(72ch,100%)}

/* Service hero — short band for `/services/<slug>/` and service-child subpages. */
.page-service-hero{
  position:relative;
  padding:0;
  min-height:clamp(360px, 54vh, 520px);
  color:#fff;
  overflow:hidden;
}
.page-service-hero__bg{position:absolute;inset:0;z-index:0;background:var(--green-2)}
.page-service-hero__bg img{width:100%;height:100%;object-fit:cover;object-position:center 40%}
.page-service-hero__shade{
  position:absolute;
  inset:0;
  z-index:1;
  /* Footer-aligned `--green-2` scrim (not neutral black) over variable photography. */
  background:linear-gradient(
    180deg,
    color-mix(in srgb, var(--green-2) 82%, transparent) 0%,
    color-mix(in srgb, var(--green-2) 55%, transparent) 40%,
    color-mix(in srgb, var(--green-2) 92%, transparent) 100%
  );
}
/* Parent service pages + contact: short-band inner rhythm. */
.page-service-hero__inner{
  position:relative;
  z-index:2;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  min-height:clamp(360px, 54vh, 520px);
  padding-top:clamp(120px, 16vh, 240px);
  /* Keep bottom inset tight so copy sits low. */
  padding-bottom:clamp(18px, 3.2vh, 44px);
}
/* Flex column defaults to stretch — keep pill badge to content width like homepage hero tag. */
.page-service-hero__inner > .hero-tag{
  align-self:flex-start;
  width:fit-content;
  max-width:100%;
  margin-bottom:16px;
  background:color-mix(in srgb, var(--green-2) 78%, transparent);
  border-color:rgba(255,255,255,0.26);
  box-shadow:0 2px 12px color-mix(in srgb, var(--green-2) 50%, transparent);
}
.page-service-hero__title{
  margin-top:10px;
  color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.55), 0 2px 28px rgba(0,0,0,.5);
}
.page-service-hero__lede{
  margin:20px 0 0;
  max-width:52ch;
  font-size:var(--hero-lede-text);
  line-height:1.55;
  color:rgba(255,255,255,0.96);
  text-shadow:0 1px 2px rgba(0,0,0,.5);
}
.page-service-bc{margin-top:clamp(14px, 2.8vh, 28px);padding-top:0}

.page-service .page-service-detail{padding:96px 0;background:var(--bg)}
/* Lead-wide service pages already have a hero + lead row; reduce top padding to avoid excessive whitespace. */
.page-service .page-service-detail--lead-wide{padding-top:clamp(24px, 3vw, 40px)}
/* Service child explainer (BS5837-style + ecology children): same top rhythm as intro + sidebar quote form */
.page-service .page-service-detail--child-explainer{padding-top:clamp(24px, 3vw, 40px)}
.page-service-detail__grid{
  display:grid;
  grid-template-columns:minmax(0, 1.05fr) minmax(300px, 550px);
  gap:56px;
  align-items:start;
}
/* Lead row: title + intro beside quote form; wide band below for main article (see `intro` front matter). */
.page-service .page-service-detail--lead-wide{overflow-x:clip}
.page-service-detail__lead{
  display:grid;
  grid-template-columns:minmax(0, 1fr) minmax(280px, 550px);
  gap:clamp(28px, 4vw, 56px);
  align-items:start;
  margin-bottom:clamp(8px, 1.5vw, 16px);
  padding-bottom:clamp(32px, 4vw, 48px);
}
.page-service-detail__body--lead h2:first-child{margin-top:6px}
.page-service-detail__faq{
  margin-top:clamp(40px,5vw,64px);
  padding-top:clamp(24px,3vw,40px);
}
.page-service-detail__faq .page-service-detail__h{
  margin-bottom:20px;
  max-width:36ch;
}
.page-service-detail__wide{
  width:var(--viewport-inline);
  max-width:var(--viewport-inline);
  margin-left:calc(50% - var(--viewport-inline) / 2);
  margin-right:calc(50% - var(--viewport-inline) / 2);
  box-sizing:border-box;
  padding-top:clamp(32px, 4vw, 48px);
  padding-bottom:clamp(8px, 1.5vw, 16px);
  padding-left:max(20px, calc((var(--viewport-inline) - 1240px) / 2 + 32px));
  padding-right:max(20px, calc((var(--viewport-inline) - 1240px) / 2 + 32px));
}
.page-service-detail__h{margin-bottom:18px;max-width:22ch}
.page-service-detail__body{font-size:var(--body-text);line-height:1.65;color:var(--text-2)}
.page-service-detail__body p{margin:0 0 14px}
.page-service-detail__body p:last-child{margin-bottom:0}
.page-service-detail__body strong{color:inherit;font-weight:inherit}
.page-service-detail__body h2{
  font-family:var(--sans);
  font-weight:600;
  font-size:clamp(22px, 2.4vw, 28px);
  color:var(--green);
  letter-spacing:-0.02em;
  line-height:1.15;
  margin:32px 0 14px;
}
.page-service-detail__body h2:first-child{margin-top:0}
.page-service-detail__body h3{
  font-family:var(--sans);
  font-weight:600;
  font-size:clamp(19px,1.15vw,21px);
  color:var(--green);
  letter-spacing:-0.015em;
  margin:22px 0 8px;
}
.page-service-detail__body ul{margin:0 0 14px;padding-left:1.2em;color:var(--text-2)}
.page-service-detail__body li{margin-bottom:6px}

/* Service pages: “Surveys Available” grid (inspired by homepage process cards) */
.service-avail{margin:clamp(18px, 3vw, 32px) 0}
.service-avail--tight{
  margin-top:0;
  /* Override generic `section{padding:96px 0}` with band-like spacing. */
  padding-top:48px;
  padding-bottom:48px;
  /* Break out of the padded `.page-service-detail__wide` container so the green band is full-bleed. */
  width:var(--viewport-inline);
  margin-left:calc(50% - var(--viewport-inline) / 2);
  margin-right:calc(50% - var(--viewport-inline) / 2);
  padding-left:max(20px, calc((var(--viewport-inline) - 1240px) / 2 + 32px));
  padding-right:max(20px, calc((var(--viewport-inline) - 1240px) / 2 + 32px));
  background:var(--green-2);
  color:#fff;
  /* Match other on-page dark bands (e.g. “How we deliver”). */
  border-radius:0;
  overflow:hidden;
}
.service-avail--tight .service-avail__head{margin-bottom:12px}
.service-avail__head{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(18px, 3vw, 28px);
  align-items:end;
  margin-bottom:clamp(14px, 2.2vw, 22px);
}
.service-avail__title{margin-top:10px}
.service-avail__lede{margin:0;color:var(--text-2);font-size:var(--body-text);line-height:1.55;max-width:52ch;justify-self:end;text-align:right}
.service-avail--tight .service-avail__title{
  color:#fff;
  font-weight:700;
  font-size:clamp(26px, 3.2vw, 40px);
  letter-spacing:-0.02em;
  line-height:1.05;
}
.service-avail--tight .service-avail__lede{color:rgba(231,239,227,0.72)}
.service-avail__grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:0;
  list-style:none;
  margin:0;
  padding:0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.service-avail__card{
  padding:26px 22px;
  border-left:1px solid var(--line);
  display:flex;
  flex-direction:column;
  gap:10px;
  min-height:240px;
  background:transparent;
}
.service-avail__card:nth-child(3n+1){border-left:0}
.service-avail__meta{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  width:100%;
}
.service-avail__meta-end{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:8px;
  flex:1;
  min-width:0;
  text-align:right;
}
.service-avail__kicker{
  margin:-2px 0 0;
  font-size:13px;
  line-height:1.35;
  color:var(--text-3);
}
.service-avail__ic{flex-shrink:0;width:48px;height:48px;border-radius:14px;background:rgba(31,58,30,0.08);color:var(--green);display:grid;place-items:center;border:1px solid rgba(31,58,30,0.1)}
.service-avail__ic--asset{padding:6px}
.service-avail__ic-img{
  width:100%;
  max-width:36px;
  height:auto;
  max-height:36px;
  object-fit:contain;
  display:block;
}
.service-avail__badge{border-color:var(--line);background:rgba(31,58,30,0.06);color:var(--green)}
.service-avail__h{font-family:var(--sans);font-weight:600;color:var(--green);font-size:18px;letter-spacing:-0.02em;line-height:1.25;margin:0}
.service-avail__p{margin:0;font-size:var(--body-text);color:var(--text-2);line-height:1.6;max-width:54ch}

.service-avail--tight .service-avail__grid{border-top-color:var(--line-dark);border-bottom-color:var(--line-dark)}
.service-avail--tight .service-avail__card{border-left-color:var(--line-dark)}
.service-avail--tight .service-avail__ic{background:#1F3A1E;color:var(--accent);border-color:rgba(231,239,227,0.12)}
.service-avail--tight .service-avail__badge{background:rgba(255,255,255,0.08);border-color:rgba(231,239,227,0.22);color:#fff}
.service-avail--tight .service-avail__h{color:#fff}
.service-avail--tight .service-avail__p{color:rgba(231,239,227,0.72)}

/* Tree survey menu: 3-column tile grid (variant `grid` on section) */
.service-avail--grid .service-avail__grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:clamp(18px, 2.2vw, 24px);
  border:none;
  border-top:0;
  border-bottom:0;
  padding:2px 0 4px;
}
.service-avail--grid .service-avail__card{
  position:relative;
  border:1px solid var(--line-soft);
  border-radius:var(--rad-lg);
  background:#fff;
  box-shadow:0 10px 28px rgba(14,26,18,0.08);
  min-height:260px;
  padding:22px 22px 24px;
  gap:14px;
  transition:box-shadow .22s ease, transform .22s ease, border-color .22s ease;
}
.service-avail--grid .service-avail__card--featured{
  border-color:rgba(31,58,30,0.12);
  box-shadow:
    0 0 0 1px rgba(226,243,107,0.42),
    0 12px 30px rgba(14,26,18,0.09);
}
.service-avail--grid .service-avail__card:nth-child(3n+1){border-left:0}
@media (hover:hover) and (pointer:fine){
  .service-avail--grid .service-avail__card:hover{
    border-color:rgba(31,58,30,0.14);
    box-shadow:0 16px 40px rgba(14,26,18,0.12);
    transform:translateY(-2px);
  }
  .service-avail--grid .service-avail__card--featured:hover{
    box-shadow:
      0 0 0 1px rgba(226,243,107,0.5),
      0 16px 42px rgba(14,26,18,0.13);
  }
}
.service-avail--tight.service-avail--grid .service-avail__h{
  color:var(--green);
  font-size:clamp(17px, 1.05vw, 19px);
}
.service-avail--tight.service-avail--grid .service-avail__p{color:var(--text-2);max-width:none}
.service-avail--tight.service-avail--grid .service-avail__title-link{color:var(--green)}
.service-avail--tight.service-avail--grid .service-avail__title-link:hover{
  text-decoration:underline;
  text-underline-offset:3px;
}
/* Price pill in meta row (with icon) — same rhythm as hero-tag / survey bands */
.service-avail--tight.service-avail--grid .service-avail__from{
  margin:0;
  align-self:flex-end;
  text-align:right;
  line-height:1.25;
  max-width:12rem;
  color:var(--text-3);
  font-size:10px;
  font-weight:600;
  letter-spacing:0.08em;
  text-transform:uppercase;
  padding:6px 11px;
  border-radius:999px;
  background:rgba(31,58,30,0.07);
  border:1px solid var(--line-soft);
}
.service-avail--tight.service-avail--grid .service-avail__amount{color:var(--green);font-weight:700}
.service-avail--tight.service-avail--grid .service-avail__ic{
  background:rgba(31,58,30,0.08);
  color:var(--green);
  border:1px solid rgba(31,58,30,0.12);
}
.service-avail--tight.service-avail--grid .service-avail__badge{
  background:rgba(31,58,30,0.06);
  border-color:var(--line);
  color:var(--green);
}
.service-avail--grid .service-avail__meta-end{
  flex-direction:row;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  text-align:right;
}
.service-avail--grid .service-avail__from{
  margin:0;
  line-height:1.25;
  color:var(--text-3);
  font-size:10px;
  font-weight:600;
  letter-spacing:0.08em;
  text-transform:uppercase;
  padding:7px 12px;
  border-radius:999px;
  background:rgba(31,58,30,0.06);
  border:1px solid var(--line-soft);
}
.service-avail--grid .service-avail__amount{color:var(--green);font-weight:700}
.service-avail--grid .service-avail__badge--featured{
  background:rgba(226,243,107,0.22);
  border-color:rgba(226,243,107,0.55);
  color:var(--green);
}
.service-avail--grid .service-avail__cta{
  align-self:flex-start;
  display:inline-flex;
  flex:0 0 auto;
  width:max-content;
  max-width:100%;
  justify-content:flex-start;
  margin-top:auto;
  font-weight:600;
}
.service-avail--grid .service-avail__cta svg{flex-shrink:0}

@media (max-width:1020px){
  .service-avail--grid .service-avail__grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
}


.service-enquiry{
  background:var(--green-2);
  border-radius:var(--rad-lg);
  padding:32px 28px;
  color:var(--green-ink);
  position:sticky;
  top:24px;
  border:1px solid rgba(231,239,227,0.12);
  box-shadow:0 24px 48px rgba(0,0,0,0.12);
}
/* Latest Netlify contact form (same as /contact/) — light card, not the legacy dark enquiry box */
.service-enquiry.service-enquiry--contact{
  background:transparent;
  border:none;
  box-shadow:none;
  padding:0;
  color:var(--text);
}
.service-enquiry.service-enquiry--contact .page-contact-form-shell{
  margin:0;
  max-width:550px;
  width:100%;
}
.service-enquiry__title{
  font-family:var(--sans);
  font-size:1.35rem;
  font-weight:600;
  color:#fff;
  margin:0 0 8px;
  letter-spacing:-0.02em;
}
.service-enquiry__hint{font-size:13px;color:rgba(231,239,227,0.65);margin:0 0 22px;line-height:1.5}
.service-enquiry__grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}
.service-enquiry__field{display:flex;flex-direction:column;gap:6px}
.service-enquiry__field--full{grid-column:1/-1}
.service-enquiry__label{font-size:12px;color:rgba(231,239,227,0.62)}
.service-enquiry__form input,
.service-enquiry__form textarea{
  width:100%;
  border-radius:12px;
  border:1px solid rgba(231,239,227,0.22);
  background:rgba(14,26,18,0.4);
  color:#fff;
  padding:11px 14px;
  font-size:var(--body-text);
  font-family:inherit;
}
.service-enquiry__form input::placeholder,
.service-enquiry__form textarea::placeholder{color:rgba(231,239,227,0.38)}
.service-enquiry__form textarea{min-height:120px;resize:vertical}
.service-enquiry__check{
  display:flex;
  gap:10px;
  align-items:flex-start;
  font-size:12px;
  color:rgba(231,239,227,0.72);
  margin:18px 0 0;
  line-height:1.45;
}
.service-enquiry__check input{margin-top:3px;flex-shrink:0}
.service-enquiry__submit{margin-top:20px;width:100%;justify-content:center}
.service-quote__actions{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top:20px;
  align-items:center;
}
.service-quote__back{flex:0 0 auto}
.service-quote__submit.service-enquiry__submit{margin-top:0;flex:1;min-width:min(100%, 180px);width:auto}
.service-enquiry__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* ---------- Contact page + contact modal / form ---------- */
.page-contact{min-width:0}

.page-contact-form-wrap{
  padding:clamp(64px, 8vw, 96px) 0;
  background:var(--bg);
}

.page-contact-form-shell{
  position:relative;
  isolation:isolate;
  border-radius:var(--rad-lg);
  border:1px solid var(--line-soft);
  background:linear-gradient(165deg, rgba(255,255,255,0.96) 0%, var(--bg-light) 50%, rgba(213,221,195,0.28) 100%);
  box-shadow:0 20px 48px rgba(20,40,24,0.07);
  padding:clamp(28px, 3.5vw, 40px) clamp(22px, 3vw, 36px);
  transition:border-color 0.5s ease, box-shadow 0.5s ease;
}

/* Same `--green-2` as `.page-service-features`; on-page shell only (step 1). Modal uses default panel. */
.page-contact-form-shell::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  background:var(--green-2);
  opacity:0;
  transition:opacity 0.55s ease;
  pointer-events:none;
  z-index:0;
}
.page-contact-form-shell--quote-step-1::before{opacity:1}
.page-contact-form-shell--quote-step-1{
  border-color:rgba(231,239,227,0.12);
  box-shadow:0 24px 48px rgba(0,0,0,0.12);
}
.page-contact-form-shell > *{position:relative;z-index:1}

.page-contact-form-shell__title{
  font-family:var(--sans);
  font-weight:700;
  font-size:clamp(22px, 2.6vw, 30px);
  letter-spacing:-0.02em;
  color:var(--green);
  margin:0 0 10px;
  line-height:1.15;
  transition:color 0.45s ease;
}

.page-contact-form-shell__lede{
  margin:0 0 clamp(20px, 2.5vw, 28px);
  font-size:var(--body-text);
  line-height:1.55;
  color:var(--text-2);
  max-width:62ch;
  transition:color 0.45s ease;
}

/* Step 1: on-dark copy to match the BNG features strip. */
.page-contact-form-shell--quote-step-1 .page-contact-form-shell__title{color:#fff}
.page-contact-form-shell--quote-step-1 .page-contact-form-shell__lede{color:rgba(231,239,227,0.72)}
.page-contact-form-shell--quote-step-1 .contact-modal__kicker{
  color:rgba(231,239,227,0.55);
  transition:color 0.45s ease;
}
.page-contact-form-shell--quote-step-1 .contact-modal__title{
  color:#fff;
  transition:color 0.45s ease;
}
.page-contact-form-shell--quote-step-1 .contact-modal__top{
  border-bottom-color:var(--line-dark);
  transition:border-color 0.45s ease;
}
.page-contact-form-shell--quote-step-1 .contact-form__label{
  color:rgba(231,239,227,0.78);
  transition:color 0.45s ease;
}
.page-contact-form-shell--quote-step-1 .contact-form__hint{
  color:rgba(231,239,227,0.55);
  transition:color 0.45s ease;
}
.page-contact-form-shell--quote-step-1 .contact-modal__actions{
  border-top-color:var(--line-dark);
  transition:border-color 0.45s ease;
}
.page-contact-form-shell--quote-step-1 .contact-form__req{color:rgba(226,243,107,0.95)}

.contact-modal--inline{display:block;width:100%}

.contact-modal__open{margin-top:8px}
.contact-modal__hint{
  margin:12px 0 0;
  font-size:13px;
  color:var(--text-2);
}

.contact-modal__overlay{
  position:fixed;
  inset:0;
  z-index:80;
  background:rgba(14,26,18,0.55);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}

.contact-modal__dialog{
  position:fixed;
  left:50%;
  top:50%;
  transform:translate(-50%, -50%);
  z-index:90;
  width:min(560px, calc(100vw - 40px));
  max-height:min(720px, calc(100vh - 40px));
  overflow:auto;
  border-radius:var(--rad-lg);
  box-shadow:0 28px 64px rgba(0,0,0,0.28);
  background:#fff;
}

.contact-modal--inline .contact-modal__dialog{
  position:relative;
  left:auto;
  top:auto;
  transform:none;
  z-index:auto;
  width:100%;
  max-height:none;
  overflow:visible;
  box-shadow:none;
  border-radius:0;
  background:transparent;
}

.contact-modal__panel{padding:0}

/* Header modal only: shell on /contact/ already pads the inline form */
.contact-modal:not(.contact-modal--inline) .contact-modal__panel{
  position:relative;
  z-index:1;
  padding:clamp(26px, 5vw, 36px) clamp(22px, 4vw, 34px) clamp(30px, 5vw, 40px);
}

.contact-modal__top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  margin-bottom:18px;
  padding-bottom:18px;
  border-bottom:1px solid var(--line);
  transition:border-color 0.45s ease;
}

.contact-modal:not(.contact-modal--inline) .contact-modal__top{
  gap:20px;
  margin-bottom:clamp(20px, 3vw, 26px);
  padding-bottom:clamp(18px, 2.5vw, 22px);
}

.contact-modal__kicker{
  font-size:12px;
  font-weight:600;
  letter-spacing:0.06em;
  text-transform:uppercase;
  color:var(--text-3);
  margin-bottom:4px;
  transition:color 0.45s ease;
}

.contact-modal__title{
  font-family:var(--sans);
  font-weight:600;
  font-size:1.15rem;
  color:var(--green);
  letter-spacing:-0.02em;
  transition:color 0.45s ease;
}

.contact-modal__close{
  flex-shrink:0;
  width:40px;
  height:40px;
  border-radius:12px;
  border:1px solid var(--line);
  background:var(--bg-light);
  font-size:22px;
  line-height:1;
  cursor:pointer;
  color:var(--green);
  transition:background 0.35s ease, border-color 0.35s ease, color 0.35s ease;
}

.contact-form__hp{
  position:absolute;
  left:-9999px;
  width:1px;
  height:1px;
  overflow:hidden;
}

.contact-form__grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px 16px;
}

.contact-form__field{
  display:flex;
  flex-direction:column;
  gap:6px;
  min-width:0;
}

.contact-form__field--full{grid-column:1/-1}

.contact-form__label{
  font-size:12px;
  font-weight:500;
  color:var(--text-2);
  transition:color 0.45s ease;
}

.contact-form__hint{
  display:block;
  font-size:12px;
  font-weight:400;
  line-height:1.45;
  color:var(--text-3);
  margin:0 0 6px;
  transition:color 0.45s ease;
}

.contact-form__req{color:#b45309;transition:color 0.45s ease}

/* 16px+ stops iOS Safari from zooming the whole page on focus (avoids stuck zoom + horizontal scroll after closing the modal). */
.contact-form input,
.contact-form textarea{
  width:100%;
  border-radius:12px;
  border:1px solid var(--line);
  background:#fff;
  color:var(--text);
  padding:11px 14px;
  font-size:var(--body-text);
  font-family:inherit;
}

.contact-form textarea{
  min-height:120px;
  resize:vertical;
  line-height:1.5;
}

.contact-form input::placeholder,
.contact-form textarea::placeholder{color:var(--text-3)}

.contact-form input:focus,
.contact-form textarea:focus{
  outline:2px solid rgba(31,58,30,0.2);
  outline-offset:0;
  border-color:rgba(31,58,30,0.35);
}

.contact-form__file{
  display:block;
  width:100%;
  max-width:100%;
  margin-top:4px;
  font-size:13px;
  color:var(--text-2);
}
.contact-form__file::file-selector-button,
.contact-form__file::-webkit-file-upload-button{
  margin-right:14px;
  margin-bottom:4px;
  padding:10px 18px;
  border-radius:12px;
  border:1px solid var(--line);
  background:var(--bg-light);
  color:var(--green);
  font-family:inherit;
  font-size:var(--body-text);
  font-weight:500;
  cursor:pointer;
}
.contact-form__file:hover::file-selector-button,
.contact-form__file:hover::-webkit-file-upload-button{
  background:var(--bg-2);
  border-color:rgba(31,58,30,0.22);
}

.contact-modal__actions{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  justify-content:flex-end;
  margin-top:22px;
  padding-top:18px;
  border-top:1px solid var(--line);
  transition:border-color 0.45s ease;
}

.contact-modal:not(.contact-modal--inline) .contact-form__grid{
  gap:18px 20px;
}

.contact-modal:not(.contact-modal--inline) .contact-form__field{
  gap:8px;
}

.contact-modal:not(.contact-modal--inline) .contact-modal__actions{
  margin-top:clamp(26px, 3.5vw, 34px);
  padding-top:clamp(20px, 2.5vw, 26px);
  gap:14px;
}

/* Submit: hidden on steps 1–3 via [hidden]; step 4 shows it (disabled until form is valid). */
.contact-modal__actions button.contact-modal__submit[hidden]{
  display:none !important;
}
button.contact-modal__submit:not([hidden]){
  display:inline-flex !important;
}
button.contact-modal__submit:not([hidden]):disabled{
  opacity:0.45;
  cursor:not-allowed;
  transform:none;
}
button.contact-modal__submit:not([hidden]):disabled:hover{
  transform:none;
}

/* Next uses [hidden] on the last step — same `.btn` vs `[hidden]` cascade issue as submit. */
.contact-modal__actions button.btn[hidden]{
  display:none !important;
}

button.contact-modal__next:disabled{
  opacity:0.45;
  cursor:not-allowed;
  transform:none;
}
button.contact-modal__next:disabled:hover{
  transform:none;
}

.contact-modal__back{margin-right:auto}

.cselect{position:relative;width:100%}
.cselect__btn{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  width:100%;
  text-align:left;
  border-radius:12px;
  border:1px solid var(--line);
  background:#fff;
  color:var(--text);
  padding:11px 14px;
  font-size:var(--body-text);
  font-family:inherit;
  cursor:pointer;
}
.cselect.is-filled .cselect__text{color:var(--text)}
.cselect:not(.is-filled) .cselect__text{color:var(--text-3)}
.cselect__chev{
  width:10px;
  height:10px;
  border-right:2px solid var(--green);
  border-bottom:2px solid var(--green);
  transform:rotate(45deg);
  margin-top:-4px;
  flex-shrink:0;
  opacity:0.65;
}
.cselect.is-open .cselect__chev{transform:rotate(-135deg);margin-top:4px}
.cselect__list{
  position:absolute;
  left:0;
  right:0;
  top:calc(100% + 6px);
  z-index:40;
  max-height:240px;
  overflow:auto;
  padding:6px;
  border-radius:14px;
  border:1px solid var(--line);
  background:#fff;
  box-shadow:0 16px 40px rgba(20,40,24,0.12);
}
.contact-modal--inline .cselect__list{z-index:50}

.cselect__opt{
  display:block;
  width:100%;
  text-align:left;
  border:0;
  border-radius:10px;
  background:transparent;
  padding:9px 10px;
  font-size:13px;
  color:var(--text);
  cursor:pointer;
  font-family:inherit;
}
.cselect__opt:hover{background:var(--bg-2)}

.survey-multi__wrap{position:relative}
.survey-multi__combo{
  display:grid;
  grid-template-columns:minmax(0, 1fr);
  grid-template-rows:auto auto;
  row-gap:6px;
  align-content:start;
  min-height:40px;
  padding:6px 8px 7px 10px;
  border-radius:12px;
  border:1px solid var(--line);
  background:#fff;
}
.survey-multi__combo:focus-within{
  outline:2px solid var(--accent);
  outline-offset:1px;
}
.survey-multi__chips{
  grid-column:1;
  grid-row:1;
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  align-items:center;
  align-content:flex-start;
  width:100%;
  max-width:100%;
  min-width:0;
  min-height:0;
}
.survey-multi__input{
  grid-column:1;
  grid-row:2;
  width:100%;
  max-width:100%;
  min-width:0;
  flex:unset;
  border:0;
  margin:0;
  padding:5px 2px 3px;
  font-size:16px;
  font-family:inherit;
  color:var(--text);
  background:transparent;
}
.survey-multi__chip{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:3px 5px 3px 5px;
  border-radius:999px;
  background:var(--bg-2);
  border:1px solid var(--line);
  font-size:12px;
  color:var(--text);
  line-height:1.25;
  box-shadow:0 1px 0 rgba(20,40,24,0.04);
}
.survey-multi__chip-check{
  flex-shrink:0;
  display:grid;
  place-items:center;
  width:18px;
  height:18px;
  border-radius:50%;
  background:var(--green);
  color:#fff;
}
.survey-multi__chip-check svg{display:block}
.survey-multi__chip-label{
  flex:1;
  min-width:0;
  padding-right:2px;
}
.survey-multi__chip-remove{
  display:grid;
  place-items:center;
  width:20px;
  height:20px;
  margin:0 -1px 0 1px;
  padding:0;
  border:0;
  border-radius:50%;
  background:transparent;
  color:var(--text-2);
  font-size:14px;
  line-height:1;
  cursor:pointer;
  font-family:inherit;
}
.survey-multi__chip-remove:hover{background:rgba(20,40,24,0.08);color:var(--text)}
.survey-multi__input::placeholder{color:var(--text-3)}
.survey-multi__list{
  position:absolute;
  left:0;
  right:0;
  top:calc(100% + 6px);
  z-index:45;
  max-height:240px;
  overflow:auto;
  padding:6px;
  border-radius:14px;
  border:1px solid var(--line);
  background:#fff;
  box-shadow:0 16px 40px rgba(20,40,24,0.12);
}
.contact-modal--inline .survey-multi__list{z-index:55}
.survey-multi__opt{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  width:100%;
  text-align:left;
  border:0;
  border-radius:10px;
  background:transparent;
  padding:8px 10px;
  font-size:14px;
  color:var(--text);
  cursor:pointer;
  font-family:inherit;
}
.survey-multi__opt-label{
  flex:1;
  min-width:0;
  text-align:left;
  line-height:1.35;
}
.survey-multi__opt-check{
  flex-shrink:0;
  display:grid;
  place-items:center;
  width:18px;
  height:18px;
  border-radius:50%;
  background:var(--green);
  color:#fff;
}
.survey-multi__opt-check svg{display:block}
.survey-multi__opt--selected{
  cursor:default;
  color:var(--text-2);
}
.survey-multi__opt:not(.survey-multi__opt--selected):hover{background:var(--bg-2)}
.survey-multi__opt--selected:hover{background:rgba(31,58,30,0.06)}

.page-contact-intro{
  padding:clamp(72px, 8vw, 104px) 0;
  background:var(--bg-2);
  border-top:1px solid var(--line-soft);
}

.page-contact-intro__grid{
  display:grid;
  grid-template-columns:minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap:clamp(32px, 5vw, 56px);
  align-items:center;
}

.page-contact-intro__title{margin:0 0 20px}

.page-contact-meta{
  display:flex;
  flex-direction:column;
  gap:14px;
  margin:0 0 24px;
  font-size:var(--body-text);
  line-height:1.5;
  color:var(--text-2);
}

.page-contact-meta__row{
  display:flex;
  align-items:flex-start;
  gap:12px;
}

.page-contact-meta__icon{
  flex:0 0 auto;
  margin-top:2px;
  color:var(--green);
  opacity:0.85;
}

.page-contact-meta a{color:var(--green);text-decoration:underline;text-underline-offset:3px}

.page-contact-intro__cta{margin-top:4px}

.page-contact-intro__visual{border-radius:var(--rad-lg);overflow:hidden;background:#cbd5b8}
.page-contact-intro__img{
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:4/3;
  object-fit:cover;
}
.page-contact-intro__ph{aspect-ratio:4/3;min-height:240px}

.page-contact-faq{
  padding:clamp(72px, 8vw, 104px) 0;
  background:var(--bg);
}

.page-contact-faq__grid{
  display:grid;
  grid-template-columns:minmax(0, 1.15fr) minmax(0, 0.85fr);
  gap:clamp(32px, 5vw, 48px);
  align-items:start;
}

.page-contact-faq__head{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  justify-content:space-between;
  gap:18px;
  margin-bottom:28px;
}

.page-contact-faq__title{margin:0;max-width:18ch}

.page-contact-faq__list{display:flex;flex-direction:column;gap:8px}

.page-contact-faq__item{
  border:1px solid var(--line);
  border-radius:14px;
  background:rgba(255,255,255,0.65);
  padding:0 18px;
}

.page-contact-faq__item summary{
  cursor:pointer;
  list-style:none;
  font-weight:600;
  font-size:var(--body-text);
  color:var(--green);
  padding:16px 0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}

.page-contact-faq__item summary::-webkit-details-marker{display:none}

.page-contact-faq__item summary::after{
  content:"";
  width:10px;
  height:10px;
  border-right:2px solid currentColor;
  border-bottom:2px solid currentColor;
  transform:rotate(45deg);
  flex-shrink:0;
  opacity:0.5;
  margin-top:-4px;
}

.page-contact-faq__item[open] summary::after{transform:rotate(-135deg);margin-top:4px}

.page-contact-faq__item p{
  margin:0 0 16px;
  font-size:var(--body-text);
  line-height:1.6;
  color:var(--text-2);
}

/* Service child: summary + accordion (reuses .page-contact-faq__item for details) */
.page-service-child__summary{
  max-width:72ch;
  margin:0 0 clamp(40px,5vw,64px);
}
.page-service-child__summary .page-service-child__h{margin-bottom:clamp(16px,2vw,24px)}
.page-service-child__accordion{
  margin:0 0 clamp(40px,5vw,56px);
}
.page-service-child__accordion .page-service-child__h{
  margin:0 0 20px;
  max-width:32ch;
}
.page-service-child__accordion-list{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.page-service-child__accordion-body{
  padding-bottom:4px;
}
.page-service-child__accordion-body p,
.page-service-child__accordion-body li{
  font-size:var(--body-text);
  line-height:1.6;
  color:var(--text-2);
}
.page-service-child__accordion-body p{margin:0 0 12px}
.page-service-child__accordion-body p:last-child{margin-bottom:16px}
.page-service-child__accordion-body ul{
  margin:8px 0 12px;
  padding-left:1.2em;
}
.page-service-child__prose:not(:first-child){
  margin-top:clamp(8px,2vw,16px);
  padding-top:clamp(24px,3vw,40px);
  border-top:1px solid rgba(31,58,30,0.1);
}
/* Body-only child pages (e.g. tree pages without summary): prose is first in `.wrap`, so it misses `:not(:first-child)` spacing */
.page-service-detail--child > .wrap > .page-service-child__prose:first-child{
  padding-top:clamp(24px,3vw,40px);
}
/* Optional markdown tail on explainer pages: light panel instead of sage page bg */
.page-service-detail--child-explainer .page-service-child__prose--tail{
  margin-top:clamp(28px,4vw,48px);
  padding:clamp(28px,4vw,40px);
  border-top:0;
  background:var(--explainer-bg);
  border:1px solid rgba(31,58,30,0.08);
  border-radius:var(--rad-lg);
  box-shadow:0 12px 36px rgba(20,40,24,0.05);
}
.page-service-child__prose p:last-child{margin-bottom:0}

.page-service-child__other{
  position:relative;
  margin-top:0;
  margin-left:0;
  margin-right:0;
  width:100%;
  min-height:clamp(280px,42vh,560px);
  display:flex;
  align-items:center;
  overflow:hidden;
  isolation:isolate;
}
/* Align card with `.wrap` grid while background stays edge-to-edge */
.page-service-child__other-inner{
  position:relative;
  z-index:2;
  width:100%;
  padding-top:clamp(28px,4vw,48px);
  padding-bottom:clamp(28px,4vw,48px);
}
.page-service-child__other-bg{
  position:absolute;
  inset:0;
  z-index:0;
  background:#0e1a12;
}
.page-service-child__other-bg img{
  width:100%;
  height:100%;
  min-height:100%;
  object-fit:cover;
  object-position:center 40%;
}
.page-service-child__other-bg-fallback{
  position:absolute;
  inset:0;
  background:#0e1a12;
}
/* Match service hero: dark scrim so copy on the card stays legible */
.page-service-child__other-shade{
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(180deg, rgba(14,26,18,.62) 0%, rgba(14,26,18,.26) 42%, rgba(14,26,18,.82) 100%);
}
.page-service-child__other-panel{
  position:relative;
  z-index:2;
  max-width:52ch;
  padding:clamp(28px,4vw,40px) clamp(24px,4vw,36px);
  border:1px solid var(--line);
  border-radius:var(--rad-lg);
  background:var(--bg);
  box-shadow:0 1px 0 var(--line-soft);
}
/* No extra band of page padding under the full-bleed “other” strip (flush to footer) */
.page-service.page-service--child .page-service-detail--child:has(> .page-service-child__other:last-child){
  padding-bottom:0;
}
.page-service-child__other-title{margin:0 0 10px}
.page-service-child__other-lede{
  margin:0 0 20px;
  font-size:var(--body-text);
  line-height:1.55;
  color:var(--text-2);
}
.page-service-child__other-btn{display:inline-flex}
/* Global `.btn:hover{transform:translateY(-1px)}` shifts layout inside flex + overflow:hidden — kill motion here */
.page-service-child__other .btn:hover,
.page-service-child__other .btn:focus-visible{
  transform:none;
}
.page-service-child__other .btn-soft:hover{
  background:rgba(31,58,30,0.07);
}

/* Tree survey explainer (BS5837): summary band (page bg) + FAQ band (light panel) + image */
.tree-explainer-stack{
  margin:0;
  padding:0;
}
.tree-explainer__summary-band{
  margin:0 calc(50% - 50vw);
  width:100vw;
  max-width:100vw;
  box-sizing:border-box;
  background:var(--bg);
  /* Top spacing comes from `.page-service .page-service-detail` — match service lead rows */
  padding:0 0 clamp(40px,5vw,64px);
  border-bottom:1px solid var(--line);
}
/* Same grid proportions as `.page-service-detail__lead` + quote column */
.tree-explainer__summary-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(280px,550px);
  gap:clamp(28px,4vw,56px);
  align-items:start;
}
.tree-explainer__summary-main{min-width:0}
.tree-explainer__summary-head{margin:0 0 clamp(18px,2.5vw,28px)}
.tree-explainer__summary-title{max-width:32ch}
.tree-explainer__summary-body{
  max-width:72ch;
  color:var(--text-2);
}
.tree-explainer__summary-body p{margin:0 0 14px}
.tree-explainer__summary-body p:last-child{margin-bottom:0}
.tree-explainer__summary-aside.service-enquiry{
  position:sticky;
  top:24px;
}

.tree-explainer__faq-band{
  background:var(--explainer-bg);
  margin:0 calc(50% - 50vw);
  width:100vw;
  max-width:100vw;
  box-sizing:border-box;
  padding:clamp(56px,7vw,96px) 0;
}
.tree-explainer__head{
  display:flex;
  justify-content:flex-end;
  margin-bottom:clamp(36px,5vw,56px);
}
.tree-explainer__head-right{
  text-align:right;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:clamp(18px,2.5vw,26px);
}
.tree-explainer__title{
  margin:0;
  max-width:100%;
  margin-left:auto;
}
.tree-explainer__cta-row{
  display:flex;
  justify-content:flex-end;
  width:100%;
}
.tree-explainer__cta{
  background:var(--accent-panel);
  color:var(--green);
  border:0;
  font-weight:600;
  box-shadow:0 1px 0 rgba(31,58,30,0.06);
}
.tree-explainer__cta:hover{box-shadow:0 6px 24px rgba(31,58,30,0.12)}
.tree-explainer__cta svg{opacity:0.85}

.tree-explainer__grid{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(280px,0.95fr);
  gap:clamp(28px,5vw,56px);
  align-items:start;
}
.tree-explainer__accordion{display:flex;flex-direction:column}
.tree-explainer__item{
  border-bottom:1px solid rgba(31,58,30,0.12);
}
.tree-explainer__item:last-child{border-bottom:0}
.tree-explainer__q{
  cursor:pointer;
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  width:100%;
  padding:18px 0 20px;
  font-family:var(--sans);
  font-size:var(--body-text);
  font-weight:600;
  color:var(--green);
  text-align:left;
  line-height:1.35;
}
.tree-explainer__q::-webkit-details-marker{display:none}
.tree-explainer__q::after{
  content:"+";
  flex-shrink:0;
  width:22px;
  text-align:center;
  font-size:20px;
  font-weight:500;
  line-height:1;
  color:rgba(31,58,30,0.4);
  transition:transform .2s ease, color .2s ease;
}
.tree-explainer__item[open] > .tree-explainer__q::after{
  content:"−";
  color:rgba(31,58,30,0.55);
}
.tree-explainer__a{
  padding:0 28px 22px 0;
}
.tree-explainer__a p{
  margin:0 0 12px;
  font-size:var(--body-text);
  line-height:1.65;
  color:var(--explainer-muted);
}
.tree-explainer__a p:last-child{margin-bottom:0}
.tree-explainer__a strong{color:rgba(31,58,30,0.88)}
.tree-explainer__a ul{
  margin:8px 0 12px;
  padding-left:1.15em;
  color:var(--explainer-muted);
  font-size:var(--body-text);
  line-height:1.6;
}

.tree-explainer__visual{
  position:sticky;
  top:24px;
  border-radius:clamp(18px,2.5vw,28px);
  overflow:hidden;
  background:#cbd5b8;
  box-shadow:0 24px 48px rgba(31,58,30,0.08);
}
.tree-explainer__img{
  display:block;
  width:100%;
  height:auto;
  vertical-align:middle;
}
.tree-explainer__ph{
  min-height:320px;
  background:linear-gradient(145deg, #dfe8cf 0%, #c5d4b0 100%);
}

@media (max-width:960px){
  .tree-explainer__summary-row{grid-template-columns:1fr}
  .tree-explainer__summary-aside.service-enquiry{position:static}
  .tree-explainer__summary-title{max-width:none}
  .tree-explainer__head{
    justify-content:flex-start;
    margin-bottom:28px;
  }
  .tree-explainer__head-right{
    text-align:left;
    align-items:flex-start;
  }
  .tree-explainer__title{
    margin-left:0;
    max-width:none;
  }
  .tree-explainer__cta-row{justify-content:flex-start}
  .tree-explainer__grid{grid-template-columns:1fr}
  .tree-explainer__visual{
    position:static;
    order:-1;
    max-width:420px;
    margin:0 auto 8px;
  }
}

.page-contact-faq__visual{
  position:sticky;
  top:24px;
  border-radius:var(--rad-lg);
  overflow:hidden;
  background:#cbd5b8;
}

.page-contact-faq__img{display:block;width:100%;height:auto;object-fit:cover}
.page-contact-faq__ph{min-height:280px}

@media (max-width:960px){
  .page-contact-intro__grid{grid-template-columns:1fr}
  .page-contact-faq__grid{grid-template-columns:1fr}
  .page-contact-faq__head{flex-direction:column;align-items:stretch}
  .page-contact-faq__visual{position:static;order:-1}
  .contact-form__grid{grid-template-columns:1fr}
}

.page-service-features{
  padding:88px 0 96px;
  background:var(--green-2);
  color:#fff;
}
.page-service-features__head{
  display:grid;
  grid-template-columns:auto minmax(0, 1fr) auto;
  gap:24px 32px;
  align-items:start;
  margin-bottom:16px;
}
.page-service-features__title{
  text-align:center;
  max-width:24ch;
  justify-self:center;
  color:#fff;
  min-width:0;
}
.page-service-features__cta{justify-self:end;white-space:nowrap}
.page-service-features__lede{
  margin:0 auto 40px;
  max-width:56ch;
  text-align:center;
  font-size:var(--body-text);
  line-height:1.6;
  color:rgba(231,239,227,0.7);
}
.page-service-features__grid{
  display:grid;
  grid-template-columns:minmax(280px, 0.9fr) minmax(0, 1.1fr);
  gap:48px;
  align-items:start;
}
.page-service-features__img{
  border-radius:var(--rad-lg);
  overflow:hidden;
  aspect-ratio:3/4;
  max-width:440px;
  background:#0a1410;
}
.page-service-features__img img{width:100%;height:100%;object-fit:cover}
.page-service-features__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.service-feature-row{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:20px;
  align-items:center;
  padding:24px 0;
  border-top:1px solid var(--line-dark);
}
.service-feature-row:last-child{border-bottom:1px solid var(--line-dark)}
.service-feature-row__ic{
  width:52px;
  height:52px;
  border-radius:14px;
  background:#1F3A1E;
  display:grid;
  place-items:center;
  color:var(--accent);
  flex-shrink:0;
}
.service-feature-row__title{font-size:18px;font-weight:600;margin:0 0 6px;color:#fff;letter-spacing:-0.01em}
.service-feature-row__p{margin:0;font-size:var(--body-text);line-height:1.55;color:rgba(231,239,227,0.66);max-width:54ch}

.thanks-page{padding:0 0 96px}

.thanks-hero{
  position:relative;
  z-index:0;
  min-height:min(72vh, 640px);
  color:#fff;
  overflow:hidden;
  display:flex;
  align-items:flex-end;
}
.thanks-hero__bg{
  position:absolute;
  inset:0;
  background:#0E1A12;
}
.thanks-hero__bg img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 28%;
}
.thanks-hero__scrim{
  position:absolute;
  inset:0;
  background:linear-gradient(180deg, rgba(14,26,18,.52) 0%, rgba(14,26,18,.38) 42%, rgba(14,26,18,.88) 100%);
  pointer-events:none;
}
.thanks-hero__inner{
  position:relative;
  z-index:1;
  padding:clamp(48px, 8vw, 120px) 0 clamp(40px, 6vw, 72px);
  text-align:center;
}
.thanks-hero__title{margin:0 auto 20px}
.thanks-hero__intro{
  max-width:58ch;
  margin-inline:auto;
}
.thanks-hero__intro p{
  margin:0 0 14px;
  font-size:var(--hero-lede-text);
  line-height:1.6;
  color:rgba(255,255,255,.9);
  max-width:none;
}
.thanks-hero__intro p:last-child{margin-bottom:0}

.thanks-page__intro-band{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  min-height:min(52vh, 520px);
}
.thanks-page__intro-media{
  position:absolute;
  inset:0;
  z-index:0;
  background:var(--bg-2);
}
.thanks-page__intro-photo{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 28%;
}
.thanks-page__intro-fallback{
  position:absolute;
  inset:0;
  background:linear-gradient(145deg, var(--bg-2) 0%, #dfe8db 100%);
}
.thanks-page__intro-shade{
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(
    180deg,
    rgba(248,250,246,0.94) 0%,
    rgba(248,250,246,0.9) 45%,
    rgba(248,250,246,0.96) 100%
  );
}
.thanks-page__intro-inner{
  position:relative;
  z-index:2;
  padding:clamp(48px, 7vw, 96px) 0 clamp(44px, 6vw, 80px);
}
.thanks-page__body{
  font-size:var(--body-text);
  line-height:1.65;
  color:var(--text);
  max-width:52ch;
  margin-inline:auto;
  text-align:center;
}
.thanks-page__body p{margin:0 0 12px}
.thanks-page__body p:last-child{margin-bottom:0}
.thanks-page__body a{color:var(--green);text-decoration:underline;text-underline-offset:3px}

.thanks-page__news{padding:clamp(48px, 7vw, 88px) 0 clamp(32px, 5vw, 56px)}
.thanks-page__news .h-section{margin-bottom:12px}
.thanks-page__news-lede{
  margin:0 0 clamp(24px, 3.5vw, 36px);
  font-size:var(--body-text);
  line-height:1.65;
  color:var(--text-2);
  max-width:62ch;
}
.thanks-page__news-empty{
  margin:0;
  font-size:var(--body-text);
  color:var(--text-2);
}

.thanks-page__back{margin:0;padding-bottom:48px}

/* Netlify Identity: /login/ + /welcome/ */
.page-auth{padding:clamp(40px,6vw,72px) 0 96px}
.page-auth__card{
  max-width:52ch;
  padding:clamp(28px,4vw,40px);
  border-radius:16px;
  border:1px solid var(--line);
  background:var(--bg-light);
}
.page-auth__lede{margin:0 0 24px;font-size:var(--body-text);line-height:1.65;color:var(--text-2)}
.page-auth__btn{margin:0 0 20px}
.page-auth__fineprint{margin:0;font-size:13px;line-height:1.55;color:var(--text-muted)}
.page-auth__fineprint code{font-family:var(--font-mono,ui-monospace,monospace);font-size:12px}

.page-welcome-gate{
  min-height:min(70vh,720px);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:clamp(48px,10vw,120px) 0;
}
.page-welcome-gate__wait{margin:0;font-size:var(--body-text);color:var(--text-2)}
.page-welcome-gate__main{max-width:40ch}
.page-welcome-gate__title{margin:0 0 24px}
.page-welcome-gate__out{margin:0}

/* responsive */
/* Wide viewports: keep hero headlines from spanning the full content band */
@media (min-width: 1101px){
  .page-services-hero__title,
  .page-service-hero__title{
    align-self:flex-start;
    max-width:60%;
  }
}

@media (max-width: 1280px) and (min-width: 1101px){
  .svc-row{gap:28px;padding:28px 0}
}

@media (max-width: 1100px) and (min-width: 701px){
  .services{padding:76px 0}
}

@media (max-width: 1100px){
  /* Keep the content block anchored toward the bottom on smaller viewports. */
  .page-services-hero__inner,
  .page-service-hero__inner{justify-content:flex-end}
  .page-services-bc,
  .page-service-bc{
    justify-content:flex-start;
  }
  .page-services-hero__title,
  .page-service-hero__title{max-width:none}
  .services-intro{
    grid-template-columns:1fr;
    align-items:stretch;
    gap:20px;
    margin-bottom:28px;
  }
  .services-intro__aside{align-items:flex-start;text-align:left}
  .hero-inner{grid-template-columns:1fr;gap:32px}
  .hero-card{justify-self:start;width:min(100%, 280px)}
  .hero-pills{justify-content:flex-start;margin-top:24px}
  .about-grid{grid-template-columns:1fr}
  .why-grid{grid-template-columns:1fr;gap:32px}
  .process-grid{grid-template-columns:repeat(2,1fr)}
  .process-card{border-left:0;border-top:1px solid var(--line)}
  .process-card:nth-child(2){border-left:1px solid var(--line)}
  .projects .header-grid{grid-template-columns:1fr;gap:24px}
  /* Slides use absolutely positioned fades; min-height must fit quote + author or copy overlaps .testi-nav when stacked. */
  .testi-quote{
    grid-template-columns:1fr;
    gap:18px;
    align-items:start;
  }
  .testi-slides{min-height:clamp(360px,58vh,420px)}
  .testi-card .testi-nav{
    justify-self:stretch;
    justify-content:center;
    flex-wrap:wrap;
    row-gap:10px;
    padding-top:4px;
  }
  .faq-head{align-items:flex-start;text-align:left;margin:0 0 28px}
  .faq-head .h-section{text-align:left}
  .faq-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .testi .head-row, .ft-cta{grid-template-columns:1fr;gap:24px}
  .testi .head-row .right{align-items:flex-start;text-align:left}
  .testi .head-row .right p{text-align:left}
  .section-head{grid-template-columns:1fr;gap:14px}
  .section-head .right{align-items:flex-start;text-align:left}
  /* Single column: let image and copy span the full wrap width (no 280px / 42ch gutters). */
  .svc-row{grid-template-columns:1fr;gap:20px;padding:22px 0}
  .svc-row .svc-img{max-width:none;width:100%}
  .svc-row p{max-width:min(70ch,100%)}
  .svc-arrow{justify-self:end;width:64px;height:64px}
  .services-intro__title{max-width:none}
  .services-intro__lede{max-width:none}
  .ft-bottom, .ft-copy{grid-template-columns:1fr;gap:14px}
  .nav-toggle{display:inline-flex}
  /* Primary nav quote CTA is desktop-only — at this breakpoint the bar is logo + menu only. */
  .nav-inner > .nav-cta{display:none}
  .logo{margin-right:auto}
  .nav-links{
    position:absolute;
    top:calc(100% + 10px);
    left:0;
    right:0;
    flex-direction:column;
    align-items:stretch;
    gap:2px;
    padding:10px;
    border-radius:18px;
    background:rgba(18,34,24,0.96);
    backdrop-filter:blur(16px);
    -webkit-backdrop-filter:blur(16px);
    border:1px solid rgba(255,255,255,0.12);
    box-shadow:0 22px 50px rgba(0,0,0,0.32);
    opacity:0;
    visibility:hidden;
    transform:translateY(-10px);
    pointer-events:none;
    transition:
      opacity .24s ease,
      transform .3s cubic-bezier(.2,.9,.2,1),
      visibility 0s linear .3s;
    z-index:50;
  }
  .nav.is-open .nav-links{
    opacity:1;
    visibility:visible;
    transform:translateY(0);
    pointer-events:auto;
    transition-delay:0s, 0s, 0s;
  }
  .nav-links > a{
    justify-content:flex-start;
    border-radius:12px;
  }
  .svc-mnu__trigger{
    width:100%;
    justify-content:flex-start;
    border-radius:12px;
    padding:10px 12px;
  }
  .svc-mnu__link{
    padding:9px 12px;
    font-size:14px;
    font-weight:600;
    letter-spacing:0.06em;
    text-transform:uppercase;
  }
  .vid-overlay{padding:32px}
  .vid-top__title{font-size:24px}
}

@media (max-width: 960px){
  .service-avail__head{grid-template-columns:1fr;align-items:stretch}
  .service-avail__lede{justify-self:start;text-align:left;max-width:none}
  .service-avail__grid{grid-template-columns:1fr}
  .service-avail__card{border-left:0;border-top:1px solid var(--line);min-height:auto}
  .service-avail__card:first-child{border-top:0}
  .service-avail--grid .service-avail__grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:16px;
  }
  .service-avail--grid .service-avail__card{
    border-top:0;
    transform:none;
  }
  .service-avail--grid .service-avail__card:first-child{border-top:0}
  .page-service-detail__grid{grid-template-columns:1fr;gap:40px}
  .page-service-detail__lead{grid-template-columns:1fr;gap:36px}
  .service-enquiry--lead{position:static}
  .service-enquiry{position:static}
  .page-service-features__head{grid-template-columns:1fr;gap:18px;align-items:stretch}
  .page-service-features__title{justify-self:stretch;text-align:left;max-width:none}
  .page-service-features__cta{justify-self:start}
  .page-service-features__lede{text-align:left;margin-left:0;margin-right:0}
  .page-service-features__grid{grid-template-columns:1fr}
  .page-service-features__img{max-width:none;aspect-ratio:16/11}
  .why-head{grid-template-columns:1fr;gap:16px;align-items:stretch}
  .why-head__title{justify-self:stretch;text-align:left;max-width:none}
  .why-head__cta{justify-self:start}
}

@media (max-width: 700px){
  .wrap{padding:0 20px}
  section{padding:64px 0}
  .page-news__body{padding:64px 0}
  .page-news__head{grid-template-columns:1fr;align-items:stretch}
  .page-news__lede{justify-self:start;text-align:left;max-width:none}
  .page-news__grid{grid-template-columns:1fr}
  .faq-cards{grid-template-columns:1fr;gap:18px}
  .page-service .page-service-detail{padding:64px 0}
  .page-service-features{padding:64px 0}
  .service-enquiry__grid{grid-template-columns:1fr}
  /* Homepage hero: fill the band and pin headline + cards to the bottom (reduces empty space low in frame). */
  .hero{
    display:flex;
    flex-direction:column;
  }
  .hero-inner{
    flex:1 1 auto;
    align-content:end;
    min-height:0;
    padding-top:clamp(96px,18vw,124px);
    padding-bottom:clamp(28px,6vh,52px);
  }
  /* Maintain bottom alignment with tighter insets on phones. */
  .page-services-hero__inner,
  .page-service-hero__inner{
    padding-top:clamp(88px, 18vw, 116px);
    padding-bottom:clamp(14px, 3vh, 28px);
  }
  .page-services-hero__lede,
  .page-service-hero__lede{
    font-size:18px;
  }
  .process-grid{grid-template-columns:1fr}
  .process-card{border-left:0 !important}
  .about-meta{grid-template-columns:1fr}
  .testi-quote{left:24px;right:24px;bottom:24px}
  .testi-slides{min-height:clamp(380px,55vh,400px)}
  .ft-cta{padding-bottom:40px}
  .nav{padding:18px 0}
  .page-service-next-steps .wrap{border-radius:0}
  /* Match square corners with full-bleed band (side gutters only when panel is rounded) */
  .page-service-next-steps{padding-left:0;padding-right:0}
}

@media (max-width:640px){
  .service-avail--grid .service-avail__grid{
    grid-template-columns:1fr;
  }
}

@media (prefers-reduced-motion: reduce){
  .svc-mnu__panel,
  .nav-links,
  .svc-mnu__chev svg,
  .nav-toggle__bar{
    transition-duration:0.01ms !important;
  }
  .service-avail--grid .service-avail__card,
  .service-avail--grid .service-avail__card:hover{transform:none;transition:none}
}

/* ─── Survey season widgets (service heroes) ─── */
.survey-season-widgets-band{
  background:var(--bg-light);
  border-bottom:1px solid var(--line-soft);
  padding:clamp(20px,3vw,28px) 0;
}
.survey-season-widgets-inner{
  display:flex;
  flex-direction:column;
  gap:clamp(16px,2vw,22px);
  width:100%;
  max-width:none;
}

.ssw{
  --peak:#0f5c3a;
  --active:#1d9e75;
  --off:#e8e7e0;
  --today-line:#c0392b;
  --text-primary:#1a1a18;
  --text-secondary:#888780;
  --text-muted:#b4b2a9;
  --ssw-bg:#ffffff;
  --border:#e8e7e0;
  --radius:8px;
  font-family:var(--sans);
  background:var(--ssw-bg);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:1.25rem 1.5rem 1rem;
  box-sizing:border-box;
  width:100%;
}

.ssw-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:clamp(1.25rem,2.5vw,1.75rem);
  flex-wrap:wrap;
}

.ssw-title{
  font-size:0.8125rem;
  font-weight:500;
  color:var(--text-primary);
  margin:0;
}

.ssw-status{
  font-size:0.7rem;
  font-weight:500;
  padding:3px 10px;
  border-radius:20px;
  white-space:nowrap;
  flex-shrink:0;
}
.ssw-status.optimal{background:#e1f5ee;color:#0f5c3a}
.ssw-status.active{background:#d1fae5;color:#1d9e75}
.ssw-status.upcoming{background:#fef3c7;color:#92400e}
.ssw-status.closed{background:#f3f4f6;color:#6b7280}

.ssw-track-wrap{
  --ssw-today-pad:clamp(1.5rem,2.8vw,2rem);
  position:relative;
  margin-bottom:0.375rem;
  /* Band above the bar for the “Today” label (clear of title + month row) */
  padding-top:var(--ssw-today-pad);
}

.ssw-track{
  display:flex;
  width:100%;
  height:20px;
  border-radius:4px;
  overflow:hidden;
}

.ssw-segment{flex:1}
.ssw-segment.peak{background:var(--peak)}
.ssw-segment.active{background:var(--active);opacity:0.75}
.ssw-segment.off{background:var(--off)}

.ssw-needle{
  position:absolute;
  top:calc(var(--ssw-today-pad) - 4px);
  bottom:auto;
  height:28px;
  width:2px;
  background:var(--today-line);
  border-radius:2px;
  transform:translateX(-50%);
  pointer-events:none;
}

.ssw-needle::before{
  content:"";
  position:absolute;
  top:-1px;
  left:50%;
  transform:translateX(-50%);
  width:8px;
  height:8px;
  background:var(--today-line);
  border-radius:50%;
}

.ssw-needle-label{
  position:absolute;
  bottom:100%;
  left:50%;
  top:auto;
  margin-bottom:3px;
  transform:translateX(-50%);
  font-family:"DM Mono", ui-monospace, monospace;
  font-size:0.6rem;
  font-weight:500;
  color:var(--today-line);
  white-space:nowrap;
  background:var(--ssw-bg);
  padding:0 4px;
  line-height:1.2;
}

.ssw-months{display:flex;width:100%}

.ssw-month-label{
  flex:1;
  font-family:"DM Mono", ui-monospace, monospace;
  font-size:0.575rem;
  color:var(--text-muted);
  text-align:center;
  letter-spacing:0.02em;
  padding-top:4px;
}

.ssw-bottom{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-top:0.75rem;
  flex-wrap:wrap;
  gap:0.5rem;
}

.ssw-message{
  font-size:0.75rem;
  color:var(--text-secondary);
  line-height:1.4;
  margin:0;
  flex:1;
  min-width:min(100%,12rem);
}

.ssw-message strong{color:var(--text-primary);font-weight:500}

.ssw-legend{display:flex;gap:12px;flex-shrink:0}

.ssw-legend-item{
  display:flex;
  align-items:center;
  gap:5px;
  font-size:0.65rem;
  color:var(--text-secondary);
}

.ssw-legend-swatch{width:20px;height:8px;border-radius:2px}
.ssw-legend-swatch.peak{background:var(--peak)}
.ssw-legend-swatch.active{background:var(--active);opacity:0.75}
.ssw-legend-swatch.off{background:var(--off)}

@media (max-width:400px){
  .ssw{padding:1rem}
  .ssw-month-label{font-size:0.5rem}
  .ssw-legend{display:none}
}

@media (prefers-color-scheme:dark){
  .ssw{
    --peak:#5dcaa5;
    --active:#1d9e75;
    --off:#2a2a27;
    --today-line:#e57373;
    --text-primary:#f0efe8;
    --text-secondary:#888780;
    --text-muted:#4a4a47;
    --ssw-bg:#252522;
    --border:#2e2e2b;
  }
  .ssw-status.optimal{background:#0f3d29;color:#5dcaa5}
  .ssw-status.active{background:#0f3d29;color:#1d9e75}
  .ssw-status.upcoming{background:#3d2e00;color:#fbbf24}
  .ssw-status.closed{background:#2a2a27;color:#6b7280}
}




