.kh-paragraphs {
  white-space: pre-line;
}

.kh-listing-boundary {
  margin-top: 50px;
}

.kh-contact-form-section {
  background: #f5f1e9;
}

.kh-contact-form-layout,
.kh-tour-layout {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  gap: clamp(40px, 7vw, 100px);
  align-items: start;
}

.kh-contact-form {
  background: #fff;
  border: 1px solid rgba(18, 17, 14, 0.14);
  padding: clamp(26px, 4vw, 52px);
  box-shadow: 0 22px 60px rgba(18, 17, 14, 0.08);
}

.kh-contact-form .form-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.kh-contact-form .form-group {
  margin-bottom: 20px;
}

.kh-contact-form label {
  display: block;
  margin-bottom: 8px;
  color: #4c473e;
  font-family: Montserrat, Arial, sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.kh-contact-form input,
.kh-contact-form select,
.kh-contact-form textarea {
  width: 100%;
  border: 1px solid rgba(18, 17, 14, 0.2);
  border-radius: 0;
  background: #fff;
  color: #12110e;
  font: 500 15px/1.5 Montserrat, Arial, sans-serif;
  padding: 13px 14px;
}

.kh-contact-form textarea {
  min-height: 150px;
  resize: vertical;
}

.kh-contact-form input:focus,
.kh-contact-form select:focus,
.kh-contact-form textarea:focus {
  outline: 2px solid #c7a35a;
  outline-offset: 2px;
}

.kh-contact-form .btn {
  border: 0;
  cursor: pointer;
}

.kh-contact-form.is-submitting .btn {
  cursor: progress;
  opacity: 0.7;
}

.kh-form-error {
  color: #8b2727;
  font: 600 14px/1.5 Montserrat, Arial, sans-serif;
  margin: 18px 0 0;
}

.kh-form-success {
  border-left: 3px solid #c7a35a;
  margin-top: 24px;
  padding: 8px 0 8px 20px;
}

.kh-form-success h3 {
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: 34px;
  margin: 0 0 6px;
}

.kh-form-success p {
  margin: 0;
}

.kh-feature-list {
  border-top: 1px solid rgba(18, 17, 14, 0.14);
  margin-top: 46px;
  padding-top: 38px;
}

.kh-feature-list h2 {
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: clamp(22px, 2.4vw, 30px);
  letter-spacing: 0.01em;
  margin: 0 0 18px;
}

.kh-feature-list ul {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 4px 34px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.kh-feature-list li {
  position: relative;
  padding: 9px 0 9px 30px;
  font-size: 16px;
  line-height: 1.45;
  color: #2d2922;
}

.kh-feature-list li::before {
  content: "";
  position: absolute;
  left: 4px;
  top: 13px;
  width: 6px;
  height: 11px;
  border: solid #c7a35a;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

.is-admin .cms-side-panel {
  top: var(--ncms-shell-h, 72px);
  height: calc(100vh - var(--ncms-shell-h, 72px));
}

.is-admin .cms-side-panel__backdrop {
  top: var(--ncms-shell-h, 72px);
}

@media (max-width: 760px) {
  .kh-contact-form-layout,
  .kh-tour-layout,
  .kh-contact-form .form-row {
    grid-template-columns: 1fr;
  }

  .kh-contact-form-layout,
  .kh-tour-layout {
    gap: 32px;
  }

  .kh-feature-list ul {
    grid-template-columns: 1fr;
  }
}

/* Reviews, videos, and social content share the site's quiet editorial rhythm. */
.kh-reviews-section,
.kh-video-section,
.kh-social-section,
.kh-review-helper-section {
  font-size: 16px;
}

.kh-review-group {
  margin-top: clamp(46px, 7vw, 86px);
}

.kh-review-group__heading {
  align-items: end;
  border-bottom: 1px solid rgba(18, 17, 14, 0.16);
  display: flex;
  gap: 28px;
  justify-content: space-between;
  margin-bottom: 30px;
  padding-bottom: 22px;
}

.kh-review-group__heading--stacked {
  align-items: start;
}

.kh-review-group__heading h3,
.kh-source-callout h3,
.kh-video-empty h3 {
  color: #171510;
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: clamp(24px, 2.1vw, 34px);
  font-weight: 500;
  line-height: 1.02;
  margin: 0;
}

.kh-review-grid {
  display: grid;
  gap: 22px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.kh-review-card {
  background: #fff;
  border: 1px solid rgba(18, 17, 14, 0.12);
  box-shadow: 0 18px 44px rgba(18, 17, 14, 0.06);
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: clamp(20px, 1.8vw, 28px);
}

.kh-review-card--google {
  border-top: 3px solid #c7a35a;
}

.kh-review-card blockquote {
  color: #2d2922;
  flex: 1;
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: clamp(16.5px, 1.15vw, 19px);
  font-style: normal;
  font-weight: 500;
  line-height: 1.55;
  margin: 0;
  overflow-wrap: anywhere;
}

.kh-review-card footer {
  border-top: 1px solid rgba(18, 17, 14, 0.12);
  display: grid;
  gap: 5px;
  margin-top: 28px;
  padding-top: 18px;
}

.kh-review-card cite,
.kh-review-card footer span {
  color: #4c473e;
  font-family: Montserrat, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.5;
}

.kh-review-card cite {
  color: #171510;
  font-style: normal;
  font-weight: 700;
}

.kh-review-rating {
  color: #a7833a;
  font-family: Montserrat, Arial, sans-serif;
  font-size: 18px;
  letter-spacing: 0.14em;
  margin: 0 0 18px;
}

.kh-source-note {
  color: #5b554b;
  font-size: 15px;
  line-height: 1.65;
  margin: 14px 0 0;
  max-width: 760px;
}

.kh-source-callout {
  align-items: center;
  background: #171815;
  color: #fff;
  display: flex;
  gap: 30px;
  justify-content: space-between;
  margin-top: clamp(42px, 6vw, 74px);
  padding: clamp(28px, 5vw, 54px);
}

.kh-source-callout h3 {
  color: #fff;
}

.kh-source-callout p:not(.section-kicker) {
  color: rgba(255, 255, 255, 0.78);
  font-size: 16px;
  line-height: 1.65;
  margin: 12px 0 0;
  max-width: 650px;
}

.kh-review-helper {
  align-items: start;
  display: grid;
  gap: clamp(36px, 7vw, 90px);
  grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
}

.kh-review-helper__copy > h2 {
  color: #171510;
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: clamp(26px, 2.6vw, 40px);
  font-weight: 500;
  line-height: 0.98;
  margin: 0 0 22px;
}

.kh-review-helper__copy > p:not(.section-kicker) {
  color: #4c473e;
  font-size: 17px;
  line-height: 1.72;
}

.kh-review-prompts {
  border-top: 1px solid rgba(18, 17, 14, 0.14);
  display: grid;
  gap: 0;
  margin-top: 32px;
}

.kh-review-prompts article {
  border-bottom: 1px solid rgba(18, 17, 14, 0.14);
  padding: 18px 0;
}

.kh-review-prompts h3 {
  font-family: Montserrat, Arial, sans-serif;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.04em;
  margin: 0 0 5px;
}

.kh-review-prompts p {
  color: #5b554b;
  font-size: 15px;
  line-height: 1.6;
  margin: 0;
}

.kh-review-draft {
  background: #f5f1e9;
  border: 1px solid rgba(18, 17, 14, 0.12);
  padding: clamp(26px, 4vw, 48px);
}

.kh-review-draft label {
  color: #2d2922;
  display: block;
  font-family: Montserrat, Arial, sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  margin-bottom: 12px;
  text-transform: uppercase;
}

.kh-review-draft textarea {
  background: #fff;
  border: 1px solid rgba(18, 17, 14, 0.22);
  border-radius: 0;
  color: #171510;
  font: 500 16px/1.65 Montserrat, Arial, sans-serif;
  min-height: 210px;
  padding: 17px 18px;
  resize: vertical;
  width: 100%;
}

.kh-review-draft textarea:focus {
  outline: 2px solid #c7a35a;
  outline-offset: 2px;
}

.kh-review-draft__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 18px;
}

.kh-review-draft__actions .btn {
  border-radius: 0;
  cursor: pointer;
  min-height: 48px;
}

.kh-review-draft__status,
.kh-review-draft__privacy {
  color: #5b554b;
  font-size: 13px;
  line-height: 1.55;
  margin: 14px 0 0;
}

.kh-review-draft__status:empty {
  display: none;
}

.kh-video-grid {
  display: grid;
  gap: 26px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-top: clamp(42px, 6vw, 72px);
}

.kh-video-card {
  background: #fff;
  border: 1px solid rgba(18, 17, 14, 0.12);
  box-shadow: 0 18px 44px rgba(18, 17, 14, 0.06);
  min-width: 0;
}

.kh-video-card__player {
  aspect-ratio: 16 / 9;
  background: #111;
  border: 0;
  cursor: pointer;
  display: block;
  overflow: hidden;
  padding: 0;
  position: relative;
  width: 100%;
}

.kh-video-card__facebook {
  align-content: end;
  aspect-ratio: 16 / 9;
  background:
    linear-gradient(150deg, rgba(201, 164, 91, 0.18), transparent 54%),
    linear-gradient(135deg, #151711, #2e3129);
  color: #fff;
  display: grid;
  gap: 9px;
  padding: clamp(24px, 4vw, 38px);
  position: relative;
  text-decoration: none;
}

.kh-video-card__facebook::after {
  border: 1px solid rgba(255, 255, 255, 0.2);
  content: "";
  inset: 14px;
  pointer-events: none;
  position: absolute;
}

.kh-video-card__facebook:hover,
.kh-video-card__facebook:focus-visible {
  background:
    linear-gradient(150deg, rgba(201, 164, 91, 0.28), transparent 54%),
    linear-gradient(135deg, #1d2018, #383c32);
}

.kh-video-card__facebook:focus-visible {
  outline: 3px solid #c7a35a;
  outline-offset: 3px;
}

.kh-video-card__facebook-source {
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: clamp(30px, 3vw, 44px);
  line-height: 1;
}

.kh-video-card__facebook-action {
  color: rgba(255, 255, 255, 0.75);
  font-family: Montserrat, Arial, sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}

.kh-video-card__player img,
.kh-video-card__player iframe {
  border: 0;
  height: 100%;
  inset: 0;
  object-fit: cover;
  position: absolute;
  width: 100%;
}

.kh-video-card__player::after {
  background: linear-gradient(180deg, transparent 45%, rgba(0, 0, 0, 0.62));
  content: "";
  inset: 0;
  pointer-events: none;
  position: absolute;
}

.kh-video-card__player.is-playing::after {
  display: none;
}

.kh-video-card__play {
  align-items: center;
  background: rgba(245, 241, 233, 0.94);
  bottom: 18px;
  color: #171510;
  display: inline-flex;
  font-family: Montserrat, Arial, sans-serif;
  font-size: 12px;
  font-weight: 700;
  justify-content: center;
  left: 18px;
  letter-spacing: 0.09em;
  min-height: 44px;
  min-width: 76px;
  padding: 10px 16px;
  position: absolute;
  text-transform: uppercase;
  z-index: 1;
}

.kh-video-card__body {
  padding: 26px 28px 30px;
}

.kh-video-card__date {
  color: #8b6d33;
  font-family: Montserrat, Arial, sans-serif;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  margin: 0 0 10px;
  text-transform: uppercase;
}

.kh-video-card h3 {
  color: #171510;
  display: -webkit-box;
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: clamp(27px, 2.4vw, 35px);
  font-weight: 500;
  line-height: 1.08;
  margin: 0;
  overflow: hidden;
  overflow-wrap: anywhere;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.kh-video-card__body > p:not(.kh-video-card__date) {
  color: #5b554b;
  display: -webkit-box;
  font-size: 15px;
  line-height: 1.62;
  margin: 14px 0 18px;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.kh-video-empty {
  background: #fff;
  border: 1px solid rgba(18, 17, 14, 0.12);
  margin: clamp(42px, 6vw, 72px) auto 0;
  max-width: 780px;
  padding: clamp(32px, 5vw, 58px);
  text-align: center;
}

.kh-video-empty p:not(.section-kicker) {
  color: #5b554b;
  font-size: 16px;
  line-height: 1.65;
}

.kh-section-action {
  display: flex;
  justify-content: center;
  margin-top: 34px;
}

.kh-social-grid {
  display: grid;
  gap: 18px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-top: clamp(40px, 6vw, 66px);
}

.kh-social-card {
  background: #171815;
  color: #fff;
  display: grid;
  gap: 12px;
  min-height: 190px;
  padding: clamp(26px, 4vw, 42px);
  position: relative;
  text-decoration: none;
  transition: background-color 180ms ease, transform 180ms ease;
}

.kh-social-card:hover,
.kh-social-card:focus-visible {
  background: #24251f;
  transform: translateY(-3px);
}

.kh-social-card:focus-visible {
  outline: 3px solid #c7a35a;
  outline-offset: 3px;
}

.kh-social-card__label {
  align-self: end;
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: 38px;
  line-height: 1;
}

.kh-social-card__description {
  color: rgba(255, 255, 255, 0.72);
  font-size: 14px;
  line-height: 1.55;
}

.kh-social-card__arrow {
  font-size: 22px;
  position: absolute;
  right: 22px;
  top: 18px;
}

.kh-empty-message {
  color: #5b554b;
  font-size: 16px;
  line-height: 1.65;
  margin: 0;
}

@media (max-width: 1020px) {
  .kh-review-grid,
  .kh-video-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .kh-review-helper {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 680px) {
  .kh-review-grid,
  .kh-video-grid,
  .kh-social-grid {
    grid-template-columns: 1fr;
  }

  .kh-review-group__heading,
  .kh-source-callout {
    align-items: flex-start;
    flex-direction: column;
  }

  /* Was 24px, which pushed a long review to 1719px (2 viewports) on a 390px
     phone. Review text is body copy; the base clamp already handles the scale. */
  .kh-review-card blockquote {
    font-size: 17px;
  }

  .kh-review-draft__actions .btn {
    justify-content: center;
    text-align: center;
    width: 100%;
  }

  .kh-social-card {
    min-height: 160px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .kh-social-card,
  .kh-video-card__facebook {
    transition: none;
  }
}

/* Corrective polish: source-faithful header, type, search, listings, and footer. */
:root {
  --kh-type-body: clamp(15.5px, 0.25vw + 14.5px, 17px);
  --kh-type-small: clamp(13px, 0.18vw + 12.2px, 14px);
  --kh-type-label: clamp(11px, 0.12vw + 10.4px, 12px);
  --kh-leading-body: 1.62;
}

html {
  overflow-x: clip;
}

body {
  font-size: var(--kh-type-body);
  line-height: var(--kh-leading-body);
  overflow-x: clip;
}

a:focus-visible,
button:focus-visible,
select:focus-visible,
input:focus-visible,
textarea:focus-visible {
  outline: 3px solid #c7a35a;
  outline-offset: 3px;
}

.utility-links {
  align-items: center;
  display: flex;
  gap: clamp(18px, 2.4vw, 34px);
}

.utility-link {
  font-size: 11px;
  white-space: nowrap;
}

.hero-photo {
  inset: 0 !important;
  height: 100% !important;
  object-position: var(--kh-focal-x, 54%) var(--kh-focal-y, 0) !important;
}

.content-header {
  background:
    linear-gradient(180deg, rgba(2, 3, 3, 0.82) 0%, rgba(2, 3, 3, 0.52) 56%, rgba(2, 3, 3, 0) 100%);
  color: #fff;
  left: 0;
  position: absolute;
  right: 0;
  top: 38px;
  z-index: 30;
}

.content-header .site-shell {
  position: relative;
}

.content-header .nav-row {
  border-bottom-color: rgba(255, 255, 255, 0.2);
  min-height: 104px;
}

.content-header .brand-mark {
  background: transparent;
}

.content-header .brand-mark img,
.footer-logo .brand-mark img {
  background: transparent;
}

.content-header .mobile-menu {
  background: rgba(8, 9, 9, 0.98);
  top: 100%;
}

.content-hero {
  min-height: clamp(520px, 52vw, 700px);
}

.content-hero__media {
  object-position: var(--kh-focal-x, 50%) var(--kh-focal-y, 50%);
}

.content-hero--portrait .content-hero__media {
  bottom: 0;
  height: auto;
  top: clamp(62px, 4.2vw, 68px);
}

.content-hero__shade {
  background:
    linear-gradient(180deg, rgba(2, 3, 3, 0.44) 0%, rgba(2, 3, 3, 0.05) 28%, transparent 50%),
    linear-gradient(90deg, rgba(6, 7, 7, 0.88) 0%, rgba(6, 7, 7, 0.56) 46%, rgba(6, 7, 7, 0.12) 100%);
}

.content-hero__copy {
  max-width: 820px;
  padding-block: clamp(130px, 12vw, 180px) clamp(68px, 8vw, 112px);
}

.content-hero h1 {
  font-size: clamp(38px, 3.9vw, 60px);
  line-height: 1.02;
  max-width: 780px;
}

.content-hero__intro {
  font-size: clamp(15.5px, 0.5vw + 14px, 18px);
  line-height: 1.65;
  max-width: 660px;
}

.content-heading h2,
.split-copy h2,
.content-cta h2 {
  font-size: clamp(40px, 4.2vw, 66px);
  line-height: 1;
}

.content-heading > p:last-child,
.content-prose p,
.content-card p,
.listing-card__body p,
.listing-detail__description,
.legal-note p,
.kh-paragraphs {
  font-size: var(--kh-type-body);
  line-height: var(--kh-leading-body);
}

.content-heading {
  margin-bottom: clamp(38px, 5vw, 64px);
}

/* The floor governs small screens: at 390px this resolved to 70px top AND
   bottom, so every section boundary spent 140px on empty space (the bulk of the
   "too much gap" on property pages). Lowering the floor rather than adding a
   media override keeps the later tuned rules (.kh-share-section and friends)
   winning on source order. 8vw still governs above ~875px, so desktop and large
   tablet are unchanged. */
.content-section {
  padding-block: clamp(40px, 4.6vw, 76px);
}

.content-cta-section {
  padding-block: clamp(38px, 4.5vw, 64px);
}

.content-cta > div > .content-hero__intro {
  color: rgba(255, 255, 255, 0.82);
}

.cta-copy > span {
  color: rgba(255, 255, 255, 0.82);
}

.section-kicker,
.content-eyebrow,
.listing-status,
.fact-label {
  font-size: var(--kh-type-label);
  letter-spacing: 0.16em;
}

.split-section {
  min-height: 0;
}

.split-media {
  min-height: clamp(500px, 52vw, 760px);
}

.split-copy {
  padding: clamp(50px, 6.5vw, 96px);
}

.split-copy .kh-paragraphs {
  color: rgba(255, 255, 255, 0.8);
  margin-top: 26px;
  max-width: 66ch;
}

.value-list {
  margin-top: clamp(34px, 4vw, 48px);
}

.value-list article {
  padding: clamp(22px, 2.6vw, 30px);
}

.value-list h3 {
  font-size: clamp(23px, 2vw, 28px);
}

.value-list p {
  color: rgba(255, 255, 255, 0.75);
  font-size: 14px;
  line-height: 1.62;
}

.strategy-intro > p:last-child,
.value-grid p {
  color: rgba(255, 255, 255, 0.8);
}

.pathway-card {
  padding: 22px clamp(18px, 2.3vw, 32px) 28px;
  width: min(calc(100% - 64px), 1660px);
}

.property-search {
  display: grid;
  gap: 12px;
  grid-template-columns: minmax(190px, 1.35fr) repeat(5, minmax(112px, 0.8fr)) minmax(178px, 0.9fr);
}

.property-search__field {
  background: #fff;
  border: 1px solid #ddd6ca;
  display: grid;
  min-width: 0;
  padding: 10px 12px 9px;
}

.property-search__field > span,
.listing-search label > span {
  color: #6d675e;
  font-family: Montserrat, Arial, sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  line-height: 1.25;
  text-transform: uppercase;
}

.property-search select,
.listing-search select {
  appearance: none;
  background:
    linear-gradient(45deg, transparent 50%, #8b6d33 50%) calc(100% - 14px) 55% / 5px 5px no-repeat,
    linear-gradient(135deg, #8b6d33 50%, transparent 50%) calc(100% - 9px) 55% / 5px 5px no-repeat;
  border: 0;
  color: #242322;
  cursor: pointer;
  font: 600 14px/1.25 Montserrat, Arial, sans-serif;
  min-height: 30px;
  min-width: 0;
  padding: 4px 24px 2px 0;
  width: 100%;
}

.property-search select:focus-visible,
.listing-search select:focus-visible {
  outline-offset: 1px;
}

.property-search .pathway-submit {
  border: 0;
  cursor: pointer;
  height: auto;
  min-height: 64px;
}

.listing-search {
  background: #fff;
  border: 1px solid rgba(18, 17, 14, 0.13);
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(6, minmax(112px, 1fr)) auto;
  margin-bottom: 28px;
  padding: clamp(18px, 2.5vw, 28px);
}

.listing-search label {
  border-bottom: 1px solid rgba(18, 17, 14, 0.16);
  display: grid;
  min-width: 0;
  padding: 0 2px 6px;
}

.listing-search .btn {
  border: 0;
  cursor: pointer;
  justify-content: center;
  min-height: 54px;
  padding-inline: 20px;
}

.listing-search__reset {
  align-self: center;
  color: #4c473e;
  font: 700 var(--kh-type-label)/1.4 Montserrat, Arial, sans-serif;
  grid-column: 1 / -1;
  justify-self: end;
  letter-spacing: 0.09em;
  text-decoration: underline;
  text-underline-offset: 4px;
  text-transform: uppercase;
}

.listing-card__media img {
  aspect-ratio: 4 / 3;
}

.listing-card__body {
  padding: clamp(24px, 2.4vw, 30px);
}

.listing-card__body h2 {
  font-size: clamp(27px, 2vw, 32px);
  line-height: 1.12;
}

.listing-facts,
.text-link {
  font-size: var(--kh-type-label);
}

.listing-detail {
  /* Was 680px, which forced a tall row and left a void on sparse listings.
     Content drives the height now (see content-pages.css .listing-detail). */
  min-height: 0;
}

.listing-detail__media > img {
  aspect-ratio: 4 / 3;
}

.listing-detail__summary {
  padding: clamp(72px, 7vw, 110px);
  /* Trim the block padding so the summary tracks its content instead of the
     old fixed-height void. */
  padding-block: clamp(52px, 5vw, 88px);
}

.listing-detail__summary h1 {
  font-size: clamp(44px, 4.6vw, 70px);
  line-height: 1;
}

.listing-detail__contact {
  justify-content: center;
  margin-top: 34px;
  text-align: center;
}

.kh-listing-boundary {
  background: rgba(199, 163, 90, 0.08);
  margin-top: 46px;
  padding: 24px 28px;
}

.market-positioning {
  display: block;
  min-height: 0;
  padding-top: 20px;
}

.market-positioning__title {
  color: #79623a;
  font: 700 var(--kh-type-label)/1.4 Montserrat, Arial, sans-serif;
  letter-spacing: 0.17em;
  margin: 0;
  padding: 0 24px 10px;
  text-align: center;
  text-transform: uppercase;
}

.market-positioning__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  min-height: 120px;
}

.positioning-item span {
  font-size: 10px;
}

.site-footer .site-shell {
  width: min(calc(100% - 64px), 1580px);
}

.footer-grid {
  gap: 0;
  grid-template-columns: minmax(300px, 1.35fr) minmax(150px, 0.62fr) minmax(190px, 0.78fr) minmax(300px, 1.15fr);
  padding: 46px 0 38px;
}

.footer-grid > div,
.footer-grid > nav {
  padding-inline: clamp(24px, 2.6vw, 42px);
}

.footer-logo .brand-mark {
  background: transparent;
}

.footer-brand > p {
  font-size: 14px;
  line-height: 1.65;
  margin: 22px 0;
  max-width: 430px;
}

.socials {
  flex-wrap: wrap;
}

.socials a,
.content-page .socials a {
  border-radius: 999px;
  font: 700 11px/1 Montserrat, Arial, sans-serif;
  height: 36px;
  letter-spacing: 0.07em;
  min-width: 0;
  padding: 0 13px;
  white-space: nowrap;
  width: auto;
}

.footer-col {
  gap: 10px;
}

.footer-col h3 {
  font-size: 11px;
  margin-bottom: 8px;
}

.footer-col a,
.footer-col p,
.footer-contact__row,
.footer-contact__address {
  font-size: 13px;
  line-height: 1.55;
}

.footer-contact {
  gap: 12px;
}

.footer-contact__row {
  align-items: baseline;
  display: grid;
  gap: 16px;
  grid-template-columns: 64px minmax(0, 1fr);
  width: 100%;
}

.footer-contact__row strong {
  color: var(--gold);
  font-size: 10px;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}

.footer-contact__row a,
.footer-contact__email {
  white-space: nowrap;
}

.footer-contact__email {
  overflow-wrap: normal;
}

.footer-contact__address {
  color: rgba(255, 255, 255, 0.71);
  display: grid;
  font-style: normal;
  gap: 2px;
  margin: 4px 0;
}

.footer-contact__address > span {
  white-space: nowrap;
}

.footer-button {
  margin-top: 8px;
  max-width: 280px;
}

.brokerage-note {
  min-height: 50px;
}

.footer-bottom {
  min-height: 56px;
}

.footer-bottom span:last-child {
  align-items: center;
}

@media (max-width: 1300px) {
  .property-search {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .property-search__field--location {
    grid-column: span 2;
  }

  .property-search .pathway-submit {
    grid-column: span 2;
  }

  .listing-search {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .listing-search .btn {
    grid-column: span 2;
  }

  .footer-grid {
    grid-template-columns: minmax(290px, 1.15fr) minmax(140px, 0.6fr) minmax(180px, 0.72fr) minmax(270px, 1.05fr);
  }
}

@media (max-width: 1180px) {
  .content-header .nav-row {
    min-height: 94px;
  }

  .content-header .mobile-menu {
    top: 100%;
  }

  .footer-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .footer-grid > div,
  .footer-grid > nav {
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
    border-left: 0;
    padding: 32px;
  }

  .footer-grid > :nth-child(even) {
    border-left: 1px solid rgba(255, 255, 255, 0.12);
  }

  .listing-detail__summary {
    padding: clamp(48px, 7vw, 82px);
  }
}

@media (max-width: 760px) {
  .utility-inner {
    gap: 10px;
  }

  .utility-links {
    gap: 14px;
  }

  .utility-area {
    display: none;
  }

  .content-header .nav-row {
    min-height: 86px;
  }

  .hero-photo,
  .content-hero__media {
    object-position: var(--kh-focal-x-mobile, var(--kh-focal-x, 50%)) var(--kh-focal-y-mobile, var(--kh-focal-y, 50%)) !important;
  }

  .content-hero {
    min-height: 590px;
  }

  .content-hero--portrait .content-hero__media {
    top: 84px;
  }

  .content-hero__copy {
    padding-block: 150px 66px;
  }

  .content-hero h1 {
    font-size: clamp(32px, 9vw, 42px);
  }

  .content-hero__intro {
    font-size: 16px;
  }

  .pathway-section {
    margin-top: -42px;
  }

  .pathway-card {
    padding: 20px 16px 22px;
    width: min(calc(100% - 24px), 700px);
  }

  .property-search {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .property-search__field--location,
  .property-search .pathway-submit {
    grid-column: 1 / -1;
  }

  .property-search__field {
    padding: 9px 10px 8px;
  }

  .property-search select {
    font-size: 13px;
  }

  .listing-search {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding: 16px;
  }

  .listing-search .btn {
    grid-column: 1 / -1;
  }

  .listing-search__reset {
    justify-self: start;
  }

  .listing-toolbar {
    align-items: flex-start;
  }

  .listing-filter {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }

  .listing-filter button {
    padding-inline: 10px;
  }

  .split-media {
    min-height: 480px;
  }

  .split-copy {
    padding: 54px 24px;
  }

  .market-positioning__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .positioning-item:nth-child(2)::after {
    display: none;
  }

  .positioning-item {
    border-bottom: 1px solid #d7d0c5;
    min-height: 116px;
  }

  .site-footer .site-shell {
    width: min(calc(100% - 30px), 1580px);
  }

  /* A single column of short links ran the footer to ~1216px. The two link
     lists sit side by side; brand and contact keep the full width. */
  .footer-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 20px;
    padding: 22px 0;
  }

  .footer-grid > .footer-brand,
  .footer-grid > .footer-contact {
    grid-column: 1 / -1;
  }

  .footer-grid > div,
  .footer-grid > nav,
  .footer-grid > :nth-child(even) {
    border-left: 0;
    padding: 22px 0;
  }

  /* Every child carried a bottom border, stacking a doubled rule against the
     legal bar. */
  .footer-grid > :last-child {
    border-bottom: 0;
  }

  /* Quick links (9) ran four rows past Areas (5), leaving the right column
     empty; two internal columns balance the row. */
  .footer-grid > nav.footer-col:first-of-type {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 12px;
    align-content: start;
  }

  .footer-grid > nav.footer-col:first-of-type h3 {
    grid-column: 1 / -1;
  }

  /* Targets measured 20px tall. Absorb the list gap into the link box so they
     grow without the column growing: pitch goes 30px -> 36px, not 46px. */
  .site-footer .footer-col {
    gap: 0;
  }

  .site-footer .footer-col a {
    display: flex;
    align-items: center;
    min-height: 36px;
  }

  /* Selects measured 30px tall. */
  .property-search__field select {
    min-height: 44px;
  }

  /* Six fields in a 2-col grid left "Status" alone beside an empty cell. */
  .property-search__field:last-of-type {
    grid-column: 1 / -1;
  }

  /* The nav sat left-aligned inside centred proof content. */
  .proof-slider__nav {
    justify-content: center;
  }

  /* 48px of side padding on a 390px screen spent a quarter of the viewport.
     15px matches the .site-shell gutter, so the summary lines up with the share
     block below it instead of sitting on its own inset.
     This has to live in cms-site.css: content-pages.css carried the equivalent
     mobile rule, but cms-site.css loads last and its ≤1180 clamp won at equal
     specificity, leaving that rule dead. */
  .listing-detail__summary {
    padding: 30px 15px 34px;
  }

  .footer-contact__row {
    grid-template-columns: 68px minmax(0, 1fr);
  }

  .footer-contact__email {
    white-space: normal;
  }

  .footer-contact__address > span {
    white-space: normal;
  }

  .brokerage-note,
  .footer-bottom {
    align-items: flex-start;
    flex-direction: column;
    gap: 12px;
    justify-content: center;
    padding-block: 16px;
  }

  .footer-bottom span:last-child {
    gap: 14px;
  }

  .footer-bottom a {
    margin-left: 0;
  }
}

@media (max-width: 430px) {
  .utility-link {
    font-size: 10px;
  }

  .property-search {
    gap: 9px;
  }

  .property-search__field > span,
  .listing-search label > span {
    font-size: 9px;
  }

  .listing-search {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .listing-search .btn {
    grid-column: 1 / -1;
  }

  /* 12.4vw resolved to 48px on a 390px phone. Trimmed with the rest of the
     satellite-page scale so these pages stop reading as zoomed in. */
  .content-hero h1 {
    font-size: clamp(30px, 8.6vw, 40px);
  }
}

/* listings sort control (delta) */
.listing-sort { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; }
.listing-sort__label { font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: #5b554b; }
.listing-sort select { font-family: inherit; font-size: 14px; color: #171510; padding: 8px 12px; border: 1px solid rgba(18,17,14,0.18); border-radius: 2px; background: #fff; cursor: pointer; }
@media (max-width: 760px) { .listing-sort { margin-left: 0; width: 100%; } .listing-sort select { flex: 1 1 auto; } }

/* review helper: one-tap copy+open + QR (delta) */
.kh-review-draft__hint { color: #5b554b; font-size: 14px; line-height: 1.6; margin: 14px 0 0; }
.kh-review-qr { align-items: center; border-top: 1px solid rgba(18,17,14,0.12); display: flex; gap: 18px; margin-top: 24px; padding-top: 22px; }
.kh-review-qr img { flex: none; height: 132px; width: 132px; }
.kh-review-qr p { color: #5b554b; font-size: 14px; line-height: 1.6; margin: 0; }
@media (max-width: 520px) { .kh-review-qr { display: none; } }

/* Softer on-brand no-photo placeholder (delta): overrides the stark dark base style */
.listing-card__placeholder {
  background: linear-gradient(150deg, #efe9dd 0%, #e5ddcb 58%, #d8cfba 100%);
  gap: 12px;
}
.listing-card__placeholder img {
  width: 56px; height: 56px;
  filter: brightness(0);
  opacity: 0.22;
}
.listing-card__placeholder::after {
  content: "Photo coming soon";
  font-family: Montserrat, Arial, sans-serif;
  font-size: 11px; font-weight: 600;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: #9c8a5f;
}

/* ==========================================================================
   Global home-search modal (header trigger, available on every page)
   Palette and type come from styles.css :root. No new design language:
   gold accent, ivory surface, existing label tracking.
   ========================================================================== */

.nav-actions {
  display: flex;
  align-items: center;
  gap: 18px;
  justify-self: end;
}

.nav-search {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 18px;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--ink);
  font-family: var(--sans);
  font-size: var(--type-label);
  letter-spacing: var(--tracking-action);
  text-transform: uppercase;
  cursor: pointer;
  transition: border-color 160ms ease, color 160ms ease;
}

.nav-search:hover,
.nav-search:focus-visible {
  border-color: var(--gold);
  color: var(--gold-deep);
}

.nav-search__icon {
  display: inline-flex;
  line-height: 0;
}

.mobile-menu__search {
  display: block;
  width: 100%;
  margin-top: 14px;
  padding: 16px 18px;
  border: 1px solid var(--gold);
  background: var(--gold-deep);
  color: var(--white);
  font-family: var(--sans);
  font-size: var(--type-label);
  letter-spacing: var(--tracking-action);
  text-transform: uppercase;
  cursor: pointer;
}

/* The dialog itself ------------------------------------------------------ */

.kh-search-modal {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-items: center;
  padding: 24px;
}

.kh-search-modal[hidden] { display: none; }

.kh-search-modal__backdrop {
  position: absolute;
  inset: 0;
  /* Deliberately a flat wash, not backdrop-filter: a filtered layer creates a
     stacking context that has previously trapped this site's sticky header. */
  background: rgba(8, 9, 9, 0.62);
}

.kh-search-modal__panel {
  position: relative;
  width: min(100%, 880px);
  max-height: calc(100vh - 48px);
  overflow-y: auto;
  background: var(--paper);
  border: 1px solid var(--border);
  padding: 38px 40px 34px;
  box-shadow: 0 30px 80px rgba(8, 9, 9, 0.28);
}

.kh-search-modal__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 26px;
}

.kh-search-modal__head h2 {
  font-family: var(--serif);
  font-size: var(--type-panel-title);
  line-height: 1.1;
  margin: 6px 0 0;
}

.kh-search-modal__close {
  flex: none;
  width: 42px;
  height: 42px;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--ink);
  font-size: 26px;
  line-height: 1;
  cursor: pointer;
  transition: border-color 160ms ease, color 160ms ease;
}

.kh-search-modal__close:hover,
.kh-search-modal__close:focus-visible {
  border-color: var(--gold);
  color: var(--gold-deep);
}

.kh-search-modal__form {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px 20px;
}

.kh-search-modal__field { display: flex; flex-direction: column; gap: 8px; }
.kh-search-modal__field--wide { grid-column: span 3; }

.kh-search-modal__field > span {
  font-family: var(--sans);
  font-size: var(--type-label);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--muted);
}

.kh-search-modal__field select {
  width: 100%;
  padding: 14px 16px;
  border: 1px solid var(--border);
  background: var(--white);
  color: var(--ink);
  font-family: var(--sans);
  font-size: var(--type-body);
}

.kh-search-modal__field select:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 1px;
}

.kh-search-modal__actions {
  grid-column: span 3;
  display: flex;
  align-items: center;
  gap: 22px;
  margin-top: 6px;
}

.kh-search-modal__all {
  font-family: var(--sans);
  font-size: var(--type-small);
  color: var(--muted);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.kh-search-modal__all:hover,
.kh-search-modal__all:focus-visible { color: var(--gold-deep); }

body.kh-search-open { overflow: hidden; }

/* Mobile gets the same capability, sized for the device (not an afterthought) */
@media (max-width: 760px) {
  .kh-search-modal { padding: 0; }
  .kh-search-modal__panel {
    width: 100%;
    max-height: 100vh;
    min-height: 100vh;
    padding: 26px 20px 32px;
    border: 0;
  }
  .kh-search-modal__form { grid-template-columns: 1fr; }
  .kh-search-modal__field--wide,
  .kh-search-modal__actions { grid-column: span 1; }
  .kh-search-modal__actions { flex-direction: column; align-items: stretch; gap: 14px; }
  .kh-search-modal__actions .btn { width: 100%; text-align: center; }
  .kh-search-modal__all { text-align: center; }
}

@media (max-width: 1180px) {
  .nav-search { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .nav-search, .kh-search-modal__close { transition: none; }
}

/* The homepage nav sits on the dark hero image (.site-hero sets color:#fff),
   so the search trigger needs the light treatment there or it disappears. */
.site-hero .nav-search {
  color: var(--white);
  border-color: rgba(255, 255, 255, 0.45);
}

.site-hero .nav-search:hover,
.site-hero .nav-search:focus-visible {
  color: var(--gold);
  border-color: var(--gold);
}

/* ==========================================================================
   Property share block + email-this-property dialog
   ========================================================================== */

.kh-share { display: grid; gap: 18px; }
.kh-share__intro h2 { font-family: var(--serif); font-size: var(--type-panel-title); margin: 6px 0 0; }
.kh-share__actions { display: flex; flex-wrap: wrap; gap: 12px; }

.kh-share__btn {
  display: inline-flex;
  align-items: center;
  padding: 13px 20px;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--ink);
  font-family: var(--sans);
  font-size: var(--type-label);
  letter-spacing: var(--tracking-action);
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  transition: border-color 160ms ease, color 160ms ease;
}

.kh-share__btn:hover,
.kh-share__btn:focus-visible { border-color: var(--gold); color: var(--gold-deep); }

.kh-share__btn--gold {
  background: var(--gold-deep);
  border-color: var(--gold-deep);
  color: var(--white);
}
.kh-share__btn--gold:hover,
.kh-share__btn--gold:focus-visible { background: var(--gold); border-color: var(--gold); color: var(--white); }

.kh-share__status {
  min-height: 1.2em;
  font-family: var(--sans);
  font-size: var(--type-small);
  color: var(--gold-deep);
}

.kh-share-modal { position: fixed; inset: 0; z-index: 9999; display: grid; place-items: center; padding: 24px; }
.kh-share-modal[hidden] { display: none; }
.kh-share-modal__backdrop { position: absolute; inset: 0; background: rgba(8, 9, 9, 0.62); }

.kh-share-modal__panel {
  position: relative;
  width: min(100%, 620px);
  max-height: calc(100vh - 48px);
  overflow-y: auto;
  background: var(--paper);
  border: 1px solid var(--border);
  padding: 32px 34px 30px;
  box-shadow: 0 30px 80px rgba(8, 9, 9, 0.28);
}

.kh-share-modal__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.kh-share-modal__head h2 { font-family: var(--serif); font-size: clamp(28px, 2vw, 34px); margin: 0; }

.kh-share-modal__close {
  flex: none; width: 40px; height: 40px;
  border: 1px solid var(--border); background: transparent;
  color: var(--ink); font-size: 24px; line-height: 1; cursor: pointer;
}
.kh-share-modal__close:hover,
.kh-share-modal__close:focus-visible { border-color: var(--gold); color: var(--gold-deep); }

.kh-share-modal__lead {
  font-family: var(--sans); font-size: var(--type-small);
  color: var(--muted); margin: 6px 0 18px;
}

.kh-share-modal__actions {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 6px;
}
.kh-share-modal__hint {
  font-family: var(--sans); font-size: var(--type-micro);
  color: var(--muted); max-width: 46ch; line-height: 1.5;
}

@media (max-width: 760px) {
  .kh-share-modal { padding: 0; }
  .kh-share-modal__panel { width: 100%; min-height: 100vh; max-height: 100vh; border: 0; padding: 24px 20px 30px; }
  .kh-share-modal__actions { flex-direction: column; align-items: stretch; }
  .kh-share-modal__actions .btn { width: 100%; text-align: center; }
  .kh-share__actions { gap: 10px; }
  .kh-share__btn { flex: 1 1 auto; justify-content: center; }
}

@media (prefers-reduced-motion: reduce) {
  .kh-share__btn { transition: none; }
}

/* ==========================================================================
   Homepage proof slider (random review per load)
   Quote size reduced a step from the original single-testimonial treatment,
   which read slightly too large once it became a rotating slot.
   ========================================================================== */

.proof-inner blockquote { font-size: clamp(24px, 1.95vw, 36px); }
@media (max-width: 1020px) { .proof-inner blockquote { font-size: 30px; } }
@media (max-width: 680px)  { .proof-inner blockquote { font-size: 24px; } }

.proof-slider { width: 100%; }
.proof-slider__viewport { position: relative; }
.proof-slide[hidden] { display: none; }
.proof-slide { margin: 0; }
.proof-slide figcaption { margin-top: 14px; }

.proof-slider__nav {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-top: 22px;
}

.proof-slider__arrow {
  width: 44px;
  height: 44px;
  border: 1px solid currentColor;
  background: transparent;
  color: inherit;
  font-size: 17px;
  line-height: 1;
  cursor: pointer;
  opacity: 0.75;
  transition: opacity 160ms ease, border-color 160ms ease;
}

.proof-slider__arrow:hover,
.proof-slider__arrow:focus-visible { opacity: 1; border-color: var(--gold); color: var(--gold); }

.proof-slider__count {
  font-family: var(--sans);
  font-size: var(--type-label);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  opacity: 0.75;
  margin: 0;
}

@media (prefers-reduced-motion: reduce) { .proof-slider__arrow { transition: none; } }

/* Consultation modal (Sydney pattern, ported) - reuses the search dialog shape */
.kh-consult-modal { position: fixed; inset: 0; z-index: 9999; display: grid; place-items: center; padding: 24px; }
.kh-consult-modal[hidden] { display: none; }
.kh-consult-modal__backdrop { position: absolute; inset: 0; background: rgba(8,9,9,.62); }
.kh-consult-modal__panel { position: relative; width: min(100%, 720px); max-height: calc(100vh - 48px); overflow-y: auto;
  background: var(--paper); border: 1px solid var(--border); padding: 34px 36px 30px; box-shadow: 0 30px 80px rgba(8,9,9,.28); }
.kh-consult-modal__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; }
.kh-consult-modal__head h2 { font-family: var(--serif); font-size: clamp(30px,2.2vw,38px); margin: 6px 0 0; }
.kh-consult-modal__close { flex: none; width: 42px; height: 42px; border: 1px solid var(--border); background: transparent;
  color: var(--ink); font-size: 26px; line-height: 1; cursor: pointer; }
.kh-consult-modal__close:hover, .kh-consult-modal__close:focus-visible { border-color: var(--gold); color: var(--gold-deep); }
.kh-consult-modal__lead { font-family: var(--sans); font-size: var(--type-small); color: var(--muted); margin: 10px 0 20px; }
.kh-consult-modal__actions { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; margin-top: 8px; }
.kh-consult-modal__alt { font-family: var(--sans); font-size: var(--type-small); color: var(--muted);
  text-decoration: underline; text-underline-offset: 3px; }
.kh-consult-modal__alt:hover, .kh-consult-modal__alt:focus-visible { color: var(--gold-deep); }
@media (max-width: 760px) {
  .kh-consult-modal { padding: 0; }
  .kh-consult-modal__panel { width: 100%; min-height: 100vh; max-height: 100vh; border: 0; padding: 26px 20px 32px; }
  .kh-consult-modal__actions { flex-direction: column; align-items: stretch; }
  .kh-consult-modal__actions .btn { width: 100%; }
}

/* ==========================================================================
   Header polish on media-backed pages (property detail).
   Owner feedback: header sat too low, the gradient was too weak to carry the
   nav over a bright photo, and the "Search homes" control was near-invisible
   because it inherited the dark ink treatment on a dark overlay.
   ========================================================================== */

/* 1. Trim the vertical padding so the bar sits tighter to the top. */
.content-header { top: 26px; }
/* .nav-row sets a fixed height:116px, so min-height alone does nothing here. */
.content-header .nav-row { height: 88px; min-height: 88px; }

/* 2. Deeper gradient: hold contrast for white nav text over a bright hero. */
.content-header {
  background:
    linear-gradient(180deg, rgba(2, 3, 3, 0.92) 0%, rgba(2, 3, 3, 0.72) 48%, rgba(2, 3, 3, 0.28) 78%, rgba(2, 3, 3, 0) 100%);
}

/* 3. The search control is on a dark overlay here, so it needs the light
      treatment (it was using var(--ink) and reading as a grey smudge). */
.content-header .nav-search {
  color: #fff;
  border-color: rgba(255, 255, 255, 0.55);
}
.content-header .nav-search:hover,
.content-header .nav-search:focus-visible {
  color: var(--gold);
  border-color: var(--gold);
}
.content-header .nav-search__icon svg { stroke: currentColor; }

@media (max-width: 1020px) {
  .content-header { top: 20px; }
  .content-header .nav-row { height: 76px; min-height: 76px; }
}

/* ==========================================================================
   Property page rhythm: About -> Share.
   Owner feedback: too much negative space and no separation between the
   description and the share block. The gap was two full section paddings
   stacking (About's bottom + Share's top) with no divider between them.
   ========================================================================== */

.kh-share-section {
  padding-top: 0;
  padding-bottom: 56px;
}

/* A hairline ties Share to the description above it instead of leaving it adrift. */
.kh-share {
  border-top: 1px solid var(--border);
  padding-top: 32px;
  gap: 16px;
}

/* The share heading is a sub-action, not a peer of "About This Property". */
.kh-share__intro h2 {
  font-size: clamp(22px, 1.6vw, 28px);
}

.kh-share__intro { margin-bottom: 2px; }

/* Trim the description block's trailing space so the two read as one column. */
.listing-detail-page .listing-detail__description { margin-bottom: 0; }
.listing-detail-page .content-section:has(.listing-detail__description) { padding-bottom: 44px; }

@media (max-width: 760px) {
  .kh-share-section { padding-bottom: 40px; }
  .kh-share { padding-top: 26px; }
}

/* The consult form inherits .kh-contact-form field styling; give the dialog the
   room that full-width fields need and keep the actions from crowding them. */
.kh-consult-modal__panel { width: min(100%, 760px); }
.kh-consult-modal__form { margin-top: 4px; }
.kh-consult-modal__form .form-row { gap: 18px; }
.kh-consult-modal__actions { margin-top: 18px; }

/* ==========================================================================
   Sticky header bar
   A separate compact bar (partials/kh-sticky-header.php) rather than a change
   to the two in-page headers: the home nav sits inside `.hero-shell`, so sticky
   there would release at the end of the hero and fixed would pull it out of
   flow. This leaves at-rest layout untouched on every page.
   ========================================================================== */

.kh-stickybar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 70;
  background: rgba(9, 10, 10, 0.94);
  border-bottom: 1px solid rgba(199, 166, 108, 0.28);
  color: #fff;
  transform: translateY(-101%);
  visibility: hidden;
  transition: transform 240ms ease, visibility 240ms ease;
}

/* Kept high enough that page text does not ghost through if the blur is
   dropped (reduced transparency settings, older WebKit, GPU fallbacks). */
@supports (backdrop-filter: blur(10px)) {
  .kh-stickybar {
    background: rgba(9, 10, 10, 0.92);
    backdrop-filter: blur(12px);
  }
}

body.kh-stuck .kh-stickybar {
  transform: translateY(0);
  visibility: visible;
}

.kh-stickybar__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 64px;
}

.kh-stickybar__actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.kh-stickybar .brand-mark {
  width: 38px;
  height: 34px;
}

.kh-stickybar .brand-main {
  font-size: 15px;
}

.kh-stickybar .brand-sub {
  font-size: 5.7px;
}

.kh-stickybar .nav-cta {
  padding: 10px 18px;
}

/* The bar owns the top of the viewport while stuck, so anything that pins to
   the top has to clear it. */
body.kh-stuck .kh-search-modal,
body.kh-stuck .kh-consult-modal {
  z-index: 9999;
}

@media (max-width: 1180px) {
  /* Same call as the in-page header: the drawer carries these actions. */
  .kh-stickybar__actions .nav-search,
  .kh-stickybar__actions .nav-cta {
    display: none;
  }

  .kh-stickybar__inner {
    min-height: 58px;
  }

  /* The drawer is a child of the in-page header, which sits at the top of the
     document. Once the bar is stuck, pin the drawer to the viewport so it opens
     under the bar instead of off-screen above it. */
  body.kh-stuck .mobile-menu {
    position: fixed;
    top: 58px;
    right: 0;
    left: auto;
    max-height: calc(100dvh - 58px);
    overflow-y: auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  .kh-stickybar {
    transition: none;
  }
}

/* The consultation CTA moved out of the header row on mobile; the drawer is
   where it lives at this width. */
.mobile-menu__cta {
  display: block;
  margin-top: 14px;
  padding: 13px 18px;
  border: 1px solid var(--gold);
  background: var(--gold);
  color: var(--white);
  font-size: 11px;
  font-weight: 650;
  letter-spacing: 0.16em;
  text-align: center;
  text-transform: uppercase;
}

.mobile-menu__cta:hover,
.mobile-menu__cta:focus-visible {
  background: transparent;
  color: var(--gold);
}

/* Facebook share line in the review helper. Carried over from the WordPress
   concierge, where the Facebook option sat under the Google action as the
   secondary path. */
.kh-review-fb-alt {
  border-top: 1px solid rgba(18, 17, 14, 0.14);
  color: #5b554b;
  font-size: 14px;
  line-height: 1.6;
  margin: 18px 0 0;
  padding-top: 16px;
}

.kh-review-fb-alt a {
  color: #1b5fa8;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.kh-review-fb-alt a:hover,
.kh-review-fb-alt a:focus-visible {
  color: #12457c;
}

/* Listings "show more" control. */
.listing-more {
  display: grid;
  gap: 10px;
  justify-items: center;
  margin-top: 34px;
  text-align: center;
}

.listing-more__status {
  color: #5b554b;
  font-family: Montserrat, Arial, sans-serif;
  font-size: 13px;
  margin: 0;
}

/* Listing cards: trim mobile spacing so a 54-card list is not padded out
   further. Type sizes are untouched; only the gaps move. */
@media (max-width: 760px) {
  .listing-grid {
    gap: 22px;
  }

  .listing-card__body {
    padding-top: 18px;
    padding-bottom: 18px;
  }

  .listing-card__body .listing-status {
    margin-bottom: 10px;
  }

  .listing-card__body .listing-price {
    margin-bottom: 8px;
  }

  .listing-card__body .listing-facts {
    margin-bottom: 14px;
  }
}

/* Core-value tags were bare spans in a flex row: with no separator they wrap on
   a phone into one run-on string ("PERSONAL GUIDANCE CLEAR COMMUNICATION FORT
   WORTH ROOTS"). A middot matches the separator the hero eyebrow and the listing
   cards already use. The dot trails its own tag so a wrap breaks after it. */
.strategy-footer-tags {
  gap: 10px;
}

.strategy-footer-tags span:not(:last-child)::after {
  content: "\00B7";
  margin-left: 10px;
  color: rgba(255, 255, 255, 0.34);
}

/* Contact page: the phone and email links are the conversion actions on this
   page and measured 30px tall on a phone. */
@media (max-width: 760px) {
  .contact-grid a[href^="tel:"],
  .contact-grid a[href^="mailto:"] {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }
}

/* `.kh-review-card` sets display:flex, which beats the UA stylesheet's
   [hidden]{display:none}. Without this the paging script hides cards that still
   occupy full height, so the page never actually gets shorter. */
.kh-review-card[hidden] {
  display: none;
}

/* The sticky bar is dark; `.nav-search` defaults to --ink for light contexts,
   which rendered the label almost invisible against it. */
.kh-stickybar .nav-search {
  color: #fff;
  border-color: rgba(255, 255, 255, 0.32);
}

.kh-stickybar .nav-search:hover,
.kh-stickybar .nav-search:focus-visible {
  border-color: var(--gold);
  color: var(--gold);
}

/* Review wall: cards stretched to their row's tallest, so ONE long review
   inflated its two neighbours to the same height (measured 2049px, 2.3
   viewports, on a 1440px desktop). Let each card take its own height. */
.kh-review-grid {
  align-items: start;
  gap: 18px;
}

.kh-review-card footer {
  margin-top: 18px;
  padding-top: 14px;
}

.kh-review-rating {
  font-size: 15px;
  margin-bottom: 12px;
}

/* Kickers on DARK panels keep the lighter decorative gold: --gold-deep would be
   the low-contrast choice there. */
.content-section--dark .section-kicker,
.kh-source-callout .section-kicker,
.site-footer .section-kicker,
.content-hero .section-kicker,
.site-hero .section-kicker,
.content-cta .section-kicker,
.content-cta-section .section-kicker,
.split-copy .section-kicker,
.cta-copy .section-kicker {
  color: var(--gold);
}

/* ===== Home proof block redesign (2026-07-24) ===== */
/* Home proof block redesign: was a full-width wall of serif text on flat cream.
   Now a contained card with a rating, a decorative quote mark, and a source
   line, using the site's existing serif/gold/square-corner language. */
.proof-section { padding: clamp(56px, 7vw, 96px) 0; }

.proof-card {
  position: relative;
  max-width: 860px;
  margin: 22px auto 0;
  padding: clamp(40px, 5vw, 66px) clamp(28px, 5vw, 70px) clamp(34px, 4vw, 52px);
  background: #fff;
  border: 1px solid var(--border);
  border-top: 3px solid var(--gold);
  box-shadow: 0 26px 64px rgba(18, 17, 14, 0.08);
  overflow: hidden;
}

.proof-quotemark {
  position: absolute;
  top: clamp(-18px, -1vw, -6px);
  left: 26px;
  color: var(--gold);
  opacity: 0.16;
  font-family: var(--serif);
  font-size: clamp(120px, 12vw, 180px);
  line-height: 1;
  pointer-events: none;
}

.proof-stars {
  margin: 0 0 20px;
  color: #b0862f;
  font-size: 17px;
  letter-spacing: 0.34em;
}

.proof-card blockquote {
  max-width: 660px;
  margin: 0 auto;
  font-family: var(--serif);
  font-size: clamp(20px, 1.55vw, 28px) !important;
  font-weight: 500;
  line-height: 1.42;
  color: #201d17;
}

.proof-card .proof-author {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  margin-top: 24px;
}

.proof-card .proof-author__name {
  color: #171510;
  font-family: var(--sans);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.proof-card .proof-author__source {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--gold-deep);
  font-family: var(--sans);
  font-size: 10px;
  font-weight: 650;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.proof-card .proof-author__source::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--gold);
}

.proof-card .proof-slider__nav { margin-top: 26px; }

/* Listing photo gallery (detail page). Only rendered when a listing has more
   than one photo; single-photo listings are unaffected. */
.listing-detail__media--gallery {
  display: flex;
  flex-direction: column;
}

.listing-gallery__stage {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}

.listing-gallery__main {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.listing-gallery__thumbs {
  display: flex;
  gap: 8px;
  padding: 10px;
  overflow-x: auto;
  background: rgba(9, 9, 8, 0.9);
  scrollbar-width: thin;
}

.listing-gallery__thumb {
  flex: 0 0 auto;
  width: 92px;
  height: 66px;
  padding: 0;
  border: 2px solid transparent;
  background: none;
  cursor: pointer;
  opacity: 0.62;
  transition: opacity 160ms ease, border-color 160ms ease;
}

.listing-gallery__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.listing-gallery__thumb.is-active,
.listing-gallery__thumb:hover,
.listing-gallery__thumb:focus-visible {
  opacity: 1;
  border-color: var(--gold);
}
