html.modal-scroll-locked { overflow: hidden; scrollbar-gutter: stable; }
html.modal-scroll-locked > body {
  position: fixed;
  top: var(--modal-scroll-y, 0px);
  left: var(--modal-scroll-x, 0px);
  width: 100%;
  overflow: hidden;
}
/* Only actual scroll surfaces stop chaining. Clipped reward cards must let
   wheel/touch scrolling reach the collection body that contains them. */
dialog,
dialog :where(.notebook-fullscreen-body, .player-retention-table, .workshop-history-scroll,
  .workshop-edit, .record-detail-body, .chart-zoom-content, textarea) { overscroll-behavior: contain; }
