/* =====================================================================
   CRM VDC — folha única
   Sem framework: o projeto inteiro é dependency-free por escolha, e um
   passo de build tornaria "abrir o sistema" mais difícil, não mais fácil.

   DENSIDADE (revisão global de 04/09/2026): o CRM é sistema de gestão,
   não página de apresentação. Os espaçamentos vivem em poucos tokens
   (abaixo) e todo componente usa esses tokens — compactar aqui compacta
   o sistema inteiro. Regra: encolher ESPAÇO (padding, margem, altura
   mínima, vazio), não a fonte nem a área clicável.
   ===================================================================== */
:root{
  /* O padrão que vale antes de qualquer refinamento — na mesma família de
     superfícies do design aprovado, para não haver um "primeiro quadro" com
     outra paleta enquanto a folha carrega. */
  --fundo:#ffffff; --fundo2:#f2f4f2; --fundo3:#f7f8f7;
  --linha:#ccd4cf; --linha2:#ccd4cf;
  --tinta:#14201a; --tinta2:#5e6b64; --tinta3:#5e6b64;
  --azul:#2563c9; --azul-f:#e8f0fd; --azul-e:#1b4a99;
  --verde:#17794a; --verde-f:#e4f4ec;
  --ambar:#a86400; --ambar-f:#fdf2df;
  --vermelho:#b3261e; --vermelho-f:#fdeceb;
  --roxo:#6741a8; --roxo-f:#f0ebfa;
  --sombra:0 1px 2px rgba(20,32,26,.05);

  /* tokens de densidade */
  --esp-1:4px; --esp-2:6px; --esp-3:8px; --esp-4:12px; --esp-5:16px;
  --pad-pagina:10px 20px 70px;      /* página: menos ar em cima, espaço embaixo para a barra fixa */
  --pad-cartao:10px 14px;           /* cartão */
  --gap-secao:10px;                 /* entre cartões/seções */
  --pad-celula:5px 8px;             /* célula de tabela (~32px por linha) */
  --altura-input:30px;
  --raio:8px; --raio-g:10px;
  --fonte:13.5px; --fonte-p:12px; --fonte-pp:11px;
  --largura-max:1440px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font:var(--fonte)/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,sans-serif;
  color:var(--tinta); background:var(--fundo2);
  -webkit-font-smoothing:antialiased;
}
a{color:var(--azul-t);text-decoration:none}
a:hover{text-decoration:underline}
button{font:inherit}

/* ---------------- cabeçalho ---------------- */
header.topo{
  background:var(--fundo); border-bottom:1px solid var(--linha);
  position:sticky; top:0; z-index:40;
}
.topo .linha{max-width:var(--largura-max);margin:0 auto;padding:0 20px;display:flex;align-items:center;gap:16px;height:46px}
.marca{font-weight:760;font-size:14.5px;letter-spacing:-.01em;white-space:nowrap;display:flex;align-items:center;gap:7px;text-decoration:none;min-width:0}
.marca:hover{text-decoration:none}
.marca img{height:26px;max-width:150px;object-fit:contain;display:block}
.marca img.placa{background:#fff;border-radius:6px;padding:2px 6px}
.marca span{color:var(--tinta3);font-weight:500}
.marca #marcaNome{color:var(--azul-t);font-weight:760;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.btn-tema{min-width:28px;padding:2px 7px;font-size:13px;line-height:1}
.modulos{display:flex;gap:3px}
.modulos a{
  padding:5px 12px;border-radius:7px;font-size:13px;font-weight:640;
  color:var(--tinta2);text-decoration:none
}
.modulos a:hover{background:var(--fundo3);text-decoration:none}
.modulos a.on{background:var(--azul);color:var(--marca-sobre-primaria)}
.topo .fim{margin-left:auto;display:flex;align-items:center;gap:10px;min-width:0}
/* Nome comprido encurta com reticências em vez de empurrar o cabeçalho
   para uma segunda linha. O nome inteiro fica no title, ao passar o mouse. */
.quem{
  font-size:12px;color:var(--tinta2);text-align:right;line-height:1.3;
  min-width:0;max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.quem b{
  display:block;color:var(--tinta);font-size:12.5px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}

/* Submenu do módulo: linha própria, logo abaixo dos módulos. */
.submenu{
  max-width:var(--largura-max);margin:0 auto;padding:0 20px;display:flex;gap:2px;
  overflow-x:auto;scrollbar-width:none
}
.submenu::-webkit-scrollbar{display:none}
.submenu:empty{display:none}
.submenu a{
  padding:6px 10px;font-size:12px;font-weight:620;color:var(--tinta2);
  text-decoration:none;border-bottom:2px solid transparent;white-space:nowrap
}
.submenu a:hover{color:var(--tinta);text-decoration:none}
.submenu a.on{color:var(--azul-t);border-bottom-color:var(--azul)}
.selo-homolog{
  background:var(--ambar-f);color:var(--ambar);border:1px solid var(--ambar-b);
  font-size:10px;font-weight:760;letter-spacing:.05em;padding:3px 8px;border-radius:6px;
  white-space:nowrap
}
.trilha{max-width:var(--largura-max);margin:0 auto;padding:5px 20px 0;font-size:12px;color:var(--tinta3);min-height:0}
.trilha:empty{display:none}
.trilha a{color:var(--tinta2)}
.trilha i{font-style:normal;margin:0 6px;color:var(--linha2)}

main{max-width:var(--largura-max);margin:0 auto;padding:var(--pad-pagina)}

/* ---------------- títulos ---------------- */
/* Cabeçalho de página: código + título + subtítulo curto à esquerda, ações à
   direita, numa faixa baixa. Não é banner. */
.cabpag{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:2px 0 10px;flex-wrap:wrap}
.cabpag .cod{font-size:10.5px;color:var(--tinta3);font-weight:700;letter-spacing:.07em;text-transform:uppercase}
.cabpag h1{font-size:18px;margin:0;letter-spacing:-.015em;font-weight:720;line-height:1.25}
.cabpag h2{font-size:15px;margin:0;font-weight:700}
.cabpag .sub{font-size:12px;color:var(--tinta2);margin-top:1px}
.acoes{display:flex;gap:6px;flex-wrap:wrap;align-items:center}

/* ---------------- cartões ---------------- */
/* Cartão só quando há agrupamento real. Padding moderado, título baixo. */
.cartao{background:var(--fundo);border:1px solid var(--linha);border-radius:var(--raio-g);padding:var(--pad-cartao);margin-bottom:var(--gap-secao);box-shadow:var(--sombra)}
.cartao h2{font-size:13.5px;margin:0 0 8px;font-weight:700;display:flex;align-items:center;gap:8px;flex-wrap:wrap;line-height:1.3}
.cartao h2 .cont{font-size:11.5px;font-weight:500;color:var(--tinta3)}
.cartao h2 .dir{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.cartao > .nota:last-child{margin-bottom:0}
.nota{font-size:11.5px;color:var(--tinta3);line-height:1.45;margin-top:8px}
/* Texto de orientação longo vira "Saiba mais": a tela guarda só o que é
   preciso para operar (VDC.compactarAjuda faz a troca ao renderizar). */
details.ajuda{font-size:11.5px;color:var(--tinta3);margin-top:6px}
details.ajuda summary{cursor:pointer;color:var(--tinta2);font-weight:600;font-size:11.5px;list-style:none;display:inline-flex;align-items:center;gap:5px;padding:2px 0}
details.ajuda summary::-webkit-details-marker{display:none}
details.ajuda summary::before{content:"?";display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;border:1px solid var(--linha2);font-size:10px;font-weight:700;color:var(--tinta3)}
details.ajuda[open] summary{margin-bottom:3px}
details.ajuda .nota,details.ajuda .dica{margin:0;line-height:1.45}

/* ---------------- números ---------------- */
/* Indicadores: tiras baixas, várias por linha. Um número não ocupa meia tela. */
.nums{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1px;background:var(--linha);border:1px solid var(--linha);border-radius:var(--raio);overflow:hidden}
.num{background:var(--fundo);padding:6px 10px;min-width:0}
.num .v{font-size:16px;font-weight:720;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.num .r{font-size:11px;color:var(--tinta3);margin-top:1px;font-weight:560;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.num .d{font-size:10.5px;color:var(--tinta3);margin-top:1px}
/* Indicador que É um caminho: o número leva à lista que o explica. Mesma
   célula, sem enfeite de link — muda só o cursor e um realce ao passar. */
a.num{display:block;text-decoration:none;color:inherit;cursor:pointer;transition:background .12s}
a.num:hover{background:var(--fundo3)}
/* Indicadores do Financeiro: a célula precisa caber o número INTEIRO. Com
   a largura mínima de 120px, no celular "R$ 377.161,20" virava
   "R$ 377.161,…" — e um valor cortado é pior do que valor nenhum, porque
   parece exato. Mais largura, menos colunas, número legível. */
.nums.fin-nums{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.nums.fin-nums .v{white-space:normal;overflow:visible;text-overflow:clip}
/* E O RÓTULO TAMBÉM CABE INTEIRO, pela mesma razão do valor: cortado,
   "Realizado com orça…" e "Realizado total" viram a mesma palavra de
   relance, e o leitor compara dois números que não se comparam. */
.nums.fin-nums .r{white-space:normal;overflow:visible;text-overflow:clip}
.nums + .nums{margin-top:var(--esp-3)}

/* ---------------- linhas de cartões lado a lado ---------------- */
/* O Resumo põe dois ou três cartões por linha no computador. No celular
   isso vira mosaico ilegível — e era o que acontecia, porque a grade
   estava escrita no `style=` de cada linha e estilo em linha não cede a
   media query nenhuma. Aqui é uma classe só, com `auto-fit`: no
   computador cabem dois ou três; abaixo de ~660 px a própria grade
   quebra em uma coluna, sem media query e sem mosaico. */
.linha-cartoes{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;margin-bottom:12px}
.linha-cartoes > .cartao{margin:0}
/* A tabela de performance por corretor/origem/categoria segue a mesma ideia,
   com coluna mais estreita porque o conteúdo é tabela e não indicador. */
.linha-tabelas{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}

/* ---------------- cards de lista ---------------- */
/* Cartões de empreendimento compactos: vários por linha e por tela. */
.grade{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.card{background:var(--fundo);border:1px solid var(--linha);border-radius:var(--raio-g);padding:10px 12px;box-shadow:var(--sombra);cursor:pointer;transition:border-color .12s}
.card:hover{border-color:var(--azul)}
.card .cod{font-size:10px;color:var(--tinta3);font-weight:700;letter-spacing:.06em}
.card h3{font-size:14px;margin:2px 0 6px;font-weight:700;letter-spacing:-.01em;line-height:1.25}
.card .linha{display:flex;gap:10px 14px;font-size:12px;color:var(--tinta2);flex-wrap:wrap}
.card .linha b{color:var(--tinta);font-variant-numeric:tabular-nums}

/* ---------------- tabelas ---------------- */
/* A tabela é a forma padrão do que é comparável: linhas baixas, muitas por tela. */
.rol{overflow-x:auto;margin:0 -14px;padding:0 14px}
/* DINHEIRO NÃO QUEBRA LINHA. Nas tabelas do Financeiro as colunas são
   muitas e estreitas, e "R$" numa linha com "247,46" na de baixo deixa de
   ser número e vira enigma. A tabela fica mais larga e rola dentro do
   `.rol`, que é para isso que ele existe. */
table.fin td,table.fin th{white-space:nowrap}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{text-align:left;font-size:10.5px;color:var(--tinta3);font-weight:700;letter-spacing:.05em;
   text-transform:uppercase;padding:0 8px 4px;border-bottom:1px solid var(--linha);white-space:nowrap}
td{padding:var(--pad-celula);border-bottom:1px solid var(--fundo3);vertical-align:middle;line-height:1.3}
tbody tr:hover{background:var(--fundo2)}
tbody tr.sel{background:var(--azul-f)}
table.num-dir td:nth-child(n+3),table.num-dir th:nth-child(n+3){text-align:right;font-variant-numeric:tabular-nums}
td.acao{text-align:right;white-space:nowrap}
/* A COLUNA DE AÇÃO NUNCA É O QUE CAI PARA FORA.
   Achado do dono, 21/09/2026: na lista de contas esperando aprovação ele
   viu as duas contas e concluiu que não havia como aprovar. O botão
   existia — 314 px à direita, dentro da rolagem da tabela, invisível e
   sem nada que dissesse que estava lá. Numa tela operacional a ação é o
   motivo de a tela existir; quem sai de cena são as colunas do meio.
   Grudada à direita, ela acompanha a rolagem e fica sempre alcançável;
   o fio à esquerda mostra que há conteúdo passando por baixo. */
table.fin td.acao,table.fin th.acao{position:sticky;right:0;z-index:2;
  background:var(--fundo);box-shadow:-8px 0 8px -8px rgba(0,0,0,.28)}
table.fin th.acao{background:var(--fundo);z-index:3}
tbody tr:hover td.acao{background:var(--fundo2)}
tbody tr.sel td.acao{background:var(--azul-f)}
td .btn.s{padding:2px 7px;font-size:11.5px}
/* Estado vazio: uma linha — frase + ação. Não uma seção. */
.vazio{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;padding:8px 10px;color:var(--tinta3);font-size:12.5px;
       background:var(--fundo2);border:1px dashed var(--linha2);border-radius:var(--raio)}
.vazio .i{display:none}
.vazio b{color:var(--tinta2);font-size:12.5px;font-weight:650}
.vazio .t{color:var(--tinta3)}
.vazio .a{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.vazio .a .btn{padding:3px 9px;font-size:12px}

/* ---------------- etiquetas ---------------- */
.et{display:inline-block;padding:1.5px 7px;border-radius:20px;font-size:10.5px;font-weight:660;white-space:nowrap;line-height:1.5}
.et-v{background:var(--verde-f);color:var(--verde)}
.et-a{background:var(--ambar-f);color:var(--ambar)}
.et-r{background:var(--vermelho-f);color:var(--vermelho)}
.et-z{background:var(--azul-f);color:var(--azul-t)}
.et-x{background:var(--roxo-f);color:var(--roxo)}
.et-c{background:var(--fundo3);color:var(--tinta2)}

/* ---------------- botões ---------------- */
/* Menor no padding, não na área mínima: 30px de altura continua confortável. */
.btn{background:var(--fundo);border:1px solid var(--linha2);border-radius:7px;padding:5px 11px;min-height:30px;
     font-size:12.5px;font-weight:620;color:var(--tinta);cursor:pointer;white-space:nowrap;transition:.12s;line-height:1.3}
.btn:hover:not(:disabled){background:var(--fundo2);border-color:var(--tinta3)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn:focus-visible,.chip:focus-visible,a:focus-visible{outline:2px solid var(--marca-foco);outline-offset:1px}
.btn.p{background:var(--azul);border-color:var(--azul);color:var(--marca-sobre-primaria)}
.btn.p:hover:not(:disabled){background:var(--azul-e);border-color:var(--azul-e)}
.btn.v{background:var(--verde);border-color:var(--verde);color:#fff}
.btn.v:hover:not(:disabled){filter:brightness(1.1)}
.btn.d{background:var(--vermelho);border-color:var(--vermelho);color:#fff}
.btn.s{padding:3px 8px;min-height:26px;font-size:11.5px}

/* ---------------- avisos ---------------- */
.aviso{border-radius:var(--raio);padding:7px 10px;font-size:12.5px;margin:8px 0;line-height:1.45;border:1px solid}
.aviso.i{background:var(--azul-f);border-color:var(--azul-b);color:var(--azul-t)}
.aviso.ok{background:var(--verde-f);border-color:var(--verde-b);color:var(--verde-t)}
.aviso.at{background:var(--ambar-f);border-color:var(--ambar-b);color:var(--ambar-t)}
.aviso.er{background:var(--vermelho-f);border-color:var(--vermelho-b);color:var(--vermelho-t)}

/* ---------------- formulário ---------------- */
/* Campos lado a lado quando há largura (.lin); um por linha só no celular. */
.form{display:flex;flex-direction:column;gap:8px}
.form label{display:flex;flex-direction:column;gap:3px;font-size:11.5px;font-weight:640;color:var(--tinta2);flex:1;min-width:0}
.form input,.form select,.form textarea{
  border:1px solid var(--linha2);border-radius:7px;padding:5px 9px;font:inherit;font-size:13px;min-height:var(--altura-input);
  background:var(--fundo);color:var(--tinta);width:100%}
.form textarea{min-height:56px}
/* Controles dentro de células de tabela (ex.: linha de condições da negociação) não
   podem ocupar 100% da célula cada um: ficam na largura do conteúdo. */
.form td input,.form td select{width:auto;max-width:100%}
.form input:focus,.form select:focus,.form textarea:focus{outline:2px solid var(--marca-foco);outline-offset:-1px}
.form .lin{display:flex;gap:10px;flex-wrap:wrap}
.form .lin > label{flex:1 1 180px}
.form .dica{font-size:11.5px;color:var(--tinta3);line-height:1.45}
.erro-campo{color:var(--vermelho);font-size:11px;font-weight:600}
/* "← Voltar" é navegação, não ação: fica à esquerda das ações e não compete
   com elas. */
.acoes .btn.voltar{font-weight:650;border-style:dashed}
/* Data que o teclado aceita e o calendário não (31/02): o campo avisa na
   hora, sem esperar o servidor. */
.form input.data-invalida,input.data-invalida{border-color:var(--vermelho);background:var(--vermelho-f)}
input[type=checkbox]{width:15px;height:15px;margin:0}

/* ---------------- diálogo ---------------- */
/* Tamanho proporcional ao conteúdo: padrão para formulários, .g para tabelas. */
.veu{position:fixed;inset:0;background:rgba(20,32,26,.42);display:flex;align-items:center;
     justify-content:center;z-index:100;padding:16px;backdrop-filter:blur(2px)}
.dlg{background:var(--fundo);border-radius:11px;max-width:620px;width:100%;max-height:92vh;
     display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(20,32,26,.3)}
.dlg.g{max-width:1040px}
.dlg.m{max-width:820px}
.dlg .cb{padding:10px 16px;border-bottom:1px solid var(--linha);display:flex;
         justify-content:space-between;align-items:center;gap:12px}
.dlg .cb h2{margin:0;font-size:14.5px;font-weight:700}
.dlg .cp{padding:12px 16px;overflow-y:auto;flex:1}
.dlg .cp .cartao{padding:8px 12px;margin-bottom:8px}
.dlg .cp .rol{margin:0 -12px;padding:0 12px}
.dlg .pe{padding:8px 16px;border-top:1px solid var(--linha);display:flex;justify-content:flex-end;gap:8px}
.x{background:none;border:0;font-size:20px;color:var(--tinta3);cursor:pointer;line-height:1;padding:0 4px}

/* ---------------- barra de seleção ---------------- */
/* FIXA, não sticky. `sticky bottom:0` no último elemento do documento
   fica ABAIXO da dobra e nunca aparece — a barra de ação some justamente
   quando há seleção, que é quando ela precisa existir. Descoberto usando
   a tela, não lendo o código. */
.selbar{position:fixed;left:50%;transform:translateX(-50%);bottom:14px;z-index:60;
        width:min(1120px,calc(100vw - 40px));
        background:var(--barra-fundo);color:var(--barra-tinta);border-radius:10px;
        padding:8px 16px;display:flex;align-items:center;gap:12px;font-size:12.5px;
        box-shadow:0 8px 28px rgba(20,32,26,.32);flex-wrap:wrap}
.selbar b{font-variant-numeric:tabular-nums}
.selbar .dir{margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.selbar select{border:0;border-radius:7px;padding:5px 9px;font:inherit;font-size:12.5px}

/* ---------------- avisos e carregamento ---------------- */
.carregando{display:flex;align-items:center;gap:8px;color:var(--tinta3);font-size:12.5px;padding:14px 0}
.spin{width:14px;height:14px;border:2px solid var(--linha2);border-top-color:var(--azul);
      border-radius:50%;animation:gira .7s linear infinite}
@keyframes gira{to{transform:rotate(360deg)}}
#toasts{position:fixed;bottom:16px;right:16px;z-index:200;display:flex;flex-direction:column;gap:8px}
.toast{background:var(--barra-fundo);color:var(--barra-tinta);padding:9px 14px;border-radius:9px;font-size:12.5px;
       max-width:420px;box-shadow:0 6px 24px rgba(20,32,26,.28);animation:sobe .18s}
.toast.ok{background:var(--verde)} .toast.er{background:var(--vermelho)} .toast.at{background:var(--ambar);color:#241a00}
@keyframes sobe{from{transform:translateY(8px);opacity:0}}

/* ---------------- barra de progresso ---------------- */
.barra{height:5px;background:var(--fundo3);border-radius:4px;overflow:hidden;margin:5px 0}
.barra i{display:block;height:100%;background:var(--azul);border-radius:4px;transition:width .3s}
.barra.v i{background:var(--verde)} .barra.a i{background:var(--ambar)}

/* ---------------- filtros ---------------- */
/* Uma barra baixa; nunca um cartão só para filtros. */
.filtros{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.filtros input,.filtros select{border:1px solid var(--linha2);border-radius:7px;padding:4px 9px;min-height:28px;
  font:inherit;font-size:12.5px;background:var(--fundo)}
.chip{border:1px solid var(--linha2);background:var(--fundo);border-radius:20px;padding:3px 10px;min-height:26px;
      font-size:12px;font-weight:600;cursor:pointer;color:var(--tinta2);display:inline-flex;align-items:center;text-decoration:none}
.chip:hover{text-decoration:none;border-color:var(--tinta3)}
.chip.on{background:var(--marca-primaria-suave);border-color:var(--marca-primaria);color:var(--marca-primaria-texto)}

/* ---------------- seções recolhíveis (resumo visível, detalhe sob demanda) ---------------- */
details.secao{background:var(--fundo);border:1px solid var(--linha);border-radius:var(--raio-g);margin-bottom:var(--gap-secao);box-shadow:var(--sombra)}
details.secao > summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 14px;font-size:13.5px;font-weight:700;line-height:1.3}
details.secao > summary::-webkit-details-marker{display:none}
details.secao > summary::before{content:"▸";color:var(--tinta3);font-size:11px;width:10px;transition:transform .12s}
details.secao[open] > summary::before{transform:rotate(90deg)}
details.secao > summary .cont{font-size:11.5px;font-weight:500;color:var(--tinta3)}
details.secao > summary .dir{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
details.secao > .corpo{padding:0 14px 10px}
details.secao > .corpo > .rol{margin:0 -14px;padding:0 14px}

@media (max-width:900px){
  .topo .linha{flex-wrap:wrap;height:auto;padding:8px 12px;gap:8px}
  .quem{max-width:150px}
  .submenu,.trilha{padding-left:12px;padding-right:12px}
  main{padding:10px 12px 70px}
  .grade{grid-template-columns:1fr}
  .form .lin > label{flex-basis:100%}
  .dlg,.dlg.g,.dlg.m{max-width:100%}
  .vazio .a{margin-left:0}
}

/* Paginação de listas longas. */
.pag{
  display:flex;align-items:center;justify-content:center;gap:12px;
  padding:8px 0 0;font-size:12px;color:var(--tinta2)
}
.pag button[disabled]{opacity:.4;cursor:default}

/* ---------- ROTEIRO OPERACIONAL DO EMPREENDIMENTO (cards em grade) ----------
   Grupos lado a lado quando cabem (flex), cards em grade dentro do grupo.
   O card responde: o que é · qual o status · o que falta · onde clico. */
.roteiro-wrap{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:flex-start;margin:0 0 14px}
.roteiro-wrap > .progresso,.roteiro-wrap > .proxima{flex:1 1 100%}
.roteiro-g{flex:1 1 170px;min-width:0;max-width:100%}
.rg-t{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tinta3);margin:0 0 5px;display:flex;gap:8px;align-items:center}
.rg-t span{font-weight:650;color:var(--tinta2);letter-spacing:0;font-variant-numeric:tabular-nums}
.roteiro{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}
.tarefa{background:var(--fundo);border:1px solid var(--linha);border-left-width:3px;border-radius:var(--raio-g);padding:7px 10px 8px;display:flex;flex-direction:column;min-height:116px;min-width:0}
.tarefa.ok{border-left-color:var(--verde)} .tarefa.pend{border-left-color:var(--ambar-viva)} .tarefa.ini{border-left-color:var(--azul)}
.tarefa.trav{border-left-color:var(--linha2);background:var(--fundo3)} .tarefa.opc,.tarefa.par{border-left-color:var(--linha2)}
.tarefa .tn{display:flex;justify-content:space-between;align-items:center;font-size:10.5px;font-weight:700;letter-spacing:.06em;color:var(--tinta3);min-height:18px}
.tarefa .tnum{font-variant-numeric:tabular-nums}
.tarefa .tg{font-size:12px;line-height:1}
.tarefa.ok .tg{color:var(--verde)} .tarefa.pend .tg{color:var(--ambar)} .tarefa.ini .tg{color:var(--azul-t)}
.tarefa .tt{font-size:12.5px;font-weight:700;line-height:1.25;margin:3px 0 4px}
.tarefa .ts{font-size:15px;font-weight:720;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tarefa .tp{font-size:11px;color:var(--tinta2);margin-top:2px;min-height:15px;line-height:1.35}
.tarefa .ta{margin-top:auto;padding-top:6px;display:flex;gap:6px;align-items:center}
.tarefa.trav .tt,.tarefa.trav .ts,.tarefa.opc .ts,.tarefa.par .ts{color:var(--tinta3)}
.tarefa.trav .ts{font-size:13px}
.progresso{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px;color:var(--tinta2)}
.progresso b{color:var(--tinta)}
.progresso .barra{flex:0 0 160px;margin:0}
.proxima{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--azul-f);border:1px solid var(--azul-b);border-radius:var(--raio);padding:6px 10px;font-size:12.5px;color:var(--azul-t)}
.proxima .rot{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.proxima b{font-size:13.5px;color:var(--tinta)}
.proxima .btn{margin-left:auto}
@media (max-width:900px){ .roteiro-g{flex-basis:100%} .roteiro{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))} .proxima .btn{margin-left:0} }

/* ---------- NOVA NEGOCIAÇÃO (jornada em quatro passos, como no Sistema Comercial) ---------- */
.passos{display:flex;gap:8px;list-style:none;margin:0 0 10px;padding:0;flex-wrap:wrap}
.passo{display:flex;align-items:center;gap:8px;padding:5px 12px 5px 6px;border:1px solid var(--linha);border-radius:20px;font-size:12.5px;color:var(--tinta2);background:var(--fundo)}
.passo span{width:22px;height:22px;border-radius:50%;background:var(--fundo3);color:var(--tinta2);display:inline-flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:700}
.passo.ativo{border-color:var(--azul);color:var(--tinta);font-weight:700}
.passo.ativo span{background:var(--azul);color:var(--marca-sobre-primaria)}
.passo.feito{cursor:pointer}
.passo.feito span{background:var(--verde);color:#fff}
.jornada h2{font-size:16px;margin:0 0 6px}
.jornada .fixo-info{min-height:var(--altura-input);display:flex;align-items:center;gap:6px;padding:4px 0}
.jornada .registrado{font-size:12px;color:var(--tinta2);background:var(--fundo3);border-radius:var(--raio);padding:6px 10px;margin-top:8px}
.acoes-passo{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.acoes-passo.centro{justify-content:center}
.busca-cpf{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin:0 0 8px}
.busca-cpf label{display:flex;flex-direction:column;gap:3px;font-size:12px;font-weight:600}
.busca-cpf input{border:1px solid var(--linha2);border-radius:7px;padding:5px 9px;font:inherit;font-size:13px;min-height:var(--altura-input)}
.faixa{border-radius:var(--raio);padding:7px 10px;font-size:12.5px;margin:0 0 8px;border:1px solid}
.faixa.ok{background:var(--verde-f);border-color:var(--verde-b);color:var(--verde-t)}
.faixa.novo{background:var(--azul-f);border-color:var(--azul-b);color:var(--azul-t)}
.faixa .obs{font-size:11.5px;margin-top:3px;color:var(--tinta2)}
.cadastro{border:1px solid var(--linha);border-radius:var(--raio-g);padding:8px 12px 10px;margin:0 0 8px;background:var(--fundo)}
.cadastro-cab{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:0 0 4px}
.cadastro-cab h3{font-size:13.5px;margin:0}
.cadastro .sub-titulo,.neg-imovel .sub-titulo{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tinta3);margin:8px 0 2px}
.cadastro input.travado,.cadastro select.travado{background:var(--fundo3);color:var(--tinta2)}
.pessoa-extra{margin-top:6px;padding-top:6px;border-top:1px dashed var(--linha2)}
.btn.tracejado{border-style:dashed;width:100%;justify-content:center}
.neg-imovel{border:1px solid var(--linha);border-radius:var(--raio-g);padding:8px 12px 10px;margin:0 0 8px;background:var(--fundo)}
.neg-imovel .imovel-cab{display:flex;justify-content:space-between;align-items:center;margin:0 0 4px}
.neg-imovel .imovel-cab h3{font-size:13.5px;margin:0}
.ficha{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px 12px;background:var(--fundo3);border-radius:var(--raio);padding:8px 10px;margin:6px 0 8px}
.ficha dt{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tinta3)}
.ficha dd{margin:1px 0 0;font-size:13px;font-variant-numeric:tabular-nums}
.receb{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:8px;align-items:end;margin:0 0 6px}
.receb label{display:flex;flex-direction:column;gap:3px;font-size:12px;font-weight:600}
.receb input,.receb select{border:1px solid var(--linha2);border-radius:7px;padding:5px 9px;font:inherit;font-size:13px;min-height:var(--altura-input);width:100%}
.resumo-bloco{border:1px solid var(--linha);border-radius:var(--raio-g);padding:8px 12px;margin:0 0 8px;background:var(--fundo)}
.resumo-bloco h4{font-size:13px;margin:0 0 4px}
.linha-resumo{display:flex;justify-content:space-between;gap:16px;padding:4px 0;border-bottom:1px dashed var(--linha);font-size:12.5px}
.linha-resumo:last-child{border-bottom:0}
.linha-resumo span:first-child{color:var(--tinta2)}
.linha-resumo span:last-child{font-weight:650;text-align:right}
.confirma{display:flex;align-items:center;gap:10px;background:var(--ambar-f);border:1px solid var(--ambar-b);border-radius:var(--raio);padding:8px 10px;margin:8px 0 0;font-size:13px;cursor:pointer}
.confirma input{width:18px;height:18px}
.sucesso{text-align:center;padding:10px 0}
.sucesso-icone{width:56px;height:56px;border-radius:50%;background:var(--verde-f);color:var(--verde);display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;margin:0 0 6px}
.sucesso h2{margin:0 0 4px}
.sucesso-id{font-size:13px;color:var(--tinta2);margin:0 0 10px}
.sucesso-id b{font-family:ui-monospace,Menlo,monospace;background:var(--fundo3);padding:2px 8px;border-radius:6px}
@media (max-width:900px){ .receb{grid-template-columns:1fr 1fr} .ficha{grid-template-columns:repeat(2,1fr)} }

/* ---------------- condição especial (aporte adicional e desconto) ----------------
   Exceção não ocupa o lugar do caso normal. Recolhida, é UMA LINHA de
   texto no fim das condições de pagamento: sem moldura, sem fundo, sem
   peso — nada que a faça parecer parte obrigatória da venda. Só quando a
   pessoa abre é que ganha corpo. */
.especial{margin:10px 0 0;padding-top:8px;border-top:1px dashed var(--linha)}
.especial-link{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:4px 0;
  background:none;border:0;font:inherit;font-size:12.5px;font-weight:650;color:var(--azul-t);
  cursor:pointer;text-align:left}
.especial-link:hover{text-decoration:underline}
.especial-cab{font-size:12.5px;font-weight:700;color:var(--tinta2);padding:4px 0}
.especial-ajuda{margin:0;font-size:11.5px;color:var(--tinta3);line-height:1.45;max-width:62ch}
.especial-corpo{margin:8px 0 0;padding:10px;background:var(--fundo3);border-radius:var(--raio)}
.especial-corpo .sub-titulo:first-child{margin-top:0}
.especial-status{display:flex;flex-direction:column;gap:4px;margin:0 0 8px;font-size:12.5px}
.especial-status .obs{font-size:11.5px;color:var(--tinta3);margin-top:2px}
/* No celular o link precisa de alvo de toque de verdade — discreto, não pequeno.
   E os campos da gaveta deixam de disputar a mesma linha. */
@media (pointer:coarse){.especial-link{min-height:44px;padding:10px 0}}
@media (max-width:600px){
  .especial-corpo{padding:10px 8px}
  .especial-corpo .lin{flex-direction:column;gap:8px}
  .especial-corpo .lin > label{flex:1 1 auto}
}
/* configuração aberta em janela a partir do card do roteiro */
.pc-modal h2{font-size:13.5px;margin:0 0 8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pc-modal h2 .dir{margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.pc-modal h2 .cont{font-weight:500;color:var(--tinta3);font-size:12px}
.pc-modal .rol{max-height:440px}
.pc-modal .nota{margin-top:8px}
/* obrigatório × paralelo no roteiro */
.rg-sec{flex:1 1 100%;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--azul-t);border-bottom:2px solid var(--azul-f);padding:2px 0 4px;margin-top:2px}
.rg-sec span{font-weight:500;letter-spacing:0;text-transform:none;color:var(--tinta3);margin-left:6px}
.rg-sec.paralelo{color:var(--tinta2);border-bottom-color:var(--linha)}
.roteiro-g.par .tarefa{background:var(--fundo2)}

/* =====================================================================
   ACABAMENTO VISUAL (rodada noturna de 04→05/09/2026)
   Mesma identidade (azul VDC, verde, âmbar), mesma densidade; menos cinza
   lavado, hierarquia mais clara, estados mais legíveis. Regras abaixo
   afinam os componentes já existentes — nada de layout novo.
   ===================================================================== */
:root{
  /* AS CAMADAS DE SUPERFÍCIE, EXATAMENTE COMO NO DESIGN APROVADO.
     ================================================================
     O defeito era a IMPLEMENTAÇÃO das camadas, não a paleta. A 1ª tentativa
     desta rodada errou duas vezes: primeiro achatou as camadas (superfície
     branca sobre fundo azulado se distinguia por 1,08, e o cartão não tinha
     borda em três lados), e depois eu INVENTEI uma família de neutros nova
     em vez de reproduzir a aprovada. As duas coisas foram descartadas.
     Os valores abaixo são os do design system aprovado, sem reinterpretação:

       design            aqui         claro      escuro
       --bg              --fundo2     #F2F4F2    #0D1512   fundo da página
       --surface         --fundo      #FFFFFF    #15211B   card, painel, modal, lateral
       --surface2        --fundo3     #F7F8F7    #1A2820   preenchimento (cabeçalho de grupo)
       --line            --linha      #CCD4CF    #28362F   contorno e divisor
       --strong          --forte      #14201A    #3B4C43   a régua de 2 px que fecha o grupo
       --ink             --tinta      #14201A    #F1F4F2   texto principal
       --muted           --tinta2/3   #5E6B64    #9AA8A1   texto secundário

     DUAS DECISÕES DO DESIGN que a implementação passou a seguir:
       · UM valor de linha, não três. O design usa --line no contorno da caixa
         E na linha de tabela. Os três tokens continuam existindo com papéis
         nomeados (contorno, controle, divisor) para uma rodada futura poder
         diferenciá-los, mas o VALOR é o aprovado. A linha do design é suave o
         bastante (1,51 sobre o branco) — não dá aparência de planilha.
       · DOIS níveis de tinta, não três. O design tem `ink` e `muted`, e usa
         `muted` também no metadado e no cabeçalho de tabela. `--tinta3` passa
         a valer o mesmo `muted`, o que deixa o texto auxiliar mais legível
         (5,58:1 contra 4,57:1) — e é o que o mockup mostra.

     A CAIXA APARECE PELA LINHA, não pelo tom: no design, superfície/fundo é
     só 1,105, e linha/fundo é 1,368. O contorno de 1 px nos quatro lados
     (refinamento desta rodada) é a implementação disso. */
  --fundo2:#f2f4f2; --fundo3:#f7f8f7;
  --linha:#ccd4cf; --linha2:#ccd4cf; --divisor:#ccd4cf;
  --tinta:#14201a; --tinta2:#5e6b64; --tinta3:#5e6b64;
  /* A MARCA (09/09/2026). Duas cores escolhidas pela empresa; tudo o mais é
     derivado por publico/app/cores.js e escrito nestas variáveis em tempo de
     execução. Os valores aqui são o TEMA PADRÃO — valem quando ninguém
     configurou nada e quando o JavaScript ainda não rodou. */
  /* Os valores abaixo são EXATAMENTE o que cores.js deriva para a paleta
     padrão (#1f5fc4 / #157347) — o teste de marca confere a igualdade. */
  --marca-primaria:#1f5fc4; --marca-primaria-hover:#1b52aa; --marca-primaria-pressed:#174894;
  --marca-sobre-primaria:#ffffff; --marca-primaria-texto:#1f5fc4; --marca-primaria-viva:#1f5fc4; --marca-primaria-suave:#e4ecf8; --marca-primaria-sutil:#f4f7fc;
  --marca-primaria-borda:#b7ccec; --marca-primaria-profunda:#142643; --marca-foco:#1f5fc4;
  --marca-destaque:#157347; --marca-destaque-hover:#105937; --marca-destaque-pressed:#0c442a; --marca-sobre-destaque:#ffffff;
  --marca-destaque-texto:#157347; --marca-destaque-viva:#157347; --marca-destaque-suave:#e3eee9; --marca-destaque-sutil:#f3f8f6; --marca-destaque-borda:#b4d2c4;
  /* Os nomes antigos continuam valendo — apontam para a marca. `-t` é a
     versão para TEXTO (contraste garantido sobre o fundo); `-b` é borda. */
  --azul:var(--marca-primaria); --azul-f:var(--marca-primaria-suave); --azul-e:var(--marca-primaria-hover);
  --azul-t:var(--marca-primaria-texto); --azul-b:var(--marca-primaria-borda);
  --verde:#157347; --verde-f:#e3f5ea; --verde-t:#0f5233; --verde-b:#bfe3d0;
  /* O ÂMBAR SEMÂNTICO tem dois papéis, e por isso dois tokens — a mesma
     separação que a marca já tinha entre `-texto` e `-viva`:
       --ambar / --ambar-t   TEXTO e etiqueta: escuro, para ler sobre o creme
       --ambar-viva          FILETE, ponto e barra: vivo, para APARECER
     O laranja vivo do artboard é o segundo caso. Sem esta separação o filete
     de "Precisa da sua atenção" saía marrom (o âmbar de texto) e ficava
     visivelmente diferente do design aprovado. É cor da PLATAFORMA nos dois
     casos — nunca a cor de destaque da empresa. (Nenhum hex do mockup ou da
     empresa é escrito nesta folha: a bateria D9 reprova, inclusive em
     comentário, e está certa em reprovar.) */
  --ambar:#9a5b00; --ambar-f:#fff3dc; --ambar-t:#7a4a00; --ambar-b:#f0d9ac; --ambar-viva:#dd7418;
  --vermelho:#b42318; --vermelho-f:#fdecea; --vermelho-t:#8c1d18; --vermelho-b:#f5c9c6;
  --barra-fundo:#14201a; --barra-tinta:#ffffff;
  /* SOMBRA DISCRETA, e só. O artboard 1a usa 0 1px 2px nos cards
     independentes da Home; nada além disso. Sem efeito flutuante. */
  --sombra:0 1px 2px rgba(20,32,26,.07);
  --sombra-2:0 2px 6px rgba(20,32,26,.10);
}
/* ---------- TEMA ESCURO. Mesmos tokens, outros valores: nenhum componente
   sabe em que tema está. `data-tema` vai na raiz (a sessão decide) e pode ir
   num elemento qualquer (a prévia da identidade usa isso para mostrar os dois
   temas lado a lado). */
[data-tema="escuro"]{
  /* As mesmas camadas, nos valores do tema escuro do design aprovado. */
  --fundo:#15211b; --fundo2:#0d1512; --fundo3:#1a2820;
  --linha:#28362f; --linha2:#28362f; --divisor:#28362f;
  --tinta:#f1f4f2; --tinta2:#9aa8a1; --tinta3:#9aa8a1;
  /* Paleta padrão no ESCURO, também exatamente como cores.js deriva. */
  --marca-primaria:#1f5fc4; --marca-primaria-hover:#256cdd; --marca-primaria-pressed:#174894; --marca-sobre-primaria:#ffffff;
  --marca-primaria-texto:#4884e1; --marca-primaria-viva:#1f5fc4; --marca-primaria-suave:#172843; --marca-primaria-sutil:#162133; --marca-primaria-borda:#1a396b; --marca-primaria-profunda:#0f1d33; --marca-foco:#4884e1;
  --marca-destaque:#157347; --marca-destaque-hover:#105937; --marca-destaque-pressed:#0c442a; --marca-sobre-destaque:#ffffff;
  --marca-destaque-texto:#1d975b; --marca-destaque-viva:#157347; --marca-destaque-suave:#152c2a; --marca-destaque-sutil:#152327; --marca-destaque-borda:#154233;
  --verde:#3fbf7f; --verde-f:#12301f; --verde-t:#8fe0b4; --verde-b:#215c3e;
  --ambar:#e0a030; --ambar-f:#332a12; --ambar-t:#ffd58a; --ambar-b:#5a4514; --ambar-viva:#f0952f;
  --vermelho:#f0655c; --vermelho-f:#3a1b19; --vermelho-t:#ffb3ad; --vermelho-b:#6a2723;
  --roxo:#a98ce6; --roxo-f:#2a2140;
  --barra-fundo:#f1f4f2; --barra-tinta:#14201a;
  --sombra:0 1px 2px rgba(0,0,0,.5); --sombra-2:0 2px 8px rgba(0,0,0,.6);
  color-scheme:dark;
}
/* Um elemento marcado como CLARO dentro de uma página escura (a prévia "Claro" da central com o CRM no tema
   escuro) volta aos neutros claros — sem isto ele herdava os escuros da raiz e a prévia clara saía escura. */
[data-tema="claro"]{
  --fundo:#ffffff; --fundo2:#f2f4f2; --fundo3:#f7f8f7;
  --linha:#ccd4cf; --linha2:#ccd4cf; --divisor:#ccd4cf;
  --tinta:#14201a; --tinta2:#5e6b64; --tinta3:#5e6b64;
  --verde:#157347; --verde-f:#e3f5ea; --verde-t:#0f5233; --verde-b:#bfe3d0;
  --ambar:#9a5b00; --ambar-f:#fff3dc; --ambar-t:#7a4a00; --ambar-b:#f0d9ac; --ambar-viva:#dd7418;
  --vermelho:#b42318; --vermelho-f:#fdecea; --vermelho-t:#8c1d18; --vermelho-b:#f5c9c6;
  --roxo:#6741a8; --roxo-f:#f0ebfa;
  --barra-fundo:#14201a; --barra-tinta:#ffffff;
  --sombra:0 1px 2px rgba(20,32,26,.07);
  --sombra-2:0 2px 6px rgba(20,32,26,.10);
  color-scheme:light;
}
header.topo{box-shadow:0 1px 0 var(--linha),0 2px 8px rgba(0,0,0,.04)}
.marca{color:var(--azul-t)}
.cartao{box-shadow:var(--sombra)}
.cartao h2{color:var(--tinta)}
.cabpag h1{color:var(--tinta)}
.btn{border-color:var(--linha2);box-shadow:0 1px 1px rgba(20,32,26,.04)}
.btn:hover{border-color:var(--tinta3);background:var(--fundo2)}
.btn.p{background:var(--marca-primaria);border-color:var(--marca-primaria-hover);color:var(--marca-sobre-primaria);box-shadow:0 1px 2px rgba(20,32,26,.18)}
.btn.p:hover:not(:disabled){background:var(--marca-primaria-hover);border-color:var(--marca-primaria-pressed)}
.btn.p:active:not(:disabled){background:var(--marca-primaria-pressed)}
.btn.d{background:var(--vermelho);border-color:#8f1c13;color:#fff}
.btn.d:hover{background:#9c1f16}
.btn.v{background:var(--verde);border-color:#0f5b38;color:#fff}
.btn:disabled{opacity:.55;box-shadow:none}
.et{border:1px solid rgba(20,32,26,.06);font-weight:700}
.et-v{border-color:rgba(21,115,71,.18)} .et-a{border-color:rgba(154,91,0,.2)} .et-r{border-color:rgba(180,35,24,.18)} .et-z{border-color:rgba(31,95,196,.18)}
table th{background:var(--fundo2);color:var(--tinta2);border-bottom:1px solid var(--linha2)}
tbody tr:hover td{background:var(--fundo2)}
.nums{box-shadow:var(--sombra)}
.num .v{color:var(--tinta)}
.aviso{border-left-width:3px}
.aviso.i{border-left-color:var(--azul)} .aviso.ok{border-left-color:var(--verde)} .aviso.at{border-left-color:var(--ambar)} .aviso.er{border-left-color:var(--vermelho)}
.dlg{box-shadow:0 18px 50px rgba(20,32,26,.28);border:1px solid var(--linha)}
.dlg .cb{border-bottom:1px solid var(--linha)}
.dlg .cb h3{font-size:15px;font-weight:750}
.dlg .pe{border-top:1px solid var(--linha);background:var(--fundo2)}
/* roteiro: estado legível de longe */
.tarefa{box-shadow:var(--sombra);transition:box-shadow .12s,transform .12s}
.tarefa:hover{box-shadow:var(--sombra-2)}
.tarefa.ok{background:var(--fundo);border-left-color:var(--verde)}
.tarefa.ini{border-left-color:var(--azul)}
.tarefa.trav{background:var(--fundo3);border-style:dashed;border-left-style:solid;border-left-color:var(--linha2)}
.tarefa .tt{color:var(--tinta)}
.tarefa.ok .tg{background:var(--verde-f);border-radius:50%;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;font-size:11px}
.tarefa.pend .tg{background:var(--ambar-f);border-radius:50%;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;font-size:11px}
.proxima{background:var(--azul-f);border-color:var(--azul-b)}
.progresso .barra{height:6px}
/* jornada de venda */
.passo.ativo{background:var(--azul-f);border-color:var(--azul-b)}
.passo.feito{background:var(--verde-f);border-color:var(--verde-b)}
.ficha{background:var(--fundo3);border:1px solid var(--linha)}
.resumo-bloco{box-shadow:var(--sombra)}
.faixa.ok{border-left:3px solid var(--verde)} .faixa.novo{border-left:3px solid var(--azul)}
/* cards de lista */
.card{box-shadow:var(--sombra)}
.card:hover{box-shadow:var(--sombra-2);border-color:var(--azul-b)}
.chip.on{box-shadow:0 1px 2px rgba(20,32,26,.18)}

/* =====================================================================
   PLATAFORMA (09/09/2026): tela inicial, central de identidade, login e
   rodapé da organização. Usa só tokens — muda com a marca e com o tema.
   ===================================================================== */

/* ---------- rodapé da organização ---------- */
.rodape-org{max-width:var(--largura-max);margin:18px auto 0;padding:10px 0 0;border-top:1px solid var(--linha);font-size:11.5px;color:var(--tinta3);display:flex;gap:6px 14px;flex-wrap:wrap;align-items:center}
.rodape-org:empty{display:none}
.rodape-org b{color:var(--tinta2);font-weight:650}
.rodape-org .plat{margin-left:auto;opacity:.8}
@media (max-width:900px){.rodape-org .plat{margin-left:0}}

/* ---------- tela inicial ---------- */
.home-cab{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:4px 0 12px}
.home-cab h1{font-size:20px;margin:0;letter-spacing:-.02em;font-weight:740;line-height:1.2}
.home-cab .org{font-size:12.5px;color:var(--tinta2);margin-top:2px}
.home-cab .org b{color:var(--azul-t)}
.home-grid{display:grid;grid-template-columns:minmax(0,1fr) 440px;gap:24px 28px;align-items:start}
.home-col{display:flex;flex-direction:column;gap:var(--gap-secao);min-width:0}
.home-col > .cartao{margin-bottom:0}
.home-mods{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.home-mod{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid var(--linha);border-radius:var(--raio-g);background:var(--fundo);text-decoration:none;color:inherit;transition:border-color .12s,box-shadow .12s;min-height:86px;border-top:3px solid var(--marca-primaria)}
.home-mod:hover{text-decoration:none;border-color:var(--azul-b);box-shadow:var(--sombra-2)}
.home-mod .t{font-size:14px;font-weight:720;color:var(--tinta);display:flex;align-items:center;gap:8px}
.home-mod .t .et{margin-left:auto}
.home-mod .d{font-size:11.5px;color:var(--tinta2);line-height:1.4}
.home-mod .n{margin-top:auto;font-size:11px;color:var(--tinta3);display:flex;gap:10px;flex-wrap:wrap}
.home-mod .n b{color:var(--tinta);font-variant-numeric:tabular-nums}
.home-mod.breve{opacity:.6;border-top-color:var(--linha2);cursor:default}
.home-atalhos{display:flex;gap:6px;flex-wrap:wrap}
.home-atalhos .chip{gap:6px}
.home-atalhos .chip i{font-style:normal;color:var(--azul-t);font-weight:800}
.home-alerta{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--fundo3);font-size:12.5px}
.home-alerta:last-child{border-bottom:0}
.home-alerta .pt{width:8px;height:8px;background:var(--ambar-viva);flex:0 0 8px}
.home-alerta.grave .pt{background:var(--vermelho)}
.home-alerta .tx{flex:1;min-width:0;line-height:1.35}
.home-alerta .tx small{display:block;color:var(--tinta3);font-size:11px}
.home-alerta .btn{flex:0 0 auto}
.home-ativ{list-style:none;margin:0;padding:0}
.home-ativ li{display:flex;gap:10px;align-items:baseline;padding:5px 0;border-bottom:1px solid var(--fundo3);font-size:12.5px}
.home-ativ li:last-child{border-bottom:0}
.home-ativ time{color:var(--tinta3);font-size:11px;white-space:nowrap;flex:0 0 76px;font-variant-numeric:tabular-nums}
.home-ativ .q{color:var(--tinta3);font-size:11.5px}
.home-ok{display:flex;align-items:center;gap:8px;color:var(--verde-t);font-size:12.5px;padding:6px 0}
.home-ok .pt{width:8px;height:8px;border-radius:50%;background:var(--verde)}
@media (max-width:1000px){.home-grid{grid-template-columns:1fr}}

/* ---------- central de identidade ---------- */
.idv-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.9fr);gap:12px;align-items:start}
.idv-grid > .home-col > .cartao{margin-bottom:0}
.idv-principio{font-size:12px;color:var(--tinta2);background:var(--fundo3);border-radius:var(--raio);padding:7px 10px;margin-bottom:10px}
.idv-principio b{color:var(--tinta)}
.idv-logo{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.idv-logo .quadro{width:180px;height:72px;border:1px dashed var(--linha2);border-radius:var(--raio);display:flex;align-items:center;justify-content:center;background:var(--fundo2);overflow:hidden;position:relative}
.idv-logo .quadro.escuro{background:#15211b}
.idv-logo .quadro img{max-width:92%;max-height:80%;object-fit:contain}
.idv-logo .quadro .vazio-l{font-size:11px;color:var(--tinta3);text-align:center;padding:6px}
.idv-logo .acoes-l{display:flex;flex-direction:column;gap:5px}
.idv-cores{display:flex;gap:14px;flex-wrap:wrap}
.idv-cor{display:flex;align-items:center;gap:8px;flex:1 1 200px}
.idv-cor input[type=color]{width:38px;height:30px;padding:0;border:1px solid var(--linha2);border-radius:7px;background:none;cursor:pointer}
.idv-cor input[type=text]{width:100px;font-family:ui-monospace,Menlo,monospace;font-size:12.5px}
.idv-cor label{display:flex;flex-direction:column;gap:2px;font-size:11.5px;font-weight:640;color:var(--tinta2)}
.idv-amostra{display:flex;gap:4px;margin-top:6px;flex-wrap:wrap}
.idv-amostra span{display:inline-block;width:22px;height:22px;border-radius:6px;border:1px solid rgba(0,0,0,.08)}
.idv-aparencia{display:flex;gap:6px;flex-wrap:wrap}
.idv-aparencia label{display:flex;align-items:center;gap:6px;border:1px solid var(--linha2);border-radius:20px;padding:4px 11px;font-size:12.5px;cursor:pointer;background:var(--fundo)}
.idv-aparencia label.on{border-color:var(--azul);background:var(--azul-f);color:var(--azul-t);font-weight:650}
.idv-aparencia input{width:auto;margin:0}
.idv-apps{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px}
.idv-app{border:1px solid var(--linha);border-radius:var(--raio);padding:7px 9px;font-size:12px;background:var(--fundo2)}
.idv-app b{display:block;font-size:12.5px;color:var(--tinta)}
.idv-app small{color:var(--tinta3);font-size:11px}
.idv-app .et{margin-top:3px}
/* prévia */
.idv-previa-cab{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.idv-previa-cab .dir{margin-left:auto;display:flex;gap:6px}
.idv-frame{border:1px solid var(--linha2);border-radius:12px;overflow:hidden;background:var(--fundo2);color:var(--tinta);margin:0 auto;transition:max-width .2s}
.idv-frame.desktop{max-width:100%}
.idv-frame.celular{max-width:300px}
.idv-frame .f-topo{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--fundo);border-bottom:1px solid var(--linha)}
.idv-frame .f-topo img{height:20px;max-width:110px;object-fit:contain}
.idv-frame .f-topo img.placa{background:#fff;border-radius:5px;padding:1px 5px}
.idv-frame .f-topo .n{font-weight:760;color:var(--azul-t);font-size:12.5px}
.idv-frame .f-topo .m{margin-left:auto;display:flex;gap:3px}
.idv-frame .f-topo .m span{font-size:10.5px;padding:3px 8px;border-radius:6px;color:var(--tinta2);font-weight:640}
.idv-frame .f-topo .m span.on{background:var(--marca-primaria);color:var(--marca-sobre-primaria)}
.idv-frame .f-selo{font-size:9px;font-weight:760;letter-spacing:.05em;padding:2px 6px;border-radius:5px;background:var(--ambar);color:#3a2c00;white-space:nowrap}
.idv-frame .f-corpo{padding:10px}
.idv-frame .f-login{display:flex;align-items:center;justify-content:center;padding:18px 10px;background:var(--fundo3);position:relative;min-height:120px}
.idv-frame .f-login.com-fundo{background-image:var(--fundo-login);background-size:cover;background-position:center}
.idv-frame .f-login.com-fundo::before{content:"";position:absolute;inset:0;background:linear-gradient(rgba(10,14,22,.45),rgba(10,14,22,.7))}
.idv-frame .f-login .cx{position:relative;background:var(--fundo);border-radius:9px;padding:12px 14px;width:min(240px,90%);box-shadow:var(--sombra-2);text-align:center}
.idv-frame .f-login .cx img{height:24px;max-width:140px;object-fit:contain;margin-bottom:6px}
.idv-frame .f-login .cx .n{font-weight:760;color:var(--azul-t);font-size:13px;margin-bottom:6px}
.idv-frame .f-btn{display:inline-block;background:var(--marca-primaria);color:var(--marca-sobre-primaria);border-radius:6px;padding:5px 11px;font-size:11.5px;font-weight:650}
.idv-frame .f-btn.sec{background:var(--marca-destaque);color:var(--marca-sobre-destaque)}
.idv-frame .f-card{background:var(--fundo);border:1px solid var(--linha);border-radius:8px;padding:8px 10px;margin-top:8px;font-size:11.5px}
.idv-frame .f-card b{display:block;font-size:12px}
.idv-frame .f-card a{color:var(--azul-t);font-size:11px}
.idv-frame .f-et{display:inline-block;padding:1px 6px;border-radius:10px;font-size:9.5px;font-weight:700;background:var(--marca-destaque-suave);color:var(--marca-destaque-texto);border:1px solid var(--marca-destaque-borda)}
.idv-frame .f-rel{margin-top:8px;background:#fff;color:#111;border-radius:6px;overflow:hidden;font-size:10.5px;border:1px solid var(--linha)}
.idv-frame .f-rel .barra-rel{height:5px;background:var(--marca-primaria)}
.idv-frame .f-rel .cab-rel{display:flex;justify-content:space-between;padding:6px 8px 2px;font-weight:700;color:var(--marca-primaria)}
.idv-frame .f-rel .cab-rel img{height:14px;max-width:80px;object-fit:contain}
.idv-frame .f-rel .lin-rel{display:flex;justify-content:space-between;padding:2px 8px;border-top:1px solid #eee}
.idv-frame .f-rel .rod-rel{padding:4px 8px;color:#666;font-size:9.5px;border-top:1px solid #ddd}
.idv-frame .f-rodape{padding:6px 10px;font-size:10px;color:var(--tinta3);border-top:1px solid var(--linha);display:flex;gap:8px;flex-wrap:wrap}
.idv-upload{border:1px dashed var(--linha2);border-radius:var(--raio);padding:8px 10px;font-size:12px;color:var(--tinta2);background:var(--fundo2)}
.idv-upload input[type=file]{font-size:12px}
.idv-ajuste{font-size:11.5px;color:var(--ambar-t);background:var(--ambar-f);border:1px solid var(--ambar-b);border-radius:var(--raio);padding:5px 8px;margin-top:6px}
.idv-estado{font-size:11.5px;color:var(--tinta3);display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.idv-estado .et{font-size:10px}
details.idv-avancado{border:1px solid var(--linha);border-radius:var(--raio-g);padding:0 12px;background:var(--fundo)}
details.idv-avancado summary{cursor:pointer;padding:9px 0;font-size:12.5px;font-weight:650;color:var(--tinta2)}
details.idv-avancado .form{padding:0 0 12px}
@media (max-width:1000px){.idv-grid{grid-template-columns:1fr}}

/* ---------- login ---------- */
.login-pagina{min-height:calc(100vh - 60px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;margin:-10px -20px -70px;padding:32px 16px;position:relative;background:var(--fundo2)}
.login-pagina.com-fundo{background-image:var(--login-fundo);background-size:cover;background-position:center}
.login-pagina.com-fundo::before{content:"";position:absolute;inset:0;background:linear-gradient(rgba(10,14,22,.5),rgba(10,14,22,.72))}
.login-pagina > *{position:relative}
.login-cartao{background:var(--fundo);border:1px solid var(--linha);border-radius:14px;padding:26px 28px 22px;width:min(440px,100%);box-shadow:0 18px 50px rgba(20,32,26,.18);text-align:center}
.login-cartao .login-logo{max-height:56px;max-width:220px;object-fit:contain;margin:0 auto 10px;display:block}
.login-cartao .login-logo.placa{background:#fff;border-radius:8px;padding:6px 10px}
.login-cartao .login-nome{font-size:20px;font-weight:760;color:var(--azul-t);letter-spacing:-.02em;margin-bottom:6px}
.login-cartao .login-titulo{font-size:13px;color:var(--tinta2);margin-bottom:14px;display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}
.login-cartao .btn.p{width:100%;padding:12px;font-size:14px}
.login-cartao .nota{text-align:left}
.login-cartao .aviso{text-align:left}
.login-rodape{font-size:11.5px;color:var(--tinta3);text-align:center;display:flex;gap:6px 12px;flex-wrap:wrap;justify-content:center;max-width:560px}
.login-pagina.com-fundo .login-rodape{color:rgba(255,255,255,.85)}
.login-personas{width:min(560px,100%)}
@media (max-width:900px){.login-pagina{margin:-10px -12px -70px;padding:20px 12px;min-height:calc(100vh - 80px)}.login-cartao{padding:20px 18px 16px}}


/* =====================================================================
   SISTEMA (rodada noturna de 09/09/2026) — o que faltava para o conjunto
   parecer um só produto: esqueleto de carregamento, alvo de toque, foco
   por teclado em tudo, transição de tema, cabeçalho no celular.
   ===================================================================== */
/* Esqueleto: blocos neutros que pulsam de leve enquanto o dado não chega. */
.esq{background:linear-gradient(90deg,var(--fundo3) 25%,var(--fundo2) 50%,var(--fundo3) 75%);background-size:400% 100%;border-radius:6px;animation:esq 1.3s ease-in-out infinite;min-height:12px}
.esq.t{height:16px;width:40%} .esq.l{height:12px;width:70%;margin-top:6px} .esq.n{height:34px;width:100%;margin-top:8px} .esq.c{height:86px;width:100%}
@keyframes esq{0%{background-position:100% 0}100%{background-position:0 0}}
@media (prefers-reduced-motion:reduce){.esq{animation:none}.tema-animado *{transition:none!important}}
/* Toque: em tela de dedo o botão pequeno cresce, sem mudar o desktop. */
@media (pointer:coarse){.btn.s{min-height:34px;padding:5px 11px}.chip{min-height:34px}.x{padding:6px 10px}}
/* Foco por teclado visível em TODO controle, sempre na cor de foco da marca. */
input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,[tabindex]:focus-visible,summary:focus-visible{outline:2px solid var(--marca-foco);outline-offset:1px}
/* Troca de tema suave — só depois da primeira pintura (a classe entra por JS). */
/* O fundo da página troca sem transição: numa aba oculta a transição fica congelada e a página aparece
   metade clara, metade escura. Cartões e botões transitam; a página, não. */
.tema-animado .cartao,.tema-animado header.topo,.tema-animado .btn,.tema-animado .home-mod,.tema-animado .idv-frame{transition:background-color .18s ease,color .18s ease,border-color .18s ease}
/* Cabeçalho no celular: os módulos rolam, o nome encurta, nada estoura. */
@media (max-width:600px){
  .topo .linha{gap:6px 10px}
  .modulos{order:3;flex-basis:100%;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
  .modulos::-webkit-scrollbar{display:none}
  .quem{max-width:120px;font-size:11px} .quem b{font-size:12px}
  .marca img{height:22px;max-width:120px}
  .selo-homolog{font-size:9px;padding:2px 6px}
  /* No celular o selo já diz o ambiente; o sufixo "· Homologação" ao lado da marca é repetição. */
  #marcaAmbiente{display:none}
}
/* Estado "sem acesso" e erro de bloco: mesma família visual do vazio. */
.bloco-erro{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;border:1px dashed var(--vermelho-b);border-radius:var(--raio);background:var(--vermelho-f);color:var(--vermelho-t);font-size:12.5px}
.bloco-erro .btn{margin-left:auto}
.sem-acesso{max-width:520px;margin:40px auto;text-align:center}
.sem-acesso .ic{width:44px;height:44px;border-radius:50%;background:var(--fundo3);display:inline-flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:8px}
/* Módulo: a ação clara no rodapé do card. */
.home-mod .ir{margin-top:auto;padding-top:6px;font-size:12px;font-weight:650;color:var(--azul-t);display:flex;align-items:center;gap:4px}
.home-mod .ir::after{content:"→";transition:transform .12s}
.home-mod:hover .ir::after{transform:translateX(3px)}
.home-mod .n{margin-top:6px}
/* Minhas vendas (quem vende) */
.home-minhas li{display:flex;gap:10px;align-items:baseline;padding:5px 0;border-bottom:1px solid var(--fundo3);font-size:12.5px}
.home-minhas li:last-child{border-bottom:0}
.home-minhas time{color:var(--tinta3);font-size:11px;flex:0 0 70px;font-variant-numeric:tabular-nums}
.home-minhas .e{color:var(--tinta3);font-size:11.5px}
/* Zona de envio de imagem (arrastar e soltar). */
.idv-zona{border:1.5px dashed var(--linha2);border-radius:var(--raio-g);padding:12px 14px;background:var(--fundo2);display:flex;gap:12px;align-items:center;flex-wrap:wrap;transition:border-color .12s,background .12s;cursor:pointer}
.idv-zona:hover,.idv-zona.sobre{border-color:var(--azul);background:var(--azul-f)}
.idv-zona .tx{flex:1;min-width:160px;font-size:12.5px;color:var(--tinta2)}
.idv-zona .tx b{display:block;color:var(--tinta);font-size:13px}
.idv-zona .tx small{color:var(--tinta3);font-size:11px}
.idv-zona input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.idv-zona.enviando{opacity:.7;pointer-events:none}
.idv-status{font-size:11.5px;color:var(--tinta3);display:inline-flex;align-items:center;gap:6px}
.idv-status .pt{width:7px;height:7px;border-radius:50%;background:var(--verde)}
.idv-status.pend .pt{background:var(--ambar)}
.idv-frame .f-form{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.idv-frame .f-form label{display:flex;flex-direction:column;gap:2px;font-size:10px;color:var(--tinta2);flex:1 1 90px}
.idv-frame .f-form .cx-in{border:1px solid var(--linha2);border-radius:5px;padding:4px 7px;font-size:10.5px;background:var(--fundo);color:var(--tinta)}
.idv-frame .f-form .cx-in.foco{outline:2px solid var(--marca-foco);outline-offset:-1px}
.login-cartao{border-top:3px solid var(--marca-primaria)}
.rotulo-campo{font-size:11.5px;font-weight:640;color:var(--tinta2);margin-bottom:5px}
/* A zona de envio é um <label> dentro de .form: precisa vencer a regra genérica de label (coluna, negrito). */
.form label.idv-zona{flex-direction:row;align-items:center;flex-wrap:wrap;gap:12px;font-weight:400;font-size:12.5px;color:var(--tinta2);position:relative}
.form label.idv-zona .tx{text-align:left}
.form label.idv-zona .idv-logo .quadro{width:132px;height:56px}

/* =====================================================================
   PRESENÇA DA MARCA (09/09/2026) — como o design system APLICA a identidade
   A empresa informa a logo e duas cores; a plataforma decide onde e quanto.
   Direção: 80–85% superfície neutra · 10–15% cor principal · 2–5% destaque.
   Só tokens (cores.js/marca.js) — nenhuma cor de empresa escrita aqui.
   ===================================================================== */
/* ---- shell: a faixa institucional, a logo com presença, o menu ativo ----
   A LINHA DE 3 px NO TOPO virou a FAIXA INTEIRA (design aprovado de
   09/09/2026, artboards 1a/2f): a marca deixou de ser um fio acima de um
   cabeçalho branco e passou a ser a faixa. O filete de 3 px continua
   existindo — agora na cor de DESTAQUE e embaixo da faixa. As duas regras
   ficam na seção "DESIGN SYSTEM APROVADO", no fim deste arquivo. */
.topo .linha{gap:18px}
.marca{gap:9px}
.marca img{height:40px;max-width:180px;width:auto}
.marca img.forma-quadrada,.marca img.forma-vertical{height:44px;max-width:72px}
.marca img.icone{height:34px;width:34px;border-radius:0}
.marca img.placa{height:44px;padding:4px 9px;border-radius:0}
.marca #marcaNome{font-size:15px;color:var(--marca-primaria-texto)}
.marca #marcaNome.junto{max-width:180px}
.marca #marcaAmbiente{font-size:12px}
.modulos a{padding:6px 13px;border-radius:8px;transition:background-color .12s,color .12s}
.modulos a:hover{background:rgba(255,255,255,.08);color:var(--sobre-faixa)}
.modulos a.on,.modulos a.on:hover{background:none;color:var(--sobre-faixa);border-bottom-color:var(--marca-destaque-viva)}
.submenu a{padding:7px 10px 6px;border-radius:6px 6px 0 0;transition:background-color .12s,color .12s}
.submenu a:hover{background:var(--marca-primaria-sutil);color:var(--marca-primaria-texto)}
.submenu a.on{color:var(--marca-primaria-texto);border-bottom-color:var(--marca-primaria);font-weight:700}
.trilha a:hover{color:var(--marca-primaria-texto)}
/* O selo do ambiente é da PLATAFORMA (segurança operacional): âmbar sempre,
   no cabeçalho e no cartão do login, seja qual for a marca. O piloto fica
   sólido — é o único ambiente com dado real de cliente. */
.selo-homolog.piloto{background:var(--ambar);color:#3a2c00;border-color:var(--ambar)}
/* rodapé: o nome da empresa na cor dela; nada mais chamativo que o conteúdo */
.rodape-org b{color:var(--marca-primaria-texto)}
/* ---- componentes: onde a cor principal participa ---- */
.cabpag .cod{color:var(--marca-primaria-texto)}
.btn:not(.p):not(.v):not(.d):not(.ac):hover:not(:disabled){border-color:var(--marca-primaria-borda);background:var(--marca-primaria-sutil)}
.btn.p:focus-visible,.btn.ac:focus-visible{outline:2px solid var(--marca-foco);outline-offset:2px}
.btn.ac{background:var(--marca-destaque);border-color:var(--marca-destaque-hover);color:var(--marca-sobre-destaque);box-shadow:0 1px 2px rgba(20,32,26,.18)}
.btn.ac:hover:not(:disabled){background:var(--marca-destaque-hover);border-color:var(--marca-destaque-pressed)}
.btn.ac:active:not(:disabled){background:var(--marca-destaque-pressed)}
.et-d{background:var(--marca-destaque-suave);color:var(--marca-destaque-texto);border-color:var(--marca-destaque-borda)}
.form input:focus,.form select:focus,.form textarea:focus,.filtros input:focus,.filtros select:focus,.busca-cpf input:focus,.receb input:focus,.receb select:focus{border-color:var(--marca-primaria);outline:2px solid var(--marca-foco);outline-offset:-1px;box-shadow:0 0 0 3px var(--marca-primaria-suave)}
input[type=checkbox],input[type=radio],input[type=range],progress{accent-color:var(--marca-primaria)}
tbody tr:hover td{background:var(--marca-primaria-sutil)}
tbody tr.sel td{background:var(--marca-primaria-suave)}
.card:hover{background:var(--marca-primaria-sutil)}
.chip:hover{border-color:var(--marca-primaria-borda);background:var(--marca-primaria-sutil);color:var(--marca-primaria-texto)}
.chip.on:hover{background:var(--marca-primaria-hover);border-color:var(--marca-primaria-hover);color:var(--marca-sobre-primaria)}
details.secao > summary:hover{background:var(--marca-primaria-sutil)}
.x:hover{color:var(--marca-primaria-texto)}
::selection{background:var(--marca-primaria-suave)}
/* ---- Home: a assinatura da marca na saudação, os cards dos módulos ---- */
.home-mod{gap:5px;padding:11px 13px 10px 14px}
.home-mod:hover{background:var(--marca-primaria-sutil);border-color:var(--marca-primaria-borda)}
.home-mod .t .ic{width:28px;height:28px;border-radius:8px;background:var(--marca-primaria-suave);color:var(--marca-primaria-texto);display:inline-flex;align-items:center;justify-content:center;flex:0 0 28px;transition:background-color .12s,color .12s}
.home-mod .t .ic svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.home-mod:hover .t .ic{background:var(--marca-primaria);color:var(--marca-sobre-primaria)}
.home-mod.breve{border-top-color:var(--linha2)}
.home-atalhos .chip i{color:var(--marca-primaria-texto)}
.home-atencao h2 .cont{background:var(--ambar-f);color:var(--ambar-t);border:1px solid var(--ambar-b);border-radius:10px;padding:0 7px;font-weight:700;font-size:11px;line-height:1.5}
.home-atencao .home-alerta .btn{border-color:var(--marca-primaria-borda);color:var(--marca-primaria-texto)}
/* ---- Login: a tela mais forte da identidade ---- */
.login-pagina.com-fundo{background-image:var(--login-fundo);background-size:cover;background-position:center}
.login-cartao{border-top:0;padding-top:0;overflow:hidden}
.login-cartao::before{content:"";display:block;height:4px;margin:0 -28px 24px;background:linear-gradient(90deg,var(--marca-primaria-viva) 0 82%,var(--marca-destaque-viva) 82% 100%)}
.login-cartao .login-logo{max-height:76px;max-width:280px;margin:0 auto 14px}
.login-cartao .login-logo.forma-quadrada,.login-cartao .login-logo.forma-vertical{max-height:96px}
.login-cartao .login-logo.placa{padding:8px 14px;border-radius:10px}
.login-cartao .login-nome{font-size:24px}
.login-cartao .login-empresa{font-size:16.5px;font-weight:740;color:var(--marca-primaria-texto);letter-spacing:-.01em;margin:-4px 0 6px}
.login-cartao .btn.p{display:flex;align-items:center;justify-content:center;gap:10px}
.login-cartao .btn.p .g{width:22px;height:22px;border-radius:50%;background:#fff;display:inline-flex;align-items:center;justify-content:center;flex:0 0 22px}
.login-cartao .btn.p .g svg{width:13px;height:13px;display:block}
.login-rodape b{color:var(--marca-primaria-texto);font-weight:650}
.login-pagina.com-fundo .login-rodape b{color:#fff}
@media (max-width:900px){.login-cartao::before{margin:0 -18px 20px}}
/* ---- Central: a logo com a importância que tem; publicado × rascunho ---- */
.idv-logo .quadro{width:224px;height:88px;border-radius:var(--raio-g)}
.form label.idv-zona .idv-logo .quadro{width:200px;height:80px}
.idv-cor{gap:10px}
.idv-cor input[type=color]{width:58px;height:40px;border-radius:9px;border-color:var(--linha)}
.idv-cor input[type=text]{width:88px;font-size:11.5px;color:var(--tinta3);background:var(--fundo2);border-color:var(--linha);padding:3px 7px;min-height:26px}
.idv-cor label{gap:3px}
.idv-comparar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11.5px;color:var(--tinta3);margin-top:8px}
.idv-comparar .par{display:inline-flex;gap:3px;vertical-align:middle}
.idv-comparar .par span{width:16px;height:16px;border-radius:4px;border:1px solid rgba(0,0,0,.08)}
.idv-comparar i{font-style:normal;color:var(--tinta3)}
/* prévia: os MESMOS motivos do CRM real, em miniatura (linha no topo, logo com
   presença, saudação com a assinatura, card de módulo, contador de atenção) */
.idv-frame .f-topo{border-top:3px solid var(--marca-primaria-viva);padding:7px 10px}
.idv-frame .f-topo img{height:24px;max-width:126px}
.idv-frame .f-topo .n{color:var(--marca-primaria-texto)}
.idv-frame .f-home{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.idv-frame .f-saud{font-size:12px;font-weight:720}
.idv-frame .f-saud i{display:block;font-style:normal;font-size:8px;letter-spacing:.14em;font-weight:800;color:var(--marca-primaria-texto);margin-bottom:1px}
.idv-frame .f-saud small{display:block;font-size:10px;font-weight:500;color:var(--tinta2)}
.idv-frame .f-saud small b{color:var(--marca-primaria-texto)}
.idv-frame .f-mod{background:var(--fundo);border:1px solid var(--linha);border-top:3px solid var(--marca-primaria);border-radius:8px;padding:7px 9px;font-size:10.5px;display:flex;gap:8px;align-items:center;color:var(--tinta2)}
.idv-frame .f-mod .ic{width:20px;height:20px;border-radius:6px;background:var(--marca-primaria-suave);color:var(--marca-primaria-texto);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;flex:0 0 20px}
.idv-frame .f-mod b{display:block;font-size:11.5px;color:var(--tinta)}
.idv-frame .f-mod .ir{margin-left:auto;color:var(--marca-primaria-texto);font-weight:650;font-size:10.5px}
.idv-frame .f-cont{display:inline-block;background:var(--ambar-f);color:var(--ambar-t);border:1px solid var(--ambar-b);border-radius:8px;padding:0 5px;font-size:9.5px;font-weight:700;margin-left:4px}
.idv-frame .f-login.com-fundo{background-image:var(--fundo-login)}
.idv-frame .f-login .cx{padding:0 14px 12px;overflow:hidden}
.idv-frame .f-login .cx::before{content:"";display:block;height:3px;margin:0 -14px 10px;background:linear-gradient(90deg,var(--marca-primaria-viva) 0 82%,var(--marca-destaque-viva) 82%)}
.idv-frame .f-login .cx img{height:34px;max-width:170px}
.idv-frame .f-rel .barra-rel{height:6px;background:linear-gradient(90deg,var(--marca-primaria-viva) 0 86%,var(--marca-destaque-viva) 86%)}
.idv-frame .f-rodape b{color:var(--marca-primaria-texto)}
/* ---- celular: ícone ou logo baixa; nunca a logo horizontal espremida ---- */
@media (max-width:600px){
  .marca img{height:28px;max-width:132px}
  .marca img.forma-quadrada,.marca img.forma-vertical{height:32px}
  .marca img.icone{height:28px;width:28px}
  .marca img.placa{height:32px;padding:2px 6px}
  .marca #marcaNome{font-size:14px;max-width:150px}
  .login-cartao .login-logo{max-height:64px;max-width:240px}
  .idv-logo .quadro,.form label.idv-zona .idv-logo .quadro{width:150px;height:60px}
}
/* No celular e no tablet o cabeçalho quebra linha e cresce — a altura fixa de 50 px é só do desktop. */
@media (max-width:900px){.topo .linha{height:auto}}
/* Wordmark compacto (proporção entre 1,8 e 3,2): um pouco mais alto para ganhar largura, ainda dentro do cabeçalho. */
.marca img.compacta{height:52px}
.marca img.compacta.placa{height:56px}
@media (max-width:600px){.marca img.compacta{height:32px}.marca img.compacta.placa{height:36px}}
.login-cartao .login-logo.compacta{max-height:96px}
/* Indicadores: quando a última tira quebra sozinha para a linha de baixo, o espaço ao lado fica da cor do fundo, não cinza. */
.nums{background:var(--fundo)}
.num{box-shadow:0 0 0 1px var(--linha)}
/* Prévia: símbolo (logo quadrada/vertical) ganha o nome ao lado, como no cabeçalho real; no login, um pouco mais alto. */
.idv-frame .f-topo img.simbolo{height:26px;max-width:40px}
.idv-frame .f-login .cx img.simbolo{height:46px;max-width:80px}
.idv-frame .f-login .cx .n{margin-top:4px}
/* Quadro escuro da central: a logo original (quando não há versão escura) aparece na placa, como no CRM. */
.idv-logo .quadro.escuro img.placa{background:#fff;border-radius:6px;padding:4px 8px;max-height:70%}

/* =====================================================================
   DESIGN SYSTEM APROVADO (09/09/2026)
   Proposta visual CRM VDC — artboards 1a (Home), 2a–2e (telas complexas)
   e 2f (a síntese: "Uma biblioteca, quatro telas").

   O QUE ESTA SEÇÃO FAZ. Ela troca a LINGUAGEM visual do sistema inteiro,
   sem trocar o layout de nenhuma tela: cantos retos no lugar dos
   arredondados, linhas de 2 px e 1 px no lugar das sombras, faixa
   institucional no lugar do cabeçalho branco, hierarquia tipográfica
   declarada (kicker, título 30 px, seção em caixa-alta) e a régua de
   espaço em base 4. Como quase todo componente já usava os TOKENS, mudar
   os tokens muda o sistema — Abertura e Comercial recebem a linguagem
   sem uma linha de JavaScript alterada.

   A REGRA DE COR DO DESIGN (2f), traduzida para os tokens da marca:
     ~83% neutro   fundo, superfície, tinta
     ~13% principal  --marca-primaria*   faixa, navegação ativa, CTA,
                     links, seleção, foco, filtro ativo, VGV
      ~4% destaque   --marca-destaque*   filete da faixa, pendência,
                     atenção, rascunho. NUNCA em botão.
   Sucesso/erro continuam SEMÂNTICOS (--verde/--vermelho): a cor da
   empresa não substitui um erro. NENHUMA cor de empresa é escrita aqui —
   só tokens derivados por cores.js. A mesma folha serve uma empresa
   verde-e-laranja e uma empresa roxa-e-ciano.
   ===================================================================== */
:root{
  /* GEOMETRIA: cantos retos. O que separa é LINHA — e, nos cards
     independentes, a sombra discreta que o artboard 1a usa (0 1px 2px). */
  --raio:0; --raio-g:0;

  /* A RÉGUA (2f): base 4 px — 8 · 12 · 16 · 24 · 28 · 48 (margem da página). */
  --esp-1:4px; --esp-2:8px; --esp-3:12px; --esp-4:16px; --esp-5:24px;
  --pad-pagina:28px 48px 44px;
  --pad-cartao:18px 22px;
  --gap-secao:24px;
  --pad-celula:11px 12px;
  --altura-input:36px;
  --altura-botao:38px;
  --margem-shell:48px;

  /* TIPOGRAFIA (2f). A família do design é a Archivo. Ela entra como
     PRIMEIRA candidata: no dia em que a fonte for hospedada no projeto,
     o sistema inteiro passa a usá-la sem editar uma linha. Enquanto não
     houver, vale a pilha do sistema — a ESCALA e os PESOS abaixo, que é
     onde vive a maior parte do caráter, já valem hoje. */
  --fonte-familia:"Archivo","Archivo Variable",-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,sans-serif;
  --fonte:13.5px; --fonte-p:12px; --fonte-pp:11px;
  --peso-forte:800;

  /* A LINHA QUE FECHA UM GRUPO (2 px). No claro é a tinta; no escuro,
     a tinta clara viraria um facho — vale a linha forte do tema. */
  --forte:#14201a;

  /* A FAIXA INSTITUCIONAL. Derivada da cor principal da empresa, nunca
     escrita: `profunda` é o mesmo matiz, escuro e pouco saturado. Ela é
     escura NOS DOIS TEMAS — por isso o texto sobre ela tem token próprio,
     e não segue o tema da página. */
  --faixa:var(--marca-primaria-profunda);
  --sobre-faixa:#ffffff;
  --faixa-mute:rgba(255,255,255,.72);
  --faixa-linha:rgba(255,255,255,.28);
}
/* A RÉGUA DE 2 px que fecha um grupo é o `--strong` do design: no claro é a
   própria tinta; no escuro é um tom de linha mais forte (nunca a tinta clara,
   que viraria um facho de luz). */
[data-tema="escuro"]{ --forte:#3b4c43 }
[data-tema="claro"]{ --forte:#14201a }

body{font-family:var(--fonte-familia)}

/* ---------------------------------------------------------------------
   1 · NAVEGAÇÃO EM 4 NÍVEIS (2f)
   Global: faixa 64 px, marca + módulos, aba ativa com filete de destaque.
   Módulo: sub-nav 40 px em superfície, ativo sublinhado, trilha à direita.
   Contexto: cabeçalho da página (kicker, título 30 px, meta, ações).
   Tabs: sublinhado sobre linha de 2 px, contador em destaque na pendência.
   --------------------------------------------------------------------- */
header.topo{
  background:var(--faixa); color:var(--sobre-faixa);
  border-bottom:3px solid var(--marca-destaque-viva);
  box-shadow:none;
}
.topo .linha{
  max-width:var(--largura-max);margin:0 auto;padding:0 var(--margem-shell);
  height:64px;gap:28px
}
/* A marca sobre a faixa: texto claro, não a cor da empresa (que sumiria). */
.marca,.marca:hover{color:var(--sobre-faixa)}
.marca #marcaNome{color:var(--sobre-faixa);font-weight:var(--peso-forte);font-size:15px;letter-spacing:.02em}
.marca #marcaAmbiente{color:var(--faixa-mute);font-weight:500}
.marca img.placa{background:#fff}

/* Módulos: altura cheia da faixa, ativo em branco forte com o filete de
   destaque colado na borda inferior (o -3px sobrepõe o filete da faixa). */
.modulos{gap:4px;height:64px}
.modulos a{
  display:flex;align-items:center;height:64px;padding:0 16px;border-radius:0;
  font-size:14px;font-weight:600;color:var(--faixa-mute);
  border-bottom:3px solid transparent;margin-bottom:-3px
}
.modulos a:hover{background:rgba(255,255,255,.08);color:var(--sobre-faixa)}
.modulos a.on,.modulos a.on:hover{
  background:none;color:var(--sobre-faixa);font-weight:var(--peso-forte);
  border-bottom-color:var(--marca-destaque-viva);box-shadow:none
}
.topo .fim{gap:16px}
/* Quem está logado, o avatar com as iniciais e o "Sair": tudo sobre a faixa. */
.quem{color:var(--faixa-mute);font-size:11px;letter-spacing:.04em;max-width:230px}
.quem b{color:var(--sobre-faixa);font-size:13px;font-weight:var(--peso-forte);letter-spacing:0}
.avatar{
  width:34px;height:34px;flex:0 0 34px;display:grid;place-items:center;
  background:var(--marca-primaria);color:var(--marca-sobre-primaria);
  border:1px solid var(--faixa-linha);font-weight:var(--peso-forte);font-size:13px;
  letter-spacing:.02em;user-select:none
}
.avatar:empty{display:none}
.topo .fim .btn,.topo .fim .btn:hover:not(:disabled){
  background:none;border:1px solid var(--faixa-linha);color:var(--sobre-faixa);
  box-shadow:none;font-weight:600
}
.topo .fim .btn:hover:not(:disabled){background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.5)}
.topo .fim .btn:focus-visible{outline:2px solid #fff;outline-offset:2px}

/* O SELO DO AMBIENTE continua sendo da PLATAFORMA, não da marca: âmbar
   sobre a faixa, com a borda que o design pede. Segurança operacional não
   muda de cor porque a empresa mudou de cor. */
.selo-homolog{border-radius:0;font-size:10.5px;letter-spacing:.12em;padding:5px 10px}

/* Nível 2 — a barra do módulo: sub-nav à esquerda, trilha à direita. */
.barra-modulo{
  background:var(--fundo);border-bottom:2px solid var(--linha)
}
.barra-modulo .dentro{
  max-width:var(--largura-max);margin:0 auto;padding:0 var(--margem-shell);
  display:flex;align-items:center;gap:24px;min-height:40px
}
.submenu{max-width:none;margin:0;padding:0;gap:28px;height:40px;align-items:center}
.submenu a{
  display:flex;align-items:center;height:40px;padding:0;border-radius:0;
  font-size:13px;font-weight:600;color:var(--tinta2);
  border-bottom:2px solid transparent;margin-bottom:-2px
}
.submenu a:hover{background:none;color:var(--tinta)}
.submenu a.on{
  color:var(--marca-primaria-texto);font-weight:var(--peso-forte);
  border-bottom-color:var(--marca-primaria);background:none
}
.trilha{
  max-width:none;margin:0 0 0 auto;padding:0;font-size:12px;color:var(--tinta3);
  display:flex;align-items:center;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.trilha i{margin:0}
.trilha span:last-child{color:var(--tinta);font-weight:600}

main{max-width:var(--largura-max);margin:0 auto;padding:var(--pad-pagina)}

/* Nível 3 — o CABEÇALHO DA PÁGINA: kicker na cor principal, título de
   30 px, meta, ações à direita, e a linha de 2 px que fecha o contexto. */
.cabpag{
  align-items:flex-end;gap:16px;margin:0 0 var(--esp-5);
  padding-bottom:18px;border-bottom:2px solid var(--forte)
}
.cabpag .cod{
  font-size:11px;letter-spacing:.14em;font-weight:var(--peso-forte);
  color:var(--marca-primaria-texto);margin-bottom:6px;text-transform:uppercase
}
.cabpag h1{font-size:30px;font-weight:var(--peso-forte);letter-spacing:-.02em;line-height:1.05}
.cabpag h2{font-size:20px;font-weight:var(--peso-forte);letter-spacing:-.015em}
.cabpag .sub{font-size:13.5px;color:var(--tinta2);margin-top:6px}
.acoes{gap:8px}

/* ---------------------------------------------------------------------
   2 · CONTAINERS (2f)
   Seção: título em caixa-alta 12 px + superfície com linha de 2 px no
   topo. Sem sombra. Card só para bloco independente, com filete de 3 px.
   --------------------------------------------------------------------- */
/* A CAIXA PRECISA TER ONDE COMEÇAR E ONDE TERMINAR. Antes só havia a régua
   de 2 px no topo: os outros três lados dissolviam no fundo da página e não
   se percebia o contorno da seção. Agora: contorno de 1 px nos quatro lados
   e a régua de 2 px marcando o topo. Sem sombra — seção não flutua. */
.cartao{
  background:var(--fundo);border:1px solid var(--linha);border-top:2px solid var(--forte);
  border-radius:0;padding:var(--pad-cartao);margin-bottom:var(--gap-secao);box-shadow:none
}
.cartao h2{
  font-size:12px;letter-spacing:.14em;font-weight:var(--peso-forte);
  text-transform:uppercase;color:var(--tinta);margin:0 0 12px;gap:10px
}
.cartao h2 .cont{
  font-size:12px;font-weight:500;color:var(--tinta3);letter-spacing:0;text-transform:none
}
.nota{font-size:11.5px;color:var(--tinta3)}
details.secao{
  background:var(--fundo);border:1px solid var(--linha);border-top:2px solid var(--forte);
  border-radius:0;margin-bottom:var(--gap-secao);box-shadow:none
}
details.secao > summary{
  font-size:12px;letter-spacing:.14em;font-weight:var(--peso-forte);
  text-transform:uppercase;padding:14px 22px 12px
}
details.secao > summary .cont{font-size:12px;font-weight:500;letter-spacing:0;text-transform:none}
details.secao > summary:hover{background:var(--marca-primaria-sutil)}
details.secao > .corpo{padding:0 22px 16px}
details.secao > .corpo > .rol{margin:0 -22px;padding:0 22px}

/* ---------------------------------------------------------------------
   3 · MÉTRICAS (2f): faixa em grade com divisórias de 1 px; a célula em
   destaque recebe a tinta da cor principal.
   --------------------------------------------------------------------- */
.nums{
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0;
  background:var(--fundo);border:1px solid var(--linha);border-top:2px solid var(--forte);
  border-radius:0;box-shadow:none
}
.num{
  background:var(--fundo);padding:16px 18px;box-shadow:none;
  border-right:1px solid var(--linha)
}
.num:last-child{border-right:0}
.num .v{font-size:26px;font-weight:var(--peso-forte);letter-spacing:-.02em;line-height:1.05}
.num .r{font-size:12px;font-weight:600;color:var(--tinta);margin-top:4px}
.num .d{font-size:11.5px;color:var(--tinta3);margin-top:2px}
/* A célula que o design tinge: o VGV, o número que responde "quanto vale". */
.num.destaque{background:var(--marca-primaria-suave)}
.num.destaque .v{color:var(--marca-primaria-texto)}
.nums + .nums{margin-top:var(--gap-secao)}

/* ---------------------------------------------------------------------
   4 · TABELAS (2f): sem bordas verticais, cabeçalho 11 px caixa-alta,
   linhas de 1 px, números à direita, status por ponto + texto, linha
   selecionada na tinta da marca.
   --------------------------------------------------------------------- */
table{font-size:13px}
th{
  font-size:11px;letter-spacing:.1em;font-weight:var(--peso-forte);
  color:var(--tinta3);padding:10px 12px;background:none;
  border-bottom:1px solid var(--linha)
}
td{padding:var(--pad-celula);border-bottom:1px solid var(--divisor)}
table.num-dir td:nth-child(n+3),table.num-dir th:nth-child(n+3){font-variant-numeric:tabular-nums}
tbody tr.sel td{background:var(--marca-primaria-suave)}
/* O ponto de status: a cor diz o estado, o texto diz o nome. Nunca só cor. */
.pt-status{width:8px;height:8px;flex:0 0 8px;display:inline-block;border-radius:0}

/* ---------------------------------------------------------------------
   5 · BOTÕES (2f): um primário por tela. Altura 38 px; 30 px compacto em
   linha de tabela. Cantos retos, sem gradiente.
   --------------------------------------------------------------------- */
.btn{
  border-radius:0;min-height:var(--altura-botao);padding:9px 16px;
  font-size:13.5px;font-weight:var(--peso-forte);
  border:1px solid var(--forte);background:none;color:var(--tinta);box-shadow:none
}
.btn:hover:not(:disabled){background:var(--fundo3);border-color:var(--forte)}
.btn.p{
  background:var(--marca-primaria);border-color:var(--marca-primaria);
  color:var(--marca-sobre-primaria);box-shadow:none;padding:10px 16px
}
.btn.p:hover:not(:disabled){background:var(--marca-primaria-hover);border-color:var(--marca-primaria-hover)}
.btn.v{background:var(--verde);border-color:var(--verde);color:#fff;box-shadow:none}
/* Destrutivo: contorno vermelho, como o design pede — o vermelho continua
   sendo o vermelho semântico, nunca a cor da empresa. */
.btn.d,.btn.d:hover{background:none;border-color:var(--vermelho);color:var(--vermelho)}
.btn.d:hover:not(:disabled){background:var(--vermelho-f)}
.btn.ac{box-shadow:none}
.btn.s{min-height:30px;padding:5px 12px;font-size:12px}
.btn:disabled{opacity:.45;box-shadow:none}
.btn:not(.p):not(.v):not(.d):not(.ac):hover:not(:disabled){
  border-color:var(--marca-primaria);background:var(--marca-primaria-sutil);color:var(--marca-primaria-texto)
}

/* ---------------------------------------------------------------------
   6 · FORMULÁRIOS E FILTROS (2f): controles de 36 px, cantos retos,
   campo com fundo levemente tingido, chip ativo na tinta da marca.
   --------------------------------------------------------------------- */
.form label{font-size:12px;font-weight:600;color:var(--tinta2);gap:5px}
.form input,.form select,.form textarea,
.filtros input,.filtros select,.busca-cpf input,.receb input,.receb select{
  border-radius:0;border:1px solid var(--linha2);min-height:var(--altura-input);
  padding:0 12px;font-size:13px;background:var(--fundo2);color:var(--tinta)
}
.form textarea{padding:8px 12px;min-height:72px}
.filtros{gap:8px;margin-bottom:var(--esp-4)}
.filtros input,.filtros select{min-height:var(--altura-input)}
.chip{
  border-radius:0;min-height:var(--altura-input);padding:0 12px;
  font-size:12.5px;font-weight:600;border:1px solid var(--linha2);color:var(--tinta)
}
.chip.on,.chip.on:hover{
  background:var(--marca-primaria-suave);border-color:var(--marca-primaria);
  color:var(--marca-primaria-texto);font-weight:var(--peso-forte);box-shadow:none
}
.et{border-radius:0;font-size:11.5px;font-weight:var(--peso-forte);padding:3px 9px;border:0}
.et-v{background:var(--verde-f);color:var(--verde-t)}
.et-a{background:var(--ambar-f);color:var(--ambar-t)}
.et-r{background:var(--vermelho-f);color:var(--vermelho-t)}
.et-c{background:var(--fundo3);color:var(--tinta2);border:1px solid var(--linha)}
/* "Vendida · encerrado": o estado fechado é tinta sólida, não cor. */
.et-f{background:var(--forte);color:var(--fundo2)}
.passo{border-radius:0}
.passo span{border-radius:0}
.barra,.barra i{border-radius:0}

/* ---------------------------------------------------------------------
   7 · ESTADOS E AVISOS. Cantos retos e a linha de 3 px à esquerda que o
   design usa para "próxima ação" e para atenção.
   --------------------------------------------------------------------- */
.aviso{border-radius:0;border-left-width:3px;padding:10px 14px;font-size:12.5px}
.vazio{border-radius:0;padding:12px 14px}
.faixa{border-radius:0;border-left-width:3px}
.proxima{border-radius:0;background:var(--marca-primaria-suave);border:0;border-left:4px solid var(--marca-primaria)}
.proxima .rot{letter-spacing:.14em;font-size:10.5px;color:var(--marca-primaria-texto)}
.bloco-erro{border-radius:0}
.tarefa{
  border-radius:0;box-shadow:none;background:var(--fundo);
  border:1px solid var(--linha);border-left-width:3px
}
.tarefa:hover{box-shadow:none;border-color:var(--linha2);border-left-color:inherit}
.tarefa.ok{background:var(--fundo);border-left-color:var(--verde)}
.tarefa.pend{background:var(--fundo);border-left-color:var(--ambar-viva)}
.tarefa.ini{background:var(--fundo);border-left-color:var(--marca-primaria)}
.tarefa.ok .tg,.tarefa.pend .tg{border-radius:0}
.tarefa .tn{letter-spacing:.1em}
.rg-t{letter-spacing:.14em;font-size:11px;color:var(--tinta)}
.rg-sec{letter-spacing:.14em;color:var(--tinta);border-bottom:2px solid var(--linha)}
.rg-sec.paralelo{color:var(--tinta3)}
.esq{border-radius:0}
.selbar,.toast{border-radius:0}
.dlg{border-radius:0;box-shadow:0 18px 50px rgba(20,32,26,.28)}
.dlg .cb h2{font-size:15px;font-weight:var(--peso-forte);letter-spacing:0;text-transform:none}
.dlg .cp .cartao{border-top-width:2px;padding:14px 16px;margin-bottom:var(--esp-4)}
.dlg .cp .rol{margin:0 -16px;padding:0 16px}
.card{border-radius:0;box-shadow:none;border:1px solid var(--linha);border-top:2px solid var(--forte);padding:14px 16px}
.card:hover{box-shadow:none;background:var(--marca-primaria-sutil);border-color:var(--linha2);border-top-color:var(--marca-primaria)}
.card h3{font-size:15px;font-weight:var(--peso-forte);letter-spacing:-.01em}
.grade{gap:var(--esp-4)}
.sucesso-icone{border-radius:0}
.sucesso-id b{border-radius:0}
.ficha{border-radius:0;background:var(--fundo2)}
.ficha dt{letter-spacing:.1em}
.cadastro,.neg-imovel,.resumo-bloco{border-radius:0;box-shadow:none;border:1px solid var(--linha);border-top:2px solid var(--forte)}
.confirma{border-radius:0}
.jornada h2{font-size:20px;font-weight:var(--peso-forte);letter-spacing:-.015em}

/* ---------------------------------------------------------------------
   8 · A HOME (artboard 1a). A grade do design: conteúdo à esquerda,
   coluna de atenção e atividade à direita.
   --------------------------------------------------------------------- */
.home-cab{
  align-items:flex-end;gap:16px;margin:0 0 var(--esp-5);padding:0 0 20px;
  border-bottom:2px solid var(--forte)
}
.home-cab .cod{
  font-size:11px;letter-spacing:.14em;font-weight:var(--peso-forte);
  color:var(--marca-primaria-texto);margin-bottom:6px;text-transform:uppercase
}
.home-cab h1{font-size:30px;font-weight:var(--peso-forte);letter-spacing:-.02em;line-height:1.05}
.home-cab .org{font-size:13.5px;color:var(--tinta2);margin-top:6px}
.home-cab .org b{color:var(--tinta)}
.home-col{gap:var(--gap-secao)}
/* Card de módulo: bloco independente — filete de 3 px na cor principal no
   TOPO, como o design (antes era uma barra à esquerda). Sobre o fundo da
   página ele precisa da borda de 1 px também: só o filete deixaria um card
   branco invisível dentro de uma superfície branca. */
.home-mod{
  border-radius:0;border:1px solid var(--linha);border-top:3px solid var(--marca-primaria);
  padding:18px 20px 16px;gap:10px;box-shadow:var(--sombra);min-height:0
}
.home-mod:hover{
  background:var(--marca-primaria-sutil);border-color:var(--marca-primaria-borda);
  border-top-color:var(--marca-primaria);box-shadow:none
}
.home-mod .t{font-size:18px;font-weight:var(--peso-forte);letter-spacing:-.01em;gap:10px}
.home-mod .t .ic{width:32px;height:32px;flex:0 0 32px;border-radius:0;background:var(--marca-primaria-suave)}
.home-mod .d{font-size:13px;color:var(--tinta2)}
.home-mod .n{gap:22px;border-top:1px solid var(--divisor);padding-top:11px;margin-top:2px;font-size:11.5px}
.home-mod .n b{font-size:20px;font-weight:var(--peso-forte);letter-spacing:-.02em;display:block;color:var(--tinta)}
.home-mod .n span{display:flex;flex-direction:column}
.home-mod .ir{font-size:13px;font-weight:var(--peso-forte);color:var(--marca-primaria-texto)}
.home-mod.breve{border-top-color:var(--linha2)}
.home-atalhos{gap:8px}
.home-atalhos .chip{font-size:13px;font-weight:600}
/* "Precisa da sua atenção" é o bloco de DESTAQUE da Home: filete de 3 px
   na cor de destaque, e o contador na mesma família. */
.home-atencao{border-top:3px solid var(--ambar-viva)}
.home-atencao h2 .cont{border-radius:0;font-size:11px;padding:2px 8px}
.home-alerta{gap:12px;padding:12px 0;border-bottom:1px solid var(--divisor);align-items:flex-start}
.home-alerta .pt{border-radius:0;background:var(--ambar-viva);margin-top:5px}
.home-alerta.grave .pt{background:var(--vermelho)}
.home-alerta .tx{font-size:14px;font-weight:var(--peso-forte);line-height:1.3}
.home-alerta .tx small{font-weight:400;font-size:12.5px;color:var(--tinta2);margin-top:4px}
.home-ativ li{padding:9px 0;border-bottom:1px solid var(--divisor);font-size:12.5px}
.home-ativ time{flex:0 0 62px;font-size:11.5px}
.home-ok .pt{border-radius:0}
.home-minhas li{padding:9px 0;border-bottom:1px solid var(--divisor)}
.rodape-org{
  max-width:var(--largura-max);margin:var(--esp-5) auto 0;padding:18px 0 0;
  border-top:2px solid var(--forte);font-size:12px;gap:8px 24px
}
.rodape-org b{font-weight:var(--peso-forte);letter-spacing:.04em}

/* ---------------------------------------------------------------------
   9 · CENTRAL DE IDENTIDADE (artboard 2c) e LOGIN.
   --------------------------------------------------------------------- */
.idv-grid{grid-template-columns:minmax(0,1fr) minmax(320px,.9fr);gap:28px}
.idv-principio{border-radius:0;background:var(--marca-primaria-suave);color:var(--tinta);padding:12px 16px;border-left:4px solid var(--marca-primaria)}
.idv-logo .quadro{border-radius:0}
.idv-cor input[type=color]{border-radius:0;height:44px;width:56px}
.idv-cor input[type=text]{border-radius:0}
.idv-amostra span,.idv-comparar .par span{border-radius:0}
.idv-aparencia label{border-radius:0;min-height:var(--altura-input);padding:0 16px;font-size:13px}
.idv-aparencia label.on{background:var(--marca-primaria-suave);border-color:var(--marca-primaria);color:var(--marca-primaria-texto);font-weight:var(--peso-forte)}
.idv-app{border-radius:0;border:1px solid var(--linha);border-top:2px solid var(--linha2);background:var(--fundo2);padding:10px 12px}
.idv-upload,.idv-zona,.idv-ajuste{border-radius:0}
.idv-frame{border-radius:0}
.idv-frame .f-topo{border-top:0;background:var(--faixa);border-bottom:3px solid var(--marca-destaque-viva);color:var(--sobre-faixa)}
.idv-frame .f-topo .n{color:var(--sobre-faixa);font-weight:var(--peso-forte)}
.idv-frame .f-topo .m span{color:var(--faixa-mute);border-radius:0}
.idv-frame .f-topo .m span.on{background:none;color:var(--sobre-faixa);font-weight:var(--peso-forte);border-bottom:2px solid var(--marca-destaque-viva)}
.idv-frame .f-selo{border-radius:0}
.idv-frame .f-mod{border-radius:0;border:0;border-top:3px solid var(--marca-primaria)}
.idv-frame .f-card{border-radius:0;border:0;border-top:2px solid var(--forte);border-left:0}
.idv-frame .f-btn,.idv-frame .f-et,.idv-frame .f-cont,.idv-frame .f-rel,.idv-frame .f-form .cx-in{border-radius:0}
details.idv-avancado{border-radius:0;border:0;border-top:2px solid var(--linha)}
.login-cartao{border-radius:0}
.login-cartao .login-nome{font-size:26px;font-weight:var(--peso-forte);letter-spacing:-.02em}
.login-cartao .login-empresa{font-weight:var(--peso-forte)}
.login-cartao .btn.p{min-height:44px;font-size:14px}
.login-personas .btn{text-align:left}

/* ---------------------------------------------------------------------
   10 · RESPONSIVO. A faixa e a barra do módulo encolhem a margem antes de
   quebrar; no celular a faixa vira 56 px, os módulos rolam e a trilha sai
   (o título da página já diz onde a pessoa está).
   --------------------------------------------------------------------- */
@media (max-width:1200px){
  :root{--margem-shell:28px}
  main{padding:24px 28px 40px}
  .home-grid{grid-template-columns:minmax(0,1fr) 360px}
}
@media (max-width:1000px){
  .home-grid{grid-template-columns:1fr}
  .idv-grid{grid-template-columns:1fr}
}
@media (max-width:900px){
  :root{--margem-shell:16px}
  main{padding:20px 16px 70px}
  .topo .linha{height:auto;padding:10px 16px;gap:10px 16px}
  .modulos,.modulos a{height:44px}
  .modulos a{margin-bottom:0;border-bottom-width:2px}
  .barra-modulo .dentro{padding:0 16px;gap:12px;flex-wrap:wrap}
  .cabpag,.home-cab{align-items:flex-start}
  .cabpag h1,.home-cab h1{font-size:24px}
  .num{border-right:0;border-bottom:1px solid var(--linha)}
  .num:last-child{border-bottom:0}
}
@media (max-width:600px){
  .topo .linha{height:56px;flex-wrap:nowrap;padding:0 16px;gap:12px}
  .marca #marcaNome{font-size:13px;max-width:132px}
  .quem{display:none}
  .avatar{width:28px;height:28px;flex:0 0 28px;font-size:11px}
  .modulos{order:3;flex-basis:100%;height:auto}
  .trilha{display:none}
  .cabpag h1,.home-cab h1{font-size:22px}
  .num .v{font-size:22px}
  .home-mod .t{font-size:16px}
  .login-cartao .login-nome{font-size:22px}
}
/* Na faixa, o celular precisa de duas linhas: a marca e o que é de ação em
   cima, os módulos rolando embaixo. */
@media (max-width:600px){
  header.topo .linha{flex-wrap:wrap;height:auto;padding:8px 16px}
  .modulos{overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
  .modulos::-webkit-scrollbar{display:none}
  .modulos a{height:38px;padding:0 12px;font-size:13px}
}
/* A barra do módulo desaparece quando não há nem submenu nem trilha (a tela
   de login, por exemplo). Declarativo de propósito: a trilha é escrita pela
   TELA, depois do cabeçalho — uma verificação em JavaScript no cabeçalho
   olharia a trilha da página anterior. */
.barra-modulo:has(#submenu:empty):has(#trilha:empty){display:none}
/* NO CELULAR A TRILHA JÁ NÃO APARECE (regra de 768px mais abaixo), então o
   submenu vazio deixa a barra inteira vazia — uma faixa de 42 px sem nada
   dentro. Apareceu em 10/09/2026, quando o submenu passou a se calar dentro
   de um loteamento porque a barra de contexto assumiu a navegação. É a mesma
   regra de cima, aplicada onde a trilha não conta. */
@media (max-width:768px){
  .barra-modulo:has(#submenu:empty){display:none}
}


/* =====================================================================
   AJUSTES DE PRECISÃO contra o design aprovado (mesma rodada de 09/09/2026)
   Conferidos com captura lado a lado do artboard 1a.
   ===================================================================== */
/* O FILETE DE DESTAQUE fica sob a FAIXA, não sob o cabeçalho inteiro. Em
   `header.topo` ele descia para baixo da barra do módulo — a faixa ficava
   sem o filete e aparecia uma segunda linha laranja fora de lugar.
   67 px = 64 de faixa + 3 de filete (box-sizing:border-box). */
header.topo{border-bottom:0}
.topo .linha{height:67px;border-bottom:3px solid var(--marca-destaque-viva)}
@media (max-width:900px){.topo .linha{height:auto}}

.home-mod .n{flex-wrap:nowrap}
@media (max-width:1000px){.home-mod .n{flex-wrap:wrap}}

/* A COLUNA DA ESQUERDA da Home não tem superfície: o título da seção fica
   sobre o fundo da página e quem carrega a superfície é o conteúdo (a faixa
   de métricas, os cards de módulo). É assim no artboard — e sem isto o card
   de módulo, branco sobre branco, desaparecia. */
.home-grid > .home-col:first-child > .cartao,
.home-grid > .home-col:first-child > details.secao{
  background:none;border:0;padding:0;box-shadow:none
}
.home-grid > .home-col:first-child > .cartao > h2{margin:0 0 12px}

/* MÉTRICAS: o artboard dá 1,4 de largura à célula em destaque (o VGV, que é
   o número mais comprido da tela). Em grade de colunas iguais "R$ 14.522.360,00"
   era cortado. Flex reproduz `repeat(4,1fr) 1.4fr` e ainda quebra sozinho no
   celular. */
.nums{display:flex;flex-wrap:wrap}
.num{flex:1 1 160px;min-width:0}
.num.destaque{flex:1.4 1 210px}
.num .v{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------------------------------------------------------------------
   12 · ABAS — o 4º nível de navegação (2f)
   "Sublinhado na cor principal sobre linha cinza de 2 px; contadores em
   badge de destaque quando há pendência." Antes as abas eram chips (a
   mesma forma de um filtro), e a pessoa não distinguia "onde estou" de
   "o que estou filtrando" — dois níveis de navegação com a mesma cara.
   --------------------------------------------------------------------- */
.abas{
  display:flex;gap:4px;align-items:stretch;flex-wrap:wrap;
  border-bottom:2px solid var(--linha);margin:0 0 var(--esp-5);min-height:44px
}
.abas .aba{
  display:inline-flex;align-items:center;gap:8px;padding:0 14px;min-height:42px;
  background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-2px;
  font-size:13.5px;font-weight:600;color:var(--tinta2);cursor:pointer;
  text-decoration:none;white-space:nowrap;font-family:inherit
}
.abas .aba:hover{color:var(--tinta);background:var(--marca-primaria-sutil);text-decoration:none}
.abas .aba.on,.abas .aba.on:hover{
  color:var(--marca-primaria-texto);font-weight:var(--peso-forte);
  border-bottom-color:var(--marca-primaria);background:none
}
.abas .aba:focus-visible{outline:2px solid var(--marca-foco);outline-offset:-2px}
/* O contador de PENDÊNCIA na aba usa a cor semântica de atenção (âmbar da
   plataforma), não a cor de destaque da empresa: pendência é estado, não
   marca. Ver a regra fechada em "MARCA × SEMÂNTICA", no fim deste arquivo. */
.abas .aba .cont{
  background:var(--ambar-f);color:var(--ambar-t);
  font-size:10.5px;font-weight:var(--peso-forte);padding:1px 6px
}
/* Dentro de um contexto (um empreendimento), o cabeçalho FORTE é o do
   contexto; o título da tela vem depois das abas e não repete a régua de
   2 px — senão a página ganha dois cabeçalhos disputando a atenção. */
.abas ~ .cabpag{border-bottom:0;padding-bottom:0;margin-bottom:var(--esp-4)}
.abas ~ .cabpag h1{font-size:20px;letter-spacing:-.015em}
@media (max-width:600px){
  .abas{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}
  .abas::-webkit-scrollbar{display:none}
  .abas .aba{padding:0 12px;font-size:13px}
}

/* ---------------------------------------------------------------------
   13 · DOIS ACHADOS DA CONFERÊNCIA TELA POR TELA (09/09/2026)
   --------------------------------------------------------------------- */
/* (a) TÍTULO DE SEÇÃO com texto acessório. Várias telas põem uma frase
   explicativa dentro do próprio <h2> ("Performance no período <span>venda
   com 2 corretores conta para os dois…</span>"). Em caixa-alta com 0,14 em
   de entreletra, a frase virava um bloco ilegível. O TÍTULO é caixa-alta;
   o que vem em <span> dentro dele é texto normal. */
.cartao h2 > span,details.secao > summary > span{text-transform:none;letter-spacing:0;font-weight:500}
.cartao h2 > span.dir,details.secao > summary > span.dir{font-weight:inherit}

/* (b) NÚMERO GRANDE EM CÉLULA ESTREITA. O design dá 26 px à métrica com a
   célula larga do artboard. Em cartão de um terço de tela, "R$ 80.388,00"
   em 26 px não cabe e era cortado com reticências — um valor cortado é pior
   que um valor menor. Cada tira é o próprio contêiner de consulta: quando
   ela é estreita, o número desce de degrau. A régua de 26 px continua
   valendo onde a faixa é larga (a Home, o estoque). */
.num{container-type:inline-size}
@container (max-width:215px){ .num .v{font-size:22px} }
@container (max-width:170px){ .num .v{font-size:19px} }

/* ---------------------------------------------------------------------
   14 · A PÁGINA DE LOGIN
   O cartão de login sangra para fora da margem de `main` com margem
   negativa. Com a margem da página em 48 px (era 20), o -20 antigo deixava
   a página de login ENCAIXOTADA: aparecia um retângulo de fundo tingido
   com bordas retas no canto superior esquerdo. A sangria passa a ser
   derivada dos MESMOS tokens da margem — muda a margem, a sangria segue.

   E o fundo fica CHAPADO: o design aprovado é explícito ("sem gradientes").
   Os dois degradês radiais da rodada anterior saem; a presença da marca no
   login continua na faixa, na logo e no filete de duas cores do cartão.
   --------------------------------------------------------------------- */
:root{
  --pad-pagina-t:28px; --pad-pagina-x:48px; --pad-pagina-b:44px;
  --pad-pagina:var(--pad-pagina-t) var(--pad-pagina-x) var(--pad-pagina-b);
}
.login-pagina{
  margin:calc(var(--pad-pagina-t) * -1) calc(var(--pad-pagina-x) * -1) calc(var(--pad-pagina-b) * -1);
  padding:48px 16px;background:var(--fundo2);
  min-height:calc(100vh - 67px - var(--pad-pagina-t) - var(--pad-pagina-b))
}
.login-pagina.com-fundo{background-image:var(--login-fundo);background-size:cover;background-position:center}
.login-cartao{width:min(440px,100%)}

/* As margens responsivas passam a mexer nos TOKENS, para a sangria do
   login continuar casando em qualquer largura. */
@media (max-width:1200px){
  :root{--pad-pagina-t:24px; --pad-pagina-x:28px; --pad-pagina-b:40px}
  main{padding:var(--pad-pagina)}
}
@media (max-width:900px){
  :root{--pad-pagina-t:20px; --pad-pagina-x:16px; --pad-pagina-b:70px}
  main{padding:var(--pad-pagina)}
  .login-pagina{padding:28px 12px;min-height:calc(100vh - 96px - var(--pad-pagina-t) - var(--pad-pagina-b))}
}

/* ---------------------------------------------------------------------
   15 · A PRÉVIA DA CENTRAL DE IDENTIDADE
   A prévia é o CRM em miniatura: ela segue as MESMAS regras. O degradê
   radial do miolo do login saiu (o design é "sem gradientes") — e ele
   também deixava uma mancha cinza de canto reto no canto da prévia.
   --------------------------------------------------------------------- */
.idv-frame .f-login{background:var(--fundo3)}
.idv-frame .f-login.com-fundo{background-image:var(--fundo-login);background-size:cover;background-position:center}
/* As caixas de "onde a marca aparece" precisam caber um botão de 38 px. */
.idv-apps{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--esp-3)}

/* ---------------------------------------------------------------------
   16 · STATUS POR PONTO + TEXTO, e UM primário por tela
   --------------------------------------------------------------------- */
.est{
  display:inline-flex;align-items:center;gap:6px;white-space:nowrap;
  font-size:11.5px;font-weight:var(--peso-forte)
}
.est .pt-status{background:currentColor}
.est.ok{color:var(--verde-t)}
.est.at{color:var(--ambar-t)}
.est.er{color:var(--vermelho-t)}
.est.fim{color:var(--tinta2)}
.est.neutro{color:var(--tinta3)}
/* "Um primário por tela" (2f). A ação da LINHA é a ação primária daquela
   linha, não da tela: dentro da tabela ela vira contorno na cor principal.
   Cem retângulos verdes sólidos afogavam o conteúdo — e o botão de ação
   real da tela deixava de se distinguir. Só forma; o clique é o mesmo. */
td .btn.p,td .btn.p:hover:not(:disabled){
  background:none;border-color:var(--marca-primaria);color:var(--marca-primaria-texto)
}
td .btn.p:hover:not(:disabled){background:var(--marca-primaria-suave)}
td .btn{min-height:30px;padding:5px 12px;font-size:12px}
td.acao{padding-right:12px}

/* ---------------------------------------------------------------------
   17 · DOIS DEFEITOS QUE O CELULAR MOSTROU (conferência de 09/09/2026)
   --------------------------------------------------------------------- */
@media (max-width:600px){
  /* (a) O "Sair" ficava CORTADO na borda direita: o selo do ambiente em
     10,5 px com 0,12 em de entreletra não caberia junto com tema, avatar e
     Sair em 390 px. O grupo passa a quebrar linha, e o selo volta ao
     tamanho de celular (a regra nova era mais recente que a antiga e a
     estava vencendo). Sair é a saída de sessão: não pode ficar fora da tela. */
  .topo .fim{flex-wrap:wrap;justify-content:flex-end;gap:8px 10px;min-width:0}
  .selo-homolog{font-size:9px;letter-spacing:.08em;padding:3px 7px}
  /* (b) "Empreendimentos ativos" saía como "Empreendimentos ativ…". Em
     célula estreita o rótulo QUEBRA em vez de ser cortado — um rótulo
     cortado obriga a adivinhar de que número se está falando. */
  .num .r,.num .d{white-space:normal}
}

/* =====================================================================
   RODADA DE FIDELIDADE AO DESIGN APROVADO (09/09/2026, 2ª passada)
   Comparação lado a lado, artboard × captura do navegador. Nada de
   direção nova: só aproximar medida, peso, espaço e contraste.
   ===================================================================== */

/* ---------------------------------------------------------------------
   A · MARCA × SEMÂNTICA — a regra fechada pelo Gabriel nesta rodada
   "A cor de destaque da empresa NÃO é automaticamente a cor de alerta."

   BRAND      --marca-primaria*   faixa, navegação ativa, CTA, links,
                                  seleção, foco, filtro ativo, kicker, VGV
              --marca-destaque*   filete da faixa, filete do cartão de
                                  login, ênfase de rascunho, botão .ac
   SEMÂNTICA  --verde*   sucesso, concluído
              --ambar*   ATENÇÃO, pendência, reserva a vencer
              --vermelho* erro, vencido, destrutivo
              (o azul da informação segue a marca, como sempre seguiu)

   Uma empresa de marca vermelha continua com a marca forte — e "falta
   fazer" continua âmbar, "deu errado" continua vermelho. As duas coisas
   não se confundem mais porque não compartilham mais o mesmo token.
   --------------------------------------------------------------------- */

/* ---------------------------------------------------------------------
   B · TIPOGRAFIA. A Archivo não está instalada e não vamos adicionar
   dependência externa só por fonte (decisão do Gabriel). Ela segue como
   PRIMEIRA candidata — no dia em que for hospedada, entra sozinha. Até
   lá, o caráter vem da MÉTRICA: peso 800 no que é título, entreletra
   negativa no que é grande, entreletra aberta no que é caixa-alta
   pequena, e entrelinha curta. É isso que dá a sensação compacta e
   profissional do artboard.
   --------------------------------------------------------------------- */
body{line-height:1.45;text-rendering:optimizeLegibility}
.cabpag h1,.home-cab h1{letter-spacing:-.025em}
.cabpag h2,.jornada h2{letter-spacing:-.02em}
.num .v{letter-spacing:-.025em;font-feature-settings:"tnum" 1}
.home-mod .n b{letter-spacing:-.025em}
/* Caixa-alta pequena: a abertura de entreletra é o que a faz ler. */
.cartao h2,details.secao > summary,.cabpag .cod,.home-cab .cod{font-feature-settings:"case" 1}

/* ---------------------------------------------------------------------
   C · O CABEÇALHO. Proporções do artboard 1a, sem crescer a faixa:
   marca e nome com 12 px de respiro; os módulos a 16 px do bloco da
   marca (além do vão de 28 px da linha); o grupo do usuário a 16 px.
   --------------------------------------------------------------------- */
.marca{gap:12px}
.modulos{margin-left:16px}
.marca #marcaNome{letter-spacing:.02em}
.quem{text-align:right;line-height:1.2}

/* ---------------------------------------------------------------------
   D · ATALHOS — ações TERCIÁRIAS. Estavam com a altura e a borda de um
   controle de formulário (36 px, borda de controle) e competiam com os
   dois botões do topo. No artboard são fichas leves de 34 px com borda
   fina, peso 600 e o "+" na cor principal.
   --------------------------------------------------------------------- */
.home-atalhos{gap:8px}
.home-atalhos .chip{
  min-height:34px;padding:0 12px;gap:8px;
  border-color:var(--linha);background:var(--fundo);
  font-size:13px;font-weight:600;color:var(--tinta)
}
.home-atalhos .chip i{font-weight:var(--peso-forte);font-size:14px;line-height:1}
.home-atalhos .chip:hover{
  border-color:var(--marca-primaria-borda);background:var(--marca-primaria-sutil);
  color:var(--marca-primaria-texto)
}

/* ---------------------------------------------------------------------
   E · A COLUNA DA DIREITA. No artboard os dois blocos são painéis
   independentes sobre o fundo da página: contorno, filete no topo e a
   sombra discreta de 0 1px 2px. O peso excessivo vinha da lista de
   atividade sem limite — agora ela mostra 6 e abre o resto no pé.
   --------------------------------------------------------------------- */
.home-grid > .home-col:last-child > .cartao{box-shadow:var(--sombra)}
/* Coluna da hora estreita, como no artboard — mas ela CRESCE quando o evento
   é de outro dia e traz a data. Fixar 52 px cortaria a data. */
.home-ativ time{flex:0 0 auto;min-width:52px;white-space:nowrap;font-size:11.5px;color:var(--tinta3);font-variant-numeric:tabular-nums}
.home-ativ li:last-child{border-bottom:0}
.home-ativ-pe{border-top:2px solid var(--divisor);margin-top:4px;padding:10px 0 2px}
/* Um botão que é link: mesma tipografia do terciário do artboard. */
button.link{
  background:none;border:0;padding:0;cursor:pointer;font:inherit;
  color:var(--marca-primaria-texto);font-weight:var(--peso-forte);font-size:12.5px
}
button.link:hover{text-decoration:underline}
button.link:focus-visible{outline:2px solid var(--marca-foco);outline-offset:2px}

/* ---------------------------------------------------------------------
   F · CARDS DOS MÓDULOS. Medidas do artboard 1a.
   --------------------------------------------------------------------- */
.home-mod{padding:20px 22px 18px;gap:12px}
.home-mod .t{font-size:18px}
.home-mod .t .ic{width:32px;height:32px;flex:0 0 32px}
.home-mod .d{font-size:13px;line-height:1.4}
.home-mod .n{gap:22px;padding-top:12px}
.home-mod .n b{font-size:20px}
.home-mod .ir{padding-top:4px}

/* ---------------------------------------------------------------------
   G · MÉTRICAS. O artboard tinge a célula que carrega o número decisivo:
   verde na cor principal para o VGV, âmbar para a pendência. A tinta da
   PENDÊNCIA é semântica (regra A), não a cor da empresa.
   --------------------------------------------------------------------- */
.num.atencao{background:var(--ambar-f)}
.num.atencao .v{color:var(--ambar-t)}
.num.atencao .r{color:var(--ambar-t)}

/* ---------------------------------------------------------------------
   H · DOIS DEFEITOS DA COMPARAÇÃO LADO A LADO (2ª passada)
   --------------------------------------------------------------------- */
/* (1) `hidden` num <li> que tem `display:flex` NÃO esconde nada: a regra
   do autor vence a folha do navegador. Era por isso que a Atividade
   recente continuava mostrando as 8 linhas mesmo com o corte em 6. */
.home-ativ li[hidden],.home-minhas li[hidden]{display:none}
/* (2) O rótulo da métrica em destaque/atenção não deve herdar a tinta do
   número quando o número tem cor própria. */
.num.destaque .r{color:var(--tinta)}

/* =====================================================================
   I · ABERTURA / PREPARAÇÃO — a jornada em lista (artboard 2a)
   Eram 14 cards de mesmo tamanho: nada se destacava e a ORDEM do
   trabalho não se lia. O artboard põe o obrigatório numa lista numerada
   por grupo e manda o opcional, o paralelo e a legenda para a lateral.
   Mesmas 14 atividades, mesmos estados, mesmas ações, mesmo portão.
   ===================================================================== */
.prep-grid{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:28px;align-items:start}
.prep-col{min-width:0;display:flex;flex-direction:column;gap:var(--esp-4)}
.prep-lado{display:flex;flex-direction:column;gap:var(--gap-secao);min-width:0}
.prep-lado > .cartao{margin-bottom:0;box-shadow:var(--sombra)}

/* ---- progresso compacto ---- */
.prep-prog{
  background:var(--fundo);border:1px solid var(--linha);border-top:2px solid var(--forte);
  padding:16px 20px 14px;display:flex;flex-direction:column;gap:10px
}
.pp-cab{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.pp-rot{font-size:12px;letter-spacing:.14em;font-weight:var(--peso-forte);text-transform:uppercase}
.pp-n{font-size:22px;font-weight:var(--peso-forte);letter-spacing:-.025em}
.pp-n span{font-size:13.5px;color:var(--tinta2);font-weight:600;letter-spacing:0}
.pp-aptas{margin-left:auto}
.pp-barra{display:grid;gap:3px;height:8px}
.pp-barra span{background:var(--fundo3)}
.pp-barra span.ok{background:var(--verde)}
.pp-barra span.at{background:var(--ambar-viva)}
.pp-barra span.neutro{background:var(--linha2)}
.pp-barra span.trav{background:var(--linha)}
.pp-grupos{display:flex;gap:20px;flex-wrap:wrap;font-size:11.5px;color:var(--tinta2)}
.pp-grupos b{color:var(--tinta);font-weight:var(--peso-forte);font-variant-numeric:tabular-nums}

/* ---- próxima ação: bloco horizontal ---- */
.proxima{display:flex;align-items:center;gap:16px;padding:14px 18px;flex-wrap:wrap}
.proxima .px-tx{flex:1;min-width:200px;display:flex;flex-direction:column;gap:1px}
.proxima .rot{font-size:10.5px;letter-spacing:.14em;font-weight:var(--peso-forte);text-transform:uppercase;color:var(--marca-primaria-texto)}
.proxima b{font-size:15px;font-weight:var(--peso-forte);color:var(--tinta)}
.proxima .px-tx span:not(.rot){font-size:12.5px;color:var(--tinta2)}
.proxima .btn{margin-left:0;white-space:nowrap}

/* ---- o título "Obrigatório para vender" ---- */
.prep-sec{display:flex;align-items:baseline;gap:10px;margin:var(--esp-3) 0 0}
.prep-sec h2{margin:0;font-size:12px;letter-spacing:.14em;font-weight:var(--peso-forte);text-transform:uppercase}
.prep-sec .cont{font-size:12px;color:var(--tinta3)}

/* ---- a lista/jornada ---- */
.jl{background:var(--fundo);border:1px solid var(--linha);border-top:2px solid var(--forte)}
.jl-grupo,.jl-linha{
  display:grid;grid-template-columns:36px minmax(0,1fr) 190px 118px;gap:16px;align-items:center
}
.jl-grupo{
  padding:9px 18px;background:var(--fundo3);border-bottom:1px solid var(--linha);
  font-size:11px;letter-spacing:.1em;font-weight:var(--peso-forte);text-transform:uppercase;color:var(--tinta2)
}
.jl-grupo b{color:var(--tinta);margin-left:6px;letter-spacing:0;font-variant-numeric:tabular-nums}
.jl-linha{padding:11px 18px;border-bottom:1px solid var(--divisor)}
.jl-linha:hover{background:var(--marca-primaria-sutil)}
.jl-linha.fecha{border-bottom:0}
/* A PRÓXIMA atividade fica marcada na lista — é a única com filete. */
.jl-linha.agora{box-shadow:inset 3px 0 0 var(--marca-primaria);background:var(--marca-primaria-sutil)}
.jl-n{font-size:12px;font-weight:var(--peso-forte);color:var(--tinta3);font-variant-numeric:tabular-nums}
.jl-t{font-size:14px;font-weight:var(--peso-forte);line-height:1.25;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.jl-s{font-size:12px;color:var(--tinta2);margin-top:1px;line-height:1.35}
.jl-r{display:flex;align-items:center;gap:8px;min-width:0;font-size:13px}
.jl-r b{font-weight:var(--peso-forte);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jl-a{display:flex;justify-content:flex-end}
.jl-dica{font-size:11px;color:var(--tinta3);text-align:right;line-height:1.3}
/* o ponto de estado da linha: sem texto ao lado, o ponto cresce um pouco */
.jl-r .est .pt-status{width:10px;height:10px;flex:0 0 10px}
.est.trav{color:var(--linha2)}
.est.opc,.est.par{color:var(--tinta3)}

/* ---- a coluna lateral ---- */
.pl-item{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:11px 0;border-bottom:1px solid var(--divisor)
}
.pl-item:last-child{border-bottom:0;padding-bottom:2px}
.pl-t{font-size:13.5px;font-weight:var(--peso-forte)}
.pl-s{font-size:12px;color:var(--tinta2);margin-top:1px}
/* O traço de divisão vive na CÉLULA (anel de 1 px), não no fundo do grupo:
   quando a grade quebra — 2 colunas no tablet com 3 células — o fundo do
   grupo aparecia como um retângulo cinza vazio no lugar da quarta célula. */
.pl-par{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:none}
.pl-cel{
  background:var(--fundo);border:0;box-shadow:0 0 0 1px var(--linha);
  padding:10px 12px;display:flex;flex-direction:column;gap:1px;
  text-align:left;font:inherit;cursor:pointer;min-width:0
}
.pl-cel:hover{background:var(--marca-primaria-sutil)}
/* Os valores reais são frases ("nenhum ainda", "não iniciada"), não números
   curtos como no artboard — então a célula QUEBRA em vez de cortar. Valor
   cortado obriga a adivinhar de que número se está falando. */
.pl-cel .v{font-size:15px;font-weight:var(--peso-forte);letter-spacing:-.02em;line-height:1.15}
.pl-cel .v.at{color:var(--ambar-t)}
.pl-cel .r{font-size:11.5px;color:var(--tinta2);font-weight:600;line-height:1.3}
.pl-cel .d{font-size:10.5px;color:var(--tinta3);line-height:1.3}
.pl-legenda{border:1px dashed var(--linha2);padding:12px 14px}
.pl-lt{font-size:10.5px;letter-spacing:.14em;font-weight:var(--peso-forte);text-transform:uppercase;color:var(--tinta3);margin-bottom:8px}
.pl-lg{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;font-size:12px;color:var(--tinta2)}
.pl-lg span{display:flex;align-items:center;gap:8px}
.pl-lg .pt-status{width:12px;height:12px;flex:0 0 12px}
.pl-lg .pt-status.ok{background:var(--verde)}
.pl-lg .pt-status.at{background:var(--ambar-viva)}
.pl-lg .pt-status.trav{background:none;box-shadow:inset 0 0 0 2px var(--linha2)}
.pl-lg .pt-status.opc{background:var(--linha)}

@media (max-width:1200px){ .prep-grid{grid-template-columns:minmax(0,1fr) 340px} }
@media (max-width:1000px){
  .prep-grid{grid-template-columns:1fr}
  .jl-grupo,.jl-linha{grid-template-columns:32px minmax(0,1fr) 150px 110px;gap:12px}
}
@media (max-width:768px){
  /* No tablet e no celular a linha vira duas: identidade em cima,
     resultado e ação embaixo. Nenhuma informação sai. */
  .jl-linha{grid-template-columns:32px minmax(0,1fr);gap:8px 12px;padding:12px 14px}
  .jl-r{grid-column:2;justify-content:flex-start}
  .jl-a{grid-column:2;justify-content:flex-start}
  .jl-grupo{grid-template-columns:32px 1fr;gap:12px;padding:9px 14px}
  .jl-grupo span:nth-child(3),.jl-grupo span:nth-child(4){display:none}
  .jl-dica{text-align:left}
  .pl-par{grid-template-columns:1fr 1fr}
  .pl-lg{grid-template-columns:1fr}
}

/* =====================================================================
   J · COMERCIAL / ESTOQUE — filtros organizados e tabela densa
   O artboard 2b separa a BUSCA dos FILTROS e mostra numa linha o que está
   ativo, com o "limpar". A tabela fica densa e sem ruído: o traço interno
   é o divisor suave, o cabeçalho não tem preenchimento, e o que é regra
   ("Sim, pode vender") deixa de ser bloco chapado em cem linhas.
   ===================================================================== */
.filtros{gap:8px;align-items:center}
.f-busca{
  display:inline-flex;align-items:center;gap:8px;height:var(--altura-input);
  width:300px;max-width:100%;padding:0 12px;background:var(--fundo);
  border:1px solid var(--linha2);color:var(--tinta3)
}
.f-busca .f-lupa{font-weight:var(--peso-forte);font-size:15px;line-height:1}
.f-busca input{
  border:0;background:none;padding:0;min-height:0;height:100%;flex:1;min-width:0;
  font-size:13px;color:var(--tinta)
}
.f-busca input:focus{outline:0;box-shadow:none;border:0}
.f-busca:focus-within{border-color:var(--marca-primaria);box-shadow:0 0 0 3px var(--marca-primaria-suave)}
.f-ativos{
  display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;
  font-size:12px;color:var(--tinta2)
}
.f-ativos > span{color:var(--tinta3);max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.f-ativos .link{font-size:12px}
.f-conta{margin-left:auto;font-size:12.5px;color:var(--tinta3);white-space:nowrap}

/* ---- a tabela: densa, com o mínimo de traço ---- */
.rol{margin:0 -22px;padding:0 22px}
table th:first-child,table td:first-child{padding-left:2px}
/* Duas ações por linha continuam existindo; ficam juntas e discretas. */
td.acao{white-space:nowrap;display:flex;gap:6px;justify-content:flex-end;align-items:center}
/* O ponto de "pode vender" acompanha o do status: mesma família. */
td .est{font-size:12px}
/* Etiqueta de exceção dentro da tabela ("sem preço", "sem categoria", o motivo
   da inaptidão): é o que precisa ser visto, e só ela. */
td .et{font-size:11px;padding:2px 8px}
@media (max-width:900px){ .rol{margin:0 -16px;padding:0 16px} .f-busca{width:100%} .f-conta{margin-left:0} }

/* =====================================================================
   K · CENTRAL DE IDENTIDADE — refino contra o artboard 2c
   A prévia tem de parecer o MESMO produto que a pessoa vê fora da
   central: por isso ela recebe as mesmas superfícies e os mesmos traços
   do CRM real, e não um estilo próprio.
   ===================================================================== */
/* A logo é a protagonista do bloco: quadro sólido, não tracejado. */
.idv-logo .quadro{border:1px solid var(--linha2);background:var(--fundo2)}
.idv-logo .quadro.escuro{background:#15211b;border-color:#28362f}
details.idv-avancado{border:1px solid var(--linha);border-top:2px solid var(--linha2);background:var(--fundo)}
details.idv-avancado summary{font-weight:var(--peso-forte);color:var(--tinta)}
/* Publicado × rascunho: a etiqueta de estado antes do texto, com o mesmo
   peso do resto da hierarquia. */
.cabpag .sub .et{margin-right:2px}
.idv-estado{font-size:11.5px}
.idv-zona{border-color:var(--linha2);background:var(--fundo2)}
.idv-zona:hover,.idv-zona.sobre{border-color:var(--marca-primaria);background:var(--marca-primaria-sutil)}
/* A moldura da prévia: contorno de caixa, como qualquer painel. */
.idv-frame{border:1px solid var(--linha);background:var(--fundo2)}

/* ---------------- ler documento do cliente (14/09/2026) ---------------- */
/* MOBILE FIRST: o corretor está em pé, com o cliente na frente, num
   celular. Botão de 44 px é o mínimo que um polegar acerta; abaixo disso
   a pessoa erra, tenta de novo e desiste. */
.doc-atalhos{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px}
.doc-atalhos .doc-botao{min-height:44px;padding:0 16px;font-size:14px;display:inline-flex;align-items:center;gap:8px}
.doc-icone{font-size:17px;line-height:1}
.doc-ou{font-size:12px;color:var(--tinta3)}
.doc-capturadas{flex-basis:100%;font-size:12px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.doc-capturadas .obs{flex-basis:100%;color:var(--tinta3);font-size:11.5px;margin-top:2px}
.doc-previa{margin:8px 0;border:1px solid var(--linha);border-radius:var(--raio);overflow:hidden;background:var(--fundo3)}
.doc-previa img{display:block;width:100%;max-height:260px;object-fit:contain}

/* A TABELA DA CONFERÊNCIA. No celular ela vira lista: quatro colunas num
   telefone obrigariam rolagem horizontal, e revisar CPF rolando de lado é
   o caminho mais curto para confirmar o número errado. */
.dc-tabela{width:100%;border-collapse:collapse;font-size:13px}
.dc-tabela th{text-align:left;font-size:11px;letter-spacing:.04em;color:var(--tinta3);
  text-transform:uppercase;padding:4px 6px;border-bottom:1px solid var(--linha)}
.dc-tabela td{padding:6px;border-bottom:1px solid var(--linha);vertical-align:top}
.dc-tabela input[type=text],.dc-tabela input:not([type]){width:100%;min-height:38px}
.dc-tabela input[type=checkbox]{width:22px;height:22px}
.dc-marca{width:38px;text-align:center}
.dc-rot{width:34%;font-weight:600}
.dc-conf{font-weight:400;margin-top:2px}
.dc-atual{width:26%;font-size:12px;color:var(--tinta2)}
.dc-vazio{color:var(--tinta3);font-style:italic}
@media (max-width:700px){
  .dc-tabela thead{display:none}
  .dc-tabela tr{display:grid;grid-template-columns:38px 1fr;gap:2px 8px;
    border-bottom:1px solid var(--linha);padding:8px 0}
  .dc-tabela td{border:0;padding:2px 0}
  .dc-marca{grid-row:1 / span 3}
  .dc-rot,.dc-atual{width:auto}
  .dc-atual::before{content:'no cadastro: ';color:var(--tinta3)}
}

/* ---------------------------------------------------------------------
   A PÁGINA DO DOCUMENTO, MOSTRADA ANTES DA CONFERÊNCIA
   Nasceu de uma reprovação: o PDF real do dono foi lido e a tela não deu
   sinal de ter recebido nada. A prévia é a prova visual de que o arquivo
   chegou — e ela importa mais quando a leitura falha do que quando
   funciona. Fundo xadrez claro para a borda da página aparecer mesmo
   quando o documento é branco.
   --------------------------------------------------------------------- */
.docid-previa { margin: 0 0 12px; text-align: center; }
.docid-previa img {
  max-width: 100%; max-height: 320px; width: auto;
  border: 1px solid var(--linha); border-radius: 8px;
  background: repeating-conic-gradient(var(--fundo2) 0% 25%, var(--fundo) 0% 50%) 50% / 16px 16px;
  box-shadow: 0 1px 4px rgba(0,0,0,.10);
}
.docid-previa .obs { margin-top: 5px; }
@media (max-width: 560px) { .docid-previa img { max-height: 210px; } }

/* ---------------------------------------------------------------------
   A FAIXA DO ESPELHO
   Quando a homologação carrega uma cópia dos dados reais do piloto, ela
   fica visualmente idêntica ao ambiente de verdade. Esta faixa existe
   para tornar impossível confundir os dois — por isso ela é âmbar, fica
   colada no topo, aparece em TODA tela e não some com rolagem.
   --------------------------------------------------------------------- */
.faixa-espelho {
  position: sticky; top: 0; z-index: 40;
  background: var(--ambar); color: #3a2c00;
  font-size: 12px; font-weight: 640; letter-spacing: .02em;
  text-align: center; padding: 5px 12px;
  border-bottom: 1px solid rgba(0,0,0,.16);
}
@media (max-width: 560px) { .faixa-espelho { font-size: 11px; padding: 4px 8px; } }
@media print { .faixa-espelho { position: static; } }

/* =====================================================================
   PAINEL DE COMANDO COMERCIAL  (14/09/2026)
   ---------------------------------------------------------------------
   O Resumo Comercial estava limpo e parecia relatório: dezenas de
   retângulos brancos do mesmo tamanho, sem hierarquia, com o número mais
   importante do mesmo peso do menos importante.

   A regra aqui é uma só: TAMANHO É IMPORTÂNCIA. O que responde a
   primeira pergunta é grande; o contexto é pequeno; o secundário é
   cinza. Cor só entra quando significa alguma coisa — verde é
   disponível, âmbar é atenção, vermelho é problema de verdade. Valor em
   reais não fica verde só por ser dinheiro.
   ===================================================================== */

.pnl{
  background:var(--fundo); border:1px solid var(--linha); border-radius:var(--raio-g);
  padding:14px 16px; margin-bottom:var(--gap-secao); box-shadow:var(--sombra);
}
.pnl-cab{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:10px; }
.pnl-cab h2{ margin:0; font-size:14px; letter-spacing:.01em; flex:1 1 auto; }
.pnl-cab .btn{ flex:0 0 auto; }
.pnl-sub{ font-size:11.5px; color:var(--tinta3); font-weight:500; flex:1 1 100%; order:3; }
@media (min-width:720px){ .pnl-sub{ flex:0 1 auto; order:0; } }
.pnl-rot{ font-size:10.5px; font-weight:700; letter-spacing:.06em; color:var(--tinta3); margin-bottom:6px; }
.pnl-nota{ font-size:11.5px; color:var(--tinta3); line-height:1.5; margin-top:8px; }
.pnl-ok{ margin:0 0 var(--gap-secao); padding:8px 12px; border-left:3px solid var(--verde);
  background:var(--verde-f); border-radius:0 var(--raio) var(--raio) 0; }
.pnl-acoes{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.pnl-acoes .pnl-mais{ flex:1 1 320px; }

/* ---- O ESTOQUE: o número que responde "posso vender agora?" --------- */
.pnl-estoque .pnl-corpo{ display:grid; grid-template-columns:1fr; gap:16px; align-items:center; }
@media (min-width:860px){ .pnl-estoque .pnl-corpo{ grid-template-columns:minmax(180px,240px) 1fr; gap:28px; } }
.pnl-heroi{ text-align:left; }
.nhero{ font-size:clamp(40px,7vw,60px); font-weight:760; line-height:.95; letter-spacing:-.02em;
  color:var(--verde); font-variant-numeric:tabular-nums; }
.nhero-r{ font-size:13px; font-weight:640; margin-top:2px; }
.nhero-c{ font-size:11.5px; color:var(--tinta3); margin-top:4px; line-height:1.5; }

.barra-comp{ display:flex; height:16px; border-radius:4px; overflow:hidden; background:var(--fundo2); }
.bc-seg{ display:block; height:100%; }
.bc-seg + .bc-seg{ box-shadow:inset 1px 0 0 rgba(255,255,255,.55); }
.bc-leg{ display:flex; flex-wrap:wrap; gap:4px 16px; margin-top:9px; font-size:12px; }
.bc-item{ display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
.bc-item i{ width:9px; height:9px; border-radius:2px; flex:0 0 auto; }
.bc-item b{ font-variant-numeric:tabular-nums; }
.bc-pct{ color:var(--tinta3); font-size:11px; }
.bc-zero{ color:var(--tinta3); }
.bc-zero b{ font-weight:600; }

/* ---- KPIs com três pesos ------------------------------------------- */
.kpi-linha{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:6px 20px; align-items:start; }
.kpi-linha-mini{ grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); margin-top:8px; }
.kpi{ padding:4px 0; min-width:0; }
.kpi-v{ font-variant-numeric:tabular-nums; line-height:1.1; letter-spacing:-.01em; overflow-wrap:break-word; }
.kpi-forte .kpi-v{ font-size:30px; font-weight:740; }
.kpi-medio .kpi-v{ font-size:21px; font-weight:700; }
.kpi-fraco .kpi-v{ font-size:16px; font-weight:660; color:var(--tinta2); }
.kpi-r{ font-size:12px; font-weight:600; margin-top:1px; }
.kpi-fraco .kpi-r{ font-weight:550; color:var(--tinta3); }
.kpi-ctx{ margin-top:3px; display:flex; flex-wrap:wrap; gap:4px 8px; align-items:center; }
.kpi-nota{ font-size:11px; color:var(--tinta3); line-height:1.45; }
.sem-dado{ font-size:14px; font-weight:600; color:var(--tinta3); }

/* ---- A comparação com o período anterior ---------------------------- */
.delta{ display:inline-block; font-size:11px; font-weight:700; padding:1px 6px; border-radius:20px;
  font-variant-numeric:tabular-nums; white-space:nowrap; }
.delta-sobe{ background:var(--verde-f); color:var(--verde); }
.delta-cai{ background:var(--vermelho-f); color:var(--vermelho); }
.delta-igual{ background:var(--fundo2); color:var(--tinta3); }

/* ---- Alertas COM GRAVIDADE ------------------------------------------ */
.alerta{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
  font-size:12.5px; line-height:1.5; padding:8px 12px; border-radius:0 var(--raio) var(--raio) 0;
  border-left:3px solid; margin-top:8px; }
.alerta > span{ flex:1 1 260px; }
.alerta-critico{ border-color:var(--vermelho); background:var(--vermelho-f); }
.alerta-atencao{ border-color:var(--ambar);   background:var(--ambar-f); }
.alerta-info{    border-color:var(--linha);   background:var(--fundo3); color:var(--tinta2); }
.pnl-atencao{ border-left:3px solid var(--ambar); }

/* A faixa que interrompe: só para o que ameaça a operação agora. */
.faixa-critica{ background:var(--vermelho-f); color:var(--vermelho); border:1px solid var(--vermelho);
  border-radius:var(--raio); padding:8px 14px; margin-bottom:var(--gap-secao);
  font-size:12.5px; font-weight:640; line-height:1.5; }

/* ---- O gráfico de ritmo --------------------------------------------- */
.graf{ margin:14px 0 0; }
.graf figcaption{ font-size:11px; color:var(--tinta3); display:flex; justify-content:space-between;
  margin-bottom:6px; letter-spacing:.02em; }
.graf figcaption span{ font-variant-numeric:tabular-nums; }
.graf-col{ display:flex; align-items:flex-end; gap:3px; height:92px; }
.gc{ flex:1 1 0; min-width:0; height:100%; display:flex; flex-direction:column; justify-content:flex-end;
  align-items:center; gap:2px; }
.gc-n{ font-size:10px; font-weight:700; color:var(--tinta2); font-variant-numeric:tabular-nums; }
.gc-b{ width:100%; max-width:44px; background:var(--azul); border-radius:3px 3px 0 0; display:block; }
.gc:hover .gc-b{ background:var(--azul-e); }
.gc-r{ font-size:9.5px; color:var(--tinta3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  max-width:100%; }
.graf-eixo{ display:flex; justify-content:space-between; font-size:10.5px; color:var(--tinta3); margin-top:4px; }

/* ---- Ranking de equipe e origem ------------------------------------- */
.pnl-duplo{ display:grid; grid-template-columns:1fr; gap:20px; }
@media (min-width:860px){ .pnl-duplo{ grid-template-columns:1fr 1fr; gap:28px; } }
.rank{ display:grid; grid-template-columns:1fr; gap:2px; padding:5px 0; border-bottom:1px solid var(--linha); }
.rank:last-of-type{ border-bottom:0; }
.rank-n{ font-size:12.5px; font-weight:600; }
.rank-b{ height:6px; background:var(--fundo2); border-radius:3px; overflow:hidden; }
.rank-b span{ display:block; height:100%; background:var(--verde); border-radius:3px; }
.rank-v{ font-size:11.5px; color:var(--tinta2); font-variant-numeric:tabular-nums;
  display:flex; justify-content:space-between; gap:10px; }
.rank-v span{ color:var(--tinta3); font-size:11px; }

/* ---- "Ver mais": o segundo nível ------------------------------------ */
.pnl-mais{ margin-top:10px; }
.pnl-mais > summary{ cursor:pointer; font-size:12px; color:var(--tinta3); font-weight:600;
  list-style:none; display:inline-flex; align-items:center; gap:5px; }
.pnl-mais > summary::-webkit-details-marker{ display:none; }
.pnl-mais > summary::before{ content:'▸'; font-size:10px; }
.pnl-mais[open] > summary::before{ content:'▾'; }
.pnl-mais > summary:hover{ color:var(--tinta); }

/* ---- Resultado: elegante e compacto, no fim da página --------------- */
.pnl-resultado{ background:var(--fundo3); }

/* ---- Celular: a ordem é a mesma, o peso também --------------------- */
@media (max-width:560px){
  .pnl{ padding:12px 13px; }
  .kpi-forte .kpi-v{ font-size:26px; }
  /* VALOR EM REAIS NÃO SE QUEBRA ENTRE O "R$" E O NÚMERO. No celular,
     "R$ 1.749.058,02" caía em duas linhas com o cifrão sozinho em cima —
     dá para ler, mas parece defeito e atrapalha a varredura da coluna.
     A fonte cede um ponto e o valor fica inteiro numa linha só. */
  .kpi-medio .kpi-v{ font-size:17px; }
  .kpi-v{ white-space:nowrap; overflow-wrap:normal; }
  .kpi-linha{ grid-template-columns:repeat(auto-fit,minmax(148px,1fr)); gap:8px 12px; }
  .graf-col{ height:74px; }
  .bc-leg{ gap:3px 12px; font-size:11.5px; }
}

/* ---------------------------------------------------------------------
   A SITUAÇÃO DE CADA CAMPO LIDO
   Confirmado, confira, não encontrado — três coisas diferentes que antes
   apareciam com o mesmo peso. O dono viu "Documento lido" ao lado de um
   nome que não era o dele; a etiqueta existe para que isso não volte.
   --------------------------------------------------------------------- */
.dc-sit { display:inline-block; font-size:10px; font-weight:700; letter-spacing:.03em;
  padding:1px 6px; border-radius:20px; text-transform:uppercase; }
.dc-sit-ok  { background:var(--verde-f);    color:var(--verde); }
.dc-sit-rev { background:var(--ambar-f);    color:var(--ambar); }
.dc-sit-nao { background:var(--fundo2);     color:var(--tinta3); }
.dc-razao   { font-size:10.5px; color:var(--tinta3); line-height:1.4; margin-top:2px; }
