:root {
  --ink: #07111f;
  --ink-2: #0d1e33;
  --ink-3: #142b45;
  --blue: #83d2ce;
  --blue-light: #83d2ce;
  --blue-deep: #477e7a;
  --white: #f7fafc;
  --pale: #eaf2f8;
  --mist: #b9c8d5;
  --muted: #54677a;
  --line: rgba(193, 216, 234, 0.18);
  --dark-line: rgba(8, 28, 48, 0.16);
  --display: "Barlow Condensed", Impact, sans-serif;
  --body: "Manrope", Arial, sans-serif;
  --content: min(1160px, calc(100% - 40px));
  color-scheme: dark;
}

* { box-sizing: border-box; }
html { max-width: 100%; overflow-x: clip; overscroll-behavior-x: none; touch-action: pan-y pinch-zoom; background: var(--ink); scroll-behavior: smooth; }
body { min-width: 0; max-width: 100%; margin: 0; overflow-x: hidden; overflow-x: clip; overscroll-behavior-x: none; touch-action: pan-y pinch-zoom; background: var(--ink); color: var(--white); font-family: var(--body); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
.site-header, main, .site-footer { width: 100%; max-width: 100%; overflow-x: clip; }
a { color: inherit; text-decoration: none; }
button, input, textarea { font: inherit; }
button { -webkit-tap-highlight-color: transparent; }
img { display: block; max-width: 100%; }

.skip-link { position: absolute; z-index: 200; top: -100px; left: 14px; padding: 11px 15px; background: var(--blue); color: var(--ink); font-weight: 800; }
.skip-link:focus { top: 14px; }
.content-shell { width: var(--content); margin-inline: auto; }
.section { padding: 78px 0; }
.section-light { background: var(--white); color: var(--ink); }
.eyebrow { margin: 0 0 12px; color: var(--blue-light); font-size: 10px; font-weight: 800; letter-spacing: 0.14em; line-height: 1.35; text-transform: uppercase; }
.section-light .eyebrow { color: var(--blue-deep); }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { font-family: var(--display); font-weight: 600; letter-spacing: -0.026em; text-transform: uppercase; }
h1 { margin-bottom: 21px; font-size: clamp(53px, 12vw, 108px); line-height: 0.84; }
h2 { margin-bottom: 0; font-size: clamp(43px, 8vw, 79px); line-height: 0.86; }
h1 em, h2 em { color: var(--blue-light); font-style: normal; }
.section-light h1 em, .section-light h2 em { color: var(--blue); }
p { font-size: 14px; line-height: 1.74; }
.lead-copy { color: var(--white); font-size: 17px; font-weight: 500; line-height: 1.65; }

/* Global navigation: deliberately normal flow, never sticky or fixed. */
.site-header { position: relative; z-index: 20; background: var(--ink); border-bottom: 1px solid rgba(220, 236, 249, 0.14); }
.nav-shell { display: flex; align-items: center; justify-content: space-between; width: var(--content); min-height: 77px; margin: 0 auto; gap: 14px; }
.brand { display: inline-flex; align-items: center; min-width: 0; gap: 10px; }
.brand-mark { flex: 0 0 auto; width: 42px; height: 42px; object-fit: contain; }
.brand-copy { display: grid; gap: 3px; min-width: 0; line-height: 1; text-transform: uppercase; }
.brand-copy strong { color: var(--white); font-size: 12px; font-weight: 800; letter-spacing: 0.105em; white-space: nowrap; }
.brand-copy span { color: var(--blue-light); font-size: 8px; font-weight: 800; letter-spacing: 0.18em; white-space: nowrap; }
.desktop-nav { display: none; align-items: center; justify-content: center; gap: clamp(13px, 1.75vw, 26px); margin-left: auto; }
.desktop-nav a { color: #d1e0eb; font-size: 10px; font-weight: 800; letter-spacing: 0.065em; white-space: nowrap; }
.desktop-nav a:hover, .desktop-nav a:focus-visible { color: var(--blue-light); }
.nav-quote { display: none; align-items: center; justify-content: center; min-height: 40px; padding: 0 15px; background: var(--blue); color: var(--ink); font-size: 10px; font-weight: 800; letter-spacing: 0.075em; text-transform: uppercase; transition: background 160ms ease, transform 160ms ease; }
.nav-quote:hover, .nav-quote:focus-visible { background: var(--blue-light); transform: translateY(-1px); }
.menu-toggle { display: grid; width: 44px; height: 44px; place-content: center; gap: 5px; padding: 0; border: 1px solid rgba(231, 243, 252, 0.42); background: transparent; color: var(--white); cursor: pointer; }
.menu-toggle span { display: block; width: 20px; height: 1.5px; background: currentColor; transition: transform 180ms ease, opacity 180ms ease; }
.menu-toggle.is-open span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.menu-toggle.is-open span:nth-child(2) { opacity: 0; }
.menu-toggle.is-open span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }
.mobile-menu { display: block; background: #0a1728; border-top: 1px solid var(--line); }
.mobile-menu[hidden] { display: none !important; }
.mobile-menu nav { display: grid; width: var(--content); margin: 0 auto; padding-top: 12px; }
.mobile-menu nav a { padding: 12px 0; border-bottom: 1px solid var(--line); font: 600 23px/1 var(--display); letter-spacing: 0.035em; text-transform: uppercase; }
.mobile-quote { display: flex; align-items: center; justify-content: center; width: var(--content); min-height: 49px; margin: 15px auto 22px; background: var(--blue); color: var(--ink); font-size: 11px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }

.hero { position: relative; min-height: min(715px, calc(100svh - 77px)); display: grid; align-items: end; overflow: hidden; isolation: isolate; background: var(--ink); }
.hero-image { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; object-position: 55% center; filter: saturate(0.86) contrast(1.03); }
.hero-veil { position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(3, 10, 19, 0.94) 0%, rgba(5, 15, 27, 0.73) 47%, rgba(8, 18, 31, 0.26) 100%), linear-gradient(0deg, rgba(3, 10, 19, 0.72), transparent 52%); }
.hero-content { padding: 88px 0 74px; }
.hero-kicker { display: flex; align-items: center; gap: 9px; margin-bottom: 18px; color: #d8e8f2; font-size: 9px; font-weight: 800; letter-spacing: 0.12em; line-height: 1.4; text-transform: uppercase; }
.hero-kicker span { width: 4px; height: 4px; background: var(--blue); border-radius: 50%; }
.hero h1 { max-width: 785px; }
.hero-text { max-width: 450px; margin-bottom: 29px; color: #dce7ef; }
.action-row { display: flex; flex-direction: column; align-items: flex-start; gap: 11px; }
.button { display: inline-flex; align-items: center; justify-content: center; min-width: min(100%, 218px); min-height: 51px; padding: 0 19px; border: 1px solid transparent; font-size: 10px; font-weight: 800; letter-spacing: 0.08em; text-align: center; text-transform: uppercase; cursor: pointer; transition: background 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease; }
.button-primary { background: var(--blue); color: var(--ink); }
.button-primary:hover, .button-primary:focus-visible { background: var(--blue-light); transform: translateY(-2px); }
.button-dark { border-color: rgba(238, 248, 255, 0.5); background: rgba(9, 23, 38, 0.24); color: var(--white); }
.button-dark:hover, .button-dark:focus-visible { border-color: var(--blue-light); color: var(--blue-light); }
.trust-strip { background: var(--blue); color: var(--ink); }
.trust-strip .content-shell { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-height: 53px; padding: 11px 0; font-size: 10px; font-weight: 800; letter-spacing: 0.095em; text-transform: uppercase; }
.trust-strip i { width: 4px; height: 4px; background: var(--ink); border-radius: 50%; opacity: 0.65; }
.trust-strip p { width: 100%; margin: 0; font-size: 9px; line-height: 1.2; opacity: 0.76; }

.section-intro { max-width: 740px; }
.split-heading { display: grid; gap: 19px; align-items: end; max-width: none; }
.split-heading > p { max-width: 370px; margin-bottom: 0; color: var(--muted); }
.services { position: relative; }
.services::before { position: absolute; top: 0; left: 0; width: 100%; height: 4px; background: var(--blue); content: ""; }
.service-grid { display: grid; gap: 13px; margin-top: 37px; }
.service-card { position: relative; display: flex; flex-direction: column; min-height: 300px; padding: 27px; overflow: hidden; background: #e8f0f6; color: var(--ink); transition: transform 180ms ease, box-shadow 180ms ease; }
.service-card:hover, .service-card:focus-visible { transform: translateY(-4px); box-shadow: 0 10px 23px rgba(10, 33, 55, 0.16); }
.service-card-dark { background: var(--ink-2); color: var(--white); }
.service-index { position: absolute; top: 24px; right: 25px; color: #7991a8; font: 600 13px var(--display); letter-spacing: 0.08em; }
.service-card-dark .service-index { color: var(--blue-light); }
.service-rule { display: block; width: 42px; height: 3px; margin: 42px 0 25px; background: var(--blue); }
.service-card h3 { margin-bottom: 13px; font-size: 39px; line-height: 0.83; }
.service-card p { max-width: 360px; margin-bottom: 28px; color: var(--muted); font-size: 12px; }
.service-card-dark p { color: #c2d2df; }
.text-link { width: fit-content; margin-top: auto; padding-bottom: 6px; border-bottom: 2px solid var(--blue); color: inherit; font-size: 10px; font-weight: 800; letter-spacing: 0.075em; text-transform: uppercase; }
.dark-link { color: var(--ink); }

.about { position: relative; overflow: hidden; background: var(--ink); }
.about::before { position: absolute; top: 15%; left: -20%; width: 67%; height: 1px; background: rgba(86, 184, 250, 0.35); content: ""; transform: rotate(-22deg); }
.about-grid { position: relative; display: grid; gap: 45px; align-items: center; }
.about-media { position: relative; }
.about-image-wrap { width: 100%; aspect-ratio: 4 / 3; padding: 7px; background: #dfeaf0; }
.about-image-wrap img { width: 100%; height: 100%; object-fit: contain; object-position: left center; background: #dfeaf0; }
.about-media > p { margin: 12px 0 0; color: var(--mist); font-size: 9px; font-weight: 800; letter-spacing: 0.105em; text-transform: uppercase; }
.about-copy > p:not(.eyebrow) { max-width: 540px; color: var(--mist); }
.about-copy h2 { margin-bottom: 27px; }
.about-copy .lead-copy { color: var(--white); }
.highlights { display: grid; margin-top: 31px; border-top: 1px solid var(--line); }
.highlights div { display: grid; grid-template-columns: 57px 1fr; align-items: center; min-height: 58px; border-bottom: 1px solid var(--line); }
.highlights b { color: var(--blue-light); font: 600 25px var(--display); letter-spacing: -0.02em; }
.highlights span { font-size: 11px; font-weight: 700; letter-spacing: 0.05em; }

.approach { background: #0d2035; }
.approach .split-heading > p, .process-service .split-heading > p { color: #c5d4e1; }
.process-list { display: grid; gap: 1px; margin: 38px 0 0; padding: 0; background: rgba(137, 183, 219, 0.21); list-style: none; }
.process-list li { min-height: 201px; padding: 25px; background: #0d2035; }
.process-list span { display: block; margin-bottom: 32px; color: var(--blue-light); font: 600 16px var(--display); letter-spacing: 0.08em; }
.process-list h3 { margin-bottom: 9px; font-size: 29px; line-height: 0.9; }
.process-list p { max-width: 285px; margin-bottom: 0; color: #b9cad8; font-size: 12px; }

.work .split-heading { margin-bottom: 36px; }
.gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.gallery-card { min-height: 165px; padding: 0; overflow: hidden; border: 0; background: #d5e1ea; cursor: zoom-in; }
.gallery-card img { width: 100%; height: 100%; object-fit: cover; transition: transform 280ms ease; }
.gallery-card:hover img, .gallery-card:focus-visible img { transform: scale(1.04); }
.gallery-card:nth-child(1) { grid-row: span 2; min-height: 339px; }
.gallery-card:nth-child(4), .gallery-card:nth-child(6) { grid-column: span 2; min-height: 210px; }

.areas { background: var(--pale); color: var(--ink); }
.areas-grid { display: grid; gap: 35px; align-items: center; }
.areas p:not(.eyebrow) { max-width: 470px; margin: 23px 0 27px; color: var(--muted); }
.area-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0; margin: 0; padding: 0; border-top: 1px solid var(--dark-line); list-style: none; }
.area-list li { min-height: 58px; display: flex; align-items: center; border-bottom: 1px solid var(--dark-line); font: 600 25px var(--display); letter-spacing: -0.01em; text-transform: uppercase; }
.area-list li::before { width: 7px; height: 7px; margin-right: 10px; background: var(--blue); content: ""; }

.faq { color: var(--ink); }
.faq-grid { display: grid; gap: 36px; }
.faq-grid > div > p:not(.eyebrow) { max-width: 365px; margin: 23px 0 23px; color: var(--muted); }
.faq-list { border-top: 1px solid var(--dark-line); }
details { border-bottom: 1px solid var(--dark-line); }
summary { position: relative; padding: 19px 32px 19px 0; cursor: pointer; list-style: none; font-size: 13px; font-weight: 800; line-height: 1.5; }
summary::-webkit-details-marker { display: none; }
summary::after { position: absolute; top: 16px; right: 3px; color: var(--blue); content: "+"; font: 400 28px/1 var(--display); }
details[open] summary::after { content: "–"; }
details p { max-width: 650px; margin: -4px 0 20px; color: var(--muted); font-size: 12px; }

.enquiry { padding: 78px 0; background: var(--ink-2); }
.enquiry-grid { display: grid; gap: 37px; align-items: start; }
.eyebrow-blue { color: var(--blue-light); }
.enquiry h2 { margin-bottom: 22px; }
.enquiry > .enquiry-grid > div > p:not(.eyebrow) { max-width: 430px; color: #c6d6e2; }
.direct-contact { display: grid; gap: 8px; margin-top: 27px; }
.direct-contact a { width: fit-content; border-bottom: 1px solid rgba(105, 201, 255, 0.65); color: var(--blue-light); font-size: 12px; font-weight: 700; overflow-wrap: anywhere; }
.enquiry-form { display: grid; gap: 15px; padding: 22px; background: var(--white); color: var(--ink); }
.enquiry-form label { display: grid; gap: 7px; color: #334b60; font-size: 10px; font-weight: 800; letter-spacing: 0.07em; text-transform: uppercase; }
.form-row { display: grid; gap: 15px; }
.enquiry-form input, .enquiry-form textarea { width: 100%; padding: 13px 12px; border: 1px solid #b5c5d1; border-radius: 0; outline: none; background: #f7fafc; color: var(--ink); font-size: 13px; font-weight: 500; letter-spacing: 0; text-transform: none; resize: vertical; }
.enquiry-form input:focus, .enquiry-form textarea:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(25, 150, 255, 0.18); }
.enquiry-form .button { width: fit-content; margin-top: 2px; }
.form-note, .form-status { margin: -2px 0 0; color: #5e7080; font-size: 10px; line-height: 1.6; }
.form-status { min-height: 15px; color: var(--blue-deep); font-weight: 700; }
.form-honeypot { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

.site-footer { background: #040b15; }
.footer-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 34px 22px; padding: 49px 0 38px; }
.footer-brand-block { grid-column: 1 / -1; }
.footer-brand-block > p { margin: 18px 0 14px; color: #c2d1dc; font-size: 10px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
.footer-instagram { border-bottom: 1px solid rgba(105, 201, 255, 0.7); color: var(--blue-light); font-size: 10px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
.footer-grid h3 { margin-bottom: 16px; color: var(--blue-light); font-size: 18px; letter-spacing: 0.04em; }
.footer-grid nav, .footer-grid > div:last-child { display: grid; align-content: start; gap: 9px; }
.footer-grid nav a, .footer-grid > div:last-child > a { color: #d6e2eb; font-size: 10px; font-weight: 600; line-height: 1.5; overflow-wrap: anywhere; }
.footer-grid nav a:hover, .footer-grid nav a:focus-visible, .footer-grid > div:last-child > a:hover, .footer-grid > div:last-child > a:focus-visible { color: var(--blue-light); }
.footer-location { margin: 9px 0 0; color: #91a7b7; font-size: 10px; }
.footer-bottom { display: flex; flex-direction: column; gap: 8px; padding: 16px 0 max(21px, env(safe-area-inset-bottom)); border-top: 1px solid var(--line); color: #778c9d; font-size: 9px; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; }

/* Service pages have text-led headers; no hero images or overlaid image content. */
.inner-header { background: var(--ink); }
.service-page-header { padding: 76px 0 62px; background: var(--ink-2); border-bottom: 4px solid var(--blue); }
.service-page-header h1 { max-width: 690px; margin-bottom: 18px; }
.service-page-header > .content-shell > p:last-child { max-width: 520px; margin-bottom: 0; color: #cad8e4; font-size: 16px; }
.service-overview { background: var(--ink); }
.two-col { display: grid; gap: 28px; align-items: start; }
.two-col > div:last-child > p:not(.lead-copy) { color: var(--mist); }
.two-col .button { margin-top: 8px; }
.service-projects .section-intro { margin-bottom: 33px; }
.service-image-grid { display: grid; gap: 12px; }
.service-image-grid img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: #dce6ed; }
.process-service { background: var(--ink-2); }
.service-faq { padding-bottom: 78px; }
.service-enquiry { padding-top: 79px; }

.lightbox { width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 62px 22px 22px; border: 0; background: rgba(3, 10, 18, 0.97); }
.lightbox::backdrop { background: rgba(3, 10, 18, 0.83); }
.lightbox[open] { display: grid; place-items: center; }
.lightbox img { max-width: min(1200px, 100%); max-height: calc(100dvh - 88px); width: auto; height: auto; object-fit: contain; box-shadow: 0 16px 58px rgba(0, 0, 0, 0.45); }
.lightbox-close { position: absolute; top: 15px; right: 18px; min-height: 39px; padding: 0 13px; border: 1px solid rgba(233, 247, 255, 0.55); background: var(--ink); color: var(--white); font-size: 10px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; cursor: pointer; }
.lightbox-close:hover, .lightbox-close:focus-visible { border-color: var(--blue-light); color: var(--blue-light); }

:focus-visible { outline: 3px solid var(--blue-light); outline-offset: 3px; }
@media (min-width: 560px) {
  :root { --content: min(1160px, calc(100% - 58px)); }
  .action-row { flex-direction: row; flex-wrap: wrap; }
  .trust-strip p { width: auto; margin-left: auto; }
  .service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .gallery-card, .gallery-card:nth-child(1), .gallery-card:nth-child(4), .gallery-card:nth-child(6) { grid-column: auto; grid-row: auto; min-height: 200px; }
  .gallery-card:nth-child(1), .gallery-card:nth-child(6) { grid-column: span 2; }
  .gallery-card:nth-child(1) { min-height: 200px; }
  .form-row { grid-template-columns: repeat(2, 1fr); }
  .footer-grid { grid-template-columns: 1.4fr repeat(3, 1fr); }
  .footer-brand-block { grid-column: auto; }
  .footer-bottom { flex-direction: row; justify-content: space-between; }
  .service-image-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 860px) {
  :root { --content: min(1160px, calc(100% - 80px)); }
  .nav-shell { min-height: 83px; }
  .desktop-nav, .nav-quote { display: flex; }
  .menu-toggle, .mobile-menu { display: none !important; }
  .hero { min-height: 684px; }
  .hero-content { padding: 101px 0 93px; }
  .hero-image { object-position: center; }
  .section { padding: 111px 0; }
  .split-heading { grid-template-columns: minmax(0, 1fr) 0.54fr; gap: 50px; }
  .split-heading > p { justify-self: end; }
  .about-grid { grid-template-columns: minmax(0, 0.96fr) minmax(0, 0.84fr); gap: clamp(60px, 9vw, 128px); }
  .about-image-wrap { padding: 10px; }
  .process-list { grid-template-columns: repeat(3, 1fr); }
  .process-list li { min-height: 230px; padding: 32px; }
  .gallery { gap: 13px; grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .gallery-card, .gallery-card:nth-child(1), .gallery-card:nth-child(4), .gallery-card:nth-child(6) { grid-column: auto; grid-row: auto; min-height: 225px; }
  .gallery-card:nth-child(1), .gallery-card:nth-child(6) { grid-column: span 2; }
  .areas-grid { grid-template-columns: 0.9fr 1fr; gap: clamp(50px, 10vw, 148px); }
  .area-list { grid-template-columns: repeat(3, 1fr); }
  .faq-grid { grid-template-columns: 0.7fr 1fr; gap: clamp(55px, 11vw, 150px); }
  .enquiry { padding: 111px 0; }
  .enquiry-grid { grid-template-columns: 0.75fr 1fr; gap: clamp(50px, 9vw, 120px); }
  .enquiry-form { padding: 31px; }
  .service-page-header { padding: 97px 0 80px; }
  .two-col { grid-template-columns: 0.85fr 1fr; gap: clamp(55px, 10vw, 150px); }
  .service-projects .section-intro { display: grid; grid-template-columns: 0.85fr 1fr; align-items: end; max-width: none; }
  .service-projects .section-intro > p:last-child { max-width: 360px; justify-self: end; margin-bottom: 0; color: var(--muted); }
}
@media (min-width: 1160px) { .desktop-nav { gap: 28px; } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; } }

/* Active-build routes: gallery, coverage and expanded service detail. */
.gallery-callout { display: flex; flex-direction: column; gap: 17px; align-items: flex-start; padding-top: 27px; }
.gallery-callout p { margin: 0; color: var(--muted); font-size: 13px; }
.gallery-callout .button { min-width: 255px; }
.page-header { padding: 73px 0 61px; background: var(--ink-2); border-bottom: 4px solid var(--blue); }
.page-header h1 { max-width: 700px; margin-bottom: 18px; }
.page-header > .content-shell > p:last-child { max-width: 610px; margin: 0; color: #cad8e4; font-size: 16px; }
.page-header strong { color: var(--blue-light); }
.gallery-page-section { padding-top: 57px; }
.gallery-page-toolbar { display: flex; flex-direction: column; gap: 11px; align-items: flex-start; margin-bottom: 24px; color: var(--muted); }
.gallery-page-toolbar p { margin: 0; max-width: 560px; }
.gallery-page-toolbar span { color: var(--ink); font-size: 10px; font-weight: 800; letter-spacing: 0.095em; text-transform: uppercase; }
.full-gallery-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.full-gallery-card { min-height: 156px; padding: 0; overflow: hidden; border: 0; background: #d6e3ec; cursor: zoom-in; }
.full-gallery-card img { width: 100%; height: 100%; object-fit: cover; transition: transform 240ms ease; }
.full-gallery-card:hover img, .full-gallery-card:focus-visible img { transform: scale(1.035); }
.gallery-quote { padding: 73px 0; background: var(--ink-2); }
.gallery-quote-inner { display: grid; gap: 28px; align-items: end; }
.gallery-quote h2 { max-width: 680px; }
.gallery-quote .action-row { align-items: flex-start; }

.coverage-main { background: var(--ink); }
.coverage-grid { display: grid; gap: 38px; align-items: stretch; }
.coverage-grid > div > p:not(.eyebrow) { max-width: 505px; color: var(--mist); }
.coverage-town-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 27px 0 29px; padding: 0; border-top: 1px solid var(--line); list-style: none; }
.coverage-town-list li { display: flex; align-items: center; min-height: 49px; border-bottom: 1px solid var(--line); color: var(--white); font: 600 25px var(--display); letter-spacing: -0.01em; text-transform: uppercase; }
.coverage-town-list li::before { width: 6px; height: 6px; margin-right: 10px; background: var(--blue-light); content: ""; }
.map-frame { min-height: 380px; overflow: hidden; background: #d8e5ed; }
.map-frame iframe { display: block; width: 100%; min-height: 380px; height: 100%; border: 0; filter: saturate(0.78) contrast(1.03); }
.trust-section .section-intro, .service-trust .section-intro { margin-bottom: 36px; }
.trust-grid { display: grid; gap: 1px; background: var(--dark-line); }
.trust-grid article { min-height: 223px; padding: 28px; background: var(--white); }
.trust-grid strong { display: block; margin-bottom: 28px; color: var(--blue); font: 600 43px/0.8 var(--display); letter-spacing: -0.04em; }
.trust-grid h3 { margin-bottom: 9px; font-size: 27px; line-height: 0.88; }
.trust-grid p { max-width: 315px; margin: 0; color: var(--muted); font-size: 12px; }
.area-projects { background: var(--ink-2); }
.area-projects .split-heading > p { color: #c5d4e1; }
.gallery-inline-link { display: inline-block; margin-top: 26px; color: var(--white); }

.service-detail { color: var(--ink); }
.service-points { display: grid; gap: 1px; margin-top: 38px; background: var(--dark-line); }
.service-points article { min-height: 217px; padding: 27px; background: var(--white); }
.service-points span { display: block; margin-bottom: 31px; color: var(--blue); font: 600 16px var(--display); letter-spacing: 0.08em; }
.service-points h3 { margin-bottom: 10px; font-size: 28px; line-height: 0.88; }
.service-points p { max-width: 290px; margin: 0; color: var(--muted); font-size: 12px; }
.service-projects { background: var(--ink-2); }
.service-projects .split-heading > p { color: #c5d4e1; }
.service-trust { color: var(--ink); }
.coverage-link-section { padding: 70px 0; background: #102942; }
.coverage-link-grid { display: grid; gap: 25px; align-items: end; }
.coverage-link-grid h2 { max-width: 600px; }
.coverage-link-grid p:not(.eyebrow) { max-width: 530px; margin: 21px 0 0; color: #c5d4e1; }
.coverage-link-grid .button { width: fit-content; }

@media (min-width: 560px) {
  .full-gallery-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
  .full-gallery-card { min-height: 190px; }
  .coverage-town-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .trust-grid, .service-points { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 860px) {
  .desktop-nav { gap: clamp(10px, 1.3vw, 20px); }
  .desktop-nav a { font-size: 9px; }
  .gallery-callout { flex-direction: row; justify-content: space-between; align-items: center; padding-top: 32px; }
  .page-header { padding: 96px 0 79px; }
  .gallery-page-section { padding-top: 88px; }
  .gallery-page-toolbar { flex-direction: row; justify-content: space-between; align-items: center; margin-bottom: 30px; }
  .full-gallery-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 13px; }
  .full-gallery-card { min-height: 216px; }
  .gallery-quote { padding: 105px 0; }
  .gallery-quote-inner { grid-template-columns: minmax(0, 1fr) auto; gap: 55px; }
  .gallery-quote .action-row { flex-direction: row; align-items: center; }
  .coverage-grid { grid-template-columns: 0.88fr 1fr; gap: clamp(50px, 8vw, 120px); }
  .map-frame, .map-frame iframe { min-height: 520px; }
  .trust-grid article, .service-points article { min-height: 248px; padding: 34px; }
  .coverage-link-section { padding: 93px 0; }
  .coverage-link-grid { grid-template-columns: minmax(0, 1fr) auto; gap: 55px; }
}

/* Final content and mobile-polish pass. */
.brand-mark { width: 116px; height: 67px; background: #000; object-fit: contain; }
.brand-copy { display: none; }
.footer-brand-block .brand-mark { width: 146px; height: 84px; }
.nav-shell { min-height: 78px; }
.section { padding: 65px 0; }
.enquiry { padding: 65px 0; }
.service-page-header { padding: 64px 0 54px; }
.page-header { padding: 62px 0 53px; }
.gallery-page-section { padding-top: 48px; }
.gallery-quote { padding: 64px 0; }
.coverage-link-section { padding: 62px 0; }
.service-faq { padding-bottom: 65px; }
.service-enquiry { padding-top: 65px; }
.full-gallery-card { min-height: 142px; }
.gallery-callout { padding-top: 21px; }
.about-more { display: inline-block; margin-top: 24px; color: var(--blue-light); }
.area-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.gallery-film-link { background: #102942; border-bottom: 1px solid var(--line); }
.gallery-film-link-inner { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; min-height: 0; padding: 19px 0; }
.gallery-film-link p { margin: 0; color: #d6e6f2; font-size: 12px; }
.gallery-film-link strong { color: var(--blue-light); }
.gallery-film-link .text-link { color: var(--white); }

.about-page-story { background: var(--ink); }
.about-page-grid { display: grid; gap: 31px; align-items: center; }
.about-page-photo { overflow: hidden; background: #dce8ef; }
.about-page-photo img { width: 100%; aspect-ratio: 4 / 3; object-fit: contain; background: #dce8ef; }
.about-page-grid h2 { margin-bottom: 22px; }
.about-page-grid > div:last-child > p:not(.eyebrow) { max-width: 520px; color: var(--mist); }
.about-page-grid .lead-copy { color: var(--white); }
.about-page-values { display: grid; gap: 1px; margin: 25px 0; border-top: 1px solid var(--line); }
.about-page-values div { display: grid; grid-template-columns: 56px 1fr; align-items: center; min-height: 52px; border-bottom: 1px solid var(--line); }
.about-page-values strong { color: var(--blue-light); font: 600 24px var(--display); }
.about-page-values span { font-size: 10px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; }
.on-site-film { color: var(--ink); }
.film-grid { display: grid; gap: 29px; align-items: center; }
.film-grid > div > p:not(.eyebrow) { max-width: 420px; margin: 20px 0 24px; color: var(--muted); }
.site-film { margin: 0; overflow: hidden; background: var(--ink); }
.site-film video { display: block; width: 100%; aspect-ratio: 16 / 9; background: #02070d; object-fit: cover; }
.site-film figcaption { padding: 11px 13px; color: #cad9e4; font-size: 9px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; }
.about-page-projects { background: var(--ink-2); }
.about-page-projects .split-heading > p { color: #c5d4e1; }
.about-area-link { background: var(--pale); color: var(--ink); }
.about-area-link .coverage-link-grid p:not(.eyebrow) { color: var(--muted); }

@media (min-width: 560px) {
  .full-gallery-card { min-height: 168px; }
  .gallery-film-link-inner { flex-direction: row; justify-content: space-between; align-items: center; }
}
@media (min-width: 860px) {
  .nav-shell { min-height: 86px; }
  .brand-mark { width: 128px; height: 74px; }
  .footer-brand-block .brand-mark { width: 160px; height: 92px; }
  .section { padding: 86px 0; }
  .enquiry { padding: 86px 0; }
  .service-page-header { padding: 78px 0 66px; }
  .page-header { padding: 78px 0 67px; }
  .gallery-page-section { padding-top: 66px; }
  .gallery-quote { padding: 82px 0; }
  .coverage-link-section { padding: 78px 0; }
  .service-faq { padding-bottom: 86px; }
  .service-enquiry { padding-top: 86px; }
  .full-gallery-card { min-height: 190px; }
  .area-list, .coverage-town-list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .about-page-grid, .film-grid { grid-template-columns: minmax(0, 0.88fr) minmax(0, 1fr); gap: clamp(46px, 8vw, 104px); }
  .about-page-photo img { aspect-ratio: 4 / 3; }
  .gallery-film-link-inner { padding: 21px 0; }
}

/* Exact client-logo colour, direct-call action and a deliberately complete home grid. */
.header-call { display: inline-flex; align-items: center; justify-content: center; min-height: 42px; padding: 0 12px; background: var(--blue); color: var(--ink); font-size: 9px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; white-space: nowrap; transition: background 160ms ease, transform 160ms ease; }
.header-call:hover, .header-call:focus-visible { background: var(--white); color: var(--ink); transform: translateY(-1px); }
.gallery-card, .gallery-card:nth-child(1), .gallery-card:nth-child(4), .gallery-card:nth-child(6) { grid-column: auto; grid-row: auto; min-height: 164px; }
.gallery-card:nth-child(1), .gallery-card:nth-child(4), .gallery-card:nth-child(7) { grid-column: span 2; min-height: 214px; }

@media (min-width: 560px) {
  .gallery-card, .gallery-card:nth-child(1), .gallery-card:nth-child(4), .gallery-card:nth-child(6), .gallery-card:nth-child(7) { grid-column: auto; grid-row: auto; min-height: 200px; }
  .gallery-card:nth-child(1), .gallery-card:nth-child(4) { grid-column: span 2; }
}
@media (min-width: 860px) {
  .header-call { min-height: 40px; padding: 0 13px; }
  .gallery-card, .gallery-card:nth-child(1), .gallery-card:nth-child(4), .gallery-card:nth-child(6), .gallery-card:nth-child(7) { grid-column: auto; grid-row: auto; min-height: 222px; }
  .gallery-card:nth-child(1) { grid-column: span 2; }
  .gallery-card:nth-child(7) { grid-column: span 4; min-height: 262px; }
}

/* Verified customer feedback and completed-training content. */
.proof-section { background: var(--ink); }
.proof-heading { margin-bottom: 31px; }
.proof-heading > p { color: var(--mist); }
.proof-layout { display: grid; gap: 28px; }
.proof-group { min-width: 0; }
.proof-label { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }
.proof-label p { margin: 0; color: var(--blue-light); font-size: 10px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
.proof-label span { color: #bacbd8; font-size: 10px; font-weight: 600; }
.review-grid, .credentials-grid { display: grid; gap: 10px; }
.review-card, .credential-card { min-width: 0; padding: 22px; border: 1px solid rgba(192, 216, 234, 0.18); background: #10243a; }
.review-meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; align-items: center; margin-bottom: 17px; }
.review-rating { color: var(--blue-light); font-size: 11px; font-weight: 800; letter-spacing: 0.09em; }
.review-meta > span:last-child { color: #b8cad8; font-size: 9px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; }
.review-card blockquote { margin: 0 0 18px; color: var(--white); font-size: 13px; font-weight: 500; line-height: 1.68; }
.review-card cite { color: var(--blue-light); font-size: 10px; font-style: normal; font-weight: 800; letter-spacing: 0.07em; text-transform: uppercase; }
.credential-card { background: #0d2035; }
.credential-provider { margin: 0 0 17px; color: var(--blue-light); font-size: 10px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; }
.credential-card h3 { margin-bottom: 11px; color: var(--white); font-size: 28px; line-height: 0.88; }
.credential-card > p:last-child { max-width: 390px; margin: 0; color: #c0d0dd; font-size: 12px; line-height: 1.68; }

@media (min-width: 620px) {
  .review-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .credentials-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 960px) {
  .proof-layout { grid-template-columns: minmax(0, 1.2fr) minmax(360px, 0.8fr); gap: 27px; align-items: start; }
  .credentials-grid { grid-template-columns: 1fr; }
  .review-card, .credential-card { padding: 25px; }
}

/* Refined direct-call control and editorial trust board. */
.header-call { gap: 7px; min-height: 40px; padding: 0 11px; border: 1px solid rgba(131, 210, 206, 0.72); border-radius: 999px; background: rgba(131, 210, 206, 0.07); color: #e6f5f4; box-shadow: inset 0 0 0 1px rgba(131, 210, 206, 0.05); font-size: 9px; letter-spacing: 0.055em; }
.header-call-icon { width: 14px; height: 14px; flex: 0 0 auto; fill: none; stroke: var(--blue-light); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; }
.header-call:hover, .header-call:focus-visible { border-color: var(--blue); background: var(--blue); color: var(--ink); transform: translateY(-1px); }
.header-call:hover .header-call-icon, .header-call:focus-visible .header-call-icon { stroke: var(--ink); }

.proof-section { position: relative; border-top: 1px solid rgba(131, 210, 206, 0.2); background: #06111e; }
.proof-section::before { position: absolute; top: 0; left: 0; width: 116px; height: 3px; background: var(--blue); content: ""; }
.proof-heading { padding-bottom: 8px; margin-bottom: 27px; border-bottom: 1px solid rgba(192, 216, 234, 0.16); }
.proof-layout { gap: 24px; }
.proof-label { gap: 5px; padding-bottom: 10px; margin-bottom: 12px; border-bottom: 1px solid rgba(192, 216, 234, 0.15); }
.proof-label p { color: var(--blue-light); font-size: 9px; letter-spacing: 0.15em; }
.proof-label span { color: #b9cad7; font-size: 9px; letter-spacing: 0.03em; }
.review-grid, .credentials-grid { gap: 12px; }
.review-card { position: relative; display: flex; flex-direction: column; min-height: 100%; padding: 21px; overflow: hidden; border: 1px solid rgba(152, 190, 217, 0.24); border-top: 3px solid var(--blue); background: #10253b; box-shadow: 0 15px 27px rgba(0, 0, 0, 0.14); }
.review-meta { gap: 10px; margin-bottom: 18px; }
.review-rating { display: inline-flex; align-items: center; min-height: 25px; padding: 0 9px; border-radius: 999px; background: var(--blue); color: var(--ink); font-size: 9px; letter-spacing: 0.08em; }
.review-meta > span:last-child { color: #c2d3df; font-size: 8px; letter-spacing: 0.06em; }
.review-card blockquote { position: relative; margin-bottom: 21px; color: #f4fbfc; font-size: 13px; font-weight: 500; line-height: 1.72; }
.review-card cite { display: flex; align-items: center; gap: 9px; margin-top: auto; color: var(--blue-light); font-size: 9px; letter-spacing: 0.1em; }
.review-card cite::before { width: 20px; height: 1px; background: var(--blue-light); content: ""; }
.credential-card { position: relative; min-height: 0; padding: 23px 52px 22px 22px; overflow: hidden; border: 1px solid rgba(131, 210, 206, 0.3); border-left: 3px solid var(--blue); background: #0c1d30; box-shadow: 0 15px 27px rgba(0, 0, 0, 0.12); }
.credentials-grid { counter-reset: credential; }
.credential-card::before { position: absolute; top: 13px; right: 17px; color: rgba(131, 210, 206, 0.37); content: "0" counter(credential); counter-increment: credential; font: 600 34px/1 var(--display); letter-spacing: 0.02em; }
.credential-provider { display: inline-flex; align-items: center; min-height: 22px; padding: 0 7px; margin-bottom: 15px; border: 1px solid rgba(131, 210, 206, 0.42); color: var(--blue-light); font-size: 8px; letter-spacing: 0.1em; }
.credential-card h3 { margin-bottom: 10px; font-size: 30px; line-height: 0.86; }
.credential-card > p:last-child { color: #c7d7e1; font-size: 11px; line-height: 1.62; }

@media (max-width: 390px) {
  .nav-shell { gap: 8px; }
  .header-call { padding: 0 9px; font-size: 8px; }
  .header-call-icon { width: 13px; height: 13px; }
}
@media (min-width: 620px) {
  .review-card { padding: 23px; }
}
@media (min-width: 960px) {
  .proof-layout { grid-template-columns: minmax(0, 1.38fr) minmax(330px, 0.62fr); gap: 30px; }
  .review-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .credentials-grid { grid-template-columns: 1fr; }
  .credential-card { min-height: 0; padding: 26px 56px 25px 25px; }
}

/* Branded post-submit confirmation for the hosted enquiry form. */
.thanks-main { display: grid; min-height: calc(100svh - 78px); place-items: center; background: radial-gradient(circle at 77% 22%, rgba(131, 210, 206, 0.15), transparent 31%), var(--ink-2); }
.thanks-section { width: 100%; padding: 72px 0; }
.thanks-panel { max-width: 735px; padding: 34px 27px; border: 1px solid rgba(171, 215, 234, 0.22); border-top: 4px solid var(--blue); background: rgba(7, 17, 31, 0.78); box-shadow: 0 23px 62px rgba(0, 0, 0, 0.24); }
.thanks-panel h1 { max-width: 600px; margin-bottom: 21px; }
.thanks-panel > p:not(.eyebrow) { max-width: 490px; margin-bottom: 29px; color: #cbdae4; font-size: 15px; }
@media (min-width: 860px) {
  .thanks-main { min-height: calc(100svh - 86px); }
  .thanks-section { padding: 104px 0; }
  .thanks-panel { padding: 52px; }
}
