/* Keep long desktop filters reachable when the sidebar is sticky/floating. */
.desktop-filter-wrapper.filter-scroll-ready {
  --filter-scroll-top-offset: 16px;
  --filter-scroll-bottom-offset: 16px;
  --filter-scroll-left: 0px;
  --filter-scroll-width: auto;
  --filter-scroll-height: calc(100vh - var(--filter-scroll-top-offset) - var(--filter-scroll-bottom-offset));
  position: relative;
  height: var(--filter-scroll-height);
  max-height: var(--filter-scroll-height);
  min-height: 0;
  overflow: visible;
  align-self: flex-start;
  z-index: 3;
}

.desktop-filter-wrapper.filter-scroll-ready > .module-filter {
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  height: 100%;
  max-height: 100%;
  min-height: 0;
  overflow: hidden;
}

.desktop-filter-wrapper.filter-scroll-fixed > .module-filter {
  position: fixed !important;
  top: var(--filter-scroll-top-offset) !important;
  left: var(--filter-scroll-left) !important;
  width: var(--filter-scroll-width) !important;
  height: var(--filter-scroll-height) !important;
  max-height: var(--filter-scroll-height) !important;
  z-index: 90;
}

.desktop-filter-wrapper.filter-scroll-ready > .module-filter > .module-title {
  flex: 0 0 auto;
}

.desktop-filter-wrapper.filter-scroll-ready > .module-filter > .module-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
}

.desktop-filter-wrapper.filter-scroll-ready > .module-filter > .module-body > .panel-group {
  flex-wrap: nowrap;
}

/* Low-specificity default; per-module section height settings load later. */
.desktop-filter-wrapper .panel-body {
  max-height: 360px;
  max-height: min(360px, 45vh);
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: auto;
}
