@layer base {
  /* Hidden overflow still permits focus/scrollIntoView to scroll ancestors.
   * Keep the body out of document flow and make it non-scrollable, so an
   * off-screen portal cannot shift the app and expose a blank bottom strip.
   * Conversation panes retain their own overflow and scroll normally. */
  body {
    position: fixed;
    inset: 0;
    overflow: clip;
  }

  /* Radix RemoveScroll otherwise restores relative + hidden with important
   * declarations while a dialog is open. Keep the viewport lock during that
   * state, leaving its focus trap and internal dialog scrolling intact. */
  body[data-scroll-locked] {
    /* biome-ignore lint/complexity/noImportantStyles: overrides Radix's important body positioning during a dialog. */
    position: fixed !important;
    /* biome-ignore lint/complexity/noImportantStyles: overrides Radix's important overflow without disabling its focus trap. */
    overflow: clip !important;
  }
}
