diff --git a/apps/portal-shell/src/styles.css b/apps/portal-shell/src/styles.css index 9713bed..7744749 100644 --- a/apps/portal-shell/src/styles.css +++ b/apps/portal-shell/src/styles.css @@ -20,3 +20,18 @@ /* Brand palette tokens — shared with `portal-admin` once it ships. */ @import '../../../libs/shared/tokens/src/brand-tokens.css'; + +/* + * The shell is a "fills the viewport, never scrolls the body" layout: + * is locked at height: 100vh, and
owns its own + * overflow-y. If anything inside the shell ever pushes content past + * the viewport (a wide chart, a flex sizing bug, a third-party + * iframe), we'd rather clip than show a phantom body scrollbar plus + * the empty space below the footer that comes with it. The element- + * level overflow on
still produces a real, scrollable region + * for content that overflows by design. Same shield as portal-admin. + */ +html, +body { + overflow-y: hidden; +}