/* LUMINAE: keep the document itself non-scrollable; #page-scroll owns scrolling. */
html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  overflow: hidden;
  overscroll-behavior: none;
}

body {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  min-height: 0;
}

/*
  The half-pixel inset is intentional: on some mobile Chromium versions,
  a full-edge scrolling layer can still be treated as viewport scrolling,
  which collapses the browser controls. The inset separates this scroller
  from the exact viewport edges while keeping the difference imperceptible.
*/
#page-scroll {
  position: absolute;
  top: 0.5px;
  right: 0;
  bottom: 0.5px;
  left: 0;
  width: 100%;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-y: contain;
  touch-action: pan-y;
  scrollbar-gutter: auto;
}

#page-content {
  position: relative;
  min-height: 100%;
}
