/**
 * FireSys — Full Viewport Layout (sem scroll do navegador)
 *
 * Hierarquia:
 *   .workspace-layout → .page-layout → header | filtros | table-container | sticky-action-bar
 */

/* ----- Bloqueio global de scroll ----- */

html.viewport-locked,
html.viewport-locked body {
    height: 100%;
    max-height: 100dvh;
    overflow: hidden;
}

html.viewport-locked body.app-shell-active,
html.viewport-locked body.workspace-embed-body {
    overflow: hidden;
}

/* ----- Workspace layout (área abaixo das tabs) ----- */

.workspace-layout {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* ----- Page layout (conteúdo da página) ----- */

.page-layout {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
    max-height: 100%;
    display: flex;
    flex-direction: column;
    gap: var(--page-section-gap);
    overflow: hidden;
}

.page-layout > .page-header,
.page-layout > .dashboard-header,
.page-layout > .workspace-flash-in-page,
.page-layout > .agenda-nav {
    flex-shrink: 0;
}

/* ----- Listagens ----- */

.page-layout--list > .card:not(.app-table-card) {
    flex-shrink: 0;
}

.page-layout--list > .app-table-card,
.page-layout > .card.app-table-card {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    margin-bottom: 0 !important;
}

.app-table-card > .card-body {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.app-table-card > .card-body:not(.p-0) > .table-responsive,
.app-table-card > .card-body:not(.p-0) > .table-container {
    flex: 1 1 auto;
    min-height: 0;
}

.app-table-card > .card-body.p-0 {
    padding: 0;
}

/* Grid rolável */
.table-container,
.app-table-card .table-responsive.table-container,
.page-layout .table-container {
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: auto;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
}

.app-table-card .card-body.has-table-pagination .table-container,
.app-table-card .card-body.has-table-pagination .table-responsive {
    flex: 1 1 auto;
    min-height: 0;
}

/* Paginação fixa abaixo do grid */
.app-table-card .card-body > nav[aria-label="Paginação"],
.app-table-card .table-pagination {
    flex-shrink: 0;
    padding: var(--card-padding-compact) var(--card-padding);
    border-top: 1px solid var(--border-color);
    background: var(--card-background);
    margin-top: 0;
}

.app-table-card .card-body > nav[aria-label="Paginação"] .pagination {
    margin-bottom: 0;
}

/* ----- Formulários ----- */

.page-layout--form > .form-container,
.page-layout > .card.form-container {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    margin-bottom: 0 !important;
}

.form-container > .card-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
}

/* ----- Formulários: largura total ----- */

.page-layout--form > .form-container,
.page-layout > .card.form-container {
    width: 100%;
    max-width: none;
}

/* Barra de ações: ver layout-standard.css (.action-bar) */

/* Form actions fora de card (delete confirm etc.) */
.page-layout > form .form-actions,
.page-layout > .card:not(.form-container) .form-actions {
    margin-left: 0;
    margin-right: 0;
    margin-bottom: 0;
}

/* ----- Dashboard ----- */

.page-layout--dashboard,
.page-layout:has(.dashboard-wrapper) {
    overflow: hidden;
}

.page-layout--dashboard .dashboard-wrapper,
.page-layout .dashboard-wrapper {
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
}

/* ----- Relatórios ----- */

.page-layout--report > .card:last-child,
.page-layout > .card.report-table-card {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.page-layout--report .report-scroll-region {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
}

/* ----- Detalhe / conteúdo genérico rolável ----- */

.page-layout--scroll > .filter-card,
.page-layout--scroll > .agenda-filtros-card {
    flex: 0 0 auto;
    min-height: auto;
    overflow: visible;
}

.page-layout--scroll > .card:not(.filter-card):not(.agenda-filtros-card),
.page-layout:not(.page-layout--list):not(.page-layout--form):not(.page-layout--dashboard) > .card:last-child:only-of-type {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

/* ----- Embed (iframe) ----- */

body.workspace-embed-body .workspace-layout {
    height: 100%;
}

body.workspace-embed-body .workspace-content-area.workspace-layout {
    min-height: 0 !important;
    overflow: hidden;
}

/* ----- Mobile ----- */


@media print {
    html.viewport-locked,
    html.viewport-locked body {
        height: auto;
        max-height: none;
        overflow: visible;
    }

    .workspace-layout,
    .page-layout,
    .table-container {
        overflow: visible !important;
        height: auto !important;
        max-height: none !important;
    }

    .sticky-action-bar {
        position: static;
    }
}
