/* self-hosted fonts (latin) */
@font-face {font-family: 'Bevan';font-style: normal;font-weight: 400;font-display: swap;src: url(/assets/fonts/bevan-400-latin.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face {font-family: 'Cabin';font-style: normal;font-weight: 400 700;font-stretch: 100%;font-display: swap;src: url(/assets/fonts/cabin-400-latin.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face {font-family: 'Courier Prime';font-style: normal;font-weight: 400;font-display: swap;src: url(/assets/fonts/courier-prime-400-latin.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face {font-family: 'Courier Prime';font-style: normal;font-weight: 700;font-display: swap;src: url(/assets/fonts/courier-prime-700-latin.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}

/* Tree Care of Buffalo, shared design system for all pages */
/* design tokens, generated 2026-10-09 by build/design-system/palette.py in the TCOB,LLC repo; edit the generator, not this block */
:root{
  --surface:#0f1a13; --surface-raised:#15261b; --surface-overlay:#1c3123; --border:#2d4033; --border-strong:#4a6152; --border-input:#526a5a; --text:#f5ebd6; --text-muted:#cbbc9d; --text-muted-strong:#e3d6bc; --text-faint:#ada085; --ink:#170d05; --accent:#e8963a; --accent-text:#f1ae6b; --accent-hover:#f1ae6b; --accent-muted:#764505; --gold:#e9a825; --gold-soft:#f8d192; --link:#e8963a; --link-hover:#f1ae6b; --focus:#e8963a; --danger:#ffa190; --danger-border:#dc2003; --success:#a0caad; --warning:#e8b45c; --selection-bg:#e8963a; --selection-text:#170d05; --night:#040906;
  --night-rgb:4 9 6; --accent-rgb:232 150 58; --surface-rgb:15 26 19; --accent-muted-rgb:118 69 5; --border-strong-rgb:74 97 82;
  --canvas:var(--surface);--panel:var(--surface-raised);--panel-2:var(--surface-overlay);--line:var(--border);--line-strong:var(--border-strong);--text-primary:var(--text);--text-secondary:var(--text-muted);
  --tshadow:0 1px 2px rgb(var(--night-rgb) / .95),0 3px 12px rgb(var(--night-rgb) / .78),0 10px 44px rgb(var(--night-rgb) / .8);
  --ease:cubic-bezier(.22,.7,.24,1);--ease-soft:cubic-bezier(.4,.1,.2,1);
  --font-display:'Bevan',Georgia,'Times New Roman',serif;--font-body:'Cabin',system-ui,-apple-system,'Segoe UI',sans-serif;--font-mono:'Courier Prime','Courier New',monospace;
  --display:var(--font-display);--body:var(--font-body);--mono:var(--font-mono);
  --step--2:0.7500rem; --step--1:clamp(0.8333rem, 0.8286rem + 0.0238vw, 0.8500rem); --step-0:clamp(1.0000rem, 0.9821rem + 0.0893vw, 1.0625rem); --step-1:clamp(1.2000rem, 1.1634rem + 0.1830vw, 1.3281rem); --step-2:clamp(1.4400rem, 1.3771rem + 0.3145vw, 1.6602rem); --step-3:clamp(1.7280rem, 1.6288rem + 0.4960vw, 2.0752rem); --step-4:clamp(2.0736rem, 1.9249rem + 0.7434vw, 2.5940rem); --step-5:clamp(2.4883rem, 2.2728rem + 1.0774vw, 3.2425rem); --step-6:clamp(2.9860rem, 2.6811rem + 1.5245vw, 4.0531rem);
  --lh-display-xl:1.05;--lh-display:1.12;--lh-heading:1.2;--lh-body:1.6;--lh-small:1.5;--lh-label:1.3;
  --track-display:0;--track-display-s:0.01em;--track-caps:0.14em;--track-caps-wide:0.23em;--track-mono:0.15em;--track-mono-wide:0.23em;
  --measure-display:18ch;--measure-h2:20ch;--measure-lede:46ch;--measure-prose:60ch;--measure-note:40ch;--text-min:16px;--label-min:12px;--fine-min:11px;
  --space-3xs:clamp(0.2500rem, 0.2500rem + 0.0000vw, 0.2500rem); --space-2xs:clamp(0.5000rem, 0.5000rem + 0.0000vw, 0.5000rem); --space-xs:clamp(0.7500rem, 0.7321rem + 0.0893vw, 0.8125rem); --space-s:clamp(1.0000rem, 0.9821rem + 0.0893vw, 1.0625rem); --space-m:clamp(1.5000rem, 1.4643rem + 0.1786vw, 1.6250rem); --space-l:clamp(2.0000rem, 1.9643rem + 0.1786vw, 2.1250rem); --space-xl:clamp(3.0000rem, 2.9464rem + 0.2679vw, 3.1875rem); --space-2xl:clamp(4.0000rem, 3.9286rem + 0.3571vw, 4.2500rem); --space-3xl:clamp(6.0000rem, 5.8929rem + 0.5357vw, 6.3750rem); --space-3xs-2xs:clamp(0.2500rem, 0.1786rem + 0.3571vw, 0.5000rem); --space-2xs-xs:clamp(0.5000rem, 0.4107rem + 0.4464vw, 0.8125rem); --space-xs-s:clamp(0.7500rem, 0.6607rem + 0.4464vw, 1.0625rem); --space-s-m:clamp(1.0000rem, 0.8214rem + 0.8929vw, 1.6250rem); --space-m-l:clamp(1.5000rem, 1.3214rem + 0.8929vw, 2.1250rem); --space-l-xl:clamp(2.0000rem, 1.6607rem + 1.6964vw, 3.1875rem); --space-xl-2xl:clamp(3.0000rem, 2.6429rem + 1.7857vw, 4.2500rem); --space-2xl-3xl:clamp(4.0000rem, 3.3214rem + 3.3929vw, 6.3750rem);
  --radius-s:8px;--radius-m:10px;--radius-l:16px;--radius-xl:18px;
}
::selection{background:var(--selection-bg);color:var(--selection-text)}
html{-webkit-tap-highlight-color:rgb(var(--accent-rgb) / .18)}
*{margin:0;padding:0;box-sizing:border-box}
html,body{overflow-x:hidden;overflow-x:clip}
html{scroll-behavior:smooth}
body{background:var(--canvas);color:var(--text-primary);font-family:var(--body);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}
/* opacity only: a transform keyframe (even to none) leaves body as the containing block
   for position:fixed in Chromium, which scrolled the header, sticky bar, and FAB away */
.js body{animation:pagein .6s var(--ease) backwards}
@keyframes pagein{from{opacity:0}to{opacity:1}}
img,svg,video{max-width:100%;display:block}
a{color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:fixed;top:-48px;left:16px;z-index:200;background:var(--accent);color:var(--ink);font-family:var(--mono);font-weight:700;padding:10px 16px;border-radius:0 0 8px 8px;text-decoration:none;transition:top .25s var(--ease)}
.skip:focus-visible{top:0}
@media (pointer:coarse){.btn,.nav-cta,nav a{min-height:44px;display:inline-flex;align-items:center;justify-content:center}.foot a,.bigphone{min-height:44px;display:inline-flex;align-items:center}}

/* environment layer */
.env{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.env::before{content:"";position:absolute;inset:-20%;background:
  radial-gradient(ellipse 60% 45% at 22% 18%,rgb(var(--accent-rgb) / .05) 0%,rgb(var(--accent-rgb) / 0) 60%),
  radial-gradient(ellipse 55% 40% at 80% 78%,rgb(var(--accent-muted-rgb) / .06) 0%,rgb(var(--accent-muted-rgb) / 0) 60%);
  animation:envdrift 78s var(--ease-soft) -26s infinite alternate}
.leafp{position:absolute;width:22px;height:22px;opacity:.10;color:var(--accent-muted)}
.leafp.a{left:12%;top:-4%;animation:leaffall 84s linear -30s infinite}
.leafp.b{left:68%;top:-4%;width:16px;height:16px;animation:leaffall 96s linear -62s infinite}
@keyframes envdrift{from{transform:translate3d(-1.5%,-1%,0)}to{transform:translate3d(1.5%,1.2%,0)}}
@keyframes leaffall{0%{transform:translate3d(0,-6vh,0) rotate(0deg)}100%{transform:translate3d(9vw,112vh,0) rotate(300deg)}}
body.paused *,body.paused *::before,body.paused *::after{animation-play-state:paused!important}

/* header */
header{position:fixed;top:0;left:0;right:0;z-index:100;background:rgb(var(--surface-rgb) / .82);backdrop-filter:blur(12px);border-bottom:1px solid rgb(var(--border-strong-rgb) / .35)}
.navrow{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:28px;padding:14px 24px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;flex:none}
.brand img{width:44px;height:44px}
.brand-name{font-family:var(--display);font-size:17px;letter-spacing:.5px;line-height:1.15;color:var(--text-primary)}
.brand-name small{display:block;font-family:var(--mono);font-size:10px;letter-spacing:2.5px;color:var(--accent);font-weight:700}
nav{display:flex;align-items:center;gap:24px;margin-left:auto}
nav a{font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:1px;text-decoration:none;color:var(--text-secondary);transition:color .25s var(--ease)}
nav a:hover{color:var(--text-primary)}
nav a[aria-current]{color:var(--accent)}
.nav-cta{background:var(--accent);color:var(--ink)!important;padding:9px 18px;border-radius:8px;transition:background .25s var(--ease),transform .25s var(--ease)}
.nav-cta:hover{background:var(--accent-hover);transform:translateY(-1px)}
.nav-call{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-weight:700;font-size:13px;letter-spacing:1px;text-decoration:none;color:var(--text-primary)!important;border:1px solid var(--line-strong);border-radius:8px;padding:8px 14px;transition:border-color .25s var(--ease),color .25s var(--ease)}
.nav-call:hover{border-color:var(--accent-muted);color:var(--accent)!important}
.nav-call svg{width:15px;height:15px;flex:none}
@media (max-width:1120px){.nav-call .num{display:none}}
.menu-btn{display:none;background:none;border:1px solid var(--line-strong);border-radius:8px;color:var(--text-primary);padding:9px 12px;cursor:pointer;font-family:var(--mono);font-weight:700;font-size:13px;letter-spacing:1px;transition:border-color .25s var(--ease)}
.menu-btn:hover{border-color:var(--accent-muted)}
.mobile-panel{position:absolute;top:100%;left:0;right:0;background:rgb(var(--surface-rgb) / .97);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:none;flex-direction:column;padding:6px 24px 14px}
header.open .mobile-panel{display:flex}
.mobile-panel a{padding:14px 0;border-top:1px solid var(--line);font-family:var(--mono);font-weight:700;font-size:13px;letter-spacing:1px;text-decoration:none;color:var(--text-secondary)}
.mobile-panel a:hover,.mobile-panel a[aria-current]{color:var(--accent)}
@media (max-width:860px){nav a.hideable{display:none}.menu-btn{display:inline-flex;align-items:center}}
@media (max-width:560px){.brand-name{display:none}.navrow{gap:12px;padding:12px 14px}nav{gap:10px}.nav-cta{font-size:11px;padding:8px 12px;white-space:nowrap}}
@media (max-width:400px){.nav-cta{font-size:10px;padding:8px 9px;letter-spacing:.5px}.menu-btn{padding:9px 10px}.nav-call{padding:8px 10px}.navrow{gap:8px}nav{gap:8px}}

/* type + layout */
main{position:relative;z-index:2}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
section{padding:96px 0}
.kicker{font-family:var(--mono);font-weight:700;font-size:13px;letter-spacing:3px;color:var(--accent);display:flex;align-items:center;gap:10px;margin-bottom:14px}
h1,h2,h3.display{font-family:var(--display);font-weight:400;line-height:1.15;text-wrap:balance}
h1{font-size:clamp(34px,5vw,54px);max-width:18ch}
h2{font-size:clamp(28px,3.6vw,42px);max-width:20ch}
.lede{margin-top:16px;color:var(--text-secondary);font-size:18px;max-width:52ch}
.rg circle{fill:none;stroke:currentColor;stroke-width:1.6}

/* buttons */
.btn{display:inline-block;background:var(--accent);color:var(--ink);font-family:var(--body);font-weight:700;font-size:17px;text-decoration:none;padding:15px 30px;border-radius:10px;border:0;cursor:pointer;position:relative;transition:background .25s var(--ease),transform .25s var(--ease)}
.btn:hover{background:var(--accent-hover);transform:translateY(-2px)}
.btn.ghost{background:transparent;color:var(--text-primary);border:1px solid var(--line-strong)}
.btn.ghost:hover{background:var(--panel);border-color:var(--accent-muted)}
.btn:active,.nav-cta:active,.qc-send:active,.bar-call:active,.bar-est:active{transform:translateY(1px) scale(.98);transition-duration:.08s}
.btn.glow::after{content:"";position:absolute;inset:-6px;border-radius:14px;box-shadow:0 0 34px rgb(var(--accent-rgb) / .5);opacity:0;pointer-events:none;animation:ctaglow 5.2s var(--ease-soft) -1.4s infinite}
@keyframes ctaglow{0%,100%{opacity:0}50%{opacity:.65}}

/* pagehead with footage backdrop */
.pagehead{position:relative;padding:180px 0 96px;border-bottom:1px solid var(--line);overflow:hidden;background:var(--canvas)}
.pagehead .bgimg{position:absolute;inset:0;background-size:cover;background-position:center 32%;background-repeat:no-repeat;transform-origin:50% 40%;animation:kenburns 46s var(--ease-soft) -8s infinite alternate}
.pagehead .bgimg.hasvid{animation:none}
.pagehead .bgimg video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
@keyframes kenburns{from{transform:scale(1)}to{transform:scale(1.07)}}
.pagehead .bgveil{position:absolute;inset:0;background:linear-gradient(180deg,rgb(var(--surface-rgb) / .45) 0%,rgb(var(--surface-rgb) / .72) 55%,rgb(var(--surface-rgb) / .96) 100%)}
.pagehead .wrap{position:relative}
.pagehead h1,.pagehead .lede{text-shadow:0 1px 2px rgb(var(--night-rgb) / .9),0 3px 14px rgb(var(--night-rgb) / .7)}
.ph-grid{display:grid;grid-template-columns:1fr auto;gap:56px;align-items:center}
.ph-badge{width:min(220px,40vw);height:auto;filter:drop-shadow(0 12px 34px rgb(var(--night-rgb) / .6))}
@media (max-width:860px){.ph-grid{grid-template-columns:1fr}.ph-badge{order:-1;margin:0 auto}}
.gcta{margin-top:32px;display:flex;flex-wrap:wrap;gap:16px;align-items:center}

/* chips */
.chip{font-family:var(--mono);font-weight:700;font-size:13px;letter-spacing:2px;color:var(--text-primary);background:var(--panel);border:1px solid var(--line-strong);border-radius:10px;padding:12px 22px;display:inline-flex;align-items:baseline;gap:10px}
.chip::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);align-self:center;flex:none}

/* kerf divider */
.kerf{height:34px;position:relative;z-index:2;background:var(--canvas)}
.kerf svg{position:absolute;inset:0;width:100%;height:100%}
.kerf path{stroke:var(--line-strong);stroke-width:1.5;fill:none;stroke-dasharray:1600;stroke-dashoffset:1600;transition:stroke-dashoffset 1.6s var(--ease-soft)}
.kerf.in path{stroke-dashoffset:0}

/* entrance choreography */
.reveal .part{opacity:0;transform:translateY(22px)}
html:not(.js) .reveal .part{opacity:1;transform:none}
html:not(.js) .kerf path{stroke-dashoffset:0}
.reveal.in .part{opacity:1;transform:translateY(0);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.reveal.in .part:nth-child(2){transition-delay:.08s}
.reveal.in .part:nth-child(3){transition-delay:.16s}
.reveal.in .part:nth-child(4){transition-delay:.24s}
.reveal.in .part:nth-child(5){transition-delay:.32s}
.reveal.in .part:nth-child(6){transition-delay:.4s}
.reveal.in .part:nth-child(7){transition-delay:.48s}
.reveal.in.done .part:nth-child(n){transition-delay:0s}

/* self-drawing icons: every path carries pathLength="1" */
.draw path{stroke-dasharray:1;stroke-dashoffset:1}
.reveal.in .draw path{stroke-dashoffset:0;transition:stroke-dashoffset 1.4s var(--ease-soft) .2s}
.reveal.in .draw path:nth-child(2){transition-delay:.45s}
.reveal.in .draw path:nth-child(3){transition-delay:.7s}
.reveal.in .draw path:nth-child(4){transition-delay:.95s}

/* cards */
.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:30px 28px;transition:transform .35s var(--ease),border-color .35s var(--ease)}
.card:hover{transform:translateY(-4px);border-color:var(--accent-muted)}

/* cta grid with figure */
.cta-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
@media (max-width:900px){.cta-grid{grid-template-columns:1fr;gap:36px}}
.cta-fig{border-radius:18px;overflow:hidden;border:1px solid var(--line-strong);position:relative}
.cta-fig::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 60px rgb(var(--surface-rgb) / .55)}
.cta-fig img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.cta-fig:hover img{transform:scale(1.04)}

/* forms */
form{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media (max-width:640px){form{grid-template-columns:1fr}}
label{display:flex;flex-direction:column;gap:8px;font-family:var(--mono);font-weight:700;font-size:12px;letter-spacing:2px;color:var(--text-secondary)}
label.full{grid-column:1/-1}
input,textarea,select{background:var(--canvas);border:1px solid var(--line-strong);border-radius:10px;color:var(--text-primary);font-family:var(--body);font-size:16px;padding:13px 15px;transition:border-color .25s var(--ease)}
input:focus,textarea:focus,select:focus{border-color:var(--accent)}
input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
input::placeholder,textarea::placeholder{color:var(--text-secondary);opacity:.62}
textarea{min-height:120px;resize:vertical}
.form-foot{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:18px;margin-top:6px}
.form-note{font-size:14px;color:var(--text-secondary);max-width:40ch}
.form-ok{grid-column:1/-1;display:none;background:var(--panel-2);border:1px solid var(--accent-muted);border-radius:12px;padding:18px 22px;color:var(--text-primary)}
form.sent .form-ok{display:block}

/* stars */
.stars{display:inline-flex;gap:4px;color:var(--accent)}
.stars svg{width:20px;height:20px}

/* footer */
footer{border-top:1px solid var(--line);padding:56px 0 42px;position:relative;z-index:2;background:var(--canvas)}
.foot{max-width:1180px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:1.35fr 1fr 1fr 1.1fr 1.25fr;gap:40px;align-items:start}
@media (max-width:1020px){.foot{grid-template-columns:1fr 1fr 1fr}}
@media (max-width:680px){.foot{grid-template-columns:1fr 1fr}}
@media (max-width:430px){.foot{grid-template-columns:1fr}}
.foot .col{display:flex;flex-direction:column;gap:8px;font-size:15px;color:var(--text-secondary)}
.foot .col b{font-family:var(--mono);font-weight:700;font-size:12px;letter-spacing:2px;color:var(--text-primary);margin-bottom:6px}
.foot img{width:88px;height:88px}
.foot a{color:var(--text-secondary);text-decoration:none}
.foot a:hover{color:var(--text-primary)}
.foot .tagline{font-size:14px;max-width:26ch}
.foot .brandline{display:block;font-family:var(--display);font-size:21px;line-height:1.1;color:var(--text-primary);margin-top:6px}
.foot .brandline .of{display:block;font-family:var(--mono);font-weight:700;font-size:11px;letter-spacing:2.5px;color:var(--accent);margin-top:5px}
.legal{margin-top:36px;text-align:center;font-family:var(--mono);font-size:12px;letter-spacing:1px;color:var(--text-secondary)}

/* quick-contact popup */
.qc-fab{position:fixed;right:20px;bottom:20px;z-index:140;width:58px;height:58px;border-radius:50%;background:var(--accent);border:0;cursor:pointer;display:grid;place-items:center;color:var(--ink);box-shadow:0 6px 24px rgb(var(--night-rgb) / .5);transition:background .25s var(--ease),transform .25s var(--ease)}
.qc-fab:hover{background:var(--accent-hover);transform:translateY(-2px)}
.qc-fab svg{width:26px;height:26px}
.qc-fab::after{content:"";position:absolute;inset:-6px;border-radius:50%;box-shadow:0 0 30px rgb(var(--accent-rgb) / .55);opacity:0;pointer-events:none;animation:ctaglow 6s var(--ease-soft) -2s infinite}
.qc-panel{position:fixed;right:20px;bottom:92px;z-index:140;width:min(340px,calc(100vw - 40px));background:var(--panel);border:1px solid var(--line-strong);border-radius:18px;box-shadow:0 18px 50px rgb(var(--night-rgb) / .6);overflow:hidden;display:none;transform:translateY(10px);opacity:0}
.qc-panel.open{display:block;animation:qcin .35s var(--ease) forwards}
@keyframes qcin{to{transform:translateY(0);opacity:1}}
.qc-head{display:flex;align-items:center;gap:12px;padding:16px 18px;background:var(--panel-2);border-bottom:1px solid var(--line)}
.qc-head img{width:38px;height:38px}
.qc-head b{font-family:var(--mono);font-weight:700;font-size:12px;letter-spacing:2px;color:var(--text-primary);display:block}
.qc-head span{font-size:13px;color:var(--text-secondary)}
.qc-close{margin-left:auto;background:none;border:0;color:var(--text-secondary);cursor:pointer;font-size:20px;line-height:1;padding:6px;border-radius:6px}
.qc-close:hover{color:var(--text-primary)}
.qc-body{padding:18px}
.qc-bubble{background:var(--canvas);border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:14px;color:var(--text-secondary);margin-bottom:14px}
.qc-call{display:flex;align-items:center;justify-content:center;gap:10px;background:var(--accent);color:var(--ink);font-weight:700;font-size:15px;text-decoration:none;padding:12px 16px;border-radius:10px;transition:background .25s var(--ease)}
.qc-call:hover{background:var(--accent-hover)}
.qc-call svg{width:16px;height:16px}
.qc-or{display:flex;align-items:center;gap:10px;margin:14px 0 10px;font-family:var(--mono);font-size:10px;letter-spacing:2px;color:var(--text-secondary)}
.qc-or::before,.qc-or::after{content:"";flex:1;height:1px;background:var(--line)}
.qc-form{display:flex;flex-direction:column;gap:10px}
.qc-form label{font-size:11px}
.qc-form input,.qc-form textarea{padding:10px 12px;font-size:15px}
.qc-form textarea{min-height:64px}
.qc-send{background:transparent;border:1px solid var(--accent-muted);color:var(--text-primary);font-family:var(--body);font-weight:700;font-size:15px;padding:11px 16px;border-radius:10px;cursor:pointer;transition:border-color .25s var(--ease),background .25s var(--ease)}
.qc-send:hover{border-color:var(--accent);background:var(--panel-2)}
.qc-foot{margin-top:12px;font-size:12.5px;color:var(--text-secondary);text-align:center}
.qc-foot a{color:var(--accent);text-decoration:none}
.qc-ok{display:none;font-size:14px;color:var(--text-primary);background:var(--canvas);border:1px solid var(--accent-muted);border-radius:12px;padding:12px 14px}
.qc-panel.sent .qc-ok{display:block}
.qc-panel.sent .qc-form,.qc-panel.sent .qc-or,.qc-panel.sent .qc-bubble{display:none}
@media (max-width:480px){.qc-panel{right:12px;left:12px;width:auto;bottom:86px;max-height:72vh;overflow-y:auto}}

/* reduced motion: final states, drives stopped */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;transition-delay:0s!important}
  html{scroll-behavior:auto}
  .reveal .part{opacity:1;transform:none}
  .kerf path{stroke-dashoffset:0}
  .draw path{stroke-dashoffset:0}
}

/* ==== v1-revamp: subpage architecture, ported from site-v2 and reskinned ==== */
.page-hero{position:relative;padding:180px 0 64px;border-bottom:1px solid var(--line);background:radial-gradient(ellipse 70% 60% at 80% 0%,rgb(var(--accent-rgb) / .06),rgb(var(--accent-rgb) / 0) 60%),var(--canvas)}
.crumbs{font-family:var(--mono);font-weight:700;font-size:12px;letter-spacing:1px;color:var(--text-secondary);margin-bottom:18px}
.crumbs a{color:var(--text-secondary);text-decoration:none}
.crumbs a:hover{color:var(--accent)}
.crumbs [aria-current]{color:var(--text-primary)}
.prose{max-width:68ch}
.prose p{margin-top:16px;color:var(--text-secondary);font-size:17px}
.prose>p:first-child{margin-top:0;font-size:19px;color:var(--text-primary)}
.prose h2{margin-top:44px;font-size:clamp(22px,2.6vw,30px);max-width:none}
.prose ul{margin:16px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}
.prose li{position:relative;padding-left:26px;color:var(--text-secondary)}
.prose li::before{content:"";position:absolute;left:2px;top:.5em;width:9px;height:9px;border-radius:50%;border:2px solid var(--accent)}
.prose a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent-muted)}
.prose a:hover{color:var(--accent-hover)}
.callout{background:var(--panel);border:1px solid var(--accent-muted);border-radius:14px;padding:22px 26px}
.callout p{max-width:none;color:var(--text-secondary)}
.callout strong{color:var(--text-primary)}
.callout a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent-muted)}
.nowrap{white-space:nowrap}
.page-fig{margin:36px 0 8px;border-radius:16px;overflow:hidden;border:1px solid var(--line-strong)}
.page-fig img{width:100%;height:auto;display:block;transition:transform 1.4s var(--ease)}
.page-fig:hover img{transform:scale(1.04)}
@media (prefers-reduced-motion:reduce){.page-fig:hover img{transform:none}}

/* estimate form, hardened: error rows reserve height so the button never shifts */
.quote-form .field{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.quote-form .err{display:block;min-height:20px;font-size:13.5px;color:var(--danger);font-family:var(--body);font-weight:400;letter-spacing:0;text-transform:none}
.quote-form .field.invalid input,.quote-form .field.invalid textarea{border-color:var(--danger-border)}
.quote-form .form-foot{font-size:13.5px;color:var(--text-secondary);font-family:var(--body);font-weight:400;letter-spacing:0;text-transform:none}
.hp-field{position:absolute;left:-9999px;top:auto}
.field-check{flex-direction:row;align-items:center;gap:12px}
.field-check input{width:20px;height:20px;accent-color:var(--accent);flex:none}
.field-check label{font-family:var(--body);font-weight:600;font-size:15px;letter-spacing:0;color:var(--text-primary)}
.urgent-note{display:none;margin-top:10px;font-size:14px;color:var(--accent)}
.urgent-note.show{display:block}
.form-success{display:none;background:var(--panel-2);border:1px solid var(--accent-muted);border-radius:14px;padding:26px 28px}
.form-success.show{display:block}
.form-success h3{font-family:var(--body);font-weight:700;font-size:20px;color:var(--text-primary)}
.form-success p{color:var(--text-secondary);font-size:15px}
.form-success a{color:var(--accent)}

/* sticky mobile call bar, appears past 40 percent depth */
.sticky-bar{position:fixed;left:0;right:0;bottom:0;z-index:150;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line-strong);border-top:1px solid var(--line-strong);transform:translateY(102%);transition:transform .35s var(--ease);box-shadow:0 -8px 30px rgb(var(--night-rgb) / .45)}
.sticky-bar.show{transform:translateY(0)}
.sticky-bar a{display:flex;align-items:center;justify-content:center;gap:8px;padding:15px 10px;font-weight:700;font-size:15px;text-decoration:none;min-height:52px}
.bar-call{background:var(--accent);color:var(--ink)}
.bar-est{background:var(--panel-2);color:var(--text-primary)}
@media (min-width:861px){.sticky-bar{display:none}}
@media (max-width:860px){.qc-fab{bottom:88px}.qc-panel{bottom:154px}}

/* logo presence: 64 desktop, 52 mobile */
.brand img{width:64px;height:64px}
@media (max-width:560px){.brand img{width:52px;height:52px}}

/* services.html card title links */
.svc h3 a{color:inherit;text-decoration:none;transition:color .25s var(--ease)}
.svc h3 a:hover{color:var(--accent)}
.svc h3 a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}

/* ==== v1-ship: trust chips (were homepage-only inline), page rail, progressive motion ==== */
.stats{display:flex;flex-direction:column;gap:18px;margin-top:34px}
.stat{display:flex;gap:16px;align-items:baseline;background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:18px 22px;opacity:.62;transform:translateX(10px);transition:opacity .5s var(--ease),transform .5s var(--ease),border-color .5s var(--ease)}
.stat.lit{opacity:1;transform:translateX(0);border-color:var(--accent-muted)}
.stat b{font-family:var(--display);font-weight:400;font-size:20px;color:var(--accent);white-space:nowrap}
.stat span{color:var(--text-secondary);font-size:15px}
html:not(.js) .stat{opacity:1;transform:none}

/* subpage two-column: prose + sticky call rail (fills the 1920 void, call stays primary) */
.page-grid{display:grid;grid-template-columns:minmax(0,68ch) minmax(300px,380px);gap:72px;align-items:start}
@media (max-width:1060px){.page-grid{grid-template-columns:1fr;gap:44px}}
.rail{position:sticky;top:112px;display:flex;flex-direction:column;gap:20px}
@media (max-width:1060px){.rail{position:static}}
.rail-card{background:var(--panel);border:1px solid var(--line-strong);border-radius:18px;padding:28px 26px;position:relative;overflow:hidden}
.rail-card::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 90% 55% at 80% 0%,rgb(var(--accent-rgb) / .09) 0%,rgb(var(--accent-rgb) / 0) 60%);pointer-events:none}
.rail-card>*{position:relative}
.rail-card .kicker{margin-bottom:8px}
.rail-phone{display:inline-flex;align-items:center;gap:10px;font-family:var(--display);font-size:clamp(22px,2.2vw,28px);color:var(--text-primary);text-decoration:none;margin:4px 0 6px;transition:color .25s var(--ease)}
.rail-phone:hover{color:var(--accent-hover)}
.rail-phone svg{width:22px;height:22px;color:var(--accent);flex:none}
.rail-sub{color:var(--text-secondary);font-size:15px}
.rail-promises{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}
.rail-promises li{display:flex;gap:10px;align-items:baseline;font-size:15px;color:var(--text-primary)}
.rail-promises li::before{content:"";width:8px;height:8px;border-radius:50%;border:2px solid var(--accent);align-self:center;flex:none}
.rail-card .btn{margin-top:20px;display:block;text-align:center}
.rail-fig{margin:0;border-radius:16px;overflow:hidden;border:1px solid var(--line-strong)}
.rail-fig img{width:100%;height:auto;display:block;aspect-ratio:16/9;object-fit:cover;transition:transform 1.4s var(--ease)}
.rail-fig:hover img{transform:scale(1.04)}
.rail-fig figcaption{font-family:var(--mono);font-size:11px;letter-spacing:2px;color:var(--text-secondary);padding:10px 14px;border-top:1px solid var(--line);background:var(--panel)}
@media (prefers-reduced-motion:reduce){.rail-fig:hover img{transform:none}}

/* progressive enhancement: scroll-driven reveals where supported (JS reveal becomes a no-op) */
@supports (animation-timeline: view()){
  @keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
  .js .reveal .part{opacity:1;transform:none;transition:none;animation:rise .7s var(--ease) both;animation-timeline:view();animation-range:entry 0% entry 28%}
  .js .reveal .part:nth-child(2){animation-range:entry 4% entry 32%}
  .js .reveal .part:nth-child(3){animation-range:entry 8% entry 36%}
  .js .reveal .part:nth-child(4){animation-range:entry 12% entry 40%}
  .js .reveal .part:nth-child(5){animation-range:entry 16% entry 44%}
  @media (prefers-reduced-motion:reduce){.js .reveal .part{animation:none}}
}
/* cross-document view transitions: a soft crossfade between pages, off for reduced motion */
@view-transition{navigation:auto}
@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}}

/* reserved height so the Turnstile widget mount never shifts the submit button */
.field.cf-turnstile{min-height:65px}
/* /service-area/ hub */
.town-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:32px}
@media (max-width:560px){.town-grid{grid-template-columns:1fr}}
.town-card{display:flex;flex-direction:column;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px 20px;text-decoration:none;transition:border-color .25s var(--ease),transform .25s var(--ease)}
.town-card:hover{border-color:var(--accent-muted);transform:translateY(-2px)}
.town-card b{font-family:var(--display);font-weight:400;font-size:20px;color:var(--text-primary)}
.town-card span{color:var(--text-secondary);font-size:15px}

/* pagehead backdrops as classes so phones get the 900px encode */
.pagehead .bg-canopy{background-image:url(/assets/img/canopy-amber-1600.jpg);background-position:center 45%}
.pagehead .bg-ending{background-image:url(/assets/hero-ending.jpg);background-position:center 60%}
@media (max-width:720px){.pagehead .bg-canopy{background-image:url(/assets/img/canopy-amber-900.jpg)}.pagehead .bg-ending{background-image:url(/assets/img/hero-ending-900.jpg)}}

@media (max-width:720px){.pagehead .bg-canopy{background-image:url(/assets/img/canopy-amber-720.jpg)}.estimate-fig{display:none}}

/* the file input's intrinsic width must never dictate a grid track (crushed the form on phones) */
.quote-form .field,.cta-grid>*,.page-grid>*{min-width:0}
.quote-form input[type=file]{width:100%;max-width:100%;min-width:0}

/* ==== v1-ship polish from the verified audit ==== */
.quote-form .field.field-check{flex-direction:row;align-items:center}
.urgent-note{display:block;visibility:hidden;min-height:22px}
.urgent-note.show{visibility:visible}
@media (max-width:480px){.quote-form .err{min-height:40px}}
.nav-call:active,.qc-fab:active,.menu-btn:active{transform:translateY(1px) scale(.98);transition-duration:.08s}
/* Cabin's zero is wide: 68ch ran 95-114 characters per line; 60ch lands near 80 */
.prose{max-width:60ch}
@media (min-width:1061px){.page-grid{grid-template-columns:minmax(0,60ch) minmax(300px,380px)}}
.lede{max-width:46ch}
/* figure treatment parity: film vignette on prose figures like the services rows */
.page-fig{position:relative}
.page-fig::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 70px rgb(var(--surface-rgb) / .45);pointer-events:none;border-radius:inherit}
/* the sticky bar must never cover the footer's legal line */
@media (max-width:860px){footer{padding-bottom:110px}}
@media (max-width:360px){.brand img{width:44px;height:44px}.nav-cta{font-size:9px;padding:8px 7px;letter-spacing:.3px}.navrow{gap:6px;padding:10px 10px}nav{gap:6px}}

/* trust chips stack on phones so long lines read as sentences */
@media (max-width:560px){.stat{flex-direction:column;gap:4px;align-items:flex-start}.stat b{white-space:normal}}

/* no JS: plain nav links instead of the JS-built menu button */
@media (max-width:860px){html:not(.js) nav a.hideable{display:inline-flex;font-size:11px}html:not(.js) .navrow{flex-wrap:wrap}}
/* the Turnstile widget and the submit row span the form so nothing orphans in a column */
.quote-form .cf-turnstile,.quote-form #f-human-err,.quote-form .field:has(button[type=submit]){grid-column:1/-1}
