:root{
  --brand-primary:#102b45;--brand-dark:#0a1f33;--brand-secondary:#1e4b70;--brand-accent:#f28c28;
  --brand-light:#f7f5f1;--brand-body:#16202a;--brand-muted:#697580;--brand-border:#e4e8eb;--brand-heading:#102b45;
  --brand-cta:#f28c28;--brand-cta-text:#111;--brand-cta-hover:#db7618;--brand-cta-hover-text:#fff;--brand-accent-contrast:#111;
  --navy:var(--brand-primary);--navy-2:var(--brand-dark);--blue:var(--brand-secondary);--orange:var(--brand-accent);
  --cream:var(--brand-light);--white:#fff;--ink:var(--brand-body);--muted:var(--brand-muted);--line:var(--brand-border);--heading:var(--brand-heading);
  --cta-bg:var(--brand-cta);--cta-text:var(--brand-cta-text);--cta-hover-bg:var(--brand-cta-hover);--cta-hover-text:var(--brand-cta-hover-text);--accent-contrast:var(--brand-accent-contrast);
  --shadow:0 18px 55px color-mix(in srgb,var(--brand-primary) 12%,transparent);--container:1180px
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);background:#fff;font-family:var(--site-font,Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif);line-height:1.65;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit}
.container{width:min(calc(100% - 40px),var(--container));margin:auto}
.eyebrow{color:var(--brand-accent);text-transform:uppercase;letter-spacing:.16em;font-size:.76rem;font-weight:850;margin-bottom:10px}
h1,h2,h3,h4{margin:0;line-height:1.06;color:var(--heading,var(--navy));letter-spacing:-.035em}
h1{font-size:clamp(3rem,6vw,5.8rem)}
h2{font-size:clamp(2.2rem,4vw,4rem)}
h3{font-size:1.35rem}
p{margin:0}
.prose p{margin:0 0 20px;color:var(--brand-muted)}
.lead{font-size:1.08rem;color:var(--muted);max-width:720px}
.section{padding:96px 0}
.section-soft{background:var(--cream)}
.section-dark{background:var(--navy-2);color:#fff}
.section-dark h2,.section-dark h3{color:#fff}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:52px;padding:0 22px;border:1px solid transparent;font-weight:850;font-size:.9rem;transition:.2s ease;cursor:pointer}
.btn-primary{background:var(--cta-bg);color:var(--cta-text)}
.btn-primary:hover{background:var(--cta-hover-bg);color:var(--cta-hover-text);transform:translateY(-1px)}
.btn-dark{background:var(--navy);color:#fff}
.btn-dark:hover{background:var(--blue)}
.btn-outline{border-color:var(--brand-border);background:#fff;color:var(--navy)}
.btn-outline-light{border-color:rgba(255,255,255,.42);color:#fff}
.btn-outline-light:hover{background:rgba(255,255,255,.08)}

.topbar{background:var(--brand-dark);color:color-mix(in srgb,#fff 86%,var(--brand-light));font-size:.78rem}
.topbar-inner{min-height:38px;display:flex;justify-content:space-between;align-items:center;gap:20px}
.topbar a{color:#fff;font-weight:750}
.header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.97);border-bottom:1px solid rgba(16,43,69,.08);backdrop-filter:blur(12px)}
.header-inner{height:82px;display:flex;align-items:center;justify-content:space-between;gap:26px}
.brand{display:flex;flex-direction:column;line-height:.9;color:var(--navy);font-weight:950;letter-spacing:-.04em;font-size:var(--tb-text-logo-size,1.42rem)}
.brand small{font-size:.62rem;letter-spacing:.14em;color:var(--brand-accent);margin-top:8px}
.nav{display:flex;align-items:center;gap:23px;font-size:.84rem;font-weight:var(--nav-font-weight,750);color:var(--brand-body)}
.nav a:hover,.nav a.active{color:var(--brand-accent)}

.brand-link{display:flex;align-items:center;text-decoration:none;flex:0 0 auto}
.brand-logo{display:flex;align-items:center}
.brand-logo img{display:block;width:auto;max-width:260px;object-fit:contain}
.footer .brand-logo img{filter:none}

.nav-item{position:relative}
.nav-parent{display:flex;align-items:center}
.nav-parent>a{display:block}
.submenu-toggle{border:0;background:transparent;color:inherit;padding:4px 0 4px 5px;cursor:pointer;font-size:.9rem;line-height:1}
.submenu{display:none;position:absolute;top:calc(100% + 18px);left:0;min-width:235px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);padding:8px;z-index:70}
.submenu::before{content:"";position:absolute;left:0;right:0;top:-19px;height:19px}
.submenu a{display:block!important;padding:10px 12px!important;white-space:nowrap;color:var(--brand-body)!important}
.submenu a:hover{background:var(--brand-light);color:var(--brand-accent)!important}
.has-dropdown:hover>.submenu,.has-dropdown:focus-within>.submenu,.has-dropdown.submenu-open>.submenu{display:block}
.nav-item.active>.nav-parent>a{color:var(--brand-accent)}

.mobile-menu{display:none;border:0;background:none;width:44px;height:44px;position:relative}
.mobile-menu::before,.mobile-menu::after,.mobile-menu span{content:"";position:absolute;left:8px;right:8px;height:2px;background:var(--navy)}
.mobile-menu::before{top:13px}.mobile-menu span{top:21px}.mobile-menu::after{top:29px}

.hero{position:relative;min-height:700px;display:flex;align-items:center;overflow:hidden;background:var(--navy-2)}
.hero-bg{position:absolute;inset:0;background-image:var(--hero-image);background-position:var(--hero-position,center center);background-size:cover;background-repeat:no-repeat}
.hero-layout{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,1fr);align-items:center;min-height:700px}
.hero-copy{max-width:770px;padding:88px 0}
.hero h1{font-size:clamp(3rem,6vw,5.8rem);line-height:var(--hero-heading-line-height,.98);letter-spacing:var(--hero-heading-letter-spacing,-.04em)}
.hero h1 span{color:var(--brand-accent)}
.hero-copy>p{max-width:650px;font-size:1.13rem;margin-top:24px}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:34px}
.hero-secondary{min-height:52px;padding:0 22px;border:1px solid currentColor;font-weight:850;font-size:.9rem;display:inline-flex;align-items:center;justify-content:center}
.hero-proof{display:flex;gap:24px;flex-wrap:wrap;margin-top:42px;padding-top:26px}
.proof-item{display:flex;gap:10px;align-items:center;font-size:.84rem;font-weight:750}
.proof-icon{width:34px;height:34px;display:grid;place-items:center;color:var(--brand-accent)}
.hero-media{display:none}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:var(--hero-position,center center)}

/* A — full-bleed action */
.hero--full-bleed{color:#fff}
.hero--full-bleed .hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,19,31,.98) 0%,rgba(8,28,45,.91) 44%,rgba(8,28,45,.40) 72%,rgba(8,28,45,.18) 100%)}
.hero--full-bleed h1{color:#fff}.hero--full-bleed .hero-copy>p{color:#dce5ec}.hero--full-bleed .hero-secondary{color:#fff}.hero--full-bleed .hero-proof{border-top:1px solid rgba(255,255,255,.18)}.hero--full-bleed .proof-item{color:#e7eef3}.hero--full-bleed .proof-icon{border:1px solid color-mix(in srgb,var(--brand-accent) 70%,transparent)}

/* B — split image */
.hero--split{color:#fff;background:linear-gradient(115deg,var(--navy-2),var(--blue))}
.hero--split .hero-bg{display:none}.hero--split .hero-layout{grid-template-columns:minmax(0,1.02fr) minmax(360px,.98fr);gap:52px}.hero--split .hero-media{display:block;height:570px;align-self:end;position:relative;overflow:hidden;box-shadow:0 22px 60px rgba(0,0,0,.23)}
.hero--split .hero-media::before{content:"";position:absolute;inset:0;z-index:1;box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
.hero--split h1{color:#fff}.hero--split .hero-copy>p{color:#dce5ec}.hero--split .hero-secondary{color:#fff}.hero--split .hero-proof{border-top:1px solid rgba(255,255,255,.18)}.hero--split .proof-item{color:#e7eef3}.hero--split .proof-icon{border:1px solid rgba(255,255,255,.25)}

/* C — bold brand panel */
.hero--brand-panel{background:var(--brand-accent);color:var(--accent-contrast)}
.hero--brand-panel::before{content:"";position:absolute;width:560px;height:560px;border-radius:50%;right:-80px;top:-150px;background:var(--navy);opacity:.13}
.hero--brand-panel .hero-bg{display:none}.hero--brand-panel .hero-layout{grid-template-columns:minmax(0,.9fr) minmax(390px,1.1fr);gap:30px}.hero--brand-panel .hero-media{display:block;height:620px;align-self:end;position:relative;clip-path:ellipse(58% 58% at 56% 58%)}
.hero--brand-panel .hero-media img{object-fit:cover}.hero--brand-panel h1,.hero--brand-panel h1 span{color:var(--accent-contrast)}.hero--brand-panel .eyebrow{color:var(--accent-contrast);opacity:.72}.hero--brand-panel .hero-copy>p{color:var(--accent-contrast);opacity:.78}.hero--brand-panel .hero-secondary{color:var(--accent-contrast)}.hero--brand-panel .hero-proof{border-top:1px solid color-mix(in srgb,var(--accent-contrast) 25%,transparent)}.hero--brand-panel .proof-item{color:var(--accent-contrast)}.hero--brand-panel .proof-icon{border:1px solid color-mix(in srgb,var(--accent-contrast) 35%,transparent);color:var(--accent-contrast)}
.hero--brand-panel .btn-primary{background:var(--navy-2);color:#fff}.hero--brand-panel .btn-primary:hover{background:var(--navy);color:#fff}

/* D — organic split */
.hero--organic{background:var(--cream);color:var(--ink)}
.hero--organic::before{content:"";position:absolute;left:-6%;bottom:-210px;width:62%;height:350px;border-radius:50% 55% 0 0;background:var(--brand-accent);opacity:.95;transform:rotate(-5deg)}
.hero--organic .hero-bg{display:none}.hero--organic .hero-layout{grid-template-columns:minmax(0,.9fr) minmax(420px,1.1fr);gap:48px}.hero--organic .hero-media{display:block;height:610px;align-self:stretch;clip-path:polygon(14% 0,100% 0,100% 100%,0 100%,0 19%)}
.hero--organic h1{color:var(--heading)}.hero--organic .hero-copy>p{color:var(--muted)}.hero--organic .hero-secondary{color:var(--navy);border-color:var(--navy)}.hero--organic .hero-proof{border-top:1px solid var(--line)}.hero--organic .proof-item{color:var(--ink)}.hero--organic .proof-icon{border:1px solid var(--line)}

/* E — minimal shape */
.hero--minimal{background:#fff;color:var(--ink)}
.hero--minimal::before{content:"";position:absolute;right:4%;top:70px;width:480px;height:480px;border-radius:50%;background:var(--brand-accent);opacity:.95}
.hero--minimal::after{content:"";position:absolute;left:-80px;top:-100px;width:330px;height:330px;border-radius:50%;background:var(--cream)}
.hero--minimal .hero-bg{display:none}.hero--minimal .hero-layout{grid-template-columns:minmax(0,1fr) minmax(380px,.9fr);gap:52px}.hero--minimal .hero-media{display:block;height:580px;align-self:end;position:relative;z-index:1;clip-path:ellipse(48% 50% at 52% 52%)}
.hero--minimal h1{color:var(--heading)}.hero--minimal .hero-copy>p{color:var(--muted)}.hero--minimal .hero-secondary{color:var(--navy);border-color:var(--navy)}.hero--minimal .hero-proof{border-top:1px solid var(--line)}.hero--minimal .proof-item{color:var(--ink)}.hero--minimal .proof-icon{border:1px solid var(--line)}

.trust-strip{background:#fff;border-bottom:1px solid var(--line)}
.trust-grid{display:grid;grid-template-columns:repeat(var(--trust-columns,4),minmax(0,1fr))}
.trust-item{padding:26px 28px;border-right:1px solid var(--line)}
.trust-item:last-child{border-right:none}
.trust-item strong{display:block;color:var(--navy);font-size:1.08rem}
.trust-item span{display:block;color:var(--muted);font-size:.79rem;margin-top:4px}

.section-head{display:flex;align-items:end;justify-content:space-between;gap:40px;margin-bottom:46px}
.section-head .lead{max-width:560px}
.services{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
.service-card{min-height:285px;padding:32px;background:#fff;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:.2s ease;position:relative}
.service-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);z-index:2}
.service-icon{width:48px;height:48px;display:grid;place-items:center;background:color-mix(in srgb,var(--brand-accent) 10%,#fff);color:var(--brand-accent);font-size:1rem;font-weight:950}
.service-card h3{margin-top:26px}
.service-card p{color:var(--muted);font-size:.9rem;margin-top:12px}
.text-link{display:inline-flex;color:var(--brand-accent);font-weight:850;font-size:.82rem;margin-top:20px}

.about-grid,.split-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:68px;align-items:center}
.media-frame{min-height:550px;background:#e8edf1 center/cover no-repeat;box-shadow:var(--shadow);position:relative}
.media-frame::after{content:"";position:absolute;width:95px;height:95px;right:-14px;bottom:-14px;border-right:9px solid var(--brand-accent);border-bottom:9px solid var(--brand-accent);z-index:-1}
.about-copy .lead{margin-top:24px}
/* Decorative tick/check rows: marker occupies its own fixed column so wrapped copy
   always aligns with the first line of text across About, service highlights and area lists. */
.check-list{display:grid;grid-template-columns:1fr 1fr;gap:0 24px;margin-top:32px}
.check{padding:14px 0;border-bottom:1px solid var(--line);font-size:.88rem;font-weight:750;display:grid;grid-template-columns:24px minmax(0,1fr);column-gap:10px;align-items:start}
.check::before{content:"✓";display:grid;place-items:center;width:24px;height:24px;background:color-mix(in srgb,var(--brand-accent) 12%,#fff);color:var(--brand-accent);line-height:1}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin-top:36px;border:1px solid var(--line)}
.stat{background:#fff;padding:24px}
.stat strong{display:block;color:var(--brand-accent);font-size:2.1rem;line-height:1}
.stat span{display:block;color:var(--muted);font-size:.7rem;margin-top:8px;text-transform:uppercase;letter-spacing:.08em;font-weight:850}

.projects{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.project{position:relative;overflow:hidden;background:var(--navy)}
.project img{width:100%;aspect-ratio:3/2;object-fit:cover;transition:.35s ease}
.project:hover img{transform:scale(1.03);opacity:.86}
.project-caption{position:absolute;left:0;right:0;bottom:0;padding:54px 22px 20px;color:#fff;background:linear-gradient(transparent,color-mix(in srgb,var(--brand-dark) 95%,transparent))}
.project-caption strong{display:block}.project-caption span{display:block;color:#d2dee7;font-size:.76rem;margin-top:3px}
.project-detail{background:#fff;border:1px solid var(--line)}
.project-detail>img,.project-detail>.tb-project-media{display:block;width:100%;aspect-ratio:3/2;overflow:hidden}
.project-detail>img{object-fit:cover}
.project-detail>.tb-project-media>img{display:block;width:100%;height:100%;object-fit:cover}
.project-detail .project-copy{padding:24px}
.project-detail .project-copy p{color:var(--muted);font-size:.88rem;margin-top:8px}

.why-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:70px;align-items:start}
.why-copy{position:sticky;top:120px}
.why-copy .lead{margin-top:22px;color:#c4d0da}
.reasons{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid rgba(255,255,255,.14);border-left:1px solid rgba(255,255,255,.14)}
.reason{padding:30px;border-right:1px solid rgba(255,255,255,.14);border-bottom:1px solid rgba(255,255,255,.14)}
.reason b{display:block;color:var(--brand-accent);font-size:2rem}
.reason strong{display:block;margin-top:14px}.reason p{color:#aebdca;font-size:.84rem;margin-top:9px}

.testimonials{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.testimonial{background:#fff;padding:32px;border:1px solid var(--line)}
.stars{color:var(--brand-accent);letter-spacing:.12em}
.testimonial blockquote{margin:22px 0 0;color:var(--brand-body);font-size:.95rem}
.testimonial strong{display:block;color:var(--navy);margin-top:24px}
.testimonial span{color:var(--muted);font-size:.78rem}
.review-proof{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap;margin-top:20px;font-size:.78rem}.review-proof-source{color:var(--muted);font-weight:650}.review-proof-link{display:inline-flex;align-items:center;gap:5px;color:var(--brand-heading);font-weight:850;text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--brand-accent) 55%,transparent);padding-bottom:2px}.review-proof-link:hover,.review-proof-link:focus-visible{color:var(--brand-accent);border-bottom-color:var(--brand-accent)}

.area-faq{display:grid;grid-template-columns:1fr 1fr;gap:76px}
.areas{display:grid;grid-template-columns:1fr 1fr;gap:0 24px;margin-top:28px}
.area{padding:11px 0;border-bottom:1px solid var(--line);font-weight:750;font-size:.88rem;display:grid;grid-template-columns:18px minmax(0,1fr);column-gap:8px;align-items:start}
.area::before{content:"✓";color:var(--brand-accent);width:18px;line-height:1.45;text-align:center}
.faq-list{margin-top:24px;border-top:1px solid var(--line)}
.faq{border-bottom:1px solid var(--line)}
.faq button{width:100%;padding:18px 0;border:0;background:transparent;text-align:left;color:var(--navy);font-weight:850;display:flex;justify-content:space-between;gap:16px;cursor:pointer}
.faq button span:last-child{color:var(--brand-accent);font-size:1.25rem}
.faq p{display:none;color:var(--muted);padding:0 0 18px;font-size:.9rem}
.faq.open p{display:block}.faq.open button span:last-child{transform:rotate(45deg)}

.inner-hero{background:linear-gradient(115deg,var(--navy-2),var(--blue));padding:calc(95px + var(--tb-inner-hero-top-extra,0px) + var(--tb-inner-hero-nav-clearance,0px)) 0 88px;color:#fff;position:relative;overflow:hidden;min-height:calc(430px + var(--tb-inner-hero-top-extra,0px) + var(--tb-inner-hero-nav-clearance,0px));display:flex;align-items:center}
.inner-hero>.container{position:relative;z-index:2}
.inner-hero::after{content:"";position:absolute;width:360px;height:360px;border-radius:50%;background:var(--brand-accent);opacity:.1;right:-100px;top:-170px}
.inner-hero h1{color:#fff;max-width:900px;font-size:clamp(3rem,5.5vw,5rem)}
.inner-hero p{max-width:720px;margin-top:22px;color:#cfdae3;font-size:1.06rem}
.inner-hero-image{background:linear-gradient(90deg,rgba(5,19,31,.94) 0%,rgba(8,28,45,.83) 48%,rgba(8,28,45,.42) 78%,rgba(8,28,45,.28) 100%),var(--inner-hero-image) var(--inner-hero-position,center)/cover no-repeat}
.inner-hero-image::after{opacity:.06}

.content-narrow{max-width:820px}
.content-narrow h2{margin-bottom:24px}
.feature-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:30px}
.feature{border:1px solid var(--line);padding:18px;background:#fff;font-weight:750}
.feature:not(.feature--custom-marker){display:grid;grid-template-columns:18px minmax(0,1fr);column-gap:9px;align-items:start}
.feature::before{content:"✓";color:var(--brand-accent);width:18px;line-height:1.45;text-align:center}

.service-detail-grid{display:grid;grid-template-columns:1fr .9fr;gap:64px;align-items:start}
.service-detail-grid--align-top .service-media{align-self:start}
.service-detail-grid--align-center .service-media{align-self:center}
.service-detail-grid--align-bottom .service-media{align-self:end}
.service-media img{width:100%;aspect-ratio:4/3;object-fit:cover;box-shadow:var(--shadow)}
.service-side{background:var(--cream);padding:30px;margin-top:26px}
.service-side h3{margin-bottom:15px}
.service-side .btn{margin-top:20px;width:100%}

.contact-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:60px;align-items:start}
.contact-card{background:var(--navy-2);color:#fff;padding:34px}
.contact-card h3{color:#fff}.contact-card p{color:#c1cfda;margin-top:12px}
.contact-card a{display:block;margin-top:16px;font-weight:800;color:#fff}
.form-card{border:1px solid var(--line);padding:34px;background:#fff}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field.full{grid-column:1/-1}
label{display:block;font-size:.78rem;font-weight:850;color:#43515d;margin-bottom:6px}
input,textarea,select{width:100%;padding:12px;border:1px solid #c9d2d9;background:#fff;color:var(--ink)}
/* v2.19.03 / v2.19.04 — match text field height, and inset the arrow so it
   has deliberate clearance from the right border. Only enquiry selects are affected. */
.enquiry-form-card .contact-field--select select{
  min-height:calc(1.65em + 26px);
  -webkit-appearance:none;
  appearance:none;
  padding-right:56px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 10'%3E%3Cpath d='m1.5 1.5 6.5 6 6.5-6' fill='none' stroke='%2343515d' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-size:16px 10px;
  background-position:right 20px center;
}
@media(forced-colors:active){
  .enquiry-form-card .contact-field--select select{
    appearance:auto;
    background-image:none;
  }
}
textarea{min-height:145px;resize:vertical}
.check-row{display:flex;align-items:flex-start;gap:9px}
.check-row input{width:auto;margin-top:5px}
.form-status{padding:14px 16px;border-left:4px solid var(--brand-accent);background:color-mix(in srgb,var(--brand-accent) 8%,#fff);margin-bottom:18px}
.form-status.error{border-color:#b42318;background:#fff1f0;color:#8b1d15}
.hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.cta{background:var(--brand-primary);color:#fff}
.cta-inner{min-height:290px;display:flex;align-items:center;justify-content:space-between;gap:50px}
.cta h2{color:#fff;max-width:720px}.cta p{color:color-mix(in srgb,#fff 76%,var(--brand-primary));margin-top:14px}
.cta-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}

.footer{background:var(--brand-dark);color:#b7c6d1;padding:72px 0 26px}
.footer-grid{display:grid;grid-template-columns:1.4fr .8fr 1.1fr 1fr;gap:42px}
.footer-brand{color:#fff}.footer p{font-size:.84rem;margin-top:22px;max-width:330px}
.footer h4{color:#fff;font-size:.9rem;letter-spacing:.02em;margin-bottom:15px}
.footer a{display:block;font-size:.8rem;padding:5px 0}.footer a:hover{color:var(--brand-accent)}
.footer-bottom{border-top:1px solid rgba(255,255,255,.12);margin-top:46px;padding-top:22px;display:flex;justify-content:space-between;gap:20px;align-items:flex-start;font-size:.72rem}
.concept-note{max-width:620px;text-align:right}

@media(max-width:1120px) and (min-width:681px){
  .hero--split .hero-layout,.hero--brand-panel .hero-layout,.hero--organic .hero-layout,.hero--minimal .hero-layout{grid-template-columns:minmax(0,1fr) minmax(320px,.8fr);gap:34px}
  .hero--split .hero-media,.hero--brand-panel .hero-media,.hero--organic .hero-media,.hero--minimal .hero-media{height:520px}
  .hero-copy{padding:72px 0}.hero h1{font-size:clamp(3rem,5vw,4.5rem)}
}
@media(max-width:980px){
  .nav{display:none;position:absolute;left:0;right:0;top:82px;background:#fff;padding:20px;flex-direction:column;align-items:stretch;box-shadow:var(--shadow)}
  .nav.open{display:flex}.mobile-menu{display:block}.header-cta{display:none}
  .nav-item{width:100%}.nav-parent{justify-content:space-between}.nav-parent>a{flex:1}
  .submenu-toggle{padding:10px 12px;font-size:1rem}
  .submenu{position:static;min-width:0;box-shadow:none;border:0;border-left:2px solid var(--brand-accent);margin:4px 0 6px 10px;padding:3px 0 3px 9px}
  .submenu::before{display:none}.has-dropdown:hover>.submenu{display:none}.has-dropdown.submenu-open>.submenu{display:block}
  .submenu a{padding:8px 10px!important;font-size:.82rem!important}
  .trust-grid{grid-template-columns:1fr 1fr}.trust-item:nth-child(2){border-right:none}.trust-item:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .services,.projects{grid-template-columns:1fr 1fr}
  .about-grid,.split-grid,.why-grid,.area-faq,.service-detail-grid,.contact-grid{grid-template-columns:1fr}
  .why-copy{position:static}.testimonials{grid-template-columns:1fr}.footer-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:680px){
  .container{width:min(calc(100% - 28px),var(--container))}
  .topbar-inner{justify-content:center}.topbar-left{display:none}
  .header-inner{height:70px}.nav{top:70px}.brand{font-size:min(var(--tb-text-logo-size,1.15rem),1.15rem)}
  .hero{min-height:0;display:block}.hero-layout{min-height:0;display:flex;flex-direction:column}.hero-copy{max-width:none;width:100%;padding:46px 0}.hero h1{font-size:clamp(2.75rem,13vw,4.35rem)}
  .hero-copy>p{font-size:1rem}.hero-actions,.cta-actions{flex-direction:column}.hero-actions .btn,.hero-actions .hero-secondary,.cta-actions .btn{width:100%}.hero-proof{gap:13px;margin-top:30px}.proof-item{width:100%}
  .hero-media{width:100%;height:310px!important;order:-1;clip-path:none!important;box-shadow:none!important}.hero-media img{object-position:var(--hero-mobile-position,center center)}
  .hero--full-bleed{min-height:680px;display:flex;align-items:end}.hero--full-bleed .hero-layout{min-height:680px;display:block}.hero--full-bleed .hero-bg{display:block;background-position:var(--hero-mobile-position,center center)}.hero--full-bleed .hero-bg::after{background:linear-gradient(180deg,rgba(7,25,40,.12) 0%,rgba(7,25,40,.36) 35%,rgba(7,25,40,.96) 70%,rgba(7,25,40,1) 100%)}.hero--full-bleed .hero-copy{padding:330px 0 42px}
  .hero--split .hero-layout,.hero--brand-panel .hero-layout,.hero--organic .hero-layout,.hero--minimal .hero-layout{display:flex}.hero--split .hero-media{margin-top:18px}.hero--split .hero-copy{padding-top:36px}
  .hero--brand-panel::before{width:330px;height:330px;right:-110px;top:-100px}.hero--brand-panel .hero-media{height:330px!important;background:rgba(255,255,255,.08)}
  .hero--organic::before{width:110%;height:190px;left:-30%;bottom:-115px}.hero--organic .hero-media{height:310px!important}.hero--organic .hero-copy{padding-top:38px}
  .hero--minimal::before{width:250px;height:250px;right:-60px;top:35px}.hero--minimal::after{width:180px;height:180px;left:-70px;top:-40px}.hero--minimal .hero-media{height:310px!important}.hero--minimal .hero-copy{padding-top:38px}
  .section{padding:72px 0}.section-head{display:block}.section-head .lead{margin-top:20px}
  .trust-grid,.services,.projects,.footer-grid,.reasons,.feature-list,.form-grid{grid-template-columns:1fr}
  .trust-item{border-right:none;border-bottom:1px solid var(--line)}
  .services{border-left:0}.service-card{border-left:1px solid var(--line)}
  .check-list,.stats,.areas{grid-template-columns:1fr}.media-frame{min-height:380px}.media-frame::after{display:none}
  .reason{border-left:1px solid rgba(255,255,255,.14)}
  .inner-hero{padding:calc(72px + var(--tb-inner-hero-top-extra-mobile,0px) + var(--tb-inner-hero-nav-clearance-mobile,0px)) 0 65px;min-height:calc(390px + var(--tb-inner-hero-top-extra-mobile,0px) + var(--tb-inner-hero-nav-clearance-mobile,0px))}.inner-hero-image{background:linear-gradient(180deg,rgba(5,19,31,.38),rgba(5,19,31,.94)),var(--inner-hero-image) var(--inner-hero-position,center)/cover no-repeat}
  .cta-inner{padding:64px 0;display:block}.cta-actions{margin-top:28px;justify-content:flex-start}
  .footer-bottom{display:block}.concept-note{text-align:left;margin-top:12px}.contact-card,.form-card{padding:25px}
}

.whatsapp-float{
  position:fixed;
  right:24px;
  bottom:24px;
  z-index:90;
  width:58px;
  height:58px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:var(--tb-whatsapp-bg,#25D366);
  color:var(--tb-whatsapp-icon,#fff);
  box-shadow:0 12px 30px rgba(0,0,0,.2);
  transition:transform .2s ease, box-shadow .2s ease;
}
.whatsapp-float:hover{
  transform:translateY(-3px) scale(1.03);
  background:var(--tb-whatsapp-hover-bg,var(--tb-whatsapp-bg,#25D366));
  color:var(--tb-whatsapp-hover-icon,var(--tb-whatsapp-icon,#fff));
  box-shadow:0 16px 36px rgba(0,0,0,.25);
}
.whatsapp-float svg{width:31px;height:31px;display:block}
@media(max-width:680px){
  .whatsapp-float{right:16px;bottom:16px;width:54px;height:54px}
  .whatsapp-float svg{width:29px;height:29px}
}

/* V1.3 refined navigation dropdown */
.submenu-toggle{width:22px;height:28px;padding:0;margin-left:4px;display:grid;place-items:center;border:0;background:transparent;color:currentColor;cursor:pointer}
.submenu-toggle .chevron{width:7px;height:7px;border-right:1.7px solid currentColor;border-bottom:1.7px solid currentColor;transform:rotate(45deg) translateY(-1px);transition:transform .18s ease,color .18s ease}
.has-dropdown:hover .submenu-toggle,.has-dropdown.active .submenu-toggle{color:var(--brand-accent)}
.has-dropdown.submenu-open .chevron{transform:rotate(225deg) translate(-1px,-1px)}
.submenu{top:calc(100% + 15px);min-width:218px;padding:6px;border:1px solid var(--brand-border);box-shadow:0 16px 38px rgba(16,43,69,.13)}
.submenu::before{top:-16px;height:16px}
.submenu a{padding:9px 11px!important;font-size:.82rem!important;border-left:2px solid transparent}
.submenu a:hover{background:var(--brand-light)!important;color:var(--brand-accent)!important;border-left-color:var(--brand-accent)}

.footer-legal-links{display:flex;gap:13px;align-items:center;flex-wrap:wrap}
.footer-legal-links a{display:inline-block}
.cookie-settings-link{border:0;background:none;color:inherit;padding:5px 0;font:inherit;font-size:.8rem;cursor:pointer}
.cookie-settings-link:hover{color:var(--brand-accent)}

/* Native cookie/privacy manager */
.cookie-banner[hidden],.cookie-modal[hidden]{display:none!important}
.cookie-banner{position:fixed;z-index:150;left:18px;right:18px;bottom:18px;background:#fff;color:var(--ink);border:1px solid var(--line);box-shadow:0 20px 65px rgba(6,24,38,.22)}
.cookie-banner-inner{max-width:1180px;margin:auto;padding:22px;display:flex;align-items:center;justify-content:space-between;gap:28px}
.cookie-copy{max-width:720px}.cookie-copy strong{display:block;color:var(--navy);font-size:1rem}.cookie-copy p{margin-top:7px;color:var(--muted);font-size:.82rem}.cookie-copy a{text-decoration:underline;color:var(--navy)}
.cookie-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.cookie-btn{min-height:42px;padding:0 15px;border:1px solid var(--navy);font-weight:800;font-size:.78rem;cursor:pointer;background:#fff;color:var(--navy)}
.cookie-btn.primary{background:var(--navy);color:#fff}.cookie-btn.secondary:hover{background:var(--brand-light)}.cookie-btn.primary:hover{background:var(--blue)}
.cookie-modal{position:fixed;z-index:160;inset:0;background:rgba(5,19,31,.62);display:grid;place-items:center;padding:20px}
.cookie-modal-card{width:min(100%,590px);max-height:90vh;overflow:auto;background:#fff;padding:30px;position:relative;box-shadow:0 25px 70px rgba(0,0,0,.3)}
.cookie-modal-card h2{font-size:1.8rem}.cookie-modal-card>p{color:var(--muted);font-size:.87rem;margin-top:10px}
.cookie-close{position:absolute;right:16px;top:12px;border:0;background:none;font-size:1.8rem;color:#66727b;cursor:pointer}
.cookie-pref{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:18px 0;border-bottom:1px solid var(--line);margin:0}
.cookie-pref div{display:block}.cookie-pref strong{display:block;color:var(--navy);font-size:.9rem}.cookie-pref span{display:block;color:var(--muted);font-size:.76rem;margin-top:3px;font-weight:500}
.cookie-pref input{width:20px;height:20px;flex:0 0 auto}.cookie-always{white-space:nowrap;color:#52705b!important;font-weight:800!important}
.cookie-save{margin-top:22px;width:100%}

@media(max-width:680px){
  .cookie-banner{left:10px;right:10px;bottom:10px}.cookie-banner-inner{display:block;padding:18px}.cookie-actions{margin-top:16px;display:grid;grid-template-columns:1fr 1fr}.cookie-actions .primary{grid-column:1/-1}.cookie-btn{width:100%}
  .cookie-modal-card{padding:25px 20px}.footer-legal-links{display:block}
}
@media(max-width:980px){
  .nav-item{width:100%}.nav-parent{justify-content:space-between}.nav-parent>a{flex:1}
  .submenu-toggle{width:38px;height:38px;margin-left:4px}
  .submenu{position:static;min-width:0;box-shadow:none;border:0;border-left:2px solid var(--brand-accent);margin:4px 0 6px 10px;padding:3px 0 3px 9px}
  .submenu::before{display:none}.has-dropdown:hover>.submenu{display:none}.has-dropdown.submenu-open>.submenu{display:block}
  .submenu a{padding:8px 10px!important;font-size:.82rem!important;border-left:0}
}

/* ==========================================================
   V1.3 PREMIUM UI PASS
   Homepage art direction without changing CMS content model.
   ========================================================== */
.home-premium{
  --premium-shadow:0 24px 70px rgba(9,29,44,.11);
  --premium-shadow-strong:0 34px 90px rgba(9,29,44,.18);
  --premium-rule:color-mix(in srgb,var(--line) 82%,transparent);
}
.home-premium .section{padding:118px 0}
.home-premium .section-soft{background:linear-gradient(180deg,color-mix(in srgb,var(--cream) 92%,#fff) 0%,var(--cream) 100%)}
.home-premium .eyebrow{font-size:.7rem;letter-spacing:.21em;font-weight:900;margin-bottom:16px}
.home-premium h2{font-size:clamp(2.55rem,4.7vw,4.9rem);line-height:.98;letter-spacing:-.055em}
.home-premium h3{letter-spacing:-.035em}
.home-premium .lead{font-size:1rem;line-height:1.8}
.home-premium .section-head{margin-bottom:58px;align-items:end}
.home-premium .section-head>div{max-width:650px}
.home-premium .section-head .lead{max-width:500px;padding-bottom:7px}

/* Header refinement */
.topbar{letter-spacing:.015em}
.header{box-shadow:0 1px 0 rgba(16,43,69,.05)}
.header-inner{height:88px}
.nav{gap:29px;font-size:.82rem}
.header-cta{min-height:48px;padding:0 24px}
.brand{letter-spacing:-.05em}

/* Hero – stronger typography, calmer proof, more depth */
.home-premium .hero{min-height:760px}
.home-premium .hero-layout{min-height:760px}
.home-premium .hero-copy{padding:100px 0;max-width:800px}
.home-premium .hero h1{font-size:clamp(3.55rem,6.3vw,6.4rem);line-height:var(--hero-heading-line-height,.98);letter-spacing:var(--hero-heading-letter-spacing,-.04em);max-width:880px}
.home-premium .hero-copy>p{max-width:610px;font-size:1.05rem;line-height:1.78;margin-top:30px}
.home-premium .hero-actions{margin-top:38px;gap:10px}
/* Hero and optional homepage CTA share premium action typography and proportions. */
.home-premium .hero-actions .btn,.home-premium .hero-secondary,.home-premium .tb-home-extra-cta-actions .btn{min-height:56px;padding:0 25px;font-size:.8rem;letter-spacing:.01em}
.home-premium .hero-proof{margin-top:48px;padding-top:22px;gap:18px;border-top-width:1px}
.home-premium .proof-item{font-size:.74rem;letter-spacing:.01em}
.home-premium .proof-icon{width:30px;height:30px;font-size:.68rem}
.home-premium .hero--full-bleed .hero-bg::after{background:linear-gradient(90deg,rgba(4,16,27,.96) 0%,rgba(5,25,40,.90) 43%,rgba(5,25,40,.48) 70%,rgba(5,25,40,.16) 100%)}
.home-premium .hero--full-bleed::after{content:"";position:absolute;inset:auto 0 0;height:120px;background:linear-gradient(180deg,transparent,rgba(2,13,22,.16));pointer-events:none}
.home-premium .hero--split .hero-media{height:620px;box-shadow:var(--premium-shadow-strong)}
.home-premium .hero--organic .hero-media,.home-premium .hero--minimal .hero-media{filter:saturate(.96) contrast(1.02)}

/* Floating trust rail */
.home-premium .trust-strip--floating{position:relative;z-index:10;background:transparent;border:0;margin-top:-34px;margin-bottom:-34px;pointer-events:none}
.home-premium .trust-strip--floating .trust-grid{background:#fff;box-shadow:var(--premium-shadow);border:1px solid rgba(16,43,69,.07);pointer-events:auto}
.home-premium .trust-item{padding:27px 30px;min-height:102px;display:flex;flex-direction:column;justify-content:center}
.home-premium .trust-item strong{font-size:1.02rem;letter-spacing:-.025em}
.home-premium .trust-item span{font-size:.7rem;line-height:1.5;margin-top:5px}

/* Services – less generic, more editorial */
.home-premium .services{border:0;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr));background:transparent}
.home-premium .service-card{min-height:330px;padding:34px 32px 30px;border:1px solid var(--premium-rule);background:rgba(255,255,255,.94);overflow:hidden;transition:transform .28s ease,box-shadow .28s ease,border-color .28s ease}
.home-premium .service-card::after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--brand-accent);transform:scaleX(0);transform-origin:left;transition:transform .28s ease}
.home-premium .service-card:hover{transform:translateY(-7px);box-shadow:var(--premium-shadow);border-color:transparent}
.home-premium .service-card:hover::after{transform:scaleX(1)}
.home-premium .service-card-top{display:flex;align-items:center;justify-content:space-between}
.home-premium .service-icon{width:auto;height:auto;background:none;color:var(--brand-accent);font-size:.7rem;font-weight:950;letter-spacing:.18em}
.home-premium .service-arrow{width:38px;height:38px;border:1px solid var(--line);display:grid;place-items:center;color:var(--navy);font-size:1.02rem;transition:.25s ease;text-decoration:none}
.home-premium .service-arrow:hover{text-decoration:none}
.home-premium .service-arrow:focus-visible{outline:2px solid var(--brand-accent);outline-offset:3px;text-decoration:none}
.home-premium .service-card:hover .service-arrow{background:var(--navy);color:#fff;border-color:var(--navy);transform:translate(2px,-2px)}
.home-premium .service-card h3{font-size:1.5rem;line-height:1.06;margin-top:46px;max-width:250px}
.home-premium .service-card p{font-size:.82rem;line-height:1.7;margin-top:14px;max-width:280px}
.home-premium .service-card .text-link{position:absolute;left:32px;bottom:30px;margin:0;font-size:.72rem;letter-spacing:.015em}
.home-premium .service-card--featured{background:var(--navy);border-color:var(--navy);color:#fff}
.home-premium .service-card--featured h3{color:#fff}
.home-premium .service-card--featured p{color:rgba(255,255,255,.7)}
.home-premium .service-card--featured .service-arrow{border-color:rgba(255,255,255,.2);color:#fff}
.home-premium .service-card--featured .text-link{color:var(--brand-accent)}

/* About – image-led and editorial */
.home-premium .about-grid{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:92px}
.home-premium .about-media-wrap{position:relative;isolation:isolate}
.home-premium .media-frame{min-height:650px;box-shadow:var(--premium-shadow);background-position:center;background-size:cover}
.home-premium .media-frame::before{content:"";position:absolute;inset:18px -18px -18px 18px;border:1px solid color-mix(in srgb,var(--brand-accent) 72%,transparent);z-index:-1}
.home-premium .media-frame::after{display:none}
.home-premium .about-experience{position:absolute;right:-34px;bottom:46px;width:170px;background:var(--brand-accent);color:var(--cta-text);padding:24px 22px;box-shadow:0 18px 44px rgba(0,0,0,.16)}
.home-premium .about-experience strong{display:block;font-size:2rem;line-height:1;font-weight:950;letter-spacing:-.06em}
.home-premium .about-experience span{display:block;margin-top:8px;font-size:.67rem;line-height:1.4;font-weight:800}
.home-premium .about-copy h2{max-width:600px}
.home-premium .about-copy .lead{margin-top:28px;max-width:610px}
.home-premium .check-list{margin-top:34px;grid-template-columns:1fr 1fr;gap:0 26px}
.home-premium .check{font-size:.76rem;padding:15px 0}
.home-premium .check::before{width:22px;height:22px;background:color-mix(in srgb,var(--brand-accent) 12%,#fff)}
.home-premium .stats{margin-top:38px;background:transparent;border:0;gap:1px}
.home-premium .stat{border-top:1px solid var(--line);padding:26px 6px 0 0}
.home-premium .stat strong{font-size:2.35rem;letter-spacing:-.065em}
.home-premium .stat span{font-size:.62rem;letter-spacing:.12em}

/* Projects – one hero project + supporting grid */
.home-premium .projects{display:grid;grid-template-columns:1.2fr .8fr .8fr;grid-auto-rows:260px;gap:12px}
.home-premium .project{min-height:0;height:100%;box-shadow:none}
.home-premium .project--featured{grid-row:span 2;grid-column:span 1}
.home-premium .project img{height:100%;aspect-ratio:auto;filter:saturate(.9) contrast(1.03)}
.home-premium .project::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 34%,rgba(4,18,29,.88) 100%);pointer-events:none}
.home-premium .project-caption{z-index:2;padding:60px 24px 22px;background:none}
.home-premium .project-caption strong{font-size:1.03rem;letter-spacing:-.02em}
.home-premium .project-caption>span:last-child{font-size:.68rem;margin-top:4px;color:rgba(255,255,255,.67)}
.home-premium .project-index{position:absolute;right:22px;bottom:23px;color:var(--brand-accent)!important;font-size:.67rem!important;font-weight:900;letter-spacing:.15em}
.home-premium .project--featured .project-caption{padding:90px 30px 30px}
.home-premium .project--featured .project-caption strong{font-size:1.65rem;max-width:330px}
.home-premium .project:hover img{transform:scale(1.045)}

/* Why choose us – bolder composition */
.home-premium .section-dark{position:relative;overflow:hidden;background:linear-gradient(115deg,var(--navy-2),color-mix(in srgb,var(--navy) 88%,#000))}
.home-premium .why-watermark{position:absolute;left:-18px;top:18px;color:rgba(255,255,255,.025);font-size:clamp(10rem,24vw,23rem);font-weight:950;line-height:.8;letter-spacing:-.09em;pointer-events:none}
.home-premium .why-grid{position:relative;z-index:1;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:100px;align-items:center}
.home-premium .why-copy{position:static}
.home-premium .why-copy h2{max-width:590px}
.home-premium .why-copy .lead{margin-top:28px;max-width:510px;color:rgba(255,255,255,.66)}
.home-premium .reasons{border:0;gap:1px;background:rgba(255,255,255,.12)}
.home-premium .reason{min-height:230px;padding:36px;background:rgba(6,28,44,.92);border:0;transition:.25s ease}
.home-premium .reason:hover{background:rgba(255,255,255,.055)}
.home-premium .reason b{font-size:.75rem;letter-spacing:.15em;color:var(--brand-accent)}
.home-premium .reason strong{font-size:1.08rem;margin-top:40px}
.home-premium .reason p{font-size:.76rem;line-height:1.65;margin-top:10px;color:rgba(255,255,255,.58)}

/* Reviews – featured quote rather than three identical cards */
.home-premium .testimonials{display:grid;grid-template-columns:1.35fr .825fr .825fr;gap:12px;align-items:stretch}
.home-premium .testimonial{position:relative;min-height:310px;padding:36px 30px;border:1px solid var(--premium-rule);background:#fff;display:flex;flex-direction:column}
.home-premium .testimonial::before{content:"“";position:absolute;right:25px;top:7px;color:color-mix(in srgb,var(--brand-accent) 18%,transparent);font-size:7rem;line-height:1;font-family:Georgia,serif}
.home-premium .testimonial blockquote{position:relative;z-index:1;font-size:.9rem;line-height:1.8;margin-top:28px}
.home-premium .testimonial strong{margin-top:auto;padding-top:30px}
.home-premium .testimonial--featured{background:var(--navy);border-color:var(--navy);padding:46px 42px}
.home-premium .testimonial--featured blockquote{font-size:1.35rem;line-height:1.55;color:#fff;letter-spacing:-.025em}
.home-premium .testimonial--featured strong{color:#fff}
.home-premium .testimonial--featured span{color:rgba(255,255,255,.55)}
.home-premium .testimonial--featured::before{color:rgba(255,255,255,.07);font-size:9rem}

/* Areas and FAQ – cleaner open layout */
.home-premium .area-faq{gap:88px;align-items:start}
.home-premium .areas{display:flex;flex-wrap:wrap;gap:9px;margin-top:34px}
.home-premium .area-chip{border:1px solid var(--line);padding:10px 13px;background:#fff;font-size:.7rem;font-weight:800}
.home-premium .area-chip::before{content:"";display:inline-block;width:5px;height:5px;background:var(--brand-accent);border-radius:50%;margin-right:8px;vertical-align:middle}
.home-premium .faq-list{margin-top:31px}
.home-premium .faq button{padding:22px 0;font-size:.82rem}
.home-premium .faq button span:last-child{width:27px;height:27px;display:grid;place-items:center;border:1px solid var(--line);font-size:1rem;transition:.2s ease}
.home-premium .faq.open button span:last-child{background:var(--navy);border-color:var(--navy);color:#fff}
.home-premium .faq p{padding-right:42px;line-height:1.75}

/* Premium conversion section */
.cta--premium{position:relative;overflow:hidden;background:linear-gradient(110deg,var(--navy-2),var(--navy));isolation:isolate}
.cta--premium::before{content:"";position:absolute;right:-120px;top:-190px;width:520px;height:520px;border-radius:50%;border:1px solid rgba(255,255,255,.09)}
.cta--premium::after{content:"";position:absolute;right:70px;bottom:-260px;width:430px;height:430px;border-radius:50%;background:var(--brand-accent);opacity:.09;z-index:-1}
.cta--premium .cta-accent{position:absolute;left:0;top:0;bottom:0;width:7px;background:var(--brand-accent)}
.cta--premium .cta-inner{position:relative;min-height:360px}
.cta--premium .cta-copy{max-width:760px}
.cta--premium .cta-rule{width:54px;height:3px;background:var(--brand-accent);margin-bottom:25px}
.cta--premium h2{font-size:clamp(2.7rem,5vw,5rem);line-height:.96;letter-spacing:-.06em}
.cta--premium p{font-size:.93rem;margin-top:20px;max-width:620px}
.cta-proofline{display:flex;flex-wrap:wrap;gap:0;margin-top:27px;color:rgba(255,255,255,.58);font-size:.68rem;font-weight:750}
.cta-proofline span+span::before{content:"•";display:inline-block;margin:0 12px;color:var(--brand-accent)}
.cta--premium .cta-actions{min-width:220px;flex-direction:column}
.cta--premium .cta-actions .btn{min-height:56px;width:100%;padding:0 24px}

/* Footer – finish with a stronger brand moment */
.footer--premium{padding-top:0;background:color-mix(in srgb,var(--brand-dark) 92%,#000)}
.footer-intro{min-height:190px;border-bottom:1px solid rgba(255,255,255,.10);display:flex;align-items:center;justify-content:space-between;gap:40px}
.footer-kicker{display:block;color:var(--brand-accent);font-size:.64rem;letter-spacing:.18em;text-transform:uppercase;font-weight:900;margin-bottom:10px}
.footer-intro h2{font-size:clamp(2rem,3.7vw,3.9rem);line-height:1;color:#fff;letter-spacing:-.055em}
.footer-phone{display:flex!important;flex-direction:column;align-items:flex-end;padding:0!important}
.footer-phone span{font-size:.65rem;color:#8397a6;text-transform:uppercase;letter-spacing:.12em;font-weight:800}
.footer-phone strong{font-size:1.35rem;color:#fff;margin-top:5px;letter-spacing:-.03em}
.footer--premium .footer-grid{padding-top:64px}
.footer--premium .footer-grid>div:first-child{padding-right:34px}
.footer--premium .footer h4,.footer--premium h4{letter-spacing:.08em;text-transform:uppercase;font-size:.67rem;color:#8094a2}
.footer--premium .footer-grid a{font-size:.76rem;color:#c3d0d8;transition:.18s ease}
.footer--premium .footer-grid a:hover{padding-left:3px;color:var(--brand-accent)}
.footer--premium .footer-bottom{margin-top:58px;padding-top:25px}

/* Button polish */
.home-premium .btn,.cta--premium .btn,.header-cta{position:relative;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease,background .2s ease,color .2s ease}
.home-premium .btn:hover,.cta--premium .btn:hover,.header-cta:hover{transform:translateY(-2px)}
.home-premium .btn-primary:hover,.cta--premium .btn-primary:hover,.header-cta:hover{box-shadow:0 12px 26px color-mix(in srgb,var(--brand-accent) 22%,transparent)}

@media(max-width:1120px){
  .home-premium .about-grid{gap:62px}
  .home-premium .projects{grid-template-columns:1fr 1fr;grid-auto-rows:240px}
  .home-premium .project--featured{grid-column:span 2;grid-row:span 1}
  .home-premium .testimonials{grid-template-columns:1fr 1fr}.home-premium .testimonial--featured{grid-column:span 2}
}

@media(max-width:980px){
  .header-inner{height:78px}
  .home-premium .section{padding:92px 0}
  .home-premium .trust-strip--floating{margin-top:0;margin-bottom:0;background:#fff}
  .home-premium .trust-strip--floating .trust-grid{box-shadow:none;border:0;border-bottom:1px solid var(--line)}
  .home-premium .about-grid{gap:52px}
  .home-premium .about-experience{right:18px}
  .home-premium .why-grid{gap:54px}
  .footer-intro{min-height:165px}
}

@media(max-width:680px){
  .home-premium .section{padding:76px 0}
  .home-premium .section-head{margin-bottom:36px}
  .home-premium h2{font-size:clamp(2.35rem,11vw,3.4rem)}
  .home-premium .hero{min-height:0}
  .home-premium .hero h1{font-size:clamp(3rem,14.5vw,4.6rem);line-height:var(--hero-heading-line-height,.98);letter-spacing:var(--hero-heading-letter-spacing,-.04em)}
  .home-premium .hero-copy{padding:46px 0 50px}
  .home-premium .hero--full-bleed .hero-copy{padding:325px 0 48px}
  .home-premium .hero-copy>p{margin-top:22px;font-size:.94rem;line-height:1.7}
  .home-premium .hero-proof{margin-top:30px;padding-top:19px}
  .home-premium .trust-item{min-height:85px;padding:20px 22px}
  .home-premium .services{grid-template-columns:1fr;gap:9px}
  .home-premium .service-card{min-height:285px;padding:28px 26px}
  .home-premium .service-card h3{margin-top:34px;font-size:1.45rem}
  .home-premium .service-card .text-link{left:26px;bottom:25px}
  .home-premium .about-grid{gap:48px}
  .home-premium .media-frame{min-height:430px}
  .home-premium .media-frame::before{inset:12px -10px -10px 12px}
  .home-premium .about-experience{right:-4px;bottom:28px;width:145px;padding:19px}
  .home-premium .about-experience strong{font-size:1.65rem}
  .home-premium .check-list{grid-template-columns:1fr}
  .home-premium .stats{grid-template-columns:repeat(3,1fr)}
  .home-premium .stat strong{font-size:1.65rem}.home-premium .stat span{font-size:.52rem}
  .home-premium .projects{grid-template-columns:1fr;grid-auto-rows:280px}
  .home-premium .project--featured{grid-column:auto;grid-row:auto;min-height:390px}
  .home-premium .why-grid{gap:42px}
  .home-premium .reasons{grid-template-columns:1fr 1fr}
  .home-premium .reason{min-height:190px;padding:25px}
  .home-premium .reason strong{margin-top:26px}
  .home-premium .testimonials{grid-template-columns:1fr}.home-premium .testimonial--featured{grid-column:auto}
  .home-premium .testimonial{min-height:275px}.home-premium .testimonial--featured{padding:34px 28px}
  .home-premium .testimonial--featured blockquote{font-size:1.15rem}
  .home-premium .area-faq{gap:62px}
  .home-premium .areas{grid-template-columns:none}
  .cta--premium .cta-inner{min-height:0;padding:76px 0}
  .cta--premium .cta-actions{min-width:0}
  .cta-proofline{display:block}.cta-proofline span{display:block;margin-top:6px}.cta-proofline span+span::before{display:none}
  .footer-intro{min-height:0;padding:54px 0;display:block}.footer-phone{align-items:flex-start;margin-top:28px}.footer--premium .footer-grid{padding-top:50px}
}

@media(prefers-reduced-motion:reduce){
  .home-premium .service-card,.home-premium .project img,.home-premium .service-arrow,.home-premium .btn,.cta--premium .btn,.header-cta{transition:none!important}
}

/* Premium hero balance refinements after responsive QA */
@media(min-width:1121px){
  .home-premium .hero--split .hero-layout{grid-template-columns:minmax(0,1.12fr) minmax(360px,.88fr);gap:44px}
  .home-premium .hero--split .hero-media{height:590px}
  .home-premium .hero--split h1{font-size:clamp(3.45rem,5.25vw,5.65rem)}
}
@media(max-width:680px){
  .home-premium .hero--split .hero-copy,
  .home-premium .hero--brand-panel .hero-copy,
  .home-premium .hero--organic .hero-copy,
  .home-premium .hero--minimal .hero-copy{order:1;padding-top:48px;padding-bottom:38px}
  .home-premium .hero--split .hero-media,
  .home-premium .hero--brand-panel .hero-media,
  .home-premium .hero--organic .hero-media,
  .home-premium .hero--minimal .hero-media{order:2;height:285px!important;margin-top:0!important}
  .home-premium .hero--split .hero-layout,
  .home-premium .hero--brand-panel .hero-layout,
  .home-premium .hero--organic .hero-layout,
  .home-premium .hero--minimal .hero-layout{padding-bottom:0}
}

/* Responsive layout reset for premium-specific grid specificity */
@media(max-width:980px){
  .home-premium .about-grid,
  .home-premium .why-grid,
  .home-premium .area-faq{grid-template-columns:1fr}
  .home-premium .why-grid{align-items:start}
}


/* ==========================================================
   V1.3 Premium Polish + Prototype Claim Bar
   ========================================================== */
.header{transition:box-shadow .28s ease,background-color .28s ease,border-color .28s ease}
.header.header-scrolled{box-shadow:0 10px 32px rgba(7,24,38,.10);border-bottom-color:rgba(16,43,69,.05)}

.hero--full-bleed[data-motion="on"][data-kenburns="on"] > .hero-bg{
  animation:tbKenBurns 20s cubic-bezier(.42,0,.58,1) infinite alternate;
  transform-origin:center center;
  will-change:transform;
  backface-visibility:hidden;
}
@keyframes tbKenBurns{
  0%{transform:scale(1.018) translate3d(.35%,-.15%,0)}
  100%{transform:scale(1.105) translate3d(-1.15%,.55%,0)}
}


.home-premium .service-card{transition:transform .24s ease,box-shadow .24s ease,border-color .24s ease,background-color .24s ease}
.home-premium .service-card:hover{transform:translateY(-5px);box-shadow:0 18px 46px rgba(16,43,69,.12)}
.home-premium .service-card .text-link{transition:transform .2s ease,color .2s ease}
.home-premium .service-card:hover .text-link{transform:translateX(4px)}
.home-premium .media-frame{overflow:hidden;transition:box-shadow .32s ease,transform .32s ease}
.home-premium .media-frame:hover{transform:translateY(-2px);box-shadow:0 24px 64px rgba(16,43,69,.16)}

.home-premium .project::after{transition:opacity .3s ease}
.home-premium .project:hover::after{opacity:.92}
.home-premium .project img{transition:transform .55s cubic-bezier(.2,.7,.2,1),filter .35s ease}
.home-premium .project:hover img{transform:scale(1.04);filter:saturate(1) contrast(1.04)}

.home-premium .section-dark{position:relative;isolation:isolate;background:radial-gradient(circle at 8% 18%,rgba(255,255,255,.045),transparent 27%),radial-gradient(circle at 88% 78%,color-mix(in srgb,var(--brand-accent) 7%,transparent),transparent 22%),var(--navy-2)}
.home-premium .section-dark::after{content:"";position:absolute;inset:0;z-index:-1;opacity:.1;pointer-events:none;background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.05) 0 1px,transparent 1px 16px);mask-image:linear-gradient(90deg,rgba(0,0,0,.6),transparent 62%)}

.home-premium .testimonial{transition:transform .24s ease,box-shadow .24s ease,border-color .24s ease}
.home-premium .testimonial:hover{transform:translateY(-4px);box-shadow:0 16px 42px rgba(16,43,69,.09)}

.faq p{display:block;max-height:0;overflow:hidden;opacity:0;padding-bottom:0;transition:max-height .35s ease,opacity .25s ease,padding .35s ease}
.faq.open p{max-height:340px;opacity:1;padding-bottom:18px}
.faq button span:last-child{transition:transform .25s ease,color .25s ease}
.faq.open button span:last-child{transform:rotate(45deg)}

.prototype-claim-bar{position:fixed;left:0;right:0;bottom:0;z-index:120;background:color-mix(in srgb,var(--brand-dark) 97%,transparent);color:#fff;border-top:1px solid rgba(255,255,255,.12);box-shadow:0 -12px 40px rgba(0,0,0,.16);transform:translateY(115%);opacity:0;visibility:hidden;transition:transform .38s cubic-bezier(.2,.72,.2,1),opacity .3s ease,visibility .3s;backdrop-filter:blur(12px)}
.prototype-claim-bar.is-visible{transform:translateY(0);opacity:1;visibility:visible}
.prototype-claim-inner{min-height:76px;display:flex;align-items:center;gap:22px}
.prototype-claim-copy{flex:1;min-width:0;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.prototype-claim-copy strong{font-size:1rem;letter-spacing:-.02em;color:#fff}
.prototype-claim-copy span{font-size:.78rem;color:#bfcbd4}
.prototype-claim-cta{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0 18px;background:var(--brand-accent);color:var(--cta-text,#111);font-size:.78rem;font-weight:900;white-space:nowrap;transition:transform .2s ease,filter .2s ease}
.prototype-claim-cta:hover{transform:translateY(-2px);filter:brightness(1.05)}
.prototype-claim-close{width:38px;height:38px;flex:0 0 auto;border:0;background:rgba(255,255,255,.07);color:#fff;font-size:1.35rem;line-height:1;cursor:pointer;transition:background .2s ease}
.prototype-claim-close:hover{background:rgba(255,255,255,.14)}
body.claim-bar-visible .whatsapp-float{bottom:96px}

@media(max-width:680px){
  .prototype-claim-inner{min-height:0;padding-top:12px;padding-bottom:12px;gap:10px;display:grid;grid-template-columns:1fr auto;position:relative}
  .prototype-claim-copy{display:block;grid-column:1/-1;padding-right:34px}
  .prototype-claim-copy strong{display:block;font-size:.92rem}.prototype-claim-copy span{display:block;margin-top:3px;font-size:.7rem}
  .prototype-claim-cta{min-height:42px;width:max-content;max-width:100%}
  .prototype-claim-close{position:absolute;right:0;top:10px;width:32px;height:32px}
  body.claim-bar-visible .whatsapp-float{bottom:146px}
}

@media(prefers-reduced-motion:reduce){
  .hero-bg,.home-premium .service-card,.home-premium .project img,.home-premium .testimonial,.faq p,.faq button span:last-child,.prototype-claim-bar{animation:none!important;transition:none!important;transform:none!important}
}


/* Homepage visibility / trust strip refinement */
.home-premium .trust-strip--standalone{margin:0;background:#fff;border-bottom:1px solid var(--brand-border)}
.home-premium .trust-strip--standalone .trust-grid{box-shadow:none}
.home-premium .area-faq--single{grid-template-columns:minmax(0,760px);justify-content:start}
.home-premium .area-faq--single>div{width:100%}

/* Central focus treatment */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{
  outline:3px solid color-mix(in srgb,var(--brand-accent) 52%,transparent);
  outline-offset:3px;
}
input:focus,textarea:focus,select:focus{border-color:var(--brand-accent)}

/* Services: one intentional accent system on light and featured cards */
.home-premium .service-icon,
.home-premium .service-card .text-link,
.home-premium .service-card::after{color:var(--brand-accent)}
.home-premium .service-card::after{background:var(--brand-accent)}
.home-premium .service-card .text-link{color:var(--brand-accent)}
.home-premium .service-card--featured{background:var(--brand-primary);border-color:var(--brand-primary)}
.home-premium .service-card--featured .service-icon,
.home-premium .service-card--featured .text-link{color:var(--brand-accent)}
.home-premium .service-card--featured:hover .service-arrow{
  background:var(--brand-accent);
  color:var(--brand-accent-contrast);
  border-color:var(--brand-accent);
}
.home-premium .service-card:not(.service-card--featured):hover .service-arrow{
  background:var(--brand-primary);
  color:#fff;
  border-color:var(--brand-primary);
}

/* Palette-owned review/FAQ/location accents */
.stars,.home-premium .stars{color:var(--brand-accent)}
.home-premium .project-index{color:var(--brand-accent)!important}
.home-premium .area-chip::before{background:var(--brand-accent)}
.area:not(.area-chip)::before{color:var(--brand-accent);background:none}
.faq button span:last-child{color:var(--brand-accent)}
.home-premium .faq.open button span:last-child{background:var(--brand-primary);border-color:var(--brand-primary);color:#fff}

/* Final CTA: deliberately separated from the dark footer */
.cta--premium{
  position:relative;
  overflow:hidden;
  isolation:isolate;
  background:color-mix(in srgb,var(--brand-light) 88%,#fff);
  color:var(--brand-body);
  border-top:1px solid var(--brand-border);
  border-bottom:1px solid var(--brand-border);
}
.cta--premium::before{
  content:"";
  position:absolute;
  right:-150px;
  top:-170px;
  width:520px;
  height:520px;
  border-radius:50%;
  border:1px solid color-mix(in srgb,var(--brand-primary) 16%,transparent);
  pointer-events:none;
}
.cta--premium::after{
  content:"";
  position:absolute;
  right:115px;
  bottom:-270px;
  width:430px;
  height:430px;
  border-radius:50%;
  background:var(--brand-accent);
  opacity:.08;
  z-index:-1;
}
.cta--premium .cta-accent{position:absolute;left:0;top:0;bottom:0;width:7px;background:var(--brand-accent)}
.cta--premium .cta-graphic{position:absolute;right:10%;top:50%;width:125px;height:125px;transform:translateY(-50%) rotate(12deg);border:1px solid color-mix(in srgb,var(--brand-accent) 28%,transparent);pointer-events:none}
.cta--premium .cta-graphic::before,.cta--premium .cta-graphic::after{content:"";position:absolute;border:1px solid color-mix(in srgb,var(--brand-primary) 13%,transparent)}
.cta--premium .cta-graphic::before{inset:18px}.cta--premium .cta-graphic::after{inset:38px}
.cta--premium .cta-inner{position:relative;min-height:390px;padding:90px 0}
.cta--premium .cta-copy{max-width:760px}
.cta--premium .cta-eyebrow{margin-bottom:17px}
.cta--premium h2{color:var(--brand-heading);font-size:clamp(2.7rem,5vw,5rem);line-height:.96;letter-spacing:-.06em}
.cta--premium p{color:var(--brand-muted);font-size:.96rem;margin-top:21px;max-width:620px}
.cta-proofline{color:var(--brand-muted)}
.cta-proofline span+span::before{color:var(--brand-accent)}
.cta--premium .cta-actions{min-width:235px;flex-direction:column}
.cta--premium .cta-actions .btn{min-height:58px;width:100%;padding:0 24px}
.cta--premium .btn-dark{background:var(--brand-primary);color:#fff}
.cta--premium .btn-dark:hover{background:var(--brand-secondary)}

/* Footer remains a distinct dark closing band, but now inherits the palette. */
.footer,.footer--premium{background:color-mix(in srgb,var(--brand-dark) 92%,#000)}
.topbar{background:var(--brand-dark)}
.footer-kicker,.footer--premium .footer-grid a:hover,.footer a:hover{color:var(--brand-accent)}
.prototype-claim-bar{background:color-mix(in srgb,var(--brand-dark) 97%,transparent)}
.prototype-claim-cta{background:var(--brand-accent);color:var(--brand-accent-contrast)}

@media(max-width:900px){
  .trust-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .trust-item{border-bottom:1px solid var(--brand-border)}
  .trust-item:nth-child(even){border-right:none}
}
@media(max-width:560px){
  .trust-grid{grid-template-columns:1fr!important}
  .trust-item{border-right:none!important}
  .cta--premium .cta-graphic{display:none}
}


/* Premium inner-page hero fallback: used whenever no hero image is assigned. */
.inner-hero-gradient{
  background:
    linear-gradient(115deg,
      color-mix(in srgb,var(--brand-dark) 98%,#000) 0%,
      color-mix(in srgb,var(--brand-primary) 92%,var(--brand-dark)) 42%,
      color-mix(in srgb,var(--brand-secondary) 84%,var(--brand-dark)) 100%
    );
}
.inner-hero-gradient::before,
.inner-hero-gradient::after,
.inner-hero-gradient .inner-hero-ornament{display:none!important}
.inner-hero-gradient .eyebrow{color:var(--brand-accent)}
.inner-hero-gradient h1{color:#fff}
.inner-hero-gradient p{color:color-mix(in srgb,#fff 78%,var(--brand-light))}
.inner-hero-image .inner-hero-ornament{display:none}



/* Legacy internal-page placeholder SVGs are treated as no hero image in PHP.
   This class remains the visual fallback for all image-free internal heroes. */
.inner-hero-gradient{
  background-color:var(--brand-dark);
}


/* ==========================================================
   V1.4 Dynamic Page Blocks
   Controlled, palette-driven, responsive components
   ========================================================== */
.custom-page{overflow:hidden}
.page-block{position:relative;padding:clamp(72px,8vw,118px) 0}
.block-bg-white{background:#fff;color:var(--brand-body)}
.block-bg-light{background:color-mix(in srgb,var(--brand-light) 88%,#fff);color:var(--brand-body)}
.block-bg-dark{background:var(--brand-dark);color:#fff}
.block-bg-brand{background:var(--brand-primary);color:#fff}
.block-bg-dark h2,.block-bg-dark h3,.block-bg-brand h2,.block-bg-brand h3{color:#fff}
.block-bg-dark p,.block-bg-brand p{color:color-mix(in srgb,#fff 76%,var(--brand-light))}
.block-bg-dark .eyebrow,.block-bg-brand .eyebrow{color:var(--brand-accent)}

.block-heading{max-width:760px;margin-bottom:42px}
.block-heading h2,.block-copy h2,.block-rich h2,.block-faq-intro h2,.dynamic-contact h2,.custom-cta h2{
  margin:0;color:var(--brand-heading);font-size:clamp(2.15rem,4.2vw,4rem);line-height:1;letter-spacing:-.055em
}
.block-bg-dark .block-heading h2,.block-bg-brand .block-heading h2,
.block-bg-dark .block-copy h2,.block-bg-brand .block-copy h2,
.block-bg-dark .block-rich h2,.block-bg-brand .block-rich h2,
.block-bg-dark .dynamic-contact h2,.block-bg-brand .dynamic-contact h2,
.block-bg-dark .custom-cta h2,.block-bg-brand .custom-cta h2{color:#fff}
.block-heading>p{margin:18px 0 0;max-width:650px;color:var(--brand-muted);line-height:1.75}
.block-bg-dark .block-heading>p,.block-bg-brand .block-heading>p{color:color-mix(in srgb,#fff 72%,var(--brand-light))}

.block-text-image{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.92fr);gap:clamp(44px,7vw,92px);align-items:center}
.block-text-image.block-image-left .block-copy{order:2}.block-text-image.block-image-left .block-media{order:1}
.block-text-image--no-image{grid-template-columns:minmax(0,820px);justify-content:start}
.block-copy .prose{margin-top:24px}.block-copy .prose p,.block-rich .prose p{font-size:.97rem;line-height:1.85;color:var(--brand-muted)}
.block-bg-dark .prose p,.block-bg-brand .prose p{color:color-mix(in srgb,#fff 74%,var(--brand-light))}
.block-media{position:relative;min-height:440px}
.block-media::before{content:"";position:absolute;left:-18px;bottom:-18px;width:45%;height:45%;background:var(--brand-accent);opacity:.9}
.block-media img{position:relative;z-index:1;width:100%;height:100%;min-height:440px;object-fit:cover;display:block;box-shadow:0 24px 70px color-mix(in srgb,var(--brand-dark) 16%,transparent)}

.block-rich{width:100%;max-width:760px}.block-rich--wide{max-width:1020px}
.block-rich--align-left{margin-left:0;margin-right:auto;text-align:left}.block-rich--align-center{margin-left:auto;margin-right:auto;text-align:center}.block-rich--align-right{margin-left:auto;margin-right:0;text-align:right}
.block-rich .prose{margin-top:26px}.block-rich--align-center .prose,.block-rich--align-right .prose{margin-left:auto;margin-right:auto}.block-rich--align-right .prose{margin-right:0}

.benefit-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.benefit-card{position:relative;background:#fff;border:1px solid var(--brand-border);padding:30px;min-height:220px;transition:transform .24s ease,box-shadow .24s ease,border-color .24s ease}
.block-bg-white .benefit-card,.block-bg-light .benefit-card{background:#fff}
.block-bg-dark .benefit-card,.block-bg-brand .benefit-card{background:color-mix(in srgb,var(--brand-primary) 76%,#fff 6%);border-color:rgba(255,255,255,.14)}
.benefit-card:hover{transform:translateY(-4px);box-shadow:0 18px 44px color-mix(in srgb,var(--brand-primary) 10%,transparent);border-color:color-mix(in srgb,var(--brand-accent) 40%,var(--brand-border))}
.benefit-index{display:block;color:var(--brand-accent);font-size:.72rem;font-weight:900;letter-spacing:.12em;margin-bottom:28px}
.benefit-card h3{margin:0 0 11px;color:var(--brand-heading);font-size:1.13rem}
.benefit-card p{margin:0;color:var(--brand-muted);font-size:.86rem;line-height:1.7}
.block-bg-dark .benefit-card p,.block-bg-brand .benefit-card p{color:rgba(255,255,255,.7)}
.benefit-style-numbered .benefit-index{font-size:1.35rem;letter-spacing:-.02em}

.process-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--brand-border);border-bottom:1px solid var(--brand-border)}
.process-step{padding:32px 28px;border-right:1px solid var(--brand-border);min-height:245px}.process-step:last-child{border-right:0}
.process-step>span{display:block;color:var(--brand-accent);font-size:.78rem;font-weight:900;margin-bottom:42px}
.process-step h3{margin:0 0 10px;color:var(--brand-heading);font-size:1.08rem}.process-step p{margin:0;color:var(--brand-muted);font-size:.84rem;line-height:1.68}
.block-bg-dark .process-grid,.block-bg-brand .process-grid,.block-bg-dark .process-step,.block-bg-brand .process-step{border-color:rgba(255,255,255,.14)}
.block-bg-dark .process-step p,.block-bg-brand .process-step p{color:rgba(255,255,255,.7)}

.stats-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid color-mix(in srgb,var(--brand-border) 70%,transparent)}
.stats-strip>div{padding:34px 28px;border-right:1px solid color-mix(in srgb,var(--brand-border) 70%,transparent)}.stats-strip>div:last-child{border-right:0}
.stats-strip strong{display:block;color:var(--brand-accent);font-size:clamp(2rem,4vw,3.5rem);letter-spacing:-.06em;line-height:1}.stats-strip span{display:block;margin-top:9px;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.block-bg-dark .stats-strip,.block-bg-brand .stats-strip{border-color:rgba(255,255,255,.14)}.block-bg-dark .stats-strip>div,.block-bg-brand .stats-strip>div{border-color:rgba(255,255,255,.14)}

.custom-gallery{display:grid;grid-template-columns:repeat(12,1fr);gap:12px}
.custom-gallery figure{margin:0;position:relative;overflow:hidden;background:var(--brand-dark);min-height:280px}
.custom-gallery figure:nth-child(1),.custom-gallery figure:nth-child(4){grid-column:span 7}.custom-gallery figure:nth-child(2),.custom-gallery figure:nth-child(3),.custom-gallery figure:nth-child(5),.custom-gallery figure:nth-child(6){grid-column:span 5}
.custom-gallery img{width:100%;height:100%;min-height:280px;object-fit:cover;display:block;transition:transform .5s ease}.custom-gallery figure:hover img{transform:scale(1.035)}
.custom-gallery figcaption{position:absolute;left:18px;bottom:16px;background:color-mix(in srgb,var(--brand-dark) 90%,transparent);color:#fff;padding:8px 11px;font-size:.7rem;font-weight:850}

.dynamic-service-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--brand-border);border:1px solid var(--brand-border)}
.dynamic-service-card{display:block;background:#fff;padding:30px;text-decoration:none;min-height:250px;transition:background .22s ease,transform .22s ease}
.dynamic-service-card>span{display:block;color:var(--brand-accent);font-size:.7rem;font-weight:900;margin-bottom:34px}.dynamic-service-card h3{margin:0 0 10px;color:var(--brand-heading);font-size:1.08rem}.dynamic-service-card p{margin:0;color:var(--brand-muted);font-size:.83rem;line-height:1.65}.dynamic-service-card b{display:inline-block;margin-top:22px;color:var(--brand-accent);font-size:.73rem}
.dynamic-service-card:hover{background:var(--brand-primary);transform:translateY(-2px)}.dynamic-service-card:hover h3{color:#fff}.dynamic-service-card:hover p{color:rgba(255,255,255,.7)}
.block-bg-dark .dynamic-service-grid,.block-bg-brand .dynamic-service-grid{border-color:rgba(255,255,255,.13);background:rgba(255,255,255,.13)}

.dynamic-testimonials{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.dynamic-testimonials blockquote{margin:0;background:#fff;border:1px solid var(--brand-border);padding:30px;min-height:245px}.dynamic-testimonials .stars{color:var(--brand-accent);letter-spacing:.08em}.dynamic-testimonials p{font-size:.93rem;line-height:1.75;color:var(--brand-body);margin:28px 0}.dynamic-testimonials strong{font-size:.76rem;color:var(--brand-heading)}.dynamic-testimonials strong+span{display:block;margin-top:5px;font-size:.76rem;color:var(--brand-muted)}
.block-bg-dark .dynamic-testimonials blockquote,.block-bg-brand .dynamic-testimonials blockquote{background:rgba(255,255,255,.055);border-color:rgba(255,255,255,.14)}.block-bg-dark .dynamic-testimonials p,.block-bg-brand .dynamic-testimonials p{color:rgba(255,255,255,.8)}.block-bg-dark .dynamic-testimonials strong,.block-bg-brand .dynamic-testimonials strong{color:#fff}.block-bg-dark .dynamic-testimonials strong+span,.block-bg-brand .dynamic-testimonials strong+span{color:rgba(255,255,255,.62)}

.block-faq-layout{display:grid;grid-template-columns:.75fr 1.25fr;gap:70px;align-items:start}
.block-faq-intro{position:sticky;top:130px}.block-faq-intro h2{margin-top:0}.block-faq-intro .prose{margin-top:24px;max-width:650px}.block-faq-intro .prose p{margin:0;color:var(--brand-muted);font-size:.94rem;line-height:1.78}
.block-faq-layout--centered{display:block}.block-faq-layout--centered .block-faq-intro{position:static;max-width:820px;margin:0 auto clamp(38px,5vw,64px);text-align:center}.block-faq-layout--centered .block-faq-intro .prose{margin-left:auto;margin-right:auto}.block-faq-layout--centered .faq-list{max-width:980px;margin-left:auto;margin-right:auto}

.dynamic-areas{display:flex;flex-wrap:wrap;gap:8px}.dynamic-areas span{border:1px solid var(--brand-border);background:#fff;padding:10px 13px;font-size:.74rem;font-weight:800;color:var(--brand-heading)}.dynamic-areas span::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--brand-accent);margin-right:8px}
.block-bg-dark .dynamic-areas span,.block-bg-brand .dynamic-areas span{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.14);color:#fff}

.dynamic-contact{display:flex;align-items:center;justify-content:space-between;gap:50px}.dynamic-contact>div:first-child{max-width:720px}.dynamic-contact p{font-size:.95rem;line-height:1.7;max-width:600px}.dynamic-contact-actions{display:flex;gap:8px;flex-wrap:wrap}

.custom-cta{padding:clamp(78px,9vw,130px) 0}.custom-cta-inner{display:flex;align-items:center;justify-content:space-between;gap:55px}.custom-cta-inner>div{max-width:720px}.custom-cta p{font-size:.95rem;line-height:1.7;max-width:620px}.block-bg-brand.custom-cta{background:var(--brand-primary);position:relative;overflow:hidden}.block-bg-brand.custom-cta::after{content:"";position:absolute;right:-180px;top:-230px;width:560px;height:560px;border-radius:50%;background:var(--brand-accent);opacity:.1}

/* V2.16.33 — Pricing / Plans + Custom HTML page-builder blocks */
.pricing-block-heading .prose{margin-top:18px;max-width:700px}.pricing-block-heading .prose p{margin:0;color:var(--brand-muted);line-height:1.75}
.block-bg-dark .pricing-block-heading .prose p,.block-bg-brand .pricing-block-heading .prose p{color:rgba(255,255,255,.74)}
.pricing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:16px;align-items:stretch}
.pricing-card{--plan-accent:var(--brand-accent);position:relative;display:flex;flex-direction:column;background:#fff;border:1px solid var(--brand-border);padding:32px;min-width:0;box-shadow:0 18px 50px color-mix(in srgb,var(--brand-dark) 7%,transparent)}
.pricing-card--highlighted{border-top:5px solid var(--plan-accent);padding-top:27px}.pricing-badge{position:absolute;right:22px;top:18px;background:var(--plan-accent);color:#fff;padding:6px 9px;font-size:.64rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase}
.pricing-card-head h3{margin:0 0 20px;color:var(--brand-heading);font-size:1.25rem}.pricing-price{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}.pricing-price strong{color:var(--brand-heading);font-size:clamp(2.35rem,4vw,3.4rem);letter-spacing:-.055em;line-height:1}.pricing-prefix,.pricing-suffix{color:var(--brand-muted);font-size:.76rem;font-weight:800}.pricing-card-head>p{color:var(--brand-muted);font-size:.86rem;line-height:1.68;margin:18px 0 0}
.pricing-features{list-style:none;padding:0;margin:28px 0 30px;display:grid;gap:11px}.pricing-feature{display:grid;grid-template-columns:22px 1fr;gap:9px;align-items:start;color:var(--brand-body);font-size:.82rem;line-height:1.5}.pricing-feature>span:first-child{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:color-mix(in srgb,var(--plan-accent) 12%,#fff);color:var(--plan-accent);font-weight:950}.pricing-feature--excluded{opacity:.48}.pricing-feature--neutral>span:first-child{background:transparent;border:1px solid var(--brand-border)}
.pricing-card-footer{margin-top:auto}.pricing-card-cta{width:100%}.pricing-card-footer small{display:block;margin-top:12px;color:var(--brand-muted);font-size:.7rem;line-height:1.5}.pricing-section-footer{display:flex;align-items:center;justify-content:space-between;gap:30px;margin-top:30px;padding-top:24px;border-top:1px solid var(--brand-border)}.pricing-section-footer .prose{max-width:760px}.pricing-section-footer .prose p{margin:0;color:var(--brand-muted);font-size:.8rem;line-height:1.65}
.block-bg-dark .pricing-card,.block-bg-brand .pricing-card{background:color-mix(in srgb,var(--brand-dark) 86%,#fff 5%);border-color:rgba(255,255,255,.14)}.block-bg-dark .pricing-card h3,.block-bg-brand .pricing-card h3,.block-bg-dark .pricing-price strong,.block-bg-brand .pricing-price strong{color:#fff}.block-bg-dark .pricing-card p,.block-bg-brand .pricing-card p,.block-bg-dark .pricing-prefix,.block-bg-brand .pricing-prefix,.block-bg-dark .pricing-suffix,.block-bg-brand .pricing-suffix,.block-bg-dark .pricing-feature,.block-bg-brand .pricing-feature,.block-bg-dark .pricing-card-footer small,.block-bg-brand .pricing-card-footer small,.block-bg-dark .pricing-section-footer .prose p,.block-bg-brand .pricing-section-footer .prose p{color:rgba(255,255,255,.72)}.block-bg-dark .pricing-section-footer,.block-bg-brand .pricing-section-footer{border-color:rgba(255,255,255,.14)}
.custom-html-spacing--compact{padding-top:44px;padding-bottom:44px}.custom-html-spacing--normal{padding-top:clamp(72px,8vw,118px);padding-bottom:clamp(72px,8vw,118px)}.custom-html-spacing--spacious{padding-top:clamp(96px,11vw,160px);padding-bottom:clamp(96px,11vw,160px)}
.custom-html-inner--standard{max-width:960px}.custom-html-inner--wide{max-width:1320px}.custom-html-inner--full{width:100%;max-width:none}.custom-html-heading{margin-bottom:clamp(42px,4vw,64px)}.custom-html-heading .prose{margin-top:26px;max-width:700px}.custom-html-heading .prose p{margin:0;color:var(--brand-muted);line-height:1.75}.block-bg-dark .custom-html-heading .prose p,.block-bg-brand .custom-html-heading .prose p{color:rgba(255,255,255,.74)}.custom-html-align--left .custom-html-heading{margin-left:0;margin-right:auto;text-align:left}.custom-html-align--left .custom-html-heading .prose{margin-left:0;margin-right:auto}.custom-html-align--center .custom-html-heading{margin-left:auto;margin-right:auto;text-align:center}.custom-html-align--center .custom-html-heading .prose{margin-left:auto;margin-right:auto}.custom-html-align--right .custom-html-heading{margin-left:auto;margin-right:0;text-align:right}.custom-html-align--right .custom-html-heading .prose{margin-left:auto;margin-right:0}.custom-html-output{max-width:100%;overflow-x:auto;overflow-y:visible;overflow-wrap:anywhere}.custom-html-cta{display:flex;margin-top:clamp(32px,4vw,48px)}.custom-html-align--left .custom-html-cta{justify-content:flex-start}.custom-html-align--center .custom-html-cta{justify-content:center}.custom-html-align--right .custom-html-cta{justify-content:flex-end}.custom-html-output .tb-table-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.custom-html-output table.tb-table{width:100%;border-collapse:collapse;min-width:620px}.custom-html-output .tb-table th,.custom-html-output .tb-table td{padding:14px 16px;border:1px solid var(--brand-border);text-align:left;vertical-align:top}.custom-html-output .tb-table th{background:color-mix(in srgb,var(--brand-primary) 8%,#fff);color:var(--brand-heading);font-weight:850}.custom-html-output .tb-table tbody tr:nth-child(even){background:color-mix(in srgb,var(--brand-light) 45%,#fff)}

@media(max-width:980px){
  .block-text-image{grid-template-columns:1fr;gap:38px}.block-text-image.block-image-left .block-copy,.block-text-image.block-image-left .block-media{order:initial}.block-media{min-height:360px}.block-media img{min-height:360px}
  .benefit-grid,.dynamic-service-grid,.dynamic-testimonials{grid-template-columns:repeat(2,minmax(0,1fr))}
  .process-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.process-step:nth-child(2){border-right:0}.process-step:nth-child(-n+2){border-bottom:1px solid var(--brand-border)}
  .stats-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.stats-strip>div:nth-child(2){border-right:0}.stats-strip>div:nth-child(-n+2){border-bottom:1px solid var(--brand-border)}
  .block-faq-layout{grid-template-columns:1fr;gap:34px}.block-faq-intro{position:static}
  .dynamic-contact,.custom-cta-inner{align-items:flex-start;flex-direction:column}
}
@media(max-width:620px){
  .page-block{padding:68px 0}.benefit-grid,.dynamic-service-grid,.dynamic-testimonials,.process-grid,.stats-strip{grid-template-columns:1fr}
  .process-step,.process-step:nth-child(2),.stats-strip>div,.stats-strip>div:nth-child(2){border-right:0}.process-step,.stats-strip>div{border-bottom:1px solid var(--brand-border)}.process-step:last-child,.stats-strip>div:last-child{border-bottom:0}
  .custom-gallery{display:grid;grid-template-columns:1fr}.custom-gallery figure:nth-child(n){grid-column:auto;min-height:230px}.custom-gallery img{min-height:230px}
  .block-media,.block-media img{min-height:300px}.block-media::before{left:-10px;bottom:-10px}
  .dynamic-contact-actions{width:100%;flex-direction:column}.dynamic-contact-actions .btn,.custom-cta .btn{width:100%}
}


/* ==========================================================
   V1.4 Image Frame System
   10 controlled responsive media-frame designs
   ========================================================== */
.tb-image-frame{
  position:relative;
  width:100%;
  isolation:isolate;
  color:var(--brand-accent);
  overflow:visible;
}
.tb-image-frame-surface{
  position:relative;
  width:100%;
  height:100%;
  overflow:hidden;
  background:color-mix(in srgb,var(--brand-light) 84%,#fff);
  transform:translateZ(0);
}
.tb-image-frame-surface img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
}
.tb-frame--shadow .tb-image-frame-surface{
  filter:drop-shadow(0 24px 28px color-mix(in srgb,var(--brand-dark) 18%,transparent));
}
.tb-frame-decoration{
  position:absolute;
  z-index:-1;
  color:var(--brand-accent);
  pointer-events:none;
  overflow:visible;
}
.tb-frame-decoration--corner{width:142px;height:142px;right:-22px;bottom:-22px}
.tb-frame-decoration--curve{width:150px;height:150px;right:-29px;bottom:-22px}
.tb-frame-decoration--angle{width:152px;height:120px;right:-26px;bottom:-20px}

/* 01 Clean Edge */
.tb-frame--clean .tb-image-frame-surface{border-radius:0}

/* 02 Soft Radius */
.tb-frame--soft .tb-image-frame-surface{border-radius:24px}

/* 03 Offset Corners */
.tb-frame--offset .tb-image-frame-surface{border-radius:42px 8px 42px 8px}

/* 04 Architectural Arch */
.tb-frame--arch .tb-image-frame-surface{border-radius:48% 48% 18px 18px / 34% 34% 18px 18px}

/* 05 Cut Corners */
.tb-frame--cut .tb-image-frame-surface{
  clip-path:polygon(7% 0,93% 0,100% 8%,100% 92%,93% 100%,7% 100%,0 92%,0 8%);
}

/* 06 Diagonal Edge */
.tb-frame--diagonal .tb-image-frame-surface{
  clip-path:polygon(0 7%,100% 0,100% 93%,0 100%);
}

/* 07 Editorial Notch */
.tb-frame--notch .tb-image-frame-surface{
  clip-path:polygon(0 0,87% 0,87% 10%,100% 10%,100% 100%,0 100%);
}

/* 08 Organic Curve */
.tb-frame--organic .tb-image-frame-surface{
  border-radius:46% 54% 38% 62% / 34% 42% 58% 66%;
}

/* 09 Modern Capsule */
.tb-frame--capsule .tb-image-frame-surface{
  border-radius:120px 18px 120px 18px;
}

/* 10 Opposing Curves */
.tb-frame--scoop .tb-image-frame-surface{
  border-radius:0 78px 0 78px;
}

/* Existing template surfaces using the new frame component. */
.media-frame{
  min-height:550px;
  background:none!important;
  box-shadow:none!important;
}
.media-frame::before,.media-frame::after{display:none!important}
.media-frame .tb-image-frame-surface{position:absolute;inset:0}
.home-premium .media-frame{
  min-height:650px;
  box-shadow:none!important;
  background:none!important;
}
.home-premium .media-frame::before,.home-premium .media-frame::after{display:none!important}

.service-content-frame{aspect-ratio:4/3}
.service-media>.tb-image-frame{width:100%}
.service-media>.tb-image-frame img{aspect-ratio:auto}
.service-media>img{display:none}

.block-media>.dynamic-content-frame{height:100%;min-height:440px}
.dynamic-content-frame .tb-image-frame-surface{position:absolute;inset:0}

/* Frame accents should sit behind media, never over text or interactive UI. */
.about-media-wrap,.block-media,.service-media{isolation:isolate}

/* Shape-specific accent alignment. */
.tb-frame--arch .tb-frame-decoration--curve,
.tb-frame--organic .tb-frame-decoration--curve{right:-18px;bottom:-16px}
.tb-frame--capsule .tb-frame-decoration--curve,
.tb-frame--scoop .tb-frame-decoration--curve{right:-28px;bottom:-18px}
.tb-frame--diagonal .tb-frame-decoration--angle{right:-18px}
.tb-frame--notch .tb-frame-decoration--angle{right:-14px;bottom:-14px}

/* Hover depth is restrained and only affects content frames. */
.tb-image-frame .tb-image-frame-surface{
  transition:transform .32s ease,filter .32s ease;
}
.tb-image-frame:hover .tb-image-frame-surface{transform:translateY(-2px)}
@media(prefers-reduced-motion:reduce){
  .tb-image-frame .tb-image-frame-surface{transition:none!important;transform:none!important}
}

@media(max-width:900px){
  .media-frame,.home-premium .media-frame{min-height:520px}
  .tb-frame-decoration--corner{width:112px;height:112px;right:-15px;bottom:-15px}
  .tb-frame-decoration--curve{width:122px;height:122px;right:-17px;bottom:-14px}
  .tb-frame-decoration--angle{width:124px;height:98px;right:-16px;bottom:-14px}
  .tb-frame--offset .tb-image-frame-surface{border-radius:34px 7px 34px 7px}
  .tb-frame--capsule .tb-image-frame-surface{border-radius:92px 16px 92px 16px}
}
@media(max-width:620px){
  .media-frame,.home-premium .media-frame{min-height:390px}
  .block-media>.dynamic-content-frame{min-height:320px}
  .tb-frame--soft .tb-image-frame-surface{border-radius:18px}
  .tb-frame--offset .tb-image-frame-surface{border-radius:28px 6px 28px 6px}
  .tb-frame--arch .tb-image-frame-surface{border-radius:46% 46% 14px 14px / 28% 28% 14px 14px}
  .tb-frame--capsule .tb-image-frame-surface{border-radius:72px 14px 72px 14px}
  .tb-frame--scoop .tb-image-frame-surface{border-radius:0 54px 0 54px}
  .tb-frame-decoration--corner{width:88px;height:88px;right:-10px;bottom:-10px}
  .tb-frame-decoration--curve{width:94px;height:94px;right:-12px;bottom:-10px}
  .tb-frame-decoration--angle{width:98px;height:78px;right:-11px;bottom:-10px}
}


/* Image-frame refinement after rendered QA */
.block-media:has(.tb-image-frame)::before{display:none!important}
.tb-frame-decoration--curve{width:166px;height:166px;right:-48px;bottom:-45px}
.tb-frame--arch .tb-frame-decoration--curve,
.tb-frame--organic .tb-frame-decoration--curve{right:-42px;bottom:-38px}
.tb-frame--capsule .tb-frame-decoration--curve,
.tb-frame--scoop .tb-frame-decoration--curve{right:-48px;bottom:-42px}
@media(max-width:620px){
  .tb-frame-decoration--curve{width:106px;height:106px;right:-28px;bottom:-25px}
  .tb-frame--arch .tb-frame-decoration--curve,
  .tb-frame--organic .tb-frame-decoration--curve,
  .tb-frame--capsule .tb-frame-decoration--curve,
  .tb-frame--scoop .tb-frame-decoration--curve{right:-25px;bottom:-22px}
}

/* SVG accent visibility tuning */
.tb-frame--soft .tb-frame-decoration--curve,
.tb-frame--capsule .tb-frame-decoration--curve,
.tb-frame--scoop .tb-frame-decoration--curve{right:-68px;bottom:-58px}
.tb-frame--arch .tb-frame-decoration--curve,
.tb-frame--organic .tb-frame-decoration--curve{right:-55px;bottom:-48px}
.tb-frame--cut .tb-frame-decoration--angle,
.tb-frame--diagonal .tb-frame-decoration--angle,
.tb-frame--notch .tb-frame-decoration--angle{right:-48px;bottom:-30px}
@media(max-width:620px){
  .tb-frame--soft .tb-frame-decoration--curve,
  .tb-frame--capsule .tb-frame-decoration--curve,
  .tb-frame--scoop .tb-frame-decoration--curve{right:-38px;bottom:-34px}
  .tb-frame--arch .tb-frame-decoration--curve,
  .tb-frame--organic .tb-frame-decoration--curve{right:-31px;bottom:-28px}
  .tb-frame--cut .tb-frame-decoration--angle,
  .tb-frame--diagonal .tb-frame-decoration--angle,
  .tb-frame--notch .tb-frame-decoration--angle{right:-30px;bottom:-22px}
}


/* ==========================================================
   V1.5.1 Layout & Content Flexibility
   ========================================================== */

/* Desktop navigation layout presets. Mobile falls back to the existing stable menu. */
@media(min-width:981px){
  .header--layout-balanced .header-inner{
    display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;
  }
  .header--layout-balanced .nav{justify-self:center}
  .header--layout-balanced .header-cta{justify-self:end}

  .header--layout-left-cluster .header-inner{justify-content:flex-start}
  .header--layout-left-cluster .nav{margin-left:18px;margin-right:auto}
  .header--layout-left-cluster .header-cta{margin-left:auto}

  .header--layout-right-cluster .header-inner{justify-content:flex-start}
  .header--layout-right-cluster .nav{margin-left:auto}
  .header--layout-right-cluster .header-cta{margin-left:14px}

  .header--layout-centered-stack .header-inner{
    height:auto;min-height:126px;padding:14px 0 12px;
    display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:auto auto;
    row-gap:10px;column-gap:24px;
  }
  .header--layout-centered-stack .brand-link{grid-column:2;grid-row:1;justify-self:center}
  .header--layout-centered-stack .header-cta{grid-column:3;grid-row:1;justify-self:end}
  .header--layout-centered-stack .nav{grid-column:1/-1;grid-row:2;justify-self:center}
}

/* Full-Bleed parallax: JS supplies the slow translate, scale prevents edge gaps. */
.hero--full-bleed[data-motion="on"][data-parallax="on"]>.hero-bg{
  will-change:transform;
  transform:scale(1.06);
}
.hero--full-bleed[data-motion="on"][data-parallax="on"]>.hero-bg::after{
  transform:none;
}

/* About internal page */
.stats--about.stats--count-1{grid-template-columns:1fr;max-width:520px;margin-left:auto;margin-right:auto}
.stats--about.stats--count-2{grid-template-columns:repeat(2,1fr)}
.stats--about.stats--count-3{grid-template-columns:repeat(3,1fr)}
.about-extra-grid{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.95fr);
  gap:clamp(44px,7vw,92px);align-items:center
}
.about-extra-grid--image-left .about-extra-copy{order:2}
.about-extra-grid--image-left .about-extra-media{order:1}
.about-extra-grid--text-only{grid-template-columns:minmax(0,820px);justify-content:start}
.about-extra .about-extra-copy>h2{max-width:760px}
.about-extra.section-dark .about-extra-copy h2{color:#fff}
.about-extra.section-dark .about-extra-copy .prose p{color:rgba(255,255,255,.76)}

/* Footer social links and optional intro strip */
.footer--no-intro .footer-grid{padding-top:72px}
.footer-socials{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin-top:24px}
.footer-socials a{
  width:38px;height:38px;padding:0!important;display:grid!important;place-items:center;
  border:1px solid rgba(255,255,255,.14);color:#d7e0e6!important;
  transition:transform .18s ease,border-color .18s ease,color .18s ease,background .18s ease!important
}
.footer-socials a:hover{
  padding-left:0!important;transform:translateY(-2px);
  border-color:var(--brand-accent);background:var(--brand-accent);
  color:var(--brand-accent-contrast)!important
}
.social-icon{width:18px;height:18px;display:block}

/* Contact details: consistent icon geometry + real address */
.contact-details{margin-top:28px;display:grid;gap:12px}
.contact-card .contact-detail{
  display:grid;grid-template-columns:28px minmax(0,1fr);align-items:start;gap:12px;
  margin:0;padding:7px 0;color:#fff;font-weight:780
}
.contact-card .contact-detail--address{color:#c1cfda;font-weight:500}
.contact-card .contact-detail address{font-style:normal;line-height:1.6}
.contact-icon-wrap{
  width:26px;height:26px;display:grid;place-items:center;color:var(--brand-accent);margin-top:1px
}
.contact-icon{display:block;flex:none}
/* Optical normalisation: each glyph occupies a comparable visual area, not merely the same SVG box. */
.contact-icon--phone{width:25px;height:25px}
.contact-icon--email{width:21px;height:21px}
.contact-icon--pin{width:24px;height:24px}
.contact-icon--clock{width:24px;height:24px}
.contact-icon--whatsapp{width:20px;height:20px}

/* Give the enquiry form a subtle premium lift. */
.form-card{
  box-shadow:0 22px 60px color-mix(in srgb,var(--brand-primary) 10%,transparent);
  border:1px solid color-mix(in srgb,var(--brand-border) 88%,transparent)
}

/* Optional grayscale Google map with a palette-owned pin. */
.contact-map-block{grid-column:1/-1;margin-top:54px}
.contact-map-copy{
  display:flex;justify-content:space-between;align-items:end;gap:28px;margin-bottom:18px
}
.contact-map-copy p{color:var(--brand-muted);max-width:690px}
.contact-map{position:relative;height:430px;overflow:hidden;background:#e6e8e9;border:1px solid var(--brand-border)}
.contact-map iframe{
  width:100%;height:100%;border:0;display:block;filter:grayscale(1) saturate(0) contrast(.92) brightness(1.03);
  pointer-events:none
}
.contact-map-pin{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-62%) rotate(-45deg);
  width:58px;height:58px;display:grid;place-items:center;border-radius:50% 50% 50% 0;
  background:var(--brand-accent);color:var(--brand-accent-contrast);
  box-shadow:0 12px 30px rgba(0,0,0,.18)
}
.contact-map-pin .map-pin-icon{width:26px;height:26px;transform:rotate(45deg)}

/* Count-aware service grids. 4 becomes a deliberate 2x2; 5 becomes 3 + centred 2. */
.services--count-1{grid-template-columns:minmax(0,520px)!important;justify-content:center}
.services--count-2{grid-template-columns:repeat(2,minmax(0,1fr))!important;max-width:930px;margin-left:auto;margin-right:auto}
.services--count-4{grid-template-columns:repeat(2,minmax(0,1fr))!important;max-width:980px;margin-left:auto;margin-right:auto}
.services--count-5{grid-template-columns:repeat(6,minmax(0,1fr))!important}
.services--count-5>.service-card{grid-column:span 2}
.services--count-5>.service-card:nth-child(4){grid-column:2/span 2}
.services--count-5>.service-card:nth-child(5){grid-column:4/span 2}

/* Keep service grids intentional on tablet/mobile regardless of service count. */
@media(max-width:980px){
  .services--count-1,.services--count-2,.services--count-3,.services--count-4,.services--count-5,.services--count-6{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;max-width:none
  }
  .services--count-5>.service-card,.services--count-5>.service-card:nth-child(4),.services--count-5>.service-card:nth-child(5){
    grid-column:auto
  }
  .about-extra-grid{grid-template-columns:1fr}
  .about-extra-grid--image-left .about-extra-copy,.about-extra-grid--image-left .about-extra-media{order:initial}
}
@media(max-width:680px){
  .services--count-1,.services--count-2,.services--count-3,.services--count-4,.services--count-5,.services--count-6{
    grid-template-columns:1fr!important
  }
  .contact-map{height:330px}
  .contact-map-copy{display:block}.contact-map-copy .text-link{display:inline-block;margin-top:16px}
  .footer--no-intro .footer-grid{padding-top:50px}
}
@media(prefers-reduced-motion:reduce){
  .hero--full-bleed[data-motion="on"][data-parallax="on"]>.hero-bg{transform:none!important}
}


/* ==========================================================
   V1.5.2 Map, Navigation & Motion Polish
   ========================================================== */

/* One controlled size for desktop nav labels and the header CTA. */
.nav,
.header-cta{
  font-size:var(--nav-font-size,15px)!important;
}
.nav .submenu a{
  font-size:calc(var(--nav-font-size,15px) - 1px)!important;
}
.nav,
.nav>a,
.nav-parent>a,
.submenu-toggle,
.nav .submenu a{
  font-weight:var(--nav-font-weight,750)!important;
}
@media(max-width:980px){
  .nav{font-size:var(--nav-font-size,15px)!important}
  .nav .submenu a{font-size:calc(var(--nav-font-size,15px) - 1px)!important}
}

/* Stronger premium parallax needs additional image overscan. */
.hero--full-bleed[data-motion="on"][data-parallax="on"]>.hero-bg{
  transform:scale(1.20);
}

/* Map is now outside the normal content container, so it naturally spans
   the complete page width while its heading remains aligned to the site grid. */
.contact-map-block{
  margin-top:64px;
  width:100%;
}
.contact-map-copy{
  padding-top:4px;
}
.contact-map{
  height:500px;
  width:100%;
  border-left:0;
  border-right:0;
}

/* Footer socket credit */
.footer-credit-line{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:9px 14px;
}
.toolbelt-credit{
  color:#aebdc7!important;
  text-decoration:none;
  position:relative;
  padding-left:14px;
  transition:color .18s ease;
}
.toolbelt-credit::before{
  content:"";
  position:absolute;
  left:0;
  top:50%;
  width:3px;
  height:3px;
  border-radius:50%;
  background:var(--brand-accent);
  transform:translateY(-50%);
}
.toolbelt-credit:hover{color:#fff!important}

@media(max-width:680px){
  .contact-map{height:360px}
  .footer-credit-line{display:block}
  .toolbelt-credit{display:inline-block;margin-top:8px;padding-left:0}
  .toolbelt-credit::before{display:none}
}


/* ==========================================================
   V1.5.3 Header, Map & Motion Controls
   ========================================================== */

/* Apply the CMS navigation size directly to every relevant control rather than
   relying on inheritance. This also overrides older premium-template rules. */
.nav,
.nav>a,
.nav-parent>a,
.submenu-toggle,
.header-cta{
  font-size:var(--nav-font-size,15px)!important;
}
.submenu a{
  font-size:calc(var(--nav-font-size,15px) - 1px)!important;
}

/* Standard header can now be sticky or normal-flow. */
.header--style-standard.header--sticky{position:sticky;top:0}
.header--style-standard.header--static{position:relative;top:auto}

/* Transparent and glass headers overlay the hero at the top of the page. */
.header--style-transparent,
.header--style-glass{
  position:absolute;
  top:38px;
  left:0;
  right:0;
  z-index:50;
  box-shadow:none;
  border-bottom-color:rgba(255,255,255,.12);
}
.header--style-transparent{
  background:transparent;
  backdrop-filter:none;
}
.header--style-glass{
  background:rgba(7,25,40,.34);
  backdrop-filter:blur(18px) saturate(125%);
  -webkit-backdrop-filter:blur(18px) saturate(125%);
}

/* White navigation treatment while sitting over hero imagery. */
.header--style-transparent:not(.header-scrolled) .nav,
.header--style-glass:not(.header-scrolled) .nav,
.header--style-transparent:not(.header-scrolled) .nav>a,
.header--style-glass:not(.header-scrolled) .nav>a,
.header--style-transparent:not(.header-scrolled) .nav-parent>a,
.header--style-glass:not(.header-scrolled) .nav-parent>a,
.header--style-transparent:not(.header-scrolled) .submenu-toggle,
.header--style-glass:not(.header-scrolled) .submenu-toggle,
.header--style-transparent:not(.header-scrolled) .brand,
.header--style-glass:not(.header-scrolled) .brand{
  color:#fff;
}
.header--style-transparent:not(.header-scrolled) .brand-logo img,
.header--style-glass:not(.header-scrolled) .brand-logo img{
  filter:brightness(0) invert(1);
}
.header--style-transparent:not(.header-scrolled) .mobile-menu::before,
.header--style-transparent:not(.header-scrolled) .mobile-menu::after,
.header--style-transparent:not(.header-scrolled) .mobile-menu span,
.header--style-glass:not(.header-scrolled) .mobile-menu::before,
.header--style-glass:not(.header-scrolled) .mobile-menu::after,
.header--style-glass:not(.header-scrolled) .mobile-menu span{
  background:#fff;
}

/* When sticky, transparent/glass transition into the existing premium white header. */
.header--style-transparent.header--sticky.header-scrolled,
.header--style-glass.header--sticky.header-scrolled{
  position:fixed;
  top:0;
  left:0;
  right:0;
  background:rgba(255,255,255,.97);
  border-bottom-color:rgba(16,43,69,.07);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  box-shadow:0 10px 32px rgba(7,24,38,.10);
}
.header--style-transparent.header--sticky.header-scrolled .nav,
.header--style-glass.header--sticky.header-scrolled .nav,
.header--style-transparent.header--sticky.header-scrolled .nav>a,
.header--style-glass.header--sticky.header-scrolled .nav>a,
.header--style-transparent.header--sticky.header-scrolled .nav-parent>a,
.header--style-glass.header--sticky.header-scrolled .nav-parent>a,
.header--style-transparent.header--sticky.header-scrolled .submenu-toggle,
.header--style-glass.header--sticky.header-scrolled .submenu-toggle,
.header--style-transparent.header--sticky.header-scrolled .brand,
.header--style-glass.header--sticky.header-scrolled .brand{
  color:var(--brand-body);
}
.header--style-transparent.header--sticky.header-scrolled .brand-logo img,
.header--style-glass.header--sticky.header-scrolled .brand-logo img{
  filter:none;
}

/* Non-sticky transparent/glass headers simply scroll away in their hero state. */
.header--style-transparent.header--static,
.header--style-glass.header--static{
  position:absolute;
  top:38px;
}
.header--style-transparent.header--static.header-scrolled,
.header--style-glass.header--static.header-scrolled{
  background:inherit;
  box-shadow:none;
}

/* Dropdown panels remain light even while the parent header is transparent. */
.header--style-transparent .submenu,
.header--style-glass .submenu{
  color:var(--brand-body);
}
.header--style-transparent .submenu a,
.header--style-glass .submenu a{
  color:var(--brand-body)!important;
}

/* Parallax overscan is controlled by JS according to the selected strength. */
.hero--full-bleed[data-motion="on"][data-parallax="on"]>.hero-bg{
  transform-origin:center center;
  backface-visibility:hidden;
}

/* Footer credit stays on the copyright line on desktop. */
.footer-credit-line{
  display:inline-flex!important;
  align-items:center;
  flex-wrap:nowrap;
  gap:8px;
  white-space:nowrap;
}
.footer-credit-separator{color:rgba(255,255,255,.34)}
.footer .toolbelt-credit{
  display:inline!important;
  padding:0!important;
  margin:0!important;
  color:#aebdc7!important;
}
.footer .toolbelt-credit::before{display:none!important}

/* Full-width map retains the page-grid-aligned heading. */
.contact-map-block{width:100%;overflow:hidden}
.contact-map{width:100%}

/* Mobile menu remains readable with transparent/glass headers. */
@media(max-width:980px){
  .header--style-transparent:not(.header-scrolled) .nav.open,
  .header--style-glass:not(.header-scrolled) .nav.open{
    color:var(--brand-body);
    background:#fff;
  }
  .header--style-transparent:not(.header-scrolled) .nav.open>a,
  .header--style-glass:not(.header-scrolled) .nav.open>a,
  .header--style-transparent:not(.header-scrolled) .nav.open .nav-parent>a,
  .header--style-glass:not(.header-scrolled) .nav.open .nav-parent>a,
  .header--style-transparent:not(.header-scrolled) .nav.open .submenu-toggle,
  .header--style-glass:not(.header-scrolled) .nav.open .submenu-toggle{
    color:var(--brand-body);
  }
}
@media(max-width:680px){
  .footer-credit-line{white-space:normal;flex-wrap:wrap}
}

/* The no-key map fallback also receives a small visual scale adjustment so
   the CMS zoom control remains visibly responsive even if the legacy Google
   endpoint chooses to soften/ignore its z parameter. */
.contact-map--fallback iframe{
  width:calc(100% / var(--fallback-map-scale,1));
  height:calc(100% / var(--fallback-map-scale,1));
  min-width:100%;
  min-height:100%;
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%) scale(var(--fallback-map-scale,1));
  transform-origin:center center;
}


/* ==========================================================
   V1.5.4 Mobile Hero, Header & Visual Variety
   ========================================================== */

/* Mobile full-bleed hero: move content higher and guarantee long trade words fit. */
@media(max-width:680px){
  .home-premium .hero--full-bleed{
    min-height:0;
  }
  .home-premium .hero--full-bleed .hero-copy{
    width:100%;
    max-width:100%;
    padding:215px 0 44px;
  }
  .home-premium .hero--full-bleed .hero-copy .eyebrow{
    margin-bottom:18px;
  }
  .home-premium .hero--full-bleed h1{
    max-width:100%;
    font-size:clamp(2.55rem,11.8vw,3.65rem);
    line-height:max(1,var(--hero-heading-line-height,.98));
    letter-spacing:max(-.035em,var(--hero-heading-letter-spacing,-.04em));
    overflow-wrap:anywhere;
    text-wrap:balance;
  }
  .home-premium .hero--full-bleed h1 span{
    display:block;
    margin-top:.03em;
  }
  .home-premium .hero--full-bleed .hero-copy>p{
    max-width:100%;
  }
}
@media(max-width:390px){
  .home-premium .hero--full-bleed .hero-copy{padding-top:200px}
  .home-premium .hero--full-bleed h1{font-size:clamp(2.4rem,11.5vw,3.25rem)}
}

/* Header border can be retained or removed without changing header height. */
.header--border{border-bottom-color:rgba(255,255,255,.12)}
.header--style-standard.header--border{border-bottom-color:var(--brand-border)}
.header--no-border{border-bottom-color:transparent!important}

/* Slow, premium header state transition. */
.header,
.header .header-inner,
.header .brand,
.header .brand-logo img,
.header .nav,
.header .nav>a,
.header .nav-parent>a,
.header .submenu-toggle,
.header .header-cta,
.header .mobile-menu,
.header .mobile-menu::before,
.header .mobile-menu::after,
.header .mobile-menu span{
  transition:
    background-color .78s cubic-bezier(.22,.61,.36,1),
    color .68s cubic-bezier(.22,.61,.36,1),
    border-color .68s cubic-bezier(.22,.61,.36,1),
    box-shadow .78s cubic-bezier(.22,.61,.36,1),
    filter .68s cubic-bezier(.22,.61,.36,1),
    opacity .68s cubic-bezier(.22,.61,.36,1);
}

/* No-key coordinate map: preserve exact Google q/ll/z and add visible crop scaling
   so the CMS zoom control still has an obvious visual result. */
.contact-map--coordinates iframe{
  width:calc(100% / var(--coordinate-map-scale,1));
  height:calc(100% / var(--coordinate-map-scale,1));
  min-width:100%;
  min-height:100%;
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%) scale(var(--coordinate-map-scale,1));
  transform-origin:center center;
}
.contact-map--setup{
  display:grid;
  place-items:center;
  min-height:390px;
  background:
    linear-gradient(rgba(255,255,255,.62),rgba(255,255,255,.62)),
    repeating-linear-gradient(0deg,transparent 0 31px,color-mix(in srgb,var(--brand-primary) 8%,transparent) 31px 32px),
    repeating-linear-gradient(90deg,transparent 0 31px,color-mix(in srgb,var(--brand-primary) 8%,transparent) 31px 32px),
    color-mix(in srgb,var(--brand-light) 88%,#fff);
}
.contact-map-setup-inner{
  width:min(560px,calc(100% - 40px));
  text-align:center;
  padding:36px;
}
.contact-map-setup-pin{
  width:56px;height:56px;margin:0 auto 18px;
  display:grid;place-items:center;
  background:var(--brand-accent);
  color:var(--brand-accent-contrast);
  border-radius:50%;
}
.contact-map-setup-pin svg{width:25px;height:25px}
.contact-map-setup-inner strong{
  display:block;
  color:var(--brand-heading);
  font-size:1.35rem;
}
.contact-map-setup-inner p{
  margin-top:10px;
  color:var(--brand-body);
}
.contact-map-setup-inner span{
  display:block;
  margin-top:10px;
  color:var(--brand-muted);
  font-size:.84rem;
  line-height:1.6;
}

/* Final CTA controlled abstract-pattern library */
.cta--premium{
  --cta-pattern-line:color-mix(in srgb,var(--brand-primary) 14%,transparent);
  --cta-pattern-accent:color-mix(in srgb,var(--brand-accent) 18%,transparent);
}
.cta-pattern--none::before,
.cta-pattern--none::after,
.cta-pattern--none .cta-graphic{display:none!important}

.cta-pattern--rings::before{
  border-radius:50%;
}
.cta-pattern--rings::after{
  border-radius:50%;
}
.cta-pattern--rings .cta-graphic{
  display:block;
  transform:translateY(-50%) rotate(12deg);
}

.cta-pattern--arcs::before{
  right:-190px;top:-220px;width:620px;height:620px;
  border:2px solid var(--cta-pattern-line);border-radius:50%;
}
.cta-pattern--arcs::after{
  right:-25px;bottom:-260px;width:430px;height:430px;
  border:1px solid var(--cta-pattern-accent);background:transparent;border-radius:50%;
}
.cta-pattern--arcs .cta-graphic{
  width:180px;height:180px;border-radius:50%;
  border:1px solid var(--cta-pattern-accent);
  transform:translateY(-50%);
}
.cta-pattern--arcs .cta-graphic::before{inset:24px;border-radius:50%}
.cta-pattern--arcs .cta-graphic::after{inset:52px;border-radius:50%}

.cta-pattern--grid{
  background-image:
    linear-gradient(var(--cta-pattern-line) 1px,transparent 1px),
    linear-gradient(90deg,var(--cta-pattern-line) 1px,transparent 1px);
  background-size:44px 44px;
}
.cta-pattern--grid::before,
.cta-pattern--grid::after{display:none}
.cta-pattern--grid .cta-graphic{
  width:160px;height:160px;
  border:2px solid var(--cta-pattern-accent);
  transform:translateY(-50%) rotate(8deg);
}

.cta-pattern--dots{
  background-image:radial-gradient(circle,var(--cta-pattern-line) 1.4px,transparent 1.6px);
  background-size:24px 24px;
}
.cta-pattern--dots::before,
.cta-pattern--dots::after{display:none}
.cta-pattern--dots .cta-graphic{
  width:150px;height:150px;border-radius:50%;
  background:var(--cta-pattern-accent);border:0;
  transform:translateY(-50%);
}

.cta-pattern--diagonal{
  background-image:repeating-linear-gradient(135deg,transparent 0 24px,var(--cta-pattern-line) 24px 25px);
}
.cta-pattern--diagonal::before,
.cta-pattern--diagonal::after{display:none}
.cta-pattern--diagonal .cta-graphic{
  width:155px;height:155px;border:1px solid var(--cta-pattern-accent);
  transform:translateY(-50%) skew(-9deg) rotate(8deg);
}

.cta-pattern--blocks::before{
  right:-90px;top:-90px;width:300px;height:300px;
  border-radius:0;border:0;background:var(--cta-pattern-accent);
}
.cta-pattern--blocks::after{
  right:185px;bottom:-130px;width:220px;height:220px;
  border-radius:0;background:color-mix(in srgb,var(--brand-primary) 7%,transparent);
}
.cta-pattern--blocks .cta-graphic{
  width:150px;height:150px;border:0;
  background:transparent;transform:translateY(-50%);
  box-shadow:
    28px -28px 0 0 color-mix(in srgb,var(--brand-accent) 8%,transparent),
    56px 0 0 0 color-mix(in srgb,var(--brand-primary) 7%,transparent);
}

.cta-pattern--orbit::before{
  right:-170px;top:-120px;width:580px;height:390px;
  border-radius:50%;border:1px solid var(--cta-pattern-line);
  transform:rotate(-18deg);
}
.cta-pattern--orbit::after{
  right:185px;bottom:50px;width:22px;height:22px;
  border-radius:50%;background:var(--brand-accent);opacity:.24;
}
.cta-pattern--orbit .cta-graphic{
  width:220px;height:110px;border-radius:50%;
  border:1px solid var(--cta-pattern-accent);
  transform:translateY(-50%) rotate(18deg);
}
.cta-pattern--orbit .cta-graphic::before{inset:20px;border-radius:50%}
.cta-pattern--orbit .cta-graphic::after{display:none}

.cta-pattern--crosshatch{
  background-image:
    repeating-linear-gradient(45deg,transparent 0 30px,var(--cta-pattern-line) 30px 31px),
    repeating-linear-gradient(-45deg,transparent 0 30px,var(--cta-pattern-line) 30px 31px);
}
.cta-pattern--crosshatch::before,
.cta-pattern--crosshatch::after{display:none}
.cta-pattern--crosshatch .cta-graphic{display:none}

.cta-pattern--steps::before{
  right:-80px;top:-120px;width:360px;height:360px;
  border-radius:0;border:1px solid var(--cta-pattern-line);
  box-shadow:
    -28px 28px 0 -1px transparent,
    -28px 28px 0 0 var(--cta-pattern-line),
    -56px 56px 0 -1px transparent,
    -56px 56px 0 0 var(--cta-pattern-line);
}
.cta-pattern--steps::after{display:none}
.cta-pattern--steps .cta-graphic{
  width:130px;height:130px;border:1px solid var(--cta-pattern-accent);
  transform:translateY(-50%) rotate(45deg);
}

/* Keep patterns restrained on mobile and out of the copy area. */
@media(max-width:760px){
  .cta--premium::before{opacity:.55}
  .cta--premium::after{opacity:.05}
  .cta--premium .cta-graphic{opacity:.55;right:-18px}
  .cta-pattern--grid,
  .cta-pattern--dots,
  .cta-pattern--diagonal,
  .cta-pattern--crosshatch{background-size:34px 34px}
}

/* ==========================================================
   V1.5.5 Homepage Service Layouts + Consolidated Services
   ========================================================== */

/* Shared no-link state */
.service-card--no-link{cursor:default}
.service-card--no-link:hover{transform:none}
.footer-service-label{display:block;color:#aebdc7;font-size:.78rem;line-height:1.7;margin:4px 0}

/* ----------------------------------------------------------
   Homepage service design 2: Image Overlay
   ---------------------------------------------------------- */
.service-image-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:16px;
}
.service-image-card{
  position:relative;
  min-height:420px;
  overflow:hidden;
  display:flex;
  align-items:flex-end;
  text-decoration:none;
  color:#fff;
  background:linear-gradient(145deg,var(--brand-dark),var(--brand-primary));
  isolation:isolate;
  border:1px solid color-mix(in srgb,var(--brand-primary) 24%,transparent);
}
.service-image-card-media{
  position:absolute;inset:-2px;z-index:-3;
  background-image:var(--service-image),linear-gradient(145deg,var(--brand-dark),var(--brand-primary));
  background-position:var(--service-image-position,center);
  background-size:cover;
  transition:transform .75s cubic-bezier(.22,.61,.36,1),filter .75s ease;
}
.service-image-card-shade{
  position:absolute;inset:0;z-index:-2;
  background:
    linear-gradient(180deg,color-mix(in srgb,var(--brand-dark) 20%,transparent) 0%,color-mix(in srgb,var(--brand-dark) 58%,transparent) 55%,color-mix(in srgb,var(--brand-dark) 94%,transparent) 100%),
    linear-gradient(120deg,color-mix(in srgb,var(--brand-primary) 62%,transparent),color-mix(in srgb,var(--brand-accent) 12%,transparent));
  transition:background .55s ease;
}
.service-image-card-copy{
  width:100%;
  padding:34px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
}
.service-image-card-number{
  color:var(--brand-accent);
  font-size:.7rem;
  letter-spacing:.14em;
  font-weight:900;
  margin-bottom:20px;
}
.service-image-card-copy strong{
  color:#fff;
  font-size:clamp(1.5rem,2.1vw,2.05rem);
  line-height:1.05;
  letter-spacing:-.035em;
}
.service-image-card-summary{
  margin-top:14px;
  color:rgba(255,255,255,.78);
  font-size:.9rem;
  line-height:1.65;
  max-width:34ch;
  opacity:.82;
  transform:translateY(7px);
  transition:opacity .35s ease,transform .35s ease;
}
.service-image-card-action{
  margin-top:24px;
  color:var(--brand-accent);
  font-size:.76rem;
  font-weight:850;
  display:inline-flex;
  gap:8px;
  align-items:center;
}
.service-image-card-action b{font-size:1rem;transition:transform .28s ease}
.service-image-card:not(.service-image-card--no-link):hover .service-image-card-media,
.service-image-card:not(.service-image-card--no-link):focus-visible .service-image-card-media{
  transform:scale(1.075);
  filter:saturate(1.05) contrast(1.03);
}
.service-image-card:not(.service-image-card--no-link):hover .service-image-card-summary,
.service-image-card:not(.service-image-card--no-link):focus-visible .service-image-card-summary{
  opacity:1;transform:translateY(0)
}
.service-image-card:not(.service-image-card--no-link):hover .service-image-card-action b,
.service-image-card:not(.service-image-card--no-link):focus-visible .service-image-card-action b{transform:translateX(5px)}
.service-image-card:focus-visible{outline:3px solid var(--brand-accent);outline-offset:3px}

.service-image-grid--count-1{grid-template-columns:minmax(0,650px);justify-content:center}
.service-image-grid--count-2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:1050px;margin-inline:auto}
.service-image-grid--count-4{grid-template-columns:repeat(2,minmax(0,1fr));max-width:1120px;margin-inline:auto}
.service-image-grid--count-5{grid-template-columns:repeat(6,minmax(0,1fr))}
.service-image-grid--count-5>.service-image-card{grid-column:span 2}
.service-image-grid--count-5>.service-image-card:nth-child(4){grid-column:2/span 2}
.service-image-grid--count-5>.service-image-card:nth-child(5){grid-column:4/span 2}

/* ----------------------------------------------------------
   Homepage service design 3: Editorial Showcase
   ---------------------------------------------------------- */
.home-services-section--editorial{background:#fff}
.services-editorial{
  display:grid;
  grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);
  gap:clamp(40px,6vw,88px);
  align-items:start;
}
.services-editorial-list{border-top:1px solid var(--brand-border)}
.service-editorial-row{
  min-height:116px;
  display:grid;
  grid-template-columns:54px minmax(0,1fr) 42px;
  gap:18px;
  align-items:center;
  padding:22px 6px;
  border-bottom:1px solid var(--brand-border);
  text-decoration:none;
  color:var(--brand-body);
  transition:padding .3s ease,background .3s ease,color .3s ease;
  position:relative;
}
.service-editorial-row::before{
  content:"";
  position:absolute;
  left:0;top:0;bottom:0;
  width:3px;
  background:var(--brand-accent);
  transform:scaleY(0);
  transform-origin:center;
  transition:transform .3s ease;
}
.service-editorial-row.is-active,
.service-editorial-row:not(.service-editorial-row--no-link):hover,
.service-editorial-row:not(.service-editorial-row--no-link):focus-visible{
  padding-left:18px;
  background:color-mix(in srgb,var(--brand-light) 74%,#fff);
}
.service-editorial-row.is-active::before,
.service-editorial-row:hover::before,
.service-editorial-row:focus-visible::before{transform:scaleY(1)}
.service-editorial-number{
  color:var(--brand-accent);
  font-size:.68rem;
  letter-spacing:.13em;
  font-weight:900;
}
.service-editorial-copy{display:block;min-width:0}
.service-editorial-copy strong{
  display:block;
  color:var(--brand-heading);
  font-size:clamp(1.25rem,2vw,1.8rem);
  line-height:1.08;
  letter-spacing:-.03em;
}
.service-editorial-copy small{
  display:block;
  margin-top:8px;
  color:var(--brand-muted);
  font-size:.84rem;
  line-height:1.55;
  max-width:55ch;
}
.service-editorial-arrow{
  width:38px;height:38px;
  display:grid;place-items:center;
  border:1px solid var(--brand-border);
  color:var(--brand-heading);
  transition:background .25s ease,color .25s ease,border-color .25s ease,transform .25s ease;
}
.service-editorial-row:hover .service-editorial-arrow,
.service-editorial-row:focus-visible .service-editorial-arrow{
  background:var(--brand-accent);
  color:var(--brand-accent-contrast);
  border-color:var(--brand-accent);
  transform:translate(3px,-3px);
}
.services-editorial-visual{
  position:sticky;
  top:130px;
  min-height:500px;
  overflow:hidden;
  background:var(--brand-dark);
}
.services-editorial-image{
  position:absolute;inset:0;
  background-position:center;
  background-size:cover;
  transform:scale(1.02);
  transition:opacity .25s ease,transform .7s cubic-bezier(.22,.61,.36,1);
}
.services-editorial-image::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,color-mix(in srgb,var(--brand-dark) 10%,transparent),color-mix(in srgb,var(--brand-dark) 72%,transparent));
}
.services-editorial-visual.is-changing .services-editorial-image{opacity:.32;transform:scale(1.06)}
.services-editorial-caption{
  position:absolute;left:30px;right:30px;bottom:28px;
  z-index:2;color:#fff;
}
.services-editorial-caption span{
  display:block;color:var(--brand-accent);
  font-size:.64rem;font-weight:900;letter-spacing:.13em;text-transform:uppercase;
}
.services-editorial-caption strong{
  display:block;margin-top:8px;color:#fff;
  font-size:1.6rem;line-height:1.05;letter-spacing:-.03em;
}

/* ----------------------------------------------------------
   Homepage service design 4: Alternating Showcase
   ---------------------------------------------------------- */
.home-services-section--alternating{background:#fff}
.services-alternating{
  display:grid;
  gap:clamp(28px,4vw,52px);
}
.service-alternating-row{
  display:grid;
  grid-template-columns:minmax(320px,.92fr) minmax(0,1.08fr);
  min-height:360px;
  overflow:hidden;
  border:1px solid var(--brand-border);
  background:color-mix(in srgb,var(--brand-light) 46%,#fff);
  box-shadow:0 22px 55px rgba(10,31,51,.07);
}
.service-alternating-row--reverse .service-alternating-media{order:2}
.service-alternating-row--reverse .service-alternating-copy{order:1}
.service-alternating-media{position:relative;min-height:360px;overflow:hidden;background:var(--brand-dark)}
.service-alternating-media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(145deg,transparent 55%,color-mix(in srgb,var(--brand-dark) 22%,transparent));
  pointer-events:none;
}
.service-alternating-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .65s cubic-bezier(.22,.61,.36,1)}
.service-alternating-row:hover .service-alternating-media img{transform:scale(1.035)}
.service-alternating-fallback{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(135deg,var(--brand-primary),var(--brand-dark))}
.service-alternating-fallback span{font-size:clamp(4rem,10vw,8rem);font-weight:900;color:rgba(255,255,255,.12);letter-spacing:-.06em}
.service-alternating-copy{
  display:flex;flex-direction:column;justify-content:center;align-items:flex-start;
  padding:clamp(34px,5vw,70px);
}
.service-alternating-number{font-size:.68rem;letter-spacing:.14em;font-weight:900;color:var(--brand-accent);margin-bottom:20px}
.service-alternating-copy h3{font-size:clamp(1.8rem,3vw,3.1rem);line-height:1.03;letter-spacing:-.045em;max-width:15ch;margin:0;color:var(--brand-heading)}
.service-alternating-copy p{font-size:.96rem;line-height:1.7;color:var(--brand-muted);max-width:52ch;margin:22px 0 0}
.service-alternating-link{display:inline-flex;align-items:center;gap:9px;margin-top:28px;color:var(--brand-heading);font-size:.76rem;font-weight:900;text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--brand-heading) 22%,transparent);padding-bottom:5px}
.service-alternating-link span{color:var(--brand-accent);transition:transform .25s ease}
.service-alternating-link:hover span,.service-alternating-link:focus-visible span{transform:translate(4px,-4px)}

/* ----------------------------------------------------------
   Homepage service design 5: Compact Accordion
   ---------------------------------------------------------- */
.home-services-section--accordion{background:color-mix(in srgb,var(--brand-light) 68%,#fff)}
.services-accordion{border-top:1px solid var(--brand-border);max-width:1180px;margin-inline:auto}
.service-accordion-item{border-bottom:1px solid var(--brand-border);background:transparent}
.service-accordion-item summary{
  list-style:none;
  display:grid;
  grid-template-columns:58px minmax(0,1fr) 48px;
  align-items:center;
  gap:20px;
  min-height:112px;
  padding:22px 10px;
  cursor:pointer;
  user-select:none;
  transition:background .25s ease,padding .25s ease;
}
.service-accordion-item summary::-webkit-details-marker{display:none}
.service-accordion-item summary:hover,.service-accordion-item summary:focus-visible,.service-accordion-item[open] summary{background:#fff;padding-left:20px;padding-right:20px;outline:0}
.service-accordion-number{font-size:.68rem;font-weight:900;letter-spacing:.14em;color:var(--brand-accent)}
.service-accordion-item summary strong{font-size:clamp(1.35rem,2.4vw,2rem);line-height:1.08;letter-spacing:-.035em;color:var(--brand-heading)}
.service-accordion-toggle{width:42px;height:42px;border:1px solid var(--brand-border);position:relative;justify-self:end;background:#fff}
.service-accordion-toggle::before,.service-accordion-toggle::after{content:"";position:absolute;left:50%;top:50%;width:14px;height:2px;background:var(--brand-heading);transform:translate(-50%,-50%);transition:transform .25s ease,opacity .25s ease}
.service-accordion-toggle::after{transform:translate(-50%,-50%) rotate(90deg)}
.service-accordion-item[open] .service-accordion-toggle{background:var(--brand-accent);border-color:var(--brand-accent)}
.service-accordion-item[open] .service-accordion-toggle::before,.service-accordion-item[open] .service-accordion-toggle::after{background:var(--brand-accent-contrast)}
.service-accordion-item[open] .service-accordion-toggle::after{opacity:0;transform:translate(-50%,-50%) rotate(0)}
.service-accordion-panel{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(260px,.62fr);
  gap:clamp(28px,5vw,70px);
  align-items:center;
  padding:0 20px 34px 98px;
  animation:serviceAccordionIn .26s ease both;
}
@keyframes serviceAccordionIn{from{opacity:0;transform:translateY(-7px)}to{opacity:1;transform:none}}
.service-accordion-copy p{font-size:.94rem;line-height:1.7;color:var(--brand-muted);max-width:60ch;margin:0}
.service-accordion-link{display:inline-flex;align-items:center;gap:8px;margin-top:20px;color:var(--brand-heading);font-size:.76rem;font-weight:900;text-decoration:none}
.service-accordion-link span{color:var(--brand-accent);transition:transform .25s ease}
.service-accordion-link:hover span,.service-accordion-link:focus-visible span{transform:translate(4px,-4px)}
.service-accordion-media{height:190px;overflow:hidden;background:var(--brand-dark)}
.service-accordion-media img{width:100%;height:100%;display:block;object-fit:cover}

@media(max-width:980px){
  .service-alternating-row{grid-template-columns:minmax(280px,.9fr) minmax(0,1.1fr);min-height:320px}
  .service-alternating-media{min-height:320px}
  .service-accordion-panel{grid-template-columns:1fr minmax(220px,.7fr);padding-left:20px}
}

@media(max-width:720px){
  .services-alternating{gap:24px}
  .service-alternating-row,.service-alternating-row--reverse{grid-template-columns:1fr;min-height:0}
  .service-alternating-row--reverse .service-alternating-media,.service-alternating-row--reverse .service-alternating-copy{order:initial}
  .service-alternating-media{min-height:0;aspect-ratio:16/10}
  .service-alternating-copy{padding:30px 26px 34px}
  .service-alternating-copy h3{font-size:clamp(1.65rem,8vw,2.25rem);max-width:none}
  .service-alternating-copy p{font-size:.88rem;margin-top:16px}
  .service-alternating-link{margin-top:22px}

  .service-accordion-item summary{grid-template-columns:34px minmax(0,1fr) 38px;gap:10px;min-height:92px;padding:18px 4px}
  .service-accordion-item summary:hover,.service-accordion-item summary:focus-visible,.service-accordion-item[open] summary{padding-left:10px;padding-right:10px}
  .service-accordion-item summary strong{font-size:clamp(1.16rem,5.8vw,1.5rem)}
  .service-accordion-toggle{width:36px;height:36px}
  .service-accordion-panel{grid-template-columns:1fr;gap:20px;padding:0 10px 28px 44px}
  .service-accordion-media{height:auto;aspect-ratio:16/9;order:-1}
  .service-accordion-copy p{font-size:.84rem;line-height:1.6}
}

@media(max-width:420px){
  .service-accordion-panel{padding-left:10px}
  .service-accordion-item summary{grid-template-columns:28px minmax(0,1fr) 34px}
  .service-accordion-number{font-size:.6rem}
  .service-accordion-toggle{width:32px;height:32px}
}

/* ----------------------------------------------------------
   Consolidated 5-page Services page
   ---------------------------------------------------------- */
.services-anchor-page{background:#fff}
.service-anchor-section{
  padding:clamp(76px,8vw,118px) 0;
  scroll-margin-top:150px;
}
.service-anchor-section.section-soft{background:color-mix(in srgb,var(--brand-light) 86%,#fff)}
.service-anchor-grid{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(360px,.8fr);
  gap:clamp(48px,7vw,100px);
  align-items:center;
}
.service-anchor-section--reverse .service-anchor-copy{order:2}
.service-anchor-section--reverse .service-anchor-media{order:1}
.service-anchor-copy h2{font-size:clamp(2.4rem,4.5vw,4.8rem);max-width:800px}
.service-anchor-copy .lead{margin-top:22px;max-width:700px}
.service-anchor-prose{margin-top:28px}
.service-anchor-benefits{margin-top:30px}
.service-anchor-actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:32px}
.service-anchor-frame{width:100%}

@media(max-width:980px){
  .service-image-grid,
  .service-image-grid--count-1,
  .service-image-grid--count-2,
  .service-image-grid--count-3,
  .service-image-grid--count-4,
  .service-image-grid--count-5,
  .service-image-grid--count-6{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none}
  .service-image-grid--count-5>.service-image-card,
  .service-image-grid--count-5>.service-image-card:nth-child(4),
  .service-image-grid--count-5>.service-image-card:nth-child(5){grid-column:auto}
  .services-editorial{grid-template-columns:1fr}
  .services-editorial-visual{position:relative;top:auto;min-height:440px}
  .service-anchor-grid{grid-template-columns:1fr}
  .service-anchor-section--reverse .service-anchor-copy,
  .service-anchor-section--reverse .service-anchor-media{order:initial}
}

@media(max-width:680px){
  .service-image-grid,
  .service-image-grid--count-1,
  .service-image-grid--count-2,
  .service-image-grid--count-3,
  .service-image-grid--count-4,
  .service-image-grid--count-5,
  .service-image-grid--count-6{grid-template-columns:1fr}
  .service-image-card{min-height:355px}
  .service-image-card-copy{padding:26px}
  .service-image-card-summary{opacity:1;transform:none}

  /* Editorial Showcase becomes a compact service list on mobile.
     The desktop sticky feature image is hidden and every row receives its own
     full-colour thumbnail. Space is explicitly reserved for that thumbnail so
     the service copy can never run underneath it. */
  .services-editorial-visual{display:none}
  .service-editorial-row{
    min-height:126px;
    grid-template-columns:38px minmax(0,1fr) 28px;
    gap:10px;
    padding:18px 106px 18px 4px;
    overflow:hidden;
  }
  .service-editorial-row>*{
    position:relative;
    z-index:1;
  }
  .service-editorial-row::after{
    content:"";
    position:absolute;
    z-index:0;
    right:4px;
    top:16px;
    bottom:16px;
    width:88px;
    background-image:var(--editorial-row-image);
    background-position:var(--editorial-row-position,center);
    background-size:cover;
    background-repeat:no-repeat;
    opacity:1;
    border:1px solid color-mix(in srgb,var(--brand-border) 75%,transparent);
    box-shadow:0 8px 22px rgba(10,31,51,.10);
    pointer-events:none;
  }
  .service-editorial-row.is-active::after{
    box-shadow:0 9px 24px color-mix(in srgb,var(--brand-accent) 16%,rgba(10,31,51,.10));
  }
  .service-editorial-copy strong{
    font-size:clamp(1.14rem,6vw,1.42rem);
  }
  .service-editorial-copy small{
    font-size:.78rem;
    line-height:1.48;
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden;
  }
  .service-editorial-arrow{
    width:28px;
    height:28px;
    font-size:.78rem;
  }

  .service-anchor-section{padding:64px 0;scroll-margin-top:100px}
  .service-anchor-copy h2{font-size:clamp(2.1rem,10vw,3.2rem)}
  .service-anchor-actions{align-items:flex-start;flex-direction:column;gap:14px}
}

@media(max-width:420px){
  .service-editorial-row{
    min-height:120px;
    padding-right:98px;
  }
  .service-editorial-row::after{
    width:80px;
    top:15px;
    bottom:15px;
  }
}


/* ==========================================================
   V1.5.7 Consolidated Services Page Polish
   ========================================================== */

/* Alternating rhythm is deliberate and palette-derived. */
.service-anchor-section--soft{
  background:color-mix(in srgb,var(--brand-light) 86%,#fff);
}

/* Every consolidated-service image now occupies a controlled footprint. */
.service-anchor-media{
  width:100%;
  min-width:0;
  --service-content-position:center;
}
.service-anchor-frame{
  width:100%;
  aspect-ratio:4/3;
  position:relative;
}
.service-anchor-frame .tb-image-frame-surface{
  position:absolute;
  inset:0;
}
.service-anchor-frame .tb-image-frame-surface img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center var(--service-content-position);
}

/* 01 — clean landscape */
.service-anchor-media--landscape .service-anchor-frame{
  aspect-ratio:4/3;
}
.service-anchor-media--landscape .tb-image-frame-surface{
  border-radius:0!important;
  filter:none!important;
}

/* 02 — rounded landscape */
.service-anchor-media--rounded .service-anchor-frame{
  aspect-ratio:4/3;
}
.service-anchor-media--rounded .tb-image-frame-surface{
  border-radius:28px!important;
}

/* 03 — editorial portrait */
.service-anchor-media--portrait{
  max-width:540px;
  justify-self:center;
}
.service-anchor-media--portrait .service-anchor-frame{
  aspect-ratio:4/5;
}
.service-anchor-media--portrait .tb-image-frame-surface{
  border-radius:28px!important;
}

/* 04 — architectural accent frame */
.service-anchor-media--accent{
  position:relative;
}
.service-anchor-media--accent::before{
  content:"";
  position:absolute;
  right:-14px;
  bottom:-14px;
  width:64%;
  height:62%;
  border-right:8px solid var(--brand-accent);
  border-bottom:8px solid var(--brand-accent);
  opacity:.95;
  pointer-events:none;
}
.service-anchor-media--accent .service-anchor-frame{
  aspect-ratio:4/3;
}
.service-anchor-media--accent .tb-image-frame-surface{
  border-radius:0!important;
}

/* 05 — individual frame keeps the service's chosen shape but never changes size. */
.service-anchor-media--individual .service-anchor-frame{
  aspect-ratio:4/3;
}

/* Individual service pages also honour the content-image focal position. */
.service-media .service-content-frame{
  position:relative;
  aspect-ratio:4/3;
}
.service-media .service-content-frame .tb-image-frame-surface{
  position:absolute;
  inset:0;
}
.service-media .service-content-frame img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center var(--service-content-position,center);
}

/* Service-specific highlights are visually compact and consistent. */
.service-anchor-benefits{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.service-anchor-benefits .check{
  min-height:52px;
  display:grid;
  align-items:start;
}

@media(max-width:980px){
  .service-anchor-media--portrait{
    max-width:620px;
    justify-self:start;
  }
}
@media(max-width:680px){
  .service-anchor-frame,
  .service-anchor-media--portrait .service-anchor-frame,
  .service-anchor-media--individual .service-anchor-frame{
    aspect-ratio:4/3;
  }
  .service-anchor-media--accent::before{
    right:-8px;
    bottom:-8px;
    border-right-width:5px;
    border-bottom-width:5px;
  }
  .service-anchor-benefits{
    grid-template-columns:1fr;
  }
}


/* V1.5.7 QA refinement:
   use equal desktop columns so an image does not become larger simply because
   the alternating section places it in the left-hand grid column. */
@media(min-width:981px){
  .service-anchor-grid{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  }
}


/* ==========================================================
   V1.5.8 Dark Navigation & Logo Contrast
   ========================================================== */

/* Dual-logo system. Both images occupy the same footprint so switching cannot
   move the navigation or change its measured width. */
.brand-logo{
  display:grid;
  align-items:center;
  justify-items:start;
}
.brand-logo img{
  grid-area:1 / 1;
  transition:opacity .42s ease,filter .42s ease;
}
.brand-logo-normal{opacity:1}
.brand-logo-light{opacity:0;pointer-events:none}

/* Never auto-invert customer logos. If a logo needs a dark-background version,
   the CMS now provides an explicit Light Header Logo upload. */
.header--style-transparent:not(.header-scrolled) .brand-logo img,
.header--style-glass:not(.header-scrolled) .brand-logo img{
  filter:none!important;
}

/* Use the optional light logo anywhere the header background is dark. */
.header--style-dark .brand-logo--has-light .brand-logo-normal,
.header--style-transparent:not(.header-scrolled) .brand-logo--has-light .brand-logo-normal,
.header--style-glass:not(.header-scrolled) .brand-logo--has-light .brand-logo-normal{
  opacity:0;
}
.header--style-dark .brand-logo--has-light .brand-logo-light,
.header--style-transparent:not(.header-scrolled) .brand-logo--has-light .brand-logo-light,
.header--style-glass:not(.header-scrolled) .brand-logo--has-light .brand-logo-light{
  opacity:1;
}

/* Transparent/Glass switch back to the normal logo when the white sticky
   header state appears. */
.header--style-transparent.header-scrolled .brand-logo-normal,
.header--style-glass.header-scrolled .brand-logo-normal{
  opacity:1;
}
.header--style-transparent.header-scrolled .brand-logo-light,
.header--style-glass.header-scrolled .brand-logo-light{
  opacity:0;
}

/* Footer always uses the normal/master logo. */
.footer .brand-logo-normal{opacity:1!important}
.footer .brand-logo-light{display:none!important}

/* Dark / Black navigation preset.
   --brand-dark is intentionally used so the header remains connected to the
   curated palette rather than becoming an unrelated hard-coded black. */
.header--style-dark{
  background:var(--brand-dark);
  color:#fff;
  box-shadow:none;
}
.header--style-dark.header--sticky{
  position:sticky;
  top:0;
}
.header--style-dark.header--static{
  position:relative;
  top:auto;
}
.header--style-dark.header--border{
  border-bottom-color:rgba(255,255,255,.16);
}
.header--style-dark.header--no-border{
  border-bottom-color:transparent!important;
}

/* Text logo, navigation and controls receive guaranteed dark-header contrast. */
.header--style-dark .brand,
.header--style-dark .nav,
.header--style-dark .nav>a,
.header--style-dark .nav-parent>a,
.header--style-dark .submenu-toggle{
  color:#fff;
}
.header--style-dark .brand small{
  color:var(--brand-accent);
}
.header--style-dark .nav a:hover,
.header--style-dark .nav a.active,
.header--style-dark .nav-item.active>.nav-parent>a{
  color:var(--brand-accent);
}

/* Header CTA keeps the selected palette colour and respects the CMS
   Automatic / White / Black CTA Text Contrast selection. */
.header--style-dark .header-cta{
  background:var(--brand-cta);
  color:var(--header-cta-contrast)!important;
}
.header--style-dark .header-cta:hover{
  background:var(--brand-cta-hover);
  color:var(--header-cta-hover-contrast)!important;
}

/* Dropdown panel deliberately remains light for maximum scanability. */
.header--style-dark .submenu{
  background:#fff;
  color:var(--brand-body);
  border-color:var(--brand-border);
}
.header--style-dark .submenu a{
  color:var(--brand-body)!important;
}
.header--style-dark .submenu a:hover{
  background:var(--brand-light);
  color:var(--brand-accent)!important;
}

/* Dark header mobile trigger. */
.header--style-dark .mobile-menu::before,
.header--style-dark .mobile-menu::after,
.header--style-dark .mobile-menu span{
  background:#fff;
}

/* When the mobile drawer opens it becomes a clean light panel, while the
   underlying dark header remains unchanged. */
@media(max-width:980px){
  .header--style-dark .nav.open{
    background:#fff;
    color:var(--brand-body);
  }
  .header--style-dark .nav.open>a,
  .header--style-dark .nav.open .nav-parent>a,
  .header--style-dark .nav.open .submenu-toggle{
    color:var(--brand-body);
  }
  .header--style-dark .nav.open a:hover,
  .header--style-dark .nav.open a.active,
  .header--style-dark .nav.open .nav-item.active>.nav-parent>a{
    color:var(--brand-accent);
  }
}


/* ==========================================================
   V1.5.9 Dark Scroll Header Variants
   ========================================================== */

/* New variants start over the hero exactly like the existing Transparent/Glass
   treatments, but their sticky scroll destination is palette-dark rather than white. */
.header--style-transparent-dark,
.header--style-glass-dark{
  position:absolute;
  top:38px;
  left:0;
  right:0;
  z-index:50;
  box-shadow:none;
  border-bottom-color:rgba(255,255,255,.12);
}
.header--style-transparent-dark{
  background:transparent;
  backdrop-filter:none;
}
.header--style-glass-dark{
  background:color-mix(in srgb,var(--brand-dark) 42%,transparent);
  backdrop-filter:blur(18px) saturate(125%);
  -webkit-backdrop-filter:blur(18px) saturate(125%);
}

/* Hero-top contrast. */
.header--style-transparent-dark:not(.header-scrolled) .nav,
.header--style-glass-dark:not(.header-scrolled) .nav,
.header--style-transparent-dark:not(.header-scrolled) .nav>a,
.header--style-glass-dark:not(.header-scrolled) .nav>a,
.header--style-transparent-dark:not(.header-scrolled) .nav-parent>a,
.header--style-glass-dark:not(.header-scrolled) .nav-parent>a,
.header--style-transparent-dark:not(.header-scrolled) .submenu-toggle,
.header--style-glass-dark:not(.header-scrolled) .submenu-toggle,
.header--style-transparent-dark:not(.header-scrolled) .brand,
.header--style-glass-dark:not(.header-scrolled) .brand{
  color:#fff;
}
.header--style-transparent-dark:not(.header-scrolled) .brand small,
.header--style-glass-dark:not(.header-scrolled) .brand small{
  color:var(--brand-accent);
}
.header--style-transparent-dark:not(.header-scrolled) .mobile-menu::before,
.header--style-transparent-dark:not(.header-scrolled) .mobile-menu::after,
.header--style-transparent-dark:not(.header-scrolled) .mobile-menu span,
.header--style-glass-dark:not(.header-scrolled) .mobile-menu::before,
.header--style-glass-dark:not(.header-scrolled) .mobile-menu::after,
.header--style-glass-dark:not(.header-scrolled) .mobile-menu span{
  background:#fff;
}

/* Optional Light Header Logo is used at the top and remains in use after
   transitioning into the dark sticky destination. */
.header--style-transparent-dark .brand-logo--has-light .brand-logo-normal,
.header--style-glass-dark .brand-logo--has-light .brand-logo-normal{
  opacity:0;
}
.header--style-transparent-dark .brand-logo--has-light .brand-logo-light,
.header--style-glass-dark .brand-logo--has-light .brand-logo-light{
  opacity:1;
}
.header--style-transparent-dark .brand-logo img,
.header--style-glass-dark .brand-logo img{
  filter:none!important;
}

/* Sticky dark destination. Existing 0.7–0.8s transition rules apply, so the
   change is smooth rather than snapping. */
.header--style-transparent-dark.header--sticky.header-scrolled,
.header--style-glass-dark.header--sticky.header-scrolled{
  position:fixed;
  top:0;
  left:0;
  right:0;
  background:var(--brand-dark);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  box-shadow:0 10px 32px rgba(0,0,0,.18);
}
.header--style-transparent-dark.header--sticky.header-scrolled.header--border,
.header--style-glass-dark.header--sticky.header-scrolled.header--border{
  border-bottom-color:rgba(255,255,255,.14);
}
.header--style-transparent-dark.header--sticky.header-scrolled.header--no-border,
.header--style-glass-dark.header--sticky.header-scrolled.header--no-border{
  border-bottom-color:transparent!important;
}

.header--style-transparent-dark.header--sticky.header-scrolled .nav,
.header--style-glass-dark.header--sticky.header-scrolled .nav,
.header--style-transparent-dark.header--sticky.header-scrolled .nav>a,
.header--style-glass-dark.header--sticky.header-scrolled .nav>a,
.header--style-transparent-dark.header--sticky.header-scrolled .nav-parent>a,
.header--style-glass-dark.header--sticky.header-scrolled .nav-parent>a,
.header--style-transparent-dark.header--sticky.header-scrolled .submenu-toggle,
.header--style-glass-dark.header--sticky.header-scrolled .submenu-toggle,
.header--style-transparent-dark.header--sticky.header-scrolled .brand,
.header--style-glass-dark.header--sticky.header-scrolled .brand{
  color:#fff;
}
.header--style-transparent-dark .nav a:hover,
.header--style-transparent-dark .nav a.active,
.header--style-transparent-dark .nav-item.active>.nav-parent>a,
.header--style-glass-dark .nav a:hover,
.header--style-glass-dark .nav a.active,
.header--style-glass-dark .nav-item.active>.nav-parent>a{
  color:var(--brand-accent);
}

/* Header CTA keeps palette colour and respects the saved CTA Text Contrast
   selection in the dark destination. */
.header--style-transparent-dark .header-cta,
.header--style-glass-dark .header-cta{
  background:var(--brand-cta);
  color:var(--header-cta-contrast)!important;
}
.header--style-transparent-dark .header-cta:hover,
.header--style-glass-dark .header-cta:hover{
  background:var(--brand-cta-hover);
  color:var(--header-cta-hover-contrast)!important;
}

/* Dropdown remains intentionally light for scanability. */
.header--style-transparent-dark .submenu,
.header--style-glass-dark .submenu{
  background:#fff;
  color:var(--brand-body);
  border-color:var(--brand-border);
}
.header--style-transparent-dark .submenu a,
.header--style-glass-dark .submenu a{
  color:var(--brand-body)!important;
}
.header--style-transparent-dark .submenu a:hover,
.header--style-glass-dark .submenu a:hover{
  background:var(--brand-light);
  color:var(--brand-accent)!important;
}

/* Non-sticky versions simply stay over the hero and scroll away, mirroring
   the existing Transparent/Glass behaviour. */
.header--style-transparent-dark.header--static,
.header--style-glass-dark.header--static{
  position:absolute;
  top:38px;
}
.header--style-transparent-dark.header--static.header-scrolled,
.header--style-glass-dark.header--static.header-scrolled{
  box-shadow:none;
}

/* Mobile drawer remains a light, readable panel even when the destination
   header is dark. */
@media(max-width:980px){
  .header--style-transparent-dark .nav.open,
  .header--style-glass-dark .nav.open{
    background:#fff;
    color:var(--brand-body);
  }
  .header--style-transparent-dark .nav.open>a,
  .header--style-glass-dark .nav.open>a,
  .header--style-transparent-dark .nav.open .nav-parent>a,
  .header--style-glass-dark .nav.open .nav-parent>a,
  .header--style-transparent-dark .nav.open .submenu-toggle,
  .header--style-glass-dark .nav.open .submenu-toggle{
    color:var(--brand-body);
  }
  .header--style-transparent-dark .nav.open a:hover,
  .header--style-transparent-dark .nav.open a.active,
  .header--style-transparent-dark .nav.open .nav-item.active>.nav-parent>a,
  .header--style-glass-dark .nav.open a:hover,
  .header--style-glass-dark .nav.open a.active,
  .header--style-glass-dark .nav.open .nav-item.active>.nav-parent>a{
    color:var(--brand-accent);
  }
}


/* Hamburger remains white in both the hero and dark-scrolled states. */
.header--style-transparent-dark .mobile-menu::before,
.header--style-transparent-dark .mobile-menu::after,
.header--style-transparent-dark .mobile-menu span,
.header--style-glass-dark .mobile-menu::before,
.header--style-glass-dark .mobile-menu::after,
.header--style-glass-dark .mobile-menu span{
  background:#fff;
}

/* =========================================================
   V1.7.0 — Expanded hero library + repeatable About sections
   ========================================================= */

/* Shared enquiry form renderer. */
.enquiry-form-heading{font-size:2rem;margin:0 0 12px;color:var(--heading)}
.enquiry-form-intro{margin:0 0 20px;color:var(--muted);font-size:.92rem;line-height:1.65}
.enquiry-form-card .privacy-inline-link{text-decoration:underline;text-underline-offset:2px}
.enquiry-form-card .enquiry-demo-note{font-size:.76rem;margin-top:14px;color:var(--muted)}
.enquiry-form-card--compact{padding:28px}
.enquiry-form-card--compact .enquiry-form-heading{font-size:1.6rem}
.enquiry-form-card--compact .enquiry-form-intro{font-size:.82rem;margin-bottom:15px}
.enquiry-form-card--compact .form-grid{gap:11px}
.enquiry-form-card--compact .field label{font-size:.72rem}
.enquiry-form-card--compact input,.enquiry-form-card--compact select,.enquiry-form-card--compact textarea{min-height:44px}
.enquiry-form-card--compact textarea{min-height:92px}
.enquiry-form-card--compact .btn{width:100%}

/* Controlled content width presets. */
.hero--content-compact .hero-copy{max-width:620px}
.hero--content-standard .hero-copy{max-width:770px}
.hero--content-wide .hero-copy{max-width:900px}

/* Background modes for the new image-led hero families. */
.hero--lead-form[data-bg-mode="solid"]>.hero-bg,
.hero--floating-panel[data-bg-mode="solid"]>.hero-bg,
.hero--centered[data-bg-mode="solid"]>.hero-bg{background-image:none;background:var(--brand-primary)}
.hero--lead-form[data-bg-mode="gradient"]>.hero-bg,
.hero--floating-panel[data-bg-mode="gradient"]>.hero-bg,
.hero--centered[data-bg-mode="gradient"]>.hero-bg{background-image:none;background:linear-gradient(128deg,var(--brand-dark) 0%,var(--brand-primary) 58%,var(--brand-secondary) 125%)}
.hero--lead-form[data-bg-mode="image"]>.hero-bg::after,
.hero--centered[data-bg-mode="image"]>.hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,color-mix(in srgb,var(--brand-dark) 94%,transparent) 0%,color-mix(in srgb,var(--brand-dark) 76%,transparent) 50%,color-mix(in srgb,var(--brand-dark) 40%,transparent) 100%)}
.hero--floating-panel[data-bg-mode="image"]>.hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(2,12,21,.42),rgba(2,12,21,.08))}

/* F — lead generation split: copy + the existing Toolbelt enquiry form. */
.hero--lead-form{color:#fff;background:var(--brand-dark)}
.hero--lead-form .hero-layout{grid-template-columns:minmax(0,.9fr) minmax(430px,.82fr);gap:64px;min-height:780px;padding-top:30px;padding-bottom:30px}
.hero--lead-form .hero-copy{padding:82px 0}
.hero--lead-form h1{color:#fff;font-size:clamp(3.25rem,5.4vw,5.55rem)}
.hero--lead-form .hero-copy>p{color:#dce5ec}
.hero--lead-form .hero-secondary{color:#fff;border-color:rgba(255,255,255,.65)}
.hero--lead-form .hero-actions .btn-primary{display:none}
.hero--lead-form .hero-proof{border-top:1px solid rgba(255,255,255,.18)}
.hero--lead-form .proof-item{color:#eef3f6}.hero--lead-form .proof-icon{border:1px solid rgba(255,255,255,.2)}
.hero--lead-form .hero-media{display:none}
.hero-form-wrap{position:relative;z-index:3;align-self:center;width:100%;max-width:560px;justify-self:end}
.hero-form-wrap .form-card{margin:0}
.hero-form-panel--white .form-card{background:#fff;color:var(--ink);border-color:rgba(255,255,255,.88)}
.hero-form-panel--glass .form-card{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.24);box-shadow:0 28px 70px rgba(0,0,0,.26);backdrop-filter:blur(var(--hero-form-blur,18px));-webkit-backdrop-filter:blur(var(--hero-form-blur,18px))}
.hero-form-panel--dark .form-card{background:color-mix(in srgb,var(--brand-dark) 92%,transparent);color:#fff;border-color:rgba(255,255,255,.14);box-shadow:0 28px 70px rgba(0,0,0,.3)}
.hero-form-panel--brand .form-card{background:var(--brand-accent);color:var(--accent-contrast);border-color:color-mix(in srgb,var(--brand-accent) 80%,#fff);box-shadow:0 28px 70px rgba(0,0,0,.23)}
.hero-form-panel--glass .enquiry-form-heading,.hero-form-panel--dark .enquiry-form-heading{color:#fff}
.hero-form-panel--glass .enquiry-form-intro,.hero-form-panel--dark .enquiry-form-intro,.hero-form-panel--glass .tiny,.hero-form-panel--dark .tiny,.hero-form-panel--glass .enquiry-demo-note,.hero-form-panel--dark .enquiry-demo-note{color:rgba(255,255,255,.76)}
.hero-form-panel--brand .enquiry-form-heading,.hero-form-panel--brand .enquiry-form-intro,.hero-form-panel--brand .tiny,.hero-form-panel--brand .enquiry-demo-note{color:var(--accent-contrast)}
.hero-form-panel--glass label,.hero-form-panel--dark label{color:#fff}
.hero-form-panel--brand label{color:var(--accent-contrast)}
.hero-form-panel--glass input,.hero-form-panel--glass select,.hero-form-panel--glass textarea,.hero-form-panel--dark input,.hero-form-panel--dark select,.hero-form-panel--dark textarea{background:rgba(255,255,255,.94);border-color:rgba(255,255,255,.28);color:var(--ink)}
.hero-form-panel--brand input,.hero-form-panel--brand select,.hero-form-panel--brand textarea{background:color-mix(in srgb,#fff 94%,var(--brand-accent));border-color:color-mix(in srgb,var(--accent-contrast) 22%,transparent);color:var(--ink)}

/* G — editorial split. */
.hero--editorial{background:#fff;color:var(--ink)}
.hero--editorial .hero-bg{display:none}
.hero--editorial .hero-layout{grid-template-columns:minmax(0,.9fr) minmax(420px,1.1fr);gap:72px;min-height:740px}
.hero--editorial .hero-copy{padding:84px 0}
.hero--editorial h1{color:var(--heading);font-size:clamp(3.4rem,5.6vw,5.9rem)}
.hero--editorial .hero-copy>p{color:var(--muted)}
.hero--editorial .hero-secondary{color:var(--brand-primary);border-color:var(--brand-primary)}
.hero--editorial .hero-proof{border-top:1px solid var(--line)}.hero--editorial .proof-item{color:var(--ink)}.hero--editorial .proof-icon{border:1px solid var(--line)}
.hero--editorial .hero-media{display:block;height:620px;position:relative;align-self:center;overflow:hidden;box-shadow:0 28px 70px color-mix(in srgb,var(--brand-primary) 18%,transparent)}
.hero--editorial .hero-media::after{content:"";position:absolute;right:-18px;bottom:-18px;width:120px;height:120px;border-right:10px solid var(--brand-accent);border-bottom:10px solid var(--brand-accent);z-index:-1}
.hero--editorial.hero--image-left .hero-copy{order:2}.hero--editorial.hero--image-left .hero-media{order:1}

/* H — floating panel over full-width image/palette background. */
.hero--floating-panel{color:#fff;min-height:760px}
.hero--floating-panel .hero-layout{display:flex;align-items:center;min-height:760px}
.hero--floating-panel .hero-copy{position:relative;z-index:2;padding:54px 58px;max-width:690px;margin:80px 0;box-shadow:0 30px 80px rgba(0,0,0,.22)}
.hero--floating-panel .hero-media{display:none}
.hero--floating-panel.hero--panel-white .hero-copy{background:#fff;color:var(--ink)}
.hero--floating-panel.hero--panel-white h1{color:var(--heading)}.hero--floating-panel.hero--panel-white .hero-copy>p{color:var(--muted)}.hero--floating-panel.hero--panel-white .hero-secondary{color:var(--brand-primary);border-color:var(--brand-primary)}.hero--floating-panel.hero--panel-white .hero-proof{border-top:1px solid var(--line)}.hero--floating-panel.hero--panel-white .proof-item{color:var(--ink)}
.hero--floating-panel.hero--panel-dark .hero-copy{background:color-mix(in srgb,var(--brand-dark) 94%,transparent)}
.hero--floating-panel.hero--panel-glass .hero-copy{background:rgba(10,27,43,.54);border:1px solid rgba(255,255,255,.2);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.hero--floating-panel.hero--panel-brand .hero-copy{background:var(--brand-accent);color:var(--accent-contrast)}
.hero--floating-panel.hero--panel-brand h1,.hero--floating-panel.hero--panel-brand h1 span,.hero--floating-panel.hero--panel-brand .eyebrow,.hero--floating-panel.hero--panel-brand .hero-copy>p,.hero--floating-panel.hero--panel-brand .hero-secondary,.hero--floating-panel.hero--panel-brand .proof-item{color:var(--accent-contrast)}
.hero--floating-panel.hero--panel-brand .btn-primary{background:var(--brand-dark);color:#fff}
.hero--floating-panel:not(.hero--panel-white):not(.hero--panel-brand) h1{color:#fff}
.hero--floating-panel:not(.hero--panel-white):not(.hero--panel-brand) .hero-copy>p{color:#e6edf2}
.hero--floating-panel:not(.hero--panel-white):not(.hero--panel-brand) .hero-secondary{color:#fff;border-color:rgba(255,255,255,.7)}
.hero--floating-panel:not(.hero--panel-white):not(.hero--panel-brand) .hero-proof{border-top:1px solid rgba(255,255,255,.18)}.hero--floating-panel:not(.hero--panel-white):not(.hero--panel-brand) .proof-item{color:#eef3f6}

/* I — centred statement hero. */
.hero--centered{color:#fff;min-height:720px;text-align:center}
.hero--centered .hero-layout{display:flex;align-items:center;justify-content:center;min-height:720px}
.hero--centered .hero-copy{margin:0 auto;padding:100px 0;max-width:900px}
.hero--centered h1{color:#fff;font-size:clamp(3.5rem,6.5vw,6.35rem)}
.hero--centered .hero-copy>p{color:#e4ebef;margin-left:auto;margin-right:auto}
.hero--centered .hero-actions,.hero--centered .hero-proof{justify-content:center}
.hero--centered .hero-secondary{color:#fff;border-color:rgba(255,255,255,.7)}
.hero--centered .hero-proof{border-top:1px solid rgba(255,255,255,.18)}.hero--centered .proof-item{color:#edf3f6}
.hero--centered .hero-media{display:none}

/* J — asymmetric showcase. */
.hero--showcase{background:color-mix(in srgb,#fff 96%,var(--brand-accent));color:var(--ink)}
.hero--showcase .hero-bg{display:none}
.hero--showcase .hero-layout{grid-template-columns:minmax(0,.88fr) minmax(430px,1.12fr);gap:76px;min-height:740px}
.hero--showcase .hero-copy{padding:86px 0}
.hero--showcase h1{color:var(--heading);font-size:clamp(3.4rem,5.6vw,5.9rem)}
.hero--showcase .hero-copy>p{color:var(--muted)}
.hero--showcase .hero-secondary{color:var(--brand-primary);border-color:var(--brand-primary)}
.hero--showcase .hero-proof{border-top:1px solid var(--line)}.hero--showcase .proof-item{color:var(--ink)}
.hero--showcase .hero-media{display:block;height:590px;position:relative;align-self:center;overflow:visible;z-index:1}
.hero--showcase .hero-media::before{content:"";position:absolute;right:-26px;bottom:-26px;width:72%;height:76%;background:var(--brand-accent);opacity:.92;z-index:-1;border-radius:32px 0 32px 0}
.hero--showcase .hero-media img{border-radius:28px 4px 28px 4px;box-shadow:0 30px 76px color-mix(in srgb,var(--brand-primary) 20%,transparent)}
.hero--showcase.hero--image-left .hero-copy{order:2}.hero--showcase.hero--image-left .hero-media{order:1}.hero--showcase.hero--image-left .hero-media::before{right:auto;left:-26px}

/* Repeatable About page section system. */
.about-builder-section{position:relative;overflow:hidden}
.about-builder-section--brand{background:color-mix(in srgb,var(--brand-accent) 9%,#fff)}
.about-builder-split{display:grid;grid-template-columns:minmax(0,.96fr) minmax(380px,1.04fr);gap:72px;align-items:center}
.about-builder-split--image-left .about-builder-copy{order:2}.about-builder-split--image-left .about-builder-media{order:1}
.about-builder-split--text-only{grid-template-columns:minmax(0,860px);justify-content:center}.about-builder-split--text-only .about-builder-copy{order:initial}
.about-builder-copy h2,.about-editorial h2,.about-section-head h2{font-size:clamp(2.45rem,4.3vw,4.7rem);max-width:900px}
.about-builder-copy .prose,.about-editorial .prose,.about-section-head .prose{margin-top:24px}
.about-builder-copy>.btn,.about-editorial>.btn{margin-top:28px}
.about-builder-media .media-frame{min-height:500px}
.about-inline-list{display:grid;grid-template-columns:1fr 1fr;gap:0 24px;margin-top:28px;border-top:1px solid var(--line)}
.about-inline-list>div{padding:15px 0;border-bottom:1px solid var(--line)}.about-inline-list strong{display:block;color:var(--heading);font-size:.9rem}.about-inline-list span{display:block;color:var(--muted);font-size:.76rem;margin-top:4px}
.about-editorial{max-width:980px;margin:0 auto}.about-editorial-prose{max-width:820px}.about-editorial-media{margin-top:44px}.about-editorial-media .media-frame{min-height:460px}
.about-section-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.7fr);gap:60px;align-items:end;margin-bottom:42px}.about-section-head--centered{display:block;text-align:center;max-width:850px;margin-left:auto;margin-right:auto}.about-section-head--centered .prose{max-width:700px;margin-left:auto;margin-right:auto}
.about-values-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
.about-values-grid article{padding:30px;min-height:220px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:color-mix(in srgb,#fff 94%,var(--brand-light))}.about-values-grid article>span{display:block;color:var(--brand-accent);font-weight:900;font-size:.78rem;letter-spacing:.08em}.about-values-grid h3{margin-top:32px}.about-values-grid p{margin-top:10px;color:var(--muted);font-size:.84rem}
.about-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));border:1px solid var(--line);background:#fff}.about-stats-grid>div{padding:32px;border-right:1px solid var(--line);text-align:center}.about-stats-grid>div:last-child{border-right:0}.about-stats-grid strong{display:block;color:var(--brand-accent);font-size:clamp(2rem,4vw,3.5rem);line-height:1;font-weight:900}.about-stats-grid span{display:block;color:var(--heading);font-weight:800;font-size:.78rem;margin-top:10px;text-transform:uppercase;letter-spacing:.06em}
.about-process-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line)}.about-process-grid article{padding:30px 30px 30px 0;border-bottom:1px solid var(--line);border-right:1px solid var(--line);margin-right:30px}.about-process-grid b{display:block;color:var(--brand-accent);font-size:2rem}.about-process-grid h3{margin-top:24px}.about-process-grid p{margin-top:10px;color:var(--muted);font-size:.84rem}
.about-accreditations{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.about-accreditations>div{padding:22px;border:1px solid var(--line);background:#fff;display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.about-accreditation-mark{width:32px;height:32px;display:grid;place-items:center;background:color-mix(in srgb,var(--brand-accent) 13%,#fff);color:var(--brand-accent);font-weight:900}.about-accreditations strong{color:var(--heading);font-size:.9rem}.about-accreditations small{grid-column:2;color:var(--muted);font-size:.74rem;margin-top:-7px}
.section-dark .about-builder-copy h2,.section-dark .about-editorial h2,.section-dark .about-section-head h2,.section-dark .about-inline-list strong{color:#fff}.section-dark .about-builder-copy .prose p,.section-dark .about-editorial .prose p,.section-dark .about-section-head .prose p,.section-dark .about-inline-list span{color:#bdcbd5}.section-dark .about-inline-list,.section-dark .about-inline-list>div{border-color:rgba(255,255,255,.14)}.section-dark .about-values-grid,.section-dark .about-values-grid article,.section-dark .about-stats-grid,.section-dark .about-accreditations>div{border-color:rgba(255,255,255,.14)}.section-dark .about-values-grid article,.section-dark .about-stats-grid,.section-dark .about-accreditations>div{background:rgba(255,255,255,.045)}.section-dark .about-values-grid h3,.section-dark .about-stats-grid span,.section-dark .about-accreditations strong{color:#fff}.section-dark .about-values-grid p,.section-dark .about-process-grid p,.section-dark .about-accreditations small{color:#b8c6d0}.section-dark .about-process-grid{border-color:rgba(255,255,255,.14)}.section-dark .about-process-grid article{border-color:rgba(255,255,255,.14)}

@media(max-width:1120px) and (min-width:681px){
  .hero--lead-form .hero-layout{grid-template-columns:minmax(0,.9fr) minmax(380px,.8fr);gap:36px}.hero--lead-form h1{font-size:clamp(3rem,5vw,4.7rem)}
  .hero--editorial .hero-layout,.hero--showcase .hero-layout{grid-template-columns:minmax(0,1fr) minmax(340px,.85fr);gap:38px}.hero--editorial .hero-media,.hero--showcase .hero-media{height:520px}
  .about-builder-split{grid-template-columns:1fr 1fr;gap:42px}.about-values-grid,.about-process-grid,.about-accreditations{grid-template-columns:repeat(2,1fr)}
}

@media(max-width:680px){
  .hero--lead-form,.hero--floating-panel,.hero--centered,.hero--editorial,.hero--showcase{min-height:0;display:block}
  .hero--lead-form .hero-layout,.hero--editorial .hero-layout,.hero--showcase .hero-layout{display:flex;flex-direction:column;min-height:0;padding-top:0;padding-bottom:0}
  .hero--lead-form .hero-copy,.hero--editorial .hero-copy,.hero--showcase .hero-copy{order:1;padding:48px 0 34px}
  .hero--lead-form .hero-form-wrap{order:2;max-width:none;padding-bottom:38px}
  .hero--lead-form .hero-copy{padding-top:78px}.hero--lead-form h1,.hero--editorial h1,.hero--showcase h1,.hero--centered h1{font-size:clamp(2.65rem,12vw,3.8rem)}
  .hero--lead-form[data-bg-mode="image"]>.hero-bg::after,.hero--centered[data-bg-mode="image"]>.hero-bg::after{background:linear-gradient(180deg,rgba(5,20,32,.52),rgba(5,20,32,.94))}
  .hero--lead-form .hero-proof{margin-top:25px}.hero--lead-form .proof-item{width:auto}
  .hero-form-wrap .form-card{padding:22px}.hero-form-wrap .form-grid{grid-template-columns:1fr}.hero-form-wrap .enquiry-form-heading{font-size:1.45rem}
  .hero--editorial .hero-media,.hero--showcase .hero-media{order:2;width:100%;height:320px!important;margin-bottom:38px;overflow:hidden}.hero--editorial.hero--image-left .hero-copy,.hero--showcase.hero--image-left .hero-copy{order:1}.hero--editorial.hero--image-left .hero-media,.hero--showcase.hero--image-left .hero-media{order:2}
  .hero--editorial .hero-media::after{display:none}.hero--showcase .hero-media::before{right:-12px!important;left:auto!important;bottom:-12px;width:72%;height:70%}.hero--showcase .hero-media img{border-radius:20px 4px 20px 4px}
  .hero--floating-panel .hero-layout{display:block;min-height:0;padding:70px 0}.hero--floating-panel .hero-copy{padding:30px 24px;margin:0;max-width:none}.hero--floating-panel h1{font-size:clamp(2.6rem,12vw,3.75rem)}
  .hero--centered .hero-layout{min-height:0}.hero--centered .hero-copy{padding:92px 0 70px}.hero--centered .hero-proof{gap:10px}.hero--centered .proof-item{width:auto}
  .about-builder-split{grid-template-columns:1fr;gap:34px}.about-builder-split .about-builder-copy,.about-builder-split .about-builder-media,.about-builder-split--image-left .about-builder-copy,.about-builder-split--image-left .about-builder-media{order:initial}.about-builder-media .media-frame{min-height:340px}
  .about-inline-list,.about-section-head,.about-values-grid,.about-process-grid,.about-accreditations{grid-template-columns:1fr}.about-section-head{gap:18px;margin-bottom:30px}.about-values-grid{border-left:1px solid var(--line)}.about-process-grid article{margin-right:0;padding-right:0;border-right:0}.about-stats-grid{grid-template-columns:1fr 1fr}.about-stats-grid>div:nth-child(2n){border-right:0}.about-stats-grid>div{border-bottom:1px solid var(--line)}.about-editorial-media .media-frame{min-height:330px}
}

/* V1.7 About mobile hardening: late count-specific rules from earlier builds must not
   override the one-column mobile layout, and CTA patterns must never widen the viewport. */
@media(max-width:680px){
  .stats--about.stats--count-2,.stats--about.stats--count-3{grid-template-columns:1fr}
  .stats--about .stat{min-width:0;width:100%}
  .cta--premium .cta-graphic{display:none!important}
}

/* Content-width presets are deliberately controlled, with Standard matching the
   established V1.6 homepage copy width so existing sites do not visually jump. */
.hero.hero--content-compact .hero-copy{max-width:620px}
.hero.hero--content-standard .hero-copy{max-width:800px}
.hero.hero--content-wide .hero-copy{max-width:940px}
.hero--floating-panel.hero--content-compact .hero-copy{max-width:580px}
.hero--floating-panel.hero--content-standard .hero-copy{max-width:690px}
.hero--floating-panel.hero--content-wide .hero-copy{max-width:820px}
.hero--centered.hero--content-compact .hero-copy{max-width:760px}
.hero--centered.hero--content-standard .hero-copy{max-width:900px}
.hero--centered.hero--content-wide .hero-copy{max-width:1050px}


/* ==========================================================
   V1.7.2 Footer Background Options
   ========================================================== */

/* Existing sites remain dark by default. The light option deliberately
   changes presentation only; palette accents, content and layout are shared. */
.footer.footer--light,
.footer--premium.footer--light{
  background:#fff;
  color:var(--brand-muted);
}

.footer--light .footer-intro{
  border-bottom-color:var(--brand-border);
}

.footer--light .footer-intro h2,
.footer--light .footer-phone strong,
.footer--light .footer-brand,
.footer--light .brand{
  color:var(--brand-heading);
}

.footer--light .footer-phone span,
.footer--light .footer--premium h4,
.footer--light h4{
  color:var(--brand-muted);
}

.footer--light .footer-grid a{
  color:color-mix(in srgb,var(--brand-body) 76%,var(--brand-muted));
}

.footer--light .footer-grid a:hover,
.footer--light a:hover{
  color:var(--brand-accent);
}

.footer--light .footer-bottom{
  border-top-color:var(--brand-border);
}

.footer--light .footer-credit-separator{
  color:color-mix(in srgb,var(--brand-muted) 45%,transparent);
}

.footer--light .toolbelt-credit,
.footer--light .footer .toolbelt-credit,
.footer.footer--light .toolbelt-credit{
  color:var(--brand-muted)!important;
}

.footer--light .toolbelt-credit:hover,
.footer.footer--light .toolbelt-credit:hover{
  color:var(--brand-accent)!important;
}

.footer--light .footer-service-label{
  color:var(--brand-muted);
}

.footer--light .footer-socials a{
  border-color:var(--brand-border);
  color:var(--brand-heading)!important;
  background:#fff;
}

.footer--light .footer-socials a:hover{
  border-color:var(--brand-accent);
  background:var(--brand-accent);
  color:var(--brand-accent-contrast)!important;
}

/* Footer always continues to use the normal/master logo. This is deliberate:
   the white footer is specifically useful for dark/coloured master logos. */
.footer--light .brand-logo-normal{
  opacity:1!important;
}
.footer--light .brand-logo-light{
  display:none!important;
}


/* ==========================================================
   V1.7.3 Final CTA Colour Styles
   ========================================================== */

/* Existing sites retain the current light CTA by default. */
.cta--premium.cta-tone--light{
  background:color-mix(in srgb,var(--brand-light) 88%,#fff);
  color:var(--brand-body);
  --cta-pattern-line:color-mix(in srgb,var(--brand-primary) 14%,transparent);
  --cta-pattern-accent:color-mix(in srgb,var(--brand-accent) 18%,transparent);
}

/* Controlled inverted option. Uses the central palette rather than a
   hard-coded black so the CTA still feels native to each website. */
.cta--premium.cta-tone--dark{
  background:
    linear-gradient(
      112deg,
      color-mix(in srgb,var(--brand-dark) 90%,var(--brand-primary)),
      var(--brand-dark)
    );
  color:#fff;
  border-top-color:color-mix(in srgb,#fff 11%,transparent);
  border-bottom-color:color-mix(in srgb,#fff 11%,transparent);
  --cta-pattern-line:color-mix(in srgb,#fff 13%,transparent);
  --cta-pattern-accent:color-mix(in srgb,var(--brand-accent) 30%,transparent);
}

.cta--premium.cta-tone--dark h2{
  color:#fff;
}

.cta--premium.cta-tone--dark p,
.cta--premium.cta-tone--dark .cta-proofline{
  color:color-mix(in srgb,#fff 72%,transparent);
}

.cta--premium.cta-tone--dark .cta-eyebrow{
  color:var(--brand-accent);
}

.cta--premium.cta-tone--dark .cta-rule,
.cta--premium.cta-tone--dark .cta-accent{
  background:var(--brand-accent);
}

/* Primary CTA remains the palette accent. The secondary phone action changes
   to a restrained glass/outline treatment so it does not disappear into the
   dark section background. */
.cta--premium.cta-tone--dark .btn-primary{
  background:var(--brand-accent);
  color:var(--brand-accent-contrast);
  border-color:var(--brand-accent);
}

.cta--premium.cta-tone--dark .btn-dark{
  background:color-mix(in srgb,#fff 7%,transparent);
  color:#fff;
  border:1px solid color-mix(in srgb,#fff 38%,transparent);
  backdrop-filter:blur(7px);
  -webkit-backdrop-filter:blur(7px);
}

.cta--premium.cta-tone--dark .btn-dark:hover{
  background:#fff;
  color:var(--brand-dark);
  border-color:#fff;
}

/* Pattern-specific decorative shapes inherit the dark-safe variables above. */
.cta--premium.cta-tone--dark::before{
  border-color:var(--cta-pattern-line);
}

.cta--premium.cta-tone--dark::after{
  background:var(--brand-accent);
  opacity:.11;
}

.cta--premium.cta-tone--dark .cta-graphic,
.cta--premium.cta-tone--dark .cta-graphic::before,
.cta--premium.cta-tone--dark .cta-graphic::after{
  border-color:var(--cta-pattern-accent);
}

@media (max-width:560px){
  .cta--premium.cta-tone--dark .btn-dark{
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
  }
}


/* ==========================================================
   V1.7.4 Footer Socket Typography Consistency
   ========================================================== */

/* Footer links previously inherited the general .footer a size (.8rem) while
   the copyright inherited .footer-bottom (.72rem), producing a visible 12px /
   13px mismatch. Keep the entire socket on one deliberate 13px type size. */
.footer-bottom,
.footer-bottom .footer-credit-line,
.footer-bottom .footer-credit-line > span,
.footer-bottom .toolbelt-credit,
.footer-bottom .footer-legal-links a,
.footer-bottom .footer-legal-links button,
.footer-bottom .concept-note{
  font-size:13px!important;
}

.footer-bottom .toolbelt-credit,
.footer-bottom .footer-legal-links a{
  line-height:1.45;
}

.footer-bottom .cookie-settings-link{
  line-height:1.45;
}


/* ==========================================================
   V1.8.0 Partners / Accreditations / Affiliations Strip
   ========================================================== */
.partner-strip{
  position:relative;
  overflow:hidden;
  padding:clamp(34px,4.8vw,70px) 0;
  border-top:1px solid var(--brand-border);
  border-bottom:1px solid var(--brand-border);
}
.partner-strip--white{background:#fff}
.partner-strip--soft{background:color-mix(in srgb,var(--brand-light) 88%,#fff)}
.partner-strip--dark{
  background:var(--brand-dark);
  border-color:color-mix(in srgb,#fff 10%,transparent);
}
.partner-strip-heading{
  margin:0 0 28px;
  text-align:center;
  font-size:clamp(1.15rem,1.6vw,1.55rem);
  color:var(--brand-heading);
}
.partner-strip--dark .partner-strip-heading{color:#fff}

.partner-strip-content{
  --partner-opacity:.64;
  --partner-gap:50px;
  --partner-logo-width:150px;
  --partner-logo-height:58px;
  --partner-duration:42s;
}
.partner-presentation--contained{
  padding:clamp(24px,3vw,38px);
  border:1px solid var(--brand-border);
  background:color-mix(in srgb,#fff 92%,var(--brand-light));
  box-shadow:0 18px 48px rgba(13,31,48,.06);
}
.partner-strip--dark .partner-presentation--contained{
  background:color-mix(in srgb,#fff 5%,var(--brand-dark));
  border-color:color-mix(in srgb,#fff 13%,transparent);
  box-shadow:none;
}

.partner-logo-viewport{
  overflow:hidden;
  width:100%;
}
.partner-edge-fade .partner-logo-viewport{
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 5%,#000 95%,transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0,#000 5%,#000 95%,transparent 100%);
}
.partner-logo-track{
  display:flex;
  align-items:center;
  width:max-content;
}
.partner-display--static .partner-logo-track{
  width:100%;
  justify-content:center;
}
.partner-logo-group{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:var(--partner-gap);
  flex:0 0 auto;
}
.partner-display--static .partner-logo-group{
  width:100%;
  flex-wrap:wrap;
}
.partner-display--marquee .partner-logo-track{
  gap:var(--partner-gap);
  animation:tbPartnerMarquee var(--partner-duration) linear infinite;
}
.partner-display--marquee:hover .partner-logo-track,
.partner-display--marquee:focus-within .partner-logo-track{
  animation-play-state:paused;
}
.partner-logo{
  display:flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  min-width:var(--partner-logo-width);
  min-height:var(--partner-logo-height);
  text-decoration:none;
}
.partner-logo img{
  display:block;
  width:auto;
  height:auto;
  max-width:var(--partner-logo-width);
  max-height:var(--partner-logo-height);
  object-fit:contain;
  opacity:var(--partner-opacity);
  transition:filter .28s ease,opacity .28s ease,transform .28s ease;
}
.partner-treatment--greyscale .partner-logo img,
.partner-treatment--greyscale-hover .partner-logo img{
  filter:grayscale(1);
}
.partner-treatment--greyscale-hover .partner-logo:hover img,
.partner-treatment--greyscale-hover .partner-logo:focus-visible img{
  filter:none;
  opacity:1;
  transform:translateY(-2px);
}
.partner-treatment--colour .partner-logo:hover img,
.partner-treatment--colour .partner-logo:focus-visible img,
.partner-treatment--greyscale .partner-logo:hover img,
.partner-treatment--greyscale .partner-logo:focus-visible img{
  opacity:1;
}
.partner-strip--dark .partner-treatment--greyscale .partner-logo img,
.partner-strip--dark .partner-treatment--greyscale-hover .partner-logo img{
  filter:grayscale(1) brightness(2.1) contrast(.68);
}
.partner-strip--dark .partner-treatment--greyscale-hover .partner-logo:hover img,
.partner-strip--dark .partner-treatment--greyscale-hover .partner-logo:focus-visible img{
  filter:none;
}
.partner-logo:focus-visible{
  outline:2px solid var(--brand-accent);
  outline-offset:8px;
}

.about-builder-section--partners .partner-strip-content{
  margin-top:28px;
}
.about-builder-section--partners .partner-presentation--contained{
  margin-left:auto;
  margin-right:auto;
}

@keyframes tbPartnerMarquee{
  from{transform:translateX(0)}
  to{transform:translateX(calc(-50% - (var(--partner-gap) / 2)))}
}

@media(max-width:760px){
  .partner-strip{padding:32px 0}
  .partner-strip-content{
    --partner-logo-width:min(124px,31vw)!important;
    --partner-logo-height:48px!important;
    --partner-gap:30px!important;
  }
  .partner-presentation--contained{padding:22px 18px}
  .partner-strip-heading{margin-bottom:22px}
  .partner-edge-fade .partner-logo-viewport{
    -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 8%,#000 92%,transparent 100%);
    mask-image:linear-gradient(90deg,transparent 0,#000 8%,#000 92%,transparent 100%);
  }
}
@media(prefers-reduced-motion:reduce){
  .partner-display--marquee .partner-logo-track{animation:none!important}
  .partner-display--marquee .partner-logo-group[aria-hidden="true"]{display:none}
  .partner-display--marquee .partner-logo-track{width:100%;justify-content:center}
  .partner-display--marquee .partner-logo-group{width:100%;flex-wrap:wrap}
  .partner-logo img{transition:none!important}
}


/* ==========================================================
   V1.8.1 Footer Typography Consistency
   ========================================================== */

/* Keep the footer hierarchy deliberate and consistent:
   column headings = 14px
   supporting text / links / socket = 13px */
.footer .footer-grid h4,
.footer--premium .footer-grid h4{
  font-size:14px!important;
  line-height:1.35;
}

.footer .footer-grid p,
.footer--premium .footer-grid p,
.footer .footer-grid a,
.footer--premium .footer-grid a,
.footer .footer-service-label,
.footer--premium .footer-service-label{
  font-size:13px!important;
  line-height:1.65;
}

/* Contact details in footer columns should follow the same 13px body scale. */
.footer .footer-grid .footer-contact,
.footer .footer-grid .footer-contact a,
.footer .footer-grid .footer-contact span,
.footer--premium .footer-grid .footer-contact,
.footer--premium .footer-grid .footer-contact a,
.footer--premium .footer-grid .footer-contact span{
  font-size:13px!important;
}

/* Preserve the socket standard introduced in V1.7.4. */
.footer-bottom,
.footer-bottom .footer-credit-line,
.footer-bottom .footer-credit-line > span,
.footer-bottom .toolbelt-credit,
.footer-bottom .footer-legal-links a,
.footer-bottom .footer-legal-links button,
.footer-bottom .concept-note{
  font-size:13px!important;
}


/* ==========================================================
   V1.8.2 Footer Socket Size Refinement
   ========================================================== */

/* Keep the main footer hierarchy:
   headings = 14px
   body / column links = 13px
   bottom socket / legal = 12px */
.footer-bottom,
.footer-bottom .footer-credit-line,
.footer-bottom .footer-credit-line > span,
.footer-bottom .toolbelt-credit,
.footer-bottom .footer-legal-links a,
.footer-bottom .footer-legal-links button,
.footer-bottom .concept-note{
  font-size:12px!important;
  line-height:1.5;
}


/* ==========================================================
   V1.9.0 Service Page Content Builder
   ========================================================== */
.service-rich-content{color:var(--muted);font-size:1rem;line-height:1.78}
.service-rich-content>p{margin:0 0 18px}
.service-rich-content h2{color:var(--heading);margin:42px 0 18px}
.service-rich-content h3{color:var(--heading);font-size:clamp(1.25rem,2vw,1.65rem);line-height:1.16;letter-spacing:-.018em;margin:30px 0 12px}
.service-rich-content ul,.service-rich-content ol{margin:16px 0 24px;padding-left:1.4em}
.service-rich-content li{margin:8px 0;padding-left:5px}
.service-rich-content li::marker{color:var(--brand-accent);font-weight:800}
.service-rich-content strong{color:var(--heading)}
.service-rich-content a{color:var(--brand-accent);font-weight:750;text-decoration:underline;text-underline-offset:3px}

.service-builder-section{position:relative;overflow:hidden}
.service-builder-section--brand{background:color-mix(in srgb,var(--brand-accent) 8%,#fff)}
.service-builder-split{display:grid;grid-template-columns:minmax(0,.95fr) minmax(380px,1.05fr);gap:72px;align-items:center}
.service-builder-split--align-top{align-items:start}
.service-builder-split--align-center{align-items:center}
.service-builder-split--align-bottom{align-items:end}
.service-builder-split--image-left .service-builder-copy{order:2}
.service-builder-split--image-left .service-builder-media{order:1}
.service-builder-split--text-only{grid-template-columns:minmax(0,900px);justify-content:center}
.service-rich-content h2,.service-builder-copy h2,.service-editorial>h2,.service-section-head h2,.service-inline-cta h2{font-size:clamp(2.4rem,4.2vw,4.6rem);line-height:.98;letter-spacing:-.04em}
.service-builder-copy>.service-rich-content,.service-editorial>.service-rich-content{margin-top:24px}
.service-builder-copy>.btn{margin-top:26px}
.service-builder-media .media-frame{min-height:500px}
.service-editorial{max-width:930px;margin:0 auto}
.service-editorial>.service-rich-content{max-width:840px}
.service-section-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.72fr);gap:60px;align-items:end;margin-bottom:42px}
.service-section-head--centered{display:block;text-align:center;max-width:850px;margin-left:auto;margin-right:auto}
.service-section-head--centered .service-rich-content{max-width:700px;margin:22px auto 0}
.service-section-head .service-rich-content{font-size:.95rem}

.service-benefits-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
.service-benefits-grid article{padding:32px;min-height:220px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:color-mix(in srgb,#fff 94%,var(--brand-light))}
.service-benefits-grid article>span{display:block;color:var(--brand-accent);font-weight:900;font-size:.78rem;letter-spacing:.08em}
.service-benefits-grid h3{margin-top:32px;font-size:1.25rem}
.service-benefits-grid p{margin-top:10px;color:var(--muted);font-size:.84rem;line-height:1.62}

.service-process-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line)}
.service-process-grid article{padding:32px 32px 32px 0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);margin-right:32px}
.service-process-grid b{display:block;color:var(--brand-accent);font-size:2rem;line-height:1}
.service-process-grid h3{margin-top:24px;font-size:1.25rem}
.service-process-grid p{margin-top:10px;color:var(--muted);font-size:.84rem;line-height:1.62}

.service-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));border:1px solid var(--line);background:#fff}
.service-stats-grid>div{padding:34px;border-right:1px solid var(--line);text-align:center}
.service-stats-grid>div:last-child{border-right:0}
.service-stats-grid strong{display:block;color:var(--brand-accent);font-size:clamp(2rem,4vw,3.7rem);line-height:1;font-weight:900}
.service-stats-grid span{display:block;color:var(--heading);font-weight:800;font-size:.78rem;margin-top:11px;text-transform:uppercase;letter-spacing:.06em}

.service-faq-list{max-width:960px;margin:0 auto;border-top:1px solid var(--line)}
/* V2.18.40 — FAQs line up with the section eyebrow/H2 at the container edge.
   Scoped only to Service FAQ sections; homepage and Case Study accordions remain intact. */
.service-builder-section--faq .service-faq-list{max-width:none;width:100%;margin-left:0;margin-right:0}
.service-builder-section--faq .service-faq-list .service-faq-answer{white-space:normal;overflow-wrap:anywhere;font-weight:400}
.service-faq-learn-more{display:block;width:max-content;max-width:100%;margin-top:12px;color:var(--brand-accent);font-size:.85rem;font-weight:800;text-decoration:none}
.service-faq-learn-more:hover{text-decoration:underline;text-underline-offset:3px}
.service-faq-list details{border-bottom:1px solid var(--line)}
.service-faq-list summary{list-style:none;cursor:pointer;padding:22px 0;display:flex;align-items:center;justify-content:space-between;gap:18px;color:var(--heading);font-weight:800;font-size:1rem}
.service-faq-list summary::-webkit-details-marker{display:none}
.service-faq-list summary span{color:var(--brand-accent);font-size:1.4rem;transition:transform .2s ease}
.service-faq-list details[open] summary span{transform:rotate(45deg)}
.service-faq-list details>div{padding:0 0 24px;color:var(--muted);max-width:800px;line-height:1.7;font-size:.92rem}

.service-inline-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:60px;align-items:center}
.service-inline-cta .service-rich-content{max-width:760px;margin-top:20px}
.service-inline-cta-actions{display:flex;flex-direction:column;min-width:250px;gap:10px}

.section-dark .service-rich-content,.section-dark .service-builder-copy .service-rich-content,.section-dark .service-section-head .service-rich-content{color:#bdcbd5}
.section-dark .service-rich-content h2,.section-dark .service-rich-content h3,.section-dark .service-rich-content strong,
.section-dark .service-builder-copy h2,.section-dark .service-editorial>h2,.section-dark .service-section-head h2,.section-dark .service-inline-cta h2{color:#fff}
.section-dark .service-benefits-grid,.section-dark .service-benefits-grid article,.section-dark .service-process-grid,.section-dark .service-process-grid article,.section-dark .service-stats-grid,.section-dark .service-faq-list,.section-dark .service-faq-list details{border-color:rgba(255,255,255,.14)}
.section-dark .service-benefits-grid article,.section-dark .service-stats-grid{background:rgba(255,255,255,.045)}
.section-dark .service-benefits-grid h3,.section-dark .service-process-grid h3,.section-dark .service-stats-grid span,.section-dark .service-faq-list summary{color:#fff}
.section-dark .service-benefits-grid p,.section-dark .service-process-grid p,.section-dark .service-faq-list details>div{color:#bdcbd5}

@media(max-width:1050px) and (min-width:681px){
  .service-builder-split{grid-template-columns:1fr 1fr;gap:42px}
  .service-benefits-grid,.service-process-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:680px){
  .service-builder-split{grid-template-columns:1fr;gap:32px;align-items:stretch}
  .service-detail-grid .service-media{align-self:auto}
  .service-builder-split .service-builder-copy,.service-builder-split .service-builder-media,
  .service-builder-split--image-left .service-builder-copy,.service-builder-split--image-left .service-builder-media{order:initial}
  .service-builder-media .media-frame{min-height:330px}
  .service-section-head,.service-benefits-grid,.service-process-grid{grid-template-columns:1fr}
  .service-section-head{gap:18px;margin-bottom:30px}
  .service-benefits-grid article{min-height:0;padding:26px}
  .service-process-grid article{margin-right:0;padding-right:0;border-right:0}
  .service-stats-grid{grid-template-columns:1fr 1fr}
  .service-stats-grid>div:nth-child(2n){border-right:0}
  .service-stats-grid>div{border-bottom:1px solid var(--line)}
  .service-inline-cta{grid-template-columns:1fr;gap:28px}
  .service-inline-cta-actions{min-width:0;width:100%}
  .service-inline-cta-actions .btn{width:100%}
  .service-rich-content h2,.service-builder-copy h2,.service-editorial>h2,.service-section-head h2,.service-inline-cta h2{font-size:clamp(1.8rem,8vw,2.5rem)}
  .service-rich-content h2{margin-top:34px}
  .service-rich-content h3{font-size:1.2rem}
}


/* ==========================================================
   V1.9.1 Why Choose Us — controlled 5-layout library
   ========================================================== */
.why-section{position:relative;overflow:hidden;isolation:isolate}
.why-section>.container{position:relative;z-index:3}
.why-section .why-pattern-art{position:absolute;inset:0;pointer-events:none;z-index:2;opacity:.8}
.why-section.why-pattern--none .why-pattern-art{display:none}
.why-section.why-pattern--watermark .why-pattern-art{display:none}
.why-section.why-pattern--rings .why-pattern-art::before,.why-section.why-pattern--rings .why-pattern-art::after{content:"";position:absolute;border:1px solid color-mix(in srgb,var(--brand-accent) 28%,transparent);border-radius:50%}
.why-section.why-pattern--rings .why-pattern-art::before{width:520px;height:520px;right:-180px;top:-250px}.why-section.why-pattern--rings .why-pattern-art::after{width:300px;height:300px;right:70px;bottom:-170px;opacity:.55}
.why-section.why-pattern--frames .why-pattern-art::before,.why-section.why-pattern--frames .why-pattern-art::after{content:"";position:absolute;width:280px;height:210px;border:1px solid color-mix(in srgb,var(--brand-accent) 24%,transparent);transform:rotate(9deg);right:-45px;bottom:-70px}.why-section.why-pattern--frames .why-pattern-art::after{right:15px;bottom:-25px;opacity:.45}
.why-section.why-pattern--diagonal .why-pattern-art{background:repeating-linear-gradient(118deg,transparent 0 70px,color-mix(in srgb,var(--brand-accent) 6%,transparent) 70px 71px);opacity:.75}
.why-section.why-pattern--dots .why-pattern-art{background-image:radial-gradient(circle,color-mix(in srgb,var(--brand-accent) 26%,transparent) 1.2px,transparent 1.3px);background-size:24px 24px;mask-image:linear-gradient(90deg,transparent 0,transparent 45%,#000 100%);opacity:.45}

/* Current Split Panel — remains the default and deliberately close to V1.9.0. */
.home-premium .why-layout--split-panel{background:linear-gradient(115deg,var(--navy-2),color-mix(in srgb,var(--navy) 88%,#000))}
.home-premium .why-layout--split-panel .why-grid{position:relative;z-index:3;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:100px;align-items:center}
.home-premium .why-layout--split-panel .why-copy{position:static}.home-premium .why-layout--split-panel .why-copy h2{max-width:590px}.home-premium .why-layout--split-panel .why-copy .lead{margin-top:28px;max-width:510px;color:rgba(255,255,255,.66)}
.home-premium .why-layout--split-panel .why-reasons-grid{border:0;gap:1px;background:rgba(255,255,255,.12)}
.home-premium .why-layout--split-panel .reason{min-height:230px;padding:36px;background:rgba(6,28,44,.92);border:0;transition:.25s ease}.home-premium .why-layout--split-panel .reason:hover{background:rgba(255,255,255,.055)}
.home-premium .why-layout--split-panel .reason b{font-size:.75rem;letter-spacing:.15em;color:var(--brand-accent)}.home-premium .why-layout--split-panel .reason strong{font-size:1.08rem;margin-top:40px}.home-premium .why-layout--split-panel .reason p{font-size:.76rem;line-height:1.65;margin-top:10px;color:rgba(255,255,255,.58)}

/* Full-Bleed Image + Overlay */
.why-layout--image-overlay{background:linear-gradient(115deg,var(--brand-dark),color-mix(in srgb,var(--brand-dark) 86%,#000));min-height:720px;display:flex;align-items:center}
.why-layout--image-overlay .why-bg-media{position:absolute;inset:0;background-size:cover;background-repeat:no-repeat;z-index:0;transform:scale(1.015)}
.why-layout--image-overlay::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,color-mix(in srgb,var(--brand-dark) 96%,transparent) 0%,color-mix(in srgb,var(--brand-dark) 88%,transparent) 42%,color-mix(in srgb,var(--brand-dark) 68%,transparent) 100%)}
.why-layout--image-overlay.why-overlay--light::before{background:linear-gradient(90deg,color-mix(in srgb,var(--brand-dark) 90%,transparent),color-mix(in srgb,var(--brand-dark) 52%,transparent))}.why-layout--image-overlay.why-overlay--strong::before{background:linear-gradient(90deg,color-mix(in srgb,var(--brand-dark) 98%,transparent),color-mix(in srgb,var(--brand-dark) 82%,transparent))}
.why-overlay-layout{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:82px;align-items:center}.why-overlay-copy h2{max-width:620px}.why-overlay-copy .lead{max-width:530px;margin-top:26px;color:rgba(255,255,255,.74)}
.why-overlay-reasons{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.why-overlay-card{min-height:220px;padding:32px;background:color-mix(in srgb,var(--brand-dark) 78%,transparent);border:1px solid rgba(255,255,255,.16);box-shadow:0 18px 45px rgba(0,0,0,.12)}
.why-glass-cards .why-overlay-card{background:rgba(8,28,35,.38);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.why-overlay-card b{display:block;color:var(--brand-accent);font-size:.75rem;letter-spacing:.14em}.why-overlay-card strong{display:block;color:#fff;margin-top:32px;font-size:1.08rem}.why-overlay-card p{color:rgba(255,255,255,.68);font-size:.79rem;line-height:1.65;margin-top:10px}

/* Premium Light Editorial */
.why-layout--light-editorial{background:#fff;color:var(--heading)}.why-layout--light-editorial .why-watermark{color:color-mix(in srgb,var(--brand-dark) 3%,transparent)}
.why-editorial-head{text-align:center;max-width:900px;margin:0 auto 64px}.why-editorial-head h2{font-size:clamp(2.8rem,5.5vw,5.6rem);line-height:.95;letter-spacing:-.055em}.why-editorial-head .lead{max-width:690px;margin:26px auto 0;color:var(--muted)}
.why-editorial-reasons{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}.why-editorial-reasons article{padding:34px 30px 38px;min-height:235px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:rgba(255,255,255,.88)}
.why-editorial-reasons b{display:block;color:var(--brand-accent);font-size:.72rem;letter-spacing:.15em}.why-editorial-reasons strong{display:block;color:var(--heading);margin-top:42px;font-size:1.07rem}.why-editorial-reasons p{color:var(--muted);font-size:.77rem;line-height:1.68;margin-top:11px}

/* Image + Stacked Benefits */
.why-layout--image-benefits{background:color-mix(in srgb,var(--brand-light) 45%,#fff)}.why-image-benefits{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:88px;align-items:center}.why-feature-media{position:relative}.why-feature-frame .tb-image-frame-surface{min-height:610px}.why-feature-frame img{object-position:var(--why-image-position,center center)}
.why-feature-placeholder{min-height:610px;background:linear-gradient(145deg,var(--brand-dark),color-mix(in srgb,var(--brand-dark) 75%,var(--brand-accent)));display:flex;align-items:flex-end;padding:36px;overflow:hidden}.why-feature-placeholder span{font-size:clamp(8rem,17vw,15rem);font-weight:950;color:rgba(255,255,255,.05);line-height:.75;letter-spacing:-.1em}
.why-benefits-copy h2{font-size:clamp(2.7rem,5vw,5.2rem);line-height:.97;letter-spacing:-.052em}.why-benefits-copy>.lead{margin-top:25px;color:var(--muted);max-width:650px}.why-stacked-benefits{margin-top:36px;border-top:1px solid var(--line)}.why-stacked-benefits article{display:grid;grid-template-columns:64px 1fr;gap:22px;padding:22px 0;border-bottom:1px solid var(--line)}.why-stacked-benefits b{color:var(--brand-accent);font-size:.72rem;letter-spacing:.13em;padding-top:4px}.why-stacked-benefits strong{color:var(--heading);font-size:1rem}.why-stacked-benefits p{color:var(--muted);font-size:.76rem;line-height:1.6;margin-top:5px}

/* Feature Cards / Statement Grid */
.why-layout--statement-grid{background:color-mix(in srgb,var(--brand-light) 25%,#fff)}.why-statement-layout{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.why-statement-layout>article{background:#fff;min-height:270px;padding:34px}.why-statement-intro{grid-column:span 2;grid-row:span 2;min-height:541px!important;padding:52px!important;display:flex;flex-direction:column;justify-content:flex-end;position:relative;overflow:hidden}.why-statement-intro::before{content:"";position:absolute;right:-90px;top:-100px;width:300px;height:300px;border-radius:50%;background:var(--brand-accent);opacity:.07}.why-statement-intro h2{font-size:clamp(3.1rem,6vw,6.2rem);line-height:.92;letter-spacing:-.06em;max-width:750px}.why-statement-intro .lead{max-width:610px;margin-top:24px;color:var(--muted)}
.why-statement-card{transition:.22s ease}.why-statement-card:nth-of-type(2){background:var(--brand-dark)}.why-statement-card:nth-of-type(2) strong{color:#fff}.why-statement-card:nth-of-type(2) p{color:rgba(255,255,255,.64)}.why-statement-card:hover{transform:translateY(-2px);box-shadow:0 16px 40px rgba(9,31,45,.08);z-index:2}.why-statement-card b{display:block;color:var(--brand-accent);font-size:.72rem;letter-spacing:.15em}.why-statement-card strong{display:block;color:var(--heading);font-size:1.05rem;margin-top:54px}.why-statement-card p{color:var(--muted);font-size:.76rem;line-height:1.65;margin-top:10px}

/* Dark variants and pattern contrast */
.why-section.section-dark.why-pattern--rings .why-pattern-art::before,.why-section.section-dark.why-pattern--rings .why-pattern-art::after,.why-section.section-dark.why-pattern--frames .why-pattern-art::before,.why-section.section-dark.why-pattern--frames .why-pattern-art::after{border-color:rgba(255,255,255,.11)}
.why-section.section-dark.why-pattern--diagonal .why-pattern-art{background:repeating-linear-gradient(118deg,transparent 0 70px,rgba(255,255,255,.025) 70px 71px)}.why-section.section-dark.why-pattern--dots .why-pattern-art{background-image:radial-gradient(circle,rgba(255,255,255,.12) 1.2px,transparent 1.3px)}

@media(max-width:1120px){.why-overlay-layout,.why-image-benefits{gap:50px}.why-statement-layout{grid-template-columns:repeat(2,1fr)}.why-statement-intro{grid-column:span 2;grid-row:auto;min-height:420px!important}}
@media(max-width:900px){.why-overlay-layout,.why-image-benefits{grid-template-columns:1fr}.why-layout--image-overlay{min-height:0}.why-overlay-reasons{grid-template-columns:repeat(2,1fr)}.why-feature-media{max-width:720px}.why-feature-frame .tb-image-frame-surface,.why-feature-placeholder{min-height:480px}.why-layout--split-panel .why-grid{grid-template-columns:1fr!important;gap:48px!important}}
@media(max-width:680px){.why-section{padding-top:78px;padding-bottom:78px}.why-overlay-reasons{grid-template-columns:1fr}.why-overlay-card{min-height:0;padding:26px}.why-overlay-card strong{margin-top:24px}.why-editorial-head{text-align:left;margin-bottom:38px}.why-editorial-reasons{grid-template-columns:1fr}.why-editorial-reasons article{min-height:0;padding:27px 24px}.why-editorial-reasons strong{margin-top:28px}.why-feature-frame .tb-image-frame-surface,.why-feature-placeholder{min-height:360px}.why-image-benefits{gap:38px}.why-statement-layout{grid-template-columns:1fr}.why-statement-intro{grid-column:auto;min-height:390px!important;padding:34px!important}.why-statement-layout>article{min-height:0;padding:28px}.why-statement-card strong{margin-top:30px}.why-stacked-benefits article{grid-template-columns:45px 1fr;gap:12px}.why-layout--image-overlay::before{background:color-mix(in srgb,var(--brand-dark) 84%,transparent)!important}.why-section.why-pattern--rings .why-pattern-art::before{width:340px;height:340px;right:-170px}.why-section.why-pattern--dots .why-pattern-art{mask-image:linear-gradient(180deg,transparent 0,#000 100%)}}


/* ==========================================================
   V1.9.2 Why Choose Us — numbering + palette card controls
   ========================================================== */

/* Palette-role card variables.
   Automatic deliberately leaves every V1.9.1 layout unchanged. */
.why-card-colour--primary{
  --why-card-bg:var(--brand-primary);
  --why-card-text:#fff;
  --why-card-muted:rgba(255,255,255,.68);
  --why-card-border:color-mix(in srgb,#fff 16%,transparent);
  --why-card-number:var(--brand-accent);
}
.why-card-colour--secondary{
  --why-card-bg:var(--brand-secondary);
  --why-card-text:#fff;
  --why-card-muted:rgba(255,255,255,.70);
  --why-card-border:color-mix(in srgb,#fff 17%,transparent);
  --why-card-number:var(--brand-accent);
}
.why-card-colour--dark{
  --why-card-bg:var(--brand-dark);
  --why-card-text:#fff;
  --why-card-muted:rgba(255,255,255,.66);
  --why-card-border:color-mix(in srgb,#fff 14%,transparent);
  --why-card-number:var(--brand-accent);
}
.why-card-colour--accent{
  --why-card-bg:var(--brand-accent);
  --why-card-text:var(--brand-accent-contrast);
  --why-card-muted:color-mix(in srgb,var(--brand-accent-contrast) 68%,transparent);
  --why-card-border:color-mix(in srgb,var(--brand-accent-contrast) 18%,transparent);
  --why-card-number:var(--brand-accent-contrast);
}
.why-card-colour--light{
  --why-card-bg:var(--brand-light);
  --why-card-text:var(--brand-heading);
  --why-card-muted:var(--brand-muted);
  --why-card-border:var(--brand-border);
  --why-card-number:var(--brand-accent);
}

/* Apply the selected palette role to each layout's benefit/card treatment. */
.why-section:not(.why-card-colour--auto) .reason,
.why-section:not(.why-card-colour--auto) .why-overlay-card,
.why-section:not(.why-card-colour--auto) .why-editorial-reasons article,
.why-section:not(.why-card-colour--auto) .why-stacked-benefits article,
.why-section:not(.why-card-colour--auto) .why-statement-card{
  background:var(--why-card-bg);
  border-color:var(--why-card-border);
  color:var(--why-card-text);
}

.why-section:not(.why-card-colour--auto) .reason strong,
.why-section:not(.why-card-colour--auto) .why-overlay-card strong,
.why-section:not(.why-card-colour--auto) .why-editorial-reasons strong,
.why-section:not(.why-card-colour--auto) .why-stacked-benefits strong,
.why-section:not(.why-card-colour--auto) .why-statement-card strong{
  color:var(--why-card-text);
}
.why-section:not(.why-card-colour--auto) .reason p,
.why-section:not(.why-card-colour--auto) .why-overlay-card p,
.why-section:not(.why-card-colour--auto) .why-editorial-reasons p,
.why-section:not(.why-card-colour--auto) .why-stacked-benefits p,
.why-section:not(.why-card-colour--auto) .why-statement-card p{
  color:var(--why-card-muted);
}
.why-section:not(.why-card-colour--auto) .reason b,
.why-section:not(.why-card-colour--auto) .why-overlay-card b,
.why-section:not(.why-card-colour--auto) .why-editorial-reasons b,
.why-section:not(.why-card-colour--auto) .why-stacked-benefits b,
.why-section:not(.why-card-colour--auto) .why-statement-card b{
  color:var(--why-card-number);
}

/* The image-overlay glass treatment remains available with palette-selected cards.
   Selecting a role tints the glass using that palette colour instead of reverting
   to the old hard-coded dark glass. */
.why-section:not(.why-card-colour--auto).why-glass-cards .why-overlay-card{
  background:color-mix(in srgb,var(--why-card-bg) 74%,transparent);
  border-color:var(--why-card-border);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
}

/* Image + Benefits is a stacked-list layout rather than a card grid.
   Only palette-selected modes turn those rows into intentional coloured panels. */
.why-section:not(.why-card-colour--auto) .why-stacked-benefits{
  border-top:0;
  display:grid;
  gap:8px;
}
.why-section:not(.why-card-colour--auto) .why-stacked-benefits article{
  border:1px solid var(--why-card-border);
  padding:19px 21px;
}

/* Number-free mode: remove the visual gap that was reserved for 01/02/03/04. */
.home-premium .why-section.why-no-numbers .reason strong,
.home-premium .why-section.why-no-numbers .why-overlay-card strong,
.home-premium .why-section.why-no-numbers .why-editorial-reasons strong,
.home-premium .why-section.why-no-numbers .why-statement-card strong{
  margin-top:0;
}
.home-premium .why-section.why-no-numbers .why-stacked-benefits article{
  grid-template-columns:1fr;
}
.home-premium .why-section.why-no-numbers .why-stacked-benefits article>div{
  grid-column:1;
}
.home-premium .why-section.why-no-numbers.why-card-colour--auto .why-stacked-benefits article{
  padding-top:20px;
  padding-bottom:20px;
}

/* Keep hover states palette-consistent instead of revealing the legacy card colour. */
.why-section:not(.why-card-colour--auto) .reason:hover,
.why-section:not(.why-card-colour--auto) .why-statement-card:hover{
  background:color-mix(in srgb,var(--why-card-bg) 92%,var(--why-card-text));
}

@media(max-width:680px){
  .why-section:not(.why-card-colour--auto) .why-stacked-benefits article{padding:17px 18px}
}


/* ==========================================================
   V1.9.3 Emergency Contact Strip — 5 controlled layouts
   ========================================================== */
.emergency-strip{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  --emergency-text:var(--brand-heading);
  --emergency-muted:var(--brand-muted);
  --emergency-action-bg:var(--brand-accent);
  --emergency-action-text:var(--brand-accent-contrast);
}
.emergency-strip-container{position:relative;z-index:2}

/* The desktop trust strip intentionally floats over the following section.
   Give an emergency strip placed directly beneath it enough breathing room
   so the overlap feels designed rather than clipping the emergency content. */
@media(min-width:981px){
  .home-premium .trust-strip--floating + .emergency-strip{padding-top:34px}
}
.emergency-strip-inner{
  min-height:138px;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:28px;
  padding:26px 30px;
}
.emergency-strip-icon{
  width:54px;
  height:54px;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  border:1px solid var(--brand-border);
  color:var(--brand-accent);
}
.emergency-strip-icon svg{width:25px;height:25px;fill:currentColor}
.emergency-strip-copy{min-width:0}
.emergency-strip-label{
  display:block;
  margin-bottom:7px;
  color:var(--brand-accent);
  font-size:.66rem;
  font-weight:900;
  line-height:1.2;
  letter-spacing:.16em;
  text-transform:uppercase;
}
.emergency-strip-copy p{
  max-width:780px;
  color:var(--emergency-text);
  font-size:.94rem;
  font-weight:650;
  line-height:1.55;
}
.emergency-strip-actions{
  display:flex;
  align-items:stretch;
  justify-content:flex-end;
  gap:10px;
  flex-wrap:wrap;
}
.emergency-strip-phone,
.emergency-strip-button{
  min-height:56px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  transition:transform .2s ease,background .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease;
}
.emergency-strip-phone{
  min-width:184px;
  flex-direction:column;
  align-items:flex-start;
  padding:9px 18px;
  border:1px solid var(--brand-border);
  background:#fff;
}
.emergency-strip-phone span{
  color:var(--emergency-muted);
  font-size:.58rem;
  font-weight:850;
  line-height:1.2;
  letter-spacing:.11em;
  text-transform:uppercase;
}
.emergency-strip-phone strong{
  margin-top:4px;
  color:var(--emergency-text);
  font-size:.91rem;
  line-height:1.2;
  letter-spacing:-.015em;
}
.emergency-strip-button{
  min-width:168px;
  padding:0 22px;
  background:var(--emergency-action-bg);
  color:var(--emergency-action-text);
  border:1px solid var(--emergency-action-bg);
  font-size:.79rem;
  font-weight:900;
}
.emergency-strip-phone:hover,
.emergency-strip-button:hover{transform:translateY(-2px)}
.emergency-strip-button:hover{box-shadow:0 12px 28px color-mix(in srgb,var(--brand-accent) 22%,transparent)}

/* 01 — Solid Alert Bar */
.emergency-strip--solid-alert{
  background:var(--brand-accent);
  --emergency-text:var(--brand-accent-contrast);
  --emergency-muted:color-mix(in srgb,var(--brand-accent-contrast) 68%,transparent);
  --emergency-action-bg:var(--brand-dark);
  --emergency-action-text:#fff;
}
.emergency-strip--solid-alert .emergency-strip-inner{min-height:124px}
.emergency-strip--solid-alert .emergency-strip-icon{
  border-color:color-mix(in srgb,var(--brand-accent-contrast) 24%,transparent);
  background:color-mix(in srgb,var(--brand-accent-contrast) 8%,transparent);
  color:var(--brand-accent-contrast);
}
.emergency-strip--solid-alert .emergency-strip-label{color:var(--brand-accent-contrast);opacity:.72}
.emergency-strip--solid-alert .emergency-strip-phone{
  background:transparent;
  border-color:color-mix(in srgb,var(--brand-accent-contrast) 28%,transparent);
}
.emergency-strip--solid-alert .emergency-strip-phone span,
.emergency-strip--solid-alert .emergency-strip-phone strong{color:var(--brand-accent-contrast)}

/* 02 — Split Accent */
.emergency-strip--split-accent{
  background:var(--brand-dark);
  --emergency-text:#fff;
  --emergency-muted:rgba(255,255,255,.60);
}
.emergency-strip--split-accent::after{
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:6px;
  background:var(--brand-accent);
}
.emergency-strip--split-accent .emergency-strip-icon{
  width:62px;
  height:62px;
  border:0;
  background:var(--brand-accent);
  color:var(--brand-accent-contrast);
}
.emergency-strip--split-accent .emergency-strip-label{color:var(--brand-accent)}
.emergency-strip--split-accent .emergency-strip-phone{
  background:color-mix(in srgb,#fff 4%,transparent);
  border-color:rgba(255,255,255,.18);
}
.emergency-strip--split-accent .emergency-strip-phone span{color:rgba(255,255,255,.52)}
.emergency-strip--split-accent .emergency-strip-phone strong{color:#fff}

/* 03 — Light Premium */
.emergency-strip--light-premium{
  background:#fff;
  border-top:1px solid var(--brand-border);
  border-bottom:1px solid var(--brand-border);
}
.emergency-strip--light-premium::before{
  content:"";
  position:absolute;
  left:0;
  right:0;
  top:0;
  height:3px;
  background:linear-gradient(90deg,var(--brand-accent) 0 18%,transparent 18%);
}
.emergency-strip--light-premium .emergency-strip-inner{padding-top:31px;padding-bottom:31px}
.emergency-strip--light-premium .emergency-strip-icon{
  border-color:color-mix(in srgb,var(--brand-accent) 28%,var(--brand-border));
  background:color-mix(in srgb,var(--brand-accent) 7%,#fff);
}
.emergency-strip--light-premium .emergency-strip-phone{
  background:var(--brand-light);
  border-color:var(--brand-border);
}

/* 04 — Dark Gradient */
.emergency-strip--dark-gradient{
  background:
    radial-gradient(circle at 83% 20%,color-mix(in srgb,var(--brand-accent) 16%,transparent) 0,transparent 24%),
    linear-gradient(118deg,var(--brand-dark),var(--brand-primary));
  --emergency-text:#fff;
  --emergency-muted:rgba(255,255,255,.58);
}
.emergency-strip--dark-gradient::before{
  content:"";
  position:absolute;
  width:280px;
  height:280px;
  right:4%;
  top:-185px;
  border:1px solid rgba(255,255,255,.08);
  border-radius:50%;
}
.emergency-strip--dark-gradient .emergency-strip-icon{
  border-color:rgba(255,255,255,.16);
  background:rgba(255,255,255,.05);
  color:var(--brand-accent);
}
.emergency-strip--dark-gradient .emergency-strip-phone{
  background:rgba(255,255,255,.045);
  border-color:rgba(255,255,255,.16);
}
.emergency-strip--dark-gradient .emergency-strip-phone span{color:rgba(255,255,255,.52)}
.emergency-strip--dark-gradient .emergency-strip-phone strong{color:#fff}

/* 05 — Glass Panel */
.emergency-strip--glass-panel{
  padding:18px 0;
  background:
    linear-gradient(120deg,color-mix(in srgb,var(--brand-light) 72%,#fff),#fff);
}
.emergency-strip--glass-panel::before{
  content:"";
  position:absolute;
  width:360px;
  height:360px;
  left:-170px;
  bottom:-300px;
  border-radius:50%;
  background:color-mix(in srgb,var(--brand-accent) 11%,transparent);
  filter:blur(2px);
}
.emergency-strip--glass-panel .emergency-strip-inner{
  min-height:124px;
  border:1px solid color-mix(in srgb,var(--brand-primary) 12%,transparent);
  background:color-mix(in srgb,#fff 78%,transparent);
  box-shadow:0 18px 45px color-mix(in srgb,var(--brand-primary) 8%,transparent);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
}
.emergency-strip--glass-panel .emergency-strip-icon{
  background:var(--brand-dark);
  border-color:var(--brand-dark);
  color:var(--brand-accent);
}
.emergency-strip--glass-panel .emergency-strip-phone{background:rgba(255,255,255,.7)}

@media(max-width:980px){
  .emergency-strip-inner{
    grid-template-columns:auto minmax(0,1fr);
    gap:20px;
  }
  .emergency-strip-actions{
    grid-column:1 / -1;
    justify-content:flex-start;
    padding-left:82px;
  }
}

@media(max-width:680px){
  .emergency-strip{padding:0}
  .emergency-strip--glass-panel{padding:12px 0}
  .emergency-strip-inner{
    min-height:0;
    grid-template-columns:1fr;
    gap:16px;
    padding:25px 22px;
  }
  .emergency-strip-icon{width:48px;height:48px}
  .emergency-strip--split-accent .emergency-strip-icon{width:52px;height:52px}
  .emergency-strip-copy p{font-size:.88rem;line-height:1.58}
  .emergency-strip-actions{
    grid-column:auto;
    padding-left:0;
    display:grid;
    grid-template-columns:1fr;
    width:100%;
  }
  .emergency-strip-phone,
  .emergency-strip-button{width:100%;min-width:0}
  .emergency-strip-phone{align-items:center;text-align:center}
  .emergency-strip--light-premium::before{background:var(--brand-accent)}
}

@media(prefers-reduced-motion:reduce){
  .emergency-strip-phone,.emergency-strip-button{transition:none!important}
}


/* ==========================================================
   V1.9.4 Emergency Strip — prominence, contrast + palette controls
   ========================================================== */

/* Palette-role source. Only the role is stored in CMS; colours still come
   entirely from the active Toolbelt theme variables. */
.emergency-bg--primary{--emergency-selected-bg:var(--brand-primary)}
.emergency-bg--secondary{--emergency-selected-bg:var(--brand-secondary)}
.emergency-bg--accent{--emergency-selected-bg:var(--brand-accent)}
.emergency-bg--dark{--emergency-selected-bg:var(--brand-dark)}
.emergency-bg--light{--emergency-selected-bg:var(--brand-light)}

.emergency-strip:not(.emergency-bg--auto){
  background:var(--emergency-selected-bg)!important;
}
.emergency-strip--dark-gradient:not(.emergency-bg--auto){
  background:
    radial-gradient(circle at 83% 20%,color-mix(in srgb,var(--brand-accent) 17%,transparent) 0,transparent 24%),
    linear-gradient(118deg,var(--emergency-selected-bg),color-mix(in srgb,var(--emergency-selected-bg) 70%,#000))!important;
}
.emergency-strip--glass-panel:not(.emergency-bg--auto){
  background:
    linear-gradient(120deg,color-mix(in srgb,var(--emergency-selected-bg) 88%,#fff),var(--emergency-selected-bg))!important;
}

/* Explicit/automatic contrast is resolved by PHP, so all browsers get the
   same accessible light/dark treatment without relying on color-contrast(). */
.emergency-strip.emergency-text--light{
  --emergency-text:#fff;
  --emergency-muted:rgba(255,255,255,.68);
  --emergency-control-line:rgba(255,255,255,.28);
}
.emergency-strip.emergency-text--dark{
  --emergency-text:#111;
  --emergency-muted:rgba(17,17,17,.66);
  --emergency-control-line:rgba(17,17,17,.24);
}

.emergency-strip.emergency-text--light .emergency-strip-label,
.emergency-strip.emergency-text--dark .emergency-strip-label,
.emergency-strip.emergency-text--light .emergency-strip-icon,
.emergency-strip.emergency-text--dark .emergency-strip-icon{
  color:var(--emergency-text);
}
.emergency-strip.emergency-text--light .emergency-strip-icon,
.emergency-strip.emergency-text--dark .emergency-strip-icon{
  border-color:var(--emergency-control-line);
}
.emergency-strip.emergency-text--light .emergency-strip-phone span,
.emergency-strip.emergency-text--light .emergency-strip-phone strong,
.emergency-strip.emergency-text--dark .emergency-strip-phone span,
.emergency-strip.emergency-text--dark .emergency-strip-phone strong{
  color:var(--emergency-text);
}
.emergency-strip.emergency-text--light .emergency-strip-phone span,
.emergency-strip.emergency-text--dark .emergency-strip-phone span{opacity:.66}

/* Stronger content hierarchy. Standard is intentionally more visible than
   V1.9.3, while Compact and Prominent give controlled alternatives. */
.emergency-strip-copy p{
  max-width:830px;
  margin:0;
  color:var(--emergency-text);
  font-size:19px;
  font-weight:600;
  line-height:1.48;
  letter-spacing:-.012em;
}
.emergency-strip-lead{
  display:inline;
  margin-right:.28em;
  color:inherit;
  font-size:21px;
  font-weight:850;
  line-height:inherit;
  letter-spacing:-.025em;
}
.emergency-strip-supporting{
  color:inherit;
  font-size:inherit;
  font-weight:600;
}
.emergency-strip-label{
  margin-bottom:8px;
  font-size:12px;
  line-height:1.2;
}
.emergency-strip-phone strong{
  font-size:19px;
  font-weight:850;
}
.emergency-strip-phone span{font-size:11px}
.emergency-strip-button{
  min-height:60px;
  padding:0 25px;
  font-size:15px;
}

/* Compact */
.emergency-strip.emergency-prominence--compact .emergency-strip-inner{
  min-height:106px;
  padding-top:18px;
  padding-bottom:18px;
}
.emergency-strip.emergency-prominence--compact .emergency-strip-icon{width:46px;height:46px}
.emergency-strip.emergency-prominence--compact .emergency-strip-icon svg{width:22px;height:22px}
.emergency-strip.emergency-prominence--compact .emergency-strip-copy p{font-size:16px}
.emergency-strip.emergency-prominence--compact .emergency-strip-lead{font-size:17px}
.emergency-strip.emergency-prominence--compact .emergency-strip-phone strong{font-size:16px}
.emergency-strip.emergency-prominence--compact .emergency-strip-button{min-height:52px;font-size:14px}

/* Standard */
.emergency-strip.emergency-prominence--standard .emergency-strip-inner{
  min-height:148px;
  padding-top:30px;
  padding-bottom:30px;
}

/* Prominent */
.emergency-strip.emergency-prominence--prominent .emergency-strip-inner{
  min-height:180px;
  padding-top:38px;
  padding-bottom:38px;
  gap:34px;
}
.emergency-strip.emergency-prominence--prominent .emergency-strip-icon{width:66px;height:66px}
.emergency-strip.emergency-prominence--prominent .emergency-strip-icon svg{width:29px;height:29px}
.emergency-strip.emergency-prominence--prominent .emergency-strip-copy p{font-size:20px;line-height:1.5}
.emergency-strip.emergency-prominence--prominent .emergency-strip-lead{font-size:24px}
.emergency-strip.emergency-prominence--prominent .emergency-strip-label{font-size:13px}
.emergency-strip.emergency-prominence--prominent .emergency-strip-phone strong{font-size:20px}
.emergency-strip.emergency-prominence--prominent .emergency-strip-button{min-height:64px}

/* Phone treatments */
.emergency-strip.emergency-phone--outlined .emergency-strip-phone{
  background:transparent;
  border:1px solid var(--emergency-control-line);
}
.emergency-strip.emergency-phone--filled .emergency-strip-phone{
  background:color-mix(in srgb,var(--emergency-text) 11%,transparent);
  border:1px solid color-mix(in srgb,var(--emergency-text) 9%,transparent);
}
.emergency-strip.emergency-phone--minimal .emergency-strip-phone{
  min-width:155px;
  padding-left:2px;
  padding-right:2px;
  background:transparent;
  border:0;
}
.emergency-strip.emergency-phone--minimal .emergency-strip-phone strong{
  padding-bottom:2px;
  border-bottom:1px solid var(--emergency-control-line);
}

/* Keep the icon silhouettes optically balanced. */
.emergency-icon--warning .emergency-strip-icon svg{width:27px;height:27px}
.emergency-icon--clock .emergency-strip-icon svg{width:27px;height:27px}
.emergency-icon--headset .emergency-strip-icon svg{width:28px;height:28px}

/* When a palette background is chosen, the glass layout's contained panel
   follows the resolved text tone instead of forcing a white card. */
.emergency-strip--glass-panel:not(.emergency-bg--auto) .emergency-strip-inner{
  background:color-mix(in srgb,var(--emergency-text) 7%,transparent);
  border-color:var(--emergency-control-line);
  box-shadow:0 18px 45px color-mix(in srgb,#000 10%,transparent);
}

/* Override V1.9.3 layout-specific phone colours so the V1.9.4 contrast selector
   remains authoritative across all five designs. */
.emergency-strip.emergency-text--light .emergency-strip-phone,
.emergency-strip.emergency-text--dark .emergency-strip-phone{
  color:var(--emergency-text);
}
.emergency-strip.emergency-text--light .emergency-strip-copy p,
.emergency-strip.emergency-text--dark .emergency-strip-copy p{
  color:var(--emergency-text);
}

/* The icon box uses the selected text tone when a manual palette background
   is chosen, while automatic layouts retain their composition/shape. */
.emergency-strip:not(.emergency-bg--auto) .emergency-strip-icon{
  background:color-mix(in srgb,var(--emergency-text) 8%,transparent);
  border-color:var(--emergency-control-line);
}

@media(max-width:980px){
  .emergency-strip.emergency-prominence--prominent .emergency-strip-inner{gap:22px}
}

@media(max-width:680px){
  .emergency-strip.emergency-prominence--compact .emergency-strip-inner,
  .emergency-strip.emergency-prominence--standard .emergency-strip-inner,
  .emergency-strip.emergency-prominence--prominent .emergency-strip-inner{
    min-height:0;
    padding:24px 21px;
    gap:15px;
  }
  .emergency-strip-copy p{font-size:17px;line-height:1.55}
  .emergency-strip-lead{
    display:block;
    margin:0 0 3px;
    font-size:19px;
    line-height:1.35;
  }
  .emergency-strip.emergency-prominence--compact .emergency-strip-copy p{font-size:15px}
  .emergency-strip.emergency-prominence--compact .emergency-strip-lead{font-size:17px}
  .emergency-strip.emergency-prominence--prominent .emergency-strip-copy p{font-size:18px}
  .emergency-strip.emergency-prominence--prominent .emergency-strip-lead{font-size:21px}
  .emergency-strip-label{font-size:11px}
  .emergency-strip-phone strong{font-size:18px}
  .emergency-strip-button{font-size:15px}
  .emergency-strip.emergency-phone--minimal .emergency-strip-phone{
    align-items:center;
    padding:8px 0 13px;
  }
}

.emergency-strip.emergency-bg--accent{--emergency-action-bg:var(--brand-dark);--emergency-action-text:#fff}


/* ==========================================================
   V1.9.5 Mobile Full-Bleed Hero Fit
   Fixes excessive photo-only space above the hero copy and
   prevents long headings/supporting copy being clipped on phones.
   ========================================================== */
@media(max-width:680px){
  .home-premium .hero--full-bleed{
    min-height:0;
    height:auto;
    display:block;
    align-items:initial;
  }

  /* Earlier builds retained the legacy 680px layout minimum even after
     the hero itself became auto-height. Remove it so the content defines
     the real mobile hero height instead of being cropped inside it. */
  .home-premium .hero--full-bleed .hero-layout{
    min-height:0;
    height:auto;
    display:block;
  }

  .home-premium .hero--full-bleed .hero-copy{
    width:100%;
    max-width:100%;
    padding:clamp(72px,20vw,96px) 0 42px;
  }

  .home-premium .hero--full-bleed .hero-copy .eyebrow{
    margin-bottom:14px;
  }

  .home-premium .hero--full-bleed h1{
    max-width:100%;
    font-size:clamp(2.3rem,10.8vw,3.25rem);
    line-height:max(1.02,var(--hero-heading-line-height,.98));
    letter-spacing:max(-.025em,var(--hero-heading-letter-spacing,-.04em));
    overflow-wrap:anywhere;
    word-break:normal;
    text-wrap:balance;
  }

  .home-premium .hero--full-bleed h1 span{
    display:block;
    margin-top:.02em;
  }

  .home-premium .hero--full-bleed .hero-copy>p{
    max-width:100%;
    margin-top:18px;
    font-size:.93rem;
    line-height:1.62;
    overflow-wrap:anywhere;
  }

  .home-premium .hero--full-bleed .hero-actions{
    margin-top:25px;
  }

  .home-premium .hero--full-bleed .hero-proof{
    margin-top:24px;
  }

  /* Because the copy now sits higher over the photograph, bring the
     darkening overlay in slightly earlier so contrast remains premium. */
  .home-premium .hero--full-bleed .hero-bg::after{
    background:linear-gradient(
      180deg,
      rgba(7,25,40,.16) 0%,
      rgba(7,25,40,.34) 24%,
      rgba(7,25,40,.72) 48%,
      rgba(7,25,40,.94) 68%,
      rgba(7,25,40,1) 100%
    );
  }
}

@media(max-width:390px){
  .home-premium .hero--full-bleed .hero-copy{
    padding-top:68px;
    padding-bottom:38px;
  }
  .home-premium .hero--full-bleed h1{
    font-size:clamp(2.2rem,10.5vw,3rem);
  }
}

@media(max-width:350px){
  .home-premium .hero--full-bleed .hero-copy{
    padding-top:58px;
  }
  .home-premium .hero--full-bleed h1{
    font-size:2.15rem;
  }
}


/* ==========================================================
   V1.9.6 Mobile Full-Bleed Hero Contrast Guarantee
   Mobile photo heroes always receive a strong dark overlay so
   white/accent copy remains readable regardless of the source image.
   ========================================================== */
@media(max-width:680px){
  .home-premium .hero--full-bleed .hero-bg::after{
    content:"";
    position:absolute;
    inset:0;
    z-index:1;
    pointer-events:none;
    background:
      linear-gradient(
        180deg,
        rgba(4,16,27,.58) 0%,
        rgba(4,16,27,.66) 24%,
        rgba(4,16,27,.78) 48%,
        rgba(4,16,27,.90) 72%,
        rgba(4,16,27,.97) 100%
      ) !important;
  }

  /* Keep the actual content safely above the guaranteed overlay. */
  .home-premium .hero--full-bleed .hero-layout{
    position:relative;
    z-index:2;
  }

  /* A very restrained shadow provides extra separation on highly detailed
     photographs without changing the typography hierarchy. */
  .home-premium .hero--full-bleed h1,
  .home-premium .hero--full-bleed .eyebrow,
  .home-premium .hero--full-bleed .hero-copy>p{
    text-shadow:0 2px 16px rgba(0,0,0,.20);
  }
}

@media(max-width:390px){
  .home-premium .hero--full-bleed .hero-bg::after{
    background:
      linear-gradient(
        180deg,
        rgba(4,16,27,.62) 0%,
        rgba(4,16,27,.70) 22%,
        rgba(4,16,27,.82) 46%,
        rgba(4,16,27,.93) 70%,
        rgba(4,16,27,.98) 100%
      ) !important;
  }
}


/* ==========================================================
   V1.9.7 Internal Page Hero Contrast Standard
   The strong mobile image-overlay safeguard is now site-wide
   for every shared internal page hero using a background image.
   ========================================================== */
@media(max-width:680px){
  .inner-hero-image{
    background:
      var(--inner-hero-image)
      var(--inner-hero-position,center)/cover no-repeat !important;
  }

  .inner-hero-image::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:1;
    pointer-events:none;
    background:
      linear-gradient(
        180deg,
        rgba(4,16,27,.62) 0%,
        rgba(4,16,27,.70) 22%,
        rgba(4,16,27,.82) 46%,
        rgba(4,16,27,.93) 70%,
        rgba(4,16,27,.98) 100%
      );
  }

  .inner-hero-image>.container{
    position:relative;
    z-index:2;
  }

  .inner-hero-image h1,
  .inner-hero-image .eyebrow,
  .inner-hero-image p{
    text-shadow:0 2px 16px rgba(0,0,0,.20);
  }

  .inner-hero-image h1{color:#fff}
  .inner-hero-image p{color:rgba(255,255,255,.84)}
}

@media(max-width:390px){
  .inner-hero-image::before{
    background:
      linear-gradient(
        180deg,
        rgba(4,16,27,.66) 0%,
        rgba(4,16,27,.74) 20%,
        rgba(4,16,27,.85) 44%,
        rgba(4,16,27,.95) 69%,
        rgba(4,16,27,.985) 100%
      );
  }
}


/* ==========================================================
   V1.9.9 Final CTA Layout Library
   ========================================================== */
.cta--premium{
  --cta-overlay-opacity:.56;
  --cta-image-focus:center center;
}
.cta--premium .cta-media,
.cta--premium .cta-overlay{position:absolute;inset:0;pointer-events:none}
.cta--premium .cta-media{background-image:var(--cta-bg-image);background-size:cover;background-position:var(--cta-image-focus);opacity:0;transition:opacity .25s ease;z-index:-3}
.cta--premium .cta-overlay{background:linear-gradient(110deg,var(--brand-dark),color-mix(in srgb,var(--brand-dark) 82%,var(--brand-primary)));opacity:0;z-index:-2}
.cta--premium.cta-bg--solid{background:var(--brand-primary)}
.cta--premium.cta-bg--gradient{background:linear-gradient(110deg,var(--navy-2),var(--navy))}
.cta--premium.cta-has-image .cta-media,
.cta--premium.cta-has-image .cta-overlay{opacity:1}
.cta--premium.cta-overlay--low{--cta-overlay-opacity:.38}
.cta--premium.cta-overlay--medium{--cta-overlay-opacity:.58}
.cta--premium.cta-overlay--high{--cta-overlay-opacity:.72}
.cta--premium.cta-overlay--very-high{--cta-overlay-opacity:.82}
.cta--premium.cta-overlay--maximum{--cta-overlay-opacity:.90}
.cta--premium.cta-overlay--near-black{--cta-overlay-opacity:.96}
.cta--premium.cta-has-image .cta-overlay{opacity:var(--cta-overlay-opacity)}
.cta--premium.cta-bg--image{background:linear-gradient(110deg,var(--navy-2),var(--navy))}
.cta--premium.cta-bg--image::after{opacity:.06}
.cta--premium.cta-align--center .cta-copy,
.cta--premium.cta-layout--centered .cta-copy,
.cta--premium.cta-layout--boxed .cta-copy{text-align:center}
.cta--premium.cta-align--center .cta-proofline,
.cta--premium.cta-layout--centered .cta-proofline,
.cta--premium.cta-layout--boxed .cta-proofline{justify-content:center}
.cta--premium.cta-buttons--inline .cta-actions{flex-direction:row;flex-wrap:wrap;justify-content:flex-start;min-width:0}
.cta--premium.cta-buttons--inline .cta-actions .btn{width:auto;min-width:220px}
.cta-layout--split .cta-inner{display:flex;align-items:center;justify-content:space-between;gap:56px}
.cta-layout--image-overlay .cta-inner{min-height:420px;align-items:flex-end}
.cta-layout--image-overlay .cta-copy{max-width:760px}
.cta-layout--image-overlay .cta-actions{align-self:flex-end}
.cta-layout--centered .cta-inner{min-height:0;padding:88px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:28px}
.cta-layout--centered .cta-copy{max-width:860px}
.cta-layout--centered .cta-copy p{margin-left:auto;margin-right:auto}
.cta-layout--centered .cta-actions{min-width:0;justify-content:center}
.cta-layout--boxed .cta-inner{min-height:0;padding:86px 0}
.cta-layout--boxed .cta-copy,
.cta-layout--boxed .cta-actions{position:relative;z-index:2}
.cta-layout--boxed .cta-inner::before{content:"";position:absolute;inset:42px 0;border-radius:28px;background:color-mix(in srgb,#fff 8%,transparent);border:1px solid color-mix(in srgb,#fff 16%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);z-index:0}
.cta-layout--boxed .cta-inner{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:30px}
.cta-layout--boxed .cta-actions{min-width:0;justify-content:center}
.cta-layout--editorial .cta-inner{grid-template-columns:minmax(0,1.35fr) minmax(260px,.85fr);display:grid;align-items:end;gap:40px;min-height:360px;padding:88px 0}
.cta-layout--editorial .cta-copy{max-width:none}
.cta-layout--editorial .cta-actions{justify-content:flex-end;align-self:end}
.cta-layout--editorial .cta-copy h2{max-width:860px}
.cta-layout--editorial .cta-copy p{max-width:640px}
.cta-layout--editorial.cta-align--center .cta-inner{grid-template-columns:1fr;justify-items:center;text-align:center}
.cta-layout--editorial.cta-align--center .cta-actions{justify-content:center}
.cta-tone--light.cta-bg--solid{background:var(--brand-light);color:var(--brand-body)}
.cta-tone--light.cta-bg--solid h2{color:var(--brand-heading)}
.cta-tone--light.cta-bg--solid p,
.cta-tone--light.cta-bg--solid .cta-proofline{color:var(--brand-muted)}
.cta-tone--light.cta-bg--solid .btn-dark{background:var(--brand-primary);color:#fff}
.cta-tone--light.cta-bg--solid .btn-dark:hover{background:var(--brand-secondary)}
.cta-tone--light.cta-bg--image h2,
.cta-tone--light.cta-bg--image p,
.cta-tone--light.cta-bg--image .cta-proofline{color:#fff}
.cta-tone--light.cta-bg--image .cta-eyebrow{color:var(--brand-accent)}
.cta-tone--light.cta-bg--image .btn-dark{background:color-mix(in srgb,#fff 12%,transparent);color:#fff;border:1px solid color-mix(in srgb,#fff 40%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.cta-tone--light.cta-bg--image .btn-dark:hover{background:#fff;color:var(--brand-dark);border-color:#fff}
.cta-tone--light.cta-bg--image .cta-graphic,
.cta-tone--light.cta-bg--image .cta-graphic::before,
.cta-tone--light.cta-bg--image .cta-graphic::after{border-color:color-mix(in srgb,#fff 18%,transparent)}
.cta-tone--light.cta-bg--image::before{border-color:color-mix(in srgb,#fff 12%,transparent)}
.cta-tone--light.cta-bg--image .cta-accent{background:var(--brand-accent)}
@media (max-width:1100px){
  .cta-layout--editorial .cta-inner{grid-template-columns:1fr;align-items:flex-start}
  .cta-layout--editorial .cta-actions{justify-content:flex-start}
}
@media (max-width:900px){
  .cta-layout--split .cta-inner,
  .cta-layout--image-overlay .cta-inner,
  .cta-layout--editorial .cta-inner{display:block;min-height:0;padding:74px 0}
  .cta-layout--boxed .cta-inner::before{inset:22px 0;border-radius:22px}
  .cta--premium.cta-buttons--inline .cta-actions{justify-content:flex-start}
}
@media (max-width:760px){
  .cta-layout--centered .cta-inner,
  .cta-layout--boxed .cta-inner,
  .cta-layout--editorial .cta-inner,
  .cta-layout--image-overlay .cta-inner,
  .cta-layout--split .cta-inner{padding:68px 0}
  .cta-layout--boxed .cta-inner::before{inset:16px 0}
  .cta--premium.cta-buttons--inline .cta-actions,
  .cta-layout--centered .cta-actions,
  .cta-layout--boxed .cta-actions{justify-content:center}
}
@media (max-width:560px){
  .cta--premium .cta-media{background-position:center center}
  .cta-layout--centered .cta-inner,
  .cta-layout--boxed .cta-inner,
  .cta-layout--editorial .cta-inner,
  .cta-layout--image-overlay .cta-inner,
  .cta-layout--split .cta-inner{padding:60px 0}
  .cta-layout--boxed .cta-inner::before{inset:10px 0 14px}
  .cta--premium.cta-buttons--inline .cta-actions,
  .cta-actions{flex-direction:column!important}
  .cta--premium.cta-buttons--inline .cta-actions .btn,
  .cta-actions .btn{width:100%;min-width:0}
  .cta--premium.cta-bg--image,
  .cta--premium.cta-layout--image-overlay,
  .cta--premium.cta-layout--boxed,
  .cta--premium.cta-layout--editorial{--cta-overlay-opacity:max(var(--cta-overlay-opacity), .68)}
  .cta-tone--light.cta-bg--image .btn-dark{backdrop-filter:none;-webkit-backdrop-filter:none}
}

/* V1.14.1 — Legal page HTML content */
.legal-content{overflow-x:auto}.legal-content h2{margin:38px 0 14px;font-size:clamp(1.45rem,2.4vw,2rem);line-height:1.2}.legal-content h3{margin:30px 0 12px;font-size:1.2rem;line-height:1.3}.legal-content h4{margin:24px 0 10px;font-size:1rem;line-height:1.35}.legal-content p{line-height:1.8}.legal-content ul,.legal-content ol{margin:0 0 22px;padding-left:1.35rem;color:var(--brand-muted)}.legal-content li{margin:7px 0;line-height:1.7}.legal-content a{color:var(--brand-primary);font-weight:700;text-decoration:underline;text-underline-offset:2px}.legal-content blockquote{margin:26px 0;padding:16px 20px;border-left:3px solid var(--brand-accent);background:var(--brand-light);color:var(--brand-muted)}.legal-content hr{border:0;border-top:1px solid var(--brand-border);margin:32px 0}.legal-content table{width:100%;min-width:560px;border-collapse:collapse;margin:26px 0 30px;font-size:.92rem;background:#fff}.legal-content caption{text-align:left;font-weight:800;color:var(--brand-heading);padding:0 0 10px}.legal-content th,.legal-content td{border:1px solid var(--brand-border);padding:12px 14px;text-align:left;vertical-align:top;line-height:1.55}.legal-content th{background:var(--brand-light);color:var(--brand-heading);font-weight:800}@media(max-width:700px){.legal-content h2{margin-top:30px}.legal-content table{font-size:.84rem}.legal-content th,.legal-content td{padding:10px 11px}}



/* v1.16.0 configurable contact form fields */
.contact-choice-field{margin:0;padding:0;border:0;min-width:0}.contact-choice-field legend{display:block;width:100%;font-size:.78rem;font-weight:800;color:var(--text);margin:0 0 8px;padding:0}.contact-choice-options{display:grid;gap:8px}.contact-choice{display:flex!important;align-items:flex-start;gap:9px;margin:0!important;padding:10px 12px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:.88rem;line-height:1.4}.contact-choice input{flex:0 0 auto;margin-top:2px;accent-color:var(--primary)}.contact-choice:has(input:checked){border-color:color-mix(in srgb,var(--primary) 60%,var(--line));background:color-mix(in srgb,var(--primary) 5%,#fff)}.contact-checkbox-required-proxy{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;padding:0!important;border:0!important}.contact-field input[type=date],.contact-field input[type=time],.contact-field input[type=number]{width:100%;border:1px solid var(--line);background:#fff;padding:13px 14px;font:inherit;color:var(--text)}

/* ==========================================================
   V1.22.0 — Dedicated Services page layout library
   ========================================================== */
.services-page-layout{scroll-margin-top:100px}
.services-page-layout article[id]{scroll-margin-top:110px}
.services-page-number{display:block;font-size:.67rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--brand-accent)}
.services-page-link{display:inline-flex;align-items:center;gap:9px;margin-top:24px;color:var(--brand-heading);font-size:.76rem;font-weight:900;text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--brand-heading) 22%,transparent);padding-bottom:5px}
.services-page-link span{color:var(--brand-accent);transition:transform .25s ease}
.services-page-link:hover span,.services-page-link:focus-visible span{transform:translate(4px,-4px)}
.services-page-image-fallback{width:100%;height:100%;min-height:220px;display:grid;place-items:center;background:linear-gradient(135deg,var(--brand-primary),var(--brand-dark));overflow:hidden}
.services-page-image-fallback span{font-size:clamp(4rem,10vw,8rem);font-weight:900;color:rgba(255,255,255,.12);letter-spacing:-.06em}

/* Services page 02: Alternating Showcase */
.services-page-layout--alternating{background:#fff}
.services-page-alternating{display:grid;gap:clamp(30px,4vw,58px)}
.services-page-alternating-row{display:grid;grid-template-columns:minmax(320px,.94fr) minmax(0,1.06fr);min-height:430px;border:1px solid var(--brand-border);background:color-mix(in srgb,var(--brand-light) 42%,#fff);box-shadow:0 24px 60px rgba(10,31,51,.075);overflow:hidden}
.services-page-alternating-row--reverse .services-page-alternating-media{order:2}
.services-page-alternating-row--reverse .services-page-alternating-copy{order:1}
.services-page-alternating-media{position:relative;min-height:430px;overflow:hidden;background:var(--brand-dark)}
.services-page-alternating-media::after{content:"";position:absolute;inset:0;background:linear-gradient(145deg,transparent 58%,color-mix(in srgb,var(--brand-dark) 22%,transparent));pointer-events:none}
.services-page-alternating-media img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .65s cubic-bezier(.22,.61,.36,1)}
.services-page-alternating-row:hover .services-page-alternating-media img{transform:scale(1.03)}
.services-page-alternating-copy{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:clamp(38px,5vw,76px)}
.services-page-alternating-copy h2{margin:16px 0 0;font-size:clamp(2rem,3.5vw,3.65rem);line-height:1.02;letter-spacing:-.045em;max-width:16ch;color:var(--brand-heading)}
.services-page-alternating-copy>p{margin:24px 0 0;font-size:.98rem;line-height:1.75;color:var(--brand-muted);max-width:58ch}
.services-page-mini-highlights{display:grid;gap:8px;margin-top:23px}
.services-page-mini-highlights span{position:relative;padding-left:18px;font-size:.8rem;line-height:1.45;color:var(--brand-heading);font-weight:750}
.services-page-mini-highlights span::before{content:"";position:absolute;left:0;top:.58em;width:6px;height:6px;background:var(--brand-accent)}

/* Services page 03: Editorial Service List */
.services-page-layout--editorial{background:color-mix(in srgb,var(--brand-light) 68%,#fff)}
.services-page-editorial-list{border-top:1px solid var(--brand-border)}
.services-page-editorial-row{display:grid;grid-template-columns:72px minmax(0,1fr) minmax(240px,340px);gap:clamp(20px,4vw,54px);align-items:center;padding:clamp(28px,4vw,46px) 0;border-bottom:1px solid var(--brand-border)}
.services-page-editorial-number{align-self:start;padding-top:9px;font-size:.67rem;font-weight:900;letter-spacing:.14em;color:var(--brand-accent)}
.services-page-editorial-copy h2{margin:0;color:var(--brand-heading);font-size:clamp(1.7rem,3vw,2.85rem);line-height:1.04;letter-spacing:-.04em;max-width:18ch}
.services-page-editorial-copy p{margin:16px 0 0;color:var(--brand-muted);font-size:.92rem;line-height:1.7;max-width:64ch}
.services-page-editorial-media{height:205px;overflow:hidden;background:var(--brand-dark);box-shadow:0 14px 36px rgba(10,31,51,.08)}
.services-page-editorial-media img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .45s ease}
.services-page-editorial-row:hover .services-page-editorial-media img{transform:scale(1.03)}
.services-page-editorial-media .services-page-image-fallback{min-height:205px}

/* Services page 04: Image Card Grid */
.services-page-layout--image-grid{background:#fff}
.services-page-image-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.services-page-image-card{border:1px solid var(--brand-border);background:#fff;box-shadow:0 18px 48px rgba(10,31,51,.06);overflow:hidden;display:flex;flex-direction:column;min-width:0}
.services-page-image-card-media{aspect-ratio:16/10;overflow:hidden;background:var(--brand-dark)}
.services-page-image-card-media img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .55s ease}
.services-page-image-card:hover .services-page-image-card-media img{transform:scale(1.035)}
.services-page-image-card-media .services-page-image-fallback{min-height:100%}
.services-page-image-card-copy{padding:28px 28px 30px;display:flex;flex-direction:column;align-items:flex-start;flex:1}
.services-page-image-card-copy h2{font-size:clamp(1.45rem,2.1vw,2rem);line-height:1.08;letter-spacing:-.035em;color:var(--brand-heading);margin:14px 0 0}
.services-page-image-card-copy p{font-size:.86rem;line-height:1.68;color:var(--brand-muted);margin:14px 0 0}
.services-page-image-card-copy .services-page-link{margin-top:auto;padding-top:22px}

/* Services page 05: Split Feature Grid */
.services-page-layout--feature-grid{background:color-mix(in srgb,var(--brand-light) 68%,#fff)}
.services-page-feature-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.services-page-feature-card{border:1px solid var(--brand-border);background:#fff;overflow:hidden;box-shadow:0 18px 48px rgba(10,31,51,.06);display:flex;flex-direction:column;min-width:0}
.services-page-feature-card--primary{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);min-height:470px;background:var(--brand-primary)}
.services-page-feature-media{aspect-ratio:16/9;overflow:hidden;background:var(--brand-dark)}
.services-page-feature-card--primary .services-page-feature-media{aspect-ratio:auto;min-height:470px}
.services-page-feature-media img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .55s ease}
.services-page-feature-card:hover .services-page-feature-media img{transform:scale(1.03)}
.services-page-feature-media .services-page-image-fallback{min-height:100%}
.services-page-feature-copy{padding:28px 30px 32px;display:flex;flex-direction:column;align-items:flex-start;flex:1}
.services-page-feature-copy h2{margin:14px 0 0;font-size:clamp(1.5rem,2.3vw,2.15rem);line-height:1.06;letter-spacing:-.038em;color:var(--brand-heading)}
.services-page-feature-copy p{margin:15px 0 0;font-size:.87rem;line-height:1.68;color:var(--brand-muted)}
.services-page-feature-copy .services-page-link{margin-top:auto;padding-top:22px}
.services-page-feature-card--primary .services-page-feature-copy{justify-content:center;padding:clamp(40px,5vw,70px)}
.services-page-feature-card--primary .services-page-number{color:var(--brand-accent)}
.services-page-feature-card--primary .services-page-feature-copy h2{color:#fff;font-size:clamp(2.25rem,4vw,4rem);max-width:14ch}
.services-page-feature-card--primary .services-page-feature-copy p{color:rgba(255,255,255,.72);font-size:.98rem;max-width:54ch;line-height:1.75}
.services-page-feature-card--primary .services-page-link{color:#fff;border-bottom-color:rgba(255,255,255,.25);margin-top:28px;padding-top:0}

@media(max-width:1050px){
  .services-page-image-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .services-page-editorial-row{grid-template-columns:58px minmax(0,1fr) minmax(210px,280px);gap:24px}
}
@media(max-width:850px){
  .services-page-alternating-row{grid-template-columns:1fr;min-height:0}
  .services-page-alternating-row--reverse .services-page-alternating-media,.services-page-alternating-row--reverse .services-page-alternating-copy{order:initial}
  .services-page-alternating-media{min-height:0;aspect-ratio:16/10}
  .services-page-alternating-copy{padding:34px 30px 38px}
  .services-page-editorial-row{grid-template-columns:48px minmax(0,1fr);align-items:start}
  .services-page-editorial-media{grid-column:2;height:auto;aspect-ratio:16/9;order:-1;margin-bottom:2px}
  .services-page-feature-card--primary{grid-template-columns:1fr;min-height:0}
  .services-page-feature-card--primary .services-page-feature-media{min-height:0;aspect-ratio:16/10}
}
@media(max-width:680px){
  .services-page-image-grid,.services-page-feature-grid{grid-template-columns:1fr}
  .services-page-feature-card--primary{grid-column:auto}
  .services-page-alternating{gap:22px}
  .services-page-alternating-copy{padding:28px 24px 32px}
  .services-page-alternating-copy h2{font-size:clamp(1.75rem,9vw,2.5rem)}
  .services-page-alternating-copy>p{font-size:.88rem;line-height:1.66}
  .services-page-editorial-row{grid-template-columns:34px minmax(0,1fr);gap:12px;padding:26px 0}
  .services-page-editorial-media{grid-column:1/-1;order:-1;margin-bottom:8px}
  .services-page-editorial-copy h2{font-size:clamp(1.55rem,8vw,2.15rem)}
  .services-page-editorial-copy p{font-size:.86rem}
  .services-page-image-card-copy,.services-page-feature-copy{padding:24px}
  .services-page-feature-card--primary .services-page-feature-copy{padding:30px 24px 34px}
  .services-page-feature-card--primary .services-page-feature-copy h2{font-size:clamp(2rem,10vw,2.75rem)}
}

/* ==========================================================
   V1.24.1 Adaptive Footer Service Lists
   ========================================================== */

/* Never hide service links simply because a site has a larger service set.
   One to eight services stay as one cohesive list. Only genuinely long
   service sets (nine or more) split into two compact alphabetical columns. */
.footer-grid.footer-grid--services-long{
  grid-template-columns:minmax(0,1.15fr) minmax(145px,.68fr) minmax(330px,1.5fr) minmax(190px,.92fr);
  gap:32px;
}
.footer-services-block--long{
  width:100%;
  max-width:520px;
}
.footer-services-list{
  display:grid;
  grid-template-columns:1fr;
  min-width:0;
}
.footer-services-list--columns{
  grid-template-columns:repeat(2,minmax(0,1fr));
  column-gap:20px;
}
.footer-services-column{
  min-width:0;
}
.footer-services-column a,
.footer-services-column .footer-service-label{
  overflow-wrap:anywhere;
  word-break:normal;
}

/* At tablet widths a genuinely long Services list gets its own full-width
   row so longer service names remain comfortable rather than being squeezed. */
@media(max-width:980px) and (min-width:681px){
  .footer-grid.footer-grid--services-long{
    grid-template-columns:1fr 1fr;
  }
  .footer-grid--services-long .footer-services-block{
    grid-column:1/-1;
    max-width:680px;
  }
  .footer-grid--services-long .footer-services-list--columns{
    grid-template-columns:repeat(2,minmax(0,1fr));
    column-gap:28px;
  }
}

/* Mobile always returns to a single readable list. */
@media(max-width:680px){
  .footer-grid.footer-grid--services-long{
    grid-template-columns:1fr;
  }
  .footer-grid--services-long .footer-services-block{
    grid-column:auto;
    max-width:none;
  }
  .footer-services-list--columns{
    grid-template-columns:1fr;
  }
}

/* ==========================================================
   V1.25.0 Visual Services Mega Menu
   Premium desktop navigation using existing service imagery.
   ========================================================== */
@media(min-width:981px){
  .has-mega-menu{position:static}
  .submenu--mega{
    top:100%;left:50%;transform:translateX(-50%);
    width:min(calc(100vw - 40px),var(--container));
    min-width:0;padding:0;background:#fff;
    border:1px solid var(--brand-border);border-top:2px solid var(--brand-accent);
    box-shadow:0 28px 70px rgba(10,31,51,.18);
    max-height:calc(100vh - 110px);overflow-y:auto;overscroll-behavior:contain;
  }
  .submenu--mega::before{top:-10px;height:10px}
  .mega-menu-desktop{display:block;padding:24px 26px 0}
  .mega-menu-mobile{display:none}
  .mega-menu-grid{
    display:grid;grid-template-columns:repeat(var(--mega-columns,4),minmax(0,1fr));
    gap:22px 18px;
  }
  .submenu--mega .mega-service-link{
    display:block!important;padding:0!important;white-space:normal!important;
    color:var(--brand-body)!important;background:transparent!important;
    border:0!important;min-width:0;
  }
  .submenu--mega .mega-service-link:hover{background:transparent!important;border:0!important;color:var(--brand-accent)!important}
  .mega-service-media{
    display:block;aspect-ratio:16/9;overflow:hidden;background:var(--brand-light);
    border:1px solid color-mix(in srgb,var(--brand-border) 88%,transparent);
    position:relative;
  }
  .mega-service-media img{
    width:100%;height:100%;object-fit:cover;object-position:var(--mega-position,center);
    opacity:0;transform:scale(1.015);transition:opacity .28s ease,transform .34s ease;
  }
  .mega-service-media img[src]{opacity:1}
  .mega-service-link:hover .mega-service-media img{transform:scale(1.055)}
  .mega-service-fallback{
    position:absolute;inset:0;display:block;
    background:linear-gradient(135deg,var(--brand-dark),var(--brand-secondary) 64%,color-mix(in srgb,var(--brand-accent) 72%,var(--brand-secondary)));
  }
  .mega-service-title{
    display:flex;align-items:flex-start;justify-content:space-between;gap:10px;
    margin-top:9px;color:var(--brand-heading);font-weight:850;font-size:.82rem;line-height:1.3;
    transition:color .2s ease;
  }
  .mega-service-title>span{color:var(--brand-accent);font-size:.78rem;line-height:1.2;transform:translateY(1px)}
  .mega-service-link:hover .mega-service-title{color:var(--brand-accent)}
  .mega-menu-extra{
    margin-top:20px;padding-top:14px;border-top:1px solid var(--brand-border);
    display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  }
  .mega-menu-extra>span{font-size:.63rem;font-weight:900;letter-spacing:.13em;text-transform:uppercase;color:var(--brand-muted)}
  .submenu--mega .mega-menu-extra a{
    display:inline-flex!important;padding:4px 0!important;border:0!important;background:none!important;
    color:var(--brand-body)!important;font-size:.74rem!important;white-space:normal!important;font-weight:750;
  }
  .submenu--mega .mega-menu-extra a:hover{color:var(--brand-accent)!important;background:none!important;border:0!important}
  .mega-menu-footer{
    margin:22px -26px 0;padding:14px 26px;
    display:flex;align-items:center;justify-content:space-between;gap:18px;
    background:color-mix(in srgb,var(--brand-light) 76%,#fff);border-top:1px solid var(--brand-border);
  }
  .submenu--mega .mega-menu-footer a{
    display:inline-flex!important;align-items:center;gap:8px;padding:6px 0!important;
    border:0!important;background:none!important;white-space:normal!important;font-size:.76rem!important;font-weight:850;
  }
  .submenu--mega .mega-menu-view-all{color:var(--brand-heading)!important}
  .submenu--mega .mega-menu-quote{color:var(--brand-accent)!important;margin-left:auto}
  .submenu--mega .mega-menu-footer a:hover{background:none!important;border:0!important;color:var(--brand-accent)!important}
}

@media(min-width:981px) and (max-width:1100px){
  .mega-menu-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .mega-service-media{aspect-ratio:2/1}
}

@media(max-width:980px){
  .submenu--mega{transform:none;width:auto;max-height:none;overflow:visible;padding:3px 0 3px 9px}
  .mega-menu-desktop{display:none!important}
  .mega-menu-mobile{display:block}
  .submenu--mega .mega-menu-mobile a{display:block!important;padding:8px 10px!important;font-size:.82rem!important;white-space:normal!important;border-left:0!important}
}

@media(prefers-reduced-motion:reduce){
  .mega-service-media img{transition:none!important;transform:none!important}
  .mega-service-link:hover .mega-service-media img{transform:none!important}
}

/* ==========================================================
   V1.25.2 Slower Premium Mega Menu Motion
   Layered reveal, current-page context and refined interaction.
   ========================================================== */
@media(min-width:981px){
  .submenu--mega{
    display:block!important;
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transform:translate(-50%,-10px) scale(.992);
    transform-origin:50% 0;
    box-shadow:0 34px 92px rgba(10,31,51,.22),0 8px 24px rgba(10,31,51,.09);
    transition:
      opacity .36s cubic-bezier(.22,1,.36,1),
      transform .42s cubic-bezier(.22,1,.36,1),
      visibility 0s linear .42s;
    will-change:opacity,transform;
  }
  .has-mega-menu.submenu-open>.submenu--mega{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transform:translate(-50%,0) scale(1);
    transition:
      opacity .58s cubic-bezier(.22,1,.36,1),
      transform .68s cubic-bezier(.22,1,.36,1),
      visibility 0s linear 0s;
    transition-delay:0s;
  }
  .has-mega-menu .submenu-toggle .chevron{
    transition:transform .48s cubic-bezier(.22,1,.36,1),color .28s ease;
  }
  .mega-menu-desktop{padding:20px 24px 0}
  .mega-menu-grid{gap:18px 16px}
  .submenu--mega .mega-service-link{
    opacity:0;
    transform:translateY(9px);
    transition:
      opacity .46s cubic-bezier(.22,1,.36,1),
      transform .56s cubic-bezier(.22,1,.36,1);
    transition-delay:0s;
  }
  .has-mega-menu.submenu-open .mega-service-link{
    opacity:1;
    transform:translateY(0);
    transition-delay:calc(120ms + (var(--mega-index,0) * 72ms));
  }
  .mega-service-media{
    aspect-ratio:2.05/1;
    transition:border-color .22s ease,box-shadow .26s ease,transform .28s cubic-bezier(.22,1,.36,1);
  }
  .mega-service-media img,
  .mega-service-media img[src]{
    opacity:0!important;
    transform:scale(1.018);
    transition:opacity .52s ease,transform .68s cubic-bezier(.22,1,.36,1)!important;
  }
  .mega-service-media img.mega-img-loaded{opacity:1!important}
  .mega-service-link:hover .mega-service-media,
  .mega-service-link:focus-visible .mega-service-media{
    border-color:color-mix(in srgb,var(--brand-accent) 56%,var(--brand-border));
    box-shadow:0 12px 28px rgba(10,31,51,.12);
    transform:translateY(-1px);
  }
  .mega-service-link:hover .mega-service-media img.mega-img-loaded,
  .mega-service-link:focus-visible .mega-service-media img.mega-img-loaded{transform:scale(1.045)}
  .mega-service-title{margin-top:8px;position:relative}
  .mega-service-title-text{position:relative;display:inline;background-image:linear-gradient(var(--brand-accent),var(--brand-accent));background-size:0 2px;background-position:0 100%;background-repeat:no-repeat;transition:background-size .28s cubic-bezier(.22,1,.36,1),color .2s ease}
  .mega-service-arrow{transition:transform .26s cubic-bezier(.22,1,.36,1),color .2s ease}
  .mega-service-link:hover .mega-service-title-text,
  .mega-service-link:focus-visible .mega-service-title-text{background-size:100% 2px}
  .mega-service-link:hover .mega-service-arrow,
  .mega-service-link:focus-visible .mega-service-arrow{transform:translate(3px,-3px)}
  .mega-service-link:focus-visible{outline:2px solid var(--brand-accent);outline-offset:5px}
  .mega-service-link.is-current .mega-service-title{color:var(--brand-accent)}
  .mega-service-link.is-current .mega-service-media{border-color:color-mix(in srgb,var(--brand-accent) 65%,var(--brand-border));box-shadow:inset 0 -3px 0 var(--brand-accent)}
  .mega-service-current{
    position:absolute;left:9px;bottom:9px;z-index:2;
    display:inline-flex;padding:5px 7px;
    background:var(--brand-accent);color:var(--brand-accent-contrast);
    font-size:.55rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase;
    box-shadow:0 4px 14px rgba(10,31,51,.16);
  }
  .mega-menu-extra{margin-top:18px;padding-top:12px}
  .mega-menu-footer{
    margin:18px -24px 0;padding:13px 24px;
    background:color-mix(in srgb,var(--brand-light) 68%,#fff);
    border-top:1px solid color-mix(in srgb,var(--brand-border) 88%,transparent);
  }
  .submenu--mega .mega-menu-footer a span{transition:transform .24s cubic-bezier(.22,1,.36,1)}
  .submenu--mega .mega-menu-footer a:hover span,
  .submenu--mega .mega-menu-footer a:focus-visible span{transform:translateX(3px)}
  .submenu--mega .mega-menu-quote{
    margin-left:auto;
    padding:9px 13px!important;
    background:var(--brand-accent)!important;
    color:var(--brand-accent-contrast)!important;
    border:1px solid var(--brand-accent)!important;
    transition:transform .2s ease,filter .2s ease,box-shadow .2s ease;
  }
  .submenu--mega .mega-menu-quote:hover,
  .submenu--mega .mega-menu-quote:focus-visible{
    color:var(--brand-accent-contrast)!important;
    background:var(--brand-accent)!important;
    transform:translateY(-1px);
    filter:brightness(.96);
    box-shadow:0 8px 20px color-mix(in srgb,var(--brand-accent) 22%,transparent);
  }
}

@media(min-width:981px) and (max-width:1100px){
  .mega-service-media{aspect-ratio:2.2/1}
}

@media (min-width:981px) and (prefers-reduced-motion:reduce){
  .submenu--mega{
    transform:translate(-50%,0) scale(1)!important;
    transition:opacity .1s linear,visibility 0s linear .1s!important;
  }
  .has-mega-menu.submenu-open>.submenu--mega{transition-delay:0s!important}
  .submenu--mega .mega-service-link,
  .has-mega-menu.submenu-open .mega-service-link{
    transform:none!important;
    transition:none!important;
    transition-delay:0s!important;
  }
  .mega-service-media,
  .mega-service-title-text,
  .mega-service-arrow,
  .mega-menu-footer a span{transition:none!important;transform:none!important}
  .mega-service-media img,
  .mega-service-media img[src],
  .mega-service-media img.mega-img-loaded{transition:opacity .1s linear!important;transform:none!important}
}


/* ==========================================================
   V1.25.3 Refined Mega Menu Interaction
   Clean premium link treatment by default; expressive image
   hover remains available as an explicit CMS option.
   ========================================================== */
@media(min-width:981px){
  /* Service links visually follow the main navigation: neutral until interaction. */
  .submenu--mega .mega-service-title,
  .submenu--mega .mega-service-title-text,
  .submenu--mega .mega-service-arrow{
    color:var(--brand-body)!important;
  }
  .submenu--mega .mega-service-link:hover .mega-service-title,
  .submenu--mega .mega-service-link:hover .mega-service-title-text,
  .submenu--mega .mega-service-link:hover .mega-service-arrow,
  .submenu--mega .mega-service-link:focus-visible .mega-service-title,
  .submenu--mega .mega-service-link:focus-visible .mega-service-title-text,
  .submenu--mega .mega-service-link:focus-visible .mega-service-arrow{
    color:var(--brand-accent)!important;
  }
  /* Current-page state mirrors the active navigation treatment. */
  .submenu--mega .mega-service-link.is-current .mega-service-title,
  .submenu--mega .mega-service-link.is-current .mega-service-title-text,
  .submenu--mega .mega-service-link.is-current .mega-service-arrow{
    color:var(--brand-accent)!important;
  }

  /* Recommended clean mode: imagery is intentionally motionless and shadow-free. */
  .submenu--mega.mega-hover-clean .mega-service-media,
  .submenu--mega.mega-hover-clean .mega-service-link:hover .mega-service-media,
  .submenu--mega.mega-hover-clean .mega-service-link:focus-visible .mega-service-media{
    transform:none!important;
    box-shadow:none!important;
    border-color:color-mix(in srgb,var(--brand-border) 88%,transparent)!important;
  }
  .submenu--mega.mega-hover-clean .mega-service-media img,
  .submenu--mega.mega-hover-clean .mega-service-media img[src],
  .submenu--mega.mega-hover-clean .mega-service-media img.mega-img-loaded,
  .submenu--mega.mega-hover-clean .mega-service-link:hover .mega-service-media img.mega-img-loaded,
  .submenu--mega.mega-hover-clean .mega-service-link:focus-visible .mega-service-media img.mega-img-loaded{
    transform:none!important;
  }

  /* Optional CMS mode restores the more expressive photography interaction. */
  .submenu--mega.mega-hover-enhanced .mega-service-link:hover .mega-service-media,
  .submenu--mega.mega-hover-enhanced .mega-service-link:focus-visible .mega-service-media{
    border-color:color-mix(in srgb,var(--brand-accent) 56%,var(--brand-border));
    box-shadow:0 12px 28px rgba(10,31,51,.12);
    transform:translateY(-1px);
  }
  .submenu--mega.mega-hover-enhanced .mega-service-link:hover .mega-service-media img.mega-img-loaded,
  .submenu--mega.mega-hover-enhanced .mega-service-link:focus-visible .mega-service-media img.mega-img-loaded{
    transform:scale(1.045)!important;
  }
}

/* ==========================================================
   V1.26.0 Mega Menu Template Library — Editorial Showcase
   Preserves Visual Grid while adding an art-directed premium
   editorial template for service-heavy navigation.
   ========================================================== */
@media(min-width:981px){
  .submenu--mega.mega-layout-editorial{
    width:min(calc(100vw - 72px),calc(var(--container) - 20px));
    max-height:min(560px,calc(100vh - 130px));
    background:color-mix(in srgb,var(--brand-light) 14%,#fff);
    border-color:color-mix(in srgb,var(--brand-border) 82%,transparent);
    border-top-color:var(--brand-accent);
    box-shadow:0 34px 90px rgba(10,31,51,.16),0 8px 28px rgba(10,31,51,.06);
  }
  .mega-layout-editorial .mega-menu-desktop{padding:28px 30px}
  .mega-editorial-layout{
    display:grid;
    grid-template-columns:minmax(220px,.82fr) minmax(0,2.18fr);
    gap:38px;
    align-items:start;
  }
  .mega-editorial-intro{
    min-width:0;
    padding:4px 32px 6px 0;
    border-right:1px solid color-mix(in srgb,var(--brand-border) 78%,transparent);
    opacity:0;
    transform:translateY(8px);
    transition:opacity .52s cubic-bezier(.22,1,.36,1),transform .62s cubic-bezier(.22,1,.36,1);
  }
  .has-mega-menu.submenu-open .mega-editorial-intro{
    opacity:1;
    transform:translateY(0);
    transition-delay:110ms;
  }
  .mega-editorial-eyebrow{
    display:block;
    margin-bottom:12px;
    color:var(--brand-accent);
    font-size:.61rem;
    font-weight:900;
    line-height:1.2;
    letter-spacing:.16em;
    text-transform:uppercase;
  }
  .mega-editorial-intro h3{
    margin:0;
    max-width:300px;
    color:var(--brand-heading);
    font-size:clamp(1.2rem,1.65vw,1.6rem);
    line-height:1.08;
    letter-spacing:-.035em;
  }
  .mega-editorial-intro p{
    margin:15px 0 0;
    max-width:290px;
    color:var(--brand-muted);
    font-size:.76rem;
    line-height:1.65;
  }
  .mega-editorial-actions{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:10px;
    margin-top:24px;
  }
  .submenu--mega .mega-editorial-actions a{
    display:inline-flex!important;
    align-items:center;
    gap:8px;
    padding:5px 0!important;
    border:0!important;
    background:none!important;
    white-space:normal!important;
    font-size:.74rem!important;
    font-weight:850;
    line-height:1.25;
  }
  .submenu--mega .mega-editorial-view-all{color:var(--brand-heading)!important}
  .submenu--mega .mega-editorial-quote{color:var(--brand-accent)!important}
  .submenu--mega .mega-editorial-actions a:hover,
  .submenu--mega .mega-editorial-actions a:focus-visible{
    color:var(--brand-accent)!important;
    background:none!important;
  }
  .mega-editorial-actions a span{transition:transform .26s cubic-bezier(.22,1,.36,1)}
  .mega-editorial-actions a:hover span,
  .mega-editorial-actions a:focus-visible span{transform:translateX(3px)}

  .mega-editorial-content{min-width:0}
  .mega-layout-editorial .mega-editorial-services{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:14px 16px;
  }
  .mega-layout-editorial .mega-service-media{
    aspect-ratio:2.05/1;
    border-color:color-mix(in srgb,var(--brand-border) 70%,transparent)!important;
    box-shadow:none!important;
  }
  .mega-layout-editorial .mega-service-title{
    margin-top:8px;
    gap:9px;
    font-size:.74rem;
    font-weight:760;
    line-height:1.28;
  }
  .mega-layout-editorial .mega-service-arrow{font-size:.69rem}
  .mega-layout-editorial .mega-service-current{
    left:8px;
    bottom:8px;
    padding:4px 6px;
    font-size:.5rem;
    box-shadow:none;
  }
  /* Editorial photography remains still even if enhanced hover is enabled for Visual Grid. */
  .submenu--mega.mega-layout-editorial .mega-service-media,
  .submenu--mega.mega-layout-editorial .mega-service-link:hover .mega-service-media,
  .submenu--mega.mega-layout-editorial .mega-service-link:focus-visible .mega-service-media{
    transform:none!important;
    box-shadow:none!important;
  }
  .submenu--mega.mega-layout-editorial .mega-service-media img,
  .submenu--mega.mega-layout-editorial .mega-service-media img[src],
  .submenu--mega.mega-layout-editorial .mega-service-media img.mega-img-loaded,
  .submenu--mega.mega-layout-editorial .mega-service-link:hover .mega-service-media img.mega-img-loaded,
  .submenu--mega.mega-layout-editorial .mega-service-link:focus-visible .mega-service-media img.mega-img-loaded{
    transform:none!important;
  }
  .mega-layout-editorial.mega-editorial-focus .mega-editorial-services:has(.mega-service-link:hover) .mega-service-link:not(:hover),
  .mega-layout-editorial.mega-editorial-focus .mega-editorial-services:focus-within .mega-service-link:not(:focus-visible){
    opacity:.62;
  }
  .mega-layout-editorial .mega-service-link{
    transition:opacity .46s cubic-bezier(.22,1,.36,1),transform .56s cubic-bezier(.22,1,.36,1),filter .24s ease;
  }
  .mega-layout-editorial .mega-editorial-extra{
    margin-top:16px;
    padding-top:11px;
  }
}

@media(min-width:981px) and (max-width:1180px){
  .mega-editorial-layout{grid-template-columns:minmax(190px,.72fr) minmax(0,2.28fr);gap:26px}
  .mega-editorial-intro{padding-right:24px}
  .mega-layout-editorial .mega-editorial-services{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .submenu--mega.mega-layout-editorial{max-height:calc(100vh - 115px)}
}

@media (min-width:981px) and (prefers-reduced-motion:reduce){
  .mega-editorial-intro,
  .has-mega-menu.submenu-open .mega-editorial-intro{
    opacity:1!important;
    transform:none!important;
    transition:none!important;
  }
  .mega-layout-editorial .mega-service-link{transition:none!important}
}

/* ==========================================================
   V1.26.1 Full-Width Editorial Mega Menu Refinement
   Editorial Showcase becomes a full header navigation layer
   while its content remains aligned to the main site grid.
   Visual Grid is intentionally unaffected.
   ========================================================== */
@media(min-width:981px){
  .submenu--mega.mega-layout-editorial{
    width:100vw;
    max-width:none;
    max-height:min(520px,calc(100vh - 122px));
    background:color-mix(in srgb,var(--brand-light) 18%,#fff);
    border-left:0;
    border-right:0;
    border-bottom-color:color-mix(in srgb,var(--brand-border) 72%,transparent);
    box-shadow:0 30px 84px rgba(10,31,51,.14),0 8px 22px rgba(10,31,51,.045);
    overflow-y:auto;
  }
  .mega-layout-editorial .mega-menu-desktop{
    padding:0;
  }
  .mega-editorial-layout{
    width:min(calc(100% - 64px),var(--container));
    margin:0 auto;
    padding:32px 0 26px;
    grid-template-columns:minmax(235px,.8fr) minmax(0,2.2fr);
    gap:36px;
    align-items:start;
  }
  .mega-editorial-intro{
    padding:2px 34px 4px 0;
    border-right-color:color-mix(in srgb,var(--brand-border) 62%,transparent);
  }
  .mega-editorial-eyebrow{margin-bottom:13px}
  .mega-editorial-intro h3{
    max-width:290px;
    font-size:clamp(1.2rem,1.55vw,1.52rem);
    line-height:1.07;
  }
  .mega-editorial-intro p{
    margin-top:14px;
    max-width:285px;
    font-size:.75rem;
    line-height:1.62;
  }
  .mega-editorial-actions{margin-top:22px}

  .mega-layout-editorial .mega-editorial-services{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    column-gap:16px;
    row-gap:11px;
  }
  .mega-layout-editorial .mega-service-media{
    aspect-ratio:2.48/1;
    border-color:color-mix(in srgb,var(--brand-border) 60%,transparent)!important;
  }
  .mega-layout-editorial .mega-service-title{
    margin-top:6px;
    min-height:26px;
    font-size:.72rem;
    font-weight:680;
    line-height:1.24;
  }
  .mega-layout-editorial .mega-service-arrow{font-size:.66rem}
  .mega-layout-editorial .mega-service-title-text{
    background-size:0 1px;
  }
  .mega-layout-editorial .mega-service-link:hover .mega-service-title-text,
  .mega-layout-editorial .mega-service-link:focus-visible .mega-service-title-text{
    background-size:100% 1px;
  }

  /* Active service context is editorial text, not an image badge. */
  .mega-layout-editorial .mega-service-current{display:none!important}
  .mega-editorial-current-label{
    display:block;
    margin:6px 0 -1px;
    color:var(--brand-accent);
    font-size:.48rem;
    font-weight:900;
    line-height:1.2;
    letter-spacing:.13em;
    text-transform:uppercase;
  }
  .mega-layout-editorial .mega-service-link.is-current .mega-service-media{
    border-color:color-mix(in srgb,var(--brand-border) 60%,transparent)!important;
    box-shadow:none!important;
  }
  .mega-layout-editorial .mega-service-link.is-current .mega-service-title-text{
    background-size:100% 1px;
  }

  /* Let the editorial introduction establish hierarchy before the grid appears. */
  .has-mega-menu.submenu-open .mega-layout-editorial .mega-editorial-intro,
  .has-mega-menu.submenu-open>.mega-layout-editorial .mega-editorial-intro{
    transition-delay:125ms;
  }
  .has-mega-menu.submenu-open .mega-layout-editorial .mega-service-link,
  .has-mega-menu.submenu-open>.mega-layout-editorial .mega-service-link{
    transition-delay:calc(280ms + (var(--mega-index,0) * 52ms));
  }
}

@media(min-width:981px) and (max-width:1120px){
  .mega-editorial-layout{
    width:min(calc(100% - 48px),var(--container));
    grid-template-columns:minmax(205px,.72fr) minmax(0,2.28fr);
    gap:26px;
    padding-top:28px;
  }
  .mega-editorial-intro{padding-right:24px}
  .mega-layout-editorial .mega-editorial-services{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    row-gap:13px;
  }
  .mega-layout-editorial .mega-service-media{aspect-ratio:2.65/1}
  .submenu--mega.mega-layout-editorial{max-height:calc(100vh - 112px)}
}

@media (min-width:981px) and (prefers-reduced-motion:reduce){
  .has-mega-menu.submenu-open .mega-layout-editorial .mega-service-link,
  .has-mega-menu.submenu-open>.mega-layout-editorial .mega-service-link{
    transition-delay:0s!important;
  }
}


/* ==========================================================
   V1.28.0 Section Icon Integration
   Controlled palette-aware SVG markers from the Icon Library.
   ========================================================== */
.tb-icon,.tb-marker-icon{flex:0 0 auto;line-height:0}
.tb-icon svg,.tb-marker-icon svg{display:block;width:100%;height:100%;max-width:100%;max-height:100%}
.tb-marker{display:flex;align-items:center;gap:10px;color:var(--brand-accent);line-height:1;font-weight:900}
.tb-marker-number{display:block}.tb-marker--icon .tb-marker-number{display:none}
.tb-marker--number .tb-marker-icon{display:none}
.tb-marker--number-icon{align-items:center}

/* Trust Strip — icon mode keeps the existing restrained proportions. */
.trust-item--with-icon{display:grid!important;grid-template-columns:auto minmax(0,1fr);gap:14px;align-items:center;justify-content:initial!important}
.trust-item-icon{display:flex!important;align-items:center;justify-content:flex-start;margin-top:0!important}
.trust-item-icon .tb-icon{display:inline-flex!important;margin-top:0!important}
.trust-item-copy{min-width:0}.trust-item-copy strong,.trust-item-copy span{display:block}
.home-premium .trust-item--with-icon{flex-direction:unset}
@media(max-width:680px){.trust-item--with-icon{grid-template-columns:auto minmax(0,1fr)}}

/* Why Choose Us — retain every existing layout while swapping only the marker vocabulary. */
.why-section .why-benefit-marker{display:flex;color:var(--brand-accent);letter-spacing:normal}
.why-section .why-benefit-marker .tb-marker-number{font-size:.75rem;letter-spacing:.15em}
.why-section .why-benefit-marker .tb-icon{margin:0}
.why-section:not(.why-card-colour--auto) .why-benefit-marker .tb-marker-number{color:var(--why-card-number)}
.home-premium .why-section.why-marker--icon .reason strong,
.home-premium .why-section.why-marker--number-icon .reason strong,
.home-premium .why-section.why-marker--icon .why-overlay-card strong,
.home-premium .why-section.why-marker--number-icon .why-overlay-card strong,
.home-premium .why-section.why-marker--icon .why-editorial-reasons strong,
.home-premium .why-section.why-marker--number-icon .why-editorial-reasons strong,
.home-premium .why-section.why-marker--icon .why-statement-card strong,
.home-premium .why-section.why-marker--number-icon .why-statement-card strong{margin-top:24px}
.why-stacked-benefits .why-benefit-marker{padding-top:0;align-self:start}
.why-section.why-marker--icon .why-stacked-benefits article{grid-template-columns:64px 1fr}
.why-section.why-marker--number-icon .why-stacked-benefits article{grid-template-columns:96px 1fr}
@media(max-width:680px){
  .why-section.why-marker--icon .why-stacked-benefits article{grid-template-columns:50px 1fr}
  .why-section.why-marker--number-icon .why-stacked-benefits article{grid-template-columns:78px 1fr}
}

/* Individual service highlight list — default checkmark remains untouched. */
.feature--custom-marker::before{display:none!important;content:none!important}
.feature--custom-marker{display:flex;align-items:center;gap:10px}
.feature-list--none .feature--custom-marker{gap:0}
.service-feature-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}

/* Dynamic Benefits / Process blocks. */
.benefit-index.tb-marker{margin-bottom:28px;letter-spacing:normal}
.benefit-index.tb-marker .tb-marker-number{font-size:.72rem;letter-spacing:.12em}
.benefit-style-numbered .benefit-index.tb-marker .tb-marker-number{font-size:1.35rem;letter-spacing:-.02em}
.process-step>.process-marker.tb-marker{display:flex;margin-bottom:36px;letter-spacing:normal}
.process-step>.process-marker.tb-marker .tb-marker-number{font-size:.78rem;letter-spacing:.05em}
.block-bg-dark .tb-marker-number,.block-bg-brand .tb-marker-number{color:inherit}


/* Homepage Services — one reusable service icon across all five existing layouts. */
.home-service-marker{margin:0;color:var(--brand-accent);letter-spacing:normal}
.home-service-marker .tb-marker-number{font-size:inherit;letter-spacing:inherit}
.home-premium .service-card .home-service-marker{min-height:24px}
.service-image-card-number.home-service-marker{margin-bottom:20px}
.service-editorial-number.home-service-marker{align-self:center;justify-self:start}
.service-alternating-number.home-service-marker{margin-bottom:20px}
.service-accordion-number.home-service-marker{min-width:0}
.home-services-icon-size--large .service-editorial-row{grid-template-columns:66px minmax(0,1fr) 42px}
.home-services-icon-size--large .service-accordion-item summary{grid-template-columns:70px minmax(0,1fr) 48px}
.home-services-marker--none .service-card-top{justify-content:flex-end}
.home-services-marker--none .service-card h3{margin-top:22px}
.home-services-marker--none .service-editorial-row{grid-template-columns:minmax(0,1fr) 42px}
.home-services-marker--none .service-accordion-item summary{grid-template-columns:minmax(0,1fr) 48px}
@media(max-width:900px){
  .home-services-marker--none .service-editorial-row{grid-template-columns:minmax(0,1fr) 28px}
}
@media(max-width:680px){
  .home-service-marker.tb-marker--number-icon{gap:7px}
  .service-accordion-number.home-service-marker .tb-icon{width:28px!important;height:28px!important}
  .home-services-icon-size--large .service-accordion-item summary{grid-template-columns:38px minmax(0,1fr) 38px}
  .home-services-marker--none .service-accordion-item summary{grid-template-columns:minmax(0,1fr) 38px}
  .home-services-marker--none .service-accordion-panel{padding-left:10px}
}
@media(max-width:420px){
  .home-services-icon-size--large .service-accordion-item summary{grid-template-columns:32px minmax(0,1fr) 34px}
  .home-services-marker--none .service-accordion-item summary{grid-template-columns:minmax(0,1fr) 34px}
}

/* V1.28 backwards-compatibility: preserve the exact legacy number rhythm when icons are not selected. */
.why-layout--split-panel .why-benefit-marker .tb-marker-number{font-size:.75rem;letter-spacing:.15em}
.why-layout--image-overlay .why-benefit-marker .tb-marker-number{font-size:.75rem;letter-spacing:.14em}
.why-layout--light-editorial .why-benefit-marker .tb-marker-number{font-size:.72rem;letter-spacing:.15em}
.why-layout--image-benefits .why-benefit-marker .tb-marker-number{font-size:.72rem;letter-spacing:.13em}
.why-layout--statement-grid .why-benefit-marker .tb-marker-number{font-size:.72rem;letter-spacing:.15em}
.why-section.why-marker--number .why-stacked-benefits .why-benefit-marker{padding-top:4px}
.process-step.process-marker--number>.process-marker.tb-marker{margin-bottom:42px}
.home-service-marker.tb-marker--number{line-height:normal}

/* v2.18.13 — icon-led Premium Panel Grid vertical rhythm. */
.home-services-section--panel.home-services-marker--icon .service-card h3,
.home-services-section--panel.home-services-marker--number-icon .service-card h3{margin-top:var(--services-icon-content-gap,28px)}


/* ==========================================================
   V1.29.0 Header & Section Controls
   ========================================================== */
/* Uploaded logo width is controlled inline by the CMS. Remove the old fixed
   ceiling so narrow/tall and wide wordmark logos can both be art-directed. */
.brand-logo img{max-width:none}

/* Homepage About proof cells adapt when individual stats are disabled. */
.home-premium .stats.stats--count-1{grid-template-columns:1fr}
.home-premium .stats.stats--count-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.home-premium .stats.stats--count-3{grid-template-columns:repeat(3,minmax(0,1fr))}

@media(max-width:680px){
  .home-premium .stats.stats--count-1{grid-template-columns:1fr}
  .home-premium .stats.stats--count-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .home-premium .stats.stats--count-3{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* ================================================================
   V1.30.0 — Homepage Review Template Library + Hero Accent Break
   ================================================================ */
.hero--accent-break h1 span:not(:empty){display:block;margin-top:.03em}

/* Review count safeguards. The classic template otherwise keeps the exact
   pre-v1.30.0 review styling. */
.home-reviews-count-1 .testimonials{grid-template-columns:minmax(0,1fr)!important;max-width:820px}
.home-reviews-count-2 .testimonials{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.home-reviews-count-2 .testimonial--featured{grid-column:auto!important}

/* 02 — Speech Bubble Cards */
.home-premium .home-reviews--speech .testimonials{
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:28px;
  align-items:start;
}
.home-premium .home-reviews--speech .testimonial,
.home-premium .home-reviews--speech .testimonial--featured{
  min-height:0;
  padding:0;
  border:0;
  background:transparent;
  display:block;
  box-shadow:none;
  color:var(--brand-body);
}
.home-premium .home-reviews--speech .testimonial::before{display:none}
.home-premium .home-reviews--speech .testimonial:hover{transform:none;box-shadow:none}
.home-premium .home-reviews--speech .stars{
  margin:0 0 12px 24px;
  font-size:.78rem;
  letter-spacing:.14em;
}
.home-premium .home-reviews--speech .testimonial blockquote,
.home-premium .home-reviews--speech .testimonial--featured blockquote{
  position:relative;
  z-index:1;
  margin:0;
  padding:30px 30px 32px;
  background:color-mix(in srgb,var(--brand-light) 78%,#fff);
  border:1px solid color-mix(in srgb,var(--brand-border) 88%,transparent);
  color:var(--brand-body);
  font-size:.98rem;
  line-height:1.72;
  letter-spacing:0;
}
.home-premium .home-reviews--speech .testimonial blockquote::after{
  content:"";
  position:absolute;
  left:28px;
  bottom:-13px;
  width:24px;
  height:24px;
  background:color-mix(in srgb,var(--brand-light) 78%,#fff);
  border-right:1px solid color-mix(in srgb,var(--brand-border) 88%,transparent);
  border-bottom:1px solid color-mix(in srgb,var(--brand-border) 88%,transparent);
  transform:rotate(45deg);
}
.home-premium .home-reviews--speech .testimonial strong,
.home-premium .home-reviews--speech .testimonial--featured strong{
  display:block;
  margin:28px 24px 0;
  padding:0;
  color:var(--brand-heading);
  font-size:.9rem;
}
.home-premium .home-reviews--speech .testimonial span,
.home-premium .home-reviews--speech .testimonial--featured span{
  display:block;
  margin:2px 24px 0;
  color:var(--brand-muted);
}

/* 03 — Premium Editorial */
.home-premium .home-reviews--editorial .testimonials{
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0;
  align-items:stretch;
  border-top:1px solid var(--brand-border);
  border-bottom:1px solid var(--brand-border);
}
.home-premium .home-reviews--editorial .testimonial,
.home-premium .home-reviews--editorial .testimonial--featured{
  position:relative;
  min-height:330px;
  padding:38px 38px 34px;
  border:0;
  border-left:1px solid var(--brand-border);
  background:transparent;
  color:var(--brand-body);
  display:flex;
  flex-direction:column;
  box-shadow:none;
}
.home-premium .home-reviews--editorial .testimonial:first-child{border-left:0}
.home-premium .home-reviews--editorial .testimonial:hover{transform:none;box-shadow:none}
.home-premium .home-reviews--editorial .testimonial::before,
.home-premium .home-reviews--editorial .testimonial--featured::before{
  content:"“";
  display:block;
  position:static;
  margin:8px 0 18px;
  color:color-mix(in srgb,var(--brand-accent) 72%,transparent);
  font-family:Georgia,serif;
  font-size:4.2rem;
  line-height:.55;
}
.home-premium .home-reviews--editorial .stars{font-size:.72rem;letter-spacing:.16em}
.home-premium .home-reviews--editorial .testimonial blockquote,
.home-premium .home-reviews--editorial .testimonial--featured blockquote{
  margin:0;
  color:var(--brand-body);
  font-size:1.03rem;
  line-height:1.78;
  letter-spacing:-.01em;
}
.home-premium .home-reviews--editorial .testimonial strong,
.home-premium .home-reviews--editorial .testimonial--featured strong{
  margin-top:auto;
  padding-top:34px;
  color:var(--brand-heading);
  font-size:.9rem;
}
.home-premium .home-reviews--editorial .testimonial span,
.home-premium .home-reviews--editorial .testimonial--featured span{color:var(--brand-muted)}

/* 04 — Premium Spotlight */
.home-premium .home-reviews--spotlight .testimonials{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  grid-auto-flow:row;
  gap:16px;
  padding:18px;
  background:color-mix(in srgb,var(--brand-light) 68%,#fff);
  border:1px solid color-mix(in srgb,var(--brand-border) 82%,transparent);
}
.home-premium .home-reviews--spotlight .testimonial{
  grid-column:span 5;
  position:relative;
  min-height:220px;
  padding:32px 30px;
  border:1px solid color-mix(in srgb,var(--brand-border) 90%,transparent);
  background:#fff;
  display:flex;
  flex-direction:column;
  box-shadow:none;
}
.home-premium .home-reviews--spotlight .testimonial--featured{
  grid-column:span 7;
  grid-row:span 2;
  min-height:456px;
  padding:48px 44px;
  border-color:var(--brand-dark);
  background:linear-gradient(145deg,var(--brand-dark),color-mix(in srgb,var(--brand-primary) 86%,var(--brand-secondary)));
  color:#fff;
}
.home-premium .home-reviews--spotlight .testimonial::before{
  right:22px;
  top:4px;
  font-size:6.5rem;
  color:color-mix(in srgb,var(--brand-accent) 16%,transparent);
}
.home-premium .home-reviews--spotlight .testimonial--featured::before{
  right:32px;
  top:10px;
  font-size:9rem;
  color:rgba(255,255,255,.06);
}
.home-premium .home-reviews--spotlight .testimonial blockquote{
  margin-top:22px;
  color:var(--brand-body);
  font-size:.94rem;
  line-height:1.72;
}
.home-premium .home-reviews--spotlight .testimonial--featured blockquote{
  margin-top:38px;
  color:#fff;
  font-size:1.35rem;
  line-height:1.62;
  letter-spacing:-.025em;
}
.home-premium .home-reviews--spotlight .testimonial strong{margin-top:auto;padding-top:28px;color:var(--brand-heading)}
.home-premium .home-reviews--spotlight .testimonial--featured strong{color:#fff}
.home-premium .home-reviews--spotlight .testimonial--featured span{color:rgba(255,255,255,.58)}
.home-premium .home-reviews--spotlight.home-reviews-count-1 .testimonials{max-width:none}
.home-premium .home-reviews--spotlight.home-reviews-count-1 .testimonial--featured{
  grid-column:1/-1!important;
  grid-row:auto;
  min-height:360px;
}
.home-premium .home-reviews--spotlight.home-reviews-count-2 .testimonial--featured{grid-row:auto}


/* 05 — Centred Feature Quote */
.home-premium .home-reviews--centered-feature .testimonials{
  display:grid;
  grid-template-columns:1fr;
  gap:18px;
  max-width:980px;
  margin-inline:auto;
}
.home-premium .home-reviews--centered-feature .testimonial,
.home-premium .home-reviews--centered-feature .testimonial--featured{
  min-height:0;
  padding:clamp(44px,6vw,78px) clamp(28px,7vw,92px);
  border:1px solid color-mix(in srgb,var(--brand-border) 88%,transparent);
  background:color-mix(in srgb,var(--brand-light) 66%,#fff);
  color:var(--brand-body);
  text-align:center;
  box-shadow:none;
  display:block;
}
.home-premium .home-reviews--centered-feature .testimonial::before,
.home-premium .home-reviews--centered-feature .testimonial--featured::before{
  position:static;
  display:block;
  margin:0 0 18px;
  color:color-mix(in srgb,var(--brand-accent) 70%,transparent);
  font-size:5.6rem;
  line-height:.55;
}
.home-premium .home-reviews--centered-feature .stars{margin-bottom:22px}
.home-premium .home-reviews--centered-feature .testimonial blockquote,
.home-premium .home-reviews--centered-feature .testimonial--featured blockquote{
  max-width:34ch;
  margin:0 auto;
  color:var(--brand-heading);
  font-size:clamp(1.3rem,2.25vw,2rem);
  line-height:1.5;
  letter-spacing:-.025em;
}
.home-premium .home-reviews--centered-feature .testimonial strong,
.home-premium .home-reviews--centered-feature .testimonial--featured strong{
  margin-top:30px;
  padding-top:0;
  color:var(--brand-heading);
}
.home-premium .home-reviews--centered-feature .testimonial span,
.home-premium .home-reviews--centered-feature .testimonial--featured span{color:var(--brand-muted)}

/* 06 — Large Open Quote: deliberately no card / box. */
.home-premium .home-reviews--open-quote .testimonials{display:block;max-width:1100px}
.home-premium .home-reviews--open-quote .testimonial,
.home-premium .home-reviews--open-quote .testimonial--featured{
  min-height:0;
  padding:8px 0 18px;
  border:0;
  background:transparent;
  color:var(--brand-body);
  box-shadow:none;
  display:block;
}
.home-premium .home-reviews--open-quote .testimonial::before,
.home-premium .home-reviews--open-quote .testimonial--featured::before{display:none}
.home-premium .home-reviews--open-quote .stars{margin:0 0 24px}
.home-premium .home-reviews--open-quote .testimonial blockquote,
.home-premium .home-reviews--open-quote .testimonial--featured blockquote{
  max-width:20ch;
  margin:0;
  color:var(--brand-heading);
  font-size:clamp(2rem,4.25vw,4.65rem);
  line-height:1.08;
  letter-spacing:-.055em;
  font-weight:780;
}
.home-premium .home-reviews--open-quote .testimonial strong,
.home-premium .home-reviews--open-quote .testimonial--featured strong{margin-top:30px;padding-top:0;color:var(--brand-heading)}
.home-premium .home-reviews--open-quote .testimonial span,
.home-premium .home-reviews--open-quote .testimonial--featured span{color:var(--brand-muted)}
.home-premium .home-reviews--open-quote .testimonial + .testimonial{margin-top:54px;padding-top:54px;border-top:1px solid var(--brand-border)}

/* 07 — Editorial Side Accent */
.home-premium .home-reviews--side-accent .testimonials{display:block;max-width:960px}
.home-premium .home-reviews--side-accent .testimonial,
.home-premium .home-reviews--side-accent .testimonial--featured{
  min-height:0;
  padding:12px 0 12px clamp(26px,4vw,48px);
  border:0;
  border-left:5px solid var(--brand-accent);
  background:transparent;
  color:var(--brand-body);
  box-shadow:none;
  display:block;
}
.home-premium .home-reviews--side-accent .testimonial::before,
.home-premium .home-reviews--side-accent .testimonial--featured::before{display:none}
.home-premium .home-reviews--side-accent .stars{margin:0 0 20px}
.home-premium .home-reviews--side-accent .testimonial blockquote,
.home-premium .home-reviews--side-accent .testimonial--featured blockquote{
  max-width:30ch;
  margin:0;
  color:var(--brand-heading);
  font-size:clamp(1.45rem,2.75vw,2.6rem);
  line-height:1.32;
  letter-spacing:-.04em;
}
.home-premium .home-reviews--side-accent .testimonial strong,
.home-premium .home-reviews--side-accent .testimonial--featured strong{margin-top:26px;padding-top:0;color:var(--brand-heading)}
.home-premium .home-reviews--side-accent .testimonial span,
.home-premium .home-reviews--side-accent .testimonial--featured span{color:var(--brand-muted)}
.home-premium .home-reviews--side-accent .testimonial + .testimonial{margin-top:48px}

/* Reviews header + single-review positioning controls. */
.home-premium .home-reviews-header--center .section-head{
  display:block;
  max-width:900px;
  margin-left:auto;
  margin-right:auto;
  text-align:center;
}
.home-premium .home-reviews-header--center .section-head>div,
.home-premium .home-reviews-header--center .section-head .lead{max-width:none;margin-left:auto;margin-right:auto}
.home-premium .home-reviews-header--center .section-head .lead{margin-top:18px}
.home-reviews-count-1.home-reviews-single--left .testimonials{margin-left:0;margin-right:auto}
.home-reviews-count-1.home-reviews-single--center .testimonials{margin-left:auto;margin-right:auto}
.home-reviews-count-1.home-reviews-single--right .testimonials{margin-left:auto;margin-right:0}
.home-reviews-count-1.home-reviews-single--full .testimonials{max-width:none!important;width:100%}
.home-reviews-count-1.home-reviews-single--center .review-proof{justify-content:center}
.home-reviews-count-1.home-reviews-single--right .review-proof{justify-content:flex-end}
/* V2.18.10 — Large Open Quote has no card boundary, so the single-review
   position must align the quote content itself as well as the outer wrapper. */
.home-premium .home-reviews--open-quote.home-reviews-count-1.home-reviews-single--center .testimonial,
.home-premium .home-reviews--open-quote.home-reviews-count-1.home-reviews-single--center .testimonial--featured{
  text-align:center;
}
.home-premium .home-reviews--open-quote.home-reviews-count-1.home-reviews-single--center .testimonial blockquote,
.home-premium .home-reviews--open-quote.home-reviews-count-1.home-reviews-single--center .testimonial--featured blockquote{
  margin-left:auto;
  margin-right:auto;
}
.home-premium .home-reviews--open-quote.home-reviews-count-1.home-reviews-single--right .testimonial,
.home-premium .home-reviews--open-quote.home-reviews-count-1.home-reviews-single--right .testimonial--featured{
  text-align:right;
}
.home-premium .home-reviews--open-quote.home-reviews-count-1.home-reviews-single--right .testimonial blockquote,
.home-premium .home-reviews--open-quote.home-reviews-count-1.home-reviews-single--right .testimonial--featured blockquote{
  margin-left:auto;
  margin-right:0;
}
.home-reviews-count-1.home-reviews-single--center .home-reviews-more{display:flex;width:max-content;margin-left:auto;margin-right:auto}
.home-reviews-count-1.home-reviews-single--right .home-reviews-more{display:flex;width:max-content;margin-left:auto;margin-right:0}
.home-reviews-text-override .testimonial blockquote,
.home-premium .home-reviews-text-override .testimonial blockquote,
.home-premium .home-reviews-text-override .testimonial--featured blockquote{color:var(--home-review-text)!important}

@media(max-width:980px){
  .home-premium .home-reviews--speech .testimonials,
  .home-premium .home-reviews--editorial .testimonials{grid-template-columns:repeat(2,minmax(0,1fr))}
  .home-premium .home-reviews--editorial .testimonial:nth-child(odd){border-left:0}
  .home-premium .home-reviews--editorial .testimonial:nth-child(n+3){border-top:1px solid var(--brand-border)}
  .home-premium .home-reviews--spotlight .testimonial--featured{grid-column:1/-1;grid-row:auto;min-height:330px}
  .home-premium .home-reviews--spotlight .testimonial:not(.testimonial--featured){grid-column:span 6}
}
@media(max-width:680px){
  .home-reviews-count-2 .testimonials,
  .home-premium .home-reviews--speech .testimonials,
  .home-premium .home-reviews--editorial .testimonials{grid-template-columns:1fr!important}
  .home-premium .home-reviews--editorial .testimonial{border-left:0;border-top:1px solid var(--brand-border);min-height:0;padding:32px 10px 30px}
  .home-premium .home-reviews--editorial .testimonial:first-child{border-top:0}
  .home-premium .home-reviews--speech .testimonial blockquote{padding:26px 24px 28px}
  .home-premium .home-reviews--spotlight .testimonials{padding:10px}
  .home-premium .home-reviews--spotlight .testimonial,
  .home-premium .home-reviews--spotlight .testimonial:not(.testimonial--featured),
  .home-premium .home-reviews--spotlight .testimonial--featured{grid-column:1/-1;min-height:0;padding:30px 26px}
  .home-premium .home-reviews--spotlight .testimonial--featured blockquote{font-size:1.16rem;margin-top:28px}
  .home-premium .home-reviews--centered-feature .testimonial,
  .home-premium .home-reviews--centered-feature .testimonial--featured{padding:38px 24px}
  .home-premium .home-reviews--open-quote .testimonial blockquote,
  .home-premium .home-reviews--open-quote .testimonial--featured blockquote{font-size:clamp(1.8rem,10vw,3rem)}
  .home-premium .home-reviews--side-accent .testimonial,
  .home-premium .home-reviews--side-accent .testimonial--featured{padding-left:24px;border-left-width:4px}
}


/* ================================================================
   V1.30.1 Global Button Hover System + Final CTA Text Contrast
   One controlled hover language prevents isolated legacy blue/secondary
   hovers from appearing on otherwise lift-only premium button systems.
   ================================================================ */
.btn-primary{
  --tb-filled-bg:var(--cta-bg);
  --tb-filled-text:var(--cta-text);
  --tb-filled-border:transparent;
}
.btn-dark{
  --tb-filled-bg:var(--navy);
  --tb-filled-text:#fff;
  --tb-filled-border:transparent;
}
.hero--brand-panel .btn-primary{
  --tb-filled-bg:var(--navy-2);
  --tb-filled-text:#fff;
}
.hero--floating-panel.hero--panel-brand .btn-primary{
  --tb-filled-bg:var(--brand-dark);
  --tb-filled-text:#fff;
}
.cta--premium.cta-tone--dark .btn-primary{
  --tb-filled-bg:var(--brand-accent);
  --tb-filled-text:var(--brand-accent-contrast);
  --tb-filled-border:var(--brand-accent);
}
.cta--premium .btn-dark,
.cta-tone--light.cta-bg--solid .btn-dark{
  --tb-filled-bg:var(--brand-primary);
  --tb-filled-text:#fff;
  --tb-filled-border:transparent;
}
.cta--premium.cta-tone--dark .btn-dark{
  --tb-filled-bg:color-mix(in srgb,#fff 7%,transparent);
  --tb-filled-text:#fff;
  --tb-filled-border:color-mix(in srgb,#fff 38%,transparent);
}
.cta-tone--light.cta-bg--image .btn-dark{
  --tb-filled-bg:color-mix(in srgb,#fff 12%,transparent);
  --tb-filled-text:#fff;
  --tb-filled-border:color-mix(in srgb,#fff 40%,transparent);
}

/* Recommended premium default: preserve each filled button's intended base
   colour and use only motion/depth on hover. */
.tb-button-hover--lift-shadow .btn-primary:hover,
.tb-button-hover--lift-shadow .btn-dark:hover,
.tb-button-hover--lift-shadow .header-cta:hover{
  background:var(--tb-filled-bg)!important;
  color:var(--tb-filled-text)!important;
  border-color:var(--tb-filled-border)!important;
  transform:translateY(-2px);
  box-shadow:0 12px 26px color-mix(in srgb,var(--brand-primary) 16%,transparent);
}

/* Site-wide colour hover. Filled buttons intentionally converge on one
   palette-aware hover colour for a coherent interaction language. */
.tb-button-hover--colour-lift-shadow .btn-primary:hover,
.tb-button-hover--colour-lift-shadow .btn-dark:hover,
.tb-button-hover--colour-lift-shadow .header-cta:hover,
.tb-button-hover--colour-only .btn-primary:hover,
.tb-button-hover--colour-only .btn-dark:hover,
.tb-button-hover--colour-only .header-cta:hover{
  background:var(--button-hover-bg)!important;
  color:var(--button-hover-text)!important;
  border-color:var(--button-hover-bg)!important;
}
.tb-button-hover--colour-lift-shadow .btn-primary:hover,
.tb-button-hover--colour-lift-shadow .btn-dark:hover,
.tb-button-hover--colour-lift-shadow .header-cta:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 26px color-mix(in srgb,var(--button-hover-bg) 25%,transparent);
}
.tb-button-hover--colour-only .btn-primary:hover,
.tb-button-hover--colour-only .btn-dark:hover,
.tb-button-hover--colour-only .header-cta:hover{
  transform:none;
  box-shadow:none;
}

/* Optional: let the same global hover colour fill secondary/outline buttons.
   Kept opt-in because restrained outlines are usually the more premium choice. */
.tb-button-hover--include-outline.tb-button-hover--colour-lift-shadow .btn-outline:hover,
.tb-button-hover--include-outline.tb-button-hover--colour-lift-shadow .btn-outline-light:hover,
.tb-button-hover--include-outline.tb-button-hover--colour-lift-shadow .hero-secondary:hover,
.tb-button-hover--include-outline.tb-button-hover--colour-only .btn-outline:hover,
.tb-button-hover--include-outline.tb-button-hover--colour-only .btn-outline-light:hover,
.tb-button-hover--include-outline.tb-button-hover--colour-only .hero-secondary:hover{
  background:var(--button-hover-bg)!important;
  color:var(--button-hover-text)!important;
  border-color:var(--button-hover-bg)!important;
}
.tb-button-hover--include-outline.tb-button-hover--colour-lift-shadow .btn-outline:hover,
.tb-button-hover--include-outline.tb-button-hover--colour-lift-shadow .btn-outline-light:hover,
.tb-button-hover--include-outline.tb-button-hover--colour-lift-shadow .hero-secondary:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 26px color-mix(in srgb,var(--button-hover-bg) 25%,transparent);
}
.tb-button-hover--include-outline.tb-button-hover--colour-only .btn-outline:hover,
.tb-button-hover--include-outline.tb-button-hover--colour-only .btn-outline-light:hover,
.tb-button-hover--include-outline.tb-button-hover--colour-only .hero-secondary:hover{
  transform:none;
  box-shadow:none;
}

.tb-button-hover--none .btn-primary:hover,
.tb-button-hover--none .btn-dark:hover,
.tb-button-hover--none .header-cta:hover{
  background:var(--tb-filled-bg)!important;
  color:var(--tb-filled-text)!important;
  border-color:var(--tb-filled-border)!important;
  transform:none;
  box-shadow:none;
}

/* The final CTA can deliberately override the normal global CTA label colour.
   Apply it to hover as well so lift-only treatment never flips the label. */
.cta--premium.cta-primary-text--white .btn-primary,
.cta--premium.cta-primary-text--white .btn-primary:hover{
  --tb-filled-text:#fff;
  color:#fff!important;
}
.cta--premium.cta-primary-text--black .btn-primary,
.cta--premium.cta-primary-text--black .btn-primary:hover{
  --tb-filled-text:#000;
  color:#000!important;
}

@media (prefers-reduced-motion:reduce){
  .tb-button-hover--lift-shadow .btn:hover,
  .tb-button-hover--colour-lift-shadow .btn:hover,
  .tb-button-hover--colour-only .btn:hover,
  .tb-button-hover--none .btn:hover,
  .tb-button-hover--lift-shadow .header-cta:hover,
  .tb-button-hover--colour-lift-shadow .header-cta:hover,
  .tb-button-hover--colour-only .header-cta:hover,
  .tb-button-hover--none .header-cta:hover{transform:none!important}
}


/* ==========================================================
   V1.31.0 Adaptive Footer + Internal Hero Overlay Controls
   ========================================================== */

/* When Services is not publicly available, remove the empty fourth column
   and deliberately rebalance the footer rather than leaving template space. */
.footer-grid.footer-grid--no-services{
  grid-template-columns:minmax(0,1.4fr) minmax(150px,.72fr) minmax(220px,1fr);
  column-gap:clamp(52px,7vw,118px);
}
.footer-grid--no-services .footer-company-block,
.footer-grid--no-services .footer-contact-block{min-width:0}

@media(max-width:980px) and (min-width:821px){
  .footer-grid.footer-grid--no-services{
    grid-template-columns:minmax(0,1.25fr) minmax(145px,.72fr) minmax(200px,1fr);
    gap:38px;
  }
}
@media(max-width:820px) and (min-width:681px){
  .footer-grid.footer-grid--no-services{grid-template-columns:1fr 1fr;gap:38px 54px}
  .footer-grid--no-services>div:first-child{grid-column:1/-1;max-width:620px}
}
@media(max-width:680px){
  .footer-grid.footer-grid--no-services{grid-template-columns:1fr;gap:30px}
  .footer-grid--no-services>div:first-child{grid-column:auto;max-width:none}
}

/* Internal hero imagery is now separated from its overlay. This allows the
   CMS to vary opacity and direction while keeping content markup untouched. */
.inner-hero-image{
  background:var(--inner-hero-image) var(--inner-hero-position,center)/cover no-repeat!important;
}
.inner-hero-image::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
}
.inner-hero-image.inner-overlay--gradient-left::before{
  background:linear-gradient(90deg,var(--inner-overlay-strong) 0%,var(--inner-overlay-base) 48%,var(--inner-overlay-medium) 78%,var(--inner-overlay-soft) 100%);
}
.inner-hero-image.inner-overlay--solid::before{
  background:var(--inner-overlay-base);
}
.inner-hero-image.inner-overlay--gradient-right::before{
  background:linear-gradient(270deg,var(--inner-overlay-strong) 0%,var(--inner-overlay-base) 48%,var(--inner-overlay-medium) 78%,var(--inner-overlay-soft) 100%);
}
.inner-hero-image.inner-overlay--gradient-bottom::before{
  background:linear-gradient(180deg,var(--inner-overlay-soft) 0%,var(--inner-overlay-medium) 42%,var(--inner-overlay-base) 72%,var(--inner-overlay-strong) 100%);
}
.inner-hero-image>.container{position:relative;z-index:2}

/* Mobile deliberately retains the established Toolbelt contrast floor.
   Desktop opacity can be art-directed freely without risking unreadable
   internal-page headings on narrow screens. */
@media(max-width:680px){
  .inner-hero-image[class*="inner-overlay--"]::before{
    background:linear-gradient(180deg,rgba(4,16,27,.62) 0%,rgba(4,16,27,.70) 22%,rgba(4,16,27,.82) 46%,rgba(4,16,27,.93) 70%,rgba(4,16,27,.98) 100%)!important;
  }
}
@media(max-width:390px){
  .inner-hero-image[class*="inner-overlay--"]::before{
    background:linear-gradient(180deg,rgba(4,16,27,.66) 0%,rgba(4,16,27,.74) 20%,rgba(4,16,27,.85) 44%,rgba(4,16,27,.95) 69%,rgba(4,16,27,.985) 100%)!important;
  }
}

/* ==========================================================
   V1.31.1 Internal Hero Greyscale Filter
   Image-only treatment: overlay/content keep their palette colours.
   ========================================================== */
.inner-hero-image.inner-hero--grayscale{
  background:var(--brand-dark)!important;
}
.inner-hero-image.inner-hero--grayscale::after{
  content:"";
  position:absolute;
  inset:0;
  width:auto;
  height:auto;
  border-radius:0;
  z-index:0;
  pointer-events:none;
  opacity:1;
  background:var(--inner-hero-image) var(--inner-hero-position,center)/cover no-repeat;
  filter:grayscale(1);
  transform:none;
}
.inner-hero-image.inner-hero--grayscale::before{z-index:1}
.inner-hero-image.inner-hero--grayscale>.container{position:relative;z-index:2}

/* =========================================================
   V1.32.0 Advanced Typography
   Optional override layer only. These rules are dormant unless
   body.tb-advanced-typography is explicitly rendered by PHP.
   Existing responsive font sizes and component geometry are untouched.
   ========================================================= */
body.tb-advanced-typography{
  font-family:var(--font-body,var(--site-font));
  font-weight:var(--body-weight,400);
  line-height:var(--body-line-height,1.6);
  letter-spacing:var(--body-letter-spacing,0)
}
body.tb-advanced-typography h1,
body.tb-advanced-typography h2,
body.tb-advanced-typography h3,
body.tb-advanced-typography h4,
body.tb-advanced-typography h5,
body.tb-advanced-typography h6{
  font-family:var(--font-heading,var(--site-font));
  font-weight:var(--heading-weight,700);
  line-height:var(--heading-line-height,1.12);
  letter-spacing:var(--heading-letter-spacing,0)
}
body.tb-advanced-heading-transform--uppercase h1,
body.tb-advanced-heading-transform--uppercase h2,
body.tb-advanced-heading-transform--uppercase h3,
body.tb-advanced-heading-transform--uppercase h4,
body.tb-advanced-heading-transform--uppercase h5,
body.tb-advanced-heading-transform--uppercase h6{text-transform:uppercase!important}
body.tb-advanced-heading-transform--normal h1,
body.tb-advanced-heading-transform--normal h2,
body.tb-advanced-heading-transform--normal h3,
body.tb-advanced-heading-transform--normal h4,
body.tb-advanced-heading-transform--normal h5,
body.tb-advanced-heading-transform--normal h6{text-transform:none!important}

/* Text-only logos remain on the standard Toolbelt typeface so enabling the
   advanced layer does not unexpectedly redesign a customer's wordmark. */
body.tb-advanced-typography .brand{font-family:var(--site-font)}

/* Navigation opt-in changes family only. Existing size, weight, case,
   letter-spacing, layout and dropdown behaviour remain authoritative. */
body.tb-advanced-typography .nav{line-height:1.65;letter-spacing:normal}
body.tb-advanced-nav--existing .nav{font-family:var(--site-font)}
body.tb-advanced-nav--heading .nav{font-family:var(--font-heading,var(--site-font))}

/* Button mode changes family only. Established button metrics and weights are
   deliberately preserved, including header, hero, CTA and form controls. */
body.tb-advanced-typography button,
body.tb-advanced-typography .btn,
body.tb-advanced-typography .hero-secondary,
body.tb-advanced-typography .prototype-claim-cta,
body.tb-advanced-typography .cookie-btn{line-height:1.65;letter-spacing:normal}
body.tb-advanced-buttons--existing button,
body.tb-advanced-buttons--existing .btn,
body.tb-advanced-buttons--existing .hero-secondary,
body.tb-advanced-buttons--existing .prototype-claim-cta,
body.tb-advanced-buttons--existing .cookie-btn{font-family:var(--site-font)}
body.tb-advanced-buttons--heading button,
body.tb-advanced-buttons--heading .btn,
body.tb-advanced-buttons--heading .hero-secondary,
body.tb-advanced-buttons--heading .prototype-claim-cta,
body.tb-advanced-buttons--heading .cookie-btn{font-family:var(--font-heading,var(--site-font))}
body.tb-advanced-buttons--body button,
body.tb-advanced-buttons--body .btn,
body.tb-advanced-buttons--body .hero-secondary,
body.tb-advanced-buttons--body .prototype-claim-cta,
body.tb-advanced-buttons--body .cookie-btn{font-family:var(--font-body,var(--site-font))}

/* ==========================================================
   V1.32.2 Responsive Homepage Hero Content Spacing
   Adds optional breathing room above the existing hero layout without
   rewriting any template-specific typography, image or responsive rules.
   ========================================================== */
@media(min-width:981px){
  .home-premium .hero.hero--spacing-controlled{
    padding-top:var(--hero-content-space-desktop,0px);
  }
}
@media(min-width:681px) and (max-width:980px){
  .home-premium .hero.hero--spacing-controlled{
    padding-top:var(--hero-content-space-tablet,0px);
  }
}
@media(max-width:680px){
  .home-premium .hero.hero--spacing-controlled{
    padding-top:var(--hero-content-space-mobile,0px);
  }
}

/* ==========================================================
   V1.33.0 Homepage Map / Location Section
   ========================================================== */
.home-map-section{
  position:relative;
  overflow:hidden;
}
.home-map-shell{
  display:grid;
  grid-template-columns:minmax(0,.82fr) minmax(520px,1.18fr);
  align-items:center;
  gap:clamp(46px,6vw,92px);
}
.home-map-copy{min-width:0}
.home-map-copy h2{
  max-width:760px;
  margin-bottom:20px;
}
.home-map-copy>.lead{
  max-width:650px;
  color:var(--brand-muted);
}
.home-map-location-card{
  display:flex;
  align-items:flex-start;
  gap:16px;
  margin-top:30px;
  padding-top:24px;
  border-top:1px solid var(--brand-border);
  max-width:620px;
}
.home-map-location-icon{
  flex:0 0 42px;
  width:42px;height:42px;
  display:grid;place-items:center;
  border-radius:50%;
  background:color-mix(in srgb,var(--brand-accent) 12%,transparent);
  color:var(--brand-accent);
}
.home-map-location-icon svg{width:20px;height:20px}
.home-map-location-card>div{display:grid;gap:4px;min-width:0}
.home-map-location-type{
  color:var(--brand-muted);
  font-size:.72rem;
  font-weight:800;
  letter-spacing:.11em;
  text-transform:uppercase;
}
.home-map-location-card strong{
  color:var(--brand-heading);
  font-size:1.08rem;
}
.home-map-location-card address{
  margin:1px 0 0;
  color:var(--brand-muted);
  font-style:normal;
  line-height:1.55;
}
.home-map-actions{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:20px 24px;
  margin-top:30px;
}
.home-map-open-link{margin:0}
.home-map-visual{min-width:0}
.home-map-frame{
  position:relative;
  width:100%;
  min-height:430px;
  aspect-ratio:16/11;
  overflow:hidden;
  background:
    linear-gradient(135deg,color-mix(in srgb,var(--brand-light) 92%,#fff),#fff);
  border:1px solid color-mix(in srgb,var(--brand-border) 92%,transparent);
  box-shadow:0 24px 70px color-mix(in srgb,var(--brand-primary) 10%,transparent);
}
.home-map-frame iframe{
  position:absolute;
  inset:0;
  width:100%;height:100%;
  border:0;
  display:block;
  opacity:0;
  transition:opacity .6s cubic-bezier(.22,.61,.36,1),filter .3s ease;
}
.home-map--greyscale .home-map-frame iframe{
  filter:grayscale(1) saturate(0) contrast(.92) brightness(1.03);
}
.home-map-frame--static iframe{pointer-events:none}
.home-map-frame--interactive iframe{pointer-events:auto}
.home-map-frame.is-loaded iframe{opacity:1}
.home-map-loader{
  position:absolute;
  inset:0;
  z-index:2;
  overflow:hidden;
  background:color-mix(in srgb,var(--brand-light) 92%,#fff);
  color:var(--brand-body);
  transition:opacity .45s ease,visibility .45s ease;
  isolation:isolate;
}
.home-map-frame.is-loaded .home-map-loader{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}
.home-map-preview-art{
  position:absolute;
  inset:0;
  z-index:0;
  overflow:hidden;
  background:
    radial-gradient(circle at 78% 24%,color-mix(in srgb,var(--brand-accent) 14%,transparent) 0 5%,transparent 5.4%),
    radial-gradient(circle at 20% 74%,color-mix(in srgb,var(--brand-primary) 10%,transparent) 0 7%,transparent 7.4%),
    linear-gradient(135deg,color-mix(in srgb,var(--brand-light) 86%,#fff),#fff 68%);
}
.home-map-preview-art::before{
  content:"";
  position:absolute;
  inset:-20%;
  opacity:.5;
  background:
    repeating-linear-gradient(0deg,transparent 0 42px,color-mix(in srgb,var(--brand-border) 56%,transparent) 43px 44px),
    repeating-linear-gradient(90deg,transparent 0 58px,color-mix(in srgb,var(--brand-border) 48%,transparent) 59px 60px);
  transform:rotate(-5deg) scale(1.08);
}
.home-map-preview-art::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(255,255,255,.16),rgba(255,255,255,.02) 45%,rgba(255,255,255,.34));
}
.home-map-preview-road{
  position:absolute;
  z-index:1;
  display:block;
  height:14px;
  border-top:2px solid color-mix(in srgb,var(--brand-primary) 24%,#fff);
  border-bottom:1px solid rgba(255,255,255,.82);
  border-radius:50%;
  opacity:.72;
  transform-origin:center;
}
.home-map-preview-road--one{width:120%;left:-12%;top:34%;transform:rotate(13deg)}
.home-map-preview-road--two{width:92%;left:18%;top:62%;transform:rotate(-18deg)}
.home-map-preview-road--three{width:74%;left:-9%;top:76%;transform:rotate(31deg)}
.home-map-preview-node{
  position:absolute;
  z-index:2;
  width:8px;height:8px;
  border-radius:50%;
  background:#fff;
  border:2px solid color-mix(in srgb,var(--brand-primary) 30%,var(--brand-border));
  box-shadow:0 2px 8px rgba(0,0,0,.08);
}
.home-map-preview-node--one{left:26%;top:31%}
.home-map-preview-node--two{right:24%;top:58%}
.home-map-preview-node--three{left:43%;bottom:17%}
.home-map-preview-pin{
  position:absolute;
  z-index:3;
  left:58%;top:35%;
  width:54px;height:54px;
  display:grid;place-items:center;
  border-radius:50%;
  color:var(--brand-accent-contrast);
  background:var(--brand-accent);
  box-shadow:0 16px 36px color-mix(in srgb,var(--brand-accent) 28%,transparent);
  transform:translate(-50%,-50%);
}
.home-map-preview-pin svg{width:24px;height:24px}
.home-map-preview-location{
  position:absolute;
  z-index:4;
  top:22px;left:22px;
  max-width:calc(100% - 44px);
  padding:8px 11px;
  border:1px solid color-mix(in srgb,var(--brand-border) 84%,transparent);
  background:rgba(255,255,255,.9);
  box-shadow:0 8px 22px rgba(0,0,0,.07);
  color:var(--brand-heading);
  font-size:.72rem;
  font-weight:800;
  line-height:1.2;
  backdrop-filter:blur(10px);
}
.home-map-preview-content{
  position:absolute;
  z-index:5;
  left:clamp(22px,4vw,44px);
  bottom:clamp(22px,4vw,44px);
  width:min(390px,calc(100% - 44px));
  padding:24px;
  border:1px solid color-mix(in srgb,var(--brand-border) 86%,transparent);
  background:rgba(255,255,255,.94);
  box-shadow:0 22px 52px rgba(15,34,48,.14);
  backdrop-filter:blur(14px);
  text-align:left;
}
.home-map-loader-icon{
  width:44px;height:44px;
  margin:0 0 13px;
  display:grid;place-items:center;
  border-radius:50%;
  background:var(--brand-accent);
  color:var(--brand-accent-contrast);
  box-shadow:0 10px 24px color-mix(in srgb,var(--brand-accent) 22%,transparent);
}
.home-map-loader-icon svg{width:20px;height:20px}
.home-map-preview-content>strong{
  display:block;
  color:var(--brand-heading);
  font-size:1.16rem;
  line-height:1.2;
}
.home-map-preview-description{
  display:block;
  margin-top:8px;
  color:var(--brand-muted);
  font-size:.9rem;
  line-height:1.55;
}
.home-map-preview-areas{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:14px;
}
.home-map-preview-areas>span{
  display:inline-flex;
  align-items:center;
  min-height:26px;
  padding:4px 8px;
  border:1px solid color-mix(in srgb,var(--brand-border) 90%,transparent);
  background:color-mix(in srgb,var(--brand-light) 78%,#fff);
  color:var(--brand-body);
  font-size:.66rem;
  font-weight:750;
}
.home-map-load-btn{
  margin-top:17px;
  min-height:46px;
  border:1px solid var(--brand-heading);
  background:var(--brand-heading);
  color:#fff;
  padding:0 17px;
  font:inherit;
  font-size:.8rem;
  font-weight:var(--tb-btn-primary-weight,800);
  cursor:pointer;
  transition:transform .25s ease,box-shadow .25s ease,opacity .25s ease;
}
.home-map-load-btn:hover,
.home-map-load-btn:focus-visible{
  transform:translateY(-2px);
  box-shadow:0 9px 22px rgba(0,0,0,.12);
}
.home-map-frame.is-loading .home-map-load-btn{
  opacity:.62;
  cursor:progress;
  transform:none;
  box-shadow:none;
}
.home-map-preview-privacy{
  display:block;
  margin-top:10px;
  color:color-mix(in srgb,var(--brand-muted) 90%,#fff);
  font-size:.67rem;
  line-height:1.45;
}

/* V2.16.67 uploaded privacy-safe map screenshot preview. */
.home-map-loader--image{background:var(--brand-light)}
.home-map-preview-image-media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.home-map--greyscale .home-map-preview-image-media{filter:grayscale(1) saturate(.2) contrast(.96)}
.home-map-preview-consent-note{position:absolute;z-index:6;left:20px;bottom:20px;display:flex;align-items:center;gap:11px;max-width:calc(100% - 40px);padding:10px 12px;border:1px solid color-mix(in srgb,var(--brand-border) 86%,transparent);background:rgba(255,255,255,.94);box-shadow:0 12px 30px rgba(15,34,48,.12);backdrop-filter:blur(12px);color:var(--brand-body)}
.home-map-preview-consent-note>span:first-child{width:34px;height:34px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:var(--brand-accent);color:var(--brand-accent-contrast)}
.home-map-preview-note-icon{width:17px;height:17px}
.home-map-preview-consent-note>span:nth-child(2){display:flex;flex-direction:column;gap:1px;min-width:0}
.home-map-preview-consent-note strong{color:var(--brand-heading);font-size:.75rem;line-height:1.2}
.home-map-preview-consent-note small{color:var(--brand-muted);font-size:.65rem;line-height:1.3}
.home-map-preview-consent-note button{margin-left:auto;border:0;background:none;padding:5px 4px;color:var(--brand-heading);font:inherit;font-size:.68rem;font-weight:var(--tb-btn-primary-weight,750);text-decoration:underline;text-underline-offset:3px;cursor:pointer;white-space:nowrap}
.home-map-preview-consent-note button:hover{color:var(--brand-accent)}
@media(max-width:640px){.home-map-preview-consent-note{left:14px;right:14px;bottom:14px;max-width:none}.home-map-preview-consent-note button{display:none}}

/* 01 — Full Width Map: editorial introduction above a cinematic map. */
.home-map--full-width{
  background:var(--brand-light);
}
.home-map--full-width .home-map-shell{
  display:block;
}
.home-map--full-width .home-map-copy{
  display:grid;
  grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);
  column-gap:clamp(40px,7vw,110px);
  align-items:end;
  margin-bottom:32px;
}
.home-map--full-width .home-map-copy>.eyebrow,
.home-map--full-width .home-map-copy>h2,
.home-map--full-width .home-map-copy>.lead{grid-column:1}
.home-map--full-width .home-map-location-card,
.home-map--full-width .home-map-actions{grid-column:2}
.home-map--full-width .home-map-location-card{
  grid-row:1/span 3;
  align-self:start;
  margin-top:0;
}
.home-map--full-width .home-map-actions{margin-top:18px}
.home-map--full-width .home-map-frame{
  aspect-ratio:16/6.2;
  min-height:410px;
  box-shadow:none;
}

/* 02 — Split Location: the restrained default for most trade businesses. */
.home-map--split{
  background:#fff;
}
.home-map--split .home-map-frame{border-radius:2px}

/* 03 — Premium Panel: dark editorial section with an elevated map panel. */
.home-map--premium-panel{
  background:
    radial-gradient(circle at 8% 18%,color-mix(in srgb,var(--brand-accent) 10%,transparent),transparent 28%),
    linear-gradient(135deg,var(--brand-primary),color-mix(in srgb,var(--brand-primary) 78%,#000));
}
.home-map--premium-panel .home-map-shell{
  grid-template-columns:minmax(0,.72fr) minmax(540px,1.28fr);
}
.home-map--premium-panel .home-map-copy>.lead,
.home-map--premium-panel .home-map-location-type,
.home-map--premium-panel .home-map-location-card address{
  color:rgba(255,255,255,.68);
}
.home-map--premium-panel .home-map-copy h2,
.home-map--premium-panel .home-map-location-card strong{
  color:#fff;
}
.home-map--premium-panel .home-map-location-card{
  border-color:rgba(255,255,255,.16);
}
.home-map--premium-panel .home-map-location-icon{
  color:var(--brand-accent);
  background:color-mix(in srgb,var(--brand-accent) 16%,transparent);
}
.home-map--premium-panel .home-map-open-link{color:#fff}
.home-map--premium-panel .home-map-open-link:hover{color:var(--brand-accent)}
.home-map--premium-panel .home-map-frame{
  border-color:rgba(255,255,255,.12);
  box-shadow:0 34px 90px rgba(0,0,0,.28);
}

@media(max-width:1100px){
  .home-map-shell,
  .home-map--premium-panel .home-map-shell{
    grid-template-columns:minmax(0,.9fr) minmax(420px,1.1fr);
    gap:42px;
  }
  .home-map-frame{min-height:390px}
  .home-map--full-width .home-map-copy{grid-template-columns:1fr .72fr;gap:34px}
}
@media(max-width:860px){
  .home-map-shell,
  .home-map--premium-panel .home-map-shell{
    grid-template-columns:1fr;
    gap:34px;
  }
  .home-map-copy>.lead{max-width:720px}
  .home-map-frame{aspect-ratio:16/9;min-height:360px}
  .home-map--full-width .home-map-copy{display:block;margin-bottom:28px}
  .home-map--full-width .home-map-location-card{margin-top:26px}
  .home-map--full-width .home-map-frame{aspect-ratio:16/8;min-height:360px}
}
@media(max-width:680px){
  .home-map-section{padding-top:64px;padding-bottom:64px}
  .home-map-frame,
  .home-map--full-width .home-map-frame{
    aspect-ratio:4/3;
    min-height:300px;
  }
  .home-map-location-card{margin-top:24px;padding-top:20px}
  .home-map-actions{align-items:stretch;gap:14px;margin-top:24px}
  .home-map-actions .btn{width:100%;text-align:center}
  .home-map-open-link{display:inline-flex;min-height:42px;align-items:center}
  .home-map-preview-content{left:18px;right:18px;bottom:18px;width:auto;padding:20px}
  .home-map-preview-location{top:16px;left:16px;max-width:calc(100% - 32px)}
  .home-map-preview-pin{left:68%;top:28%;width:48px;height:48px}
  .home-map-loader-icon{width:42px;height:42px}
}

/* ================================================================
   V2.0.3 — Advanced Button Design
   Preset-driven geometry + optional overrides. This entire layer is
   dormant until buttonDesign differs from the legacy-safe defaults.
   ================================================================ */
.tb-button-design-active :is(.btn-primary,.header-cta){
  min-height:var(--tb-btn-primary-min-height);
  padding:var(--tb-btn-primary-py) var(--tb-btn-primary-px);
  border-width:var(--tb-btn-primary-border-width);
  border-style:solid;
  border-color:var(--tb-btn-primary-border);
  border-radius:var(--tb-btn-primary-radius);
  background:var(--tb-btn-primary-bg);
  color:var(--tb-btn-primary-text);
  font-size:var(--tb-btn-primary-font-size);
  font-weight:var(--tb-btn-primary-weight);
  line-height:1.18;
  box-shadow:var(--tb-btn-primary-shadow);
  max-width:100%;
  white-space:normal;
  text-align:center;
  transition:background-color .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease,transform .2s ease;
}

/* Secondary retains each existing component's contextual colour role unless
   an explicit advanced override or Outline preset is selected. */
.btn-dark{
  --tb-secondary-bg:var(--tb-filled-bg,var(--navy));
  --tb-secondary-text:var(--tb-filled-text,#fff);
  --tb-secondary-border:var(--tb-filled-border,transparent);
}
.btn-outline{
  --tb-secondary-bg:#fff;
  --tb-secondary-text:var(--navy);
  --tb-secondary-border:var(--brand-border);
}
.btn-outline-light{
  --tb-secondary-bg:transparent;
  --tb-secondary-text:#fff;
  --tb-secondary-border:rgba(255,255,255,.42);
}
.hero-secondary{
  --tb-secondary-bg:transparent;
  --tb-secondary-text:currentColor;
  --tb-secondary-border:currentColor;
}
.tb-button-design-active :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary){
  min-height:var(--tb-btn-secondary-min-height);
  padding:var(--tb-btn-secondary-py) var(--tb-btn-secondary-px);
  border-width:var(--tb-btn-secondary-border-width);
  border-style:solid;
  border-color:var(--tb-btn-secondary-border);
  border-radius:var(--tb-btn-secondary-radius);
  background:var(--tb-btn-secondary-bg);
  color:var(--tb-btn-secondary-text);
  font-size:var(--tb-btn-secondary-font-size);
  font-weight:var(--tb-btn-secondary-weight);
  line-height:1.18;
  box-shadow:var(--tb-btn-secondary-shadow);
  max-width:100%;
  white-space:normal;
  text-align:center;
  transition:background-color .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease,transform .2s ease;
}

/* Keep the long-standing header proportion when Standard is selected. */
.tb-button-design-active.tb-btn-primary-size--standard .header-cta{min-height:48px;padding-top:0;padding-bottom:0}
.tb-button-design-active.tb-btn-primary-size--compact .header-cta{min-height:42px}
.tb-button-design-active.tb-btn-primary-size--large .header-cta{min-height:56px}

/* Preset-specific character. Colours continue to come from the site palette. */
.tb-btn-primary-style--minimal :is(.btn-primary,.header-cta),
.tb-btn-secondary-style--minimal :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary){letter-spacing:-.005em}
.tb-btn-primary-style--premium :is(.btn-primary,.header-cta),
.tb-btn-secondary-style--premium :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary){letter-spacing:.002em}
.tb-btn-primary-style--sharp :is(.btn-primary,.header-cta),
.tb-btn-secondary-style--sharp :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary){letter-spacing:.015em}
.tb-btn-primary-style--bold :is(.btn-primary,.header-cta),
.tb-btn-secondary-style--bold :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary){letter-spacing:.005em}

/* Outline intentionally changes background behaviour while remaining palette-aware. */
.tb-button-design-active.tb-btn-primary-style--outline :is(.btn-primary,.header-cta){
  background:transparent;
  color:var(--tb-btn-primary-border, var(--cta-bg));
  border-color:var(--tb-btn-primary-border, var(--cta-bg));
}
.tb-button-design-active.tb-btn-secondary-style--outline :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary){
  background:transparent;
  color:var(--tb-btn-secondary-border);
  border-color:var(--tb-btn-secondary-border);
}

/* V2.18.33 — surface-aware Glass secondary button preset.
   The existing Final CTA image treatment becomes a proper global Secondary
   style, so Hero and Final CTA can intentionally share one visual language. */
.tb-button-design-active.tb-btn-secondary-style--glass{
  --tb-glass-bg:color-mix(in srgb,var(--brand-dark) 6%,transparent);
  --tb-glass-text:var(--brand-dark);
  --tb-glass-border:color-mix(in srgb,var(--brand-dark) 28%,transparent);
  --tb-glass-hover-bg:var(--brand-dark);
  --tb-glass-hover-text:#fff;
}
.tb-button-design-active.tb-btn-secondary-style--glass :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary){
  background:var(--tb-glass-bg);
  color:var(--tb-glass-text);
  border-color:var(--tb-glass-border);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}
.tb-button-design-active.tb-btn-secondary-style--glass :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary):hover{
  background:var(--tb-glass-hover-bg)!important;
  color:var(--tb-glass-hover-text)!important;
  border-color:var(--tb-glass-hover-bg)!important;
}
/* Dark / photographic surfaces use the exact light-glass language historically
   reserved for Final CTA image backgrounds. */
.tb-button-design-active.tb-btn-secondary-style--glass :is(.hero--full-bleed,.hero--split,.hero--lead-form,.hero--centered) .hero-secondary,
.tb-button-design-active.tb-btn-secondary-style--glass .cta-bg--image .btn-dark,
.tb-button-design-active.tb-btn-secondary-style--glass .btn-outline-light{
  --tb-glass-bg:color-mix(in srgb,#fff 12%,transparent);
  --tb-glass-text:#fff;
  --tb-glass-border:color-mix(in srgb,#fff 40%,transparent);
  --tb-glass-hover-bg:#fff;
  --tb-glass-hover-text:var(--brand-dark);
}
.tb-button-design-active.tb-btn-secondary-style--glass .hero--brand-panel .hero-secondary,
.tb-button-design-active.tb-btn-secondary-style--glass .hero--floating-panel.hero--panel-brand .hero-secondary{
  --tb-glass-bg:color-mix(in srgb,var(--accent-contrast) 12%,transparent);
  --tb-glass-text:var(--accent-contrast);
  --tb-glass-border:color-mix(in srgb,var(--accent-contrast) 40%,transparent);
  --tb-glass-hover-bg:var(--accent-contrast);
  --tb-glass-hover-text:var(--brand-dark);
}
/* Once Button Design is active, Final CTA must respect the global Secondary
   style instead of its legacy image-context override. */
.tb-button-design-active:not(.tb-btn-secondary-style--glass) .cta-tone--light.cta-bg--image .btn-dark{
  --tb-filled-bg:var(--tb-btn-secondary-bg);
  --tb-filled-text:var(--tb-btn-secondary-text);
  --tb-filled-border:var(--tb-btn-secondary-border);
  background:var(--tb-btn-secondary-bg);
  color:var(--tb-btn-secondary-text);
  border-color:var(--tb-btn-secondary-border);
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
}

/* Explicit hover presets. Default deliberately falls through to the existing
   Toolbelt hover system for perfect backwards compatibility. */
.tb-button-design-active.tb-btn-primary-hover--none :is(.btn-primary,.header-cta):hover{
  background:var(--tb-btn-primary-bg)!important;color:var(--tb-btn-primary-text)!important;border-color:var(--tb-btn-primary-border)!important;transform:none!important;box-shadow:var(--tb-btn-primary-shadow)!important
}
.tb-button-design-active.tb-btn-secondary-hover--none :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary):hover{
  background:var(--tb-btn-secondary-bg)!important;color:var(--tb-btn-secondary-text)!important;border-color:var(--tb-btn-secondary-border)!important;transform:none!important;box-shadow:var(--tb-btn-secondary-shadow)!important
}
.tb-button-design-active.tb-btn-primary-hover--colour-fade :is(.btn-primary,.header-cta):hover,
.tb-button-design-active.tb-btn-primary-hover--fill :is(.btn-primary,.header-cta):hover{
  background:var(--tb-btn-primary-hover-bg)!important;color:var(--tb-btn-primary-hover-text)!important;border-color:var(--tb-btn-primary-hover-bg)!important;transform:none!important;box-shadow:var(--tb-btn-primary-shadow)!important
}
.tb-button-design-active.tb-btn-secondary-hover--colour-fade :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary):hover,
.tb-button-design-active.tb-btn-secondary-hover--fill :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary):hover{
  background:var(--tb-btn-secondary-hover-bg)!important;color:var(--tb-btn-secondary-hover-text)!important;border-color:var(--tb-btn-secondary-hover-bg)!important;transform:none!important;box-shadow:var(--tb-btn-secondary-shadow)!important
}
.tb-button-design-active.tb-btn-primary-hover--lift :is(.btn-primary,.header-cta):hover{
  background:var(--tb-btn-primary-bg)!important;color:var(--tb-btn-primary-text)!important;border-color:var(--tb-btn-primary-border)!important;transform:translateY(-2px)!important;box-shadow:0 13px 28px color-mix(in srgb,var(--brand-primary) 18%,transparent)!important
}
.tb-button-design-active.tb-btn-secondary-hover--lift :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary):hover{
  background:var(--tb-btn-secondary-bg)!important;color:var(--tb-btn-secondary-text)!important;border-color:var(--tb-btn-secondary-border)!important;transform:translateY(-2px)!important;box-shadow:0 13px 28px color-mix(in srgb,var(--brand-primary) 18%,transparent)!important
}
.tb-button-design-active.tb-btn-primary-hover--arrow-move :is(.btn-primary,.header-cta):hover{
  background:var(--tb-btn-primary-bg)!important;color:var(--tb-btn-primary-text)!important;border-color:var(--tb-btn-primary-border)!important;transform:none!important;box-shadow:var(--tb-btn-primary-shadow)!important
}
.tb-button-design-active.tb-btn-secondary-hover--arrow-move :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary):hover{
  background:var(--tb-btn-secondary-bg)!important;color:var(--tb-btn-secondary-text)!important;border-color:var(--tb-btn-secondary-border)!important;transform:none!important;box-shadow:var(--tb-btn-secondary-shadow)!important
}
.tb-button-design-active.tb-btn-primary-hover--subtle-scale :is(.btn-primary,.header-cta):hover{
  background:var(--tb-btn-primary-bg)!important;color:var(--tb-btn-primary-text)!important;border-color:var(--tb-btn-primary-border)!important;transform:scale(1.02)!important;box-shadow:var(--tb-btn-primary-shadow)!important
}
.tb-button-design-active.tb-btn-secondary-hover--subtle-scale :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary):hover{
  background:var(--tb-btn-secondary-bg)!important;color:var(--tb-btn-secondary-text)!important;border-color:var(--tb-btn-secondary-border)!important;transform:scale(1.02)!important;box-shadow:var(--tb-btn-secondary-shadow)!important
}

/* Built-in production icons use lightweight CSS masks so no extra requests are
   created. Custom SVGs reuse the sanitised Icon Library and are also masked,
   therefore automatically inheriting the button text colour. */
.tb-button-design-active{
  --tb-btn-icon-arrow-right:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  --tb-btn-icon-chevron-right:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m9 6 6 6-6 6' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  --tb-btn-icon-phone:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.7 15.7 0 0 0 6.6 6.6l2.2-2.2a1 1 0 0 1 1-.24c1.08.36 2.24.56 3.43.56a1 1 0 0 1 1 1V20a1 1 0 0 1-1 1C10.52 21 3 13.48 3 4.17a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.2.2 2.35.56 3.43a1 1 0 0 1-.25 1.02L6.6 10.8Z' fill='black'/%3E%3C/svg%3E");
  --tb-btn-icon-email:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3.5 5h17A1.5 1.5 0 0 1 22 6.5v11a1.5 1.5 0 0 1-1.5 1.5h-17A1.5 1.5 0 0 1 2 17.5v-11A1.5 1.5 0 0 1 3.5 5Zm.35 2 8.15 5.55L20.15 7H3.85Zm16.15 2.1-7.44 5.07a1 1 0 0 1-1.12 0L4 9.1v7.9h16V9.1Z' fill='black'/%3E%3C/svg%3E");
  --tb-btn-icon-whatsapp:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.5 3.5A11.7 11.7 0 0 0 12.1 0C5.6 0 .3 5.2.3 11.7c0 2.1.6 4.1 1.6 5.9L.2 24l6.6-1.7a11.9 11.9 0 0 0 5.3 1.3h.1C18.6 23.6 24 18.4 24 11.8c0-3.1-1.3-6.1-3.5-8.3ZM12.1 21.6c-1.7 0-3.4-.5-4.9-1.3l-.4-.2-3.9 1 1.1-3.8-.2-.4a9.7 9.7 0 1 1 8.3 4.7Zm5.3-7.2c-.3-.1-1.7-.8-2-.9-.3-.1-.5-.1-.7.1-.2.3-.8 1-1 1.2-.2.2-.4.2-.7.1-1.9-.9-3.2-1.7-4.5-3.8-.3-.5.3-.5.9-1.6.1-.2.1-.5 0-.7-.1-.1-.7-1.7-.9-2.3-.2-.6-.5-.5-.7-.5h-.6c-.2 0-.6.1-.9.4-.3.3-1.2 1.2-1.2 2.9s1.2 3.3 1.4 3.5c.2.2 2.4 3.7 5.9 5.2 2.2.9 3.1 1 4.2.9.7-.1 1.7-.7 1.9-1.4.2-.7.2-1.3.2-1.4-.1-.2-.3-.3-.6-.4Z' fill='black'/%3E%3C/svg%3E");
}
.tb-btn-primary-icon--arrow-right{--tb-btn-primary-icon-image:var(--tb-btn-icon-arrow-right)}
.tb-btn-primary-icon--chevron-right{--tb-btn-primary-icon-image:var(--tb-btn-icon-chevron-right)}
.tb-btn-primary-icon--phone{--tb-btn-primary-icon-image:var(--tb-btn-icon-phone)}
.tb-btn-primary-icon--email{--tb-btn-primary-icon-image:var(--tb-btn-icon-email)}
.tb-btn-primary-icon--whatsapp{--tb-btn-primary-icon-image:var(--tb-btn-icon-whatsapp)}
.tb-btn-primary-icon--custom{--tb-btn-primary-icon-image:var(--tb-btn-primary-custom-icon)}
.tb-btn-secondary-icon--arrow-right{--tb-btn-secondary-icon-image:var(--tb-btn-icon-arrow-right)}
.tb-btn-secondary-icon--chevron-right{--tb-btn-secondary-icon-image:var(--tb-btn-icon-chevron-right)}
.tb-btn-secondary-icon--phone{--tb-btn-secondary-icon-image:var(--tb-btn-icon-phone)}
.tb-btn-secondary-icon--email{--tb-btn-secondary-icon-image:var(--tb-btn-icon-email)}
.tb-btn-secondary-icon--whatsapp{--tb-btn-secondary-icon-image:var(--tb-btn-icon-whatsapp)}
.tb-btn-secondary-icon--custom{--tb-btn-secondary-icon-image:var(--tb-btn-secondary-custom-icon)}

.tb-button-design-active[class*="tb-btn-primary-icon--"] a.btn-primary:not(.header-cta)::before,
.tb-button-design-active[class*="tb-btn-primary-icon--"] a.btn-primary:not(.header-cta)::after,
.tb-button-design-active[class*="tb-btn-primary-icon--"] a.header-cta::before,
.tb-button-design-active[class*="tb-btn-primary-icon--"] a.header-cta::after,
.tb-button-design-active[class*="tb-btn-secondary-icon--"] a.btn-dark::before,
.tb-button-design-active[class*="tb-btn-secondary-icon--"] a.btn-dark::after,
.tb-button-design-active[class*="tb-btn-secondary-icon--"] a.btn-outline::before,
.tb-button-design-active[class*="tb-btn-secondary-icon--"] a.btn-outline::after,
.tb-button-design-active[class*="tb-btn-secondary-icon--"] a.btn-outline-light::before,
.tb-button-design-active[class*="tb-btn-secondary-icon--"] a.btn-outline-light::after,
.tb-button-design-active[class*="tb-btn-secondary-icon--"] a.hero-secondary::before,
.tb-button-design-active[class*="tb-btn-secondary-icon--"] a.hero-secondary::after{
  width:1.05em;height:1.05em;flex:0 0 1.05em;background:currentColor;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;
  transition:transform .2s ease;
}
.tb-btn-primary-icon-pos--right:not(.tb-btn-primary-icon--none) a.btn-primary::after{content:"";-webkit-mask-image:var(--tb-btn-primary-icon-image);mask-image:var(--tb-btn-primary-icon-image)}
.tb-btn-primary-icon-pos--left:not(.tb-btn-primary-icon--none) a.btn-primary::before{content:"";-webkit-mask-image:var(--tb-btn-primary-icon-image);mask-image:var(--tb-btn-primary-icon-image)}
.tb-btn-secondary-icon-pos--right:not(.tb-btn-secondary-icon--none) :is(a.btn-dark,a.btn-outline,a.btn-outline-light,a.hero-secondary)::after{content:"";-webkit-mask-image:var(--tb-btn-secondary-icon-image);mask-image:var(--tb-btn-secondary-icon-image)}
.tb-btn-secondary-icon-pos--left:not(.tb-btn-secondary-icon--none) :is(a.btn-dark,a.btn-outline,a.btn-outline-light,a.hero-secondary)::before{content:"";-webkit-mask-image:var(--tb-btn-secondary-icon-image);mask-image:var(--tb-btn-secondary-icon-image)}
.tb-btn-primary-hover--arrow-move.tb-btn-primary-icon-pos--right a.btn-primary:hover::after{transform:translateX(4px)}
.tb-btn-primary-hover--arrow-move.tb-btn-primary-icon-pos--left a.btn-primary:hover::before{transform:translateX(-4px)}
.tb-btn-secondary-hover--arrow-move.tb-btn-secondary-icon-pos--right :is(a.btn-dark,a.btn-outline,a.btn-outline-light,a.hero-secondary):hover::after{transform:translateX(4px)}
.tb-btn-secondary-hover--arrow-move.tb-btn-secondary-icon-pos--left :is(a.btn-dark,a.btn-outline,a.btn-outline-light,a.hero-secondary):hover::before{transform:translateX(-4px)}

/* Outline + Default gets a restrained fill even if the site's old hover mode
   was lift-only. Choosing Default on every untouched Classic site remains inert
   because the new system is not active there. */
.tb-button-design-active.tb-btn-primary-style--outline.tb-btn-primary-hover--default :is(.btn-primary,.header-cta):hover{
  background:var(--tb-btn-primary-hover-bg)!important;color:var(--tb-btn-primary-hover-text)!important;border-color:var(--tb-btn-primary-hover-bg)!important
}
.tb-button-design-active.tb-btn-secondary-style--outline.tb-btn-secondary-hover--default :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary):hover{
  background:var(--tb-btn-secondary-hover-bg)!important;color:var(--tb-btn-secondary-hover-text)!important;border-color:var(--tb-btn-secondary-hover-bg)!important
}

@media(max-width:680px){
  .tb-button-design-active :is(.btn-primary,.header-cta,.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary){max-width:100%}
  .tb-button-design-active.tb-btn-primary-size--large :is(.btn-primary,.header-cta){padding-left:min(var(--tb-btn-primary-px),24px);padding-right:min(var(--tb-btn-primary-px),24px)}
  .tb-button-design-active.tb-btn-secondary-size--large :is(.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary){padding-left:min(var(--tb-btn-secondary-px),24px);padding-right:min(var(--tb-btn-secondary-px),24px)}
}

@media(prefers-reduced-motion:reduce){
  .tb-button-design-active :is(.btn-primary,.header-cta,.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary),
  .tb-button-design-active :is(.btn-primary,.header-cta,.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary)::before,
  .tb-button-design-active :is(.btn-primary,.header-cta,.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary)::after{
    transition:none!important;animation:none!important
  }
  .tb-button-design-active :is(.btn-primary,.header-cta,.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary):hover,
  .tb-button-design-active :is(.btn-primary,.header-cta,.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary):hover::before,
  .tb-button-design-active :is(.btn-primary,.header-cta,.btn-dark,.btn-outline,.btn-outline-light,.hero-secondary):hover::after{
    transform:none!important
  }
}

/* ================================================================
   V2.0.4 — Hero Finishing
   Optional decorative layer over the established hero templates.
   No selectors activate unless .hero--finished is present.
   ================================================================ */
.hero--finished{
  isolation:isolate;
  --hero-finish-divider-color:#fff;
  --hero-finish-divider-height:42px;
  --hero-finish-animation-duration:12s;
  --hero-finish-intensity:.38;
}
.hero--finished .hero-layout{z-index:3}
.hero--finished .hero-bg{z-index:0}
.hero-finish-bg-treatment,
.hero-decorative-accent,
.hero-finishing-divider,
.hero-image-finish-treatment{pointer-events:none}
.hero-finish-bg-treatment{
  position:absolute;
  inset:0;
  z-index:1;
  opacity:0;
}
.hero-decorative-accent{
  position:absolute;
  z-index:1;
  width:min(34vw,470px);
  height:min(34vw,470px);
  color:var(--brand-accent);
  opacity:.72;
}
.hero-decorative-accent>span{position:absolute;inset:0;display:block}
.hero-accent-position--left .hero-decorative-accent{left:-5%;top:16%}
.hero-accent-position--right .hero-decorative-accent{right:-4%;top:14%}
.hero-accent-position--behind-content .hero-decorative-accent{left:4%;top:24%;width:min(39vw,540px);height:min(30vw,410px)}
.hero-accent-position--behind-image .hero-decorative-accent{right:2%;top:12%;width:min(42vw,590px);height:min(42vw,590px)}
.hero--image-left.hero-accent-position--behind-image .hero-decorative-accent{right:auto;left:2%}

.hero-decorative--glow .hero-decorative-accent>span{
  inset:10%;
  border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--brand-accent) 28%,transparent) 0%,color-mix(in srgb,var(--brand-accent) 10%,transparent) 44%,transparent 72%);
  filter:blur(16px);
}
.hero-decorative--gradient-line .hero-decorative-accent{height:180px;width:min(30vw,390px)}
.hero-decorative--gradient-line .hero-decorative-accent>span::before,
.hero-decorative--gradient-line .hero-decorative-accent>span::after{
  content:"";position:absolute;right:0;width:100%;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--brand-accent) 86%,transparent));
}
.hero-decorative--gradient-line .hero-decorative-accent>span::before{top:34%;transform:rotate(-7deg)}
.hero-decorative--gradient-line .hero-decorative-accent>span::after{top:58%;width:72%;opacity:.48;transform:rotate(-7deg)}
.hero-accent-position--left.hero-decorative--gradient-line .hero-decorative-accent>span::before,
.hero-accent-position--left.hero-decorative--gradient-line .hero-decorative-accent>span::after,
.hero-accent-position--behind-content.hero-decorative--gradient-line .hero-decorative-accent>span::before,
.hero-accent-position--behind-content.hero-decorative--gradient-line .hero-decorative-accent>span::after{right:auto;left:0;background:linear-gradient(90deg,color-mix(in srgb,var(--brand-accent) 86%,transparent),transparent)}
.hero-decorative--dots .hero-decorative-accent>span{
  background-image:radial-gradient(circle,color-mix(in srgb,var(--brand-accent) 72%,transparent) 1.25px,transparent 1.5px);
  background-size:18px 18px;
  mask-image:linear-gradient(135deg,#000 10%,transparent 76%);
  -webkit-mask-image:linear-gradient(135deg,#000 10%,transparent 76%);
}
.hero-decorative--grid .hero-decorative-accent>span{
  background-image:linear-gradient(color-mix(in srgb,var(--brand-accent) 19%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--brand-accent) 19%,transparent) 1px,transparent 1px);
  background-size:28px 28px;
  mask-image:radial-gradient(circle at center,#000 0%,rgba(0,0,0,.72) 38%,transparent 74%);
  -webkit-mask-image:radial-gradient(circle at center,#000 0%,rgba(0,0,0,.72) 38%,transparent 74%);
}
.hero-decorative--fine-grain .hero-decorative-accent{inset:0;width:auto;height:auto;opacity:.18}
.hero-decorative--fine-grain .hero-decorative-accent>span{
  background-image:radial-gradient(circle,currentColor .55px,transparent .7px);
  background-size:4px 4px;
  mask-image:linear-gradient(110deg,transparent 8%,#000 45%,transparent 92%);
  -webkit-mask-image:linear-gradient(110deg,transparent 8%,#000 45%,transparent 92%);
}
.hero-decorative--abstract-shape .hero-decorative-accent>span{
  inset:9%;border:1px solid color-mix(in srgb,var(--brand-accent) 52%,transparent);border-radius:46% 54% 62% 38% / 42% 38% 62% 58%;transform:rotate(-12deg);
}
.hero-decorative--abstract-shape .hero-decorative-accent>span::after{
  content:"";position:absolute;inset:13%;border:1px solid color-mix(in srgb,var(--brand-accent) 24%,transparent);border-radius:58% 42% 46% 54%;transform:rotate(17deg)
}

/* Content accents are real flow elements, so they cannot sit on top of hero copy. */
.hero-content-finish-accent{display:block;margin:0 0 20px;color:var(--brand-accent);position:relative}
.hero-content-accent--short-line .hero-content-finish-accent{width:42px;height:2px;background:currentColor}
.hero-content-accent--extended-line .hero-content-finish-accent{width:92px;height:2px;background:linear-gradient(90deg,currentColor,transparent)}
.hero-content-accent--vertical-line .hero-content-finish-accent{width:2px;height:42px;background:currentColor}
.hero-content-accent--corner-detail .hero-content-finish-accent{width:34px;height:24px;border-left:2px solid currentColor;border-top:2px solid currentColor}

/* Image treatments use an overlay layer rather than modifying image geometry. */
.hero--finished .hero-media{position:relative}
.hero-image-finish-treatment{position:absolute;inset:0;z-index:2}
.hero-image-treatment--gradient-fade .hero-finish-bg-treatment{opacity:1;background:linear-gradient(90deg,color-mix(in srgb,var(--brand-dark) 32%,transparent),transparent 52%)}
.hero-image-treatment--gradient-fade.hero--image-right .hero-image-finish-treatment{background:linear-gradient(90deg,color-mix(in srgb,var(--brand-primary) 26%,transparent),transparent 48%)}
.hero-image-treatment--gradient-fade.hero--image-left .hero-image-finish-treatment{background:linear-gradient(270deg,color-mix(in srgb,var(--brand-primary) 26%,transparent),transparent 48%)}
.hero-image-treatment--soft-vignette .hero-finish-bg-treatment{opacity:1;background:radial-gradient(ellipse at center,transparent 44%,rgba(2,12,20,.28) 100%)}
.hero-image-treatment--soft-vignette .hero-image-finish-treatment{box-shadow:inset 0 0 88px rgba(2,12,20,.28)}
.hero-image-treatment--colour-wash .hero-finish-bg-treatment,
.hero-image-treatment--colour-wash .hero-image-finish-treatment{opacity:1;background:color-mix(in srgb,var(--brand-primary) 19%,transparent);mix-blend-mode:multiply}
.hero-image-treatment--duotone-tint .hero-finish-bg-treatment,
.hero-image-treatment--duotone-tint .hero-image-finish-treatment{opacity:1;background:linear-gradient(135deg,color-mix(in srgb,var(--brand-primary) 31%,transparent),color-mix(in srgb,var(--brand-accent) 17%,transparent));mix-blend-mode:color}

/* Divider is absolutely contained by the hero: no extra document height / CLS. */
.hero-finishing-divider{
  position:absolute;
  left:-2%;right:-2%;bottom:-1px;
  width:104%;height:var(--hero-finish-divider-height);
  z-index:2;
  color:var(--hero-finish-divider-color);
  overflow:hidden;
  transform-origin:center bottom;
}
.hero-finishing-divider svg{display:block;width:100%;height:100%;overflow:visible}
.hero--finished:not(.hero-divider--none) .hero-layout{padding-bottom:max(16px,calc(var(--hero-finish-divider-height) * .32))}
.hero-divider--fine-line .hero-finishing-divider{height:4px}

.hero-divider-animation--gentle-drift .hero-finishing-divider svg{animation:heroFinishDrift var(--hero-finish-animation-duration) ease-in-out infinite alternate}
.hero-divider-animation--slow-wave .hero-finishing-divider svg{animation:heroFinishWave var(--hero-finish-animation-duration) ease-in-out infinite alternate}
.hero-divider-animation--soft-pulse .hero-finishing-divider{animation:heroFinishPulse var(--hero-finish-animation-duration) ease-in-out infinite alternate}
.hero-divider-animation--draw-in .hero-finishing-divider{animation:heroFinishDrawIn 1.6s cubic-bezier(.22,.8,.24,1) both}
.hero-finish-speed--medium.hero-divider-animation--draw-in .hero-finishing-divider{animation-duration:1.05s}
.hero-finish-intensity--very-subtle{--hero-finish-drift:.7%;--hero-finish-drift-neg:-.7%;--hero-finish-scale:1.008;--hero-finish-pulse:.90}
.hero-finish-intensity--subtle{--hero-finish-drift:1.2%;--hero-finish-drift-neg:-1.2%;--hero-finish-scale:1.014;--hero-finish-pulse:.82}
.hero-finish-intensity--noticeable{--hero-finish-drift:1.8%;--hero-finish-drift-neg:-1.8%;--hero-finish-scale:1.022;--hero-finish-pulse:.72}
@keyframes heroFinishDrift{from{transform:translateX(var(--hero-finish-drift-neg))}to{transform:translateX(var(--hero-finish-drift))}}
@keyframes heroFinishWave{from{transform:translateX(var(--hero-finish-drift-neg)) scaleX(1)}to{transform:translateX(var(--hero-finish-drift)) scaleX(var(--hero-finish-scale))}}
@keyframes heroFinishPulse{from{opacity:var(--hero-finish-pulse)}to{opacity:1}}
@keyframes heroFinishDrawIn{from{clip-path:inset(0 100% 0 0);opacity:.7}to{clip-path:inset(0 0 0 0);opacity:1}}

/* Tablet safety: reduce visual density and divider depth automatically. */
@media(max-width:980px){
  .hero-responsive--auto,
  .hero-responsive--simplify{--hero-finish-divider-height:clamp(24px,5.2vw,52px)!important}
  .hero-responsive--auto .hero-decorative-accent{opacity:.48;transform:scale(.82)}
  .hero-responsive--simplify .hero-decorative-accent{display:none}
  .hero-responsive--simplify .hero-finish-bg-treatment,
  .hero-responsive--simplify .hero-image-finish-treatment{opacity:.55}
  .hero-responsive--auto.hero-decorative--fine-grain .hero-decorative-accent,
  .hero-responsive--auto.hero-decorative--abstract-shape .hero-decorative-accent{opacity:.28}
}

/* Mobile safety: transforms are disabled, decoration is simplified and all
   finishing layers can be removed entirely without touching the hero template. */
@media(max-width:640px){
  .hero--finished{--hero-finish-divider-height:30px!important}
  .hero--finished .hero-finishing-divider,
  .hero--finished .hero-finishing-divider svg{animation:none!important;transform:none!important}
  .hero-responsive--auto.hero-decorative--dots .hero-decorative-accent,
  .hero-responsive--auto.hero-decorative--grid .hero-decorative-accent,
  .hero-responsive--auto.hero-decorative--fine-grain .hero-decorative-accent,
  .hero-responsive--auto.hero-decorative--abstract-shape .hero-decorative-accent{display:none}
  .hero-responsive--auto .hero-decorative-accent{width:230px;height:230px;opacity:.30;top:8%;right:-70px;left:auto}
  .hero-responsive--auto.hero--image-left .hero-decorative-accent{left:-70px;right:auto}
  .hero-responsive--auto .hero-content-finish-accent{margin-bottom:14px}
  .hero-responsive--auto.hero-content-accent--extended-line .hero-content-finish-accent{width:62px}
  .hero-responsive--auto.hero-content-accent--vertical-line .hero-content-finish-accent{height:28px}
  .hero-responsive--simplify{--hero-finish-divider-height:22px!important}
  .hero-responsive--simplify .hero-decorative-accent{display:none}
  .hero-responsive--simplify .hero-content-finish-accent{margin-bottom:12px;transform:scale(.8);transform-origin:left center}
  .hero-responsive--simplify .hero-finish-bg-treatment,
  .hero-responsive--simplify .hero-image-finish-treatment{opacity:.38}
  .hero-responsive--hide-mobile .hero-finishing-divider,
  .hero-responsive--hide-mobile .hero-decorative-accent,
  .hero-responsive--hide-mobile .hero-content-finish-accent,
  .hero-responsive--hide-mobile .hero-finish-bg-treatment,
  .hero-responsive--hide-mobile .hero-image-finish-treatment{display:none!important}
  .hero-responsive--hide-mobile .hero-layout{padding-bottom:0}
}

@media(prefers-reduced-motion:reduce){
  .hero--finished .hero-finishing-divider,
  .hero--finished .hero-finishing-divider svg,
  .hero--finished .hero-decorative-accent,
  .hero--finished .hero-decorative-accent *{animation:none!important;transition:none!important;transform:none!important}
}

/* Toolbelt CMS v2.2.0 — one-page demo anchors/contact */
#services,#about,#reviews,#areas,#contact{scroll-margin-top:120px}
.one-page-contact-section .one-page-contact-form{max-width:900px;margin:0 auto}
.one-page-contact-section .enquiry-form-card{margin:0}
@media(max-width:760px){#services,#about,#reviews,#areas,#contact{scroll-margin-top:92px}}


/* ==========================================================
   V2.4.0 Navigation height control
   ========================================================== */
@media(min-width:981px){
  .header:not(.header--layout-centered-stack) .header-inner{height:var(--tb-nav-height,88px)}
  .header--layout-centered-stack .header-inner{min-height:max(126px,calc(var(--tb-nav-height,88px) + 38px))}
}
@media(max-width:980px){
  .header-inner{height:var(--tb-nav-mobile-height,78px)}
  .nav{top:var(--tb-nav-mobile-height,78px)}
}


/* ==========================================================
   V2.7.5 Trust Strip design system
   ========================================================== */
.home-premium .trust-strip,
.trust-strip{
  --trust-surface:#fff;
  --trust-outer-bg:var(--cream);
  position:relative;
  background:var(--trust-outer-bg);
  border:0;
}
.trust-strip .trust-grid{
  width:min(calc(100% - 40px),var(--container));
  margin-inline:auto;
  display:grid;
  grid-template-columns:repeat(var(--trust-columns,4),minmax(0,1fr));
  background:var(--trust-surface);
  border:1px solid color-mix(in srgb,var(--brand-border) 92%,transparent);
  overflow:hidden;
}
.home-premium .trust-strip--floating{
  background:var(--trust-outer-bg);
  pointer-events:none;
}
.home-premium .trust-strip--floating .trust-grid{
  background:var(--trust-surface);
  pointer-events:auto;
}
.home-premium .trust-strip--standalone{background:var(--trust-outer-bg);border:0}
/* Contained and Wide intentionally expose the outer rail. Force that rail to
   the resolved following-section surface so older white floating-strip rules
   cannot leak through at either edge. */
.home-premium .trust-strip--floating.trust-width--contained,
.home-premium .trust-strip--floating.trust-width--wide,
.trust-strip--floating.trust-width--contained,
.trust-strip--floating.trust-width--wide{background:var(--trust-outer-bg)!important}

/* Width is independent from visual template. */
.trust-strip.trust-width--wide .trust-grid{width:min(calc(100% - 40px),1440px)}
.trust-strip.trust-width--full .trust-grid{width:100%;max-width:none;border-left:0;border-right:0}

/* Shared content treatment. */
.trust-strip .trust-item{
  min-width:0;
  min-height:112px;
  padding:26px 28px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  border:0;
  position:relative;
}
.home-premium .trust-strip .trust-item{min-height:112px;padding:26px 28px}
.trust-strip .trust-item-copy{min-width:0}
.trust-strip .trust-item strong{display:block;font-size:1.02rem;line-height:1.25;letter-spacing:-.025em}
.trust-strip .trust-item span{display:block;font-size:.76rem;line-height:1.5;margin-top:7px}
.trust-strip.trust-align--centre .trust-item{text-align:center;align-items:center}
.trust-strip.trust-align--centre .trust-item--with-icon{grid-template-columns:1fr!important;justify-items:center;text-align:center;gap:10px}
.trust-strip.trust-align--centre .trust-item-icon{justify-content:center}

/* Automatic/manual text contrast. */
.trust-strip.trust-text--dark{color:var(--brand-heading)}
.trust-strip.trust-text--dark .trust-item strong{color:var(--brand-heading)}
.trust-strip.trust-text--dark .trust-item span{color:var(--brand-muted)}
.trust-strip.trust-text--light{color:#fff}
.trust-strip.trust-text--light .trust-item strong{color:#fff}
.trust-strip.trust-text--light .trust-item span{color:rgba(255,255,255,.76)}

/* Divider strength follows the chosen surface instead of hard-coding white/grey. */
.trust-strip.trust-dividers--subtle{--trust-divider:color-mix(in srgb,currentColor 15%,transparent);--trust-divider-width:1px}
.trust-strip.trust-dividers--strong{--trust-divider:color-mix(in srgb,currentColor 27%,transparent);--trust-divider-width:1px}
.trust-strip.trust-dividers--none{--trust-divider:transparent;--trust-divider-width:0px}
.trust-strip .trust-item:not(:last-child)::after{
  content:"";
  position:absolute;
  top:20%;bottom:20%;right:0;
  width:var(--trust-divider-width,1px);
  background:var(--trust-divider,var(--brand-border));
}

/* Classic Cards — legacy structure with a controlled surface. */
.trust-layout--classic .trust-grid{box-shadow:var(--premium-shadow)}

/* Minimal — no card chrome; typography and separators do the work. */
.trust-layout--minimal .trust-grid{border:0;box-shadow:none;background:var(--trust-surface)}
.trust-layout--minimal .trust-item{min-height:98px;padding-block:22px}

/* Icon + Text — slightly more generous for visual markers. */
.trust-layout--icon-grid .trust-item{min-height:120px}
.trust-layout--icon-grid .trust-item--with-icon{grid-template-columns:auto minmax(0,1fr)!important;gap:16px}
.trust-layout--icon-grid .trust-item-icon{align-self:center}
.trust-layout--icon-grid .trust-item-icon .tb-icon{filter:drop-shadow(0 5px 12px color-mix(in srgb,currentColor 12%,transparent))}

/* Premium Centre — restrained, centred and spacious. */
.trust-layout--premium-centre .trust-grid{box-shadow:0 22px 65px color-mix(in srgb,var(--brand-primary) 10%,transparent)}
.trust-layout--premium-centre .trust-item{min-height:132px;padding:30px 26px;text-align:center;align-items:center}
.trust-layout--premium-centre .trust-item strong{font-size:1.08rem}
.trust-layout--premium-centre .trust-item span{max-width:260px}
.trust-layout--premium-centre .trust-item--with-icon{grid-template-columns:1fr!important;justify-items:center;gap:10px}
.trust-layout--premium-centre .trust-item-icon{justify-content:center}

/* Feature Band — strongest full-width/coloured option. */
.trust-layout--feature-band .trust-grid{box-shadow:none;border-top:0;border-bottom:0}
.trust-layout--feature-band .trust-item{min-height:104px;padding-block:22px}
.trust-layout--feature-band .trust-item strong{text-transform:none;font-weight:850}
.trust-layout--feature-band.trust-width--contained .trust-grid,
.trust-layout--feature-band.trust-width--wide .trust-grid{box-shadow:0 18px 48px color-mix(in srgb,var(--brand-primary) 10%,transparent)}

/* Highlight Cards — individual elevated tiles over the blending outer rail. */
.trust-layout--highlight-cards .trust-grid{
  background:transparent;
  border:0;
  box-shadow:none;
  gap:12px;
  overflow:visible;
}
.trust-layout--highlight-cards .trust-item{
  background:var(--trust-surface);
  border:1px solid color-mix(in srgb,var(--brand-border) 85%,transparent);
  box-shadow:0 14px 38px color-mix(in srgb,var(--brand-primary) 9%,transparent);
}
.trust-layout--highlight-cards .trust-item::after{display:none}
.trust-layout--highlight-cards.trust-width--full .trust-grid{padding-inline:20px}

/* Responsive rules are template-safe and deliberately avoid squeezed four-column copy. */
@media(max-width:1100px){
  .trust-strip .trust-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .trust-strip .trust-item:nth-child(2n)::after{display:none}
  .trust-strip .trust-item:nth-child(-n+2){border-bottom:var(--trust-divider-width,1px) solid var(--trust-divider,var(--brand-border))}
  .trust-layout--highlight-cards .trust-item{border-bottom:1px solid color-mix(in srgb,var(--brand-border) 85%,transparent)!important}
}
@media(max-width:680px){
  .home-premium .trust-strip--floating{margin-top:0;margin-bottom:0}
  .trust-strip .trust-grid,
  .trust-strip.trust-width--wide .trust-grid{width:min(calc(100% - 28px),var(--container))}
  .trust-strip.trust-width--full .trust-grid{width:100%}
  .trust-strip .trust-grid{grid-template-columns:1fr!important}
  .trust-strip .trust-item,
  .home-premium .trust-strip .trust-item{min-height:auto;padding:22px 20px}
  .trust-strip .trust-item::after{display:none!important}
  .trust-strip .trust-item:not(:last-child){border-bottom:var(--trust-divider-width,1px) solid var(--trust-divider,var(--brand-border))}
  .trust-layout--premium-centre .trust-item{padding-block:25px}
  .trust-layout--highlight-cards .trust-grid{gap:10px}
  .trust-layout--highlight-cards .trust-item{border-bottom:1px solid color-mix(in srgb,var(--brand-border) 85%,transparent)!important}
  .trust-layout--highlight-cards.trust-width--full .trust-grid{padding-inline:14px}
}

/* ==========================================================
   V2.7.7 Trust Strip hero-spacing presets
   Default keeps the legacy -34px desktop overlap exactly. Alternative
   presets use a restrained spacing scale and collapse safely on smaller
   viewports rather than allowing aggressive mobile overlap.
   ========================================================== */
@media(min-width:981px){
  .home-premium .trust-strip--floating.trust-spacing--compact{margin-top:-50px;padding-top:0}
  .home-premium .trust-strip--floating.trust-spacing--default{margin-top:-34px;padding-top:0}
  .home-premium .trust-strip--floating.trust-spacing--relaxed{margin-top:-18px;padding-top:0}
  .home-premium .trust-strip--floating.trust-spacing--spacious{margin-top:0;padding-top:16px}
}
@media(max-width:980px){
  .home-premium .trust-strip--floating.trust-spacing--compact,
  .home-premium .trust-strip--floating.trust-spacing--default{margin-top:0;padding-top:0}
  .home-premium .trust-strip--floating.trust-spacing--relaxed{margin-top:0;padding-top:12px}
  .home-premium .trust-strip--floating.trust-spacing--spacious{margin-top:0;padding-top:20px}
}



/* ==========================================================
   V2.8.0 — Global Image Treatment
   Non-destructive brand colour layer for photography only.
   ========================================================== */
.tb-image-treatment-overlay{
  position:absolute;
  inset:0;
  display:block;
  pointer-events:none;
  background:var(--tb-image-treatment-color,var(--brand-primary));
  opacity:var(--tb-image-treatment-opacity,.2);
  z-index:1;
}
.tb-image-treatment--standard{mix-blend-mode:normal}
.tb-image-treatment--tint{mix-blend-mode:color}
.tb-image-frame-surface>.tb-image-treatment-overlay{z-index:1}
.hero-bg>.tb-image-treatment-overlay{z-index:0}
.hero-media>.tb-image-treatment-overlay{z-index:1}
.hero-media::before{z-index:2}
.hero-image-finish-treatment{z-index:2}
.inner-hero>.tb-inner-hero-treatment{z-index:0}
.inner-hero-image::before{z-index:1}
.inner-hero-image>.container{z-index:2}
.cta>.tb-cta-treatment{z-index:-2}
.service-image-card>.tb-service-card-treatment{z-index:-2}
.services-editorial-image>.tb-service-editorial-treatment{z-index:0}
.services-editorial-image::after{z-index:1}
.service-alternating-media>.tb-image-treatment-overlay,
.service-accordion-media>.tb-image-treatment-overlay,
.services-page-alternating-media>.tb-image-treatment-overlay,
.services-page-editorial-media>.tb-image-treatment-overlay,
.services-page-image-card-media>.tb-image-treatment-overlay,
.services-page-feature-media>.tb-image-treatment-overlay{z-index:1}
.service-alternating-media,.service-accordion-media,
.services-page-alternating-media,.services-page-editorial-media,
.services-page-image-card-media,.services-page-feature-media,
.why-bg-media{position:relative;isolation:isolate}
.service-alternating-media::after{z-index:2}
.tb-project-media{position:relative;isolation:isolate;overflow:hidden}
.tb-project-media>.tb-project-treatment{z-index:1}
.project>.tb-project-media{height:100%}
.home-premium .project>.tb-project-media img{height:100%}
.project .project-caption{z-index:2}
.why-bg-media>.tb-why-treatment{z-index:0}


/* ==========================================================
   V2.9.0 Premium Top-Level Navigation Effects & Separators
   Explicit .nav-top-* scoping prevents any effect leaking into
   standard dropdown or mega-menu links/cards.
   ========================================================== */
@media(min-width:981px){
  /* V2.9.1: mega-menu parents must remain position:static. The full-width
     Editorial panel is intentionally positioned against the header/viewport,
     not against the Services trigger. */
  .nav>.nav-top-item{flex:0 0 auto}
  .nav>.nav-top-item:not(.has-mega-menu){position:relative}
  .nav>.has-mega-menu.nav-top-item{position:static}
  .nav-top-link{position:relative;display:inline-flex!important;align-items:center;min-height:38px;isolation:isolate;transition:color var(--tb-nav-motion-duration,0ms) ease,transform var(--tb-nav-motion-duration,0ms) cubic-bezier(.22,1,.36,1),opacity var(--tb-nav-motion-duration,0ms) ease,background-color var(--tb-nav-motion-duration,0ms) ease!important}
  .nav-label{position:relative;display:inline-block;z-index:1}
  .nav-parent{position:relative}
  .nav-parent .nav-top-link{min-height:38px}

  /* Separator colour automatically inherits the current nav surface when requested. */
  .nav>.nav-top-item+.nav-top-item::before{position:absolute;left:-12px;top:50%;z-index:3;pointer-events:none;color:var(--tb-nav-separator-color,currentColor);opacity:var(--tb-nav-separator-opacity,.17)}
  .header--nav-separator-fine-vertical .nav>.nav-top-item+.nav-top-item::before{content:"";width:1px;height:24px;background:var(--tb-nav-separator-color,currentColor);transform:translateY(-50%)}
  .header--nav-separator-short-vertical .nav>.nav-top-item+.nav-top-item::before{content:"";width:1px;height:13px;background:var(--tb-nav-separator-color,currentColor);transform:translateY(-50%)}
  .header--nav-separator-accent-vertical .nav>.nav-top-item+.nav-top-item::before{content:"";width:1px;height:15px;background:var(--brand-accent);opacity:.32;transform:translateY(-50%)}
  .header--nav-separator-centre-dot .nav>.nav-top-item+.nav-top-item::before{content:"";width:4px;height:4px;border-radius:50%;background:var(--tb-nav-separator-color,currentColor);transform:translate(-1px,-50%)}
  .header--nav-separator-micro-diamond .nav>.nav-top-item+.nav-top-item::before{content:"";width:5px;height:5px;background:var(--tb-nav-separator-color,currentColor);transform:translate(-1px,-50%) rotate(45deg)}
  .header--nav-separator-fine-slash .nav>.nav-top-item+.nav-top-item::before{content:"/";width:auto;height:auto;background:none;font-size:.72em;font-weight:500;line-height:1;transform:translate(-2px,-50%) rotate(-5deg)}
  .header--nav-separator-accent-tick .nav>.nav-top-item+.nav-top-item::before{content:"";width:1px;height:10px;background:var(--brand-accent);opacity:.38;transform:translate(-1px,-50%) rotate(20deg)}
  .header--nav-separator-wide-spacing .nav{gap:34px}
  .header--nav-separator-strength-standard.header--nav-separator-wide-spacing .nav{gap:38px}
  .header--nav-separator-strength-strong.header--nav-separator-wide-spacing .nav{gap:42px}
  .header--nav-separator-grouped-ends .nav{border-inline:1px solid color-mix(in srgb,var(--tb-nav-separator-color,currentColor) 17%,transparent);padding-inline:18px}
  .header--nav-separator-strength-standard.header--nav-separator-grouped-ends .nav{border-inline-color:color-mix(in srgb,var(--tb-nav-separator-color,currentColor) 28%,transparent)}
  .header--nav-separator-strength-strong.header--nav-separator-grouped-ends .nav{border-inline-color:color-mix(in srgb,var(--tb-nav-separator-color,currentColor) 46%,transparent)}
  .header--nav-separator-strength-standard.header--nav-separator-accent-vertical .nav>.nav-top-item+.nav-top-item::before{opacity:.46}
  .header--nav-separator-strength-strong.header--nav-separator-accent-vertical .nav>.nav-top-item+.nav-top-item::before{opacity:.64}
  .header--nav-separator-strength-standard.header--nav-separator-accent-tick .nav>.nav-top-item+.nav-top-item::before{opacity:.52}
  .header--nav-separator-strength-strong.header--nav-separator-accent-tick .nav>.nav-top-item+.nav-top-item::before{opacity:.70}

  /* Mega-menu triggers stay position:static so their full-width panels remain
     viewport-contained. Draw the trigger's separator on .nav-parent instead. */
  .nav>.nav-top-item+.has-mega-menu::before{display:none!important}
  .nav>.nav-top-item+.has-mega-menu>.nav-parent::before{position:absolute;left:-12px;top:50%;z-index:3;pointer-events:none;color:var(--tb-nav-separator-color,currentColor);opacity:var(--tb-nav-separator-opacity,.17)}
  .header--nav-separator-fine-vertical .nav>.nav-top-item+.has-mega-menu>.nav-parent::before{content:"";width:1px;height:24px;background:var(--tb-nav-separator-color,currentColor);transform:translateY(-50%)}
  .header--nav-separator-short-vertical .nav>.nav-top-item+.has-mega-menu>.nav-parent::before{content:"";width:1px;height:13px;background:var(--tb-nav-separator-color,currentColor);transform:translateY(-50%)}
  .header--nav-separator-accent-vertical .nav>.nav-top-item+.has-mega-menu>.nav-parent::before{content:"";width:1px;height:15px;background:var(--brand-accent);opacity:.32;transform:translateY(-50%)}
  .header--nav-separator-centre-dot .nav>.nav-top-item+.has-mega-menu>.nav-parent::before{content:"";width:4px;height:4px;border-radius:50%;background:var(--tb-nav-separator-color,currentColor);transform:translate(-1px,-50%)}
  .header--nav-separator-micro-diamond .nav>.nav-top-item+.has-mega-menu>.nav-parent::before{content:"";width:5px;height:5px;background:var(--tb-nav-separator-color,currentColor);transform:translate(-1px,-50%) rotate(45deg)}
  .header--nav-separator-fine-slash .nav>.nav-top-item+.has-mega-menu>.nav-parent::before{content:"/";width:auto;height:auto;background:none;font-size:.72em;font-weight:500;line-height:1;transform:translate(-2px,-50%) rotate(-5deg)}
  .header--nav-separator-accent-tick .nav>.nav-top-item+.has-mega-menu>.nav-parent::before{content:"";width:1px;height:10px;background:var(--brand-accent);opacity:.38;transform:translate(-1px,-50%) rotate(20deg)}
  .header--nav-separator-strength-standard.header--nav-separator-accent-vertical .nav>.nav-top-item+.has-mega-menu>.nav-parent::before{opacity:.46}
  .header--nav-separator-strength-strong.header--nav-separator-accent-vertical .nav>.nav-top-item+.has-mega-menu>.nav-parent::before{opacity:.64}
  .header--nav-separator-strength-standard.header--nav-separator-accent-tick .nav>.nav-top-item+.has-mega-menu>.nav-parent::before{opacity:.52}
  .header--nav-separator-strength-strong.header--nav-separator-accent-tick .nav>.nav-top-item+.has-mega-menu>.nav-parent::before{opacity:.70}

  /* Glass surfaces get a small contrast assist because blur softens 1px details. */
  .header--style-glass:not(.header-scrolled),.header--style-glass-dark:not(.header-scrolled){--tb-nav-separator-opacity:.30}

  /* Shared hover/current state. Services retains the state while its submenu is open. */
  .header:not(.header--nav-hover-classic-colour) .nav-top-link:hover,
  .header:not(.header--nav-hover-classic-colour) .nav-top-link:focus-visible,
  .header:not(.header--nav-hover-classic-colour) .nav-top-link.active,
  .header:not(.header--nav-hover-classic-colour) .nav-item.active>.nav-parent .nav-top-link,
  .header:not(.header--nav-hover-classic-colour) .nav-item.submenu-open>.nav-parent .nav-top-link{color:var(--tb-nav-fx-color,currentColor)!important}
  .header:not(.header--nav-hover-classic-colour) .nav-parent:hover .submenu-toggle,
  .header:not(.header--nav-hover-classic-colour) .nav-parent:focus-within .submenu-toggle,
  .header:not(.header--nav-hover-classic-colour) .nav-item.active>.nav-parent .submenu-toggle,
  .header:not(.header--nav-hover-classic-colour) .nav-item.submenu-open>.nav-parent .submenu-toggle{color:var(--tb-nav-fx-color,currentColor)!important}

  /* Classic stays intentionally equivalent to the historical colour-only state. */
  .header--nav-hover-classic-colour .nav-top-link:hover,
  .header--nav-hover-classic-colour .nav-top-link:focus-visible,
  .header--nav-hover-classic-colour .nav-top-link.active,
  .header--nav-hover-classic-colour .nav-item.active>.nav-parent .nav-top-link,
  .header--nav-hover-classic-colour .nav-item.submenu-open>.nav-parent .nav-top-link{color:var(--tb-nav-fx-color,var(--brand-accent))!important}
  .header--nav-hover-classic-colour .nav-parent:hover .submenu-toggle,
  .header--nav-hover-classic-colour .nav-parent:focus-within .submenu-toggle,
  .header--nav-hover-classic-colour .nav-item.active>.nav-parent .submenu-toggle,
  .header--nav-hover-classic-colour .nav-item.submenu-open>.nav-parent .submenu-toggle{color:var(--tb-nav-fx-color,var(--brand-accent))!important}

  /* Underline Reveal */
  .header--nav-hover-underline-reveal .nav-label::after,
  .header--nav-hover-underline-centre .nav-label::after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:1.5px;background:var(--tb-nav-fx-color,currentColor);transform-origin:left center;transform:scaleX(0);transition:transform var(--tb-nav-motion-duration,0ms) cubic-bezier(.22,1,.36,1)}
  .header--nav-hover-underline-reveal .nav-top-link:hover .nav-label::after,
  .header--nav-hover-underline-reveal .nav-top-link:focus-visible .nav-label::after,
  .header--nav-hover-underline-reveal .nav-top-link.active .nav-label::after,
  .header--nav-hover-underline-reveal .nav-item.active>.nav-parent .nav-label::after,
  .header--nav-hover-underline-reveal .nav-item.submenu-open>.nav-parent .nav-label::after{transform:scaleX(1)}

  /* Underline Centre */
  .header--nav-hover-underline-centre .nav-label::after{transform-origin:center center}
  .header--nav-hover-underline-centre .nav-top-link:hover .nav-label::after,
  .header--nav-hover-underline-centre .nav-top-link:focus-visible .nav-label::after,
  .header--nav-hover-underline-centre .nav-top-link.active .nav-label::after,
  .header--nav-hover-underline-centre .nav-item.active>.nav-parent .nav-label::after,
  .header--nav-hover-underline-centre .nav-item.submenu-open>.nav-parent .nav-label::after{transform:scaleX(1)}

  /* Accent Dot */
  .header--nav-hover-accent-dot .nav-label::after{content:"";position:absolute;left:50%;bottom:-8px;width:4px;height:4px;border-radius:50%;background:var(--tb-nav-fx-color,currentColor);opacity:0;transform:translate(-50%,3px) scale(.65);transition:opacity var(--tb-nav-motion-duration,0ms) ease,transform var(--tb-nav-motion-duration,0ms) cubic-bezier(.22,1,.36,1)}
  .header--nav-hover-accent-dot .nav-top-link:hover .nav-label::after,
  .header--nav-hover-accent-dot .nav-top-link:focus-visible .nav-label::after,
  .header--nav-hover-accent-dot .nav-top-link.active .nav-label::after,
  .header--nav-hover-accent-dot .nav-item.active>.nav-parent .nav-label::after,
  .header--nav-hover-accent-dot .nav-item.submenu-open>.nav-parent .nav-label::after{opacity:1;transform:translate(-50%,0) scale(1)}

  /* Soft Highlight / Premium Pill */
  .header--nav-hover-soft-highlight .nav-top-link,
  .header--nav-hover-premium-pill .nav-top-link{padding:7px 10px;margin:-7px -10px;border-radius:7px}
  .header--nav-hover-premium-pill .nav-top-link{padding-inline:13px;margin-inline:-13px;border-radius:999px}
  .header--nav-hover-soft-highlight .nav-top-link:hover,
  .header--nav-hover-soft-highlight .nav-top-link:focus-visible,
  .header--nav-hover-soft-highlight .nav-top-link.active,
  .header--nav-hover-soft-highlight .nav-item.active>.nav-parent .nav-top-link,
  .header--nav-hover-soft-highlight .nav-item.submenu-open>.nav-parent .nav-top-link{background:color-mix(in srgb,var(--tb-nav-fx-color,currentColor) 9%,transparent)}
  .header--nav-hover-premium-pill .nav-top-link:hover,
  .header--nav-hover-premium-pill .nav-top-link:focus-visible,
  .header--nav-hover-premium-pill .nav-top-link.active,
  .header--nav-hover-premium-pill .nav-item.active>.nav-parent .nav-top-link,
  .header--nav-hover-premium-pill .nav-item.submenu-open>.nav-parent .nav-top-link{background:color-mix(in srgb,var(--tb-nav-fx-color,currentColor) 13%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--tb-nav-fx-color,currentColor) 14%,transparent)}
  .header--nav-hover-soft-highlight .nav-parent:hover,
  .header--nav-hover-premium-pill .nav-parent:hover{border-radius:999px}

  /* Text Lift */
  .header--nav-hover-text-lift .nav-top-link:hover,
  .header--nav-hover-text-lift .nav-top-link:focus-visible,
  .header--nav-hover-text-lift .nav-item.submenu-open>.nav-parent .nav-top-link{transform:translateY(-2px)}

  /* Accent Bracket — pseudo elements stay on .nav-label so top-item separators remain independent. */
  .header--nav-hover-accent-bracket .nav-label::before,
  .header--nav-hover-accent-bracket .nav-label::after{position:absolute;top:50%;color:var(--tb-nav-fx-color,currentColor);opacity:0;transition:opacity var(--tb-nav-motion-duration,0ms) ease,transform var(--tb-nav-motion-duration,0ms) cubic-bezier(.22,1,.36,1);font-weight:500}
  .header--nav-hover-accent-bracket .nav-label::before{content:"[";left:-9px;transform:translate(-3px,-52%)}
  .header--nav-hover-accent-bracket .nav-label::after{content:"]";right:-9px;transform:translate(3px,-52%)}
  .header--nav-hover-accent-bracket .nav-top-link:hover .nav-label::before,
  .header--nav-hover-accent-bracket .nav-top-link:focus-visible .nav-label::before,
  .header--nav-hover-accent-bracket .nav-top-link.active .nav-label::before,
  .header--nav-hover-accent-bracket .nav-item.active>.nav-parent .nav-label::before,
  .header--nav-hover-accent-bracket .nav-item.submenu-open>.nav-parent .nav-label::before{opacity:.72;transform:translate(0,-52%)}
  .header--nav-hover-accent-bracket .nav-top-link:hover .nav-label::after,
  .header--nav-hover-accent-bracket .nav-top-link:focus-visible .nav-label::after,
  .header--nav-hover-accent-bracket .nav-top-link.active .nav-label::after,
  .header--nav-hover-accent-bracket .nav-item.active>.nav-parent .nav-label::after,
  .header--nav-hover-accent-bracket .nav-item.submenu-open>.nav-parent .nav-label::after{opacity:.72;transform:translate(0,-52%)}

  /* Background Sweep */
  .header--nav-hover-background-sweep .nav-label{background-image:linear-gradient(90deg,color-mix(in srgb,var(--tb-nav-fx-color,currentColor) 12%,transparent),color-mix(in srgb,var(--tb-nav-fx-color,currentColor) 12%,transparent));background-repeat:no-repeat;background-position:0 100%;background-size:0 100%;padding:4px 2px;margin:-4px -2px;transition:background-size var(--tb-nav-motion-duration,0ms) cubic-bezier(.22,1,.36,1)}
  .header--nav-hover-background-sweep .nav-top-link:hover .nav-label,
  .header--nav-hover-background-sweep .nav-top-link:focus-visible .nav-label,
  .header--nav-hover-background-sweep .nav-top-link.active .nav-label,
  .header--nav-hover-background-sweep .nav-item.active>.nav-parent .nav-label,
  .header--nav-hover-background-sweep .nav-item.submenu-open>.nav-parent .nav-label{background-size:100% 100%}

  /* Minimal Fade de-emphasises peers instead of adding decoration. */
  .header--nav-hover-minimal-fade .nav:has(.nav-top-link:hover) .nav-top-link:not(:hover),
  .header--nav-hover-minimal-fade .nav:has(.nav-top-link:focus-visible) .nav-top-link:not(:focus-visible){opacity:.48}

  /* Sliding Line: JS updates --tb-nav-slide-left/width and returns to the active page on leave. */
  .header--nav-hover-sliding-line .nav{position:relative}
  .header--nav-hover-sliding-line .nav::after{content:"";position:absolute;left:0;bottom:-7px;width:var(--tb-nav-slide-width,0px);height:1.5px;background:var(--tb-nav-fx-color,currentColor);opacity:var(--tb-nav-slide-visible,0);transform:translateX(var(--tb-nav-slide-left,0px));transition:transform var(--tb-nav-motion-duration,0ms) cubic-bezier(.22,1,.36,1),width var(--tb-nav-motion-duration,0ms) cubic-bezier(.22,1,.36,1),opacity 120ms ease;pointer-events:none}
}

@media(max-width:980px){
  /* Mobile uses the established tap/active treatment; desktop decoration never leaks into the stacked menu. */
  .nav>.nav-top-item::before,.nav>.nav-top-item::after,.nav-label::before,.nav-label::after{display:none!important}
  .nav-top-link{transform:none!important;opacity:1!important;background:none!important;box-shadow:none!important;margin:0!important;padding:0!important}
  .header--nav-separator-grouped-ends .nav{border-inline:0!important;padding-inline:0!important}
  .header--nav-separator-wide-spacing .nav{gap:0!important}
}
@media(prefers-reduced-motion:reduce){
  .nav-top-link,.nav-label,.nav-label::before,.nav-label::after,.header--nav-hover-sliding-line .nav::after{transition:none!important;transform:none}
  .header--nav-hover-text-lift .nav-top-link:hover,.header--nav-hover-text-lift .nav-top-link:focus-visible{transform:none!important}
}

/* ================================================================
   V2.16.62 — Primary CTA Typography Coherence
   One resolved primary-action weight now keeps the header CTA, hero CTAs,
   enquiry submit button and other .btn-primary actions consistent. Existing
   sites using "Use Button Design" retain their established button weight;
   Match Navigation and explicit CTA weights now propagate site-wide.
   ================================================================ */
.btn.btn-primary,
.header .header-cta{
  font-weight:var(--header-cta-font-weight,var(--tb-btn-primary-weight,850))!important;
}


/* ==========================================================
   V2.15.0 Case Studies — controlled long-form showcase pages
   ========================================================== */
.project--linked,.project-detail--linked{display:block;color:inherit;text-decoration:none}
.project-case-link{margin-top:9px!important;color:#fff!important;font-size:.67rem!important;font-weight:850!important;letter-spacing:.02em}
.project-detail--linked{transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.project-detail--linked:hover{transform:translateY(-3px);box-shadow:0 18px 46px color-mix(in srgb,var(--brand-dark) 10%,transparent);border-color:color-mix(in srgb,var(--brand-accent) 40%,var(--line))}
.project-detail-link{display:inline-block;margin-top:16px;color:var(--brand-accent);font-size:.76rem;font-weight:900}

.case-study-page{overflow:hidden}
.case-study-section{position:relative}
.case-study-spacing--compact{padding:clamp(48px,6vw,76px) 0}
.case-study-spacing--standard{padding:clamp(72px,8vw,118px) 0}
.case-study-spacing--spacious{padding:clamp(96px,10vw,156px) 0}
.case-study-section.case-study-no-top{padding-top:0}
.case-study-section.case-study-no-bottom{padding-bottom:0}
.case-study-bg-white{background:#fff;color:var(--brand-body)}
.case-study-bg-light{background:color-mix(in srgb,var(--brand-light) 88%,#fff);color:var(--brand-body)}
.case-study-bg-dark{background:var(--brand-dark);color:#fff}
.case-study-bg-brand{background:var(--brand-primary);color:#fff}
.case-study-bg-dark h2,.case-study-bg-dark h3,.case-study-bg-brand h2,.case-study-bg-brand h3{color:#fff}
.case-study-bg-dark .prose p,.case-study-bg-dark p,.case-study-bg-brand .prose p,.case-study-bg-brand p{color:rgba(255,255,255,.76)}
.case-study-bg-dark .eyebrow,.case-study-bg-brand .eyebrow{color:var(--brand-accent)}
.case-study-align--center{text-align:center}.case-study-align--center .prose{margin-left:auto;margin-right:auto}.case-study-align--center .case-study-cta-buttons{justify-content:center}

.case-study-split{display:grid;grid-template-columns:var(--cs-copy,1fr) var(--cs-media,1fr);gap:clamp(44px,7vw,96px);align-items:center}
.case-study-v-align--top{align-items:start}.case-study-v-align--center{align-items:center}
.case-study-split--text-only{grid-template-columns:minmax(0,820px);justify-content:start}
.case-study-image--left{grid-template-columns:var(--cs-media,1fr) var(--cs-copy,1fr)}
.case-study-image--left .case-study-split-copy{order:2}.case-study-image--left .case-study-split-media{order:1}
.case-study-split-copy h2,.case-study-copy h2,.case-study-section-intro h2,.case-study-inline-cta h2{margin:0;color:var(--brand-heading);font-size:clamp(2.15rem,4.2vw,4rem);line-height:1;letter-spacing:-.055em}
.case-study-bg-dark .case-study-split-copy h2,.case-study-bg-brand .case-study-split-copy h2,.case-study-bg-dark .case-study-copy h2,.case-study-bg-brand .case-study-copy h2,.case-study-bg-dark .case-study-section-intro h2,.case-study-bg-brand .case-study-section-intro h2,.case-study-bg-dark .case-study-inline-cta h2,.case-study-bg-brand .case-study-inline-cta h2{color:#fff}
.case-study-split-copy .prose,.case-study-copy .prose,.case-study-section-intro .prose,.case-study-inline-cta .prose{margin-top:25px}
.case-study-split-copy .prose p,.case-study-copy .prose p,.case-study-section-intro .prose p,.case-study-inline-cta .prose p{font-size:.98rem;line-height:1.86;color:var(--brand-muted)}
.case-study-split-media{position:relative;min-height:440px}.case-study-split-media .case-study-frame,.case-study-split-media img{width:100%;height:100%;min-height:440px;object-fit:cover}
.case-study-copy--narrow{max-width:780px}.case-study-copy--standard{max-width:960px}.case-study-copy--wide{max-width:1180px}
.case-study-copy.case-study-align--center{margin-left:auto;margin-right:auto}.case-study-copy.case-study-align--center .prose{max-width:900px}

.case-study-showcase{margin:0 auto}.case-study-showcase--small{width:min(320px,calc(100% - 48px))}.case-study-showcase--medium{width:min(560px,calc(100% - 48px))}.case-study-showcase--contained{width:min(1180px,calc(100% - 48px))}.case-study-showcase--wide{width:min(1500px,calc(100% - 36px))}.case-study-showcase--full{width:100%}
.case-study-showcase-media{position:relative;overflow:hidden;background:var(--brand-dark)}
.case-study-showcase img{display:block;width:100%;height:auto;max-height:min(78vh,900px);object-fit:cover}
.case-study-showcase--full img{max-height:min(82vh,980px)}
@media(min-width:1025px) and (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .case-study-showcase-media--scroll{background-image:var(--case-study-scroll-image);background-position:var(--case-study-scroll-position,center center);background-repeat:no-repeat;background-size:cover;background-attachment:fixed}
  .case-study-showcase-media--scroll>img{opacity:0}
}
.case-study-aspect--16-9 .case-study-showcase-media,.case-study-split-media.case-study-aspect--16-9{aspect-ratio:16/9}.case-study-aspect--21-9 .case-study-showcase-media{aspect-ratio:21/9}.case-study-aspect--4-3 .case-study-showcase-media,.case-study-split-media.case-study-aspect--4-3{aspect-ratio:4/3}.case-study-split-media.case-study-aspect--4-5{aspect-ratio:4/5}
.case-study-aspect--16-9 .case-study-showcase-media img,.case-study-aspect--21-9 .case-study-showcase-media img,.case-study-aspect--4-3 .case-study-showcase-media img,.case-study-split-media[class*="case-study-aspect--"] .case-study-frame,.case-study-split-media[class*="case-study-aspect--"] img{width:100%;height:100%;max-height:none;min-height:0;object-fit:cover}
.case-study-showcase figcaption{width:min(1180px,calc(100% - 48px));margin:12px auto 0;color:var(--brand-muted);font-size:.75rem;line-height:1.6}
.case-study-bg-dark .case-study-showcase figcaption,.case-study-bg-brand .case-study-showcase figcaption{color:rgba(255,255,255,.68)}

.case-study-stack-main{display:grid;gap:clamp(38px,5.5vw,72px)}
.case-study-stack-top-group{display:grid;gap:clamp(14px,2vw,24px);width:100%}
.case-study-stack-top{width:100%;position:relative}
.case-study-stack-main.case-study-align--center .case-study-stack-top{margin-left:auto;margin-right:auto}
.case-study-stack-top--small{max-width:320px}.case-study-stack-top--medium{max-width:560px}.case-study-stack-top--large{max-width:840px}.case-study-stack-top--full{max-width:1180px}
.case-study-stack-media{position:relative;overflow:hidden}.case-study-stack-media img{display:block;width:100%;height:auto;object-fit:contain}
.case-study-stack-top.case-study-aspect--16-9 .case-study-stack-media{aspect-ratio:16/9}.case-study-stack-top.case-study-aspect--4-3 .case-study-stack-media{aspect-ratio:4/3}
.case-study-stack-top.case-study-aspect--16-9 .case-study-stack-media img,.case-study-stack-top.case-study-aspect--4-3 .case-study-stack-media img{width:100%;height:100%;object-fit:cover}
.case-study-stack-copy{width:100%}
.case-study-stack-bottom{margin-top:clamp(46px,6.5vw,88px)}
.case-study-stack-bottom.case-study-aspect--auto .case-study-showcase-media{background:transparent}

.case-study-split-showcase{width:min(1600px,calc(100% - 36px));margin:0 auto;display:grid;grid-template-columns:minmax(0,var(--cs-showcase-left,45fr)) minmax(0,var(--cs-showcase-right,55fr));gap:clamp(10px,1.2vw,18px);align-items:stretch}
.case-study-split-showcase--reverse .case-study-split-showcase-left{order:2}.case-study-split-showcase--reverse .case-study-split-showcase-right{order:1}.case-study-split-showcase--single{grid-template-columns:minmax(0,1000px);justify-content:center}.case-study-split-showcase--single .case-study-split-showcase-left{order:initial}
.case-study-split-showcase-left{min-width:0;padding:clamp(22px,2.8vw,42px) clamp(28px,4vw,64px) 0;background:inherit;display:flex;flex-direction:column}.case-study-split-showcase-copy{width:100%;max-width:720px}.case-study-split-showcase.case-study-align--center .case-study-split-showcase-copy{margin-left:auto;margin-right:auto;text-align:center}.case-study-split-showcase-copy h2{margin:0;color:var(--brand-heading);font-size:clamp(2rem,3.5vw,3.65rem);line-height:1;letter-spacing:-.05em}.case-study-split-showcase-copy .prose{margin-top:clamp(18px,1.4vw,24px)}.case-study-split-showcase-copy .prose p{font-size:.98rem;line-height:1.82;color:var(--brand-muted)}.case-study-bg-dark .case-study-split-showcase-copy h2,.case-study-bg-brand .case-study-split-showcase-copy h2{color:#fff}.case-study-bg-dark .case-study-split-showcase-copy .prose p,.case-study-bg-brand .case-study-split-showcase-copy .prose p{color:rgba(255,255,255,.78)}
.case-study-split-showcase-logo{margin-bottom:clamp(22px,2vw,32px)}.case-study-split-showcase.case-study-align--center .case-study-split-showcase-logo{margin-left:auto;margin-right:auto}.case-study-split-showcase-logo img{display:block;width:100%;height:auto;object-fit:contain}.case-study-split-showcase-logo--small{max-width:190px}.case-study-split-showcase-logo--medium{max-width:285px}.case-study-split-showcase-logo--large{max-width:390px}
.case-study-split-showcase-main,.case-study-split-showcase-supporting figure,.case-study-split-showcase-right{margin:0;min-width:0}.case-study-split-showcase-main{margin-top:clamp(42px,3vw,52px);padding-top:0}.case-study-split-showcase-media{position:relative;overflow:hidden;background:color-mix(in srgb,var(--brand-dark) 88%,#000)}.case-study-split-showcase-media img{display:block;width:100%;height:100%;object-fit:cover}.case-study-split-showcase-aspect--auto .case-study-split-showcase-media img{height:auto;object-fit:contain}.case-study-split-showcase-aspect--square .case-study-split-showcase-media{aspect-ratio:1}.case-study-split-showcase-aspect--3-2 .case-study-split-showcase-media{aspect-ratio:3/2}.case-study-split-showcase-aspect--4-3 .case-study-split-showcase-media{aspect-ratio:4/3}.case-study-split-showcase-aspect--16-9 .case-study-split-showcase-media{aspect-ratio:16/9}
.case-study-split-showcase-supporting{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(8px,1vw,14px);margin-top:clamp(8px,1vw,14px)}.case-study-split-showcase-supporting--count-1{grid-template-columns:1fr}.case-study-split-showcase-supporting--count-2{grid-template-columns:repeat(2,minmax(0,1fr))}.case-study-split-showcase-supporting--count-3{grid-template-columns:repeat(3,minmax(0,1fr))}.case-study-split-showcase-supporting--contain .case-study-split-showcase-media img{object-fit:contain}.case-study-split-showcase-supporting--square .case-study-split-showcase-media{aspect-ratio:1}.case-study-split-showcase-supporting--4-3 .case-study-split-showcase-media{aspect-ratio:4/3}.case-study-split-showcase-supporting--16-9 .case-study-split-showcase-media{aspect-ratio:16/9}
.case-study-split-showcase-right{height:100%;align-self:stretch}.case-study-split-showcase-right>.case-study-split-showcase-media{height:100%}.case-study-split-showcase-right--natural>.case-study-split-showcase-media{height:auto}.case-study-split-showcase-right--natural img{height:auto;object-fit:contain}.case-study-split-showcase-right--cover img{height:100%;min-height:100%;object-fit:cover}

.case-study-brand-showcase{display:grid;gap:clamp(34px,5vw,64px)}.case-study-brand-copy{max-width:840px}.case-study-brand-showcase.case-study-align--center .case-study-brand-copy{margin-left:auto;margin-right:auto}.case-study-brand-copy h2{margin:0;color:var(--brand-heading);font-size:clamp(2.15rem,4.2vw,4rem);line-height:1;letter-spacing:-.055em}.case-study-brand-copy .prose{margin-top:25px}.case-study-brand-copy .prose p{font-size:.98rem;line-height:1.86;color:var(--brand-muted)}.case-study-bg-dark .case-study-brand-copy h2,.case-study-bg-brand .case-study-brand-copy h2{color:#fff}.case-study-bg-dark .case-study-brand-copy .prose p,.case-study-bg-brand .case-study-brand-copy .prose p{color:rgba(255,255,255,.76)}.case-study-brand-asset{display:flex}.case-study-align--center .case-study-brand-asset{justify-content:center}.case-study-brand-media{position:relative;max-width:100%;overflow:hidden}.case-study-brand-media img{display:block;width:100%;height:auto;object-fit:contain}.case-study-brand-showcase--small .case-study-brand-media{width:min(360px,80vw)}.case-study-brand-showcase--medium .case-study-brand-media{width:min(720px,90vw)}.case-study-brand-showcase--large .case-study-brand-media{width:min(1120px,100%)}

.case-study-section-intro{max-width:850px;margin:0 0 clamp(34px,5vw,60px)}.case-study-section-intro .prose{max-width:760px}.case-study-section-intro h2{font-size:clamp(2rem,3.7vw,3.6rem)}
.case-study-gallery{display:grid;gap:clamp(14px,2vw,26px)}.case-study-gallery--two{grid-template-columns:repeat(2,minmax(0,1fr))}.case-study-gallery--three{grid-template-columns:repeat(3,minmax(0,1fr))}
.case-study-gallery--feature-left,.case-study-gallery--feature-right{grid-template-columns:1.45fr 1fr;grid-template-rows:repeat(2,minmax(0,1fr))}.case-study-gallery--feature-right{grid-template-columns:1fr 1.45fr}
.case-study-gallery--feature-left .case-study-gallery-item:first-child,.case-study-gallery--feature-right .case-study-gallery-item:first-child{grid-row:1/3}.case-study-gallery--feature-right .case-study-gallery-item:first-child{grid-column:2}.case-study-gallery--feature-right .case-study-gallery-item:nth-child(2),.case-study-gallery--feature-right .case-study-gallery-item:nth-child(3){grid-column:1}
.case-study-gallery-item{margin:0;min-width:0}.case-study-gallery-media{position:relative;overflow:hidden;background:var(--brand-dark);aspect-ratio:4/3}.case-study-gallery--feature-left .case-study-gallery-item:first-child .case-study-gallery-media,.case-study-gallery--feature-right .case-study-gallery-item:first-child .case-study-gallery-media{height:100%;aspect-ratio:auto;min-height:520px}.case-study-gallery-media img{display:block;width:100%;height:100%;object-fit:cover}.case-study-gallery-item figcaption{margin-top:10px;font-size:.72rem;line-height:1.5;color:var(--brand-muted)}.case-study-bg-dark .case-study-gallery-item figcaption,.case-study-bg-brand .case-study-gallery-item figcaption{color:rgba(255,255,255,.65)}

.case-study-image-grid43{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(14px,1.8vw,24px)}.case-study-image-grid43-item{margin:0;min-width:0;grid-column:span 3}.case-study-image-grid43-item--bottom{grid-column:span 4}.case-study-image-grid43-media{position:relative;overflow:hidden;background:var(--brand-dark)}.case-study-image-grid43-media img{display:block;width:100%;height:100%;object-fit:cover}.case-study-image-grid43-top--square .case-study-image-grid43-item--top .case-study-image-grid43-media{aspect-ratio:1}.case-study-image-grid43-top--4-3 .case-study-image-grid43-item--top .case-study-image-grid43-media{aspect-ratio:4/3}.case-study-image-grid43-top--3-2 .case-study-image-grid43-item--top .case-study-image-grid43-media{aspect-ratio:3/2}.case-study-image-grid43-bottom--square .case-study-image-grid43-item--bottom .case-study-image-grid43-media{aspect-ratio:1}.case-study-image-grid43-bottom--4-3 .case-study-image-grid43-item--bottom .case-study-image-grid43-media{aspect-ratio:4/3}.case-study-image-grid43-bottom--3-2 .case-study-image-grid43-item--bottom .case-study-image-grid43-media{aspect-ratio:3/2}.case-study-image-grid43-bottom--16-9 .case-study-image-grid43-item--bottom .case-study-image-grid43-media{aspect-ratio:16/9}
.case-study-stacked-story{display:grid;gap:clamp(36px,4vw,58px)}.case-study-stacked-story-copy{width:100%}.case-study-stacked-story-copy h2{margin:0;color:var(--brand-heading);font-size:clamp(2rem,3.7vw,3.6rem);line-height:1;letter-spacing:-.045em}.case-study-stacked-story-copy .prose{margin-top:clamp(18px,1.8vw,28px)}.case-study-stacked-story-copy .prose p{font-size:.98rem;line-height:1.8;color:var(--brand-muted)}.case-study-stack-text--narrow{max-width:760px}.case-study-stack-text--standard{max-width:920px}.case-study-stack-text--wide{max-width:1120px}.case-study-stacked-story.case-study-align--center .case-study-stacked-story-copy{margin-left:auto;margin-right:auto}.case-study-bg-dark .case-study-stacked-story-copy h2,.case-study-bg-brand .case-study-stacked-story-copy h2{color:#fff}.case-study-bg-dark .case-study-stacked-story-copy .prose p,.case-study-bg-brand .case-study-stacked-story-copy .prose p{color:rgba(255,255,255,.76)}.case-study-stacked-story-images{display:grid}.case-study-stacked-story-images--contained{width:min(980px,100%);margin-left:auto;margin-right:auto}.case-study-stacked-story-images--wide{width:min(1280px,100%);margin-left:auto;margin-right:auto}.case-study-stacked-story-images--full{width:100%}.case-study-stacked-story-gap--compact{gap:12px}.case-study-stacked-story-gap--standard{gap:clamp(18px,2vw,30px)}.case-study-stacked-story-gap--spacious{gap:clamp(28px,3vw,48px)}.case-study-stacked-story-image{margin:0}.case-study-stacked-story-media{position:relative;overflow:hidden;background:var(--brand-dark)}.case-study-stacked-story-media img{display:block;width:100%;height:100%;object-fit:cover}.case-study-stacked-story-aspect--auto .case-study-stacked-story-media img{height:auto;object-fit:contain}.case-study-stacked-story-aspect--16-9 .case-study-stacked-story-media{aspect-ratio:16/9}.case-study-stacked-story-aspect--3-2 .case-study-stacked-story-media{aspect-ratio:3/2}.case-study-stacked-story-aspect--4-3 .case-study-stacked-story-media{aspect-ratio:4/3}

.case-study-grid-wrap{position:relative}.case-study-feature-grid,.case-study-results{display:grid;grid-template-columns:repeat(var(--case-study-cols,3),minmax(0,1fr));gap:clamp(16px,2.4vw,30px)}
.case-study-feature-wrap.case-study-align--center .case-study-section-intro{margin-left:auto;margin-right:auto;text-align:center}.case-study-feature-wrap.case-study-align--center .case-study-section-intro .prose{margin-left:auto;margin-right:auto}
.case-study-feature-card{padding:clamp(24px,3vw,38px);border:1px solid color-mix(in srgb,currentColor 13%,transparent);background:color-mix(in srgb,#fff 4%,transparent);min-height:230px}.case-study-bg-white .case-study-feature-card,.case-study-bg-light .case-study-feature-card{background:#fff;border-color:color-mix(in srgb,var(--brand-dark) 11%,transparent)}
.case-study-feature-marker{width:48px;height:48px;display:grid;place-items:center;margin-bottom:24px;color:var(--brand-accent);font-weight:900;font-size:.78rem;flex:0 0 auto}.case-study-feature-marker svg{width:100%;height:100%}.case-study-feature-card h3,.case-study-result-card h3{margin:0;color:var(--brand-heading);font-size:clamp(1.05rem,1.5vw,1.32rem);line-height:1.15}.case-study-feature-card p,.case-study-result-card p{margin:12px 0 0;color:var(--brand-muted);font-size:.87rem;line-height:1.7}.case-study-bg-dark .case-study-feature-card h3,.case-study-bg-brand .case-study-feature-card h3,.case-study-bg-dark .case-study-result-card h3,.case-study-bg-brand .case-study-result-card h3{color:#fff}
.case-study-feature-align--center .case-study-feature-card{text-align:center}.case-study-feature-align--center .case-study-feature-marker{margin-left:auto;margin-right:auto}
.case-study-feature-cards--none .case-study-feature-card{padding:0;border:0;background:transparent!important;min-height:0}
.case-study-feature-cards--minimal .case-study-feature-card{min-height:0;background:color-mix(in srgb,currentColor 2.5%,transparent);border-color:color-mix(in srgb,currentColor 10%,transparent)}.case-study-bg-white .case-study-feature-cards--minimal .case-study-feature-card,.case-study-bg-light .case-study-feature-cards--minimal .case-study-feature-card{background:color-mix(in srgb,var(--brand-dark) 2.5%,#fff);border-color:color-mix(in srgb,var(--brand-dark) 9%,transparent)}
.case-study-feature-size--small .case-study-feature-marker{width:36px;height:36px;margin-bottom:18px}.case-study-feature-size--small .case-study-feature-icon{width:24px!important;height:24px!important}
.case-study-feature-size--standard .case-study-feature-marker{width:48px;height:48px}.case-study-feature-size--standard .case-study-feature-icon{width:32px!important;height:32px!important}
.case-study-feature-size--large .case-study-feature-marker{width:66px;height:66px;margin-bottom:26px}.case-study-feature-size--large .case-study-feature-icon{width:56px!important;height:56px!important}
.case-study-feature-size--xlarge .case-study-feature-marker{width:86px;height:86px;margin-bottom:30px}.case-study-feature-size--xlarge .case-study-feature-icon{width:72px!important;height:72px!important}
.case-study-feature-size--oversized .case-study-feature-marker{width:112px;height:112px;margin-bottom:34px}.case-study-feature-size--oversized .case-study-feature-icon{width:96px!important;height:96px!important}
.case-study-feature-layout--horizontal .case-study-feature-card{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto 1fr;column-gap:clamp(16px,2vw,26px);align-content:start}.case-study-feature-layout--horizontal .case-study-feature-marker{grid-row:1/3;margin:0}.case-study-feature-layout--horizontal .case-study-feature-card p{grid-column:2}.case-study-feature-layout--horizontal.case-study-feature-align--center .case-study-feature-card{grid-template-columns:auto minmax(0,min(34rem,100%));justify-content:center;text-align:center}.case-study-feature-layout--horizontal.case-study-feature-align--center .case-study-feature-marker{margin:0}
.case-study-feature-layout--strip{gap:0}.case-study-feature-layout--strip .case-study-feature-card{min-height:0;border-radius:0}.case-study-feature-layout--strip.case-study-feature-cards--none .case-study-feature-card{padding:clamp(12px,2vw,28px)}.case-study-feature-layout--strip.case-study-feature-cards--none .case-study-feature-card+ .case-study-feature-card{border-left:1px solid color-mix(in srgb,currentColor 15%,transparent)}.case-study-bg-white .case-study-feature-layout--strip.case-study-feature-cards--none .case-study-feature-card+ .case-study-feature-card,.case-study-bg-light .case-study-feature-layout--strip.case-study-feature-cards--none .case-study-feature-card+ .case-study-feature-card{border-left-color:color-mix(in srgb,var(--brand-dark) 12%,transparent)}
.case-study-feature-layout--large{gap:clamp(24px,3.5vw,48px)}.case-study-feature-layout--large.case-study-feature-cards--cards .case-study-feature-card,.case-study-feature-layout--large.case-study-feature-cards--minimal .case-study-feature-card{padding:clamp(30px,4vw,52px);min-height:270px}.case-study-feature-layout--large .case-study-feature-card h3{font-size:clamp(1.15rem,1.8vw,1.5rem)}.case-study-feature-layout--large .case-study-feature-card p{font-size:.92rem;line-height:1.75}
.case-study-feature-layout--editorial{grid-template-columns:1fr!important;gap:0}.case-study-feature-layout--editorial .case-study-feature-card{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;column-gap:clamp(22px,3vw,42px);align-items:start;min-height:0}.case-study-feature-layout--editorial .case-study-feature-marker{grid-row:1/3;margin:0}.case-study-feature-layout--editorial .case-study-feature-card p{grid-column:2}.case-study-feature-layout--editorial.case-study-feature-cards--cards{gap:14px}.case-study-feature-layout--editorial.case-study-feature-cards--cards .case-study-feature-card{padding:clamp(26px,3vw,40px)}.case-study-feature-layout--editorial.case-study-feature-cards--minimal .case-study-feature-card{padding:clamp(24px,3vw,36px);border-left:0;border-right:0;border-bottom:0}.case-study-feature-layout--editorial.case-study-feature-cards--minimal .case-study-feature-card:first-child{border-top-color:transparent}.case-study-feature-layout--editorial.case-study-feature-cards--none .case-study-feature-card{padding:clamp(26px,3vw,38px) 0}.case-study-feature-layout--editorial.case-study-feature-cards--none .case-study-feature-card+ .case-study-feature-card{border-top:1px solid color-mix(in srgb,currentColor 14%,transparent)}.case-study-bg-white .case-study-feature-layout--editorial.case-study-feature-cards--none .case-study-feature-card+ .case-study-feature-card,.case-study-bg-light .case-study-feature-layout--editorial.case-study-feature-cards--none .case-study-feature-card+ .case-study-feature-card{border-top-color:color-mix(in srgb,var(--brand-dark) 11%,transparent)}.case-study-feature-layout--editorial.case-study-feature-align--center .case-study-feature-card{display:block;text-align:center}.case-study-feature-layout--editorial.case-study-feature-align--center .case-study-feature-marker{margin:0 auto 22px}
.case-study-feature-layout--highlight{grid-template-columns:minmax(0,1.16fr) minmax(0,.84fr)!important;gap:clamp(18px,2.5vw,34px);align-items:stretch}.case-study-feature-layout--highlight>.case-study-feature-card.is-highlighted{height:100%;padding:clamp(34px,4vw,58px)}.case-study-feature-layout--highlight.case-study-feature-cards--none>.case-study-feature-card.is-highlighted{padding:0}.case-study-feature-layout--highlight>.case-study-feature-card.is-highlighted h3{font-size:clamp(1.35rem,2.2vw,2rem);line-height:1.08}.case-study-feature-layout--highlight>.case-study-feature-card.is-highlighted p{font-size:.95rem;line-height:1.75;max-width:46rem}.case-study-feature-align--center.case-study-feature-layout--highlight>.case-study-feature-card.is-highlighted p{margin-left:auto;margin-right:auto}.case-study-highlight-supporting{display:grid;grid-template-columns:1fr;gap:clamp(12px,1.5vw,18px)}.case-study-highlight-supporting--many{grid-template-columns:repeat(2,minmax(0,1fr))}.case-study-highlight-supporting .case-study-feature-card{min-height:0;padding:clamp(20px,2.3vw,30px)}.case-study-feature-cards--none .case-study-highlight-supporting .case-study-feature-card{padding:clamp(12px,1vw,18px) 0}.case-study-highlight-supporting .case-study-feature-card h3{font-size:clamp(1rem,1.25vw,1.2rem)}.case-study-highlight-supporting .case-study-feature-card p{font-size:.82rem;line-height:1.6}
.case-study-result-card{padding:clamp(24px,3vw,40px) 0;border-top:2px solid color-mix(in srgb,var(--brand-accent) 80%,transparent)}.case-study-result-value{margin-bottom:16px;color:var(--brand-accent);font-size:clamp(2.2rem,4vw,4.25rem);font-weight:900;line-height:.9;letter-spacing:-.055em}

.case-study-quote{position:relative;margin-left:auto;margin-right:auto;padding-left:0;padding-right:0}.case-study-quote--narrow{max-width:900px}.case-study-quote--wide{max-width:1180px}.case-study-quote-mark{display:block;color:var(--brand-accent);font-family:Georgia,serif;font-size:clamp(4rem,7vw,7rem);line-height:.55;margin-bottom:20px}.case-study-quote-text p{margin:0;color:var(--brand-heading);font-size:clamp(1.45rem,2.8vw,2.65rem);font-weight:700;line-height:1.32;letter-spacing:-.03em}.case-study-quote-text p+p{margin-top:.85em}.case-study-quote-text a{color:inherit;text-decoration:underline;text-decoration-thickness:.06em;text-underline-offset:.14em}.case-study-bg-dark .case-study-quote-text p,.case-study-bg-brand .case-study-quote-text p{color:#fff}.case-study-quote footer{display:flex;gap:8px 14px;flex-wrap:wrap;margin-top:28px;color:var(--brand-muted);font-size:.82rem}.case-study-align--center.case-study-quote footer{justify-content:center}.case-study-quote footer strong{color:inherit}.case-study-quote footer span::before{content:'— ';opacity:.55}

.case-study-inline-cta{max-width:1000px}.case-study-inline-cta.case-study-align--center{margin-left:auto;margin-right:auto}.case-study-inline-cta .prose{max-width:760px}.case-study-inline-cta.case-study-align--center .prose{margin-left:auto;margin-right:auto}.case-study-cta-buttons{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.case-study-bg-dark .case-study-inline-cta .prose p,.case-study-bg-brand .case-study-inline-cta .prose p{color:rgba(255,255,255,.76)}
.case-study-bg-custom{background:var(--case-study-custom-bg,#fff);color:var(--case-study-custom-text,#000)}
.case-study-section.case-study-bg-custom :is(h2,h3,.case-study-quote-text p,.case-study-feature-card h3,.case-study-result-card h3,.case-study-split-showcase-copy h2,.case-study-brand-copy h2){color:var(--case-study-custom-text,#000)}
.case-study-section.case-study-bg-custom :is(p,.prose p,.case-study-gallery-item figcaption,.case-study-quote footer,.case-study-feature-card p,.case-study-result-card p,.case-study-split-showcase-copy .prose p,.case-study-brand-copy .prose p){color:color-mix(in srgb,var(--case-study-custom-text,#000) 76%,transparent)}
.case-study-section.case-study-bg-custom .eyebrow{color:var(--case-study-custom-text,#000);opacity:.72}

@media(max-width:1100px){.case-study-feature-grid,.case-study-results{grid-template-columns:repeat(2,minmax(0,1fr))}.case-study-feature-layout--editorial{grid-template-columns:1fr!important}.case-study-highlight-supporting--many{grid-template-columns:1fr}}
@media(max-width:980px){.case-study-image-grid43-item,.case-study-image-grid43-item--bottom{grid-column:span 6}.case-study-image-grid43-item:last-child{grid-column:3/span 8}.case-study-split,.case-study-image--left{grid-template-columns:1fr;gap:38px}.case-study-split-showcase,.case-study-split-showcase--reverse{grid-template-columns:1fr;gap:14px;width:min(920px,calc(100% - 32px))}.case-study-split-showcase-left{padding-bottom:clamp(28px,4vw,48px)}.case-study-split-showcase .case-study-split-showcase-left{order:1}.case-study-split-showcase .case-study-split-showcase-right{order:2}.case-study-split-showcase-right--cover>.case-study-split-showcase-media{min-height:520px}.case-study-image--left .case-study-split-copy,.case-study-image--left .case-study-split-media{order:initial}.case-study-split-media,.case-study-split-media img{min-height:360px}.case-study-gallery--three{grid-template-columns:repeat(2,minmax(0,1fr))}.case-study-gallery--feature-left,.case-study-gallery--feature-right{grid-template-columns:1fr 1fr;grid-template-rows:auto}.case-study-gallery--feature-left .case-study-gallery-item:first-child,.case-study-gallery--feature-right .case-study-gallery-item:first-child{grid-column:1/-1;grid-row:auto}.case-study-gallery--feature-right .case-study-gallery-item:first-child,.case-study-gallery--feature-right .case-study-gallery-item:nth-child(n+2){grid-column:auto}.case-study-gallery--feature-left .case-study-gallery-item:first-child .case-study-gallery-media,.case-study-gallery--feature-right .case-study-gallery-item:first-child .case-study-gallery-media{min-height:420px;aspect-ratio:16/9}.case-study-feature-layout--highlight{grid-template-columns:1fr!important}.case-study-highlight-supporting{grid-template-columns:repeat(2,minmax(0,1fr))}.case-study-feature-layout--highlight>.case-study-feature-card.is-highlighted{min-height:0}}
@media(max-width:620px){.case-study-image-grid43{gap:12px}.case-study-image-grid43-item,.case-study-image-grid43-item--bottom,.case-study-image-grid43-item:last-child{grid-column:1/-1}.case-study-stacked-story{gap:30px}.case-study-spacing--compact{padding:48px 0}.case-study-split-showcase{width:calc(100% - 28px);gap:10px}.case-study-split-showcase-left{padding:clamp(22px,7vw,34px)}.case-study-split-showcase-logo--small{max-width:150px}.case-study-split-showcase-logo--medium{max-width:220px}.case-study-split-showcase-logo--large{max-width:290px}.case-study-split-showcase-main{margin-top:32px}.case-study-split-showcase-right--cover>.case-study-split-showcase-media{min-height:400px}.case-study-spacing--standard{padding:68px 0}.case-study-spacing--spacious{padding:84px 0}.case-study-showcase--small{width:min(260px,calc(100% - 28px))}.case-study-showcase--medium{width:min(460px,calc(100% - 28px))}.case-study-showcase--contained,.case-study-showcase--wide{width:calc(100% - 28px)}.case-study-showcase figcaption{width:calc(100% - 28px)}.case-study-split-media,.case-study-split-media img{min-height:300px}.case-study-stack-main{gap:34px}.case-study-stack-top--small{max-width:240px}.case-study-stack-top--medium{max-width:420px}.case-study-stack-bottom{margin-top:42px}.case-study-gallery--two,.case-study-gallery--three,.case-study-gallery--feature-left,.case-study-gallery--feature-right,.case-study-feature-grid,.case-study-results{grid-template-columns:1fr}.case-study-gallery--feature-left .case-study-gallery-item:first-child .case-study-gallery-media,.case-study-gallery--feature-right .case-study-gallery-item:first-child .case-study-gallery-media{min-height:0;aspect-ratio:4/3}.case-study-feature-card{min-height:0}.case-study-feature-size--oversized .case-study-feature-marker{width:88px;height:88px;margin-bottom:28px}.case-study-feature-size--oversized .case-study-feature-icon{width:72px!important;height:72px!important}.case-study-feature-layout--horizontal .case-study-feature-card{grid-template-columns:auto minmax(0,1fr)}.case-study-feature-layout--horizontal.case-study-feature-align--center .case-study-feature-card{grid-template-columns:1fr}.case-study-feature-layout--horizontal.case-study-feature-align--center .case-study-feature-marker{grid-row:auto;margin:0 auto 20px}.case-study-feature-layout--horizontal.case-study-feature-align--center .case-study-feature-card p{grid-column:1}.case-study-feature-layout--editorial .case-study-feature-card{grid-template-columns:1fr}.case-study-feature-layout--editorial .case-study-feature-marker{grid-row:auto;margin-bottom:20px}.case-study-feature-layout--editorial .case-study-feature-card p{grid-column:1}.case-study-highlight-supporting{grid-template-columns:1fr}.case-study-feature-layout--strip.case-study-feature-cards--none .case-study-feature-card{padding:24px 0}.case-study-feature-layout--strip.case-study-feature-cards--none .case-study-feature-card+ .case-study-feature-card{border-left:0;border-top:1px solid color-mix(in srgb,currentColor 15%,transparent)}.case-study-cta-buttons{flex-direction:column;align-items:stretch}.case-study-cta-buttons .btn{text-align:center}}
@media(max-width:520px){.case-study-split-showcase-supporting{grid-template-columns:1fr}.case-study-split-showcase-supporting figure:only-child{grid-column:auto}}
@media(prefers-reduced-motion:reduce){.project-detail--linked{transition:none!important}.project-detail--linked:hover{transform:none!important}}

/* ==========================================================
   V2.16.16 — Mobile Header CTA + Configurable Menu Surface
   ========================================================== */
.header-cta-mobile{display:none}
@media(max-width:980px){
  /* The desktop CTA cannot safely share the narrow header row, so expose the
     same managed CTA as a full-width action inside the hamburger drawer. */
  .header .nav .header-cta-mobile{
    display:flex;
    width:100%;
    margin-top:12px;
    flex:0 0 auto;
  }
  body:not(.tb-button-design-active) .header .nav .header-cta-mobile{
    background:var(--brand-cta);
    color:var(--brand-cta-text)!important;
  }
  body:not(.tb-button-design-active) .header .nav .header-cta-mobile:hover,
  body:not(.tb-button-design-active) .header .nav .header-cta-mobile:focus-visible{
    background:var(--brand-cta-hover);
    color:var(--brand-cta-hover-text)!important;
  }
  .tb-button-design-active .header .nav .header-cta-mobile{
    color:var(--tb-btn-primary-text)!important;
  }
  .tb-button-design-active .header .nav .header-cta-mobile:hover,
  .tb-button-design-active .header .nav .header-cta-mobile:focus-visible{
    color:var(--tb-btn-primary-hover-text)!important;
  }

  /* One CMS-controlled surface applies consistently to the hamburger drawer
     and any standard / mega-menu children inside it. */
  .header .nav,
  .header .nav.open,
  .header--style-dark .nav.open,
  .header--style-transparent:not(.header-scrolled) .nav.open,
  .header--style-glass:not(.header-scrolled) .nav.open,
  .header--style-transparent-dark .nav.open,
  .header--style-glass-dark .nav.open{
    background:var(--tb-mobile-menu-bg,#fff)!important;
    color:var(--tb-mobile-menu-text,var(--brand-body))!important;
  }
  .header .nav.open>a:not(.header-cta-mobile),
  .header .nav.open .nav-parent>a,
  .header .nav.open .submenu-toggle{
    color:var(--tb-mobile-menu-text,var(--brand-body))!important;
  }
  .header .nav.open .submenu,
  .header .nav.open .submenu--mega,
  .header .nav.open .mega-menu-mobile{
    background:transparent!important;
    color:var(--tb-mobile-menu-text,var(--brand-body))!important;
  }
  .header .nav.open .submenu a,
  .header .nav.open .submenu--mega .mega-menu-mobile a{
    color:var(--tb-mobile-menu-text,var(--brand-body))!important;
    background:transparent!important;
  }
  .header .nav.open>a:not(.header-cta-mobile):hover,
  .header .nav.open>a:not(.header-cta-mobile):focus-visible,
  .header .nav.open .nav-parent>a:hover,
  .header .nav.open .nav-parent>a:focus-visible,
  .header .nav.open .submenu a:hover,
  .header .nav.open .submenu a:focus-visible,
  .header .nav.open .submenu--mega .mega-menu-mobile a:hover,
  .header .nav.open .submenu--mega .mega-menu-mobile a:focus-visible{
    background:color-mix(in srgb,var(--tb-mobile-menu-text) 9%,transparent)!important;
  }
}


@media(max-width:760px){
  .pricing-card{padding:26px}.pricing-badge{position:static;display:inline-flex;align-self:flex-start;margin-bottom:16px}.pricing-card--highlighted{padding-top:22px}.pricing-section-footer{align-items:flex-start;flex-direction:column}.pricing-section-footer .btn{width:100%}
  .custom-html-output .tb-table-scroll{margin-left:-4px;margin-right:-4px}
}

/* ==========================================================
   V2.16.43 — Shared Media Showcase (Pages + Case Studies)
   ========================================================== */
.tb-media-showcase-shell{position:relative}
.tb-media-showcase-shell--contained{width:min(calc(100% - 40px),1100px);margin-left:auto;margin-right:auto}
.tb-media-showcase-shell--wide.container{width:min(calc(100% - 40px),var(--container));margin-left:auto;margin-right:auto}
.tb-media-showcase-shell--full{width:100%}
.tb-media-showcase-shell--full .tb-media-showcase-intro{width:min(calc(100% - 40px),var(--container));margin-left:auto;margin-right:auto}
.tb-media-showcase-intro{max-width:820px;margin-bottom:clamp(28px,4vw,52px)}
.tb-media-showcase-intro--left{margin-left:0;margin-right:auto;text-align:left}
.tb-media-showcase-intro--center{margin-left:auto;margin-right:auto;text-align:center}
.tb-media-showcase-intro--right{margin-left:auto;margin-right:0;text-align:right}
.tb-media-showcase-intro h2{margin:0;color:var(--brand-heading);font-size:clamp(2rem,3.8vw,3.7rem);line-height:1;letter-spacing:-.045em}
.tb-media-showcase-intro .prose{margin-top:clamp(18px,2vw,28px)}
.tb-media-showcase-intro .prose p{margin:0;color:var(--brand-muted);font-size:.98rem;line-height:1.8}
.tb-media-showcase-grid+.tb-media-showcase-intro{margin-top:clamp(30px,4vw,54px);margin-bottom:0}
.block-bg-dark .tb-media-showcase-intro h2,.block-bg-brand .tb-media-showcase-intro h2,.case-study-bg-dark .tb-media-showcase-intro h2,.case-study-bg-brand .tb-media-showcase-intro h2{color:#fff}
.block-bg-dark .tb-media-showcase-intro .prose p,.block-bg-brand .tb-media-showcase-intro .prose p,.case-study-bg-dark .tb-media-showcase-intro .prose p,.case-study-bg-brand .tb-media-showcase-intro .prose p{color:rgba(255,255,255,.76)}
.case-study-bg-custom .tb-media-showcase-intro h2{color:var(--case-study-custom-text,#000)}
.case-study-bg-custom .tb-media-showcase-intro .prose p{color:color-mix(in srgb,var(--case-study-custom-text,#000) 76%,transparent)}

.tb-media-showcase-grid{display:grid;min-width:0}
.tb-media-showcase-gap--tight{gap:8px}
.tb-media-showcase-gap--standard{gap:clamp(14px,1.8vw,24px)}
.tb-media-showcase-gap--spacious{gap:clamp(22px,3vw,40px)}
.tb-media-showcase-grid--row,.tb-media-showcase-grid--caption-cards{grid-template-columns:repeat(var(--tb-media-cols,4),minmax(0,1fr))}
.tb-media-showcase-grid--before-after{grid-template-columns:repeat(2,minmax(0,1fr))}
.tb-media-showcase-grid--mosaic{grid-template-columns:1.55fr 1fr;grid-template-rows:repeat(2,minmax(0,1fr))}
.tb-media-showcase-grid--mosaic .tb-media-showcase-item:first-child{grid-row:1/3}
.tb-media-showcase-grid--mosaic.tb-media-showcase-grid--reverse{grid-template-columns:1fr 1.55fr}
.tb-media-showcase-grid--mosaic.tb-media-showcase-grid--reverse .tb-media-showcase-item:first-child{grid-column:2}
.tb-media-showcase-grid--mosaic.tb-media-showcase-grid--reverse .tb-media-showcase-item:nth-child(n+2){grid-column:1}
.tb-media-showcase-grid--large-supporting{grid-template-columns:repeat(var(--tb-support-cols,3),minmax(0,1fr))}
.tb-media-showcase-grid--large-supporting .tb-media-showcase-item:first-child{grid-column:1/-1}

.tb-media-showcase-item{margin:0;min-width:0;position:relative}
.tb-media-showcase-link{display:block;color:inherit;text-decoration:none}
.tb-media-showcase-item.is-clickable .tb-media-showcase-link{cursor:pointer}
.tb-media-showcase-media{position:relative;overflow:hidden;background:color-mix(in srgb,var(--brand-dark) 92%,#fff);isolation:isolate;transition:transform .28s ease,box-shadow .28s ease}
.tb-media-showcase-media img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .45s cubic-bezier(.2,.65,.3,1)}
.tb-media-showcase-ratio--square .tb-media-showcase-media{aspect-ratio:1}
.tb-media-showcase-ratio--4-3 .tb-media-showcase-media{aspect-ratio:4/3}
.tb-media-showcase-ratio--3-2 .tb-media-showcase-media{aspect-ratio:3/2}
.tb-media-showcase-ratio--16-9 .tb-media-showcase-media{aspect-ratio:16/9}
.tb-media-showcase-ratio--portrait .tb-media-showcase-media{aspect-ratio:4/5}
.tb-media-showcase-ratio--auto .tb-media-showcase-media{aspect-ratio:auto;background:transparent}
.tb-media-showcase-ratio--auto .tb-media-showcase-media img{height:auto;object-fit:contain}
.tb-media-showcase-grid--mosaic .tb-media-showcase-item:first-child .tb-media-showcase-media{height:100%;aspect-ratio:auto;min-height:440px}
.tb-media-showcase-grid--mosaic .tb-media-showcase-item:not(:first-child) .tb-media-showcase-media{height:100%}
.tb-media-showcase-grid--large-supporting .tb-media-showcase-item:first-child .tb-media-showcase-media{aspect-ratio:16/9}
.tb-media-showcase-label{position:absolute;left:16px;top:16px;z-index:5;padding:7px 10px;background:rgba(0,0,0,.72);color:#fff;font-size:.68rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.tb-media-showcase-hover-layer{position:absolute;inset:0;z-index:3;background:rgba(0,0,0,.24);opacity:0;transition:opacity .3s ease;pointer-events:none}
.tb-media-showcase-hover-copy{position:absolute;left:18px;right:18px;bottom:18px;z-index:4;color:#fff;display:grid;gap:6px;opacity:0;transform:translateY(8px);transition:opacity .28s ease,transform .28s ease;pointer-events:none;text-shadow:0 2px 16px rgba(0,0,0,.4);font-family:var(--font-body,var(--site-font));font-size:inherit;font-weight:var(--body-weight,400);line-height:var(--body-line-height,1.65);letter-spacing:var(--body-letter-spacing,0)}
.tb-media-showcase-hover-copy strong{font-family:var(--font-heading,var(--site-font));font-size:calc(1em + 5px);font-weight:var(--heading-weight,700);line-height:1.18;letter-spacing:var(--heading-letter-spacing,-.02em)}.tb-media-showcase-hover-copy span{font:inherit;line-height:1.5}
.tb-media-showcase-item figcaption{display:grid;gap:0;margin-top:clamp(14px,1.4vw,20px);color:var(--brand-muted);font-family:var(--font-body,var(--site-font));font-size:inherit;font-weight:var(--body-weight,400);line-height:var(--body-line-height,1.65);letter-spacing:var(--body-letter-spacing,0)}
.tb-media-showcase-item figcaption strong{color:var(--brand-heading);font-family:var(--font-heading,var(--site-font));font-size:calc(1em + 5px);font-weight:var(--heading-weight,700);line-height:1.2;letter-spacing:var(--heading-letter-spacing,-.02em)}.tb-media-showcase-item figcaption strong + .tb-media-showcase-caption-text{margin-top:11px}.tb-media-showcase-item figcaption .tb-media-showcase-caption-text{font:inherit;line-height:inherit;color:inherit}
.tb-media-showcase-cta{justify-self:start;margin-top:22px}
.tb-media-showcase-cta-align--bottom .tb-media-showcase-item{display:flex;flex-direction:column;height:100%}
.tb-media-showcase-cta-align--bottom .tb-media-showcase-item figcaption{display:flex;flex:1;flex-direction:column;align-items:flex-start;width:100%}
.tb-media-showcase-cta-align--bottom .tb-media-showcase-cta{margin-top:auto;padding-top:22px}
.block-bg-dark .tb-media-showcase-item figcaption,.block-bg-brand .tb-media-showcase-item figcaption,.case-study-bg-dark .tb-media-showcase-item figcaption,.case-study-bg-brand .tb-media-showcase-item figcaption{color:rgba(255,255,255,.68)}
.block-bg-dark .tb-media-showcase-item figcaption strong,.block-bg-brand .tb-media-showcase-item figcaption strong,.case-study-bg-dark .tb-media-showcase-item figcaption strong,.case-study-bg-brand .tb-media-showcase-item figcaption strong{color:#fff}
.case-study-bg-custom .tb-media-showcase-item figcaption,.case-study-bg-custom .tb-media-showcase-item figcaption strong{color:var(--case-study-custom-text,#000)}

@media(hover:hover) and (pointer:fine){
  .tb-media-showcase-hover--zoom .tb-media-showcase-item:hover img,.tb-media-showcase-hover--zoom .tb-media-showcase-link:focus-visible img{transform:scale(1.045)}
  .tb-media-showcase-hover--lift .tb-media-showcase-item:hover .tb-media-showcase-media,.tb-media-showcase-hover--lift .tb-media-showcase-link:focus-visible .tb-media-showcase-media{transform:translateY(-6px);box-shadow:0 18px 45px rgba(0,0,0,.13)}
  .tb-media-showcase-hover--overlay .tb-media-showcase-item:hover .tb-media-showcase-hover-layer,.tb-media-showcase-hover--overlay .tb-media-showcase-link:focus-visible .tb-media-showcase-hover-layer{opacity:1}
  .tb-media-showcase-hover--zoom-overlay .tb-media-showcase-item:hover img,.tb-media-showcase-hover--zoom-overlay .tb-media-showcase-link:focus-visible img{transform:scale(1.045)}
  .tb-media-showcase-hover--zoom-overlay .tb-media-showcase-item:hover .tb-media-showcase-hover-layer,.tb-media-showcase-hover--zoom-overlay .tb-media-showcase-link:focus-visible .tb-media-showcase-hover-layer{opacity:1}
  .tb-media-showcase-hover--reveal-caption .tb-media-showcase-item:hover .tb-media-showcase-hover-layer,.tb-media-showcase-hover--reveal-caption .tb-media-showcase-link:focus-visible .tb-media-showcase-hover-layer{opacity:1}
  .tb-media-showcase-hover--reveal-caption .tb-media-showcase-item:hover .tb-media-showcase-hover-copy,.tb-media-showcase-hover--reveal-caption .tb-media-showcase-link:focus-visible .tb-media-showcase-hover-copy{opacity:1;transform:none}
}

/* Lightweight native lightbox — enhanced by assets/js/site.js; the anchor still works without JS. */
.tb-media-lightbox{position:fixed;inset:0;z-index:10050;display:grid;place-items:center;padding:28px;background:rgba(5,9,12,.92);opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}
.tb-media-lightbox.is-open{opacity:1;visibility:visible}
.tb-media-lightbox-inner{position:relative;max-width:min(1500px,94vw);max-height:92vh;display:grid;place-items:center}
.tb-media-lightbox img{display:block;max-width:94vw;max-height:88vh;width:auto;height:auto;object-fit:contain}
.tb-media-lightbox-close{position:absolute;right:-8px;top:-48px;width:40px;height:40px;border:1px solid rgba(255,255,255,.35);background:rgba(0,0,0,.35);color:#fff;font-size:1.6rem;line-height:1;cursor:pointer;border-radius:50%}
body.tb-media-lightbox-open{overflow:hidden}

@media(max-width:980px){
  .tb-media-showcase-grid--row,.tb-media-showcase-grid--caption-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tb-media-showcase-grid--large-supporting{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tb-media-showcase-grid--mosaic{grid-template-columns:1.35fr 1fr}
}
@media(max-width:620px){
  .tb-media-showcase-shell--contained,.tb-media-showcase-shell--wide.container{width:min(calc(100% - 28px),var(--container))}
  .tb-media-showcase-shell--full .tb-media-showcase-intro{width:min(calc(100% - 28px),var(--container))}
  .tb-media-showcase-grid--mosaic,.tb-media-showcase-grid--mosaic.tb-media-showcase-grid--reverse,.tb-media-showcase-grid--before-after,.tb-media-showcase-grid--large-supporting{grid-template-columns:1fr;grid-template-rows:auto}
  .tb-media-showcase-grid--mosaic .tb-media-showcase-item:first-child,.tb-media-showcase-grid--mosaic.tb-media-showcase-grid--reverse .tb-media-showcase-item:first-child,.tb-media-showcase-grid--mosaic.tb-media-showcase-grid--reverse .tb-media-showcase-item:nth-child(n+2),.tb-media-showcase-grid--large-supporting .tb-media-showcase-item:first-child{grid-column:auto;grid-row:auto}
  .tb-media-showcase-grid--mosaic .tb-media-showcase-item:first-child .tb-media-showcase-media{min-height:0}
  .tb-media-showcase-mobile--auto.tb-media-showcase-grid--row,.tb-media-showcase-mobile--auto.tb-media-showcase-grid--caption-cards{grid-template-columns:1fr}
  .tb-media-showcase-mobile--1.tb-media-showcase-grid--row,.tb-media-showcase-mobile--1.tb-media-showcase-grid--caption-cards{grid-template-columns:1fr}
  .tb-media-showcase-mobile--2.tb-media-showcase-grid--row,.tb-media-showcase-mobile--2.tb-media-showcase-grid--caption-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tb-media-showcase-cta{max-width:100%}
  .tb-media-lightbox{padding:18px}.tb-media-lightbox img{max-width:96vw;max-height:82vh}
}
@media(prefers-reduced-motion:reduce){
  .tb-media-showcase-media,.tb-media-showcase-media img,.tb-media-showcase-hover-layer,.tb-media-showcase-hover-copy,.tb-media-lightbox{transition:none!important}
  .tb-media-showcase-item:hover .tb-media-showcase-media,.tb-media-showcase-item:hover img{transform:none!important}
}
.media-showcase-section.media-showcase-spacing--compact{padding-top:48px;padding-bottom:48px}
.media-showcase-section.media-showcase-spacing--standard{padding-top:clamp(72px,8vw,116px);padding-bottom:clamp(72px,8vw,116px)}
.media-showcase-section.media-showcase-spacing--spacious{padding-top:clamp(96px,10vw,150px);padding-bottom:clamp(96px,10vw,150px)}

/* ======================================================================
   V2.16.44 — Controlled homepage/internal hero heading sizing
   Custom values set a desktop maximum only; viewport-based scaling remains.
   Automatic/inherited heroes do not receive these classes and therefore keep
   the exact pre-v2.16.44 typography rules.
   ====================================================================== */
@media (min-width:901px){
  .hero.hero--custom-heading-size h1{font-size:clamp(3rem,6vw,var(--tb-home-hero-heading-max,5.8rem))}
  .home-premium .hero.hero--custom-heading-size h1{font-size:clamp(3rem,6.3vw,var(--tb-home-hero-heading-max,6.4rem))}
  .inner-hero.inner-hero--custom-heading-size h1{font-size:clamp(2.5rem,5.5vw,var(--tb-inner-hero-heading-max,5rem))}
}
@media (max-width:900px) and (min-width:701px){
  .hero.hero--custom-heading-size h1,.home-premium .hero.hero--custom-heading-size h1{font-size:clamp(2.75rem,7vw,min(var(--tb-home-hero-heading-max,4.5rem),4.5rem))}
  .inner-hero.inner-hero--custom-heading-size h1{font-size:clamp(2.5rem,8vw,min(var(--tb-inner-hero-heading-max,4.4rem),4.4rem))}
}
@media (max-width:700px){
  .hero.hero--custom-heading-size h1,.home-premium .hero.hero--custom-heading-size h1{font-size:clamp(2.25rem,11vw,min(var(--tb-home-hero-heading-max,4.35rem),4.35rem))}
  /* Internal-page H1 is 56px on phones, including pages with a custom desktop
     hero heading size. Applies to About, Areas, Services, Contact, Dynamic and
     individual Service Pages via the canonical render_page_hero() component. */
  .inner-hero h1,
  .inner-hero.inner-hero--custom-heading-size h1{font-size:56px}
}

/* ==========================================================
   V2.16.52 Homepage Services Section Header System
   ========================================================== */
.services-section-header{
  --services-header-gap:clamp(34px,4.5vw,70px);
  margin:0 0 42px;
}
.services-section-header__primary,
.services-section-header__secondary{min-width:0}
.services-section-header__primary h2{max-width:18ch}
.services-section-header__secondary{max-width:560px}
.services-section-header__secondary .lead{max-width:none}
.services-section-header__intro p{margin:0;color:inherit;font:inherit;line-height:inherit}
.services-section-header__intro p + p{margin-top:18px}
.services-section-header__cta{margin-top:24px}

/* Preset compositions. */
.services-section-header--editorial-split{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr);
  gap:var(--services-header-gap);
  align-items:end;
}
.services-section-header--editorial-split .services-section-header__secondary{justify-self:end;padding-bottom:5px}
.services-section-header--stacked-left{max-width:900px}
.services-section-header--stacked-left .services-section-header__secondary{margin-top:22px}
.services-section-header--centred-intro{max-width:980px;margin-left:auto;margin-right:auto;text-align:center}
.services-section-header--centred-intro .services-section-header__primary h2,
.services-section-header--centred-intro .services-section-header__secondary{margin-left:auto;margin-right:auto}
.services-section-header--centred-intro .services-section-header__secondary{margin-top:22px}
.services-section-header--compact-left{max-width:780px}
.services-section-header--compact-left .services-section-header__secondary{margin-top:16px;max-width:650px}
.services-section-header--wide-statement{max-width:none}
.services-section-header--wide-statement .services-section-header__primary h2{max-width:19ch}
.services-section-header--wide-statement .services-section-header__secondary{margin-top:28px;margin-left:auto;max-width:600px}

/* Automatic preset sizing. */
.services-section-header--editorial-split.services-section-header--heading-auto .services-section-header__primary h2{font-size:clamp(2.45rem,4.2vw,4.45rem)}
.services-section-header--stacked-left.services-section-header--heading-auto .services-section-header__primary h2{font-size:clamp(2.35rem,3.8vw,4.05rem)}
.services-section-header--centred-intro.services-section-header--heading-auto .services-section-header__primary h2{font-size:clamp(2.45rem,4.2vw,4.55rem)}
.services-section-header--compact-left.services-section-header--heading-auto .services-section-header__primary h2{font-size:clamp(2.15rem,3.2vw,3.45rem)}
.services-section-header--wide-statement.services-section-header--heading-auto .services-section-header__primary h2{font-size:clamp(3rem,5.4vw,5.65rem);line-height:.96}

/* Explicit heading-size overrides. */
.services-section-header--heading-small .services-section-header__primary h2{font-size:clamp(2rem,3vw,3rem)!important}
.services-section-header--heading-standard .services-section-header__primary h2{font-size:clamp(2.3rem,3.8vw,4rem)!important}
.services-section-header--heading-large .services-section-header__primary h2{font-size:clamp(2.7rem,4.7vw,4.9rem)!important}
.services-section-header--heading-display .services-section-header__primary h2{font-size:clamp(3.15rem,5.7vw,5.9rem)!important;line-height:.95}

/* Header-width overrides. Auto keeps the layout-specific preset width above. */
.services-section-header--width-narrow{max-width:820px!important}
.services-section-header--width-standard{max-width:1040px!important}
.services-section-header--width-wide{max-width:none!important}
.services-section-header--width-narrow.services-section-header--centred-intro,
.services-section-header--width-standard.services-section-header--centred-intro,
.services-section-header--width-wide.services-section-header--centred-intro{margin-left:auto;margin-right:auto}

/* Supporting-copy width overrides. */
.services-section-header--intro-narrow .services-section-header__secondary{max-width:440px}
.services-section-header--intro-standard .services-section-header__secondary{max-width:560px}
.services-section-header--intro-wide .services-section-header__secondary{max-width:700px}

/* Preset spacing is intentionally tighter than the legacy section-head gap. */
.services-section-header--spacing-auto.services-section-header--editorial-split{margin-bottom:38px}
.services-section-header--spacing-auto.services-section-header--stacked-left{margin-bottom:36px}
.services-section-header--spacing-auto.services-section-header--centred-intro{margin-bottom:42px}
.services-section-header--spacing-auto.services-section-header--compact-left{margin-bottom:28px}
.services-section-header--spacing-auto.services-section-header--wide-statement{margin-bottom:44px}
.services-section-header--spacing-compact{margin-bottom:24px!important}
.services-section-header--spacing-standard{margin-bottom:40px!important}
.services-section-header--spacing-spacious{margin-bottom:64px!important}

/* Alignment remains layout-aware: Editorial Split keeps its designed split. */
.services-section-header:not(.services-section-header--editorial-split).services-section-header--align-centre{text-align:center;margin-left:auto;margin-right:auto}
.services-section-header:not(.services-section-header--editorial-split).services-section-header--align-centre .services-section-header__primary h2,
.services-section-header:not(.services-section-header--editorial-split).services-section-header--align-centre .services-section-header__secondary{margin-left:auto;margin-right:auto}
.services-section-header:not(.services-section-header--editorial-split).services-section-header--align-left{text-align:left}
.services-section-header:not(.services-section-header--editorial-split).services-section-header--align-left .services-section-header__primary h2,
.services-section-header:not(.services-section-header--editorial-split).services-section-header--align-left .services-section-header__secondary{margin-left:0;margin-right:0}

@media(max-width:900px){
  .services-section-header--editorial-split{grid-template-columns:1fr;gap:20px;align-items:start}
  .services-section-header--editorial-split .services-section-header__secondary{justify-self:start;padding-bottom:0;max-width:700px}
  .services-section-header--wide-statement .services-section-header__secondary{margin-left:0}
}
@media(max-width:680px){
  .services-section-header{margin-bottom:30px}
  .services-section-header__primary h2{max-width:none}
  .services-section-header--wide-statement .services-section-header__primary h2{font-size:clamp(2.55rem,12vw,4.15rem)}
  .services-section-header__cta{margin-top:20px}
  .services-section-header--spacing-spacious{margin-bottom:48px!important}
}


/* ==========================================================
   V2.16.54 Homepage Areas + FAQ presentation system
   ========================================================== */
.home-local-surface--soft{background:var(--cream)}
.home-premium .home-local-surface--soft{background:linear-gradient(180deg,color-mix(in srgb,var(--cream) 92%,#fff) 0%,var(--cream) 100%)}
.home-local-surface--white{background:#fff}
.home-local-surface--tint{background:color-mix(in srgb,var(--brand-accent) 8%,#fff)}
.home-local-surface--dark{background:var(--navy-2);color:#fff}
.home-local-surface--dark h2,.home-local-surface--dark h3,.home-local-surface--dark strong,.home-local-surface--dark .faq button{color:#fff}
.home-local-surface--dark .eyebrow{color:var(--brand-accent)}
.home-local-surface--dark .faq,.home-local-surface--dark .faq-list,.home-local-surface--dark .home-area-editorial,.home-local-surface--dark .home-faq-item,.home-local-surface--dark .home-area-map-item{border-color:rgba(255,255,255,.15)}
.home-local-surface--dark .faq p,.home-local-surface--dark .home-local-supporting{color:#b9c6d0}
.home-local-surface--dark .area-chip,.home-local-surface--dark .home-area-card{background:rgba(255,255,255,.055);border-color:rgba(255,255,255,.16);color:#fff}
.home-local-surface--dark .home-area-card-icon{background:rgba(255,255,255,.08)}
.home-premium .home-local-spacing--compact{padding:82px 0}
.home-premium .home-local-spacing--standard{padding:118px 0}
.home-premium .home-local-spacing--spacious{padding:150px 0}
.home-local-header{margin-bottom:clamp(28px,4vw,46px)}
.home-local-header .eyebrow{margin-bottom:18px}
.home-local-header h2{max-width:760px}
.home-local-supporting{max-width:760px;margin:16px 0 0;color:var(--muted);font-size:1rem;line-height:1.65}
.home-local-header--centred{text-align:center;max-width:900px;margin-left:auto;margin-right:auto}
.home-local-header--centred h2,.home-local-header--centred .home-local-supporting{margin-left:auto;margin-right:auto}
.home-local-header--compact{margin-bottom:26px}
.home-local-header--compact .eyebrow{margin-bottom:11px}
.home-local-header--compact h2{font-size:clamp(2rem,3vw,3.15rem);max-width:680px}
.home-local-info--combined .home-local-header{margin-bottom:0}
.home-local-info--combined .home-local-header--centred{text-align:left;margin-left:0;margin-right:0}
.home-local-info--combined .home-local-header--centred h2,.home-local-info--combined .home-local-header--centred .home-local-supporting{margin-left:0;margin-right:0}
.home-local-info--combined .home-local-panel--areas>.home-local-header+.home-areas{margin-top:34px}
.home-local-info--combined .home-local-panel--faqs>.home-local-header+.faq-list{margin-top:31px}
.home-local-section .home-local-content{max-width:1180px}
.home-local-section .home-local-header--classic+.home-local-content{margin-top:0}
.home-local-action{margin-top:28px}

/* Areas: compact pills preserves the long-standing Toolbelt default. */
.home-areas--compact-pills{margin-top:0}
.home-areas--editorial-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 34px;border-top:1px solid var(--line)}
.home-area-editorial{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:center;padding:18px 2px;border-bottom:1px solid var(--line)}
.home-area-editorial span{font-size:.68rem;font-weight:900;letter-spacing:.12em;color:var(--brand-accent)}
.home-area-editorial strong{font-size:.92rem;color:var(--brand-heading)}
.home-areas--card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.home-area-card{min-height:96px;border:1px solid var(--line);background:#fff;padding:18px;display:flex;align-items:center;gap:14px;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}
.home-area-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--brand-accent) 45%,var(--line));box-shadow:0 14px 28px rgba(12,29,43,.07)}
.home-area-card-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:color-mix(in srgb,var(--brand-accent) 12%,#fff);color:var(--brand-accent);flex:0 0 auto}
.home-area-card-icon svg{width:17px;height:17px}
.home-area-card strong{font-size:.86rem;color:var(--brand-heading)}
.home-areas--map-led{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:28px;align-items:stretch}
.home-areas-map-visual{min-height:410px}
.home-areas-map-visual .home-map-frame{height:100%;min-height:410px;border-radius:0}
.home-areas-map-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;border-top:1px solid var(--line)}
.home-area-map-item{display:grid;grid-template-columns:34px minmax(0,1fr);gap:8px;padding:15px 4px;border-bottom:1px solid var(--line)}
.home-area-map-item span{color:var(--brand-accent);font-size:.64rem;font-weight:900;letter-spacing:.08em}
.home-area-map-item strong{font-size:.78rem;color:var(--brand-heading)}
.home-local-surface--dark .home-area-editorial strong,.home-local-surface--dark .home-area-card strong,.home-local-surface--dark .home-area-map-item strong{color:#fff}

/* FAQs: all options keep the accessible accordion behaviour while changing composition. */
.home-faq-list{margin-top:0}
.home-faq-list--boxed-cards{border-top:0;display:grid;gap:12px}
.home-faq-list--boxed-cards .home-faq-item{border:1px solid var(--line);background:#fff;padding:0 20px}
.home-faq-list--boxed-cards .faq button{padding:20px 0}
.home-faq-list--boxed-cards .faq p{padding-right:30px}
.home-local-surface--dark .home-faq-list--boxed-cards .home-faq-item{background:rgba(255,255,255,.045)}
.home-faq-list--two-column{border-top:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.home-faq-list--two-column .home-faq-item{border:1px solid var(--line);background:#fff;padding:0 18px;align-self:start}
.home-faq-list--two-column .faq button{padding:19px 0;min-height:76px}
.home-faq-list--two-column .faq p{padding-right:22px}
.home-local-surface--dark .home-faq-list--two-column .home-faq-item{background:rgba(255,255,255,.045)}
.home-faq-list--editorial-list{border-top:1px solid var(--line)}
.home-faq-list--editorial-list .home-faq-item{display:grid;grid-template-columns:64px minmax(0,1fr);border-bottom:1px solid var(--line)}
.home-faq-list--editorial-list .home-faq-index{padding-top:23px;color:var(--brand-accent);font-size:.7rem;font-weight:900;letter-spacing:.14em}
.home-faq-list--editorial-list .home-faq-content{min-width:0}
.home-faq-list--editorial-list .home-faq-content .faq{border:0}
.home-faq-list--editorial-list .faq button{padding:21px 0}
.home-faq-list--editorial-list .faq p{padding-right:44px}
.home-faq-learn-more{display:inline-flex;align-items:center;gap:7px;margin-top:12px;color:var(--brand-accent);font-size:.8rem;font-weight:850;line-height:1.35;text-decoration:none}
.home-faq-learn-more:hover{text-decoration:underline;text-underline-offset:3px}
.home-local-surface--dark .home-faq-learn-more{color:var(--brand-accent)}

/* Split mode gives each component enough room to become a designed section. */
.home-local-section--areas .home-local-header--classic,
.home-local-section--faqs .home-local-header--classic{max-width:860px}
.home-local-section--areas .home-areas--compact-pills{display:flex;flex-wrap:wrap;gap:10px}
.home-local-section--areas .home-areas--compact-pills .area-chip{border:1px solid var(--line);padding:12px 15px;background:#fff;font-size:.74rem;font-weight:800}
.home-local-section--areas .home-areas--compact-pills .area-chip::before{content:"";display:inline-block;width:5px;height:5px;background:var(--brand-accent);border-radius:50%;margin-right:8px;vertical-align:middle}
.home-local-surface--dark.home-local-section--areas .home-areas--compact-pills .area-chip{background:rgba(255,255,255,.055)}


@media (max-width:980px){
  .home-premium .home-local-spacing--compact{padding:72px 0}
  .home-premium .home-local-spacing--standard{padding:92px 0}
  .home-premium .home-local-spacing--spacious{padding:120px 0}
  .home-areas--card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .home-areas--map-led{grid-template-columns:1fr}
  .home-areas-map-visual,.home-areas-map-visual .home-map-frame{min-height:360px}
  .home-faq-list--two-column{grid-template-columns:1fr}
}
@media (max-width:700px){
  .home-premium .home-local-spacing--compact{padding:58px 0}
  .home-premium .home-local-spacing--standard{padding:76px 0}
  .home-premium .home-local-spacing--spacious{padding:96px 0}
  .home-areas--editorial-list,.home-areas--card-grid{grid-template-columns:1fr}
  .home-areas-map-list{grid-template-columns:1fr 1fr}
  .home-faq-list--editorial-list .home-faq-item{grid-template-columns:42px minmax(0,1fr)}
  .home-faq-list--editorial-list .home-faq-index{padding-top:20px}
}
@media (max-width:520px){
  .home-areas-map-list{grid-template-columns:1fr}
  .home-areas--card-grid{gap:9px}
  .home-area-card{min-height:82px;padding:15px}
}

/* ==========================================================
   V2.16.57 — Homepage Feature Image
   ========================================================== */
.home-feature-image-section{
  position:relative;
  overflow:clip;
  background:var(--surface,#fff);
}
.home-feature-spacing--flush{padding-block:0}
.home-feature-spacing--standard{padding-block:clamp(42px,5vw,72px)}
.home-feature-spacing--spacious{padding-block:clamp(72px,8vw,118px)}
.home-feature-no-top{padding-top:0!important}
.home-feature-no-bottom{padding-bottom:0!important}
.home-feature-outer{position:relative;width:100%}
.home-feature-stage{
  position:relative;
  overflow:hidden;
  isolation:isolate;
  width:100%;
  min-height:clamp(420px,52vw,620px);
}
.home-feature--contained .home-feature-stage{border-radius:clamp(10px,1.4vw,20px)}
.home-feature-height--short .home-feature-stage{min-height:clamp(300px,38vw,440px)}
.home-feature-height--standard .home-feature-stage{min-height:clamp(420px,52vw,620px)}
.home-feature-height--tall .home-feature-stage{min-height:clamp(560px,68vw,820px)}
.home-feature-height--viewport .home-feature-stage{min-height:min(88svh,940px)}
.home-feature-height--natural .home-feature-stage{min-height:0}
.home-feature-media{
  position:absolute;
  inset:0;
  overflow:hidden;
  background-image:var(--home-feature-image);
  background-size:cover;
  background-position:var(--home-feature-position,center center);
  background-repeat:no-repeat;
}
.home-feature-media picture,
.home-feature-media img{display:block;width:100%;height:100%}
.home-feature-media img{object-fit:cover;object-position:var(--home-feature-position,center center)}
.home-feature-height--natural .home-feature-media{position:relative;inset:auto}
.home-feature-height--natural .home-feature-media picture,
.home-feature-height--natural .home-feature-media img{height:auto}
.home-feature-height--natural .home-feature-media img{width:100%;object-fit:contain}
.home-feature-media>.tb-home-feature-treatment{z-index:1}
.home-feature-contrast{
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
  background:linear-gradient(90deg,rgba(10,12,14,.70) 0%,rgba(10,12,14,.38) 42%,rgba(10,12,14,.05) 78%);
}
.home-feature-content--top-right .home-feature-contrast,
.home-feature-content--center-right .home-feature-contrast,
.home-feature-content--bottom-right .home-feature-contrast{
  background:linear-gradient(270deg,rgba(10,12,14,.70) 0%,rgba(10,12,14,.38) 42%,rgba(10,12,14,.05) 78%);
}
.home-feature-content--top-center .home-feature-contrast,
.home-feature-content--center-center .home-feature-contrast,
.home-feature-content--bottom-center .home-feature-contrast{
  background:radial-gradient(circle at 50% 50%,rgba(10,12,14,.55) 0%,rgba(10,12,14,.28) 48%,rgba(10,12,14,.06) 78%);
}
.home-feature-content--top-left .home-feature-contrast,
.home-feature-content--top-center .home-feature-contrast,
.home-feature-content--top-right .home-feature-contrast{
  background-image:linear-gradient(180deg,rgba(10,12,14,.66) 0%,rgba(10,12,14,.20) 58%,rgba(10,12,14,.03) 100%);
}
.home-feature-content--bottom-left .home-feature-contrast,
.home-feature-content--bottom-center .home-feature-contrast,
.home-feature-content--bottom-right .home-feature-contrast{
  background-image:linear-gradient(0deg,rgba(10,12,14,.70) 0%,rgba(10,12,14,.22) 58%,rgba(10,12,14,.03) 100%);
}
.home-feature-content{
  position:absolute;
  inset:0;
  z-index:3;
  display:flex;
  padding-block:clamp(28px,5vw,82px);
  padding-inline:clamp(28px,5vw,82px);
  pointer-events:none;
}
/* Full-width feature image copy should align to the same max-width content
   gutter as the rest of the website on large screens instead of stopping at
   the old fixed 82px cap. Contained layouts retain their local stage padding. */
.home-feature-image-section:not(.home-feature--contained) .home-feature-content{
  padding-inline:max(20px,calc((100vw - var(--container))/2));
}
.home-feature-copy{width:min(100%,680px);pointer-events:auto}
.home-feature-text--narrow .home-feature-copy{width:min(100%,520px)}
.home-feature-text--wide .home-feature-copy{width:min(100%,840px)}
.home-feature-content--top-left .home-feature-content{align-items:flex-start;justify-content:flex-start;text-align:left}
.home-feature-content--top-center .home-feature-content{align-items:flex-start;justify-content:center;text-align:center}
.home-feature-content--top-right .home-feature-content{align-items:flex-start;justify-content:flex-end;text-align:right}
.home-feature-content--center-left .home-feature-content{align-items:center;justify-content:flex-start;text-align:left}
.home-feature-content--center-center .home-feature-content{align-items:center;justify-content:center;text-align:center}
.home-feature-content--center-right .home-feature-content{align-items:center;justify-content:flex-end;text-align:right}
.home-feature-content--bottom-left .home-feature-content{align-items:flex-end;justify-content:flex-start;text-align:left}
.home-feature-content--bottom-center .home-feature-content{align-items:flex-end;justify-content:center;text-align:center}
.home-feature-content--bottom-right .home-feature-content{align-items:flex-end;justify-content:flex-end;text-align:right}
.home-feature-content--top-center .home-feature-copy,
.home-feature-content--center-center .home-feature-copy,
.home-feature-content--bottom-center .home-feature-copy{margin-inline:auto}
.home-feature-tone--light .home-feature-copy{color:#fff}
.home-feature-tone--light .home-feature-copy h2,
.home-feature-tone--light .home-feature-copy p{color:inherit}
.home-feature-tone--light .home-feature-copy .eyebrow{color:rgba(255,255,255,.82)}
.home-feature-tone--dark .home-feature-copy{color:var(--heading,#111)}
.home-feature-copy h2{margin:8px 0 18px;font-size:clamp(2.3rem,5.4vw,5.6rem);line-height:.96;max-width:13ch}
.home-feature-content--top-center .home-feature-copy h2,
.home-feature-content--center-center .home-feature-copy h2,
.home-feature-content--bottom-center .home-feature-copy h2{margin-inline:auto}
/* V2.18.20 — keep constrained Feature Image copy aligned to the selected
   right-hand content edge. Previously the H2/body max-width blocks stayed
   anchored to the left edge of the copy column even when the whole section
   was set to Right, producing the stepped/offset heading seen on long titles. */
.home-feature-content--top-right .home-feature-copy h2,
.home-feature-content--center-right .home-feature-copy h2,
.home-feature-content--bottom-right .home-feature-copy h2,
.home-feature-content--top-right .home-feature-body,
.home-feature-content--center-right .home-feature-body,
.home-feature-content--bottom-right .home-feature-body{margin-left:auto;margin-right:0}
.home-feature-body{font-size:clamp(1rem,1.35vw,1.22rem);line-height:1.7;max-width:62ch}
.home-feature-body p{margin:0 0 .85em}
.home-feature-body p:last-child{margin-bottom:0}
.home-feature-cta{margin-top:26px}
.home-feature-caption{
  padding-top:12px;
  padding-bottom:2px;
  font-size:.82rem;
  color:var(--muted,#687078);
}
.home-feature-image-section:not(.home-feature--contained) .home-feature-caption{padding-inline:clamp(20px,4vw,64px)}

@media (min-width:1024px){
  .home-feature-scroll--fixed .home-feature-media{
    background-image:var(--home-feature-image);
    background-attachment:fixed;
    background-position:var(--home-feature-position,center center);
  }
  .home-feature-scroll--fixed .home-feature-media picture{opacity:0}
  .home-feature-scroll--sticky .home-feature-outer{height:160vh}
  .home-feature-scroll--sticky .home-feature-stage{position:sticky;top:0}
}

@media (max-width:1023px){
  .home-feature-scroll--fixed .home-feature-media{background-image:none;background-attachment:scroll}
  .home-feature-scroll--sticky .home-feature-outer{height:auto}
  .home-feature-scroll--sticky .home-feature-stage{position:relative;top:auto}
}

@media (max-width:767px){
  .home-feature-stage,
  .home-feature-height--short .home-feature-stage,
  .home-feature-height--standard .home-feature-stage,
  .home-feature-height--tall .home-feature-stage,
  .home-feature-height--viewport .home-feature-stage{min-height:clamp(420px,118vw,620px)}
  .home-feature-height--natural .home-feature-stage{min-height:0}
  .home-feature--contained .home-feature-stage{border-radius:10px}
  .home-feature-content{padding:28px 22px}
  .home-feature-copy h2{font-size:clamp(2.15rem,11vw,3.9rem);max-width:12ch}
  .home-feature-content--top-right .home-feature-content,
  .home-feature-content--center-right .home-feature-content,
  .home-feature-content--bottom-right .home-feature-content{text-align:left;justify-content:flex-start}
  .home-feature-content--top-center .home-feature-content,
  .home-feature-content--center-center .home-feature-content,
  .home-feature-content--bottom-center .home-feature-content{text-align:left;justify-content:flex-start}
  .home-feature-content--top-center .home-feature-copy h2,
  .home-feature-content--center-center .home-feature-copy h2,
  .home-feature-content--bottom-center .home-feature-copy h2{margin-inline:0}
  .home-feature-contrast,
  .home-feature-content--top-right .home-feature-contrast,
  .home-feature-content--center-right .home-feature-contrast,
  .home-feature-content--bottom-right .home-feature-contrast,
  .home-feature-content--top-center .home-feature-contrast,
  .home-feature-content--center-center .home-feature-contrast,
  .home-feature-content--bottom-center .home-feature-contrast{
    background:linear-gradient(0deg,rgba(10,12,14,.72) 0%,rgba(10,12,14,.38) 58%,rgba(10,12,14,.06) 100%);
  }
}

@media (prefers-reduced-motion:reduce){
  .home-feature-scroll--fixed .home-feature-media{background-image:none!important;background-attachment:scroll!important}
  .home-feature-scroll--fixed .home-feature-media picture{opacity:1!important}
  .home-feature-scroll--sticky .home-feature-outer{height:auto!important}
  .home-feature-scroll--sticky .home-feature-stage{position:relative!important;top:auto!important}
}

/* ==========================================================
   V2.16.59 Contact Page Layout & Surface System
   ========================================================== */
.contact-page-design{position:relative;isolation:isolate;overflow:hidden}
.contact-page-design>.contact-design-background{position:absolute;inset:0;z-index:-2;overflow:hidden}
.contact-design-background img{width:100%;height:100%;object-fit:cover;display:block}
.contact-design-background span{position:absolute;inset:0;background:rgba(7,12,15,var(--contact-overlay-opacity,.68));z-index:1}
.contact-design-container{position:relative;z-index:2}
.contact-bg--white{background:#fff}
.contact-bg--soft{background:var(--cream)}
.contact-bg--dark{background:var(--navy-2);color:#fff}
.contact-bg--palette{background:color-mix(in srgb,var(--brand-accent) 9%,var(--brand-light))}
.contact-bg--image{background:linear-gradient(135deg,var(--navy-2),var(--brand-primary));color:#fff}
.contact-spacing--compact{padding-top:66px;padding-bottom:66px}
.contact-spacing--standard{padding-top:96px;padding-bottom:96px}
.contact-spacing--spacious{padding-top:132px;padding-bottom:132px}

.contact-design-info,.contact-design-form,.contact-mini-card,.contact-fullwidth-intro{border:1px solid transparent}
.contact-surface--solid{background:#fff;color:var(--ink);border-color:var(--line);box-shadow:0 24px 65px color-mix(in srgb,var(--brand-primary) 9%,transparent)}
.contact-surface--glass{background:rgba(255,255,255,.76);color:var(--ink);border-color:rgba(255,255,255,.72);box-shadow:0 28px 70px rgba(0,0,0,.12);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.contact-bg--dark .contact-surface--glass,.contact-bg--image .contact-surface--glass,.contact-layout--dark-panel .contact-surface--glass,.contact-image-led-info.contact-surface--glass{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.24);box-shadow:0 28px 70px rgba(0,0,0,.24)}
.contact-surface--translucent{background:rgba(255,255,255,.82);color:var(--ink);border-color:rgba(255,255,255,.5);box-shadow:0 24px 65px rgba(0,0,0,.12);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.contact-bg--dark .contact-surface--translucent,.contact-bg--image .contact-surface--translucent,.contact-layout--dark-panel .contact-surface--translucent{background:rgba(255,255,255,.09);color:#fff;border-color:rgba(255,255,255,.17)}
.contact-surface--minimal{background:transparent;color:inherit;border-color:color-mix(in srgb,var(--brand-border) 78%,transparent);box-shadow:none}
.contact-bg--dark .contact-surface--minimal,.contact-bg--image .contact-surface--minimal{border-color:rgba(255,255,255,.17)}

.contact-design-info{padding:40px}
.contact-design-details-heading{font-size:clamp(2rem,3vw,3.25rem);line-height:1.02;margin-top:12px}
.contact-design-details-text{margin-top:18px;max-width:560px;line-height:1.75;color:var(--muted)}
.contact-design-info .contact-details{margin-top:30px;gap:9px}
.contact-design-info .contact-detail{display:grid;grid-template-columns:28px minmax(0,1fr);align-items:start;gap:12px;margin:0;padding:9px 0;color:inherit;font-weight:750}
.contact-design-info .contact-detail address{font-style:normal;line-height:1.55}
.contact-design-info .contact-detail--address{font-weight:520}
.contact-icon-wrap--text{font-size:1.2rem;font-weight:800;line-height:1} /* legacy compatibility */
.contact-bg--dark .contact-design-details-heading,.contact-bg--image .contact-design-details-heading,.contact-layout--dark-panel .contact-design-details-heading,.contact-image-led-info.contact-surface--glass .contact-design-details-heading{color:#fff}
.contact-bg--dark .contact-design-details-text,.contact-bg--image .contact-design-details-text,.contact-layout--dark-panel .contact-design-details-text,.contact-image-led-info.contact-surface--glass .contact-design-details-text{color:rgba(255,255,255,.75)}
.contact-bg--dark .contact-design-info .eyebrow,.contact-bg--image .contact-design-info .eyebrow,.contact-layout--dark-panel .contact-design-info .eyebrow,.contact-image-led-info.contact-surface--glass .eyebrow{color:color-mix(in srgb,var(--brand-accent) 68%,#fff)}

.contact-design-form{margin:0}
.contact-design-form.contact-surface--minimal{padding:0;border:0}
.contact-bg--dark .contact-surface--glass.enquiry-form-card,.contact-bg--image .contact-surface--glass.enquiry-form-card,.contact-layout--dark-panel .contact-surface--glass.enquiry-form-card,.contact-bg--dark .contact-surface--translucent.enquiry-form-card,.contact-bg--image .contact-surface--translucent.enquiry-form-card{color:#fff}
.contact-bg--dark .contact-surface--glass .enquiry-form-heading,.contact-bg--image .contact-surface--glass .enquiry-form-heading,.contact-layout--dark-panel .contact-surface--glass .enquiry-form-heading,.contact-bg--dark .contact-surface--translucent .enquiry-form-heading,.contact-bg--image .contact-surface--translucent .enquiry-form-heading{color:#fff}
.contact-bg--dark .contact-surface--glass .enquiry-form-intro,.contact-bg--dark .contact-surface--glass .tiny,.contact-bg--dark .contact-surface--glass .enquiry-demo-note,.contact-bg--image .contact-surface--glass .enquiry-form-intro,.contact-bg--image .contact-surface--glass .tiny,.contact-bg--image .contact-surface--glass .enquiry-demo-note,.contact-layout--dark-panel .contact-surface--glass .tiny,.contact-bg--dark .contact-surface--translucent .tiny,.contact-bg--dark .contact-surface--translucent .enquiry-demo-note,.contact-bg--image .contact-surface--translucent .tiny,.contact-bg--image .contact-surface--translucent .enquiry-demo-note{color:rgba(255,255,255,.74)}
.contact-bg--dark .contact-surface--glass label,.contact-bg--image .contact-surface--glass label,.contact-layout--dark-panel .contact-surface--glass label,.contact-bg--dark .contact-surface--translucent label,.contact-bg--image .contact-surface--translucent label{color:#fff}
.contact-bg--dark .contact-surface--glass input,.contact-bg--dark .contact-surface--glass select,.contact-bg--dark .contact-surface--glass textarea,.contact-bg--image .contact-surface--glass input,.contact-bg--image .contact-surface--glass select,.contact-bg--image .contact-surface--glass textarea,.contact-layout--dark-panel .contact-surface--glass input,.contact-layout--dark-panel .contact-surface--glass select,.contact-layout--dark-panel .contact-surface--glass textarea,.contact-bg--dark .contact-surface--translucent input,.contact-bg--dark .contact-surface--translucent select,.contact-bg--dark .contact-surface--translucent textarea,.contact-bg--image .contact-surface--translucent input,.contact-bg--image .contact-surface--translucent select,.contact-bg--image .contact-surface--translucent textarea{background:rgba(255,255,255,.95);border-color:rgba(255,255,255,.3);color:var(--ink)}
.contact-bg--dark .contact-surface--minimal.enquiry-form-card,.contact-bg--image .contact-surface--minimal.enquiry-form-card{color:#fff}
.contact-bg--dark .contact-surface--minimal .enquiry-form-heading,.contact-bg--image .contact-surface--minimal .enquiry-form-heading,.contact-bg--dark .contact-surface--minimal label,.contact-bg--image .contact-surface--minimal label{color:#fff}
.contact-bg--dark .contact-surface--minimal .tiny,.contact-bg--image .contact-surface--minimal .tiny{color:rgba(255,255,255,.7)}

.contact-editorial-grid{display:grid;grid-template-columns:minmax(0,.78fr) minmax(500px,1.22fr);gap:80px;align-items:start}
.contact-layout--editorial-split .contact-design-info.contact-surface--minimal{padding:24px 0;border-left:0;border-right:0}
.contact-layout--editorial-split .contact-design-details-heading{font-size:clamp(2.7rem,4.2vw,4.9rem)}
.contact-layout--editorial-split .contact-design-form{max-width:760px;justify-self:end;width:100%}

.contact-fullwidth-intro{padding:34px 40px;margin-bottom:42px}
.contact-fullwidth-intro .contact-design-details-copy{display:grid;grid-template-columns:minmax(260px,.85fr) minmax(0,1.15fr);gap:50px;align-items:start}
.contact-fullwidth-intro .contact-design-details-text{margin-top:0}
.contact-fullwidth-intro .contact-details{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:4px}
.contact-fullwidth-intro .contact-detail{border-top:1px solid color-mix(in srgb,var(--brand-border) 80%,transparent);padding-top:16px}
.contact-fullwidth-form{max-width:1080px;margin:0 auto}
.contact-fullwidth-form .form-card{padding:46px}

.contact-dark-panel{display:grid;grid-template-columns:minmax(0,.82fr) minmax(500px,1.18fr);gap:0;background:var(--navy-2);padding:28px;box-shadow:0 28px 80px rgba(0,0,0,.16)}
.contact-dark-panel .contact-design-info{border-right:0;padding:48px}
.contact-dark-panel .contact-design-form{min-height:100%}

.contact-map-layout-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(480px,.9fr);gap:44px;align-items:start}
.contact-map-layout-side{display:grid;gap:18px}
.contact-map-layout-frame .home-map-frame{min-height:420px;aspect-ratio:4/3}
.contact-map-layout-side .contact-design-info{padding:28px 32px}
.contact-map-layout-side .contact-design-details-heading{font-size:1.7rem}
.contact-map-layout-side .contact-design-details-text{display:none}
.contact-map-layout-side .contact-details{grid-template-columns:repeat(2,minmax(0,1fr));display:grid;gap:6px 20px;margin-top:20px}

.contact-card-grid-intro{max-width:820px;margin-bottom:42px}
.contact-card-grid-intro h2{font-size:clamp(2.7rem,4.5vw,5.2rem);line-height:1.02;margin-top:12px}
.contact-card-grid-intro .lead{margin-top:18px;max-width:720px}
.contact-mini-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:34px}
.contact-mini-card{padding:24px;display:grid;grid-template-columns:32px minmax(0,1fr);grid-template-areas:"icon label" "icon value";column-gap:12px;align-items:start;text-decoration:none}
.contact-mini-card .contact-icon-wrap{grid-area:icon}
.contact-mini-card small{grid-area:label;text-transform:uppercase;letter-spacing:.1em;font-size:.68rem;font-weight:800;color:var(--muted)}
.contact-mini-card strong{grid-area:value;margin-top:5px;color:inherit;overflow-wrap:anywhere}
.contact-card-grid-form{max-width:1040px}

.contact-image-led-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(480px,.95fr);gap:34px;align-items:stretch}
.contact-image-led-media{position:relative;min-height:720px;overflow:hidden;background:linear-gradient(135deg,var(--brand-primary),var(--navy-2))}
.contact-image-led-media>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.contact-image-placeholder{position:absolute;inset:0;background:linear-gradient(135deg,var(--brand-primary),var(--navy-2))}
.contact-image-led-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.08) 25%,rgba(0,0,0,.72) 100%)}
.contact-image-led-info{position:absolute;left:28px;right:28px;bottom:28px;z-index:2;max-width:610px}
.contact-layout--image-led .contact-surface--solid.contact-image-led-info{background:rgba(255,255,255,.94)}
.contact-layout--image-led .contact-design-form{align-self:stretch}

.contact-layout--immersive{min-height:760px;display:flex;align-items:center}
.contact-layout--immersive .contact-design-container{width:100%}
.contact-immersive-grid{display:grid;grid-template-columns:minmax(0,.82fr) minmax(500px,1.18fr);gap:34px;align-items:center}
.contact-layout--immersive .contact-design-info,.contact-layout--immersive .contact-design-form{padding:42px}
.contact-layout--immersive .contact-design-details-heading{font-size:clamp(2.6rem,4vw,4.8rem)}
.contact-layout--immersive .contact-design-details-text{font-size:1.02rem}

@media(max-width:1080px){
  .contact-editorial-grid,.contact-dark-panel,.contact-map-layout-grid,.contact-image-led-grid,.contact-immersive-grid{grid-template-columns:1fr;gap:28px}
  .contact-layout--editorial-split .contact-design-form{max-width:none;justify-self:stretch}
  .contact-dark-panel{padding:20px}.contact-dark-panel .contact-design-info{border-right:1px solid rgba(255,255,255,.14)}
  .contact-image-led-media{min-height:560px}
  .contact-mini-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .contact-fullwidth-intro .contact-details{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
  .contact-spacing--compact,.contact-spacing--standard,.contact-spacing--spacious{padding-top:68px;padding-bottom:68px}
  .contact-design-info,.contact-layout--immersive .contact-design-info,.contact-layout--immersive .contact-design-form{padding:26px}
  .contact-fullwidth-intro{padding:26px;margin-bottom:24px}
  .contact-fullwidth-intro .contact-design-details-copy{grid-template-columns:1fr;gap:18px}
  .contact-fullwidth-intro .contact-details,.contact-map-layout-side .contact-details,.contact-mini-grid{grid-template-columns:1fr}
  .contact-fullwidth-form .form-card{padding:26px}
  .contact-dark-panel{padding:12px}.contact-dark-panel .contact-design-info{padding:28px}
  .contact-image-led-media{min-height:500px}.contact-image-led-info{left:16px;right:16px;bottom:16px}
  .contact-map-layout-frame .home-map-frame{min-height:330px}
  .contact-layout--immersive{min-height:0}
  .contact-surface--glass{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
}
/* ==========================================================
   V2.18.23 — Contact long-value mobile containment hotfix
   Long, unbroken contact values such as email addresses must stay inside
   every Contact layout without shrinking the shared contact typography.
   ========================================================== */
.contact-design-info,
.contact-design-details-copy,
.contact-design-info .contact-details,
.contact-design-info .contact-detail,
.contact-card .contact-details,
.contact-card .contact-detail{
  min-width:0;
  max-width:100%;
}
.contact-design-info .contact-detail,
.contact-card .contact-detail{
  width:100%;
}
.contact-design-info .contact-detail[href^="mailto:"]>span:last-child,
.contact-card .contact-detail[href^="mailto:"]>span:last-child{
  min-width:0;
  max-width:100%;
  overflow-wrap:anywhere;
  word-break:normal;
}

@media(prefers-reduced-transparency:reduce){.contact-surface--glass,.contact-surface--translucent{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}}

/* ==========================================================
   V2.16.63 — Homepage Before & After Comparison
   ========================================================== */
.home-before-after-section{position:relative;overflow:clip;color:var(--ink)}
.home-before-after-bg--white{background:#fff}
.home-before-after-bg--soft{background:var(--soft,#f7f6f3)}
.home-before-after-bg--dark{background:var(--navy-2,#111513);color:#fff}
.home-before-after-spacing--compact{padding:64px 0}
.home-before-after-spacing--standard{padding:96px 0}
.home-before-after-spacing--spacious{padding:132px 0}
.home-before-after-outer{position:relative}
.home-before-after-outer--narrow{max-width:1120px}
.home-before-after-copy{max-width:820px;margin:0 0 42px}
.home-before-after-copy .eyebrow{margin-bottom:14px}
.home-before-after-copy h2{font-size:clamp(2.65rem,5vw,5.6rem);line-height:.98;letter-spacing:-.045em;margin:0;max-width:980px}
.home-before-after-body{margin-top:20px;max-width:760px}
.home-before-after-body p{margin:0;color:var(--muted);font-size:clamp(1rem,1.35vw,1.18rem);line-height:1.7}
.home-before-after-body p+p{margin-top:14px}
.home-before-after-bg--dark .home-before-after-body p{color:rgba(255,255,255,.72)}
.home-before-after-bg--dark .home-before-after-copy .eyebrow{color:color-mix(in srgb,var(--brand-accent) 72%,#fff)}
.home-before-after-figure{margin:0;min-width:0}
.home-before-after-stage{position:relative;isolation:isolate;overflow:hidden;background:#1b1d1c;touch-action:pan-y;user-select:none;-webkit-user-select:none;--ba-line:rgba(255,255,255,.96)}
.home-before-after-ratio--cinematic .home-before-after-stage{aspect-ratio:21/9}
.home-before-after-ratio--wide .home-before-after-stage{aspect-ratio:16/9}
.home-before-after-ratio--standard .home-before-after-stage{aspect-ratio:4/3}
.home-before-after-ratio--square .home-before-after-stage{aspect-ratio:1/1}
.home-before-after-ratio--portrait .home-before-after-stage{aspect-ratio:4/5;max-height:820px;margin-inline:auto}
.home-before-after-frame--square .home-before-after-stage{border-radius:0}
.home-before-after-frame--soft .home-before-after-stage{border-radius:18px}
.home-before-after-frame--rounded .home-before-after-stage{border-radius:38px}
.home-before-after-layout--full-bleed-feature .home-before-after-stage{border-radius:0;aspect-ratio:auto;min-height:min(78vh,860px)}
.home-before-after-layout--full-bleed-feature.home-before-after-ratio--cinematic .home-before-after-stage{min-height:min(66vh,720px)}
.home-before-after-layer{position:absolute;inset:0;z-index:1}
.home-before-after-layer img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.home-before-after-layer--after{z-index:2;clip-path:inset(0 0 0 var(--ba-pos));will-change:clip-path}
.home-before-after-tint{position:absolute;inset:0;z-index:3;pointer-events:none}
.home-before-after-tint--subtle .home-before-after-tint{background:rgba(24,24,22,.08)}
.home-before-after-tint--palette .home-before-after-tint{background:color-mix(in srgb,var(--brand-primary) 17%,transparent);mix-blend-mode:multiply}
.home-before-after-layout--full-bleed-feature .home-before-after-stage::after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;background:linear-gradient(90deg,rgba(0,0,0,.62) 0%,rgba(0,0,0,.24) 38%,rgba(0,0,0,.03) 67%,rgba(0,0,0,.16) 100%)}
.home-before-after-label{position:absolute;top:24px;z-index:6;padding:9px 13px;background:rgba(16,18,17,.82);color:#fff;border:1px solid rgba(255,255,255,.18);font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);pointer-events:none}
.home-before-after-label--before{left:24px}
.home-before-after-label--after{right:24px}
.home-before-after-divider{position:absolute;left:var(--ba-pos);top:0;bottom:0;z-index:6;width:2px;background:var(--ba-line);transform:translateX(-1px);box-shadow:0 0 0 1px rgba(0,0,0,.08);pointer-events:none;will-change:left}
.home-before-after-handle{position:absolute;left:50%;top:50%;width:58px;height:58px;border-radius:50%;transform:translate(-50%,-50%);display:grid;place-items:center;background:var(--brand-accent);color:var(--ink);border:2px solid rgba(255,255,255,.96);box-shadow:0 8px 28px rgba(0,0,0,.25);font-size:1.25rem;line-height:1;font-weight:800;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}
.home-before-after-handle span{transform:translateY(-1px)}
.home-before-after-handle--circle .home-before-after-handle{background:#fff;color:#111}
.home-before-after-handle--minimal .home-before-after-handle{width:22px;height:54px;border-radius:999px;background:#fff;color:transparent;border:1px solid rgba(0,0,0,.14);box-shadow:0 4px 18px rgba(0,0,0,.2)}
.home-before-after-range{position:absolute;inset:0;z-index:7;width:100%;height:100%;margin:0;opacity:.001;cursor:ew-resize;appearance:none;-webkit-appearance:none;background:transparent}
.home-before-after-range::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:64px;height:64px;cursor:ew-resize}
.home-before-after-range::-moz-range-thumb{width:64px;height:64px;border:0;background:transparent;cursor:ew-resize}
.home-before-after-range:focus-visible{opacity:.01;outline:3px solid color-mix(in srgb,var(--brand-accent) 80%,#fff);outline-offset:-7px}
.home-before-after-stage:hover .home-before-after-handle{transform:translate(-50%,-50%) scale(1.05);box-shadow:0 10px 34px rgba(0,0,0,.3)}
.home-before-after-caption{display:flex;gap:10px 18px;flex-wrap:wrap;align-items:baseline;padding-top:14px;color:var(--muted);font-size:.9rem}
.home-before-after-caption strong{color:var(--ink)}
.home-before-after-bg--dark .home-before-after-caption{color:rgba(255,255,255,.62)}
.home-before-after-bg--dark .home-before-after-caption strong{color:#fff}

.home-before-after-layout--contained-wide .home-before-after-copy{max-width:720px}
.home-before-after-layout--framed-premium .home-before-after-figure{padding:14px;background:#fff;border:1px solid color-mix(in srgb,var(--brand-border) 72%,transparent);box-shadow:0 30px 80px rgba(18,20,19,.12)}
.home-before-after-layout--framed-premium.home-before-after-bg--dark .home-before-after-figure{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.14)}
.home-before-after-layout--framed-premium .home-before-after-caption{padding:16px 6px 4px}
.home-before-after-editorial-grid{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.28fr);gap:72px;align-items:center}
.home-before-after-editorial-grid .home-before-after-copy{margin:0;max-width:560px}
.home-before-after-editorial-grid .home-before-after-copy h2{font-size:clamp(2.8rem,4.4vw,5.2rem)}
.home-before-after-layout--full-bleed-feature{padding-left:0;padding-right:0}
.home-before-after-layout--full-bleed-feature .home-before-after-outer{width:100%}
.home-before-after-layout--full-bleed-feature .home-before-after-figure{position:relative}
.home-before-after-layout--full-bleed-feature .home-before-after-copy--overlay{position:absolute;z-index:9;left:max(28px,calc((100vw - 1280px)/2));bottom:clamp(34px,6vw,90px);max-width:min(620px,calc(100vw - 56px));margin:0;color:#fff;pointer-events:none}
.home-before-after-layout--full-bleed-feature .home-before-after-copy--overlay .eyebrow{color:color-mix(in srgb,var(--brand-accent) 72%,#fff)}
.home-before-after-layout--full-bleed-feature .home-before-after-copy--overlay h2{color:#fff;text-shadow:0 2px 28px rgba(0,0,0,.25)}
.home-before-after-layout--full-bleed-feature .home-before-after-copy--overlay .home-before-after-body p{color:rgba(255,255,255,.84)}
.home-before-after-layout--full-bleed-feature .home-before-after-caption{padding-left:max(28px,calc((100vw - 1280px)/2));padding-right:max(28px,calc((100vw - 1280px)/2))}
.home-before-after-layout--full-bleed-feature .home-before-after-label{top:30px}

.home-before-after-stage.is-hinting .home-before-after-handle{animation:tb-before-after-hint .9s ease-in-out 1}
@keyframes tb-before-after-hint{0%,100%{transform:translate(-50%,-50%)}35%{transform:translate(calc(-50% - 9px),-50%)}70%{transform:translate(calc(-50% + 9px),-50%)}}

@media(max-width:980px){
  .home-before-after-editorial-grid{grid-template-columns:1fr;gap:34px}
  .home-before-after-editorial-grid .home-before-after-copy{max-width:760px}
  .home-before-after-layout--full-bleed-feature .home-before-after-stage{min-height:680px}
}
@media(max-width:700px){
  .home-before-after-spacing--compact{padding:48px 0}
  .home-before-after-spacing--standard{padding:68px 0}
  .home-before-after-spacing--spacious{padding:86px 0}
  .home-before-after-copy{margin-bottom:28px}
  .home-before-after-copy h2{font-size:clamp(2.2rem,11vw,3.7rem)}
  .home-before-after-ratio--cinematic .home-before-after-stage,.home-before-after-ratio--wide .home-before-after-stage{aspect-ratio:4/3}
  .home-before-after-frame--soft .home-before-after-stage{border-radius:12px}
  .home-before-after-frame--rounded .home-before-after-stage{border-radius:22px}
  .home-before-after-layout--framed-premium .home-before-after-figure{padding:8px}
  .home-before-after-handle{width:52px;height:52px}
  .home-before-after-label{top:14px;padding:7px 10px;font-size:.65rem}
  .home-before-after-label--before{left:14px}.home-before-after-label--after{right:14px}
  .home-before-after-layout--full-bleed-feature .home-before-after-stage{min-height:620px;aspect-ratio:auto}
  .home-before-after-layout--full-bleed-feature .home-before-after-copy--overlay{left:22px;right:22px;bottom:30px;max-width:none}
  .home-before-after-layout--full-bleed-feature .home-before-after-caption{padding-left:22px;padding-right:22px}
}
@media(prefers-reduced-motion:reduce){.home-before-after-stage.is-hinting .home-before-after-handle{animation:none!important}}


/* ==========================================================
   V2.16.64 Footer Customisation
   Independent colour, social position and badge presentation.
   ========================================================== */
.footer.footer--premium{
  background:var(--tb-footer-bg,color-mix(in srgb,var(--brand-dark) 92%,#000));
  color:color-mix(in srgb,var(--tb-footer-fg,#fff) 72%,transparent);
}
.footer.footer--premium .footer-intro{border-bottom-color:color-mix(in srgb,var(--tb-footer-fg,#fff) 14%,transparent)}
.footer.footer--premium .footer-intro h2,
.footer.footer--premium .footer-phone strong,
.footer.footer--premium .footer-brand,
.footer.footer--premium .brand{color:var(--tb-footer-fg,#fff)}
.footer.footer--premium .footer-phone span,
.footer.footer--premium h4{color:color-mix(in srgb,var(--tb-footer-fg,#fff) 58%,transparent)}
.footer.footer--premium .footer-grid a,
.footer.footer--premium .footer-grid p,
.footer.footer--premium .footer-service-label{color:color-mix(in srgb,var(--tb-footer-fg,#fff) 76%,transparent)}
.footer.footer--premium .footer-grid a:hover,
.footer.footer--premium a:hover{color:var(--brand-accent)}
.footer.footer--premium .footer-bottom{border-top-color:color-mix(in srgb,var(--tb-footer-fg,#fff) 14%,transparent)}
.footer.footer--premium .footer-bottom,
.footer.footer--premium .footer-credit-line,
.footer.footer--premium .footer-credit-line>span,
.footer.footer--premium .toolbelt-credit,
.footer.footer--premium .footer-legal-links a,
.footer.footer--premium .footer-legal-links button,
.footer.footer--premium .concept-note{color:color-mix(in srgb,var(--tb-footer-fg,#fff) 72%,transparent)!important}
.footer.footer--premium .footer-credit-separator{color:color-mix(in srgb,var(--tb-footer-fg,#fff) 34%,transparent)}
.footer.footer--premium .toolbelt-credit:hover,
.footer.footer--premium .footer-legal-links a:hover,
.footer.footer--premium .footer-legal-links button:hover{color:var(--brand-accent)!important}

.footer-socials--square a{border-radius:0}
.footer-socials--round a{border-radius:999px}
.footer-socials--bare{gap:12px}
.footer-socials--bare a{
  width:30px;height:30px;border:0!important;background:transparent!important;
  color:color-mix(in srgb,var(--tb-footer-fg,#fff) 82%,transparent)!important;
}
.footer-socials--bare a:hover{
  border:0!important;background:transparent!important;color:var(--brand-accent)!important;
}
.footer-contact-block .footer-socials{margin-top:18px}
.footer.footer--premium .footer-socials:not(.footer-socials--bare) a{
  border-color:color-mix(in srgb,var(--tb-footer-fg,#fff) 18%,transparent);
  color:color-mix(in srgb,var(--tb-footer-fg,#fff) 84%,transparent)!important;
  background:color-mix(in srgb,var(--tb-footer-fg,#fff) 3%,transparent);
}
.footer.footer--premium .footer-socials:not(.footer-socials--bare) a:hover{
  border-color:var(--brand-accent);background:var(--brand-accent);color:var(--brand-accent-contrast)!important;
}

/* ================================================================
   V2.18.4 Large Open Quote — centre-focus scroll fade
   The frameless single-review treatment reaches full prominence as its
   testimonial crosses the viewport centre, then eases away symmetrically.
   JS only applies this state after enhancement so no-JS remains readable.
   ================================================================ */
.home-premium .home-reviews--open-quote .testimonial.tb-open-quote-scroll-focus{
  opacity:var(--tb-open-quote-opacity,1);
  transform:translate3d(0,var(--tb-open-quote-y,0px),0) scale(var(--tb-open-quote-scale,1));
  transform-origin:center center;
  will-change:opacity,transform;
}
/* V2.18.11 — with one Large Open Quote, external review proof is part of the
   same visual composition and therefore follows the testimonial's exact
   scroll-focus opacity rather than remaining fully opaque underneath it. */
.home-premium .home-reviews--open-quote.home-reviews-count-1 .review-proof.tb-open-quote-scroll-focus-companion{
  opacity:var(--tb-open-quote-opacity,1);
  will-change:opacity;
}
@media (prefers-reduced-motion:reduce){
  .home-premium .home-reviews--open-quote .testimonial.tb-open-quote-scroll-focus,
  .home-premium .home-reviews--open-quote.home-reviews-count-1 .review-proof.tb-open-quote-scroll-focus-companion{
    opacity:1!important;
    transform:none!important;
    will-change:auto;
  }
}


/* ==========================================================
   V2.18.14 — Final CTA Motion + Edge Decoration Controls
   ========================================================== */
.cta--premium.cta-divider--off{border-bottom:0}
.cta--premium.cta-divider--on{border-bottom:1px solid var(--brand-border)}

.cta--premium.cta-decoration-colour--auto,
.cta--premium.cta-decoration-colour--accent{--cta-decoration-color:var(--brand-accent)}
.cta--premium.cta-decoration-colour--primary{--cta-decoration-color:var(--brand-primary)}
.cta--premium.cta-decoration-colour--secondary{--cta-decoration-color:var(--brand-secondary)}

.cta--premium .cta-accent{background:var(--cta-decoration-color,var(--brand-accent))}
.cta--premium.cta-decoration-colour--auto .cta-accent,
.cta--premium.cta-decoration-colour--accent .cta-accent,
.cta--premium.cta-decoration-colour--primary .cta-accent,
.cta--premium.cta-decoration-colour--secondary .cta-accent{background:var(--cta-decoration-color,var(--brand-accent))}
.cta-edge-decoration{
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:var(--cta-decoration-depth,clamp(220px,18vw,340px));
  height:100%;
  color:var(--cta-decoration-color,var(--brand-accent));
  pointer-events:none;
  z-index:0;
  overflow:hidden;
  opacity:.94;
}
.cta-decoration-depth--small{--cta-decoration-depth:clamp(160px,12vw,230px)}
.cta-decoration-depth--medium{--cta-decoration-depth:clamp(220px,18vw,340px)}
.cta-decoration-depth--large{--cta-decoration-depth:clamp(290px,24vw,460px)}
.cta-edge-decoration svg{display:block;width:100%;height:100%;overflow:hidden}
.cta-decoration-fill{fill:currentColor}
.cta-decoration-fill--soft{opacity:.38}
.cta-edge-decoration--arrowhead{opacity:.96}
.cta-edge-decoration--chevron{opacity:.88}
.cta-edge-decoration--angled{opacity:.86}
.cta-edge-decoration--bracket{opacity:.78}

/* The image can opt into the same trigger/timing as Final CTA content while
   remaining fade-only. The stronger selector intentionally beats the normal
   cta-has-image opacity rule without changing the overlay or content geometry. */
.cta--premium.cta-has-image .cta-media[data-tb-motion="entrance"].tb-motion-pending{opacity:0}
.cta--premium.cta-has-image .cta-media[data-tb-motion="entrance"].tb-motion-pending.is-motion-visible{opacity:1}
.cta--premium.cta-has-image .cta-media[data-tb-motion="entrance"].tb-motion-pending.is-motion-leaving{opacity:0}

@media(max-width:900px){
  .cta-decoration-depth--small{--cta-decoration-depth:130px}
  .cta-decoration-depth--medium{--cta-decoration-depth:175px}
  .cta-decoration-depth--large{--cta-decoration-depth:220px}
  .cta-edge-decoration{opacity:.78}
}
@media(max-width:680px){
  .cta-edge-decoration{display:none}
}

/* ==========================================================
   V2.18.22 — Toolbelt Unified Homepage Typography Normalization
   One coherent below-the-fold hierarchy. Major sections now share the same
   Section heading tier by default; Display remains an explicit opt-in. The
   hierarchy also reaches compact homepage modules that previously escaped it,
   including Trust Strip copy, About checks, project captions, Areas and FAQs.
   Hero, testimonial quote, buttons, navigation, footer and internal pages stay
   intentionally independent.
   ========================================================== */

/* Utility eyebrow: normalised only below the Hero. */
.home-premium.home-typography--unified > section:not(.hero) .eyebrow{
  font-size:var(--tb-home-eyebrow-size,12px);
  line-height:1.2;
  letter-spacing:.16em;
}

/* Standard section-heading tier — recommended for every major homepage section. */
.home-premium.home-typography--unified.home-type-role--services-section .home-services-section .section-head h2,
.home-premium.home-typography--unified.home-type-role--services-section .home-services-section .services-section-header h2,
.home-premium.home-typography--unified.home-type-role--about-section #about .about-copy h2,
.home-premium.home-typography--unified.home-type-role--projects-section .home-projects-section .section-head h2,
.home-premium.home-typography--unified.home-type-role--why-section .why-copy h2,
.home-premium.home-typography--unified.home-type-role--why-section .why-editorial-head h2,
.home-premium.home-typography--unified.home-type-role--why-section .why-benefits-copy h2,
.home-premium.home-typography--unified.home-type-role--why-section .why-statement-intro h2,
.home-premium.home-typography--unified.home-type-role--reviews-section .home-reviews .section-head h2,
.home-premium.home-typography--unified.home-type-role--feature-section .home-feature-copy h2,
.home-premium.home-typography--unified.home-type-role--areas-section .home-local-section--areas .home-local-header h2,
.home-premium.home-typography--unified.home-type-role--areas-section .home-local-panel--areas .home-local-header h2,
.home-premium.home-typography--unified.home-type-role--faqs-section .home-local-section--faqs .home-local-header h2,
.home-premium.home-typography--unified.home-type-role--faqs-section .home-local-panel--faqs .home-local-header h2,
.home-premium.home-typography--unified.home-type-role--map-section .home-map-copy h2,
.home-premium.home-typography--unified.home-type-role--contact-section .one-page-contact-section .section-head h2,
.home-premium.home-typography--unified.home-type-role--final-cta-section .cta--premium .cta-copy h2{
  font-size:clamp(34px,3.6vw,var(--tb-home-section-heading-max,52px));
  line-height:var(--tb-home-section-line-height,1.04);
}

/* Display / statement tier remains available, but is never assigned by default. */
.home-premium.home-typography--unified.home-type-role--services-display .home-services-section .section-head h2,
.home-premium.home-typography--unified.home-type-role--services-display .home-services-section .services-section-header h2,
.home-premium.home-typography--unified.home-type-role--about-display #about .about-copy h2,
.home-premium.home-typography--unified.home-type-role--projects-display .home-projects-section .section-head h2,
.home-premium.home-typography--unified.home-type-role--why-display .why-copy h2,
.home-premium.home-typography--unified.home-type-role--why-display .why-editorial-head h2,
.home-premium.home-typography--unified.home-type-role--why-display .why-benefits-copy h2,
.home-premium.home-typography--unified.home-type-role--why-display .why-statement-intro h2,
.home-premium.home-typography--unified.home-type-role--reviews-display .home-reviews .section-head h2,
.home-premium.home-typography--unified.home-type-role--feature-display .home-feature-copy h2,
.home-premium.home-typography--unified.home-type-role--areas-display .home-local-section--areas .home-local-header h2,
.home-premium.home-typography--unified.home-type-role--areas-display .home-local-panel--areas .home-local-header h2,
.home-premium.home-typography--unified.home-type-role--faqs-display .home-local-section--faqs .home-local-header h2,
.home-premium.home-typography--unified.home-type-role--faqs-display .home-local-panel--faqs .home-local-header h2,
.home-premium.home-typography--unified.home-type-role--map-display .home-map-copy h2,
.home-premium.home-typography--unified.home-type-role--contact-display .one-page-contact-section .section-head h2,
.home-premium.home-typography--unified.home-type-role--final-cta-display .cta--premium .cta-copy h2{
  font-size:clamp(40px,4.6vw,var(--tb-home-display-heading-max,64px));
  line-height:var(--tb-home-display-line-height,.98);
}

/* Shared section-supporting-copy role. Keep the established Toolbelt breathing
   room rather than the tighter experimental product-site rhythm. */
.home-premium.home-typography--unified .home-services-section .section-head .lead,
.home-premium.home-typography--unified .home-services-section .services-section-header__intro,
.home-premium.home-typography--unified #about .about-copy>.lead,
.home-premium.home-typography--unified .home-projects-section .section-head .lead,
.home-premium.home-typography--unified .why-copy>.lead,
.home-premium.home-typography--unified .why-editorial-head>.lead,
.home-premium.home-typography--unified .why-benefits-copy>.lead,
.home-premium.home-typography--unified .why-statement-intro>.lead,
.home-premium.home-typography--unified .home-reviews .section-head .lead,
.home-premium.home-typography--unified .home-map-copy>.lead,
.home-premium.home-typography--unified .home-feature-body,
.home-premium.home-typography--unified .one-page-contact-section .section-head .lead,
.home-premium.home-typography--unified .cta--premium .cta-copy>p{
  font-size:clamp(16px,.96rem + .16vw,var(--tb-home-supporting-max,18px));
  line-height:var(--tb-home-supporting-line-height,1.60);
}

/* Principal service / benefit / project card headings. */
.home-premium.home-typography--unified .service-card h3,
.home-premium.home-typography--unified .service-image-card-copy strong,
.home-premium.home-typography--unified .service-editorial-copy strong,
.home-premium.home-typography--unified .service-alternating-copy h3,
.home-premium.home-typography--unified .service-accordion-item>summary strong,
.home-premium.home-typography--unified .why-section .reason strong,
.home-premium.home-typography--unified .why-overlay-card strong,
.home-premium.home-typography--unified .why-editorial-reasons strong,
.home-premium.home-typography--unified .why-stacked-benefits strong,
.home-premium.home-typography--unified .why-statement-card strong,
.home-premium.home-typography--unified .project-caption strong{
  font-size:clamp(19px,1rem + .34vw,var(--tb-home-card-heading-max,22px));
  line-height:var(--tb-home-card-heading-line-height,1.12);
}

/* Normal card / feature copy. */
.home-premium.home-typography--unified .service-card>p,
.home-premium.home-typography--unified .service-image-card-summary,
.home-premium.home-typography--unified .service-editorial-copy small,
.home-premium.home-typography--unified .service-alternating-copy>p,
.home-premium.home-typography--unified .service-accordion-copy>p,
.home-premium.home-typography--unified .why-section .reason>p,
.home-premium.home-typography--unified .why-overlay-card>p,
.home-premium.home-typography--unified .why-editorial-reasons article>p,
.home-premium.home-typography--unified .why-stacked-benefits article p,
.home-premium.home-typography--unified .why-statement-card>p{
  font-size:clamp(16px,.97rem + .08vw,var(--tb-home-body-max,17px));
  line-height:var(--tb-home-body-line-height,1.55);
}

/* Compact homepage modules that previously sat outside the unified system. */
.home-premium.home-typography--unified .trust-strip .trust-item strong{
  font-size:clamp(18px,1rem + .18vw,var(--tb-home-utility-heading-max,20px));
  line-height:var(--tb-home-card-heading-line-height,1.12);
}
.home-premium.home-typography--unified .trust-strip .trust-item span{
  font-size:clamp(16px,.96rem + .08vw,var(--tb-home-utility-body-max,17px));
  line-height:var(--tb-home-body-line-height,1.55);
}
.home-premium.home-typography--unified #about .check{
  font-size:clamp(15px,.94rem + .06vw,var(--tb-home-utility-body-max,17px));
  line-height:1.45;
}
.home-premium.home-typography--unified .project-caption>span:not(.project-index){
  font-size:clamp(14px,.86rem + .08vw,16px);
  line-height:1.45;
}
.home-premium.home-typography--unified .home-area-editorial strong,
.home-premium.home-typography--unified .home-area-card strong,
.home-premium.home-typography--unified .home-area-map-item strong,
.home-premium.home-typography--unified .home-local-section--areas .area-chip{
  font-size:clamp(15px,.94rem + .06vw,var(--tb-home-utility-body-max,17px));
  line-height:1.35;
}
.home-premium.home-typography--unified .home-local-supporting{
  font-size:clamp(16px,1rem + .16vw,var(--tb-home-supporting-max,18px));
  line-height:var(--tb-home-supporting-line-height,1.60);
}
.home-premium.home-typography--unified .home-faq-content>button,
.home-premium.home-typography--unified .faq>button{
  font-size:clamp(16px,.98rem + .10vw,18px);
  line-height:1.35;
}
.home-premium.home-typography--unified .home-faq-content>p,
.home-premium.home-typography--unified .faq>p{
  font-size:clamp(16px,.97rem + .08vw,var(--tb-home-utility-body-max,17px));
  line-height:var(--tb-home-body-line-height,1.55);
}
.home-premium.home-typography--unified .home-map-location-card strong,
.home-premium.home-typography--unified .home-map-location-card address{
  font-size:clamp(15px,.94rem + .06vw,var(--tb-home-utility-body-max,17px));
  line-height:1.45;
}

@media(max-width:680px){
  .home-premium.home-typography--unified{
    --tb-home-display-heading-mobile-max:44px;
    --tb-home-section-heading-mobile-max:38px;
  }
  .home-premium.home-typography--unified.home-type-role--services-section .home-services-section .section-head h2,
  .home-premium.home-typography--unified.home-type-role--services-section .home-services-section .services-section-header h2,
  .home-premium.home-typography--unified.home-type-role--about-section #about .about-copy h2,
  .home-premium.home-typography--unified.home-type-role--projects-section .home-projects-section .section-head h2,
  .home-premium.home-typography--unified.home-type-role--why-section .why-copy h2,
  .home-premium.home-typography--unified.home-type-role--why-section .why-editorial-head h2,
  .home-premium.home-typography--unified.home-type-role--why-section .why-benefits-copy h2,
  .home-premium.home-typography--unified.home-type-role--why-section .why-statement-intro h2,
  .home-premium.home-typography--unified.home-type-role--reviews-section .home-reviews .section-head h2,
  .home-premium.home-typography--unified.home-type-role--feature-section .home-feature-copy h2,
  .home-premium.home-typography--unified.home-type-role--areas-section .home-local-header h2,
  .home-premium.home-typography--unified.home-type-role--faqs-section .home-local-header h2,
  .home-premium.home-typography--unified.home-type-role--map-section .home-map-copy h2,
  .home-premium.home-typography--unified.home-type-role--contact-section .one-page-contact-section .section-head h2,
  .home-premium.home-typography--unified.home-type-role--final-cta-section .cta--premium .cta-copy h2{
    font-size:clamp(30px,9vw,var(--tb-home-section-heading-mobile-max));
  }

  .home-premium.home-typography--unified.home-type-role--services-display .home-services-section .section-head h2,
  .home-premium.home-typography--unified.home-type-role--services-display .home-services-section .services-section-header h2,
  .home-premium.home-typography--unified.home-type-role--about-display #about .about-copy h2,
  .home-premium.home-typography--unified.home-type-role--projects-display .home-projects-section .section-head h2,
  .home-premium.home-typography--unified.home-type-role--why-display .why-copy h2,
  .home-premium.home-typography--unified.home-type-role--why-display .why-editorial-head h2,
  .home-premium.home-typography--unified.home-type-role--why-display .why-benefits-copy h2,
  .home-premium.home-typography--unified.home-type-role--why-display .why-statement-intro h2,
  .home-premium.home-typography--unified.home-type-role--reviews-display .home-reviews .section-head h2,
  .home-premium.home-typography--unified.home-type-role--feature-display .home-feature-copy h2,
  .home-premium.home-typography--unified.home-type-role--areas-display .home-local-header h2,
  .home-premium.home-typography--unified.home-type-role--faqs-display .home-local-header h2,
  .home-premium.home-typography--unified.home-type-role--map-display .home-map-copy h2,
  .home-premium.home-typography--unified.home-type-role--contact-display .one-page-contact-section .section-head h2,
  .home-premium.home-typography--unified.home-type-role--final-cta-display .cta--premium .cta-copy h2{
    font-size:clamp(34px,10vw,var(--tb-home-display-heading-mobile-max));
  }
}

/* ==========================================================
   V2.18.24 — Contact mobile flow + Trust Strip top alignment
   Prevents tall Image-led Contact panels from being clipped on phones,
   softens contact-detail weight, and aligns Trust Strip copy to the top.
   ========================================================== */

/* Contact-detail rows should read as supporting information rather than
   competing with the Contact heading. Keep labels/numbers together but use
   a calm medium weight across modern, classic and card-grid treatments. */
.contact-design-info .contact-detail,
.contact-card .contact-detail{
  font-weight:500;
}
.contact-design-info .contact-detail--address,
.contact-card .contact-detail--address{
  font-weight:500;
}
.contact-mini-card strong{
  font-weight:500;
}

/* Trust-strip items are equal-height grid cells. Top-anchor the content so a
   wrapped title in one cell cannot make neighbouring cells look vertically
   misaligned or unfinished. Horizontal alignment settings still apply. */
.trust-strip .trust-item{
  justify-content:flex-start;
}
.trust-strip .trust-item--with-icon{
  align-content:start;
}

@media(max-width:700px){
  /* The Image-led Contact card can become taller than the historical 500px
     media stage once mobile/landline/email/address/hours/WhatsApp are present.
     Keep the image and overlay, but put the info panel back into normal flow
     so the stage grows with its content instead of clipping the panel top. */
  .contact-image-led-media{
    display:flex;
    align-items:flex-end;
    min-height:500px;
    padding:16px;
  }
  .contact-image-led-info{
    position:relative;
    left:auto;
    right:auto;
    bottom:auto;
    width:100%;
    max-width:none;
  }
}


/* ==========================================================
   V2.18.27 — Mobile Areas progressive disclosure, safe rebuild
   Pure CSS state: no front-end JavaScript and no CMS runtime dependency.
   ========================================================== */
.home-areas-mobile-state,.home-areas-mobile-toggle{display:none}
@media(max-width:700px){
  .home-areas-mobile-state{
    position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important
  }
  .home-areas-mobile-state:not(:checked) ~ [data-mobile-area-list="1"] [data-mobile-area-extra="1"]{display:none!important}
  .home-areas-mobile-toggle{
    width:100%;min-height:48px;margin-top:18px;padding:12px 16px;border:1px solid var(--line);background:#fff;color:var(--brand-heading);
    display:flex;align-items:center;justify-content:center;gap:10px;font:inherit;font-size:.82rem;font-weight:800;line-height:1.2;cursor:pointer
  }
  .home-areas-mobile-state:focus-visible ~ .home-areas-mobile-toggle{outline:3px solid color-mix(in srgb,var(--brand-accent) 35%,transparent);outline-offset:3px}
  .home-areas-mobile-toggle-less{display:none}
  .home-areas-mobile-state:checked ~ .home-areas-mobile-toggle .home-areas-mobile-toggle-more{display:none}
  .home-areas-mobile-state:checked ~ .home-areas-mobile-toggle .home-areas-mobile-toggle-less{display:inline}
  .home-areas-mobile-toggle-icon{font-size:1.12rem;line-height:1;transition:transform .2s ease}
  .home-areas-mobile-state:checked ~ .home-areas-mobile-toggle .home-areas-mobile-toggle-icon{transform:rotate(45deg)}
  .home-local-surface--dark .home-areas-mobile-toggle{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.18);color:#fff}
  .home-areas-mobile-toggle+.home-local-action{margin-top:12px}
}
@media(prefers-reduced-motion:reduce){.home-areas-mobile-toggle-icon{transition:none}}


/* ================================================================
   V2.18.37 — Paired CTA intrinsic-width polish
   Equal-width pairs now size themselves from the longest button label
   instead of stretching to an arbitrary 720px row. This keeps paired
   actions visually balanced without making short-label buttons oversized.
   ================================================================ */
.tb-paired-cta--balanced .hero-actions.tb-paired-cta-group{
  display:inline-grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  width:fit-content;
  max-width:100%;
  align-items:stretch;
}
.tb-paired-cta--balanced .hero-actions.tb-paired-cta-group :is(.btn,.hero-secondary){
  width:100%;
  min-width:0;
  height:100%;
}
.tb-paired-cta--balanced .cta--premium.cta-buttons--inline .cta-actions.tb-paired-cta-group{
  display:inline-grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  width:fit-content;
  max-width:100%;
  align-items:stretch;
}
.tb-paired-cta--balanced .cta--premium.cta-buttons--inline .cta-actions.tb-paired-cta-group .btn{
  width:100%;
  min-width:0;
  height:100%;
}
@media(max-width:680px){
  .tb-paired-cta--balanced .hero-actions.tb-paired-cta-group,
  .tb-paired-cta--balanced .cta--premium.cta-buttons--inline .cta-actions.tb-paired-cta-group{
    display:grid;
    grid-template-columns:1fr;
    width:100%;
    max-width:none;
  }
}


/* v2.18.38 — controlled, individual Service Page coherent design (opt-in only).
   Rules intentionally live beneath main.tb-service-design-v2, never on shared Case Studies. */
main.tb-service-design-v2{
  --tb-sd-heading:clamp(2rem,3.75vw,3.65rem);
  --tb-sd-copy-width:740px;
  --tb-sd-gap:clamp(26px,4.4vw,68px);
  --tb-sd-space:clamp(68px,7.2vw,106px);
}
main.tb-service-design-v2 > section.section,
main.tb-service-design-v2 > section.case-study-section{padding-top:var(--tb-sd-space);padding-bottom:var(--tb-sd-space)}
main.tb-service-design-v2 > section :is(.container,.case-study-container){max-width:min(1180px,calc(100% - 40px))}
main.tb-service-design-v2 :is(.service-builder-split,.service-detail-grid,.case-study-split){gap:var(--tb-sd-gap)}
main.tb-service-design-v2 .service-builder-split{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
main.tb-service-design-v2 .service-section-head{gap:var(--tb-sd-gap);margin-bottom:clamp(30px,3.3vw,48px);align-items:start}
main.tb-service-design-v2 :is(.service-editorial,.case-study-copy--narrow,.case-study-copy--standard){max-width:var(--tb-sd-copy-width)}
main.tb-service-design-v2 .service-editorial>.service-rich-content{max-width:var(--tb-sd-copy-width)}
main.tb-service-design-v2 :is(.service-builder-copy h2,.service-editorial>h2,.service-section-head h2,.service-inline-cta h2,.case-study-split-copy h2,.case-study-copy h2,.case-study-section-intro h2,.case-study-inline-cta h2,.case-study-split-showcase-copy h2,.case-study-brand-copy h2,.tb-media-showcase-intro h2){font-size:var(--tb-sd-heading);line-height:1.07;letter-spacing:-.045em;text-wrap:balance}
main.tb-service-design-v2 :is(.service-rich-content,.service-rich-content p,.service-builder-copy .service-rich-content,.case-study-section .prose p){font-size:clamp(.95rem,1.1vw,1.03rem);line-height:1.8}
main.tb-service-design-v2 :is(.service-builder-copy>.service-rich-content,.service-editorial>.service-rich-content,.case-study-split-copy .prose,.case-study-copy .prose,.case-study-section-intro .prose){margin-top:clamp(18px,2vw,26px)}
main.tb-service-design-v2 :is(.service-rich-content,.case-study-section .prose){overflow-wrap:anywhere}
main.tb-service-design-v2 .service-builder-media .media-frame{min-height:0;aspect-ratio:4/3}
main.tb-service-design-v2 .service-benefits-grid{gap:16px;border:0;background:transparent}
main.tb-service-design-v2 .service-benefits-grid article{border:1px solid var(--line);border-radius:12px;padding:clamp(24px,2.8vw,36px);min-height:0}
main.tb-service-design-v2 .service-process-grid{gap:16px;border:0}
main.tb-service-design-v2 .service-process-grid article{border:1px solid var(--line);border-radius:12px;margin:0;padding:clamp(24px,2.8vw,36px)}
main.tb-service-design-v2 .service-stats-grid{gap:12px;border:0;background:transparent}
main.tb-service-design-v2 .service-stats-grid>div{border:1px solid var(--line);border-radius:12px;background:#fff}
main.tb-service-design-v2 .case-study-split-media{min-height:0}
main.tb-service-design-v2 .case-study-split-media:not([class*="case-study-aspect--"]) :is(.case-study-frame,img){min-height:0;aspect-ratio:4/3;object-fit:cover}
main.tb-service-design-v2 .service-inline-cta{gap:var(--tb-sd-gap)}
main.tb-service-design-v2 .service-inline-cta-actions{min-width:220px}
main.tb-service-design-v2 .section-dark :is(.service-benefits-grid article,.service-process-grid article,.service-stats-grid>div){border-color:rgba(255,255,255,.16);background:rgba(255,255,255,.045)}
@media(max-width:800px){
  main.tb-service-design-v2{--tb-sd-space:clamp(52px,8vw,76px);--tb-sd-heading:clamp(1.9rem,5.4vw,2.85rem)}
  main.tb-service-design-v2 :is(.service-builder-split,.service-detail-grid,.case-study-split,.service-section-head,.service-inline-cta){grid-template-columns:minmax(0,1fr)}
  main.tb-service-design-v2 :is(.service-benefits-grid,.service-process-grid){grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:620px){
  main.tb-service-design-v2{--tb-sd-space:54px;--tb-sd-heading:clamp(1.8rem,8vw,2.4rem);--tb-sd-gap:26px}
  main.tb-service-design-v2 > section :is(.container,.case-study-container){max-width:calc(100% - 32px)}
  main.tb-service-design-v2 :is(.service-benefits-grid,.service-process-grid){grid-template-columns:minmax(0,1fr)}
  main.tb-service-design-v2 .service-builder-media .media-frame{min-height:0;aspect-ratio:4/3}
  main.tb-service-design-v2 .service-stats-grid>div{border:1px solid var(--line)}
  main.tb-service-design-v2 .service-inline-cta-actions{min-width:0;width:100%}
}

/* V2.18.39 — explicit Rich Text / Editorial content-block placement for Service pages.
   Uses the outer shared container so Left/Right align with other sections, not the viewport.
   Old sections and every Case Study keep the original markup and positioning. */
.tb-service-rich-editorial-frame .tb-service-rich-editorial-content{width:100%;margin-top:0;margin-bottom:0}
.tb-service-rich-editorial-frame .tb-service-rich-editorial-content--left{margin-left:0;margin-right:auto}
.tb-service-rich-editorial-frame .tb-service-rich-editorial-content--right{margin-left:auto;margin-right:0}
.case-study-section--rich-text .case-study-copy.case-study-align--right{text-align:right}

/* V2.18.39 — legacy Rich Text / Editorial positioning. The original centred
   layout has no added class, so existing Service pages remain pixel-identical. */
.service-builder-section--richtext .service-editorial--left{margin-left:0;margin-right:auto}
.service-builder-section--richtext .service-editorial--right{margin-left:auto;margin-right:0}

/* v2.18.41 — coherent Service Process cards: titles and descriptions have distinct roles. */
main.tb-service-design-v2 .service-builder-section--process .service-process-grid h3{margin-top:20px;font-size:clamp(1.04rem,1.5vw,1.25rem);line-height:1.25}
main.tb-service-design-v2 .service-builder-section--process .service-process-grid p{font-size:clamp(.9rem,1vw,1rem);line-height:1.65;font-weight:400;overflow-wrap:anywhere}
main.tb-service-design-v2 .service-builder-section--process .service-process-grid article{min-width:0}

/* V2.18.43 — keep the copy-to-action relationship tight in opt-in stacked
   Service CTAs. The coherent page-level grid gap otherwise overrides the CTA's
   own spacing rule; rich-text's last paragraph also adds trailing margin.
   Excludes original split CTA, legacy Service design and all shared CTAs. */
main.tb-service-design-v2 .service-builder-section--cta .service-inline-cta:is(.service-inline-cta--left,.service-inline-cta--center,.service-inline-cta--right){gap:clamp(16px,2vw,26px)}
main.tb-service-design-v2 .service-builder-section--cta .service-inline-cta:is(.service-inline-cta--left,.service-inline-cta--center,.service-inline-cta--right) .service-inline-cta-copy .service-rich-content>:last-child{margin-bottom:0}

/* V2.18.42 — scoped Service CTA composition. No existing CTA changes until
   a different layout / arrangement or an image backdrop is explicitly selected. */
.service-builder-section--cta.tb-service-cta-with-image{position:relative;isolation:isolate;overflow:hidden}
.service-builder-section--cta.tb-service-cta-with-image>.container{position:relative;z-index:1}
.tb-service-cta-backdrop{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.tb-service-cta-backdrop>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:var(--tb-cta-image-opacity,1)}
.tb-service-cta-overlay{position:absolute;inset:0;opacity:var(--tb-cta-overlay-opacity,.45)}
.tb-service-cta-overlay--none{display:none}
.tb-service-cta-overlay--dark{background:#091a26}
.tb-service-cta-overlay--light{background:#fff}
.tb-service-cta-overlay--brand{background:var(--brand-primary)}
.service-builder-section--cta.tb-service-cta-text-light :is(.eyebrow,h2,.service-rich-content,.service-rich-content p,.service-rich-content strong){color:#fff}
.service-builder-section--cta.tb-service-cta-text-light .service-rich-content{color:rgba(255,255,255,.91)}
.service-builder-section--cta.tb-service-cta-with-image:not(.tb-service-cta-text-light) :is(.eyebrow,h2,.service-rich-content,.service-rich-content p){color:var(--heading)}
.service-builder-section--cta .tb-service-cta-btn-light{background:#fff!important;color:#142334!important;border-color:rgba(0,0,0,.09)!important}
.service-builder-section--cta .tb-service-cta-btn-light:hover{background:#f1f3f5!important}
.service-builder-section--cta.tb-service-cta-text-light .btn-outline{background:transparent;color:#fff;border-color:rgba(255,255,255,.7)}
.service-inline-cta--left,.service-inline-cta--center,.service-inline-cta--right{display:flex;flex-direction:column;align-items:flex-start;gap:clamp(22px,3vw,38px)}
.service-inline-cta--center{align-items:center;text-align:center}
.service-inline-cta--right{align-items:flex-end;text-align:right}
.service-inline-cta--left>.service-inline-cta-copy,.service-inline-cta--center>.service-inline-cta-copy,.service-inline-cta--right>.service-inline-cta-copy{max-width:870px;width:100%}
.service-inline-cta--center .service-rich-content{margin-left:auto;margin-right:auto}
.service-inline-cta--right .service-rich-content{margin-left:auto;margin-right:0}
.service-inline-cta--left .service-rich-content{margin-left:0;margin-right:auto}
.service-inline-cta--left>.service-inline-cta-actions,.service-inline-cta--center>.service-inline-cta-actions,.service-inline-cta--right>.service-inline-cta-actions{width:auto;min-width:min(290px,100%);max-width:100%}
.service-inline-cta--actions-row>.service-inline-cta-actions{flex-direction:row;flex-wrap:wrap;width:auto;min-width:0;align-items:stretch}
.service-inline-cta--actions-row>.service-inline-cta-actions>.btn{flex:1 1 165px;white-space:normal}
main.tb-service-design-v2 > section.tb-service-cta-space-compact{padding-top:clamp(36px,5vw,60px);padding-bottom:clamp(36px,5vw,60px)}
main.tb-service-design-v2 > section.tb-service-cta-space-spacious{padding-top:clamp(90px,11vw,150px);padding-bottom:clamp(90px,11vw,150px)}
@media(max-width:680px){
  .service-inline-cta--left,.service-inline-cta--center,.service-inline-cta--right{align-items:stretch;text-align:left}
  .service-inline-cta--center .service-rich-content,.service-inline-cta--right .service-rich-content{margin-left:0;margin-right:0}
  .service-inline-cta--actions-row>.service-inline-cta-actions{width:100%}
  .service-inline-cta--actions-row>.service-inline-cta-actions>.btn{flex:1 1 100%}
  .service-builder-section--cta .service-inline-cta-actions{min-width:0;width:100%}
  .service-builder-section--cta .service-inline-cta-actions .btn{white-space:normal}
}

/* v2.18.44 — controlled Service Page rhythm and composition presets.
   All selectors scoped to opt-in coherent Service Pages. Existing defaults retain
   the unchanged --tb-sd-space inherited from v2.18.38. */
main.tb-service-design-v2.tb-service-rhythm-compact{--tb-sd-space:clamp(36px,4.3vw,58px)}
main.tb-service-design-v2.tb-service-rhythm-standard{--tb-sd-space:clamp(54px,5.6vw,78px)}
main.tb-service-design-v2.tb-service-rhythm-spacious{--tb-sd-space:clamp(80px,8vw,118px)}
main.tb-service-design-v2>section.tb-service-space-compact{padding-top:clamp(36px,4.3vw,58px);padding-bottom:clamp(36px,4.3vw,58px)}
main.tb-service-design-v2>section.tb-service-space-standard{padding-top:clamp(54px,5.6vw,78px);padding-bottom:clamp(54px,5.6vw,78px)}
main.tb-service-design-v2>section.tb-service-space-spacious{padding-top:clamp(80px,8vw,118px);padding-bottom:clamp(80px,8vw,118px)}
/* Keep manual CTA vertical-spacing option when no per-section override is selected. */
main.tb-service-design-v2>section.tb-service-section-custom{background:var(--tb-section-custom-bg,#fff);color:var(--tb-section-custom-text,#142334)}
main.tb-service-design-v2>section.tb-service-section-custom :is(h2,h3,.service-faq-list summary,.service-rich-content strong){color:var(--tb-section-custom-text,#142334)}
main.tb-service-design-v2>section.tb-service-section-custom :is(.service-rich-content,.service-rich-content p,.service-section-head .service-rich-content,.service-process-grid p,.service-benefits-grid p){color:var(--tb-section-custom-text,#142334)}
main.tb-service-design-v2>section.tb-service-section-with-image{position:relative;isolation:isolate;overflow:hidden}
main.tb-service-design-v2>section.tb-service-section-with-image>.container{position:relative;z-index:1}
.tb-service-section-backdrop{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.tb-service-section-backdrop>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:var(--tb-section-image-opacity,1)}
.tb-service-section-overlay{position:absolute;inset:0;opacity:var(--tb-section-overlay-opacity,.55)}
.tb-service-section-overlay--none{display:none}
.tb-service-section-overlay--dark{background:#061824}
.tb-service-section-overlay--light{background:#fff}
.tb-service-section-overlay--brand{background:var(--brand-primary)}
main.tb-service-design-v2>section.tb-service-section-text-light :is(.eyebrow,h2,h3,.service-rich-content,.service-rich-content p,.service-rich-content strong,.service-faq-list summary,.service-section-head .service-rich-content){color:#fff}
main.tb-service-design-v2>section.tb-service-section-text-light :is(.service-process-grid p,.service-benefits-grid p,.service-faq-answer){color:rgba(255,255,255,.9)}
main.tb-service-design-v2>section.tb-service-section-text-dark :is(.eyebrow,h2,h3,.service-rich-content,.service-rich-content p,.service-rich-content strong,.service-faq-list summary,.service-section-head .service-rich-content,.service-faq-answer){color:#142334}
main.tb-service-design-v2>section.tb-service-section-with-image .service-builder-split--text-only{grid-template-columns:minmax(0,1fr);max-width:900px}
main.tb-service-design-v2>section.tb-service-section-with-image :is(.service-process-grid article,.service-benefits-grid article,.service-stats-grid>div){background:rgba(255,255,255,.94);color:#142334}
main.tb-service-design-v2>section.tb-service-section-with-image :is(.service-process-grid article h3,.service-benefits-grid article h3,.service-process-grid article p,.service-benefits-grid article p,.service-stats-grid>div span){color:#142334}
main.tb-service-design-v2>section.tb-service-section-text-light .service-faq-list details{border-color:rgba(255,255,255,.3)}
main.tb-service-design-v2 .service-process-grid.tb-service-process-cols-two{grid-template-columns:repeat(2,minmax(0,1fr))}
main.tb-service-design-v2 .service-process-grid.tb-service-process-cols-three{grid-template-columns:repeat(3,minmax(0,1fr))}
main.tb-service-design-v2 .service-process-grid.tb-service-process-cols-four{grid-template-columns:repeat(4,minmax(0,1fr))}
/* Match taller text column by letting the framed image fill its grid track.
   Grid stretch is deterministic, responsive and does not need JS measurements. */
@media(min-width:801px){
 main.tb-service-design-v2 .service-builder-split--media-match{align-items:stretch}
 main.tb-service-design-v2 .service-builder-split--media-match .service-builder-media{display:flex;min-height:0;min-width:0}
 main.tb-service-design-v2 .service-builder-split--media-match .service-builder-media>.tb-image-frame{flex:1;min-height:100%;height:auto;display:flex;flex-direction:column}
 main.tb-service-design-v2 .service-builder-split--media-match .service-builder-media .tb-image-frame-surface{flex:1;min-height:320px;height:100%;position:relative;aspect-ratio:auto}
 main.tb-service-design-v2 .service-builder-split--media-match .service-builder-media .tb-image-frame-surface>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;aspect-ratio:auto}
}
@media(max-width:1050px){
 main.tb-service-design-v2 .service-process-grid.tb-service-process-cols-four{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:800px){
 main.tb-service-design-v2 .service-process-grid.tb-service-process-cols-three{grid-template-columns:repeat(2,minmax(0,1fr))}
 main.tb-service-design-v2 .service-builder-split--media-match .service-builder-media .tb-image-frame-surface{aspect-ratio:4/3;min-height:0}
}
@media(max-width:620px){
 main.tb-service-design-v2.tb-service-rhythm-compact{--tb-sd-space:34px}
 main.tb-service-design-v2.tb-service-rhythm-standard{--tb-sd-space:48px}
 main.tb-service-design-v2.tb-service-rhythm-spacious{--tb-sd-space:68px}
 main.tb-service-design-v2>section.tb-service-space-compact{padding-top:34px;padding-bottom:34px}
 main.tb-service-design-v2>section.tb-service-space-standard{padding-top:48px;padding-bottom:48px}
 main.tb-service-design-v2>section.tb-service-space-spacious{padding-top:68px;padding-bottom:68px}
 main.tb-service-design-v2 .service-process-grid:is(.tb-service-process-cols-two,.tb-service-process-cols-three,.tb-service-process-cols-four){grid-template-columns:1fr}
}


/* v2.18.49 — Coherent Service Page body typography.
   Share the existing Toolbelt Unified typography supporting/card-body scales
   with opt-in coherent Service Pages only. Main/body, rich editorial, shared
   Case Study-derived prose and FAQ answers follow the supporting-copy tier;
   compact Steps/Benefits cards use the card-body tier. This overrides legacy
   service-only 15px/16px rules without changing the homepage or old pages. */
main.tb-service-design-v2 :is(
  .service-rich-content,
  .service-rich-content p,
  .case-study-section .prose p,
  .case-study-section .prose li,
  .service-faq-answer,
  .inner-hero p
){
  font-size:clamp(16px,calc(.96rem + .16vw),var(--tb-sd-supporting-max,18px));
  line-height:var(--tb-sd-supporting-line-height,1.60);
}
main.tb-service-design-v2 :is(.service-benefits-grid p,.service-process-grid p,.case-study-feature-card p,.case-study-result-card p){
  font-size:clamp(16px,calc(.97rem + .08vw),var(--tb-sd-card-body-max,17px));
  line-height:var(--tb-sd-card-body-line-height,1.55);
}

/* v2.18.51 — administrator-only missing-image audit on individual Service Pages.
   This is never emitted for normal customer/visitor responses. */
.tb-service-audit-toolbar{position:relative;z-index:9;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:12px clamp(18px,4vw,54px);background:#16364a;color:#fff;font-size:14px;line-height:1.45}
.tb-service-audit-toolbar strong{font-weight:800}
.tb-service-audit-toolbar a{color:#fff;text-decoration:underline;text-underline-offset:3px}
.tb-service-audit-slot{box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:7px;width:100%;height:100%;min-height:175px;padding:20px;overflow:hidden;border:2px dashed #b1bfca;border-radius:inherit;background:repeating-linear-gradient(135deg,#f1f5f8,#f1f5f8 14px,#e9eff4 14px,#e9eff4 28px);color:#284657;line-height:1.3;font-family:inherit}
.tb-service-audit-slot svg{width:58px;height:52px;flex:none;opacity:.7}
.tb-service-audit-slot-kicker{display:block;text-transform:uppercase;letter-spacing:.15em;font-size:11px;font-weight:850;color:#586f7c}
.tb-service-audit-slot strong{font-size:clamp(12px,1vw,15px);line-height:1.3;overflow-wrap:anywhere;color:#284657}
.tb-service-audit-primary{min-height:350px;overflow:hidden;border-radius:22px}
.tb-service-audit-primary>.tb-service-audit-slot{min-height:350px}
.tb-service-audit-split-media,.tb-service-audit-split-media>.tb-service-audit-slot{min-height:500px;height:100%;border-radius:22px;overflow:hidden}
.service-builder-split--media-match .tb-service-audit-split-media{min-height:100%;height:100%}
.case-study-split-media>.tb-service-audit-slot{min-height:440px;border-radius:18px}
.case-study-showcase-media>.tb-service-audit-slot{min-height:clamp(240px,36vw,500px)}
.case-study-stack-media>.tb-service-audit-slot{min-height:200px}
.case-study-split-showcase-media>.tb-service-audit-slot{min-height:180px}
.case-study-split-showcase-right>.case-study-split-showcase-media>.tb-service-audit-slot{min-height:430px}
.case-study-split-showcase-logo>.tb-service-audit-slot{min-height:90px}
.case-study-brand-media>.tb-service-audit-slot{min-height:260px}
.case-study-stacked-story-media>.tb-service-audit-slot{min-height:250px}
.case-study-gallery-media>.tb-service-audit-slot,.case-study-image-grid43-media>.tb-service-audit-slot{min-height:100%;height:100%}
.tb-service-audit-backdrop{position:absolute;inset:0;z-index:0;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:.35}
.tb-service-audit-backdrop>.tb-service-audit-slot{min-height:100%;border-radius:0}
.tb-service-audit-hero{position:relative}
.tb-service-audit-hero>.tb-service-audit-slot{position:absolute;z-index:0;top:50%;right:6%;transform:translateY(-50%);width:min(32%,370px);height:190px;min-height:190px;opacity:.67;border-radius:18px}
.tb-service-audit-hero>.container{position:relative;z-index:1}
@media(max-width:980px){.tb-service-audit-split-media,.tb-service-audit-split-media>.tb-service-audit-slot{min-height:330px}.case-study-split-media>.tb-service-audit-slot{min-height:330px}}
@media(max-width:640px){.tb-service-audit-hero>.tb-service-audit-slot{position:relative;inset:auto;transform:none;width:calc(100% - 36px);height:135px;min-height:135px;margin:14px auto 0}.tb-service-audit-hero>.tb-service-audit-slot svg{width:40px;height:36px}.tb-service-audit-split-media,.tb-service-audit-split-media>.tb-service-audit-slot{min-height:260px}.case-study-split-media>.tb-service-audit-slot{min-height:260px}.tb-service-audit-primary,.tb-service-audit-primary>.tb-service-audit-slot{min-height:240px}}

/* Media Showcase audit slots preserve each item's chosen aspect ratio. */
.tb-media-showcase-media>.tb-service-audit-slot{min-height:100%;height:100%;border-radius:0}

/* v2.18.52 — Primary Service introduction controls.
   Existing inline grid and inherited sidebar remain the default. Only a configured
   option adds these classes, so pre-update pages keep their established layout. */
.service-primary-heading{font-size:clamp(2.1rem,3.8vw,3.8rem);line-height:1.08;letter-spacing:-.04em;color:var(--heading);margin:0 0 22px;text-wrap:balance}
.service-detail-grid .service-feature-list--full{grid-column:1/-1;width:100%;margin-top:0;min-width:0}
.service-detail-grid .service-feature-list--full .feature{min-width:0;overflow-wrap:anywhere}
.service-detail-grid .service-feature-list--full.service-feature-list--full-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.service-detail-grid .service-feature-list--full.service-feature-list--full-row{grid-template-columns:repeat(4,minmax(0,1fr))}
main.tb-service-design-v2 .service-primary-heading{font-size:var(--tb-sd-heading);line-height:1.07;letter-spacing:-.045em}
@media(max-width:1050px){.service-detail-grid .service-feature-list--full.service-feature-list--full-row{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.service-detail-grid .service-feature-list--full.service-feature-list--full-grid,.service-detail-grid .service-feature-list--full.service-feature-list--full-row{grid-template-columns:minmax(0,1fr)}.service-primary-heading{font-size:clamp(1.8rem,8vw,2.5rem)}}


/* v2.18.53 — Optional adaptive height for the *primary* Service introduction image.
   Leave all sites on the original aspect ratio until the per-service setting is changed.
   The image tracks the first grid row (the text column), not the full-width cards below. */
@media(min-width:981px){
  .service-detail-grid.service-detail-grid--image-match > .service-media{
    align-self:stretch;display:flex;flex-direction:column;min-height:0;
  }
  .service-detail-grid.service-detail-grid--image-match > .service-media > .service-content-frame{
    flex:1 1 auto;min-height:290px;height:auto;aspect-ratio:auto;
  }
  .service-detail-grid.service-detail-grid--image-match > .service-media > .service-content-frame .tb-image-frame-surface{
    position:absolute;inset:0;
  }
  .service-detail-grid.service-detail-grid--image-match > .service-media > .service-content-frame img{
    width:100%;height:100%;aspect-ratio:auto;object-fit:cover;
  }
}
/* On tablet/mobile the stacked layout must never inherit desktop stretch height. */
@media(max-width:980px){
  .service-detail-grid.service-detail-grid--image-match > .service-media{align-self:auto;display:block}
  .service-detail-grid.service-detail-grid--image-match > .service-media > .service-content-frame{
    height:auto;min-height:0;aspect-ratio:4/3;
  }
}
/* Controlled Service highlight looks; shared generic .feature is never modified. */
.service-detail-grid .service-highlight-style--soft.feature-list{gap:14px}
.service-detail-grid .service-highlight-style--soft .feature{
  border:1px solid color-mix(in srgb,var(--brand-accent) 16%,var(--line));
  background:color-mix(in srgb,var(--brand-light) 40%,#fff);
  border-radius:14px;
  padding:clamp(18px,2vw,27px);
  box-shadow:none;
}
.service-detail-grid .service-highlight-style--accent-top.feature-list{gap:16px}
.service-detail-grid .service-highlight-style--accent-top .feature{
  border:1px solid var(--line);
  border-top:4px solid var(--brand-accent);
  border-radius:10px;
  padding:clamp(18px,2vw,27px);
  background:#fff;
  box-shadow:0 12px 28px color-mix(in srgb,var(--brand-dark) 6%,transparent);
}
.service-detail-grid .service-highlight-style--minimal.feature-list{gap:clamp(14px,2vw,30px)}
.service-detail-grid .service-highlight-style--minimal .feature{
  border:0;border-left:3px solid var(--brand-accent);background:transparent;
  border-radius:0;box-shadow:none;
  padding:10px 8px 10px clamp(16px,1.8vw,26px);
}

/* v2.18.54: Feature / Icon Grid hover lift, opt-in per section.
   Hover-only devices, no new motion for touch or reduced-motion visitors. */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .case-study-feature-hover--lift .case-study-feature-card {
    transition: transform 240ms cubic-bezier(.2,.75,.3,1), box-shadow 240ms ease;
  }
  .case-study-feature-hover--lift .case-study-feature-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 15px 30px color-mix(in srgb, var(--brand-dark) 13%, transparent);
  }
  .case-study-feature-cards--none.case-study-feature-hover--lift .case-study-feature-card:hover {
    box-shadow: none;
  }
}

/* v2.18.55 — controlled premium Process / Steps compositions. Applies only to
   opted-in Coherent Service Pages with explicitly selected process settings. */
main.tb-service-design-v2 .tb-process-composition--centered>.service-section-head{display:block;text-align:center;max-width:880px;margin-inline:auto}
main.tb-service-design-v2 .tb-process-composition--centered>.service-section-head .service-rich-content{max-width:780px;margin-inline:auto}
@media(min-width:1051px){
 main.tb-service-design-v2 .tb-process-composition--aside{display:grid;grid-template-columns:minmax(260px,.75fr) minmax(0,1.65fr);align-items:start;gap:clamp(30px,4vw,74px)}
 main.tb-service-design-v2 .tb-process-composition--aside>.service-section-head{display:block;margin:0;position:sticky;top:110px}
 main.tb-service-design-v2 .tb-process-composition--aside>.service-process-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
main.tb-service-design-v2 .tb-process-cards--soft article{background:var(--tb-process-card-soft,#f5f3ee);border-color:transparent;border-radius:16px}
main.tb-service-design-v2 .tb-process-cards--elevated article{background:#fff;border-color:rgba(33,43,52,.1);border-radius:16px;box-shadow:0 12px 34px rgba(15,30,45,.09)}
main.tb-service-design-v2 .tb-process-cards--minimal article{background:transparent;border:0;border-top:1px solid var(--line);border-radius:0;padding-inline:clamp(12px,2vw,25px)}
main.tb-service-design-v2 .tb-process-cards--accent article{border-top:4px solid var(--brand-accent);border-radius:12px;background:rgba(255,255,255,.055)}
main.tb-service-design-v2 .service-process-grid.tb-process-number--circle b,
main.tb-service-design-v2 .service-process-grid.tb-process-number--outline b{display:inline-grid;place-items:center;width:56px;height:56px;border-radius:50%;margin-bottom:0;font-size:1.15rem;font-weight:800;line-height:1}
main.tb-service-design-v2 .service-process-grid.tb-process-number--circle b{background:var(--brand-accent);color:#fff}
main.tb-service-design-v2 .service-process-grid.tb-process-number--outline b{border:2px solid var(--brand-accent);color:var(--brand-accent)}
main.tb-service-design-v2 .service-process-grid.tb-process-number--watermark article{position:relative;isolation:isolate;padding-top:clamp(96px,7.5vw,112px)}
main.tb-service-design-v2 .service-process-grid.tb-process-number--watermark b{position:absolute;inset:12px auto auto 21px;z-index:-1;font-size:clamp(5rem,8vw,8rem);line-height:.8;opacity:.13;color:var(--brand-accent);font-weight:900;pointer-events:none}
main.tb-service-design-v2 .service-process-grid.tb-process-number--watermark h3{position:relative;z-index:1;margin-top:8px}
main.tb-service-design-v2 .service-process-grid .tb-process-step-icon{display:inline-flex;vertical-align:middle;margin:12px 0 0 12px}
main.tb-service-design-v2 .service-process-grid .tb-process-step-icon .tb-icon{width:24px!important;height:24px!important}
main.tb-service-design-v2 .tb-process-number--watermark .tb-process-step-icon{margin-top:0;margin-left:0}
/* Independent transforms on hover; applied only on true mouse/trackpad devices. */
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 main.tb-service-design-v2 .service-process-grid:is(.tb-process-hover--lift,.tb-process-hover--shadow)>article{transition:transform .25s ease,box-shadow .25s ease;will-change:transform}
 main.tb-service-design-v2 .service-process-grid:is(.tb-process-hover--lift,.tb-process-hover--shadow)>article:hover{transform:translateY(-6px)}
 main.tb-service-design-v2 .service-process-grid.tb-process-hover--shadow>article:hover{box-shadow:0 18px 40px rgba(15,30,45,.16)}
}
/* Connector symbols are visual only; they never change document order or accessible text. */
main.tb-service-design-v2 .service-process-grid:is(.tb-process-connect--arrows,.tb-process-connect--chevrons,.tb-process-connect--timeline){--tb-process-connector-gap:28px;gap:var(--tb-process-connector-gap);}
main.tb-service-design-v2 .service-process-grid:is(.tb-process-connect--arrows,.tb-process-connect--chevrons,.tb-process-connect--timeline)>article{position:relative}
main.tb-service-design-v2 .service-process-grid:is(.tb-process-connect--arrows,.tb-process-connect--chevrons,.tb-process-connect--timeline)>article::after{content:'→';position:absolute;z-index:3;top:50%;right:calc(var(--tb-process-connector-gap) / -2);transform:translate(50%,-50%);font-size:1.4rem;font-weight:800;line-height:1;color:var(--brand-accent);pointer-events:none}
main.tb-service-design-v2 .service-process-grid.tb-process-connect--chevrons>article::after{content:'›';font-size:2.35rem;font-weight:500}
main.tb-service-design-v2 .service-process-grid.tb-process-connect--timeline>article::after{content:' ';height:2px;width:var(--tb-process-connector-gap);background:var(--brand-accent);transform:translateY(-50%);right:calc(var(--tb-process-connector-gap) * -1);opacity:.68}
main.tb-service-design-v2 .service-process-grid:is(.tb-process-connect--arrows,.tb-process-connect--chevrons,.tb-process-connect--timeline)>article:last-child::after{display:none}
/* Row ends: auto=3, explicit 2/3/4. These are then overridden as columns collapse. */
@media(min-width:1051px){
 main.tb-service-design-v2 .service-process-grid.tb-process-connect--arrows:not([class*=tb-service-process-cols-])>article:nth-child(3n)::after,
 main.tb-service-design-v2 .service-process-grid.tb-process-connect--chevrons:not([class*=tb-service-process-cols-])>article:nth-child(3n)::after,
 main.tb-service-design-v2 .service-process-grid.tb-process-connect--timeline:not([class*=tb-service-process-cols-])>article:nth-child(3n)::after,
 main.tb-service-design-v2 .service-process-grid.tb-service-process-cols-three>article:nth-child(3n)::after,
 main.tb-service-design-v2 .service-process-grid.tb-service-process-cols-four>article:nth-child(4n)::after,
 main.tb-service-design-v2 .service-process-grid.tb-service-process-cols-two>article:nth-child(2n)::after,
 main.tb-service-design-v2 .tb-process-composition--aside .service-process-grid>article:nth-child(2n)::after{display:none}
 main.tb-service-design-v2 .tb-process-composition--aside .service-process-grid>article:not(:nth-child(2n)):not(:last-child)::after{display:block}
}
@media(min-width:801px) and (max-width:1050px){
 main.tb-service-design-v2 .service-process-grid:is(.tb-process-connect--arrows,.tb-process-connect--chevrons,.tb-process-connect--timeline):not(.tb-service-process-cols-three)>article:nth-child(2n)::after{display:none}
 main.tb-service-design-v2 .service-process-grid.tb-service-process-cols-three>article:nth-child(3n)::after{display:none}
}
@media(min-width:621px) and (max-width:800px){
 main.tb-service-design-v2 .service-process-grid:is(.tb-process-connect--arrows,.tb-process-connect--chevrons,.tb-process-connect--timeline)>article:nth-child(2n)::after{display:none}
}
@media(max-width:620px){
 main.tb-service-design-v2 .service-process-grid:is(.tb-process-connect--arrows,.tb-process-connect--chevrons,.tb-process-connect--timeline)>article::after{display:none}
}
/* Scroll entrance, applied only after the small IntersectionObserver registers.
   Without JS, unsupported browsers and reduced-motion users see all cards. */
@media(prefers-reduced-motion:no-preference){
 main.tb-service-design-v2 .tb-process-reveal-ready:is(.tb-process-reveal--fade,.tb-process-reveal--stagger,.tb-process-reveal--slide)>article{opacity:0;transition:opacity .56s ease,translate .56s cubic-bezier(.2,.8,.2,1)}
 main.tb-service-design-v2 .tb-process-reveal-ready.tb-process-reveal--slide>article,
 main.tb-service-design-v2 .tb-process-reveal-ready.tb-process-reveal--stagger>article{translate:0 17px}
 main.tb-service-design-v2 .tb-process-reveal-ready.tb-process-reveal--stagger>article{transition-delay:calc(var(--tb-process-step-index,0) * 105ms)}
 main.tb-service-design-v2 .tb-process-reveal-ready.tb-process-inview>article{opacity:1;translate:0 0}
}
@media(prefers-reduced-motion:reduce){
 main.tb-service-design-v2 .service-process-grid>article{transition:none!important;transform:none!important;translate:none!important;opacity:1!important}
}
/* Surfaces: muted panels remain readable against dark and full-image sections. */
main.tb-service-design-v2 .section-dark .service-process-grid.tb-process-cards--soft article,
main.tb-service-design-v2 .section-dark .service-process-grid.tb-process-cards--elevated article{background:rgba(255,255,255,.085);border-color:rgba(255,255,255,.2)}
main.tb-service-design-v2 .tb-service-section-with-image .service-process-grid.tb-process-cards--minimal article{background:transparent}

/* v2.18.85: Trust Strip per-instance overrides. Never affect other icon or text components.
   The opt-in classes ensure all historical Trust Strips retain exact styling. */
.trust-strip.trust-custom-icon .trust-item-icon .tb-icon{
  width:var(--trust-icon-custom)!important;height:var(--trust-icon-custom)!important;
  max-width:100%;
}
.trust-strip.trust-custom-heading .trust-item-copy strong,
.home-premium.home-typography--unified .trust-strip.trust-custom-heading .trust-item-copy strong{
  font-size:var(--trust-heading-custom);
}
.trust-strip.trust-custom-body .trust-item-copy span,
.home-premium.home-typography--unified .trust-strip.trust-custom-body .trust-item-copy span{
  font-size:var(--trust-body-custom);
}

/* v2.18.89 — Utility-bar dual contact actions; legacy single link unchanged. */
.topbar-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:12px;min-width:0;flex-wrap:nowrap}
.topbar-action{display:inline-flex;align-items:center;gap:.32em;white-space:nowrap;min-width:0;text-decoration:none}
/* v2.18.90: Contact links do not underline on hover; retain an accessible keyboard focus indicator. */
.topbar-action:hover,.topbar-action:focus-visible{text-decoration:none}
.topbar-action:focus-visible{outline:2px solid currentColor;outline-offset:3px;border-radius:2px}
.topbar-actions-separator{display:block;width:1px;height:15px;background:rgba(255,255,255,.35);flex:none}
@media (max-width:900px){.topbar-actions{gap:9px}.topbar-action-number{display:none}}
@media (max-width:680px){.topbar-actions{justify-content:center;max-width:100%}.topbar-action-number{display:none}}
@media (max-width:350px){.topbar-actions{gap:8px}.topbar-action{font-size:.74rem}}

/* v2.18.92 — refine the four existing optional homepage CTA layouts.
   Scoped to this section; respect the unified type roles and global button presets. */
.tb-home-extra-cta{
  background:var(--tb-extra-cta-bg);color:var(--tb-extra-cta-fg);
  padding:clamp(64px,5.5vw,82px) 0;isolation:isolate;
}
.tb-home-extra-cta--with-image{background-position:center;background-size:cover;background-repeat:no-repeat}
.tb-home-extra-cta--no-accent .tb-home-extra-cta-copy::before{display:none}
.tb-home-extra-cta-inner{
  display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);
  align-items:center;column-gap:clamp(26px,4vw,72px);row-gap:26px;min-width:0;
}
.tb-home-extra-cta-copy{min-width:0;max-width:810px}
.tb-home-extra-cta-copy::before{
  content:"";display:block;width:48px;height:3px;margin:0 0 24px;
  border-radius:2px;background:var(--tb-extra-cta-accent,var(--brand-accent,currentColor));
}
.tb-home-extra-cta h2{margin:0;max-width:23ch;color:inherit;font-size:clamp(28px,3vw,48px);line-height:1.16;letter-spacing:-.025em;text-wrap:balance}
.tb-home-extra-cta p{margin:20px 0 0;max-width:780px;color:var(--tb-extra-cta-muted);font-size:17px;line-height:1.55}
.home-premium.home-typography--unified .tb-home-extra-cta h2{font-size:clamp(28px,3vw,var(--tb-home-section-heading-max,52px));line-height:var(--tb-home-section-line-height,1.16)}
.home-premium.home-typography--unified .tb-home-extra-cta p{font-size:var(--tb-home-body-max,17px);line-height:var(--tb-home-body-line-height,1.55)}
.tb-home-extra-cta-actions{display:flex;flex-wrap:wrap;align-items:stretch;gap:14px;min-width:0}
/* Shared .btn-primary / .btn-outline-light / .btn-outline carry the global
   Button Design presets (including Glass) exactly as Hero/Final CTA do.
   Only layout constraints belong to this optional homepage section. */
.tb-home-extra-cta-actions .btn{box-sizing:border-box;max-width:100%;text-align:center;white-space:normal}
/* Split: a clearly defined copy/action ratio. One button is never stranded
   against the outer edge; two actions form one considered vertical group. */
.tb-home-extra-cta--split .tb-home-extra-cta-actions{
  flex-direction:column;justify-self:start;width:min(100%,354px);
}
.tb-home-extra-cta--split .tb-home-extra-cta-actions .btn{width:100%}
/* Centred: compact vertical hierarchy with an inline paired action row. */
.tb-home-extra-cta--centered .tb-home-extra-cta-inner{display:flex;flex-direction:column;align-items:center;gap:25px;text-align:center}
.tb-home-extra-cta--centered .tb-home-extra-cta-copy{max-width:860px}
.tb-home-extra-cta--centered .tb-home-extra-cta-copy::before{margin-inline:auto}
.tb-home-extra-cta--centered h2{margin-inline:auto}
.tb-home-extra-cta--centered p{max-width:710px;margin-inline:auto}
.tb-home-extra-cta--centered .tb-home-extra-cta-actions{justify-content:center;width:min(100%,630px)}
.tb-home-extra-cta--centered .tb-home-extra-cta-actions .btn{flex:1 1 220px;min-width:0}
/* Editorial: relaxed left-aligned reading flow with the buttons directly below. */
.tb-home-extra-cta--stacked .tb-home-extra-cta-inner{display:flex;flex-direction:column;align-items:flex-start;gap:28px}
.tb-home-extra-cta--stacked .tb-home-extra-cta-copy{max-width:910px}
.tb-home-extra-cta--stacked .tb-home-extra-cta-actions{justify-content:flex-start}
/* Compact: genuinely shorter notice rather than a full-size text-led section. */
.tb-home-extra-cta--compact{padding:clamp(48px,4.4vw,64px) 0}
.tb-home-extra-cta--compact .tb-home-extra-cta-inner{grid-template-columns:minmax(0,1fr) auto;column-gap:clamp(24px,3vw,50px)}
.tb-home-extra-cta--compact .tb-home-extra-cta-copy{max-width:850px}
.tb-home-extra-cta--compact .tb-home-extra-cta-copy::before{margin-bottom:13px;width:36px;height:2px}
.tb-home-extra-cta--compact h2{font-size:clamp(23px,2.35vw,36px);max-width:none}
.home-premium.home-typography--unified .tb-home-extra-cta--compact h2{font-size:min(var(--tb-home-section-heading-max,52px),clamp(23px,2.35vw,36px))}
.tb-home-extra-cta--compact p{margin-top:9px;max-width:740px}
.tb-home-extra-cta--compact .tb-home-extra-cta-actions{justify-content:flex-end}
.tb-home-extra-cta--compact .tb-home-extra-cta-actions .btn{min-width:0}
/* Prevent cramped columns well before a narrow tablet forces wrapping. */
@media(max-width:1060px){
  .tb-home-extra-cta-inner{grid-template-columns:minmax(0,1fr);gap:28px}
  .tb-home-extra-cta--split .tb-home-extra-cta-actions{width:min(100%,500px);flex-direction:row;justify-self:start}
  .tb-home-extra-cta--split .tb-home-extra-cta-actions .btn{flex:1 1 210px;width:auto}
  .tb-home-extra-cta--compact .tb-home-extra-cta-inner{grid-template-columns:minmax(0,1fr)}
  .tb-home-extra-cta--compact .tb-home-extra-cta-actions{justify-content:flex-start}
}
@media(max-width:600px){
  .tb-home-extra-cta{padding:42px 0}
  .tb-home-extra-cta--compact{padding:44px 0}
  .tb-home-extra-cta-inner{gap:23px}
  .tb-home-extra-cta-copy::before{margin-bottom:18px}
  .tb-home-extra-cta h2{font-size:clamp(27px,7.5vw,36px)}
  .tb-home-extra-cta p{margin-top:16px}
  .tb-home-extra-cta-actions{width:100%;gap:11px;flex-direction:column}
  .tb-home-extra-cta--split .tb-home-extra-cta-actions{width:100%;flex-direction:column}
  .tb-home-extra-cta-actions .btn,.tb-home-extra-cta--split .tb-home-extra-cta-actions .btn{width:100%;flex:0 1 auto;min-width:0}
  .tb-home-extra-cta--centered .tb-home-extra-cta-actions{width:100%}
  .tb-home-extra-cta--centered .tb-home-extra-cta-actions .btn{flex:0 1 auto}
  .tb-home-extra-cta--compact .tb-home-extra-cta-actions{flex-direction:column}
}
@media(min-width:981px){
  .home-premium .trust-strip--floating + .tb-home-extra-cta{padding-top:86px}
  /* Compact keeps its visual top/bottom clearance balanced after floating trust. */
  .home-premium .trust-strip--floating + .tb-home-extra-cta--compact{padding-bottom:86px}
}

/* v2.18.95 — optional mobile-only branding. The existing header breakpoint is
   980px; absent overrides leave all historical logo rules untouched. */
.brand-logo-mobile{display:none!important}
@media(max-width:980px){
  .header .brand-logo--has-mobile .brand-logo-normal,
  .header .brand-logo--has-mobile .brand-logo-light{display:none!important}
  .header .brand-logo--has-mobile .brand-logo-mobile{
    display:block!important;
    opacity:1!important;
    visibility:visible;
    width:auto;
    height:auto;
    max-width:min(var(--tb-mobile-logo-width,190px),calc(100vw - 118px));
    max-height:min(64px,calc(var(--tb-nav-mobile-height,78px) - 16px));
    object-fit:contain;
    object-position:left center;
  }
  .header .brand-link:has(.brand-logo--has-mobile){min-width:0;max-width:calc(100vw - 118px)}
}


/* v2.18.98 — optional card-only text contrast overrides for all Why Choose Us layouts.
   Scoped to selected headings/descriptions; leave section intro, markers and card
   backgrounds untouched. Missing/Automatic settings generate no override class. */
.home-premium .why-section.why-card-heading-override :is(
  .reason,
  .why-overlay-card,
  .why-editorial-reasons article,
  .why-stacked-benefits article,
  .why-statement-card
) strong{color:var(--why-card-heading-override)}
.home-premium .why-section.why-card-body-override :is(
  .reason,
  .why-overlay-card,
  .why-editorial-reasons article,
  .why-stacked-benefits article,
  .why-statement-card
) p{color:var(--why-card-body-override)}


/* v2.18.99 — opt-in homepage Reviews section background.  The existing card
   surfaces/layouts are untouched; only the parent section and exposed text
   on unboxed review templates need foreground contrast adjustments. */
.home-premium .home-reviews.home-reviews-bg--customized{
  background:var(--home-reviews-background);
  color:var(--home-reviews-foreground);
}
.home-premium .home-reviews.home-reviews-bg--customized .section-head h2,
.home-premium .home-reviews.home-reviews-bg--customized .section-head .lead{
  color:var(--home-reviews-foreground);
}
.home-premium .home-reviews.home-reviews-bg--customized .section-head .eyebrow{
  color:var(--home-reviews-eyebrow);
}
.home-premium .home-reviews.home-reviews-bg--customized .review-proof-source,
.home-premium .home-reviews.home-reviews-bg--customized .review-proof-link{
  color:var(--home-reviews-foreground);
}
/* Unboxed review layouts expose their quote/author on the section background. */
.home-premium .home-reviews.home-reviews-bg--customized:is(.home-reviews--open-quote,.home-reviews--side-accent) .testimonial :is(blockquote,strong,span){
  color:var(--home-reviews-foreground);
}
/* A manually chosen testimonial text colour has precedence over automatic
   contrast; this class is provided by the established Reviews text controls. */
.home-premium .home-reviews.home-reviews-bg--customized.home-reviews-text-override:is(.home-reviews--open-quote,.home-reviews--side-accent) .testimonial blockquote{
  color:var(--home-review-text);
}


/* v2.19.05: equal photo gallery is opt-in; legacy mosaic unchanged. */
.custom-gallery--three-column{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.7vw,24px)}
.custom-gallery--three-column figure:nth-child(n){grid-column:auto;min-height:0;aspect-ratio:3/2}
.custom-gallery--three-column img{width:100%;height:100%;min-height:0;object-fit:cover}
@media(max-width:980px){.custom-gallery--three-column{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.custom-gallery--three-column{grid-template-columns:1fr}}


/* v2.19.06 — Gallery image enlargement uses the existing shared lightbox. */
.custom-gallery--three-column .tb-gallery-lightbox-link{display:block;width:100%;height:100%;padding:0;cursor:zoom-in;overflow:hidden}
.custom-gallery--three-column .tb-gallery-lightbox-link:focus-visible{outline:3px solid var(--brand-accent,#c9a45b);outline-offset:-3px}
.custom-gallery--three-column .tb-gallery-lightbox-link img{width:100%;height:100%}
.custom-gallery--three-column figure figcaption{pointer-events:none}
.tb-media-lightbox-prev,.tb-media-lightbox-next{position:absolute;top:50%;transform:translateY(-50%);z-index:2;display:grid;place-items:center;width:48px;height:56px;border:1px solid rgba(255,255,255,.4);border-radius:9px;background:rgba(0,0,0,.63);color:#fff;font:400 38px/1 system-ui,sans-serif;cursor:pointer}
.tb-media-lightbox-prev{left:10px}.tb-media-lightbox-next{right:10px}
.tb-media-lightbox-prev[hidden],.tb-media-lightbox-next[hidden],.tb-media-lightbox-details>span[hidden]{display:none!important}
.tb-media-lightbox-prev:hover,.tb-media-lightbox-next:hover{background:rgba(0,0,0,.85)}
.tb-media-lightbox-prev:focus-visible,.tb-media-lightbox-next:focus-visible,.tb-media-lightbox-close:focus-visible{outline:3px solid #fff;outline-offset:3px}
.tb-media-lightbox-details{position:absolute;top:100%;left:0;right:0;display:flex;justify-content:center;gap:16px;align-items:center;min-height:25px;margin-top:7px;color:#fff;font:500 13px/1.4 system-ui,sans-serif;text-align:center}
@media(max-width:620px){.tb-media-lightbox-prev,.tb-media-lightbox-next{width:42px;height:50px;font-size:30px}.tb-media-lightbox-prev{left:3px}.tb-media-lightbox-next{right:3px}.tb-media-lightbox img{max-height:76vh}}
@media(prefers-reduced-motion:reduce){.custom-gallery--three-column img{transition:none!important}}
@media(max-width:620px){.tb-media-lightbox-close{right:6px}}

/* v2.19.07 — Premium, palette-aware lightbox navigation and per-image orientation. */
.tb-media-lightbox-stage{position:relative;display:grid;place-items:center;min-width:0;min-height:0}
.tb-media-lightbox-stage img{display:block;transform-origin:center center}
.tb-media-lightbox-stage img[style*="translate(-50%"]{left:50%;top:50%;object-fit:contain}
.tb-media-lightbox-prev,.tb-media-lightbox-next{
  width:52px;height:52px;border-radius:50%;border:1px solid rgba(255,255,255,.85);
  background:rgba(255,255,255,.78);color:#202326;
  box-shadow:0 5px 24px rgba(0,0,0,.14);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  font:400 34px/1 system-ui,sans-serif;transition:background .18s ease,box-shadow .18s ease,transform .18s ease;
}
.tb-media-lightbox-prev:hover,.tb-media-lightbox-next:hover{background:rgba(255,255,255,.96);box-shadow:0 7px 28px rgba(0,0,0,.22)}
.tb-media-lightbox-prev:focus-visible,.tb-media-lightbox-next:focus-visible{outline:3px solid #fff;outline-offset:3px}
.tb-media-lightbox-prev{left:12px}.tb-media-lightbox-next{right:12px}
.tb-media-lightbox[data-tb-lightbox-arrows="palette"] .tb-media-lightbox-prev,
.tb-media-lightbox[data-tb-lightbox-arrows="palette"] .tb-media-lightbox-next{
 background:var(--brand-accent,#c9a45b);color:var(--brand-accent-contrast,#111);
 border-color:color-mix(in srgb,var(--brand-accent,#c9a45b) 80%,white);
}
.tb-media-lightbox[data-tb-lightbox-arrows="palette"] .tb-media-lightbox-prev:hover,
.tb-media-lightbox[data-tb-lightbox-arrows="palette"] .tb-media-lightbox-next:hover{
 background:color-mix(in srgb,var(--brand-accent,#c9a45b) 85%,white)
}
/* The underlying image is not rewritten; 90/270 degree thumbnails fill the existing 3:2 photo slot. */
.custom-gallery--three-column .tb-gallery-lightbox-link img.tb-gallery-rotated{
 transform:rotate(var(--tb-gallery-angle,0deg)) scale(var(--tb-gallery-rotation-scale,1));transform-origin:center;
}
.tb-gallery-edit-preview{height:105px;overflow:hidden;display:grid;place-items:center;background:#f5f7f8}
.tb-gallery-edit-preview-stage{height:105px;width:100%;position:relative;display:grid;place-items:center;overflow:hidden}
.tb-gallery-edit-preview img{max-width:100%;max-height:100%;object-fit:contain;width:auto;height:auto;position:relative;display:block}
.tb-gallery-edit-preview img[style*="translate(-50%"]{position:absolute;left:50%;top:50%;max-width:none;max-height:none}
.tb-gallery-edit-preview .image-placeholder{width:100%}
@media(max-width:620px){.tb-media-lightbox-prev,.tb-media-lightbox-next{width:43px;height:43px;font-size:29px}.tb-media-lightbox-prev{left:3px}.tb-media-lightbox-next{right:3px}}
@media(prefers-reduced-motion:reduce){.tb-media-lightbox-prev,.tb-media-lightbox-next{transition:none}}

/* v2.19.08 — Geometrically centred SVG lightbox chevrons (no font baseline drift). */
.tb-media-lightbox-prev,.tb-media-lightbox-next{padding:0;line-height:0}
.tb-media-lightbox-prev svg,.tb-media-lightbox-next svg{display:block;width:23px;height:23px;flex:0 0 23px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:620px){.tb-media-lightbox-prev svg,.tb-media-lightbox-next svg{width:20px;height:20px;flex-basis:20px}}
