/* ===== Tokens ===== */
:root{
  --ink:#111214; --ink-2:#1C1E22; --gold:#C9A227; --gold-deep:#A8861C; --gold-tint:#FBF4DC;
  --paper:#FAF8F3; --paper-2:#EEEFF1; --text:#1B1D21; --muted:#5F6470; --rule:#DDDFE3; --ok:#2E7D4F; --alert:#B3261E; --gold-text:#8A6E12;
  --display:"Barlow Condensed","Arial Narrow",Impact,sans-serif; --body:"Source Sans 3","Segoe UI",system-ui,sans-serif;
  --maxw:1180px; --pad:clamp(16px,4vw,32px); --radius:6px; --shadow:0 10px 30px rgba(17,18,20,.14);
}
*{box-sizing:border-box} html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--text);font-family:var(--body);font-size:17px;line-height:1.55}
img,svg,video{max-width:100%;height:auto;display:block}
a{color:inherit} h1,h2,h3,h4{font-family:var(--display);line-height:1;margin:0 0 .4em;letter-spacing:.005em;text-wrap:balance}
h1{font-size:clamp(38px,6.2vw,72px);font-weight:800;line-height:.96} h2{font-size:clamp(30px,4.2vw,50px);font-weight:700}
h3{font-size:clamp(22px,2.4vw,28px);font-weight:700} p{margin:0 0 1em;max-width:68ch}
.gold{color:var(--gold)} .eyebrow{font-family:var(--body);font-weight:700;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-text);margin:0 0 12px} .band .eyebrow,.hero .eyebrow,.cutaway .eyebrow{color:var(--gold)} .lead-card .eyebrow,.card .eyebrow,.form .eyebrow,.rev .eyebrow{color:var(--gold-text)}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad)} .num{font-variant-numeric:tabular-nums}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.ico{width:1.35em;height:1.35em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ===== Buttons ===== */
.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--display);font-weight:700;font-size:19px;letter-spacing:.02em;text-transform:uppercase;text-decoration:none;padding:15px 24px;border-radius:var(--radius);border:2px solid transparent;cursor:pointer;transition:transform .15s,background .15s,border-color .15s;line-height:1}
.btn--gold{background:var(--gold);color:var(--ink);border-color:var(--gold)} .btn--gold:hover{background:var(--gold-deep);border-color:var(--gold-deep);transform:translateY(-2px)}
.btn--ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.55)} .btn--ghost:hover{border-color:#fff;transform:translateY(-2px)}
.btn--ink{background:var(--ink);color:#fff;border-color:var(--ink)} .btn--ink:hover{background:#000;transform:translateY(-2px)}
.btn--lg{font-size:22px;padding:18px 30px} .btn--block{width:100%;justify-content:center}

/* ===== Header ===== */
.mbar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:grid;grid-template-columns:1fr 1fr;background:var(--ink);border-top:1px solid #2a2d33}
.mbar a{display:flex;align-items:center;justify-content:center;gap:8px;padding:15px 8px;font-family:var(--display);font-weight:700;font-size:18px;text-transform:uppercase;text-decoration:none;color:#fff}
.mbar a+a{background:var(--gold);color:var(--ink)}
.site-header{position:sticky;top:0;z-index:50;background:var(--ink);color:#fff;transition:padding .2s}
.site-header .wrap{display:flex;align-items:center;gap:20px;min-height:76px}
.site-header.is-compact .wrap{min-height:60px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:#fff;font-family:var(--display);font-weight:800;font-size:24px;letter-spacing:.06em}
.logo img{width:auto;height:44px} .site-header.is-compact .logo img{height:36px}
.nav{display:none;margin-left:auto} .nav ul{list-style:none;margin:0;padding:0;display:flex;gap:4px}
.nav a{display:block;padding:10px 12px;color:#fff;text-decoration:none;font-weight:600;font-size:16px;border-radius:4px} .nav a:hover{background:#2a2d33}
.nav li{position:relative} .nav li:hover>ul,.nav li:focus-within>ul{display:block}
.nav li>ul{display:none;position:absolute;top:100%;left:0;background:var(--ink-2);min-width:220px;padding:8px;border-radius:6px;box-shadow:var(--shadow)}
.nav li>ul li{display:block}
.hdr-cta{display:none;align-items:center;gap:14px;margin-left:auto}
.hdr-phone{color:#fff;text-decoration:none;font-family:var(--display);font-weight:700;font-size:22px;letter-spacing:.02em;display:flex;align-items:center;gap:8px}
.menu-btn{margin-left:auto;background:none;border:0;color:#fff;padding:8px;cursor:pointer}
.menu-btn .ico{width:28px;height:28px}
.mnav{display:none;background:var(--ink-2);color:#fff;padding:12px var(--pad) 24px}
.mnav.is-open{display:block} .mnav a{display:block;padding:12px 0;color:#fff;text-decoration:none;font-family:var(--display);font-size:22px;font-weight:700;border-bottom:1px solid #2a2d33}
.mnav a.sub{font-family:var(--body);font-size:16px;font-weight:600;padding-left:16px}
@media (min-width:960px){.mbar{display:none}.nav,.hdr-cta{display:flex}.menu-btn,.mnav{display:none!important}body{padding-bottom:0}}
@media (max-width:959px){body{padding-bottom:58px}}

/* ===== Hero ===== */
.hero{position:relative;background:var(--ink);color:#fff;overflow:hidden;isolation:isolate}
.hero__media{position:absolute;inset:0;z-index:-1} .hero__media picture,.hero__media img{width:100%;height:100%;object-fit:cover;object-position:60% 40%}
.hero__media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(17,18,20,.94) 0%,rgba(17,18,20,.82) 45%,rgba(17,18,20,.35) 100%)}
.hero__inner{display:grid;gap:32px;padding:44px var(--pad) 56px;align-items:center}
.proofline{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-weight:600;font-size:15px;color:#E6E1D3;margin-bottom:18px}
.proofline .g{font-weight:800;color:#fff} .stars{color:var(--gold);letter-spacing:1px;font-size:16px}
.hero h1{margin-bottom:14px} .hero .sub{font-size:19px;color:#D5D2CA;max-width:56ch}
.lead-card{background:#fff;color:var(--text);border-radius:10px;padding:22px;box-shadow:var(--shadow);max-width:520px}
.lead-card h3{margin-bottom:4px} .lead-card p{color:var(--muted);font-size:15px;margin-bottom:12px}
.lead-card form{display:grid;gap:10px} .lead-card input{font:inherit;padding:14px 14px;border:1.5px solid var(--rule);border-radius:var(--radius);font-size:17px}
.lead-card .alt{font-size:15px;color:var(--muted);text-align:center;margin:6px 0 0}.lead-card .alt a{color:var(--text);font-weight:700;text-decoration:none}
@media (min-width:900px){.hero__inner{grid-template-columns:1.2fr .9fr;padding:72px var(--pad) 88px}.hero__media::after{background:linear-gradient(90deg,rgba(17,18,20,.92) 0%,rgba(17,18,20,.6) 50%,rgba(17,18,20,.15) 100%)}}
.hero--short .hero__inner{padding:40px var(--pad) 48px}

/* ===== Diagonal divider + stats card ===== */
.pitch{height:52px;background:linear-gradient(to right bottom,var(--ink) 49.5%,var(--paper) 50%)}
.stats-card{background:#fff;border-radius:10px;box-shadow:var(--shadow);display:grid;grid-template-columns:repeat(2,1fr);margin:-70px auto 0;position:relative;z-index:2;overflow:hidden}
.stats-card>div{padding:20px 18px;border-bottom:1px solid var(--rule);border-right:1px solid var(--rule)}
.stats-card b{display:block;font-family:var(--display);font-size:34px;font-weight:800;line-height:1;color:var(--ink)} .stats-card span{display:block;font-size:14px;color:var(--muted);margin-top:4px}
.stats-card .ico{color:var(--gold);margin-bottom:8px}
@media (min-width:900px){.stats-card{grid-template-columns:repeat(5,1fr)}.stats-card>div{border-bottom:0}.stats-card>div:last-child{border-right:0}}

/* ===== Sections ===== */
.sec{padding:64px 0} .sec--tight{padding:40px 0} .sec--alt{background:var(--paper-2)}
.band{background:var(--ink);color:#fff;position:relative;overflow:hidden} .band--tex::before{content:"";position:absolute;inset:0;background:url(/assets/img/tex-shingle-800.jpg) center/420px repeat;opacity:.08;pointer-events:none}
.band .wrap{position:relative} .band p{color:#CFCBC2}
.sec-head{max-width:70ch;margin-bottom:28px} .sec-head p{color:var(--muted);font-size:18px}
.split{display:grid;gap:32px;align-items:center} @media (min-width:900px){.split{grid-template-columns:1fr 1fr}.split--wide{grid-template-columns:1.1fr .9fr}}

/* ===== Service cards ===== */
.svc-grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.card{background:#fff;border:1px solid var(--rule);border-radius:10px;overflow:hidden;display:flex;flex-direction:column;text-decoration:none;color:inherit;transition:transform .15s,box-shadow .15s}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.card__img{aspect-ratio:4/3;background:var(--ink-2);overflow:hidden} .card__img img{width:100%;height:100%;object-fit:cover}
.card__img--empty{display:flex;align-items:center;justify-content:center;color:var(--gold)} .card__img--empty .ico{width:44px;height:44px}
.card__body{padding:18px 18px 20px} .card__body h3{margin-bottom:6px} .card__body p{color:var(--muted);font-size:16px;margin-bottom:10px}
.card__link{font-weight:700;color:var(--ink);display:inline-flex;align-items:center;gap:6px}

/* ===== Checks / lists ===== */
.checks{list-style:none;padding:0;margin:0;display:grid;gap:12px} .checks li{display:flex;gap:12px;align-items:flex-start;font-size:17px}
.checks .ico{color:var(--gold);margin-top:3px} .band .checks li b{color:#fff}
.symptoms{list-style:none;padding:0;margin:0;display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.symptoms li{background:#fff;border:1px solid var(--rule);border-left:4px solid var(--gold);padding:12px 14px;border-radius:6px;font-weight:600}

/* ===== Process ===== */
.process{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));counter-reset:step}
.process div{background:#fff;color:var(--text);border:1px solid var(--rule);border-radius:10px;padding:20px} .process h4{font-family:var(--display);font-size:24px;margin:8px 0 6px}
.process div::before{counter-increment:step;content:counter(step);display:inline-flex;width:34px;height:34px;align-items:center;justify-content:center;border-radius:50%;background:var(--ink);color:var(--gold);font-family:var(--display);font-weight:800;font-size:20px}
.process p{color:var(--muted);font-size:16px;margin:0}

/* ===== Cutaway ===== */
.cutaway{background:var(--ink-2);border-radius:12px;padding:20px} .cutaway svg{width:100%;height:auto}
.cutaway text{font-family:var(--body);font-weight:600;fill:#EDE9DF;font-size:13px}

/* ===== Reviews ===== */
.rev-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.rev{background:#fff;border:1px solid var(--rule);border-radius:10px;padding:20px;display:flex;flex-direction:column;gap:8px}
.rev__head{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:var(--muted)} .rev__g{font-weight:800;color:#4285F4;font-size:18px}
.rev p{font-size:16px;margin:0} .rev__who{font-weight:700;color:var(--text)} .rev__reply{border-left:3px solid var(--gold);padding-left:10px;font-size:14px;color:var(--muted)}
.rating-line{display:flex;align-items:center;gap:10px;font-weight:700} .rating-line .stars{font-size:20px}
/* Gold reads at 2.4:1 on the light surfaces; --gold-text is the AA-safe gold (as used for eyebrows above).
   Measured: --gold-text is 4.86:1 on #fff and 4.58:1 on --paper (AA at any size), but only 4.23:1 on
   --paper-2 — on that surface use it for large text only (>=24px, or >=19px bold). */
.rev .stars,.rating-line .stars{color:var(--gold-text)}

/* ===== Cost band ===== */
.cost{display:grid;gap:24px;align-items:center} .cost .big{font-family:var(--display);font-weight:800;font-size:clamp(40px,7vw,80px);line-height:.95;color:var(--ink)}
@media (min-width:900px){.cost{grid-template-columns:1fr 1.2fr}}

/* ===== Timeline ===== */
.timeline{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))} .timeline .t{background:#fff;border:1px solid var(--rule);border-radius:10px;overflow:hidden}
.timeline .t__img{aspect-ratio:1/1;background:var(--ink-2);display:flex;align-items:center;justify-content:center;color:var(--gold)} .timeline .t__img img{width:100%;height:100%;object-fit:cover}
.timeline .t__body{padding:16px} .timeline .t__time{font-family:var(--display);font-weight:800;font-size:28px;color:var(--gold-text)}

/* ===== Areas / pin map ===== */
.areas{display:grid;gap:28px;align-items:start} @media (min-width:900px){.areas{grid-template-columns:1fr 1fr}}
.pinmap{background:var(--ink);border-radius:12px;position:relative;aspect-ratio:1/1;overflow:hidden}
.pinmap__grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:40px 40px}
.pin{position:absolute;transform:translate(-50%,-100%);color:#fff;text-decoration:none;font-size:12px;font-weight:600;display:flex;flex-direction:column;align-items:center;gap:2px}
.pin .ico{color:var(--gold);width:22px;height:22px} .pin--home .ico{color:#fff} .pin--home{font-weight:800}
.city-list{list-style:none;padding:0;margin:0;display:grid;gap:8px;grid-template-columns:repeat(2,1fr)} .city-list a{display:block;padding:10px 12px;background:#fff;border:1px solid var(--rule);border-radius:6px;text-decoration:none;font-weight:600}

/* ===== FAQ ===== */
.faq details{background:#fff;border:1px solid var(--rule);border-radius:8px;padding:0 18px;margin-bottom:10px} .faq summary{cursor:pointer;font-weight:700;font-size:18px;padding:16px 0;list-style:none;display:flex;justify-content:space-between;gap:12px}
.faq summary::after{content:"+";font-family:var(--display);font-size:26px;color:var(--gold)} .faq details[open] summary::after{content:"–"} .faq details p{padding-bottom:16px;color:var(--muted)}

/* ===== CTA band ===== */
.cta-band{background:var(--gold);color:var(--ink);padding:48px 0} .cta-band h2{margin-bottom:8px} .cta-band .row{display:flex;flex-wrap:wrap;gap:14px;align-items:center}

/* ===== Forms ===== */
.form{background:#fff;color:var(--text);border:1px solid var(--rule);border-radius:12px;padding:24px;box-shadow:var(--shadow)}
.form label{display:block;font-weight:700;margin:12px 0 6px} .form input,.form select,.form textarea{width:100%;font:inherit;padding:13px 14px;border:1.5px solid var(--rule);border-radius:var(--radius);font-size:17px}
.form .row{display:grid;gap:12px;grid-template-columns:1fr 1fr} .form .hint{font-size:14px;color:var(--muted);margin:6px 0 0}
.form .err{color:var(--alert);font-weight:600;font-size:15px;margin-top:6px;display:none} .form .err.is-on{display:block}
/* Address autocomplete dropdown (Google Places), attached under any [data-places] input */
.addr-wrap{position:relative} .addr-wrap input{width:100%}
.addr-dd{position:absolute;top:100%;left:0;right:0;z-index:20;background:#fff;color:var(--text);border:1.5px solid var(--rule);border-top:0;border-radius:0 0 var(--radius) var(--radius);box-shadow:var(--shadow);max-height:260px;overflow-y:auto;text-align:left}
.addr-dd[hidden]{display:none}
.addr-dd-item{padding:11px 14px;font-size:15px;line-height:1.35;cursor:pointer;border-bottom:1px solid var(--rule)} .addr-dd-item:last-child{border-bottom:0}
.addr-dd-item:hover,.addr-dd-item[aria-selected="true"]{background:var(--gold-tint)}
.steps{display:flex;gap:6px;margin-bottom:18px} .steps span{flex:1;height:6px;background:var(--rule);border-radius:3px} .steps span.is-on{background:var(--gold)}
/* The step machine only exists with JS (base.html adds .js to <html> before this file loads). Without it all
   three steps stack and the step-3 submit posts a complete lead, so hide the progress bar and Next/Back too. */
.js .step{display:none} .js .step.is-on{display:block}
html:not(.js) .form .steps,html:not(.js) [data-next],html:not(.js) [data-back]{display:none}
.tiles{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))} .tiles label{margin:0;border:1.5px solid var(--rule);border-radius:8px;padding:14px 10px;text-align:center;cursor:pointer;font-weight:600;font-size:15px;display:flex;flex-direction:column;align-items:center;gap:6px}
.tiles input{position:absolute;opacity:0} .tiles label:has(input:checked){border-color:var(--gold);background:var(--gold-tint)} .tiles .ico{color:var(--gold);width:28px;height:28px}
.pills{display:flex;gap:8px;flex-wrap:wrap} .pills label{margin:0;border:1.5px solid var(--rule);border-radius:999px;padding:10px 16px;cursor:pointer;font-weight:600}
.pills label:has(input:checked){border-color:var(--gold);background:var(--gold-tint)} .pills input{position:absolute;opacity:0}
.tiles label:has(input:focus-visible),.pills label:has(input:focus-visible){outline:3px solid var(--gold);outline-offset:3px}
.form fieldset{border:0;padding:0;margin:0;min-width:0} .form legend{display:block;font-weight:700;padding:0;margin:12px 0 6px} .form fieldset.group{margin-top:4px}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--muted);margin-top:14px} .consent input{width:auto;margin-top:4px}
.form .actions{display:flex;gap:12px;margin-top:18px;align-items:center} .form .actions .back{background:none;border:0;font-weight:700;cursor:pointer;color:var(--muted)}
.hp{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}

/* ===== Footer ===== */
.footer{background:var(--ink);color:#CFCBC2;padding:56px 0 36px;font-size:15px} .footer a{color:#fff;text-decoration:none} .footer a:hover{color:var(--gold)}
.footer__grid{display:grid;gap:32px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))} .footer h4{font-family:var(--display);font-size:20px;color:#fff;margin-bottom:10px;letter-spacing:.04em}
.footer ul{list-style:none;margin:0;padding:0;display:grid;gap:6px} .footer__bottom{border-top:1px solid #2a2d33;margin-top:32px;padding-top:18px;display:flex;flex-wrap:wrap;gap:12px 24px;font-size:13px}
.fmap{background:var(--ink-2);border-radius:10px;aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;overflow:hidden} .fmap iframe{width:100%;height:100%;border:0} .fmap button{background:var(--gold);color:var(--ink);border:0;font:inherit;font-weight:700;padding:12px 18px;border-radius:6px;cursor:pointer}

/* ===== Pending (staging only) ===== */
/* .pending-wrap in the selector so the badge outranks context rules of the same specificity (.stats-card span). */
.pending-wrap{display:contents} .pending-wrap span.pending-badge{display:inline-block;vertical-align:middle;margin:4px 0 4px 6px;background:var(--gold);color:var(--ink);font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border-radius:3px;outline:2px dashed var(--gold-deep);outline-offset:2px}

/* ===== Gallery ===== */
.gal{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}

/* ===== Motion ===== */
[data-reveal]{opacity:1;transform:none;transition:opacity .35s ease,transform .35s ease} [data-reveal].will{opacity:0;transform:translateY(14px)} [data-reveal].in{opacity:1;transform:none}
.marquee{overflow:hidden;white-space:nowrap} .marquee__track{display:inline-flex;gap:48px;animation:marq 28s linear infinite;padding:12px 0} .marquee:hover .marquee__track{animation-play-state:paused}
@keyframes marq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}[data-reveal].will{opacity:1;transform:none}}
