@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Manrope:wght@600;700;800&display=swap');

:root {
  --green: #2e7d32;
  --green-2: #4caf50;
  --green-dark: #174d2c;
  --orange: #f57c00;
  --ink: #1f2937;
  --muted: #607068;
  --line: #e5e7eb;
  --paper: #fff;
  --off-white: #f8fafc;
  --shadow: 0 20px 50px rgba(23, 77, 44, .11);
  --radius: 22px;
  --layout-max: 1180px;
  --layout-gutter: clamp(14px, 3vw, 24px);
}

* { box-sizing: border-box; }
html {
  min-width: 0;
  overflow-y: scroll;
  scrollbar-gutter: stable;
  scroll-behavior: smooth;
  background: #fff;
}
body { margin: 0; overflow-x: hidden; color: var(--ink); background: var(--paper); font: 400 16px/1.68 Inter, Arial, sans-serif; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
body.modal-open { overflow: hidden; }
button, input { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; }
img, svg { display: block; max-width: 100%; }
img { height: auto; }
.lucide-icon { width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3, .button, .brand { font-family: Manrope, Inter, sans-serif; }
h1 { max-width: 750px; margin-bottom: 22px; font-size: clamp(3rem, 5.5vw, 5.35rem); font-weight: 800; line-height: 1.01; letter-spacing: -.058em; }
h2 { margin-bottom: 14px; font-size: clamp(2rem, 3.35vw, 3.25rem); font-weight: 800; line-height: 1.1; letter-spacing: -.04em; }
h3 { font-size: 1.15rem; line-height: 1.25; }
.shell { width: min(var(--layout-max), calc(100% - (var(--layout-gutter) * 2))); margin-inline: auto; }
.section { padding-block: 100px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.skip-link { position: fixed; z-index: 1000; top: 10px; left: 10px; padding: 10px 14px; color: white; background: var(--green-dark); border-radius: 8px; transform: translateY(-150%); }
.skip-link:focus { transform: translateY(0); }
:focus-visible { outline: 3px solid #ffb04a; outline-offset: 3px; }

.eyebrow { margin-bottom: 10px; color: var(--green); font: 800 .74rem/1.2 Manrope, sans-serif; letter-spacing: .15em; text-transform: uppercase; }
.eyebrow.light { color: #a9e8ae; }
.section-heading { max-width: 730px; margin: 0 auto 48px; text-align: center; }
.section-heading > p:last-child { color: var(--muted); }
.home-service-nav { display: grid; grid-template-columns: repeat(5,1fr); gap: 8px; margin: -42px auto 45px; padding: 7px; background: #f7faf8; border: 1px solid #e2eae4; border-radius: 14px; }
.home-service-nav a { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 8px; color: #425149; border-radius: 9px; font-size: .68rem; text-decoration: none; transition: color .2s ease, background .2s ease, box-shadow .2s ease, transform .2s ease; }
.home-service-nav a:hover { color: var(--green); background: #fff; box-shadow: 0 7px 18px rgba(35,75,45,.09); transform: translateY(-2px); }
.home-service-nav .lucide-icon { width: 19px; height: 19px; color: var(--green); }
.home-service-nav b { font-family: Manrope,sans-serif; }
.brand-slider { overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--green) #e5eee7; }
.brand-slider::-webkit-scrollbar { height: 7px; }
.brand-slider::-webkit-scrollbar-track { background: #e5eee7; border-radius: 999px; }
.brand-slider::-webkit-scrollbar-thumb { background: linear-gradient(90deg,var(--green),var(--orange)); border: 1px solid #fff; border-radius: 999px; }

.site-header { position: sticky; z-index: 30; top: 0; background: rgba(255,255,255,.94); border-bottom: 1px solid rgba(229,231,235,.8); backdrop-filter: blur(14px); }
.header-inner { display: flex; align-items: center; min-height: 78px; gap: 18px; overflow: visible; }
.brand { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 9px; padding: 6px 0; overflow: visible; color: var(--green); font-size: 1.62rem; font-weight: 800; letter-spacing: -.045em; text-decoration: none; }
.brand-logo { display: block; width: 192px; height: 52px; object-fit: contain; object-position: left center; }
.footer-logo { display: block; width: 235px; height: auto; filter: drop-shadow(0 2px 5px rgba(0,0,0,.14)); }
.brand > span:last-child > span { color: var(--orange); }
.brand-mark { position: relative; display: inline-block; width: 27px; height: 37px; transform: rotate(9deg); }
.brand-mark i, .brand-mark b { position: absolute; display: block; width: 14px; height: 28px; border-radius: 100% 0 100% 0; transform: rotate(30deg); }
.brand-mark i { top: 0; left: 2px; background: var(--green); }
.brand-mark b { right: 0; bottom: 0; height: 20px; background: var(--orange); }
.main-nav { display: flex; align-items: center; justify-content: center; gap: 4px; margin-left: auto; padding: 5px; background: rgba(247,250,248,.88); border: 1px solid #e6ede8; border-radius: 15px; }
.main-nav a { position: relative; padding: 8px 10px; color: #37443d; border-radius: 10px; font: 650 .76rem/1 Manrope,Inter,sans-serif; text-decoration: none; transition: color .2s ease, background .2s ease, transform .2s ease; }
.main-nav a:hover { color: var(--green-dark); background: #eaf5ec; transform: translateY(-1px); }
.main-nav a.active { color: #fff; background: var(--green); box-shadow: 0 5px 13px rgba(46,125,50,.18); }
.main-nav a::after { display: none; }
.menu-toggle { display: none; }

.button { display: inline-flex; align-items: center; justify-content: center; min-height: 52px; padding: 0 25px; color: #fff; background: var(--green); border: 1px solid var(--green); border-radius: 11px; box-shadow: 0 9px 24px rgba(46,125,50,.21); font-weight: 700; text-decoration: none; cursor: pointer; transition: transform .2s ease, box-shadow .2s ease, background .2s ease; }
.button:hover { background: var(--green-dark); box-shadow: 0 12px 30px rgba(23,77,44,.28); transform: translateY(-2px); }
.button-small { min-height: 43px; padding-inline: 20px; font-size: .88rem; }
.button-ghost { color: var(--ink); background: rgba(255,255,255,.9); border-color: #fff; box-shadow: none; }
.button-light { color: var(--green-dark); background: #fff; border-color: #fff; }
.button-outline-light { background: transparent; border-color: rgba(255,255,255,.6); box-shadow: none; }
.button-row { display: flex; flex-wrap: wrap; gap: 13px; }

.hero { position: relative; min-height: 690px; overflow: hidden; color: #fff; background: #244346; }
.hero-art, .hero-shade { position: absolute; inset: 0; }
.hero-art img { width: 100%; height: 100%; object-fit: cover; object-position: center center; }
.hero-art img { transition: transform .9s cubic-bezier(.2,.7,.2,1),filter .45s ease; }
.hero:hover .hero-art img { filter: saturate(1.035); transform: scale(1.012); }
.hero-shade { background: linear-gradient(90deg, rgba(8,29,32,.91) 0%, rgba(8,29,32,.77) 42%, rgba(8,29,32,.28) 68%, rgba(8,29,32,.45) 100%); }
.hero-grid { position: relative; display: grid; grid-template-columns: 1fr; align-items: center; min-height: 690px; padding-block: 70px; }
.hero-copy, .trust-card { min-width: 0; }
.hero-copy h1 span { display: block; color: #74cf7e; }
.hero-lede { max-width: 640px; margin-bottom: 30px; color: #e8f1ef; font-size: 1.12rem; }
.verification-note { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin: 24px 0 0; color: #405148; font-size: .79rem; }
.verification-note .google-stars { font-size: .9rem; letter-spacing: 1px; }
.review-divider { margin-inline: 2px; color: #849188; }
.google-g { display: inline-grid; width: 23px; height: 23px; flex: 0 0 23px; background: conic-gradient(from -45deg,#4285f4 0 25%,#34a853 25% 44%,#fbbc05 44% 66%,#ea4335 66% 82%,#4285f4 82% 100%); border-radius: 50%; font: 800 15px/1 Arial,sans-serif; place-items: center; color: transparent; position: relative; }
.google-g::before { position: absolute; inset: 5px; content: ""; background: #fff; border-radius: 50%; }
.google-g::after { position: absolute; content: "G"; color: #4285f4; font: 800 14px/1 Arial,sans-serif; }
.trust-card { padding: 34px; color: var(--ink); background: rgba(255,255,255,.97); border: 1px solid rgba(255,255,255,.8); border-radius: 24px; box-shadow: 0 30px 70px rgba(0,0,0,.22); }
.trust-card h2 { margin-bottom: 10px; font-size: 2rem; }
.trust-card > p:not(.eyebrow) { color: var(--muted); }
.quick-list { display: flex; flex-wrap: wrap; gap: 8px; margin: 23px 0; }
.quick-list span { padding: 7px 10px; color: var(--green-dark); background: #eef8ef; border: 1px solid #d7edd9; border-radius: 999px; font-size: .76rem; font-weight: 600; }
.trust-card .button { width: 100%; }

.trust-strip { color: #fff; background: #153f36; }
.trust-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.trust-grid > div { display: grid; grid-template-columns: 40px 1fr; padding: 24px 20px; border-right: 1px solid rgba(255,255,255,.12); }
.trust-grid > div:last-child { border: 0; }
.trust-grid span { grid-row: 1 / 3; color: #8cda96; font: 800 1.5rem/1 Manrope, sans-serif; }
.trust-grid strong { font: 700 .9rem/1.3 Manrope, sans-serif; }
.trust-grid small { color: #b8cbc6; font-size: .75rem; }

.service-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.service-card { position: relative; min-height: 305px; padding: 30px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 8px 30px rgba(31,41,55,.05); transition: transform .2s ease, box-shadow .2s ease; }
.service-card:hover { box-shadow: var(--shadow); transform: translateY(-6px); }
.service-card p { color: var(--muted); font-size: .91rem; }
.service-card a, .audience-grid a { color: var(--green); font-weight: 700; text-decoration: none; }
.card-icon { display: grid; width: 56px; height: 56px; margin-bottom: 45px; color: var(--green); background: #eef8ef; border-radius: 16px; font: 700 1.7rem/1 Manrope, sans-serif; place-items: center; }
.card-label { position: absolute; top: 18px; right: 18px; padding: 5px 9px; color: #9a4e00; background: #fff3e8; border-radius: 999px; font-size: .68rem; font-weight: 700; }
.service-card.featured { border-color: #c7e9ca; background: linear-gradient(160deg, #fff 60%, #f0faf1); }

.process-section { background: var(--off-white); }
.split-heading { display: grid; grid-template-columns: 1.1fr .8fr; align-items: end; max-width: none; text-align: left; gap: 80px; }
.process-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 26px; padding: 0; list-style: none; counter-reset: none; }
.process-grid li { position: relative; }
.process-grid li:not(:last-child)::after { position: absolute; top: 24px; right: -22px; width: 20px; height: 1px; content: ""; background: #b8d8bd; }
.process-grid span { display: grid; width: 49px; height: 49px; margin-bottom: 25px; color: #fff; background: var(--green); border-radius: 15px; font: 700 1rem/1 Manrope, sans-serif; place-items: center; }
.process-grid p { color: var(--muted); font-size: .88rem; }

.audience-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.audience-grid article { overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 8px 30px rgba(31,41,55,.05); }
.audience-grid article > div:last-child { padding: 28px; }
.audience-grid p { color: var(--muted); font-size: .9rem; }
.audience-art { position: relative; height: 190px; overflow: hidden; background: #eaf2ec; }
.audience-art img { width: 100%; height: 100%; object-fit: cover; object-position: center; transition: transform .35s ease; }
.audience-grid article:hover .audience-art img { transform: scale(1.025); }
.audience-heading { max-width: 760px; }
.audience-heading > p:last-child { max-width: 650px; margin-inline: auto; color: var(--muted); }
.audience-grid-refined { gap: 20px; }
.audience-grid-refined article {
  position: relative;
  display: grid;
  grid-template-columns: 46% 54%;
  min-height: 245px;
  overflow: hidden;
  border-color: #dbe5de;
  border-radius: 14px;
  box-shadow: 0 12px 35px rgba(28,64,39,.06);
  transition: transform .28s ease,box-shadow .28s ease,border-color .28s ease;
}
.audience-grid-refined article:hover { border-color: #a8cfaf; box-shadow: 0 20px 42px rgba(28,64,39,.12); transform: translateY(-5px); }
.audience-grid-refined .audience-art { height: 100%; min-height: 245px; aspect-ratio: auto; }
.audience-grid-refined article > div:last-child { display: flex; padding: 28px 23px; flex-direction: column; justify-content: center; }
.audience-grid-refined .audience-icon { display: grid; width: 42px; height: 42px; margin-bottom: 15px; color: var(--green); background: #edf7ef; border-radius: 50%; place-items: center; }
.audience-grid-refined .audience-icon .lucide-icon { width: 22px; height: 22px; }
.audience-grid-refined h3 { margin-bottom: 8px; font-size: 1rem; }
.audience-grid-refined p { margin-bottom: 15px; line-height: 1.55; }
.audience-grid-refined a { margin-top: auto; font-size: .66rem; }
.audience-number { position: absolute; top: 13px; left: 13px; display: grid; width: 34px; height: 34px; color: #fff; background: rgba(18,83,44,.88); border: 1px solid rgba(255,255,255,.7); border-radius: 50%; font: 800 .65rem/1 Manrope,sans-serif; backdrop-filter: blur(7px); place-items: center; }

.coverage-section { color: #fff; background: #153f36; }
.coverage-grid { display: grid; grid-template-columns: .8fr 1.2fr; align-items: center; gap: 60px; }
.coverage-grid p:not(.eyebrow) { color: #c4d6d1; }
.london-map { padding: 30px; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.1); border-radius: 28px; }

/* Media slots reserve space before assets decode, reducing cumulative layout shift. */
.hero-art { aspect-ratio: 16 / 9; }
.audience-art { aspect-ratio: 16 / 10; }
.london-map img { width: 100%; aspect-ratio: 4 / 3; object-fit: contain; }
.award-card img { width: 100%; aspect-ratio: 16 / 9; object-fit: contain; }
.footer-logo { aspect-ratio: 4.5 / 1; object-fit: contain; }
.footer-powered img { width: 100%; aspect-ratio: 1.78 / 1; object-fit: cover; }
.mobile-action-bar { min-height: 62px; }
.trust-strip,
.service-ref-trust { min-height: 86px; }

/* Cross-document blend: both pages remain opaque, avoiding a white flash. */
@view-transition { navigation: auto; }
::view-transition-old(root) {
  animation: epcrate-page-out 150ms ease-out both;
  mix-blend-mode: normal;
}
::view-transition-new(root) {
  animation: epcrate-page-in 230ms ease-out both;
  mix-blend-mode: normal;
}
::view-transition-group(root),
::view-transition-image-pair(root) { background: #fff; }
@keyframes epcrate-page-in {
  from { filter: blur(1.5px); transform: translateY(4px); }
  to { filter: blur(0); transform: translateY(0); }
}
@keyframes epcrate-page-out {
  from { filter: blur(0); transform: translateY(0); }
  to { filter: blur(1px); transform: translateY(-2px); }
}

.guidance-panel { display: grid; grid-template-columns: .8fr 1.2fr; align-items: center; gap: 70px; padding: 50px; background: #edf7ee; border: 1px solid #d7ead9; border-radius: 28px; }
.guidance-panel p:last-child { margin: 0; color: #4e6257; }

.faq-section { padding-top: 0; }
.faq-grid { display: grid; grid-template-columns: .75fr 1.25fr; gap: 90px; }
.faq-grid > div:first-child > p:last-child { color: var(--muted); }
.accordion details { border-top: 1px solid var(--line); }
.accordion details:last-child { border-bottom: 1px solid var(--line); }
.accordion summary { display: flex; align-items: center; justify-content: space-between; padding: 22px 4px; font: 700 1rem/1.4 Manrope, sans-serif; cursor: pointer; list-style: none; }
.accordion summary::-webkit-details-marker { display: none; }
.accordion summary span { color: var(--green); font-size: 1.4rem; transition: transform .2s ease; }
.accordion details[open] summary span { transform: rotate(45deg); }
.accordion details p { padding: 0 40px 20px 4px; color: var(--muted); font-size: .91rem; }

.final-cta { padding-block: 70px 35px; color: #fff; background: linear-gradient(130deg, #1f6c38, #0c3d2a); }
.cta-inner { display: flex; align-items: center; justify-content: space-between; gap: 45px; }
.cta-inner h2 { margin-bottom: 8px; }
.cta-inner p:not(.eyebrow) { margin: 0; color: #cbe1d4; }
.prototype-note { margin-top: 35px; padding-top: 25px; color: #a9c6b5; border-top: 1px solid rgba(255,255,255,.12); font-size: .72rem; text-align: center; }
.site-footer { padding: 34px 0; background: #0d2622; color: #abc2ba; }
.footer-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; align-items: center; gap: 20px; font-size: .8rem; }
.brand-footer { color: #75c77d; }
.brand-footer { width: fit-content; padding: 8px 12px; background: #fff; border-radius: 12px; }
.footer-grid p { margin: 0; }
.footer-status { text-align: right; }


@media (max-width: 1040px) {
  .main-nav { gap: 17px; }
  .main-nav a { font-size: .78rem; }
  .hero-grid { gap: 35px; }
  .service-grid { grid-template-columns: repeat(2, 1fr); }
  .service-card { min-height: 270px; }
  .card-icon { margin-bottom: 28px; }
  .process-grid { grid-template-columns: repeat(2, 1fr); }
  .process-grid li::after { display: none; }
}

@media (max-width: 800px) {
  .section { padding-block: 76px; }
  .header-inner { min-height: 70px; }
  .menu-toggle { display: grid; width: 45px; height: 45px; margin-left: auto; padding: 11px; background: #f1f6f2; border: 0; border-radius: 10px; place-content: center; gap: 4px; }
  .menu-toggle i { display: block; width: 21px; height: 2px; background: var(--ink); }
  .header-cta { display: none; }
  .main-nav { position: absolute; top: 70px; right: 0; left: 0; display: none; align-items: stretch; padding: 18px 20px 25px; background: #fff; border-bottom: 1px solid var(--line); box-shadow: 0 20px 35px rgba(31,41,55,.12); }
  .main-nav.open { display: grid; }
  .main-nav a { padding: 10px; font-size: .9rem; }
  .main-nav a::after { display: none; }
  .hero, .hero-grid { min-height: auto; }
  .hero-grid { grid-template-columns: 1fr; padding-block: 80px; }
  .hero-copy { max-width: 680px; }
  .trust-card { max-width: 560px; }
  .trust-grid { grid-template-columns: repeat(2, 1fr); }
  .trust-grid > div:nth-child(2) { border-right: 0; }
  .trust-grid > div:nth-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,.12); }
  .audience-grid { grid-template-columns: 1fr; }
  .audience-grid article { display: grid; grid-template-columns: .75fr 1.25fr; }
  .audience-art { height: 100%; min-height: 230px; }
  .coverage-grid, .faq-grid, .guidance-panel { grid-template-columns: 1fr; gap: 45px; }
  .split-heading { grid-template-columns: 1fr; gap: 10px; }
  .cta-inner { align-items: flex-start; flex-direction: column; }
  .footer-grid { grid-template-columns: 1fr; text-align: center; }
  .brand-footer { justify-content: center; }
  .brand-footer { margin-inline: auto; }
  .footer-status { text-align: center; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  body,
  ::view-transition-old(root),
  ::view-transition-new(root) { animation: none !important; }
}

@media (hover: none) {
  .hero:hover .hero-art img { filter: none; transform: none; }
  .audience-grid-refined article:hover { box-shadow: 0 12px 35px rgba(28,64,39,.06); transform: none; }
}

@media (max-width: 560px) {
  .shell { width: min(100% - 28px, 1180px); }
  .section { padding-block: 65px; }
  h1 { max-width: 100%; font-size: clamp(2.65rem, 12vw, 3.35rem); overflow-wrap: anywhere; }
  h2 { font-size: 2rem; }
  .hero-grid { padding-block: 58px 70px; }
  .hero-shade { background: linear-gradient(90deg, rgba(8,29,32,.94), rgba(8,29,32,.78)); }
  .hero-art { transform: translateX(-22%); width: 160%; }
  .trust-card { width: 100%; padding: 25px; }
  .button-row .button { width: 100%; }
  .trust-grid { grid-template-columns: 1fr; }
  .trust-grid > div { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.12); }
  .trust-grid > div:nth-child(3) { border-bottom: 1px solid rgba(255,255,255,.12); }
  .service-grid, .process-grid { grid-template-columns: 1fr; }
  .audience-grid article { display: block; }
  .audience-art { min-height: 190px; }
  .guidance-panel { padding: 29px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

/* White-dominant audit direction */
.hero { color: var(--ink); background: #eef3f2; }
.hero-shade { background: linear-gradient(90deg,rgba(255,255,255,.99) 0%,rgba(255,255,255,.96) 35%,rgba(255,255,255,.76) 53%,rgba(255,255,255,.16) 76%,rgba(255,255,255,.04) 100%); }
.hero-copy .eyebrow.light { color: var(--green); }
.hero-lede { color: #33453d; }
.hero-copy h1 span { color: var(--green); }
.verification-note { color: #405148; }
.button-ghost { color: var(--green-dark); background: #fff; border-color: var(--green); }
.trust-card { border-color: #dfe7e2; box-shadow: 0 20px 55px rgba(24,58,42,.13); }
.trust-summary h2 { font-size: 1.65rem; }
.trust-brand-row { display: flex; align-items: center; gap: 10px; margin-bottom: 19px; color: var(--green-dark); font-size: .73rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; }
.trust-brand-row img { width: 25px; height: 42px; object-fit: contain; }
.rating-source { padding: 16px 0; border-top: 1px solid var(--line); }
.rating-source > div { display: flex; align-items: center; gap: 13px; }
.rating-source strong { font: 800 2rem/1 Manrope,sans-serif; }
.rating-source p { margin: 6px 0 0; color: var(--muted); font-size: .78rem; }
.google-stars { color: #f5ae00; letter-spacing: 2px; }
.tp-stars { display: inline-block; padding: 2px 5px; color: #fff; background: #00b67a; letter-spacing: 2px; }
.review-platform-grid { display: grid; grid-template-columns: repeat(2,1fr); max-width: 850px; margin: auto; gap: 20px; }
.review-platform-grid article { padding: 35px; background: #fff; border: 1px solid var(--line); border-radius: 22px; box-shadow: 0 10px 30px rgba(31,41,55,.06); text-align: center; }
.review-platform-grid strong { display: block; margin: 10px 0; font: 800 3rem/1 Manrope,sans-serif; }
.review-platform-grid p { margin: 10px 0 0; color: var(--muted); }
.platform-name { font: 800 1rem Manrope,sans-serif; }
.google-name { color: #4285f4; }
.trustpilot-name { color: #00b67a; }
.coverage-section { color: var(--ink); background: #f4f8f5; }
.coverage-grid p:not(.eyebrow) { color: var(--muted); }
.coverage-section .eyebrow.light { color: var(--green); }
.london-map { background: #fff; border-color: #dce9df; }
.final-cta { color: var(--ink); background: #eff7f0; border-top: 1px solid #d8e8db; }
.final-cta .eyebrow.light { color: var(--green); }
.cta-inner p:not(.eyebrow) { color: var(--muted); }
.final-cta .button-light { color: #fff; background: var(--green); border-color: var(--green); }
.final-cta .button-outline-light { color: var(--green-dark); border-color: var(--green); }
.prototype-note { color: #718078; border-color: #d6e3d8; }

@media(max-width:560px){
  .hero-shade { background: rgba(255,255,255,.9); }
  .review-platform-grid { grid-template-columns: 1fr; }
}

/* Homepage mockup fidelity pass */
.home-page-placeholder { display: none; }
.site-header { box-shadow: 0 1px 12px rgba(31,41,55,.04); }
.header-inner { min-height: 74px; }
.brand-logo { width: 184px; height: 50px; }
.header-cta { min-width: 112px; }

.hero, .hero-grid { min-height: 520px; }
.hero-grid { grid-template-columns: 1fr; padding-block: 48px; }
.hero-copy { max-width: 650px; }
.hero h1 { max-width: 590px; margin-bottom: 18px; font-size: clamp(2.8rem,4vw,4rem); line-height: 1.04; letter-spacing: -.052em; text-wrap: balance; }
.hero-tagline { display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; color: #185b2c; background: rgba(255,255,255,.78); border: 1px solid rgba(46,125,50,.2); border-radius: 999px; box-shadow: 0 5px 18px rgba(25,69,38,.07); letter-spacing: .11em; backdrop-filter: blur(8px); }
.hero-tagline::before { width: 7px; height: 7px; content: ""; background: var(--orange); border-radius: 50%; box-shadow: 0 0 0 4px rgba(245,124,0,.12); }
.hero-lede { max-width: 560px; margin-bottom: 22px; font-size: 1rem; line-height: 1.55; }
.verification-note { margin-top: 18px; }

.trust-grid { grid-template-columns: repeat(5,1fr); }
.trust-grid > div { grid-template-columns: 38px 1fr; padding: 18px 14px; }
.trust-grid .trust-icon { display: grid; grid-row: 1 / 3; width: 31px; height: 31px; color: #a4e7ad; place-items: center; }
.trust-grid .trust-icon .lucide-icon { width: 27px; height: 27px; }
.trust-grid strong { font-size: .78rem; }
.trust-grid small { font-size: .66rem; line-height: 1.3; }

.section { padding-block: 67px; }
.section-heading { margin-bottom: 31px; }
.section-heading h2 { margin-bottom: 0; font-size: clamp(1.85rem,2.5vw,2.65rem); }
.service-grid { gap: 15px; }
.service-card { min-height: 255px; padding: 24px 22px; border-radius: 13px; text-align: center; }
.service-card:hover { transform: translateY(-3px); }
.card-icon { width: 50px; height: 50px; margin: 0 auto 27px; color: var(--green); background: #edf7ee; border: 1px solid #d9ebdc; border-radius: 14px; }
.card-icon .lucide-icon { width: 25px; height: 25px; stroke-width: 1.75; }
.service-card h3 { min-height: 46px; margin-bottom: 8px; }
.service-card p { min-height: 68px; margin-bottom: 12px; font-size: .79rem; line-height: 1.5; }
.service-card a { font-size: .76rem; }

.audience-section { padding-top: 10px; }
.audience-grid { gap: 17px; }
.audience-grid article { display: grid; grid-template-columns: 40% 60%; min-height: 170px; border-radius: 13px; }
.audience-grid article > div:last-child { position: relative; padding: 22px 19px; }
.audience-art { height: 100%; min-height: 170px; overflow: hidden; }
.audience-icon { display: inline-grid; width: 32px; height: 32px; margin-bottom: 8px; color: var(--green); background: #edf7ee; border-radius: 9px; place-items: center; }
.audience-icon .lucide-icon { width: 19px; height: 19px; }
.audience-grid h3 { margin-bottom: 5px; font-size: .95rem; }
.audience-grid p { margin-bottom: 5px; font-size: .73rem; line-height: 1.45; }
.audience-grid a { font-size: .7rem; }

.coverage-section { padding-block: 33px; }
.coverage-grid { grid-template-columns: .85fr 1.15fr; gap: 30px; }
.coverage-grid h2 { font-size: 1.65rem; }
.coverage-grid p { margin-bottom: 14px; font-size: .82rem; }
.coverage-links { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 12px; }
.coverage-links span { padding: 6px 9px; color: var(--green-dark); background: #fff; border: 1px solid #dce9df; border-radius: 6px; font-size: .65rem; }
.text-link { color: var(--green); font-size: .76rem; font-weight: 700; text-decoration: none; }
.london-map { max-height: 245px; padding: 14px; border-radius: 13px; }
.london-map svg { max-height: 215px; margin: auto; }

.reviews-section { background: #fafcfb; }
.review-section-intro { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: end; gap: 45px; margin-bottom: 34px; }
.review-section-intro > div:first-child { max-width: 650px; }
.review-section-intro h2 { margin-bottom: 12px; font-size: clamp(2rem,3.2vw,3.15rem); }
.review-section-intro > div:first-child > p:last-child { max-width: 570px; margin: 0; color: var(--muted); }
.review-summary { display: flex; gap: 10px; }
.review-summary > span { display: grid; grid-template-columns: 27px auto; align-items: center; min-width: 170px; padding: 13px 15px; background: rgba(255,255,255,.9); border: 1px solid #dce7df; border-radius: 14px; box-shadow: 0 8px 24px rgba(31,65,42,.06); }
.review-summary .google-g { grid-row: 1 / 3; }
.review-summary i { grid-row: 1 / 3; color: #00b67a; font-style: normal; font-size: 1.3rem; }
.review-summary b { font: 800 1.05rem/1 Manrope,sans-serif; }
.review-summary small { color: #6b7971; font-size: .62rem; }
.review-platform-grid { grid-template-columns: repeat(12,minmax(0,1fr)); max-width: 100%; gap: 14px; }
.review-platform-grid article { grid-column: span 2; padding: 23px 21px; border-radius: 16px; text-align: left; transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease; }
.review-platform-grid article:hover { border-color: #b7d2bc; box-shadow: 0 15px 34px rgba(31,65,42,.1); transform: translateY(-3px); }
.review-platform-grid .review-profile-card { grid-column: span 4; min-height: 190px; padding: 28px; background: linear-gradient(145deg,#fff,#f6faf7); }
.review-source-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.review-source-head b { font: 800 1.7rem Manrope,sans-serif; }
.google-brand { display: inline-flex; align-items: center; gap: 9px; color: #3f4c45; font: 700 .88rem Manrope,sans-serif; }
.google-review-card .google-g { width: 27px; height: 27px; flex-basis: 27px; }
.review-rating-line { display: flex; align-items: center; gap: 10px; }
.review-rating-line > span:last-child { color: #526159; font-size: .72rem; font-weight: 600; }
.google-review-card a { display: inline-block; margin-top: 8px; color: var(--green); font-size: .68rem; font-weight: 700; text-decoration: none; }
.review-platform-grid strong { display: block; margin: 7px 0; font-size: 1.65rem; }
.review-platform-grid p { margin: 9px 0 3px; font-size: .8rem; }
.review-platform-grid small { color: #7a8880; font-size: .66rem; }
.review-hours .audience-icon { margin: 0; }

.faq-section { padding-block: 62px; }
.faq-grid { gap: 70px; }
.final-cta { padding-block: 21px; background: linear-gradient(100deg,#267b35,#17622b); color: #fff; }
.final-cta .eyebrow { color: #c9f0ce; }
.final-cta .cta-inner p { color: #e3f2e6; }
.final-cta .button { color: var(--green-dark); background: #fff; border-color: #fff; }
.final-cta .button-ghost { color: #fff; background: transparent; border-color: rgba(255,255,255,.72); }
.final-cta .cta-inner { gap: 28px; }
.final-cta .eyebrow { margin-bottom: 3px; font-size: .6rem; }
.final-cta h2 { display: inline; margin: 0 11px 0 0; font-size: 1.3rem; line-height: 1.2; letter-spacing: -.025em; }
.final-cta .cta-inner > div:first-child > p:last-child { display: inline; font-size: .76rem; }
.final-cta .button-row { flex-wrap: nowrap; }
.final-cta .button { min-height: 42px; padding-inline: 18px; font-size: .76rem; border-radius: 9px; }

@media (min-width: 901px) {
  .final-cta { padding-block: 14px; }
  .final-cta .cta-inner { min-height: 48px; gap: 22px; }
  .final-cta .cta-inner > div:first-child { display: flex; align-items: center; gap: 12px; min-width: 0; }
  .final-cta .eyebrow { flex: 0 0 auto; margin: 0; padding-right: 12px; border-right: 1px solid rgba(255,255,255,.28); }
  .final-cta h2 { flex: 0 0 auto; margin: 0; font-size: 1.08rem; }
  .final-cta .cta-inner > div:first-child > p:last-child { overflow: hidden; color: rgba(255,255,255,.78); font-size: .7rem; text-overflow: ellipsis; white-space: nowrap; }
  .final-cta .button { min-height: 38px; padding-inline: 15px; font-size: .7rem; }
}
.site-footer { padding: 24px 0; }
.footer-logo { width: 205px; }
.footer-links { display: flex; justify-content: center; gap: 20px; }
.footer-links a { color: #d5e2de; text-decoration: none; }

@media (max-width: 1040px) {
  .trust-grid { grid-template-columns: repeat(5,1fr); }
  .trust-grid > div:nth-child(3) { border-right: 1px solid rgba(255,255,255,.12); }
  .service-grid { grid-template-columns: repeat(4,1fr); }
  .service-card { min-height: 260px; padding-inline: 17px; }
  .audience-grid article { grid-template-columns: 38% 62%; }
}

@media (max-width: 800px) {
  .hero-grid { grid-template-columns: 1fr; gap: 30px; padding-block: 55px; }
  .hero-art img { object-position: 58% center; }
  .trust-card { max-width: 500px; }
  .trust-grid { grid-template-columns: repeat(2,1fr); }
  .trust-grid > div:nth-child(3) { border-right: 1px solid rgba(255,255,255,.12); }
  .service-grid { grid-template-columns: repeat(2,1fr); }
  .audience-grid { grid-template-columns: 1fr; }
  .audience-grid article { grid-template-columns: 38% 62%; }
  .review-platform-grid { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
  .brand-logo { width: 145px; }
  .hero-art { width: 100%; transform: none; opacity: .32; }
  .hero-art img { object-position: 67% center; }
  .hero h1 { font-size: 2.7rem; }
  .hero-grid { padding-block: 45px; }
  .trust-grid { grid-template-columns: 1fr; }
  .trust-grid > div { border-right: 0 !important; }
  .service-grid { grid-template-columns: 1fr; }
  .section { padding-block: 52px; }
  .audience-grid article { grid-template-columns: 38% 62%; min-height: 160px; }
  .audience-art { min-height: 160px; }
  .coverage-grid { grid-template-columns: 1fr; }
  .footer-links { flex-wrap: wrap; }
}

/* London-wide coverage — homepage reference treatment */
.coverage-section { padding-block: 28px; background: #fff; }
.coverage-panel { display: grid; grid-template-columns: 205px minmax(0,1fr) 310px; align-items: center; gap: 20px; min-height: 210px; padding: 24px 25px; background: #f1f7f3; border: 1px solid #e1ece4; border-radius: 10px; }
.coverage-copy h2 { margin-bottom: 8px; color: var(--green); font-size: 1.25rem; letter-spacing: -.025em; }
.coverage-copy p { margin-bottom: 14px; color: #34473d; font-size: .76rem; line-height: 1.48; }
.coverage-search { display: flex; align-items: center; justify-content: space-between; min-height: 37px; overflow: hidden; color: #7a8880; background: #fff; border: 1px solid #d9e5dc; border-radius: 5px; font-size: .67rem; text-decoration: none; }
.coverage-search > span { padding-left: 11px; }
.coverage-search b { display: grid; align-self: stretch; width: 39px; color: #fff; background: var(--green); place-items: center; }
.coverage-search .lucide-icon { width: 17px; height: 17px; }
.borough-list { display: flex; align-content: center; flex-wrap: wrap; gap: 8px; }
.borough-list > span { display: inline-flex; align-items: center; gap: 5px; min-height: 29px; padding: 5px 8px; color: #35483e; background: #fff; border: 1px solid #dce7df; border-radius: 4px; font-size: .59rem; line-height: 1.1; white-space: nowrap; }
.borough-list .lucide-icon { width: 12px; height: 12px; color: var(--green); stroke-width: 2.1; }
.borough-list > a { width: 100%; margin-top: 1px; color: var(--green); font-size: .66rem; font-weight: 700; text-decoration: none; }
.coverage-panel .london-map { max-height: none; padding: 0; background: transparent; border: 0; border-radius: 0; }
.coverage-panel .london-map img { width: 100%; height: 185px; object-fit: contain; object-position: center; mix-blend-mode: multiply; }
.map-boroughs path { fill: #b9dfbd; stroke: #edf7ef; stroke-width: 4; transition: fill .2s ease; }
.map-boroughs path:nth-child(2n) { fill: #c9e8cc; }
.map-boroughs path:nth-child(3n) { fill: #a9d6ae; }
.coverage-panel:hover .map-boroughs path { fill: #acd9b1; }
.river { fill: none; stroke: #9dd5e5; stroke-width: 9; stroke-linecap: round; opacity: .9; }
.award-card {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 15px;
  overflow: hidden;
  background:
    radial-gradient(circle at 12% 4%,rgba(46,125,50,.16),transparent 42%),
    linear-gradient(145deg,#fff 15%,#f1f9f3 67%,#fff6e9);
  border-color: #c9dfce;
  box-shadow: 0 12px 30px rgba(28,87,43,.1),inset 0 1px 0 rgba(255,255,255,.92);
  transition: transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s ease,border-color .3s ease;
}
.award-card::before {
  position: absolute;
  top: 0;
  right: 18px;
  left: 18px;
  height: 3px;
  content: "";
  background: linear-gradient(90deg,transparent,var(--green) 25%,var(--orange) 75%,transparent);
  border-radius: 0 0 999px 999px;
  opacity: .9;
}
.award-card::after {
  position: absolute;
  right: -42px;
  bottom: -58px;
  width: 135px;
  height: 135px;
  content: "";
  background: radial-gradient(circle,rgba(255,126,0,.14),transparent 68%);
  pointer-events: none;
}
.award-card:hover {
  border-color: #9dc9a6;
  box-shadow: 0 20px 44px rgba(28,87,43,.15),0 8px 25px rgba(255,126,0,.08);
  transform: translateY(-5px);
}
.award-card > img {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 93px;
  padding: 8px;
  object-fit: contain;
  background: linear-gradient(135deg,rgba(255,255,255,.96),rgba(239,248,241,.9));
  border: 1px solid rgba(180,211,186,.85);
  border-radius: 10px;
  filter: saturate(1.08) contrast(1.02);
  transition: transform .3s ease,filter .3s ease;
}
.award-card:hover > img { filter: saturate(1.18) contrast(1.03); transform: scale(1.018); }
.award-card > div { position: relative; z-index: 1; }
.award-card > div strong { display: block; margin: 0; color: var(--green-dark); font: 800 .82rem/1.3 Manrope,sans-serif; }
.award-card > div p { margin: 4px 0 0; color: var(--muted); font-size: .67rem; line-height: 1.4; }
.customer-words { display: block; margin-top: 18px; padding: 30px; background: linear-gradient(135deg,rgba(237,247,239,.92),rgba(255,250,244,.86)); border: 1px solid #dae8dd; border-radius: 20px; }
.customer-words-heading { display: flex; align-items: end; justify-content: space-between; gap: 25px; margin-bottom: 20px; }
.customer-words-heading .eyebrow { margin-bottom: 5px; }
.customer-words-heading h3 { margin: 0; font-size: 1.45rem; }
.customer-words-heading > a { display: inline-flex; align-items: center; gap: 8px; color: var(--green); font-size: .72rem; font-weight: 700; text-decoration: none; white-space: nowrap; }
.customer-words-heading .google-g { width: 22px; height: 22px; flex-basis: 22px; }
.customer-word-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 14px; }
.customer-word-grid article { position: relative; min-height: 195px; padding: 22px; overflow: hidden; background: rgba(255,255,255,.9); border: 1px solid rgba(205,220,209,.95); border-radius: 15px; box-shadow: 0 9px 24px rgba(31,55,40,.07); transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease; }
.customer-word-grid article::after { position: absolute; right: 14px; bottom: -20px; color: rgba(46,125,50,.07); content: "“"; font: 800 7rem/1 Georgia,serif; }
.customer-word-grid article:hover { border-color: #acd0b2; box-shadow: 0 15px 32px rgba(31,75,42,.12); transform: translateY(-4px); }
.customer-meta { display: flex; align-items: center; gap: 10px; margin-bottom: 13px; }
.customer-meta > .google-g { margin-left: auto; }
.customer-avatar { display: grid; width: 36px; height: 36px; flex: 0 0 36px; color: var(--green-dark); background: #eaf5ec; border-radius: 50%; font: 700 .68rem/1 Manrope,sans-serif; place-items: center; }
.customer-meta div { display: grid; }
.customer-meta strong { font: 700 .76rem/1.25 Manrope,sans-serif; }
.customer-meta div span { color: #77857d; font-size: .62rem; }
.customer-word-grid .google-stars,.customer-word-grid .tp-stars { width: fit-content; margin-bottom: 10px; font-size: .73rem; }
.customer-word-grid blockquote { margin: 0; color: #46554d; font-size: .77rem; line-height: 1.58; }
.review-evidence-note { margin: 15px 0 0; color: #7a8780; font-size: .62rem; text-align: right; }

@media (max-width: 800px) {
  .coverage-panel { grid-template-columns: 1fr 1.6fr; }
  .coverage-panel .london-map { grid-column: 1 / -1; }
  .coverage-panel .london-map svg { max-height: 165px; }
  .coverage-panel .london-map img { height: 240px; }
  .review-section-intro { grid-template-columns: 1fr; align-items: start; gap: 20px; }
  .review-summary { flex-wrap: wrap; }
  .review-summary > span { flex: 1 1 160px; }
  .review-platform-grid { grid-template-columns: repeat(2,1fr); }
  .review-platform-grid article,.review-platform-grid .review-profile-card { grid-column: auto; }
  .customer-word-grid { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
  .coverage-section { padding-block: 18px; }
  .coverage-panel { grid-template-columns: 1fr; gap: 22px; padding: 22px 18px; }
  .borough-list { gap: 7px; }
  .borough-list > span { font-size: .62rem; }
  .coverage-panel .london-map { grid-column: auto; }
  .coverage-panel .london-map svg { max-height: 150px; }
  .coverage-panel .london-map img { height: auto; max-height: 240px; }
  .review-platform-grid { grid-template-columns: 1fr; }
  .review-section-intro h2 { font-size: 2rem; }
  .review-summary { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
  .review-summary > span { min-width: 0; padding: 11px; }
  .review-platform-grid .review-profile-card { min-height: 0; }
  .customer-words-heading { align-items: flex-start; flex-direction: column; }
  .review-evidence-note { text-align: left; }
  .hero { min-height: 680px; }
  .hero-grid { min-height: 680px; padding-bottom: 245px; }
  .hero .button-row { grid-template-columns: 1fr; }
  .hero .button-row .button { min-height: 46px; }
  .verification-note { font-size: .6rem; }
  .footer-powered { width: min(190px,62vw); }
}

/* Interactive clustered FAQ tiles */
.faq-section { padding-block: 76px; background: #fff; }
.faq-cluster .section-heading { max-width: 760px; margin-bottom: 32px; }
.faq-cluster .section-heading > p:last-child { margin: 10px 0 0; color: var(--muted); }
.faq-tiles { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); align-items: start; gap: 12px 14px; max-width: 1120px; margin: 0 auto; }
.faq-item { min-width: 0; border: 1px solid transparent; border-radius: 18px; transition: background .24s ease, border-color .24s ease, box-shadow .24s ease; }
.faq-item.active { grid-column: 1 / -1; padding: 6px; background: rgba(245,124,0,.12); border-color: rgba(245,124,0,.3); box-shadow: 0 12px 30px rgba(151,81,14,.13); transform: scale(1.005); }
.faq-tile { display: inline-flex; align-items: center; gap: 10px; min-height: 49px; padding: 8px 15px; color: #26364a; background: #fff; border: 1px solid #dfe5e1; border-radius: 999px; box-shadow: 0 3px 8px rgba(28,44,35,.11); cursor: pointer; transition: color .2s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.faq-item > .faq-tile { width: 100%; }
.faq-tile > span { display: grid; color: #43526a; place-items: center; }
.faq-tile .lucide-icon { width: 18px; height: 18px; stroke-width: 1.9; }
.faq-tile b { font: 500 .88rem/1.2 Inter,Arial,sans-serif; }
.faq-tile i { display: grid; width: 21px; height: 21px; margin-left: 2px; color: var(--green); background: #edf7ee; border-radius: 50%; font: 700 1rem/1 Arial,sans-serif; place-items: center; transition: transform .2s ease; }
.faq-tile:hover { color: var(--green-dark); background: rgba(232,245,234,.82); border-color: #9fcaa7; box-shadow: 0 8px 19px rgba(28,75,43,.15); transform: translateY(-3px); }
.faq-tile.active { color: #7c3d00; background: linear-gradient(135deg,rgba(255,229,198,.94),rgba(255,243,228,.88)); border-color: rgba(245,124,0,.42); box-shadow: inset 0 1px rgba(255,255,255,.8); transform: none; }
.faq-tile.active > span { color: var(--orange); }
.faq-tile.active i { color: #fff; background: var(--orange); transform: rotate(45deg); }
.faq-answers { display: contents; }
.faq-answer { display: grid; grid-template-columns: 46px 1fr; gap: 17px; margin-top: 3px; padding: 19px 22px 22px; background: transparent; border: 0; border-radius: 13px; box-shadow: none; opacity: 0; transform: translateY(-5px); transition: opacity .22s ease, transform .22s ease; }
.faq-answer[hidden] { display: none; }
.faq-answer.visible { opacity: 1; transform: translateY(0); }
.faq-answer-icon { display: grid; width: 44px; height: 44px; color: var(--orange); background: rgba(255,255,255,.82); border: 1px solid rgba(245,124,0,.2); border-radius: 12px; place-items: center; }
.faq-answer-icon .lucide-icon { width: 23px; height: 23px; }
.faq-answer h3 { margin-bottom: 8px; font-size: 1.15rem; }
.faq-answer p { margin: 0; color: #5c5147; font-size: .88rem; line-height: 1.7; }

@media (max-width: 700px) {
  .faq-section { padding-block: 58px; }
  .faq-tiles { grid-template-columns: 1fr 1fr; gap: 10px; }
  .faq-tile { width: 100%; justify-content: flex-start; border-radius: 14px; text-align: left; }
  .faq-tile i { margin-left: auto; }
}

@media (max-width: 460px) {
  .faq-tiles { grid-template-columns: 1fr; }
  .faq-answer { grid-template-columns: 1fr; padding: 23px; }
}

/* Adaptive screen system — final responsive layer */
:root {
  --space-section: clamp(3.4rem, 6vw, 5.4rem);
  --space-inline: clamp(1rem, 4vw, 2.5rem);
  --header-height: 70px;
  --mobile-actions-height: 0px;
}

body { padding-bottom: var(--mobile-actions-height); }
.shell { width: min(var(--layout-max), calc(100% - (var(--layout-gutter) * 2))); }
.section { padding-block: var(--space-section); }
.mobile-header-cta,.mobile-nav-book,.mobile-action-bar,.hero-mobile-benefits { display: none; }

.site-header { transition: min-height .25s ease, box-shadow .25s ease, background .25s ease; }
.site-header.scrolled { background: rgba(255,255,255,.97); box-shadow: 0 8px 28px rgba(25,55,37,.1); }
.site-header.scrolled .header-inner { min-height: 60px; }
.back-to-top { position: fixed; z-index: 24; right: 22px; bottom: 22px; display: grid; width: 44px; height: 44px; color: #fff; background: var(--green); border: 0; border-radius: 50%; box-shadow: 0 12px 28px rgba(23,77,44,.25); cursor: pointer; opacity: 0; pointer-events: none; transform: translateY(12px); transition: opacity .2s ease, transform .2s ease; place-items: center; }
.back-to-top.visible { opacity: 1; pointer-events: auto; transform: translateY(0); }

.footer-main { display: grid; grid-template-columns: 1.45fr repeat(3, .72fr); gap: clamp(1.5rem,4vw,4rem); align-items: start; }
.footer-brand-block > p { max-width: 280px; margin: 17px 0; color: #b7cbc4; font-size: .78rem; }
.footer-rating { display: flex; align-items: center; gap: 7px; color: #dce7e3; font-size: .68rem; }
.footer-rating .google-g { width: 20px; height: 20px; flex-basis: 20px; }
.footer-rating .google-stars { font-size: .68rem; letter-spacing: 0; }
.footer-powered { display: grid; gap: 6px; width: min(215px,100%); margin-top: 18px; }
.footer-powered > span { color: #78968c; font: 700 .56rem/1 Manrope,sans-serif; letter-spacing: .12em; text-transform: uppercase; }
.footer-powered img { width: 100%; border: 1px solid rgba(139,202,255,.26); border-radius: 10px; box-shadow: 0 8px 24px rgba(0,0,0,.2); opacity: .86; transition: opacity .2s ease, transform .2s ease, box-shadow .2s ease; }
.footer-powered:hover img { box-shadow: 0 10px 28px rgba(53,162,255,.2); opacity: 1; transform: translateY(-2px); }
.footer-column { display: grid; gap: 8px; }
.footer-column h3 { margin-bottom: 6px; color: #fff; font-size: .78rem; }
.footer-column a { color: #b7cbc4; font-size: .7rem; text-decoration: none; transition: color .2s ease, transform .2s ease; }
.footer-column a:hover { color: #fff; transform: translateX(2px); }
.footer-column p { margin: 0; color: #b7cbc4; font-size: .7rem; }
.footer-book { margin-top: 8px; color: #8fe09a !important; font-weight: 700; }
.footer-bottom { display: flex; justify-content: space-between; margin-top: 27px; padding-top: 18px; color: #77938a; border-top: 1px solid rgba(255,255,255,.1); font-size: .62rem; }

.home-page .site-footer { padding: 25px 0 0; color: #445149; background: #fff; border-top: 1px solid #e2e8e4; }
.home-page .footer-main { grid-template-columns: 1.25fr repeat(4,1fr); gap: clamp(1.2rem,3vw,2.8rem); }
.home-page .brand-footer { padding: 0; background: transparent; }
.home-page .footer-logo { width: 190px; }
.home-page .footer-brand-block > p { margin: 11px 0; color: #66746d; font-size: .68rem; }
.home-page .footer-rating { color: #35433c; }
.home-page .footer-powered { width: 145px; margin-top: 12px; }
.home-page .footer-powered > span { color: #7d8a84; }
.home-page .footer-powered img { border-radius: 7px; }
.home-page .footer-column { gap: 4px; }
.home-page .footer-column h3 { color: #18231e; font-size: .7rem; }
.home-page .footer-column a,.home-page .footer-column p { color: #506058; font-size: .61rem; line-height: 1.65; }
.home-page .footer-column a:hover { color: var(--green); }
.home-page .footer-book { color: var(--green) !important; }
.home-page .footer-bottom { width: 100%; max-width: none; margin-top: 18px; padding: 10px max(20px,calc((100vw - 1180px)/2)); color: #d5e2de; background: #0d2631; border: 0; }

.reveal { opacity: .985; transform: translateY(12px); transition: opacity .38s ease var(--reveal-delay,0ms), transform .45s cubic-bezier(.2,.7,.2,1) var(--reveal-delay,0ms); }
.reveal.revealed { opacity: 1; transform: translateY(0); }

@media (min-width: 1440px) {
  :root { --space-section: 5.8rem; }
  .shell { max-width: 1240px; }
  .hero,.hero-grid { min-height: 570px; }
  .hero-copy { max-width: 700px; }
  .hero h1 { max-width: 620px; font-size: 4.15rem; }
}

@media (min-width: 901px) {
  .hero-art img { object-position: center center; }
  .hero-shade { background: linear-gradient(90deg,rgba(255,255,255,.99) 0%,rgba(255,255,255,.94) 34%,rgba(255,255,255,.58) 52%,rgba(255,255,255,.07) 74%); }
  .hero-copy { max-width: 650px; }
}

@media (min-width: 901px) and (max-width: 1100px) {
  :root { --space-section: 4.2rem; --space-inline: 1.5rem; }
  .brand-logo { width: 166px; }
  .main-nav a { padding-inline: 7px; font-size: .67rem; }
  .header-cta { padding-inline: 15px; }
  .hero h1 { max-width: 580px; font-size: clamp(3rem,6vw,4rem); }
  .hero-art img { object-position: 59% center; }
  .trust-grid { grid-template-columns: repeat(5,minmax(0,1fr)); }
  .trust-grid > div { padding-inline: 9px; }
  .service-grid { grid-template-columns: repeat(2,1fr); }
  .service-card { min-height: 235px; }
  .footer-main { grid-template-columns: 1.3fr repeat(3,1fr); gap: 1.3rem; }
}

@media (max-width: 900px) {
  :root {
    --space-section: clamp(3rem, 13vw, 4rem);
    --space-inline: clamp(.9rem, 4vw, 1.25rem);
    --header-height: 64px;
    --mobile-actions-height: calc(72px + env(safe-area-inset-bottom));
  }
  html { scroll-padding-top: 76px; }
  body.nav-open { overflow: hidden; }
  .site-header { position: fixed; right: 0; left: 0; top: 0; background: rgba(255,255,255,.88); border-bottom-color: rgba(224,233,226,.8); backdrop-filter: blur(18px) saturate(1.25); }
  .header-inner { min-height: var(--header-height); gap: 10px; }
  .site-header.scrolled .header-inner { min-height: 58px; }
  .brand { max-width: calc(100% - 104px); }
  .brand-logo { width: clamp(152px,43vw,178px); height: 45px; }
  .menu-toggle { order: 4; width: 42px; height: 42px; margin-left: 0; background: #edf5ef; border: 1px solid #dce9df; border-radius: 13px; transition: background .2s ease, transform .2s ease; }
  .menu-toggle:active { transform: scale(.95); }
  .mobile-header-cta { display: grid; width: 42px; height: 42px; margin-left: auto; color: #fff; background: var(--green); border-radius: 13px; box-shadow: 0 7px 18px rgba(46,125,50,.2); text-decoration: none; place-items: center; }
  .mobile-header-cta .lucide-icon { width: 19px; height: 19px; }
  .main-nav { top: var(--header-height); display: grid; align-content: start; gap: 3px; height: calc(100dvh - var(--header-height)); padding: 20px var(--space-inline) 110px; background: rgba(248,251,249,.98); border: 0; border-radius: 0; box-shadow: none; opacity: 0; visibility: hidden; transform: translateY(-8px); transition: opacity .2s ease, transform .2s ease, visibility .2s; overflow-y: auto; }
  .main-nav.open { display: grid; opacity: 1; visibility: visible; transform: translateY(0); }
  .main-nav a { padding: 13px 14px; border-bottom: 1px solid #e3ebe5; border-radius: 10px; font: 700 .95rem Manrope,sans-serif; }
  .main-nav a.active { color: var(--green); background: #edf7ee; }
  .main-nav .mobile-nav-book { display: flex; align-items: center; justify-content: space-between; margin-top: 13px; color: #fff; background: var(--green); border: 0; }
  .header-cta { display: none; }

  main { padding-top: var(--header-height); }
  .hero { min-height: 630px; background: #f2f7f3; }
  .hero-art { inset: auto 0 0; height: 54%; opacity: 1; }
  .hero-art img { object-position: 68% center; }
  .hero-shade { background: linear-gradient(180deg,#fff 0%,rgba(255,255,255,.98) 45%,rgba(255,255,255,.74) 67%,rgba(255,255,255,.12) 100%); }
  .hero-grid { min-height: 630px; align-items: start; padding-block: 36px 245px; }
  .hero-copy { max-width: 100%; }
  .hero .eyebrow { margin-bottom: 11px; font-size: .65rem; }
  .hero h1 { max-width: 430px; margin-bottom: 15px; font-size: clamp(2.25rem,9.6vw,3rem); line-height: 1.01; letter-spacing: -.052em; }
  .hero-lede { max-width: 480px; margin-bottom: 14px; font-size: .94rem; line-height: 1.55; }
  .hero-mobile-benefits { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 18px; }
  .hero-mobile-benefits > span { display: inline-flex; align-items: center; gap: 5px; padding: 6px 9px; color: #365443; background: rgba(255,255,255,.78); border: 1px solid #dce9df; border-radius: 999px; font-size: .62rem; font-weight: 600; backdrop-filter: blur(8px); }
  .hero-mobile-benefits .lucide-icon { width: 13px; height: 13px; color: var(--green); }
  .hero .button-row { display: grid; grid-template-columns: 1.15fr .85fr; gap: 9px; }
  .hero .button-row .button { width: auto; min-width: 0; min-height: 48px; padding-inline: 10px; font-size: .76rem; }
  .verification-note { gap: 4px; margin-top: 14px; font-size: .65rem; line-height: 1.45; }
  .verification-note .google-stars { font-size: .66rem; }
  .verification-note .review-divider { display: none; }

  .trust-strip { position: relative; margin-top: -1px; overflow: hidden; }
  .trust-grid { display: flex; width: auto; padding-bottom: 9px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--green) rgba(255,255,255,.18); }
  .trust-grid::-webkit-scrollbar { display: block; height: 6px; }
  .trust-grid::-webkit-scrollbar-track { background: rgba(255,255,255,.18); border-radius: 999px; }
  .trust-grid::-webkit-scrollbar-thumb { background: linear-gradient(90deg,#8fe09a,var(--orange)); border-radius: 999px; }
  .trust-grid > div { flex: 0 0 74%; min-height: 76px; padding: 15px 18px; border-right: 1px solid rgba(255,255,255,.12) !important; border-bottom: 0 !important; scroll-snap-align: start; }
  .trust-grid > div:last-child { border-right: 0 !important; }

  .section-heading { margin-bottom: 25px; }
  .section-heading h2 { font-size: clamp(1.75rem,8vw,2.15rem); }
  .section-heading .eyebrow { font-size: .65rem; }

  .service-grid { display: flex; gap: 12px; margin-inline: calc(var(--space-inline) * -1); padding: 3px var(--space-inline) 14px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--green) #e5eee7; }
  .home-service-nav { display: flex; margin: -20px calc(var(--space-inline) * -1) 28px; padding: 7px var(--space-inline) 13px; overflow-x: auto; border-inline: 0; border-radius: 0; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--green) #e5eee7; }
  .home-service-nav::-webkit-scrollbar,.service-grid::-webkit-scrollbar,.audience-grid::-webkit-scrollbar { display: block; height: 7px; }
  .home-service-nav::-webkit-scrollbar-track,.service-grid::-webkit-scrollbar-track,.audience-grid::-webkit-scrollbar-track { background: #e5eee7; border-radius: 999px; }
  .home-service-nav::-webkit-scrollbar-thumb,.service-grid::-webkit-scrollbar-thumb,.audience-grid::-webkit-scrollbar-thumb { background: linear-gradient(90deg,var(--green),var(--orange)); border: 1px solid #fff; border-radius: 999px; }
  .home-service-nav a { flex: 0 0 145px; justify-content: flex-start; scroll-snap-align: start; }
  .service-card { flex: 0 0 min(82vw,320px); min-height: 285px; scroll-snap-align: center; }
  .service-card:first-child { scroll-snap-align: start; }
  .service-card p { min-height: auto; }

  .audience-grid { display: flex; gap: 12px; margin-inline: calc(var(--space-inline) * -1); padding: 3px var(--space-inline) 14px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--green) #e5eee7; }
  .audience-grid article { flex: 0 0 min(88vw,350px); grid-template-columns: 43% 57%; min-height: 180px; scroll-snap-align: center; }
  .audience-grid article:first-child { scroll-snap-align: start; }

  .coverage-panel { padding: 24px 17px; border-radius: 18px; box-shadow: 0 10px 30px rgba(27,67,42,.07); }
  .coverage-copy h2 { font-size: 1.45rem; }
  .borough-list { max-height: 104px; overflow: hidden; }
  .coverage-panel .london-map img { max-height: 250px; }

  .review-platform-grid,.customer-word-grid { gap: 11px; }
  .review-platform-grid > article,.customer-word-grid > article { border-radius: 16px; }
  .customer-words-heading > a { order: 3; }

  .faq-tile { min-height: 55px; padding-inline: 13px; }
  .faq-tile b { font-size: .78rem; }

  .final-cta { text-align: center; }
  .cta-inner { align-items: center; gap: 15px; }
  .final-cta { padding-block: 24px; }
  .final-cta h2,.final-cta .cta-inner > div:first-child > p:last-child { display: block; }
  .final-cta h2 { margin: 0 0 5px; font-size: 1.35rem; }
  .final-cta .cta-inner > div:first-child > p:last-child { font-size: .75rem; }
  .final-cta .button-row { width: 100%; }
  .final-cta .button-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  .final-cta .button-row .button { width: 100%; min-height: 42px; }

  .site-footer { padding: 42px 0 calc(25px + env(safe-area-inset-bottom)); }
  .footer-main { grid-template-columns: 1fr 1fr; gap: 30px 20px; text-align: left; }
  .footer-brand-block { grid-column: 1 / -1; }
  .brand-footer { justify-content: flex-start; margin-inline: 0; }
  .footer-brand-block > p { max-width: 330px; }
  .footer-powered { width: min(205px,65vw); }
  .footer-contact { grid-column: 1 / -1; padding: 18px; background: rgba(255,255,255,.05); border-radius: 14px; }
  .footer-bottom { padding-bottom: 10px; }
  .home-page .footer-main { grid-template-columns: 1fr 1fr; }
  .home-page .footer-brand-block { grid-column: 1 / -1; }
  .home-page .footer-contact { grid-column: 1 / -1; color: #405048; background: #f3f8f4; }
  .home-page .footer-powered { width: 145px; }
  .home-page .footer-bottom { padding-bottom: calc(10px + env(safe-area-inset-bottom)); }

  .mobile-action-bar { position: fixed; z-index: 40; right: 9px; bottom: calc(8px + env(safe-area-inset-bottom)); left: 9px; display: grid; grid-template-columns: 1fr 1.25fr 1fr; min-height: 62px; padding: 6px; background: rgba(255,255,255,.93); border: 1px solid rgba(214,226,217,.9); border-radius: 19px; box-shadow: 0 15px 42px rgba(20,55,35,.2); backdrop-filter: blur(16px) saturate(1.25); }
  .mobile-action-bar a { display: grid; align-content: center; justify-items: center; gap: 3px; color: #456052; border-radius: 14px; font-size: .6rem; text-decoration: none; }
  .mobile-action-bar .lucide-icon { width: 19px; height: 19px; }
  .mobile-action-bar a.primary { color: #fff; background: var(--green); box-shadow: 0 6px 16px rgba(46,125,50,.22); }
  .mobile-action-bar b { font-family: Manrope,sans-serif; }
  .back-to-top { right: 16px; bottom: calc(var(--mobile-actions-height) + 12px); width: 40px; height: 40px; }
}

@media (max-width: 389px) {
  .hero { min-height: 650px; }
  .hero-grid { min-height: 650px; padding-bottom: 235px; }
  .hero h1 { font-size: 2.35rem; }
  .hero .button-row { grid-template-columns: 1fr; }
  .hero-mobile-benefits > span:last-child { display: none; }
  .footer-main { grid-template-columns: 1fr; }
  .footer-column,.footer-contact { grid-column: 1; }
}

@media (max-width: 430px) {
  .hero h1 { max-width: 100%; font-size: clamp(2.1rem,9.8vw,2.45rem); overflow-wrap: normal; }
  .hero .button-row { grid-template-columns: 1fr; }
  .hero-grid { padding-bottom: 230px; }
  .verification-note { display: grid; grid-template-columns: auto auto 1fr; align-items: center; }
  .verification-note .review-divider { display: none; }
  .verification-note .opening-hours-inline { grid-column: 1 / -1; }
}

/* Unified brand feature bar used across Home and inner-page templates. */
.home-page .trust-strip { color: var(--ink); background: #fff; border-block: 1px solid #e8ece9; }
.home-page .trust-grid > div { min-height: 82px; border-right: 0; }
.home-page .trust-grid > div:nth-child(3) { color: #fff; background: var(--orange); }
.home-page .trust-grid > div:nth-child(4) { color: var(--orange); background: #fff8f0; }
.home-page .trust-grid .trust-icon { color: #111827; }
.home-page .trust-grid > div:nth-child(3) .trust-icon,
.home-page .trust-grid > div:nth-child(3) small { color: #fff; }
.home-page .trust-grid > div:nth-child(4) .trust-icon { color: var(--orange); }
.home-page .trust-grid > div:nth-child(4) small { color: #93520f; }
.home-page .trust-grid small { color: #69756f; }

@media (max-width: 800px) {
  .home-page .trust-grid::-webkit-scrollbar-track { background: #e5eee7; }
  .home-page .trust-grid > div { border-right: 1px solid #e5eae7 !important; }
}

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
  .audience-grid article:hover .audience-art img,.service-card:hover { transform: none !important; }
}

/* Completion pass: mobile content is stacked instead of hidden in swipe-only rows. */
@media (min-width: 901px) {
  .home-page .hero,.home-page .hero-grid { min-height: 500px; }
  .home-page .hero-grid { padding-block: 38px; }
}

@media (max-width: 900px) {
  html,body { width: 100%; max-width: 100%; overflow-x: clip; }
  .shell { width: min(100% - 28px,var(--content)); max-width: 100%; }
  .hero-copy,.hero-lede,.button-row,.verification-note { width: 100%; max-width: 100%; min-width: 0; }
  .hero h1,.hero-lede { overflow-wrap: normal; word-break: normal; }
  .hero .button-row { grid-template-columns: minmax(0,1.15fr) minmax(0,.85fr); }
  .hero .button-row .button { min-width: 0; white-space: normal; text-align: center; }
  .trust-grid { display: grid; grid-template-columns: 1fr 1fr; width: auto; padding-bottom: 0; overflow: visible; }
  .trust-grid > div { min-width: 0; min-height: 72px; padding: 13px 12px; border-right: 1px solid #e5eae7 !important; border-bottom: 1px solid #e5eae7 !important; }
  .trust-grid > div:nth-child(even) { border-right: 0 !important; }
  .trust-grid > div:last-child { grid-column: 1 / -1; justify-content: center; border-right: 0 !important; border-bottom: 0 !important; }
  .home-page .trust-grid > div:nth-child(3),
  .home-page .trust-grid > div:nth-child(4) { color: var(--ink); background: #fff; }
  .home-page .trust-grid > div:nth-child(3) .trust-icon,
  .home-page .trust-grid > div:nth-child(3) small,
  .home-page .trust-grid > div:nth-child(4) .trust-icon { color: #111827; }
  .home-page .trust-grid > div:nth-child(4) small { color: #69756f; }
  .service-grid { display: grid; grid-template-columns: 1fr; gap: 12px; margin-inline: 0; padding: 3px 0 14px; overflow: visible; }
  .service-card { width: 100%; min-width: 0; min-height: 0; }
  .home-service-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin: -20px 0 28px; padding: 8px; overflow: visible; border: 1px solid #dce7de; border-radius: 14px; }
  .home-service-nav a { min-width: 0; justify-content: flex-start; }
  .audience-grid { display: grid; grid-template-columns: 1fr; gap: 12px; margin-inline: 0; padding: 3px 0 14px; overflow: visible; }
  .audience-grid article { width: 100%; min-width: 0; grid-template-columns: 40% 60%; min-height: 180px; }
  .audience-grid article > div { min-width: 0; }
}

@media (max-width: 430px) {
  .hero .button-row { grid-template-columns: 1fr; }
}
