/* ==========================================================================
   Lawn Wizard — lawnwizardindy.com
   ========================================================================== */

:root{
  --ink:        #10231a;
  --ink-soft:   #3d5348;
  --ink-faint:  #6b8378;

  --forest:     #0e2416;
  --forest-2:   #143020;
  --forest-3:   #1c4029;

  --grass:      #4e9c3a;
  --grass-dark: #3d7d2d;
  --lime:       #b6dc6a;

  --cream:      #f6f4ec;
  --cream-2:    #efece0;
  --paper:      #ffffff;
  --line:       #dfdccd;

  --wrap: 1180px;
  --r-sm: 10px;
  --r:    16px;
  --r-lg: 24px;

  --shadow-sm: 0 1px 2px rgba(16,35,26,.06), 0 4px 12px rgba(16,35,26,.05);
  --shadow:    0 2px 4px rgba(16,35,26,.05), 0 18px 40px -12px rgba(16,35,26,.18);
  --shadow-lg: 0 4px 8px rgba(16,35,26,.05), 0 40px 80px -20px rgba(16,35,26,.30);

  --ease: cubic-bezier(.2,.7,.3,1);
}

*,*::before,*::after{ box-sizing:border-box; }

html{ scroll-behavior:smooth; scroll-padding-top:88px; -webkit-text-size-adjust:100%; }
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
}

body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  font-size:17px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img,svg{ max-width:100%; display:block; }

h1,h2,h3,h4{
  font-family:"Fraunces", Georgia, "Times New Roman", serif;
  font-weight:600;
  line-height:1.04;
  letter-spacing:-.018em;
  margin:0;
  text-wrap:balance;
}

p{ margin:0; }

a{ color:inherit; }

.wrap{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:24px; }

.skip{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--forest); color:var(--cream);
  padding:12px 20px; border-radius:0 0 var(--r-sm) 0; font-weight:600;
}
.skip:focus{ left:0; }

:focus-visible{ outline:2.5px solid var(--grass); outline-offset:3px; border-radius:4px; }

/* ---------- Buttons ---------- */
.btn{
  --btn-bg:var(--grass);
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:16px 28px;
  border:0; border-radius:999px;
  font:600 16px/1 "Inter",sans-serif; letter-spacing:-.01em;
  text-decoration:none; cursor:pointer; white-space:nowrap;
  transition:transform .25s var(--ease), box-shadow .25s var(--ease), background-color .2s var(--ease), color .2s var(--ease);
  will-change:transform;
}
.btn svg{ width:19px; height:19px; flex:none; }
.btn:hover{ transform:translateY(-2px); }
.btn:active{ transform:translateY(0); }

.btn-primary{
  background:var(--grass); color:#fff;
  box-shadow:0 2px 0 var(--grass-dark), 0 12px 24px -8px rgba(78,156,58,.55);
}
.btn-primary:hover{
  background:#57ab41;
  box-shadow:0 2px 0 var(--grass-dark), 0 18px 32px -8px rgba(78,156,58,.6);
}

.btn-ghost{
  background:transparent; color:var(--cream);
  border:1.5px solid rgba(246,244,236,.32);
}
.btn-ghost:hover{ background:rgba(246,244,236,.1); border-color:rgba(246,244,236,.5); }

.btn-sm{ padding:12px 20px; font-size:15px; }
.btn-block{ width:100%; padding-block:18px; }

/* ---------- Promo bar ---------- */
.promo[hidden]{ display:none; }
.promo{
  position:relative; z-index:101;
  background:linear-gradient(92deg,var(--grass-dark),var(--grass) 55%,#5cb043);
  color:#fff;
}
.promo-inner{
  display:flex; align-items:center; justify-content:center; gap:18px;
  min-height:48px; padding-block:10px;
}
.promo p{ font-size:14.5px; line-height:1.45; }
.promo strong{ font-weight:700; }
.promo-deal{ color:#ecf9db; }
.promo-cta{
  flex:none;
  padding:8px 16px; border-radius:999px;
  background:rgba(255,255,255,.95); color:var(--grass-dark);
  font-size:13.5px; font-weight:700; text-decoration:none; white-space:nowrap;
  transition:transform .2s var(--ease), background-color .2s var(--ease);
}
.promo-cta:hover{ background:#fff; transform:translateY(-1px); }
.promo-x{
  position:absolute; right:18px; top:50%; transform:translateY(-50%);
  width:30px; height:30px; padding:0 0 3px;
  display:grid; place-items:center;
  background:transparent; border:0; border-radius:50%;
  color:rgba(255,255,255,.75); font-size:22px; line-height:1; cursor:pointer;
  transition:background-color .2s var(--ease), color .2s var(--ease);
}
.promo-x:hover{ background:rgba(255,255,255,.18); color:#fff; }

/* ---------- Header ---------- */
.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(14,36,22,.92);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  color:var(--cream);
  border-bottom:1px solid rgba(246,244,236,.1);
}
.header-inner{
  display:flex; align-items:center; gap:32px;
  min-height:76px;
}

.brand{ display:flex; align-items:center; gap:12px; text-decoration:none; margin-right:auto; }
.brand-mark{
  width:46px; height:46px; flex:none;
  border-radius:50%; object-fit:cover;
  border:2px solid rgba(182,220,106,.5);
  box-shadow:0 4px 14px -4px rgba(0,0,0,.5);
  transition:border-color .25s var(--ease), transform .25s var(--ease);
}
.brand:hover .brand-mark{ border-color:var(--lime); transform:scale(1.04); }
.brand-mark-lg{ width:56px; height:56px; }
.brand-text{ display:flex; flex-direction:column; line-height:1.15; }
.brand-text strong{
  font-family:"Fraunces",serif; font-size:20px; font-weight:600; letter-spacing:-.02em;
}
.brand-text em{
  font-style:normal; font-size:11px; letter-spacing:.13em; text-transform:uppercase;
  color:rgba(246,244,236,.55);
}

.nav{ display:flex; gap:30px; }
.nav a{
  position:relative; white-space:nowrap;
  font-size:15px; font-weight:500; text-decoration:none;
  color:rgba(246,244,236,.78);
  transition:color .2s var(--ease);
}
.nav a::after{
  content:""; position:absolute; left:0; bottom:-6px;
  width:100%; height:1.5px; background:var(--lime);
  transform:scaleX(0); transform-origin:right;
  transition:transform .3s var(--ease);
}
.nav a:hover{ color:var(--cream); }
.nav a:hover::after{ transform:scaleX(1); transform-origin:left; }

.header-cta{ display:flex; align-items:center; gap:18px; }
.phone{
  font-weight:600; font-size:15px; text-decoration:none;
  color:var(--lime); white-space:nowrap;
}

.menu-toggle{
  display:none;
  width:44px; height:44px; padding:0;
  background:transparent; border:1px solid rgba(246,244,236,.2); border-radius:10px;
  cursor:pointer;
}
.menu-toggle span{
  display:block; width:18px; height:1.75px; margin:3.5px auto;
  background:var(--cream); border-radius:2px;
  transition:transform .3s var(--ease), opacity .2s var(--ease);
}
.menu-toggle[aria-expanded="true"] span:nth-child(1){ transform:translateY(5.25px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.menu-toggle[aria-expanded="true"] span:nth-child(3){ transform:translateY(-5.25px) rotate(-45deg); }

.mobile-nav[hidden]{ display:none; }
.mobile-nav{
  display:flex; flex-direction:column; gap:4px;
  padding:12px 24px 26px;
  border-top:1px solid rgba(246,244,236,.1);
}
.mobile-nav a{
  padding:13px 0; text-decoration:none; font-size:17px; font-weight:500;
  color:rgba(246,244,236,.85);
  border-bottom:1px solid rgba(246,244,236,.07);
}
.mobile-nav .btn{ margin-top:14px; border-bottom:0; color:#fff; }

/* ---------- Hero ---------- */
.hero{
  position:relative;
  background:var(--forest);
  color:var(--cream);
  overflow:hidden;
}
.hero-bg{
  position:absolute; inset:0;
  background:
    radial-gradient(1000px 560px at 82% -10%, rgba(88,166,60,.28), transparent 58%),
    radial-gradient(760px 500px at -4% 106%, rgba(182,220,106,.10), transparent 60%),
    radial-gradient(1500px 1000px at 50% 128%, rgba(0,0,0,.45), transparent 62%),
    linear-gradient(172deg, #143017 0%, #0d2415 56%, #081a0f 100%);
}
/* mower stripes — barely-there, wide, angled */
.hero-bg::before{
  content:"";
  position:absolute; inset:-25%;
  background:repeating-linear-gradient(
    104deg,
    rgba(246,244,236,.016) 0 110px,
    transparent 110px 220px
  );
  mask-image:radial-gradient(75% 70% at 76% 10%, #000, transparent 70%);
  -webkit-mask-image:radial-gradient(75% 70% at 76% 10%, #000, transparent 70%);
}
/* fine grain for depth */
.hero-bg::after{
  content:"";
  position:absolute; inset:0;
  opacity:.5; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.32'/%3E%3C/svg%3E");
}

.hero-inner{
  position:relative;
  display:grid; grid-template-columns:1.35fr .78fr; gap:64px; align-items:center;
  padding-block:96px 108px;
}

.eyebrow{
  font-size:12px; font-weight:600; letter-spacing:.18em; text-transform:uppercase;
  color:var(--lime);
  margin-bottom:22px;
}

.hero h1{
  font-size:clamp(48px, 6.6vw, 88px);
  font-weight:600;
  letter-spacing:-.032em;
  margin-bottom:26px;
}
.hero h1 .hl{
  color:var(--lime);
  font-style:italic;
  font-weight:400;
}

.lede{
  font-size:clamp(17px, 1.35vw, 19.5px);
  line-height:1.65;
  color:rgba(246,244,236,.76);
  max-width:52ch;
  margin-bottom:38px;
}

.hero-actions{ display:flex; flex-wrap:wrap; gap:14px; margin-bottom:56px; }

.hero-proof{
  display:flex; flex-wrap:wrap; gap:44px;
  list-style:none; margin:0; padding:30px 0 0;
  border-top:1px solid rgba(246,244,236,.14);
}
.hero-proof li{ display:flex; flex-direction:column; gap:3px; }
.hero-proof strong{
  font-family:"Fraunces",serif; font-size:34px; font-weight:600; letter-spacing:-.02em;
  color:var(--cream); line-height:1;
}
.hero-proof span{ font-size:13.5px; color:rgba(246,244,236,.58); }

.hero-right{ display:flex; flex-direction:column; align-items:stretch; align-self:start; padding-top:6px; }

/* the wizard leans over the top of the card and points into it */
.hero-wizard{
  display:block;
  width:132%;
  margin:-34px -16% -52px;
  position:relative; z-index:2;
  pointer-events:none;
  filter:drop-shadow(0 22px 26px rgba(0,0,0,.42));
  animation:wizardIn 1s var(--ease) both .15s;
}
.hero-wizard img{ width:100%; height:auto; }
@keyframes wizardIn{
  from{ opacity:0; transform:translateY(-26px) rotate(-1.5deg); }
  to  { opacity:1; transform:none; }
}
@media (prefers-reduced-motion:reduce){ .hero-wizard{ animation:none; } }

.hero-card{
  position:relative;
  background:rgba(246,244,236,.055);
  border:1px solid rgba(246,244,236,.13);
  border-radius:var(--r-lg);
  padding:28px;
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  box-shadow:var(--shadow-lg);
}
.hero-card-top{
  display:flex; align-items:center; gap:16px;
  padding-bottom:22px; margin-bottom:22px;
  border-bottom:1px solid rgba(246,244,236,.13);
}
.hero-card-avatar{
  width:66px; height:66px; flex:none;
  border-radius:50%; object-fit:cover;
  border:2px solid rgba(182,220,106,.45);
  box-shadow:0 6px 18px -6px rgba(0,0,0,.5);
}
.hero-card-name{
  font-family:"Fraunces",serif; font-size:21px; font-weight:600;
  letter-spacing:-.015em; line-height:1.2;
}
.hero-card-role{
  font-size:12px; font-weight:500; letter-spacing:.13em; text-transform:uppercase;
  color:rgba(182,220,106,.85); margin-top:4px;
}
.hero-card-links{ display:flex; flex-direction:column; gap:9px; }
.hero-card-links a{
  font-size:14.5px; font-weight:600; color:var(--lime);
  text-decoration:none; word-break:break-word;
  transition:color .2s var(--ease);
}
.hero-card-links a:hover{ color:#cbe88a; }

/* ticker */
.ticker{
  position:relative;
  border-top:1px solid rgba(246,244,236,.12);
  background:rgba(0,0,0,.16);
  overflow:hidden;
  padding-block:16px;
  mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.ticker-track{
  display:flex; align-items:center; gap:26px; width:max-content;
  animation:ticker 46s linear infinite;
}
.ticker-track span{
  font-size:13px; font-weight:500; letter-spacing:.11em; text-transform:uppercase;
  color:rgba(246,244,236,.5); white-space:nowrap;
}
.ticker-track i{ width:5px; height:5px; border-radius:50%; background:var(--grass); flex:none; }
@keyframes ticker{ to{ transform:translateX(-50%); } }

/* ---------- Sections ---------- */
.section{ padding-block:clamp(76px,9vw,124px); }
.section-tint{ background:var(--cream-2); }

.section-dark{
  position:relative; overflow:hidden;
  color:var(--cream);
  background:linear-gradient(168deg, #10291a 0%, var(--forest) 55%, #0a1d11 100%);
}
.section-dark::before{
  content:"";
  position:absolute; inset:0;
  background:radial-gradient(900px 520px at 88% 0%, rgba(88,166,60,.20), transparent 58%);
  pointer-events:none;
}
.section-dark > .wrap{ position:relative; z-index:1; }
.section-dark .section-sub{ color:rgba(246,244,236,.72); }

.section-head{ max-width:640px; margin-bottom:62px; }
.section-head.center{ margin-inline:auto; text-align:center; }
.section-head h2, .areas-grid h2, .quote-copy h2{
  font-size:clamp(34px,4.2vw,54px);
  letter-spacing:-.026em;
  margin-bottom:20px;
}
.section-sub{
  font-size:18px; line-height:1.66; color:var(--ink-soft);
  max-width:56ch;
}
.section-head.center .section-sub{ margin-inline:auto; }

/* ---------- Services ---------- */
.services{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:16px;
}
.svc{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
  padding:28px 26px 30px;
  box-shadow:var(--shadow-sm);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
}
.svc:hover{
  transform:translateY(-5px);
  box-shadow:var(--shadow);
  border-color:#c9d8bd;
}
.svc-accent{
  background:linear-gradient(155deg,#f4f8ee,#e8f1dc);
  border-color:#cfe0bc;
}
.svc-accent .svc-icon{ background:rgba(78,156,58,.16); }
.svc-link{
  display:inline-flex; align-items:center; gap:7px;
  margin-top:18px;
  font-size:14.5px; font-weight:600; color:var(--grass-dark);
  text-decoration:none;
}
.svc-link::after{
  content:"\2192";
  transition:transform .25s var(--ease);
}
.svc-link:hover{ text-decoration:underline; text-underline-offset:3px; }
.svc-link:hover::after{ transform:translateX(4px); }
.svc-icon{
  width:52px; height:52px; margin-bottom:24px;
  display:grid; place-items:center;
  border-radius:14px;
  background:rgba(78,156,58,.1);
  color:var(--grass-dark);
}
.svc-icon svg{ width:28px; height:28px; }
.svc h3{
  font-size:20px; letter-spacing:-.018em;
  margin-bottom:10px;
}
.svc p{ font-size:15.5px; line-height:1.58; color:var(--ink-soft); }


/* ---------- Work / before & after ---------- */

/* every photo trigger is a button — strip the chrome */
.lb{
  display:block; width:100%; padding:0; margin:0;
  border:0; background:none; cursor:zoom-in;
  position:relative; overflow:hidden;
  border-radius:var(--r);
  line-height:0;
  -webkit-tap-highlight-color:transparent;
}
.lb img{
  width:100%; height:100%; object-fit:cover;
  transition:transform .55s var(--ease), filter .4s var(--ease);
}
.lb:hover img{ transform:scale(1.035); }

/* featured split shot */
.split-feature{
  display:grid; grid-template-columns:1fr 1fr; gap:52px; align-items:center;
  margin:0 0 72px;
  padding-bottom:72px;
  border-bottom:1px solid var(--line);
}
.split-photo{
  border-radius:var(--r-lg);
  box-shadow:var(--shadow);
  aspect-ratio:4/5;
}
.split-tag{
  position:absolute; top:20px;
  padding:7px 14px; border-radius:999px;
  font:600 12px/1 "Inter",sans-serif; letter-spacing:.09em; text-transform:uppercase;
  backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  pointer-events:none;
}
.split-tag-l{ left:20px; background:rgba(78,156,58,.92); color:#fff; }
.split-tag-r{ right:20px; background:rgba(16,35,26,.65); color:rgba(255,255,255,.9); }

.split-feature figcaption h3{
  font-size:clamp(30px,3.4vw,42px); letter-spacing:-.024em;
  margin:0 0 20px;
}
.split-feature figcaption p{
  font-size:17.5px; line-height:1.66; color:var(--ink-soft);
  max-width:44ch;
}
.split-note{
  margin-top:20px !important;
  font-size:13.5px !important; color:var(--ink-faint) !important;
}

/* matched before/after pairs */
.ba-set{ display:grid; gap:52px; }
.ba > h3{
  font-size:22px; letter-spacing:-.018em;
  margin-bottom:16px;
}
.ba-pair{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.ba-pair figure{ margin:0; }
.ba-pair .lb{
  aspect-ratio:4/3;
  box-shadow:var(--shadow-sm);
}
.ba-tag{
  position:absolute; left:14px; top:14px;
  padding:7px 15px; border-radius:999px;
  font:600 12px/1 "Inter",sans-serif; letter-spacing:.1em; text-transform:uppercase;
  background:rgba(16,35,26,.72); color:rgba(255,255,255,.92);
  backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  pointer-events:none;
}
.ba-tag-after{ background:rgba(78,156,58,.94); color:#fff; }

/* strip */
.strip-head{
  font-size:12px; font-weight:600; letter-spacing:.18em; text-transform:uppercase;
  font-family:"Inter",sans-serif; color:var(--ink-faint);
  margin:64px 0 20px;
  padding-top:28px;
  border-top:1px solid var(--line);
}
.work-strip{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.work-strip .lb{ aspect-ratio:1/1; box-shadow:var(--shadow-sm); }

/* ---------- Lightbox ---------- */
.lightbox[hidden]{ display:none; }
.lightbox{
  position:fixed; inset:0; z-index:150;
  display:grid; place-items:center;
  padding:clamp(16px,4vw,56px);
  background:rgba(10,20,14,.94);
  backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  animation:lbIn .25s var(--ease);
}
@keyframes lbIn{ from{ opacity:0; } }

.lb-stage{ margin:0; max-width:100%; max-height:100%; text-align:center; }
.lb-stage img{
  max-width:100%; max-height:calc(100vh - 92px);
  width:auto; height:auto;
  border-radius:var(--r);
  box-shadow:0 40px 90px -20px rgba(0,0,0,.7);
  margin-inline:auto;
}

.lb-close, .lb-nav{
  position:absolute; z-index:2;
  display:grid; place-items:center;
  background:rgba(246,244,236,.1);
  border:1px solid rgba(246,244,236,.22);
  color:var(--cream);
  border-radius:50%; cursor:pointer;
  transition:background-color .2s var(--ease), transform .2s var(--ease);
  line-height:1;
}
.lb-close:hover, .lb-nav:hover{ background:rgba(246,244,236,.2); }
.lb-close{ top:20px; right:20px; width:46px; height:46px; font-size:26px; padding-bottom:3px; }
.lb-nav{ top:50%; margin-top:-26px; width:52px; height:52px; font-size:30px; padding-bottom:4px; }
.lb-prev{ left:20px; }
.lb-next{ right:20px; }

/* ---------- Reviews ---------- */
.reviews{
  display:grid; grid-template-columns:repeat(3,1fr); gap:18px;
}
.review{
  margin:0;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
  padding:32px 30px;
  display:flex; flex-direction:column;
  box-shadow:var(--shadow-sm);
}
.review-feature{
  grid-column:1 / -1;
  position:relative;
  padding:46px 52px 42px;
  background:linear-gradient(150deg,#fbfaf4,#f0ecdc);
  border-color:#d5d2c0;
}
.review-feature::before{
  content:"";
  position:absolute; left:0; top:38px; bottom:38px;
  width:3px; border-radius:0 3px 3px 0;
  background:var(--grass);
}
.sprite{ position:absolute; width:0; height:0; overflow:hidden; }
.stars{ display:flex; gap:4px; margin-bottom:18px; }
.stars svg{
  width:17px; height:17px;
  fill:#e0a93c;
  filter:drop-shadow(0 1px 1px rgba(160,110,20,.25));
}
.review blockquote{
  margin:0 0 22px;
  font-family:"Fraunces",serif;
  font-size:18px; line-height:1.55; letter-spacing:-.012em;
  color:var(--ink);
}
.review-feature blockquote{
  font-size:clamp(20px,2.1vw,26px);
  line-height:1.48;
  max-width:64ch;
}
.review figcaption{
  margin-top:auto;
  font-size:14px; font-weight:600; color:var(--ink-faint);
  letter-spacing:.01em;
}

/* ---------- Areas ---------- */
.areas-grid{ display:grid; grid-template-columns:.9fr 1.1fr; gap:72px; align-items:center; }
.areas-address{
  margin-top:26px; font-size:16px; line-height:1.7; color:var(--ink-soft);
  padding-left:18px; border-left:2px solid var(--grass);
}
.areas{
  display:grid; grid-template-columns:repeat(2,1fr); gap:0;
  list-style:none; margin:0; padding:0;
  border-top:1px solid var(--line);
}
.areas li{
  position:relative;
  padding:20px 8px 20px 30px;
  border-bottom:1px solid var(--line);
  font-size:17px; font-weight:500;
}
.areas li:nth-child(odd){ border-right:1px solid var(--line); }
/* odd count — let the last one run the full width instead of leaving a gap */
.areas li:last-child:nth-child(odd){ grid-column:1 / -1; border-right:0; }
.areas li::before{
  content:""; position:absolute; left:6px; top:50%;
  width:7px; height:7px; margin-top:-3.5px;
  border-radius:50%; background:var(--grass);
}

/* ---------- Quote ---------- */
.quote-grid{ display:grid; grid-template-columns:.95fr 1.05fr; gap:72px; align-items:start; }

.contact-cards{ display:flex; flex-direction:column; gap:12px; margin-top:38px; }
.contact-card{
  display:flex; flex-direction:column; gap:4px;
  padding:20px 24px;
  background:rgba(246,244,236,.05);
  border:1px solid rgba(246,244,236,.13);
  border-radius:var(--r);
  text-decoration:none;
  transition:background-color .25s var(--ease), border-color .25s var(--ease);
}
a.contact-card:hover{ background:rgba(246,244,236,.1); border-color:rgba(182,220,106,.4); }
.contact-label{
  font-size:11.5px; font-weight:600; letter-spacing:.15em; text-transform:uppercase;
  color:rgba(246,244,236,.5);
}
.contact-value{ font-size:18px; font-weight:600; letter-spacing:-.01em; word-break:break-word; }

.quote-form{
  background:var(--paper);
  border-radius:var(--r-lg);
  padding:36px;
  color:var(--ink);
  box-shadow:var(--shadow-lg);
}
.hp{ position:absolute; left:-9999px; }

.field{ margin-bottom:20px; border:0; padding:0; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.field label, .field legend{
  display:block; padding:0;
  font-size:13.5px; font-weight:600; letter-spacing:.01em;
  color:var(--ink); margin-bottom:8px;
}
.opt{ font-weight:400; color:var(--ink-faint); }

.field input, .field textarea{
  width:100%;
  padding:14px 16px;
  font:400 16px/1.5 "Inter",sans-serif; color:var(--ink);
  background:#fbfaf5;
  border:1.5px solid var(--line);
  border-radius:var(--r-sm);
  transition:border-color .2s var(--ease), background-color .2s var(--ease), box-shadow .2s var(--ease);
}
.field textarea{ resize:vertical; min-height:110px; }
.field input:focus, .field textarea:focus{
  outline:none;
  border-color:var(--grass);
  background:#fff;
  box-shadow:0 0 0 4px rgba(78,156,58,.13);
}
.field input::placeholder, .field textarea::placeholder{ color:#a8b5ac; }

.chips{ display:flex; flex-wrap:wrap; gap:9px; }
.chip{ margin:0 !important; cursor:pointer; }
.chip input{ position:absolute; opacity:0; width:0; height:0; }
.chip span{
  display:inline-block;
  padding:9px 16px;
  font-size:14px; font-weight:500;
  border:1.5px solid var(--line); border-radius:999px;
  background:#fbfaf5;
  transition:all .2s var(--ease);
}
.chip:hover span{ border-color:#bccdb0; }
.chip input:checked + span{
  background:var(--grass); border-color:var(--grass); color:#fff;
}
.chip input:focus-visible + span{ outline:2.5px solid var(--grass); outline-offset:3px; }

.form-note{
  margin-top:16px; font-size:13px; line-height:1.5;
  color:var(--ink-faint); text-align:center;
}

/* ---------- Footer ---------- */
.site-footer{
  background:var(--forest-2);
  color:rgba(246,244,236,.72);
  padding-top:72px;
  font-size:15px;
}
.footer-inner{
  display:grid; grid-template-columns:1.6fr 1fr 1fr; gap:56px;
  padding-bottom:56px;
}
.footer-brand{ display:flex; gap:16px; align-items:flex-start; }
.footer-brand strong{
  display:block;
  font-family:"Fraunces",serif; font-size:21px; font-weight:600;
  color:var(--cream); margin-bottom:8px;
}
.footer-brand p{ max-width:34ch; line-height:1.6; font-size:14.5px; }

.footer-col h4{
  font-size:12px; font-weight:600; letter-spacing:.15em; text-transform:uppercase;
  font-family:"Inter",sans-serif;
  color:var(--lime); margin-bottom:18px;
}
.footer-col a, .footer-col p{
  display:block; text-decoration:none; font-size:14.5px; line-height:1.55;
  margin-bottom:10px;
  transition:color .2s var(--ease);
}
.footer-col a:hover{ color:var(--cream); }

.footer-bottom{
  display:flex; flex-wrap:wrap; gap:12px 32px; justify-content:space-between;
  padding-block:26px;
  border-top:1px solid rgba(246,244,236,.1);
  font-size:13px; color:rgba(246,244,236,.45);
}

/* ---------- Mobile call bar ---------- */
.call-bar{
  display:none;
  position:fixed; left:16px; right:16px; bottom:16px; z-index:90;
  align-items:center; justify-content:center; gap:10px;
  padding:16px;
  background:var(--grass); color:#fff;
  border-radius:999px; text-decoration:none;
  font:600 16px/1 "Inter",sans-serif;
  box-shadow:0 2px 0 var(--grass-dark), 0 14px 30px -6px rgba(14,36,22,.5);
}
.call-bar svg{ width:19px; height:19px; }

/* ---------- Reveal ---------- */
.reveal{ opacity:0; transform:translateY(22px); }
.reveal.in{
  opacity:1; transform:none;
  transition:opacity .7s var(--ease), transform .7s var(--ease);
}
@media (prefers-reduced-motion:reduce){ .reveal{ opacity:1; transform:none; } }

/* ==========================================================================
   Responsive
   ========================================================================== */

@media (max-width:1080px){
  .header-inner{ gap:20px; }
  .nav{ gap:20px; }
  .nav a{ font-size:14.5px; }
  .header-cta{ gap:12px; }
  .brand-text em{ display:none; }
  .hero-inner{ grid-template-columns:1fr; gap:52px; padding-block:76px 88px; }
  .hero-right{ align-self:stretch; max-width:440px; padding-top:0; }
  .hero-wizard{ width:106%; margin:-10px -3% -44px; }
  .hero-card{ max-width:440px; }
  .areas-grid, .quote-grid{ grid-template-columns:1fr; gap:44px; }
  .services{ grid-template-columns:repeat(2,1fr); }
  .split-feature{ grid-template-columns:1fr; gap:32px; margin-bottom:56px; padding-bottom:56px; }
  .split-photo{ aspect-ratio:4/3; max-height:62vh; }
  .split-feature figcaption p{ max-width:none; }
  .reviews{ grid-template-columns:repeat(2,1fr); }
  .review-feature{ padding:38px 40px 34px; }
  .footer-inner{ grid-template-columns:1fr 1fr; gap:44px; }
  .footer-brand{ grid-column:span 2; }
}

@media (min-width:821px){
  .mobile-nav{ display:none !important; }
}

/* between the wrap hitting its max and the viewport getting roomy, the
   wizard's overhang would run past the screen edge — pull it in */
@media (min-width:1081px) and (max-width:1360px){
  .hero-wizard{ width:112%; margin-left:-6%; margin-right:-6%; }
}

@media (max-width:820px){
  .nav, .header-cta{ display:none; }
  .menu-toggle{ display:block; }
  body{ padding-bottom:88px; }
  .call-bar{ display:flex; }
}

@media (max-width:680px){
  body{ font-size:16.5px; }
  .wrap{ padding-inline:20px; }
  .section{ padding-block:64px; }
  .section-head{ margin-bottom:40px; }
  .hero h1{ font-size:clamp(40px,11vw,58px); }
  .hero-wizard{ width:100%; margin:0 0 -34px; }
  .hero-actions{ margin-bottom:42px; }
  .hero-actions .btn{ width:100%; }
  .hero-proof{ gap:26px 40px; }
  .hero-proof strong{ font-size:28px; }
  .services, .reviews{ grid-template-columns:1fr; }
  .review-feature{ padding:28px 24px; }
  .review-feature::before{ top:24px; bottom:24px; }
  .split-photo{ aspect-ratio:3/4; max-height:none; }
  .split-tag{ top:12px; font-size:11px; padding:6px 11px; }
  .split-tag-l{ left:12px; } .split-tag-r{ right:12px; }
  .ba-set{ gap:38px; }
  .ba-pair{ gap:10px; }
  .ba-tag{ left:10px; top:10px; font-size:10.5px; padding:6px 11px; }
  .work-strip{ grid-template-columns:repeat(2,1fr); gap:10px; }
  .strip-head{ margin-top:48px; }
  .lb-nav{ width:44px; height:44px; font-size:26px; }
  .lb-prev{ left:10px; } .lb-next{ right:10px; }
  .lb-close{ top:12px; right:12px; width:42px; height:42px; }
  .lb-stage img{ max-height:calc(100vh - 108px); }
  .svc{ padding:26px 24px; }
  .review-feature blockquote{ font-size:19px; }
  .areas{ grid-template-columns:1fr; }
  .areas li:nth-child(odd){ border-right:0; }
  .promo-inner{ flex-direction:column; gap:10px; padding:12px 34px; text-align:center; }
  .promo p{ font-size:13.5px; }
  .promo-deal{ display:block; }
  .promo-x{ right:8px; top:10px; transform:none; }
  .field-row{ grid-template-columns:1fr; gap:0; }
  .quote-form{ padding:26px 22px; }
  .footer-inner{ grid-template-columns:1fr; gap:36px; }
  .footer-brand{ grid-column:span 1; }
  .footer-bottom{ flex-direction:column; gap:8px; }
}
