/** APD 394 — Google Maps results presentation only. */
#apd53-results-map[data-apd-map-provider="google"] {
  background: #e5e3df;
}

.apd394-google-overlay {
  position: absolute;
  transform: translate(-50%, -50%);
  will-change: left, top;
  pointer-events: auto;
}

.apd394-google-price-wrap {
  white-space: nowrap;
}

.apd394-google-price-marker {
  min-width: 86px;
  max-width: 126px;
  padding-inline: 14px !important;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0,0,0,.18) !important;
}

.apd394-google-price-marker:hover,
.apd394-google-price-marker:focus-visible {
  transform: scale(1.06);
  color: #fff;
  background: #172a45;
  outline: none;
}

.apd394-google-user-dot {
  display: block;
  width: 18px;
  height: 18px;
  border: 3px solid #fff;
  border-radius: 50%;
  background: #3b82f6;
  box-shadow: 0 1px 5px rgba(0,0,0,.25);
  pointer-events: none;
}

.apd394-google-popup {
  width: 270px;
}

.gm-style .gm-style-iw-c {
  padding: 0 !important;
  border-radius: 16px !important;
  box-shadow: 0 14px 38px rgba(20,35,55,.22) !important;
}

.gm-style .gm-style-iw-d {
  overflow: hidden !important;
}

.gm-style .gm-ui-hover-effect {
  z-index: 2 !important;
}

/* APD 575 — guaranteed exact-city asset + semantic network fallbacks.
   Never flash a listing/generic lodging photo before the real city image. */
@media (max-width: 767px) {
  html body.apd534-airbnb-results .apd544-map-destination-card.is-destination-photo-loading .apd548-map-destination-media {
    background: linear-gradient(135deg, #eaf2ff 0%, #dce9fb 48%, #edf4ff 100%) !important;
  }

  html body.apd534-airbnb-results .apd544-map-destination-card.is-destination-photo-loading .apd548-map-destination-media::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(105deg, transparent 24%, rgba(255,255,255,.72) 45%, transparent 66%);
    transform: translateX(-105%);
    animation: apd574DestinationPhotoLoading 1.15s ease-in-out infinite;
    pointer-events: none;
  }

  html body.apd534-airbnb-results .apd544-map-destination-card.is-destination-photo-loading .apd544-map-destination-glyph {
    position: relative !important;
    z-index: 2 !important;
    background: transparent !important;
    opacity: .72;
  }

  html body.apd534-airbnb-results .apd544-map-destination-card.has-destination-photo .apd548-map-destination-media > img {
    animation: apd574DestinationPhotoReveal .18s ease-out both;
  }

  /* APD 578 — once the browser has decoded a real destination photo, the
     location glyph must leave the paint tree completely. Older premium CSS
     kept the glyph as a full-size grid item and Safari could paint it above
     the absolute photo even after the photo load event had succeeded. */
  html body.apd534-airbnb-results .apd544-map-destination-card.has-destination-photo .apd548-map-destination-media > .apd544-map-destination-glyph {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
  }

  html body.apd534-airbnb-results .apd544-map-destination-card.has-destination-photo .apd548-map-destination-media > img:not([hidden]) {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    z-index: 2 !important;
  }

  html body.apd534-airbnb-results .apd574-map-photo-attribution {
    position: absolute !important;
    right: 4px !important;
    bottom: 4px !important;
    left: 4px !important;
    z-index: 3 !important;
    overflow: visible !important;
    padding: 2px 3px !important;
    border-radius: 4px !important;
    background: rgba(0,0,0,.62) !important;
    color: #fff !important;
    font: 500 9px/11px -apple-system,BlinkMacSystemFont,"SF Pro Text",sans-serif !important;
    letter-spacing: 0 !important;
    text-align: center !important;
    text-decoration: none !important;
    text-overflow: clip !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }

  html body.apd534-airbnb-results .apd574-map-photo-attribution[hidden] {
    display: none !important;
  }
}

@keyframes apd574DestinationPhotoLoading {
  to { transform: translateX(105%); }
}

@keyframes apd574DestinationPhotoReveal {
  from { opacity: 0; }
  to { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  html body.apd534-airbnb-results .apd544-map-destination-card.is-destination-photo-loading .apd548-map-destination-media::after,
  html body.apd534-airbnb-results .apd544-map-destination-card.has-destination-photo .apd548-map-destination-media > img {
    animation: none !important;
  }
}


/* APD 579 — clean destination thumbnails: never overlay provider/author text
   on city, province/state, neighbourhood or country photography. */
html body.apd534-airbnb-results .apd574-map-photo-attribution {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
