:root { --ink:#121a22; --slate:#344751; --green:#47665c; --green-dark:#203d36; --terracotta:#c56648; --cream:#f4f0e7; --paper:#fbfaf7; --line:#d9ddd8; --white:#fff; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:Arial, Helvetica, sans-serif; font-size:16px; line-height:1.65; }
a { color:inherit; text-decoration:none; }
img { max-width:100%; }
.icon { display:inline-block; flex:none; }
.container { width:min(1180px, calc(100% - 40px)); margin-inline:auto; }
.skip-link { position:fixed; z-index:1000; top:8px; left:8px; transform:translateY(-140%); background:#fff; padding:10px 16px; border-radius:8px; }
.skip-link:focus { transform:none; }
.topbar { background:var(--ink); color:#dfe7e2; font-size:.78rem; letter-spacing:.02em; }
.topbar .container { display:flex; justify-content:space-between; align-items:center; min-height:36px; }
.topbar a { display:flex; gap:6px; align-items:center; color:#fff; font-weight:700; }
.site-header { position:sticky; top:0; z-index:50; background:rgba(251,250,247,.96); backdrop-filter:blur(12px); border-bottom:1px solid rgba(18,26,34,.09); }
.nav-wrap { min-height:92px; display:flex; align-items:center; gap:26px; }
.brand { width:238px; margin-right:auto; display:flex; }
.brand img { width:100%; height:auto; }
.nav-wrap nav { display:flex; gap:22px; align-items:center; font-size:.88rem; font-weight:700; }
.nav-wrap nav a { padding:31px 0 25px; border-bottom:2px solid transparent; }
.nav-wrap nav a:hover, .nav-wrap nav a:focus-visible { color:var(--green); border-color:var(--terracotta); }
.nav-cta { background:var(--green-dark); color:#fff; padding:11px 16px; border-radius:999px; font-size:.84rem; font-weight:700; white-space:nowrap; }
.mobile-nav { display:none; position:relative; }
.mobile-menu-button { display:grid; place-items:center; border:0; background:transparent; color:var(--ink); cursor:pointer; padding:9px; }
.menu-close-icon { display:none; }
.mobile-menu-button[aria-expanded="true"] > .icon-menu { display:none; }
.mobile-menu-button[aria-expanded="true"] .menu-close-icon { display:inline-grid; }
.mobile-menu-panel { position:absolute; right:0; top:50px; width:240px; padding:12px; display:grid; background:#fff; box-shadow:0 18px 50px rgba(14,25,24,.18); border-radius:16px; }
.mobile-menu-panel[hidden] { display:none !important; }
.mobile-menu-panel a { padding:9px 12px; font-weight:700; }
.hero { position:relative; min-height:680px; display:grid; align-items:center; overflow:hidden; background:var(--ink); color:white; }
.hero-image { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; }
.hero-shade { position:absolute; inset:0; background:linear-gradient(90deg, rgba(9,16,19,.92) 0%, rgba(9,16,19,.76) 39%, rgba(9,16,19,.16) 76%); }
.hero-content { position:relative; z-index:1; padding-block:85px; }
.eyebrow { margin:0 0 16px; text-transform:uppercase; letter-spacing:.19em; font-size:.75rem; font-weight:800; color:#d8c4ae; }
.eyebrow.ink { color:var(--terracotta); }
.eyebrow.light { color:#d6e1dc; }
h1, h2, h3 { font-family:Georgia, "Times New Roman", serif; font-weight:500; line-height:1.08; letter-spacing:-.025em; }
h1 { max-width:800px; margin:0; font-size:clamp(3.25rem, 7vw, 6.4rem); }
h2 { margin:0; font-size:clamp(2.2rem, 4vw, 4rem); }
h3 { font-size:1.55rem; }
.hero-copy { max-width:640px; margin:26px 0 0; color:#edf2ef; font-size:1.16rem; line-height:1.7; }
.hero-actions { display:flex; gap:12px; flex-wrap:wrap; margin-top:34px; }
.button { min-height:48px; display:inline-flex; justify-content:center; align-items:center; gap:9px; padding:12px 22px; border:1px solid transparent; border-radius:999px; font-weight:800; font-size:.9rem; }
.button-primary { background:var(--terracotta); color:white; }
.button-primary:hover { background:#aa5036; }
.button-ghost { color:#fff; border-color:rgba(255,255,255,.55); background:rgba(255,255,255,.06); }
.button-light { background:var(--cream); color:var(--green-dark); }
.hero-points { display:flex; gap:24px; flex-wrap:wrap; margin-top:55px; color:#f2f4f2; font-size:.86rem; font-weight:700; }
.hero-points span { display:flex; align-items:center; gap:7px; }
.section { padding-block:96px; }
.split-intro { display:grid; grid-template-columns:.9fr 1.1fr; gap:90px; align-items:start; }
.prose { color:#4b575b; max-width:740px; }
.lead { font-size:1.08rem; }
.lead p:first-child { font-size:1.28rem; color:var(--ink); }
.services-section { background:var(--cream); }
.section-heading { display:flex; justify-content:space-between; align-items:end; gap:24px; margin-bottom:42px; }
.section-heading.centred { justify-content:center; text-align:center; }
.text-link { display:inline-flex; align-items:center; gap:7px; color:var(--green-dark); font-weight:800; border-bottom:1px solid var(--green); }
.service-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:18px; }
.service-card { position:relative; min-height:390px; overflow:hidden; border-radius:24px; display:flex; align-items:flex-end; color:white; box-shadow:0 16px 45px rgba(23,39,36,.12); }
.service-card img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .5s ease; }
.service-card:hover img { transform:scale(1.035); }
.card-overlay { position:absolute; inset:0; background:linear-gradient(180deg, rgba(10,20,23,.05), rgba(10,20,23,.9)); }
.service-icon { position:absolute; top:24px; left:24px; display:grid; place-items:center; width:48px; height:48px; border-radius:50%; background:rgba(255,255,255,.92); color:var(--green-dark); }
.service-content { position:relative; display:grid; gap:10px; padding:28px; }
.service-content strong { font-family:Georgia, serif; font-size:2rem; font-weight:500; }
.service-content > span { max-width:540px; color:#edf0ef; }
.service-content .card-link { display:flex; align-items:center; gap:6px; color:white; font-weight:800; }
.audience-section { background:#fff; }
.audience-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.audience-grid article { border:1px solid var(--line); background:var(--paper); border-radius:20px; padding:30px; }
.audience-grid article > svg { color:var(--terracotta); width:30px; height:30px; }
.audience-grid h3 { margin:23px 0 10px; }
.audience-grid p { color:#556064; }
.audience-grid a { display:inline-flex; align-items:center; gap:7px; margin-top:8px; color:var(--green-dark); font-weight:800; }
.coverage-section { color:white; background:var(--green-dark); }
.coverage-layout { display:grid; grid-template-columns:.9fr 1.1fr; gap:70px; align-items:center; }
.coverage-layout p:not(.eyebrow) { color:#dbe5e0; max-width:490px; margin:22px 0 30px; }
.area-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.area-card { min-height:128px; padding:17px; display:flex; flex-direction:column; justify-content:space-between; border:1px solid rgba(255,255,255,.18); border-radius:16px; background:rgba(255,255,255,.06); }
.area-card svg { color:#e2b299; }
.area-card span { font-weight:800; font-size:.88rem; }
.about-preview { background:var(--paper); }
.about-card { display:grid; grid-template-columns:1fr 1fr; background:#fff; border-radius:28px; overflow:hidden; box-shadow:0 16px 55px rgba(17,31,29,.08); }
.about-image { min-height:480px; position:relative; }
.about-image img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.about-copy { padding:64px; align-self:center; }
.about-copy p:not(.eyebrow) { color:#546064; margin:22px 0; }
.reviews-section { background:#fff; min-height:360px; }
.cta-section { background:var(--terracotta); color:white; padding-block:62px; }
.cta-inner { display:flex; justify-content:space-between; align-items:center; gap:30px; }
.cta-inner h2 { font-size:clamp(2rem, 3.7vw, 3.5rem); }
.cta-actions { display:flex; align-items:center; gap:22px; flex-wrap:wrap; }
.phone-link { font-weight:900; font-size:1.1rem; }
.trust-strip { background:#fff; border-top:1px solid var(--line); }
.trust-inner { min-height:165px; display:flex; align-items:center; justify-content:space-between; gap:30px; }
.trust-inner > p { color:var(--ink); font-family:Georgia, serif; font-size:1.25rem; font-weight:700; }
.trust-logos { display:flex; align-items:center; justify-content:flex-end; gap:32px; }
.trust-logos img { object-fit:contain; max-height:90px; width:auto; }
.site-footer { background:var(--ink); color:#dce2e3; }
.footer-grid { display:grid; grid-template-columns:1.3fr .7fr 1fr; gap:70px; padding-block:70px; }
.footer-grid > div:first-child img { width:270px; height:auto; }
.footer-grid > div:first-child p { max-width:390px; color:#aeb9ba; }
.footer-grid h3 { color:white; font-size:1.15rem; }
.footer-grid a { display:flex; align-items:center; gap:8px; margin:8px 0; color:#dce2e3; }
.footer-grid .address { display:flex; gap:8px; color:#b8c2c3; }
.footer-grid .address svg { flex:none; margin-top:5px; }
.footer-bottom { min-height:70px; display:flex; align-items:center; justify-content:space-between; border-top:1px solid rgba(255,255,255,.1); font-size:.8rem; color:#9fabad; }
.footer-links { display:flex; gap:20px; }
.gingerweb-credit { display:block; width:132px; flex:none; }
.gingerweb-credit img { display:block; width:100%; height:auto; }
.cookie-banner { position:fixed; z-index:100; left:18px; right:18px; bottom:18px; max-width:950px; margin:auto; padding:18px 20px; display:flex; align-items:center; justify-content:space-between; gap:25px; color:white; background:#15231f; border:1px solid rgba(255,255,255,.18); border-radius:18px; box-shadow:0 20px 70px rgba(0,0,0,.34); }
.cookie-banner[hidden] { display:none !important; }
.cookie-banner strong { font-family:Georgia,serif; font-size:1.18rem; }
.cookie-banner p { margin:3px 0; color:#d8e0dd; font-size:.84rem; }
.cookie-banner a { text-decoration:underline; font-size:.78rem; }
.cookie-actions { display:flex; gap:8px; flex:none; }
.cookie-actions button { border:1px solid rgba(255,255,255,.35); border-radius:999px; background:transparent; color:white; padding:10px 15px; cursor:pointer; font-weight:800; }
.cookie-actions .accept { background:var(--terracotta); border-color:var(--terracotta); }
.cookie-confirmation { position:fixed; z-index:101; left:50%; bottom:24px; transform:translateX(-50%); width:max-content; max-width:calc(100% - 36px); padding:12px 18px; border-radius:999px; color:white; background:#15231f; box-shadow:0 14px 45px rgba(0,0,0,.3); font-size:.9rem; font-weight:800; text-align:center; }
.cookie-confirmation[hidden] { display:none !important; }
.page-hero { position:relative; min-height:540px; display:grid; align-items:end; overflow:hidden; background:var(--ink); color:white; }
.page-hero > img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.page-hero-shade { position:absolute; inset:0; background:linear-gradient(90deg,rgba(9,16,19,.92),rgba(9,16,19,.64) 52%,rgba(9,16,19,.25)); }
.page-hero-content { position:relative; z-index:1; padding-block:72px; }
.page-hero h1 { max-width:880px; font-size:clamp(3rem,6vw,5.4rem); }
.page-hero-content > p:not(.eyebrow) { max-width:720px; color:#edf2ef; font-size:1.12rem; margin:24px 0 28px; }
.breadcrumbs { display:flex; gap:9px; margin-bottom:38px; color:#d9e2de; font-size:.78rem; }
.breadcrumbs a { text-decoration:underline; text-underline-offset:3px; }
.content-section { background:var(--paper); }
.content-layout { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr); gap:78px; align-items:start; }
.page-copy { max-width:760px; }
.page-copy section + section { margin-top:64px; padding-top:58px; border-top:1px solid var(--line); }
.page-copy h2 { font-size:clamp(2rem,3.5vw,3.3rem); margin-bottom:24px; }
.page-copy p { color:#4f5c60; font-size:1.05rem; }
.page-copy p + p { margin-top:18px; }
.section-points { display:grid; gap:10px; margin:22px 0 0; padding:0; list-style:none; color:#34494a; }
.section-points li { display:flex; align-items:flex-start; gap:10px; }
.section-points svg { flex:none; margin-top:3px; color:var(--terracotta); }
.about-profile { width:min(100%,415px); margin:0 0 48px; overflow:hidden; border-radius:24px; background:white; box-shadow:0 16px 45px rgba(23,39,36,.12); }
.about-profile img { display:block; width:100%; height:auto; }
.about-profile figcaption { display:flex; flex-direction:column; gap:2px; padding:18px 20px; }
.about-profile figcaption strong { color:var(--ink); font-family:Georgia,serif; font-size:1.2rem; }
.about-profile figcaption span { color:#596568; font-size:.9rem; }
.key-panel { position:sticky; top:160px; padding:34px; background:var(--cream); border-radius:22px; border-top:4px solid var(--terracotta); }
.key-panel h2 { font-size:2.2rem; margin-bottom:23px; }
.key-panel ul { list-style:none; padding:0; margin:0 0 26px; display:grid; gap:13px; }
.key-panel li { display:flex; gap:10px; align-items:flex-start; padding-bottom:12px; border-bottom:1px solid rgba(32,61,54,.13); font-weight:700; color:#3c4d4c; }
.key-panel li svg { width:18px; height:18px; flex:none; margin-top:4px; color:var(--terracotta); }
.contact-links { display:grid; gap:12px; margin-top:36px; }
.contact-links > * { display:flex; align-items:flex-start; gap:14px; padding:20px; border:1px solid var(--line); border-radius:16px; background:#fff; }
.contact-links svg { color:var(--terracotta); flex:none; }
.contact-links span { display:grid; }
.contact-links small { color:#677275; text-transform:uppercase; letter-spacing:.1em; font-weight:800; }
.contact-links strong { overflow-wrap:anywhere; }
.enquiry-section { background:var(--cream); scroll-margin-top:130px; }
.enquiry-layout { display:grid; grid-template-columns:.72fr 1.28fr; gap:74px; align-items:start; }
.enquiry-intro { position:sticky; top:160px; }
.enquiry-intro > p:not(.eyebrow) { max-width:480px; color:#526064; font-size:1.05rem; }
.form-security { display:flex; align-items:flex-start; gap:13px; margin-top:30px; padding:18px; background:#fff; border:1px solid var(--line); border-radius:16px; color:var(--green-dark); }
.form-security > svg { flex:none; margin-top:2px; color:var(--terracotta); }
.form-security span { display:grid; }
.form-security small { margin-top:3px; color:#637074; line-height:1.45; }
.enquiry-form { position:relative; padding:36px; background:#fff; border-radius:24px; box-shadow:0 18px 55px rgba(17,31,29,.08); }
.form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.form-grid label { display:grid; gap:7px; }
.form-grid label > span { color:var(--green-dark); font-size:.84rem; font-weight:800; }
.form-grid input, .form-grid select, .form-grid textarea { width:100%; min-height:50px; border:1px solid #c9cfcc; border-radius:11px; background:#fff; color:var(--ink); padding:11px 13px; font:inherit; }
.form-grid textarea { resize:vertical; min-height:140px; }
.form-grid input:focus, .form-grid select:focus, .form-grid textarea:focus { outline:3px solid rgba(197,102,72,.18); border-color:var(--terracotta); }
.form-span-2 { grid-column:1/-1; }
.consent-check { display:flex; align-items:flex-start; gap:10px; margin:24px 0; color:#4f5d60; font-size:.86rem; }
.consent-check input { width:18px; height:18px; flex:none; margin-top:3px; accent-color:var(--green-dark); }
.form-submit { border:0; cursor:pointer; }
.form-honeypot { position:absolute!important; width:1px!important; height:1px!important; overflow:hidden!important; clip:rect(0 0 0 0)!important; white-space:nowrap!important; }
.form-status { margin-top:18px; }
.form-status:empty { display:none; }
.form-status p { display:flex; align-items:flex-start; gap:9px; margin:0; padding:14px 16px; border-radius:12px; background:#edf4f0; color:var(--green-dark); font-size:.9rem; }
.form-status .status-error { background:#fff0ec; color:#7b2f1c; }
.form-status svg { width:18px; height:18px; flex:none; margin-top:3px; }
.quick-services { background:var(--cream); }
.quick-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; }
.quick-grid a { min-height:120px; display:flex; justify-content:space-between; align-items:center; gap:20px; padding:25px; background:#fff; border-radius:18px; font-family:Georgia,serif; font-size:1.5rem; }
.quick-grid a svg { color:var(--terracotta); flex:none; }
.faq-section { background:#fff; }
.faq-layout { display:grid; grid-template-columns:.7fr 1.3fr; gap:80px; align-items:start; }
.faq-list { border-top:1px solid var(--line); }
.faq-list details { border-bottom:1px solid var(--line); }
.faq-list summary { cursor:pointer; list-style:none; padding:24px 38px 24px 0; position:relative; font-weight:800; color:var(--green-dark); }
.faq-list summary::-webkit-details-marker { display:none; }
.faq-list summary::after { content:"+"; position:absolute; right:4px; top:20px; font-size:1.5rem; color:var(--terracotta); }
.faq-list details[open] summary::after { content:"–"; }
.faq-list p { margin:0; padding:0 38px 24px 0; color:#566367; }
.not-found { min-height:65vh; display:grid; align-items:center; padding-block:100px; }
.not-found h1 { color:var(--ink); max-width:760px; }
.not-found > .container > p:not(.eyebrow) { max-width:620px; font-size:1.1rem; color:#536064; }
.outline-dark { border-color:var(--green-dark); color:var(--green-dark); }

@media (max-width:1050px) { .nav-wrap nav { display:none; } .mobile-nav { display:block; } .nav-cta { margin-left:auto; } .brand { width:220px; } }
@media (max-width:800px) {
  .topbar span { display:none; } .topbar .container { justify-content:flex-end; }
  .nav-wrap { min-height:76px; } .brand { width:185px; }
  .hero { min-height:610px; } .hero-shade { background:linear-gradient(90deg,rgba(9,16,19,.9),rgba(9,16,19,.58)); }
  .split-intro, .coverage-layout, .about-card { grid-template-columns:1fr; gap:38px; }
  .service-grid, .audience-grid { grid-template-columns:1fr; } .service-card { min-height:350px; }
  .area-grid { grid-template-columns:repeat(2,1fr); }
  .about-image { min-height:350px; } .about-copy { padding:38px; }
  .cta-inner, .trust-inner { align-items:flex-start; flex-direction:column; }
  .trust-inner { padding-block:34px; } .trust-logos { justify-content:flex-start; flex-wrap:wrap; }
  .footer-grid { grid-template-columns:1fr 1fr; } .footer-grid > div:first-child { grid-column:1/-1; }
  .section { padding-block:70px; }
  .content-layout, .faq-layout { grid-template-columns:1fr; gap:48px; }
  .key-panel { position:static; }
  .quick-grid { grid-template-columns:1fr; }
  .enquiry-layout { grid-template-columns:1fr; gap:42px; }
  .enquiry-intro { position:static; }
}
@media (max-width:560px) {
  .container { width:min(100% - 28px,1180px); } .nav-cta { display:none; } h1 { font-size:3.1rem; }
  .hero-content { padding-block:65px; } .hero-points { margin-top:38px; gap:12px; flex-direction:column; }
  .section-heading { align-items:flex-start; flex-direction:column; } .area-grid { grid-template-columns:1fr 1fr; }
  .footer-grid { grid-template-columns:1fr; gap:32px; } .footer-grid > div:first-child { grid-column:auto; }
  .footer-bottom { padding-block:18px; flex-direction:column; align-items:flex-start; gap:12px; }
  .cookie-banner { align-items:stretch; flex-direction:column; } .cookie-actions { justify-content:flex-end; }
  .enquiry-form { padding:24px 18px; } .form-grid { grid-template-columns:1fr; } .form-span-2 { grid-column:auto; }
}
@media (prefers-reduced-motion:reduce) { * { scroll-behavior:auto!important; transition:none!important; } }
