/* Property Listings — front-end styles. Kept deliberately plain so themes can restyle. */

/* Gallery carousel */
.pl-gallery { position: relative; margin: 0 0 30px; }
.pl-gallery__track {
  display: flex; gap: 2px; height: 385px;
  overflow-x: auto; overflow-y: hidden;
  scroll-snap-type: x mandatory; scroll-behavior: smooth;
  scrollbar-width: none;
}
.pl-gallery__track::-webkit-scrollbar { display: none; }
.pl-gallery__track:focus-visible { outline: 2px solid #1b2a4a; outline-offset: 2px; }
.pl-gallery__slide { flex: 0 0 auto; height: 100%; scroll-snap-align: start; cursor: zoom-in; }
/* !important: themes commonly force img { max-width: 100%; height: auto } (this one even with
   !important), which would clip or squash slides. Each slide is its photo at the track height. */
.pl-gallery__slide img { display: block; height: 100% !important; width: auto !important; max-width: none !important; object-fit: cover; }
.pl-gallery--single .pl-gallery__slide { flex-basis: 100%; }
.pl-gallery--single .pl-gallery__slide img { width: 100% !important; }
.pl-gallery__nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 50px; height: 76px; border: 0; padding: 0;
  background: rgba(30, 30, 30, .75); color: #fff;
  font-size: 44px; line-height: 70px; cursor: pointer;
}
.pl-gallery__nav:hover, .pl-gallery__nav:focus-visible { background: rgba(30, 30, 30, .95); }
.pl-gallery__nav--prev { left: 0; }
.pl-gallery__nav--next { right: 0; }
.pl-gallery__nav[disabled] { opacity: 0; pointer-events: none; }
.pl-gallery__count {
  position: absolute; right: 8px; bottom: 8px; padding: 2px 8px; border-radius: 3px;
  background: rgba(30, 30, 30, .7); color: #fff; font-size: 12px;
}
@media (max-width: 767px) {
  .pl-gallery__track { height: 260px; }
  .pl-gallery__nav { width: 36px; height: 56px; font-size: 32px; line-height: 50px; }
}

/* Lightbox */
.pl-lightbox {
  width: 100vw; height: 100vh; max-width: 100vw; max-height: 100vh;
  margin: 0; padding: 0; border: 0; background: rgba(0, 0, 0, .92); color: #fff;
}
.pl-lightbox::backdrop { background: rgba(0, 0, 0, .6); }
.pl-lightbox__img {
  position: absolute; inset: 50px 60px; margin: auto;
  max-width: calc(100% - 120px); max-height: calc(100% - 100px); object-fit: contain;
}
.pl-lightbox button {
  position: absolute; border: 0; background: transparent; color: #fff; cursor: pointer;
  font-size: 48px; line-height: 1; padding: 10px 16px;
}
.pl-lightbox__close { top: 0; right: 0; font-size: 36px !important; }
.pl-lightbox__prev { left: 0; top: 50%; transform: translateY(-50%); }
.pl-lightbox__next { right: 0; top: 50%; transform: translateY(-50%); }
.pl-lightbox__count { position: absolute; left: 0; right: 0; bottom: 14px; text-align: center; font-size: 14px; }

/* Facts */
.pl-facts { list-style: none; margin: 0 0 30px; padding: 0; }
.pl-facts__item { display: flex; gap: 12px; padding: 8px 0; border-bottom: 1px solid #e5e5e5; }
.pl-facts__label { flex: 0 0 35%; font-weight: 600; }

/* Map */
.pl-map { margin: 0 0 20px; }
.pl-map iframe { display: block; width: 100%; height: 450px; border: 0; }
.pl-map__directions { display: inline-block; margin-top: 8px; }
@media (max-width: 767px) { .pl-map iframe { height: 300px; } }

/* Contacts */
.pl-contact { margin-bottom: 15px; }
.pl-contact__name { font-weight: bold; font-size: 1.3em; margin-bottom: 5px; }
.pl-contact__details { margin: 0 0 10px; }
.pl-contact__details dt { float: left; clear: left; margin-right: 4px; font-weight: bold; }
.pl-contact__details dd { margin: 0; }
.pl-contact__note { margin: 10px 0; }
.pl-contact__note p:last-child { margin-bottom: 0; }

/* Listing grid (default template; themes may override property-listings/overview.php) */
.pl-overview { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 24px; margin: 0 0 30px; }
.pl-card { background: #fff; border: 1px solid #e5e5e5; display: flex; flex-direction: column; }
.pl-card__image img { display: block; width: 100%; height: 200px; object-fit: cover; }
.pl-card__body { padding: 14px 16px; }
.pl-card__type { font-size: 12px; text-transform: uppercase; letter-spacing: .05em; opacity: .7; }
.pl-card__title { margin: 4px 0 8px; font-size: 18px; }
.pl-card__meta { display: flex; gap: 14px; margin-top: 10px; font-weight: 600; }
