/* ================================
   Profile Photo Gallery
   ================================ */

.photo-gallery .section-title {
  width: 100%;
}

.listing-photo-gallery {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(8px, 2vw, 12px);
  align-items: stretch;
}

.listing-photo-feature,
.listing-photo-thumb {
  display: block;
  appearance: none;
  border: 0;
  padding: 0;
  font: inherit;
  color: inherit;
  background: transparent;
  cursor: pointer;
}

.listing-photo-feature {
  position: relative;
  overflow: hidden;
  width: 100%;
  aspect-ratio: 16 / 10;
  border-radius: 3px;
  box-shadow: var(--drop-shadow);
  transform: translateZ(0);
}

.listing-photo-feature-image,
.listing-photo-gallery .listing-photo {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.listing-photo-feature-image {
  transition: transform .35s ease, filter .35s ease;
}

.listing-photo-thumbnails {
  --listing-thumb-gap: 12px;
  display: flex;
  flex-flow: row nowrap;
  gap: var(--listing-thumb-gap);
  overflow-x: auto;
  overflow-y: hidden;
  padding: 0 2px 10px 0;
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
}

.listing-photo-arrow {
  position: absolute;
  top: 50%;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 50%;
  color: #fff;
  background: rgba(63,82,91,.72);
  box-shadow: var(--drop-shadow);
  cursor: pointer;
  transform: translateY(-50%);
}

.listing-photo-arrow:hover,
.listing-photo-arrow:focus-visible {
  background: rgba(63,82,91,.9);
}

.listing-photo-arrow:focus-visible {
  outline: 3px solid var(--light-blue);
  outline-offset: 3px;
}

.listing-photo-arrow--prev {
  left: 12px;
}

.listing-photo-arrow--next {
  right: 12px;
}

.listing-photo-thumb {
  position: relative;
  flex: 0 0 clamp(92px, 30%, 150px);
  overflow: hidden;
  aspect-ratio: 4 / 3;
  border: 3px solid transparent;
  border-radius: 3px;
  padding: 0;
  background: transparent;
  box-shadow: none;
  scroll-snap-align: start;
  transform: translateZ(0);
}

.listing-photo-thumb .listing-photo {
  border-radius: 0;
  object-fit: cover;
  background: transparent;
  transition: transform .35s ease, filter .35s ease;
}

.listing-photo-thumb.is-active {
  border-color: var(--orange);
}

.listing-photo-thumb:focus-visible {
  border-color: var(--orange);
}

.listing-photo-thumb:focus-visible,
.listing-photo-feature:focus-visible {
  outline: 3px solid var(--light-blue);
  outline-offset: 3px;
}

@media (max-width: 63.9375rem) {
  .listing-photo-thumbnails {
    --listing-thumb-gap: 8px;
  }
}

@media (min-width: 48rem) {
  .listing-photo-gallery {
    grid-template-columns: minmax(0, 1fr) minmax(170px, 28%);
  }

  .listing-photo-feature {
    aspect-ratio: 16 / 9;
  }

  .listing-photo-thumbnails {
    height: var(--listing-feature-height, min(620px, 40vw));
    max-height: var(--listing-feature-height, min(620px, 40vw));
    min-height: 0;
    flex-flow: row wrap;
    align-content: start;
    overflow-x: hidden;
    overflow-y: auto;
    padding: 0 8px 0 0;
    scroll-snap-type: y proximity;
  }

  .listing-photo-thumb {
    flex-basis: calc((100% - var(--listing-thumb-gap)) / 2);
  }
}

@media (min-width: 64rem) {
  .listing-photo-gallery {
    grid-template-columns: minmax(0, 1fr) minmax(220px, 30%);
  }
}

@media (hover:hover) and (pointer:fine) {
  .listing-photo-thumb:hover .listing-photo {
    transform: scale(1.02);
    filter: saturate(1.05);
  }
}

@media (prefers-reduced-motion: reduce) {
  .listing-photo-feature-image,
  .listing-photo-thumb .listing-photo {
    transition: none !important;
  }
}

.listing-photo-preview {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  padding: 0;
  background: transparent;
  cursor: pointer;
  touch-action: pan-y;
}
.listing-photo-preview:focus-visible {
  outline: 3px solid var(--light-blue);
  outline-offset: -3px;
}
.listing-photo-arrow { background: var(--dark-blue); }
.listing-photo-arrow[hidden] { display: none; }