@font-face{font-family:Barlow;src:url('/assets/fonts/barlow-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Barlow;src:url('/assets/fonts/barlow-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:Barlow;src:url('/assets/fonts/barlow-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:Barlow;src:url('/assets/fonts/barlow-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Barlow Condensed';src:url('/assets/fonts/barlow-condensed-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Barlow Condensed';src:url('/assets/fonts/barlow-condensed-800.woff2') format('woff2');font-weight:800;font-style:normal;font-display:swap}

:root{--navy:#132d5f;--blue:#214481;--red:#d51f32;--ink:#17191d;--asphalt:#25282d;--paper:#f4f1e9;--white:#fff;--line:rgba(19,45,95,.2);--max:1280px;--space-section:clamp(4.5rem,6vw,6rem);--space-gutter:clamp(1.25rem,4vw,3rem);--space-cluster:2rem;--red-on-navy:#f0808d;--display:'Barlow Condensed',Impact,sans-serif;--body:Barlow,Arial,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:18px;line-height:1.55;text-rendering:optimizeLegibility}
img,video{display:block;max-width:100%}
a{color:inherit;text-decoration-thickness:1.5px;text-underline-offset:4px}
button,input,select,textarea{font:inherit}
button,a{-webkit-tap-highlight-color:transparent}
a:focus-visible,button:focus-visible{outline:3px solid var(--white);outline-offset:2px;box-shadow:0 0 0 5px var(--red)}
.skip-link{position:fixed;left:1rem;top:-8rem;z-index:100;background:var(--white);color:var(--navy);padding:.75rem 1rem;font-weight:700}
.skip-link:focus{top:1rem}
.site-header{height:92px;background:var(--white);border-bottom:1px solid var(--line);display:grid;grid-template-columns:minmax(220px,1fr) auto minmax(240px,1fr);align-items:center;padding:0 clamp(1rem,4vw,4rem);position:relative;z-index:20}
.brand{display:block;width:214px;height:76px;overflow:hidden}
.brand img{width:100%;height:100%;object-fit:contain}
.desktop-nav{display:flex;align-items:center;gap:2.2rem;font-size:.86rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.desktop-nav a{text-decoration:none}.desktop-nav a:hover{text-decoration:underline;text-decoration-color:var(--red)}
.header-call{justify-self:end;display:grid;text-align:right;text-decoration:none;line-height:1.1}
.header-call span{font-size:.68rem;text-transform:uppercase;letter-spacing:.14em;color:#5d6570}.header-call strong{font-family:var(--display);font-size:1.4rem;color:var(--navy)}
.menu-toggle,.mobile-nav{display:none}


.hero{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(420px,.92fr);grid-template-rows:auto auto;background:var(--navy);color:var(--white);overflow:hidden}
.hero-copy{padding:clamp(3rem,4.6vw,5rem) clamp(1.5rem,5vw,5rem) clamp(3.5rem,4.5vw,4.5rem);position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:center;min-height:clamp(640px,calc(100svh - 162px),780px)}
.hero-copy:before{content:"";position:absolute;left:0;right:0;bottom:1.6rem;height:8px;background:linear-gradient(90deg,var(--red) 0 42%,transparent 42%);z-index:-1;transform-origin:left;animation:route-draw .8s ease-out both}
.route-stamp{width:max-content;border:2px solid rgba(255,255,255,.65);display:grid;grid-template-columns:auto auto auto;align-items:center;margin-bottom:1.75rem;font-family:var(--display);font-weight:700;font-size:.78rem;letter-spacing:.08em;text-align:center;transform:rotate(-2deg)}
.route-stamp span{padding:0 .6rem}.route-stamp strong{background:var(--white);color:var(--navy);font-size:1.45rem;padding:.16rem .45rem;letter-spacing:0}
.hero h1,.section-heading h2,.work-heading h2,.process h2,.estimate h2{font-family:var(--display);font-weight:800;text-transform:uppercase;letter-spacing:-.025em;line-height:.88;margin:0;text-wrap:balance}
.hero h1{font-size:clamp(4.1rem,6.4vw,6rem);max-width:760px}
.hero-lead{font-size:clamp(1.05rem,1.35vw,1.2rem);max-width:650px;color:#e7ebf3;margin:1.35rem 0 0}
.hero-actions{display:grid;grid-template-columns:repeat(2,minmax(0,max-content));gap:.7rem;margin:1.6rem 0 0}.hero-actions .button{white-space:nowrap}
.button{min-height:54px;display:inline-flex;align-items:center;justify-content:center;padding:.9rem 1.35rem;border:2px solid transparent;font-weight:700;text-decoration:none;cursor:pointer;transition:background-color .18s,color .18s,border-color .18s,transform .18s}
.button:hover{transform:translateY(-2px)}
.button-primary{background:var(--red);color:var(--white)}.button-primary:hover{background:#b91829}
.button-quiet{border-color:rgba(255,255,255,.55);color:var(--white)}.button-quiet:hover{border-color:var(--white);background:var(--white);color:var(--navy)}
.offer-pair{display:grid;grid-template-columns:repeat(2,minmax(0,250px));gap:.7rem;margin-top:1.1rem}
.offer-ticket{background:var(--white);color:var(--navy);padding:.85rem 1.1rem .8rem;min-width:0;border-top:6px solid var(--red);display:flex;flex-direction:column;justify-content:flex-start;text-decoration:none;transition:transform .18s}
.offer-ticket:hover{transform:translateY(-2px)}
.offer-ticket span{display:block;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em}.offer-ticket strong{font-family:var(--display);font-size:2.1rem;line-height:1;text-transform:uppercase}.offer-ticket p{font-size:.78rem;line-height:1.3;margin:.2rem 0 0}
.hero-media{position:relative;min-height:0;background:#0f1725;overflow:hidden}
.hero-media:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 52%,rgba(9,17,32,.82));pointer-events:none}
.hero-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 40%}
.media-caption{position:absolute;z-index:2;left:2rem;right:2rem;bottom:2rem;display:grid;grid-template-columns:1fr auto;color:var(--white);align-items:end}
.media-caption span{grid-column:1/-1;font-size:.65rem;text-transform:uppercase;letter-spacing:.16em}.media-caption strong{font-family:var(--display);font-size:2rem;text-transform:uppercase}.media-caption time{font-size:.8rem}
.hero-rail{grid-column:1/-1;background:var(--asphalt);min-height:66px;display:grid;grid-template-columns:repeat(3,1fr);align-items:center;padding:0 clamp(1.4rem,5vw,5rem);gap:2rem;font-family:var(--display);font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:1rem}
.hero-rail span:not(:last-child){border-right:1px solid rgba(255,255,255,.25)}

.service-block{max-width:var(--max);margin:auto;padding:var(--space-section) var(--space-gutter);scroll-margin-top:0}
.service-asphalt{padding-top:0}
.section-mark{flex:0 0 auto;width:82px;height:82px;background:var(--red);color:var(--white);display:grid;place-items:center;font-family:var(--display);font-size:2.6rem;font-weight:800;line-height:1;padding-top:.6rem;clip-path:polygon(50% 0,100% 25%,86% 100%,14% 100%,0 25%)}
.section-heading{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.55fr);gap:2.5rem;align-items:end;border-bottom:2px solid var(--navy);padding-bottom:1.5rem}
.section-title-row{display:flex;align-items:flex-start;gap:1.5rem;min-width:0}.section-heading h2{font-size:clamp(3.2rem,5.4vw,5.6rem);color:var(--navy);min-width:0}
.section-heading p{font-size:1.08rem;margin:0 0 .35rem;max-width:440px}
.service-body{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(2rem,4vw,3.5rem);margin-top:2.5rem;align-items:start}
.service-body-flip .before-after{order:2}
.before-after{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.ba-frame{position:relative;margin:0;background:#111318;aspect-ratio:4/5;overflow:hidden}
.ba-frame img{width:100%;height:100%;object-fit:cover}
.ba-tag{position:absolute;left:.7rem;top:.7rem;background:var(--white);color:var(--navy);font-family:var(--display);font-weight:800;font-size:1rem;letter-spacing:.06em;text-transform:uppercase;padding:.2rem .6rem}
.ba-tag-after{background:var(--red);color:var(--white)}
.before-after figcaption{grid-column:1/-1;font-size:.78rem;color:#5d6570;letter-spacing:.02em}
.service-detail{display:grid;gap:1.4rem;align-content:start}
.service-detail h3{font-family:var(--display);font-size:2.2rem;line-height:1;text-transform:uppercase;color:var(--navy);margin:0}
.steps-mini{list-style:none;counter-reset:s;margin:0;padding:0;border-top:1px solid var(--line)}
.steps-mini li{counter-increment:s;position:relative;padding:.85rem 0 .85rem 2.6rem;border-bottom:1px solid var(--line)}
.steps-mini li:before{content:counter(s,decimal-leading-zero);position:absolute;left:0;top:.85rem;font-family:var(--display);font-weight:800;color:var(--red);font-size:1.25rem;line-height:1.3}
.steps-mini strong{color:var(--navy)}
.tick-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem 1.2rem;font-weight:600}
.tick-list li{position:relative;padding-left:1.4rem;line-height:1.35}.tick-list li:before{content:"";position:absolute;left:0;top:.42em;width:.62rem;height:.62rem;background:var(--red);clip-path:polygon(50% 0,100% 25%,86% 100%,14% 100%,0 25%)}
.service-offer{display:flex;align-items:center;gap:1rem;background:var(--navy);color:var(--white);padding:1rem 1.2rem;border-left:8px solid var(--red)}
.service-offer strong{font-family:var(--display);font-size:2.4rem;line-height:1;text-transform:uppercase;white-space:nowrap}.service-offer span{font-size:.95rem;line-height:1.35}
.service-detail .button{justify-self:start}
.service-ledger{display:grid;grid-template-columns:1fr;border-top:1px solid var(--line)}
.service-ledger article{display:grid;grid-template-columns:2.4rem 1fr;column-gap:0;padding:1rem 0;border-bottom:1px solid var(--line)}
.service-ledger article>span{grid-row:1/3;font-family:var(--display);font-weight:800;color:var(--red);font-size:1.4rem;line-height:1.2}
.service-ledger h3{font-size:1.65rem;margin:0 0 .3rem}.service-ledger p{margin:0}
.choose-strip{margin-top:3rem;display:grid;grid-template-columns:auto 1fr;gap:1rem 2rem;align-items:center;border-top:5px solid var(--red);border-bottom:2px solid var(--navy);padding:1.4rem 0}
.choose-strip strong{font-family:var(--display);font-size:2.2rem;line-height:1;text-transform:uppercase;color:var(--navy)}.choose-strip p{margin:0;font-size:1.05rem;max-width:62ch}

.work{background:var(--asphalt);color:var(--white);padding:var(--space-section) var(--space-gutter)}
.work-heading{max-width:var(--max);margin:0 auto 2rem;display:flex;justify-content:space-between;gap:2rem;align-items:end;border-bottom:1px solid rgba(255,255,255,.24);padding-bottom:1.25rem}
.work-heading h2{font-size:clamp(3.6rem,5.6vw,5.8rem)}.work-heading p{margin:0 0 .35rem;color:#cfd3da}
.work-grid{max-width:var(--max);margin:auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:340px 340px;grid-auto-rows:auto;gap:1.25rem}
.work-card{margin:0;background:#111318;position:relative;overflow:hidden}.work-card-tall{grid-row:span 2}.work-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.work-card:after{content:"";position:absolute;inset:55% 0 0;background:linear-gradient(transparent,rgba(8,10,14,.88));pointer-events:none}.work-card figcaption{position:absolute;z-index:2;bottom:1.2rem;left:1.2rem;right:1.2rem;display:flex;justify-content:space-between;gap:1rem;align-items:end}.work-card strong{font-family:var(--display);font-size:1.8rem;line-height:1;text-transform:uppercase}.work-card span{font-size:.75rem;color:#d6dae2;white-space:nowrap}
.work-note{grid-column:1/-1;background:var(--red);padding:1.5rem 1.75rem;display:grid;grid-template-columns:auto 1fr auto;gap:.5rem 2rem;align-items:center}.work-note>span{font-size:.7rem;text-transform:uppercase;letter-spacing:.14em}.work-note p{font-family:var(--display);font-size:2rem;line-height:1.05;text-transform:uppercase;font-weight:700;margin:0;max-width:34ch}.work-note-link{align-self:center;justify-self:start;display:inline-flex;min-height:48px;align-items:center;padding:.7rem 1rem;border:2px solid rgba(255,255,255,.7);font-weight:700;text-decoration:none}.work-note-link:hover{background:var(--white);color:var(--red)}

.area{max-width:var(--max);margin:auto;padding:var(--space-section) var(--space-gutter)}
.area-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,4vw,3.5rem);margin-top:2.5rem;align-items:start}
.area-map{background:var(--navy);border-top:8px solid var(--red)}
.area-map-svg{display:block;width:100%;height:auto}
.map-field{fill:var(--navy)}
.map-ring{fill:rgba(255,255,255,.05);stroke:var(--red);stroke-width:3}
.map-ring-inner{fill:rgba(255,255,255,.04);stroke:rgba(255,255,255,.4);stroke-width:1.5;stroke-dasharray:6 6}
.map-axis{stroke:rgba(255,255,255,.12);stroke-width:1}
.map-ring-label{fill:var(--red-on-navy);font-family:var(--display);font-weight:700;font-size:17px;letter-spacing:.12em}
.map-dots circle{fill:var(--white)}
.map-labels text{fill:#eef2f8;font-family:var(--body);font-weight:600;font-size:17px;paint-order:stroke;stroke:var(--navy);stroke-width:4px;stroke-linejoin:round}
.map-center{fill:var(--red);stroke:var(--white);stroke-width:3}
.map-center-label{fill:var(--white);font-family:var(--display);font-weight:800;font-size:22px;letter-spacing:.06em;paint-order:stroke;stroke:var(--navy);stroke-width:5px;stroke-linejoin:round}
.area-towns h3{font-family:var(--display);font-size:2.2rem;line-height:1;text-transform:uppercase;color:var(--navy);margin:0 0 1rem}
.town-list{list-style:none;margin:0;padding:0;columns:3 9rem;column-gap:1.5rem;font-size:.98rem;line-height:1.3}
.town-list li{break-inside:avoid;padding:.32rem 0;border-bottom:1px solid var(--line)}
.area-outside{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 2rem;border-bottom:2px solid var(--navy);padding:1.6rem 0;margin-top:1.5rem}
.area-outside p{margin:0;max-width:46ch;font-size:1rem}
.area-outside a{display:inline-flex;align-items:center;min-height:54px;padding:.8rem 1.35rem;border:2px solid var(--navy);color:var(--navy);font-family:var(--display);font-size:1.75rem;line-height:1;text-decoration:none;transition:background-color .18s,color .18s}
.area-outside a:hover{background:var(--navy);color:var(--white)}

.process{background:var(--white);padding:var(--space-section) max(1.25rem,calc((100vw - var(--max))/2 + 3rem))}
.process h2{font-size:clamp(3.4rem,5.6vw,6rem);color:var(--navy);max-width:920px}
.process ol{list-style:none;margin:2rem 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);border-top:5px solid var(--red)}
.process li{padding:2rem;border-right:1px solid var(--line)}.process li:last-child{border-right:0}.process li>span{display:block;font-family:var(--display);font-size:2.8rem;color:var(--red);font-weight:800}.process li strong{font-family:var(--display);font-size:1.7rem;text-transform:uppercase;color:var(--navy)}.process li p{margin:.65rem 0 0}

.estimate{background:var(--navy);color:var(--white);padding:var(--space-section) max(1.25rem,calc((100vw - var(--max))/2 + 3rem));display:grid;grid-template-columns:minmax(280px,.75fr) minmax(500px,1.25fr);gap:clamp(3rem,5vw,5rem);align-items:start}
.estimate h2{font-size:clamp(4rem,5.8vw,6rem)}.estimate-copy>p{font-size:1.1rem;color:#dce3f0;max-width:470px}.phone-panel{display:block;background:transparent;border:2px solid rgba(255,255,255,.65);padding:1rem 1.2rem;margin:1.75rem 0 .8rem;text-decoration:none;max-width:340px}.phone-panel:hover{background:var(--white);color:var(--navy)}.phone-panel span{display:block;text-transform:uppercase;letter-spacing:.12em;font-size:.67rem}.phone-panel strong{font-family:var(--display);font-size:2rem;line-height:1}
.text-link{display:inline-flex;align-items:center;min-height:44px;font-weight:700;color:var(--white);text-decoration:underline;text-decoration-color:var(--red-on-navy)}
.offer-reminder{list-style:none;margin:1.4rem 0 0;padding:1rem 0 0;border-top:1px solid rgba(255,255,255,.25);display:grid;gap:.4rem;font-size:.95rem;color:#dce3f0}.offer-reminder strong{color:var(--white);font-family:var(--display);font-size:1.35rem;text-transform:uppercase;margin-right:.35rem}
.estimate-form{background:linear-gradient(var(--red) 0 10px,var(--white) 10px);color:var(--ink);padding:clamp(1.25rem,4vw,3rem);min-width:0}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.2rem;--tdm-gap:1.2rem}.form-grid label{display:grid;gap:.38rem;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:#4b5563;min-width:0}.form-grid label span{font-weight:400;text-transform:none;letter-spacing:0}.form-wide{grid-column:1/-1}
input,select,textarea{width:100%;border:1px solid #aeb5c0;border-radius:0;background:var(--white);color:var(--ink);padding:.78rem .85rem;font-size:16px;min-height:50px}
textarea{resize:vertical;min-height:130px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue)}
.honey-field{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(1px,1px,1px,1px)!important;white-space:nowrap!important}
.grecaptcha-badge{visibility:hidden}.button-submit{width:100%;background:var(--red);color:var(--white);margin-top:1rem}.button-submit:hover{background:#b91829}.button-submit[disabled]{opacity:.6;cursor:wait;transform:none}.form-status{min-height:1.5em;margin:.8rem 0 0;font-weight:600}.form-status.is-error{color:#b21628}.form-status.is-success{color:#176835}.form-privacy{font-size:.72rem;color:#687180;margin:.6rem 0 0}.form-privacy a{text-decoration:underline;text-underline-offset:.12em}

.site-footer{background:#0d1930;color:#dfe5ef;display:grid;grid-template-columns:240px 1fr auto;gap:2rem;padding:3rem max(1.25rem,calc((100vw - var(--max))/2 + 3rem));align-items:center;font-size:.85rem}.footer-brand{display:block;height:110px;overflow:hidden;background:var(--white);padding:.6rem .9rem}.footer-brand img{width:100%;height:100%;object-fit:contain}.site-footer p{margin:.2rem 0}.site-footer>div:nth-of-type(2){display:grid;gap:.2rem;text-align:right}.site-footer>div:nth-of-type(2) a{padding:.15rem 0}.copyright{grid-column:1/-1;border-top:1px solid rgba(255,255,255,.18);padding-top:1rem}.mobile-call-bar{display:none}
.legal-page,.not-found-page{background:var(--paper);padding-bottom:0}.legal-page .site-header{grid-template-columns:1fr auto}.legal-content{max-width:820px;margin:auto;padding:clamp(4rem,9vw,8rem) 1.25rem}.legal-content h1,.not-found-content h1{font-family:var(--display);font-size:clamp(4rem,10vw,7rem);line-height:.9;text-transform:uppercase;color:var(--navy);margin:1.5rem 0 2rem}.legal-content h2{font-family:var(--display);font-size:2rem;text-transform:uppercase;color:var(--navy);margin-top:2.6rem}.legal-content a{overflow-wrap:anywhere}.not-found-content{min-height:100svh;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;max-width:850px;margin:auto;padding:2rem}.not-found-content img{width:260px;height:150px;object-fit:contain}.not-found-content p{font-family:var(--display);font-weight:700;letter-spacing:.08em;color:var(--red);text-transform:uppercase}.not-found-content .button{width:auto}.not-found-call{margin-top:1rem;font-weight:700;color:var(--navy)}

@keyframes route-draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-copy:before{animation:none}.button,.area-outside a,.offer-ticket{transition:none}}

@media (max-width:1200px) and (min-width:961px){
  .hero h1{font-size:clamp(3.8rem,6vw,5.2rem)}.offer-pair{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:960px){
  .site-header{grid-template-columns:1fr auto;height:78px;padding:0 1.2rem}.brand{width:150px;height:64px}.desktop-nav,.header-call{display:none}.menu-toggle{display:grid;width:44px;height:44px;border:0;background:transparent;padding:10px;align-content:center;gap:7px}.menu-toggle span{display:block;height:2px;background:var(--navy);transition:transform .2s}.menu-toggle[aria-expanded="true"] span:first-child{transform:translateY(4.5px) rotate(45deg)}.menu-toggle[aria-expanded="true"] span:last-child{transform:translateY(-4.5px) rotate(-45deg)}.mobile-nav{position:absolute;display:none;top:78px;left:0;right:0;background:var(--white);border-bottom:4px solid var(--red);padding:1.2rem}.mobile-nav.is-open{display:grid}.mobile-nav a{padding:.75rem 0;font-family:var(--display);font-size:1.35rem;text-transform:uppercase;text-decoration:none;border-bottom:1px solid var(--line)}
  .hero{grid-template-columns:1fr;grid-template-rows:auto auto auto}.hero-copy{min-height:0;padding:4rem 1.5rem 3.5rem}.hero-media{height:500px}.hero-rail{grid-column:1;grid-template-columns:1fr;padding:1.2rem;gap:.55rem}.hero-rail span:not(:last-child){border-right:0}
  .section-mark{width:64px;height:64px;font-size:2.1rem}.section-heading{grid-template-columns:1fr;gap:1.25rem}
  .service-body{grid-template-columns:1fr}.service-body-flip .before-after{order:0}
  .work-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:300px 300px 300px auto}.work-note{grid-column:1/-1;grid-template-columns:1fr;align-content:center}.work-grid>.work-note{grid-row:auto}
  .area-grid{grid-template-columns:1fr}.area-map{max-width:560px}
  .estimate{grid-template-columns:1fr}.site-footer{grid-template-columns:180px 1fr}.site-footer>div:nth-of-type(2){text-align:left}
}

@media (max-width:640px){
  body{font-size:16px;padding-bottom:calc(68px + env(safe-area-inset-bottom))}.hero-copy{padding:3rem 1.25rem 2.75rem}.hero-copy:before{bottom:1rem}.route-stamp{margin-bottom:1.4rem}.hero h1{font-size:clamp(3.2rem,15vw,4.4rem)}.hero-lead{font-size:1.05rem}.hero-actions{grid-template-columns:1fr}.button{width:100%}.offer-pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.offer-ticket{padding:.75rem .8rem .7rem}.offer-ticket strong{font-size:1.75rem}.offer-ticket p{font-size:.74rem}.hero-media{height:420px}.media-caption{left:1.2rem;right:1.2rem;bottom:1.4rem}.hero-rail{font-size:.92rem}
  .service-block{padding:3.75rem 1.2rem}.service-asphalt{padding-top:0}.section-title-row{gap:.9rem}.section-mark{width:52px;height:52px;font-size:1.7rem}.section-heading h2,.work-heading h2,.process h2,.estimate h2{font-size:clamp(2.6rem,12.5vw,3.4rem)}.service-detail h3{font-size:1.9rem}.tick-list{grid-template-columns:1fr}.service-offer{gap:.8rem;padding:.9rem 1rem}.service-offer strong{font-size:2rem}.choose-strip{grid-template-columns:1fr;gap:.5rem}.choose-strip strong{font-size:1.9rem}
  .work{padding:3.75rem 1.2rem}.work-heading{display:block}.work-heading p{margin-top:1rem}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;grid-auto-rows:auto;gap:.6rem}.work-card{grid-row:auto;aspect-ratio:4/5}.work-card-tall{grid-column:1/-1;grid-row:auto}.work-card figcaption{left:.7rem;right:.7rem;bottom:.7rem}.work-card strong{font-size:1.15rem}.work-card span{display:none}.work-card-tall strong{font-size:1.6rem}.work-card-tall span{display:inline}.work-note{grid-column:1/-1;min-height:0;padding:1.4rem;gap:1rem}.work-note p{font-size:1.6rem}
  .area{padding:3.75rem 1.2rem}.area-outside a{width:100%;justify-content:center}.town-list{columns:2}.area-towns h3{font-size:1.9rem}
  .process{padding:3.75rem 1.2rem}.process ol{grid-template-columns:1fr}.process li{border-right:0;border-bottom:1px solid var(--line);padding:1.5rem 0}
  .estimate{padding:3.75rem 1.2rem}.form-grid{grid-template-columns:1fr}.form-wide{grid-column:auto}.estimate-form{padding:1.2rem}.phone-panel{max-width:none}
  .site-footer{grid-template-columns:1fr;padding:3rem 1.2rem;text-align:left}.footer-brand{width:190px}.site-footer>div:nth-of-type(2){text-align:left}.mobile-call-bar{position:fixed;display:flex;left:0;right:0;bottom:0;z-index:50;background:var(--red);color:var(--white);min-height:calc(68px + env(safe-area-inset-bottom));padding:.7rem 1rem calc(.7rem + env(safe-area-inset-bottom));align-items:center;justify-content:space-between;text-decoration:none;box-shadow:0 -4px 16px rgba(0,0,0,.18);transition:transform .2s}.mobile-call-bar span{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.mobile-call-bar strong{font-family:var(--display);font-size:1.4rem}.mobile-call-bar.is-hidden{transform:translateY(110%)}
}
@media (max-width:360px){
  .offer-pair{grid-template-columns:1fr}
}
/* Street / City / State / ZIP group (css/tdm-address.css + js/tdm-address.js): same rhythm as the form grid. */
.form-grid .tdm-address{row-gap:1rem}.form-grid .tdm-address-row{row-gap:1rem}.form-grid select:invalid{color:#6b7280}.form-grid [aria-invalid="true"]{border-color:#b21628}
