/* ============================================================================
   ACMAN styles.css, preview #2 "The Night Shift"
   Night base, warm-white daylight sections, real footage. Blue = Call/Book (and the fan).
   Red = the cape and the emergency edge only. One display face (Archivo), one body (Figtree).
   Order: base, chrome, hero, sections, components, the ACMAN hero, chat, motion, phone LAST.
   ========================================================================== */
*,*::before,*::after{box-sizing:border-box}
:root{--top-h:160px;--lane-h:46px}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;overflow-x:clip;scroll-padding-top:calc(var(--top-h,120px) + 16px);background:var(--night)}
body{margin:0;background:var(--paper);color:var(--ink);font:400 18px/1.55 var(--sans);overflow-x:clip;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg,video{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-underline-offset:3px}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
::selection{background:var(--accent);color:var(--accent-ink)}
h1,h2,h3{font-family:var(--display);font-weight:900;line-height:.92;letter-spacing:.005em;text-transform:uppercase;margin:0;overflow-wrap:normal;hyphens:manual;text-wrap:balance;color:inherit}
h3{font-size:clamp(20px,1.6vw,24px);font-stretch:108%;font-weight:800;line-height:1.12;letter-spacing:-.012em}
p{margin:0}
p,li,blockquote,figcaption{text-wrap:pretty}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:8px}
.wrap{width:min(1240px,100% - 56px);margin-inline:auto}
.narrow{width:min(860px,100% - 56px)}
.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.skip{position:fixed;left:12px;top:12px;z-index:200;background:#fff;color:var(--ink);padding:12px 18px;border-radius:10px;font-weight:600;transform:translateY(-200%);transition:transform .2s}
.skip:focus{transform:none}
.statement{font-size:clamp(52px,7.4vw,124px);font-stretch:125%;font-weight:900;line-height:.9;letter-spacing:-.035em}
.sec-h{font-size:clamp(36px,4.8vw,70px);font-stretch:120%;font-weight:900;line-height:.94;letter-spacing:-.03em}
.h-sm{font-size:clamp(22px,2vw,28px);font-stretch:112%;font-weight:850;line-height:1.05;margin-bottom:14px}
.body-l{font-size:clamp(18px,1.4vw,20px);color:var(--ink-2);max-width:60ch;margin-top:18px}
.cap{margin-top:10px;font-size:14.5px;color:var(--muted)}
.link-light,.link-dark{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-weight:700;text-decoration:none}
.link-light{color:#fff}.link-dark{color:var(--ink)}
.link-light svg,.link-dark svg{width:18px;height:18px;transition:transform .2s cubic-bezier(.2,.8,.2,1)}
@media (hover:hover){.link-light:hover svg,.link-dark:hover svg{transform:translateX(4px)}}

/* ---------- buttons: blue only for Call and Book ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 24px;border-radius:999px;font:700 16.5px/1.2 var(--sans);text-decoration:none;white-space:nowrap;transition:transform .12s ease-out,background-color .2s,color .2s,box-shadow .2s}
.btn svg{width:18px;height:18px;flex:none}
.btn:active{transform:scale(.97)}
.btn-accent{background:var(--accent);color:var(--accent-ink);box-shadow:0 10px 24px -14px rgba(0,0,0,.6)}
.btn-ghost-light{box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.75);color:#fff}
.btn-dark{background:var(--night);color:#fff}
.btn-white{background:#fff;color:#A3030E}
.btn-sm{min-height:44px;padding:0 18px;font-size:15px}
.btn-lg{min-height:58px;padding:0 30px;font-size:17px}
@media (hover:hover){
  .btn-accent:hover{background:#5BBAE7}
  .btn-ghost-light:hover{background:rgba(255,255,255,.12)}
  .btn-dark:hover{background:#262a30}
  .btn-white:hover{background:#FFE9EA}
}
.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}

/* ---------- top stack: thin bar + header, transparent over the dark heroes, solid once scrolled ---------- */
.topstack{position:fixed;inset:0 0 auto 0;z-index:50;padding-top:env(safe-area-inset-top);color:#fff;background-color:rgba(13,15,18,.62);transition:background-color .3s}
.topstack::before{content:"";position:absolute;inset:0 0 auto 0;height:env(safe-area-inset-top);background:var(--night)}
.scrolled .topstack,.menu-open .topstack{background:rgba(13,15,18,.94);-webkit-backdrop-filter:saturate(1.3) blur(10px);backdrop-filter:saturate(1.3) blur(10px)}
.promo{background:rgba(0,0,0,.35)}
.promo-in{display:flex;align-items:center;justify-content:center;min-height:34px;position:relative}
.promo p{font-size:13.5px;line-height:1.35;text-align:center;padding:6px 0;color:rgba(255,255,255,.86)}
.promo p a{color:#fff;font-weight:700;text-decoration:none;white-space:nowrap;display:inline-block;padding:4px 0}
.promo-short{display:none}
.promo-social{position:absolute;right:0;top:50%;transform:translateY(-50%);display:flex;gap:2px}
.promo-social a,.mnav-social a,.ft-social a{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;color:inherit;opacity:.8;transition:opacity .2s}
@media (hover:hover){.promo-social a:hover,.ft-social a:hover{opacity:1}}
.promo-social svg,.mnav-social svg,.ft-social svg{width:17px;height:17px}
.hdr-in{display:flex;align-items:center;gap:24px;min-height:76px}
.brand{display:flex;align-items:center;flex:none;min-height:44px}
.logo-svg{height:58px;width:auto}
.logo-fan{transform-box:fill-box;transform-origin:50% 50%}
.fan-up .logo-fan{animation:fanUp .9s cubic-bezier(.2,.8,.2,1)}
@keyframes fanUp{from{transform:rotate(0)}to{transform:rotate(720deg)}}
.nav{display:flex;gap:2px;margin-left:auto}
.nav a{padding:10px 13px;border-radius:999px;font-size:15.5px;font-weight:600;text-decoration:none;color:rgba(255,255,255,.82);transition:color .2s,background-color .2s}
.nav a[aria-current]{color:#fff;background:rgba(255,255,255,.1)}
@media (hover:hover){.nav a:hover{color:#fff;background:rgba(255,255,255,.08)}}
.hdr-act{display:flex;align-items:center;gap:12px}
.hdr-call{display:flex;align-items:center;gap:10px;min-height:44px;text-decoration:none}
.hc-ic{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.35);flex:none}
.hc-ic svg{width:19px;height:19px}
.hc-t{display:grid;line-height:1.15}
.hc-t small{font-size:12.5px;font-weight:600;color:rgba(255,255,255,.7)}
.hc-t b{font:800 17px/1.2 var(--display);font-stretch:104%}
.burger{display:none;width:46px;height:46px;border-radius:50%;position:relative}
.burger span{position:absolute;left:13px;right:13px;height:2px;border-radius:2px;background:#fff;transition:transform .3s cubic-bezier(.2,.8,.2,1),opacity .2s}
.burger span:nth-child(1){top:16px}.burger span:nth-child(2){top:22px}.burger span:nth-child(3){top:28px}
.menu-open .burger span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.menu-open .burger span:nth-child(2){opacity:0}
.menu-open .burger span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
.mnav{position:fixed;left:0;right:0;top:var(--top-h,120px);bottom:0;z-index:49;background:var(--night);color:#fff;display:flex;flex-direction:column;justify-content:space-between;gap:24px;padding:12px 24px calc(28px + env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain;opacity:0;visibility:hidden;transition:opacity .22s ease,visibility 0s .22s}
.menu-open .mnav{opacity:1;visibility:visible;transition:opacity .22s ease}
.mnav-links{display:flex;flex-direction:column}
.mnav-links a{font:850 clamp(22px,6vw,28px)/1.15 var(--display);font-stretch:112%;text-decoration:none;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.12)}
.mnav-links a[aria-current]{color:var(--accent)}
.mnav-foot{display:flex;flex-direction:column;gap:10px}
.mnav-foot .btn{width:100%}
.mnav-social{display:flex;gap:6px;justify-content:center}
.mnav-social a{width:44px;height:44px}
body.menu-open{overflow:hidden}

/* ---------- video hero "Dispatch" ---------- */
.vhero{position:relative;isolation:isolate;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;color:#fff;background:var(--night);overflow:hidden}
.vh-media{position:absolute;inset:0;z-index:-2}
.vh-media img,.vh-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vh-vid{opacity:0;transition:opacity .8s ease}
.vh-vid.is-playing{opacity:1}
.vh-scrim{position:absolute;inset:0;z-index:-1;background:radial-gradient(120% 90% at 0% 100%,rgba(8,10,12,.86) 0%,rgba(8,10,12,.55) 42%,rgba(8,10,12,0) 72%),linear-gradient(180deg,rgba(8,10,12,.55) 0%,rgba(8,10,12,0) 26%)}
.vh-in{position:relative;z-index:1;padding:calc(var(--top-h,120px) + 96px) 0 44px}
.vhero h1{font-size:clamp(64px,10.4vw,176px);font-stretch:125%;font-weight:900;line-height:.86;letter-spacing:-.04em}
.mask>span{display:block;overflow:hidden;padding-bottom:.04em}
.mask>span>span{display:block}
.js .mask>span>span{animation:rise .55s cubic-bezier(.2,.8,.2,1) both}
.js .mask>span:nth-child(2)>span{animation-delay:.08s}
@keyframes rise{from{transform:translateY(105%)}}
.vh-sub{margin-top:22px;max-width:44ch;font-size:clamp(18px,1.5vw,21px);color:rgba(255,255,255,.9)}
.vh-live{margin-top:20px;font-size:15.5px;color:rgba(255,255,255,.82);font-variant-numeric:tabular-nums}
.vh-live span{font-weight:700;color:#fff}
.vh-proof{display:flex;flex-wrap:wrap;align-items:center;gap:6px 22px;margin-top:10px;font-size:15px;color:rgba(255,255,255,.78)}
.rating{display:inline-flex;align-items:center;gap:8px;min-height:44px;text-decoration:none;color:inherit}
.rating .stars{display:inline-flex;gap:2px;color:#F5B301}
.rating .stars svg{width:16px;height:16px}
.rating b{font-weight:700;color:#fff}
/* the emergency edge: the hero's bottom on every device */
.edge{background:var(--red);color:#fff}
.edge-in{display:flex;align-items:center;justify-content:space-between;gap:12px 24px;padding:14px 0}
.edge p{font-size:17px;line-height:1.3}
.edge p b{font:900 21px/1.1 var(--display);font-stretch:118%;margin-right:4px}
.edge-act{display:flex;gap:10px;flex:none}
.edge .btn{min-height:48px}

/* ---------- page hero (every inner page): full-bleed real photo or loop, words bottom-left ---------- */
.ph{position:relative;isolation:isolate;min-height:min(78svh,760px);display:flex;align-items:flex-end;color:#fff;background:var(--night);overflow:hidden}
.ph-short{min-height:min(62svh,600px)}
.ph-plain{min-height:0}
.ph-media{position:absolute;inset:var(--top-h) 0 0 0;z-index:-2}
.ph-media img,.ph-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* per-photo focal points: keep faces off the headline and the van lettering in frame */
.ph-media img[src*="book-122"]{object-position:50% 4%}
.ph-media video{z-index:1;opacity:0;transition:opacity .8s ease}
.ph-media video.is-playing{opacity:1}
.ph-scrim{position:absolute;inset:0;z-index:-1;background:radial-gradient(110% 95% at 0% 100%,rgba(8,10,12,.88) 0%,rgba(8,10,12,.62) 40%,rgba(8,10,12,.05) 75%),linear-gradient(0deg,rgba(8,10,12,.5) 0%,rgba(8,10,12,0) 55%),linear-gradient(180deg,rgba(8,10,12,.6) 0%,rgba(8,10,12,0) 30%)}
.ph-plain .ph-scrim{display:none}
.ph-in{padding:calc(var(--top-h,120px) + 72px) 0 56px}
.ph h1{font-size:clamp(46px,6.6vw,108px);font-stretch:122%;font-weight:900;line-height:.9;letter-spacing:-.035em;max-width:20ch}
.ph-plain h1{font-size:clamp(38px,4.8vw,72px);max-width:20ch}
.ph-sub{margin-top:18px;max-width:52ch;font-size:clamp(18px,1.45vw,20px);color:rgba(255,255,255,.9)}
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:14px;margin-bottom:16px;color:rgba(255,255,255,.75)}
.crumbs a{display:inline-flex;align-items:center;min-height:44px;color:#fff;text-decoration:underline;text-decoration-color:rgba(255,255,255,.35)}

/* ---------- sections ---------- */
.sec{padding:112px 0;background:var(--paper)}
.sec-warm{background:var(--tint)}
.sec-night{background:var(--night);color:#fff}
.sec-night .faq{background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.sec-night .faq p{color:rgba(255,255,255,.8)}
.sec-night .faq summary::after{border-color:var(--accent)}
.sec-top{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:36px}
.sec-night .sec-h,.sec-night h2{color:#fff}

/* numbers in type, no boxes */
.numbers{background:var(--night);color:#fff;padding:72px 0 64px}
.nums{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,auto);justify-content:space-between;gap:24px 40px}
.nums li{display:grid;gap:6px}
.nums b{font:900 clamp(56px,6.4vw,104px)/.9 var(--display);font-stretch:115%;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.nums span{font-size:15.5px;color:rgba(255,255,255,.72)}
.nums-lic{margin-top:36px;font-size:15px;color:rgba(255,255,255,.6)}

/* The Lift */
.lift{position:relative;isolation:isolate;min-height:min(92svh,900px);display:flex;align-items:flex-end;color:#fff;background:var(--night);overflow:hidden}
.lift-media{position:absolute;inset:0;z-index:-2}
.lift-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lift-scrim{position:absolute;inset:0;z-index:-1;background:radial-gradient(100% 80% at 0% 100%,rgba(8,10,12,.85) 0%,rgba(8,10,12,.45) 45%,rgba(8,10,12,0) 72%),linear-gradient(0deg,rgba(8,10,12,.72) 0%,rgba(8,10,12,.42) 38%,rgba(8,10,12,0) 62%)}
.lift-in{padding:120px 0 72px}
.lift .statement{max-width:11ch}
.lift p{margin-top:20px;max-width:46ch;font-size:clamp(18px,1.4vw,20px);color:rgba(255,255,255,.88)}
.lift .link-light{margin-top:14px}

/* three doors */
.doors-sec{background:var(--paper);padding:112px 0 0}
.doors-sec .sec-h{margin-bottom:40px}
.doors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
.door{position:relative;isolation:isolate;min-height:min(80svh,760px);display:flex;align-items:flex-end;color:#fff;overflow:hidden;background:var(--night)}
.door>img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.8,.2,1)}
.door-scrim{position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,rgba(8,10,12,.92) 0%,rgba(8,10,12,.55) 38%,rgba(8,10,12,0) 66%)}
.door-t{padding:36px 32px 34px;width:100%}
.door h3{font-size:clamp(34px,3.4vw,54px);font-stretch:122%;font-weight:900;letter-spacing:-.03em}
.door h3 a{text-decoration:none;display:inline-flex;min-height:44px;align-items:center}
.door p{margin-top:8px;color:rgba(255,255,255,.85);font-size:16px;max-width:34ch}
.door ul{list-style:none;margin:14px 0 0;padding:0;display:grid}
.door li a{display:flex;align-items:center;min-height:42px;font-weight:600;font-size:16px;text-decoration:none;color:rgba(255,255,255,.92)}
@media (hover:hover) and (min-width:1025px){
  .door ul,.door .door-tri{opacity:0;transform:translateY(10px);transition:opacity .35s ease,transform .45s cubic-bezier(.2,.8,.2,1)}
  .door:hover ul,.door:focus-within ul,.door:hover .door-tri,.door:focus-within .door-tri{opacity:1;transform:none}
  .door:hover>img{transform:scale(1.04)}
  .door li a:hover{color:#fff;text-decoration:underline}
}
.door-tri{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.tri{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;font-weight:700;font-size:15px;text-decoration:none;transition:background-color .2s}
.tri svg{width:18px;height:18px}
@media (hover:hover){.tri:hover{background:rgba(255,255,255,.22)}}
.door-tri-dark{margin-top:28px}
.door-tri-dark .tri{background:var(--night)}

/* The Dash (signature band) */
.dash{position:relative;isolation:isolate;background:var(--night);color:#fff;padding:0 0 88px;overflow:hidden;view-timeline-name:--dash}
.dash-sky{position:absolute;left:0;right:0;bottom:0;height:min(32vh,260px);z-index:-1;color:#15191E}
.dash-sky svg{width:100%;height:100%}
.dash-lane{position:relative;height:clamp(150px,22vh,230px);pointer-events:none;--fw:clamp(220px,24vw,360px)}
.dash-pos{position:absolute;left:0;top:0;bottom:0;width:calc(100% - var(--fw));transform:translateX(calc(var(--p,0) * 100%))}
.dash-run{position:absolute;left:0;bottom:6px;width:var(--fw);height:calc(var(--fw) * .5833)}
.dash-run .fx{width:100%;height:100%}
.dash-in{position:relative}
.dash-line{position:relative;font-size:clamp(46px,8.4vw,118px);font-stretch:125%;font-weight:900;line-height:.9;letter-spacing:-.035em;text-transform:uppercase;max-width:none}
.dash-ghost{display:block;color:rgba(255,255,255,.12)}
.dash-ink{position:absolute;inset:0;color:#fff;clip-path:inset(0 calc(100% - var(--p,0) * 100%) 0 0)}
.dash-in>p{margin-top:24px;max-width:48ch;color:rgba(255,255,255,.82);font-size:clamp(17px,1.4vw,19px)}
@keyframes runX{from{transform:translateX(0)}to{transform:translateX(100%)}}
@keyframes inkX{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@supports (animation-timeline: view()){
  .dash-pos{animation:runX linear both;animation-timeline:--dash;animation-range:cover 28% cover 72%}
  .dash-ink{animation:inkX linear both;animation-timeline:--dash;animation-range:cover 28% cover 72%}
}

/* the crew */
.crew{background:var(--paper);padding:112px 0}
.crew-head p{margin-top:16px;max-width:52ch;color:var(--ink-2)}
.rail{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:36px max(28px,(100vw - 1240px) / 2) 8px;scrollbar-width:none;overscroll-behavior-x:contain}
.rail::-webkit-scrollbar{display:none}
.rail figure{margin:0;flex:0 0 auto;width:min(360px,72vw);aspect-ratio:3/4;border-radius:14px;overflow:hidden;scroll-snap-align:start;background:var(--tint)}
.rail img,.rail video{width:100%;height:100%;object-fit:cover}
.train{margin-top:40px}
.train-cap{font:850 22px/1.1 var(--display);font-stretch:112%;margin-bottom:14px}
.train-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.train-row img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px}

/* proof wall: one big quote */
.proof-wall{background:var(--tint);padding:112px 0}
.pw-in{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(32px,5vw,80px);align-items:start}
.bq{margin:0;display:grid;grid-template-columns:minmax(0,.55fr) minmax(0,1fr);gap:clamp(24px,3vw,48px);align-items:end}
.bq:not(:has(.bq-img)){grid-template-columns:minmax(0,1fr)}
.bq-t{max-width:40ch}
.bq-img img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:14px}
.bq-mark{display:block;width:44px;color:var(--accent)}
.bq-mark svg{width:44px;height:auto}
.bq blockquote{margin:18px 0 0;font:800 clamp(22px,1.9vw,30px)/1.32 var(--display);font-stretch:104%;letter-spacing:-.015em;color:var(--ink);text-wrap:pretty}
.bq figcaption{margin-top:18px;font-weight:600;color:var(--muted)}
.pw-side blockquote{margin:0;font-size:18px;line-height:1.5;color:var(--ink)}
.pw-by{margin:8px 0 28px;font-weight:600;font-size:15px;color:var(--muted)}

/* Hero Club */
.club{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);background:var(--night);color:#fff}
.club-img{min-height:min(88svh,820px);position:relative}
.club-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.club-t{padding:clamp(48px,7vw,112px) clamp(28px,6vw,96px);align-self:center}
.club-k{font-weight:700;color:rgba(255,255,255,.7);margin-bottom:14px}
.club h2{font-size:clamp(40px,5vw,76px);font-stretch:122%;font-weight:900;letter-spacing:-.03em}
.club-list{list-style:none;margin:30px 0 0;padding:0;display:grid;gap:16px}
.club-list li,.ticks li{display:flex;gap:12px;align-items:flex-start}
.club-list svg{width:22px;height:22px;color:var(--accent);flex:none;margin-top:3px}
.club-list span{color:rgba(255,255,255,.86)}
.club-list b{color:#fff}
.club-note{margin-top:22px;font-weight:700;color:#fff}
.club-note-dark{color:var(--ink)}

/* inside the work */
.work{background:var(--paper);padding:112px 0}
.work-in{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,5vw,80px);align-items:center}
.work-v video{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:16px;background:var(--night)}
.work-t p:not(.work-links){margin-top:18px;color:var(--ink-2);max-width:46ch}
.work-pics{display:grid;grid-template-columns:1.2fr 1fr;gap:8px;margin-top:28px}
.work-pics img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:12px}
.work-links{display:flex;flex-wrap:wrap;gap:4px 22px;margin-top:22px}
.work-links a{display:inline-flex;align-items:center;min-height:44px;font-weight:700;text-decoration:underline;text-decoration-thickness:2px;text-decoration-color:var(--accent)}

/* where we run */
.where{position:relative;isolation:isolate;min-height:min(90svh,860px);overflow:hidden;background:#9fc7e3}
.where>img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:50% 70%}
.where-scrim{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(246,245,241,.92) 0%,rgba(246,245,241,.78) 38%,rgba(246,245,241,0) 72%)}
.where-in{padding:104px 0 60px}
.cities{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:0 28px;max-width:1000px}
.cities a{display:inline-flex;align-items:center;min-height:48px;font:900 clamp(24px,3.2vw,48px)/1 var(--display);font-stretch:120%;letter-spacing:-.02em;text-decoration:none;color:var(--night)}
@media (hover:hover){.cities a:hover{text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:4px}}

/* final CTA + the Landing */
.fcta{position:relative;isolation:isolate;background:var(--night);color:#fff;padding:104px 0;overflow:hidden}
.fcta-in{display:grid;grid-template-columns:minmax(0,1fr);gap:40px;align-items:center}
.fcta-land .fcta-in{grid-template-columns:minmax(0,.62fr) minmax(0,1.3fr) minmax(0,.9fr)}
.fcta-land h2{font-size:clamp(46px,5.2vw,84px)}
.fcta h2{font-size:clamp(46px,6.2vw,104px);overflow-wrap:normal;font-stretch:125%;font-weight:900;letter-spacing:-.035em;line-height:.9}
.fcta p{margin-top:18px;max-width:46ch;color:rgba(255,255,255,.84);font-size:clamp(17px,1.4vw,19px)}
.fcta-img img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:16px}
.land{pointer-events:none;width:100%;max-width:280px;justify-self:center}
.land .fx{width:100%;height:auto;overflow:visible}
.land .fx-lines{display:none}
@keyframes landIn{from{transform:translate(-30%,-60%) rotate(-14deg);opacity:0}60%{opacity:1}to{transform:none;opacity:1}}
@supports (animation-timeline: view()){.land{animation:landIn linear both;animation-timeline:view();animation-range:entry 0% cover 45%}}
@supports not (animation-timeline: view()){.js .land{opacity:0;transform:translate(-30%,-60%) rotate(-14deg);transition:opacity .6s ease,transform .8s cubic-bezier(.2,.8,.2,1)}.js .land.landed{opacity:1;transform:none}}
.fcta-land:has(a[href^="tel:"]:hover) .land .fx-fan,.land.spin .fx-fan{animation:fxSpin .45s linear infinite}

/* ---------- service pages ---------- */
.svc-main{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,.75fr);gap:clamp(32px,5vw,72px);align-items:start}
.svc-answer{font:800 clamp(20px,1.6vw,24px)/1.38 var(--display);font-stretch:104%;letter-spacing:-.012em;max-width:34ch;color:var(--ink)}
.signs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:36px;margin-top:44px}
.ticks{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.ticks svg{width:21px;height:21px;color:var(--accent-deep);flex:none;margin-top:3px}
.ticks-warn svg{color:#C2040F}
.ticks-lg li{font-size:19px}
.read-first{margin-top:28px;color:var(--ink-2)}
.read-first a{font-weight:700;color:var(--ink)}
.now{position:sticky;top:calc(var(--top-h,120px) + 20px);display:grid;gap:12px;background:var(--night);color:#fff;border-radius:18px;padding:30px;box-shadow:0 30px 50px -36px rgba(0,0,0,.6)}
.now-h{font:900 26px/1.05 var(--display);font-stretch:118%;letter-spacing:-.02em}
.now p{color:rgba(255,255,255,.82);font-size:16px}
.now .btn{width:100%}
.now-note{display:flex;align-items:center;gap:8px;font-size:14px!important;color:rgba(255,255,255,.7)!important}
.now-note svg{width:17px;height:17px;flex:none}
.timeline{list-style:none;margin:48px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;position:relative}
.timeline::before{content:"";position:absolute;left:8px;right:8px;top:8px;height:2px;background:rgba(255,255,255,.18)}
.timeline li{position:relative;display:grid;gap:6px;padding-top:34px}
.tl-dot{position:absolute;left:0;top:0;width:18px;height:18px;border-radius:50%;background:var(--night);box-shadow:inset 0 0 0 3px var(--accent)}
.timeline b{font:850 21px/1.15 var(--display);font-stretch:110%}
.timeline span{color:rgba(255,255,255,.75);font-size:16px}
.pair{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:var(--night)}
.pair figure{margin:0}
.pair img{width:100%;height:min(86svh,820px);object-fit:cover}
.near{margin-top:44px;color:var(--ink-2);max-width:62ch}
.near a{color:var(--ink);font-weight:600}
.links3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin-top:56px;padding-top:36px;border-top:1px solid var(--line)}
.links3 h3{font:700 14px/1.3 var(--sans);color:var(--muted);margin-bottom:8px}
.links3 ul{list-style:none;margin:0;padding:0}
.links3 a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none;font-weight:600}

/* service rows (hubs): an editorial list, not a card grid */
.rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.rows a{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:24px;padding:18px 0;border-bottom:1px solid var(--line);text-decoration:none}
.rows a:not(:has(.row-img)){grid-template-columns:minmax(0,1fr) auto;padding:24px 0}
.row-img{display:block;width:120px;aspect-ratio:4/3;border-radius:10px;overflow:hidden}
.row-img img{width:100%;height:100%;object-fit:cover}
.row-t b{display:block;font:850 clamp(22px,2.2vw,32px)/1.05 var(--display);font-stretch:115%;letter-spacing:-.02em}
.row-t span{display:block;margin-top:6px;color:var(--ink-2);font-size:16.5px}
.rows a>svg{width:22px;height:22px;color:var(--ink);transition:transform .2s cubic-bezier(.2,.8,.2,1)}
@media (hover:hover){.rows a:hover>svg{transform:translateX(5px)}.rows a:hover b{text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:3px}}

/* plan, offers, reviews, about, areas, guides */
.plan-in{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(32px,5vw,80px);align-items:start}
.plan-in .ticks{margin-top:30px}
.plan-why p{color:var(--ink-2)}
.offer-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:56px 64px}
.ol-who{display:block;font-weight:700;color:var(--muted);margin-bottom:10px}
.offer-list h2{font-size:clamp(30px,3.2vw,46px);font-stretch:118%;font-weight:900}
.offer-list p{margin-top:12px;color:var(--ink-2)}
.fine{margin-top:48px;color:var(--muted);font-size:15.5px;max-width:70ch}
.quotes{columns:3 280px;column-gap:48px;margin-top:80px}
.q{margin:0 0 40px;break-inside:avoid}
.q blockquote{margin:0;font-size:17px;line-height:1.55}
.q figcaption{margin-top:10px;font-weight:600;color:var(--muted);font-size:15px}
.film-sec{background:var(--night);padding:56px 0 96px}
.film{position:relative;border-radius:18px;overflow:hidden;background:#000;aspect-ratio:16/9}
.film-v{width:100%;height:100%;object-fit:cover}
.film-play{position:absolute;inset:0;display:flex;align-items:flex-end;gap:18px;padding:clamp(20px,3vw,40px);text-align:left;color:#fff;background:linear-gradient(0deg,rgba(0,0,0,.72),rgba(0,0,0,0) 55%)}
.film-ic{display:grid;place-items:center;width:clamp(64px,7vw,92px);height:clamp(64px,7vw,92px);border-radius:50%;background:#fff;color:var(--night);flex:none;transition:transform .2s cubic-bezier(.2,.8,.2,1)}
.film-ic svg{width:40%;height:40%;margin-left:6%}
.film-t b{display:block;font:900 clamp(26px,3vw,46px)/1 var(--display);font-stretch:118%}
.film-t span{display:block;margin-top:8px;color:rgba(255,255,255,.85);font-size:16px}
@media (hover:hover){.film-play:hover .film-ic{transform:scale(1.06)}}
.film.is-on .film-play{display:none}
.film-sec .cap{color:rgba(255,255,255,.6)}
.about-in{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(32px,5vw,80px);align-items:center}
.about-pics{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.about-pics img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:12px}
.about-pics img:last-child{margin-top:48px}
.fleet{position:relative;isolation:isolate;min-height:min(80svh,760px);display:flex;align-items:flex-end;color:#fff;background:var(--night);overflow:hidden}
.fleet-media{position:absolute;inset:0;z-index:-2}
.fleet-media video{width:100%;height:100%;object-fit:cover}
.fleet-scrim{position:absolute;inset:0;z-index:-1;background:radial-gradient(100% 80% at 0% 100%,rgba(8,10,12,.85) 0%,rgba(8,10,12,.3) 50%,rgba(8,10,12,0) 75%)}
.fleet-in{padding:96px 0 64px}
.fleet p{margin-top:16px;max-width:44ch;color:rgba(255,255,255,.88)}
.creds{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 72px;align-items:start}
.creds .sec-h{grid-column:1/-1}
.cred-list{list-style:none;margin:0;padding:0;display:grid;gap:20px}
.cred-list b{display:block;font:850 22px/1.15 var(--display);font-stretch:110%}
.cred-list span{color:var(--ink-2)}
.creds-img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:14px;grid-column:2;grid-row:2/4}
.counties{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:48px}
.county h2{font-size:clamp(26px,2.6vw,38px);font-stretch:118%;font-weight:900;margin-bottom:18px}
.county ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.county li{font:800 clamp(20px,1.7vw,24px)/1.3 var(--display);font-stretch:106%;color:var(--ink-2)}
.guide-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.guide-list a{display:block;padding:32px 0;border-bottom:1px solid var(--line);text-decoration:none}
.guide-list h2,.guide-list h3{font-size:clamp(26px,2.8vw,40px);font-stretch:115%;font-weight:900;max-width:24ch}
.guide-list p{margin-top:10px;color:var(--ink-2);max-width:62ch}
.guide-list .link-dark{margin-top:6px}
.guide-list-2 h3{font-size:clamp(22px,2vw,28px)}
.guide h2{font-size:clamp(28px,3vw,40px);font-stretch:115%;font-weight:900;margin:52px 0 14px}
.guide p,.guide li{font-size:18px;color:var(--ink-2)}
.guide p+p{margin-top:14px}
.guide ul{padding-left:22px;display:grid;gap:8px;margin:14px 0}
.g-meta{font-size:15px;color:var(--muted);margin-bottom:26px}
.tldr{background:var(--paper);border-radius:16px;padding:24px 26px;box-shadow:0 0 0 1px var(--line)}
.tldr b{display:block;font-weight:700;color:var(--ink);margin-bottom:8px}
.tldr p{color:var(--ink)!important}
.g-cta{margin-top:56px;display:flex;flex-wrap:wrap;gap:20px;align-items:center;justify-content:space-between;background:var(--paper);border-radius:16px;padding:28px;box-shadow:0 0 0 1px var(--line)}
.g-cta b{font:900 24px/1.2 var(--display);font-stretch:112%}
.g-cta p{font-size:16px!important;margin-top:4px}
.g-cta .cta-row{margin-top:0}
.g-more{margin-top:80px}

/* FAQ */
.faq-list{display:grid;gap:10px}
.faq{background:var(--paper);border-radius:14px;box-shadow:0 0 0 1px var(--line)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:18px;min-height:60px;padding:16px 22px;font-weight:700;font-size:17.5px;border-radius:14px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";flex:none;width:11px;height:11px;border-right:2.5px solid var(--ink);border-bottom:2.5px solid var(--ink);transform:rotate(45deg) translate(-3px,-3px);transition:transform .25s}
.faq[open] summary::after{transform:rotate(225deg) translate(-3px,-3px)}
.faq p{padding:0 22px 20px;color:var(--ink-2);max-width:70ch}
.faq-group{font-size:clamp(26px,2.8vw,38px);font-stretch:118%;font-weight:900;margin:56px 0 18px}
.faq-group:first-child{margin-top:0}
.sec-night .faq summary{color:#fff}

/* projects gallery + lightbox */
.tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:32px}
.tab{min-height:44px;padding:0 18px;border-radius:999px;font-weight:600;font-size:15px;box-shadow:inset 0 0 0 1.5px var(--line);background:var(--paper);transition:background-color .2s,color .2s}
.tab[aria-pressed=true]{background:var(--night);color:#fff;box-shadow:none}
.gal{list-style:none;margin:0;padding:0;columns:4 260px;column-gap:10px}
.gal li{break-inside:avoid;margin-bottom:10px}
.gal li[hidden]{display:none}
.gal-item{position:relative;display:block;width:100%;border-radius:12px;overflow:hidden;background:var(--tint);text-align:left}
.gal-item img{width:100%;height:auto;transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.gal-cap{position:absolute;left:10px;right:10px;bottom:10px;padding:8px 12px;border-radius:10px;background:rgba(13,15,18,.8);color:#fff;font-size:14px;line-height:1.35;opacity:0;transform:translateY(6px);transition:opacity .25s,transform .25s}
@media (hover:hover){.gal-item:hover img{transform:scale(1.03)}.gal-item:hover .gal-cap{opacity:1;transform:none}}
.gal-item:focus-visible .gal-cap{opacity:1;transform:none}
.lb{position:fixed;inset:0;z-index:120;background:rgba(10,12,14,.95);display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:calc(16px + env(safe-area-inset-top)) 12px calc(16px + env(safe-area-inset-bottom))}
.lb[hidden]{display:none}
.lb figure{margin:0;display:grid;justify-items:center;gap:12px;min-width:0}
.lb img{max-width:100%;max-height:calc(100dvh - 120px);width:auto;height:auto;border-radius:10px}
.lb figcaption{color:rgba(255,255,255,.88);font-size:15px;text-align:center}
.lb-x,.lb-nav{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.1);color:#fff}
.lb-x{position:absolute;top:calc(12px + env(safe-area-inset-top));right:12px}
.lb-x svg,.lb-nav svg{width:22px;height:22px}
.lb-open{overflow:hidden}

/* book + contact + forms */
.book-in,.contact{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(32px,6vw,88px);align-items:start}
.book-alt{margin-top:32px;padding-top:28px;border-top:1px solid var(--line);display:grid;gap:14px;justify-items:start}
.book-alt p{color:var(--ink-2)}
.book-alt b{color:var(--ink)}
.cinfo{display:grid;gap:12px;justify-items:start}
.crow{display:flex;align-items:center;gap:12px;min-width:0}
.crow svg{width:20px;height:20px;color:var(--ink);flex:none}
.crow a{display:inline-flex;align-items:center;min-height:44px;font-weight:700;text-decoration:none;overflow-wrap:anywhere}
.cinfo .btn{margin-top:8px}
.cinfo-img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:14px;margin-top:20px}
.lead-form{display:grid;gap:16px;background:var(--paper);border-radius:18px;padding:clamp(22px,3vw,34px);box-shadow:0 0 0 1px var(--line),0 30px 50px -40px rgba(0,0,0,.4)}
.frow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.fld{display:grid;gap:6px;min-width:0}
.fld label{font-size:15px;font-weight:700}
.opt{font-weight:500;color:var(--muted)}
.fld input,.fld select,.fld textarea{width:100%;min-height:52px;border:1.5px solid #BDB8AC;border-radius:12px;background:#fff;padding:12px 16px;font-size:16px;transition:border-color .2s,box-shadow .2s}
.fld textarea{min-height:110px;resize:vertical}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px rgba(49,167,223,.35)}
.ferr{color:#B3261E;font-size:15px;font-weight:600}
.ferr:empty{display:none}
.lead-form .btn{justify-self:start}
.formdone{background:var(--paper);border-radius:18px;padding:40px 32px;box-shadow:0 0 0 1px var(--line);text-align:center}
.formdone:focus{outline:none}
.formdone .ok{display:grid;place-items:center;width:60px;height:60px;margin:0 auto 16px;border-radius:50%;background:var(--night);color:var(--accent)}
.formdone .ok svg{width:28px;height:28px}
.formdone p{color:var(--ink-2);margin-top:8px}
.qf-steps{list-style:none;margin:0 0 4px;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.qf-steps li{position:relative;display:flex;align-items:center;gap:10px;font-weight:700;font-size:14.5px;color:var(--muted);padding-bottom:12px}
.qf-steps li::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;border-radius:3px;background:var(--line)}
.qf-steps li.on{color:var(--ink)}
.qf-steps li.on::after{background:var(--ink)}
.qf-steps li span{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--tint);font-size:13px}
.qf-steps li.on span{background:var(--night);color:#fff}
.qf-opts{border:0;margin:0;padding:0;min-width:0}
.qf-opts legend{font-weight:700;font-size:15px;margin-bottom:10px;padding:0}
.qf-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.qf-opt{position:relative;display:block}
.qf-opt input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.qf-opt span{display:flex;align-items:center;gap:8px;min-height:52px;padding:8px 12px;border-radius:12px;box-shadow:inset 0 0 0 1.5px #BDB8AC;font-weight:600;font-size:15px;line-height:1.25;background:#fff;transition:box-shadow .15s,background-color .15s}
.qf-opt svg{width:18px;height:18px;flex:none}
.qf-opt input:checked+span{box-shadow:inset 0 0 0 2px var(--ink);background:#EEF7FC}
.qf-opt input:focus-visible+span{outline:3px solid var(--accent);outline-offset:2px}
.qf-promise{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:14.5px}
.qf-promise svg{width:17px;height:17px;flex:none}

/* footer */
.ft{background:#08090B;color:rgba(255,255,255,.78);padding:80px 0 calc(32px + env(safe-area-inset-bottom));font-size:15.5px}
.ft a{text-decoration:none}
.ft-logo img{height:60px;width:auto}
.ft-grid{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:40px}
.ft-brand>p{margin-top:18px;max-width:38ch;line-height:1.6}
.ft-contact{display:grid;gap:2px}
.ft-contact a,.ft-contact span{display:inline-flex;align-items:center;gap:10px;min-height:40px;overflow-wrap:anywhere}
.ft-contact svg{width:17px;height:17px;flex:none;color:rgba(255,255,255,.6)}
.ft-h{font:700 14px/1.3 var(--sans);color:#fff;margin:6px 0 12px}
.ft ul{list-style:none;margin:0;padding:0}
.ft li a{display:inline-flex;align-items:center;min-height:40px;line-height:1.35}
@media (hover:hover){.ft a:hover{color:#fff}}
.ft-social{display:flex;gap:4px;margin-top:10px;color:#fff}
.ft-social a{width:44px;height:44px}
.ft-bot{display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between;align-items:center;margin-top:56px;padding-top:24px;border-top:1px solid rgba(255,255,255,.1);font-size:14px}
.ft-bot a{text-decoration:underline;text-underline-offset:3px}
.mbar{display:none}

/* ============================================================================
   THE ACMAN HERO (figure cut from the logo vectors, no circle)
   ========================================================================== */
.fx{overflow:visible}
.fx-cape,.fx-lines rect,.fx-fan,.fx-body{transform-box:fill-box}
.fx-cape{transform-origin:100% 30%;transform:scaleX(calc(.7 + var(--v,0) * .55));transition:transform .25s ease-out}
.fx-lines rect{fill:var(--accent);opacity:calc(var(--v,0) * 1.4);transform-origin:100% 50%;transform:scaleX(calc(.4 + var(--v,0) * 1.2))}
.fx-lines rect:nth-child(2){fill:#C9D1D8}
.fx-fan{transform-origin:50% 50%}
.fx-body{transform-origin:50% 100%}
@keyframes fxSpin{to{transform:rotate(360deg)}}
@keyframes fxBob{from{transform:translateY(0) rotate(8deg)}to{transform:translateY(-6px) rotate(8deg)}}
@keyframes fxFlap{from{transform:scaleX(calc(.85 + var(--v,0) * .5)) skewY(0)}to{transform:scaleX(calc(.95 + var(--v,0) * .55)) skewY(-6deg)}}
.dash-run{transform-origin:50% 100%}
.dash-run.is-running .fx-body{animation:fxBob .3s ease-in-out infinite alternate}
.dash-run.is-running .fx-fan{animation:fxSpin .5s linear infinite}
.dash-run.is-running .fx-cape{animation:fxFlap .26s ease-in-out infinite alternate}
.dash-lines{display:none}
/* ---------- THE TOP LANE: ACMAN runs back and forth under the header on every page ----------
   Its own strip inside the fixed top stack, so he can never sit on the menu, logo, phone or a button.
   Transform/opacity only; paused while the tab is hidden; reduced motion = he stands in hero pose on the left. */
.lane{position:relative;height:var(--lane-h);overflow:hidden;pointer-events:none;contain:strict;background:linear-gradient(180deg,rgba(8,10,12,.5),rgba(8,10,12,.78));--fw:calc(var(--lane-h) * 1.72)}
.lane::after{content:"";position:absolute;left:0;right:0;bottom:3px;height:1px;background:linear-gradient(90deg,rgba(255,255,255,0),rgba(214,238,248,.32) 18%,rgba(214,238,248,.32) 82%,rgba(255,255,255,0))}
.lane-sky{position:absolute;left:0;right:0;bottom:4px;height:58%;opacity:.09;background-repeat:repeat-x;background-position:0 100%;background-size:auto 100%}
.lane-pos{position:absolute;left:0;top:0;bottom:3px;width:calc(100% - var(--fw));animation:laneX var(--run,16s) infinite both}
.lane-fig{position:absolute;left:0;bottom:0;width:var(--fw);height:calc(var(--lane-h) - 5px);animation:laneTurn var(--run,16s) infinite both}
.lane-fig .fx{width:100%;height:100%}
.lane .fx-lines rect{opacity:.85;transform:scaleX(1)}
.lane .fx-lines rect:nth-child(2){fill:#D6EEF8}
.lane .fx-body{animation:fxBob .32s ease-in-out infinite alternate}
.lane .fx-fan{animation:fxSpin .6s linear infinite}
.lane .fx-cape{animation:fxFlap .28s ease-in-out infinite alternate;--v:.7}
/* out and back with a short ease into each turn, then a quick about-face */
@keyframes laneX{0%{transform:translateX(0);animation-timing-function:cubic-bezier(.45,0,.55,1)}46%{transform:translateX(100%)}52%{transform:translateX(100%);animation-timing-function:cubic-bezier(.45,0,.55,1)}96%,100%{transform:translateX(0)}}
@keyframes laneTurn{0%,46%{transform:scaleX(1)}49%,96%{transform:scaleX(-1)}99%,100%{transform:scaleX(1)}}
.lane-pos{transition:opacity .4s ease}
.lane-quiet .lane-pos{opacity:.18}
.tab-off .lane *,.tab-off .breeze i,.menu-open .lane *{animation-play-state:paused!important}

/* ---------- cool air: wavy streaks drifting from the fan side across the hero and the Dash (transform/opacity only) ---------- */
.breeze{position:absolute;pointer-events:none;overflow:hidden;contain:strict}
.breeze i{position:absolute;left:0;display:block;width:clamp(220px,34vw,560px);height:18px;color:#D6EEF8;opacity:0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 30%,#000 70%,transparent);mask-image:linear-gradient(90deg,transparent,#000 30%,#000 70%,transparent);animation:breeze 11s linear infinite;will-change:transform,opacity}
.breeze svg{width:100%;height:100%;overflow:visible}
.breeze i:nth-child(1){top:8%;animation-duration:12s;animation-delay:-2s}
.breeze i:nth-child(2){top:30%;animation-duration:15s;animation-delay:-9s;height:14px}
.breeze i:nth-child(3){top:52%;animation-duration:13s;animation-delay:-5s}
.breeze i:nth-child(4){top:70%;animation-duration:17s;animation-delay:-12s;height:12px}
.breeze i:nth-child(5){top:88%;animation-duration:14s;animation-delay:-1s}
@keyframes breeze{0%{transform:translate3d(-60%,0,0);opacity:0}18%{opacity:var(--bo,.28)}75%{opacity:var(--bo,.28)}100%{transform:translate3d(calc(100vw + 10%),10px,0);opacity:0}}
.vh-air{left:0;right:0;top:calc(var(--top-h) + 4px);height:min(36vh,320px);z-index:0;--bo:.3}
.dash-air{left:0;right:0;top:0;height:clamp(150px,22vh,230px);z-index:0;--bo:.22}
.lane-air{inset:0 0 3px;--bo:.35}
.lane-air i{height:8px;width:clamp(120px,22vw,320px)}
.lane-air i:nth-child(1){top:22%}.lane-air i:nth-child(2){top:48%}.lane-air i:nth-child(3){top:70%}
.is-off .breeze i{animation-play-state:paused}

/* ---------- the cool-down dial in the Dash: outside temperature turns down to 72 as the band scrolls by ---------- */
.dash-in{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:clamp(24px,4vw,72px);align-items:end}
.dash-in>.dash-line,.dash-in>p{grid-column:1}
.cool{grid-column:2;grid-row:1/3;align-self:center;display:grid;justify-items:center;gap:16px;text-align:center;width:clamp(200px,19vw,268px)}
.cool[hidden]{display:none}
.cool-dial{position:relative;width:100%;aspect-ratio:1}
.cool-ring{position:absolute;inset:0;width:100%;height:100%}
.cool-ring line{stroke-width:2;stroke-linecap:round}
.cr-warm line{stroke:rgba(255,255,255,.22)}
.cr-cool line{stroke:#BFE6F7}
.cr-cool{opacity:var(--c,0);transition:opacity .2s linear}
.cool-knob{position:absolute;inset:0;transform:rotate(var(--a,0deg))}
.cool-knob i{position:absolute;left:50%;top:1.5%;width:12px;height:12px;margin-left:-6px;border-radius:50%;background:#fff;box-shadow:0 0 0 4px rgba(191,230,247,.22)}
.cool-n{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:900 clamp(56px,5.4vw,84px)/1 var(--display);font-stretch:112%;letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:#fff;transition:color .5s ease}
.cool-n sup{font-size:.32em;font-weight:800;letter-spacing:0;margin:-.9em 0 0 .06em}
.cool.is-cool .cool-n{color:#D6EEF8}
.cool-n::after{content:"";position:absolute;inset:22% 18%;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);opacity:0;transform:translateX(-60%);pointer-events:none;mix-blend-mode:overlay}
.cool.is-cool .cool-n::after{animation:frost 1.1s cubic-bezier(.2,.8,.2,1) .1s 1}
@keyframes frost{0%{opacity:0;transform:translateX(-60%)}30%{opacity:1}100%{opacity:0;transform:translateX(60%)}}
.cool-t{display:grid;gap:4px}
.cool-k{display:grid;font-weight:700;font-size:15.5px;color:#fff}
.cool-k>span{grid-area:1/1;transition:opacity .35s ease}
.ck-b,.ck-m{opacity:0}
.cool.is-moving .ck-a,.cool.is-cool .ck-a{opacity:0}.cool.is-moving .ck-m,.cool.is-cool .ck-b{opacity:1}
.cool-sub{font-size:14px;color:rgba(255,255,255,.62);opacity:0;transition:opacity .4s ease}
.cool.is-cool .cool-sub{opacity:1}

/* ============================================================================
   CHAT CONCIERGE (TPS / Aviadora standard: 64px FAB, peek, 360x520 panel,
   logo chip, pinned big action, 2x2 picks, human strip, 16px input)
   ========================================================================== */
.fab{position:fixed;right:22px;bottom:calc(22px + env(safe-area-inset-bottom));z-index:60;width:64px;height:64px;border-radius:50%;background:#fff;box-shadow:0 10px 30px -8px rgba(0,0,0,.4),0 0 0 1px var(--line);display:grid;place-items:center;opacity:0;transform:translateY(140%) scale(.6);transition:transform .6s cubic-bezier(.34,1.56,.64,1),opacity .4s;pointer-events:none}
.fab img{width:42px;height:42px}
.fab::before{content:"";position:absolute;inset:-1px;border-radius:50%;animation:ring 2.6s ease-out infinite}
@keyframes ring{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 40%,transparent)}70%,100%{box-shadow:0 0 0 14px transparent}}
.fab-dot{position:absolute;right:3px;top:3px;width:13px;height:13px;border-radius:50%;background:var(--online);border:2px solid #fff}
.fab:active{transform:scale(.94)}
.peek{position:fixed;right:22px;bottom:calc(98px + env(safe-area-inset-bottom));z-index:60;max-width:290px;background:var(--surface);border-radius:18px 18px 4px 18px;box-shadow:0 14px 40px -12px rgba(0,0,0,.35),0 0 0 1px var(--line);transform:translateY(140%) scale(.6);transform-origin:bottom right;opacity:0;visibility:hidden;transition:transform .6s cubic-bezier(.34,1.56,.64,1),opacity .4s,visibility 0s .6s;pointer-events:none}
.peek-body{display:flex;gap:10px;align-items:flex-start;padding:15px 40px 15px 16px;text-align:left;font-size:15px;line-height:1.45;min-height:44px}
.peek-body svg{width:22px;height:22px;color:var(--accent);flex:none;margin-top:1px}
.peek-body b{color:var(--ink);font-weight:800}
.peek-x{position:absolute;top:2px;right:2px;width:40px;height:40px;display:grid;place-items:center;color:var(--muted)}
.peek-x svg{width:15px;height:15px}
.fab-in .fab,.fab-in.peek-show .peek{transform:none;opacity:1;pointer-events:auto}
.fab-in.peek-show .peek{visibility:visible;transition:transform .6s cubic-bezier(.34,1.56,.64,1),opacity .4s,visibility 0s}
.peek-off .peek{display:none}
.chat{position:fixed;right:22px;bottom:calc(22px + env(safe-area-inset-bottom));z-index:70;width:min(360px,100vw - 32px);height:min(520px,70vh);background:var(--surface);border-radius:18px;box-shadow:0 24px 60px -16px rgba(0,0,0,.45),0 0 0 1px var(--line);display:flex;flex-direction:column;overflow:hidden;transform-origin:bottom right;opacity:0;transform:translateY(16px) scale(.96);visibility:hidden;transition:opacity .2s ease,transform .2s ease,visibility 0s .2s}
.chat.open{opacity:1;transform:none;visibility:visible;transition:opacity .3s ease,transform .34s cubic-bezier(.2,.8,.2,1)}
.chat-hd{display:flex;align-items:center;gap:12px;padding:10px 6px 10px 14px;border-bottom:1px solid var(--line)}
.chat-logo{width:38px;height:38px;border-radius:50%;background:#fff;box-shadow:0 0 0 1px var(--line);display:grid;place-items:center;flex:none;overflow:hidden}
.chat-logo img{width:32px;height:32px}
.chat-t{min-width:0;flex:1}
.chat-t b{display:block;font-weight:600;font-size:15.5px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-t small{display:block;font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.online{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--online);margin-right:6px;vertical-align:1px}
.chat-x{margin-left:auto;width:44px;min-width:44px;height:44px;border-radius:50%;display:grid;place-items:center;flex:none;color:var(--ink-2)}
.chat-x svg{width:18px;height:18px}
.chat-log{flex:1;min-height:0;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;overscroll-behavior:contain}
.chat-log>*{flex-shrink:0}
.msg{max-width:86%;padding:10px 14px;border-radius:16px;font-size:15px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;animation:msgIn .3s ease}
@keyframes msgIn{from{opacity:0;transform:translateY(6px)}}
.msg.bot{background:var(--tint);color:var(--ink);border-bottom-left-radius:6px;align-self:flex-start}
.msg.me{background:var(--ink);color:#fff;align-self:flex-end;border-bottom-right-radius:6px}
.msg.typing{color:var(--muted)}
.msg a{text-decoration:underline;text-underline-offset:2px;color:inherit}
.msg img.thumb{width:160px;border-radius:10px}
.chat-menu{padding:0 12px 10px;display:grid;gap:8px}
.chat-menu:empty{display:none}
.chat-big{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border-radius:14px;background:var(--ink);color:#fff;text-align:left;transition:transform .16s ease-out}
.chat-big:active{transform:scale(.98)}
.chat-big>svg{width:26px;height:26px;color:var(--accent-soft);flex:none}
.chat-big span{flex:1;min-width:0}
.chat-big b{display:block;font-weight:600;font-size:15.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-big small{display:block;color:rgba(255,255,255,.75);font-size:13px}
.chat-big i{width:30px;height:30px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;flex:none;font-style:normal}
.chat-big i svg{width:15px;height:15px}
.chat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.chat-grid button{min-height:44px;padding:8px 12px;border-radius:12px;box-shadow:inset 0 0 0 1px var(--line);font-size:14px;font-weight:500;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background-color .2s,transform .16s ease-out}
.chat-grid button:active{transform:scale(.97)}
@media (hover:hover){.chat-grid button:hover{background:var(--tint)}}
.chat-human{display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 14px;background:var(--tint);font-size:13.5px;color:var(--ink-2);text-decoration:none}
.chat-human svg{width:17px;height:17px;color:var(--accent);flex:none}
.chat-human b{margin-left:auto;color:var(--ink);white-space:nowrap}
.chat-form{display:flex;gap:8px;padding:10px;border-top:1px solid var(--line);align-items:center}
.chat-form input[type=text],.chat-form input[type=tel]{flex:1;min-width:0;height:44px;font:400 16px var(--sans);border:1.5px solid var(--line);border-radius:999px;padding:0 16px;background:#fff}
.chat-form input:focus{outline:none;border-color:var(--accent)}
.send,.chat-cam{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;flex:none;transition:transform .16s ease-out}
.send{background:var(--accent);color:var(--accent-ink)}
.chat-cam{box-shadow:inset 0 0 0 1.5px var(--line);color:var(--ink);cursor:pointer}
.send svg,.chat-cam svg{width:19px;height:19px}
.send:active,.chat-cam:active{transform:scale(.92)}
/* in-chat cards: contact card + photo-quote how-it-works */
.chat-card{display:grid;gap:8px;padding:14px;border-radius:14px;background:var(--surface);box-shadow:0 0 0 1px var(--line);animation:msgIn .3s ease}
.chat-card b{font-size:15px}
.chat-card input{height:44px;border:1.5px solid var(--line);border-radius:12px;padding:0 12px;font-size:16px;min-width:0;width:100%}
.chat-card .btn{min-height:44px;font-size:15px;white-space:normal}
.chat-card small{color:#b3261e;font-size:13px}
.cq-how{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;text-align:center;font-size:12.5px;line-height:1.3;color:var(--ink-2)}
.cq-how span{display:grid;place-items:center;width:36px;height:36px;margin:0 auto 6px;border-radius:50%;background:var(--accent-soft);color:var(--accent)}
.cq-how svg{width:18px;height:18px}
.cq-skip{min-height:44px;font-size:14px;color:var(--muted);text-decoration:underline}
.cq-trust{font-size:12.5px;color:var(--muted);text-align:center}

/* hide every floater while the menu is open (they must never cover the menu) */
.menu-open .fab,.menu-open .peek,.menu-open .chat{opacity:0!important;pointer-events:none!important;visibility:hidden!important}

/* ---------- motion: visible by default; one quiet reveal ---------- */
.js .reveal{opacity:0;transform:translateY(12px);transition:opacity .45s cubic-bezier(.2,.8,.2,1),transform .45s cubic-bezier(.2,.8,.2,1)}
.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .js .reveal{opacity:1;transform:none}
  .js .mask>span>span{animation:none}
  .lane-pos,.lane-fig,.lane *{animation:none!important}
  .lane-pos{transform:none!important}
  .lane .fx-lines{display:none}
  .lane .fx-body{transform:none!important}
  .breeze{display:none}
  .cool-n::after{display:none}
  .dash-pos{animation:none!important;transform:translateX(50%)!important}
  .dash-ink{animation:none!important;clip-path:none!important}
  .dash-ghost{color:transparent}
  .land{animation:none!important;opacity:1!important;transform:none!important}
  .fx-cape{transform:scaleX(.8)!important}
  .fx-lines rect{opacity:0!important}
}

/* ============================================================================
   RESPONSIVE (kept LAST)
   ========================================================================== */
@media (max-width:1240px){
  .sec-top{flex-direction:column;align-items:flex-start}
  .nav,.hc-t{display:none}
  .burger{display:block}
  .hdr-in{gap:12px}
  .hdr-act{margin-left:auto}
  .ft-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:1320px){
  .is-home:not(.past-hero) .fab,.is-home:not(.past-hero) .peek{visibility:hidden;pointer-events:none}
}
@media (max-width:1024px){
  .doors{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:min(78vw,520px);overflow-x:auto;scroll-snap-type:x mandatory;padding:0 28px;gap:10px;scrollbar-width:none}
  .doors::-webkit-scrollbar{display:none}
  .door{border-radius:16px;scroll-snap-align:start;min-height:min(70svh,640px)}
  .pw-in,.club,.work-in,.svc-main,.plan-in,.about-in,.book-in,.contact,.creds{grid-template-columns:minmax(0,1fr)}
  .creds-img{grid-column:auto;grid-row:auto}
  .club-img{min-height:56svh}
  .fcta-land .fcta-in{grid-template-columns:minmax(0,.5fr) minmax(0,1.5fr)}
  .fcta-img{display:none}
  .now{position:static}
  .timeline{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:36px}
  .timeline::before{display:none}
  .counties{grid-template-columns:repeat(2,minmax(0,1fr))}
  .offer-list{grid-template-columns:minmax(0,1fr)}
  .nums{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:32px}
}
@media (max-width:820px){
  .train-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  .links3{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .promo-social{display:none}
  .sec-top{flex-direction:column;align-items:flex-start}
  .bq{grid-template-columns:minmax(0,1fr)}
  .bq-img{display:none}
}
@media (max-width:620px){
  :root{--top-h:100px;--lane-h:40px}
  body{font-size:17px}
  .wrap,.narrow{width:calc(100% - 32px)}
  .sec,.crew,.work,.proof-wall{padding:72px 0}
  .doors-sec{padding-top:72px}
  .doors-sec .sec-h{margin-bottom:24px}
  .doors{padding:0 16px}
  .promo{display:none}
  .promo p{font-size:13px;padding:4px 0}
  .hdr-in{min-height:60px}
  .logo-svg{height:42px}
  .hdr-cta{display:none}
  .hc-ic{width:44px;height:44px}
  .cta-row{flex-direction:column;align-items:stretch}
  .cta-row .btn{width:100%;white-space:normal;text-align:center}
  /* hero: first screen = headline, Call, Book, live line, the red edge */
  .vhero{min-height:100svh}
  .vh-in{padding:calc(var(--top-h,100px) + 64px) 0 24px}
  .vhero h1{font-size:clamp(50px,18vw,84px)}
  .sec-h{font-size:clamp(28px,8.6vw,40px)}
  .vh-sub{margin-top:14px;font-size:17px}
  .vh-cta{margin-top:20px;gap:10px}
  .vh-cta .btn{min-height:54px}
  .vh-call{order:-1;background:var(--accent);color:var(--accent-ink);box-shadow:none}
  .vh-book{background:transparent;color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.75)}
  .vh-live{margin-top:14px;font-size:14.5px}
  .vh-proof{gap:0 16px;font-size:14px;margin-top:2px}
  .vh-proof>span{display:none}
  .dash-in{grid-template-columns:minmax(0,1fr)}
  .cool{grid-column:1;grid-row:auto;justify-self:start;justify-items:start;width:auto;margin-top:28px;gap:12px;text-align:left}
  .cool-dial{width:148px}
  .cool-n{font-size:40px}
  .cool-knob i{width:10px;height:10px;margin-left:-5px}
  .vh-air{height:28vh}
  .edge-in{padding:10px 0;gap:10px}
  .edge p{font-size:14.5px}
  .edge p b{font-size:18px;display:block}
  .edge .btn{min-height:46px;padding:0 18px}
  .edge-book{display:none}
  .ph{min-height:min(70svh,560px)}
  .ph-scrim{background:linear-gradient(180deg,rgba(8,10,12,.55) 0%,rgba(8,10,12,.62) 40%,rgba(8,10,12,.88) 100%)}
  .crumbs>span:last-child,.crumbs>span:nth-last-child(2){display:none}
  .ph-short{min-height:min(56svh,460px)}
  .ph-in{padding:calc(var(--top-h,100px) + 48px) 0 36px}
  .ph h1{font-size:clamp(30px,11vw,56px)}
  .ph-plain h1{font-size:clamp(32px,9vw,44px)}
  .ph-sub{font-size:17px}
  .numbers{padding:48px 0}
  .nums{gap:24px 16px}
  .nums b{font-size:clamp(48px,15vw,64px)}
  .nums span{font-size:14px}
  .nums-lic{margin-top:24px;font-size:14px}
  .lift{min-height:60svh}
  .lift-in{padding:80px 0 40px}
  .statement{font-size:clamp(44px,13vw,64px)}
  .door{min-height:62svh}
  .door-t{padding:24px 20px 22px}
  .door h3{font-size:clamp(26px,8.4vw,40px)}
  .door p{font-size:15px}
  .door li a{min-height:40px;font-size:15px}
  .dash{padding-bottom:48px}
  .dash-lane{height:120px;--fw:170px}
  .dash-line{font-size:clamp(38px,11.5vw,56px)}
  .crew-head p{font-size:16px}
  .rail{padding:24px 16px 4px}
  .rail figure{width:62vw}
  .train{margin-top:28px}
  .train-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}
  .train-row img{border-radius:6px}
  .bq blockquote{font-size:22px}
  .pw-side blockquote{font-size:16.5px}
  .pw-side blockquote,.pw-side .pw-by{display:none}
  .pw-in{gap:16px}
  .ft-grid>div:nth-child(2),.ft-grid>div:nth-child(3){display:none}
  .club-img{min-height:36svh}
  .club-t{padding:48px 16px 56px}
  .work-v video{aspect-ratio:1}
  .work-pics{display:none}
  .where{min-height:54svh}
  .where-scrim{background:linear-gradient(180deg,rgba(246,245,241,.95) 0%,rgba(246,245,241,.9) 62%,rgba(246,245,241,0) 92%)}
  .where-in{padding-bottom:140px!important}
  .where-in{padding:64px 0 40px}
  .cities{gap:0 16px}
  .cities a{font-size:26px;min-height:44px}
  .fcta{padding:72px 0}
  .fcta h2,.fcta-land h2{font-size:clamp(34px,11vw,56px)}
  .offer-list h2{font-size:clamp(24px,8vw,34px)}
  .fcta-land .fcta-in{grid-template-columns:minmax(0,1fr);gap:8px}
  .land{max-width:150px;justify-self:start}
  .signs{grid-template-columns:minmax(0,1fr);gap:28px}
  .near{padding-right:72px}
  .timeline{grid-template-columns:minmax(0,1fr);row-gap:24px}
  .pair{grid-template-columns:1fr 1fr}
  .pair img{height:48svh}
  .frow,.qf-grid{grid-template-columns:minmax(0,1fr)}
  .qf-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lead-form .btn{justify-self:stretch}
  .links3{grid-template-columns:minmax(0,1fr)}
  .rows a{grid-template-columns:auto minmax(0,1fr);gap:16px}
  .rows a>svg{display:none}
  .row-img{width:84px}
  .counties{grid-template-columns:minmax(0,1fr);gap:32px}
  .quotes{margin-top:48px}
  .film{border-radius:12px}
  .film-t span{display:none}
  .film-play{flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:10px;padding:16px}
  .film-ic{width:52px;height:52px}
  .film-t b{font-size:24px}
  .about-pics img:last-child{margin-top:24px}
  .gal{columns:2;column-gap:8px}
  .gal li{margin-bottom:8px}
  .gal-cap{display:none}
  .lb{grid-template-columns:minmax(0,1fr);padding-top:calc(72px + env(safe-area-inset-top))}
  .lb-nav{position:absolute;bottom:calc(20px + env(safe-area-inset-bottom))}
  .lb-prev{left:calc(50% - 60px)}.lb-next{right:calc(50% - 60px)}
  .lb img{max-height:calc(100dvh - 220px)}
  .ft{padding:56px 0 calc(96px + env(safe-area-inset-bottom))}
  .ft-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px 20px}
  .ft-brand{grid-column:1/-1}
  .ft-bot{flex-direction:column;align-items:flex-start;margin-top:36px}
  /* sticky Call 24/7 + Book bar: appears once the hero has scrolled away */
  .mbar{display:grid;grid-template-columns:1fr 1fr;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:55;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:var(--night);box-shadow:0 -10px 30px -12px rgba(0,0,0,.5);transform:translateY(110%);transition:transform .35s cubic-bezier(.2,.8,.2,1)}
  .past-hero .mbar{transform:none}
  .mbar a{display:flex;align-items:center;justify-content:center;gap:8px;min-height:50px;border-radius:999px;font-weight:700;font-size:16px;text-decoration:none}
  .mbar svg{width:19px;height:19px}
  .mb-call{background:var(--accent);color:var(--accent-ink)}
  .mb-book{color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.6)}
  .menu-open .mbar,.lb-open .mbar{visibility:hidden}
  .fab{right:14px;bottom:calc(80px + env(safe-area-inset-bottom));width:58px;height:58px}
  .is-home:not(.past-hero) .fab,.is-home:not(.past-hero) .peek{visibility:hidden;pointer-events:none}
  .peek{right:14px;bottom:calc(148px + env(safe-area-inset-bottom));max-width:min(270px,calc(100vw - 28px))}
  .chat{right:12px;bottom:calc(12px + env(safe-area-inset-bottom));width:min(320px,100vw - 24px);height:min(400px,max(52vh,372px))}
  .chat.kb{top:calc(var(--vvt,0px) + 8px);bottom:auto;height:calc(var(--vvh,100dvh) - 16px)}
  .chat-hd{padding:6px 4px 6px 12px}
  .chat-log{padding:12px;gap:8px}
  .chat-menu{padding:0 10px 8px;gap:6px}
  .chat-big{padding:9px 12px}
  .chat-big small{display:none}
  .chat-big>svg{width:22px;height:22px}
  .chat-grid button{min-height:36px;font-size:13.5px;padding:4px 10px}
  .chat-human{min-height:36px;padding:4px 12px;font-size:13px}
  .chat-human span{display:none}
  .chat-human b{margin-left:0}
}
@media (max-width:620px) and (max-height:760px){
  .vh-in{padding-top:calc(var(--top-h,100px) + 22px);padding-bottom:16px}
  .vhero h1{font-size:clamp(50px,15vw,64px)}
  .vh-sub{font-size:15.5px;margin-top:10px}
  .vh-cta{margin-top:14px}
  .vh-cta .btn{min-height:50px}
  .vh-live{margin-top:10px}
}
@media (max-width:380px){
  .btn{padding:0 18px}
  .logo-svg{height:38px}
  .nums b{font-size:44px}
  .edge p span{display:none}
}

/* 2026-10-22 Daniel picked Big Shoulders Display (condensed industrial caps) for all headlines */
h1,h2,h3,.statement,.sec-h,.h-sm,.vhero h1,.hc-t b,.mnav-links a,.edge p b{font-stretch:normal;letter-spacing:.01em}
.vhero h1{line-height:.95;font-size:clamp(72px,11vw,188px)}
.statement{line-height:.95;font-size:clamp(58px,8.2vw,138px)}
.sec-h{line-height:.98;font-size:clamp(40px,5.4vw,78px)}
/* 2026-10-22: Residential / Commercial tabs (Mia) */
.nav .dd{position:relative;display:inline-flex}
.nav .dd-t{display:inline-flex;align-items:center;gap:6px}
.nav .dd-c{width:12px;height:12px;opacity:.75;transition:transform .2s ease}
.nav .dd-m{position:absolute;top:100%;left:-14px;min-width:230px;padding:10px;margin-top:10px;background:#0f1520;border:1px solid rgba(255,255,255,.12);border-radius:14px;box-shadow:0 24px 48px -16px rgba(0,0,0,.6);display:grid;gap:2px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .18s ease,transform .18s ease,visibility .18s;z-index:60}
.nav .dd-m::before{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}
.nav .dd-m a{display:block;padding:10px 12px;border-radius:9px;color:#E9EEF5;font-size:15px;white-space:nowrap}
.nav .dd-m a:hover,.nav .dd-m a:focus-visible{background:rgba(54,170,230,.16);color:#fff}
.nav .dd:hover .dd-m,.nav .dd:focus-within .dd-m{opacity:1;visibility:visible;transform:none}
.nav .dd:hover .dd-c,.nav .dd:focus-within .dd-c{transform:rotate(180deg)}
.mnav-g{display:grid;gap:2px;margin-bottom:6px}
.mnav-sub{display:flex;flex-wrap:wrap;gap:8px;padding:6px 0 12px}
.mnav-sub a{font:600 15px/1 var(--body,inherit)!important;padding:11px 14px!important;border:1px solid rgba(255,255,255,.18)!important;border-radius:999px;text-transform:none;min-height:44px;display:inline-flex;align-items:center}
.vh-bbb{color:inherit;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(255,255,255,.4)}
.doors{grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:900px){.doors{grid-template-columns:none}}
.hdr{position:relative;z-index:5}.lane{z-index:1}
/* 2026-10-22 Daniel: home Residential / Commercial panels, content centered, not hugging the left */
.door{justify-content:center}
.door-t{text-align:center;width:min(100%,560px);margin:0 auto;padding:44px clamp(24px,4vw,56px) 52px}
.door p{margin-left:auto;margin-right:auto}
.door ul{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:18px}
.door li a{min-height:44px;padding:0 16px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(8,12,18,.35);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:15px}
.door li a:hover{background:rgba(54,170,230,.22);border-color:rgba(54,170,230,.6);text-decoration:none}
.door .door-tri{justify-content:center}
@media(hover:hover){.door ul,.door .door-tri{opacity:1;transform:none}}
/* ---------- REAL RUN CYCLE: 8-frame ACMAN sprite (art from the brand mark), steps(8) through one strip ----------
   Used in the top lane and The Dash. Reduced motion = frame 1, standing still. */
.spr{display:block;height:100%;aspect-ratio:187/240;background:url(/assets/img/mascot/run-strip-fan.webp) 0 0/800% 100% no-repeat;animation:sprRun .62s steps(8) infinite}
@keyframes sprRun{to{background-position:114.2857% 0}}
.lane{--fw:calc(var(--lane-h) * .82)}
.lane-fig{animation-name:laneTurn}
.dash-lane{--fw:calc(clamp(150px,22vh,230px) * .78)}
.dash-run{height:calc(100% - 6px);width:var(--fw)}
.dash-run .spr{animation-play-state:paused}
.dash-run.is-running .spr{animation-play-state:running}
.tab-off .spr,.menu-open .spr{animation-play-state:paused!important}
@media (max-width:640px){.dash-lane{--fw:94px}}
@media (prefers-reduced-motion:reduce){.spr{animation:none!important;background-position:0 0!important}}
/* ---------- GIVEAWAY FLYER: "Win a free AC tune-up" (dialog popup + /giveaway page) ---------- */
.btn-red{background:var(--red);color:#fff;box-shadow:0 12px 26px -14px rgba(224,6,19,.8)}
.btn-red:hover{background:#c40511}
.btn:active{transform:scale(.97)}
.gw{padding:0;border:0;background:transparent;max-width:min(880px,calc(100vw - 32px));width:100%;color:var(--ink);overflow:visible}
.gw::backdrop{background:rgba(8,10,12,.72);backdrop-filter:blur(3px)}
.gw[open]{animation:gwIn .32s cubic-bezier(.23,1,.32,1)}
@keyframes gwIn{from{opacity:0;transform:translateY(14px) scale(.97)}}
.gw-card{position:relative;display:grid;grid-template-columns:1fr 1.15fr;border-radius:22px;overflow:hidden;background:var(--surface);box-shadow:0 40px 90px -30px rgba(0,0,0,.7)}
.gw-x{position:absolute;top:12px;right:12px;z-index:3;width:44px;height:44px;border-radius:50%;border:0;background:rgba(18,20,23,.08);color:var(--ink);display:grid;place-items:center;cursor:pointer}
.gw-x svg{width:20px;height:20px}
.gw-art{position:relative;background:radial-gradient(120% 90% at 30% 20%,#1d3a4c 0%,var(--night) 62%);display:grid;place-items:center;min-height:340px;overflow:hidden}
.gw-art::before{content:"";position:absolute;inset:auto -10% 18% -10%;height:2px;background:linear-gradient(90deg,transparent,rgba(214,238,248,.4),transparent)}
.gw-art::after{content:"FREE";position:absolute;left:-6px;bottom:-26px;font:900 150px/1 var(--display);color:rgba(49,167,223,.12);letter-spacing:.02em}
.gw-badge{position:absolute;top:18px;left:18px;z-index:2;background:var(--red);color:#fff;font:800 12px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;padding:9px 12px;border-radius:999px}
.gw-spr{position:relative;z-index:1;height:min(230px,56%);animation-duration:.56s}
.gw-fan{display:none}
.gw-copy{padding:38px 36px 30px}
.gw-k{font:800 12px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--red);margin:0 0 10px}
.gw h2,.gw-page h1{font-family:var(--display);font-weight:900;text-transform:uppercase;font-size:clamp(40px,5vw,58px);line-height:.92;letter-spacing:.01em;margin:0 0 12px}
.gw h2 em,.gw-page h1 em{font-style:normal;color:var(--accent)}
.gw-sub{color:var(--ink-2);font-size:16px;line-height:1.5;margin:0 0 18px}
.gw-form{display:grid;gap:12px}
.gw-form .fld{display:grid;gap:5px}
.gw-form .fld label{font-size:14px}
.gw-form .fld input{min-height:48px}
.gw-go{width:100%;margin-top:4px}
.gw-fine{font-size:12.5px;color:var(--muted);margin:2px 0 0;line-height:1.45}
.gw-fine a{color:inherit}
.gw-done{padding:18px;border-radius:14px;background:var(--accent-soft)}
.gw-done .gw-k{color:var(--ink)}
.gw-done p:last-child{margin:0}
.gw-page{background:var(--paper);padding:calc(var(--top-h) + 40px) 0 56px}
.gw-page-in{display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center}
.gw-page .gw-copy{padding:0;max-width:520px}
.gw-page .gw-art{border-radius:22px;min-height:420px}
.rules ol{padding-left:20px;display:grid;gap:12px;line-height:1.6;color:var(--ink-2)}
.rules strong{color:var(--ink)}
@media (max-width:720px){
  .gw{max-width:100vw;margin:auto 0 0;max-height:100dvh}
  .gw-card{grid-template-columns:1fr;border-radius:22px 22px 0 0;max-height:calc(100dvh - 24px);overflow:auto;padding-bottom:env(safe-area-inset-bottom)}
  .gw-art{min-height:132px}
  .gw-art::after{font-size:96px;bottom:-16px}
  .gw-spr{height:112px}
  .gw-badge{top:14px;left:14px}
  .gw-x{background:rgba(255,255,255,.14);color:#fff}
  .gw-copy{padding:22px 18px 22px}
  .gw-page-in{grid-template-columns:1fr}
  .gw-page .gw-art{min-height:200px;order:-1}
}
@media (prefers-reduced-motion:reduce){.gw[open]{animation:none}}
.gw-art::before{display:none}
.gw-art::after{color:rgba(49,167,223,.08)}
.gw-spr{height:min(300px,70%);filter:drop-shadow(0 18px 18px rgba(0,0,0,.45))}
.gw-x:focus{outline:none}.gw-x:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
@media (max-width:720px){.gw-art{justify-items:end;padding-right:76px}.gw-spr{height:112px}}
.gw-card:focus{outline:none}
/* ---------- PROJECTS = THE MISSION LOG: chapters with a numbered file each, a bento of real job photos,
   clip-path wipe-in on scroll, sticky chapter bar with scroll-spy. Lightbox unchanged (data-gal / data-lb). ---------- */
.pj-hero{background:radial-gradient(90% 120% at 85% 0%,#1d3a4c 0%,var(--night) 60%);color:#fff;padding:calc(var(--top-h) + 48px) 0 64px;position:relative;overflow:hidden}
.pj-hero::after{content:"LOG";position:absolute;right:-2vw;bottom:-6vw;font:900 clamp(160px,26vw,380px)/1 var(--display);color:rgba(49,167,223,.07);pointer-events:none}
.pj-hero .crumbs,.pj-hero .crumbs a{color:rgba(255,255,255,.7)}
.pj-k{font:800 12px/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin:22px 0 12px}
.pj-hero h1{font-family:var(--display);font-weight:900;text-transform:uppercase;font-size:clamp(56px,9vw,128px);line-height:.88;letter-spacing:.005em;margin:0 0 18px}
.pj-hero h1 em{font-style:normal;color:var(--accent)}
.pj-lede{max-width:560px;color:rgba(255,255,255,.78);font-size:18px;line-height:1.55;margin:0 0 34px}
.pj-stats{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:12px 44px;position:relative;z-index:1}
.pj-stats li{display:grid;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.62)}
.pj-stats b{font:900 54px/1 var(--display);color:#fff;letter-spacing:0}
.pj-nav{position:sticky;top:var(--top-h);z-index:4;background:rgba(246,245,241,.96);border-bottom:1px solid var(--line)}
.pj-nav ol{list-style:none;margin:0;padding:10px 0;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}
.pj-nav ol::-webkit-scrollbar{display:none}
.pj-nav a{display:flex;align-items:center;gap:8px;min-height:42px;padding:0 16px;border-radius:999px;white-space:nowrap;font-weight:700;font-size:14.5px;color:var(--ink-2);text-decoration:none;transition:background-color .2s,color .2s}
.pj-nav a span{font:800 12px/1 var(--sans);color:var(--muted)}
.pj-nav a.on{background:var(--ink);color:#fff}.pj-nav a.on span{color:var(--accent)}
.pj-ch{padding:84px 0;scroll-margin-top:calc(var(--top-h) + 60px)}
.pj-dark{background:var(--night);color:#fff}
.pj-in{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:48px;align-items:start}
.pj-hd{position:sticky;top:calc(var(--top-h) + 92px)}
.pj-no{display:block;font:900 96px/.8 var(--display);color:var(--accent);margin-bottom:14px}
.pj-hd h2{font:900 clamp(38px,4vw,54px)/.92 var(--display);text-transform:uppercase;margin:0 0 14px}
.pj-hd p{color:var(--ink-2);line-height:1.6;margin:0 0 16px}
.pj-dark .pj-hd p{color:rgba(255,255,255,.72)}
.pj-ct{display:inline-block;font:800 12px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;padding:9px 12px;border-radius:999px;box-shadow:inset 0 0 0 1.5px currentColor;opacity:.7}
.pj-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:clamp(130px,13vw,210px);grid-auto-flow:dense;gap:10px}
.pj-t{grid-column:span 2}
.pj-t:nth-child(1){grid-column:span 4;grid-row:span 2}
.pj-t:nth-child(4),.pj-t:nth-child(5){grid-column:span 3}
.pj-t:nth-child(6){grid-row:span 2}
.pj-b{position:relative;display:block;width:100%;height:100%;border-radius:14px;overflow:hidden;background:#1a1d21;padding:0;border:0;cursor:zoom-in;text-align:left}
.pj-b img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.23,1,.32,1)}
.pj-b::after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(180deg,transparent,rgba(8,10,12,.82))}
.pj-cap{position:absolute;left:14px;right:14px;bottom:12px;z-index:1;color:#fff;font-size:13.5px;line-height:1.35;display:grid;gap:4px}
.pj-cap b{font:800 11px/1 var(--sans);letter-spacing:.18em;color:var(--accent)}
.pj-t:not(:nth-child(1)) .pj-cap{opacity:0;transform:translateY(6px);transition:opacity .25s,transform .25s}
.pj-t:nth-child(1) .pj-cap{font-size:16px;font-weight:600;max-width:420px}
@media (hover:hover){.pj-b:hover img{transform:scale(1.04)}.pj-b:hover .pj-cap{opacity:1;transform:none}}
.pj-b:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.pj-b:focus-visible .pj-cap{opacity:1;transform:none}
.pj-b:active{transform:scale(.985)}
@supports (animation-timeline: view()){
  .pj-t{animation:pjWipe linear both;animation-timeline:view();animation-range:entry 0% cover 28%}
  @keyframes pjWipe{from{clip-path:inset(18% 0 0 0 round 14px);opacity:.2}to{clip-path:inset(0 0 0 0 round 14px);opacity:1}}
}
@media (max-width:860px){
  .pj-in{grid-template-columns:1fr;gap:26px}
  .pj-hd{position:static}
  .pj-no{font-size:64px}
  .pj-ch{padding:56px 0}
  .pj-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:150px}
  .pj-t,.pj-t:nth-child(4),.pj-t:nth-child(5){grid-column:span 1}
  .pj-t:nth-child(1){grid-column:span 2;grid-row:span 2}
  .pj-t:nth-child(6){grid-row:span 1}
  .pj-t:not(:nth-child(1)) .pj-cap{display:none}
  .pj-stats b{font-size:42px}
}
@media (prefers-reduced-motion:reduce){.pj-t{animation:none!important}}
.pj-hero-in{display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:center;position:relative;z-index:1}
.pj-stack{position:relative;height:440px}
.pj-card{position:absolute;margin:0;width:56%;background:#fff;padding:10px 10px 34px;border-radius:6px;box-shadow:0 30px 60px -24px rgba(0,0,0,.7)}
.pj-card img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:3px;display:block}
.pj-card figcaption{position:absolute;left:12px;bottom:9px;font:800 11px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--ink)}
.pj-card-0{left:0;top:30px;transform:rotate(-7deg)}
.pj-card-1{left:22%;top:0;transform:rotate(3deg);z-index:2}
.pj-card-2{right:0;top:60px;transform:rotate(9deg)}
@media (prefers-reduced-motion:no-preference){.pj-card{animation:pjDeal .9s cubic-bezier(.23,1,.32,1) both}.pj-card-1{animation-delay:.12s}.pj-card-2{animation-delay:.24s}
@keyframes pjDeal{from{opacity:0;translate:0 40px;rotate:-4deg}}}
@media (max-width:860px){.pj-hero-in{grid-template-columns:1fr}.pj-stack{height:250px;max-width:360px}.pj-card{width:50%;padding:7px 7px 26px}}
/* QA fixes 10-22 */
.pj-ch:not(.pj-dark) .pj-no{color:var(--accent-deep)}
.pj-cap b{font-size:12.5px}
.gw h2 em{color:var(--accent-deep)}
.gw-page{background:radial-gradient(90% 120% at 85% 0%,#1d3a4c 0%,var(--night) 60%)}
.gw-page .gw-copy{background:var(--surface);border-radius:22px;padding:34px 32px 28px;max-width:540px;box-shadow:0 40px 90px -30px rgba(0,0,0,.7)}
.gw-page h1 em{color:var(--accent-deep)}
.gw-page .gw-art{background:transparent}
@media (max-width:860px){
  .pj-nav{position:static}
  .pj-nav ol{flex-wrap:wrap;overflow:visible;padding:12px 64px 12px 0}
  .gw-page .gw-copy{padding:24px 18px 22px}
  .gw-page .gw-fine{padding-right:60px}
}
/* ---------- SERVICE MAP + CITY PAGES ---------- */
.amap-wrap{position:relative}
.amap{height:clamp(380px,52vh,560px);border-radius:22px;overflow:hidden;background:#dfe9ee;box-shadow:0 30px 70px -40px rgba(0,0,0,.5);isolation:isolate}
.amap-tip{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:14px;margin:12px 0 0}
.amap-tip svg{width:16px;height:16px;flex:none;color:var(--accent-deep)}
.apin span{display:block;width:22px;height:22px;border-radius:50%;background:var(--red);box-shadow:0 0 0 4px #fff,0 6px 14px rgba(0,0,0,.35);transition:transform .15s ease-out}
.apin:hover span,.apin:focus span{transform:scale(1.18)}
.apin-on span{background:var(--accent-deep);animation:apulse 1.8s ease-out infinite}
@keyframes apulse{0%{box-shadow:0 0 0 4px #fff,0 0 0 4px rgba(49,167,223,.6)}100%{box-shadow:0 0 0 4px #fff,0 0 0 22px rgba(49,167,223,0)}}
.atip{font:700 13px/1.2 var(--sans);border-radius:8px;padding:6px 9px}
.apop .leaflet-popup-content{font:14px/1.45 var(--sans);margin:12px 14px}
.apop a{color:var(--accent-deep);font-weight:700}
.amap-sec .counties{margin-top:44px}
.county ul{list-style:none;padding:0;margin:0;display:grid;gap:4px}
.county a{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:46px;padding:0 4px;border-bottom:1px solid var(--line);font-weight:700;color:var(--ink);text-decoration:none}
.county a svg{width:16px;height:16px;transition:transform .2s ease-out}
.county a:hover svg{transform:translateX(3px)}
.city-hero{background:radial-gradient(90% 120% at 85% 0%,#1d3a4c 0%,var(--night) 60%);color:#fff;padding:calc(var(--top-h) + 40px) 0 60px}
.city-hero .crumbs,.city-hero .crumbs a{color:rgba(255,255,255,.7)}
.city-hero-in{display:grid;grid-template-columns:1.05fr .95fr;gap:44px;align-items:center}
.city-hero h1{font:900 clamp(44px,6vw,80px)/.92 var(--display);text-transform:uppercase;margin:0 0 16px}
.city-hero h1 em{font-style:normal;color:var(--accent)}
.city-lede{color:rgba(255,255,255,.8);font-size:18px;line-height:1.55;max-width:560px;margin:0 0 24px}
.city-hero .amap{height:clamp(320px,44vh,460px)}
.city-hero .amap-tip{color:rgba(255,255,255,.66)}
.city-hero .amap-tip svg{color:var(--accent)}
.city-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:48px;align-items:start}
.city-facts{list-style:none;padding:0;margin:0 0 20px;display:grid;gap:14px}
.city-facts li{padding:18px 20px;border-radius:16px;background:var(--surface);box-shadow:inset 0 0 0 1px var(--line)}
.city-facts p{margin:0 0 6px;font-size:17px;line-height:1.55;color:var(--ink)}
.city-facts a{font-size:13px;color:var(--muted)}
.city-acman{background:var(--accent-soft)!important;box-shadow:none!important}
.city-acman p{font-weight:700;margin:0!important}
.city-svcs{padding:24px;border-radius:18px;background:var(--night);color:#fff;position:sticky;top:calc(var(--top-h) + 20px)}
.city-svcs h3{font:900 24px/1 var(--display);text-transform:uppercase;margin:0 0 8px;color:var(--accent)}
.city-svcs h3:not(:first-child){margin-top:20px}
.city-svcs ul{list-style:none;padding:0;margin:0}
.city-svcs a{display:flex;justify-content:space-between;align-items:center;min-height:42px;color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.12);font-weight:600}
.city-svcs a svg{width:15px;height:15px}
.near-list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:10px}
.near-list a{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:0 18px;border-radius:999px;box-shadow:inset 0 0 0 1.5px var(--line);font-weight:700;color:var(--ink);text-decoration:none}
.near-list a svg{width:15px;height:15px}
.rating-n{margin-left:6px;opacity:.8;font-weight:500}
@media (max-width:860px){
  .city-hero-in,.city-grid{grid-template-columns:1fr}
  .city-svcs{position:static}
  .amap,.city-hero .amap{height:340px}
}
.amap .leaflet-tile-pane{filter:saturate(.3) brightness(1.04) contrast(.98)}
.amap .leaflet-control-zoom a{width:44px;height:44px;line-height:44px;font-size:22px}
.vh-proof a,.vh-proof .vh-bbb{display:inline-flex;align-items:center;min-height:28px;padding:2px 0}
.vh-proof{column-gap:14px}
.city-facts a{display:inline-flex;align-items:center;min-height:40px}
/* ---------- PHONE TOP BLEND (Madison Social look, 10-23): on phones nothing is pinned to the top, so the page
   runs up under the clock. The header scrolls away with the page; Menu lives in the bottom bar. While the menu is
   open the header comes back fixed so the X is always there. See ~/truenorth-website-system/PHONE-TOP-BLEND.md */
@media (max-width:620px){
  .topstack{position:absolute;background-color:transparent;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
  .scrolled .topstack{background-color:transparent}
  .topstack::before{display:none}
  .menu-open .topstack{position:fixed;background:var(--night)}
  .mbar{grid-template-columns:1fr 1fr 52px}
  .mb-menu{display:grid;place-content:center;gap:5px;min-height:52px;border-radius:999px;background:rgba(255,255,255,.1);border:0}
  .mb-menu span{display:block;width:20px;height:2px;border-radius:2px;background:#fff}
}
/* status-bar cap (Daniel 10-23): solid ACMAN dark behind the clock on phones instead of white over light sections */
.safetop{display:none}
@media (max-width:620px){.safetop{display:block;position:fixed;top:0;left:0;right:0;height:env(safe-area-inset-top);background:var(--night);z-index:60;pointer-events:none}}
/* top-of-page color before scrolling (Daniel 10-23): Safari takes the page's base color, so the base is ACMAN dark
   and the cream lives on <main>. Footer is already dark. */
body{background:var(--night)}
main{background:var(--paper);display:block}

/* giveaway teaser banner (slides in, opens the flyer) */
.gwt{position:fixed;left:22px;bottom:calc(22px + env(safe-area-inset-bottom));z-index:58;display:flex;align-items:center;max-width:430px;background:var(--night);color:#fff;border-radius:18px;box-shadow:0 22px 50px -18px rgba(0,0,0,.65),0 0 0 1px rgba(255,255,255,.08);transform:translateX(calc(-100% - 40px));opacity:0;transition:transform .7s cubic-bezier(.34,1.4,.64,1),opacity .35s}
.gwt.in{transform:none;opacity:1}
.gwt[hidden]{display:none}
.gwt-go{all:unset;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:12px;padding:10px 6px 10px 12px;flex:1;min-width:0;min-height:64px;border-radius:18px}
.gwt-go:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.gwt-run{position:relative;flex:none;width:52px;height:56px;border-radius:12px;background:radial-gradient(90% 90% at 40% 30%,#1d3a4c,#0a0c0e);display:grid;place-items:center;overflow:hidden}
.gwt-run .spr{height:50px;animation-duration:.5s}
.gwt-t{display:grid;gap:2px;min-width:0}
.gwt-t b{font:900 19px/1.05 var(--display);text-transform:uppercase;letter-spacing:.02em}
.gwt-t span{font-size:13px;line-height:1.3;color:rgba(255,255,255,.78)}
.gwt-cta{flex:none;background:var(--red);color:#fff;font:800 13px/1 var(--sans);letter-spacing:.08em;text-transform:uppercase;padding:11px 14px;border-radius:999px;position:relative;overflow:hidden}
.gwt-cta::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.45) 50%,transparent 70%);transform:translateX(-120%);animation:gwtShine 3.2s 1.2s ease-in-out infinite}
@keyframes gwtShine{0%,60%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
.gwt-go:active .gwt-cta{transform:scale(.96)}
.gwt-x{flex:none;width:44px;height:44px;margin-right:6px;border:0;border-radius:50%;background:transparent;color:rgba(255,255,255,.7);display:grid;place-items:center;cursor:pointer}
.gwt-x svg{width:18px;height:18px}
.gwt-x:focus-visible{outline:3px solid var(--accent)}
.menu-open .gwt,.lb-open .gwt{visibility:hidden}
@media (max-width:620px){
  .gwt{left:10px;right:82px;max-width:none;bottom:calc(84px + env(safe-area-inset-bottom));border-radius:16px}
  .gwt-go{gap:9px;padding:8px 2px 8px 8px;min-height:58px}
  .gwt-run{width:42px;height:46px}.gwt-run .spr{height:40px}
  .gwt-t b{font-size:16px}.gwt-t span{font-size:12px}
  .gwt-cta{display:none}
  .gwt-x{width:40px;height:44px;margin-right:2px}
}
@media (prefers-reduced-motion:reduce){.gwt{transition:opacity .2s}.gwt-cta::after{animation:none}}
@media (max-width:620px){body:has(.chat.open) .gwt{visibility:hidden}}

/* flyer: centered pop-up with a choreographed entrance (card springs in, ACMAN runs in, copy lands in order) */
.gw[open]{animation:gwPop .62s cubic-bezier(.34,1.42,.64,1)}
@keyframes gwPop{0%{opacity:0;transform:translateY(34px) scale(.86)}55%{opacity:1}}
.gw[open]::backdrop{background:radial-gradient(80% 70% at 50% 45%,rgba(29,58,76,.55),rgba(6,8,10,.86));backdrop-filter:blur(6px);animation:gwBd .45s ease-out}
@keyframes gwBd{from{opacity:0}}
.gw.gw-out{animation:gwOut .23s cubic-bezier(.4,0,1,1) forwards}
.gw.gw-out::backdrop{animation:gwBdOut .23s forwards}
@keyframes gwOut{to{opacity:0;transform:translateY(16px) scale(.95)}}
@keyframes gwBdOut{to{opacity:0}}
.gw .gw-art{isolation:isolate}
.gw .gw-art::before{display:block;content:"";position:absolute;inset:auto;left:50%;top:50%;width:170%;aspect-ratio:1;height:auto;translate:-50% -50%;border-radius:50%;z-index:0;background:repeating-conic-gradient(from 0deg,rgba(49,167,223,.16) 0 9deg,transparent 9deg 18deg);-webkit-mask:radial-gradient(closest-side,#000 15%,transparent 72%);mask:radial-gradient(closest-side,#000 15%,transparent 72%);animation:gwSpin 36s linear infinite}
@keyframes gwSpin{to{rotate:360deg}}
.gw[open] .gw-spr{animation:sprRun .56s steps(8) infinite,gwRunIn .95s .12s cubic-bezier(.23,1,.32,1) both}
@keyframes gwRunIn{from{transform:translateX(-190%)}}
.gw[open] .gw-art::after{animation:gwFree .9s .2s cubic-bezier(.23,1,.32,1) both}
@keyframes gwFree{from{opacity:0;transform:translateY(40%)}}
.gw[open] .gw-badge{animation:gwBadge .55s .5s cubic-bezier(.34,1.56,.64,1) both}
@keyframes gwBadge{from{opacity:0;transform:scale(.5) rotate(-8deg)}}
.gw[open] .gw-copy>*{animation:gwUp .55s cubic-bezier(.23,1,.32,1) both}
.gw[open] .gw-copy>:nth-child(1){animation-delay:.18s}
.gw[open] .gw-copy>:nth-child(2){animation-delay:.25s}
.gw[open] .gw-copy>:nth-child(3){animation-delay:.32s}
.gw[open] .gw-copy>:nth-child(4){animation-delay:.39s}
@keyframes gwUp{from{opacity:0;transform:translateY(14px)}}
.gw-go{position:relative;overflow:hidden}
.gw-go::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 35%,rgba(255,255,255,.35) 50%,transparent 65%);transform:translateX(-120%);animation:gwtShine 3.4s 1.4s ease-in-out infinite;pointer-events:none}
@media (max-width:720px){
  .gw{max-width:calc(100vw - 24px);margin:auto;max-height:calc(100dvh - 24px)}
  .gw-card{border-radius:24px;max-height:calc(100dvh - 32px);padding-bottom:0}
  .gw-art{min-height:150px;justify-items:center;padding-right:0}
  .gw-spr{height:128px}
  .gw-copy{padding:20px 18px 18px}
  .gw h2{font-size:38px;margin-bottom:8px}
  .gw-sub{font-size:15px;margin-bottom:14px}
  .gw-form{gap:10px}
  .gw-form .fld input{min-height:46px}
  .gw-x{background:rgba(255,255,255,.16);color:#fff}
}
@media (prefers-reduced-motion:reduce){.gw[open],.gw[open]::backdrop,.gw.gw-out,.gw[open] .gw-badge,.gw[open] .gw-copy>*,.gw[open] .gw-art::after,.gw .gw-art::before,.gw-go::after{animation:none!important}}
@media (max-width:720px){.gw .gw-art{justify-items:end;padding-right:72px}.gw .gw-spr{height:118px;margin-top:22px}}

/* Jobber embedded booking form on /book */
.jb-sec{scroll-margin-top:calc(var(--top-h) + 12px)}
.jb-box{background:#fff;border-radius:22px;box-shadow:0 0 0 1px var(--line),0 30px 60px -30px rgba(0,0,0,.25);padding:clamp(8px,2vw,22px);min-height:420px}
.jb-box iframe{width:100%!important;border:0}
.jb-wait{color:var(--muted);text-align:center;padding:40px 16px;margin:0}
.jb-wait a{color:var(--accent-deep)}
.jb-box:has(iframe){min-height:0}

/* booking inside the chat (Jobber form over the chat, Madison Social pattern) */
.cb-card{display:grid;gap:6px;background:var(--night);color:#fff;border-radius:14px;padding:14px}
.cb-card b{font:900 18px/1.05 var(--display);text-transform:uppercase;letter-spacing:.02em}
.cb-card small{color:rgba(255,255,255,.75);font-size:13px;line-height:1.35}
.cb-go{all:unset;box-sizing:border-box;cursor:pointer;margin-top:6px;display:flex;align-items:center;justify-content:center;gap:8px;min-height:46px;border-radius:999px;background:var(--accent);color:var(--night);font:800 15px/1 var(--sans);transition:transform .16s ease-out}
.cb-go svg{width:18px;height:18px}
.cb-go:active{transform:scale(.97)}
.cb-go:focus-visible{outline:3px solid #fff;outline-offset:2px}
.cb-call{color:rgba(255,255,255,.85);font-size:13px;text-align:center;padding:6px 0 0;min-height:24px}
.msg.has-card{background:transparent;padding:0;max-width:100%}
.cbz{position:absolute;inset:0;z-index:5;background:var(--surface);display:flex;flex-direction:column;transform:translateX(100%);visibility:hidden;transition:transform .32s cubic-bezier(.32,.72,0,1),visibility 0s .32s}
.cbz-on .cbz{transform:none;visibility:visible;transition:transform .32s cubic-bezier(.32,.72,0,1),visibility 0s}
.cbz-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;background:var(--night);color:#fff}
.cbz-back{all:unset;cursor:pointer;display:flex;align-items:center;gap:8px;min-height:44px;padding:0 10px;font:700 14px/1 var(--sans);border-radius:10px}
.cbz-back::before{content:"";width:9px;height:9px;border-left:2.5px solid currentColor;border-bottom:2.5px solid currentColor;transform:rotate(45deg)}
.cbz-back:focus-visible,.cbz-out:focus-visible{outline:3px solid var(--accent)}
.cbz-out{color:rgba(255,255,255,.8);font-size:13px;min-height:44px;display:flex;align-items:center;padding:0 10px}
.cbz-sc{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;padding:6px 4px}
.cbz-sc iframe{width:100%!important;border:0}
.cbz-wait{color:var(--muted);text-align:center;padding:40px 16px;font-size:14px}
.cbz-wait a{color:var(--accent-deep)}
@media (min-width:621px){.chat.cbz-on{width:min(480px,calc(100vw - 32px));height:min(720px,86vh)}}
@media (prefers-reduced-motion:reduce){.cbz,.cbz-on .cbz{transition:none}}

/* booking pop-up (Jobber form in a centered card, same entrance as the giveaway) */
.bk{padding:0;border:0;background:transparent;width:min(560px,calc(100vw - 24px));max-width:none;max-height:calc(100dvh - 24px);margin:auto;color:var(--ink);overflow:visible}
.bk::backdrop{background:radial-gradient(80% 70% at 50% 45%,rgba(29,58,76,.55),rgba(6,8,10,.86));backdrop-filter:blur(6px)}
.bk[open]{animation:gwPop .6s cubic-bezier(.34,1.42,.64,1)}
.bk[open]::backdrop{animation:gwBd .4s ease-out}
.bk.bk-out{animation:gwOut .23s cubic-bezier(.4,0,1,1) forwards}
.bk.bk-out::backdrop{animation:gwBdOut .23s forwards}
.bk-card{display:flex;flex-direction:column;max-height:calc(100dvh - 24px);background:var(--surface);border-radius:24px;overflow:hidden;box-shadow:0 40px 90px -30px rgba(0,0,0,.7)}
.bk-card:focus{outline:none}
.bk-hd{display:flex;align-items:center;gap:12px;padding:12px 10px 12px 14px;background:radial-gradient(120% 140% at 15% 0%,#1d3a4c 0%,var(--night) 65%);color:#fff}
.bk-run{flex:none;width:46px;height:52px;display:grid;place-items:center}
.bk-run .spr{height:48px;animation-duration:.5s}
.bk[open] .bk-run .spr{animation:sprRun .5s steps(8) infinite,gwRunIn .8s .1s cubic-bezier(.23,1,.32,1) both}
.bk-k{margin:0;font:800 12px/1 var(--sans);letter-spacing:.2em;color:var(--accent)}
.bk h2{margin:4px 0 0;font:900 28px/1 var(--display);text-transform:uppercase;letter-spacing:.01em}
.bk-hd>div{flex:1;min-width:0}
.bk-x{flex:none;width:44px;height:44px;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;display:grid;place-items:center;cursor:pointer}
.bk-x svg{width:20px;height:20px}
.bk-x:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.bk-sc{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:14px 12px 16px}
.bk-note{margin:0 4px 10px;font-size:14px;line-height:1.45;color:var(--ink-2)}
.bk-note a{color:var(--accent-deep);white-space:nowrap}
.bk-sc iframe{width:100%!important;border:0}
.bk-wait{color:var(--muted);text-align:center;padding:60px 16px;margin:0;font-size:15px}
.bk-wait a{color:var(--accent-deep)}
@media (prefers-reduced-motion:reduce){.bk[open],.bk[open]::backdrop,.bk.bk-out,.bk.bk-out::backdrop{animation:none}}

/* Book is the main button everywhere (phones included) */
@media (max-width:620px){
  .vh-call{order:0;background:transparent;color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.75)}
  .vh-book{background:var(--accent);color:var(--accent-ink);box-shadow:none}
  .mb-book{background:var(--accent);color:var(--accent-ink);box-shadow:none}
  .mb-call{background:transparent;color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.6)}
}
.is-book .jb-sec{padding-top:40px}

/* photo quote: one-tap camera like Total Pool Service (2026-10-23) */
.chat-grid .cg-cam{display:flex;align-items:center;gap:7px;min-height:44px;padding:8px 12px;border-radius:12px;background:var(--accent-soft);color:var(--ink);font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap;overflow:hidden;transition:transform .16s ease-out}
.chat-grid .cg-cam svg{width:18px;height:18px;flex:none;color:var(--accent)}
.chat-grid .cg-cam:active{transform:scale(.97)}
.cq-how>div{display:block}
.chat-card .cq-photo{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:48px;cursor:pointer;font-size:15.5px}
.chat-card .cq-photo svg{width:20px;height:20px;flex:none}
.cq-or{font-size:13px;color:var(--muted);margin-top:2px}
.cq-probs{display:flex;flex-wrap:wrap;gap:6px}
.cq-prob{min-height:40px;padding:7px 13px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--line);background:#fff;font-size:13.5px;font-weight:500;color:var(--ink);transition:transform .16s ease-out,background-color .2s}
.cq-prob:active{transform:scale(.96)}
@media (hover:hover){.cq-prob:hover{background:var(--tint)}}

/* booking pop-up: skeleton until Jobber's form has drawn (iPhone takes a few seconds) */
.bk-wait{padding:6px 4px 14px;text-align:center}
.bk-wait p{margin:14px 0 0;color:var(--muted);font-size:14.5px}
.bk-sk{display:block;height:46px;margin:0 0 10px;border-radius:12px;background:linear-gradient(90deg,#eef1f4 0%,#f8f9fb 45%,#eef1f4 90%);background-size:220% 100%;animation:bkSk 1.1s linear infinite}
.bk-sk.s{width:55%;height:46px;margin:6px auto 0;border-radius:999px}
@keyframes bkSk{from{background-position:120% 0}to{background-position:-100% 0}}
@media (prefers-reduced-motion:reduce){.bk-sk{animation:none}}
.bk:not(.bk-ready) .bk-sc iframe{min-height:0}

/* ---------- PHONE BAR THAT BLENDS (Daniel 10-23, recipe B in PHONE-TOP-BLEND.md): the header stays pinned on phones,
   fully opaque ACMAN dark from the clock down, so Safari's status bar and the header read as one piece. No hard
   bottom line: a soft fade into the page. Once scrolled, the promo line and the runner lane fold away so the bar is slim. */
@media (max-width:620px){
  .topstack{position:fixed;background:var(--night)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
  .topstack::after{content:"";position:absolute;left:0;right:0;top:100%;height:18px;background:linear-gradient(var(--night),rgba(13,15,18,0));pointer-events:none;opacity:0;transition:opacity .3s}
  .scrolled .topstack::after{opacity:1}
  .topstack .promo,.topstack .lane{transition:margin-top .32s cubic-bezier(.2,.8,.2,1),opacity .2s}
  .scrolled .topstack .promo{margin-top:calc(-1 * var(--promo-h,34px));opacity:0}
  .scrolled .hdr-in{min-height:60px}
  .hdr-in{transition:min-height .3s cubic-bezier(.2,.8,.2,1)}
  .safetop{display:none}
}

/* phone bar keeps the header pinned, so the bottom bar drops its menu button (Daniel 10-23) */
@media (max-width:620px){.mbar{grid-template-columns:1fr 1fr}.mb-menu{display:none!important}}
/* menu: Residential / Commercial fold open on tap instead of listing every service */
.mnav-g{display:block;margin:0;border-bottom:1px solid rgba(255,255,255,.12)}
.mnav-g summary{display:flex;align-items:center;justify-content:space-between;list-style:none;cursor:pointer;font:850 clamp(22px,6vw,28px)/1.15 var(--display);letter-spacing:.01em;padding:10px 0;min-height:48px;-webkit-tap-highlight-color:transparent}
.mnav-g summary::-webkit-details-marker{display:none}
.mnav-chev{width:22px;height:22px;flex:none;opacity:.75;transition:transform .25s cubic-bezier(.2,.8,.2,1)}
.mnav-g[open] .mnav-chev{transform:rotate(180deg)}
.mnav-g[open] summary{color:var(--accent)}
.mnav-g[open] .mnav-sub{animation:mnavIn .25s cubic-bezier(.2,.8,.2,1)}
@keyframes mnavIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.mnav-sub a.mnav-all{border-color:var(--accent)!important;color:var(--accent)}
@media (prefers-reduced-motion:reduce){.mnav-chev{transition:none}.mnav-g[open] .mnav-sub{animation:none}}

/* booking pop-up preload (10-23 fix): while closed, the dialog stays laid out at its real width but off-screen and
   invisible, so Jobber's form measures its true height before anyone taps (drawn inside display:none it reported 40px
   and iPhone Safari kept it as a sliver). */
.bk.bk-pre:not([open]){display:block;position:fixed;top:0;left:12px;margin:0;opacity:0;z-index:-1;pointer-events:none;animation:none}

/* home hero = pro still of the fleet (Mia 10-23: the drone video is old). Slow settle-in, no loop. */
.vh-media .vh-photo{object-position:58% 50%;animation:vhIn 1.6s cubic-bezier(.2,.8,.2,1) both}
@keyframes vhIn{from{transform:scale(1.06);opacity:.4}to{transform:none;opacity:1}}
@media (max-width:620px){.vh-media .vh-photo{object-position:50% 40%}}
@media (prefers-reduced-motion:reduce){.vh-media .vh-photo{animation:none}}
.is-home .vh-scrim{background:linear-gradient(90deg,rgba(8,10,12,.88) 0%,rgba(8,10,12,.72) 30%,rgba(8,10,12,.25) 52%,rgba(8,10,12,0) 66%),linear-gradient(0deg,rgba(8,10,12,.7) 0%,rgba(8,10,12,0) 30%),linear-gradient(180deg,rgba(8,10,12,.5) 0%,rgba(8,10,12,0) 22%)}
@media (max-width:620px){
  .vh-media .vh-photo{object-position:50% 0%}
  .is-home .vh-scrim{background:linear-gradient(180deg,rgba(8,10,12,.35) 0%,rgba(8,10,12,0) 16%,rgba(8,10,12,0) 26%,rgba(8,10,12,.62) 38%,rgba(8,10,12,.86) 52%,rgba(8,10,12,.92) 100%)}
}
/* keep the tech clear of the headline: tablets show him beside the text, wide screens slide the photo right a touch */
@media (min-width:621px) and (max-width:1100px){.vh-media .vh-photo{object-position:38% 50%}}
@media (min-width:1101px){.vh-media .vh-photo{object-position:50% 60%}}

/* home "Where we run." = one region (Mia 10-23: Naples & SWFL) */
.where-p{font:900 clamp(34px,6vw,64px)/.95 var(--display);text-transform:uppercase;letter-spacing:.01em;margin:10px 0 18px}
.where-a{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;border-radius:999px;background:var(--night);color:#fff;font-weight:700;text-decoration:none}
.where-a svg{width:16px;height:16px}

/* phone hero (Daniel 10-23: the van looked too zoomed): the whole street photo as a wide band under the header,
   headline below it on ACMAN dark. No crop-in on the van. */
@media (max-width:620px){
  .vhero{display:block;min-height:0}
  .vh-media{position:relative;inset:auto;z-index:0;margin-top:var(--top-h,100px);aspect-ratio:16/10}
  .vh-media::after{content:"";position:absolute;inset:auto 0 0 0;height:38%;background:linear-gradient(180deg,rgba(13,15,18,0),var(--night));pointer-events:none}
  .vh-media .vh-photo{object-position:50% 50%;animation-duration:1.2s}
  .is-home .vh-scrim{display:none}
  .vh-in{padding-top:6px;padding-bottom:28px}
  .vh-air{display:none}
}
/* phone hero band: cover the last pixel row of the photo (sub-pixel seam above the headline, Daniel 10-23) */
@media (max-width:620px){
  .vh-media{overflow:hidden;margin-bottom:-2px}
  .vh-media::after{bottom:-2px;height:calc(40% + 2px);background:linear-gradient(180deg,rgba(13,15,18,0) 0%,var(--night) 82%,var(--night) 100%)}
}

/* home "Where we run" map (Daniel 10-23) */
.rmap-wrap{margin-top:28px;max-width:980px}
.rmap-wrap .amap{height:clamp(320px,46vh,480px)}
.where .amap-tip{color:var(--ink-2)}
@media (max-width:620px){.rmap-wrap .amap{height:320px}.where-in{padding-bottom:48px!important}}
.where .amap-tip{display:inline-flex;margin-top:14px;padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.92);color:var(--ink);font-weight:600;box-shadow:0 8px 20px -14px rgba(0,0,0,.5)}
@media (min-width:621px){.where-in{padding-bottom:84px}}

/* ---- chat: "How can we help?" guided flow (Mia's concept, 2026-10-23) ---- */
.hw-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.hw-svc{display:grid;gap:2px;align-content:start;text-align:left;padding:11px 12px;border-radius:14px;background:var(--surface);box-shadow:inset 0 0 0 1px var(--line);color:var(--ink);transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .2s,box-shadow .2s}
.hw-svc span{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--accent-soft);color:var(--accent);margin-bottom:6px}
.hw-svc svg{width:18px;height:18px}
.hw-svc b{font-size:14.5px;font-weight:650;line-height:1.2}
.hw-svc small{font-size:12.5px;line-height:1.3;color:var(--muted)}
.hw-svc:active{transform:scale(.97)}
.hw-svc.on{box-shadow:inset 0 0 0 2px var(--accent);background:var(--tint)}
.hw-svc:disabled:not(.on){opacity:.55}
@media (hover:hover){.hw-svc:not(:disabled):hover{background:var(--tint)}}
.hw-step{display:grid;gap:6px;padding:14px;border-radius:14px;background:var(--surface);box-shadow:0 0 0 1px var(--line);white-space:normal}
.hw-q{font-weight:650;font-size:15px;line-height:1.3;margin-bottom:2px}
.hw-tip{font-size:13.5px;line-height:1.4;padding:9px 11px;border-radius:10px;background:var(--accent-soft);color:var(--ink)}
.hw-list{display:grid;gap:2px}
.hw-list button{display:flex;align-items:center;gap:10px;min-height:42px;padding:6px 8px;border-radius:10px;text-align:left;font-size:14.5px;line-height:1.3;color:var(--ink);transition:background-color .2s,transform .16s cubic-bezier(.23,1,.32,1)}
.hw-list button i{width:20px;height:20px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--line);flex:none;transition:box-shadow .2s}
.hw-list button.on i{box-shadow:inset 0 0 0 6px var(--ink)}
.hw-list button:active{transform:scale(.98)}
.hw-list button:disabled:not(.on){opacity:.45}
@media (hover:hover){.hw-list button:not(:disabled):hover{background:var(--tint)}}
.hw-sum{font-size:12.5px;color:var(--muted);line-height:1.35}
.hw-go,.hw-alt{display:flex;align-items:center;justify-content:center;gap:8px;min-height:46px;border-radius:999px;font-size:15px;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.hw-go{background:var(--ink);color:#fff}
.hw-alt{box-shadow:inset 0 0 0 1.5px var(--line);color:var(--ink);background:#fff}
.hw-go svg,.hw-alt svg{width:18px;height:18px;flex:none}
.hw-go:active,.hw-alt:active{transform:scale(.97)}
.hw-call{display:block;text-align:center;font-size:13.5px;font-weight:600;color:var(--accent);padding:6px 0;text-decoration:underline;text-underline-offset:3px}
.hw-photo{display:flex;align-items:center;gap:8px;min-height:44px;padding:8px 14px;border-radius:999px;background:var(--accent-soft);color:var(--ink);font-size:14px;font-weight:600;cursor:pointer;width:max-content;max-width:100%}
.hw-photo svg{width:18px;height:18px;color:var(--accent);flex:none}
.hw-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.hw-book,.hw-cam{display:flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:6px 10px;border-radius:12px;font-size:14px;font-weight:600;white-space:nowrap;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.hw-book{background:var(--ink);color:#fff}
.hw-cam{background:var(--accent-soft);color:var(--ink)}
.hw-book svg,.hw-cam svg{width:18px;height:18px;flex:none}
.hw-book svg{color:var(--accent-soft)}.hw-cam svg{color:var(--accent)}
.hw-book:active,.hw-cam:active{transform:scale(.97)}
@media (max-width:620px){
  .chat{width:min(360px,100vw - 24px);height:min(560px,max(66vh,420px))}
  .hw-svc{padding:9px 10px}
  .hw-svc span{width:28px;height:28px;margin-bottom:4px}
  .hw-svc b{font-size:14px}
  .hw-svc small{font-size:12px}
  .hw-book,.hw-cam{min-height:40px;font-size:13.5px}
}
.msg.hw-msg{align-self:stretch;width:100%}
.chat-new{margin-left:auto;display:flex;align-items:center;gap:5px;height:34px;padding:0 11px;border-radius:999px;font-size:12.5px;font-weight:600;color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--line);white-space:nowrap;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .2s}
.chat-new svg{width:14px;height:14px;flex:none}
.chat-new:active{transform:scale(.96)}
@media (hover:hover){.chat-new:hover{background:var(--tint)}}
.chat-new+.chat-x{margin-left:0}
/* review quote without a photo: rating + trust panel fills the right column */
.bq:has(.bq-side){grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);align-items:center}
.bq-side{padding:clamp(22px,2.4vw,34px);border-radius:18px;background:var(--surface);box-shadow:0 0 0 1px var(--line);display:grid;gap:14px}
.bq-score{display:flex;align-items:center;gap:12px}
.bq-score b{font:900 clamp(44px,4vw,60px)/1 var(--display);color:var(--ink)}
.bq-score .stars{display:inline-flex;gap:3px;color:#F5B301}
.bq-score .stars svg{width:22px;height:22px}
.bq-n{color:var(--ink-2);line-height:1.45}
.bq-facts{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.bq-facts li{display:flex;gap:9px;align-items:flex-start;font-weight:600;font-size:15px}
.bq-facts svg{width:18px;height:18px;flex:none;color:var(--accent);margin-top:2px}
.bq-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:600;color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.bq-link svg{width:18px;height:18px;flex:none}
@media (max-width:900px){.bq:has(.bq-side){grid-template-columns:minmax(0,1fr)}}

/* ---- home order from the 10-24 call: residential first, luxury for builders, then commercial ---- */
.lift-k,.lux-k{font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin-bottom:10px}
.lift-k{color:var(--accent-soft)}
.lux{background:var(--night);color:#fff;padding:clamp(64px,8vw,120px) 0}
.lux-in{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(28px,5vw,80px);align-items:center}
.lux-img{margin:0;border-radius:18px;overflow:hidden}
.lux-img img{width:100%;aspect-ratio:4/5;object-fit:cover;display:block}
.lux-k{color:var(--accent)}
.lux .sec-h{color:#fff}
.lux-t>p:not(.lux-k){color:rgba(255,255,255,.82);font-size:17px;line-height:1.6;max-width:56ch;margin-top:14px}
.lux-list{list-style:none;padding:0;margin:22px 0 28px;display:grid;gap:10px}
.lux-list li{display:flex;gap:10px;align-items:flex-start;font-weight:600}
.lux-list svg{width:20px;height:20px;flex:none;color:var(--accent);margin-top:2px}
.lux .btn-ghost{color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.6)}
@media (max-width:860px){.lux-in{grid-template-columns:minmax(0,1fr)}.lux-img img{aspect-ratio:4/3}}
/* BBB seal */
.bbb-seal{display:inline-flex;align-items:center;gap:8px;min-height:44px;text-decoration:none;color:#fff;font-weight:700}
.bbb-seal img{width:150px;height:auto;display:block}
.ft .bbb-seal{margin:6px 0 4px}
/* crew + training photos open big */
.zoomable{cursor:zoom-in;transition:transform .2s cubic-bezier(.23,1,.32,1),filter .2s}
@media (hover:hover){.zoomable:hover{filter:brightness(1.06)}}
.zoomable:active{transform:scale(.98)}
.zoomable:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
/* chat: greeting sits on top of the service cards so it is always in view */
.hw-hi{font-size:16px;font-weight:650;line-height:1.3;color:var(--ink);margin:2px 2px 12px}
.chat-t small{white-space:normal;line-height:1.25}
.chat-t{min-width:0}
@media (min-width:621px){.chat{width:min(400px,100vw - 32px);height:min(640px,calc(100dvh - 44px))}}
/* booking popup: quick call back instead of the full Jobber form */
.bk-cb{margin:0 0 14px;border-radius:14px;background:var(--accent-soft);color:var(--ink)}
.bk-cb summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;padding:10px 16px;cursor:pointer;list-style:none;font-size:15px}
.bk-cb summary::-webkit-details-marker{display:none}
.bk-cb summary i{font-style:normal;font-size:22px;line-height:1;color:var(--accent);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.bk-cb[open] summary i{transform:rotate(45deg)}
.bk-cb form{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;padding:0 12px 12px}
.bk-cb input:not(.hp){height:46px;border:1.5px solid var(--line);border-radius:12px;padding:0 12px;font-size:16px;min-width:0;background:#fff}
.bk-cb .btn{min-height:46px;white-space:nowrap}
.bk-cb small{grid-column:1/-1;color:#b3261e;font-size:13px}
.bk-cb small:empty{display:none}
.bk-cb-ok{grid-column:1/-1;font-size:15px;line-height:1.45;padding:2px 4px}
@media (max-width:620px){.bk-cb form{grid-template-columns:1fr}}
