:root {
  --rg-layer-open-duration: 240ms;
  --rg-layer-close-duration: 180ms;
  --rg-layer-ease: cubic-bezier(.2,.72,.2,1);
  --rg-layer-visual-height: var(--rg-visual-viewport-height, 100dvh);
  --rg-layer-visual-top: var(--rg-visual-viewport-top, 0px);
}

[data-rg-layer-active="1"] {
  --rg-layer-available-height: calc(var(--rg-layer-visual-height) - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
  overscroll-behavior: contain;
}

[data-rg-layer-surface="1"] {
  max-height: min(calc(100dvh - 24px), var(--rg-layer-available-height));
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

[data-rg-layer-state="opening"] [data-rg-layer-surface="1"],
[data-rg-layer-state="open"] [data-rg-layer-surface="1"] {
  transition-duration: var(--rg-layer-open-duration) !important;
  transition-timing-function: var(--rg-layer-ease) !important;
}

[data-rg-layer-state="closing"] [data-rg-layer-surface="1"],
[data-rg-layer-state="closing"][data-rg-layer-surface="1"] {
  transition-duration: var(--rg-layer-close-duration) !important;
  transition-timing-function: ease-in !important;
}

.rg-keyboard-open [data-rg-layer-active="1"].rg-sheet,
.rg-keyboard-open [data-rg-layer-active="1"].rg-drawer,
.rg-keyboard-open #v130FilterPanel[data-rg-layer-active="1"],
.rg-keyboard-open [data-rg-layer-active="1"] [data-rg-layer-surface="1"] {
  max-height: calc(var(--rg-layer-visual-height) - 8px - env(safe-area-inset-bottom, 0px)) !important;
}

.rg-keyboard-open [data-rg-layer-active="1"].rg-sheet,
.rg-keyboard-open #v130FilterPanel[data-rg-layer-active="1"] {
  height: auto;
  bottom: max(0px, env(safe-area-inset-bottom, 0px));
}

.rg-keyboard-open [data-rg-layer-active="1"] input:focus,
.rg-keyboard-open [data-rg-layer-active="1"] textarea:focus,
.rg-keyboard-open [data-rg-layer-active="1"] select:focus,
.rg-keyboard-open [data-rg-layer-active="1"] [contenteditable="true"]:focus {
  scroll-margin-block: 18px max(82px, calc(env(safe-area-inset-bottom, 0px) + 64px));
}

dialog[data-rg-layer-active="1"] {
  opacity: 1;
  transform: translate3d(0,0,0) scale(1);
  transition:
    opacity var(--rg-layer-open-duration) var(--rg-layer-ease),
    transform var(--rg-layer-open-duration) var(--rg-layer-ease),
    display var(--rg-layer-close-duration) allow-discrete,
    overlay var(--rg-layer-close-duration) allow-discrete;
}

dialog[data-rg-layer-state="closing"] {
  opacity: 0;
  transform: translate3d(0,8px,0) scale(.99);
}

dialog[data-rg-layer-active="1"]::backdrop {
  background: rgba(12, 28, 59, .46);
  transition: background-color var(--rg-layer-open-duration) var(--rg-layer-ease), overlay var(--rg-layer-close-duration) allow-discrete;
}

@starting-style {
  dialog[data-rg-layer-active="1"] {
    opacity: 0;
    transform: translate3d(0,12px,0) scale(.985);
  }
  dialog[data-rg-layer-active="1"]::backdrop {
    background: rgba(12, 28, 59, 0);
  }
}

.rg-layer-confirm {
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  display: grid;
  place-items: center;
  padding: max(18px, env(safe-area-inset-top, 0px)) 18px max(18px, env(safe-area-inset-bottom, 0px));
  background: rgba(10, 25, 54, .48);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity var(--rg-layer-close-duration) ease, visibility 0s linear var(--rg-layer-close-duration);
}

.rg-layer-confirm.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: opacity var(--rg-layer-open-duration) var(--rg-layer-ease), visibility 0s;
}

.rg-layer-confirm-card {
  box-sizing: border-box;
  width: min(100%, 440px);
  max-height: min(calc(100dvh - 36px), var(--rg-layer-available-height, calc(100dvh - 36px)));
  overflow: auto;
  border: 1px solid rgba(180, 198, 230, .72);
  border-radius: 22px;
  padding: 22px;
  background: #fff;
  color: #14284d;
  direction: rtl;
  text-align: right;
  box-shadow: 0 24px 70px rgba(15, 35, 74, .22);
  opacity: 0;
  transform: translate3d(0,14px,0) scale(.985);
  transition: opacity var(--rg-layer-close-duration) ease, transform var(--rg-layer-close-duration) ease;
}

.rg-layer-confirm.is-open .rg-layer-confirm-card {
  opacity: 1;
  transform: translate3d(0,0,0) scale(1);
  transition: opacity var(--rg-layer-open-duration) var(--rg-layer-ease), transform var(--rg-layer-open-duration) var(--rg-layer-ease);
}

.rg-layer-confirm-kicker {
  display: block;
  margin-bottom: 7px;
  color: #2864d7;
  font-size: 12px;
  font-weight: 800;
}

.rg-layer-confirm-card h2 {
  margin: 0;
  font: inherit;
  font-size: 20px;
  font-weight: 900;
  line-height: 1.55;
}

.rg-layer-confirm-card p {
  margin: 10px 0 0;
  color: #5d6c86;
  font-size: 14px;
  line-height: 1.95;
  white-space: pre-line;
}

.rg-layer-confirm-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 20px;
}

.rg-layer-confirm-actions button {
  min-height: 44px;
  border-radius: 13px;
  padding: 10px 18px;
  font: inherit;
  font-weight: 800;
  cursor: pointer;
}

.rg-layer-confirm-primary {
  border: 1px solid #245fd4;
  background: #245fd4;
  color: #fff;
}

.rg-layer-confirm-primary.is-danger {
  border-color: #bd3046;
  background: #bd3046;
}

.rg-layer-confirm-secondary {
  border: 1px solid #d5deed;
  background: #f7f9fd;
  color: #30415f;
}

.rg-layer-confirm-secondary:empty {
  display: none;
}

.rg-layer-confirm-actions button:focus-visible {
  outline: 3px solid rgba(36, 95, 212, .25);
  outline-offset: 2px;
}

@media (max-width: 600px) {
  .rg-layer-confirm {
    align-items: end;
    padding-inline: 10px;
    padding-bottom: max(10px, env(safe-area-inset-bottom, 0px));
  }
  .rg-layer-confirm-card {
    width: 100%;
    border-radius: 22px 22px 16px 16px;
    padding: 20px 18px;
  }
  .rg-layer-confirm-actions {
    display: grid;
    grid-template-columns: 1fr;
  }
  .rg-layer-confirm-actions button {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --rg-layer-open-duration: 1ms;
    --rg-layer-close-duration: 1ms;
  }
  [data-rg-layer-active="1"],
  [data-rg-layer-active="1"] *,
  .rg-layer-confirm,
  .rg-layer-confirm * {
    scroll-behavior: auto !important;
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 1ms !important;
  }
}

[data-v129-modal-backdrop],
.rg128-modal-overlay {
  transition: opacity var(--rg-layer-open-duration) var(--rg-layer-ease);
}

[data-v129-modal-backdrop] .rg-v129-modal,
.rg128-modal-overlay .rg128-modal {
  transition: opacity var(--rg-layer-open-duration) var(--rg-layer-ease), transform var(--rg-layer-open-duration) var(--rg-layer-ease);
}

[data-v129-modal-backdrop][data-rg-layer-state="closing"],
.rg128-modal-overlay[data-rg-layer-state="closing"] {
  opacity: 0;
  pointer-events: none;
  transition-duration: var(--rg-layer-close-duration);
}

[data-v129-modal-backdrop][data-rg-layer-state="closing"] .rg-v129-modal,
.rg128-modal-overlay[data-rg-layer-state="closing"] .rg128-modal {
  opacity: 0;
  transform: translate3d(0,10px,0) scale(.99);
  transition-duration: var(--rg-layer-close-duration);
}

/* Coordinator-owned closing targets keep the visual response immediate while
   legacy close callbacks run only after the shared 160ms exit window. */
.rg-sheet[data-rg-layer-state="closing"] {
  transform: translate3d(-50%, 110%, 0) !important;
}
.rg-drawer[data-rg-layer-state="closing"] {
  transform: translate3d(105%, 0, 0) !important;
}
.rg-overlay[data-rg-layer-state="closing"] {
  opacity: 0 !important;
  visibility: hidden !important;
  transition-duration: var(--rg-layer-close-duration) !important;
}
#bookingPolicyModal[data-rg-layer-state="closing"] .rg-policy-dialog,
#persianDatePicker[data-rg-layer-state="closing"] .rg-date-picker-dialog,
#receiptModal[data-rg-layer-state="closing"] .rg-receipt-dialog,
#videoModal[data-rg-layer-state="closing"] .rg-video-dialog,
#rgAuthRecovery[data-rg-layer-state="closing"] .rg-auth-recovery-card {
  opacity: 0 !important;
  transform: translate3d(0, 10px, 0) scale(.99) !important;
  transition-duration: var(--rg-layer-close-duration) !important;
}
#bookingPolicyModal[data-rg-layer-state="closing"],
#persianDatePicker[data-rg-layer-state="closing"],
#receiptModal[data-rg-layer-state="closing"],
#videoModal[data-rg-layer-state="closing"],
#rgAuthRecovery[data-rg-layer-state="closing"],
.rg-layer-confirm[data-rg-layer-state="closing"] {
  opacity: 0 !important;
  pointer-events: none !important;
  transition-duration: var(--rg-layer-close-duration) !important;
}

/* CW1.45 — nested smart-select adapter.
   The panel is portalled to <body>, so it must animate and trap focus as its
   own top layer rather than being treated as a child of the filter sheet. */
.rg-smart-select-panel[data-rg-layer-active="1"].is-visible {
  opacity: 1 !important;
  transform: translate3d(0, 0, 0) !important;
  transition:
    transform var(--rg-layer-open-duration) var(--rg-layer-ease),
    opacity var(--rg-layer-open-duration) ease-out !important;
  will-change: transform, opacity;
}

.rg-smart-select-panel[data-rg-layer-state="preparing"].is-visible {
  opacity: 0 !important;
  transform: translate3d(0, 24px, 0) !important;
  transition: none !important;
}

.rg-smart-select-panel[data-rg-layer-state="closing"].is-visible {
  opacity: 0 !important;
  transform: translate3d(0, 20px, 0) !important;
  pointer-events: none !important;
  transition:
    transform var(--rg-layer-close-duration) ease-in,
    opacity var(--rg-layer-close-duration) ease-in !important;
}

/* ========================================================================
   CW1.46 — cross-device paint stability and pointer feedback repair
   ======================================================================== */

/* Android/WebView tap paint must not leave a blue rectangle. Keyboard focus
   remains visible through :focus-visible; only pointer-origin close feedback
   is neutralized. */
[data-rg-layer-active="1"] :where(button,a,[role="button"],summary,input[type="button"],input[type="submit"],input[type="reset"]),
.rg-layer-confirm :where(button,a,[role="button"]),
#v130FilterBackdrop {
  -webkit-tap-highlight-color: transparent;
}

html.rg-layer-pointer-input :where(
  [data-rg-layer-active="1"] [data-close-sheet],
  [data-rg-layer-active="1"] [data-close-video],
  [data-rg-layer-active="1"] [data-close-booking-policy],
  [data-rg-layer-active="1"] [data-close-date-picker],
  [data-rg-layer-active="1"] [data-close-receipt],
  [data-rg-layer-active="1"] [data-auth-recovery-close],
  [data-rg-layer-active="1"] [data-v129-close],
  [data-rg-layer-active="1"] .rg128-modal-close,
  #v130FilterPanel[data-rg-layer-active="1"] #v130CloseFilters,
  .rg-smart-select-panel[data-rg-layer-active="1"] .rg-smart-select-mobile-head button,
  [data-rg-layer-active="1"] [data-rg131-dialog-close],
  [data-rg-layer-active="1"] [data-rg131-date-close],
  [data-rg-layer-active="1"] [data-rgco1-date-close],
  [data-rg-layer-active="1"] [data-wallet-date-close],
  [data-rg-layer-active="1"] .rg-dialog-close,
  [data-rg-layer-active="1"] [data-rg-layer-cancel]
):focus,
html.rg-layer-pointer-input :where(
  [data-rg-layer-active="1"] [data-close-sheet],
  [data-rg-layer-active="1"] [data-close-video],
  [data-rg-layer-active="1"] [data-close-booking-policy],
  [data-rg-layer-active="1"] [data-close-date-picker],
  [data-rg-layer-active="1"] [data-close-receipt],
  [data-rg-layer-active="1"] [data-auth-recovery-close],
  [data-rg-layer-active="1"] [data-v129-close],
  [data-rg-layer-active="1"] .rg128-modal-close,
  #v130FilterPanel[data-rg-layer-active="1"] #v130CloseFilters,
  .rg-smart-select-panel[data-rg-layer-active="1"] .rg-smart-select-mobile-head button,
  [data-rg-layer-active="1"] .rg-dialog-close
):active {
  outline: 0 !important;
  outline-color: transparent !important;
  box-shadow: none !important;
}

/* Backdrop blur is expensive while a compositor layer is moving and causes
   the short blue/grey ghost visible in Chromium. Interactive backdrops use a
   stable translucent fill; only opacity changes during motion. */
.rg-overlay.open,
#v130FilterBackdrop.is-open,
#bookingPolicyModal.open .rg-policy-backdrop,
#persianDatePicker.open .rg-date-picker-backdrop,
#videoModal.open .rg-video-backdrop,
#receiptModal.open,
[data-v129-modal-backdrop],
.rg128-modal-overlay,
.rg-layer-confirm,
dialog[data-rg-layer-active="1"]::backdrop {
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

/* Shared overlay and v130 filter backdrop are staged together with the panel. */
.rg-overlay.rg-layer-preparing.open,
.rg-overlay.open[data-rg-layer-state="opening"],
#v130FilterBackdrop.rg-layer-preparing.is-open,
#v130FilterBackdrop.is-open[data-rg-layer-state="opening"] {
  opacity: 0 !important;
  visibility: visible !important;
  transition: none !important;
}

.rg-overlay.open[data-rg-layer-state="open"],
#v130FilterBackdrop.is-open[data-rg-layer-state="open"] {
  opacity: 1 !important;
  visibility: visible !important;
  transition: opacity var(--rg-layer-open-duration) var(--rg-layer-ease) !important;
}

.rg-overlay.open[data-rg-layer-state="closing"],
#v130FilterBackdrop.is-open[data-rg-layer-state="closing"] {
  opacity: 0 !important;
  visibility: visible !important;
  pointer-events: none !important;
  transition: opacity var(--rg-layer-close-duration) ease-in !important;
}

/* CW1.47 — opaque surface motion for generic sheets and drawers.
   Fading the whole white surface exposed the page beneath it and produced a
   visible ghost image. These surfaces now remain fully opaque and complete
   the entire off-canvas travel before the legacy class is removed. The
   overlay remains the only fading element. */

.rg-sheet:not(.open),
.rg-drawer:not(.open) {
  visibility: hidden;
  pointer-events: none;
}
.rg-sheet.rg-layer-preparing.open,
.rg-sheet.open[data-rg-layer-state="opening"] {
  opacity: 1 !important;
  transform: translate3d(-50%, 110%, 0) !important;
  visibility: visible !important;
  transition: none !important;
}

.rg-sheet.open[data-rg-layer-state="open"] {
  opacity: 1 !important;
  transform: translate3d(-50%, 0, 0) !important;
  visibility: visible !important;
  transition: transform var(--rg-layer-open-duration) var(--rg-layer-ease) !important;
}

.rg-sheet.open[data-rg-layer-state="closing"] {
  opacity: 1 !important;
  transform: translate3d(-50%, 110%, 0) !important;
  visibility: visible !important;
  pointer-events: none !important;
  transition: transform var(--rg-layer-close-duration) ease-in !important;
}

.rg-sheet[data-rg-layer-state="closing"]:not(.open) {
  opacity: 1 !important;
  transform: translate3d(-50%, 110%, 0) !important;
  visibility: hidden !important;
  transition: none !important;
}

.rg-drawer.rg-layer-preparing.open,
.rg-drawer.open[data-rg-layer-state="opening"] {
  opacity: 1 !important;
  transform: translate3d(105%, 0, 0) !important;
  visibility: visible !important;
  transition: none !important;
}

.rg-drawer.open[data-rg-layer-state="open"] {
  opacity: 1 !important;
  transform: translate3d(0, 0, 0) !important;
  visibility: visible !important;
  transition: transform var(--rg-layer-open-duration) var(--rg-layer-ease) !important;
}

.rg-drawer.open[data-rg-layer-state="closing"] {
  opacity: 1 !important;
  transform: translate3d(105%, 0, 0) !important;
  visibility: visible !important;
  pointer-events: none !important;
  transition: transform var(--rg-layer-close-duration) ease-in !important;
}

.rg-drawer[data-rg-layer-state="closing"]:not(.open) {
  opacity: 1 !important;
  transform: translate3d(105%, 0, 0) !important;
  visibility: hidden !important;
  transition: none !important;
}

/* The directory filter has old !important rules, so selectors intentionally
   include body and the id to win without touching public-v130.css. */
html body #v130FilterPanel.rg-layer-preparing.is-open,
html body #v130FilterPanel.is-open[data-rg-layer-state="opening"] {
  opacity: 0 !important;
  transform: translate3d(0, 28px, 0) !important;
  visibility: visible !important;
  pointer-events: none !important;
  transition: none !important;
}

html body #v130FilterPanel.is-open[data-rg-layer-state="open"] {
  opacity: 1 !important;
  transform: translate3d(0, 0, 0) !important;
  visibility: visible !important;
  pointer-events: auto !important;
  transition:
    transform var(--rg-layer-open-duration) var(--rg-layer-ease),
    opacity calc(var(--rg-layer-open-duration) - 30ms) ease-out !important;
}

html body #v130FilterPanel.is-open[data-rg-layer-state="closing"] {
  opacity: 0 !important;
  transform: translate3d(0, 22px, 0) !important;
  visibility: visible !important;
  pointer-events: none !important;
  transition:
    transform var(--rg-layer-close-duration) ease-in,
    opacity var(--rg-layer-close-duration) ease-in !important;
}

/* Portalled selects previously inherited transition:none!important and flashed
   at their final geometry before the coordinator saw them. The preparing class
   exists before .is-visible, and these selectors outrank the legacy rules. */
html body .rg-smart-select-panel.rg-layer-preparing.is-visible,
html body .rg-smart-select-panel.is-visible[data-rg-layer-state="opening"] {
  opacity: 0 !important;
  transform: translate3d(0, 8px, 0) scale(.985) !important;
  visibility: visible !important;
  pointer-events: none !important;
  transition: none !important;
}

html body .rg-smart-select-panel.is-visible[data-rg-layer-state="open"] {
  opacity: 1 !important;
  transform: translate3d(0, 0, 0) scale(1) !important;
  visibility: visible !important;
  pointer-events: auto !important;
  transition:
    transform var(--rg-layer-open-duration) var(--rg-layer-ease),
    opacity calc(var(--rg-layer-open-duration) - 30ms) ease-out !important;
}

html body .rg-smart-select-panel.is-visible[data-rg-layer-state="closing"] {
  opacity: 0 !important;
  transform: translate3d(0, 6px, 0) scale(.992) !important;
  visibility: visible !important;
  pointer-events: none !important;
  transition:
    transform var(--rg-layer-close-duration) ease-in,
    opacity var(--rg-layer-close-duration) ease-in !important;
}

/* Other modal adapters use the same prepaint/open/close states. */
:is(#bookingPolicyModal,#persianDatePicker,#receiptModal,#videoModal,#rgAuthRecovery,[data-v129-modal-backdrop],.rg128-modal-overlay).rg-layer-preparing,
:is(#bookingPolicyModal,#persianDatePicker,#receiptModal,#videoModal,#rgAuthRecovery,[data-v129-modal-backdrop],.rg128-modal-overlay)[data-rg-layer-state="opening"] {
  opacity: 0 !important;
  visibility: visible !important;
  transition: none !important;
}

:is(#bookingPolicyModal,#persianDatePicker,#receiptModal,#videoModal,#rgAuthRecovery,[data-v129-modal-backdrop],.rg128-modal-overlay)[data-rg-layer-state="open"] {
  opacity: 1 !important;
  visibility: visible !important;
  transition: opacity var(--rg-layer-open-duration) var(--rg-layer-ease) !important;
}

:is(#bookingPolicyModal,#persianDatePicker,#receiptModal,#videoModal,#rgAuthRecovery,[data-v129-modal-backdrop],.rg128-modal-overlay)[data-rg-layer-state="closing"] {
  opacity: 0 !important;
  visibility: visible !important;
  pointer-events: none !important;
  transition: opacity var(--rg-layer-close-duration) ease-in !important;
}

:is(#bookingPolicyModal,#persianDatePicker,#receiptModal,#videoModal,#rgAuthRecovery,[data-v129-modal-backdrop],.rg128-modal-overlay)[data-rg-layer-state="opening"] [data-rg-layer-surface="1"] {
  opacity: 0 !important;
  transform: translate3d(0, 12px, 0) scale(.99) !important;
  transition: none !important;
}

:is(#bookingPolicyModal,#persianDatePicker,#receiptModal,#videoModal,#rgAuthRecovery,[data-v129-modal-backdrop],.rg128-modal-overlay)[data-rg-layer-state="open"] [data-rg-layer-surface="1"] {
  opacity: 1 !important;
  transform: translate3d(0, 0, 0) scale(1) !important;
  transition:
    transform var(--rg-layer-open-duration) var(--rg-layer-ease),
    opacity calc(var(--rg-layer-open-duration) - 30ms) ease-out !important;
}

:is(#bookingPolicyModal,#persianDatePicker,#receiptModal,#videoModal,#rgAuthRecovery,[data-v129-modal-backdrop],.rg128-modal-overlay)[data-rg-layer-state="closing"] [data-rg-layer-surface="1"] {
  opacity: 0 !important;
  transform: translate3d(0, 9px, 0) scale(.994) !important;
  transition:
    transform var(--rg-layer-close-duration) ease-in,
    opacity var(--rg-layer-close-duration) ease-in !important;
}

/* Compositor promotion exists only while moving; keeping will-change forever
   consumes memory and can itself produce stale paint tiles on laptops. */
[data-rg-layer-state="opening"] [data-rg-layer-surface="1"],
[data-rg-layer-state="closing"] [data-rg-layer-surface="1"],
.rg-sheet[data-rg-layer-state="opening"],
.rg-sheet[data-rg-layer-state="closing"],
.rg-drawer[data-rg-layer-state="opening"],
.rg-drawer[data-rg-layer-state="closing"],
#v130FilterPanel[data-rg-layer-state="opening"],
#v130FilterPanel[data-rg-layer-state="closing"],
.rg-smart-select-panel[data-rg-layer-state="opening"],
.rg-smart-select-panel[data-rg-layer-state="closing"] {
  will-change: transform, opacity;
  backface-visibility: hidden;
}

[data-rg-layer-state="open"] [data-rg-layer-surface="1"],
.rg-sheet[data-rg-layer-state="open"],
.rg-drawer[data-rg-layer-state="open"],
#v130FilterPanel[data-rg-layer-state="open"],
.rg-smart-select-panel[data-rg-layer-state="open"] {
  will-change: auto !important;
}

@media (max-width: 760px) {
  body.rg-select-open::before,
  body.rg-filter-select-open::before {
    opacity: 0 !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    transition: none !important;
  }
  body.rg-layer-select-open.rg-select-open::before,
  body.rg-layer-select-open.rg-filter-select-open::before {
    opacity: 1 !important;
    transition: opacity var(--rg-layer-open-duration) var(--rg-layer-ease) !important;
  }
  body.rg-layer-select-closing.rg-select-open::before,
  body.rg-layer-select-closing.rg-filter-select-open::before {
    opacity: 0 !important;
    transition: opacity var(--rg-layer-close-duration) ease-in !important;
  }

  html body .rg-smart-select-panel.rg-layer-preparing.is-visible,
  html body .rg-smart-select-panel.is-visible[data-rg-layer-state="opening"] {
    transform: translate3d(0, 24px, 0) !important;
  }
  html body .rg-smart-select-panel.is-visible[data-rg-layer-state="open"] {
    transform: translate3d(0, 0, 0) !important;
  }
  html body .rg-smart-select-panel.is-visible[data-rg-layer-state="closing"] {
    transform: translate3d(0, 18px, 0) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .rg-layer-preparing,
  [data-rg-layer-state="opening"],
  [data-rg-layer-state="open"],
  [data-rg-layer-state="closing"] {
    transition-duration: 1ms !important;
  }
}


/* Specificity guard against legacy body-scoped !important blur rules. */
html body #v130FilterBackdrop.is-open,
html body .rg-smart-select-panel.is-visible,
html body .rg-overlay.open,
html body #bookingPolicyModal.open .rg-policy-backdrop,
html body #persianDatePicker.open .rg-date-picker-backdrop,
html body #videoModal.open .rg-video-backdrop,
html body #receiptModal.open,
html body [data-v129-modal-backdrop],
html body .rg128-modal-overlay,
html body .rg-layer-confirm {
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

/* The therapist filter becomes a bottom sheet through 840px. Its portalled
   select must use the same breakpoint; otherwise 761–840px devices receive a
   desktop popover inside a mobile sheet, with no visible close control. */
@media (min-width: 761px) and (max-width: 840px) {
  html body .rg-smart-select-panel--filter.is-visible {
    position: fixed !important;
    z-index: 2147483003 !important;
    inset: auto 0 0 0 !important;
    width: 100% !important;
    max-width: none !important;
    max-height: min(84dvh, 760px) !important;
    margin: 0 !important;
    border-radius: 24px 24px 0 0 !important;
    overflow: hidden !important;
    display: grid !important;
    grid-template-rows: auto auto minmax(0, 1fr) auto !important;
    padding: 0 0 env(safe-area-inset-bottom) !important;
  }
  html body .rg-smart-select-panel--filter .rg-smart-select-mobile-head {
    display: flex !important;
    grid-row: 1;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 16px 18px 12px;
    border-bottom: 1px solid #edf1f7;
    background: #fff;
  }
  html body .rg-smart-select-panel--filter .rg-smart-select-search { grid-row: 2; }
  html body .rg-smart-select-panel--filter .rg-smart-select-options { grid-row: 3; min-height: 120px !important; }
  html body .rg-smart-select-panel--filter .rg-smart-select-empty { grid-row: 4; }
  html body .rg-smart-select-panel--filter.rg-layer-preparing.is-visible,
  html body .rg-smart-select-panel--filter.is-visible[data-rg-layer-state="opening"] {
    transform: translate3d(0, 24px, 0) !important;
  }
  html body .rg-smart-select-panel--filter.is-visible[data-rg-layer-state="open"] {
    transform: translate3d(0, 0, 0) !important;
  }
  html body .rg-smart-select-panel--filter.is-visible[data-rg-layer-state="closing"] {
    transform: translate3d(0, 18px, 0) !important;
  }
}

@media (min-width: 761px) and (max-width: 840px) {
  html body .rg-smart-select-panel--filter .rg-smart-select-mobile-head button {
    width: 38px !important;
    min-width: 38px !important;
    height: 38px !important;
    min-height: 38px !important;
    padding: 0 !important;
    border: 1px solid #dbe4f3 !important;
    border-radius: 12px !important;
    background: #fff !important;
    color: #243657 !important;
    display: grid !important;
    place-items: center !important;
  }
}


/* CW1.49: global-search keyboard seam clamp repair.
 * The generic keyboard guard intentionally leaves 8px below normal sheets.
 * Global search is different: it is sized to visualViewport and overscans beneath
 * the docked keyboard. Clamping it to visualViewport - 8px exposed the page strip.
 * This exact selector removes the clamp only for that one full-viewport surface. */
html.rg-keyboard-open body.rg-c117 #globalSearchSheet.rg-c117-search-sheet[data-rg-layer-active="1"],
body.rg-c117.rg-keyboard-open #globalSearchSheet.rg-c117-search-sheet[data-rg-layer-active="1"] {
  max-height: none !important;
}
