/* ===== styles-core.css merged in 2026-08-16 ===== */
:root{--forest:#17402B;--fd:#0E2A1C;--fm:#275C3C;--amber:#F59F0A;--orange:#E4590C;--paper:#F6F5F0;--pd:#ECE9DF;--ink:#182019;--is:#3E4A42;--bark:#3A2A1D;--wood:#8A6239;--line:rgba(23,64,43,.14);--sh:0 10px 30px rgba(14,42,28,.16);--r:14px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Barlow,system-ui,sans-serif;font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;padding-left:40px}img{max-width:100%;display:block;height:auto}a{color:inherit}h1,h2,h3,h4{font-family:'Barlow Condensed',system-ui,sans-serif;font-weight:700;line-height:1.08;margin:0 0 .4em;color:var(--fd)}h1{font-size:clamp(2.3rem,5.5vw,4rem);text-transform:uppercase}h2{font-size:clamp(1.8rem,4vw,2.6rem);text-transform:uppercase}h3{font-size:1.35rem}p{margin:0 0 1em}.container{max-width:1180px;margin:0 auto;padding:0 24px}.eyebrow{font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;letter-spacing:.14em;font-weight:600;font-size:.85rem;color:var(--orange);margin-bottom:6px}.lead{font-size:1.18rem;color:var(--is);max-width:60ch}.lead.ctr{margin:0 auto 24px;text-align:center}section{padding:72px 0}.tight{padding:40px 0}.bark-edge{position:fixed;top:0;left:0;bottom:0;width:40px;z-index:40;pointer-events:none;background-image:url("/images/bark.webp");background-repeat:repeat-y;background-position:left top;background-size:100% auto;box-shadow:inset -9px 0 14px -6px rgba(0,0,0,.75),3px 0 10px rgba(0,0,0,.3)}@media(max-width:900px){.bark-edge{width:20px}body{padding-left:20px}}.action-bar{position:sticky;top:0;z-index:50;background:var(--fd);color:var(--paper);font-family:'Barlow Condensed',sans-serif}.action-bar .container{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:9px;padding-bottom:9px}.action-bar .msg{font-size:.93rem;opacity:.92}.btns{display:flex;gap:8px}.btn{display:inline-flex;align-items:center;gap:8px;font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;letter-spacing:.04em;font-weight:700;text-decoration:none;padding:10px 18px;border-radius:8px;border:2px solid transparent;font-size:.95rem;cursor:pointer;transition:transform .12s}.btn:hover{transform:translateY(-1px)}.btn-call{background:var(--orange);color:#fff}.btn-text{background:transparent;color:#fff;border-color:rgba(255,255,255,.5)}.btn-amber{background:var(--amber);color:var(--fd)}.btn-outline{background:transparent;color:var(--fd);border-color:var(--fd)}.btn-ghost{background:transparent;color:#fff;border-color:#fff}.btn-lg{padding:15px 28px;font-size:1.12rem;border-radius:10px}@media(max-width:680px){.action-bar .msg{display:none}.action-bar .container{justify-content:center}}header.site{background:var(--paper);border-bottom:1px solid var(--line)}.nav-wrap{display:flex;align-items:center;justify-content:space-between;padding:12px 0;gap:16px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none}.brand img{width:150px}.bt{display:flex;flex-direction:column;line-height:1.1}.brand-name{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:1.4rem;color:var(--fd)}.brand-tag{font-size:.66rem;color:var(--fm);text-transform:uppercase;letter-spacing:.14em}nav.main{display:flex;gap:22px;align-items:center}nav.main a{text-decoration:none;font-weight:600;font-size:.97rem;color:var(--ink);padding:4px 0;border-bottom:2px solid transparent}nav.main a:hover,nav.main a.on{color:var(--forest);border-bottom-color:var(--amber)}nav.main a.cta{background:var(--forest);color:#fff;padding:10px 18px;border-radius:8px;font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;font-weight:700;border:none}.menu-toggle{display:none;background:none;border:none;cursor:pointer;padding:8px;z-index:60}.menu-toggle span{display:block;width:26px;height:3px;background:var(--fd);margin:5px 0;border-radius:2px}@media(max-width:960px){nav.main{position:fixed;top:0;right:0;height:100vh;width:80%;max-width:330px;background:var(--fd);flex-direction:column;align-items:flex-start;padding:88px 26px 26px;gap:18px;transform:translateX(105%);transition:transform .25s;z-index:55;overflow-y:auto}nav.main.open{transform:translateX(0)}nav.main a{color:#fff;font-size:1.12rem}nav.main a:hover,nav.main a.on{color:var(--amber);border-bottom-color:transparent}nav.main a.cta{background:var(--amber);color:var(--fd)}.menu-toggle{display:block}}.hero{position:relative;background:var(--fd);color:#fff;overflow:hidden}.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 82% 0,rgba(245,159,10,.17),transparent 55%),radial-gradient(ellipse at 0 100%,rgba(228,89,12,.15),transparent 55%);z-index:1}.hero .container{position:relative;z-index:2;padding:80px 24px;display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center}.hero h1{color:#fff}.hero .lead{color:#E7EEE8}.hero-photo{border-radius:var(--r);overflow:hidden;box-shadow:var(--sh);border:4px solid rgba(255,255,255,.14)}.hero-photo img{width:100%;aspect-ratio:4/3;object-fit:cover}.hero-cta{display:flex;gap:14px;margin-top:24px;flex-wrap:wrap}.hero-cta.ctr{justify-content:center}.hstars{color:var(--amber);font-size:1rem;margin-top:16px;font-weight:600}@media(max-width:880px){.hero .container{grid-template-columns:1fr;padding:52px 24px}.hero-photo{order:-1}}.trust-strip{background:var(--pd);border-bottom:1px solid var(--line)}.trust-strip .container{display:flex;flex-wrap:wrap;gap:12px 26px;justify-content:space-between;padding:16px 24px;font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;font-weight:600;font-size:.9rem;color:var(--fd)}.trust-strip span{display:flex;align-items:center;gap:8px}.dot{width:7px;height:7px;border-radius:50%;background:var(--orange);flex:none;display:inline-block}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:28px}@media(max-width:1000px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}}@media(max-width:660px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}}.card{background:#fff;border-radius:var(--r);padding:24px;border:1px solid var(--line);box-shadow:0 4px 14px rgba(14,42,28,.05);transition:transform .15s,box-shadow .15s;display:flex;flex-direction:column}.card:hover{transform:translateY(-3px);box-shadow:var(--sh)}.card .num{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:2rem;color:var(--amber);line-height:1}.card p{color:var(--is);font-size:.97rem;flex:1}.more{font-weight:700;color:var(--forest);text-decoration:none;font-size:.92rem;border-bottom:2px solid var(--amber);align-self:flex-start}.section-forest{background:var(--fd);color:#fff}.section-forest h2,.section-forest h3{color:#fff}.section-forest .lead,.section-forest p{color:#D9E4DC}.section-paper-dim{background:var(--pd)}.way-list{display:flex;flex-direction:column;margin-top:22px}.way-item{display:grid;grid-template-columns:76px 1fr;gap:18px;padding:22px 0;border-top:1px solid rgba(255,255,255,.15)}.way-item:last-child{border-bottom:1px solid rgba(255,255,255,.15)}.way-item .n{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:2.3rem;color:var(--amber);line-height:1}.way-item h4{color:#fff;margin:0 0 6px;font-size:1.22rem;text-transform:uppercase}.way-item p{color:#D9E4DC;margin:0;font-size:.97rem}@media(max-width:560px){.way-item{grid-template-columns:52px 1fr;gap:12px}.way-item .n{font-size:1.7rem}}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:22px}.gfig{margin:0}.gallery img{border-radius:10px;aspect-ratio:4/3;object-fit:cover;width:100%}.gfig figcaption{font-size:.86rem;color:var(--is);margin-top:8px}@media(max-width:800px){.gallery{grid-template-columns:1fr 1fr}}@media(max-width:520px){.gallery{grid-template-columns:1fr}}.annie-box{display:flex;gap:20px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:20px 24px;box-shadow:0 4px 14px rgba(14,42,28,.05)}.annie-box img{width:96px;flex:none}.annie-box .bubble{font-style:italic;color:var(--fd);font-size:1.05rem}.annie-box .who{display:block;margin-top:6px;font-style:normal;font-weight:700;font-size:.82rem;color:var(--orange);text-transform:uppercase;letter-spacing:.06em}@media(max-width:520px){.annie-box{flex-direction:column;text-align:center}}.rev-grid{margin-top:24px}.review{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:22px;box-shadow:0 4px 14px rgba(14,42,28,.05);display:flex;flex-direction:column}.stars{color:var(--amber);font-size:1.05rem;letter-spacing:2px}.rq{font-family:'Barlow Condensed',sans-serif;font-size:1.28rem;font-weight:700;color:var(--fd);margin:10px 0 8px;line-height:1.2}.rp{color:var(--is);font-size:.95rem;flex:1}.rmeta{font-size:.85rem;color:var(--fm);border-top:1px solid var(--line);padding-top:10px;margin-top:6px}.badge-grid{margin-top:24px}.bcard{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:22px;display:flex;flex-direction:column;gap:6px}.bk{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:1.5rem;color:#fff;background:var(--forest);width:52px;height:52px;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:6px}.bcard p{font-size:.94rem;color:var(--is);flex:1}.faq{margin-top:20px}.faq details{border-top:1px solid var(--line);padding:16px 0}.faq details:last-child{border-bottom:1px solid var(--line)}.faq summary{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:1.15rem;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:16px;align-items:center;color:var(--fd)}.faq summary::-webkit-details-marker{display:none}.faq summary::after{content:"+";font-size:1.6rem;color:var(--orange);font-weight:400;line-height:1}.faq details[open] summary::after{content:"\2212"}.faq p{color:var(--is);margin:10px 0 0}.areas-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-top:22px}.areas-grid a{display:block;background:#fff;border:1px solid var(--line);border-radius:10px;padding:15px 16px;text-decoration:none;font-weight:700;color:var(--fd);font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;transition:background .15s,color .15s}.areas-grid a:hover{background:var(--forest);color:#fff}@media(max-width:1000px){.areas-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:620px){.areas-grid{grid-template-columns:repeat(2,1fr)}}.acard{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:22px;display:flex;flex-direction:column}.acard p{color:var(--is);font-size:.95rem;flex:1}.form-card{background:#fff;border-radius:var(--r);border:1px solid var(--line);padding:30px;box-shadow:var(--sh)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:660px){.form-row{grid-template-columns:1fr}}label{font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.03em;color:var(--fd);display:block;margin-bottom:6px}input,select,textarea{width:100%;padding:12px 14px;border-radius:8px;border:1.5px solid var(--line);font-family:Barlow,sans-serif;font-size:1rem;margin-bottom:16px;background:var(--paper)}input:focus,select:focus,textarea:focus{outline:2px solid var(--forest);outline-offset:1px}textarea{min-height:120px;resize:vertical}.page-hero{background:var(--fd);color:#fff;padding:52px 0 60px;position:relative;overflow:hidden}.page-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 100% 0,rgba(245,159,10,.17),transparent 55%)}.page-hero .container{position:relative;z-index:1}.page-hero h1{color:#fff;margin-bottom:.25em}.page-hero .lead{color:#E7EEE8}.breadcrumb{font-size:.85rem;color:#B9C9BE;margin-bottom:12px}.breadcrumb a{color:#B9C9BE}.prose{max-width:760px}.prose h2{margin-top:1.2em}.prose ul{padding-left:20px;color:var(--is);line-height:1.9}.prose li{margin-bottom:6px}.checks{list-style:none;padding:0}.checks li{padding-left:28px;position:relative;margin-bottom:10px;color:var(--is)}.checks li::before{content:"\2713";position:absolute;left:0;color:var(--orange);font-weight:700}footer.site{background:var(--fd);color:#D9E4DC;padding:54px 0 22px}.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.1fr;gap:30px}footer.site h4{color:#fff;text-transform:uppercase;margin-bottom:12px;font-size:1.02rem}footer.site h4.mt{margin-top:18px}footer.site a{color:#D9E4DC;text-decoration:none;font-size:.93rem;display:block;margin-bottom:7px}footer.site a:hover{color:var(--amber)}footer.site p{font-size:.92rem;color:#B9C9BE}.fl{margin-bottom:14px}.frate strong{color:#fff}.fawd{color:var(--amber);font-weight:600}.footer-bottom{border-top:1px solid rgba(255,255,255,.15);margin-top:34px;padding-top:18px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:.85rem;color:#9FB0A6}@media(max-width:960px){.footer-grid{grid-template-columns:1fr 1fr}}@media(max-width:580px){.footer-grid{grid-template-columns:1fr}}a:focus-visible,button:focus-visible{outline:3px solid var(--amber);outline-offset:2px}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}.action-bar .container{padding-top:7px;padding-bottom:7px;gap:8px}.action-bar .btn{padding:8px 14px;font-size:.86rem;white-space:nowrap;border-radius:6px}@media(max-width:680px){.action-bar .msg{display:none}.action-bar .container{justify-content:stretch;gap:8px;padding:8px 14px}.btns{display:flex;gap:8px;width:100%}.action-bar .btn{flex:1;justify-content:center;padding:11px 8px;font-size:.88rem;letter-spacing:.02em}}.brand img{width:170px}@media(max-width:960px){.brand img{width:140px}}.hero{position:relative;background:var(--fd);color:#fff;overflow:hidden;padding:0}.hero-bg{position:absolute;inset:0;z-index:0}.hero-bg img{width:100%;height:100%;object-fit:cover;object-position:center 42%}.hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,rgba(14,42,28,.96) 0%,rgba(14,42,28,.90) 42%,rgba(14,42,28,.55) 70%,rgba(14,42,28,.35) 100%)}@media(max-width:880px){.hero-bg::after{background:linear-gradient(180deg,rgba(14,42,28,.72) 0%,rgba(14,42,28,.90) 45%,rgba(14,42,28,.97) 100%)}}.hero .container{position:relative;z-index:2;display:block;max-width:1180px;padding:104px 24px 88px}.hero-copy{max-width:640px}.kicker{display:flex;align-items:center;gap:14px;margin-bottom:20px}.kicker .rule{height:2px;width:44px;background:var(--amber);flex:none;border-radius:2px}.kicker span{font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;letter-spacing:.18em;font-weight:600;font-size:1rem;color:var(--amber)}.hero h1{color:#fff;font-size:clamp(2.6rem,6.4vw,4.6rem);line-height:.96;margin-bottom:22px;letter-spacing:-.01em}.hero h1 .amb{color:var(--amber);display:block}.hero .lead{color:#DCE7DF;font-size:1.24rem;max-width:52ch;margin-bottom:30px}.proof{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:30px}.pill{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.09);border:1px solid rgba(245,159,10,.42);border-radius:999px;padding:8px 16px;font-size:.9rem;font-weight:600;color:#fff;backdrop-filter:blur(2px)}.pill .st{color:var(--amber);letter-spacing:1px}.hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:0}.btn-amber{box-shadow:0 6px 20px rgba(245,159,10,.28)}.hero-note{margin-top:20px;color:#B9C9BE;font-size:.95rem}.hero-note a{color:var(--amber);font-weight:600;text-decoration:none;border-bottom:1px solid rgba(245,159,10,.5)}@media(max-width:880px){.hero .container{padding:56px 22px 60px}.hero h1{font-size:clamp(2.3rem,9vw,3.2rem)}.hero .lead{font-size:1.08rem}.kicker span{font-size:.82rem;letter-spacing:.14em}.kicker .rule{width:26px}.hero-cta .btn{width:100%;justify-content:center}}.eyebrow{font-size:.95rem;letter-spacing:.2em;font-weight:600;position:relative;padding-left:0;margin-bottom:10px}.section-forest .eyebrow{color:var(--amber)}h2{letter-spacing:-.005em}.sec-head{max-width:640px;margin-bottom:8px}.band-cream{background:linear-gradient(180deg,#FBFAF6 0%,var(--pd) 100%)}.band-amber{background:linear-gradient(135deg,#FFF6E4 0%,#FDEDD0 100%);border-top:3px solid var(--amber);border-bottom:3px solid var(--amber)}.annie-strip{display:flex;gap:24px;align-items:center;max-width:900px;margin:0 auto}.annie-strip img{width:120px;flex:none;filter:drop-shadow(0 6px 14px rgba(58,42,29,.22))}.annie-strip .say{font-size:1.22rem;line-height:1.5;color:var(--fd);font-weight:500}.annie-strip .who{display:block;margin-top:10px;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:.86rem;color:var(--orange);text-transform:uppercase;letter-spacing:.12em}@media(max-width:640px){.annie-strip{flex-direction:column;text-align:center;gap:14px}.annie-strip img{width:96px}.annie-strip .say{font-size:1.08rem}}.card{border-top:3px solid transparent;transition:border-color .18s,transform .18s,box-shadow .18s}.card:hover{border-top-color:var(--amber)}.card .num{font-size:2.4rem;opacity:.9}.card h3{font-size:1.45rem;text-transform:uppercase;letter-spacing:.01em}.way-item .n{color:var(--amber);opacity:.85}.review{border-left:3px solid var(--amber)}.areas-grid a{border-left:3px solid var(--amber)}.kicker .rule{display:none}.kicker{gap:0}.kicker span{font-size:.9rem;letter-spacing:.22em;color:var(--amber)}.hero .lead{font-size:1.06rem;line-height:1.55;color:#C9D8CE;max-width:46ch;margin-bottom:26px}.hero h1{margin-bottom:16px}@media(max-width:880px){.hero .lead{font-size:.99rem;line-height:1.5}.hero h1{font-size:clamp(2.1rem,8.2vw,2.9rem)}.kicker span{font-size:.72rem;letter-spacing:.18em}.proof{gap:7px;margin-bottom:24px}.pill{font-size:.78rem;padding:6px 12px}.action-bar .btn{padding:9px 6px;font-size:.8rem}.hero-note{font-size:.88rem}}.brand img{width:170px;height:auto}@media(max-width:960px){.brand img{width:132px}}.rev-dark{background:var(--fd);color:#fff;position:relative;overflow:hidden}.rev-dark::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 15% 0,rgba(245,159,10,.14),transparent 58%)}.rev-dark .container{position:relative;z-index:1}.score{text-align:center;margin-bottom:52px}.score .big{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:clamp(5rem,14vw,9rem);color:var(--amber);line-height:.82;letter-spacing:-.02em}.score .st{color:var(--amber);font-size:1.6rem;letter-spacing:7px;display:block;margin-top:14px}.score .cap{display:block;margin-top:14px;font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;letter-spacing:.2em;font-size:.9rem;color:#B9C9BE}.q-lead{max-width:820px;margin:0 auto 48px;text-align:center}.q-lead p{font-family:'Barlow Condensed',sans-serif;font-size:clamp(1.8rem,4.6vw,3rem);line-height:1.14;color:#fff;font-weight:700;margin:0 0 18px}.q-lead .by{font-size:.92rem;color:var(--amber);letter-spacing:.1em;text-transform:uppercase;font-family:'Barlow Condensed',sans-serif;font-weight:600}.q-row{display:grid;grid-template-columns:1fr 1fr;gap:44px;max-width:900px;margin:0 auto;padding-top:40px;border-top:1px solid rgba(255,255,255,.14)}.q-row p{font-size:1.12rem;color:#DCE7DF;margin:0 0 12px;line-height:1.45}.q-row .by{font-size:.84rem;color:var(--amber);letter-spacing:.08em;text-transform:uppercase;font-family:'Barlow Condensed',sans-serif;font-weight:600}@media(max-width:700px){.q-row{grid-template-columns:1fr;gap:32px}}.rev-more{text-align:center;margin-top:44px}.rev-more{display:flex;gap:34px;justify-content:center;flex-wrap:wrap}
.rev-more a{color:#fff;border-bottom:2px solid var(--amber);text-decoration:none;font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;letter-spacing:.1em;font-weight:700;font-size:1rem}.cred-row{display:flex;flex-wrap:wrap;gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:30px}.cred{flex:1 1 220px;padding:26px 24px;border-right:1px solid var(--line)}.cred:last-child{border-right:none}.cred h3{font-size:1.08rem;margin-bottom:6px;text-transform:uppercase;letter-spacing:.01em}.cred p{font-size:.9rem;color:var(--is);margin-bottom:8px}.cred .more{font-size:.84rem}@media(max-width:820px){.cred{flex:1 1 100%;border-right:none;border-bottom:1px solid var(--line);padding:20px 0}.cred:last-child{border-bottom:none}}.svc-note{margin-top:26px;font-size:.97rem;color:var(--is)}.svc-note a{color:var(--forest);font-weight:600;border-bottom:1px solid var(--amber);text-decoration:none}


/* ===== end core ===== */
/* single in-article photo on service pages */
.photo-wide{margin:30px 0 0;max-width:760px}
.photo-wide img{width:100%;height:auto;border-radius:3px;border:1px solid var(--line);box-shadow:0 6px 22px rgba(14,42,28,.12)}
.photo-wide figcaption{font-size:.9rem;color:var(--is);margin-top:10px;border-left:3px solid var(--amber);padding-left:12px}

/* Van Alstyne chamber seal. Transparent PNG source, no box or plate behind it. */
.cred.has-seal{position:relative}
.cred .seal{width:64px;height:auto;float:right;margin:0 0 8px 12px}
.bcard .bseal{width:72px;margin-bottom:10px}
.bcard .bseal .seal{width:100%;height:auto}
footer.site .fseal{width:88px;height:auto;margin:4px 0 12px}
@media(max-width:820px){.cred .seal{width:54px}}

.verify{font-size:.86rem;color:var(--is);margin:6px 0 0;line-height:1.45}
footer.site .fmember{color:#D9E4DC;font-size:.93rem;display:block;margin-bottom:7px}

/* ==================================================================
   BATCH 2026-08-07b
   Written against the verified contents of this file, not blind.
   1. Centered stacked header: large logo, ESTABLISHED 2019, nav below
   2. Service cards: real photos, real hierarchy, level bottoms
   ================================================================== */

/* --- 1. Centered stacked header --------------------------------- */
.nav-wrap{position:relative;flex-direction:column;align-items:center;justify-content:flex-start;gap:0;padding:26px 0 0}
.brand{flex-direction:column;gap:0;justify-content:center}
.brand img{width:min(340px,70vw);height:auto}
.est{display:flex;align-items:center;gap:18px;width:100%;max-width:540px;margin:16px 0 2px}
.est .r{flex:1;height:2px;background:linear-gradient(90deg,transparent,var(--amber))}
.est .r.rev{background:linear-gradient(270deg,transparent,var(--amber))}
.est b{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:1.05rem;text-transform:uppercase;letter-spacing:.34em;color:var(--fm);white-space:nowrap;text-indent:.34em}
nav.main{margin-top:16px;width:100%;justify-content:center;flex-wrap:wrap;gap:14px 30px;border-top:1px solid var(--line);padding:15px 0 13px}
@media(max-width:960px){
  .nav-wrap{padding:18px 0 16px}
  .brand img{width:min(230px,58vw)}
  .est{max-width:330px;margin:12px 0 0}
  .est b{font-size:.8rem;letter-spacing:.26em;text-indent:.26em}
  .menu-toggle{position:absolute;top:12px;right:6px}
  nav.main{position:fixed;top:0;right:0;width:80%;max-width:330px;height:100vh;margin-top:0;border-top:none;padding:88px 26px 26px;gap:18px;justify-content:flex-start;flex-wrap:nowrap}
}

/* --- 2. Service cards ------------------------------------------- */
.svc-feature{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:32px}
.svc-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:0 6px 20px rgba(14,42,28,.08);transition:transform .18s,box-shadow .18s}
.svc-card:hover{transform:translateY(-4px);box-shadow:0 18px 44px rgba(14,42,28,.20)}
.svc-shot{position:relative;aspect-ratio:16/10;background:var(--fd);overflow:hidden}
.svc-shot img{width:100%;height:100%;object-fit:cover}
.svc-shot::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(14,42,28,0) 34%,rgba(14,42,28,.90) 100%)}
.svc-shot h3{position:absolute;z-index:2;left:24px;right:24px;bottom:18px;margin:0;color:#fff;text-transform:uppercase;line-height:1;font-size:clamp(1.55rem,2.7vw,2.1rem);text-shadow:0 2px 10px rgba(0,0,0,.35)}
.svc-body{display:flex;flex-direction:column;flex:1;padding:22px 24px 24px}
.svc-body p{color:var(--is);font-size:1rem;line-height:1.55;flex:1;margin:0 0 18px}
.svc-minor{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:26px}
.svc-panel{display:flex;flex-direction:column;background:var(--fd);color:#fff;border-radius:var(--r);border-left:5px solid var(--amber);padding:26px 28px 28px;box-shadow:0 6px 20px rgba(14,42,28,.14);transition:transform .18s,box-shadow .18s}
.svc-panel:hover{transform:translateY(-4px);box-shadow:0 18px 44px rgba(14,42,28,.26)}
.svc-panel .kick{font-family:'Barlow Condensed',sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:.2em;font-size:.76rem;color:var(--amber);margin-bottom:10px}
.svc-panel h3{color:#fff;margin:0 0 12px;font-size:1.75rem;text-transform:uppercase;line-height:1}
.svc-panel p{color:#D9E4DC;font-size:.99rem;line-height:1.55;flex:1;margin:0 0 18px}
.svc-panel .more{color:#fff;border-bottom-color:var(--amber)}
@media(max-width:820px){.svc-feature,.svc-minor{grid-template-columns:1fr;gap:20px}}

/* ==================================================================
   BATCH 2026-08-08a
   1. Brand marks beside the Facebook and Nextdoor links in the footer
   2. Nextdoor Neighborhood Fave winner badges
   3. Chamber Member block: Farmersville and Van Alstyne kept separate
   ================================================================== */

/* --- 1. Social links with brand marks --------------------------- */
footer.site a.grev{display:inline;color:#fff;border-bottom:1px solid rgba(245,159,10,.6)}
footer.site a.grev:hover{color:var(--amber);border-bottom-color:var(--amber)}
footer.site a.soc{display:flex;align-items:center;gap:9px}
footer.site a.soc::before{content:"";width:19px;height:19px;flex:none;background-repeat:no-repeat;background-position:center;background-size:contain;opacity:.9;transition:opacity .15s}
footer.site a.soc:hover::before{opacity:1}
footer.site a.soc-nd::before{background-image:url("/images/nextdoor-mark-white.webp")}

/* --- 2. Neighborhood Fave badges -------------------------------- */
.faves{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.faves img{width:78px;height:78px}
footer.site .faves{margin:0 0 4px}
.cred .faves{margin-top:12px}
.cred .faves img{width:72px;height:72px}
@media(max-width:580px){.faves img{width:70px;height:70px}}

/* --- 3. Chamber blocks, one self-contained group each ----------- */
.chamber{margin-bottom:16px}
.chamber:last-child{margin-bottom:0}
.chamber .cname{display:block;color:#fff;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:1rem;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}
.chamber a{color:#fff;border-bottom:1px solid rgba(245,159,10,.6);margin-bottom:0}
.chamber a:hover{color:var(--amber);border-bottom-color:var(--amber)}
.chamber a.cname{display:inline-block;margin-bottom:4px}
.chamber .caddr{display:block;color:#B9C9BE;font-size:.9rem;line-height:1.45;margin-bottom:5px}
footer.site .chamber .fseal{margin:0 0 9px}

/* --- 4. Mobile nav drawer: Annie in the empty space --------------
   Applies on every page from this one file, no HTML change needed. */
@media(max-width:960px){
  nav.main{
    background-image:
      radial-gradient(ellipse 340px 300px at 50% 84%, rgba(245,159,10,.20), transparent 68%),
      url("/images/annie.webp");
    background-repeat:no-repeat,no-repeat;
    background-position:center bottom, center bottom 18px;
    background-size:auto, 190px auto;
    padding-bottom:250px;
  }
}
@media(max-width:960px) and (max-height:640px){
  nav.main{background-size:auto,140px auto;padding-bottom:190px}
}

/* --- 5. Call bar runs full width -------------------------------
   The bark edge is a fixed 34px strip down the left of the page, so
   the sticky call bar used to start after it and the very top of the
   screen was two different colours. Pull the bar out to the viewport
   edge and pad the inside back so the buttons do not move. */
.action-bar{margin-left:-40px;padding-left:40px}
@media(max-width:900px){.action-bar{margin-left:-20px;padding-left:20px}}

/* --- 6. Menu button becomes a clean white X when the drawer is open (v2)
   v1 moved the top and bottom bars 13px, on the assumption that a 5px
   margin under one bar and a 5px margin over the next add up to 10px of
   gap. They do not. Adjacent margins collapse to a single 5px, so the
   real centre to centre spacing was 8px and each stroke overshot the
   middle by 5px. The two lines crossed well off centre, which is what
   read as a snapped arrow, and the crossing looked like a third stroke
   even though the middle bar was hidden.
   The button is now a flex column with an explicit gap, so the spacing
   is a number this stylesheet sets instead of one it has to guess:
   3px bar + 6px gap = 9px, and the two strokes meet exactly on the
   middle bar's line. Middle bar is hidden by opacity AND scaleX so it
   cannot reappear. Fixed 48x48 box keeps the tap target honest. */
@media(max-width:960px){
  .menu-toggle{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:48px;height:48px;padding:0;top:8px;right:2px}
  .menu-toggle span{margin:0;width:26px;height:3px;flex:none;transition:transform .2s ease,opacity .15s ease,background .2s ease}
  .nav-wrap:has(nav.main.open) .menu-toggle span{background:#fff}
  .nav-wrap:has(nav.main.open) .menu-toggle span:nth-child(1){transform:translateY(9px) rotate(45deg)}
  .nav-wrap:has(nav.main.open) .menu-toggle span:nth-child(2){opacity:0;transform:scaleX(0)}
  .nav-wrap:has(nav.main.open) .menu-toggle span:nth-child(3){transform:translateY(-9px) rotate(-45deg)}
}

/* --- 7. Footer logo sized so its fine print stays legible ------- */
footer.site .fl{width:320px;max-width:88%;height:auto}
@media(max-width:580px){footer.site .fl{width:300px;max-width:92%}}

/* --- 8. THE ARBORWISE WAY headline (v2) ----------------------
   v1 problems: lines collided, the TM floated off on its own, the
   glow smeared brown on dark green, THE looked orphaned, and WAY
   stranded next to a word three times its length. */
.way-title{display:block;line-height:1;margin:0 0 26px;text-transform:none}
.way-title .t{display:block;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:1.5rem;letter-spacing:.3em;text-transform:uppercase;color:#fff;margin-bottom:6px;line-height:1}
.way-title .brand{display:block;font-size:clamp(2.9rem,11.5vw,6rem);text-transform:uppercase;color:var(--amber);letter-spacing:-.014em;line-height:.98;white-space:nowrap}
.way-title .brand sup{font-size:.30em;top:-1.60em;margin-left:.22em;letter-spacing:.02em;font-weight:700;vertical-align:baseline;position:relative}
.way-title .w{display:block;font-size:clamp(2.9rem,11.5vw,6rem);text-transform:uppercase;color:#fff;line-height:.98;letter-spacing:.455em}
.way-title .rule{display:none}
@media(max-width:520px){
  .way-title .t{font-size:1.12rem;letter-spacing:.26em}
  .way-title .w{letter-spacing:.4em}
  }

/* --- 9. Section eyebrows: readable labels, not decoration ------
   Were .95rem with .2em tracking, which dissolved into the
   background. Bigger, heavier, tighter tracking, and a colour bar
   so the eye catches the section start. Applies site wide. */
.eyebrow{display:flex;align-items:center;gap:13px;font-size:1.12rem;font-weight:700;letter-spacing:.15em;line-height:1.2;margin-bottom:14px;color:var(--orange)}
.eyebrow::before{content:"";flex:none;width:36px;height:4px;border-radius:2px;background:var(--orange)}
.eyebrow.ctr{justify-content:center}
.section-forest .eyebrow{color:var(--amber)}
.section-forest .eyebrow::before{background:var(--amber)}
.page-hero .eyebrow{color:var(--amber)}
.page-hero .eyebrow::before{background:var(--amber)}
@media(max-width:580px){
  .eyebrow{font-size:1rem;letter-spacing:.13em;gap:10px}
  .eyebrow::before{width:28px;height:3px}
}

/* --- 10. Arborwise Way items: the words lead, not the numbers ---
   Headings were white and the numbers amber, so the eye landed on
   "01" instead of "SAFETY COMES FIRST". Flipped. */
.way-item h4{color:var(--amber);font-size:1.42rem;letter-spacing:.012em;margin-bottom:9px}
.way-item .n{color:rgba(255,255,255,.62);opacity:1;font-size:2.9rem;font-weight:800}
@media(max-width:560px){
  .way-item h4{font-size:1.24rem}
  .way-item .n{font-size:2rem}
}

/* --- 11. Eyebrow rule sits above the label, not beside it -------
   A bar on one side only pushed the label off the left edge that
   the heading below it lines up on. Now everything is flush. */
.eyebrow{display:block}
.eyebrow::before{display:block;margin-bottom:11px;width:44px;height:4px}
.eyebrow.ctr{text-align:center}
.eyebrow.ctr::before{margin-left:auto;margin-right:auto}
@media(max-width:580px){.eyebrow::before{width:34px;height:3px;margin-bottom:9px}}

/* --- 12. Annie, bottom left, thought bubble --------------------
   Cloud sits ABOVE her head and to the left, roughly half over her
   and half out into the page. Text is smaller than body copy so it
   reads as an aside. Three shrinking dots run from the cloud down
   to her beak, and the bubble is stacked above the artwork so the
   dots are not hidden behind her. */
.annie-perch{position:fixed;left:4px;bottom:10px;z-index:49;pointer-events:none}
.annie-btn{display:block;padding:0;margin:0;border:0;background:none;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent}
.annie-perch img{position:relative;z-index:1;display:block;width:104px;height:auto;filter:drop-shadow(0 10px 18px rgba(0,0,0,.42));animation:annie-bob 5.5s ease-in-out infinite;transform-origin:48% 84%}
.annie-bubble{position:absolute;z-index:3;left:8px;bottom:136px;opacity:0;visibility:hidden;transform:scale(.86);transform-origin:0 100%;transition:opacity .22s ease,transform .22s ease,visibility 0s linear .22s}
.annie-perch.show .annie-bubble{opacity:1;visibility:visible;transform:scale(1);transition:opacity .22s ease,transform .22s ease,visibility 0s}
.annie-say{margin:0;width:max-content;max-width:126px;background:#fff;color:#182019;border:2.5px solid #182019;border-radius:50%/44%;padding:9px 13px;text-align:center;font-family:'Barlow Condensed',sans-serif;font-size:.66rem;font-weight:700;line-height:1.16;box-shadow:3px 3px 0 rgba(24,32,25,.9)}
.annie-dot{position:absolute;z-index:3;display:block;background:#fff;border:2.5px solid #182019;border-radius:50%;box-shadow:2px 2px 0 rgba(24,32,25,.9)}
.annie-dot.d1{width:14px;height:14px;left:26px;bottom:-14px}
.annie-dot.d2{width:9px;height:9px;left:35px;bottom:-25px}
.annie-dot.d3{width:6px;height:6px;left:43px;bottom:-33px}
.annie-perch.tilt img{animation:annie-bob 5.5s ease-in-out infinite,annie-tilt .8s ease}
@keyframes annie-bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-5px) rotate(-1.6deg)}}
@keyframes annie-tilt{0%{transform:rotate(0)}30%{transform:rotate(-9deg)}60%{transform:rotate(4deg)}100%{transform:rotate(0)}}
@keyframes annie-in{from{opacity:0;transform:scale(.84)}to{opacity:1;transform:scale(1)}}
.annie-perch.still img{animation:none}
.annie-perch.still .annie-bubble{transition:none}
@media(max-width:880px){
  .annie-perch{left:2px;bottom:8px}
  .annie-perch img{width:92px}
  .annie-bubble{left:6px;bottom:120px}
  .annie-say{max-width:112px;font-size:.62rem;padding:8px 11px;border-width:2px}
  .annie-dot{border-width:2px}
  .annie-dot.d1{width:12px;height:12px;left:23px;bottom:-12px}
  .annie-dot.d2{width:8px;height:8px;left:31px;bottom:-22px}
  .annie-dot.d3{width:5px;height:5px;left:38px;bottom:-29px}
}
@media(max-width:400px){
  .annie-perch img{width:80px}
  .annie-bubble{left:4px;bottom:106px}
  .annie-say{max-width:100px;font-size:.58rem;padding:7px 10px}
}
@media(prefers-reduced-motion:reduce){
  .annie-perch img{animation:none!important}
}

/* --- 13. MEET ANNIE ---------------------------------------------
   She is the face of the company, so this stops being a thin cream
   strip and becomes a dark feature panel. It sits between two pale
   bands, so the contrast is what makes it land. */
.meet-annie{position:relative;overflow:hidden;background:linear-gradient(135deg,#0B2417 0%,var(--fd) 46%,#173D28 100%);background-color:var(--fd);border-top:4px solid var(--amber);border-bottom:4px solid var(--amber);padding:52px 0}
.meet-annie::before{content:"";position:absolute;left:-6%;top:50%;width:420px;height:420px;transform:translateY(-50%);background:radial-gradient(circle,rgba(245,159,10,.22),transparent 68%);pointer-events:none}
.meet-annie .container{position:relative;z-index:1}
.meet-annie .annie-strip{display:flex;flex-direction:column;align-items:center;gap:20px;max-width:760px;margin:0 auto;text-align:center}
.meet-annie .annie-pic{flex:none;width:230px;aspect-ratio:1;border-radius:50%;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 34%,#FCF9F1 0%,#F1E9D6 58%,#E0D3B4 100%);border:8px solid var(--amber);box-shadow:0 0 0 5px rgba(11,36,23,.65),0 18px 38px rgba(0,0,0,.48),inset 0 -14px 26px rgba(140,110,60,.16)}
.meet-annie .annie-pic img{width:76%;height:auto;filter:drop-shadow(0 9px 15px rgba(60,40,15,.28))}
.meet-annie .annie-copy{width:100%}
.meet-annie .eyebrow{display:block;color:var(--amber);font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:clamp(1.9rem,6vw,3rem);letter-spacing:.14em;text-transform:uppercase;margin:0 0 14px;line-height:1}
.meet-annie .eyebrow::before{display:none}
.meet-annie .say{font-family:'Barlow Condensed',sans-serif;font-weight:600;font-size:clamp(1.5rem,3.4vw,2.15rem);line-height:1.16;color:#fff;margin:0 0 16px;letter-spacing:.002em}
.meet-annie .who{display:block;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:.95rem;letter-spacing:.2em;text-transform:uppercase;color:var(--amber)}
@media(max-width:760px){
  .meet-annie{padding:38px 0;border-top-width:3px;border-bottom-width:3px}
  .meet-annie .annie-strip{gap:16px}
  .meet-annie .annie-pic{width:186px;border-width:6px;box-shadow:0 0 0 4px rgba(11,36,23,.65),0 12px 26px rgba(0,0,0,.45),inset 0 -10px 20px rgba(140,110,60,.16)}
  .meet-annie .eyebrow{letter-spacing:.1em;margin-bottom:10px}
  .meet-annie .say{font-size:1.32rem}
  .meet-annie .who{font-size:.82rem;letter-spacing:.16em}
}

/* --- 14. Credential cards, dark ---------------------------------
   White on cream was the same value as the background, so the cards
   read as dividers. Dark forest tiles on the cream band instead, so
   they cut. Logos sit on a white chip because two of the marks are
   dark ink and would vanish otherwise. */
.cred-row{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;border:0;margin-top:34px}
.cred{flex:none;position:relative;display:flex;flex-direction:column;
  background:linear-gradient(160deg,#173D28 0%,var(--fd) 62%,#0B2417 100%);
  border:0;border-top:6px solid var(--amber);border-radius:14px;
  padding:24px 22px 22px;
  box-shadow:0 12px 28px rgba(11,36,23,.28);
  transition:transform .18s ease,box-shadow .18s ease,border-top-color .18s ease}
.cred:hover{transform:translateY(-5px);box-shadow:0 22px 46px rgba(11,36,23,.42);border-top-color:var(--orange)}
.cred h3{font-family:'Barlow Condensed',sans-serif;font-size:1.34rem;line-height:1.04;margin:0 0 10px;text-transform:uppercase;letter-spacing:.02em;color:#fff}
.cred p{font-size:.95rem;line-height:1.5;color:#CBDACF;margin:0 0 15px;flex:1}
.cred .more{align-self:flex-start;font-size:.9rem;color:#fff;border-bottom:2px solid var(--amber)}
.cred .more:hover{color:var(--amber)}
.cred a[href^="tel:"]{color:#fff;border-bottom:1px solid rgba(245,159,10,.65)}
.cred .seal{display:block;width:auto;height:52px;float:none;margin:0 0 14px;padding:8px 10px;background:#fff;border-radius:9px;box-shadow:0 3px 10px rgba(0,0,0,.28)}
.cred .seal.wide{height:56px;padding:9px 12px}
.cred .verify{margin-top:6px;color:#B9C9BE}
@media(max-width:1000px){.cred-row{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){
  .cred-row{grid-template-columns:1fr;gap:16px}
  .cred{padding:22px 20px 20px;border-top-width:5px}
  .cred h3{font-size:1.24rem}
  .cred .seal{height:46px}
  .cred .seal.wide{height:50px}
}

/* --- 15. Footer contact line: icons that cannot go missing ------
   The Facebook mark pointed at a PNG that was never uploaded, so
   the link rendered with a blank gap beside it. Both marks are now
   inline SVG inside this stylesheet. Nothing to upload, nothing to
   break. Facebook_Logo_Primary.png is no longer needed. */
footer.site a.soc-fb::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'%3E%3Cpath d='M24 12.07C24 5.4 18.63 0 12 0S0 5.4 0 12.07C0 18.1 4.39 23.1 10.13 24v-8.44H7.08v-3.49h3.05V9.41c0-3.02 1.79-4.69 4.53-4.69 1.31 0 2.68.24 2.68.24v2.97h-1.51c-1.49 0-1.96.93-1.96 1.89v2.25h3.33l-.53 3.49h-2.8V24C19.61 23.1 24 18.1 24 12.07z'/%3E%3C/svg%3E")}
footer.site a.soc-em::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='4.5' width='19' height='15' rx='2'/%3E%3Cpath d='m3.5 6.5 8.5 6.2 8.5-6.2'/%3E%3C/svg%3E");margin-top:3px}
footer.site a.soc-em{align-items:flex-start;font-size:.9rem;line-height:1.35;overflow-wrap:anywhere}
@media(max-width:400px){footer.site a.soc-em{font-size:.84rem}}
/* --- 16. Chamber seals stop stretching -------------------------
   .cred is a flex column, so every child stretches across the cross
   axis, which for a column is the horizontal one. The seals were
   being pulled out to the full card width while their height stayed
   pinned at 52px, which flattened the Van Alstyne circle into an
   oval. align-self stops the stretch, object-fit guarantees the
   ratio is honoured whatever the source image is. */
.cred .seal{align-self:flex-start;width:auto;max-width:100%;object-fit:contain}
footer.site .fseal{object-fit:contain}

/* --- 17. Mobile drawer: Annie badged top right, Back button left ---
   Section 4 painted Annie as a background image at the bottom of the
   drawer and added 250px of padding to clear her. The drawer is
   already 100vh, so that padding made it taller than the screen,
   which is why she was cut in half and why there was dead space to
   scroll into. She moves to a badge in the top right, matching the
   MEET ANNIE treatment, and the panel goes back to fitting the
   screen. The close control becomes a labelled Back arrow at the
   drawer's left edge, because a bare X was not reading as the exit. */
@media(max-width:960px){
  nav.main{
    box-sizing:border-box;
    height:100dvh;
    padding:104px 24px 28px;
    overflow-y:auto;
    background-image:none;
  }
  nav.main::before{
    content:"";
    position:absolute;
    top:16px;
    right:16px;
    width:76px;
    height:76px;
    border-radius:50%;
    background-color:#F4EDDD;
    background-image:url("/images/annie.webp");
    background-repeat:no-repeat;
    background-position:center 60%;
    background-size:72% auto;
    border:4px solid var(--amber);
    box-shadow:0 0 0 3px rgba(11,36,23,.6),0 8px 18px rgba(0,0,0,.4);
    pointer-events:none;
  }
  .nav-wrap:has(nav.main.open) .menu-toggle{
    position:fixed;
    z-index:60;
    top:26px;
    right:auto;
    left:calc(100vw - min(80vw,330px) + 18px);
    width:auto;
    height:auto;
    flex-direction:row;
    align-items:center;
    gap:9px;
    padding:8px 4px;
  }
  .nav-wrap:has(nav.main.open) .menu-toggle span{display:none}
  .nav-wrap:has(nav.main.open) .menu-toggle::before{
    content:"";
    flex:none;
    width:11px;
    height:11px;
    border-left:3px solid #fff;
    border-bottom:3px solid #fff;
    transform:rotate(45deg);
  }
  .nav-wrap:has(nav.main.open) .menu-toggle::after{
    content:"Back";
    font-family:'Barlow Condensed',sans-serif;
    font-weight:700;
    font-size:1.06rem;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:#fff;
    line-height:1;
  }
}
/* --- 18. Mobile drawer styling -------------------------------
   Section 17 fixed the layout but left the panel looking like a
   default menu: plain white links, no amber anywhere, uneven
   spacing, and dead space under the Free Estimate button. Amber
   hairlines give the links a rhythm, the CTA gets room, and the
   panel closes on the Arborwise Way instead of nothing. */
@media(max-width:960px){
  nav.main{
    gap:0;
    padding-top:100px;
  }
  nav.main a{
    padding:15px 2px;
    border-bottom:1px solid rgba(245,159,10,.3);
    letter-spacing:.015em;
  }
  nav.main a.cta{
    margin-top:24px;
    border-bottom:none;
    text-align:center;
  }
  nav.main::after{
    content:"The Arborwise Way\A The way we get things done right!";
    display:block;
    white-space:pre-line;
    margin-top:auto;
    padding-top:16px;
    border-top:3px solid var(--amber);
    font-family:'Barlow Condensed',sans-serif;
    font-weight:800;
    font-size:.94rem;
    letter-spacing:.16em;
    text-transform:uppercase;
    color:var(--amber);
    text-align:center;
    line-height:1.45;
  }
}
/* --- 19. Header bleeds into the hero --------------------------
   The cream panel was one flat value with a hard square edge, so
   it read as a box sitting on top of the page rather than as the
   top of the page. A soft vertical warm-up gives it depth, and
   the bottom edge dissolves into the hero instead of cutting.
   No rounded corners on purpose: a radius would make it read as a
   floating card, which is the same problem in a different shape. */
header.site{
  position:relative;
  background-image:linear-gradient(180deg,#FCFAF4 0%,#F6F1E4 58%,#EDE5D2 100%);
  border-bottom:none;
}
/* --- 20. Bark edge warmed so it reads as a living tree ---------
   bark.webp is grey, which is true to plenty of real species, but
   a general visitor reads grey flaking bark as a dying tree, and
   it sits right next to Annie on a warm brown branch with green
   leaves. This warms the photo just enough to read as alive
   without turning it into her cartoon branch. */
.bark-edge{
  filter:sepia(.28) saturate(1.35) hue-rotate(-8deg) brightness(.97) contrast(1.03);
}
/* --- 21. Bark edge reads as a round trunk, not a flat strip ----
   The strip was evenly lit across its width and met the cream on a
   dead straight line, so it read as wallpaper rather than a tree.
   A trunk curves away from the viewer: brightest down the middle,
   falling into shadow at both edges. This overlays that shading on
   the photo so the right edge rolls away instead of stopping. */
.bark-edge{position:fixed}
.bark-edge::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(90deg,
    rgba(0,0,0,.62) 0%,
    rgba(0,0,0,.22) 16%,
    rgba(255,255,255,.09) 42%,
    rgba(0,0,0,.10) 62%,
    rgba(0,0,0,.40) 84%,
    rgba(0,0,0,.72) 100%);
}
/* --- 22. Header stops reading as a card taped to the page ------
   The cream panel met the call bar, the hero and the bark on three
   straight lines with nothing overlapping, so it read as a
   separate rectangle laid on top. Two changes: the bark now casts
   a real shadow onto the cream so it sits in front of it rather
   than beside it, and the top of the cream is shaded so it tucks
   under the call bar instead of stacking below it. */
.bark-edge{
  box-shadow:inset -9px 0 14px -6px rgba(0,0,0,.75),
             7px 0 18px rgba(0,0,0,.42),
             2px 0 3px rgba(0,0,0,.30);
}
header.site{
  box-shadow:inset 0 14px 18px -14px rgba(58,42,29,.55);
}
/* --- 23. Service cards and their text actually separate --------
   White cards sat on a cream band with a near-invisible hairline
   border, so only the dark green panel read as a card at all. The
   body copy was var(--is), a muted grey-green, which dissolved
   into the white. Cards get a defined edge, a real shadow and an
   amber cap so all four share the brand marker the green panel
   already had. Text goes darker and slightly larger. */
.svc-card{
  border:1px solid rgba(23,64,43,.30);
  border-top:4px solid var(--amber);
  box-shadow:0 10px 26px rgba(14,42,28,.16);
}
.svc-card:hover{
  box-shadow:0 20px 46px rgba(14,42,28,.26);
}
.svc-body p{
  color:#232C26;
  font-size:1.05rem;
  line-height:1.6;
}
.svc-panel p{
  color:#E8F0EA;
  font-size:1.05rem;
}
.svc-note{
  color:#2A332C;
  font-size:1.02rem;
}
.card p,.acard p{
  color:#232C26;
}
.lead{
  color:#2A332C;
}
/* --- 24. Credential row fits six cards ------------------------
   Section 14 set four columns. Adding ISA Professional Member and
   ANSI A300 makes six, which reads better as two rows of three
   than one row of four with two orphans underneath. */
.cred-row{grid-template-columns:repeat(3,1fr)}
@media(max-width:1000px){.cred-row{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.cred-row{grid-template-columns:1fr}}
/* --- 25. Around Town becomes three real items -----------------
   The bald eagle nest and the Girl Scouts are the two most
   interesting facts on the site and they were buried mid
   paragraph, so Greg read his own page and did not see them.
   Each gets a heading and its own block. */
.town-list{display:flex;flex-direction:column;gap:26px;margin-top:30px}
.town-item{border-left:4px solid var(--amber);padding:2px 0 2px 20px}
.town-item h3{font-size:1.5rem;text-transform:uppercase;letter-spacing:.01em;margin:0 0 8px;color:var(--fd)}
.town-item p{color:#232C26;margin:0 0 12px;line-height:1.55}
@media(max-width:560px){.town-item h3{font-size:1.28rem}}
/* --- 26. Around Town items become real cards ------------------
   Section 25 gave them an amber bar on cream, which still read as
   body copy with a stripe. The bald eagle nest and the Girl Scout
   climb are two of the strongest proofs on the site, so they get
   the same dark forest treatment as the credential tiles and cut
   against the cream band instead of blending into it. */
.town-item{
  background:linear-gradient(160deg,#173D28 0%,var(--fd) 62%,#0B2417 100%);
  border-left:0;
  border-top:5px solid var(--amber);
  border-radius:14px;
  padding:24px 26px 22px;
  box-shadow:0 12px 28px rgba(11,36,23,.28);
  transition:transform .18s ease,box-shadow .18s ease,border-top-color .18s ease;
}
.town-item:hover{
  transform:translateY(-4px);
  box-shadow:0 22px 46px rgba(11,36,23,.42);
  border-top-color:var(--orange);
}
.town-item h3{color:#fff;margin:0 0 10px}
.town-item p{color:#D9E4DC;margin:0 0 14px}
.town-item .more{color:#fff;border-bottom:2px solid var(--amber);align-self:flex-start}
.town-item .more:hover{color:var(--amber)}
@media(max-width:560px){.town-item{padding:20px 20px 18px}}/* --- 27. Quiet motion ----------------------------------------
   Subtle by design: short travel, slow easing, elements arriving
   in sequence as they scroll in. Scroll-linked CSS, no JavaScript,
   wrapped in @supports so unsupporting browsers just show the
   content normally. Skipped entirely for reduced-motion users. */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference){
    .svc-card,.svc-panel,.cred,.town-item,.way-item,.gfig,.q-row>div{
      animation:aw-rise linear both;
      animation-timeline:view();
      animation-range:entry 6% cover 28%;
    }
    @keyframes aw-rise{
      from{opacity:0;transform:translateY(20px)}
      to{opacity:1;transform:none}
    }
  }
}

.svc-shot,.gfig{overflow:hidden}
.svc-shot img,.gfig img{
  transition:transform .75s cubic-bezier(.2,.7,.25,1);
  will-change:transform;
}
.svc-card:hover .svc-shot img,
.gfig:hover img,
.svc-shot:active img,
.gfig:active img{transform:scale(1.04)}
@media (prefers-reduced-motion: reduce){
  .svc-shot img,.gfig img{transition:none}
  .svc-card:hover .svc-shot img,.gfig:hover img{transform:none}
}

/* --- 28. Footer: shorter, louder, county-coded ---
   1. The logo goes on a cream plate. The webp was
      encoded lossy with alpha, which bleeds light
      pixels into antialiased edges. Invisible on
      the cream header, a white halo on the dark
      footer. The file cannot be replaced through
      the current tooling, so it gets the same
      treatment section 14 gives credential seals.
   2. Core collapses .footer-grid to ONE column
      under 580px, so all four columns stacked and
      the footer ran a full phone screen. Now two
      columns, brand and areas spanning both.
   3. Cities become wrapping pills coloured by
      county, targeted by href so no markup changes.
   Columns are selected with :has() rather than
   nth-child so a footer variant cannot mis-target. */

footer.site .fl{
  box-sizing:border-box;
  background:linear-gradient(180deg,#FCFAF4 0%,#F6F1E4 60%,#EDE5D2 100%);
  padding:16px 20px;
  border-radius:14px;
  border-top:5px solid var(--amber);
  box-shadow:0 10px 26px rgba(0,0,0,.34);
}

@media(max-width:580px){
  .footer-grid{grid-template-columns:1fr 1fr;gap:22px 18px}
  .footer-grid > div:has(> .fl){grid-column:1/-1;order:1}
  .footer-grid > div:has(> a[href^="/services/"]){order:2}
  .footer-grid > div:has(> a[href^="tel:"]){order:3}
  .footer-grid > div:has(> a[href^="/service-areas/"]){grid-column:1/-1;order:4}
}

footer.site{padding:40px 0 18px}
footer.site h4{margin-bottom:9px;color:var(--amber);letter-spacing:.06em}
footer.site h4.mt{margin-top:14px}
footer.site a{margin-bottom:5px}
.footer-bottom{margin-top:24px;padding-top:14px}

footer.site .footer-grid a[href^="/service-areas/"]{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin:0 7px 9px 0;
  padding:7px 13px;
  border-radius:999px;
  font-size:.9rem;
  line-height:1.15;
  color:#EAF2EC;
  background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.17);
  transition:background .16s ease,transform .16s ease,border-color .16s ease;
}
footer.site .footer-grid a[href^="/service-areas/"]::before{
  content:"";
  flex:none;
  width:9px;
  height:9px;
  border-radius:50%;
  background:var(--aw-co,#9AA8A0);
  box-shadow:0 0 0 2px rgba(0,0,0,.28);
}
footer.site .footer-grid a[href^="/service-areas/"]:hover{
  background:rgba(255,255,255,.14);
  border-color:var(--aw-co,#9AA8A0);
  transform:translateY(-2px);
  color:#fff;
}

/* Collin */
footer.site .footer-grid a[href*="farmersville-tx"],
footer.site .footer-grid a[href*="mckinney-tx"],
footer.site .footer-grid a[href*="melissa-tx"],
footer.site .footer-grid a[href*="anna-tx"],
footer.site .footer-grid a[href*="celina-tx"],
footer.site .footer-grid a[href*="princeton-tx"]{--aw-co:#F59F0A}
/* Grayson */
footer.site .footer-grid a[href*="van-alstyne-tx"],
footer.site .footer-grid a[href*="howe-tx"],
footer.site .footer-grid a[href*="sherman-tx"]{--aw-co:#38BDF8}
/* Fannin */
footer.site .footer-grid a[href*="bonham-tx"]{--aw-co:#FB7185}
/* Hunt */
footer.site .footer-grid a[href*="greenville-tx"]{--aw-co:#A3E635}

/* See all service areas reads as the action */
footer.site .footer-grid a[href="/service-areas/"]{
  background:var(--amber);
  border-color:var(--amber);
  color:#0E2A1C;
  font-weight:700;
}
footer.site .footer-grid a[href="/service-areas/"]::before{display:none}
footer.site .footer-grid a[href="/service-areas/"]:hover{
  background:var(--orange);
  border-color:var(--orange);
  color:#fff;
}

/* Find Us links stop reading as loose text */
footer.site a.soc{
  width:fit-content;
  padding:6px 12px 6px 10px;
  margin-bottom:7px;
  border-radius:999px;
  background:rgba(255,255,255,.06);
  border:1px solid rgba(245,159,10,.38);
}
footer.site a.soc:hover{
  background:rgba(245,159,10,.16);
  border-color:var(--amber);
}

/* --- 29. City page photo band ----------------
   City pages ran two screens of text before any
   picture. One real job photo now sits between
   the trust strip and the prose, so the page
   shows the work before it talks about it.
   .pair is the two-up variant for before/after. */
.town-photo{padding:36px 0 0}
.town-photo figure{margin:0}
.town-photo .frame{position:relative;overflow:hidden;border-radius:14px;border-top:5px solid var(--amber);box-shadow:0 14px 34px rgba(14,42,28,.22);background:var(--fd);aspect-ratio:16/9}
.town-photo .frame img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 40%;transition:transform .75s cubic-bezier(.2,.7,.25,1)}
.town-photo figure:hover .frame img{transform:scale(1.03)}
.town-photo figcaption{display:flex;align-items:baseline;gap:12px;margin-top:12px;font-size:.95rem;line-height:1.45;color:#232C26}
.town-photo figcaption b{flex:none;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;color:var(--orange)}
.town-photo.pair .frames{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.town-photo.pair .frame{aspect-ratio:4/5}
.town-photo .frame[data-label]::after{content:attr(data-label);position:absolute;left:14px;top:14px;padding:6px 11px;border-radius:999px;background:rgba(14,42,28,.86);color:#fff;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase}
@media(max-width:640px){
  .town-photo{padding-top:24px}
  .town-photo .frame{aspect-ratio:4/3;border-radius:10px}
  .town-photo.pair .frames{gap:10px}
  .town-photo.pair .frame{aspect-ratio:3/4}
  .town-photo figcaption{flex-direction:column;gap:4px}
}
@media(prefers-reduced-motion:reduce){
  .town-photo .frame img{transition:none}
  .town-photo figure:hover .frame img{transform:none}
}

/* --- 30. Footer chamber block, phone fix ---------
   Greg's screenshot 8/15: two seals of different
   shapes on different-sized white chips, the Van
   Alstyne badge white-in-white, chamber names at
   heading size with a full-width amber rule, and a
   tall empty gap beside the Contact column. Seal
   and name now sit side by side on one row, chips
   the same height, name at link size. Halves the
   column height, which closes most of the gap. */
footer.site .chamber{display:flex;align-items:center;gap:12px;margin:0 0 10px}
footer.site .chamber .fseal{flex:none;width:auto;height:46px;max-width:120px;margin:0;padding:6px 8px;background:#fff;border-radius:8px;box-shadow:0 3px 10px rgba(0,0,0,.3);object-fit:contain}
footer.site .chamber .fseal[src*="va-chamber"]{padding:0;height:52px;width:52px;border-radius:50%}
footer.site .chamber a.cname{display:inline;margin:0;font-family:'Barlow',sans-serif;font-weight:600;font-size:.92rem;letter-spacing:.01em;text-transform:none;line-height:1.3;color:#EAF2EC;border-bottom:1px solid rgba(245,159,10,.55)}
footer.site .chamber a.cname:hover{color:var(--amber);border-bottom-color:var(--amber)}
/* Plano is Collin County and was missing from the pill colours */
footer.site .footer-grid a[href*="plano-tx"]{--aw-co:#F59F0A}

/* --- 31. Bark edge pushed to Annie's brown ------
   Section 20 warmed the grey bark slightly. Greg
   8/15: still reads grey next to Annie's warm
   branch. This drives it all the way to the same
   family of brown. Full sepia takes the grey to
   tan, saturation and a small red shift bring it
   to bark, brightness pulls it down to branch
   depth. Texture is unchanged. Real fix later is
   a warm bark photo, this is the bridge. */
.bark-edge{
  filter:sepia(1) saturate(1.7) hue-rotate(-6deg) brightness(1) contrast(.9);
}

/* --- 32. Phone polish from Greg's 8/15 screenshots -----
   1. .svc-note links were forest green on the forest
      section, so "More on the Arborwise Way" vanished.
   2. Sections stack 72px + 72px on a phone. Tightened.
   3. Annie sits on the footer copyright. Room under it.
   4. The cabling panel's amber LEFT border curled out
      past the rounded corners like horns. It now uses
      the same amber TOP edge as the other three cards. */
.section-forest .svc-note{color:#D9E4DC}
.section-forest .svc-note a{color:#fff;border-bottom-color:var(--amber)}
.section-forest .svc-note a:hover{color:var(--amber)}
@media(max-width:640px){
  section{padding:48px 0}
  .tight{padding:30px 0}
  .svc-note{margin-top:20px}
}
@media(max-width:880px){
  .footer-bottom{padding-bottom:112px}
}
.svc-panel{border-left:0;border-top:5px solid var(--amber)}

/* --- 33. Chamber block stacked ------------------
   Section 30 put seal and name side by side. In the
   narrow phone column the names wrap to two lines
   and the flex item cannot be inline, so the amber
   underline stretched across the whole box. Seal
   on top, name under it, underline only under the
   words. Both chambers now identical. */
footer.site .chamber{display:block;margin:0 0 14px}
footer.site .chamber .fseal{display:block;margin:0 0 6px}
footer.site .chamber a.cname{display:inline;width:auto;font-size:.9rem;line-height:1.35;border-bottom:1px solid rgba(245,159,10,.55)}

/* --- 35. Chamber row, its own band under the grid --
   Greg 8/15: the two chambers stacked in the Contact
   column left a tall hole beside them. They now live
   in their own row spanning the full footer width,
   between the columns and the copyright line. Seal
   left, name right, one line each. */
footer.site .chamber-row{margin-top:26px;padding-top:18px;border-top:1px solid rgba(255,255,255,.12)}
footer.site .chamber-row h4{margin:0 0 12px}
footer.site .chamber-pair{display:flex;flex-wrap:wrap;gap:12px 32px}
footer.site .chamber-pair .chamber{display:flex;flex-direction:row;align-items:center;gap:12px;flex:0 1 auto;width:auto;margin:0}
footer.site .chamber-pair .chamber .fseal{flex:none;display:block;margin:0;height:46px;width:auto;max-width:120px}
footer.site .chamber-pair .chamber .fseal[src*="va-chamber"]{height:52px;width:52px}
footer.site .chamber-pair .chamber a.cname{display:inline;width:auto;margin:0;font-size:.92rem;line-height:1.3;border-bottom:0;text-decoration:underline;text-decoration-color:rgba(245,159,10,.6);text-decoration-thickness:1px;text-underline-offset:3px;white-space:nowrap}
footer.site .chamber-pair .chamber a.cname:hover{color:var(--amber);text-decoration-color:var(--amber)}
@media(max-width:640px){
  footer.site .chamber-pair{gap:10px}
  footer.site .chamber-pair .chamber{flex:1 1 100%}
}

/* --- 36. Footer email is a link, awards centred -----
   Greg 8/15: the email rendered as a three-line pill
   that read as a broken button. On phone it is now a
   plain link, no pill, no icon, sized to sit on one
   line with the Contact column given more room. The
   two Nextdoor badges sat hard left with the right
   half of the row empty; they now sit as a centred
   cluster under their caption. */
@media(max-width:580px){
  .footer-grid{grid-template-columns:1fr 1.4fr;column-gap:14px}
  footer.site a.soc-em{display:block;width:auto;padding:0;margin:2px 0 8px;background:none;border:0;border-radius:0;font-size:.8rem;line-height:1.4;overflow-wrap:anywhere;color:#EAF2EC;text-decoration:underline;text-decoration-color:rgba(245,159,10,.55);text-underline-offset:3px}
  footer.site a.soc-em::before{display:none}
  footer.site .fawd{text-align:center;margin-top:16px}
  footer.site .faves{justify-content:center;gap:18px;margin-bottom:8px}
}

/* Chamber seals match each other. One was dark ink
   on transparent and nearly vanished on the green,
   the other sat on a white square. */
footer.site .fseal{
  width:104px;
  background:#fff;
  padding:8px 10px;
  border-radius:9px;
  box-shadow:0 3px 10px rgba(0,0,0,.3);
}
/* 37. Hero quote to proof pills spacing */
.hero-copy .proof{margin-top:26px}

/* 38. FAQ as a standout card */
.faq{background:#fff;border:1px solid rgba(14,42,28,.10);border-radius:14px;padding:2px 22px;box-shadow:0 14px 34px rgba(14,42,28,.10);margin-top:18px}
.faq details:last-child{border-bottom:0}
.faq details[open] summary{color:#E4590C}

/* 39. Two dim bands in a row read as one */
.section-paper-dim + .section-paper-dim{padding-top:0}
