/* Metric-matched fallbacks: Georgia/Arial (Windows, Mac) and Noto Serif/Roboto (Android)
   scaled to Newsreader/Hanken Grotesk widths (measured in Chromium, 2026-09-30), so the
   async web-font swap doesn't reflow headings and shift the page (CLS). */
@font-face{font-family:"Newsreader Fallback G";src:local("Georgia");font-weight:400;size-adjust:101.3%;ascent-override:0.73%;descent-override:0.27%;line-gap-override:0%}
@font-face{font-family:"Newsreader Fallback G";src:local("Georgia");font-weight:500;size-adjust:104.24%;ascent-override:0.71%;descent-override:0.26%;line-gap-override:0%}
@font-face{font-family:"Newsreader Fallback G";src:local("Georgia Bold"),local("Georgia-Bold");font-weight:600;size-adjust:92.42%;ascent-override:0.80%;descent-override:0.29%;line-gap-override:0%}
@font-face{font-family:"Newsreader Fallback N";src:local("Noto Serif"),local("NotoSerif-Regular");font-weight:400;size-adjust:95.27%;ascent-override:0.78%;descent-override:0.28%;line-gap-override:0%}
@font-face{font-family:"Newsreader Fallback N";src:local("Noto Serif Medium"),local("NotoSerif-Medium"),local("Noto Serif"),local("NotoSerif-Regular");font-weight:500;size-adjust:98.03%;ascent-override:0.75%;descent-override:0.28%;line-gap-override:0%}
@font-face{font-family:"Newsreader Fallback N";src:local("Noto Serif SemiBold"),local("NotoSerif-SemiBold"),local("Noto Serif Bold"),local("NotoSerif-Bold");font-weight:600;size-adjust:95.34%;ascent-override:0.78%;descent-override:0.28%;line-gap-override:0%}
@font-face{font-family:"Hanken Grotesk Fallback A";src:local("Arial"),local("ArialMT");font-weight:400;size-adjust:99.71%;ascent-override:1.00%;descent-override:0.30%;line-gap-override:0%}
@font-face{font-family:"Hanken Grotesk Fallback A";src:local("Arial"),local("ArialMT");font-weight:500;size-adjust:99.7%;ascent-override:1.00%;descent-override:0.30%;line-gap-override:0%}
@font-face{font-family:"Hanken Grotesk Fallback A";src:local("Arial Bold"),local("Arial-BoldMT");font-weight:600;size-adjust:94.66%;ascent-override:1.06%;descent-override:0.32%;line-gap-override:0%}
@font-face{font-family:"Hanken Grotesk Fallback A";src:local("Arial Bold"),local("Arial-BoldMT");font-weight:700;size-adjust:95.18%;ascent-override:1.05%;descent-override:0.32%;line-gap-override:0%}
@font-face{font-family:"Hanken Grotesk Fallback R";src:local("Roboto"),local("Roboto-Regular");font-weight:400;size-adjust:101.0%;ascent-override:0.99%;descent-override:0.30%;line-gap-override:0%}
@font-face{font-family:"Hanken Grotesk Fallback R";src:local("Roboto Medium"),local("Roboto-Medium");font-weight:500;size-adjust:100.06%;ascent-override:1.00%;descent-override:0.30%;line-gap-override:0%}
@font-face{font-family:"Hanken Grotesk Fallback R";src:local("Roboto Medium"),local("Roboto-Medium");font-weight:600;size-adjust:99.95%;ascent-override:1.00%;descent-override:0.30%;line-gap-override:0%}
@font-face{font-family:"Hanken Grotesk Fallback R";src:local("Roboto Bold"),local("Roboto-Bold");font-weight:700;size-adjust:100.5%;ascent-override:1.00%;descent-override:0.30%;line-gap-override:0%}
:root {
  --coral: #ff5a5f;
  --coral-dark: #d6353a;
  --coral-soft: #ff8a8d;
  --ink: #1d2327;
  --ink-2: #14181b;
  --paper: #fbfaf8;
  --sand: #f1ece4;
  --card: #ffffff;
  --muted: #6e6a64;
  --line: #e7e3dc;
  --radius: 14px;
  --wrap: 1120px;
  --font-serif: "Newsreader", "Newsreader Fallback G", "Newsreader Fallback N", Georgia, "Times New Roman", serif;
  --font-sans: "Hanken Grotesk", "Hanken Grotesk Fallback A", "Hanken Grotesk Fallback R", -apple-system, system-ui, "Segoe UI", sans-serif;
}

* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
  /* clip, not hidden: stops sideways scroll without making <body> a
     scroll container (which silently breaks position:sticky on the
     header — badly so under the logged-in admin bar). !important because
     the Homeo parent theme still sets `body{overflow-x:hidden}` on pages
     this theme doesn't fully own (regular pages, Elementor pages), and
     its stylesheet loads after this one — without !important that hidden
     wins and the header renders 32px low on those pages only. */
  overflow-x: clip !important;
  max-width: 100%;
}

body {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

a {
  color: inherit;
  text-decoration: none;
}
a:hover {
  color: var(--coral-dark);
}

h1,
h2,
h3,
h4 {
  font-family: var(--font-serif);
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.01em;
  margin: 0;
  color: var(--ink);
}

p {
  margin: 0;
}
ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
img {
  max-width: 100%;
  display: block;
}
svg {
  display: block;
}

/* ---------- layout ---------- */
.wrap,
.container {
  max-width: var(--wrap);
  margin: 0 auto;
  padding: 0 40px;
}
.section {
  padding-top: 68px;
  padding-bottom: 68px;
}
.section-tight {
  padding-top: 44px;
  padding-bottom: 44px;
}
.band-dark {
  background: var(--ink);
  color: #fff;
}
.band-dark h1,
.band-dark h2,
.band-dark h3,
.band-dark h4 {
  color: #fff;
}
.band-sand {
  background: var(--sand);
}

.grid {
  display: grid;
  gap: 24px;
}
/* bare .grid (used by the properties list) flows into responsive columns */
.grid:not([class*="grid-"]) {
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
.grid-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.grid-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.grid-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.grid-6 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: center;
}

@media (max-width: 900px) {
  .wrap,
  .container {
    padding: 0 20px;
  }
  .grid-3,
  .grid-4,
  .grid-6 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .split {
    grid-template-columns: 1fr;
    gap: 32px;
  }
  .section {
    padding-top: 48px;
    padding-bottom: 48px;
  }
}
@media (max-width: 700px) {
  /* .grid-2 (e.g. homepage "Two ways to work with us") had no responsive
     rule — cards stayed 50/50 and crushed on phones. */
  .grid-2 {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 560px) {
  .grid-3,
  .grid-4,
  .grid-6 {
    grid-template-columns: 1fr;
  }
}

/* ---------- home hero ---------- */
.hero {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: 56px;
  align-items: center;
  padding-top: 72px;
  padding-bottom: 80px;
}
/* Hero heading hierarchy — H1 (.h-hero) -> tagline -> lead body ->
   closing line. 2026-09-12. */
.hero-tagline {
  font-size: clamp(17px, 1.7vw, 20px);
  font-weight: 700;
  color: var(--ink);
  line-height: 1.35;
  max-width: 34rem;
}
.hero-close {
  color: var(--ink);
  font-weight: 500;
}
.hero-trust span {
  line-height: 1.3;
}
.hero-art {
  position: relative;
  background: var(--sand);
  border-radius: 18px;
  height: 460px;
  overflow: hidden;
}
.hero-art-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}
/* soft scrim so the floating listing card stays readable on the photo */
.hero-art::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg, rgba(29, 35, 39, 0) 45%, rgba(29, 35, 39, 0.3) 100%);
  pointer-events: none;
}
.hero-art .card {
  z-index: 2;
}
/* ---------- smart search bar ---------- */
.smartsearch.ss-hero {
  margin-top: 32px;
}
.ss-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 8px 0 16px;
  min-height: 58px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: 0 12px 36px rgba(29, 35, 39, 0.07);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.ss-bar:focus-within {
  border-color: var(--coral);
  box-shadow: 0 12px 36px rgba(255, 90, 95, 0.14);
}
.ss-bar input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: 0;
  background: transparent;
  font: inherit;
  font-size: 15px;
  color: var(--ink);
  appearance: none;
}
.ss-bar input::placeholder {
  color: var(--muted);
}
.ss-bar .ss-go {
  min-height: 44px;
  padding: 0 20px;
  flex-shrink: 0;
  gap: 7px;
}
.ss-page .ss-bar {
  box-shadow: none;
}
.ss-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 14px;
}
.ss-chips-label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  /* Force its own line in the wrapping flex row — otherwise, once the
     .ss-chip links wrap past the first row, later rows start indented
     under "Try" instead of flush-left like the first. 2026-09-12. */
  flex-basis: 100%;
  margin-bottom: 2px;
}
.ss-chip {
  font: inherit;
  font-size: 12.5px;
  color: var(--ink);
  background: var(--sand);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 6px 12px;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.ss-chip:hover {
  background: #fff;
  border-color: var(--coral);
}

/* understood-filter pills on /properties */
.fpills {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 18px 0 6px;
}
.fpills-label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}
.fpill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  background: #fff5f5;
  border: 1px solid #f4d9d9;
  border-radius: 999px;
  padding: 5px 12px;
}
.fpill:hover {
  border-color: var(--coral);
}
.fpill span {
  color: var(--coral-dark);
  font-weight: 700;
}
.fpills-clear {
  font-size: 13px;
}
.filters-manual {
  margin-top: 14px;
}
.filters-manual > summary {
  font-size: 13px;
  font-weight: 600;
  color: var(--coral-dark);
  cursor: pointer;
  list-style: none;
  padding: 4px 0;
}
.filters-manual > summary::-webkit-details-marker {
  display: none;
}
.filters-manual > summary::before {
  content: "+ ";
}
.filters-manual[open] > summary::before {
  content: "− ";
}
.filters-manual .filters {
  margin-top: 12px;
}
@media (max-width: 980px) {
  .hero {
    grid-template-columns: 1fr;
    gap: 32px;
    padding-top: 44px;
    padding-bottom: 52px;
  }
  .hero-art {
    height: 280px;
  }
}
@media (max-width: 620px) {
  .hero-art {
    display: none;
  }
  .ss-bar .ss-go span {
    display: none;
  }
  .ss-bar .ss-go {
    padding: 0 14px;
  }
}

/* ---------- type ---------- */
.eyebrow {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--coral-dark);
}
.band-dark .eyebrow {
  color: var(--coral-soft);
}
.muted {
  color: var(--muted);
}
.band-dark .muted {
  color: rgba(255, 255, 255, 0.66);
}
.h-hero {
  font-size: clamp(34px, 5vw, 56px);
}
.h-1 {
  font-size: clamp(28px, 3.4vw, 38px);
}
.h-2 {
  font-size: clamp(24px, 2.6vw, 30px);
}
.lead {
  font-size: 17.5px;
  color: var(--muted);
  max-width: 34rem;
  text-wrap: pretty;
}

/* ---------- buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 46px;
  padding: 0 22px;
  border-radius: 999px;
  font-weight: 600;
  font-size: 14.5px;
  font-family: inherit;
  border: 1px solid transparent;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
.btn-coral,
.btn:not(.btn-ink):not(.btn-coral):not(.btn-wa):not(.btn-outline):not(.btn-light) {
  background: var(--coral);
  color: #fff;
}
.btn-outline {
  background: #fff;
  color: var(--ink);
  border-color: var(--line);
}
.btn-outline:hover {
  border-color: var(--coral);
  color: var(--coral-dark);
}
.btn-coral:hover {
  background: var(--coral-dark);
  color: #fff;
}
.btn-ink {
  background: transparent;
  color: var(--ink);
  border-color: var(--ink);
}
.btn-ink:hover {
  background: var(--ink);
  color: #fff;
}
.btn-full {
  width: 100%;
}
.lnk {
  font-weight: 600;
  font-size: 14px;
  color: var(--coral-dark);
  display: inline-flex;
  gap: 6px;
  align-items: center;
}
/* Toggle buttons ("Read full description", "+N more amenities", "Show all
   nearby places") use .lnk but kept the browser's grey button box. */
button.lnk {
  background: none;
  border: 0;
  padding: 4px 0;
  font-family: inherit;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
}
/* Land sections below the sticky header + section tabs when scrolled to. */
.detail-grid .psection {
  scroll-margin-top: 118px;
}

/* ---------- card ---------- */
.card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.card-pad {
  padding: 22px;
}

/* ---------- property card ---------- */
.pcard {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  display: block;
  transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.pcard:hover {
  box-shadow: 0 12px 30px rgba(29, 35, 39, 0.08);
  transform: translateY(-2px);
}
.pcard .thumb {
  position: relative;
  aspect-ratio: 3 / 2;
  background: #ece6db;
}
.pcard .thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pcard .badge {
  position: absolute;
  top: 12px;
  left: 12px;
  background: var(--coral);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  padding: 4px 9px;
  border-radius: 6px;
}
.pcard .body {
  padding: 16px 18px 20px;
}
.pcard .price {
  font-weight: 700;
  color: var(--coral-dark);
  font-size: 18px;
}
.pcard .title {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 15px;
  margin: 4px 0 2px;
  letter-spacing: 0;
}
.pcard .loc,
.pcard .meta {
  color: var(--muted);
  font-size: 13px;
}
.pcard .meta {
  margin-top: 10px;
  font-size: 12.5px;
}

/* ---------- header ---------- */
.site-header {
  border-bottom: 1px solid var(--line);
  background: var(--paper);
  position: sticky;
  top: 0;
  z-index: 30;
  transition: transform 0.25s ease;
}
/* Auto-hide on scroll down, reveal on scroll up — mobile only, toggled by
   theme.js adding/removing body.hdr-hidden. Reclaims the 74px header band
   for content on small screens instead of permanently occupying it. */
body.hdr-hidden .site-header {
  transform: translateY(var(--hdr-hide-y, -100%));
}
.site-header .bar {
  display: flex;
  align-items: center;
  gap: 28px;
  height: 74px;
  /* Wider than the 1120px content column: logo + full 7-item nav + the
     search box + Log in / Register / CTA genuinely need more room, and by
     a bit more on the Elementor/Homeo templates where the nav renders
     wider. A slightly full-width header band keeps everything visible and
     identical on every page instead of clipping the CTA inconsistently. */
  max-width: 1300px;
}
.brand {
  display: flex;
  align-items: center;
  flex-shrink: 0;
}
.brand img {
  display: block;
  height: 40px;
  width: auto;
}
@media (max-width: 560px) {
  .brand img {
    height: 34px;
  }
}
.site-header .bar > nav {
  display: flex;
  gap: 20px;
  font-size: 14.5px;
  font-weight: 500;
  flex-shrink: 0; /* nav keeps its width or hides at <=1180 — never squished */
}
.site-header .bar > nav a {
  white-space: nowrap;
}
.nav-item {
  position: relative;
}
.nav-item > a {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--ink);
}
.nav-caret {
  font-size: 10px;
  color: var(--muted);
  transition: transform 0.15s ease;
}
.nav-item:hover .nav-caret,
.nav-item:focus-within .nav-caret {
  transform: rotate(180deg);
}
.nav-sub {
  position: absolute;
  top: 100%;
  left: 0;
  padding-top: 14px;
  min-width: 190px;
  display: none;
  flex-direction: column;
  z-index: 40;
}
.nav-item:hover .nav-sub,
.nav-item:focus-within .nav-sub {
  display: flex;
}
.nav-sub::before {
  content: "";
  position: absolute;
  top: 14px;
  left: 0;
  right: 0;
  bottom: 0;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
  box-shadow: 0 16px 40px rgba(29, 35, 39, 0.12);
  z-index: -1;
}
.nav-sub a {
  padding: 9px 12px;
  margin: 4px;
  border-radius: 6px;
  font-size: 14px;
  font-weight: 500;
  color: var(--ink);
  white-space: nowrap;
}
.nav-sub a:hover {
  background: var(--sand);
  color: var(--coral-dark);
}
.nav-cta-post {
  color: var(--coral-dark) !important;
  font-weight: 700 !important;
  transition: color 0.15s ease;
}
.nav-cta-post:hover {
  color: var(--coral) !important;
}
.site-header .right {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 12px;
  flex: 0 1 auto;
  min-width: 0;
}
/* Everything in .right holds its size EXCEPT the search box, which
   absorbs the slack so the row (logo + full nav + actions) always fits
   inside the wrap and "Talk to an advisor" stays put on every template. */
.site-header .right > .login-link,
.site-header .right > .register-link,
.site-header .right > .btn,
.site-header .right > .asraa-mic {
  flex-shrink: 0;
}
.site-header .right .btn {
  white-space: nowrap;
}
.site-header .right > .searchbox {
  flex: 0 1 190px;
  min-width: 132px; /* stays a real search field; only gives back slack on tight laptops */
}
.site-header .right > .searchbox input {
  flex: 1 1 0;
  min-width: 0;
  width: auto;
}
.login-link,
.register-link {
  white-space: nowrap;
  flex-shrink: 0;
  font-size: 14.5px;
  font-weight: 500;
  color: var(--ink);
}
.login-link:hover,
.register-link:hover {
  color: var(--coral-dark);
}
.register-link {
  padding-left: 14px;
  border-left: 1px solid var(--line);
}
.acct-chip {
  flex-shrink: 0;
}
.acct-chip > a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14.5px;
  font-weight: 500;
  color: var(--ink);
  white-space: nowrap;
}
.acct-chip-avatar {
  display: inline-grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 999px;
  background: var(--coral);
  color: #fff;
  font-weight: 700;
  font-size: 12px;
  flex: none;
}
.acct-chip .nav-sub {
  left: auto;
  right: 0;
}
.site-header .phone {
  color: var(--muted);
  font-size: 14px;
  font-weight: 500;
}
.searchbox {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 7px 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--muted);
  background: #fff;
}
.searchbox:focus-within {
  border-color: var(--coral);
}
.searchbox input {
  border: none;
  outline: none;
  font: inherit;
  font-size: 14px;
  width: 110px;
  background: transparent;
}

/* ---------- voice search mic ---------- */
.micbtn {
  position: relative;
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  transition: color 0.15s ease, background 0.15s ease;
}
.micbtn:hover {
  color: var(--ink);
  background: rgba(29, 35, 39, 0.06);
}
.micbtn.is-live {
  color: #fff;
  background: var(--coral);
}
.micbtn-dot {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
}
.micbtn.is-live .micbtn-dot {
  box-shadow: 0 0 0 0 rgba(255, 90, 95, 0.5);
  animation: micpulse 1.4s ease-out infinite;
}
@keyframes micpulse {
  to {
    box-shadow: 0 0 0 12px rgba(255, 90, 95, 0);
  }
}
@media (prefers-reduced-motion: reduce) {
  .micbtn.is-live .micbtn-dot {
    animation: none;
  }
}
.hero-search .field .micbtn {
  margin-right: -6px;
}
/* ---------- mobile nav ---------- */
.hamburger {
  display: none;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  margin-right: -8px;
  border: none;
  background: transparent;
  cursor: pointer;
  color: var(--ink);
  flex-shrink: 0;
}
.hb {
  position: relative;
  width: 22px;
  height: 16px;
  display: block;
}
.hb i {
  position: absolute;
  left: 0;
  width: 100%;
  height: 2px;
  background: currentColor;
  border-radius: 2px;
  transition: transform 0.2s ease, opacity 0.2s ease, top 0.2s ease;
}
.hb i:nth-child(1) {
  top: 0;
}
.hb i:nth-child(2) {
  top: 7px;
}
.hb i:nth-child(3) {
  top: 14px;
}
.hb-open i:nth-child(1) {
  top: 7px;
  transform: rotate(45deg);
}
.hb-open i:nth-child(2) {
  opacity: 0;
}
.hb-open i:nth-child(3) {
  top: 7px;
  transform: rotate(-45deg);
}
.mobile-scrim {
  position: fixed;
  inset: 0;
  top: 74px;
  background: rgba(20, 24, 27, 0.4);
  z-index: 40;
  animation: scrim-in 0.15s ease;
}
@keyframes scrim-in {
  from {
    opacity: 0;
  }
}
.mobile-panel {
  background: var(--paper);
  border-bottom: 1px solid var(--line);
  padding: 18px 20px 24px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: calc(100vh - 74px);
  overflow-y: auto;
}
.mp-search {
  margin-bottom: 8px;
}
.mp-search .searchbox {
  width: 100%;
}
.mp-search .searchbox input {
  width: 100%;
}
.mp-links {
  display: flex;
  flex-direction: column;
}
.mp-links a {
  display: block;
  padding: 13px 2px;
  font-size: 16px;
  font-weight: 500;
  border-bottom: 1px solid var(--line);
}
.mp-highlight a {
  color: var(--coral-dark);
  font-weight: 700;
}
.mp-group summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 13px 2px;
  font-size: 16px;
  font-weight: 500;
  border-bottom: 1px solid var(--line);
  cursor: pointer;
  list-style: none;
}
.mp-group summary::-webkit-details-marker {
  display: none;
}
.mp-group summary::after {
  content: "+";
  font-size: 18px;
  color: var(--muted);
}
.mp-group[open] summary::after {
  content: "\2212";
}
.mp-group[open] summary {
  border-bottom-color: transparent;
}
.mp-group a {
  padding-left: 16px;
  font-size: 15px;
  color: var(--muted);
}
.mp-account {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  padding: 16px 2px 20px;
  font-size: 14px;
  font-weight: 500;
  color: var(--muted);
}
.mp-account-name {
  flex-basis: 100%;
  color: var(--ink);
  font-weight: 700;
}

@media (max-width: 1180px) {
  .site-header .bar > nav,
  .site-header .phone {
    display: none;
  }
  .site-header .bar {
    gap: 16px;
  }
  .hamburger {
    display: inline-flex;
  }
}
@media (max-width: 860px) {
  .site-header .bar {
    gap: 12px;
  }
  .site-header .bar > .right > .searchbox,
  .site-header .bar > .right > .login-link,
  .site-header .bar > .right > .register-link,
  .site-header .bar > .right > .btn {
    display: none;
  }
}

/* ---------- footer ---------- */
.site-footer {
  background: var(--ink-2);
  color: rgba(255, 255, 255, 0.62);
}
.site-footer a {
  color: rgba(255, 255, 255, 0.62);
}
.site-footer a:hover {
  color: #fff;
}
.site-footer .cols {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 28px;
  padding-top: 56px;
}
.site-footer h4 {
  color: #fff;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 13px;
  margin-bottom: 12px;
  letter-spacing: 0;
}
.site-footer ul {
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 13.5px;
}
.site-footer .foot-disclaimer {
  margin-top: 44px;
  padding-top: 22px;
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  width: 100%;
  font-size: 12px;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.5);
  text-align: justify;
}
.site-footer .foot-disclaimer a {
  color: rgba(255, 255, 255, 0.72);
  text-decoration: underline;
}
.site-footer .base {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 20px;
  padding: 22px 0 40px;
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  font-size: 12.5px;
}
@media (max-width: 860px) {
  .site-footer .cols {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .site-footer .base {
    flex-direction: column;
    gap: 12px;
    align-items: flex-start;
  }
}

/* ---------- pillars / steps ---------- */
.steps {
  display: grid;
  gap: 28px;
  margin-top: 40px;
}
.step .n {
  color: var(--coral-soft);
  font-weight: 700;
  font-size: 14px;
}
.band-sand .step .n,
.section .step .n {
  color: var(--coral-dark);
}
.step h3 {
  font-family: var(--font-sans);
  font-size: 17px;
  margin-top: 8px;
  letter-spacing: 0;
}
.step p {
  font-size: 14px;
  margin-top: 8px;
}

/* ---------- page head (sub-hero band) ---------- */
.page-head {
  background: var(--sand);
  border-bottom: 1px solid var(--line);
}
.page-head .inner {
  padding: 48px 0 40px;
}

/* ---------- breadcrumb ---------- */
.crumb {
  font-size: 13px;
  color: var(--muted);
  padding: 20px 0 0;
}
.crumb a:hover {
  color: var(--coral-dark);
}

/* ---------- property detail ---------- */
.detail-head {
  padding: 24px 0 4px;
}
.detail-head .ref {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--coral-dark);
}
.detail-head h1 {
  font-size: clamp(26px, 4vw, 40px);
  margin-top: 10px;
}
.detail-head .price {
  font-size: 24px;
  font-weight: 700;
  color: var(--coral-dark);
}
.spec {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 0;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  margin: 22px 0;
  overflow: hidden;
}
.spec > div {
  flex: 1 1 120px;
  padding: 16px 20px;
  border-right: 1px solid var(--line);
  font-size: 13px;
  color: var(--muted);
}
.spec > div:last-child {
  border-right: none;
}
.spec b {
  display: block;
  font-size: 18px;
  color: var(--ink);
  font-weight: 700;
}
.spec b.sm {
  font-size: 14px;
}

.detail-grid {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: 40px;
  align-items: start;
  margin-top: 8px;
}
/* grid children default to min-width:auto — without this, wide tables and
   grids inside .main push the whole column past the viewport on mobile. */
.detail-grid .main,
.detail-grid .side {
  min-width: 0;
}
.detail-grid .side {
  position: sticky;
  top: 96px;
}
@media (max-width: 900px) {
  .detail-grid {
    grid-template-columns: 1fr;
    gap: 24px;
  }
  .detail-grid .side {
    position: static;
  }
}

.gallery {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  margin: 16px 0 8px;
}
.gallery img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: 10px;
}
.chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 12px 0;
}
.chip {
  border: 1px solid var(--line);
  padding: 5px 12px;
  border-radius: 999px;
  font-size: 13px;
  color: var(--ink);
}
.sec-h {
  font-size: 20px;
  margin: 32px 0 4px;
}

/* ---------- property head: media + summary ---------- */
.phead {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(300px, 0.82fr);
  gap: 24px;
  margin-top: 14px;
  align-items: start;
}
@media (max-width: 980px) {
  .phead {
    grid-template-columns: 1fr;
    gap: 18px;
  }
}

/* media block — fixed frame, identical for every property */
.media {
  display: grid;
  grid-template-columns: 1.55fr 1fr;
  gap: 8px;
  width: 100%;
  height: 452px;
  border-radius: 14px;
  overflow: hidden;
}
.media.single {
  grid-template-columns: 1fr;
}
.media-big,
.media-tile {
  margin: 0;
  position: relative;
  background: #ece6db;
  overflow: hidden;
  cursor: pointer;
}
.media-big img,
.media-tile img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}
.media-big:hover img,
.media-tile:hover img {
  transform: scale(1.04);
}
.media-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 8px;
}
.media-tile.empty {
  background: repeating-linear-gradient(45deg, #ece6db, #ece6db 10px, #e5ded1 10px, #e5ded1 20px);
  cursor: default;
}
.media-more,
.media-counter,
.media-tag {
  position: absolute;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(20, 24, 27, 0.82);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  padding: 5px 10px;
  border-radius: 999px;
  backdrop-filter: blur(2px);
  z-index: 2;
}
.media-more {
  inset: 0;
  border-radius: 0;
  justify-content: center;
  background: rgba(20, 24, 27, 0.55);
  font-size: 14px;
}
.media-counter {
  right: 12px;
  bottom: 12px;
}
.media-tag {
  left: 12px;
  top: 12px;
}
.media-big.is-video::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(15, 18, 20, 0.26);
  z-index: 1;
}
.play-btn {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  border-radius: 999px;
  background: rgba(255, 90, 95, 0.94);
  color: #fff;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.35);
  z-index: 2;
}
.play-btn svg {
  width: 24px;
  height: 24px;
}
.play-btn.sm {
  width: 30px;
  height: 30px;
}
.play-btn.sm svg {
  width: 13px;
  height: 13px;
}

/* mobile / tablet media strip */
.media-strip {
  display: none;
  gap: 8px;
  margin-top: 8px;
  overflow-x: auto;
  scrollbar-width: none;
}
.media-strip::-webkit-scrollbar {
  display: none;
}
.media-thumb {
  flex: 0 0 auto;
  width: 96px;
  height: 66px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  overflow: hidden;
  background: #ece6db;
  cursor: pointer;
  position: relative;
}
.media-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@media (max-width: 980px) {
  .media {
    grid-template-columns: 1fr;
    height: auto;
  }
  .media-big {
    /* 16:10 at every width, phone through tablet. The <img> is pulled out of
       normal flow (position:absolute) so it can't feed its own height back
       and collapse aspect-ratio the way a height:100% grid-item child does —
       that bug made every property page a different height. */
    aspect-ratio: 16 / 10;
    height: auto;
  }
  .media-big img {
    position: absolute;
    inset: 0;
  }
  .media-big.pvideo {
    aspect-ratio: 16 / 9;
    height: auto;
  }
  .media-grid {
    display: none;
  }
  .media-strip {
    display: flex;
  }
}

/* summary column */
.phead-summary > * {
  margin-bottom: 10px;
}
.phead-summary > *:last-child {
  margin-bottom: 0;
}
.phead-summary > .saveshare {
  margin-top: 12px;
}
/* slight breathing room above the price */
.phead-summary > .phead-price {
  margin-top: 8px;
}
.rera-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: #0a7d33;
  background: #f2fbf4;
  border: 1px solid #bfe4c9;
  border-radius: 999px;
  padding: 4px 11px;
}
.phead-summary .ref {
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--muted);
}
.phead-summary h1 {
  font-size: clamp(21px, 2.3vw, 26px);
  line-height: 1.22;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.phead-addr {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  font-size: 13.5px;
  color: var(--muted);
}
.phead-addr svg {
  flex: none;
  margin-top: 2px;
}
.spec-rows {
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  margin: 2px 0;
}
.spec-rows li {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 8px 14px;
  border-top: 1px solid var(--line);
  font-size: 13px;
}
.spec-rows li:first-child {
  border-top: none;
}
.spec-ic {
  color: var(--coral-dark);
  display: inline-flex;
  flex: none;
  align-self: center;
}
.spec-label {
  color: var(--muted);
  flex: none;
}
.spec-val {
  font-weight: 700;
  text-align: right;
  margin-left: auto;
  min-width: 0;
  overflow-wrap: anywhere;
}
.phead-price {
  font-size: 24px;
  font-weight: 700;
  color: var(--coral-dark);
}
.phead-price small {
  font-size: 12px;
  font-weight: 500;
  color: var(--muted);
}
.contact-card {
  background: #fff6f6;
  border: 1px solid #f4d9d9;
  border-radius: 12px;
  padding: 14px;
  text-align: center;
}
.contact-card > .btn {
  margin-bottom: 8px;
}
.contact-tel {
  display: block;
  font-size: 12.5px;
  color: var(--muted);
  margin-top: 2px;
}
.contact-tel:hover {
  color: var(--coral-dark);
}

/* feature strip + about teaser — fill the space beside the summary */
.phead-media {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}

/* video tour — click-to-play facade. Standalone it's a 16:9 block;
   as the hero media tile (.media-big.pvideo) it fills the media cell. */
.pvideo {
  position: relative;
  aspect-ratio: 16 / 9;
  border-radius: 14px;
  overflow: hidden;
  background: var(--ink);
}
@media (min-width: 981px) {
  .media-big.pvideo {
    aspect-ratio: auto;
    border-radius: 0;
    height: 100%;
  }
}
.pvideo img,
.pvideo iframe {
  width: 100%;
  height: 100%;
  border: 0;
  object-fit: cover;
  display: block;
}
.pvideo-play {
  position: absolute;
  inset: 0;
  margin: auto;
  width: 64px;
  height: 64px;
  border: 0;
  border-radius: 999px;
  background: rgba(255, 90, 95, 0.95);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.15s ease, background 0.15s ease;
}
.pvideo-play:hover {
  background: var(--coral-dark);
  transform: scale(1.06);
}
.pvideo-play span {
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 11px 0 11px 18px;
  border-color: transparent transparent transparent #fff;
  margin-left: 4px;
}
.pvideo-label {
  position: absolute;
  left: 12px;
  bottom: 12px;
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 5px 10px;
  border-radius: 999px;
  backdrop-filter: blur(4px);
}
.pvideo-link {
  align-self: flex-start;
}

.featstrip {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 14px 0;
  margin-top: 2px;
}
.featstrip span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--ink);
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 7px 13px 7px 11px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.featstrip span:first-child {
  color: var(--coral-dark);
  background: rgba(255, 90, 95, 0.06);
  border-color: rgba(255, 90, 95, 0.3);
}
.featstrip span:hover {
  border-color: #d9d3c8;
  box-shadow: 0 4px 12px rgba(29, 35, 39, 0.06);
}
.featstrip svg {
  color: var(--coral-dark);
  flex: none;
}
/* Tablets too: a wrapping strip is 2 rows in the fallback font and 1 row once
   Hanken Grotesk loads, shifting the summary below it (CLS ~0.21 at 800px). */
@media (max-width: 980px) {
  .featstrip {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
    padding: 12px 0;
  }
  .featstrip::-webkit-scrollbar {
    display: none;
  }
  .featstrip span {
    flex: none;
  }
}
.phead-about {
  font-size: 14px;
  line-height: 1.6;
  color: var(--muted);
  display: -webkit-box;
  -webkit-line-clamp: 6;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ask asraa ai card (dark) */
.ai-card {
  background: var(--ink);
  color: #fff;
  border-radius: 14px;
  padding: 20px;
}
.ai-card-head {
  display: flex;
  gap: 12px;
  align-items: center;
}
.ai-bot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.1);
  color: var(--coral-soft);
  flex: none;
}
.ai-card-head b {
  font-family: var(--font-serif);
  font-weight: 500;
  font-size: 17px;
}
.ai-card-head p {
  font-size: 12.5px;
  color: rgba(255, 255, 255, 0.6);
}
.ai-card-rows {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 14px;
}
.ai-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  text-align: left;
  color: #fff;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 9px;
  padding: 10px 12px;
  cursor: pointer;
  overflow-wrap: anywhere;
}
.ai-row > span {
  flex: none;
}
.ai-row:hover {
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
}
.ai-row.more {
  background: var(--coral);
  border-color: var(--coral);
}
.ai-row:disabled {
  opacity: 0.55;
  cursor: default;
}
.ai-answer {
  margin-top: 12px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 10px;
  padding: 12px 14px;
  font-size: 13.5px;
  line-height: 1.55;
}
.ai-answer-q {
  font-weight: 700;
  color: var(--coral-soft);
  margin-bottom: 6px;
}
.ai-answer-cta {
  display: inline-block;
  margin-top: 8px;
  font-weight: 600;
  color: #fff;
  text-decoration: underline;
}
.ai-answer-err {
  margin-top: 10px;
  font-size: 12.5px;
  color: var(--coral-soft);
}
.ai-answer-err a {
  color: #fff;
  text-decoration: underline;
}
.ai-note {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.55);
  margin-top: 12px;
}

/* ---------- property title row + chips ---------- */
.ptitle {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 24px;
  padding: 18px 0 4px;
}
.ptitle .price {
  font-size: 26px;
  font-weight: 700;
  color: var(--coral-dark);
  white-space: nowrap;
}
.ptitle .price small {
  display: block;
  font-size: 12px;
  font-weight: 500;
  color: var(--muted);
  text-align: right;
}
@media (max-width: 700px) {
  .ptitle {
    flex-direction: column;
    gap: 8px;
  }
  .ptitle .price,
  .ptitle .price small {
    text-align: left;
  }
}
.pchips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 8px 0 4px;
}
.pchips .c {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12.5px;
  font-weight: 600;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 5px 11px;
  background: #fff;
}
.pchips .c.ok {
  color: #0a7d33;
  border-color: #bfe4c9;
  background: #f2fbf4;
}

/* ---------- config & pricing table ---------- */
.config {
  width: 100%;
  border-collapse: collapse;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  font-size: 14px;
  margin-top: 2px;
}
.config th {
  background: var(--sand);
  text-align: left;
  font-weight: 600;
  font-size: 12px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--muted);
}
.config th,
.config td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
  overflow-wrap: anywhere;
}
.config tr:last-child td {
  border-bottom: none;
}
@media (max-width: 600px) {
  .config th,
  .config td {
    padding: 10px 12px;
  }
}
.config td .p {
  font-weight: 700;
  color: var(--coral-dark);
}
/* Phones: each row becomes a small card (labels come from data-label, set by
   property.js from the table head). Stops "CONFIGURAT/ION"-style mid-word breaks. */
@media (max-width: 600px) {
  .config {
    border: 0;
    border-radius: 0;
    overflow: visible;
  }
  .config thead {
    display: none;
  }
  .config tbody,
  .config tr {
    display: block;
    width: 100%;
  }
  .config tr {
    background: var(--card);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 4px 14px;
    margin-bottom: 10px;
  }
  .config tbody tr td {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 14px;
    padding: 9px 0;
    text-align: right;
    /* Wraps at spaces first; only a string with no break point at all
       (a long unspaced code) is split, so nothing spills off the card. */
    overflow-wrap: anywhere;
    min-width: 0;
    border-bottom: 1px solid var(--line);
  }
  .config tbody tr td:last-child {
    border-bottom: none;
  }
  .config td[data-label]::before {
    content: attr(data-label);
    flex-shrink: 0;
    text-align: left;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--muted);
  }
  .config tbody tr td:first-child {
    display: block;
    text-align: left;
    font-weight: 700;
    font-size: 15px;
  }
  .config tbody tr td:first-child::before {
    content: none;
  }
  .config td.p {
    font-weight: 700;
    color: var(--coral-dark);
  }
}

/* ---------- lightbox ---------- */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 100;
  background: rgba(15, 18, 20, 0.94);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 60px;
}
.lb-img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  border-radius: 6px;
}
.lb-close,
.lb-nav {
  position: absolute;
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
  border: none;
  cursor: pointer;
  border-radius: 999px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.lb-close {
  top: 18px;
  right: 18px;
  width: 40px;
  height: 40px;
  font-size: 16px;
}
.lb-nav {
  top: 50%;
  transform: translateY(-50%);
  width: 46px;
  height: 46px;
  font-size: 28px;
  line-height: 1;
}
.lb-nav.prev {
  left: 14px;
}
.lb-nav.next {
  right: 14px;
}
.lb-close:hover,
.lb-nav:hover {
  background: rgba(255, 255, 255, 0.25);
}
.lb-count {
  position: absolute;
  bottom: 18px;
  left: 50%;
  transform: translateX(-50%);
  color: rgba(255, 255, 255, 0.8);
  font-size: 13px;
}
@media (max-width: 600px) {
  .lightbox {
    padding: 56px 8px;
  }
}

/* mosaic figures become clickable */
.gmosaic figure {
  cursor: pointer;
}
.gmosaic .count {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

/* ---------- floor-plan carousel ---------- */
.fp-wrap {
  position: relative;
}
.fp-track {
  display: flex;
  gap: 14px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding-bottom: 6px;
  scrollbar-width: thin;
}
.fp-card {
  flex: 0 0 300px;
  scroll-snap-align: start;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
  padding: 0;
  cursor: pointer;
  text-align: left;
  font: inherit;
}
.fp-card img {
  width: 100%;
  height: 200px;
  object-fit: contain;
  background: #f7f4ef;
  display: block;
}
.fp-cap {
  display: block;
  padding: 10px 14px;
  font-size: 12.5px;
  font-weight: 600;
  border-top: 1px solid var(--line);
}
.fp-arrow {
  position: absolute;
  top: 90px;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: #fff;
  cursor: pointer;
  font-size: 20px;
  line-height: 1;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.1);
  z-index: 2;
}
.fp-arrow.left {
  left: -14px;
}
.fp-arrow.right {
  right: -14px;
}
@media (max-width: 600px) {
  .fp-card {
    flex-basis: 78vw;
  }
  .fp-arrow {
    display: none;
  }
}

/* ---------- read-more fade ---------- */
.prose-fade {
  height: 60px;
  margin-top: -60px;
  position: relative;
  background: linear-gradient(to bottom, rgba(251, 250, 248, 0), var(--paper));
  pointer-events: none;
}

/* ---------- form field ---------- */
.fld {
  padding: 11px 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  font: inherit;
  font-size: 16px; /* 16px min — <16px makes iOS zoom the page on focus */
  background: #fff;
}
.fld:focus {
  outline: 2px solid var(--coral);
  outline-offset: -1px;
}
.lead-form {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.hp-field {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
.lead-ok {
  margin-top: 16px;
  font-size: 14px;
  font-weight: 600;
  color: var(--coral-dark);
}
.band-dark .lead-ok {
  color: var(--coral-soft);
}
.lead-err {
  font-size: 13px;
  color: var(--coral-dark);
  margin: -2px 0 2px;
}
.band-dark .lead-err {
  color: var(--coral-soft);
}

/* intent radio group inside a lead form */
.lead-intent {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 14px;
  margin: 2px 0;
  font-size: 13px;
  color: var(--muted);
}
.lead-intent-label {
  font-weight: 600;
  margin-right: 2px;
}
.lead-intent label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  cursor: pointer;
}
.lead-intent input {
  accent-color: var(--coral);
  margin: 0;
}

/* ---------- "List your property" page (pg 11050) ---------- */
.lyp-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 34px;
  align-items: start;
  margin-top: 1.6em;
}
.lyp-grid .lyp-points > h2:first-child {
  margin-top: 0;
}
.lyp-grid .lyp-form {
  position: sticky;
  top: 96px;
}
@media (max-width: 860px) {
  .lyp-grid {
    grid-template-columns: 1fr;
    gap: 22px;
  }
  .lyp-grid .lyp-form {
    position: static;
  }
}

.lyp-grid .lyp-points p {
  color: var(--muted);
}
.lyp-grid .lyp-form p {
  margin-bottom: 0;
}
.lyp-grid .lyp-form .lead-form {
  margin-top: 4px;
}

/* rent-after-possession capture band */
.rentcta {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 32px;
  align-items: center;
  background: var(--sand);
  border-radius: 16px;
  padding: 28px 32px;
}
.rentcta-form {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 18px;
}
@media (max-width: 820px) {
  .rentcta {
    grid-template-columns: 1fr;
    gap: 18px;
    padding: 22px;
  }
}

/* ---------- emi calculator ---------- */
.emi-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 2px 8px;
  font-size: 13px;
}
.emi-row span {
  color: var(--muted);
}
.emi-row b {
  text-align: right;
}
.emi-row input[type="range"] {
  grid-column: 1 / -1;
  width: 100%;
  accent-color: var(--coral);
}

/* ---------- highlights widget ---------- */
.hl {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--line);
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.hl > div {
  background: var(--card);
  padding: 14px 16px;
}
.hl .k {
  font-size: 12px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}
.hl .v {
  font-size: 15px;
  font-weight: 700;
  margin-top: 2px;
}
@media (max-width: 600px) {
  .hl {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ---------- mobile sticky CTA ---------- */
.mcta {
  display: none;
}
@media (max-width: 900px) {
  .mcta {
    display: flex;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 40;
    background: #fff;
    border-top: 1px solid var(--line);
    padding: 10px 14px;
    align-items: center;
    gap: 10px;
    box-shadow: 0 -6px 20px rgba(0, 0, 0, 0.06);
  }
  .mcta .btn {
    flex: 1;
    min-height: 44px;
  }
  main {
    padding-bottom: 74px;
  }
}
.btn-wa {
  background: #25d366;
  color: #fff;
}
.btn-wa:hover {
  background: #1fb959;
  color: #fff;
}

/* ---------- property content sections ---------- */
.psection {
  border-top: 1px solid var(--line);
  padding-top: 34px;
  margin-top: 34px;
}
.psection:first-child {
  border-top: none;
  padding-top: 4px;
  margin-top: 8px;
}
.psection > h2 {
  font-size: 21px;
  margin-bottom: 10px;
}

/* photos grid (dedicated) */
.pgallery {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.pgallery img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 10px;
}
@media (max-width: 600px) {
  .pgallery {
    grid-template-columns: 1fr;
  }
}

/* floor plans (dedicated, not cropped) */
.fplans {
  display: grid;
  gap: 16px;
}
.fplans figure {
  margin: 0;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
}
.fplans img {
  width: 100%;
  height: auto;
  display: block;
}
.fplans figcaption {
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 600;
  border-top: 1px solid var(--line);
}

/* ---------- structured content boxes ---------- */
.specs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px 32px;
}
.specs h4 {
  font-family: var(--font-sans);
  font-size: 12px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 8px;
}
.specs ul {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.specs li {
  font-size: 13.5px;
  display: flex;
  gap: 8px;
  line-height: 1.45;
}
/* property.js "Show all specifications" hides extra rows with [hidden];
   display:flex above would otherwise override it. */
.specs li[hidden],
.config tbody tr[hidden],
.doccheck li[hidden] {
  display: none !important;
}
@media (max-width: 600px) {
  .specs {
    gap: 16px;
  }
  .specs li {
    font-size: 13px;
  }
}
.specs li::before {
  content: "";
  flex-shrink: 0;
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: var(--coral);
  margin-top: 7px;
}
@media (max-width: 600px) {
  .specs {
    grid-template-columns: 1fr;
  }
}

.locadv {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  background: var(--line);
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.locadv > div {
  background: var(--card);
  padding: 12px 16px;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
}
.locadv .place {
  font-size: 13.5px;
}
.locadv .cat {
  display: block;
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 1px;
}
.locadv .dist {
  font-weight: 700;
  white-space: nowrap;
  color: var(--coral-dark);
  font-size: 13px;
}
@media (max-width: 600px) {
  .locadv {
    grid-template-columns: 1fr;
  }
  .locadv > div {
    padding: 9px 14px;
  }
  .locadv .place {
    font-size: 13px;
  }
}
/* Phones show the first few nearby places; property.js adds "Show all". */
.locadv > [hidden] {
  display: none !important;
}

.status-cards {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.status-row {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 12px 16px;
  font-size: 13.5px;
  display: flex;
  flex-wrap: wrap;
  gap: 4px 16px;
  align-items: baseline;
}
.status-row b {
  font-size: 14px;
}
.status-row .tag {
  font-size: 12px;
  font-weight: 600;
  background: #f2fbf4;
  color: #0a7d33;
  border: 1px solid #bfe4c9;
  border-radius: 999px;
  padding: 2px 8px;
}
.lead-para {
  font-size: 15.5px;
  line-height: 1.6;
  color: #34383c;
  margin-bottom: 16px;
}
.missing {
  font-size: 13.5px;
  color: var(--muted);
  background: var(--sand);
  border: 1px dashed var(--line);
  border-radius: 10px;
  padding: 14px 16px;
}
.missing a {
  color: var(--coral-dark);
  font-weight: 600;
  white-space: nowrap;
}

/* ---------- amenities grid ---------- */
.amengrid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px 20px;
  margin-top: 6px;
}
.amengrid span {
  font-size: 14px;
  display: flex;
  gap: 8px;
  align-items: center;
}
.amengrid svg {
  flex-shrink: 0;
  color: var(--coral);
}
/* "+N more amenities" toggle hides items with [hidden]; display:flex above overrode it. */
.amengrid > [hidden] {
  display: none !important;
}
@media (max-width: 700px) {
  .amengrid {
    grid-template-columns: 1fr 1fr;
  }
}

/* ---------- detail sidebar ---------- */
.side .card + .card,
.side > * + * {
  /* #emi is a plain wrapper around its cards, so .card + .card never matched
     between the advisor form and the cost box — they touched. */
  margin-top: 16px;
}
.side .mini li {
  display: flex;
  gap: 8px;
  font-size: 13px;
  margin-top: 8px;
}
.side .mini li svg {
  flex-shrink: 0;
  color: var(--coral);
  margin-top: 2px;
}
.dev-line {
  font-size: 12px;
  color: var(--muted);
  margin-top: 14px;
  line-height: 1.5;
}
.map-embed {
  width: 100%;
  aspect-ratio: 16 / 9;
  border: 1px solid var(--line);
  border-radius: 12px;
}

/* ---------- prose (rendered WP HTML) ---------- */
.prose {
  font-size: 16px;
  line-height: 1.72;
  color: #34383c;
}
.prose > * + * {
  margin-top: 1.1em;
}
.prose h2,
.prose h3,
.prose h4 {
  color: var(--ink);
  margin-top: 1.7em;
  margin-bottom: 0.2em;
}
.prose h2 {
  font-size: 26px;
  letter-spacing: -0.01em;
  margin-top: 2em;
}
/* The short red accent line above every prose H2 (and the rate pages'
   .arp-accent-bar, styled inline in their content) was removed at the
   owner's request, 2026-09-24. */
.prose h2::before {
  content: none;
}
.arp-accent-bar {
  display: none !important;
}
/* Listing "About this property": 101/106 descriptions open with an H2 that
   repeats the project name right under the section heading — with the 2em
   gap and accent bar it read as a second title. Make that opener a compact
   lead-in, and tighten headings on phones so more text shows above the fold. */
#about .prose > h2:first-child {
  margin-top: 0;
  font-size: 18px;
  font-family: var(--font-sans);
  font-weight: 600;
  color: var(--coral-dark);
}
#about .prose > h2:first-child::before {
  content: none;
}
@media (max-width: 600px) {
  #about .prose h2 {
    font-size: 21px;
    margin-top: 1.4em;
  }
  #about .prose h2::before {
    margin-bottom: 8px;
  }
  #about .prose h3 {
    font-size: 17px;
    margin-top: 1.2em;
  }
  #about .prose > h2:first-child {
    font-size: 16px;
    margin-top: 0;
  }
}
.prose h3 {
  font-size: 20px;
}
.prose h4 {
  font-size: 16px;
  font-family: var(--font-sans);
  font-weight: 700;
  letter-spacing: 0;
}
.prose a {
  color: var(--coral-dark);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.prose ul,
.prose ol {
  padding-left: 1.3em;
}
.prose li {
  list-style: disc;
  margin: 0.4em 0;
}
.prose ol li {
  list-style: decimal;
}
.prose img {
  border-radius: 10px;
  margin: 1.4em 0;
  height: auto;
}
.prose-caption {
  display: block;
  font-size: 13px;
  color: var(--muted);
  font-style: italic;
  text-align: center;
}
.prose > .prose-caption {
  margin-top: 6px;
}
.prose blockquote {
  border-left: none;
  padding: 2px 0 2px 30px;
  margin: 1.6em 0;
  color: var(--ink);
  font-style: normal;
  font-family: var(--font-serif);
  font-size: 21px;
  line-height: 1.5;
  position: relative;
}
.prose blockquote::before {
  content: "\201C";
  position: absolute;
  left: -2px;
  top: -4px;
  font-size: 44px;
  color: var(--coral);
  font-family: var(--font-serif);
  line-height: 1;
}
.prose blockquote p {
  margin: 0;
}
.prose-stat {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 10px;
  background: var(--sand);
  border-radius: 12px;
  padding: 16px 20px;
  margin: 1.6em 0;
}
.prose-stat-num {
  font-size: 30px;
  font-weight: 800;
  color: var(--coral-dark);
  line-height: 1;
}
.prose-stat-label {
  font-size: 13px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.prose-eyebrow {
  display: block;
  font-size: 12px;
  font-weight: 700;
  color: var(--coral-dark);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.prose-eyebrow + h2,
.prose-eyebrow + h3 {
  margin-top: 6px !important;
}
.prose-eyebrow + h2::before {
  display: none;
}
/* two-column feature spread (template-parts/split-feature.php) */
.split-feature {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  margin: 2em 0 !important;
  padding: 32px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.split-feature-left h3 {
  font-family: var(--font-sans);
  font-weight: 800;
  font-size: 28px;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0 0 14px;
}
.split-feature-left p,
.split-feature-right p {
  font-size: 16px;
  line-height: 1.75;
  color: var(--muted);
  margin: 0 0 16px;
}
.split-feature-photo {
  display: block;
  aspect-ratio: 16 / 10;
  border-radius: 10px;
  overflow: hidden;
  background: var(--sand);
  margin-bottom: 14px;
}
.split-feature-photo:last-child {
  margin-bottom: 0;
}
.split-feature-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  margin: 0;
  border-radius: 0;
}
@media (max-width: 700px) {
  .split-feature {
    grid-template-columns: 1fr;
    gap: 20px;
  }
}
.prose table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  display: block;
  overflow-x: auto;
}
.prose th,
.prose td {
  border: 1px solid var(--line);
  padding: 8px 12px;
  text-align: left;
}
.prose th {
  background: var(--sand);
}
.prose details {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 12px 16px;
}
.prose summary {
  cursor: pointer;
  font-weight: 600;
}
.prose hr {
  border: none;
  border-top: 1px solid var(--line);
}

/* ---------- generic WP page (catch-all route) ---------- */
/* Pages that bring their own complete <style> (hand-built legal/policy pages)
   render here — no app typography, just a width guard. */
.wp-raw {
  overflow-x: clip;
}
.wp-raw img {
  max-width: 100%;
  height: auto;
}
/* blog posts on the shared asraa-* design system: let their own 1200px
   sections centre themselves; just guard the width and add a little air. */
.blog-raw {
  padding: 4px 0 8px;
}

.page-body {
  padding-bottom: 64px;
}
.page-body .page-content {
  padding-top: 40px;
  font-size: 16px;
  line-height: 1.7;
  color: #34383c;
}
.page-body .page-content > * + * {
  margin-top: 1.1em;
}
.page-body .page-content h2 {
  font-size: 24px;
  color: var(--ink);
  margin-top: 1.7em;
  margin-bottom: 0.2em;
}
.page-body .page-content h3 {
  font-size: 19px;
  color: var(--ink);
  margin-top: 1.5em;
}
.page-body .page-content a {
  color: var(--coral-dark);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.page-body .page-content ul,
.page-body .page-content ol {
  padding-left: 1.3em;
}
.page-body .page-content li {
  list-style: disc;
  margin: 0.4em 0;
}
.page-body .page-content ol li {
  list-style: decimal;
}
.page-body .page-content img {
  border-radius: 10px;
  height: auto;
  margin: 1.2em 0;
}
.page-body .page-content table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  display: block;
  overflow-x: auto;
}
.page-body .page-content th,
.page-body .page-content td {
  border: 1px solid var(--line);
  padding: 8px 12px;
  text-align: left;
}
.page-body .page-content th {
  background: var(--sand);
}
/* Elementor pages: neutralise section chrome so stacked content stays readable */
.page-body .page-content .elementor-section,
.page-body .page-content .elementor-container,
.page-body .page-content .elementor-column,
.page-body .page-content .elementor-widget-wrap {
  display: block !important;
  width: auto !important;
  max-width: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
}

/* ---------- article (blog post) ---------- */
.article {
  max-width: 720px;
  margin: 0 auto;
  padding: 0 40px 72px;
}
.article-head {
  padding: 8px 0 24px;
}
.article-head h1 {
  font-size: clamp(28px, 4vw, 42px);
  margin-top: 12px;
}
@media (max-width: 700px) {
  .article {
    padding: 0 20px 48px;
  }
}

/* =========================================================
   UNIFORM BLOG POST  — same layout for every post, our theme
   ========================================================= */
.blogpost {
  padding-bottom: 80px;
}
.blogpost > .crumb {
  margin-bottom: 18px;
}

.blogpost-head {
  max-width: 820px;
  padding-bottom: 26px;
  border-bottom: 1px solid var(--line);
}
.blogpost-cat {
  display: inline-block;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--coral-dark);
  background: #fff1f1;
  border-radius: 999px;
  padding: 5px 12px;
}
/* bordered masthead strip above the headline */
.bp-masthead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.bp-masthead .blogpost-cat {
  background: none;
  padding: 0;
}
.bp-masthead-tag {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--muted);
}
.blogpost-head h1 {
  font-family: var(--font-sans);
  font-weight: 800;
  font-size: clamp(34px, 5.4vw, 58px);
  line-height: 1.04;
  letter-spacing: -0.02em;
  color: var(--ink);
  margin-top: 20px;
}
/* keyword pills, coral-on-brand, small icon divider between them */
.tag-pills {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
  list-style: none;
  padding: 14px 0;
  margin: 16px 0 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.tag-pill {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--coral-dark);
}
.tag-pill:not(:last-child)::after {
  content: "\2726";
  display: inline-block;
  margin: 0 14px;
  color: var(--coral);
  font-size: 10px;
  vertical-align: middle;
}
.blogpost-standfirst {
  font-size: 18px;
  line-height: 1.6;
  color: var(--muted);
  margin-top: 16px;
  max-width: 62ch;
}
.blogpost-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 20px;
  margin-top: 20px;
  font-size: 13px;
  color: var(--muted);
}
.bm-author {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 600;
  color: var(--ink);
}
.bm-author img,
.bm-avatar-mark {
  width: 26px;
  height: 26px;
  border-radius: 999px;
  object-fit: cover;
  flex: none;
}
.bm-avatar-mark {
  background: var(--coral);
  position: relative;
}
.bm-avatar-mark::after {
  content: "";
  position: absolute;
  inset: 8px;
  background: #fff;
  transform: rotate(45deg);
}
.bm-share {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
}
.bm-share a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 999px;
  border: 1px solid var(--line);
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
}
.bm-share a:hover {
  border-color: var(--coral);
  color: var(--coral-dark);
}

/* hero */
.blogpost-hero {
  max-width: 1040px;
  margin: 28px 0 8px;
}
.blogpost-hero img,
.blogpost-hero-fallback {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 360px;
  object-fit: cover;
  border-radius: 16px;
}
.blogpost-hero-fallback {
  background: linear-gradient(135deg, var(--coral) 0%, var(--coral-dark) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
}
.blogpost-hero-fallback span {
  color: #fff;
  font-family: var(--font-serif);
  font-size: clamp(22px, 3vw, 34px);
  opacity: 0.9;
}

/* two columns */
.blogpost-body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 304px;
  gap: 56px;
  max-width: 1040px;
  margin: 24px 0 0;
  align-items: start;
}
.blogpost-main {
  min-width: 0;
  max-width: 680px;
}
.blogpost-main .prose {
  font-size: 17px;
  line-height: 1.75;
}
.blogpost-main .prose > p:first-of-type {
  font-size: 19px;
  line-height: 1.7;
  color: var(--ink);
}
.blogpost-main .prose > p:first-of-type::first-letter {
  float: left;
  font-family: var(--font-serif);
  font-weight: 600;
  font-size: 3.3em;
  line-height: 0.8;
  margin: 6px 10px 0 0;
  color: var(--coral-dark);
}
.blogpost-main .prose h2,
.blogpost-main .prose h3 {
  font-family: var(--font-serif);
  scroll-margin-top: 96px;
}
.blogpost-main .prose h2 {
  font-size: 25px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}
.blogpost-main .prose > h2:first-child,
.blogpost-main .prose > *:first-child + h2 {
  border-top: 0;
  padding-top: 0;
}
.blogpost-main .prose .pfig {
  display: block;
  margin: 1.7em 0;
  width: 100%;
  max-width: 480px;
  margin-left: auto;
  margin-right: auto;
  aspect-ratio: 16 / 9;
  max-height: 300px;
  border-radius: 12px;
  overflow: hidden;
  background: var(--sand);
}
.blogpost-main .prose .pfig img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  margin: 0;
  border-radius: 0;
}
.blogpost-main .prose table {
  font-size: 14.5px;
}

/* authored callouts (Tip: / Avoid: / Key: / Note:) */
.blogpost-main .prose .callout {
  margin: 1.6em 0;
  padding: 14px 16px 14px 44px;
  border-radius: 12px;
  border: 1px solid;
  font-size: 15px;
  line-height: 1.55;
  position: relative;
}
.blogpost-main .prose .callout > *:first-child {
  margin-top: 0;
}
.blogpost-main .prose .callout > *:last-child {
  margin-bottom: 0;
}
.blogpost-main .prose .callout::before {
  position: absolute;
  left: 15px;
  top: 13px;
  font-size: 15px;
  font-weight: 700;
}
.blogpost-main .prose .callout-tip {
  background: #fff8e8;
  border-color: #f2e0b0;
}
.blogpost-main .prose .callout-tip::before {
  content: "\1F4A1";
}
.blogpost-main .prose .callout-avoid {
  background: #eefaf0;
  border-color: #bfe6c7;
}
.blogpost-main .prose .callout-avoid::before {
  content: "\2713";
  color: #0a7d33;
}
.blogpost-main .prose .callout-key {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
}
.blogpost-main .prose .callout-key::before {
  content: "\2192";
}
.blogpost-main .prose .callout-key a {
  color: #fff;
}
.blogpost-main .prose .callout-note {
  background: #fff1f1;
  border-color: #f4d9d9;
}
.blogpost-main .prose .callout-note::before {
  content: "!";
  color: var(--coral-dark);
}

/* ---- sidebar ---- */
.blog-side {
  position: sticky;
  top: 92px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.blog-side .side-card {
  padding: 18px;
}
.bs-h {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 12px;
}
.bs-author-row {
  display: flex;
  align-items: center;
  gap: 12px;
}
.bs-avatar {
  width: 46px;
  height: 46px;
  border-radius: 999px;
  overflow: hidden;
  flex: none;
  background: var(--sand);
  display: block;
}
.bs-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.bs-avatar-mark {
  display: block;
  width: 100%;
  height: 100%;
  background: var(--coral);
  position: relative;
}
.bs-avatar-mark::after {
  content: "";
  position: absolute;
  inset: 15px;
  background: #fff;
  transform: rotate(45deg);
}
.bs-name {
  font-family: var(--font-serif);
  font-size: 17px;
  font-weight: 600;
}
.bs-bio {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--muted);
  margin: 12px 0 12px;
}
.bs-lead-txt,
.bs-ask-txt {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--muted);
  margin-bottom: 14px;
}
.bs-lead {
  background: #fff6f6;
  border-color: #f4d9d9;
}
.bs-ask {
  background: var(--ink);
  color: #fff;
}
.bs-ask .bs-h,
.bs-ask .bs-ask-txt {
  color: rgba(255, 255, 255, 0.75);
}
.bs-props ul {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 12px;
}
.bs-props li a {
  display: flex;
  gap: 10px;
  align-items: center;
}
.bs-prop-thumb {
  width: 62px;
  height: 48px;
  border-radius: 8px;
  overflow: hidden;
  flex: none;
  background: var(--sand);
}
.bs-prop-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.bs-prop-body {
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.bs-prop-name {
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.3;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.bs-prop-sub {
  font-size: 12px;
  color: var(--muted);
  margin-top: 2px;
}
.bs-prop-price {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--coral-dark);
  margin-top: 2px;
}
.blog-side .atoc-head {
  margin-bottom: 10px;
}

/* Small-card property strip inside blog post content (template-parts/
   property-carousel.php) — same card language as .bs-prop-* in the
   sidebar, just bigger and horizontally scrollable. */
.prop-carousel-wrap {
  margin: 28px 0;
}
.prop-carousel-head {
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 10px;
}
.prop-carousel {
  display: flex;
  gap: 14px;
  overflow-x: auto;
  padding-bottom: 8px;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
}
.prop-carousel::-webkit-scrollbar {
  height: 6px;
}
.prop-carousel::-webkit-scrollbar-thumb {
  background: var(--sand);
  border-radius: 3px;
}
.prop-card-sm {
  flex: 0 0 160px;
  scroll-snap-align: start;
  display: block;
  text-decoration: none;
}
.prop-card-sm-thumb {
  width: 160px;
  height: 110px;
  border-radius: 10px;
  overflow: hidden;
  background: var(--sand);
  display: block;
}
.prop-card-sm-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.prop-card-sm-name {
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.3;
  margin-top: 8px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.prop-card-sm-sub {
  font-size: 12px;
  color: var(--muted);
  margin-top: 2px;
  display: block;
}
.prop-card-sm-price {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--coral-dark);
  margin-top: 2px;
  display: block;
}
@media (max-width: 600px) {
  .prop-card-sm {
    flex: 0 0 140px;
  }
  .prop-card-sm-thumb {
    width: 140px;
    height: 96px;
  }
}

/* ---- related posts ---- */
.blog-related {
  max-width: 1040px;
  margin-top: 64px;
  padding-top: 32px;
  border-top: 1px solid var(--line);
}
.blog-related-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.rel-arrows {
  display: flex;
  gap: 8px;
  flex: none;
}
.rel-arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  border: 1px solid var(--line);
  background: #fff;
  color: var(--ink);
  cursor: pointer;
  transition: 0.2s;
}
.rel-arrow:hover {
  background: var(--coral);
  border-color: var(--coral);
  color: #fff;
}
.rel-arrow-prev svg {
  transform: rotate(180deg);
}
.rel-scroll {
  display: flex;
  gap: 20px;
  margin-top: 22px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 6px;
}
.rel-scroll:focus-visible {
  outline: 2px solid var(--coral);
  outline-offset: 4px;
}
.rel-scroll::-webkit-scrollbar {
  height: 6px;
}
.rel-scroll::-webkit-scrollbar-thumb {
  background: var(--sand);
  border-radius: 3px;
}
.rel-card {
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 0 0 260px;
  scroll-snap-align: start;
}
@media (max-width: 560px) {
  .rel-card {
    flex: 0 0 220px;
  }
}
.rel-thumb {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 10;
  border-radius: 10px;
  overflow: hidden;
  background: var(--sand);
}
.rel-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.rel-thumb-fallback {
  display: block;
  width: 100%;
  height: 100%;
  background: linear-gradient(135deg, var(--coral) 0%, var(--coral-dark) 100%);
}
.rel-cat {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--coral-dark);
}
.rel-title {
  font-family: var(--font-serif);
  font-size: 16px;
  line-height: 1.3;
  color: var(--ink);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.rel-card:hover .rel-title {
  color: var(--coral-dark);
}
.rel-meta {
  font-size: 12px;
  color: var(--muted);
}

@media (max-width: 980px) {
  .blogpost-body {
    grid-template-columns: 1fr;
    gap: 0;
  }
  .blog-side {
    position: static;
    margin-top: 8px;
  }
  .blogpost-main {
    max-width: none;
  }
}
@media (max-width: 560px) {
  .bm-share {
    margin-left: 0;
  }
}

/* the standalone sticky TOC (used inside the sidebar card) */
.atoc-head {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 12px;
}
.atoc-list {
  list-style: none;
  border-left: 2px solid var(--line);
}
.atoc-list li {
  list-style: none;
}
.atoc-list a {
  display: block;
  padding: 5px 0 5px 14px;
  margin-left: -2px;
  border-left: 2px solid transparent;
  font-size: 13px;
  line-height: 1.4;
  color: var(--muted);
}
.atoc-list a:hover {
  color: var(--ink);
}
.atoc-l3 a {
  padding-left: 26px;
  font-size: 12.5px;
}
.atoc-list li.is-active a {
  color: var(--coral-dark);
  font-weight: 600;
  border-left-color: var(--coral);
}
/* mobile: collapse the TOC card into a disclosure */
.atoc-m {
  display: none;
}
@media (max-width: 980px) {
  .atoc > .atoc-head,
  .atoc > .atoc-list {
    display: none;
  }
  .atoc-m {
    display: block;
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 4px 16px;
    margin-bottom: 8px;
    background: var(--sand);
  }
  .atoc-m > summary {
    padding: 12px 0;
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
  }
  .atoc-m .atoc-list {
    border-left: 0;
    padding-bottom: 10px;
  }
}
.blogpost-cta {
  margin-top: 48px;
}

/* ---------- blog index card ---------- */
.post-card {
  display: flex;
  flex-direction: column;
  gap: 8px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 0 0 24px;
  overflow: hidden;
  transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.post-card:hover {
  box-shadow: 0 12px 30px rgba(29, 35, 39, 0.08);
  transform: translateY(-2px);
}
.post-card > :not(.post-card-fig) {
  padding-left: 24px;
  padding-right: 24px;
}
.post-card-fig {
  display: block;
  position: relative;
  aspect-ratio: 16 / 9;
  background: var(--sand);
  margin-bottom: 16px;
}
.post-card-fig img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.post-card-fig-fallback {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 16px;
  text-align: center;
  font-family: var(--font-serif);
  font-size: 17px;
  font-weight: 500;
  color: #fff;
  background: linear-gradient(135deg, var(--coral) 0%, var(--coral-dark) 100%);
}
.post-card-meta {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
}
.post-card-cat {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--coral-dark);
  background: #fff1f1;
  padding: 3px 9px;
  border-radius: 999px;
}
.post-card .kicker {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
}
.post-card h3 {
  font-size: 18px;
}
.post-card p {
  color: var(--muted);
  font-size: 13.5px;
}

/* ---------- filters ---------- */
.filters {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: center;
  margin: 28px 0;
}
.filters select {
  appearance: none;
  padding: 11px 34px 11px 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  font: inherit;
  font-size: 14px;
  background: #fff
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239a938a' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")
    no-repeat right 12px center;
  cursor: pointer;
}
.filters input[type="search"],
.filters input[type="text"] {
  padding: 11px 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  font: inherit;
  font-size: 14px;
  min-width: 220px;
  flex: 1 1 220px;
}
@media (max-width: 620px) {
  .filters input[type="search"],
  .filters input[type="text"],
  .filters select {
    flex: 1 1 100%;
  }
}
/* keep .wp-content working if referenced elsewhere */
.wp-content {
  margin: 24px 0;
}
.wp-content img {
  border-radius: 8px;
  margin: 12px 0;
  height: auto;
}
.pagination {
  display: flex;
  gap: 10px;
  align-items: center;
  margin: 32px 0;
}
.pagination a,
.pagination span {
  padding: 8px 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 14px;
}
.pagination .current {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}
.error-box {
  border: 1px solid var(--line);
  background: var(--sand);
  border-radius: var(--radius);
  padding: 20px;
  margin: 24px 0;
  font-size: 14px;
  color: var(--muted);
}
.meta {
  color: var(--muted);
  font-size: 13px;
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

/* ---------- pricing tiers ---------- */
.tiers {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  margin-top: 36px;
  align-items: start;
}
.tier {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 28px;
}
.tier.featured {
  border-color: var(--coral);
  box-shadow: 0 14px 40px rgba(255, 90, 95, 0.14);
  position: relative;
}
.tier .tag {
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}
.tier.featured .tag {
  color: var(--coral-dark);
}
.tier .flag {
  position: absolute;
  top: -12px;
  left: 28px;
  background: var(--coral);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 999px;
}
.tier .amount {
  font-family: var(--font-serif);
  font-size: 32px;
  margin: 10px 0 2px;
}
.tier ul {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 18px;
  font-size: 13.5px;
}
@media (max-width: 900px) {
  .tiers {
    grid-template-columns: 1fr;
  }
}

/* ---------- checklist ---------- */
.check {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 20px;
}
.check li {
  display: flex;
  gap: 10px;
  font-size: 14px;
}
.check li svg {
  flex-shrink: 0;
  margin-top: 2px;
}

/* ---------- star row ---------- */
.stars {
  display: flex;
  gap: 3px;
}

/* ---------- person card (agents / builders) ---------- */
.person-card {
  display: block;
  padding: 22px;
}
.pc-top {
  display: flex;
  gap: 14px;
  align-items: center;
}
.pc-avatar {
  width: 72px;
  height: 72px;
  flex-shrink: 0;
  background: #ede7dc;
  overflow: hidden;
  display: block;
}
.pc-avatar.lg {
  width: 110px;
  height: 110px;
  border-radius: 999px;
}
.pc-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pc-name {
  font-weight: 600;
  font-size: 16px;
}
.pc-stats {
  display: flex;
  gap: 20px;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
  font-size: 12.5px;
  color: var(--muted);
}
.pc-stats b {
  color: var(--ink);
  font-size: 15px;
}

/* ---------- directory (agents + builders) ---------- */
.dir-hero {
  background: var(--sand);
  border-bottom: 1px solid var(--line);
  padding: 52px 0 44px;
}
.dir-hero .h-1 {
  margin-top: 12px;
  font-family: var(--font-serif);
  letter-spacing: -0.01em;
}
.dir-lede {
  margin-top: 14px;
  max-width: 46rem;
  font-size: 16px;
  line-height: 1.6;
  color: var(--muted);
  text-wrap: pretty;
}
.dir-statstrip {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 32px;
  margin: 24px 0 0;
  padding: 0;
  list-style: none;
}
.dir-statstrip li {
  font-size: 12.5px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted);
}
.dir-statstrip b {
  display: block;
  font-family: var(--font-serif);
  font-size: 24px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ink);
}

/* medium card */
.dir-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}
.dcard {
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 20px;
  transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.dcard:hover {
  box-shadow: 0 12px 30px rgba(29, 35, 39, 0.08);
  transform: translateY(-2px);
}
.dcard-top {
  display: flex;
  gap: 13px;
  align-items: center;
}
.dcard-avatar {
  position: relative;
  flex: none;
  width: 60px;
  height: 60px;
  border-radius: 999px;
  overflow: hidden;
  background: #ede7dc;
  display: block;
}
.dcard-builder .dcard-avatar {
  border-radius: 12px;
  background: #fff;
  border: 1px solid var(--line);
}
.dcard-avatar.is-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-serif);
  font-size: 20px;
  color: var(--coral-dark);
  background: #fff1f1;
}
.dcard-name {
  font-family: var(--font-serif);
  font-size: 17px;
  line-height: 1.2;
}
.dcard-name a::after {
  content: "";
  position: absolute;
  inset: 0;
}
.dcard {
  position: relative;
}
.dcard-role {
  margin-top: 3px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--coral-dark);
}
.dcard-rating {
  margin-top: 3px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  font-weight: 700;
  color: var(--ink);
}
.dcard-rating svg {
  color: var(--coral);
}
.dcard-bio {
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--muted);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.dcard-listings {
  font-size: 12.5px;
  color: var(--muted);
}
.dcard-listings b {
  color: var(--ink);
}
.dcard-listings a {
  position: relative;
  z-index: 1;
  color: inherit;
}
.dcard-listings a:hover {
  color: var(--coral-dark);
}
.dcard-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: auto;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}
.dcard-acts {
  display: inline-flex;
  gap: 7px;
}
.dcard-act {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  border: 1px solid var(--line);
  color: var(--ink);
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.dcard-act:hover {
  background: var(--coral);
  border-color: var(--coral);
  color: #fff;
}
.dcard-lock {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}
.dcard-lock:hover {
  color: var(--coral-dark);
}
.dcard-profile {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 600;
  color: var(--coral-dark);
}

/* how they work */
.dir-how {
  background: var(--sand);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.dir-how .h-2 {
  margin-top: 8px;
  font-family: var(--font-serif);
}
.dir-how-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-top: 28px;
}
.dir-how-item svg {
  color: var(--coral);
}
.dir-how-item h3 {
  margin: 12px 0 6px;
  font-size: 16px;
}
.dir-how-item p {
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--muted);
}
.dir-cta-btns {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 22px;
}
.band-dark .btn.btn-line {
  background: transparent;
  color: #fff;
  border-color: rgba(255, 255, 255, 0.45);
}
.band-dark .btn.btn-line:hover {
  background: #fff;
  color: var(--ink);
  border-color: #fff;
}

/* listings carousel on profiles */
.rail-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.rail-count {
  display: inline-block;
  margin-left: 4px;
  font-size: 13px;
  font-weight: 700;
  color: var(--coral-dark);
  vertical-align: middle;
}
.rail-viewall {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 13px;
  font-weight: 600;
  color: var(--coral-dark);
}
.rail-viewall:hover {
  color: var(--coral);
}
.listing-rail {
  display: flex;
  gap: 16px;
  margin-top: 14px;
  overflow-x: auto;
  padding-bottom: 8px;
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
}
.listing-rail::-webkit-scrollbar {
  height: 6px;
}
.listing-rail::-webkit-scrollbar-thumb {
  background: var(--line);
  border-radius: 999px;
}
.listing-rail-item {
  flex: 0 0 clamp(240px, 31%, 320px);
  scroll-snap-align: start;
}
.listing-rail-item .pcard {
  height: 100%;
}

/* locked contact card */
.lockcard {
  border-style: dashed;
}
.lockcard-tag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
}

@media (max-width: 900px) {
  .dir-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .dir-how-grid {
    grid-template-columns: 1fr;
    gap: 20px;
  }
}
@media (max-width: 560px) {
  .dir-grid {
    grid-template-columns: 1fr;
  }
  .dir-hero {
    padding: 38px 0 32px;
  }
  .listing-rail-item {
    flex-basis: 78%;
  }
}

/* ---------- poc ribbon ---------- */
.poc-flag {
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  border: 1px solid var(--line);
  padding: 4px 8px;
  border-radius: 999px;
}
@media (max-width: 700px) {
  .poc-flag {
    display: none;
  }
}

/* ========== single-property Phase A widgets ========== */

/* hero: price column + actions */
.ptitle .price-col {
  flex-shrink: 0;
  text-align: right;
  align-self: flex-start;
}
.ptitle .price-col .price {
  margin-bottom: 12px;
}
.ptitle .price-col .saveshare {
  justify-content: flex-end;
}
.ptitle .hero-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
@media (max-width: 700px) {
  .ptitle .price-col {
    text-align: left;
    width: 100%;
  }
  .ptitle .price-col .saveshare {
    justify-content: flex-start;
  }
}

/* save / share */
.saveshare {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.saveshare button {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  color: var(--ink);
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 9px 14px;
  cursor: pointer;
}
.saveshare button svg {
  flex: none;
  width: 15px;
  height: 15px;
}
.saveshare button:hover {
  border-color: var(--ink);
}
.saveshare button.on {
  color: var(--coral-dark);
  border-color: var(--coral);
  background: #fff5f5;
}
.saveshare.ss-cta button {
  background: transparent;
  color: #fff;
  border-color: rgba(255, 255, 255, 0.4);
}
.saveshare.ss-cta button.on {
  color: #fff;
  border-color: #fff;
  background: rgba(255, 255, 255, 0.12);
}

/* sticky section sub-nav */
.secnav {
  position: sticky;
  top: 73px;
  z-index: 29;
  background: var(--paper);
  border-bottom: 1px solid var(--line);
  margin: 16px 0 8px;
  transition: top 0.25s ease;
}
/* Follows the header when it auto-hides on mobile scroll (see
   body.hdr-hidden .site-header above) so it doesn't stick 73px below a
   header that's no longer there. */
body.hdr-hidden .secnav {
  top: var(--secnav-hidden-top, 0px);
}
.secnav-inner {
  display: flex;
  gap: 4px;
  overflow-x: auto;
  scrollbar-width: none;
}
.secnav-inner::-webkit-scrollbar {
  display: none;
}
.secnav a {
  flex: none;
  padding: 12px 14px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--muted);
  white-space: nowrap;
  border-bottom: 2px solid transparent;
}
.secnav a:hover {
  color: var(--ink);
}
.secnav a.active {
  color: var(--coral-dark);
  border-bottom-color: var(--coral);
}

/* affordability widget */
.afford-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: var(--line);
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
  margin-top: 14px;
}
.afford-grid > div {
  background: var(--card);
  padding: 10px 12px;
}
.afford-grid span {
  display: block;
  font-size: 12px;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--muted);
}
.afford-grid b {
  font-size: 14px;
}
.afford-income {
  margin-top: 16px;
  border-top: 1px solid var(--line);
  padding-top: 14px;
}
.afford-income label {
  display: block;
  font-size: 12.5px;
  color: var(--muted);
}
.afford-income input {
  display: block;
  width: 100%;
  margin-top: 6px;
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font: inherit;
  font-size: 14px;
}
.afford-verdict {
  font-size: 13px;
  font-weight: 600;
  margin-top: 10px;
}
.afford-verdict.ok {
  color: #0a7d33;
}
.afford-verdict.warn {
  color: #b26a00;
}
.afford-verdict.bad {
  color: var(--coral-dark);
}

/* acquisition cost widget */
.acost-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13.5px;
  margin-top: 14px;
}
.acost-table td {
  padding: 9px 0;
  border-bottom: 1px solid var(--line);
  vertical-align: top;
}
.acost-table td:last-child {
  text-align: right;
  white-space: nowrap;
  font-weight: 600;
}
.acost-table tfoot td {
  border-bottom: none;
  border-top: 2px solid var(--ink);
  padding-top: 12px;
  font-weight: 700;
  font-size: 15px;
}
.acost-table select,
.acost-table input {
  display: block;
  margin-top: 5px;
  padding: 5px 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  font: inherit;
  font-size: 12px;
  max-width: 100%;
}
.acost-free {
  display: inline-block;
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: #0a7d33;
  background: #f2fbf4;
  border: 1px solid #bfe4c9;
  border-radius: 999px;
  padding: 1px 7px;
  margin-left: 4px;
}

/* documents */
.docblock {
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.docblock-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 14px 16px;
  background: var(--sand);
}
.docblock-actions {
  display: flex;
  align-items: center;
  gap: 14px;
}
.docframe {
  width: 100%;
  height: 520px;
  border: 0;
  border-top: 1px solid var(--line);
  background: #fff;
}
.doclist {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
}
.doclist li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--line);
  font-size: 14px;
}

/* comparables — premium card carousel */
.cmp-list {
  display: flex;
  gap: 14px;
  overflow-x: auto;
  padding-bottom: 8px;
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
}
.cmp-list::-webkit-scrollbar {
  height: 6px;
}
.cmp-list::-webkit-scrollbar-thumb {
  background: var(--line);
  border-radius: 999px;
}
.cmp-card {
  flex: 0 0 216px;
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  transition: box-shadow 0.15s ease, transform 0.15s ease, border-color 0.15s ease;
}
a.cmp-card:hover {
  border-color: #d9d3c8;
  box-shadow: 0 16px 36px rgba(29, 35, 39, 0.1);
  transform: translateY(-3px);
}
.cmp-card.is-current {
  border-color: var(--coral);
  box-shadow: 0 10px 28px rgba(255, 90, 95, 0.14);
}
.cmp-thumb {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  flex: none;
  background: #ece6db;
}
.cmp-thumb img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.cmp-badge {
  position: absolute;
  left: 8px;
  top: 8px;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #fff;
  background: var(--coral);
  border-radius: 6px;
  padding: 3px 7px;
}
.cmp-body {
  padding: 10px 12px 12px;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.cmp-name {
  font-size: 13px;
  line-height: 1.28;
  color: var(--ink);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  /* always reserve two lines so every card's sub/price line up */
  min-height: 2.56em;
}
.cmp-loc {
  font-size: 12px;
  color: var(--muted);
  margin-top: 4px;
  line-height: 1.4;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cmp-cfg {
  font-size: 12px;
  color: var(--muted);
  margin-top: 1px;
  line-height: 1.4;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cmp-price {
  margin-top: auto;
  padding-top: 8px;
  font-weight: 700;
  color: var(--coral-dark);
  font-size: 14px;
}
.cmp-psf {
  font-size: 12px;
  color: var(--muted);
  margin-top: 1px;
}
.cmp-go {
  display: block;
  padding: 8px 12px;
  border-top: 1px solid var(--line);
  font-size: 12px;
  font-weight: 700;
  color: var(--coral-dark);
}
.cmp-card.is-current .cmp-go {
  color: var(--muted);
  font-weight: 600;
}

/* expanded final CTA */
.cta-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  justify-content: center;
  margin-top: 22px;
}

/* ========== lead gate (floor plans / brochure) ========== */
.leadgate {
  position: relative;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  min-height: 300px;
}
.leadgate-preview {
  filter: blur(7px);
  pointer-events: none;
  user-select: none;
  max-height: 380px;
  overflow: hidden;
  padding: 4px;
  -webkit-mask-image: linear-gradient(#000 45%, transparent);
  mask-image: linear-gradient(#000 45%, transparent);
}
.leadgate-preview img {
  display: block;
  width: 100%;
  object-fit: cover;
}
/* Once unlocked (property.js adds .is-unlocked + sets .leadgate-panel[hidden]),
   drop the absolutely-positioned form panel, the blurred teaser and the fixed
   min-height so the revealed content (e.g. the floor-plan rail) lays out
   normally. The explicit rule is needed because `.leadgate-panel{display:flex}`
   otherwise out-weighs the UA `[hidden]{display:none}`. */
.leadgate.is-unlocked {
  min-height: 0;
  overflow: visible;
}
.leadgate.is-unlocked .leadgate-panel,
.leadgate-panel[hidden] {
  display: none;
}
.leadgate.is-unlocked .leadgate-preview {
  display: none;
}
.leadgate-panel {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 8px;
  padding: 28px 24px;
  background: radial-gradient(120% 90% at 50% 40%, rgba(255, 255, 255, 0.94), rgba(255, 255, 255, 0.8));
  color: var(--ink);
}
.leadgate-panel > svg {
  color: var(--coral-dark);
}
.leadgate-panel b {
  font-size: 17px;
  font-family: var(--font-serif);
  font-weight: 500;
}
.leadgate-panel .muted {
  font-size: 13px;
  max-width: 32ch;
}
.leadgate-form {
  width: 100%;
  max-width: 320px;
  margin-top: 6px;
}

/* Brochure / document lead-gates have no blurred .leadgate-preview — the panel
   is the only content. Absolute-positioning it over an empty box, plus the
   min-height:300px + overflow:hidden on .leadgate, clipped the form (submit
   button) on mobile. Where there is no preview, let the panel flow normally
   and the gate grow to fit it. */
.leadgate:not(:has(.leadgate-preview)) {
  min-height: 0;
  overflow: visible;
}
/* Floor-plan gate: the form panel was absolutely positioned over a ~300px
   preview box, so on phones the (taller) form was clipped at the top — the
   "Unlock the detailed floor plans" heading disappeared. Stack preview and
   panel in one grid cell instead: the box grows to whichever is taller. */
.leadgate:has(.leadgate-preview):not(.is-unlocked) {
  display: grid;
  min-height: 0;
}
.leadgate:has(.leadgate-preview):not(.is-unlocked) > .leadgate-preview,
.leadgate:has(.leadgate-preview):not(.is-unlocked) > .leadgate-panel {
  grid-area: 1 / 1;
}
.leadgate:has(.leadgate-preview):not(.is-unlocked) > .leadgate-preview {
  align-self: start;
}
.leadgate:has(.leadgate-preview):not(.is-unlocked) > .leadgate-panel {
  position: relative;
  inset: auto;
}
@media (max-width: 600px) {
  .leadgate-panel {
    padding: 20px 16px;
  }
  .leadgate-panel .muted {
    max-width: none;
  }
}
.leadgate:not(:has(.leadgate-preview)) .leadgate-panel {
  position: static;
  background: none;
}

/* ========== location map embed ========== */
.mapembed {
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  background: var(--sand);
}
.mapembed iframe,
.mapembed .pmap,
.mapembed .pmap-pano {
  display: block;
  width: 100%;
  height: 320px;
  border: 0;
}
.mapembed .pmap[hidden],
.mapembed .pmap-pano[hidden],
.map-meta button[hidden] {
  display: none;
}
.map-meta {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 12px 0 16px;
}
@media (max-width: 600px) {
  .mapembed iframe,
  .mapembed .pmap,
  .mapembed .pmap-pano {
    height: 280px;
  }
}

/* ========== hero photo thumbnail strip ========== */
.gthumbs {
  display: flex;
  gap: 8px;
  margin-top: 10px;
  overflow-x: auto;
  padding-bottom: 4px;
  scrollbar-width: thin;
  scroll-snap-type: x proximity;
}
.gthumbs::-webkit-scrollbar {
  height: 6px;
}
.gthumbs::-webkit-scrollbar-thumb {
  background: var(--line);
  border-radius: 999px;
}
.gthumb {
  flex: 0 0 auto;
  width: 108px;
  height: 72px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  overflow: hidden;
  background: #ece6db;
  cursor: pointer;
  scroll-snap-align: start;
  transition: border-color 0.15s ease, transform 0.15s ease;
}
.gthumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.gthumb:hover {
  border-color: var(--coral);
  transform: translateY(-1px);
}
@media (max-width: 600px) {
  .gthumb {
    width: 88px;
    height: 60px;
  }
}

/* ================= property page v2 (media-first upgrade) ================= */

/* EOI card — shares .offer-ic / .offer-kicker / .offer-title with the
   Current Offer strip so the page has one consistent "opportunity"
   card style. single-property.php only ever renders one of the two
   in this slot (EOI takes priority). 2026-09-13. */
.eoi-card {
  background: linear-gradient(135deg, #fff5f5 0%, #fef0ef 100%);
  border: 1px solid rgba(255, 90, 95, 0.25);
  border-radius: 14px;
  padding: 22px 24px;
  margin-top: 20px;
}
.eoi-card-kicker {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 14px;
}
.eoi-card-kicker .offer-ic {
  width: 32px;
  height: 32px;
}

/* brochure heading inside "Documents & verification" — was an unlabelled
   leadgate box nobody scrolled far enough to notice. 2026-09-13. */
.doc-brochure-h {
  font-family: var(--font-serif);
  font-size: 19px;
  font-weight: 600;
  color: var(--ink);
  margin: 28px 0 12px;
  scroll-margin-top: 118px;
}

/* current offer / opportunity strip — 2026-09-13 */
.offer-strip {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-top: 20px;
  padding: 20px 22px;
  background: linear-gradient(135deg, #fff5f5 0%, #fef0ef 100%);
  border: 1px solid rgba(255, 90, 95, 0.25);
  border-radius: 14px;
}
.offer-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 999px;
  background: #fff;
  color: var(--coral-dark);
  flex: none;
  box-shadow: 0 2px 8px rgba(255, 90, 95, 0.15);
}
.offer-body {
  flex: 1;
  min-width: 0;
}
.offer-kicker {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--coral-dark);
  margin: 0 0 4px;
}
.offer-title {
  font-family: var(--font-serif);
  font-size: 19px;
  font-weight: 600;
  color: var(--ink);
  margin: 0 0 4px;
}
.offer-desc {
  font-size: 13.5px;
  color: var(--muted);
  margin: 0 0 10px;
  max-width: 60ch;
}
.offer-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  font-size: 12.5px;
  color: var(--ink);
}
.offer-meta span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.offer-meta svg {
  color: var(--coral-dark);
  flex: none;
}
.offer-source {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 10px 0 0;
  font-size: 12px;
}
.offer-pending {
  display: inline-flex;
  align-items: center;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  background: var(--sand);
  border-radius: 999px;
  padding: 4px 11px;
}
.offer-terms {
  font-size: 12px;
  margin: 8px 0 0;
}
.offer-cta {
  flex: none;
  white-space: nowrap;
}
@media (max-width: 700px) {
  .offer-strip {
    flex-direction: column;
    align-items: flex-start;
  }
  .offer-cta {
    width: 100%;
    justify-content: center;
  }
}

/* "Why consider" icon cards — 2026-09-13 universal property page pass */
.why-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 14px;
  margin-top: 18px;
}
.why-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
}
.why-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: rgba(255, 90, 95, 0.08);
  color: var(--coral-dark);
  flex: none;
}
.why-card p {
  font-size: 14px;
  line-height: 1.5;
  color: var(--ink);
  margin: 0;
}

/* property snapshot — reuses .spec-rows, just wider in the main column */
.spec-rows-wide {
  margin-top: 16px;
  max-width: 480px;
}
.spec-rows-wide .spec-label {
  min-width: 150px;
}

/* advisory value — 2-column checklist on wider screens */
.check-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 24px;
}
@media (max-width: 620px) {
  .check-grid {
    grid-template-columns: 1fr;
  }
}

/* final decision area */
.decide-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
}
.decide-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  font-size: 13.5px;
  color: var(--ink);
  transition: box-shadow 0.15s ease, transform 0.15s ease, border-color 0.15s ease;
}
a.decide-item:hover {
  border-color: #d9d3c8;
  box-shadow: 0 10px 24px rgba(29, 35, 39, 0.08);
  transform: translateY(-2px);
}
.decide-item svg {
  flex: none;
  color: var(--coral-dark);
}
.decide-item b {
  font-weight: 600;
}
.decide-save {
  flex-wrap: wrap;
}

/* whitespace pass — tighter, uniform rhythm */
.ppage .psection {
  padding-top: 24px;
  margin-top: 24px;
}
.ppage .psection:first-child {
  padding-top: 0;
  margin-top: 4px;
}
.ppage .detail-grid {
  gap: 30px;
}
.ppage .pblock {
  padding-top: 34px;
  margin-top: 34px;
}

/* video hero */
.gmosaic .big .play-btn,
.gthumb .play-btn {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 66px;
  height: 66px;
  border-radius: 999px;
  background: rgba(255, 90, 95, 0.92);
  color: #fff;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.35);
}
.gthumb .play-btn {
  width: 30px;
  height: 30px;
}
.gthumb .play-btn svg {
  width: 14px;
  height: 14px;
}
.gmosaic .big.is-video::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(15, 18, 20, 0.28);
  z-index: 1;
}
.gmosaic .big.is-video .play-btn,
.gmosaic .big.is-video .media-tag {
  z-index: 2;
}
.gmosaic .media-tag {
  position: absolute;
  left: 14px;
  top: 14px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(20, 24, 27, 0.82);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  padding: 6px 11px;
  border-radius: 999px;
}
.gthumb.is-video {
  position: relative;
}
.lb-video {
  width: min(1100px, 92vw);
  aspect-ratio: 16 / 9;
  max-height: 82vh;
  border: 0;
  border-radius: 8px;
  background: #000;
}

/* conversion action row */
.convo {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 14px 0 4px;
}
.convo .btn {
  min-height: 42px;
  font-size: 14px;
}

/* folded "an advisor will share…" note */
.psection-note {
  border-top: 1px solid var(--line);
  margin-top: 22px;
  padding-top: 18px;
  font-size: 13.5px;
  color: var(--muted);
}

/* consistent empty state inside a section that has no data yet */
.psection-ask {
  margin: 0;
  padding: 16px 18px;
  background: var(--sand);
  border: 1px solid var(--line);
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.55;
  color: var(--muted);
}
.psection-ask a {
  color: var(--coral-dark);
  font-weight: 600;
  white-space: nowrap;
}

/* sidebar "on request" card, mirrors the AcquisitionCost card shell */
.side-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 18px;
}
.side-card h3 {
  font-family: var(--font-serif);
  font-size: 17px;
  font-weight: 600;
  margin-bottom: 8px;
}
.side-card .btn-full {
  margin-top: 14px;
}

/* documents checklist */
.doccheck {
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.doccheck li {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 14px;
  border-top: 1px solid var(--line);
  font-size: 13.5px;
}
.doccheck li:first-child {
  border-top: none;
}
.doccheck-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 999px;
  flex: none;
  font-weight: 700;
}
.doccheck-ic.ok {
  background: #f2fbf4;
  color: #0a7d33;
  border: 1px solid #bfe4c9;
}
.doccheck-ic.pending {
  background: var(--sand);
  color: var(--muted);
}
.doccheck-label {
  flex: 1;
}
.doccheck-state {
  font-weight: 600;
  text-align: right;
}
.doccheck-state.ok {
  color: #0a7d33;
}
.doccheck-state.pending {
  color: var(--muted);
}
@media (max-width: 560px) {
  .doccheck li {
    flex-wrap: wrap;
  }
  .doccheck-state {
    flex-basis: 100%;
    text-align: left;
    padding-left: 30px;
  }
}
.rera-phases {
  margin: 18px 0 0;
}
.rera-phases h3 {
  font-size: 15px;
  margin: 0 0 8px;
}
.rera-qr {
  margin: 18px 0 0;
  display: flex;
  align-items: center;
  gap: 14px;
}
.rera-qr img {
  width: 108px;
  height: 108px;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 6px;
  background: #fff;
  flex: none;
}
.rera-qr figcaption {
  font-size: 12.5px;
  color: var(--muted);
  max-width: 18ch;
}

/* faq accordion */
.faq {
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.faq details {
  border-top: 1px solid var(--line);
}
.faq details:first-child {
  border-top: none;
}
.faq summary {
  cursor: pointer;
  padding: 15px 18px;
  font-weight: 600;
  font-size: 15px;
  list-style: none;
  position: relative;
  padding-right: 44px;
}
.faq summary::-webkit-details-marker {
  display: none;
}
.faq summary::after {
  content: "+";
  position: absolute;
  right: 18px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 20px;
  color: var(--muted);
}
.faq details[open] summary::after {
  content: "–";
}
.faq details p {
  padding: 0 18px 16px;
  color: var(--muted);
  font-size: 14.5px;
}

/* advisor section */
.advisor-card {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 32px;
  flex-wrap: wrap;
  background: var(--sand);
  border-radius: 16px;
  padding: 30px 32px;
}
.advisor-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 210px;
}
@media (max-width: 640px) {
  .advisor-actions {
    flex-direction: row;
    flex-wrap: wrap;
    width: 100%;
  }
}

/* ---------- homepage about / SEO band (premium: lead + 3 pillars + expandable) ---------- */
.home-seo {
  max-width: 980px;
  padding-top: 60px;
  padding-bottom: 60px;
}
.home-seo > h2 {
  font-size: clamp(23px, 2.7vw, 31px);
  font-family: var(--font-serif);
  line-height: 1.18;
  letter-spacing: -0.01em;
  color: var(--ink);
  max-width: 24ch;
}
.home-seo p.home-seo-lead {
  margin-top: 16px;
  font-size: 16.5px;
  line-height: 1.65;
  color: var(--ink);
  max-width: 62ch;
}
.home-seo-pillars {
  margin-top: 30px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
.home-seo-pillars .hsp {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 22px 20px;
}
.home-seo-pillars .hsp-i {
  display: inline-flex;
  width: 38px;
  height: 38px;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: var(--sand);
  color: var(--coral-dark);
  margin-bottom: 12px;
}
.home-seo-pillars .hsp-i svg {
  width: 20px;
  height: 20px;
}
.home-seo-pillars .hsp h3 {
  margin: 0 0 6px;
  font-family: var(--font-sans);
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
}
.home-seo-pillars .hsp p {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.62;
  color: var(--muted);
}
.home-seo-fig {
  margin: 28px 0 4px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  line-height: 0;
}
.home-seo-fig img {
  width: 100%;
  height: 300px;
  object-fit: cover;
  object-position: center 42%;
}
.home-seo > p {
  margin-top: 24px;
  font-size: 14px;
  line-height: 1.7;
  color: var(--muted);
}
.home-seo h3 {
  font-size: 15.5px;
  font-weight: 700;
  margin-top: 22px;
}
@media (max-width: 760px) {
  .home-seo-pillars {
    grid-template-columns: 1fr;
  }
  .home-seo-fig img {
    height: 200px;
  }
}
.home-seo-body p {
  margin-top: 8px;
  font-size: 13.5px;
  line-height: 1.7;
  color: var(--muted);
}
.home-seo strong {
  color: var(--ink);
  font-weight: 600;
}
.home-seo a {
  color: var(--coral-dark);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.home-seo-more {
  margin-top: 14px;
}
.home-seo-more > summary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  list-style: none;
  font-size: 13px;
  font-weight: 600;
  color: var(--coral-dark);
}
.home-seo-more > summary::-webkit-details-marker {
  display: none;
}
.home-seo-more > summary::after {
  content: "\203A"; /* › */
  font-size: 15px;
  transform: rotate(90deg);
  transition: transform 0.15s ease;
}
.home-seo-more[open] > summary::after {
  transform: rotate(-90deg);
}
.home-seo-more > summary .open,
.home-seo-more[open] > summary .closed {
  display: none;
}
.home-seo-more[open] > summary .open {
  display: inline;
}

/* ---------- Elementor-editable zone (bottom of the front page) ---------- */
.asraa-elementor-zone {
  overflow-x: clip;
}
.asraa-elementor-zone img {
  max-width: 100%;
  height: auto;
}
/* keep a full-bleed Elementor section from bursting the page width */
.asraa-elementor-zone > .elementor {
  max-width: 100%;
}

/* ---------- homepage advisor carousel ---------- */
.adv-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 26px;
}
.adv-sub {
  font-size: 13.5px;
  color: var(--muted);
  margin-top: 8px;
  max-width: 46ch;
}
.adv-all {
  flex: none;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--coral-dark);
  white-space: nowrap;
}
.adv-all:hover {
  color: var(--coral);
}

/* rail + edge arrows */
.adv-carousel {
  position: relative;
}
.adv-rail {
  display: flex;
  gap: 16px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  padding-bottom: 4px;
}
@media (prefers-reduced-motion: reduce) {
  .adv-rail {
    scroll-behavior: auto;
  }
}
.adv-rail::-webkit-scrollbar {
  display: none;
}
.adv-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 3;
  width: 40px;
  height: 40px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: #fff;
  color: var(--ink);
  font-size: 21px;
  line-height: 1;
  display: grid;
  place-items: center;
  cursor: pointer;
  box-shadow: 0 6px 20px rgba(29, 35, 39, 0.14);
  transition: border-color 0.15s ease, color 0.15s ease, opacity 0.15s ease;
}
.adv-nav.prev {
  left: -12px;
}
.adv-nav.next {
  right: -12px;
}
.adv-nav:hover {
  border-color: var(--coral);
  color: var(--coral-dark);
}
.adv-nav:disabled {
  opacity: 0.35;
  cursor: default;
  box-shadow: 0 4px 12px rgba(29, 35, 39, 0.1);
}

/* card */
.adv-card {
  flex: 0 0 244px;
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  padding: 22px 18px 0;
  transition: box-shadow 0.15s ease, transform 0.15s ease, border-color 0.15s ease;
}
.adv-card:hover {
  border-color: #e4d9d3;
  box-shadow: 0 14px 30px rgba(29, 35, 39, 0.09);
  transform: translateY(-3px);
  color: inherit;
}
.adv-avatar {
  width: 62px;
  height: 62px;
  border-radius: 999px;
  overflow: hidden;
  background: var(--sand);
  box-shadow: 0 0 0 3px var(--paper), 0 0 0 4px var(--line);
  margin-bottom: 14px;
}
.adv-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.adv-avatar.is-initials {
  display: grid;
  place-items: center;
  background: var(--coral-soft, #ffe9ea);
  color: var(--coral-dark);
  font-weight: 700;
  font-size: 20px;
  letter-spacing: 0.02em;
}
.adv-name {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-weight: 600;
  font-size: 15px;
  color: var(--ink);
}
.adv-tick {
  display: inline-grid;
  place-items: center;
  width: 15px;
  height: 15px;
  border-radius: 999px;
  background: #f0b429;
  color: #fff;
  flex: none;
}
.adv-tick svg {
  display: block;
}
.adv-job {
  font-size: 12.5px;
  color: var(--coral-dark);
  font-weight: 600;
  margin-top: 4px;
}
.adv-loc {
  font-size: 12px;
  color: var(--muted);
  margin-top: 3px;
}
.adv-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  width: calc(100% + 36px);
  margin: 16px -18px 0;
  margin-top: auto;
  padding-top: 0;
  border-top: 1px solid var(--line);
}
.adv-stat {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 12px 6px;
}
.adv-stat + .adv-stat {
  border-left: 1px solid var(--line);
}
.adv-stat strong {
  font-size: 15px;
  font-weight: 700;
  color: var(--ink);
}
.adv-stat span {
  font-size: 12px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--muted);
}
@media (max-width: 560px) {
  .adv-head {
    flex-wrap: wrap;
  }
  /* Arrows stay visible on mobile (2026-09-12) — one card fills the
     viewport, so touch-swipe is ambiguous and the arrow is the only
     clear way to move to the next card. Was `display:none` here. */
  .adv-card {
    flex-basis: 100%;
  }
}

/* ---------- home: explore by location ---------- */
.loc-sec {
  padding-bottom: 64px;
}
.loc-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 24px;
}
.loc-head .h-1 {
  margin: 0;
}
/* location + latest-property carousels reuse the advisor rail (.adv-carousel
   / .adv-nav / .adv-rail + [data-rail] — wired in theme.js). 3 cards visible
   on desktop, 2 on tablet, ~1 on phones; arrows scroll one card at a time. */
.loc-rail .loc-card,
.props-rail .pcard,
.insights-rail .card {
  flex: 0 0 calc((100% - 32px) / 3);
  scroll-snap-align: start;
}
/* The shared carousel JS moves these rails with `rail.scrollLeft = target`.
   On this Chrome build that assignment is silently swallowed when the rail
   has `scroll-behavior: smooth` AND `scroll-snap-type: x mandatory` (both
   set on .adv-rail) — the rail stalls mid-card and the arrows look dead.
   Force auto behaviour + no snap here so the arrows jump reliably by one
   card. Compound selector outweighs `.adv-rail`. */
.adv-rail.loc-rail,
.adv-rail.props-rail,
.adv-rail.insights-rail,
.adv-rail.cfb-rail,
.adv-rail.cfb-trusted {
  scroll-behavior: auto;
  scroll-snap-type: none;
}
.props-rail,
.insights-rail {
  padding-bottom: 12px;
}
@media (max-width: 900px) {
  .loc-rail .loc-card,
  .props-rail .pcard,
  .insights-rail .card {
    flex-basis: calc((100% - 16px) / 2);
  }
}
@media (max-width: 560px) {
  .loc-rail .loc-card,
  .props-rail .pcard,
  .insights-rail .card,
  .cfb-rail .cfb-card {
    /* One full card per view + visible arrows, not a partial peek.
       2026-09-12. */
    flex-basis: 100%;
  }
}

/* Rail position dots (theme.js) — shown on all viewport widths. 2026-09-12. */
.rail-dots {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 6px;
  margin-top: 14px;
}
.rail-dot {
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: var(--line);
  transition: width 0.2s ease, background 0.2s ease;
}
.rail-dot.is-active {
  width: 18px;
  background: var(--coral);
}

/* ---------- home: browse by intent (mobile carousel) ---------- */
.intent-carousel .adv-nav,
.intent-carousel .rail-dots {
  display: none;
}
@media (max-width: 560px) {
  .intent-carousel .adv-nav {
    display: grid;
  }
  .intent-carousel .rail-dots {
    display: flex;
  }
  .intent-rail {
    display: flex;
    gap: 16px;
    overflow-x: auto;
    scroll-snap-type: none;
    scroll-behavior: auto;
    scrollbar-width: none;
    padding-bottom: 4px;
  }
  .intent-rail::-webkit-scrollbar {
    display: none;
  }
  .intent-rail > .card {
    flex: 0 0 100%;
    padding: 34px 46px;
    min-height: 92px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    text-align: center;
  }
}
.loc-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  color: inherit;
  text-decoration: none;
  transition: box-shadow 0.15s ease, transform 0.15s ease, border-color 0.15s ease;
}
a.loc-card:hover {
  box-shadow: 0 12px 30px rgba(29, 35, 39, 0.08);
  transform: translateY(-2px);
  border-color: var(--coral);
}
a.loc-card:hover .loc-sky {
  color: var(--coral-soft);
}
.loc-card--soon {
  opacity: 0.72;
}
.loc-sky {
  position: relative;
  flex: none;
  height: 88px;
  color: #cdbfa9;
  background: linear-gradient(180deg, #efe9df, #f7f4ee);
}
.loc-sky svg {
  position: absolute;
  left: 16px;
  right: 16px;
  bottom: 0;
  width: calc(100% - 32px);
  height: 58px;
}
.loc-sky--photo {
  height: 132px;
  background: var(--sand);
}
.loc-sky--photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.loc-body {
  display: flex;
  flex: 1;
  flex-direction: column;
  padding: 18px 20px 20px;
}
.loc-name {
  margin: 0;
  font-size: 19px;
  font-weight: 700;
  color: var(--ink);
}
.loc-tag {
  margin: 6px 0 0;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--muted);
}
.loc-areas {
  margin: 10px 0 0;
  font-size: 12px;
  color: var(--muted);
}
.loc-foot {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: auto;
  padding-top: 14px;
}
.loc-foot .lnk {
  font-size: 13px;
}
.loc-pill {
  font-size: 12px;
  font-weight: 600;
  /* #b91c1c, not var(--coral-dark), for WCAG AA contrast on #fff0f0 (var(--coral-dark) computes ~4.3:1, below the 4.5:1 minimum) */
  color: #b91c1c;
  background: #fff0f0;
  border: 1px solid #ffd9da;
  border-radius: 999px;
  padding: 4px 10px;
}
.loc-pill--soon {
  color: var(--muted);
  background: var(--sand);
  border-color: var(--line);
}

/* ---------------------------------------------------------------------------
   Live Listings on locality rate pages.
   The baked content used a `.slick-carousel` that never inits on full-design
   pages (Slick JS is swept) -> one full-width, unstyled card. ll_gen.php now
   emits `.asraa-ll-grid` clean markup; these rules lay it out with no JS and
   out-specify the generic `.page-content a / img` rules.
   --------------------------------------------------------------------------- */
.locality-rates .asraa-ll-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 16px;
  margin: 18px 0 10px;
}
.locality-rates .asraa-ll-card,
.page-body .page-content .asraa-ll-grid a.asraa-ll-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  text-decoration: none;
  color: var(--ink);
  transition: box-shadow 0.15s ease, transform 0.15s ease, border-color 0.15s ease;
}
.locality-rates .asraa-ll-card:hover {
  box-shadow: 0 10px 26px rgba(29, 35, 39, 0.1);
  border-color: var(--coral-soft);
  transform: translateY(-2px);
}
.locality-rates .asraa-ll-media {
  display: block;
  height: 172px;
  background: var(--sand);
}
.locality-rates .asraa-ll-media img,
.page-body .page-content .asraa-ll-grid .asraa-ll-media img {
  width: 100%;
  height: 172px;
  object-fit: cover;
  display: block;
  margin: 0;
  border-radius: 0;
}
@media (max-width: 540px) {
  .locality-rates .asraa-ll-media,
  .locality-rates .asraa-ll-media img,
  .page-body .page-content .asraa-ll-grid .asraa-ll-media img {
    height: 140px;
  }
}
.locality-rates .asraa-ll-body {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 12px 14px 14px;
}
.locality-rates .asraa-ll-title {
  font-weight: 600;
  font-size: 14px;
  line-height: 1.35;
  color: var(--ink);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.locality-rates .asraa-ll-meta {
  font-size: 12.5px;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.locality-rates .asraa-ll-price {
  font-weight: 700;
  font-size: 14px;
  color: var(--coral-dark);
  margin-top: 2px;
}
.locality-rates .asraa-ll-cta {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--coral-dark);
  margin-top: 6px;
}
@media (max-width: 540px) {
  .locality-rates .asraa-ll-grid {
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }
  .locality-rates .asraa-ll-body {
    padding: 10px;
  }
}

/* ---------------------------------------------------------------------------
   /properties/ archive — results toolbar (count + sort) and the
   browse-by-location / browse-by-category chip rows below the grid.
   --------------------------------------------------------------------------- */
.results-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
  margin: 20px 0 16px;
}
.results-count {
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
}
.results-sort {
  display: flex;
  align-items: center;
  gap: 8px;
}
.results-sort label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}
.results-sort select {
  font: inherit;
  font-size: 13px;
  color: var(--ink);
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 7px 30px 7px 12px;
  cursor: pointer;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2 4l4 4 4-4' stroke='%236e6a64' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
}
.results-sort select:focus-visible {
  outline: 2px solid var(--coral);
  outline-offset: 1px;
}

.browse-block {
  margin-top: 8px;
}
.browse-block + .browse-block {
  margin-top: 4px;
}
.browse-block .h-3 {
  font-size: 15px;
  font-weight: 700;
  color: var(--ink);
  margin: 0 0 12px;
}
.browse-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.browse-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  background: var(--sand);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 8px 14px;
  text-decoration: none;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.browse-chip:hover {
  background: #fff;
  border-color: var(--coral);
}
.browse-chip-n {
  font-size: 12px;
  font-weight: 700;
  color: var(--coral-dark);
}

/* ---------------------------------------------------------------------------
   /property-valuation/ — page-property-valuation.php. The [asraa_valuation_form]
   card keeps the plugin's own styling; these rules only lay out the shell
   (two-column form + rail, "why" band) in the design system.
   --------------------------------------------------------------------------- */
.pval-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
  gap: 32px;
  align-items: start;
}
.pval-form {
  min-width: 0;
}
.pval-form .asraa-svs-wrapper {
  margin: 0;
  max-width: none;
}
.pval-rail {
  display: flex;
  flex-direction: column;
  gap: 16px;
  position: sticky;
  top: 96px;
}
.pval-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 20px 22px;
}
.pval-card .h-3 {
  font-size: 15px;
  font-weight: 700;
  color: var(--ink);
  margin: 0 0 12px;
}
.pval-steps {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: none;
}
.pval-steps li {
  display: flex;
  gap: 10px;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--muted);
  margin-bottom: 12px;
}
.pval-steps li:last-child {
  margin-bottom: 0;
}
.pval-steps li span {
  flex: none;
  width: 22px;
  height: 22px;
  border-radius: 999px;
  background: var(--sand);
  color: var(--coral-dark);
  font-size: 12px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}
.pval-contact .pval-cbtn {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 14px;
  margin-top: 8px;
  background: var(--sand);
  border: 1px solid var(--line);
  border-radius: 10px;
  text-decoration: none;
  color: var(--ink);
  font-size: 13.5px;
  font-weight: 600;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.pval-contact .pval-cbtn:first-of-type {
  margin-top: 0;
}
.pval-contact .pval-cbtn:hover {
  background: #fff;
  border-color: var(--coral);
}
.pval-contact .pval-cbtn span {
  font-size: 15px;
  line-height: 1;
}
.pval-note {
  font-size: 12px;
  line-height: 1.5;
  color: var(--muted);
  margin: 0;
}
.pval-note a {
  color: var(--coral-dark);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.pval-why {
  text-align: center;
  padding: 8px 10px;
}
.pval-why-i {
  width: 46px;
  height: 46px;
  margin: 0 auto 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(255, 90, 96, 0.14), rgba(255, 138, 61, 0.14));
}
.pval-why h3 {
  font-size: 16px;
  color: var(--ink);
  margin: 0 0 6px;
}
.pval-why p {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--muted);
  margin: 0;
}
@media (max-width: 900px) {
  .pval-grid {
    grid-template-columns: 1fr;
    gap: 22px;
  }
  .pval-rail {
    position: static;
  }
}

/* The plugin's coral form header ("What's Your Property Worth?") duplicates
   the page-head H1 on page-property-valuation.php — drop it there and let the
   form card start clean. */
.pval-form .asraa-svs-header {
  display: none;
}
.pval-form .asraa-svs-wrapper {
  border: 1px solid var(--line);
  box-shadow: 0 10px 30px rgba(29, 35, 39, 0.06);
}
.pval-form .asraa-svs-valuation-form {
  padding-top: 24px;
}

/* ===========================================================================
   Shareable Property Valuation Report  (inc/valuation-report.php)
   Screen: a clean document card.  Print / html2pdf: A4, no chrome.
   =========================================================================== */
.valrep { max-width: 860px; margin: 0 auto; }

.valrep-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 20px;
}
.valrep-actions .btn { font-size: 13.5px; padding: 10px 16px; cursor: pointer; }
.valrep-actions .btn-ghost {
  background: #fff !important;
  color: var(--ink) !important;
  border: 1px solid var(--line) !important;
  border-radius: 10px;
  font-weight: 600;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  transition: border-color .15s ease;
}
.valrep-actions .btn-ghost:hover { border-color: var(--coral) !important; }
.valrep-actions .btn[disabled] { opacity: .65; cursor: default; }

.valrep-doc {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  color: #2b2b2b;
  font-size: 14px;
  line-height: 1.6;
}

.valrep-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  padding: 26px 30px;
  background: linear-gradient(135deg, #ff5a5f, #ff8a3d);
  color: #fff;
}
.valrep-brand { display: flex; align-items: center; gap: 14px; }
.valrep-brand img { display: block; background: #fff; border-radius: 8px; padding: 6px 8px; }
.valrep-brand span { font-size: 17px; font-weight: 800; letter-spacing: -.01em; }
.valrep-meta { text-align: right; font-size: 12px; line-height: 1.5; }
.valrep-meta > div + div { margin-top: 4px; }
.valrep-meta span { opacity: .85; display: block; text-transform: uppercase; letter-spacing: .05em; font-size: 12px; }
.valrep-meta strong { font-size: 13px; font-weight: 700; }

.valrep-sec { padding: 22px 30px; border-top: 1px solid #efece7; }
.valrep-sec:first-of-type { border-top: none; }
.valrep-sec h2 {
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: #b23842;
  margin: 0 0 12px;
}

.valrep-kv { width: 100%; border-collapse: collapse; }
.valrep-kv th, .valrep-kv td { text-align: left; padding: 7px 0; vertical-align: top; font-size: 13.5px; }
.valrep-kv th { width: 190px; color: #8a8378; font-weight: 600; }
.valrep-kv td { color: #1d2327; font-weight: 600; }
.valrep-kv tr + tr th, .valrep-kv tr + tr td { border-top: 1px solid #f4f1ec; }

/* market signal */
.valrep-signal { display: flex; gap: 8px; margin-bottom: 10px; }
.valrep-sig {
  flex: 1;
  text-align: center;
  padding: 12px 6px;
  border: 1px solid var(--line);
  border-radius: 10px;
  font-size: 13px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #b7ad9c;
  background: #fbfaf8;
}
.valrep-signal[data-signal="buy"]  .valrep-sig.is-on { color: #1a7f37; border-color: #1a7f37; background: #e8f6ec; }
.valrep-signal[data-signal="hold"] .valrep-sig.is-on { color: #8a6d1a; border-color: #d4a72c; background: #fdf6e3; }
.valrep-signal[data-signal="sell"] .valrep-sig.is-on { color: #b23842; border-color: var(--coral); background: #fdecec; }
.valrep-signal-txt { margin: 0 0 4px; font-size: 13.5px; color: #1d2327; font-weight: 600; }
.valrep-signal-note { margin: 0; font-size: 12px; color: #9a9284; }

/* value block */
.valrep-value { text-align: center; }
.valrep-value h2 { text-align: left; }
.valrep-headline { font-size: 40px; font-weight: 800; letter-spacing: -.02em; color: var(--coral-dark); margin: 4px 0 2px; }
.valrep-psf { font-size: 12.5px; color: #8a8378; margin: 0 0 16px; }
.valrep-band { width: 100%; border-collapse: collapse; margin-top: 4px; }
.valrep-band th {
  font-size: 12px; text-transform: uppercase; letter-spacing: .06em;
  color: #8a8378; font-weight: 700; padding: 8px 6px; border-bottom: 1px solid #efece7;
}
.valrep-band td { padding: 12px 6px; font-size: 16px; font-weight: 700; color: #2b2b2b; border-bottom: 1px solid #f4f1ec; }
.valrep-band td.is-mid { color: var(--coral-dark); font-size: 19px; }
.valrep-band-psf td { font-size: 12px; font-weight: 600; color: #9a9284; padding-top: 2px; border-bottom: none; }
.valrep-quick { font-size: 12.5px; color: #6a6a6a; margin: 14px 0 0; text-align: left; }

.valrep-workings ul { list-style: none; margin: 0; padding: 0; }
.valrep-workings li { padding: 6px 0 6px 18px; position: relative; font-size: 13.5px; border-top: 1px solid #f4f1ec; }
.valrep-workings li:first-child { border-top: none; }
.valrep-workings li::before { content: ""; position: absolute; left: 2px; top: 13px; width: 6px; height: 6px; border-radius: 50%; background: #ff8a3d; }

.valrep-commentary p { margin: 0 0 10px; font-size: 13.5px; color: #444; }
.valrep-commentary strong { color: #1d2327; }

.valrep-disclaimer { background: #fbfaf8; }
.valrep-disclaimer p { font-size: 12px; line-height: 1.65; color: #6a6a6a; margin: 0 0 8px; }
.valrep-disclaimer a { color: var(--coral-dark); }

.valrep-foot {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 16px;
  padding: 18px 30px; background: #1d2327; color: #cfcac2; font-size: 12px; line-height: 1.6;
}
.valrep-foot strong { color: #fff; }
.valrep-foot a { color: #ffb3a7; }
.valrep-foot-ref { font-size: 12px; letter-spacing: .06em; opacity: .7; white-space: nowrap; }

.valrep-advisor {
  display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap;
  margin-top: 18px; padding: 20px 24px; background: var(--sand); border: 1px solid var(--line); border-radius: 12px;
}
.valrep-advisor h3 { margin: 0 0 4px; font-size: 16px; color: var(--ink); }
.valrep-advisor p { margin: 0; font-size: 13px; }

@media (max-width: 640px) {
  .valrep-head { flex-direction: column; gap: 14px; padding: 20px; }
  .valrep-meta { text-align: left; }
  .valrep-sec { padding: 18px 20px; }
  .valrep-kv th { width: 130px; }
  .valrep-headline { font-size: 30px; }
  .valrep-foot { flex-direction: column; align-items: flex-start; }
}

@media print {
  header.site-header, footer, .page-head, .valrep-actions, .valrep-advisor,
  [data-noprint], #wpadminbar { display: none !important; }
  body { background: #fff !important; }
  .wrap, .section, main { margin: 0 !important; padding: 0 !important; max-width: none !important; }
  .valrep, .valrep-doc { max-width: none; border: none; border-radius: 0; box-shadow: none; }
  .valrep-sec { break-inside: avoid; }
  .valrep-head { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}


/* ============================================================
   Homepage — Client feedback section (.cfb)
   Google aggregate score + 5-star review rail + feedback form.
   ============================================================ */
.cfb {
  padding-bottom: 72px;
}
.cfb-head {
  text-align: center;
  max-width: 40rem;
  margin: 0 auto;
}
.cfb-sub {
  font-size: 14.5px;
  margin-top: 12px;
}

/* --- aggregate score --- */
.cfb-score {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  margin-top: 34px;
}
.cfb-score-num {
  display: inline-flex;
  align-items: center;
  gap: 14px;
}
.cfb-score-num strong {
  font-family: var(--font-serif);
  font-size: 46px;
  line-height: 1;
  color: var(--ink);
}
.cfb-score-meta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13.5px;
  color: #6f6a62;
}
.cfb-score-meta strong {
  color: var(--ink);
}
.cfb-g {
  flex: none;
  display: block;
}
.cfb-review-btn {
  margin-top: 6px;
}

/* --- partial-fill star row (aggregate + per review) --- */
.cfb-stars {
  position: relative;
  display: inline-block;
  font-size: 19px;
  letter-spacing: 3px;
  line-height: 1;
  white-space: nowrap;
}
.cfb-stars-off {
  color: #d9d3c8;
}
.cfb-stars-on {
  position: absolute;
  left: 0;
  top: 0;
  width: var(--cfb-pct, 100%);
  overflow: hidden;
  color: var(--coral);
}

/* --- review rail --- */
.cfb-carousel {
  margin-top: 44px;
}
.cfb-rail {
  gap: 18px;
}
.cfb-card {
  flex: 0 0 340px;
  max-width: 340px;
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 24px;
  margin: 0;
}
@media (max-width: 620px) {
  .cfb-card {
    flex-basis: 82vw;
    max-width: 82vw;
  }
}
.cfb-card-top {
  display: flex;
  align-items: center;
  gap: 12px;
}
.cfb-avatar {
  flex: none;
  width: 44px;
  height: 44px;
  border-radius: 999px;
  overflow: hidden;
  background: #ede7dc;
  display: grid;
  place-items: center;
}
.cfb-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.cfb-avatar.is-initials span {
  font-family: var(--font-serif);
  font-size: 16px;
  font-weight: 600;
  color: var(--coral-dark);
}
.cfb-who {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.cfb-name {
  font-weight: 600;
  font-size: 14.5px;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cfb-when {
  font-size: 12px;
  color: #9a938a;
}
.cfb-card-top .cfb-g {
  width: 17px;
  height: 17px;
}
.cfb-text {
  margin: 0;
  font-size: 14px;
  line-height: 1.72;
  color: #4a453f;
  display: -webkit-box;
  -webkit-line-clamp: 7;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* --- feedback invite + form --- */
.cfb-invite {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  align-items: center;
  margin-top: 52px;
  padding-top: 44px;
  border-top: 1px solid var(--line);
}
@media (max-width: 860px) {
  .cfb-invite {
    grid-template-columns: 1fr;
    gap: 22px;
  }
}
.cfb-invite-copy h3 {
  font-family: var(--font-serif);
  font-size: 24px;
  line-height: 1.25;
  color: var(--ink);
  margin: 0;
}
.cfb-invite-copy p {
  margin-top: 12px;
  font-size: 14.5px;
  line-height: 1.65;
}
.cfb-form {
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.cfb-form .fld {
  width: 100%;
}
.cfb-form textarea.fld {
  resize: vertical;
  min-height: 96px;
  font: inherit;
}

/* star input — DOM order 5→1, flex row-reverse so it shows 1→5 and the
   `input:checked ~ label` fill runs leftward */
.cfb-rate {
  margin-bottom: 2px;
}
.cfb-rate-label {
  display: block;
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #9a938a;
  margin-bottom: 6px;
}
.cfb-star-sr {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.cfb-stars-input {
  display: flex;
  flex-direction: row-reverse;
  justify-content: flex-end;
  gap: 4px;
}
.cfb-stars-input input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}
.cfb-stars-input label {
  font-size: 30px;
  line-height: 1;
  color: #d9d3c8;
  cursor: pointer;
  transition: color 0.12s ease, transform 0.12s ease;
}
.cfb-stars-input label:hover {
  transform: scale(1.08);
}
.cfb-stars-input input:checked ~ label,
.cfb-stars-input label:hover,
.cfb-stars-input label:hover ~ label {
  color: var(--coral);
}
.cfb-stars-input input:focus-visible + label {
  outline: 2px solid var(--coral);
  outline-offset: 2px;
  border-radius: 4px;
}

/* --- developers-on-asraa logo strip --- */
.cfb-trusted-label {
  margin-top: 52px;
}
.cfb-trusted-carousel {
  margin-top: 18px;
}
.cfb-trusted {
  gap: 20px;
  align-items: stretch;
  padding: 10px 2px;
}
.cfb-trusted span {
  font-family: var(--font-serif);
  font-size: 15px;
  color: #8a837a;
}
.cfb-trusted-item {
  flex: 0 0 calc((100% - 4 * 20px) / 5);
  scroll-snap-align: start;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 104px;
  padding: 18px 24px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: 0 1px 3px rgba(17, 17, 17, 0.04);
  transition: box-shadow 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}
.cfb-trusted-item:hover {
  box-shadow: 0 10px 24px rgba(17, 17, 17, 0.08);
  border-color: rgba(255, 90, 95, 0.35);
  transform: translateY(-3px);
}
.cfb-trusted-item img {
  max-width: 100%;
  height: 68px;
  width: auto;
  object-fit: contain;
  filter: grayscale(0.4) opacity(0.9);
  transition: filter 0.2s ease;
}
.cfb-trusted-item:hover img {
  filter: grayscale(0) opacity(1);
}
@media (max-width: 900px) {
  .cfb-trusted-item {
    flex: 0 0 calc((100% - 3 * 20px) / 4);
  }
}
@media (max-width: 560px) {
  .cfb-trusted {
    gap: 14px;
  }
  .cfb-trusted-item {
    flex: 0 0 calc((100% - 14px) / 2);
    height: 88px;
    padding: 14px 18px;
  }
  .cfb-trusted-item img {
    height: 48px;
  }
}

/* ---------- homepage: for agents & advisors (recruitment) ---------- */
.adv-recruit {
  align-items: start;
}
.adv-recruit-areas {
  margin-top: 24px;
}
.adv-recruit-areas-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--muted);
}
.adv-recruit-areas .chips {
  margin-top: 10px;
}
.adv-recruit-cta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 26px;
}
.adv-recruit-form {
  padding: 26px;
  position: sticky;
  top: 96px;
}
@media (max-width: 900px) {
  .adv-recruit-form {
    position: static;
  }
}

/* homepage advisors: real-advisor "join them" strip */
.adv-join-strip {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 28px;
  padding: 18px 22px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--sand);
}
.adv-join-strip p {
  margin: 0;
  font-size: 14px;
  color: var(--muted);
  max-width: 60ch;
}
.adv-join-strip strong {
  color: var(--ink);
}

/* ---------- Property in Mira Road landing (page-property-in-mira-road.php) ---------- */
.pim-grid { padding-top: 10px; padding-bottom: 18px; }
.pim-grid + .pim-grid { padding-top: 0; }
.pim-grid-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 20px;
}
.pim-cards { gap: 18px; }
@media (max-width: 560px) {
  .pim-cards { grid-template-columns: 1fr; }
  .pim-grid-head { flex-wrap: wrap; }
}

/* Keep the last property-page section clear of the footer, and on mobile of
   the fixed .mcta bar — the rent-after / compare block was butting against it. */
.ppage {
  padding-bottom: 44px;
}
@media (max-width: 900px) {
  main {
    padding-bottom: 96px;
  }
}

/* ---------- EOI / pre-launch block (single-property.php, 'eoi' label) ---------- */
.eoi-ptable-wrap { overflow-x: auto; }
.eoi-ptable {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}
.eoi-ptable th,
.eoi-ptable td {
  text-align: left;
  padding: 11px 14px;
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
}
.eoi-ptable thead th {
  font-size: 12px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
  background: var(--sand);
}
.eoi-ptable td strong { color: var(--ink); }
.eoi-ptable td.eoi-save { color: var(--coral-dark); font-weight: 600; }
.eoicta {
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  gap: 32px;
  align-items: start;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 22px 24px;
}
.eoicta-h3 {
  font-family: var(--font-serif);
  font-size: 17px;
  font-weight: 600;
  color: var(--ink);
  margin: 0 0 6px;
}
.eoicta-form {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 18px;
}
.eoicta-list {
  margin: 16px 0 0;
  padding-left: 20px;
  list-style: disc;

  font-size: 14px;
  color: var(--muted);
}
.eoicta-list li { margin-bottom: 8px; }
.eoicta-list strong { color: var(--ink); }
@media (max-width: 780px) {
  .eoicta { grid-template-columns: 1fr; gap: 18px; padding: 22px; }
}

.eoi-amount {
  display: inline-flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  background: var(--brand-tint, #ffece9);
  border: 1px solid var(--coral, #ff5a5f);
  border-radius: 12px;
  padding: 10px 16px;
  margin: 4px 0 0;
}
.eoi-amount-k {
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--coral-dark, #d6353a);
  font-weight: 600;
}
.eoi-amount-v {
  font-size: 20px;
  font-weight: 700;
  color: var(--ink);
  font-family: var(--font-serif, Georgia, serif);
}
.eoi-amount-tag {
  font-size: 12px;
  color: var(--muted);
  border-left: 1px solid var(--coral, #ff5a5f);
  padding-left: 10px;
}

/* Property -> Builder link (Critical #3, SEO audit 2026-09-04) */
.phead-builder {
  font-size: 13.5px;
  color: var(--muted);
  margin: 2px 0 0;
}
.phead-builder a {
  color: var(--coral-dark);
  font-weight: 600;
  text-decoration: none;
}
.phead-builder a:hover {
  text-decoration: underline;
}

/* Builders archive: show ~4 cards, scroll for the rest (2026-09-04) */
.agarch-grid-wide {
  max-height: 680px;
  overflow-y: auto;
  padding-right: 6px;
  scroll-behavior: smooth;
}

/* breadcrumb inside the sand page-head band */
.page-head .inner > .crumb:first-child{padding-top:0;margin-bottom:6px}
.crumb a{color:var(--muted);text-decoration:none}
.crumb a:hover{color:var(--coral-dark)}
.crumb [aria-current="page"]{color:var(--ink)}
.asraa-el-crumb{padding-top:24px}
.asraa-el-crumb .crumb{padding-top:0}

/* ---------- Fix (2026-09-09): kill the mobile white strip between a full-bleed
   dark closing band and the footer. The `main{padding-bottom:96px}` rule above
   exists for pages that carry the fixed `.mcta` mobile CTA bar; pages whose last
   section is a full-bleed `.band-dark` (e.g. the homepage) have no such bar and
   the padding just shows as a gap of page background. ---------- */
@media (max-width: 900px) {
  main:has(> .band-dark:last-child) { padding-bottom: 0; }
}

/* "Listed by" agent/builder identity card — only renders when a
   property's post_author is a real Agent/Builder with a published
   profile (asraa_child_property_poster()). Purely additive credit/trust
   element; contact CTAs above it stay routed through Asraa's own
   number + CRM enquiry form. (2026-09-12) */
.poster-card {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
}
.poster-avatar {
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--coral);
  color: #fff;
  font-weight: 700;
  font-size: 15px;
}
.poster-card--agency .poster-avatar {
  border-radius: 8px;
  background: var(--ink);
}
.poster-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.poster-info {
  min-width: 0;
  display: flex;
  flex-direction: column;
  line-height: 1.35;
}
.poster-role {
  font-size: 12px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.4px;
}
.poster-name {
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
  text-decoration: none;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.poster-name:hover {
  color: var(--coral-dark);
}
.poster-rating,
.poster-credential {
  font-size: 12px;
  color: var(--muted);
  display: inline-flex;
  align-items: center;
  gap: 3px;
}
.poster-rating svg {
  fill: var(--coral);
}

/* Street View imagery date next to "Back to map" */
.map-meta .pmap-date {
  font-size: 12.5px;
  color: var(--muted);
  align-self: center;
}
.map-meta .pmap-date[hidden] {
  display: none;
}

/* Vertical video (YouTube Shorts / Reels) — full-height 9:16 modal, opened by property.js */
.pvideo-modal{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;padding:16px;background:rgb(10 12 14 / .88)}
.pvideo-modal-frame{position:relative;aspect-ratio:9 / 16;height:min(88vh, calc((100vw - 32px) * 16 / 9));max-width:calc(100vw - 32px);border-radius:14px;overflow:hidden;background:#000;box-shadow:0 20px 60px rgb(0 0 0 / .5)}
.pvideo-modal-frame iframe{width:100%;height:100%;border:0;display:block}
.pvideo-modal-frame.is-embed{aspect-ratio:auto;height:auto;max-height:88vh;width:min(420px, calc(100vw - 32px));overflow:auto;background:#fff}
.pvideo-modal-close{position:absolute;top:12px;right:12px;width:44px;height:44px;border:0;border-radius:999px;background:rgb(255 255 255 / .16);color:#fff;font-size:28px;line-height:44px;cursor:pointer;z-index:1}
.pvideo-modal-close:hover,.pvideo-modal-close:focus-visible{background:var(--coral)}
html.pvideo-modal-open,html.pvideo-modal-open body{overflow:hidden}

/* Touch targets — WCAG 2.2 AA 2.5.8 asks for at least 24x24 px. Only on touch
   (coarse-pointer) devices, so the mouse/desktop look is unchanged. */
@media (pointer: coarse) {
  .site-footer ul { gap: 2px; }
  .site-footer ul a,
  .site-footer .base a {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
  }
  .lnk,
  .contact-tel,
  .card > a.muted,
  .adv-head .adv-all,
  .nri-testi-footer a {
    min-height: 26px;
  }
  .card > a.muted,
  .adv-head .adv-all,
  .nri-testi-footer a {
    display: inline-flex;
    align-items: center;
  }
  .crumb a,
  .tag-pill a,
  td > a {
    display: inline-block;
    padding-block: 4px;
  }
}

/* 2026-09-30: all text sizes below 12px raised to 12px (legibility on phones). */

/* Long "About" descriptions start collapsed in CSS. property.js used to collapse
   them only after it loaded — often mid-scroll on repeat visits — pulling the
   page up ~1,000px (CLS 0.4–0.7). Script-less browsers still get the full text. */
@media (scripting: enabled) {
  [data-expandable]:not(.is-ready) .prose {
    max-height: 320px;
    overflow: hidden;
    position: relative;
  }
}

/* "Show first N" lists start collapsed in CSS, at the same N property.js uses, so the
   late-running script doesn't shrink them mid-scroll (repeat-visit CLS). Counts mirror
   property.js: collapse only when there are N+2 or more items. The script adds
   .is-ready and its inline `hidden` attributes take over. */
@media (scripting: enabled) {
  #pricing table.config:not(.is-ready):has(tbody tr:nth-child(5)) tbody tr:nth-child(n+4),
  .rera-phases table.config:not(.is-ready):has(tbody tr:nth-child(4)) tbody tr:nth-child(n+3),
  #documents .doccheck:not(.is-ready):has(> :nth-child(6)) > :nth-child(n+5),
  #specs .specs:not(.is-ready) ul > :nth-child(n+5),
  .locadv:not(.is-ready):has(> :nth-child(8)) > :nth-child(n+7),
  [data-amengrid][data-shown="8"]:not(.is-ready) > :nth-child(n+9) {
    display: none;
  }
}
/* …and reserve the 38px (12px gap + 26px) of the "Show all" button the script adds
   under each collapsed list, so its arrival doesn't push the page down either. */
@media (scripting: enabled) {
  #pricing table.config:not(.is-ready):has(tbody tr:nth-child(5)),
  .rera-phases table.config:not(.is-ready):has(tbody tr:nth-child(4)) {
    margin-bottom: 38px;
  }
  #documents .doccheck:not(.is-ready):has(> :nth-child(6)),
  .locadv:not(.is-ready):has(> :nth-child(8)),
  [data-amengrid][data-shown="8"]:not(.is-ready):has(> :nth-child(9)),
  #specs .specs:not(.is-ready):has(ul > :nth-child(5)),
  [data-expandable]:not(.is-ready) {
    padding-bottom: 38px;
  }
}

/* Homepage search "Try" chips: one scrolling row on phones/tablets. Wrapping rows
   changed count as fonts/scripts loaded (177↔219px), shifting the page (CLS 0.155). */
@media (max-width: 980px) {
  /* grid/flex children default to min-width:auto — without this the nowrap chip
     row widened the whole hero column past the screen (clipped text). */
  .hero > *,
  .smartsearch,
  .ss-chips {
    min-width: 0;
  }
  .ss-chips {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  .ss-chips::-webkit-scrollbar {
    display: none;
  }
  .ss-chips-label {
    flex: none;
    flex-basis: auto;
    margin-bottom: 0;
  }
  .ss-chip {
    flex: none;
    white-space: nowrap;
  }
}

/* Minimum 12px for small labels styled inline / in page-specific CSS (rates pages,
   NRI + contact Elementor pages, homepage insights cards). 2026-09-30. */
.arp-glance-card .g-label,
.arp-glance-card .g-sub,
.arp-glance-card .g-val > span,
.b-label,
.nri-process-step p,
.nri-case-tag,
.nri-related-tag,
[class*="nri-"] .lbl,
.cpg-stat span,
.insights-rail a.card span span {
  font-size: 12px !important;
}

/* Homepage "Real estate agents in Mumbai" section on phones: the 3 pillar cards
   become one swipeable row (peek of the next card hints at the swipe) and the
   stock photo is dropped — ~1,430px tall before, the same message as the
   "One side of the table" band. Desktop unchanged. */
@media (max-width: 760px) {
  .home-seo-pillars {
    display: flex;
    grid-template-columns: none;
    gap: 12px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    margin-right: -20px;
    padding-right: 20px;
    padding-bottom: 4px;
  }
  .home-seo-pillars::-webkit-scrollbar {
    display: none;
  }
  .home-seo-pillars .hsp {
    flex: 0 0 82%;
    scroll-snap-align: start;
  }
  .home-seo-fig {
    display: none;
  }
}

/* Homepage "Worked with us?" — the review form sits in a native <details>,
   opened by the "Write a review" button (was an always-open ~600px form). */
.cfb-form-wrap > summary {
  list-style: none;
  cursor: pointer;
  display: inline-flex;
  width: auto;
}
.cfb-form-wrap > summary::-webkit-details-marker {
  display: none;
}
.cfb-form-wrap[open] > summary {
  margin-bottom: 16px;
}
@media (min-width: 861px) {
  .cfb-form-wrap:not([open]) {
    justify-self: end;
  }
}

/* "Two ways to work with us" (For Agents / For Builders): swipe row on phones. */
@media (max-width: 760px) {
  .home-partners-cards {
    display: flex;
    gap: 12px !important;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    margin-right: -20px;
    padding-right: 20px;
    padding-bottom: 4px;
    margin-top: 28px !important;
  }
  .home-partners-cards::-webkit-scrollbar {
    display: none;
  }
  .home-partners-cards > .card {
    flex: 0 0 86%;
    scroll-snap-align: start;
    padding: 24px !important;
  }
}

/* Footer social row (WhatsApp, Instagram, LinkedIn, X, YouTube). */
.site-footer .foot-social {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px 18px;
  margin-top: 40px;
}
.site-footer .foot-social-label {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: rgba(255, 255, 255, 0.8);
}
.site-footer .foot-social ul {
  display: flex;
  flex-direction: row;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.site-footer .foot-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  min-height: 40px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.22);
  color: rgba(255, 255, 255, 0.85);
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.site-footer .foot-social a:hover,
.site-footer .foot-social a:focus-visible {
  background: var(--coral);
  border-color: var(--coral);
  color: #fff;
}
.site-footer .foot-social + .foot-disclaimer {
  margin-top: 28px;
}
/* YouTube icon's play triangle is hard-coded white — invisible on the light glyph here. */
.site-footer .foot-social svg path[fill="#fff"] {
  fill: var(--ink-2);
}
.site-footer .foot-social a:hover svg path[fill="#fff"],
.site-footer .foot-social a:focus-visible svg path[fill="#fff"] {
  fill: var(--coral);
}

/* Share bar (template-parts/share-bar.php): blog posts + content/marketing pages. */
.share-bar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}
.share-bar-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  margin-right: 2px;
}
.share-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 36px;
  height: 36px;
  padding: 0 10px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: #fff;
  color: var(--ink);
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.share-btn:hover,
.share-btn:focus-visible {
  border-color: var(--coral);
  color: var(--coral-dark);
}
.share-btn[hidden] {
  display: none;
}
.share-btn svg path[fill="#fff"] {
  fill: #fff;
}
.share-bar--inline .share-copy-txt,
.share-bar--inline .share-native span {
  display: none;
}
.share-page {
  margin-top: 8px;
  margin-bottom: 48px;
}
.share-bar--block {
  justify-content: center;
  padding: 18px 20px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
}
.share-bar--block .share-bar-label {
  font-size: 14px;
  color: var(--ink);
  margin-right: 6px;
}
@media (max-width: 560px) {
  .share-bar--block .share-bar-label {
    flex-basis: 100%;
    text-align: center;
    margin: 0 0 4px;
  }
}
