/* Outseta's default popup scrolls the full-screen backdrop. Keep the dialog
   inside the viewport and let only its content scroll, including Stripe. */
.o--Widget--popupBg:not(.o--Widget--closed) {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  overflow: hidden;
}

.o--Widget--popup:not(.o--Widget--closed) {
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  min-height: 0;
  max-height: calc(100vh - 32px);
  max-height: calc(100dvh - 32px);
  margin: 0;
  /* Reserve a fixed header so the close control never covers scrolled fields. */
  padding-top: 56px;
  overflow: hidden;
}

.o--Widget--popup > .o--Widget--widgetBody {
  min-height: 0;
  padding-top: 16px;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}
