/* ============================================================
   Contractor template, shared stylesheet.
   Every template site uses this exact file. The only thing that
   changes between templates is the token block in theme.css.
   ============================================================ */

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}

html{scroll-behavior:smooth;}
body{
    background:var(--bg);
    color:var(--body);
    font-family:var(--sans);
    font-size:17px;
    line-height:1.65;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
}
img{max-width:100%;height:auto;display:block;}
a{color:var(--brand);text-decoration:none;}
h1,h2,h3,h4{font-family:var(--display);color:var(--ink);line-height:1.12;letter-spacing:-.02em;text-wrap:balance;}
h1{font-size:clamp(2.1rem,4.8vw,3.3rem);font-weight:800;}
h2{font-size:clamp(1.65rem,3.2vw,2.35rem);font-weight:800;}
h3{font-size:1.12rem;font-weight:700;letter-spacing:-.01em;}
p{text-wrap:pretty;}
.em{color:var(--brand);}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter);}
.wrap-sm{max-width:820px;margin:0 auto;padding:0 var(--gutter);}
.section{padding:84px 0;}
.section-alt{background:var(--bg-alt);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);}
.head{max-width:680px;margin:0 auto 48px;text-align:center;display:flex;flex-direction:column;gap:13px;}
.head p{font-size:1.05rem;color:var(--muted);}

/* ---------- buttons ---------- */
.btn{
    display:inline-flex;align-items:center;justify-content:center;gap:9px;
    font-family:var(--sans);font-weight:600;font-size:1rem;
    padding:15px 26px;border-radius:var(--btn-radius);border:1px solid transparent;
    cursor:pointer;transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.btn-primary{background:var(--brand);color:#fff;box-shadow:0 6px 18px var(--brand-shadow);}
.btn-primary:hover{transform:translateY(-1px);background:var(--brand-dark);}
.btn-ghost{background:#fff;color:var(--ink);border-color:var(--line);}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand);}
.btn-white{background:#fff;color:var(--brand-dark);}
.btn svg{flex-shrink:0;}

/* ---------- top bar + nav ---------- */
.topbar{background:var(--ink);color:rgba(255,255,255,.82);font-size:.86rem;}
.topbar .wrap{display:flex;flex-wrap:wrap;gap:8px 22px;justify-content:space-between;align-items:center;padding-top:9px;padding-bottom:9px;}
.topbar a{color:#fff;font-weight:600;}
.topbar-item{display:inline-flex;align-items:center;gap:7px;}

.nav{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.95);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);}
.nav-inner{max-width:var(--maxw);margin:0 auto;padding:12px var(--gutter);display:flex;align-items:center;gap:26px;}
.nav-logo{display:flex;align-items:center;gap:11px;color:var(--ink);}
.nav-logo img{height:42px;width:auto;}
.nav-logo-text{display:flex;flex-direction:column;line-height:1.1;}
.nav-logo-name{font-family:var(--display);font-weight:800;font-size:1.05rem;letter-spacing:-.01em;}
.nav-logo-sub{font-size:.72rem;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-weight:600;}
.nav-links{display:flex;gap:22px;list-style:none;margin-left:auto;}
.nav-links a{color:var(--body);font-size:.95rem;font-weight:500;}
.nav-links a:hover,.nav-links a[aria-current="page"]{color:var(--brand);}
.nav .btn{padding:11px 20px;font-size:.93rem;}
.nav-toggle{display:none;background:none;border:1px solid var(--line);border-radius:9px;padding:8px;color:var(--ink);margin-left:auto;}
.nav-toggle svg{width:22px;height:22px;}
.mobile-menu{display:none;flex-direction:column;padding:6px var(--gutter) 18px;border-top:1px solid var(--line);background:#fff;}
.mobile-menu a{padding:13px 4px;color:var(--ink);font-weight:500;border-bottom:1px solid var(--line-soft);}
.mobile-menu .btn{margin-top:14px;}
.mobile-menu.open{display:flex;}

/* ---------- hero ---------- */
.hero{position:relative;background:var(--ink);color:#fff;overflow:hidden;}
.hero-photo{position:absolute;inset:0;}
.hero-photo img{width:100%;height:100%;object-fit:cover;opacity:.32;}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,var(--hero-scrim) 0%, var(--hero-scrim-2) 55%, rgba(0,0,0,.35) 100%);}
.hero-inner{position:relative;z-index:2;padding:96px var(--gutter) 104px;display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:start;}
.hero h1{color:#fff;}
.hero-copy{display:flex;flex-direction:column;gap:20px;}
.hero-copy .lead{font-size:1.1rem;color:rgba(255,255,255,.88);max-width:36em;}
.eyebrow{
    display:inline-flex;align-items:center;gap:8px;align-self:flex-start;
    background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);color:#fff;
    border-radius:999px;padding:7px 15px;font-size:.76rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px;}
.hero-points{list-style:none;display:flex;flex-wrap:wrap;gap:8px 20px;padding-top:4px;}
.hero-points li{display:inline-flex;align-items:center;gap:8px;font-size:.95rem;color:rgba(255,255,255,.9);font-weight:500;}
.hero-points svg{color:var(--brand-light);flex-shrink:0;}

/* quote form card */
.quote{
    background:#fff;border-radius:var(--radius-lg);box-shadow:0 26px 60px rgba(0,0,0,.28);
    padding:26px;display:flex;flex-direction:column;gap:14px;color:var(--body);
}
.quote h2{font-size:1.32rem;}
.quote p.quote-sub{font-size:.93rem;color:var(--muted);margin-top:-6px;}
.field{display:flex;flex-direction:column;gap:6px;}
.field label{font-size:.83rem;font-weight:600;color:var(--ink);}
.field input,.field select,.field textarea{
    width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:10px;
    font-family:var(--sans);font-size:.97rem;color:var(--ink);background:#fff;
}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--brand);outline-offset:1px;border-color:var(--brand);}
.field textarea{min-height:86px;resize:vertical;}
.quote .btn{width:100%;}
.quote small{font-size:.8rem;color:var(--muted);text-align:center;}

/* ---------- trust strip ---------- */
.trust{background:var(--bg-alt);border-bottom:1px solid var(--line-soft);}
.trust-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;padding:26px 0;}
.trust-item{display:flex;align-items:center;gap:12px;justify-content:center;text-align:left;}
.trust-item svg{color:var(--brand);flex-shrink:0;}
.trust-item strong{display:block;color:var(--ink);font-size:.97rem;font-family:var(--display);font-weight:700;}
.trust-item span{font-size:.85rem;color:var(--muted);}

/* ---------- cards / grids ---------- */
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;}
.card{
    background:#fff;border:1px solid var(--line);border-radius:var(--radius);
    padding:26px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:12px;
    transition:box-shadow .18s ease, border-color .18s ease, transform .18s ease;
}
.card:hover{box-shadow:var(--shadow);border-color:var(--line-hover);transform:translateY(-2px);}
.card p{font-size:.97rem;}
.ico{width:44px;height:44px;border-radius:11px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand-dark);}

/* service cards with photo */
.svc{
    background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
    box-shadow:var(--shadow-sm);display:flex;flex-direction:column;
    transition:box-shadow .18s ease, transform .18s ease, border-color .18s ease;
}
.svc:hover{box-shadow:var(--shadow);transform:translateY(-3px);border-color:var(--line-hover);}
.svc-body{padding:22px;display:flex;flex-direction:column;gap:10px;flex:1;}
.svc-body ul{list-style:none;display:flex;flex-direction:column;gap:7px;font-size:.94rem;}
.svc-body ul li{display:flex;gap:9px;align-items:flex-start;}
.svc-body ul svg{color:var(--brand);flex-shrink:0;margin-top:5px;}
.svc-link{margin-top:auto;padding-top:14px;display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:.94rem;color:var(--brand);}

/* photo placeholders: real photo drops in, pattern shows until then */
.photo{position:relative;background:var(--bg-alt);overflow:hidden;}
.photo::before{
    content:"";position:absolute;inset:0;
    background:repeating-linear-gradient(135deg,var(--line-soft) 0 14px,var(--bg-alt) 14px 28px);
}
.photo img{position:relative;width:100%;height:100%;object-fit:cover;}
.photo-16x10{aspect-ratio:16/10;}
.photo-4x3{aspect-ratio:4/3;}
.photo-1x1{aspect-ratio:1/1;}

/* ---------- split section ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:center;}
.split-copy{display:flex;flex-direction:column;gap:16px;}
.checklist{list-style:none;display:flex;flex-direction:column;gap:11px;}
.checklist li{display:flex;gap:11px;align-items:flex-start;font-size:1rem;color:var(--ink);}
.checklist svg{color:var(--brand);flex-shrink:0;margin-top:5px;}

/* ---------- steps ---------- */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
.step{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:28px 26px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:11px;}
.step-num{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--brand);color:#fff;font-family:var(--display);font-weight:800;}

/* ---------- reviews ---------- */
.review{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:26px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:13px;}
.stars{display:flex;gap:3px;color:#f5a524;}
.review p{font-size:1rem;color:var(--ink);}
.review-by{font-size:.9rem;color:var(--muted);margin-top:auto;}
.review-by strong{color:var(--ink);display:block;font-size:.95rem;}

/* ---------- stats ---------- */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.stat{background:var(--bg-alt);border:1px solid var(--line-soft);border-radius:var(--radius);padding:24px 18px;text-align:center;display:flex;flex-direction:column;gap:6px;}
.stat-val{font-family:var(--display);font-size:clamp(1.9rem,3.4vw,2.4rem);font-weight:800;color:var(--brand);line-height:1;white-space:nowrap;font-variant-numeric:tabular-nums;}
.stat-lbl{font-size:.86rem;color:var(--muted);line-height:1.35;}

/* ---------- areas ---------- */
.area-list{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;list-style:none;}
.area-list li{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 16px;font-size:.95rem;color:var(--ink);display:flex;align-items:center;gap:9px;}
.area-list svg{color:var(--brand);flex-shrink:0;}

/* ---------- gallery ---------- */
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.gallery .photo{border-radius:var(--radius);border:1px solid var(--line);}

/* ---------- faq ---------- */
.faq{display:flex;flex-direction:column;gap:10px;}
.faq-item{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);}
.faq-q{width:100%;background:none;border:none;cursor:pointer;text-align:left;padding:19px 22px;display:flex;align-items:center;justify-content:space-between;gap:18px;font-family:var(--sans);font-size:1.01rem;font-weight:600;color:var(--ink);line-height:1.4;}
.faq-q:hover{color:var(--brand);}
.faq-ico{flex-shrink:0;width:24px;height:24px;border-radius:7px;background:var(--bg-alt);color:var(--brand);display:grid;place-items:center;font-size:1.05rem;line-height:1;transition:transform .2s ease;}
.faq-item.open .faq-ico{transform:rotate(45deg);}
.faq-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .25s ease;}
.faq-item.open .faq-a{grid-template-rows:1fr;}
.faq-a-inner{overflow:hidden;}
.faq-a p{padding:0 22px 20px;font-size:.99rem;}

/* ---------- page header (inner pages) ---------- */
.page-head{background:var(--ink);color:#fff;padding:62px 0;position:relative;overflow:hidden;}
.page-head::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,var(--hero-scrim) 0%,var(--hero-scrim-2) 100%);}
.page-head .wrap{position:relative;z-index:2;display:flex;flex-direction:column;gap:12px;}
.page-head h1{color:#fff;font-size:clamp(1.9rem,4vw,2.8rem);}
.page-head p{color:rgba(255,255,255,.85);max-width:44em;}
.crumbs{font-size:.85rem;color:rgba(255,255,255,.65);}
.crumbs a{color:rgba(255,255,255,.85);}

/* ---------- cta band ---------- */
.cta{border-radius:var(--radius-lg);background:var(--brand);color:#fff;padding:54px 40px;text-align:center;display:flex;flex-direction:column;gap:16px;align-items:center;}
.cta h2{color:#fff;}
.cta p{color:rgba(255,255,255,.9);font-size:1.05rem;max-width:34em;}
.cta small{color:rgba(255,255,255,.78);font-size:.88rem;}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:42px;align-items:start;}
.contact-list{list-style:none;display:flex;flex-direction:column;gap:18px;}
.contact-list li{display:flex;gap:14px;align-items:flex-start;}
.contact-list .ico{width:40px;height:40px;}
.contact-list strong{display:block;color:var(--ink);font-family:var(--display);}
.contact-list span,.contact-list a{font-size:.97rem;}
.map-embed{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--bg-alt);aspect-ratio:16/10;}
.map-embed iframe{width:100%;height:100%;border:0;display:block;}

/* ---------- footer ---------- */
.footer{background:var(--ink);color:rgba(255,255,255,.7);padding:56px 0 28px;}
.footer h4{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:#fff;margin-bottom:14px;}
.footer-grid{display:grid;grid-template-columns:1.6fr repeat(3,1fr);gap:34px;}
.footer-links{list-style:none;display:flex;flex-direction:column;gap:9px;}
.footer-links a{color:rgba(255,255,255,.72);font-size:.94rem;}
.footer-links a:hover{color:#fff;}
.footer-brand p{font-size:.94rem;margin-top:12px;max-width:34em;}
.footer-brand .nav-logo{color:#fff;}
.footer-brand .nav-logo-sub{color:rgba(255,255,255,.6);}
.footer-bottom{margin-top:38px;padding-top:20px;border-top:1px solid rgba(255,255,255,.14);font-size:.86rem;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;}
.footer-bottom a{color:rgba(255,255,255,.72);}

/* ---------- sticky mobile call bar ---------- */
.sticky-bar{display:none;}

@media (max-width:980px){
    .hero-inner{grid-template-columns:1fr;gap:34px;padding:66px var(--gutter) 72px;}
    .grid-3,.grid-4{grid-template-columns:repeat(2,1fr);}
    .steps{grid-template-columns:1fr;}
    .split,.contact-grid{grid-template-columns:1fr;gap:32px;}
    .trust-grid{grid-template-columns:repeat(2,1fr);}
    .area-list{grid-template-columns:repeat(2,1fr);}
    .gallery{grid-template-columns:repeat(2,1fr);}
    .footer-grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:760px){
    .nav-links{display:none;}
    .nav .btn{display:none;}
    .nav-toggle{display:block;}
    .topbar .wrap{justify-content:center;}
    .section{padding:60px 0;}
    .grid-3,.grid-4,.grid-2,.gallery,.stats{grid-template-columns:1fr;}
    .cta{padding:42px 22px;}
    .footer-grid{grid-template-columns:1fr;gap:26px;}
    body{padding-bottom:72px;}
    .sticky-bar{
        display:grid;grid-template-columns:1fr 1fr;gap:8px;
        position:fixed;left:0;right:0;bottom:0;z-index:70;
        background:#fff;border-top:1px solid var(--line);padding:9px 12px;
        box-shadow:0 -6px 20px rgba(0,0,0,.09);
    }
    .sticky-bar .btn{width:100%;padding:13px 14px;font-size:.95rem;}
}
@media (prefers-reduced-motion:reduce){
    *{transition:none !important;}
    html{scroll-behavior:auto;}
}

/* two-up form rows and card checklists (used by sites with "form" or card blocks) */
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.card-list{gap:8px;margin-top:2px;}
.card-list li{font-size:.94rem;}
@media (max-width:760px){.field-row{grid-template-columns:1fr;}}

/* legal pages (privacy policy) */
.legal{color:var(--body);font-size:1.02rem;}
.legal h2{font-size:clamp(1.2rem,2.2vw,1.4rem);margin:34px 0 10px;}
.legal p{margin:0 0 14px;}
.legal ul{margin:0 0 16px 22px;}
.legal li{margin-bottom:8px;}
.legal strong{color:var(--ink);}
.legal-callout{background:var(--bg-alt);border-left:4px solid var(--brand);padding:16px 20px;border-radius:0 var(--radius) var(--radius) 0;color:var(--ink);}
