/* =========================================================
   financeiro.css
   Estilos específicos das telas financeiras.
========================================================= */

.financeiro {
  display: flex;
  flex-direction: column;
  gap: var(--esp-lg);
  padding: 0;
  max-width: none;
  margin: 0;
  width: 100%;
}

.financeiro__cabecalho {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--esp-md);
  flex-wrap: wrap;
  padding: var(--esp-lg);
  background: linear-gradient(135deg, var(--fundo-card) 0%, var(--fundo-secao) 100%);
  border: var(--borda-padrao);
  border-radius: var(--raio-md);
  box-shadow: var(--sombra-sm);
}

.financeiro__painel-cabecalho {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--esp-md);
  flex-wrap: wrap;
}

.financeiro__cabecalho-texto {
  max-width: 720px;
}

.financeiro__eyebrow {
  margin: 0 0 4px;
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  color: var(--cor-primaria);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.financeiro__titulo {
  margin: 0;
  font-size: var(--fs-2xl);
  font-weight: var(--fw-bold);
  color: var(--texto-principal);
  line-height: var(--lh-tight);
}

.financeiro__subtitulo,
.financeiro__secao-texto {
  margin: 6px 0 0;
  color: var(--texto-secundario);
  font-size: var(--fs-sm);
}

.financeiro__acoes,
.financeiro__filtros {
  display: flex;
  align-items: center;
  gap: var(--esp-sm);
  flex-wrap: wrap;
}

.financeiro__filtros {
  min-width: min(100%, 360px);
}

.financeiro__filtros--relatorio {
  display: flex;
  flex-direction: column;
  gap: var(--esp-sm);
  width: 100%;
  padding: 0 var(--esp-lg) var(--esp-lg);
}

.financeiro__filtros-linha {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--esp-sm);
}

.financeiro__filtros-linha--8 {
  grid-template-columns: repeat(8, 1fr);
}

.financeiro__filtros--relatorio .form-input {
  width: 100%;
}

.financeiro__filtros-acao {
  display: flex;
  justify-content: flex-end;
  padding-top: var(--esp-md);
}

.financeiro__preview {
  display: none;
}

.financeiro__preview--visivel {
  display: block;
}

.financeiro__metricas {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: var(--esp-md);
}

.financeiro__painel,
.financeiro__resumo-form {
  background: var(--fundo-card);
  padding: var(--esp-lg);
}

.financeiro__painel {
  overflow: hidden;
}

/* ── Dentro do gu-card: o card pai assume sombra e raio ─── */
.financeiro .gu-card {
  display: flex;
  flex-direction: column;
}

.financeiro .gu-card .financeiro__metricas {
  padding: var(--esp-lg);
  border-top: var(--borda-padrao);
}

.financeiro .gu-card .tabela-responsiva {
  overflow-x: auto;
}

/* Barra de filtros/título dentro do card (substitui financeiro__painel wrapper) */
.financeiro__painel-cabecalho--card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--esp-md);
  flex-wrap: nowrap;
  padding: var(--esp-md) var(--esp-lg);
  background: var(--cor-cinza-50, #f8fafc);
  border-top: var(--borda-padrao);
  border-bottom: var(--borda-padrao);
}

.financeiro__painel-cabecalho--card > div:first-child {
  flex: 1 1 auto;
  min-width: 0;
}

.financeiro__painel-cabecalho--card .financeiro__filtros {
  flex: 0 0 auto;
  min-width: 0;
  justify-content: flex-end;
  flex-wrap: nowrap;
}

.financeiro__painel-cabecalho--card .financeiro__filtros .form-input {
  width: auto;
  min-width: 170px;
}

.financeiro__painel--form {
  min-width: 0;
}

.financeiro__painel--form .financeiro__secao-titulo,
.financeiro__resumo-form .financeiro__secao-titulo {
  margin-bottom: var(--esp-md);
}

.financeiro__secao-titulo {
  margin: 0;
  font-size: var(--fs-md);
  font-weight: var(--fw-semibold);
  color: var(--texto-principal);
}

.financeiro__valor-receita {
  color: var(--cor-sucesso);
}

.financeiro__valor-despesa {
  color: var(--cor-erro);
}

.financeiro__valor-neutro {
  color: var(--texto-principal);
}

.financeiro__tabela thead th,
.financeiro__tabela tbody td {
  padding: var(--esp-md) var(--esp-sm);
}

/* Separador horizontal preto entre linhas */
.financeiro__tabela tbody tr {
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);
}

/* Modificador para tabelas sem checkbox na 1ª coluna (ex: visão geral) */
.financeiro__tabela--sem-checkbox td:first-child,
.financeiro__tabela--sem-checkbox th:first-child {
  width: auto;
  min-width: 280px;
  padding-left: var(--esp-sm);
  padding-right: var(--esp-sm);
  white-space: normal;
  text-align: left;
}

.financeiro__tabela--sem-checkbox td:nth-child(2),
.financeiro__tabela--sem-checkbox th:nth-child(2) {
  min-width: auto;
  white-space: nowrap;
  text-align: center;
}

/* Checkbox: colado à esquerda, sem quebra */
.financeiro__tabela td:first-child,
.financeiro__tabela th:first-child {
  width: 20px;
  min-width: 20px;
  padding-left: 8px;
  padding-right: 4px;
  white-space: nowrap;
}

/* Descrição: única coluna que pode quebrar linha */
.financeiro__tabela td:nth-child(2),
.financeiro__tabela th:nth-child(2) {
  min-width: 160px;
  white-space: normal;
}

/* Demais células: sem quebra, centralizadas */
.financeiro__tabela td {
  white-space: nowrap;
  text-align: center;
}

/* Headers: podem quebrar linha, alinhados pela base, centralizados */
.financeiro__tabela th {
  white-space: normal;
  text-align: center;
  vertical-align: bottom;
}

/* Descrição fica à esquerda */
.financeiro__tabela td:nth-child(2),
.financeiro__tabela th:nth-child(2) {
  text-align: left;
}

/* Colunas numéricas: centralizar junto com o restante */
.financeiro__tabela td.tabela__num,
.financeiro__tabela th.tabela__num {
  text-align: center;
}

.financeiro__linha-principal {
  display: block;
  font-weight: var(--fw-semibold);
}

.financeiro__linha-secundaria {
  display: block;
  margin-top: 2px;
  font-size: var(--fs-xs);
  color: var(--texto-secundario);
}

.financeiro__estado-tabela {
  padding: var(--esp-xl) var(--esp-md);
  text-align: center;
  color: var(--texto-secundario);
  font-size: var(--fs-sm);
}

.financeiro__estado-tabela--erro {
  color: var(--cor-erro);
}

/* ── Grid 50/50 para Novo Lançamento ─── */
[data-financeiro-view="novo-lancamento"] .gu-card__topo {
  margin-bottom: var(--esp-lg);
}

.financeiro__grid-50 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--esp-lg);
  padding: var(--esp-lg);
}

.financeiro__grid-50 .financeiro__painel {
  border: 1px solid var(--cor-cinza-300);
  border-radius: var(--raio-md);
}

.financeiro__painel--liquidacao {
  display: flex;
  flex-direction: column;
  gap: var(--esp-md);
}

.financeiro__painel--liquidacao .btn {
  margin-top: auto;
}

.financeiro__acoes-painel {
  display: flex;
  flex-direction: row;
  gap: var(--esp-sm);
  margin-top: var(--esp-lg);
  padding-top: var(--esp-md);
  border-top: 1px solid var(--cor-cinza-200);
}

.financeiro__acoes-painel .btn {
  flex: 1;
  justify-content: center;
}

.financeiro__painel--lista-lancamentos {
  margin-top: var(--esp-lg);
  padding: 0 var(--esp-lg);
}

.financeiro__painel-lista-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--esp-md);
  margin-bottom: var(--esp-md);
}

.financeiro__painel-lista-header .financeiro__secao-titulo {
  margin-bottom: 0;
}

/* Força a cor do tipo no tbody (especificidade maior que .tabela tbody td) */
.financeiro__painel--lista-lancamentos tbody td.financeiro__valor-receita {
  color: var(--cor-sucesso);
}
.financeiro__painel--lista-lancamentos tbody td.financeiro__valor-despesa {
  color: var(--cor-erro);
}

.financeiro__busca-lista .form-input {
  max-width: 360px;
}

.tabela__sel {
  width: 40px;
  text-align: center;
}

.financeiro__grid-50 .form-grid,
.financeiro__grid-gestao .financeiro__painel form,
.financeiro__grid-gestao .financeiro__painel {
  min-width: 0;
}

.financeiro__grid-gestao .campo + .campo {
  margin-top: var(--esp-md);
}

.financeiro__grid-gestao .btn-bloco {
  margin-top: var(--esp-lg);
}

.financeiro__resumo-form {
  position: sticky;
  top: calc(var(--altura-header) + var(--esp-lg));
  display: flex;
  flex-direction: column;
  gap: var(--esp-md);
}

.financeiro__dl {
  display: grid;
  gap: var(--esp-sm);
  margin: 0;
}

.financeiro__dl div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--esp-sm);
  padding-bottom: var(--esp-sm);
  border-bottom: 1px solid var(--cor-cinza-200);
}

.financeiro__dl dt {
  color: var(--texto-secundario);
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
}

.financeiro__dl dd {
  margin: 0;
  color: var(--texto-principal);
  font-weight: var(--fw-semibold);
  text-align: right;
}

.financeiro__parcelamento-panel {
  border: 1px solid var(--cor-cinza-200);
  border-radius: var(--raio-padrao);
  padding: var(--esp-md);
  background: var(--cor-cinza-50);
}

.financeiro__grid-2 {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(280px, 0.8fr);
  gap: var(--esp-lg);
}

.financeiro__grid-gestao {
  display: grid;
  grid-template-columns: minmax(280px, 340px) minmax(0, 1fr);
  gap: var(--esp-lg);
  align-items: start;
}

.financeiro__busca {
  max-width: 260px;
}

.financeiro__barras {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-top: var(--esp-lg);
}

.financeiro__barra-grupo {
  display: grid;
  grid-template-columns: 52px 1fr;
  gap: 0 var(--esp-sm);
  padding: var(--esp-sm) 0;
  border-bottom: 1px solid var(--cor-cinza-100);
}

.financeiro__barra-grupo:last-child {
  border-bottom: none;
}

.financeiro__barra-mes-label {
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  color: var(--texto-secundario);
  padding-top: 3px;
}

.financeiro__barra-linhas {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.financeiro__barra {
  display: grid;
  grid-template-columns: 34px 1fr 96px;
  align-items: center;
  gap: var(--esp-xs);
  font-size: var(--fs-xs);
}

.financeiro__barra-tipo {
  color: var(--texto-secundario);
  font-size: var(--fs-xs);
}

.financeiro__barra-trilho {
  height: 8px;
  border-radius: var(--raio-full);
  background: var(--cor-cinza-100);
  overflow: hidden;
  cursor: default;
}

.financeiro__barra-fill {
  height: 100%;
  border-radius: inherit;
  transition: width 0.35s ease;
}

.financeiro__barra-fill--receita { background: var(--cor-sucesso); }
.financeiro__barra-fill--despesa { background: var(--cor-erro); }

.financeiro__barra-num {
  font-size: var(--fs-xs);
  font-weight: var(--fw-medium);
  white-space: nowrap;
  text-align: right;
}

.financeiro__barra-saldo {
  display: grid;
  grid-template-columns: 34px 1fr 96px;
  align-items: center;
  gap: var(--esp-xs);
  font-size: var(--fs-xs);
  margin-top: 2px;
  padding-top: 3px;
  border-top: 1px solid var(--cor-cinza-100);
}

.financeiro__barra-saldo-label {
  color: var(--texto-terciario);
  font-style: italic;
}

.financeiro__barra-saldo strong {
  text-align: right;
  display: block;
}

.financeiro__lista-contas {
  display: grid;
  gap: var(--esp-sm);
  margin-top: var(--esp-lg);
}

.financeiro__conta-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--esp-md);
  padding: var(--esp-sm) 0;
  border-bottom: 1px solid var(--cor-cinza-200);
}

.financeiro__conta-item span {
  min-width: 0;
  color: var(--texto-principal);
}

.financeiro__conta-item strong {
  flex-shrink: 0;
}

.financeiro__conta-item:last-child {
  border-bottom: none;
}

@media (max-width: 1100px) {
  .financeiro__metricas {
    grid-template-columns: repeat(2, minmax(180px, 1fr));
  }

  .financeiro__grid-50,
  .financeiro__grid-2,
  .financeiro__grid-gestao {
    grid-template-columns: 1fr;
  }

  .financeiro__resumo-form {
    position: static;
  }
}

/* Formulários de cadastro (regente e subordinada) */
#form-conta-regente,
#form-conta-subordinada {
  display: flex;
  flex-direction: column;
  gap: var(--esp-md);
}

#form-conta-regente .campo,
#form-conta-subordinada .campo {
  gap: 2px;
}

#form-conta-regente .campo .form-label,
#form-conta-subordinada .campo .form-label {
  margin-bottom: 2px;
}

#form-conta-regente button[type="submit"],
#form-conta-subordinada button[type="submit"] {
  margin-top: var(--esp-xs);
}

/* Cabeçalho do painel de lista — respira antes da tabela */
.financeiro__painel-cabecalho {
  margin-bottom: var(--esp-md);
}

@media (max-width: 768px) {
  .financeiro__filtros-linha {
    grid-template-columns: repeat(2, 1fr);
  }
  .financeiro__filtros-linha--8 {
    grid-template-columns: repeat(4, 1fr);
  }
}

@media (max-width: 480px) {
  .financeiro__filtros-linha {
    grid-template-columns: 1fr;
  }
  .financeiro__filtros-linha--8 {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 760px) {
  .financeiro__painel-cabecalho--card {
    align-items: stretch;
    flex-wrap: wrap;
  }

  .financeiro__painel-cabecalho--card .financeiro__filtros {
    width: 100%;
    flex: 1 1 100%;
    flex-wrap: wrap;
    justify-content: flex-start;
  }

  .financeiro__painel-cabecalho--card .financeiro__filtros .form-input {
    width: 100%;
    min-width: 0;
  }
}

@media (max-width: 640px) {
  .financeiro {
    padding: 0;
  }

  .financeiro__cabecalho,
  .financeiro__painel,
  .financeiro__resumo-form {
    padding: var(--esp-md);
  }

  .financeiro__metricas {
    grid-template-columns: 1fr;
  }

  .financeiro__acoes,
  .financeiro__busca,
  .financeiro__cabecalho .btn {
    width: 100%;
  }

  .financeiro__filtros:not(.financeiro__filtros--relatorio) {
    width: 100%;
  }

  .financeiro__filtros:not(.financeiro__filtros--relatorio) .form-input {
    width: 100%;
  }

  .financeiro__filtros-linha--8 {
    grid-template-columns: repeat(2, 1fr);
  }

  .financeiro__barra-grupo {
    grid-template-columns: 40px 1fr;
  }

  .financeiro__barra,
  .financeiro__barra-saldo {
    grid-template-columns: 30px 1fr 80px;
  }

  .financeiro__barra-num {
    font-size: 10px;
  }
}

/* ── Autocomplete ── */
.autocomplete {
  position: relative;
  width: 100%;
}

.autocomplete .form-input {
  width: 100%;
}

.autocomplete__lista {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 100;
  margin: 2px 0 0 0;
  padding: 4px 0;
  list-style: none;
  background: var(--superficie, #fff);
  border: 1px solid var(--borda, #d1d5db);
  border-radius: var(--borda-raio, 6px);
  box-shadow: 0 4px 12px rgba(0,0,0,0.12);
  max-height: 240px;
  overflow-y: auto;
  display: none;
}

.autocomplete__lista--aberta {
  display: block;
}

.autocomplete__item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 12px;
  cursor: pointer;
  transition: background 0.12s;
}

.autocomplete__item--destacado,
.autocomplete__item:hover {
  background: var(--realce, #f3f4f6);
}

.autocomplete__item-nome {
  font-size: var(--fs-b, 14px);
  color: var(--texto-principal, #111827);
  line-height: 1.3;
}

.autocomplete__item-tipo {
  font-size: var(--fs-xs, 11px);
  color: var(--texto-terciario, #9ca3af);
  white-space: nowrap;
  flex-shrink: 0;
}

.financeiro__grupo-mae {
  background-color: #f5f7fa;
}

.financeiro__grupo-mae:hover {
  background-color: #edf0f4;
}

[data-tema="escuro"] .financeiro__grupo-mae {
  background-color: rgba(255, 255, 255, 0.05);
}

[data-tema="escuro"] .financeiro__grupo-mae:hover {
  background-color: rgba(255, 255, 255, 0.09);
}
