/* Property information and map interactions — references, September 2026. */
:root { --favorite-color: #ed354c; }
.header-favorites__heart,
.favorites-empty > span { color: var(--favorite-color); }
.object-body .property-card-title,
.catalog-info .property-card-title { margin: 0 0 10px; color: var(--ink); font-size: 19px; line-height: 1.35; overflow-wrap: anywhere; }
.object-body .property-card-title,
.catalog-info .property-card-title { min-height: calc(1.35em * 2); }
.property-facts { display: grid; grid-template-rows: minmax(20px, auto) minmax(24px, auto); gap: 10px; margin: 0 0 14px; font-size: 14px; line-height: 1.4; }
.property-facts--no-metro::after { content: ''; grid-row: 2; }
.property-facts > div { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.property-facts dt { display: flex; flex: 1 0 auto; align-items: baseline; gap: 8px; margin: 0; color: #73736e; white-space: nowrap; }
.property-facts dt::after { content: ''; flex: 1 1 12px; min-width: 8px; border-bottom: 1px dotted #d3d3cd; }
.property-facts dd { flex: 0 1 auto; max-width: 60%; min-width: 0; margin: 0; color: var(--ink); text-align: right; overflow-wrap: anywhere; }
.property-facts small { display: block; margin-top: 2px; font-size: 12px; color: #72726c; }
.property-card-bottom { display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 12px; }
.property-card-cost { display: grid; grid-template-rows: minmax(18px, auto) minmax(28px, auto) minmax(24px, auto); gap: 3px; }
/* Without an old price, drop its empty track across the whole home specials row. */
#specialCards:not(:has(.old-price)) .property-card-cost { grid-template-rows: minmax(18px, auto) minmax(28px, auto); }
.property-card-cost > span:first-child { color: #73736e; font-size: 13px; }
.property-card-cost > .old-price { grid-row: 3; margin: 0; }
.property-card-price { color: var(--ink); font-size: 23px; line-height: 1.2; font-weight: 750; letter-spacing: -.03em; }
.property-card-bottom a { margin: 0; font-size: 14px; white-space: nowrap; }
.object-card { display: flex; flex-direction: column; }
.object-body { display: flex; flex: 1 1 auto; flex-direction: column; }
.object-body .property-card-bottom,
.catalog-info .property-card-bottom { margin-top: auto; }
.catalog-info { display: flex; min-width: 0; flex-direction: column; }
.catalog-info .property-facts { max-width: 520px; }
.related-object__info .property-facts { margin-top: 12px; font-size: 13px; }
.related-object__info .property-facts > div { display: flex; }
.related-object__info .property-facts small { font-size: 11px; }
.property-card-title .property-card-link,
.catalog-info .property-card-title .catalog-details-link,
.catalog-info .property-card-title .catalog-details-link:hover,
.catalog-info .property-card-title .catalog-details-link:focus-visible {
  display: inline;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
  text-decoration: none;
  white-space: normal;
  transform: none;
  transition: none;
}
.property-card-title .property-card-link:focus-visible { outline: 2px solid var(--ink); outline-offset: 4px; }
.detail-heading-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.property-favorite,
.heart.property-favorite,
.detail-favorite.detail-favorite--icon {
  display: grid;
  place-items: center;
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  padding: 6px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
}
.property-favorite svg,
.detail-favorite--icon svg { width: 30px; height: 30px; fill: #fff; stroke: var(--ink); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; transition: fill .16s ease, stroke .16s ease; }
.property-favorite.is-favorite svg,
.detail-favorite--icon.is-favorite svg { fill: var(--favorite-color); stroke: var(--favorite-color); }
.property-favorite:focus-visible,
.detail-favorite--icon:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
.object-card,
.catalog-card { position: relative; }
.object-card > .property-favorite,
.catalog-card > .property-favorite,
.object-detail-media > .property-favorite { position: absolute; z-index: 5; top: 12px; right: 12px; bottom: auto; }
.catalog-card > .property-favorite { top: 24px; right: 24px; }
.object-card .photo-preview__status { top: auto; bottom: 48px; }
@media (min-width: 1081px) {
  .catalog-card > .catalog-actions { padding-top: 54px; }
}
@media (min-width: 769px) and (max-width: 1080px) {
  .catalog-info .property-card-title { padding-right: 54px; }
}
@media (max-width: 768px) {
  .catalog-card .photo-preview__status { top: auto; bottom: 48px; }
}
@media (hover: hover) {
  .heart.property-favorite:hover,
  .detail-favorite.detail-favorite--icon:hover { background: rgba(18,18,18,.04); }
}
@media (prefers-reduced-motion: reduce) {
  .property-favorite svg,
  .detail-favorite--icon svg { transition: none; }
}

/* Each studio keeps its own detail URL, with compact choices at one address. */
.studio-variants { margin: 24px 0; min-width: 0; }
.studio-variants h2 { margin: 0 0 12px; font-size: 14px; line-height: 1.4; font-weight: 600; letter-spacing: 0; color: var(--muted); }
.studio-variants__list { display: flex; flex-wrap: wrap; gap: 8px; }
.studio-variant {
  display: flex;
  flex: 0 1 auto;
  flex-direction: column;
  gap: 5px;
  min-width: min(104px, 100%);
  max-width: 100%;
  padding: 12px 16px;
  border: 1px solid rgba(18,18,18,.06);
  border-radius: 16px;
  background: rgba(239,239,235,.64);
  color: var(--ink);
  line-height: 1.3;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  transition: background-color .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.studio-variant__name { font-size: 14px; font-weight: 650; overflow-wrap: anywhere; }
.studio-variant__area { font-size: 13px; color: var(--muted); }
.studio-variant[aria-current="page"] { border-color: rgba(18,18,18,.72); background: rgba(255,255,255,.88); box-shadow: inset 0 0 0 .5px rgba(18,18,18,.32); }
.studio-variant:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
@media (hover: hover) {
  .studio-variant:hover { border-color: rgba(18,18,18,.32); background: rgba(255,255,255,.9); }
}
@media (max-width: 520px) {
  .studio-variants { margin: 20px 0; }
  .studio-variant { min-width: min(96px, 100%); padding: 11px 13px; border-radius: 14px; }
}
@media (prefers-reduced-motion: reduce) {
  .studio-variant { transition: none; }
}

.price-marker { transition: background-color .16s, border-color .16s, color .16s, box-shadow .16s; }
.price-marker:focus-visible,
.price-marker-shell:focus-visible .price-marker,
.price-marker-shell:has(.price-marker[aria-expanded="true"]) .price-marker { background: #fff; border-color: #050505; color: #050505; box-shadow: 0 0 0 3px #fff, 0 6px 18px rgba(0,0,0,.30); }
.price-marker:focus-visible::after,
.price-marker-shell:focus-visible .price-marker::after,
.price-marker[aria-expanded="true"]::after { border-color: #050505; }
.price-marker:focus-visible, .price-marker-shell:focus-visible { outline: 3px solid #050505; outline-offset: 4px; }
.map-cluster-shell:focus-visible .map-cluster { background: #fff; border-color: #050505; color: #050505; box-shadow: 0 0 0 3px #fff, 0 6px 18px rgba(0,0,0,.30); }
@media (hover: hover) {
  .price-marker:hover { background: #fff; border-color: #050505; color: #050505; box-shadow: 0 0 0 3px #fff, 0 6px 18px rgba(0,0,0,.30); }
  .price-marker:hover::after { border-color: #050505; }
  .map-cluster:hover, .map-cluster-shell:hover .map-cluster { background: #fff; border-color: #050505; color: #050505; box-shadow: 0 0 0 3px #fff, 0 6px 18px rgba(0,0,0,.30); }
}
@media (hover: none) {
  .price-marker:hover:not(:focus-visible):not([aria-expanded="true"]) { background: #050505; border-color: #050505; color: #fff; box-shadow: 0 8px 18px rgba(0,0,0,.24); }
  .map-cluster:hover { background: #050505; border-color: #fff; color: #fff; box-shadow: 0 8px 18px rgba(0,0,0,.24); }
}
.home-dgis-map, .dgis-map { height: 520px; }
.home-dgis-map .leaflet-bottom.leaflet-right,
.dgis-map .leaflet-bottom.leaflet-right,
.object-map .leaflet-bottom.leaflet-right { padding-bottom: 22px; }
.leaflet-popup.map-popup .leaflet-popup-content-wrapper { border: 1px solid #e3e3de; border-radius: 20px; box-shadow: 0 12px 32px rgba(18,18,18,.14); }
.leaflet-popup.map-popup .leaflet-popup-content { width: min(230px, calc(100vw - 120px)); margin: 24px 20px 18px; }
.leaflet-popup.map-popup .leaflet-popup-tip { border: 0; }
.leaflet-popup.map-popup .leaflet-popup-close-button { top: 8px; right: 8px; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: #f2f2ef; font-size: 22px; }
.map-balloon { gap: 8px; font-family: inherit; }
.map-balloon strong { padding-right: 12px; font-size: 24px; line-height: 1.2; letter-spacing: -.035em; }
.map-balloon .map-balloon__meta { font-size: 13px; color: #74746e; }
.map-balloon .map-balloon__address { margin-top: 4px; font-size: 15px; color: #151515; line-height: 1.4; }
.map-balloon .map-balloon__metro { font-size: 13px; line-height: 1.4; }
.map-balloon__metro small { display: block; color: #74746e; }
.leaflet-popup .map-balloon a { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 7px; padding: 11px 13px; border-radius: 12px; background: #f1f1ed; color: #151515; font-size: 13px; font-weight: 650; text-transform: none; transition: background-color .15s, color .15s; }
.leaflet-popup .map-balloon a:hover, .leaflet-popup .map-balloon a:focus-visible { background: #151515; color: #fff; }
.leaflet-popup .map-balloon a span { color: inherit; font-size: 18px; }
@media (max-width: 520px) {
  .object-body .property-card-title, .catalog-info .property-card-title { font-size: 18px; }
  .property-facts { font-size: 13px; }
  .property-card-price { font-size: 22px; }
}

/* The native details link covers the catalog card; other actions stay separate. */
.catalog-card--linked { position: relative; isolation: isolate; cursor: pointer; }
.catalog-card--linked .catalog-details-link { position: static; transform: none; }
.catalog-card--linked .catalog-details-link::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  border-radius: 22px;
}
.catalog-card--linked .catalog-details-link:focus-visible { outline: none; }
.catalog-card--linked .catalog-details-link:focus-visible::after { outline: 2px solid #111; outline-offset: 3px; }
.catalog-card--linked .catalog-actions > a,
.catalog-card--linked .catalog-actions > button { position: relative; z-index: 2; }
.catalog-card--linked .catalog-plan .photo-count,
.catalog-card--linked .catalog-plan .property-badge-stack { pointer-events: none; }

/* Map selectors reuse the catalog city dropdown without changing other filters. */
.map-region-control { width: 228px; }
.map-region-control select[data-enhanced-select="true"] { display: none; }
.map-region-control .custom-select__button { min-height: 46px; padding: 0 14px; border-radius: 14px; font-size: 14px; }
.map-region-control .custom-select__menu { max-height: min(320px, 48vh); padding: 6px; }
.map-region-control .custom-select__option { min-height: 42px; font-size: 14px; }
.map-region-control .custom-select__button:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
@media (max-width: 600px) {
  .map-tools .map-region-control { width: auto; }
}

/* Fullscreen fallback must place map controls above the fixed site header. */
.catalog-map.is-map-fullscreen { z-index: 5000; }

/* The next section already supplies the map-to-reviews spacing. */
#mapPreview { padding-bottom: 0; }

/* Keep only the inline phone maps square; fullscreen keeps its viewport height. */
@media (max-width: 620px) {
  .map-preview,
  .catalog-map:not(:fullscreen):not(.is-map-fullscreen) {
    height: auto;
    min-height: 0;
    aspect-ratio: 1;
  }
  .map-preview > .home-dgis-map,
  .map-preview > .map-status,
  .catalog-map:not(:fullscreen):not(.is-map-fullscreen) > .dgis-map,
  .catalog-map:not(:fullscreen):not(.is-map-fullscreen) > .map-status {
    position: absolute;
    inset: 0;
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    min-height: 0;
  }
}
