/* ZIV ERP — identidade ZIV (Etapa 22: troca de marca ORAH → ZIV)
   navy #0E1A2B · verde #4BA33F · verde-escuro #2F7D2A · verde-claro #B7DB8A · cinza #B9BCBF · claro #F3F4F2 · Montserrat */
@font-face {
  font-family: "Montserrat";
  src: url("../fontes/montserrat-var.woff2") format("woff2");
  font-weight: 300 700; font-style: normal; font-display: swap;
}
:root {
  /* tokens da marca (TROCA_DE_MARCA_ZIV.md, seção 4) */
  --ziv-navy: #0E1A2B;
  --ziv-verde: #4BA33F;
  --ziv-verde-escuro: #2F7D2A;
  --ziv-verde-claro: #B7DB8A;
  --ziv-cinza: #B9BCBF;
  --ziv-claro: #F3F4F2;
  --ziv-texto-secundario: #4A5563;
  --ziv-fonte: "Montserrat", "Helvetica Neue", Arial, sans-serif;
  /* aliases usados pelas telas */
  --marinho: var(--ziv-navy);
  --marinho-fundo: #172639;
  --marinho-linha: #26394F;
  --verde: var(--ziv-verde-escuro);   /* botões verdes com texto branco e links: verde-escuro (contraste) */
  --verde-hover: #256A21;
  --verde-marca: var(--ziv-verde);
  --verde-claro: var(--ziv-verde-claro);
  --destaque: var(--ziv-verde);       /* realces sobre o navy e bordas de destaque */
  --papel: var(--ziv-claro);
  --superficie: #FFFFFF;
  --tinta: var(--ziv-navy);
  --tinta-suave: var(--ziv-texto-secundario);
  --linha: #DFE1DE;
  --linha-forte: var(--ziv-cinza);
  --receita: var(--ziv-verde-escuro);
  --receita-fundo: #E6F2DF;
  --despesa: #B3261E;
  --despesa-fundo: #FBE7E5;
  --previsto: #7D8790;
  --titulo: var(--ziv-fonte);
  --sans: var(--ziv-fonte);
  --raio: 8px;
}
* { box-sizing: border-box; }
html { font-size: 14px; }
body { margin: 0; font-family: var(--sans); color: var(--tinta); background: var(--papel); line-height: 1.5; -webkit-font-smoothing: antialiased; }
a { color: var(--verde); }
:focus-visible { outline: 3px solid var(--destaque); outline-offset: 2px; }
h1, h2, h3 { margin: 0; }
.inline { display: inline; }
[hidden] { display: none !important; }

/* ---------------- Layout ---------------- */
.layout { display: flex; min-height: 100vh; }
.lateral {
  width: 248px; flex-shrink: 0; background: var(--marinho); color: #E6ECF2;
  display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh; overflow-y: auto;
}
.marca { display: block; padding: 22px 22px 18px; }
.marca img { width: 140px; height: auto; display: block; } /* logo com "ERP": mínimo 120 px */
.seletor-empresa { margin: 0 14px 10px; padding: 10px 12px; background: var(--marinho-fundo); border-radius: var(--raio); }
.seletor-empresa label, .seletor-empresa .rotulo-emp { display: block; font-size: .78rem; color: #8FA0B3; margin-bottom: 4px; }
.seletor-empresa strong { font-size: .93rem; color: #fff; font-weight: 600; }
.seletor-empresa select { width: 100%; background: transparent; color: #fff; border: 1px solid var(--marinho-linha); border-radius: 4px; padding: 6px 8px; font: inherit; font-weight: 600; }
.seletor-empresa select option { color: var(--tinta); }
.menu { display: flex; flex-direction: column; padding: 6px 0 18px; flex: 1; }
.menu a, .menu .em-breve { display: block; padding: 8px 22px 8px 19px; border-left: 3px solid transparent; color: #D5DEE8; text-decoration: none; font-size: .95rem; }
.menu a:hover { background: var(--marinho-fundo); color: #fff; }
.menu a.ativo { border-left-color: var(--destaque); background: var(--marinho-fundo); color: #fff; font-weight: 600; }
.menu .em-breve { color: #6B7C90; cursor: default; display: flex; justify-content: space-between; align-items: baseline; }
.menu .em-breve small { font-size: .74rem; }
.menu-topo { display: flex; align-items: center; }
.menu-topo > a { flex: 1; }
.menu-todos { display: inline-flex; gap: 4px; padding-right: 14px; }
.menu-todos button { width: 24px; height: 24px; border-radius: 6px; border: 1px solid var(--marinho-linha); background: transparent; color: #8FA0B3; font: inherit; font-size: 1rem; line-height: 1; cursor: pointer; }
.menu-todos button:hover { color: #fff; border-color: var(--destaque); }
.menu-sec { border-top: 1px solid rgba(255,255,255,.04); }
.menu-grupo { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 8px; margin: 0; padding: 11px 22px 9px; background: none; border: 0; font: inherit; font-size: .76rem; letter-spacing: .08em; text-transform: uppercase; color: #8FA0B3; font-weight: 600; cursor: pointer; text-align: left; }
.menu-grupo:hover { color: #fff; }
.menu-sec.tem-ativo > .menu-grupo { color: var(--verde-claro); }
.seta-menu { width: 7px; height: 7px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(-45deg); transition: transform .15s ease; }
.menu-grupo[aria-expanded="true"] .seta-menu { transform: rotate(45deg); }
.menu-itens { padding-bottom: 6px; }
.menu-grupo[aria-expanded="false"] + .menu-itens { display: none; }
.menu-sub { display: block; margin: 8px 22px 2px 22px; font-size: .72rem; color: #6B7C90; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.menu-contexto { position: fixed; z-index: 50; min-width: 170px; background: var(--superficie); border: 1px solid var(--linha-forte); border-radius: var(--raio); box-shadow: 0 8px 24px rgba(10,22,33,.22); padding: 4px; }
.menu-contexto button { display: block; width: 100%; text-align: left; background: none; border: 0; padding: 8px 12px; font: inherit; font-size: .9rem; color: var(--tinta); border-radius: 5px; cursor: pointer; }
.menu-contexto button:hover, .menu-contexto button:focus-visible { background: var(--papel); }
.rodape-usuario { border-top: 1px solid var(--marinho-linha); padding: 14px 22px 18px; font-size: .88rem; }
.rodape-usuario .quem strong { display: block; color: #fff; font-weight: 600; }
.rodape-usuario .quem span { color: #8FA0B3; font-size: .82rem; }
.acoes-usuario { display: flex; gap: 16px; margin-top: 8px; }
.acoes-usuario a, .btn-link.claro { color: var(--destaque); font-size: .88rem; }

.principal { flex: 1; min-width: 0; }
.barra-mobile { display: none; }
.conteudo { max-width: 1180px; padding: 32px 40px 60px; }

/* ---------------- Cabeçalhos ---------------- */
.cabecalho { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; margin-bottom: 24px; flex-wrap: wrap; }
.titulo-pagina { font-family: var(--titulo); font-weight: 600; font-size: 1.85rem; line-height: 1.2; color: var(--marinho); letter-spacing: -.015em; }
.sub { color: var(--tinta-suave); margin: 6px 0 0; max-width: 68ch; }
.voltar { display: inline-block; font-size: .88rem; color: var(--tinta-suave); text-decoration: none; margin-bottom: 6px; }
.voltar::before { content: "‹ "; }
.voltar:hover { color: var(--marinho); }

/* ---------------- Botões ---------------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; font: inherit; font-weight: 600; font-size: .95rem; padding: 9px 18px; border-radius: var(--raio); border: 1px solid transparent; cursor: pointer; text-decoration: none; line-height: 1.3; }
.btn-principal { background: var(--verde); color: #fff; }
.btn-principal:hover { background: var(--verde-hover); }
.btn-secundario { background: var(--superficie); color: var(--marinho); border-color: var(--linha-forte); }
.btn-secundario:hover { border-color: var(--marinho); }
.btn-pequeno { padding: 6px 12px; font-size: .88rem; }
.btn-largo { width: 100%; padding: 11px; margin-top: 6px; }
.btn-link { background: none; border: 0; padding: 0; font: inherit; color: var(--marinho); text-decoration: underline; cursor: pointer; font-size: .9rem; }
.btn-link.discreto { color: var(--tinta-suave); text-decoration: none; }
.btn-link.discreto:hover { color: var(--despesa); text-decoration: underline; }

/* ---------------- Avisos ---------------- */
.aviso { padding: 11px 14px; border-radius: var(--raio); margin-bottom: 18px; border-left: 4px solid; background: var(--superficie); }
.aviso-sucesso { border-color: var(--receita); background: var(--receita-fundo); }
.aviso-erro { border-color: var(--despesa); background: var(--despesa-fundo); }
.aviso-aviso { border-color: #E6B800; background: #FFF8D9; }

/* ---------------- Filtros ---------------- */
.filtros { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 16px; }
.filtros input[type=search] { flex: 1 1 280px; max-width: 420px; }
.abas { display: inline-flex; border: 1px solid var(--linha-forte); border-radius: var(--raio); overflow: hidden; background: var(--superficie); }
.abas button { background: none; border: 0; padding: 8px 14px; font: inherit; font-size: .9rem; color: var(--tinta-suave); cursor: pointer; }
.abas button + button { border-left: 1px solid var(--linha); }
.abas button.ativo { background: var(--marinho); color: #fff; font-weight: 600; }
.check { display: inline-flex; gap: 6px; align-items: center; font-size: .92rem; color: var(--tinta-suave); cursor: pointer; }

/* ---------------- Tabelas ---------------- */
.tabela-rolagem { overflow-x: auto; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); }
.tabela { width: 100%; border-collapse: collapse; font-size: .93rem; }
.tabela th { text-align: left; font-weight: 600; font-size: .82rem; color: var(--tinta-suave); padding: 10px 14px; border-bottom: 1px solid var(--linha-forte); white-space: nowrap; background: #FAFBFC; }
.tabela td { padding: 11px 14px; border-bottom: 1px solid var(--linha); vertical-align: top; }
.tabela tbody tr:last-child td { border-bottom: 0; }
.tabela tbody tr:hover { background: #F7F9FA; }
.tabela tfoot td { border-top: 2px solid var(--linha-forte); font-weight: 600; padding: 11px 14px; background: #FAFBFC; }
.tabela .num, .tabela th.num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.tabela .dir { text-align: right; }
.tabela .acoes { text-align: right; white-space: nowrap; }
.tabela .acoes form + form { margin-left: 14px; }
.nome-link { font-weight: 600; text-decoration: none; color: var(--marinho); }
.nome-link:hover { text-decoration: underline; }
.secundario { display: block; font-size: .84rem; color: var(--tinta-suave); }
.secundario-cel { color: var(--tinta-suave); font-size: .9rem; }
tr.inativo td, li.inativo { opacity: .55; }
.negativo { color: var(--despesa); }
.contagem { color: var(--tinta-suave); font-size: .88rem; margin-top: 10px; }

.etiqueta { display: inline-block; font-size: .78rem; font-weight: 600; padding: 2px 8px; border-radius: 20px; background: #ECEFF2; color: var(--tinta-suave); white-space: nowrap; }
.etq-cliente, .etq-E { background: var(--receita-fundo); color: var(--receita); }
.etq-fornecedor, .etq-S { background: var(--despesa-fundo); color: var(--despesa); }
.etq-ambos { background: #FFF4C2; color: #6E5800; }
.etq-inativo { background: #E3E7EB; color: var(--tinta-suave); }
.etq-propria { background: #FFF4C2; color: #6E5800; }

/* ---------------- Estados vazios ---------------- */
.vazio { background: var(--superficie); border: 1px dashed var(--linha-forte); border-radius: var(--raio); padding: 36px 32px; max-width: 640px; }
.vazio p { margin: 0 0 18px; color: var(--tinta-suave); }
.vazio .titulo-pagina { margin-bottom: 10px; }
.vazio-curto { color: var(--tinta-suave); }

/* ---------------- Formulários ---------------- */
.formulario { background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 8px 28px 24px; }
.formulario.estreito { max-width: 720px; padding-top: 24px; }
fieldset { border: 0; padding: 18px 0 6px; margin: 0; border-bottom: 1px solid var(--linha); }
fieldset:last-of-type { border-bottom: 0; }
legend { font-family: var(--titulo); font-weight: 600; font-size: 1.25rem; color: var(--marinho); padding: 0; margin-bottom: 4px; }
.grade { display: grid; grid-template-columns: repeat(12, 1fr); gap: 4px 16px; }
.col-2 { grid-column: span 2; } .col-3 { grid-column: span 3; } .col-4 { grid-column: span 4; }
.col-5 { grid-column: span 5; } .col-6 { grid-column: span 6; } .col-7 { grid-column: span 7; }
.col-8 { grid-column: span 8; } .col-9 { grid-column: span 9; } .col-10 { grid-column: span 10; } .col-12 { grid-column: span 12; }
.campo { display: flex; flex-direction: column; margin-bottom: 12px; min-width: 0; }
.campo label, .campo .rotulo { font-size: .86rem; font-weight: 600; margin-bottom: 5px; color: var(--tinta); }
.obrig { color: var(--despesa); margin-left: 2px; }
input, select, textarea {
  font: inherit; font-size: .95rem; color: var(--tinta); background: #fff;
  border: 1px solid var(--linha-forte); border-radius: var(--raio); padding: 8px 10px; width: 100%;
}
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--marinho); box-shadow: 0 0 0 3px rgba(95, 191, 92, .35); }
input[readonly] { background: var(--papel); color: var(--tinta-suave); }
input[type=checkbox], input[type=radio] { width: auto; accent-color: var(--marinho); }
.com-erro input, .com-erro select, .com-erro textarea { border-color: var(--despesa); }
.msg-erro { color: var(--despesa); font-size: .84rem; margin: 4px 0 0; }
.ajuda { color: var(--tinta-suave); font-size: .82rem; margin: 4px 0 0; }
.ajuda.centro { text-align: center; margin-top: 18px; }
.barra-acoes { display: flex; gap: 10px; padding-top: 18px; }
.opcoes-tipo { display: flex; gap: 22px; flex-wrap: wrap; padding: 4px 0; }
.opcoes-tipo label { display: inline-flex; gap: 6px; align-items: center; font-weight: 500; cursor: pointer; }
.opcoes-perfil { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; }
.cartao-opcao { display: flex; gap: 10px; align-items: flex-start; border: 1px solid var(--linha-forte); border-radius: var(--raio); padding: 12px; cursor: pointer; }
.cartao-opcao:has(input:checked) { border-color: var(--marinho); background: #F2F4F7; box-shadow: inset 3px 0 0 var(--destaque); }
.cartao-opcao input { margin-top: 3px; }
.cartao-opcao strong { display: block; font-size: .92rem; }
.cartao-opcao small { color: var(--tinta-suave); font-size: .82rem; }
.lista-checks { display: flex; flex-wrap: wrap; gap: 8px 20px; }
.lista-checks .check { color: var(--tinta); }

/* ---------------- Início ---------------- */
.resumo { display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid var(--linha); border-radius: var(--raio); background: var(--superficie); margin-bottom: 28px; }
.resumo a { padding: 18px 20px; text-decoration: none; color: var(--tinta); }
.resumo a + a { border-left: 1px solid var(--linha); }
.resumo a:hover { background: #F7F9FA; }
.resumo strong { display: block; font-family: var(--titulo); font-weight: 600; font-size: 2rem; color: var(--marinho); line-height: 1.1; }
.resumo span { color: var(--tinta-suave); font-size: .9rem; }
.bloco { margin-bottom: 32px; }
.bloco h2 { font-family: var(--titulo); font-weight: 600; font-size: 1.45rem; color: var(--marinho); }
.cabecalho-bloco { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; margin-bottom: 14px; flex-wrap: wrap; }
.passos { list-style: none; padding: 0; margin: 18px 0 0; max-width: 720px; }
.passos li { display: flex; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--linha); }
.passos .marcador { flex-shrink: 0; width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; font-weight: 700; font-size: .9rem; background: var(--superficie); border: 2px solid var(--linha-forte); color: var(--tinta-suave); }
.passos li.feito .marcador { background: var(--marinho); border-color: var(--marinho); color: var(--destaque); }
.passos a { font-weight: 600; text-decoration: none; }
.passos a:hover { text-decoration: underline; }
.passos li.feito a { color: var(--tinta-suave); }
.passos p { margin: 2px 0 0; color: var(--tinta-suave); font-size: .9rem; }

/* ---------------- Plano de contas ---------------- */
.plano { display: flex; flex-direction: column; gap: 18px; }
.plano-grupo { background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); }
.plano-grupo > header { display: flex; align-items: baseline; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--linha); flex-wrap: wrap; }
.plano-grupo > header .cod { font-family: var(--titulo); font-weight: 600; font-size: 1.4rem; color: var(--destaque); background: var(--marinho); min-width: 34px; text-align: center; border-radius: 4px; padding: 0 6px; }
.plano-grupo > header h2 { font-family: var(--titulo); font-weight: 600; font-size: 1.35rem; color: var(--marinho); }
.plano-grupo > header p { margin: 0; color: var(--tinta-suave); font-size: .88rem; }
.plano-grupo ul { list-style: none; margin: 0; padding: 0; }
.plano-grupo > ul > li { border-bottom: 1px solid var(--linha); scroll-margin-top: 20px; }
.plano-grupo > ul > li:last-child { border-bottom: 0; }
.plano-grupo > ul > li:target { box-shadow: inset 4px 0 0 var(--destaque); }
.linha-conta { display: flex; align-items: center; gap: 14px; padding: 10px 18px; flex-wrap: wrap; }
.linha-conta .info { flex: 1; min-width: 220px; }
.cod { font-variant-numeric: tabular-nums; color: var(--tinta-suave); font-size: .88rem; min-width: 64px; }
.acao-inline summary { cursor: pointer; color: var(--marinho); font-size: .88rem; text-decoration: underline; list-style: none; }
.acao-inline summary::-webkit-details-marker { display: none; }
.acao-inline[open] summary { color: var(--tinta-suave); text-decoration: none; }
.acao-inline form { display: flex; gap: 8px; margin-top: 8px; }
.acao-inline input { min-width: 220px; padding: 6px 9px; }
.linha-conta .acao-inline[open] { flex-basis: 100%; padding-left: 78px; }
.plano-grupo > header .criar-conta { margin-left: auto; }
.plano-grupo > header .criar-conta[open] { flex-basis: 100%; margin-left: 0; }
.acao-inline form { flex-wrap: wrap; }
.acao-inline select { width: auto; padding: 6px 9px; }
/* Contatos */
.legenda-ajuda { margin: -2px 0 12px; }
.lista-contatos { display: flex; flex-direction: column; gap: 12px; margin-bottom: 12px; }
.contato { border: 1px solid var(--linha); border-left: 3px solid var(--destaque); border-radius: var(--raio); padding: 12px 14px 2px; background: #FBFCFD; }
.contato.com-erro { border-color: var(--despesa); }
.checks-contato { flex-direction: row; align-items: center; gap: 18px; flex-wrap: wrap; padding-top: 24px; }
.checks-contato .check { font-weight: 500; margin: 0; color: var(--tinta); }
.checks-contato .remover { margin-left: auto; }
/* Consulta CNPJ */
.status-consulta { font-size: .82rem; margin: 4px 0 0; color: var(--tinta-suave); }
.status-consulta.ok { color: var(--receita); }
.status-consulta.alerta { color: #8A6A00; }
.status-consulta.falha { color: var(--despesa); }

/* ---------------- Tela de acesso ---------------- */
.tela-acesso { display: grid; grid-template-columns: minmax(320px, 44%) 1fr; min-height: 100vh; }
.acesso-marca { background: var(--marinho); display: flex; flex-direction: column; justify-content: center; padding: 56px; color: #D5DEE8; }
.acesso-marca img { width: min(300px, 100%); height: auto; }
.acesso-marca p { font-family: var(--titulo); font-weight: 600; font-size: 1.6rem; line-height: 1.3; color: #fff; max-width: 22ch; margin: 36px 0 0; }
.acesso-form { display: flex; align-items: center; justify-content: center; padding: 40px 24px; }
.caixa-acesso { width: 100%; max-width: 380px; }
.caixa-acesso h1 { font-family: var(--titulo); font-weight: 600; font-size: 2.2rem; color: var(--marinho); margin-bottom: 18px; }
.caixa-acesso .sub { margin: -8px 0 20px; }

/* ---------------- Responsivo ---------------- */
@media (max-width: 900px) {
  .lateral { position: fixed; z-index: 20; left: 0; top: 0; transform: translateX(-100%); transition: transform .2s ease; }
  .lateral.aberta { transform: none; box-shadow: 0 0 0 100vmax rgba(0,0,0,.35); }
  .barra-mobile { display: flex; align-items: center; gap: 14px; background: var(--marinho); padding: 10px 16px; position: sticky; top: 0; z-index: 10; }
  .barra-mobile img { height: 30px; }
  .btn-menu { background: var(--verde); color: #fff; border: 0; border-radius: var(--raio); padding: 6px 12px; font: inherit; font-weight: 600; }
  .conteudo { padding: 22px 16px 48px; }
  .titulo-pagina { font-size: 1.7rem; }
  .grade { grid-template-columns: 1fr; }
  .grade > * { grid-column: 1 / -1 !important; }
  .formulario { padding: 4px 16px 18px; }
  .resumo { grid-template-columns: repeat(2, 1fr); }
  .resumo a:nth-child(3) { border-left: 0; }
  .resumo a:nth-child(n+3) { border-top: 1px solid var(--linha); }
  .linha-conta .acao-inline[open] { padding-left: 0; }
  .checks-contato .remover { margin-left: 0; }
  .tela-acesso { grid-template-columns: 1fr; }
  .acesso-marca { padding: 32px 24px; }
  .acesso-marca p { font-size: 1.25rem; margin-top: 18px; }
}
@media (prefers-reduced-motion: reduce) { * { transition: none !important; } }

/* =============== Etapa 2: lançamentos =============== */
.faixa-vencidos { display: flex; gap: 14px; align-items: baseline; flex-wrap: wrap; padding: 12px 16px; margin-bottom: 16px; border-radius: var(--raio); background: var(--despesa-fundo); border-left: 4px solid var(--despesa); color: var(--despesa); text-decoration: none; }
.faixa-vencidos span { color: var(--tinta); font-size: .92rem; }
.faixa-vencidos:hover strong { text-decoration: underline; }
.periodo { display: inline-flex; align-items: center; gap: 8px; }
.periodo label { font-size: .88rem; color: var(--tinta-suave); }
.periodo input { width: auto; }
.filtros select { width: auto; max-width: 240px; }
.tabela-lanc td { vertical-align: middle; }
.cod-inline { color: var(--tinta-suave); font-size: .84rem; font-variant-numeric: tabular-nums; }
.parcela { display: inline-block; background: #ECEFF2; border-radius: 3px; padding: 0 5px; font-variant-numeric: tabular-nums; color: var(--tinta); }
.etq-st-aberto { background: #ECEFF2; color: var(--tinta); }
.etq-st-parcial { background: #FFF4C2; color: #6E5800; }
.etq-st-vencido { background: var(--despesa-fundo); color: var(--despesa); }
.etq-st-quitado { background: var(--receita-fundo); color: var(--receita); }
tr.st-quitado td { color: var(--tinta-suave); }
tr.st-vencido td:first-child { box-shadow: inset 3px 0 0 var(--despesa); }
fieldset[disabled] input, fieldset[disabled] select, fieldset[disabled] textarea { background: var(--papel); }
.alinhar-base { justify-content: flex-end; padding-bottom: 20px; }
.rateio-cab { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.rateio-cab .abas label { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; font-size: .9rem; cursor: pointer; }
.rateio-cab .abas label + label { border-left: 1px solid var(--linha); }
.rateio-cab .abas label:has(input:checked) { background: var(--marinho); color: #fff; font-weight: 600; }
.rateio-cab .abas input { position: absolute; opacity: 0; pointer-events: none; }
.restante { font-size: .9rem; font-weight: 600; }
.restante.ok { color: var(--receita); }
.restante.falta { color: #8A6A00; }
.linhas-rateio { display: flex; flex-direction: column; gap: 8px; margin-bottom: 10px; }
.linha-rateio { display: grid; grid-template-columns: minmax(180px, 1fr) 140px 28px auto; gap: 10px; align-items: center; max-width: 620px; }
.linha-rateio .unidade { color: var(--tinta-suave); font-size: .9rem; }
.acoes-rateio { display: flex; gap: 16px; align-items: center; margin-bottom: 8px; }
.bloco-repeticao { margin-top: 12px; }
.resumo-repeticao { margin: 0 0 8px; padding: 10px 14px; background: #F2F4F7; border-left: 3px solid var(--destaque); border-radius: 4px; font-size: .93rem; }
.escopo { display: flex; flex-wrap: wrap; gap: 6px 20px; align-items: center; padding: 14px 0 0; }
.escopo label { display: inline-flex; gap: 6px; align-items: center; }
.escopo .rotulo { font-weight: 600; font-size: .9rem; }
.escopo .ajuda { flex-basis: 100%; }
.barra-acoes .excluir { margin-left: auto; align-self: center; }
.resumo-titulo { display: grid; grid-template-columns: repeat(5, auto); gap: 4px 28px; justify-content: start; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 14px 18px; margin-bottom: 18px; max-width: 900px; }
.resumo-titulo span { display: block; font-size: .8rem; color: var(--tinta-suave); }
.resumo-titulo strong { font-variant-numeric: tabular-nums; }
.total-baixa { display: flex; justify-content: space-between; align-items: baseline; padding: 12px 14px; margin: 2px 0 14px; background: var(--marinho); color: #fff; border-radius: var(--raio); }
.total-baixa strong { font-family: var(--titulo); font-weight: 600; font-size: 1.6rem; color: var(--destaque); font-variant-numeric: tabular-nums; }
@media (max-width: 900px) {
  .resumo-titulo { grid-template-columns: 1fr 1fr; }
  .linha-rateio { grid-template-columns: 1fr 100px 24px; }
  .linha-rateio [data-remover-rateio] { grid-column: 1 / -1; justify-self: start; }
}
.quadro-financeiro { display: grid; grid-template-columns: 1.1fr 1fr 1fr; gap: 0; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); margin-bottom: 20px; }
.saldo-total { background: var(--marinho); color: #D5DEE8; padding: 20px 22px; border-radius: var(--raio) 0 0 var(--raio); display: flex; flex-direction: column; justify-content: center; }
.saldo-total span { font-size: .9rem; }
.saldo-total strong { font-family: var(--titulo); font-weight: 600; font-size: 2.2rem; color: var(--destaque); font-variant-numeric: tabular-nums; line-height: 1.2; }
.saldo-total strong.negativo { color: #FF9C94; }
.coluna-fin { padding: 16px 22px; text-decoration: none; color: var(--tinta); border-left: 1px solid var(--linha); }
.coluna-fin:hover { background: #F7F9FA; }
.coluna-fin h2 { font-family: var(--titulo); font-weight: 600; font-size: 1.3rem; color: var(--marinho); margin-bottom: 6px; }
.coluna-fin dl { margin: 0; }
.coluna-fin dl div { display: flex; justify-content: space-between; gap: 12px; padding: 4px 0; font-size: .92rem; }
.coluna-fin dt { color: var(--tinta-suave); }
.coluna-fin dd { margin: 0; font-variant-numeric: tabular-nums; font-weight: 600; }
.coluna-fin dd small { font-weight: 400; color: var(--tinta-suave); margin-left: 4px; }
.coluna-fin dl div.alerta dt, .coluna-fin dl div.alerta dd { color: var(--despesa); }
@media (max-width: 900px) {
  .quadro-financeiro { grid-template-columns: 1fr; }
  .saldo-total { border-radius: var(--raio) var(--raio) 0 0; }
  .coluna-fin { border-left: 0; border-top: 1px solid var(--linha); }
}
.conteudo { max-width: 1360px; }
.tabela-lanc th, .tabela-lanc td { padding-left: 10px; padding-right: 10px; }
.tabela-lanc td:nth-child(3), .tabela-lanc td:nth-child(4) { font-size: .88rem; }
.tabela-lanc .acoes { width: 1%; }
.atalhos-periodo { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }
.atalhos-periodo a { padding: 5px 12px; border-radius: 20px; border: 1px solid var(--linha-forte); background: var(--superficie); color: var(--tinta-suave); text-decoration: none; font-size: .88rem; }
.atalhos-periodo a:hover { border-color: var(--marinho); color: var(--marinho); }
.atalhos-periodo a.ativo { background: var(--marinho); border-color: var(--marinho); color: #fff; font-weight: 600; }
.aviso-dividido { display: flex; flex-direction: column; justify-content: flex-start; margin-bottom: 12px; }
.aviso-dividido .rotulo { font-size: .86rem; font-weight: 600; margin-bottom: 5px; }
.aviso-dividido p { margin: 0; padding: 8px 10px; border: 1px dashed var(--linha-forte); border-radius: var(--raio); color: var(--tinta-suave); }
.serie { max-height: 340px; overflow-y: auto; }
.serie tr.atual td { background: #FFF8D9; font-weight: 600; }
.legenda-ajuda { margin: -2px 0 12px; }
@media print {
  .lateral, .barra-mobile, .nao-imprimir, .aviso { display: none !important; }
  body { background: #fff; }
  .conteudo { padding: 0; max-width: none; }
  .tabela-rolagem { border: 0; overflow: visible; }
  .tabela { font-size: 10pt; }
  .tabela th { background: #fff; }
  a { color: inherit; text-decoration: none; }
}
.tabela .acoes a + form { margin-left: 14px; }
.tag-cl { display: inline-block; font-size: .74rem; font-weight: 600; padding: 0 6px; border-radius: 3px; }
.tag-fixo { background: #E8EEF6; color: #2B4C7E; }
.tag-variavel { background: #F3E9F7; color: #6B3A80; }
.tag-nc { background: #FFF4C2; color: #6E5800; }
.acoes-cab { display: flex; gap: 10px; flex-wrap: wrap; }
.totais-extrato { display: flex; flex-wrap: wrap; gap: 0; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); margin-bottom: 12px; }
.totais-extrato div { padding: 12px 18px; border-right: 1px solid var(--linha); }
.totais-extrato div:last-child { border-right: 0; }
.totais-extrato span { display: block; font-size: .8rem; color: var(--tinta-suave); }
.totais-extrato strong { font-variant-numeric: tabular-nums; font-size: 1.05rem; }
.totais-extrato .alerta strong { color: var(--despesa); }
.baixas-cel div + div { margin-top: 3px; }
.baixas-cel small { color: var(--tinta-suave); }
.tabela-extrato td { vertical-align: top; }
@media print { .extrato { break-inside: auto; } .totais-extrato { border: 1px solid #999; } }
.tabela .sel { width: 1%; padding-right: 0; }
.barra-lote { position: sticky; bottom: 16px; margin-top: 14px; display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; padding: 12px 18px; background: var(--marinho); color: #fff; border-radius: var(--raio); box-shadow: 0 6px 18px rgba(30, 40, 41, .25); }
.barra-lote strong { color: var(--destaque); font-variant-numeric: tabular-nums; }
.tabela-lote td { vertical-align: middle; }
.tabela-lote select { min-width: 130px; }
.tabela-lote td:first-child { min-width: 170px; }
.tabela-lote input { width: 96px; text-align: right; }
.tabela-lote .msg-erro { display: block; }
.tabela-lote tr.linha-erro td { background: var(--despesa-fundo); }
.formulario.lote { padding-top: 16px; }

/* =============== Etapa 3: fluxo de caixa =============== */
.controles-fluxo .qtd { width: 70px; }
.controles-fluxo .navegacao { display: inline-flex; gap: 14px; margin-left: auto; }
.resumo-fluxo { display: grid; grid-template-columns: repeat(5, 1fr); background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); margin-bottom: 16px; }
.resumo-fluxo div { padding: 14px 18px; border-right: 1px solid var(--linha); }
.resumo-fluxo div:last-child { border-right: 0; }
.resumo-fluxo span { display: block; font-size: .8rem; color: var(--tinta-suave); }
.resumo-fluxo strong { font-family: var(--titulo); font-weight: 600; font-size: 1.45rem; color: var(--marinho); font-variant-numeric: tabular-nums; }
.resumo-fluxo strong.entrada { color: var(--receita); }
.resumo-fluxo strong.saida { color: var(--despesa); }
.resumo-fluxo strong.negativo, .resumo-fluxo .alerta strong { color: var(--despesa); }
.resumo-fluxo .alerta { background: var(--despesa-fundo); }
.grafico-saldo { margin: 0 0 14px; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 10px 12px 6px; }
.grafico-saldo svg { width: 100%; height: 150px; display: block; }
.grafico-saldo .linha-zero { stroke: var(--linha-forte); stroke-dasharray: 4 4; }
.grafico-saldo .linha-saldo { stroke: var(--marinho); stroke-width: 2.5; vector-effect: non-scaling-stroke; }
.grafico-saldo .ponto { fill: var(--destaque); stroke: var(--marinho); stroke-width: 1.5; }
.grafico-saldo .ponto-neg { fill: var(--despesa); }
.grafico-saldo figcaption { font-size: .8rem; color: var(--tinta-suave); padding-top: 4px; }
.acoes-fluxo { margin-bottom: 6px; text-align: right; }
.fluxo-rolagem { max-height: 75vh; }
.tabela-fluxo { font-size: .86rem; }
.tabela-fluxo th, .tabela-fluxo td { padding: 6px 10px; white-space: nowrap; text-align: right; font-variant-numeric: tabular-nums; border-bottom: 1px solid var(--linha); }
.tabela-fluxo tbody th { text-align: left; font-weight: 500; position: sticky; left: 0; background: var(--superficie); z-index: 1; min-width: 230px; max-width: 290px; overflow: hidden; text-overflow: ellipsis; }
.tabela-fluxo thead th { position: sticky; top: 0; z-index: 2; background: #FAFBFC; vertical-align: bottom; }
.tabela-fluxo thead th.col-rotulo { left: 0; z-index: 3; text-align: left; }
.tabela-fluxo .per span { display: block; line-height: 1.25; }
.tabela-fluxo .per .rot { color: var(--tinta); font-weight: 700; font-size: .9rem; }
.tabela-fluxo .per .subrot { font-weight: 400; }
.tabela-fluxo .tag-per { font-size: .68rem; font-weight: 600; color: var(--tinta-suave); }
.tabela-fluxo .per-real .tag-per { color: var(--marinho); }
.tabela-fluxo .per-prev .tag-per { color: #8A6A00; }
.tabela-fluxo .per-hoje { box-shadow: inset 0 -3px 0 var(--destaque); }
.tabela-fluxo .col-total { background: #F5F7F9; font-weight: 600; }
.tabela-fluxo .zero { color: #B9C2C1; }
.tabela-fluxo .linha-grupo { cursor: pointer; }
.tabela-fluxo .linha-grupo:hover th, .tabela-fluxo .linha-grupo:hover td { background: #F2F4F7; }
.tabela-fluxo .linha-grupo.sem-filhos { cursor: default; }
.tabela-fluxo .linha-grupo th { padding-left: 18px; }
.tabela-fluxo .seta { display: inline-block; width: 12px; color: var(--tinta-suave); transition: transform .15s; }
.tabela-fluxo .linha-grupo[aria-expanded="true"] .seta { transform: rotate(90deg); }
.tabela-fluxo .linha-conta-fluxo th { padding-left: 38px; font-weight: 400; color: var(--tinta-suave); }
.tabela-fluxo .linha-conta-fluxo td { color: var(--tinta-suave); }
.tabela-fluxo .linha-secao th, .tabela-fluxo .linha-secao td { font-weight: 700; background: #F2F4F7; border-top: 1px solid var(--linha-forte); }
.tabela-fluxo .linha-secao.entrada th { color: var(--receita); }
.tabela-fluxo .linha-secao.saida th { color: var(--despesa); }
.tabela-fluxo .linha-saldo-ini th, .tabela-fluxo .linha-saldo-ini td { color: var(--tinta-suave); }
.tabela-fluxo .linha-resultado th, .tabela-fluxo .linha-resultado td { font-weight: 600; border-top: 1px solid var(--linha-forte); }
.tabela-fluxo .linha-saldo-fim th, .tabela-fluxo .linha-saldo-fim td { background: var(--marinho); color: #fff; font-weight: 700; border-bottom: 0; }
.tabela-fluxo .linha-saldo-fim .negativo { color: #FF9C94; }
.tabela-fluxo .linha-saldo-fim .zero { color: #8FA0B3; }
.vencidos-fluxo { margin-top: 32px; scroll-margin-top: 16px; }
.vencidos-fluxo h3 { font-family: var(--titulo); font-weight: 600; color: var(--marinho); font-size: 1.15rem; margin: 18px 0 6px; }
.totais-vencidos { display: flex; gap: 24px; flex-wrap: wrap; margin: 0 0 8px; font-size: .92rem; color: var(--tinta-suave); }
.totais-vencidos strong { color: var(--tinta); }
.tabela-vencidos td { vertical-align: middle; }
.tabela-vencidos tr.sit-fora td:first-child { box-shadow: inset 3px 0 0 var(--despesa); }
.tabela-vencidos tr.sit-projetado td:first-child { box-shadow: inset 3px 0 0 var(--receita); }
.form-recup { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.form-recup input[type=date] { width: auto; padding: 5px 8px; }
@media (max-width: 900px) { .resumo-fluxo { grid-template-columns: 1fr 1fr; } .controles-fluxo .navegacao { margin-left: 0; } }
@media print {
  .fluxo-rolagem { max-height: none; }
  .tabela-fluxo tbody th { position: static; }
  .tabela-fluxo [hidden] { display: table-row !important; }
  .grafico-saldo { break-inside: avoid; }
}
.tabela-fluxo .linha-secao.inv th { color: var(--marinho); }
.tabela-fluxo .linha-vazia th { padding-left: 18px; font-weight: 400; color: var(--tinta-suave); font-style: italic; }

/* =============== Etapa 4: relatórios =============== */
.abas-modo { margin-bottom: 12px; }
.abas-modo a { display: inline-block; padding: 8px 14px; font-size: .9rem; color: var(--tinta-suave); text-decoration: none; }
.abas-modo a + a { border-left: 1px solid var(--linha); }
.abas-modo a.ativo { background: var(--marinho); color: #fff; font-weight: 600; }
.filtros-rel select { max-width: 260px; }
.tabela-dre .col-pct { background: #F5F7F9; color: var(--tinta-suave); }
.tabela-dre .linha-saldo-fim .col-pct, .tabela-dre .linha-saldo-fim .col-total { background: var(--marinho); color: #fff; }
.cel-link { color: inherit; text-decoration: none; border-bottom: 1px dotted var(--linha-forte); }
.cel-link:hover { color: var(--marinho); border-bottom-color: var(--marinho); }
.linha-memo th { text-align: left !important; font-size: .78rem; color: var(--tinta-suave); font-weight: 600; padding-top: 18px !important; background: var(--superficie); }
.pe-destaque { display: grid; grid-template-columns: minmax(240px, 1fr) 2fr; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); margin: 4px 0 8px; }
.pe-principal { background: var(--marinho); color: #D5DEE8; padding: 20px 22px; border-radius: var(--raio) 0 0 var(--raio); }
.pe-principal span, .pe-principal small { display: block; font-size: .88rem; }
.pe-principal strong { display: block; font-family: var(--titulo); font-weight: 600; font-size: 2.2rem; color: var(--destaque); line-height: 1.2; font-variant-numeric: tabular-nums; }
.pe-principal strong.sem-pe { font-size: 1.6rem; color: #FF9C94; }
.pe-numeros { display: grid; grid-template-columns: 1fr 1fr; margin: 0; }
.pe-numeros div { padding: 14px 20px; border-left: 1px solid var(--linha); border-bottom: 1px solid var(--linha); }
.pe-numeros dt { font-size: .82rem; color: var(--tinta-suave); }
.pe-numeros dd { margin: 0; font-weight: 600; font-size: 1.1rem; font-variant-numeric: tabular-nums; }
.pe-numeros dd small { font-weight: 400; color: var(--tinta-suave); margin-left: 6px; }
.pe-numeros .alerta dd { color: var(--despesa); }
.tabela-fluxo tr.nc th, .tabela-fluxo tr.nc td { color: #8A6A00; }
.lista-colunas { font-size: .88rem; color: var(--tinta-suave); line-height: 1.8; max-width: 100ch; }
@media (max-width: 900px) { .pe-destaque { grid-template-columns: 1fr; } .pe-principal { border-radius: var(--raio) var(--raio) 0 0; } }

/* =============== Etapa 5: extrato e conciliação =============== */
.painel-conciliacao { display: grid; grid-template-columns: 1fr 1.3fr 1.3fr; gap: 0; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); margin-bottom: 16px; }
.painel-conciliacao > div { padding: 14px 18px; border-right: 1px solid var(--linha); }
.painel-conciliacao > div:last-child { border-right: 0; }
.painel-conciliacao span, .painel-conciliacao label { display: block; font-size: .82rem; color: var(--tinta-suave); margin-bottom: 4px; }
.painel-conciliacao strong { font-family: var(--titulo); font-weight: 600; font-size: 1.45rem; color: var(--marinho); font-variant-numeric: tabular-nums; }
.linha-banco { display: flex; gap: 8px; }
.linha-banco input[type=date] { width: auto; }
.linha-banco input[name=saldo_banco] { text-align: right; font-weight: 600; }
.diferenca small { display: block; font-size: .8rem; color: var(--tinta-suave); margin-top: 2px; }
.diferenca.ok { background: var(--receita-fundo); }
.diferenca.ok strong { color: var(--receita); }
.diferenca.falta { background: #FFF8D9; }
.diferenca.falta strong { color: #8A6A00; }
.tabela-extrato-banco td { vertical-align: middle; }
.tabela-extrato-banco tr.pendente td:nth-child(2) { box-shadow: inset 3px 0 0 #E6B800; }
.tabela-extrato-banco tr.abertura td { background: #F2F4F7; font-style: italic; }
.tabela-extrato-banco .entrada-v { color: var(--receita); }
.tabela-extrato-banco .saida-v { color: var(--despesa); }
.botoes-conc { display: inline-flex; gap: 10px; }
.acoes-saldo { margin-top: 10px; }
@media (max-width: 900px) { .painel-conciliacao { grid-template-columns: 1fr; } .painel-conciliacao > div { border-right: 0; border-bottom: 1px solid var(--linha); } }
.tabela-extrato-banco tr.saldo-dia td { background: #F2F4F7; font-weight: 600; color: var(--marinho); font-size: .86rem; padding-top: 7px; padding-bottom: 7px; border-bottom: 2px solid var(--linha-forte); }

/* =============== Cartões de crédito =============== */
.grade-cartoes { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }
.cartao-mini { display: flex; flex-direction: column; gap: 10px; padding: 18px 20px; border-radius: 12px; background: var(--marinho); color: #D5DEE8; text-decoration: none; border-top: 4px solid var(--destaque); }
.cartao-mini:hover { background: var(--marinho-fundo); }
.cartao-mini.inativo { opacity: .55; }
.cartao-mini .topo { display: flex; justify-content: space-between; align-items: baseline; }
.cartao-mini .topo strong { color: #fff; font-size: 1.05rem; }
.cartao-mini .valor-atual span { display: block; font-size: .82rem; }
.cartao-mini .valor-atual strong { font-family: var(--titulo); font-weight: 600; font-size: 1.9rem; color: var(--destaque); font-variant-numeric: tabular-nums; }
.cartao-mini .a-pagar { margin: 0; font-size: .85rem; color: #FFD9D5; }
.cartao-mini .barra { height: 6px; background: var(--marinho-linha); border-radius: 3px; overflow: hidden; margin-bottom: 4px; }
.cartao-mini .barra span { display: block; height: 100%; background: var(--destaque); }
.cartao-mini small { font-size: .78rem; color: #8FA0B3; }
.final-cartao { font-family: var(--sans); font-size: 1rem; color: var(--tinta-suave); }
.linha-faturas { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 10px; margin-bottom: 14px; }
.fat { flex: 0 0 auto; min-width: 118px; display: flex; flex-direction: column; padding: 10px 14px; border: 1px solid var(--linha-forte); border-radius: var(--raio); background: var(--superficie); text-decoration: none; color: var(--tinta); }
.fat strong { font-size: .95rem; }
.fat span { font-variant-numeric: tabular-nums; font-size: .9rem; }
.fat small { font-size: .74rem; font-weight: 600; color: var(--tinta-suave); }
.fat-aberta small { color: #2B4C7E; }
.fat-fechada small { color: #8A6A00; }
.fat-vencida small { color: var(--despesa); }
.fat-paga small { color: var(--receita); }
.fat.ativo { border-color: var(--marinho); box-shadow: inset 0 -3px 0 var(--destaque); background: #F2F4F7; }
.fatura-cab { display: grid; grid-template-columns: minmax(240px, 1fr) 2fr; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); margin-bottom: 16px; }
.principal-fat { background: var(--marinho); color: #D5DEE8; padding: 18px 22px; border-radius: var(--raio) 0 0 var(--raio); }
.principal-fat span, .principal-fat small { display: block; font-size: .88rem; }
.principal-fat strong { display: block; font-family: var(--titulo); font-weight: 600; font-size: 2.2rem; color: var(--destaque); font-variant-numeric: tabular-nums; }
.principal-fat em { font-style: normal; font-weight: 600; color: #fff; }
.conferencia-fat input { width: 120px; text-align: right; }
.ok-txt { color: var(--receita); font-weight: 600; }
.falta-txt { color: #8A6A00; font-weight: 600; }
.acoes-fat { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.pagamentos-fat { margin: -6px 0 16px; font-size: 13px; color: #4a5560; }
.pagamentos-fat .secundario { display: block; }
.tabela-fatura td { vertical-align: middle; }
.tabela-fatura tr.item-saldo_anterior td { background: #FFF8D9; }
.tabela-fatura tr.item-estorno td { background: var(--receita-fundo); }
@media (max-width: 900px) { .fatura-cab { grid-template-columns: 1fr; } .principal-fat { border-radius: var(--raio) var(--raio) 0 0; } }
.tag-fatura { background: #E8EEF6; color: #2B4C7E; }

/* =============== Etapa 6: faturamento =============== */
.nf-autorizada, .med-aprovada, .os-concluida { background: var(--receita-fundo); color: var(--receita); }
.nf-processando, .nf-pendente, .med-rascunho, .os-aberta { background: #E8EEF6; color: #2B4C7E; }
.nf-erro, .med-reprovada { background: var(--despesa-fundo); color: var(--despesa); }
.nf-cancelada, .os-cancelada { background: #E3E7EB; color: var(--tinta-suave); }
.med-faturada, .os-faturada { background: #FFF4C2; color: #6E5800; }
.subtitulo-sec { font-family: var(--titulo); font-weight: 600; color: var(--marinho); font-size: 1.3rem; margin: 22px 0 10px; }
.grupo-fila td { background: #F2F4F7; font-weight: 600; color: var(--marinho); font-size: .86rem; }
.tabela-fila td { vertical-align: middle; }
.grade-nota { display: grid; grid-template-columns: 1fr 2fr; gap: 20px; }
.discriminacao { white-space: pre-line; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 12px 14px; }
.acoes-nota { display: flex; gap: 16px; align-items: flex-start; flex-wrap: wrap; }
.inline-flex { display: inline-flex; }
.form-recup input[name=aprovado_por] { width: 150px; padding: 5px 8px; }
@media (max-width: 900px) { .grade-nota { grid-template-columns: 1fr; } }
.aviso-ultimo { color: #2B4C7E; font-weight: 500; }
.linhas-parcelas { display: flex; flex-direction: column; gap: 6px; max-width: 460px; margin-bottom: 6px; }
.linha-parcela { display: grid; grid-template-columns: 36px 1fr 1fr; gap: 8px; align-items: center; }
.linha-parcela input.num { text-align: right; }
/* Etapa 7 */
.tabela-itens td { vertical-align: middle; }
.tabela-itens input.num { width: 110px; text-align: right; }
.tabela-itens select { min-width: 240px; }
.tabela-itens input.fator { width: 80px; }
.novo-produto { display: flex; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
.novo-produto input { width: 160px; padding: 5px 8px; }
.novo-produto input.un { width: 60px; }
.gerador-parcelas { display: flex; gap: 14px; align-items: flex-end; flex-wrap: wrap; margin-bottom: 10px; }
.gerador-parcelas label { display: flex; flex-direction: column; font-size: .84rem; font-weight: 600; gap: 4px; }
.gerador-parcelas input { width: auto; }
.gerador-parcelas input.qtd { width: 80px; }
/* Etapa 8 */
.ped-orcamento { background: #E8EEF6; color: #2B4C7E; } .ped-aprovado { background: var(--receita-fundo); color: var(--receita); }
.ped-faturado { background: #FFF4C2; color: #6E5800; } .ped-cancelado { background: #E3E7EB; color: var(--tinta-suave); }
.tabela-trib { font-size: .84rem; }
.tabela-trib td { vertical-align: top; padding: 8px 6px; }
.tabela-trib input { padding: 4px 5px; font-size: .84rem; }
.tabela-trib .w2 { width: 42px; } .tabela-trib .w3 { width: 58px; } .tabela-trib .w4 { width: 64px; } .tabela-trib .w5 { width: 80px; }
.tabela-trib td.par input { display: inline-block; margin: 0 2px 2px 0; }
.origem-trib { display: block; font-size: .74rem; color: #2B4C7E; margin-top: 3px; max-width: 280px; }
.lista-avisos { margin: 6px 0 0 18px; padding: 0; }
.confirmar-trib { margin-top: 14px; padding: 12px 14px; background: #FFF8D9; border-left: 4px solid #E6B800; border-radius: var(--raio); }
.estreito-larg { max-width: 900px; padding: 16px 20px; margin-bottom: 12px; }
strong.peq { font-size: 1.1rem; }
.tabela-trib td:first-child { min-width: 240px; }
.tabela-trib td:first-child .secundario { display: block; }

/* ---------------- Etapa 9 ---------------- */
.acesso-marca p span { color: var(--verde-claro); }
.chave { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; font-size: .95rem; color: var(--tinta); }
.chave input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.chave .trilho { position: relative; flex-shrink: 0; width: 38px; height: 22px; border-radius: 11px; background: #C5CBD2; transition: background .15s ease; }
.chave .trilho::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: transform .15s ease; }
.chave input:checked + .trilho { background: var(--verde-marca); }
.chave input:checked + .trilho::after { transform: translateX(16px); }
.chave input:focus-visible + .trilho { outline: 3px solid var(--destaque); outline-offset: 2px; }
.previa-nota { margin: 4px 0 0; padding: 12px 16px; background: #F3F8EC; border-left: 4px solid var(--verde-claro); border-radius: 4px; color: var(--tinta-suave); font-weight: 600; min-height: 1em; }
.previa-nota:empty { display: none; }
.abas-fila { display: flex; gap: 8px; flex-wrap: wrap; margin: 4px 0 18px; }
.abas-fila .aba { display: inline-flex; align-items: center; gap: 8px; padding: 8px 16px; border: 1px solid var(--linha-forte); border-radius: 999px; background: var(--superficie); color: var(--tinta-suave); text-decoration: none; font-weight: 600; font-size: .92rem; }
.abas-fila .aba .contador { min-width: 22px; padding: 1px 7px; border-radius: 999px; background: var(--papel); text-align: center; font-size: .8rem; }
.abas-fila .aba.ativa { background: var(--marinho); border-color: var(--marinho); color: #fff; }
.abas-fila .aba.ativa .contador { background: var(--destaque); color: var(--marinho); }
.abas-fila .aba-atrasado .contador { background: var(--despesa-fundo); color: var(--despesa); }
.abas-fila .aba-atrasado.ativa { background: var(--despesa); border-color: var(--despesa); }
.abas-fila .aba-atrasado.ativa .contador { background: #fff; color: var(--despesa); }
.atraso { color: var(--despesa) !important; font-weight: 600; }
.aviso-reajuste { border-color: #D9480F; background: #FFF0E6; }
.aviso-reajuste a { color: #A33A0C; font-weight: 600; }
.etiqueta.etq-reajuste, a.etq-reajuste { background: #FFE1CF; color: #A33A0C; text-decoration: none; }
.linha-reajuste td { box-shadow: inset 0 0 0 9999px rgba(255, 140, 60, .07); }
.linha-reajuste td:first-child { box-shadow: inset 3px 0 0 #D9480F, inset 0 0 0 9999px rgba(255, 140, 60, .07); }
.linha-reajuste-proximo td:first-child { box-shadow: inset 3px 0 0 #E6B800; }
.form-reajuste { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.form-reajuste .pct { width: 80px; }
.form-reajuste .novo-valor { font-weight: 600; color: var(--receita); font-variant-numeric: tabular-nums; min-width: 110px; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.tabela-fluxo .cel-link { color: inherit; text-decoration: none; border-bottom: 1px dotted transparent; }
.tabela-fluxo .cel-link:hover, .tabela-fluxo .cel-link:focus-visible { color: var(--verde); border-bottom-color: currentColor; }
.tabela-fluxo .cel-link.negativo { color: var(--despesa); }
@media print { .menu-contexto { display: none !important; } .tabela-fluxo .cel-link { border: 0; } }

/* ---------------- Etapa 10: anexos e leitura de documentos ---------------- */
.grade-entrada { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; align-items: start; }
.cartao-entrada { display: flex; flex-direction: column; gap: 8px; background: var(--superficie); border: 1px solid var(--linha);
  border-radius: var(--raio); padding: 18px; color: var(--tinta); text-decoration: none; }
a.cartao-entrada:hover { border-color: var(--marinho); box-shadow: inset 3px 0 0 var(--destaque); }
.cartao-entrada.com-erro { border-color: var(--despesa); }
.cartao-entrada strong { font-size: 1rem; color: var(--marinho); }
.cartao-entrada small { color: var(--tinta-suave); font-size: .84rem; }
.cartao-entrada .btn { align-self: flex-start; margin-top: 4px; }
.cartao-entrada .rotulo { font-size: .86rem; font-weight: 600; margin-top: 4px; }
.cartao-entrada input[name="linha"] { font-variant-numeric: tabular-nums; }
.icone-entrada { width: 36px; height: 36px; border-radius: 50%; background: var(--marinho); color: var(--destaque);
  display: inline-flex; align-items: center; justify-content: center; font-weight: 700; }
.opcoes-coluna { flex-direction: column; align-items: flex-start; gap: 6px; }
.opcoes-coluna small { display: block; margin-left: 22px; }
.arquivo-recebido { margin: 0; padding: 6px 10px; background: var(--papel); border-radius: var(--raio); font-size: .88rem; }
.caixa-doc { background: var(--superficie); border: 1px solid var(--linha); border-left: 4px solid var(--destaque);
  border-radius: var(--raio); padding: 12px 16px; margin-bottom: 18px; }
.caixa-doc-tit { margin: 0 0 4px; }
.caixa-doc .ajuda { margin: 8px 0 0; }
.avisos-doc li { color: #8A5A00; }
.tabela-parcelas-doc input { max-width: 170px; }
.bloco-anexos { margin-top: 28px; }
.bloco-anexos .contagem { font-size: .9rem; background: var(--papel); border-radius: 10px; padding: 1px 8px; color: var(--tinta-suave); }
.lista-anexos { list-style: none; margin: 0 0 12px; padding: 0; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); }
.lista-anexos li { display: flex; align-items: center; gap: 12px; padding: 9px 12px; border-top: 1px solid var(--linha); }
.lista-anexos li:first-child { border-top: 0; }
.nome-anexo { flex: 1; min-width: 0; }
.nome-anexo a { word-break: break-all; font-weight: 500; }
.nome-anexo small { display: block; color: var(--tinta-suave); font-size: .8rem; }
.tipo-arq { font-size: .68rem; font-weight: 700; letter-spacing: .03em; border-radius: 4px; padding: 3px 6px; min-width: 40px;
  text-align: center; background: #E9ECEF; color: var(--tinta); }
.tipo-pdf { background: #FBE7E5; color: #9B1C14; }
.tipo-xml { background: #E8F3E1; color: #2F6B27; }
.tipo-xls, .tipo-xlsx { background: #E3F1E8; color: #1D6B3A; }
.tipo-doc, .tipo-docx { background: #E5EDFA; color: #234E9A; }
.tipo-jpg, .tipo-jpeg, .tipo-png { background: #F1E8F7; color: #6A2C91; }
.form-anexo { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.form-anexo .ajuda { flex-basis: 100%; margin: 0; }
.clipe { margin-left: 6px; font-size: .82rem; color: var(--tinta-suave); white-space: nowrap; }
.docs-saida { margin-left: 8px; white-space: nowrap; }
.docs-saida a { font-size: .72rem; font-weight: 600; border: 1px solid var(--linha-forte); border-radius: 4px; padding: 1px 5px; margin-right: 3px; text-decoration: none; }
.linha-digitavel code { font-size: .9rem; }
@media print { .bloco-anexos .form-anexo, .lista-anexos form { display: none; } }

/* ---------------- Etapa 11: relatórios por módulo ---------------- */
.grade-relatorios { margin-bottom: 8px; }
.filtros-mod { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 14px; }
.filtro-campo { display: flex; flex-direction: column; gap: 3px; }
.filtro-campo label { font-size: .78rem; font-weight: 600; color: var(--tinta-suave); }
.filtro-campo select, .filtro-campo input { min-width: 130px; }
.filtro-campo input[type="number"] { width: 90px; min-width: 0; }
.resumo-rel { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; margin: 4px 0 18px; }
.resumo-rel div { background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 10px 14px; }
.resumo-rel span { display: block; font-size: .8rem; color: var(--tinta-suave); }
.resumo-rel strong { font-size: 1.12rem; color: var(--marinho); font-variant-numeric: tabular-nums; }
.resumo-rel small { margin-left: 6px; color: var(--tinta-suave); }
.tabela-rel td, .tabela-rel th { white-space: nowrap; }
.tabela-rel tr.linha-clicavel { cursor: pointer; }
.tabela-rel tr.linha-clicavel:hover td { background: #F2F6EE; }
.tabela-rel tfoot td { font-weight: 700; }
.tabela-rel .zero { color: var(--linha-forte); }
.tabela-rel tr.abc-a td:first-child { color: var(--receita); font-weight: 700; }
.tabela-rel tr.abc-b td:first-child { color: #8A5A00; font-weight: 700; }
.tabela-rel tr.abc-c td:first-child { color: var(--tinta-suave); font-weight: 700; }
.nota-rel { margin: 8px 0 0; }
@media print {
  .tabela-rel { font-size: 9pt; }
  .tabela-rel td, .tabela-rel th { white-space: normal; padding: 3px 5px; }
  .resumo-rel { grid-template-columns: repeat(4, 1fr); }
}
.tabela-rel tr.linha-limite td { background: var(--papel); color: var(--tinta-suave); font-size: .85rem; white-space: normal; }
.ajuda-campos { background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 8px 14px; margin-bottom: 14px; font-size: .9rem; }
.ajuda-campos summary { cursor: pointer; font-weight: 600; color: var(--marinho); }
.ajuda-campos p { margin: 8px 0 0; color: var(--tinta-suave); }
.aviso-info { border-color: #2B4C7E; background: #EEF3FA; }

/* ---------------- Listas com busca e cadastro rápido ---------------- */
.busca-select { position: relative; width: 100%; }
.busca-select .busca-nativo { position: absolute; inset: 0; opacity: 0; pointer-events: none; height: 100%; width: 100%; }
.busca-entrada { width: 100%; padding-right: 26px; background-image: linear-gradient(45deg, transparent 50%, var(--tinta-suave) 50%),
  linear-gradient(135deg, var(--tinta-suave) 50%, transparent 50%); background-position: calc(100% - 14px) 52%, calc(100% - 9px) 52%;
  background-size: 5px 5px; background-repeat: no-repeat; }
.busca-lista { position: absolute; z-index: 60; left: 0; right: 0; top: calc(100% + 2px); max-height: 280px; overflow-y: auto; margin: 0; padding: 4px 0;
  list-style: none; background: var(--superficie); border: 1px solid var(--linha-forte); border-radius: var(--raio); box-shadow: 0 6px 18px rgba(0,0,0,.12); min-width: 220px; }
.busca-lista li { padding: 6px 10px; cursor: pointer; font-size: .92rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.busca-lista li.foco { background: #EEF3FA; }
.busca-lista li.atual { font-weight: 600; }
.busca-lista li.busca-vazio { color: var(--tinta-suave); font-style: italic; }
.busca-lista li.busca-grupo { cursor: default; font-size: .74rem; font-weight: 700; color: var(--tinta-suave); text-transform: uppercase; letter-spacing: .04em; padding-top: 8px; }
.busca-lista li.busca-nada { cursor: default; color: var(--tinta-suave); }
.nova-pessoa { font-size: .82rem; margin-top: 3px; display: inline-block; }
.dialogo-pessoa { border: 0; border-radius: var(--raio); padding: 20px 22px; width: min(460px, 92vw); box-shadow: 0 12px 40px rgba(0,0,0,.25); }
.dialogo-pessoa::backdrop { background: rgba(12, 22, 38, .45); }
.dialogo-pessoa .campo { margin-bottom: 12px; }
.dialogo-pessoa .opcoes-tipo { margin-bottom: 12px; flex-wrap: wrap; }
.btn-perigo { background: var(--despesa); color: #fff; border: 1px solid var(--despesa); }
.btn-perigo:hover { filter: brightness(.92); }
.zona-acoes-cadastro { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--linha); }
.zona-acoes-cadastro .ajuda { flex-basis: 100%; margin: 0; }
@media print { .nova-pessoa, .busca-lista { display: none !important; } }

/* ---------------- Menu: módulos em destaque, itens recuados ---------------- */
.menu-sec { border-top: 1px solid rgba(255,255,255,.07); }
.menu-grupo { font-size: .8rem; letter-spacing: .07em; color: #F2F5F8; font-weight: 700; padding: 13px 20px 11px 19px;
  background: rgba(255,255,255,.025); }
.menu-grupo:hover { color: #fff; background: rgba(255,255,255,.06); }
.menu-sec.tem-ativo > .menu-grupo { color: var(--verde-claro); }
.menu-grupo[aria-expanded="true"] { background: rgba(255,255,255,.045); }
.menu-itens { padding: 4px 0 8px; }
.menu-itens a { padding: 7px 18px 7px 34px; font-size: .9rem; color: #AFBDCB; position: relative; }
.menu-itens a::before { content: ""; position: absolute; left: 22px; top: 50%; width: 4px; height: 4px; margin-top: -2px;
  border-radius: 50%; background: #5E7186; }
.menu-itens a:hover { color: #fff; }
.menu-itens a:hover::before { background: #9FB0C2; }
.menu-itens a.ativo { color: #fff; }
.menu-itens a.ativo::before { background: var(--destaque); }
.seletor-empresa .busca-entrada { background-color: transparent; color: #fff; border: 1px solid var(--marinho-linha); border-radius: 4px;
  padding: 6px 26px 6px 8px; font-weight: 600; }
.seletor-empresa .busca-lista li { color: var(--tinta); }

/* =============== Etapa 13: Obras =============== */
.orc-rascunho { background: #E8EEF6; color: #2B4C7E; }
.orc-aprovado { background: var(--receita-fundo); color: var(--receita); }
.orc-perdido { background: #ECEFF2; color: var(--tinta-suave); }
.titulo-pagina .etiqueta { vertical-align: middle; margin-left: 6px; }
.resumo-orc strong { font-size: 1.25rem; }
.grade-orc { display: grid; grid-template-columns: 3fr 2fr; gap: 20px; align-items: start; margin-bottom: 8px; }
.tabela-compacta { width: 100%; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); }
.tabela-compacta td { padding: 6px 12px; }
.tabela .sub-linha td { color: var(--tinta-suave); font-size: .86rem; padding-top: 2px; padding-bottom: 2px; }
.tabela .sub-linha td:first-child { padding-left: 26px; }
.tabela .linha-total td { font-weight: 700; border-top: 2px solid var(--marinho); color: var(--marinho); }
.tabela-orc .linha-grupo td, .tabela-medicao .linha-grupo td { background: #EEF1F4; font-weight: 600; color: var(--marinho); }
.tag-tipo { display: inline-block; font-size: .74rem; font-weight: 600; padding: 0 7px; border-radius: 3px; white-space: nowrap; }
.tipo-material { background: #E8EEF6; color: #2B4C7E; }
.tipo-mao_obra { background: #FFF0E6; color: #A33A0C; }
.tipo-equipamento { background: #F3E9F7; color: #6B3A80; }
.tipo-terceiro { background: var(--receita-fundo); color: var(--receita); }
.texto-livre { white-space: pre-line; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 12px 16px; max-width: 900px; }
.acoes-orc { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 8px; }
.historico { list-style: none; padding: 0; margin: 0; max-width: 900px; }
.historico li { padding: 7px 0; border-bottom: 1px solid var(--linha); }
.historico .secundario { display: block; }
.etq-antigo { background: #FFF4C2; color: #6E5800; }
.rotulo-grupo { display: block; font-size: .86rem; font-weight: 600; margin-bottom: 4px; }
.opcoes-linha { display: flex; flex-wrap: wrap; gap: 6px 20px; margin-bottom: 10px; }
.lista-erros { margin: 6px 0 0; padding-left: 18px; }
.logo-previa { max-height: 70px; max-width: 240px; border: 1px solid var(--linha); border-radius: 6px; padding: 6px; background: #fff; }
/* editor */
.editor-orc .grupo-orc { border: 1px solid var(--linha); border-left: 4px solid var(--verde-marca); border-radius: var(--raio); padding: 10px 12px 12px; margin-bottom: 14px; background: var(--superficie); }
.grupo-cab { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.grupo-num { font-weight: 700; color: var(--marinho); min-width: 22px; }
.grupo-nome { flex: 1 1 260px; font: inherit; font-weight: 600; font-size: 1rem; padding: 6px 10px; border: 1px solid var(--linha-forte); border-radius: 6px; color: var(--marinho); }
.grupo-nome.com-erro-campo { border-color: var(--despesa); }
.grupo-sub { color: var(--tinta-suave); font-size: .86rem; font-variant-numeric: tabular-nums; }
.grupo-sub strong { color: var(--marinho); }
.grupo-acoes { display: inline-flex; gap: 2px; }
.btn-icone { background: none; border: 1px solid transparent; border-radius: 4px; width: 26px; height: 26px; cursor: pointer; color: var(--tinta-suave); font-size: .9rem; line-height: 1; }
.btn-icone:hover { border-color: var(--linha-forte); color: var(--marinho); }
.btn-icone.remover:hover { color: var(--despesa); border-color: var(--despesa); }
.tabela-editor td { padding: 4px 5px; }
.tabela-editor input, .tabela-editor select { font: inherit; font-size: .88rem; padding: 5px 6px; border: 1px solid var(--linha-forte); border-radius: 5px; background: #fff; }
.tabela-editor input.cod { width: 78px; }
.tabela-editor input[readonly] { background: var(--papel); color: var(--tinta-suave); }
.tabela-editor td.desc { min-width: 280px; }
.tabela-editor td.desc input { width: 100%; }
.tabela-editor td.desc .secundario { font-size: .74rem; }
.tabela-editor input.un { width: 52px; }
.tabela-editor input.num { width: 96px; text-align: right; }
.tabela-editor td.mover { white-space: nowrap; width: 1%; }
.tabela-editor td[data-ct], .tabela-editor td[data-pu], .tabela-editor td[data-pt] { font-size: .86rem; min-width: 84px; }
.tabela-editor td[data-pt] { font-weight: 600; color: var(--marinho); }
.tabela-editor tr.linha-erro td { background: var(--despesa-fundo); }
.check-base { font-size: .78rem; color: var(--tinta-suave); white-space: nowrap; cursor: pointer; }
.cen { text-align: center; }
.grade-bdi { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; }
.barra-orc { z-index: 5; }
.resumo-barra { display: flex; flex-wrap: wrap; gap: 6px 22px; font-size: .9rem; }
.resumo-barra strong.negativo { color: #FF8A80; }
/* medição por item */
.tabela-medicao input.num { width: 96px; text-align: right; }
.tabela-medicao input.pct { width: 70px; }
.tabela-medicao tr.passa td { background: var(--despesa-fundo); }
.tabela-medicao tr.item-completo td { color: var(--tinta-suave); }
.tabela-medicao .msg-erro { display: block; }
@media (max-width: 900px) { .grade-orc, .grade-bdi { grid-template-columns: 1fr; } }
.editor-orc fieldset, .editor-orc .grupo-orc { min-width: 0; }
.tabela-editor select { width: auto; min-width: 0; max-width: 130px; }
.grupo-orc:not(:has([data-item])) .tabela-rolagem { display: none; }
.grupo-orc:not(:has([data-item])) .grupo-cab { margin-bottom: 4px; }
.conteudo:has(.editor-orc), .conteudo:has(.tabela-medicao), .conteudo:has(.tabela-orc) { max-width: 1480px; }
.tabela-editor td.desc { min-width: 220px; }
.tabela-editor input.num { width: 86px; }
.tabela-editor th { padding: 8px 5px; white-space: nowrap; }
.tabela-editor input.cod { width: 64px; }
.tabela-editor input.un { width: 46px; }
.tabela-editor select { max-width: 112px; }
.tabela-editor input.num { width: 78px; }
.tabela-editor td.desc { min-width: 200px; width: 30%; }
.tabela-editor .btn-icone { width: 20px; }
.tipo-fd { background: #FFF4C2; color: #6E5800; }
.tabela-editor tr.item-fd td { background: #FFFBEA; }
.tabela-editor td.cen .check-base { display: block; }
/* =============== Etapa 14: Compras e acompanhamento =============== */
.kanban { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 12px; align-items: flex-start; }
.kb-coluna { flex: 0 0 250px; background: #E9EDF1; border-radius: var(--raio); padding: 8px; min-height: 140px; border-top: 4px solid var(--linha-forte); }
.kb-coluna.sobre { background: #DCE8D6; }
.kb-coluna header { display: flex; align-items: center; gap: 6px; padding: 2px 4px 8px; color: var(--marinho); }
.kb-coluna header strong { flex: 1; font-size: .9rem; }
.kb-cont { background: #fff; border-radius: 10px; padding: 0 8px; font-size: .78rem; font-weight: 600; }
.kb-prazo { font-size: .72rem; color: var(--tinta-suave); }
.kb-aprovada { border-top-color: #2B4C7E; } .kb-cotacao { border-top-color: #B8860B; } .kb-pedido { border-top-color: #6B3A80; }
.kb-entregue { border-top-color: var(--receita); } .kb-cancelada { border-top-color: var(--previsto); }
.kb-cartoes { display: flex; flex-direction: column; gap: 8px; min-height: 60px; }
.kb-cartao { background: #fff; border: 1px solid var(--linha); border-left: 4px solid var(--linha-forte); border-radius: 6px; padding: 8px 10px; cursor: grab; font-size: .84rem; display: flex; flex-direction: column; gap: 2px; box-shadow: 0 1px 2px rgba(10,22,33,.06); }
.kb-cartao.arrastando { opacity: .5; }
.kb-cartao.atencao { border-left-color: #E6B800; } .kb-cartao.atrasado { border-left-color: var(--despesa); }
.kb-cartao.kb-aprovar { background: #FFFBEA; }
.kb-titulo { font-weight: 600; color: var(--marinho); text-decoration: none; }
.kb-obra { color: var(--tinta-suave); font-size: .78rem; }
.kb-linha { font-variant-numeric: tabular-nums; }
.kb-alerta { color: #8A6D00; font-weight: 600; font-size: .76rem; }
.kb-rodape { color: var(--tinta-suave); font-size: .76rem; }
.kb-rodape strong { color: var(--despesa); }
.kbm-solicitada { background: #ECEFF2; } .kbm-aprovada { background: #E8EEF6; color: #2B4C7E; } .kbm-cotacao { background: #FFF4C2; color: #6E5800; }
.kbm-pedido { background: #F3E9F7; color: #6B3A80; } .kbm-entregue { background: var(--receita-fundo); color: var(--receita); } .kbm-cancelada { background: #ECEFF2; color: var(--tinta-suave); }
.ped-aguardando { background: #FFF4C2; color: #6E5800; } .ped-emitido { background: #E8EEF6; color: #2B4C7E; } .ped-parcial { background: #F3E9F7; color: #6B3A80; }
.ped-recebido { background: var(--receita-fundo); color: var(--receita); } .ped-cancelado { background: #ECEFF2; color: var(--tinta-suave); }
.texto-alerta { color: var(--despesa); font-weight: 600; } .texto-antigo { color: #8A6D00; }
.tabela-cot td { vertical-align: top; } .tabela-cot input.num { width: 100px; } .tabela-cot tfoot input { display: block; width: 120px; margin-bottom: 4px; font: inherit; font-size: .84rem; padding: 4px 6px; border: 1px solid var(--linha-forte); border-radius: 5px; }
.tabela-cot .cot-forn { min-width: 150px; } .cot-cel.menor input { border-color: var(--receita); background: var(--receita-fundo); } .cot-cel.vencedor { background: #F2F8EE; }
.tabela-acomp tr.estouro td { background: var(--despesa-fundo); } .etq-estouro { background: var(--despesa-fundo); color: var(--despesa); }
.abc-A { background: var(--despesa-fundo); color: var(--despesa); } .abc-B { background: #FFF4C2; color: #6E5800; } .abc-C { background: #ECEFF2; }
.abas-modo.abas a { text-decoration: none; }
.conteudo:has(.kanban), .conteudo:has(.tabela-acomp), .conteudo:has(.tabela-cot) { max-width: none; }
.tabela-acomp td:first-child { min-width: 230px; }

/* ===================== Etapa 15: obras fase 3 ===================== */
.etq-aberta { background: #E3F0FA; color: #1D5E8C; }
.rev-aprovada, .ap-validado, .med-nota { background: var(--receita-fundo); color: var(--receita); }
.rev-cancelada, .ap-recusado { background: var(--despesa-fundo); color: var(--despesa); }
.ap-pendente { background: #FFF4D6; color: #8A5A00; }
.tabela-itens tr.alterado td { background: #FFFBEA; }
.tabela-cron input.pct { width: 64px; }
.tabela-cron td .secundario { display: block; font-size: .72rem; }
.tabela-cron td.saida, .tabela-cron [data-soma].saida { color: var(--despesa); font-weight: 600; }
.graficos-curva { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 16px; margin: 12px 0 20px; }
.curva-s { margin: 0; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 10px 12px; }
.curva-s figcaption { font-weight: 600; margin-bottom: 4px; }
.curva-s svg { width: 100%; height: auto; }
.curva-s .g-linha { stroke: var(--linha); stroke-width: 1; }
.curva-s .g-rot { font-size: 10px; fill: var(--tinta-suave); font-family: var(--sans); }
.curva-s polyline { stroke-width: 2.2; }
.s-base { stroke: var(--previsto); stroke-dasharray: 5 4; } .s-vig { stroke: var(--marinho); } .s-med { stroke: var(--verde-marca); } .s-apo { stroke: #E0A100; }
.legenda-curva { display: flex; flex-wrap: wrap; gap: 12px; font-size: .8rem; color: var(--tinta-suave); }
.legenda-curva span::before { content: ""; display: inline-block; width: 16px; height: 3px; margin-right: 5px; vertical-align: middle; }
.s-base-leg::before { background: var(--previsto); } .s-vig-leg::before { background: var(--marinho); } .s-med-leg::before { background: var(--verde-marca); } .s-apo-leg::before { background: #E0A100; }
.lista-campo { list-style: none; padding: 0; margin: 0 0 16px; display: grid; gap: 8px; }
.lista-campo li { background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 12px 14px; display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.lista-campo a { display: block; text-decoration: none; color: var(--tinta); flex: 1; }
.lista-campo strong { display: block; } .lista-campo span { display: block; color: var(--tinta-suave); font-size: .85rem; }
.form-campo { max-width: 640px; }
.form-campo input, .form-campo select, .form-campo textarea { font-size: 16px; }
.btn-grande { padding: 14px 22px; font-size: 1.05rem; width: 100%; }
@media (max-width: 700px) { .form-campo .grade .campo { grid-column: span 12; } }

/* ===================== Etapa 16 ===================== */
.etq-provisao { background: #EEF0FF; color: #3F4AA8; }
tr.provisao td { color: var(--tinta-suave); }
.abas-obra { display: flex; flex-wrap: wrap; gap: 4px; border-bottom: 1px solid var(--linha); margin: 8px 0 16px; }
.abas-obra a { padding: 8px 14px; text-decoration: none; color: var(--tinta-suave); border-bottom: 3px solid transparent; font-weight: 600; }
.abas-obra a.ativo { color: var(--tinta); border-bottom-color: var(--verde-marca); }
.cron-janela select { width: auto; min-width: 70px; font-size: .8rem; padding: 2px 4px; }
.cron-janela { white-space: nowrap; }
.cron-cliente-cab { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 12px; }
.cron-cliente-cab img { max-height: 56px; }

/* ===================== Etapa 17 ===================== */
.grupo-subnivel { margin-left: 28px; border-left: 3px solid var(--verde-claro); }
.grupo-subnivel .grupo-nome { font-weight: 500; }
tr.linha-subgrupo td { background: #F7F8F9; font-weight: 600; padding-left: 22px; }
.obra-cab { margin-bottom: 14px; }
.obra-cab-topo { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.obra-selos { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.selo { font-size: .8rem; font-weight: 600; padding: 4px 10px; border-radius: 20px; text-decoration: none; }
.selo-fisico { background: var(--receita-fundo); color: var(--receita); } .selo-medido { background: #E3F0FA; color: #1D5E8C; } .selo-pend { background: #FFF4D6; color: #8A5A00; }
.subabas-obra { display: flex; flex-wrap: wrap; gap: 16px; padding: 0 4px; margin: -8px 0 14px; border-bottom: 1px solid var(--linha); background: #FAFBFB; }
.subabas-obra a { padding: 8px 2px; text-decoration: none; color: var(--tinta-suave); font-size: .9rem; border-bottom: 2px solid transparent; }
.subabas-obra a.ativo { color: var(--tinta); border-bottom-color: var(--verde-marca); font-weight: 600; }
.geral-obra { display: grid; grid-template-columns: minmax(0, 2fr) minmax(260px, 1fr); gap: 16px; }
@media (max-width: 900px) { .geral-obra { grid-template-columns: 1fr; } }
.cartao-obra { background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 14px 16px; margin-bottom: 14px; }
.cartao-obra h2 { font-size: 1rem; margin: 0 0 10px; display: flex; justify-content: space-between; align-items: center; }
.cartao-obra ul { list-style: none; padding: 0; margin: 0; } .cartao-obra li { padding: 6px 0; border-bottom: 1px solid var(--linha); font-size: .9rem; }
.cartao-obra li:last-child { border-bottom: 0; }
.dados-obra { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px 16px; font-size: .9rem; }
.dados-obra span { color: var(--tinta-suave); display: block; font-size: .8rem; }
.det-verba summary { cursor: pointer; font-size: .8rem; color: var(--tinta-suave); } .det-verba ul { margin: 4px 0 0; padding-left: 16px; text-align: left; font-size: .8rem; }
.titulo-sec-obra { font-size: 1.15rem; margin: 0 0 4px; }
.faixa-hoje { background: #FFF4D6; border-left-color: #E0A100; color: #8A5A00; }
.marca-linha { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.btn-recolher { background: transparent; border: 0; color: rgba(255,255,255,.7); font-size: 1.2rem; cursor: pointer; padding: 4px 8px; border-radius: 6px; }
.btn-recolher:hover { background: rgba(255,255,255,.1); color: #fff; }
.btn-abrir-menu { display: none; position: fixed; top: 10px; left: 10px; z-index: 30; background: var(--marinho); color: #fff; border: 0; border-radius: 8px; padding: 6px 10px; font-size: 1.1rem; cursor: pointer; box-shadow: 0 2px 6px rgba(0,0,0,.2); }
@media (min-width: 901px) {
  body.menu-recolhido .lateral { display: none; }
  body.menu-recolhido .btn-abrir-menu { display: block; }
  body.menu-recolhido .principal { padding-left: 56px; }
}
@media print { .btn-abrir-menu { display: none !important; } }
tr.linha-projecao th, tr.linha-projecao td { color: #3F4AA8; font-style: italic; }
/* Etapa 18: cronograma por item */
.cron-modo { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center; margin: 12px 0; padding: 10px 12px; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); font-size: .92rem; }
.tabela-cron tr.cron-nivel td { background: #EEF1F4; font-weight: 600; }
.tabela-cron tr.cron-nivel td .secundario { display: inline; font-weight: 400; margin-left: 6px; }
.tabela-cron tr.linha-subgrupo td { font-style: italic; color: var(--tinta-suave); padding-left: 22px; }
.tabela-cron td.cron-item { padding-left: 22px; min-width: 220px; }
.cron-seta { background: none; border: 0; cursor: pointer; font-size: .9rem; padding: 0 4px; color: var(--marinho); }
/* Etapa 18: importação em lote */
.imp-cartoes { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 14px; margin: 14px 0 22px; }
.imp-cartao { background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 14px; display: flex; flex-direction: column; gap: 8px; }
.imp-cartao.destaque { border-color: var(--verde, #2F7D2A); box-shadow: 0 0 0 2px rgba(64,141,53,.15); }
.imp-cartao h3 { margin: 0; font-size: 1rem; }
.imp-cartao p { margin: 0; font-size: .86rem; color: var(--tinta-suave); }
.imp-cartao form { display: flex; flex-direction: column; gap: 8px; margin-top: auto; }
.imp-cartao input[type=file] { font-size: .85rem; max-width: 100%; }
.imp-previa tr.imp-erro td { background: #FDECEC; }
.imp-previa .imp-msg { color: var(--despesa); font-size: .82rem; display: block; }
.imp-acao { font-size: .75rem; text-transform: uppercase; letter-spacing: .4px; padding: 2px 6px; border-radius: 4px; background: #EEF1F4; white-space: nowrap; }
.imp-acao.novo { background: #E3F1DF; color: #2E6A25; }
.imp-acao.atualizar { background: #E6ECF7; color: #2C4A86; }
.imp-acao.erro { background: #FDECEC; color: #A3261E; }
/* Etapa 19: conciliação pelo OFX */
.tabela-ofx tr.ofx-sem td { background: var(--despesa-fundo); }
.ofx-sem-txt { color: var(--despesa); font-weight: 600; }
.ofx-sug select { max-width: 520px; width: 100%; font: inherit; font-size: .85rem; }
.ofx-sug .ofx-dif { margin-top: 4px; }
.ofx-bloco { margin: 16px 0; border: 1px solid var(--linha); border-radius: var(--raio); padding: 10px 14px; background: var(--superficie); }
.ofx-bloco > summary { font-weight: 600; cursor: pointer; }

/* ===== Etapa 20: CRM ===== */
.crm-nav { margin-bottom: 14px; border-bottom: 1px solid var(--linha); }
.crm-nav a.ativo { color: var(--marinho); font-weight: 600; border-bottom: 3px solid var(--verde, #2F7D2A); }
.crm-badge { display: inline-block; min-width: 18px; padding: 0 6px; border-radius: 10px; background: #C0392B; color: #fff; font-size: .72rem; font-weight: 700; text-align: center; line-height: 18px; margin-left: 4px; }
.crm-col-total { margin: -4px 4px 8px; font-size: .78rem; color: var(--tinta-suave); font-variant-numeric: tabular-nums; }
.crm-cartao.crm-borda-quente { border-left-color: #D1495B; } .crm-cartao.crm-borda-morna { border-left-color: #E6A100; } .crm-cartao.crm-borda-fria { border-left-color: #3D7DB8; }
.crm-cartao.atencao { background: #FFFBEA; } .crm-cartao.atrasado { background: #FDEDED; }
.crm-col-ganho { border-top-color: var(--receita); } .crm-col-perdido { border-top-color: var(--previsto, #B1B3B7); }
.crm-fechada { cursor: default; opacity: .85; }
.crm-atrasada { color: var(--despesa); font-weight: 600; }
.crm-temp { display: inline-block; font-size: .7rem; font-weight: 700; padding: 0 6px; border-radius: 8px; vertical-align: middle; }
.crm-temp-quente { background: #FBE3E6; color: #A3283A; } .crm-temp-morna { background: #FFF1CC; color: #7A5600; } .crm-temp-fria { background: #E1EDF8; color: #24598A; }
.crm-temps { display: flex; gap: 6px; flex-wrap: wrap; }
.crm-temp-op { display: inline-flex; align-items: center; gap: 4px; padding: 5px 10px; border-radius: 16px; border: 1px solid var(--linha-forte); font: inherit; font-size: .85rem; cursor: pointer; background: #fff; }
.crm-temp-op.ativo, .crm-temp-op:has(input:checked) { font-weight: 700; border-width: 2px; }
.crm-temp-op.crm-temp-quente.ativo, .crm-temp-op.crm-temp-quente:has(input:checked) { border-color: #D1495B; }
.crm-temp-op.crm-temp-morna.ativo, .crm-temp-op.crm-temp-morna:has(input:checked) { border-color: #E6A100; }
.crm-temp-op.crm-temp-fria.ativo, .crm-temp-op.crm-temp-fria:has(input:checked) { border-color: #3D7DB8; }
.crm-sit-ganha { background: var(--receita-fundo); color: var(--receita); } .crm-sit-perdida { background: #E3E7EB; color: var(--tinta-suave); }
.etq-prospecto { background: #EDE7F6; color: #5B3A8E; }
.crm-fechar { display: flex; flex-direction: column; gap: 10px; }
.crm-fechar summary { list-style: none; display: inline-block; cursor: pointer; }
.crm-fechar summary::-webkit-details-marker { display: none; }
.crm-fechar details[open] > summary { margin-bottom: 8px; }
.crm-ativ { list-style: none; padding: 0; margin: 0 0 10px; display: flex; flex-direction: column; gap: 8px; }
.crm-ativ li { padding: 6px 8px; border: 1px solid var(--linha); border-radius: 6px; }
.crm-ativ small { color: var(--tinta-suave); margin-left: 6px; }
.crm-ativ-tipo { font-size: .72rem; font-weight: 700; text-transform: uppercase; color: var(--tinta-suave); }
.crm-ativ-acoes { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 6px; }
.crm-ativ-acoes input { width: auto; max-width: 180px; padding: 3px 6px; font-size: .82rem; }
.crm-feitas li { opacity: .8; }
.crm-hist { list-style: none; padding: 0; margin: 0; font-size: .84rem; max-height: 360px; overflow-y: auto; }
.crm-hist li { padding: 4px 0; border-bottom: 1px dashed var(--linha); }
.crm-hist small { color: var(--tinta-suave); display: block; }
.crm-matriz th.crm-temp-linha { text-align: left; }
.crm-matriz td small { color: var(--tinta-suave); }
.crm-matriz a { text-decoration: none; }
.crm-sinal { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: .78rem; font-weight: 700; }
.crm-sinal-verde { background: var(--receita-fundo); color: var(--receita); } .crm-sinal-amarelo { background: #FFF4C2; color: #6E5800; } .crm-sinal-vermelho { background: var(--despesa-fundo); color: var(--despesa); }
.crm-painel-grupos { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.crm-painel-col h3 { font-size: .9rem; margin: 0 0 6px; }
.crm-painel-col.alerta h3 { color: var(--despesa); }
.crm-painel-col ul { list-style: none; padding: 0; margin: 0; font-size: .86rem; }
.crm-painel-col li { padding: 4px 0; border-bottom: 1px solid var(--linha); }
.crm-painel-col li small { display: block; color: var(--tinta-suave); }
.menu .crm-badge { background: #D1495B; }

/* ===== Etapa 21: grade de acesso ===== */
.acesso-grade .acesso-menus { display: grid; grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); gap: 12px; }
.acesso-menu { border: 1px solid var(--linha); border-radius: 8px; padding: 8px 12px 6px; margin: 0 0 12px; }
.acesso-menu legend { font-weight: 700; padding: 0 6px; }
.acesso-tabela th.centro, .acesso-tabela td.centro { text-align: center; width: 64px; }
.acesso-tabela td:first-child { font-size: .9rem; }
.acesso-tabela input[disabled] { opacity: .3; }
.acesso-atalhos { margin: 4px 0 0; font-size: .82rem; }
.hist-acesso { list-style: none; padding: 0; margin: 0; font-size: .86rem; }
.hist-acesso li { padding: 6px 0; border-bottom: 1px solid var(--linha); }
.hist-acesso small { display: block; color: var(--tinta-suave); }
