/* Premium motion: overlay enter/exit — quick, weighted, no content reveals.
   Page content stays fully painted; only overlays get a short open/close. */

.property-modal,
.contact-modal,
.property-listing-modal,
.property-lightbox,
.property-tour {
  visibility: hidden;
  pointer-events: none;
  transition: visibility 0.3s step-end;
}

.property-modal.is-open,
.contact-modal.is-open,
.property-listing-modal.is-open,
.property-lightbox.is-open,
.property-tour.is-open {
  visibility: visible;
  pointer-events: auto;
  transition: visibility 0s linear;
}

.property-modal-backdrop,
.contact-modal-backdrop,
.property-listing-modal-backdrop,
.property-lightbox-backdrop,
.property-modal-shell,
.contact-modal-shell,
.property-listing-shell,
.property-lightbox-stage {
  opacity: 0;
  transition: opacity 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

.property-modal.is-open .property-modal-backdrop,
.contact-modal.is-open .contact-modal-backdrop,
.property-listing-modal.is-open .property-listing-modal-backdrop,
.property-lightbox.is-open .property-lightbox-backdrop,
.property-modal.is-open .property-modal-shell,
.contact-modal.is-open .contact-modal-shell,
.property-listing-modal.is-open .property-listing-shell,
.property-lightbox.is-open .property-lightbox-stage {
  opacity: 1;
}

.property-tour-viewer {
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  .property-modal,
  .contact-modal,
  .property-listing-modal,
  .property-lightbox,
  .property-tour,
  .property-modal-backdrop,
  .contact-modal-backdrop,
  .property-listing-modal-backdrop,
  .property-lightbox-backdrop,
  .property-modal-shell,
  .contact-modal-shell,
  .property-listing-shell,
  .property-lightbox-stage {
    transition: none !important;
    transform: none !important;
  }

  .property-modal-backdrop,
  .contact-modal-backdrop,
  .property-listing-modal-backdrop,
  .property-lightbox-backdrop,
  .property-modal-shell,
  .contact-modal-shell,
  .property-listing-shell,
  .property-lightbox-stage {
    opacity: 1;
  }
}
