.app { position: relative; z-index: var(--z-content); width: 100%; height: var(--visual-viewport-height); display: grid; grid-template-columns: var(--sidebar) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); overflow: hidden; }
.main { min-width: 0; min-height: 0; display: grid; grid-template-rows: var(--topbar) minmax(0, 1fr); }
.workspace { min-width: 0; min-height: 0; display: grid; grid-template-rows: minmax(0, 1fr) auto; overflow: hidden; position: relative; }
.chat-view { grid-row: 1; min-width: 0; min-height: 0; height: auto; overflow: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #303744 transparent; }
.chat-wrap { width: min(100%, calc(var(--chat) + 56px)); min-height: 100%; margin: 0 auto; padding: clamp(28px, 4vh, 48px) var(--content-gutter) 32px; display: flex; flex-direction: column; }
body.ui-modal-open { overflow: hidden; }
[data-ui-hydrated="false"] .task-pill,
[data-ui-hydrated="false"] .activity-banner,
[data-ui-hydrated="false"] .notification-dot { visibility: hidden; }

/* V6.4: freeze the workspace geometry while mobile navigation is open. */
body.sidebar-viewport-locked .app { height: var(--sidebar-frozen-height, var(--visual-viewport-height)); }
body.sidebar-viewport-locked .workspace, body.sidebar-viewport-locked .composer-shell { min-height: 0; }
body.sidebar-viewport-locked { position: fixed; inset: 0; width: 100%; height: var(--sidebar-frozen-height, var(--visual-viewport-height)); overflow: hidden; overscroll-behavior: none; }
body.sidebar-viewport-locked .main { min-height: 0; overflow: hidden; }
