.pbs{
 --bg:#ffffff; --surface:#f6f7f9; --surface-2:#eef1f6;
 --fg:#12161d; --muted:#5a6473; --border:#e3e7ee;
 --ink:#0d1836; --ink-fg:#ffffff; --ink-muted:rgba(255,255,255,.74);
 --ink-border:rgba(255,255,255,.14); --ink-surface:rgba(255,255,255,.07);
 --accent:#1f52d0; --accent-hover:#1a44ad; --accent-fg:#ffffff; --accent-tint:#e8eeff;
 --success:#15803d; --star:#e0a32e; --danger:#b3261e;
 --t1:13px; --t2:16px; --t3:20px; --t4:25px; --t5:31px; --t6:39px; --t7:49px; --t8:61px;
 --lh-display:1.08; --lh-h:1.2; --lh-body:1.6; --lh-small:1.5;
 --ls-caps:.08em; --ls-small:.01em; --ls-h:-.02em; --ls-display:-.025em;
 --s1:8px; --s2:16px; --s3:24px; --s4:32px; --s5:48px; --s6:64px; --s7:96px;
 --r-sm:8px; --r-md:12px; --r-lg:16px;
 --font:'Plus Jakarta Sans',-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
 --shadow-card:0 1px 2px rgba(18,22,29,.04),0 8px 24px rgba(18,22,29,.06);
 --shadow-raised:0 2px 4px rgba(18,22,29,.06),0 18px 44px rgba(18,22,29,.10);
 font-family:var(--font);
 font-size:var(--t2); line-height:var(--lh-body); color:var(--fg); background:var(--bg);
 -webkit-font-smoothing:antialiased; font-weight:400;
}
.pbs *,.pbs *::before,.pbs *::after{box-sizing:border-box}
.pbs{overflow-x:clip}
.pbs .box{max-width:1200px;margin:0 auto;padding:0 var(--s4)}
/* Full-bleed WITHOUT 100vw. 100vw includes the scrollbar (15px), so every band
   was shifted 7px left and pushed 8px past the content edge. Make the theme
   container full width instead, then let sections be 100%. */
body.page-id-5522 .ast-container,
body.page-id-5522 .site-content .ast-container{max-width:100%!important;
 padding-left:0!important;padding-right:0!important}
/* The theme also caps .pbs itself at 1200px, which is what stopped the hero and
   the grey bands reaching the viewport edge. Pin both explicitly. */
body.page-id-5522 .pbs{max-width:none!important;width:100%!important}
.pbs section,.pbs .hero,.pbs .bar{width:100%;margin-left:0}
.pbs section{padding:var(--s7) 0}
/* The reviews shortcode renders OUTSIDE .pbs, so .pbs{overflow-x:clip} never
   caught its carousel - slides were laying out to 1586px. Clip them here. */
.pbs .revwrap{max-width:1200px;margin:0 auto;padding:0 var(--s4) var(--s6);overflow:hidden}
.pbs section.tight{padding:var(--s6) 0}

/* One path. No nav or footer link competes with the funnel. */
body.page-id-5522 .site-header,
body.page-id-5522 #ast-desktop-header,
body.page-id-5522 #ast-mobile-header,
body.page-id-5522 .ast-above-header,
body.page-id-5522 .ast-below-header,
body.page-id-5522 .ast-mobile-header-wrap,
body.page-id-5522 header.entry-header,
body.page-id-5522 h1.entry-title{display:none!important}

/* ---- type ---- */
/* The theme declares h1-h6{font-family:Rubik}. A rule that targets h1 directly
   beats inheritance from .pbs, so without this every heading rendered in Rubik
   while the body rendered in Plus Jakarta Sans. Pin the family per element. */
.pbs h1,.pbs h2,.pbs h3,.pbs h4,.pbs h5,.pbs h6{font-family:var(--font);font-weight:700;margin:0;color:var(--fg)}
.pbs summary,.pbs .btn,.pbs b,.pbs strong,.pbs .amt,.pbs .lbl,.pbs .eyebrow{font-family:var(--font)}
.pbs h1{font-size:var(--t8);line-height:var(--lh-display);letter-spacing:var(--ls-display)}
.pbs h2{font-size:var(--t6);line-height:var(--lh-h);letter-spacing:var(--ls-h);margin-bottom:var(--s2)}
.pbs h3{font-size:var(--t4);line-height:var(--lh-h);letter-spacing:var(--ls-h);margin-bottom:var(--s1)}
.pbs p{margin:0 0 var(--s2)}
.pbs .sub{font-size:var(--t3);line-height:var(--lh-body);color:var(--muted);max-width:60ch;margin-bottom:var(--s4)}
.pbs .body-copy{max-width:65ch}
.pbs .eyebrow{font-size:var(--t1);font-weight:600;letter-spacing:var(--ls-caps);
 text-transform:uppercase;color:var(--muted);margin:0 0 var(--s3)}
.pbs .small{font-size:var(--t1);letter-spacing:var(--ls-small);color:var(--muted)}

/* ---- buttons: one primary accent, one quiet secondary ---- */
.pbs .btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;
 background:var(--accent);color:var(--accent-fg)!important;text-decoration:none!important;
 font-weight:600;font-size:var(--t2);letter-spacing:var(--ls-small);padding:18px 32px;
 border:0;border-radius:var(--r-md);box-shadow:var(--shadow-raised);cursor:pointer;
 transition:background .15s ease,transform .15s ease}
.pbs .btn:hover{background:var(--accent-hover);transform:translateY(-1px)}
.pbs .btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.pbs .btn svg{width:18px;height:18px;flex:0 0 auto}
.pbs .btn-quiet{background:transparent;color:var(--ink-fg)!important;border:1px solid var(--ink-border);
 box-shadow:none;font-weight:500}
.pbs .btn-quiet:hover{background:var(--ink-surface)}
.pbs .btn-onlight{background:transparent;color:var(--fg)!important;border:1px solid var(--border);
 box-shadow:none;font-weight:500}
.pbs .btn-onlight:hover{background:var(--surface-2)}
.pbs .cta-row{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center;margin-top:var(--s4)}

/* ---- ticks: a real checkmark drawn in CSS, one semantic colour ---- */
.pbs ul.ticks{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;gap:var(--s2)}
.pbs ul.ticks li{position:relative;padding-left:28px;font-size:var(--t2);max-width:52ch}
.pbs ul.ticks li::before{content:"";position:absolute;left:2px;top:.55em;width:10px;height:5px;
 border-left:2px solid var(--success);border-bottom:2px solid var(--success);transform:rotate(-45deg)}
.pbs ul.ticks.on-ink li::before{border-color:var(--ink-fg)}

/* ---- header ---- */
.pbs-head{background:var(--bg);border-bottom:1px solid var(--border);padding:10px 0;
 position:sticky;top:0;z-index:9999}
.pbs-head .box{display:flex;align-items:center;justify-content:space-between;gap:var(--s3)}
.pbs-head img{width:150px;height:auto;display:block}
.pbs-head .actions{display:flex;align-items:center;gap:var(--s3)}
.pbs-head a.tel{display:inline-flex;align-items:center;justify-content:center;color:var(--fg);
 font-weight:600;font-size:var(--t2);letter-spacing:var(--ls-small);text-decoration:none;
 white-space:nowrap;border:1px solid var(--border);border-radius:var(--r-md);padding:12px 20px}
.pbs-head a.tel:hover{background:var(--surface-2)}
.pbs-head .btn{padding:12px 22px;font-size:var(--t1);letter-spacing:var(--ls-small)}
@media(max-width:820px){
 .pbs-head{padding:8px 0}
 .pbs-head img{width:108px}
 .pbs-head a.tel{display:inline-flex;font-size:var(--t1);padding:10px 14px}
 .pbs-head .btn{display:none}
}

/* ---- hero: flat ink surface ---- */
.pbs .hero{background:var(--ink);color:var(--ink-fg);padding:var(--s7) 0}
.pbs .hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:var(--s6);align-items:center}
.pbs .hero .eyebrow{color:var(--ink-muted)}
.pbs .hero h1{color:var(--ink-fg);max-width:20ch}
.pbs .hero-sub{font-size:var(--t3);line-height:var(--lh-body);color:var(--ink-muted);
 max-width:52ch;margin:var(--s3) 0 0}
.pbs .hero .cta-row{margin-top:var(--s5)}
.pbs .hero .cta-row{margin-top:var(--s5)}
.pbs .rating{display:inline-flex;align-items:center;gap:10px;margin-top:var(--s4);
 font-size:var(--t1);letter-spacing:var(--ls-small);color:var(--ink-muted)}
.pbs .rating b{color:var(--ink-fg);font-weight:600}
.pbs .stars{display:inline-flex;gap:2px}
.pbs .stars svg{width:14px;height:14px;fill:var(--star)}
/* Full image, uncropped, with the finance box BELOW it as one card. A fixed
   aspect-ratio + object-fit:cover was cutting pages' own photos off. */
.pbs .hero-media{position:relative;border-radius:var(--r-lg);overflow:hidden;
 background:var(--bg);box-shadow:0 24px 56px rgba(3,10,35,.45)}
.pbs .hero-photo{width:100%;height:clamp(280px,36vw,460px);object-fit:contain;
 display:block;background:var(--bg)}
.pbs .hero-badge{background:var(--bg);color:var(--fg);padding:var(--s3) var(--s4);
 display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s2)}
.pbs .hero-badge .lbl{display:block;font-size:var(--t1);font-weight:600;letter-spacing:var(--ls-caps);
 text-transform:uppercase;color:var(--muted);margin-bottom:2px}
.pbs .hero-badge b{display:block;font-size:var(--t3);font-weight:700;letter-spacing:var(--ls-h);line-height:1.1}
/* gallery: real work, the one proof no national competitor can copy */
.pbs .gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s3);margin-top:var(--s4);
 align-items:start}
.pbs .gallery img{width:100%;height:auto;display:block;
 border-radius:var(--r-lg);box-shadow:var(--shadow-card)}
/* Gas Safe Register mark */
.pbs .gs-badge{height:46px;width:auto;display:block}

/* ---- trust bar ---- */
.pbs .bar{background:var(--surface);padding:var(--s5) 0;border-top:1px solid var(--border);
 border-bottom:1px solid var(--border)}
.pbs .bar ul{list-style:none;margin:0;padding:0;display:grid;
 grid-template-columns:repeat(5,1fr);gap:var(--s3)}
.pbs .bar li{display:flex;gap:var(--s2);align-items:flex-start}
.pbs .bar .ic{width:20px;height:20px;flex:0 0 auto;color:var(--fg);margin-top:2px}
.pbs .bar .ic svg{width:100%;height:100%}
.pbs .bar b{display:block;font-weight:600;font-size:var(--t2);letter-spacing:var(--ls-small)}
.pbs .bar span{display:block;font-size:var(--t1);color:var(--muted);margin-top:2px}
/* ---- offer strip: every competitor runs one, so do we. Compact band so the
   accent stays inside the 5-10% pixel budget. ---- */
.pbs .offerbar{background:var(--accent);color:var(--accent-fg);padding:var(--s4) 0}
.pbs .offerbar .box{display:flex;align-items:center;justify-content:space-between;
 gap:var(--s4);flex-wrap:wrap}
.pbs .offerbar p{margin:0;font-size:var(--t3);font-weight:500;max-width:64ch;line-height:1.45}
.pbs .offerbar strong{font-weight:700}
.pbs .offerbar .btn{background:var(--bg);color:var(--accent)!important;box-shadow:none;flex:0 0 auto}
.pbs .offerbar .btn:hover{background:var(--surface-2)}
/* ---- "questions to ask any installer": helpful, not a competitor attack ---- */
.pbs .qalist{display:grid;gap:var(--s3);margin-top:var(--s4);max-width:920px}
.pbs .qa{display:flex;gap:var(--s4);align-items:flex-start;background:var(--bg);
 border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s4);box-shadow:var(--shadow-card)}
.pbs .qa .qn{flex:0 0 auto;width:32px;height:32px;border-radius:50%;background:var(--surface-2);
 color:var(--fg);font-weight:600;font-size:var(--t1);display:flex;align-items:center;justify-content:center}
.pbs .qa h3{margin-bottom:var(--s1)}
.pbs .qa p{margin:0;color:var(--muted);font-size:var(--t2);max-width:70ch}

/* ---- steps ---- */
.pbs .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s3);margin-top:var(--s5);
 align-items:stretch}
.pbs .step{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);
 padding:var(--s5) var(--s4);box-shadow:var(--shadow-card);display:flex;flex-direction:column;
 justify-content:flex-start}
.pbs .step p{flex:1 0 auto}
.pbs .step .chip{width:32px;height:32px;border-radius:50%;background:var(--surface-2);color:var(--fg);
 font-weight:600;font-size:var(--t1);display:flex;align-items:center;justify-content:center;
 margin-bottom:var(--s3)}
.pbs .step p{margin:0;color:var(--muted);font-size:var(--t2);max-width:42ch}

/* ---- cards ---- */
.pbs .g4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s3);margin-top:var(--s5)}
.pbs .g2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s3)}
.pbs .card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);
 padding:var(--s5) var(--s4);box-shadow:var(--shadow-card)}
.pbs .card h3{margin-bottom:var(--s2)}
.pbs .card p{margin:0;color:var(--muted);font-size:var(--t2)}
.pbs .card .ico{width:22px;height:22px;color:var(--fg);margin-bottom:var(--s3)}
.pbs .card .ico svg{width:100%;height:100%}
.pbs .alt{background:var(--surface)}
.pbs .alt .card{background:var(--bg)}

/* ---- inclusions ---- */
.pbs .inc-wrap{margin-top:var(--s4);background:var(--bg);border:1px solid var(--border);
 border-radius:var(--r-lg);padding:var(--s5);box-shadow:var(--shadow-card)}
.pbs ul.inc{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);
 gap:var(--s2) var(--s5)}
.pbs ul.inc li{position:relative;padding-left:28px;font-size:var(--t2)}
.pbs ul.inc li::before{content:"";position:absolute;left:2px;top:.55em;width:10px;height:5px;
 border-left:2px solid var(--success);border-bottom:2px solid var(--success);transform:rotate(-45deg)}

/* ---- price ---- */
.pbs .price{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);
 padding:var(--s5);box-shadow:var(--shadow-card);max-width:720px}
.pbs .price .lbl{font-size:var(--t1);font-weight:600;letter-spacing:var(--ls-caps);
 text-transform:uppercase;color:var(--muted)}
.pbs .price .amt{font-size:var(--t8);font-weight:700;letter-spacing:var(--ls-display);
 line-height:1;margin:var(--s2) 0 var(--s1)}
.pbs .price p{color:var(--muted);font-size:var(--t2)}

/* ---- brands + towns ---- */
.pbs .tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s2);margin-top:var(--s4)}
.pbs .tiles span{display:flex;align-items:center;justify-content:center;gap:var(--s2);
 border:1px solid var(--border);background:var(--bg);border-radius:var(--r-sm);
 padding:18px 22px;font-weight:500;font-size:var(--t2)}
@media(max-width:980px){.pbs .tiles{grid-template-columns:1fr 1fr}}
.pbs .brandtags{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s3);margin-top:var(--s4)}
.pbs .brandcard{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);
 padding:var(--s4);text-align:center;box-shadow:var(--shadow-card);
 display:flex;flex-direction:column;align-items:center}
.pbs .brandcard .brandboiler{max-height:150px;width:auto;max-width:100%;display:block;
 margin:0 auto var(--s4)}
.pbs .brandcard h3{margin-bottom:var(--s1)}
.pbs .brandcard .warranty{margin:0;font-weight:600;color:var(--fg);font-size:var(--t2)}
@media(max-width:980px){.pbs .brandtags{grid-template-columns:1fr}}
/* ---- boiler types ---- */
.pbs .btypes{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s3);
 margin-top:var(--s5);align-items:stretch}
.pbs .btype{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);
 padding:var(--s5) var(--s4);box-shadow:var(--shadow-card);display:flex;flex-direction:column}
.pbs .btype-sub{color:var(--muted);font-size:var(--t2);margin:var(--s1) 0 var(--s3)}
.pbs .btype .ticks{margin:0 0 var(--s4)}
.pbs .btype-ico{display:block;width:56px;height:56px;margin-bottom:var(--s3)}
.pbs .btype-ico img,.pbs .btype-ico svg{width:100%;height:100%;display:block;object-fit:contain}
.pbs .btype-cta{margin-top:auto;width:100%;justify-content:center;gap:8px;
 padding:14px 18px;font-size:var(--t2)}
.pbs .btype-cta svg{width:16px;height:16px}
@media(max-width:980px){.pbs .btypes{grid-template-columns:1fr}}

/* ---- faq ---- */
.pbs .faq details{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);
 padding:var(--s4) var(--s5);margin-bottom:var(--s3)}
.pbs .faq summary{font-weight:600;font-size:var(--t3);letter-spacing:var(--ls-h);cursor:pointer;
 list-style:none;display:flex;justify-content:space-between;align-items:center;gap:var(--s3)}
.pbs .faq summary::-webkit-details-marker{display:none}
.pbs .faq summary::after{content:"";width:9px;height:9px;flex:0 0 auto;
 border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);
 transform:rotate(45deg);transition:transform .15s ease}
.pbs .faq details[open] summary::after{transform:rotate(-135deg)}
.pbs .faq p{margin:var(--s3) 0 0;color:var(--muted);font-size:var(--t2);max-width:70ch}

/* ---- closing: flat ink surface ---- */
.pbs .close{background:var(--ink);color:var(--ink-fg);border-radius:var(--r-lg);
 padding:var(--s6) var(--s5);text-align:center}
.pbs .close h2{color:var(--ink-fg)}
.pbs .close p{color:var(--ink-muted);max-width:56ch;margin:0 auto var(--s2)}
.pbs .close .cta-row{justify-content:center}

/* ---- footer. The theme footer stays hidden (it leaked 24 nav links off the
   funnel), so this is a controlled replacement: brand, Gas Safe number, the
   two conversion actions, coverage, and the legal links Google Ads expects. */
.pbs .foot{background:var(--surface);border-top:1px solid var(--border);
 padding:var(--s6) 0 var(--s4);color:var(--fg)}
.pbs .foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:var(--s5)}
.pbs .foot h3{font-size:var(--t1);font-weight:600;letter-spacing:var(--ls-caps);
 text-transform:uppercase;color:var(--muted);margin:0 0 var(--s3)}
.pbs .foot p{margin:0;font-size:var(--t2);color:var(--muted);max-width:46ch}
.pbs .foot img{width:132px;height:auto;display:block;margin-bottom:var(--s3)}
.pbs .foot .cta-row{margin-top:0;flex-direction:column;align-items:stretch}
.pbs .foot .cta-row .btn{width:100%;padding:14px 20px;font-size:var(--t2)}
.pbs .foot ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--s2)}
.pbs .foot ul a{color:var(--fg);text-decoration:none;font-size:var(--t2);
 border-bottom:1px solid transparent}
.pbs .foot ul a:hover{border-bottom-color:var(--muted)}
.pbs .foot-base{margin-top:var(--s5);padding-top:var(--s3);border-top:1px solid var(--border);
 display:flex;justify-content:space-between;gap:var(--s3);flex-wrap:wrap}
.pbs .foot-base p{font-size:var(--t1);color:var(--muted);max-width:none}

/* ---- reviews band ---- */
.pbs .reviews-head{text-align:center}
.pbs .reviews-head .sub{margin-left:auto;margin-right:auto;text-align:center}
.pbs .rev-slot{padding:0 0 var(--s7)}

/* ---- sticky mobile cta ---- */
/* Lives INSIDE .pbs so the design tokens resolve. It used to sit outside, where
   var(--accent) is undefined - the button rendered hollow with no fill. */
.pbs-sticky{position:fixed;left:0;right:0;bottom:0;background:var(--bg);padding:10px 12px;
 border-top:1px solid var(--border);z-index:9999;display:none;gap:var(--s2);
 grid-template-columns:auto 1fr;box-shadow:0 -6px 20px rgba(18,22,29,.10)}
.pbs-sticky a{display:flex;align-items:center;justify-content:center;text-align:center;
 text-decoration:none!important;font-weight:600;font-size:var(--t2);padding:15px var(--s3);
 border-radius:var(--r-md);white-space:nowrap}
.pbs-sticky .go{background:var(--accent);color:var(--accent-fg)!important}
.pbs-sticky .call{background:var(--bg);color:var(--fg)!important;border:1px solid var(--border)}

/* consent banner must not cover the hero */
.cmplz-cookiebanner{top:auto!important;bottom:0!important;left:0!important;right:0!important;
 margin:0!important;width:100%!important;max-width:100%!important;
 border-radius:var(--r-lg) var(--r-lg) 0 0!important;transform:none!important}

/* ---- stack ---- */
@media(max-width:980px){
 .pbs .hero-grid{grid-template-columns:1fr;gap:var(--s5)}
 .pbs .steps,.pbs .g4,.pbs .g2{grid-template-columns:1fr}
 .pbs .gallery{grid-template-columns:1fr 1fr}
 .pbs ul.inc{grid-template-columns:1fr}
 .pbs .bar ul{grid-template-columns:1fr 1fr;gap:var(--s4)}
 .pbs section{padding:var(--s6) 0}
 .pbs .hero{padding:var(--s6) 0}
 .pbs .close{padding:var(--s5) var(--s3)}
 .pbs h1{font-size:var(--t7)}
 .pbs h2{font-size:var(--t5)}
 .pbs-sticky{display:grid}
 .pbs{padding-bottom:72px}
}
body:not(.page-id-5522) .pbs .hero,body:not(.page-id-5522) .pbs .offerbar,body:not(.page-id-5522) .pbs .bar{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:0}body:not(.page-id-5522) .pbs{max-width:none!important;width:100%!important}
body:not(.page-id-5522) .pbs .hero,body:not(.page-id-5522) .pbs .offerbar,body:not(.page-id-5522) .pbs .bar{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:0}

/* ---- retire Inter ----------------------------------------------------------
   Kadence/SPECTRA styled the FAQ accordion headers in Inter, which forced the
   browser to download Spectra's 55KB Inter variable font. Measured on the
   service-plans pages that font alone was ~0.4s of the LCP budget, and the
   design font here is Plus Jakarta Sans (already loaded), so those headers are
   mapped onto it and Inter is never requested at all. */
.kt-blocks-accordion-header,
.kt-accordion-header-wrap .kt-blocks-accordion-header,
.kt-blocks-accordion-header .kt-blocks-accordion-title,
.wp-block-kadence-accordion .kt-blocks-accordion-title{
  font-family:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif !important;
}


/* ---- brand font face ---------------------------------------------------------
   pbs-brand-font-face: the design system's typeface is Plus Jakarta Sans, and the
   CSS asked for it everywhere while nothing ever loaded it - so every hero was
   silently rendering in a system fallback. Served locally from the uploads folder
   (no third-party request) as a variable font covering all the weights in use.
   This file is safelisted out of WP Rocket's CSS optimisation, so it is never
   stripped the way the inline copies were. */
@font-face{
  font-family:'Plus Jakarta Sans';
  font-style:normal;
  font-weight:200 800;
  font-display:swap;
  src:url('/wp-content/uploads/pbs-fonts/pjs-variable.woff2') format('woff2');
}


/* ---- equal hero CTAs ---------------------------------------------------------
   The hero's two buttons were sized to their own labels, so they came out
   different widths on every page and a long label ("Book an Inspection") wrapped
   the row and stacked on some pages while short ones sat side by side. Both now
   take an equal share of the row, and align-items:stretch keeps them the same
   height even when a longer label wraps to a second line - so every page matches.
   Scoped to the mobile breakpoint the rest of the design already uses. */
@media(max-width:820px){
  .pbs .hero .cta-row{align-items:stretch}
  .pbs .hero .cta-row .btn{flex:1 1 0;min-width:0;justify-content:center;text-align:center}
}
