/*
Theme Name: GreenHausDR
Theme URI: https://www.greenhausdr.com
Author: GreenHausDR
Description: Custom luxury real estate theme for GreenHausDR Dominican Republic
Version: 1.9.66
License: Proprietary
Text Domain: greenhausdr
*/

/* === CSS CUSTOM PROPERTIES === */
:root {
    --font-body:             'Montserrat', sans-serif;
    --font-heading:          'Cormorant Garamond', serif;
    --font-display:          'Cormorant Garamond', serif;
    --gold:                  #c4a876;
    --gold-hover:            #b89952;
    --ps-gold:               #c4a35a;
    --dark-green:            #2d3b35;
    --forest-green:          #1e3a2f;
    --navy-blue:             #1a2332;
    --secondary:             #8b7355;
    --primary:               #4a4a4a;
    --text:                  #666;
    --text-dark:             #4a4a4a;
    --text-medium:           #6b7280;
    --text-light:            #9ca3af;
    --white:                 #ffffff;
    --cream:                 #f8f6f3;
    --light:                 #f8f8f6;
    --light-gray:            #f5f5f5;
    --footer-gray:           #f0eeeb;
    --ps-bg:                 #1a1a1a;
    --ps-cream:              #ede6d6;
    --border:                #e5e5e5;
    --border-gray:           #d1d5db;
    --ps-border:             rgba(196,163,90,0.25);
    --ps-divider:            rgba(255,255,255,0.12);
    --container-max:         1400px;
    --container-padding:     40px;
    --header-height:         70px;
    --mobile-header-height:  60px;
    --mobile-padding:        16px;
    --touch-target-min:      44px;
    --partner-hero-h:        clamp(400px, 60vh, 550px);
}

/* === BASE RESET === */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body { font-family: var(--font-body); font-size: 14px; color: var(--text); background: var(--white); -webkit-font-smoothing: antialiased; }
body.no-scroll { overflow: hidden; }
img, video { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; }
button { cursor: pointer; border: none; background: none; font-family: inherit; }
input, select, textarea { font-family: inherit; }

/* === CONTAINER === */
.ghdr-container {
    max-width: var(--container-max);
    margin: 0 auto;
    padding-left: var(--container-padding);
    padding-right: var(--container-padding);
}
@media (max-width: 768px) {
    .ghdr-container { padding-left: var(--mobile-padding); padding-right: var(--mobile-padding); }
}

/* === HEADER / NAVIGATION === */
.header {
    position: fixed; top: 0; left: 0; right: 0;
    padding: 0 40px;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    background: rgba(30, 35, 40, 0.85);
    z-index: 1000;
    height: var(--header-height);
    transition: background 0.3s ease, border 0.3s ease, box-shadow 0.3s ease;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}
.header.scrolled {
    background: #fff;
    border-bottom: 1px solid var(--border);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    box-shadow: 0 2px 20px rgba(0,0,0,0.05);
}
.header.is-transparent:not(.scrolled) {
    background: transparent;
    border-bottom: 1px solid rgba(255,255,255,0.6);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}
/* .header-left holds hamburger + logo. Transform (not padding/margin) shifts
   the cluster toward the left border WITHOUT resizing the grid's first column,
   so the centered nav and the right-side group stay pixel-identical. -40px puts
   the hamburger button flush to the viewport edge (lines ~25px in), OB-style.
   Applies to desktop + mobile (header padding is 40px at both). The logo-to-nav
   gap widens by design, since the nav holds its position. (v1.9.37) */
.header-left { display: flex; align-items: center; height: 100%; transform: translateX(-40px); }
.hamburger-btn {
    display: flex; flex-direction: column; gap: 6px;
    background: none; border: none; cursor: pointer;
    padding: 0 25px; height: 100%;
    align-items: center; justify-content: center;
    transition: background 0.2s ease;
    min-width: var(--touch-target-min); touch-action: manipulation;
}
.hamburger-btn:hover { background: rgba(255,255,255,0.05); }
.header.scrolled .hamburger-btn:hover { background: rgba(0,0,0,0.03); }
.hamburger-btn span {
    width: 24px; height: 2px; background: #fff;
    transition: background 0.3s ease, transform 0.3s ease; border-radius: 1px;
}
.header.scrolled .hamburger-btn span { background: var(--primary); }
.header-logo-section {
    display: flex; align-items: center;
    height: 100%;
    /* padding:0 keeps the logo flush to the hamburger. The old border-right and
       margin-right were removed in v1.9.39: the divider right of the logo is now
       the .header-pipe--large span, whose margins (31px) also preserve the first
       grid column's width so the centered nav stays put. */
    padding: 0;
    transition: background 0.3s ease;
    cursor: pointer; touch-action: manipulation;
}
.header-logo-section:hover { background: rgba(255,255,255,0.05); }
.header.scrolled .header-logo-section:hover { background: rgba(0,0,0,0.02); }
.logo { width: 159.67px; height: 59.33px; object-fit: contain; transition: opacity 0.3s ease, transform 0.3s ease; }
.logo:hover { transform: scale(1.02); }
.logo-light { display: none; }
.header.scrolled .logo-dark  { display: none !important; }
.header.scrolled .logo-light { display: block !important; }
body.is-partners-context .header .logo-dark,
body.is-partners-context .header.scrolled .logo-dark  { display: none !important; }
body.is-partners-context .header .logo-light,
body.is-partners-context .header.scrolled .logo-light { display: block !important; }
/* === HEADER LOGO LANGUAGE GUARD (v1.9.36) === */
/* The dark/light swap above targets .logo-dark/.logo-light with !important and
   NO language scope, so in the light (white/scrolled) state it forced BOTH the
   EN and ES light logos visible -> double logo on the EN header. The en/es
   switch itself lives outside this file (JS/Customizer) via a plain
   display:none that the !important swap overrode. These two rules hide the
   opposite-language logo at higher specificity (0,3,1) than the swap (0,3,0),
   so exactly one logo shows in every state x language. Scoped to
   .header-logo-section so slide-menu / promo logos are untouched. */
body:not(.lang-es) .header-logo-section .logo-es { display: none !important; }
body.lang-es       .header-logo-section .logo-en { display: none !important; }
/* === END HEADER LOGO LANGUAGE GUARD === */
.nav-desktop {
    display: flex; align-items: center; justify-content: center;
    gap: 35px; height: 100%; padding: 0 30px;
}
.nav-desktop a {
    font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase;
    color: #fff; font-weight: 500; transition: color 0.3s; cursor: pointer; text-decoration: none;
}
.header.scrolled .nav-desktop a { color: var(--primary); }
.nav-desktop a:hover { color: var(--secondary); }
.header-right { display: flex; align-items: center; height: 100%; }
.header-search {
    display: flex; align-items: center; justify-content: center;
    height: 100%; padding: 0 20px;
    cursor: pointer;
}
.header-search svg { width: 18px; height: 18px; stroke: #fff; stroke-width: 2; fill: none; transition: stroke 0.3s; }
.header.scrolled .header-search svg { stroke: var(--primary); }
.header-right .get-in-touch {
    display: flex; align-items: center; height: 100%; padding: 0 15px;
    font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase;
    color: #fff; font-weight: 500; text-decoration: none;
    transition: color 0.3s; cursor: pointer;
    white-space: nowrap;
}
.header.scrolled .header-right .get-in-touch { color: var(--primary); }
.header-right .get-in-touch:hover { color: var(--secondary); }
/* === HEADER PIPES (v1.9.39) — OB-style divider spans === */
/* Replace the old border dividers removed this version from .hamburger-btn,
   .header-logo-section, .header-search and .get-in-touch. Two placements:
   .header-pipe--large sits right of the logo; the plain .header-pipe sits
   between the search magnifier and GET IN TOUCH. Colour tracks the header state
   like the old borders (light on the dark/transparent header, grey when scrolled
   white). The --large margins (31px total) also replace the logo's old
   margin-right:30px, so the header's first grid column keeps its width and the
   centered nav does not move. */
.header-pipe {
    width: 1px; height: 30px; flex-shrink: 0;
    background: rgba(255,255,255,0.6);
    transition: background 0.3s ease;
}
.header.scrolled .header-pipe { background: #ccc; }
.header-pipe--large { height: calc(1.38vw + 22.4px); margin: 0 16px 0 15px; }
/* Mobile/hamburger header (<=1200): no logo divider, compact logo box, and a
   left offset on the GET IN TOUCH group — matches OB (v1.9.48) */
@media (max-width: 1200px) {
    .header { padding-right: 20px; } /* GET IN TOUCH closer to the edge (OB); left padding (hamburger) unchanged */
    .header-pipe--large { display: none; }
    .header-logo-section { width: 110px; }
    .header-right-mobile { padding-left: 60px; }
}
/* === END HEADER PIPES === */
.header-icons { display: flex; align-items: center; gap: 8px; padding: 0; }
.header-icon {
    position: relative; width: 38px; height: 38px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    transition: all 0.3s; cursor: pointer;
}
.header-icon.email-icon    { background: var(--secondary); }
.header-icon.whatsapp-icon { background: #888; }
.header-icon.telegram-icon { background: #0088cc; }
.header-icon:hover { transform: scale(1.05); }
.header-icon svg { width: 18px; height: 18px; fill: #fff; }
.header-icon .tooltip {
    position: absolute; top: 50px; right: 0;
    background: #fff; border: 1px solid var(--border);
    padding: 10px 15px; font-size: 12px;
    color: var(--secondary); white-space: nowrap;
    opacity: 0; visibility: hidden; transition: all 0.3s;
    box-shadow: 0 4px 15px rgba(0,0,0,0.1); z-index: 100;
}
.header-icon:hover .tooltip { opacity: 1; visibility: visible; }
.header-right-mobile { display: none; }
@media (max-width: 1200px) {
    .nav-desktop { display: none; }
    .header-search { display: none; }
    .header-right .get-in-touch { display: none; }
    .header-right .header-pipe { display: none; }
    .header-icons { display: none; }
    .header-right-mobile { display: flex; align-items: center; height: 100%; margin-left: auto; }
    .get-in-touch-mobile {
        display: flex; align-items: center; height: 100%; padding: 0 20px 0 30px;
        font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase;
        color: #fff; font-weight: 500; text-decoration: none;
        border-left: 1px solid rgba(255,255,255,0.6);
        transition: color 0.3s ease, border-color 0.3s ease;
        cursor: pointer; min-width: var(--touch-target-min); touch-action: manipulation;
        white-space: nowrap;
    }
    .header.scrolled .get-in-touch-mobile { color: var(--primary); border-left-color: #ccc; }
    .get-in-touch-mobile:hover { background: rgba(255,255,255,0.1); }
    .header.scrolled .get-in-touch-mobile:hover { background: rgba(0,0,0,0.05); color: var(--secondary); }
}

/* === SLIDE-OUT MENU === */
.slide-menu {
    position: fixed; top: 0; left: -450px;
    width: 450px; max-width: 90vw;
    height: 100vh; height: 100dvh;
    background: #fff; z-index: 3000;
    transition: left 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    overflow-y: auto; overflow-x: hidden;
    box-shadow: 5px 0 30px rgba(0,0,0,0.15);
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
}
.slide-menu.active { left: 0; }
.slide-menu-overlay {
    position: fixed; inset: 0; background: rgba(0,0,0,0.5);
    z-index: 2999; opacity: 0; visibility: hidden;
    transition: all 0.3s ease; backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}
.slide-menu-overlay.active { opacity: 1; visibility: visible; }
.slide-menu-header {
    display: flex; align-items: center; gap: 15px;
    padding: 20px 30px; border-bottom: 1px solid var(--border);
    position: sticky; top: 0; background: #fff; z-index: 10;
}
.slide-menu-close {
    display: flex; flex-direction: column; gap: 6px;
    background: none; border: none; cursor: pointer;
    padding: 12px; margin: -12px; border-radius: 4px;
    transition: background 0.2s ease;
    min-width: var(--touch-target-min); min-height: var(--touch-target-min);
    align-items: center; justify-content: center; touch-action: manipulation;
}
.slide-menu-close:hover { background: rgba(0,0,0,0.05); }
.slide-menu-close span { width: 24px; height: 2px; background: var(--primary); }
.slide-menu-logo { height: 59.33px; }
.slide-menu-content { padding: 30px; }
.menu-section { margin-bottom: 25px; }
.menu-section-title { font-size: 13px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: var(--primary); margin-bottom: 20px; }
.menu-section-title.gold { color: var(--gold); }
.menu-links a {
    display: flex; align-items: center;
    padding: 14px 30px 14px 50px;
    font-size: 12px; letter-spacing: 1.5px; text-transform: uppercase;
    color: var(--text); transition: color 0.3s ease, background 0.2s ease, padding-left 0.3s ease;
    cursor: pointer; text-decoration: none;
    min-height: var(--touch-target-min); margin: 0 -30px; touch-action: manipulation;
}
.menu-links a:hover { color: var(--secondary); background: rgba(139,115,85,0.05); padding-left: 55px; }
.menu-divider { height: 1px; background: var(--border); margin: 20px 0; }
.menu-brand-links { margin-bottom: 20px; }
.menu-brand-links span { display: block; padding: 10px 0; font-size: 13px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; cursor: pointer; }
.menu-brand-links span.gold { color: var(--gold); }
.menu-brand-links span.dark { color: var(--primary); }
.menu-social { display: flex; gap: 12px; padding: 20px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.menu-social a { width: 40px; height: 40px; border-radius: 50%; background: var(--secondary); display: flex; align-items: center; justify-content: center; transition: background 0.3s; }
.menu-social a:hover { background: #7a6347; }
.menu-social svg { width: 18px; height: 18px; fill: #fff; }
.menu-lang-toggle { display: flex; align-items: center; gap: 10px; margin-top: 20px; }
.lang-option { font-size: 13px; letter-spacing: 1px; color: var(--text); cursor: pointer; transition: color 0.3s; }
.lang-option.active { color: var(--text-dark); font-weight: 600; }
.lang-option:hover { color: var(--secondary); }
.lang-separator { color: var(--border); }
.menu-promo { display: flex; margin-top: 25px; border: none; border-radius: 6px; overflow: hidden; box-shadow: 0 8px 28px rgba(0,0,0,0.12), 0 2px 8px rgba(0,0,0,0.06); }
.menu-promo-logo { width: 130px; min-height: 130px; background: var(--dark-green); display: flex; align-items: center; justify-content: center; padding: 10px; flex-shrink: 0; }
.menu-promo-logo.menu-promo-logo-light { background: #fff; border-right: 1px solid var(--border); }
.menu-promo-logo img { width: 100%; height: 100%; object-fit: contain; }
.menu-promo-content { padding: 15px 20px; flex: 1; background: #fff; }
.menu-promo-title { font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--secondary); margin-bottom: 5px; }
.menu-promo-subtitle { font-family: 'Cormorant Garamond', serif; font-size: 18px; color: var(--primary); margin-bottom: 3px; }
.menu-promo-coming { font-style: italic; font-size: 13px; color: var(--text); margin-bottom: 10px; }
.menu-promo-link { font-size: 10px; letter-spacing: 1px; text-transform: uppercase; color: var(--primary); text-decoration: underline; cursor: pointer; }

/* === HERO SECTION === */
.home-hero {
    position: relative;
    z-index: 0;
    height: 100vh;
    min-height: 700px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    overflow: hidden;
    padding: 0 60px;
    background-color: #000;
    contain: layout style;
    isolation: isolate;
}
/* Dark gradient overlay — left heavy, fades right */
.home-hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(to right, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.3) 100%);
    z-index: 1;
}

.home-hero-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
    pointer-events: none;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}
body.hero-video-playing .home-hero-video { will-change: transform; }
@media (prefers-reduced-motion: reduce) {
    .home-hero-video { animation-play-state: paused; }
}

/* Play button — shown only when autoplay is blocked */
.hero-video-play {
    position: absolute;
    inset: auto auto 30px 30px;
    z-index: 3;
    display: none;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 14px 20px;
    min-height: 48px;
    border: 1px solid rgba(255,255,255,0.6);
    background: rgba(0,0,0,0.55);
    color: #fff;
    font-size: 13px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    border-radius: 4px;
    cursor: pointer;
    touch-action: manipulation;
}
body.hero-video-needs-play .hero-video-play { display: flex; }
body.hero-video-playing    .hero-video-play { display: none !important; }

/* Hero text */
.home-hero-content {
    position: relative;
    z-index: 2;
    color: #fff;
    max-width: 700px;
    padding-top: 0;
}
.home-hero-welcome {
    font-family: 'Cormorant Garamond', serif;
    font-size: clamp(36px, 5vw, 52px);
    font-weight: 400;
    line-height: 1.2;
    margin-bottom: 5px;
}
.home-hero-tagline {
    font-family: 'Cormorant Garamond', serif;
    font-size: clamp(28px, 4vw, 42px);
    font-weight: 300;
    font-style: italic;
    color: rgba(255,255,255,0.9);
    margin-bottom: 30px;
}
.home-hero-desc {
    font-size: 15px;
    line-height: 1.9;
    font-weight: 300;
    opacity: 0.95;
    max-width: 550px;
}

/* Mobile hero */
@media (max-width: 768px) {
    .home-hero {
        padding: 0 var(--mobile-padding);
        min-height: 100dvh;
        justify-content: flex-start;
        padding-top: calc(var(--mobile-header-height) + env(safe-area-inset-top, 0px) + 24px);
        padding-bottom: 24px;
    }
    .home-hero-welcome  { font-size: clamp(28px, 8vw, 36px); }
    .home-hero-tagline  { font-size: clamp(20px, 6vw, 28px); }
    .home-hero-desc     { font-size: 14px; line-height: 1.7; }
}

/* === PROPERTY SEARCH — OB-style dark bar === */
.property-search {
    --ps-bg:     #1a1a1a;
    --ps-gold:   #c4a35a;
    --ps-cream:  #ede6d6;
    --ps-border: rgba(196,163,90,0.25);
    --ps-divider:rgba(255,255,255,0.12);

    position: relative;
    left: 0; right: 0;
    z-index: 25;
    width: 100%;
    margin-top: -45px;
    margin-bottom: 0;
    opacity: 1;
    pointer-events: auto;
    transition: opacity 0.4s ease;
    box-sizing: border-box;
    isolation: isolate;
}
.property-search.is-small {
    position: fixed;
    bottom: 24px;
    margin-top: 0;
    z-index: 20050;
}

.property-search__form {
    position: relative; z-index: 1;
    display: flex; align-items: center;
    height: 90px; width: 95%; max-width: 1600px;
    margin: 0 auto; padding: 10px 40px;
    background-color: var(--ps-bg);
    border: 1px solid var(--ps-border);
    box-shadow: 0 10px 40px rgba(0,0,0,0.45);
    transition: width 0.4s ease, height 0.4s ease, padding 0.4s ease;
    box-sizing: border-box;
}
.property-search__fields { display: flex; align-items: center; width: 100%; }
.property-search__field {
    position: relative; display: flex; flex-direction: column;
    justify-content: center; height: 40px; padding: 2px 24px;
    flex: 4 0 auto;
    transition: height 0.4s ease, padding 0.4s ease;
}
.property-search__field:first-of-type { padding-left: 0; }
.property-search__field:not(:first-of-type)::before {
    content: ''; position: absolute; left: 0; top: 50%;
    transform: translateY(-50%);
    width: 1px; height: 60%;
    background-color: var(--ps-divider);
}
.property-search__field--destinations { flex: 9 0 auto; }
.property-search__field label {
    font-family: 'Montserrat', sans-serif; font-size: 10px;
    font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase;
    color: var(--ps-cream); opacity: 0.55; line-height: 1; margin-bottom: 8px;
    transition: opacity 0.4s ease 0.4s, height 0.3s ease, margin 0.3s ease;
    overflow: hidden;
}
.property-search__value {
    font-family: 'Montserrat', sans-serif; font-size: 13px;
    font-weight: 500; letter-spacing: 0.06em; text-transform: uppercase;
    color: var(--ps-gold); line-height: 1.28;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    cursor: pointer; transition: opacity 0.4s ease, font-size 0.4s ease;
}
.property-search__value:hover { opacity: 0.6; }

/* Buttons container */
.property-search__buttons {
    display: flex; flex-direction: row;
    flex: 0 0 auto; gap: 8px;
    align-items: stretch; overflow: visible; padding-right: 0;
}
.property-search__buttons::before { content: none !important; }
.property-search__field.property-search__buttons {
    flex-direction: row !important;
    height: auto; align-self: stretch; align-items: stretch;
    padding: 4px 0 4px 16px; margin-left: 8px; overflow: visible;
}
.property-search__btn {
    display: flex; align-items: center; justify-content: center;
    flex: 1 1 0; min-width: 130px; align-self: stretch;
    padding: 0 24px; background-color: var(--ps-gold);
    color: #1a1a1a !important;
    font-family: 'Montserrat', sans-serif; font-size: 11px;
    font-weight: 600; letter-spacing: 0.12em; line-height: 1;
    text-align: center; text-transform: uppercase; text-decoration: none;
    cursor: pointer; border: none; box-sizing: border-box;
    transition: opacity 0.4s ease, background-color 0.3s ease;
}
a.property-search__btn,
a.property-search__btn[data-page],
.property-search .property-search__btn { color: #1a1a1a !important; }
.property-search__btn:hover { opacity: 0.75; }

/* Trigger button */
.property-search__trigger {
    display: flex; flex-direction: column; justify-content: center;
    width: 100%; height: 100%; padding: 2px 36px 2px 24px;
    background: transparent; border: none; cursor: pointer;
    text-align: left; font: inherit; color: inherit;
    position: relative; transition: background 0.2s ease;
}
.property-search__field--dropdown:first-of-type .property-search__trigger { padding-left: 0; }
.property-search__trigger:hover,
.property-search__trigger:focus-visible { background: rgba(196,163,90,0.06); outline: none; }
.property-search__trigger > label,
.property-search__trigger > .property-search__value { pointer-events: none; }

.property-search__chevron {
    position: absolute; right: 14px; top: 50%;
    transform: translateY(-50%);
    color: var(--ps-gold); opacity: 0.65;
    transition: transform 0.25s ease, opacity 0.25s ease;
    pointer-events: none;
}
.property-search__field--dropdown.is-open .property-search__chevron {
    transform: translateY(-50%) rotate(180deg); opacity: 1;
}

/* Dropdown panels */
.ps-panel {
    position: absolute; left: 0; right: 0;
    bottom: calc(100% + 12px); top: auto;
    background: var(--ps-bg);
    border: 1px solid var(--ps-border);
    box-shadow: 0 -20px 40px rgba(0,0,0,0.55);
    padding: 10px 0; max-height: 360px; overflow-y: auto;
    opacity: 0; visibility: hidden;
    transform: translateY(6px);
    transition: opacity 0.2s ease, transform 0.2s ease, visibility 0s linear 0.2s;
    z-index: 10;
}
.property-search__field--dropdown.is-open .ps-panel {
    opacity: 1; visibility: visible; transform: translateY(0);
    transition: opacity 0.25s ease, transform 0.25s ease, visibility 0s linear 0s;
}
.ps-panel__group-label {
    font-family: 'Montserrat', sans-serif; font-size: 10px;
    font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase;
    color: var(--ps-cream); opacity: 0.4; padding: 8px 24px 6px;
}
.ps-panel__item {
    display: block; width: 100%; padding: 11px 24px;
    background: transparent; border: none; text-align: left;
    font-family: 'Montserrat', sans-serif; font-size: 13px;
    font-weight: 500; letter-spacing: 0.04em;
    color: var(--ps-cream); cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
.ps-panel__item:hover,
.ps-panel__item:focus-visible { background: rgba(196,163,90,0.1); color: var(--ps-gold); outline: none; }
.ps-panel__item[aria-selected="true"] { color: var(--ps-gold); background: rgba(196,163,90,0.06); }
.ps-panel__item[aria-selected="true"]::after { content: '✓'; float: right; color: var(--ps-gold); opacity: 0.8; }

/* === INTERIOR SEARCH BAR POSITIONING (v1.9.42) — Option A ===
   The shared #propertySearch bar is rendered in header.php on NON-home pages
   only. It inherits the homepage's .property-search styling automatically
   (colours, fixed-bottom position, upward dropdown). These rules just hide it
   until the magnifier adds .is-open, and are scoped to body:not(.home) so the
   homepage bar is never touched. Desktop only (>=1200), matching the magnifier
   and the homepage's desktop bar; hidden below that. No scroll-morph here. */
@media (min-width: 1200px) {
    body:not(.home) #propertySearch {
        opacity: 0; visibility: hidden;
        transform: translate(-50%, 24px);
        pointer-events: none;
        transition: opacity 0.3s ease, transform 0.3s ease, visibility 0s linear 0.3s;
    }
    body:not(.home) #propertySearch.is-open {
        opacity: 1; visibility: visible;
        transform: translate(-50%, 0);
        pointer-events: auto;
        transition: opacity 0.3s ease, transform 0.3s ease, visibility 0s linear 0s;
    }
}
@media (max-width: 1199px) {
    body:not(.home) #propertySearch { display: none !important; }
}
/* === END INTERIOR SEARCH BAR POSITIONING === */

/* Mobile trigger (hidden on desktop) */
.property-search__mobile-trigger { display: none; }

/* Mobile — fixed pill */
@media (max-width: 1199px) {
    .property-search {
        position: fixed; left: 0; right: 0; bottom: 20px;
        margin-top: 0; z-index: 20050;
        transition: bottom 0.3s ease, opacity 0.3s ease;
    }
    .property-search.is-small { margin-top: 0; bottom: 0; }
    .property-search__form {
        flex-direction: row; align-items: center;
        width: 92%; max-width: 560px; height: 56px;
        margin: 0 auto; padding: 0;
        background-color: var(--ps-bg);
        border: 1px solid var(--ps-border);
        box-shadow: 0 8px 24px rgba(0,0,0,0.4);
        cursor: pointer;
    }
    .property-search__fields { flex-direction: row; align-items: stretch; height: 100%; }
    .property-search__field--dropdown[data-dropdown="type"],
    .property-search__field--dropdown[data-dropdown="bedrooms"],
    .property-search__field.property-search__buttons { display: none; }
    .property-search__field--destinations {
        flex: 1 1 auto; height: 100%; padding: 0 16px 0 24px;
        border-bottom: none; justify-content: center;
    }
    .property-search__field--destinations .property-search__chevron { display: none; }
    .property-search__mobile-trigger {
        display: flex; align-items: center; justify-content: center;
        width: 56px; height: 56px; flex-shrink: 0;
        border-left: 1px solid var(--ps-divider);
        color: var(--ps-gold);
    }
    .property-search__mobile-trigger .close { display: none; }
}

/* ================================================================
   HOMEPAGE SECTIONS — reconstructed
================================================================ */

/* Utility */
.btn-outline-gold {
    display: inline-block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    border: 1px solid #9a8a73;
    padding: 14px 28px;
    text-decoration: none;
    transition: background 0.3s ease, color 0.3s ease;
}
.btn-outline-gold:hover {
    background: #9a8a73;
    color: #fff;
}

/* === ABOUT === */
.home-about {
    background: var(--cream, #fbf9f6);
    padding: 96px 0;
}
.home-about__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
    display: grid;
    grid-template-columns: 1fr 480px;
    gap: 80px;
    align-items: center;
}
.home-about__label {
    display: block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #9a8a73;
    margin-bottom: 24px;
}
.home-about__heading {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(28px, 2.8vw, 44px);
    font-weight: 400;
    font-style: italic;
    line-height: 1.2;
    color: var(--primary, #2d3b35);
    margin: 0 0 24px;
}
.home-about__body {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.8rem;
    font-weight: 400;
    line-height: 1.9;
    color: #555;
    margin: 0 0 36px;
}
.home-about__image img {
    width: 100%;
    height: auto;
    display: block;
}
@media (max-width: 1024px) {
    .home-about__inner {
        grid-template-columns: 1fr;
        gap: 48px;
    }
}
@media (max-width: 768px) {
    .home-about { padding: 64px 0; }
    .home-about__inner { padding: 0 24px; }
}

/* === SECTION BREAK === */
.home-section-break {
    background: var(--cream, #fbf9f6);
    padding: 32px 0;
}
.home-section-break__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
}
.home-section-break__rule {
    border: none;
    border-top: 1px solid #e7e3db;
    margin: 0;
}
@media (max-width: 768px) {
    .home-section-break__inner { padding: 0 24px; }
}

/* === DISCOVER CAROUSEL === */
.home-discover {
    background: var(--cream, #fbf9f6);
    padding: 80px 0;
    overflow: hidden;
}
.home-discover__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
}
.home-discover__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 40px;
}
.home-discover__title {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0;
}
.home-discover__arrows {
    display: flex;
    gap: 8px;
}
.home-discover__arrow {
    background: none;
    border: 1px solid #e7e3db;
    width: 36px;
    height: 36px;
    font-size: 18px;
    cursor: pointer;
    color: var(--primary, #2d3b35);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s ease;
}
.home-discover__arrow:hover { background: #e7e3db; }
.home-discover__grid {
    display: flex;
    gap: 24px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 8px;
}
.home-discover__grid::-webkit-scrollbar { display: none; }
.home-discover__card {
    flex: 0 0 calc(50% - 12px);
    scroll-snap-align: start;
    text-decoration: none;
    display: block;
    color: inherit;
    background: var(--cream, #fbf9f6);
    padding-bottom: 24px;
}
.home-discover__image-wrap {
    overflow: hidden;
    aspect-ratio: 5/3;
}
.home-discover__image-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.5s ease;
}
.home-discover__card:hover .home-discover__image-wrap img { transform: scale(1.03); }
.home-discover__card-body {
    padding: 24px 0 0;
}
.home-discover__card-title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(18px, 1.6vw, 24px);
    font-weight: 400;
    color: var(--primary, #2d3b35);
    margin: 0 0 12px;
}
.home-discover__card-desc {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.75rem;
    line-height: 1.8;
    color: #666;
    margin: 0 0 16px;
}
.home-discover__card-link {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-underline-offset: 4px;
    text-decoration-color: #9a8a73;
}
@media (max-width: 768px) {
    .home-discover { padding: 56px 0; }
    .home-discover__inner { padding: 0 24px; }
    .home-discover__card { flex: 0 0 80vw; }
}

/* === HOME VALUATION HERO === */
.home-val {
    position: relative;
    min-height: 420px;
    overflow: hidden;
    border-top: 1px solid #e7e3db;
    border-bottom: 1px solid #e7e3db;
}
.home-val__bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}
.home-val__overlay {
    position: absolute;
    inset: 0;
    background: rgba(20, 30, 25, 0.52);
    z-index: 1;
}
.home-val__inner {
    position: relative;
    z-index: 2;
    max-width: 1320px;
    margin: 0 auto;
    padding: 80px 48px;
    display: flex;
    align-items: flex-end;
    min-height: 420px;
}
.home-val__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(22px, 2.6vw, 40px);
    font-weight: 300;
    font-style: italic;
    line-height: 1.25;
    color: #fff;
    margin: 0 0 20px;
    max-width: 680px;
}
.home-val__desc {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.75rem;
    line-height: 1.85;
    color: rgba(255,255,255,0.82);
    margin: 0 0 32px;
    max-width: 540px;
}
.home-val__cta {
    display: inline-block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #fff;
    text-decoration: underline;
    text-underline-offset: 6px;
    text-decoration-color: #9a8a73;
    transition: opacity 0.3s ease;
}
.home-val__cta:hover { opacity: 0.7; }
@media (max-width: 768px) {
    .home-val__inner { padding: 56px 24px; }
}

/* === HOME PARTNERS HERO text styles === */
.ghdr-partners-hero__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.65) 0%, rgba(0,0,0,0.1) 60%);
    z-index: 1;
}
.ghdr-partners-hero__eyebrow {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 16px;
}
.ghdr-partners-hero__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(32px, 3.8vw, 56px);
    font-weight: 300;
    font-style: italic;
    line-height: 1.1;
    color: #fff;
    margin: 0 0 20px;
}
.ghdr-partners-hero__text {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.75rem;
    line-height: 1.85;
    color: rgba(255,255,255,0.82);
    max-width: 540px;
    margin: 0 0 28px;
}
.ghdr-partners-hero__cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #fff;
    text-decoration: underline;
    text-underline-offset: 6px;
    text-decoration-color: #9a8a73;
    transition: opacity 0.3s ease;
}
.ghdr-partners-hero__cta:hover { opacity: 0.7; }
.ghdr-partners-hero__cta-arrow { flex-shrink: 0; }

/* === HOME TEAM === */
.home-team {
    background: var(--cream, #fbf9f6);
    padding: 96px 0 80px;
    overflow: hidden;
}
.home-team__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
}
.home-team__header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 40px;
    margin-bottom: 24px;
}
.home-team__headtext { flex: 1 1 auto; min-width: 0; }
.home-team__label {
    display: block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #9a8a73;
    margin-bottom: 20px;
}
.home-team__intro {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(28px, 3.5vw, 44px);
    font-weight: 400;
    line-height: 1.25;
    color: var(--primary, #2d3b35);
    max-width: 900px;
    margin: 0;
    letter-spacing: 0.01em;
}
.home-team__arrows {
    display: none; /* desktop uses .home-team__nav; re-shown for mobile in the max-width:768 block */
    gap: 8px;
    margin: 24px 0 32px;
}
/* OB-style desktop nav: larger bare chevrons, inline-right of the heading */
.home-team__nav {
    display: flex;
    gap: 14px;
    flex: 0 0 auto;
}
.home-team__nav-btn {
    background: none;
    border: none;
    padding: 4px;
    cursor: pointer;
    color: var(--primary, #2d3b35);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: opacity 0.2s ease;
}
.home-team__nav-btn:hover { opacity: 0.5; }
.home-team__nav-btn .flickity-button-icon {
    width: 26px;
    height: 26px;
    display: block;
}
.home-team__nav-btn .arrow { fill: currentColor; }
.home-team__arrow {
    background: none;
    border: 1px solid #e7e3db;
    width: 36px;
    height: 36px;
    font-size: 18px;
    cursor: pointer;
    color: var(--primary, #2d3b35);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s ease;
}
.home-team__arrow:hover { background: #e7e3db; }
.home-team__carousel {
    display: flex;
    gap: 24px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 8px;
}
.home-team__carousel::-webkit-scrollbar { display: none; }
.home-team__carousel { cursor: grab; }
.home-team__carousel.is-dragging {
    cursor: grabbing;
    scroll-snap-type: none;
    user-select: none;
}
.home-team__carousel img { -webkit-user-drag: none; user-select: none; }

/* Team Cards */
.team-card {
    flex: 0 0 calc(25% - 18px);
    scroll-snap-align: start;
    background: hsla(33, 44%, 95%, 0.5);
    padding: 30px 20px 24px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    box-sizing: border-box;
    box-shadow: 0 2px 12px rgba(0,0,0,0.07), 0 1px 3px rgba(0,0,0,0.04);
    border: 1px solid rgba(224,218,207,0.6);
}
.team-card__photo-wrap {
    width: 160px;
    height: 160px;
    border-radius: 50%;
    overflow: hidden;
    margin: 0 auto 20px;
    flex-shrink: 0;
    background: #f0ece6;
}
.team-card__photo-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.team-card__name {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(18px, 1.4vw, 22px);
    font-weight: 400;
    color: var(--primary, #2d3b35);
    margin: 0 0 6px;
    width: 100%;
}
.team-card__title {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 9px;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #9a8a73;
    line-height: 1.6;
    margin: 0;
    width: 100%;
    padding-bottom: 20px;
    border-bottom: 1px solid #e0dacf;
}
.team-card__bio {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(13px, 1vw, 15px);
    line-height: 1.6;
    color: #4a4a4a;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;
    line-clamp: 4;
    overflow: hidden;
    text-overflow: ellipsis;
    margin: 16px 0 16px;
    flex: 0 0 auto;
    text-align: left;
    width: 100%;
}
.team-card__read-more {
    display: inline-block;
    background: none;
    border: none;
    padding: 0 0 7px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-underline-offset: 8px;
    text-decoration-color: #c4a876;
    cursor: pointer;
    margin-bottom: 20px;
    transition: opacity 0.2s;
    align-self: flex-start;
}
.team-card__read-more:hover { opacity: 0.5; }
.team-card__links {
    display: flex;
    gap: 12px;
    align-items: center;
    align-self: flex-start;
    margin-top: auto;
    flex-wrap: wrap;
}
.team-card__links a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    background: #b19b81;
    border-radius: 50%;
    color: #fff;
    transition: opacity 0.2s;
    flex-shrink: 0;
}
.team-card__links a:hover { opacity: 0.6; }
.team-card__links svg {
    width: 14px;
    height: 14px;
    display: block;
    fill: #fff;
}
@media (max-width: 768px) {
    .home-team { padding: 56px 0; }
    .home-team__inner { padding: 0 24px; }
    .team-card {
        flex: 0 0 72vw;
        max-width: 300px;
    }
    /* Preserve original mobile layout (desktop OB-nav change must not affect mobile) */
    .home-team__header { display: block; margin-bottom: 16px; }
    .home-team__nav { display: none; }
    .home-team__arrows { display: flex; }
}

/* Team Modals */
.team-modal {
    position: fixed;
    inset: 0;
    z-index: 9999;
}
.team-modal[hidden] { display: none; }
.team-modal__overlay {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.45);
    cursor: pointer;
}
.team-modal__panel {
    position: absolute;
    right: 0;
    top: 0;
    height: 100%;
    width: min(560px, 100vw);
    background: var(--cream, #fbf9f6);
    overflow-y: auto;
    padding: 60px 48px 48px;
    overscroll-behavior: contain;
    z-index: 1;
}
.team-modal__close {
    position: absolute;
    top: 16px;
    right: 16px;
    background: none;
    border: none;
    width: 32px;
    height: 32px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--primary, #2d3b35);
    padding: 0;
    transition: opacity 0.2s;
}
.team-modal__close:hover { opacity: 0.5; }
.team-modal__close svg { width: 14px; height: 14px; }
.team-modal__photo {
    width: 120px;
    height: 120px;
    border-radius: 50%;
    overflow: hidden;
    margin-bottom: 20px;
}
.team-modal__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.team-modal__name {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(22px, 2vw, 28px);
    font-weight: 400;
    color: var(--primary, #2d3b35);
    margin: 0 0 8px;
}
.team-modal__title {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.65rem;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 20px;
    line-height: 1.6;
}
.team-modal__links {
    display: flex;
    gap: 12px;
    margin-bottom: 28px;
}
.team-modal__links a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    color: var(--primary, #2d3b35);
    transition: opacity 0.2s;
}
.team-modal__links a:hover { opacity: 0.5; }
.team-modal__links svg {
    width: 18px;
    height: 18px;
    display: block;
}
.team-modal__bio p {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.78rem;
    line-height: 1.9;
    color: #555;
    margin: 0 0 16px;
}
.team-modal__bio p:last-child { margin-bottom: 0; }
@media (max-width: 768px) {
    .team-modal__panel {
        width: 100vw;
        padding: 48px 24px 32px;
    }
}

/* === PILLAR LINKS — GH Travel / GH Circle === */
.pillar-links {
    display: flex;
    min-height: 640px;
    border-top: 1px solid #e7e3db;
}
.pillar-link {
    flex: 1 1 50%;
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    padding: 80px 48px;
    text-align: center;
    text-decoration: none;
    color: var(--primary, #2d3b35);
    overflow: hidden;
    border-right: 1px solid #e7e3db;
}
.pillar-link:last-child { border-right: none; }
.pillar-link__title {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 48px;
    position: relative;
    z-index: 2;
}
.pillar-link__image {
    width: 180px;
    height: 180px;
    margin-bottom: 40px;
    position: relative;
    z-index: 2;
    transition: opacity 0.5s ease;
}
.pillar-link__image img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}
.pillar-link__text {
    position: relative;
    z-index: 2;
    max-width: 340px;
}
.pillar-link__text p {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(16px, 1.4vw, 22px);
    font-weight: 400;
    line-height: 1.55;
    color: var(--primary, #2d3b35);
    text-align: center;
    margin: 0;
}
.pillar-link__cta {
    display: block;
    margin-top: 28px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-underline-offset: 4px;
    text-decoration-color: #9a8a73;
    position: relative;
    z-index: 2;
}
.pillar-link__cta--soon em {
    font-style: normal;
    color: #9a8a73;
}
.pillar-link__rollover {
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity 0.5s ease;
    z-index: 1;
}
.pillar-link:hover .pillar-link__rollover,
.pillar-link--circle:hover .pillar-link__rollover { opacity: 1; }
.pillar-link__rollover-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.pillar-link__rollover-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.45);
}
.pillar-link:hover .pillar-link__image { opacity: 0; }

.pillar-link:hover .pillar-link__title,
.pillar-link:hover .pillar-link__text p,
.pillar-link:hover .pillar-link__cta {
    color: #fff;
    text-decoration-color: rgba(255,255,255,0.5);
}
@media (max-width: 768px) {
    .pillar-links { flex-direction: column; min-height: auto; }
    .pillar-link { padding: 56px 24px; border-right: none; border-bottom: 1px solid #e7e3db; }
    .pillar-link:last-child { border-bottom: none; }
}

/* === GH EDIT — Market Intelligence homepage === */
.gh-edit {
    background: var(--cream, #fbf9f6);
    padding: 96px 0;
    border-top: 1px solid #e7e3db;
}
.gh-edit__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
    display: grid;
    grid-template-columns: 260px 1fr;
    gap: 64px;
    align-items: start;
}
.gh-edit__eyebrow {
    display: block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #9a8a73;
    margin-bottom: 16px;
}
.gh-edit__heading {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(24px, 2.4vw, 36px);
    font-weight: 400;
    font-style: italic;
    color: var(--primary, #2d3b35);
    margin: 0 0 20px;
    line-height: 1.2;
}
.gh-edit__desc {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.75rem;
    line-height: 1.85;
    color: #666;
    margin: 0 0 32px;
}
.gh-edit__view-all {
    display: inline-block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-underline-offset: 4px;
    text-decoration-color: #9a8a73;
    transition: opacity 0.2s;
}
.gh-edit__view-all:hover { opacity: 0.6; }
@media (max-width: 1024px) {
    .gh-edit__inner { grid-template-columns: 1fr; gap: 48px; }
}
@media (max-width: 768px) {
    .gh-edit { padding: 56px 0; }
    .gh-edit__inner { padding: 0 24px; }
}

/* === PARTNERS LISTING PAGE === */
/* Hero */
.ptnrs-hero {
    position: relative;
    height: 100vh;
    min-height: 560px;
    overflow: hidden;
}
.ptnrs-hero__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}
.ptnrs-hero__video--desktop { display: block; }
.ptnrs-hero__video--mobile  { display: none; }
@media (max-width: 768px) {
    .ptnrs-hero__video--desktop { display: none; }
    .ptnrs-hero__video--mobile  { display: block; }
}
.ptnrs-hero__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.65) 0%, rgba(0,0,0,0.15) 60%);
    z-index: 1;
}
.ptnrs-hero__content {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 2;
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px 80px;
}
.ptnrs-hero__label {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 16px;
}
.ptnrs-hero__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(32px, 3.8vw, 56px);
    font-weight: 300;
    font-style: italic;
    line-height: 1.1;
    color: #fff;
    margin: 0 0 20px;
}
.ptnrs-hero__desc {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.75rem;
    line-height: 1.85;
    color: rgba(255,255,255,0.82);
    max-width: 540px;
    margin: 0 0 28px;
}
.ptnrs-hero__cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #fff;
    text-decoration: underline;
    text-underline-offset: 6px;
    text-decoration-color: #9a8a73;
    transition: opacity 0.3s ease;
}
.ptnrs-hero__cta:hover { opacity: 0.7; }
@media (max-width: 768px) {
    .ptnrs-hero__content { padding: 0 24px 56px; }
}

/* Partners Intro */
.ptnrs-intro {
    background: var(--cream, #fbf9f6);
    padding: 72px 48px;
    max-width: 1320px;
    margin: 0 auto;
    border-bottom: 1px solid #e7e3db;
}
.ptnrs-intro__label {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 28px;
    display: block;
}
.ptnrs-intro__desc {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(20px, 2vw, 30px);
    font-weight: 400;
    line-height: 1.45;
    color: var(--primary, #2d3b35);
    margin: 0;
    max-width: 900px;
}
@media (max-width: 768px) {
    .ptnrs-intro { padding: 56px 24px; }
}

/* Partners grid label */
/* Partners page — cream background throughout */
.ghdr-partners-page,
#ghdr-partners {
    background: var(--cream, #fbf9f6);
}

.ptnrs-grid-label {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #9a8a73;
    padding: 48px 48px 24px;
    max-width: 1320px;
    margin: 0 auto;
    width: 100%;
    box-sizing: border-box;
}
@media (max-width: 768px) {
    .ptnrs-grid-label { padding: 40px 24px 20px; }
}

/* Partner card content styles */
.ptnrs-card__content {
    padding: 24px;
    background: var(--cream, #fbf9f6);
}
.ptnrs-card__category {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 9px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 8px;
}
.ptnrs-card__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: 20px;
    font-weight: 400;
    color: var(--primary, #2d3b35);
    margin: 0 0 10px;
}
.ptnrs-card__desc {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.72rem;
    line-height: 1.8;
    color: #666;
    margin: 0 0 16px;
}
.ptnrs-card__link {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-underline-offset: 4px;
    text-decoration-color: #9a8a73;
}

/* Partners Become a Partner CTA */
.ptnrs-cta {
    background: var(--cream, #fbf9f6);
    border-top: 1px solid #e7e3db;
    display: grid;
    grid-template-columns: 1fr 1fr;
    min-height: 400px;
}
.ptnrs-cta__content {
    padding: 80px 48px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.ptnrs-cta__eyebrow {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 16px;
}
.ptnrs-cta__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(24px, 2.4vw, 36px);
    font-weight: 400;
    font-style: italic;
    color: var(--primary, #2d3b35);
    margin: 0 0 20px;
    line-height: 1.2;
}
.ptnrs-cta__desc {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.75rem;
    line-height: 1.85;
    color: #666;
    margin: 0 0 32px;
    max-width: 460px;
}
.ptnrs-cta__btn {
    display: inline-block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    border: 1px solid #9a8a73;
    padding: 14px 28px;
    text-decoration: none;
    align-self: flex-start;
    transition: background 0.3s ease, color 0.3s ease;
}
.ptnrs-cta__btn:hover {
    background: #9a8a73;
    color: #fff;
}
.ptnrs-cta__image {
    overflow: hidden;
}
.ptnrs-cta__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
@media (max-width: 1024px) {
    .ptnrs-cta { grid-template-columns: 1fr; }
    .ptnrs-cta__image { min-height: 300px; }
}
@media (max-width: 768px) {
    .ptnrs-cta__content { padding: 56px 24px; }
}

/* ================================================================
   END HOMEPAGE + PARTNERS SECTIONS
================================================================ */

/* === FOOTER — OB Private column grid structure === */

/* Base */
.ghdr-footer {
    background: var(--cream, #fbf9f6);
    color: var(--primary, #2d3b35);
    border-top: 1px solid #e7e3db;
}

/* ── Main body grid ─────────────────────────────── */
.ghdr-footer__main {
    border-bottom: 1px solid #e7e3db;
}

.ghdr-footer__inner {
    display: grid;
    grid-template-columns: 200px repeat(4, 1fr);
    align-items: start;
    max-width: 1320px;
    margin: 0 auto;
    padding: 72px 48px;
}

/* ── Logo column ────────────────────────────────── */
.ghdr-footer__logo-col {
    padding-right: 48px;
    border-right: 1px solid #e7e3db;
    display: flex;
    flex-direction: column;
    gap: 28px;
}

.ghdr-footer__logo-link { display: inline-block; }
.ghdr-footer__logo      { width: 150px; height: auto; display: block; }
.ghdr-footer__sitelock  { width: 140px; height: auto; display: block; }

/* ── Content pillars ────────────────────────────── */
.ghdr-footer__pillar {
    padding: 0 32px 0 40px;
    border-right: 1px solid #e7e3db;
}

.ghdr-footer__pillar--last {
    border-right: none;
    padding-right: 0;
}

/* Pillar title */
.ghdr-footer__pillar-title {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 24px;
    line-height: 1.4;
}

/* Primary pillar title (Property Services) — dark, matching OB Property */
.ghdr-footer__pillar-title--primary {
    color: var(--primary, #2d3b35);
}

/* Links */
.ghdr-footer__pillar-links {
    list-style: none;
    margin: 0;
    padding: 0;
}

.ghdr-footer__pillar-links li {
    margin: 0 0 10px;
}

.ghdr-footer__pillar-links a {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    text-decoration: none;
    line-height: 1.8;
    transition: opacity 0.2s ease;
}

.ghdr-footer__pillar-links a:hover { opacity: 0.5; }

/* NAR + UAF cert in last column */
.ghdr-footer__nar-link {
    display: block;
    margin-top: 28px;
    transition: opacity 0.25s ease;
}
.ghdr-footer__nar-link:hover { opacity: 0.75; }
.ghdr-footer__nar-svg { width: 150px; height: auto; display: block; }

.ghdr-footer__uaf-cert { margin-top: 20px; }
.ghdr-footer__uaf-cert img { width: 64px; height: auto; display: block; }
.ghdr-footer__uaf-cert img:hover { opacity: 0.8; }

/* ── Social row ─────────────────────────────────── */
.ghdr-footer__social-row {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 28px;
    padding: 48px 48px;
    border-bottom: 1px solid #e7e3db;
    max-width: 1320px;
    margin: 0 auto;
    width: 100%;
    box-sizing: border-box;
}

.ghdr-footer__social-icons {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    justify-content: center;
}

.ghdr-footer__social-icons a,
.ghdr-footer__social-icons .ghdr-footer__wechat-trigger {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: #9a8a73;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.25s ease;
    flex-shrink: 0;
    border: none;
    padding: 0;
    cursor: pointer;
}

.ghdr-footer__social-icons a:hover,
.ghdr-footer__social-icons .ghdr-footer__wechat-trigger:hover { background: #7a6a55; }

.ghdr-footer__social-icons svg {
    width: 15px;
    height: 15px;
    fill: currentColor;
    display: block;
}

/* Compliance logos */
.ghdr-footer__logos-row {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 40px;
    flex-wrap: wrap;
}

.ghdr-footer__logos-row img,
.ghdr-footer__logos-row a img { height: 48px; width: auto; display: block; }
.ghdr-footer__logos-row a { display: inline-block; transition: opacity 0.25s ease; }
.ghdr-footer__logos-row a:hover { opacity: 0.75; }
.ghdr-footer__acho { display: inline-block; }

/* ── Bottom bar ─────────────────────────────────── */
.ghdr-footer__bottom {
    max-width: 1320px;
    margin: 0 auto;
    padding: 24px 48px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.ghdr-footer__copyright,
.ghdr-footer__made-by,
.ghdr-footer__made-by span {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
}

.ghdr-footer__made-by {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    text-decoration: none;
    transition: opacity 0.25s ease;
}

.ghdr-footer__made-by:hover { opacity: 0.6; }
.ghdr-footer__made-by img  { height: 16px; width: auto; }

/* ── Tablet landscape (769px – 1100px) ──────────── */
@media (min-width: 769px) and (max-width: 1100px) {
    .ghdr-footer__inner {
        grid-template-columns: 160px repeat(4, 1fr);
        padding: 56px 32px;
    }
    .ghdr-footer__logo-col { padding-right: 28px; }
    .ghdr-footer__pillar   { padding: 0 20px 0 24px; }
    .ghdr-footer__pillar--last { padding-right: 0; }
}

/* ── Mobile portrait (≤ 768px) ──────────────────── */
@media (max-width: 768px) {
    .ghdr-footer__inner {
        grid-template-columns: 1fr;
        padding: 0;
    }

    .ghdr-footer__logo-col {
        border-right: none;
        border-bottom: 1px solid #e7e3db;
        padding: 48px 24px 40px;
    }

    .ghdr-footer__pillar {
        border-right: none;
        border-bottom: 1px solid #e7e3db;
        padding: 40px 24px;
    }

    .ghdr-footer__pillar--last {
        border-bottom: none;
        padding-bottom: 48px;
    }

    .ghdr-footer__social-row {
        padding: 40px 24px;
        gap: 24px;
    }

    /* All 8 social icons on one row on mobile (adding WeChat pushed the total
       past the wrap point). nowrap + slightly smaller circles/gap fit even a
       360px viewport: 8x32 + 7x7 = 305px inside ~312px usable. Desktop keeps
       40px via the base rule. */
    .ghdr-footer__social-icons {
        flex-wrap: nowrap;
        gap: 7px;
    }
    .ghdr-footer__social-icons a,
    .ghdr-footer__social-icons .ghdr-footer__wechat-trigger {
        width: 32px;
        height: 32px;
    }
    .ghdr-footer__social-icons svg { width: 13px; height: 13px; }

    .ghdr-footer__logos-row {
        gap: 24px;
    }

    .ghdr-footer__logos-row img,
    .ghdr-footer__logos-row a img { height: 40px; }

    .ghdr-footer__bottom {
        flex-direction: column;
        align-items: flex-start;
        gap: 12px;
        padding: 24px 24px;
    }
}


/* ACHO bilingual logo toggle */
.ghdr-footer__acho .acho-es { display: none; }
body.lang-es .ghdr-footer__acho .acho-en { display: none; }
body.lang-es .ghdr-footer__acho .acho-es { display: block; }

/* === END FOOTER === */


/* ================================================
   GHDR PARTNER SINGLE PAGES
   Add to style.css after Footer CSS.
================================================ */

/* -- Breadcrumb -------------------------------- */

.ghdr-partner-single__breadcrumb {
    padding: 1.5rem 5%;
    max-width: 1400px;
    margin: 0 auto;
    /* ADDED 2026-08-10: flex row so the small return arrow vertically centres
     * against the uppercase label text instead of sitting on the text baseline. */
    display: flex;
    align-items: center;
    flex-wrap: wrap;
}

.ghdr-partner-single__back {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.68rem;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #555;
    text-decoration: none;
    transition: color 0.25s ease;
}

.ghdr-partner-single__back:hover { color: #1a1a1a; }
.ghdr-partner-single__back svg { flex-shrink: 0; stroke: currentColor; }

/* -- Hero -------------------------------------- */

.ghdr-partner-single__hero {
    width: 100%;
    aspect-ratio: 5 / 2;
    overflow: hidden;
    background: #1a2420;
    /* ADDED 2026-08-10: positioning context so breadcrumb + title can be
     * overlaid ON the hero image (OB Private pattern). Previously these
     * elements flowed AFTER the full-height <img> and were clipped by
     * overflow:hidden — i.e. they never rendered at all. */
    position: relative;
}

.ghdr-partner-single__hero-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}

/* ADDED 2026-08-10: darkening gradient for text legibility over the photo */
.ghdr-partner-single__hero::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(
        to bottom,
        rgba(0,0,0,0.55) 0%,
        rgba(0,0,0,0) 35%,
        rgba(0,0,0,0) 55%,
        rgba(0,0,0,0.55) 100%
    );
    pointer-events: none;
    z-index: 1;
}

/* ADDED 2026-08-10: breadcrumb pinned top-left over hero */
/* CHANGED 2026-08-10: top 0 -> var(--header-height).
 * RATIONALE: with top:0 the nav sat at viewport y:0 and its children landed at
 * y:24, i.e. entirely UNDERNEATH the 70px fixed header, which paints above it.
 * The breadcrumb was rendering perfectly the whole time (DevTools confirmed
 * correct text, 68x13 box, opacity 1, visibility visible) -- it was simply
 * occluded. This was misdiagnosed twice as a contrast problem and once as a
 * deployment problem before console measurement settled it.
 * Do NOT set this back to 0. If the header height changes, change the variable
 * at :root, not this rule. */
.ghdr-partner-single__hero .ghdr-partner-single__breadcrumb {
    position: absolute;
    top: var(--header-height, 70px);
    left: 0;
    right: 0;
    z-index: 2;
}
/* CHANGED 2026-08-10: added __back-arrow to this selector list, and added a
 * text-shadow. RATIONALE: breadcrumb text is white and sits over the top-left
 * of the partner hero photo. On bright images (e.g. the cream wall in the
 * Palmera Rentals hero) it was rendering white-on-cream and was completely
 * illegible -- the label looked "missing" but was present in the DOM the whole
 * time. Gradient alone is photo-dependent, so the shadow is the safety net.
 * If a future partner hero is still marginal, the fallback option (discussed
 * and NOT taken) is moving the breadcrumb below the hero onto the cream band. */
.ghdr-partner-single__hero .ghdr-partner-single__back,
.ghdr-partner-single__hero .ghdr-partner-single__back-arrow,
.ghdr-partner-single__hero .ghdr-partner-single__crumb-sep,
.ghdr-partner-single__hero .ghdr-partner-single__crumb-current {
    color: rgba(255, 255, 255, 0.95);
    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55);
}
.ghdr-partner-single__hero .ghdr-partner-single__back:hover,
.ghdr-partner-single__hero .ghdr-partner-single__back-arrow:hover {
    color: #fff;
}

/* ADDED 2026-08-10: small return arrow, sits between the separator and the
 * current page title. Deliberately smaller than the old inline arrow (10px vs
 * the previously unsized SVG, which browsers were scaling inconsistently). */
.ghdr-partner-single__back-arrow {
    display: inline-flex;
    align-items: center;
    margin-right: 0.45rem;
    color: inherit;
    text-decoration: none;
    transition: opacity 0.25s ease;
}
.ghdr-partner-single__back-arrow svg {
    width: 10px;
    height: 10px;
    flex-shrink: 0;
    stroke: currentColor;
}
.ghdr-partner-single__back-arrow:hover { opacity: 0.65; }
.ghdr-partner-single__crumb-sep {
    margin: 0 0.5rem;
    font-size: 0.68rem;
}
.ghdr-partner-single__crumb-current {
    font-size: 0.68rem;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

/* ADDED 2026-08-10: partner name + eyebrow overlaid bottom-left of hero */
.ghdr-partner-single__hero-text {
    position: absolute;
    left: 0;
    bottom: 0;
    z-index: 2;
    width: 100%;
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 5% 3rem 5%;
    left: 50%;
    transform: translateX(-50%);
}
.ghdr-partner-single__hero-text .ghdr-partner-single__eyebrow {
    color: rgba(255, 255, 255, 0.85);
}
.ghdr-partner-single__hero-text .ghdr-partner-single__title {
    color: #fff;
    margin: 0;
}

/* -- Body two-column grid ---------------------- */

.ghdr-partner-single__body {
    display: grid;
    grid-template-columns: 1fr 360px;
    gap: 4rem;
    padding: 4rem 5%;
    max-width: 1400px;
    margin: 0 auto;
    align-items: start;
}

/* -- Main content ------------------------------ */

.ghdr-partner-single__eyebrow {
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 0.75rem 0;
}

.ghdr-partner-single__title {
    font-family: var(--font-display, 'Cormorant Garamond', serif);
    font-size: clamp(2.2rem, 4vw, 3.5rem);
    font-weight: 400;
    line-height: 1.1;
    color: #1a1a1a;
    margin: 0 0 2.5rem 0;
}

.ghdr-partner-single__title span {
    display: block;
    font-style: italic;
    opacity: 0.75;
}

.ghdr-partner-single__text p {
    font-size: 0.95rem;
    font-weight: 300;
    line-height: 1.8;
    color: #444;
    margin: 0 0 1.5rem 0;
}

.ghdr-partner-single__text p:last-child { margin-bottom: 0; }

.ghdr-partner-single__text strong {
    font-weight: 500;
    color: #1a1a1a;
}

/* -- Sidebar OB Private style ------------------ */

/* === PARTNER LAYOUT ORDER FIX — ADDED 2026-08-10 ===
 * HTML source order is <aside sidebar> then <article content>, which
 * put the sidebar in the grid's first (wide) column and the bio text
 * in the second (narrow) column — backwards vs the OB Private reference
 * (bio left/wide, contact card right/narrow). Using `order` swaps the
 * VISUAL position only; DOM/tab order stays sidebar-then-content, so
 * screen readers still hit the card first, matching the mobile flow.
 */
.ghdr-partner-single__content {
    order: 1;
}
.ghdr-partner-single__sidebar {
    order: 2;
}
/* === END PARTNER LAYOUT ORDER FIX === */

.ghdr-partner-single__sidebar {
    position: sticky;
    top: calc(var(--header-height, 80px) + 2rem);
    /* ADDED 2026-08-10: card overlaps up into the hero image (OB Private
     * pattern). Hero is aspect-ratio 5/2, so its height == 40vw; pulling
     * up 18vw puts the card's top edge at ~55% of the hero, and the extra
     * 4rem cancels .ghdr-partner-single__body's padding-top.
     * TUNE THIS SINGLE VALUE if the card sits too high or too low. */
    --partner-card-hero-overlap: 18vw;
    margin-top: calc(-1 * var(--partner-card-hero-overlap) - 4rem);
    z-index: 2;
}

.ghdr-partner-single__sidebar-inner {
    background: #fbf9f6;
    border: 1px solid #e8e2d9;
    position: relative;
    padding-top: 3rem;
}

/* Floating circular logo centered at top */
.ghdr-partner-single__logo-wrap {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 80px;
    height: 80px;
    border-radius: 50%;
    background: #fff;
    border: 1px solid #e8e2d9;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    z-index: 2;
}

.ghdr-partner-single__logo {
    width: 70px;
    height: 70px;
    object-fit: contain;
    display: block;
}

/* Intro tagline centered */
.ghdr-partner-single__intro {
    padding: 1.5rem 1.75rem;
    text-align: center;
    border-bottom: 1px solid #e8e2d9;
}

.ghdr-partner-single__intro p {
    font-size: 0.82rem;
    font-weight: 300;
    line-height: 1.6;
    color: #444;
    margin: 0;
}

/* Gold CTA button full width */
.ghdr-partner-single__cta {
    display: block;
    width: 100%;
    padding: 1.1rem;
    background: #9a8a73;
    color: #ffffff !important;
    text-align: center;
    font-size: 0.68rem;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    text-decoration: none;
    transition: background 0.25s ease;
    border: none;
    cursor: pointer;
    box-sizing: border-box;
}

.ghdr-partner-single__cta:hover { background: #82735f; }

/* Contact rows */
.ghdr-partner-single__contact-block {
    border-top: 1px solid #e8e2d9;
    padding: 1.1rem 1.75rem;
}

.ghdr-partner-single__contact-label {
    font-size: 0.58rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 0.35rem 0;
}

.ghdr-partner-single__contact-name {
    font-size: 0.82rem;
    font-weight: 500;
    color: #1a1a1a;
    margin: 0 0 0.25rem 0;
}

.ghdr-partner-single__contact-link {
    font-size: 0.78rem;
    font-weight: 400;
    color: #555;
    text-decoration: none;
    transition: color 0.25s ease;
    word-break: break-all;
    display: block;
}

.ghdr-partner-single__contact-link:hover { color: #1a1a1a; }

/* Social icons row */
.ghdr-partner-single__social {
    display: flex;
    flex-direction: row;
    gap: 0.75rem;
    border-top: 1px solid #e8e2d9;
    padding: 1.1rem 1.75rem;
    align-items: center;
}

.ghdr-partner-single__social-link {
    display: inline-flex;
    align-items: center;
    color: #9a8a73;
    text-decoration: none;
    transition: color 0.25s ease;
}

.ghdr-partner-single__social-link:hover { color: #1a1a1a; }

.ghdr-partner-single__social-link svg {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
}

.ghdr-partner-single__social-link span { display: none; }

/* Share button */
.ghdr-partner-single__share-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    font-size: 0.68rem;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #1a1a1a;
    background: transparent;
    border: none;
    border-top: 1px solid #e8e2d9;
    padding: 1.1rem 1.75rem;
    cursor: pointer;
    transition: opacity 0.25s ease;
    width: 100%;
}

.ghdr-partner-single__share-btn:hover { opacity: 0.5; }

.ghdr-partner-single__share-btn svg {
    width: 16px;
    height: 16px;
}

/* -- Mobile ------------------------------------ */

@media (max-width: 900px) {
    .ghdr-partner-single__hero { aspect-ratio: 16 / 9; }
    /* CHANGED 2026-08-10: mobile header is shorter (60px), so the breadcrumb
     * clears it at a smaller offset. Same occlusion bug as desktop. */
    .ghdr-partner-single__hero .ghdr-partner-single__breadcrumb {
        top: var(--mobile-header-height, 60px);
    }
    .ghdr-partner-single__body {
        grid-template-columns: 1fr;
        gap: 4rem;
        padding: 3rem 1.5rem;
    }
    .ghdr-partner-single__sidebar {
        position: static;
        order: 1;
        /* ADDED 2026-08-10: no hero overlap on mobile — layout stacks */
        margin-top: 0;
    }
    .ghdr-partner-single__content { order: 2; }
    .ghdr-partner-single__title { font-size: clamp(1.8rem, 6vw, 2.5rem); }
    .ghdr-partner-single__hero-text { padding: 0 1.5rem 2rem 1.5rem; }
}

@media (max-width: 480px) {
    .ghdr-partner-single__hero { aspect-ratio: 4 / 3; }
    .ghdr-partner-single__breadcrumb { padding: 1rem 1.5rem; }
}

/* === END PARTNER SINGLE === */

/* === SHARED SHARE MODAL — ADDED 2026-08-10 ===
 * Used by ghdr-share-modal.js across all partner pages (legacy page-partner-*
 * templates and the ghdr_partner CPT template alike).
 */
.ghdr-share-modal {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none;
}
/* CHANGED 2026-08-10: flex-centered at ALL breakpoints. Was display:block
 * with a bottom-sheet override under 550px; OB Private centers the modal
 * on mobile too, so the bottom-sheet override below was removed. */
.ghdr-share-modal.is-active {
    display: flex;
    align-items: center;
    justify-content: center;
}
.ghdr-share-modal__overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.75);
}
.ghdr-share-modal__content {
    position: relative;
    background: #fff;
    max-width: 600px;
    width: 90%;
    margin: 0; /* CHANGED 2026-08-10: flex parent centers it now */
    max-height: 90vh;
    overflow-y: auto;
    padding: 50px 40px;
    z-index: 1;
}
.ghdr-share-modal__close {
    position: absolute;
    top: 20px;
    right: 20px;
    background: none;
    border: none;
    font-size: 1.8rem;
    line-height: 1;
    cursor: pointer;
}
.ghdr-share-modal__title {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-weight: 700;
    letter-spacing: 0.05em;
    font-size: 1.4rem;
    margin: 0 0 30px;
}
.ghdr-share-modal__buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}
.ghdr-share-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: #fff;
    text-decoration: none;
    padding: 12px 20px;
    border-radius: 4px;
    font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
    font-weight: 600;
}
.ghdr-share-btn svg { width: 18px; height: 18px; fill: #fff; }
.ghdr-share-btn--facebook  { background: #3b5998; }
.ghdr-share-btn--x         { background: #000; }
.ghdr-share-btn--email     { background: #777; }
.ghdr-share-btn--pinterest { background: #bd081c; }
.ghdr-share-btn--linkedin  { background: #0077b5; }
.ghdr-share-btn--whatsapp  { background: #25d366; }

@media (max-width: 550px) {
    /* CHANGED 2026-08-10: previously pinned to the bottom as a sheet.
     * Now stays centered (OB Private behaviour) with tighter padding. */
    .ghdr-share-modal__content {
        padding: 40px 24px;
        width: 88%;
    }
    .ghdr-share-modal__title { font-size: 1.15rem; margin-bottom: 22px; }
    .ghdr-share-modal__buttons { gap: 10px; }
    .ghdr-share-btn { padding: 10px 16px; font-size: 0.9rem; }
}
/* === END SHARED SHARE MODAL === */

/* ================================================ */
   COOKIE CONSENT BANNER
================================================ */

/* === CKY COOKIE BANNER === */

.cky-hide { display: none !important; }

.cky-consent-container {
    position: fixed;
    width: 440px;
    box-sizing: border-box;
    z-index: 9999999;
    border-radius: 6px;
}

.cky-box-bottom-right {
    bottom: 40px;
    right: 40px;
}

.cky-consent-bar {
    background: #ffffff;
    border: 1px solid #ffffff;
    padding: 20px 26px;
    box-shadow: 0 -1px 10px 0 rgba(172,171,171,0.3);
    border-radius: 6px;
}

.cky-title {
    color: #212121;
    font-weight: 700;
    font-size: 18px;
    line-height: 24px;
    margin: 0 0 12px 0;
    word-break: break-word;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.cky-notice-des {
    color: #212121;
    font-size: 14px;
    line-height: 24px;
    font-weight: 400;
    font-family: var(--font-body, 'Montserrat', sans-serif);
}

.cky-notice-des p { margin: 0; }

.cky-notice-btn-wrapper {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 16px;
}

.cky-btn {
    flex: auto;
    font-size: 14px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    line-height: 24px;
    padding: 8px;
    font-weight: 500;
    border-radius: 2px;
    cursor: pointer;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    transition: opacity 0.2s ease;
}

.cky-btn:hover { opacity: 0.8; }

.cky-btn-customize {
    color: #212121;
    background: #ffffff;
    border: 2px solid rgba(33,33,33,0.11);
}

.cky-btn-reject {
    color: #212121;
    background: #ffffff;
    border: 2px solid rgba(33,33,33,0.11);
}

.cky-btn-accept {
    background: #9a8a73;
    color: #ffffff;
    border: 2px solid #9a8a73;
}

@media (max-width: 480px) {
    .cky-consent-container {
        width: calc(100% - 32px);
        bottom: 16px;
        right: 16px;
        left: 16px;
    }
    .cky-notice-btn-wrapper {
        flex-direction: column;
    }
    .cky-btn { width: 100%; }
}

/* === COOKIE PREFERENCES MODAL === */

.ghdr-cookie-modal {
    position: fixed;
    inset: 0;
    z-index: 10000000;
    display: flex;
    align-items: center;
    justify-content: center;
}

.ghdr-cookie-modal[hidden] { display: none; }

.ghdr-cookie-modal__overlay {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.6);
}

.ghdr-cookie-modal__box {
    position: relative;
    background: #fbf9f6;
    width: 90%;
    max-width: 540px;
    max-height: 90vh;
    overflow-y: auto;
    padding: 2.5rem;
    z-index: 1;
    border-radius: 6px;
}

.ghdr-cookie-modal__close {
    position: absolute;
    top: 1.25rem;
    right: 1.25rem;
    background: none;
    border: none;
    cursor: pointer;
    color: #555;
    padding: 0.25rem;
    transition: color 0.2s ease;
}

.ghdr-cookie-modal__close:hover { color: #1a1a1a; }
.ghdr-cookie-modal__close svg { width: 14px; height: 14px; display: block; }

.ghdr-cookie-modal__title {
    font-family: var(--font-display, 'Cormorant Garamond', serif);
    font-size: 1.6rem;
    font-weight: 400;
    color: #1a1a1a;
    margin: 0 0 2rem 0;
}

.ghdr-cookie-modal__options {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.ghdr-cookie-modal__option {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    padding: 1.25rem 0;
    border-top: 1px solid #e8e2d9;
}

.ghdr-cookie-modal__option-text {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.ghdr-cookie-modal__option-name {
    font-size: 0.78rem;
    font-weight: 500;
    color: #1a1a1a;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.ghdr-cookie-modal__option-desc {
    font-size: 0.72rem;
    font-weight: 300;
    color: #777;
    line-height: 1.5;
}

.ghdr-cookie-modal__toggle--locked {
    font-size: 0.6rem;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #9a8a73;
    white-space: nowrap;
}

.ghdr-cookie-modal__toggle-wrap {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
    flex-shrink: 0;
    cursor: pointer;
}

.ghdr-cookie-modal__toggle-wrap input {
    opacity: 0;
    width: 0;
    height: 0;
    position: absolute;
}

.ghdr-cookie-modal__slider {
    position: absolute;
    inset: 0;
    background: #e8e2d9;
    border-radius: 24px;
    transition: background 0.25s ease;
}

.ghdr-cookie-modal__slider::before {
    content: '';
    position: absolute;
    width: 18px;
    height: 18px;
    left: 3px;
    top: 3px;
    background: #ffffff;
    border-radius: 50%;
    transition: transform 0.25s ease;
}

.ghdr-cookie-modal__toggle-wrap input:checked + .ghdr-cookie-modal__slider {
    background: #9a8a73;
}

.ghdr-cookie-modal__toggle-wrap input:checked + .ghdr-cookie-modal__slider::before {
    transform: translateX(20px);
}

.ghdr-cookie-modal__footer {
    margin-top: 2rem;
    border-top: 1px solid #e8e2d9;
    padding-top: 1.5rem;
}

@media (max-width: 768px) {
    .ghdr-cookie-modal__box { padding: 2rem 1.5rem; }
}
/* MI Card arrow */
.mi-card {
    position: relative;
    box-shadow: 0 2px 12px rgba(0,0,0,0.07), 0 1px 3px rgba(0,0,0,0.04);
    border: 1px solid rgba(224,218,207,0.5);
    background: #fff;
    transition: box-shadow 0.25s ease;
    display: flex;
    flex-direction: column;
}
.mi-card:hover {
    box-shadow: 0 4px 20px rgba(0,0,0,0.1), 0 2px 6px rgba(0,0,0,0.05);
}

.mi-card__image {
    position: relative;
    overflow: hidden;
    aspect-ratio: 3 / 4;
    width: 100%;
    display: block;
}
/* mi-card image: OB Private 3/4 portrait ratio */
article.mi-card .mi-card__image,
article.mi-card.mi-card--grid .mi-card__image {
    position: relative;
    overflow: hidden;
    aspect-ratio: 3 / 4;
    width: 100%;
    display: block;
}
article.mi-card .mi-card__image img,
article.mi-card.mi-card--grid .mi-card__image img {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    object-fit: cover !important;
    display: block !important;
}
.mi-card__arrow {
    position: absolute;
    top: 1rem;
    right: 1rem;
    display: flex;
    align-items: center;
    gap: 0;
    z-index: 3;
    opacity: 0.85;
    pointer-events: none;
    transition: opacity 0.25s ease;
}

.mi-card:hover .mi-card__arrow { opacity: 1; }

.mi-card__arrow svg {
    width: 20px !important;
    height: 20px !important;
    max-width: 20px !important;
    stroke: #ffffff;
    filter: drop-shadow(0 1px 3px rgba(0,0,0,0.5));
    display: block !important;
    flex-shrink: 0;
}

/* === MI ARCHIVE HERO === */
.mi-archive-header {
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    position: relative;
}
.mi-archive-header::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom, rgba(26,36,32,0.55), rgba(26,36,32,0.35));
}
.mi-archive-header__inner {
    position: relative;
    z-index: 1;
}
.mi-archive-header__eyebrow,
.mi-archive-header__title,
.mi-archive-header__desc {
    color: #ffffff !important;
}

/* ── Archive header sizing & typography ──────────────────── */
.mi-archive-header {
    min-height: 420px;
    display: flex;
    align-items: flex-end;
}
.mi-archive-header__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px 64px;
    width: 100%;
}
.mi-archive-header__eyebrow {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    display: block;
    margin-bottom: 16px;
}
.mi-archive-header__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(36px, 5vw, 68px);
    font-weight: 400;
    line-height: 1.05;
    letter-spacing: 0.01em;
    margin: 0 0 20px;
}
.mi-archive-header__desc {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 13px;
    font-weight: 300;
    line-height: 1.7;
    max-width: 680px;
    margin: 0;
    opacity: 0.85;
}

/* ── Category filter bar ─────────────────────────────────── */
.mi-filter {
    background: var(--cream, #fbf9f6);
    border-bottom: 1px solid #e7e3db;
    position: sticky;
    top: 64px;
    z-index: 100;
}
.mi-filter__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
    display: flex;
    gap: 0;
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
}
.mi-filter__inner::-webkit-scrollbar { display: none; }
.mi-filter__item {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--text, #2d3b35);
    text-decoration: none;
    padding: 16px 20px;
    white-space: nowrap;
    border-bottom: 2px solid transparent;
    opacity: 0.5;
    transition: opacity 0.3s, border-color 0.3s;
    flex-shrink: 0;
}
.mi-filter__item:hover { opacity: 1; }
.mi-filter__item.is-active {
    opacity: 1;
    border-bottom-color: var(--primary, #2d3b35);
}

/* ── Archive body layout ─────────────────────────────────── */
.mi-archive__body {
    background: var(--cream, #fbf9f6);
    padding: 64px 0;
}
.mi-archive__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
}

/* ── Featured article ────────────────────────────────────── */
.mi-featured {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 48px;
    align-items: center;
    padding-bottom: 64px;
    margin-bottom: 64px;
    border-bottom: 1px solid #e7e3db;
}
.mi-featured__image {
    overflow: hidden;
    aspect-ratio: 16 / 9;
    width: 100%;
}
.mi-featured__image a { display: block; height: 100%; }
.mi-featured__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.6s ease;
}
.mi-featured__image:hover img { transform: scale(1.03); }
.mi-featured__body { padding: 0; }
.mi-featured__meta {
    display: flex;
    gap: 16px;
    align-items: center;
    margin-bottom: 20px;
}
.mi-featured__cat {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--gold, #9a8a73);
}
.mi-featured__date {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 400;
    letter-spacing: 0.08em;
    color: var(--text, #2d3b35);
    opacity: 0.45;
}
.mi-featured__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(24px, 2.5vw, 38px);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: 0.01em;
    color: var(--primary, #2d3b35);
    margin: 0 0 20px;
}
.mi-featured__title a {
    color: inherit;
    text-decoration: none;
    transition: opacity 0.3s;
}
.mi-featured__title a:hover { opacity: 0.6; }
.mi-featured__excerpt {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 13px;
    font-weight: 300;
    line-height: 1.75;
    color: var(--text, #2d3b35);
    opacity: 0.75;
    margin: 0 0 28px;
}
.mi-featured__read {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-decoration-color: var(--gold, #9a8a73);
    text-underline-offset: 6px;
    transition: opacity 0.3s;
    display: inline-block;
}
.mi-featured__read:hover { opacity: 0.55; }

/* ── Article grid ────────────────────────────────────────── */
.mi-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 40px 32px;
    align-items: start;
}
.mi-card--grid {
    display: flex;
    flex-direction: column;
    background: var(--cream, #fbf9f6);
    text-decoration: none;
    color: inherit;
}
.mi-card__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.5s ease;
}
.mi-card__image:hover img { transform: scale(1.03); }
.mi-card__body { padding: 16px 16px 20px; flex: 1; display: flex; flex-direction: column; }
.mi-card__meta {
    display: flex;
    gap: 10px;
    align-items: center;
    margin-bottom: 10px;
}
.mi-card__cat {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 9px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--gold, #9a8a73);
}
.mi-card__date {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 9px;
    font-weight: 400;
    color: var(--text, #2d3b35);
    opacity: 0.4;
}
.mi-card__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(17px, 1.5vw, 22px);
    font-weight: 400;
    line-height: 1.3;
    color: var(--primary, #2d3b35);
    margin: 0 0 12px;
    /* Clamp to 3 lines so all titles take identical vertical space */
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: calc(1.3em * 3);
}
.mi-card__title a { color: inherit; text-decoration: none; transition: opacity 0.3s; }
.mi-card__title a:hover { opacity: 0.6; }
.mi-card__excerpt {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 11px;
    font-weight: 300;
    line-height: 1.7;
    color: var(--text, #2d3b35);
    opacity: 0.65;
    margin: 0 0 16px;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    /* Fixed height for exactly 3 lines */
    min-height: calc(1.7em * 3);
}
.mi-card__read {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 9px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-decoration-color: var(--gold, #9a8a73);
    text-underline-offset: 5px;
    transition: opacity 0.3s;
    display: inline-block;
    margin-top: auto;
    align-self: flex-start;
}
.mi-card__read:hover { opacity: 0.55; }

/* ── Archive responsive ──────────────────────────────────── */
@media (max-width: 1100px) {
    .mi-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
    .mi-archive-header { min-height: 300px; }
    .mi-archive-header__inner { padding: 0 24px 40px; }
    .mi-filter__inner { padding: 0 24px; }
    .mi-archive__inner { padding: 0 24px; }
    .mi-featured {
        grid-template-columns: 1fr;
        gap: 28px;
        padding-bottom: 40px;
        margin-bottom: 40px;
    }
    .mi-grid {
        display: flex;
        flex-direction: row;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        gap: 20px;
        padding-bottom: 12px;
    }
    .mi-grid::-webkit-scrollbar { display: none; }
    .mi-grid .mi-card--grid {
        flex: 0 0 80vw;
        max-width: 320px;
        scroll-snap-align: start;
    }
}


/* === MI ARCHIVE MOBILE CAROUSEL === */
@media (max-width: 600px) {
    .mi-grid {
        display: flex !important;
        flex-direction: row !important;
        grid-template-columns: unset !important;
        gap: 1rem !important;
        overflow-x: auto !important;
        overflow-y: visible !important;
        -webkit-overflow-scrolling: touch;
        scroll-snap-type: x mandatory;
        scrollbar-width: none;
        padding-bottom: 1.5rem;
        padding-left: 5%;
        padding-right: 5%;
        box-sizing: border-box;
        width: 100%;
    }
    .mi-grid::-webkit-scrollbar { display: none; }
    .mi-grid .mi-card,
    .mi-grid .mi-card--grid {
        flex: 0 0 80vw !important;
        max-width: 320px !important;
        scroll-snap-align: start;
    }
}
/* archive grid card: landscape 16/9 */
article.mi-card.mi-card--grid .mi-card__image {
    aspect-ratio: 16 / 9;
}
.mi-grid {
    align-items: start !important;
}


/* ”” Partners carousel container ””””””””””””””” */

/* CHANGED 2026-08-10: overflow hidden -> visible, and 52px of top padding added.
 * RATIONALE: the Flickity prev/next buttons are positioned at top:-52px so they
 * sit above the card row, top-right (OB Private pattern). With overflow:hidden
 * and padding-top:0 they were rendered correctly by Flickity (confirmed via
 * console: 2 buttons, 40x40, on-screen, next button enabled) but clipped away
 * by this wrapper. This pairing is deliberate -- if the arrow offset changes,
 * this padding must change with it. Do not set overflow back to hidden. */
.ptnrs-key-grid-wrap {
    overflow: visible;
    position: relative;
    background: var(--cream, #fbf9f6);
    padding: 52px 48px 64px;
    max-width: 1320px;
    margin: 0 auto;
    box-sizing: border-box;
}

.ptnrs-grid-label {
    background: var(--cream, #fbf9f6);
}

.ptnrs-key-grid {
    display: block;
    outline: none;
    background: var(--cream, #fbf9f6);
}

/* Each partner card ” Flickity cell */
.ptnrs-key-grid .ptnrs-card {
    width: 31%;
    margin-right: 2%;
    box-sizing: border-box;
    background: var(--cream, #fbf9f6);
    text-decoration: none;
    color: inherit;
    display: block;
}

.ptnrs-card__image-wrap {
    width: 100%;
    overflow: hidden;
    aspect-ratio: 5 / 6;
    display: block;
}

.ptnrs-card__image-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.5s ease;
}

.ptnrs-key-grid .ptnrs-card:hover .ptnrs-card__image-wrap img {
    transform: scale(1.03);
}

/* ”” Homepage MI section ” OB Private style static grid ”” */

.gh-edit__grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    align-items: start;
    outline: none;
    padding-bottom: 0;
}

/* Flickity arrows for MI carousel */
.gh-edit__grid .flickity-prev-next-button {
    width: 40px;
    height: 40px;
    border-radius: 0;
    background: var(--primary, #2d3b35);
    border: none;
    top: -52px;
    bottom: auto;
    transform: none;
    opacity: 1;
}
.gh-edit__grid .flickity-prev-next-button.previous { right: 48px; left: auto; }
.gh-edit__grid .flickity-prev-next-button.next     { right: 0;    left: auto; }
.gh-edit__grid .flickity-prev-next-button .flickity-button-icon { fill: #fff; transform: scale(0.55); }
.gh-edit__grid .flickity-prev-next-button:disabled { opacity: 0.3; }

/* Each MI card — desktop grid cell */
.gh-edit__grid .mi-card {
    width: 100%;
    margin-right: 0;
    box-sizing: border-box;
}

@media (max-width: 900px) {
    /* CSS scroll-snap fallback — works even if Flickity fails to load */
    .gh-edit__grid {
        display: flex;
        flex-direction: row;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        gap: 20px;
        padding-bottom: 12px;
        scrollbar-width: none;
    }
    .gh-edit__grid::-webkit-scrollbar { display: none; }
    .gh-edit__grid .mi-card {
        flex: 0 0 80vw;
        max-width: 360px;
        scroll-snap-align: start;
        margin-right: 0;
    }
    /* When Flickity takes over — switch back to block */
    .gh-edit__grid.flickity-enabled {
        display: block;
        overflow: visible;
    }
    .gh-edit__grid.flickity-enabled .mi-card {
        width: 80vw;
        max-width: 360px;
        flex: none;
        margin-right: 20px;
    }
    /* Outer section clips horizontal overflow */
    .gh-edit { overflow: hidden; }
    .gh-edit__inner { overflow: visible; }
    .gh-edit__inner > .gh-edit__grid { overflow: visible; }
}




/* ”” Flickity prev/next buttons ” GHDR style (Partners only) ”” */

.ptnrs-key-grid .flickity-prev-next-button {
    width: 40px;
    height: 40px;
    border-radius: 0;
    background: #1a2420;
    border: none;
    top: -52px;
    bottom: auto;
    transform: none;
    opacity: 1;
}

.ptnrs-key-grid .flickity-prev-next-button.previous {
    right: 48px;
    left: auto;
}

.ptnrs-key-grid .flickity-prev-next-button.next {
    right: 0;
    left: auto;
}

.ptnrs-key-grid .flickity-prev-next-button:hover {
    background: #9a8a73;
    opacity: 1;
}

.ptnrs-key-grid .flickity-prev-next-button .flickity-button-icon {
    fill: #ffffff;
    width: 40%;
    height: 40%;
    top: 30%;
    left: 30%;
}

.ptnrs-key-grid .flickity-prev-next-button:disabled {
    opacity: 0.3;
    cursor: default;
}

/* Bottom padding for Partners carousel */
.ptnrs-key-grid {
    padding-bottom: 16px;
}

/* ”” Responsive ” tablet ”””””””””””””””””””””” */

@media (max-width: 1024px) {
    .ptnrs-key-grid-wrap {
        padding: 52px 32px 56px; /* CHANGED 2026-08-10: preserve arrow clearance */
    }
    .ptnrs-key-grid .ptnrs-card {
        width: 45%;
    }
}

/* ”” Responsive ” mobile ”””””””””””””””””””””” */

@media (max-width: 600px) {
    .ptnrs-key-grid-wrap {
        padding: 48px 24px 48px; /* CHANGED 2026-08-10: arrows are 36px here, so 48px clears them */
    }
    .ptnrs-key-grid .ptnrs-card {
        width: 80vw;
        max-width: 340px;
        margin-right: 1rem;
    }
    .ptnrs-key-grid .flickity-prev-next-button {
        width: 36px;
        height: 36px;
    }
    .ptnrs-key-grid .flickity-prev-next-button.previous {
        right: 44px;
    }
    .ptnrs-key-grid .flickity-prev-next-button.next {
        right: 0;
    }
}

/* === END FLICKITY CAROUSELS === */


/* === END COOKIE BANNER === */

/* ================================================ */
   GH CIRCLE PAGE
   OB Circle faithful recreation  split layout
   Append to style.css. Plain ASCII only.
================================================ */

/* -- Shared tokens ----------------------------- */

.ghc-reveal {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.8s cubic-bezier(0.25,1,0.5,1),
                transform 0.8s cubic-bezier(0.25,1,0.5,1);
}
.ghc-reveal.is-visible { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) {
    .ghc-reveal { opacity: 1; transform: none; transition: none; }
}

/* -- Split layout ------------------------------ */

.ghc-split {
    display: grid;
    grid-template-columns: minmax(56%, 1fr) minmax(auto, 580px);
    grid-template-areas:
        "hero  form"
        "content form";
    align-items: start;
    min-height: 100vh;
}

/* RIGHT: sticky form column */
.ghc-split__right {
    grid-area: form;
    position: sticky;
    top: var(--header-height, 70px);
    align-self: start;
    background: #fbf9f6;
    border-left: 1px solid #e8e2d9;
}

@media (min-width: 1101px) {
    .ghc-split__right {
        grid-row: 1 / -1;
    }
}
.ghc-split__form-wrap { padding: 48px 40px 60px; }

/* -- Hero (left col, full viewport height) ----- */

.ghc-split__hero {
    grid-area: hero;
    position: relative;
    height: 100vh;
    overflow: hidden;
    background: #1a2420;
}

.ghc-split__hero-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}

.ghc-split__hero-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.5);
}

.ghc-split__hero-title {
    position: absolute;
    bottom: 10vh;
    left: var(--container-padding, 5%);
    right: var(--container-padding, 5%);
    color: #ffffff;
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(2rem, 5vw, 3.8rem);
    font-weight: 400;
    line-height: 1.1;
    margin: 0;
    z-index: 1;
}

.ghc-split__hero-title em {
    display: block;
    font-style: italic;
    font-weight: 300;
    opacity: 0.9;
}

/* -- Left column content ----------------------- */

.ghc-split__content {
    grid-area: content;
    padding: 80px var(--container-padding, 5%);
}

.ghc-content-block {
    margin-bottom: 64px;
}

.ghc-invite-lede {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(1.6rem, 2.8vw, 2.4rem);
    font-weight: 400;
    line-height: 1.25;
    color: var(--primary, #2d3b35);
    margin: 0;
}

.ghc-invite-body {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: clamp(0.85rem, 1.1vw, 0.95rem);
    font-weight: 300;
    line-height: 1.9;
    color: #555;
    margin: 0 0 40px;
}

.ghc-editorial-image {
    width: 100%;
    aspect-ratio: 9 / 4.7;
    overflow: hidden;
}

.ghc-editorial-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* -- Perks carousel (Flickity) ----------------- */

.ghc-perks-section {
    border-top: 1px solid #e8e2d9;
    padding-top: 72px;
    position: relative;
}

.ghc-perks-label {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 4px;
    text-transform: uppercase;
    color: var(--gold, #c4a876);
    margin: 0 0 40px;
    position: absolute;
    top: 72px;
}

.ghc-perks-carousel {
    outline: none;
    margin-top: 16px;
}

.ghc-perk-card {
    width: 31%;
    margin-right: 3%;
    box-sizing: border-box;
}

.ghc-perk-card__image {
    aspect-ratio: 1 / 1;
    overflow: hidden;
    margin-bottom: 24px;
}

.ghc-perk-card__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.6s ease;
}

.ghc-perk-card:hover .ghc-perk-card__image img { transform: scale(1.04); }

.ghc-perk-card__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(1.2rem, 2vw, 1.6rem);
    font-weight: 400;
    color: var(--primary, #2d3b35);
    margin: 0 0 12px;
}

.ghc-perk-card__desc {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.8rem;
    font-weight: 300;
    line-height: 1.8;
    color: #666;
    margin: 0;
}

/* Flickity buttons for perks carousel: top-right */
.ghc-perks-carousel .flickity-prev-next-button {
    width: 32px;
    height: 32px;
    border-radius: 0;
    background: #1a2420;
    border: none;
    top: -52px;
    bottom: auto;
    transform: none;
    opacity: 1;
}
.ghc-perks-carousel .flickity-prev-next-button.previous { right: 40px; left: auto; }
.ghc-perks-carousel .flickity-prev-next-button.next { right: 0; left: auto; }
.ghc-perks-carousel .flickity-prev-next-button:hover { background: #9a8a73; }
.ghc-perks-carousel .flickity-prev-next-button .flickity-button-icon { fill: #fff; width: 40%; height: 40%; top: 30%; left: 30%; }
.ghc-perks-carousel .flickity-prev-next-button:disabled { opacity: 0.3; }
.ghc-perks-carousel { padding-bottom: 16px; }

/* -- Form (right column) ----------------------- */

.ghc-form-title {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--gold, #c4a876);
    margin: 0 0 32px;
}

.ghc-form__hp {
    position: absolute !important;
    left: -9999px !important;
    opacity: 0;
    height: 0;
    width: 0;
}

.ghc-form__field {
    position: relative;
    margin-bottom: 20px;
}

/* Floating label inputs matching OB Circle SixForms style */
.ghc-form__field input,
.ghc-form__field select,
.ghc-form__field textarea {
    width: 100%;
    box-sizing: border-box;
    background: transparent;
    border: 1px solid #ddd;
    border-radius: 3px;
    padding: 18px 14px 8px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.75rem;
    font-weight: 400;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: #000;
    transition: border-color 0.25s ease;
    -webkit-appearance: none;
    appearance: none;
    height: 50px;
}

.ghc-form__field textarea {
    height: auto;
    padding-top: 22px;
    resize: vertical;
    min-height: 100px;
}

.ghc-form__field input::placeholder,
.ghc-form__field textarea::placeholder { color: transparent; }

.ghc-form__field input:focus,
.ghc-form__field select:focus,
.ghc-form__field textarea:focus { outline: none; border-color: #9a8a73; }

.ghc-form__field label {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.65rem;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #888;
    pointer-events: none;
    transition: top 0.3s ease, transform 0.3s ease, font-size 0.3s ease, color 0.3s ease;
}

.ghc-form__field textarea + label {
    top: 18px;
    transform: none;
}

/* Float label up when filled */
.ghc-form__field input:not(:placeholder-shown) + label,
.ghc-form__field input:focus + label,
.ghc-form__field textarea:not(:placeholder-shown) + label,
.ghc-form__field textarea:focus + label {
    top: 8px;
    transform: none;
    font-size: 0.55rem;
    color: #aaa;
}

.ghc-form__field--select select {
    padding-top: 14px;
    background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23999' fill='none' stroke-width='1.2'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
}

.ghc-form__field.has-error input,
.ghc-form__field.has-error select,
.ghc-form__field.has-error textarea { border-color: #b04a3a; }

.ghc-form__error {
    display: none;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.6rem;
    color: #b04a3a;
    margin-top: 4px;
    letter-spacing: 0.04em;
}

.ghc-form__field.has-error .ghc-form__error,
.ghc-form__consent.has-error .ghc-form__error { display: block; }

.ghc-form__consent { margin: 4px 0 24px; }

.ghc-form__check {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    cursor: pointer;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.65rem;
    font-weight: 400;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: #666;
}

.ghc-form__check input[type="checkbox"] {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    margin-top: 1px;
    accent-color: #9a8a73;
}

.ghc-form__submit {
    width: 100%;
    background: #9a8a73;
    color: #ffffff;
    border: none;
    padding: 14px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.68rem;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.25s ease, opacity 0.25s ease;
}

.ghc-form__submit:hover { background: #82735f; }
.ghc-form__submit:disabled { opacity: 0.6; cursor: wait; }

.ghc-form__success,
.ghc-form__failure {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.75rem;
    line-height: 1.7;
    padding: 1rem;
    margin: 16px 0 0;
    border: 2px solid;
}

.ghc-form__success { border-color: #9a8a73; color: #2d3b35; }
.ghc-form__failure { border-color: #b04a3a; color: #7d2f22; }

/* -- Pillar links (OB Property/Travel style) --- */

.ghc-pillars {
    display: flex;
}

@media (min-width: 1101px) {
    .ghc-pillars {
        margin-top: 48px;
    }
}

@media (max-width: 700px) {
    .ghc-pillars { flex-direction: column; }
}

.ghc-pillar {
    flex: 1 1 50%;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    text-align: center;
    padding: 72px 5% 72px;
    position: relative;
    text-decoration: none;
    color: inherit;
    background: #fbf9f6;
    border-top: 1px solid #e8e2d9;
    overflow: hidden;
    transition: color 0.4s ease;
}

.ghc-pillar--buy { border-right: 1px solid #e8e2d9; }

.ghc-pillar__image {
    width: 80%;
    max-width: 360px;
    margin: 0 auto 40px;
    position: relative;
    z-index: 1;
    transition: opacity 0.4s ease;
}

.ghc-pillar__image img {
    width: 100%;
    aspect-ratio: 1827 / 1080;
    object-fit: cover;
    display: block;
}

.ghc-pillar__title {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: clamp(1rem, 1.4vw, 1.3rem);
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    margin: 0 0 20px;
    position: relative;
    z-index: 1;
}

.ghc-pillar--rent .ghc-pillar__title { color: #9a8a73; }

/* GH Properties hover: reveal rollover video */
.ghc-pillar--buy:hover .pillar-link__rollover { opacity: 1; }
.ghc-pillar--buy:hover .ghc-pillar__image { opacity: 0 !important; }
.ghc-pillar--buy:hover .ghc-pillar__text,
.ghc-pillar--buy:hover .ghc-pillar__cta { color: #fff; position: relative; z-index: 3; }

/* GH Travel hover: reveal rollover video */
.ghc-pillar--travel:hover .pillar-link__rollover { opacity: 1; }
.ghc-pillar--travel:hover .ghc-pillar__image { opacity: 0 !important; }
.ghc-pillar--travel:hover .ghc-pillar__text,
.ghc-pillar--travel:hover .ghc-pillar__cta { color: #fff; position: relative; z-index: 3; }

/* Shared: image fade transition */
.ghc-pillar__image { transition: opacity 0.5s ease; }

.ghc-pillar__text {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(1rem, 1.5vw, 1.3rem);
    font-weight: 400;
    line-height: 1.4;
    color: #444;
    max-width: 420px;
    margin: 0 auto 32px;
    position: relative;
    z-index: 1;
}

.ghc-pillar__cta {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.65rem;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: inherit;
    text-decoration: underline;
    text-decoration-color: var(--gold, #c4a876);
    text-underline-offset: 6px;
    margin: 0;
    position: relative;
    z-index: 1;
    transition: opacity 0.3s ease;
}

.ghc-pillar:hover .ghc-pillar__cta { opacity: 0.6; }

/* -- Newsletter CTA ---------------------------- */

.ghc-news {
    background: #fbf9f6;
    border-top: 1px solid #e8e2d9;
    padding: 28px 5%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
}

.ghc-news__title {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: clamp(0.78rem, 1.1vw, 0.88rem);
    font-weight: 300;
    color: var(--primary, #2d3b35);
    margin: 0;
    line-height: 1.6;
}

.ghc-news__btn {
    flex-shrink: 0;
    background: #9a8a73;
    border: none;
    color: #ffffff;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.65rem;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    padding: 0.85rem 1.75rem;
    cursor: pointer;
    transition: background 0.25s ease;
}

.ghc-news__btn:hover { background: #82735f; }

@media (max-width: 600px) {
    .ghc-news {
        flex-direction: column;
        align-items: flex-start;
        gap: 1rem;
    }
}

/* -- Responsive -------------------------------- */

@media (max-width: 1100px) {
    .ghc-split {
        grid-template-columns: 1fr;
        grid-template-areas:
            "hero"
            "content"
            "form";
    }
    .ghc-split__right {
        position: static;
        height: auto;
        overflow-y: visible;
        border-left: none;
        border-top: 1px solid #e8e2d9;
    }
    .ghc-split__form-wrap { padding: 48px 5%; }
}

@media (max-width: 768px) {
    .ghc-split__hero { height: 72vh; }
    .ghc-split__content { padding: 56px 5%; }
    .ghc-perk-card { width: 80vw; max-width: 300px; margin-right: 1rem; }
    .ghc-pillars { flex-direction: column; }
    .ghc-pillar--buy { border-right: none; border-bottom: 1px solid #e8e2d9; }

    /* Mobile-only reorder: Hero -> Register Form -> Invite content -> Perks.
       Plain grid-area reassignment now that hero/content/form are direct
       grid children of .ghc-split — no display:contents unwrapping needed,
       which avoids the WebKit rendering bug that was hiding the hero. */
    .ghc-split {
        grid-template-areas:
            "hero"
            "form"
            "content";
    }
    .ghc-split__form-wrap { padding: 40px 4% 48px; }
}

/* === END GH CIRCLE === */



/* ================================================================
   VALUATION PAGE — /valuation/
   Layout reference: OB Private Book a Valuation
================================================================ */

/* === VALUATION HERO === */

.ghdr-valuation-page .val-hero {
    position: relative;
    width: 100%;
    height: 100vh;
    min-height: 560px;
    max-height: 820px;
    overflow: hidden;
}

.ghdr-valuation-page .val-hero__media {
    position: absolute;
    inset: 0;
}

.ghdr-valuation-page .val-hero__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}

.ghdr-valuation-page .val-hero__overlay {
    position: absolute;
    inset: 0;
    background: rgba(18, 26, 22, 0.52);
}

.ghdr-valuation-page .val-hero__inner {
    position: relative;
    z-index: 1;
    height: 100%;
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
    display: flex;
    align-items: flex-end;
    padding-bottom: 80px;
}

.ghdr-valuation-page .val-hero__text {
    max-width: 680px;
}

.ghdr-valuation-page .val-hero__label {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.65);
    margin: 0 0 20px;
}

.ghdr-valuation-page .val-hero__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(32px, 3.8vw, 56px);
    font-weight: 300;
    line-height: 1.1;
    color: #fff;
    margin: 0 0 36px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.ghdr-valuation-page .val-hero__subtitle {
    font-style: italic;
    font-size: clamp(22px, 2.4vw, 38px);
    color: rgba(255,255,255,0.85);
}

.ghdr-valuation-page .val-hero__cta {
    display: inline-block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #fff;
    text-decoration: underline;
    text-underline-offset: 6px;
    text-decoration-color: rgba(255,255,255,0.5);
    transition: opacity 0.3s ease;
}

.ghdr-valuation-page .val-hero__cta:hover { opacity: 0.6; }

/* === VALUATION INTRO TEXT + IMAGE === */

.ghdr-valuation-page .val-intro {
    background: #fbf9f6;
    border-top: 1px solid #e7e3db;
    border-bottom: 1px solid #e7e3db;
    padding: 80px 0;
}

.ghdr-valuation-page .val-intro__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
    display: flex;
    align-items: flex-start;
    gap: 80px;
}

.ghdr-valuation-page .val-intro__text {
    flex: 1 1 0;
}

.ghdr-valuation-page .val-intro__body {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(20px, 1.8vw, 28px);
    font-weight: 400;
    line-height: 1.45;
    color: var(--primary, #2d3b35);
}

.ghdr-valuation-page .val-intro__image-wrap {
    flex: 0 0 361px;
    width: 361px;
}

.ghdr-valuation-page .val-intro__image-wrap img {
    width: 100%;
    height: auto;
    aspect-ratio: 361 / 259;
    object-fit: cover;
    display: block;
}

/* === FORM + STICKY SIDEBAR === */

.ghdr-valuation-page .val-split {
    background: #fbf9f6;
    padding: 80px 0 120px;
}

.ghdr-valuation-page .val-split__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
    display: grid;
    grid-template-columns: 1fr 380px;
    gap: 80px;
    align-items: start;
}

/* Form column */
.ghdr-valuation-page .val-form__disclaimer {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.1em;
    line-height: 2.1;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 40px;
    padding-bottom: 32px;
    border-bottom: 1px solid #e7e3db;
}

.ghdr-valuation-page .val-form__row {
    margin-bottom: 20px;
}

.ghdr-valuation-page .val-form__row--half {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.ghdr-valuation-page .val-form__field {
    position: relative;
}

.ghdr-valuation-page .val-form input[type="text"],
.ghdr-valuation-page .val-form input[type="email"],
.ghdr-valuation-page .val-form textarea,
.ghdr-valuation-page .val-form select {
    width: 100%;
    background: #fff;
    border: 1px solid #e0dacf;
    border-radius: 0;
    padding: 14px 16px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.78rem;
    color: var(--primary, #2d3b35);
    box-sizing: border-box;
    transition: border-color 0.2s ease;
    -webkit-appearance: none;
    appearance: none;
}

.ghdr-valuation-page .val-form input:focus,
.ghdr-valuation-page .val-form textarea:focus,
.ghdr-valuation-page .val-form select:focus {
    outline: none;
    border-color: #9a8a73;
}

.ghdr-valuation-page .val-form input::placeholder,
.ghdr-valuation-page .val-form textarea::placeholder {
    color: #aaa;
}

.ghdr-valuation-page .val-form select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%239a8a73' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    padding-right: 36px;
    cursor: pointer;
}

.ghdr-valuation-page .val-form select option[value=""][disabled] { color: #aaa; }

.ghdr-valuation-page .val-form textarea { resize: vertical; min-height: 120px; }

.ghdr-valuation-page .val-form__error {
    display: none;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    color: #c0392b;
    margin-top: 4px;
}

.ghdr-valuation-page .val-form__error:not([hidden]) { display: block; }

.ghdr-valuation-page .val-form__consent {
    margin-bottom: 16px;
}

.ghdr-valuation-page .val-form__check {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    cursor: pointer;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.75rem;
    line-height: 1.6;
    color: #555;
}

.ghdr-valuation-page .val-form__check input[type="checkbox"] {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    margin-top: 2px;
    accent-color: var(--primary, #2d3b35);
}

.ghdr-valuation-page .val-form__check a { color: #9a8a73; }

.ghdr-valuation-page .val-form__submit {
    display: inline-block;
    margin-top: 32px;
    background: var(--primary, #2d3b35);
    color: #fff;
    border: none;
    padding: 16px 48px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.3s ease, opacity 0.3s ease;
}

.ghdr-valuation-page .val-form__submit:hover { background: #1a2e25; }
.ghdr-valuation-page .val-form__submit:disabled { opacity: 0.6; cursor: default; }

.ghdr-valuation-page .val-form__success,
.ghdr-valuation-page .val-form__failure {
    margin-top: 24px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.78rem;
    line-height: 1.7;
}

.ghdr-valuation-page .val-form__success { color: #2d6a4f; }
.ghdr-valuation-page .val-form__failure { color: #c0392b; }

/* Sticky sidebar */
.ghdr-valuation-page .val-sidebar {
    position: sticky;
    top: calc(var(--header-height, 70px) + 40px);
}

.ghdr-valuation-page .val-sidebar__section {
    padding-bottom: 36px;
    margin-bottom: 36px;
    border-bottom: 1px solid #e7e3db;
}

.ghdr-valuation-page .val-sidebar__section:last-child {
    border-bottom: none;
    margin-bottom: 0;
}

.ghdr-valuation-page .val-sidebar__disclaimer {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.78rem;
    line-height: 1.9;
    color: #555;
    margin: 0;
}

.ghdr-valuation-page .val-sidebar__heading {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 20px;
}

.ghdr-valuation-page .val-sidebar__body {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.78rem;
    line-height: 1.9;
    color: #555;
    margin: 0;
}

.ghdr-valuation-page .val-sidebar__steps {
    list-style: none;
    counter-reset: val-step;
    margin: 0;
    padding: 0;
}

.ghdr-valuation-page .val-sidebar__steps li {
    counter-increment: val-step;
    display: flex;
    gap: 14px;
    align-items: flex-start;
    margin-bottom: 18px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.75rem;
    line-height: 1.7;
    color: #555;
}

.ghdr-valuation-page .val-sidebar__steps li::before {
    content: counter(val-step, decimal-leading-zero);
    font-size: 10px;
    font-weight: 500;
    color: #9a8a73;
    letter-spacing: 0.05em;
    flex-shrink: 0;
    margin-top: 2px;
}

.ghdr-valuation-page .val-sidebar__steps strong {
    display: block;
    font-weight: 600;
    color: var(--primary, #2d3b35);
    margin-bottom: 2px;
}

.ghdr-valuation-page .val-sidebar__steps span {
    display: block;
}

/* FAQ accordion */
.ghdr-valuation-page .val-faq {
    border-top: 1px solid #e7e3db;
}

.ghdr-valuation-page .val-faq:last-child {
    border-bottom: 1px solid #e7e3db;
}

.ghdr-valuation-page .val-faq__q {
    width: 100%;
    background: none;
    border: none;
    padding: 16px 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--primary, #2d3b35);
    cursor: pointer;
    text-align: left;
    transition: color 0.2s ease;
}

.ghdr-valuation-page .val-faq__q:hover { color: #9a8a73; }

.ghdr-valuation-page .val-faq__q svg {
    flex-shrink: 0;
    transition: transform 0.3s ease;
}

.ghdr-valuation-page .val-faq__q[aria-expanded="true"] svg {
    transform: rotate(180deg);
}

.ghdr-valuation-page .val-faq__a {
    padding: 0 0 20px;
}

.ghdr-valuation-page .val-faq__a p {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 0.75rem;
    line-height: 1.8;
    color: #666;
    margin: 0;
}

/* === VALUATION PAGE MOBILE === */

@media (max-width: 1024px) {
    .ghdr-valuation-page .val-split__inner {
        grid-template-columns: 1fr;
    }
    .ghdr-valuation-page .val-sidebar {
        position: static;
    }
    .ghdr-valuation-page .val-intro__inner {
        flex-direction: column;
        gap: 48px;
    }
    .ghdr-valuation-page .val-intro__image-wrap {
        flex: none;
        width: 100%;
        max-width: 100%;
    }
}

@media (max-width: 768px) {
    /* Hero: remove max-height so it's truly 100vh on tall phones */
    .ghdr-valuation-page .val-hero {
        max-height: none;
    }
    .ghdr-valuation-page .val-hero__inner {
        padding: 0 24px 56px;
    }
    .ghdr-valuation-page .val-intro { padding: 56px 0; }
    .ghdr-valuation-page .val-intro__inner { padding: 0 24px; }
    .ghdr-valuation-page .val-split { padding: 56px 0 80px; }
    .ghdr-valuation-page .val-split__inner { padding: 0 24px; gap: 48px; }
    .ghdr-valuation-page .val-form__row--half { grid-template-columns: 1fr; }
    .ghdr-valuation-page .val-hero__title { font-size: clamp(28px, 8vw, 40px); }
    .ghdr-valuation-page .val-hero__subtitle { font-size: clamp(20px, 6vw, 30px); }
    /* iOS auto-zoom fix: inputs must be ≥16px on mobile */
    .ghdr-valuation-page .val-form input[type="text"],
    .ghdr-valuation-page .val-form input[type="email"],
    .ghdr-valuation-page .val-form textarea,
    .ghdr-valuation-page .val-form select {
        font-size: 16px;
    }
    /* Full-width submit button on mobile */
    .ghdr-valuation-page .val-form__submit {
        display: block;
        width: 100%;
        text-align: center;
    }
}

/* === END VALUATION PAGE === */


/* === VALUATION PAGE — BELOW-FORM SECTIONS === */

/* Shared label style */
.ghdr-valuation-page .val-section-label {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 32px;
}

/* Valuation Process */
.ghdr-valuation-page .val-process-section {
    background: #fbf9f6;
    border-top: 1px solid #e7e3db;
    padding: 80px 0;
}

.ghdr-valuation-page .val-process-section__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
}

.ghdr-valuation-page .val-process-section__body {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(18px, 1.6vw, 26px);
    font-weight: 400;
    line-height: 1.5;
    color: var(--primary, #2d3b35);
    max-width: 860px;
    margin: 0;
}

/* FAQs */
.ghdr-valuation-page .val-faqs-section {
    background: #fbf9f6;
    border-top: 1px solid #e7e3db;
    padding: 80px 0;
}

.ghdr-valuation-page .val-faqs-section__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
}

.ghdr-valuation-page .val-faqs-grid {
    columns: 2;
    column-gap: 80px;
}

.ghdr-valuation-page .val-faqs-grid .val-faq {
    break-inside: avoid;
}

/* Contact section — OB Private "Our Offices" layout */
.ghdr-valuation-page .val-contact-section {
    background: #fbf9f6;
    border-top: 1px solid #e7e3db;
    border-bottom: 1px solid #e7e3db;
    padding: 80px 0;
}

.ghdr-valuation-page .val-contact-section__inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 48px;
    display: flex;
    align-items: flex-start;
    gap: 80px;
}

.ghdr-valuation-page .val-contact-section__text {
    flex: 1 1 0;
}

.ghdr-valuation-page .val-contact-section__body {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(18px, 1.6vw, 26px);
    font-weight: 400;
    line-height: 1.5;
    color: var(--primary, #2d3b35);
    margin: 0 0 36px;
}

.ghdr-valuation-page .val-contact-section__cta {
    display: inline-block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-underline-offset: 6px;
    text-decoration-color: #9a8a73;
    transition: opacity 0.3s ease;
}

.ghdr-valuation-page .val-contact-section__cta:hover { opacity: 0.6; }

.ghdr-valuation-page .val-contact-section__image {
    flex: 0 0 361px;
    width: 361px;
}

.ghdr-valuation-page .val-contact-section__image img {
    width: 100%;
    height: auto;
    display: block;
}

/* Mobile */
@media (max-width: 1024px) {
    .ghdr-valuation-page .val-faqs-grid { columns: 1; }
    .ghdr-valuation-page .val-contact-section__inner { flex-direction: column; gap: 48px; }
    .ghdr-valuation-page .val-contact-section__image { flex: none; width: 100%; max-width: 361px; }
}

@media (max-width: 768px) {
    .ghdr-valuation-page .val-process-section,
    .ghdr-valuation-page .val-faqs-section,
    .ghdr-valuation-page .val-contact-section { padding: 56px 0; }
    .ghdr-valuation-page .val-process-section__inner,
    .ghdr-valuation-page .val-faqs-section__inner,
    .ghdr-valuation-page .val-contact-section__inner { padding: 0 24px; }
}

/* === END VALUATION PAGE BELOW-FORM SECTIONS === */


/* === FIXED BOOK A VALUATION CTA (OB Private FixedCta pattern) === */

.fixed-val-cta {
    align-items: center;
    display: flex;
    height: 100%;
    justify-content: flex-end;
    pointer-events: none;
    position: fixed;
    right: 0;
    top: 0;
    width: 100%;
    z-index: 998;
}

.fixed-val-cta a {
    --height: 50px;
    background-color: #9a8a73;
    color: #fff;
    display: flex;
    align-items: center;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    text-decoration: none;
    height: var(--height);
    padding: 0 20px;
    pointer-events: auto;
    transform: rotate(-90deg) translateX(calc(50% + var(--height) / 2));
    transform-origin: right bottom;
    margin-right: -10px;
    white-space: nowrap;
    transition: margin 0.4s ease;
}

.fixed-val-cta a:hover {
    margin-right: 0;
}

@media (max-width: 768px) {
    .fixed-val-cta { display: none; }
}

/* === END FIXED BOOK A VALUATION CTA === */


/* === MI SINGLE ARTICLE === */

/* ── Page wrapper ── */
.mi-single {
    background: var(--cream, #fbf9f6);
    min-height: 100vh;
}

/* ── Breadcrumb ── */
.mi-breadcrumb {
    max-width: 780px;
    margin: 0 auto;
    padding: 32px 48px 0;
}
.mi-breadcrumb__inner {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #9a8a73;
}
.mi-breadcrumb__inner a {
    color: #9a8a73;
    text-decoration: none;
    transition: opacity 0.2s;
}
.mi-breadcrumb__inner a:hover { opacity: 0.6; }
.mi-breadcrumb__sep { color: #c5b8a6; }
.mi-breadcrumb__current {
    color: var(--primary, #2d3b35);
    max-width: 500px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ── Article ── */
.mi-article {
    max-width: 780px;
    margin: 0 auto;
    padding: 0 48px 80px;
}

/* ── Article Header ── */
.mi-article__header {
    padding: 40px 0 32px;
}
.mi-article__header-inner {}
.mi-article__meta-row {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 20px;
}
.mi-article__cat {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #9a8a73;
    text-decoration: none;
    transition: opacity 0.2s;
}
.mi-article__cat:hover { opacity: 0.6; }
.mi-article__date,
.mi-article__read-time {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    letter-spacing: 0.1em;
    color: #aaa;
}
.mi-badge--press {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 9px;
    font-weight: 600;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #fff;
    background: #9a8a73;
    padding: 3px 8px;
}
.mi-article__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(28px, 3.5vw, 44px);
    font-weight: 400;
    line-height: 1.2;
    color: var(--primary, #2d3b35);
    margin: 0 0 16px;
}
.mi-article__subtitle {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 13px;
    line-height: 1.7;
    color: #666;
    margin: 0;
}

/* ── Source attribution (In the Press) ── */
.mi-source-attr {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 16px 0;
    border-top: 1px solid #e7e3db;
    border-bottom: 1px solid #e7e3db;
    margin-top: 24px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}
.mi-source-attr__label { color: #9a8a73; font-weight: 600; }
.mi-source-attr__link {
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-underline-offset: 3px;
}
.mi-source-attr__date { color: #aaa; }

/* ── Hero Image ── */
.mi-article__hero-image {
    width: 100%;
    margin-bottom: 40px;
    overflow: hidden;
    background: #f0ede8;
}
.mi-article__hero-image img {
    width: 100%;
    height: auto;
    max-height: 560px;
    object-fit: contain;
    display: block;
}

/* ── Article Content ── */
.mi-article__content-wrap {
    padding: 0;
}
.mi-article__content {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 14px;
    line-height: 1.9;
    color: #444;
}
.mi-article__content p {
    margin: 0 0 24px;
}
.mi-article__content h2 {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(22px, 2.5vw, 32px);
    font-weight: 400;
    color: var(--primary, #2d3b35);
    margin: 48px 0 20px;
    line-height: 1.25;
}
.mi-article__content h3 {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(18px, 2vw, 26px);
    font-weight: 400;
    color: var(--primary, #2d3b35);
    margin: 36px 0 16px;
}
.mi-article__content blockquote {
    border-left: 2px solid #9a8a73;
    margin: 36px 0;
    padding: 4px 0 4px 28px;
}
.mi-article__content blockquote p {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(18px, 2vw, 24px);
    font-style: italic;
    line-height: 1.5;
    color: var(--primary, #2d3b35);
    margin: 0 0 12px;
}
.mi-article__content figure {
    margin: 36px 0;
}
.mi-article__content figure img {
    width: 100%;
    height: auto;
    display: block;
}
.mi-article__content figcaption {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    letter-spacing: 0.08em;
    color: #aaa;
    margin-top: 10px;
    line-height: 1.6;
}
.mi-article__content a {
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-underline-offset: 3px;
    text-decoration-color: #9a8a73;
    transition: opacity 0.2s;
}
.mi-article__content a:hover { opacity: 0.6; }

/* ── Hide WordPress social links block inside article content ── */
.mi-article__content .wp-block-social-links {
    display: none !important;
}

/* ── GREENHAUSDR Perspective aside ── */
.mi-perspective {
    background: #f0ede8;
    border-left: 2px solid #9a8a73;
    padding: 28px 32px;
    margin: 48px 0;
}
.mi-perspective__label {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 9px;
    font-weight: 600;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: #9a8a73;
    margin-bottom: 16px;
}
.mi-perspective__body {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 13px;
    line-height: 1.8;
    color: #444;
}

/* ── Read Original button ── */
.mi-read-original {
    margin: 48px 0;
    padding-top: 32px;
    border-top: 1px solid #e7e3db;
}
.mi-read-original__btn {
    display: inline-block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    text-decoration: none;
    border-bottom: 1px solid #9a8a73;
    padding-bottom: 4px;
    transition: opacity 0.2s;
}
.mi-read-original__btn:hover { opacity: 0.6; }
.mi-read-original__note {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    color: #aaa;
    line-height: 1.6;
    margin-top: 12px;
}

/* ── Related Articles ── */
.mi-related {
    background: #f5f2ee;
    padding: 64px 0;
    margin-top: 64px;
}
.mi-related__inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 48px;
}
.mi-related__heading {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: #9a8a73;
    margin: 0 0 40px;
}
.mi-related__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 32px;
}
.mi-card--related .mi-card__image {
    aspect-ratio: 3/2;
    overflow: hidden;
    margin-bottom: 16px;
    width: 100%;
}
.mi-card--related .mi-card__image a {
    display: block;
    width: 100%;
    height: 100%;
}
.mi-card--related .mi-card__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
    display: block;
    transition: transform 0.4s ease;
}
.mi-card--related .mi-card__image:hover img { transform: scale(1.03); }
.mi-card--related .mi-card__cat {
    display: block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 9px;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: #9a8a73;
    margin-bottom: 8px;
}
.mi-card--related .mi-card__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(16px, 1.4vw, 20px);
    font-weight: 400;
    line-height: 1.3;
    color: var(--primary, #2d3b35);
    margin: 0 0 12px;
}
.mi-card--related .mi-card__title a {
    color: inherit;
    text-decoration: none;
    transition: opacity 0.2s;
}
.mi-card--related .mi-card__title a:hover { opacity: 0.6; }
.mi-card--related .mi-card__read {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-underline-offset: 3px;
    text-decoration-color: #9a8a73;
    transition: opacity 0.2s;
}
.mi-card--related .mi-card__read:hover { opacity: 0.6; }

/* ── Responsive ── */
@media (max-width: 900px) {
    .mi-related__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (max-width: 768px) {
    .mi-breadcrumb {
        padding: 24px 20px 0;
    }
    .mi-breadcrumb__inner {
        gap: 6px;
        font-size: 9px;
        flex-wrap: wrap;
    }
    /* Current title wraps freely — no max-width truncation on mobile */
    .mi-breadcrumb__current {
        white-space: normal;
        max-width: 100%;
        overflow: visible;
        text-overflow: clip;
        word-break: break-word;
    }
    /* Hide current title breadcrumb on very small screens to save space */
    @media (max-width: 400px) {
        .mi-breadcrumb__current { display: none; }
        .mi-breadcrumb__sep:last-of-type { display: none; }
    }
    .mi-article {
        padding: 0 24px 56px;
    }
    /* Let hero image height be natural on mobile — avoids face-crop on portrait/square images */
    .mi-article__hero-image img {
        max-height: none;
        height: auto;
    }
    /* Tighten perspective box padding on narrow screens */
    .mi-perspective {
        padding: 20px;
    }
    /* Related articles: Flickity carousel on mobile */
    .mi-related {
        padding: 48px 0;
        margin-top: 48px;
    }
    .mi-related__inner {
        padding: 0;
    }
    .mi-related__heading {
        padding: 0 24px;
        margin-bottom: 24px;
    }
    .mi-related__grid {
        display: block;
        padding: 0 24px;
        overflow: hidden;
    }
    .mi-related__grid .mi-card--related {
        width: 70vw;
        max-width: 260px;
        margin-right: 16px;
        display: inline-block;
        vertical-align: top;
    }
    .mi-related__grid .mi-card--related .mi-card__image {
        aspect-ratio: 3/2;
        max-height: 140px;
        overflow: hidden;
    }
    .mi-related__grid .mi-card--related .mi-card__image a {
        display: block;
        width: 100%;
        height: 100%;
    }
    .mi-related__grid .mi-card--related .mi-card__image img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        object-position: center top;
        display: block;
    }
}

/* === END MI SINGLE ARTICLE === */


/* === CONTACT PAGE === */

.contact-hero {
    background: #fff;
    padding: 80px 5% 10px;
}
/* Desktop only: push the contact-page team section down so the pinned cards
   don't overlap it while they're held (JS sticky). Scoped to .contact-page so
   the home-page team section is untouched; mobile (stacked, no pin) unaffected. */
@media (min-width: 769px) {
    .contact-page .home-team {
        margin-top: 250px;
        padding-top: 50px;
    }
}
.contact-hero__inner { max-width: 1200px; margin: 0 auto; }
.contact-hero__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(36px, 5vw, 68px);
    font-weight: 400;
    line-height: 1.1;
    color: var(--primary, #2d3b35);
    margin: 0;
}
.contact-hero__title em { font-style: italic; font-weight: 300; }

.contact-body { background: #fff; padding: 10px 0 80px; }
.contact-body__inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 5%;
    display: flex;
    flex-direction: row;
    gap: 64px;
    align-items: flex-start;
}

/* Form column — grows to fill space */
.contact-form-wrap {
    flex: 1;
    min-width: 0;
}

/* Sidebar column — fixed width, two stacked cards */
.contact-sidebar {
    flex: 0 0 400px;
    width: 400px;
    position: sticky;
    top: 90px;
    align-self: flex-start;
    display: flex;
    flex-direction: column;
    gap: 24px;
}
.contact-sidebar.is-sticky,
.contact-sidebar.is-bottom {
    position: sticky;
    top: 90px;
}

/* Hide the old extra offices row — offices now live inside sidebar */
.contact-offices-extra {
    display: none;
}
.contact-form__row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 24px;
}
.contact-form__field {
    position: relative;
    margin-bottom: 12px;
}
/* OB Private: full-width bordered box, label text inside as bold placeholder */
.contact-form__field input,
.contact-form__field select,
.contact-form__field textarea {
    width: 100%;
    border: 1px solid #ddd;
    border-radius: 3px;
    background: #fff;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    padding: 18px 16px;
    outline: none;
    transition: border-color 0.2s, box-shadow 0.2s;
    box-sizing: border-box;
    appearance: none;
    height: 58px;
}
.contact-form__field input:focus,
.contact-form__field select:focus,
.contact-form__field textarea:focus {
    border-color: #9a8a73;
    box-shadow: 0 0 0 2px rgba(154,138,115,0.08);
}
/* Placeholder acts as the label — bold uppercase inside box */
.contact-form__field input::placeholder,
.contact-form__field textarea::placeholder {
    color: var(--primary, #2d3b35);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    opacity: 1;
}
/* Static label above — hidden visually, kept for accessibility */
.contact-form__field label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    white-space: nowrap;
    border: 0;
}
.contact-form__select-label {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
}
.contact-form__field select {
    height: 58px;
    cursor: pointer;
    color: var(--primary, #2d3b35);
    font-weight: 700;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%239a8a73' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 16px center;
    padding-right: 40px;
}
/* Style the empty/placeholder option */
.contact-form__field select option[value=""] { color: var(--primary, #2d3b35); font-weight: 700; }
.contact-form__field textarea {
    resize: vertical;
    min-height: 140px;
    height: auto;
    text-transform: none;
    letter-spacing: 0;
    font-size: 12px;
    font-weight: 400;
    padding: 16px;
}
.contact-form__field textarea::placeholder {
    text-transform: uppercase;
    font-weight: 700;
    font-size: 11px;
    letter-spacing: 0.1em;
}
.contact-form__checks {
    margin: 24px 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.contact-form__check-label {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    letter-spacing: 0.06em;
    color: #666;
    cursor: pointer;
    line-height: 1.6;
}
.contact-form__check-label input[type="checkbox"] {
    flex-shrink: 0;
    margin-top: 2px;
    accent-color: #9a8a73;
    width: 16px;
    height: 16px;
    border: 1px solid #ddd;
}
.req { color: #e80059; }
.contact-form__submit {
    background: var(--primary, #2d3b35);
    color: #fff;
    border: none;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    padding: 16px 40px;
    cursor: pointer;
    transition: background 0.25s ease;
}
.contact-form__submit:hover { background: #1a2520; }
.contact-form__submit:disabled { opacity: 0.6; cursor: not-allowed; }

/* Sidebar — OB Private clean style: no card bg/border, offices inline */
.contact-sidebar__card {
    background: hsla(33, 44%, 95%, 0.5);
    border: 1px solid #e0dacf;
    box-shadow: 0 2px 12px rgba(0,0,0,0.06), 0 1px 3px rgba(0,0,0,0.03);
    padding: 28px 28px 8px;
}
.contact-sidebar__brand {
    display: block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: #9a8a73;
    margin-bottom: 24px;
}
.contact-sidebar__office {
    display: flex;
    gap: 20px;
    align-items: flex-start;
    margin-bottom: 24px;
}
.contact-sidebar__illustration {
    flex-shrink: 0;
    width: 140px;
    height: 140px;
    overflow: hidden;
}
.contact-sidebar__illustration img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.contact-sidebar__details { flex: 1; }
.contact-sidebar__location-name {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: 20px;
    font-weight: 400;
    letter-spacing: 0.01em;
    text-transform: none;
    color: var(--primary, #2d3b35);
    margin: 0 0 8px;
}
.contact-sidebar__address {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: 17px;
    line-height: 1.5;
    color: var(--primary, #2d3b35);
    margin: 0 0 10px;
}
.contact-sidebar__link {
    display: block;
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: 15px;
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-underline-offset: 3px;
    text-decoration-color: var(--primary, #2d3b35);
    margin-bottom: 6px;
    transition: opacity 0.2s;
}
.contact-sidebar__link:hover { opacity: 0.6; }
.contact-sidebar__hours {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: 14px;
    color: var(--primary, #2d3b35);
    opacity: 0.7;
    margin: 6px 0 0;
}
.contact-sidebar__separator {
    display: block;
    height: 1px;
    background: #e0dacf;
    margin: 0 0 24px;
}

/* Verification Modal */
.contact-modal-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.5);
    z-index: 9000;
    align-items: center;
    justify-content: center;
}
.contact-modal-overlay.active { display: flex; }
.contact-modal {
    background: #fff;
    padding: 40px;
    max-width: 420px;
    width: 90%;
    text-align: center;
}
.contact-modal__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: 28px;
    font-weight: 400;
    color: var(--primary, #2d3b35);
    margin: 0 0 12px;
}
.contact-modal__text {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 11px;
    color: #666;
    margin: 0 0 4px;
}
.contact-modal__email {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 12px;
    font-weight: 600;
    color: var(--primary, #2d3b35);
    margin: 0 0 24px;
}
.contact-modal__input {
    width: 100%;
    border: 1px solid #e0dacf;
    border-bottom: 2px solid #9a8a73;
    background: #fafaf8;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 24px;
    font-weight: 300;
    letter-spacing: 0.3em;
    text-align: center;
    padding: 16px;
    margin-bottom: 20px;
    box-sizing: border-box;
    outline: none;
}
.contact-modal__actions { display: flex; flex-direction: column; gap: 10px; align-items: center; }
.contact-modal__verify-btn {
    background: var(--primary, #2d3b35);
    color: #fff;
    border: none;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    padding: 14px 32px;
    cursor: pointer;
    width: 100%;
    transition: background 0.2s;
}
.contact-modal__verify-btn:hover { background: #1a2520; }
.contact-modal__verify-btn:disabled { opacity: 0.6; cursor: not-allowed; }
.contact-modal__cancel-btn {
    background: none;
    border: none;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #aaa;
    cursor: pointer;
    transition: color 0.2s;
}
.contact-modal__cancel-btn:hover { color: var(--primary, #2d3b35); }
.contact-modal__resend-btn {
    background: none;
    border: none;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 11px;
    color: #9a8a73;
    text-decoration: underline;
    cursor: pointer;
}

/* Thank You */
.contact-thankyou {
    display: none;
    position: fixed;
    inset: 0;
    background: #fff;
    z-index: 9100;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    text-align: center;
    padding: 40px;
}
.contact-thankyou__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(36px, 4vw, 56px);
    font-weight: 400;
    color: var(--primary, #2d3b35);
    margin: 24px 0 12px;
}
.contact-thankyou__text {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 13px;
    color: #666;
    line-height: 1.8;
    max-width: 480px;
    margin: 0 0 12px;
}
.contact-thankyou__email {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 12px;
    font-weight: 600;
    color: #9a8a73;
}
.contact-thankyou__confirmed {
    background: #f7f5f2;
    padding: 16px 40px;
    margin: 16px 0 24px;
    text-align: center;
}
.contact-thankyou__confirmed-label {
    display: block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    letter-spacing: 2px;
    color: #9a8a73;
    margin-bottom: 6px;
}
.contact-thankyou__return {
    display: inline-block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 11px;
    letter-spacing: 2px;
    font-weight: 500;
    color: var(--primary, #2d3b35);
    border: 1px solid var(--primary, #2d3b35);
    padding: 14px 40px;
    text-decoration: none;
    transition: background 0.3s ease, color 0.3s ease;
}
.contact-thankyou__return:hover {
    background: var(--primary, #2d3b35);
    color: #fff;
}
.contact-thankyou__confirmed {
    background: #f7f5f2;
    padding: 20px 40px;
    text-align: center;
    margin: 24px 0;
    min-width: 320px;
}
.contact-thankyou__confirmed-label {
    display: block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 2px;
    color: #9a8a73;
    margin-bottom: 8px;
}
.contact-thankyou__return {
    display: inline-block;
    padding: 14px 44px;
    border: 1px solid var(--primary, #2d3b35);
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 2px;
    color: var(--primary, #2d3b35);
    text-decoration: none;
    text-transform: uppercase;
    transition: background 0.3s ease, color 0.3s ease;
    margin-top: 8px;
}
.contact-thankyou__return:hover {
    background: var(--primary, #2d3b35);
    color: #fff;
}

/* Responsive */
/* Keep the cards beside the form down to tablet (matches OB, which stays
   side-by-side well below 900px). In the intermediate range the sidebar and gap
   shrink so the form column doesn't get cramped. Only below 768px do we stack. */
@media (min-width: 769px) and (max-width: 1024px) {
    .contact-body__inner { gap: 40px; }
    .contact-sidebar { flex: 0 0 300px; width: 300px; }
}
@media (max-width: 768px) {
    .contact-body__inner {
        flex-direction: column;
        gap: 48px;
    }
    .contact-sidebar,
    .contact-sidebar.is-sticky,
    .contact-sidebar.is-bottom {
        position: static !important;
        width: 100% !important;
        flex: none !important;
    }
}
@media (max-width: 768px) {
    .contact-hero { padding: 100px 24px 40px; }
    .contact-body { padding: 48px 0 56px; }
    .contact-body__inner { padding: 0 24px; }
    .contact-form__row { grid-template-columns: 1fr; gap: 0; }
    .contact-sidebar__office {
        flex-direction: column;
        gap: 12px;
    }
    .contact-sidebar__illustration {
        width: 100%;
        height: auto;
        overflow: visible;
    }
    .contact-sidebar__illustration img {
        width: 100%;
        height: auto;
        display: block;
        object-fit: unset;
    }
    /* OB Private mobile text style */
    .contact-sidebar__brand {
        font-size: 11px;
        margin-bottom: 20px;
    }
    .contact-sidebar__location-name {
        font-family: var(--font-heading, 'Cormorant Garamond', serif);
        font-size: 20px;
        font-weight: 400;
        letter-spacing: 0.01em;
        text-transform: none;
        margin: 0 0 8px;
    }
    .contact-sidebar__address {
        font-size: 17px;
        line-height: 1.5;
        margin: 0 0 10px;
    }
    .contact-sidebar__link {
        font-family: var(--font-heading, 'Cormorant Garamond', serif);
        font-size: 17px;
        text-decoration-color: var(--primary, #2d3b35);
        margin-bottom: 6px;
    }
    .contact-sidebar__hours {
        font-family: var(--font-heading, 'Cormorant Garamond', serif);
        font-size: 16px;
        color: var(--primary, #2d3b35);
        opacity: 0.7;
        margin-top: 12px;
    }
}

/* === END CONTACT PAGE === */

/* === COMPLIANCE PAGE === */

.compliance-page { background: #fff; min-height: 60vh; }

.compliance-hero {
    background: #fff;
    padding: 140px 5% 60px;
    border-bottom: 1px solid #e8e2d9;
}
.compliance-hero__inner { max-width: 1200px; margin: 0 auto; }
.compliance-hero__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(36px, 5vw, 68px);
    font-weight: 400;
    color: var(--primary, #2d3b35);
    margin: 0;
}

.compliance-body { padding: 64px 0 96px; }
.compliance-body__inner {
    max-width: 860px;
    margin: 0 auto;
    padding: 0 5%;
}

.compliance-row {
    padding: 32px 0;
    border-bottom: 1px solid #e0dacf;
}
.compliance-row:first-child { border-top: 1px solid #e0dacf; }
.compliance-row__title {
    font-family: var(--font-heading, 'Cormorant Garamond', serif);
    font-size: clamp(16px, 1.5vw, 20px);
    font-weight: 400;
    color: var(--primary, #2d3b35);
    margin: 0 0 16px;
    line-height: 1.4;
}
.compliance-row__link {
    display: inline-block;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--primary, #2d3b35);
    text-decoration: underline;
    text-underline-offset: 6px;
    text-decoration-color: #c4a876;
    transition: opacity 0.2s;
}
.compliance-row__link:hover { opacity: 0.5; }

@media (max-width: 768px) {
    .compliance-hero { padding: 100px 24px 40px; }
    .compliance-body { padding: 40px 0 64px; }
    .compliance-body__inner { padding: 0 24px; }
}

/* === END COMPLIANCE PAGE === */

/* === COOKIE CONSENT BANNER === */
.cookie-banner {
    position: fixed;
    bottom: 40px;
    right: 40px;
    width: 440px;
    background: #ffffff;
    border: 1px solid #ffffff;
    padding: 20px 26px;
    box-shadow: 0 -1px 10px 0 rgba(172,171,171,0.3);
    border-radius: 6px;
    z-index: 9999999;
    box-sizing: border-box;
    display: none;
}
.cookie-banner.active { display: block; }
.cookie-banner h4 {
    color: #212121;
    font-weight: 700;
    font-size: 18px;
    line-height: 24px;
    margin: 0 0 12px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
.cookie-banner p {
    color: #212121;
    font-size: 14px;
    line-height: 24px;
    font-weight: 400;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    margin: 0 0 16px;
}
.cookie-buttons {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}
.cookie-btn {
    flex: auto;
    font-size: 14px;
    font-family: var(--font-body, 'Montserrat', sans-serif);
    line-height: 24px;
    padding: 8px;
    font-weight: 500;
    border-radius: 2px;
    cursor: pointer;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    transition: opacity 0.2s ease;
}
.cookie-btn:hover { opacity: 0.8; }
.cookie-btn-outline {
    color: #212121;
    background: #ffffff;
    border: 2px solid rgba(33,33,33,0.11);
}
.cookie-btn-filled {
    background: #9a8a73;
    color: #ffffff;
    border: 2px solid #9a8a73;
}
.cookie-modal-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.5);
    z-index: 99999999;
    align-items: center;
    justify-content: center;
}
.cookie-modal-overlay.active { display: flex; }
.cookie-modal {
    background: #fff;
    border-radius: 6px;
    padding: 32px;
    max-width: 520px;
    width: 90%;
    max-height: 80vh;
    overflow-y: auto;
    position: relative;
}
.cookie-modal-close {
    position: absolute;
    top: 16px;
    right: 20px;
    background: none;
    border: none;
    font-size: 24px;
    cursor: pointer;
    color: #666;
    line-height: 1;
}
.cookie-modal h3 {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    margin: 0 0 16px;
    color: #212121;
    padding-right: 30px;
}
.cookie-modal-intro {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 13px;
    line-height: 1.7;
    color: #555;
    margin: 0 0 12px;
}
.cookie-category {
    border-top: 1px solid #e5e5e5;
    padding: 12px 0;
}
.cookie-category-header {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
}
.cookie-arrow {
    font-size: 18px;
    color: #9a8a73;
    flex-shrink: 0;
}
.cookie-category-title {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #212121;
    flex: 1;
}
.cookie-always-active {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #9a8a73;
}
.cookie-category-desc {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 12px;
    line-height: 1.7;
    color: #666;
    margin: 8px 0 0 28px;
}
.cookie-toggle {
    position: relative;
    display: inline-block;
    width: 40px;
    height: 22px;
    flex-shrink: 0;
}
.cookie-toggle input { opacity: 0; width: 0; height: 0; }
.cookie-slider {
    position: absolute;
    cursor: pointer;
    inset: 0;
    background: #ccc;
    border-radius: 22px;
    transition: 0.3s;
}
.cookie-slider:before {
    content: '';
    position: absolute;
    height: 16px;
    width: 16px;
    left: 3px;
    bottom: 3px;
    background: #fff;
    border-radius: 50%;
    transition: 0.3s;
}
.cookie-toggle input:checked + .cookie-slider { background: #9a8a73; }
.cookie-toggle input:checked + .cookie-slider:before { transform: translateX(18px); }
.cookie-modal-buttons {
    display: flex;
    gap: 8px;
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid #e5e5e5;
    flex-wrap: wrap;
}
.cookie-modal-buttons .cookie-btn { flex: 1; font-size: 11px; padding: 10px 8px; }
@media (max-width: 480px) {
    .cookie-banner { width: calc(100% - 32px); bottom: 16px; right: 16px; left: 16px; }
    .cookie-buttons { flex-direction: column; }
    .cookie-btn { width: 100%; }
}
/* === END COOKIE CONSENT BANNER === */

/* === NEWSLETTER MODAL === */
#newsletterModal {
    position: fixed !important;
    inset: 0 !important;
    z-index: 9000 !important;
    display: flex !important;
    pointer-events: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
    transition: opacity 0.4s ease, visibility 0.4s ease;
}
#newsletterModal.nl-open {
    pointer-events: all !important;
    opacity: 1 !important;
    visibility: visible !important;
}
#newsletterModal .nl-overlay {
    position: absolute !important;
    inset: 0 !important;
    background: rgba(20,22,24,0.72) !important;
    opacity: 0 !important;
    transition: opacity 0.4s ease !important;
    cursor: pointer !important;
}
#newsletterModal.nl-open .nl-overlay {
    opacity: 1 !important;
}
/* REMOVED in 1.9.20 -- this duplicated newsletter-system.css's own base
   .nl-panel rule almost value-for-value, but with every property forced
   !important and no media-query scoping. That silently vetoed EVERY
   responsive override newsletter-system.css ever tried to apply to width/
   max-width/min-width (or any of the other properties here) at any
   breakpoint, including the mobile fix in newsletter-system.css v[current].
   newsletter-system.css's own base rule (non-!important) already supplies
   identical values, so desktop is unaffected by removing this. */
#newsletterModal.nl-open .nl-panel {
    transform: translateX(0) !important;
}
#nlVerifyOverlay {
    position: fixed !important;
    inset: 0 !important;
    z-index: 9100 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    pointer-events: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
    background: rgba(20,22,24,0.72) !important;
    transition: opacity 0.3s ease, visibility 0.3s ease !important;
}
#nlVerifyOverlay.nl-open {
    pointer-events: all !important;
    opacity: 1 !important;
    visibility: visible !important;
}
/* === END NEWSLETTER MODAL === */

/* === PROPERTY ARCHIVE (BUY / RENT) === */
.prop-archive__head {
    padding: calc(var(--header-height) + 64px) 0 40px;
    background: var(--cream, #fbf9f6);
    border-bottom: 1px solid var(--border);
}
.prop-archive__title {
    font-family: var(--font-heading);
    font-size: 46px;
    font-weight: 400;
    color: var(--primary);
    margin-bottom: 8px;
}
.prop-archive__sub {
    font-size: 14px;
    color: var(--text);
    letter-spacing: 0.3px;
}
.prop-archive__body { padding: 56px 0 96px; }

.prop-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 40px 32px;
}
.prop-card {
    display: block;
    background: #fff;
    border: 1px solid var(--border);
    transition: box-shadow 0.3s ease, transform 0.3s ease;
}
.prop-card:hover {
    box-shadow: 0 12px 32px rgba(0,0,0,0.10);
    transform: translateY(-3px);
}
.prop-card__media {
    aspect-ratio: 3 / 2;
    overflow: hidden;
    background: var(--light-gray);
}
.prop-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s ease;
}
.prop-card:hover .prop-card__img { transform: scale(1.04); }
.prop-card__img--empty { width: 100%; height: 100%; background: var(--light-gray); }
.prop-card__body { padding: 22px 24px 26px; }
.prop-card__location {
    display: block;
    font-size: 10px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--secondary);
    margin-bottom: 8px;
}
.prop-card__title {
    font-family: var(--font-heading);
    font-size: 24px;
    font-weight: 400;
    color: var(--primary);
    margin-bottom: 6px;
}
.prop-card__summary {
    font-size: 13px;
    line-height: 1.5;
    color: var(--text);
    margin-bottom: 14px;
}
.prop-card__meta {
    display: flex;
    gap: 18px;
    margin-bottom: 12px;
    font-size: 12px;
    letter-spacing: 0.5px;
    color: var(--text);
    text-transform: uppercase;
}
.prop-card__price {
    font-size: 17px;
    font-weight: 500;
    color: var(--primary);
    letter-spacing: 0.3px;
}
.prop-card__per {
    font-size: 12px;
    color: var(--text);
    font-weight: 400;
}
.prop-archive__pagination { margin-top: 56px; text-align: center; }
.prop-archive__pagination .page-numbers {
    display: inline-block;
    padding: 10px 16px;
    margin: 0 3px;
    border: 1px solid var(--border);
    font-size: 13px;
    color: var(--primary);
}
.prop-archive__pagination .page-numbers.current {
    background: var(--primary);
    color: #fff;
    border-color: var(--primary);
}
.prop-archive__empty {
    padding: 80px 0;
    text-align: center;
    font-size: 15px;
    color: var(--text);
}

@media (max-width: 1024px) {
    .prop-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
    .prop-grid { grid-template-columns: 1fr; gap: 28px; }
    .prop-archive__title { font-size: 34px; }
    .prop-archive__head { padding: calc(var(--mobile-header-height) + 48px) 0 32px; }
}
/* === END PROPERTY ARCHIVE === */

/* === PROPERTY SEARCH BAR === */
.prop-search { background: #fff; border-bottom: 1px solid var(--border); }
.prop-search__bar {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1fr auto;
    align-items: stretch;
    background: #fff;
    border: 1px solid var(--border);
    margin-top: -28px;
    position: relative;
    z-index: 5;
    box-shadow: 0 10px 30px rgba(0,0,0,0.06);
}
.prop-search__field {
    padding: 16px 22px 14px;
    border-right: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.prop-search__field label {
    font-size: 10px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--primary);
    font-weight: 600;
}
.prop-search__field select {
    border: none;
    background: transparent;
    font-size: 14px;
    color: var(--text);
    letter-spacing: 0.5px;
    padding: 4px 0;
    cursor: pointer;
    outline: none;
    text-transform: uppercase;
}
.prop-search__btn {
    background: var(--primary);
    color: #fff;
    font-size: 12px;
    letter-spacing: 2px;
    text-transform: uppercase;
    padding: 0 44px;
    transition: background 0.3s ease;
}
.prop-search__btn:hover { background: var(--secondary); }
.prop-search__toolbar {
    display: flex;
    justify-content: flex-end;
    padding: 18px 0;
}
.prop-search__sort { display: flex; align-items: center; gap: 10px; }
.prop-search__sort label {
    font-size: 11px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--primary);
    font-weight: 600;
}
.prop-search__sort select {
    border: none;
    background: transparent;
    font-size: 12px;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    color: var(--text);
    cursor: pointer;
    outline: none;
}

@media (max-width: 1024px) {
    .prop-search__bar { grid-template-columns: 1fr 1fr; }
    .prop-search__field { border-bottom: 1px solid var(--border); }
    .prop-search__btn { grid-column: 1 / -1; padding: 16px; }
}
@media (max-width: 640px) {
    .prop-search__bar { grid-template-columns: 1fr; margin-top: -16px; }
    .prop-search__field { border-right: none; }
}
/* === END PROPERTY SEARCH BAR === */

/* === SINGLE PROPERTY === */

.sp-main {
    background: var(--cream);
    padding-bottom: 100px;
}

/* --- Hero carousel --- */
.sp-hero {
    width: 100%;
    background: #e8e3da;
}
.sp-hero__slider {
    width: 100%;
    height: 68vh;
    min-height: 420px;
    max-height: 760px;
    display: block;
}
.sp-hero__cell {
    height: 68vh;
    min-height: 420px;
    max-height: 760px;
    width: auto;
    margin-right: 6px;
}
.sp-hero__cell img {
    height: 100%;
    width: auto;
    display: block;
    object-fit: cover;
}
/* Before Flickity initializes, show first image only, full width */
.sp-hero__slider:not(.flickity-enabled) {
    overflow: hidden;
    white-space: nowrap;
}
.sp-hero__slider:not(.flickity-enabled) .sp-hero__cell {
    display: inline-block;
    vertical-align: top;
}
.sp-hero__slider:not(.flickity-enabled) .sp-hero__cell:first-child img {
    width: 100vw;
    object-fit: cover;
}
.sp-hero .flickity-button {
    background: rgba(45, 59, 53, 0.85);
    color: #fff;
    border-radius: 0;
    width: 48px;
    height: 48px;
}
.sp-hero .flickity-button:hover {
    background: var(--secondary);
}
.sp-hero__placeholder {
    height: 40vh;
    background: #e8e3da;
}

/* --- Anchor nav --- */
.sp-nav {
    border-bottom: 1px solid #e0dacf;
    background: var(--cream);
    position: sticky;
    top: 0;
    z-index: 40;
}
.sp-nav__links {
    list-style: none;
    margin: 0;
    padding: 0 5vw;
    display: flex;
    gap: 36px;
    align-items: center;
}
.sp-nav__links li a {
    display: inline-block;
    padding: 18px 0;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--primary);
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: border-color 0.25s ease, color 0.25s ease;
}
.sp-nav__links li a:hover {
    border-bottom-color: var(--secondary);
    color: var(--secondary);
}
.sp-nav__links li:last-child {
    margin-left: auto;
}
.sp-nav__cta {
    color: var(--secondary) !important;
}

/* --- Title header --- */
.sp-header {
    padding: 56px 5vw 8px;
}
.sp-header__crumb {
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--secondary);
    margin: 0 0 18px;
}
.sp-header__crumb a {
    color: var(--secondary);
    text-decoration: none;
}
.sp-header__crumb a:hover {
    text-decoration: underline;
}
.sp-header__crumb-sep {
    margin: 0 8px;
    color: #c9bfae;
}
.sp-title {
    font-family: var(--font-heading);
    font-weight: 400;
    font-size: clamp(38px, 5vw, 68px);
    line-height: 1.05;
    color: var(--primary);
    margin: 0;
}
.sp-title__subtitle {
    display: block;
    font-size: clamp(20px, 2.2vw, 30px);
    color: var(--secondary);
    margin-top: 10px;
}

/* --- Two-column layout --- */
.sp-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 400px;
    gap: 60px;
    padding: 30px 5vw 0;
    align-items: start;
}

/* --- Left content --- */
.sp-intro p {
    font-family: var(--font-heading);
    font-size: clamp(20px, 2vw, 27px);
    line-height: 1.45;
    color: var(--primary);
    margin: 20px 0 40px;
}
.sp-section-label {
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--secondary);
    margin: 0 0 22px;
    padding-top: 26px;
    border-top: 1px solid #e0dacf;
}
.sp-overview__text {
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 1.85;
    color: #3d4a44;
}
.sp-overview__text p {
    margin: 0 0 18px;
}
.sp-overview__text.is-collapsed {
    max-height: 380px;
    overflow: hidden;
    position: relative;
}
.sp-overview__text.is-collapsed::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 90px;
    background: linear-gradient(to bottom, rgba(251, 249, 246, 0), var(--cream));
}
.sp-overview__toggle {
    background: none;
    border: none;
    border-bottom: 1px solid var(--primary);
    padding: 0 0 3px;
    margin-top: 14px;
    cursor: pointer;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--primary);
}
.sp-overview__toggle .sp-overview__toggle-less { display: none; }
.sp-overview__toggle.is-open .sp-overview__toggle-more { display: none; }
.sp-overview__toggle.is-open .sp-overview__toggle-less { display: inline; }

.sp-location { margin-top: 50px; }
.sp-location__name {
    font-family: var(--font-heading);
    font-size: 24px;
    color: var(--primary);
    margin: 0 0 12px;
}
.sp-location__desc {
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 1.85;
    color: #3d4a44;
}

/* --- Sticky info panel --- */
.sp-sidebar { min-width: 0; }
.sp-panel {
    background: var(--cream);
    border: 1px solid #e0dacf;
    position: sticky;
    top: 80px;
}
.sp-panel__row {
    border-bottom: 1px solid #e0dacf;
    padding: 22px 26px;
}
.sp-panel__row:last-child { border-bottom: none; }
.sp-panel__label {
    display: block;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #8a7d68;
    margin-bottom: 5px;
}
.sp-panel__value {
    font-family: var(--font-heading);
    font-size: 25px;
    line-height: 1.2;
    color: var(--primary);
}
.sp-panel__value--price { font-size: 30px; }
.sp-panel__value--small { font-size: 18px; }
.sp-panel__value-sub {
    display: block;
    font-family: var(--font-body);
    font-size: 11px;
    letter-spacing: 0.06em;
    color: #8a7d68;
    margin-top: 2px;
}
.sp-panel__price-item + .sp-panel__price-item { margin-top: 16px; }
.sp-panel__specs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px 16px;
}
.sp-panel__cta {
    display: block;
    text-align: center;
    background: var(--primary);
    color: #fff;
    text-decoration: none;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    padding: 17px 20px;
    transition: background 0.25s ease;
}
.sp-panel__cta:hover { background: var(--secondary); color: #fff; }
.sp-panel__advisor {
    display: flex;
    align-items: center;
    gap: 16px;
}
.sp-panel__advisor-photo {
    width: 62px;
    height: 62px;
    object-fit: cover;
    border-radius: 50%;
    flex-shrink: 0;
}
.sp-panel__advisor-name {
    display: block;
    font-family: var(--font-heading);
    font-size: 19px;
    color: var(--primary);
}
.sp-panel__advisor-role {
    display: block;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #8a7d68;
    margin-top: 3px;
}

/* --- Full gallery grid --- */
.sp-gallery { padding: 70px 5vw 0; }
.sp-gallery__grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.sp-gallery__item { margin: 0; }
.sp-gallery__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.sp-gallery__item:nth-child(3n + 1) { grid-column: 1 / -1; }

/* --- Related properties --- */
.sp-related { padding: 70px 5vw 0; }
.sp-related__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}
.sp-related__card {
    text-decoration: none;
    display: block;
    background: #fff;
    border: 1px solid #eee8de;
    transition: box-shadow 0.3s ease, transform 0.3s ease;
}
.sp-related__card:hover {
    box-shadow: 0 14px 34px rgba(45, 59, 53, 0.12);
    transform: translateY(-3px);
}
.sp-related__img { display: block; overflow: hidden; aspect-ratio: 3 / 2; background: #e8e3da; }
.sp-related__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sp-related__body { display: block; padding: 18px 20px 22px; }
.sp-related__name {
    display: block;
    font-family: var(--font-heading);
    font-size: 21px;
    color: var(--primary);
    line-height: 1.2;
}
.sp-related__loc {
    display: block;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--secondary);
    margin-top: 6px;
}
.sp-related__price {
    display: block;
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 600;
    color: var(--primary);
    margin-top: 10px;
}
.sp-related__meta {
    display: flex;
    gap: 14px;
    font-family: var(--font-body);
    font-size: 11px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #8a7d68;
    margin-top: 8px;
}

/* --- Responsive --- */
@media (max-width: 1100px) {
    .sp-layout {
        grid-template-columns: 1fr;
        gap: 40px;
    }
    .sp-panel { position: static; }
    .sp-related__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
    .sp-hero__slider,
    .sp-hero__cell {
        height: 46vh;
        min-height: 300px;
    }
    .sp-nav__links {
        gap: 20px;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .sp-header { padding-top: 36px; }
    .sp-panel__specs { grid-template-columns: 1fr 1fr; }
    .sp-gallery__grid { grid-template-columns: 1fr; }
    .sp-gallery__item:nth-child(3n + 1) { grid-column: auto; }
    .sp-related__grid { grid-template-columns: 1fr; }
}

/* --- Related properties: OB-spec carousel (ADDED 2026-08-19) ---
 * Benchmarked against OB Private's OBCarousel "Explore Further" block
 * (confirmed from the Eaton Mews South page source). OB's own breakpoints
 * are 551 / 769 / 1025, NOT the 640 / 1100 used by the generic .sp-*
 * responsive block above -- so these rules are placed AFTER it and override
 * .sp-related__grid only. The other selectors in those media queries
 * (.sp-layout, .sp-panel, .sp-gallery__grid) are deliberately untouched.
 *
 * Column counts per breakpoint match OB exactly:
 *   >=1025px  4 across
 *   769-1024  3 across
 *   551-768   2 across
 *   <=550     1 across (90% width, so the next card peeks in -- this is
 *             OB's deliberate affordance signalling "swipe for more")
 *
 * Whether the carousel actually engages is decided in flickity-carousel.js
 * by comparing card count against the visible count. When it does NOT
 * engage the grid rules below apply as a plain static row. */
@media (min-width: 1025px) {
    .sp-related__grid { grid-template-columns: repeat(4, 1fr); }
}
@media (min-width: 769px) and (max-width: 1024px) {
    .sp-related__grid { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 551px) and (max-width: 768px) {
    .sp-related__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 550px) {
    .sp-related__grid { grid-template-columns: 1fr; }
}

/* Flickity-active state. Grid must collapse to block or the carousel
 * viewport gets squeezed into a single grid track. gap: no longer applies
 * once display:block takes over, so spacing moves to margin-right. */
.sp-related__grid.flickity-enabled {
    display: block;
    gap: 0;
}
.sp-related__grid.flickity-enabled .sp-related__card {
    width: calc(25% - 18px);
    margin-right: 24px;
}
@media (max-width: 1024px) {
    .sp-related__grid.flickity-enabled .sp-related__card { width: calc(33.333% - 16px); }
}
@media (max-width: 768px) {
    .sp-related__grid.flickity-enabled .sp-related__card { width: calc(50% - 12px); }
}
@media (max-width: 550px) {
    .sp-related__grid.flickity-enabled .sp-related__card { width: 90%; }
}

/* Arrow buttons. Positioned above the carousel, matching the pattern
 * already established for .ptnrs-key-grid rather than OB's own offsets --
 * GHDR's section heading sits at a different height than OB's. */
.sp-related { position: relative; }
.sp-related__grid.flickity-enabled .flickity-prev-next-button {
    top: -52px;
    width: 40px;
    height: 40px;
    border-radius: 0;
    background: transparent;
    transform: none;
}
.sp-related__grid.flickity-enabled .flickity-prev-next-button.previous { left: auto; right: 48px; }
.sp-related__grid.flickity-enabled .flickity-prev-next-button.next { right: 0; }
.sp-related__grid.flickity-enabled .flickity-prev-next-button:disabled { opacity: 0.25; }
.sp-related__grid.flickity-enabled .flickity-prev-next-button .arrow { fill: var(--primary); }

/* === END SINGLE PROPERTY === */

/* === SP ICONS === */
.sp-icon {
    display: inline-block;
    vertical-align: middle;
    color: #b7a489;
}
.sp-panel__value--icon {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}
.sp-panel__value--icon .sp-icon--bed { width: 26px; height: 26px; margin-top: -4px; }
.sp-panel__value--icon .sp-icon--bath { width: 26px; height: 19px; }
.sp-related__meta-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.sp-related__meta-item .sp-icon--bed { width: 20px; height: 20px; }
.sp-related__meta-item .sp-icon--bath { width: 20px; height: 15px; }
/* === END SP ICONS === */

/* === PROP CARD META ICONS === */
.prop-card__meta-item {
    display: inline-flex;
    align-items: center;
    gap: 7px;
}
.prop-card__meta-item .sp-icon--bed { width: 21px; height: 21px; }
.prop-card__meta-item .sp-icon--bath { width: 21px; height: 15px; }
/* === END PROP CARD META ICONS === */

/* === SP PANEL V2 (OB STRUCTURE) === */
.sp-sidebar { padding-top: 46px; }
.sp-panel { overflow: visible; }
.sp-panel__badge {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 92px;
    height: 92px;
    border-radius: 50%;
    background: var(--cream);
    border: 1px solid #e0dacf;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2;
}
.sp-panel__badge svg { width: 62%; height: 62%; }
.sp-panel__tagline {
    padding: 66px 30px 26px;
    border-bottom: 1px solid #e0dacf;
    text-align: center;
}
.sp-panel__tagline p {
    font-family: var(--font-heading);
    font-size: 19px;
    line-height: 1.45;
    color: var(--primary);
    margin: 0;
}
.sp-panel__buttons {
    display: flex;
    border-bottom: 1px solid #e0dacf;
}
.sp-panel__btn {
    flex: 1 1 50%;
    display: block;
    text-align: center;
    background: var(--secondary);
    color: #fff;
    text-decoration: none;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    padding: 18px 10px;
    transition: opacity 0.3s ease;
}
.sp-panel__btn:hover { opacity: 0.75; color: #fff; }
.sp-panel__btn + .sp-panel__btn { border-left: 1px solid #e0dacf; }

/* Panel without tagline still needs badge clearance */
.sp-panel__badge + .sp-panel__buttons { margin-top: 60px; }

.sp-panel__contacts { border-top: 1px solid #e0dacf; }
.sp-panel__contact {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 22px 26px 6px;
}
.sp-panel__contact + .sp-panel__socials { padding: 10px 26px 22px; }
.sp-panel__socials + .sp-panel__contact { border-top: 1px solid #e0dacf; }
.sp-panel__contact-name {
    display: block;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--primary);
}
.sp-panel__contact-role {
    display: block;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #8a7d68;
    margin-top: 3px;
}
.sp-panel__contact-tel {
    display: block;
    font-family: var(--font-heading);
    font-size: 24px;
    color: var(--primary);
    text-decoration: none;
    margin-top: 10px;
}
.sp-panel__contact-tel:hover { color: var(--secondary); }
.sp-panel__contact-photo img {
    width: 66px;
    height: 66px;
    object-fit: cover;
    border-radius: 50%;
    display: block;
    flex-shrink: 0;
}
.sp-panel__socials {
    display: flex;
    gap: 10px;
}
.sp-panel__social {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #b7a489;
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.25s ease;
}
.sp-panel__social:hover { background: var(--primary); color: #fff; }
.sp-panel__social svg { width: 16px; height: 16px; }

.sp-panel__share-row {
    border-top: 1px solid #e0dacf;
}
.sp-panel__share-btn {
    width: 100%;
    background: none;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 20px;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--primary);
    transition: opacity 0.3s ease;
}
.sp-panel__share-btn:hover { opacity: 0.6; }
.sp-panel__share-btn svg { width: 17px; height: 17px; color: #b7a489; }

/* --- Share modal --- */
.sp-share {
    position: fixed;
    inset: 0;
    z-index: 200;
    display: flex;
    align-items: center;
    justify-content: center;
}
.sp-share[hidden] { display: none; }
.sp-share__overlay {
    position: absolute;
    inset: 0;
    background: rgba(45, 59, 53, 0.55);
}
.sp-share__content {
    position: relative;
    background: #fff;
    width: min(680px, 92vw);
    padding: 54px 48px;
}
.sp-share__close {
    position: absolute;
    top: 18px;
    right: 18px;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--primary);
    padding: 6px;
}
.sp-share__close svg { width: 15px; height: 15px; display: block; }
.sp-share__title {
    font-family: var(--font-body);
    font-size: 20px;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--primary);
    margin: 0 0 30px;
}
.sp-share__buttons { display: flex; flex-wrap: wrap; gap: 12px; }
.sp-share__link {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    color: #fff;
    text-decoration: none;
    font-family: Helvetica, Arial, sans-serif;
    font-size: 15px;
    padding: 10px 16px;
    border-radius: 5px;
    transition: filter 0.2s ease;
}
.sp-share__link:hover { filter: brightness(0.85); color: #fff; }
.sp-share__link svg { width: 17px; height: 17px; }
.sp-share__link--facebook { background: #3b5998; }
.sp-share__link--x { background: #000; }
.sp-share__link--email { background: #777; }
.sp-share__link--pinterest { background: #bd081c; }
.sp-share__link--linkedin { background: #0077b5; }
.sp-share__link--whatsapp { background: #25d366; }
body.sp-share-open { overflow: hidden; }

@media (max-width: 640px) {
    .sp-share__content { padding: 44px 24px; }
    .sp-panel__tagline { padding: 60px 20px 22px; }
    .sp-panel__contact { padding: 20px 20px 6px; }
    .sp-panel__contact + .sp-panel__socials { padding: 10px 20px 20px; }
}
@media (max-width: 1100px) {
    .sp-panel { position: relative; top: auto; }
}
/* === END SP PANEL V2 === */

/* === SP LAYOUT V2 (OB STRIP + RAISED PANEL) === */
.sp-crumb {
    padding: 26px 5vw 20px;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--secondary);
    margin: 0;
}
.sp-crumb a { color: var(--secondary); text-decoration: none; }
.sp-crumb a:hover { text-decoration: underline; }
.sp-crumb__sep { margin: 0 8px; color: #c9bfae; }

/* OB-style fixed-height image strip */
.sp-hero { padding: 0 5vw; background: var(--cream); }
.sp-hero__slider,
.sp-hero__cell {
    height: clamp(280px, 29vw, 430px);
    min-height: 0;
    max-height: none;
}
.sp-hero__cell { margin-right: 14px; }
.sp-hero__slider:not(.flickity-enabled) .sp-hero__cell:first-child img { width: auto; }

.sp-gallery-link-row { padding: 18px 5vw 0; }
.sp-gallery-link {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--primary);
    text-decoration: none;
}
.sp-gallery-link:hover { color: var(--secondary); }
.sp-gallery-link svg { width: 15px; height: 15px; }

/* Title inside left column; panel rises beside it */
.sp-header { padding: 0 0 10px; }
.sp-layout { padding-top: 44px; }
.sp-sidebar { padding-top: 46px; }

@media (max-width: 640px) {
    .sp-hero { padding: 0 4vw; }
    .sp-hero__slider,
    .sp-hero__cell {
        height: 240px;
        min-height: 0;
    }
    .sp-crumb { padding-top: 18px; }
}
/* === END SP LAYOUT V2 === */

/* === SP LAYOUT V3 (HEADER OFFSET, GRID AREAS, OB CELL RATIO) === */

/* Clear the fixed site header, same pattern as prop-archive__head */
.sp-main { padding-top: var(--header-height); }

/* Sticky elements must sit below the fixed header, not under it */
.sp-nav { top: var(--header-height); }
.sp-panel { top: calc(var(--header-height) + 24px); }

/* FIX 2026-08-24: the rule immediately above is unconditional, so on mobile
 * it was overriding the `top: auto` set at ~line 6925 while `position:
 * relative` (also from that block) remained in force. Under `sticky`, `top`
 * is only a scroll threshold and does nothing visually. Under `relative` it
 * is a real visual offset -- so the panel was being PAINTED about 104px
 * lower than its layout box, and because .sp-panel carries
 * `background: var(--cream)` plus a border, it covered the first ~3 lines of
 * the .sp-intro excerpt on every property page.
 *
 * Symptom was the excerpt appearing to start mid-sentence on phones while
 * DevTools showed the <p> at full height with no truncation -- the text was
 * always rendered, just painted over.
 *
 * Do not remove this without also scoping the declaration above to
 * `min-width: 1101px`; the two must not both be unconditional. */
@media (max-width: 1100px) {
    .sp-panel { top: auto; }
}

/* Uniform OB-ratio cells (approx 492x276 at full desktop), cropped to fit */
.sp-hero__cell {
    aspect-ratio: 492 / 276;
    width: auto;
    height: clamp(220px, 14.5vw, 276px);
}
.sp-hero__slider { height: clamp(220px, 14.5vw, 276px); }
.sp-hero__cell img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Three grid children: title top-left, content below it, panel spans right */
.sp-layout {
    grid-template-columns: minmax(0, 1fr) 400px;
    grid-template-rows: auto 1fr;
    gap: 20px 60px;
}
.sp-header { grid-column: 1; grid-row: 1; }
.sp-content { grid-column: 1; grid-row: 2; }
.sp-sidebar { grid-column: 2; grid-row: 1 / span 2; }

@media (max-width: 1100px) {
    .sp-layout {
        grid-template-columns: 1fr;
        grid-template-rows: auto;
    }
    /* OB mobile order: title, panel, then content */
    .sp-header { grid-column: 1; grid-row: auto; order: 1; }
    .sp-sidebar { grid-column: 1; grid-row: auto; order: 2; }
    .sp-content { grid-column: 1; grid-row: auto; order: 3; }
}
@media (max-width: 640px) {
    .sp-main { padding-top: var(--mobile-header-height); }
    .sp-hero__slider,
    .sp-hero__cell { height: 200px; }
}
/* === END SP LAYOUT V3 === */

/* === SP MOBILE FIXED CTA (OB STYLE) === */
@media (max-width: 767px) {
    .sp-panel__buttons {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 80;
        border-bottom: none;
        padding-bottom: env(safe-area-inset-bottom, 0);
        background: var(--secondary);
    }
    .sp-panel__btn {
        padding-top: 19px;
        padding-bottom: 16px;
    }
    /* Keep end-of-page content reachable above the fixed bar */
    .sp-main {
        padding-bottom: calc(120px + env(safe-area-inset-bottom, 0));
    }
    /* Panel top: badge flows into tagline directly once buttons are fixed */
    .sp-panel__badge + .sp-panel__buttons { margin-top: 0; }
}
/* === END SP MOBILE FIXED CTA === */

/* === PROP LIST LARGE CARDS (OB SEARCH RESULTS) === */
.prop-list {
    display: flex;
    flex-direction: column;
    gap: 56px;
}
.prop-card-lg {
    display: flex;
    border: 1px solid #e0dacf;
    background: var(--cream);
    position: relative;
}
.prop-card-lg__media {
    width: 50%;
    flex-shrink: 0;
    position: relative;
    aspect-ratio: 5 / 3;
    background: #e8e3da;
    overflow: hidden;
}
.prop-card-lg__slider { height: 100%; }
.prop-card-lg__slider:not(.flickity-enabled) {
    display: flex;
    height: 100%;
    overflow: hidden;
}
.prop-card-lg__cell {
    width: 100%;
    height: 100%;
    flex-shrink: 0;
}
.prop-card-lg__cell a { display: block; width: 100%; height: 100%; }
.prop-card-lg__cell img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.prop-card-lg__media .flickity-viewport { height: 100% !important; }
.prop-card-lg__media .flickity-slider { height: 100%; }
.prop-card-lg__media .flickity-button {
    position: absolute;
    top: 0;
    height: 100%;
    width: 50%;
    background: none;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
}
.prop-card-lg__media .flickity-button.previous { left: 0; justify-content: flex-start; padding-left: 16px; }
.prop-card-lg__media .flickity-button.next { right: 0; justify-content: flex-end; padding-right: 16px; }
.prop-card-lg__media .flickity-button-icon {
    fill: #fff;
    width: 20px;
    height: 20px;
    opacity: 0.75;
    transition: opacity 0.3s ease;
}
.prop-card-lg__media .flickity-button:hover .flickity-button-icon { opacity: 1; }
.prop-card-lg__media .flickity-page-dots {
    position: absolute;
    bottom: 16px;
    left: 0;
    width: 100%;
    display: flex;
    justify-content: center;
    gap: 10px;
    list-style: none;
    margin: 0;
    padding: 0;
}
.prop-card-lg__media .flickity-page-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #fff;
    opacity: 0.5;
    border: none;
    cursor: pointer;
    text-indent: -9999px;
    overflow: hidden;
    padding: 0;
    transition: opacity 0.3s ease;
}
.prop-card-lg__media .flickity-page-dot.is-selected { opacity: 1; }
.prop-card-lg__empty { width: 100%; height: 100%; background: #e8e3da; }

.prop-card-lg__details {
    width: 50%;
    padding: 3.2%;
    display: flex;
    flex-direction: column;
    position: relative;
    transition: background-color 0.3s ease;
}
.prop-card-lg:hover .prop-card-lg__details { background-color: rgba(245, 238, 227, 0.85); }
.prop-card-lg__title {
    font-family: var(--font-heading);
    font-weight: 400;
    font-size: clamp(24px, 2.1vw, 38px);
    line-height: 1.15;
    margin: 0;
    color: var(--primary);
}
.prop-card-lg__title a {
    color: var(--primary);
    text-decoration: none;
    position: relative;
    z-index: 2;
}
.prop-card-lg__location {
    display: block;
    font-family: var(--font-heading);
    font-style: italic;
    font-weight: 300;
    font-size: clamp(22px, 1.9vw, 34px);
    color: var(--primary);
}
.prop-card-lg__desc {
    font-family: var(--font-body);
    font-size: 14px;
    line-height: 1.6;
    color: #3d4a44;
    margin: 26px 0 0;
}
.prop-card-lg__bottom {
    margin-top: auto;
    padding-top: 34px;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
}
.prop-card-lg__icons {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    gap: 30px; /* CHANGED 2026-08-11: 26px -> 30px, see note below */
}
/* CHANGED 2026-08-11: icons enlarged 24px -> 27px and the count enlarged
 * 11px -> 13px with tighter tracking. RATIONALE: OB Private renders its card
 * icons at 27px wide with a noticeably heavier count beneath; at 24px/11px ours
 * read as small and faint next to theirs. Item gap widened 26px -> 30px so the
 * three icons breathe now that a third has been added.
 * The 27px width is shared by all three icons -- heights differ because each
 * viewBox has a different aspect ratio. If you change one width, change all
 * three or they will no longer sit on a common baseline. */
.prop-card-lg__icons li {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    font-family: var(--font-body);
    font-size: 13px;
    letter-spacing: 0.04em;
    color: var(--primary);
}
/* CHANGED 2026-08-11: all three icons now share height 28px.
 * RATIONALE: each <li> is a column flex, so the number sits directly under its
 * own icon. With bed at 27px, sofa 21px and bath 20px, the three numbers landed
 * at three different heights and the row read as crooked -- "5.5" sat highest,
 * "5" lowest. A shared box height puts every number on the same line.
 * The artwork does NOT change size: SVG preserveAspectRatio defaults to
 * "xMidYMid meet", so each icon scales to its 27px width and is centred inside
 * the 28px box. The extra height is empty space, not scaling.
 * These four values must stay equal. Changing one height alone re-breaks the
 * alignment, which is exactly the bug this replaced. */
.prop-card-lg__icons .sp-icon--bed { width: 27px; height: 28px; }
.prop-card-lg__icons .sp-icon--bath { width: 27px; height: 28px; }
.prop-card-lg__icons .sp-icon--sofa { width: 27px; height: 28px; }
.prop-card-lg__price { text-align: right; }
.prop-card-lg__price-label {
    display: block;
    font-family: var(--font-body);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #8a7d68;
    margin-bottom: 4px;
}
.prop-card-lg__price-value {
    font-family: var(--font-body);
    font-size: 15px;
    font-weight: 500;
    letter-spacing: 0.08em;
    color: var(--primary);
    text-transform: uppercase;
}
.prop-card-lg__link {
    position: absolute;
    inset: 0;
    z-index: 1;
}

@media (max-width: 767px) {
    .prop-list { gap: 36px; }
    .prop-card-lg { flex-direction: column; }
    .prop-card-lg__media,
    .prop-card-lg__details { width: 100%; }
    .prop-card-lg__details { padding: 20px; }
    .prop-card-lg__bottom { padding-top: 24px; }
}
/* === END PROP LIST LARGE CARDS === */

/* === SP GALLERY POPUP (OB STYLE) === */
.sp-gallery-link {
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
}
.sp-galpop {
    position: fixed;
    inset: 0;
    z-index: 9000;
    background: #fff;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 70px 5vw 60px;
}
.sp-galpop[hidden] { display: none; }
.sp-galpop__close {
    position: fixed;
    top: 26px;
    right: 30px;
    z-index: 2;
    background: #fff;
    border: none;
    cursor: pointer;
    color: var(--primary);
    padding: 10px;
}
.sp-galpop__close svg { width: 17px; height: 17px; display: block; }
.sp-galpop__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 22px;
    max-width: 1500px;
}
.sp-galpop__item {
    display: block;
    aspect-ratio: 5 / 3;
    overflow: hidden;
    background: #e8e3da;
}
.sp-galpop__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.4s ease;
}
.sp-galpop__item:hover img { transform: scale(1.03); }
body.sp-galpop-open { overflow: hidden; }

@media (max-width: 1100px) {
    .sp-galpop__grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 767px) {
    .sp-galpop { padding: 64px 4vw 40px; }
    .sp-galpop__grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }
    .sp-galpop__close { top: 14px; right: 14px; }
}
@media (max-width: 480px) {
    .sp-galpop__grid { grid-template-columns: 1fr; }
}
/* === END SP GALLERY POPUP === */

/* === ARCHIVE HEAD OB RESTYLE === */
/* Visually hidden, kept for screen readers and SEO */
.ghdr-sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}
/* Title block gone: pull the search bar up near the header like OB */
.prop-archive__head { padding-bottom: 0; padding-top: 90px; }
.prop-archive__head .ghdr-container { padding-top: 12px; padding-bottom: 27px; }

/* Subtle card shadow on the search bar, OB style */
.prop-search__bar {
    box-shadow: 0 14px 34px rgba(45, 59, 53, 0.09);
}

/* Card copy in serif, OB proportions */
/* CHANGED 2026-08-11: added a 6-line clamp. RATIONALE: OB Private caps its card
 * description and lets it trail off with an ellipsis, so every card in the row
 * is the same height regardless of excerpt length. Without this, one long
 * excerpt makes its card taller than its neighbours and the row looks ragged.
 * Currently invisible -- every GHDR excerpt is under 6 lines -- so this is
 * pre-emptive. To show excerpts in full again, delete the four clamp lines. */
.prop-card-lg__desc {
    font-family: var(--font-heading);
    font-size: clamp(16px, 1.35vw, 19px);
    line-height: 1.55;
    color: var(--primary);
    margin: 30px 0 0;
    display: -webkit-box;
    -webkit-line-clamp: 6;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
/* === END ARCHIVE HEAD OB RESTYLE === */

/* === SP INTRO (EXCERPT, OB SCALE) === */
.sp-intro p {
    font-family: var(--font-heading);
    font-weight: 400;
    font-size: clamp(22px, 2.2vw, 32px);
    line-height: 1.4;
    color: var(--primary);
    margin: 10px 0 46px;
}
@media (max-width: 767px) {
    .sp-intro p { margin: 4px 0 34px; }
}
/* === END SP INTRO === */

/* === SP MOBILE OB PARITY (VAL TAB, WA REMOVAL, SPACING) === */

/* Re-enable the Book a Valuation side tab on mobile (OB shows it) */
@media (max-width: 768px) {
    .fixed-val-cta { display: flex; }
}

@media (max-width: 767px) {
    /* Pull the info panel up toward the title (OB spacing) */
    .sp-layout { gap: 0 60px; padding-top: 26px; }
    .sp-header { padding-bottom: 0; }
    .sp-sidebar { padding-top: 50px; }

    /* Tighten intro-to-overview rhythm under SHARE */
    .sp-intro p { margin: 0 0 22px; }
    .sp-section-label { padding-top: 20px; }
}
/* === END SP MOBILE OB PARITY === */

/* === PS DOCKED SEARCH (OB DockedSearch) === */
.ps-dock {
    position: fixed;
    left: 50%;
    bottom: 26px;
    transform: translateX(-50%);
    z-index: 900;
    display: flex;
    align-items: stretch;
    background: #fff;
    box-shadow: 0 14px 40px rgba(45, 59, 53, 0.18);
    max-width: min(760px, 92vw);
}
.ps-dock[hidden] { display: none; }
.ps-dock__seg {
    background: none;
    border: none;
    border-right: 1px solid #e0dacf;
    cursor: pointer;
    padding: 16px 22px;
    text-align: left;
    min-width: 0;
}
.ps-dock__value {
    display: block;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 200px;
}
.ps-dock__go {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 58px;
    background: var(--secondary);
    color: #fff;
    transition: opacity 0.25s ease;
}
.ps-dock__go:hover { opacity: 0.8; color: #fff; }

@media (max-width: 640px) {
    .ps-dock { bottom: 14px; max-width: 94vw; }
    .ps-dock__seg { padding: 13px 12px; }
    .ps-dock__seg:nth-child(3) { display: none; }
    .ps-dock__value { max-width: 110px; font-size: 11px; }
    .ps-dock__go { width: 48px; }
}
/* === END PS DOCKED SEARCH === */

/* === GHC SUCCESS BOX (OB REGISTER-INTEREST STYLE) === */
.ghc-form__success {
    display: block;
    border: 1px solid #b7a489;
    background: none;
    padding: clamp(34px, 4vw, 56px) clamp(26px, 3.4vw, 52px);
    margin-top: 28px;
}
.ghc-form__success[hidden] { display: none; }
.ghc-form__success p {
    font-family: var(--font-heading);
    font-weight: 400;
    font-size: clamp(21px, 2vw, 28px);
    line-height: 1.5;
    color: var(--primary);
    margin: 0;
}
/* === END GHC SUCCESS BOX === */

/* === PS OB PARITY V2 (LANDING OVERLAP, Z-ORDER, MOBILE WHITE PANEL) === */

/* Desktop: full bar visible on landing, straddling the hero bottom (OB) */
@media (min-width: 1200px) {
    .property-search { margin-top: -122px; }
}

/* Valuation tab must sit above the search UI everywhere (OB) */
@media (max-width: 1199px) {
    .property-search { z-index: 950; }
}
.ps-dock { z-index: 940; }

/* Type-to-filter input (OB TYPE HERE) */
.ps-panel__filter {
    display: block;
    width: calc(100% - 48px);
    margin: 12px 24px 6px;
    background: none;
    border: none;
    border-bottom: 1px solid var(--ps-divider);
    padding: 8px 0;
    font-family: var(--font-body);
    font-size: 13px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--ps-cream);
    outline: none;
}
.ps-panel__filter::placeholder { color: rgba(237, 230, 214, 0.45); }

/* Mobile: white full-width panel docked under the header (OB) */
@media (max-width: 1199px) {
    .property-search .ps-panel {
        position: fixed;
        top: var(--mobile-header-height);
        left: 0;
        right: 0;
        bottom: auto;
        max-height: calc(100vh - var(--mobile-header-height) - 96px);
        background: #fff;
        border: none;
        border-bottom: 1px solid #e0dacf;
        box-shadow: 0 24px 40px rgba(45, 59, 53, 0.16);
        padding: 8px 0 14px;
    }
    .property-search .ps-panel__filter {
        border-bottom-color: #e0dacf;
        color: var(--primary);
    }
    .property-search .ps-panel__filter::placeholder { color: #b3a893; }
    .property-search .ps-panel__group-label { color: #9a8a73; }
    .property-search .ps-panel__item {
        color: var(--primary);
        background: none;
        text-transform: uppercase;
        letter-spacing: 0.1em;
        font-size: 14px;
        padding: 15px 24px;
        border-bottom: 1px solid #f0ebe1;
    }
    .property-search .ps-panel__item[aria-selected="true"] { color: #9a8a73; }
}
/* === END PS OB PARITY V2 === */

/* === PS MOBILE EXPANDED CARD (OB FULL SEARCH) === */
.ps-mobile-close { display: none; }

@media (max-width: 1199px) {
    /* Expanded: pill grows into the full white card under the header (OB) */
    .property-search.is-mobile-open {
        bottom: auto;
        top: calc(var(--mobile-header-height) + 10px);
    }
    .property-search.is-mobile-open .property-search__form {
        flex-direction: column;
        align-items: stretch;
        height: auto;
        background: #fff;
        border: none;
        box-shadow: 0 24px 50px rgba(45, 59, 53, 0.22);
        cursor: default;
        padding: 6px 0 0;
        position: relative;
    }
    .property-search.is-mobile-open .property-search__fields {
        flex-direction: column;
        height: auto;
    }
    /* Reveal every field OB shows */
    .property-search.is-mobile-open .property-search__field--dropdown[data-dropdown="type"],
    .property-search.is-mobile-open .property-search__field--dropdown[data-dropdown="bedrooms"],
    .property-search.is-mobile-open .property-search__field.property-search__buttons {
        display: flex;
    }
    .property-search.is-mobile-open .property-search__field {
        padding: 17px 24px;
        border-bottom: 1px solid #f0ebe1;
        justify-content: flex-start;
    }
    .property-search.is-mobile-open .property-search__label {
        color: #8a7d68;
    }
    .property-search.is-mobile-open .property-search__value {
        color: var(--primary);
    }
    .property-search.is-mobile-open .property-search__buttons {
        flex-direction: row;
        gap: 12px;
        border-bottom: none;
        padding: 18px 24px 22px;
    }
    .property-search.is-mobile-open .property-search__btn {
        flex: 1 1 50%;
        text-align: center;
        background: var(--primary);
        color: #fff;
        padding: 15px 10px;
        font-size: 11px;
        font-weight: 600;
        letter-spacing: 0.14em;
        text-transform: uppercase;
        text-decoration: none;
    }
    /* Close X, top-right of the expanded card */
    .property-search.is-mobile-open .ps-mobile-close {
        display: block;
        position: absolute;
        top: 10px;
        right: 10px;
        z-index: 3;
        background: none;
        border: none;
        cursor: pointer;
        color: var(--primary);
        padding: 8px;
    }
    .ps-mobile-close svg { width: 14px; height: 14px; display: block; }
    /* NOTE (v1.9.22): the old "panels open below the header offset" rule that
       lived here (top: calc(--mobile-header-height + 10px)) was a leftover
       from the reverted downward-panel design. Combined with V3's
       bottom: calc(100% + 8px) it over-constrained the absolutely-positioned
       panel into computed height 0 -- fields appeared dead in the expanded
       card even though JS toggled is-open correctly. Removed so V3's drop-up
       governs in both compact-bar and card states. */
}
/* === END PS MOBILE EXPANDED CARD === */

/* === PS DOCKED IN-PLACE (VIDEO-VERIFIED OB BEHAVIOR) === */
#psSentinel { height: 1px; }
.ps-dock-go { display: none; }

@media (min-width: 1200px) {
    /* Collapsed docked pill: the real bar, fixed bottom-center, values only */
    .property-search.is-docked {
        position: fixed;
        left: 50%;
        bottom: 26px;
        transform: translateX(-50%);
        margin-top: 0;
        width: min(780px, 92vw);
        z-index: 940;
        cursor: pointer;
    }
    .property-search.is-docked .property-search__form {
        box-shadow: 0 14px 40px rgba(45, 59, 53, 0.2);
    }
    .property-search.is-docked:not(.is-dock-open) .property-search__label { display: none; }
    .property-search.is-docked:not(.is-dock-open) .property-search__field { padding-top: 16px; padding-bottom: 16px; }
    .property-search.is-docked:not(.is-dock-open) .property-search__buttons { display: none; }
    .property-search.is-docked:not(.is-dock-open) .ps-dock-go {
        display: flex;
        align-items: center;
        justify-content: center;
        align-self: stretch;
        width: 58px;
        background: var(--secondary);
        color: #fff;
        order: 99;
        flex-shrink: 0;
    }
    /* Expanded in place: full bar, wider, panels open upward (existing rule) */
    .property-search.is-docked.is-dock-open {
        width: min(1160px, 94vw);
        cursor: default;
    }
}
/* === END PS DOCKED IN-PLACE === */

/* === PS DOCKED WHITE THEME + SMOOTH TRANSITIONS (OB) === */
@media (min-width: 1200px) {
    /* Slide-up entrance instead of a hard jump */
    @keyframes psDockIn {
        from { opacity: 0; transform: translate(-50%, 26px); }
        to   { opacity: 1; transform: translate(-50%, 0); }
    }
    .property-search.is-docked {
        animation: psDockIn 0.35s ease both;
        transition: width 0.3s ease;
    }

    /* OB docked bar is WHITE with dark values - override the dark bar theme */
    .property-search.is-docked .property-search__form {
        background: #fff;
        border: 1px solid #eee8de;
    }
    .property-search.is-docked .property-search__field {
        border-color: #e0dacf;
        transition: padding 0.3s ease;
    }
    .property-search.is-docked .property-search__value {
        color: var(--primary);
        display: block;
    }
    .property-search.is-docked .property-search__label {
        color: #8a7d68;
    }
    .property-search.is-docked .property-search__trigger svg,
    .property-search.is-docked .property-search__chevron {
        color: #9a8a73;
        stroke: #9a8a73;
    }
    /* Expanded-in-place keeps the white theme; panels stay readable */
    .property-search.is-docked .ps-panel {
        background: #fff;
        border: 1px solid #e0dacf;
        box-shadow: 0 -18px 40px rgba(45, 59, 53, 0.14);
    }
    .property-search.is-docked .ps-panel__item { color: var(--primary); }
    .property-search.is-docked .ps-panel__item[aria-selected="true"] { color: #9a8a73; }
    .property-search.is-docked .ps-panel__group-label { color: #9a8a73; }
    .property-search.is-docked .ps-panel__filter {
        color: var(--primary);
        border-bottom-color: #e0dacf;
    }
    .property-search.is-docked .ps-panel__filter::placeholder { color: #b3a893; }
    .property-search.is-docked .property-search__btn {
        background: var(--primary);
        color: #fff;
    }
}
/* === END PS DOCKED WHITE THEME === */

/* === PS DOCKED TEXT FORCE-VISIBLE (OB COLLAPSED BAR) === */
@media (min-width: 1200px) {
    /* Collapsed docked bar shows the VALUE line only, like OB screenshot:
       LOCATIONS/PROPERTIES | ANY | ANY - dark, uppercase, guaranteed visible */
    .property-search.is-docked:not(.is-dock-open) .property-search__trigger > label {
        display: none !important;
    }
    .property-search.is-docked .property-search__trigger > .property-search__value {
        display: block !important;
        visibility: visible !important;
        opacity: 1 !important;
        color: var(--primary) !important;
        font-size: 13px !important;
        line-height: 1.3 !important;
        text-indent: 0 !important;
        max-width: none !important;
        min-width: 0;
    }
    .property-search.is-docked .property-search__field {
        min-width: 150px;
    }
    .property-search.is-docked .property-search__field--destinations {
        min-width: 240px;
    }
    /* Expanded docked bar restores the small label above the value */
    .property-search.is-docked.is-dock-open .property-search__trigger > label {
        display: block !important;
        color: #8a7d68 !important;
        opacity: 1 !important;
    }
}
/* === END PS DOCKED TEXT FORCE-VISIBLE === */

/* === PS DOCKED UNCLIP === */
@media (min-width: 1200px) {
    .property-search.is-docked .property-search__field,
    .property-search.is-docked .property-search__trigger {
        height: auto;
        min-height: 0;
        overflow: visible;
    }
    .property-search.is-docked:not(.is-dock-open) .property-search__field {
        padding-top: 19px;
        padding-bottom: 19px;
    }
    .property-search.is-docked:not(.is-dock-open) .property-search__form {
        height: auto;
        padding-top: 0;
        padding-bottom: 0;
    }
}
/* === END PS DOCKED UNCLIP === */

/* === PS ALWAYS-FIXED MORPH (VIDEO-VERIFIED OB TRANSITION) === */
@media (min-width: 1200px) {
    /* The bar lives at the viewport bottom permanently; all state changes
       are width/height/opacity transitions - no positioning jumps. */
    .property-search {
        position: fixed;
        left: 50%;
        bottom: 24px;
        top: auto;
        transform: translateX(-50%);
        margin: 0;
        width: min(1500px, 95vw);
        z-index: 940;
        transition: width 0.45s ease, transform 0.4s ease, opacity 0.4s ease;
    }
    .property-search.is-docked { animation: none; }
    .property-search .property-search__form {
        width: 100%;
        transition: height 0.4s ease, padding 0.4s ease, background-color 0.4s ease;
    }

    /* Compact: narrower bar, labels collapse, buttons collapse, icon fades in */
    .property-search.is-docked { width: min(780px, 92vw); }
    .property-search.is-docked:not(.is-dock-open) .property-search__trigger > label {
        display: block !important;
        max-height: 0 !important;
        opacity: 0 !important;
        margin-bottom: 0 !important;
        overflow: hidden !important;
        transition: max-height 0.3s ease, opacity 0.25s ease, margin 0.3s ease;
    }
    .property-search .property-search__trigger > label {
        max-height: 16px;
        transition: max-height 0.3s ease, opacity 0.25s ease 0.15s, margin 0.3s ease;
    }
    .property-search.is-docked:not(.is-dock-open) .property-search__buttons {
        display: flex;
        max-width: 0;
        opacity: 0;
        padding: 0;
        margin: 0;
        overflow: hidden;
        pointer-events: none;
    }
    .property-search .property-search__buttons {
        transition: max-width 0.4s ease, opacity 0.3s ease, padding 0.4s ease;
        max-width: 500px;
    }
    .property-search .ps-dock-go {
        display: flex;
        align-items: center;
        justify-content: center;
        align-self: stretch;
        width: 0;
        opacity: 0;
        overflow: hidden;
        background: var(--secondary);
        color: #fff;
        order: 99;
        flex-shrink: 0;
        transition: width 0.4s ease, opacity 0.3s ease;
    }
    .property-search.is-docked:not(.is-dock-open) .ps-dock-go {
        width: 58px;
        opacity: 1;
    }

    /* Expanded-in-place after clicking the compact bar */
    .property-search.is-dock-open { width: min(1160px, 94vw); }

    /* Footer: slide the bar off-screen smoothly */
    .property-search.is-dock-hidden {
        transform: translate(-50%, 180%);
        opacity: 0;
        pointer-events: none;
    }
}
/* === END PS ALWAYS-FIXED MORPH === */

/* === PS WHITE THEME FOR FULL DESKTOP BAR (OB LANDING) === */
@media (min-width: 1200px) {
    .property-search {
        --ps-bg: #ffffff;
        --ps-border: #eee8de;
        --ps-divider: #e0dacf;
        --ps-cream: var(--primary);
        --ps-gold: #9a8a73;
    }
    .property-search .property-search__value { color: var(--primary); }
    .property-search .property-search__field label {
        color: #8a7d68;
        opacity: 1;
    }
    .property-search .property-search__chevron { color: #9a8a73; }
    .property-search .property-search__form {
        box-shadow: 0 14px 40px rgba(45, 59, 53, 0.14);
    }
    .property-search .ps-panel {
        box-shadow: 0 -18px 40px rgba(45, 59, 53, 0.14);
    }
    .property-search .property-search__btn {
        background: var(--primary) !important;
        color: #ffffff !important;
    }
    .property-search .property-search__btn:hover { opacity: 0.8; }
    .property-search .property-search__trigger:hover,
    .property-search .property-search__trigger:focus-visible {
        background: rgba(154, 138, 115, 0.07);
    }
}
/* === END PS WHITE THEME === */

/* === PS MOBILE WHITE THEME + SMOOTH EXPAND + FOOTER HIDE (VIDEO OB) === */
@media (max-width: 1199px) {
    /* White palette on the mobile bar in every state */
    .property-search {
        --ps-bg: #ffffff;
        --ps-border: #eee8de;
        --ps-divider: #e0dacf;
        --ps-cream: var(--primary);
        --ps-gold: #9a8a73;
    }
    .property-search .property-search__form {
        background: #fff;
        border: 1px solid #eee8de;
        box-shadow: 0 12px 34px rgba(45, 59, 53, 0.16);
    }
    .property-search .property-search__value { color: var(--primary); }
    .property-search .property-search__field label { color: #8a7d68; opacity: 1; }
    .property-search .property-search__chevron,
    .property-search .property-search__mobile-trigger { color: #9a8a73; }
    .property-search .property-search__mobile-trigger svg { fill: #9a8a73; }

    /* Smooth rise when the pill expands into the card */
    @keyframes psCardRise {
        from { opacity: 0; transform: translateY(14px); }
        to   { opacity: 1; transform: translateY(0); }
    }
    .property-search.is-mobile-open .property-search__form {
        animation: psCardRise 0.3s ease-out both;
    }
    .property-search.is-mobile-open .property-search__field {
        border-bottom-color: #f0ebe1;
    }

    /* Footer: slide the mobile pill out smoothly */
    .property-search {
        transition: transform 0.35s ease, opacity 0.35s ease;
    }
    .property-search.is-dock-hidden {
        transform: translateY(160%);
        opacity: 0;
        pointer-events: none;
    }
    .property-search.is-mobile-open.is-dock-hidden {
        transform: none;
        opacity: 1;
        pointer-events: auto;
    }
}
/* === END PS MOBILE WHITE THEME === */

/* === PS MOBILE EXPANDED CARD FIELD TEXT (OB CARBON COPY) === */
@media (max-width: 1199px) {
    /* The magnifier row disappears once the card is open (OB: X only) */
    .property-search.is-mobile-open .property-search__mobile-trigger { display: none; }

    /* Every field row: label above value, chevron pinned right */
    .property-search.is-mobile-open .property-search__field,
    .property-search.is-mobile-open .property-search__field--destinations {
        height: auto;
        justify-content: flex-start;
        padding: 17px 24px;
        border-bottom: 1px solid #f0ebe1;
    }
    .property-search.is-mobile-open .property-search__trigger {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
        width: 100%;
        height: auto;
        position: relative;
        padding: 0 30px 0 0;
        background: none;
        border: none;
        text-align: left;
    }
    .property-search.is-mobile-open .property-search__trigger > label {
        display: block !important;
        max-height: none !important;
        opacity: 1 !important;
        visibility: visible !important;
        overflow: visible !important;
        margin: 0 !important;
        color: #8a7d68 !important;
        font-size: 10px;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        line-height: 1;
    }
    .property-search.is-mobile-open .property-search__value {
        display: block !important;
        opacity: 1 !important;
        visibility: visible !important;
        max-height: none !important;
        color: var(--primary) !important;
        font-size: 15px !important;
        line-height: 1.3 !important;
        text-indent: 0 !important;
    }
    .property-search.is-mobile-open .property-search__chevron {
        display: inline-block;
        position: absolute;
        right: 0;
        top: 50%;
        transform: translateY(-50%);
        color: #9a8a73;
    }
    .property-search.is-mobile-open .property-search__field--destinations .property-search__chevron {
        display: inline-block;
    }
}
/* === END PS MOBILE EXPANDED CARD FIELD TEXT === */

/* === PS MOBILE BOTTOM-ANCHORED CARD + PANELS (OB) === */
@media (max-width: 1199px) {
    /* The bar never leaves the bottom: the card grows upward from it */
    .property-search.is-mobile-open {
        top: auto;
        bottom: 12px;
    }
    .property-search.is-mobile-open .property-search__form {
        max-height: calc(100vh - var(--mobile-header-height) - 34px);
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }
    /* === PS OB PARITY V3: compact-bar drop-up === */
    /* Panels attach ABOVE the bar/card instead of jumping under the header */
    .property-search .ps-panel {
        position: absolute;
        top: auto;
        bottom: calc(100% + 8px);
        left: 0;
        right: 0;
        max-height: calc(100vh - var(--mobile-header-height) - 120px);
        overflow-y: auto;
        display: flex;
        flex-direction: column;
        box-shadow: 0 -18px 40px rgba(45, 59, 53, 0.18);
    }
    /* Compact bar only: the destinations field is the whole bar minus the
       magnifier button. Dropping it out of the positioning flow lets the panel
       anchor to .property-search__form, so it spans the full bar width. */
    .property-search:not(.is-mobile-open) .property-search__field--destinations {
        position: static;
    }
    .property-search:not(.is-mobile-open) .ps-panel {
        background: #fff;
        border: none;
        border-bottom: 1px solid #e0dacf;
        margin: 0;
        padding: 8px 0 0;
    }
    /* OB detail: TYPE HERE sits at the bottom of the list, next to the bar,
       and stays pinned there while the list scrolls behind it. Full-bleed so
       the sticky bar fully masks the item scrolling underneath it. */
    .property-search .ps-panel__filter {
        order: 99;
        position: sticky;
        bottom: 0;
        z-index: 1;
        flex-shrink: 0;
        width: 100%;
        margin: 0;
        padding: 14px 24px;
        background: #fff;
        border-top: 1px solid #e0dacf;
        border-bottom: none;
        box-sizing: border-box;
    }
}

/* === PS NATIVE SELECTS (OB parity: PROPERTY TYPE + BEDROOMS) === */
/* OB uses OS pickers for these two. Native selects render in the browser's top
   layer, so they can never be clipped by an ancestor's overflow the way the
   custom .ps-panel divs were. SEARCH keeps its custom filterable panel. */
.property-search__field--native { position: relative; }
.property-search__select {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    width: 100%;
    margin: 0;
    padding: 0 18px 0 0;
    background: transparent;
    border: none;
    border-radius: 0;
    outline: none;
    cursor: pointer;
    font-family: Montserrat, sans-serif;
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--ps-cream);
    line-height: 1.3;
}
.property-search__select:focus-visible { outline: 1px solid var(--ps-gold); outline-offset: 2px; }
.property-search__select option { color: #2d3b35; background: #fff; text-transform: none; }
.property-search__field--native .property-search__chevron {
    position: absolute; right: 24px; top: 50%; transform: translateY(-50%);
    pointer-events: none; opacity: 1;
}
@media (min-width: 1200px) {
    .property-search .property-search__select { color: var(--primary); }
}
@media (max-width: 1199px) {
    .property-search.is-mobile-open .property-search__select {
        font-size: 15px; letter-spacing: 0.08em; color: var(--primary);
    }
    .property-search.is-mobile-open .property-search__field--native .property-search__chevron { right: 24px; }
}
/* === END PS NATIVE SELECTS === */

/* === NO-RESULTS MESSAGE (OB) === */
.prop-noresults {
    font-family: var(--font-heading);
    font-weight: 400;
    font-size: clamp(20px, 2.4vw, 30px);
    line-height: 1.45;
    color: var(--primary);
    text-align: center;
    max-width: 720px;
    margin: 0 auto 48px;
}
.prop-noresults b { font-weight: 600; }
/* === END NO-RESULTS === */

/* === NO-RESULTS REFINE BAR (OB) === */
/* OB's own markup has these buttons as DIRECT children of the row wrapper --
   no shared site-container class between them. .ghdr-container carries
   max-width + its own padding meant for page-width sections; reusing it here
   was fighting this component instead of sizing it, which is why a
   padding-only fix barely moved anything. Own small side padding instead,
   matching OB's structure rather than approximating it through a shared class. */
.prop-refine-bar {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 20px;
}
.prop-refine-bar__btn {
    flex: 1 1 auto;
    text-align: center;
    background: var(--primary);
    color: #fff;
    border: none;
    cursor: pointer;
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    padding: 18px 20px;
    text-decoration: none;
    transition: opacity 0.25s ease;
}
.prop-refine-bar__btn:hover { opacity: 0.8; color: #fff; }
.prop-refine-bar__filters {
    flex-shrink: 0;
    width: 46px;
    height: 46px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--primary);
}
/* Sized closer to full tap-target height so it reads at the same visual
   weight as the button beside it, matching OB's proportions. */
.prop-refine-bar__filters svg { width: 30px; height: 30px; }
/* Both are <button> now (they open the modal); strip UA chrome. */
.prop-refine-bar__btn,
.prop-refine-bar__filters {
    background: none;
    border: none;
    font: inherit;
    cursor: pointer;
}
.prop-refine-bar__btn { background: var(--primary); color: #fff; }
/* === END NO-RESULTS REFINE BAR === */

/* === REFINE SEARCH MODAL + ARCHIVE LAYOUT (OB) === */
/* OB uses REFINE SEARCH + modal on MOBILE ONLY, on every archive view --
   with results or without. The inline bar and sort toolbar only ever show on
   desktop. So this is scoped by BREAKPOINT, never by result state. The
   --noresults modifier is used ONLY for the "sorry, no properties" message
   and fallback grid further down; it has nothing to do with the bar/modal. */

/* Desktop default: the section behaves exactly like the normal search bar. */
.prop-search--modal { display: block; }
.prop-search__close { display: none; }
.prop-refine-bar { display: none; }
.prop-search--modal .prop-search__close { display: none; }

@media (min-width: 1025px) {
    /* OB's message runs the full content width on desktop, not a 720px column. */
    .prop-archive--noresults .prop-noresults { max-width: 1200px; }

    /* Client requested this gap fully closed, then 8-16px back (landed 12px),
       then revised to 20-24px -- landed 22px. All on .prop-archive__body's
       top padding; toolbar's own bottom padding stays at 0. Desktop only
       (min-width:1025px block). Mobile is unaffected: .prop-search__toolbar
       is display:none on mobile and .prop-archive__body has its own separate
       mobile padding-top:16px rule elsewhere in this file. */
    .prop-search__toolbar { padding-bottom: 0; }
    .prop-archive__body { padding-top: 22px; }

    /* Cards scroll under the pinned filter bar, matching OB's behavior.
       top clears the fixed nav; z-index sits above cards (auto/0) but well
       under the header's z-index:1000 so nav always wins if they overlap. */
    .prop-archive .prop-search { position: sticky; top: var(--header-height); z-index: 10; }
}

@media (max-width: 1024px) {
    /* OB's measured wrapper padding is 27px vertical / 0 horizontal. v1.9.17
       tested that 1:1 and the client chose the shorter, no-vertical-padding
       row instead. Revisited and reversed in v1.9.21: client now wants
       top padding back in on mobile, set to 25px (not OB's 27). Bottom
       stays 0 -- only top was requested. */
    .prop-refine-bar {
        display: flex;
        padding-top: 25px;
        padding-left: 16px;
        padding-right: 16px;
        margin-bottom: 0;
        position: sticky;
        top: var(--mobile-header-height);
        z-index: 10;
        background: #fff;
    }
    .prop-search__toolbar { display: none; }

    /* The <section> is the scrim; .ghdr-container inside it is the white card. */
    .prop-search--modal {
        display: none;
        background: none;
        border-bottom: none;
    }
    .prop-search--modal.is-open {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 20100;
        background: rgba(45, 59, 53, 0.78);
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        padding: 84px 0 48px;
    }
    .prop-search--modal.is-open .ghdr-container { max-width: 560px; }
    .prop-search--modal .prop-search__bar {
        grid-template-columns: 1fr;
        margin-top: 0;
        border: none;
        box-shadow: 0 24px 50px rgba(45, 59, 53, 0.28);
    }
    .prop-search--modal .prop-search__field {
        border-right: none;
        border-bottom: 1px solid var(--border);
        padding: 17px 24px 15px;
    }
    .prop-search--modal .prop-search__btn { padding: 20px; letter-spacing: 0.16em; }
    .prop-search--modal.is-open .prop-search__close {
        display: block;
        position: fixed;
        top: 22px;
        right: 20px;
        z-index: 2;
        width: 34px;
        height: 34px;
        padding: 8px;
        background: none;
        border: none;
        color: #fff;
        cursor: pointer;
    }
    .prop-search__close svg { width: 100%; height: 100%; display: block; }
    body.prop-refine-open { overflow: hidden; }

    /* The archive head reserves room for the inline bar (margin-top:-28px).
       With the bar always a modal on mobile, that would leave a cream band
       and ~190px of dead space above REFINE SEARCH -- on every mobile
       archive view, not just no-results. */
    .prop-archive__head {
        padding: var(--mobile-header-height) 0 0;
        background: none;
        border-bottom: none;
    }
    .prop-archive__head .ghdr-container {
        padding-top: 0;
        padding-bottom: 0;
    }
    .prop-archive__body { padding-top: 16px; }
}
/* === END REFINE SEARCH MODAL + NO-RESULTS LAYOUT === */

/* === PS MOBILE DROP-UP PANELS === */
/* REMOVED in 1.9.7. The v1.9.6 rule used position:fixed with
   bottom:calc(100% + 0px). A fixed box resolves percentage insets against its
   containing block; .property-search__form carries an identity transform while
   .is-mobile-open (animation psCardRise, fill-mode both), which promotes the
   form to the containing block. bottom therefore resolved against the form's
   height, not the viewport, and the panel rendered ~96px above the top of the
   screen. It was also overriding the correct rules further up this file.
   The compact drop-up now lives in the PS OB PARITY V3 block above. */
/* === END PS MOBILE DROP-UP PANELS === */

/* === PS OPTION B: MOBILE-ONLY NATIVE SELECT OVERLAYS (v1.9.23) === */
/* Desktop keeps the custom trigger+panel untouched; on mobile an invisible
   native <select> covers the TYPE and BEDROOMS fields so taps open the OS
   picker (OB behavior) while the visible markup stays identical. Hidden
   entirely on desktop. */
.ps-select-overlay { display: none; }
@media (max-width: 1199px) {
    .property-search .property-search__field--dropdown .ps-select-overlay {
        display: block;
        position: absolute;
        top: 0; left: 0; width: 100%; height: 100%;
        opacity: 0;
        margin: 0; padding: 0; border: 0;
        -webkit-appearance: none;
        appearance: none;
        z-index: 2;
        cursor: pointer;
    }
    /* Destinations keeps its custom sheet: no overlay exists in that field. */
}
/* === END PS OPTION B === */

/* === PS OB NAVY, MOBILE ONLY (v1.9.23) === */
/* Sampled from OB reference screenshots: text, magnifier, and buttons all
   use #141c33. Applies only under 1200px; desktop palette untouched. */
@media (max-width: 1199px) {
    .property-search .property-search__value { color: #141c33; }
    .property-search .property-search__field label { color: #141c33; }
    .property-search .property-search__chevron,
    .property-search .property-search__mobile-trigger { color: #141c33; }
    .property-search .property-search__mobile-trigger svg { fill: #141c33; }
    .property-search .ps-panel__item { color: #141c33; }
    .property-search .property-search__btn {
        background: #141c33 !important;
        color: #ffffff !important;
    }
    /* OB layout: magnifier sits on the RIGHT of the compact bar, no divider */
    .property-search__mobile-trigger { order: 99; border-left: none; }
}
/* === END PS OB NAVY === */

/* === HEADER LOGO SIZE PIN (v1.9.25) === */
/* The ES header logo intermittently renders shrunken despite identical
   assets, markup, and .logo sizing (verified three times against files,
   server-served images, and served markup). Root cause is runtime-only and
   still unidentified -- this pin caps the symptom by forcing the box for
   ALL header logos at a priority that beats any stylesheet rule or plain
   inline style. If the true culprit is ever found via the DevTools Styles
   pane, this pin can stay anyway; it encodes the intended design. */
.header .header-logo-section img.logo {
    width: 159.67px !important;
    height: 59.33px !important;
    max-width: none !important;
    max-height: none !important;
}
/* === END HEADER LOGO SIZE PIN === */

/* === WECHAT ICON + QR POPUP (v1.9.26) === */
/* Icon matches the existing .header-icon circles. WeChat's brand green is
   #07C160. The button (not <a>) opens a QR popup because WeChat has no
   web deep-link -- the only web contact path is scanning a QR in-app. */
.header-icon.wechat-icon {
    background: #07C160;
    border: none;
    padding: 0;
    font: inherit;
}

.wechat-overlay {
    position: fixed;
    inset: 0;
    z-index: 2000; /* above fixed header (1000) and hero */
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(20, 24, 28, 0.72);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    padding: 24px;
    opacity: 0;
    transition: opacity 0.25s ease;
    overflow-y: auto;            /* scroll when the card is taller than the viewport */
    -webkit-overflow-scrolling: touch;
}
/* When the card exceeds viewport height, align-items:center would clip both
   ends with no scroll reach. auto top/bottom margin centers a short card but
   lets a tall one scroll fully into view. */
.wechat-overlay .wechat-modal { margin: auto; }
.wechat-overlay.is-open { opacity: 1; }
.wechat-overlay[hidden] { display: none; }

.wechat-modal {
    position: relative;
    background: #fff;
    border-radius: 6px;
    padding: 40px 36px 32px;
    max-width: 420px;
    width: 100%;
    text-align: center;
    box-shadow: 0 24px 60px rgba(0,0,0,0.35);
    transform: translateY(12px);
    transition: transform 0.25s ease;
}
.wechat-overlay.is-open .wechat-modal { transform: translateY(0); }

.wechat-modal__close {
    position: absolute;
    top: 14px; right: 18px;
    background: none; border: none;
    font-size: 28px; line-height: 1;
    color: #999; cursor: pointer;
    transition: color 0.2s;
}
.wechat-modal__close:hover { color: var(--primary); }

.wechat-modal__title {
    font-family: var(--font-heading);
    font-weight: 500;
    font-size: 26px;
    color: var(--primary);
    margin: 0 0 24px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.wechat-modal__qr {
    display: block;
    width: 360px;
    max-width: 100%;
    /* Cap by viewport height so title + QR + CN text + download button all fit
       a ~700px laptop screen at 100% zoom without clipping. Aspect preserved. */
    max-height: 46vh;
    height: auto;
    object-fit: contain;
    margin: 0 auto 24px;
}
.wechat-modal__cn {
    font-family: var(--font-body);
    font-size: 14px;
    line-height: 1.7;
    color: #555;
    margin: 0 0 24px;
}
.wechat-modal__download {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--primary);
    color: #fff;
    font-family: var(--font-body);
    font-size: 13px;
    letter-spacing: 1px;
    text-decoration: none;
    padding: 15px 34px;
    border-radius: 999px;                 /* full pill */
    border: 1px solid var(--primary);
    transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}
.wechat-modal__download svg { width: 16px; height: 16px; stroke: currentColor; fill: none; flex-shrink: 0; }
.wechat-modal__download:hover {          /* invert, Azimut-style */
    background: #fff;
    color: var(--primary);
    border-color: var(--primary);
}
@media (max-width: 480px) {
    .wechat-modal { padding: 32px 20px 24px; }
    .wechat-modal__title { font-size: 22px; }
}
/* === END WECHAT === */

/* WeChat popup: mobile slide-in drawer (Azimut-style) — enters from the
   right, exits to the right. Desktop keeps the centered fade-up modal above. */
@media (max-width: 768px) {
    .wechat-overlay {
        padding: 0;
        align-items: stretch;
        justify-content: flex-start;
        background: rgba(20, 24, 28, 0.55);
    }
    .wechat-modal {
        max-width: 100%;
        width: 100%;
        height: 100%;
        border-radius: 0;
        display: flex;
        flex-direction: column;
        justify-content: center;
        transform: translateX(-100%);      /* start off-screen LEFT */
        transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);  /* slower, Azimut-like */
        box-shadow: none;
        overflow-y: auto;                   /* never clip QR + button */
    }
    .wechat-overlay.is-open .wechat-modal { transform: translateX(0); }
    /* Overlay fade quick so the drawer motion leads */
    .wechat-overlay { transition: opacity 0.2s ease; }
}


/* === PROPERTY LOCATION MAP (Mapbox) - ADDED 2026-08-13 === */
/* PLACEMENT CORRECTED 2026-08-13: this was first built as a full-bleed band
 * sitting outside .sp-layout, because OB Private's SimpleMap CSS declares
 * `grid-column: full`. Their live page disproves that reading -- the map is
 * aligned to exactly the same left and right edges as the location paragraph
 * above it, about 1050px inside a 1900px viewport. In their grid, `full` means
 * the full content column, not the viewport. The map therefore lives INSIDE
 * .sp-content here. Do not move it out again. */

/* Vertical gap between the prose and the map, copied from OB Private:
 * margin-top: calc(5.51724vw + 39.65517px), flattening to 150px on very wide
 * screens and 70px on phones. At a 1900px viewport that resolves to ~145px. */
.sp-map {
    width: 100%;
    margin-top: calc(5.51724vw + 39.65517px);
    position: relative;
}
@media (min-width: 2001px) {
    .sp-map { margin-top: 150px; }
}
@media (max-width: 550px) {
    .sp-map { margin-top: 70px; }
}

/* Aspect ratio from OB: padding-top 81.82% means height = 0.818 x width.
 * Kept as the padding hack rather than aspect-ratio so the box has height
 * BEFORE Mapbox initialises -- Mapbox measures its container on init, and a
 * zero-height container yields a permanently blank grey canvas.
 * No max-height: OB has none, and capping it would break the ratio match. */
.sp-map__canvas {
    width: 100%;
    height: 0;
    padding-top: 81.82%;
    background: #ece8e1; /* cream placeholder while tiles load */
    position: relative;
    overflow: hidden;
}
.sp-map__canvas .mapboxgl-canvas-container,
.sp-map__canvas .mapboxgl-canvas {
    position: absolute;
    top: 0;
    left: 0;
}

/* Custom teardrop marker in GHDR gold. Same 25x35 silhouette proportions as
 * OB's; drawn inline so there is no extra HTTP request. */
.sp-map__marker {
    width: 25px;
    height: 35px;
    background-repeat: no-repeat;
    background-size: 100%;
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 41.22 61.45'%3E%3Cpath fill='%23c4a876' d='M20.62 0A20.63 20.63 0 0 0 .42 24.79c1.13 5.47 4.67 10.25 7.5 14.96 2.22 3.69 4.34 7.43 6.54 11.13 1.39 2.36 2.74 4.74 4.13 7.1.67 1.12 1.3 2.27 1.97 3.38l.06.1c-.12-.21 1.22-2.1 1.32-2.27q1.79-3.04 3.56-6.1c2.82-4.86 5.76-9.63 8.63-14.46 2.57-4.32 5.64-8.86 6.67-13.85A20.62 20.62 0 0 0 20.62 0Zm0 29.63a8.97 8.97 0 0 1-8-4.84 8.72 8.72 0 0 1-1.03-4.17 9.02 9.02 0 1 1 18.04 0 8.88 8.88 0 0 1-1.02 4.17 9 9 0 0 1-8 4.84Z'/%3E%3C/svg%3E");
    cursor: default;
}

/* Controls: OB uses 38px buttons in a flat 76px group, top-right, no border
 * and no shadow. Their group is offset 20px from the right and 30px from top. */
.sp-map .mapboxgl-ctrl-top-right {
    top: 30px;
    right: 0;
}
.sp-map .mapboxgl-ctrl-group {
    border: 0;
    border-radius: 0;
    box-shadow: none;
    background: rgba(255, 255, 255, 0.92);
    margin: 0 20px 20px 0;
    width: 38px;
}
.sp-map .mapboxgl-ctrl-group button {
    width: 38px;
    height: 38px;
}
.sp-map .mapboxgl-ctrl-group button + button {
    border-top: 1px solid rgba(0, 0, 0, 0.08);
}
.sp-map .mapboxgl-ctrl-group button:hover {
    background: transparent;
}
.sp-map .mapboxgl-ctrl-group span {
    transition: opacity 0.3s ease;
}
.sp-map .mapboxgl-ctrl-group button:hover span {
    opacity: 0.5;
}

/* ATTRIBUTION: styled down, NOT hidden. OB sets display:none on
 * .mapboxgl-ctrl-attrib and .mapboxgl-ctrl-bottom-left, which breaches
 * Mapbox's terms of service. Reducing size and contrast is permitted;
 * removing it is not. Do not "tidy this away". */
.sp-map .mapboxgl-ctrl-attrib {
    background: rgba(255, 255, 255, 0.7);
    font-size: 10px;
}
.sp-map .mapboxgl-ctrl-attrib a {
    color: #6b6b6b;
}
.sp-map .mapboxgl-ctrl-logo {
    opacity: 0.55;
}

/* Cooperative-gestures overlay ("Use Ctrl + scroll to zoom the map").
 * Scroll-zoom is off by default so a tall map does not hijack page scrolling
 * on a long property page -- see property-map.js. */
.sp-map .mapboxgl-scroll-zoom-blocker,
.sp-map .mapboxgl-touch-pan-blocker {
    font-family: var(--font-body);
    font-size: 14px;
    letter-spacing: 0.02em;
}

@media (max-width: 900px) {
    /* Taller relative to width on phones. At 81.82% of a 380px screen the map
     * would be only ~310px tall and read as a strip rather than a map. */
    .sp-map__canvas { padding-top: 100%; }
    .sp-map .mapboxgl-ctrl-top-right { top: 12px; }
    .sp-map .mapboxgl-ctrl-group {
        margin: 0 12px 12px 0;
        width: 34px;
    }
    .sp-map .mapboxgl-ctrl-group button {
        width: 34px;
        height: 34px;
    }
}


/* === IN-PAGE ANCHOR OFFSET (single property) - ADDED 2026-08-13 === */
/* PROBLEM: clicking OVERVIEW or LOCATION in the sticky sub-nav scrolls the
 * target section's top edge to the top of the viewport -- directly underneath
 * the fixed site header AND the sticky .sp-nav bar, so the section label the
 * visitor just clicked ends up hidden behind them.
 *
 * FIX: scroll-margin-top on the anchor targets. This tells the browser to stop
 * short by that distance, so the label lands just below both bars.
 * Chosen over JS scroll handling because html already has
 * scroll-behavior: smooth (line ~50), so native anchors animate correctly and
 * no script is needed.
 *
 * THE MATH -- update this if either bar changes height:
 *   fixed site header      = var(--header-height)         70px
 *   sticky .sp-nav         = 18px + 18px padding
 *                          + ~17px line-height
 *                          + 2px link border
 *                          + 1px section border          ~56px
 *   breathing room                                        24px
 *                                                     -------
 *                                                       ~150px
 * Mobile uses --mobile-header-height (60px) and less breathing room. */
#sp-overview,
#sp-location {
    scroll-margin-top: calc(var(--header-height, 70px) + 80px);
}

@media (max-width: 900px) {
    #sp-overview,
    #sp-location {
        scroll-margin-top: calc(var(--mobile-header-height, 60px) + 72px);
    }
}


/* === PROPERTY SUB-NAV: OB STICKY BEHAVIOUR - ADDED 2026-08-13 === */
/* Bar is now two parts: an always-visible PHOTO GALLERY trigger, and a link
 * list that is HIDDEN until the bar goes sticky. That hidden-until-sticky
 * rule is the whole trick behind OB Private's nav "expanding" as you scroll:
 * their .SinglePropertyPageNav__links is opacity:0 / pointer-events:none and
 * only turns on under .is-sticky. Do not set these links visible by default
 * or the effect disappears.
 * DESKTOP ONLY, matching OB's `if (window.innerWidth < 768) return false`.
 * Below 768px the links are permanently visible -- see the media query. */
.sp-nav {
    display: flex;
    align-items: center;
    padding: 0 5vw;
    overflow: hidden;
    transition: border-color 0.5s ease;
}
/* Border only appears once sticky, as OB's does (transparent -> #e0dacf). */
.sp-nav { border-bottom-color: transparent; }
.sp-nav.is-sticky { border-bottom-color: #e0dacf; }

/* Photo Gallery trigger. Lives inside the nav but OUTSIDE the <ul> so it
 * survives the hidden-until-sticky rule below. */
.sp-nav__trigger-wrap { white-space: nowrap; }
.sp-nav__trigger {
    display: flex;
    align-items: center;
    gap: 15px; /* OB: svg margin-right 15px */
    background: none;
    border: 0;
    padding: 18px 0;
    cursor: pointer;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--primary);
    transition: opacity 0.5s cubic-bezier(0.25, 1, 0.5, 1);
}
.sp-nav__trigger:hover { opacity: 0.4; } /* OB hover is opacity .4, not colour */
.sp-nav__trigger svg { width: 17px; height: 17px; } /* OB: 17x17 */

/* Link list: divider rule on the left, 30px either side -- OB's spec. */
.sp-nav__links {
    flex: 1;
    border-left: 1px solid #e0dacf;
    margin-left: 30px;
    padding-left: 30px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 1s cubic-bezier(0, 0, 0.32, 0.97);
}
.sp-nav.is-sticky .sp-nav__links {
    opacity: 1;
    pointer-events: all;
}
/* No gallery button on single-image properties: no divider, no indent. */
.sp-nav__trigger-wrap + .sp-nav__links { border-left: 1px solid #e0dacf; }
.sp-nav > .sp-nav__links:first-child {
    border-left: 0;
    margin-left: 0;
    padding-left: 0;
}

/* Active section underline. OB uses #fd963e at 8px offset; GHDR uses its own
 * gold so the bar stays on-brand. */
.sp-nav__links li.selected > a {
    text-decoration: underline;
    text-decoration-color: var(--secondary);
    text-underline-offset: 8px;
    border-bottom-color: transparent;
}

/* MOBILE: OB's nav script returns early below 768px, so nothing is sticky and
 * nothing is hidden. Links must therefore be visible unconditionally here --
 * otherwise a phone user would see an empty bar forever. */
@media (max-width: 767px) {
    .sp-nav__links,
    .sp-nav.is-static .sp-nav__links {
        opacity: 1 !important;
        pointer-events: all !important;
    }
    .sp-nav { border-bottom-color: #e0dacf; }
    .sp-nav__trigger { font-size: 10px; }
    .sp-nav__links {
        margin-left: 16px;
        padding-left: 16px;
    }
}

/* === ACCOMMODATION GRID - ADDED 2026-08-13 === */
/* Rows of three, each row carrying a top rule. Mirrors OB Private, where each
 * RoomCarousel block has border-top:1px #e0dacf -- what reads as a separator
 * between rows is really the top edge of the next block. Here the rows are
 * produced by array_chunk() in single-property.php so the editor keeps one
 * flat repeater instead of managing groups of three. */
.sp-accom { margin-top: 50px; }
.sp-accom__row {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 30px;
    border-top: 1px solid #e0dacf;
    padding-top: 40px;
    margin-bottom: 40px;
}
/* The section label already draws its own top rule, so the first row would
 * otherwise show two lines stacked close together. */
.sp-accom__row--first {
    border-top: 0;
    padding-top: 0;
}
.sp-accom__item {
    margin: 0;
    min-width: 0;
}
/* SQUARE crops. OB sets --six-intrinsic-ratio: 1/1 on every room image, which
 * is why their grid reads so evenly despite mixed source photography. */
.sp-accom__img {
    width: 100%;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: #ece8e1;
}
.sp-accom__img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.sp-accom__caption {
    margin-top: 30px; /* OB: RoomCarousel__room__image margin-bottom 30px */
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 500;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--primary);
}

@media (max-width: 1100px) {
    .sp-accom__row { grid-template-columns: repeat(2, 1fr); }
}
/* --- MOBILE: rows become swipeable carousels (Flickity watchCSS) ---
 * The content string below is what switches Flickity on. Flickity reads
 * .sp-accom__row:after { content: 'flickity' } and enables itself only while
 * that rule applies -- so this media query, not a number in the JS, is the
 * single source of truth for the breakpoint. Removing it silently disables
 * the mobile carousel.
 * display:block is mandatory here: Flickity absolutely positions its cells
 * and cannot coexist with display:grid on the same container. This is the
 * same conflict that broke .ptnrs-key-grid previously. */
@media (max-width: 767px) {
    .sp-accom__row {
        display: block;
        padding-top: 30px;
        margin-bottom: 30px;
    }
    .sp-accom__row:after {
        content: 'flickity';
        display: none; /* the string is read by JS; it must not render */
    }
    /* OB: .RoomCarousel__room { width: 86% } so the next photo peeks in at
     * the right edge, signalling that the row is swipeable. */
    .sp-accom__item {
        width: 86%;
        margin-right: 16px;
    }
    .sp-accom__caption {
        margin-top: 18px;
        font-size: 12px;
    }
    /* Flickity sets its own height from the tallest cell; keep the viewport
     * from clipping the caption. */
    .sp-accom__row .flickity-viewport { overflow: visible; }
    .sp-accom__row.flickity-enabled { overflow: hidden; }
}

/* Anchor offset for the new section, matching #sp-overview and #sp-location */
#sp-accommodation {
    scroll-margin-top: calc(var(--header-height, 70px) + 80px);
}
@media (max-width: 900px) {
    #sp-accommodation {
        scroll-margin-top: calc(var(--mobile-header-height, 60px) + 72px);
    }
}
