/* ============================================
   Menus de Gestão — peças comuns (Shared/Gestao)
   ============================================
   Cores só pelas variáveis do MudBlazor, para o tema escuro funcionar sem mais nada.
   Tudo com prefixo ges- porque o tailwind é carregado depois e reescreve botões. */

.ges-pagina { display: flex; flex-direction: column; gap: 16px; font-variant-numeric: tabular-nums; padding-bottom: 24px; }

/* Cabeçalho (.ges-cab*) está no site.css: é o de todas as páginas. */

.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%; }
.ges-procura { display: flex; gap: 6px; align-items: center; }

/* --- Indicadores --- */
.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 (Agrupar por) --- */
.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; }
.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: ranking + gráficos --- */
.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; }

/* --- Ranking --- */
.ges-rk-grelha { display: grid; grid-template-columns: 26px minmax(120px, 1fr) 84px 118px 52px 64px; gap: 0 12px; align-items: center; }
.ges-rk-cab { padding: 8px 18px; border-bottom: 1px solid var(--mud-palette-lines-default); font-size: .68rem; font-weight: 700;
              text-transform: uppercase; letter-spacing: .04em; color: var(--mud-palette-text-secondary); }
.ges-rk-lista { max-height: 620px; overflow-y: auto; padding: 0 18px; }
.ges-rk-linha { row-gap: 4px; padding: 8px 0; border-bottom: 1px solid var(--mud-palette-lines-default); font-size: .85rem; cursor: pointer; }
.ges-rk-linha:hover { background: var(--mud-palette-action-default-hover); }
.ges-rk-linha:focus-visible { outline: 2px solid var(--mud-palette-primary); outline-offset: -2px; }
.ges-rk-pos { text-align: right; font-size: .75rem; color: var(--mud-palette-text-disabled); }
.ges-rk-nome { font-weight: 600; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ges-rk-nome.indefinido { font-weight: 500; font-style: italic; color: var(--mud-palette-text-secondary); }
.ges-dir { text-align: right; white-space: nowrap; }
.ges-rk-qtd, .ges-rk-pct { color: var(--mud-palette-text-secondary); }
.ges-rk-val { font-weight: 700; }
.ges-rk-barra { grid-column: 2 / 5; height: 6px; border-radius: 3px; background: var(--mud-palette-lines-default); overflow: hidden; }
.ges-rk-barra i { display: block; height: 100%; border-radius: 3px; background: var(--mud-palette-primary); }
.ges-rk-barra i.neg { background: var(--mud-palette-error); }
.ges-rk-meta { display: none; }
.ges-rk-rodape { padding: 12px 18px; border-top: 1px solid var(--mud-palette-lines-default); background: var(--mud-palette-background-gray);
                 border-radius: 0 0 12px 12px; font-size: .85rem; font-weight: 700; }
.ges-procura-rk { display: flex; align-items: center; gap: 6px; height: 34px; padding: 0 10px; border: 1px solid var(--mud-palette-lines-inputs);
                  border-radius: 8px; color: var(--mud-palette-text-secondary); }
.ges-procura-rk input { border: 0; outline: none; background: transparent; font: inherit; font-size: .82rem; width: 150px; color: var(--mud-palette-text-primary); }
.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); }

/* --- Documentos incluídos --- */
.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; }

/* --- Painel lateral (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; }
.ges-mini-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; padding: 14px 22px; }
.ges-mini-kpis > div { background: var(--mud-palette-background-gray); border-radius: 10px; padding: 10px 12px; display: flex; flex-direction: column; gap: 2px; }
.ges-mini-kpis .ges-kpi-valor { font-size: 1.1rem; }
.ges-det-barra { display: flex; align-items: center; gap: 8px; padding: 0 22px 10px; }
.ges-det-grelha { display: grid; grid-template-columns: 50px 132px minmax(0, 1fr) 50px 100px; gap: 2px 10px; align-items: baseline; }
.ges-det-cab { padding: 8px 22px; border-top: 1px solid var(--mud-palette-lines-default); 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-det-sub { grid-column: 3 / 6; font-size: .75rem; color: var(--mud-palette-text-secondary); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ges-det-agr { display: grid; grid-template-columns: minmax(0, 1fr) 70px 110px; gap: 2px 10px; align-items: baseline; }
.ges-trunc { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.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; }

/* --- Ecrãs estreitos --- */
@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%; }
    .ges-seg-linha { flex-direction: column; align-items: stretch; gap: 6px; }
}
@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 12px; }
    /* dois KPIs lado a lado num telemóvel de 360px: ~130px para o valor — a fonte acompanha a largura
       para "1 234 567,89 €" caber sem reticências */
    .ges-kpi-valor { font-size: clamp(1rem, 4.6vw, 1.25rem); }
    .ges-rk-grelha { grid-template-columns: 22px minmax(0, 1fr) auto; }
    .ges-rk-cab { display: none; }
    .ges-rk-qtd, .ges-rk-pct, .ges-rk-var { display: none; }
    .ges-rk-barra { grid-column: 2 / 3; }
    .ges-rk-meta { display: block; text-align: right; font-size: .75rem; white-space: nowrap; }
    .ges-rk-lista { padding: 0 14px; max-height: none; }
    .ges-rk-rodape .ges-rk-qtd { display: none; }
    .ges-filtros { padding: 12px 14px; }
    .ges-docs { grid-template-columns: minmax(0, 1fr); }
    .ges-det-grelha { grid-template-columns: 50px minmax(0, 1fr) 90px; }
    .ges-det-grelha .ges-det-doc, .ges-det-grelha .ges-det-qtd { display: none; }
    .ges-det-sub { grid-column: 2 / 4; }
    /* painéis laterais: 3 mini-KPIs não cabem numa linha — o 1.º (o valor) ocupa a largura toda */
    .ges-mini-kpis { padding: 12px 14px; gap: 8px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ges-mini-kpis > div:first-child { grid-column: 1 / -1; }
    .ges-lateral-cab, .ges-det-barra, .ges-det-lista, .ges-det-cab, .ges-lateral-rodape { padding-left: 14px; padding-right: 14px; }
}

/* A linha do ranking é um <button> (teclado e leitores de ecrã): tirar-lhe o aspeto de botão. */
button.ges-rk-linha { width: 100%; border: 0; border-bottom: 1px solid var(--mud-palette-lines-default); background: transparent;
                      color: var(--mud-palette-text-primary); font: inherit; font-size: .85rem; text-align: left; margin: 0; }

/* Ranking sem coluna de quantidade (Tops de clientes, fornecedores, terceiros) */
.ges-rk-semqtd .ges-rk-grelha { grid-template-columns: 26px minmax(120px, 1fr) 118px 52px 64px; }
.ges-rk-semqtd .ges-rk-barra { grid-column: 2 / 4; }
.ges-rk-semvar .ges-rk-grelha { grid-template-columns: 26px minmax(120px, 1fr) 84px 118px 52px; }
.ges-rk-semvar.ges-rk-semqtd .ges-rk-grelha { grid-template-columns: 26px minmax(120px, 1fr) 118px 52px; }
.ges-rk-semvar .ges-rk-var { display: none; }
@media (max-width: 700px) { .ges-rk-semvar .ges-rk-grelha, .ges-rk-semvar.ges-rk-semqtd .ges-rk-grelha { grid-template-columns: 22px minmax(0, 1fr) auto; } }
.ges-rk-cod { font-weight: 500; font-size: .75rem; color: var(--mud-palette-text-secondary); margin-right: 8px; }
@media (max-width: 700px) {
    .ges-rk-semqtd .ges-rk-grelha { grid-template-columns: 22px minmax(0, 1fr) auto; }
    .ges-rk-semqtd .ges-rk-barra { grid-column: 2 / 3; }
}

/* --- Mapa comparativo (GesComparativo) --- */
.ges-cmp-grelha { display: grid; grid-template-columns: 26px minmax(140px, 1fr) 112px 112px 112px 60px; gap: 0 12px; align-items: center; }
.ges-cmp-barras { grid-column: 2 / 5; display: flex; flex-direction: column; gap: 2px; }
.ges-cmp-barras .ges-rk-barra { height: 4px; }
.ges-cmp-b2 i { background: var(--mud-palette-text-disabled) !important; }
.ges-cmp-v2 { color: var(--mud-palette-text-secondary); }
.ges-tag { display: inline-block; margin-left: 8px; padding: 1px 7px; border-radius: 999px; font-size: .68rem; font-weight: 700; vertical-align: 1px; }
.ges-tag-novo { color: var(--mud-palette-success-darken); background: color-mix(in srgb, var(--mud-palette-success) 16%, transparent); }
.ges-tag-perdido { color: var(--mud-palette-error); background: color-mix(in srgb, var(--mud-palette-error) 12%, transparent); }
@media (max-width: 700px) {
    .ges-cmp-grelha { grid-template-columns: 22px minmax(0, 1fr) auto; }
    .ges-cmp-grelha .ges-cmp-v2, .ges-cmp-grelha > .ges-dir:nth-child(5), .ges-cmp-grelha .ges-rk-var { display: none; }
    .ges-cmp-barras { grid-column: 2 / 3; }
}
.ges-det-cmp { display: grid; grid-template-columns: minmax(0, 1fr) 100px 100px 100px; gap: 2px 10px; align-items: baseline; }
@media (max-width: 700px) { .ges-det-cmp { grid-template-columns: minmax(0, 1fr) 90px 90px; } .ges-det-cmp > :nth-child(3) { display: none; } }
/* nome encolhe com reticências, a etiqueta (novo/perdido) fica sempre à vista */
.ges-cmp-nome { display: flex; align-items: baseline; min-width: 0; }
.ges-cmp-nome .ges-trunc { flex: 0 1 auto; }
.ges-cmp-nome .ges-rk-cod, .ges-cmp-nome .ges-tag { flex-shrink: 0; }

/* --- Recebimentos / Pagamentos: antiguidade dos saldos --- */
:root { --ges-esc-0: #7cc6ea; --ges-esc-1: #f0b43c; --ges-esc-2: #e68a3b; --ges-esc-3: #d1573b; --ges-esc-4: #a3312a; }
.ges-esc-0 { background: var(--ges-esc-0); } .ges-esc-1 { background: var(--ges-esc-1); } .ges-esc-2 { background: var(--ges-esc-2); }
.ges-esc-3 { background: var(--ges-esc-3); } .ges-esc-4 { background: var(--ges-esc-4); }
.ges-idade-barra { display: flex; height: 18px; border-radius: 6px; overflow: hidden; gap: 2px; background: var(--mud-palette-lines-default); }
.ges-idade-barra.mini { height: 8px; border-radius: 4px; gap: 1px; }
.ges-idade-escaloes { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.ges-idade-escaloes button { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; padding: 10px 12px; border: 1px solid var(--mud-palette-lines-default);
                             background: var(--mud-palette-surface); border-radius: 10px; font: inherit; color: var(--mud-palette-text-primary); text-align: left; cursor: pointer; min-width: 0; }
.ges-idade-escaloes button:hover { background: var(--mud-palette-action-default-hover); }
.ges-idade-escaloes button[aria-pressed="true"] { border: 2px solid var(--mud-palette-primary); padding: 9px 11px; background: color-mix(in srgb, var(--mud-palette-primary) 10%, transparent); }
.ges-idade-escaloes .ges-esc-rot { display: flex; align-items: center; gap: 6px; font-size: .75rem; color: var(--mud-palette-text-secondary); }
.ges-idade-escaloes .ges-esc-rot i { width: 10px; height: 10px; border-radius: 2px; display: inline-block; }
.ges-idade-escaloes strong { font-size: 1rem; white-space: nowrap; }
.ges-dias { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: .75rem; font-weight: 700; white-space: nowrap; }
.ges-dias.e0 { color: var(--mud-palette-text-secondary); font-weight: 600; padding-left: 0; }
.ges-dias.e1 { background: color-mix(in srgb, var(--ges-esc-1) 22%, transparent); color: #7a5a00; }
.ges-dias.e2 { background: color-mix(in srgb, var(--ges-esc-2) 22%, transparent); color: #8a4411; }
.ges-dias.e3 { background: color-mix(in srgb, var(--ges-esc-3) 20%, transparent); color: #8f2f1d; }
.ges-dias.e4 { background: color-mix(in srgb, var(--ges-esc-4) 20%, transparent); color: #7a1f18; }
.mud-theme-dark .ges-dias.e1, .mud-theme-dark .ges-dias.e2, .mud-theme-dark .ges-dias.e3, .mud-theme-dark .ges-dias.e4 { color: var(--mud-palette-text-primary); }

.ges-pend-grelha { display: grid; grid-template-columns: 32px minmax(0, 1fr) 90px 110px 170px 130px; gap: 0 14px; align-items: center; }
.ges-pend-ent { padding: 10px 18px; border-bottom: 1px solid var(--mud-palette-lines-default); font-size: .85rem; }
.ges-pend-ent.aberta { background: color-mix(in srgb, var(--mud-palette-primary) 5%, transparent); }
.ges-pend-doc { display: grid; grid-template-columns: 44px 150px 96px 96px 80px minmax(0, 1fr) 116px 116px 40px; gap: 0 12px; align-items: center;
                padding: 6px 18px 6px 58px; font-size: .82rem; border-bottom: 1px solid var(--mud-palette-lines-default); }
.ges-pend-doc.cab { font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--mud-palette-text-disabled); }
.ges-pend-plana { display: grid; grid-template-columns: 44px 70px minmax(0, 1fr) 150px 96px 96px 80px 116px 116px 40px; gap: 0 12px; align-items: center;
                  padding: 8px 18px; font-size: .82rem; border-bottom: 1px solid var(--mud-palette-lines-default); }
.ges-pend-plana.cab, .ges-pend-grelha.cab { font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--mud-palette-text-secondary);
                                            background: var(--mud-palette-background-gray); }
.ges-pend-plana.cab { padding: 8px 18px; }
.ges-pend-grelha.cab { padding: 8px 18px; border-bottom: 1px solid var(--mud-palette-lines-default); }
.ges-icones { display: flex; gap: 4px; color: var(--mud-palette-text-secondary); }
.ges-pend-nome { display: flex; align-items: baseline; justify-content: flex-start; gap: 8px; min-width: 0; border: 0; background: transparent; padding: 0; font: inherit;
                 color: var(--mud-palette-text-primary); text-align: left; cursor: pointer; }
.ges-pend-nome:hover strong { text-decoration: underline; }
.ges-pend-det { display: grid; grid-template-columns: 124px 76px 100px 70px minmax(0, 1fr) 36px; gap: 0 10px; align-items: center; padding: 8px 0;
                border-bottom: 1px solid var(--mud-palette-lines-default); font-size: .82rem; }
/* cabeçalho do painel: alinhado com a lista (.ges-det-lista tem 22px dos lados) */
.ges-det-cab.ges-pend-det { padding-left: 22px; padding-right: 22px; }
@media (max-width: 1100px) {
    .ges-idade-escaloes { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .ges-pend-doc { grid-template-columns: 44px 130px 90px 80px minmax(0, 1fr) 110px 40px; padding-left: 18px; }
    .ges-pend-doc > .ges-col-data { display: none; }
    .ges-pend-plana { grid-template-columns: 44px minmax(0, 1fr) 130px 80px 110px 40px; }
    .ges-pend-plana > .ges-col-cod, .ges-pend-plana > .ges-col-data, .ges-pend-plana > .ges-col-venc, .ges-pend-plana > .ges-col-total { display: none; }
    .ges-pend-doc > .ges-col-total { display: none; }
}
@media (max-width: 700px) {
    .ges-idade-escaloes { grid-template-columns: minmax(0, 1fr); gap: 6px; }
    .ges-idade-escaloes button { flex-direction: row; align-items: center; justify-content: space-between; padding: 8px 12px; }
    .ges-idade-escaloes button > span:last-child { display: none; }
    .ges-pend-grelha { grid-template-columns: 28px minmax(0, 1fr) auto; }
    .ges-pend-grelha > .ges-col-docs, .ges-pend-grelha > .ges-col-atraso, .ges-pend-grelha > .ges-col-barra { display: none; }
    .ges-pend-doc { grid-template-columns: minmax(0, 1fr) 70px 100px 36px; padding-left: 14px; }
    .ges-pend-doc > .ges-icones, .ges-pend-doc > .ges-col-venc, .ges-pend-doc > .ges-col-vazio { display: none; }
    .ges-pend-doc.cab { display: none; }
    .ges-pend-plana { grid-template-columns: minmax(0, 1fr) 70px 100px 36px; }
    .ges-pend-plana > .ges-icones, .ges-pend-plana > .ges-col-doc { display: none; }
    /* painel lateral: sem Data nem Vencimento (o atraso já diz o essencial) */
    .ges-pend-det { grid-template-columns: minmax(0, 1fr) 70px 100px 36px; }
    .ges-det-cab.ges-pend-det { padding-left: 14px; padding-right: 14px; }
    .ges-pend-det > :nth-child(2), .ges-pend-det > :nth-child(3) { display: none; }
}

/* --- Consignações --- */
.ges-csg-grelha { display: grid; grid-template-columns: 32px minmax(0, 1fr) 80px 110px 110px 130px; gap: 0 14px; align-items: center; }
.ges-csg-grelha.cab { padding: 8px 18px; border-bottom: 1px solid var(--mud-palette-lines-default); font-size: .68rem; font-weight: 700; text-transform: uppercase;
                      letter-spacing: .04em; color: var(--mud-palette-text-secondary); background: var(--mud-palette-background-gray); }
.ges-csg-lin { display: grid; grid-template-columns: 130px 70px minmax(0, 1fr) 80px 80px 90px 70px; gap: 0 12px; align-items: center;
               padding: 7px 18px 7px 58px; font-size: .82rem; border-bottom: 1px solid var(--mud-palette-lines-default); }
.ges-csg-lin.plana { padding-left: 18px; }
.ges-csg-lin.cab { font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--mud-palette-text-disabled); }
.ges-csg-lin.cab.plana { color: var(--mud-palette-text-secondary); background: var(--mud-palette-background-gray); }
@media (max-width: 700px) {
    .ges-csg-grelha { grid-template-columns: 28px minmax(0, 1fr) auto; }
    .ges-csg-grelha > .ges-col-docs, .ges-csg-grelha > .ges-col-atraso, .ges-csg-grelha > .ges-col-qtd { display: none; }
    .ges-csg-lin { grid-template-columns: minmax(0, 1fr) 70px 60px; padding-left: 14px; }
    .ges-csg-lin > :nth-child(2), .ges-csg-lin > :nth-child(3), .ges-csg-lin > :nth-child(4), .ges-csg-lin > :nth-child(5) { display: none; }
}

/* Inventário de Caixa (GesCxa): 4 cartões Vendas/Recebimentos/Compras/Pagamentos por modo de pagamento */
.ges-cxa-grelha { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }
.ges-cxa-lista { display: flex; flex-direction: column; padding: 4px 0; }
.ges-cxa-linha { display: grid; grid-template-columns: minmax(0, 1fr) 70px 120px; gap: 4px 10px; align-items: baseline; padding: 9px 18px 8px;
                 border: 0; background: none; text-align: left; font: inherit; color: inherit; cursor: pointer; border-top: 1px solid var(--mud-palette-lines-default); }
.ges-cxa-linha:first-child { border-top: 0; }
.ges-cxa-linha:hover, .ges-cxa-linha:focus-visible { background: var(--mud-palette-action-default-hover); outline: none; }
.ges-cxa-linha .ges-rk-barra { grid-column: 1 / -1; }
.ges-cxa-sem { font-style: italic; color: var(--mud-palette-warning-darken, var(--mud-palette-warning)); }
.ges-cxa-total { display: flex; justify-content: space-between; padding: 10px 18px; font-weight: 700; background: var(--mud-palette-background-gray); border-radius: 0 0 12px 12px; }
.ges-cxa-sinal { margin-left: auto; font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; padding: 2px 8px; border-radius: 10px; }
.ges-cxa-sinal.entrada { color: var(--mud-palette-success); background: rgba(46, 160, 67, .1); }
.ges-cxa-sinal.saida { color: var(--mud-palette-error); background: rgba(220, 53, 69, .1); }
.ges-aviso { display: flex; gap: 10px; align-items: flex-start; padding: 10px 16px; border-radius: 10px; font-size: .85rem;
             background: rgba(255, 152, 0, .1); color: var(--mud-palette-text-primary); border: 1px solid rgba(255, 152, 0, .35); }
.ges-aviso .mud-icon-root { color: var(--mud-palette-warning); margin-top: 1px; }
@media (max-width: 1100px) { .ges-cxa-grelha { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 700px) { .ges-cxa-linha { grid-template-columns: minmax(0, 1fr) 110px; padding: 9px 14px 8px; } .ges-cxa-linha > .ges-nota { display: none; } .ges-cxa-total { padding: 10px 14px; } }

/* Previsão de Tesouraria (GesTes): tabela semana a semana */
.ges-tes-grelha { display: grid; grid-template-columns: minmax(0, 1.6fr) repeat(5, minmax(0, 1fr)); gap: 2px 10px; align-items: baseline; padding: 8px 18px; }
.ges-tes-linha { width: 100%; border: 0; background: none; text-align: left; font: inherit; color: inherit; cursor: pointer; border-top: 1px solid var(--mud-palette-lines-default); font-variant-numeric: tabular-nums; }
.ges-tes-linha:hover, .ges-tes-linha:focus-visible { background: var(--mud-palette-action-default-hover); outline: none; }
.ges-tes-saldo-ini { color: var(--mud-palette-text-secondary); font-size: .85rem; font-variant-numeric: tabular-nums; }
.ges-tes-atraso { margin-left: 6px; font-size: .7rem; padding: 1px 6px; border-radius: 8px; background: rgba(255, 152, 0, .15); color: var(--mud-palette-warning); white-space: nowrap; }
@media (max-width: 1400px) { .ges-tes-liq { display: none; } .ges-tes-grelha { grid-template-columns: minmax(0, 1.6fr) repeat(4, minmax(0, 1fr)); } }
@media (max-width: 700px) { .ges-tes-cst { display: none; } .ges-tes-grelha { grid-template-columns: minmax(0, 1.2fr) repeat(3, minmax(0, 1fr)); padding: 8px 14px; font-size: .82rem; } }
/* Detalhe com data dd/MM/yy e sem coluna de quantidade (Tesouraria) */
.ges-det-grelha.ges-det-dl { grid-template-columns: 62px 132px minmax(0, 1fr) 0 100px; }
@media (max-width: 700px) { .ges-det-grelha.ges-det-dl { grid-template-columns: 62px minmax(0, 1fr) 90px; } }

/* Matriz rubrica × mês (GesAno): 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-linha { cursor: pointer; }
.ges-mat-linha:hover td, .ges-mat-linha:focus-visible td { background: var(--mud-palette-action-default-hover); outline: none; }
.ges-mat-linha:hover .ges-mat-nome { background: var(--mud-palette-background-gray); }
.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); }
.ges-mat tfoot tr.ges-mat-res td { font-weight: 700; }
@media (max-width: 700px) { .ges-mat .ges-mat-nome { min-width: 130px; max-width: 150px; } .ges-mat th, .ges-mat td { padding: 6px 8px; } }

/* Margens de Vendas (GesMar): tabela ordenável por artigo */
.ges-mar-grelha { display: grid; grid-template-columns: minmax(0, 1fr) 80px 110px 110px 110px 70px; gap: 0 12px; align-items: baseline; padding: 0 18px; font-variant-numeric: tabular-nums; }
.ges-mar-cab { border-top: 1px solid var(--mud-palette-lines-default); border-bottom: 1px solid var(--mud-palette-lines-default); }
.ges-mar-cab > button { width: 100%; border: 0; background: none; font: inherit; font-size: .7rem; text-transform: uppercase; letter-spacing: .03em; color: var(--mud-palette-text-secondary); font-weight: 600; padding: 9px 0; cursor: pointer; text-align: left; }
.ges-mar-cab > button.ges-dir { text-align: right; }
.ges-mar-cab > button:hover, .ges-mar-cab > button[aria-sort="ascending"], .ges-mar-cab > button[aria-sort="descending"] { color: var(--mud-palette-primary); }
.ges-mar-lista { max-height: 560px; overflow-y: auto; }
.ges-mar-linha { width: 100%; border: 0; background: none; text-align: left; font: inherit; color: inherit; cursor: pointer; padding-top: 12px; padding-bottom: 12px; border-bottom: 1px solid var(--mud-palette-lines-default); font-size: .85rem; }
.ges-mar-linha:hover, .ges-mar-linha:focus-visible { background: var(--mud-palette-action-default-hover); outline: none; }
.ges-mar-total { padding-top: 11px; padding-bottom: 11px; font-weight: 700; background: var(--mud-palette-background-gray); font-size: .85rem; }
.ges-link { border: 0; background: none; padding: 0; margin-left: 6px; font: inherit; color: var(--mud-palette-primary); text-decoration: underline; cursor: pointer; }
@media (max-width: 1100px) { .ges-mar-grelha { grid-template-columns: minmax(0, 1fr) 100px 100px 60px; } .ges-mar-qtd, .ges-mar-cst { display: none; } }
@media (max-width: 700px) { .ges-mar-grelha { grid-template-columns: minmax(0, 1fr) 90px 56px; padding: 0 14px; } .ges-mar-fat { display: none; } }

/* Rentabilidade (GesRent): cabeçalhos ordenáveis na matriz */
.ges-rent-ord { border: 0; background: none; padding: 0; font: inherit; color: inherit; text-transform: inherit; letter-spacing: inherit; cursor: pointer; width: 100%; text-align: inherit; }
.ges-mat th[aria-sort="ascending"], .ges-mat th[aria-sort="descending"], .ges-rent-ord:hover { color: var(--mud-palette-primary); }
.ges-rent .ges-mat-nome strong { font-weight: 600; }
.ges-mat th .ges-rent-ord { display: block; text-align: right; }
.ges-mat th.ges-mat-nome .ges-rent-ord { text-align: left; }
.ges-aviso-txt { color: var(--mud-palette-warning); font-weight: 600; }
.ges-inv-custos { display: grid; grid-template-columns: auto 1fr; gap: 6px 16px; font-size: .88rem; } .ges-inv-custos strong { text-align: right; font-variant-numeric: tabular-nums; }
/* GesInv/GesConta/GesRot/GesRent/GesPendentes: cartão dos artigos ocupa a altura que sobra da janela e a tabela faz scroll por dentro (cabeçalho e totais fixos) */
.ges-list .ges-art-scroll { flex: 1 1 0; min-height: 320px; display: flex; flex-direction: column; overflow: hidden; }
.ges-art-scroll > .ges-mat { flex: 1 1 0; min-height: 0; overflow: auto; }
/* listas em grelha de divs (GesPendentes): o cabeçalho .cab vai dentro da área de scroll e fica fixo */
.ges-art-scroll > .ges-scroll-corpo { flex: 1 1 0; min-height: 0; overflow: auto; }
.ges-scroll-corpo > .cab { position: sticky; top: 0; z-index: 2; }
.ges-art-scroll .ges-mat thead th, .ges-res-scroll .ges-mat thead th { position: sticky; top: 0; z-index: 2; }
.ges-art-scroll .ges-mat thead th.ges-mat-nome, .ges-res-scroll .ges-mat thead th.ges-mat-nome { z-index: 3; }
.ges-art-scroll .ges-mat tfoot td, .ges-res-scroll .ges-mat tfoot td { position: sticky; bottom: 0; z-index: 2; box-shadow: 0 -1px 0 var(--mud-palette-lines-default); }
.ges-art-scroll .ges-mat tfoot td.ges-mat-nome, .ges-res-scroll .ges-mat tfoot td.ges-mat-nome { z-index: 3; box-shadow: 1px 0 0 var(--mud-palette-lines-default), 0 -1px 0 var(--mud-palette-lines-default); }
/* GesCst: detalhe com botão "mudar rubrica" (coluna própria na lista de documentos e na de entidades) */
.ges-det-grelha.ges-det-dl.ges-det-rub { grid-template-columns: 62px 132px minmax(0, 1fr) 28px 100px; }
.ges-det-agr.ges-det-rub { grid-template-columns: minmax(0, 1fr) 70px 110px 28px; }
.ges-det-edita { border: 0; background: none; padding: 2px; border-radius: 6px; cursor: pointer; color: var(--mud-palette-text-secondary); line-height: 0; justify-self: center; }
.ges-det-edita:hover, .ges-det-edita:focus-visible { color: var(--mud-palette-primary); background: var(--mud-palette-action-default-hover); }
@media (max-width: 700px) { .ges-det-grelha.ges-det-dl.ges-det-rub { grid-template-columns: 62px minmax(0, 1fr) 28px 90px; } .ges-det-rub .ges-det-sub { grid-column: 2 / -1; } }
/* GesCstRubricas: cartão das rubricas não estica; as propostas aparecem como fichas editáveis */
.ges-rub-lista { flex: none; }
.ges-rub-chips { display: flex; flex-wrap: wrap; gap: 8px; max-height: 180px; overflow: auto; }
.ges-rub-chip { display: flex; align-items: center; gap: 6px; padding: 4px 8px; border: 1px solid var(--mud-palette-lines-default); border-radius: 8px; }
.ges-rub-chip.off { opacity: .55; }
/* Resumo por armazém: não cresce além de ~5 armazéns (cabeçalho + 5 linhas + total); o resto faz scroll por dentro */
.ges-res-scroll { flex: none; }
.ges-res-scroll > .ges-mat { max-height: 240px; overflow: auto; }
@media (max-width: 700px) { .ges-list .ges-art-scroll { flex: none; min-height: 0; } .ges-art-scroll > .ges-mat, .ges-art-scroll > .ges-scroll-corpo { flex: none; height: 70dvh; min-height: 300px; } }

/* Balanço (GesBal): demonstração de resultados por blocos + grelha de indicadores */
.ges-bal .ges-bal-sec td { font-weight: 700; background: var(--mud-palette-background-gray); text-transform: uppercase; font-size: .72rem; letter-spacing: .04em; }
.ges-bal .ges-bal-sub td { font-weight: 700; border-bottom-width: 2px; }
.ges-bal .ges-bal-res td { font-weight: 800; font-size: .95rem; }
.ges-ind-grelha { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(340px, 100%), 1fr)); gap: 16px; }
.ges-ind { padding: 14px 16px; }
.ges-ind h3 { margin: 0 0 10px; font-size: .95rem; font-weight: 700; }
.ges-ind dl { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 8px 14px; margin: 0; font-size: .86rem; align-items: start; }
.ges-ind dt { color: var(--mud-palette-text-secondary); }
.ges-ind dd { margin: 0; text-align: right; font-weight: 600; font-variant-numeric: tabular-nums; display: flex; flex-direction: column; align-items: flex-end; min-width: 0; line-height: 1.25; }
.ges-ind dd .ges-trunc { max-width: 100%; }
.ges-ind dd small { font-weight: 400; font-size: .74rem; color: var(--mud-palette-text-secondary); white-space: nowrap; }
.ges-ind-top { margin-top: 12px; border-top: 1px solid var(--mud-palette-lines-default); padding-top: 8px; }
.ges-ind-top-tit { display: block; font-size: .7rem; text-transform: uppercase; letter-spacing: .03em; color: var(--mud-palette-text-secondary); font-weight: 600; margin-bottom: 4px; }
.ges-ind-top-lin { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 10px; font-size: .82rem; padding: 3px 0; font-variant-numeric: tabular-nums; }
.ges-ind-top-lin .ges-rk-barra { grid-column: 1 / -1; height: 4px; }

/* Listagens por modelo (Shared/Listagem/ListagemPagina): 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; }
.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); }
/* Telemóvel deitado: pouca altura — a listagem cresce com o conteúdo em vez de caber na janela */
@media (max-height: 500px) and (min-width: 701px) {
    .ges-pagina.ges-list { height: auto; }
    .ges-list .ges-list-pdf { flex: none; height: 85dvh; }
    .ges-list .ges-art-scroll { flex: none; min-height: 0; }
    .ges-art-scroll > .ges-mat, .ges-art-scroll > .ges-scroll-corpo { flex: none; height: 85dvh; }
}
@media (max-width: 700px) { .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; } }
/* Tipos de documento das listagens (Shared/Listagem/DocumentosIncluidos) */
.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; }

/* Botões de ícone junto a campos (procurar, notas, gerar referência...): preenchidos e quadrados,
   da altura dos campos (36px), em todas as páginas da Gestão/Listagens (.ges-pagina) e nos editores
   de Movimentos (.mov-pagina / .mov-pagina-m, ver movimentos.css). As barras de ferramentas usam
   botões sem fundo, que esta regra não apanha. */
.ges-pagina .mud-icon-button.mud-button-filled,
.mov-pagina .mud-icon-button.mud-button-filled,
.mov-pagina-m .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,
.mov-pagina .mud-icon-button.mud-button-filled .mud-icon-root,
.mov-pagina-m .mud-icon-button.mud-button-filled .mud-icon-root { font-size: 1.3rem; }
