/*
  NormaOne — Grades responsivas do Dashboard (ETAPA 4H.36)

  Problema corrigido: as seções do Dashboard (Home.razor) usavam MudGrid/MudItem com breakpoints
  xs/sm/md do MudBlazor, que reagem à largura TOTAL da viewport (media query no navegador) — nunca à
  largura real disponível depois de descontar a sidebar (212px aberta / 64px recolhida). Numa
  viewport de 1366px, por exemplo, o MudBlazor já considera a tela "grande" (tier md/lg) mesmo que o
  conteúdo real, depois da sidebar, tenha só ~1114px — o resultado observado era compressão de
  colunas/linhas tentando caber num espaço que o próprio sistema de breakpoints nunca soube que
  era menor do que a tela inteira.

  Correção: as 4 seções em grade do Dashboard (Resumo Executivo, Ações Necessárias, indicadores da
  Central de Vencimentos, cards inferiores) passaram a usar CSS Grid puro, com colunas quebrando por
  CONTAINER QUERY (@container), ancorada em ".app-content-container" (ver MainLayout.razor) — o
  elemento cujo width JÁ é a viewport menos a sidebar (margin-left aplicado em sidebar.css). Container
  queries reagem à largura REAL desse elemento, não à da janela — inclusive quando a sidebar
  abre/fecha (o conteúdo fica mais largo ao recolher, mesmo com a viewport inalterada), o que uma
  media query de viewport nunca conseguiria captar.

  Os dois limiares abaixo (999px/599px de largura de CONTEÚDO, não de tela) foram calculados a partir
  das resoluções de referência pedidas, descontando sidebar aberta (212px) + padding do container
  (2×20px): 1920→~1668px de conteúdo, 1600→~1348px, 1366→~1114px, 1280→~1028px — todas essas ficam
  acima de 999px, então mantêm o número de colunas cheio (só o gap encolhe moderadamente); abaixo de
  ~1252px de viewport (tablet/janela estreita) é que o conteúdo real cai abaixo de 999px e as colunas
  quebram progressivamente.
*/

.app-content-container {
    container-type: inline-size;
    container-name: app-content;
}

.dash-grid-4,
.dash-grid-6,
.dash-grid-3 {
    display: grid;
    gap: 16px;
    min-width: 0;
    box-sizing: border-box;
}

.dash-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.dash-grid-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.dash-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; }

.dash-card {
    min-width: 0;
    box-sizing: border-box;
}

/* "Desktop médio" (conteúdo real ~1366–1599px de viewport): mesmas colunas, só um respiro menor
   entre elas — nunca compactação de fonte/padding interno dos cards. */
@container app-content (max-width: 1299px) {
    .dash-grid-4,
    .dash-grid-6,
    .dash-grid-3 {
        gap: 10px;
    }
}

/* Abaixo disso o conteúdo real já não cabe com colunas legíveis — quebra progressiva do NÚMERO de
   colunas (nunca fonte/scale/overflow-x escondendo conteúdo). */
@container app-content (max-width: 999px) {
    .dash-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .dash-grid-6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .dash-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@container app-content (max-width: 599px) {
    .dash-grid-4,
    .dash-grid-3 {
        grid-template-columns: 1fr;
    }

    .dash-grid-6 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/*
  ETAPA 4H.37 — os 3 cards inferiores (Próximos Vencimentos / Situação dos Colaboradores / Resumo
  por Módulo) viraram RESUMOS compactos (não mais tabela/lista completa dentro do Dashboard) —
  ".resumo-card" é o padrão visual único e compartilhado pelos três (mesma borda/raio/sombra/padding,
  pedido explícito do usuário), com header (título + link "Ver todos", quando aplicável), corpo
  flexível e um footer sempre fixado embaixo (margin-top:auto) para os três ficarem visualmente
  alinhados mesmo quando o conteúdo interno varia um pouco de altura entre eles.
*/
.resumo-card {
    background: #FFFFFF;
    border: 1px solid #E5E7EB;
    border-radius: 12px;
    box-shadow: 0 1px 3px rgba(16, 24, 40, 0.06);
    padding: 16px;
    height: 100%;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.resumo-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 8px;
    min-width: 0;
}

.resumo-card-titulo {
    color: #1E3A5F;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}

.resumo-card-ver-todos {
    font-size: 12px;
    white-space: nowrap;
    flex-shrink: 0;
}

.resumo-card-corpo {
    flex: 1 1 auto;
    min-width: 0;
}

.resumo-card-footer {
    margin-top: auto;
    padding-top: 12px;
    text-align: center;
}

/* Card "Próximos vencimentos" — linha compacta por item (ícone + avatar clicável + título/colaborador
   + data/status), no lugar da antiga tabela completa. */
.resumo-vencimento-linha {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 0;
    border-bottom: 1px solid #F1F5F9;
    min-width: 0;
}

.resumo-vencimento-linha:last-child {
    border-bottom: none;
}

.resumo-avatar {
    position: relative;
    width: 32px;
    height: 32px;
    flex-shrink: 0;
    display: block;
    border-radius: 50%;
}

.resumo-vencimento-texto {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.resumo-vencimento-titulo {
    font-size: 13px;
    font-weight: 600;
    color: #1F2937;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.resumo-vencimento-colaborador {
    font-size: 12px;
    color: #6B7280;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.resumo-vencimento-lateral {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
    flex-shrink: 0;
}

.resumo-vencimento-data {
    font-size: 11px;
    color: #6B7280;
    white-space: nowrap;
}

.resumo-status-chip {
    font-size: 10px;
    font-weight: 700;
    color: #fff;
    padding: 2px 8px;
    border-radius: 999px;
    white-space: nowrap;
}

/* Card "Situação dos colaboradores" — donut via CSS puro (conic-gradient, ver DonutSituacaoStyle em
   Home.razor), sem depender de nenhuma lib/API de gráfico para uma peça tão pequena. */
.resumo-donut-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 4px 0 14px;
}

.resumo-donut {
    position: relative;
    width: 104px;
    height: 104px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.resumo-donut-centro {
    width: 68px;
    height: 68px;
    border-radius: 50%;
    background: #FFFFFF;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.resumo-donut-total {
    font-size: 20px;
    font-weight: 700;
    color: #1E3A5F;
    line-height: 1.1;
}

.resumo-donut-total-label {
    font-size: 10px;
    color: #6B7280;
    text-transform: uppercase;
}

.resumo-legenda-linha {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    font-size: 12px;
    padding: 3px 0;
    min-width: 0;
}

.resumo-legenda-ponto {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    margin-right: 6px;
    flex-shrink: 0;
}

/* Card "Resumo por módulo" — lista compacta por linha (ícone + nome + percentual + fração + seta),
   clicável quando já existe navegação correspondente (ver AplicarFiltroModulo em Home.razor). */
.resumo-modulo-linha {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 7px 0;
    border-bottom: 1px solid #F1F5F9;
    min-width: 0;
}

.resumo-modulo-linha:last-child {
    border-bottom: none;
}

.resumo-modulo-linha.clicavel {
    cursor: pointer;
}

.resumo-modulo-linha.clicavel:hover {
    background-color: #F8FAFC;
}

.resumo-modulo-nome {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 13px;
    font-weight: 600;
    color: #1F2937;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.resumo-modulo-percentual {
    font-size: 13px;
    font-weight: 700;
    flex-shrink: 0;
    width: 42px;
    text-align: right;
}

.resumo-modulo-fracao {
    font-size: 11px;
    color: #6B7280;
    flex-shrink: 0;
    width: 48px;
    text-align: right;
    white-space: nowrap;
}

.resumo-modulo-seta {
    flex-shrink: 0;
    color: #9CA3AF;
}
