            /* ----------------------------------------------------------------
     Tokens
  -----------------------------------------------------------------*/
            :root {
                /* Surfaces — cool light grey-blue, derived from the logo */
                --stage: oklch(95% 0.006 245);
                --stage-deep: oklch(92% 0.010 245);
                --surface: oklch(98% 0.003 245);
                --surface-warm: oklch(95% 0.008 245); /* legacy name; reads as cool-tinted now */
                --surface-deep: oklch(88% 0.014 245);

                /* Ink — deep navy charcoal, not warm */
                --ink: oklch(20% 0.045 245);
                --ink-soft: oklch(42% 0.04 245);
                --ink-faint: oklch(60% 0.03 245);
                --ink-line: oklch(86% 0.012 245);
                --ink-line-strong: oklch(72% 0.018 245);

                /* Brand — Seastone navy + slate */
                --primary: oklch(38% 0.105 245); /* matches the "SEA" blue */
                --primary-deep: oklch(22% 0.07 245); /* matches the diamond / "DRIVEWAYS & PATIOS" dark */
                --primary-light: oklch(60% 0.085 245);
                --slate: oklch(56% 0.045 245); /* matches the "STONE" grey */

                /* Accent — bright Seastone blue used for eyebrows, highlights, focus */
                --accent: oklch(58% 0.13 245);
                --accent-deep: oklch(40% 0.135 245);

                --sage: oklch(58% 0.075 145);

                /* Social */
                --whatsapp: #25d366;
                --whatsapp-deep: #128c7e;
                --facebook: #1877f2;
                --google: #4285f4;

                /* Status */
                --success: oklch(56% 0.105 155);
                --warn: oklch(56% 0.13 35);

                /* Type */
                --font-display:
                    "Cabinet Grotesk", "Switzer", system-ui, sans-serif;
                --font-body: "Switzer", system-ui, -apple-system, sans-serif;

                /* Spacing scale (4pt) */
                --s-1: 4px;
                --s-2: 8px;
                --s-3: 12px;
                --s-4: 16px;
                --s-5: 24px;
                --s-6: 32px;
                --s-7: 48px;
                --s-8: 64px;
                --s-9: 96px;
                --s-10: 128px;

                /* Radius */
                --r-sm: 5px;
                --r-md: 8px;
                --r-lg: 16px;
                --r-xl: 32px;
                --r-pill: 9px;

                /* Shadow */
                --shadow-sm: 0 2px 6px oklch(20% 0.02 270 / 0.06);
                --shadow-md: 0 12px 30px oklch(20% 0.02 270 / 0.08);
                --shadow-lg: 0 28px 60px oklch(20% 0.02 270 / 0.14);
                --shadow-glass:
                    0 1px 0 oklch(100% 0 0 / 0.7) inset,
                    0 8px 24px oklch(20% 0.02 270 / 0.18);

                /* Layout */
                --gutter: clamp(9px, 2.6vw, 12px);
                --max-width: 1320px;
            }

            *,
            *::before,
            *::after {
                box-sizing: border-box;
            }

            html {
                scroll-behavior: smooth;
                -webkit-text-size-adjust: 100%;
            }

            html, body {
                overflow-x: clip;
            }

            body {
                margin: 0;
                font-family: var(--font-body);
                font-size: 1.0625rem;
                line-height: 1.55;
                color: var(--ink-soft);
                background: var(--stage);
                -webkit-font-smoothing: antialiased;
                -moz-osx-font-smoothing: grayscale;
                text-rendering: optimizeLegibility;
            }

            img {
                display: block;
                max-width: 100%;
                height: auto;
            }
            a {
                color: inherit;
                text-decoration: none;
            }
            button,
            input,
            select,
            textarea {
                font: inherit;
                color: inherit;
            }
            button {
                cursor: pointer;
                background: none;
                border: 0;
                padding: 0;
            }

            ::selection {
                background: var(--accent);
                color: var(--ink);
            }

            /* ----------------------------------------------------------------
               Quote modal — popup contact form with photo backdrop
            ----------------------------------------------------------------*/
            .quote-modal {
                position: fixed;
                inset: 0;
                z-index: 200;
                display: flex;
                align-items: center;
                justify-content: center;
                padding: clamp(12px, 2vw, 28px);
                opacity: 0;
                visibility: hidden;
                pointer-events: none;
                transition:
                    opacity 280ms cubic-bezier(.2,.8,.2,1),
                    visibility 0s linear 280ms;
            }

            .quote-modal.is-open {
                opacity: 1;
                visibility: visible;
                pointer-events: auto;
                transition:
                    opacity 280ms cubic-bezier(.2,.8,.2,1),
                    visibility 0s linear 0s;
            }

            .quote-modal__backdrop {
                position: absolute;
                inset: 0;
                width: 100%;
                height: 100%;
                background: oklch(15% 0.02 270 / 0.55);
                backdrop-filter: blur(8px) saturate(120%);
                -webkit-backdrop-filter: blur(8px) saturate(120%);
                border: 0;
                cursor: pointer;
            }

            .quote-modal__panel {
                position: relative;
                width: min(1080px, 100%);
                max-height: calc(100vh - 32px);
                aspect-ratio: 16 / 10;
                border-radius: var(--r-lg);
                overflow: hidden;
                background: var(--ink);
                box-shadow:
                    0 40px 90px -20px oklch(15% 0.05 270 / 0.6),
                    0 0 0 1px oklch(100% 0 0 / 0.08) inset;
                transform: translateY(16px) scale(0.96);
                transition:
                    transform 380ms cubic-bezier(.2,.8,.2,1),
                    opacity 320ms cubic-bezier(.2,.8,.2,1);
                opacity: 0;
            }

            .quote-modal.is-open .quote-modal__panel {
                transform: translateY(0) scale(1);
                opacity: 1;
            }

            .quote-modal__bg {
                position: absolute;
                inset: 0;
                width: 100%;
                height: 100%;
                object-fit: cover;
                z-index: 0;
            }

            .quote-modal__panel::before {
                /* Subtle vignette so the right side of the photo doesn't blow out */
                content: "";
                position: absolute;
                inset: 0;
                background: linear-gradient(
                    90deg,
                    transparent 50%,
                    oklch(15% 0.02 270 / 0.25) 100%
                );
                z-index: 1;
                pointer-events: none;
            }

            .quote-modal__close {
                position: absolute;
                top: 14px;
                right: 14px;
                z-index: 4;
                width: 38px;
                height: 38px;
                border-radius: 50%;
                background: oklch(100% 0 0 / 0.16);
                backdrop-filter: blur(14px);
                -webkit-backdrop-filter: blur(14px);
                color: var(--surface);
                display: inline-flex;
                align-items: center;
                justify-content: center;
                border: 1px solid oklch(100% 0 0 / 0.22);
                transition: background 200ms ease, transform 200ms ease;
            }
            .quote-modal__close:hover {
                background: oklch(100% 0 0 / 0.28);
                transform: rotate(90deg);
            }

            .quote-modal__inner {
                position: absolute;
                inset: 0 auto 0 0;
                width: 56%;
                z-index: 3;
                display: flex;
                flex-direction: column;
                gap: var(--s-3);
                padding: clamp(24px, 2.4vw, 40px);
                background: oklch(15% 0.02 270 / 0.78);
                backdrop-filter: blur(24px) saturate(140%);
                -webkit-backdrop-filter: blur(24px) saturate(140%);
                color: var(--surface);
                overflow-y: auto;
                overscroll-behavior: contain;
            }

            .quote-modal__head { display: grid; gap: 6px; }
            .quote-modal__head .eyebrow { color: var(--accent); }

            .quote-modal__title {
                margin: 0;
                font-family: var(--font-display);
                font-size: clamp(1.3rem, 1.9vw, 1.7rem);
                font-weight: 700;
                letter-spacing: -0.025em;
                color: var(--surface);
                line-height: 1.1;
            }

            .quote-modal__sub {
                margin: 0;
                font-size: 0.88rem;
                color: oklch(100% 0 0 / 0.7);
                max-width: 38ch;
            }

            .quote-modal__form {
                display: flex;
                flex-direction: column;
                gap: 10px;
                margin-top: var(--s-2);
            }

            .qf-row { display: grid; gap: 10px; }
            .qf-row--two { grid-template-columns: 1fr 1fr; }

            .qf-field { display: grid; gap: 4px; }

            .qf-field label {
                font-size: 0.72rem;
                font-weight: 600;
                color: oklch(100% 0 0 / 0.65);
                letter-spacing: 0.04em;
                text-transform: uppercase;
            }

            .qf-field input,
            .qf-field select,
            .qf-field textarea {
                width: 100%;
                padding: 10px 12px;
                border-radius: var(--r-sm);
                border: 1px solid oklch(100% 0 0 / 0.16);
                background: oklch(100% 0 0 / 0.06);
                color: var(--surface);
                font-size: 0.92rem;
                transition:
                    border-color 180ms ease,
                    background 180ms ease;
            }

            .qf-field input::placeholder,
            .qf-field textarea::placeholder {
                color: oklch(100% 0 0 / 0.4);
            }

            .qf-field input:focus,
            .qf-field select:focus,
            .qf-field textarea:focus {
                outline: none;
                border-color: var(--accent);
                background: oklch(100% 0 0 / 0.1);
            }

            .qf-field select {
                appearance: none;
                background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='%23ffffff' opacity='0.5'><path d='M6 8L0 0h12z'/></svg>");
                background-repeat: no-repeat;
                background-position: right 12px center;
                background-size: 9px;
            }

            .qf-field option { color: var(--ink); background: var(--surface); }

            .qf-field textarea {
                resize: vertical;
                min-height: 70px;
                font-family: inherit;
            }

            .qf-actions {
                display: flex;
                gap: 8px;
                flex-wrap: wrap;
                margin-top: 4px;
            }

            .qf-btn {
                display: inline-flex;
                align-items: center;
                justify-content: center;
                gap: 8px;
                height: 42px;
                padding: 0 18px;
                border-radius: var(--r-pill);
                font-weight: 600;
                font-size: 0.88rem;
                border: 1px solid transparent;
                transition:
                    background 180ms ease,
                    color 180ms ease,
                    border-color 180ms ease;
            }

            .qf-btn--primary {
                background: var(--accent);
                color: var(--ink);
            }
            .qf-btn--primary:hover {
                background: var(--accent-deep);
                color: var(--surface);
            }

            .qf-btn--ghost {
                background: transparent;
                color: var(--surface);
                border-color: oklch(100% 0 0 / 0.25);
            }
            .qf-btn--ghost:hover {
                background: oklch(100% 0 0 / 0.1);
            }

            .qf-disclaimer {
                font-size: 0.72rem;
                color: oklch(100% 0 0 / 0.5);
            }

            .qf-feedback {
                font-size: 0.85rem;
                min-height: 18px;
            }

            /* Mobile — stack with photo as a top hero, form panel takes the rest */
            @media (max-width: 720px) {
                .quote-modal { padding: 0; align-items: stretch; }
                .quote-modal__panel {
                    width: 100%;
                    max-width: none;
                    max-height: 100%;
                    aspect-ratio: auto;
                    height: 100%;
                    border-radius: 0;
                }
                .quote-modal__inner {
                    position: absolute;
                    inset: 38% 0 0 0;
                    width: 100%;
                    border-top-left-radius: var(--r-lg);
                    border-top-right-radius: var(--r-lg);
                    padding: clamp(20px, 5vw, 28px);
                }
                .quote-modal__bg {
                    height: 50%;
                }
                .quote-modal__panel::before {
                    background: linear-gradient(
                        180deg,
                        transparent 0%,
                        oklch(15% 0.02 270 / 0.4) 38%
                    );
                }
                .quote-modal__close {
                    top: 14px;
                    right: 14px;
                }
                .qf-row--two { grid-template-columns: 1fr; }
                .qf-actions { flex-direction: column; align-items: stretch; }
                .qf-btn { width: 100%; }
            }

            /* Lock body scroll when modal open */
            html.quote-modal-open,
            html.quote-modal-open body {
                overflow: hidden;
            }

            /* ----------------------------------------------------------------
               Interaction primitives — hover/focus/touch
            ----------------------------------------------------------------*/

            /* Visible focus ring for keyboard users only — never on click.
               Sits above all backgrounds via box-shadow so it works on dark + light cards. */
            :is(a, button, input, select, textarea, [tabindex]):focus-visible {
                outline: none;
                box-shadow:
                    0 0 0 2px var(--surface),
                    0 0 0 4px var(--ink);
                border-radius: 6px;
            }

            /* Buttons / cards already pill-radiused or larger keep their shape */
            .btn:focus-visible,
            .hero__nav-cta:focus-visible,
            .hero__nav-toggle:focus-visible,
            .calc__btn:focus-visible,
            .calc__cta:focus-visible,
            .gallery-arrow:focus-visible,
            .floating-call:focus-visible,
            .mobile-menu__close:focus-visible {
                border-radius: var(--r-pill);
            }
            .service-feature:focus-visible,
            .service-card:focus-visible,
            .area:focus-visible,
            .guide:focus-visible,
            .gallery-card:focus-visible,
            .review:focus-visible {
                border-radius: var(--r-lg);
            }
            .hero__social a:focus-visible {
                border-radius: 14px;
            }

            /* Disable all hover-driven transforms / colour swaps on touch-only
               devices. Without this, tapping a card on iOS leaves it stuck in
               its hover state until the user taps elsewhere. */
            @media (hover: none) {
                .strip__item:hover,
                .service-card:hover,
                .service-feature:hover .service-feature__media img,
                .service-card:hover .service-card__media img,
                .intro__media:hover img,
                .gallery-card:hover img,
                .area:hover,
                .guide:hover,
                .floating-call:hover,
                .mobile-menu__close:hover {
                    transform: none;
                    background: revert;
                    border-color: revert;
                }
                .hero__social a:hover,
                .btn:hover,
                .gallery-arrow:hover {
                    transform: none;
                }
            }

            /* ----------------------------------------------------------------
     Layout primitives
  -----------------------------------------------------------------*/
            .stage {
                background: var(--stage);
                padding: var(--gutter) var(--gutter) calc(var(--gutter) * 2);
            }

            .stage--deep {
                background: var(--stage-deep);
            }

            .container {
                width: 100%;
                max-width: var(--max-width);
                margin: 0 auto;
            }

            .section {
                padding: clamp(56px, 8vw, 112px) 0;
            }

            .section--tight {
                padding: clamp(40px, 5vw, 72px) 0;
            }

            .section--flush-top {
                padding-top: 0;
            }

            .section-head {
                display: grid;
                gap: var(--s-4);
                margin-bottom: clamp(32px, 4vw, 56px);
            }

            .section-head--row {
                grid-template-columns: 1fr auto;
                align-items: end;
                gap: var(--s-6);
            }

            .eyebrow {
                display: inline-flex;
                align-items: center;
                gap: 8px;
                font-family: var(--font-body);
                font-size: 0.72rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.18em;
                color: var(--accent-deep);
            }

            .eyebrow::before {
                content: "";
                width: 22px;
                height: 1px;
                background: currentColor;
                opacity: 0.6;
            }

            .display {
                font-family: var(--font-display);
                font-weight: 800;
                line-height: 0.98;
                letter-spacing: -0.035em;
                color: var(--ink);
                margin: 0;
            }

            .display--xl {
                font-size: clamp(2.5rem, 5.6vw, 4.5rem);
            }
            .display--lg {
                font-size: clamp(2.1rem, 4.2vw, 3.4rem);
            }
            .display--md {
                font-size: clamp(1.55rem, 2.5vw, 2.1rem);
                letter-spacing: -0.025em;
            }

            .lead {
                max-width: 62ch;
                margin: 0;
                font-size: clamp(1rem, 1.2vw, 1.15rem);
                color: var(--ink-soft);
            }

            /* Buttons */
            .btn {
                display: inline-flex;
                align-items: center;
                justify-content: center;
                gap: 10px;
                height: 48px;
                padding: 0 22px;
                border-radius: var(--r-pill);
                font-family: var(--font-body);
                font-weight: 600;
                font-size: 0.95rem;
                letter-spacing: -0.005em;
                border: 1px solid transparent;
                transition:
                    background-color 200ms cubic-bezier(0.2, 0.8, 0.2, 1),
                    border-color 200ms ease,
                    color 200ms ease,
                    transform 220ms cubic-bezier(0.2, 0.8, 0.2, 1),
                    box-shadow 220ms ease;
                white-space: nowrap;
            }

            .btn:active {
                transform: translateY(1px);
            }

            .btn--primary {
                background: var(--ink);
                color: var(--surface);
                box-shadow: var(--shadow-md);
            }
            .btn--primary:hover {
                background: var(--primary-deep);
                box-shadow: var(--shadow-lg);
            }

            .btn--accent {
                background: var(--accent);
                color: var(--ink);
            }
            .btn--accent:hover {
                background: var(--accent-deep);
                color: var(--surface);
            }

            .btn--ghost {
                background: transparent;
                color: var(--ink);
                border-color: var(--ink-line-strong);
            }
            .btn--ghost:hover {
                background: var(--ink);
                color: var(--surface);
                border-color: var(--ink);
            }

            .btn--glass {
                background: var(--accent);
                color: var(--ink);
                box-shadow:
                    0 12px 32px oklch(20% 0.06 245 / 0.4),
                    0 1px 0 oklch(100% 0 0 / 0.3) inset;
                transition:
                    background 200ms ease,
                    color 200ms ease,
                    transform 200ms cubic-bezier(.2,.8,.2,1);
            }
            .btn--glass:hover {
                background: var(--primary);
                color: var(--surface);
                transform: translateY(-1px);
            }

            /* Ghost button for use on photo backgrounds (sits beside .btn--glass) */
            .btn--ghost-light {
                background: oklch(100% 0 0 / 0.1);
                color: var(--surface);
                border: 1px solid oklch(100% 0 0 / 0.28);
                backdrop-filter: blur(14px);
                -webkit-backdrop-filter: blur(14px);
                transition:
                    background 200ms ease,
                    border-color 200ms ease;
            }
            .btn--ghost-light:hover {
                background: oklch(100% 0 0 / 0.2);
                border-color: oklch(100% 0 0 / 0.5);
            }

            .btn .arrow {
                width: 18px;
                height: 18px;
                display: inline-flex;
                align-items: center;
                justify-content: center;
            }

            /* Card */
            .card {
                background: var(--surface);
                border-radius: var(--r-lg);
                border: 1px solid var(--ink-line);
                overflow: hidden;
            }

            .card--quiet {
                background: var(--surface-warm);
                border-color: oklch(86% 0.018 245);
            }
            .card--ink {
                background: var(--ink);
                color: var(--surface);
                border-color: oklch(28% 0.025 270);
            }
            .card--navy {
                background: var(--primary-deep);
                color: var(--surface);
                border-color: oklch(28% 0.06 245);
            }

            /* ----------------------------------------------------------------
     Hero
  -----------------------------------------------------------------*/
            .hero {
                position: relative;
                isolation: isolate;
            }

            .hero__card {
                position: relative;
                border-radius: var(--r-lg);
                overflow: hidden;
                /* Tighter than before — was 88vh / 1080px max which left a
                   big empty band above the headline on tall desktops. */
                height: clamp(560px, 76vh, 880px);
                background: var(--ink);
                box-shadow: 0 40px 80px -30px oklch(22% 0.06 245 / 0.45);
            }

            .hero__media {
                position: absolute;
                inset: 0;
                z-index: 0;
            }

            .hero__media img {
                width: 100%;
                height: 100%;
                object-fit: cover;
                object-position: 50% 55%;
            }

            .hero__media::after {
                content: "";
                position: absolute;
                inset: 0;
                background:
                    linear-gradient(
                        180deg,
                        oklch(12% 0.04 245 / 0.32) 0%,
                        oklch(12% 0.04 245 / 0.05) 14%,
                        oklch(12% 0.04 245 / 0) 35%,
                        oklch(12% 0.04 245 / 0.55) 100%
                    ),
                    linear-gradient(
                        105deg,
                        oklch(12% 0.05 245 / 0.6) 0%,
                        oklch(12% 0.05 245 / 0.18) 40%,
                        oklch(15% 0.05 245 / 0) 65%
                    );
            }

            .hero__nav {
                position: absolute;
                top: var(--s-5);
                left: var(--gutter);
                right: var(--gutter);
                z-index: 3;
                display: flex;
                align-items: center;
                gap: var(--s-3);
                padding: 0;
                width: auto;
                max-width: none;
                background: transparent;
                backdrop-filter: none;
                -webkit-backdrop-filter: none;
                border: 0;
                border-radius: 0;
                box-shadow: none;
                white-space: nowrap;
            }

            .hero__brand {
                display: inline-flex;
                align-items: center;
                gap: 10px;
                flex: 0 0 auto;
                padding: 0;
                margin: 0;
                border: 0;
                height: auto;
            }

            .hero__brand img {
                height: 44px;
                width: auto;
                object-fit: contain;
                /* Logo turned white with stacked drop-shadows so it holds
                   against bright photo regions */
                filter:
                    brightness(0) invert(1)
                    drop-shadow(0 1px 2px oklch(15% 0.04 245 / 0.7))
                    drop-shadow(0 4px 14px oklch(15% 0.04 245 / 0.5));
            }

            .hero__nav-links {
                display: inline-flex;
                align-items: center;
                gap: 2px;
                flex: 0 0 auto;
                margin-left: auto;
            }

            .hero__nav-links a {
                position: relative;
                padding: 9px 18px;
                border-radius: var(--r-pill);
                font-size: 1rem;
                font-weight: 600;
                letter-spacing: -0.005em;
                color: var(--surface);
                /* Stronger stacked shadow so the nav text reads clearly
                   against bright photo regions without needing a bg bar */
                text-shadow:
                    0 1px 2px oklch(15% 0.04 245 / 0.7),
                    0 4px 14px oklch(15% 0.04 245 / 0.5);
                transition:
                    background 200ms ease,
                    color 200ms ease;
            }

            .hero__nav-links a::after {
                content: "";
                position: absolute;
                left: 18px;
                right: 18px;
                bottom: 4px;
                height: 1px;
                background: var(--accent);
                transform: scaleX(0);
                transform-origin: left center;
                transition: transform 280ms cubic-bezier(.2,.8,.2,1);
            }

            .hero__nav-links a:hover {
                color: var(--accent);
            }

            .hero__nav-links a:hover::after {
                transform: scaleX(1);
            }

            /* Dropdown for "Areas We Serve" — light panel with dark links */
            .nav-dropdown {
                position: relative;
            }

            .nav-dropdown__trigger {
                display: inline-flex;
                align-items: center;
                gap: 6px;
                padding: 9px 18px;
                border: 0;
                background: transparent;
                border-radius: var(--r-pill);
                font-family: var(--font-body);
                font-size: 0.92rem;
                font-weight: 500;
                color: var(--surface);
                text-shadow: 0 1px 8px oklch(15% 0.04 245 / 0.5);
                cursor: pointer;
                transition: color 200ms ease;
            }

            .nav-dropdown__trigger:hover,
            .nav-dropdown.is-open .nav-dropdown__trigger {
                color: var(--accent);
            }

            .nav-dropdown__chev {
                transition: transform 200ms ease;
            }

            .nav-dropdown.is-open .nav-dropdown__chev {
                transform: rotate(180deg);
            }

            .nav-dropdown__menu {
                position: absolute;
                top: calc(100% + 12px);
                left: 50%;
                transform: translateX(-50%) translateY(-6px);
                z-index: 5;
                min-width: 240px;
                padding: 8px;
                background: var(--surface);
                border: 1px solid var(--ink-line);
                border-radius: var(--r-md);
                box-shadow: 0 18px 40px oklch(20% 0.04 245 / 0.22);
                opacity: 0;
                visibility: hidden;
                pointer-events: none;
                transition:
                    opacity 220ms cubic-bezier(.2,.8,.2,1),
                    transform 240ms cubic-bezier(.2,.8,.2,1),
                    visibility 0s linear 240ms;
            }

            .nav-dropdown.is-open .nav-dropdown__menu {
                opacity: 1;
                visibility: visible;
                pointer-events: auto;
                transform: translateX(-50%) translateY(0);
                transition:
                    opacity 220ms cubic-bezier(.2,.8,.2,1),
                    transform 240ms cubic-bezier(.2,.8,.2,1),
                    visibility 0s linear 0s;
            }

            .nav-dropdown__menu a {
                display: block;
                padding: 10px 14px;
                border-radius: var(--r-sm);
                color: var(--ink);
                font-size: 0.9rem;
                font-weight: 500;
                text-shadow: none;
                transition: background 180ms ease, color 180ms ease;
            }

            .nav-dropdown__menu a:hover {
                background: var(--surface-warm);
                color: var(--accent-deep);
            }

            .nav-dropdown__menu a::after {
                display: none;
            }

            /* "Get a quote" CTA pinned right, accent-blue brand pill */
            .hero__nav-cta {
                display: inline-flex;
                align-items: center;
                gap: 6px;
                height: 40px;
                padding: 0 16px 0 18px;
                margin-left: auto;
                border-radius: var(--r-pill);
                background: var(--accent);
                color: var(--ink);
                font-size: 0.9rem;
                font-weight: 600;
                box-shadow: 0 8px 22px oklch(20% 0.06 245 / 0.35);
                transition:
                    background 180ms ease,
                    color 180ms ease,
                    transform 200ms ease;
                white-space: nowrap;
                flex: 0 0 auto;
            }

            .hero__nav-cta svg {
                width: 12px;
                height: 12px;
            }

            .hero__nav-cta:hover {
                background: var(--primary);
                color: var(--surface);
                transform: translateY(-1px);
            }

            .hero__nav-toggle {
                display: none;
                width: 46px;
                height: 46px;
                border-radius: 14px;
                background: var(--primary-deep);
                color: var(--surface);
                align-items: center;
                justify-content: center;
                box-shadow: 0 8px 22px oklch(20% 0.06 245 / 0.4),
                            0 1px 0 oklch(100% 0 0 / 0.15) inset;
                transition: background 200ms ease, transform 200ms ease;
            }
            .hero__nav-toggle:hover {
                background: var(--ink);
                transform: translateY(-1px);
            }

            .hero__copy {
                position: absolute;
                z-index: 2;
                left: clamp(20px, 4vw, 60px);
                bottom: clamp(28px, 4vw, 64px);
                right: clamp(20px, 4vw, 60px);
                color: var(--surface);
                display: grid;
                /* Tighter coupling: kicker → headline → CTA reads as one block */
                gap: var(--s-3);
                max-width: 900px;
            }

            .hero__kicker {
                display: inline-flex;
                align-items: center;
                gap: 8px;
                padding: 6px 14px 6px 6px;
                width: fit-content;
                background: oklch(100% 0 0 / 0.14);
                border: 1px solid oklch(100% 0 0 / 0.26);
                backdrop-filter: blur(16px) saturate(140%);
                -webkit-backdrop-filter: blur(16px) saturate(140%);
                border-radius: var(--r-pill);
                font-size: 0.78rem;
                font-weight: 500;
                letter-spacing: 0.02em;
                color: var(--surface);
            }

            /* Star dot uses brand accent (matches CTA + nav system) */
            .hero__kicker-dot {
                width: 22px;
                height: 22px;
                border-radius: 50%;
                background: var(--accent);
                display: inline-flex;
                align-items: center;
                justify-content: center;
                color: var(--surface);
                box-shadow: 0 2px 6px oklch(50% 0.13 245 / 0.4);
            }

            /* ---------------------------------------------------------------
               Google rating badge variant — streamlined version of the
               eyebrow kicker. Sits above the hero headline as social proof.
               Layout:  [G logo]  ★★★★★  5.0 · 26 Google reviews
               --------------------------------------------------------------- */
            .hero__kicker--google {
                gap: 10px;
                padding: 6px 14px 6px 8px;
                background: oklch(100% 0 0 / 0.18);
                border-color: oklch(100% 0 0 / 0.32);
            }
            .hero__kicker-glogo {
                width: 18px;
                height: 18px;
                flex: 0 0 auto;
                display: inline-block;
                background: var(--surface);
                border-radius: 50%;
                padding: 3px;
                box-shadow: 0 1px 3px oklch(15% 0.04 245 / 0.25);
            }
            .hero__kicker-stars {
                display: inline-flex;
                align-items: center;
                gap: 1px;
                color: #FBBC04; /* Google star yellow */
                /* Slight glow so the stars hold against bright photo */
                filter: drop-shadow(0 1px 1px oklch(15% 0.04 245 / 0.4));
            }
            .hero__kicker-stars svg {
                width: 12px;
                height: 12px;
                display: block;
            }
            .hero__kicker-rating {
                font-weight: 600;
                font-variant-numeric: tabular-nums;
                margin-left: 2px;
            }
            .hero__kicker-sep {
                opacity: 0.55;
                margin: 0 4px;
            }

            .hero__title {
                margin: 0;
                font-family: var(--font-display);
                font-weight: 800;
                color: var(--surface);
                text-shadow: 0 2px 24px oklch(20% 0.05 245 / 0.4);
            }

            .hero__title {
                max-width: none;
            }

            .hero__title-line-1 {
                display: block;
                font-size: clamp(0.95rem, 1.3vw, 1.2rem);
                font-weight: 500;
                letter-spacing: 0.06em;
                text-transform: uppercase;
                color: var(--accent);
                margin-bottom: 2px;
                font-family: var(--font-body);
            }

            .hero__title-line-2 {
                display: block;
                font-size: clamp(2rem, 4.6vw, 4.5rem);
                font-weight: 800;
                letter-spacing: -0.035em;
                line-height: 0.94;
                text-transform: uppercase;
            }

            .hero__actions {
                display: flex;
                flex-wrap: wrap;
                gap: var(--s-3);
                align-items: center;
                margin-top: var(--s-2);
            }

            /* Trust chips beside the primary CTA — fill bottom-right dead zone */
            /* Trust strip — one unified glass pill with hairline dividers
               between items, instead of three separate floating chips.
               Reads as one piece of trust copy, not three loose bits. */
            .hero__chips {
                display: inline-flex;
                align-items: stretch;
                flex-wrap: wrap;
                gap: 0;
                padding: 4px;
                background: oklch(100% 0 0 / 0.1);
                border: 1px solid oklch(100% 0 0 / 0.22);
                backdrop-filter: blur(14px) saturate(140%);
                -webkit-backdrop-filter: blur(14px) saturate(140%);
                border-radius: var(--r-pill);
                width: fit-content;
            }

            .hero__chip {
                display: inline-flex;
                align-items: center;
                gap: 7px;
                padding: 6px 14px;
                font-size: 0.82rem;
                font-weight: 500;
                color: oklch(100% 0 0 / 0.92);
                background: transparent;
                border: 0;
                border-radius: 0;
                white-space: nowrap;
            }

            /* Hairline divider between chips — mid-grey, low alpha */
            .hero__chip + .hero__chip {
                border-left: 1px solid oklch(100% 0 0 / 0.18);
            }

            .hero__chip svg {
                width: 12px;
                height: 12px;
                color: var(--accent);
                flex-shrink: 0;
            }

            /* Subtle scroll cue at the bottom of the hero card */
            .hero__scroll {
                position: absolute;
                left: 50%;
                bottom: 16px;
                transform: translateX(-50%);
                z-index: 2;
                display: inline-flex;
                flex-direction: column;
                align-items: center;
                gap: 4px;
                font-size: 0.7rem;
                font-weight: 500;
                letter-spacing: 0.16em;
                text-transform: uppercase;
                color: oklch(100% 0 0 / 0.55);
                pointer-events: none;
            }

            .hero__scroll svg {
                width: 12px;
                height: 12px;
                animation: scrollHint 2.4s ease-in-out infinite;
            }

            @keyframes scrollHint {
                0%, 100% { transform: translateY(0); opacity: 0.5; }
                50% { transform: translateY(4px); opacity: 1; }
            }

            @media (prefers-reduced-motion: reduce) {
                .hero__scroll svg { animation: none; }
            }

            .hero__location {
                display: inline-flex;
                align-items: center;
                gap: 8px;
                padding: 10px 16px;
                border-radius: var(--r-pill);
                border: 1px solid oklch(100% 0 0 / 0.28);
                color: oklch(100% 0 0 / 0.86);
                font-size: 0.85rem;
                font-weight: 500;
                letter-spacing: 0.01em;
            }

            .hero__location svg {
                width: 14px;
                height: 14px;
            }

            .hero__social {
                position: absolute;
                z-index: 2;
                right: clamp(20px, 3vw, 36px);
                bottom: clamp(28px, 4vw, 64px);
                display: grid;
                gap: 10px;
            }

            .hero__social a {
                width: 52px;
                height: 52px;
                border-radius: 14px;
                display: inline-flex;
                align-items: center;
                justify-content: center;
                box-shadow:
                    0 6px 18px oklch(22% 0.06 245 / 0.4),
                    0 1px 0 oklch(100% 0 0 / 0.3) inset;
                transition: transform 200ms cubic-bezier(0.2, 0.8, 0.2, 1);
            }

            .hero__social a:hover {
                transform: translateY(-2px) scale(1.04);
            }
            .hero__social a svg {
                width: 22px;
                height: 22px;
                color: #fff;
            }

            .hero__social-whatsapp {
                background: var(--whatsapp);
            }
            .hero__social-facebook {
                background: var(--facebook);
            }
            .hero__social-google {
                background: linear-gradient(
                    135deg,
                    #4285f4 0%,
                    #34a853 50%,
                    #fbbc04 80%,
                    #ea4335 100%
                );
            }

            /* ----------------------------------------------------------------
     Stat strip (sits inside cream stage, just under hero)
  -----------------------------------------------------------------*/
            .strip {
                display: grid;
                grid-template-columns: 1.4fr 1fr 1fr 1fr;
                gap: var(--s-3);
                margin-top: var(--gutter);
            }

            .strip__item {
                position: relative;
                display: grid;
                gap: 6px;
                align-content: end;
                padding: var(--s-6) var(--s-5) var(--s-5);
                background: var(--surface);
                border: 1px solid var(--ink-line);
                border-radius: var(--r-md);
                min-height: 168px;
                overflow: hidden;
                transition: transform 220ms cubic-bezier(.2,.8,.2,1),
                            border-color 200ms ease;
            }

            .strip__item:hover {
                transform: translateY(-2px);
                border-color: var(--ink-line-strong);
            }

            .strip__item--feature {
                background: var(--ink);
                color: var(--surface);
                border-color: oklch(28% 0.025 270);
            }

            .strip__item--feature .strip__num,
            .strip__item--feature .strip__label {
                color: var(--surface);
            }

            .strip__item--feature .strip__note {
                color: oklch(100% 0 0 / 0.65);
            }

            .strip__mark {
                position: absolute;
                top: var(--s-4);
                right: var(--s-4);
                display: inline-flex;
                align-items: center;
                gap: 4px;
                color: var(--ink-faint);
            }

            .strip__item--feature .strip__mark { color: oklch(100% 0 0 / 0.55); }

            .strip__mark svg { width: 16px; height: 16px; }

            .strip__stars {
                display: inline-flex;
                gap: 1px;
                color: var(--accent);
                margin-bottom: 2px;
            }

            .strip__stars svg { width: 16px; height: 16px; }

            .strip__num {
                font-family: var(--font-display);
                font-size: clamp(1.9rem, 2.8vw, 2.5rem);
                font-weight: 700;
                letter-spacing: -0.03em;
                color: var(--ink);
                line-height: 1;
                display: inline-flex;
                align-items: baseline;
                gap: 6px;
            }

            .strip__num .strip__unit {
                font-size: 0.55em;
                font-weight: 500;
                letter-spacing: 0;
                color: inherit;
                opacity: 0.7;
            }

            .strip__label {
                font-size: 0.74rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.14em;
                color: var(--ink);
            }

            .strip__note {
                font-size: 0.85rem;
                color: var(--ink-soft);
                line-height: 1.4;
            }

            /* ----------------------------------------------------------------
     Intro / who we are
  -----------------------------------------------------------------*/
            .intro {
                display: grid;
                grid-template-columns: 0.9fr 1.1fr;
                gap: clamp(32px, 5vw, 80px);
                align-items: stretch;
            }

            /* ── Who we are + Stats (combined section) ──────────────── */
            .about-split {
                display: grid;
                grid-template-columns: 1fr 1fr;
                gap: clamp(40px, 6vw, 80px);
                align-items: center;
            }

            .about-split__copy {
                display: grid;
                gap: var(--s-5);
            }

            .about-split__copy p {
                margin: 0;
                max-width: 52ch;
            }

            .who-copy__credentials {
                font-size: 0.82rem;
                color: var(--ink-soft);
                letter-spacing: 0.02em;
            }

            .about-split__stats {
                display: grid;
                gap: var(--s-3);
            }

            /* Stat cards with full-bleed image background */
            .stat-card {
                position: relative;
                border-radius: var(--r-md);
                overflow: hidden;
                padding: var(--s-5);
                background: var(--surface-2, #E6EBF0);
            }

            .stat-card__bg {
                position: absolute;
                inset: 0;
                pointer-events: none;
            }

            .stat-card__bg img {
                width: 100%;
                height: 100%;
                object-fit: cover;
                display: block;
                opacity: 0.14;
            }

            .stat-card__content {
                position: relative;
                z-index: 1;
                display: grid;
                gap: var(--s-2);
            }

            .stat-card__num {
                font-family: var(--font-display);
                font-size: clamp(2.2rem, 3.5vw, 3rem);
                font-weight: 800;
                letter-spacing: -0.03em;
                color: var(--ink);
                line-height: 1;
            }

            .stat-card__unit {
                font-size: 0.5em;
                font-weight: 700;
                letter-spacing: -0.01em;
            }

            .stat-card__label {
                font-size: 0.72rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.14em;
                color: var(--ink);
            }

            .stat-card__note {
                font-size: 0.86rem;
                color: var(--ink-soft);
                line-height: 1.45;
            }

            @media (max-width: 860px) {
                .about-split {
                    grid-template-columns: 1fr;
                    gap: var(--s-7);
                }

                .about-split__stats {
                    grid-template-columns: repeat(3, 1fr);
                }
            }

            @media (max-width: 560px) {
                .about-split__stats {
                    grid-template-columns: 1fr;
                }
            }

            /* ── Our services (Section B) ────────────────────────────── */
            .svc-grid {
                display: grid;
                grid-template-columns: repeat(3, 1fr);
                gap: var(--s-4);
            }

            .svc-tile {
                position: relative;
                display: flex;
                flex-direction: column;
                justify-content: flex-end;
                min-height: 400px;
                border-radius: var(--r-md);
                overflow: hidden;
                isolation: isolate;
                text-decoration: none;
                color: #fff;
                transition: transform 220ms cubic-bezier(0.2, 0.8, 0.2, 1);
            }

            .svc-tile:hover {
                transform: translateY(-3px);
            }

            /* Photo fills the entire card */
            .svc-tile__photo {
                position: absolute;
                inset: 0;
                margin: 0;
            }

            .svc-tile__photo img {
                width: 100%;
                height: 100%;
                object-fit: cover;
                display: block;
                transition: transform 700ms cubic-bezier(0.2, 0.8, 0.2, 1);
            }

            .svc-tile:hover .svc-tile__photo img {
                transform: scale(1.04);
            }

            /* Gradient darkens the bottom so text is always legible */
            .svc-tile::before {
                content: "";
                position: absolute;
                inset: 0;
                z-index: 1;
                pointer-events: none;
                background: linear-gradient(
                    to top,
                    oklch(12% 0.02 240 / 0.92) 0%,
                    oklch(12% 0.02 240 / 0.72) 40%,
                    oklch(12% 0.02 240 / 0.18) 70%,
                    transparent 100%
                );
            }

            /* Subtle additional overlay on hover */
            .svc-tile::after {
                content: "";
                position: absolute;
                inset: 0;
                z-index: 1;
                pointer-events: none;
                background: oklch(12% 0.02 240 / 0.2);
                opacity: 0;
                transition: opacity 280ms ease;
            }

            .svc-tile:hover::after {
                opacity: 1;
            }

            .svc-tile__body {
                position: relative;
                z-index: 2;
                padding: var(--s-6) var(--s-5) var(--s-5);
                display: flex;
                flex-direction: column;
                gap: var(--s-3);
            }

            .svc-tile__title {
                margin: 0;
                font-family: var(--font-display);
                font-size: 1.15rem;
                font-weight: 700;
                letter-spacing: -0.02em;
                color: #fff;
                line-height: 1.2;
            }

            .svc-tile__desc {
                margin: 0;
                font-size: 0.88rem;
                color: oklch(100% 0 0 / 0.82);
                line-height: 1.55;
            }

            .svc-tile__cta {
                display: inline-flex;
                align-items: center;
                gap: 6px;
                font-size: 0.82rem;
                font-weight: 600;
                color: oklch(100% 0 0 / 0.9);
                letter-spacing: 0.01em;
                padding-top: var(--s-2);
            }

            .svc-tile__cta svg {
                flex-shrink: 0;
                transition: transform 200ms ease;
            }

            .svc-tile:hover .svc-tile__cta svg {
                transform: translateX(3px);
            }

            .svc-grid__footer {
                margin-top: clamp(32px, 4vw, 48px);
                text-align: center;
            }

            @media (max-width: 860px) {
                .svc-grid {
                    grid-template-columns: repeat(2, 1fr);
                }
            }

            @media (max-width: 560px) {
                .svc-grid {
                    grid-template-columns: 1fr;
                }
            }

            /* ── Legacy (kept for service/location pages) ────────────── */
            .intro__cards {
                display: grid;
                grid-template-columns: 1fr 1fr;
                gap: var(--s-3);
            }

            /* ── Bento service grid ────────────────────────────────────── */
            .services-bento {
                display: grid;
                grid-template-columns: 1.25fr 1fr 1fr;
                grid-template-rows: 1fr 1fr;
                gap: var(--s-3);
                align-self: stretch;
            }

            .bento-card {
                position: relative;
                display: block;
                border-radius: var(--r-md);
                overflow: hidden;
                min-height: 0;
                isolation: isolate;
                text-decoration: none;
                transition: transform 220ms cubic-bezier(0.2, 0.8, 0.2, 1);
            }

            .bento-card:hover {
                transform: translateY(-2px);
            }

            /* Feature card: tall left column spanning both rows */
            .bento-card--feature {
                grid-row: 1 / 3;
            }

            /* Photo fills the card */
            .bento-card__media {
                position: absolute;
                inset: 0;
                margin: 0;
            }

            .bento-card__media img {
                width: 100%;
                height: 100%;
                object-fit: cover;
                display: block;
                transition: transform 700ms cubic-bezier(0.2, 0.8, 0.2, 1);
            }

            .bento-card:hover .bento-card__media img {
                transform: scale(1.04);
            }

            /* Base gradient: always darkens the bottom for title legibility */
            .bento-card::before {
                content: "";
                position: absolute;
                inset: 0;
                z-index: 1;
                pointer-events: none;
                background: linear-gradient(
                    to top,
                    oklch(12% 0.02 240 / 0.82) 0%,
                    oklch(12% 0.02 240 / 0.45) 35%,
                    transparent 65%
                );
            }

            /* Extra overlay fades in on hover for description readability */
            .bento-card::after {
                content: "";
                position: absolute;
                inset: 0;
                z-index: 1;
                pointer-events: none;
                background: oklch(12% 0.02 240 / 0.28);
                opacity: 0;
                transition: opacity 300ms ease;
            }

            .bento-card:hover::after {
                opacity: 1;
            }

            /* Text body sits at the bottom */
            .bento-card__body {
                position: absolute;
                left: 0;
                right: 0;
                bottom: 0;
                z-index: 2;
                padding: var(--s-4) var(--s-5) var(--s-5);
            }

            .bento-card__title {
                margin: 0 0 6px;
                font-family: var(--font-display);
                font-size: clamp(1rem, 1.3vw, 1.2rem);
                font-weight: 700;
                color: #fff;
                letter-spacing: -0.02em;
                line-height: 1.2;
            }

            /* Description: 1 line visible at rest, fades out at bottom */
            .bento-card__desc-wrap {
                position: relative;
                overflow: hidden;
                max-height: 1.45em;
                transition: max-height 420ms cubic-bezier(0.2, 0.8, 0.2, 1);
            }

            /* Gradient fade over the partially visible description */
            .bento-card__desc-wrap::after {
                content: "";
                position: absolute;
                left: 0;
                right: 0;
                bottom: 0;
                height: 1.45em;
                background: linear-gradient(
                    to bottom,
                    transparent 0%,
                    oklch(12% 0.02 240 / 0.8) 100%
                );
                pointer-events: none;
                transition: opacity 280ms ease;
            }

            .bento-card:hover .bento-card__desc-wrap {
                max-height: 8em;
            }

            .bento-card:hover .bento-card__desc-wrap::after {
                opacity: 0;
            }

            .bento-card__desc {
                margin: 0;
                font-size: 0.86rem;
                color: oklch(100% 0 0 / 0.85);
                line-height: 1.5;
            }

            .bento-card:focus-visible {
                outline: 2px solid var(--accent);
                outline-offset: 2px;
            }

            /* Trust points — checklist styled below the intro copy */
            .trust-points {
                list-style: none;
                margin: var(--s-2) 0 0;
                padding: 0;
                display: grid;
                grid-template-columns: 1fr 1fr;
                gap: var(--s-4) var(--s-5);
            }

            .trust-points li {
                display: grid;
                grid-template-columns: 12px 1fr;
                gap: var(--s-3);
                align-items: start;
            }

            .trust-points__dot {
                width: 5px;
                height: 5px;
                border-radius: 50%;
                background: #163C5C;
                margin-top: 7px;
                justify-self: center;
                flex-shrink: 0;
            }

            .trust-points li strong {
                display: block;
                font-family: var(--font-display);
                font-size: 1rem;
                font-weight: 700;
                letter-spacing: -0.015em;
                color: var(--ink);
                line-height: 1.2;
                margin-bottom: 2px;
            }

            .trust-points li span {
                font-size: 0.88rem;
                color: var(--ink-soft);
                line-height: 1.4;
            }

            @media (max-width: 860px) {
                .trust-points {
                    grid-template-columns: 1fr;
                    gap: var(--s-3);
                }
            }

            .intro__copy {
                display: grid;
                gap: var(--s-5);
                align-self: start;
            }
            .intro__copy p {
                margin: 0;
                max-width: 56ch;
            }

            .intro__credentials {
                margin: 0;
                font-size: 0.82rem;
                color: var(--ink-soft);
                letter-spacing: 0.02em;
            }

            .intro__media {
                position: relative;
                border-radius: var(--r-lg);
                overflow: hidden;
                aspect-ratio: 4 / 3.2;
                box-shadow: var(--shadow-md);
            }

            .intro__media img {
                width: 100%;
                height: 100%;
                object-fit: cover;
                transition: transform 700ms cubic-bezier(0.2, 0.8, 0.2, 1);
            }

            .intro__media:hover img {
                transform: scale(1.04);
            }

            .intro__badge {
                position: absolute;
                left: var(--s-5);
                bottom: var(--s-5);
                display: grid;
                gap: 4px;
                padding: var(--s-4) var(--s-5);
                background: oklch(100% 0 0 / 0.92);
                backdrop-filter: blur(20px);
                border-radius: var(--r-md);
                color: var(--ink);
            }

            .intro__badge strong {
                font-family: var(--font-display);
                font-size: 1.6rem;
                font-weight: 700;
                letter-spacing: -0.02em;
                line-height: 1;
            }

            .intro__badge span {
                font-size: 0.78rem;
                color: var(--ink-soft);
            }

            /* ----------------------------------------------------------------
     Calculator panel (navy panel breaking out of cream stage)
  -----------------------------------------------------------------*/
            .calc {
                background: var(--primary-deep);
                color: var(--surface);
                border-radius: var(--r-lg);
                padding: clamp(24px, 3vw, 44px);
                position: relative;
                overflow: hidden;
                isolation: isolate;
            }

            .calc::before {
                content: "";
                position: absolute;
                inset: 0;
                background:
                    radial-gradient(
                        ellipse 80% 60% at 90% 10%,
                        oklch(60% 0.15 240 / 0.3),
                        transparent 60%
                    ),
                    radial-gradient(
                        ellipse 70% 50% at 10% 100%,
                        oklch(60% 0.12 245 / 0.18),
                        transparent 65%
                    );
                z-index: -1;
            }

            .calc__head {
                display: grid;
                gap: var(--s-2);
                margin-bottom: var(--s-5);
                max-width: 50ch;
            }

            .calc .eyebrow {
                color: var(--accent);
            }
            .calc .display {
                color: var(--surface);
            }
            .calc__head p {
                margin: 0;
                font-size: 0.92rem;
                color: oklch(100% 0 0 / 0.65);
                max-width: 48ch;
            }

            .calc__grid {
                display: grid;
                grid-template-columns: repeat(4, 1fr);
                gap: var(--s-3);
                align-items: end;
            }

            .calc__field {
                display: grid;
                gap: 8px;
            }

            .calc__field label {
                font-size: 0.74rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.14em;
                color: oklch(100% 0 0 / 0.55);
            }

            .calc__field select {
                height: 46px;
                padding: 0 14px;
                border-radius: var(--r-sm);
                background: oklch(100% 0 0 / 0.06);
                border: 1px solid oklch(100% 0 0 / 0.15);
                color: var(--surface);
                font-size: 0.9rem;
                font-weight: 500;
                appearance: none;
                background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='%23ffffff' opacity='0.6'><path d='M6 8L0 0h12z'/></svg>");
                background-repeat: no-repeat;
                background-position: right 14px center;
                background-size: 10px;
            }

            .calc__field select:focus {
                outline: none;
                border-color: var(--accent);
                background-color: oklch(100% 0 0 / 0.1);
            }

            .calc__field option {
                color: var(--ink);
                background: var(--surface);
            }

            .calc__btn {
                height: 46px;
                border-radius: var(--r-sm);
                background: var(--accent);
                color: var(--ink);
                font-weight: 700;
                font-size: 0.9rem;
                letter-spacing: -0.005em;
                transition:
                    background 180ms ease,
                    transform 200ms ease;
            }

            .calc__btn:hover {
                background: var(--accent-deep);
                color: var(--surface);
            }

            .calc__result {
                margin-top: var(--s-4);
                display: grid;
                grid-template-columns: 1fr auto auto;
                gap: var(--s-4);
                align-items: center;
                padding: var(--s-4) var(--s-5);
                border-radius: var(--r-md);
                border: 1px solid oklch(100% 0 0 / 0.1);
                background: oklch(100% 0 0 / 0.04);
            }

            .calc__result-label {
                display: grid;
                gap: 4px;
            }

            .calc__result-label strong {
                font-size: 0.74rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.14em;
                color: var(--accent);
            }

            .calc__result-label span {
                font-size: 0.92rem;
                color: oklch(100% 0 0 / 0.7);
            }

            .calc__price {
                font-family: var(--font-display);
                font-size: clamp(1.4rem, 2.2vw, 1.8rem);
                font-weight: 700;
                letter-spacing: -0.02em;
            }

            .calc__cta {
                display: inline-flex;
                align-items: center;
                gap: 8px;
                padding: 12px 18px;
                border-radius: var(--r-pill);
                background: oklch(100% 0 0 / 0.1);
                border: 1px solid oklch(100% 0 0 / 0.2);
                color: var(--surface);
                font-size: 0.9rem;
                font-weight: 600;
                transition: background 180ms ease;
            }

            .calc__cta:hover {
                background: oklch(100% 0 0 / 0.2);
            }

            /* ----------------------------------------------------------------
     Services
  -----------------------------------------------------------------*/
            .services {
                display: grid;
                grid-template-columns: 1.4fr 1fr;
                gap: var(--s-4);
            }

            .service-feature {
                grid-column: 1 / 2;
                grid-row: 1 / 3;
                display: flex;
                flex-direction: column;
                background: var(--surface);
                border: 1px solid var(--ink-line);
                border-radius: var(--r-lg);
                overflow: hidden;
            }

            .service-feature__media {
                position: relative;
                aspect-ratio: 16 / 11;
                overflow: hidden;
            }

            .service-feature__media img {
                width: 100%;
                height: 100%;
                object-fit: cover;
                transition: transform 800ms cubic-bezier(0.2, 0.8, 0.2, 1);
            }

            .service-feature:hover .service-feature__media img {
                transform: scale(1.03);
            }

            .service-feature__chip {
                position: absolute;
                top: var(--s-4);
                left: var(--s-4);
                display: inline-flex;
                align-items: center;
                gap: 8px;
                padding: 7px 13px 7px 9px;
                border-radius: var(--r-pill);
                background: oklch(100% 0 0 / 0.92);
                backdrop-filter: blur(14px);
                color: var(--ink);
                font-size: 0.78rem;
                font-weight: 600;
                letter-spacing: 0.02em;
            }

            .service-feature__chip-dot {
                width: 8px;
                height: 8px;
                border-radius: 50%;
                background: var(--success);
            }

            .service-feature__body {
                padding: var(--s-6) clamp(20px, 2.4vw, 32px)
                    clamp(20px, 2.4vw, 32px);
                display: grid;
                gap: var(--s-4);
            }

            .service-feature__body h3 {
                margin: 0;
                font-family: var(--font-display);
                font-size: clamp(1.4rem, 2.2vw, 1.85rem);
                font-weight: 700;
                letter-spacing: -0.02em;
                color: var(--ink);
                line-height: 1.1;
            }

            .service-feature__body p {
                margin: 0;
                max-width: 50ch;
            }

            .service-feature__chips {
                display: flex;
                flex-wrap: wrap;
                gap: 6px;
            }

            .chip {
                padding: 6px 12px;
                border-radius: var(--r-pill);
                background: var(--surface-warm);
                border: 1px solid var(--ink-line);
                color: var(--ink);
                font-size: 0.82rem;
                font-weight: 500;
            }

            .service-feature__actions {
                display: flex;
                gap: var(--s-2);
                flex-wrap: wrap;
                margin-top: var(--s-2);
            }

            .service-card {
                position: relative;
                display: block;
                aspect-ratio: 4 / 3;
                background: var(--ink);
                border: 1px solid var(--ink-line);
                border-radius: var(--r-md);
                overflow: hidden;
                isolation: isolate;
                transition:
                    border-color 200ms ease,
                    transform 220ms cubic-bezier(0.2, 0.8, 0.2, 1);
            }

            .service-card:hover {
                border-color: var(--ink-line-strong);
                transform: translateY(-2px);
            }

            .service-card__media {
                position: absolute;
                inset: 0;
                aspect-ratio: auto;
                border-radius: 0;
                margin: 0;
                z-index: 0;
            }

            .service-card__media img {
                width: 100%;
                height: 100%;
                object-fit: cover;
                transition: transform 800ms cubic-bezier(.2,.8,.2,1);
            }

            .service-card::after {
                content: "";
                position: absolute;
                inset: 0;
                z-index: 1;
                pointer-events: none;
                background: linear-gradient(
                    to top,
                    oklch(12% 0.02 270 / 0.88) 0%,
                    oklch(12% 0.02 270 / 0.55) 30%,
                    oklch(12% 0.02 270 / 0.15) 55%,
                    oklch(12% 0.02 270 / 0) 75%
                );
            }

            .service-card:hover .service-card__media img {
                transform: scale(1.05);
            }

            /* Feature variant — spans the full grid width inside intro__cards
               and uses a slightly wider aspect ratio so it reads as the headline. */
            .service-card--feature {
                grid-column: 1 / -1;
                aspect-ratio: 16 / 10;
            }

            .service-card__chip {
                position: absolute;
                top: var(--s-4);
                left: var(--s-4);
                z-index: 2;
                display: inline-flex;
                align-items: center;
                gap: 8px;
                padding: 7px 13px 7px 9px;
                border-radius: var(--r-pill);
                background: oklch(100% 0 0 / 0.92);
                backdrop-filter: blur(14px);
                -webkit-backdrop-filter: blur(14px);
                color: var(--ink);
                font-size: 0.78rem;
                font-weight: 600;
                letter-spacing: 0.02em;
            }

            .service-card__chip-dot {
                width: 8px;
                height: 8px;
                border-radius: 50%;
                background: var(--success);
            }

            .service-card__body {
                position: absolute;
                left: 0;
                right: 0;
                bottom: 0;
                z-index: 2;
                padding: var(--s-5) var(--s-5) var(--s-5);
                display: grid;
                gap: 6px;
                color: var(--surface);
            }

            .service-card__top {
                display: flex;
                align-items: baseline;
                justify-content: space-between;
                gap: var(--s-3);
            }

            .service-card__top h3 {
                margin: 0;
                font-family: var(--font-display);
                font-size: clamp(1.1rem, 1.6vw, 1.3rem);
                font-weight: 700;
                color: var(--surface);
                letter-spacing: -0.02em;
                line-height: 1.15;
            }

            .service-card__price {
                font-size: 0.82rem;
                font-weight: 600;
                color: var(--accent);
                white-space: nowrap;
                letter-spacing: 0.005em;
            }

            .service-card__body p {
                margin: 0;
                font-size: 0.88rem;
                color: oklch(100% 0 0 / 0.82);
                line-height: 1.45;
                max-width: 38ch;
            }

            /* ----------------------------------------------------------------
     Trust / proof grid
  -----------------------------------------------------------------*/
            /* Trust grid — replaces the old proof image+list combo.
               2x2 on desktop, single column on mobile. Each card has a
               number eyebrow, line-icon, title, description. */
            .trust-grid {
                display: grid;
                grid-template-columns: repeat(2, 1fr);
                gap: var(--s-3);
            }

            .trust-card {
                position: relative;
                display: grid;
                grid-template-columns: auto 1fr;
                grid-template-rows: auto auto auto;
                column-gap: var(--s-5);
                row-gap: var(--s-3);
                align-items: start;
                padding: clamp(24px, 2.6vw, 36px);
                background: var(--surface);
                border: 1px solid var(--ink-line);
                border-radius: var(--r-lg);
                transition:
                    transform 240ms cubic-bezier(.2,.8,.2,1),
                    border-color 220ms ease,
                    box-shadow 220ms ease;
            }

            .trust-card:hover {
                transform: translateY(-3px);
                border-color: var(--ink-line-strong);
                box-shadow: var(--shadow-md);
            }

            .trust-card__num {
                grid-column: 2;
                grid-row: 1;
                font-family: var(--font-body);
                font-size: 0.74rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.16em;
                color: var(--accent-deep);
                align-self: center;
            }

            .trust-card__icon {
                grid-column: 1;
                grid-row: 1 / 4;
                width: 48px;
                height: 48px;
                border-radius: 14px;
                background: var(--surface-warm);
                border: 1px solid var(--ink-line);
                color: var(--ink);
                display: inline-flex;
                align-items: center;
                justify-content: center;
                flex-shrink: 0;
            }

            .trust-card__icon svg {
                width: 24px;
                height: 24px;
            }

            .trust-card h3 {
                grid-column: 2;
                grid-row: 2;
                margin: 0;
                font-family: var(--font-display);
                font-size: clamp(1.15rem, 1.6vw, 1.35rem);
                font-weight: 700;
                color: var(--ink);
                letter-spacing: -0.02em;
                line-height: 1.15;
            }

            .trust-card p {
                grid-column: 2;
                grid-row: 3;
                margin: 0;
                font-size: 0.95rem;
                color: var(--ink-soft);
                line-height: 1.5;
                max-width: 38ch;
            }

            @media (max-width: 860px) {
                .trust-grid { grid-template-columns: 1fr; }
            }

            /* ----------------------------------------------------------------
     Gallery (horizontal scroll)
  -----------------------------------------------------------------*/
            /* Photo gallery — masonry-style grid with lightbox */
            .photo-gallery {
                display: grid;
                grid-template-columns: repeat(4, 1fr);
                gap: var(--s-3);
            }

            .photo-tile {
                position: relative;
                aspect-ratio: 4 / 3;
                border: 0;
                padding: 0;
                margin: 0;
                background: var(--ink);
                border-radius: var(--r-md);
                overflow: hidden;
                cursor: pointer;
                isolation: isolate;
                transition: transform 320ms cubic-bezier(.2,.8,.2,1);
            }

            .photo-tile:hover {
                transform: translateY(-3px);
            }

            .photo-tile img {
                width: 100%;
                height: 100%;
                object-fit: cover;
                transition: transform 800ms cubic-bezier(.2,.8,.2,1);
                display: block;
            }

            .photo-tile:hover img {
                transform: scale(1.05);
            }

            @media (max-width: 1100px) {
                .photo-gallery {
                    grid-template-columns: repeat(3, 1fr);
                }
            }

            @media (max-width: 720px) {
                .photo-gallery {
                    grid-template-columns: repeat(2, 1fr);
                    gap: var(--s-2);
                }
            }

            /* ----------------------------------------------------------------
               Lightbox
            ----------------------------------------------------------------*/
            .photo-lightbox {
                position: fixed;
                inset: 0;
                z-index: 220;
                display: flex;
                align-items: center;
                justify-content: center;
                padding: clamp(16px, 3vw, 40px);
                opacity: 0;
                visibility: hidden;
                pointer-events: none;
                transition:
                    opacity 240ms cubic-bezier(.2,.8,.2,1),
                    visibility 0s linear 240ms;
            }

            .photo-lightbox.is-open {
                opacity: 1;
                visibility: visible;
                pointer-events: auto;
                transition:
                    opacity 240ms cubic-bezier(.2,.8,.2,1),
                    visibility 0s linear 0s;
            }

            .photo-lightbox__backdrop {
                position: absolute;
                inset: 0;
                width: 100%;
                height: 100%;
                background: oklch(8% 0.01 270 / 0.92);
                backdrop-filter: blur(8px);
                -webkit-backdrop-filter: blur(8px);
                border: 0;
                cursor: pointer;
            }

            .photo-lightbox__frame {
                position: relative;
                z-index: 1;
                max-width: min(1200px, 100%);
                max-height: 100%;
                margin: 0;
                display: flex;
                flex-direction: column;
                align-items: center;
                gap: var(--s-3);
                transform: scale(0.96);
                opacity: 0;
                transition:
                    transform 320ms cubic-bezier(.2,.8,.2,1),
                    opacity 280ms ease;
            }

            .photo-lightbox.is-open .photo-lightbox__frame {
                transform: scale(1);
                opacity: 1;
            }

            .photo-lightbox__frame img {
                max-width: 100%;
                max-height: calc(100vh - 140px);
                object-fit: contain;
                border-radius: var(--r-md);
                box-shadow: 0 20px 60px oklch(0% 0 0 / 0.5);
                background: var(--ink);
            }

            .photo-lightbox__caption {
                display: flex;
                align-items: center;
                gap: var(--s-3);
                color: var(--surface);
                font-size: 0.92rem;
                flex-wrap: wrap;
                justify-content: center;
            }

            .photo-lightbox__caption #lb-town {
                font-size: 0.74rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.16em;
                color: var(--accent);
            }

            .photo-lightbox__caption #lb-title {
                font-family: var(--font-display);
                font-weight: 600;
            }

            .photo-lightbox__counter {
                color: oklch(100% 0 0 / 0.5);
                font-size: 0.85rem;
                font-feature-settings: "tnum";
            }

            .photo-lightbox__close,
            .photo-lightbox__nav {
                position: absolute;
                z-index: 2;
                width: 44px;
                height: 44px;
                border-radius: 50%;
                background: oklch(100% 0 0 / 0.12);
                border: 1px solid oklch(100% 0 0 / 0.18);
                color: var(--surface);
                display: inline-flex;
                align-items: center;
                justify-content: center;
                cursor: pointer;
                backdrop-filter: blur(10px);
                transition: background 200ms ease, transform 200ms ease;
            }

            .photo-lightbox__close { top: 20px; right: 20px; }
            .photo-lightbox__close:hover { background: oklch(100% 0 0 / 0.22); transform: rotate(90deg); }

            .photo-lightbox__nav { top: 50%; transform: translateY(-50%); }
            .photo-lightbox__nav--prev { left: 20px; }
            .photo-lightbox__nav--next { right: 20px; }
            .photo-lightbox__nav:hover { background: oklch(100% 0 0 / 0.22); }

            @media (max-width: 720px) {
                .photo-lightbox__nav--prev { left: 12px; }
                .photo-lightbox__nav--next { right: 12px; }
                .photo-lightbox__close { top: 14px; right: 14px; }
                .photo-lightbox__frame img { max-height: calc(100vh - 120px); }
            }

            html.lightbox-open,
            html.lightbox-open body {
                overflow: hidden;
            }

            /* ----------------------------------------------------------------
     Areas
  -----------------------------------------------------------------*/
            /* Areas — interactive map of Worcestershire with town pins.
               2-column on desktop (map left, details right), stacks on mobile. */
            .areas-map {
                display: grid;
                grid-template-columns: 1.3fr 1fr;
                gap: clamp(20px, 3vw, 48px);
                align-items: stretch;
                background: var(--surface);
                border: 1px solid var(--ink-line);
                border-radius: var(--r-lg);
                overflow: hidden;
            }

            .areas-map__canvas {
                position: relative;
                background: var(--surface-warm);
                aspect-ratio: 5 / 4;
                min-height: 360px;
                overflow: hidden;
            }

            .areas-map__iframe {
                position: absolute;
                inset: 0;
                width: 100%;
                height: 100%;
                border: 0;
                display: block;
                /* Subtly desaturate the Google map so it doesn't fight the brand */
                filter: saturate(0.85) contrast(1.02);
            }

            .areas-map__svg {
                width: 100%;
                height: 100%;
                display: block;
            }

            /* Right-side list */
            .areas-map__list {
                padding: clamp(20px, 2.6vw, 32px);
                display: flex;
                flex-direction: column;
                gap: var(--s-2);
            }

            .areas-map__heading {
                margin: 0 0 var(--s-2);
                font-family: var(--font-display);
                font-size: clamp(1.25rem, 1.8vw, 1.55rem);
                font-weight: 700;
                letter-spacing: -0.025em;
                color: var(--ink);
                line-height: 1.1;
            }

            .areas-list {
                list-style: none;
                margin: 0;
                padding: 0;
                display: grid;
                gap: 0;
                border-top: 1px solid var(--ink-line);
            }

            .areas-list li {
                border-bottom: 1px solid var(--ink-line);
            }

            .areas-list a {
                display: grid;
                grid-template-columns: 1fr auto auto;
                gap: var(--s-3);
                align-items: center;
                padding: 12px 4px;
                color: var(--ink);
                transition: padding 200ms ease, color 200ms ease;
            }

            .areas-list a:hover {
                padding-left: 10px;
                color: var(--accent-deep);
            }

            .areas-list__name {
                font-family: var(--font-display);
                font-size: 1rem;
                font-weight: 700;
                letter-spacing: -0.015em;
            }

            .areas-list__codes {
                font-size: 0.82rem;
                color: var(--ink-faint);
                font-feature-settings: "tnum";
            }

            .areas-list__arrow {
                width: 14px;
                height: 14px;
                color: var(--ink-faint);
                transition: transform 200ms ease, color 200ms ease;
            }

            .areas-list a:hover .areas-list__arrow {
                color: var(--accent-deep);
                transform: translate(2px, -2px);
            }

            .areas-list__cta {
                display: inline-flex;
                align-items: center;
                gap: 8px;
                margin-top: var(--s-2);
                padding: 12px 4px;
                font-size: 0.85rem;
                font-weight: 500;
                color: var(--ink-soft);
                transition: color 200ms ease;
            }

            .areas-list__cta:hover {
                color: var(--ink);
            }

            .areas-map__outline {
                opacity: 0.85;
            }

            /* Pins */
            .areas-map__pin {
                cursor: pointer;
                outline: none;
                transition: transform 220ms cubic-bezier(.2,.8,.2,1);
                transform-box: fill-box;
                transform-origin: center;
            }

            .areas-map__pin .pin-glow {
                fill: var(--accent);
                opacity: 0;
                transition: opacity 220ms ease, r 240ms cubic-bezier(.2,.8,.2,1);
            }

            .areas-map__pin .pin-ring {
                fill: var(--surface);
                stroke: var(--ink);
                stroke-width: 1;
                transition: stroke 200ms ease, fill 200ms ease;
            }

            .areas-map__pin .pin-dot {
                fill: var(--ink);
                transition: fill 200ms ease, r 200ms cubic-bezier(.2,.8,.2,1);
            }

            .areas-map__pin .pin-label {
                font-family: var(--font-display);
                font-size: 3.4px;
                font-weight: 600;
                fill: var(--ink-soft);
                letter-spacing: -0.02em;
                pointer-events: none;
                opacity: 0.75;
                transition: opacity 200ms ease, fill 200ms ease;
            }

            .areas-map__pin:hover .pin-glow,
            .areas-map__pin.is-active .pin-glow,
            .areas-map__pin:focus-visible .pin-glow {
                opacity: 0.4;
            }

            .areas-map__pin:hover .pin-ring,
            .areas-map__pin.is-active .pin-ring,
            .areas-map__pin:focus-visible .pin-ring {
                fill: var(--ink);
                stroke: var(--ink);
            }

            .areas-map__pin:hover .pin-dot,
            .areas-map__pin.is-active .pin-dot,
            .areas-map__pin:focus-visible .pin-dot {
                fill: var(--accent);
            }

            .areas-map__pin:hover .pin-label,
            .areas-map__pin.is-active .pin-label,
            .areas-map__pin:focus-visible .pin-label {
                opacity: 1;
                fill: var(--ink);
            }

            /* Details panel */
            .areas-map__details {
                padding: clamp(24px, 3vw, 44px);
                display: flex;
                flex-direction: column;
                gap: var(--s-3);
                align-self: stretch;
                justify-content: center;
            }

            .areas-map__town {
                margin: 0;
                font-family: var(--font-display);
                font-size: clamp(2rem, 3.5vw, 2.8rem);
                font-weight: 800;
                letter-spacing: -0.035em;
                color: var(--ink);
                line-height: 1;
            }

            .areas-map__meta {
                display: flex;
                align-items: center;
                gap: 8px;
                flex-wrap: wrap;
                font-size: 0.95rem;
                color: var(--ink-soft);
                margin-top: -4px;
            }

            .areas-map__codes {
                font-family: var(--font-display);
                font-weight: 600;
                color: var(--ink);
                padding: 4px 10px;
                background: var(--surface-warm);
                border: 1px solid var(--ink-line);
                border-radius: var(--r-pill);
                font-size: 0.85rem;
            }

            .areas-map__divider { color: var(--ink-faint); }

            .areas-map__hint {
                margin: 0;
                font-size: 0.85rem;
                color: var(--ink-faint);
                max-width: 36ch;
            }

            #area-cta {
                align-self: flex-start;
                margin-top: var(--s-2);
            }

            .areas-map__nearby {
                display: grid;
                grid-template-columns: auto 1fr auto;
                gap: var(--s-4);
                align-items: center;
                padding: var(--s-4);
                background: var(--surface-warm);
                border: 1px solid var(--ink-line);
                border-radius: var(--r-md);
                margin-top: var(--s-3);
                color: var(--ink);
                transition:
                    background 200ms ease,
                    border-color 200ms ease;
            }

            .areas-map__nearby:hover {
                background: var(--ink);
                color: var(--surface);
                border-color: var(--ink);
            }

            .areas-map__nearby strong {
                display: block;
                font-family: var(--font-display);
                font-size: 1rem;
                font-weight: 700;
                letter-spacing: -0.015em;
            }

            .areas-map__nearby span {
                font-size: 0.85rem;
                opacity: 0.75;
            }

            .areas-map__pin-icon {
                width: 36px;
                height: 36px;
                border-radius: 50%;
                background: var(--surface);
                border: 1px solid var(--ink-line);
                display: inline-flex;
                align-items: center;
                justify-content: center;
                color: var(--accent-deep);
            }

            .areas-map__pin-icon svg { width: 18px; height: 18px; }

            .areas-map__nearby:hover .areas-map__pin-icon {
                background: var(--primary-deep);
                border-color: oklch(28% 0.06 245);
                color: var(--accent);
            }

            .areas-map__nearby-arrow {
                opacity: 0.5;
                transition: opacity 200ms ease, transform 200ms ease;
            }
            .areas-map__nearby:hover .areas-map__nearby-arrow {
                opacity: 1;
                transform: translate(2px, -2px);
            }

            @media (max-width: 860px) {
                .areas-map { grid-template-columns: 1fr; }
                .areas-map__canvas { aspect-ratio: 1 / 0.85; }
            }

            /* Areas — fluid grid of tiles, project count as the hero of each.
               4-up at desktop, 3-up at tablet, 2-up at phone. */
            .areas-grid {
                display: grid;
                grid-template-columns: repeat(4, 1fr);
                gap: var(--s-3);
            }

            .area-tile {
                position: relative;
                display: grid;
                grid-template-rows: auto auto 1fr auto;
                gap: 6px;
                padding: var(--s-5);
                aspect-ratio: 1 / 1.15;
                background: var(--surface);
                border: 1px solid var(--ink-line);
                border-radius: var(--r-md);
                overflow: hidden;
                transition:
                    transform 240ms cubic-bezier(.2,.8,.2,1),
                    border-color 200ms ease,
                    background 200ms ease;
            }

            .area-tile:hover {
                transform: translateY(-3px);
                border-color: var(--ink-line-strong);
            }

            .area-tile__count {
                font-family: var(--font-display);
                font-size: clamp(2.4rem, 3.6vw, 3.4rem);
                font-weight: 800;
                letter-spacing: -0.04em;
                line-height: 0.95;
                color: var(--ink);
                display: inline-flex;
                align-items: baseline;
                gap: 1px;
            }

            .area-tile__unit {
                font-size: 0.55em;
                font-weight: 600;
                color: var(--accent-deep);
            }

            .area-tile__label {
                font-size: 0.72rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.14em;
                color: var(--ink-faint);
            }

            .area-tile__name {
                margin: 0;
                font-family: var(--font-display);
                font-size: 1.15rem;
                font-weight: 700;
                letter-spacing: -0.015em;
                color: var(--ink);
                align-self: end;
                line-height: 1.15;
            }

            .area-tile__codes {
                font-size: 0.78rem;
                font-weight: 500;
                color: var(--ink-soft);
                font-feature-settings: "tnum";
                padding: 4px 9px;
                border: 1px solid var(--ink-line);
                border-radius: var(--r-pill);
                width: fit-content;
                background: var(--surface-warm);
            }

            .area-tile__arrow {
                position: absolute;
                top: var(--s-4);
                right: var(--s-4);
                width: 28px;
                height: 28px;
                border-radius: 50%;
                background: var(--surface-warm);
                color: var(--ink);
                display: inline-flex;
                align-items: center;
                justify-content: center;
                opacity: 0;
                transform: translate(-4px, 4px);
                transition:
                    opacity 200ms ease,
                    transform 240ms cubic-bezier(.2,.8,.2,1);
            }

            .area-tile__arrow svg {
                width: 12px;
                height: 12px;
            }

            .area-tile:hover .area-tile__arrow {
                opacity: 1;
                transform: translate(0, 0);
            }

            /* CTA tile — last "Nearby villages" card, distinct treatment */
            .area-tile--cta {
                background: var(--ink);
                color: var(--surface);
                border-color: var(--ink);
            }
            .area-tile--cta .area-tile__name { color: var(--surface); }
            .area-tile--cta .area-tile__codes {
                color: oklch(100% 0 0 / 0.7);
                background: oklch(100% 0 0 / 0.08);
                border-color: oklch(100% 0 0 / 0.18);
            }
            .area-tile--cta .area-tile__pin {
                width: 36px;
                height: 36px;
                border-radius: 50%;
                background: oklch(100% 0 0 / 0.08);
                border: 1px solid oklch(100% 0 0 / 0.18);
                color: var(--accent);
                display: inline-flex;
                align-items: center;
                justify-content: center;
            }
            .area-tile--cta .area-tile__pin svg { width: 18px; height: 18px; }
            .area-tile--cta .area-tile__arrow {
                background: var(--accent);
                color: var(--ink);
            }
            .area-tile--cta:hover {
                background: var(--primary-deep);
                border-color: var(--primary-deep);
            }

            @media (max-width: 1100px) {
                .areas-grid { grid-template-columns: repeat(3, 1fr); }
            }
            @media (max-width: 720px) {
                .areas-grid { grid-template-columns: repeat(2, 1fr); }
            }

            /* ----------------------------------------------------------------
     Reviews
  -----------------------------------------------------------------*/
            /* Reviews — Google aggregate panel + asymmetric quote-led grid */
            .reviews-aggregate {
                display: grid;
                grid-template-columns: auto auto 1fr auto;
                align-items: center;
                gap: clamp(16px, 2.4vw, 32px);
                padding: clamp(20px, 2.4vw, 32px);
                background: var(--ink);
                color: var(--surface);
                border-radius: var(--r-lg);
                margin-bottom: var(--s-5);
                transition: transform 220ms cubic-bezier(.2,.8,.2,1);
            }

            .reviews-aggregate:hover { transform: translateY(-2px); }

            .reviews-aggregate__google {
                width: 48px;
                height: 48px;
                border-radius: 50%;
                background: var(--surface);
                display: inline-flex;
                align-items: center;
                justify-content: center;
                flex-shrink: 0;
            }
            .reviews-aggregate__google svg { width: 26px; height: 26px; }

            .reviews-aggregate__rating {
                display: inline-flex;
                align-items: baseline;
                gap: 12px;
                color: var(--surface);
            }

            .reviews-aggregate__num {
                font-family: var(--font-display);
                font-size: clamp(2rem, 3.4vw, 2.8rem);
                font-weight: 800;
                letter-spacing: -0.04em;
                line-height: 1;
            }

            .reviews-aggregate__stars {
                display: inline-flex;
                gap: 2px;
                color: var(--accent);
            }
            .reviews-aggregate__stars svg { width: 18px; height: 18px; }

            .reviews-aggregate__meta { display: grid; gap: 2px; }
            .reviews-aggregate__meta strong {
                font-family: var(--font-display);
                font-size: 1.05rem;
                font-weight: 700;
                color: var(--surface);
            }
            .reviews-aggregate__meta span {
                font-size: 0.85rem;
                color: oklch(100% 0 0 / 0.65);
            }

            .reviews-aggregate__cta {
                display: inline-flex;
                align-items: center;
                gap: 8px;
                padding: 10px 16px;
                border-radius: var(--r-pill);
                background: oklch(100% 0 0 / 0.1);
                border: 1px solid oklch(100% 0 0 / 0.2);
                color: var(--surface);
                font-size: 0.88rem;
                font-weight: 600;
                white-space: nowrap;
                transition: background 200ms ease;
            }
            .reviews-aggregate:hover .reviews-aggregate__cta {
                background: var(--accent);
                color: var(--ink);
                border-color: var(--accent);
            }

            /* Asymmetric quote grid: 1 feature + 2 supporting */
            .reviews-grid {
                display: grid;
                grid-template-columns: 1.4fr 1fr;
                grid-template-rows: 1fr 1fr;
                gap: var(--s-3);
            }

            .review-quote {
                position: relative;
                padding: clamp(20px, 2.4vw, 32px);
                background: var(--surface);
                border: 1px solid var(--ink-line);
                border-radius: var(--r-md);
                display: flex;
                flex-direction: column;
                gap: var(--s-4);
            }

            .review-quote--feature {
                grid-row: 1 / 3;
                background: var(--surface-deep);
                border: 0;
                padding: clamp(28px, 3.6vw, 48px);
            }

            .review-quote__mark {
                font-family: var(--font-display);
                font-size: clamp(4rem, 8vw, 7rem);
                font-weight: 800;
                line-height: 0.7;
                color: var(--primary);
                opacity: 0.25;
                position: absolute;
                top: var(--s-4);
                right: var(--s-5);
            }

            .review-quote__text {
                margin: 0;
                font-size: clamp(0.95rem, 1.1vw, 1.05rem);
                color: var(--ink);
                line-height: 1.55;
                position: relative;
                z-index: 1;
            }

            .review-quote--feature .review-quote__text {
                font-family: var(--font-display);
                font-size: clamp(1.2rem, 1.7vw, 1.5rem);
                font-weight: 500;
                letter-spacing: -0.015em;
                line-height: 1.4;
                color: var(--ink);
                max-width: 32ch;
            }

            .review-quote__cite {
                display: grid;
                grid-template-columns: auto 1fr auto;
                gap: var(--s-3);
                align-items: center;
                margin-top: auto;
                padding-top: var(--s-4);
                border-top: 1px solid var(--ink-line);
            }

            .review-quote__avatar {
                width: 38px;
                height: 38px;
                border-radius: 50%;
                background: var(--primary);
                color: var(--surface);
                display: inline-flex;
                align-items: center;
                justify-content: center;
                font-family: var(--font-display);
                font-size: 0.78rem;
                font-weight: 700;
                letter-spacing: 0.02em;
            }

            .review-quote__cite strong {
                display: block;
                font-family: var(--font-display);
                font-size: 0.95rem;
                font-weight: 700;
                color: var(--ink);
                letter-spacing: -0.01em;
            }

            .review-quote__cite span {
                font-size: 0.82rem;
                color: var(--ink-soft);
            }

            .review-quote__stars {
                display: inline-flex;
                gap: 2px;
                color: var(--accent);
            }
            .review-quote__stars svg { width: 14px; height: 14px; }

            /* ----------------------------------------------------------------
     Guides — editorial numbered list, no cards
  -----------------------------------------------------------------*/
            .guide-list {
                list-style: none;
                margin: 0;
                padding: 0;
                border-top: 1px solid var(--ink-line);
            }

            .guide-list li {
                border-bottom: 1px solid var(--ink-line);
            }

            .guide-row {
                display: grid;
                grid-template-columns: 80px 160px 1fr auto auto;
                gap: clamp(16px, 2.4vw, 32px);
                align-items: center;
                padding: clamp(20px, 2.6vw, 32px) 4px;
                color: var(--ink);
                transition: padding 220ms cubic-bezier(.2,.8,.2,1);
            }

            .guide-row:hover {
                padding-left: 14px;
            }

            .guide-row__num {
                font-family: var(--font-display);
                font-size: clamp(2rem, 3.2vw, 2.8rem);
                font-weight: 800;
                letter-spacing: -0.04em;
                color: var(--ink-faint);
                line-height: 1;
                transition: color 220ms ease;
            }

            .guide-row:hover .guide-row__num {
                color: var(--accent-deep);
            }

            .guide-row__topic {
                font-size: 0.74rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.16em;
                color: var(--accent-deep);
            }

            .guide-row__title {
                margin: 0;
                font-family: var(--font-display);
                font-size: clamp(1.05rem, 1.5vw, 1.3rem);
                font-weight: 600;
                letter-spacing: -0.02em;
                color: var(--ink);
                line-height: 1.25;
                max-width: 50ch;
            }

            .guide-row__meta {
                font-size: 0.85rem;
                color: var(--ink-faint);
                font-feature-settings: "tnum";
                white-space: nowrap;
            }

            .guide-row__arrow {
                width: 38px;
                height: 38px;
                border-radius: 50%;
                background: var(--surface);
                border: 1px solid var(--ink-line);
                color: var(--ink);
                display: inline-flex;
                align-items: center;
                justify-content: center;
                transition:
                    background 220ms ease,
                    color 220ms ease,
                    transform 220ms cubic-bezier(.2,.8,.2,1);
            }

            .guide-row:hover .guide-row__arrow {
                background: var(--ink);
                color: var(--surface);
                transform: translate(2px, -2px);
            }

            /* ----------------------------------------------------------------
     Contact (navy panel)
  -----------------------------------------------------------------*/
            .contact {
                background: var(--ink);
                color: var(--surface);
                border-radius: var(--r-lg);
                overflow: hidden;
                display: grid;
                grid-template-columns: 1fr 1fr;
            }

            .contact__left {
                padding: clamp(24px, 3vw, 44px);
                display: grid;
                gap: var(--s-5);
                align-content: space-between;
                background:
                    radial-gradient(
                        ellipse 60% 50% at 100% 100%,
                        oklch(40% 0.1 245 / 0.6),
                        transparent 55%
                    ),
                    var(--ink);
            }

            /* Tighter heading inside the contact left panel */
            .contact__left .display--lg {
                font-size: clamp(1.5rem, 2.4vw, 2rem);
                letter-spacing: -0.025em;
            }
            .contact__left p {
                font-size: 0.92rem;
            }

            .contact__left .display {
                color: var(--surface);
            }
            .contact__left .eyebrow {
                color: var(--accent);
            }
            .contact__left p {
                color: oklch(100% 0 0 / 0.7);
                margin: 0;
                max-width: 42ch;
            }

            .contact__list {
                display: grid;
                gap: var(--s-4);
            }

            .contact__row {
                display: grid;
                grid-template-columns: 38px 1fr;
                gap: var(--s-3);
                align-items: start;
            }

            .contact__icon {
                width: 38px;
                height: 38px;
                border-radius: var(--r-sm);
                background: oklch(100% 0 0 / 0.07);
                border: 1px solid oklch(100% 0 0 / 0.12);
                display: inline-flex;
                align-items: center;
                justify-content: center;
                color: var(--accent);
            }

            .contact__icon svg {
                width: 16px;
                height: 16px;
            }

            .contact__row-body {
                display: grid;
                gap: 2px;
            }

            .contact__row-body strong {
                font-size: 0.74rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.14em;
                color: oklch(100% 0 0 / 0.55);
            }

            .contact__row-body h3 {
                margin: 0;
                font-family: var(--font-display);
                font-size: 1rem;
                font-weight: 700;
                color: var(--surface);
                letter-spacing: -0.015em;
            }

            .contact__row-body span {
                font-size: 0.9rem;
                color: oklch(100% 0 0 / 0.65);
            }

            .contact__right {
                padding: clamp(24px, 3vw, 44px);
                background: var(--surface);
                color: var(--ink);
                display: grid;
                align-content: start;
                gap: var(--s-4);
            }

            .contact__right h2 {
                margin: 0;
                font-family: var(--font-display);
                font-size: clamp(1.25rem, 1.8vw, 1.55rem);
                font-weight: 700;
                letter-spacing: -0.025em;
                color: var(--ink);
                line-height: 1.15;
            }

            .contact__right p {
                margin: 0;
                font-size: 0.9rem;
                color: var(--ink-soft);
            }

            .contact__form {
                display: grid;
                grid-template-columns: 1fr 1fr;
                gap: 10px;
            }

            .field {
                display: grid;
                gap: 4px;
            }
            .field--full {
                grid-column: 1 / -1;
            }

            .field label {
                font-size: 0.74rem;
                font-weight: 600;
                color: var(--ink);
                letter-spacing: 0.005em;
            }

            .field input,
            .field select,
            .field textarea {
                padding: 10px 13px;
                border-radius: var(--r-sm);
                border: 1px solid var(--ink-line);
                background: var(--surface);
                color: var(--ink);
                font-size: 0.92rem;
                transition:
                    border-color 180ms ease,
                    background 180ms ease;
            }

            .field input:focus,
            .field select:focus,
            .field textarea:focus {
                outline: none;
                border-color: var(--ink);
                background: var(--surface-warm);
            }

            .field textarea {
                resize: vertical;
                min-height: 88px;
                font-family: inherit;
            }

            .field small {
                font-size: 0.78rem;
                color: var(--ink-faint);
            }

            .form-actions {
                display: flex;
                gap: var(--s-3);
                flex-wrap: wrap;
                margin-top: var(--s-2);
            }

            .form-feedback {
                font-size: 0.92rem;
                min-height: 24px;
            }

            /* ----------------------------------------------------------------
     Footer
  -----------------------------------------------------------------*/
            .footer {
                background: var(--ink);
                color: oklch(100% 0 0 / 0.75);
                padding: var(--s-8) 0 var(--s-6);
                margin-top: var(--gutter);
            }

            .footer .container {
                padding: 0 var(--gutter);
            }

            .footer__grid {
                display: grid;
                grid-template-columns: 1.4fr 1fr 1fr 1.2fr;
                gap: var(--s-7);
                padding-bottom: var(--s-7);
                border-bottom: 1px solid oklch(100% 0 0 / 0.1);
            }

            .footer__col {
                display: grid;
                gap: 14px;
            }

            .footer__col h3 {
                margin: 0 0 4px;
                font-family: var(--font-display);
                font-size: 0.78rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.14em;
                color: var(--accent);
            }

            .footer__col a {
                font-size: 0.92rem;
                color: oklch(100% 0 0 / 0.7);
                transition: color 180ms ease;
            }

            .footer__col a:hover {
                color: var(--surface);
            }

            .footer__col p {
                margin: 0;
                font-size: 0.92rem;
                color: oklch(100% 0 0 / 0.7);
                max-width: 30ch;
            }

            .footer__brand {
                display: grid;
                gap: var(--s-3);
            }

            .footer__brand img {
                width: 130px;
                filter: brightness(0) invert(1);
                opacity: 0.95;
            }

            .footer__meta {
                display: flex;
                justify-content: space-between;
                flex-wrap: wrap;
                gap: var(--s-3);
                padding-top: var(--s-5);
                font-size: 0.85rem;
                color: oklch(100% 0 0 / 0.55);
            }

            /* ----------------------------------------------------------------
     Floating call button
  -----------------------------------------------------------------*/
            .floating-call {
                position: fixed;
                bottom: 24px;
                right: 24px;
                width: 56px;
                height: 56px;
                border-radius: var(--r-pill);
                background: var(--whatsapp);
                color: #fff;
                display: inline-flex;
                align-items: center;
                justify-content: center;
                box-shadow: 0 16px 32px oklch(20% 0.05 145 / 0.4);
                z-index: 50;
                opacity: 0;
                transform: translateY(8px) scale(0.9);
                pointer-events: none;
                transition:
                    opacity 240ms cubic-bezier(.2,.8,.2,1),
                    transform 280ms cubic-bezier(.2,.8,.2,1);
            }
            .floating-call.is-visible {
                opacity: 1;
                transform: translateY(0) scale(1);
                pointer-events: auto;
            }
            .floating-call.is-visible:hover {
                transform: translateY(-2px) scale(1.04);
            }

            .floating-call:hover {
                transform: scale(1.06);
            }
            .floating-call svg {
                width: 26px;
                height: 26px;
            }

            /* ----------------------------------------------------------------
     Mobile menu
  -----------------------------------------------------------------*/
            .mobile-menu {
                position: fixed;
                inset: 0;
                z-index: 100;
                display: flex;
                align-items: flex-start;
                padding: var(--gutter);
                background: oklch(20% 0.02 270 / 0.55);
                backdrop-filter: blur(12px);
                -webkit-backdrop-filter: blur(12px);
                opacity: 0;
                visibility: hidden;
                pointer-events: none;
                transition:
                    opacity 240ms cubic-bezier(.2,.8,.2,1),
                    visibility 0s linear 240ms;
            }

            .mobile-menu.is-open {
                opacity: 1;
                visibility: visible;
                pointer-events: auto;
                transition:
                    opacity 240ms cubic-bezier(.2,.8,.2,1),
                    visibility 0s linear 0s;
            }

            .mobile-menu__panel {
                width: 100%;
                background: var(--surface);
                border-radius: var(--r-lg);
                padding: var(--s-5);
                display: grid;
                gap: var(--s-2);
                box-shadow: 0 24px 48px oklch(20% 0.02 270 / 0.25);
                transform: translateY(-12px) scale(0.98);
                opacity: 0;
                transform-origin: top center;
                transition:
                    transform 320ms cubic-bezier(.2,.8,.2,1),
                    opacity 280ms cubic-bezier(.2,.8,.2,1);
            }

            .mobile-menu.is-open .mobile-menu__panel {
                transform: translateY(0) scale(1);
                opacity: 1;
            }

            .mobile-menu__head {
                display: flex;
                align-items: center;
                justify-content: space-between;
                gap: var(--s-3);
                padding: 4px 6px 12px;
                border-bottom: 1px solid var(--ink-line);
                margin-bottom: var(--s-2);
            }

            .mobile-menu__head img {
                height: 22px;
                width: auto;
            }

            .mobile-menu__panel a {
                padding: 14px var(--s-4);
                border-radius: var(--r-md);
                background: var(--surface-warm);
                color: var(--ink);
                font-weight: 500;
                display: flex;
                align-items: center;
                justify-content: space-between;
                transition: background 180ms ease, transform 200ms ease;
            }

            .mobile-menu__panel a:hover,
            .mobile-menu__panel a:active {
                background: var(--ink);
                color: var(--surface);
            }

            .mobile-menu__panel a::after {
                content: "→";
                font-family: var(--font-display);
                font-size: 1rem;
                opacity: 0.4;
                transition: transform 200ms ease, opacity 200ms ease;
            }

            .mobile-menu__panel a:hover::after,
            .mobile-menu__panel a:active::after {
                transform: translateX(3px);
                opacity: 1;
            }

            /* Stagger the link entrance once the panel opens */
            .mobile-menu__panel a {
                transform: translateY(8px);
                opacity: 0;
                transition:
                    background 180ms ease,
                    transform 320ms cubic-bezier(.2,.8,.2,1),
                    opacity 280ms cubic-bezier(.2,.8,.2,1);
            }
            .mobile-menu.is-open .mobile-menu__panel a {
                transform: translateY(0);
                opacity: 1;
            }
            .mobile-menu.is-open .mobile-menu__panel a:nth-child(2) { transition-delay: 80ms; }
            .mobile-menu.is-open .mobile-menu__panel a:nth-child(3) { transition-delay: 130ms; }
            .mobile-menu.is-open .mobile-menu__panel a:nth-child(4) { transition-delay: 180ms; }
            .mobile-menu.is-open .mobile-menu__panel a:nth-child(5) { transition-delay: 220ms; }
            .mobile-menu.is-open .mobile-menu__panel a:nth-child(6) { transition-delay: 260ms; }
            .mobile-menu.is-open .mobile-menu__panel a:nth-child(7) { transition-delay: 300ms; }
            .mobile-menu.is-open .mobile-menu__panel a:nth-child(8) { transition-delay: 340ms; }
            .mobile-menu.is-open .mobile-menu__panel a:nth-child(9) { transition-delay: 380ms; }

            .mobile-menu__close {
                width: 36px;
                height: 36px;
                border-radius: var(--r-pill);
                background: var(--ink);
                color: var(--surface);
                display: inline-flex;
                align-items: center;
                justify-content: center;
                flex: 0 0 auto;
                transition: background 180ms ease, transform 200ms ease;
            }

            .mobile-menu__close:hover {
                background: var(--primary-deep);
                transform: rotate(90deg);
            }

            /* ----------------------------------------------------------------
     Responsive
  -----------------------------------------------------------------*/
            @media (max-width: 1100px) {
                .services {
                    grid-template-columns: 1fr;
                }
                .service-feature {
                    grid-column: 1;
                    grid-row: auto;
                }
                .strip {
                    grid-template-columns: 1fr 1fr;
                }
                .strip__item--feature { grid-column: 1 / -1; }
                .calc__grid {
                    grid-template-columns: 1fr 1fr;
                }
                .footer__grid {
                    grid-template-columns: 1fr 1fr;
                    gap: var(--s-6);
                }
                .reviews-aggregate {
                    grid-template-columns: auto 1fr;
                    grid-template-areas:
                        "g rating"
                        "meta meta"
                        "cta cta";
                    gap: var(--s-3) var(--s-4);
                }
                .reviews-aggregate__google { grid-area: g; }
                .reviews-aggregate__rating { grid-area: rating; }
                .reviews-aggregate__meta { grid-area: meta; }
                .reviews-aggregate__cta { grid-area: cta; justify-self: start; }

                .reviews-grid {
                    grid-template-columns: 1fr;
                    grid-template-rows: auto;
                }
                .review-quote--feature {
                    grid-row: auto;
                }

                .guide-row {
                    grid-template-columns: 60px 1fr auto;
                    grid-template-areas:
                        "num topic arrow"
                        "num title arrow"
                        "num meta arrow";
                    column-gap: var(--s-4);
                    row-gap: 4px;
                    padding: var(--s-5) 4px;
                }
                .guide-row__num { grid-area: num; align-self: center; }
                .guide-row__topic { grid-area: topic; }
                .guide-row__title { grid-area: title; }
                .guide-row__meta { grid-area: meta; white-space: normal; }
                .guide-row__arrow { grid-area: arrow; align-self: center; }
            }

            @media (max-width: 860px) {
                .intro {
                    grid-template-columns: 1fr;
                    gap: var(--s-6);
                }
                .intro__cards {
                    grid-template-columns: 1fr;
                }
                .services-bento {
                    grid-template-columns: 1.25fr 1fr 1fr;
                }
                .contact {
                    grid-template-columns: 1fr;
                }
                .calc__result {
                    grid-template-columns: 1fr;
                    gap: var(--s-3);
                }
                .calc__result-label {
                    text-align: left;
                }
                .calc__cta {
                    justify-self: start;
                }
                .hero__nav-links {
                    display: none;
                }

                /* Bare nav: logo left, burger right, sitting on the photo */
                .hero__nav {
                    left: var(--gutter);
                    right: var(--gutter);
                    transform: none;
                    width: auto;
                    max-width: none;
                    top: var(--gutter);
                    padding: 0;
                    gap: var(--s-3);
                    background: transparent;
                    backdrop-filter: none;
                    -webkit-backdrop-filter: none;
                    border: none;
                    box-shadow: none;
                    display: flex;
                    justify-content: space-between;
                }
                .hero__brand {
                    padding-right: 0;
                    margin-right: 0;
                    border-right: 0;
                    height: auto;
                }
                .hero__brand img {
                    height: 40px;
                    /* Two stacked shadows: a tight one for edge crispness, and a
                       softer wider one so the logo holds against bright sky. */
                    filter:
                        brightness(0) invert(1)
                        drop-shadow(0 1px 2px oklch(15% 0.04 245 / 0.7))
                        drop-shadow(0 4px 16px oklch(15% 0.04 245 / 0.5));
                }
                .hero__nav-toggle {
                    display: inline-flex;
                    width: 46px;
                    height: 46px;
                    border-radius: 14px;
                    background: var(--primary-deep);
                    color: var(--surface);
                    box-shadow:
                        0 8px 22px oklch(20% 0.06 245 / 0.45),
                        0 1px 0 oklch(100% 0 0 / 0.18) inset;
                }
                .hero__nav-cta {
                    display: none;
                }

                /* Mobile menu — flat full-screen overlay */
                .mobile-menu {
                    background: var(--stage);
                    backdrop-filter: none;
                    -webkit-backdrop-filter: none;
                    padding: 0;
                    overflow-y: auto;
                    -webkit-overflow-scrolling: touch;
                    overscroll-behavior: contain;
                }
                .mobile-menu__panel {
                    width: 100%;
                    min-height: 100%;
                    height: auto;
                    background: var(--stage);
                    border-radius: 0;
                    box-shadow: none;
                    padding: var(--gutter);
                    display: flex;
                    flex-direction: column;
                    gap: 0;
                    transform: translateY(-8px);
                    opacity: 0;
                }
                .mobile-menu.is-open .mobile-menu__panel {
                    transform: translateY(0);
                    opacity: 1;
                }
                .mobile-menu__head {
                    padding: 6px 4px var(--s-4);
                    margin-bottom: var(--s-2);
                    border-bottom: 1px solid var(--ink-line);
                }
                .mobile-menu__head img {
                    height: 30px;
                }
                .mobile-menu__close {
                    background: var(--ink);
                    color: var(--surface);
                    border: 0;
                }
                .mobile-menu__panel a {
                    padding: clamp(18px, 3.5vw, 26px) 4px;
                    background: transparent;
                    border-radius: 0;
                    border-bottom: 1px solid var(--ink-line);
                    font-family: var(--font-display);
                    font-size: clamp(1.5rem, 4.6vw, 2rem);
                    font-weight: 700;
                    letter-spacing: -0.025em;
                    color: var(--ink);
                }
                .mobile-menu__panel a:hover,
                .mobile-menu__panel a:active {
                    background: transparent;
                    color: var(--accent-deep);
                }
                .mobile-menu__panel a::after {
                    color: var(--ink-faint);
                    font-size: 1.1rem;
                    opacity: 0.5;
                }

                .section-head--row {
                    grid-template-columns: 1fr;
                    align-items: start;
                }

                /* Hero — explicit height (no aspect-ratio) so the card width
                   stays bound by its parent. The aspect-ratio + min-height combo
                   was causing the browser to expand the card width to satisfy
                   the ratio when min-height won, pushing content past the viewport. */
                .hero__card {
                    width: 100%;
                    max-width: 100%;
                    aspect-ratio: auto;
                    height: clamp(480px, 72vh, 640px);
                    min-height: 0;
                    max-height: 78vh;
                }
                .hero__media img {
                    object-position: 55% 60%;
                }
            }

            @media (max-width: 640px) {
                .services-bento {
                    grid-template-columns: 1fr 1fr;
                }
                .bento-card--feature {
                    grid-column: 1 / 3;
                    grid-row: auto;
                    aspect-ratio: 16 / 9;
                }

                /* Stat strip becomes a horizontal scroll-snap carousel.
                   Negative margins extend it past the stage gutters so the
                   next card peeks visibly past the right edge as a scroll hint.
                   scroll-padding aligns the snapped card with the page gutter
                   so the first card lines up with everything else above and
                   below it. body has overflow-x: clip so this can't trigger
                   page-level horizontal scroll. */
                .strip {
                    display: flex;
                    grid-template-columns: none;
                    flex-wrap: nowrap;
                    overflow-x: auto;
                    overflow-y: clip;
                    scroll-snap-type: x mandatory;
                    scroll-padding-left: var(--gutter);
                    gap: var(--s-3);
                    margin: var(--gutter) calc(var(--gutter) * -1) 0;
                    padding: 0 var(--gutter) 12px;
                    -webkit-overflow-scrolling: touch;
                    overscroll-behavior: contain;
                    touch-action: pan-x;
                    scrollbar-width: none;
                }
                .strip__item {
                    touch-action: pan-x;
                }
                .strip::-webkit-scrollbar {
                    display: none;
                }
                .strip__item {
                    flex: 0 0 84%;
                    width: 84%;
                    min-height: 200px;
                    padding: var(--s-5);
                    scroll-snap-align: start;
                }
                .strip__item--feature {
                    grid-column: auto;
                    padding: var(--s-6) var(--s-5) var(--s-5);
                }
                .calc__grid {
                    grid-template-columns: 1fr;
                }
                .contact__form {
                    grid-template-columns: 1fr;
                }

                /* Hero — slightly shorter on phone */
                .hero__card {
                    height: clamp(420px, 60vh, 520px);
                }

                /* Service cards on mobile — slightly taller aspect for stacking */
                .service-card {
                    aspect-ratio: 16 / 11;
                }
                .service-feature__chips {
                    gap: 6px;
                }
                .chip {
                    padding: 5px 10px;
                    font-size: 0.78rem;
                }

                /* Quiet kicker tweak — give it a touch more presence on mobile
                   now that the city list is hidden. */
                .hero__kicker {
                    background: oklch(100% 0 0 / 0.22);
                    border-color: oklch(100% 0 0 / 0.4);
                }

                /* Intro photo — drop the caption out of the overlay on mobile.
                   Image gets the full frame, caption sits underneath as a clean
                   card so it's actually readable and doesn't crop the photo. */
                .intro__media {
                    aspect-ratio: auto;
                    display: flex;
                    flex-direction: column;
                    background: var(--surface);
                    border: 1px solid var(--ink-line);
                    box-shadow: var(--shadow-sm);
                }
                .intro__media img {
                    aspect-ratio: 4 / 3;
                    height: auto;
                    flex: 0 0 auto;
                }
                .intro__badge {
                    position: static;
                    background: transparent;
                    backdrop-filter: none;
                    -webkit-backdrop-filter: none;
                    border-radius: 0;
                    padding: var(--s-4) var(--s-5) var(--s-5);
                }
                .intro__badge strong {
                    font-size: 1.05rem;
                }
                .hero__media img {
                    object-position: 60% 60%;
                }
                .hero__title-line-1 {
                    font-size: 0.95rem;
                    margin-bottom: 2px;
                }
                .hero__title-line-2 {
                    font-size: clamp(2rem, 10vw, 3rem);
                    letter-spacing: -0.03em;
                }

                /* Kicker — split into two pills so "Malvern" doesn't orphan */
                .hero__kicker {
                    font-size: 0.7rem;
                    padding: 5px 11px 5px 6px;
                    gap: 8px;
                    line-height: 1.3;
                }
                .hero__kicker-dot {
                    width: 18px;
                    height: 18px;
                }
                .hero__kicker-mobile-hide {
                    display: none;
                }

                /* Google badge hidden on mobile — the first stat card directly
                   below the hero already shows "5.0/5 · 26 Google reviews", so
                   keeping the badge here doubles the same trust signal and
                   clutters the headline. */
                .hero__kicker--google {
                    display: none;
                }

                /* Mobile hero: trim to brand + kicker + headline + primary CTA only.
                   The trust chips and scroll cue duplicate the stat strip below
                   and the secondary call link is covered by the floating WhatsApp
                   and footer phone. */
                .hero__actions {
                    gap: 8px;
                }
                .hero__location { display: none; }
                .hero__actions .btn--ghost-light { display: none; }
                .hero__scroll { display: none; }
                .hero__chips { display: none; }

                /* Social tiles hidden on phone — saves space and avoids
                   competing with the floating WhatsApp button below the fold */
                .hero__social {
                    display: none;
                }
                .hero__copy {
                    left: 18px;
                    right: 18px;
                    bottom: 22px;
                    gap: var(--s-4);
                }
            }

            /* Motion One initial states — only applied when motion has
               actually loaded and successfully tagged <html>. The script
               adds .motion-ready as its FIRST action, so if motion fails
               (CDN blocked, syntax error, network), elements stay visible. */
            html.motion-ready .anim-fade {
                opacity: 0;
                transform: translateY(24px);
                will-change: opacity, transform;
            }
            html.motion-ready .anim-rise {
                opacity: 0;
                transform: translateY(40px);
                will-change: opacity, transform;
            }
            html.motion-ready .hero__media img {
                will-change: transform;
            }

            /* Short landscape — phones held sideways, ChromeOS small windows.
               The portrait aspect-ratio + min-height combo would force the hero
               taller than the viewport. Switch to a width-driven height so the
               hero stays inside one screen. */
            @media (max-height: 540px) and (orientation: landscape) {
                .hero__card {
                    aspect-ratio: auto;
                    height: 88vh;
                    min-height: 0;
                    max-height: 88vh;
                }
                .hero__copy {
                    bottom: 18px;
                    gap: var(--s-3);
                }
                .hero__title-line-2 {
                    font-size: clamp(1.6rem, 6vw, 2.4rem);
                }
            }

            @media (prefers-reduced-motion: reduce) {
                *,
                *::before,
                *::after {
                    animation-duration: 0.01ms !important;
                    transition-duration: 0.01ms !important;
                }
                html.motion-ready .anim-fade,
                html.motion-ready .anim-rise {
                    opacity: 1 !important;
                    transform: none !important;
                }
                html {
                    scroll-behavior: auto;
                }
            }

/* =============================================================
   Location-page specific sections
   (Coverage / Material guide / Process / "Why choose [Town]")
============================================================= */

/* Coverage — postcode rows + neighbourhood chips */
.coverage {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: clamp(28px, 4vw, 64px);
    align-items: start;
}
.coverage__col { display: grid; gap: var(--s-4); }

.pc-rows {
    list-style: none;
    margin: 0;
    padding: 0;
    border-top: 1px solid var(--ink-line);
}
.pc-rows li {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: var(--s-4);
    align-items: baseline;
    padding: 14px 4px;
    border-bottom: 1px solid var(--ink-line);
}
.pc-row__code {
    font-family: var(--font-display);
    font-size: 1rem;
    font-weight: 700;
    color: var(--accent-deep);
    letter-spacing: 0.02em;
    font-feature-settings: "tnum";
    min-width: 4ch;
}
.pc-row__name {
    font-size: 0.95rem;
    color: var(--ink);
    font-weight: 500;
}

.nb-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.nb-list li {
    padding: 8px 14px;
    border-radius: var(--r-pill);
    background: var(--surface);
    border: 1px solid var(--ink-line);
    color: var(--ink);
    font-size: 0.88rem;
    font-weight: 500;
}

@media (max-width: 860px) {
    .coverage { grid-template-columns: 1fr; gap: var(--s-6); }
}

/* Material guide cards */
.material-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--s-4);
}
.material-card {
    display: grid;
    gap: var(--s-3);
    padding: clamp(24px, 2.6vw, 36px);
    background: var(--surface);
    border: 1px solid var(--ink-line);
    border-radius: var(--r-lg);
    transition: transform 240ms cubic-bezier(.2,.8,.2,1),
                border-color 220ms ease,
                box-shadow 220ms ease;
}
.material-card:hover {
    transform: translateY(-3px);
    border-color: var(--ink-line-strong);
    box-shadow: var(--shadow-md);
}
.material-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 14px;
    background: var(--surface-warm);
    border: 1px solid var(--ink-line);
    font-size: 1.2rem;
    color: var(--accent-deep);
    line-height: 1;
}
.material-card__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--s-3);
}
.material-card__head h3 {
    margin: 0;
    font-family: var(--font-display);
    font-size: clamp(1.15rem, 1.6vw, 1.35rem);
    font-weight: 700;
    color: var(--ink);
    letter-spacing: -0.02em;
}
.material-card__price {
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--accent-deep);
    white-space: nowrap;
}
.material-card__tagline {
    margin: 0;
    font-size: 0.95rem;
    color: var(--ink);
    line-height: 1.45;
}
.material-card__pros {
    margin: 0;
    font-size: 0.82rem;
    color: var(--ink-faint);
    letter-spacing: 0.02em;
}
.material-card__best {
    margin: 0;
    font-size: 0.85rem;
    color: var(--ink-soft);
    padding-top: var(--s-3);
    border-top: 1px solid var(--ink-line);
}
.material-card__best strong {
    color: var(--ink);
    font-weight: 600;
}

@media (max-width: 720px) {
    .material-grid { grid-template-columns: 1fr; }
}

/* Process — numbered steps as horizontal flow on desktop, stacked on mobile */
.process {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--s-4);
    counter-reset: process;
}
.process-step {
    display: grid;
    gap: var(--s-3);
    padding: clamp(24px, 2.6vw, 32px);
    background: var(--surface);
    border: 1px solid var(--ink-line);
    border-radius: var(--r-lg);
    position: relative;
}
.process-step__num {
    font-family: var(--font-display);
    font-size: clamp(2rem, 3vw, 2.6rem);
    font-weight: 800;
    letter-spacing: -0.04em;
    color: var(--accent);
    line-height: 1;
}
.process-step h3 {
    margin: 0;
    font-family: var(--font-display);
    font-size: clamp(1.05rem, 1.4vw, 1.2rem);
    font-weight: 700;
    color: var(--ink);
    letter-spacing: -0.02em;
}
.process-step p {
    margin: 0;
    font-size: 0.9rem;
    color: var(--ink-soft);
    line-height: 1.5;
}

@media (max-width: 1100px) {
    .process { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
    .process { grid-template-columns: 1fr; }
}

/* FAQ accordion (service pages) */
.faq-list {
    display: grid;
    gap: var(--s-2);
    max-width: 880px;
    margin: 0 auto;
}
.faq {
    background: var(--surface);
    border: 1px solid var(--ink-line);
    border-radius: var(--r-md);
    overflow: hidden;
}
.faq summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s-3);
    padding: var(--s-4) var(--s-5);
    font-family: var(--font-display);
    font-size: clamp(1rem, 1.3vw, 1.1rem);
    font-weight: 600;
    color: var(--ink);
    letter-spacing: -0.015em;
    cursor: pointer;
    list-style: none;
    transition: background 180ms ease;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
    content: "";
    flex-shrink: 0;
    width: 12px; height: 12px;
    border-right: 1.6px solid currentColor;
    border-bottom: 1.6px solid currentColor;
    transform: rotate(45deg);
    transition: transform 220ms cubic-bezier(.2,.8,.2,1);
    margin-bottom: 4px;
}
.faq[open] summary::after {
    transform: rotate(-135deg);
    margin-bottom: -4px;
}
.faq summary:hover { background: var(--surface-warm); }
.faq[open] summary { border-bottom: 1px solid var(--ink-line); }
.faq__body {
    padding: var(--s-4) var(--s-5) var(--s-5);
    color: var(--ink-soft);
    line-height: 1.6;
    font-size: 0.95rem;
}
.faq__body p { margin: 0 0 var(--s-3); }
.faq__body p:last-child { margin: 0; }

/* Long-form article (drainage-solutions, redditch-patio) */
.article {
    max-width: 720px;
    margin: 0 auto;
    padding: 0 var(--gutter);
    font-size: 1.0625rem;
    line-height: 1.7;
    color: var(--ink-soft);
}
.article > * + * { margin-top: var(--s-4); }
.article h2 {
    margin-top: var(--s-8);
    font-family: var(--font-display);
    font-size: clamp(1.6rem, 2.6vw, 2.2rem);
    font-weight: 800;
    letter-spacing: -0.025em;
    color: var(--ink);
    line-height: 1.15;
}
.article h2:first-child { margin-top: 0; }
.article h3 {
    margin-top: var(--s-6);
    font-family: var(--font-display);
    font-size: clamp(1.15rem, 1.6vw, 1.4rem);
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--ink);
    line-height: 1.2;
}
.article h4 {
    margin-top: var(--s-5);
    font-family: var(--font-display);
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--ink);
    letter-spacing: -0.015em;
}
.article p { margin: 0; }
.article a {
    color: var(--accent-deep);
    border-bottom: 1px solid currentColor;
    text-decoration: none;
    transition: color 200ms ease;
}
.article a:hover { color: var(--ink); }
.article ul, .article ol {
    margin: 0;
    padding-left: var(--s-5);
}
.article li { margin: 6px 0; }
.article ul li::marker { color: var(--accent); }
.article strong { color: var(--ink); font-weight: 600; }
.article blockquote {
    margin: var(--s-5) 0;
    padding: var(--s-4) var(--s-5);
    background: var(--surface-warm);
    border-radius: var(--r-md);
    color: var(--ink);
    font-style: italic;
}
.article hr {
    margin: var(--s-7) 0;
    border: 0;
    border-top: 1px solid var(--ink-line);
}
.article .callout {
    padding: var(--s-5);
    background: var(--surface-warm);
    border-radius: var(--r-md);
    margin: var(--s-5) 0;
}
.article .callout strong:first-child {
    display: block;
    margin-bottom: 4px;
    font-family: var(--font-display);
    font-size: 1rem;
    color: var(--ink);
}
.article-toc {
    max-width: 720px;
    margin: 0 auto var(--s-7);
    padding: var(--s-5) var(--gutter);
    background: var(--surface-warm);
    border-radius: var(--r-md);
}
.article-toc h2 {
    margin: 0 0 var(--s-3);
    font-family: var(--font-display);
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    color: var(--accent-deep);
}
.article-toc ol {
    margin: 0;
    padding: 0;
    list-style: none;
    columns: 2;
    column-gap: var(--s-5);
}
.article-toc li {
    padding: 4px 0;
    break-inside: avoid;
}
.article-toc a {
    font-size: 0.92rem;
    color: var(--ink);
    text-decoration: none;
}
.article-toc a:hover { color: var(--accent-deep); }
@media (max-width: 720px) {
    .article-toc ol { columns: 1; }
}

/* ===========================================================
   Seastone × ElevenLabs ConvAI — Talk to Steve launcher
   Text-first chat panel with optional voice call upgrade.
   Drives a custom @elevenlabs/client SDK integration, replacing
   the default <elevenlabs-convai> widget for full design control.
   Positioned bottom-LEFT to avoid the bottom-right social tiles.
   =========================================================== */
.convai {
    position: fixed;
    bottom: 24px;
    left: 24px;
    z-index: 9999;
    font-family: var(--font-body);
}

/* --- Launcher pill --- */
.convai__launcher {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 0 18px 0 14px;
    height: 52px;
    background: var(--accent);
    color: var(--surface);
    border: 0;
    border-radius: var(--r-pill);
    font-family: inherit;
    font-size: 0.92rem;
    font-weight: 600;
    letter-spacing: -0.01em;
    cursor: pointer;
    box-shadow:
        0 8px 24px oklch(50% 0.13 245 / 0.35),
        0 2px 6px oklch(50% 0.13 245 / 0.25),
        inset 0 1px 0 oklch(100% 0 0 / 0.18);
    position: relative;
    transition: transform 200ms cubic-bezier(.2,.8,.2,1), box-shadow 200ms ease;
}
.convai__launcher:hover {
    transform: translateY(-1px);
    box-shadow:
        0 12px 28px oklch(50% 0.13 245 / 0.4),
        0 3px 8px oklch(50% 0.13 245 / 0.3),
        inset 0 1px 0 oklch(100% 0 0 / 0.22);
}
.convai__launcher:active { transform: translateY(0); }
.convai__launcher:focus-visible {
    outline: 2px solid var(--surface);
    outline-offset: 2px;
}
.convai__launcher-icon { width: 18px; height: 18px; flex-shrink: 0; }
.convai__launcher-label { line-height: 1; white-space: nowrap; }

.convai__pulse {
    position: absolute;
    inset: -4px;
    border-radius: inherit;
    border: 2px solid var(--accent);
    opacity: 0;
    pointer-events: none;
    animation: convai-pulse 2.4s cubic-bezier(.2,.8,.2,1) infinite;
}
@keyframes convai-pulse {
    0%   { transform: scale(0.97); opacity: 0.55; }
    70%  { transform: scale(1.18); opacity: 0;    }
    100% { transform: scale(1.18); opacity: 0;    }
}
/* When panel is open, hide the launcher entirely — close button
   inside the panel takes over as the dismiss control. */
.convai.is-open .convai__launcher { display: none; }

/* --- Panel --- */
/* Panel is class-controlled (.convai.is-open) rather than [hidden]-attribute
   controlled. The [hidden] attribute is kept on the markup for a11y but
   we don't rely on the user agent's default [hidden] rule because our
   layout `display: flex` would otherwise win the cascade and the panel
   would never actually hide. */
.convai__panel {
    display: none;
    position: absolute;
    bottom: 0;
    left: 0;
    width: 380px;
    max-width: calc(100vw - 32px);
    height: 540px;
    max-height: calc(100vh - 64px);
    background: var(--surface);
    border-radius: var(--r-lg);
    box-shadow:
        0 24px 48px -12px oklch(15% 0.04 245 / 0.3),
        0 8px 24px -6px oklch(15% 0.04 245 / 0.18);
    overflow: hidden;
    flex-direction: column;
    transform-origin: bottom left;
}
.convai.is-open .convai__panel {
    display: flex;
    animation: convai-pop 220ms cubic-bezier(.2,.8,.2,1);
}
@keyframes convai-pop {
    from { transform: scale(0.95) translateY(8px); opacity: 0; }
    to   { transform: scale(1)    translateY(0);   opacity: 1; }
}

.convai__head {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 14px 14px 16px;
    border-bottom: 1px solid var(--ink-line);
    flex-shrink: 0;
}
.convai__avatar {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: var(--accent);
    color: var(--surface);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.convai__avatar svg { width: 20px; height: 20px; }
.convai__meta {
    display: flex;
    flex-direction: column;
    gap: 1px;
    flex: 1;
    min-width: 0;
}
.convai__meta strong {
    font-size: 0.95rem;
    color: var(--ink);
    font-weight: 600;
    line-height: 1.2;
}
.convai__status {
    font-size: 0.75rem;
    color: var(--ink-soft);
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.convai__head-btn {
    background: transparent;
    border: 1px solid var(--ink-line);
    width: 32px;
    height: 32px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--ink-soft);
    transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
    flex-shrink: 0;
    padding: 0;
}
.convai__head-btn:hover {
    background: var(--surface-warm);
    color: var(--ink);
}
.convai__head-btn svg { width: 14px; height: 14px; }

/* Call button gets a brand-blue accent so it reads as primary */
.convai__call-btn {
    background: var(--accent);
    border-color: var(--accent);
    color: var(--surface);
}
.convai__call-btn:hover {
    background: var(--accent-deep);
    color: var(--surface);
    border-color: var(--accent-deep);
}
/* When call is live, the call button turns red to signal "tap to end" */
.convai[data-mode="connecting"] .convai__call-btn,
.convai[data-mode="connected"] .convai__call-btn,
.convai[data-mode="listening"] .convai__call-btn,
.convai[data-mode="speaking"] .convai__call-btn {
    background: oklch(58% 0.18 25);
    border-color: oklch(58% 0.18 25);
}
.convai[data-mode="connecting"] .convai__call-btn:hover,
.convai[data-mode="connected"] .convai__call-btn:hover,
.convai[data-mode="listening"] .convai__call-btn:hover,
.convai[data-mode="speaking"] .convai__call-btn:hover {
    background: oklch(50% 0.18 25);
    border-color: oklch(50% 0.18 25);
}

/* --- Voice strip (visible only in voice mode) --- */
.convai__voice {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 18px 16px 14px;
    border-bottom: 1px solid var(--ink-line);
    background: var(--surface-warm);
}
.convai__orb {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background:
        radial-gradient(circle at 30% 30%,
            oklch(75% 0.10 245),
            oklch(50% 0.13 245) 60%,
            oklch(35% 0.13 245));
    box-shadow:
        0 6px 16px oklch(45% 0.13 245 / 0.35),
        inset 0 -6px 12px oklch(20% 0.06 245 / 0.4),
        inset 0 3px 8px oklch(85% 0.08 245 / 0.4);
    transition: transform 280ms cubic-bezier(.2,.8,.2,1);
}
.convai[data-mode="connecting"] .convai__orb,
.convai[data-mode="listening"] .convai__orb {
    animation: convai-orb-listen 1.6s ease-in-out infinite;
}
.convai[data-mode="speaking"] .convai__orb {
    animation: convai-orb-speak 0.7s ease-in-out infinite;
}
@keyframes convai-orb-listen {
    0%, 100% { transform: scale(1);    }
    50%      { transform: scale(1.06); }
}
@keyframes convai-orb-speak {
    0%, 100% { transform: scale(1);    }
    50%      { transform: scale(1.14); }
}
.convai__voice-status {
    font-size: 0.78rem;
    color: var(--ink-soft);
    font-weight: 500;
    letter-spacing: 0.01em;
}

/* --- Message log --- */
.convai__log {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    scroll-behavior: smooth;
}
.convai__log::-webkit-scrollbar { width: 6px; }
.convai__log::-webkit-scrollbar-thumb {
    background: oklch(85% 0.005 245);
    border-radius: 3px;
}
.convai__log::-webkit-scrollbar-thumb:hover {
    background: oklch(75% 0.005 245);
}

.convai__msg {
    max-width: 85%;
    padding: 9px 13px;
    border-radius: 14px;
    font-size: 0.88rem;
    line-height: 1.45;
    word-wrap: break-word;
}
.convai__msg--bot {
    align-self: flex-start;
    background: var(--surface-warm);
    color: var(--ink);
    border-bottom-left-radius: 4px;
}
.convai__msg--user {
    align-self: flex-end;
    background: var(--accent);
    color: var(--surface);
    border-bottom-right-radius: 4px;
}
.convai__msg--system {
    align-self: center;
    background: transparent;
    color: var(--ink-soft);
    font-size: 0.75rem;
    font-style: italic;
    padding: 4px 10px;
}

/* Animated typing dots while waiting for a response */
.convai__typing {
    align-self: flex-start;
    display: inline-flex;
    gap: 4px;
    padding: 12px 14px;
    background: var(--surface-warm);
    border-radius: 14px;
    border-bottom-left-radius: 4px;
}
.convai__typing span {
    width: 6px;
    height: 6px;
    background: var(--ink-soft);
    border-radius: 50%;
    animation: convai-typing 1.2s ease-in-out infinite;
}
.convai__typing span:nth-child(2) { animation-delay: 0.15s; }
.convai__typing span:nth-child(3) { animation-delay: 0.3s; }
@keyframes convai-typing {
    0%, 60%, 100% { transform: translateY(0);   opacity: 0.4; }
    30%           { transform: translateY(-4px); opacity: 1;  }
}

/* --- Input bar --- */
.convai__input {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    border-top: 1px solid var(--ink-line);
    background: var(--surface);
    flex-shrink: 0;
}
.convai__input input {
    flex: 1;
    min-width: 0;
    height: 38px;
    padding: 0 14px;
    background: var(--surface-warm);
    border: 1px solid transparent;
    border-radius: var(--r-pill);
    font-family: inherit;
    font-size: 1rem;
    color: var(--ink);
    transition: border-color 150ms ease, background 150ms ease;
}
.convai__input input:focus {
    outline: none;
    border-color: var(--accent);
    background: var(--surface);
}
.convai__input input::placeholder { color: var(--ink-soft); }

.convai__send {
    width: 38px;
    height: 38px;
    background: var(--accent);
    color: var(--surface);
    border: 0;
    border-radius: 50%;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 150ms ease, opacity 150ms ease;
    flex-shrink: 0;
    padding: 0;
}
.convai__send:hover { background: var(--accent-deep); }
.convai__send:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}
.convai__send svg { width: 16px; height: 16px; }

.convai__note {
    margin: 0;
    padding: 6px 12px 10px;
    font-size: 0.65rem;
    color: var(--ink-soft);
    text-align: center;
    letter-spacing: 0.02em;
    background: var(--surface);
    flex-shrink: 0;
}

/* --- Mobile bottom sheet --- */
@media (max-width: 768px) {
    .convai {
        bottom: 16px;
        left: 16px;
    }
    .convai__launcher {
        width: 52px;
        height: 52px;
        padding: 0;
        justify-content: center;
        gap: 0;
    }
    .convai__launcher-label {
        display: none;
    }
    .convai__launcher-icon {
        width: 22px;
        height: 22px;
    }
    .convai__panel {
        position: fixed;
        bottom: 12px;
        left: 12px;
        right: 12px;
        width: auto;
        max-width: none;
        height: calc(100vh - 100px);
        max-height: 600px;
    }
}

/* ================================================================
   HERO REDESIGN — overlay refactor + page header
   ================================================================
   Cool brand palette is the source of truth. Tokens scoped to .hero
   so they don't leak into the rest of the site.
   ---------------------------------------------------------------- */
.hero {
    --hero-ink:        #163C5C;
    --hero-mist:       #C9D2DA;
    --hero-paper:      #E6EBF0;
    --hero-white:      #FFFFFF;
    --hero-shadow:     0 1px 2px rgba(10,22,40,.55), 0 4px 18px rgba(10,22,40,.45);
    --hero-shadow-soft:0 1px 1px rgba(10,22,40,.35), 0 6px 24px rgba(10,22,40,.30);
}

/* ---- Site header (above the hero card on desktop) ------------- */
.site-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s-4);
    padding: 18px var(--gutter) 14px;
}
.site-header__brand {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
}
.site-header__brand img {
    height: 36px;
    width: auto;
    display: block;
}
.site-header__nav {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.site-header__nav a,
.site-header .nav-dropdown__trigger {
    position: relative;
    padding: 8px 14px;
    border: 0;
    background: transparent;
    font-family: var(--font-body);
    font-size: 0.78rem;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ink);
    text-shadow: none;
    cursor: pointer;
    transition: color 200ms ease;
}
.site-header__nav a:hover,
.site-header .nav-dropdown__trigger:hover { color: var(--accent-deep); }
.site-header__nav a::after {
    content: "";
    position: absolute;
    left: 14px; right: 14px; bottom: 4px;
    height: 1px;
    background: var(--ink);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 280ms cubic-bezier(.2,.8,.2,1);
}
.site-header__nav a:hover::after { transform: scaleX(1); }

/* "Areas We Serve" reads as a category, not a peer link */
.site-header .nav-dropdown__trigger {
    border-left: 1px solid var(--ink-line);
    padding-left: 18px;
    margin-left: 4px;
    gap: 8px;
}
.site-header .nav-dropdown__chev { width: 8px; height: 8px; opacity: .8; }

/* Social tile cluster — relocated from in-hero to the desktop nav.
   Small monochrome icon links on the cream stage. */
.site-header__social {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-left: 12px;
    padding-left: 14px;
    border-left: 1px solid var(--ink-line);
}
.site-header__social a {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--ink);
    transition: background 200ms ease, color 200ms ease;
}
.site-header__social a:hover {
    background: var(--surface-warm);
    color: var(--accent-deep);
}
.site-header__social svg { width: 16px; height: 16px; display: block; }

/* Breakpoint switch: site-header on desktop, in-hero overlay nav on mobile.
   Same logic as the existing 860px breakpoint used elsewhere. */
@media (max-width: 860px) {
    .site-header { display: none; }
    /* in-hero .hero__nav stays as it already is for mobile */
}
@media (min-width: 861px) {
    .hero__nav { display: none; }
}

/* ---- Component 3: trust badge → inline rating ----------------- */
.hero__rating {
    display: inline-flex;
    align-items: center;
    gap: 0;
    color: var(--hero-paper);
    font-size: 0.86rem;
    font-weight: 500;
    letter-spacing: 0.06em;
    text-shadow: var(--hero-shadow-soft);
}
.hero__rating-stars {
    display: inline-flex;
    gap: 3px;
    color: var(--hero-white);
    margin-right: 14px;
    filter: drop-shadow(0 2px 6px rgba(10,22,40,0.45));
}
.hero__rating-stars svg { width: 14px; height: 14px; display: block; }
.hero__rating-text {
    padding-left: 14px;
    border-left: 1px solid rgba(255,255,255,0.35);
}

/* ---- Component 4: kicker recolour + scale ------------------- */
.hero .hero__title-line-1 {
    color: var(--hero-mist);
    letter-spacing: 0.04em;
    font-size: clamp(1.6rem, 2.8vw, 2.6rem);
    line-height: 1.05;
    text-shadow: var(--hero-shadow-soft);
}

/* ---- Composition: vertically-centred copy block --------------
   Copy was bottom-anchored which left the upper two-thirds of the
   photo empty. Centring lets the headline own the optical middle of
   the hero so rating/kicker/CTAs read as supporting weight. */
.hero .hero__copy {
    top: 50%;
    bottom: auto;
    transform: translateY(-50%);
    gap: 14px;
}
.hero .hero__copy > .hero__rating  { margin-bottom: -2px; }
.hero .hero__copy > .hero__title   { margin-bottom: 14px; }
.hero .hero__copy > .hero__actions { margin-top: 4px; }

/* Headline scaled up — it's the composition's anchor now */
.hero .hero__title-line-2 {
    font-size: clamp(2.4rem, 6.4vw, 6rem);
    letter-spacing: -0.04em;
    line-height: 0.92;
}

/* ---- Component 5: CTAs --------------------------------------- */
.hero .btn--glass {
    background: var(--hero-ink);
    color: var(--hero-white);
    border-color: transparent;
    box-shadow:
        0 10px 28px rgba(10,22,40,.45),
        0 1px 0 rgba(255,255,255,.12) inset;
}
.hero .btn--glass:hover {
    background: #1f4d72;
    color: var(--hero-white);
    transform: translateY(-1px);
}
.hero .btn--ghost-light {
    background: transparent;
    color: var(--hero-white);
    border: 1px solid rgba(255,255,255,.55);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    text-shadow: var(--hero-shadow-soft);
}
.hero .btn--ghost-light:hover {
    background: rgba(255,255,255,.08);
    border-color: var(--hero-white);
}

/* In-hero social tiles relocated to the desktop nav — hide if any markup
   remains from older versions. */
.hero__social { display: none; }

/* ---- Google reviews card — relocated from stat strip into the hero ----
   Mirrors the navy filled stat-card design so the rating reads as a
   substantial endorsement, not a small UI flourish. */
.hero__google-badge {
    position: absolute;
    z-index: 3;
    right: clamp(20px, 4vw, 60px);
    bottom: clamp(28px, 4vw, 64px);
    width: clamp(280px, 30vw, 360px);
    display: grid;
    grid-template-columns: 1fr auto;
    grid-auto-rows: auto;
    column-gap: 12px;
    row-gap: 6px;
    padding: 22px 24px 22px;
    border-radius: 16px;
    background: var(--ink);
    border: 1px solid oklch(28% 0.025 245);
    color: var(--hero-white);
    text-decoration: none;
    box-shadow:
        0 18px 44px rgba(10,22,40,0.45),
        0 1px 0 rgba(255,255,255,0.08) inset;
    transition: transform 220ms cubic-bezier(.2,.8,.2,1), box-shadow 200ms ease;
}
.hero__google-badge:hover {
    transform: translateY(-2px);
    box-shadow:
        0 22px 52px rgba(10,22,40,0.55),
        0 1px 0 rgba(255,255,255,0.12) inset;
}

.hero__google-badge__stars {
    grid-column: 1;
    grid-row: 1;
    display: inline-flex;
    align-items: center;
    gap: 3px;
    color: var(--accent);
}
.hero__google-badge__stars svg { width: 14px; height: 14px; display: block; }

.hero__google-badge__google {
    grid-column: 2;
    grid-row: 1;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: rgba(255,255,255,0.6);
    font-size: 0.78rem;
    font-weight: 500;
    letter-spacing: 0.01em;
}
.hero__google-badge__google svg { width: 14px; height: 14px; }

.hero__google-badge__rating {
    grid-column: 1 / -1;
    grid-row: 2;
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    margin-top: 4px;
    font-family: var(--font-display);
    font-size: clamp(2rem, 3vw, 2.5rem);
    font-weight: 700;
    line-height: 1;
    letter-spacing: -0.02em;
    color: var(--hero-white);
}
.hero__google-badge__of {
    font-family: var(--font-body);
    font-size: 0.95rem;
    font-weight: 500;
    color: rgba(255,255,255,0.5);
}

.hero__google-badge__label {
    grid-column: 1 / -1;
    grid-row: 3;
    margin-top: 4px;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.13em;
    text-transform: uppercase;
    color: var(--hero-white);
}

.hero__google-badge__count {
    grid-column: 1 / -1;
    grid-row: 4;
    margin-top: 2px;
    font-size: 0.85rem;
    line-height: 1.45;
    color: rgba(255,255,255,0.6);
}

/* Component 3 (.hero__rating) retired in favour of this badge */
.hero__rating { display: none; }

@media (max-width: 860px) {
    .hero__google-badge {
        right: 16px;
        bottom: 16px;
        width: clamp(220px, 60vw, 280px);
        padding: 16px 18px;
    }
    .hero__google-badge__rating { font-size: 1.7rem; }
    .hero__google-badge__count { font-size: 0.78rem; }
}

/* ---- Strip is now 3 cards across the row -----------------------
   The original 4-col grid had a 1.4fr feature track; with the rating card
   relocated to the hero badge we drop to 3 equal columns. The legacy
   1100px breakpoint forced 2-cols (leaving a card stranded on row 2)
   and the 860px breakpoint had a feature-spans-row rule — both
   overridden here so the 3 cards stay even at every breakpoint above
   the mobile carousel. */
.strip { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 1100px) {
    .strip { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 860px) {
    .strip { grid-template-columns: repeat(3, 1fr); }
    .strip__item--feature { grid-column: auto; }   /* legacy span — no-op now */
}
@media (max-width: 640px) {
    .strip { grid-template-columns: none; }        /* mobile carousel rule applies */
}

/* Mobile hero eyebrow pills — service/location + Google stars.
   Hidden on desktop where the full badge card handles trust signals. */
.hero__eyebrow {
    display: none;
}

@media (max-width: 640px) {
    .hero__eyebrow {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        gap: 7px;
    }

    .hero__eyebrow-chip {
        display: inline-flex;
        align-items: center;
        gap: 7px;
        padding: 6px 13px;
        background: oklch(100% 0 0 / 0.14);
        border: 1px solid oklch(100% 0 0 / 0.28);
        backdrop-filter: blur(16px) saturate(140%);
        -webkit-backdrop-filter: blur(16px) saturate(140%);
        border-radius: var(--r-pill);
        font-size: 0.78rem;
        font-weight: 500;
        letter-spacing: 0.02em;
        color: var(--surface);
        text-decoration: none;
        text-shadow: 0 1px 2px oklch(15% 0.04 245 / 0.35);
        white-space: nowrap;
    }

    .hero__eyebrow-stars {
        display: inline-flex;
        align-items: center;
        gap: 2px;
        color: #FBBC04;
        filter: drop-shadow(0 1px 1px oklch(15% 0.04 245 / 0.4));
    }
}

/* Mobile hero: undo the vertical-centering applied by .hero .hero__copy above.
   That rule has higher specificity (0,2,0) than the copy inside the stage
   breakpoint (0,1,0), so bottom:22px was silently losing. Matching specificity
   here + later source order wins and pins copy to the bottom of the card. */
@media (max-width: 640px) {
    .hero .hero__copy {
        top: auto;
        bottom: 28px;
        transform: none;
    }
    .hero__google-badge { display: none; }
}
