/* ============ Módulos (Pregões / Gestão) e telas do Financeiro ============ */

/* ---------- topo: nome do módulo e seletor ---------- */
.topo-modulo {
  display: inline-flex; align-items: center; gap: 10px; color: rgba(255, 255, 255, .88); font-weight: 600; font-size: 15px; flex: none;
  margin-left: -2px; white-space: nowrap;
}
.topo-modulo::before { content: ""; width: 1px; height: 22px; background: rgba(255, 255, 255, .28); }
.topo-modulo[hidden] { display: none; }
.menu-modulos { min-width: 360px; padding-bottom: 6px; }
.lista-modulos { display: grid; gap: 8px; padding: 4px 10px; }
.cartao-modulo {
  display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 12px; border: 1px solid var(--borda); background: var(--cartao);
  color: var(--texto); text-align: left; cursor: pointer; font: inherit; width: 100%;
}
.cartao-modulo:hover { border-color: var(--borda-forte); background: var(--cartao-2); }
.cartao-modulo.atual { border: 2px solid var(--acao); background: var(--acao-suave); padding: 11px; }
.cm-ic { flex: none; width: 44px; height: 44px; border-radius: 10px; display: grid; place-items: center; background: var(--acao-suave); color: var(--acao); }
.cartao-modulo.atual .cm-ic { background: var(--acao); color: var(--acao-texto); }
.cm-txt { flex: 1; min-width: 0; display: grid; gap: 2px; }
.cm-txt b { font-size: 15px; }
.cm-txt small { color: var(--texto-2); font-size: 12.5px; line-height: 1.35; }
.cm-ok { color: var(--acao); flex: none; }
.cm-nota { margin: 6px 16px 6px; font-size: 12px; color: var(--texto-3); }

/* troca de módulo no alto do menu (só no celular/tablet) */
.troca-area { display: none; gap: 4px; padding: 4px; margin: 2px 4px 8px; background: rgba(0, 0, 0, .06); border-radius: 12px; }
.troca-area button {
  flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 38px; border: 0; border-radius: 9px; background: none;
  color: var(--menu-texto); font: 600 13.5px "DM Sans", sans-serif; cursor: pointer;
}
.troca-area button.on { background: var(--menu-ativo); box-shadow: 0 1px 2px rgba(16, 24, 40, .08); }
.troca-area button.on .ic { color: var(--acao); }
:root[data-tema="escuro"] .troca-area { background: rgba(255, 255, 255, .06); }
@media (max-width: 900px) { .troca-area { display: flex; } }
@media (max-width: 520px) {
  #caixaModulos { display: none; }
  .topo-modulo { display: none; }
}
.app.recolhido .troca-area, .app.recolhido .topo-modulo { display: none; }

/* ---------- cores de valores ---------- */
.positivo, .tabela-fin b.receber, .fin-p-valor.receber { color: var(--ok); }
.negativo { color: var(--perigo); }
.indicador strong.ok { color: var(--ok); }
.indicador strong.perigo { color: var(--perigo); }
.indicador strong.aviso { color: var(--aviso); }
.indicador .ic-caixa.ok { background: var(--ok-fundo); color: var(--ok); }
.indicador .ic-caixa.perigo { background: var(--perigo-fundo); color: var(--perigo); }
.indicador .ic-caixa.aviso { background: var(--aviso-fundo); color: var(--aviso); }
.fin-ind { margin-bottom: 18px; }
.fin-ind .indicador strong { font-variant-numeric: tabular-nums; }
a.fin-ind-link { color: inherit; text-decoration: none; }
a.fin-ind-link:hover { border-color: var(--borda-forte); }

/* ---------- topo das páginas e filtros ---------- */
.fin-topo { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: -6px 0 16px; }
.fin-filtros { margin-bottom: 10px; }
.fin-filtros2 { margin-bottom: 16px; }
.fin-filtros2 select { flex: 0 1 220px; width: auto; }
.fin-mes { display: inline-flex; align-items: center; gap: 4px; padding: 2px 6px; border: 1px solid var(--borda-forte); border-radius: 999px; background: var(--cartao); }
.fin-mes b { font-size: 13.5px; min-width: 120px; text-align: center; }
.fin-mes[hidden] { display: none; }

/* ---------- tabela de lançamentos ---------- */
.tabela-fin td { vertical-align: top; }
.tabela-fin .fin-venc { white-space: nowrap; font-variant-numeric: tabular-nums; font-weight: 600; }
.tabela-fin tr.vencido .fin-venc { color: var(--perigo); }
.tabela-fin .fin-desc b { display: flex; align-items: center; gap: 6px; font-weight: 600; }
.tabela-fin small { display: block; color: var(--texto-3); font-size: 12.5px; margin-top: 2px; }
.tabela-fin .fin-desc .link-negocio { margin-top: 4px; }
.tabela-fin .fin-valor { white-space: nowrap; font-variant-numeric: tabular-nums; }
.tabela-fin .acoes { white-space: nowrap; }
.tabela-fin .acoes .btn { margin-right: 4px; }
.tabela-fin tr.pago td { color: var(--texto-2); }
.fin-tipo { display: inline-grid; place-items: center; flex: none; width: 24px; height: 24px; border-radius: 7px; }
.fin-tipo.receber { background: var(--ok-fundo); color: var(--ok); }
.fin-tipo.pagar { background: var(--perigo-fundo); color: var(--perigo); }
@media (max-width: 760px) {
  .tabela-fin thead { display: none; }
  .tabela-fin, .tabela-fin tbody, .tabela-fin tr, .tabela-fin td { display: block; width: 100%; box-sizing: border-box; }
  .tabela-fin tr { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; padding: 14px 16px; border-bottom: 1px solid var(--borda); }
  .tabela-fin td { padding: 0; border: 0; }
  .tabela-fin tbody tr:hover td { background: none; }
  .tabela-fin .fin-desc { grid-column: 1; grid-row: 1; }
  .tabela-fin .fin-valor { grid-column: 2; grid-row: 1; text-align: right; }
  .tabela-fin .fin-venc { grid-column: 1; grid-row: 3; font-weight: 500; font-size: 13px; color: var(--texto-2); }
  .tabela-fin .fin-venc::before { content: "Vence "; }
  .tabela-fin .fin-sit { grid-column: 2; grid-row: 3; text-align: right; }
  .tabela-fin .fin-cat { grid-column: 1 / -1; grid-row: 2; font-size: 13px; color: var(--texto-2); }
  .tabela-fin .fin-cat small { display: inline; margin-left: 6px; }
  .tabela-fin .acoes { grid-column: 1 / -1; grid-row: 4; display: flex; gap: 4px; justify-content: flex-end; text-align: right; margin-top: 4px; }
  .tabela-fin .acoes .btn { margin-right: auto; }
  .tabela-wrap .tabela.tabela-fin { min-width: 0; }
  .tabela-fin td { white-space: normal !important; min-width: 0; }
  .tabela-fin .link-negocio { display: flex; }
}

/* ---------- formulário ---------- */
.fin-form { display: grid; gap: 18px; }
.fin-bloco h3 { margin: 0 0 10px; font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--texto-3); }
.campo-moeda { position: relative; display: flex; align-items: center; }
.campo-moeda span { position: absolute; left: 12px; color: var(--texto-3); font-size: 14px; pointer-events: none; }
.campo-moeda input { padding-left: 38px !important; text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; width: 100%; }
.fin-check { display: flex; align-items: center; gap: 10px; cursor: pointer; font-size: 14px; flex-wrap: wrap; }
.fin-check input[type=date] { width: auto; height: 36px; }
.fin-total { display: flex !important; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 12px 14px; border-radius: 10px; background: var(--cartao-2); font-size: 14px; }
.fin-total b { font-variant-numeric: tabular-nums; margin-left: 6px; }

/* ---------- painel ---------- */
.fin-boasvindas { padding: 22px; margin-bottom: 18px; display: grid; gap: 14px; }
.fin-boasvindas h2 { margin: 0 0 4px; font-size: 18px; }
.fin-boasvindas .nota { margin: 0; }
.fin-boasvindas ol { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; counter-reset: passo; }
.fin-boasvindas li { counter-increment: passo; }
.fin-boasvindas li a { display: grid; gap: 2px; height: 100%; box-sizing: border-box; padding: 14px 14px 14px 52px; position: relative; border: 1px solid var(--borda); border-radius: 12px; text-decoration: none; color: var(--texto); }
.fin-boasvindas li a:hover { border-color: var(--acao); }
.fin-boasvindas li a::before { content: counter(passo); position: absolute; left: 14px; top: 14px; width: 26px; height: 26px; border-radius: 50%; background: var(--acao); color: var(--acao-texto); display: grid; place-items: center; font-weight: 700; font-size: 13px; }
.fin-boasvindas li span { font-size: 13px; color: var(--texto-3); }
.fin-grade-painel { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 20px; align-items: start; }
.fin-coluna { display: grid; gap: 20px; }
.fin-proximos { list-style: none; margin: 0; padding: 0; display: grid; }
.fin-proximos li { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto auto; align-items: center; gap: 10px 12px; padding: 10px 0; border-bottom: 1px solid var(--borda); }
.fin-proximos li:last-child { border-bottom: 0; }
.fin-p-txt { min-width: 0; display: grid; }
.fin-p-txt b { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fin-p-txt small { color: var(--texto-3); font-size: 12.5px; }
.fin-p-valor { font-variant-numeric: tabular-nums; white-space: nowrap; }
.fin-barra { display: grid; gap: 6px; margin-bottom: 14px; }
.fin-barra:last-child { margin-bottom: 0; }
.fin-barra > div:first-child { display: flex; justify-content: space-between; gap: 10px; font-size: 14px; }
.fin-barra b { font-variant-numeric: tabular-nums; }
.fin-barra-trilho { height: 8px; border-radius: 4px; background: var(--acao-suave); overflow: hidden; }
.fin-barra-trilho i { display: block; height: 100%; border-radius: 4px; background: var(--acao); }
.fin-barra-trilho i.negativo { background: var(--perigo); }
.fin-contas-lista { list-style: none; margin: 0; padding: 0; display: grid; }
.fin-contas-lista li { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--borda); font-size: 14px; }
.fin-contas-lista li:last-child { border-bottom: 0; }
.fin-contas-lista span { display: inline-flex; align-items: center; gap: 8px; }
.fin-contas-lista b { font-variant-numeric: tabular-nums; }
.fin-mini { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.fin-mini > div { display: grid; gap: 2px; }
.fin-mini small { color: var(--texto-3); font-size: 12px; }
.fin-mini b { font-variant-numeric: tabular-nums; }
@media (max-width: 1100px) { .fin-grade-painel { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 600px) {
  .fin-proximos li { grid-template-columns: auto minmax(0, 1fr) auto; }
  .fin-proximos li .selo { grid-column: 2; justify-self: start; }
  .fin-proximos li .btn { grid-column: 3; }
  .fin-mini { grid-template-columns: 1fr 1fr; }
}

/* ---------- fluxo de caixa ---------- */
.tabela-fluxo td small { display: block; color: var(--texto-3); font-size: 12px; }
.tabela-fluxo td { font-variant-numeric: tabular-nums; }
.tabela-fluxo tr.fin-atual td { background: var(--acao-suave); }
.tabela-fluxo tr.fin-passado td { color: var(--texto-2); }
@media (max-width: 760px) {
  .tabela-fluxo thead { display: none; }
  .tabela-fluxo, .tabela-fluxo tbody, .tabela-fluxo tr { display: block; }
  .tabela-fluxo tr { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 12px; padding: 12px 16px; border-bottom: 1px solid var(--borda); }
  .tabela-fluxo td { border: 0; padding: 0; text-align: left !important; }
  .tabela-fluxo td:first-child { grid-column: 1 / -1; }
  .tabela-fluxo td[data-rotulo]:not(:first-child)::before { content: attr(data-rotulo); display: block; font-size: 12px; color: var(--texto-3); }
  .tabela-wrap .tabela.tabela-fluxo { min-width: 0; }
}

/* ---------- DRE ---------- */
.dre-wrap { overflow-x: auto; }
.tabela-dre { min-width: 1100px; font-variant-numeric: tabular-nums; }
.tabela-dre th, .tabela-dre td { padding: 9px 10px; font-size: 13.5px; white-space: nowrap; }
.tabela-dre thead th { position: sticky; top: 0; }
.tabela-dre th[scope=row] { text-align: left; font-weight: 500; position: sticky; left: 0; background: var(--cartao); z-index: 1; min-width: 250px; max-width: 320px; white-space: normal; }
.tabela-dre thead th:first-child { position: sticky; left: 0; z-index: 2; }
.tabela-dre th.dre-vazio { color: var(--texto-3); font-weight: 400; }
.tabela-dre tr.dre-grupo th[scope=row] { font-weight: 600; display: flex; align-items: center; gap: 4px; }
.tabela-dre tr.dre-cat th[scope=row] { padding-left: 40px; color: var(--texto-2); }
.tabela-dre tr.dre-cat td { color: var(--texto-2); font-size: 13px; }
.tabela-dre tr.dre-total th, .tabela-dre tr.dre-total td { background: var(--cartao-2); font-weight: 700; }
.tabela-dre tr.dre-destaque th, .tabela-dre tr.dre-destaque td { background: var(--acao-suave); font-size: 14.5px; }
.dre-abrir { border: 0; background: none; padding: 2px; border-radius: 6px; cursor: pointer; color: var(--texto-3); display: inline-grid; place-items: center; width: 24px; height: 24px; }
.dre-abrir:hover { background: var(--cartao-2); color: var(--texto); }
.dre-espaco { display: inline-block; width: 24px; }

/* ---------- cadastros ---------- */
.abas a { display: inline-flex; align-items: center; gap: 6px; padding: 10px 14px; border-bottom: 2px solid transparent; color: var(--texto-2); text-decoration: none; font-weight: 600; font-size: 14px; white-space: nowrap; }
.abas a:hover { color: var(--texto); }
.abas a.ativa { color: var(--acao); border-bottom-color: var(--acao); }
.fin-cartoes { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 14px; }
.fin-conta { border: 1px solid var(--borda); border-radius: 14px; padding: 16px; display: grid; gap: 6px; background: var(--cartao); }
.fin-conta.inativa { opacity: .65; }
.fin-conta-topo { display: flex; gap: 12px; align-items: center; }
.fin-conta-topo .ic-caixa { width: 40px; height: 40px; border-radius: 10px; display: grid; place-items: center; background: var(--acao-suave); color: var(--acao); flex: none; }
.fin-conta-topo b { display: block; }
.fin-conta-topo small { color: var(--texto-3); font-size: 12.5px; }
.fin-conta > strong { font-size: 22px; font-variant-numeric: tabular-nums; margin-top: 6px; }
.fin-conta-acoes { display: flex; justify-content: space-between; align-items: center; margin-top: 6px; }
.fin-plano-grade { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 24px; }
.fin-plano h3 { margin: 0 0 6px; font-size: 16px; }
.fin-plano-grupo { margin-top: 14px; }
.fin-plano-grupo > small { display: block; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--texto-3); margin-bottom: 4px; }
.fin-plano-grupo ul { list-style: none; margin: 0; padding: 0; }
.fin-plano-grupo li { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px solid var(--borda); font-size: 14px; }
.fin-plano-grupo li > span:first-child { flex: 1; min-width: 0; }
.fin-plano-grupo li.inativa > span:first-child { color: var(--texto-3); }
tr.inativa td { color: var(--texto-3); }

/* ---------- aba Financeiro no negócio ---------- */
.fin-neg-resumo { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.fin-neg-resumo > div { border: 1px solid var(--borda); border-radius: 10px; padding: 10px 12px; display: grid; gap: 2px; min-width: 0; }
.fin-neg-resumo small { color: var(--texto-3); font-size: 12px; }
.fin-neg-resumo b { font-size: 16px; font-variant-numeric: tabular-nums; }
@media (max-width: 600px) { .fin-neg-resumo { grid-template-columns: 1fr 1fr; } }

@media (max-width: 520px) {
  .fin-filtros2 select { flex: 1 1 100%; }
  .fin-ind .indicador strong { font-size: 19px; }
  .fin-mes b { min-width: 0; }
}
.fin-grade-painel .cartao-titulo { flex-wrap: wrap; }
.fin-grade-painel .cartao-titulo > div:first-child { min-width: 180px; flex: 1; }
.fin-ind .indicador > div { min-width: 0; }
.fin-ind .indicador strong { font-size: clamp(18px, 1.55vw, 24px); white-space: nowrap; }

/* ===================== v75: cadastros, vendas, compras, estoque, conciliação, relatórios ===================== */
.campo-acao { display: flex; gap: 8px; align-items: stretch; }
.campo-acao > input, .campo-acao > select { flex: 1; min-width: 0; }
.campo-acao .btn { white-space: nowrap; }
.papeis { display: flex; gap: 8px 22px; flex-wrap: wrap; margin-top: 14px; }
.link-cad { background: none; border: 0; padding: 0; color: inherit; font: inherit; cursor: pointer; text-align: left; text-decoration: none; }
.link-cad:hover b, a.link-cad:hover { color: var(--acao); text-decoration: underline; }
.tabela-cad td small { display: block; color: var(--texto-3); font-size: 12.5px; margin-top: 2px; }
.tabela-cad td small.cad-ct { margin: 0; color: var(--texto-2); font-size: 13px; }
.tabela-cad tr.inativa td { opacity: .55; }
.tabela-cad td .selo { vertical-align: 1px; }
.nowrap { white-space: nowrap; }
.tabela-cad .direita, .tabela-docs .direita { font-variant-numeric: tabular-nums; }
.pr-calc { display: block; font-size: 18px; font-variant-numeric: tabular-nums; padding: 6px 0; }
.imp-planilha { display: grid; gap: 14px; }
.imp-arquivo { position: relative; display: block; border: 1.5px dashed var(--borda-forte); border-radius: 10px; padding: 18px; text-align: center; cursor: pointer; color: var(--texto-2); font-weight: 600; }
.imp-arquivo:hover, .imp-arquivo:focus-within { border-color: var(--acao); color: var(--acao); }
.imp-arquivo input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.imp-arquivo span { display: inline-flex; align-items: center; gap: 8px; }

/* lista de documentos */
.doc-periodo { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--texto-2); font-weight: 600; }
.doc-periodo input { width: auto; height: 36px; }
.doc-cont { display: inline-block; min-width: 18px; padding: 0 5px; margin-left: 4px; border-radius: 999px; background: var(--cartao-2); color: var(--texto-2); font-size: 11.5px; }
.pilula.ativa .doc-cont { background: rgba(255,255,255,.25); color: inherit; }
.tabela-docs tbody tr { cursor: pointer; }
.tabela-docs tbody tr:hover td { background: var(--cartao-2); }
.tabela-docs .doc-itens-resumo { max-width: 320px; }
.tabela-docs .doc-itens-resumo small { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; margin: 0; }

/* editor de documento */
.doc-barra { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin: -4px 0 14px; }
.doc-situacoes { display: inline-flex; border: 1px solid var(--borda-forte); border-radius: 10px; overflow: hidden; background: var(--cartao); flex-wrap: wrap; }
.doc-sit { display: inline-flex; align-items: center; gap: 6px; border: 0; border-left: 1px solid var(--borda); background: none; padding: 8px 14px; font: inherit; font-size: 13.5px; font-weight: 600; color: var(--texto-2); cursor: pointer; }
.doc-sit:first-child { border-left: 0; }
.doc-sit:hover:not(:disabled) { background: var(--cartao-2); color: var(--texto); }
.doc-sit:disabled { cursor: default; }
.doc-sit.atual { background: var(--acao-suave); color: var(--acao); }
.doc-sit.atual.ok { background: var(--ok-fundo); color: var(--ok); }
.doc-sit.atual.perigo { background: var(--perigo-fundo); color: var(--perigo); }
.doc-sit.atual.aviso { background: var(--aviso-fundo); color: var(--aviso); }
.doc-sit.atual.neutro { background: var(--neutro-fundo); color: var(--neutro); }
.doc-acoes { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.aviso-faixa { display: flex; gap: 10px; align-items: flex-start; padding: 11px 14px; border-radius: 10px; background: var(--aviso-fundo); color: var(--texto); font-size: 13.5px; margin-bottom: 14px; }
.aviso-faixa .ic { flex: none; color: var(--aviso); margin-top: 1px; }
.doc-ligados { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 13.5px; color: var(--texto-2); margin-bottom: 14px; }
.doc-form { display: grid; gap: 16px; grid-template-columns: minmax(0, 1fr); }
.doc-bloco { min-width: 0; }
.doc-bloco { padding: 18px 20px; }
.doc-bloco > h2 { margin: 0 0 14px; font-size: 15px; }
.doc-sub { margin: 14px 0 6px; font-size: 12.5px; text-transform: uppercase; letter-spacing: .05em; color: var(--texto-3); }
.doc-info-pessoa { display: flex; gap: 10px; align-items: center; margin-top: 8px; font-size: 13px; color: var(--texto-2); }
.doc-info-pessoa:empty { display: none; }
.doc-itens { min-width: 760px; }
.doc-itens th, .doc-itens td { padding: 8px 6px; }
.doc-itens th:first-child, .doc-itens td:first-child { padding-left: 0; }
.doc-itens td { vertical-align: top; border-bottom-color: transparent; }
.doc-itens input { width: 100%; height: 38px; }
.doc-itens .doc-c-prod { min-width: 260px; }
.doc-itens .doc-c-un { width: 86px; }
.doc-itens .doc-c-q { width: 90px; }
.doc-itens .doc-c-v { width: 128px; }
.doc-itens .doc-c-t { width: 120px; padding-top: 17px; font-variant-numeric: tabular-nums; }
.doc-itens .acoes { width: 40px; padding-top: 10px; }
.doc-itens td small { display: block; font-size: 12px; margin-top: 3px; }
.doc-itens input.direita { text-align: right; font-variant-numeric: tabular-nums; }
.doc-est-falta { color: var(--perigo); font-weight: 600; }
.tabela-wrap .tabela.doc-itens { min-width: 760px; }
.doc-itens-acoes { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-top: 10px; }
.doc-itens-acoes .nota { font-size: 12.5px; }
.doc-totais { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px 16px; align-items: end; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--borda); }
.doc-totais > div { display: grid; gap: 6px; }
.doc-totais > div > span, .doc-totais label { font-size: 13px; font-weight: 600; color: var(--texto-2); }
.doc-totais b { font-size: 16px; font-variant-numeric: tabular-nums; }
.doc-totais .doc-total { padding: 10px 14px; border-radius: 10px; background: var(--acao-suave); }
.doc-totais .doc-total b { font-size: 22px; color: var(--acao); }
.doc-lucro { grid-column: 1 / -1; display: flex !important; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; font-size: 13px; color: var(--texto-3); }
.doc-lucro b { font-size: 13.5px; margin-right: 14px; color: var(--texto-2); }
.doc-lucro b.negativo { color: var(--perigo); }
.doc-parcelas { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.doc-parcelas:empty { display: none; }
.doc-parcelas span { display: grid; padding: 6px 10px; border-radius: 8px; background: var(--cartao-2); border: 1px solid var(--borda); }
.doc-parcelas small { font-size: 11.5px; color: var(--texto-3); }
.doc-parcelas b { font-variant-numeric: tabular-nums; font-size: 13.5px; }
.doc-gerados { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 2px; }
.doc-gerados li { display: grid; grid-template-columns: minmax(0, 1fr) auto auto auto; gap: 12px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--borda); font-size: 13.5px; }
.doc-gerados li:last-child { border-bottom: 0; }
.doc-gerados b { font-variant-numeric: tabular-nums; }
.doc-rodape { position: sticky; bottom: 0; z-index: 5; display: flex; justify-content: flex-end; gap: 10px; padding: 12px 0; margin-top: 16px; background: linear-gradient(to top, var(--fundo) 70%, transparent); padding-right: 84px; }

/* painel: comercial */
.ges-ind { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
.ges-ind .indicador { padding: 16px; gap: 12px; }
.ges-ind .indicador .ic-caixa { width: 38px; height: 38px; }
.ges-ind .indicador strong { font-size: clamp(18px, 2vw, 22px); }
.ges-atalhos { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: -4px 0 16px; }

/* conciliação */
.conc-envio { padding: 18px 20px; margin-bottom: 18px; }
.conc-envio input[type=file] { height: auto; padding: 8px; }
.conc-lista { list-style: none; margin: 0; padding: 0; }
.conc-linha { display: grid; grid-template-columns: minmax(0, 1.2fr) auto minmax(0, 1.6fr); gap: 16px; align-items: center; padding: 12px 18px; border-bottom: 1px solid var(--borda); border-left: 3px solid transparent; }
.conc-linha.entrada { border-left-color: var(--ok); }
.conc-linha.saida { border-left-color: var(--perigo); }
.conc-linha:last-child { border-bottom: 0; }
.conc-banco small { display: block; color: var(--texto-3); font-size: 12.5px; }
.conc-banco b { font-weight: 600; font-size: 14px; word-break: break-word; }
.conc-valor { font-variant-numeric: tabular-nums; white-space: nowrap; font-size: 15px; text-align: right; }
.conc-valor.ok { color: var(--ok); }
.conc-par { display: grid; gap: 8px; }
.conc-par select, .conc-par input { width: 100%; height: 36px; }
.conc-criar { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 8px; }
.conc-botoes { display: flex; gap: 6px; flex-wrap: wrap; }

/* relatórios */
.rel-barras { display: flex; align-items: flex-end; gap: 10px; height: 220px; padding-top: 26px !important; overflow-x: auto; }
.rel-col { flex: 1 0 44px; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; gap: 6px; }
.rel-col i { display: block; width: 100%; max-width: 46px; background: var(--acao); border-radius: 4px 4px 0 0; min-height: 2px; }
.rel-col:hover i { filter: brightness(1.12); }
.rel-col small { font-size: 12px; color: var(--texto-3); }
.rel-val { font-size: 11.5px; font-weight: 600; color: var(--texto-2); white-space: nowrap; font-variant-numeric: tabular-nums; }
.rel-pct { display: inline-flex; align-items: center; gap: 8px; justify-content: flex-end; min-width: 120px; }
.rel-pct i { display: block; height: 6px; border-radius: 3px; background: var(--acao); opacity: .55; max-width: 70px; }
.rel-tag { display: inline-grid; place-items: center; width: 26px; height: 26px; border-radius: 7px; font-weight: 700; font-size: 13px; }
.rel-classe-A { background: var(--ok-fundo) !important; color: var(--ok) !important; }
.rel-classe-B { background: var(--aviso-fundo) !important; color: var(--aviso) !important; }
.rel-classe-C { background: var(--neutro-fundo) !important; color: var(--neutro) !important; }
.tabela tfoot th { background: var(--cartao-2); border-top: 1px solid var(--borda); border-bottom: 0; }

@media (max-width: 760px) {
  .conc-linha { grid-template-columns: minmax(0, 1fr) auto; }
  .conc-par { grid-column: 1 / -1; }
  .conc-criar { grid-template-columns: 1fr; }
  .doc-barra { align-items: stretch; }
  .doc-situacoes { width: 100%; }
  .doc-sit { flex: 1 1 auto; justify-content: center; padding: 9px 10px; }
  .doc-bloco { padding: 16px; }
  .doc-gerados li { grid-template-columns: minmax(0, 1fr) auto; }
  .doc-totais { grid-template-columns: 1fr 1fr; }
  .doc-totais .doc-total { grid-column: 1 / -1; }
  .tabela-docs .doc-itens-resumo { display: none; }
  .tabela-docs th:nth-child(4) { display: none; }
}
@media (max-width: 760px) { .doc-rodape { padding-right: 0; justify-content: flex-start; } }
.tabela-wrap { position: relative; } /* o .sr das colunas de ação fica preso à rolagem da tabela */

/* v77: por que a licitação apareceu na busca ou no alerta */
.lic-motivo { display: flex; align-items: flex-start; gap: 6px; margin-top: 8px; padding: 6px 10px; border-radius: 8px; background: var(--cartao-2); color: var(--texto-2); font-size: 12.5px; line-height: 1.4; }
.lic-motivo .ic { flex: none; margin-top: 2px; color: var(--acao); }
.lic-motivo b { color: var(--texto); font-weight: 600; }
/* v77: empenho vira pedido de venda */
.emp-itens td { vertical-align: top; }
.emp-itens td small { display: block; margin-top: 2px; }
.emp-itens input.emp-q { width: 80px; height: 34px; }
.emp-itens input.emp-v { width: 120px; height: 34px; text-align: right; }
.emp-itens input.emp-sel { width: 18px; height: 18px; margin-top: 2px; }
.emp-total { display: flex; justify-content: flex-end; gap: 22px; flex-wrap: wrap; margin-top: 12px; font-size: 14px; color: var(--texto-2); }
.emp-total b { color: var(--texto); margin-left: 6px; font-variant-numeric: tabular-nums; }
.doc-equip { display: block; font-size: 13.5px; }

/* v79: PDV */
.pdv-atalhos { font-size: 12.5px; }
.pdv { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 18px; align-items: start; }
.pdv-esq { padding: 16px; min-height: 480px; display: flex; flex-direction: column; gap: 12px; }
.pdv-busca { position: relative; display: flex; align-items: center; gap: 10px; border: 2px solid var(--acao); border-radius: 12px; padding: 4px 6px 4px 14px; background: var(--cartao); }
.pdv-busca > .ic { color: var(--acao); flex: none; }
.pdv-busca > input { flex: 1; border: 0 !important; box-shadow: none !important; font-size: 17px; height: 46px; padding: 0; background: transparent; min-width: 0; }
.pdv-qtd { display: inline-flex; align-items: center; gap: 4px; font-weight: 700; color: var(--texto-2); }
.pdv-qtd input { width: 58px; height: 38px; text-align: center; }
.pdv-sug { position: absolute; z-index: 20; top: calc(100% + 6px); left: 0; right: 0; background: var(--cartao); border: 1px solid var(--borda-forte); border-radius: 12px; box-shadow: var(--sombra-flutuante, 0 12px 30px rgba(0,0,0,.15)); overflow: hidden; }
.pdv-sug button { display: flex; width: 100%; justify-content: space-between; gap: 12px; align-items: center; padding: 10px 14px; border: 0; background: none; font: inherit; text-align: left; cursor: pointer; color: var(--texto); }
.pdv-sug button.ativa, .pdv-sug button:hover { background: var(--acao-suave); }
.pdv-sug-vazio { padding: 12px 14px; color: var(--texto-3); }
.pdv-itens { flex: 1; }
.pdv-tab td small { display: block; font-size: 12px; }
.pdv-tab td { padding: 10px 8px; }
.pdv-mais { display: inline-flex; align-items: center; border: 1px solid var(--borda-forte); border-radius: 9px; overflow: hidden; }
.pdv-mais button { border: 0; background: var(--cartao-2); width: 30px; height: 32px; font-size: 16px; cursor: pointer; color: var(--texto); }
.pdv-mais input { width: 54px; height: 32px; border: 0 !important; border-radius: 0 !important; text-align: center; padding: 0; }
.pdv-vazio { display: grid; place-items: center; gap: 6px; text-align: center; padding: 70px 20px; color: var(--texto-3); }
.pdv-vazio .ic { color: var(--acao); opacity: .6; }
.pdv-vazio b { color: var(--texto-2); font-size: 15px; }
.pdv-dir { padding: 18px; display: grid; gap: 14px; position: sticky; top: 12px; }
.pdv-cliente { display: grid; gap: 6px; }
.pdv-cliente label, .pdv-conta label { font-size: 13px; font-weight: 600; color: var(--texto-2); }
.pdv-cliente input.erro { border-color: var(--perigo); }
.pdv-totais { display: grid; gap: 10px; padding: 12px 0; border-top: 1px solid var(--borda); border-bottom: 1px solid var(--borda); }
.pdv-totais > div { display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: 14px; }
.pdv-totais label { font-weight: 600; color: var(--texto-2); }
.pdv-totais .campo-moeda { width: 150px; }
.pdv-total b { font-size: 30px; color: var(--acao); font-variant-numeric: tabular-nums; letter-spacing: -.5px; }
.pdv-total span { font-weight: 700; }
.pdv-formas { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; }
.pdv-forma { display: grid; justify-items: center; gap: 4px; padding: 9px 2px; border: 1px solid var(--borda-forte); border-radius: 10px; background: var(--cartao); font: inherit; font-size: 12px; font-weight: 600; color: var(--texto-2); cursor: pointer; }
.pdv-forma:hover { border-color: var(--acao); color: var(--acao); }
.pdv-pags { display: grid; gap: 8px; }
.pdv-pags:empty { display: none; }
.pdv-pag { display: flex; align-items: center; gap: 6px; }
.pdv-pag-nome { flex: 1; font-weight: 600; font-size: 14px; }
.pdv-pag select, .pdv-pag input[type=date] { width: auto; height: 36px; }
.pdv-pag .campo-moeda { width: 130px; }
.pdv-resumo:empty { display: none; }
.pdv-falta, .pdv-troco, .pdv-ok { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; border-radius: 10px; font-weight: 600; }
.pdv-falta { background: var(--aviso-fundo); color: var(--aviso); }
.pdv-troco { background: var(--ok-fundo); color: var(--ok); }
.pdv-troco b { font-size: 20px; }
.pdv-ok { background: var(--ok-fundo); color: var(--ok); justify-content: flex-start; gap: 6px; }
.pdv-fim { height: 52px; font-size: 16px; justify-content: center; }
.pdv-fim kbd, #fNova kbd { font: 600 11px/1 inherit; padding: 3px 6px; border-radius: 5px; background: rgba(255,255,255,.2); margin-left: 6px; }
.pdv-fim-corpo { display: grid; justify-items: center; gap: 12px; padding: 10px 0; text-align: center; }
.pdv-fim-corpo > .ic { color: var(--ok); }
.pdv-fim-corpo span { display: block; color: var(--texto-3); font-size: 13px; }
.pdv-fim-corpo b { font-size: 24px; }
.pdv-troco-grande b { font-size: 34px; color: var(--ok); }
@media (max-width: 1000px) { .pdv { grid-template-columns: 1fr; } .pdv-dir { position: static; } .pdv-esq { min-height: 0; } }
@media (max-width: 520px) { .pdv-formas { grid-template-columns: repeat(3, 1fr); } .pdv-busca > input { font-size: 15px; } }
@media (max-width: 760px) { .pdv-atalhos { display: none; } }

/* v80: Pix e contratos recorrentes */
.pix-caixa { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 20px; align-items: start; }
.pix-qr { padding: 8px; background: #fff; border-radius: 12px; border: 1px solid var(--borda); line-height: 0; }
.pix-info { display: grid; gap: 8px; }
.pix-valor { font-size: 28px; font-weight: 700; color: var(--acao); font-variant-numeric: tabular-nums; }
.pix-rot { font-size: 13px; font-weight: 600; color: var(--texto-2); margin-top: 6px; }
.pix-info textarea { font: 12px/1.4 ui-monospace, Consolas, monospace; word-break: break-all; resize: none; }
.pix-botoes { display: flex; gap: 8px; flex-wrap: wrap; }
.ct-cab { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; margin-bottom: 14px; }
.ct-cab small { display: block; margin-top: 2px; }
.ct-mini { margin-bottom: 6px; }
.ct-acoes { display: inline-flex; align-items: center; gap: 4px; }
@media (max-width: 600px) { .pix-caixa { grid-template-columns: 1fr; justify-items: center; } .pix-info { width: 100%; } }

/* v81: palavras longas quebram em vez de estourar a tela */
.conteudo, dialog { overflow-wrap: anywhere; }
.tabela td.num, .tabela td .num, .kpi .num { overflow-wrap: normal; white-space: nowrap; }
/* abas com rolagem lateral sem barra/setas */
.abas { scrollbar-width: none; }
.abas::-webkit-scrollbar { display: none; }
/* avisos acima das janelas (popover na camada do topo) */
.avisos[popover] { inset: auto 20px 84px auto; margin: 0; padding: 0; border: 0; background: none; overflow: visible; color: inherit; }
@media (max-width: 600px) { .avisos[popover] { inset: auto 14px 76px 14px; } }
.campo-doc { min-width: 0; }
.campo-doc input { min-width: 170px; }
@media (min-width: 701px) { .form-grade > .campo-doc { grid-column: span 2; } }
/* PDV: tela de caixa sem o botão flutuante do assistente por cima de "Finalizar venda" */
body[data-tela="pdv"] .ass-botao { display: none; }
/* contas a pagar/receber: ações compactas (o rótulo de "Receber/Pagar" some em telas médias, fica o ícone com dica) */
.fin-acoes .acao-icone { width: 30px; height: 30px; }
.fin-acoes { padding-left: 8px !important; padding-right: 10px !important; }
@media (max-width: 1500px) and (min-width: 801px) { .fin-baixar span { display: none; } .fin-baixar { padding: 0 8px; } }
/* itens do documento no celular: cada item vira um cartão (sem rolagem lateral) */
@media (max-width: 700px) {
  .tabela-wrap .tabela.doc-itens, .doc-itens { min-width: 0; }
  .doc-itens, .doc-itens tbody { display: block; }
  .doc-itens thead { display: none; }
  .doc-itens tr { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 10px; padding: 12px; margin-bottom: 10px; border: 1px solid var(--borda); border-radius: 10px; background: var(--cartao); position: relative; }
  .doc-itens td { display: block; padding: 0 !important; width: auto !important; min-width: 0 !important; border: 0; }
  .doc-itens td[data-rotulo]::before { content: attr(data-rotulo); display: block; font-size: 12px; font-weight: 600; color: var(--texto-2); margin-bottom: 4px; }
  .doc-itens .doc-c-prod { grid-column: 1 / -1; padding-right: 36px !important; }
  .doc-itens .doc-c-t { text-align: left; align-self: center; }
  .doc-itens .acoes { position: absolute; top: 8px; right: 6px; }
}
/* valores em dinheiro nunca quebram no meio ("R$ 10, 00") */
.fin-barra b, .conteudo .direita, .conteudo td.direita b, .indicador strong, .fin-valor b, .doc-totais b, .exec-resumo b, .emp-total b,
.conteudo .nowrap, .conteudo .num, .selo { overflow-wrap: normal; white-space: nowrap; }
.fin-barra > div:first-child > span { min-width: 0; }
/* v87: lista de sugestões pelo teclado (produtos, unidades) */
.sug-lista { position: fixed; z-index: 95; max-height: 280px; overflow-y: auto; background: var(--cartao); color: var(--texto); border: 1px solid var(--borda);
  border-radius: 10px; box-shadow: var(--sombra-flutuante); padding: 4px; max-width: min(560px, calc(100vw - 24px)); }
.sug-item { display: grid; gap: 1px; padding: 7px 10px; border-radius: 7px; cursor: pointer; }
.sug-item span { font-weight: 600; font-size: 13.5px; }
.sug-item small { font-size: 12px; color: var(--texto-3); }
.sug-item:hover { background: var(--cartao-2); }
.sug-item.sel { background: var(--acao-suave); }
.sug-item.sel span { color: var(--acao); }
/* rodapé de salvar: fundo firme (os itens não aparecem por trás) e o foco não fica escondido atrás dele */
.doc-rodape { background: var(--fundo); border-top: 1px solid var(--borda); margin-left: -2px; }
.conteudo { scroll-padding-bottom: 96px; scroll-padding-top: 16px; }
/* v89: importar itens de planilha */
.imp-legenda { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; font-size: 12.5px; margin-bottom: 10px; }
.imp-itens td { vertical-align: middle; padding-top: 8px; padding-bottom: 8px; }
.imp-itens .imp-c-ok { width: 36px; padding-right: 0; }
.imp-itens .imp-desc { min-width: 220px; }
.imp-itens .imp-desc small { display: block; font-size: 11.5px; }
.imp-itens .imp-prod { min-width: 260px; }
.imp-prod { display: flex; gap: 8px; align-items: center; }
.imp-prod input { flex: 1; min-width: 0; height: 36px; }
.imp-itens tr.imp-fora td:not(.imp-c-ok) { opacity: .45; }
/* v90: cartões do painel da Gestão compactos, em grade que não sobra cartão sozinho */
.kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 14px; }
.kpis-comercial { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.kpis-comercial:has(> :nth-child(4):last-child) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.kpis-comercial:has(> :nth-child(5):last-child) { grid-template-columns: repeat(5, minmax(0, 1fr)); }
@media (min-width: 1480px) { .kpis-comercial:has(> :nth-child(6)) { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
.kpi { display: grid; gap: 4px; padding: 12px 14px; min-width: 0; color: inherit; text-decoration: none; }
a.kpi:hover { border-color: var(--borda-forte); }
.kpi-topo { display: flex; align-items: center; gap: 8px; min-width: 0; }
.kpi-topo small { font-size: 12.5px; color: var(--texto-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kpi-ic { width: 26px; height: 26px; border-radius: 7px; display: grid; place-items: center; flex: none; background: var(--acao-suave); color: var(--acao); }
.kpi-ic.ok { background: var(--ok-fundo); color: var(--ok); }
.kpi-ic.perigo { background: var(--perigo-fundo); color: var(--perigo); }
.kpi-ic.aviso { background: var(--aviso-fundo); color: var(--aviso); }
.kpi strong { font-size: 20px; font-weight: 700; letter-spacing: -.01em; font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kpi strong.ok { color: var(--ok); } .kpi strong.perigo { color: var(--perigo); } .kpi strong.aviso { color: var(--aviso); }
.kpi .detalhe { font-size: 12px; color: var(--texto-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 1100px) { .kpis, .kpis-comercial, .kpis-comercial:has(> :nth-child(4):last-child), .kpis-comercial:has(> :nth-child(5):last-child) { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 420px) { .kpi strong { font-size: 18px; } }
/* assistente: só o ícone, redondo */
.ass-botao { width: 52px; height: 52px; padding: 0; justify-content: center; }
.ass-botao span { display: none; }
@media (max-width: 600px) { .kpi-topo small, .kpi .detalhe { white-space: normal; line-height: 1.25; } .kpi-topo { align-items: flex-start; } }
/* v91: personalizar o painel */
.ges-atalhos { justify-content: space-between; }
.ges-criar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.ges-personalizar { margin-left: auto; }
.fin-grade-painel.so-um { grid-template-columns: minmax(0, 1fr); }
.pers-grupo { border: 0; padding: 0; margin: 0 0 14px; display: grid; gap: 6px; }
.pers-grupo legend { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--texto-3); margin-bottom: 6px; }
.pers-item { display: flex; gap: 10px; align-items: center; padding: 8px 10px; border: 1px solid var(--borda); border-radius: 10px; cursor: pointer; }
.pers-item:has(input:checked) { border-color: var(--acao); background: var(--acao-suave); }
@media (min-width: 640px) { .pers-grupo { grid-template-columns: repeat(2, minmax(0, 1fr)); } .pers-grupo legend { grid-column: 1 / -1; } }
/* v92: perfis por módulo, uma linha por ferramenta do menu */
.perfil-mod { margin-top: 10px; border-top: 1px solid var(--borda); padding-top: 8px; }
.perfil-mod summary { cursor: pointer; display: flex; gap: 8px; align-items: baseline; list-style: none; font-size: 14px; }
.perfil-mod summary::-webkit-details-marker { display: none; }
.perfil-mod summary::before { content: "▸"; color: var(--texto-3); font-size: 12px; }
.perfil-mod[open] summary::before { content: "▾"; }
.perm-modulo { margin-top: 18px; }
.perm-modulo-cab { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 0; border-bottom: 2px solid var(--acao-suave); }
.perm-modulo-cab h3 { margin: 0; font-size: 16px; display: flex; gap: 8px; align-items: center; }
.perm-modulo-cab .perm-atalhos { margin: 0; }
/* v94: botões no título de um cartão lado a lado, na mesma altura */
.cartao-titulo > div:first-child { min-width: 0; flex: 1 1 auto; }
.titulo-acoes { display: flex; gap: 8px; align-items: center; flex: none; }
.titulo-acoes > .btn { white-space: nowrap; }
@media (max-width: 700px) { .cartao-titulo:has(.titulo-acoes) { flex-wrap: wrap; } .titulo-acoes { flex-wrap: wrap; } }
input.somente-leitura { background: var(--cartao-2); color: var(--texto-2); cursor: default; }
/* v96: "De" e "até" das datas: no celular o rótulo fica em cima do campo (não espreme letra por letra) */
.doc-periodo { white-space: nowrap; }
@media (max-width: 600px) {
  .doc-periodo { display: inline-grid; gap: 4px; flex: 1 1 140px; min-width: 0; }
  .doc-periodo input { width: 100%; min-width: 0; }
}

/* v102: notas fiscais */
.nf-grade { display: grid; grid-template-columns: minmax(0, 1fr) 310px; gap: 18px; align-items: start; }
.nf-principal { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; min-width: 0; }
.nf-principal > * { min-width: 0; }
.nf-principal .cartao { margin: 0; }
.nf-lado { position: sticky; top: 0; display: grid; gap: 14px; }
.nf-lado .cartao { margin: 0; }
.nf-totais { padding: 14px 16px; display: grid; gap: 7px; }
.nf-totais > div:not(.nf-tot-imp), .nf-tot-imp > div { display: flex; justify-content: space-between; gap: 10px; font-size: 13.5px; }
.nf-totais span { color: var(--texto-2); } .nf-totais b { font-variant-numeric: tabular-nums; }
.nf-tot-cab { font-weight: 700; font-size: 14px; margin-bottom: 2px; }
.nf-tot-imp { display: grid; gap: 5px; padding: 9px 0; margin: 2px 0; border-top: 1px dashed var(--borda); border-bottom: 1px dashed var(--borda); }
.nf-tot-imp > div { font-size: 12.5px; } .nf-tot-imp small { color: var(--texto-3); font-size: 11.5px; line-height: 1.35; }
.nf-tot-final { background: var(--acao-suave); border-radius: 10px; padding: 10px 12px; margin-top: 4px; }
.nf-tot-final span { color: var(--acao) !important; font-weight: 700; } .nf-tot-final b { font-size: 20px; color: var(--acao); }
.nf-confere { padding: 12px 14px; }
.nf-confere-cab { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.nf-confere ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.nf-confere li { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; line-height: 1.4; }
.nf-confere li .ic { flex: none; margin-top: 2px; }
.nf-p-erro .ic { color: var(--perigo); } .nf-p-aviso .ic { color: var(--aviso); } .nf-p-info .ic { color: var(--texto-3); } .nf-p-ok .ic { color: var(--ok); }
.nf-p-info { color: var(--texto-2); }
.nf-botoes { display: grid; gap: 8px; } .nf-botoes .btn { justify-content: center; }
.nf-salvo { text-align: center; margin: 0; min-height: 18px; font-size: 12px; }
.nf-itens td { vertical-align: middle; }
.nf-itens .nf-in { width: 92px; padding: 6px 8px; font-size: 13px; } .nf-itens .nf-in.curto { width: 64px; } .nf-itens select.nf-in { width: 74px; }
.nf-dups { display: flex; flex-wrap: wrap; gap: 10px; }
.nf-dups > div { border: 1px solid var(--borda); border-radius: 10px; padding: 8px 12px; display: grid; gap: 2px; min-width: 120px; }
.nf-dups small { color: var(--texto-3); } .nf-dups span { font-size: 12.5px; color: var(--texto-2); }
@media (max-width: 1100px) { .nf-grade { grid-template-columns: 1fr; } .nf-lado { position: static; } }
a.aba { text-decoration: none; display: inline-flex; align-items: center; gap: 6px; }
tr.clicavel { cursor: pointer; } tr.clicavel:hover td { background: var(--cartao-2); }
.nf-itens td:nth-child(2) { min-width: 230px; } .nf-itens td:nth-child(2) b { font-weight: 600; }
.nf-itens th, .nf-itens td { padding-left: 8px; padding-right: 8px; }
.logo-caixa { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; }
.logo-previa { width: 160px; height: 110px; border: 1px dashed var(--borda); border-radius: 12px; display: grid; place-items: center; background: #fff; overflow: hidden; }
.logo-previa img { max-width: 140px; max-height: 92px; object-fit: contain; }
.logo-previa .vazio-img { color: var(--texto-3); font-size: 13px; display: flex; align-items: center; }

/* ============ Finanças pessoais (dados só do usuário) ============ */
:root { --pf-meu: #2457C5; --pf-meu-f: #E6EEFC; --pf-casa: #9A4508; --pf-casa-f: #FDEFE3; --pf-emp: #5A3388; --pf-emp-f: #F0E9FA; }
:root[data-tema="escuro"] { --pf-meu: #8FB2F5; --pf-meu-f: #1B2C4D; --pf-casa: #F2B35E; --pf-casa-f: #3A2A12; --pf-emp: #C7A8F0; --pf-emp-f: #2E2244; }
.pf-privado { gap: 4px; }
.pf-topo { align-items: center; }
.pf-botoes { display: flex; gap: 8px; flex-wrap: wrap; }
.pf-guia { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pf-guia span { flex: 1 1 260px; }
.pf-filtros { margin-bottom: 12px; }
.pf-cont { opacity: .7; font-weight: 500; margin-left: 2px; }
.pf-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.pf-item { padding: 12px 14px; display: grid; gap: 10px; }
.pf-item.pf-pendente { box-shadow: inset 3px 0 0 var(--aviso); }
.pf-linha { display: flex; align-items: flex-start; gap: 10px; }
.pf-desc { flex: 1; min-width: 0; display: grid; gap: 2px; }
.pf-desc b { overflow-wrap: anywhere; }
.pf-desc small { color: var(--texto-3); font-size: 12.5px; }
.pf-valor { font-variant-numeric: tabular-nums; white-space: nowrap; font-size: 15px; }
.pf-tipos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; max-width: 460px; }
.pf-tipo { min-height: 40px; border-radius: 9px; border: 1px solid var(--borda-forte); background: var(--cartao); color: var(--texto-2); font: 600 13px "DM Sans", sans-serif; cursor: pointer; }
.pf-tipo:hover { border-color: var(--texto-3); }
.pf-tipo.on.pf-meu { background: var(--pf-meu-f); border: 2px solid var(--pf-meu); color: var(--pf-meu); }
.pf-tipo.on.pf-casa { background: var(--pf-casa-f); border: 2px solid var(--pf-casa); color: var(--pf-casa); }
.pf-tipo.on.pf-emp { background: var(--pf-emp-f); border: 2px solid var(--pf-emp); color: var(--pf-emp); }
.pf-selo { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 12px; font-weight: 600; }
.pf-selo.pf-meu { background: var(--pf-meu-f); color: var(--pf-meu); }
.pf-selo.pf-casa { background: var(--pf-casa-f); color: var(--pf-casa); }
.pf-selo.pf-emp { background: var(--pf-emp-f); color: var(--pf-emp); }
.pf-tx-casa { color: var(--pf-casa); }
.pf-tx-emp { color: var(--pf-emp); }
.pf-rodape { margin: 12px 0 0; }
.btn-link { background: none; border: 0; padding: 0; color: var(--acao); font: inherit; font-weight: 600; cursor: pointer; text-decoration: underline; }
.pf-acertos { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; margin-bottom: 14px; }
.pf-acerto { padding: 16px; display: grid; gap: 12px; align-content: start; }
.pf-acerto header, .pf-cad-lista li { display: flex; align-items: center; gap: 10px; }
.pf-acerto header div, .pf-cad-lista li div { flex: 1; min-width: 0; display: grid; gap: 1px; }
.pf-acerto header small, .pf-cad-lista small { color: var(--texto-3); font-size: 12.5px; }
.pf-avatar { width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; font-weight: 700; flex: none; }
.pf-avatar.pf-casa { background: var(--pf-casa-f); color: var(--pf-casa); }
.pf-avatar.pf-emp { background: var(--pf-emp-f); color: var(--pf-emp); }
.pf-ic { width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; background: var(--acao-suave); color: var(--acao); flex: none; }
.pf-contas { margin: 0; display: grid; gap: 6px; }
.pf-contas div { display: flex; justify-content: space-between; gap: 10px; font-size: 14px; }
.pf-contas dt { color: var(--texto-2); }
.pf-contas dd { margin: 0; font-weight: 600; font-variant-numeric: tabular-nums; }
.pf-saldo { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding-top: 10px; border-top: 1px solid var(--borda); }
.pf-saldo span { font-weight: 700; }
.pf-saldo strong { font-size: 20px; font-variant-numeric: tabular-nums; }
.pf-acoes { display: flex; gap: 8px; flex-wrap: wrap; }
.pf-acoes .btn { flex: 1 1 140px; justify-content: center; }
.pf-secao { padding: 16px 18px; margin-bottom: 14px; }
.pf-secao h2 { margin: 0 0 10px; font-size: 16px; }
.pf-pagos, .pf-extrato, .pf-cad-lista, .pf-regras { list-style: none; margin: 0 0 12px; padding: 0; }
.pf-pagos li, .pf-regras li { display: flex; align-items: center; gap: 10px; padding: 8px 0; font-size: 14px; }
.pf-pagos li span, .pf-regras li > span { flex: 1; min-width: 0; }
.pf-pagos li + li, .pf-extrato li + li, .pf-cad-lista li + li, .pf-regras li + li { border-top: 1px solid var(--borda); }
.pf-cad-lista li { padding: 9px 0; }
.pf-extrato li { display: flex; align-items: center; gap: 10px; padding: 10px 0; flex-wrap: wrap; }
.pf-extrato select { flex: 0 1 200px; }
.pf-extrato li.pf-sugerido .pf-desc b { color: var(--ok); }
.pf-oculto { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.pf-cad { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; }
.pf-cad .pf-secao { margin: 0; }
.pf-largo { grid-column: 1 / -1; }
.pf-pessoas-escolha { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.pf-pessoas-escolha .btn { min-height: 44px; }
.pf-nova label { display: block; font-size: 13px; color: var(--texto-2); margin-bottom: 4px; }
.pf-nova-linha { display: flex; gap: 8px; }
.pf-nova-linha input { flex: 1; min-width: 0; }
.pf-radio { border: 0; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 6px 16px; }
.pf-radio legend { font-size: 13px; color: var(--texto-2); margin-bottom: 6px; padding: 0; }
.pf-radio label, .pf-check { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; }
.pf-previa { margin-top: 14px; padding: 12px; border-radius: 10px; background: var(--acao-suave); display: grid; gap: 4px; }
.pf-previa small { color: var(--texto-2); }
@media (max-width: 700px) {
  .pf-topo { flex-direction: column; align-items: stretch; }
  .pf-topo .fin-mes { align-self: center; }
  .pf-botoes .btn { flex: 1; justify-content: center; }
  .pf-tipos { max-width: none; }
  .pf-tipo { min-height: 44px; }
  .pf-cad, .pf-acertos { grid-template-columns: 1fr; }
  .pf-ind { gap: 8px; }
  .pf-ind .indicador { padding: 12px 14px; }
  .pf-ind .ic-caixa { display: none; }
  .pf-ind .indicador strong { font-size: 19px; }
}
/* finanças pessoais: entradas, forma de pagamento e contas fixas (v108) */
.pf-item.pf-entrada { box-shadow: inset 3px 0 0 var(--ok); }
.pf-natureza { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; padding: 4px; border-radius: 12px; background: var(--cartao-2); border: 1px solid var(--borda); }
.pf-natureza label { position: relative; display: block; cursor: pointer; }
.pf-natureza input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.pf-natureza span { display: flex; align-items: center; justify-content: center; gap: 6px; min-height: 42px; border-radius: 9px; font-weight: 600; color: var(--texto-2); }
.pf-natureza input:checked + span { background: var(--cartao); color: var(--texto); box-shadow: 0 1px 3px rgba(16, 24, 40, .12); }
.pf-natureza input[value=entrada]:checked + span { color: var(--ok); }
.pf-natureza input:focus-visible + span { outline: 2px solid var(--acao); outline-offset: 2px; }
.pf-ic.pf-ic-ent { background: var(--ok-fundo); color: var(--ok); }
.pf-fixas { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 6px 24px; }
.pf-fixas h3 { margin: 4px 0 2px; font-size: 13.5px; color: var(--texto-2); }
/* conferência das linhas antes de importar a fatura (v109) */
.pf-conferir { list-style: none; margin: 10px 0 0; padding: 0; border: 1px solid var(--borda); border-radius: 10px; }
.pf-conferir li + li { border-top: 1px solid var(--borda); }
.pf-conferir label { display: flex; align-items: center; gap: 10px; padding: 9px 12px; cursor: pointer; min-height: 44px; }
.pf-conferir input { flex: none; width: 18px; height: 18px; }
.pf-conferir li:has(input:not(:checked)) { opacity: .5; }

/* ---- Finanças pessoais v112: resumo, cartões, contas, planejamento, relatórios ---- */
.pf-cat { display: inline-flex; align-items: center; gap: 5px; padding: 1px 8px 1px 7px; border-radius: 999px; font-size: 12px; font-weight: 600;
  color: var(--texto-2); background: color-mix(in srgb, var(--c, #94A3B8) 14%, transparent); }
.pf-cat::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--c, #94A3B8); flex: none; }
.pf-cat-sem { --c: #94A3B8; color: var(--texto-3); }
.pf-cat-btn { border: 1px solid color-mix(in srgb, var(--c) 35%, transparent); cursor: pointer; font-family: inherit; font-size: 13px; padding: 5px 11px 5px 9px; }
.pf-cat-btn:hover { background: color-mix(in srgb, var(--c) 24%, transparent); }
.pf-cat-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.pf-pago { width: 26px; height: 26px; flex: none; border-radius: 50%; border: 2px solid var(--borda-forte); background: var(--cartao); color: transparent;
  display: grid; place-items: center; cursor: pointer; margin-top: 1px; padding: 0; }
.pf-pago:hover { border-color: var(--ok); color: var(--ok); }
.pf-pago.on { background: var(--ok); border-color: var(--ok); color: #fff; }
.pf-btn-peq { min-height: 32px; padding: 4px 10px; font-size: 13px; }
.pf-sec-topo { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.pf-sec-topo h2 { margin: 0; }
.pf-resumo, .pf-plan { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); gap: 14px; align-items: start; }
.pf-mini { list-style: none; margin: 0; padding: 0; display: grid; }
.pf-mini li { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-top: 1px solid var(--borda); }
.pf-mini li:first-child { border-top: 0; padding-top: 2px; }
.pf-mini li > span { flex: 1; min-width: 0; display: grid; gap: 1px; overflow-wrap: anywhere; }
.pf-mini small { color: var(--texto-3); font-size: 12.5px; }
.pf-mini strong { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pf-barra { display: block; height: 8px; border-radius: 999px; background: var(--cartao-2); overflow: hidden; }
.pf-barra i { display: block; height: 100%; border-radius: inherit; background: var(--c, var(--acao)); }
.pf-barra.aviso i { background: var(--aviso); }
.pf-barra.erro i { background: var(--perigo); }
.pf-cats { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; }
.pf-cats li { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(60px, 1fr) auto 36px; align-items: center; gap: 10px; font-size: 13.5px; }
.pf-cats strong { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pf-cats small { color: var(--texto-3); text-align: right; font-variant-numeric: tabular-nums; }
.pf-cat-nome { display: flex; align-items: center; gap: 7px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pf-cat-nome i, .pf-pt { width: 9px; height: 9px; border-radius: 50%; flex: none; display: inline-block; }
.pf-pt { margin-right: 7px; }
.pf-orc, .pf-metas { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.pf-orc li, .pf-metas li { display: grid; gap: 5px; }
.pf-orc li.clicavel { cursor: pointer; border-radius: 8px; }
.pf-orc li.clicavel:hover b { color: var(--acao); }
.pf-orc-topo { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-size: 13.5px; }
.pf-orc-topo span { font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--texto-2); }
.pf-orc-total { display: flex; justify-content: space-between; font-size: 14px; margin-bottom: 6px; }
.pf-orc-total + .pf-barra { margin-bottom: 16px; height: 10px; }
.pf-metas .pf-acoes { justify-content: flex-start; align-items: center; }
.pf-cartoes, .pf-contas-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 14px; }
.pf-cartao, .pf-conta { padding: 16px; display: grid; gap: 14px; align-content: start; }
.pf-cartao header, .pf-conta header { display: flex; align-items: center; gap: 10px; }
.pf-cartao header div, .pf-conta header div { flex: 1; min-width: 0; display: grid; gap: 1px; }
.pf-cartao header small, .pf-conta header small { color: var(--texto-3); font-size: 12.5px; }
.pf-fatura { display: grid; gap: 3px; }
.pf-fatura small { color: var(--texto-3); font-size: 12.5px; }
.pf-fatura strong, .pf-saldo-conta { font-size: 24px; font-variant-numeric: tabular-nums; letter-spacing: -.01em; display: block; }
.pf-limite { display: grid; gap: 5px; }
.pf-acoes-topo { margin: 14px 0; }
.pf-cores { display: flex; flex-wrap: wrap; gap: 8px; border: 0; padding: 0; margin: 0; }
.pf-cores legend { padding: 0; margin-bottom: 6px; font-size: 13px; color: var(--texto-2); font-weight: 600; }
.pf-cores label { width: 30px; height: 30px; border-radius: 50%; background: var(--c); cursor: pointer; display: grid; place-items: center; position: relative; }
.pf-cores input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.pf-cores label:has(input:checked) { box-shadow: 0 0 0 2px var(--cartao), 0 0 0 4px var(--c); }
.pf-cores label:has(input:focus-visible) { outline: 2px solid var(--acao); outline-offset: 4px; }
.pf-rel { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); gap: 14px; align-items: start; }
.pf-rel .pf-largo { grid-column: 1 / -1; }
.pf-rel-tot { display: flex; flex-wrap: wrap; gap: 8px 22px; font-size: 13px; color: var(--texto-2); margin-bottom: 10px; }
.pf-rel-tot span { display: grid; gap: 1px; }
.pf-rel-tot b { font-size: 17px; font-variant-numeric: tabular-nums; color: var(--texto); }
.pf-rel-tot b.positivo { color: var(--ok); } .pf-rel-tot b.negativo { color: var(--perigo); }
.pf-grafico { overflow-x: auto; }
.pf-grafico svg { display: block; width: 100%; max-width: 820px; min-width: 460px; height: auto; margin: 0 auto; }
.pf-g-linha { stroke: var(--borda); stroke-width: 1; }
.pf-g-txt { fill: var(--texto-3); font: 500 11px "DM Sans", sans-serif; }
.pf-g-forte { fill: var(--texto); font: 700 14px "DM Sans", sans-serif; }
.pf-g-ent { fill: var(--ok); }
.pf-g-gas { fill: var(--acao); }
.pf-legenda { display: flex; gap: 16px; font-size: 12.5px; color: var(--texto-2); margin-top: 6px; }
.pf-legenda span { display: inline-flex; align-items: center; gap: 6px; }
.pf-legenda i { width: 10px; height: 10px; border-radius: 3px; }
.pf-l-ent { background: var(--ok); } .pf-l-gas { background: var(--acao); }
.pf-rosca { display: grid; place-items: center; margin-bottom: 14px; }
.pf-rosca svg { width: 160px; height: 160px; }
@media (max-width: 560px) {
  .pf-cats li { grid-template-columns: minmax(0, 1fr) auto; }
  .pf-cats li .pf-barra { grid-column: 1 / -1; grid-row: 2; }
  .pf-cats li small { display: none; }
  .pf-botoes .btn { flex: 1 1 auto; }
}
