/* One viewport and one active content scroller in the browser workspace.
   Scoped to the mounted workspace so public pages, native views and print
   layouts retain their existing scrolling. */
@media screen {
  html:has(.browser-workspace-shell),
  body:has(.browser-workspace-shell) {
    height: 100dvh;
    min-height: 0;
    max-height: 100dvh;
    overflow: hidden;
    overflow: clip;
    overscroll-behavior: none;
  }

  body:has(.browser-workspace-shell) #root,
  body:has(.browser-workspace-shell) .page-transition-opacity {
    height: 100dvh;
    min-height: 0;
    max-height: 100dvh;
    overflow: hidden;
  }

  body:has(.browser-workspace-shell) .browser-workspace-shell {
    height: 100%;
    min-height: 0;
    max-height: 100%;
    overflow: hidden;
  }

  .browser-workspace-shell > header,
  .browser-workspace-shell > nav {
    flex-shrink: 0;
  }

  .browser-workspace-shell > .browser-workspace {
    flex: 1 1 0%;
    min-height: 0;
    overflow: hidden;
  }

  /* Chart and generated narrative share this primary content scroller. */
  .browser-workspace-shell .browser-workspace-panel[data-workspace-panel="chart"] {
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior-y: contain;
    -webkit-overflow-scrolling: touch;
  }

  /* These screens already own a dedicated list/conversation scroller.
     Their outer panel must not create an additional scroll container. */
  .browser-workspace-shell .browser-workspace-panel:is(
    [data-workspace-panel="chat"],
    [data-workspace-panel="myday"],
    [data-workspace-panel="library"]
  ) {
    overflow: hidden;
  }
}
