:root{
  --red:#1a1c1e;
  --red-deep:#000000;
  --ink:#1a1c1e;
  --ink-soft:#43474c;
  --paper:#ffffff;
  --tint:#faf7f6;
  --steel:#6b7076;
  --line:#e8e6e4;
  --green:#1fab55;
  --radius:14px;
  --font-d:'Archivo',system-ui,sans-serif;
  --font-m:'IBM Plex Mono',ui-monospace,monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--font-d);background:var(--paper);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased}
img,svg{display:block}
a{color:inherit}
.wrap{max-width:1140px;margin:0 auto;padding:0 24px}
.mono{font-family:var(--font-m);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase}

/* top bar */
.topbar{background:var(--red);color:#fff;font-family:var(--font-m);font-size:.73rem;letter-spacing:.06em}
.topbar .wrap{display:flex;justify-content:space-between;align-items:center;padding-top:7px;padding-bottom:7px;gap:12px}
.topbar a{color:#fff;text-decoration:underline;text-underline-offset:3px;font-weight:600}
@media(max-width:640px){.topbar .hide-sm{display:none}}

/* header */
header.site{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;height:76px}
.logo{display:flex;align-items:center;gap:12px;text-decoration:none}
.logo img{width:50px;height:50px;border-radius:50%}
.logo-text{line-height:1.15}
.logo-text b{font-weight:800;font-size:1rem;display:block;letter-spacing:-.01em}
.logo-text span{font-family:var(--font-m);font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;color:var(--red)}
nav.main{display:flex;gap:26px;font-weight:600;font-size:.92rem}
nav.main a{text-decoration:none;color:var(--ink-soft)}
nav.main a:hover{color:var(--red)}
@media(max-width:880px){nav.main{display:none}}
.btn{display:inline-flex;align-items:center;gap:9px;padding:13px 24px;border-radius:999px;font-weight:700;font-size:.95rem;text-decoration:none;border:1.5px solid transparent;transition:transform .12s ease,background .12s ease;cursor:pointer;font-family:var(--font-d)}
.btn:hover{transform:translateY(-2px)}
.btn-red{background:var(--red);color:#fff}
.btn-red:hover{background:var(--red-deep)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn-white{background:#fff;color:var(--red)}
.btn-wa{background:var(--green);color:#fff}
.btn.small{padding:9px 18px;font-size:.85rem}

/* hero */
.hero{padding:72px 0 64px;background:linear-gradient(180deg,var(--tint),var(--paper));position:relative;overflow:hidden}
.hero .wrap{display:grid;grid-template-columns:1.12fr .88fr;gap:56px;align-items:start;position:relative;z-index:1}
@media(max-width:960px){.hero .wrap{grid-template-columns:1fr}}
/* optional photographic hero layer (only present on pages that pass a
   hero image — see IMAGE_ASSET_LIST.md) — sits behind the text/form grid,
   with a scrim for legibility; the jobcard form has its own solid white
   background so it stays fully readable either way */
.hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;z-index:0}
.hero-scrim{position:absolute;inset:0;background:linear-gradient(90deg,var(--paper) 0%,rgba(255,255,255,.94) 40%,rgba(255,255,255,.72) 100%);z-index:0}
@media(max-width:640px){.hero-scrim{background:linear-gradient(180deg,rgba(255,255,255,.90) 0%,rgba(255,255,255,.96) 55%,var(--paper) 100%)}}
.eyebrow{display:inline-flex;align-items:center;gap:9px;color:var(--red);font-family:var(--font-m);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;margin-bottom:20px;font-weight:600}
.eyebrow::before{content:"";width:26px;height:2px;background:var(--red)}
h1{font-size:clamp(2.5rem,5.4vw,4.2rem);line-height:1.03;font-weight:900;letter-spacing:-.035em;font-stretch:94%}
h1 em{font-style:normal;color:var(--red)}
.hero p.lead{margin:22px 0 30px;font-size:1.12rem;color:var(--ink-soft);max-width:33rem}
.cta-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:32px}
.trust{display:flex;gap:22px;flex-wrap:wrap;font-family:var(--font-m);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--steel)}
.trust li{list-style:none;display:flex;align-items:center;gap:8px}
.trust li::before{content:"✓";color:var(--red);font-weight:700}

/* job card form */
.jobcard{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 20px 50px rgba(26,28,30,.10),0 2px 8px rgba(0,0,0,.05);overflow:hidden}
.jobcard-head{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:var(--red);color:#fff}
.jobcard-head .mono{color:#c7cbcf}
.jobcard-head b{font-size:.92rem}
.jobcard-body{padding:22px 24px 26px;display:grid;gap:13px}
.jobcard label{font-family:var(--font-m);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--steel);display:block;margin-bottom:5px}
.jobcard input,.jobcard select,.jobcard textarea{width:100%;padding:11px 13px;border:1.5px solid var(--line);border-radius:9px;font-family:var(--font-d);font-size:.95rem;background:#fff;color:var(--ink)}
.jobcard input:focus,.jobcard select:focus,.jobcard textarea:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px rgba(26,28,30,.14)}
.jobcard .row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:480px){.jobcard .row2{grid-template-columns:1fr}}
.form-note{font-size:.78rem;color:var(--steel)}
.form-ok{display:none;background:#e8f8ee;border:1.5px solid var(--green);color:#116136;padding:12px 14px;border-radius:9px;font-size:.88rem}

/* sections */
section{padding:80px 0}
.sec-head{max-width:620px;margin-bottom:44px}
.sec-head .mono{color:var(--red);display:block;margin-bottom:12px;font-weight:600}
h2{font-size:clamp(1.75rem,3.3vw,2.5rem);font-weight:900;letter-spacing:-.03em;line-height:1.1}
.sec-head p{margin-top:14px;color:var(--ink-soft)}

/* services */
#services{background:var(--tint)}
.svc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
@media(max-width:1000px){.svc-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.svc-grid{grid-template-columns:1fr}}
.svc{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:26px 22px;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;text-decoration:none;display:flex;flex-direction:column;gap:12px}
.svc:hover{transform:translateY(-4px);border-color:var(--red);box-shadow:0 14px 32px rgba(26,28,30,.12)}
.svc .ico{font-size:1.6rem}
.svc .tag{position:absolute;top:14px;right:14px;background:var(--red);color:#fff;font-family:var(--font-m);font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:999px;font-weight:700}
.svc h3{font-size:1.04rem;font-weight:800;letter-spacing:-.01em}
.svc p{font-size:.85rem;color:var(--steel);flex:1}
.svc .book{font-family:var(--font-m);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--red);font-weight:600}
.svc .book::after{content:" →"}
.price-note{margin-top:28px;background:var(--red);color:#fff;border-radius:var(--radius);padding:24px 28px;display:flex;gap:18px;align-items:center;flex-wrap:wrap;justify-content:space-between}
.price-note b{font-size:1.05rem}
.price-note span{font-size:.9rem;color:#c7cbcf}

/* steps */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;counter-reset:step}
@media(max-width:900px){.steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.steps{grid-template-columns:1fr}}
.step{border:1px solid var(--line);border-radius:var(--radius);padding:26px 22px;position:relative;background:#fff}
.step::before{counter-increment:step;content:"0" counter(step);font-family:var(--font-m);font-weight:600;font-size:.78rem;color:var(--red);border:1.5px solid var(--red);padding:4px 10px;border-radius:999px;display:inline-block;margin-bottom:16px}
.step h3{font-size:1rem;font-weight:800;margin-bottom:8px}
.step p{font-size:.86rem;color:var(--steel)}

/* why */
.why{background:var(--ink);color:#fff}
.why .sec-head .mono{color:#4cd68a}
.why .sec-head p{color:#b8bcc2}
.why-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
@media(max-width:900px){.why-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.why-grid{grid-template-columns:1fr}}
.why-item{border:1px solid #33373c;border-radius:var(--radius);padding:24px 22px;background:#222528}
.why-item .mono{color:#4cd68a;display:block;margin-bottom:10px}
.why-item h3{font-size:1rem;font-weight:800;margin-bottom:8px}
.why-item p{font-size:.85rem;color:#a7acb2}

/* areas */
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chips span{font-family:var(--font-m);font-size:.75rem;letter-spacing:.04em;background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 16px;transition:all .12s}
.chips span:hover{border-color:var(--red);color:var(--red)}

/* testimonials */
.tst-wrap{background:var(--tint)}
.tst-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:900px){.tst-grid{grid-template-columns:1fr}}
.tst{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:26px 24px}
.tst .stars{color:var(--red);letter-spacing:2px;margin-bottom:12px}
.tst p{font-size:.93rem;color:var(--ink-soft)}
.tst footer{margin-top:16px;font-family:var(--font-m);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}

/* faq */
.faq{max-width:760px}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;font-weight:700;padding:20px 4px;list-style:none;display:flex;justify-content:space-between;gap:16px;align-items:center}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-weight:800;font-size:1.25rem;color:var(--red)}
.faq details[open] summary::after{content:"–"}
.faq .a{padding:0 4px 20px;color:var(--ink-soft);font-size:.94rem;max-width:640px}

/* final cta */
.final{background:var(--red);color:#fff}
.final .wrap{display:flex;justify-content:space-between;align-items:center;gap:28px;flex-wrap:wrap}
.final h2{max-width:540px}
.final .tagline{font-family:var(--font-m);font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:#c7cbcf;display:block;margin-bottom:12px}
.final .cta-row{margin:0}

/* footer */
footer.site{background:var(--ink);color:#a7acb2;padding:56px 0 32px;font-size:.9rem}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:36px;margin-bottom:40px}
@media(max-width:860px){.foot-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.foot-grid{grid-template-columns:1fr}}
footer.site h4{color:#fff;font-size:.95rem;margin-bottom:14px;font-weight:800}
footer.site a{color:#a7acb2;text-decoration:none;display:block;margin-bottom:9px}
footer.site a:hover{color:#4cd68a}
.foot-bottom{border-top:1px solid #33373c;padding-top:22px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-family:var(--font-m);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}

/* floating buttons */
.float-cta{position:fixed;bottom:18px;right:18px;z-index:80;display:flex;flex-direction:column;gap:12px}
.float-cta a{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;box-shadow:0 6px 18px rgba(0,0,0,.25);text-decoration:none}
.float-call{background:var(--red)}
.float-wa{background:var(--green)}

/* sticky mobile booking bar */
.sticky-mobile-cta{position:fixed;left:0;right:0;bottom:0;z-index:90;display:none;box-shadow:0 -4px 18px rgba(0,0,0,.15)}
.sticky-mobile-cta a{flex:1;justify-content:center;border-radius:0;padding:15px 10px;font-size:.92rem}
@media(max-width:880px){
  .sticky-mobile-cta{display:flex}
  .float-cta{display:none}
  body{padding-bottom:58px}
}
:focus-visible{outline:3px solid var(--red);outline-offset:2px}

/* breadcrumbs (service pages) */
.breadcrumb{font-family:var(--font-m);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--steel);padding:16px 0}
.breadcrumb a{color:var(--steel);text-decoration:none}
.breadcrumb a:hover{color:var(--red)}
.breadcrumb .sep{margin:0 6px;color:var(--line)}
.breadcrumb .current{color:var(--ink)}

/* symptom / fix lists (service pages) */
.fix-list{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 26px;margin-top:8px}
@media(max-width:640px){.fix-list{grid-template-columns:1fr}}
.fix-list li{list-style:none;padding-left:20px;position:relative;font-size:.94rem;color:var(--ink-soft)}
.fix-list li::before{content:"•";position:absolute;left:0;color:var(--red);font-weight:900}

/* AEO answer-first Q&A blocks */
.qa-list{display:grid;gap:26px;max-width:820px}
.qa-item{border-left:3px solid var(--red);padding:2px 0 2px 20px}
.qa-item h3{font-size:1.05rem;font-weight:800;margin-bottom:8px;letter-spacing:-.01em}
.qa-item p{font-size:.94rem;color:var(--ink-soft)}
.qa-item .tech-note{margin-top:8px;font-size:.82rem;color:var(--red-deep);font-weight:700}

/* intro / value-prop strip on service pages */
.value-strip{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0 8px}
.value-strip span{font-family:var(--font-m);font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;background:var(--tint);border:1px solid var(--line);border-radius:999px;padding:8px 14px;color:var(--ink-soft)}

/* SEO copy strip above footer */
.seo-copy{background:var(--tint);padding:52px 0}
.seo-copy h2{font-size:1.3rem;margin-bottom:14px}
.seo-copy p{color:var(--ink-soft);font-size:.92rem;max-width:920px}

/* footer popular searches */
.popular-searches{border-top:1px solid #33373c;padding-top:22px;margin-top:6px}
.popular-searches h4{color:#fff;font-size:.8rem;margin-bottom:12px;font-weight:800;font-family:var(--font-m);letter-spacing:.06em;text-transform:uppercase}
.popular-searches .links{display:flex;flex-wrap:wrap;gap:9px 18px}
.popular-searches a{color:#a7acb2;text-decoration:none;font-size:.82rem;margin:0}
.popular-searches a:hover{color:#4cd68a}

/* help hub */
.help-group{margin-bottom:44px}
.help-group h2{font-size:1.3rem;margin-bottom:18px}
.help-group .qa-list{gap:18px}

/* 404 */
.notfound{padding:120px 0;text-align:center}
.notfound .code{font-family:var(--font-m);color:var(--red);font-size:1rem;letter-spacing:.1em;margin-bottom:14px}

/* ============================================================
   PREMIUM SERVICE-PAGE COMPONENTS
   Additive design-system extension for the service-page redesign.
   No photography — a consistent inline-SVG line-icon language instead
   (see icon usage below). Existing components/tokens above are untouched.
   ============================================================ */

/* reusable icon badge — circular tinted container around an inline SVG icon */
.icon-badge{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;background:var(--tint);border:1.5px solid var(--line);flex-shrink:0;transition:transform .2s ease,background .2s ease}
.icon-badge svg{width:26px;height:26px;stroke:var(--red);fill:none;stroke-width:1.8}
.icon-badge.on-dark{background:#262b26;border-color:#33413a}
.icon-badge.on-dark svg{stroke:#4cd68a}
.icon-badge.sm{width:38px;height:38px;border-radius:10px}
.icon-badge.sm svg{width:19px;height:19px}

/* process timeline — enhances the existing .steps/.step grid with a
   connecting line + icon badge, applies sitewide wherever .steps already
   exists (homepage + every service page), not just the redesigned pages */
.steps{position:relative}
.steps::before{content:"";position:absolute;top:44px;left:calc(12.5% + 26px);right:calc(12.5% + 26px);height:2px;background:repeating-linear-gradient(90deg,var(--line) 0 8px,transparent 8px 14px);z-index:0}
@media(max-width:900px){.steps::before{display:none}}
.step{display:flex;flex-direction:column;gap:14px;transition:transform .18s ease,box-shadow .18s ease;z-index:1}
.step:hover{transform:translateY(-4px);box-shadow:0 14px 32px rgba(26,28,30,.10)}
.step .icon-badge{margin-bottom:2px}
.step::before{width:36px;height:24px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-bottom:0;position:absolute;top:22px;right:20px;background:#fff}

/* benefit cards — light-theme alternative to the homepage's dark .why
   section, for repeated per-page use without visual monotony */
.benefit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:900px){.benefit-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.benefit-grid{grid-template-columns:1fr}}
.benefit-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:26px 22px;display:flex;flex-direction:column;gap:14px;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.benefit-card:hover{transform:translateY(-4px);box-shadow:0 14px 32px rgba(26,28,30,.10);border-color:var(--red)}
.benefit-card h3{font-size:1rem;font-weight:800;letter-spacing:-.01em}
.benefit-card p{font-size:.87rem;color:var(--steel)}

/* pricing cards — deliberately NOT fixed line-item prices (this business
   quotes after a free diagnosis, no fixed price list — see homepage
   "Why no price list?"); these describe the 3 real stages of engagement
   honestly instead of fabricating numbers that don't exist */
.price-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:900px){.price-cards{grid-template-columns:1fr}}
.price-card{background:#fff;border:1.5px solid var(--line);border-radius:var(--radius);padding:28px 24px;display:flex;flex-direction:column;gap:12px;position:relative;transition:transform .18s ease,box-shadow .18s ease}
.price-card:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(26,28,30,.12)}
.price-card.featured{border-color:var(--red);box-shadow:0 18px 40px rgba(26,28,30,.10)}
.price-card.featured::before{content:"Included with every visit";position:absolute;top:-13px;left:24px;background:var(--red);color:#fff;font-family:var(--font-m);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;padding:5px 12px;border-radius:999px;font-weight:700}
.price-card .amount{font-size:1.7rem;font-weight:900;letter-spacing:-.02em;margin:4px 0}
.price-card .amount small{font-size:.55em;font-weight:700;color:var(--steel);letter-spacing:0;text-transform:none}
.price-card ul{list-style:none;display:flex;flex-direction:column;gap:8px;margin-top:4px}
.price-card ul li{font-size:.87rem;color:var(--ink-soft);padding-left:22px;position:relative}
.price-card ul li::before{content:"";position:absolute;left:0;top:.35em;width:14px;height:14px;border-radius:50%;background:var(--green);opacity:.15}
.price-card ul li::after{content:"✓";position:absolute;left:2.5px;top:-1px;color:var(--green);font-weight:900;font-size:.72rem}

/* included-services checklist — denser than .fix-list, icon-led */
.included-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media(max-width:640px){.included-grid{grid-template-columns:1fr}}
.included-item{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;background:#fff;border:1px solid var(--line);border-radius:12px;transition:border-color .15s ease}
.included-item:hover{border-color:var(--red)}
.included-item span{font-size:.9rem;color:var(--ink-soft);padding-top:2px}

/* trust/warranty badge row */
.trust-badges{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
@media(max-width:900px){.trust-badges{grid-template-columns:repeat(2,1fr)}}
.trust-badge{text-align:center;padding:22px 14px}
.trust-badge .icon-badge{margin:0 auto 12px}
.trust-badge b{display:block;font-size:.92rem;font-weight:800;margin-bottom:4px}
.trust-badge p{font-size:.8rem;color:var(--steel)}

/* warranty spotlight band */
.warranty-band{background:linear-gradient(135deg,#12321f,#1a1c1e);color:#fff;border-radius:var(--radius);padding:36px 32px;display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.warranty-band .icon-badge{background:rgba(76,214,138,.14);border-color:rgba(76,214,138,.3);width:64px;height:64px;border-radius:16px}
.warranty-band .icon-badge svg{stroke:#4cd68a;width:32px;height:32px}
.warranty-band h3{font-size:1.2rem;font-weight:900;margin-bottom:6px}
.warranty-band p{font-size:.9rem;color:#c7cbcf;max-width:520px}

/* micro-animations: fade/rise on scroll, applied via a shared IntersectionObserver in common.js */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease}
.reveal.in{opacity:1;transform:translateY(0)}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}
