:root{
  --white:#ffffff;
  --ink:#1b2430;
  --accent:#1e4e79;
  --accent-dark:#163b5c;
  --band:#f1f3f2;
  --line:#d9ddd8;
  --muted:#5b6570;
  --max:1200px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{font-family:"Archivo",system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--white);line-height:1.6;font-size:17px;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--accent)}
h1,h2,h3{font-family:"Archivo",system-ui,sans-serif;font-stretch:expanded;line-height:1.15;letter-spacing:-.01em}
h1{font-size:clamp(2rem,4.6vw,3.4rem);font-weight:700}
h2{font-size:clamp(1.55rem,3vw,2.25rem);font-weight:700;margin-bottom:.9rem}
h3{font-size:1.2rem;font-weight:600;margin-bottom:.4rem}
p{max-width:64ch}
.wrap{max-width:var(--max);margin:0 auto;padding:0 1.25rem}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:.5rem 1rem}
.skip:focus{left:1rem;z-index:100}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px}

/* top bar + nav */
.topbar{background:var(--ink);color:#fff;font-size:.9rem}
.topbar .wrap{display:flex;white-space:nowrap;justify-content:space-between;align-items:center;min-height:38px;gap:1rem}
.topbar a{color:#fff;text-decoration:none;font-weight:600}
header.site{border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--white);z-index:50}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;min-height:72px;gap:1rem}
.brand{text-decoration:none;color:var(--ink);font-family:"Archivo",system-ui,sans-serif;font-stretch:expanded;font-weight:800;font-size:1.35rem;letter-spacing:-.02em;white-space:nowrap}
.brand span{color:var(--accent)}
nav.main ul{list-style:none;display:flex;gap:1.35rem;align-items:center}
nav.main a{text-decoration:none;color:var(--ink);font-weight:500;font-size:.95rem;white-space:nowrap;padding:.4rem 0;border-bottom:2px solid transparent}
nav.main a:hover,nav.main a[aria-current="page"]{border-bottom-color:var(--accent)}
.btn{display:inline-block;background:var(--accent);color:#fff;text-decoration:none;font-weight:600;padding:.8rem 1.35rem;border:0;border-radius:4px;cursor:pointer;font-size:1rem;font-family:inherit}
.btn:hover{background:var(--accent-dark)}
nav.main a.btn{color:#fff;border-bottom:0;padding:.6rem 1.1rem}
nav.main a.btn:hover{color:#fff}
.btn.ghost{background:transparent;color:var(--ink);border:2px solid var(--ink)}
.btn.ghost:hover{background:var(--ink);color:#fff}
.menu-btn{display:none;background:none;border:2px solid var(--ink);border-radius:4px;padding:.45rem .7rem;font:inherit;font-weight:600;cursor:pointer}
@media (max-width:860px){
  .menu-btn{display:block}
  nav.main{display:none;position:absolute;left:0;right:0;top:100%;background:#fff;border-bottom:1px solid var(--line)}
  nav.main.open{display:block}
  nav.main ul{flex-direction:column;align-items:stretch;gap:0;padding:.5rem 1.25rem 1rem}
  nav.main a{display:block;padding:.75rem 0;border-bottom:1px solid var(--line)}
  nav.main .btn{margin-top:.75rem;text-align:center}
  header.site .cta-head{display:none}
}

/* hero */
.hero{padding:4rem 0 3.5rem;border-bottom:1px solid var(--line)}
.hero .wrap{display:grid;grid-template-columns:1.2fr .9fr;gap:3rem;align-items:start}
.hero .lede{font-size:1.15rem;color:var(--muted);margin:1.2rem 0 1.8rem;max-width:52ch}
.hero .actions{display:flex;gap:.8rem;flex-wrap:wrap;align-items:center}
.hero .phone{font-size:1.15rem;font-weight:600;text-decoration:none;color:var(--ink)}
.trust{display:flex;gap:1.5rem;flex-wrap:wrap;margin-top:2rem;padding-top:1.4rem;border-top:1px solid var(--line);font-size:.92rem;color:var(--muted)}
.trust b{display:block;color:var(--ink);font-size:1.05rem}
@media (max-width:860px){.hero .wrap{grid-template-columns:1fr}.hero{padding:2.5rem 0}}

/* quote form */
.quote{background:var(--band);padding:1.6rem;border-radius:6px}
.quote h2,.quote h3{font-size:1.25rem;margin-bottom:.3rem}
.quote p.note{font-size:.9rem;color:var(--muted);margin-bottom:1rem}
.quote label{display:block;font-size:.88rem;font-weight:600;margin:.7rem 0 .25rem}
.quote input,.quote select,.quote textarea{width:100%;padding:.7rem .8rem;border:1px solid var(--line);border-radius:4px;font:inherit;font-size:1rem;background:#fff}
.quote textarea{min-height:90px;resize:vertical}
.quote .btn{width:100%;margin-top:1rem}
.quote .fine{font-size:.8rem;color:var(--muted);margin-top:.6rem}

/* sections */
section{padding:4rem 0}
section.band{background:var(--band)}
.intro{max-width:60ch;color:var(--muted);font-size:1.08rem;margin-bottom:2.2rem}
.services{display:grid;grid-template-columns:repeat(4,1fr);gap:1.25rem}
.service{border-top:4px solid var(--accent);padding:1.4rem 0 0;text-decoration:none;color:inherit}
.service.epoxy{border-top-color:#3a4a5c}
.service.hardwood{border-top-color:#a6763b}
.service.quartz{border-top-color:#8d949b}
.service.remodel{border-top-color:var(--accent)}
.service p{font-size:.95rem;color:var(--muted);margin:.4rem 0 .9rem}
.service .more{font-weight:600;color:var(--accent)}
@media (max-width:900px){.services{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.services{grid-template-columns:1fr}}

.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem;counter-reset:step}
.step{padding-top:1rem;border-top:1px solid var(--line)}
.step::before{counter-increment:step;content:counter(step);display:block;font-family:"Archivo",system-ui,sans-serif;font-stretch:expanded;font-weight:800;font-size:1.8rem;color:var(--accent);margin-bottom:.4rem}
.step p{font-size:.95rem;color:var(--muted)}
@media (max-width:860px){.steps{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.steps{grid-template-columns:1fr}}

.two{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:start}
@media (max-width:860px){.two{grid-template-columns:1fr}}
.checks{list-style:none;margin-top:1rem}
.checks li{padding:.45rem 0 .45rem 1.7rem;position:relative;border-bottom:1px solid var(--line)}
.checks li::before{content:"";position:absolute;left:0;top:.95rem;width:.7rem;height:.7rem;background:var(--accent);border-radius:2px}

.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.gallery figure{background:var(--band);aspect-ratio:4/3;border-radius:4px;overflow:hidden;position:relative}
.gallery figure img{width:100%;height:100%;object-fit:cover}
.gallery figcaption{position:absolute;bottom:0;left:0;right:0;background:rgba(27,36,48,.85);color:#fff;font-size:.85rem;padding:.5rem .75rem}
.placeholder{display:flex;align-items:center;justify-content:center;height:100%;color:var(--muted);font-size:.9rem;text-align:center;padding:1rem}
@media (max-width:860px){.gallery{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.gallery{grid-template-columns:1fr}}

.faq details{border-bottom:1px solid var(--line);padding:.9rem 0}
.faq summary{font-weight:600;cursor:pointer;font-size:1.05rem;list-style:none;display:flex;justify-content:space-between;gap:1rem}
.faq summary::after{content:"+";color:var(--accent);font-weight:700}
.faq details[open] summary::after{content:"–"}
.faq details p{margin-top:.6rem;color:var(--muted)}

.review{background:#fff;border:1px solid var(--line);border-radius:6px;padding:1.4rem}
.review .stars{color:#c9932e;letter-spacing:.1em;margin-bottom:.5rem}
.review cite{display:block;margin-top:.8rem;font-style:normal;font-weight:600;font-size:.95rem}
.reviews{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}
@media (max-width:860px){.reviews{grid-template-columns:1fr}}

.cta{background:var(--accent);color:#fff;padding:3.5rem 0}
.cta h2{color:#fff}
.cta p{color:#dfe8f2;margin-bottom:1.4rem}
.cta .btn{background:#fff;color:var(--accent)}
.cta .btn:hover{background:#eef3f8}
.cta .phone{color:#fff;font-weight:600;text-decoration:none;font-size:1.15rem;margin-left:1rem}

/* service page header */
.page-head{padding:3.5rem 0 2.5rem;border-bottom:1px solid var(--line)}
.page-head p.lede{font-size:1.15rem;color:var(--muted);margin-top:1rem;max-width:56ch}
.breadcrumb{font-size:.85rem;color:var(--muted);margin-bottom:1rem}
.breadcrumb a{color:var(--muted);text-decoration:none}
.breadcrumb a:hover{text-decoration:underline}
.aside .quote{position:sticky;top:90px}

/* contact */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:3rem}
@media (max-width:860px){.contact-grid{grid-template-columns:1fr}}
.contact-grid dl dt{font-weight:600;margin-top:1rem}
.contact-grid dl dd{color:var(--muted)}
.contact-grid dl a{text-decoration:none;font-weight:600}

footer.site{background:var(--ink);color:#c7cdd4;padding:3rem 0 2rem;font-size:.92rem}
footer .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:2rem;margin-bottom:2rem}
footer h3{color:#fff;font-size:1rem;margin-bottom:.6rem}
footer ul{list-style:none}
footer li{margin:.3rem 0}
footer a{color:#c7cdd4;text-decoration:none}
footer a:hover{color:#fff}
footer .brand{color:#fff;font-size:1.25rem;display:inline-block;margin-bottom:.6rem}
footer .brand span{color:#8fb4d9}
footer .legal{border-top:1px solid #33404d;padding-top:1.2rem;font-size:.82rem;color:#8d97a1;display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem}
@media (max-width:860px){footer .cols{grid-template-columns:1fr 1fr}}
@media (max-width:520px){footer .cols{grid-template-columns:1fr}}

/* sticky mobile call bar */
.callbar{display:none}
@media (max-width:640px){
  .topbar .wrap{white-space:normal;font-size:.8rem}
  .callbar{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:60;background:#fff;border-top:1px solid var(--line);padding:.6rem .8rem;gap:.6rem}
  .callbar a{flex:1;text-align:center}
  body{padding-bottom:70px}
}

/* ===== v2: dropdown nav, photo hero, tiles, near-you map ===== */
nav.main li{position:relative}
nav.main li.has-sub > a::after{content:"";display:inline-block;width:.4em;height:.4em;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);margin:0 0 .2em .45em}
nav.main .sub{display:none;position:absolute;top:100%;left:-.6rem;background:#fff;border:1px solid var(--line);border-radius:4px;min-width:220px;padding:.4rem 0;list-style:none;box-shadow:0 8px 24px rgba(27,36,48,.08)}
nav.main .sub a{display:block;padding:.55rem 1rem;border:0;white-space:nowrap}
nav.main .sub a:hover{background:var(--band)}
nav.main li.has-sub:hover > .sub,nav.main li.has-sub:focus-within > .sub,nav.main li.has-sub.open > .sub{display:block}
@media (max-width:860px){
  nav.main .sub{position:static;border:0;box-shadow:none;padding:0 0 0 1rem;min-width:0}
  nav.main li.has-sub:hover > .sub{display:none}
  nav.main li.has-sub.open > .sub{display:block}
  nav.main .sub a{border-bottom:1px solid var(--line)}
}
.hero-photo{position:relative;background:var(--ink);color:#fff;min-height:520px;display:flex;align-items:flex-end}
.hero-photo .bg{position:absolute;inset:0;background:#2b3542}
.hero-photo .bg img{width:100%;height:100%;object-fit:cover}
.hero-photo .bg .placeholder{color:#8d97a1;font-size:1rem}
.hero-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(27,36,48,.92) 0%,rgba(27,36,48,.35) 60%,rgba(27,36,48,.1) 100%)}
.hero-photo .wrap{position:relative;z-index:1;padding-top:4rem;padding-bottom:3rem;width:100%}
.hero-photo h1{color:#fff;max-width:16ch}
.hero-photo .lede{color:#dfe8f2;font-size:1.15rem;margin:1rem 0 1.6rem;max-width:50ch}
.hero-photo .phone{color:#fff}
.hero-photo .types{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:2rem}
.hero-photo .types a{color:#fff;text-decoration:none;border:1px solid rgba(255,255,255,.5);border-radius:999px;padding:.4rem .9rem;font-size:.92rem}
.hero-photo .types a:hover{background:#fff;color:var(--ink)}
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
.tile{position:relative;aspect-ratio:4/3;background:var(--band);border-radius:4px;overflow:hidden;text-decoration:none;color:inherit;display:block}
.tile img{width:100%;height:100%;object-fit:cover}
.tile .label{position:absolute;left:0;right:0;bottom:0;padding:.7rem .9rem;background:rgba(27,36,48,.88);color:#fff;font-weight:600}
.tiles.three{grid-template-columns:repeat(3,1fr)}
@media (max-width:860px){.tiles,.tiles.three{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.tiles,.tiles.three{grid-template-columns:1fr}}
.nearyou{display:grid;grid-template-columns:.9fr 1.1fr;gap:2.5rem;align-items:start}
.nearyou .towns{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:1.4rem;list-style:none}
.nearyou .towns a{display:flex;justify-content:space-between;align-items:center;text-decoration:none;color:var(--ink);font-weight:600;background:var(--band);border-left:4px solid var(--accent);padding:.65rem .9rem;font-size:.95rem}
.nearyou .towns a::after{content:"›";color:var(--accent);font-size:1.2rem}
.nearyou .towns a:hover{background:#e6eaed}
.nearyou .map{border-radius:6px;overflow:hidden;background:var(--band);min-height:420px}
.nearyou .map iframe{width:100%;height:460px;border:0;display:block}
@media (max-width:860px){.nearyou{grid-template-columns:1fr}}
.quote-strip{background:var(--band);padding:3.5rem 0}
.quote-strip blockquote{font-family:"Archivo",system-ui,sans-serif;font-stretch:expanded;font-weight:600;font-size:clamp(1.2rem,2.4vw,1.7rem);line-height:1.35;max-width:30ch}
.quote-strip cite{display:block;font-style:normal;font-size:.95rem;color:var(--muted);margin-top:1rem}
.page-head.photo{position:relative;color:#fff;border:0;min-height:340px;display:flex;align-items:flex-end;background:#2b3542}
.page-head.photo .bg{position:absolute;inset:0}
.page-head.photo .bg img{width:100%;height:100%;object-fit:cover}
.page-head.photo .bg .placeholder{color:#8d97a1}
.page-head.photo::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(27,36,48,.9),rgba(27,36,48,.15))}
.page-head.photo .wrap{position:relative;z-index:1;width:100%;padding-bottom:2.5rem}
.page-head.photo h1{color:#fff}
.page-head.photo .lede{color:#dfe8f2}
.page-head.photo .breadcrumb,.page-head.photo .breadcrumb a{color:#b9c3cd}
.related{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.related a{display:block;text-decoration:none;color:inherit;border:1px solid var(--line);border-radius:4px;padding:1rem 1.1rem}
.related a b{display:block;color:var(--accent);margin-bottom:.2rem}
.related a span{font-size:.92rem;color:var(--muted)}
.related a:hover{border-color:var(--accent)}
@media (max-width:640px){.related{grid-template-columns:1fr}}
.hero-photo .actions .phone{margin-left:.6rem}
.placeholder{flex-direction:column;gap:.2rem}
.placeholder small{opacity:.7;font-size:.78rem}
/* <picture> wrappers must fill their box so object-fit:cover centers the crop */
.gallery figure picture,.tile picture,.hero-photo .bg picture,.page-head.photo .bg picture{display:block;width:100%;height:100%}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
