/* ============================================================================
   SOUTHERN STANDARD — SITE-WIDE STYLES
   To change the LOOK of the whole site, edit the variables in :root below.
   (Colors are hex codes — grab new ones from a site like coolors.co.)
   ============================================================================ */
:root{
  /* ---- BRAND COLORS (edit these to re-theme the whole site) ---- */
  --canopy:#16311F;        /* deep green — headings & main text */
  --pine:#24512F;          /* primary green — buttons */
  --palmetto:#3C7A4A;      /* mid green — links & accents */
  --sawgrass:#EAF3E7;      /* light green — section backgrounds */
  --paper:#FCFDFB;         /* near-white page background */
  --hivis:#E8770F;         /* orange — main "Call" buttons only */
  --hivis-dark:#C96407;
  --bark:#6E5741;
  --line:#D5E3D2;
  --ink-soft:#41563F;

  /* ---- FONTS (change both names here AND the <link> in each page's head) ---- */
  --font:'Archivo',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'IBM Plex Mono','SF Mono',Consolas,monospace;

  --radius:14px;
  --shadow:0 2px 14px rgba(22,49,31,.08);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
body{font-family:var(--font);color:var(--canopy);background:var(--paper);line-height:1.6;font-size:16.5px}
img{max-width:100%;display:block}
a{color:var(--palmetto)}
:focus-visible{outline:3px solid var(--hivis);outline-offset:2px;border-radius:4px}
.wrap{max-width:1100px;margin:0 auto;padding:0 20px}
h1,h2,h3{line-height:1.15;letter-spacing:-.015em}
h1{font-size:clamp(30px,5.4vw,46px);font-weight:900}
h2{font-size:clamp(26px,4.5vw,38px);font-weight:800}
h3{font-size:19px;font-weight:700}
.eyebrow{font-size:12.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--palmetto);margin-bottom:12px}
section{padding:60px 0}
.sub{color:var(--ink-soft);max-width:640px;margin-top:10px}
.answer{background:#fff;border-left:4px solid var(--palmetto);border-radius:0 var(--radius) var(--radius) 0;padding:16px 20px;margin-top:20px;font-size:16px;color:var(--ink-soft);max-width:760px;box-shadow:var(--shadow)}
.answer b{color:var(--canopy)}
.prose p{margin-top:14px;color:var(--ink-soft);max-width:720px}
.prose h2{margin-top:14px}
.prose h3{margin-top:26px;color:var(--canopy)}
.center{text-align:center}
.mt{margin-top:26px}

/* ---------- draft banner ---------- */
.draft-bar{background:var(--canopy);color:#DDEBD9;text-align:center;font-size:12.5px;padding:7px 14px;letter-spacing:.04em}
.draft-bar strong{color:#fff}

/* ---------- header ---------- */
header{position:sticky;top:0;z-index:50;background:rgba(252,253,251,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;height:66px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--canopy)}
.brand-mark{width:36px;height:36px;flex:0 0 36px}
.brand-name{font-weight:900;font-size:15px;letter-spacing:.02em;line-height:1.1}
.brand-name span{display:block;font-weight:600;font-size:10px;letter-spacing:.16em;color:var(--palmetto)}
.nav-links{display:none;gap:22px;list-style:none;align-items:center}
.nav-links a{text-decoration:none;color:var(--canopy);font-weight:600;font-size:14.5px}
.nav-links a:hover{color:var(--palmetto)}
.nav-call{display:none!important}
@media(min-width:940px){.nav-links{display:flex}.nav-call{display:inline-flex!important}}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font);font-weight:700;font-size:16px;padding:14px 22px;border-radius:999px;text-decoration:none;border:2px solid transparent;cursor:pointer;min-height:48px;transition:transform .12s ease,background .15s ease}
.btn:active{transform:scale(.98)}
.btn-call{background:var(--hivis);color:#fff}
.btn-call:hover{background:var(--hivis-dark)}
.btn-green{background:var(--pine);color:#fff}
.btn-green:hover{background:var(--canopy)}
.btn-ghost{background:#fff;color:var(--pine);border-color:var(--pine)}
.btn-ghost:hover{background:var(--sawgrass)}
.btn-sm{font-size:14px;padding:10px 16px;min-height:40px}
.ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}

/* ---------- hero ---------- */
.hero{background:linear-gradient(180deg,var(--sawgrass) 0%,var(--paper) 100%);padding:52px 0 46px;position:relative;overflow:hidden}
.hero-rings{position:absolute;right:-120px;top:-120px;width:420px;height:420px;opacity:.5;pointer-events:none}
.hero-grid{display:grid;gap:34px;position:relative}
@media(min-width:900px){.hero-grid{grid-template-columns:1.05fr .95fr;align-items:center}}
.hero h1 em{font-style:normal;color:var(--palmetto)}
.hero-answer{margin-top:16px;font-size:17px;color:var(--ink-soft);max-width:560px}
.hero-note{margin-top:14px;font-size:14px;color:var(--ink-soft)}
.hero-note b{color:var(--canopy)}
.page-hero{background:linear-gradient(180deg,var(--sawgrass),var(--paper));padding:44px 0}
.crumbs{font-size:13px;color:var(--ink-soft);margin-bottom:10px}
.crumbs a{text-decoration:none}

/* ---------- photo placeholders ---------- */
.ph{position:relative;border-radius:var(--radius);overflow:hidden;background:#DCE9D8;border:2px dashed var(--palmetto)}
.ph>img{width:100%;height:100%;object-fit:cover}
.ph-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:16px;gap:5px;background:rgba(220,233,216,.86)}
.ph-label .t1{font-weight:800;font-size:13.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--pine)}
.ph-label .t2{font-size:12.5px;color:var(--ink-soft)}
.ph-label .t3{font-family:var(--mono);font-size:11px;color:var(--bark)}
.ph.loaded .ph-label{display:none}
.ph.loaded{border-style:solid;border-color:transparent}
.ph-hero{aspect-ratio:16/10;box-shadow:var(--shadow)}
.ph-sq{aspect-ratio:4/3}
.ph-wide{aspect-ratio:16/7}

/* ---------- trust bar ---------- */
.trust{background:var(--canopy);color:#E8F1E4;padding:18px 0}
.trust ul{list-style:none;display:flex;flex-wrap:wrap;gap:10px 26px;justify-content:center;font-size:14px;font-weight:600}
.trust li{display:flex;align-items:center;gap:7px}

/* ---------- cards / grids ---------- */
.grid{display:grid;gap:16px;margin-top:28px}
.g2{grid-template-columns:1fr}
.g3{grid-template-columns:1fr}
@media(min-width:640px){.g3{grid-template-columns:repeat(2,1fr)}.g2{grid-template-columns:repeat(2,1fr)}}
@media(min-width:980px){.g3{grid-template-columns:repeat(3,1fr)}}
.card{background:#fff;border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);border:1px solid var(--line);display:flex;flex-direction:column;gap:10px}
.card h3{display:flex;align-items:center;gap:10px}
.card p{font-size:15px;color:var(--ink-soft);flex:1}
.card a.more{font-weight:700;font-size:14.5px;text-decoration:none}
.card .tag{font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#fff;background:var(--hivis);border-radius:99px;padding:3px 10px;margin-left:auto}
.svc-icon{width:26px;height:26px;color:var(--palmetto);flex:0 0 26px}
.tint{background:var(--sawgrass)}

/* ---------- promise / checklist items ---------- */
.checklist{display:grid;gap:14px;margin-top:26px}
@media(min-width:760px){.checklist{grid-template-columns:repeat(2,1fr)}}
.check-item{display:flex;gap:14px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow)}
.check-item .chk{flex:0 0 26px;height:26px;border-radius:50%;background:var(--sawgrass);display:flex;align-items:center;justify-content:center;color:var(--pine);font-weight:900}
.check-item p{font-size:15px;color:var(--ink-soft)}
.check-item b{color:var(--canopy);display:block;margin-bottom:2px}

/* ---------- steps ---------- */
.steps{display:grid;gap:18px;margin-top:28px}
@media(min-width:760px){.steps{grid-template-columns:repeat(3,1fr)}}
.step{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px}
.step .n{font-family:var(--mono);font-weight:600;color:var(--hivis);font-size:14px;letter-spacing:.08em}
.step h3{margin:8px 0 6px}
.step p{font-size:15px;color:var(--ink-soft)}

/* ---------- signs list ---------- */
.signs-list{list-style:none;margin-top:24px;display:grid;gap:12px;max-width:760px}
.signs-list li{display:flex;gap:14px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;font-size:15.5px;color:var(--ink-soft)}
.signs-list li b{color:var(--canopy)}
.signs-list .warn{flex:0 0 24px;color:var(--hivis);font-weight:900}

/* ---------- service area ---------- */
.area-cols{display:grid;gap:24px;margin-top:24px}
@media(min-width:760px){.area-cols{grid-template-columns:1fr 1fr}}
.area-cols h3{font-size:15px;letter-spacing:.1em;text-transform:uppercase;color:var(--palmetto);margin-bottom:10px}
.town-list{list-style:none;columns:2;font-size:15px;color:var(--ink-soft)}
.town-list li{padding:3px 0;break-inside:avoid}
.town-list li::before{content:"• ";color:var(--palmetto)}

/* ---------- reviews ---------- */
.rev-grid{display:grid;gap:16px;margin-top:26px}
@media(min-width:820px){.rev-grid{grid-template-columns:repeat(3,1fr)}}
.rev{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow)}
.stars{color:var(--hivis);letter-spacing:2px;font-size:15px}
.rev p{font-size:15px;color:var(--ink-soft);margin:10px 0 14px}
.rev .who{font-weight:700;font-size:14px}
.rev .who span{display:block;font-weight:500;font-size:12.5px;color:var(--ink-soft)}

/* ---------- FAQ ---------- */
.faq details{background:#fff;border:1px solid var(--line);border-radius:var(--radius);margin-top:12px;overflow:hidden}
.faq summary{list-style:none;cursor:pointer;padding:18px 22px;font-weight:700;font-size:16px;display:flex;justify-content:space-between;align-items:center;gap:14px;min-height:48px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-size:22px;color:var(--palmetto);font-weight:600;flex:0 0 auto}
.faq details[open] summary::after{content:"–"}
.faq .a{padding:0 22px 20px;font-size:15.5px;color:var(--ink-soft)}

/* ---------- final CTA ---------- */
.final{background:var(--canopy);color:#fff;text-align:center}
.final h2{color:#fff}
.final p{color:#C7DBC3;max-width:560px;margin:12px auto 0}
.final .ctas{justify-content:center}
.final .btn-ghost{background:transparent;color:#fff;border-color:#5E8663}
.final .btn-ghost:hover{background:rgba(255,255,255,.08)}

/* ---------- calculator ---------- */
.calc-grid{display:grid;gap:22px;margin-top:28px}
@media(min-width:960px){.calc-grid{grid-template-columns:1.4fr 1fr;align-items:start}}
.tree-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;margin-bottom:16px;border:1px solid var(--line)}
.tree-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.tree-head h3{font-size:16px;letter-spacing:.04em;text-transform:uppercase}
.tree-head .tree-est{font-family:var(--mono);font-weight:600;font-size:15px;color:var(--pine);background:var(--sawgrass);padding:4px 12px;border-radius:8px}
.remove-tree{background:none;border:none;color:#A33;font-size:13px;font-weight:700;cursor:pointer;padding:6px;text-decoration:underline}
.f-group{margin-bottom:16px}
.f-label{display:block;font-size:12.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:2px solid var(--line);background:#fff;border-radius:10px;padding:10px 14px;font-family:var(--font);font-size:14.5px;font-weight:600;color:var(--canopy);cursor:pointer;min-height:44px;transition:border-color .12s,background .12s}
.chip small{display:block;font-weight:500;font-size:11.5px;color:var(--ink-soft)}
.chip .chip-sub{display:block;font-weight:600;font-size:12.5px;color:var(--pine);margin-top:2px;line-height:1.2}
.chip[aria-pressed="true"] .chip-sub{color:var(--canopy)}
.chip[aria-pressed="true"]{border-color:var(--pine);background:var(--sawgrass)}
.chip[aria-pressed="true"] small{color:var(--pine)}
.check-row{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600}
.check-row input{width:20px;height:20px;accent-color:var(--pine)}
.add-tree{width:100%;border:2px dashed var(--palmetto);background:transparent;color:var(--pine);font-family:var(--font);font-weight:800;font-size:15.5px;border-radius:var(--radius);padding:16px;cursor:pointer}
.add-tree:hover{background:#fff}
.multi-badge{display:inline-flex;align-items:center;gap:6px;background:var(--sawgrass);color:var(--pine);font-size:13px;font-weight:700;border-radius:99px;padding:6px 14px;margin-top:14px}
.ticket{background:#fff;border-radius:var(--radius);box-shadow:0 6px 24px rgba(22,49,31,.14);overflow:hidden;position:sticky;top:86px}
.ticket-head{background:var(--canopy);color:#fff;padding:16px 22px}
.ticket-head .t{font-size:12px;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:#9CC49A}
.ticket-head .n{font-family:var(--mono);font-size:12px;color:#7FA37D;margin-top:2px}
.ticket-body{padding:20px 22px}
.t-row{display:flex;justify-content:space-between;gap:12px;font-size:14.5px;padding:7px 0;border-bottom:1px dashed var(--line)}
.t-row .l{color:var(--ink-soft)}
.t-row .v{font-family:var(--mono);font-weight:600;white-space:nowrap}
.t-row.disc .v,.t-row.disc .l{color:var(--hivis-dark);font-weight:700}
.t-total{display:flex;justify-content:space-between;align-items:baseline;padding:16px 0 6px}
.t-total .l{font-weight:800;font-size:15px;letter-spacing:.06em;text-transform:uppercase}
.t-total .v{font-family:var(--mono);font-weight:600;font-size:clamp(22px,3vw,27px);color:var(--pine)}
.t-note{font-size:13px;color:var(--ink-soft);padding:10px 0 14px;border-top:1px solid var(--line);margin-top:8px}
.t-cta{display:flex;flex-direction:column;gap:10px}
.t-cap{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.t-cap label{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
.t-cap input{width:100%;margin:6px 0 10px;padding:12px 14px;border:2px solid var(--line);border-radius:10px;font-family:var(--font);font-size:15px}
.t-cap input:focus{border-color:var(--palmetto);outline:none}
.t-success{display:none;background:var(--sawgrass);border:1px solid var(--palmetto);color:var(--pine);font-size:14px;font-weight:600;border-radius:10px;padding:12px 14px;margin-top:10px}

/* ---------- footer ---------- */
footer{background:#0F2416;color:#9DB89A;font-size:14px;padding:44px 0 120px}
@media(min-width:900px){footer{padding-bottom:44px}}
.foot-grid{display:grid;gap:26px}
@media(min-width:820px){.foot-grid{grid-template-columns:1.3fr 1fr 1fr}}
footer h4{color:#fff;font-size:13px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:12px}
footer a{color:#BFD6BB;text-decoration:none}
footer a:hover{text-decoration:underline}
footer ul{list-style:none}
footer li{padding:3px 0}
.foot-brand p{margin-top:10px;max-width:300px;font-size:13.5px}
.foot-legal{border-top:1px solid #24462E;margin-top:30px;padding-top:18px;font-size:12.5px;color:#7B9678}

/* ---------- mobile sticky bar ---------- */
.sticky-bar{position:fixed;bottom:0;left:0;right:0;z-index:60;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border-top:1px solid var(--line);box-shadow:0 -4px 16px rgba(22,49,31,.12)}
.sticky-bar a{display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 8px;font-weight:800;font-size:13px;text-decoration:none;min-height:38px;text-align:center;line-height:1.15}
.sticky-text-lines{display:flex;flex-direction:column;align-items:center;line-height:1.15}
.sticky-text-lines span{display:block}

/* v28: alphabetical cities list on the service-area page */
.city-list{list-style:none;padding:0;margin:18px 0 0;display:grid;grid-template-columns:1fr;gap:8px}
@media(min-width:520px){.city-list{grid-template-columns:repeat(2,1fr)}}
@media(min-width:820px){.city-list{grid-template-columns:repeat(3,1fr)}}
.city-list li a{display:block;padding:12px 14px;background:#fff;border:1px solid var(--line);border-radius:10px;color:var(--canopy);text-decoration:none;font-weight:700}
.city-list li a:hover{border-color:var(--pine);background:var(--sawgrass)}
.sticky-call{background:var(--hivis);color:#fff}
.sticky-text{background:#fff;color:var(--pine)}
@media(min-width:940px){.sticky-bar{display:none}}

/* ================= v2 additions: menu, photo hero, estimate modal ================= */
[hidden]{display:none!important}
.btn-paper{background:#fff;color:var(--pine);border-color:#fff}
.btn-paper:hover{background:var(--sawgrass)}

/* ---- header actions + hamburger ---- */
.nav-actions{display:flex;align-items:center;gap:10px}
.nav-actions .btn-green{display:none}
@media(min-width:940px){.nav-actions .btn-green{display:inline-flex}}
.menu-btn{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:46px;height:46px;background:none;border:none;cursor:pointer}
.menu-btn span{display:block;width:24px;height:3px;background:var(--canopy);border-radius:2px;transition:transform .2s,opacity .2s}
.menu-btn.open span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.menu-btn.open span:nth-child(2){opacity:0}
.menu-btn.open span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}
@media(min-width:940px){.menu-btn{display:none}}
.mobile-menu{display:none;background:var(--paper);border-bottom:1px solid var(--line);box-shadow:0 10px 24px rgba(22,49,31,.12)}
.mobile-menu.open{display:block}
.mobile-menu ul{list-style:none;padding:2px 20px 0}
.mobile-menu li a{display:block;padding:6px 4px;font-weight:700;font-size:17px;color:var(--canopy);text-decoration:none;border-bottom:1px solid var(--line);min-height:31px}
.mm-ctas{display:flex;flex-direction:column;gap:10px;padding:16px 20px 20px}
body.menu-open{overflow:hidden}
@media(min-width:940px){body.menu-open{overflow:auto}}

/* ---- photo hero (index) ---- */
.hero-photo{position:relative;background:var(--canopy);padding:76px 0 66px;overflow:hidden}
.hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-scrim{position:absolute;inset:0;background:linear-gradient(100deg,rgba(9,23,14,.93) 0%,rgba(9,23,14,.74) 45%,rgba(9,23,14,.38) 100%)}
.hero-inner{position:relative;max-width:660px}
.hero-photo h1{color:#fff}
.hero-photo h1 em{color:#A7D3A0}
.hero-cred{margin-top:12px;font-size:13px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#C9E3C4}
.hero-photo .hero-answer{color:#E4EFE1}
.hero-photo .hero-note{color:#C9E3C4}
.hero-photo .hero-note b{color:#fff}
@media(min-width:900px){.hero-photo{padding:112px 0 98px}}

/* ---- free-estimate modal ---- */
.modal-overlay{position:fixed;inset:0;z-index:100;background:rgba(15,36,22,.62);display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;padding:20px 14px 44px}
.modal{background:#fff;border-radius:16px;width:100%;max-width:540px;padding:26px 24px;position:relative;box-shadow:0 20px 60px rgba(0,0,0,.32);margin:auto 0}
.modal-x{position:absolute;top:8px;right:12px;background:none;border:none;font-size:32px;color:var(--ink-soft);cursor:pointer;line-height:1;padding:6px 10px}
.modal h3{font-size:22px}
.modal-sub{font-size:14.5px;color:var(--ink-soft);margin:6px 0 4px}
.m-label{display:block;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:14px 0 5px}
.modal input,.modal select,.modal textarea{width:100%;padding:12px 14px;border:2px solid var(--line);border-radius:10px;font-family:var(--font);font-size:15.5px;background:#fff;color:var(--canopy)}
.modal input:focus,.modal select:focus,.modal textarea:focus{border-color:var(--palmetto);outline:none}
.modal textarea{resize:vertical}
.m-2col{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--ink-soft);margin:16px 0 8px;line-height:1.5}
.consent input{width:20px;height:20px;flex:0 0 20px;margin-top:2px;accent-color:var(--pine)}
.plain-english{margin:2px 0 16px}
.plain-english summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--palmetto);list-style:none;min-height:auto}
.plain-english summary::-webkit-details-marker{display:none}
.pe-body{font-size:13px;color:var(--ink-soft);background:var(--sawgrass);border-radius:10px;padding:12px 14px;margin-top:8px}
.m-error{background:#FDECEA;color:#8C2B22;font-size:14px;font-weight:600;border-radius:10px;padding:10px 14px;margin-bottom:12px}
.modal-fine{font-size:12.5px;color:var(--ink-soft);margin-top:14px}

/* ---- calculator debris-deal checkbox ---- */
.check-row.deal{background:var(--sawgrass);padding:10px 12px;border-radius:10px}
.check-row.deal b{color:var(--hivis-dark)}

/* ═══════════════ v3: hero photo Option A, scroll cards, print ═══════════════ */

/* ---- Hero: full photo on top, no overlay, then text below ---- */
/* (old crop-style crew photo rules removed in v4 — see bottom of file) */

.hero-text{background:linear-gradient(180deg,var(--sawgrass) 0%,var(--paper) 100%);padding:40px 0 44px}
.hero-text h1{font-size:clamp(28px,5vw,46px);font-weight:900}
.hero-text h1 em{font-style:normal;color:var(--palmetto)}
.hero-text .hero-answer{margin-top:14px;font-size:17px;color:var(--ink-soft);max-width:680px}
.hero-text .hero-note{margin-top:12px;font-size:13.5px;color:var(--ink-soft)}
.hero-text .hero-note b{color:var(--canopy)}
.hero-text .eyebrow{margin-bottom:10px}

/* ---- Services: horizontal scroll on mobile, animated hover on desktop ---- */
.svc-scroll{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:12px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.svc-scroll::-webkit-scrollbar{height:5px}
.svc-scroll::-webkit-scrollbar-track{background:transparent}
.svc-scroll::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}
.svc-scroll .card{flex:0 0 82vw;scroll-snap-align:start;max-width:320px;transition:transform .18s ease,box-shadow .18s ease}
.svc-scroll .card:hover{transform:translateY(-4px);box-shadow:0 8px 28px rgba(22,49,31,.14)}
@media(min-width:640px){.svc-scroll .card{flex:0 0 46%}}
@media(min-width:980px){
  .svc-scroll{display:grid;grid-template-columns:repeat(3,1fr);overflow-x:visible;scroll-snap-type:none;padding-bottom:0}
  .svc-scroll .card{flex:none;max-width:none}
}
/* scroll hint arrow on mobile */
.scroll-hint{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--palmetto);margin-top:10px}
.scroll-hint svg{animation:nudge 1.6s ease-in-out infinite}
@keyframes nudge{0%,100%{transform:translateX(0)}50%{transform:translateX(6px)}}
@media(min-width:980px){.scroll-hint{display:none}}

/* ═══════════════ Storm Prep printable page ═══════════════ */
.print-btn{display:inline-flex;align-items:center;gap:8px;background:var(--pine);color:#fff;border:none;font-family:var(--font);font-weight:700;font-size:15px;padding:12px 22px;border-radius:999px;cursor:pointer;margin-top:4px}
.print-btn:hover{background:var(--canopy)}
.checklist-grid{display:grid;gap:22px;margin-top:26px}
@media(min-width:760px){.checklist-grid{grid-template-columns:repeat(2,1fr)}}
.cl-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow)}
.cl-card h3{font-size:16px;color:var(--pine);margin-bottom:14px;display:flex;align-items:center;gap:8px}
.cl-card ul{list-style:none}
.cl-card li{display:flex;align-items:flex-start;gap:10px;padding:7px 0;border-bottom:1px dashed var(--line);font-size:15px;color:var(--ink-soft);line-height:1.45}
.cl-card li:last-child{border-bottom:none}
.cl-card li .box{flex:0 0 18px;height:18px;border:2px solid var(--palmetto);border-radius:4px;margin-top:2px}
.print-only{display:none}
@media print{
  .sticky-bar,.draft-bar,header,footer,.ctas,.print-btn,.no-print{display:none!important}
  .print-only{display:block}
  body{font-size:12pt;color:#000}
  .cl-card{break-inside:avoid;box-shadow:none;border:1px solid #ccc}
  .cl-card li .box{border-color:#000}
  h1,h2,h3{color:#000}
  .checklist-grid{grid-template-columns:repeat(2,1fr)}
  .print-header{text-align:center;margin-bottom:18pt}
  .print-footer{text-align:center;font-size:10pt;color:#555;margin-top:18pt;border-top:1px solid #ccc;padding-top:8pt}
}

/* ═══════════════ 404 page ═══════════════ */
.not-found{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:60px 20px}
.not-found .big{font-size:clamp(80px,18vw,160px);font-weight:900;color:var(--line);line-height:1}
.not-found h1{font-size:clamp(22px,4vw,34px);margin-top:10px}
.not-found p{color:var(--ink-soft);max-width:480px;margin:10px auto 24px}

/* ═══ v4: crew photo — full image, content width, thin green band ═══
   v28: reverted padding-top to 12px so the crew photo starts high — the tab
   overlaps the very top of the photo. Portrait photos have sky/space at top
   so this reads fine and keeps the 4.9★ reviews above the fold. */
section.hero-photo-top{max-height:none;padding:12px 0;background:var(--canopy);display:block;overflow:visible}
section.hero-photo-top .wrap{max-width:1100px;margin:0 auto;padding:0 20px}
img.crew-photo{position:static;width:100%;height:auto;max-height:calc(70vh - 26px);object-fit:cover;border-radius:10px;display:block}
@media(max-width:640px){section.hero-photo-top{padding:8px 0}img.crew-photo{max-height:60vh}}

/* v27: portrait photo card aspect (matches 670×1200 phone shots without cropping) */
.ph-portrait{aspect-ratio:2/3}

/* v29: Cost Estimator page — bump H1 down under the sticky tab (~half tab height). */
.page-hero.calc-hero{padding-top:38px}
@media(min-width:768px){.page-hero.calc-hero{padding-top:44px}}

/* v38: Contact-us page — same treatment (H1 was falling under the sticky tab) */
.page-hero.contact-hero{padding-top:38px}
@media(min-width:768px){.page-hero.contact-hero{padding-top:44px}}

/* v29: When "Add another tree" scrolls the new card into view, keep its top
   visible below the sticky header + tab + estimate strip (~160px stack). */
.tree-card{scroll-margin-top:160px}

/* v28: full-width top hero photo above page H1 (used on tree-removal, palm-trimming) */
.photo-hero{padding:12px 0;background:var(--canopy)}
.photo-hero .wrap{max-width:1100px;margin:0 auto;padding:0 20px}
.page-photo-hero{display:block;width:100%;height:auto;max-height:calc(70vh - 26px);object-fit:cover;object-position:top;border-radius:10px}
@media(max-width:640px){.page-photo-hero{max-height:calc(60vh - 26px)}}

/* ═══ v5: Elfsight widget fixes ═══ */
/* Our global img/box rules were breaking the widget's stars & header.
   These lines tell the widget's contents to use normal browser styling. */
[class*="elfsight"] img{display:revert;max-width:revert;width:revert;height:revert}
[class*="elfsight"] *{line-height:revert}
/* Compact review strip under the crew photo */
.reviews-strip{padding:26px 0 10px}

/* ═══ v6: Slide-down Free Estimate strip + widget padding ═══ */

/* The strip sits right below the crew photo section.
   The tab appears to hang from the bottom edge of the green photo band. */
.est-strip{background:var(--paper);position:relative}
.est-tab-wrap{background:var(--canopy);display:flex;justify-content:center;padding:0}
.est-tab{
  display:inline-flex;align-items:center;gap:10px;
  background:var(--hivis);color:#fff;
  border:none;border-radius:0 0 14px 14px;
  padding:17px 24px 18px;
  font-family:var(--font);font-weight:800;font-size:15px;letter-spacing:.02em;
  cursor:pointer;box-shadow:0 4px 12px rgba(22,49,31,.18);
  transition:background .15s ease,transform .12s ease;
}
.est-tab:hover{background:var(--hivis-dark)}
.est-tab:active{transform:translateY(1px)}
.est-tab-icon{font-size:16px}
.est-tab-chev{font-size:12px;transition:transform .25s ease;display:inline-block}
.est-tab[aria-expanded="true"] .est-tab-chev{transform:rotate(180deg)}

/* Panel: hidden by default; when open, animates down and pushes reviews section below */
.est-panel{
  max-width:760px;margin:0 auto;background:#fff;
  border:1px solid var(--line);border-radius:16px;
  box-shadow:0 12px 32px rgba(22,49,31,.14);
  padding:22px 22px 24px;position:relative;
  margin-top:14px;margin-left:20px;margin-right:20px;
  animation:slideDown .28s ease;
}
@keyframes slideDown{
  from{opacity:0;transform:translateY(-10px)}
  to  {opacity:1;transform:translateY(0)}
}
.est-panel[hidden]{display:none}
.est-close{
  position:absolute;top:6px;right:10px;
  background:none;border:none;font-size:28px;line-height:1;color:var(--ink-soft);
  cursor:pointer;padding:6px 10px;
}
.est-close:hover{color:var(--canopy)}
.est-title{font-size:20px;margin-bottom:2px}
.est-sub{font-size:14px;color:var(--ink-soft);margin-bottom:8px}
.est-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:520px){.est-row{grid-template-columns:1fr}}
.est-label{
  display:block;font-size:11.5px;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-soft);margin:12px 0 5px;
}
.est-panel input,.est-panel select,.est-panel textarea{
  width:100%;padding:11px 13px;border:2px solid var(--line);border-radius:10px;
  font-family:var(--font);font-size:15px;background:#fff;color:var(--canopy);
}
.est-panel input:focus,.est-panel select:focus,.est-panel textarea:focus{
  border-color:var(--palmetto);outline:none;
}
.est-panel textarea{resize:vertical}
.est-consent{
  display:flex;gap:10px;align-items:flex-start;
  font-size:12.5px;color:var(--ink-soft);margin:14px 0 10px;line-height:1.5;
}
.est-consent input{width:20px;height:20px;flex:0 0 20px;margin-top:2px;accent-color:var(--pine)}
.est-error{
  background:#FDECEA;color:#8C2B22;font-size:14px;font-weight:600;
  border-radius:10px;padding:9px 13px;margin-bottom:10px;
}

/* v6: tighter padding around Elfsight widget (top-to-bottom compact) */
.reviews-strip{padding:14px 0 6px}

/* ═══ v6: Rich service-area town list ═══ */
.town-list-rich{list-style:none;padding:0;margin-top:12px}
.town-list-rich li{
  padding:12px 0;
  border-bottom:1px solid var(--line);
  font-size:15px;color:var(--ink-soft);line-height:1.5;
}
.town-list-rich li:last-child{border-bottom:none}
.town-list-rich strong{color:var(--canopy);font-weight:800;font-size:15.5px}
.town-list-rich a{text-decoration:none}
.town-list-rich a:hover{text-decoration:underline}

/* ═══ v7: Tab flush to green border above; tight to reviews below ═══ */
/* Pull the strip up so its green section overlaps the crew photo's green band.
   Then remove the paper strip below the tab so the reviews sit immediately after. */
.est-strip{margin-top:-8px}
.est-tab-wrap{padding-top:0;margin-top:0;position:relative}
.est-tab{margin-top:-2px}
/* Kill the paper-color padding between the tab and the reviews strip. */
.est-strip .est-tab-wrap + *,
.reviews-strip{padding-top:6px;padding-bottom:2px}
/* Also collapse the trailing whitespace on the photo section itself */
section.hero-photo-top{padding-bottom:8px}


/* ═══ v8: Gap fix + centered panel + contact CTA order ═══ */

/* The tab hangs from the green photo band — no paper gap visible around it */
section.hero-photo-top{padding-bottom:0}
.est-strip{margin-top:0;background:transparent}
.est-tab-wrap{
  background:var(--canopy);
  padding:0;
  margin-top:0;
  display:flex;
  justify-content:center;
  /* extend to browser edges so band feels continuous with the photo section */
  width:100%;
  border-top:none;
}
/* The tab button itself provides its own rounded bottom — no negative margin needed */
.est-tab{margin-top:0;border-radius:0 0 14px 14px}

/* Center the slide-down panel on ALL screen sizes */
.est-panel{
  margin-left:auto;
  margin-right:auto;
  max-width:640px;
  width:calc(100% - 40px);
}

/* Trim reviews strip tighter to the tab (nothing hacky — my padding only) */
.reviews-strip{padding-top:0;padding-bottom:2px}

/* Contact page: force button order Free Estimate → Call → Text via flex ordering */
.contact-cta-stack{display:flex;flex-direction:column;gap:12px;max-width:520px;margin:20px 0 8px}
.contact-cta-stack .btn{width:100%}

/* ═══ v8: Google My Maps responsive embed ═══ */
.map-wrap{
  position:relative;
  width:100%;
  aspect-ratio:16/10;
  border-radius:var(--radius);
  overflow:hidden;
  box-shadow:var(--shadow);
  margin-top:16px;
  border:1px solid var(--line);
}
.map-wrap iframe{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  border:none;
}
@media(max-width:640px){
  .map-wrap{aspect-ratio:1/1}
}


/* ═══ v9: DEFINITIVE gap fix ═══
   The visible gap was caused by section{padding:60px 0} applying to .est-strip.
   Kill it. Also make the strip's background green so if any pixel of it shows,
   it blends with the photo band above. */
section.est-strip{
  padding:0!important;
  background:var(--canopy);
  margin:0;
}
section.hero-photo-top{padding-bottom:0!important}
@media(max-width:640px){section.hero-photo-top{padding:8px 0 0!important}}
.est-tab-wrap{background:var(--canopy);padding:0;margin:0}
.est-tab{margin:0}
section.reviews-strip{padding-top:0!important}


/* ═══ v10: All 6 services visible (no swipe) ═══ */
.svc-visible{
  display:grid;
  grid-template-columns:1fr;
  gap:16px;
  padding-bottom:0;
}
.svc-visible .card{max-width:none;flex:none}
@media(min-width:640px){.svc-visible{grid-template-columns:repeat(2,1fr)}}
@media(min-width:980px){.svc-visible{grid-template-columns:repeat(3,1fr)}}
/* kill any leftover carousel styling */
.svc-visible{overflow:visible;scroll-snap-type:none}


/* ═══ v10: Google Reviews mini-header (Option A) ═══ */
.reviews-mini{background:#fff;border-bottom:1px solid var(--line);padding:14px 0}
.reviews-mini-link{
  display:flex;align-items:center;justify-content:center;gap:10px;
  text-decoration:none;color:var(--canopy);
  font-weight:700;font-size:16px;
  transition:opacity .15s ease;
}
.reviews-mini-link:hover{opacity:.8;text-decoration:none}
.rmh-rating{font-weight:900;font-size:22px;color:var(--canopy)}
.rmh-stars{color:#F5B400;font-size:18px;letter-spacing:1px}
.rmh-label{font-weight:600;color:var(--ink-soft)}
.rmh-count{color:var(--ink-soft);font-size:15px}
.rmh-arrow{color:var(--palmetto);font-weight:900;font-size:16px;margin-left:2px}
@media(max-width:520px){
  .reviews-mini-link{flex-wrap:wrap;gap:8px;font-size:15px}
  .rmh-rating{font-size:20px}
  .rmh-stars{font-size:17px}
}
/* Widget section at bottom */
.reviews-strip{padding:44px 0;background:var(--sawgrass)}
.reviews-strip h2.center{text-align:center;margin-bottom:8px}
.reviews-strip .eyebrow.center{text-align:center}


/* ═══ v10: 4-button CTA cluster ═══ */
.btn-orange{background:var(--hivis);color:#fff}
.btn-orange:hover{background:var(--hivis-dark)}


/* ═══ v10: Dangerous Branch Removal button + dialog ═══ */
.danger-cta{margin:0 0 22px}
.danger-btn{
  display:flex;align-items:center;gap:16px;width:100%;
  background:linear-gradient(90deg,#B8371F 0%,#8C2712 100%);
  color:#fff;border:none;border-radius:14px;
  padding:16px 20px;text-align:left;cursor:pointer;
  font-family:var(--font);
  box-shadow:0 4px 14px rgba(140,39,18,.28);
  transition:transform .12s ease,box-shadow .15s ease;
}
.danger-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(140,39,18,.4)}
.danger-btn:active{transform:translateY(0)}
.danger-icon{font-size:26px;flex:0 0 30px}
.danger-txt{font-size:16px;line-height:1.35}
.danger-txt b{font-size:17px;letter-spacing:.02em}
.danger-sub{font-size:13.5px;color:#F9D9CE;font-weight:500}
.danger-dialog{
  background:#FFF3EE;border:2px solid #B8371F;border-radius:14px;
  padding:22px 24px 24px;margin:0 0 22px;position:relative;
  animation:slideDown .28s ease;
}
.danger-dialog[hidden]{display:none}
.danger-dialog h3{color:#8C2712;margin-bottom:10px}
.danger-dialog p{font-size:15px;color:var(--canopy);margin-bottom:10px}
.danger-close{
  position:absolute;top:8px;right:12px;
  background:none;border:none;font-size:26px;line-height:1;color:#8C2712;
  cursor:pointer;padding:6px 10px;
}


/* ═══ v10: Pricing table for AEO/SEO ═══ */
.pricing-table-wrap{margin:22px 0}
.pricing-table{
  width:100%;border-collapse:collapse;background:#fff;
  border-radius:12px;overflow:hidden;
  box-shadow:var(--shadow);font-size:13px;
  table-layout:fixed;
}
.pricing-table caption{
  caption-side:top;text-align:left;font-weight:800;
  color:var(--canopy);padding:0 0 10px;font-size:14px;
  letter-spacing:.06em;text-transform:uppercase;line-height:1.35;
}
.pricing-table thead th{
  background:var(--pine);color:#fff;
  padding:10px 6px;text-align:left;
  font-size:12px;letter-spacing:.06em;text-transform:uppercase;
  position:sticky;top:60px;z-index:20;
}
.pricing-table td,.pricing-table th{
  padding:8px 6px;border-bottom:1px solid var(--line);
  color:var(--ink-soft);word-break:normal;overflow-wrap:break-word;
}
.pricing-table td:first-child,.pricing-table th:first-child{padding-left:10px}
.pricing-table td:last-child,.pricing-table th:last-child{padding-right:10px}
.pricing-table tr:last-child td{border-bottom:none}
.pricing-table strong{color:var(--canopy)}
.pricing-note{font-size:13.5px;color:var(--ink-soft);margin-top:8px}
/* Extra-narrow phones (≤360px): shrink further, drop $ signs on data cells */
@media(max-width:360px){
  .pricing-table{font-size:12px}
  .pricing-table thead th,.pricing-table td{padding:7px 4px;font-size:11.5px}
}


/* ═══ v11: Danger dialog bottom-right close ═══ */
.danger-close-bottom{
  background:none;border:none;
  color:#8C2712;font-family:var(--font);font-weight:700;font-size:14px;
  cursor:pointer;padding:8px 12px;
}
.danger-close-bottom:hover{text-decoration:underline}
/* Kill the old absolute top-right close styling — no longer needed */
.danger-close{display:none}


/* ═══ v11: Floating "Cost Estimator" button ═══ */
.float-calc-btn{
  position:fixed;
  right:18px;
  bottom:80px;
  z-index:55;
  display:flex;align-items:center;gap:8px;
  background:var(--hivis);color:#fff;
  padding:12px 18px;border-radius:999px;
  font-family:var(--font);font-weight:800;font-size:14.5px;
  text-decoration:none;
  box-shadow:0 6px 20px rgba(140,64,0,.34);
  transition:transform .15s ease,box-shadow .15s ease;
}
.float-calc-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(140,64,0,.42);text-decoration:none;color:#fff}
.fcb-icon{font-size:17px}
/* On desktop the sticky bottom bar doesn't exist, so button sits lower */
@media(min-width:940px){
  .float-calc-btn{bottom:22px;right:22px;font-size:15px;padding:14px 22px}
}
/* On very small screens compress to icon-only to stay out of the way */
@media(max-width:420px){
  .float-calc-btn{padding:12px 14px;font-size:13.5px}
  .fcb-txt{display:none}
  .fcb-icon{font-size:20px}
}

/* ═══ v11: Mobile slim estimate strip + reinforced desktop sticky ticket ═══ */

/* Mobile strip — sticks to top of viewport when scrolling on phones.
   Hidden on desktop (where the sticky ticket handles it). */
.mobile-est-strip{
  display:block;
  position:sticky;
  top:113px;   /* header 60 + tab 53 = docks right under the tab when stuck */
  z-index:40;
  margin:0 0 16px 0;
  background:var(--pine);
  border-radius:10px;
  box-shadow:0 4px 14px rgba(22,49,31,.22);
}
.mest-link{
  display:flex;align-items:center;justify-content:center;gap:10px;
  padding:11px 16px;
  color:#fff;text-decoration:none;
  font-family:var(--font);font-weight:700;font-size:14.5px;
}
.mest-link:hover{color:#fff;text-decoration:none}
.mest-label{opacity:.85;font-weight:600}
.mest-value{
  font-family:var(--mono);font-size:16px;font-weight:700;
  background:rgba(255,255,255,.12);padding:3px 10px;border-radius:6px;
}
.mest-arrow{font-size:14px;opacity:.85}

/* Hide the mobile strip on desktop; the sticky right-column ticket handles it */
@media(min-width:960px){
  .mobile-est-strip{display:none}
}

/* Reinforce desktop sticky ticket behavior */
@media(min-width:960px){
  .ticket{
    position:sticky;
    top:86px;
    max-height:calc(100vh - 100px);
    overflow-y:auto;
  }
}


/* ═══ v12: Reviews mini-header — one-line, 5 stars, responsive text ═══ */
.reviews-mini-link{white-space:nowrap;flex-wrap:nowrap}
.rev-stars-svg{flex:0 0 auto;height:16px;width:90px}
.rmh-dot{color:var(--ink-soft);opacity:.6}
.rmh-cta{font-weight:700;color:var(--pine);text-decoration:underline;text-underline-offset:3px}
.rmh-our{}  /* visible by default */

/* On narrow screens, drop "Our" and shrink text so it stays on one line */
@media(max-width:400px){
  .rmh-our{display:none}
  .reviews-mini-link{font-size:14px;gap:7px}
  .rev-stars-svg{width:80px;height:14px}
  .rmh-rating{font-size:18px}
}
@media(max-width:340px){
  .reviews-mini-link{font-size:13px}
  .rev-stars-svg{width:70px;height:13px}
}

/* ═══ v12: Fully clickable service cards ═══ */
a.card.card-link{
  color:inherit;text-decoration:none;
  display:flex;flex-direction:column;gap:10px;
  transition:transform .15s ease,box-shadow .18s ease,border-color .15s ease;
}
a.card.card-link:hover{
  transform:translateY(-3px);
  box-shadow:0 8px 24px rgba(22,49,31,.16);
  border-color:var(--palmetto);
  text-decoration:none;
}
a.card.card-link:focus-visible{outline:3px solid var(--hivis);outline-offset:3px}
a.card.card-link .more{
  color:var(--palmetto);
  pointer-events:none;  /* inner link is decorative now */
}


/* ═══ v13: Definitive services grid + hero spacing ═══ */

/* Kill the huge padding on services section — tight to visitor */
section.services, section.tint#services, section.tint:has(#services){
  padding-top:26px!important;
  padding-bottom:26px!important;
}
/* Extra safety — target by any wrapper */
section.tint > .wrap > .grid.g3.svc-visible{margin-top:16px}

/* Services grid: solid responsive 3/2/1 layout, compact cards */
.svc-visible{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:12px!important;
  overflow:visible!important;
}
@media(min-width:640px){
  .svc-visible{grid-template-columns:repeat(2,1fr)!important;gap:14px!important}
}
@media(min-width:980px){
  .svc-visible{grid-template-columns:repeat(3,1fr)!important;gap:16px!important}
}

/* Compact card styling — the CARD itself, and cards that are links */
.svc-visible .card,
.svc-visible a.card.card-link{
  padding:16px 18px!important;
  gap:6px!important;
  min-height:0!important;
  max-width:none!important;
  flex:none!important;
  height:auto;
}
.svc-visible .card h3,
.svc-visible a.card.card-link h3{
  font-size:16px;
  line-height:1.25;
  margin:0;
  display:flex;align-items:center;gap:8px;
}
.svc-visible .card p,
.svc-visible a.card.card-link p{
  font-size:13.5px;
  line-height:1.4;
  margin:0;
  color:var(--ink-soft);
  /* clamp to 2 lines on phones, 3 on desktop */
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden;
  flex:1;
}
.svc-visible .svc-icon{width:20px;height:20px;flex:0 0 20px}
.svc-visible .more{
  font-size:13px;
  margin-top:auto;
  padding-top:4px;
  font-weight:700;
}
.svc-visible .tag{font-size:10px;padding:2px 8px;margin-left:auto}

@media(max-width:640px){
  .svc-visible .card p,
  .svc-visible a.card.card-link p{-webkit-line-clamp:2;font-size:13px}
  .svc-visible .card h3,
  .svc-visible a.card.card-link h3{font-size:15px}
}

/* Ready-CTA section — the 4-button cluster right after services */
section.ready-cta{
  background:var(--paper);
  padding:26px 0!important;
  text-align:center;
}
section.ready-cta .ready-title{
  font-size:22px;
  margin-bottom:16px;
  color:var(--canopy);
}
section.ready-cta .ctas{
  justify-content:center;
  flex-wrap:wrap;
}

/* Hero-text section: no ctas, keep tighter padding */
section.hero-text{
  padding:32px 0 34px!important;
}


/* ═══ v14: Sticky Free Estimate tab (homepage) ═══ */
/* Only apply on the homepage — targeted by the est-strip being the SECOND
   section child of <main>. On other pages, est-strip either doesn't exist
   or would need similar treatment intentionally. */
main > section.est-strip{
  position:sticky;
  top:66px;  /* just below the site header (66px tall) */
  z-index:45; /* above content, below mobile menu (50) & sticky bar (60) */
}
/* When the tab is stuck to viewport, give the tab-wrap a subtle shadow
   for a "floating" feel — this fires when the section leaves its natural
   place. The green background of est-tab-wrap keeps its identity. */
main > section.est-strip .est-tab-wrap{
  box-shadow:0 4px 12px rgba(22,49,31,.16);
}
/* The panel drop-down needs its own stacking + positioning so it doesn't
   float off-screen when the tab is pinned. */
main > section.est-strip .est-panel{
  position:relative;
  z-index:46;
}


/* ═══ v14: Hide floating cost estimator button (removed) ═══ */
.float-calc-btn{display:none!important}


/* ═══ v15: Tighter service cards — no more Learn more link ═══ */
/* Reduce gaps between cards and remove extra padding that was making room for the link */
.svc-visible{gap:8px!important}
@media(min-width:640px){.svc-visible{gap:10px!important}}
@media(min-width:980px){.svc-visible{gap:12px!important}}

/* Cards no longer need bottom padding for the "more" link */
.svc-visible .card,
.svc-visible a.card.card-link{
  padding:14px 16px!important;
}


/* ═══ v16: Fix sticky Free Estimate — tab sticky, panel normal flow ═══
   The v14 approach of making section.est-strip sticky was causing:
   1. Auto-scroll to page bottom on landing (scroll anchoring quirk)
   2. Panel got stuck in viewport, blocking page scroll
   3. Close button ended up below the mobile Call/Text bar
   
   Fix: make only the est-tab-wrap sticky (thin green band with the tab).
   The panel stays in normal document flow — when it opens it pushes
   everything below it further down the page, and the page can be scrolled
   normally. The close button becomes reachable via scroll. */

/* Undo the v14 sticky-section rule */
main > section.est-strip{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
}
main > section.est-strip .est-panel{
  position:static!important;
}

/* Make ONLY the tab-wrap sticky. This is the thin green band with the
   orange tab that hangs from it. It sticks at the top of the viewport
   as the user scrolls, but the panel below it remains in normal flow. */
section.est-strip .est-tab-wrap{
  position:sticky;
  top:66px;
  z-index:44;
  box-shadow:0 4px 12px rgba(22,49,31,.14);
}


/* ═══ v16 (cont.): Disable scroll anchoring on the sticky tab area
   This prevents the browser from auto-scrolling when the panel opens/closes
   and the layout height changes. Also removes the smooth-scroll on landing 
   for the sticky element specifically. */
section.est-strip,
section.est-strip *{
  overflow-anchor:none;
}


/* ═══ v17: Compact cost estimator page top ═══ */
/* Bring the Dangerous Branch button up close to the H1 */
body:has(#calc-mount) section.page-hero{
  padding:24px 0 6px!important;
}
/* Fallback for browsers without :has() — target directly the pattern */
section.page-hero + section > .wrap > .danger-cta{
  margin-top:0!important;
}
/* First section after page-hero on estimator page — tight top */
body:has(#calc-mount) section.page-hero + section{
  padding-top:8px!important;
}

/* ═══ v17: Tree-size images and disabled chips in calculator ═══ */

/* Chips with an image display vertically: image on top, label below */
.chips-with-images{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
}
.chip.chip-img-wrap{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-end;
  padding:10px 8px 12px;
  min-height:170px;
  gap:8px;
  text-align:center;
}
.chip-img{
  width:100%;
  max-width:120px;
  height:120px;
  object-fit:contain;
  display:block;
  margin:0 auto;
}
.chip.chip-img-wrap .chip-txt{
  display:block;
  font-size:14px;
  line-height:1.3;
}
.chip.chip-img-wrap .chip-txt small{
  display:block;
  font-size:11.5px;
  color:var(--ink-soft);
  font-weight:500;
  margin-top:2px;
  line-height:1.35;
}
.chip.chip-img-wrap[aria-pressed="true"] .chip-txt small{
  color:var(--pine);
}

/* On desktop the images can be a bit larger */
@media(min-width:640px){
  .chip.chip-img-wrap{min-height:200px}
  .chip-img{height:140px;max-width:140px}
}
@media(max-width:400px){
  .chip.chip-img-wrap{min-height:150px;padding:8px 4px 10px}
  .chip-img{height:100px;max-width:100px}
  .chip.chip-img-wrap .chip-txt{font-size:12.5px}
  .chip.chip-img-wrap .chip-txt small{font-size:10.5px}
}

/* Disabled trim chips (Light Shaping / Heavy Reduction when Palm selected) */
.chip.chip-disabled{
  opacity:0.4;
  cursor:not-allowed;
  background:#F0F0EB;
  color:#999;
  border-color:#E8E8E3;
  pointer-events:auto;  /* let clicks arrive so we can ignore them explicitly */
}
.chip.chip-disabled:hover{
  background:#F0F0EB;
  border-color:#E8E8E3;
}

/* ═══ v18: Logo header, dropdown menu, global sticky tab, ballpark note, copyright ═══ */

/* Compact logo header — tight, doesn't push content down */
.brand-logo{height:44px;width:auto;display:block}
header .nav{min-height:60px;padding-top:8px;padding-bottom:8px}
@media(max-width:640px){.brand-logo{height:36px}}

/* Desktop dropdown for Services */
.nav-links .has-dd{position:relative}
.nav-links .dd-caret{font-size:10px;opacity:.7}
.nav-links .dd{
  position:absolute;top:100%;left:0;min-width:210px;
  background:#fff;border:1px solid var(--line);border-radius:12px;
  box-shadow:0 10px 30px rgba(22,49,31,.16);
  padding:8px;list-style:none;display:none;z-index:70;
}
.nav-links .has-dd:hover .dd,
.nav-links .has-dd:focus-within .dd{display:block}
.nav-links .dd li a{
  display:block;padding:9px 12px;border-radius:8px;
  font-size:14px;color:var(--canopy);text-decoration:none;white-space:nowrap;
}
.nav-links .dd li a:hover{background:var(--sawgrass)}

/* Mobile menu sub-items (services under Services) */
.mobile-menu .mm-sub a{padding-left:34px;font-size:15px;opacity:.9}

/* Global sticky Free Estimate tab (all pages except homepage which has est-strip) */
.est-tab-global{
  position:sticky;top:60px;z-index:44;
  display:flex;justify-content:center;
  background:transparent;pointer-events:none;
  height:0; /* takes no layout space; the button overflows visibly */
}
.est-tab-global .est-tab{
  pointer-events:auto;
  border-radius:0 0 14px 14px;
  margin:0;
  box-shadow:0 4px 12px rgba(22,49,31,.22);
}

/* Ticket ballpark note */
.ballpark-note{
  font-size:11.5px;color:var(--ink-soft);font-weight:600;
  line-height:1.35;margin-top:2px;
}

/* Footer copyright */
.copyright-line{
  text-align:center;font-size:12.5px;color:var(--ink-soft);
  padding:14px 0 10px;border-top:1px solid var(--line);margin-top:18px;
}
/* Calculator copyright */
.calc-copyright{
  font-size:11.5px;color:var(--ink-soft);text-align:center;margin-top:14px;
}

/* ═══ v18: New hero paragraph structure ═══ */
.hero-text .hero-answer p{margin:0 0 10px}
.ha-name{font-size:20px;color:var(--canopy);letter-spacing:.01em}
.ha-name strong{font-weight:900}
.ha-creds{font-size:15px;color:var(--pine);margin-top:-4px!important}
.ha-cta{font-size:17px;color:var(--canopy);margin-top:4px!important}

/* ═══ v19: Fix mobile menu overflow — scrollable and full-height ═══
   The mobile menu was clipping items because the collapsed drawer had
   no max-height + no overflow. Now:
   1. When open, cap at 85vh with internal scroll
   2. Push the CTAs to the bottom so they're always reachable
   3. Ensure no ancestor blocks the scroll gesture */
.mobile-menu.open{
  max-height:calc(100vh - 60px);  /* fill viewport below the header */
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
}
.mobile-menu ul{padding-bottom:12px}
.mobile-menu .mm-ctas{padding:14px 20px 22px}
/* Guard against ancestor clipping when menu is open */
body.menu-open{overflow:hidden}


/* ═══ v20: Unified sticky Free Estimate tab (homepage + all other pages) ═══
   Two implementations existed and behaved differently:
   1. Homepage: <section class="est-strip"> → contains .est-tab-wrap (sticky)
   2. Other pages: <div class="est-tab-global"> (also sticky)
   
   Symptoms user reported:
   - Homepage: tab doesn't follow scroll (v16 sticky rule was being overridden)
   - Other pages: tab crunches into header (top:60px was too tight)
   - Sizes differ between homepage and other pages
   
   Fix: unify styling + behavior with strong specificity + !important where 
   needed. Match the homepage tab's visual size everywhere. Give BOTH more
   breathing room from the header so the tab doesn't overlap it. */

/* Homepage tab-wrap — sticky and follows all the way down */
section.est-strip .est-tab-wrap{
  position:sticky!important;
  top:66px!important;
  z-index:44!important;
  background:var(--canopy)!important;
  padding:0!important;
  box-shadow:0 4px 12px rgba(22,49,31,.14);
}

/* Global tab (all pages except homepage) — same look and behavior */
.est-tab-global{
  position:sticky!important;
  top:66px!important;
  z-index:44;
  height:0;  /* takes no vertical space; tab overhangs below */
  display:flex;justify-content:center;
  background:transparent;pointer-events:none;
  margin-top:0;
}
/* Add a small breathing room below the header to prevent visual crunch */
.est-tab-global::before{
  content:"";
  position:absolute;
  top:-6px;left:0;right:0;height:6px;
  pointer-events:none;
}
.est-tab-global .est-tab{
  pointer-events:auto;
  border-radius:0 0 14px 14px;
  margin:0;
  box-shadow:0 4px 12px rgba(22,49,31,.22);
  /* v27: 30% taller */
  padding:17px 24px 18px;
  font-size:15px;
  font-weight:800;
  letter-spacing:.02em;
}

/* Ensure both tabs use identical .est-tab styling */
.est-tab{
  display:inline-flex;align-items:center;gap:10px;
  background:var(--hivis);color:#fff;
  border:none;border-radius:0 0 14px 14px;
  padding:17px 24px 18px;
  font-family:var(--font);font-weight:800;font-size:15px;letter-spacing:.02em;
  cursor:pointer;
  transition:background .15s ease,transform .12s ease;
}
.est-tab:hover{background:var(--hivis-dark)}
.est-tab:active{transform:translateY(1px)}


/* ═══ v20 (cont.): On homepage, hide the original est-strip tab-wrap
   The global sticky tab now handles the sticky behavior on every page.
   The est-strip section still exists (contains the panel), just no visible tab. */
section.est-strip > .est-tab-wrap{
  display:none!important;
}

/* ═══ v23: Mobile menu — display all items, scroll cleanly on iOS ═══
   v21 tried position:fixed inside the sticky header. On iOS Safari,
   fixed-inside-sticky gets clipped to the sticky parent's bounds — that's
   why only the first menu item ("Home") was visible in v20.
   
   Fix: keep the menu as a normal in-flow block (like v19), but:
   - Use 100dvh so the shrinking iOS URL bar doesn't cut off items
   - Add padding-bottom so the sticky footer bar (Call/Text) doesn't
     cover the last items
   - Do NOT set body{overflow:hidden} — that was blocking iOS scroll
   The menu uses overscroll-behavior:contain to prevent underlying page
   scroll while the visitor is scrolling inside the menu. */

.mobile-menu.open{
  /* End the menu ABOVE the sticky footer bar (~72px) + iPhone safe area,
     rather than relying on padding-bottom (which iOS was letting overflow
     behind the bar). Anything that doesn't fit scrolls inside the menu. */
  max-height:calc(100svh - 60px - 42px - env(safe-area-inset-bottom, 0px));
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  padding-bottom:12px;
}

/* Do NOT lock body overflow — blocks iOS internal scroll */
body.menu-open{overflow:auto!important}
@media(min-width:940px){body.menu-open{overflow:auto}}

/* ═══ v22 (updated for v27): Mobile estimate strip is now position:fixed.
   Docked immediately below the taller tab (60 header + 53 tab = 113px). */
.mobile-est-strip{
  top:113px!important;
  z-index:39!important;
}


/* ═══ v30: Gallery preview marquee — infinite horizontal scroll ═══ */
.gallery-marquee-cta{
  padding:36px 0 40px;
  background:linear-gradient(180deg,var(--sawgrass) 0%,var(--paper) 100%);
  overflow:hidden;
  position:relative;
}
.marquee-header{text-align:center;margin-bottom:22px;padding:0 20px}
.marquee-header .eyebrow{margin:0 0 6px;color:var(--pine)}
.marquee-header h2{margin:0 0 14px}
.marquee-header .marquee-cta{
  display:inline-flex;align-items:center;gap:8px;
  padding:14px 26px;
  background:var(--hivis);color:#fff;text-decoration:none;
  font-weight:800;font-size:16px;letter-spacing:.02em;
  border-radius:12px;
  box-shadow:0 6px 16px rgba(219,110,29,.35);
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.marquee-header .marquee-cta:hover{
  background:var(--hivis-dark);
  transform:translateY(-2px);
  box-shadow:0 10px 22px rgba(219,110,29,.42);
}
.marquee-track{
  width:100%;max-width:1100px;margin:0 auto;overflow:hidden;padding:6px 0;
  mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%);
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%);
}
.marquee-row{
  display:flex;gap:12px;
  animation:ss-marquee 55s linear infinite;
  width:max-content;
}
.marquee-row:hover{animation-play-state:paused}
.marquee-row a{
  display:block;flex-shrink:0;
  border-radius:10px;overflow:hidden;
  box-shadow:0 4px 12px rgba(22,49,31,.18);
  transition:transform .18s ease, box-shadow .18s ease;
}
.marquee-row a:hover{
  transform:translateY(-3px) scale(1.02);
  box-shadow:0 10px 22px rgba(22,49,31,.28);
}
.marquee-row img{
  display:block;width:180px;height:270px;object-fit:cover;
}
@media(max-width:640px){
  .marquee-row img{width:140px;height:210px}
  .marquee-header h2{font-size:26px}
}
@keyframes ss-marquee{
  0%{transform:translateX(0)}
  100%{transform:translateX(-50%)}
}
@media(prefers-reduced-motion:reduce){
  .marquee-row{animation:none}
  .marquee-track{overflow-x:auto}
}


/* ═══ v39: Single scroll container + always-visible close × ═══
   Prior modal had nested scroll (modal + fillout-modal-wrap) which
   caused the "double scroll" bug where the inner scroll ended before
   the outer scroll took over. Fix: single scroll container on the
   modal itself. Fillout iframe grows naturally; whole modal scrolls
   as one unit. × button sticks to top so it's always visible while
   scrolling through a long form. */
.modal-lead-form{
  max-width:640px !important;
  width:min(100%, 640px);
  padding:0 !important;
  max-height:92vh;
  overflow-y:auto;
  overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  display:block;
  position:relative;
}
/* Sticky top strip inside the modal — holds the title and × so they're always visible */
.modal-top-strip{
  position:sticky;top:0;z-index:10;
  background:var(--pine);
  padding:12px 16px;
  display:flex;justify-content:space-between;align-items:center;
  box-shadow:0 2px 6px rgba(22,49,31,0.18);
}
.modal-top-title{
  color:#fff;font-family:var(--font);font-weight:800;
  font-size:18px;letter-spacing:.02em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.modal-lead-form .modal-x{
  position:relative !important;top:auto !important;right:auto !important;
  width:36px;height:36px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,0.15);color:#fff;
  border:2px solid rgba(255,255,255,0.4);border-radius:50%;
  font-size:22px;font-weight:800;line-height:1;
  cursor:pointer;padding:0;flex-shrink:0;
  transition:background .12s,border-color .12s;
}
.modal-lead-form .modal-x:hover{background:rgba(255,255,255,0.28);border-color:#fff}
.modal-lead-form h3{margin:0 0 4px;font-size:22px}
.modal-lead-form .modal-sub{margin:0 0 14px;font-size:14px;color:var(--ink-soft)}
.modal-footer-row{
  display:flex;align-items:center;justify-content:space-between;
  gap:12px;margin:12px 14px 14px;flex-wrap:wrap;
}
.modal-close-btm{
  background:var(--paper);color:var(--canopy);
  border:2px solid var(--line);border-radius:10px;
  padding:8px 14px;font-family:var(--font);font-weight:700;font-size:13px;
  cursor:pointer;
  transition:border-color .12s,background .12s;
}
.modal-close-btm:hover{border-color:var(--pine);background:#fff}
.modal-lead-form .modal-fine{margin:0;font-size:13px;color:var(--bark)}
.modal-lead-form .modal-fine a{color:var(--pine);font-weight:700}

.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.modal-overlay{align-items:flex-start!important;padding-top:8px}

.fillout-modal-wrap{
  min-height:520px;
  padding:0 14px;
  background:#fff;
}
.fillout-modal-wrap > div{
  width:100%;
  min-height:500px;
}
@media(max-width:640px){
  .modal-overlay{padding-top:4px}
  .modal-lead-form{
    max-height:96vh;
  }
  .modal-top-strip{padding:10px 12px}
  .modal-top-title{font-size:16px}
  .modal-lead-form .modal-x{width:34px;height:34px;font-size:20px}
  .fillout-modal-wrap{min-height:440px;padding:0 12px}
  .modal-footer-row{gap:8px;margin:10px 12px 12px}
}


/* ═══ v32: Contact-us page + thank-you page ═══ */
.contact-hero{padding-top:22px;padding-bottom:14px}
.contact-hero h1{margin:0 0 8px}
.contact-lede{font-size:16px;color:var(--ink-soft);margin:0 0 16px;max-width:640px}
.contact-quicklinks{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.contact-quicklinks .btn{flex:0 1 auto;font-size:14px;padding:10px 16px}
.contact-quicklinks .btn-ghost{color:var(--pine)}

.contact-form-section{padding:8px 0 16px;background:transparent}
.fillout-page-wrap{
  max-width:880px;margin:0 auto;
  background:#fff;
  border-radius:14px;
  box-shadow:0 6px 20px rgba(22,49,31,.12);
  padding:8px;
}
.fillout-page-wrap > div{
  width:100%;
  min-height:500px;
}
@media(max-width:640px){
  .fillout-page-wrap{padding:6px;border-radius:10px}
}

.trust-strip{background:var(--sawgrass);padding:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.trust-items{display:flex;justify-content:space-around;align-items:center;flex-wrap:wrap;gap:14px}
.trust-item{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--canopy);font-size:14.5px}
.trust-item .ti-icon{font-size:20px}
@media(max-width:640px){
  .trust-items{gap:12px}
  .trust-item{flex:1 1 45%;justify-content:center;font-size:13.5px}
}

.reviews-widget{padding:36px 0;background:var(--paper)}
.reviews-widget h2{margin:0 0 18px}
.reviews-widget .eyebrow{margin:0 0 4px;color:var(--pine)}

.thankyou-hero{text-align:center;padding:60px 0 30px;position:relative}
.ty-close-top{
  position:absolute;top:12px;right:16px;
  width:44px;height:44px;
  display:flex;align-items:center;justify-content:center;
  background:var(--paper);color:var(--canopy);
  border:2px solid var(--line);border-radius:50%;
  font-size:26px;font-weight:800;line-height:1;text-decoration:none;
  transition:background .12s,border-color .12s;
}
.ty-close-top:hover{background:#fff;border-color:var(--pine)}
.ty-close-btm{
  display:inline-block;margin:20px auto 0;
  padding:9px 16px;
  background:var(--paper);color:var(--canopy);
  border:2px solid var(--line);border-radius:10px;
  font-weight:700;font-size:14px;text-decoration:none;
  transition:border-color .12s,background .12s;
}
.ty-close-btm:hover{border-color:var(--pine);background:#fff}
.thankyou-icon{font-size:64px;margin-bottom:12px}
.thankyou-hero h1{margin:0 0 12px}
.thankyou-lede{font-size:18px;color:var(--ink-soft);max-width:600px;margin:0 auto 24px}
.thankyou-ctas{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.what-next{list-style:none;padding:0;margin:16px 0 0;counter-reset:step}
.what-next li{position:relative;padding:14px 0 14px 48px;border-bottom:1px solid var(--line);counter-increment:step}
.what-next li:last-child{border-bottom:none}
.what-next li::before{
  content:counter(step);
  position:absolute;left:0;top:12px;
  width:32px;height:32px;border-radius:50%;
  background:var(--pine);color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-weight:800;
}
