/* ==========================================================================
   Signature Global channel partner — public site
   Theme: light. White page, soft green-grey bands (#E6EAE7), deep forest green
   accent (#2C6A3D). Dark green bands are kept for the footer, hero and CTA
   sections so the page still has weight and rhythm.
   Every colour is a token below: change a token and the whole site follows.
   Contrast checked to WCAG AA or better; see docs/WHAT-CHANGED.md.
   Type: Playfair Display (display), Jost (text & interface).
   ========================================================================== */

@font-face { font-family: "Bodoni Moda"; src: url("../fonts/bodoni-moda-latin-wght-normal.woff2") format("woff2"); font-weight: 400 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Bodoni Moda"; src: url("../fonts/bodoni-moda-latin-wght-italic.woff2") format("woff2"); font-weight: 400 900; font-style: italic; font-display: swap; }
@font-face { font-family: "Playfair Display"; src: url("../fonts/playfair-display-latin-wght-normal.woff2") format("woff2"); font-weight: 400 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Playfair Display"; src: url("../fonts/playfair-display-latin-wght-italic.woff2") format("woff2"); font-weight: 400 900; font-style: italic; font-display: swap; }
@font-face { font-family: "Jost"; src: url("../fonts/jost-latin-wght-normal.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }

:root {
  color-scheme: light;

  /* ---- The green scale, centred on the brand green #2C6A3D ---- */
  --green-50:  #F1F7F3;
  --green-100: #DCEDE1;
  --green-200: #BBDCC5;
  --green-300: #92C6A3;
  --green-400: #63AC7B;
  --green-500: #3F8C56;
  --green-600: #2C6A3D;   /* core brand green */
  --green-700: #235532;
  --green-800: #1A4126;
  --green-900: #12261B;
  --lime: #8DC63F;        /* the bright wedge in the logo */
  --lime-soft: #A8D65E;
  --teal-dot: #2B9CD8;    /* the blue dot in the logo: used sparingly */

  /* ---- Ink ---- */
  --basalt: #14241B;           /* headings and strong text   16.2:1 on white */
  --basalt-2: #24362B;         /* ink, slightly softer */

  /* ---- Surfaces ---- */
  --milk: #FFFFFF;             /* page background */
  --ivory: #E6EAE7;            /* alternate band */
  --sand: #D3DAD6;             /* hairlines and dividers */
  --mist: #748578;             /* input borders          3.9:1 on white */
  --surface-dark: #12261B;     /* deepest band: footer, hero, dark sections */
  --surface-dark-2: #1B3325;   /* raised dark surface */
  --card: #FFFFFF;             /* raised card / panel on the light page */
  --card-2: #F1F7F3;           /* card needing a hint of tint */
  --milk-ink: #F4F8F5;         /* light text on any dark surface */

  /* ---- Text ---- */
  --text: #2A3A31;             /* body                  12.0:1 on white */
  --muted: #586B60;            /* secondary              5.7:1 on white, 4.7:1 on band */
  --on-dark: #E9EFEA;          /* body on dark bands    13.7:1 */
  --on-dark-muted: #A8BBAE;    /* secondary on dark      7.9:1 */

  /* ---- Accent ---- */
  --accent: #2C6A3D;           /* links, buttons, keylines  6.5:1 on white */
  --accent-bright: #5FBE7C;    /* accent on dark bands      6.9:1 */
  --accent-ink: #235532;       /* small accent text on light */
  --accent-deep: var(--green-800);

  /* ---- Gradients ----
     Stops are chosen so text stays readable at the LIGHTEST point of the ramp.
     A button gradient must not go lighter than #35794A: white text drops to
     4.1:1 at #3F8C56, which fails AA. Keep any edit inside these bounds. */
  --grad-accent:       linear-gradient(135deg, #2C6A3D 0%, #35794A 100%);
  --grad-accent-hover: linear-gradient(135deg, #235532 0%, #2C6A3D 100%);
  --grad-dark:         linear-gradient(165deg, #12261B 0%, #1A4126 100%);
  --grad-band:         linear-gradient(180deg, #FFFFFF 0%, #E6EAE7 60%, #E6EAE7 100%);
  --grad-rule:         linear-gradient(90deg, #7CCB63 0%, rgba(124,203,99,.55) 55%, rgba(124,203,99,0) 100%);

  /* ---- Leaf green #7CCB63: one colour for ornament ----
     One rule keeps the page symmetrical:
       LEAF  (#7CCB63) = lines, dividers, underlines, progress bars, keylines, icons on dark
       BRAND (#2C6A3D) = action: buttons, links, focus rings, icons on light
     Leaf is never used for text on a light background: it is too faint there (2.1:1). */
  --leaf: #7CCB63;                             /* lines, dividers, icons on dark (5.8:1+) */
  --leaf-ink: #A3DB92;                         /* small leaf-green TEXT and hovers on dark (7.2:1+) */
  --leaf-fill: #7CCB63;                        /* solid arrow button; dark green icon on it (8.0:1) */
  --leaf-line: rgba(124, 203, 99, .45);        /* item dividers on dark */
  --leaf-line-light: rgba(124, 203, 99, .6);   /* item dividers on light */

  /* ---- Buttons ---- */
  --btn-dark-bg: #2C6A3D;
  --btn-dark-ink: #FFFFFF;
  --btn-dark-bg-hover: #235532;
  --btn-dark-ink-hover: #FFFFFF;

  --danger: #B4402E;
  --ok: #2C6A3D;

  --font-display: "Playfair Display", "Bodoni Moda", Georgia, "Times New Roman", serif;
  --font-text: "Jost", "Futura", "Century Gothic", system-ui, sans-serif;

  --wrap: 1320px;
  --gutter: clamp(20px, 4vw, 48px);
  --section: clamp(44px, 5vw, 76px);
  --radius: 3px;
  --header-h: 76px;
  --ease: cubic-bezier(.22,.61,.36,1);
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 56px); }
body { margin: 0; font-family: var(--font-text); font-size: 1.0625rem; line-height: 1.62; font-weight: 400; color: var(--text); background: var(--milk); text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
img, video, svg { display: block; max-width: 100%; height: auto; }
img { background: #EDF0EE; }
a { color: inherit; text-decoration-color: color-mix(in srgb, currentColor 35%, transparent); text-underline-offset: .2em; }
a:hover { text-decoration-color: currentColor; }
button, input, select, textarea { font: inherit; color: inherit; }
/* Options in a native dropdown are painted by the browser, not by the page, so they need
   their own colours or they come out dark-on-dark on Windows. */
select option, select optgroup { background-color: #FFFFFF; color: #14241B; }
select option:checked, select option:hover { background-color: #E6EAE7; color: #14241B; }
button { cursor: pointer; }
h1, h2, h3, h4 { margin: 0 0 .5em; color: var(--basalt); font-family: var(--font-display); font-weight: 500; line-height: 1.12; letter-spacing: -.005em; text-wrap: balance; }
h1 { font-size: clamp(2.5rem, 4.2vw + 1rem, 4.75rem); }
h2 { font-size: clamp(1.95rem, 2.2vw + 1rem, 3rem); }
h3 { font-size: clamp(1.3rem, .6vw + 1rem, 1.6rem); }
p { margin: 0 0 1em; }
ul, ol { margin: 0; padding: 0; }
dl, dd { margin: 0; }
address { font-style: normal; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.band-dark :focus-visible, .site-footer :focus-visible { outline-color: var(--accent-bright); }
::selection { background: var(--accent); color: #FFFFFF; }
[hidden] { display: none !important; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link { position: fixed; left: 16px; top: -60px; z-index: 200; background: var(--accent); color: #FFFFFF; padding: 10px 16px; transition: top .2s; }
.skip-link:focus { top: 12px; }
.small { font-size: .875rem; }
.muted { color: var(--muted); }
.icon { width: 1.15em; height: 1.15em; flex: none; }

/* ---------- Layout ---------- */
.wrap { width: 100%; max-width: var(--wrap); margin-inline: auto; padding-inline: var(--gutter); }
.wrap--text { max-width: calc(46rem + var(--gutter) * 2); }
.section { padding-block: var(--section); }
.section--tight { padding-block: clamp(26px, 3vw, 40px) var(--section); }
.band-dark { background: var(--grad-dark); color: var(--on-dark); }
.band-dark h2, .band-dark h3 { color: var(--milk-ink); }
.band-ivory { background: var(--grad-band); }
.band-dark { border-block: 1px solid var(--sand); }
.section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px 48px; margin-bottom: clamp(22px, 2.6vw, 34px); flex-wrap: wrap; }
.section-head h2 { margin: 0; }
/* Thin leaf-green rule under a section heading. */
.section-head > div > h2::after { content: ""; display: block; width: 68px; height: 2px; margin-top: 14px; background: var(--grad-rule); border-radius: 2px; }
.band-dark .section-head > div > h2::after { opacity: .9; }
.section-intro { max-width: 40rem; margin: .75rem 0 0; color: var(--muted); font-size: 1.0625rem; }
.band-dark .section-intro { color: var(--on-dark-muted); }
.h-small { font-family: var(--font-text); font-size: 1rem; font-weight: 500; letter-spacing: .01em; color: var(--basalt); margin-bottom: 1rem; }
.narrow-grid { display: grid; gap: 40px clamp(40px, 6vw, 96px); grid-template-columns: 1fr; }
@media (min-width: 960px) { .narrow-grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.kicker { font-size: .9375rem; color: var(--accent-ink); margin: 0 0 .5rem; font-weight: 500; }
.kicker--light { color: var(--accent-bright); }
.lead { font-size: 1.1875rem; color: var(--basalt); line-height: 1.55; }

/* ---------- Links & buttons ---------- */
.text-link { color: var(--accent-ink); font-weight: 500; text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--accent) 70%, transparent); text-decoration-thickness: 1px; text-underline-offset: .35em; white-space: nowrap; }
.band-dark .text-link { color: var(--accent-bright); }
.link-btn { background: none; border: 0; padding: 0; color: var(--accent-ink); font-weight: 500; text-decoration: underline; text-underline-offset: .3em; text-decoration-color: color-mix(in srgb, var(--accent) 60%, transparent); }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .55em; min-height: 48px; padding: 12px 26px; border: 1px solid transparent; border-radius: var(--radius); font-size: .98rem; font-weight: 500; letter-spacing: .01em; line-height: 1.2; text-decoration: none; transition: background-color .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease); }
.btn-sm { min-height: 40px; padding: 8px 18px; font-size: .92rem; }
.btn-block { width: 100%; }
.btn-accent { background: var(--grad-accent); color: #FFFFFF; border-color: var(--accent); }
.btn-accent:hover { background: var(--grad-accent-hover); border-color: var(--accent-deep); }
.btn-dark { background: var(--grad-accent); color: var(--btn-dark-ink); border-color: var(--accent); }
.btn-dark:hover { background: var(--grad-accent-hover); color: var(--btn-dark-ink-hover); border-color: var(--accent-deep); }
.btn-outline { background: transparent; color: var(--accent-ink); border-color: color-mix(in srgb, var(--accent) 45%, transparent); }
.btn-outline:hover { border-color: var(--accent); color: var(--accent); background: color-mix(in srgb, var(--accent) 7%, transparent); }
.band-dark .btn-outline { color: var(--on-dark); border-color: color-mix(in srgb, var(--on-dark) 38%, transparent); }
.band-dark .btn-outline:hover { color: var(--accent-bright); border-color: var(--accent-bright); background: transparent; }
.btn-outline-light { background: transparent; color: var(--milk-ink); border-color: color-mix(in srgb, var(--milk) 45%, transparent); }
.btn-outline-light:hover { border-color: var(--accent); color: var(--accent-bright); }
.btn[disabled], .btn.is-loading { opacity: .65; pointer-events: none; }
.icon-btn { display: inline-grid; place-items: center; width: 44px; height: 44px; border: 0; border-radius: 50%; background: transparent; color: inherit; }
.icon-btn:hover { color: var(--accent); }
.band-dark .icon-btn:hover, .site-header.is-overlay:not(.is-scrolled) .icon-btn:hover, .mobile-nav .icon-btn:hover { color: var(--accent-bright); }
.badge { position: absolute; top: 14px; left: 14px; background: rgba(8, 8, 7, .82); color: var(--accent-bright); font-size: .8125rem; padding: 4px 10px; border-radius: var(--radius); }
.badge--muted { background: var(--mist); color: var(--on-dark); }
.chip-row { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; margin-bottom: 28px; }
.chip { display: inline-flex; align-items: center; gap: 8px; padding: 8px 16px; border: 1px solid var(--sand); border-radius: 999px; background: var(--card); text-decoration: none; font-size: .95rem; }
.chip span { color: var(--accent-ink); font-size: .85rem; }
.chip:hover, .chip[aria-current="page"] { border-color: var(--accent); background: #E6EAE7; color: var(--accent-ink); }
.sep { display: inline-block; width: 18px; height: 1px; background: currentColor; opacity: .45; margin: 0 10px; vertical-align: middle; }

/* ---------- Header ---------- */
.site-header { position: sticky; top: 0; z-index: 60; background: var(--milk); color: var(--text); border-bottom: 1px solid color-mix(in srgb, var(--sand) 70%, transparent); transition: background-color .3s var(--ease), border-color .3s var(--ease), color .3s; }
.site-header.is-overlay { position: fixed; inset: 0 0 auto; background: transparent; border-color: transparent; color: var(--milk-ink); }
.site-header.is-overlay.is-scrolled, .site-header.is-overlay.is-open { background: rgba(255, 255, 255, .94); backdrop-filter: blur(8px); color: var(--text); border-color: var(--sand); }
.header-bar { display: flex; align-items: center; gap: 24px; min-height: var(--header-h); }
.brand { display: flex; flex-direction: column; text-decoration: none; line-height: 1.1; margin-right: auto; }
.brand-word { font-family: var(--font-display); font-size: 1.45rem; font-weight: 500; letter-spacing: .01em; color: inherit; }
.site-header:not(.is-overlay) .brand-word, .is-scrolled .brand-word { color: var(--basalt); }
.brand-sub { font-size: .78rem; letter-spacing: .04em; color: var(--accent-ink); margin-top: 3px; }
.is-overlay:not(.is-scrolled) .brand-sub { color: var(--accent-bright); }
.brand-logo { height: 44px; width: auto; background: none; }
.brand-logo--light { display: none; }
.is-overlay:not(.is-scrolled):not(.is-open) .brand-logo--light { display: block; }
.is-overlay:not(.is-scrolled):not(.is-open) .brand-logo--light + .brand-logo--dark, .is-overlay:not(.is-scrolled):not(.is-open) .brand-logo--dark:has(+ .brand-logo--light) { display: none; }
.primary-nav { display: none; }
.primary-nav > ul { display: flex; gap: 0; list-style: none; }
.nav-link { display: inline-flex; align-items: center; gap: 4px; padding: 10px 9px; background: none; border: 0; font-size: .92rem; white-space: nowrap; text-decoration: none; position: relative; color: inherit; }
.nav-link::after { content: ""; position: absolute; left: 9px; right: 9px; bottom: 4px; height: 1px; background: var(--leaf); transform: scaleX(0); transform-origin: left; transition: transform .25s var(--ease); }
.nav-link:hover::after, .nav-link.is-active::after { transform: scaleX(1); }
.nav-caret { width: 14px; height: 14px; transition: transform .2s; }
.has-menu { position: relative; }
.nav-menu { position: absolute; top: calc(100% + 6px); left: 0; min-width: 220px; list-style: none; padding: 10px 0; background: var(--milk); color: var(--text); border: 1px solid var(--sand); border-radius: var(--radius); box-shadow: 0 18px 40px -20px rgba(20,36,27,.28); opacity: 0; visibility: hidden; transform: translateY(-4px); transition: opacity .18s, transform .18s, visibility .18s; }
.has-menu.is-open .nav-menu, .has-menu:focus-within .nav-menu { opacity: 1; visibility: visible; transform: none; }
.has-menu.is-open .nav-caret { transform: rotate(180deg); }
/* ---------- Dropdown menu ----------
   Opens on click, not hover: a hover menu fires by accident on trackpads and is
   unusable on touch. Each row carries a one-line description, which is what makes
   this read as a menu rather than a stack of links. */
.nav-menu { max-height: min(78vh, 560px); overflow-y: auto; min-width: 316px; padding: 8px; border-radius: 12px; box-shadow: 0 28px 60px -32px rgba(12,38,24,.45), 0 2px 8px -4px rgba(12,38,24,.18); }
/* The Projects menu is long, so it runs in two columns on a roomy screen. */
.has-menu--wide .nav-menu { min-width: 620px; columns: 2; column-gap: 8px; }
.has-menu--wide .nav-menu li { break-inside: avoid; }
.nav-menu a { display: block; padding: 10px 14px; text-decoration: none; white-space: normal; border-radius: 8px; transition: background .18s var(--ease), transform .18s var(--ease); }
.nav-menu-label { display: block; font-weight: 500; color: var(--basalt); letter-spacing: .01em; }
.nav-menu-desc { display: block; margin-top: 2px; font-size: .84rem; line-height: 1.35; color: var(--muted); }
.nav-menu a:hover, .nav-menu a:focus-visible, .nav-menu a[aria-current] { background: var(--green-50); transform: translateX(3px); }
.nav-menu a:hover .nav-menu-label, .nav-menu a:focus-visible .nav-menu-label, .nav-menu a[aria-current] .nav-menu-label { color: var(--accent-ink); }
/* The active top-level item keeps a gradient underline. */
.nav-link.is-active::after, .nav-link[aria-current]::after { background: var(--grad-rule); height: 2px; }
.header-actions { display: flex; align-items: center; gap: 6px; }
.header-phone { display: none; align-items: center; gap: 8px; padding: 8px 10px; text-decoration: none; font-weight: 500; }
.header-cta { display: none; }
@media (min-width: 1280px) { .primary-nav { display: block; } .nav-toggle { display: none; } .header-cta { display: inline-flex; } .header-divider { display: block; } }
@media (min-width: 1400px) { .header-phone { display: inline-flex; } }
.search-panel { border-top: 1px solid var(--sand); background: var(--milk); color: var(--text); padding: 18px 0; }
.search-form { position: relative; display: flex; align-items: center; gap: 12px; }
.search-form input { flex: 1; border: 0; border-bottom: 1px solid var(--sand); background: transparent; color: var(--basalt); caret-color: var(--accent); padding: 12px 4px; font-size: 1.15rem; outline: none; }
.search-form input:focus { border-color: var(--accent); }
.search-form input::placeholder { color: var(--muted); opacity: 1; }
.search-panel .icon-btn, .search-form > .icon { color: var(--basalt); }
.search-results a { color: var(--basalt); }
.search-results { position: absolute; top: calc(100% + 8px); left: 32px; right: 56px; list-style: none; background: var(--milk); border: 1px solid var(--sand); border-radius: var(--radius); box-shadow: 0 18px 40px -24px rgba(29,28,26,.35); z-index: 5; max-height: 60vh; overflow: auto; }
.search-results a { display: flex; justify-content: space-between; gap: 16px; padding: 12px 18px; text-decoration: none; }
.search-results a span { color: var(--muted); font-size: .9rem; }
.search-results a:hover, .search-results [aria-selected="true"] a { background: var(--ivory); }
.search-results .empty { padding: 12px 18px; color: var(--muted); }
.mobile-nav { position: fixed; inset: 0; z-index: 90; background: var(--surface-dark); color: var(--on-dark); overflow-y: auto; }
.mobile-nav-inner { min-height: 100%; display: flex; flex-direction: column; padding: 18px var(--gutter) 32px; }
.mobile-nav-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; }
.mobile-nav-top .brand-word { color: var(--milk-ink); }
.mobile-nav ul { list-style: none; }
/* Mobile menu: each dropdown becomes a collapsible group so the parent label survives. */
.mobile-nav-group details { border-bottom: 1px solid rgba(227,239,229,.1); }
.mobile-nav-group summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 0; font-family: var(--font-display); font-size: 1.7rem; color: var(--milk-ink); cursor: pointer; list-style: none; }
.mobile-nav-group summary::-webkit-details-marker { display: none; }
.mobile-nav-group summary .nav-caret { transition: transform .2s var(--ease); flex: none; }
.mobile-nav-group details[open] summary .nav-caret { transform: rotate(180deg); }
.mobile-nav-group details > ul { list-style: none; padding: 0 0 10px 14px; }
.mobile-nav-group details > ul a { font-family: var(--font-text); font-size: 1.02rem; padding: 9px 0; border-bottom: 0; color: var(--on-dark-muted); }
.mobile-nav-group details > ul a[aria-current] { color: var(--accent-ink); }
.mobile-nav nav a { display: block; padding: 12px 0; font-family: var(--font-display); font-size: 1.7rem; color: var(--milk-ink); text-decoration: none; border-bottom: 1px solid rgba(227,239,229,.1); }
.mobile-nav nav a[aria-current] { color: var(--accent-bright); }
.mobile-nav-contact { margin-top: auto; padding-top: 28px; display: grid; gap: 12px; }

/* ---------- Hero ---------- */
.hero { position: relative; min-height: min(100svh, 940px); padding-top: calc(var(--header-h) + clamp(12px, 2.5vh, 40px)); display: flex; flex-direction: column; justify-content: flex-end; color: var(--milk-ink); background: var(--surface-dark); overflow: hidden; isolation: isolate; }
.hero-slides, .hero-slide { position: absolute; inset: 0; margin: 0; }
.hero-slide { opacity: 0; transition: opacity 1.15s var(--ease); z-index: 0; }
.hero-slide.is-active { opacity: 1; z-index: 1; }
.hero-slide img, .project-hero-media img { width: 100%; height: 100%; object-fit: cover; background: var(--surface-dark-2); }
.hero-slide.is-active img { animation: settle 9s var(--ease) both; }

/* ---------- Hero video banner ----------
   The poster <img> stays in the flow underneath; the video is layered on top and
   fades in only once it is actually playing, so a slow or blocked video never
   leaves an empty banner. The embed variant is an iframe sized to cover the same
   box (YouTube/Vimeo insist on 16:9, so it is scaled up and cropped).            */
.hero-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; opacity: 0; transition: opacity .9s var(--ease); pointer-events: none; z-index: 1; }
.hero-slide.is-active .hero-video.is-playing, .project-hero-media .hero-video.is-playing { opacity: 1; }
.hero-video--embed { overflow: hidden; }
.hero-video--embed iframe { position: absolute; top: 50%; left: 50%; width: 100vw; height: 56.25vw; min-height: 100%; min-width: 177.78vh; transform: translate(-50%, -50%); border: 0; pointer-events: none; }
/* The gilt keyline and shade sit above the video. */
.hero-shade, .hero-frame { z-index: 3; }
.hero-slide--video.is-active img, .project-hero-media--video img { animation: none; }
/* A muted autoplay loop is decoration, so honour a reduced-motion preference and
   simply leave the poster photo showing. */
@media (prefers-reduced-motion: reduce) { .hero-video { display: none; } }
/* Slow Ken Burns drift: the frame keeps breathing for the whole slide rather than
   settling in the first second, which is what makes a hero feel filmic. */
@keyframes settle { from { transform: scale(1.05); } to { transform: scale(1); } }
/* ---------- Hero progress ---------- */
/* A thin bar across the foot of the hero showing how long the slide has left. */
.hero-progress { position: absolute; left: 0; right: 0; bottom: 0; height: 2px; z-index: 4; background: rgba(233,239,234,.16); overflow: hidden; }
.hero-progress span { display: block; height: 100%; width: 100%; transform: scaleX(0); transform-origin: left; background: var(--grad-rule); }
.hero-progress.is-running span { animation: heroBar var(--hero-dur, 6.5s) linear both; }
@keyframes heroBar { from { transform: scaleX(0); } to { transform: scaleX(1); } }


.hero-shade { position: absolute; inset: 0; z-index: 2; background: linear-gradient(180deg, rgba(10,24,16,.58) 0%, rgba(10,24,16,.06) 28%, rgba(14,32,21,.24) 55%, rgba(12,30,19,.86) 100%); }
.hero-frame { position: absolute; z-index: 3; inset: clamp(12px, 2vw, 26px); top: calc(var(--header-h) + 8px); border: 1px solid rgba(124,203,99,.6); pointer-events: none; }
.hero-content { position: relative; z-index: 4; padding-bottom: clamp(24px, 4vw, 40px); }
/* With a single slide there is no caption strip below, so the hero content itself has to
   leave room for the quick-search bar that overlaps the hero's bottom edge. */
.hero-content:last-child { padding-bottom: clamp(104px, 11vh, 124px); }
.hero-title { color: var(--milk-ink); max-width: 17ch; font-size: clamp(2.25rem, 3.4vw + 1rem, 4.25rem); font-weight: 500; margin-bottom: .35em; }
.hero-sub { max-width: 36rem; font-size: clamp(1.02rem, .35vw + .95rem, 1.2rem); color: var(--on-dark); margin-bottom: clamp(1.1rem, 2.5vh, 1.6rem); }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.hero-caption { position: relative; z-index: 4; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-block: 18px clamp(88px, 9vw, 110px); border-top: 1px solid rgba(227,239,229,.18); margin-top: 8px; }
.hero-caption-item { display: flex; flex-direction: column; text-decoration: none; }
.hero-caption-name { font-family: var(--font-display); font-size: 1.35rem; }
.hero-caption-loc { font-size: .92rem; color: var(--on-dark-muted); }
.hero-nav { display: flex; align-items: center; gap: 4px; }
.hero-nav .icon-btn { color: var(--milk-ink); border: 1px solid rgba(227,239,229,.25); width: 42px; height: 42px; }
.hero-nav .icon-btn:hover { border-color: var(--accent); color: var(--accent-bright); }
.hero-count { font-variant-numeric: tabular-nums; padding: 0 10px; font-size: .95rem; color: var(--on-dark); }
@media (max-width: 700px) { .hero-caption { flex-direction: column; align-items: flex-start; } .hero-frame { display: none; } }
/* Short laptop screens: keep the whole hero readable rather than forcing full height. */
@media (max-height: 760px) and (min-width: 900px) {
  .hero { min-height: 0; }
  .hero-title { font-size: clamp(2.1rem, 2.6vw + 1rem, 3.4rem); }
  .hero-caption { padding-block: 14px clamp(72px, 8vw, 92px); }
  .project-hero { min-height: 0; padding-bottom: 8px; }
}

/* Quick search overlaps the hero edge */
.quick-search { position: relative; z-index: 5; margin-top: clamp(-76px, -6vw, -56px); }
.qs-form { display: grid; gap: 1px; grid-template-columns: minmax(0, 1fr); background: var(--sand); border: 1px solid var(--sand); border-radius: var(--radius); box-shadow: 0 30px 60px -40px rgba(29,28,26,.6); width: auto; padding: 0; margin-inline: var(--gutter); max-width: calc(var(--wrap) - var(--gutter) * 2); }
.qs-field { background: var(--card); padding: 13px 18px 9px; display: flex; flex-direction: column; min-width: 0; }
.qs-field label { font-size: .82rem; color: var(--muted); letter-spacing: .02em; }
.qs-field select { width: 100%; min-width: 0; border: 0; background-color: var(--card); padding: 4px 0; font-size: 1.02rem; color: var(--basalt); outline: none; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='16' height='16' fill='none' stroke='%23D5B678' stroke-width='1.5'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right center; padding-right: 22px; }
.qs-submit { border-radius: 0; min-height: 64px; }
/* Two columns on mid-size screens; a single row only once there is room for it,
   otherwise the four selects push the Search button off the edge. */
@media (min-width: 900px) { .qs-form { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .qs-submit { grid-column: 1 / -1; } }
@media (min-width: 1160px) { .qs-form { grid-template-columns: repeat(4, minmax(0, 1fr)) auto; } .qs-submit { grid-column: auto; padding-inline: 32px; } }
@media (min-width: 1368px) { .qs-form { margin-inline: auto; } }

.trust-strip { padding: clamp(40px, 5vw, 64px) 0 0; }
.trust-list { display: grid; gap: 18px 32px; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); list-style: none; }
.trust-list li { display: flex; gap: 14px; align-items: flex-start; font-size: 1rem; color: var(--basalt); }
.trust-list .icon { color: var(--accent); width: 24px; height: 24px; margin-top: 2px; }

/* Heroes fall back to charcoal when a project has no photograph yet,
   so overlaid white text always stays readable. */
.hero .is-placeholder, .project-hero .is-placeholder { opacity: .22; }

/* ---------- Framed photography (signature) ---------- */
.framed { position: relative; display: block; overflow: hidden; }
.framed::after { content: ""; position: absolute; inset: 14px; border: 1px solid rgba(124,203,99,.7); pointer-events: none; }
.framed img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- Spotlight ---------- */
.spotlight { display: grid; gap: 28px clamp(32px, 5vw, 72px); align-items: center; margin-bottom: clamp(40px, 5vw, 64px); }
.spotlight-media { aspect-ratio: 4 / 3; }
.spotlight-title { font-size: clamp(2.1rem, 2.4vw + 1rem, 3.3rem); margin-bottom: .3em; }
.spotlight-title a { text-decoration: none; }
.spotlight-loc, .project-card-loc, .project-loc { display: flex; align-items: center; gap: 8px; color: var(--muted); margin-bottom: 1rem; }
.spotlight-loc .icon, .project-card-loc .icon { color: var(--accent); }
.spotlight-text { font-size: 1.08rem; max-width: 34rem; }
.facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 28px; margin: 1.5rem 0 2rem; padding-top: 1.25rem; border-top: 1px solid var(--sand); }
.facts dt { font-size: .85rem; color: var(--muted); }
.facts dd { color: var(--basalt); font-weight: 500; }
.spotlight-actions { display: flex; flex-wrap: wrap; gap: 12px; }
@media (min-width: 960px) { .spotlight { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); } }

/* ---------- Rails ---------- */
.rail-wrap { position: relative; }
.rail { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(280px, 85%); gap: 24px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: 0; padding-bottom: 12px; scrollbar-width: thin; scrollbar-color: var(--sand) transparent; overscroll-behavior-x: contain; }
.rail:focus-visible { outline-offset: 6px; }
.rail-item { scroll-snap-align: start; min-width: 0; }
@media (min-width: 700px) { .rail { grid-auto-columns: calc((100% - 24px) / 2); } }
@media (min-width: 1100px) { .rail { grid-auto-columns: calc((100% - 48px) / 3); } }
.rail--quotes { grid-auto-columns: minmax(280px, 90%); }
@media (min-width: 900px) { .rail--quotes { grid-auto-columns: calc((100% - 24px) / 2); } }
.rail-controls { display: flex; gap: 8px; justify-content: flex-end; margin-top: 16px; }
.section-head .rail-controls { margin: 0; }
.rail-btn { border: 1px solid var(--sand); }
.band-dark .rail-btn { border-color: rgba(227,239,229,.25); color: var(--milk-ink); }
.rail-btn:disabled { opacity: .35; cursor: default; }

/* ---------- Cards ---------- */
.card-grid { display: grid; gap: clamp(24px, 2.4vw, 32px) 24px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.project-card { display: flex; flex-direction: column; height: 100%; background: transparent; }
.project-card-media { display: block; aspect-ratio: 4 / 3; overflow: hidden; }
.project-card--portrait .project-card-media { aspect-ratio: 3 / 4; }
.project-card-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease); }
.project-card:hover .project-card-media img { transform: scale(1.03); }
.project-card-body { display: flex; flex-direction: column; flex: 1; padding: 18px 0 0; }
.project-card-kind { font-size: .88rem; color: var(--accent-ink); margin-bottom: .4rem; }
.project-card-title { font-size: 1.55rem; margin-bottom: .35rem; }
.project-card-title a { text-decoration: none; }
.project-card-title a:hover { color: var(--accent-ink); }
.project-card-loc { margin-bottom: .35rem; font-size: .96rem; }
.project-card-type { font-size: .96rem; color: var(--text); margin-bottom: 0; }
.project-card-foot { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-top: auto; padding-top: 16px; border-top: 1px solid var(--sand); margin-block-start: 18px; }
.price { margin: 0; font-weight: 500; color: var(--basalt); }
.price small { font-weight: 400; color: var(--muted); }
.band-dark .project-card { background: transparent; }
.band-dark .project-card-title, .band-dark .price { color: var(--milk-ink); }

.tile-grid { display: grid; gap: 24px; grid-template-columns: 1fr; }
@media (min-width: 800px) { .tile-grid { grid-template-columns: 1fr 1fr; } }
.tile { position: relative; display: block; aspect-ratio: 4 / 5; overflow: hidden; color: var(--milk-ink); text-decoration: none; }
@media (min-width: 800px) { .tile { aspect-ratio: 5 / 6; } }
.tile img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--ease); }
.tile:hover img { transform: scale(1.03); }
.tile::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, transparent 45%, rgba(29,28,26,.85)); }
.tile-body { position: absolute; z-index: 2; left: 0; right: 0; bottom: 0; padding: clamp(20px, 3vw, 36px); display: flex; flex-direction: column; gap: 2px; }
.tile-title { font-family: var(--font-display); font-size: clamp(1.8rem, 1.6vw + 1rem, 2.6rem); line-height: 1.1; margin-bottom: 6px; }
.tile-meta { color: var(--on-dark); font-size: .98rem; }
.tile:hover .tile-title { color: var(--accent-bright); }

.unit-grid { display: grid; gap: 24px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); }
.unit-card { display: flex; flex-direction: column; border: 1px solid var(--sand); border-radius: var(--radius); background: var(--card); overflow: hidden; }
.unit-card-media { position: relative; aspect-ratio: 16 / 10; }
.unit-card-media img { width: 100%; height: 100%; object-fit: cover; }
.unit-card-body { display: flex; flex-direction: column; flex: 1; padding: 18px 20px 20px; }
.unit-card-project { font-size: .9rem; color: var(--accent-ink); margin-bottom: .3rem; }
.unit-card-project a { text-decoration: none; }
.unit-card-title { font-family: var(--font-text); font-size: 1.15rem; font-weight: 500; margin-bottom: .75rem; }
.specs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 16px; font-size: .92rem; margin-bottom: 16px; }
.specs dt { color: var(--muted); font-size: .82rem; }
.specs dd { color: var(--basalt); }
.unit-card-foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 14px; border-top: 1px solid var(--sand); }

.post-card-media { display: block; aspect-ratio: 16 / 10; overflow: hidden; }
.post-card-media img { width: 100%; height: 100%; object-fit: cover; }
.post-card-body { padding-top: 16px; }
.post-card-meta { font-size: .88rem; color: var(--muted); margin-bottom: .4rem; }
.post-card-title { font-size: 1.4rem; }
.post-card-title a { text-decoration: none; }
.post-card-title a:hover { color: var(--accent-ink); }
.post-card-excerpt { color: var(--muted); font-size: .98rem; }

.release-card { height: 100%; display: flex; flex-direction: column; border: 1px solid var(--sand); border-radius: var(--radius); overflow: hidden; background: var(--card); }
.release-media { position: relative; aspect-ratio: 16 / 10; }
.release-media img { width: 100%; height: 100%; object-fit: cover; }
.release-body { padding: 18px 20px 20px; display: flex; flex-direction: column; flex: 1; }
.release-date { font-size: .88rem; color: var(--accent-ink); margin-bottom: .3rem; }
.release-title { font-size: 1.35rem; }
.release-loc { color: var(--muted); font-size: .95rem; }
.release-text { font-size: .96rem; }
.release-note { font-size: .92rem; color: var(--basalt); border-left: 2px solid var(--leaf); padding-left: 10px; }
.release-actions { margin-top: auto; display: flex; gap: 20px; flex-wrap: wrap; padding-top: 8px; }

/* ---------- Home: lease list, resale, why, places ---------- */
.lease-list { list-style: none; border-top: 1px solid rgba(227,239,229,.14); }
.lease-row { display: grid; gap: 12px 24px; grid-template-columns: 96px 1fr; align-items: center; padding: 20px 0; border-bottom: 1px solid rgba(227,239,229,.14); }
.lease-thumb { width: 96px; aspect-ratio: 1; overflow: hidden; }
.lease-thumb img { width: 100%; height: 100%; object-fit: cover; }
.lease-main h3 { margin: 0 0 4px; font-size: 1.55rem; }
.lease-main h3 a { text-decoration: none; }
.lease-main h3 a:hover { color: var(--accent-bright); }
.lease-main p { margin: 0; color: var(--on-dark-muted); font-size: .96rem; }
.lease-count { margin: 0; color: var(--accent-bright); font-size: .96rem; grid-column: 2; }
.lease-row .btn { grid-column: 2; justify-self: start; }
@media (min-width: 900px) { .lease-row { grid-template-columns: 120px minmax(0, 1fr) 220px auto; } .lease-thumb { width: 120px; } .lease-count, .lease-row .btn { grid-column: auto; } }

/* ---------- Premium polish: cards, project page, scroll reveal ---------- */


/* Project and post cards: lift, and let the photograph drift on hover. */
.project-card, .post-card, .unit-card, .release-card, .location-card {
  border-radius: 14px; overflow: hidden;
  transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
}
.project-card:hover, .post-card:hover, .unit-card:hover, .release-card:hover, .location-card:hover {
  box-shadow: 0 20px 44px -30px rgba(12,38,24,.34);
  border-color: color-mix(in srgb, var(--accent) 32%, transparent);
}


/* Section headings on interior pages carry the same gradient keyline as the home page. */
.block > h2::after, .page-head h1::after { content: ""; display: block; width: 62px; height: 2px; margin-top: 14px; background: var(--grad-rule); border-radius: 2px; }

/* Sticky in-page nav on the project page reads as a rail, not a row of links. */
.toc { border-radius: 14px; }
.toc a { border-radius: 8px; transition: background .2s var(--ease), color .2s var(--ease); }
.toc a:hover, .toc a.is-active { background: var(--green-50); color: var(--accent-ink); }

@media (prefers-reduced-motion: reduce) {
}

/* ---------- Resale ---------- */
.resale-grid { list-style: none; display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(min(240px, 100%), 1fr)); }
.resale-tile { position: relative; display: flex; flex-direction: column; gap: 5px; height: 100%; padding: 22px; background: var(--card); border: 1px solid var(--sand); border-radius: 12px; text-decoration: none; transition: border-color .2s var(--ease), box-shadow .2s var(--ease); }
.resale-tile:hover, .resale-tile:focus-visible { border-color: color-mix(in srgb, var(--accent) 40%, transparent); box-shadow: 0 16px 34px -26px rgba(12,38,24,.34); }
.resale-name { font-family: var(--font-display); font-size: 1.4rem; line-height: 1.2; color: var(--basalt); }
.resale-meta { color: var(--muted); font-size: .92rem; }
.resale-count { margin-top: auto; padding-top: 12px; color: var(--accent-ink); font-weight: 500; font-size: .92rem; }
.section-head-links { display: flex; gap: 8px 20px; flex-wrap: wrap; min-width: 0; }
.section-head-links .text-link { white-space: normal; overflow-wrap: anywhere; }

.why-grid { display: grid; gap: 40px clamp(40px, 6vw, 96px); }
@media (min-width: 960px) { .why-grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } .why-intro { position: sticky; top: calc(var(--header-h) + 32px); align-self: start; } }
.why-intro p { font-size: 1.08rem; margin-bottom: 1.6rem; max-width: 32rem; }
.why-list { list-style: none; display: grid; gap: 0; }
.why-list li { padding: 24px 0; border-top: 1px solid var(--leaf); }
.why-list li:last-child { border-bottom: 1px solid var(--sand); }
.why-list h3 { font-size: 1.5rem; margin-bottom: .35rem; }
.why-list p { margin: 0; color: var(--muted); max-width: 36rem; }

.places-grid { display: grid; gap: 40px clamp(40px, 6vw, 96px); align-items: start; }
@media (min-width: 960px) { .places-grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.place-index { list-style: none; border-top: 1px solid var(--sand); }
.place-index a { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 16px 0; border-bottom: 1px solid var(--sand); text-decoration: none; }
.place-name { font-family: var(--font-display); font-size: clamp(1.5rem, 1vw + 1rem, 2rem); color: var(--basalt); transition: color .2s; }
.place-meta { color: var(--muted); font-size: .94rem; text-align: right; }
.place-index a:hover .place-name { color: var(--accent-ink); }

.about-grid { display: grid; gap: 40px clamp(40px, 6vw, 96px); align-items: center; }
@media (min-width: 900px) { .about-grid { grid-template-columns: 1fr 1fr; } }
.about-media { aspect-ratio: 5 / 4; overflow: hidden; }
.about-media img { width: 100%; height: 100%; object-fit: cover; }
.about-body p { font-size: 1.08rem; max-width: 34rem; }
.stat-row, .stat-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 20px; margin: 1.5rem 0; padding-top: 1.25rem; border-top: 1px solid var(--sand); }
.stat-row div, .stat-list div { display: flex; flex-direction: column-reverse; }
.stat-row dd, .stat-list dd { font-family: var(--font-display); font-size: 2rem; color: var(--basalt); line-height: 1.1; }
.stat-row dt, .stat-list dt { color: var(--muted); font-size: .92rem; }

.logo-row { list-style: none; display: flex; flex-wrap: wrap; align-items: center; gap: 28px 48px; }
.logo-row img { height: 48px; width: auto; background: none; filter: grayscale(1); opacity: .75; transition: filter .2s, opacity .2s; }
.logo-row li:hover img { filter: none; opacity: 1; }
.quote { margin: 0; padding: 32px; border: 1px solid rgba(227,239,229,.16); border-radius: var(--radius); display: flex; flex-direction: column; justify-content: space-between; gap: 24px; }
.quote blockquote { margin: 0; font-family: var(--font-display); font-size: 1.35rem; line-height: 1.45; color: var(--milk-ink); }
.quote blockquote p { margin: 0; }
.quote-name { display: block; font-weight: 500; color: var(--accent-bright); }
.quote-meta { display: block; font-size: .92rem; color: var(--on-dark-muted); }

.closing-grid { display: grid; gap: 40px clamp(40px, 6vw, 96px); align-items: start; }
@media (min-width: 960px) { .closing-grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.closing p { color: var(--on-dark); font-size: 1.08rem; max-width: 30rem; }
.closing-contacts { list-style: none; display: grid; gap: 12px; margin-top: 28px; }
.closing-contacts a { display: inline-flex; gap: 12px; align-items: center; text-decoration: none; color: var(--milk-ink); font-size: 1.1rem; }
.closing-contacts .icon { color: var(--leaf); }
.closing-form { background: var(--card); color: var(--text); padding: clamp(22px, 2.6vw, 32px); border: 1px solid var(--sand); border-radius: var(--radius); }
.cta-inline { display: flex; flex-wrap: wrap; gap: 24px; justify-content: space-between; align-items: center; }
.cta-inline h2 { margin-bottom: .3rem; }
.cta-inline p { margin: 0; color: var(--muted); max-width: 40rem; }
.band-dark .cta-inline p { color: var(--on-dark-muted); }

/* ---------- FAQ ---------- */
.faq-list { border-top: 1px solid var(--sand); }
.faq { border-bottom: 1px solid var(--sand); }
.faq summary { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 20px 0; cursor: pointer; list-style: none; font-size: 1.1rem; font-weight: 500; color: var(--basalt); }
.faq summary::-webkit-details-marker { display: none; }
.faq-icon { color: var(--accent); transition: transform .25s var(--ease); }
.faq[open] .faq-icon { transform: rotate(45deg); }
.faq-answer { padding: 0 0 22px; max-width: 46rem; color: var(--text); }
.faq-group + .faq-group { margin-top: 56px; }
.faq-nav ul { list-style: none; display: grid; gap: 8px; position: sticky; top: calc(var(--header-h) + 32px); }
.faq-nav a { text-decoration: none; color: var(--muted); }
.faq-nav a:hover { color: var(--accent-ink); }

/* ---------- Page heads, filters, results ---------- */
.page-head { padding: clamp(26px, 4vw, 48px) 0 clamp(22px, 3vw, 34px); }
.page-head--ivory { background: var(--ivory); border-bottom: 1px solid var(--sand); }
.page-head--dark { background: var(--surface-dark); color: var(--on-dark); }
.page-head--dark .page-title { color: var(--milk-ink); }
.page-title { margin-bottom: .35em; max-width: 20ch; }
.page-intro { max-width: 44rem; font-size: 1.12rem; color: var(--muted); margin: 0; }
.page-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 24px; }
.breadcrumbs { margin-bottom: 18px; font-size: .9rem; color: var(--muted); }
.breadcrumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; }
.breadcrumbs li + li::before { content: "/"; margin-right: 6px; opacity: .5; }
.breadcrumbs a { text-decoration: none; }
.breadcrumbs a:hover { color: var(--accent-ink); }
.breadcrumbs--light { color: var(--on-dark); }
.breadcrumbs--light a:hover { color: var(--accent-bright); }
.tabs { display: flex; gap: 28px; border-bottom: 1px solid var(--sand); margin-bottom: 28px; }
.tabs a { padding: 10px 0; text-decoration: none; color: var(--muted); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.tabs a[aria-current] { color: var(--basalt); border-color: var(--leaf); }
.filter-bar { display: grid; gap: 12px 16px; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); align-items: end; margin-bottom: 26px; padding: 16px; background: var(--card); border: 1px solid var(--sand); border-radius: var(--radius); }
.filter-bar .btn { min-height: 46px; }
.results { transition: opacity .2s; }
.results.is-loading { opacity: .45; }
.results-count { color: var(--muted); font-size: .95rem; margin-bottom: 18px; }
.pagination { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 48px; }
.pagination a, .pagination span { min-width: 44px; height: 44px; padding: 0 14px; display: inline-grid; place-items: center; border: 1px solid var(--sand); border-radius: var(--radius); background: var(--card); text-decoration: none; }
.pagination span[aria-current] { background: var(--accent); color: #FFFFFF; border-color: var(--accent); }
.pagination a:hover { border-color: var(--accent); }
.empty-state { padding: clamp(32px, 5vw, 56px); border: 1px dashed var(--sand); border-radius: var(--radius); text-align: left; max-width: 46rem; }
.empty-state h3 { font-size: 1.6rem; }
.empty-state p { color: var(--muted); }
.empty-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 18px; }

/* ---------- Forms ---------- */
.field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.field label, .field-label { font-size: .9rem; color: var(--basalt); font-weight: 500; }
.optional { color: var(--muted); font-weight: 400; }
.field input, .field select, .field textarea, .search-inline input { width: 100%; min-height: 48px; padding: 11px 14px; border: 1px solid var(--mist); border-radius: var(--radius); background: #12261B; color: var(--on-dark); font-size: 1rem; transition: border-color .2s, box-shadow .2s; }
.field textarea { min-height: 96px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus, .search-inline input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent); }
.field.has-error input, .field.has-error select, .field.has-error textarea { border-color: var(--danger); }
.field-error { color: var(--danger); font-size: .88rem; margin: 2px 0 0; }
.pair { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.form-grid { display: grid; gap: 16px; grid-template-columns: 1fr; margin-bottom: 16px; }
@media (min-width: 600px) { .form-grid { grid-template-columns: 1fr 1fr; } .lead-form--compact .form-grid { grid-template-columns: 1fr; } }
.field--full { grid-column: 1 / -1; }
.field-check { display: flex; gap: 12px; align-items: flex-start; margin: 4px 0 18px; font-size: .9rem; color: var(--muted); }
.field-check input { width: 20px; height: 20px; margin-top: 2px; accent-color: var(--accent); flex: none; }
.field-check a { color: var(--accent-ink); }
.hp-field { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.form-alert { padding: 12px 14px; border-left: 3px solid var(--danger); background: color-mix(in srgb, var(--danger) 14%, #12261B); color: var(--danger); margin-bottom: 16px; font-size: .95rem; }
.form-alert.is-ok { border-color: var(--ok); color: var(--ok); background: color-mix(in srgb, var(--ok) 14%, #12261B); }
.turnstile { margin-bottom: 14px; }
.search-inline { display: flex; gap: 10px; margin: 24px 0; }

/* ---------- Project page ---------- */
.project-hero { position: relative; min-height: min(86svh, 820px); padding-top: calc(var(--header-h) + clamp(12px, 2.5vh, 40px)); display: flex; align-items: flex-end; color: var(--milk-ink); background: var(--surface-dark); overflow: hidden; isolation: isolate; }
.project-hero-media { position: absolute; inset: 0; }
/* Hero: headline on the left, a short enquiry card on the right. */
.project-hero-content { position: relative; z-index: 4; display: grid; gap: 28px clamp(32px, 4vw, 64px); align-items: end; padding-bottom: clamp(28px, 4vw, 56px); }
@media (min-width: 980px) { .project-hero-content { grid-template-columns: minmax(0, 1fr) 360px; } }
.project-hero-text { min-width: 0; }
.hero-form { background: rgba(16, 15, 14, .82); backdrop-filter: blur(10px); border: 1px solid rgba(124,203,99,.38); border-top: 2px solid var(--leaf); border-radius: var(--radius); padding: clamp(18px, 2vw, 24px); }
.hero-form-title { font-family: var(--font-display); font-size: 1.45rem; color: var(--milk-ink); margin-bottom: .25rem; }
.hero-form-text { font-size: .92rem; color: var(--on-dark-muted); margin-bottom: 14px; }
.hero-form .field label { color: var(--on-dark); font-size: .85rem; }
.hero-form .field input { min-height: 44px; }
.hero-form .field-check { margin: 2px 0 12px; font-size: .8rem; color: var(--on-dark-muted); }
.hero-form .form-grid { gap: 12px; margin-bottom: 12px; }
.project-title { color: var(--milk-ink); font-size: clamp(2.1rem, 4vw + 1rem, 4.6rem); max-width: 20ch; margin-bottom: .2em; }
.project-loc { color: var(--on-dark); font-size: 1.1rem; margin-bottom: 1.6rem; }
.project-loc .icon { color: var(--leaf); }
.subnav { position: sticky; top: var(--header-h); z-index: 40; background: rgba(19, 18, 17, .95); backdrop-filter: blur(8px); border-bottom: 1px solid var(--sand); }
.subnav ul { display: flex; gap: 28px; list-style: none; overflow-x: auto; scrollbar-width: none; }
.subnav a { display: block; padding: 16px 0; white-space: nowrap; text-decoration: none; color: var(--muted); border-bottom: 2px solid transparent; }
.subnav a:hover, .subnav a.is-current { color: var(--basalt); border-color: var(--leaf); }
.project-layout { display: grid; gap: 40px clamp(36px, 4vw, 64px); padding-block: clamp(30px, 4vw, 52px); }
/* Content runs the full width now that the sidebar has gone. */
.project-main { min-width: 0; }
.project-cta-grid { display: grid; gap: 32px clamp(32px, 5vw, 72px); align-items: start; }
@media (min-width: 960px) { .project-cta-grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.project-cta h2 { margin-bottom: .4em; }
.project-cta p { color: var(--on-dark-muted); max-width: 34rem; }
.block { padding-bottom: clamp(30px, 3.5vw, 44px); margin-bottom: clamp(30px, 3.5vw, 44px); max-width: 100%; border-bottom: 1px solid var(--sand); }
.block:last-of-type { border-bottom: 0; }
.fact-table { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); border-top: 1px solid var(--sand); margin-top: 28px; }
.fact-table div { padding: 14px 0; border-bottom: 1px solid var(--sand); padding-right: 16px; }
.fact-table dt { font-size: .85rem; color: var(--muted); }
.fact-table dd { color: var(--basalt); font-weight: 500; }
.check-list { list-style: none; display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.check-list li { display: flex; gap: 12px; }
.check-list .icon { color: var(--accent); margin-top: 4px; }
.table-wrap { overflow-x: auto; }
.data-table { width: 100%; border-collapse: collapse; font-size: .98rem; }
.data-table th, .data-table td { text-align: left; padding: 14px 16px 14px 0; border-bottom: 1px solid var(--sand); vertical-align: top; }
.data-table thead th { font-size: .85rem; color: var(--muted); font-weight: 500; }
.data-table tbody th { font-weight: 500; color: var(--basalt); }
.gallery { list-style: none; display: grid; gap: 12px; grid-template-columns: repeat(2, 1fr); }
.gallery-lead { grid-column: 1 / -1; }
@media (min-width: 800px) { .gallery { grid-template-columns: repeat(3, 1fr); } }
.gallery-item { display: block; width: 100%; padding: 0; border: 0; background: none; aspect-ratio: 4 / 3; overflow: hidden; }
.gallery-lead .gallery-item { aspect-ratio: 16 / 9; }
.gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.gallery-item:hover img { transform: scale(1.03); }
.gallery-caption { font-size: .88rem; color: var(--muted); margin: 6px 0 0; }
.video { margin: 24px 0 0; }
.video video, .video iframe, .video-poster { width: 100%; aspect-ratio: 16 / 9; border: 0; background: var(--surface-dark); }
.video-poster { position: relative; display: block; padding: 0; overflow: hidden; }
.video-poster img { width: 100%; height: 100%; object-fit: cover; opacity: .85; }
.play { position: absolute; inset: 0; margin: auto; width: 76px; height: 76px; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: #FFFFFF; }
.play .icon { width: 28px; height: 28px; fill: currentColor; }
.video figcaption { font-size: .92rem; color: var(--muted); margin-top: 8px; }
.connect-list { list-style: none; border-top: 1px solid var(--sand); margin: 20px 0; }
.connect-list li { display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--sand); }
.connect-list li span:last-child { color: var(--accent-ink); text-align: right; }
.location-map { margin-top: 20px; }
.map-embed { position: relative; aspect-ratio: 16 / 9; margin-top: 20px; background: var(--card); display: grid; place-items: center; border-radius: var(--radius); overflow: hidden; }
.map-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.avail-group + .avail-group { margin-top: 36px; }
.avail-head { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; margin-bottom: 18px; }
.avail-head h3 { margin: 0; }
.doc-list { list-style: none; border-top: 1px solid var(--sand); }
.doc-list li { display: flex; align-items: center; gap: 16px; padding: 16px 0; border-bottom: 1px solid var(--sand); }
.doc-list li > span { flex: 1; display: flex; flex-direction: column; }
.doc-list small { color: var(--muted); }
.doc-list .icon { color: var(--accent); }
.disclaimer-note { display: flex; gap: 10px; font-size: .9rem; color: var(--muted); max-width: 46rem; }
.aside-card { background: var(--card); padding: clamp(22px, 2.6vw, 30px); border-radius: var(--radius); border: 1px solid var(--sand); border-top: 2px solid var(--leaf); }
.aside-card--plain { margin-top: 28px; }
.aside-title { font-size: 1.6rem; margin-bottom: .3rem; }
.aside-text { color: var(--muted); font-size: .98rem; }
.aside-wa { display: inline-flex; gap: 8px; align-items: center; margin-top: 16px; color: var(--accent-ink); font-weight: 500; text-decoration: none; }
.aside-project { margin-top: 32px; }

.listing-head { padding: clamp(24px, 3.4vw, 40px) 0; background: var(--ivory); border-bottom: 1px solid var(--sand); }
.listing-head-grid { display: grid; gap: 32px clamp(32px, 5vw, 72px); align-items: center; }
@media (min-width: 900px) { .listing-head-grid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); } }
.listing-head-media { aspect-ratio: 4 / 3; }

/* ---------- Locations ---------- */
.location-grid { list-style: none; display: grid; gap: 1px; background: var(--sand); border: 1px solid var(--sand); grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.location-card a { display: flex; flex-direction: column; gap: 6px; height: 100%; padding: 24px; background: var(--card); text-decoration: none; }
.location-card img { aspect-ratio: 16 / 10; object-fit: cover; margin-bottom: 12px; }
.location-card a:hover { background: #E6EAE7; }
.location-name { font-family: var(--font-display); font-size: 1.8rem; color: var(--basalt); }
.location-meta { color: var(--accent-ink); font-size: .92rem; }
.location-text { color: var(--muted); font-size: .96rem; }
.side-facts .h-small:not(:first-child) { margin-top: 32px; }
.plain-list { list-style: none; display: grid; gap: 8px; }
.plain-list a { text-decoration: none; }
.plain-list a:hover { color: var(--accent-ink); }
.sitemap-grid { display: grid; gap: 40px; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }

/* ---------- Article & prose ---------- */
.article-head { padding: clamp(32px, 5vw, 64px) 0 clamp(24px, 3vw, 40px); }
.article-meta { font-size: .92rem; color: var(--muted); }
.article-meta a { color: var(--accent-ink); text-decoration: none; }
.article-title { font-size: clamp(2.2rem, 3vw + 1rem, 3.8rem); }
.article-author { color: var(--muted); }
.article-hero { aspect-ratio: 16 / 8; margin-bottom: clamp(32px, 4vw, 56px); padding-inline: 0; max-width: calc(var(--wrap) - var(--gutter) * 2); }
.article-layout { display: grid; gap: 44px; padding-bottom: var(--section); }
@media (min-width: 1100px) { .article-layout { grid-template-columns: minmax(0, 46rem) 340px; justify-content: space-between; } .article-aside { position: sticky; top: calc(var(--header-h) + 32px); align-self: start; } }
.article-summary { font-size: 1.22rem; line-height: 1.55; color: var(--basalt); padding-left: 20px; border-left: 2px solid var(--leaf); }
.toc { margin: 28px 0; padding: 18px 22px; background: var(--card); border: 1px solid var(--sand); border-radius: var(--radius); }
.toc-title { font-weight: 500; color: var(--basalt); margin-bottom: 8px; }
.toc ol { padding-left: 20px; display: grid; gap: 6px; }
.toc a { text-decoration: none; }
.toc a:hover { color: var(--accent-ink); }
.prose { font-size: 1.0625rem; }
.prose--article { font-family: var(--font-text); font-size: 1.125rem; line-height: 1.72; }
.prose h2 { font-size: clamp(1.6rem, 1vw + 1.1rem, 2.1rem); margin: 2em 0 .6em; }
.prose h3 { margin: 1.6em 0 .5em; }
.prose ul, .prose ol { padding-left: 1.3em; margin: 0 0 1.2em; }
.prose li { margin-bottom: .4em; }
.prose a { color: var(--accent-ink); }
.prose blockquote { margin: 1.6em 0; padding-left: 20px; border-left: 2px solid var(--leaf); font-family: var(--font-display); font-size: 1.3rem; color: var(--basalt); }
.prose img { margin: 1.5em 0; }
.prose table { width: 100%; border-collapse: collapse; margin: 1.5em 0; font-size: .96rem; }
.prose th, .prose td { text-align: left; padding: 10px 12px 10px 0; border-bottom: 1px solid var(--sand); }
.author-box { margin-top: 40px; padding: 24px; border: 1px solid var(--sand); border-radius: var(--radius); }
.author-name { font-weight: 500; color: var(--basalt); margin-bottom: 4px; }

/* ---------- Contact ---------- */
.contact-grid { display: grid; gap: 48px clamp(40px, 6vw, 96px); align-items: start; }
@media (min-width: 960px) { .contact-grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.contact-list { list-style: none; display: grid; gap: 24px; }
.contact-list li { display: flex; gap: 16px; }
.contact-list .icon { color: var(--accent); width: 24px; height: 24px; margin-top: 4px; }
.contact-label { font-size: .85rem; color: var(--muted); margin: 0; }
.contact-list a { font-size: 1.15rem; color: var(--basalt); text-decoration: none; }

/* ---------- Dialogs ---------- */
.dialog { border: 0; padding: 0; background: transparent; max-width: min(560px, calc(100vw - 24px)); width: 100%; max-height: calc(100dvh - 24px); }
.dialog::backdrop { background: rgba(18,38,27,.52); backdrop-filter: blur(2px); }
.dialog[open] { animation: rise .28s var(--ease); }
@keyframes rise { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.dialog-panel { position: relative; background: var(--card); padding: clamp(24px, 4vw, 40px); border-radius: var(--radius); border-top: 2px solid var(--leaf); max-height: calc(100dvh - 24px); overflow-y: auto; }
.dialog-close { position: absolute; top: 10px; right: 10px; }
.dialog-title { font-size: clamp(1.6rem, 1.5vw + 1rem, 2.1rem); padding-right: 36px; }
.dialog-context { color: var(--muted); }
.dialog--media { max-width: min(1400px, 100vw); max-height: 100dvh; width: 100vw; height: 100dvh; margin: 0; }
.dialog--media::backdrop { background: rgba(29,28,26,.95); }
.media-stage { margin: 0; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 56px 64px; }
.media-stage img { max-height: calc(100dvh - 140px); width: auto; object-fit: contain; background: none; }
.media-stage figcaption { color: var(--on-dark); margin-top: 12px; font-size: .95rem; }
.media-prev, .media-next { position: fixed; top: 50%; transform: translateY(-50%); color: var(--milk-ink); border: 1px solid rgba(227,239,229,.3); }
.media-prev { left: 12px; } .media-next { right: 12px; }
.dialog-close--light { position: fixed; top: 12px; right: 12px; color: var(--milk-ink); }

/* ---------- Floating contact, mobile bar, cookie banner ---------- */
.reach-us { position: fixed; right: 24px; bottom: 24px; z-index: 70; display: none; flex-direction: column; align-items: flex-end; gap: 12px; }
@media (min-width: 900px) { .reach-us { display: flex; opacity: 0; visibility: hidden; transform: translateY(12px); transition: opacity .3s var(--ease), transform .3s var(--ease), visibility .3s; } }
.reach-us.is-ready { opacity: 1; visibility: visible; transform: none; }
.reach-toggle { display: inline-flex; align-items: center; gap: 10px; padding: 14px 22px; border: 1px solid var(--sand); border-radius: 999px; background: var(--card); color: var(--basalt); font-weight: 500; box-shadow: 0 16px 36px -18px rgba(29,28,26,.7); }
.reach-toggle .icon { color: var(--accent); }
.reach-toggle:hover, .reach-toggle[aria-expanded="true"] { background: var(--card); }
.reach-panel { width: 280px; padding: 18px; background: var(--card); border: 1px solid var(--sand); border-top: 2px solid var(--leaf); border-radius: var(--radius); box-shadow: 0 24px 48px -28px rgba(29,28,26,.6); display: grid; gap: 4px; }
.reach-title { font-family: var(--font-display); font-size: 1.3rem; color: var(--basalt); margin-bottom: 8px; }
.reach-item { display: flex; align-items: center; gap: 12px; width: 100%; padding: 10px 8px; background: none; border: 0; border-radius: var(--radius); text-align: left; text-decoration: none; color: var(--basalt); }
.reach-item:hover { background: #E6EAE7; }
.reach-item .icon { color: var(--accent); }
.reach-dismiss { justify-self: start; font-size: .85rem; margin-top: 8px; color: var(--muted); }
.reach-restore { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--sand); background: var(--card); color: var(--accent-ink); display: grid; place-items: center; }
.mobile-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 70; display: grid; grid-template-columns: repeat(3, 1fr); background: var(--surface-dark); padding-bottom: env(safe-area-inset-bottom); border-top: 1px solid var(--leaf-line); }
.mobile-bar a, .mobile-bar button { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 10px 4px; background: none; border: 0; color: var(--milk-ink); text-decoration: none; font-size: .82rem; }
.mobile-bar .icon { color: var(--leaf); }
.mobile-bar > * + * { border-left: 1px solid rgba(227,239,229,.12); }
@media (min-width: 900px) { .mobile-bar { display: none; } }
@media (max-width: 899px) { body { padding-bottom: calc(62px + env(safe-area-inset-bottom)); } }
.cookie-banner { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 80; }
@media (max-width: 899px) { .cookie-banner { bottom: calc(72px + env(safe-area-inset-bottom)); } }
@media (min-width: 900px) { .cookie-banner { right: auto; max-width: 560px; left: 24px; bottom: 24px; } }
.cookie-inner { background: var(--card); border: 1px solid var(--sand); border-radius: var(--radius); padding: 20px; box-shadow: 0 24px 48px -28px rgba(29,28,26,.6); }
.cookie-text { font-size: .94rem; margin-bottom: 12px; }
.cookie-text a { color: var(--accent-ink); }
.cookie-options { display: flex; flex-wrap: wrap; gap: 16px; margin-bottom: 14px; }
.toggle { display: inline-flex; align-items: center; gap: 8px; font-size: .94rem; }
.toggle input { width: 18px; height: 18px; accent-color: var(--accent); }
.cookie-actions { display: flex; flex-wrap: wrap; gap: 8px; }

/* ---------- Footer ---------- */
.site-footer { position: relative; background: var(--grad-dark); color: var(--on-dark-muted); padding-top: clamp(44px, 5vw, 72px); font-size: .98rem; isolation: isolate; }
.footer-grid { display: grid; gap: 40px; grid-template-columns: 1fr; padding-bottom: 48px; }
@media (min-width: 700px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1100px) { .footer-grid { grid-template-columns: 1.4fr 1fr 1fr 1.2fr; } }
.site-footer .brand-word { color: var(--milk-ink); font-size: 1.7rem; margin-bottom: 6px; }
.footer-tagline { color: var(--on-dark); }
.footer-contact { display: grid; gap: 10px; margin-top: 20px; }
.footer-contact span, .footer-contact a { display: flex; gap: 10px; align-items: flex-start; text-decoration: none; color: var(--on-dark); }
.footer-contact .icon { color: var(--leaf); margin-top: 3px; }
.footer-social { list-style: none; display: flex; flex-wrap: wrap; gap: 16px; margin-top: 20px; }
.footer-social a { color: var(--on-dark); }
.footer-head { font-family: var(--font-text); font-weight: 500; color: var(--accent-bright); margin-bottom: 14px; }
.footer-col ul { list-style: none; display: grid; gap: 8px; }
.footer-col a { text-decoration: none; color: var(--on-dark); }
.footer-col a:hover { color: var(--accent-bright); }
.footer-cta { display: grid; gap: 12px; align-content: start; }
.footer-cta p { margin: 0 0 6px; }
.footer-legal { border-top: 1px solid rgba(227,239,229,.12); padding-top: 24px; padding-bottom: 32px; }
.footer-disclaimer { font-size: .88rem; max-width: 70rem; }
.footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 24px; font-size: .88rem; }
.footer-bottom p { margin: 0; }
.footer-bottom ul { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 20px; }
.footer-bottom a, .footer-bottom .link-btn { color: var(--on-dark-muted); text-decoration: none; font-weight: 400; }
.footer-bottom a:hover, .footer-bottom .link-btn:hover { color: var(--accent-bright); }

/* ---------- About Signature Global (homepage) ---------- */
.developer-about { background: var(--ivory); }
.developer-about-grid { display: grid; gap: 36px clamp(36px, 5vw, 80px); align-items: center; }
@media (min-width: 1000px) { .developer-about-grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.developer-about-media { position: relative; overflow: hidden; }
.developer-about-media img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 5; }
.developer-about-media::after { content: ""; position: absolute; inset: 14px; border: 1px solid rgba(124,203,99,.75); pointer-events: none; }
.developer-about-body h2 { max-width: 26ch; }
.developer-about-body .lead { max-width: 42rem; }
.developer-about-body > p { max-width: 42rem; }
.pillar-list { list-style: none; display: grid; gap: 0; margin: 28px 0 32px; }
.pillar-list li { display: flex; gap: 16px; padding: 20px 0; border-top: 1px solid var(--sand); }
.pillar-list li:last-child { border-bottom: 1px solid var(--sand); }
.pillar-icon { display: grid; place-items: center; width: 42px; height: 42px; flex: none; border: 1px solid var(--accent); border-radius: 50%; color: var(--accent); }
.pillar-list h3 { font-size: 1.3rem; margin-bottom: .2rem; }
.pillar-list h3 a { text-decoration: none; }
.pillar-list h3 a:hover { color: var(--accent-ink); }
.pillar-list p { margin: 0; color: var(--muted); font-size: .98rem; max-width: 40rem; }
.developer-about-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.developer-about-note { margin: 14px 0 0; }

/* ---------- Signature Global legacy band (about page) ---------- */
.developer-legacy { position: relative; padding-block: clamp(44px, 5.5vw, 76px); background: var(--surface-dark); color: var(--on-dark); overflow: hidden; isolation: isolate; }
.developer-legacy-media { position: absolute; inset: 0; z-index: 0; }
.developer-legacy-media img { width: 100%; height: 100%; object-fit: cover; object-position: center 45%; }
.developer-legacy::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(100deg, rgba(29, 28, 26, .92) 0%, rgba(29, 28, 26, .78) 42%, rgba(29, 28, 26, .18) 100%); }
.developer-legacy-inner { position: relative; z-index: 2; }
.developer-legacy-card { max-width: 40rem; }
.developer-legacy-card h2 { color: var(--milk-ink); max-width: 24ch; }
.developer-legacy-card .kicker { color: var(--accent-bright); }
.developer-legacy-card p { color: var(--on-dark); font-size: 1.08rem; }
.developer-legacy-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 26px; }
@media (max-width: 720px) {
  .developer-legacy::after { background: linear-gradient(180deg, rgba(29, 28, 26, .74) 0%, rgba(29, 28, 26, .9) 55%); }
  .developer-legacy-media img { object-position: center 30%; }
}

/* ---------- Footer backdrop ---------- */
/* The photograph sits behind the whole footer under an 80% black layer, so it reads as
   texture rather than a picture. Swap the file in public/assets/img to change it. */
.footer-media { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.site-footer > .wrap { position: relative; z-index: 1; }
.footer-media img { width: 100%; height: 100%; object-fit: cover; object-position: center 35%; background: none; }
.footer-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(8, 8, 7, .84) 0%, rgba(8, 8, 7, .86) 55%, rgba(8, 8, 7, .94) 100%); }

/* ---------- Location map (homepage) ---------- */
.map-head { max-width: 46rem; margin-bottom: clamp(24px, 3vw, 36px); }
.map-head h2 { margin-bottom: .4em; }
.map-layout { display: grid; gap: 28px clamp(32px, 5vw, 72px); align-items: start; }
.map-layout > * { min-width: 0; }
@media (min-width: 1080px) { .map-layout { grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); } }
/* The map artwork itself is light, so it keeps a pale plate even on the black theme. */
.map-figure { margin: 0; min-width: 0; position: relative; background: #14241B; border: 1px solid var(--sand); border-radius: var(--radius); padding: clamp(10px, 1.6vw, 18px); }
.map-figure::before { content: ""; position: absolute; inset: 5px; border: 1px solid rgba(124,203,99,.55); border-radius: 2px; pointer-events: none; }
/* The map carries small labels, so on narrow screens it scrolls sideways rather than
   shrinking into illegibility. */
.map-scroll { overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: thin; scrollbar-color: var(--sand) transparent; }
.map-scroll img { width: 100%; min-width: 620px; height: auto; background: none; }
.map-figure figcaption { margin-top: 10px; font-size: .85rem; color: #586B60; }
.map-side { display: flex; flex-direction: column; }
.sector-index { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--sand); }
.sector-index li { margin: 0; }
.sector-index a { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--sand); text-decoration: none; }
.sector-name { font-family: var(--font-display); font-size: 1.35rem; color: var(--basalt); transition: color .2s var(--ease); }
.sector-count { font-size: .88rem; color: var(--accent-ink); white-space: nowrap; }
.sector-index a:hover .sector-name, .sector-index a:focus-visible .sector-name { color: var(--accent-ink); }
.map-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }
.map-note { margin: 12px 0 0; }

/* ---------- Project showcase slider (homepage) ---------- */
.showcase { background: var(--surface-dark); border-block: 1px solid var(--sand); }
.showcase .section-head h2 { color: var(--milk-ink); }
.showcase .section-intro { color: var(--on-dark-muted); }
.showcase .rail-btn { border-color: color-mix(in srgb, var(--on-dark) 25%, transparent); color: var(--on-dark); }
.showcase-rail-wrap { position: relative; }
.rail--showcase { grid-auto-columns: 100%; gap: 24px; padding-bottom: 4px; }
.showcase-slide { position: relative; display: block; overflow: hidden; border-radius: var(--radius); background: var(--surface-dark-2); isolation: isolate; }
.showcase-media { aspect-ratio: 4 / 5; }
@media (min-width: 700px) { .showcase-media { aspect-ratio: 21 / 10; } }
.showcase-media img { width: 100%; height: 100%; object-fit: cover; }
.showcase-slide::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(8, 8, 7, .1) 0%, rgba(8, 8, 7, .58) 45%, rgba(8, 8, 7, .94) 100%); }
@media (min-width: 700px) { .showcase-slide::after { background: linear-gradient(90deg, rgba(8, 8, 7, .92) 0%, rgba(8, 8, 7, .64) 45%, rgba(8, 8, 7, .12) 100%); } }
.showcase-body { position: absolute; z-index: 2; left: 0; right: 0; bottom: 0; padding: clamp(20px, 3vw, 44px); max-width: 40rem; }
.showcase-index { font-variant-numeric: tabular-nums; letter-spacing: .08em; font-size: .82rem; color: var(--accent-bright); margin-bottom: .6rem; }
.showcase-kind { font-size: .9rem; color: var(--on-dark); margin-bottom: .3rem; }
.showcase-title { font-size: clamp(1.9rem, 2.4vw + 1rem, 3.2rem); margin-bottom: .3rem; color: var(--milk-ink); }
.showcase-title a { text-decoration: none; }
.showcase-title a:hover { color: var(--accent-bright); }
.showcase-loc { display: flex; align-items: center; gap: 8px; color: var(--on-dark); margin-bottom: .3rem; }
.showcase-loc .icon { color: var(--leaf); }
.showcase-type { color: var(--on-dark-muted); margin-bottom: 1rem; }
.showcase-actions { display: flex; flex-wrap: wrap; gap: 10px; }

/* ---------- Associates slider ---------- */
.assoc-strip { position: relative; background: var(--surface-dark); border-top: 1px solid var(--sand); }
.assoc-strip h2 { color: var(--milk-ink); }
.assoc-strip .section-intro { color: var(--on-dark-muted); }
.assoc-strip .kicker { color: var(--accent-bright); }
.assoc-strip .rail-btn { border-color: color-mix(in srgb, var(--on-dark) 25%, transparent); color: var(--on-dark); }
.rail--logos { grid-auto-columns: minmax(150px, 46%); gap: 1px; background: var(--sand); border: 1px solid var(--sand); border-radius: var(--radius); }
@media (min-width: 700px) { .rail--logos { grid-auto-columns: minmax(0, calc(100% / 3)); } }
@media (min-width: 1100px) { .rail--logos { grid-auto-columns: minmax(0, calc(100% / 5)); } }
.assoc-card { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; min-height: 132px; padding: 20px 18px; background: var(--card); text-align: center; }
.assoc-card a { display: block; text-decoration: none; }
.assoc-logo { max-height: 44px; width: auto; margin-inline: auto; padding: 8px 12px; border-radius: 3px; background: rgba(255, 255, 255, .9); box-sizing: content-box; filter: grayscale(1); opacity: .8; transition: filter .25s var(--ease), opacity .25s var(--ease); }
.assoc-card:hover .assoc-logo, .assoc-card a:focus-visible .assoc-logo { filter: none; opacity: 1; }
.assoc-card { transition: background-color .25s var(--ease); }
.assoc-card:hover { background: #FFFFFF; }
.assoc-name { font-family: var(--font-display); font-size: 1.2rem; color: var(--milk-ink); }
.assoc-cat { margin: 0; font-size: .82rem; color: var(--muted); }

/* ---------- Project page: location split, amenities, block intros ---------- */
.block-intro { color: var(--muted); max-width: 46rem; margin: -.3rem 0 1.4rem; }

/* Half map, half copy. Stacks on narrow screens with the map first. */
.loc-split { display: grid; gap: 28px clamp(32px, 4vw, 56px); align-items: center; }
@media (min-width: 900px) { .loc-split { grid-template-columns: 1fr 1fr; } }
.loc-split > * { min-width: 0; }
.loc-media { margin: 0; position: relative; overflow: hidden; border-radius: var(--radius); background: #14241B; }
.loc-media img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 3; }
.loc-media .map-embed { margin: 0; aspect-ratio: 4 / 3; }
.loc-body h2 { margin-bottom: .5em; max-width: 18ch; }
.loc-lead { color: var(--text); font-size: 1.05rem; max-width: 40rem; }
.loc-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin-top: 22px; }

/* Ticked advantages, the device from the reference layout. */
.tick-list { list-style: none; display: grid; gap: 14px; margin: 20px 0; }
.tick-list li { display: flex; gap: 14px; align-items: flex-start; }
.tick-list .tick { display: grid; place-items: center; width: 26px; height: 26px; flex: none; border-radius: 50%; background: var(--accent); color: #FFFFFF; }
.tick-list .tick .icon { width: 15px; height: 15px; stroke-width: 2.4; }
.tick-list span:last-child { padding-top: 1px; }

/* Highlight and amenity cards: icon or image on top, name, one line of detail.
   Three or four to a row, set in Admin > Settings > Project pages. */
.feature-cards { list-style: none; display: grid; gap: clamp(20px, 2.4vw, 36px) clamp(16px, 2vw, 28px); grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 720px) { .feature-cards[data-cols="3"] { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 720px) and (max-width: 1099px) { .feature-cards[data-cols="4"] { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .feature-cards[data-cols="4"] { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.feature-card { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 10px; padding: clamp(18px, 2vw, 28px) clamp(12px, 1.5vw, 22px); border-right: 1px solid var(--sand); }
.feature-cards[data-cols="3"] .feature-card:nth-child(3n), .feature-cards[data-cols="4"] .feature-card:nth-child(4n) { border-right: 0; }
@media (max-width: 719px) { .feature-card { border-right: 0; } .feature-card:nth-child(odd) { border-right: 1px solid var(--sand); } }
.feature-media { display: grid; place-items: center; width: 84px; height: 84px; margin-bottom: 4px; }
.feature-glyph { width: 46px; height: 46px; color: var(--accent); stroke-width: 1.2; }
.feature-img { width: 84px; height: 84px; object-fit: cover; border-radius: 50%; background: none; }
.feature-title { font-size: clamp(1.15rem, .5vw + 1rem, 1.4rem); margin: 0; color: var(--milk-ink); }
.feature-text { margin: 0; color: var(--muted); font-size: .95rem; line-height: 1.6; max-width: 26rem; }

/* ---------- Misc pages ---------- */
.error-page, .thanks { min-height: 60vh; }
.error-code { font-family: var(--font-display); font-size: 5rem; line-height: 1; color: var(--accent-ink); margin-bottom: 12px; }
.thanks-mark { width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center; background: var(--surface-dark); color: var(--accent-bright); }
.thanks-mark .icon { width: 30px; height: 30px; }
img.is-placeholder { object-fit: cover; }

/* ---------- Motion & print ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
  .hero-slide.is-active img { animation: none; }
  .hero-progress { display: none; }
  .nav-menu a:hover { transform: none; }
}
@media print {
  .site-header, .site-footer, .reach-us, .mobile-bar, .cookie-banner, .project-aside, .subnav, .hero-actions, .dialog { display: none !important; }
  body { background: #fff; color: #000; padding: 0; }
  .project-hero, .hero { min-height: auto; color: #000; background: none; }
  .hero-shade, .hero-frame { display: none; }
}


/* ---------- Developer figures strip (under the banner) ----------
   The attribution line is part of the component, not decoration: these are the
   developer's numbers and the strip must never read as this advisory's own. */
.figures { padding-block: clamp(34px, 4vw, 54px); }
.figures-intro { max-width: 72ch; margin: 0 auto clamp(26px, 3vw, 40px); text-align: center; font-size: clamp(1rem, 1.6vw, 1.12rem); line-height: 1.55; letter-spacing: .02em; text-transform: uppercase; color: var(--text); }
.figures-rail { grid-auto-columns: minmax(200px, 72%); scrollbar-width: none; }
.figures-rail::-webkit-scrollbar { display: none; }
@media (min-width: 700px) { .figures-rail { grid-auto-columns: calc((100% - 48px) / 3); } }
@media (min-width: 1100px) { .figures-rail { grid-auto-columns: calc((100% - 72px) / 4); } }
.figure-item { text-align: center; padding: 6px 12px; }
.figure-icon { display: inline-grid; place-items: center; width: 58px; height: 58px; margin-bottom: 14px; color: var(--accent); }
.figure-icon .icon { width: 42px; height: 42px; stroke-width: 1.2; }
.figure-value { margin: 0; font-size: clamp(1.15rem, 2vw, 1.45rem); font-weight: 600; line-height: 1.25; letter-spacing: .01em; text-transform: uppercase; color: var(--accent); }
.figure-label { margin: 6px 0 0; font-size: .95rem; letter-spacing: .04em; text-transform: uppercase; color: var(--basalt-2); }
.figure-sub { margin: 4px 0 0; font-size: .88rem; line-height: 1.4; color: var(--muted); }
@media (max-width: 700px) { .figures-intro { text-align: left; } }


/* ==========================================================================
   Homepage hero — advisor layout
   Copy on the left over a dark-to-clear gradient, the photograph left bright on
   the right, a floating search panel at the foot, a dark value strip below.
   Everything is scoped to .hero--advisor so the project-page hero is untouched.
   ========================================================================== */
:root { --hero-green: var(--leaf); }   /* #7CCB63, kept as an alias */

.header-divider { display: none; width: 1px; height: 28px; margin: 0 10px 0 6px; background: currentColor; opacity: .28; }
@media (min-width: 1280px) { .header-divider { display: block; } }
.header-cta .icon { width: 16px; height: 16px; }
.btn-lg { min-height: 54px; padding: 14px 30px; font-size: 1.02rem; }
.btn .icon { flex: none; }
.btn-ghost-light { background: transparent; color: #FFFFFF; border-color: rgba(255,255,255,.72); }
.btn-ghost-light:hover { background: rgba(255,255,255,.08); border-color: #FFFFFF; color: #FFFFFF; }

.hero--advisor { min-height: min(100svh, 980px); padding-top: var(--header-h); justify-content: flex-start; }
/* Dark on the left for the copy, clear on the right for the architecture,
   and a soft darkening at top and bottom for the header and the search panel. */
.hero--advisor .hero-shade { background:
  linear-gradient(90deg, rgba(6,20,12,.93) 0%, rgba(6,20,12,.80) 26%, rgba(6,20,12,.42) 50%, rgba(6,20,12,.08) 70%, rgba(6,20,12,0) 100%),
  linear-gradient(180deg, rgba(6,20,12,.55) 0%, rgba(6,20,12,0) 20%, rgba(6,20,12,0) 58%, rgba(6,20,12,.72) 100%); }

.hero-inner { position: relative; z-index: 4; flex: 1; display: grid; grid-template-columns: minmax(0, 1fr); grid-template-areas: "content"; align-items: start; padding-block: clamp(24px, 5vh, 60px) clamp(22px, 4vh, 40px); }
.hero--advisor .hero-content { grid-area: content; max-width: 44rem; padding-bottom: 0; }
.hero-eyebrow { margin: 0 0 18px; font-size: .76rem; letter-spacing: .34em; text-transform: uppercase; color: rgba(233,239,234,.92); }
.hero--advisor .hero-title { max-width: none; margin: 0 0 .32em; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.75rem, 1.15rem + 2.35vw, 3.35rem); line-height: 1.1; color: #FFFFFF; }
.hero-accent { display: block; margin-top: .06em; font-weight: 500; font-size: clamp(2.4rem, 1.3rem + 4.6vw, 5.6rem); line-height: 1.02; letter-spacing: -.01em; color: var(--leaf); }
.hero-lede { max-width: 34ch; margin: 0 0 18px; font-size: clamp(1.08rem, .9rem + .7vw, 1.5rem); line-height: 1.35; color: #FFFFFF; }
.hero-rule { display: block; width: 180px; height: 2px; margin-bottom: 22px; background: linear-gradient(90deg, var(--leaf) 0 32%, rgba(255,255,255,.26) 32% 100%); }
.hero--advisor .hero-sub { max-width: 34rem; margin: 0 0 26px; font-size: clamp(1rem, .95rem + .25vw, 1.12rem); line-height: 1.6; color: rgba(233,239,234,.92); }
.hero--advisor .hero-actions { gap: 16px; }

.hero-aside { display: none; }
.hero-meta { position: absolute; top: clamp(16px, 3vh, 28px); right: 0; display: flex; align-items: flex-end; gap: 16px; }
.hero-tagline { display: none; }
.hero-pause { display: inline-grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; border: 1px solid rgba(255,255,255,.55); background: rgba(6,20,12,.28); color: #FFFFFF; cursor: pointer; }
.hero-pause:hover { border-color: #FFFFFF; }
.hero-pause[aria-pressed="true"] { background: var(--leaf); border-color: var(--leaf); }

@media (min-width: 1024px) {
  .hero-inner { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "content aside" "content meta"; column-gap: 40px; }
  .hero-aside { grid-area: aside; display: block; margin: clamp(40px, 7vh, 80px) 0 0; font-family: var(--font-display); font-style: italic; font-size: clamp(1.6rem, .9rem + 1.2vw, 2.4rem); line-height: 1.15; color: #FFFFFF; text-shadow: 0 1px 14px rgba(0,0,0,.4); }
  .hero-aside::after { content: ""; display: block; width: 44px; height: 2px; margin-top: 18px; background: var(--leaf); }
  .hero-meta { grid-area: meta; position: static; align-self: end; justify-self: end; }
  .hero-tagline { display: block; margin: 0; font-size: .74rem; line-height: 1.9; letter-spacing: .32em; text-transform: uppercase; color: #FFFFFF; text-shadow: 0 1px 10px rgba(0,0,0,.45); }
}
/* On narrow screens the copy spans the full width, so the whole image darkens. */
@media (max-width: 899px) {
  .hero--advisor .hero-shade { background: linear-gradient(180deg, rgba(6,20,12,.72) 0%, rgba(6,20,12,.62) 45%, rgba(6,20,12,.82) 100%); }
  .hero--advisor .hero-actions .btn { flex: 1 1 100%; }
}

/* ---- Search panel ---- */
.hero-search-wrap { position: relative; z-index: 5; padding-bottom: clamp(20px, 3.4vh, 36px); }
.hero-search { background: #FFFFFF; color: var(--text); border-radius: 10px; box-shadow: 0 26px 60px -32px rgba(0,0,0,.5); padding: clamp(18px, 2.2vw, 28px) clamp(16px, 2.6vw, 34px); }
.hero-search-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 10px 20px; margin-bottom: 18px; }
.hero-search-head h2 { margin: 0; font-family: var(--font-display); font-weight: 600; font-size: clamp(1.3rem, 1rem + 1vw, 1.9rem); color: var(--basalt); }
.hero-search-head h2::after { content: none; }
.hero-search-links { display: flex; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; font-size: .74rem; letter-spacing: .22em; text-transform: uppercase; }
.hero-search-links li + li::before { content: "|"; margin: 0 14px; color: var(--leaf); }
.hero-search-links a { color: var(--text); text-decoration: none; }
.hero-search-links a:hover, .hero-search-links a:focus-visible { color: var(--accent); }
.hero-search-fields { display: grid; gap: 14px; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 640px) { .hero-search-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); } .hero-search-submit { grid-column: 1 / -1; } }
@media (min-width: 1100px) { .hero-search-fields { grid-template-columns: repeat(4, minmax(0, 1fr)) minmax(210px, .95fr); } .hero-search-submit { grid-column: auto; } }

/* The <select> fills the whole box, so a click anywhere on it opens the list;
   the icon and the label sit on top and let clicks pass through. */
.hs-field { position: relative; min-height: 66px; border: 1px solid #BFC9C3; border-radius: 6px; background: #FFFFFF; transition: border-color .15s var(--ease), box-shadow .15s var(--ease); }
.hs-field:hover { border-color: #8A9A90; }
.hs-field:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent); }
.hs-field select { position: absolute; inset: 0; width: 100%; height: 100%; padding: 28px 40px 9px 54px; border: 0; border-radius: inherit; background: transparent; font: inherit; font-size: 1rem; color: var(--basalt); appearance: none; -webkit-appearance: none; cursor: pointer; }
.hs-field select:focus-visible { outline: none; }
.hs-field > label { position: absolute; left: 54px; top: 11px; font-size: .78rem; line-height: 1.2; color: var(--muted); pointer-events: none; }
.hs-icon { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); display: grid; color: var(--accent); pointer-events: none; }
.hs-icon .icon { width: 24px; height: 24px; stroke-width: 1.4; }
.hs-field::after { content: ""; position: absolute; right: 16px; top: 50%; width: 8px; height: 8px; border-right: 1.5px solid var(--basalt); border-bottom: 1.5px solid var(--basalt); transform: translateY(-70%) rotate(45deg); pointer-events: none; }
.hero-search-submit { min-height: 66px; border-radius: 6px; font-size: 1.02rem; white-space: nowrap; }

/* ---- Value strip ---- */
.value-strip { background: var(--surface-dark); color: var(--on-dark); padding: clamp(22px, 3vw, 34px) 0; border-top: 1px solid rgba(255,255,255,.06); }
.value-strip-inner { display: flex; align-items: center; gap: 24px; }
.value-list { flex: 1; display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; list-style: none; margin: 0; padding: 0; }
@media (min-width: 480px) { .value-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 18px; } }
@media (min-width: 1024px) {
  .value-list { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; }
  .value-list li { padding: 4px 24px; }
  .value-list li:first-child { padding-left: 0; }
  .value-list li + li { border-left: 1px solid var(--leaf-line); }
}
.value-list li { display: flex; align-items: center; gap: 16px; }
.value-icon { flex: none; display: grid; color: var(--leaf); }
.value-icon .icon { width: 38px; height: 38px; stroke-width: 1.2; }
.value-text { font-size: .98rem; line-height: 1.4; color: #E9EFEA; }
.value-signature { display: none; }
@media (min-width: 1200px) {
  .value-signature { display: block; margin: 0; padding-left: 28px; border-left: 1px solid var(--leaf-line); font-family: var(--font-display); font-style: italic; font-size: clamp(1.3rem, 1rem + .7vw, 1.75rem); color: #FFFFFF; white-space: nowrap; }
  .value-signature::after { content: ""; display: block; width: 60%; height: 2px; margin: 6px 0 0 auto; background: var(--leaf); }
}


/* ==========================================================================
   Homepage featured projects — one project per slide
   Photo card on the left with the key facts over it, the story on the right.
   ========================================================================== */
.fp-show { background: #F4F6F3; padding-block: clamp(48px, 6vw, 96px); }
.fp-track { position: relative; display: flex; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; outline: none; }
.fp-track::-webkit-scrollbar { display: none; }
.fp-slide { flex: 0 0 100%; min-width: 0; scroll-snap-align: start; scroll-snap-stop: always; display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px; align-items: center; }
@media (min-width: 1024px) { .fp-slide { grid-template-columns: minmax(0, 1.28fr) minmax(0, 1fr); gap: clamp(40px, 4.5vw, 72px); } }

/* ---- photo card ---- */
.fp-media { position: relative; border-radius: 12px; overflow: hidden; background: var(--surface-dark); box-shadow: 0 30px 60px -40px rgba(12,38,24,.55); }
.fp-photo { position: relative; aspect-ratio: 5 / 4; }
.fp-photo img:not(.fp-logo) { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.fp-photo::after { content: ""; position: absolute; inset: 0; pointer-events: none; background:
  linear-gradient(90deg, rgba(4,14,9,.45) 0%, rgba(4,14,9,0) 38%, rgba(4,14,9,0) 52%, rgba(4,14,9,.64) 100%),
  linear-gradient(180deg, rgba(4,14,9,.38) 0%, rgba(4,14,9,0) 28%, rgba(4,14,9,0) 68%, rgba(4,14,9,.62) 100%); }
.fp-tagline { position: absolute; z-index: 2; top: clamp(20px, 5%, 48px); left: clamp(20px, 4.5%, 44px); max-width: 17ch; margin: 0; font-size: clamp(.78rem, .55rem + .6vw, 1.1rem); line-height: 1.75; letter-spacing: .38em; text-transform: uppercase; color: #FFFFFF; }
.fp-logo { position: absolute; z-index: 2; top: clamp(18px, 4%, 30px); right: clamp(18px, 4%, 34px); width: auto; max-width: min(190px, 34%); max-height: 120px; object-fit: contain; }
.fp-foot { position: absolute; z-index: 2; left: 0; right: 0; bottom: 0; display: grid; grid-template-columns: 1fr auto 1fr; align-items: end; gap: 12px; padding: 0 clamp(14px, 3.5%, 34px) clamp(14px, 3%, 24px); }
.fp-video { grid-column: 1; justify-self: start; display: inline-flex; align-items: center; gap: 10px; padding: 10px 16px; border: 1px solid rgba(255,255,255,.82); border-radius: 4px; background: rgba(0,0,0,.2); color: #FFFFFF; font: inherit; font-size: .95rem; cursor: pointer; }
.fp-video:hover { background: rgba(0,0,0,.36); border-color: #FFFFFF; }
.fp-video .icon { width: 20px; height: 20px; }
.fp-dots { grid-column: 2; display: flex; gap: 2px; }
.fp-dot { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; }
.fp-dot::before { content: ""; width: 11px; height: 11px; border-radius: 50%; border: 1.5px solid #FFFFFF; }
.fp-dot.is-active::before { background: #FFFFFF; }
.fp-dot:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 0; }
.fp-note { grid-column: 3; justify-self: end; font-size: .74rem; color: rgba(255,255,255,.9); text-shadow: 0 1px 6px rgba(0,0,0,.5); }

/* key facts: a dark band under the photo on small screens, over it from 768px */
.fp-facts { list-style: none; margin: 0; padding: 18px 20px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; background: var(--surface-dark); color: #FFFFFF; }
.fp-facts li { display: flex; align-items: center; gap: 12px; min-width: 0; }
.fp-fact-icon { flex: none; display: grid; color: rgba(255,255,255,.88); }
.fp-fact-icon .icon { width: 32px; height: 32px; stroke-width: 1.2; }
.fp-facts strong { display: block; font-weight: 500; font-size: 1rem; letter-spacing: .02em; text-transform: uppercase; }
.fp-facts small { display: block; font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; color: rgba(255,255,255,.8); }
@media (min-width: 768px) {
  .fp-facts { position: absolute; z-index: 2; top: 50%; right: clamp(20px, 3.5%, 36px); transform: translateY(-50%); max-width: 42%; padding: 0; background: none; grid-template-columns: minmax(0, 1fr); gap: clamp(16px, 3vh, 30px); text-shadow: 0 1px 8px rgba(0,0,0,.45); }
}

/* ---- the story ---- */
.fp-body { position: relative; }
.fp-watermark { display: none; }
@media (min-width: 1200px) {
  .fp-watermark { display: block; position: absolute; z-index: 0; top: -22px; right: 0; max-width: 9ch; margin: 0; text-align: right; font-family: var(--font-display); font-size: clamp(2.2rem, 1rem + 1.8vw, 3.1rem); line-height: 1.12; letter-spacing: .06em; text-transform: uppercase; color: rgba(20,36,27,.055); pointer-events: none; }
}
.fp-eyebrow { position: relative; display: flex; align-items: center; gap: 14px; margin: 0 0 18px; font-size: .78rem; letter-spacing: .26em; text-transform: uppercase; color: var(--accent-ink); }
.fp-eyebrow::after { content: ""; width: 100px; height: 1px; background: var(--leaf); }
.fp-name { position: relative; margin: 0 0 16px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2rem, 1.2rem + 2.4vw, 3.6rem); line-height: 1.08; color: var(--basalt); }
.fp-name a { color: inherit; text-decoration: none; }
.fp-name a:hover, .fp-name a:focus-visible { color: var(--accent-ink); }
.fp-loc { display: flex; align-items: center; gap: 10px; margin: 0 0 16px; font-size: 1.02rem; color: var(--muted); }
.fp-loc .icon { width: 20px; height: 20px; color: var(--accent); }
.fp-desc { margin: 0 0 24px; max-width: 58ch; font-size: 1.06rem; line-height: 1.65; color: var(--text); }

.fp-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0 0 26px; border-top: 1px solid var(--sand); }
.fp-grid > div { display: grid; grid-template-columns: 40px minmax(0, 1fr); column-gap: 14px; align-items: start; padding: 18px 14px 18px 0; border-bottom: 1px solid var(--sand); }
.fp-grid > div:nth-child(odd) { border-right: 1px solid var(--sand); }
.fp-grid > div:nth-child(even) { padding-left: 22px; }
.fp-grid-icon { grid-row: 1 / span 2; display: grid; padding-top: 2px; color: var(--accent); }
.fp-grid-icon .icon { width: 34px; height: 34px; stroke-width: 1.1; }
.fp-grid dt { font-size: .86rem; color: var(--muted); }
.fp-grid dd { margin: 2px 0 0; font-family: var(--font-display); font-size: clamp(1rem, .85rem + .35vw, 1.2rem); line-height: 1.28; color: var(--basalt); overflow-wrap: break-word; }
@media (max-width: 479px) {
  .fp-grid > div { grid-template-columns: 28px minmax(0, 1fr); column-gap: 10px; }
  .fp-grid > div:nth-child(even) { padding-left: 12px; }
  .fp-grid-icon .icon { width: 26px; height: 26px; }
}
.fp-footnote { margin: -14px 0 22px; font-size: .8rem; color: var(--muted); }

.fp-actions { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; margin-bottom: 26px; }
@media (min-width: 560px) { .fp-actions { grid-template-columns: 1.1fr 1fr; } }
.fp-actions .btn { border-radius: 4px; }
.btn-deep { background: var(--green-800); color: #FFFFFF; border-color: var(--green-800); }
.btn-deep:hover { background: var(--green-900); border-color: var(--green-900); color: #FFFFFF; }

.fp-badges { list-style: none; margin: 0; padding: 16px 18px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; background: #FFFFFF; border: 1px solid var(--sand); border-radius: 10px; box-shadow: 0 14px 34px -28px rgba(12,38,24,.35); }
@media (min-width: 640px) {
  .fp-badges { grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 0; }
  .fp-badges li { padding-right: 10px; }
  .fp-badges li + li { padding-left: 14px; border-left: 1px solid var(--leaf-line-light); }
}
.fp-badges li { display: flex; align-items: center; gap: 10px; min-width: 0; font-size: .84rem; line-height: 1.35; color: var(--text); }
.fp-badges .icon { flex: none; width: 26px; height: 26px; stroke-width: 1.3; color: var(--accent); }
.fp-badges small { display: block; font-size: .72rem; color: var(--muted); overflow-wrap: anywhere; }

/* ---- video dialog ---- */
.video-dialog .dialog-panel { position: relative; width: min(1100px, 94vw); max-width: none; padding: 0; background: #000000; overflow: hidden; }
.video-frame { position: relative; aspect-ratio: 16 / 9; }
.video-frame iframe, .video-frame video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: #000000; }
.video-dialog .dialog-close { position: absolute; z-index: 2; top: 8px; right: 8px; border-radius: 50%; background: rgba(0,0,0,.6); color: #FFFFFF; }


/* ==========================================================================
   Commercial projects — editorial slider
   Built on the site's existing rail (scroll-snap + arrows + keyboard + touch).
   Every rule is scoped to .commercial-projects-section; all colours come from
   the site tokens, only the section and card surfaces are new.
   ========================================================================== */
.commercial-projects-section {
  --cps-bg: #F6F5F0;
  --cps-card: #FBFAF6;
  --cps-card-hover: #EEF4EF;
  --cps-border: rgba(20, 50, 40, .12);
  --cps-green: var(--accent);
  position: relative; isolation: isolate; overflow: hidden;
  background: var(--cps-bg);
  padding-block: clamp(56px, 7.2vw, 106px);
}
/* Architectural fins, top right: thin lines faded out by a mask. Pure CSS, no image. */
.commercial-projects-section::before {
  content: ""; position: absolute; z-index: -1; top: 0; right: 0; width: min(48vw, 680px); height: 440px; pointer-events: none;
  background: repeating-linear-gradient(98deg, rgba(20, 50, 40, .05) 0 1px, transparent 1px 20px);
  -webkit-mask-image: radial-gradient(115% 95% at 100% 0%, #000 0%, transparent 72%);
          mask-image: radial-gradient(115% 95% at 100% 0%, #000 0%, transparent 72%);
}

/* ---- heading ---- */
.commercial-projects-section .cps-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 22px 40px; margin-bottom: clamp(28px, 3.4vw, 46px); }
.commercial-projects-section .cps-head-text { max-width: 46rem; }
.commercial-projects-section .cps-eyebrow { display: flex; align-items: center; gap: 18px; margin: 0 0 14px; font-size: .74rem; letter-spacing: .34em; text-transform: uppercase; color: var(--accent-ink); }
.commercial-projects-section .cps-eyebrow::before { content: ""; width: 56px; height: 1px; background: var(--leaf); }
.commercial-projects-section h2 { margin: 0 0 12px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2rem, 1.3rem + 2.6vw, 3.6rem); line-height: 1.06; color: var(--basalt); }
.commercial-projects-section .cps-intro { margin: 0; font-size: clamp(.94rem, .86rem + .35vw, 1.12rem); line-height: 1.6; color: var(--text); }
.commercial-projects-section .cps-all { display: inline-flex; align-items: center; gap: 14px; padding-bottom: 2px; font-weight: 500; color: var(--basalt); text-decoration: none; }
.commercial-projects-section .cps-all:hover, .commercial-projects-section .cps-all:focus-visible { color: var(--cps-green); }

/* ---- circles (arrow in a ring) ---- */
.commercial-projects-section .cps-circle { display: inline-grid; place-items: center; width: 34px; height: 34px; border: 1px solid var(--cps-border); border-radius: 50%; color: var(--basalt); transition: background-color .3s ease, border-color .3s ease, color .3s ease, transform .3s ease; }
.commercial-projects-section .cps-circle .icon { width: 16px; height: 16px; }
.commercial-projects-section .cps-circle--solid { width: 50px; height: 50px; background: var(--green-800); border-color: var(--green-800); color: #FFFFFF; }
.commercial-projects-section .cps-all:hover .cps-circle--solid { background: var(--cps-green); border-color: var(--cps-green); transform: translateX(4px); }

/* ---- slider track ---- */
.commercial-projects-section .cps-rail {
  position: relative; gap: 24px; padding: 8px 2px 10px; margin: -8px -2px 0;   /* room for the hover lift */
  grid-auto-columns: 88%; scrollbar-width: none; cursor: grab;
}
.commercial-projects-section .cps-rail::-webkit-scrollbar { display: none; }
.commercial-projects-section .cps-rail.is-dragging { cursor: grabbing; scroll-snap-type: none; user-select: none; }
.commercial-projects-section .cps-rail.is-dragging .cps-card { pointer-events: none; }
@media (min-width: 700px) { .commercial-projects-section .cps-rail { grid-auto-columns: calc((100% - 24px) / 2); } }
@media (min-width: 1100px) { .commercial-projects-section .cps-rail { grid-auto-columns: calc((100% - 48px) / 3); } }

/* ---- card ---- */
.commercial-projects-section .cps-card {
  --cps-accent: var(--leaf);
  position: relative; display: flex; flex-direction: column; min-width: 0;
  background: var(--cps-card); border: 1px solid var(--cps-border); border-radius: 16px; overflow: hidden;
  transition: transform .4s ease, background-color .4s ease, border-color .4s ease, box-shadow .4s ease;
}
.commercial-projects-section .cps-card:hover, .commercial-projects-section .cps-card:focus-within {
  transform: translateY(-5px); background: var(--cps-card-hover);
  border-color: color-mix(in srgb, var(--cps-green) 30%, transparent);
  box-shadow: 0 22px 44px -34px rgba(12, 38, 24, .45);
}

.commercial-projects-section .cps-media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--surface-dark); }
.commercial-projects-section .cps-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; -webkit-user-drag: none; }
.commercial-projects-section .cps-media::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgba(4, 14, 9, .34) 0%, rgba(4, 14, 9, 0) 38%, rgba(4, 14, 9, 0) 75%, rgba(4, 14, 9, .18) 100%); transition: background-color .5s ease; }
.commercial-projects-section .cps-card:hover .cps-media img { transform: scale(1.04); }
.commercial-projects-section .cps-card:hover .cps-media::after { background-color: rgba(4, 14, 9, .12); }
.commercial-projects-section .cps-overline { position: absolute; z-index: 1; top: 22px; left: 24px; right: 24px; max-width: 16ch; margin: 0; font-size: .72rem; line-height: 1.75; letter-spacing: .32em; text-transform: uppercase; color: rgba(255, 255, 255, .94); text-shadow: 0 1px 8px rgba(0, 0, 0, .35); }

.commercial-projects-section .cps-body { display: flex; flex: 1; flex-direction: column; padding: 22px 26px 22px; }
.commercial-projects-section .cps-cat { display: flex; align-items: center; gap: 12px; margin: 0 0 10px; font-size: .72rem; letter-spacing: .26em; text-transform: uppercase; color: var(--accent-ink); }
/* One short leaf-green line before the category, the same on every card. */
.commercial-projects-section .cps-cat::before { content: ""; width: 22px; height: 2px; background: var(--cps-accent); }
.commercial-projects-section .cps-title { margin: 0 0 10px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.32rem, 1.1rem + .6vw, 1.72rem); line-height: 1.16; }
.commercial-projects-section .cps-title-pre { display: block; }
.commercial-projects-section .cps-link { color: var(--basalt); text-decoration: none; transition: color .3s ease; }
/* The title link covers the whole card, so the card is one tab stop and one target. */
.commercial-projects-section .cps-link::after { content: ""; position: absolute; inset: 0; z-index: 2; }
.commercial-projects-section .cps-card:hover .cps-link, .commercial-projects-section .cps-link:focus-visible { color: var(--cps-green); }
.commercial-projects-section .cps-link:focus-visible { outline: none; }
.commercial-projects-section .cps-card:focus-within { outline: 2px solid var(--cps-green); outline-offset: 3px; }
.commercial-projects-section .cps-loc { display: flex; align-items: center; gap: 8px; margin: 0 0 16px; font-size: .95rem; color: var(--muted); }
.commercial-projects-section .cps-loc .icon { width: 17px; height: 17px; flex: none; color: var(--accent); }
.commercial-projects-section .cps-tags { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 20px; padding: 0; list-style: none; }
.commercial-projects-section .cps-tags li { padding: 5px 11px; border: 1px solid var(--cps-border); border-radius: 4px; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--basalt-2); transition: border-color .3s ease; }
.commercial-projects-section .cps-card:hover .cps-tags li { border-color: color-mix(in srgb, var(--cps-green) 38%, transparent); }
.commercial-projects-section .cps-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 16px; border-top: 1px solid var(--cps-border); }
.commercial-projects-section .cps-price { font-size: .98rem; font-weight: 500; color: var(--basalt); }
.commercial-projects-section .cps-cta { display: inline-flex; align-items: center; gap: 10px; font-size: .95rem; color: var(--basalt); transition: color .3s ease; }
.commercial-projects-section .cps-card:hover .cps-cta { color: var(--cps-green); }
.commercial-projects-section .cps-card:hover .cps-cta .cps-circle { background: var(--cps-green); border-color: var(--cps-green); color: #FFFFFF; transform: translateX(4px); }

/* ---- controls: counter + progress + arrows ---- */
.commercial-projects-section .cps-controls { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-top: clamp(20px, 2.4vw, 30px); }
.commercial-projects-section .cps-progress { display: flex; align-items: center; gap: 8px; margin: 0; font-size: .82rem; letter-spacing: .12em; color: var(--muted); font-variant-numeric: tabular-nums; }
.commercial-projects-section .cps-progress [data-rail-current] { color: var(--basalt); }
.commercial-projects-section .cps-bar { position: relative; width: clamp(80px, 14vw, 180px); height: 1px; margin-left: 14px; background: var(--cps-border); }
.commercial-projects-section .cps-bar > span { position: absolute; left: 0; top: -0.5px; height: 2px; width: 0; background: var(--leaf); transition: width .3s ease; }
.commercial-projects-section .cps-arrows { margin: 0; gap: 10px; }
.commercial-projects-section .cps-btn { display: inline-grid; place-items: center; width: 48px; height: 48px; border: 1px solid var(--cps-border); border-radius: 50%; background: var(--cps-card); color: var(--basalt); cursor: pointer; transition: background-color .3s ease, border-color .3s ease, color .3s ease; }
.commercial-projects-section .cps-btn .icon { width: 18px; height: 18px; }
.commercial-projects-section .cps-btn:hover:not(:disabled) { background: var(--cps-green); border-color: var(--cps-green); color: #FFFFFF; }
.commercial-projects-section .cps-btn:focus-visible { outline: 2px solid var(--cps-green); outline-offset: 3px; }
.commercial-projects-section .cps-btn:disabled { opacity: .35; cursor: default; }
.commercial-projects-section .cps-controls:has(.cps-arrows[hidden]) { display: none; }

@media (prefers-reduced-motion: reduce) {
  .commercial-projects-section .cps-card, .commercial-projects-section .cps-media img, .commercial-projects-section .cps-circle { transition: none; }
  .commercial-projects-section .cps-card:hover, .commercial-projects-section .cps-card:focus-within { transform: none; }
  .commercial-projects-section .cps-card:hover .cps-media img { transform: none; }
}


/* ---------- Hero search: checkbox lists (property type, location) ---------- */
.hs-multi > summary { display: block; min-height: 64px; padding: 28px 40px 9px 54px; list-style: none; cursor: pointer; border-radius: 6px; outline: none; }
.hs-multi > summary::-webkit-details-marker { display: none; }
.hs-multi .hs-label { position: absolute; left: 54px; top: 11px; font-size: .78rem; line-height: 1.2; color: var(--muted); pointer-events: none; }
.hs-multi .hs-value { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 1rem; color: var(--basalt); }
.hs-multi[open] { border-color: var(--accent); }
.hs-multi[open]::after { transform: translateY(-25%) rotate(-135deg); }
/* Opens upwards: the panel sits at the foot of the banner. */
.hs-pop { position: absolute; z-index: 30; left: -1px; bottom: calc(100% + 8px); min-width: calc(100% + 2px); width: max-content; max-width: min(320px, 86vw); max-height: 300px; overflow-y: auto; margin: 0; padding: 8px; border: 1px solid var(--sand); border-radius: 8px; background: #FFFFFF; box-shadow: 0 -18px 40px -24px rgba(12,38,24,.4); }
.hs-check { display: flex; align-items: center; gap: 10px; padding: 9px 10px; border-radius: 6px; font-size: .96rem; color: var(--basalt); cursor: pointer; }
.hs-check:hover { background: var(--green-50); }
.hs-check input { flex: none; width: 18px; height: 18px; margin: 0; accent-color: var(--accent); }
.hs-clear { display: block; width: 100%; margin-top: 6px; padding: 8px 10px; border: 0; border-top: 1px solid var(--sand); background: none; text-align: left; font-size: .86rem; color: var(--accent-ink); cursor: pointer; }
.hs-clear:hover { text-decoration: underline; }

/* ==========================================================================
   Project explorer — "Live. Invest. Grow."
   Big photograph on the left, dark green story panel on the right; tabs switch
   between Residences / Low-Rise Floors / Commercial. Scoped to .explore-section.
   ========================================================================== */
.explore-section {
  --pxs-bg: #F5F3EC;
  --pxs-panel: var(--green-800);
  --pxs-leaf: var(--leaf);
  --pxs-leaf-ink: var(--leaf-ink);
  background: var(--pxs-bg); padding: clamp(48px, 6vw, 88px) 0 0;
}
.explore-section .pxs-head { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 18px 56px; margin-bottom: clamp(24px, 3vw, 40px); }
.explore-section .pxs-eyebrow { margin: 0 0 10px; font-size: .76rem; letter-spacing: .34em; text-transform: uppercase; color: var(--basalt-2); }
.explore-section h2 { position: relative; margin: 0; padding-bottom: 14px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.1rem, 1.3rem + 2.8vw, 3.8rem); line-height: 1.05; color: var(--basalt); }
.explore-section h2::after { content: ""; position: absolute; left: 0; bottom: 0; width: min(320px, 80%); height: 1px; background: linear-gradient(90deg, var(--pxs-leaf), rgba(124,203,99,0)); }
.explore-section .pxs-tabs { display: flex; flex-wrap: wrap; align-items: center; padding-bottom: 6px; }
.explore-section .pxs-tab { position: relative; margin: 0 22px; padding: 10px 0; border: 0; background: none; font-size: 1.02rem; color: var(--muted); cursor: pointer; transition: color .3s ease; }
.explore-section .pxs-tab:first-child { margin-left: 0; }
.explore-section .pxs-tab + .pxs-tab::before { content: ""; position: absolute; left: -22px; top: 50%; width: 1px; height: 22px; transform: translateY(-50%); background: var(--pxs-leaf); opacity: .6; }
.explore-section .pxs-tab:hover { color: var(--green-800); }
.explore-section .pxs-tab[aria-selected="true"] { color: var(--green-800); font-weight: 600; }
.explore-section .pxs-tab[aria-selected="true"]::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--pxs-leaf); }
.explore-section .pxs-tab:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.explore-section .pxs-aside { display: none; }
@media (min-width: 1200px) {
  .explore-section .pxs-aside { display: block; margin: 0 0 0 auto; padding-left: 26px; border-left: 1px solid var(--pxs-leaf); font-size: .7rem; line-height: 2; letter-spacing: .3em; text-transform: uppercase; color: var(--muted); }
}

/* ---- stage, mobile first: photo above, panel below ---- */
.explore-section .pxs-stage { position: relative; }
.explore-section .pxs-panel[hidden] { display: none; }
.explore-section .pxs-slide { display: none; }
.explore-section .pxs-slide.is-active { display: block; animation: pxsFade .6s ease both; }
.explore-section .pxs-media { position: relative; height: clamp(300px, 58vh, 560px); overflow: hidden; background: var(--surface-dark); }
.explore-section .pxs-media img { width: 100%; height: 100%; object-fit: cover; }
.explore-section .pxs-media::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(160deg, rgba(4,14,9,.42) 0%, rgba(4,14,9,0) 35%), linear-gradient(0deg, rgba(4,14,9,.28) 0%, rgba(4,14,9,0) 30%); }
.explore-section .pxs-tagline { position: absolute; z-index: 1; top: clamp(22px, 4vw, 56px); left: clamp(22px, 4vw, 64px); max-width: 16ch; margin: 0; font-size: clamp(.74rem, .6rem + .4vw, .92rem); line-height: 2; letter-spacing: .36em; text-transform: uppercase; color: #FFFFFF; }
.explore-section .pxs-tagline::after { content: ""; display: block; width: 60px; height: 1px; margin-top: 12px; background: var(--pxs-leaf); }

.explore-section .pxs-info { position: relative; overflow: hidden; background: var(--pxs-panel); color: #FFFFFF; padding: 30px 28px 26px; }
/* faint concentric rings, top right: architecture, not decoration for its own sake */
.explore-section .pxs-info::before { content: ""; position: absolute; top: -90px; right: -90px; width: 300px; height: 300px; border-radius: 50%; border: 1px solid rgba(255,255,255,.07); box-shadow: 0 0 0 42px rgba(255,255,255,.025), 0 0 0 84px rgba(255,255,255,.018); pointer-events: none; }
.explore-section .pxs-info-inner { position: relative; }
.explore-section .pxs-cat { display: flex; align-items: center; gap: 14px; margin: 0 0 16px; font-size: .74rem; letter-spacing: .3em; text-transform: uppercase; color: var(--pxs-leaf-ink); }
.explore-section .pxs-cat::before { content: ""; width: 48px; height: 1px; background: var(--pxs-leaf); }
.explore-section .pxs-name { margin: 0 0 16px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.9rem, 1.2rem + 2.1vw, 3.1rem); line-height: 1.1; color: #FFFFFF; }
.explore-section .pxs-name-pre { display: block; }
.explore-section .pxs-loc { display: flex; align-items: center; gap: 10px; margin: 0 0 16px; font-size: 1.02rem; color: rgba(255,255,255,.9); }
.explore-section .pxs-loc .icon { width: 19px; height: 19px; flex: none; color: var(--pxs-leaf); }
.explore-section .pxs-desc { max-width: 38ch; margin: 0 0 24px; font-size: 1.02rem; line-height: 1.65; color: rgba(255,255,255,.8); }
.explore-section .pxs-points { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0 0 28px; padding: 0; list-style: none; }
.explore-section .pxs-points li { display: flex; flex-direction: column; gap: 10px; padding: 0 14px; font-size: .68rem; line-height: 1.5; letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.86); }
.explore-section .pxs-points li:first-child { padding-left: 0; }
.explore-section .pxs-points li + li { border-left: 1px solid var(--leaf-line); }
.explore-section .pxs-points .icon { width: 26px; height: 26px; stroke-width: 1.2; color: var(--pxs-leaf); }
.explore-section .pxs-cta { display: inline-flex; align-items: center; gap: 14px; padding: 14px 26px; border: 1px solid rgba(255,255,255,.85); border-radius: 2px; color: #FFFFFF; text-decoration: none; transition: background-color .3s ease, color .3s ease; }
.explore-section .pxs-cta .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.explore-section .pxs-cta:hover, .explore-section .pxs-cta:focus-visible { background: #FFFFFF; color: var(--green-800); }
.explore-section .pxs-cta:hover .icon { transform: translateX(3px); }
.explore-section .pxs-cta:focus-visible { outline: 2px solid var(--pxs-leaf-ink); outline-offset: 3px; }

/* controls: a row under the panel on small screens */
.explore-section .pxs-controls { display: flex; align-items: center; gap: 12px; padding: 0 28px 28px; background: var(--pxs-panel); color: #FFFFFF; }
.explore-section .pxs-meta { order: -1; flex: 1; display: flex; align-items: center; gap: 14px; min-width: 0; }
.explore-section .pxs-count { margin: 0; font-size: .9rem; letter-spacing: .12em; white-space: nowrap; font-variant-numeric: tabular-nums; color: rgba(255,255,255,.8); }
.explore-section .pxs-count [data-explore-current] { font-size: 1.25rem; color: #FFFFFF; }
.explore-section .pxs-bar { position: relative; flex: 1; max-width: 260px; height: 1px; background: rgba(255,255,255,.25); }
.explore-section .pxs-bar > span { position: absolute; left: 0; top: -.5px; height: 2px; background: var(--pxs-leaf); transition: width .5s ease; }
.explore-section .pxs-arrow, .explore-section .pxs-pause { display: inline-grid; place-items: center; flex: none; border: 1px solid rgba(255,255,255,.7); border-radius: 50%; background: rgba(0,0,0,.18); color: #FFFFFF; cursor: pointer; transition: background-color .3s ease, border-color .3s ease; }
.explore-section .pxs-arrow { width: 50px; height: 50px; }
.explore-section .pxs-pause { width: 34px; height: 34px; }
.explore-section .pxs-arrow .icon { width: 20px; height: 20px; transition: transform .3s ease; }
.explore-section .pxs-arrow:hover, .explore-section .pxs-pause:hover { background: rgba(255,255,255,.12); border-color: #FFFFFF; }
/* Same pattern as the leasing slider: the forward arrow is the filled one. */
.explore-section .pxs-arrow--next { background: var(--leaf-fill); border-color: var(--leaf-fill); color: var(--green-900); }
.explore-section .pxs-arrow--next:hover { background: var(--leaf-ink); border-color: var(--leaf-ink); color: var(--green-900); }
.explore-section .pxs-arrow--next:hover .icon { transform: translateX(3px); }
.explore-section .pxs-arrow--prev:hover .icon { transform: translateX(-3px); }
.explore-section .pxs-arrow:focus-visible, .explore-section .pxs-pause:focus-visible { outline: 2px solid var(--pxs-leaf-ink); outline-offset: 3px; }
.explore-section .pxs-pause[aria-pressed="true"] { background: var(--pxs-leaf); border-color: var(--pxs-leaf); }
.explore-section .is-single .pxs-arrow, .explore-section .is-single .pxs-pause, .explore-section .is-single .pxs-bar { visibility: hidden; }

@keyframes pxsFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes pxsUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes pxsZoom { from { transform: scale(1.04); } to { transform: scale(1); } }

/* ---- desktop: side by side, cross-fade between slides ---- */
@media (min-width: 1024px) {
  .explore-section .pxs-panel { position: relative; height: clamp(600px, 50vw, 740px); }
  .explore-section .pxs-slide { display: grid; grid-template-columns: 66% 34%; position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity .7s ease, visibility 0s linear .7s; }
  /* display must be restated: the mobile rule for .is-active is more specific and would otherwise keep it as a block */
  .explore-section .pxs-slide.is-active { display: grid; opacity: 1; visibility: visible; transition: opacity .7s ease; animation: none; }
  .explore-section .pxs-media { height: 100%; }
  .explore-section .pxs-slide.is-active .pxs-media img { animation: pxsZoom 1.4s ease both; }
  .explore-section .pxs-info { display: flex; flex-direction: column; justify-content: center; padding: clamp(40px, 5vw, 72px) clamp(92px, 7.5vw, 116px) 130px clamp(36px, 4vw, 64px); }
  .explore-section .pxs-slide.is-active .pxs-info-inner { animation: pxsUp .7s ease .1s both; }
  .explore-section .pxs-controls { position: absolute; inset: 0; z-index: 3; padding: 0; background: none; pointer-events: none; }
  .explore-section .pxs-controls > * { pointer-events: auto; }
  .explore-section .pxs-arrow { position: absolute; top: 50%; transform: translateY(-50%); }
  .explore-section .pxs-arrow--prev { left: 32px; }
  .explore-section .pxs-arrow--next { right: 32px; }
  .explore-section .pxs-meta { position: absolute; left: calc(66% + clamp(36px, 4vw, 64px)); right: clamp(92px, 7.5vw, 116px); bottom: 48px; }
}
@media (prefers-reduced-motion: reduce) {
  .explore-section .pxs-slide, .explore-section .pxs-slide.is-active, .explore-section .pxs-slide.is-active .pxs-media img, .explore-section .pxs-slide.is-active .pxs-info-inner { animation: none; transition: none; }
}


/* ==========================================================================
   Spaces to lease — single-project slider on a dark emerald background
   Scoped to .leasing-project-slider; classes use the lps- prefix.
   ========================================================================== */
.leasing-project-slider {
  --lps-leaf: var(--leaf); --lps-leaf-ink: var(--leaf-ink); --lps-leaf-fill: var(--leaf-fill);
  --lps-panel: rgba(9, 35, 25, .72);
  --lps-bg: url("../img/lease-bg-1200.webp");
  position: relative; isolation: isolate; color: #FFFFFF; padding: clamp(44px, 5.5vw, 76px) 0 0;
  background-color: #0B2A1E;
  background-image: linear-gradient(180deg, rgba(4,18,12,.25), rgba(4,18,12,.45)), var(--lps-bg-custom, var(--lps-bg));
  background-size: cover; background-position: center;
}
@media (min-width: 1200px) { .leasing-project-slider { --lps-bg: url("../img/lease-bg-1774.webp"); } }

/* ---- heading ---- */
.leasing-project-slider .lps-head { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 20px 48px; margin-bottom: clamp(26px, 3.2vw, 44px); }
.leasing-project-slider .lps-head-text { flex: 1 1 32rem; max-width: 48rem; }
.leasing-project-slider .lps-eyebrow { display: flex; align-items: center; gap: 18px; margin: 0 0 14px; font-size: .76rem; letter-spacing: .34em; text-transform: uppercase; color: rgba(255,255,255,.86); }
.leasing-project-slider .lps-eyebrow::before { content: ""; width: 44px; height: 1px; background: var(--lps-leaf); }
.leasing-project-slider h2 { margin: 0 0 14px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.1rem, 1.2rem + 3vw, 3.7rem); line-height: 1.05; color: #FFFFFF; }
.leasing-project-slider h2::after { content: none; }
.leasing-project-slider .lps-intro { margin: 0; max-width: 60ch; font-size: clamp(.95rem, .88rem + .3vw, 1.08rem); line-height: 1.6; color: rgba(255,255,255,.82); }
.leasing-project-slider .lps-all { display: inline-flex; align-items: center; gap: 14px; color: #FFFFFF; font-weight: 500; text-decoration: none; }
.leasing-project-slider .lps-all:hover, .leasing-project-slider .lps-all:focus-visible { color: var(--lps-leaf-ink); }
.leasing-project-slider .lps-circle { display: inline-grid; place-items: center; width: 52px; height: 52px; border: 1px solid rgba(255,255,255,.6); border-radius: 50%; transition: transform .3s ease, border-color .3s ease; }
.leasing-project-slider .lps-circle .icon { width: 18px; height: 18px; }
.leasing-project-slider .lps-all:hover .lps-circle { transform: translateX(4px); border-color: var(--lps-leaf-ink); }
.leasing-project-slider .lps-aside { display: none; }
@media (min-width: 1200px) {
  .leasing-project-slider .lps-aside { display: block; align-self: flex-start; margin: 0; padding-left: 26px; border-left: 1px solid var(--leaf-line); font-size: .7rem; line-height: 2; letter-spacing: .3em; text-transform: uppercase; color: rgba(255,255,255,.72); }
}

/* ---- stage, mobile first: photo, then story, then controls ---- */
.leasing-project-slider .lps-stage { position: relative; }
.leasing-project-slider .lps-slide { display: none; }
.leasing-project-slider .lps-slide.is-active { display: block; animation: lpsFade .6s ease-out both; }
.leasing-project-slider .lps-media { position: relative; height: clamp(280px, 56vh, 520px); overflow: hidden; background: #06170F; }
.leasing-project-slider .lps-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s ease-out; }
.leasing-project-slider .lps-media::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(to top, rgba(0,0,0,.35), transparent 45%), linear-gradient(160deg, rgba(0,0,0,.3), transparent 38%); }
.leasing-project-slider .lps-stage:hover .lps-slide.is-active .lps-media img { transform: scale(1.03); }
.leasing-project-slider .lps-tagline { position: absolute; z-index: 1; top: clamp(22px, 4vw, 56px); left: clamp(22px, 4vw, 64px); max-width: 16ch; margin: 0; font-size: clamp(.74rem, .6rem + .4vw, .92rem); line-height: 2; letter-spacing: .36em; text-transform: uppercase; }
.leasing-project-slider .lps-tagline::after { content: ""; display: block; width: 44px; height: 2px; margin-top: 12px; background: var(--lps-leaf); }


.leasing-project-slider .lps-cat { display: flex; align-items: center; gap: 14px; margin: 0 0 16px; font-size: .74rem; letter-spacing: .3em; text-transform: uppercase; color: rgba(255,255,255,.86); }
.leasing-project-slider .lps-cat::before { content: ""; width: 34px; height: 1px; background: var(--lps-leaf); }
.leasing-project-slider .lps-name { margin: 0 0 16px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.9rem, 1.2rem + 2vw, 3rem); line-height: 1.1; color: #FFFFFF; }
.leasing-project-slider .lps-name-pre { display: block; }
.leasing-project-slider .lps-loc { display: flex; align-items: center; gap: 10px; margin: 0 0 10px; font-size: 1.04rem; color: rgba(255,255,255,.92); }
.leasing-project-slider .lps-loc .icon { width: 19px; height: 19px; flex: none; color: var(--lps-leaf); }
.leasing-project-slider .lps-type { margin: 0 0 6px; font-size: 1rem; color: rgba(255,255,255,.86); }
.leasing-project-slider .lps-units { margin: 0 0 20px; padding-bottom: 20px; border-bottom: 1px solid var(--leaf-line); font-size: .9rem; color: var(--lps-leaf-ink); }
.leasing-project-slider .lps-points { display: grid; grid-template-columns: repeat(auto-fit, minmax(88px, 1fr)); margin: 0 0 26px; padding: 0; list-style: none; }
.leasing-project-slider .lps-points li { display: flex; flex-direction: column; gap: 10px; padding: 0 12px; font-size: .68rem; line-height: 1.5; letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.86); }
.leasing-project-slider .lps-points li:first-child { padding-left: 0; }
.leasing-project-slider .lps-points li + li { border-left: 1px solid var(--leaf-line); }
.leasing-project-slider .lps-points .icon { width: 24px; height: 24px; stroke-width: 1.3; color: var(--lps-leaf); }
.leasing-project-slider .lps-cta { display: inline-flex; align-items: center; gap: 14px; padding: 14px 26px; border: 1px solid rgba(255,255,255,.85); border-radius: 2px; color: #FFFFFF; text-decoration: none; transition: background-color .3s ease, color .3s ease; }
.leasing-project-slider .lps-cta .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.leasing-project-slider .lps-cta:hover, .leasing-project-slider .lps-cta:focus-visible { background: #FFFFFF; color: var(--green-800); }
.leasing-project-slider .lps-cta:hover .icon { transform: translateX(4px); }
.leasing-project-slider .lps-cta:focus-visible { outline: 2px solid var(--lps-leaf-ink); outline-offset: 3px; }

/* ---- controls ---- */
.leasing-project-slider .lps-controls { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 0 28px 26px; background: var(--lps-panel); }
.leasing-project-slider .lps-meta { display: flex; align-items: center; gap: 14px; flex: 1; min-width: 0; }
.leasing-project-slider .lps-count { margin: 0; white-space: nowrap; font-size: .9rem; letter-spacing: .12em; font-variant-numeric: tabular-nums; color: rgba(255,255,255,.8); }
.leasing-project-slider .lps-count [data-lease-current] { font-size: 1.3rem; color: #FFFFFF; }
.leasing-project-slider .lps-bar { position: relative; flex: 1; max-width: 200px; height: 1px; background: rgba(255,255,255,.28); }
.leasing-project-slider .lps-bar > span { position: absolute; left: 0; top: -.5px; height: 2px; background: var(--lps-leaf); transition: width .5s ease; }
.leasing-project-slider .lps-arrows { display: flex; gap: 12px; }
.leasing-project-slider .lps-arrow, .leasing-project-slider .lps-pause { display: inline-grid; place-items: center; flex: none; border: 1px solid rgba(255,255,255,.5); border-radius: 50%; background: transparent; color: #FFFFFF; cursor: pointer; transition: background-color .3s ease, border-color .3s ease, color .3s ease; }
.leasing-project-slider .lps-arrow { width: 48px; height: 48px; }
.leasing-project-slider .lps-pause { width: 32px; height: 32px; }
.leasing-project-slider .lps-arrow .icon { width: 19px; height: 19px; transition: transform .3s ease; }
/* The next button is the filled one; its icon is dark green because white on #7CCB63 is too faint (2.1:1). */
.leasing-project-slider .lps-arrow--next { background: var(--lps-leaf-fill); border-color: var(--lps-leaf-fill); color: var(--green-900); }
.leasing-project-slider .lps-arrow:hover, .leasing-project-slider .lps-pause:hover { background: rgba(255,255,255,.12); border-color: #FFFFFF; }
.leasing-project-slider .lps-arrow--next:hover { background: var(--lps-leaf-ink); border-color: var(--lps-leaf-ink); color: var(--green-900); }
.leasing-project-slider .lps-arrow--next:hover .icon { transform: translateX(3px); }
.leasing-project-slider .lps-arrow:not(.lps-arrow--next):hover .icon { transform: translateX(-3px); }
.leasing-project-slider .lps-arrow:focus-visible, .leasing-project-slider .lps-pause:focus-visible, .leasing-project-slider .lps-thumb:focus-visible { outline: 2px solid var(--lps-leaf-ink); outline-offset: 3px; }
.leasing-project-slider .lps-pause[aria-pressed="true"] { background: var(--lps-leaf); border-color: var(--lps-leaf); }
.leasing-project-slider .is-single .lps-arrows, .leasing-project-slider .is-single .lps-bar, .leasing-project-slider .is-single .lps-pause { display: none; }

/* ---- thumbnails ---- */
.leasing-project-slider .lps-thumbs-band { border-top: 1px solid rgba(255,255,255,.1); background: rgba(4,18,12,.35); }
.leasing-project-slider .lps-thumbs-row { display: flex; align-items: center; gap: 24px; padding-block: 18px; }
.leasing-project-slider .lps-thumbs { position: relative; display: flex; gap: 22px; flex: 1; min-width: 0; margin: 0; padding: 0 0 4px; list-style: none; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; }
.leasing-project-slider .lps-thumbs::-webkit-scrollbar { display: none; }
.leasing-project-slider .lps-thumbs li { flex: 0 0 auto; scroll-snap-align: start; }
.leasing-project-slider .lps-thumb { display: flex; align-items: center; gap: 14px; width: 250px; padding: 0 0 10px; border: 0; border-bottom: 2px solid transparent; background: none; color: rgba(255,255,255,.62); text-align: left; cursor: pointer; transition: color .3s ease, border-color .3s ease; }
.leasing-project-slider .lps-thumb-img { flex: none; width: 76px; height: 58px; overflow: hidden; border-radius: 3px; background: #06170F; transition: transform .3s ease; }
.leasing-project-slider .lps-thumb-img img { width: 100%; height: 100%; object-fit: cover; }
.leasing-project-slider .lps-thumb-text { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.leasing-project-slider .lps-thumb-name { font-family: var(--font-display); font-size: 1rem; line-height: 1.2; color: inherit; }
.leasing-project-slider .lps-thumb-loc { font-size: .78rem; color: rgba(255,255,255,.55); }
.leasing-project-slider .lps-thumb:hover { color: #FFFFFF; border-bottom-color: rgba(124,203,99,.5); }
.leasing-project-slider .lps-thumb.is-active { color: #FFFFFF; border-bottom-color: var(--lps-leaf); }
.leasing-project-slider .lps-thumb.is-active .lps-thumb-img { transform: scale(1.06); }
.leasing-project-slider .lps-more { display: none; }
@media (min-width: 1100px) {
  .leasing-project-slider .lps-more { display: inline-flex; align-items: center; gap: 12px; flex: none; font-size: .72rem; letter-spacing: .3em; text-transform: uppercase; color: rgba(255,255,255,.8); text-decoration: none; }
  .leasing-project-slider .lps-more::before { content: ""; width: 60px; height: 1px; background: var(--leaf-line); }
  .leasing-project-slider .lps-more:hover { color: var(--lps-leaf-ink); }
  .leasing-project-slider .lps-more .icon { width: 18px; height: 18px; }
}

@keyframes lpsFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes lpsUp { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: none; } }
@keyframes lpsZoom { from { transform: scale(1.02); } to { transform: scale(1); } }

/* ---- side by side from 1024px: 62/38, then 66/34 ---- */
@media (min-width: 1024px) {
  .leasing-project-slider .lps-stage { height: clamp(580px, 46vw, 680px); }
  .leasing-project-slider .lps-slide { display: grid; grid-template-columns: 62% 38%; position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity .7s ease-out, visibility 0s linear .7s; }
  /* display restated on purpose: the mobile .is-active rule above is more specific */
  .leasing-project-slider .lps-slide.is-active { display: grid; opacity: 1; visibility: visible; transition: opacity .7s ease-out; animation: none; }
  .leasing-project-slider .lps-media { height: 100%; }
  .leasing-project-slider .lps-slide.is-active .lps-media img { animation: lpsZoom 1.2s ease-out both; }
  .leasing-project-slider .lps-info { display: flex; flex-direction: column; justify-content: center; padding: clamp(36px, 4vw, 64px) clamp(32px, 3.6vw, 60px) 120px; }
  .leasing-project-slider .lps-slide.is-active .lps-info-inner { animation: lpsUp .7s ease-out .1s both; }
  .leasing-project-slider .lps-controls { position: absolute; inset: auto 0 0 0; z-index: 3; padding: 0 clamp(32px, 3.6vw, 60px) 36px clamp(28px, 4vw, 64px); background: none; pointer-events: none; }
  .leasing-project-slider .lps-controls > * { pointer-events: auto; }
  .leasing-project-slider .lps-meta { flex: 0 1 38%; }
}
@media (min-width: 1280px) {
  .leasing-project-slider .lps-slide, .leasing-project-slider .lps-slide.is-active { grid-template-columns: 66% 34%; }
  .leasing-project-slider .lps-meta { flex-basis: 40%; }
}
@media (prefers-reduced-motion: reduce) {
  .leasing-project-slider .lps-slide, .leasing-project-slider .lps-slide.is-active, .leasing-project-slider .lps-slide.is-active .lps-media img, .leasing-project-slider .lps-slide.is-active .lps-info-inner { animation: none; transition: none; }
  .leasing-project-slider .lps-stage:hover .lps-slide.is-active .lps-media img { transform: none; }
}


/* ==========================================================================
   Resale and rent — tabbed property carousel
   Two carousels (resale, rent) on the site's rail; the unit pill counts live
   listings. Scoped to .resale-rent-section; classes use the rrs- prefix.
   ========================================================================== */
.resale-rent-section {
  --rrs-bg: #F6F4ED;
  --rrs-card: #FFFFFF;
  --rrs-border: rgba(20, 50, 40, .1);
  position: relative; isolation: isolate; overflow: hidden;
  background: var(--rrs-bg);
  padding-block: clamp(56px, 7vw, 100px);
}
/* Large faint leaf lines, top right and bottom left: depth, not decoration to look at. */
.resale-rent-section::before, .resale-rent-section::after {
  content: ""; position: absolute; z-index: -1; width: min(46vw, 560px); aspect-ratio: 1; pointer-events: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400'%3E%3Cg fill='none' stroke='%23123F32' stroke-width='1.2' stroke-opacity='.07'%3E%3Cpath d='M30 390C70 220 190 80 390 30C340 230 220 350 30 390Z'/%3E%3Cpath d='M30 390C140 270 250 160 390 30'/%3E%3Cpath d='M110 400C160 300 250 225 400 175'/%3E%3Cpath d='M0 300C90 250 150 170 180 60'/%3E%3C/g%3E%3C/svg%3E") no-repeat center / contain;
}
.resale-rent-section::before { top: -60px; right: -80px; }
.resale-rent-section::after { bottom: -120px; left: -140px; transform: rotate(180deg); }

/* ---- heading and tabs ---- */
.resale-rent-section .rrs-head { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 20px 48px; margin-bottom: clamp(26px, 3.2vw, 44px); }
.resale-rent-section .rrs-head-text { flex: 1 1 30rem; max-width: 46rem; }
.resale-rent-section .rrs-eyebrow { display: flex; align-items: center; gap: 18px; margin: 0 0 14px; font-size: .76rem; letter-spacing: .34em; text-transform: uppercase; color: var(--basalt-2); }
.resale-rent-section .rrs-eyebrow::before { content: ""; width: 48px; height: 1px; background: var(--leaf); }
.resale-rent-section h2 { margin: 0 0 16px; padding-bottom: 14px; position: relative; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.2rem, 1.3rem + 3vw, 4rem); line-height: 1.04; color: var(--basalt); }
.resale-rent-section h2::after { content: ""; position: absolute; left: 0; bottom: 0; width: 72px; height: 2px; background: var(--grad-rule); }
.resale-rent-section .rrs-intro { margin: 0; max-width: 56ch; font-size: clamp(.96rem, .88rem + .3vw, 1.1rem); line-height: 1.6; color: var(--text); }
.resale-rent-section .rrs-tabs { display: flex; align-items: center; padding-bottom: 4px; }
.resale-rent-section .rrs-tab { position: relative; margin: 0 20px; padding: 8px 0; border: 0; background: none; font-size: 1.08rem; color: var(--muted); cursor: pointer; transition: color .3s ease; }
.resale-rent-section .rrs-tab:first-child { margin-left: 0; }
.resale-rent-section .rrs-tab + .rrs-tab::before { content: ""; position: absolute; left: -20px; top: 50%; width: 1px; height: 20px; transform: translateY(-50%); background: var(--leaf-line-light); }
.resale-rent-section .rrs-tab:hover { color: var(--green-800); }
.resale-rent-section .rrs-tab[aria-selected="true"] { color: var(--green-800); font-weight: 600; }
.resale-rent-section .rrs-tab[aria-selected="true"]::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--leaf); }
.resale-rent-section .rrs-tab:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.resale-rent-section .rrs-aside { display: none; }
@media (min-width: 1200px) {
  .resale-rent-section .rrs-aside { display: block; align-self: flex-start; margin: 0 0 0 auto; padding-left: 24px; border-left: 1px solid var(--leaf-line-light); font-size: .7rem; line-height: 2; letter-spacing: .3em; text-transform: uppercase; color: var(--muted); }
}

/* ---- carousel ---- */
.resale-rent-section .rrs-slider { container-type: inline-size; }
.resale-rent-section .rrs-rail { position: relative; gap: 24px; padding: 8px 2px 12px; margin: -8px -2px 0; grid-auto-columns: 86%; scrollbar-width: none; cursor: grab; }
.resale-rent-section .rrs-rail::-webkit-scrollbar { display: none; }
.resale-rent-section .rrs-rail.is-dragging { cursor: grabbing; scroll-snap-type: none; user-select: none; }
.resale-rent-section .rrs-rail.is-dragging .rrs-card { pointer-events: none; }
@media (min-width: 640px) { .resale-rent-section .rrs-rail { grid-auto-columns: calc((100% - 24px) / 2.15); } }
@media (min-width: 1024px) { .resale-rent-section .rrs-rail { grid-auto-columns: calc((100% - 48px) / 3.2); } }
@media (min-width: 1360px) { .resale-rent-section .rrs-rail { grid-auto-columns: calc((100% - 72px) / 3.6); } }

/* ---- card ---- */
.resale-rent-section .rrs-card { position: relative; display: flex; flex-direction: column; min-width: 0; background: var(--rrs-card); border: 1px solid var(--rrs-border); border-radius: 14px; overflow: hidden; transition: transform .4s ease, border-color .4s ease, box-shadow .4s ease; }
.resale-rent-section .rrs-card:hover, .resale-rent-section .rrs-card:focus-within { transform: translateY(-4px); border-color: color-mix(in srgb, var(--accent) 30%, transparent); box-shadow: 0 18px 38px -30px rgba(12, 38, 24, .4); }
.resale-rent-section .rrs-card:focus-within { outline: 2px solid var(--accent); outline-offset: 3px; }
.resale-rent-section .rrs-media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--surface-dark); }
.resale-rent-section .rrs-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; -webkit-user-drag: none; }
.resale-rent-section .rrs-card:hover .rrs-media img { transform: scale(1.03); }
.resale-rent-section .rrs-badge { position: absolute; z-index: 1; top: 14px; left: 14px; padding: 6px 11px; border-radius: 4px; background: var(--green-800); font-size: .66rem; font-weight: 500; letter-spacing: .16em; text-transform: uppercase; color: #FFFFFF; }
/* The unit count: the one number every card must show. */
.resale-rent-section .rrs-units { position: absolute; z-index: 1; top: 14px; right: 14px; padding: 6px 12px; border-radius: 8px; background: #FFFFFF; box-shadow: 0 6px 16px -10px rgba(0,0,0,.45); font-size: .86rem; font-weight: 600; color: var(--green-800); }

.resale-rent-section .rrs-body { display: flex; flex: 1; flex-direction: column; padding: 20px 24px 18px; }
.resale-rent-section .rrs-title { margin: 0 0 10px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.3rem, 1.1rem + .55vw, 1.62rem); line-height: 1.16; }
.resale-rent-section .rrs-title-pre { display: block; }
.resale-rent-section .rrs-link { color: var(--basalt); text-decoration: none; transition: color .3s ease; }
/* One link covers the card: one tab stop, one target. */
.resale-rent-section .rrs-link::after { content: ""; position: absolute; inset: 0; z-index: 2; }
.resale-rent-section .rrs-link:focus-visible { outline: none; }
.resale-rent-section .rrs-card:hover .rrs-link { color: var(--accent); }
.resale-rent-section .rrs-loc { display: flex; align-items: center; gap: 8px; margin: 0 0 16px; font-size: .94rem; color: var(--muted); }
.resale-rent-section .rrs-loc .icon { width: 17px; height: 17px; flex: none; color: var(--accent); }
.resale-rent-section .rrs-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 14px; border-top: 1px solid var(--rrs-border); }
.resale-rent-section .rrs-count { font-size: .9rem; font-weight: 500; color: var(--green-800); }
.resale-rent-section .rrs-cta { display: inline-flex; align-items: center; gap: 10px; font-size: .92rem; color: var(--basalt); transition: color .3s ease; }
.resale-rent-section .rrs-circle { display: inline-grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--green-800); color: #FFFFFF; transition: background-color .3s ease, transform .3s ease; }
.resale-rent-section .rrs-circle .icon { width: 16px; height: 16px; }
.resale-rent-section .rrs-card:hover .rrs-cta { color: var(--accent); }
.resale-rent-section .rrs-card:hover .rrs-circle { background: var(--accent); transform: translateX(4px); }

/* ---- counter, progress, arrows ---- */
.resale-rent-section .rrs-nav { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: clamp(18px, 2.2vw, 28px); }
.resale-rent-section .rrs-progress { display: flex; align-items: center; gap: 14px; flex: 1; justify-content: center; margin: 0; font-size: .9rem; letter-spacing: .1em; font-variant-numeric: tabular-nums; color: var(--muted); }
.resale-rent-section .rrs-num [data-rail-current] { color: var(--basalt); font-weight: 500; }
.resale-rent-section .rrs-bar { position: relative; width: clamp(60px, 12vw, 130px); height: 1px; background: var(--rrs-border); }
.resale-rent-section .rrs-bar > span { position: absolute; left: 0; top: -.5px; height: 2px; width: 0; background: var(--leaf); transition: width .3s ease; }
.resale-rent-section .rrs-arrows { display: flex; gap: 10px; margin: 0; }
.resale-rent-section .rrs-arrow { display: inline-grid; place-items: center; width: 50px; height: 50px; border: 1px solid var(--rrs-border); border-radius: 50%; background: #FFFFFF; color: var(--green-800); cursor: pointer; box-shadow: 0 8px 20px -14px rgba(12,38,24,.45); transition: background-color .3s ease, color .3s ease, border-color .3s ease; }
.resale-rent-section .rrs-arrow .icon { width: 19px; height: 19px; }
.resale-rent-section .rrs-arrow:hover:not(:disabled) { background: var(--green-800); border-color: var(--green-800); color: #FFFFFF; }
.resale-rent-section .rrs-arrow:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.resale-rent-section .rrs-arrow:disabled { opacity: .35; cursor: default; }
/* From 1024px the arrows sit on the card edges, level with the middle of the photos. */
@media (min-width: 1024px) {
  .resale-rent-section .rrs-arrow { position: absolute; z-index: 3; top: calc(8px + (100cqw - 48px) / 3.2 * .375); transform: translateY(-50%); }
  .resale-rent-section .rrs-arrow--prev { left: -25px; }
  .resale-rent-section .rrs-arrow--next { right: -25px; }
}
@media (min-width: 1360px) { .resale-rent-section .rrs-arrow { top: calc(8px + (100cqw - 72px) / 3.6 * .375); } }

.resale-rent-section .rrs-all-row { display: flex; justify-content: center; margin-top: clamp(24px, 3vw, 36px); }
.resale-rent-section .rrs-all { display: inline-flex; align-items: center; gap: 12px; padding: 15px 34px; border: 1px solid var(--green-800); border-radius: 2px; color: var(--green-800); font-weight: 500; text-decoration: none; transition: background-color .3s ease, color .3s ease; }
.resale-rent-section .rrs-all .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.resale-rent-section .rrs-all:hover, .resale-rent-section .rrs-all:focus-visible { background: var(--green-800); color: #FFFFFF; }
.resale-rent-section .rrs-all:hover .icon { transform: translateX(4px); }

@media (prefers-reduced-motion: reduce) {
  .resale-rent-section .rrs-card, .resale-rent-section .rrs-media img, .resale-rent-section .rrs-circle { transition: none; }
  .resale-rent-section .rrs-card:hover { transform: none; }
  .resale-rent-section .rrs-card:hover .rrs-media img { transform: none; }
}


/* ==========================================================================
   Why buyers and brands work with us — editorial two-column block
   Intro, CTA and an arched photograph on the left; numbered benefits on the
   right. BEM-style names, all scoped to .trust-partner-section.
   ========================================================================== */
.trust-partner-section {
  --tps-bg: #F4F6F3;
  --tps-line: var(--leaf-line-light);
  position: relative; isolation: isolate; overflow: hidden;
  background: var(--tps-bg);
  padding-block: clamp(56px, 7vw, 104px);
}
.trust-partner-section::before {
  content: ""; position: absolute; z-index: -1; left: -120px; bottom: -80px; width: min(52vw, 620px); aspect-ratio: 1; pointer-events: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400'%3E%3Cg fill='none' stroke='%23123F32' stroke-width='1.2' stroke-opacity='.06'%3E%3Cpath d='M30 390C70 220 190 80 390 30C340 230 220 350 30 390Z'/%3E%3Cpath d='M30 390C140 270 250 160 390 30'/%3E%3Cpath d='M110 400C160 300 250 225 400 175'/%3E%3C/g%3E%3C/svg%3E") no-repeat center / contain; transform: rotate(200deg);
}
.trust-partner-section__grid { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-areas: "intro" "media" "benefits"; gap: 32px; }
@media (min-width: 960px) {
  .trust-partner-section__grid { grid-template-columns: minmax(0, 44fr) minmax(0, 56fr); grid-template-areas: "intro benefits" "media benefits"; gap: 36px clamp(40px, 5vw, 80px); align-items: start; }
}

/* ---- intro ---- */
.trust-partner-section__intro { grid-area: intro; }
.trust-partner-section__eyebrow { display: flex; align-items: center; gap: 18px; margin: 0 0 18px; font-size: .76rem; letter-spacing: .34em; text-transform: uppercase; color: var(--basalt-2); }
.trust-partner-section__eyebrow::before { content: ""; width: 56px; height: 1px; background: var(--leaf); }
.trust-partner-section__heading { margin: 0 0 22px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.3rem, 1.4rem + 2.9vw, 4rem); line-height: 1.02; letter-spacing: -.01em; color: var(--basalt); }
.trust-partner-section__text { max-width: 34rem; margin: 0 0 28px; font-size: clamp(1rem, .95rem + .2vw, 1.1rem); line-height: 1.65; color: var(--text); }
.trust-partner-section__cta { display: inline-flex; align-items: center; gap: 14px; padding: 16px 28px; border: 0; border-radius: 3px; background: var(--green-800); color: #FFFFFF; font: inherit; font-weight: 500; cursor: pointer; transition: background-color .3s ease; }
.trust-partner-section__cta .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.trust-partner-section__cta:hover { background: var(--accent); }
.trust-partner-section__cta:hover .icon { transform: translateX(4px); }
.trust-partner-section__cta:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

/* ---- photograph with an arched corner ---- */
.trust-partner-section__media { grid-area: media; position: relative; isolation: isolate; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 22px; }
.trust-partner-section__media::before { content: ""; position: absolute; z-index: -1; top: -18px; right: calc(clamp(96px, 12vw, 150px) - 18px); left: 22%; bottom: 30%; border-radius: 0 240px 0 0; background: #EDE7D6; }
.trust-partner-section__image { aspect-ratio: 16 / 10; overflow: hidden; border-radius: 0 clamp(120px, 13vw, 220px) 0 0; background: var(--surface-dark); }
.trust-partner-section__image img { width: 100%; height: 100%; object-fit: cover; }
.trust-partner-section__label { position: relative; margin: 0; padding: 4px 0 4px 18px; border-left: 1px solid var(--leaf); font-size: .7rem; line-height: 2.1; letter-spacing: .32em; text-transform: uppercase; color: var(--muted); }
.trust-partner-section__label::after { content: ""; display: block; width: 40px; height: 1px; margin-top: 12px; background: var(--leaf); }
@media (max-width: 599px) {
  .trust-partner-section__media { grid-template-columns: minmax(0, 1fr); }
  .trust-partner-section__media::before { right: -12px; }
  .trust-partner-section__label { justify-self: start; }
}

/* ---- benefits ---- */
.trust-partner-section__benefits { grid-area: benefits; margin: 0; padding: 0; list-style: none; }
@media (min-width: 600px) and (max-width: 959px) { .trust-partner-section__benefits { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; } }
@media (min-width: 960px) { .trust-partner-section__benefits { padding-left: clamp(24px, 3vw, 44px); border-left: 1px solid rgba(18, 63, 50, .08); } }
.trust-partner-section__benefit { display: grid; grid-template-columns: 30px 64px minmax(0, 1fr); gap: 0 18px; align-items: start; padding: 24px 14px; border-top: 1px solid var(--tps-line); border-radius: 4px; transition: background-color .3s ease; }
.trust-partner-section__benefit:first-child { border-top-color: var(--leaf); }
.trust-partner-section__benefit:last-child { border-bottom: 1px solid var(--tps-line); }
@media (min-width: 600px) and (max-width: 959px) { .trust-partner-section__benefit:nth-last-child(2) { border-bottom: 1px solid var(--tps-line); } .trust-partner-section__benefit:nth-child(2) { border-top-color: var(--leaf); } }
@media (min-width: 1100px) { .trust-partner-section__benefit { grid-template-columns: 34px 84px minmax(0, 1fr); gap: 0 24px; padding: 30px 18px; } }
.trust-partner-section__num { padding-top: 6px; font-size: .78rem; letter-spacing: .2em; font-variant-numeric: tabular-nums; color: var(--muted); transition: color .3s ease; }
.trust-partner-section__icon { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; background: #EFEADB; color: var(--green-800); transition: transform .3s ease; }
.trust-partner-section__icon .icon { width: 28px; height: 28px; stroke-width: 1.3; }
@media (min-width: 1100px) { .trust-partner-section__icon { width: 84px; height: 84px; } .trust-partner-section__icon .icon { width: 34px; height: 34px; } }
.trust-partner-section__copy { padding-left: 18px; border-left: 1px solid var(--tps-line); }
.trust-partner-section__copy h3 { margin: 0 0 8px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.25rem, 1.05rem + .6vw, 1.65rem); line-height: 1.2; color: var(--basalt); transition: color .3s ease; }
.trust-partner-section__copy p { margin: 0; font-size: clamp(.95rem, .92rem + .12vw, 1.02rem); line-height: 1.6; color: var(--text); }
.trust-partner-section__benefit:hover { background: rgba(18, 63, 50, .035); }
.trust-partner-section__benefit:hover h3 { color: var(--accent); }
.trust-partner-section__benefit:hover .trust-partner-section__num { color: var(--accent); }
.trust-partner-section__benefit:hover .trust-partner-section__icon { transform: scale(1.05); }
@media (max-width: 599px) {
  .trust-partner-section__benefit { grid-template-columns: 56px minmax(0, 1fr); padding: 20px 6px; }
  .trust-partner-section__num { grid-column: 1 / -1; padding: 0 0 10px; }
  .trust-partner-section__icon { width: 52px; height: 52px; }
  .trust-partner-section__icon .icon { width: 24px; height: 24px; }
}

/* ---- one-time entrance (armed by script only; see site.js) ---- */
.trust-partner-section.is-armed [data-tps-reveal] { opacity: 0; transform: translateY(15px); transition: opacity .7s ease-out, transform .7s ease-out, background-color .3s ease; transition-delay: calc(var(--tps-i, 0) * 90ms), calc(var(--tps-i, 0) * 90ms), 0s; }
.trust-partner-section.is-armed [data-tps-reveal].is-in { opacity: 1; transform: none; }
.trust-partner-section.is-armed .trust-partner-section__media .trust-partner-section__image img { transform: scale(1.02); transition: transform .8s ease-out; }
.trust-partner-section.is-armed .trust-partner-section__media.is-in .trust-partner-section__image img { transform: none; }
@media (prefers-reduced-motion: reduce) {
  .trust-partner-section.is-armed [data-tps-reveal] { opacity: 1; transform: none; transition: none; }
  .trust-partner-section__icon, .trust-partner-section__cta .icon { transition: none; }
  .trust-partner-section__benefit:hover .trust-partner-section__icon { transform: none; }
}


/* ==========================================================================
   Where the projects are — location explorer
   Map (or project photo) left, locations right, one preview; list and pins
   drive each other. BEM-style names, all scoped to .locations-discovery-section.
   ========================================================================== */
.locations-discovery-section { --lx-bg: #F4F6F3; --lx-line: rgba(18, 63, 50, .12); position: relative; isolation: isolate; overflow: hidden; background: var(--lx-bg); padding-block: clamp(56px, 7vw, 100px); }
.locations-discovery-section::before { content: ""; position: absolute; z-index: -1; top: -70px; right: -90px; width: min(44vw, 520px); aspect-ratio: 1; pointer-events: none; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400'%3E%3Cg fill='none' stroke='%23123F32' stroke-width='1.2' stroke-opacity='.06'%3E%3Cpath d='M30 390C70 220 190 80 390 30C340 230 220 350 30 390Z'/%3E%3Cpath d='M30 390C140 270 250 160 390 30'/%3E%3Cpath d='M110 400C160 300 250 225 400 175'/%3E%3C/g%3E%3C/svg%3E") no-repeat center / contain; }

/* ---- header ---- */
.locations-discovery-section .locations-discovery-section__header { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 20px 48px; margin-bottom: clamp(26px, 3vw, 42px); }
.locations-discovery-section .locations-discovery-section__header-text { flex: 1 1 32rem; max-width: 50rem; }
.locations-discovery-section .locations-discovery-section__eyebrow { display: flex; align-items: center; gap: 18px; margin: 0 0 14px; font-size: .76rem; letter-spacing: .34em; text-transform: uppercase; color: var(--basalt-2); }
.locations-discovery-section .locations-discovery-section__eyebrow::before { content: ""; width: 48px; height: 1px; background: var(--leaf); }
.locations-discovery-section .locations-discovery-section__heading { margin: 0 0 16px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.2rem, 1.3rem + 3vw, 3.8rem); line-height: 1.04; color: var(--basalt); }
.locations-discovery-section .locations-discovery-section__intro { margin: 0; max-width: 60ch; font-size: clamp(.96rem, .9rem + .25vw, 1.08rem); line-height: 1.62; color: var(--text); }
.locations-discovery-section .locations-discovery-section__aside { display: none; }
@media (min-width: 1200px) { .locations-discovery-section .locations-discovery-section__aside { display: block; align-self: flex-start; margin: 0 0 0 auto; padding-left: 24px; border-left: 1px solid var(--leaf-line-light); font-size: .7rem; line-height: 2; letter-spacing: .3em; text-transform: uppercase; color: var(--muted); } }

/* ---- body: stacked, then side by side ---- */
.locations-discovery-section .locations-discovery-section__body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 22px; }
@media (min-width: 1024px) { .locations-discovery-section .locations-discovery-section__body { grid-template-columns: minmax(0, 61fr) minmax(0, 39fr); gap: clamp(28px, 3vw, 48px); align-items: start; } }

/* ---- the map: shown whole, never cropped, so every pin stays on its spot ---- */
.locations-discovery-section .locations-discovery-section__map { margin: 0; padding: 8px; border: 2px solid var(--green-800); border-radius: 4px; background: #ECE9DF; box-shadow: 0 30px 60px -44px rgba(12, 38, 24, .5); }
.locations-discovery-section .locations-discovery-section__map-canvas { position: relative; }
.locations-discovery-section .locations-discovery-section__map-canvas > img { display: block; width: 100%; height: auto; background: none; }
.locations-discovery-section .locations-discovery-section__map-label { position: absolute; top: 4%; left: 3%; margin: 0; padding: 8px 12px; border-left: 2px solid var(--leaf); background: rgba(244, 246, 243, .9); font-size: .64rem; line-height: 1.8; letter-spacing: .3em; text-transform: uppercase; color: var(--green-800); pointer-events: none; }
.locations-discovery-section .locations-discovery-section__map-note { margin: 10px 4px 2px; font-size: .82rem; color: var(--muted); }
.locations-discovery-section .locations-discovery-section__marker { position: absolute; z-index: 2; display: flex; align-items: center; gap: 8px; padding: 0; border: 0; background: none; transform: translate(-11px, -50%); cursor: pointer; }
.locations-discovery-section .locations-discovery-section__marker--flip { flex-direction: row-reverse; transform: translate(calc(-100% + 11px), -50%); }
.locations-discovery-section .locations-discovery-section__marker-dot { position: relative; flex: none; width: 22px; height: 22px; border: 3px solid #FFFFFF; border-radius: 50%; background: var(--green-800); box-shadow: 0 4px 10px -4px rgba(0, 0, 0, .5); transition: transform .25s ease, box-shadow .25s ease; }
.locations-discovery-section .locations-discovery-section__marker-name { padding: 3px 8px; border-radius: 3px; background: rgba(255, 255, 255, .94); box-shadow: 0 4px 12px -8px rgba(0, 0, 0, .45); font-size: .78rem; font-weight: 500; white-space: nowrap; color: var(--basalt); transition: background-color .25s ease, color .25s ease; }
.locations-discovery-section .locations-discovery-section__marker:hover .locations-discovery-section__marker-dot, .locations-discovery-section .locations-discovery-section__marker:focus-visible .locations-discovery-section__marker-dot { transform: scale(1.1); }
.locations-discovery-section .locations-discovery-section__marker:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; border-radius: 4px; }
.locations-discovery-section .locations-discovery-section__marker.is-active { z-index: 3; }
.locations-discovery-section .locations-discovery-section__marker.is-active .locations-discovery-section__marker-dot { box-shadow: 0 0 0 5px rgba(124, 203, 99, .55), 0 4px 10px -4px rgba(0, 0, 0, .5); }
/* Only the chosen pin pulses; the rest stay still. */
.locations-discovery-section .locations-discovery-section__marker.is-active .locations-discovery-section__marker-dot::before { content: ""; position: absolute; inset: -3px; border-radius: 50%; animation: lxPulse 2.2s ease-out infinite; }
.locations-discovery-section .locations-discovery-section__marker.is-active .locations-discovery-section__marker-name { background: var(--green-800); color: #FFFFFF; }
@keyframes lxPulse { from { box-shadow: 0 0 0 0 rgba(124, 203, 99, .6); } to { box-shadow: 0 0 0 16px rgba(124, 203, 99, 0); } }
@media (max-width: 599px) { .locations-discovery-section .locations-discovery-section__marker:not(.is-active) .locations-discovery-section__marker-name { display: none; } }

/* ---- built-in map: it has its own frame, title and drawn pins ----
   The site adds no frame or label, and each pin is an invisible round hotspot laid
   exactly over a drawn pin head; hover, focus and the chosen state show a ring. */
.locations-discovery-section .locations-discovery-section__map--baked { padding: 0; border: 0; background: none; }
.locations-discovery-section .locations-discovery-section__map--baked .locations-discovery-section__map-canvas > img { border-radius: 4px; }
.locations-discovery-section .locations-discovery-section__marker--hotspot { width: max(34px, 3.6%); aspect-ratio: 1; border-radius: 50%; transform: translate(-50%, -50%); }
.locations-discovery-section .locations-discovery-section__marker--hotspot .locations-discovery-section__marker-dot, .locations-discovery-section .locations-discovery-section__marker--hotspot .locations-discovery-section__marker-name { display: none; }
.locations-discovery-section .locations-discovery-section__marker--hotspot::after { content: ""; position: absolute; inset: 0; border: 2px solid transparent; border-radius: 50%; transition: border-color .25s ease, box-shadow .25s ease, transform .25s ease; }
.locations-discovery-section .locations-discovery-section__marker--hotspot:hover::after, .locations-discovery-section .locations-discovery-section__marker--hotspot:focus-visible::after { border-color: rgba(124, 203, 99, .75); transform: scale(1.08); }
.locations-discovery-section .locations-discovery-section__marker--hotspot.is-active::after { border-color: var(--leaf); box-shadow: 0 0 0 4px rgba(124, 203, 99, .35); }
.locations-discovery-section .locations-discovery-section__marker--hotspot.is-active::before { content: ""; position: absolute; inset: 0; border-radius: 50%; animation: lxPulse 2.2s ease-out infinite; }
.locations-discovery-section .locations-discovery-section__marker--hotspot:focus-visible { outline: none; }

/* ---- no map uploaded: the chosen location's project photo ---- */
.locations-discovery-section .locations-discovery-section__photo { position: relative; height: clamp(300px, 40vw, 560px); overflow: hidden; border-radius: 4px; background: var(--surface-dark); box-shadow: 0 30px 60px -44px rgba(12, 38, 24, .5); }
.locations-discovery-section .locations-discovery-section__photo:not([hidden]) { animation: lxFade .5s ease-out both; }
.locations-discovery-section .locations-discovery-section__photo img { width: 100%; height: 100%; object-fit: cover; }
.locations-discovery-section .locations-discovery-section__photo-empty { display: block; width: 100%; height: 100%; background: var(--grad-dark); }
.locations-discovery-section .locations-discovery-section__photo-caption { position: absolute; left: 0; bottom: 0; display: flex; align-items: baseline; gap: 14px; margin: 0; padding: 14px 22px; background: var(--green-800); font-size: .88rem; color: rgba(255, 255, 255, .86); }
.locations-discovery-section .locations-discovery-section__photo-caption span { font-family: var(--font-display); font-size: 1.3rem; color: #FFFFFF; }
@keyframes lxFade { from { opacity: 0; } to { opacity: 1; } }

/* ---- directory ---- */
.locations-discovery-section .locations-discovery-section__directory { padding: 16px 16px 6px; border: 1px solid var(--lx-line); border-radius: 6px; background: #FFFFFF; }
.locations-discovery-section .locations-discovery-section__list-head { display: flex; justify-content: space-between; margin: 0 0 4px; padding: 0 10px 12px; border-bottom: 1px solid var(--lx-line); font-size: .66rem; letter-spacing: .3em; text-transform: uppercase; color: var(--muted); }
.locations-discovery-section .locations-discovery-section__list { position: relative; margin: 0; padding: 0; list-style: none; }
.locations-discovery-section .locations-discovery-section__loc-h { margin: 0; font: inherit; }
.locations-discovery-section .locations-discovery-section__location { position: relative; display: grid; grid-template-columns: 34px minmax(0, 1fr) auto 18px; align-items: center; gap: 12px; width: 100%; padding: 13px 10px; border: 0; border-bottom: 1px solid var(--lx-line); background: none; text-align: left; cursor: pointer; transition: background-color .25s ease; }
.locations-discovery-section .locations-discovery-section__list li:last-child .locations-discovery-section__location { border-bottom: 0; }
.locations-discovery-section .locations-discovery-section__num { font-family: var(--font-display); font-size: 1.05rem; color: var(--muted); transition: color .25s ease; }
.locations-discovery-section .locations-discovery-section__name { font-family: var(--font-display); font-size: clamp(1.02rem, .95rem + .3vw, 1.18rem); line-height: 1.25; color: var(--basalt); transition: color .25s ease; }
.locations-discovery-section .locations-discovery-section__count { font-size: .8rem; white-space: nowrap; color: var(--muted); }
.locations-discovery-section .locations-discovery-section__chev { display: grid; color: var(--green-800); opacity: .5; transition: transform .25s ease, opacity .25s ease; }
.locations-discovery-section .locations-discovery-section__chev .icon { width: 16px; height: 16px; }
.locations-discovery-section .locations-discovery-section__location:hover { background: rgba(18, 63, 50, .035); }
.locations-discovery-section .locations-discovery-section__location:hover .locations-discovery-section__chev { opacity: 1; transform: translateX(3px); }
.locations-discovery-section .locations-discovery-section__location:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.locations-discovery-section .locations-discovery-section__location.is-active { background: rgba(18, 63, 50, .06); }
.locations-discovery-section .locations-discovery-section__location.is-active::before { content: ""; position: absolute; left: 0; top: 8px; bottom: 8px; width: 2px; background: var(--leaf); }
.locations-discovery-section .locations-discovery-section__location.is-active .locations-discovery-section__name { color: var(--green-800); }
.locations-discovery-section .locations-discovery-section__location.is-active .locations-discovery-section__num { color: var(--accent); }
.locations-discovery-section .locations-discovery-section__location.is-active .locations-discovery-section__count { font-weight: 600; color: var(--green-800); }
.locations-discovery-section .locations-discovery-section__location.is-active .locations-discovery-section__chev { opacity: 1; }

/* ---- "Show all" toggle: folds the list after the first eight rows ---- */
@media (min-width: 768px) { .locations-discovery-section .locations-discovery-section__list.is-collapsed .locations-discovery-section__extra { display: none; } }
.locations-discovery-section .locations-discovery-section__more { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; margin: 0; padding: 13px 10px 10px; border: 0; border-top: 1px solid var(--lx-line); background: none; font-size: .7rem; letter-spacing: .26em; text-transform: uppercase; color: var(--green-800); cursor: pointer; transition: background-color .25s ease; }
.locations-discovery-section .locations-discovery-section__list.is-collapsed + .locations-discovery-section__more { border-top: 0; }
.locations-discovery-section .locations-discovery-section__more .icon { width: 16px; height: 16px; transition: transform .25s ease; }
.locations-discovery-section .locations-discovery-section__more[aria-expanded="true"] .icon { transform: rotate(180deg); }
.locations-discovery-section .locations-discovery-section__more:hover { background: rgba(18, 63, 50, .035); }
.locations-discovery-section .locations-discovery-section__more:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
@media (max-width: 767px) { .locations-discovery-section .locations-discovery-section__more { display: none !important; } }

/* ---- preview ---- */
.locations-discovery-section .locations-discovery-section__preview { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; margin-top: 16px; padding: 16px; border: 1px solid var(--lx-line); border-radius: 6px; background: #FFFFFF; }
.locations-discovery-section .locations-discovery-section__preview:not([hidden]) { animation: lxFade .45s ease-out both; }
.locations-discovery-section .locations-discovery-section__preview--img { grid-template-columns: minmax(0, 42%) minmax(0, 1fr); align-items: center; }
.locations-discovery-section .locations-discovery-section__preview-img { aspect-ratio: 4 / 3; overflow: hidden; border-radius: 3px; background: var(--surface-dark); }
.locations-discovery-section .locations-discovery-section__preview-img img { width: 100%; height: 100%; object-fit: cover; }
.locations-discovery-section .locations-discovery-section__preview-kicker { margin: 0 0 4px; font-size: .68rem; letter-spacing: .28em; text-transform: uppercase; color: var(--muted); }
.locations-discovery-section .locations-discovery-section__preview-count { margin: 0 0 8px; font-family: var(--font-display); font-size: clamp(1.5rem, 1.2rem + .8vw, 1.9rem); line-height: 1.1; color: var(--basalt); }
.locations-discovery-section .locations-discovery-section__preview-text { margin: 0 0 12px; font-size: .94rem; line-height: 1.55; color: var(--text); }
.locations-discovery-section .locations-discovery-section__preview-link { display: inline-flex; align-items: center; gap: 10px; font-weight: 500; color: var(--green-800); text-decoration: none; }
.locations-discovery-section .locations-discovery-section__preview-link .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.locations-discovery-section .locations-discovery-section__preview-link:hover { color: var(--accent); }
.locations-discovery-section .locations-discovery-section__preview-link:hover .icon { transform: translateX(4px); }
@media (max-width: 479px) { .locations-discovery-section .locations-discovery-section__preview--img { grid-template-columns: minmax(0, 1fr); } }

/* ---- actions and summary ---- */
.locations-discovery-section .locations-discovery-section__ctas { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 18px; }
.locations-discovery-section .locations-discovery-section__cta { display: inline-flex; align-items: center; gap: 12px; padding: 15px 26px; border: 1px solid var(--green-800); border-radius: 2px; background: var(--green-800); color: #FFFFFF; font: inherit; font-weight: 500; text-decoration: none; cursor: pointer; transition: background-color .3s ease, color .3s ease, border-color .3s ease; }
.locations-discovery-section .locations-discovery-section__cta .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.locations-discovery-section .locations-discovery-section__cta:hover { background: var(--accent); border-color: var(--accent); }
.locations-discovery-section .locations-discovery-section__cta:hover .icon { transform: translateX(4px); }
.locations-discovery-section .locations-discovery-section__cta--ghost { background: transparent; color: var(--green-800); }
.locations-discovery-section .locations-discovery-section__cta--ghost:hover { background: var(--green-800); border-color: var(--green-800); color: #FFFFFF; }
.locations-discovery-section .locations-discovery-section__cta:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.locations-discovery-section .locations-discovery-section__stats { display: flex; align-items: center; gap: 14px; margin: clamp(22px, 2.6vw, 34px) 0 0; font-size: .76rem; letter-spacing: .24em; text-transform: uppercase; color: var(--muted); }
.locations-discovery-section .locations-discovery-section__stats::before { content: ""; width: 40px; height: 1px; background: var(--leaf); }

/* ---- phones and small tablets: the list becomes a sideways strip of chips ---- */
@media (max-width: 767px) {
  .locations-discovery-section .locations-discovery-section__directory { padding: 0; border: 0; background: none; }
  .locations-discovery-section .locations-discovery-section__list-head { display: none; }
  .locations-discovery-section .locations-discovery-section__list { display: flex; gap: 10px; overflow-x: auto; padding: 2px 2px 8px; scroll-snap-type: x proximity; scrollbar-width: none; }
  .locations-discovery-section .locations-discovery-section__list::-webkit-scrollbar { display: none; }
  .locations-discovery-section .locations-discovery-section__list li { flex: none; scroll-snap-align: start; }
  .locations-discovery-section .locations-discovery-section__location { display: flex; gap: 8px; width: auto; padding: 10px 16px; border: 1px solid rgba(18, 63, 50, .2); border-radius: 999px; background: #FFFFFF; white-space: nowrap; }
  .locations-discovery-section .locations-discovery-section__list li:last-child .locations-discovery-section__location { border-bottom: 1px solid rgba(18, 63, 50, .2); }
  .locations-discovery-section .locations-discovery-section__num, .locations-discovery-section .locations-discovery-section__chev { display: none; }
  .locations-discovery-section .locations-discovery-section__name { font-size: .98rem; }
  .locations-discovery-section .locations-discovery-section__count { font-size: .74rem; }
  .locations-discovery-section .locations-discovery-section__location.is-active { background: var(--green-800); border-color: var(--green-800); }
  .locations-discovery-section .locations-discovery-section__location.is-active::before { content: none; }
  .locations-discovery-section .locations-discovery-section__location.is-active .locations-discovery-section__name, .locations-discovery-section .locations-discovery-section__location.is-active .locations-discovery-section__count { color: #FFFFFF; }
}
@media (prefers-reduced-motion: reduce) {
  .locations-discovery-section .locations-discovery-section__marker.is-active .locations-discovery-section__marker-dot::before, .locations-discovery-section .locations-discovery-section__marker--hotspot.is-active::before { animation: none; }
  .locations-discovery-section .locations-discovery-section__photo:not([hidden]), .locations-discovery-section .locations-discovery-section__preview:not([hidden]) { animation: none; }
  .locations-discovery-section .locations-discovery-section__marker-dot, .locations-discovery-section .locations-discovery-section__chev, .locations-discovery-section .locations-discovery-section__cta .icon, .locations-discovery-section .locations-discovery-section__preview-link .icon { transition: none; }
}


/* ---- desktop balance: facts under the map, buttons on one line, shadow on the map only ---- */
.locations-discovery-section .locations-discovery-section__map--baked { box-shadow: none; }
.locations-discovery-section .locations-discovery-section__map--baked .locations-discovery-section__map-canvas { border-radius: 4px; box-shadow: 0 30px 60px -44px rgba(12, 38, 24, .5); }
.locations-discovery-section .locations-discovery-section__map-note { margin: 10px 2px 0; }
.locations-discovery-section .locations-discovery-section__facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: clamp(22px, 2.4vw, 34px) auto 0; padding: 0; max-width: 620px; list-style: none; }
.locations-discovery-section .locations-discovery-section__facts li { display: flex; align-items: center; gap: 12px; padding: 4px 18px; }
.locations-discovery-section .locations-discovery-section__facts li + li { border-left: 1px solid var(--leaf-line-light); }
.locations-discovery-section .locations-discovery-section__facts .icon { flex: none; width: 30px; height: 30px; stroke-width: 1.2; color: var(--green-800); }
.locations-discovery-section .locations-discovery-section__facts span { display: flex; flex-direction: column; font-size: .8rem; line-height: 1.35; color: var(--muted); }
.locations-discovery-section .locations-discovery-section__facts strong { font-weight: 500; font-size: .86rem; color: var(--basalt); }
@media (max-width: 599px) {
  .locations-discovery-section .locations-discovery-section__facts { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .locations-discovery-section .locations-discovery-section__facts li { padding: 0; }
  .locations-discovery-section .locations-discovery-section__facts li + li { border-left: 0; }
}
/* The two buttons share one line whenever the column is wide enough. */
.locations-discovery-section .locations-discovery-section__ctas { flex-wrap: wrap; gap: 12px; }
.locations-discovery-section .locations-discovery-section__cta { flex: 1 1 auto; justify-content: center; gap: 10px; padding: 15px 16px; font-size: .95rem; white-space: nowrap; }
/* Slightly tighter rows, so the list does not run far below the map. */
@media (min-width: 768px) { .locations-discovery-section .locations-discovery-section__location { padding-block: 11px; } }
/* The map travels with the page while the longer right-hand column scrolls past,
   so there is never an empty patch beside it. Only on screens tall enough to show
   the whole map. overflow: clip (not hidden) keeps the section from becoming a
   scroll box, which would silently switch sticky off; older browsers fall back to
   hidden and simply do not stick. */
.locations-discovery-section { overflow: hidden; overflow: clip; }


/* ---- two rows on desktop: [map | list + preview] then [facts | buttons] ----
   The facts and the buttons sit in the same grid row, so they line up exactly.
   On narrower screens: map, facts, list and preview, buttons. */
.locations-discovery-section .locations-discovery-section__body { grid-template-areas: "visual" "facts" "panel" "ctas"; }
.locations-discovery-section .locations-discovery-section__visual { grid-area: visual; }
.locations-discovery-section .locations-discovery-section__panel { grid-area: panel; }
.locations-discovery-section .locations-discovery-section__facts { grid-area: facts; margin: 0 auto; max-width: 640px; width: 100%; }
.locations-discovery-section .locations-discovery-section__ctas { grid-area: ctas; margin-top: 0; }
/* Icons sit at the top of each item, so they stay level however the text wraps. */
.locations-discovery-section .locations-discovery-section__facts li { justify-content: center; align-items: flex-start; }
.locations-discovery-section .locations-discovery-section__facts li .icon { margin-top: 1px; }
@media (min-width: 1024px) {
  .locations-discovery-section .locations-discovery-section__body { grid-template-areas: "visual panel" "facts ctas"; row-gap: clamp(22px, 2.4vw, 32px); }
  .locations-discovery-section .locations-discovery-section__facts { align-self: center; max-width: none; }
  .locations-discovery-section .locations-discovery-section__ctas { align-self: center; }
}


/* ==========================================================================
   Developer figures — "Building a stronger tomorrow"
   Four equal columns on a shared subgrid (icon / figure / description), so
   wrapping never moves a neighbour. Content sits in the site's .wrap, like the
   sections above and below. Scoped to .signature-impact-section.
   ========================================================================== */
.signature-impact-section {
  --sis-bg: #F4F6F3;
  position: relative; isolation: isolate; overflow: hidden;
  padding-block: clamp(56px, 6.5vw, 88px);
  /* line-art in the corners, a few percent opaque: decoration only */
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 300'%3E%3Cg fill='none' stroke='%23123F32' stroke-width='1.2' stroke-opacity='.07'%3E%3Cpath d='M16 300V116a84 84 0 0 1 168 0v184'/%3E%3Cpath d='M38 300V122a62 62 0 0 1 124 0v178'/%3E%3Cpath d='M60 300V128a40 40 0 0 1 80 0v172'/%3E%3Cpath d='M100 300V40'/%3E%3C/g%3E%3C/svg%3E") left -30px bottom -10px / clamp(150px, 16vw, 230px) auto no-repeat,
              url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400'%3E%3Cg fill='none' stroke='%23123F32' stroke-width='1.2' stroke-opacity='.05'%3E%3Cpath d='M30 390C70 220 190 80 390 30C340 230 220 350 30 390Z'/%3E%3Cpath d='M30 390C140 270 250 160 390 30'/%3E%3Cpath d='M110 400C160 300 250 225 400 175'/%3E%3C/g%3E%3C/svg%3E") right -60px bottom -80px / clamp(240px, 28vw, 400px) auto no-repeat,
              var(--sis-bg);
}
/* a hairline where the section starts */
.signature-impact-section::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: var(--leaf); opacity: .35; pointer-events: none; }
/* a wide, faint curve along the bottom edge; absolutely placed, so it adds no height */
.signature-impact-section::after { content: ""; position: absolute; z-index: -1; left: 50%; bottom: 0; width: 130%; height: 120px; transform: translate(-50%, 62%); border-top: 1px solid rgba(26, 65, 38, .1); border-radius: 50%; pointer-events: none; }

/* ---- header ---- */
.signature-impact-section .signature-impact-section__header { max-width: 1000px; margin: 0 auto clamp(32px, 3.4vw, 44px); text-align: center; }
.signature-impact-section .signature-impact-section__eyebrow { display: inline-flex; align-items: center; gap: 16px; margin: 0 0 14px; font-size: .76rem; letter-spacing: .3em; text-transform: uppercase; color: var(--basalt-2); }
.signature-impact-section .signature-impact-section__eyebrow::before, .signature-impact-section .signature-impact-section__eyebrow::after { content: ""; width: 48px; height: 1px; background: var(--leaf); }
.signature-impact-section .signature-impact-section__title { margin: 0 0 14px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2rem, 1.3rem + 2.2vw, 3.25rem); line-height: 1.1; color: var(--basalt); }
.signature-impact-section .signature-impact-section__subtitle { margin: 0 auto; max-width: 1000px; font-size: clamp(.8rem, .76rem + .2vw, .92rem); line-height: 1.7; letter-spacing: .1em; text-transform: uppercase; color: #4D5E58; }

/* ---- the four figures ---- */
.signature-impact-section .signature-impact-section__stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; margin: 0; padding: 0; list-style: none; }
.signature-impact-section .signature-impact-section__stat { position: relative; display: grid; grid-row: span 3; grid-template-rows: subgrid; justify-items: center; text-align: center; padding: 4px clamp(12px, 2vw, 28px); }
.signature-impact-section .signature-impact-section__icon { display: grid; place-items: center; width: 64px; height: 64px; margin-bottom: 18px; color: var(--green-800); }
.signature-impact-section .signature-impact-section__icon .icon { width: 52px; height: 52px; stroke-width: 1.3; }
.signature-impact-section .signature-impact-section__number { align-self: center; margin: 0 0 8px; font-family: var(--font-text); font-weight: 500; font-size: clamp(1.5rem, 1.1rem + 1vw, 2.05rem); line-height: 1.2; letter-spacing: .01em; text-transform: uppercase; font-variant-numeric: tabular-nums; color: var(--green-800); }
.signature-impact-section .signature-impact-section__label { align-self: start; margin: 0; max-width: 26ch; font-size: clamp(.78rem, .74rem + .15vw, .88rem); line-height: 1.45; letter-spacing: .12em; text-transform: uppercase; color: #4D5E58; }
/* Browsers without subgrid: reserve the same room in every column instead. */
@supports not (grid-template-rows: subgrid) {
  .signature-impact-section .signature-impact-section__stat { display: flex; flex-direction: column; align-items: center; }
  .signature-impact-section .signature-impact-section__number { display: flex; align-items: center; justify-content: center; min-height: 2.5em; }
  .signature-impact-section .signature-impact-section__label { min-height: 2.9em; }
}
/* Dividers: short and centred on the figures, never full height. */
.signature-impact-section .signature-impact-section__stat + .signature-impact-section__stat::before { content: ""; position: absolute; left: 0; top: 50%; width: 1px; height: 104px; transform: translateY(-50%); background: var(--leaf-line-light); }

.signature-impact-section .signature-impact-section__source { margin: clamp(26px, 3vw, 36px) 0 0; text-align: center; font-size: .78rem; color: var(--muted); }

/* ---- tablet and phone: 2 x 2 with light dividers ---- */
@media (max-width: 1023px) {
  .signature-impact-section .signature-impact-section__stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .signature-impact-section .signature-impact-section__stat:nth-child(odd)::before { content: none; }
  .signature-impact-section .signature-impact-section__stat:nth-child(-n+2) { padding-bottom: 24px; }
  .signature-impact-section .signature-impact-section__stat:nth-child(n+3) { padding-top: 24px; border-top: 1px solid var(--leaf-line-light); }
  .signature-impact-section .signature-impact-section__stat + .signature-impact-section__stat::before { height: 76%; }
}
@media (max-width: 479px) {
  .signature-impact-section .signature-impact-section__icon { width: 52px; height: 52px; margin-bottom: 12px; }
  .signature-impact-section .signature-impact-section__icon .icon { width: 40px; height: 40px; }
  .signature-impact-section .signature-impact-section__stat { padding-inline: 10px; }
  .signature-impact-section .signature-impact-section__label { letter-spacing: .08em; }
}

/* ---- entrance, once (armed by script only; see site.js) ---- */
.signature-impact-section.is-armed .signature-impact-section__icon, .signature-impact-section.is-armed .signature-impact-section__number { opacity: 0; transform: translateY(10px); transition: opacity .6s ease-out, transform .6s ease-out; transition-delay: calc(var(--sis-i, 0) * 120ms); }
.signature-impact-section.is-armed .signature-impact-section__number { transition-delay: calc(var(--sis-i, 0) * 120ms + 80ms); }
.signature-impact-section.is-armed.is-in .signature-impact-section__icon, .signature-impact-section.is-armed.is-in .signature-impact-section__number { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .signature-impact-section.is-armed .signature-impact-section__icon, .signature-impact-section.is-armed .signature-impact-section__number { opacity: 1; transform: none; transition: none; }
}


/* ==========================================================================
   About Signature Global — photograph, the story, the three kinds of work
   Three columns on a wide screen, two without a photograph, stacked on a phone.
   Scoped to .about-developer-section.
   ========================================================================== */
.about-developer-section { background: #F4F6F3; padding-block: clamp(52px, 6.5vw, 92px); }
.about-developer-section .about-developer-section__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(26px, 3vw, 44px); align-items: start; }
@media (min-width: 860px) {
  .about-developer-section .about-developer-section__grid { grid-template-columns: minmax(0, 40fr) minmax(0, 60fr); align-items: stretch; }
  .about-developer-section .about-developer-section__pillars { grid-column: 1 / -1; }
  /* The photograph fills its row, so the columns finish on the same line. */
  .about-developer-section .about-developer-section__media, .about-developer-section .about-developer-section__photo { height: 100%; }
  .about-developer-section .about-developer-section__photo img { height: 100%; min-height: 340px; aspect-ratio: auto; }
  .about-developer-section.about-developer-section--noimage .about-developer-section__grid { grid-template-columns: minmax(0, 1fr); }
}
@media (min-width: 1200px) {
  .about-developer-section .about-developer-section__grid { grid-template-columns: minmax(0, 30fr) minmax(0, 44fr) minmax(0, 26fr); gap: clamp(30px, 3.2vw, 52px); }
  /* The three cards spread over the full height, so this column ends on the line too. */
  .about-developer-section .about-developer-section__pillars { grid-column: auto; height: 100%; align-content: space-between; }
  .about-developer-section.about-developer-section--noimage .about-developer-section__grid { grid-template-columns: minmax(0, 62fr) minmax(0, 38fr); }
}

/* ---- photograph with its green strip ---- */
.about-developer-section .about-developer-section__media { display: grid; grid-template-columns: clamp(74px, 8vw, 124px) minmax(0, 1fr); margin: 0; }
.about-developer-section .about-developer-section__side { display: grid; align-content: center; margin: 0; padding: 22px clamp(12px, 1.4vw, 20px); background: var(--green-800); color: rgba(255, 255, 255, .92); font-size: .68rem; line-height: 2.2; letter-spacing: .24em; text-transform: uppercase; }
.about-developer-section .about-developer-section__side::after { content: ""; display: block; width: 34px; height: 1px; margin-top: 16px; background: var(--leaf); }
.about-developer-section .about-developer-section__photo { overflow: hidden; border-radius: 0 clamp(60px, 7vw, 120px) 0 0; background: var(--surface-dark); }
.about-developer-section .about-developer-section__photo img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 3 / 4; }

/* ---- the story ---- */
.about-developer-section .about-developer-section__eyebrow { display: flex; align-items: center; gap: 16px; margin: 0 0 14px; font-size: .74rem; letter-spacing: .32em; text-transform: uppercase; color: var(--basalt-2); }
.about-developer-section .about-developer-section__eyebrow::before { content: ""; width: 44px; height: 1px; background: var(--leaf); }
.about-developer-section .about-developer-section__title { margin: 0 0 18px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.9rem, 1.2rem + 2vw, 3rem); line-height: 1.08; color: var(--basalt); }
.about-developer-section .about-developer-section__lead { margin: 0 0 14px; font-size: clamp(1rem, .95rem + .2vw, 1.08rem); line-height: 1.62; color: var(--text); }
.about-developer-section .about-developer-section__text { margin: 0 0 14px; font-size: .98rem; line-height: 1.62; color: var(--text); }
.about-developer-section .about-developer-section__actions { display: flex; flex-wrap: wrap; gap: 14px; margin: 22px 0 12px; }
.about-developer-section .about-developer-section__cta { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 15px 24px; border: 1px solid var(--green-800); border-radius: 3px; background: var(--green-800); color: #FFFFFF; font: inherit; font-weight: 500; text-decoration: none; cursor: pointer; transition: background-color .3s ease, color .3s ease, border-color .3s ease; }
.about-developer-section .about-developer-section__cta .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.about-developer-section .about-developer-section__cta:hover { background: var(--accent); border-color: var(--accent); }
.about-developer-section .about-developer-section__cta:hover .icon { transform: translateX(4px); }
.about-developer-section .about-developer-section__cta--ghost { background: transparent; color: var(--green-800); }
.about-developer-section .about-developer-section__cta--ghost:hover { background: var(--green-800); border-color: var(--green-800); color: #FFFFFF; }
.about-developer-section .about-developer-section__cta:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.about-developer-section .about-developer-section__note { margin: 0; font-size: .86rem; color: var(--muted); }

/* ---- the three kinds of development ---- */
.about-developer-section .about-developer-section__pillars { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.about-developer-section .about-developer-section__pillar { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 16px; align-items: start; padding: 20px 0; }
.about-developer-section .about-developer-section__pillar + .about-developer-section__pillar { border-top: 1px solid var(--leaf-line-light); }
.about-developer-section .about-developer-section__pillar-icon { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; background: #EFEADB; color: var(--green-800); }
.about-developer-section .about-developer-section__pillar-icon .icon { width: 28px; height: 28px; stroke-width: 1.3; }
.about-developer-section .about-developer-section__pillar-title { margin: 0 0 6px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.2rem, 1.05rem + .4vw, 1.4rem); line-height: 1.2; color: var(--basalt); }
.about-developer-section .about-developer-section__pillar-title a { color: inherit; text-decoration: none; }
.about-developer-section .about-developer-section__pillar-title a:hover { color: var(--accent); }
.about-developer-section .about-developer-section__pillar-text { margin: 0; font-size: .92rem; line-height: 1.55; color: var(--text); }
/* Between 860 and 1199 the three sit side by side under the story. */
@media (min-width: 860px) and (max-width: 1199px) {
  .about-developer-section .about-developer-section__pillars { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 clamp(18px, 2vw, 32px); padding-top: 8px; border-top: 1px solid var(--leaf-line-light); }
  .about-developer-section .about-developer-section__pillar { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .about-developer-section .about-developer-section__pillar + .about-developer-section__pillar { border-top: 0; }
}
@media (max-width: 479px) {
  .about-developer-section .about-developer-section__media { grid-template-columns: minmax(0, 1fr); }
  .about-developer-section .about-developer-section__side { padding: 16px 20px; }
  .about-developer-section .about-developer-section__side::after { margin-top: 10px; }
  .about-developer-section .about-developer-section__photo { border-radius: 0; }
  .about-developer-section .about-developer-section__photo img { aspect-ratio: 4 / 3; }
  .about-developer-section .about-developer-section__actions .about-developer-section__cta { flex: 1 1 100%; }
}
@media (prefers-reduced-motion: reduce) { .about-developer-section .about-developer-section__cta, .about-developer-section .about-developer-section__cta .icon { transition: none; } }


/* ==========================================================================
   About this advisory — the firm's own introduction
   Photograph left with a green badge and a caption, the story right with its own
   figures. Same editorial language as the developer block. Scoped to .about-advisory-section.
   ========================================================================== */
.about-advisory-section { position: relative; isolation: isolate; overflow: hidden; background: #F4F6F3; padding-block: clamp(52px, 6.5vw, 92px); }
.about-advisory-section::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: var(--leaf); opacity: .3; pointer-events: none; }
.about-advisory-section .about-advisory-section__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(26px, 3vw, 46px); align-items: center; }
@media (min-width: 1024px) {
  .about-advisory-section .about-advisory-section__grid { grid-template-columns: minmax(0, 43fr) minmax(0, 57fr); align-items: stretch; }
  /* The photograph and the content finish on the same line. */
  .about-advisory-section .about-advisory-section__media, .about-advisory-section .about-advisory-section__photo { height: 100%; }
  .about-advisory-section .about-advisory-section__photo img { height: 100%; min-height: 440px; aspect-ratio: auto; }
  .about-advisory-section .about-advisory-section__body { align-self: center; }
}
@media (min-width: 1320px) { .about-advisory-section .about-advisory-section__grid { grid-template-columns: minmax(0, 50fr) minmax(0, 44fr) auto; column-gap: clamp(32px, 3.4vw, 60px); } }

/* ---- photograph ---- */
.about-advisory-section .about-advisory-section__media { position: relative; margin: 0; }
.about-advisory-section .about-advisory-section__photo { overflow: hidden; border-radius: 0 0 0 clamp(55px, 6vw, 80px); background: var(--surface-dark); }
.about-advisory-section .about-advisory-section__photo img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 4.8; }
.about-advisory-section .about-advisory-section__badge { position: absolute; top: 0; left: 0; margin: 0; padding: clamp(16px, 1.8vw, 24px) clamp(18px, 2vw, 28px); background: var(--green-800); color: rgba(255, 255, 255, .94); font-size: .72rem; line-height: 1.9; letter-spacing: .22em; text-transform: uppercase; }
.about-advisory-section .about-advisory-section__badge::after { content: ""; display: block; width: 44px; height: 1px; margin-top: 14px; background: var(--leaf); }
.about-advisory-section .about-advisory-section__media::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 40%; border-radius: 0 0 0 clamp(55px, 6vw, 80px); background: linear-gradient(to top, rgba(4, 16, 10, .72), rgba(4, 16, 10, 0)); pointer-events: none; }
.about-advisory-section .about-advisory-section__caption { position: absolute; z-index: 1; left: clamp(18px, 2.2vw, 34px); right: clamp(14px, 1.8vw, 26px); bottom: clamp(14px, 1.8vw, 26px); display: flex; align-items: flex-start; gap: 10px; margin: 0; font-size: .72rem; line-height: 1.7; letter-spacing: .16em; text-transform: uppercase; color: #FFFFFF; }
.about-advisory-section .about-advisory-section__caption .icon { flex: none; width: 17px; height: 17px; margin-top: 2px; color: var(--leaf); }
.about-advisory-section .about-advisory-section__caption-main { font-weight: 500; }
.about-advisory-section .about-advisory-section__caption-sub { color: rgba(255, 255, 255, .82); }

/* ---- the story ---- */
.about-advisory-section .about-advisory-section__eyebrow { display: flex; align-items: center; gap: 16px; margin: 0 0 14px; font-size: .74rem; letter-spacing: .32em; text-transform: uppercase; color: var(--basalt-2); }
.about-advisory-section .about-advisory-section__eyebrow::before { content: ""; width: 44px; height: 1px; background: var(--leaf); }
.about-advisory-section .about-advisory-section__title { margin: 0 0 18px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.1rem, 1.3rem + 2.6vw, 3.5rem); line-height: 1.06; color: var(--basalt); }
.about-advisory-section .about-advisory-section__lead { margin: 0 0 24px; max-width: 46ch; font-size: clamp(1rem, .95rem + .25vw, 1.12rem); line-height: 1.64; color: var(--text); }

/* ---- the firm's own figures ---- */
.about-advisory-section .about-advisory-section__figures { display: flex; flex-wrap: wrap; gap: clamp(18px, 2.4vw, 40px); margin: 0 0 26px; padding: 22px 0; border-top: 1px solid var(--leaf-line-light); border-bottom: 1px solid var(--leaf-line-light); }
.about-advisory-section .about-advisory-section__figure { display: flex; align-items: center; gap: 14px; }
.about-advisory-section .about-advisory-section__figure + .about-advisory-section__figure { padding-left: clamp(18px, 2.4vw, 40px); border-left: 1px solid var(--leaf-line-light); }
.about-advisory-section .about-advisory-section__figure-icon { display: grid; place-items: center; flex: none; width: 56px; height: 56px; border-radius: 50%; background: #EFEADB; color: var(--green-800); }
.about-advisory-section .about-advisory-section__figure-icon .icon { width: 28px; height: 28px; stroke-width: 1.4; }
.about-advisory-section .about-advisory-section__figure-value { margin: 0; font-family: var(--font-display); font-size: clamp(1.55rem, 1.15rem + 1.1vw, 2.15rem); line-height: 1.1; color: var(--basalt); }
.about-advisory-section .about-advisory-section__figure-label { margin: 4px 0 0; font-size: .72rem; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }

/* ---- action ---- */
.about-advisory-section .about-advisory-section__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 18px clamp(18px, 2.4vw, 34px); }
.about-advisory-section .about-advisory-section__cta { display: inline-flex; align-items: center; gap: 12px; padding: 15px 26px; border: 1px solid var(--green-800); border-radius: 3px; background: var(--green-800); color: #FFFFFF; font-weight: 500; text-decoration: none; transition: background-color .3s ease, border-color .3s ease; }
.about-advisory-section .about-advisory-section__cta .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.about-advisory-section .about-advisory-section__cta:hover { background: var(--accent); border-color: var(--accent); }
.about-advisory-section .about-advisory-section__cta:hover .icon { transform: translateX(4px); }
.about-advisory-section .about-advisory-section__cta:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.about-advisory-section .about-advisory-section__tagline { margin: 0; padding-left: clamp(18px, 2.4vw, 34px); border-left: 1px solid var(--leaf-line-light); font-size: .72rem; line-height: 1.8; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }

/* ---- small words, top right, on a roomy screen ---- */
.about-advisory-section .about-advisory-section__aside { display: none; }
@media (min-width: 1200px) {
  .about-advisory-section .about-advisory-section__aside { display: block; align-self: start; margin: 0; padding-left: 24px; border-left: 1px solid var(--leaf-line-light); font-size: .7rem; line-height: 2; letter-spacing: .3em; text-transform: uppercase; color: var(--muted); }
}
@media (max-width: 599px) {
  .about-advisory-section .about-advisory-section__photo { border-radius: 0 0 0 60px; }
  .about-advisory-section .about-advisory-section__badge { padding: 14px 16px; font-size: .68rem; }
  .about-advisory-section .about-advisory-section__figures { gap: 16px; }
  .about-advisory-section .about-advisory-section__figure + .about-advisory-section__figure { padding-left: 0; border-left: 0; }
  .about-advisory-section .about-advisory-section__tagline { padding-left: 0; border-left: 0; }
  .about-advisory-section .about-advisory-section__actions .about-advisory-section__cta { flex: 1 1 100%; justify-content: center; }
}
@media (prefers-reduced-motion: reduce) { .about-advisory-section .about-advisory-section__cta, .about-advisory-section .about-advisory-section__cta .icon { transition: none; } }


/* ---- the firm's three promises, under the two columns ---- */
.about-advisory-section .about-advisory-section__promises { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; margin: clamp(26px, 3vw, 38px) 0 0; padding: clamp(20px, 2.2vw, 26px) 0 0; border-top: 1px solid var(--leaf-line-light); list-style: none; }
@media (min-width: 720px) { .about-advisory-section .about-advisory-section__promises { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; } }
.about-advisory-section .about-advisory-section__promises li { display: flex; align-items: center; gap: 14px; padding: 2px clamp(14px, 1.8vw, 26px); }
.about-advisory-section .about-advisory-section__promises li:first-child { padding-left: 0; }
@media (min-width: 720px) { .about-advisory-section .about-advisory-section__promises li + li { border-left: 1px solid var(--leaf-line-light); } }
.about-advisory-section .about-advisory-section__promise-icon { display: grid; place-items: center; flex: none; width: 48px; height: 48px; border-radius: 50%; background: #EFEADB; color: var(--green-800); }
.about-advisory-section .about-advisory-section__promise-icon .icon { width: 24px; height: 24px; stroke-width: 1.3; }
.about-advisory-section .about-advisory-section__promises span span { display: flex; flex-direction: column; }
.about-advisory-section .about-advisory-section__promises strong { display: block; font-weight: 500; font-size: .8rem; letter-spacing: .14em; text-transform: uppercase; color: var(--basalt); }
.about-advisory-section .about-advisory-section__promises strong + span { margin-top: 3px; font-size: .86rem; color: var(--muted); }

/* ---- entrance, once (armed by script only; see site.js) ---- */
.about-advisory-section.is-armed [data-abs-reveal] { opacity: 0; transform: translateY(15px); transition: opacity .65s ease-out, transform .65s ease-out; transition-delay: calc(var(--abs-i, 0) * 110ms); }
.about-advisory-section.is-armed.is-in [data-abs-reveal] { opacity: 1; transform: none; }
.about-advisory-section.is-armed .about-advisory-section__photo img { transform: scale(1.02); transition: transform .8s ease-out; }
.about-advisory-section.is-armed.is-in .about-advisory-section__photo img { transform: none; }
@media (prefers-reduced-motion: reduce) {
  .about-advisory-section.is-armed [data-abs-reveal] { opacity: 1; transform: none; transition: none; }
  .about-advisory-section.is-armed .about-advisory-section__photo img { transform: none; transition: none; }
}


/* ==========================================================================
   Portfolio — "Signature Global addresses"
   Dark green, one project per slide: story left, photograph right.
   ========================================================================== */
.signature-addresses-section { --sa-bg: #0D2F23; --sa-panel: #123F32; --sa-cream: #F5F1E8; --sa-muted: #B8C4BC; --sa-line: rgba(124, 203, 99, .3);
  position: relative; isolation: isolate; overflow: hidden; color: var(--sa-cream); padding-block: clamp(52px, 6.5vw, 88px);
  /* faint leaf line-art in two corners, as in the reference */
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400'%3E%3Cg fill='none' stroke='%237CCB63' stroke-width='1.2' stroke-opacity='.16'%3E%3Cpath d='M30 390C70 220 190 80 390 30C340 230 220 350 30 390Z'/%3E%3Cpath d='M30 390C140 270 250 160 390 30'/%3E%3Cpath d='M110 400C160 300 250 225 400 175'/%3E%3Cpath d='M0 300C90 250 150 170 180 60'/%3E%3C/g%3E%3C/svg%3E") right -60px top -40px / clamp(260px, 30vw, 440px) auto no-repeat,
              url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400'%3E%3Cg fill='none' stroke='%237CCB63' stroke-width='1.2' stroke-opacity='.16'%3E%3Cpath d='M30 390C70 220 190 80 390 30C340 230 220 350 30 390Z'/%3E%3Cpath d='M30 390C140 270 250 160 390 30'/%3E%3Cpath d='M110 400C160 300 250 225 400 175'/%3E%3Cpath d='M0 300C90 250 150 170 180 60'/%3E%3C/g%3E%3C/svg%3E") left -120px bottom -90px / clamp(220px, 26vw, 380px) auto no-repeat,
              var(--sa-bg); }
.signature-addresses-section .signature-addresses-section__header { display: grid; grid-template-columns: minmax(0, 1fr); gap: 22px clamp(24px, 3vw, 48px); margin-bottom: clamp(24px, 3vw, 38px); align-items: start; }
@media (min-width: 1100px) { .signature-addresses-section .signature-addresses-section__header { grid-template-columns: minmax(0, 42fr) minmax(0, 48fr) auto; align-items: center; } }
.signature-addresses-section .signature-addresses-section__eyebrow { display: flex; align-items: center; gap: 16px; margin: 0 0 12px; font-size: .74rem; letter-spacing: .34em; text-transform: uppercase; color: var(--leaf); }
.signature-addresses-section .signature-addresses-section__eyebrow::before { content: ""; width: 44px; height: 1px; background: var(--leaf); }
.signature-addresses-section .signature-addresses-section__title { margin: 0 0 12px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.1rem, 1.3rem + 2.6vw, 3.5rem); line-height: 1.04; color: var(--sa-cream); }
.signature-addresses-section .signature-addresses-section__intro { margin: 0; max-width: 58ch; font-size: clamp(.94rem, .9rem + .2vw, 1rem); line-height: 1.6; color: var(--sa-muted); }
.signature-addresses-section .signature-addresses-section__features { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 0; margin: 0; padding: 0; list-style: none; }
@media (min-width: 700px) { .signature-addresses-section .signature-addresses-section__features { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; } }
.signature-addresses-section .signature-addresses-section__features li { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 0 clamp(8px, 1.2vw, 18px); text-align: center; }
@media (min-width: 700px) { .signature-addresses-section .signature-addresses-section__features li + li { border-left: 1px solid var(--sa-line); } }
.signature-addresses-section .signature-addresses-section__feature-icon { display: grid; color: var(--leaf); }
.signature-addresses-section .signature-addresses-section__feature-icon .icon { width: 26px; height: 26px; stroke-width: 1.5; }
.signature-addresses-section .signature-addresses-section__features strong { display: block; font-weight: 500; font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--sa-cream); }
.signature-addresses-section .signature-addresses-section__features strong + span { display: block; margin-top: 3px; font-size: .72rem; line-height: 1.4; color: var(--sa-muted); }
.signature-addresses-section .signature-addresses-section__controls { display: flex; gap: 12px; justify-self: end; }
.signature-addresses-section .signature-addresses-section__arrow, .signature-addresses-section .signature-addresses-section__dot { border: 1px solid var(--leaf); background: transparent; color: var(--leaf); cursor: pointer; transition: background-color .3s ease, color .3s ease; }
.signature-addresses-section .signature-addresses-section__arrow { display: inline-grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; }
.signature-addresses-section .signature-addresses-section__arrow .icon { width: 19px; height: 19px; }
.signature-addresses-section .signature-addresses-section__arrow:hover { background: var(--leaf); color: var(--green-900); }
.signature-addresses-section .signature-addresses-section__arrow:focus-visible, .signature-addresses-section .signature-addresses-section__dot:focus-visible, .signature-addresses-section .signature-addresses-section__cta:focus-visible, .signature-addresses-section .signature-addresses-section__slider:focus-visible { outline: 2px solid var(--leaf); outline-offset: 3px; }

/* ---- the slider ---- */
.signature-addresses-section .signature-addresses-section__slider { position: relative; border: 1px solid rgba(124, 203, 99, .22); border-radius: 4px 4px 4px clamp(40px, 5vw, 90px); background: var(--sa-panel); overflow: hidden;
  /* three sheets peeking out behind the card, top left */
  box-shadow: -9px -9px 0 -1px rgba(124, 203, 99, .10), -18px -18px 0 -1px rgba(124, 203, 99, .07), -27px -27px 0 -1px rgba(124, 203, 99, .045); }
/* a soft glow inside the story panel, top right */
.signature-addresses-section .signature-addresses-section__content { position: relative; }
.signature-addresses-section .signature-addresses-section__content::before { content: ""; position: absolute; z-index: -1; top: -12%; right: -18%; width: 78%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgba(124, 203, 99, .10), rgba(124, 203, 99, 0) 62%); pointer-events: none; }
@media (max-width: 767px) {
  .signature-addresses-section .signature-addresses-section__slider { box-shadow: -6px -6px 0 -1px rgba(124, 203, 99, .10), -12px -12px 0 -1px rgba(124, 203, 99, .06); }
}
.signature-addresses-section .signature-addresses-section__slide { display: none; }
.signature-addresses-section .signature-addresses-section__slide.is-active { display: grid; animation: saIn .6s cubic-bezier(.22, 1, .36, 1) both; }
@keyframes saIn { from { opacity: 0; transform: translateX(18px); } to { opacity: 1; transform: none; } }
.signature-addresses-section .signature-addresses-section__image { order: -1; overflow: hidden; background: #06170F; }
.signature-addresses-section .signature-addresses-section__image img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 3; }
.signature-addresses-section .signature-addresses-section__content { padding: clamp(22px, 3vw, 44px); }
@media (min-width: 1024px) {
  .signature-addresses-section .signature-addresses-section__slide.is-active { grid-template-columns: minmax(0, 42fr) minmax(0, 58fr); }
  .signature-addresses-section .signature-addresses-section__image { order: 0; height: 100%; }
  .signature-addresses-section .signature-addresses-section__image img { height: 100%; aspect-ratio: auto; min-height: 520px; }
  .signature-addresses-section .signature-addresses-section__content { display: flex; flex-direction: column; justify-content: center; }
}
.signature-addresses-section .signature-addresses-section__count { display: flex; align-items: center; gap: 12px; margin: 0 0 16px; font-size: .84rem; letter-spacing: .18em; color: var(--leaf); font-variant-numeric: tabular-nums; }
.signature-addresses-section .signature-addresses-section__count span { font-size: 1.05rem; }
.signature-addresses-section .signature-addresses-section__count::after { content: ""; width: 44px; height: 1px; background: var(--leaf); }
.signature-addresses-section .signature-addresses-section__kind { display: flex; align-items: center; gap: 12px; margin: 0 0 14px; font-size: .92rem; color: var(--sa-muted); }
.signature-addresses-section .signature-addresses-section__kind span { color: var(--leaf); }
.signature-addresses-section .signature-addresses-section__name { margin: 0 0 14px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.9rem, 1.2rem + 2.2vw, 3.1rem); line-height: 1.04; color: var(--sa-cream); }
.signature-addresses-section .signature-addresses-section__name-pre { display: block; }
.signature-addresses-section .signature-addresses-section__loc { display: flex; align-items: center; gap: 10px; margin: 0 0 16px; font-size: 1.02rem; color: var(--sa-cream); }
.signature-addresses-section .signature-addresses-section__loc .icon { width: 19px; height: 19px; flex: none; color: var(--leaf); }
.signature-addresses-section .signature-addresses-section__tagline { margin: 0 0 20px; padding-top: 16px; border-top: 1px solid var(--sa-line); font-size: .8rem; letter-spacing: .2em; text-transform: uppercase; color: var(--leaf); }
.signature-addresses-section .signature-addresses-section__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 24px; }
.signature-addresses-section .signature-addresses-section__cta { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 48px; padding: 0 22px; border: 1px solid var(--leaf); border-radius: 3px; background: var(--leaf); color: var(--green-900); font: inherit; font-weight: 500; text-decoration: none; cursor: pointer; transition: background-color .3s ease, color .3s ease; }
.signature-addresses-section .signature-addresses-section__cta .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.signature-addresses-section .signature-addresses-section__cta:hover { background: var(--leaf-ink); border-color: var(--leaf-ink); }
.signature-addresses-section .signature-addresses-section__cta:hover .icon { transform: translateX(4px); }
.signature-addresses-section .signature-addresses-section__cta--ghost { background: transparent; color: var(--sa-cream); }
.signature-addresses-section .signature-addresses-section__cta--ghost:hover { background: var(--leaf); color: var(--green-900); }
.signature-addresses-section .signature-addresses-section__facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); margin: 0; padding-top: 18px; border-top: 1px solid var(--sa-line); }
.signature-addresses-section .signature-addresses-section__facts > div { padding: 0 14px; }
.signature-addresses-section .signature-addresses-section__facts > div:first-child { padding-left: 0; }
.signature-addresses-section .signature-addresses-section__facts > div + div { border-left: 1px solid var(--sa-line); }
.signature-addresses-section .signature-addresses-section__facts dt { font-weight: 500; font-size: .95rem; letter-spacing: .04em; text-transform: uppercase; color: var(--sa-cream); }
.signature-addresses-section .signature-addresses-section__facts dd { margin: 4px 0 0; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--sa-muted); }

/* ---- dots, bar, counter ---- */
.signature-addresses-section .signature-addresses-section__progress { display: flex; flex-wrap: wrap; align-items: center; gap: 14px clamp(16px, 2vw, 28px); margin-top: clamp(18px, 2.2vw, 28px); }
.signature-addresses-section .signature-addresses-section__dots { display: flex; gap: 8px; margin: 0; padding: 0; list-style: none; }
.signature-addresses-section .signature-addresses-section__dot { width: 9px; height: 9px; padding: 0; border-radius: 999px; border-color: rgba(184, 196, 188, .5); background: transparent; }
.signature-addresses-section .signature-addresses-section__dot.is-active { width: 26px; background: var(--leaf); border-color: var(--leaf); }
.signature-addresses-section .signature-addresses-section__bar { position: relative; flex: 1; min-width: 80px; height: 1px; background: rgba(184, 196, 188, .25); }
.signature-addresses-section .signature-addresses-section__bar > span { position: absolute; left: 0; top: -.5px; height: 2px; background: var(--leaf); transition: width .5s ease; }
.signature-addresses-section .signature-addresses-section__counter { margin: 0; font-size: .86rem; letter-spacing: .14em; font-variant-numeric: tabular-nums; color: var(--sa-cream); }
.signature-addresses-section .signature-addresses-section__note { margin: 0; font-size: .74rem; letter-spacing: .22em; text-transform: uppercase; color: var(--sa-muted); }
@media (prefers-reduced-motion: reduce) { .signature-addresses-section .signature-addresses-section__slide.is-active { animation: none; } .signature-addresses-section .signature-addresses-section__cta, .signature-addresses-section .signature-addresses-section__cta .icon, .signature-addresses-section .signature-addresses-section__arrow { transition: none; } }

/* ==========================================================================
   FAQs — "Common questions"
   ========================================================================== */
.faq-section { position: relative; isolation: isolate; overflow: hidden; padding-block: clamp(52px, 6.5vw, 92px);
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400'%3E%3Cg fill='none' stroke='%23123F32' stroke-width='1.2' stroke-opacity='.06'%3E%3Cpath d='M30 390C70 220 190 80 390 30C340 230 220 350 30 390Z'/%3E%3Cpath d='M30 390C140 270 250 160 390 30'/%3E%3Cpath d='M110 400C160 300 250 225 400 175'/%3E%3C/g%3E%3C/svg%3E") right -70px top -60px / clamp(220px, 26vw, 380px) auto no-repeat,
              url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400'%3E%3Cg fill='none' stroke='%23123F32' stroke-width='1.2' stroke-opacity='.06'%3E%3Cpath d='M30 390C70 220 190 80 390 30C340 230 220 350 30 390Z'/%3E%3Cpath d='M30 390C140 270 250 160 390 30'/%3E%3Cpath d='M110 400C160 300 250 225 400 175'/%3E%3C/g%3E%3C/svg%3E") left -120px bottom -40px / clamp(200px, 24vw, 340px) auto no-repeat,
              #F4F6F3; }
.faq-section .faq-section__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(28px, 3.4vw, 54px); align-items: start; }
@media (min-width: 1024px) { .faq-section .faq-section__grid { grid-template-columns: minmax(0, 42fr) minmax(0, 58fr); } }
.faq-section .faq-section__eyebrow { display: flex; align-items: center; gap: 16px; margin: 0 0 14px; font-size: .74rem; letter-spacing: .34em; text-transform: uppercase; color: var(--basalt-2); }
.faq-section .faq-section__eyebrow::before { content: ""; width: 44px; height: 1px; background: var(--leaf); }
.faq-section .faq-section__title { margin: 0 0 16px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.4rem, 1.4rem + 3.4vw, 4.4rem); line-height: 1.02; color: var(--basalt); }
.faq-section .faq-section__description { margin: 0 0 14px; max-width: 30rem; font-size: clamp(1rem, .95rem + .2vw, 1.08rem); line-height: 1.6; color: var(--text); }
.faq-section .faq-section__link { display: inline-flex; align-items: center; gap: 10px; padding-bottom: 3px; border-bottom: 1px solid var(--leaf); color: var(--accent-ink); font-weight: 500; text-decoration: none; }
.faq-section .faq-section__link .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.faq-section .faq-section__link:hover .icon { transform: translateX(4px); }
.faq-section .faq-section__media { position: relative; margin: clamp(26px, 3vw, 40px) 0 0; }
/* A fine arc outside the photograph, as in the reference. */
.faq-section .faq-section__media::before { content: ""; position: absolute; z-index: -1; left: -6%; right: 12%; top: -5%; bottom: 18%; border: 1px solid var(--leaf-line-light); border-radius: 50% 60% 0 50%; pointer-events: none; }
@media (min-width: 1024px) {
  /* Reaches the left edge of the window while the text stays in the site container. */
  .faq-section .faq-section__media { margin-left: calc(-1 * ((100vw - min(var(--wrap), 100vw)) / 2 + var(--gutter))); }
}
.faq-section .faq-section__image { overflow: hidden; border-radius: 0 clamp(90px, 12vw, 190px) 0 clamp(50px, 7vw, 110px); background: var(--surface-dark); }
.faq-section .faq-section__image img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 3; }
.faq-section .faq-section__badge { position: absolute; left: clamp(14px, 3vw, 58px); top: 48%; transform: translateY(-50%); display: grid; place-items: center; width: clamp(128px, 14vw, 168px); aspect-ratio: 1; border-radius: 50%; margin: 0; padding: 12px; background: var(--green-800); color: #F5F1E8; text-align: center; font-size: .72rem; line-height: 1.7; letter-spacing: .16em; text-transform: uppercase; }
.faq-section .faq-section__badge::after { content: ""; display: block; width: 34px; height: 1px; margin: 10px auto 0; background: var(--leaf); }

.faq-section .faq-section__item { border: 1px solid rgba(18, 63, 50, .1); border-radius: 14px; background: #FFFFFF; margin-bottom: 14px; box-shadow: 0 10px 26px -22px rgba(18, 63, 50, .45); transition: border-color .25s ease, background-color .25s ease; }
.faq-section .faq-section__item[open] { border-color: rgba(124, 203, 99, .55); background: #FCFDF9; }
.faq-section .faq-section__item:hover { background: rgba(47, 127, 70, .03); }
.faq-section .faq-section__question { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 18px; padding: 20px clamp(18px, 2.2vw, 30px); cursor: pointer; list-style: none; }
.faq-section .faq-section__question::-webkit-details-marker { display: none; }
.faq-section .faq-section__question h3 { margin: 0; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.12rem, 1rem + .45vw, 1.42rem); line-height: 1.25; color: var(--basalt); }
.faq-section .faq-section__num { display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid rgba(47, 127, 70, .18); border-radius: 50%; background: #F1F7E4; font-size: .78rem; letter-spacing: .06em; color: var(--accent-ink); transition: background-color .25s ease, border-color .25s ease; }
.faq-section .faq-section__item[open] .faq-section__num { background: #EAF5D8; border-color: var(--leaf); }
.faq-section .faq-section__sign { position: relative; width: 18px; height: 18px; color: var(--accent-ink); }
.faq-section .faq-section__sign::before, .faq-section .faq-section__sign::after { content: ""; position: absolute; inset: 50% 0 auto; height: 1.5px; background: currentColor; transform: translateY(-50%); transition: transform .3s ease; }
.faq-section .faq-section__sign::after { transform: translateY(-50%) rotate(90deg); }
.faq-section .faq-section__item[open] .faq-section__sign { color: var(--green-800); }
.faq-section .faq-section__item[open] .faq-section__sign::after { transform: translateY(-50%) rotate(0deg); }
.faq-section .faq-section__question:focus-visible { outline: 2px solid var(--accent); outline-offset: -3px; border-radius: 8px; }
.faq-section .faq-section__answer { padding: 0 clamp(18px, 2.2vw, 30px) 24px clamp(74px, 6vw, 90px); max-width: 680px; font-size: 1rem; line-height: 1.65; color: var(--text); }
.faq-section .faq-section__item[open] .faq-section__answer { animation: faqOpen .32s ease-out both; }
@keyframes faqOpen { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .faq-section .faq-section__item[open] .faq-section__answer { animation: none; } .faq-section .faq-section__sign::before, .faq-section .faq-section__sign::after { transition: none; } }

/* ==========================================================================
   Insights — articles on the site's rail
   ========================================================================== */
.insights-section { position: relative; isolation: isolate; overflow: hidden; background: #F4F6F3; padding-block: clamp(52px, 6.5vw, 92px); }
.insights-section .insights-section__header { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px clamp(20px, 2.6vw, 40px); margin-bottom: clamp(24px, 3vw, 36px); align-items: center; }
@media (min-width: 1100px) { .insights-section .insights-section__header { grid-template-columns: minmax(0, 1fr) auto auto auto; } }
.insights-section .insights-section__eyebrow { display: flex; align-items: center; gap: 16px; margin: 0 0 10px; font-size: .74rem; letter-spacing: .34em; text-transform: uppercase; color: var(--basalt-2); }
.insights-section .insights-section__eyebrow::before { content: ""; width: 44px; height: 1px; background: var(--leaf); }
.insights-section .insights-section__title { margin: 0 0 10px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.1rem, 1.3rem + 2.6vw, 3.5rem); line-height: 1.04; color: var(--basalt); }
.insights-section .insights-section__description { margin: 0; max-width: 54ch; font-size: clamp(.95rem, .92rem + .18vw, 1.05rem); line-height: 1.6; color: var(--text); }
.insights-section .insights-section__aside { display: none; }
@media (min-width: 1100px) { .insights-section .insights-section__aside { display: block; margin: 0; padding-left: 20px; border-left: 1px solid var(--leaf-line-light); font-size: .7rem; line-height: 2; letter-spacing: .28em; text-transform: uppercase; color: var(--muted); } }
.insights-section .insights-section__all { display: inline-flex; align-items: center; gap: 10px; min-height: 50px; padding: 0 24px; border: 1px solid var(--accent); border-radius: 999px; color: var(--basalt); font-weight: 500; text-decoration: none; transition: background-color .3s ease, color .3s ease; }
.insights-section .insights-section__all .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.insights-section .insights-section__all:hover { background: var(--green-800); border-color: var(--green-800); color: #F4F6F3; }
.insights-section .insights-section__all:hover .icon { transform: translateX(4px); }
.insights-section .insights-section__controls { display: flex; gap: 10px; margin: 0; }
.insights-section .insights-section__arrow { display: inline-grid; place-items: center; width: 46px; height: 46px; border: 1px solid rgba(18, 63, 50, .35); border-radius: 50%; background: transparent; color: var(--green-800); cursor: pointer; transition: background-color .3s ease, border-color .3s ease; }
.insights-section .insights-section__arrow .icon { width: 18px; height: 18px; }
.insights-section .insights-section__arrow--next { background: var(--leaf); border-color: var(--leaf); }
.insights-section .insights-section__arrow:hover:not(:disabled) { background: var(--leaf); border-color: var(--leaf); }
.insights-section .insights-section__arrow:disabled { opacity: .35; cursor: default; }
.insights-section .insights-section__arrow:focus-visible, .insights-section .insights-section__all:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

.insights-section .insights-section__rail { gap: 26px; padding: 6px 2px 10px; margin: -6px -2px 0; grid-auto-columns: 86%; scrollbar-width: none; cursor: grab; }
.insights-section .insights-section__rail::-webkit-scrollbar { display: none; }
.insights-section .insights-section__rail.is-dragging { cursor: grabbing; scroll-snap-type: none; user-select: none; }
@media (min-width: 700px) { .insights-section .insights-section__rail { grid-auto-columns: calc((100% - 26px) / 2); } }
@media (min-width: 1100px) { .insights-section .insights-section__rail { grid-auto-columns: calc((100% - 52px) / 3); } }
.insights-section .insights-section__card { display: flex; flex-direction: column; min-width: 0; border: 1px solid rgba(18, 63, 50, .1); border-radius: 12px; background: #FFFFFF; overflow: hidden; box-shadow: 0 12px 30px rgba(18, 63, 50, .05); transition: transform .35s ease, border-color .35s ease; }
.insights-section .insights-section__card:hover { transform: translateY(-4px); border-color: color-mix(in srgb, var(--accent) 34%, transparent); }
.insights-section .insights-section__image { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: #EFEADB; }
.insights-section .insights-section__image img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; -webkit-user-drag: none; }
.insights-section .insights-section__card:hover .insights-section__image img { transform: scale(1.03); }
.insights-section .insights-section__image-blank { display: grid; place-items: center; width: 100%; height: 100%; background: linear-gradient(140deg, #EFEADB, #DFE7DA); color: var(--green-800); }
.insights-section .insights-section__image-blank .icon { width: 42px; height: 42px; stroke-width: 1.1; }
.insights-section .insights-section__badge { position: absolute; top: 16px; left: 16px; padding: 6px 14px; border-radius: 999px; background: var(--green-800); font-size: .68rem; letter-spacing: .14em; text-transform: uppercase; color: #F4F6F3; }
.insights-section .insights-section__body { display: flex; flex: 1; flex-direction: column; padding: 18px clamp(16px, 1.8vw, 24px) 20px; }
.insights-section .insights-section__meta { display: flex; align-items: center; gap: 12px; margin: 0 0 10px; font-size: .78rem; color: var(--muted); }
.insights-section .insights-section__meta::after { content: ""; width: 34px; height: 1px; background: var(--leaf-line-light); }
.insights-section .insights-section__card-title { margin: 0 0 10px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.25rem, 1.05rem + .5vw, 1.55rem); line-height: 1.14; }
.insights-section .insights-section__card-title a { position: static; color: var(--basalt); text-decoration: none; }
.insights-section .insights-section__card-title a::after { content: ""; position: absolute; inset: 0; z-index: 2; }
.insights-section .insights-section__card { position: relative; }
.insights-section .insights-section__card:hover .insights-section__card-title a { color: var(--accent); }
.insights-section .insights-section__excerpt { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; margin: 0 0 16px; font-size: .92rem; line-height: 1.55; color: var(--muted); }
.insights-section .insights-section__more { display: inline-flex; align-items: center; gap: 10px; margin-top: auto; padding-bottom: 2px; border-bottom: 1px solid var(--leaf); font-size: .92rem; color: var(--green-800); }
.insights-section .insights-section__more .icon { width: 17px; height: 17px; transition: transform .3s ease; }
.insights-section .insights-section__card:hover .insights-section__more .icon { transform: translateX(4px); }
.insights-section .insights-section__progress { display: flex; align-items: center; gap: 14px; margin: clamp(16px, 2vw, 24px) 0 0; font-size: .82rem; letter-spacing: .12em; font-variant-numeric: tabular-nums; color: var(--muted); }
.insights-section .insights-section__bar { position: relative; flex: 1; max-width: 240px; height: 1px; background: rgba(18, 63, 50, .2); }
.insights-section .insights-section__bar > span { position: absolute; left: 0; top: -.5px; height: 2px; width: 0; background: var(--leaf); transition: width .3s ease; }
@media (prefers-reduced-motion: reduce) { .insights-section .insights-section__card, .insights-section .insights-section__image img, .insights-section .insights-section__more .icon { transition: none; } .insights-section .insights-section__card:hover { transform: none; } }


/* ==========================================================================
   Reach us — a round button that opens three round options
   The markup keeps its text for screen readers; on screen each option is a
   circle with its name appearing beside it on hover or focus.
   ========================================================================== */
.reach-us { gap: 14px; }
.reach-us .reach-panel { width: auto; padding: 0; border: 0; background: none; box-shadow: none; display: grid; justify-items: end; gap: 12px; }
.reach-us .reach-title { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
/* a faint dashed arc behind the options, as in the reference */
.reach-us .reach-panel::before { content: ""; position: absolute; right: 6px; bottom: -18px; width: 190px; height: 190px; border: 1px dashed rgba(18, 63, 50, .22); border-radius: 50%; pointer-events: none; }
.reach-us .reach-item { position: relative; display: grid; place-items: center; width: 54px; height: 54px; padding: 0; border-radius: 50%; background: var(--green-800); color: var(--leaf); box-shadow: 0 12px 26px -14px rgba(12, 38, 24, .6); transition: background-color .25s ease, color .25s ease, transform .25s ease; animation: reachIn .28s ease-out both; }
.reach-us .reach-item:nth-child(2) { animation-delay: .04s; }
.reach-us .reach-item:nth-child(3) { animation-delay: .08s; }
.reach-us .reach-item:nth-child(4) { animation-delay: .12s; }
.reach-us .reach-item .icon { width: 23px; height: 23px; stroke-width: 1.6; }
.reach-us .reach-item:hover, .reach-us .reach-item:focus-visible { background: var(--leaf); color: var(--green-900); transform: translateY(-2px); }
/* the name of each option, beside its circle */
.reach-us .reach-item span { position: absolute; right: calc(100% + 10px); padding: 7px 12px; border-radius: 3px; background: var(--green-800); color: #F5F1E8; font-size: .82rem; white-space: nowrap; opacity: 0; transform: translateX(6px); transition: opacity .25s ease, transform .25s ease; pointer-events: none; }
.reach-us .reach-item:hover span, .reach-us .reach-item:focus-visible span { opacity: 1; transform: none; }
.reach-us .reach-dismiss { margin: 2px 4px 0 0; font-size: .78rem; color: var(--muted); }

.reach-us .reach-toggle { position: relative; display: grid; place-items: center; width: 64px; height: 64px; padding: 0; border: 0; border-radius: 50%; background: var(--leaf); color: var(--green-900); box-shadow: 0 16px 32px -16px rgba(12, 38, 24, .7); transition: background-color .25s ease, color .25s ease, transform .3s ease; }
.reach-us .reach-toggle .icon { width: 26px; height: 26px; stroke-width: 1.6; }
.reach-us .reach-toggle-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.reach-us .reach-toggle-close { display: none; }
.reach-us .reach-toggle[aria-expanded="true"] { background: var(--green-800); color: var(--leaf); transform: rotate(90deg); }
.reach-us .reach-toggle[aria-expanded="true"] .reach-toggle-open { display: none; }
.reach-us .reach-toggle[aria-expanded="true"] .reach-toggle-close { display: grid; }
.reach-us .reach-toggle:hover { background: var(--leaf-ink); }
.reach-us .reach-toggle:focus-visible, .reach-us .reach-item:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.reach-us .reach-restore { border-color: var(--green-800); background: var(--green-800); color: var(--leaf); }
@keyframes reachIn { from { opacity: 0; transform: translateY(10px) scale(.9); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .reach-us .reach-item, .reach-us .reach-toggle, .reach-us .reach-item span { transition: none; animation: none; }
  .reach-us .reach-toggle[aria-expanded="true"] { transform: none; }
}


/* ==========================================================================
   Enquiry section — dark green, story left, the form in a cream card right
   The form markup is the shared lead-form component; only its look is set here.
   ========================================================================== */
.contact-enquiry-section { --ce-dark: #0D2F23; --ce-cream: #F4F6F3; position: relative; isolation: isolate; overflow: hidden; background: var(--ce-dark); color: var(--ce-cream); padding-block: clamp(52px, 6.5vw, 92px); }
.contact-enquiry-section::before { content: ""; position: absolute; z-index: -1; right: -12%; top: -20%; width: 70%; height: 140%; border-radius: 50%; border: 1px solid rgba(124, 203, 99, .06); pointer-events: none; }
.contact-enquiry-section .contact-enquiry-section__container { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(30px, 3.6vw, 60px); align-items: center; }
@media (min-width: 1024px) { .contact-enquiry-section .contact-enquiry-section__container { grid-template-columns: minmax(0, 41fr) minmax(0, 59fr); } }

.contact-enquiry-section .contact-enquiry-section__eyebrow { display: flex; align-items: center; gap: 16px; margin: 0 0 14px; font-size: .74rem; letter-spacing: .34em; text-transform: uppercase; color: var(--leaf); }
.contact-enquiry-section .contact-enquiry-section__eyebrow::before { content: ""; width: 48px; height: 1px; background: var(--leaf); }
.contact-enquiry-section .contact-enquiry-section__title { margin: 0 0 16px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.2rem, 1.3rem + 2.8vw, 3.6rem); line-height: 1.02; color: var(--ce-cream); }
.contact-enquiry-section .contact-enquiry-section__title em { font-style: italic; color: var(--leaf); }
.contact-enquiry-section .contact-enquiry-section__description { margin: 0 0 26px; max-width: 35rem; font-size: clamp(1rem, .95rem + .2vw, 1.08rem); line-height: 1.6; color: #D6DED8; }

.contact-enquiry-section .contact-enquiry-section__contacts { display: grid; gap: 18px; margin: 0 0 24px; padding: 0; list-style: none; }
.contact-enquiry-section .contact-enquiry-section__contact-item { display: flex; align-items: center; gap: 16px; color: var(--ce-cream); text-decoration: none; transition: color .25s ease; }
.contact-enquiry-section .contact-enquiry-section__contact-item .icon { flex: none; width: 26px; height: 26px; stroke-width: 1.6; color: var(--leaf); transition: transform .25s ease; }
.contact-enquiry-section .contact-enquiry-section__contact-item strong { display: block; font-weight: 500; font-size: 1.08rem; }
.contact-enquiry-section .contact-enquiry-section__contact-item strong + span { display: block; margin-top: 2px; font-size: .84rem; color: var(--leaf); }
.contact-enquiry-section .contact-enquiry-section__contact-item:hover { color: #FFFFFF; }
.contact-enquiry-section .contact-enquiry-section__contact-item:hover .icon { transform: scale(1.06); }
.contact-enquiry-section .contact-enquiry-section__contact-item:focus-visible { outline: 2px solid var(--leaf); outline-offset: 4px; }

.contact-enquiry-section .contact-enquiry-section__trust { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; margin: 0; padding: 22px 0 0; border-top: 1px solid rgba(124, 203, 99, .35); list-style: none; }
.contact-enquiry-section .contact-enquiry-section__trust li { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 0 clamp(8px, 1.2vw, 16px); text-align: center; }
.contact-enquiry-section .contact-enquiry-section__trust li + li { border-left: 1px solid rgba(124, 203, 99, .35); }
.contact-enquiry-section .contact-enquiry-section__trust .icon { width: 26px; height: 26px; stroke-width: 1.5; color: var(--leaf); }
.contact-enquiry-section .contact-enquiry-section__trust strong { display: block; font-weight: 500; font-size: .82rem; color: var(--ce-cream); }
.contact-enquiry-section .contact-enquiry-section__trust strong + span { display: block; margin-top: 2px; font-size: .74rem; line-height: 1.4; color: #B8C4BC; }
.contact-enquiry-section .contact-enquiry-section__sign { margin: 26px 0 0; font-family: var(--font-display); font-style: italic; font-size: clamp(1.2rem, 1rem + .6vw, 1.5rem); color: var(--leaf); }
.contact-enquiry-section .contact-enquiry-section__sign::after { content: ""; display: block; width: 150px; height: 1px; margin-top: 8px; background: var(--leaf); opacity: .6; }

/* ---- the form card ---- */
.contact-enquiry-section .contact-enquiry-section__form-card { padding: clamp(22px, 2.6vw, 38px); border: 1px solid rgba(18, 63, 50, .1); border-radius: 5px; background: var(--ce-cream); color: var(--text); box-shadow: 0 30px 60px -40px rgba(0, 0, 0, .6); }
.contact-enquiry-section .contact-enquiry-section__form-header { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 12px 20px; margin-bottom: 22px; }
.contact-enquiry-section .contact-enquiry-section__form-eyebrow { display: flex; align-items: center; gap: 14px; margin: 0; font-size: .74rem; letter-spacing: .3em; text-transform: uppercase; color: var(--green-800); }
.contact-enquiry-section .contact-enquiry-section__form-eyebrow::before { content: ""; width: 44px; height: 1px; background: var(--leaf); }
.contact-enquiry-section .contact-enquiry-section__form-aside { margin: 0; text-align: right; font-size: .68rem; line-height: 1.9; letter-spacing: .26em; text-transform: uppercase; color: #527066; }

/* the shared form, restyled inside this card only */
.contact-enquiry-section .contact-enquiry-section__form-card .field label, .contact-enquiry-section .contact-enquiry-section__form-card .field-label { font-size: .82rem; font-weight: 500; color: var(--green-800); }
.contact-enquiry-section .contact-enquiry-section__form-card .field input, .contact-enquiry-section .contact-enquiry-section__form-card .field select, .contact-enquiry-section .contact-enquiry-section__form-card .field textarea {
  min-height: 50px; border: 1px solid #C9D1CC; border-radius: 3px; background: #FFFFFF; color: var(--basalt); }
.contact-enquiry-section .contact-enquiry-section__form-card .field textarea { min-height: 118px; resize: vertical; }
.contact-enquiry-section .contact-enquiry-section__form-card .field input::placeholder, .contact-enquiry-section .contact-enquiry-section__form-card .field textarea::placeholder { color: #8A9690; }
.contact-enquiry-section .contact-enquiry-section__form-card .field input:focus, .contact-enquiry-section .contact-enquiry-section__form-card .field select:focus, .contact-enquiry-section .contact-enquiry-section__form-card .field textarea:focus {
  border-color: var(--accent); box-shadow: 0 0 0 2px rgba(124, 203, 99, .3); }
.contact-enquiry-section .contact-enquiry-section__form-card .form-grid { gap: 18px 20px; }
.contact-enquiry-section .contact-enquiry-section__form-card .field-check { margin: 4px 0 18px; font-size: .82rem; color: #5F6B65; }
.contact-enquiry-section .contact-enquiry-section__form-card .field-check input { accent-color: var(--accent); width: 18px; height: 18px; }
.contact-enquiry-section .contact-enquiry-section__form-card .field-check a { color: var(--accent-ink); }
.contact-enquiry-section .contact-enquiry-section__form-card .form-alert { background: color-mix(in srgb, var(--danger) 10%, #FFFFFF); }
.contact-enquiry-section .contact-enquiry-section__form-card .form-alert.is-ok { background: color-mix(in srgb, var(--ok) 10%, #FFFFFF); }
/* the submit: a rectangle with its own arrow block, never a pill */
.contact-enquiry-section .contact-enquiry-section__form-card .btn[type="submit"], .contact-enquiry-section .contact-enquiry-section__form-card button[type="submit"].btn {
  position: relative; width: 100%; min-height: 52px; padding: 12px 64px 12px 26px; border: 0; border-radius: 3px;
  background: var(--accent); color: #FFFFFF; font-weight: 500; transition: background-color .3s ease; }
.contact-enquiry-section .contact-enquiry-section__form-card .btn[type="submit"]::after {
  content: "→"; position: absolute; top: 0; right: 0; bottom: 0; width: 52px; display: grid; place-items: center;
  background: var(--leaf); color: var(--green-900); font-size: 1.15rem; transition: transform .3s ease, background-color .3s ease; }
.contact-enquiry-section .contact-enquiry-section__form-card .btn[type="submit"]:hover { background: var(--green-800); }
.contact-enquiry-section .contact-enquiry-section__form-card .btn[type="submit"]:hover::after { background: var(--leaf-ink); }
.contact-enquiry-section .contact-enquiry-section__form-card .btn[type="submit"]:focus-visible { outline: 2px solid var(--green-800); outline-offset: 3px; }

.contact-enquiry-section .contact-enquiry-section__form-footer { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; margin: 20px 0 0; padding-top: 18px; border-top: 1px solid rgba(18, 63, 50, .12); list-style: none; }
.contact-enquiry-section .contact-enquiry-section__form-footer li { display: flex; align-items: center; gap: 10px; padding: 0 clamp(8px, 1.2vw, 16px); }
.contact-enquiry-section .contact-enquiry-section__form-footer li:first-child { padding-left: 0; }
.contact-enquiry-section .contact-enquiry-section__form-footer li + li { border-left: 1px solid rgba(18, 63, 50, .12); }
.contact-enquiry-section .contact-enquiry-section__form-footer .icon { flex: none; width: 24px; height: 24px; stroke-width: 1.4; color: var(--green-800); }
.contact-enquiry-section .contact-enquiry-section__form-footer strong { display: block; font-weight: 500; font-size: .76rem; color: var(--basalt); }
.contact-enquiry-section .contact-enquiry-section__form-footer strong + span { display: block; font-size: .74rem; line-height: 1.4; color: var(--muted); }

@media (max-width: 767px) {
  .contact-enquiry-section .contact-enquiry-section__form-card .form-grid { grid-template-columns: minmax(0, 1fr); }
  .contact-enquiry-section .contact-enquiry-section__trust, .contact-enquiry-section .contact-enquiry-section__form-footer { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .contact-enquiry-section .contact-enquiry-section__trust li, .contact-enquiry-section .contact-enquiry-section__form-footer li { flex-direction: row; align-items: center; text-align: left; padding: 0; border-left: 0 !important; }
}
@media (prefers-reduced-motion: reduce) { .contact-enquiry-section .contact-enquiry-section__contact-item, .contact-enquiry-section .contact-enquiry-section__contact-item .icon, .contact-enquiry-section .contact-enquiry-section__form-card .btn[type="submit"], .contact-enquiry-section .contact-enquiry-section__form-card .btn[type="submit"]::after { transition: none; } }


/* ==========================================================================
   Footer — architectural photograph under a dark forest-green wash
   Four columns on a wide screen; everything scoped to .site-footer__ classes.
   ========================================================================== */
.site-footer { position: relative; isolation: isolate; overflow: hidden; background: #0B2F22; color: #F4F6F3; padding-top: clamp(44px, 5.5vw, 76px); font-size: .98rem; }
.site-footer .site-footer__media { position: absolute; inset: 0; z-index: -1; overflow: hidden; }
.site-footer .site-footer__media img { width: 100%; height: 100%; object-fit: cover; object-position: center; background: none; }
/* the wash: dark green at about 80%, never black, so the architecture still reads */
.site-footer .site-footer__media::after { content: ""; position: absolute; inset: 0; background:
  linear-gradient(90deg, rgba(7, 43, 30, .92) 0%, rgba(7, 43, 30, .84) 48%, rgba(7, 43, 30, .78) 100%); }
.site-footer .site-footer__container { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(30px, 3.4vw, 52px); padding-bottom: clamp(30px, 3.4vw, 46px); }
@media (min-width: 760px) { .site-footer .site-footer__container { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) {
  .site-footer .site-footer__container { grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr) minmax(0, .8fr) minmax(0, .9fr); }
  /* The brand column runs down both rows, so the slogan sits on the right,
     level with the trust icons at the foot of that column. */
  .site-footer .site-footer__brand { grid-column: 1; grid-row: 1 / span 2; }
  .site-footer .site-footer__projects { grid-column: 2; grid-row: 1; }
  .site-footer .site-footer__explore { grid-column: 3; grid-row: 1; }
  .site-footer .site-footer__locations { grid-column: 4; grid-row: 1; }
  .site-footer .site-footer__slogan { grid-column: 2 / -1; grid-row: 2; justify-self: end; align-self: end; padding-top: 18px; }
}

/* ---- brand ---- */
.site-footer .site-footer__brand { max-width: 30rem; }
.site-footer .site-footer__name { margin: 0; font-family: var(--font-display); font-size: clamp(1.6rem, 1.3rem + .8vw, 2rem); line-height: 1.1; color: #F4F6F3; }
.site-footer .site-footer__descriptor { margin: 4px 0 0; padding-bottom: 14px; border-bottom: 1px solid rgba(124, 203, 99, .5); display: inline-block; font-size: .74rem; letter-spacing: .28em; text-transform: uppercase; color: var(--leaf); }
.site-footer .site-footer__about { margin: 16px 0 0; max-width: 360px; font-size: .92rem; line-height: 1.6; color: #D3DDD7; }
.site-footer .site-footer__contact { display: grid; gap: 14px; margin: 20px 0 0; font-style: normal; }
.site-footer .site-footer__contact > * { display: flex; align-items: flex-start; gap: 14px; color: #F4F6F3; text-decoration: none; transition: color .25s ease; }
.site-footer .site-footer__contact .icon { flex: none; width: 20px; height: 20px; margin-top: 2px; stroke-width: 1.6; color: var(--leaf); }
.site-footer .site-footer__contact a:hover { color: var(--leaf); }

/* ---- advisor block ---- */
.site-footer .site-footer__advisor { margin-top: 26px; }
.site-footer .site-footer__advisor-head { display: flex; align-items: center; gap: 14px; margin: 0 0 12px; font-size: .72rem; letter-spacing: .3em; text-transform: uppercase; color: var(--leaf); }
.site-footer .site-footer__advisor-head::after { content: ""; flex: 1; max-width: 90px; height: 1px; background: var(--leaf); opacity: .6; }
.site-footer .site-footer__advisor-text { margin: 0 0 18px; max-width: 24rem; font-family: var(--font-display); font-size: clamp(1.25rem, 1.05rem + .6vw, 1.6rem); line-height: 1.25; color: #F4F6F3; }
.site-footer .site-footer__advisor-text em { font-style: normal; color: var(--leaf); }
.site-footer .site-footer__cta { position: relative; display: flex; align-items: center; justify-content: center; width: 100%; max-width: 24rem; min-height: 48px; padding: 10px 64px 10px 22px; border: 0; border-radius: 3px; background: var(--accent); color: #FFFFFF; font: inherit; font-weight: 500; cursor: pointer; transition: background-color .3s ease; }
.site-footer .site-footer__cta-arrow { position: absolute; top: 0; right: 0; bottom: 0; display: grid; place-items: center; width: 52px; background: var(--leaf); color: var(--green-900); transition: background-color .3s ease, transform .3s ease; }
.site-footer .site-footer__cta-arrow .icon { width: 18px; height: 18px; }
.site-footer .site-footer__cta:hover { background: var(--green-800); }
.site-footer .site-footer__cta:hover .site-footer__cta-arrow { background: var(--leaf-ink); transform: translateX(2px); }
.site-footer .site-footer__wa { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; max-width: 24rem; min-height: 48px; margin-top: 12px; border: 1px solid var(--leaf); border-radius: 3px; color: #F4F6F3; text-decoration: none; transition: background-color .3s ease, color .3s ease; }
.site-footer .site-footer__wa .icon { width: 20px; height: 20px; color: var(--leaf); transition: color .3s ease; }
.site-footer .site-footer__wa:hover { background: var(--leaf); color: var(--green-900); }
.site-footer .site-footer__wa:hover .icon { color: var(--green-900); }
.site-footer .site-footer__cta:focus-visible, .site-footer .site-footer__wa:focus-visible, .site-footer .site-footer__contact a:focus-visible, .site-footer .site-footer__col a:focus-visible, .site-footer .site-footer__bottom a:focus-visible, .site-footer .site-footer__social a:focus-visible { outline: 2px solid var(--leaf); outline-offset: 3px; }

/* ---- trust strip and social ---- */
.site-footer .site-footer__trust { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 26px 0 0; padding-top: 20px; border-top: 1px solid rgba(124, 203, 99, .35); list-style: none; }
.site-footer .site-footer__trust li { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 0 10px; text-align: center; }
.site-footer .site-footer__trust li + li { border-left: 1px solid rgba(124, 203, 99, .35); }
.site-footer .site-footer__trust .icon { width: 24px; height: 24px; stroke-width: 1.5; color: var(--leaf); }
.site-footer .site-footer__trust strong { display: block; max-width: 8ch; font-weight: 400; font-size: .92rem; line-height: 1.35; color: #F4F6F3; }
.site-footer .site-footer__trust strong + span { display: block; margin-top: 2px; font-size: .72rem; line-height: 1.4; color: #B9C5BE; }
.site-footer .site-footer__social { display: flex; flex-wrap: wrap; gap: 14px 20px; margin: 22px 0 0; padding: 0; list-style: none; font-size: .86rem; }
.site-footer .site-footer__social a { color: #D3DDD7; text-decoration: none; }
.site-footer .site-footer__social a:hover { color: var(--leaf); }

/* ---- link columns ---- */
.site-footer .site-footer__head { display: flex; align-items: center; gap: 12px; margin: 0 0 16px; font-size: .72rem; letter-spacing: .3em; text-transform: uppercase; color: var(--leaf); }
.site-footer .site-footer__head::after { content: ""; flex: 1; max-width: 60px; height: 1px; background: var(--leaf); opacity: .5; }
.site-footer .site-footer__col ul { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.site-footer .site-footer__col li + li { border-top: 1px solid rgba(244, 246, 243, .1); }
.site-footer .site-footer__col a { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 0; color: #F4F6F3; text-decoration: none; line-height: 1.45; transition: color .25s ease; }
.site-footer .site-footer__col a::after { content: "→"; opacity: 0; transform: translateX(-4px); transition: opacity .25s ease, transform .25s ease; color: var(--leaf); }
.site-footer .site-footer__col a:hover { color: var(--leaf); }
.site-footer .site-footer__col a:hover::after { opacity: 1; transform: none; }

/* ---- slogan ---- */
.site-footer .site-footer__slogan { display: grid; justify-items: end; align-content: end; gap: 4px; margin: 0; text-align: right; }
.site-footer .site-footer__slogan span { display: flex; align-items: center; gap: 14px; font-size: .72rem; letter-spacing: .3em; text-transform: uppercase; color: var(--leaf); }
.site-footer .site-footer__slogan span::before { content: ""; width: 60px; height: 1px; background: var(--leaf); }
.site-footer .site-footer__slogan strong { font-family: var(--font-display); font-weight: 400; font-size: clamp(1.4rem, 1.1rem + 1vw, 2.1rem); color: #F4F6F3; }
.site-footer .site-footer__slogan em { font-family: var(--font-display); font-style: italic; font-size: clamp(1.25rem, 1rem + .9vw, 1.95rem); color: var(--leaf); }
@media (max-width: 1099px) { .site-footer .site-footer__slogan { justify-items: start; text-align: left; } }

/* ---- legal ---- */
.site-footer .site-footer__legal { position: relative; margin-top: clamp(18px, 2vw, 26px); padding: clamp(22px, 2.6vw, 30px) var(--gutter) clamp(26px, 3vw, 36px); border-top: 1px solid rgba(244, 246, 243, .18); background: #0A2B1F; max-width: none; }
.site-footer .site-footer__disclaimer { margin: 0 0 20px; max-width: 750px; font-size: .86rem; line-height: 1.7; color: #C2CDC6; }
.site-footer .site-footer__bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; font-size: .82rem; color: #D0D9D4; }
.site-footer .site-footer__bottom p { margin: 0; }
.site-footer .site-footer__bottom ul { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 0; padding: 0; list-style: none; }
.site-footer .site-footer__bottom a, .site-footer .site-footer__bottom .link-btn { color: #D0D9D4; text-decoration: none; font-weight: 400; }
.site-footer .site-footer__bottom a:hover, .site-footer .site-footer__bottom .link-btn:hover { color: var(--leaf); }
@media (min-width: 700px) { .site-footer .site-footer__bottom li + li::before { content: "|"; margin-right: 18px; color: rgba(244, 246, 243, .3); } }

@media (max-width: 599px) {
  .site-footer .site-footer__trust { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .site-footer .site-footer__trust li { flex-direction: row; align-items: center; text-align: left; padding: 0; }
  .site-footer .site-footer__trust li + li { border-left: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .site-footer .site-footer__cta, .site-footer .site-footer__cta-arrow, .site-footer .site-footer__wa, .site-footer .site-footer__col a, .site-footer .site-footer__col a::after, .site-footer .site-footer__contact > * { transition: none; }
}

/* ---- phones: Projects, Explore and Locations fold away (Settings > Footer) ----
   site.js adds .is-acc below 760px and turns each heading into a button.
   Closed lists are display:none only; the links stay in the page. */
.site-footer .site-footer__toggle { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-height: 52px; margin: 0; padding: 0; border: 0; background: none; color: inherit; font: inherit; letter-spacing: inherit; text-transform: inherit; text-align: left; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.site-footer .site-footer__toggle .icon { flex: none; width: 18px; height: 18px; color: var(--leaf); transition: transform .25s ease; }
.site-footer .site-footer__toggle:focus-visible { outline: 2px solid var(--leaf); outline-offset: 2px; }
.site-footer .site-footer__col.is-open .site-footer__toggle .icon { transform: rotate(180deg); }
.site-footer.is-acc .site-footer__container { row-gap: 0; }
.site-footer.is-acc .site-footer__brand { margin-bottom: 30px; }
.site-footer.is-acc .site-footer__slogan { margin-top: 30px; }
.site-footer.is-acc .site-footer__col { border-bottom: 1px solid rgba(244, 246, 243, .16); }
.site-footer.is-acc .site-footer__brand + .site-footer__col { border-top: 1px solid rgba(244, 246, 243, .16); }
.site-footer.is-acc .site-footer__head { margin: 0; font-size: .8rem; letter-spacing: .24em; }
.site-footer.is-acc .site-footer__head::after { display: none; }
.site-footer.is-acc .site-footer__col:not(.is-open) ul { display: none; }
.site-footer.is-acc .site-footer__col.is-open ul { padding-bottom: 10px; animation: ft-menu-open .25s ease; }
.site-footer.is-acc .site-footer__col a { padding: 12px 0; }
@keyframes ft-menu-open { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .site-footer .site-footer__toggle .icon { transition: none; }
  .site-footer.is-acc .site-footer__col.is-open ul { animation: none; }
}


/* ==========================================================================
   About us page — cream header, dark story band, figures, steps, contact
   Scoped to .about-page__ classes; all content comes from the page and the settings.
   ========================================================================== */
.about-page__head { background: #F4F6F3; padding-block: clamp(30px, 4vw, 56px) clamp(26px, 3vw, 44px); }
.about-page__head-grid { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 20px 40px; }
.about-page__crumbs { margin-bottom: 18px; font-size: .84rem; color: var(--muted); }
.about-page__crumbs a { color: var(--muted); text-decoration: none; }
.about-page__crumbs a:hover { color: var(--accent-ink); }
.about-page__eyebrow { display: flex; align-items: center; gap: 16px; margin: 0 0 12px; font-size: .74rem; letter-spacing: .32em; text-transform: uppercase; color: var(--basalt-2); }
.about-page__eyebrow::before { content: ""; width: 44px; height: 1px; background: var(--leaf); }
.about-page__eyebrow--light { color: rgba(244, 246, 243, .86); }
.about-page__title { margin: 0 0 14px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.6rem, 1.6rem + 3.4vw, 4.4rem); line-height: 1.02; color: var(--basalt); }
.about-page__intro { margin: 0; max-width: 40rem; font-size: clamp(1rem, .95rem + .25vw, 1.15rem); line-height: 1.6; color: var(--muted); }
.about-page__aside { display: none; }
@media (min-width: 1100px) { .about-page__aside { display: block; margin: 6px 0 0; padding-left: 22px; border-left: 1px solid var(--leaf-line-light); font-size: .7rem; line-height: 2; letter-spacing: .3em; text-transform: uppercase; color: var(--muted); } }
.about-page__h2 { margin: 0 0 16px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.9rem, 1.2rem + 2.2vw, 3rem); line-height: 1.06; color: var(--basalt); }
.about-page__h2--sm { font-size: clamp(1.5rem, 1.1rem + 1.4vw, 2.2rem); }
.about-page__h2--light { color: #F4F6F3; }

/* ---- figures strip ---- */
.about-page__figures { background: #F1EFE6; border-block: 1px solid rgba(18, 63, 50, .15); padding-block: clamp(22px, 2.6vw, 34px); }
.about-page__figures-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 0; }
@media (min-width: 900px) { .about-page__figures-row { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; } }
.about-page__figure { display: flex; align-items: center; gap: 14px; padding: 4px clamp(10px, 1.6vw, 24px); }
@media (min-width: 900px) { .about-page__figure + .about-page__figure { border-left: 1px solid rgba(18, 63, 50, .15); } }
.about-page__figure-icon { display: grid; place-items: center; flex: none; width: 48px; height: 48px; border: 1px solid var(--leaf-line-light); border-radius: 50%; color: var(--green-800); }
.about-page__figure-icon .icon { width: 24px; height: 24px; stroke-width: 1.3; }
.about-page__figure-value { margin: 0; font-family: var(--font-display); font-size: clamp(1.7rem, 1.2rem + 1.4vw, 2.6rem); line-height: 1.05; color: var(--basalt); }
.about-page__figure-label { margin: 3px 0 0; font-size: .74rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.about-page__figure > div { min-width: 0; }
@media (max-width: 420px) { .about-page__figure { gap: 10px; padding-inline: 8px; } .about-page__figure-icon { width: 40px; height: 40px; } .about-page__figure-value { font-size: 1.45rem; overflow-wrap: anywhere; } .about-page__figure-label { letter-spacing: .1em; } }
.about-page__figures-note { margin: 14px auto 0; font-size: .74rem; color: var(--muted); }

/* ---- what we do / what we are not ---- */
.about-page__story { background: #FFFFFF; }
.about-page__story-grid, .about-page__steps-grid, .about-page__who-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(26px, 3.2vw, 52px); align-items: start; }
@media (min-width: 1000px) { .about-page__story-grid { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); } }
.about-page__prose { max-width: 42rem; font-size: 1rem; line-height: 1.7; color: var(--text); }
.about-page__not-text { margin: 0 0 18px; max-width: 38rem; line-height: 1.65; color: var(--text); }
.about-page__chips { display: grid; gap: 14px; margin: 0; padding: 0; list-style: none; }
@media (min-width: 560px) { .about-page__chips { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.about-page__chips li { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; border: 1px solid var(--leaf-line-light); border-radius: 4px; background: #F6FAF0; }
.about-page__chips .icon { flex: none; width: 22px; height: 22px; margin-top: 2px; color: var(--green-800); }
.about-page__chips strong { display: block; font-weight: 500; font-size: .8rem; letter-spacing: .1em; text-transform: uppercase; color: var(--basalt); }
.about-page__chips strong + span { display: block; margin-top: 3px; font-size: .84rem; color: var(--muted); }

/* ---- how we work ---- */
.about-page__steps-section { background: #F4F6F3; }
@media (min-width: 1000px) { .about-page__steps-grid { grid-template-columns: minmax(0, 32fr) minmax(0, 68fr); } }
.about-page__steps { display: grid; grid-template-columns: minmax(0, 1fr); gap: 22px; margin: 0; padding: 0; list-style: none; }
@media (min-width: 760px) { .about-page__steps { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; } .about-page__steps li + li { padding-left: clamp(16px, 2vw, 30px); border-left: 1px solid var(--leaf-line-light); } }
.about-page__steps li { padding-right: clamp(10px, 1.6vw, 24px); }
.about-page__step-num { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 10px; font-family: var(--font-display); font-size: 1.7rem; color: var(--basalt); }
.about-page__step-num::after { content: ""; flex: 1; height: 1px; background: var(--leaf); opacity: .5; order: 1; }
.about-page__step-icon { order: 2; display: grid; color: var(--green-800); }
.about-page__step-icon .icon { width: 24px; height: 24px; stroke-width: 1.3; }
.about-page__step-title { margin: 0 0 8px; font-family: var(--font-text); font-size: .86rem; font-weight: 500; letter-spacing: .16em; text-transform: uppercase; color: var(--basalt); }
.about-page__step-text { margin: 0; font-size: .94rem; line-height: 1.6; color: var(--muted); }

/* ---- who we help ---- */
.about-page__who-section { background: #FFFFFF; }
@media (min-width: 1000px) { .about-page__who-grid { grid-template-columns: minmax(0, 30fr) minmax(0, 70fr); } }
.about-page__who { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 0; margin: 0; padding: 0; list-style: none; }
@media (min-width: 900px) { .about-page__who { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; } }
.about-page__who li { padding: 0 clamp(12px, 1.6vw, 22px); }
.about-page__who li:first-child { padding-left: 0; }
@media (min-width: 900px) { .about-page__who li + li { border-left: 1px solid var(--leaf-line-light); } }
.about-page__who-icon { display: grid; margin-bottom: 12px; color: var(--green-800); transition: transform .25s ease; }
.about-page__who-icon .icon { width: 30px; height: 30px; stroke-width: 1.3; }
.about-page__who li:hover .about-page__who-icon { transform: translateY(-2px); }
.about-page__who h3 { margin: 0 0 6px; font-family: var(--font-text); font-size: .84rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--basalt); }
.about-page__who p { margin: 0; font-size: .92rem; line-height: 1.55; color: var(--muted); }

/* ---- talk to us ---- */
.about-page__talk { background: #0D2F23; color: #F4F6F3; }
.about-page__talk-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(26px, 3vw, 50px); align-items: center; }
@media (min-width: 1000px) { .about-page__talk-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.about-page__talk-text { margin: 0 0 12px; max-width: 34rem; line-height: 1.6; color: #D6DED8; }
.about-page__rera { margin: 0; font-size: .82rem; color: #B8C4BC; }
.about-page__contacts { display: grid; gap: 16px; margin: 0 0 22px; padding: 0; list-style: none; }
.about-page__contacts a, .about-page__address { display: flex; align-items: flex-start; gap: 14px; color: #F4F6F3; text-decoration: none; transition: color .25s ease; }
.about-page__contacts .icon { flex: none; width: 24px; height: 24px; margin-top: 2px; stroke-width: 1.6; color: var(--leaf); }
.about-page__contacts strong { display: block; font-weight: 500; }
.about-page__contacts strong + span { display: block; margin-top: 2px; font-size: .82rem; color: var(--leaf); }
.about-page__contacts a:hover { color: #FFFFFF; }
.about-page__cta { position: relative; display: flex; align-items: center; justify-content: center; width: 100%; max-width: 24rem; min-height: 50px; padding: 12px 64px 12px 24px; border: 0; border-radius: 3px; background: var(--accent); color: #FFFFFF; font: inherit; font-weight: 500; cursor: pointer; transition: background-color .3s ease; }
.about-page__cta-arrow { position: absolute; top: 0; right: 0; bottom: 0; display: grid; place-items: center; width: 52px; background: var(--leaf); color: var(--green-900); transition: background-color .3s ease; }
.about-page__cta-arrow .icon { width: 18px; height: 18px; }
.about-page__cta:hover { background: var(--green-800); }
.about-page__cta:hover .about-page__cta-arrow { background: var(--leaf-ink); }
.about-page__cta:focus-visible, .about-page__contacts a:focus-visible, .about-page__all:focus-visible { outline: 2px solid var(--leaf); outline-offset: 3px; }

/* ---- projects ---- */
.about-page__projects { background: #F4F6F3; }
.about-page__projects-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px 32px; margin-bottom: clamp(20px, 2.4vw, 30px); }
.about-page__all { display: inline-flex; align-items: center; gap: 10px; padding-bottom: 3px; border-bottom: 1px solid var(--leaf); color: var(--green-800); font-weight: 500; text-decoration: none; }
.about-page__all .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.about-page__all:hover .icon { transform: translateX(4px); }
.about-page__rail { gap: 24px; scrollbar-width: none; }
.about-page__rail::-webkit-scrollbar { display: none; }
.about-page__projects-foot { display: flex; align-items: center; gap: 16px; margin-top: 18px; }
.about-page__projects-count { margin: 0; font-size: .84rem; letter-spacing: .12em; font-variant-numeric: tabular-nums; color: var(--muted); }
.about-page__projects-bar { position: relative; flex: 1; max-width: 300px; height: 1px; background: rgba(18, 63, 50, .2); }
.about-page__projects-bar > span { position: absolute; left: 0; top: -.5px; height: 2px; width: 0; background: var(--leaf); transition: width .3s ease; }
.about-page__projects-foot .rail-controls { margin: 0; }

@media (prefers-reduced-motion: reduce) { .about-page__cta, .about-page__cta-arrow, .about-page__who-icon, .about-page__all .icon { transition: none; } }


/* ---- About page: the two photographs from the reference ---- */
.about-page__head { position: relative; overflow: hidden; }
.about-page__head-photo { display: none; }
@media (min-width: 1100px) {
  .about-page__head { padding-right: 0; }
  .about-page__head-photo { display: block; position: absolute; top: 0; right: 0; bottom: 0; width: clamp(180px, 20vw, 300px); }
  .about-page__head-photo img { width: 100%; height: 100%; object-fit: cover; }
  .about-page__head-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, #F4F6F3 0%, rgba(244, 246, 243, 0) 45%); }
  .about-page__head-grid { padding-right: clamp(200px, 22vw, 330px); }
}
.about-page__talk { position: relative; overflow: hidden; }
.about-page__talk-photo { display: none; }
@media (min-width: 1100px) {
  .about-page__talk-photo { display: block; position: absolute; top: 0; right: 0; bottom: 0; width: 34%; z-index: 0; }
  .about-page__talk-photo img { width: 100%; height: 100%; object-fit: cover; }
  .about-page__talk-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, #0D2F23 0%, rgba(13, 47, 35, .72) 42%, rgba(13, 47, 35, .55) 100%); }
  .about-page__talk-grid { position: relative; z-index: 1; padding-right: clamp(20px, 6vw, 90px); }
}


/* ==========================================================================
   Contact page — cinematic hero, details + form, quick strip, map, questions
   The form inside .contact-page__form-card is the shared component; only its look is set.
   ========================================================================== */
.contact-page__hero { position: relative; isolation: isolate; overflow: hidden; min-height: clamp(380px, 46vw, 560px); display: flex; align-items: center; padding-block: clamp(40px, 5vw, 70px); color: #F4F6F3; background: #0B2F22; }
.contact-page__hero-media { position: absolute; inset: 0; z-index: -1; }
.contact-page__hero-media img { width: 100%; height: 100%; object-fit: cover; }
.contact-page__hero-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(7, 43, 30, .92) 0%, rgba(7, 43, 30, .78) 45%, rgba(7, 43, 30, .45) 100%); }
.contact-page__crumbs { margin-bottom: 20px; font-size: .84rem; color: rgba(244, 246, 243, .78); }
.contact-page__crumbs a { color: inherit; text-decoration: none; }
.contact-page__crumbs a:hover { color: var(--leaf); }
.contact-page__title { margin: 0 0 14px; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.6rem, 1.6rem + 3.6vw, 4.6rem); line-height: 1.02; color: #F4F6F3; }
.contact-page__title::after { content: ""; display: block; width: 90px; height: 2px; margin-top: 16px; background: var(--leaf); }
.contact-page__lede { margin: 0 0 26px; max-width: 34rem; font-size: clamp(1rem, .95rem + .2vw, 1.12rem); line-height: 1.6; color: #D6DED8; }
.contact-page__trust { display: flex; flex-wrap: wrap; gap: 18px clamp(22px, 3vw, 44px); margin: 0; padding: 0; list-style: none; }
.contact-page__trust li { display: flex; align-items: center; gap: 12px; }
.contact-page__trust .icon { width: 26px; height: 26px; stroke-width: 1.5; color: var(--leaf); }
.contact-page__trust strong { display: block; font-weight: 500; font-size: .86rem; color: #F4F6F3; }
.contact-page__trust strong + span { display: block; font-size: .76rem; color: #B8C4BC; }

/* ---- details + form ---- */
.contact-page__main { background: #FFFFFF; }
.contact-page__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(28px, 3.4vw, 56px); align-items: start; }
@media (min-width: 1000px) { .contact-page__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.contact-page__eyebrow { display: flex; align-items: center; gap: 16px; margin: 0 0 12px; font-size: .74rem; letter-spacing: .32em; text-transform: uppercase; color: var(--basalt-2); }
.contact-page__eyebrow::before { content: ""; width: 44px; height: 1px; background: var(--leaf); }
.contact-page__eyebrow--light { color: rgba(244, 246, 243, .86); }
.contact-page__h2 { margin: 0 0 16px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.9rem, 1.2rem + 2.2vw, 3rem); line-height: 1.06; color: var(--basalt); }
.contact-page__h2--light { color: #F4F6F3; }
.contact-page__text { margin: 0 0 26px; max-width: 34rem; line-height: 1.65; color: var(--text); }
.contact-page__details { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.contact-page__details li { display: flex; align-items: flex-start; gap: 16px; padding: 18px 0; border-top: 1px solid var(--leaf-line-light); }
.contact-page__details li:last-child { border-bottom: 1px solid var(--leaf-line-light); }
.contact-page__icon { display: grid; place-items: center; flex: none; width: 44px; height: 44px; border-radius: 50%; background: #EFF6E4; color: var(--green-800); }
.contact-page__icon .icon { width: 22px; height: 22px; stroke-width: 1.5; }
.contact-page__label { margin: 0 0 2px; font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.contact-page__details a, .contact-page__value, .contact-page__details address { font-size: 1.05rem; color: var(--basalt); text-decoration: none; font-style: normal; margin: 0; }
.contact-page__details a:hover { color: var(--accent); }
.contact-page__sub { margin: 3px 0 0; font-size: .82rem; color: var(--muted); }

.contact-page__form-card { padding: clamp(22px, 2.6vw, 36px); border: 1px solid rgba(18, 63, 50, .15); border-radius: 4px; background: #F4F6F3; }
.contact-page__form-title { margin: 0 0 8px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.6rem, 1.2rem + 1.2vw, 2.2rem); color: var(--basalt); }
.contact-page__form-text { margin: 0 0 22px; font-size: .95rem; line-height: 1.6; color: var(--muted); }
.contact-page__form-card .field label, .contact-page__form-card .field-label { font-size: .82rem; font-weight: 500; color: var(--green-800); }
.contact-page__form-card .field input, .contact-page__form-card .field select, .contact-page__form-card .field textarea { min-height: 54px; border: 1px solid #CBD5CF; border-radius: 3px; background: #FFFFFF; color: var(--basalt); }
.contact-page__form-card .field textarea { min-height: 130px; resize: vertical; }
.contact-page__form-card .field input::placeholder, .contact-page__form-card .field textarea::placeholder { color: #8A9690; }
.contact-page__form-card .field input:focus, .contact-page__form-card .field select:focus, .contact-page__form-card .field textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(124, 203, 99, .3); }
.contact-page__form-card .field-check { margin: 6px 0 18px; font-size: .8rem; color: #5F6B65; }
.contact-page__form-card .field-check input { width: 18px; height: 18px; accent-color: var(--accent); }
.contact-page__form-card .btn[type="submit"] { position: relative; width: 100%; min-height: 54px; padding: 12px 60px 12px 24px; border: 0; border-radius: 3px; background: var(--accent); color: #FFFFFF; font-weight: 500; transition: background-color .3s ease; }
.contact-page__form-card .btn[type="submit"]::after { content: "→"; position: absolute; top: 0; right: 0; bottom: 0; width: 52px; display: grid; place-items: center; background: var(--leaf); color: var(--green-900); font-size: 1.15rem; }
.contact-page__form-card .btn[type="submit"]:hover { background: var(--green-800); }

/* ---- four ways we help ---- */
.contact-page__quick { background: #F4F6F3; border-block: 1px solid rgba(18, 63, 50, .12); padding-block: clamp(26px, 3vw, 42px); }
.contact-page__quick-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 0; margin: 0; padding-inline: var(--gutter); list-style: none; }
@media (min-width: 1000px) { .contact-page__quick-row { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; } }
.contact-page__quick-row li { padding: 0 clamp(12px, 1.8vw, 26px); }
.contact-page__quick-row li:first-child { padding-left: 0; }
@media (min-width: 1000px) { .contact-page__quick-row li + li { border-left: 1px solid rgba(18, 63, 50, .12); } }
.contact-page__quick-icon { display: grid; margin-bottom: 12px; color: var(--accent); transition: color .25s ease, transform .25s ease; }
.contact-page__quick-icon .icon { width: 30px; height: 30px; stroke-width: 1.3; }
.contact-page__quick-row li:hover .contact-page__quick-icon { color: var(--green-800); transform: translateY(-2px); }
.contact-page__quick-title { margin: 0 0 6px; font-family: var(--font-text); font-size: 1rem; font-weight: 500; color: var(--basalt); }
.contact-page__quick-row p { margin: 0; font-size: .9rem; line-height: 1.55; color: var(--muted); }

/* ---- location ---- */
.contact-page__location { background: #FFFFFF; }
.contact-page__location-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(24px, 3vw, 48px); align-items: center; }
@media (min-width: 1000px) { .contact-page__location-grid { grid-template-columns: minmax(0, 36fr) minmax(0, 64fr); } }
.contact-page__map { margin: 0; border: 1px solid rgba(18, 63, 50, .25); border-radius: 4px; overflow: hidden; }
.contact-page__cta { display: inline-flex; align-items: center; gap: 12px; min-height: 50px; padding: 0 24px; border: 1px solid var(--green-800); border-radius: 3px; background: var(--green-800); color: #FFFFFF; font-weight: 500; text-decoration: none; cursor: pointer; transition: background-color .3s ease, color .3s ease; }
.contact-page__cta .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.contact-page__cta:hover { background: var(--accent); border-color: var(--accent); }
.contact-page__cta:hover .icon { transform: translateX(4px); }
.contact-page__cta--ghost { background: transparent; color: var(--green-800); }
.contact-page__cta--ghost:hover { background: var(--green-800); color: #FFFFFF; }
.contact-page__cta:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

/* ---- questions ---- */
.contact-page__faq { background: #0D2F23; color: #F4F6F3; }
.contact-page__faq-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(26px, 3vw, 52px); align-items: start; }
@media (min-width: 1000px) { .contact-page__faq-grid { grid-template-columns: minmax(0, 38fr) minmax(0, 62fr); } }
.contact-page__faq-text { margin: 0 0 18px; max-width: 30rem; line-height: 1.6; color: #D6DED8; }
.contact-page__faq-link { display: inline-flex; align-items: center; gap: 10px; padding-bottom: 3px; border-bottom: 1px solid var(--leaf); color: var(--leaf); text-decoration: none; }
.contact-page__faq-link .icon { width: 18px; height: 18px; transition: transform .3s ease; }
.contact-page__faq-link:hover .icon { transform: translateX(4px); }
.contact-page__faq-item { border-top: 1px solid rgba(244, 246, 243, .18); }
.contact-page__faq-item:last-child { border-bottom: 1px solid rgba(244, 246, 243, .18); }
.contact-page__faq-item summary { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 18px 0; cursor: pointer; list-style: none; }
.contact-page__faq-item summary::-webkit-details-marker { display: none; }
.contact-page__faq-item h3 { margin: 0; font-family: var(--font-text); font-size: clamp(1rem, .95rem + .25vw, 1.12rem); font-weight: 400; line-height: 1.4; color: #F4F6F3; transition: color .25s ease; }
.contact-page__faq-item summary:hover h3 { color: var(--leaf); }
.contact-page__sign { position: relative; flex: none; width: 18px; height: 18px; color: var(--leaf); }
.contact-page__sign::before, .contact-page__sign::after { content: ""; position: absolute; inset: 50% 0 auto; height: 1.5px; background: currentColor; transform: translateY(-50%); transition: transform .3s ease; }
.contact-page__sign::after { transform: translateY(-50%) rotate(90deg); }
.contact-page__faq-item[open] .contact-page__sign::after { transform: translateY(-50%) rotate(0deg); }
.contact-page__faq-answer { padding: 0 0 20px; max-width: 60rem; color: #D6DED8; }
.contact-page__faq-answer a { color: var(--leaf); }
.contact-page__faq-item summary:focus-visible { outline: 2px solid var(--leaf); outline-offset: -3px; }
@media (prefers-reduced-motion: reduce) { .contact-page__cta, .contact-page__cta .icon, .contact-page__quick-icon, .contact-page__sign::before, .contact-page__sign::after { transition: none; } }


/* ==========================================================================
   Project page — cinematic hero and sticky section nav
   CSS only: the markup, the form, the schema and the SEO are untouched.
   ========================================================================== */
.project-hero { min-height: clamp(560px, 68vh, 760px); }
/* dark green wash from the left, so the photograph stays visible on the right */
.project-hero .hero-shade { background:
  linear-gradient(90deg, rgba(7, 43, 30, .92) 0%, rgba(7, 43, 30, .74) 42%, rgba(7, 43, 30, .32) 100%),
  linear-gradient(180deg, rgba(7, 43, 30, .55) 0%, rgba(7, 43, 30, 0) 30%, rgba(7, 43, 30, .55) 100%); }
.project-hero .hero-frame { border-color: rgba(124, 203, 99, .4); }
.project-hero .project-title { font-weight: 400; font-size: clamp(2.4rem, 1.5rem + 3.4vw, 4.4rem); line-height: 1.02; }
.project-hero .kicker--light { letter-spacing: .28em; text-transform: uppercase; font-size: .76rem; color: var(--leaf); }
.project-hero .project-loc .icon { color: var(--leaf); }
/* rectangular buttons, never pills */
.project-hero .hero-actions .btn { min-height: 50px; border-radius: 3px; }
.project-hero .hero-actions .btn-outline-light { border-color: var(--leaf); color: #F4F6F3; }
.project-hero .hero-actions .btn-outline-light .icon { color: var(--leaf); }
.project-hero .hero-actions .btn-outline-light:hover { background: var(--leaf); border-color: var(--leaf); color: var(--green-900); }
.project-hero .hero-actions .btn-outline-light:hover .icon { color: var(--green-900); }

/* the enquiry panel on the right */
.project-hero .hero-form { background: rgba(13, 47, 35, .95); border: 1px solid rgba(124, 203, 99, .35); border-top: 1px solid rgba(124, 203, 99, .35); border-radius: 4px; backdrop-filter: blur(8px); }
.project-hero .hero-form-title { font-family: var(--font-display); font-size: 1.5rem; color: #F4F6F3; }
.project-hero .hero-form-text { color: #C2CDC6; }
.project-hero .hero-form .field label { color: #D6DED8; }
.project-hero .hero-form .field input, .project-hero .hero-form .field select, .project-hero .hero-form .field textarea {
  min-height: 46px; border: 1px solid rgba(124, 203, 99, .3); border-radius: 3px; background: rgba(255, 255, 255, .06); color: #F4F6F3; }
.project-hero .hero-form .field input::placeholder { color: #9FB0A6; }
.project-hero .hero-form .field input:focus, .project-hero .hero-form .field select:focus {
  border-color: var(--leaf); box-shadow: 0 0 0 2px rgba(124, 203, 99, .25); }
.project-hero .hero-form .field-check { color: #B8C4BC; }
.project-hero .hero-form .field-check input { accent-color: var(--leaf); }
.project-hero .hero-form .btn[type="submit"] { position: relative; width: 100%; min-height: 50px; padding: 12px 58px 12px 22px; border: 0; border-radius: 3px; background: var(--accent); color: #FFFFFF; font-weight: 500; transition: background-color .3s ease; }
.project-hero .hero-form .btn[type="submit"]::after { content: "→"; position: absolute; top: 0; right: 0; bottom: 0; width: 48px; display: grid; place-items: center; background: var(--leaf); color: var(--green-900); font-size: 1.1rem; }
.project-hero .hero-form .btn[type="submit"]:hover { background: var(--green-800); }

/* sticky section nav under the hero */
.subnav { background: rgba(244, 246, 243, .96); backdrop-filter: blur(8px); border-bottom: 1px solid rgba(18, 63, 50, .12); }
.subnav a { color: var(--muted); letter-spacing: .02em; }
.subnav a:hover { color: var(--green-800); border-color: var(--leaf); }
.subnav a.is-current { color: var(--green-800); border-color: var(--leaf); }
@media (max-width: 767px) {
  .project-hero { min-height: clamp(520px, 78vh, 640px); }
  .project-hero .hero-form { margin-top: 20px; }
}
@media (prefers-reduced-motion: reduce) { .project-hero .hero-form .btn[type="submit"] { transition: none; } }


/* ---- Project page: hero primary button and the overview facts grid ---- */
.project-hero .hero-actions .btn-accent { background: var(--accent); border-color: var(--accent); color: #FFFFFF; }
.project-hero .hero-actions .btn-accent .icon { color: var(--leaf); transition: transform .3s ease; }
.project-hero .hero-actions .btn-accent:hover { background: var(--green-800); border-color: var(--green-800); }
.project-hero .hero-actions .btn-accent:hover .icon { transform: translateX(4px); }

.project-main .fact-table { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 0; border-top: 1px solid rgba(18, 63, 50, .14); border-left: 1px solid rgba(18, 63, 50, .14); border-radius: 4px; overflow: hidden; margin-top: 26px; }
.project-main .fact-table div { padding: 18px 20px; border-right: 1px solid rgba(18, 63, 50, .14); border-bottom: 1px solid rgba(18, 63, 50, .14); background: #FBFAF6; }
.project-main .fact-table dt { font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.project-main .fact-table dd { margin: 6px 0 0; font-size: 1.02rem; font-weight: 500; line-height: 1.35; color: var(--green-800); overflow-wrap: break-word; }
.project-main .block > h2 { font-family: var(--font-display); font-weight: 400; font-size: clamp(1.9rem, 1.2rem + 2.2vw, 3rem); line-height: 1.06; }
.project-main .block > h2::after { background: var(--leaf); width: 56px; }
@media (prefers-reduced-motion: reduce) { .project-hero .hero-actions .btn-accent .icon { transition: none; } }


/* ---- Project page: highlights as dark numbered cards (CSS only) ---- */
.project-main #highlights { position: relative; margin: clamp(30px, 3.6vw, 48px) 0; padding: clamp(28px, 3.4vw, 52px) clamp(20px, 2.6vw, 40px); border: 0; border-radius: 14px; background: #0A1712; color: #F5F1E8; }
.project-main #highlights > h2 { color: #F5F1E8; }
.project-main #highlights > h2::after { background: var(--leaf); }
.project-main #highlights .block-intro { color: #B8C4BC; }
.project-main #highlights .feature-cards { counter-reset: hl; gap: clamp(16px, 1.8vw, 24px); }
.project-main #highlights .feature-card { counter-increment: hl; position: relative; align-items: flex-start; text-align: left; padding: clamp(20px, 2.2vw, 28px); border: 1px solid rgba(255, 255, 255, .12); border-right: 1px solid rgba(255, 255, 255, .12); border-radius: 20px; background: rgba(255, 255, 255, .025); transition: transform .3s ease, border-color .3s ease, background-color .3s ease; }
.project-main #highlights .feature-card::before { content: counter(hl, decimal-leading-zero); display: grid; place-items: center; width: 44px; height: 34px; margin-bottom: 14px; border-radius: 6px; background: var(--leaf); color: var(--green-900); font-family: var(--font-text); font-weight: 600; font-size: .95rem; }
.project-main #highlights .feature-media { width: auto; height: auto; margin: 0 0 12px; place-items: start; }
.project-main #highlights .feature-glyph { width: 34px; height: 34px; color: var(--leaf); stroke-width: 1.3; }
.project-main #highlights .feature-img { width: 56px; height: 56px; }
.project-main #highlights .feature-title { font-family: var(--font-display); font-weight: 400; font-size: clamp(1.1rem, 1rem + .4vw, 1.35rem); line-height: 1.2; color: var(--leaf); }
.project-main #highlights .feature-text { max-width: none; font-size: .92rem; line-height: 1.6; color: #C2CDC6; }
.project-main #highlights .feature-card:hover { transform: translateY(-5px); border-color: rgba(124, 203, 99, .45); background: rgba(124, 203, 99, .06); }
@media (max-width: 719px) { .project-main #highlights .feature-card:nth-child(odd) { border-right: 1px solid rgba(255, 255, 255, .12); } }
@media (prefers-reduced-motion: reduce) { .project-main #highlights .feature-card { transition: none; } .project-main #highlights .feature-card:hover { transform: none; } }


/* ---- Project page: configurations as editorial rows (CSS only) ----
   The table stays a table for screen readers; on a wide screen each row reads
   as a card, and on a phone the head row is dropped and each cell is labelled. */
.project-main #configurations .table-wrap { border: 1px solid rgba(18, 63, 50, .15); border-radius: 6px; background: #F4F6F3; overflow: hidden; }
.project-main #configurations .data-table { width: 100%; border-collapse: collapse; }
.project-main #configurations .data-table thead th { padding: 14px 22px; background: rgba(18, 63, 50, .05); font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); border-bottom: 1px solid rgba(18, 63, 50, .15); }
.project-main #configurations .data-table tbody tr + tr { border-top: 1px solid rgba(18, 63, 50, .12); }
.project-main #configurations .data-table tbody tr { transition: background-color .25s ease; }
.project-main #configurations .data-table tbody tr:hover { background: rgba(124, 203, 99, .07); }
.project-main #configurations .data-table td, .project-main #configurations .data-table tbody th { padding: 20px 22px; border-bottom: 0; vertical-align: middle; }
.project-main #configurations .data-table tbody th { font-family: var(--font-display); font-weight: 400; font-size: clamp(1.15rem, 1rem + .5vw, 1.45rem); color: var(--basalt); }
.project-main #configurations .data-table td { font-size: 1rem; color: var(--text); }
.project-main #configurations .link-btn { display: inline-flex; align-items: center; gap: 8px; padding-bottom: 2px; border-bottom: 1px solid var(--leaf); color: var(--green-800); font-weight: 500; text-decoration: none; }
.project-main #configurations .link-btn::after { content: "→"; color: var(--leaf); transition: transform .3s ease; }
.project-main #configurations .link-btn:hover { color: var(--accent); }
.project-main #configurations .link-btn:hover::after { transform: translateX(4px); }
@media (max-width: 719px) {
  .project-main #configurations .data-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .project-main #configurations .data-table tbody tr { display: grid; gap: 4px; padding: 16px 18px; }
  .project-main #configurations .data-table td, .project-main #configurations .data-table tbody th { padding: 0; }
  .project-main #configurations .data-table td:empty { display: none; }
}
@media (prefers-reduced-motion: reduce) { .project-main #configurations .data-table tbody tr, .project-main #configurations .link-btn::after { transition: none; } }


/* ---- Project page: amenities slider (green theme) ---- */
.project-main #amenities { margin: clamp(30px, 3.6vw, 48px) 0; padding: clamp(26px, 3.2vw, 46px) clamp(20px, 2.6vw, 36px); border: 0; border-radius: 14px; background: #0D2F23; color: #F5F1E8; }
.project-main #amenities > h2 { color: #F5F1E8; }
.project-main #amenities > h2::after { background: var(--leaf); }
.project-main #amenities .block-intro { color: #B8C4BC; }
.project-amenities { position: relative; }
.project-amenities__stage { position: relative; border: 1px solid rgba(124, 203, 99, .28); border-radius: 10px; overflow: hidden; background: #123F32; }
.project-amenities__slide { display: none; }
.project-amenities__slide.is-active { display: grid; animation: amFade .6s ease-out both; }
@keyframes amFade { from { opacity: 0; transform: translateX(14px); } to { opacity: 1; transform: none; } }
.project-amenities__photo { position: relative; display: grid; place-items: center; min-height: 230px; background: #0A1712; }
.project-amenities__photo img { width: 100%; height: 100%; object-fit: cover; }
.project-amenities__photo-icon .icon { width: 64px; height: 64px; color: rgba(124, 203, 99, .5); }
.project-amenities__panel { padding: clamp(20px, 2.6vw, 38px); }
.project-amenities__count { display: flex; align-items: center; gap: 14px; margin: 0 0 20px; font-size: .84rem; letter-spacing: .14em; font-variant-numeric: tabular-nums; color: #D6DED8; }
.project-amenities__bar { position: relative; flex: 1; height: 2px; background: rgba(255, 255, 255, .25); }
.project-amenities__bar > span { position: absolute; left: 0; top: 0; height: 2px; background: var(--leaf); transition: width .5s ease; }
.project-amenities__icon { display: grid; place-items: center; width: 54px; height: 54px; margin-bottom: 16px; border: 1px solid rgba(124, 203, 99, .5); border-radius: 8px; color: var(--leaf); }
.project-amenities__icon .icon { width: 26px; height: 26px; stroke-width: 1.4; }
.project-amenities__title { margin: 0 0 12px; font-family: var(--font-display); font-weight: 400; font-size: clamp(1.9rem, 1.3rem + 1.8vw, 3rem); line-height: 1.05; color: #F5F1E8; }
.project-amenities__text { margin: 0 0 22px; max-width: 34rem; font-size: 1rem; line-height: 1.6; color: #C2CDC6; }
.project-amenities__cta { display: inline-flex; align-items: center; gap: 12px; min-height: 48px; padding: 0 22px; border: 1px solid var(--leaf); border-radius: 3px; background: transparent; color: #F5F1E8; font: inherit; font-weight: 500; cursor: pointer; transition: background-color .3s ease, color .3s ease; }
.project-amenities__cta .icon { width: 18px; height: 18px; color: var(--leaf); transition: transform .3s ease, color .3s ease; }
.project-amenities__cta:hover { background: var(--leaf); color: var(--green-900); }
.project-amenities__cta:hover .icon { color: var(--green-900); transform: translateX(4px); }
.project-amenities__arrow { position: absolute; top: 50%; z-index: 2; display: grid; place-items: center; width: 46px; height: 46px; transform: translateY(-50%); border: 1px solid rgba(255, 255, 255, .65); border-radius: 50%; background: rgba(10, 23, 18, .35); color: #FFFFFF; cursor: pointer; transition: border-color .3s ease, color .3s ease, background-color .3s ease; }
.project-amenities__arrow--prev { left: 14px; } .project-amenities__arrow--next { right: 14px; }
.project-amenities__arrow .icon { width: 18px; height: 18px; }
.project-amenities__arrow:hover { border-color: var(--leaf); color: var(--leaf); background: rgba(124, 203, 99, .12); }
.project-amenities__arrow:focus-visible, .project-amenities__cta:focus-visible, .project-amenities__nav-item:focus-visible { outline: 2px solid var(--leaf); outline-offset: 3px; }
.project-amenities__nav { display: flex; gap: 0; margin: 18px 0 0; padding: 0; list-style: none; overflow-x: auto; scrollbar-width: none; border-top: 1px solid rgba(255, 255, 255, .14); }
.project-amenities__nav::-webkit-scrollbar { display: none; }
.project-amenities__nav li { flex: 1 0 auto; }
.project-amenities__nav-item { display: flex; flex-direction: column; align-items: center; gap: 8px; width: 100%; min-width: 118px; padding: 16px 14px; border: 0; border-bottom: 2px solid transparent; background: none; color: #B8C4BC; font: inherit; font-size: .84rem; text-align: center; cursor: pointer; transition: color .25s ease, border-color .25s ease; }
.project-amenities__nav-item .icon { width: 26px; height: 26px; stroke-width: 1.4; color: currentColor; }
.project-amenities__nav-item:hover { color: #F5F1E8; }
.project-amenities__nav-item.is-active { color: var(--leaf); border-bottom-color: var(--leaf); }
@media (min-width: 1000px) {
  .project-amenities__slide.is-active { grid-template-columns: minmax(0, 63fr) minmax(0, 37fr); }
  .project-amenities__photo { min-height: 460px; }
  .project-amenities__panel { display: flex; flex-direction: column; justify-content: center; }
}
@media (max-width: 999px) { .project-amenities__photo { aspect-ratio: 4 / 3; } }
@media (prefers-reduced-motion: reduce) { .project-amenities__slide.is-active { animation: none; } .project-amenities__cta, .project-amenities__cta .icon, .project-amenities__arrow, .project-amenities__nav-item { transition: none; } }


/* ---- Project page: editorial gallery (CSS only; the existing lightbox stays) ---- */
.project-main #gallery { margin: clamp(30px, 3.6vw, 48px) 0; }
.project-main #gallery .gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.project-main #gallery .gallery li { margin: 0; }
.project-main #gallery .gallery-lead { grid-column: 1 / -1; }
@media (min-width: 900px) {
  .project-main #gallery .gallery { grid-template-columns: minmax(0, 58fr) minmax(0, 21fr) minmax(0, 21fr); grid-auto-rows: 1fr; }
  .project-main #gallery .gallery-lead { grid-column: 1; grid-row: 1 / span 2; }
}
.project-main #gallery .gallery-item { position: relative; width: 100%; height: 100%; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 4px; background: var(--surface-dark); }
.project-main #gallery .gallery-lead .gallery-item { aspect-ratio: 16 / 10; }
.project-main #gallery .gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
/* a soft green veil and a prompt, only on hover or keyboard focus */
.project-main #gallery .gallery-item::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(13, 47, 35, 0) 40%, rgba(13, 47, 35, .55) 100%); opacity: 0; transition: opacity .4s ease; }
.project-main #gallery .gallery-item::after { content: "View image →"; position: absolute; left: 16px; bottom: 14px; font-size: .82rem; letter-spacing: .08em; color: var(--leaf); opacity: 0; transform: translateY(6px); transition: opacity .4s ease, transform .4s ease; }
.project-main #gallery .gallery-item:hover img, .project-main #gallery .gallery-item:focus-visible img { transform: scale(1.03); }
.project-main #gallery .gallery-item:hover::before, .project-main #gallery .gallery-item:hover::after,
.project-main #gallery .gallery-item:focus-visible::before, .project-main #gallery .gallery-item:focus-visible::after { opacity: 1; transform: none; }
.project-main #gallery .gallery-item:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.project-main #gallery .gallery-caption { margin: 8px 2px 0; font-size: .82rem; color: var(--muted); }
@media (prefers-reduced-motion: reduce) {
  .project-main #gallery .gallery-item img, .project-main #gallery .gallery-item::before, .project-main #gallery .gallery-item::after { transition: none; }
  .project-main #gallery .gallery-item:hover img { transform: none; }
}


/* ---- Project page: enquiry block and related projects (CSS only) ---- */
.project-cta { background: #0D2F23; border-block: 0; }
.project-cta .project-cta-grid { align-items: center; gap: clamp(28px, 3.4vw, 56px); }
.project-cta h2 { font-family: var(--font-display); font-weight: 400; font-size: clamp(1.9rem, 1.2rem + 2.2vw, 3rem); line-height: 1.06; color: #F5F1E8; }
.project-cta h2::after { content: ""; display: block; width: 62px; height: 2px; margin-top: 16px; background: var(--leaf); }
.project-cta > .wrap > div > p { color: #C2CDC6; max-width: 34rem; }
.project-cta .closing-contacts { gap: 16px; margin-top: 24px; }
.project-cta .closing-contacts a { gap: 14px; font-size: 1.02rem; color: #F5F1E8; transition: color .25s ease; }
.project-cta .closing-contacts .icon { width: 24px; height: 24px; stroke-width: 1.6; color: var(--leaf); }
.project-cta .closing-contacts a:hover { color: var(--leaf); }
/* the form card: cream, rectangular fields, rectangular submit with an arrow block */
.project-cta .closing-form { padding: clamp(22px, 2.6vw, 34px); border: 1px solid rgba(18, 63, 50, .15); border-radius: 5px; background: #F4F6F3; }
.project-cta .closing-form .field label, .project-cta .closing-form .field-label { font-size: .82rem; font-weight: 500; color: var(--green-800); }
.project-cta .closing-form .field input, .project-cta .closing-form .field select, .project-cta .closing-form .field textarea {
  min-height: 52px; border: 1px solid #CBD5CF; border-radius: 3px; background: #FFFFFF; color: var(--basalt); }
.project-cta .closing-form .field textarea { min-height: 120px; }
.project-cta .closing-form .field input::placeholder, .project-cta .closing-form .field textarea::placeholder { color: #8A9690; }
.project-cta .closing-form .field input:focus, .project-cta .closing-form .field select:focus, .project-cta .closing-form .field textarea:focus {
  border-color: var(--accent); box-shadow: 0 0 0 2px rgba(124, 203, 99, .3); }
.project-cta .closing-form .field-check { font-size: .8rem; color: #5F6B65; }
.project-cta .closing-form .field-check input { width: 18px; height: 18px; accent-color: var(--accent); }
.project-cta .closing-form .btn[type="submit"] { position: relative; width: 100%; min-height: 52px; padding: 12px 60px 12px 24px; border: 0; border-radius: 3px; background: var(--accent); color: #FFFFFF; font-weight: 500; transition: background-color .3s ease; }
.project-cta .closing-form .btn[type="submit"]::after { content: "→"; position: absolute; top: 0; right: 0; bottom: 0; width: 52px; display: grid; place-items: center; background: var(--leaf); color: var(--green-900); font-size: 1.15rem; }
.project-cta .closing-form .btn[type="submit"]:hover { background: var(--green-800); }

/* related projects, the section right after the enquiry block */
.project-cta + .section { background: #FFFFFF; }
.project-cta + .section .section-head h2 { font-family: var(--font-display); font-weight: 400; font-size: clamp(1.8rem, 1.2rem + 1.8vw, 2.6rem); }
.project-cta + .section .section-head .text-link { color: var(--green-800); border-bottom: 1px solid var(--leaf); text-decoration: none; padding-bottom: 2px; }
.project-cta + .section .section-head .text-link:hover { color: var(--accent); }
.project-cta + .section .project-card { border: 1px solid rgba(18, 63, 50, .1); border-radius: 12px; background: #FFFFFF; box-shadow: 0 12px 30px rgba(18, 63, 50, .05); transition: transform .3s ease, border-color .3s ease; }
.project-cta + .section .project-card:hover { transform: translateY(-4px); border-color: color-mix(in srgb, var(--accent) 34%, transparent); }
.project-cta + .section .project-card-media img { transition: transform .4s ease; }
.project-cta + .section .project-card:hover .project-card-media img { transform: scale(1.03); }
.project-cta + .section .project-card-body { padding: 18px 20px 20px; }
.project-cta + .section .project-card-title { font-size: clamp(1.2rem, 1.05rem + .5vw, 1.5rem); }
.project-cta + .section .project-card:hover .project-card-title a { color: var(--accent); }
.project-cta + .section .project-card-loc .icon { color: var(--accent); }
.project-cta + .section .project-card-foot { border-top: 1px solid var(--leaf-line-light); }
@media (prefers-reduced-motion: reduce) {
  .project-cta + .section .project-card, .project-cta + .section .project-card-media img, .project-cta .closing-form .btn[type="submit"] { transition: none; }
  .project-cta + .section .project-card:hover { transform: none; }
  .project-cta + .section .project-card:hover .project-card-media img { transform: none; }
}


/* ---- Project page: related projects as a carousel ---- */
.project-cta + .section .related-projects { position: relative; }
.project-cta + .section .related-projects__rail { gap: 22px; padding: 8px 2px 10px; margin: -8px -2px 0; grid-auto-columns: 88%; scrollbar-width: none; cursor: grab; }
.project-cta + .section .related-projects__rail::-webkit-scrollbar { display: none; }
.project-cta + .section .related-projects__rail.is-dragging { cursor: grabbing; scroll-snap-type: none; user-select: none; }
@media (min-width: 760px) { .project-cta + .section .related-projects__rail { grid-auto-columns: calc((100% - 22px) / 2); } }
@media (min-width: 1100px) { .project-cta + .section .related-projects__rail { grid-auto-columns: calc((100% - 44px) / 3); } }
.project-cta + .section .related-projects__progress { display: flex; align-items: center; gap: 16px; margin: 18px 0 0; font-size: .84rem; letter-spacing: .12em; font-variant-numeric: tabular-nums; color: var(--muted); }
.project-cta + .section .related-projects__bar { position: relative; flex: 1; max-width: 300px; height: 1px; background: rgba(18, 63, 50, .2); }
.project-cta + .section .related-projects__bar > span { position: absolute; left: 0; top: -.5px; height: 2px; width: 0; background: var(--leaf); transition: width .3s ease; }
.project-cta + .section .related-projects .rail-controls { margin-top: 14px; justify-content: flex-start; }
.project-cta + .section .related-projects .rail-btn { width: 42px; height: 42px; border: 1px solid rgba(18, 63, 50, .25); border-radius: 3px; color: var(--green-800); }
.project-cta + .section .related-projects .rail-btn:hover:not(:disabled) { background: var(--accent); border-color: var(--accent); color: #FFFFFF; }
.project-cta + .section .related-projects .project-card-media { overflow: hidden; }
/* the cards come from a component, so the rail's own children carry the snap */
.project-cta + .section .related-projects__rail > * { scroll-snap-align: start; min-width: 0; }
@media (prefers-reduced-motion: reduce) { .project-cta + .section .related-projects__bar > span { transition: none; } }

/* =====================================================================
   Project listing: multi-select filter bar  (views/components/project-filters.php)
   Within one filter the choices are OR-ed; different filters are AND-ed.
   Dropdowns are <details> so the bar works without JavaScript; site.js adds
   AJAX filtering, chips and the mobile drawer (it sets .pf--js).
   ===================================================================== */
.pf {
  --pf-green: #2F7F46;
  --pf-lime: #B8F36A;
  --pf-line: rgba(18, 63, 50, .18);
  --pf-line-strong: rgba(18, 63, 50, .34);
  --pf-cream: #FFFDF7;
  --pf-tint: #F3F8F1;
  --pf-focus: #CDEFA2;
  position: relative;
  margin-bottom: 26px;
}
.pf-bar { display: flex; gap: 10px; align-items: stretch; margin-bottom: 12px; }
.pf-search { position: relative; flex: 1 1 auto; min-width: 0; }
.pf-search .icon { position: absolute; left: 16px; top: 50%; width: 18px; height: 18px; transform: translateY(-50%); color: var(--muted); pointer-events: none; }
.pf-search input {
  width: 100%; min-height: 50px; padding: 12px 16px 12px 46px;
  font: inherit; font-size: 1rem; color: var(--basalt);
  background: #FFFFFF; border: 1px solid var(--pf-line); border-radius: 4px;
  transition: border-color .15s, box-shadow .15s;
}
.pf-search input::placeholder { color: var(--muted); }
.pf-search input:hover { border-color: var(--pf-line-strong); }
.pf-search input:focus { outline: none; border-color: var(--pf-green); box-shadow: 0 0 0 3px var(--pf-focus); }

/* ---- The row of dropdown buttons ---- */
.pf-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: stretch; }
.pf-dd { position: relative; }
.pf-dd > summary { list-style: none; }
.pf-dd > summary::-webkit-details-marker { display: none; }
.pf-dd-btn {
  display: flex; align-items: center; gap: 10px; min-height: 50px; padding: 6px 14px 6px 16px;
  background: #FFFFFF; border: 1px solid var(--pf-line); border-radius: 4px;
  cursor: pointer; user-select: none; white-space: nowrap;
  transition: border-color .15s, background-color .15s, box-shadow .15s;
}
.pf-dd-btn:hover { border-color: var(--pf-line-strong); }
.pf-dd-btn:focus-visible { outline: none; border-color: var(--pf-green); box-shadow: 0 0 0 3px var(--pf-focus); }
.pf-dd[open] > .pf-dd-btn { border-color: var(--pf-green); }
.pf-dd-label { font-size: .95rem; font-weight: 500; color: var(--basalt); }
.pf-dd-value { font-size: .86rem; color: var(--muted); }
.pf-dd.has-value .pf-dd-btn { border-color: color-mix(in srgb, var(--pf-green) 55%, transparent); background: var(--pf-tint); }
.pf-dd.has-value .pf-dd-value { color: var(--pf-green); font-weight: 500; }
.pf-dd-chevron { width: 16px; height: 16px; margin-left: 2px; color: var(--muted); transition: transform .2s var(--ease); }
.pf-dd[open] .pf-dd-chevron { transform: rotate(180deg); }
.pf-apply { min-height: 50px; margin-left: auto; }
.pf.is-dirty .pf-apply { box-shadow: 0 0 0 3px var(--pf-focus); }

/* ---- The dropdown panel ---- */
.pf-panel {
  position: absolute; z-index: 30; top: calc(100% + 6px); left: 0;
  width: max-content; min-width: 270px; max-width: min(360px, calc(100vw - 32px));
  max-height: 350px; display: flex; flex-direction: column;
  background: #FFFFFF; border: 1px solid var(--pf-line); border-radius: 4px;
  box-shadow: 0 22px 44px -26px rgba(18, 38, 27, .42), 0 2px 6px -2px rgba(18, 38, 27, .08);
}
.pf-panel.is-end { left: auto; right: 0; }
.pf-panel-title { display: none; margin: 0; font-size: .8rem; font-weight: 500; letter-spacing: .02em; color: var(--muted); }
.pf-panel-title--always { display: block; padding: 10px 10px 4px; }
.pf-panel-search { position: relative; padding: 10px 10px 6px; border-bottom: 1px solid var(--pf-line); }
.pf-panel-search .icon { position: absolute; left: 22px; top: calc(50% + 2px); width: 16px; height: 16px; transform: translateY(-50%); color: var(--muted); pointer-events: none; }
.pf-panel-search input {
  width: 100%; min-height: 40px; padding: 8px 12px 8px 36px; font: inherit; font-size: .92rem;
  background: var(--pf-cream); border: 1px solid var(--pf-line); border-radius: 3px;
}
.pf-panel-search input:focus { outline: none; border-color: var(--pf-green); box-shadow: 0 0 0 3px var(--pf-focus); }
.pf-options { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 6px; }
.pf-optgroup + .pf-optgroup { margin-top: 4px; padding-top: 4px; border-top: 1px solid var(--pf-line); }
.pf-subgroup + .pf-subgroup { margin-top: 6px; border-top: 1px solid var(--pf-line); }
.pf-optgroup-title { margin: 0; padding: 8px 10px 4px; font-size: .8rem; font-weight: 500; letter-spacing: .02em; color: var(--muted); }
.pf-noresult { margin: 0; padding: 12px 10px; font-size: .9rem; color: var(--muted); }
.pf-panel-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border-top: 1px solid var(--pf-line); background: #FFFFFF; }

/* ---- Custom checkbox and radio ---- */
.pf-check {
  position: relative; display: flex; align-items: center; gap: 12px; padding: 9px 10px;
  border-radius: 3px; cursor: pointer; font-size: .95rem; line-height: 1.3; color: var(--basalt);
  transition: background-color .12s;
}
.pf-check:hover, .pf-check:focus-within { background: var(--pf-tint); }
.pf-check[hidden] { display: none; }
.pf-check input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; pointer-events: none; }
.pf-box {
  flex: none; display: grid; place-items: center; width: 18px; height: 18px;
  background: var(--pf-cream); border: 1px solid var(--pf-green); border-radius: 2px;
  transition: background-color .12s, box-shadow .12s;
}
.pf-box svg { width: 13px; height: 13px; fill: none; stroke: var(--pf-lime); stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; opacity: 0; transform: scale(.6); transition: opacity .12s, transform .12s; }
.pf-check input:checked + .pf-box { background: var(--pf-green); }
.pf-check input:checked + .pf-box svg { opacity: 1; transform: none; }
.pf-check input:focus-visible + .pf-box { box-shadow: 0 0 0 3px var(--pf-focus); }
.pf-check--radio .pf-box { border-radius: 50%; }
.pf-check--radio .pf-box::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--pf-lime); opacity: 0; transition: opacity .12s; }
.pf-check--radio input:checked + .pf-box::after { opacity: 1; }
.pf-check input:checked ~ .pf-check-text { font-weight: 500; }

.pf-link {
  padding: 4px 0; background: none; border: 0; font: inherit; font-size: .92rem; font-weight: 500;
  color: var(--accent-ink); text-decoration: underline; text-underline-offset: .3em;
  text-decoration-color: color-mix(in srgb, var(--accent) 45%, transparent); cursor: pointer;
}
.pf-link:hover { text-decoration-color: currentColor; }
.pf-link:focus-visible { outline: 2px solid var(--pf-green); outline-offset: 3px; border-radius: 2px; }

/* ---- Applied filters: small removable rectangles, never pills ---- */
.pf-active { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-top: 14px; }
.pf-active[hidden] { display: none; }
.pf-active-label { font-size: .88rem; color: var(--muted); }
.pf-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.pf-chip {
  display: inline-flex; align-items: center; gap: 8px; min-height: 32px; padding: 4px 8px 4px 11px;
  font: inherit; font-size: .88rem; line-height: 1.2; color: var(--basalt); text-decoration: none;
  background: #FFFFFF; border: 1px solid var(--pf-line); border-radius: 2px; cursor: pointer;
  transition: border-color .15s, background-color .15s;
}
.pf-chip .icon { width: 14px; height: 14px; color: var(--muted); }
.pf-chip:hover { border-color: var(--pf-green); background: var(--pf-tint); }
.pf-chip:hover .icon { color: var(--pf-green); }
.pf-chip:focus-visible { outline: none; border-color: var(--pf-green); box-shadow: 0 0 0 3px var(--pf-focus); }

.pf-count:empty { display: none; }
.pf-toggle, .pf-scrim, .pf-drawer-head, .pf-drawer-foot { display: none; }

/* ---- Loading ---- */
.pf .btn.is-loading { position: relative; color: transparent !important; }
.pf .btn.is-loading::after {
  content: ""; position: absolute; inset: 0; margin: auto; width: 16px; height: 16px;
  border: 2px solid rgba(255, 255, 255, .45); border-top-color: #FFFFFF; border-radius: 50%;
  animation: pf-spin .7s linear infinite;
}
@keyframes pf-spin { to { transform: rotate(360deg); } }
.results[aria-busy="true"] { pointer-events: none; }

/* ---- Mobile: search + "Filters (n)" button, filters in a drawer ---- */
@media (max-width: 860px) {
  .pf-dd { flex: 1 1 calc(50% - 5px); }
  .pf-dd-btn { justify-content: space-between; }
  .pf-apply { flex: 1 1 100%; margin-left: 0; }

  .pf--js .pf-toggle {
    display: inline-flex; align-items: center; gap: 8px; min-height: 50px; padding: 0 16px;
    font: inherit; font-size: .95rem; font-weight: 500; color: var(--basalt);
    background: #FFFFFF; border: 1px solid var(--pf-line); border-radius: 4px; cursor: pointer;
  }
  .pf--js .pf-toggle .icon { width: 18px; height: 18px; color: var(--pf-green); }
  .pf--js .pf-toggle.has-value { border-color: var(--pf-green); background: var(--pf-tint); }
  .pf--js .pf-toggle:focus-visible { outline: none; border-color: var(--pf-green); box-shadow: 0 0 0 3px var(--pf-focus); }

  .pf--js .pf-scrim { display: block; position: fixed; inset: 0; z-index: 94; background: rgba(12, 26, 18, .5); opacity: 0; transition: opacity .25s; }
  .pf--js .pf-scrim[hidden] { display: none; }
  .pf--js.is-drawer-open .pf-scrim { opacity: 1; }

  .pf--js .pf-drawer {
    position: fixed; z-index: 95; top: 0; right: 0; bottom: 0; width: min(100%, 440px);
    display: flex; flex-direction: column; background: #FFFFFF;
    box-shadow: -24px 0 48px -24px rgba(12, 26, 18, .45);
    transform: translateX(100%); visibility: hidden;
  }
  /* Transitions only once the page has settled, so the drawer never slides on load. */
  .pf--ready .pf-drawer { transition: transform .28s var(--ease), visibility 0s linear .28s; }
  .pf--js.is-drawer-open .pf-drawer { transform: none; visibility: visible; transition: transform .28s var(--ease), visibility 0s; }
  .pf--js .pf-drawer-head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 14px 12px 14px 20px; padding-top: calc(14px + env(safe-area-inset-top)); border-bottom: 1px solid var(--pf-line);
  }
  .pf--js .pf-drawer-title { margin: 0; font-family: var(--font-display); font-size: 1.45rem; color: var(--basalt); }
  .pf--js .pf-drawer-title .pf-count { font-family: var(--font-text); font-size: 1rem; color: var(--muted); }
  .pf--js .pf-close { display: grid; place-items: center; width: 44px; height: 44px; background: none; border: 0; border-radius: 3px; color: var(--basalt); cursor: pointer; }
  .pf--js .pf-close:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--pf-focus); }

  /* Every filter is shown as an open section; the dropdown buttons are not needed. */
  .pf--js .pf-row { flex: 1 1 auto; min-height: 0; display: block; overflow-y: auto; overscroll-behavior: contain; padding: 4px 20px 20px; }
  .pf--js .pf-row > .pf-apply { display: none; }
  .pf--js .pf-dd { border-bottom: 1px solid var(--pf-line); padding: 16px 0 12px; }
  .pf--js .pf-dd > summary { display: none; }
  .pf--js .pf-panel { position: static; width: auto; min-width: 0; max-width: none; max-height: none; border: 0; box-shadow: none; }
  .pf--js .pf-panel-title { display: block; padding: 0 0 6px; font-family: var(--font-text); font-size: 1rem; font-weight: 500; letter-spacing: 0; color: var(--basalt); }
  .pf--js .pf-panel-title--always { padding: 10px 0 6px; }
  .pf--js .pf-panel-search { padding: 4px 0 8px; border: 0; }
  .pf--js .pf-panel-search .icon { left: 12px; }
  .pf--js .pf-options { overflow: visible; padding: 0; }
  .pf--js .pf-check { padding: 10px 4px; }
  .pf--js .pf-panel-foot { padding: 6px 0 0; border: 0; justify-content: flex-start; }
  .pf--js .pf-panel-apply { display: none; }

  .pf--js .pf-drawer-foot {
    display: flex; align-items: center; justify-content: space-between; gap: 16px;
    padding: 12px 20px; padding-bottom: calc(12px + env(safe-area-inset-bottom));
    border-top: 1px solid var(--pf-line); background: #FFFFFF;
  }
  .pf--js .pf-drawer-foot .btn { flex: 0 1 auto; min-width: 180px; }
  html.pf-lock, html.pf-lock body { overflow: hidden; }
}
@media (min-width: 861px) {
  .pf .pf-drawer { display: block; }
}
@media (prefers-reduced-motion: reduce) {
  .pf *, .pf *::before, .pf *::after { transition: none !important; animation-duration: 1ms !important; }
}

/* =====================================================================
   Enquiry and availability popups (.dialog--form): compact and light.
   Scoped to these two dialogs; the gallery and video dialogs are unchanged.
   ===================================================================== */
.dialog--form { max-width: min(440px, calc(100vw - 24px)); }
.dialog--form .dialog-panel {
  padding: 26px 26px 20px; background: #FFFFFF; border-top: 0; border-radius: 6px;
  box-shadow: 0 30px 60px -28px rgba(12, 26, 18, .5);
}
.dialog--form .dialog-panel::before { content: ""; position: absolute; inset: 0 0 auto; height: 3px; border-radius: 6px 6px 0 0; background: linear-gradient(90deg, #2F7F46, #B8F36A); }
.dialog--form .dialog-close {
  top: 12px; right: 12px; width: 34px; height: 34px; min-width: 0; min-height: 0; padding: 0;
  display: grid; place-items: center; border: 1px solid rgba(18, 63, 50, .14); border-radius: 50%; background: #FFFFFF; color: var(--muted);
}
.dialog--form .dialog-close:hover { color: var(--basalt); border-color: rgba(18, 63, 50, .32); }
.dialog--form .dialog-close .icon { width: 16px; height: 16px; }
.dialog-eyebrow { margin: 0 0 6px; padding-right: 40px; font-size: .72rem; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; color: #2F7F46; }
.dialog--form .dialog-title { margin: 0 0 6px; padding-right: 40px; font-size: clamp(1.3rem, .6vw + 1.1rem, 1.55rem); line-height: 1.2; }
.dialog--form .dialog-context { margin: 0 0 18px; font-size: .88rem; line-height: 1.5; }

.dialog--form .form-grid { grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px; }
.dialog--form .form-grid > .field:nth-child(n+3) { grid-column: 1 / -1; }
.dialog--form .field { gap: 5px; }
.dialog--form .field label { font-size: .78rem; font-weight: 500; color: #4E5B55; }
.dialog--form .field input, .dialog--form .field select, .dialog--form .field textarea {
  min-height: 44px; padding: 10px 12px; font-size: .95rem; color: var(--basalt);
  background: #FFFFFF; border: 1px solid #D3DBD6; border-radius: 4px;
}
.dialog--form .field select { padding-right: 34px; }
.dialog--form .field textarea { min-height: 70px; height: 70px; }
.dialog--form .field input::placeholder, .dialog--form .field textarea::placeholder { color: #95A29B; }
.dialog--form .field input:hover, .dialog--form .field select:hover, .dialog--form .field textarea:hover { border-color: #B5C2BA; }
.dialog--form .field input:focus, .dialog--form .field select:focus, .dialog--form .field textarea:focus { border-color: #2F7F46; box-shadow: 0 0 0 3px rgba(184, 243, 106, .45); }
.dialog--form .field.has-error input, .dialog--form .field.has-error select, .dialog--form .field.has-error textarea { border-color: var(--danger); }
.dialog--form .field-error { font-size: .78rem; }
.dialog--form .field-check { gap: 10px; margin: 2px 0 14px; font-size: .76rem; line-height: 1.45; color: #6A766F; }
.dialog--form .field-check input { width: 16px; height: 16px; margin-top: 1px; accent-color: #2F7F46; }
.dialog--form .form-alert { margin-bottom: 12px; padding: 10px 12px; font-size: .86rem; background: color-mix(in srgb, var(--danger) 8%, #FFFFFF); }
.dialog--form .form-alert.is-ok { background: color-mix(in srgb, var(--ok) 10%, #FFFFFF); }
.dialog--form .btn[data-submit] { min-height: 46px; border-radius: 4px; font-size: .95rem; }
.dialog-trust { margin: 10px 0 0; text-align: center; font-size: .74rem; color: #7C8882; }

/* Phones: a bottom sheet rather than a tall centred box. */
@media (max-width: 599px) {
  .dialog--form { max-width: 100vw; width: 100vw; margin: auto 0 0; max-height: 92dvh; }
  .dialog--form .dialog-panel { padding: 22px 18px calc(16px + env(safe-area-inset-bottom)); border-radius: 12px 12px 0 0; max-height: 92dvh; }
  .dialog--form .dialog-panel::before { border-radius: 12px 12px 0 0; }
  .dialog--form .dialog-context { margin-bottom: 14px; }
  .dialog--form .form-grid { gap: 10px; }
}
@media (max-width: 359px) {
  .dialog--form .form-grid { grid-template-columns: 1fr; }
}
.dialog--form .dialog-close:focus-visible { outline: none; border-color: #2F7F46; box-shadow: 0 0 0 3px rgba(184, 243, 106, .55); }

/* =====================================================================
   Mobile fixes (Sep 2026): location facts, leasing slider, project highlights.
   Desktop layouts are untouched; every rule below sits inside a mobile/tablet query.
   ===================================================================== */

/* 1. Location facts: a tidy three-column strip instead of three separately
      centred lines whose icons never lined up. */
@media (max-width: 599px) {
  .locations-discovery-section .locations-discovery-section__facts {
    grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; max-width: none;
    padding: 16px 4px; border-block: 1px solid var(--leaf-line-light, rgba(18, 63, 50, .14));
  }
  .locations-discovery-section .locations-discovery-section__facts li {
    flex-direction: column; align-items: center; justify-content: flex-start; gap: 8px; padding: 0 6px; text-align: center;
  }
  .locations-discovery-section .locations-discovery-section__facts li + li { border-left: 1px solid var(--leaf-line-light, rgba(18, 63, 50, .14)); }
  .locations-discovery-section .locations-discovery-section__facts .icon { width: 26px; height: 26px; }
  .locations-discovery-section .locations-discovery-section__facts span { align-items: center; font-size: .74rem; }
  .locations-discovery-section .locations-discovery-section__facts strong { font-size: .84rem; line-height: 1.3; }
}

/* 2. Leasing slider below the side-by-side layout: the text panel had no side
      padding (it touched the screen edge) and the controls sat on the button. */
@media (max-width: 1023px) {
  .leasing-project-slider .lps-info { padding: 28px clamp(20px, 5vw, 40px) 24px; background: var(--lps-panel); }
  .leasing-project-slider .lps-cat { margin-bottom: 12px; font-size: .68rem; letter-spacing: .24em; }
  .leasing-project-slider .lps-points { margin-bottom: 22px; padding-top: 18px; }
  .leasing-project-slider .lps-controls { padding: 16px clamp(20px, 5vw, 40px) 22px; border-top: 1px solid rgba(255, 255, 255, .08); }
  .leasing-project-slider .lps-tagline { left: clamp(20px, 5vw, 40px); }
}
@media (max-width: 599px) {
  .leasing-project-slider .lps-media { height: clamp(220px, 62vw, 300px); }
  .leasing-project-slider .lps-cta { width: 100%; justify-content: center; padding: 13px 20px; }
  .leasing-project-slider .lps-points li { padding: 0 10px; letter-spacing: .12em; }
  .leasing-project-slider .lps-controls { gap: 12px; }
  .leasing-project-slider .lps-arrows { gap: 8px; }
}

/* 3. Project highlights on phones: one swipeable row of full-width cards instead
      of two narrow columns (which made the section very tall). The number badge
      and the icon share a line so each card is compact. */
@media (max-width: 719px) {
  .project-main #highlights .feature-cards {
    display: flex; gap: 12px; overflow-x: auto; overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory; scroll-padding-inline: 0; scrollbar-width: none;
    margin: 0; padding: 0 0 4px;
  }
  .project-main #highlights .feature-cards::-webkit-scrollbar { display: none; }
  .project-main #highlights .feature-card {
    flex: 0 0 84%; scroll-snap-align: start; flex-direction: row; flex-wrap: wrap; align-items: center; align-content: flex-start;
    column-gap: 14px; row-gap: 0; padding: 20px; border-radius: 16px;
  }
  .project-main #highlights .feature-card:only-child { flex-basis: 100%; }
  .project-main #highlights .feature-card:hover { transform: none; }
  .project-main #highlights .feature-card::before { margin: 0; width: 40px; height: 30px; font-size: .85rem; }
  .project-main #highlights .feature-media { margin: 0; }
  .project-main #highlights .feature-glyph { width: 28px; height: 28px; }
  .project-main #highlights .feature-title { flex: 1 1 100%; margin-top: 16px; font-size: 1.2rem; }
  .project-main #highlights .feature-text { flex: 1 1 100%; margin-top: 8px; font-size: .9rem; line-height: 1.55; }
  .hl-swipe { display: flex; align-items: center; gap: 12px; margin-top: 14px; font-size: .8rem; color: #9FB0A6; }
  .hl-swipe-bar { position: relative; flex: 1; height: 2px; background: rgba(255, 255, 255, .12); border-radius: 2px; overflow: hidden; }
  .hl-swipe-bar span { position: absolute; inset: 0 auto 0 0; background: var(--leaf); border-radius: 2px; transition: width .2s ease, left .2s ease; }
}
@media (min-width: 720px) { .hl-swipe { display: none; } }

/* =====================================================================
   List your property (/list-your-property): owners selling or renting out.
   ===================================================================== */
.lp { --lp-green: #2F7F46; --lp-lime: #B8F36A; --lp-line: #D3DBD6; --lp-soft: #F4F6F3; }
.lp-grid { display: grid; gap: clamp(24px, 4vw, 56px); grid-template-columns: 1fr; align-items: start; }
@media (min-width: 980px) { .lp-grid { grid-template-columns: minmax(260px, 330px) minmax(0, 1fr); } .lp-aside { position: sticky; top: 104px; } }

.lp-aside { padding: clamp(22px, 3vw, 30px); border-radius: 8px; background: var(--green-900, #0F2A1C); color: #DCE5DF; }
.lp-aside-eyebrow { margin: 0 0 16px; font-size: .72rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--lp-lime); }
.lp-steps { display: grid; gap: 18px; margin: 0 0 22px; padding: 0; list-style: none; }
.lp-steps li { display: flex; gap: 14px; }
.lp-step-n { flex: none; display: grid; place-items: center; width: 30px; height: 30px; border: 1px solid rgba(184, 243, 106, .5); border-radius: 50%; font-size: .85rem; color: var(--lp-lime); }
.lp-steps strong { display: block; margin-bottom: 3px; font-weight: 500; color: #FFFFFF; }
.lp-steps p { margin: 0; font-size: .88rem; line-height: 1.55; color: #B9C6BE; }
.lp-trust { display: grid; gap: 10px; margin: 0; padding: 18px 0 0; list-style: none; border-top: 1px solid rgba(255, 255, 255, .12); }
.lp-trust li { display: flex; align-items: center; gap: 10px; font-size: .86rem; }
.lp-trust .icon { flex: none; width: 18px; height: 18px; color: var(--lp-lime); }
.lp-aside-help { margin: 18px 0 0; font-size: .86rem; color: #B9C6BE; }
.lp-aside-help a { color: #FFFFFF; }
@media (max-width: 979px) { .lp-steps { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); } }

.lp-form { display: grid; gap: 18px; }
.lp-block { margin: 0; padding: clamp(20px, 3vw, 28px); border: 1px solid #E1E7E3; border-radius: 8px; background: #FFFFFF; min-width: 0; }
.lp-legend { display: flex; align-items: center; gap: 12px; float: left; width: 100%; margin: 0 0 18px; padding: 0; font-family: var(--font-display); font-size: clamp(1.2rem, .6vw + 1rem, 1.45rem); color: var(--basalt); }
.lp-legend + * { clear: both; }
.lp-legend { flex-wrap: wrap; row-gap: 2px; }
.lp-legend .optional { flex-basis: 100%; margin-left: 42px; font-family: var(--font-text); font-size: .82rem; }
.lp-legend-n { flex: none; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--lp-green); color: var(--lp-lime); font-family: var(--font-text); font-size: .85rem; font-weight: 600; }
.lp-note, .lp-small { margin: 0 0 14px; font-size: .86rem; line-height: 1.55; color: var(--muted); }
.lp-small { margin: 10px 0 0; text-align: center; font-size: .8rem; }

.lp-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 18px; }
@media (max-width: 599px) { .lp-fields { grid-template-columns: 1fr; } }
.lp .field label, .lp .field-label { font-size: .84rem; font-weight: 500; color: #3F4B45; }
.lp .field input, .lp .field select, .lp .field textarea {
  min-height: 46px; padding: 10px 12px; font-size: .96rem; color: var(--basalt);
  background: #FFFFFF; border: 1px solid var(--lp-line); border-radius: 4px;
}
.lp .field textarea { min-height: 96px; }
.lp .field input::placeholder, .lp .field textarea::placeholder { color: #98A59E; }
.lp .field input:hover, .lp .field select:hover, .lp .field textarea:hover { border-color: #B5C2BA; }
.lp .field input:focus, .lp .field select:focus, .lp .field textarea:focus { border-color: var(--lp-green); box-shadow: 0 0 0 3px rgba(184, 243, 106, .45); outline: none; }
.lp .field.has-error input, .lp .field.has-error select, .lp .field.has-error textarea { border-color: var(--danger); }
.lp .field[hidden] { display: none; }
.lp .field-hint { margin: 2px 0 0; min-height: 1em; font-size: .8rem; color: var(--lp-green); }
.lp-combo { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.lp-combo input { border-radius: 4px 0 0 4px !important; }
.lp-combo select { border-left: 0 !important; border-radius: 0 4px 4px 0 !important; color: #3F4B45; }
.lp .form-alert { background: color-mix(in srgb, var(--danger) 8%, #FFFFFF); }

/* Sell / rent out cards */
.lp-choice-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.lp-choice { position: relative; cursor: pointer; }
.lp-choice input, .lp-seg input, .lp-check input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.lp-choice-card { display: grid; gap: 4px; height: 100%; padding: 16px 18px; border: 1px solid var(--lp-line); border-radius: 6px; transition: border-color .15s, background-color .15s, box-shadow .15s; }
.lp-choice-card .icon { width: 24px; height: 24px; margin-bottom: 4px; color: var(--lp-green); }
.lp-choice-card strong { font-weight: 500; color: var(--basalt); }
.lp-choice-card small { font-size: .82rem; line-height: 1.4; color: var(--muted); }
.lp-choice:hover .lp-choice-card { border-color: #B5C2BA; }
.lp-choice input:checked + .lp-choice-card { border-color: var(--lp-green); background: var(--lp-soft); box-shadow: inset 0 0 0 1px var(--lp-green); }
.lp-choice input:focus-visible + .lp-choice-card { box-shadow: 0 0 0 3px rgba(184, 243, 106, .6); }
@media (max-width: 420px) { .lp-choice-card { padding: 14px; } }

/* Segmented radios (property type, relation) */
.lp-seg { display: flex; flex-wrap: wrap; gap: 8px; }
.lp-seg label { position: relative; cursor: pointer; }
.lp-seg span { display: inline-flex; align-items: center; min-height: 40px; padding: 8px 14px; border: 1px solid var(--lp-line); border-radius: 4px; font-size: .9rem; color: #3F4B45; transition: all .15s; }
.lp-seg label:hover span { border-color: #B5C2BA; }
.lp-seg input:checked + span { border-color: var(--lp-green); background: var(--lp-green); color: #FFFFFF; }
.lp-seg input:focus-visible + span { box-shadow: 0 0 0 3px rgba(184, 243, 106, .6); }
.lp-check { position: relative; display: inline-flex; align-items: center; gap: 10px; cursor: pointer; font-size: .9rem; color: #3F4B45; }
.lp-check span::before { content: ""; display: inline-block; width: 18px; height: 18px; margin-right: 10px; vertical-align: -4px; border: 1px solid var(--lp-green); border-radius: 2px; background: #FFFDF7 center / 12px no-repeat; }
.lp-check input:checked + span::before { background-color: var(--lp-green); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4 6.6 11.4 12.6 4.8' fill='none' stroke='%23B8F36A' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.lp-check input:focus-visible + span::before { box-shadow: 0 0 0 3px rgba(184, 243, 106, .6); }

/* Photos and videos */
.lp-drop { position: relative; margin-top: 4px; }
.lp-drop + .lp-drop { margin-top: 14px; }
.lp-file { position: absolute; width: 1px; height: 1px; opacity: 0; }
.lp-drop-zone { display: grid; justify-items: center; gap: 6px; padding: 26px 16px; border: 1.5px dashed #B9C7BE; border-radius: 8px; background: #FAFBF9; text-align: center; cursor: pointer; transition: border-color .15s, background-color .15s; }
.lp-drop-zone--slim { padding: 16px; }
.lp-drop-zone .icon { width: 30px; height: 30px; color: var(--lp-green); }
.lp-drop-zone span { font-size: .95rem; color: #3F4B45; }
.lp-drop-zone strong { color: var(--lp-green); font-weight: 600; }
.lp-drop-zone small { font-size: .8rem; color: var(--muted); }
.lp-drop-zone:hover, .lp-drop.is-over .lp-drop-zone { border-color: var(--lp-green); background: var(--lp-soft); }
.lp-file:focus-visible + .lp-drop-zone { box-shadow: 0 0 0 3px rgba(184, 243, 106, .6); border-color: var(--lp-green); }
.lp-drop.has-error .lp-drop-zone { border-color: var(--danger); }
.lp-previews { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 10px; margin: 12px 0 0; padding: 0; list-style: none; }
.lp-previews:empty { display: none; }
.lp-previews li { position: relative; overflow: hidden; border: 1px solid #E1E7E3; border-radius: 6px; background: var(--lp-soft); }
.lp-previews img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; }
.lp-previews .lp-cover-tag { position: absolute; left: 6px; bottom: 6px; padding: 1px 6px; border-radius: 3px; background: var(--lp-green); color: #FFFFFF; font-size: .7rem; }
.lp-previews--video { grid-template-columns: 1fr; }
.lp-previews--video li { display: flex; align-items: center; gap: 12px; padding: 10px 44px 10px 12px; font-size: .88rem; }
.lp-previews--video .icon { flex: none; width: 20px; height: 20px; color: var(--lp-green); }
.lp-previews--video span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lp-remove { position: absolute; top: 5px; right: 5px; display: grid; place-items: center; width: 28px; height: 28px; padding: 0; border: 0; border-radius: 50%; background: rgba(15, 30, 22, .72); color: #FFFFFF; cursor: pointer; }
.lp-previews--video .lp-remove { top: 50%; transform: translateY(-50%); background: #E6EBE7; color: #3F4B45; }
.lp-remove .icon { width: 14px; height: 14px; }
.lp-remove:focus-visible { outline: 2px solid var(--lp-lime); outline-offset: 1px; }

/* Submit */
.lp-submit { padding: clamp(20px, 3vw, 28px); border-radius: 8px; background: var(--lp-soft); }
.lp-submit .field-check { margin: 0 0 16px; font-size: .84rem; color: #4E5B55; }
.lp-submit .field-check input { accent-color: var(--lp-green); width: 18px; height: 18px; }
.lp-send { width: 100%; min-height: 52px; justify-content: center; gap: 12px; font-size: 1rem; }
.lp-send .icon { width: 18px; height: 18px; }
.lp-progress { display: grid; gap: 6px; margin-bottom: 12px; }
.lp-progress[hidden] { display: none; }
.lp-progress-bar { height: 6px; overflow: hidden; border-radius: 3px; background: #DCE5DF; }
.lp-progress-bar span { display: block; width: 0; height: 100%; background: linear-gradient(90deg, var(--lp-green), var(--lp-lime)); transition: width .2s; }
.lp-progress-text { font-size: .84rem; color: #4E5B55; }

/* Done */
.lp-done { padding: clamp(28px, 4vw, 44px); border: 1px solid #E1E7E3; border-top: 3px solid var(--lp-green); border-radius: 8px; background: #FFFFFF; }
.lp-done:focus { outline: none; }
.lp-done-icon { display: grid; place-items: center; width: 52px; height: 52px; margin-bottom: 16px; border-radius: 50%; background: var(--lp-green); color: var(--lp-lime); }
.lp-done-icon .icon { width: 26px; height: 26px; }
.lp-done h2 { margin: 0 0 10px; font-size: clamp(1.5rem, 1vw + 1.1rem, 1.9rem); }
.lp-done p { color: #4E5B55; }
.lp-ref { padding: 2px 8px; border-radius: 3px; background: var(--lp-soft); font-family: ui-monospace, Menlo, monospace; letter-spacing: .06em; color: var(--basalt); }
.lp-done-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }

/* Call-to-action band on the rent and resale pages */
.lp-cta { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px 24px; margin: 0 0 24px; padding: 18px 22px; border: 1px solid #E1E7E3; border-left: 3px solid #2F7F46; border-radius: 6px; background: #FFFFFF; }
.lp-cta p { margin: 0; color: #4E5B55; }
.lp-cta strong { display: block; font-weight: 500; color: var(--basalt); }
.listing-own { margin: 14px 0 0; font-size: .9rem; opacity: .9; }
.listing-own a { font-weight: 500; }
/* "My property is in another project": short enquiry instead of the full listing. */
.lp .lp-fields[hidden], .lp .lp-block[hidden], .lp .lp-other[hidden] { display: none; }
.lp-other { margin-top: 18px; }
.lp-details { margin-top: 16px; }
.lp-other-note { display: flex; gap: 12px; align-items: flex-start; margin: 0 0 16px; padding: 14px 16px; border-radius: 6px; background: #F4F6F3; font-size: .9rem; line-height: 1.55; color: #3F4B45; }
.lp-other-note .icon { flex: none; width: 20px; height: 20px; margin-top: 1px; color: #2F7F46; }
/* After submitting, the thank-you message comes before "How it works" on narrow screens. */
@media (max-width: 979px) { .lp-grid--done .lp-main { order: -1; } }
.lp-done { scroll-margin-top: 96px; }

/* Small highlighted "List your property" link (homepage resale section, project page). */
.lp-mini {
  display: inline-flex; align-items: center; gap: 8px; max-width: 100%; margin-top: 16px; padding: 8px 12px;
  border: 1px solid rgba(47, 127, 70, .35); border-radius: 3px; background: #F4F6F3;
  font-size: .86rem; line-height: 1.35; color: #3F4B45; text-decoration: none;
  transition: border-color .2s, background-color .2s;
}
.lp-mini strong { font-weight: 600; color: #2F7F46; }
.lp-mini .icon { flex: none; width: 15px; height: 15px; color: #2F7F46; transition: transform .2s; }
.lp-mini:hover, .lp-mini:focus-visible { border-color: #2F7F46; background: #EAF3E6; }
.lp-mini:hover .icon { transform: translateX(3px); }
.lp-mini:focus-visible { outline: 2px solid #2F7F46; outline-offset: 2px; }
.lp-mini-dot { flex: none; width: 7px; height: 7px; border-radius: 50%; background: #B8F36A; box-shadow: 0 0 0 3px rgba(184, 243, 106, .35); }
.lp-mini--dark { margin-top: 20px; border-color: rgba(184, 243, 106, .35); background: rgba(255, 255, 255, .05); color: #DCE5DF; }
.lp-mini--dark strong, .lp-mini--dark .icon { color: #B8F36A; }
.lp-mini--dark:hover, .lp-mini--dark:focus-visible { border-color: #B8F36A; background: rgba(184, 243, 106, .1); }
.lp-mini--dark:focus-visible { outline-color: #B8F36A; }
@media (prefers-reduced-motion: reduce) { .lp-mini, .lp-mini .icon { transition: none; } }

/* =====================================================================
   Reels: corner popup (.rb), full-size viewer (.rv), card rows (.reel-card)
   ===================================================================== */
/* Small popup, bottom-left (WhatsApp / contact sit bottom-right). */
.rb { position: fixed; z-index: 66; left: 20px; bottom: 20px; width: 110px; aspect-ratio: 9 / 16; opacity: 0; transform: translateY(16px) scale(.96); transition: opacity .35s ease, transform .35s ease; }
.rb.is-in { opacity: 1; transform: none; }
.rb-open { position: relative; display: block; width: 100%; height: 100%; padding: 0; overflow: hidden; border: 2px solid #FFFFFF; border-radius: 14px; background: #0F2A1C; box-shadow: 0 14px 34px -12px rgba(8, 20, 12, .55), 0 0 0 1px rgba(15, 42, 28, .12); cursor: pointer; }
.rb-open:focus-visible { outline: 3px solid #B8F36A; outline-offset: 3px; }
.rb-media, .rb-media video, .rb-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.rb-media .is-contain { object-fit: contain; }
.rb-media img.is-zoom { animation: rb-zoom 9s ease-in-out infinite alternate; }
@keyframes rb-zoom { from { transform: scale(1); } to { transform: scale(1.12); } }
.rb-shade { position: absolute; inset: auto 0 0; height: 45%; background: linear-gradient(transparent, rgba(0, 0, 0, .6)); pointer-events: none; }
.rb-expand { position: absolute; top: 7px; left: 7px; display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: rgba(0, 0, 0, .45); color: #FFFFFF; }
.rb-label { position: absolute; left: 8px; bottom: 7px; display: flex; align-items: center; gap: 5px; font-size: .68rem; font-weight: 600; letter-spacing: .02em; color: #FFFFFF; }
.rb-dot { width: 6px; height: 6px; border-radius: 50%; background: #B8F36A; box-shadow: 0 0 0 3px rgba(184, 243, 106, .3); }
.rb-close { position: absolute; top: -9px; right: -9px; display: grid; place-items: center; width: 26px; height: 26px; padding: 0; border: 0; border-radius: 50%; background: #FFFFFF; color: #13241A; box-shadow: 0 2px 8px rgba(0, 0, 0, .25); cursor: pointer; }
.rb-close::before { content: ""; position: absolute; inset: -9px; }   /* larger touch target */
.rb-close:focus-visible { outline: 2px solid #2F7F46; outline-offset: 2px; }
.rb-open:hover .rb-expand { background: #2F7F46; }
@media (max-width: 899px) { .rb { left: 12px; bottom: calc(62px + env(safe-area-inset-bottom) + 12px); width: 88px; } }

/* Full-size viewer */
.rv { position: fixed; inset: 0; z-index: 120; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .25s ease; }
.rv.is-open { opacity: 1; }
.rv[hidden] { display: none; }
html.rv-lock, html.rv-lock body { overflow: hidden; }
.rv-backdrop { position: absolute; inset: 0; background: rgba(6, 12, 9, .92); backdrop-filter: blur(6px); }
.rv-stage { position: relative; display: flex; flex-direction: column; height: calc(100dvh - 40px); aspect-ratio: 9 / 16; max-width: calc(100vw - 150px); overflow: hidden; border-radius: 16px; background: #000; box-shadow: 0 30px 80px rgba(0, 0, 0, .5); }
.rv-frame { position: relative; flex: 1 1 auto; min-height: 0; background: #000; }
.rv-frame video, .rv-frame iframe, .rv-frame > img { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; object-fit: cover; }
.rv-frame video.is-contain { object-fit: contain; }
.rv-frame .rv-ig { background: #FFFFFF; }
.rv-frame.is-loading::after { content: ""; position: absolute; top: 50%; left: 50%; width: 34px; height: 34px; margin: -17px 0 0 -17px; border: 3px solid rgba(255, 255, 255, .25); border-top-color: #FFFFFF; border-radius: 50%; animation: pf-spin .8s linear infinite; pointer-events: none; }
.rv-paused-icon { position: absolute; top: 50%; left: 50%; display: none; place-items: center; width: 64px; height: 64px; margin: -32px 0 0 -32px; border-radius: 50%; background: rgba(0, 0, 0, .45); color: #FFFFFF; pointer-events: none; }
.rv-frame.is-paused:not(.is-loading) .rv-paused-icon { display: grid; }
.rv-top { position: absolute; inset: 0 0 auto; z-index: 2; padding: 10px 10px 30px; background: linear-gradient(rgba(0, 0, 0, .55), transparent); pointer-events: none; }
.rv-bars { display: flex; gap: 4px; margin-bottom: 8px; }
.rv-bar { flex: 1; height: 3px; overflow: hidden; border-radius: 2px; background: rgba(255, 255, 255, .3); }
.rv-bar span { display: block; width: 0; height: 100%; background: #FFFFFF; }
.rv-bar.is-done span { width: 100%; }
.rv-top-btns { display: flex; justify-content: flex-end; gap: 6px; pointer-events: auto; }
.rv-btn { display: grid; place-items: center; width: 42px; height: 42px; padding: 0; border: 0; border-radius: 50%; background: rgba(0, 0, 0, .4); color: #FFFFFF; cursor: pointer; }
.rv-btn:hover { background: rgba(0, 0, 0, .6); }
.rv-btn:focus-visible { outline: 3px solid #B8F36A; outline-offset: 2px; }
.rv-btn[hidden] { display: none; }
.rv-info { position: absolute; inset: auto 0 0; z-index: 2; padding: 40px 16px 16px; background: linear-gradient(transparent, rgba(0, 0, 0, .75)); color: #FFFFFF; pointer-events: none; }
.rv-info > * { pointer-events: auto; }
.rv-project { margin: 0 0 2px; font-size: .74rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #B8F36A; }
.rv-project:empty { display: none; }
.rv-title { margin: 0; font-size: .98rem; line-height: 1.4; }
.rv-cta:empty { display: none; }
.rv-cta { margin-top: 12px; }
.rv-cta-btn { width: 100%; justify-content: center; min-height: 46px; background: #B8F36A; border-color: #B8F36A; color: #0F2A1C; font-weight: 600; }
.rv-cta-btn:hover { background: #CBF78E; border-color: #CBF78E; color: #0F2A1C; }
/* YouTube / Instagram keep their own controls at the bottom, so the info sits below the player. */
.rv--embed .rv-info { position: static; padding: 12px 16px 14px; background: #0B1510; }
.rv--embed .rv-top { padding-bottom: 12px; }
.rv--embed .rv-bars { display: none; }
.rv-ext { position: absolute; inset: auto 16px 50%; transform: translateY(50%); display: grid; justify-items: center; gap: 10px; padding: 20px; border-radius: 12px; background: rgba(0, 0, 0, .7); color: #FFFFFF; text-align: center; }
.rv-ext p { margin: 0; font-weight: 500; }
.rv-ext small { color: #C9D3CD; font-size: .76rem; }
.rv-ext-btn { background: #FFFFFF; border-color: #FFFFFF; color: #13241A; }
.rv-nav { position: absolute; right: 24px; top: 50%; z-index: 3; display: grid; justify-items: center; gap: 10px; transform: translateY(-50%); color: #FFFFFF; }
.rv-count { font-size: .8rem; color: #C9D3CD; }
@media (max-width: 600px) {
  .rv-stage { width: 100vw; height: 100dvh; max-width: none; aspect-ratio: auto; border-radius: 0; }
  .rv-top { padding-top: calc(10px + env(safe-area-inset-top)); }
  .rv-info { padding-bottom: calc(16px + env(safe-area-inset-bottom)); }
  .rv-nav { right: 10px; }
  .rv-nav .rv-btn { width: 38px; height: 38px; background: rgba(0, 0, 0, .35); }
  .rv-count { display: none; }
  .rv:not(.rv--embed) .rv-nav { top: 42%; }
}

/* Card rows (homepage, project page) */
.reels-section .reels-head { max-width: 46rem; margin-bottom: clamp(22px, 3vw, 36px); }
.reels-eyebrow { margin: 0 0 8px; font-size: .74rem; font-weight: 500; letter-spacing: .18em; text-transform: uppercase; color: var(--accent-ink, #2F7F46); }
.reels-intro { margin: 10px 0 0; color: var(--text); }
.reel-cards .reel-cards__rail { grid-auto-columns: clamp(150px, 40vw, 230px); gap: clamp(12px, 1.6vw, 20px); }
.reel-card { position: relative; display: block; width: 100%; aspect-ratio: 9 / 16; padding: 0; overflow: hidden; border: 0; border-radius: 14px; background: #0F2A1C; color: #FFFFFF; text-align: left; cursor: pointer; scroll-snap-align: start; }
.reel-card img, .reel-card video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease, opacity .3s ease; }
.reel-card video { opacity: 0; }
.reel-card video.is-contain { object-fit: contain; }
.reel-card.is-previewing video { opacity: 1; }
.reel-card:hover img { transform: scale(1.04); }
.reel-card::after { content: ""; position: absolute; inset: 45% 0 0; background: linear-gradient(transparent, rgba(0, 0, 0, .75)); pointer-events: none; }
.reel-card:focus-visible { outline: 3px solid #2F7F46; outline-offset: 3px; }
.reel-card__play { position: absolute; top: 10px; right: 10px; z-index: 1; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: rgba(0, 0, 0, .45); color: #FFFFFF; transition: background-color .2s; }
.reel-card:hover .reel-card__play { background: #2F7F46; }
.reel-card__badge { position: absolute; top: 12px; left: 10px; z-index: 1; padding: 2px 7px; border-radius: 3px; background: rgba(0, 0, 0, .5); font-size: .66rem; font-weight: 600; letter-spacing: .04em; }
.reel-card__text { position: absolute; inset: auto 12px 12px; z-index: 1; display: grid; gap: 3px; }
.reel-card__project { font-size: .68rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #B8F36A; }
.reel-card__title { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; font-size: .9rem; line-height: 1.35; }
.block .reel-cards .reel-cards__rail { grid-auto-columns: clamp(140px, 36vw, 190px); }
@media (prefers-reduced-motion: reduce) {
  .rb, .rv, .reel-card img, .reel-card video { transition: none; }
  .rb-media img.is-zoom { animation: none; }
}
/* Desktop: the up/down arrows sit right beside the video, not at the screen edge. */
@media (min-width: 601px) { .rv-nav { right: auto; left: min(calc(50% + (100dvh - 40px) * 9 / 32 + 20px), calc(100% - 66px)); } }
.reel-card video.is-frame { opacity: 1; }

/* =====================================================================
   Blog: listing tools, lead card, share bars, previous / next
   ===================================================================== */
.blog-tools { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px 24px; margin-bottom: clamp(22px, 3vw, 34px); }
.blog-cats { display: flex; flex-wrap: wrap; gap: 8px; }
.blog-cat { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 6px 14px; border: 1px solid rgba(18, 63, 50, .18); border-radius: 4px; background: #FFFFFF; font-size: .9rem; color: var(--basalt); text-decoration: none; transition: border-color .15s, background-color .15s; }
.blog-cat span { font-size: .78rem; color: var(--muted); }
.blog-cat:hover { border-color: #2F7F46; }
.blog-cat[aria-current="page"] { border-color: #2F7F46; background: #2F7F46; color: #FFFFFF; }
.blog-cat[aria-current="page"] span { color: #CFEFB0; }
.blog-cat:focus-visible { outline: 2px solid #2F7F46; outline-offset: 2px; }
.blog-search { position: relative; flex: 0 1 300px; }
.blog-search .icon { position: absolute; left: 14px; top: 50%; width: 17px; height: 17px; transform: translateY(-50%); color: var(--muted); pointer-events: none; }
.blog-search input { width: 100%; min-height: 44px; padding: 10px 14px 10px 40px; font: inherit; font-size: .95rem; border: 1px solid rgba(18, 63, 50, .18); border-radius: 4px; background: #FFFFFF; }
.blog-search input:focus { outline: none; border-color: #2F7F46; box-shadow: 0 0 0 3px rgba(184, 243, 106, .45); }
.blog-result-note { margin: -10px 0 22px; color: var(--muted); }
@media (max-width: 700px) { .blog-search { flex-basis: 100%; } .blog-cats { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin: 0 calc(var(--gutter) * -1); padding: 0 var(--gutter); } .blog-cats::-webkit-scrollbar { display: none; } .blog-cat { flex: none; } }

.blog-lead { margin-bottom: clamp(26px, 4vw, 44px); }
.post-card--lead { display: grid; gap: 0; }
@media (min-width: 900px) {
  .post-card--lead { grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); align-items: stretch; }
  .post-card--lead .post-card-media { height: 100%; }
  .post-card--lead .post-card-media img { height: 100%; object-fit: cover; }
  .post-card--lead .post-card-body { display: flex; flex-direction: column; justify-content: center; padding: clamp(24px, 3vw, 44px); }
}
.post-card--lead .post-card-title { font-size: clamp(1.5rem, 1.2vw + 1.1rem, 2.1rem); line-height: 1.2; }
.post-card-more { margin-top: 16px; align-self: flex-start; }

/* Share rows */
.share { position: relative; }
.share-list { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.share-list li[hidden] { display: none; }
.share-btn { display: inline-grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 1px solid rgba(18, 63, 50, .16); border-radius: 50%; background: #FFFFFF; color: var(--basalt); cursor: pointer; text-decoration: none; transition: background-color .15s, color .15s, border-color .15s, transform .15s; }
.share-btn:hover { transform: translateY(-2px); }
.share-btn:focus-visible { outline: 2px solid #2F7F46; outline-offset: 2px; }
.share-name { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.share-btn--whatsapp:hover { background: #25D366; border-color: #25D366; color: #FFFFFF; }
.share-btn--facebook:hover { background: #1877F2; border-color: #1877F2; color: #FFFFFF; }
.share-btn--linkedin:hover { background: #0A66C2; border-color: #0A66C2; color: #FFFFFF; }
.share-btn--x:hover { background: #000000; border-color: #000000; color: #FFFFFF; }
.share-btn--telegram:hover { background: #229ED9; border-color: #229ED9; color: #FFFFFF; }
.share-btn--pinterest:hover { background: #E60023; border-color: #E60023; color: #FFFFFF; }
.share-btn--email:hover, .share-btn--copy:hover { background: #2F7F46; border-color: #2F7F46; color: #FFFFFF; }
.share-btn--native { width: auto; gap: 8px; padding: 0 16px; border-radius: 20px; grid-auto-flow: column; background: #2F7F46; border-color: #2F7F46; color: #FFFFFF; font: inherit; font-size: .9rem; font-weight: 500; }
.share-toast { position: absolute; left: 0; top: calc(100% + 8px); z-index: 5; padding: 6px 12px; border-radius: 4px; background: #13241A; color: #FFFFFF; font-size: .82rem; opacity: 0; transform: translateY(-4px); transition: opacity .2s, transform .2s; pointer-events: none; }
.share-toast.is-on { opacity: 1; transform: none; }
.share--inline { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; margin-top: 20px; }
.share-label { font-size: .78rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.share--end { margin: clamp(28px, 4vw, 40px) 0; padding: 22px 24px; border: 1px solid rgba(18, 63, 50, .14); border-left: 3px solid #2F7F46; border-radius: 6px; background: #F4F6F3; }
.share-lead { margin: 0 0 14px; font-weight: 500; color: var(--basalt); }

/* Floating: a vertical bar on wide screens, a round button elsewhere */
.share--float { position: fixed; z-index: 64; }
.share--float[hidden] { display: none; }
.share-toggle { display: none; }
@media (min-width: 1280px) {
  .share--float { left: max(16px, calc((100vw - 1240px) / 2 - 64px)); top: 50%; transform: translateY(-50%); }
  .share--float .share-list { flex-direction: column; gap: 8px; }
  .share--float .share-native-li { display: none; }
}
@media (max-width: 1279px) {
  .share--float { right: 24px; bottom: 112px; display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
  .share-toggle { display: grid; place-items: center; width: 50px; height: 50px; padding: 0; border: 0; border-radius: 50%; background: #2F7F46; color: #FFFFFF; box-shadow: 0 10px 24px -8px rgba(15, 42, 28, .5); cursor: pointer; }
  .share-toggle .icon, .share-toggle svg { width: 20px; height: 20px; }
  .share-toggle:focus-visible { outline: 3px solid #B8F36A; outline-offset: 2px; }
  .share--float .share-list { order: -1; display: none; flex-direction: column; padding: 8px; border-radius: 30px; background: #FFFFFF; box-shadow: 0 16px 40px -14px rgba(15, 42, 28, .45); }
  .share--float.is-open .share-list { display: flex; }
  .share--float .share-native-li { display: none; }
}
@media (max-width: 899px) { .share--float { right: 12px; bottom: calc(62px + env(safe-area-inset-bottom) + 14px); } }

/* Previous / next */
.post-nav { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; margin: clamp(28px, 4vw, 40px) 0 0; }
.post-nav__link { display: grid; gap: 6px; padding: 16px 18px; border: 1px solid rgba(18, 63, 50, .14); border-radius: 6px; text-decoration: none; color: var(--basalt); transition: border-color .15s, background-color .15s; }
.post-nav__link:hover { border-color: #2F7F46; background: #F4F6F3; }
.post-nav__link--next { text-align: right; }
.post-nav__dir { display: inline-flex; align-items: center; gap: 6px; font-size: .78rem; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; color: #2F7F46; }
.post-nav__link--next .post-nav__dir { justify-content: flex-end; }
.post-nav__dir .icon { width: 14px; height: 14px; }
.post-nav__title { font-family: var(--font-display); font-size: 1.1rem; line-height: 1.3; }
@media print { .share, .post-nav { display: none !important; } }
@media (prefers-reduced-motion: reduce) { .share-btn, .share-toast { transition: none; } .share-btn:hover { transform: none; } }

/* ---- Article header: tidy breadcrumb, category tag, balanced title, byline with share ---- */
.article-head { padding: clamp(28px, 4vw, 52px) 0 clamp(22px, 3vw, 34px); }
/* The article's own title is already the big heading: the breadcrumb stops at the category, on one line. */
.article-head .breadcrumbs { margin-bottom: 20px; font-size: .84rem; }
.article-head .breadcrumbs ol { flex-wrap: nowrap; overflow: hidden; white-space: nowrap; }
.article-head .breadcrumbs li:last-child:not(:first-child) { display: none; }
.article-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin: 0 0 16px; font-size: .86rem; color: var(--muted); }
.article-cat { display: inline-flex; align-items: center; min-height: 28px; padding: 3px 10px; border: 1px solid rgba(47, 127, 70, .35); border-radius: 3px; background: #F4F6F3; font-size: .74rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: #2F7F46 !important; text-decoration: none; }
.article-cat:hover { border-color: #2F7F46; background: #EAF3E6; }
.article-meta__item { display: inline-flex; align-items: center; gap: 6px; }
.article-meta__item .icon { width: 15px; height: 15px; }
.article-title { margin: 0; font-size: clamp(2rem, 2.2vw + 1.1rem, 3.1rem); line-height: 1.12; letter-spacing: -.01em; text-wrap: balance; }
.article-title--long { font-size: clamp(1.75rem, 1.6vw + 1.05rem, 2.6rem); line-height: 1.16; }
.article-byline { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 24px; margin-top: clamp(20px, 2.6vw, 28px); padding-top: 18px; border-top: 1px solid rgba(18, 63, 50, .12); }
.article-byline__who { display: flex; align-items: center; gap: 12px; }
.article-byline__who p { display: grid; gap: 2px; margin: 0; font-size: .9rem; line-height: 1.35; }
.article-byline__name { font-weight: 500; color: var(--basalt); }
.article-byline__date { color: var(--muted); font-size: .84rem; }
.article-avatar { display: grid; place-items: center; flex: none; width: 42px; height: 42px; border-radius: 50%; background: #2F7F46; color: #B8F36A; font-family: var(--font-display); font-size: 1.15rem; }
.article-byline .share--inline { margin-top: 0; }
@media (max-width: 599px) {
  .article-byline { align-items: flex-start; }
  .article-byline .share--inline { width: 100%; }
  .article-byline .share-label { display: none; }
}
@media (max-width: 599px) {
  .article-byline .share-list { flex-wrap: nowrap; gap: 6px; }
  .article-byline .share-btn:not(.share-btn--native) { width: 36px; height: 36px; }
  .article-byline .share-btn svg { width: 16px; height: 16px; }
}
@media (max-width: 359px) { .article-byline .share-list { flex-wrap: wrap; } }

/* Footer: the bundled designed image is already toned dark green with a dark left side,
   so it takes a lighter wash than an uploaded photo; a faint shadow keeps text crisp on
   the few bright edges of the facade. */
.site-footer .site-footer__media--designed::after { background: linear-gradient(90deg, rgba(7, 43, 30, .35) 0%, rgba(7, 43, 30, .26) 55%, rgba(7, 43, 30, .3) 100%); }
.site-footer .site-footer__media--designed img { object-position: center 40%; }
.site-footer:has(.site-footer__media--designed) .site-footer__container { text-shadow: 0 1px 2px rgba(3, 20, 13, .45); }
@media (max-width: 759px) {
  .site-footer .site-footer__media--designed::after { background: linear-gradient(180deg, rgba(7, 43, 30, .3), rgba(7, 43, 30, .3)); }
  .site-footer .site-footer__media--designed img { object-position: center bottom; }
}

/* =====================================================================
   Footer artwork (default when no footer photo is set in Settings).
   Vector only: a perforated-mesh pattern like the Tonino facade, a soft lime glow
   behind the slogan, and a line-art skyline standing on the legal bar. Nothing is a
   photo, so it stays sharp on every screen, from phones to 4K.
   ===================================================================== */
.site-footer .site-footer__media--art {
  background:
    radial-gradient(42% 60% at 84% 88%, rgba(184, 243, 106, .13), transparent 70%),
    radial-gradient(60% 80% at 100% 0%, rgba(124, 203, 99, .08), transparent 70%),
    linear-gradient(180deg, #0C3124 0%, #0A2B1F 100%);
}
.site-footer .site-footer__media--art::after {
  content: ""; position: absolute; inset: 0;
  background: url("../img/sg-footer-mesh.svg") repeat;
  background-size: 14px 24.249px;
  -webkit-mask-image: radial-gradient(75% 95% at 100% 85%, #000 0%, rgba(0, 0, 0, .55) 45%, transparent 80%);
  mask-image: radial-gradient(75% 95% at 100% 85%, #000 0%, rgba(0, 0, 0, .55) 45%, transparent 80%);
}
.site-footer .site-footer__container { position: relative; z-index: 1; }
.site-footer .site-footer__skyline { position: relative; z-index: 0; height: 0; pointer-events: none; }
.site-footer .site-footer__skyline img {
  position: absolute; right: 0; bottom: 0; width: min(1400px, 100%); height: auto; opacity: .5;
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 38%);
  mask-image: linear-gradient(90deg, transparent 0%, #000 38%);
}
.site-footer .site-footer__legal { z-index: 1; }
@media (max-width: 759px) {
  .site-footer .site-footer__media--art::after {
    -webkit-mask-image: linear-gradient(180deg, transparent 30%, rgba(0, 0, 0, .5) 70%, #000 100%);
    mask-image: linear-gradient(180deg, transparent 30%, rgba(0, 0, 0, .5) 70%, #000 100%);
  }
  .site-footer .site-footer__skyline img { width: auto; height: 170px; max-width: none; opacity: .45; -webkit-mask-image: none; mask-image: none; }
}
/* the skyline is line art on a transparent background: no image placeholder colour, and kept low */
.site-footer .site-footer__skyline img { background: none; width: min(1060px, 74%); max-height: 270px; opacity: .42; object-fit: contain; object-position: right bottom; }
@media (max-width: 759px) { .site-footer .site-footer__skyline img { width: auto; max-width: none; height: 150px; max-height: none; opacity: .4; } }

/* ==========================================================================
   Rent and resale unit pages (/rent/{project}/{unit}, /resale/{project}/{unit})
   Built from the existing tokens; nothing above is changed.
   ========================================================================== */
.unit-head { padding: clamp(22px, 3.2vw, 38px) 0 clamp(24px, 3.4vw, 40px); background: var(--ivory); border-bottom: 1px solid var(--sand); }
.unit-head-grid { display: grid; gap: 26px clamp(28px, 4vw, 60px); align-items: start; }
@media (min-width: 960px) { .unit-head-grid { grid-template-columns: minmax(0, 1fr) 360px; align-items: center; } }
.unit-head .kicker a { color: inherit; text-decoration: none; }
.unit-head .kicker a:hover { text-decoration: underline; }
.unit-title { max-width: 26ch; font-size: clamp(2rem, 2.6vw + 1rem, 3.4rem); }
.unit-loc { display: flex; gap: 8px; align-items: flex-start; color: var(--basalt-2); font-size: 1.05rem; margin: 0 0 18px; }
.unit-loc .icon { color: var(--accent); flex: none; margin-top: 3px; }
.unit-chips { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0; padding: 0; }
.unit-chips li { padding: 6px 14px; border: 1px solid var(--sand); border-radius: 999px; background: var(--card); font-size: .92rem; color: var(--basalt); }
.unit-gone { display: flex; gap: 10px; align-items: flex-start; margin: 18px 0 0; padding: 12px 14px; border-left: 3px solid var(--danger); background: color-mix(in srgb, var(--danger) 8%, #FFFFFF); color: var(--basalt); font-size: .96rem; max-width: 46rem; }
.unit-gone .icon { color: var(--danger); flex: none; margin-top: 2px; }
.unit-gone--hold { border-left-color: #B7862C; background: #FBF5E8; }
.unit-gone--hold .icon { color: #8A6418; }
.unit-price-card { background: var(--card); border: 1px solid var(--sand); border-top: 2px solid var(--leaf); border-radius: var(--radius); padding: clamp(18px, 2vw, 24px); }
.unit-price-label { margin: 0; font-size: .85rem; color: var(--muted); }
.unit-price { margin: 2px 0 4px; font-family: var(--font-display); font-size: clamp(1.9rem, 1.4vw + 1.2rem, 2.5rem); color: var(--basalt); line-height: 1.1; }
.unit-price small { font-family: var(--font-text); font-size: 1rem; color: var(--muted); }
.unit-price-sub { margin: 0 0 14px; font-size: .92rem; color: var(--muted); }
.unit-actions { display: grid; gap: 10px; margin-top: 14px; }
.unit-ref { margin: 14px 0 0; font-size: .85rem; color: var(--muted); }
.unit-ref strong { color: var(--basalt); font-weight: 500; }
.unit-gallery-wrap { padding: clamp(18px, 2.4vw, 28px) 0 0; }
@media (min-width: 800px) {
  .unit-gallery--many { grid-template-columns: repeat(4, 1fr); }
  .unit-gallery--many .gallery-lead { grid-column: 1 / 3; grid-row: 1 / 3; }
  .unit-gallery--many .gallery-lead .gallery-item { aspect-ratio: 4 / 3; height: 100%; }
  .unit-gallery--two { grid-template-columns: repeat(2, 1fr); }
  .unit-gallery--two .gallery-lead { grid-column: auto; }
  .unit-gallery--two .gallery-item, .unit-gallery--two .gallery-lead .gallery-item { aspect-ratio: 4 / 3; }
}
.unit-gallery--single { grid-template-columns: 1fr; }
.unit-gallery--single .gallery-lead .gallery-item { aspect-ratio: 21 / 9; max-height: 560px; }
.unit-layout { display: grid; gap: 36px clamp(32px, 4vw, 60px); padding-block: clamp(28px, 4vw, 48px); align-items: start; }
@media (min-width: 1000px) { .unit-layout { grid-template-columns: minmax(0, 1fr) 360px; } }
.unit-main { min-width: 0; }
.unit-aside { min-width: 0; }
@media (min-width: 1000px) { .unit-aside { position: sticky; top: calc(var(--header-h) + 20px); } }
.unit-summary { margin-top: 0; }
.unit-notes { margin-top: 14px; color: var(--text); }
.unit-facts { margin-top: 10px; }
.unit-more { display: flex; flex-wrap: wrap; gap: 14px 26px; margin: 18px 0 0; }
.unit-more .icon { display: inline-block; vertical-align: -4px; width: 18px; height: 18px; }
.unit-more .text-link { min-width: 0; white-space: normal; }
.unit-form-card .lead-form { margin-top: 12px; }
.unit-card-link { display: block; width: 100%; height: 100%; }
.unit-card-title a { text-decoration: none; color: inherit; }
.unit-card-title a:hover { color: var(--accent-ink); text-decoration: underline; }
.unit-card-foot { flex-wrap: wrap; }
.unit-card-foot .unit-card-more { margin-left: auto; }
.unit-card-foot .price + .unit-card-more + .btn, .unit-card-foot .unit-card-more + .btn { margin-left: 0; }

/* Homepage "Resale and rent": unit cards, four in view on a desktop, basic details only */
.resale-rent-section .rrs-rail--units { grid-auto-columns: 82%; gap: 20px; }
@media (min-width: 640px) { .resale-rent-section .rrs-rail--units { grid-auto-columns: calc((100% - 20px) / 2); } }
@media (min-width: 960px) { .resale-rent-section .rrs-rail--units { grid-auto-columns: calc((100% - 40px) / 3); } }
@media (min-width: 1200px) { .resale-rent-section .rrs-rail--units { grid-auto-columns: calc((100% - 60px) / 4); } }
.resale-rent-section .rrs-unit { border-radius: 12px; }
.resale-rent-section .rrs-unit .rrs-media { aspect-ratio: 4 / 3; }
.resale-rent-section .rrs-unit .rrs-body { padding: 16px 18px 14px; }
.resale-rent-section .rrs-unit-title { margin: 0 0 8px; font-family: var(--font-text); font-weight: 500; font-size: 1.04rem; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.7em; }
.resale-rent-section .rrs-unit .rrs-loc { margin: 0 0 12px; font-size: .86rem; min-width: 0; }
.resale-rent-section .rrs-unit .rrs-loc span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.resale-rent-section .rrs-facts { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 14px; padding: 0; list-style: none; }
.resale-rent-section .rrs-facts li { padding: 4px 10px; border-radius: 999px; background: #EEF5F0; color: var(--green-800); font-size: .78rem; line-height: 1.4; }
.resale-rent-section .rrs-price { margin: 0; font-size: 1.12rem; font-weight: 600; color: var(--basalt); white-space: nowrap; }
.resale-rent-section .rrs-price small { margin-left: 2px; font-size: .8rem; font-weight: 400; color: var(--muted); }
.resale-rent-section .rrs-unit .rrs-cta { gap: 8px; font-size: .84rem; white-space: nowrap; }
.resale-rent-section .rrs-unit .rrs-circle { width: 30px; height: 30px; }
.resale-rent-section .rrs-unit .rrs-badge { font-size: .62rem; }
.resale-rent-section .rrs-unit .rrs-units { font-size: .76rem; padding: 5px 10px; }
.unit-main #amenities .feature-glyph { color: var(--leaf); }
.unit-main #amenities .feature-text { color: #B8C4BC; }
.unit-main #amenities .feature-card { border-right-color: rgba(255, 255, 255, .12); }

/* ---------- Content protection (flags set on <html data-protect>) ---------- */
html[data-protect~="sel"] body { -webkit-user-select: none; -moz-user-select: none; user-select: none; }
html[data-protect~="sel"] :is(input, textarea, select, [contenteditable="true"], .allow-copy, .lead-form) { -webkit-user-select: text; -moz-user-select: text; user-select: text; }
html[data-protect~="img"] img, html[data-protect~="img"] video { -webkit-user-drag: none; -webkit-touch-callout: none; user-select: none; }
html[data-protect~="img"] .gallery-item, html[data-protect~="img"] .unit-card-media, html[data-protect~="img"] .hero-slide { -webkit-touch-callout: none; }
.protect-toast { position: fixed; left: 50%; bottom: calc(24px + env(safe-area-inset-bottom)); z-index: 9999; transform: translate(-50%, 12px); max-width: min(92vw, 440px); padding: 10px 16px; border-radius: 6px; background: #13241A; color: #FFFFFF; font-size: .9rem; line-height: 1.4; text-align: center; box-shadow: 0 8px 24px rgba(0, 0, 0, .2); opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s; }
.protect-toast.is-on { opacity: 1; transform: translate(-50%, 0); }
@media print {
  html[data-protect~="print"] body > * { display: none !important; }
  html[data-protect~="print"] body::before { content: "Printing is disabled on this website. Please visit the page online or contact us for a copy."; display: block; padding: 40px; font: 16px/1.5 sans-serif; color: #000; }
}

/* ==========================================================================
   Search and listing pages: smart search, grid / list view, project chips
   ========================================================================== */

/* Smart search box in the rent / resale filter bar */
.filter-bar--smart .field--search { grid-column: 1 / -1; position: relative; }
@media (min-width: 900px) { .filter-bar--smart .field--search { grid-column: span 2; } }
.lsearch { position: relative; }
.lsearch .icon { position: absolute; left: 14px; top: 50%; width: 18px; height: 18px; transform: translateY(-50%); color: var(--on-dark-muted); pointer-events: none; }
.field .lsearch input { padding-left: 42px; }
/* Suggestions under the in-page search boxes (the header one keeps its own position) */
.field--search .search-results, .pf-search .search-results { left: 0; right: 0; top: calc(100% + 6px); z-index: 30; text-align: left; }
.search-results .sr-smart a { background: #EEF5F0; }
.search-results .sr-smart strong { color: var(--green-800); }
.search-results .sr-smart span::before { content: "✦ "; color: var(--accent); }
.search-results .sr-unit span { white-space: nowrap; }

/* What smart search understood */
.smart-read { display: flex; gap: 10px; align-items: flex-start; margin: -6px 0 18px; padding: 10px 14px; border: 1px solid var(--green-100); border-radius: 10px; background: var(--green-50); font-size: .92rem; color: var(--basalt-2); }
.smart-read p { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; }
.smart-read-icon { width: 18px; height: 18px; flex: none; margin-top: 3px; color: var(--accent); }
.smart-read-label { color: var(--muted); }
.smart-read-chip { padding: 2px 10px; border-radius: 999px; background: #FFFFFF; border: 1px solid var(--green-200); color: var(--green-800); font-weight: 500; }
.smart-read-note { color: var(--muted); }
.smart-read .text-link .icon { width: 16px; height: 16px; display: inline-block; vertical-align: -3px; }

/* Grid / list switch */
.results-scope { position: relative; }
.view-toggle { position: absolute; right: 0; top: -6px; z-index: 2; display: inline-flex; border: 1px solid var(--sand); border-radius: 8px; overflow: hidden; background: var(--card); }
.view-toggle[hidden] { display: none; }
.view-toggle-btn { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border: 0; background: none; color: var(--muted); font-size: .88rem; }
.view-toggle-btn + .view-toggle-btn { border-left: 1px solid var(--sand); }
.view-toggle-btn .icon { width: 17px; height: 17px; }
.view-toggle-btn[aria-pressed="true"] { background: var(--green-600); color: #FFFFFF; }
.view-toggle-btn:hover:not([aria-pressed="true"]) { color: var(--basalt); background: var(--green-50); }
@media (max-width: 520px) { .view-toggle-btn span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); } .view-toggle-btn { padding: 8px 10px; } }
.results-scope .results-count { min-height: 36px; display: flex; align-items: center; padding-right: 150px; }

/* List view: projects */
[data-layout="list"] .card-grid { grid-template-columns: 1fr; gap: 18px; }
[data-layout="list"] .card-grid .project-card { display: grid; grid-template-columns: minmax(0, 34%) minmax(0, 1fr); border: 1px solid var(--sand); background: var(--card); }
[data-layout="list"] .card-grid .project-card-media { aspect-ratio: auto; height: 100%; min-height: 190px; }
[data-layout="list"] .card-grid .project-card-body { padding: 18px 22px; }
[data-layout="list"] .card-grid .project-card-title { font-size: 1.45rem; }
/* List view: rent and resale units */
[data-layout="list"] .unit-grid { grid-template-columns: 1fr; gap: 18px; }
[data-layout="list"] .unit-grid .unit-card { display: grid; grid-template-columns: minmax(0, 32%) minmax(0, 1fr); }
[data-layout="list"] .unit-grid .unit-card-media { aspect-ratio: auto; height: 100%; min-height: 200px; }
[data-layout="list"] .unit-grid .unit-card-link { position: absolute; inset: 0; }
[data-layout="list"] .unit-grid .unit-card-media img { position: absolute; inset: 0; }
@media (min-width: 900px) { [data-layout="list"] .unit-grid .specs { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 640px) {
  [data-layout="list"] .card-grid .project-card, [data-layout="list"] .unit-grid .unit-card { grid-template-columns: 38% minmax(0, 1fr); }
  [data-layout="list"] .card-grid .project-card-media, [data-layout="list"] .unit-grid .unit-card-media { min-height: 140px; }
  [data-layout="list"] .card-grid .project-card-body, [data-layout="list"] .unit-grid .unit-card-body { padding: 12px 14px; }
  [data-layout="list"] .card-grid .project-card-title { font-size: 1.12rem; }
  [data-layout="list"] .card-grid .project-card-type, [data-layout="list"] .unit-grid .specs > div:nth-child(n+3) { display: none; }
  [data-layout="list"] .unit-grid .unit-card-title { font-size: 1rem; }
  [data-layout="list"] .unit-grid .unit-card-foot .btn { padding: 6px 10px; min-height: 34px; font-size: .82rem; }
}

/* Long rows of project chips: two rows + "View more" on desktop, swipe + small arrows on phones */
.chip-scroller { position: relative; margin-bottom: 28px; }
.chip-scroller .chip-row { margin-bottom: 0; }
.chip-scroller.is-collapsed .chip-scroller-track { max-height: 104px; overflow: hidden; -webkit-mask-image: linear-gradient(180deg, #000 72%, transparent); mask-image: linear-gradient(180deg, #000 72%, transparent); }
.chip-more { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; padding: 6px 14px; border: 1px solid var(--sand); border-radius: 999px; background: var(--card); color: var(--accent-ink); font-size: .9rem; font-weight: 500; }
.chip-more .icon { width: 16px; height: 16px; transition: transform .2s; }
.chip-more[aria-expanded="true"] .icon { transform: rotate(180deg); }
.chip-more[hidden], .chip-arrow[hidden] { display: none; }
.chip-arrow { position: absolute; top: 50%; z-index: 2; display: grid; place-items: center; width: 28px; height: 28px; padding: 0; border: 1px solid var(--sand); border-radius: 50%; background: #FFFFFF; color: var(--green-800); box-shadow: 0 4px 10px -6px rgba(0, 0, 0, .35); transform: translateY(-50%); }
.chip-arrow .icon { width: 15px; height: 15px; }
.chip-arrow:disabled { opacity: .35; }
.chip-arrow--prev { left: -4px; }
.chip-arrow--next { right: -4px; }
@media (max-width: 767px) {
  .chip-scroller { padding: 0 26px; }
  .chip-scroller.is-ready .chip-scroller-track { flex-wrap: nowrap; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; -webkit-overflow-scrolling: touch; padding: 2px 0; }
  .chip-scroller.is-ready .chip-scroller-track::-webkit-scrollbar { display: none; }
  .chip-scroller.is-ready .chip { flex: none; scroll-snap-align: start; white-space: nowrap; }
}
