/* ═══════════════════════════════════════════════════════════
   APP — Estrutura pós-login (sidebar + header + área principal)
═══════════════════════════════════════════════════════════ */

#app {
  display: flex;
  height: 100vh;
  width: 100vw;
}

/* SIDEBAR ═══════════════════════════════════════════════════ */
:root {
  --sb-closed: 64px;
  --sb-open: 220px;
}

.sidebar {
  width: var(--sb-open);
  background: var(--navy-d);
  color: rgba(255, 255, 255, 0.85);
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  overflow: hidden;
  transition: width 0.2s ease;
}

.sidebar.collapsed {
  width: var(--sb-closed);
}

.sb-logo {
  padding: 18px 12px 20px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  user-select: none;
  transition: background 0.15s;
}

.sb-logo:hover {
  background: rgba(255, 255, 255, 0.06);
}

.sb-logo img {
  width: 118px;
  height: auto;
  object-fit: contain;
  transition: width 0.2s ease;
  flex-shrink: 0;
}

.sidebar.collapsed .sb-logo {
  padding: 12px 8px;   /* barra fechada: selo compacto e ícones sobem */
  gap: 0;
}

.sidebar.collapsed .sb-logo img {
  width: 42px;
}

/* Nome do CLIENTE (grupo ativo) sob o selo */
.sb-logo span {
  font-size: 11.5px;
  font-weight: 650;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  color: rgba(255, 251, 248, 0.85);
  text-align: center;
  opacity: 1;
  transition: opacity 0.15s 0.05s;
}

.sidebar.collapsed .sb-logo span {
  display: none;   /* sem espaço fantasma na barra fechada */
}

.sb-nav {
  flex: 1;
  padding: 14px 8px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  overflow-y: auto;
  overflow-x: hidden;
}

.sb-footer {
  padding: 8px 8px 14px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.sb-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  background: transparent;
  border: none;
  color: rgba(255, 255, 255, 0.75);
  font-family: var(--font-base);
  font-size: 13px;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  border-radius: 5px;
  transition: background 0.15s, color 0.15s;
  width: 100%;
  white-space: nowrap;
  overflow: hidden;
}

.sb-item:hover {
  background: rgba(255, 255, 255, 0.06);
  color: var(--white);
}

.sb-item.active {
  background: var(--navy-m);
  color: var(--white);
}

.sb-item svg {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}

.sb-item span {
  opacity: 1;
  transition: opacity 0.15s 0.05s;
}

.sidebar.collapsed .sb-item span {
  opacity: 0;
}

.sb-logout {
  color: rgba(255, 200, 200, 0.7);
}

.sb-logout:hover {
  background: rgba(192, 0, 0, 0.2);
  color: #ffcaca;
}

/* MAIN ══════════════════════════════════════════════════════ */
.main {
  flex: 1;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  overflow: hidden;
}

.header {
  height: 56px;
  background: var(--white);
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 24px;
  flex-shrink: 0;
}

.header-title {
  font-size: 20px;   /* título único da tela (h2 duplicados saíram) — mais presença */
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--text);
}

.header-user {
  font-size: 12px;
  color: var(--text2);
}

/* Selo de modo staff cross-tenant (mostrado só quando papelSintetico) */
.staff-badge {
  display: inline-block;
  margin-right: 10px;
  padding: 2px 8px;
  border-radius: 10px;
  background: var(--navy);
  color: var(--white);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  vertical-align: middle;
}
.staff-badge[hidden] { display: none; }

.content {
  flex: 1;
  overflow-y: auto;
  padding: 24px 28px;
}

/* TELAS ═════════════════════════════════════════════════════ */
.tela {
  display: none;
}

.tela.active {
  display: block;
}

.tela h2 {
  font-size: 18px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 8px;
}

.tela p {
  font-size: 14px;   /* subtítulos/descrições de todas as abas (um pontinho a mais) */
  color: var(--text2);
  line-height: 1.5;
  margin-bottom: 8px;
}

.tela .hint {
  font-size: 12px;
  color: var(--text3);
  font-style: italic;
  margin-top: 16px;
}

/* WELCOME CARD ══════════════════════════════════════════════ */
.welcome-card {
  background: var(--white);
  border: 1px solid var(--border-soft);
  border-radius: var(--r-card);
  box-shadow: var(--shadow-1);
  padding: 20px 24px;
  margin-bottom: 20px;
}

.welcome-card h2 {
  font-size: 18px;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 6px;
}

.welcome-card p {
  font-size: 13px;
  color: var(--text2);
  margin: 0;
}

/* CARDS GRID ════════════════════════════════════════════════ */
.cards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
  margin-bottom: 16px;
}

.card-placeholder {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 16px 18px;
}

.card-label {
  font-size: 11px;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: var(--text3);
  font-weight: 600;
  margin-bottom: 8px;
}

.card-value {
  font-size: 20px;
  font-weight: 600;
  color: var(--text);
  font-family: var(--font-mono);
}
/* TELA HEADER ═══════════════════════════════════════════════ */
.tela-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 20px;
  gap: 16px;
}

.tela-header h2 {
  margin-bottom: 4px;
}

.tela-header p {
  margin: 0;
}

/* BOTÕES ════════════════════════════════════════════════════ */
/* Três pesos de botão (redesign): primário navy (1 por tela), secundário hairline,
   ghost/link pra ações leves. Foco visível em todos. */
.btn-primary, .btn-secondary {
  font-family: var(--font-base);
  font-size: 13px;
  font-weight: 600;
  border-radius: var(--r-ctl);
  padding: 9px 16px;
  border: 1px solid transparent;
  cursor: pointer;
  transition: background 0.15s, border-color 0.12s, color 0.12s;
  white-space: nowrap;
}

.btn-primary:focus-visible, .btn-secondary:focus-visible, .btn-link:focus-visible {
  outline: 3px solid var(--navy-100);
  outline-offset: 1px;
}

.btn-primary {
  background: var(--navy);
  color: var(--white);
}

.btn-primary:hover {
  background: var(--navy-m);
}

.btn-secondary {
  background: var(--white);
  color: var(--text);
  border-color: var(--border2);
}

.btn-secondary:hover {
  border-color: var(--navy);
  color: var(--navy);
}

.btn-link {
  background: transparent;
  border: none;
  border-radius: 7px;
  color: var(--navy-m);
  font-family: var(--font-base);
  font-size: 12px;
  cursor: pointer;
  padding: 4px 8px;
  transition: background 0.12s;
}

.btn-link:hover {
  background: var(--navy-050);
}

.btn-link.danger {
  color: var(--neg);
}

.btn-link.danger:hover {
  background: var(--neg-bg);
}

/* TABELA ════════════════════════════════════════════════════ */
.tabela-wrap {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 8px;
  /* (padronização) rola interno + cabeçalho congelado: tabela longa ganha scroll
     próprio e o thead fica fixo no topo. Tabela curta não chega no limite, não rola. */
  overflow: auto;
  max-height: calc(100vh - 210px);
}

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

.tabela thead {
  background: var(--navy-050);   /* faixa azulada (preferência do Arthur) */
}

/* thead congelado: sticky no th (não no thead, p/ compat) + a borda inferior vai
   no box-shadow pra acompanhar a célula fixa (border-bottom some com sticky). */
.tabela thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--navy-050);
  box-shadow: inset 0 -1px 0 var(--border);
}

.tabela th {
  text-align: left;
  padding: 11px 14px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.8px;
  text-transform: uppercase;
  color: var(--text2);
}

/* Cabeçalho ordenável: clique ordena por aquela coluna (asc/desc) */
.tabela th.th-sort {
  cursor: pointer;
  user-select: none;
}
.tabela th.th-sort:hover {
  color: var(--text);
}
.sort-ind {
  display: inline-block;
  width: 0.9em;
  margin-left: 3px;
  font-size: 10px;
  color: var(--navy);
}

.tabela th.num,
.tabela td.num {
  text-align: right;
  font-family: var(--font-mono);
}

.tabela th.acoes,
.tabela td.acoes {
  text-align: center;
  width: 120px;
}

.tabela td {
  padding: 11px 14px;
  border-bottom: 1px solid var(--border-soft);   /* hairline suave, sem zebra */
  color: var(--text);
}

.tabela tr:last-child td {
  border-bottom: none;
}

.tabela tbody tr:hover {
  background: var(--navy-050);
}

.tabela tr.inativa {
  opacity: 0.5;
}

.tabela .vazio {
  text-align: center;
  color: var(--text3);
  padding: 28px;
  font-style: italic;
}

/* Pills de estado (redesign): fundo tingido + texto na semântica + ponto de leitura */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 2px 9px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 650;
  letter-spacing: 0.3px;
  text-transform: uppercase;
}

.badge::before {
  content: '';
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: currentColor;
  flex-shrink: 0;
}

.badge.ativa {
  background: var(--pos-bg);
  color: var(--pos);
}

.badge.inativa {
  background: var(--border-soft);
  color: var(--text3);
}

/* MODAL ═════════════════════════════════════════════════════ */
.modal {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
}

.modal-bg {
  position: absolute;
  inset: 0;
  background: rgba(20, 36, 60, 0.55);
}

.modal-box {
  position: relative;
  background: var(--white);
  border-radius: var(--r-card);
  padding: 28px 30px;
  width: 460px;
  max-width: 92vw;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.3);
}

.modal-box h3 {
  font-size: 16px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 18px;
}

.modal-box label {
  display: block;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  color: var(--text2);
  margin: 14px 0 4px;
}

/* Visual dos campos vem do padrão global (tokens.css); aqui só layout do modal */
.modal-box input[type="text"],
.modal-box input[type="date"],
.modal-box select,
.modal-box textarea {
  width: 100%;
  font-size: 13px;
}

.form-row {
  display: flex;
  gap: 12px;
}

.form-col {
  flex: 1;
}

.check-line {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 16px;
  font-size: 12px;
  font-weight: normal;
  color: var(--text);
  text-transform: none;
  letter-spacing: 0;
}

.check-line input[type="checkbox"] {
  width: auto;
  margin: 0;
}

.modal-erro {
  color: var(--neg);
  font-size: 12px;
  margin-top: 12px;
  min-height: 16px;
}

.modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 20px;
}
/* HUB DE CADASTROS ══════════════════════════════════════════ */
.cad-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
  margin-top: 20px;
}

.cad-card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 20px 22px;
  text-align: left;
  cursor: pointer;
  transition: border 0.15s, transform 0.1s, box-shadow 0.15s;
  font-family: var(--font-base);
}

.cad-card:hover {
  border-color: var(--navy-l);
  box-shadow: 0 4px 14px rgba(31, 78, 121, 0.08);
}

.cad-card:active {
  transform: scale(0.98);
}

.cad-card-icon {
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #EEF3FA;
  border-radius: 8px;
  color: var(--navy);
  margin-bottom: 12px;
}

.cad-card-icon svg {
  width: 22px;
  height: 22px;
}

.cad-card-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 4px;
}

.cad-card-desc {
  font-size: 12px;
  color: var(--text2);
  line-height: 1.4;
}

/* BOTÃO VOLTAR ══════════════════════════════════════════════ */
.btn-voltar {
  background: transparent;
  border: none;
  color: var(--navy-m);
  font-family: var(--font-base);
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  padding: 4px 0;
  margin-bottom: 6px;
}

.btn-voltar:hover {
  color: var(--navy);
  text-decoration: underline;
}

/* PLANO DE CONTAS — indentação hierárquica ═════════════════ */
.tabela td.indent-1 { padding-left: 34px; }
.tabela td.indent-2 { padding-left: 54px; }
.tabela td.indent-3 { padding-left: 74px; }
.tabela td.indent-4 { padding-left: 94px; }

.tree-prefix {
  color: var(--text3);
  font-family: var(--font-mono);
  font-size: 11px;
  margin-right: 6px;
}

.tipo-receita {
  color: var(--pos);
  font-weight: 600;
}

.tipo-despesa {
  color: var(--neg);
  font-weight: 600;
}

.hint-small {
  font-size: 11px;
  color: var(--text3);
  margin-top: 2px;
  font-style: italic;
}
/* NAVEGAÇÃO DE MÊS ══════════════════════════════════════════ */
.mes-nav {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 16px;
}

/* Filtro de período em modos (Ano · Mês · Período livre) */
.filtro-data {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.filtro-data select,
.filtro-data input {
  font-size: 12px;   /* visual: padrão global (tokens.css) */
}
.filtro-data-periodo {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.filtro-data-periodo .ate {
  color: var(--text2);
  font-size: 12px;
}

/* Cadastro inline (contraparte na capa; categoria/CC nas linhas de item) */
.campo-com-add {
  display: flex;
  align-items: center;
  gap: 6px;
}
.campo-com-add select {
  flex: 1;
  min-width: 0;
}
.btn-inline-add {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border: 1.5px solid var(--border);
  border-radius: 5px;
  background: var(--white);
  color: var(--navy);
  font-size: 16px;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
}
.btn-inline-add:hover {
  border-color: var(--navy);
  background: var(--bg);
}
.inline-form {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-top: 6px;
  padding: 8px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 5px;
}
.inline-form input,
.inline-form select {
  padding: 6px 9px;   /* compacto; visual do padrão global */
  font-size: 12px;
}
.inline-form input.if-nome,
.inline-form #cpInlineNome {
  flex: 1;
  min-width: 140px;
}
.btn-sm {
  padding: 6px 12px;
  font-size: 12px;
}
.inline-form-erro {
  color: var(--neg);
  font-size: 11px;
  flex-basis: 100%;
}

/* Drill-down da divergência (reusa .drawer/.drawer-overlay; conteúdo próprio) */
td.conc-diff-click { cursor: pointer; }
td.conc-diff-click:hover { background: var(--bg); }
.drill-body {
  flex: 1;
  overflow-y: auto;
  padding: 16px 20px;
}
.drill-resumo {
  display: flex;
  gap: 20px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.drill-resumo .dr-item { display: flex; flex-direction: column; gap: 2px; }
.drill-resumo .dr-label { color: var(--text2); font-size: 11px; }
.drill-resumo .dr-val { font-family: var(--font-mono); font-weight: 600; font-size: 14px; }
.drill-nota {
  font-size: 11px;
  color: var(--text2);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 5px;
  padding: 8px 10px;
  margin-bottom: 12px;
}
.drill-tabela th,
.drill-tabela td { padding: 8px 10px; font-size: 12px; }
tr.drill-linha-clicavel { cursor: pointer; }
tr.drill-linha-clicavel:hover { background: var(--bg); }

/* Ações do header de Lançamentos (Transferência + Novo) */
.header-acoes { display: flex; align-items: center; gap: 8px; }

/* #6 Peça 2: fechamento do mês na conciliação */
.conc-fechamento { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.conc-fech-motivo { font-size: 11px; color: var(--neg); max-width: 360px; }
.selo-fechado {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 10px;
  background: var(--pos);
  color: #fff;
  font-size: 11px;
  font-weight: 600;
}
.selo-fechado[hidden] { display: none; }  /* o display:inline-block vencia o [hidden] do UA */
#btnFecharMes:disabled { opacity: .45; cursor: not-allowed; }

/* Seleção multi-célula na DRE (soma/média) */
.sel-cell { cursor: cell; }
.sel-cell.sel-on {
  background: rgba(59, 130, 196, .22);            /* navy-l suave */
  box-shadow: inset 0 0 0 1px var(--navy-l);
}
.dre-sel-bar {
  position: sticky;
  bottom: 10px;
  left: auto;
  width: fit-content;
  margin-left: auto;                              /* pílula compacta no canto inferior direito */
  margin-right: 10px;
  display: none;                                  /* vira flex quando há seleção */
  align-items: center;
  justify-content: flex-end;
  gap: 14px;
  height: 30px;
  padding: 0 14px;
  background: var(--navy);
  color: #fff;
  border-radius: 8px;
  box-shadow: 0 4px 14px rgba(15, 28, 46, .28);
  font-family: var(--font-base);
  font-size: 11px;
  z-index: 5;
}
.dre-sel-bar .num { font-family: var(--font-mono); font-size: 12px; }
.dre-sel-bar .nat { color: #cdd; font-size: 10.5px; }

/* Seletores de mês/ano da conciliação (substituem o label estático .mes-nav-label).
   padding-right preserva os 30px da seta do tema (tokens.css) — encurtar cobria o texto. */
.mes-nav select.mes-nav-sel {
  width: auto;
  min-width: 0;
  padding: 6px 30px 6px 10px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

.btn-icon {
  padding: 6px 12px;
  font-size: 16px;
  line-height: 1;
}

/* RESUMO DO MÊS ═════════════════════════════════════════════ */
.resumo-mes {
  margin-bottom: 16px;
}

.resumo-mes .card-value.pos { color: var(--pos); }
.resumo-mes .card-value.neg { color: var(--neg); }

/* FILTROS ═══════════════════════════════════════════════════ */
.filtros {
  display: flex;
  gap: 8px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}

.filtros select,
.filtros input {
  font-size: 12px;   /* visual: padrão global (tokens.css) */
}

.filtros input {
  flex: 1;
  min-width: 200px;
}

/* MODAL GRANDE ══════════════════════════════════════════════ */
.modal-box-lg {
  width: 860px;
  max-width: 92vw;
}

/* SEÇÕES DO FORMULÁRIO ══════════════════════════════════════ */
.form-secao {
  border-top: 1px solid var(--border);
  padding-top: 14px;
  margin-top: 14px;
}

.form-secao:first-of-type {
  border-top: none;
  padding-top: 0;
  margin-top: 0;
}

.form-secao-titulo {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--navy);
  margin-bottom: 6px;
}

.form-secao-titulo-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 6px;
}

.form-secao-titulo-row .form-secao-titulo {
  margin-bottom: 0;
}

.form-col-2 {
  flex: 2;
}

/* RADIO PILL ════════════════════════════════════════════════ */
.radio-group {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.radio-opt {
  cursor: pointer;
  margin: 0;
  padding: 0;
  font-size: 12px;
  font-weight: normal;
  letter-spacing: 0;
  text-transform: none;
  color: var(--text);
}

.radio-opt input[type="radio"] {
  display: none;
}

.radio-pill {
  display: inline-block;
  padding: 7px 14px;
  border-radius: 18px;
  background: var(--bg);
  border: 1.5px solid var(--border);
  color: var(--text2);
  font-size: 12px;
  font-weight: 600;
  transition: all 0.15s;
}

.radio-pill:hover {
  border-color: var(--navy-l);
}

.radio-opt input[type="radio"]:checked + .radio-pill {
  background: var(--navy);
  border-color: var(--navy);
  color: var(--white);
}

.radio-opt input[type="radio"]:checked + .radio-pill.pos {
  background: var(--pos);
  border-color: var(--pos);
}

.radio-opt input[type="radio"]:checked + .radio-pill.neg {
  background: var(--neg);
  border-color: var(--neg);
}

.radio-opt input[type="radio"]:checked + .radio-pill.realizado {
  background: var(--pos);
  border-color: var(--pos);
}

/* TOGGLE MODO RATEIO (valor/percentual) ═════════════════════ */
.toggle-modo {
  display: inline-flex;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 5px;
  padding: 2px;
}

.toggle-opt {
  cursor: pointer;
  margin: 0;
}

.toggle-opt input[type="radio"] {
  display: none;
}

.toggle-opt span {
  display: inline-block;
  padding: 5px 12px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 500;
  color: var(--text2);
  transition: all 0.15s;
}

.toggle-opt input[type="radio"]:checked + span {
  background: var(--white);
  color: var(--navy);
  font-weight: 600;
  box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}

/* MINI-TABELA DE ITENS ══════════════════════════════════════ */
.itens-wrap {
  border: 1px solid var(--border);
  border-radius: 6px;
  overflow: hidden;
  margin-top: 8px;
}

.itens-tabela {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  /* fixed: colunas com largura definida — gatilho longo vira reticências e NÃO
     empurra a coluna VALOR (table-layout:auto dimensionava pela largura do texto). */
  table-layout: fixed;
}
/* mais espaço pra Categoria/CC (que truncavam) e VALOR só o necessário pro número */
.itens-tabela th:nth-child(1), .itens-tabela td:nth-child(1) { width: 45%; }
.itens-tabela th:nth-child(2), .itens-tabela td:nth-child(2) { width: 35%; }
.itens-tabela th:nth-child(3), .itens-tabela td:nth-child(3) { width: 110px; }

.itens-tabela thead {
  background: var(--navy-050);
  border-bottom: 1px solid var(--border);
}

.itens-tabela th {
  text-align: left;
  padding: 8px 10px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: var(--text2);
}

.itens-tabela th.num,
.itens-tabela td.num {
  text-align: right;
}

.itens-tabela th.acoes-mini,
.itens-tabela td.acoes-mini {
  width: 32px;
  text-align: center;
}

.itens-tabela td {
  padding: 6px 8px;
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
}

.itens-tabela tbody tr:last-child td {
  border-bottom: none;
}

.itens-tabela select,
.itens-tabela input {
  width: 100%;
  border: 1px solid transparent;
  background: transparent;
  padding: 5px 6px;
  font-family: var(--font-base);
  font-size: 12px;
  color: var(--text);
  outline: none;
  border-radius: 3px;
}

.itens-tabela select:hover,
.itens-tabela input:hover {
  background: var(--navy-050);
}

.itens-tabela select:focus,
.itens-tabela input:focus {
  border-color: var(--navy-l);
  background: var(--white);
}

.itens-tabela input.num {
  text-align: right;
  font-family: var(--font-mono);
}

.itens-tabela tfoot {
  background: #FAFCFE;
  font-weight: 600;
}

.itens-tabela tfoot td {
  padding: 8px 10px;
  border-top: 1.5px solid var(--border);
  border-bottom: none;
  font-size: 12px;
}

.itens-foot-label {
  color: var(--text2);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.4px;
}

.itens-tabela td.danger,
.itens-tabela .danger {
  color: var(--neg);
}

.btn-remove-item {
  background: transparent;
  border: none;
  color: var(--text3);
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  padding: 4px 6px;
  border-radius: 3px;
}

.btn-remove-item:hover {
  color: var(--neg);
  background: #FBE0E0;
}

/* SÉRIE ═════════════════════════════════════════════════════ */
.serie-detail {
  margin-top: 12px;
  padding: 12px;
  background: var(--bg);
  border-radius: 6px;
}

.serie-detail input[type="number"] {
  width: 120px;
}

/* TABELA DE LANÇAMENTOS — pills e cores ════════════════════ */
/* Direção do dinheiro: chip compacto em Manrope (número/dado, não decoração) */
.tipo-pill {
  display: inline-block;
  padding: 2px 7px;
  border-radius: 6px;
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.3px;
  text-transform: uppercase;
}

.tipo-pill.entrada {
  background: var(--pos-bg);
  color: var(--pos);
}

.tipo-pill.saida {
  background: var(--neg-bg);
  color: var(--neg);
}

.tabela .valor-entrada {
  color: var(--pos);
  font-weight: 600;
}

.tabela .valor-saida {
  color: var(--neg);
  font-weight: 600;
}

.badge.previsto {
  background: var(--warn-bg);
  color: var(--warn);
}

.badge.realizado {
  background: var(--pos-bg);
  color: var(--pos);
}

.badge.atrasado {
  background: var(--neg-bg);
  color: var(--neg);
}

/* Marcador de série (recorrente "2/12 ↻" e parcelado "3/10"): chip azul em Manrope */
.serie-marker {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  color: var(--navy);
  background: var(--navy-050);
  border-radius: 6px;
  padding: 1px 6px;
  margin-left: 6px;
}

.cat-multi {
  font-size: 11px;
  color: var(--text3);
  font-style: italic;
}
/* DRAWER ════════════════════════════════════════════════════ */
.drawer-overlay {
  position: fixed;
  inset: 0;
  background: rgba(20, 36, 60, 0.35);
  z-index: 1900;
  animation: fadeIn 0.2s ease;
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.drawer {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: 480px;
  max-width: 92vw;
  background: var(--white);
  box-shadow: -12px 0 40px rgba(0, 0, 0, 0.2);
  z-index: 1950;
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform 0.25s ease;
}

.drawer.open {
  /* `none` (não translateX(0)): transform ≠ none vira containing block de
     position:fixed e deslocava o popup do select pesquisável dentro do drawer */
  transform: none;
}

/* Categorização precisa de mais espaço (lista de itens + soma) */
.drawer-header {
  padding: 22px 24px 18px;
  border-bottom: 1px solid var(--border);
  position: relative;
  background: var(--bg);
}

.drawer-close {
  position: absolute;
  top: 14px;
  right: 16px;
  width: 30px;
  height: 30px;
  background: transparent;
  border: none;
  font-size: 22px;
  color: var(--text3);
  cursor: pointer;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

.drawer-close:hover {
  background: var(--border);
  color: var(--text);
}

.drawer-header h2 {
  font-size: 17px;
  font-weight: 600;
  color: var(--text);
  margin: 0 30px 10px 0;
  line-height: 1.3;
}

.drawer-pills {
  display: flex;
  gap: 6px;
  align-items: center;
}

.drawer-body {
  flex: 1;
  overflow-y: auto;
  padding: 18px 24px;
}

.drw-secao {
  padding: 12px 0;
  border-bottom: 1px solid var(--border);
}

.drw-secao:last-child {
  border-bottom: none;
}

.drw-secao-titulo {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--navy);
  margin-bottom: 8px;
}

.drw-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: 13px;
  padding: 3px 0;
  gap: 12px;
}

.drw-label {
  color: var(--text2);
  font-size: 12px;
  flex-shrink: 0;
}

.drw-row > span:last-child {
  color: var(--text);
  text-align: right;
}

.drw-valor {
  font-size: 22px;
  font-weight: 700;
  color: var(--text);
  font-family: var(--font-mono);
}

.drw-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 8px 10px;
  background: var(--bg);
  border-radius: 5px;
  margin-bottom: 6px;
  font-size: 12px;
  gap: 12px;
}

.drw-item-info {
  flex: 1;
}

.drw-item-categ {
  font-weight: 600;
  color: var(--text);
  margin-bottom: 2px;
}

.drw-item-cc {
  font-size: 11px;
  color: var(--text3);
}

.drw-item-valor {
  font-family: var(--font-mono);
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
}

.drw-audit {
  font-size: 11px;
  color: var(--text3);
  font-style: italic;
}

.drawer-actions {
  padding: 14px 24px;
  border-top: 1px solid var(--border);
  display: flex;
  gap: 8px;
  background: var(--white);
}

.drawer-actions button {
  flex: 1;
}

.btn-secondary.danger-bg {
  color: var(--neg);
  border-color: #F0C7C7;
}

.btn-secondary.danger-bg:hover {
  background: #FBE0E0;
  color: var(--neg);
}

/* Linha da tabela clicável */
.tabela tbody tr.clicavel {
  cursor: pointer;
}

/* ═══ Tela de revisão de OFX ═══ */
.rev-painel {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: white;
  border: 1px solid var(--border, #D5DDE8);
  border-radius: 8px;
  padding: 12px 16px;
  margin-bottom: 12px;
}
.rev-contadores {
  display: flex;
  gap: 18px;
  font-size: 12px;
  color: var(--text2, #4A607A);
}
.rev-cont strong {
  color: var(--text, #1A2636);
  font-family: var(--font-mono);
  margin-left: 4px;
}
.dot-match, .dot-novo, .dot-ign, .dot-duplicata {
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 50%;
  margin-right: 4px;
  vertical-align: middle;
}
.dot-match { background: var(--pos); }
.dot-novo  { background: var(--navy); }
.dot-ign   { background: #B0BBCA; }
.dot-duplicata { background: #B45309; }

.tabela-revisao input.rev-edit,
.tabela-revisao select.rev-edit {
  width: 100%;
  padding: 3px 6px;   /* denso (célula de tabela); visual do padrão global */
  font-size: 11px;
  border-radius: 6px;
}
.tabela-revisao tr.linha-match { background: rgba(26, 122, 46, 0.06); }
.tabela-revisao tr.linha-decidida { background: rgba(31, 78, 121, 0.05); opacity: 0.75; }
.tabela-revisao tr.linha-ignorada { background: rgba(176, 187, 202, 0.15); opacity: 0.55; }
.tabela-revisao .rev-desc { font-size: 12px; }
.tabela-revisao .rev-substate { font-size: 10.5px; margin-top: 3px; }
.tabela-revisao .rev-substate.ok { color: var(--pos); }
.tabela-revisao .rev-substate.pend { color: var(--text2, #4A607A); font-style: italic; }
.tabela-revisao .rev-origem-hist {
  display: inline-block;
  font-size: 9px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 1px 5px;
  margin-left: 4px;
  border-radius: 3px;
  background: rgba(133, 100, 4, 0.12);
  color: #856404;
  font-style: normal;
  vertical-align: middle;
}
.tabela-revisao .rev-duplicata { font-size: 10.5px; color: #B45309; }
.tabela-revisao .rev-duplicata strong { font-weight: 600; }
.tabela-revisao tr.linha-duplicata { background: rgba(180, 83, 9, 0.07); }

/* Modal de revisão de possíveis duplicatas (pares banco × realizado) */
.dup-header { display:grid; grid-template-columns: 1fr 1fr; gap:12px; padding:8px 0 6px 28px; font-size:10.5px; font-weight:600; color:var(--text2); }
.dup-par { display:grid; grid-template-columns: 18px 1fr 1fr; gap:10px; align-items:center; padding:8px 10px; border:1px solid var(--border); border-radius:4px; margin-bottom:6px; font-size:11.5px; cursor:pointer; }
.dup-par:hover { background:#F4F8FC; }
.dup-par input { cursor:pointer; }
.dup-lado { line-height:1.45; }
.dup-tag { display:inline-block; font-size:9px; text-transform:uppercase; letter-spacing:.04em; color:var(--text3); margin-right:5px; }
.dup-real { color:#B45309; }
.tabela-revisao .rev-match-info {
  font-size: 10.5px;
  color: var(--pos, #1A5C2A);
  line-height: 1.3;
}
.tabela-revisao .rev-match-info strong { font-weight: 600; }
.tabela-revisao .acoes-rev { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
/* Botões de linha da revisão no padrão do sistema (raio 8, borda quente, hover navy).
   As exceções (.acoes-kebab, .acoes-item, .btn-link) re-assumem o estilo global logo abaixo. */
.tabela-revisao .acoes-rev button {
  padding: 5px 10px;
  font: inherit;
  font-size: 11px;
  font-weight: 600;
  border-radius: 8px;
  border: 1px solid var(--border2);
  background: var(--white);
  color: var(--text);
  cursor: pointer;
  transition: border-color .12s, color .12s;
}
.tabela-revisao .acoes-rev button:hover {
  border-color: var(--navy);
  color: var(--navy);
}
.tabela-revisao .acoes-rev .acoes-kebab { padding: 0; width: 28px; height: 28px; color: var(--text2); }
.tabela-revisao .acoes-rev .acoes-item {
  border: none; background: transparent; border-radius: 7px;
  padding: 7px 10px; font-size: 12px; font-weight: 400; text-align: left;
}
.tabela-revisao .acoes-rev .acoes-item:hover { background: var(--navy-050); color: var(--text); }
.tabela-revisao .acoes-rev .btn-link {
  border: none; background: transparent; border-radius: 7px;
  padding: 4px 8px; font-size: 12px; font-weight: 400; color: var(--navy-m);
}
.tabela-revisao .acoes-rev .btn-link:hover { background: var(--navy-050); }
.tabela-revisao .acoes-rev .btn-conf {
  background: var(--navy);
  color: var(--white);
  border-color: var(--navy);
}
.tabela-revisao .acoes-rev .btn-conf:hover { background: var(--navy-m); color: var(--white); }
.tabela-revisao .acoes-rev .btn-conf-match {
  background: var(--pos);
  color: var(--white);
  border-color: var(--pos);
}
.tabela-revisao .acoes-rev .btn-conf-match:hover { color: var(--white); border-color: var(--pos); }
.tabela-revisao .acoes-rev .btn-ign {
  color: var(--text2);
}
.tabela-revisao .acoes-rev .btn-desfazer {
  color: var(--navy-m);
}
.tabela-revisao .badge-status {
  display: inline-block;
  padding: 2px 8px;
  font-size: 10px;
  border-radius: 3px;
  font-weight: 500;
}
.badge-matched   { background: var(--pos-bg); color: var(--pos); }
.badge-criado    { background: rgba(31, 78, 121, 0.15); color: var(--navy, var(--navy)); }
.badge-ignorada  { background: rgba(176, 187, 202, 0.25); color: var(--text2, #4A607A); }
.btn-primary:disabled,
.btn-secondary:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  pointer-events: none;
}

.tabela-revisao .acoes-rev .btn-transf {
  background: #856404;
  color: white;
  border-color: #856404;
}
.tabela-revisao tr.linha-pendente { background: rgba(133, 100, 4, 0.06); }
.badge-transf   { background: rgba(133, 100, 4, 0.15); color: #856404; }
.badge-pendente { background: rgba(133, 100, 4, 0.10); color: #856404; }

/* ═══ Agrupamento da revisão OFX (cabeçalhos de grupo + recolher resolvidas) ═══ */
.tabela-revisao tr.rev-grupo td {
  background: rgba(31, 78, 121, 0.05);
  color: var(--navy, var(--navy));
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 7px 10px;
  border-top: 1px solid var(--border, #D5DDE8);
}
.tabela-revisao tr.rev-grupo-ok td { color: var(--pos); background: var(--pos-bg); }
.tabela-revisao tr.rev-grupo-toggle { cursor: pointer; }
.tabela-revisao tr.rev-grupo-toggle:hover td { background: rgba(31, 78, 121, 0.09); }
.tabela-revisao .rev-grupo-sub {
  text-transform: none;
  font-weight: 400;
  color: var(--text2, #4A607A);
  margin-left: 4px;
}
.tabela-revisao .rev-grupo-seta {
  display: inline-block;
  transition: transform 0.15s ease;
}
/* seta aponta pra baixo quando o grupo está expandido */
#tbodyRevisao:not(.resolvidas-recolhidas) .rev-grupo-seta { transform: rotate(90deg); }
/* recolhido: esconde as linhas resolvidas */
#tbodyRevisao.resolvidas-recolhidas .rev-linha-resolvida { display: none; }

/* Revisão OFX: checkbox de lote inline, ao lado da data (o reset global de input é block) */
.tabela-revisao td.rev-td-sel { white-space: nowrap; }
.tabela-revisao input.rev-sel-lote {
  display: inline-block;
  width: auto;
  margin: 0 6px 0 0;
  vertical-align: -2px;
  cursor: pointer;
}

/* Lista de importações: grupo "Concluídas e canceladas" recolhível */
tr.imp-grupo-toggle td {
  background: rgba(31, 78, 121, 0.05);
  color: var(--navy);
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 7px 10px;
  border-top: 1px solid var(--border, #D5DDE8);
  cursor: pointer;
}
tr.imp-grupo-toggle:hover td { background: rgba(31, 78, 121, 0.09); }

.conc-saldo-box {
  padding: 12px;
  border-radius: 6px;
  font-family: var(--font-mono);
  font-size: 12px;
  margin-top: 6px;
}
.conc-saldo-box.ok    { background: rgba(26, 122, 46, 0.08); color: #1A5C2A; border: 1px solid rgba(26, 122, 46, 0.3); }
.conc-saldo-box.warn  { background: rgba(192, 0, 0, 0.06); color: #8B0000; border: 1px solid rgba(192, 0, 0, 0.3); }
.conc-saldo-linha { display: flex; justify-content: space-between; padding: 2px 0; }
.conc-prev-item {
  padding: 6px 8px;
  border-bottom: 1px solid #EEE;
  font-size: 11.5px;
  display: flex;
  justify-content: space-between;
}
.conc-prev-item:last-child { border-bottom: none; }

/* ═══ Rateio multi-item ═══ */
.rateio-header {
  display: grid;
  grid-template-columns: 1fr 1fr 120px 32px;
  gap: 8px;
  padding: 6px 0;
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--text3, #8A9DB5);
  border-bottom: 1px solid var(--border, #D5DDE8);
}
.rateio-item {
  display: grid;
  grid-template-columns: 1fr 1fr 120px 32px;
  gap: 8px;
  padding: 6px 0;
  align-items: center;
}
.rateio-item select,
.rateio-item input {
  padding: 5px 8px;
  font-size: 12px;
  border: 1px solid var(--border, #D5DDE8);
  border-radius: 3px;
}
.rateio-item input { text-align: right; font-family: var(--font-mono); }
.rateio-item .btn-remover {
  background: transparent;
  border: 1px solid var(--border, #D5DDE8);
  color: var(--neg, #C00000);
  border-radius: 3px;
  padding: 4px 8px;
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
}
.rateio-item .btn-remover:hover { background: rgba(192, 0, 0, 0.08); }
.rateio-item .btn-remover:disabled { opacity: 0.3; cursor: not-allowed; }

.rateio-resumo {
  background: var(--navy-050);
  padding: 12px 14px;
  border-radius: 6px;
  margin-top: 12px;
  font-family: var(--font-mono);
  font-size: 12px;
}
.rateio-resumo-linha {
  display: flex;
  justify-content: space-between;
  padding: 2px 0;
}
.rateio-resumo-linha.diferenca-warn strong { color: var(--neg, #C00000); }
.rateio-resumo-linha.diferenca-ok strong   { color: var(--pos, #1A5C2A); }

/* Link "Rateio" embaixo do select da categoria na linha de revisão */
.rev-rateio-link {
  display: block;
  margin-top: 3px;
  font-size: 10px;
  color: var(--navy-m, var(--navy-m));
  cursor: pointer;
  text-decoration: underline;
}
.rev-rateio-link:hover { color: var(--navy, var(--navy)); }
.rev-rateio-marcado {
  font-size: 11px;
  padding: 3px 6px;
  background: rgba(31, 78, 121, 0.08);
  border: 1px solid rgba(31, 78, 121, 0.2);
  border-radius: 3px;
  text-align: center;
  color: var(--navy, var(--navy));
}

/* ═══ Reclassificação em lote (tela Lançamentos) ═══ */

.tabela th.cb-col,
.tabela td.cb-col {
  width: 36px;
  text-align: center;
  padding-left: 8px;
  padding-right: 4px;
}

.tabela td.cb-col input[type="checkbox"],
.tabela th.cb-col input[type="checkbox"] {
  cursor: pointer;
  width: 16px;
  height: 16px;
}

.lanc-barra-lote {
  position: sticky;
  top: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 10px 14px;
  margin-bottom: 8px;
  background: #1e3a8a;
  color: #fff;
  border-radius: 6px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
}

.lanc-barra-lote .lbl-lote {
  font-size: 14px;
}

.lanc-barra-lote .lbl-lote strong {
  font-weight: 700;
  font-size: 15px;
}

.lanc-barra-lote .lote-acoes {
  display: flex;
  align-items: center;
  gap: 12px;
}

.lanc-barra-lote .btn-link {
  color: #cbd5e1;
  background: transparent;
  border: none;
  cursor: pointer;
  font-size: 13px;
  text-decoration: underline;
}

.lanc-barra-lote .btn-link:hover {
  color: #fff;
}

.lanc-barra-lote .btn-primary {
  background: #fff;
  color: #1e3a8a;
  border: none;
}

.lanc-barra-lote .btn-primary:hover {
  background: #e0e7ff;
}

/* Modal de aplicação em lote — escopado só a ele (antes limitava TODOS os
   modais grandes a 640px, estreitando lançamento/CNPJ sem querer). */
#modalLoteLanc .modal-box-lg {
  width: 640px;
}

.lote-campos {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 14px 0;
}

.lote-linha {
  display: grid;
  grid-template-columns: 28px 180px 1fr;
  align-items: center;
  gap: 10px;
  padding: 6px 0;
  cursor: default;
}

.lote-linha .lote-toggle {
  cursor: pointer;
  width: 16px;
  height: 16px;
}

.lote-linha .lote-rotulo {
  font-weight: 500;
  color: #374151;
}

.lote-linha input[type="date"],
.lote-linha select {
  width: 100%;
}

.lote-linha input:disabled,
.lote-linha select:disabled {
  background: #f1f5f9;
  color: #94a3b8;
  cursor: not-allowed;
}

.lote-aviso {
  grid-column: 2 / -1;
  font-size: 12px;
  color: #b45309;
  margin: -2px 0 4px 38px;
}

.lote-status-extras {
  margin-top: 12px;
  padding: 12px;
  background: #f8fafc;
  border-left: 3px solid #1e3a8a;
  border-radius: 4px;
}

/* ═══ Match manual N:N (tela de revisão OFX) ═══ */

/* Botão Categorizar na linha de revisão */
.tabela-revisao .acoes-rev .btn-cat {
  background: var(--navy);
  color: var(--white);
  border-color: var(--navy);
}
.tabela-revisao .acoes-rev .btn-cat:hover { background: var(--navy-m); color: var(--white); }

/* O menu ⋯ (Transferência / Ignorar) usa o kebab padrão .acoes-menu/.acoes-pop */

/* Badge "Match com N itens" + link Editar match (substitui selects inline) */
.tabela-revisao .rev-match-aplicado {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.tabela-revisao .rev-match-badge {
  display: inline-block;
  padding: 2px 8px;
  font-size: 10.5px;
  border-radius: 3px;
  font-weight: 500;
  background: var(--pos-bg);
  color: var(--pos);
  width: fit-content;
}
.tabela-revisao .rev-match-editar {
  font-size: 10px;
  color: var(--navy-m, var(--navy-m));
  cursor: pointer;
  text-decoration: underline;
}
.tabela-revisao .rev-match-editar:hover { color: var(--navy, var(--navy)); }
.tabela-revisao tr.linha-matched { background: rgba(26, 122, 46, 0.12); }   /* verde reforçado de leve (Arthur, 21/07) */

/* Filtros do modal Categorizar */
.cat-filtros {
  margin: 12px 0;
  padding: 12px;
  background: var(--navy-050);
  border-radius: 6px;
}
.cat-filtros-linha {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.cat-filtro-campo {
  display: flex;
  flex-direction: column;
  gap: 3px;
  flex: 1 1 130px;
}
.cat-filtro-campo.cat-filtro-largo { flex: 2 1 240px; }
.cat-filtro-campo label {
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  color: var(--text3, #8A9DB5);
}
.cat-filtro-campo input,
.cat-filtro-campo select {
  padding: 6px 8px;   /* compacto (drawer); visual do padrão global */
  font-size: 12px;
}
.cat-filtro-campo input[readonly] {
  background: #EEF2F7;
  color: var(--text2, #4A607A);
  cursor: not-allowed;
}
.cat-filtros-avancados { margin-top: 10px; }
.cat-filtros-acoes {
  margin-top: 10px;
  display: flex;
  justify-content: flex-end;
}

/* Lista de previstos compatíveis */
.cat-lista-previstos {
  max-height: 260px;
  overflow-y: auto;
  border: 1px solid var(--border, #D5DDE8);
  border-radius: 4px;
}
.cat-prev-vazio {
  padding: 16px;
  text-align: center;
  font-size: 12px;
  color: var(--text3, #8A9DB5);
}
.cat-prev-item {
  display: grid;
  grid-template-columns: 28px 90px 1fr 130px 110px;
  gap: 8px;
  align-items: center;
  padding: 7px 10px;
  border-bottom: 1px solid #EEF2F7;
  font-size: 11.5px;
}
.cat-prev-item:last-child { border-bottom: none; }
.cat-prev-item input[type="checkbox"] { width: 16px; height: 16px; cursor: pointer; }
.cat-prev-item .cat-prev-desc strong { font-weight: 600; }
.cat-prev-item .cat-prev-sub { color: var(--text3, #8A9DB5); font-size: 10px; }
.cat-prev-item .cat-prev-valor {
  text-align: right;
  font-family: var(--font-mono);
}
.cat-prev-item.cat-prev-disabled { opacity: 0.6; background: #FAFBFC; }
.cat-prev-item .cat-prev-aviso { color: #856404; font-size: 10px; }

/* Adicionar lançamento novo (colapsável) */
.cat-novo { margin-top: 12px; }
.cat-novo-toggle {
  background: transparent;
  border: 1px dashed var(--border, #D5DDE8);
  border-radius: 4px;
  padding: 8px 12px;
  width: 100%;
  text-align: left;
  font-size: 12px;
  color: var(--navy-m, var(--navy-m));
  cursor: pointer;
}
.cat-novo-toggle:hover { background: #F4F8FC; }
.cat-novo-corpo {
  margin-top: 8px;
  padding: 12px;
  background: var(--navy-050);
  border-radius: 6px;
}
.cat-novo-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

/* Contador de soma */
.cat-contador {
  display: flex;
  justify-content: space-between;
  margin-top: 14px;
  padding: 10px 14px;
  border-radius: 6px;
  font-size: 13px;
  font-family: var(--font-mono);
  background: rgba(192, 0, 0, 0.06);
  color: #8B0000;
  border: 1px solid rgba(192, 0, 0, 0.25);
}
.cat-contador.cat-soma-ok {
  background: rgba(26, 122, 46, 0.08);
  color: #1A5C2A;
  border-color: rgba(26, 122, 46, 0.3);
}
.cat-contador strong { font-weight: 700; }

/* Busca manual de previsto + completar-ao-conciliar (drawer da revisão OFX) */
.cat-busca-input {
  width: 100%;
  font-size: 12px;
  margin-bottom: 8px;   /* visual: padrão global */
}
#catCompletar { margin-top: 10px; padding: 10px; background: rgba(180, 83, 9, 0.06); border: 1px solid rgba(180, 83, 9, 0.25); border-radius: 6px; }
.cat-completar-titulo { font-size: 10px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: #B45309; margin-bottom: 6px; }
.cat-completar-item { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 6px; }
.cat-completar-desc { flex: 1 1 100%; font-size: 11.5px; font-weight: 600; color: var(--text); }
.cat-completar-item select { flex: 1 1 45%; padding: 5px 7px; font-size: 11.5px; border-radius: 6px; }

/* Drawer de categorização (revisão OFX): fonte única da largura (era duplicada e estreita) */
.drawer-cat { width: min(820px, 94vw); }
#drawerCat .cat-novo { margin-top: 0; }
/* coluna única, sem flex-grow (senão os campos esticam vertical e abrem vãos enormes) */
#drawerCat .cat-novo-grid { flex-direction: column; flex-wrap: nowrap; gap: 10px; }
#drawerCat .cat-novo-grid .cat-filtro-campo { width: 100%; flex: 0 0 auto; }
#drawerCat .cat-contador { flex-direction: column; gap: 4px; margin-top: 12px; }
.cat-delta-info { font-size: 11px; font-weight: 600; font-family: var(--font-base); }

/* Rateio dentro de "Criar lançamento novo" do modal Categorizar */
.cat-novo-rateio { margin-top: 10px; }
.cat-novo-rateio-link {
  font-size: 11px;
  color: var(--navy-m, var(--navy-m));
  cursor: pointer;
  text-decoration: underline;
  margin-right: 12px;
}
.cat-novo-rateio-link:hover { color: var(--navy, var(--navy)); }
.cat-novo-rateio-marcado {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 11.5px;
  padding: 6px 8px;
  background: rgba(31, 78, 121, 0.08);
  border: 1px solid rgba(31, 78, 121, 0.2);
  border-radius: 3px;
  color: var(--navy, var(--navy));
}

/* O modal de rateio precisa empilhar acima do modal Categorizar */
#modalRateio { z-index: 2100; }

/* ─── Importar Documentos (NFS-e / NF-e / boleto) ─────────────── */
.doc-dropzone {
  border: 2px dashed var(--border, #D5DDE8);
  border-radius: 10px;
  padding: 28px;
  text-align: center;
  color: var(--text2, #4A5568);
  background: var(--white, #fff);
  transition: border-color .15s, background .15s;
  margin-bottom: 18px;
}
.doc-dropzone.dragover {
  border-color: var(--navy, var(--navy));
  background: rgba(31, 78, 121, 0.05);
}
.doc-dropzone p { margin: 4px 0; }
.dot-pend {
  display: inline-block;
  width: 9px; height: 9px;
  border-radius: 50%;
  margin-right: 4px;
  vertical-align: middle;
  background: #856404;
}
.tabela-revisao tr.linha-erro { background: rgba(176, 36, 36, 0.06); }
.doc-avisos { font-size: 10.5px; color: #856404; margin-top: 4px; line-height: 1.35; }
.doc-linha-dig { display: flex; gap: 4px; margin-top: 5px; }
.doc-linha-dig input { flex: 1; }

/* ── Contraparte: exibe NOME, confortável de ler/editar ── */
.doc-cp { display: flex; flex-direction: column; gap: 3px; }
.doc-cp-nome-fixo {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--text, #14243C);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.doc-cp .doc-cp-nome { font-size: 12.5px; }   /* input do nome maior que o padrão da revisão */
.doc-cp-criar-row {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  color: var(--text2, #4A607A);
  cursor: pointer;
}
.doc-cp-tag {
  font-size: 9.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .4px;
  padding: 1px 5px;
  border-radius: 3px;
}
.tag-ok   { background: rgba(26, 122, 46, 0.14); color: #1A5C2A; }
.tag-novo { background: rgba(31, 78, 121, 0.14); color: var(--navy, var(--navy)); }
.doc-cp-aviso { font-size: 10.5px; color: #B45309; font-weight: 600; }

/* ── Documento já importado: GRITA (linha bloqueada + banner) ── */
.tabela-revisao tr.linha-dup { background: rgba(180, 83, 9, 0.12); }
.tabela-revisao tr.linha-dup td { border-top: 1px solid rgba(180, 83, 9, 0.28); }
.tabela-revisao tr.linha-criado { background: var(--pos-bg); opacity: 0.82; }
.doc-dup-msg { color: #92400E; font-weight: 700; }
.doc-lock { font-size: 14px; line-height: 1; }
.badge-dup { background: rgba(180, 83, 9, 0.20); color: #92400E; }
.doc-dup-banner {
  background: rgba(180, 83, 9, 0.10);
  border: 1px solid rgba(180, 83, 9, 0.35);
  border-left: 4px solid #B45309;
  color: #92400E;
  padding: 10px 14px;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 600;
  margin-bottom: 14px;
  display: flex;
  align-items: center;
  gap: 8px;
}
/* ═══════════════════════════════════════════════════════════
   DRE CAIXA — motor visual portado do Belacor (adaptado ao LMGF)
   As 5 vars do Belacor que não existem nos tokens (--sec --sub
   --grp --pct --res) são definidas aqui, no escopo da DRE.
═══════════════════════════════════════════════════════════ */
.dre-page {
  --sec: #CFE0F0;   /* seção */
  --sub: #DCE6F1;   /* sub-resultado */
  --grp: #EAF0F7;   /* grupo */
  --pct: #F5F8FC;   /* linha de % */
  --res: #D6E4F2;   /* resultado */
  display: flex;
  flex-direction: column;
  /* 96px do header/padding + 54px do seg-abas (40px de track + 14px de margem) */
  height: calc(100vh - 150px);
}
.dre-msg { display:flex; align-items:center; justify-content:center; height:100%; color:var(--text3); font-size:13px; }
.dre-page .loading { display:flex; align-items:center; justify-content:center; gap:10px; height:100%; color:var(--text3); font-size:13px; }
.dre-page .spin { width:18px; height:18px; border:2.5px solid var(--border); border-top-color:var(--navy); border-radius:50%; animation:dre-spin .7s linear infinite; }
@keyframes dre-spin { to { transform:rotate(360deg); } }

/* ── Toolbar ── */
.dre-toolbar{padding:5px 12px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:6px;flex-shrink:0;flex-wrap:wrap}
.dre-ano-sel{border:1px solid var(--border2);border-radius:8px;padding:4px 26px 4px 10px;font-family:var(--font-base);font-size:12px;font-weight:600;color:var(--navy);background-color:#fff;height:30px;cursor:pointer}
.btn-act{background:var(--sec);color:var(--navy);border:1px solid var(--border2);border-radius:8px;padding:5px 13px;font-family:var(--font-base);font-size:12px;font-weight:600;cursor:pointer;height:30px}
.btn-act:hover{background:var(--border)}

/* ── Tabela ── */
.dre-wrap{flex:1;overflow:auto;position:relative}
table.dre{border-collapse:collapse;white-space:nowrap;width:100%;font-family:var(--font-base)}
.dre thead{position:sticky;top:0;z-index:30}
.dre .fc{position:sticky;left:0;z-index:15;box-shadow:2px 0 4px rgba(0,0,0,.06)}
.dre thead .fc{z-index:40}
.dre .hb{background:var(--navy)!important;color:#fff!important;text-align:center!important;font-size:12px!important;font-weight:700!important;height:36px!important;line-height:36px!important;padding:0 6px!important;border-right:1px solid rgba(255,255,255,.12)!important;border-bottom:1px solid rgba(255,255,255,.08)!important;letter-spacing:.3px!important}
.dre .hm{background:var(--navy-100)!important;color:var(--navy)!important;font-size:12px!important;font-weight:700!important;height:32px!important;line-height:32px!important;padding:0 6px!important;border-right:1px solid #BCCBE8!important;border-bottom:1px solid var(--border2)!important;text-align:right!important}
.dre .hm.fc{text-align:left!important;padding-left:10px!important}
.dre .hm.cur{background:#BDD4EB!important;border-left:1px solid #9BB8D4!important;border-right:1px solid #9BB8D4!important}
.dre .hm.dim{opacity:.5}
.dre .hm.tri-hdr{cursor:pointer}
.dre .sp{background:#DDE3EC!important;width:3px!important;min-width:3px!important;max-width:3px!important;padding:0!important;border:none!important}
.dre tbody tr{border-bottom:1px solid #EAEEF4}
.dre tbody td{padding:0 6px;text-align:right;border-right:1px solid #EAEEF4;background:#fff;font-size:12.5px}
.dre tbody td.fc{text-align:left;background:#fff;border-right:1px solid var(--border2);box-shadow:2px 0 3px rgba(0,0,0,.04)}
.dre tr.r-sec td{background:var(--sec)!important;font-weight:700;font-size:13px;height:28px;border-top:2px solid var(--border2)}
.dre tr.r-sec td.fc{color:var(--navy)}
.dre tr.r-sub td{background:var(--sub)!important;font-weight:600;font-size:12.5px;height:24px;border-top:1px solid #D0DAE6}
.dre tr.r-grp td{background:var(--grp)!important;font-weight:600;font-size:12.5px;height:26px;border-top:1px solid #D8E4F0;cursor:pointer;user-select:none}
.dre tr.r-grp:hover td{background:#E4EBF5!important}
.dre tr.r-pct td{background:var(--pct)!important;color:var(--text3);font-style:italic;font-size:11px;height:18px;border-bottom:1px dashed #E2E8F0}
.dre tr.r-pct td.fc{padding-left:24px!important}
.dre tr.r-det td{background:#fff;font-size:12px;height:22px}
.dre tr.r-det td.fc{padding-left:24px!important;color:var(--text2)}
.dre tr.r-det:hover td{background:#F3F7FC!important}
.dre tr.r-res td{background:var(--res)!important;font-weight:700;font-size:13.5px;height:28px;border-top:2px solid #A8B8C8;border-bottom:2px solid #A8B8C8}
.dre tr.r-sp td{background:#E8ECF2;height:3px;border:none}
.dre .vn,.dre-leg .vn{color:var(--neg)}.dre .vp,.dre-leg .vp{color:var(--pos)}.dre .vz,.dre-leg .vz{color:var(--zero)}
.dre .tog{display:inline-block;width:14px;font-style:normal;font-size:10px;color:var(--navy-l);vertical-align:middle;margin-right:2px}

/* ── Legenda ── */
.dre-leg{padding:6px 12px;background:#fff;border-top:1px solid var(--border);display:flex;align-items:center;gap:18px;flex-shrink:0;font-size:10.5px;color:var(--text2)}
.dre-leg .leg-i{display:flex;align-items:center;gap:5px}
.dre-leg .leg-b{width:13px;height:13px;border:1px solid var(--border2);border-radius:2px}

/* ═══════════════════════════════════════════════════════════
   SEGMENTO DE ABAS — telas irmãs sob um item da sidebar
   (Importar: Extrato/Documentos · DRE: Caixa/Competência)
   --sec do design de referência não é token global no LMGF (só existe
   no escopo .dre-page), então o track usa --bg.
═══════════════════════════════════════════════════════════ */
.seg-abas{
  display:flex; gap:4px;
  margin:0 0 14px; padding:4px;
  background:var(--bg); border:1px solid var(--border);
  border-radius:6px; width:fit-content;
}
.seg-btn{
  height:30px; padding:0 16px;
  font-family:var(--font-base); font-size:11.5px; font-weight:500;
  color:var(--text2); background:transparent;
  border:none; border-radius:4px; cursor:pointer;
}
.seg-btn:hover{ background:var(--white); }
.seg-btn.active{
  background:var(--navy); color:#fff; cursor:default;
}

/* Variante do segmento na barra de filtros (Lançamentos: Competência | Caixa) */
.seg-regime{
  display:inline-flex; gap:4px; padding:4px;
  background:var(--bg); border:1px solid var(--border); border-radius:6px;
}
.seg-regime .seg-btn{ height:30px; }

/* ═══════════════════════════════════════════════════════════
   CONCILIAÇÃO — grade diária (Data + Total fixos; contas rolam)
═══════════════════════════════════════════════════════════ */
.conc-wrap{ overflow:auto; border:1px solid var(--border); border-radius:6px; max-height:calc(100vh - 230px); }
.conc-grade{ border-collapse:separate; border-spacing:0; white-space:nowrap; font-size:11.5px; font-family:var(--font-base); }
.conc-grade th, .conc-grade td{ border-bottom:1px solid var(--border); border-right:1px solid var(--border); padding:4px 8px; text-align:right; background:#fff; min-width:88px; }
.conc-grade thead th{ position:sticky; top:0; z-index:20; background:var(--navy-050); color:var(--text2); font-weight:700; font-size:10.5px; letter-spacing:.6px; text-transform:uppercase; text-align:center; height:26px; }
.conc-grade thead tr:nth-child(2) th{ top:24px; }  /* 2ª linha do cabeçalho empilha abaixo da 1ª (não sobrepõe) */
.conc-grade .conc-conta-grp{ text-align:center; color:var(--navy); }

/* colunas fixas à esquerda (Data + as 3 do Total geral), left cumulativo */
.conc-grade .conc-fix{ position:sticky; z-index:15; }
.conc-grade thead .conc-fix{ z-index:35; }
.conc-grade .conc-c-data  { left:0;     min-width:92px;  width:92px; text-align:left; }
.conc-grade .conc-c-totgrp{ left:92px; }
.conc-grade .conc-c-t1    { left:92px;  min-width:104px; width:104px; }
.conc-grade .conc-c-t2    { left:196px; min-width:104px; width:104px; }
.conc-grade .conc-c-t3    { left:300px; min-width:118px; width:118px; box-shadow:2px 0 4px rgba(0,0,0,.06); }

/* Total geral com destaque leve: fundo azulado e números mais firmes que as contas */
.conc-grade td.conc-c-t1, .conc-grade td.conc-c-t2, .conc-grade td.conc-c-t3{ background:var(--navy-050); font-weight:650; }
.conc-grade thead .conc-c-totgrp, .conc-grade thead .conc-c-t1, .conc-grade thead .conc-c-t2, .conc-grade thead .conc-c-t3{ background:#DCE6F1; color:var(--navy); }

/* fim de semana: linha sombreada (cobre também as fixas, que precisam de bg opaco) */
.conc-grade tr.conc-fds td{ background:#f4f6f9; }
.conc-grade tr.conc-fds td.conc-c-t1, .conc-grade tr.conc-fds td.conc-c-t2, .conc-grade tr.conc-fds td.conc-c-t3{ background:#E4EAF4; }
.conc-grade tr.conc-fds .conc-c-data{ color:var(--text3); }

/* status / valores */
.conc-ok{ color:var(--pos); font-weight:600; }
.conc-diff{ color:var(--neg); font-weight:600; }
.conc-na{ color:var(--text3); }
.conc-semsaldo{ color:var(--text3); font-weight:600; font-size:10px; letter-spacing:.02em; white-space:nowrap; cursor:help; }
.conc-neg{ color:var(--neg); }
.conc-carry{ color:var(--text3); }
.conc-grade .vazio{ text-align:center; color:var(--text3); padding:16px; }

/* ═══ Auditoria (leitura do log, admin-only) ═══ */
#tabAuditoria .vazio { text-align:center; color:var(--text3); padding:16px; }
.aud-op { display:inline-block; padding:2px 8px; font-size:10px; font-weight:600; border-radius:3px; }
.aud-ins { background:rgba(26,122,46,0.15); color:var(--pos); }
.aud-upd { background:rgba(31,78,121,0.15); color:var(--navy); }
.aud-del { background:rgba(192,0,0,0.12); color:var(--neg); }
.aud-na { color:var(--text3); }
.aud-detalhe-box { background:var(--bg); border-radius:5px; padding:10px 12px; font-size:11.5px; }
.aud-campo { padding:2px 0; line-height:1.5; font-family:var(--font-mono); }
.aud-campo .aud-k { display:inline-block; min-width:160px; color:var(--text2); font-family:var(--font-base); }
.aud-seta { color:var(--text3); }

/* edição manual do extrato (Cenário C) — só operador+ */
.conc-grade td.conc-edit{ cursor:pointer; }
.conc-grade td.conc-edit:hover{ background:#eef4fb; }
.conc-grade tr.conc-fds td.conc-edit:hover{ background:#e7edf4; }
/* Lápis fora do fluxo (absoluto, à esquerda): não desloca os números — células
   editáveis e não-editáveis ficam alinhadas (era o 'descentralizado' do SICOOB) */
.conc-grade td.conc-ext{ position:relative; }
.conc-lapis{ position:absolute; left:4px; top:50%; transform:translateY(-50%); color:var(--text3); font-size:10px; opacity:0; }
.conc-grade td.conc-edit:hover .conc-lapis{ opacity:1; }
.conc-grade td.conc-ext-manual .conc-lapis{ opacity:1; }   /* manual: lápis sempre visível */
.conc-informar{ color:var(--navy-l); font-style:italic; }
.conc-input{ width:88px; padding:2px 4px; font-size:11.5px; text-align:right; border:1px solid var(--navy); border-radius:3px; }

/* SELECT PESQUISÁVEL ════════════════════════════════════════ */
.selbusca { position: relative; min-width: 0; }
/* dentro de campo flex (item do rateio): preenche e ENCOLHE como o <select> fazia,
   sem alargar a coluna (o texto longo vira reticências, não empurra o VALOR). */
.campo-com-add .selbusca { flex: 1; min-width: 0; }
.selbusca-trigger {
  width: 100%; box-sizing: border-box;
  text-align: left; padding: 9px 28px 9px 12px;
  border: 1px solid var(--border); border-radius: 6px;
  background: var(--white); color: var(--text);
  font: inherit; font-size: 13px; cursor: pointer;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.selbusca-trigger::after {
  content: "▾"; position: absolute; right: 10px; top: 50%;
  transform: translateY(-50%); color: var(--text3); font-size: 11px; pointer-events: none;
}
.selbusca-trigger.vazio { color: var(--text3); }
.selbusca-trigger:hover { border-color: var(--text3); }
.selbusca-pop {
  position: fixed; z-index: 3000;   /* fixed: escapa do overflow do modal (que recortava a lista) */
  background: var(--white); border: 1px solid var(--border); border-radius: 10px;
  box-shadow: 0 6px 20px rgba(0,0,0,.12); overflow: hidden;
}
.selbusca-input {
  width: 100%; box-sizing: border-box; padding: 8px 10px;
  border: none; border-bottom: 1px solid var(--border); outline: none; font-size: 13px;
}
.selbusca-lista { max-height: 240px; overflow-y: auto; }
.selbusca-op {
  padding: 8px 10px; font-size: 13px; cursor: pointer;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.selbusca-op:hover { background: var(--bg); }
.selbusca-op.sel { background: var(--navy-050); font-weight: 600; }
.selbusca-vazio { padding: 10px; font-size: 12px; color: var(--text3); }
/* Carimbo da empresa no rótulo (contas de grupos multi-CNPJ) — mesmo tom do .cat-multi */
.selbusca-sub { font-size: 11px; color: var(--text3); font-style: italic; font-weight: 400; }

/* Setas de navegação de período (filtro de lançamentos) */
.filtro-seta {
  border: 1px solid var(--border);
  background: var(--white);
  color: var(--text2);
  border-radius: 6px;
  min-width: 30px; height: 34px;
  font-size: 18px; line-height: 1;
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
}
.filtro-seta:hover { border-color: var(--text3); color: var(--text); }

/* Toast (aviso passageiro) */
#toast-cont {
  position: fixed; bottom: 20px; right: 20px; z-index: 5000;
  display: flex; flex-direction: column; gap: 8px;
}
.toast {
  background: var(--text); color: #fff;
  padding: 10px 14px; border-radius: 10px;
  font-size: 13px; max-width: 320px;
  box-shadow: 0 6px 20px rgba(0,0,0,.2);
  opacity: 1; transition: opacity .3s, transform .3s;
}
.toast.saindo { opacity: 0; transform: translateY(6px); }
.toast-info { background: var(--navy); }
.toast-ok { background: var(--pos); }

/* Sugestões no cadastro inline de contraparte (evita quase-duplicado) */
.inline-sugestoes { display: flex; flex-direction: column; gap: 3px; margin-top: 6px; width: 100%; flex-basis: 100%; }
.inline-sug-titulo { font-size: 11px; color: var(--text3); }
.inline-sug-item {
  text-align: left; background: var(--navy-050); border: 1px solid var(--border);
  border-radius: 6px; padding: 6px 10px; font-size: 12px; cursor: pointer; color: var(--text);
}
.inline-sug-item:hover { background: var(--navy-050); border-color: var(--navy); }

/* Seletor de alcance ao editar série recorrente */
.escopo-overlay {
  position: fixed; inset: 0; z-index: 4000;
  background: rgba(15, 28, 46, .55);
  display: flex; align-items: center; justify-content: center;
}
.escopo-box {
  background: var(--white); border-radius: var(--r-card); padding: 22px;
  width: min(440px, calc(100vw - 32px));
  box-shadow: 0 12px 40px rgba(15, 28, 46, .35);
  display: flex; flex-direction: column; gap: 8px;
}
.escopo-box h3 { margin: 0; color: var(--text); font-size: 16px; }
.escopo-box p { margin: 0 0 6px; color: var(--text2); font-size: 13px; }
.escopo-box button {
  text-align: left; padding: 11px 14px; border-radius: 8px;
  border: 1px solid var(--border); background: var(--navy-050);
  color: var(--text); font-size: 13px; cursor: pointer;
}
.escopo-box button:hover { background: var(--navy-050); border-color: var(--navy); }
.escopo-box .escopo-cancelar {
  margin-top: 4px; text-align: center; background: transparent;
  border-color: transparent; color: var(--text3);
}
.escopo-box .escopo-cancelar:hover { background: var(--navy-050); border-color: transparent; }

/* Atalho "usar valor do extrato neste previsto" na conciliação */
.cat-ajuste-valor { margin-top: 6px; font-size: 12px; }
.cat-ajuste-valor .btn-link { font-size: 12px; }
.cat-ajuste-on { color: var(--pos); }

/* Texto de ajuda discreto sob um campo (ex.: ciclo da fatura do cartão) */
.campo-ajuda { font-size: 11px; color: var(--text3); margin: 4px 0 0; }

/* Badge de fatura de cartão registrada sem detalhe (classificar depois) */
.badge.a-detalhar { background: #FDF0D5; color: #8A5A00; margin-left: 4px; }

/* Lançamento de fatura de cartão pendente de classificação — destaque na lista */
.tabela tr.linha-a-detalhar > td { background: #FFF7E6; }
.tabela tr.linha-a-detalhar > td:first-child { box-shadow: inset 3px 0 0 #E0A700; }
.tag-fatura {
  display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 6px;
  background: #FDF0D5; color: #8A5A00; font-size: 10.5px; font-weight: 600; white-space: nowrap;
}

/* Tela "Cartões" (faturas por cartão) */
.cartoes-page { display: flex; flex-direction: column; gap: 18px; }
.cartao-bloco { background: var(--white); border: 1px solid var(--border); border-radius: 10px; padding: 16px 18px; }
.cartao-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.cartao-head h3 { margin: 0; color: var(--text); font-size: 15px; }
.cartao-devido { font-size: 12px; color: var(--text2); }
.cartao-devido strong { font-size: 14px; }
.fatura-item { border-top: 1px solid var(--border); }
.fatura-cab { display: flex; align-items: center; gap: 12px; padding: 9px 4px; cursor: pointer; font-size: 13px; }
.fatura-cab:hover { background: var(--bg); }
.fatura-seta { color: var(--text3); transition: transform .15s; }
.fatura-seta.aberta { transform: rotate(90deg); }
.fatura-venc { font-weight: 600; color: var(--text); }
.fatura-total { margin-left: auto; font-family: var(--font-mono); font-weight: 600; }
.fatura-qtd { color: var(--text3); font-size: 11px; min-width: 92px; text-align: right; }
.fatura-detalhe { padding: 4px 0 10px; }
.tela-sub { margin: 2px 0 16px; color: var(--text2); font-size: 14px; }

/* Cabeçalho da revisão de cartão: instrução à esquerda, "Criar todos" em destaque à direita */
.cartao-rev-cab { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.cartao-rev-cab .btn-primary { white-space: nowrap; flex-shrink: 0; }
.cartao-rev-cab .btn-primary:disabled { opacity: .55; cursor: default; }


/* Datas efetivas do período ancorado (Hoje/Semana/Últimos N) ao lado das setas */
.filtro-range { font-size: 12px; color: var(--text2); white-space: nowrap; align-self: center; margin-left: 2px; }

/* Cards de status da aba Lançamentos (Vencidos / Vencem hoje / A vencer / Pagos / Total) */
.resumo-lanc { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; }
/* Cards de status V1 — número protagonista (mockup aprovado) */
.card-status {
  text-align: left; background: var(--white); border: 1px solid var(--border-soft);
  border-radius: var(--r-card); padding: 13px 16px; cursor: pointer; font: inherit;
  box-shadow: var(--shadow-1);
  transition: transform .15s, box-shadow .15s, border-color .12s;
}
.card-status:hover { transform: translateY(-2px); box-shadow: var(--shadow-2); }
.card-status.card-ativo {
  border-color: var(--navy);
  box-shadow: 0 0 0 3px var(--navy-100), var(--shadow-1);
  background: var(--navy-050);
}
.card-status .card-label {
  display: flex; align-items: center; justify-content: space-between;
  font-size: 10.5px; font-weight: 700; letter-spacing: .6px; text-transform: uppercase;
  color: var(--text3); margin-bottom: 8px;
}
.card-count { display: inline-block; background: var(--bg); color: var(--text2); border-radius: 999px; padding: 0 8px; font-size: 10.5px; font-family: var(--font-mono); }
.cs-big {
  font-family: var(--font-mono); font-variant-numeric: tabular-nums;
  font-size: 19px; font-weight: 700; letter-spacing: -0.01em; line-height: 1.1;
  color: var(--text);
}
.cs-big.pos { color: var(--pos); }
.cs-big.neg { color: var(--neg); }
.cs-sub { display: flex; gap: 12px; margin-top: 7px; font-size: 11px; color: var(--text3); }
.cs-sub .num { color: var(--text2); font-weight: 600; }
/* Alerta: só dinheiro atrasado grita — superfície tingida */
.card-status.alert { background: var(--neg-bg); border-color: #F3D5D8; }
.card-status.alert .card-label, .card-status.alert .cs-big { color: var(--neg); }
.card-status.alert .card-count { background: var(--white); }

/* Tela Início: grupos de cards (Ação / Posição) */
.ini-grupo-titulo { font-size: 11px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; color: var(--text3); margin: 20px 0 8px; }
.card-info { cursor: default; }
.card-info:hover { transform: none; box-shadow: var(--shadow-1); }   /* posição não é clicável: sem lift */
.card-big { font-family: var(--font-mono); font-size: 22px; font-weight: 700; color: var(--text); }
.card-big.pos { color: var(--pos); }
.card-big.neg { color: var(--neg); }
.card-sub { font-size: 11px; color: var(--text3); margin-top: 4px; }

/* Gráficos do Início (Chart.js) */
.chart-card { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--r-card); box-shadow: var(--shadow-1); padding: 14px 16px; margin-top: 14px; }
.chart-titulo { font-size: 11px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; color: var(--text3); margin-bottom: 10px; }
.chart-area { position: relative; height: 220px; }
.chart-area-lg { height: 280px; }
.ini-charts-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 900px) { .ini-charts-row { grid-template-columns: 1fr; } }

/* Menu de ações de linha (padrão do redesign — substitui Editar/Clonar/Excluir empilhados) */
.acoes-menu { position: relative; display: inline-block; }
.acoes-kebab {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px;
  border: 1px solid var(--border2); background: var(--white);
  color: var(--text2); cursor: pointer; border-radius: 8px;
  transition: border-color .12s, color .12s;
}
.acoes-kebab:hover { border-color: var(--navy); color: var(--navy); }
.acoes-menu.open .acoes-kebab { border-color: var(--navy); color: var(--navy); background: var(--navy-050); }
.acoes-pop {
  display: none; position: fixed; z-index: 3200;   /* fixed: escapa do overflow da tabela */
  min-width: 132px; background: var(--white); border: 1px solid var(--border);
  border-radius: 10px; box-shadow: var(--shadow-2); padding: 4px;
}
.acoes-menu.open .acoes-pop { display: flex; flex-direction: column; }
.acoes-item {
  font: inherit; text-align: left; background: transparent; border: none;
  border-radius: 7px; padding: 7px 10px; cursor: pointer; color: var(--text);
}
.acoes-item:hover { background: var(--navy-050); }
.acoes-item.danger { color: var(--neg); }
.acoes-item.danger:hover { background: var(--neg-bg); }

/* Harmonização Fase B: botões especializados (revisão OFX, DRE) no mesmo raio/foco */
.btn-act, .btn-cat, .btn-conf, .btn-conf-match, .btn-ign, .btn-desfazer,
.btn-transf, .btn-remover, .btn-voltar, .btn-inline-add, .btn-sm, .filtro-seta {
  border-radius: 8px;
}
.btn-act:focus-visible, .btn-cat:focus-visible, .btn-conf:focus-visible,
.btn-conf-match:focus-visible, .btn-ign:focus-visible, .btn-desfazer:focus-visible {
  outline: 3px solid var(--navy-100);
  outline-offset: 1px;
}

/* ═══════════════════════════════════════════════════════════
   PLANO DE CONTAS — modal de categoria + modal de grupo/seção (Sessão 38)
═══════════════════════════════════════════════════════════ */

/* Painel "herdado do grupo" (modal de categoria: o sistema mostra a consequência) */
.herda-painel {
  background: var(--navy-050);
  border: 1px solid var(--navy-100);
  border-radius: var(--r-ctl);
  padding: 10px 12px;
  margin: 12px 0 2px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.herda-linha { display: flex; align-items: baseline; gap: 8px; font-size: 12px; color: var(--text); }
.herda-rotulo { color: var(--text2); flex-shrink: 0; width: 52px; font-size: 10px; font-weight: 600; letter-spacing: .6px; text-transform: uppercase; }

/* Cabeçalho de optgroup no popup do select pesquisável */
.selbusca-grupo {
  font-size: 10px;
  font-weight: 650;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--text3);
  padding: 8px 10px 4px;
}

/* Escolha de nível (Grupo | Seção) */
.nivel-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 4px 0 14px; }
@media (max-width: 560px) { .nivel-cards { grid-template-columns: 1fr; } }
.nivel-card {
  text-align: left;
  background: var(--white);
  border: 1px solid var(--border2);
  border-radius: var(--r-ctl);
  padding: 11px 13px;
  cursor: pointer;
  font-family: var(--font-base);
  display: flex;
  flex-direction: column;
  gap: 3px;
  transition: border-color .12s, background .12s;
}
.nivel-card:hover { border-color: var(--navy-l); }
.nivel-card:focus-visible { outline: 3px solid var(--navy-100); }
.nivel-card.sel { border-color: var(--navy); background: var(--navy-050); box-shadow: 0 0 0 1px var(--navy); }
.nivel-card .nc-titulo { font-size: 13px; font-weight: 700; color: var(--text); }
.nivel-card .nc-desc { font-size: 11px; color: var(--text2); line-height: 1.45; text-transform: none; letter-spacing: 0; }

/* Número da seção sugerido (travado) */
.num-sugerido { display: flex; align-items: center; gap: 10px; }
.num-chip {
  font-family: var(--font-mono);
  font-size: 14px;
  font-weight: 650;
  color: var(--navy);
  background: var(--navy-050);
  border: 1px solid var(--navy-100);
  border-radius: var(--r-ctl);
  padding: 7px 13px;
}

/* Pílulas de tipo (receita/despesa) */
.tipo-pills { display: flex; gap: 8px; flex-wrap: wrap; }
.radio-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid var(--border2);
  border-radius: 99px;
  padding: 6px 13px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  background: var(--white);
  color: var(--text);
  text-transform: none;
  letter-spacing: 0;
  margin: 0;
  transition: border-color .12s, background .12s;
}
.radio-pill:hover { border-color: var(--navy-l); }
.radio-pill.sel { border-color: var(--navy); background: var(--navy-050); box-shadow: 0 0 0 1px var(--navy); }
.radio-pill.off { opacity: .5; cursor: not-allowed; }
.radio-pill input { accent-color: var(--navy); margin: 0; }

/* Prévia: onde a linha/banda entra no relatório */
.wiz-previa {
  border: 1px solid var(--border);
  border-radius: var(--r-ctl);
  overflow: hidden;
  margin: 14px 0 2px;
  font-size: 11.5px;
}
.pv-titulo {
  font-size: 9.5px;
  font-weight: 650;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--text3);
  background: var(--bg);
  padding: 6px 11px;
  border-bottom: 1px solid var(--border-soft);
}
.pv-linha { display: flex; justify-content: space-between; gap: 12px; padding: 5px 11px; border-bottom: 1px solid var(--border-soft); color: var(--text); }
.pv-linha:last-child { border-bottom: none; }
.pv-sec { background: #CFE0F0; font-weight: 700; }
.pv-nova { background: var(--pos-bg); font-weight: 650; color: var(--pos); }
.pv-val { font-family: var(--font-mono); color: var(--text3); flex-shrink: 0; }

/* Tabela do Plano de Contas agrupada por seção (modelo v2) */
.linha-secao td {
  background: #CFE0F0;
  font-size: 12px;
  border-top: 2px solid var(--border2);
}
.linha-secao strong { font-size: 12.5px; letter-spacing: .2px; }
.sec-tag, .grp-tag {
  display: inline-block;
  font-size: 9px;
  font-weight: 650;
  letter-spacing: .8px;
  text-transform: uppercase;
  padding: 1px 7px;
  border-radius: 99px;
  vertical-align: 1px;
  margin-right: 4px;
}
.sec-tag { background: var(--navy); color: #fff; }
.grp-tag { background: var(--navy-050); color: var(--navy-l); border: 1px solid var(--navy-100); }
.cod-interno {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--text3);
  margin-left: 6px;
}
.sec-estrutura { font-size: 10.5px; color: var(--text3); font-style: italic; }

/* Perna de transferência interna (fora da DRE) — badge na lista de Lançamentos */
.tag-transf {
  display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 6px;
  background: var(--navy-050); color: var(--navy-l); font-size: 10.5px; font-weight: 600; white-space: nowrap;
}

/* Ação "criar novo" no rodapé do popup do select pesquisável (data-criar) */
.selbusca-criar {
  padding: 9px 10px;
  font-size: 12px;
  font-weight: 650;
  color: var(--navy);
  border-top: 1px solid var(--border-soft);
  cursor: pointer;
  background: var(--bg);
}
.selbusca-criar:hover { background: var(--navy-050); }

/* Divisória discreta entre os blocos de conta na grade de conciliação */
.conc-grade .conc-conta-grp, .conc-grade .conc-conta-ini { border-left: 2px solid var(--border2); }

/* Diagnóstico do drill de conciliação (possíveis causas da diferença) */
.drill-causas {
  border: 1px solid var(--navy-100);
  background: var(--navy-050);
  border-radius: var(--r-ctl);
  padding: 10px 14px;
  margin: 0 0 12px;
}
.drill-causas .dc-titulo {
  font-size: 10px; font-weight: 650; letter-spacing: 1px; text-transform: uppercase;
  color: var(--navy-l); margin: 0 0 6px;
}
.drill-causas .dc-item {
  font-size: 12px; color: var(--text); padding: 3px 0 3px 16px; position: relative; line-height: 1.45;
}
.drill-causas .dc-item::before { content: '›'; position: absolute; left: 2px; color: var(--navy-l); font-weight: 700; }
.drill-causas .dc-item .btn-link { font-size: 12px; }
.drill-causas .dc-nada { font-size: 12px; color: var(--text2); }

/* Drill da conciliação: drawer mais largo e tabela que cabe (sem corte lateral) */
#drillConc { width: 580px; }
.drill-tabela { width: 100%; table-layout: fixed; }
.drill-tabela th:nth-child(1), .drill-tabela td:nth-child(1) { width: 82px; }
.drill-tabela th:nth-child(4), .drill-tabela td:nth-child(4) { width: 72px; }
.drill-tabela th:nth-child(5), .drill-tabela td:nth-child(5) { width: 92px; text-align: right; }
.drill-tabela td:nth-child(2), .drill-tabela td:nth-child(3) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Ação "conciliar com um lançamento" no drill da diferença */
.dc-acao { margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--navy-100); }
.dc-form { margin-top: 10px; background: var(--white); border: 1px solid var(--border); border-radius: var(--r-ctl); padding: 12px 14px; }
.dc-form-resumo { font-size: 12px; color: var(--text2); line-height: 1.5; margin-bottom: 10px; }
.dc-form label { display: block; font-size: 10px; font-weight: 600; letter-spacing: .6px; text-transform: uppercase; color: var(--text2); margin: 10px 0 4px; }
.dc-form input[type="text"], .dc-form select { width: 100%; font-family: var(--font-base); font-size: 13px; padding: 8px 10px; border: 1px solid var(--border2); border-radius: var(--r-ctl); background: var(--white); color: var(--text); }
.dc-form input[type="text"]:focus, .dc-form select:focus { outline: none; border-color: var(--navy); box-shadow: 0 0 0 3px var(--navy-100); }
.dc-form-acoes { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }

/* Modal de concluir importação: rodapé sempre visível (o corpo pode ser longo —
   resumo + conferência + previstos — e o botão sumia abaixo da dobra) */
#modalConcluir .modal-actions {
  position: sticky;
  bottom: 0;
  background: var(--white);
  padding: 12px 0;
  margin-top: 16px;
  box-shadow: 0 -10px 14px -10px rgba(19, 31, 56, 0.18);
}

/* Lançamento atrasado: risco vermelho na borda esquerda da linha (inset — não
   depende do border-collapse) + data de vencimento em vermelho */
#tabLanc tr.linha-atrasada td:first-child { box-shadow: inset 4px 0 0 var(--neg); }
#tabLanc tr.linha-atrasada td:nth-child(2) { color: var(--neg); font-weight: 650; }

/* Nota de atenção abaixo do box de conferência (concluir importação) */
.conc-saldo-nota {
  margin-top: 8px;
  font-size: 11.5px;
  line-height: 1.5;
  color: var(--warn);
  background: var(--warn-bg);
  border: 1px solid #EAD9A8;
  border-radius: var(--r-ctl);
  padding: 9px 12px;
}

/* Conciliação: dia futuro esmaecido (sem status — conciliar o futuro é vazio) */
.conc-grade tr.conc-futuro td { opacity: .55; }

/* Dia atual: só a data marcada (navy + tag HOJE) — sem linhas nem molduras */
.conc-grade tr.conc-hoje .conc-c-data { color: var(--navy); font-weight: 700; }
.conc-hoje-tag {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 7px;
  border-radius: 99px;
  background: var(--navy);
  color: #fff;
  font-size: 9px;
  font-weight: 650;
  letter-spacing: .6px;
  text-transform: uppercase;
  vertical-align: 1px;
}

/* Saldo projetado (dias futuros com previstos): itálico e tom de acento — nunca se confunde com fato */
.conc-projecao { color: var(--navy-l); font-style: italic; }

/* Modo compacto: toggle na navegação do mês + linha de trecho comprimido */
.conc-compacto-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: 14px;
  font-size: 11.5px;
  color: var(--text2);
  cursor: pointer;
  user-select: none;
}
.conc-compacto-toggle input { accent-color: var(--navy); margin: 0; }
.conc-grade tr.conc-trecho td {
  background: var(--bg);
  color: var(--text3);
  font-size: 11px;
  font-style: italic;
  text-align: left;
  cursor: pointer;
  padding: 5px 10px;
}
.conc-grade tr.conc-trecho:hover td { color: var(--navy); }

/* Trecho comprimido com estado: diferença persistindo (vermelho) / sem extrato (âmbar) */
.conc-grade tr.conc-trecho-diff td { color: var(--neg); }
.conc-grade tr.conc-trecho-pend td { color: var(--warn); }
