/* ============================================================
   HAVENA PRO — PROPERTY ARCHIVE STYLES
   Shared by: property-grid.html · property-list.html ·
              property-map.html · search-results.html
   ============================================================ */

/* ------------------------------------------------------------
   PAGE HERO (archive banner)
------------------------------------------------------------ */
.havena-pro-page-hero {
  position: relative;
  isolation: isolate;
  color: var(--havena-pro-color-dark-text);
  padding-top: calc(var(--havena-pro-header-h) + 42px + clamp(3rem, 6vw, 5rem));
  padding-bottom: clamp(3.5rem, 6vw, 5.5rem);
  overflow: hidden;
}

.havena-pro-page-hero__bg {
  position: absolute;
  inset: 0;
  z-index: -2;
}

/*
 * Full-bleed hero cover. Beat Elementor `.elementor img { height:auto }` (0,1,1).
 */
.havena-pro-page-hero__bg img,
.elementor .havena-pro-page-hero__bg img,
.elementor-widget-havena-pro-page-hero .havena-pro-page-hero__bg img {
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center;
  border: none;
  border-radius: 0;
}

.havena-pro-page-hero__bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(110deg, rgba(5, 11, 22, 0.92) 15%, rgba(5, 11, 22, 0.62) 60%, rgba(5, 11, 22, 0.4)),
    linear-gradient(to top, rgba(5, 11, 22, 0.85), transparent 55%);
}
.havena-pro-page-hero__overlay {
  position: absolute;
  inset: 0;
}
.havena-pro-page-hero__bg:has(.havena-pro-page-hero__overlay)::after {
  display: none;
}

.havena-pro-breadcrumb {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.65rem;
  font-size: var(--havena-pro-fs-sm);
  color: rgba(255, 255, 255, 0.6);
  margin-bottom: 1.25rem;
}

.havena-pro-breadcrumb a {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  color: rgba(255, 255, 255, 0.75);
}

.havena-pro-breadcrumb a:hover {
  color: var(--havena-pro-gold);
}

.havena-pro-breadcrumb svg {
  width: 14px;
  height: 14px;
}

.havena-pro-breadcrumb__sep {
  opacity: 0.45;
}

.havena-pro-breadcrumb [aria-current] {
  color: var(--havena-pro-gold);
  font-weight: var(--havena-pro-type-weight-button);
}

.havena-pro-breadcrumb--standalone {
  padding-top: calc(var(--havena-pro-header-h) + 42px + 1.5rem);
  padding-bottom: 1rem;
  color: var(--havena-pro-color-muted);
}

.havena-pro-breadcrumb--standalone a {
  color: var(--havena-pro-color-text);
}

.havena-pro-breadcrumb--standalone a:hover,
.havena-pro-breadcrumb--standalone a:focus-visible {
  color: var(--havena-pro-color-accent);
}

.havena-pro-breadcrumb--standalone .havena-pro-breadcrumb__sep {
  color: var(--havena-pro-color-muted-light);
  opacity: 1;
}

.havena-pro-breadcrumb--standalone [aria-current] {
  color: var(--havena-pro-color-text);
  font-weight: var(--havena-pro-type-weight-button);
}


.havena-pro-page-hero__title {
  font-size: var(--havena-pro-fs-h1);
  color: var(--havena-pro-color-dark-text);
  margin-bottom: 0.9rem;
}

.havena-pro-page-hero__kicker {
  margin: 0 0 0.45rem;
  font-size: var(--havena-pro-fs-sm);
  font-weight: var(--havena-pro-type-weight-button);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--havena-pro-gold);
}

.havena-pro-page-hero__title em {
  font-style: italic;
  color: var(--havena-pro-gold);
}

.havena-pro-page-hero__sub {
  color: rgba(255, 255, 255, 0.7);
  max-width: 56ch;
  font-size: 1.02rem;
}

.havena-pro-page-hero__sub.havena-pro-reveal {
  --havena-pro-delay: .08s;
}

/* Hero search bar */
.havena-pro-page-hero__search {
  margin-top: 2.25rem;
  max-width: 640px;
  display: flex;
  gap: 0.6rem;
  background: rgba(255, 255, 255, 0.98);
  border-radius: var(--havena-pro-radius-pill);
  padding: 0.45rem 0.45rem 0.45rem 1.4rem;
  box-shadow: var(--havena-pro-shadow-lg);
}

.havena-pro-page-hero__search.havena-pro-reveal {
  --havena-pro-delay: .16s;
}

.havena-pro-page-hero .havena-pro-search-popup__tags {
  margin-top: 1.25rem;
}

.havena-pro-page-hero .havena-pro-search-popup__tags a,
.havena-pro-page-hero .havena-pro-search-popup__tags button {
  padding: 0.5rem 1rem;
  border: 1.5px solid rgba(255, 255, 255, 0.28);
  border-radius: var(--havena-pro-radius-pill);
  font-size: var(--havena-pro-fs-sm);
  font-weight: var(--havena-pro-type-weight-nav);
  color: rgba(255, 255, 255, 0.85);
  background: transparent;
}

.havena-pro-page-hero .havena-pro-search-popup__tags a:hover,
.havena-pro-page-hero .havena-pro-search-popup__tags button:hover {
  border-color: var(--havena-pro-gold);
  color: var(--havena-pro-color-dark-text);
  background: var(--havena-pro-color-accent-overlay);
}

.havena-pro-page-hero__search svg {
  width: 20px;
  height: 20px;
  color: var(--havena-pro-slate-light);
  align-self: center;
  flex: none;
}

.havena-pro-page-hero__search input {
  flex: 1;
  min-width: 0;
  border: 0;
  background: transparent;
  font-size: 0.98rem;
  color: var(--havena-pro-ink);
}

.havena-pro-page-hero__search input:focus {
  outline: none;
}

.havena-pro-page-hero__search:focus-within {
  box-shadow: var(--havena-pro-shadow-lg), 0 0 0 3px rgba(201, 162, 39, 0.35);
}

.havena-pro-page-hero--search .havena-pro-page-hero__title {
  letter-spacing: -0.03em;
}

/* ------------------------------------------------------------
   ARCHIVE LAYOUT
------------------------------------------------------------ */
.havena-pro-archive-section {
  padding-top: clamp(2.5rem, 5vw, 4rem);
  overflow-x: clip;
}

/* Compact archive keyword bar (showTopSearch) — not the page-hero pill. */
.havena-pro-archive__top-search {
  margin-bottom: 1rem;
  max-width: 28rem;
}

.havena-pro-archive__search {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0;
  padding: 0.35rem 0.35rem 0.35rem 0.85rem;
  background: var(--havena-pro-card-background);
  border: 1px solid var(--havena-pro-line);
  border-radius: var(--havena-pro-radius);
  box-shadow: none;
}

.havena-pro-archive__search svg {
  width: 16px;
  height: 16px;
  flex: none;
  color: var(--havena-pro-slate-light);
}

.havena-pro-archive__search input {
  flex: 1;
  min-width: 0;
  border: 0;
  background: transparent;
  font-size: var(--havena-pro-fs-sm, 0.9rem);
  line-height: 1.3;
  color: var(--havena-pro-ink);
  padding: 0.35rem 0;
}

.havena-pro-archive__search input:focus {
  outline: none;
}

.havena-pro-archive__search:focus-within {
  border-color: color-mix(in srgb, var(--havena-pro-gold, #c9a227) 55%, var(--havena-pro-line));
  box-shadow: 0 0 0 2px rgba(201, 162, 39, 0.18);
}

.havena-pro-archive__search-submit {
  flex: none;
  padding: 0.45rem 0.9rem;
  font-size: var(--havena-pro-fs-sm, 0.875rem);
  border-radius: calc(var(--havena-pro-radius) - 2px);
}

.havena-pro-archive {
  display: grid;
  grid-template-columns: 296px minmax(0, 1fr);
  gap: clamp(1.75rem, 3vw, 2.75rem);
  align-items: start;
  min-inline-size: 0;
}

.havena-pro-archive--no-sidebar {
  grid-template-columns: minmax(0, 1fr);
}

.havena-pro-archive--sidebar-right {
  grid-template-columns: minmax(0, 1fr) 296px;
}
.havena-pro-archive--sidebar-right > .havena-pro-filters {
  order: 2;
}
.havena-pro-archive--sidebar-right > .havena-pro-filters-overlay {
  order: 3;
}
.havena-pro-archive--sidebar-right > .havena-pro-archive__results {
  order: 1;
}

.havena-pro-archive__results {
  min-inline-size: 0;
}

/* ------------------------------------------------------------
   FILTER SIDEBAR
------------------------------------------------------------ */
.havena-pro-filters {
  position: sticky;
  top: calc(var(--havena-pro-header-h) + 1.25rem);
  max-height: calc(100vh - var(--havena-pro-header-h) - 2.5rem);
  overflow-y: auto;
  overscroll-behavior: contain;
  background: var(--havena-pro-card-background);
  border: 1px solid var(--havena-pro-line);
  border-radius: var(--havena-pro-radius);
  padding: 1.6rem 1.5rem;
  scrollbar-width: thin;
}

.havena-pro-filters__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1.4rem;
}

.havena-pro-filters__head h2 {
  font-size: 1.08rem;
  font-weight: var(--havena-pro-type-weight-label);
  letter-spacing: 0;
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
}

.havena-pro-filters__head h2 svg {
  width: 18px;
  height: 18px;
  color: var(--havena-pro-gold-deep);
}

.havena-pro-filters__clear {
  font-size: var(--havena-pro-fs-xs);
  font-weight: var(--havena-pro-type-weight-label);
  color: var(--havena-pro-slate);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  transition: color var(--havena-pro-speed-fast);
}

.havena-pro-filters__clear:hover {
  color: var(--havena-pro-danger);
}

.havena-pro-filters__close {
  display: none;
}

.havena-pro-filter {
  padding: 1.25rem 0;
  border-top: 1px solid var(--havena-pro-line);
}

.havena-pro-filter__title {
  font-size: var(--havena-pro-fs-xs);
  font-weight: var(--havena-pro-type-weight-label);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--havena-pro-slate);
  margin-bottom: 0.95rem;
}

/* Custom checkbox */
.havena-pro-check {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0.4rem 0;
  cursor: pointer;
  font-size: 0.93rem;
  color: var(--havena-pro-ink);
  user-select: none;
}

.havena-pro-check input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.havena-pro-check__box {
  width: 20px;
  height: 20px;
  flex: none;
  border: 1.5px solid var(--havena-pro-line);
  border-radius: 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--havena-pro-card-background);
  transition: background var(--havena-pro-speed-fast) var(--havena-pro-ease), border-color var(--havena-pro-speed-fast) var(--havena-pro-ease);
}

.havena-pro-check__box svg {
  width: 11px;
  height: 11px;
  color: var(--havena-pro-button-primary-text);
  opacity: 0;
  transform: scale(0.4);
  transition: opacity var(--havena-pro-speed-fast) var(--havena-pro-ease), transform var(--havena-pro-speed-fast) var(--havena-pro-ease);
}

.havena-pro-check input:checked + .havena-pro-check__box {
  background: var(--havena-pro-blue);
  border-color: var(--havena-pro-blue);
}

.havena-pro-check input:checked + .havena-pro-check__box svg {
  opacity: 1;
  transform: scale(1);
}

.havena-pro-check input:focus-visible + .havena-pro-check__box {
  outline: 2px solid var(--havena-pro-blue);
  outline-offset: 2px;
}

.havena-pro-check:hover .havena-pro-check__box {
  border-color: var(--havena-pro-blue);
}

.havena-pro-check__count {
  margin-left: auto;
  font-size: var(--havena-pro-fs-xs);
  color: var(--havena-pro-slate-light);
}

/* Pill group (beds / baths) */
.havena-pro-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.havena-pro-pills button {
  min-width: 44px;
  padding: 0.5rem 0.85rem;
  border: 1.5px solid var(--havena-pro-line);
  border-radius: var(--havena-pro-radius-pill);
  font-size: var(--havena-pro-fs-sm);
  font-weight: var(--havena-pro-type-weight-button);
  color: var(--havena-pro-slate);
  background: var(--havena-pro-card-background);
  transition: background var(--havena-pro-speed-fast) var(--havena-pro-ease), border-color var(--havena-pro-speed-fast) var(--havena-pro-ease), color var(--havena-pro-speed-fast) var(--havena-pro-ease);
}

.havena-pro-pills button:hover {
  border-color: var(--havena-pro-navy-900);
  color: var(--havena-pro-navy-900);
}

.havena-pro-pills button.is-active {
  background: var(--havena-pro-navy-900);
  border-color: var(--havena-pro-navy-900);
  color: var(--havena-pro-button-primary-text);
}

/* Dual range slider */
.havena-pro-range {
  padding-top: 0.55rem;
  padding-inline: 0.1rem;
}

.havena-pro-range__track {
  position: relative;
  height: 4px;
  border-radius: var(--havena-pro-radius-pill, 999px);
  background: var(--havena-pro-bg-mist);
  margin: 1.15rem 0.35rem 1.35rem;
  overflow: visible;
}

.havena-pro-range__fill {
  position: absolute;
  top: 0;
  bottom: 0;
  border-radius: var(--havena-pro-radius-pill, 999px);
  background: linear-gradient(90deg, var(--havena-pro-blue), var(--havena-pro-gold));
  pointer-events: none;
  z-index: 1;
}

.havena-pro-range input[type="range"] {
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  width: 100%;
  height: 28px;
  margin: 0;
  padding: 0;
  transform: translateY(-50%);
  appearance: none;
  -webkit-appearance: none;
  background: transparent;
  pointer-events: none;
  z-index: 2;
}

.havena-pro-range input[type="range"][data-havena-pro-price="max"] {
  z-index: 3;
}

.havena-pro-range input[type="range"]::-webkit-slider-runnable-track {
  height: 4px;
  background: transparent;
  border: none;
}

.havena-pro-range input[type="range"]::-moz-range-track {
  height: 4px;
  background: transparent;
  border: none;
}

.havena-pro-range input[type="range"]::-webkit-slider-thumb {
  appearance: none;
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  margin-top: -7px;
  border-radius: 50%;
  background: var(--havena-pro-card-background);
  border: 2.5px solid var(--havena-pro-blue);
  box-shadow: var(--havena-pro-shadow-sm);
  cursor: grab;
  pointer-events: auto;
  position: relative;
  z-index: 4;
  transition: transform var(--havena-pro-speed-fast);
}

.havena-pro-range input[type="range"]::-webkit-slider-thumb:hover {
  transform: scale(1.12);
}

.havena-pro-range input[type="range"]::-moz-range-thumb {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--havena-pro-card-background);
  border: 2.5px solid var(--havena-pro-blue);
  box-shadow: var(--havena-pro-shadow-sm);
  cursor: grab;
  pointer-events: auto;
  position: relative;
  z-index: 4;
}

.havena-pro-range__values {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  font-size: var(--havena-pro-fs-sm);
  font-weight: var(--havena-pro-type-weight-label);
  color: var(--havena-pro-ink);
}

.havena-pro-range__values span {
  min-width: 5.5rem;
  text-align: center;
  padding: 0.35rem 0.7rem;
  background: var(--havena-pro-bg-soft);
  border-radius: var(--havena-pro-radius-xs);
  font-variant-numeric: tabular-nums;
}

/* Area input pair */
.havena-pro-filter__inline {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.6rem;
}

.havena-pro-filter__inline .havena-pro-input {
  padding: 0.65rem 0.85rem;
  font-size: var(--havena-pro-fs-sm);
}

.havena-pro-filters__apply {
  margin-top: 1.4rem;
  display: grid;
  gap: 0.6rem;
}

/* ------------------------------------------------------------
   TOOLBAR
------------------------------------------------------------ */
.havena-pro-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 1.4rem;
}

.havena-pro-toolbar__count {
  font-size: 0.95rem;
  color: var(--havena-pro-slate);
}

.havena-pro-toolbar__count strong {
  color: var(--havena-pro-ink);
  font-weight: var(--havena-pro-type-weight-body-strong);
}

.havena-pro-toolbar__actions {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  flex-wrap: wrap;
}

.havena-pro-toolbar__filters-btn {
  display: none;
}

.havena-pro-toolbar__sort {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  font-size: var(--havena-pro-fs-sm);
  color: var(--havena-pro-slate);
}

.havena-pro-toolbar__sort-label {
  white-space: nowrap;
}

.havena-pro-toolbar__sort .havena-pro-select {
  width: auto;
  padding: 0.6rem 2.4rem 0.6rem 1rem;
  font-size: var(--havena-pro-fs-sm);
  font-weight: var(--havena-pro-type-weight-button);
  border-radius: var(--havena-pro-radius-pill);
}

.havena-pro-toolbar__sort .havena-pro-select-wrap::after {
  right: 1rem;
}

.havena-pro-view-toggle {
  display: inline-flex;
  background: var(--havena-pro-bg-soft);
  border: 1px solid var(--havena-pro-line);
  border-radius: var(--havena-pro-radius-pill);
  padding: 4px;
  gap: 2px;
}

.havena-pro-view-toggle button,
.havena-pro-view-toggle a {
  width: 38px;
  height: 34px;
  border-radius: var(--havena-pro-radius-pill);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--havena-pro-slate);
  text-decoration: none;
  transition: color var(--havena-pro-speed-fast) var(--havena-pro-ease), background var(--havena-pro-speed-fast) var(--havena-pro-ease);
}

.havena-pro-view-toggle button svg,
.havena-pro-view-toggle a svg {
  width: 16px;
  height: 16px;
}

.havena-pro-view-toggle button:hover,
.havena-pro-view-toggle a:hover {
  color: var(--havena-pro-navy-900);
}

.havena-pro-view-toggle button.is-active {
  background: var(--havena-pro-card-background);
  color: var(--havena-pro-blue);
  box-shadow: var(--havena-pro-shadow-xs);
}

.havena-pro-save-search {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.62rem 1.15rem;
  border: 1.5px solid var(--havena-pro-line);
  border-radius: var(--havena-pro-radius-pill);
  font-size: var(--havena-pro-fs-sm);
  font-weight: var(--havena-pro-type-weight-button);
  color: var(--havena-pro-ink);
  background: var(--havena-pro-card-background);
  transition: border-color var(--havena-pro-speed-fast) var(--havena-pro-ease), background var(--havena-pro-speed-fast) var(--havena-pro-ease);
}

.havena-pro-save-search svg {
  width: 16px;
  height: 16px;
  color: var(--havena-pro-gold-deep);
}

.havena-pro-save-search:hover {
  border-color: var(--havena-pro-gold);
  background: var(--havena-pro-gold-soft);
}

.havena-pro-save-search.is-saved {
  background: var(--havena-pro-navy-900);
  border-color: var(--havena-pro-navy-900);
  color: var(--havena-pro-button-primary-text);
}

.havena-pro-save-search.is-saved svg {
  color: var(--havena-pro-gold);
}

.havena-pro-compare-chip {
  display: none;
  align-items: center;
  gap: 0.5rem;
  padding: 0.62rem 1.15rem;
  border-radius: var(--havena-pro-radius-pill);
  font-size: var(--havena-pro-fs-sm);
  font-weight: var(--havena-pro-type-weight-label);
  background: var(--havena-pro-blue-soft);
  color: var(--havena-pro-blue-deep);
  transition: background var(--havena-pro-speed-fast) var(--havena-pro-ease), color var(--havena-pro-speed-fast) var(--havena-pro-ease);
}

.havena-pro-compare-chip.is-visible {
  display: inline-flex;
}

.havena-pro-compare-chip:hover {
  background: var(--havena-pro-blue);
  color: var(--havena-pro-button-primary-text);
}

.havena-pro-compare-chip svg {
  width: 16px;
  height: 16px;
}

/* Active filter tags */
.havena-pro-filter-tags {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin-bottom: 1.5rem;
}

.havena-pro-filter-tags:empty {
  display: none;
}

.havena-pro-filter-tag {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.42rem 0.6rem 0.42rem 0.95rem;
  background: var(--havena-pro-navy-900);
  color: var(--havena-pro-button-primary-text);
  border: 0;
  border-radius: var(--havena-pro-radius-pill);
  font-size: var(--havena-pro-fs-xs);
  font-weight: var(--havena-pro-type-weight-button);
  text-decoration: none;
  max-inline-size: 100%;
  cursor: pointer;
}

.havena-pro-filter-tag:hover,
.havena-pro-filter-tag:focus-visible {
  color: var(--havena-pro-button-primary-text);
  background: var(--havena-pro-navy-800, #1b2a44);
}

.havena-pro-filter-tag__remove {
  width: 18px;
  height: 18px;
  border: 0;
  padding: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.16);
  color: var(--havena-pro-button-primary-text);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  cursor: pointer;
  transition: background var(--havena-pro-speed-fast);
}

.havena-pro-filter-tag:hover .havena-pro-filter-tag__remove,
.havena-pro-filter-tag:focus-visible .havena-pro-filter-tag__remove {
  background: var(--havena-pro-danger);
}

.havena-pro-filter-tag__remove svg {
  width: 9px;
  height: 9px;
}

.havena-pro-filter-tag--clear {
  background: transparent;
  border: 1.5px dashed var(--havena-pro-line);
  color: var(--havena-pro-slate);
  padding: 0.42rem 0.95rem;
  transition: border-color var(--havena-pro-speed-fast), color var(--havena-pro-speed-fast);
}

.havena-pro-filter-tag--clear:hover,
.havena-pro-filter-tag--clear:focus-visible {
  border-color: var(--havena-pro-danger);
  color: var(--havena-pro-danger);
  background: transparent;
}

@keyframes havena-pro-tag-in {
  from { opacity: 0; transform: scale(0.85); }
  to { opacity: 1; transform: scale(1); }
}

/* ------------------------------------------------------------
   RESULTS GRID — column count driven by .havena-pro-archive--cols-N
------------------------------------------------------------ */
.havena-pro-archive__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.6rem;
  min-inline-size: 0;
  /*
   * Content-driven card heights (Property Card Builder adds/removes fields).
   * Default grid stretch + body flex:1 filled shorter cards with empty space
   * and looked like artificial fixed height. Start-align keeps each card's
   * natural block size; width remains track-controlled via minmax(0, 1fr).
   */
  align-items: start;
}

/*
 * Archive only: do not let the body absorb leftover stretch space.
 * Global `.havena-pro-property__body { flex: 1 }` remains for other surfaces.
 */
.havena-pro-archive__grid > .havena-pro-property-card > .havena-pro-property__body {
  flex: 0 0 auto;
}

.havena-pro-archive--cols-1 .havena-pro-archive__grid,
.havena-pro-archive--cols-1 .havena-pro-archive__grid.hvnly-grid-view,
.havena-pro-archive--cols-1 .havena-pro-archive__grid.grid-view {
  grid-template-columns: minmax(0, 1fr);
}

.havena-pro-archive--cols-2 .havena-pro-archive__grid,
.havena-pro-archive--cols-2 .havena-pro-archive__grid.hvnly-grid-view,
.havena-pro-archive--cols-2 .havena-pro-archive__grid.grid-view {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.havena-pro-archive--cols-3 .havena-pro-archive__grid,
.havena-pro-archive--cols-3 .havena-pro-archive__grid.hvnly-grid-view,
.havena-pro-archive--cols-3 .havena-pro-archive__grid.grid-view {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.havena-pro-archive--cols-4 .havena-pro-archive__grid,
.havena-pro-archive--cols-4 .havena-pro-archive__grid.hvnly-grid-view,
.havena-pro-archive--cols-4 .havena-pro-archive__grid.grid-view {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.havena-pro-archive__grid.is-empty {
  display: none;
}

/*
 * Core setView adds `.hvnly-grid-view { repeat(2, 1fr) }` to the same node.
 * Keep Havena column counts when those Free utility classes are present.
 */
.havena-pro-archive .havena-pro-archive__grid.hvnly-grid-view,
.havena-pro-archive .havena-pro-archive__grid.grid-view {
  display: grid;
}

@media (max-width: 1380px) {
  .havena-pro-archive__grid,
  .havena-pro-archive .havena-pro-archive__grid.hvnly-grid-view,
  .havena-pro-archive .havena-pro-archive__grid.grid-view,
  .havena-pro-archive[class*="--cols-"] .havena-pro-archive__grid,
  .havena-pro-archive[class*="--cols-"] .havena-pro-archive__grid.hvnly-grid-view,
  .havena-pro-archive[class*="--cols-"] .havena-pro-archive__grid.grid-view {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 680px) {
  .havena-pro-archive__grid,
  .havena-pro-archive .havena-pro-archive__grid.hvnly-grid-view,
  .havena-pro-archive .havena-pro-archive__grid.grid-view,
  .havena-pro-archive[class*="--cols-"] .havena-pro-archive__grid,
  .havena-pro-archive[class*="--cols-"] .havena-pro-archive__grid.hvnly-grid-view,
  .havena-pro-archive[class*="--cols-"] .havena-pro-archive__grid.grid-view {
    grid-template-columns: 1fr;
  }
}

/* ------------------------------------------------------------
   PROPERTY CARD (archive card)
------------------------------------------------------------ */
.havena-pro-property-card {
  min-width: 0;
  max-width: 100%;
}

.havena-pro-property-card .havena-pro-property__media {
  aspect-ratio: 4 / 2.75;
}

.havena-pro-property__link {
  position: absolute;
  inset: 0;
  z-index: 1;
}

.havena-pro-property-card.is-hidden {
  display: none;
}

.havena-pro-property__type {
  display: inline-block;
  font-size: var(--havena-pro-fs-xs);
  font-weight: var(--havena-pro-type-weight-label);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--havena-pro-gold-deep);
  margin-bottom: 0.3rem;
}

.havena-pro-property__price--old {
  font-size: var(--havena-pro-fs-sm);
  font-weight: var(--havena-pro-type-weight-nav);
  color: rgba(255, 255, 255, 0.65);
  text-decoration: line-through;
  margin-right: 0.5rem;
}

/* Card gallery */
.havena-pro-property__gallery-img {
  transition: transform var(--havena-pro-speed-slow) var(--havena-pro-ease);
}

.havena-pro-property-card .havena-pro-property__media img.havena-pro-property__gallery-crossfade {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  opacity: 0;
  pointer-events: none;
  z-index: 0;
  transition: opacity var(--havena-pro-speed) var(--havena-pro-ease);
}

.havena-pro-property-card .havena-pro-property__media img.havena-pro-property__gallery-crossfade.is-visible {
  opacity: 1;
}

.havena-pro-property-card:hover .havena-pro-property__media img.havena-pro-property__gallery-crossfade {
  transition: opacity var(--havena-pro-speed) var(--havena-pro-ease);
  /* Keep hover zoom off this layer; JS copies the current photo transform. */
}

@media (prefers-reduced-motion: reduce) {
  .havena-pro-property-card .havena-pro-property__media img.havena-pro-property__gallery-crossfade,
  .havena-pro-property-card .havena-pro-property__media img.havena-pro-property__gallery-crossfade.is-visible {
    opacity: 1;
    transition: none;
  }
}

.havena-pro-property__gal-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 3;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--havena-pro-overlay-light);
  color: var(--havena-pro-ink);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity var(--havena-pro-speed-fast) var(--havena-pro-ease), background var(--havena-pro-speed-fast) var(--havena-pro-ease), color var(--havena-pro-speed-fast) var(--havena-pro-ease);
  box-shadow: var(--havena-pro-shadow-sm);
}

.havena-pro-property__gal-nav svg {
  width: 15px;
  height: 15px;
}

.havena-pro-property__gal-nav--prev { left: 0.85rem; }
.havena-pro-property__gal-nav--next { right: 0.85rem; }

/*
 * P2.6.6 — Keep gallery Next clear of the action stack (Favorite/Compare/Share/QV).
 * Actions sit at top-right; Next was on the same right edge at vertical mid,
 * so QV and Next hit rectangles overlapped on Grid cards.
 * Sibling order in card.php: .actions then .gal-nav--prev then .gal-nav--next.
 */
.havena-pro-property__actions ~ .havena-pro-property__gal-nav--next {
  right: 3.75rem;
}

.havena-pro-property-card:hover .havena-pro-property__gal-nav,
.havena-pro-property-card:focus-within .havena-pro-property__gal-nav {
  opacity: 1;
}

.havena-pro-property__gal-nav:hover {
  background: var(--havena-pro-navy-900);
  color: var(--havena-pro-button-primary-text);
}

.havena-pro-property__dots {
  position: absolute;
  bottom: 1.05rem;
  right: 1.1rem;
  z-index: 2;
  display: flex;
  gap: 5px;
}

.havena-pro-property__dots span {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.45);
  transition: background var(--havena-pro-speed-fast), transform var(--havena-pro-speed-fast);
}

.havena-pro-property__dots span.is-active {
  background: var(--havena-pro-color-dark-text);
  transform: scale(1.25);
}

/* Card hover actions */
.havena-pro-property__actions {
  position: absolute;
  top: 1rem;
  right: 1rem;
  z-index: 3;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}

/* Builder overlay stacks — extra fields must not displace Favorite/Compare/Share/Quick View. */
.havena-pro-property__zone {
  position: absolute;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  pointer-events: none;
  max-width: min(70%, 14rem);
}

.havena-pro-property__zone > * {
  pointer-events: auto;
}

.havena-pro-property__zone--tl {
  top: 1rem;
  left: 1rem;
  align-items: flex-start;
  max-width: calc(100% - 4.75rem);
}

.havena-pro-property__zone--tr {
  top: 1rem;
  right: 3.75rem;
  align-items: flex-end;
}

.havena-pro-property__zone--bl {
  bottom: 1rem;
  left: 1rem;
  align-items: flex-start;
}

.havena-pro-property__zone--br {
  right: 1rem;
  bottom: 2.15rem;
  align-items: flex-end;
}

.havena-pro-property__zone .havena-pro-property__badges,
.havena-pro-property__zone .havena-pro-property__price {
  position: static;
}

.havena-pro-property__zone .havena-pro-property__badges {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: var(--havena-pro-space-xs);
  flex-wrap: wrap;
}

.havena-pro-property__overlay-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.28rem 0.55rem;
  border-radius: var(--havena-pro-radius-pill, 999px);
  background: var(--havena-pro-overlay-light);
  color: var(--havena-pro-ink);
  font-size: var(--havena-pro-fs-xs);
  font-weight: var(--havena-pro-type-weight-button);
  line-height: 1.2;
  box-shadow: var(--havena-pro-shadow-xs);
  backdrop-filter: blur(6px);
}

.havena-pro-property__zone--bl .havena-pro-property__overlay-chip,
.havena-pro-property__zone--br .havena-pro-property__overlay-chip {
  background: var(--havena-pro-overlay-scrim);
  color: var(--havena-pro-color-dark-text);
  box-shadow: none;
}

.havena-pro-property__overlay-chip svg {
  width: 12px;
  height: 12px;
  flex: none;
}

.havena-pro-property__overlay-cta .havena-pro-property__extra {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.35rem 0.65rem;
  border-radius: var(--havena-pro-radius-pill, 999px);
  background: var(--havena-pro-overlay-frost);
  color: var(--havena-pro-ink);
  font-size: var(--havena-pro-fs-xs);
  font-weight: var(--havena-pro-type-weight-label);
}

.havena-pro-property__body-price {
  position: static;
  left: auto;
  bottom: auto;
  z-index: auto;
  display: block;
  font-size: 1.1rem;
  font-weight: var(--havena-pro-type-weight-card-title);
  color: var(--havena-pro-navy-900);
  margin: 0 0 0.15rem;
  text-shadow: none;
}
.havena-pro-property-card .havena-pro-property__body
.havena-pro-property__header
.havena-pro-property__body-price {
    font-size: 1.28rem;
}
.havena-pro-property__header {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-width: 0;
}

.havena-pro-property__header .havena-pro-property__type {
  margin-bottom: 0.3rem;
}

.havena-pro-property__rating {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0.2rem 0 0;
  font-size: var(--havena-pro-fs-sm);
  font-weight: var(--havena-pro-type-weight-button);
  color: var(--havena-pro-ink);
}

.havena-pro-property__rating-stars {
  display: inline-flex;
  align-items: center;
  gap: 0.08rem;
}

.havena-pro-property__rating-stars--fractional {
  position: relative;
}

.havena-pro-property__rating-stars-bg,
.havena-pro-property__rating-stars-fg {
  display: inline-flex;
  align-items: center;
  gap: 0.08rem;
}

.havena-pro-property__rating-stars-fg {
  position: absolute;
  inset: 0 auto 0 0;
  overflow: hidden;
  white-space: nowrap;
  width: var(--hpr-fill, 0%);
  max-width: 100%;
}

.havena-pro-property__rating-star {
  display: inline-flex;
  color: var(--havena-pro-line, #d4d4d8);
}

.havena-pro-property__rating-star.is-filled {
  color: var(--havena-pro-gold-deep);
}

.havena-pro-property__rating-star svg {
  width: 14px;
  height: 14px;
  fill: currentColor;
}

.havena-pro-property__rating-value {
  font-variant-numeric: tabular-nums;
}

.havena-pro-property__rating-count {
  color: var(--havena-pro-slate-light, #71717a);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}

.havena-pro-property__footer .havena-pro-property__rating,
.havena-pro-property__overlay-chip--rating .havena-pro-property__rating {
  margin: 0;
}
.havena-pro-property__media .havena-pro-property__rating-value{color: var(--havena-pro-slate-light, #71717a);}


@media (max-width: 680px) {
  .havena-pro-property__zone {
    max-width: min(62%, 11rem);
  }

  .havena-pro-property__zone--tl {
    max-width: calc(100% - 4.5rem);
  }

  .havena-pro-property__zone--tr {
    right: 3.5rem;
  }

  .havena-pro-property__overlay-chip {
    font-size: 0.65rem;
  }
}

.havena-pro-property__action {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--havena-pro-overlay-frost);
  backdrop-filter: blur(6px);
  color: var(--havena-pro-ink);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--havena-pro-shadow-xs);
  opacity: 0;
  transform: translateX(8px);
  transition: opacity 0.3s var(--havena-pro-ease), transform 0.3s var(--havena-pro-ease), background 0.3s var(--havena-pro-ease), color 0.3s var(--havena-pro-ease);
  position: relative;
}

.havena-pro-property__action:nth-child(2) { transition-delay: 0.04s; }
.havena-pro-property__action:nth-child(3) { transition-delay: 0.08s; }
.havena-pro-property__action:nth-child(4) { transition-delay: 0.12s; }

.havena-pro-property-card:hover .havena-pro-property__action,
.havena-pro-property-card:focus-within .havena-pro-property__action,
.havena-pro-property__action.is-saved,
.havena-pro-property__action.is-favorited,
.havena-pro-property__action.is-active {
  opacity: 1;
  transform: translateX(0);
}

.havena-pro-property__action svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
}

.havena-pro-property__action:hover {
  background: var(--havena-pro-navy-900);
  color: var(--havena-pro-button-primary-text);
  transform: translateX(0) scale(1.08);
}

.havena-pro-property__action.is-saved,
.havena-pro-property__action.is-favorited {
  background: var(--havena-pro-danger);
  color: var(--havena-pro-button-primary-text);
}

.havena-pro-property__action.is-saved svg,
.havena-pro-property__action.is-favorited svg {
  fill: currentColor;
}

.havena-pro-property__action.is-active {
  background: var(--havena-pro-blue);
  color: var(--havena-pro-button-primary-text);
}

/* Action tooltip */
.havena-pro-property__action::after {
  content: attr(data-havena-pro-tip);
  position: absolute;
  right: calc(100% + 10px);
  top: 50%;
  transform: translateY(-50%);
  background: var(--havena-pro-navy-950);
  color: var(--havena-pro-button-primary-text);
  font-size: 0.68rem;
  font-weight: var(--havena-pro-type-weight-button);
  padding: 0.32rem 0.6rem;
  border-radius: 6px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--havena-pro-speed-fast);
}

.havena-pro-property__action:hover::after {
  opacity: 1;
}

/* Semantic body regions (P1.55 / P1.55C). Footer is the final visual region. */
.havena-pro-property-card .havena-pro-property__body {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.havena-pro-property__header,
.havena-pro-property__content,
.havena-pro-property__content-area {
  min-width: 0;
}

.havena-pro-property__header .havena-pro-property__avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  object-fit: cover;
  flex: none;
}

.havena-pro-property__extras .havena-pro-property__posted {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  flex-basis: 100%;
}

.havena-pro-property-card .havena-pro-property__loc {
  margin-bottom: 0;
}

.havena-pro-property-card .havena-pro-property__excerpt {
  margin: 0.35rem 0 0;
}

.havena-pro-property-card .havena-pro-property__specs {
  /* margin-top: 0; */
  flex-wrap: wrap;
  row-gap: 0.45rem;
  column-gap: 0.85rem;
}

.havena-pro-property-card .havena-pro-property__extras {
  width: 100%;
  flex-shrink: 0;
}

.havena-pro-property__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
  width: 100%;
  /* Pins as final flex region when body has free space; no-op when body is content-sized. */
  margin-top: auto;
  min-width: 0;
  flex-shrink: 0;
  position: static;
  align-self: stretch;
}

.havena-pro-property__body:has(> .havena-pro-property__extras) > .havena-pro-property__footer {
  margin-top: 0.85rem;
}

.havena-pro-property__footer-left,
.havena-pro-property__footer-right {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.65rem 0.85rem;
  min-width: 0;
}

.havena-pro-property__footer-left {
  justify-content: flex-start;
}

.havena-pro-property__footer-right {
  justify-content: flex-end;
  margin-left: auto;
}

.havena-pro-property__footer-right .havena-pro-property__type {
  margin-bottom: 0;
}

.havena-pro-property__posted {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: var(--havena-pro-fs-xs);
  font-weight: var(--havena-pro-type-weight-body);
  color: var(--havena-pro-slate-light);
}

.havena-pro-property__posted svg {
  width: 14px;
  height: 14px;
  flex: none;
  color: inherit;
}

.havena-pro-property__views {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: var(--havena-pro-fs-xs);
  color: var(--havena-pro-slate-light);
  font-weight: var(--havena-pro-type-weight-body);
}

.havena-pro-property__views svg {
  width: 14px;
  height: 14px;
  flex: none;
  color: inherit;
}

.havena-pro-property__views svg path {
  fill: currentColor;
}

.havena-pro-property__views svg circle {
  fill: #fff;
}

.havena-pro-property__views-count,
.havena-pro-property__views-label {
  font-weight: inherit;
  font-variant-numeric: tabular-nums;
}

/* Agent row lives in footer-left; the footer owns the divider. */
.havena-pro-property__agent {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  font-size: var(--havena-pro-fs-sm);
}

/*
 * Property Card agent thumbnail — separate from the full Agent Card photo slot.
 * Beat Elementor `.elementor img { height:auto; max-width:100%; border-radius:0 }`
 * (0,1,1). Equal-specificity `.havena-pro-property__agent img` loses when Elementor
 * loads later → sharp square thumbs. Parent-scoped 0,2,1; no !important; no global img.
 */
.havena-pro-property .havena-pro-property__agent > img,
.havena-pro-property__agent img,
.elementor .havena-pro-property .havena-pro-property__agent > img,
.elementor .havena-pro-property__agent img,
.elementor-widget-havena-pro-property-carousel .havena-pro-property__agent img,
.elementor-widget-havena-pro-property-grid .havena-pro-property__agent img,
.elementor-widget-havena-pro-property-list .havena-pro-property__agent img {
  display: block;
  width: 32px;
  height: 32px;
  max-width: none;
  max-height: none;
  flex-shrink: 0;
  border-radius: 50%;
  object-fit: cover;
  object-position: center;
  box-sizing: border-box;
}

.havena-pro-property__agent a {
  font-weight: var(--havena-pro-type-weight-button);
  color: var(--havena-pro-ink);
}

.havena-pro-property__agent a:hover {
  color: var(--havena-pro-blue);
}

.havena-pro-property__agent time {
  margin-left: auto;
  font-size: var(--havena-pro-fs-xs);
  color: var(--havena-pro-slate-light);
}

/* Verified inline badge */
.havena-pro-property__verified {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--havena-pro-blue);
  color: var(--havena-pro-button-primary-text);
  flex: none;
  vertical-align: -3px;
  margin-left: 0.3rem;
}

.havena-pro-property__verified svg {
  width: 9px;
  height: 9px;
}

/* Luxury badge */
.havena-pro-badge--luxury {
  background: linear-gradient(120deg, var(--havena-pro-color-dark-800, #0E1F38), var(--havena-pro-color-dark-700, #15304F));
  color: var(--havena-pro-gold);
  border: 1px solid rgba(200, 169, 106, 0.45);
}

/* ------------------------------------------------------------
   LIST VIEW MODIFIER
   Specificity must beat .havena-pro-archive--cols-N selectors (0,2,0).
------------------------------------------------------------ */
.havena-pro-archive__grid--list,
.havena-pro-archive .havena-pro-archive__grid--list.hvnly-grid-view,
.havena-pro-archive .havena-pro-archive__grid--list.hvnly-list-view,
.havena-pro-archive .havena-pro-archive__grid--list.list-view,
.havena-pro-archive[class*="--cols-"] .havena-pro-archive__grid--list,
.havena-pro-archive[class*="--cols-"] .havena-pro-archive__grid--list.hvnly-grid-view,
.havena-pro-archive[class*="--cols-"] .havena-pro-archive__grid--list.grid-view {
  display: grid;
  grid-template-columns: 1fr;
  flex-direction: unset;
}

.havena-pro-archive__grid--list .havena-pro-property-card {
  flex-direction: row;
}

.havena-pro-archive__grid--list .havena-pro-property-card .havena-pro-property__media {
  width: 42%;
  flex: none;
  aspect-ratio: auto;
  min-height: 268px;
}

.havena-pro-archive__grid--list .havena-pro-property-card .havena-pro-property__body {
  padding: 1.6rem 1.75rem;
}

.havena-pro-archive__grid--list .havena-pro-property__specs,
.havena-pro-archive__grid--list .havena-pro-property__extras {
  gap: 1.5rem;
}

@media (max-width: 780px) {
  .havena-pro-archive__grid--list .havena-pro-property-card {
    flex-direction: column;
  }
  .havena-pro-archive__grid--list .havena-pro-property-card .havena-pro-property__media {
    width: 100%;
    aspect-ratio: 4 / 2.75;
    min-height: 0;
  }
}

/* ------------------------------------------------------------
   SKELETON LOADING
   Exclusive visibility model (IDLE | LOADING | LOADED):
   - LOADING: skeleton in normal flow; live grid display:none
   - Never absolute-overlay a compact skeleton over tall live cards
   - Never opacity-war with Core .hvnly-loading
------------------------------------------------------------ */
.havena-pro-skeleton-grid {
  display: none;
  grid-template-columns: repeat(var(--havena-pro-archive-cols, 3), minmax(0, 1fr));
  gap: 1.6rem;
}

.havena-pro-archive__results.is-loading .havena-pro-skeleton-grid,
.havena-pro-archive__results.is-refreshing .havena-pro-skeleton-grid {
  display: grid;
  position: static;
  pointer-events: none;
}

.havena-pro-archive__results.is-loading .havena-pro-archive__grid,
.havena-pro-archive__results.is-refreshing .havena-pro-archive__grid,
.havena-pro-archive__results.is-loading .havena-pro-pagination,
.havena-pro-archive__results.is-refreshing .havena-pro-pagination,
.havena-pro-archive__results.is-loading .havena-pro-empty,
.havena-pro-archive__results.is-refreshing .havena-pro-empty,
.havena-pro-archive__results.is-loading .havena-pro-load-more,
.havena-pro-archive__results.is-refreshing .havena-pro-load-more {
  display: none !important;
}

/*
 * Neutralize Core Free loading chrome on the Havena archive only.
 * is-loading / is-refreshing (display), not an opacity selector war.
 */
[data-hvnly-search-surface] [data-hvnly-results].hvnly-loading::after,
[data-hvnly-search-surface] .hvnly-loading::after {
  content: none !important;
  display: none !important;
  animation: none !important;
  border: 0 !important;
  width: 0 !important;
  height: 0 !important;
}

/* Load more (Theme presentation; Core still owns the AJAX append path). */
.havena-pro-load-more {
  display: none;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
  margin: 1.75rem 0 0.5rem;
}

html.havena-pro-js [data-havena-pro-archive-loading-mode="load_more"] .havena-pro-load-more:not([hidden]) {
  display: flex;
}

html.havena-pro-js [data-havena-pro-archive-loading-mode="load_more"] .havena-pro-pagination {
  display: none !important;
}

html:not(.havena-pro-js) .havena-pro-load-more {
  display: none !important;
}

.havena-pro-load-more__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.55rem;
  min-width: 14.5rem;
  min-height: 2.75rem;
}

.havena-pro-load-more__btn[aria-busy="true"] {
  cursor: wait;
  opacity: 0.92;
}

.havena-pro-load-more__spinner {
  display: none;
  flex: none;
  width: 1rem;
  height: 1rem;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, 0.35);
  border-top-color: currentColor;
  box-sizing: border-box;
}

.havena-pro-load-more__btn .havena-pro-load-more__spinner:not([hidden]) {
  display: inline-block;
  animation: havena-pro-load-more-spin 0.7s linear infinite;
}

@keyframes havena-pro-load-more-spin {
  to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
  .havena-pro-load-more__btn .havena-pro-load-more__spinner:not([hidden]) {
    animation: none;
    border-color: transparent;
    background: currentColor;
    opacity: 0.55;
  }
}

.havena-pro-load-more__end {
  margin: 0;
  color: var(--havena-pro-muted, #71717a);
  font-size: 0.9rem;
}

/*
 * Shared OUTER shell with live Property Cards (flex column / list row).
 * Decorative only — not a second card renderer; no Builder field clone.
 */
.havena-pro-skeleton.havena-pro-property-card {
  border: 1px solid var(--havena-pro-line);
  border-radius: var(--havena-pro-radius);
  overflow: hidden;
  background: var(--havena-pro-card-background);
  display: flex;
  flex-direction: column;
  /* Loading shells must not hover-lift like live cards. */
  transform: none;
  box-shadow: none;
  transition: none;
}

.havena-pro-skeleton.havena-pro-property-card:hover {
  transform: none;
  box-shadow: none;
  border-color: var(--havena-pro-line);
}

/* Suppress live-card media chrome on loading shells. */
.havena-pro-skeleton .havena-pro-property__media::after {
  content: none;
}

.havena-pro-skeleton__media,
.havena-pro-skeleton .havena-pro-property__media {
  /* Same grid media contract as archive property cards. */
  aspect-ratio: 4 / 2.75;
  position: relative;
  overflow: hidden;
  display: block;
  flex: none;
}

.havena-pro-skeleton__body,
.havena-pro-skeleton .havena-pro-property__body {
  padding: 1.35rem 1.4rem;
  display: grid;
  gap: 0.7rem;
  /* Content-driven shell; do not absorb stretch space. */
  flex: 0 0 auto;
  min-width: 0;
}

.havena-pro-skeleton__line {
  height: 13px;
  border-radius: 6px;
}

.havena-pro-skeleton__line--60 { width: 60%; }
.havena-pro-skeleton__line--40 { width: 40%; }

.havena-pro-skeleton__media,
.havena-pro-skeleton__line {
  background: linear-gradient(100deg, var(--havena-pro-bg-mist) 40%, #F9FAFC 50%, var(--havena-pro-bg-mist) 60%);
  background-size: 220% 100%;
  animation: havena-pro-shimmer 1.3s linear infinite;
}

/* @keyframes havena-pro-shimmer is defined once globally in main.css. */

@media (max-width: 1380px) {
  .havena-pro-skeleton-grid { grid-template-columns: repeat(2, 1fr); }
  .havena-pro-skeleton-grid > .havena-pro-skeleton:nth-child(n+7) {
    display: none;
  }
}

@media (max-width: 680px) {
  .havena-pro-skeleton-grid { grid-template-columns: 1fr; }
  .havena-pro-skeleton-grid > .havena-pro-skeleton:nth-child(n+4) {
    display: none;
  }
}

.havena-pro-skeleton-grid--list {
  grid-template-columns: 1fr;
}

/* Same list OUTER model as .havena-pro-archive__grid--list .havena-pro-property-card */
.havena-pro-skeleton-grid--list .havena-pro-skeleton,
.havena-pro-archive__grid--list > .havena-pro-skeleton[data-havena-pro-load-more-skeleton] {
  display: flex;
  flex-direction: row;
  align-items: stretch;
}

.havena-pro-skeleton-grid--list .havena-pro-skeleton__media,
.havena-pro-skeleton-grid--list .havena-pro-skeleton .havena-pro-property__media,
.havena-pro-archive__grid--list > .havena-pro-skeleton[data-havena-pro-load-more-skeleton] .havena-pro-skeleton__media,
.havena-pro-archive__grid--list > .havena-pro-skeleton[data-havena-pro-load-more-skeleton] .havena-pro-property__media {
  width: 42%;
  flex: none;
  aspect-ratio: auto;
  /* Same floor as live list media — not a total-card height. */
  min-height: 268px;
  align-self: stretch;
}

.havena-pro-skeleton-grid--list .havena-pro-skeleton__body,
.havena-pro-skeleton-grid--list .havena-pro-skeleton .havena-pro-property__body,
.havena-pro-archive__grid--list > .havena-pro-skeleton[data-havena-pro-load-more-skeleton] .havena-pro-skeleton__body,
.havena-pro-archive__grid--list > .havena-pro-skeleton[data-havena-pro-load-more-skeleton] .havena-pro-property__body {
  flex: 1 1 auto;
  padding: 1.6rem 1.75rem;
  align-self: stretch;
  /* Enough placeholder structure to fill the list media floor (same outer row). */
  align-content: start;
}

@media (max-width: 780px) {
  .havena-pro-skeleton-grid--list .havena-pro-skeleton,
  .havena-pro-archive__grid--list > .havena-pro-skeleton[data-havena-pro-load-more-skeleton] {
    flex-direction: column;
  }
  .havena-pro-skeleton-grid--list .havena-pro-skeleton__media,
  .havena-pro-skeleton-grid--list .havena-pro-skeleton .havena-pro-property__media,
  .havena-pro-archive__grid--list > .havena-pro-skeleton[data-havena-pro-load-more-skeleton] .havena-pro-skeleton__media,
  .havena-pro-archive__grid--list > .havena-pro-skeleton[data-havena-pro-load-more-skeleton] .havena-pro-property__media {
    width: 100%;
    aspect-ratio: 4 / 2.75;
    min-height: 0;
  }
}

@media (max-width: 1380px) {
  .havena-pro-skeleton-grid--list > .havena-pro-skeleton:nth-child(n+7) {
    display: none;
  }
}

@media (max-width: 680px) {
  .havena-pro-skeleton-grid--list > .havena-pro-skeleton:nth-child(n+4) {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .havena-pro-skeleton__media,
  .havena-pro-skeleton__line {
    animation: none;
    background: var(--havena-pro-bg-mist);
  }
}

/* ------------------------------------------------------------
   EMPTY STATE
------------------------------------------------------------ */
.havena-pro-empty {
  display: none;
  text-align: center;
  padding: clamp(3rem, 7vw, 5.5rem) 1.5rem;
  border: 1.5px dashed var(--havena-pro-line);
  border-radius: var(--havena-pro-radius-lg);
  background: var(--havena-pro-bg-soft);
}

.havena-pro-empty.is-visible {
  display: block;
}

.havena-pro-empty__icon {
  width: 88px;
  height: 88px;
  margin: 0 auto 1.5rem;
  border-radius: 50%;
  background: var(--havena-pro-card-background);
  border: 1px solid var(--havena-pro-line);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--havena-pro-gold-deep);
  box-shadow: var(--havena-pro-shadow-sm);
}

.havena-pro-empty__icon svg {
  width: 38px;
  height: 38px;
}

.havena-pro-empty h3 {
  font-size: var(--havena-pro-fs-h3);
  margin-bottom: 0.6rem;
}

.havena-pro-empty p {
  color: var(--havena-pro-slate);
  max-width: 46ch;
  margin: 0 auto 1.75rem;
}

/* ------------------------------------------------------------
   PAGINATION
------------------------------------------------------------ */
.havena-pro-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  margin-top: clamp(2.5rem, 5vw, 3.5rem);
}

.havena-pro-pagination__btn {
  box-sizing: border-box;
  width: 46px;
  height: 46px;
  min-width: 46px;
  max-width: 46px;
  padding: 0;
  flex: none;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  border: 1.5px solid var(--havena-pro-line);
  background: var(--havena-pro-card-background);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: var(--havena-pro-type-weight-button);
  font-size: var(--havena-pro-fs-sm);
  line-height: 1;
  color: var(--havena-pro-ink);
  overflow: hidden;
  transition: border-color var(--havena-pro-speed-fast) var(--havena-pro-ease), background var(--havena-pro-speed-fast) var(--havena-pro-ease), color var(--havena-pro-speed-fast) var(--havena-pro-ease), transform var(--havena-pro-speed-fast) var(--havena-pro-ease);
}

.havena-pro-pagination__btn svg {
  width: 16px;
  height: 16px;
  flex: none;
  display: block;
  overflow: visible;
}

.havena-pro-pagination__btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-active):not(.havena-pro-pagination__dots) {
  border-color: var(--havena-pro-navy-900);
  background: var(--havena-pro-navy-900);
  color: var(--havena-pro-button-primary-text);
  transform: translateY(-2px);
}

.havena-pro-pagination__btn.is-active {
  background: var(--havena-pro-blue);
  border-color: var(--havena-pro-blue);
  color: var(--havena-pro-button-primary-text);
  box-shadow: var(--havena-pro-shadow-blue);
}

.havena-pro-pagination__btn:disabled,
.havena-pro-pagination__btn[aria-disabled="true"] {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}

.havena-pro-pagination__btn:focus-visible {
  outline: var(--havena-pro-focus-width) solid var(--havena-pro-focus-color);
  outline-offset: 3px;
}

.havena-pro-pagination__dots {
  width: auto;
  min-width: 0;
  max-width: none;
  height: auto;
  aspect-ratio: auto;
  border-color: transparent;
  background: transparent;
  color: var(--havena-pro-slate-light);
  padding-inline: 0.35rem;
  overflow: visible;
  cursor: default;
}

/* ------------------------------------------------------------
   GRID/LIST RESULTS BAR (count left + pagination right)
------------------------------------------------------------ */
.havena-pro-listing-pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem 1.5rem;
  margin-top: clamp(2rem, 4vw, 3rem);
  width: 100%;
}

.havena-pro-listing-pager__meta {
  flex: 1 1 12rem;
  min-width: 0;
}

.havena-pro-listing-pager__nav {
  flex: 0 1 auto;
  margin-inline-start: auto;
}

.havena-pro-listing-pager .havena-pro-toolbar__count,
.havena-pro-listing-pager__count {
  margin: 0;
  font-size: var(--havena-pro-fs-sm);
  font-weight: var(--havena-pro-type-weight-nav, 500);
  color: var(--havena-pro-slate-light);
  line-height: 1.4;
}

.havena-pro-listing-pager__range,
.havena-pro-listing-pager__total {
  font-weight: var(--havena-pro-type-weight-button, 600);
  color: var(--havena-pro-ink);
}

.havena-pro-listing-pager .havena-pro-pagination {
  margin-top: 0;
  justify-content: flex-end;
}

.havena-pro-listing-pager .havena-pro-pagination[hidden] {
  display: none !important;
}

@media (max-width: 767px) {
  .havena-pro-listing-pager {
    flex-direction: column;
    align-items: stretch;
  }

  .havena-pro-listing-pager__nav {
    margin-inline-start: 0;
  }

  .havena-pro-listing-pager .havena-pro-pagination {
    justify-content: flex-start;
    flex-wrap: wrap;
  }
}

/* ------------------------------------------------------------
   MOBILE FILTER DRAWER
------------------------------------------------------------ */
.havena-pro-filters-overlay {
  display: none;
}

@media (max-width: 1120px) {
  .havena-pro-archive {
    grid-template-columns: 1fr;
  }

  .havena-pro-toolbar__filters-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.62rem 1.15rem;
    border: 1.5px solid var(--havena-pro-line);
    border-radius: var(--havena-pro-radius-pill);
    font-size: var(--havena-pro-fs-sm);
    font-weight: var(--havena-pro-type-weight-button);
    background: var(--havena-pro-card-background);
    transition: border-color var(--havena-pro-speed-fast);
  }

  .havena-pro-toolbar__filters-btn svg {
    width: 16px;
    height: 16px;
    color: var(--havena-pro-blue);
  }

  .havena-pro-toolbar__filters-btn:hover {
    border-color: var(--havena-pro-navy-900);
  }

  .havena-pro-toolbar__filters-btn .havena-pro-header__action-count {
    position: static;
    margin-left: 0.1rem;
  }

  .havena-pro-toolbar__filters-btn .havena-pro-header__action-count[hidden] {
    display: none;
  }

  .havena-pro-filters {
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    z-index: 1150;
    width: min(360px, 86vw);
    max-height: none;
    border-radius: 0;
    border: 0;
    transform: translateX(-100%);
    transition: transform var(--havena-pro-speed) var(--havena-pro-ease);
    padding-bottom: 2.5rem;
  }

  .havena-pro-filters.is-open {
    transform: translateX(0);
    box-shadow: var(--havena-pro-shadow-lg);
  }

  .havena-pro-filters__close {
    display: flex;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: var(--havena-pro-bg-soft);
    align-items: center;
    justify-content: center;
  }

  .havena-pro-filters__close svg {
    width: 16px;
    height: 16px;
  }

  .havena-pro-filters-overlay {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 1140;
    background: var(--havena-pro-overlay-scrim);
    backdrop-filter: blur(4px);
    opacity: 0;
    visibility: hidden;
    transition: opacity var(--havena-pro-speed) var(--havena-pro-ease), visibility var(--havena-pro-speed);
  }

  .havena-pro-filters-overlay.is-visible {
    opacity: 1;
    visibility: visible;
  }
}

/* ------------------------------------------------------------
   COMPACT PAGE HERO
------------------------------------------------------------ */
.havena-pro-page-hero--compact {
  padding-top: calc(var(--havena-pro-header-h) + 42px + clamp(1.75rem, 3.5vw, 3rem));
  padding-bottom: clamp(2rem, 4vw, 3.25rem);
}

.havena-pro-page-hero--breadcrumb-only .havena-pro-container {
  padding-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.havena-pro-page-hero--breadcrumb-only .havena-pro-breadcrumb {
  margin-bottom: 0;
}

.havena-pro-page-hero--align-left .havena-pro-container {
  text-align: left;
}

.havena-pro-page-hero--align-center .havena-pro-container {
  text-align: center;
}

.havena-pro-page-hero--align-right .havena-pro-container {
  text-align: right;
}

@media (max-width: 720px) {
  .havena-pro-page-hero__search {
    flex-wrap: wrap;
    border-radius: var(--havena-pro-radius-lg);
    padding: 0.75rem;
  }

  .havena-pro-page-hero__search input {
    flex: 1 1 12rem;
  }

  .havena-pro-page-hero__search .havena-pro-btn {
    flex: 1 1 auto;
  }

  /*
   * Mobile archive toolbar — compact search-control region.
   * Measured excess (390): toolbar stack ~186px + margin-bottom 1.4rem (22px)
   * to first card + archive-section padding-top ~40px.
   * Prior 1.0.421 grid left Sort and View on separate full rows — still tall.
   * Keep Features; put Sort + View on one secondary row; tighten gaps only.
   */
  /* .havena-pro-archive-section {
    padding-top: 1.25rem;
  } */

  .havena-pro-toolbar {
    flex-direction: column;
    align-items: stretch;
    gap: 0.5rem;
    margin-bottom: 0.85rem;
  }

  .havena-pro-toolbar__count {
    width: 100%;
    margin: 0;
    line-height: 1.35;text-align: center;
  }

  .havena-pro-toolbar__actions {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 0.5rem;
  }

  /*
   * Scope under .havena-pro-toolbar only — map overlay chips reuse
   * .havena-pro-toolbar__filters-btn and must not inherit archive order/flex.
   * DOM is Filters → Compare → Save; keep Filters|Save as the primary visual pair.
   */
  .havena-pro-toolbar .havena-pro-toolbar__filters-btn {
    order: 1;
  }

  .havena-pro-toolbar .havena-pro-save-search {
    order: 2;
  }

  .havena-pro-toolbar .havena-pro-compare-chip {
    order: 3;
  }

  .havena-pro-toolbar .havena-pro-toolbar__sort {
    order: 4;
  }

  .havena-pro-toolbar .havena-pro-view-toggle {
    order: 5;
  }

  /* Primary pair — equal share; basis accounts for gap so 320px does not wrap. */
  .havena-pro-toolbar .havena-pro-toolbar__filters-btn,
  .havena-pro-toolbar .havena-pro-save-search {
    flex: 1 1 calc((100% - 0.5rem) / 2);
    max-width: calc((100% - 0.5rem) / 2);
    justify-content: center;
    align-items: center;
    box-sizing: border-box;
    min-height: 44px;
    white-space: nowrap;
    padding-inline: 0.85rem;
  }

  .havena-pro-toolbar .havena-pro-toolbar__filters-btn {
    border-color: var(--havena-pro-navy-900);
  }

  /* Compare stays available; full width under primary pair when visible. */
  .havena-pro-toolbar .havena-pro-compare-chip.is-visible {
    flex: 1 1 100%;
    max-width: 100%;
    justify-content: center;
    min-height: 44px;
    box-sizing: border-box;
  }

  /* Secondary row: Sort grows, view toggle sits beside it (not a third stack). */
  .havena-pro-toolbar .havena-pro-toolbar__sort {
    flex: 1 1 9rem;
    min-width: 0;
  }

  .havena-pro-toolbar .havena-pro-toolbar__sort .havena-pro-select-wrap {
    flex: 1 1 auto;
    min-width: 0;
  }

  .havena-pro-toolbar .havena-pro-toolbar__sort .havena-pro-select {
    width: 100%;
  }

  .havena-pro-toolbar .havena-pro-view-toggle {
    flex: 0 0 auto;
  }
}
