/* Modular overlay layer hardening for Accommodation popovers and plugin-owned modals. */
.pxab-ui .pxab-currency-modal,
.pxab-ui .pxab-amenities-modal,
.pxab-ui [data-pxab-request-modal],
.pxab-ui [data-pxab-price-modal],
.pxab-ui [data-pxab-quote-date-popover] {
  isolation: isolate;
}

html.pxab-page-scroll-locked,
body.pxab-page-scroll-locked {
  overflow: hidden !important;
}

body.pxab-page-scroll-locked {
  position: fixed !important;
  width: 100% !important;
}

/*
 * Accommodation-only backdrop blur.
 *
 * Do not scope these backdrop selectors to a .pxab-ui ancestor. Several public
 * Accommodation layers are intentionally portalled/appended to <body> to escape
 * theme/builder stacking contexts. The class names below are Accommodation-owned;
 * shared body-level dialogs receive an explicit --accommodation origin class in JS.
 * Existing overlay tints remain the fallback when backdrop-filter is unsupported.
 */
:where(
  .pxab-request-modal__scrim,
  .pxab-currency-modal__overlay,
  .pxab-amenities-modal__overlay,
  .pxab-facility-detail-modal__overlay,
  .pxab-property-external-modal__overlay,
  .pxab-property-share-modal__overlay,
  .pxab-request-draft-resume__overlay,
  .pxab-market-filters__overlay,
  .pxab-market-modal__overlay,
  .pxab-phone-country-choice-modal--accommodation .pxab-phone-country-choice-modal__overlay,
  .pxab-public-progress-cancel-dialog--accommodation .pxab-public-progress-cancel-dialog__backdrop
) {
  -webkit-backdrop-filter: blur(var(--pxab-accommodation-modal-backdrop-blur, 0px)) !important;
  backdrop-filter: blur(var(--pxab-accommodation-modal-backdrop-blur, 0px)) !important;
}

/* Accommodation modal roots that provide the translucent backdrop themselves. */
:where(
  .pxab-ui.pxab-modal[data-pxab-modal],
  .pxab-price-modal[data-pxab-price-modal]
) {
  -webkit-backdrop-filter: blur(var(--pxab-accommodation-modal-backdrop-blur, 0px)) !important;
  backdrop-filter: blur(var(--pxab-accommodation-modal-backdrop-blur, 0px)) !important;
}
