@font-face{font-family:"Archivo";src:url(/uploads/companies/57189ebc-e304-418b-b24c-6e5f0b76883b/assets/fonts/option-2/archivo-var-latin.woff2) format("woff2");font-weight:100 900;font-stretch:62% 125%;font-style:normal;font-display:swap}
@font-face{font-family:"Overpass";src:url(/uploads/companies/57189ebc-e304-418b-b24c-6e5f0b76883b/assets/fonts/option-2/overpass-var-latin.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
:root{
  --sheet:#1B1D20;--sheet-2:#212327;--ink-black:#141518;--road:#2A2D31;--paint:#F2BC3C;
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96'%3E%3Cg fill='%23fff' fill-opacity='.05'%3E%3Ccircle cx='38.9' cy='9.5' r='0.47'/%3E%3Ccircle cx='32.0' cy='55.9' r='0.67'/%3E%3Ccircle cx='57.9' cy='40.6' r='0.77'/%3E%3Ccircle cx='93.2' cy='30.1' r='0.45'/%3E%3Ccircle cx='94.1' cy='52.2' r='0.86'/%3E%3Ccircle cx='3.1' cy='9.9' r='0.76'/%3E%3Ccircle cx='51.0' cy='88.0' r='0.61'/%3E%3Ccircle cx='14.3' cy='2.4' r='0.49'/%3E%3Ccircle cx='92.8' cy='76.1' r='0.90'/%3E%3Ccircle cx='17.8' cy='71.7' r='0.86'/%3E%3Ccircle cx='75.2' cy='85.8' r='0.56'/%3E%3Ccircle cx='91.8' cy='76.0' r='0.53'/%3E%3Ccircle cx='54.5' cy='78.7' r='0.68'/%3E%3Ccircle cx='28.2' cy='17.7' r='0.93'/%3E%3Ccircle cx='93.3' cy='34.1' r='0.79'/%3E%3Ccircle cx='44.3' cy='47.1' r='0.75'/%3E%3Ccircle cx='34.3' cy='65.9' r='0.69'/%3E%3Ccircle cx='94.4' cy='28.4' r='0.76'/%3E%3Ccircle cx='54.6' cy='12.6' r='0.71'/%3E%3Ccircle cx='81.8' cy='41.8' r='0.46'/%3E%3Ccircle cx='93.9' cy='24.4' r='0.70'/%3E%3Ccircle cx='38.7' cy='19.9' r='0.84'/%3E%3Ccircle cx='61.5' cy='82.0' r='0.45'/%3E%3Ccircle cx='95.3' cy='2.3' r='0.81'/%3E%3Ccircle cx='42.2' cy='27.2' r='0.93'/%3E%3Ccircle cx='47.7' cy='1.4' r='0.85'/%3E%3Ccircle cx='26.5' cy='42.4' r='0.86'/%3E%3Ccircle cx='60.5' cy='51.0' r='0.62'/%3E%3Ccircle cx='1.5' cy='68.0' r='0.57'/%3E%3Ccircle cx='76.4' cy='89.0' r='0.71'/%3E%3Ccircle cx='78.4' cy='47.2' r='0.78'/%3E%3Ccircle cx='54.6' cy='87.6' r='0.56'/%3E%3Ccircle cx='92.6' cy='14.3' r='0.66'/%3E%3Ccircle cx='64.4' cy='78.0' r='0.92'/%3E%3Ccircle cx='24.2' cy='27.7' r='0.86'/%3E%3Ccircle cx='34.4' cy='68.6' r='0.78'/%3E%3Ccircle cx='53.2' cy='89.5' r='0.47'/%3E%3Ccircle cx='20.2' cy='36.8' r='0.85'/%3E%3C/g%3E%3Cg fill='%23000' fill-opacity='.28'%3E%3Ccircle cx='36.0' cy='29.4' r='0.73'/%3E%3Ccircle cx='26.5' cy='44.7' r='1.10'/%3E%3Ccircle cx='13.2' cy='19.3' r='0.91'/%3E%3Ccircle cx='13.9' cy='48.1' r='0.68'/%3E%3Ccircle cx='55.7' cy='39.8' r='0.61'/%3E%3Ccircle cx='64.8' cy='13.8' r='0.85'/%3E%3Ccircle cx='24.2' cy='84.4' r='0.87'/%3E%3Ccircle cx='47.2' cy='32.5' r='0.57'/%3E%3Ccircle cx='37.7' cy='18.4' r='0.99'/%3E%3Ccircle cx='93.2' cy='56.7' r='1.14'/%3E%3Ccircle cx='94.8' cy='53.4' r='1.13'/%3E%3Ccircle cx='80.8' cy='37.0' r='0.82'/%3E%3Ccircle cx='9.1' cy='1.5' r='0.98'/%3E%3Ccircle cx='79.7' cy='94.0' r='0.96'/%3E%3Ccircle cx='8.6' cy='56.5' r='0.54'/%3E%3Ccircle cx='44.0' cy='50.5' r='1.18'/%3E%3Ccircle cx='6.7' cy='82.7' r='1.13'/%3E%3Ccircle cx='33.5' cy='65.6' r='0.99'/%3E%3Ccircle cx='53.5' cy='90.8' r='1.09'/%3E%3Ccircle cx='58.7' cy='64.6' r='1.07'/%3E%3Ccircle cx='67.4' cy='94.0' r='0.97'/%3E%3Ccircle cx='26.7' cy='17.4' r='0.88'/%3E%3Ccircle cx='67.3' cy='60.5' r='0.82'/%3E%3Ccircle cx='79.0' cy='67.9' r='1.09'/%3E%3Ccircle cx='92.3' cy='82.8' r='1.07'/%3E%3Ccircle cx='55.1' cy='79.3' r='0.64'/%3E%3Ccircle cx='86.1' cy='65.7' r='0.94'/%3E%3Ccircle cx='90.0' cy='65.5' r='0.58'/%3E%3Ccircle cx='2.2' cy='18.4' r='0.95'/%3E%3Ccircle cx='81.2' cy='59.1' r='0.89'/%3E%3C/g%3E%3C/svg%3E");
  --bone:#E9E6DF;--bone-2:#CAC5BA;--bone-3:#A7A298;
  --ash:#6A6E75;--line:rgba(233,230,223,.2);--line-2:rgba(233,230,223,.42);
  --call:#FFC848;--call-hi:#FFD470;--call-ink:#0B0C0E;--red:#D4A43F;
  --f-display:"Archivo","Arial Narrow",Arial,sans-serif;
  --f-label:"Overpass","Trebuchet MS",Arial,sans-serif;
  --hdr:72px;--rail:176px;--gut:clamp(16px,4.2vw,56px);
  --ease:cubic-bezier(.16,1,.3,1);
}
*,*::before,*::after{box-sizing:border-box}
html{overflow-x:clip;-webkit-text-size-adjust:100%;scrollbar-color:var(--ash) var(--sheet);scrollbar-width:thin;background:var(--sheet)}
html:focus-within{scroll-behavior:smooth}
body{margin:0;background:var(--sheet) var(--grain);color:var(--bone);font-family:var(--f-display);font-stretch:100%;font-size:1.0625rem;line-height:1.62;caret-color:var(--red);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
::selection{background:var(--red);color:var(--sheet)}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:var(--sheet)}
::-webkit-scrollbar-thumb{background:var(--ash);border:2px solid var(--sheet)}
::-webkit-scrollbar-thumb:hover{background:var(--bone-3)}
img,svg,video{max-width:100%;height:auto;display:block}
a{color:var(--bone);text-decoration-thickness:1px;text-underline-offset:.22em;text-decoration-color:var(--red);transition:color .18s var(--ease),text-decoration-color .18s var(--ease)}
a:hover{color:#fff;text-decoration-color:var(--call)}
:focus-visible{outline:2px solid var(--red);outline-offset:3px}
p{margin:0 0 1em}
h1,h2,h3{font-family:var(--f-display);color:var(--bone);margin:0;text-wrap:balance}
h2{font-size:clamp(1.9rem,1.2rem + 2.6vw,3.1rem);font-weight:760;font-stretch:88%;line-height:1.04;letter-spacing:-.018em}
h3{font-size:1.2rem;font-weight:680;font-stretch:94%;line-height:1.25;letter-spacing:-.005em}
strong{font-weight:680;color:#fff}
[id]{scroll-margin-top:78px}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.defs{position:absolute;width:0;height:0;overflow:hidden}
.skip{position:absolute;left:12px;top:-60px;z-index:100;background:var(--call);color:var(--call-ink);padding:.6rem 1rem;font-weight:700;text-decoration:none}
.skip:focus{top:12px}
.skip:hover{color:var(--call-ink)}
.lab{font-family:var(--f-label);font-weight:600;text-transform:uppercase;letter-spacing:.07em;font-size:.76rem;line-height:1.35;color:var(--bone-3)}
.num{font-variant-numeric:tabular-nums lining-nums}

/* sheet: a drawing border that runs the length of the page */
body{position:relative;border-inline:1px solid var(--line);min-height:100vh}
body::before,body::after{content:"";position:absolute;top:0;bottom:0;width:9px;pointer-events:none;z-index:1;background:repeating-linear-gradient(to bottom,transparent 0 239px,var(--line-2) 239px 240px);opacity:.8}
body::before{left:0}body::after{right:0}
.wrap{width:100%;max-width:1360px;margin-inline:auto;padding-inline:var(--gut)}

/* header */
.hdr{position:sticky;top:0;z-index:50;background:var(--ink-black);border-bottom:1px solid var(--line-2)}
.hdr-in{display:flex;align-items:center;gap:.5rem;height:56px;padding-inline:14px 12px;max-width:1360px;margin-inline:auto}
@media (min-width:360px){.hdr-in{gap:1rem}} /* under 360px the tighter gap keeps the menu button off the screen edge */
.brand{display:block;flex:0 0 auto;width:44px;height:44px;margin-right:auto}
.brand img{width:44px;height:44px}
.gauge{display:none} /* the phone strip under the header (section name, a strip of road, a marker) is off: owner 2026-09-27, "on mobile th elitlle animatd road can seem confusing lets remove it" */
.nav{display:none}
.nav ul{list-style:none;margin:0;padding:0;display:flex;gap:2rem}
.nav a{position:relative;font-family:var(--f-label);font-weight:600;font-size:.84rem;letter-spacing:.09em;text-transform:uppercase;text-decoration:none;white-space:nowrap;color:var(--bone);padding:.4rem 0}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .24s var(--ease)}
.nav a:hover::after,.nav a:focus-visible::after{transform:scaleX(1)}
.menu-btn{font-family:var(--f-label);font-weight:600;font-size:.78rem;letter-spacing:.09em;text-transform:uppercase;color:var(--bone);background:transparent;border:1px solid var(--line-2);height:40px;padding:0 .8rem;cursor:pointer;transition:border-color .18s var(--ease),background-color .18s var(--ease)}
.menu-btn:hover{border-color:var(--bone);background:#111}
.menu-btn{order:1} /* on a phone the menu button sits at the right edge of the header, after the call button (owner 2026-09-27) */
html:not(.js) .menu-btn{display:none}
html:not(.js) .hdr-in{flex-wrap:wrap;height:auto;min-height:56px;padding-block:6px}
html:not(.js) .nav{display:block;order:3;width:100%;padding:.2rem 0 .4rem}
html:not(.js) .nav ul{flex-wrap:wrap;gap:.2rem 1.4rem}
.nav.is-open{display:block;position:absolute;top:56px;left:0;right:0;background:var(--ink-black);border-bottom:1px solid var(--line-2);padding:.4rem 16px 1rem}
.nav.is-open ul{flex-direction:column;gap:0}
.nav.is-open a{display:block;padding:.85rem 0;border-bottom:1px solid var(--line)}

/* the call control: full yellow lives here and nowhere else */
.call{display:inline-flex;align-items:center;justify-content:center;gap:.6em;background:var(--call);color:var(--call-ink);font-family:var(--f-display);font-weight:760;font-stretch:96%;font-size:1.15rem;line-height:1;letter-spacing:-.005em;padding:1.1rem 1.45rem;text-decoration:none;white-space:nowrap;font-variant-numeric:tabular-nums;transition:background-color .16s var(--ease),transform .16s var(--ease),box-shadow .22s var(--ease)}
.call svg{width:20px;height:20px;flex:0 0 20px}
.call:hover{background:var(--call-hi);color:var(--call-ink);transform:translateY(-2px);box-shadow:0 12px 22px -10px rgba(0,0,0,.95)}
.call:active{transform:translateY(1px);box-shadow:0 2px 4px rgba(0,0,0,.4);transition-duration:.06s}
.call:focus-visible{outline:2px solid var(--bone);outline-offset:4px}
.call-sm{font-size:.95rem;padding:.72rem .85rem;gap:.45em}
.call-sm svg{width:16px;height:16px;flex-basis:16px}

/* hero */
.hero{position:relative;padding-block:28px 40px;border-bottom:1px solid var(--line);overflow-x:clip}
.hero-grid{display:grid;gap:28px}
.hero-copy{position:relative;z-index:1;align-self:center}
.core-mini{display:none;width:100%;height:auto;overflow:visible}
@media (min-width:360px){
  .hero-head{display:grid;grid-template-columns:minmax(0,1fr) clamp(60px,calc(100vw - 300px),100px);column-gap:12px;align-items:center}
  .core-mini{display:block}
}
.t-mini{font-family:var(--f-label);font-weight:700;font-size:12px;fill:var(--red)}
.hero h1{font-size:clamp(2.45rem,1.35rem + 4.6vw,5.35rem);font-weight:790;font-stretch:86%;line-height:.96;letter-spacing:-.028em;max-width:12.5ch}
.hero-sup{font-size:clamp(1.08rem,1rem + .35vw,1.28rem);line-height:1.5;color:var(--bone-2);max-width:40ch;margin:1.35rem 0 1.7rem}
.hero-sup strong{color:var(--bone)}
.reach{margin:1rem 0 0;font-size:.98rem;color:var(--bone-2);max-width:42ch}
.facts{list-style:none;margin:1.9rem 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line-2)}
.facts li{font-family:var(--f-label);font-weight:600;font-size:.75rem;letter-spacing:.07em;text-transform:uppercase;line-height:1.3;color:var(--bone);padding:.8rem .85rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.facts li:nth-child(2n){border-right:0}
.facts li:nth-last-child(-n+2){border-bottom:0}
.hero-plate{position:relative;display:flex;flex-direction:column;align-items:center;gap:14px}
.core{position:relative;width:min(100%,640px);aspect-ratio:640/690}
.core svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.t-lab{font-family:var(--f-label);font-weight:600;font-size:17px;letter-spacing:.07em;fill:var(--bone)}
.t-red{fill:var(--red)}
.t-dim{font-family:var(--f-label);font-weight:600;font-size:16px;letter-spacing:.03em;fill:var(--red)}
.ln-ext{fill:none;stroke:var(--ash);stroke-width:1}
.ln-water{fill:none;stroke:var(--bone-2);stroke-width:1.4;stroke-linecap:butt}
.t-title{font-family:var(--f-label);font-weight:700;font-size:21px;letter-spacing:.09em;fill:var(--bone)}
.t-sub{font-family:var(--f-label);font-weight:600;font-size:12px;letter-spacing:.12em;fill:var(--bone-3)}
:where(.page-home) .t-sub{font-size:16px}
.t-cut{font-family:var(--f-label);font-weight:700;font-size:17px;fill:var(--bone)}
.ln-obj{fill:none;stroke:var(--bone);stroke-width:1.5}
.ln-int{fill:none;stroke:var(--bone);stroke-width:1.1}
.ln-hid{fill:none;stroke:var(--ash);stroke-width:1.1;stroke-dasharray:7 5}
.ln-ctr{fill:none;stroke:var(--ash);stroke-width:1;stroke-dasharray:22 5 3 5}
.ln-cut{fill:none;stroke:var(--bone);stroke-width:3.2}
.ln-thin{fill:none;stroke:var(--bone-2);stroke-width:1}
.ln-lead{fill:none;stroke:var(--bone-2);stroke-width:1}
.ln-dim{fill:none;stroke:var(--red);stroke-width:1}
.fill-bone{fill:var(--bone)}.fill-red{fill:var(--red)}
.road-top{fill:url(#h-road)}.road-face{fill:#17191C}.core-back{fill:var(--sheet)}
.face-r{opacity:.72}
.ln-edge{fill:none;stroke:var(--bone);stroke-opacity:.82;stroke-width:2}
.ln-paint{fill:none;stroke:var(--paint);stroke-width:3.2}
.ln-paint-s{stroke-width:1.6}
.hole-o{fill:none;stroke:var(--bone);stroke-width:1.2}.bore-0{fill:#060708}.bore-1{fill:#101113}.bore-2{fill:#0B0C0E}.bore-h{opacity:.32}.ln-bore{fill:none;stroke:var(--bone);stroke-opacity:.35;stroke-width:1}
.ln-cutA{fill:none;stroke:var(--red);stroke-width:3.2}.ln-arrA{fill:none;stroke:var(--red);stroke-width:1.2}.t-cutA{font-family:var(--f-label);font-weight:700;font-size:17px;fill:var(--red)}
.core-art .m{display:none}.core-art .t-sec{font-size:14px}
:where(.page-home) .core-art .t-sec{font-size:15.5px}
.mini-ln{stroke:var(--bone);stroke-width:5;stroke-linejoin:round}.mini-paint{fill:none;stroke:var(--paint);stroke-width:9}
.ln-lift{fill:none;stroke:var(--bone-2);stroke-width:1.2;stroke-dasharray:5 4}
.tblock{width:min(100%,380px);border:1px solid var(--line-2);font-family:var(--f-label);font-weight:600;text-transform:uppercase;letter-spacing:.07em;font-size:.75rem;line-height:1.4;color:var(--bone-2);font-style:normal;align-self:flex-end}
.tblock{display:grid;grid-template-columns:auto minmax(0,1fr)}
.tb-logo{grid-row:1 / span 4;width:76px;height:100%;min-height:76px;object-fit:contain;background:var(--ink-black);border-right:1px solid var(--line)}
.tblock > div{grid-column:2;padding:.5rem .75rem;border-bottom:1px solid var(--line)}
.tblock > div:last-child{border-bottom:0}
.tb-name{color:var(--bone);font-size:.86rem;letter-spacing:.08em}
.tb-split{display:grid;grid-template-columns:auto minmax(0,1fr);padding:0!important}
.tb-split span{padding:.5rem .75rem}
.tb-split span+span{border-left:1px solid var(--line)}
.tblock a{color:var(--bone);text-decoration:none}
.tblock a:hover{color:#fff;text-decoration:underline;text-decoration-color:var(--red)}
.tb-addr,.tb-nts{text-transform:none;letter-spacing:.01em;font-size:.8rem;font-weight:500;line-height:1.45}
.tb-nts{color:var(--bone-3);font-size:.8rem}

/* the drill: a core that fills as you read down the page */
.strata{position:relative}
.rail{display:none}
.layers{min-width:0}
.layer{position:relative;padding-block:clamp(64px,8vw,112px) clamp(56px,7vw,96px)}
.layer:nth-child(even){background:var(--sheet-2) var(--grain)}
.strip{position:absolute;left:0;right:0;top:0;width:100%;height:12px;opacity:.5;border-bottom:1px solid var(--line)}
.lh{position:relative;margin-bottom:clamp(24px,3vw,40px)}
.lh h2{max-width:19ch}
.lh-wide h2{max-width:24ch}
.lead{display:none}
.cols{display:grid;gap:28px}
.prose{max-width:66ch}
.prose p{color:var(--bone-2)}
.prose p:first-child{color:var(--bone);font-size:1.14rem;line-height:1.55}
.note{position:relative;align-self:start;border:1px solid var(--line-2);padding:1rem 1.1rem 1.05rem;font-family:var(--f-label);font-size:.92rem;line-height:1.5;color:var(--bone-2);max-width:40ch;background:var(--sheet)}
.note p{margin:0}
.note-k{display:inline-block;font-weight:700;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--red);margin-right:.5em}
.plate{position:relative;margin:clamp(32px,4vw,56px) 0 0;padding:8px;border:1px solid var(--line-2);background:var(--sheet)}
.plate::before,.plate::after{content:"";position:absolute;width:14px;height:14px;border-color:var(--bone);border-style:solid;pointer-events:none}
.plate::before{top:-5px;left:-5px;border-width:1px 0 0 1px}
.plate::after{bottom:-5px;right:-5px;border-width:0 1px 1px 0}
.plate img{width:100%;height:auto}
.aside-link{margin-top:1.4rem;font-size:1rem;color:var(--bone-2)}
a[href^="tel:"]{white-space:nowrap}
.side-stack{display:grid;gap:22px;align-content:start}
.side-stack .plate{margin:0}
.side-stack .note{max-width:none}
.plate-strip{margin-block:clamp(28px,4vw,48px)}
.annot-lead,.annot-dot{display:none}
.annot-note{margin-top:14px;max-width:none}
.aside-link a{font-weight:700;color:var(--bone);font-variant-numeric:tabular-nums;white-space:nowrap}

/* asphalt, lower half (T): the general notes */
.gnotes{list-style:none;margin:0;padding:0;counter-reset:gn;border-top:1px solid var(--line-2);max-width:62ch}
.gnotes li{counter-increment:gn;display:grid;grid-template-columns:2.6rem 1fr;gap:.2rem .9rem;padding:1rem 0;border-bottom:1px solid var(--line);color:var(--bone-2)}
.gnotes li::before{content:counter(gn);font-family:var(--f-label);font-weight:700;font-size:.8rem;color:var(--bone);width:2rem;height:2rem;border:1px solid var(--line-2);border-radius:50%;display:grid;place-items:center;font-variant-numeric:tabular-nums;margin-top:.1rem}
.gnotes li:first-child::before{border-color:var(--red);color:var(--red)}
.gnotes b{color:var(--bone);font-weight:680}
.warn{margin-top:1.8rem;max-width:62ch;color:var(--bone-2)}

/* stone base: the schedule of services */
.sched{border-top:1px solid var(--line-2)}
.sched-hd{display:none}
.svc{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 34px;gap:.2rem 1rem;align-items:center;padding:1rem .2rem;border-bottom:1px solid var(--line);transition:background-color .2s var(--ease)}
.svc:hover,.svc:focus-within{background:rgba(233,230,223,.035)}
.svc p{margin:0}
.redline{fill:none;stroke:var(--red);stroke-width:1.5;stroke-linecap:butt;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .38s var(--ease)}
.svc:hover .redline,.svc:focus-within .redline{stroke-dashoffset:0}
.svc-name{font-weight:700;font-size:1.12rem;line-height:1.25;font-stretch:94%}
.svc-name a{text-decoration:none;color:var(--bone)}
.svc-name a::after{content:"";position:absolute;inset:0}
.svc-name a:focus-visible{outline:none}
.svc:has(a:focus-visible){outline:2px solid var(--red);outline-offset:-2px}
.svc-desc{grid-column:1;color:var(--bone-2);font-size:.97rem;line-height:1.45}
.svc-go{grid-column:2;grid-row:1 / span 2;width:34px;height:34px;overflow:visible;stroke:var(--bone-3);fill:none;stroke-width:1.5;transition:stroke .22s var(--ease)}
.svc-go use{transition:transform .22s var(--ease)}
.svc:hover .svc-go,.svc:focus-within .svc-go{stroke:var(--bone)}
.svc:hover .svc-go use,.svc:focus-within .svc-go use{transform:translateX(3px)}
.coi{margin-top:1.6rem}

/* compacted ground: the cost schedule */
.costs{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums lining-nums;border-top:1px solid var(--line-2)}
.costs caption{text-align:left;padding:0 0 .8rem}
.costs th,.costs td{text-align:left;vertical-align:top;padding:.85rem .6rem .85rem 0;border-bottom:1px solid var(--line)}
.costs thead th{font-family:var(--f-label);font-weight:700;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--bone-3);padding-block:.7rem}
:where(.page-home) .costs thead th{font-size:.75rem}
.costs tbody th{font-weight:620;font-size:1rem}
.costs tbody th a{color:var(--bone);text-decoration:underline;text-decoration-color:var(--line-2)}
.costs tbody th a:hover{text-decoration-color:var(--red)}
.costs td{color:var(--bone-2);font-size:1rem}
.costs tbody tr{transition:background-color .18s var(--ease)}
.costs tbody tr:hover{background:rgba(233,230,223,.035)}
.after{margin-top:1.2rem;max-width:62ch;color:var(--bone)}

/* where the water goes: every town */
.lead-in{max-width:62ch;color:var(--bone-2)}
.lead-in strong{font-variant-numeric:tabular-nums}
.towns-grid{display:grid;gap:36px;margin-top:clamp(28px,4vw,48px)}
.map-wrap{position:relative;border:1px solid var(--line-2);padding:10px;background:var(--sheet);align-self:start}
.map{width:100%;height:auto}
.map-frame{fill:none;stroke:var(--line);stroke-width:1}
.map-ticks{stroke:var(--ash);stroke-width:1}
.map-state{fill:rgba(233,230,223,.03);stroke:var(--bone);stroke-width:1.6;stroke-linejoin:round}
.dot-pt{fill:var(--bone)}
.dot-ring{fill:none;stroke:var(--red);stroke-width:2.2;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .3s var(--ease)}
.dot.is-hot .dot-ring{stroke-dashoffset:0}
.dot.is-hot .dot-pt{fill:var(--red)}
.map-lead{fill:none;stroke:var(--bone-3);stroke-width:1}
.map-name{font-family:var(--f-label);font-weight:700;font-size:16px;letter-spacing:.07em;fill:var(--bone);paint-order:stroke;stroke:var(--sheet);stroke-width:5px;stroke-linejoin:round}
.map-num{font-family:var(--f-label);font-weight:600;font-size:13.5px;letter-spacing:.05em;fill:var(--bone-3);paint-order:stroke;stroke:var(--sheet);stroke-width:5px;stroke-linejoin:round}
.yard-ring{fill:none;stroke:var(--red);stroke-width:1.6}
.yard-pt{fill:var(--red)}
.yard-name{fill:var(--red)}
.towns{list-style:none;margin:0;padding:0;column-gap:28px}
.towns li{break-inside:avoid}
.towns a{display:block;padding:.52rem .2rem;border-bottom:1px solid var(--line);text-decoration:none;color:var(--bone);font-size:.94rem;transition:background-color .15s var(--ease),color .15s var(--ease)}
.towns a:hover,.towns a:focus-visible{background:rgba(212,164,63,.08);color:#fff}
.towns a:focus-visible{outline-offset:-2px}
.towns .nolink{display:block;padding:.52rem .2rem;border-bottom:1px solid var(--line);color:var(--bone-2);font-size:.94rem}
/* Home's A-to-Z list: under 1024px a grid filled row by row (two across, three from 640px); each row's cell fills its height
   so the ruled lines stay level when a long name wraps. From 1024px it goes back to three columns filled downward. */
.towns.towns-az{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:1.25rem}
.towns-az li{display:flex}
.towns-az li > *{flex:1 1 auto;min-width:0}
.home-note{margin-top:1.4rem;color:var(--bone-2);max-width:60ch}
.climate{margin-top:clamp(48px,6vw,80px)}
.climate > h3{font-size:clamp(1.35rem,1.1rem + 1vw,1.8rem);font-stretch:90%;font-weight:720;max-width:28ch;margin-bottom:1.4rem}
.bands3{display:grid;gap:0;border:1px solid var(--line-2)}
.bands3 > div{padding:1.1rem 1.15rem 1.2rem;border-bottom:1px solid var(--line)}
.bands3 > div:last-child{border-bottom:0}
.bands3 h4{margin:0 0 .45rem;font-family:var(--f-label);font-weight:700;font-size:.8rem;letter-spacing:.09em;text-transform:uppercase;color:var(--bone)}
.bands3 p{margin:0;color:var(--bone-2);font-size:.98rem;line-height:1.55}
.source{margin-top:.9rem;font-family:var(--f-label);font-size:.78rem;letter-spacing:.03em;color:var(--bone-3)}

/* questions */
.qa{position:relative;padding-block:clamp(72px,9vw,120px);border-top:1px solid var(--line-2)}
.qa-grid{display:grid;gap:0;border-top:1px solid var(--line-2);margin-top:clamp(28px,4vw,44px)}
.q{padding:1.4rem 0 1.5rem;border-bottom:1px solid var(--line)}
.q h3{margin-bottom:.6rem;font-size:1.18rem}
.q p{margin:0;color:var(--bone-2)}
.q p strong{color:var(--bone)}

/* the call */
.close{position:relative;padding-block:calc(84px + clamp(56px,7vw,96px)) clamp(72px,9vw,120px);background:var(--sheet-2) var(--grain);border-top:1px solid var(--line-2);overflow:hidden}
.close-grid{display:grid;gap:36px;align-items:center}
.xroad{position:absolute;left:0;right:0;top:28px;height:56px;background:linear-gradient(to bottom,transparent 5px,rgba(233,230,223,.62) 5px 7px,transparent 7px 49px,rgba(233,230,223,.62) 49px 51px,transparent 51px),var(--grain) var(--road)}
.xroad span{position:absolute;left:0;right:0;height:2px;background:var(--paint)}
.xroad span:first-child{top:24.5px}.xroad span:last-child{top:29.5px}
.xcurve{display:none;position:absolute;left:0;top:0;width:117px;height:84px;overflow:visible}
.xc-road{fill:url(#h-road)}.xc-edge{fill:none;stroke:var(--bone);stroke-opacity:.62;stroke-width:2}.xc-paint{fill:none;stroke:var(--paint);stroke-width:2}
.ruler{position:absolute;left:0;bottom:-5px;height:10px;width:calc(var(--k) * 100%);background:linear-gradient(var(--paint),var(--paint)) 0 3px/100% 1.5px no-repeat,linear-gradient(var(--paint),var(--paint)) 0 5.5px/100% 1.5px no-repeat,var(--road)}
@media (max-width:1279px){
  .core-art .d{display:none}.core-art .m{display:inline}
  .core-art .t-lab{font-size:21.5px}.core-art .t-dim{font-size:22px}.core-art .t-cutA{font-size:24px}
  :where(.page-home) .core-art .t-sub{font-size:20px}
  .core-art .t-sec{font-size:22px;letter-spacing:.08em}
  .core-art .ext{display:none}
}
@media (min-width:1280px) and (max-height:820px){
  .hero-plate .core{width:min(100%,calc((100svh - var(--hdr)) * .78))}
  .tb-nts{display:none}
}
.close h2{font-size:clamp(2.2rem,1.3rem + 3.2vw,4rem);max-width:14ch;margin-bottom:1.3rem}
.close p{color:var(--bone-2);max-width:48ch}
.close .call{margin-top:.6rem}
.close .small{margin-top:1.3rem;font-size:.92rem;color:var(--bone-3)}
.close .plate{margin:0}

/* footer title block */
.ftr{border-top:1px solid var(--line-2);background:var(--ink-black);padding-block:0 0}
.ftr-grid,.ftr-social,.ftr-strip{display:grid;grid-template-columns:1fr;gap:1px;background:var(--line);border-bottom:1px solid var(--line)}
.ftr-grid > *,.ftr-social > *,.ftr-strip > *{background:var(--ink-black)}
.ftr-cell{padding:1.4rem 1.2rem}
.ftr-cell h2{font-family:var(--f-label);font-weight:700;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--bone-3);margin:0 0 .8rem;font-stretch:100%}
.ftr ul{list-style:none;margin:0;padding:0;display:grid;gap:.35rem}
.ftr li a{text-decoration:none;color:var(--bone-2);font-size:.95rem}
.ftr li a:hover{color:#fff;text-decoration:underline;text-decoration-color:var(--red)}
.ftr address{font-style:normal;color:var(--bone-2);font-size:.95rem;line-height:1.55}
.ftr address strong{display:block;color:var(--bone);font-size:1.02rem;margin-bottom:.2rem}
.ftr address a{color:var(--bone);font-variant-numeric:tabular-nums}
.ftr-logo{width:64px;height:64px;margin-bottom:.9rem}
.ftr-facts{margin-top:.8rem;color:var(--bone-2);font-size:.92rem}
.ftr .ftr-social > *{margin:0;padding:.85rem 1.2rem}
.ftr-social h2{display:flex;align-items:center;font-family:var(--f-label);font-weight:700;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--bone-3);font-stretch:100%}
.ftr .ftr-social ul{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem 1.7rem}
.ftr .ftr-social li a{display:inline-block;padding:.3rem 0;font-family:var(--f-label);font-weight:600;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--bone-2)}
.ftr-strip{font-family:var(--f-label);font-weight:600;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--bone-3)}
.ftr-strip > *{padding:.8rem 1.2rem}
.ftr-strip a{color:var(--bone-2);text-decoration:none}
.ftr-strip a:hover{color:#fff}

/* phones: a call bar that shows once the page call buttons are out of view */
.callbar{position:fixed;left:0;right:0;bottom:0;z-index:60;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(20,21,24,.95);border-top:1px solid var(--line-2)}
.callbar .call{width:100%;font-size:1.1rem;padding:.95rem 1rem}
html.cb-watch .callbar{transform:translateY(calc(100% + 2px));visibility:hidden;transition:transform .3s var(--ease),visibility 0s linear .3s}
html.cb-watch .callbar.is-on{transform:none;visibility:visible;transition:transform .3s var(--ease),visibility 0s}
body{padding-bottom:78px}
/* one call control per phone screen: the header's call button steps aside while the bar is up (Conway review 2026-09-25c, site-wide 2026-09-26) */
@media (max-width:1023.98px){
  html.cb-watch:has(.callbar.is-on) .hdr .call-sm{visibility:hidden;opacity:0}
  .hdr .call-sm{transition:opacity .2s var(--ease)}
}

@media (min-width:640px){
  .facts{grid-template-columns:repeat(4,1fr)}
  .facts li{border-bottom:0}
  .facts li:nth-child(2n){border-right:1px solid var(--line)}
  .facts li:last-child{border-right:0}
  .towns{columns:2}
  .towns.towns-az{grid-template-columns:repeat(3,minmax(0,1fr))}
  .bands3{grid-template-columns:repeat(3,1fr)}
  .bands3 > div{border-bottom:0;border-right:1px solid var(--line)}
  .bands3 > div:last-child{border-right:0}
  .ftr-grid,.ftr-social,.ftr-strip{grid-template-columns:1fr 1fr}
}
@media (min-width:768px){
  .qa-grid{grid-template-columns:1fr 1fr;column-gap:48px}
  .svc{grid-template-columns:minmax(0,15rem) minmax(0,1fr) 34px;padding:.9rem .4rem}
  .svc-desc{grid-column:auto}
  .svc-go{grid-column:auto;grid-row:auto}
  .sched-hd{display:grid;grid-template-columns:minmax(0,15rem) minmax(0,1fr) 34px;gap:.2rem 1rem;padding:.6rem .4rem;font-family:var(--f-label);font-weight:700;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--bone-3);border-bottom:1px solid var(--line)}
  :where(.page-home) .sched-hd{font-size:.75rem}
}
@media (min-width:1024px){
  body{padding-bottom:0}
  .callbar{display:none}
  body{margin-inline:14px}
  .hdr-in{height:var(--hdr);padding-inline:28px}
  .brand,.brand img{width:52px;height:52px}
  .brand{margin-right:3.2rem}
  .nav{display:block;margin-right:auto}
  html:not(.js) .nav{order:0;width:auto;padding:0}
  html:not(.js) .hdr-in{flex-wrap:nowrap;height:var(--hdr);padding-block:0}
  .menu-btn{display:none}
  .call-sm{font-size:1rem;padding:.78rem 1.05rem}
  [id]{scroll-margin-top:100px}
  .hero{padding-block:clamp(24px,4vh,48px) 36px;min-height:calc(100svh - var(--hdr));display:flex;align-items:center}
  .hero .wrap{width:100%}
  .hero-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(24px,3vw,56px);align-items:center}
  .hero-head{display:block}
  .core-mini{display:none}
  .facts{grid-template-columns:1fr 1fr}
  .facts li{border-bottom:1px solid var(--line)}
  .facts li:nth-child(2n){border-right:0}
  .facts li:nth-last-child(-n+2){border-bottom:0}
  .hero-plate{position:static;align-items:stretch;align-self:start}
  .core{width:min(100%,calc((100svh - var(--hdr)) * .82));align-self:center}
  .strata{display:grid;grid-template-columns:var(--rail) minmax(0,1fr)}
  .strata::before,.qa::before{content:"";position:absolute;top:0;bottom:0;left:33px;width:56px;background:linear-gradient(to right,transparent 5px,rgba(233,230,223,.5) 5px 7px,transparent 7px 49px,rgba(233,230,223,.5) 49px 51px,transparent 51px),repeating-linear-gradient(to bottom,var(--paint) 0 6px,transparent 6px 40px) 27px 0/2px 100% no-repeat,var(--grain) var(--road);pointer-events:none}
  .strata::after,.qa::after{content:"";position:absolute;top:0;left:57.5px;width:7px;height:var(--paint-h,100%);background:linear-gradient(to right,var(--paint) 0 2px,transparent 2px 5px,var(--paint) 5px 7px);pointer-events:none}
  .xcurve{display:block}
  .xroad{left:117px}
  .rail{z-index:1;display:block;position:sticky;top:calc(var(--hdr) + 36px);align-self:start;height:calc(100vh - var(--hdr) - 72px);padding-left:22px;border-right:1px solid var(--line)}
  .rail svg{width:150px;height:auto;max-height:100%}
  .layer .wrap{padding-left:clamp(40px,4vw,64px)}
  .lead{display:block;position:absolute;right:100%;top:1.6rem;width:calc(clamp(40px,4vw,64px) + 10px);height:1px;margin-right:10px;background:var(--bone-3);transform-origin:left center}
  .lead::before{content:"";position:absolute;left:-3px;top:-3px;width:7px;height:7px;border-radius:50%;background:var(--red)}
  .lead::after{content:"";position:absolute;right:-1px;top:-4px;width:9px;height:9px;background:var(--bone-3);clip-path:polygon(100% 50%,0 0,0 100%)}
  .cols{grid-template-columns:minmax(0,1fr) minmax(0,19rem);gap:clamp(32px,4vw,64px)}
  .cols-side{grid-template-columns:minmax(0,1fr)}
  .annot-note{position:absolute;left:3%;top:7%;width:min(35%,370px);margin:0;background:rgba(27,29,32,.92);border-color:var(--bone-2)}
  .annot-lead{display:block;position:absolute;left:8px;top:8px;width:calc(100% - 16px);height:calc(100% - 16px);overflow:visible;pointer-events:none}
  .annot-lead path{fill:none;stroke:var(--red);stroke-width:1.4;vector-effect:non-scaling-stroke}
  .annot-dot{display:block;position:absolute;left:calc(8px + (100% - 16px) * .48);top:calc(8px + (100% - 16px) * .57);width:14px;height:14px;margin:-7px 0 0 -7px;border:1.5px solid var(--red);border-radius:50%;background:radial-gradient(circle,var(--red) 0 2.5px,transparent 3px)}
  .towns-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:44px;align-items:start}
  .towns{columns:3}
  .towns-grid > .map-wrap{position:sticky;top:calc(var(--hdr) + 1.5rem);align-self:start;order:2}
  .towns.towns-az{display:block;column-gap:28px}
  .ftr-grid,.ftr-social{grid-template-columns:1.3fr 1fr 1fr 1fr}
  .ftr-strip{grid-template-columns:1.3fr 3fr}
  .ftr-social ul{grid-column:2 / -1}
  .layers .wrap{margin-left:0}
  .qa .wrap,.close .wrap{max-width:none;padding-left:calc(var(--rail) + clamp(40px,4vw,64px))}
  .qa-grid,.close-grid{max-width:1180px}
}
@media (min-width:1280px){
  .hero h1{max-width:13ch}
  .hero-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.04fr)}
  .facts{grid-template-columns:repeat(4,1fr)}
  .facts li{border-bottom:0}
  .facts li:nth-child(2n){border-right:1px solid var(--line)}
  .facts li:last-child{border-right:0}
  .core{align-self:flex-start}
  .tblock{position:absolute;right:0;bottom:0;width:clamp(288px,23vw,340px);border-right:0;border-bottom:0;background:var(--sheet);z-index:2}
  .tb-logo{width:64px;min-height:64px}
  .tb-name{font-size:.8rem}
  .cols-side{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .ext .ln-ext:nth-child(3){display:none}
  .side-stack{position:sticky;top:calc(var(--hdr) + 40px)}
  .close-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr)}
}

/* rail drawing */
.r-edge{fill:none;stroke:var(--bone);stroke-width:1.2}
.r-int{fill:none;stroke:var(--bone-2);stroke-width:.9}
.r-hid{fill:none;stroke:var(--ash);stroke-width:1;stroke-dasharray:4 3}
.r-lab{font-family:var(--f-label);font-weight:600;font-size:12px;letter-spacing:.08em;fill:var(--bone-3);transition:fill .25s var(--ease)}
:where(.page-home) .r-lab{font-size:13.7px;letter-spacing:.02em}
.r-lab.is-done{fill:var(--bone-2)}
.r-lab.is-now{fill:var(--bone);font-weight:800}
.r-mark path{fill:var(--red)}
.r-mark line{stroke:var(--red);stroke-width:1.6}
.r-eoc{font-family:var(--f-label);font-weight:600;font-size:10px;letter-spacing:.12em;fill:var(--bone-3)}
:where(.page-home) .r-eoc{font-size:13.7px}

/* motion: every hidden state here is gated on html.js, so a page with scripts off is whole and still. It runs for every
   visitor on screen, reduce-motion setting or not (owner 2026-09-27: "Animate for everyone"); print stays still. */
@media screen{
  html.js .core-mini{clip-path:inset(0 0 100% 0);animation:drill .82s var(--ease) .15s forwards}
  html.js .slab,html.js .seat{opacity:0;animation:rise .55s var(--ease) .1s forwards}
  html.js .ln-edge{stroke-dasharray:1;stroke-dashoffset:1;animation:draw .6s var(--ease) .25s forwards}
  html.js .cl{stroke-dasharray:1;stroke-dashoffset:1;animation:draw .75s var(--ease) .35s forwards}
  html.js .cl + .cl{animation-delay:.42s}
  html.js .corep .ln-paint{opacity:0;animation:fade .2s linear .75s forwards}
  html.js .corep{animation:lift .7s var(--ease) .95s both}
  html.js .cfill-r{transform-box:fill-box;transform-origin:50% 0;animation:grow .45s var(--ease) 1.25s both}
  html.js .lift{opacity:0;animation:fade .25s linear 1.5s forwards}
  html.js .secA{opacity:0;animation:fade .3s linear 1.5s forwards}
  html.js .ruler{transform:scaleX(0);transform-origin:left;transition:transform 1s var(--ease) calc(var(--k) * .5s)}
  html.js .layer.is-drawn .ruler{transform:none}
  html.js .xc-paint{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .45s linear}
  html.js .close.is-drawn .xc-paint{stroke-dashoffset:0}
  html.js .xroad span{transform:scaleX(0);transform-origin:left;transition:transform 1.3s var(--ease) .4s}
  html.js .xroad span + span{transition-delay:.45s}
  html.js .close.is-drawn .xroad span{transform:none}
  html.js .lead-g .ln-lead{stroke-dasharray:1;stroke-dashoffset:1;animation:draw .42s var(--ease) forwards}
  html.js .lead-g .dotp{opacity:0;animation:fade .2s linear forwards}
  html.js .lead-g text{opacity:0;animation:label .38s var(--ease) forwards}
  html.js .lead-g:nth-of-type(1) *{animation-delay:1.25s}
  html.js .lead-g:nth-of-type(2) *{animation-delay:1.31s}
  html.js .lead-g:nth-of-type(3) *{animation-delay:1.37s}
  html.js .lead-g text{animation-delay:inherit}
  html.js .dim .ln-dim{stroke-dasharray:1;stroke-dashoffset:1;animation:draw .4s var(--ease) 1.3s forwards}
  html.js .dim .fill-red{opacity:0;animation:fade .2s linear 1.45s forwards}
  html.js .dim .t-dim{opacity:0;animation:fade .3s linear 1.47s forwards}
  html.js .ext .ln-ext{stroke-dasharray:1;stroke-dashoffset:1;animation:draw .5s var(--ease) forwards}
  html.js .ext .ln-ext:nth-child(1){animation-delay:1.25s}
  html.js .ext .ln-ext:nth-child(2){animation-delay:1.3s}
  html.js .water .ln-water{stroke-dasharray:1;stroke-dashoffset:1;animation:draw .45s var(--ease) 1s forwards}
  html.js .water .fill-bone,html.js .water .ln-lead{opacity:0;animation:fade .2s linear 1.3s forwards}
  html.js .water text{opacity:0;animation:label .4s var(--ease) 1.35s forwards}
  html.js .r-lab.is-now{animation:labnow .55s var(--ease)}
  @keyframes labnow{from{opacity:.35;transform:translateX(-5px)}to{opacity:1;transform:none}}
  @keyframes drill{to{clip-path:inset(0 0 0 0)}}
  @keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
  @keyframes grow{from{transform:scaleY(0)}to{transform:none}}
  @keyframes lift{from{transform:translateY(248px)}to{transform:none}}
  @keyframes draw{to{stroke-dashoffset:0}}
  @keyframes fade{to{opacity:1}}
  @keyframes label{from{opacity:0;transform:translateX(-6px)}to{opacity:1;transform:none}}
  html.js .lead{transform:scaleX(0);transition:transform .7s var(--ease)}
  html.js .lead::after{opacity:0;transition:opacity .2s linear .55s}
  html.js .layer.is-drawn .lead{transform:scaleX(1)}
  html.js .layer.is-drawn .lead::after{opacity:1}
  html.js .annot-lead path{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .6s var(--ease) .2s}
  html.js .annot-dot{opacity:0;transition:opacity .25s var(--ease) .75s}
  html.js .annot.is-drawn .annot-lead path{stroke-dashoffset:0}
  html.js .annot.is-drawn .annot-dot{opacity:1}
  html.js .map-state{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.3s var(--ease)}
  html.js .map-dots .dot,html.js .map-lab,html.js .map-yard{opacity:0;transition:opacity .35s var(--ease)}
  html.js .map-wrap.is-plotted .map-state{stroke-dashoffset:0}
  html.js .map-wrap.is-plotted .dot{opacity:1;transition-delay:calc(var(--d) + .5s)}
  html.js .map-wrap.is-plotted .map-lab{opacity:1;transition-delay:calc(var(--d) + .6s)}
  html.js .map-wrap.is-plotted .map-yard{opacity:1;transition-delay:.3s}
  html.js .map-wrap.is-plotted .dot.is-hot{transition-delay:0s}
}
/* Reveals: alec.js marks what starts below the fold (data-rv) and adds html.rv; rv-in brings it on */
@media screen{
  html.rv [data-rv]{transition:opacity .6s var(--ease),transform .75s var(--ease);transition-delay:var(--rv-d,0s)}
  html.rv [data-rv]:not(.rv-in){opacity:0}
  html.rv [data-rv=slide]:not(.rv-in){transform:translateX(-24px)}
  html.rv [data-rv=rise]:not(.rv-in){transform:translateY(18px)}
  html.rv [data-rv=item]:not(.rv-in){transform:translateY(16px)}
  html.rv [data-rv=lay]:not(.rv-in){transform:translateX(-32px)}
  html.rv [data-rv=lay][data-from=r]:not(.rv-in){transform:translateX(32px)}
  html.rv [data-rv=lay] img{clip-path:inset(0);transition:clip-path .6s var(--ease) var(--rv-d,0s)}
  html.rv [data-rv=lay]:not(.rv-in) img{clip-path:inset(0 100% 0 0)}
  html.rv [data-rv=lay][data-from=r]:not(.rv-in) img{clip-path:inset(0 0 0 100%)}
  html.js .hero-shot picture{display:block;overflow:hidden}
  html.js .hero-shot img{animation:settle 1.8s var(--ease) both}
  html.still .hero-shot img{animation:none}
  @keyframes settle{from{transform:scale(1.07)}to{transform:none}}
}
@media print{
  html.rv [data-rv]{opacity:1!important;transform:none!important}
  html.rv [data-rv] img{clip-path:none!important}
}

/* inner pages: everything below extends the homepage system for service, town, hub and legal pages */
.crumbs{border-bottom:1px solid var(--line);font-family:var(--f-label);font-weight:600;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--bone-3)}
.crumbs ol{list-style:none;margin:0 auto;padding:.7rem var(--gut);max-width:1360px;display:flex;flex-wrap:wrap;gap:.3rem .55rem}
.crumbs li{display:flex;align-items:center;gap:.55rem}
.crumbs li+li::before{content:"";width:5px;height:5px;border-top:1px solid var(--bone-3);border-right:1px solid var(--bone-3);transform:rotate(45deg)}
.crumbs a{color:var(--bone-2);text-decoration:none}
.crumbs a:hover{color:#fff;text-decoration:underline;text-decoration-color:var(--red)}
.crumbs [aria-current]{color:var(--bone)}
.phero{position:relative;padding-block:clamp(36px,5vw,64px) clamp(44px,5vw,72px);border-bottom:1px solid var(--line);overflow-x:clip}
.phero-grid{display:grid;gap:32px;align-items:center}
.phero h1{font-size:clamp(2.3rem,1.25rem + 3.9vw,4.6rem);font-weight:790;font-stretch:86%;line-height:.97;letter-spacing:-.026em;max-width:14ch}
.phero .hero-sup{max-width:44ch}
.detail{position:relative;margin:0;border:1px solid var(--line-2);background:var(--sheet);padding:10px 10px 0}
.detail::before,.detail::after{content:"";position:absolute;width:14px;height:14px;border-color:var(--bone);border-style:solid;pointer-events:none}
.detail::before{top:-5px;left:-5px;border-width:1px 0 0 1px}
.detail::after{bottom:-5px;right:-5px;border-width:0 1px 1px 0}
.detail svg{display:block;width:100%;height:auto;overflow:visible}
.detail-tb{display:grid;grid-template-columns:minmax(0,1fr) auto;margin:10px -10px 0;border-top:1px solid var(--line-2);font-family:var(--f-label);font-weight:700;font-size:.75rem;letter-spacing:.09em;text-transform:uppercase;color:var(--bone)}
.detail-tb > *{padding:.6rem .8rem}
.detail-tb > * + *{border-left:1px solid var(--line);color:var(--bone-3)}
.steps{list-style:none;margin:0;padding:0;counter-reset:st;border-top:1px solid var(--line-2);max-width:66ch}
.steps > li{counter-increment:st;display:grid;grid-template-columns:2.6rem 1fr;gap:.25rem .9rem;padding:1.15rem 0;border-bottom:1px solid var(--line);color:var(--bone-2)}
.steps > li::before{content:counter(st);grid-row:1 / span 2;font-family:var(--f-label);font-weight:700;font-size:.8rem;color:var(--bone);width:2rem;height:2rem;border:1px solid var(--line-2);border-radius:50%;display:grid;place-items:center;transition:border-color .25s var(--ease),color .25s var(--ease)}
.steps > li:hover::before{border-color:var(--red);color:var(--red)}
.steps h3{font-size:1.1rem;margin:0}
.steps p{margin:0}
.checks{list-style:none;margin:1.2rem 0 0;padding:0;display:grid;gap:.1rem;max-width:66ch}
.checks li{position:relative;padding:.55rem 0 .55rem 1.9rem;border-bottom:1px solid var(--line);color:var(--bone-2)}
.checks li::before{content:"";position:absolute;left:.15rem;top:1.05rem;width:.8rem;height:.45rem;border-left:2px solid var(--red);border-bottom:2px solid var(--red);transform:rotate(-45deg)}
.checks b{color:var(--bone);font-weight:680}
.spec{display:grid;grid-template-columns:1fr;border:1px solid var(--line-2);margin:0}
.spec > div{display:grid;grid-template-columns:minmax(8.5rem,34%) minmax(0,1fr);border-bottom:1px solid var(--line)}
.spec > div:last-child{border-bottom:0}
.spec dt,.spec dd{margin:0;padding:.8rem .9rem}
.spec dt{font-family:var(--f-label);font-weight:700;font-size:.75rem;letter-spacing:.09em;text-transform:uppercase;color:var(--bone-3);border-right:1px solid var(--line)}
.spec dd{color:var(--bone-2)}
.near{list-style:none;margin:1.2rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}
.near a{display:inline-flex;align-items:baseline;gap:.5rem;padding:.55rem .8rem;border:1px solid var(--line-2);text-decoration:none;color:var(--bone);transition:border-color .2s var(--ease),background-color .2s var(--ease)}
.near a:hover,.near a:focus-visible{border-color:var(--red);background:rgba(212,164,63,.08)}
.legal{padding-block:clamp(40px,6vw,80px)}
.legal .wrap{max-width:860px}
.legal h1{font-size:clamp(2rem,1.4rem + 2.2vw,3.2rem);font-weight:780;font-stretch:88%;line-height:1.02;letter-spacing:-.02em;margin-bottom:1rem}
.legal h2{font-size:clamp(1.3rem,1.1rem + .8vw,1.7rem);margin:2.4rem 0 .8rem}
.legal p,.legal li{color:var(--bone-2);max-width:70ch}
.legal .updated{font-family:var(--f-label);font-size:.8rem;letter-spacing:.06em;color:var(--bone-3)}
@media (min-width:1024px){
  .phero-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(32px,4vw,64px)}
  .crumbs ol{padding-inline:calc(var(--gut) + 14px)}
}
@media (min-width:1280px){
  .phero h1{max-width:15ch}
}
/* drawings on inner pages: .detail draws in order on load, .draw draws when scrolled into view.
   Hidden states are gated on html.js and on screen, so scripts off or print shows every line. */
.t-num{font-family:var(--f-label);font-weight:700;font-size:15px;fill:var(--sheet);text-anchor:middle}
.balloon{fill:var(--red)}
.ln-grass{fill:none;stroke:var(--bone-3);stroke-width:1}
.ln-slope{fill:none;stroke:var(--bone-2);stroke-width:1.3;stroke-linecap:round}
@media screen{
  html.js .detail .bld{opacity:0;animation:rise .5s var(--ease) forwards;animation-delay:var(--d,0s)}
  html.js .detail .dl{stroke-dasharray:1;stroke-dashoffset:1;animation:draw .7s var(--ease) forwards;animation-delay:var(--d,0s)}
  html.js .detail .dt{opacity:0;animation:fade .3s linear forwards;animation-delay:var(--d,0s)}
  html.js .draw .dl{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .8s var(--ease);transition-delay:var(--d,0s)}
  html.js .draw .bld{opacity:0;transform:translateY(12px);transition:opacity .45s var(--ease),transform .45s var(--ease);transition-delay:var(--d,0s)}
  html.js .draw .dt{opacity:0;transition:opacity .35s linear;transition-delay:calc(var(--d,0s) + .35s)}
  html.js .draw.is-drawn .dl{stroke-dashoffset:0}
  html.js .draw.is-drawn .bld{opacity:1;transform:none}
  html.js .draw.is-drawn .dt{opacity:1}
}
.detail .t-lab{font-size:18px}
.halo{paint-order:stroke;stroke:var(--sheet);stroke-width:6px;stroke-linejoin:round}
.keyed{list-style:none;margin:0;padding:12px 4px 6px;display:grid;gap:.4rem 1rem;counter-reset:k;font-family:var(--f-label);font-size:.82rem;line-height:1.35;color:var(--bone-2)}
.keyed li{counter-increment:k;display:grid;grid-template-columns:1.5rem 1fr;gap:.55rem;align-items:start}
.keyed li::before{content:counter(k);width:1.4rem;height:1.4rem;border-radius:50%;background:var(--red);color:var(--sheet);font-weight:700;font-size:.75rem;display:grid;place-items:center}
@media (min-width:640px){.keyed{grid-template-columns:1fr 1fr}}
@media (max-width:639px){
  .detail .lbl{display:none}
  .detail .bal{transform-box:fill-box;transform-origin:center;transform:scale(1.6)}
}
.sub-h{font-size:clamp(1.3rem,1.1rem + .9vw,1.7rem);font-stretch:90%;font-weight:720;margin:clamp(40px,5vw,64px) 0 1rem;max-width:30ch}
.prose h3{margin:1.8rem 0 .5rem;color:var(--bone)}
.prose h3 + p{color:var(--bone-2);font-size:inherit}
.plate.draw{max-width:760px}
.plate.draw svg{display:block;width:100%;height:auto;overflow:visible}
@media (min-width:640px){.spec > div{grid-template-columns:minmax(8rem,11rem) minmax(0,1fr)}}
@media (max-width:639px){.detail .t-dim{font-size:26px}}

.near{margin-bottom:1.2rem}
.costs thead th{white-space:nowrap}
.costs td{min-width:9.5rem}
:where(.page-home) .costs thead th{white-space:normal}
:where(.page-home) .costs td{min-width:0}
.plate .detail-tb{margin:8px -8px -8px}
@media (max-width:639px){
  .plate.draw .t-lab{font-size:23px}
  .plate.draw .t-sub{font-size:19px}
  .plate.draw .t-dim{font-size:22px}
  .spec > div{grid-template-columns:1fr}
  .spec dt{border-right:0;padding-bottom:0}
  .spec dd{padding-top:.3rem}
}
.legal ul{padding-left:1.3rem;margin:0 0 1em}.legal li{margin:.35rem 0}
.detail .about-tb{border:0}.detail .about-tb > div:first-child dd{color:var(--bone);font-weight:700}
/* town vicinity map: two layouts, the narrow one wherever the map column is under ~560px */
.townmap .tm-fig svg{display:block;width:100%;height:auto}
.townmap .tm-fig svg.tm-sm{display:none}
@media (max-width:639px),(min-width:1024px) and (max-width:1279px){.townmap .tm-fig svg.tm-lg{display:none}.townmap .tm-fig svg.tm-sm{display:block}}
.tm-frame{fill:none;stroke:var(--line-2);stroke-width:1}
.tm-water{fill:url(#h-water);stroke:#8C9199;stroke-width:1.2}
.tm-stream{fill:none;stroke:#8C9199;stroke-width:1.3;stroke-dasharray:6 3;stroke-linecap:round;stroke-linejoin:round}
.tm-river{fill:none;stroke:#8C9199;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.tm-sec{fill:none;stroke:var(--bone-3);stroke-opacity:.75;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.tm-pri{fill:none;stroke:var(--bone-2);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.tm-fwy-c{fill:none;stroke:var(--bone-2);stroke-width:7;stroke-linecap:round;stroke-linejoin:round}
.tm-fwy-i{fill:none;stroke:var(--sheet);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.tm-route-plate{fill:var(--sheet);stroke:var(--bone-2);stroke-width:1}
.tm-route{font-family:var(--f-label);font-weight:700;font-size:13.5px;letter-spacing:.04em;fill:var(--bone);text-anchor:middle}
.tm-lbl{font-family:var(--f-label);font-weight:700;font-size:13.5px;letter-spacing:.07em;fill:var(--bone-2)}
.tm-sm .tm-lbl{font-size:13px}
.tm-town{font-family:var(--f-display);font-weight:760;font-size:16px;letter-spacing:.06em;fill:var(--red)}
.tm-sm .tm-town{font-size:15px}
.tm-water-lbl{font-family:var(--f-label);font-style:italic;font-weight:600;font-size:13.5px;letter-spacing:.04em;fill:#B9BDC3}
.tm-num{font-family:var(--f-label);font-weight:700;font-size:14px;fill:var(--sheet);text-anchor:middle}
.townmap .detail-tb span:first-child{white-space:nowrap}
.tm-shore{fill:none;stroke:#8C9199;stroke-width:1.2;stroke-linejoin:round}
.tm-sb-bg{fill:var(--sheet);fill-opacity:.85}
.townmap .tm-fig svg{overflow:hidden}
@media (min-width:768px){.qa-grid > :last-child:nth-child(odd){grid-column:1/-1}}

/* ---- town pages (2026-09-22): every service with its own photo and link, no map ---- */
.phero .hero-shot{margin:0}
.svc-rows{display:grid;gap:clamp(48px,6vw,88px);margin-top:clamp(36px,4.5vw,64px)}
.svc-row{display:grid;gap:22px;align-items:center}
.svc-row .plate{margin:0}
.svc-row h3{margin:0 0 .7rem;font-size:clamp(1.55rem,1.15rem + 1.3vw,2.15rem);line-height:1.1}
.svc-row h3 a{color:var(--bone);text-decoration:none;background:linear-gradient(var(--red),var(--red)) 0 100%/0 2px no-repeat;transition:background-size .3s var(--ease)}
.svc-row h3 a:hover,.svc-row h3 a:focus-visible{background-size:100% 2px}
.svc-row p{margin:0 0 .9rem;color:var(--bone-2);max-width:54ch}
.svc-row p.svc-line{color:var(--bone);font-size:1.08rem;line-height:1.55}
.go{display:inline-flex;align-items:center;gap:.55rem;margin-top:.4rem;padding:.4rem 0;font-family:var(--f-label);font-weight:700;font-size:.8rem;letter-spacing:.09em;text-transform:uppercase;color:var(--bone);text-decoration:none;border-bottom:1px solid var(--red)}
.go svg,.tile-go svg{width:18px;height:18px;flex:0 0 18px;stroke:currentColor;fill:none;stroke-width:1.5;transition:transform .2s var(--ease)}
.go:hover svg,.go:focus-visible svg,.tile:hover .tile-go svg,.tile:focus-within .tile-go svg{transform:translateX(3px)}
@media (min-width:768px){ .svc-row{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(28px,4vw,64px)} .svc-row:nth-child(even) .plate{order:2} }
.svc-tiles{list-style:none;margin:clamp(32px,4vw,52px) 0 0;padding:0;display:grid;gap:clamp(18px,2vw,28px)}
.tile{position:relative;display:flex;flex-direction:column;height:100%;padding:8px 8px 1.1rem;border:1px solid var(--line-2);background:var(--sheet);transition:border-color .2s var(--ease),background-color .2s var(--ease)}
.tile img{display:block;width:100%;height:auto}
.tile h3{margin:1.05rem .5rem .45rem;font-size:1.3rem;line-height:1.15}
.tile h3 a{color:var(--bone);text-decoration:none}
.tile h3 a::after{content:"";position:absolute;inset:0}
.tile h3 a:focus-visible{outline:none}
.tile:has(a:focus-visible){outline:2px solid var(--red);outline-offset:2px}
.tile p{margin:0 .5rem;color:var(--bone-2);font-size:.97rem;line-height:1.5}
.tile-go{display:flex;justify-content:flex-end;margin:auto .5rem 0;padding-top:.9rem;color:var(--bone-3)}
.tile:hover,.tile:focus-within{border-color:var(--red);background:var(--sheet-2)}
.tile:hover .tile-go,.tile:focus-within .tile-go{color:var(--bone)}
@media (min-width:600px){ .svc-tiles{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (min-width:900px){ .svc-tiles{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media (min-width:1024px) and (max-width:1179px){ .svc-tiles{grid-template-columns:repeat(2,minmax(0,1fr))} }
.pair{display:grid;gap:clamp(28px,4vw,56px)}
.pair .plate{margin:0}
@media (min-width:1024px){ .pair{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start} }
.checklist{list-style:none;margin:1.1rem 0 1.4rem;padding:0;border-top:1px solid var(--line-2);max-width:60ch}
.checklist li{position:relative;padding:.8rem .2rem .8rem 2.1rem;border-bottom:1px solid var(--line);color:var(--bone)}
.checklist li::before{content:"";position:absolute;left:.35rem;top:1.12rem;width:.8rem;height:.42rem;border-left:2px solid var(--call);border-bottom:2px solid var(--call);transform:rotate(-45deg)}
.plainlist{list-style:none;margin:1.1rem 0 1.4rem;padding:0;border-top:1px solid var(--line-2);max-width:60ch}
.plainlist li{position:relative;padding:.8rem .2rem .8rem 2.1rem;border-bottom:1px solid var(--line);color:var(--bone)}
.plainlist li::before{content:"";position:absolute;left:.35rem;top:calc(.8rem + .84em - 1px);width:10px;height:2px;background:var(--bone-3)}
.near-label{margin-top:1.8rem}
.near a{font-size:1.02rem;padding:.7rem .95rem}
.near .nolink{display:inline-flex;align-items:baseline;gap:.5rem;padding:.7rem .95rem;border:1px solid var(--line);color:var(--bone-2)}
.all-towns{margin-top:1.3rem}
.all-towns a{font-weight:700;color:var(--bone)}

/* ---- homepage (2026-09-22): the homepage runs on this file too. Its own label sizes and map lettering are scoped with
   :where(.page-home), which adds no specificity, so they sit in the cascade exactly where they did in its old inline copy
   and no other page can match them. ---- */
@media (max-width:639px){:where(.page-home) .map-wrap .map-lab,:where(.page-home) .map-wrap .yard-name,:where(.page-home) .map-wrap .yard-num,:where(.page-home) .map-wrap .map-foot{display:none}}
/* lettering floor: drawn text is scaled so it lands at 12px or more on screen */
:where(.page-home) .map text{transform-box:fill-box}
:where(.page-home) .map .map-name{transform-origin:0 100%;transform:scale(var(--kn,1))}
:where(.page-home) .map .map-num{transform-origin:0 0;transform:scale(var(--kd,1))}
:where(.page-home) .map .map-name[text-anchor="end"]{transform-origin:100% 100%}
:where(.page-home) .map .map-num[text-anchor="end"]{transform-origin:100% 0}
:where(.page-home) .map .map-foot{transform-origin:0 100%}
@media (max-width:389.98px){:where(.page-home) .map{--kd:2.8}}
@media (min-width:390px) and (max-width:479.98px){:where(.page-home) .map{--kd:2.26}}
@media (min-width:480px) and (max-width:639.98px){:where(.page-home) .map{--kd:1.8}}
@media (min-width:640px) and (max-width:799.98px){:where(.page-home) .map{--kn:1.25;--kd:1.37}:where(.page-home) .map .lab-fs{display:none}}
@media (min-width:800px) and (max-width:899.98px){:where(.page-home) .map{--kd:1.08}}
@media (min-width:1024px) and (max-width:1279.98px){:where(.page-home) .map{--kd:2.43}:where(.page-home) .map-wrap .map-lab,:where(.page-home) .map-wrap .yard-name,:where(.page-home) .map-wrap .yard-num{display:none}}
@media (min-width:1280px) and (max-width:1439.98px){:where(.page-home) .map{--kn:1.62;--kd:1.77}:where(.page-home) .map .lab-bv,:where(.page-home) .map .lab-mh,:where(.page-home) .map .lab-wm,:where(.page-home) .map .lab-tx,:where(.page-home) .map .lab-fs{display:none}}
@media (min-width:1440px){:where(.page-home) .map{--kn:1.38;--kd:1.51}:where(.page-home) .map .lab-fs{display:none}}
@media (max-width:479.98px){:where(.page-home) .core-art .t-lab,:where(.page-home) .core-art .t-dim,:where(.page-home) .core-art .t-title,:where(.page-home) .core-art .t-sub,:where(.page-home) .core-art .t-sec{font-size:24px}}

/* ---- Road signs, site-wide (owner, 2026-09-26, verbatim: "yes all 3"; record: DESIGN.md, Named Rules). Moved here
   from the town template so every page draws on one set of rules: yellow = the call and the close, green = where to go
   and how far, blue = what customers say. Nothing here carries a drop shadow at rest; the call button's hover lift
   (above) stays the only shadow. The road rail's center dashes are road-paint yellow at full opacity (.strata::before
   above), as the gauge's paint already was. ---- */
:root{--traffic:#0E4F8A;--traffic-deep:#0A3A66}
::selection{background:#0E4F8A;color:var(--bone)}

/* Blue: the reviews band (the customers' own words). Bone on the band's lightest blue is 6.6:1; the stars are bone,
   unlit ones ash. Cards sit flat on the band: fill and hairline, no shadow. One column, two from 600px (the third spans the
   row), three from 900px. */
.revs{list-style:none;margin:0;padding:0;display:grid;gap:clamp(18px,2vw,28px)}
.rev{display:flex;flex-direction:column;margin:0;padding:1.25rem 1.3rem 1.2rem;border:1px solid var(--line-2);background:var(--sheet)}
.rev-stars{display:block;color:var(--bone);font-size:1.15rem;letter-spacing:.12em;line-height:1}
.rev-stars .rev-off{color:var(--ash)}
.rev-q{margin:.9rem 0 1.1rem;color:var(--bone);font-size:1rem;line-height:1.6;flex:1}
.rev-by{margin:0;padding-top:.8rem;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:.2rem}
.rev-name{color:var(--bone);font-family:var(--f-display);font-weight:700;font-size:1rem}
.rev-meta{color:var(--bone-2);font-size:.8rem;line-height:1.45}
.layer.reviews{background:var(--grain),linear-gradient(180deg,var(--traffic) 0%,var(--traffic) 55%,var(--traffic-deep) 100%)}
.layer.reviews .strip{opacity:.35}
.layer.reviews .lead{background:var(--bone-2)}
.layer.reviews .lead::after{background:var(--bone-2)}
.layer.reviews h2{color:var(--bone)}
.rev{border-color:rgba(233,230,223,.3)}
@media (min-width:600px){ .revs{grid-template-columns:repeat(2,minmax(0,1fr))} .rev:last-child:nth-child(odd){grid-column:1/-1} }
@media (min-width:900px){ .revs{grid-template-columns:repeat(3,minmax(0,1fr))} .rev:last-child:nth-child(odd){grid-column:auto} }

/* Yellow: the close, a full-bleed call-yellow band (warning-sign yellow). Ink #141518 on #FFC848 is 11.8:1, secondary
   #4A3A0C 7.2:1, never grey. It sits over body's side tick strips and 1px border so it runs edge to edge; its texture
   is ink, and the road across its top keeps its own asphalt, edge lines and paint. The call button inverts. */
.close{z-index:2;margin-inline:-1px;border-top:0;color:#141518;background:#FFC848 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96'%3E%3Cg fill='%23141518' fill-opacity='.07'%3E%3Ccircle cx='38.9' cy='9.5' r='.5'/%3E%3Ccircle cx='32' cy='55.9' r='.7'/%3E%3Ccircle cx='57.9' cy='40.6' r='.8'/%3E%3Ccircle cx='93.2' cy='30.1' r='.5'/%3E%3Ccircle cx='3.1' cy='9.9' r='.8'/%3E%3Ccircle cx='71.4' cy='78.2' r='.6'/%3E%3Ccircle cx='14.7' cy='83.5' r='.7'/%3E%3Ccircle cx='50.2' cy='88.8' r='.5'/%3E%3C/g%3E%3C/svg%3E")}
.close h2,.close h3{color:#141518}
.close p,.close strong{color:#141518}
.close .reach,.close .small{color:#4A3A0C}
.close a:not(.call){color:#141518;text-decoration-color:#141518}
.close a:not(.call):hover{color:#141518;text-decoration-thickness:2px}
.close :focus-visible{outline-color:#141518}
.close .call{background:#141518;color:#FFC848}
.close .call:hover{background:#2A2D31;color:#FFC848}
.close .call:focus-visible{outline:2px solid #141518;outline-offset:3px}
.close .plate{border-color:#141518}
.close .plate::before,.close .plate::after{border-color:#141518}
.close .spec{border-color:rgba(20,21,24,.42)}
.close .spec > div{border-bottom-color:rgba(20,21,24,.2)}
.close .spec dt{color:#4A3A0C;border-right-color:rgba(20,21,24,.2)}
.close .spec dd{color:#141518}
.close ::selection{background:#141518;color:#FFC848}
/* From 1024px body sits 14px in from each side, so the band reaches out 15px (margin plus border) and the road curve,
   the road and the content move back in by the same 15px to stay on the rail's line. */
@media (min-width:1024px){
  .close{margin-inline:-15px}
  .close .xcurve{left:15px}
  .close .xroad{left:132px}
  .close .wrap{padding-left:calc(var(--rail) + clamp(40px,4vw,64px) + 15px);padding-right:calc(var(--gut) + 15px)}
}

/* Green: a list of towns is a highway guide sign (white on #0B6B47 is 6.5:1, on #08573A
   8.6:1), with a white border inset 6px like a real sign's. The section heading, its sentence and any prose about where
   we go stay on the asphalt outside it. A short list (.near) sits one town per line, A to Z, the name alone, with no
   minutes, miles or separator dot (2026-09-27); the long town lists (.towns, on home and the locations hub) fill their column,
   except home's A-to-Z list (.towns-az), a grid filled row by row under 1024px (2026-09-27). */
.sign .near{display:grid;gap:0;max-width:24rem}
.sign .near li{border-bottom:1px solid var(--line)}
.sign .near li:first-child{border-top:1px solid var(--line)}
.sign .near .nolink,.sign .near a{display:block}
.sign .near .nolink{border:0;padding:.6rem 0}
.sign .near a{margin-block:.3rem}
.sign{position:relative;max-width:26rem;margin-top:1.8rem;padding:1.3rem 1.4rem 1.25rem;color:#FFFFFF;background:linear-gradient(180deg,#0B6B47 0%,#08573A 100%);border-radius:6px}
.sign + p{margin-top:1.8rem}
.sign::before{content:"";position:absolute;inset:6px;border:2px solid #FFFFFF;border-radius:3px;pointer-events:none}
.sign .near-label{margin:0 0 .7rem;color:#FFFFFF;font-weight:700}
.sign .near{max-width:none;margin:0}
.sign .near li{border-bottom-color:rgba(255,255,255,.35)}
.sign .near li:first-child{border-top-color:rgba(255,255,255,.35)}
.sign .near .nolink{color:#FFFFFF}
.sign .near a{border:0;padding:.6rem 0;margin:0;background:none;color:#FFFFFF;text-decoration:underline;text-decoration-color:#FFFFFF;text-decoration-thickness:1px}
.sign a:hover,.sign a:focus-visible{color:#FFFFFF;text-decoration-color:#FFFFFF;text-decoration-thickness:3px}
.sign .near a:has(.tn){text-decoration:none}
.sign .near a .tn{text-decoration:underline;text-decoration-color:#FFFFFF;text-decoration-thickness:1px;text-underline-offset:.22em}
.sign .near a:hover .tn,.sign .near a:focus-visible .tn{text-decoration-thickness:3px}
.sign .near a:hover,.sign .near a:focus-visible{border:0;background:none}
.sign :focus-visible{outline:2px solid #FFFFFF;outline-offset:3px}
.sign .all-towns{margin:1rem 0 0}
.sign .all-towns a{color:#FFFFFF;text-decoration:underline;text-decoration-color:#FFFFFF;text-decoration-thickness:1px}
.sign.sign-list{max-width:none;margin-top:0;padding:1.4rem 1.5rem 1.3rem}
.sign .towns a{color:#FFFFFF;border-bottom-color:rgba(255,255,255,.35)}
.sign .towns .nolink{color:#FFFFFF;border-bottom-color:rgba(255,255,255,.35)}
.sign .towns .tn{text-decoration:underline;text-decoration-color:#FFFFFF;text-decoration-thickness:1px;text-underline-offset:.22em}
.sign .towns a:hover,.sign .towns a:focus-visible{background:rgba(255,255,255,.1);color:#FFFFFF}
.sign .towns a:hover .tn{text-decoration-thickness:3px}
.sign .towns a:focus-visible{outline-offset:-2px}
