/* ============================================
   Listagens — peças comuns (Shared/Listagem/ListagemPagina)
   ============================================
   Portado do gestao.css do marvin_blazor a 2026-10-06 (só o que as listagens usam: página,
   cartões, barra de filtros, etiquetas, separadores, chips, tipos de documento e PDF).
   Cores só pelas variáveis do MudBlazor, para o tema escuro funcionar sem mais nada.
   O cabeçalho (.ges-cab*) está no site.css: é o de todas as páginas (CabecalhoPagina). */

.ges-pagina { display: flex; flex-direction: column; gap: 16px; font-variant-numeric: tabular-nums; padding-bottom: 24px; }

.ges-cartao { background: var(--mud-palette-surface); border: 1px solid var(--mud-palette-lines-default); border-radius: 12px; min-width: 0; }
.ges-cartao-cab { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 14px 18px 8px; }
.ges-cartao-cab h3 { margin: 0; font-size: 1rem; font-weight: 700; flex-grow: 1; }
.ges-cartao-corpo { padding: 0 18px 14px; }
.ges-nota { font-size: .75rem; color: var(--mud-palette-text-secondary); }

/* --- Barra de filtros --- */
.ges-filtros { padding: 14px 18px; display: flex; flex-direction: column; gap: 12px; }
.ges-filtros-linha { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; }
.ges-campo { display: flex; flex-direction: column; gap: 4px; font-size: .75rem; font-weight: 600; color: var(--mud-palette-text-secondary); }
.ges-campo input.ges-input, .ges-campo select.ges-input { height: 36px; box-sizing: border-box; padding: 0 10px; border: 1px solid var(--mud-palette-lines-inputs); border-radius: 8px;
                             background: var(--mud-palette-surface); color: var(--mud-palette-text-primary); font: inherit; font-size: .85rem; font-weight: 400; }
.ges-espaco { flex-grow: 1; }
.ges-atalhos { display: flex; gap: 6px; flex-wrap: wrap; }
.ges-chip { height: 34px; padding: 0 12px; border: 1px solid var(--mud-palette-lines-inputs); background: var(--mud-palette-surface); border-radius: 999px;
            font: inherit; font-size: .82rem; color: var(--mud-palette-text-primary); cursor: pointer; white-space: nowrap; }
.ges-chip:hover { background: var(--mud-palette-action-default-hover); }
.ges-chip.ativo { border-color: var(--mud-palette-primary); color: var(--mud-palette-primary); font-weight: 700;
                  background: color-mix(in srgb, var(--mud-palette-primary) 12%, transparent); }
.ges-check { display: flex; align-items: center; gap: 8px; min-height: 36px; font-size: .85rem; color: var(--mud-palette-text-primary); cursor: pointer; }
.ges-check input { width: 18px; height: 18px; accent-color: var(--mud-palette-primary); }
.ges-ativos { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; border-top: 1px solid var(--mud-palette-lines-default); padding-top: 10px; }
.ges-botao-filtros { height: 36px; padding: 0 14px; display: inline-flex; align-items: center; gap: 6px; border: 1px dashed var(--mud-palette-text-disabled);
                     background: transparent; border-radius: var(--mud-default-borderradius); font: inherit; font-size: .875rem; font-weight: 600; color: var(--mud-palette-text-primary); cursor: pointer; }
/* o funil (FilterAlt) ocupa pouco da caixa: a 20px parecia menor que os ícones dos MudButton ao lado */
.ges-botao-filtros .mud-icon-root { font-size: 22px; }
.ges-botao-filtros.aberto { border-style: solid; border-color: var(--mud-palette-primary); color: var(--mud-palette-primary); }
.ges-etiqueta { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 4px 0 12px; border-radius: 999px; font-size: .82rem;
                background: var(--mud-palette-background-gray); color: var(--mud-palette-text-primary); }
.ges-etiqueta span { color: var(--mud-palette-text-secondary); }
.ges-etiqueta strong { font-weight: 600; }
.ges-etiqueta button { width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; border: 0; background: transparent;
                       border-radius: 999px; color: var(--mud-palette-text-secondary); cursor: pointer; }
.ges-etiqueta button:hover { background: var(--mud-palette-action-default-hover); }
.ges-painel-filtros { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px 16px; padding-top: 4px; }
.ges-painel-filtros .ges-campo .rz-dropdown { width: 100%; }

/* --- Controlo segmentado (separadores das listagens) --- */
.ges-seg-linha { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.ges-seg-rotulo { font-size: .82rem; font-weight: 600; color: var(--mud-palette-text-secondary); }
.ges-seg { display: inline-flex; flex-wrap: wrap; gap: 2px; padding: 3px; border-radius: 10px; background: var(--mud-palette-background-gray); }
.ges-seg button { height: 34px; padding: 0 14px; border: 0; background: transparent; border-radius: 8px; font: inherit; font-size: .82rem;
                  color: var(--mud-palette-text-primary); cursor: pointer; white-space: nowrap; }
.ges-seg button:hover { background: var(--mud-palette-action-default-hover); }
.ges-seg button[aria-pressed="true"] { background: var(--mud-palette-surface); color: var(--mud-palette-primary); font-weight: 700;
                                        box-shadow: 0 1px 2px rgba(15, 30, 45, .14); }
.ges-seg.pequeno button { height: 30px; padding: 0 10px; font-size: .78rem; }

/* --- Tipos de documento (Shared/Listagem/DocumentosIncluidos) --- */
.ges-docs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; max-height: 260px; overflow-y: auto; }
.ges-docs .ges-check strong { width: 34px; flex-shrink: 0; font-weight: 700; }
.ges-docs .ges-check { min-width: 0; }
.ges-docs .ges-check em { font-style: normal; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ges-list-docs { grid-column: 1 / -1; }
.ges-list-docs-cab { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ges-list-docs-cab .ges-chip { height: 28px; padding: 0 10px; font-size: .78rem; }
.ges-list-docs .ges-docs { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); max-height: 150px; font-weight: 400; }

/* --- Página de listagem: modelo/ordem e pré-visualização do PDF --- */
.ges-list-sep { margin-bottom: -8px; }
.ges-list-sep .ges-seg-linha { margin: 0 !important; }
.ges-list-topo { align-items: end; }
.ges-list-topo select.ges-input { min-width: 200px; }
.ges-list-topo .ges-list-acao { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.ges-list-topo .ges-botao-filtros { margin: 0; }
.ges-filtros .ges-painel-filtros { border-top: 1px solid var(--mud-palette-lines-default); margin-top: 12px; padding-top: 12px; }
/* A página tem a altura da janela menos a barra; o PDF fica com o espaço que sobra. */
.ges-pagina.ges-list { height: calc(100dvh - 80px); padding-bottom: 16px; box-sizing: border-box; }
.ges-list .ges-list-pdf { flex: 1 1 0; min-height: 320px; display: flex; flex-direction: column; overflow: hidden; }
.ges-list-pdf iframe { display: block; width: 100%; flex: 1 1 auto; min-height: 0; border: 0; border-top: 1px solid var(--mud-palette-lines-default); }

/* Botões de ícone junto a campos (procurar, ...): preenchidos e quadrados, da altura dos campos. */
.ges-pagina .mud-icon-button.mud-button-filled { width: 36px; height: 36px; min-width: 36px; padding: 0; border-radius: 6px; flex: none; }
.ges-pagina .mud-icon-button.mud-button-filled .mud-icon-root { font-size: 1.3rem; }

@media (max-width: 700px) {
    .ges-filtros { padding: 12px 14px; }
    .ges-docs { grid-template-columns: minmax(0, 1fr); }
    .ges-seg-linha { flex-direction: column; align-items: stretch; gap: 6px; }
    .ges-list-topo select.ges-input { min-width: 0; width: 100%; }
    .ges-list-topo .ges-list-acao { width: 100%; }
    .ges-pagina.ges-list { height: auto; }
    .ges-list .ges-list-pdf { flex: none; height: 75dvh; }
}

/* ============================================
   Resumos (Listagens → Gráficos: Shared/Listagem/ResumoListagem) — 2026-10-06
   ============================================
   Indicadores, matriz período × valores, corpo tabela + gráfico e painel lateral do detalhe,
   copiados do gestao.css do marvin_blazor (ges-kpi*, ges-mat*, ges-corpo, ges-lateral*, ges-det*). */
.ges-procura { display: flex; gap: 6px; align-items: center; }
.ges-rsm-acao { display: flex; align-items: center; gap: 10px; margin-left: auto; }
.ges-filtros .ges-list-docs-cab { padding-top: 4px; }

/* --- Indicadores (Shared/Listagem/GesKpi) --- */
.ges-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.ges-kpi { padding: 14px 18px; display: flex; flex-direction: column; gap: 4px; }
.ges-kpi-titulo { font-size: .75rem; font-weight: 600; color: var(--mud-palette-text-secondary); }
.ges-kpi-valor { font-size: 1.6rem; font-weight: 700; line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ges-kpi-sub { display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; font-size: .75rem; color: var(--mud-palette-text-secondary); }
.ges-sobe { color: var(--mud-palette-success-darken); font-weight: 700; }
.ges-desce { color: var(--mud-palette-error); font-weight: 700; }
.ges-neutro { color: var(--mud-palette-text-disabled); }

/* --- Controlo segmentado: select para ecrãs estreitos (Shared/Listagem/GesSegmentado ComSelect) --- */
.ges-seg-select { display: none; height: 44px; padding: 0 12px; border: 1px solid var(--mud-palette-lines-inputs); border-radius: 10px;
                  background: var(--mud-palette-surface); color: var(--mud-palette-text-primary); font: inherit; font-size: .9rem; font-weight: 600; }

/* --- Corpo: tabela + gráfico --- */
.ges-corpo { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 16px; align-items: start; }
.ges-coluna { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.ges-dir { text-align: right; white-space: nowrap; }
.ges-trunc { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ges-vazio { display: flex; align-items: center; justify-content: center; min-height: 220px; padding: 0 24px; text-align: center;
             color: var(--mud-palette-text-disabled); }
.ges-link { border: 0; background: none; padding: 0; margin-left: 6px; font: inherit; color: var(--mud-palette-primary); text-decoration: underline; cursor: pointer; }
.ges-link:disabled { color: inherit; text-decoration: none; cursor: default; }
.ges-link.ges-desce { color: var(--mud-palette-error); }

/* --- Matriz período × valores: primeira coluna fixa, resto com scroll horizontal --- */
.ges-mat { overflow-x: auto; border-top: 1px solid var(--mud-palette-lines-default); }
.ges-mat table { border-collapse: separate; border-spacing: 0; width: 100%; font-size: .82rem; font-variant-numeric: tabular-nums; }
.ges-mat th, .ges-mat td { padding: 7px 10px; text-align: right; white-space: nowrap; border-bottom: 1px solid var(--mud-palette-lines-default); }
.ges-mat th { font-size: .7rem; text-transform: uppercase; letter-spacing: .03em; color: var(--mud-palette-text-secondary); font-weight: 600; background: var(--mud-palette-surface); }
.ges-mat .ges-mat-nome { text-align: left; position: sticky; left: 0; z-index: 1; background: var(--mud-palette-surface); min-width: 180px; max-width: 260px; overflow: hidden; text-overflow: ellipsis; box-shadow: 1px 0 0 var(--mud-palette-lines-default); }
.ges-mat .ges-mat-ant { color: var(--mud-palette-text-secondary); }
.ges-mat .ges-mat-tot { font-weight: 700; }
.ges-mat tfoot td { font-weight: 600; background: var(--mud-palette-background-gray); }
.ges-mat tfoot .ges-mat-nome { background: var(--mud-palette-background-gray); }

/* --- Pré-visualização do PDF do resumo --- */
.ges-rsm-pdf { display: flex; flex-direction: column; overflow: hidden; }
.ges-rsm-pdf iframe { display: block; width: 100%; height: 75dvh; min-height: 320px; border: 0; border-top: 1px solid var(--mud-palette-lines-default); }

/* --- Painel lateral (Shared/Listagem/GesPainelLateral) e detalhe --- */
.ges-lateral-fundo { position: fixed; inset: 0; z-index: 1300; background: rgba(15, 25, 35, .35); }
.ges-lateral { position: fixed; top: 0; right: 0; bottom: 0; z-index: 1301; width: min(640px, 100vw); display: flex; flex-direction: column;
               background: var(--mud-palette-surface); color: var(--mud-palette-text-primary); box-shadow: -12px 0 32px rgba(15, 30, 45, .18);
               font-variant-numeric: tabular-nums; }
.ges-lateral-cab { display: flex; align-items: flex-start; gap: 12px; padding: 20px 22px 14px; border-bottom: 1px solid var(--mud-palette-lines-default); }
.ges-lateral-cab h3 { margin: 0; font-size: 1.3rem; font-weight: 700; }
.ges-lateral-corpo { flex-grow: 1; min-height: 0; display: flex; flex-direction: column; }
/* No resumo: data, documento, nome, valor. */
.ges-det-grelha { display: grid; grid-template-columns: 50px 132px minmax(0, 1fr) 110px; gap: 2px 10px; align-items: baseline; }
.ges-det-cab { padding: 8px 22px; border-bottom: 1px solid var(--mud-palette-lines-default);
               background: var(--mud-palette-background-gray); font-size: .68rem; font-weight: 700; text-transform: uppercase;
               letter-spacing: .04em; color: var(--mud-palette-text-secondary); }
.ges-det-lista { flex-grow: 1; min-height: 0; overflow-y: auto; padding: 0 22px; }
.ges-det-linha { padding: 9px 0; border-bottom: 1px solid var(--mud-palette-lines-default); font-size: .82rem; }
.ges-det-linha a { white-space: nowrap; font-weight: 600; color: var(--mud-palette-primary); text-decoration: none; }
.ges-det-linha a:hover { text-decoration: underline; }
.ges-lateral-rodape { display: flex; align-items: baseline; gap: 12px; padding: 12px 22px; border-top: 1px solid var(--mud-palette-lines-default);
                      background: var(--mud-palette-background-gray); font-weight: 700; font-size: .85rem; }

@media (max-width: 1280px) {
    .ges-corpo { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 960px) {
    .ges-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ges-seg.dimensoes { display: none; }
    .ges-seg-select { display: block; width: 100%; }
}
@media (max-width: 700px) {
    .ges-kpis { gap: 10px; }
    .ges-kpis > .ges-kpi:first-child, .ges-kpis > .ges-kpi:last-child { grid-column: 1 / -1; }
    .ges-kpi { padding: 12px 14px; }
    .ges-kpi-valor { font-size: 1.25rem; }
    .ges-rsm-acao { margin-left: 0; width: 100%; justify-content: space-between; }
    .ges-mat .ges-mat-nome { min-width: 110px; max-width: 150px; }
    .ges-mat th, .ges-mat td { padding: 6px 8px; }
    .ges-det-grelha { grid-template-columns: 50px minmax(0, 1fr) 100px; }
    .ges-det-grelha .ges-det-doc { display: none; }
    .ges-lateral-cab, .ges-det-lista, .ges-det-cab, .ges-lateral-rodape { padding-left: 14px; padding-right: 14px; }
}
