/* Один scrollport и отдельная строка навигации. Desktop сохраняет прокрутку документа. */
.shell-viewport, .shell-scrollport { display: contents; }
@media (max-width: 1023px) {
    body.shell-root {
        position: fixed; top: var(--vvt, 0px); left: 0; width: 100%;
        height: var(--vvh, 100dvh); min-height: 0; padding-bottom: 0;
        display: flex; flex-direction: column; overflow: hidden;
    }
    .shell-root > .shell-viewport {
        display: flex; flex: 1 1 0%; flex-direction: column; min-height: 0; min-width: 0;
        overflow: hidden; contain: layout;
    }
    /* Неподвижный viewport держит fixed-карточки; прокручивается только его ребёнок. */
    .shell-viewport > .shell-scrollport {
        display: flex; flex: 1 1 0%; flex-direction: column; min-height: 0; min-width: 0;
        overflow: auto; overscroll-behavior-y: contain;
    }
    .shell-scrollport > .shell-header,
    .shell-scrollport > .navback,
    .shell-scrollport > .demo-db-banner { flex: 0 0 auto; }
    .shell-scrollport > .tab-panel { flex: 0 0 auto; }
    .shell-chat-active > .shell-viewport > .shell-scrollport,
    .shell-messages-dialog > .shell-viewport > .shell-scrollport,
    .shell-requests-active > .shell-viewport > .shell-scrollport { overflow: hidden; }
    body.shell-chat-active > .shell-viewport > .shell-scrollport > #tab-chat,
    body.shell-messages-dialog > .shell-viewport > .shell-scrollport > #tab-messages,
    body.shell-requests-active > .shell-viewport > .shell-scrollport > #tab-requests { flex: 1 1 0%; min-height: 0; }
}
