/* generated by build.py from css/site.css + css/pages.css */
:root{
  --paper:#ECE7DA;--paper-2:#E2DCCB;--card:#F7F4EC;--white:#FCFBF7;
  --ink:#1B2A1F;--forest:#1F3A27;--forest-2:#2A4C33;--forest-3:#3E6347;
  --khaki:#B5AC86;--khaki-2:#D4CCAA;--leaf:#4F8A3A;--gold:#D9A13B;
  --muted:#58635A;--line:rgba(27,42,31,.14);--line-2:rgba(27,42,31,.24);
  --f-head:"Zilla Slab",Georgia,serif;--f-body:"Lexend",system-ui,sans-serif;
  --wrap:1220px;--r:14px;
  --sh:0 1px 2px rgba(27,42,31,.08),0 18px 40px -24px rgba(27,42,31,.45);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:16.5px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block;height:auto}
a{color:inherit}
h1,h2,h3,h4{font-family:var(--f-head);font-weight:700;line-height:1.02;margin:0;letter-spacing:-.005em}
p{margin:0}
section{position:relative}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}
.sec{padding:110px 0}
/* paper grain, like their canvas-paper posts */
.grain::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;mix-blend-mode:multiply;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%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .31 0 0 0 0 .22 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.grain>*{position:relative;z-index:1}

.eyebrow{display:inline-flex;align-items:center;gap:12px;font:600 13px var(--f-body);letter-spacing:.16em;text-transform:uppercase;color:var(--forest-3);margin:0 0 16px}
.eyebrow::before,.eyebrow::after{content:"";width:26px;height:2px;background:currentColor;border-radius:2px}
.eyebrow::after{display:none}
.center .eyebrow::after{display:block}
.h2{font-size:clamp(34px,4.4vw,58px)}
.lede{color:var(--muted);font-size:18px;max-width:620px;margin-top:18px}
.center{text-align:center}.center .lede{margin-left:auto;margin-right:auto}
.sec-head{margin-bottom:52px}
/* their signature: key words in a tilted forest box */
.boxed{display:inline-block;background:var(--forest);color:var(--paper);padding:.02em .2em .08em;transform:rotate(-1.6deg);border-radius:4px;box-shadow:0 10px 24px -14px rgba(31,58,39,.8)}
.dark .boxed{background:var(--khaki-2);color:var(--forest)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:54px;padding:0 26px;border-radius:10px;font:600 16px var(--f-body);text-decoration:none;border:2px solid transparent;cursor:pointer;transition:transform .2s ease,background .2s ease,border-color .2s ease,box-shadow .2s ease;white-space:nowrap}
.btn svg{width:19px;height:19px;flex:none}
.btn-forest{background:var(--forest);color:var(--paper);box-shadow:0 14px 30px -14px rgba(31,58,39,.85)}
.btn-forest:hover{background:var(--forest-2);transform:translateY(-1px)}
.btn-line{border-color:var(--forest);color:var(--forest);background:rgba(252,251,247,.55)}
.btn-line:hover{background:var(--forest);color:var(--paper)}
.btn-cream{background:var(--khaki-2);color:var(--forest)}
.btn-cream:hover{background:#e2dbbd;transform:translateY(-1px)}
.btn-ghost{border-color:rgba(236,231,218,.5);color:var(--paper);background:transparent}
.btn-ghost:hover{border-color:var(--paper);background:rgba(236,231,218,.08)}
.cta-row{display:flex;gap:14px;flex-wrap:wrap}
.center .cta-row{justify-content:center}

/* ---------- header ---------- */
.hdr{position:fixed;inset:0 0 auto 0;z-index:50;transition:background .3s ease,box-shadow .3s ease}
.hdr.solid{background:rgba(236,231,218,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 1px 0 var(--line)}
.hdr-in{max-width:1360px;margin:0 auto;padding:14px 24px;display:flex;align-items:center;gap:26px;transition:padding .3s ease}
.hdr.solid .hdr-in{padding:9px 24px}
.brand{display:flex;flex-direction:column;align-items:flex-start;text-decoration:none;flex:none;color:var(--forest)}
.brand img{height:50px;width:auto;transition:height .3s ease}
.hdr.solid .brand img{height:36px}
.brand span{font:700 12.5px var(--f-body);letter-spacing:.24em;text-transform:uppercase;margin-top:5px;padding-left:2px}
.nav{display:flex;align-items:center;gap:2px;margin-left:auto}
.nav>a,.dd>button{font:500 15px var(--f-body);color:var(--ink);text-decoration:none;padding:10px 13px;border-radius:8px;background:none;border:0;cursor:pointer;display:flex;align-items:center;gap:6px}
.nav>a:hover,.dd>button:hover,.dd:focus-within>button{background:rgba(31,58,39,.07)}
.dd{position:relative}
.dd>button svg{width:12px;height:12px;transition:transform .2s}
.dd:hover>button svg,.dd:focus-within>button svg{transform:rotate(180deg)}
.dd-panel{position:absolute;top:calc(100% + 8px);left:-12px;min-width:300px;background:var(--white);border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:0 30px 60px -24px rgba(27,42,31,.45);opacity:0;visibility:hidden;transform:translateY(6px);transition:all .2s ease}
.dd:hover .dd-panel,.dd:focus-within .dd-panel{opacity:1;visibility:visible;transform:none}
.dd-panel .lbl{display:block;font:600 11.5px var(--f-body);letter-spacing:.16em;text-transform:uppercase;color:var(--forest-3);padding:4px 10px 10px;border-bottom:1px solid var(--line);margin-bottom:6px}
.dd-panel a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;text-decoration:none;font-size:15px;color:var(--ink)}
.dd-panel a::before{content:"";width:6px;height:6px;border-radius:2px;background:var(--leaf);transform:rotate(45deg);flex:none}
.dd-panel a:hover{background:var(--paper)}
.dd-panel.cols{min-width:380px;display:grid;grid-template-columns:1fr 1fr;gap:0 6px}
.dd-panel.cols .lbl{grid-column:1/-1}
.hdr-cta{display:flex;align-items:center;gap:16px}
.hdr-phone{display:flex;align-items:center;gap:8px;font:600 16px var(--f-body);text-decoration:none;color:var(--forest)}
.hdr-phone svg{width:18px;height:18px;color:var(--leaf)}
.hdr-cta .btn{min-height:46px;padding:0 20px;font-size:15px}
.hdr-call,.burger{display:none;width:48px;height:48px;border-radius:10px;align-items:center;justify-content:center;border:0;cursor:pointer}
.hdr-call{background:var(--forest);color:var(--paper)}
.burger{background:rgba(31,58,39,.08);color:var(--forest)}
.hdr-call svg,.burger svg{width:22px;height:22px}
@media (max-width:1180px){.hide-md{display:none}}
@media (max-width:1040px){.nav,.hdr-cta{display:none}.hdr-call,.burger{display:flex}.hdr-call{margin-left:auto}}
body.menu-open{overflow:hidden}
.mnav{position:fixed;inset:0;z-index:60;background:var(--paper);padding:18px 22px 40px;overflow-y:auto;clip-path:inset(0 0 0 100%);transition:clip-path .4s cubic-bezier(.2,.8,.2,1),visibility 0s linear .4s;visibility:hidden}
body.menu-open .mnav{clip-path:inset(0);visibility:visible;transition:clip-path .4s cubic-bezier(.2,.8,.2,1)}
.mnav-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}
.mnav-top img{height:38px;width:auto}
.mnav details{border-bottom:1px solid var(--line)}
.mnav summary{list-style:none;display:flex;align-items:center;justify-content:space-between;padding:16px 4px;font:700 22px var(--f-head);cursor:pointer;color:var(--forest)}
.mnav summary::-webkit-details-marker{display:none}
.mnav summary em{font:500 13px var(--f-body);color:var(--forest-3);font-style:normal;margin-left:10px}
.mnav summary svg{width:16px;height:16px;transition:transform .2s}
.mnav details[open] summary svg{transform:rotate(180deg)}
.mnav details div{display:grid;gap:2px;padding:0 4px 14px}
.mnav details a{padding:8px 10px;border-radius:8px;text-decoration:none;font-size:16px}
.mnav>a{display:block;padding:16px 4px;border-bottom:1px solid var(--line);font:700 22px var(--f-head);text-decoration:none;color:var(--forest)}
.mnav .cta-row{margin-top:26px;flex-direction:column}
.mnav .cta-row .btn{width:100%}

/* ---------- hero ---------- */
.hero{min-height:100vh;min-height:100svh;display:flex;align-items:center;overflow:hidden;padding:150px 0 100px;isolation:isolate}
.hero-media{position:absolute;inset:0;z-index:-2;overflow:hidden}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:50% 45%;animation:kb 28s ease-out forwards;transform-origin:68% 50%}
@keyframes kb{from{transform:scale(1.02)}to{transform:scale(1.11)}}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;background:
  linear-gradient(90deg,rgba(236,231,218,.97) 0%,rgba(236,231,218,.94) 33%,rgba(236,231,218,.74) 47%,rgba(236,231,218,.18) 64%,rgba(236,231,218,0) 76%),
  linear-gradient(180deg,rgba(236,231,218,.7) 0%,rgba(236,231,218,0) 16%,rgba(236,231,218,0) 80%,var(--paper) 100%)}
.hero>.wrap{width:100%;position:relative}
.hero-in{max-width:600px}
.hero h1{font-size:clamp(56px,7.4vw,104px);line-height:.94;color:var(--forest)}
.hero h1 .boxed{margin-top:.08em;padding:.04em .2em .1em}
.hero .tagline{margin-top:26px;font:600 15px var(--f-body);letter-spacing:.12em;text-transform:uppercase;color:var(--forest-3);display:flex;flex-wrap:wrap;gap:6px 14px}
.hero .tagline span+span::before{content:"";display:inline-block;width:6px;height:6px;border-radius:2px;background:var(--leaf);transform:rotate(45deg);margin-right:14px;vertical-align:2px}
.hero .lede{color:#3e4a40;font-size:19px;margin-top:16px;max-width:540px}
.hero .cta-row{margin-top:32px}
.trust{list-style:none;padding:0;margin:32px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:12px 24px;max-width:560px}
.trust li{display:flex;align-items:center;gap:10px;font-size:15px;color:#2f3b31}
.trust svg{width:20px;height:20px;color:var(--leaf);flex:none}
.trust .st{color:var(--gold)}
/* their FREE ESTIMATES sticker */
.sticker{position:absolute;right:max(24px,calc((100vw - 1360px)/2 + 40px));top:31%;width:172px;height:172px;display:grid;place-items:center;text-align:center;color:var(--paper);text-decoration:none;filter:drop-shadow(0 18px 28px rgba(27,42,31,.45))}
.sticker::before{content:"";position:absolute;inset:0;background:var(--forest);clip-path:polygon(50% 0%,59% 9%,71% 4%,75% 16%,88% 15%,87% 28%,98% 34%,92% 45%,100% 55%,90% 63%,94% 76%,81% 79%,79% 92%,66% 90%,58% 100%,48% 92%,37% 99%,31% 87%,18% 89%,17% 76%,5% 71%,11% 60%,1% 50%,10% 41%,5% 28%,18% 25%,20% 12%,33% 13%,41% 2%);animation:spin 40s linear infinite}
.sticker::after{content:"";position:absolute;inset:22px;border:1.5px dashed rgba(236,231,218,.55);border-radius:50%}
@keyframes spin{to{transform:rotate(360deg)}}
.sticker b{position:relative;display:block;font:700 34px/1 var(--f-head);letter-spacing:.02em}
.sticker span{position:relative;display:block;font:600 11.5px/1.3 var(--f-body);letter-spacing:.12em;text-transform:uppercase;margin-top:5px}
@media (max-width:1100px){.sticker{display:none}}

/* ---------- proof strip ---------- */
.strip{position:relative;background:var(--forest);color:var(--paper);overflow:hidden}
.strip::before{content:"";position:absolute;right:-140px;top:50%;width:520px;height:520px;transform:translateY(-50%);border-radius:50%;background:repeating-radial-gradient(circle at center,transparent 0 13px,rgba(236,231,218,.06) 13px 15px);pointer-events:none}
.strip ul{list-style:none;margin:0 auto;padding:0;max-width:1220px;display:grid;grid-template-columns:repeat(4,1fr);position:relative}
.strip li{padding:32px 24px;text-align:center;border-left:1px solid rgba(236,231,218,.14)}
.strip li:first-child{border-left:0}
.strip b{display:block;font:700 36px/1.05 var(--f-head);color:var(--khaki-2)}
.strip b i{font-style:normal;color:var(--gold);font-size:.8em;margin-left:2px}
.strip span{display:block;margin-top:6px;color:rgba(236,231,218,.82);font-size:14.5px}

/* ---------- services ---------- */
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.svc{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;text-decoration:none;box-shadow:var(--sh);transition:transform .25s ease,box-shadow .25s ease}
.svc:hover{transform:translateY(-4px);box-shadow:0 30px 50px -28px rgba(27,42,31,.55)}
.svc figure{margin:0;aspect-ratio:4/3;overflow:hidden;background:var(--paper-2)}
.svc figure img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.svc:hover figure img{transform:scale(1.05)}
.svc-body{padding:22px 24px 24px;display:flex;flex-direction:column;flex:1}
.svc h3{font-size:26px;color:var(--forest)}
.svc p{color:var(--muted);font-size:15.5px;margin-top:8px;flex:1}
.svc .more{display:inline-flex;align-items:center;gap:8px;margin-top:16px;font:600 14.5px var(--f-body);color:var(--forest)}
.svc .more svg{width:16px;height:16px;transition:transform .2s}
.svc:hover .more svg{transform:translateX(4px)}

/* ---------- clean-up (dark band) ---------- */
.dark{background:var(--forest);color:var(--paper)}
.dark .eyebrow{color:var(--khaki-2)}
.dark .lede{color:rgba(236,231,218,.8)}
.clean{display:grid;grid-template-columns:1.05fr 1fr;gap:64px;align-items:center}
.clean-img{margin:0;position:relative}
.clean-img img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:var(--r)}
.clean-img figcaption{position:absolute;left:16px;bottom:16px;padding:8px 13px;border-radius:8px;background:rgba(27,42,31,.78);backdrop-filter:blur(6px);font-size:13.5px;color:var(--paper)}
.clean blockquote{margin:28px 0 0;padding:0 0 0 22px;border-left:3px solid var(--khaki);font:600 italic clamp(22px,2.2vw,28px)/1.3 var(--f-head);color:var(--paper)}
.clean blockquote cite{display:block;margin-top:12px;font:500 14px var(--f-body);font-style:normal;color:var(--khaki-2)}
.pts{list-style:none;padding:0;margin:34px 0 0;display:grid;gap:18px}
.pts li{display:grid;grid-template-columns:44px 1fr;gap:14px;align-items:start}
.pts i{width:44px;height:44px;border-radius:10px;background:rgba(236,231,218,.1);display:grid;place-items:center;color:var(--khaki-2)}
.pts i svg{width:22px;height:22px}
.pts b{display:block;font:700 20px var(--f-head);color:var(--paper)}
.pts span{display:block;color:rgba(236,231,218,.78);font-size:15px;margin-top:2px}

/* ---------- equipment ---------- */
.eq{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.eq figure{margin:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.eq img{width:100%;aspect-ratio:4/3;object-fit:cover}
.eq figcaption{padding:16px 18px 18px}
.eq b{display:block;font:700 21px var(--f-head);color:var(--forest)}
.eq span{display:block;color:var(--muted);font-size:14.5px;margin-top:4px}
.eq-note{margin-top:30px;text-align:center;font:600 italic 22px var(--f-head);color:var(--forest)}
.eq-note small{display:block;font:500 14px var(--f-body);font-style:normal;color:var(--muted);margin-top:6px}

/* ---------- steps ---------- */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;counter-reset:s;position:relative}
.step{position:relative;padding-top:4px}
.step::before{counter-increment:s;content:counter(s);display:grid;place-items:center;width:54px;height:54px;border-radius:50%;background:var(--card);border:2px solid var(--forest);font:700 22px var(--f-head);color:var(--forest);margin-bottom:18px;position:relative;z-index:1}
.step .bar{position:absolute;left:62px;right:-20px;top:31px;height:2px;background:repeating-linear-gradient(90deg,var(--khaki) 0 8px,transparent 8px 14px)}
.step:last-child .bar{display:none}
.step h4{font-size:23px;color:var(--forest)}
.step p{color:var(--muted);font-size:15.5px;margin-top:8px}
.step a{color:var(--forest);font-weight:600}
.pull{margin:56px auto 0;max-width:760px;text-align:center;font:600 italic clamp(21px,2vw,26px)/1.4 var(--f-head);color:var(--forest)}
.pull cite{display:block;margin-top:10px;font:500 14px var(--f-body);font-style:normal;color:var(--muted)}

/* ---------- reviews ---------- */
.rv-head{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:40px}
.score{display:flex;align-items:center;gap:18px}
.score b{font:700 64px/1 var(--f-head);color:var(--khaki-2)}
.score .st{color:var(--gold);font-size:20px;letter-spacing:2px}
.score span{display:block;color:rgba(236,231,218,.8);font-size:14.5px}
.marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.track{display:flex;gap:18px;width:max-content;animation:mq 190s linear infinite;padding:6px 0}
.marquee:hover .track{animation-play-state:paused}
@keyframes mq{to{transform:translateX(-50%)}}
.rv{width:360px;flex:none;background:var(--card);color:var(--ink);border-radius:var(--r);padding:22px 22px 18px;display:flex;flex-direction:column}
.rv .st{color:var(--gold);letter-spacing:2px;font-size:16px}
.rv p{margin-top:10px;font-size:15px;line-height:1.55;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden;flex:1}
.rv footer{display:flex;align-items:center;gap:10px;margin-top:14px;font-size:13.5px;color:var(--muted)}
.rv footer i{width:32px;height:32px;border-radius:50%;background:var(--forest);color:var(--paper);display:grid;place-items:center;font:700 15px var(--f-head);font-style:normal}
.rv footer b{color:var(--ink);font-weight:600}
.rv-cta{margin-top:34px}

/* ---------- gallery ---------- */
.gal{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.gal button{padding:0;border:0;background:var(--paper-2);border-radius:10px;overflow:hidden;cursor:zoom-in;aspect-ratio:1}
.gal button img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.gal button:hover img{transform:scale(1.05)}
.gal button.xtra{display:none}
.gal.open button.xtra{display:block}
.gal-cta{text-align:center;margin-top:30px}
.gal-dots{display:none}
.lb{position:fixed;inset:0;z-index:80;background:rgba(15,22,17,.95);display:none;align-items:center;justify-content:center;overflow:hidden}
.lb.on{display:flex}
.lb-track{display:flex;width:100%;height:100%;transition:transform .35s ease;touch-action:pan-y}
.lb-slide{flex:0 0 100%;display:grid;place-items:center;padding:60px 70px}
.lb-slide img{max-height:84vh;max-width:100%;border-radius:8px;object-fit:contain}
.lb button{position:absolute;z-index:2;width:50px;height:50px;border-radius:50%;border:0;background:rgba(236,231,218,.12);color:var(--paper);display:grid;place-items:center;cursor:pointer}
.lb button svg{width:22px;height:22px}
.lb-x{top:18px;right:18px}.lb-prev{left:18px;top:50%}.lb-next{right:18px;top:50%}
.lb-count{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);color:rgba(236,231,218,.8);font-size:14px}

/* ---------- about ---------- */
.about{display:grid;grid-template-columns:1.1fr 1fr;gap:64px;align-items:center}
.about-img{margin:0;position:relative}
.about-img img{width:100%;border-radius:var(--r);box-shadow:var(--sh)}
.about-img figcaption{margin-top:12px;font-size:13.5px;color:var(--muted)}
.about-img .badge{position:absolute;right:-18px;top:-22px;width:130px;height:130px;border-radius:50%;background:var(--forest);color:var(--paper);display:grid;place-items:center;text-align:center;transform:rotate(8deg);box-shadow:var(--sh)}
.about-img .badge b{display:block;font:700 38px/1 var(--f-head);color:var(--khaki-2)}
.about-img .badge span{display:block;font:600 11px/1.3 var(--f-body);letter-spacing:.18em;text-transform:uppercase;margin-bottom:4px}
.about-copy p+p{margin-top:16px}
.about-copy .lede{max-width:none}
.facts{list-style:none;padding:0;margin:28px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:12px 20px}
.facts li{display:flex;align-items:center;gap:10px;font-size:15.5px}
.facts svg{width:20px;height:20px;color:var(--leaf);flex:none}
.quote-card{margin-top:28px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px}
.quote-card p{font:600 italic 19px/1.45 var(--f-head);color:var(--forest)}
.quote-card cite{display:block;margin-top:8px;font-size:13.5px;font-style:normal;color:var(--muted)}

/* ---------- area ---------- */
.area{display:grid;grid-template-columns:1fr 1.15fr;gap:56px;align-items:center}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:26px}
.chips a{padding:9px 15px;border-radius:999px;background:var(--card);border:1px solid var(--line-2);text-decoration:none;font-size:15px;color:var(--forest)}
.chips a:hover{background:var(--forest);color:var(--paper)}
.map{border-radius:var(--r);overflow:hidden;border:1px solid var(--line-2);box-shadow:var(--sh);aspect-ratio:4/3;background:var(--paper-2)}
.map iframe{width:100%;height:100%;border:0;display:block}

/* ---------- quote ---------- */
.qf{display:grid;grid-template-columns:1fr 1.1fr;gap:60px;align-items:start}
.qf-copy .contact-list{list-style:none;padding:0;margin:30px 0 0;display:grid;gap:14px}
.contact-list a,.contact-list span{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:16px;color:var(--paper)}
.contact-list i{width:42px;height:42px;border-radius:10px;background:rgba(236,231,218,.1);display:grid;place-items:center;color:var(--khaki-2);flex:none}
.contact-list svg{width:20px;height:20px}
.qcard{background:var(--card);color:var(--ink);border-radius:18px;padding:32px;box-shadow:0 40px 80px -40px rgba(0,0,0,.6)}
.qcard h3{font-size:30px;color:var(--forest)}
.qcard>p{color:var(--muted);font-size:15px;margin-top:6px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.fld{display:block;margin-top:16px}
.fld>span{display:block;font:600 14px var(--f-body);margin-bottom:6px}
.fld>span em{font-style:normal;color:var(--muted);font-weight:400}
.fld input,.fld textarea{width:100%;font:400 16px var(--f-body);padding:13px 14px;border-radius:10px;border:1.5px solid var(--line-2);background:var(--white);color:var(--ink);outline:none;transition:border-color .2s}
.fld input:focus,.fld textarea:focus{border-color:var(--forest)}
.fld textarea{min-height:96px;resize:vertical}
.fld .err{display:none;color:#a33b2b;font-size:13px;margin-top:5px}
.fld.bad input{border-color:#a33b2b}.fld.bad .err{display:block}
.svcs{display:flex;flex-wrap:wrap;gap:8px}
.svcs label{cursor:pointer;position:relative}
.svcs input{position:absolute;left:0;top:0;width:1px!important;height:1px;opacity:0;pointer-events:none}
.svcs span{display:inline-block;padding:8px 13px;border-radius:999px;border:1.5px solid var(--line-2);font-size:14px;transition:all .15s}
.svcs input:checked+span{background:var(--forest);border-color:var(--forest);color:var(--paper)}
.svcs input:focus-visible+span{outline:2px solid var(--leaf);outline-offset:2px}
.photo-note{display:flex;gap:12px;align-items:center;margin-top:16px;padding:13px 14px;border-radius:10px;background:var(--paper);font-size:14.5px}
.photo-note svg{width:22px;height:22px;color:var(--leaf);flex:none}
.photo-note a{color:var(--forest);font-weight:600}
.qcard .btn{width:100%;margin-top:20px}
.fine{font-size:13px;color:var(--muted);text-align:center;margin-top:12px}

/* ---------- footer ---------- */
footer.site{background:#15281B;color:rgba(236,231,218,.78);padding:70px 0 34px}
.ft{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px}
.ft img{height:46px;width:auto;margin-bottom:12px}
.ft .tag{font:600 12px var(--f-body);letter-spacing:.2em;text-transform:uppercase;color:var(--khaki-2)}
.ft p{font-size:15px;margin-top:14px;max-width:320px}
.ft h4{font:700 19px var(--f-head);color:var(--paper);margin-bottom:12px}
.ft ul{list-style:none;padding:0;margin:0;display:grid;gap:7px;font-size:15px}
.ft a{text-decoration:none}.ft a:hover{color:var(--paper)}
.legal{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-top:50px;padding-top:24px;border-top:1px solid rgba(236,231,218,.12);font-size:13.5px;color:rgba(236,231,218,.55)}

/* sticky phone bar */
.mbar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:55;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(236,231,218,.96);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line)}
.mbar a{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:50px;border-radius:10px;font:600 16px var(--f-body);text-decoration:none;border:1.5px solid var(--forest);color:var(--forest)}
.mbar a.call{flex:1.3;background:var(--forest);color:var(--paper)}
.mbar svg{width:19px;height:19px}

/* reveal */
.rv-up{opacity:0;transform:translateY(18px);transition:opacity .8s ease,transform .8s ease}
.rv-up.in{opacity:1;transform:none}
.hero .rv-up{transition-duration:1s}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .rv-up{opacity:1;transform:none;transition:none}
  .hero-media img,.sticker::before,.track{animation:none}
}

/* desktop: quote-first CTAs (mouse can't tap a phone number) */
.hero .btn-quote-first{order:1}.hero .btn-call-first{order:2}
@media (min-width:900px) and (hover:hover){
  .hero .btn-quote-first{background:var(--forest);color:var(--paper);border-color:var(--forest);box-shadow:0 14px 30px -14px rgba(31,58,39,.85)}
  .hero .btn-quote-first:hover{background:var(--forest-2)}
  .hero .btn-call-first{background:rgba(252,251,247,.55);color:var(--forest);border-color:var(--forest);box-shadow:none}
  .hero .btn-call-first:hover{background:var(--forest);color:var(--paper)}
}

@media (max-width:1040px){
  .svc-grid{grid-template-columns:repeat(2,1fr)}
  .clean,.about,.area,.qf{grid-template-columns:1fr;gap:44px}
  .clean-img img{aspect-ratio:4/3}
  .eq{grid-template-columns:repeat(2,1fr)}
  .steps{grid-template-columns:repeat(2,1fr);gap:34px 24px}.step .bar{display:none}
  .ft{grid-template-columns:1fr 1fr}
  .rv-head{flex-direction:column;align-items:center;text-align:center}
  .about-img .badge{right:10px}
}
@media (max-width:860px){
  .cta-row{flex-direction:column;align-items:stretch;max-width:400px;margin-left:auto;margin-right:auto}
  .cta-row .btn{width:100%}
  .hero .btn-call-first{order:1}.hero .btn-quote-first{order:2}
}
@media (max-width:760px){
  body{font-size:16px}
  .sec{padding:80px 0}.sec-head{margin-bottom:36px}
  .wrap{padding:0 20px}
  .hdr-in,.hdr.solid .hdr-in{padding:10px 16px;gap:8px}
  .brand img{height:34px}.hdr.solid .brand img{height:30px}
  .brand span{font-size:10.5px;letter-spacing:.2em;margin-top:3px}
  .hero{text-align:center;padding:96px 0 92px;align-items:flex-end;min-height:100svh}
  .hero::before{background:linear-gradient(180deg,rgba(236,231,218,.55) 0%,rgba(236,231,218,0) 11%,rgba(236,231,218,0) 22%,rgba(236,231,218,.6) 34%,rgba(236,231,218,.93) 44%,var(--paper) 56%)}
  .hero-media img{object-position:50% 30%;transform-origin:50% 30%}
  .hero-in{margin:0 auto}
  .hero h1{font-size:clamp(50px,15vw,64px)}
  .hero .tagline{justify-content:center;font-size:12.5px;letter-spacing:.1em;margin-top:20px;gap:4px 10px}
  .hero .tagline span+span::before{margin-right:10px}
  .hero .lede{margin-left:auto;margin-right:auto;font-size:16.5px;text-wrap:balance}
  .hero .cta-row{margin-top:24px}
  .trust{grid-template-columns:1fr;justify-items:center;gap:8px;margin-top:22px}
  .trust li:nth-child(n+2){display:none}
  .hero .eyebrow{font-size:11.5px;letter-spacing:.13em;color:var(--forest)}
  .hero .eyebrow::before,.hero .eyebrow::after{display:none}
  .eyebrow::after{display:block}
  .sec-head,.clean-copy,.about-copy,.area-copy,.qf-copy,.eq-head{text-align:center}
  .lede{margin-left:auto;margin-right:auto}
  .strip ul{grid-template-columns:repeat(2,minmax(0,1fr))}
  .strip li{padding:22px 10px;border-left:0}
  .strip li:nth-child(2n){border-left:1px solid rgba(236,231,218,.14)}
  .strip li:nth-child(n+3){border-top:1px solid rgba(236,231,218,.14)}
  .strip b{font-size:28px}
  .svc-grid{grid-template-columns:1fr;max-width:480px;margin:0 auto;gap:16px}
  .clean blockquote{text-align:left}
  .pts,.facts,.contact-list{text-align:left}
  .facts{grid-template-columns:1fr;max-width:340px;margin-left:auto;margin-right:auto}
  .eq{gap:12px}.eq figcaption{padding:12px 13px 14px}.eq b{font-size:18px}.eq span{font-size:13.5px}
  .steps{grid-template-columns:1fr;max-width:440px;margin:0 auto;text-align:left;gap:16px}
  .step{display:grid;grid-template-columns:54px 1fr;gap:0 16px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}
  .step::before{margin:0;grid-row:span 2}
  .step h4{font-size:21px;align-self:center}
  .step p{grid-column:2;margin-top:4px}
  .rv{width:300px}
  .gal{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:10px;margin:0 -20px;padding:0 20px;scrollbar-width:none}
  .gal::-webkit-scrollbar{display:none}
  .gal button{flex:0 0 78%;scroll-snap-align:center}
  .gal.open{display:grid;grid-template-columns:1fr 1fr;overflow:visible;margin:0;padding:0}
  .gal.open button{flex:none}
  .gal-dots{display:flex;justify-content:center;gap:7px;margin-top:18px}
  .gal-dots i{width:7px;height:7px;border-radius:50%;background:var(--line-2);transition:all .2s}
  .gal-dots i.on{background:var(--forest);width:20px;border-radius:4px}
  .gal.open+.gal-dots{display:none}
  .lb-prev,.lb-next{display:none}
  .lb-slide{padding:60px 12px}
  .about-img .badge{width:104px;height:104px;top:-16px;right:8px}
  .about-img .badge b{font-size:30px}
  .qcard{padding:24px 20px}
  .two{grid-template-columns:1fr}
  .ft{grid-template-columns:1fr;text-align:center}
  .ft img{margin:0 auto 12px}.ft p{margin-left:auto;margin-right:auto}
  .legal{justify-content:center;text-align:center}
  .mbar{display:flex}
  footer.site{padding-bottom:120px}
}
@media (max-width:370px){.hero h1{font-size:46px}.brand span{display:none}}

/* ================= multi-page additions (site.css = the approved demo, untouched) ================= */
.narrow{max-width:860px}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.dd-panel a.all{margin-top:6px;border-top:1px solid var(--line);border-radius:0 0 8px 8px;padding-top:12px;font-weight:600;color:var(--forest)}
.dd-panel a.all::before{background:var(--gold)}
.dd-panel.cols a.all{grid-column:1/-1}
.mnav details a:last-child{font-weight:600;color:var(--forest)}

/* 7 service cards: center the orphan row */
.svc-grid{display:flex;flex-wrap:wrap;justify-content:center}
.svc-grid>.svc{flex:0 0 calc((100% - 44px)/3)}
@media (max-width:1040px){.svc-grid>.svc{flex-basis:calc((100% - 22px)/2)}}
@media (max-width:760px){.svc-grid>.svc{flex-basis:100%}}

/* page hero: same paper scrim as the home hero, shorter */
.phero{position:relative;isolation:isolate;overflow:hidden;padding:170px 0 90px;min-height:560px;display:flex;align-items:center}
.phero>.wrap{width:100%}
.phero-media{position:absolute;inset:0;z-index:-2}
.phero-media img{width:100%;height:100%;object-fit:cover;object-position:50% 45%}
.phero::before{content:"";position:absolute;inset:0;z-index:-1;background:
  linear-gradient(90deg,rgba(236,231,218,.97) 0%,rgba(236,231,218,.94) 38%,rgba(236,231,218,.72) 54%,rgba(236,231,218,.12) 74%,rgba(236,231,218,0) 86%),
  linear-gradient(180deg,rgba(236,231,218,.7) 0%,rgba(236,231,218,0) 18%,rgba(236,231,218,0) 82%,var(--paper) 100%)}
.phero-in{max-width:640px}
.phero h1{font-size:clamp(44px,5.6vw,78px);line-height:.98;color:var(--forest)}
.phero h1 .boxed{margin-top:.08em}
.phero .lede{color:#3e4a40;font-size:19px;margin-top:18px}
.phero .cta-row{margin-top:28px}
.phero .trust{margin-top:26px}
.phero-plain{min-height:0;padding:150px 0 30px}
.phero-plain::before{display:none}
.crumbs{font-size:13.5px;color:var(--muted);margin-bottom:18px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.crumbs a{color:var(--forest);text-decoration:none;font-weight:500}
.crumbs a:hover{text-decoration:underline}
.crumbs span{opacity:.5}
.crumbs b{font-weight:500;color:var(--muted)}

/* two-column body: copy + sidebar */
.split{display:grid;grid-template-columns:1.25fr 1fr;gap:64px;align-items:start}
.prose p{color:#2f3b31;font-size:17px;margin-top:16px}
.prose h2+p{margin-top:22px}
.prose h3{font-size:26px;color:var(--forest);margin-top:34px}
.prose a{color:var(--forest);font-weight:600}
.side{display:grid;gap:22px;position:sticky;top:110px}
.pts.light{margin:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px;box-shadow:var(--sh)}
.pts.light i{background:rgba(31,58,39,.08);color:var(--forest)}
.pts.light b{color:var(--forest)}
.pts.light span{color:var(--muted)}
.rv-card{margin:0;background:var(--forest);color:var(--paper);border-radius:var(--r);padding:24px 24px 20px}
.rv-card .st{color:var(--gold);letter-spacing:2px}
.rv-card blockquote{margin:10px 0 0;font:600 italic 19px/1.45 var(--f-head)}
.rv-card figcaption{margin-top:12px;font-size:13.5px;color:var(--khaki-2)}
.rv-card figcaption b{color:var(--paper);font-weight:600}
.big-q{margin:26px 0 8px;padding:4px 0 4px 22px;border-left:3px solid var(--forest);font:600 italic clamp(23px,2.4vw,30px)/1.3 var(--f-head);color:var(--forest)}
.big-q cite{display:block;margin-top:10px;font:500 14px var(--f-body);font-style:normal;color:var(--muted)}
.mini-map{border-radius:var(--r);overflow:hidden;border:1px solid var(--line-2);aspect-ratio:4/3;background:var(--paper-2)}
.mini-map iframe{width:100%;height:100%;border:0;display:block}

/* services list on town pages */
.svc-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.svc-list a{display:block;height:100%;padding:20px 22px;background:var(--card);border:1px solid var(--line);border-radius:12px;text-decoration:none;transition:transform .2s ease,box-shadow .2s ease}
.svc-list a:hover{transform:translateY(-2px);box-shadow:var(--sh)}
.svc-list b{display:block;font:700 21px var(--f-head);color:var(--forest)}
.svc-list span{display:block;color:var(--muted);font-size:15px;margin-top:4px}

/* town cards */
.towns{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.town{display:flex;flex-direction:column;padding:22px 24px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);text-decoration:none;box-shadow:var(--sh);transition:transform .2s ease}
.town:hover{transform:translateY(-3px)}
.town b{font:700 26px var(--f-head);color:var(--forest)}
.town span{color:var(--muted);font-size:14.5px;margin-top:2px}
.town em{display:inline-flex;align-items:center;gap:8px;font:600 14.5px var(--f-body);font-style:normal;color:var(--forest);margin-top:14px}
.town em svg{width:16px;height:16px}
.farther{margin-top:30px;text-align:center;font-size:17px;color:var(--muted)}
.farther a{color:var(--forest);font-weight:600}
.center-chips{justify-content:center;max-width:820px;margin:16px auto 0}
.chips a[aria-current]{background:var(--forest);color:var(--paper)}

/* FAQ */
.faq{display:grid;gap:12px}
.faq-i{background:var(--card);border:1px solid var(--line);border-radius:12px}
.faq-i summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;align-items:center;padding:18px 22px;font:700 20px/1.25 var(--f-head);color:var(--forest)}
.faq-i summary::-webkit-details-marker{display:none}
.faq-i summary svg{width:16px;height:16px;flex:none;transition:transform .2s}
.faq-i[open] summary svg{transform:rotate(180deg)}
.faq-i div{padding:0 22px 20px;color:#2f3b31;font-size:16px}

/* CTA band: full-bleed photo */
.cta-band{position:relative;isolation:isolate;overflow:hidden;padding:120px 0;color:var(--paper)}
.cta-band-bg{position:absolute;inset:0;z-index:-2}
.cta-band-bg img{width:100%;height:100%;object-fit:cover}
.cta-band::before{content:"";position:absolute;inset:0;z-index:-1;background:rgba(21,40,27,.78)}
.cta-band .lede{color:rgba(236,231,218,.85)}
.cta-band .boxed{background:var(--khaki-2);color:var(--forest)}
.cta-band .cta-row{margin-top:30px;justify-content:center}

/* reels: paged carousel, every slide mounted (house pattern) */
.reels{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center}
.reels-vp{overflow:hidden}
.reels-track{display:flex;gap:18px;transition:transform .45s cubic-bezier(.2,.8,.2,1)}
.reel{flex:0 0 calc((100% - 3*18px)/4);margin:0}
.reel-v{position:relative;aspect-ratio:9/16;border-radius:var(--r);overflow:hidden;background:#15281B}
.reel-v video{width:100%;height:100%;object-fit:cover;display:block}
.reel p{margin-top:10px;font-size:14.5px;color:var(--muted);text-align:center}
.reel-snd{position:absolute;right:10px;bottom:10px;width:42px;height:42px;border-radius:50%;border:0;background:rgba(21,40,27,.7);color:var(--paper);display:grid;place-items:center;cursor:pointer}
.reel-snd svg{width:20px;height:20px}
.reel-snd .on{display:none}.reel-snd.live .on{display:block}.reel-snd.live .off{display:none}
.reels-nav{width:46px;height:46px;border-radius:50%;border:1.5px solid var(--line-2);background:var(--card);color:var(--forest);display:grid;place-items:center;cursor:pointer}
.reels-nav svg{width:20px;height:20px}
.reels-nav:disabled{opacity:.35;cursor:default}
.reels-dots{display:flex;justify-content:center;gap:7px;margin-top:20px}
.reels-dots i{width:7px;height:7px;border-radius:4px;background:var(--line-2);cursor:pointer;transition:all .2s}
.reels-dots i.on{width:20px;background:var(--forest)}
@media (max-width:1023px){.reel{flex-basis:calc((100% - 18px)/2)}}
@media (max-width:639px){.reel{flex-basis:100%}.reels{grid-template-columns:1fr}.reels-nav{display:none}.reels-vp{max-width:340px;margin:0 auto;width:100%}}

/* form additions */
.fld select{width:100%;font:400 16px var(--f-body);padding:13px 14px;border-radius:10px;border:1.5px solid var(--line-2);background:var(--white);color:var(--ink)}
.fld.bad input{border-color:#a33b2b}
.form-err{margin-top:12px;padding:12px 14px;border-radius:10px;background:#f6e3df;color:#7a2a1e;font-size:14.5px}
.form-err a{color:#7a2a1e;font-weight:700}
.qcard .btn[disabled]{opacity:.7;cursor:wait}

/* "also known as Miller's" (Miller's request: name searches) */
.aka-line{margin-top:14px;font-size:15.5px;color:var(--forest);font-weight:500}
.ft .aka{margin-top:8px;font-size:14px;color:var(--khaki-2)}

/* footer additions */
.ft.ft5{grid-template-columns:1.4fr 1fr 1fr 1.1fr}
.ft .social{display:flex;gap:10px;margin-top:18px}
.ft .social a{width:40px;height:40px;border-radius:10px;background:rgba(236,231,218,.08);display:grid;place-items:center}
.ft .social svg{width:20px;height:20px}
.legal a{text-decoration:none}.legal a:hover{color:var(--paper)}

@media (max-width:1040px){
  .split{grid-template-columns:1fr;gap:40px}
  .side{position:static}
  .towns{grid-template-columns:repeat(2,1fr)}
  .ft.ft5{grid-template-columns:1fr 1fr}
}
@media (max-width:760px){
  .phero{text-align:center;padding:300px 0 56px;min-height:0;align-items:flex-end}
  .phero-media{bottom:auto;height:420px}
  .phero::before{background:linear-gradient(180deg,rgba(236,231,218,.5) 0px,rgba(236,231,218,0) 70px,rgba(236,231,218,0) 200px,rgba(236,231,218,.85) 300px,var(--paper) 400px)}
  .phero-plain{padding:120px 0 20px}
  .phero-in{margin:0 auto}
  .crumbs{justify-content:center}
  .phero h1{font-size:clamp(38px,11vw,52px)}
  .phero .lede{font-size:16.5px;margin-left:auto;margin-right:auto}
  .phero .trust{justify-items:center}
  .prose{text-align:left}
  .prose .eyebrow,.prose .h2{display:flex;justify-content:center;text-align:center}
  .prose .h2{display:block}
  .svc-list{grid-template-columns:1fr}
  .towns{grid-template-columns:1fr}
  .faq-i summary{font-size:18px;padding:16px 18px}
  .faq-i div{padding:0 18px 18px}
  .cta-band{padding:84px 0}
  .ft.ft5{grid-template-columns:1fr}
  .ft .social{justify-content:center}
}

/* ================= quote wizard (tap-first, one question at a time) ================= */
.qw{position:relative}
.qw-head{margin-bottom:16px}
.qw-title{font:700 26px/1.15 var(--f-head);color:var(--forest)}
.qw-prog{display:flex;align-items:center;gap:12px;margin-top:10px}
.qw-step-lbl{font:600 12.5px var(--f-body);letter-spacing:.08em;text-transform:uppercase;color:var(--forest-3);white-space:nowrap}
.qw-bar{flex:1;height:6px;border-radius:6px;background:var(--paper-2);overflow:hidden}
.qw-bar i{display:block;height:100%;width:25%;background:var(--forest);border-radius:6px;transition:width .35s cubic-bezier(.2,.8,.2,1)}
.qw-step{display:none}
.qw-step.on{display:block;animation:qwin .35s cubic-bezier(.2,.8,.2,1)}
@keyframes qwin{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:none}}
.qw-q{font:700 20px/1.25 var(--f-head);color:var(--ink);margin-bottom:12px}
.qw-opts{display:grid;gap:8px}
.qw-opts.cols2{grid-template-columns:1fr 1fr}
.qw-opts.cols3{grid-template-columns:1fr 1fr 1fr}
.qw-opt{font:500 15px/1.25 var(--f-body);color:var(--forest);background:var(--white);border:1.5px solid var(--line-2);border-radius:10px;padding:13px 12px;text-align:left;cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .15s;min-height:50px}
.qw-opt:hover{border-color:var(--forest);background:#fff}
.qw-opt:active{transform:scale(.98)}
.qw-opt.sel{background:var(--forest);border-color:var(--forest);color:var(--paper)}
.qw-opt:focus-visible{outline:2px solid var(--leaf);outline-offset:2px}
.qw .fld{margin-top:12px}
.qw .two .fld{margin-top:0}
.qw textarea{min-height:64px}
.qw-submit{width:100%;margin-top:16px}
.qw-urgent{display:flex;gap:10px;align-items:center;padding:12px 14px;border-radius:10px;background:#f6e3df;color:#7a2a1e;font-size:14.5px;margin-bottom:12px}
.qw-urgent svg{width:20px;height:20px;flex:none}
.qw-urgent a{color:#7a2a1e;font-weight:700}
.qw-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;font-size:14px;color:var(--muted)}
.qw-back{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:6px 0;font:600 14px var(--f-body);color:var(--forest);cursor:pointer}
.qw-back svg{width:16px;height:16px}
.qw-or{margin-left:auto;text-align:right}
.qw-or a{color:var(--forest);font-weight:600;white-space:nowrap}
.qw-photo{display:flex;gap:10px;align-items:center;margin-top:14px;padding:11px 13px;border-radius:10px;background:var(--paper);font-size:13.5px;color:var(--muted)}
.qw-photo svg{width:20px;height:20px;color:var(--leaf);flex:none}
.qw-photo a{color:var(--forest);font-weight:600}
.qcard .qw-title{font-size:30px}

/* hero: copy left, wizard right (desktop only; phones keep the approved hero) */
.hero-form,.hero-call-d{display:none}
.hero-call-d{align-items:center;gap:10px;margin-top:26px;font-size:16px;color:#2f3b31}
.hero-call-d svg{width:18px;height:18px;color:var(--leaf);flex:none}
.hero-call-d a{color:var(--forest);font-weight:700;text-decoration:none;border-bottom:2px solid var(--khaki)}
.hero-wiz .sticker{display:none}
@media (min-width:1100px){
  .hero-wiz{padding:130px 0 80px}
  .hero-grid{display:grid;grid-template-columns:minmax(0,1fr) 440px;gap:56px;align-items:center}
  .hero-wiz .hero-in{max-width:620px}
  .hero-wiz h1{font-size:clamp(60px,6.2vw,96px)}
  .hero-form{display:flex;align-items:center;min-height:720px}
  .hero-form .qw{width:100%}
  .hero-ctas{display:none}
  .hero-call-d{display:flex}
  .qw-hero{background:rgba(247,244,236,.97);border:1px solid var(--line);border-radius:18px;padding:26px 26px 22px;box-shadow:0 40px 80px -36px rgba(27,42,31,.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
  .hero-wiz::before{background:
    linear-gradient(90deg,rgba(236,231,218,.97) 0%,rgba(236,231,218,.93) 36%,rgba(236,231,218,.55) 52%,rgba(236,231,218,.12) 66%,rgba(236,231,218,0) 74%),
    linear-gradient(180deg,rgba(236,231,218,.7) 0%,rgba(236,231,218,0) 16%,rgba(236,231,218,0) 80%,var(--paper) 100%)}
}
@media (max-width:420px){.qw-opts.cols3{grid-template-columns:1fr 1fr}}

/* ================= menu: burger morphs into an X, panel fades down ================= */
.burger .bars{position:relative;display:block;width:22px;height:16px}
.burger .bars i{position:absolute;left:0;right:0;height:2.2px;border-radius:2px;background:currentColor;transition:transform .38s cubic-bezier(.2,.8,.2,1),opacity .2s ease,top .38s cubic-bezier(.2,.8,.2,1)}
.burger .bars i:nth-child(1){top:0}.burger .bars i:nth-child(2){top:7px}.burger .bars i:nth-child(3){top:14px}
body.menu-open .burger .bars i:nth-child(1){top:7px;transform:rotate(45deg)}
body.menu-open .burger .bars i:nth-child(2){opacity:0;transform:scaleX(.2)}
body.menu-open .burger .bars i:nth-child(3){top:7px;transform:rotate(-45deg)}
body.menu-open .hdr{z-index:70;background:var(--paper);box-shadow:0 1px 0 var(--line);backdrop-filter:none;-webkit-backdrop-filter:none}
.mnav{clip-path:none;opacity:0;transform:translateY(-10px);padding-top:84px;transition:opacity .28s ease,transform .38s cubic-bezier(.2,.8,.2,1),visibility 0s linear .38s}
body.menu-open .mnav{clip-path:none;opacity:1;transform:none;transition:opacity .28s ease,transform .38s cubic-bezier(.2,.8,.2,1),visibility 0s}
.mnav-top{display:none}
@media (prefers-reduced-motion:reduce){.mnav,.burger .bars i{transition:none}}

/* ================= 10/8 round 2 (Jeffrey's review) ================= */
/* FREE sticker rides the corner of the hero wizard (Jeffrey: keep the badge) */
.hf-card{position:relative;width:100%}
.sticker.sticker-form{display:none}
@media (min-width:1100px){
  .hero-wiz .sticker.sticker-form{display:grid;position:absolute;top:-62px;left:-70px;right:auto;width:132px;height:132px;z-index:3}
  .sticker-form b{font-size:27px}
  .sticker-form span{font-size:9.5px;margin-top:3px}
  .sticker-form::after{inset:17px}
  .qw-hero .qw-head{padding-left:62px}
}

/* estimate section: photo behind the dark green */
.qbg{isolation:isolate;overflow:hidden}
.qbg-img{position:absolute;inset:0;z-index:-2}
.qbg-img img{width:100%;height:100%;object-fit:cover}
.qbg::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(21,40,27,.94) 0%,rgba(21,40,27,.86) 45%,rgba(21,40,27,.72) 100%)}
.qbg>.wrap{position:relative}

/* bento gallery: best + biggest photos get the big tiles */
.gal button img{object-fit:cover}
@media (min-width:761px){
  .gal{grid-template-columns:repeat(4,1fr);grid-auto-rows:200px;grid-auto-flow:dense;gap:10px}
  .gal button{aspect-ratio:auto;height:100%;border-radius:12px}
  .gal .b-big{grid-column:span 2;grid-row:span 2}
  .gal .b-wide{grid-column:span 2}
  .gal .b-tall{grid-row:span 2}
}
@media (min-width:1280px){.gal.open{grid-template-columns:repeat(5,1fr);grid-auto-rows:210px}}
@media (max-width:760px){
  .gal.open{grid-auto-rows:150px;grid-auto-flow:dense;gap:8px}
  .gal.open button{aspect-ratio:auto;height:100%}
  .gal.open .b-big,.gal.open .b-wide{grid-column:span 2}
  .gal.open .b-big{grid-row:span 2}
  .gal.open .b-tall{grid-row:span 2}
}

/* reviews page */
.rsum{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:24px 28px;box-shadow:var(--sh)}
.rsum-score{display:flex;align-items:center;gap:16px}
.rsum-score b{font:700 56px/1 var(--f-head);color:var(--forest)}
.rsum-score .st{color:var(--gold);font-size:20px;letter-spacing:2px}
.rsum-score span{color:var(--muted);font-size:14.5px}
.rsum-bbb a,.ft .bbb{display:inline-flex;align-items:center;gap:12px;text-decoration:none;color:var(--forest)}
.rsum-bbb b,.ft .bbb b{display:grid;place-items:center;width:52px;height:52px;border-radius:10px;background:var(--forest);color:var(--paper);font:700 22px var(--f-head)}
.rsum-bbb span{font:600 15px var(--f-body)}
.rnote{margin:22px 0 26px;text-align:center;color:var(--muted);font-size:14.5px}
.rgrid{columns:3 300px;column-gap:18px}
.rcard{break-inside:avoid;margin:0 0 18px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px 22px 18px}
.rcard .st{color:var(--gold);letter-spacing:2px}
.rcard blockquote{margin:10px 0 0;font-size:15.5px;line-height:1.6;color:var(--ink)}
.rcard figcaption{display:flex;align-items:center;gap:10px;margin-top:14px;font-size:13.5px;color:var(--muted)}
.rcard figcaption i{width:34px;height:34px;border-radius:50%;background:var(--forest);color:var(--paper);display:grid;place-items:center;font:700 15px var(--f-head);font-style:normal;flex:none}
.rcard figcaption b{display:block;color:var(--ink);font-weight:600}

/* footer BBB badge */
.ft .bbb{margin-top:18px;color:var(--paper)}
.ft .bbb b{background:var(--khaki-2);color:var(--forest);width:46px;height:46px;font-size:20px}
.ft .bbb span{display:flex;flex-direction:column;font:600 14px var(--f-body);text-align:left}
.ft .bbb em{font-style:normal;font-weight:400;font-size:12.5px;color:var(--khaki-2)}

/* blog */
.agrid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.acard{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;text-decoration:none;box-shadow:var(--sh);transition:transform .25s ease}
.acard:hover{transform:translateY(-4px)}
.acard figure{margin:0;aspect-ratio:16/10;overflow:hidden}
.acard figure img{width:100%;height:100%;object-fit:cover}
.acard>div{padding:20px 22px 22px;display:flex;flex-direction:column;flex:1}
.adate{font:600 12px var(--f-body);letter-spacing:.12em;text-transform:uppercase;color:var(--forest-3)}
.acard h3{font-size:23px;line-height:1.15;color:var(--forest);margin-top:8px}
.acard p{color:var(--muted);font-size:15px;margin-top:8px;flex:1}
.acard .more{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font:600 14.5px var(--f-body);color:var(--forest)}
.acard .more svg{width:16px;height:16px}
.art-top{height:96px}
.art-h1{font-size:clamp(36px,4.4vw,56px);color:var(--forest);line-height:1.05}
.art-by{margin-top:14px;color:var(--muted);font-size:14.5px}
.art-fig{margin:28px 0 8px}
.art-fig img{width:100%;border-radius:var(--r);aspect-ratio:16/10;object-fit:cover}
.art h2{font-size:30px;color:var(--forest);margin-top:38px}
.art ul{margin:16px 0 0;padding-left:22px;display:grid;gap:8px;color:#2f3b31;font-size:17px}
.art .sources{font-size:14px;color:var(--muted);margin-top:30px}
.art-cta{margin-top:34px;padding:20px 22px;border-radius:var(--r);background:var(--forest);color:var(--paper);display:grid;gap:6px}
.art-cta b{font:700 21px var(--f-head)}
.art-cta a{color:var(--khaki-2)}
.updated{color:var(--muted);font-size:14px;margin-top:10px}

.swipe-hint{display:none;align-items:center;justify-content:center;gap:8px;margin-top:14px;font-size:13.5px;color:rgba(236,231,218,.75)}
.swipe-hint svg{width:16px;height:16px}
.reels-track{touch-action:pan-y}

@media (max-width:1040px){.agrid{grid-template-columns:1fr 1fr}}
@media (max-width:760px){
  .agrid{grid-template-columns:1fr;max-width:480px;margin:0 auto}
  .rsum{flex-direction:column;text-align:center}
  .ft .bbb{justify-content:center}
  .art-top{height:70px}
  /* About points centered on phones (Jeffrey 10/8) */
  .facts{display:flex;flex-direction:column;align-items:center;max-width:none}
  .facts li{justify-content:center;text-align:center}
  /* reviews: swipe instead of an auto-scrolling marquee */
  .marquee{overflow-x:auto;scroll-snap-type:x mandatory;-webkit-mask-image:none;mask-image:none;padding:0 20px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .marquee::-webkit-scrollbar{display:none}
  .track{animation:none;gap:12px}
  .track .rv{scroll-snap-align:center;width:82vw;max-width:330px}
  .track .rv[aria-hidden]{display:none}
  .swipe-hint{display:flex}
  /* reels: arrows beside the clip, swipe still works */
  .reels{grid-template-columns:1fr;position:relative}
  .reels-vp{max-width:270px;margin:0 auto;width:100%}
  .reels-nav{display:grid;position:absolute;top:calc(50% - 44px);z-index:2;width:42px;height:42px;background:rgba(247,244,236,.95);box-shadow:var(--sh)}
  .reels-nav.prev{left:0}.reels-nav.next{right:0}
}

/* ================= 10/8 round 3 (Jeffrey's review) ================= */
/* How it works: numbers centred over their step, dashed bar runs circle to circle */
@media (min-width:761px){
  .step{text-align:center}
  .step::before{margin:0 auto 18px}
}
@media (min-width:1041px){
  .step .bar{left:calc(50% + 35px);right:calc(-50% + 7px)}
}
/* phones: the Urban Properties timeline. Rail on the left fills as you scroll, each circle lights up */
@media (max-width:760px){
  .steps{gap:16px}
  .step{display:block;margin-left:62px;padding:18px 20px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh);transition:border-color .35s ease,box-shadow .35s ease}
  .step::before{position:absolute;left:-62px;top:14px;width:46px;height:46px;margin:0;font-size:18px;box-shadow:0 0 0 5px var(--paper);z-index:1;
    transition:background .35s ease,color .35s ease,border-color .35s ease,box-shadow .35s ease}
  .step h4{font-size:20px;margin:0 0 4px}
  .step p{margin-top:0}
  .step .bar{display:block;z-index:0;left:-40px;right:auto;top:37px;width:2px;height:calc(100% + 16px);background:var(--line);border-radius:2px}
  .step:last-child .bar{display:none}
  .step .bar::after{content:"";position:absolute;inset:0;border-radius:2px;background:linear-gradient(180deg,var(--truck),#B8561A);transform-origin:top;transform:scaleY(var(--f,0))}
  .step.lit{border-color:rgba(31,58,39,.28);box-shadow:0 2px 6px rgba(27,42,31,.06),0 22px 44px -22px rgba(27,42,31,.38)}
  .step.lit::before{background:linear-gradient(180deg,var(--forest-3) 0%,var(--forest) 60%,#15281B 100%);color:var(--paper);border-color:transparent;
    box-shadow:0 0 0 5px var(--paper),0 10px 22px -8px rgba(31,58,39,.75)}
}

/* home Our Work preview: a full rectangle, 14 photos, two big tiles on opposite corners */
@media (min-width:761px){
  .gal:not(.open){grid-auto-flow:row dense}
  .gal:not(.open) button{grid-column:auto;grid-row:auto}
  .gal:not(.open) .p-big1{grid-column:1/3;grid-row:1/3}
  .gal:not(.open) .p-big2{grid-column:3/5;grid-row:3/5}
}
@media (min-width:1100px){
  .gal:not(.open){grid-template-columns:repeat(5,1fr);grid-auto-rows:190px}
  .gal:not(.open) .p-big2{grid-column:4/6}
}

/* About photo bigger on desktop only */
@media (min-width:1100px){
  .about{grid-template-columns:1.45fr 1fr;gap:56px}
  .about-img img{aspect-ratio:4/3;object-fit:cover}
}

/* round 4 (10/11/26): unique town pages, editorial lists instead of pills, swipe rows locked to X */
.idx{list-style:none;margin:22px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));column-gap:28px;border-top:1px solid var(--line-2)}
.idx li{border-bottom:1px solid var(--line-2)}
.idx a{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 2px;text-decoration:none;color:var(--forest);font:500 16px var(--f-body);min-height:48px}
.idx a svg{width:16px;height:16px;flex:none;opacity:.55;transition:transform .2s ease,opacity .2s ease}
.idx a:hover svg{transform:translateX(3px);opacity:1}
.idx a[aria-current]{background:var(--forest);color:var(--paper);padding-left:12px;padding-right:12px;border-radius:6px}
.dark .idx,.dark .idx li{border-color:rgba(236,231,218,.22)}
.dark .idx a{color:var(--paper)}
.idx-wrap{margin-top:40px}
.idx-lbl{font:600 13px var(--f-body);letter-spacing:.16em;text-transform:uppercase;color:var(--forest-3);margin:0;text-align:center}
.idx-towns{max-width:820px;margin-left:auto;margin-right:auto;text-align:left}
.area-copy .idx-towns{margin-left:0}
/* town photo strip: one row of four on desktop, swipe row on phones */
@media (min-width:761px){
  .gal.tp{grid-template-columns:repeat(4,1fr);grid-auto-rows:auto}
  .gal.tp button{aspect-ratio:4/3;height:auto}
}
.gal.tp+.gal-dots i:nth-child(n+5){display:none}
/* swipe rows: horizontal only (no accidental vertical scroll inside the row) */
@media (max-width:760px){
  .gal:not(.open){overflow-y:hidden}
  .idx{grid-template-columns:1fr}
}

/* desktop quote-first on every landing-page hero too (home already does it) */
.phero .btn-quote-first{order:1}.phero .btn-call-first{order:2}
@media (min-width:900px) and (hover:hover){
  .phero .btn-quote-first{background:var(--forest);color:var(--paper);border-color:var(--forest);box-shadow:0 14px 30px -14px rgba(31,58,39,.85)}
  .phero .btn-quote-first:hover{background:var(--forest-2)}
  .phero .btn-call-first{background:rgba(252,251,247,.55);color:var(--forest);border-color:var(--forest);box-shadow:none}
  .phero .btn-call-first:hover{background:var(--forest);color:var(--paper)}
}
@media (max-width:860px){.phero .btn-call-first{order:1}.phero .btn-quote-first{order:2}}

/* sticky phone bar: slides in only after the hero (and never over the open menu) */
.mbar{transform:translateY(115%);transition:transform .35s ease;pointer-events:none}
.mbar.on{transform:none;pointer-events:auto}
.menu-open .mbar{transform:translateY(115%)!important}
/* phones: hero trust = all four lines (a lone rating line read sparse), 2x2, left-aligned inside a centred block */
@media (max-width:760px){
  .trust li:nth-child(n+2){display:flex}
  .hero .trust,.phero .trust{display:inline-grid;grid-template-columns:auto;justify-items:start;gap:7px;margin-left:auto;margin-right:auto;text-align:left}
  .hero .trust li,.phero .trust li{white-space:nowrap}
  .phero .lede,.hero .lede{text-wrap:balance}
  .hero .trust li,.phero .trust li{font-size:14px;gap:7px}
  .hero .trust svg,.phero .trust svg{width:17px;height:17px}
}

.area-copy,.area>*{min-width:0}
h1,h2,.h2{text-wrap:balance}
.idx-wrap .idx{grid-template-columns:repeat(auto-fit,minmax(min(285px,100%),1fr))}

/* round 5 (10/12/26): QA pass. More photo color, same hero standard on every page, readable logo over photos */

/* buttons inside prose (thank-you page): the prose link color was turning the dark button's label invisible */
.prose a.btn{text-decoration:none}
.prose a.btn-forest{color:var(--paper)}

/* desktop page heroes: lighter cream wash so the job photo shows its real color */
@media (min-width:761px){
  .phero::before{background:
    linear-gradient(90deg,rgba(236,231,218,.96) 0%,rgba(236,231,218,.92) 36%,rgba(236,231,218,.7) 50%,rgba(236,231,218,.12) 66%,rgba(236,231,218,0) 76%),
    linear-gradient(180deg,rgba(236,231,218,.88) 0%,rgba(236,231,218,.6) 9%,rgba(236,231,218,0) 19%,rgba(236,231,218,0) 84%,var(--paper) 100%)}
}

/* photo CTA bands: let the photo through (was a near-solid green) */
.cta-band::before{background:linear-gradient(180deg,rgba(21,40,27,.6) 0%,rgba(21,40,27,.74) 100%)}
.cta-band .h2{text-shadow:0 2px 18px rgba(10,22,14,.45)}
.cta-band .lede{max-width:560px;margin-left:auto;margin-right:auto}
.cta-mid{padding:110px 0}

@media (max-width:760px){
  /* logo sits on a soft cream wash instead of straight on the tree photo */
  .hero::before{background:linear-gradient(180deg,rgba(236,231,218,.85) 0%,rgba(236,231,218,.5) 6%,rgba(236,231,218,0) 12%,rgba(236,231,218,0) 22%,rgba(236,231,218,.6) 34%,rgba(236,231,218,.93) 44%,var(--paper) 56%)}
  /* inner page heroes: same standard as the home hero, headline + call button + trust lines inside the first screen */
  .phero{padding-top:246px}
  .phero-media{height:380px}
  .phero::before{background:linear-gradient(180deg,rgba(236,231,218,.85) 0px,rgba(236,231,218,.5) 46px,rgba(236,231,218,0) 96px,rgba(236,231,218,0) 160px,rgba(236,231,218,.85) 250px,var(--paper) 350px)}
  .phero-plain{padding-top:120px}
  .phero .crumbs{margin-bottom:6px}
  .phero .cta-row{margin-top:22px}
  .phero .trust{margin-top:20px}
  .cta-mid{padding:84px 0}
}

/* <picture> wrappers (phone hero crops, photo bands) must fill their box like the bare <img> did */
.phero-media picture,.cta-band-bg picture{display:block;width:100%;height:100%}

/* home hero: slide in without the opacity fade. Faded-out text isn't painted, so the fade was pushing
   the page's largest paint ~1.2s later on phones (Lighthouse LCP). The motion stays, the wait goes. */
.hero .rv-up{opacity:1}

/* round 6 (10/12 Jeffrey desktop review) */
/* home hero, desktop: bigger copy that sits a touch higher than the wizard card; real buttons are back
   (call + text a photo; the wizard beside them is the estimate action, so no "Get a free estimate" button here) */
.btn-text-d{display:none}
@media (min-width:1100px){
  .hero-wiz .hero-in{max-width:660px;margin-top:-56px}
  .hero-wiz h1{font-size:clamp(68px,6.9vw,108px)}
  .hero-wiz .lede{font-size:20.5px;max-width:580px}
  .hero-wiz .tagline{font-size:16px}
  .hero-ctas{display:flex}
  .hero-ctas .btn-quote-first{display:none}
  .hero-ctas .btn-call-first{order:1;background:var(--forest);color:var(--paper);border-color:var(--forest);box-shadow:0 14px 30px -14px rgba(31,58,39,.85)}
  .hero-ctas .btn-text-d{display:inline-flex;order:2}
  .hero-call-d{display:none}
}
/* seven service cards: 4 + 3 on wide screens so Brush Hauling isn't alone on its own row */
@media (min-width:1180px){
  .svc-grid:has(>.svc:nth-child(7):last-child)>.svc{flex-basis:calc((100% - 66px)/4)}
}
/* reviews heading centres below 1040px: a centred eyebrow gets dashes on both sides */
@media (max-width:1040px){.rv-head .eyebrow::after{display:block}}

/* round 7 (10/12 Jeffrey phone review) */
@media (max-width:760px){
  /* hero trust points: 2x2 instead of four stacked lines, so the headline drops back down onto the cream */
  .hero .trust,.phero .trust{display:grid;grid-template-columns:repeat(2,auto);justify-content:center;justify-items:start;column-gap:18px;row-gap:9px;margin-top:20px}
  .hero .trust li,.phero .trust li{font-size:13.5px;gap:6px}
  .trust .g{display:none}
  .hero{padding-bottom:34px}
  /* the wash is measured up from the bottom of the hero (where the copy sits), not as a % of screen height,
     so the headline lands on cream on a short phone and a tall one alike */
  .hero::before{background:
    linear-gradient(180deg,rgba(236,231,218,.85) 0,rgba(236,231,218,.5) 46px,rgba(236,231,218,0) 100px),
    linear-gradient(0deg,var(--paper) 0,var(--paper) 340px,rgba(236,231,218,.9) 440px,rgba(236,231,218,.74) 540px,rgba(236,231,218,0) 660px)}
  .hero h1,.hero .eyebrow,.hero .tagline{text-shadow:0 0 18px rgba(236,231,218,.95),0 0 4px rgba(236,231,218,.8)}
  .hero h1 .boxed{text-shadow:none}
}
@media (max-width:370px){
  .hero .trust,.phero .trust{column-gap:12px}
  .hero .trust li,.phero .trust li{font-size:12.5px}
}
@media (max-width:400px){.hero .tagline{font-size:11.5px;letter-spacing:.075em;gap:4px 8px}.hero .tagline span+span::before{margin-right:8px}}
/* reels: a playing <video> on iPhone grabs the touch itself, so the swipe never reached the track. The video
   ignores touches now and the swipe lands on the card (nothing on the video was tappable anyway) */
.reel-v video{pointer-events:none;-webkit-user-select:none;user-select:none}
.reel-v{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
/* reviews on phones: the row drifts slowly on its own (house drift pattern); a touch hands it to the thumb */
@media (max-width:760px){
  .marquee.drift{scroll-snap-type:none}
  .marquee.drift .track{transform:translate3d(calc(var(--dx,0)*-1px),0,0);transition:none}
  .marquee.drift .track .rv[aria-hidden]{display:flex}
}
/* quote wizard: solid pictograms on the service + timing answers (towns stay text) */
.qw-opts.has-ic .qw-opt{display:flex;align-items:center;gap:10px;padding:10px 12px}
.qw-ic{width:26px;height:26px;flex:none;fill:var(--truck);transition:fill .15s}
.qw-opt.sel .qw-ic{fill:var(--paper)}
.qw-opt span{min-width:0}
@media (max-width:440px){.qw-opts.has-ic .qw-opt{gap:8px;padding:10px 9px;font-size:14.5px;letter-spacing:-.005em}.qw-ic{width:24px;height:24px}}
@media (max-width:440px){
  /* two-column service answers on phones: icon on top, label under it (no squeezed two-line labels) */
  .qw-opts.cols2.has-ic .qw-opt{flex-direction:column;justify-content:center;text-align:center;gap:6px;padding:12px 6px 11px;font-size:15px}
  .qw-opts.cols2.has-ic .qw-ic{width:30px;height:30px}
}

/* round 8 (10/12 Jeffrey desktop review): services as an editorial index on desktop. One big pinned photo on the left
   cross-fades to whichever service is in focus on the right (scroll or hover). Phones/tablets keep the photo cards. */
.svc-stage,.svc-n{display:none}
@media (min-width:1024px){
  .svc-ed{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);gap:72px;align-items:start}
  .svc-stage{display:block;position:sticky;top:calc(var(--hdr,76px) + 28px);height:min(calc(100vh - 150px),640px);min-height:460px;border-radius:var(--r);overflow:hidden;background:#15281B;box-shadow:var(--sh);isolation:isolate}
  .svc-stage figure{position:absolute;inset:0;margin:0;opacity:0;transition:opacity .8s ease}
  .svc-stage figure img{width:100%;height:100%;object-fit:cover;transform:scale(1.07);transition:transform 7s cubic-bezier(.2,.7,.2,1)}
  .svc-stage figure.on{opacity:1;z-index:1}
  .svc-stage figure.on img{transform:scale(1)}
  .svc-stage::after{content:"";position:absolute;left:0;right:0;bottom:0;height:42%;z-index:2;background:linear-gradient(0deg,rgba(14,28,19,.72),rgba(14,28,19,0));pointer-events:none}
  .svc-cap{position:absolute;left:30px;bottom:24px;z-index:3;color:var(--paper);display:flex;align-items:baseline;gap:10px}
  .svc-cap b{font:400 64px/1 var(--f-logo)}
  .svc-cap span{font:600 15px var(--f-body);letter-spacing:.12em;opacity:.8}
  .svc-ed .svc-grid,.svc-grid:has(>.svc:nth-child(7):last-child){display:block;max-width:none;margin:0}
  .svc-ed .svc{display:block;background:none;border:0;border-top:1px solid var(--line-2);border-radius:0;box-shadow:none;padding:28px 0;transform:none!important;overflow:visible}
  .svc-ed .svc:hover{box-shadow:none}
  .svc-ed .svc:last-child{border-bottom:1px solid var(--line-2)}
  .svc-ed .svc figure{display:none}
  .svc-ed .svc-body{padding:0;display:grid;grid-template-columns:62px minmax(0,1fr);column-gap:16px}
  .svc-ed .svc-body>*{grid-column:2;transition:opacity .4s ease,color .3s ease}
  .svc-ed .svc-n{display:block;grid-column:1;grid-row:1/span 3;font:400 30px/1 var(--f-logo);color:var(--truck);padding-top:7px}
  .svc-ed .svc h3{font-size:clamp(30px,2.6vw,40px);line-height:1.05}
  .svc-ed .svc p{font-size:17px;line-height:1.6;max-width:470px;margin-top:10px;flex:none}
  .svc-ed .svc .more{margin-top:14px}
  .svc-ed.js .svc:not(.on) .svc-body>*{opacity:.4}
  .svc-ed.js .svc.on .more svg{transform:translateX(4px)}
}
/* phone hero: the tree being cut keeps going down past the cream wash. A cut-out of its two trunks (tools/trunk/)
   sits above the wash, moves with the photo's slow zoom, and fades out before the buttons */
.hero-trunk{display:none}
@media (max-width:760px){
  .hero-trunk{display:block;position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;
    -webkit-mask-image:linear-gradient(0deg,transparent 0,transparent 250px,rgba(0,0,0,.3) 330px,rgba(0,0,0,.62) 430px,rgba(0,0,0,.8) 540px,#000 680px);
            mask-image:linear-gradient(0deg,transparent 0,transparent 250px,rgba(0,0,0,.3) 330px,rgba(0,0,0,.62) 430px,rgba(0,0,0,.8) 540px,#000 680px)}
  .hero-trunk img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;transform-origin:50% 30%;animation:kb 28s ease-out forwards;
    filter:drop-shadow(0 0 1px rgba(31,58,39,.55)) drop-shadow(0 0 6px rgba(31,58,39,.18))}
  .hero::before{background:
    linear-gradient(180deg,rgba(236,231,218,.85) 0,rgba(236,231,218,.5) 46px,rgba(236,231,218,0) 100px),
    linear-gradient(0deg,var(--paper) 0,var(--paper) 330px,rgba(236,231,218,.86) 430px,rgba(236,231,218,.66) 530px,rgba(236,231,218,0) 640px)}
}
@media (max-width:760px) and (prefers-reduced-motion:reduce){.hero-trunk img{animation:none}}

/* round 9 (10/12 Jeffrey desktop review) */
/* cleanup: the brown street shot fought the green; now a bright action shot, shown at its real 4:3 shape with a quiet
   caption under it instead of a pill on top */
@media (min-width:1041px){.clean{grid-template-columns:1.1fr 1fr;gap:72px}}
.clean-img img,.clean-img picture{aspect-ratio:4/3}
.clean-img img{border-radius:14px;box-shadow:0 30px 60px -30px rgba(0,0,0,.55)}
.clean-img figcaption{position:static;background:none;backdrop-filter:none;padding:14px 2px 0;font-size:13.5px;color:var(--khaki-2);letter-spacing:.02em}
.clean-img figcaption::before{content:"";display:inline-block;width:22px;height:1.5px;background:var(--khaki);vertical-align:4px;margin-right:10px}
/* trust strip: the star hangs off the right of "5.0" so the number itself is centred over its label */
.strip b{position:relative}
.strip b i{position:absolute;left:100%;top:50%;transform:translateY(-50%);margin-left:.12em}
.strip b{display:table;margin-left:auto;margin-right:auto}
/* phone hero trunks: stronger behind the headline and carried further down, fading out behind the paragraph */
@media (max-width:760px){
  .hero-trunk{-webkit-mask-image:linear-gradient(0deg,transparent 0,transparent 190px,rgba(0,0,0,.35) 260px,rgba(0,0,0,.62) 340px,rgba(0,0,0,.92) 420px,#000 500px);
                      mask-image:linear-gradient(0deg,transparent 0,transparent 190px,rgba(0,0,0,.35) 260px,rgba(0,0,0,.62) 340px,rgba(0,0,0,.92) 420px,#000 500px)}
  .hero-trunk img{filter:drop-shadow(0 0 1px rgba(31,58,39,.7)) drop-shadow(0 0 5px rgba(31,58,39,.22)) contrast(1.06)}
}

/* reels (round 9): one clip in focus. Native scroll-snap row; side clips smaller and dimmed */
#reels .sec-head{margin-bottom:34px}
.rl-wrap{position:relative;--rw:340px}
.rl-row{display:flex;gap:22px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;
  padding:6px calc(50% - var(--rw)/2) 10px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 14%,#000 86%,transparent);mask-image:linear-gradient(90deg,transparent,#000 14%,#000 86%,transparent)}
.rl-row::-webkit-scrollbar{display:none}
.rl{flex:0 0 var(--rw);margin:0;scroll-snap-align:center;scroll-snap-stop:always;transition:transform .5s cubic-bezier(.2,.8,.2,1),opacity .5s ease}
.rl:not(.on){transform:scale(.84);opacity:.42}
.rl-v{position:relative;aspect-ratio:9/16;border-radius:16px;overflow:hidden;background:#15281B;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.rl.on .rl-v{box-shadow:0 34px 60px -30px rgba(20,34,24,.6)}
.rl-v video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.rl-fs{position:absolute;right:12px;bottom:12px;width:44px;height:44px;border-radius:50%;border:0;display:grid;place-items:center;background:rgba(14,28,19,.62);color:var(--paper);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:pointer;opacity:0;transition:opacity .3s}
.rl.on .rl-fs{opacity:1}
.rl-fs svg{width:20px;height:20px}
.rl figcaption{margin-top:14px;text-align:center;font-size:15px;color:var(--muted);opacity:0;transition:opacity .4s}
.rl.on figcaption{opacity:1}
.rl-nav{position:absolute;top:calc(50% - 40px);z-index:3;width:52px;height:52px;border-radius:50%;border:1px solid var(--line-2);background:rgba(247,244,236,.96);color:var(--forest);display:grid;place-items:center;cursor:pointer;box-shadow:var(--sh);transition:opacity .2s}
.rl-nav svg{width:20px;height:20px}
.rl-nav:disabled{opacity:.35;cursor:default}
.rl-nav.prev{left:calc(50% - var(--rw)/2 - 92px)}.rl-nav.next{right:calc(50% - var(--rw)/2 - 92px)}
.rl-count{text-align:center;margin-top:16px;font:600 13px var(--f-body);letter-spacing:.14em;color:var(--muted)}
.rl-count b{color:var(--forest)}
@media (max-width:760px){
  .rl-wrap{--rw:min(66vw,280px)}
  .rl-row{gap:12px;-webkit-mask-image:none;mask-image:none}
  .rl:not(.on){transform:scale(.88);opacity:.5}
  .rl-nav{display:none}
  .rl figcaption{font-size:14px}
}
/* desktop hero wizard (round 9): bigger card, bigger answers and icons */
@media (min-width:1100px){
  .hero-grid{grid-template-columns:minmax(0,1fr) 480px;gap:52px}
  .qw-hero{padding:32px 32px 26px}
  .qw-hero .qw-title{font-size:30px}
  .qw-hero .qw-q{font-size:22px;margin-bottom:14px}
  .qw-hero .qw-opts{gap:10px}
  .qw-hero .qw-opts.has-ic .qw-opt{min-height:64px;padding:12px 14px;gap:12px;font-size:16.5px}
  .qw-hero .qw-ic{width:36px;height:36px}
  /* FREE sticker: a touch bigger, and the small words pulled in so they clear the dashed ring */
  .hero-wiz .sticker.sticker-form{width:146px;height:146px;top:-66px;left:-74px}
  .sticker-form b{font-size:29px}
  .sticker-form span{font-size:9px;letter-spacing:.07em;line-height:1.35;margin-top:4px}
  .sticker-form::after{inset:14px}
  .qw-hero .qw-head{padding-left:70px}
}
@media (min-width:1280px){.hero-grid{grid-template-columns:minmax(0,1fr) 520px}}
.qw-opts.has-ic .qw-ic{width:30px;height:30px}
@media (min-width:1100px){.qw-hero .qw-opts.has-ic .qw-ic{width:36px;height:36px}}

/* equipment (round 10, Jeffrey picked "feature + three"): text never sits on the photos.
   Desktop: the bucket truck big on the left, the other three as photo + text rows on the right.
   Tablet: 2x2, caption under each photo. Phones: a drifting swipe row of photo cards, caption under. */
.is-clone{display:none!important}
.eq figure{margin:0;background:none;border:0;border-radius:0;overflow:visible;outline:none}
.eq img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;object-position:var(--fx,50%) 50%;border-radius:14px}
.eq figcaption{padding:14px 2px 0}
.eq b{display:block;font:400 24px/1.1 var(--f-logo);color:var(--forest)}
.eq span{display:block;color:var(--muted);font-size:15px;line-height:1.5;margin-top:6px}
@media (min-width:1024px){
  .eq{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);grid-template-rows:repeat(3,auto);gap:26px 44px;align-items:center}
  .eq figure:first-child{grid-row:1/4;align-self:stretch;display:flex;flex-direction:column}
  .eq figure:first-child img{flex:1;min-height:0;height:100%;aspect-ratio:auto}
  .eq figure:first-child figcaption{padding-top:16px}
  .eq figure:first-child b{font-size:34px}
  .eq figure:first-child span{font-size:16.5px;max-width:520px}
  .eq figure:not(:first-child){display:grid;grid-template-columns:200px minmax(0,1fr);gap:22px;align-items:center}
  .eq figure:not(:first-child) img{border-radius:12px}
  .eq figure:not(:first-child) figcaption{padding:0}
}
@media (max-width:760px){
  .eq{display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;gap:14px;margin:0 -20px;padding:0 20px 4px;scrollbar-width:none}
  .eq::-webkit-scrollbar{display:none}
  .eq figure{flex:0 0 76%;scroll-snap-align:center}
  .eq .rv-up{opacity:1;transform:none}
  .eq figcaption{text-align:left}
  .eq b{font-size:22px}
  .eq span{font-size:14.5px}
  .drift{scroll-snap-type:none!important}
  .drift>*{transform:translate3d(calc(var(--dx,0)*-1px),0,0)!important;transition:none!important}
  .drift>figure.is-clone{display:block!important}
}

/* wide wizard icon (brush hauling): a wider box, same visual height as its neighbours; negative side margins keep the label in line */
.qw-opts.has-ic .qw-ic.qw-ic-w{width:42px;height:20px;margin:5px -6px}
@media (min-width:1100px){.qw-hero .qw-opts.has-ic .qw-ic.qw-ic-w{width:51px;height:24px;margin:6px -7.5px}}
@media (min-width:1100px){.qw-hero .qw-opts.has-ic .qw-ic.qw-ic-w{margin:6px -3px 6px -12px}}
@media (max-width:440px){.qw-opts.cols2.has-ic .qw-ic.qw-ic-w{width:56px;height:27px;margin:1.5px 0}}
@media (min-width:1100px){.qw-hero .qw-opts.has-ic .qw-ic.qw-ic-w{margin:6px -5px 6px -6px}}
/* highlight boxes sat on the tails of the line above (y, g, p, commas: "yards" on Taft). Drop every box a little
   so it clears descenders; on a one-line heading this only adds a sliver of space above */
h1 .boxed,h2 .boxed,h3 .boxed,.h2 .boxed{margin-top:.2em}

/* ================= 10/14 Marco's review: estimate first, call second ================= */
/* every hero, every screen: "Get a free estimate" is the filled button, Call is the outline one */
.hero .btn-quote-first,.phero .btn-quote-first{order:1;background:var(--forest);color:var(--paper);border-color:var(--forest);box-shadow:0 14px 30px -14px rgba(31,58,39,.85)}
.hero .btn-quote-first:hover,.phero .btn-quote-first:hover{background:var(--forest-2)}
.hero .btn-call-first,.phero .btn-call-first{order:2;background:rgba(252,251,247,.55);color:var(--forest);border-color:var(--forest);box-shadow:none}
.hero .btn-call-first:hover,.phero .btn-call-first:hover{background:var(--forest);color:var(--paper)}
/* desktop home: the wizard beside the copy is the estimate, so only the (outline) call button shows under it */
@media (min-width:1100px){
  .hero-wiz .hero-ctas .btn-quote-first{display:none}
  .hero-wiz .hero-ctas .btn-call-first{order:1;background:rgba(252,251,247,.55);color:var(--forest);border-color:var(--forest);box-shadow:none}
}
/* sticky bar on phones: Free estimate is the main button */
.mbar a.est{flex:1.5;background:var(--forest);color:var(--paper)}

/* before/after slider: the before image is clipped at --p from the left; drag anywhere on the photo */
.ba-wrap{display:grid;grid-template-columns:1fr minmax(0,520px);gap:64px;align-items:center}
.ba-hint{display:flex;align-items:center;gap:8px;margin-top:18px;font:600 14.5px var(--f-body);color:var(--forest-3)}
.ba-hint svg{width:16px;height:16px}
.ba{position:relative;margin:0;aspect-ratio:4/5;border-radius:var(--r);overflow:hidden;box-shadow:var(--sh);touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:ew-resize;background:var(--paper-2)}
.ba img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.ba-before{clip-path:inset(0 calc(100% - var(--p)) 0 0)}
.ba-line{position:absolute;top:0;bottom:0;left:var(--p);width:3px;margin-left:-1.5px;background:var(--paper);box-shadow:0 0 0 1px rgba(27,42,31,.15)}
.ba-line i{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:2px;padding:0 10px;height:46px;border-radius:23px;background:var(--forest);color:var(--paper);box-shadow:0 8px 20px -6px rgba(27,42,31,.6)}
.ba-line svg{width:15px;height:15px}
.ba-tag{position:absolute;top:14px;padding:6px 11px;border-radius:8px;background:rgba(21,40,27,.82);color:var(--paper);font:600 12.5px var(--f-body);letter-spacing:.04em}
.ba-tag-b{left:14px}.ba-tag-a{right:14px}
.ba-range{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.ba:has(.ba-range:focus-visible) .ba-line i{outline:3px solid var(--truck);outline-offset:2px}
/* each label rides with its own photo, so the line wipes it away instead of cutting through it */
.ba-lay{position:absolute;inset:0;pointer-events:none}
.ba-lay-b{clip-path:inset(0 calc(100% - var(--p)) 0 0)}
.ba-lay-a{clip-path:inset(0 0 0 var(--p))}
@media (max-width:900px){
  .ba-wrap{grid-template-columns:1fr;gap:28px;text-align:center}
  .ba-copy .eyebrow,.ba-hint{justify-content:center}
  .ba{max-width:440px;width:100%;margin:0 auto}
}

/* wizard: two .two rows on the contact step (town step dropped 10/14) need the normal field gap between them */
.qw .two+.two{margin-top:14px}

/* ================= Brand C (Jeffrey 10/8) =================
   Headlines in the logo's poster serif (FB cover, business card); accents in the truck orange.
   Abril only at headline sizes, never body or small UI text. */
:root{--f-logo:"Abril Fatface",Georgia,serif;--truck:#D8691F;--truck-ink:#A04A14;--truck-lt:#F2A35E}
h1,h2,.h2,.qw-title,.svc h3,.strip b{font-family:var(--f-logo);font-weight:400;letter-spacing:0}
.sticker::before{background:var(--truck)}
/* small text on cream uses the darker orange (4.5:1); the bright orange is for shapes and icons */
.eyebrow{color:var(--truck-ink)}
/* phone hero eyebrow stays forest: it sits over the photo */
@media (max-width:760px){.hero .eyebrow{color:var(--forest)}}
.eyebrow::before,.eyebrow::after{background:var(--truck)}
.dark .eyebrow{color:var(--truck-lt)}
.dark .eyebrow::before,.dark .eyebrow::after{background:var(--truck-lt)}
.hero .tagline span+span::before,.dd-panel a::before{background:var(--truck)}
.trust svg,.hero-call-d svg,.hdr-phone svg{color:var(--truck)}
/* stats bar numbers stay khaki (Jeffrey 10/8) */
/* FREE badge: even 16-point starburst (the demo's hand-drawn polygon had a lopsided point on the right) */
.sticker::before{clip-path:polygon(50% 0%,58.29% 8.32%,69.13% 3.81%,73.61% 14.66%,85.36% 14.64%,85.34% 26.39%,96.19% 30.87%,91.68% 41.71%,100% 50%,91.68% 58.29%,96.19% 69.13%,85.34% 73.61%,85.36% 85.36%,73.61% 85.34%,69.13% 96.19%,58.29% 91.68%,50% 100%,41.71% 91.68%,30.87% 96.19%,26.39% 85.34%,14.64% 85.36%,14.66% 73.61%,3.81% 69.13%,8.32% 58.29%,0% 50%,8.32% 41.71%,3.81% 30.87%,14.66% 26.39%,14.64% 14.64%,26.39% 14.66%,30.87% 3.81%,41.71% 8.32%)}

