:root{--navy:#14417e;--navy-dark:#0e2f5c;--sky:#2e9be0;--ink:#1b2430;--body:#3b4652;--muted:#6b7683;--line:#dde3ea;--bg:#fff;
--soft:#f3f7fb;--warn:#8a5a00;--warn-bg:#fff6e5;--radius:8px;--wrap:1140px}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{overflow-x:clip}
body{margin:0;background:var(--bg);color:var(--body);font:17px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-text-size-adjust:100%}
h1,h2,h3,h4{color:var(--ink);line-height:1.2;margin:0 0 .5em;font-weight:700;text-wrap:balance}
h1{font-size:clamp(28px,5vw,42px)}h2{font-size:clamp(23px,3.4vw,31px);margin-top:1.6em}h3{font-size:20px;margin-top:1.4em}
p,ul,ol{margin:0 0 1.1em}
a{color:var(--navy);text-decoration:underline;text-underline-offset:2px}
a:hover{color:var(--sky)}
img{max-width:100%;height:auto;display:block}
.wrap{max-width:var(--wrap);margin:0 auto;padding-inline:18px}
.skip{position:absolute;left:-9999px}.skip:focus{left:8px;top:8px;background:#fff;padding:10px;z-index:99}
header.site{position:sticky;top:0;z-index:50;background:#fff;border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;gap:clamp(18px,2.4vw,34px);padding-block:21px 15px}
.logo img{height:clamp(34px,3.4vw,44px);width:auto}
.callbtn{display:inline-flex;align-items:center;gap:8px;background:var(--navy);color:#fff;padding:11px 16px;border-radius:var(--radius);
font-weight:700;text-decoration:none;white-space:nowrap}
.callbtn:hover{background:var(--navy-dark);color:#fff}
.callbtn.ghost{background:#fff;color:var(--navy);border:2px solid var(--navy)}
nav.main{margin-left:auto}
nav.main ul{display:flex;gap:clamp(14px,1.9vw,26px);list-style:none;margin:0;padding:0}
nav.main a{color:var(--ink);text-decoration:none;font-size:15px;font-weight:600;padding:8px 0;display:inline-block;
border-bottom:2px solid transparent}
nav.main a:hover{color:var(--navy);border-bottom-color:var(--line)}
nav.main a[aria-current="page"]{color:var(--navy);border-bottom-color:var(--navy)}

/* Hero: the photo is a layer behind the copy, not a column beside it. No seam, no boxed image. */
.hero{position:relative;isolation:isolate;overflow:hidden}
.hero-plain{background:linear-gradient(103deg,#0b2545 0%,#123a6b 58%,#17498c 100%)}
.hero-plain::after{display:none}
.hero-media{position:absolute;inset:0;z-index:0;background:var(--navy-dark)}
.hero-media picture{display:block;width:100%;height:100%}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:62% 64%;display:block}
.hero::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
background:linear-gradient(100deg,rgba(8,26,50,.93) 0%,rgba(8,26,50,.88) 30%,rgba(8,26,50,.42) 54%,rgba(8,26,50,.04) 76%,rgba(8,26,50,0) 100%)}
.hero-inner{position:relative;z-index:2;padding-block:clamp(40px,6vw,86px)}
.hero-copy{max-width:min(620px,100%)}
.hero h1{color:#fff;font-size:clamp(30px,4.3vw,44px);margin-bottom:.4em;text-wrap:balance}
.hero h1 .accent{color:#6cc0f5}
.hero .eyebrow{color:#7fc4f2}
.hero .lead{color:#d7e5f4;font-size:clamp(17px,1.6vw,19.5px);max-width:48ch}
.hero .callbtn{background:var(--sky);color:#06253f}
.hero .callbtn:hover{background:#5bb4ea;color:#06253f}
.hero .callbtn.ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.8)}
.hero .callbtn.ghost:hover{background:rgba(255,255,255,.14);color:#fff}
.hero .badges{color:#c2d5e8;gap:10px 26px;margin-top:22px}
.hero .badges li::before{color:#6cc0f5}
.hero .crumbs{color:#9db8d2;margin-bottom:14px}
.hero .crumbs a{color:#cfe0f0}
.hero-object{position:absolute;z-index:2;right:18px;top:50%;translate:0 -50%;width:min(48%,540px);
pointer-events:none;filter:drop-shadow(0 30px 42px rgba(0,0,0,.45))}
.hero-object img{width:100%;height:auto}
@media (max-width:1100px){.hero-object{position:static;translate:none;width:min(100%,380px);margin:26px auto 0}}
/* Non-hero pages: crumbs and H1 in a tinted band so the H1 is never jammed under the nav. */
.pagehead{background:var(--soft);border-bottom:1px solid var(--line);padding-block:clamp(22px,3.6vw,42px)}
.pagehead h1{margin:0}
.pagehead .crumbs{margin-bottom:10px}
main#main{padding-top:clamp(24px,3vw,38px)}
.eyebrow{color:var(--navy);font-weight:700;letter-spacing:.06em;text-transform:uppercase;font-size:13px;margin-bottom:6px}
.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0 6px}
.badges{display:flex;flex-wrap:wrap;gap:10px 22px;color:var(--muted);font-size:15px;margin-top:10px;padding:0;list-style:none}
.badges li::before{content:"✓";color:var(--navy);font-weight:700;margin-right:6px}
section{padding-block:8px}
.grid{display:grid;gap:18px}
.g2{grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr))}
.card{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#fff;display:flex;flex-direction:column}
.card img{aspect-ratio:3/2;object-fit:cover;width:100%}
.card .body{padding:14px 16px 18px}
.card h3{margin-top:0}
.card p{margin-bottom:.6em}
.card .more{font-weight:600}
.steps{counter-reset:step;list-style:none;padding:0;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr))}
.steps li{counter-increment:step;border:1px solid var(--line);border-radius:var(--radius);padding:16px}
.steps li::before{content:"Step " counter(step);display:block;color:var(--navy);font-weight:700;font-size:13px;letter-spacing:.05em;text-transform:uppercase}
.steps img{width:56px;height:56px;margin:10px 0 6px}
table{border-collapse:collapse;width:100%;font-size:16px}
th,td{border:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top}
th{background:var(--soft)}
.scroll{overflow-x:auto}
details{border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;margin-bottom:10px;background:#fff}
details+details{margin-top:-2px}
summary{cursor:pointer;font-weight:700;color:var(--ink)}
summary::marker{color:var(--navy)}
details[open] summary{margin-bottom:8px}
.panel{background:var(--soft);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin-block:18px}
.panel h2,.panel h3{margin-top:0}
.two-col{display:grid;gap:26px;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));align-items:start}
.media img{border-radius:var(--radius);box-shadow:0 3px 14px rgba(16,32,52,.14)}
.checks,.xs{list-style:none;padding:0}
.checks li,.xs li{padding-left:26px;position:relative;margin-bottom:8px}
.checks li::before{content:"✓";position:absolute;left:0;color:#1d7a46;font-weight:700}
.xs li::before{content:"✕";position:absolute;left:0;color:#b3261e;font-weight:700}
.crumbs{font-size:14.5px;color:var(--muted)}
.crumbs a{color:var(--muted)}
.todo{background:var(--warn-bg);border-left:4px solid var(--warn);padding:10px 14px;color:var(--warn);font-size:15px}
.cta-band{background:var(--navy);color:#fff;border-radius:var(--radius);padding:26px 24px;margin-block:30px;text-align:center}
.cta-band h2{color:#fff;margin-top:0}
.cta-band p{color:#dbe7f5;max-width:60ch;margin-inline:auto}
.cta-band .callbtn{background:#fff;color:var(--navy)}
.cta-band .callbtn:hover{background:#eaf2fb;color:var(--navy-dark)}
.towns{display:flex;flex-wrap:wrap;gap:8px 10px;padding:0;list-style:none}
.towns a{display:inline-block;border:1px solid var(--line);border-radius:100px;padding:6px 14px;text-decoration:none;font-size:15px}
footer.site{background:#0e1b2c;color:#c3cedd;margin-top:40px;padding-block:30px 22px;font-size:15.5px}
footer.site a{color:#fff;text-decoration:none}
footer.site a:hover{text-decoration:underline}
footer.site h3{color:#fff;font-size:16px;margin:0 0 10px}
.fgrid{display:grid;gap:22px;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr))}
footer.site ul{list-style:none;padding:0;margin:0}
footer.site li{margin-bottom:7px}
.fine{border-top:1px solid #21344c;margin-top:22px;padding-top:16px;color:#8fa1b8;font-size:13.5px}
.sticky-call{position:fixed;left:0;right:0;bottom:0;background:var(--navy);color:#fff;display:none;z-index:60;
padding:12px;text-align:center;font-weight:700;text-decoration:none}
@media (max-width:700px){
  .sticky-call{display:block}
  /* The fixed bottom call bar covers this on phones; keeping the header button too
     forces a third header row and eats the fold. */
  .bar .callbtn{display:none}
  body{padding-bottom:56px}
  /* Narrow screens: the sideways scrim leaves the right edge bright, so go vertical. */
  .hero::after{background:linear-gradient(180deg,rgba(8,26,50,.86) 0%,rgba(8,26,50,.8) 55%,rgba(8,26,50,.76) 100%)}
  .hero-inner{padding-block:40px 36px}
  /* Town heroes have no portrait crop, so centre them rather than slicing off one edge. */
  .hero-media img{object-position:center 52%}
}
@media (max-width:900px){
  /* Logo + call button on the first line, nav on its own scrolling line below. */
  .bar{flex-wrap:wrap;gap:12px;padding-block:15px 8px}
  .logo{margin-right:auto}
  /* min-width:0 lets the flex item shrink so the list's own overflow-x can scroll;
     without it the nav forces the whole page wider than the viewport. */
  nav.main{order:3;flex-basis:100%;min-width:0;max-width:100%;margin-left:0;border-top:1px solid var(--line)}
  nav.main ul{flex-wrap:nowrap;overflow-x:auto;gap:20px;padding:3px 0;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  nav.main ul::-webkit-scrollbar{display:none}
  nav.main a{white-space:nowrap}
}
@media (min-width:900px){
  .hero-copy{max-width:min(620px,60%)}
}
@media (min-width:1101px){
  .hero-copy{max-width:min(540px,50%)}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.timeline{counter-reset:t;list-style:none;padding:0;margin:0 0 18px}
.timeline li{counter-increment:t;position:relative;padding:0 0 14px 44px;border-left:2px solid var(--line);margin-left:14px}
.timeline li:last-child{border-left-color:transparent;padding-bottom:0}
.timeline li::before{content:counter(t);position:absolute;left:-15px;top:-2px;width:28px;height:28px;border-radius:50%;
background:var(--navy);color:#fff;display:grid;place-items:center;font-size:14px;font-weight:700}
.reviews .review{margin:0;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;background:#fff}
.reviews blockquote{margin:0 0 10px;font-size:16.5px}
.reviews blockquote p{margin:0}
.reviews figcaption{color:var(--muted);font-size:14.5px}

.caption{color:var(--muted);font-size:14px;margin-top:8px}
.panel h2.qa{font-size:17px;letter-spacing:.04em;text-transform:uppercase;color:var(--navy)}
/* Responsive polish, September 2026. Shared across every public page. */
:root{--wrap:1180px;--radius:12px;--muted:#586878}
body{overflow-x:visible}
a,button,summary{-webkit-tap-highlight-color:transparent}
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid #1785c1;outline-offset:4px}
html{scroll-padding-top:110px}
.bar{gap:22px;padding-block:18px}
.logo{flex:0 1 290px;min-width:180px}
.logo img{width:100%;height:auto}
nav.main ul{gap:20px}
nav.main a{font-size:14px}
.bar>.callbtn{font-size:15px;flex-shrink:0}
.menu-toggle{display:none}
.hero-inner{padding-block:54px}
.hero-plain .hero-inner{display:grid;grid-template-columns:1.05fr 1fr;gap:44px;align-items:center}
.hero-plain .hero-copy{max-width:none;min-width:0}
.hero-plain .hero-object{position:static;translate:none;width:100%;margin:0;filter:drop-shadow(0 24px 28px rgba(0,0,0,.22))}
.hero h1{font-size:clamp(32px,3.8vw,48px);line-height:1.13;letter-spacing:-.025em}
.hero .lead{line-height:1.6;font-size:18px}
.hero .badges{display:grid;gap:7px;font-size:14px;margin:22px 0 0}
.hero .eyebrow{font-size:12px;letter-spacing:.09em;margin-bottom:12px}
.hero .crumbs{font-size:13px;margin-bottom:22px}
.callbtn{min-height:48px;justify-content:center}
.hero-object img{aspect-ratio:1300/663;object-fit:contain}
main#main{padding-top:36px;padding-bottom:12px}
main>p,main>ul:not(.towns),main>ol:not(.steps){max-width:84ch}
main>h2{margin-top:52px;margin-bottom:22px;letter-spacing:-.02em}
main>h3{margin-top:32px}
main>.panel:first-child{margin-top:0;margin-bottom:36px}
.panel{padding:24px 28px;border-color:#dce7f0;background:#f1f6fb}
.panel>:last-child,.card .body>:last-child{margin-bottom:0}
.two-col{gap:36px;align-items:center;margin-block:30px}
.two-col>div{min-width:0}
.two-col p{max-width:67ch}
.media{margin:0}
.media img{width:100%;box-shadow:none;border:1px solid var(--line)}
main>img{width:100%;max-height:410px;object-fit:cover;border-radius:12px;margin-block:24px}
.card{transition:border-color .15s ease,box-shadow .15s ease}
.card:hover{border-color:#90b5d2;box-shadow:0 6px 24px #153a6010}
.card .body{padding:22px;flex:1}
.card h3{font-size:21px;line-height:1.3}
.card h3 a{text-decoration:none}
.card p{font-size:16px}
.card .more{margin-top:16px}
.g4{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.steps li{padding:24px;background:#f6f9fc}
.steps h3{margin-top:14px}
.scroll{max-width:100%;border-radius:10px;margin-bottom:24px;overscroll-behavior-inline:contain}
.scroll table{min-width:590px}
th,td{padding:14px 16px}
tbody tr:nth-child(even){background:#fafcfe}
details{padding:18px 22px}
summary{min-height:26px;line-height:1.5;padding-right:12px}
details p{margin-top:12px;max-width:80ch}
.cta-band{padding:36px 28px;margin-block:44px;background:linear-gradient(115deg,#12375f,#144a85)}
.cta-band h2{font-size:clamp(25px,3vw,34px)}
.cta-band p:last-child{margin-bottom:0}
.towns a{padding:10px 17px;min-height:44px}
.fgrid{grid-template-columns:1.4fr 1fr 1.3fr 1fr 1.1fr;gap:28px}
footer.site{padding-block:48px 28px}
footer.site li a{display:inline-block;padding-block:3px}
.fine{color:#b7c6d8;line-height:1.7}
#credits{overflow-wrap:anywhere}
#credits li{margin-bottom:22px}
.sticky-call{padding:13px 16px calc(13px + env(safe-area-inset-bottom));box-shadow:0 -3px 16px #0b25451a}
@media(max-width:1100px){
 .bar{flex-wrap:wrap;gap:14px;padding-block:15px 8px}
 .logo{margin-right:auto;flex-basis:270px}
 nav.main{order:3;flex-basis:100%;margin:0;border-top:1px solid var(--line);min-width:0}
 nav.main ul{justify-content:center;gap:32px;padding-top:5px}
 .hero-plain .hero-inner{gap:28px}
 .hero-copy{max-width:65%}
 .g4{grid-template-columns:repeat(2,minmax(0,1fr))}
 .fgrid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:700px){
 html{scroll-padding-top:82px}
 body{padding-bottom:calc(58px + env(safe-area-inset-bottom))}
 .wrap{padding-inline:20px}
 header.site{position:sticky}
 .bar{gap:12px;padding-block:14px}
 .logo{flex:0 1 235px;min-width:0;max-width:calc(100% - 77px)}
 .logo img{width:100%;height:auto}
 .bar>.callbtn{display:none}
 nav.main ul{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;overflow:visible;padding-top:8px}
 nav.main a{padding:11px 2px;font-size:15px;white-space:normal;width:100%}
 .js .menu-toggle{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:62px;padding:8px 10px;border:1px solid #cad7e4;border-radius:8px;background:#fff;color:#12375f;font:inherit;font-size:14px;font-weight:600;line-height:1.2;cursor:pointer}
 .js nav.main:not(.is-open){display:none}
 .hero-inner{padding-block:32px}
 .hero-plain .hero-inner{grid-template-columns:1fr;gap:24px}
 .hero-copy{max-width:100%}
 .hero h1{font-size:34px;max-width:19ch}
 .hero .lead{font-size:17px;line-height:1.6;margin-bottom:18px}
 .hero .crumbs{font-size:12px;margin-bottom:20px}
 .hero .eyebrow{font-size:11px}
 .hero .badges{margin-top:20px;gap:5px;font-size:13px}
 .hero-plain .hero-object{width:min(82%,330px);margin:0 auto}
 .cta-row{gap:10px}
 .cta-row .callbtn{font-size:14px;padding:11px 12px}
 .hero .cta-row .ghost{border-width:1px}
 main#main{padding-top:26px}
 main>h2{margin-top:38px;margin-bottom:18px;font-size:27px}
 main>img{max-height:260px}
 .two-col{gap:20px;margin-block:24px}
 .panel{padding:20px}
 .panel li:last-child{margin-bottom:0}
 .grid{gap:18px}
 .g4{grid-template-columns:1fr}
 .card img{max-height:250px}
 .card .body{padding:20px}
 .cta-band{padding:28px 20px;margin-block:32px}
 .fgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 20px}
 .fgrid>div:first-child{grid-column:1/-1}
 footer.site{padding-block:32px 22px}
 .pagehead{padding-block:28px}
 .pagehead h1{font-size:31px}
 .pagehead .crumbs{font-size:13px}
}
@media(max-width:360px){.cta-row{flex-direction:column;align-items:stretch}.hero h1{font-size:31px}.fgrid{grid-template-columns:1fr}.hero-plain .hero-object{width:76%}}
@media(prefers-reduced-motion:reduce){.card{transition:none}}

/* Call-only quote path: keep the phone number visible and the mobile footer clear. */
.bar>.callbtn{flex-direction:column;gap:2px;line-height:1.25;padding:8px 14px;min-width:178px}
.bar .call-label{font-size:12px;font-weight:600}
.bar .call-number{font-size:16px}
.sticky-call .call-label{display:block;font-size:15px;line-height:1.3}
.sticky-call .call-number{display:block;font-size:16px;line-height:1.35;margin-top:2px}
@media(max-width:700px){
 .bar>.callbtn{display:none}
 .sticky-call{padding:10px 16px calc(10px + env(safe-area-inset-bottom));min-height:66px}
 body{padding-bottom:calc(74px + env(safe-area-inset-bottom))}
}


.towns-cover h3{margin-top:0}
.towns-list{list-style:none;padding:0;margin:0;columns:2;column-gap:24px}
.towns-list li{padding:3px 0;break-inside:avoid;color:var(--body)}
@media (max-width:520px){.towns-list{columns:1}}
