:root{
  /* W2 design tokens — single source of truth, mirrored from the homepage
     (home.css `.rd`). `--red` used to carry BOTH the dark-surface role and the
     accent/interaction role, which is why the inner pages read monochrome; it
     is now dark-surface only and `--accent` owns interaction. */
  --ink:#14181A;          /* primary text + dark surfaces */
  --red:#14181A;          /* legacy alias, dark-surface role only */
  --red-deep:#000000;
  --accent:#1F7A4D;       /* W2 green — links, focus, active, emphasis */
  --ink-soft:#4A5350;
  --steel:#6B7370;
  --faint:#8A8880;
  --bg:#FBF9F6;           /* page canvas */
  --paper:#FFFFFF;        /* card surface */
  --tint:#F4F1EB;
  --sand:#F4F1EB;
  --mint:#E8F2EC;
  --mint-line:#D3E4DA;
  --line:#E7E3DB;
  --panel:#191E1E;
  --panel-line:#2B3231;
  --on-dark:#A9B4AF;
  --spring:#7FD3A6;
  --green:#1FAB55;        /* WhatsApp brand green — not the W2 accent */
  --wa:#25D366;
  --star:#C2761B;
  --amber:#C2761B;
  --amber-bg:#FBF0DF;
  --radius:16px;
  --radius-sm:12px;
  --radius-card:18px;
  --shell:1280px;
  --font-d:'Schibsted Grotesk',system-ui,-apple-system,'Segoe UI',sans-serif;
  --font-m:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--font-d);background:var(--bg);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased}
img,svg{display:block}
a{color:inherit}
.wrap{max-width:var(--shell);margin:0 auto;padding:0 32px}
@media(max-width:680px){.wrap{padding:0 20px}}
.mono{font-family:var(--font-m);font-size:.74rem;letter-spacing:.1em}

/* 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:650;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(--accent)}
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(--accent)}
@media(max-width:880px){nav.main{display:none}}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:16px 28px;border-radius:999px;font-weight:600;font-size:16px;line-height:1.2;text-decoration:none;border:1px solid transparent;transition:background .18s ease,color .18s ease,border-color .18s ease;cursor:pointer;font-family:var(--font-d)}

.btn-red{background:var(--ink);color:var(--bg);box-shadow:0 10px 24px -14px rgba(20,24,26,.7)}
.btn-red:hover{background:var(--accent);color:var(--bg)}
.btn-ghost{background:#fff;color:var(--ink);border-color:#DCD7CD;padding:15px 24px}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.btn.ghost{background:#fff;color:var(--ink);border-color:#DCD7CD;padding:15px 24px}
.btn.ghost:hover{border-color:var(--accent);color:var(--accent)}
.btn-white{background:#fff;color:var(--accent)}
.btn-wa{background:var(--wa);color:#0B2016}
.btn.small{padding:10px 16px;font-size:14px}

/* hero */
.hero{padding:72px 0 64px;background:var(--bg);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;filter:saturate(1.06) contrast(1.03)}
/* The scrim protects the text, not the whole hero. It stays heavy under the
   left-hand copy and falls away across the right half, which is empty on the
   sub-topic/brand/near-me pages and holds the (solid white) jobcard on the
   homepage — so the photograph is actually visible instead of washed out to
   near-white. Keyed to 960px, the same breakpoint where .hero .wrap collapses
   to one column: below it the copy spans the full width, so the gradient has
   to run top-to-bottom or the text ends up over the transparent edge. */
.hero-scrim{position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.97) 0%,rgba(255,255,255,.93) 36%,rgba(255,255,255,.70) 60%,rgba(255,255,255,.26) 100%);z-index:0}
@media(max-width:960px){.hero-scrim{background:linear-gradient(180deg,rgba(255,255,255,.66) 0%,rgba(255,255,255,.88) 34%,rgba(255,255,255,.97) 68%,var(--paper) 100%)}}
.eyebrow{display:inline-flex;align-items:center;gap:8px;color:var(--accent);background:var(--mint);border-radius:999px;padding:8px 13px;font-family:var(--font-m);font-size:11px;letter-spacing:.1em;margin-bottom:20px;font-weight:500}
.eyebrow::before{content:none}
h1{font-size:clamp(2.5rem,5.4vw,4.2rem);line-height:1.03;font-weight:700;letter-spacing:-.035em}
h1 em{font-style:normal;color:var(--accent)}
.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(--accent);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:12px 13px;border:1px solid var(--line);border-radius:11px;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(--accent)}
.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:1px solid var(--green);color:#116136;padding:12px 14px;border-radius:9px;font-size:.88rem}

/* sections */
section{padding:84px 0}
@media(max-width:680px){section{padding:56px 0}}
.sec-head{max-width:620px;margin-bottom:44px}
.sec-head .mono{color:var(--accent);display:block;margin-bottom:12px;font-weight:600}
h2{font-size:clamp(1.75rem,3.3vw,2.5rem);font-weight:700;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(-3px);border-color:#C9D8CF;box-shadow:0 18px 32px -24px rgba(20,24,26,.55)}
.svc .ico{font-size:1.6rem}
.svc .svc-img{width:calc(100% + 44px);height:auto;margin:-26px -22px 2px;aspect-ratio:16/10;object-fit:cover;border-radius:var(--radius) var(--radius) 0 0;display:block;background:var(--line)}
.svc .tag{position:absolute;top:14px;right:14px;background:var(--amber-bg);color:var(--amber);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:650;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(--accent);font-weight:600}
.svc .book::after{content:" →"}

/* 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(--accent);border:1px solid var(--accent);padding:4px 10px;border-radius:999px;display:inline-block;margin-bottom:16px}
.step h3{font-size:1rem;font-weight:650;margin-bottom:8px}
.step p{font-size:.86rem;color:var(--steel)}

/* why */

@media(max-width:900px){}
@media(max-width:520px){}

/* areas */
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chips span,.chips a{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;text-decoration:none;color:inherit}
.chips span:hover,.chips a:hover{border-color:var(--accent);color:var(--accent)}

/* 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(--star);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)}

/* review social-proof summary (HomeTriangle-style, honest numbers) */
.review-summary{display:grid;grid-template-columns:minmax(200px,1fr) 2fr;gap:32px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:30px 32px;margin-bottom:24px}
@media(max-width:760px){.review-summary{grid-template-columns:1fr;gap:22px;text-align:center}}
.rs-score{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
@media(max-width:760px){.rs-score{align-items:center}}
.rs-num{font-size:3.4rem;font-weight:700;line-height:1;letter-spacing:-.02em}
.rs-stars{color:var(--star);letter-spacing:3px;font-size:1.2rem}
.rs-count{font-family:var(--font-m);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--steel)}
.rs-bars{display:flex;flex-direction:column;gap:7px}
.rs-bar{display:grid;grid-template-columns:34px 1fr 42px;align-items:center;gap:10px;font-size:.8rem;color:var(--steel)}
.rs-bar i{display:block;height:8px;border-radius:99px;background:var(--line);position:relative;overflow:hidden}
.rs-bar i::after{content:"";position:absolute;inset:0;width:var(--w,0);background:var(--star);border-radius:99px}
.rs-bar b{font-weight:700;color:var(--ink);text-align:right}
/* upgraded review cards */
.tst-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.tst-avatar{width:42px;height:42px;border-radius:50%;background:var(--red);color:#fff;display:grid;place-items:center;font-family:var(--font-m);font-weight:700;font-size:.85rem;flex:none}
.tst-who{display:flex;flex-direction:column;line-height:1.3}
.tst-who b{font-size:.92rem}
.tst-who span{font-family:var(--font-m);font-size:.64rem;letter-spacing:.06em;text-transform:uppercase;color:var(--steel)}
.tst-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.tst .stars{margin-bottom:0}
.tst-verified{display:inline-flex;align-items:center;gap:4px;font-family:var(--font-m);font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;color:#2e7d46;background:#eaf6ee;border-radius:99px;padding:3px 9px;font-weight:700}
.tst-tag{display:inline-block;margin-top:14px;font-family:var(--font-m);font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;color:var(--steel);border:1px solid var(--line);border-radius:99px;padding:3px 10px}

/* 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:650;font-size:1.25rem;color:var(--accent)}
.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(--accent);color:#F2FAF5}
.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}

/* action band — real technician-at-work photo paired with a short pitch */
.action-band .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:44px;align-items:center}
@media(max-width:900px){.action-band .wrap{grid-template-columns:1fr}}
.action-band-media{border-radius:var(--radius);overflow:hidden;aspect-ratio:16/11;order:2}
.action-band-media img{width:100%;height:100%;object-fit:cover;display:block}
@media(max-width:900px){.action-band-media{order:-1}}
.action-band-copy .mono{color:var(--accent)}
.action-band-copy h2{margin:10px 0 14px}
.action-band-copy p{color:var(--ink-soft);max-width:34rem;margin-bottom:22px}

/* 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:650}
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(--accent)}
.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:2px solid var(--accent);outline-offset:2px;border-radius:6px}

/* 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(--accent)}
.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(--accent);font-weight:700}

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

/* 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;line-height:1.5;letter-spacing:.05em;text-transform:uppercase;background:var(--mint);border:1px solid var(--mint-line);border-radius:999px;padding:8px 14px;color:var(--accent);max-width:100%}

/* 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 */

/* 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(--accent);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:1px solid var(--line);flex-shrink:0;transition:transform .2s ease,background .2s ease}
.icon-badge svg{width:26px;height:26px;stroke:var(--accent);fill:none;stroke-width:1.8}

.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(-3px);box-shadow:0 18px 32px -24px rgba(20,24,26,.55)}
.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(-3px);box-shadow:0 18px 32px -24px rgba(20,24,26,.55);border-color:var(--accent)}
.benefit-card h3{font-size:1rem;font-weight:650;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 ₹349 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:1px 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(-3px);box-shadow:0 20px 40px -30px rgba(20,24,26,.5)}
.price-card-media{margin:-28px -24px 4px;height:132px;border-radius:calc(var(--radius) - 1.5px) calc(var(--radius) - 1.5px) 0 0;overflow:hidden}
.price-card-media img{width:100%;height:100%;object-fit:cover;display:block}
.price-card.featured{border-color:var(--accent);box-shadow:0 20px 40px -30px rgba(20,24,26,.5)}
.price-card.featured::before{content:"Included with every visit";position:absolute;top:-13px;left:24px;background:var(--accent);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:700;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:700;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(--accent)}
.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:650;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:700;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}}

/* enquiry popup — markup is built by W2_initEnquiryPopup() in common.js, so no page
   carries it in HTML. The card deliberately reuses .jobcard/.jobcard-head/.jobcard-body
   above so the popup form is pixel-identical to the hero booking form; only the overlay,
   positioning and close button are new here. z-index sits above .sticky-mobile-cta (90). */
.w2pop{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(26,28,30,.55);backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:opacity .22s ease,visibility .22s ease}
.w2pop.open{opacity:1;visibility:visible}
.w2pop-card{width:100%;max-width:440px;max-height:calc(100vh - 40px);overflow-y:auto;transform:translateY(14px) scale(.98);transition:transform .22s ease}
.w2pop.open .w2pop-card{transform:translateY(0) scale(1)}
.w2pop-head{position:relative}
.w2pop-close{position:absolute;top:50%;right:14px;transform:translateY(-50%);width:30px;height:30px;border:0;border-radius:50%;background:rgba(255,255,255,.16);color:#fff;font-size:1.15rem;line-height:1;cursor:pointer;font-family:var(--font-d)}
.w2pop-close:hover{background:rgba(255,255,255,.3)}
.w2pop-close:focus-visible{outline:2px solid #fff;outline-offset:2px}
.w2pop-head b{padding-right:36px}
.w2pop-lede{font-size:.9rem;color:var(--ink-soft);margin-bottom:2px}
.w2pop-err{display:none;background:#fdecec;border:1px solid #e0b4b4;color:#8a2020;padding:10px 13px;border-radius:9px;font-size:.85rem}
.w2pop-done{text-align:center;padding:34px 24px 30px}
.w2pop-done .tick{width:52px;height:52px;margin:0 auto 14px;border-radius:50%;background:#e8f8ee;border:1px solid var(--green);color:#116136;display:flex;align-items:center;justify-content:center;font-size:1.5rem}
.w2pop-done h4{font-size:1.05rem;font-weight:650;margin-bottom:8px}
.w2pop-done p{font-size:.88rem;color:var(--ink-soft)}
@media(prefers-reduced-motion:reduce){.w2pop,.w2pop-card{transition:none}.w2pop-card{transform:none}}

/* AUTOLINK (scripts/seo_engine/linker.py) */
.autolink{padding:38px 0}
.autolink .wrap>h2{font-size:clamp(20px,2.6vw,26px);margin:0 0 4px}
.autolink .lead{color:var(--steel,#5d6d7e);margin:0 0 18px;max-width:62ch}
.autolink-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.autolink-card{display:block;padding:18px;border:1px solid var(--line,#E7E3DB);
  border-radius:14px;text-decoration:none;background:var(--card,#fff);transition:border-color .15s}
.autolink-card:hover{border-color:var(--ink,#1b2733)}
.autolink-card b{display:block;font-size:15px;line-height:1.35;color:var(--ink,#1b2733)}
.autolink-card span{display:block;margin-top:3px;font-size:13px;color:var(--steel,#5d6d7e)}

/* Inline booking block (scripts/generate_inline_booking.py). The .jobcard styles are
   shared with the hero form and the enquiry popup; this only constrains the width so a
   full-bleed form does not stretch to 1140px on desktop, and gives the section its
   own vertical rhythm. */
.book-inline{padding:34px 0;background:var(--tint)}
.book-inline .jobcard{max-width:720px;margin:0 auto}
.book-inline-sub{font-size:.9rem;color:var(--steel);margin:0 0 4px}
@media(max-width:640px){.book-inline{padding:24px 0}.book-inline .jobcard .row2{grid-template-columns:1fr}}

/* Homepage services grid -> /services hub. The nav's "Services" item is an
   on-page #services anchor, so without this the site's own breadcrumb parent
   had no in-body link from the homepage. */

