/* Financeiro — aba do Alfred Web (Yan + Davi only) */

/* Sidebar Financeiro */
.financeiro-subnav {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 8px 12px;
}

.fin-subtab {
  background: transparent;
  color: var(--text-2, #b0b3b8);
  border: 1px solid transparent;
  border-radius: 6px;
  padding: 8px 12px;
  text-align: left;
  cursor: pointer;
  font-size: 13px;
  transition: background 0.15s, color 0.15s;
}

.fin-subtab:hover {
  background: var(--bg-3, #2a2d31);
  color: var(--text-1, #fff);
}

.fin-subtab.active {
  background: var(--accent, #4f46e5);
  color: #fff;
  font-weight: 600;
}

.financeiro-filters {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 8px 12px;
}

.fin-filter-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--text-3, #8a8d92);
  margin-top: 4px;
}

.financeiro-filters select,
.financeiro-filters input[type="month"] {
  background: var(--bg-3, #2a2d31);
  color: var(--text-1, #fff);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 4px;
  padding: 6px 8px;
  font-size: 13px;
  width: 100%;
}

.fin-btn-primary {
  background: var(--accent, #4f46e5);
  color: #fff;
  border: none;
  border-radius: 4px;
  padding: 8px 12px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 600;
  margin-top: 8px;
}

.fin-btn-primary:hover {
  filter: brightness(1.1);
}

.fin-btn-ghost {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: transparent;
  color: var(--text-2, #b0b3b8);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 4px;
  padding: 6px 12px;
  cursor: pointer;
  font-size: 12px;
  text-decoration: none;
}

.fin-btn-ghost:hover {
  background: var(--bg-3, #2a2d31);
  color: var(--text-1, #fff);
}

/* Container principal — usa flex igual editor-container, ocupa todo espaço
   restante depois do sidebar. Quando o sidebar vira fixed (autohide), expande. */
.financeiro-container {
  flex: 1;
  display: flex;
  flex-direction: column;
  background: var(--bg-1, #18191c);
  overflow: hidden;
  min-width: 0;
}

.financeiro-container.hidden {
  display: none;
}

/* Split da aba Financeiro (Fluxo de Caixa/DRE): conteúdo à esquerda + chat à direita.
   #main-screen é flex-row; financeiro-container vem depois do chat no DOM, então
   usamos `order` pra forçar tabela (esquerda) | divisória | chat (direita).
   A largura da tabela vem de --fin-split-w (ajustável arrastando a divisória);
   referenciada SÓ em body.fin-split pra não vazar pro modo dashboard normal. */
body.fin-split #financeiro-container {
  order: 1;
  flex: 0 0 var(--fin-split-w, 56%);
  min-width: 360px;
}
body.fin-split #chat-container {
  order: 3;
  flex: 1 1 0;
  min-width: 360px;
}

/* Extrato agrupado por dia (Fluxo de Caixa) */
.fin-table .fin-day-row td {
  background: var(--bg-2, #202127);
  font-weight: 600;
  color: #e4e6eb;
  border-top: 1px solid var(--border-color, #2a2b31);
  padding-top: 8px;
}
.fin-table .fin-day-item td:first-child {
  border-left: 2px solid var(--border-color, #2a2b31);
}
/* Edição inline do extrato: descrição + categoria */
.fin-ext-desc {
  width: 100%;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 4px;
  color: var(--text, #e4e6eb);
  font: inherit;
  padding: 3px 6px;
}
.fin-ext-desc:hover { border-color: var(--border-color, #2a2b31); }
.fin-ext-desc:focus {
  outline: none;
  border-color: var(--accent, #4f46e5);
  background: var(--bg-1, #18191c);
}
.fin-ext-cat {
  background: var(--bg-1, #18191c);
  border: 1px solid var(--border-color, #2a2b31);
  border-radius: 4px;
  color: var(--text, #b0b3b8);
  font-size: 12px;
  padding: 3px 4px;
  max-width: 200px;
}
.fin-ext-cat:focus { outline: none; border-color: var(--accent, #4f46e5); }
.fin-saved { box-shadow: 0 0 0 2px rgba(95, 206, 139, 0.6) !important; transition: box-shadow 0.2s; }

/* Ícone de contraparte (recebedor) na descrição + tooltip flutuante */
.fin-ext-desccell { display: flex; align-items: center; gap: 6px; }
.fin-receb { flex: 0 0 auto; cursor: default; font-size: 13px; line-height: 1; user-select: none; }
.fin-receb-known { opacity: 0.85; }
.fin-receb-known:hover { opacity: 1; }
.fin-receb-parsed { opacity: 0.5; }
.fin-receb-parsed:hover { opacity: 0.85; }
.fin-receb-empty { opacity: 0.2; }
.fin-receb-tip {
  position: fixed;
  z-index: 9999;
  min-width: 230px;
  max-width: 340px;
  background: #0f1013;
  border: 1px solid var(--border-color, #2a2b31);
  border-radius: 8px;
  padding: 10px 12px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.55);
  font-size: 12px;
  color: var(--text, #e4e6eb);
  text-align: left;
  pointer-events: none;
}
.fin-receb-nome { font-weight: 600; margin-bottom: 2px; }
.fin-receb-badge {
  font-size: 9px; padding: 1px 4px; margin-left: 2px;
  border: 1px solid #3a3b41; border-radius: 4px; color: #9aa0a6; vertical-align: middle;
}
.fin-receb-papel { color: #8a8d92; margin-bottom: 6px; }
.fin-receb-meta { color: #b0b3b8; line-height: 1.55; }
.fin-receb-meta b { color: #7d8590; font-weight: 600; }
.fin-receb-src { margin-top: 6px; color: #6b6e73; font-style: italic; font-size: 11px; }

/* Toolbar de busca do extrato */
.fin-ext-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.fin-ext-search {
  flex: 1;
  min-width: 240px;
  max-width: 420px;
  background: var(--bg-1, #18191c);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 6px;
  color: var(--text, #e4e6eb);
  font-size: 13px;
  padding: 8px 12px;
}
.fin-ext-search:focus { outline: none; border-color: var(--accent, #4f46e5); }
.fin-ext-hint { font-size: 11px; color: var(--text-3, #8a8d92); white-space: nowrap; }

/* Painel recolhível "Resumo mensal · Saldo acumulado" (dentro da Fluxo de Caixa) */
.fin-resumo {
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 8px;
  background: var(--bg-2, #1f2024);
  margin-bottom: 16px;
}
.fin-resumo > summary {
  cursor: pointer;
  list-style: none;
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-2, #b0b3b8);
  user-select: none;
  display: flex;
  align-items: center;
  gap: 6px;
}
.fin-resumo > summary::-webkit-details-marker { display: none; }
.fin-resumo > summary::before {
  content: '▸';
  display: inline-block;
  transition: transform 0.15s;
  color: var(--text-3, #8a8d92);
}
.fin-resumo[open] > summary::before { transform: rotate(90deg); }
.fin-resumo[open] > summary { border-bottom: 1px solid var(--border-1, #3a3d42); }
.fin-resumo > summary:hover { color: var(--text-1, #fff); }
#fin-resumo-body { padding: 14px; }
/* dentro do resumo, os cards/gráfico/tabela não precisam de margem-fundo extra */
#fin-resumo-body .fin-kpis:last-child,
#fin-resumo-body .fin-table-wrap { margin-bottom: 0; }

/* Notas do mês */
#fin-notas-body { padding: 14px; display: flex; flex-direction: column; gap: 14px; }
.fin-nota-item { display: flex; flex-direction: column; gap: 6px; }
.fin-nota-head {
  display: flex; align-items: center; gap: 10px;
  font-size: 12px; font-weight: 600; color: var(--text-2, #b0b3b8);
}
.fin-nota-status { font-size: 11px; font-weight: 500; color: var(--text-3, #8a8d92); }
.fin-nota-status.ok { color: #5fce8b; }
.fin-nota-status.err { color: #e06c75; }
.fin-nota-text {
  width: 100%; box-sizing: border-box; resize: vertical; min-height: 56px;
  padding: 8px 10px; font: inherit; font-size: 13px; line-height: 1.4;
  color: var(--text-1, #e4e6eb);
  background: var(--bg-1, #18191c);
  border: 1px solid var(--border-1, #3a3d42); border-radius: 6px;
}
.fin-nota-text:focus { outline: none; border-color: var(--accent, #5b8def); }
.fin-nota-empty { color: var(--text-3, #8a8d92); font-size: 13px; }

.fin-split-resize {
  display: none;
}
body.fin-split .fin-split-resize {
  display: block;
  order: 2;
  flex: 0 0 6px;
  cursor: col-resize;
  background: var(--border-color, #2a2b31);
  transition: background 0.15s;
}
body.fin-split .fin-split-resize:hover,
body.fin-split .fin-split-resize.active {
  background: var(--accent, #4f46e5);
}

.fin-top-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  background: var(--bg-2, #1f2024);
  border-bottom: 1px solid var(--border-1, #3a3d42);
  flex-shrink: 0;
  flex-wrap: wrap;
}

.fin-top-title {
  font-size: 16px;
  font-weight: 600;
  color: var(--text-1, #fff);
}

.fin-top-subtitle {
  font-size: 13px;
  color: var(--text-3, #8a8d92);
}

.top-bar-spacer {
  flex: 1;
}

/* Visões como botões horizontais na top bar */
.fin-top-views {
  display: flex;
  gap: 4px;
}
.fin-top-bar .fin-subtab {
  width: auto;
  padding: 6px 14px;
  text-align: center;
}

/* Empresa (dropdown) + período na top bar */
.fin-top-select,
.fin-top-month {
  background: var(--bg-3, #2a2d31);
  color: var(--text-1, #fff);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 6px;
  padding: 6px 8px;
  font-size: 13px;
}
.fin-top-select { cursor: pointer; font-weight: 600; }
.fin-top-select:hover { border-color: var(--accent, #4f46e5); }
.fin-top-month { color-scheme: dark; }
.fin-top-sep { color: var(--text-3, #8a8d92); font-size: 12px; }

/* Setas de navegação de período (‹ ›) */
.fin-top-arrow {
  background: var(--bg-3, #2a2d31);
  color: var(--text-1, #fff);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 6px;
  width: 30px;
  height: 32px;
  cursor: pointer;
  font-size: 16px;
  line-height: 1;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.fin-top-arrow:hover { border-color: var(--accent, #4f46e5); color: var(--accent, #4f46e5); }

.fin-content {
  flex: 1;
  overflow-y: auto;
  padding: 20px;
}

.fin-loading {
  text-align: center;
  color: var(--text-3, #8a8d92);
  padding: 40px;
  font-size: 14px;
}

/* ── Skeleton de carregamento (shimmer com gradiente) ── */
@keyframes fin-shimmer {
  0%   { background-position: 140% 0; }
  100% { background-position: -40% 0; }
}
.fin-skel { animation: fin-skel-fade .2s ease; }
@keyframes fin-skel-fade { from { opacity: 0; } to { opacity: 1; } }
.fin-skel-box {
  height: 12px;
  border-radius: 5px;
  background: linear-gradient(
    90deg,
    var(--bg-2, #1f2024) 25%,
    var(--border-1, #3a3d42) 50%,
    var(--bg-2, #1f2024) 75%
  );
  background-size: 220% 100%;
  animation: fin-shimmer 1.3s linear infinite;
}
/* Cards de KPI: barra pequena (label) + barra grande (valor) */
.fin-skel .fin-kpi { display: flex; flex-direction: column; gap: 10px; justify-content: center; }
.fin-skel-box.sm { height: 9px;  width: 55%; }
.fin-skel-box.lg { height: 20px; width: 80%; }
/* Tabela: linhas com rótulo largo + colunas de mês */
.fin-skel-table { margin-top: 14px; }
.fin-skel-row {
  display: flex; gap: 12px; align-items: center;
  padding: 11px 4px;
  border-bottom: 1px solid var(--border-1, #3a3d42);
}
.fin-skel-cell { flex: 1; }
.fin-skel-cell.label { flex: 2.6; }
.fin-skel-cell:not(.label) .fin-skel-box { margin-left: auto; }  /* números alinham à direita */
@media (prefers-reduced-motion: reduce) {
  .fin-skel-box { animation: none; }
}

.fin-error {
  background: rgba(220, 53, 69, 0.1);
  border: 1px solid rgba(220, 53, 69, 0.3);
  color: #ff8b96;
  padding: 12px 16px;
  border-radius: 6px;
  margin-bottom: 16px;
  font-size: 13px;
}

/* Cards de KPI */
.fin-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  margin-bottom: 20px;
}

.fin-kpi {
  background: var(--bg-2, #1f2024);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 8px;
  padding: 14px 16px;
}

.fin-kpi-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.6px;
  color: var(--text-3, #8a8d92);
  margin-bottom: 6px;
}

.fin-kpi-value {
  font-size: 22px;
  font-weight: 700;
  color: var(--text-1, #fff);
}

.fin-kpi-value.positive { color: #5fce8b; }
.fin-kpi-value.negative { color: #ff8b96; }

.fin-kpi-sub {
  font-size: 11px;
  color: var(--text-3, #8a8d92);
  margin-top: 4px;
}

/* Gráfico */
.fin-chart-wrap {
  background: var(--bg-2, #1f2024);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 8px;
  padding: 16px;
  margin-bottom: 20px;
  height: 320px;
  position: relative;
}

/* Tabela mês a mês */
.fin-table-wrap {
  background: var(--bg-2, #1f2024);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 8px;
  /* overflow visible: o scroll-context vertical é o .fin-content, senão o thead
     sticky (top:0) nunca cola. Tabelas largas rolam horizontalmente no .fin-content. */
  overflow: visible;
  margin-bottom: 20px;
}

.fin-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

/* Tabelas mês-a-mês (DRE / resumo): largura por conteúdo, não 100% da tela.
   Assim a coluna "Linha" não estica e os valores ficam colados ao rótulo da
   linha em vez de flutuarem lá na direita. Se houver muitos meses e estourar a
   largura, max-width segura e o .fin-content rola na horizontal. */
.fin-table-matrix {
  width: max-content;
  max-width: 100%;
}

.fin-table thead th {
  position: sticky;
  top: 0;
  z-index: 3;  /* acima das células sticky do tbody (z-index:1) */
  background: var(--bg-3, #2a2d31);
  color: var(--text-2, #b0b3b8);
  font-weight: 600;
  text-align: right;
  padding: 10px 12px;
  border-bottom: 1px solid var(--border-1, #3a3d42);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  white-space: nowrap;
}

.fin-table thead th:first-child {
  text-align: left;
  position: sticky;
  left: 0;
  z-index: 4;  /* canto superior-esquerdo acima de tudo */
  padding-left: 30px;  /* alinha "LINHA" com os labels do tbody (calha do chevron) */
}

.fin-table tbody td {
  padding: 8px 12px;
  text-align: right;
  border-bottom: 1px solid var(--border-1, #2a2d31);
  color: var(--text-1, #e8e8e8);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.fin-table tbody td:first-child {
  text-align: left;
  font-weight: 500;
  position: sticky;
  left: 0;
  background: var(--bg-2, #1f2024);
  z-index: 1;
  /* Reserva a calha do chevron (toggle = 12px + 6px gap) em TODAS as linhas,
     pra que os labels comecem no mesmo x da linha Reembolsos/Estornos. */
  padding-left: 30px;
}

.fin-table tbody tr.fin-row-subtotal td {
  background: rgba(79, 70, 229, 0.08);
  font-weight: 600;
  color: var(--text-1, #fff);
  border-top: 1px solid rgba(79, 70, 229, 0.3);
}

.fin-table tbody tr.fin-row-subtotal td:first-child {
  background: var(--bg-2, #1f2024);
  color: #a5b4fc;
}

.fin-table tbody tr.fin-row-total td {
  background: rgba(95, 206, 139, 0.10);
  font-weight: 700;
  color: #5fce8b;
  font-size: 14px;
  border-top: 2px solid rgba(95, 206, 139, 0.4);
}

.fin-table tbody tr.fin-row-total td:first-child {
  background: var(--bg-2, #1f2024);
}

.fin-num-positive { color: #5fce8b; }
.fin-num-negative { color: #ff8b96; }
.fin-num-zero     { color: var(--text-3, #5a5d62); }

/* Linha expansível (ex.: Reembolsos / Estornos → reembolso vs chargeback vs disputa) */
.fin-row-toggle {
  background: none;
  border: none;
  color: var(--text-2, #b0b3b8);
  cursor: pointer;
  font-size: 11px;
  padding: 0;
  margin-right: 6px;
  /* margin-left negativa = -(width + margin-right): o chevron mora dentro do
     padding-left reservado, sem empurrar o label do pai além dos 30px. */
  margin-left: -18px;
  width: 12px;
  display: inline-block;
  text-align: center;
  line-height: 1;
}
.fin-row-toggle:hover { color: var(--text-1, #fff); }
.fin-table tbody tr.fin-row-parent td:first-child { cursor: default; }
.fin-table tbody tr.fin-row-child td {
  background: rgba(255, 255, 255, 0.015);
  font-size: 12px;
  color: var(--text-2, #b0b3b8);
}
.fin-table tbody tr.fin-row-child td.fin-child-label {
  padding-left: 30px;
  font-weight: 400;
}

/* Lançamento manual */
.fin-lanc-toolbar {
  display: flex;
  gap: 8px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}

.fin-lanc-toolbar select,
.fin-lanc-toolbar input {
  background: var(--bg-3, #2a2d31);
  color: var(--text-1, #fff);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 4px;
  padding: 6px 10px;
  font-size: 13px;
}

.fin-form-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
  background: var(--bg-2, #1f2024);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 8px;
  padding: 16px;
  margin-bottom: 16px;
}

.fin-form-grid label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  color: var(--text-3, #8a8d92);
  display: block;
  margin-bottom: 4px;
}

.fin-form-grid select,
.fin-form-grid input,
.fin-form-grid textarea {
  width: 100%;
  background: var(--bg-3, #2a2d31);
  color: var(--text-1, #fff);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 4px;
  padding: 6px 8px;
  font-size: 13px;
  font-family: inherit;
}

.fin-form-grid .fin-form-actions {
  grid-column: 1 / -1;
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 8px;
}

.fin-row-action {
  background: transparent;
  border: none;
  color: var(--text-3, #8a8d92);
  cursor: pointer;
  padding: 4px 8px;
  font-size: 14px;
  border-radius: 3px;
}

.fin-row-action:hover {
  color: var(--text-1, #fff);
  background: var(--bg-3, #2a2d31);
}

.fin-row-action.danger:hover {
  color: #ff8b96;
}

/* Upload Meta */
.fin-upload-note {
  border-left: 3px solid var(--accent, #4a9eff);
  background: var(--bg-2, #1f2024);
  border-radius: 6px;
  padding: 12px 14px;
  margin-bottom: 16px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--text-2, #b8bcc4);
}

.fin-upload-zone {
  border: 2px dashed var(--border-1, #3a3d42);
  border-radius: 8px;
  padding: 32px 20px;
  text-align: center;
  background: var(--bg-2, #1f2024);
  cursor: pointer;
  transition: all 0.15s;
  margin-bottom: 16px;
}

.fin-upload-zone:hover,
.fin-upload-zone.dragover {
  border-color: var(--accent, #4f46e5);
  background: rgba(79, 70, 229, 0.05);
}

.fin-upload-zone p {
  margin: 4px 0;
  color: var(--text-2, #b0b3b8);
  font-size: 13px;
}

.fin-upload-zone .fin-upload-hint {
  color: var(--text-3, #8a8d92);
  font-size: 11px;
}

.fin-upload-result {
  background: var(--bg-2, #1f2024);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 8px;
  padding: 14px 16px;
  margin-bottom: 16px;
  font-size: 13px;
  color: var(--text-2, #b0b3b8);
}

.fin-upload-result.success { border-color: rgba(95, 206, 139, 0.4); }
.fin-upload-result.error   { border-color: rgba(220, 53, 69, 0.4); }

/* ── Fluxo de Caixa: layout compacto (KPIs + busca + botão sempre visíveis) ── */

/* Botão "+ Lançamento manual" na toolbar de busca, ancorado à direita */
.fin-toolbar-btn {
  margin-top: 0;
  white-space: nowrap;
  flex: 0 0 auto;
}
/* Bloco de ações da toolbar (botões) empurrado pra direita e agrupado. */
.fin-toolbar-actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 0 0 auto;
  flex-wrap: wrap;
}

/* Confirmação integrada à UI (substitui o confirm() do navegador). */
.fin-confirm-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: rgba(0, 0, 0, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.fin-confirm-modal {
  background: var(--bg-2, #1f2024);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 10px;
  padding: 22px 24px;
  width: 100%;
  max-width: 440px;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.45);
}
.fin-confirm-msg {
  color: var(--text-1, #e4e6eb);
  font-size: 14px;
  line-height: 1.5;
  white-space: pre-line;
  margin-bottom: 20px;
}
.fin-confirm-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}
.fin-confirm-actions .fin-btn-primary,
.fin-confirm-actions .fin-btn-ghost { margin-top: 0; }

/* Extrato com altura limitada + scroll interno: o thead sticky cola dentro
   deste container (top:0), e os cards/busca acima permanecem na tela. */
.fin-table-wrap.fin-ext-scroll {
  /* ocupa o que sobra abaixo dos cards/busca (não há mais nada embaixo);
     piso de 360px em telas baixas. */
  max-height: max(360px, calc(100vh - 300px));
  overflow: auto;
  margin-bottom: 12px;
}

/* Tabelas de transações: TÍTULOS centralizados em cada coluna; conteúdo das
   células com alinhamento próprio (texto à esquerda, valor à direita). */
table.fin-ext-tbl thead th,
table.fin-ext-tbl thead th:first-child { text-align: center; }
table.fin-ext-tbl tbody td { text-align: left; }
table.fin-ext-tbl tbody td:nth-child(2) { text-align: right; }   /* Valor (cor sinaliza entrada/saída) */

table.fin-lanc-tbl thead th,
table.fin-lanc-tbl thead th:first-child { text-align: center; }
table.fin-lanc-tbl tbody td { text-align: left; }
table.fin-lanc-tbl tbody td:nth-child(7) { text-align: right; }  /* Valor */

/* Célula de categoria + botão de excluir (só lançamentos manuais) */
.fin-ext-catcell { display: flex; align-items: center; gap: 6px; }
.fin-ext-del {
  background: transparent;
  border: 1px solid transparent;
  border-radius: 4px;
  color: var(--text-3, #8a8d92);
  cursor: pointer;
  font-size: 12px;
  line-height: 1;
  padding: 3px 6px;
  opacity: 0.55;
  transition: all 0.12s;
}
.fin-ext-del:hover { opacity: 1; color: #ff8b96; border-color: rgba(220, 53, 69, 0.4); }

/* Banner de alertas do cron de ingestão de extratos (erros de processamento) */
.fin-ingest-alert {
  background: rgba(255, 139, 96, 0.12);
  border: 1px solid rgba(255, 139, 96, 0.45);
  border-left: 4px solid #ff8b60;
  border-radius: 8px;
  padding: 12px 16px;
  margin: 0 0 16px;
  color: #ffd9c7;
  font-size: 13px;
}
.fin-ingest-alert strong { color: #ffb38a; display: block; margin-bottom: 6px; font-size: 14px; }
.fin-ingest-alert ul { margin: 4px 0 0; padding-left: 18px; }
.fin-ingest-alert li { margin: 3px 0; line-height: 1.4; }
.fin-ingest-alert-ts { margin-top: 8px; font-size: 11px; color: var(--text-3, #8a8d92); }

/* ── Modal da fatura do cartão ── */
.fin-modal-overlay {
  position: fixed; inset: 0; z-index: 1000;
  background: rgba(0,0,0,.55);
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
}
.fin-modal {
  background: var(--bg-1, #18191c);
  border: 1px solid var(--border-1, #3a3d42);
  border-radius: 10px;
  width: min(900px, 100%); max-height: 88vh;
  display: flex; flex-direction: column;
  box-shadow: 0 18px 50px rgba(0,0,0,.5);
}
.fin-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px; border-bottom: 1px solid var(--border-1, #3a3d42);
  font-weight: 600; color: var(--text-1, #e4e6eb);
}
.fin-modal-x {
  background: none; border: none; color: var(--text-3, #8a8d92);
  font-size: 18px; cursor: pointer; line-height: 1;
}
.fin-modal-x:hover { color: var(--text-1, #fff); }
.fin-modal-body { padding: 16px 18px; overflow: auto; }
.fin-fatura-drop {
  border: 1px dashed var(--border-1, #3a3d42); border-radius: 8px;
  padding: 16px; margin-bottom: 14px; background: var(--bg-2, #1f2024);
}
.fin-fatura-drop p { margin: 0 0 8px; font-size: 13px; color: var(--text-2, #b0b3b8); }
.fin-fatura-hint { font-size: 12px; color: var(--text-3, #8a8d92); }
.fin-fatura-drop code { background: rgba(255,255,255,.07); padding: 1px 5px; border-radius: 4px; }
.fin-fatura-sum {
  background: var(--bg-2, #1f2024); border: 1px solid var(--border-1, #3a3d42);
  border-radius: 8px; padding: 10px 14px; margin-bottom: 12px; font-size: 13px;
}
.fin-fatura-sum-sub { font-size: 12px; color: var(--text-3, #8a8d92); margin-top: 4px; }
.fin-fatura-tablewrap { max-height: 46vh; overflow: auto; border: 1px solid var(--border-1, #3a3d42); border-radius: 8px; }
.fin-fatura-tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.fin-fatura-tbl th {
  position: sticky; top: 0; background: var(--bg-2, #1f2024); z-index: 1;
  text-align: left; padding: 8px 10px; color: var(--text-3, #8a8d92);
  border-bottom: 1px solid var(--border-1, #3a3d42); font-weight: 600;
}
.fin-fatura-tbl td { padding: 7px 10px; border-bottom: 1px solid rgba(255,255,255,.05); color: var(--text-1, #e4e6eb); }
.fin-fatura-val { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.fin-fatura-row-excl td { color: var(--text-3, #8a8d92); opacity: .65; }
.fin-fatura-excl { font-size: 11.5px; color: var(--text-3, #8a8d92); font-style: italic; }
.fin-fatura-row-dup td { background: rgba(95,206,139,.05); }
.fin-fatura-badge {
  font-size: 10.5px; color: #5fce8b; border: 1px solid rgba(95,206,139,.4);
  border-radius: 4px; padding: 1px 5px; margin-left: 4px;
}
.fin-fatura-cat {
  background: var(--bg-1, #18191c); color: var(--text-1, #e4e6eb);
  border: 1px solid var(--border-1, #3a3d42); border-radius: 5px;
  padding: 3px 6px; font-size: 12px; max-width: 230px;
}
.fin-fatura-actions { display: flex; align-items: center; gap: 12px; margin-top: 14px; }
.fin-fatura-msg { font-size: 12.5px; }

.fin-fatura-badge.apr { color: #d8a657; border-color: rgba(216,166,87,.4); }
.fin-fatura-badge.parc { color: #9aa0a6; border-color: rgba(154,160,166,.4); }
