:root {
  --red: #c71924;
  --red-dark: #9e111a;
  --ink: #181717;
  --ink-soft: #353231;
  --paper: #f4f0e9;
  --sand: #e9dfd2;
  --white: #ffffff;
  --line: rgba(24, 23, 23, 0.14);
  --muted: #6d6965;
  --shadow: 0 24px 65px rgba(28, 20, 18, 0.16);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--ink); }
body { margin: 0; overflow-x: hidden; background: #fff; color: var(--ink); font-family: "Segoe UI", Arial, Helvetica, sans-serif; font-size: 16.5px; line-height: 1.68; }
img { display: block; width: 100%; max-width: 100%; }
figure { margin: 0; }
a { color: inherit; text-decoration: none; }
button, summary, a { -webkit-tap-highlight-color: transparent; }
button, input, select, textarea { font: inherit; }
h1, h2, h3, p { overflow-wrap: anywhere; }
h1, h2 { font-family: Georgia, "Times New Roman", serif; font-weight: 500; letter-spacing: 0.005em; }
h1 { font-size: clamp(2.55rem, 4.5vw, 3.75rem); line-height: 1.04; }
h2 { font-size: clamp(2rem, 3.3vw, 2.8rem); line-height: 1.12; }
h3 { letter-spacing: 0.01em; }

.shell { width: min(1200px, calc(100% - 48px)); margin-inline: auto; }
.eyebrow { margin: 0 0 13px; color: var(--red); font-size: 11.5px; font-weight: 800; letter-spacing: 0.16em; line-height: 1.4; text-transform: uppercase; }
.lead { max-width: 720px; margin: 0; color: #504c49; font-size: clamp(1.08rem, 1.55vw, 1.3rem); line-height: 1.55; }
.section-heading { margin-bottom: 38px; }
.section-heading h2 { max-width: 700px; margin: 0; }
.section-heading > p, .split-heading > p { max-width: 470px; margin: 0; color: var(--muted); }
.split-heading { display: flex; align-items: end; justify-content: space-between; gap: 50px; }
.centered { max-width: 820px; margin-right: auto; margin-left: auto; text-align: center; }
.centered h2 { margin-inline: auto; }
.centered > p:last-child { max-width: 760px; margin: 18px auto 0; color: var(--muted); }
.breadcrumb { display: flex; align-items: center; gap: 8px; margin-bottom: 42px; color: rgba(255,255,255,.75); font-size: 13px; font-weight: 700; }
.breadcrumb a:hover { color: #fff; }
.breadcrumb.dark-text { margin-bottom: 28px; color: #6f6964; }
.breadcrumb.dark-text a:hover { color: var(--red); }

.button { display: inline-flex; min-height: 50px; padding: 0 20px; align-items: center; justify-content: center; gap: 9px; border: 1px solid transparent; border-radius: 5px; cursor: pointer; font-size: 14px; font-weight: 800; transition: transform .2s ease, background .2s ease, color .2s ease; }
.button:hover { transform: translateY(-2px); }
.button.primary { background: var(--red); color: #fff; }
.button.primary:hover { background: var(--red-dark); }
.button.outline { border-color: var(--line); background: transparent; }
.button.dark { background: var(--ink); color: #fff; }
.button.light { background: #fff; color: var(--ink); }
.button.glass { border-color: rgba(255,255,255,.42); background: rgba(255,255,255,.09); color: #fff; backdrop-filter: blur(10px); }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.text-link { display: inline-flex; align-items: center; gap: 7px; color: var(--red-dark); font-size: 14px; font-weight: 800; }

/* Header */
.topbar { position: relative; z-index: 80; background: var(--ink); color: rgba(255,255,255,.8); font-size: 12.5px; }
.topbar-inner, .topbar-links, .topbar span, .topbar a { display: flex; align-items: center; }
.topbar-inner { min-height: 36px; justify-content: space-between; }
.topbar-links { gap: 25px; }
.topbar span, .topbar a { gap: 7px; }
.site-header { position: sticky; z-index: 70; top: 0; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.97); backdrop-filter: blur(18px); }
.header-inner { display: grid; min-height: 82px; grid-template-columns: 190px 1fr auto; align-items: center; gap: 24px; }
.brand-link { display: inline-flex; width: 174px; height: 64px; align-items: center; overflow: hidden; }
.brand-link img { width: 100%; height: 100%; object-fit: contain; }
.desktop-nav { display: flex; align-items: center; justify-content: center; gap: 28px; font-size: 14px; font-weight: 750; }
.desktop-nav > a, .mega-menu > summary { position: relative; padding: 28px 0; cursor: pointer; list-style: none; }
.desktop-nav > a::after, .mega-menu > summary::after { position: absolute; right: 0; bottom: 20px; left: 0; height: 2px; background: var(--red); content: ""; transform: scaleX(0); transform-origin: left; transition: transform .22s ease; }
.desktop-nav > a:hover::after, .mega-menu > summary:hover::after, .mega-menu[open] > summary::after { transform: scaleX(1); }
.mega-menu > summary::-webkit-details-marker, .mobile-menu > summary::-webkit-details-marker { display: none; }
.mega-menu > summary span { color: var(--red); }
.mega-panel { position: absolute; top: calc(100% - 1px); left: 50%; display: grid; width: min(900px, calc(100vw - 70px)); padding: 32px; grid-template-columns: .8fr 1.35fr; gap: 38px; border-top: 3px solid var(--red); border-radius: 0 0 16px 16px; background: #fff; box-shadow: var(--shadow); transform: translateX(-50%); }
.mega-copy { padding: 12px 20px 12px 6px; border-right: 1px solid var(--line); }
.mega-copy h2 { max-width: 310px; margin: 0 0 13px; font-size: 29px; line-height: 1.14; }
.mega-copy p:not(.eyebrow) { margin: 0 0 20px; color: var(--muted); font-size: 14px; }
.mega-links { display: grid; grid-template-columns: 1fr 1fr; gap: 3px 22px; }
.mega-links a { display: flex; min-height: 48px; align-items: center; justify-content: space-between; gap: 15px; border-bottom: 1px solid var(--line); font-size: 13.5px; font-weight: 750; }
.mega-links a:hover { color: var(--red); }
.header-cta, .footer-quote { display: inline-flex; align-items: center; justify-content: center; gap: 9px; background: var(--red); color: #fff; font-size: 13.5px; font-weight: 800; }
.header-cta { min-height: 46px; padding: 0 18px; border-radius: 5px; }
.mobile-menu { display: none; }

@supports (content-visibility: auto) {
  .home-solutions, .home-planning, .local-service, .home-process, .home-enquiry { content-visibility: auto; contain-intrinsic-size: auto 820px; }
}

/* Home */
.home-hero { padding: 62px 0 70px; background: linear-gradient(115deg, #fff 0 58%, #f0e8df 58%); }
.home-hero-grid { display: grid; min-height: 600px; grid-template-columns: .92fr 1.08fr; align-items: center; gap: 70px; }
.home-hero-copy h1 { max-width: 610px; margin: 0 0 22px; font-size: clamp(3rem, 5vw, 3.85rem); }
.home-hero-copy .lead { max-width: 610px; }
.home-trust { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-top: 38px; color: #4d4946; font-size: 13px; font-weight: 750; }
.home-trust span::before { margin-right: 8px; color: var(--red); content: "✓"; }
.home-hero-visual { position: relative; min-height: 570px; }
.home-hero-main { position: absolute; inset: 0 0 44px 45px; overflow: hidden; border-radius: 4px; box-shadow: var(--shadow); }
.home-hero-main img, .home-hero-inset img { height: 100%; object-fit: cover; }
.home-hero-inset { position: absolute; bottom: 0; left: 0; width: 44%; overflow: hidden; border: 9px solid #fff; background: #fff; box-shadow: 0 20px 45px rgba(20,16,14,.2); }
.home-hero-inset img { height: 205px; }
.home-hero-inset figcaption { padding: 12px 10px 6px; color: #4e4945; font-size: 12px; font-weight: 750; }
.home-solutions { padding: 105px 0; }
.image-service-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 18px; }
.image-service-card { position: relative; min-height: 355px; overflow: hidden; border-radius: 5px; color: #fff; grid-column: span 4; }
.image-service-card:nth-child(4), .image-service-card:nth-child(5), .image-service-card:nth-child(6), .image-service-card:nth-child(7) { min-height: 315px; grid-column: span 3; }
.image-service-card img, .image-service-shade { position: absolute; inset: 0; width: 100%; height: 100%; }
.image-service-card img { object-fit: cover; transition: transform .45s ease; }
.image-service-shade { background: linear-gradient(180deg, transparent 30%, rgba(10,8,8,.88) 100%); }
.image-service-card > div { position: absolute; right: 24px; bottom: 23px; left: 24px; z-index: 1; }
.image-service-card h3 { margin: 0 0 7px; font-size: 23px; line-height: 1.14; }
.image-service-card p { max-height: 0; margin: 0; overflow: hidden; opacity: 0; font-size: 13px; line-height: 1.5; transition: max-height .35s ease, opacity .35s ease, margin .35s ease; }
.image-service-card:hover img { transform: scale(1.04); }
.image-service-card:hover p { max-height: 80px; margin-bottom: 13px; opacity: .85; }
.image-link { display: flex; align-items: center; gap: 7px; color: #fff; font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.home-planning { padding: 110px 0; background: var(--paper); }
.home-planning-grid { display: grid; grid-template-columns: 1.08fr .92fr; align-items: center; gap: 85px; }
.home-planning-images { display: grid; height: 650px; grid-template-columns: 1.18fr .82fr; grid-template-rows: 1fr 1fr; gap: 14px; }
.home-planning-images figure { overflow: hidden; }
.home-planning-images .planning-tall { grid-row: span 2; }
.home-planning-images img { height: 100%; object-fit: cover; }
.home-planning-copy h2 { margin: 0 0 24px; }
.home-planning-copy > p:not(.eyebrow) { margin: 0 0 17px; color: #55504c; }
.feature-list { display: grid; margin: 28px 0 0; padding: 0; gap: 11px; list-style: none; }
.feature-list li { display: flex; align-items: flex-start; gap: 10px; font-size: 14.5px; font-weight: 700; }
.feature-list svg { flex: 0 0 auto; margin-top: 3px; color: var(--red); }
.local-service { display: grid; padding: 110px 0; grid-template-columns: 1.2fr .8fr; align-items: center; gap: 90px; }
.local-service-copy h2 { max-width: 660px; margin: 0 0 24px; }
.local-service-copy > p:not(.eyebrow) { margin: 0 0 16px; color: #514d4a; }
.local-service-copy .text-link { margin-top: 12px; }
.local-service-panel { padding: 45px; border-top: 4px solid var(--red); background: var(--ink); color: #fff; box-shadow: var(--shadow); }
.local-service-panel svg { color: #ef5a61; }
.local-service-panel h3 { margin: 22px 0 12px; font-size: 28px; }
.local-service-panel p { color: rgba(255,255,255,.72); }
.local-service-panel a { display: inline-flex; margin-top: 12px; color: #fff; font-size: 20px; font-weight: 800; }
.home-process { padding: 105px 0; background: #171616; color: #fff; }
.home-process .centered > p:last-child { color: rgba(255,255,255,.68); }
.process-cards { display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid rgba(255,255,255,.13); }
.process-cards article { min-height: 220px; padding: 32px; border-right: 1px solid rgba(255,255,255,.13); }
.process-cards article:last-child { border: 0; }
.process-cards svg { color: #f15b64; }
.process-cards h3 { margin: 30px 0 8px; font-size: 20px; }
.process-cards p { margin: 0; color: rgba(255,255,255,.65); font-size: 14px; }
.home-result-strip { display: grid; height: 320px; margin-top: 28px; grid-template-columns: 1.2fr .8fr 1fr; gap: 14px; }
.home-result-strip figure { overflow: hidden; }
.home-result-strip img { height: 100%; object-fit: cover; }
.home-enquiry { display: flex; padding: 92px 0; align-items: center; justify-content: space-between; gap: 60px; }
.home-enquiry h2 { max-width: 700px; margin: 0 0 16px; }
.home-enquiry p:not(.eyebrow) { max-width: 720px; margin: 0; color: var(--muted); }
.home-enquiry .hero-actions { flex: 0 0 auto; margin: 0; }

/* Shared solution pages */
.solution-hero { position: relative; min-height: 680px; overflow: hidden; color: #fff; }
.solution-hero-media, .solution-hero-media img, .solution-hero-media span { position: absolute; inset: 0; width: 100%; height: 100%; }
.solution-hero-media img { object-fit: cover; }
.solution-hero-media span { background: linear-gradient(90deg, rgba(13,12,12,.94) 0%, rgba(13,12,12,.78) 46%, rgba(13,12,12,.32) 100%); }
.solution-hero-grid { position: relative; z-index: 1; display: grid; min-height: 680px; padding-top: 75px; padding-bottom: 65px; grid-template-columns: 1fr 360px; align-items: center; gap: 75px; }
.solution-hero-copy h1 { max-width: 760px; margin: 0 0 22px; font-size: clamp(2.7rem, 4.6vw, 3.7rem); }
.solution-hero-copy .lead { color: rgba(255,255,255,.8); }
.solution-hero-card { align-self: end; overflow: hidden; border: 8px solid rgba(255,255,255,.95); background: #fff; color: var(--ink); box-shadow: var(--shadow); }
.solution-hero-card img { height: 285px; object-fit: cover; }
.solution-hero-card figcaption { padding: 15px 13px 9px; font-size: 12.5px; font-weight: 750; }
.solution-intro { display: grid; padding: 105px 0; grid-template-columns: .9fr 1.1fr; gap: 90px; }
.solution-intro h2 { max-width: 520px; margin: 0; }
.solution-intro > div:last-child > p { margin: 0; color: #504d49; font-size: 18px; }
.keyword-cloud { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 28px; }
.keyword-cloud span { padding: 7px 11px; border: 1px solid var(--line); border-radius: 99px; color: #69645f; font-size: 11.5px; font-weight: 700; }
.solution-story { padding: 105px 0; }
.solution-story:nth-child(odd) { background: var(--paper); }
.solution-story-grid { display: grid; grid-template-columns: .93fr 1.07fr; align-items: center; gap: 82px; }
.solution-story.reverse .solution-story-copy { order: 2; }
.solution-story.reverse .solution-story-images { order: 1; }
.solution-story-copy h2 { margin: 0 0 24px; }
.solution-story-copy > p:not(.eyebrow) { margin: 0 0 17px; color: #504c48; }
.solution-story-images { position: relative; min-height: 580px; padding: 0 0 60px 60px; }
.solution-story-images .story-large { height: 520px; overflow: hidden; }
.solution-story-images .story-large img { height: 100%; object-fit: cover; }
.solution-story-images .story-large figcaption { padding-top: 10px; color: var(--muted); font-size: 12px; }
.solution-story-images .story-small { position: absolute; bottom: 0; left: 0; width: 42%; height: 220px; overflow: hidden; border: 8px solid #fff; box-shadow: var(--shadow); }
.solution-story-images .story-small img { height: 100%; object-fit: cover; }
.service-assurance { display: grid; margin-top: 100px; margin-bottom: 100px; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--line); }
.service-assurance article { padding: 38px; border-right: 1px solid var(--line); }
.service-assurance article:last-child { border: 0; }
.service-assurance svg { color: var(--red); }
.service-assurance h3 { margin: 24px 0 9px; font-size: 20px; }
.service-assurance p { margin: 0; color: var(--muted); font-size: 14px; }
.solution-faq { display: grid; padding: 105px 0; grid-template-columns: .75fr 1.25fr; gap: 90px; border-top: 1px solid var(--line); }
.solution-faq-heading h2 { margin: 0 0 18px; }
.solution-faq-heading p:last-child { color: var(--muted); }
.faq-list { border-top: 1px solid var(--line); }
.faq-list details { border-bottom: 1px solid var(--line); }
.faq-list summary { display: flex; min-height: 70px; padding: 20px 2px; align-items: center; justify-content: space-between; gap: 20px; cursor: pointer; list-style: none; font-weight: 800; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary b { color: var(--red); font-size: 24px; font-weight: 400; transition: transform .2s ease; }
.faq-list details[open] summary b { transform: rotate(45deg); }
.faq-list details > p { margin: -4px 44px 23px 2px; color: var(--muted); }
.solution-next { display: grid; margin-bottom: 110px; padding: 50px; grid-template-columns: 1fr 1fr; align-items: center; gap: 55px; background: var(--sand); }
.solution-next-copy h2 { margin: 0 0 16px; }
.solution-next-copy > p:not(.eyebrow) { color: #5f5954; }
.related-solutions { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.related-card { position: relative; height: 265px; overflow: hidden; color: #fff; }
.related-card::after { position: absolute; inset: 0; background: linear-gradient(transparent 35%, rgba(0,0,0,.82)); content: ""; }
.related-card img { height: 100%; object-fit: cover; transition: transform .3s ease; }
.related-card:hover img { transform: scale(1.04); }
.related-card span { position: absolute; right: 17px; bottom: 15px; left: 17px; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 14px; font-weight: 800; }

/* About */
.about-hero { display: grid; min-height: 650px; padding: 80px 0 100px; grid-template-columns: .92fr 1.08fr; align-items: center; gap: 75px; }
.about-hero-copy h1 { max-width: 620px; margin: 0 0 24px; }
.about-hero-collage { position: relative; min-height: 530px; }
.about-main-image { position: absolute; inset: 0 0 65px 45px; overflow: hidden; }
.about-main-image img, .about-small-image img { height: 100%; object-fit: cover; }
.about-small-image { position: absolute; bottom: 0; left: 0; width: 42%; height: 220px; overflow: hidden; border: 8px solid #fff; box-shadow: var(--shadow); }
.about-stamp { position: absolute; right: -14px; bottom: 25px; display: flex; width: 130px; height: 130px; align-items: center; justify-content: center; border-radius: 50%; background: var(--red); color: #fff; font-family: Georgia, serif; font-size: 18px; line-height: 1.3; text-align: center; }
.about-story { padding: 105px 0; background: var(--paper); }
.about-story-grid { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 90px; }
.about-story h2 { margin: 0 0 23px; }
.about-story p:not(.eyebrow) { color: #514d49; }
.about-story figure { overflow: hidden; }
.about-story figure img { height: 520px; object-fit: cover; }
.about-story figcaption { padding-top: 10px; color: var(--muted); font-size: 12px; }
.about-principles { padding: 105px 0; }
.principle-grid { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--line); }
.principle-grid article { min-height: 250px; padding: 40px; border-right: 1px solid var(--line); }
.principle-grid article:last-child { border: 0; }
.principle-grid svg { color: var(--red); }
.principle-grid h3 { margin: 38px 0 10px; font-size: 21px; }
.principle-grid p { margin: 0; color: var(--muted); }
.about-workflow { padding: 110px 0; background: #191817; color: #fff; }
.about-workflow-grid { display: grid; grid-template-columns: 1.08fr .92fr; align-items: center; gap: 80px; }
.about-workflow-gallery { display: grid; height: 590px; grid-template-columns: 1.1fr .9fr; grid-template-rows: 1fr 1fr; gap: 12px; }
.about-workflow-gallery img { height: 100%; object-fit: cover; }
.about-workflow-gallery img:first-child { grid-row: span 2; }
.about-workflow h2 { margin: 0 0 24px; }
.about-workflow p:not(.eyebrow) { color: rgba(255,255,255,.68); }
.workflow-labels { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 26px; }
.workflow-labels span { padding: 7px 11px; border: 1px solid rgba(255,255,255,.2); border-radius: 99px; font-size: 12px; font-weight: 750; }
.about-promise { display: grid; padding: 110px 0; grid-template-columns: 1fr 1fr; align-items: center; gap: 90px; }
.about-promise h2 { margin: 0 0 24px; }
.about-promise > div:first-child p:not(.eyebrow) { color: #514d49; }
.about-promise-visual { display: grid; height: 520px; grid-template-columns: 1fr 1fr; gap: 12px; }
.about-promise-visual img { height: 100%; object-fit: cover; }
.about-promise-visual img:last-child { margin-top: 55px; height: calc(100% - 55px); }
.about-visit { padding: 55px 0; background: var(--red); color: #fff; }
.about-visit .shell { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 28px; }
.about-visit .eyebrow { color: rgba(255,255,255,.72); }
.about-visit h2 { margin: 0; font-size: clamp(1.8rem, 3vw, 2.5rem); }

/* Services overview */
.services-hero { padding: 75px 0 95px; background: var(--paper); }
.services-hero-grid { display: grid; min-height: 520px; grid-template-columns: .9fr 1.1fr; align-items: center; gap: 75px; }
.services-hero h1 { margin: 0 0 23px; }
.services-hero .button { margin-top: 30px; }
.services-hero figure { height: 520px; overflow: hidden; box-shadow: var(--shadow); }
.services-hero figure img { height: 100%; object-fit: cover; }
.services-directory { padding: 105px 0; }
.services-showcase { display: grid; gap: 16px; }
.service-showcase-card { display: grid; min-height: 300px; grid-template-columns: .8fr 1.2fr; overflow: hidden; border: 1px solid var(--line); background: #fff; transition: border-color .2s ease, transform .2s ease; }
.service-showcase-card:nth-child(even) { grid-template-columns: 1.2fr .8fr; }
.service-showcase-card:nth-child(even) img { order: 2; }
.service-showcase-card:hover { border-color: rgba(199,25,36,.55); transform: translateY(-2px); }
.service-showcase-card img { height: 100%; min-height: 300px; object-fit: cover; }
.service-showcase-card > div { display: flex; padding: 44px; flex-direction: column; align-items: flex-start; justify-content: center; }
.service-showcase-card h3 { margin: 0 0 11px; font-family: Georgia, serif; font-size: 32px; font-weight: 500; }
.service-showcase-card p:not(.eyebrow) { max-width: 600px; margin: 0 0 22px; color: var(--muted); }
.services-fit { padding: 100px 0; background: #191817; color: #fff; }
.services-fit-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 90px; }
.services-fit h2 { margin: 0 0 24px; }
.services-fit p:not(.eyebrow) { color: rgba(255,255,255,.68); }
.services-area { display: grid; padding: 80px 0; grid-template-columns: .75fr 1fr auto; align-items: center; gap: 50px; }
.services-area svg { color: var(--red); }
.services-area h2 { margin: 0; font-size: 34px; }
.services-area p { margin: 0; color: var(--muted); }

/* Gallery */
.gallery-header { display: grid; padding: 85px 0 55px; grid-template-columns: 1fr 1fr; align-items: end; gap: 90px; }
.gallery-header h1 { max-width: 670px; margin: 0; }
.gallery-header > div:last-child > p { margin: 0; color: var(--muted); }
.gallery-categories { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
.gallery-categories span { padding: 7px 11px; border-radius: 99px; background: var(--paper); font-size: 12px; font-weight: 750; }
.gallery-wall { display: grid; padding-bottom: 105px; grid-auto-flow: dense; grid-auto-rows: 300px; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.gallery-wall figure { position: relative; overflow: hidden; background: #ddd; }
.gallery-wall .gallery-wide { grid-column: span 2; }
.gallery-wall figure:nth-child(6n + 3) { grid-row: span 2; }
.gallery-wall img { height: 100%; object-fit: cover; transition: transform .45s ease; }
.gallery-wall figure:hover img { transform: scale(1.035); }
.gallery-wall figcaption { position: absolute; right: 0; bottom: 0; left: 0; padding: 50px 18px 16px; background: linear-gradient(transparent, rgba(0,0,0,.78)); color: #fff; font-size: 12.5px; }
.gallery-wall figcaption span { display: block; margin-bottom: 3px; color: #ff858c; font-size: 10px; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.gallery-note { display: grid; margin-bottom: 105px; padding: 45px; grid-template-columns: .9fr 1fr auto; align-items: center; gap: 40px; background: var(--paper); }
.gallery-note h2 { margin: 0; font-size: 34px; }
.gallery-note > p { margin: 0; color: var(--muted); }

/* FAQ */
.faq-hero { padding: 75px 0 95px; background: var(--paper); }
.faq-hero-grid { display: grid; min-height: 470px; grid-template-columns: 1fr 1fr; align-items: center; gap: 80px; }
.faq-hero h1 { margin: 0 0 22px; }
.faq-hero-images { display: grid; height: 470px; grid-template-columns: 1.15fr .85fr; gap: 12px; }
.faq-hero-images img { height: 100%; object-fit: cover; }
.faq-hero-images img:last-child { margin-top: 55px; height: calc(100% - 55px); }
.faq-groups { padding: 95px 0; }
.faq-group { display: grid; padding: 58px 0; grid-template-columns: .8fr 1.2fr; gap: 85px; border-bottom: 1px solid var(--line); }
.faq-group:first-child { padding-top: 0; }
.faq-group-intro { display: grid; grid-template-columns: 150px 1fr; align-items: start; gap: 24px; }
.faq-group-intro img { height: 170px; object-fit: cover; }
.faq-group-intro h2 { margin: 0 0 10px; font-size: 32px; }
.faq-group-intro p:last-child { margin: 0; color: var(--muted); font-size: 14px; }
.faq-contact { display: grid; margin-bottom: 105px; padding: 42px; grid-template-columns: auto 1fr auto; align-items: center; gap: 25px; background: #191817; color: #fff; }
.faq-contact svg { color: #ef5a63; }
.faq-contact h2 { margin: 0 0 6px; font-size: 31px; }
.faq-contact p { margin: 0; color: rgba(255,255,255,.68); }

/* Contact */
.contact-header { display: grid; min-height: 540px; padding: 75px 0 90px; grid-template-columns: 1fr .85fr; align-items: center; gap: 80px; }
.contact-header h1 { max-width: 690px; margin: 0 0 22px; }
.contact-header figure { height: 430px; overflow: hidden; }
.contact-header figure img { height: 100%; object-fit: cover; }
.contact-main { display: grid; margin-bottom: 90px; grid-template-columns: 1.15fr .85fr; box-shadow: var(--shadow); }
.enquiry-form { padding: 48px; background: var(--paper); }
.form-heading h2 { margin: 0 0 10px; }
.form-heading > p:last-child { max-width: 650px; margin: 0 0 28px; color: var(--muted); }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.enquiry-form label { display: grid; margin-bottom: 16px; gap: 7px; color: #4d4946; font-size: 12px; font-weight: 800; letter-spacing: .03em; }
.enquiry-form input, .enquiry-form select, .enquiry-form textarea { width: 100%; border: 1px solid rgba(24,23,23,.18); border-radius: 3px; outline: none; background: #fff; color: var(--ink); font-size: 14px; font-weight: 500; }
.enquiry-form input, .enquiry-form select { height: 50px; padding: 0 13px; }
.enquiry-form textarea { padding: 12px 13px; resize: vertical; }
.enquiry-form input:focus, .enquiry-form select:focus, .enquiry-form textarea:focus { border-color: var(--red); box-shadow: 0 0 0 3px rgba(199,25,36,.08); }
.enquiry-form .button { margin-top: 5px; border: 0; }
.form-note { margin: 12px 0 0; color: var(--muted); font-size: 11.5px; }
.contact-details { padding: 48px; background: #1b1a19; color: #fff; }
.contact-details h2 { margin: 0 0 26px; font-size: 34px; }
.contact-details > a, .contact-details > div { display: flex; padding: 15px 0; align-items: flex-start; gap: 13px; border-bottom: 1px solid rgba(255,255,255,.12); color: rgba(255,255,255,.86); font-size: 14px; }
.contact-details svg { flex: 0 0 auto; margin-top: 4px; color: #ef626a; }
.contact-details span { display: grid; gap: 2px; }
.contact-details small { color: rgba(255,255,255,.48); font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.contact-service-area { margin: 24px 0 0; color: rgba(255,255,255,.6); font-size: 13px; }
.service-radius-note { margin-top: 18px; padding-left: 16px; border-left: 3px solid var(--red); color: var(--muted); font-size: 14px; }
.service-area-list { display: flex; margin: 18px 0; flex-wrap: wrap; gap: 7px; }
.service-area-list span { padding: 7px 10px; border: 1px solid rgba(24,23,23,.14); border-radius: 999px; background: rgba(255,255,255,.6); color: #56514e; font-size: 11px; font-weight: 750; }
.local-service-panel .service-area-list span { border-color: rgba(255,255,255,.18); background: rgba(255,255,255,.07); color: rgba(255,255,255,.78); }
.contact-details .service-area-list span { border-color: rgba(255,255,255,.16); background: rgba(255,255,255,.06); color: rgba(255,255,255,.68); }
.contact-map { display: grid; margin-bottom: 100px; grid-template-columns: 1.25fr .75fr; overflow: hidden; border: 1px solid var(--line); }
.contact-map iframe { width: 100%; min-height: 430px; border: 0; }
.contact-map > div { padding: 45px; align-self: center; }
.contact-map h2 { margin: 0 0 15px; font-size: 34px; }
.contact-map p:not(.eyebrow) { color: var(--muted); }
.contact-work { padding-bottom: 105px; }
.contact-image-strip { display: grid; height: 280px; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.contact-image-strip figure { overflow: hidden; }
.contact-image-strip img { height: 100%; object-fit: cover; }

/* Footer */
.site-footer { padding: 78px 0 25px; background: #151414; color: #fff; }
.footer-grid { display: grid; padding-bottom: 58px; grid-template-columns: 1.15fr .75fr 1.1fr; gap: 75px; }
.footer-brand img { width: 190px; height: 74px; object-fit: contain; object-position: left center; }
.footer-brand p { max-width: 440px; margin: 22px 0; color: rgba(255,255,255,.62); }
.footer-quote { min-height: 46px; padding: 0 17px; border-radius: 4px; }
.footer-grid h3 { margin: 18px 0 20px; font-size: 15px; letter-spacing: .08em; text-transform: uppercase; }
.footer-grid ul { margin: 0; padding: 0; list-style: none; }
.footer-grid li { margin-bottom: 8px; }
.footer-grid li a { color: rgba(255,255,255,.65); font-size: 14px; }
.footer-grid li a:hover { color: #fff; }
.footer-grid address { display: grid; gap: 14px; font-style: normal; }
.footer-grid address span, .footer-grid address a { display: flex; align-items: flex-start; gap: 10px; color: rgba(255,255,255,.65); font-size: 13.5px; }
.footer-grid address svg { flex: 0 0 auto; margin-top: 3px; color: #ef5a63; }
.footer-bottom { display: flex; padding-top: 22px; justify-content: space-between; gap: 20px; border-top: 1px solid rgba(255,255,255,.1); color: rgba(255,255,255,.38); font-size: 11.5px; }
.mobile-contact-bar { display: none; }
.admin-bar .site-header { top: 32px; }
.elementor-page .elementor-widget-theme-post-content > .elementor-widget-container { overflow: visible; }

@media (max-width: 1100px) {
  .header-inner { grid-template-columns: 170px 1fr auto; }
  .desktop-nav { gap: 18px; font-size: 13px; }
  .header-cta { padding: 0 13px; }
  .home-hero-grid, .solution-hero-grid, .about-hero, .services-hero-grid { gap: 45px; }
  .image-service-card, .image-service-card:nth-child(4), .image-service-card:nth-child(5), .image-service-card:nth-child(6), .image-service-card:nth-child(7) { grid-column: span 6; }
  .image-service-card:last-child { grid-column: 4 / span 6; }
  .solution-story-grid, .about-workflow-grid { gap: 55px; }
  .gallery-wall { grid-template-columns: repeat(3, 1fr); }
  .services-area, .gallery-note { grid-template-columns: 1fr 1fr; }
  .services-area .button, .gallery-note .button { justify-self: start; }
}

@media (max-width: 900px) {
  body { padding-bottom: 62px; }
  .topbar { display: none; }
  .header-inner { min-height: 72px; grid-template-columns: 1fr auto; }
  .brand-link { width: 174px; height: 64px; }
  .site-header { background: #fff; backdrop-filter: none; }
  .desktop-nav, .header-cta { display: none; }
  .mobile-menu { display: block; }
  .mobile-menu > summary { display: flex; width: 46px; height: 46px; align-items: center; justify-content: center; border: 1px solid var(--line); border-radius: 12px; background: #faf8f5; cursor: pointer; list-style: none; font-size: 21px; transition: background .2s ease, color .2s ease; }
  .mobile-menu[open] > summary { background: var(--ink); color: #fff; }
  .mobile-menu .close-icon { display: none; }
  .mobile-menu[open] .open-icon { display: none; }
  .mobile-menu[open] .close-icon { display: block; }
  .mobile-panel { position: absolute; z-index: 2; top: calc(100% + 10px); right: 12px; width: min(420px, calc(100vw - 24px)); max-height: calc(100vh - 154px); max-height: calc(100dvh - 154px); padding: 18px 18px 22px; overflow-y: auto; overscroll-behavior: contain; border: 1px solid rgba(24,23,23,.14); border-radius: 18px; background: #fff; box-shadow: 0 24px 60px rgba(23,18,17,.28); }
  .mobile-panel-heading { display: flex; margin-bottom: 14px; align-items: center; justify-content: space-between; gap: 15px; }
  .mobile-panel-heading strong { font-family: Georgia, "Times New Roman", serif; font-size: 23px; font-weight: 500; }
  .mobile-panel-heading span { color: var(--muted); font-size: 11px; font-weight: 700; }
  .mobile-primary-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
  .mobile-primary-grid-bottom { margin-top: 9px; }
  .mobile-nav-card { display: flex; min-height: 52px; padding: 9px 12px; align-items: center; gap: 9px; border: 1px solid var(--line); border-radius: 10px; background: #fff; font-size: 13.5px; font-weight: 800; }
  .mobile-nav-card svg { flex: 0 0 auto; color: var(--red); }
  .mobile-nav-contact { grid-column: span 2; }
  .mobile-solutions { margin-top: 9px; border: 1px solid rgba(199,25,36,.22); border-radius: 12px; background: #fbf7f2; overflow: hidden; }
  .mobile-solutions > summary { display: flex; min-height: 56px; padding: 0 14px; align-items: center; justify-content: space-between; gap: 12px; cursor: pointer; list-style: none; font-size: 14px; font-weight: 850; }
  .mobile-solutions > summary::-webkit-details-marker { display: none; }
  .mobile-summary-label { display: flex; align-items: center; gap: 10px; }
  .mobile-summary-label svg { color: var(--red); }
  .mobile-chevron { display: flex; transition: transform .2s ease; }
  .mobile-solutions[open] .mobile-chevron { transform: rotate(180deg); }
  .mobile-service-grid { display: grid; padding: 0 10px 10px; grid-template-columns: 1fr 1fr; gap: 8px; border-top: 1px solid rgba(199,25,36,.12); }
  .mobile-all-services { display: flex; min-height: 42px; padding: 4px 2px; grid-column: span 2; align-items: center; justify-content: space-between; gap: 8px; color: var(--red-dark); font-size: 12.5px; font-weight: 850; }
  .mobile-service-card { display: flex; min-height: 67px; padding: 9px; align-items: center; gap: 8px; border: 1px solid rgba(24,23,23,.1); border-radius: 9px; background: #fff; font-size: 11.5px; font-weight: 750; line-height: 1.25; }
  .mobile-service-icon { display: flex; width: 34px; height: 34px; flex: 0 0 34px; align-items: center; justify-content: center; border-radius: 8px; background: rgba(199,25,36,.08); color: var(--red); }
  body.mobile-nav-open { overflow: hidden; }
  body.mobile-nav-open::before { position: fixed; z-index: 60; inset: 0 0 62px; background: rgba(24,23,23,.38); content: ""; }
  .mobile-contact-bar { position: fixed; z-index: 90; right: 0; bottom: 0; left: 0; display: grid; height: 62px; grid-template-columns: 1fr 1fr; background: #fff; box-shadow: 0 -8px 30px rgba(0,0,0,.14); }
  .mobile-contact-bar a { display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 14px; font-weight: 800; }
  .mobile-contact-bar a:last-child { background: var(--red); color: #fff; }
  .admin-bar .site-header { top: 46px; }
  .home-hero-grid, .home-planning-grid, .local-service, .solution-intro, .solution-story-grid, .solution-faq, .solution-next, .about-hero, .about-story-grid, .about-workflow-grid, .about-promise, .services-hero-grid, .services-fit-grid, .gallery-header, .faq-hero-grid, .faq-group, .contact-header, .contact-main, .contact-map { grid-template-columns: 1fr; }
  .home-hero-grid { min-height: 0; }
  .home-hero-visual { min-height: 520px; }
  .home-planning-grid, .local-service, .solution-intro, .solution-story-grid, .solution-faq, .about-story-grid, .about-workflow-grid, .about-promise { gap: 50px; }
  .process-cards { grid-template-columns: 1fr 1fr; }
  .process-cards article:nth-child(2) { border-right: 0; }
  .process-cards article:nth-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,.13); }
  .home-enquiry { align-items: flex-start; flex-direction: column; }
  .solution-hero-grid { min-height: 700px; grid-template-columns: 1fr 260px; }
  .solution-hero-card img { height: 220px; }
  .solution-story.reverse .solution-story-copy, .solution-story.reverse .solution-story-images { order: initial; }
  .solution-story.reverse .solution-story-copy { order: 1; }
  .solution-story.reverse .solution-story-images { order: 2; }
  .solution-next { padding: 40px; }
  .about-hero-collage { min-height: 500px; }
  .about-visit .shell, .faq-contact { grid-template-columns: auto 1fr; }
  .about-visit .button, .faq-contact .button { grid-column: 2; justify-self: start; }
  .service-showcase-card, .service-showcase-card:nth-child(even) { grid-template-columns: .85fr 1.15fr; }
  .service-showcase-card:nth-child(even) img { order: initial; }
  .gallery-header { align-items: start; gap: 30px; }
  .gallery-wall { grid-template-columns: repeat(2, 1fr); }
  .gallery-note, .services-area { grid-template-columns: 1fr; }
  .faq-group { gap: 35px; }
  .contact-header figure { height: 380px; }
  .contact-map > div { grid-row: 1; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .footer-brand { grid-column: span 2; }
}

@media (max-width: 620px) {
  body { font-size: 16px; }
  .shell { width: min(100% - 30px, 1200px); }
  h1 { font-size: 2.25rem; line-height: 1.08; }
  h2 { font-size: 2rem; }
  .split-heading { align-items: flex-start; flex-direction: column; gap: 14px; }
  .breadcrumb { margin-bottom: 28px; }
  .hero-actions { align-items: stretch; flex-direction: column; }
  .button { width: 100%; }
  .home-hero { padding: 45px 0 55px; background: #fff; }
  .home-hero-copy h1 { font-size: 2.3rem; }
  .home-hero-grid { gap: 38px; }
  .home-hero-visual { min-height: 410px; }
  .home-hero-main { inset: 0 0 38px 24px; }
  .home-hero-inset { width: 48%; border-width: 6px; }
  .home-hero-inset img { height: 135px; }
  .home-hero-inset figcaption { display: none; }
  .home-solutions, .home-planning, .local-service, .home-process, .solution-intro, .solution-story, .solution-faq, .about-story, .about-principles, .about-workflow, .about-promise, .services-directory, .services-fit, .faq-groups { padding-top: 72px; padding-bottom: 72px; }
  .image-service-grid { grid-template-columns: 1fr; }
  .image-service-card, .image-service-card:nth-child(4), .image-service-card:nth-child(5), .image-service-card:nth-child(6), .image-service-card:nth-child(7), .image-service-card:last-child { min-height: 315px; grid-column: auto; }
  .image-service-card p { max-height: 80px; margin-bottom: 10px; opacity: .82; }
  .home-planning-images { height: 470px; padding-right: 0; }
  .local-service-panel { padding: 32px; }
  .process-cards { grid-template-columns: 1fr; }
  .process-cards article { min-height: 190px; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.13); }
  .process-cards article:nth-child(3) { border-bottom: 1px solid rgba(255,255,255,.13); }
  .home-result-strip { height: 520px; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; }
  .home-result-strip figure:first-child { grid-column: span 2; }
  .home-enquiry { padding: 70px 0; }
  .solution-hero { min-height: 720px; }
  .solution-hero-grid { min-height: 720px; padding-top: 45px; padding-bottom: 40px; grid-template-columns: 1fr; gap: 30px; }
  .solution-hero-copy h1 { font-size: 2.45rem; }
  .solution-hero-card { display: grid; grid-template-columns: 42% 1fr; align-items: center; }
  .solution-hero-card img { height: 145px; }
  .solution-intro { gap: 26px; }
  .solution-story-grid { gap: 34px; }
  .solution-story-images { min-height: 430px; padding: 0 0 48px 36px; }
  .solution-story-images .story-large { height: 390px; }
  .solution-story-images .story-small { width: 48%; height: 155px; border-width: 6px; }
  .service-assurance, .principle-grid { margin-top: 72px; margin-bottom: 72px; grid-template-columns: 1fr; }
  .service-assurance article, .principle-grid article { min-height: 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .solution-next { margin-bottom: 72px; padding: 28px; }
  .related-solutions { grid-template-columns: 1fr; }
  .about-hero { min-height: 0; padding: 50px 0 72px; }
  .about-hero-collage { min-height: 410px; }
  .about-main-image { inset: 0 0 50px 25px; }
  .about-small-image { height: 160px; border-width: 6px; }
  .about-stamp { right: -5px; width: 105px; height: 105px; font-size: 15px; }
  .about-story figure img { height: 390px; }
  .about-workflow-gallery { height: 450px; }
  .about-promise-visual { height: 400px; }
  .about-visit .shell, .faq-contact { grid-template-columns: 1fr; }
  .about-visit .button, .faq-contact .button { grid-column: auto; }
  .services-hero { padding: 50px 0 72px; }
  .services-hero figure { height: 390px; }
  .service-showcase-card, .service-showcase-card:nth-child(even) { grid-template-columns: 1fr; }
  .service-showcase-card img { height: 260px; min-height: 0; }
  .service-showcase-card > div { padding: 30px; }
  .service-showcase-card h3 { font-size: 28px; }
  .services-area { padding: 65px 0; }
  .gallery-header { padding: 55px 0 38px; }
  .gallery-wall { padding-bottom: 72px; grid-auto-rows: 250px; grid-template-columns: 1fr; }
  .gallery-wall .gallery-wide { grid-column: auto; }
  .gallery-wall figure:nth-child(6n + 3) { grid-row: auto; }
  .gallery-note { margin-bottom: 72px; padding: 28px; }
  .faq-hero { padding: 50px 0 70px; }
  .faq-hero-images { height: 360px; }
  .faq-group-intro { grid-template-columns: 105px 1fr; }
  .faq-group-intro img { height: 130px; }
  .faq-contact { margin-bottom: 72px; padding: 28px; }
  .contact-header { min-height: 0; padding: 50px 0 65px; gap: 35px; }
  .contact-header figure { height: 300px; }
  .contact-main { margin-right: 0; margin-bottom: 70px; margin-left: 0; width: 100%; }
  .enquiry-form, .contact-details { padding: 30px 20px; }
  .form-row { grid-template-columns: 1fr; gap: 0; }
  .contact-map { width: 100%; margin-bottom: 72px; }
  .contact-map > div { padding: 30px 20px; }
  .contact-image-strip { height: 470px; grid-template-columns: 1fr 1fr; }
  .contact-work { padding-bottom: 72px; }
  .footer-grid { grid-template-columns: 1fr; gap: 38px; }
  .footer-brand { grid-column: auto; }
  .footer-bottom { flex-direction: column; }
}
