/* Tela Ranking Clientes — grade 2×2 do Python de 23/09
   (telas-vendas-do-python-novo, bloco 4). Estrutura, proporção e tipografia
   vêm do Python (handoff-visual.md, "Ranking Clientes"); cor vem só do tema.
   Todo seletor prefixado por ".ranking-clientes-vendas": CSS de componente
   de módulo não usa .razor.css nesta solução (.claude/rules/arquitetura.md). */

.ranking-clientes-vendas {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.ranking-clientes-vendas__erro {
  padding: 12px;
  background: var(--danger-bg);
  color: var(--danger-text);
  border-radius: 8px;
  border: 1px solid var(--danger-border);
}

.ranking-clientes-vendas__vazio {
  padding: 16px;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.84rem;
}

/* Grade: 1fr 1fr, gap 12px; linha de cima 345px, de baixo 320px
   (style.css:2564-2585 do Python). */
.ranking-clientes-vendas__grade {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 345px 320px;
  gap: 12px;
}

.ranking-clientes-vendas__cartao {
  background: var(--color-surface-panel);
  border: 1.5px solid var(--color-border);
  border-radius: 4px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
}

.ranking-clientes-vendas__cabecalho-matriz,
.ranking-clientes-vendas__cabecalho-grafico {
  margin: 0;
  padding: 7px 12px;
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.3px;
  text-align: center;
  color: var(--color-ink-forte);
  border-bottom: 1px solid var(--color-border);
}

.ranking-clientes-vendas__cabecalho-grafico {
  font-size: 0.92rem;
}

.ranking-clientes-vendas__rolagem {
  flex: 1;
  min-height: 0;
  overflow: auto;
}

.ranking-clientes-vendas__matriz {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.84rem;
  font-variant-numeric: tabular-nums;
  color: var(--color-ink);
}

/* Cabeçalho fixo ao rolar (style.css:2641-2645). */
.ranking-clientes-vendas__matriz thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--color-table-head-bg);
  color: var(--color-table-head-ink);
  padding: 7px 8px;
  font-weight: 700;
  white-space: nowrap;
  text-align: center;
}

.ranking-clientes-vendas__matriz thead th.ranking-clientes-vendas__th-cliente {
  text-align: left;
}

.ranking-clientes-vendas__matriz thead th.ranking-clientes-vendas__th-stat {
  font-size: 0.81rem;
  padding: 7px 6px;
}

.ranking-clientes-vendas__ordenar {
  background: none;
  border: 0;
  padding: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
  white-space: nowrap;
}

.ranking-clientes-vendas__ordenar:focus-visible,
.ranking-clientes-vendas__abrir:focus-visible {
  outline: 2px solid var(--color-focus);
  outline-offset: 2px;
}

.ranking-clientes-vendas__seta {
  margin-left: 3px;
  font-size: 0.7rem;
}

.ranking-clientes-vendas__matriz tbody td {
  padding: 6px 9px;
  line-height: 1.35;
  border-bottom: 1px solid var(--color-border-soft);
  text-align: center;
}

.ranking-clientes-vendas__matriz tbody tr:nth-child(even) {
  background: var(--color-surface-subtle);
}

.ranking-clientes-vendas__matriz tbody tr:hover {
  background: var(--color-primary-soft);
}

.ranking-clientes-vendas__matriz tbody td.ranking-clientes-vendas__td-cliente {
  text-align: left;
  max-width: 240px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Cód. Cliente (codigo-do-cliente-no-ranking): o primeiro código e "+N", numa
   linha só; a lista inteira fica no title. */
.ranking-clientes-vendas__matriz tbody td.ranking-clientes-vendas__td-codigo {
  text-align: left;
  white-space: nowrap;
}

/* Chips "Valor | Pedidos" do Ranking por Ano (mudança ranking-por-pedidos), na
   linha do "Exportar", à esquerda: o desenho dos chips "Matriz | Gráfico" de
   Canais de Venda (canais-venda-vendas.css, .canais-venda__vista). */
.ranking-clientes-vendas__barra-matriz {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-left: 12px;
}

.ranking-clientes-vendas__barra-matriz > .exportar-vendas {
  flex: 1;
  min-width: 0;
}

.ranking-clientes-vendas__modo {
  display: flex;
  flex: none;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: 2px;
  gap: 2px;
}

.ranking-clientes-vendas__modo-chip {
  border: none;
  border-radius: var(--radius-sm);
  padding: 3px 10px;
  font-size: 0.72rem;
  font-weight: 600;
  cursor: pointer;
  background: transparent;
  color: var(--color-subtle);
}

.ranking-clientes-vendas__modo-chip--ativo {
  background: var(--color-border);
  color: var(--color-ink);
}

.ranking-clientes-vendas__aviso-posicao {
  margin: 0;
  padding: 5px 12px;
  font-size: 0.78rem;
  color: var(--color-ink-soft);
  border-bottom: 1px solid var(--color-border-soft);
}

/* Com produto marcado, os números são só desses itens (mudança ranking-por-produto). */
.ranking-clientes-vendas__aviso-produto {
  margin: 6px 0 0;
  font-size: 0.82rem;
  color: var(--color-ink-soft);
}

.ranking-clientes-vendas__matriz tbody td.ranking-clientes-vendas__td-stat {
  font-size: 0.82rem;
  padding: 6px;
  white-space: nowrap;
}

/* "Pos. pela média" destacada das colunas de ano (td.media-cell,
   style.css:2725-2732): peso 800, 0.88rem, borda esquerda 1.5px. */
.ranking-clientes-vendas__matriz tbody td.ranking-clientes-vendas__td-media {
  font-weight: 800;
  font-size: 0.88rem;
  background: var(--color-kpi-highlight-bg);
  border-left: 1.5px solid var(--color-kpi-highlight-border);
}

.ranking-clientes-vendas__valor {
  text-align: right;
  white-space: nowrap;
}

.ranking-clientes-vendas__matriz tbody td.ranking-clientes-vendas__valor {
  text-align: right;
}

/* Botão + da árvore: 14×14px, fonte 11px 800, raio 2px (style.css:2735-2753). */
.ranking-clientes-vendas__abrir {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  margin-right: 7px;
  padding: 0;
  border: 1px solid var(--color-border);
  border-radius: 2px;
  background: var(--color-surface);
  color: var(--color-ink-forte);
  font-size: 11px;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
  vertical-align: middle;
}

/* Recuo dos níveis 2, 3 e 4: 24px, 42px, 62px (style.css:2779-2789); um tom
   por nível. */
.ranking-clientes-vendas__nivel-2 td.ranking-clientes-vendas__td-cliente,
.ranking-clientes-vendas__nivel-2 td.ranking-clientes-vendas__td-aviso {
  padding-left: 24px;
}

.ranking-clientes-vendas__nivel-3 td.ranking-clientes-vendas__td-cliente,
.ranking-clientes-vendas__nivel-3 td.ranking-clientes-vendas__td-aviso {
  padding-left: 42px;
}

.ranking-clientes-vendas__nivel-4 td.ranking-clientes-vendas__td-cliente {
  padding-left: 62px;
}

.ranking-clientes-vendas__matriz tbody tr.ranking-clientes-vendas__nivel-2 {
  background: var(--color-surface-subtle);
}

.ranking-clientes-vendas__matriz tbody tr.ranking-clientes-vendas__nivel-3,
.ranking-clientes-vendas__matriz tbody tr.ranking-clientes-vendas__nivel-4 {
  background: var(--color-bg);
}

.ranking-clientes-vendas__matriz tbody td.ranking-clientes-vendas__td-aviso {
  text-align: left;
  color: var(--color-muted);
  font-style: italic;
}

.ranking-clientes-vendas__corpo-grafico {
  position: relative;
  flex: 1;
  min-height: 0;
  padding: 8px;
}

.ranking-clientes-vendas__corpo-grafico canvas {
  width: 100% !important;
  height: 100% !important;
  display: block;
}

/* Uma coluna abaixo de 1100px, na ordem de leitura (style.css:2564-2575). */
@media (max-width: 1100px) {
  .ranking-clientes-vendas__grade {
    grid-template-columns: 1fr;
    grid-template-rows: 345px 345px 320px 320px;
  }
}

/* O número de uma célula do Ranking por Ano abre os pedidos dele
   (mudança ranking-pedidos-da-celula). */
.ranking-clientes-vendas .ranking-clientes-vendas__abrir-ano {
  background: none;
  border: 0;
  padding: 0 4px;
  font: inherit;
  color: inherit;
  cursor: pointer;
  text-decoration: underline dotted;
  text-underline-offset: 2px;
}

.ranking-clientes-vendas .ranking-clientes-vendas__abrir-ano:hover,
.ranking-clientes-vendas .ranking-clientes-vendas__abrir-ano:focus-visible {
  text-decoration-style: solid;
  color: var(--color-accent, inherit);
}
