
:root{
  --navy:#071426; --navy2:#0d2038; --red:#e21d2d; --red2:#b90f1d;
  --white:#fff; --ink:#101722; --muted:#617086; --line:#dfe5ec; --soft:#f5f7fa;
  --shadow:0 18px 50px rgba(7,20,38,.12); --radius:22px;
}
*{box-sizing:border-box} html{scroll-behavior:smooth}
body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--ink);background:#fff;line-height:1.6}
a{text-decoration:none;color:inherit}.container{width:min(1160px,92%);margin:auto}
.topbar{background:var(--navy);color:#fff;font-size:14px}.topbar .container{display:flex;justify-content:space-between;gap:20px;padding:9px 0}
nav{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.navin{display:flex;align-items:center;justify-content:space-between;min-height:78px;gap:24px}
.logo{font-weight:950;letter-spacing:-1.5px;font-size:25px;color:var(--navy)}.logo span{color:var(--red)}
.menu{display:flex;gap:25px;font-weight:800;font-size:14px}.menu a:hover{color:var(--red)}
.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:12px;padding:13px 19px;font-weight:900;letter-spacing:.1px;border:2px solid transparent}
.btn-red{background:var(--red);color:#fff;box-shadow:0 10px 24px rgba(226,29,45,.22)}.btn-red:hover{background:var(--red2)}
.btn-dark{background:var(--navy);color:#fff}.btn-light{background:#fff;color:var(--navy);border-color:#fff}
.hero{background:var(--navy);color:#fff;position:relative;overflow:hidden}
.hero:after{content:"";position:absolute;inset:auto -10% -50% 45%;height:500px;background:radial-gradient(circle,#e21d2d55,transparent 65%)}
.hero-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:42px;align-items:center;padding:72px 0}
.kicker{color:#ff4553;text-transform:uppercase;font-weight:950;letter-spacing:2px;font-size:13px}
h1{font-size:clamp(45px,6vw,76px);line-height:.98;letter-spacing:-3px;margin:14px 0 20px}
h2{font-size:clamp(32px,4vw,48px);line-height:1.05;letter-spacing:-1.8px;margin:0 0 15px}
h3{line-height:1.15;margin:0 0 8px}.lead{font-size:20px;color:#d5dfeb;max-width:650px}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.hero-photo{border-radius:28px;overflow:hidden;box-shadow:0 25px 80px #0008;border:1px solid #ffffff22;background:#0a1525}.hero-photo img{width:100%;display:block;aspect-ratio:2.68/1;object-fit:cover}
.trust{background:var(--red);color:#fff}.trust .container{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding:19px 0;font-weight:900;text-align:center}
.section{padding:78px 0}
.page-hero{background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;padding:78px 0 70px;position:relative;overflow:hidden}.page-hero:after{content:"";position:absolute;width:520px;height:520px;right:-180px;top:-220px;border-radius:50%;background:radial-gradient(circle,#e21d2d55,transparent 68%)}.page-hero h1{max-width:900px;margin-left:auto;margin-right:auto}.page-hero .sub{color:#d5dfeb}.area-card{min-height:250px}.soft{background:var(--soft)}
.center{text-align:center}.sub{color:var(--muted);max-width:720px;margin:0 auto 36px;font-size:18px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:28px}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:28px;box-shadow:0 8px 30px rgba(7,20,38,.05)}
.card:hover{transform:translateY(-2px);box-shadow:var(--shadow);transition:.2s}
.service-icon{width:46px;height:46px;border-radius:12px;background:#fff0f1;color:var(--red);display:grid;place-items:center;font-weight:950;margin-bottom:17px}
.project{border-radius:24px;overflow:visible;background:#fff;border:1px solid var(--line);box-shadow:0 8px 30px rgba(7,20,38,.07);position:relative;transition:.2s}.project:hover{z-index:20;box-shadow:var(--shadow)}
.project img{width:100%;aspect-ratio:16/10;object-fit:contain;background:#eef2f6;display:block;border-radius:24px 24px 0 0;transition:transform .2s,box-shadow .2s;cursor:zoom-in}.project:hover img{position:relative;transform:scale(1.04);box-shadow:0 20px 45px rgba(7,20,38,.22);z-index:30}.project-body{padding:23px}.tag{font-size:12px;font-weight:950;color:var(--red);text-transform:uppercase;letter-spacing:1.3px}
.band{background:var(--navy);color:#fff;border-radius:30px;padding:48px}.band p{color:#d5dfeb}.split{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center}
.story-list{display:grid;gap:14px}.story-item{display:flex;gap:15px}.num{flex:0 0 38px;height:38px;border-radius:50%;background:var(--red);color:#fff;display:grid;place-items:center;font-weight:950}
.team-card{overflow:hidden;padding:0}.team-card img{width:100%;aspect-ratio:4/4.8;object-fit:cover;display:block;background:#eef2f6}.team-body{padding:22px}.team-role{color:var(--red);font-size:12px;text-transform:uppercase;font-weight:950;letter-spacing:1px}
.quote{background:#fff;border-left:5px solid var(--red);padding:22px 25px;border-radius:0 15px 15px 0;box-shadow:var(--shadow);font-size:18px}
.footer{background:#050d18;color:#d5dfeb;padding:50px 0 25px}.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px}.footer h3{color:#fff}.footer a:hover{color:#fff}.fine{border-top:1px solid #ffffff18;margin-top:35px;padding-top:18px;font-size:13px;color:#8ea0b6}
.contactbox{background:var(--navy);color:#fff;border-radius:28px;padding:40px}.contactbox input,.contactbox textarea{width:100%;border:1px solid #ffffff22;background:#fff;color:#111;border-radius:10px;padding:13px;margin:6px 0 13px;font:inherit}.contactbox textarea{min-height:130px}
.note{font-size:13px;color:#7c8da3}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{background:#eef2f7;padding:8px 11px;border-radius:999px;font-size:13px;font-weight:800}
.mobile{display:none}
@media(max-width:850px){
 .menu{display:none}.mobile{display:block}.hero-grid,.split,.grid3,.grid2,.footer-grid{grid-template-columns:1fr}.hero-grid{padding:48px 0}.trust .container{grid-template-columns:1fr}.hero-photo{order:-1}
 h1{font-size:49px}.section{padding:58px 0}.band{padding:30px}.topbar .container{flex-direction:column;gap:2px}
}

.project:has(img:hover)::after{content:"Hover to enlarge • full photo";position:absolute;left:50%;top:calc(16/10 * 50%);transform:translate(-50%,-50%);padding:7px 10px;border-radius:999px;background:rgba(7,20,38,.82);color:#fff;font-size:11px;font-weight:800;letter-spacing:.3px;pointer-events:none;opacity:.95;z-index:40}
@media(max-width:850px){.hero-photo img{aspect-ratio:16/9}.project:hover img{transform:none}.project:has(img:hover)::after{display:none}}

/* Reviews */
.review-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:32px}.review-card{background:#fff;border:1px solid #e6e9ee;border-radius:20px;padding:26px;box-shadow:var(--shadow);position:relative}.review-stars{color:#e21d2d;letter-spacing:2px;font-size:18px;margin-bottom:12px}.review-card blockquote{margin:0 0 16px;font-size:17px;line-height:1.65;color:#182337}.review-name{font-weight:800;color:#071426}.review-source{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:#738099;margin-top:4px}.review-highlight{background:var(--navy);color:#fff;border-radius:24px;padding:38px}.review-highlight blockquote{font-size:22px;line-height:1.55;margin:0 0 18px}.review-highlight .review-name{color:#fff}.review-highlight .review-source{color:#aebbd0}.review-filter{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}.review-pill{border:1px solid #d8dee7;border-radius:999px;padding:8px 13px;font-size:13px;font-weight:700;color:#39465b;background:#fff}.review-card.compact blockquote{font-size:16px}.review-note{font-size:14px;color:#68758a}.quote-mark{font-size:42px;line-height:.7;color:#e21d2d;font-weight:900;margin-bottom:12px}
@media(max-width:900px){.review-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.review-grid{grid-template-columns:1fr}.review-highlight{padding:28px}.review-highlight blockquote{font-size:19px}}

/* Showcase gallery */
.custom-feature-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:22px;align-items:stretch}.custom-feature-card{height:100%}.custom-feature-copy{display:flex;flex-direction:column;justify-content:center}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.gallery-item{margin:0;border-radius:22px;overflow:hidden;background:#fff;border:1px solid var(--line);box-shadow:0 8px 30px rgba(7,20,38,.07)}.gallery-item img{width:100%;height:320px;object-fit:contain;background:#eef2f6;display:block}.gallery-item figcaption{padding:16px 18px;font-weight:800}.feature-photo{width:100%;max-height:560px;object-fit:contain;background:#eef2f6;border-radius:24px;display:block;box-shadow:var(--shadow)}.showcase-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:20px}.showcase-grid img{width:100%;height:100%;min-height:320px;object-fit:cover;border-radius:24px;display:block}.project-meta{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.project-meta span{background:#eef2f7;padding:8px 12px;border-radius:999px;font-size:13px;font-weight:800}.price-note{background:#fff7f7;border-left:4px solid var(--red);padding:16px 18px;border-radius:0 14px 14px 0}.service-cta{margin-top:22px}
@media(max-width:850px){.gallery-grid,.showcase-grid,.custom-feature-grid{grid-template-columns:1fr}.gallery-item img{height:240px}}

.footer-logo-wrap{margin-bottom:16px}.footer-logo{display:block;width:132px;height:132px;object-fit:contain;background:#fff;border-radius:16px;padding:8px;box-shadow:0 10px 30px rgba(0,0,0,.18)}

/* Doors, Windows & Siding service showcase */
.service-feature{grid-column:1/-1;background:#fff;border:1px solid var(--line);border-radius:24px;padding:30px;box-shadow:var(--shadow);margin-top:2px}
.service-feature-head{display:flex;justify-content:space-between;gap:30px;align-items:flex-start;margin-bottom:26px}
.service-feature-head h2{margin:0 0 10px;color:var(--navy);font-size:30px}
.service-feature-head p{max-width:760px;margin:0;color:#5e6b80;line-height:1.7}
.service-feature-list{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;max-width:430px;padding-top:6px}
.service-feature-list span{background:#f2f5f8;border:1px solid #e0e6ed;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:800;color:#334156;white-space:nowrap}
.service-photo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.service-photo-grid figure{margin:0;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#f3f5f7}
.service-photo-grid figure:first-child,.service-photo-grid figure:nth-child(6){grid-column:span 2}
.service-photo-grid img{width:100%;height:260px;object-fit:contain;display:block;background:#eef2f6}
.service-photo-grid figcaption{padding:12px 14px;font-weight:800;font-size:14px;color:#1d2a3d;background:#fff}
@media(max-width:900px){.service-feature-head{flex-direction:column}.service-feature-list{justify-content:flex-start;max-width:none}.service-photo-grid{grid-template-columns:repeat(2,1fr)}.service-photo-grid figure:first-child,.service-photo-grid figure:nth-child(6){grid-column:span 2}}
@media(max-width:560px){.service-feature{padding:20px}.service-photo-grid{grid-template-columns:1fr}.service-photo-grid figure:first-child,.service-photo-grid figure:nth-child(6){grid-column:span 1}.service-photo-grid img{height:300px}}


/* Service page image sizing fixes */
.dedicated-hero-photo{margin:0;background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:0 8px 30px rgba(7,20,38,.06)}
.dedicated-hero-photo img{width:100%;height:420px;object-fit:contain;background:#eef2f6;display:block}
.dedicated-hero-photo figcaption{padding:13px 15px;font-weight:800;color:var(--navy)}
.plumbing-showcase{display:grid;grid-template-columns:1.15fr .85fr;gap:18px;align-items:stretch}
.plumbing-hero-photo,.plumbing-support-grid figure{margin:0;background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:0 8px 30px rgba(7,20,38,.06)}
.plumbing-hero-photo img{width:100%;height:390px;object-fit:contain;background:#eef2f6;display:block}
.plumbing-hero-photo figcaption,.plumbing-support-grid figcaption{padding:13px 15px;font-weight:800;color:var(--navy)}
.plumbing-support-grid{display:grid;grid-template-columns:1fr;gap:18px}
.plumbing-support-grid figure{display:grid;grid-template-columns:170px 1fr;align-items:center}
.plumbing-support-grid img{width:100%;height:120px;object-fit:contain;background:#eef2f6;display:block}
.cleanout-hero{background:var(--navy);color:#fff;padding:66px 0 74px;position:relative;overflow:hidden}
.cleanout-hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr);gap:34px;align-items:center}
.cleanout-hero-photo{width:100%;height:auto;max-height:430px;object-fit:contain;background:#eef2f6;border-radius:24px;display:block;box-shadow:var(--shadow)}
.cleanout-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:30px}
.cleanout-gallery figure{margin:0;border:1px solid var(--line);border-radius:20px;overflow:hidden;background:#fff;box-shadow:0 8px 30px rgba(7,20,38,.06)}
.cleanout-gallery img{width:100%;height:300px;object-fit:contain;background:#eef2f6;display:block}
.cleanout-gallery figcaption{padding:14px 16px;font-weight:800;color:var(--navy)}
@media(max-width:850px){.plumbing-showcase{grid-template-columns:1fr}.plumbing-hero-photo img{height:340px}.plumbing-support-grid{grid-template-columns:1fr 1fr}.plumbing-support-grid figure{display:block}.plumbing-support-grid img{height:180px}.cleanout-hero-grid,.cleanout-gallery{grid-template-columns:1fr}.cleanout-hero-photo{max-height:340px}.cleanout-gallery img{height:280px}}
@media(max-width:600px){.plumbing-support-grid{grid-template-columns:1fr}.plumbing-support-grid figure{display:grid;grid-template-columns:130px 1fr}.plumbing-support-grid img{height:120px}}


/* Deck page photo sizing fix */
.deck-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:start}
.deck-gallery-card{margin:0;background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:0 8px 30px rgba(7,20,38,.06)}
.deck-gallery-card img{display:block;width:100%;height:260px;object-fit:contain;background:#eef2f6}
.deck-gallery-card figcaption{padding:14px 16px}
.deck-gallery-card figcaption strong{display:block;margin-bottom:6px}
.deck-gallery-card figcaption span{display:block;color:var(--muted);font-size:14px;line-height:1.5}
.deck-photo-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:24px}
.deck-photo-row figure{margin:0;background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden}
.deck-photo-row img{display:block;width:100%;height:300px;object-fit:contain;background:#eef2f6}
.deck-photo-row figcaption{padding:13px 15px;color:var(--muted);font-size:14px}
.deck-feature-main{display:block;width:100%;height:420px;object-fit:contain;background:#eef2f6;border-radius:20px}
@media(max-width:900px){.deck-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.deck-gallery-card img{height:250px}.deck-feature-main{height:360px}}
@media(max-width:620px){.deck-gallery,.deck-photo-row{grid-template-columns:1fr}.deck-gallery-card img{height:230px}.deck-photo-row img{height:260px}.deck-feature-main{height:300px}}

/* Service area map */
.service-map-section{background:#f4f6f9}
.service-map-wrap{position:relative;border-radius:22px;overflow:hidden;border:1px solid #dbe2ea;background:#e9eef3;box-shadow:0 18px 45px rgba(7,22,40,.10)}
.service-map{height:520px;width:100%;z-index:1;background:#dfe6ed}
.service-map .leaflet-control-attribution{font-size:10px}
.map-legend{position:absolute;z-index:500;left:18px;bottom:18px;background:rgba(7,22,40,.94);color:#fff;border-radius:14px;padding:14px 16px;display:flex;gap:18px;align-items:center;box-shadow:0 10px 28px rgba(0,0,0,.18);font-size:12px;line-height:1.35}
.map-legend strong{font-size:12px}.map-legend span:not(.legend-dot):not(.legend-area){color:#c8d2df}
.legend-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:7px;background:#f4f6f9;border:2px solid #e21d2d;vertical-align:middle}
.legend-dot.home{background:#e21d2d;border:2px solid #fff;width:12px;height:12px}.legend-dot.town{background:#e21d2d;border:2px solid #fff}
.legend-area{display:inline-block;width:18px;height:10px;border:1px solid #e21d2d;background:rgba(226,29,45,.25);margin-right:7px;vertical-align:middle}
.map-note{text-align:center;margin:18px auto 0;max-width:760px;color:#58677a}
.hh-marker-wrap{background:transparent!important;border:0!important}.hh-marker{box-sizing:border-box;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:8px;font-family:Arial,sans-serif}.home-marker{width:34px;height:34px;background:#e21d2d;color:#fff;border:3px solid #fff;box-shadow:0 3px 10px rgba(0,0,0,.35)}.town-marker{width:12px;height:12px;background:#e21d2d;border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.3)}
.hh-tooltip{font-weight:700;color:#071628;border:0;box-shadow:0 3px 12px rgba(0,0,0,.15)}
@media(max-width:700px){.service-map{height:420px}.map-legend{left:10px;right:10px;bottom:10px;display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}.map-legend>div:first-child{grid-column:1/-1}}

/* Social links */
.social-link, .social-nav { font-weight: 700; }
.social-link:hover, .social-nav:hover { color: #e21d2d; }
@media (max-width: 900px) {
  .social-nav { display: inline-block; }
}
