/* dashboard.html — classes do HTML montado por string no <script> (spec 162, T038/T039/T040a/T040c).
   Só var(--token): nenhuma cor literal aqui. O markup estático do dashboard usa outro arquivo. */

/* Lista de processos (linha expandida) */
.djs-rotulo-mini{
  font-size:10px;font-weight:600;color:var(--tinta-3);
  text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px;
}
.djs-valor{ font-size:13px;color:var(--tinta-corpo); }

/* Traço/valor ausente ("—") nas tabelas */
.djs-vazio{ color:var(--tinta-3); }

/* Caixas de estado (ART: callouts, preview, envio ao trâmite). Só fundo + borda —
   a cor do texto, quando existe, vem junto na marcação. */
.djs-caixa-ok{ background:var(--ok-tint);border:1px solid var(--ok-borda); }
.djs-caixa-alerta{ background:var(--alerta-tint);border:1px solid var(--alerta-borda); }
.djs-caixa-erro{ background:var(--erro-tint);border:1px solid var(--erro-borda); }
.djs-caixa-neutra{ background:var(--superficie-2);border:1px solid var(--borda); }

/* Rótulo pequeno dos resumos da ART */
.djs-rotulo-art{ font-size:11px;color:var(--tinta-3); }

/* Célula cinza do resumo da análise R02 */
.djs-celula{ padding:10px;background:var(--superficie-2);border-radius:var(--raio-sm); }

/* ══ spec 335 — estilos que o <script> do dashboard aplicava inline ═════════════════════════ */

/* Cor de estado trocada pelo JS (_corEstado). !important = mesma precedência do antigo
   style="color:…" inline, que vencia qualquer regra da classe base do elemento. */
.djs-cor-ok{color:var(--ok)!important}
.djs-cor-perigo{color:var(--perigo)!important}
.djs-cor-erro{color:var(--erro)!important}
.djs-cor-alerta{color:var(--alerta)!important}
.djs-cor-alerta-borda{color:var(--alerta-borda)!important}
.djs-cor-info{color:var(--info)!important}
.djs-cor-sinal{color:var(--sinal-texto)!important}
.djs-cor-2{color:var(--tinta-2)!important}
.djs-cor-mudo{color:var(--tinta-3)!important}
.djs-cor-corpo{color:var(--tinta-corpo)!important}
.djs-cor-forte{color:var(--tinta)!important}
/* Campo inválido marcado pelo JS (CPF/CNPJ) — vence o :focus do campo, como o inline vencia. */
.djs-borda-erro,.djs-borda-erro:focus{border-color:var(--erro)!important}

/* Utilitárias que faltam na escala do vertex-ui.css */
.djs-f1{flex:1}
.djs-ic-meio{vertical-align:middle}
.djs-monospace{font-family:monospace}
.djs-lista-limpa{list-style:none;padding:0}
.djs-col-22{width:22%}
.djs-p-12-14{padding:12px 14px}

/* Modais bloqueantes de erro/sucesso do envio (spec 122/122b) */
.djs-dlg{max-width:640px;padding:0;border:none;border-radius:12px;box-shadow:var(--sombra-modal)}
.djs-dlg.djs-dlg-estreito{max-width:520px}
.djs-dlg-cab{padding:20px 24px 12px;border-bottom:1px solid var(--borda);border-radius:12px 12px 0 0}
.djs-dlg-cab-erro{background:var(--erro-tint)}
.djs-dlg-cab-ok{background:var(--ok-tint)}
.djs-dlg-icone{font-size:22px}
.djs-dlg-titulo{font-size:17px}
.djs-dlg-corpo{padding:18px 24px}
.djs-dlg-msg{font-size:14px;line-height:1.5;color:var(--tinta)}
.djs-dlg-pre{background:var(--superficie-2);border:1px solid var(--borda);border-radius:6px;padding:10px;font-size:11px;max-height:260px;overflow:auto;white-space:pre-wrap;word-break:break-all;font-family:var(--fonte-mono)}
.djs-dlg-rodape{padding:12px 24px 18px;display:flex;justify-content:flex-end;gap:8px}

/* Envelope de remessa (fila de documentos do trâmite) */
.djs-vazio-caixa{padding:14px;border:1px dashed var(--borda);border-radius:var(--raio-md);background:var(--superficie-2);color:var(--tinta-3);font-size:13px;text-align:center}
.djs-link-doc{flex:1;text-align:left;background:none;border:none;cursor:pointer;font-family:var(--fonte-mono);font-size:12px;color:var(--sinal-texto);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0;text-decoration:underline;text-underline-offset:2px}
.djs-btn-x{padding:2px 8px;font-size:12px;line-height:1}
.djs-rotulo-fila{font-size:12px;color:var(--tinta-3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}
.djs-textarea-msg{height:auto;min-height:70px;padding:10px 14px;font-family:inherit;font-size:14px}
.djs-btn-13{padding:7px 14px;font-size:13px;font-weight:600}

/* Lista de processos */
/* células: prefixo .sh-table td para vencer `.sh-table td` (padding/fonte/cor padrão da tabela) */
.sh-table td.djs-linha-vazia{text-align:center;padding:40px;color:var(--tinta-3);font-size:13px}
.sh-table td.djs-cel-chevron{padding:13px 8px 13px 16px}
.sh-table td.djs-cel-link{padding:13px 16px 13px 8px}
.sh-table td.djs-cel-numero{font-family:monospace;font-size:12px;color:var(--tinta-2)}
.sh-table td.djs-cel-pessoa{color:var(--tinta-corpo);font-size:12px}
.sh-table td.djs-cel-data{color:var(--tinta-3);font-size:12px}
.sh-table td.djs-cel-sem-pad{padding:0}
.djs-chevron{font-size:14px;color:var(--tinta-3);transition:transform .2s}
.djs-p-16-24{padding:16px 24px}
.djs-grade-4-16{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.djs-link-portal{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:5px;border:1px solid var(--borda);color:var(--tinta-3);transition:all .15s}
.djs-link-portal:hover{border-color:var(--sinal);color:var(--sinal-texto)}
.djs-link-sublinhado{font-size:13px;color:var(--sinal-texto);text-decoration:underline}

/* Feedback "Copiado!" (botões de copiar) — !important = precedência do antigo inline */
.djs-btn-copiado{background:var(--ok-tint)!important;border-color:var(--ok)!important;color:var(--ok)!important}
.djs-fundo-ok-js{background:var(--ok)!important}

/* Toast — borda por tipo (prefixo #toast para vencer o seletor de id do vertex-ui.css) */
#toast.djs-toast-ok{border-color:var(--ok-borda)}
#toast.djs-toast-erro{border-color:var(--erro-borda)}
#toast.djs-toast-neutro{border-color:var(--borda)}

/* Acompanhamento — botão "Ver pendentes" (info; ativo = sinal + contorno). Repete no :hover
   porque o antigo estilo inline vencia o :hover de .btn-ghost. */
.djs-btn-pendentes,.djs-btn-pendentes:hover{font-size:12px;color:var(--info);background:var(--info-tint);border:1px solid var(--info-borda);padding:0 12px;gap:5px}
.djs-btn-pendentes.ativo,.djs-btn-pendentes.ativo:hover{background:var(--sinal-tint);outline:2px solid var(--sinal)}
/* Tabela de meses do card de pendentes */
.djs-linha-mes{display:flex;justify-content:space-between;padding:2px 0;border-bottom:1px solid var(--borda-2)}

/* Lista de projetos (.pj-table) — prefixo .pj-table td para vencer a cor padrão da célula */
.pj-table td.djs-pj-corpo{color:var(--tinta-corpo)}
.pj-table td.djs-pj-2{color:var(--tinta-2)}
.djs-link-herda{color:inherit;text-decoration:none;display:block}
.djs-erro-carregar{text-align:center;padding:48px;color:var(--tinta-2)}

/* Diálogos montados no JS (novo projeto, convite/envio da pesquisa) — mesma base de .djs-dlg */
.djs-dlg.djs-dlg-460{max-width:460px}
.djs-dlg.djs-dlg-560{max-width:560px}
.djs-dlg-fluido{width:calc(100% - 32px)}
.djs-dlg.djs-dlg-raio-lg{border-radius:var(--raio-lg)}
.djs-dlg-topo{padding:20px 24px 4px}
.djs-dlg-rodape-form{padding:16px 24px 18px;display:flex;justify-content:flex-end;gap:8px}
.djs-display{font-family:var(--fonte-display)}
.btn.djs-btn-p16{padding:8px 16px}
.djs-aviso-dlg{border-radius:8px;padding:9px 12px}
.djs-pre-msg{background:var(--superficie-2);border:1px solid var(--borda);border-radius:8px;padding:11px 13px;font-size:12px;line-height:1.5;white-space:pre-wrap;margin:0;font-family:inherit;max-height:220px;overflow:auto}
.djs-pre-msg-os{background:var(--superficie-2);border:1px solid var(--borda);border-radius:var(--raio-md);padding:12px 14px;font-size:13px;line-height:1.55;white-space:pre-wrap;margin:0;font-family:var(--fonte-corpo);max-height:230px;overflow:auto}

/* Botões de 32px nas linhas de tabela (origem & satisfação) */
.btn.djs-btn-32{height:32px;padding:0 10px;font-size:13px}
.btn.djs-btn-32.djs-btn-32-largo{padding:0 14px}

/* Origem & satisfação — relatório */
.sh-table td.djs-cel-mudo{color:var(--tinta-3)}
.djs-li-vazio{list-style:none;margin-left:-18px;color:var(--tinta-3)}

/* Campo de área bloqueado pelo pivô do alvará (spec 121): contorno tracejado, sem fundo — visível
   também dentro do .quadro (fundo sutil). */
.campo.djs-campo-bloqueado{border-style:dashed;border-color:var(--borda-forte);background-color:transparent;color:var(--tinta-3)}

/* Aviso do Alvará de uso Bombeiros (spec 306): .aviso-alerta (exige) ou neutro (dispensado) */
.djs-aviso-caixa{padding:10px 12px;border-radius:8px}
.djs-aviso-neutro{background:var(--superficie-2);border:1px solid var(--borda);color:var(--tinta-corpo)}

/* Caixa de tentativas de protocolação com erro (spec 313): .caixa-erro ou .caixa-alerta (incerto) */
.djs-caixa-erros{border-radius:8px;padding:14px 16px}
.djs-tentativa{font-size:12.5px;color:var(--erro)}
.djs-tentativa-sep{border-top:1px solid var(--erro-borda);padding-top:8px;margin-top:8px}
.djs-pre-wrap{white-space:pre-wrap}

/* Modal "Preparar documento" (ordenar páginas antes de juntar em PDF) */
.djs-prep-fundo{position:fixed;inset:0;background:var(--overlay);z-index:9999;display:flex;align-items:center;justify-content:center}
.djs-prep-caixa{background:var(--card);border-radius:12px;padding:20px;max-width:520px;width:92%;max-height:84vh;overflow:auto}
.djs-prep-linha{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid var(--borda);border-radius:8px;margin-bottom:6px;background:var(--superficie-2);cursor:grab}
.djs-prep-linha.djs-arrastando-sobre{outline:2px solid var(--info)}
.djs-prep-miniatura{width:44px;height:44px;flex:0 0 44px;border-radius:6px;background:var(--borda) center/cover no-repeat;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--tinta-2)}
.djs-prep-nome{flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.djs-prep-barra{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.djs-prep-cancelar{padding:8px 14px;border:1px solid var(--tinta-4);border-radius:8px;background:var(--card);cursor:pointer}
.djs-prep-gerar{padding:8px 14px;border:0;border-radius:8px;background:var(--info);color:var(--tinta-inversa);cursor:pointer}

/* Arquivos de apoio (chips com visualizar / fila / remover) */
.djs-btn-icone-fila{background:none;border:none;cursor:pointer;padding:0;line-height:1;display:inline-flex;align-items:center}
.djs-ic-13{width:13px;height:13px}

/* ART — etiqueta de situação (cor por estado do CREA) */
.djs-tag-art{font-size:11px;font-weight:600;padding:3px 10px;border-radius:20px;white-space:nowrap;background:var(--superficie-2);color:var(--tinta-2)}
.djs-tag-art.djs-tag-ok{background:var(--ok-tint);color:var(--ok)}
.djs-tag-art.djs-tag-alerta{background:var(--alerta-tint);color:var(--alerta)}
.djs-tag-art.djs-tag-erro{background:var(--erro-tint);color:var(--erro)}
/* ART — PIX / linha digitável */
.djs-caixa-pix{border-radius:8px;padding:8px 10px}
.djs-pix-codigo{flex:1;font-size:11px;font-family:monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.btn.djs-btn-11{font-size:11px;padding:4px 10px}
/* ART — histórico de ARTs arquivadas (spec 037) */
.djs-raio-8{border-radius:8px}
.djs-art-hist-cab{padding:10px 12px;font-size:13px;font-weight:600;color:var(--tinta);border-bottom:1px solid var(--borda)}
.djs-art-hist-linha{display:flex;align-items:center;flex-wrap:wrap;gap:14px;padding:8px 12px;border-top:1px solid var(--borda-2);font-size:12px;color:var(--tinta-2)}
.djs-pilula-vencido{color:var(--erro);padding:2px 8px;border-radius:999px;font-weight:600}
/* ART — pós-emissão */
.djs-art-resumo{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;border-radius:8px;padding:14px;margin-bottom:14px}
.djs-art-callout{padding:12px;border-radius:8px;margin-bottom:14px}
.djs-art-acoes{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.djs-btn-cancelar-art,.djs-btn-cancelar-art:hover{color:var(--erro);border-color:var(--erro-borda)}
.djs-art-pagto{background:var(--card);border:1px solid var(--borda);border-radius:8px;padding:14px;margin-bottom:14px}
.djs-art-info{font-size:13px;border-radius:8px;padding:10px 14px}

/* Emitir ART — preview e resultado */
.djs-callout-10{padding:10px;border-radius:8px;margin-bottom:10px}
.djs-callout-12{padding:12px;border-radius:8px}
.djs-ul-recuo{margin:6px 0 0 18px}
.djs-colapsa{border-collapse:collapse}
.djs-kv-chave{color:var(--tinta-3);padding:3px 8px 3px 0;white-space:nowrap;vertical-align:top}
.djs-kv-valor{padding:3px 0}

/* Trâmites — estados vazios (sobrepõem o padding de .empty-state-inline) */
.empty-state-inline.djs-vazio-24{padding:24px 0}
.empty-state-inline.djs-vazio-8{padding:8px 0}

/* Trâmite — seletor de documentos do projeto + chips selecionados */
.djs-picker-vazio{padding:12px 14px;color:var(--tinta-3);font-size:12px}
.djs-picker-cab{padding:9px 12px;border-bottom:1px solid var(--borda-2);font-size:11px;color:var(--tinta-3);font-weight:600}
.djs-picker-item{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:13px}
.djs-picker-arquivo{color:var(--tinta-3);font-size:11px;margin-left:auto;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.djs-chip-tramite{display:inline-flex;align-items:center;gap:6px;background:var(--sinal-tint);border:1px solid var(--borda-forte);border-radius:999px;padding:4px 6px 4px 10px;font-size:12px;color:var(--tinta)}
.djs-chip-tramite-remover{border:none;background:none;cursor:pointer;color:var(--tinta-3);font-size:15px;line-height:1;padding:0 2px}

/* Diálogo "Vinculado. Enviar o que falta?" */
.djs-ef-cab{padding:20px 24px 8px}
.djs-ef-corpo{padding:8px 24px 4px;font-size:13.5px;line-height:2}
.djs-ef-rodape{padding:12px 24px 20px;display:flex;gap:8px;justify-content:flex-end}

/* Análise — histórico de rastreios IA (tabela compacta) */
.djs-ic-12{width:12px;height:12px}
.djs-hist-tabela{width:100%;border-collapse:collapse;font-size:12px}
.djs-hist-tabela th,.djs-hist-tabela td{padding:6px 4px}
.djs-hist-cab{text-align:left;color:var(--tinta-2);border-bottom:1px solid var(--borda)}
.djs-hist-linha{border-bottom:1px solid var(--borda-2)}
.djs-hist-ts{font-family:ui-monospace,monospace;font-size:11px;color:var(--tinta-corpo)}
.djs-badge-versao{padding:2px 8px;border-radius:4px;font-size:11px;background:var(--borda);color:var(--tinta-corpo)}
.djs-badge-versao.djs-badge-r04{background:var(--ok-tint);color:var(--ok);font-weight:600}
.djs-badge-versao.djs-badge-r03{background:var(--info-tint);color:var(--info);font-weight:600}
.djs-badge-versao.djs-badge-r02{background:var(--especial-tint);color:var(--especial);font-weight:600}
.djs-btn-json{padding:4px 10px;background:var(--tinta);color:var(--tinta-inversa);border:none;border-radius:4px;font-size:11px;cursor:pointer}

/* Modal "Análise R02 (teste) — resultado bruto" (spec 132) */
.djs-r02{padding:0;border:none;border-radius:12px;max-width:min(1000px,90vw);width:90vw;max-height:85vh;box-shadow:var(--sombra-modal)}
.djs-r02-quadro{display:flex;flex-direction:column;height:85vh}
.djs-r02-cab{padding:16px 20px;border-bottom:1px solid var(--borda);display:flex;align-items:center;justify-content:space-between;background:var(--superficie-2);border-radius:12px 12px 0 0}
.djs-r02-btn{padding:6px 12px;border:none;border-radius:6px;font-size:12px;cursor:pointer;background:var(--borda)}
.djs-r02-btn.djs-r02-btn-escuro{background:var(--tinta);color:var(--tinta-inversa)}
.djs-r02-corpo{padding:16px 20px;overflow:auto;flex:1}
.djs-r02-json{margin:0;padding:14px;background:var(--tinta);color:var(--tinta-inversa);border-radius:8px;font-size:12px;font-family:ui-monospace,SFMono-Regular,monospace;white-space:pre-wrap;word-break:break-word;line-height:1.5;overflow:auto}
.djs-r02-grade{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;font-size:13px}
.djs-col-span-2{grid-column:span 2}
.djs-r02-obs{margin:12px 0 0;padding:10px;background:var(--alerta-tint);border-left:3px solid var(--alerta);font-size:13px}
.djs-r02-erro{padding:10px;background:var(--erro-tint);border-left:3px solid var(--perigo);font-size:13px}
/* spec 344: janela "Confirmar antes de gerar" */
.ccg-dlg{max-width:720px}
.ccg-corpo{max-height:62vh;overflow:auto}
.ccg-corpo:focus,.ccg-corpo:focus-visible{outline:none}
.ccg-grupo{margin:0 0 16px}
.ccg-grupo-titulo{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--tinta-3);margin:0 0 8px}
.ccg-item{border:1px solid var(--borda);border-radius:8px;padding:10px 12px;margin:0 0 8px;background:var(--superficie)}
.ccg-item.ccg-obrigatoria{border-left:3px solid var(--alerta)}
.ccg-item.ccg-faltando{border-color:var(--erro);background:var(--erro-tint)}
.ccg-rotulo{font-size:14px;font-weight:600;color:var(--tinta);margin:0 0 4px}
.ccg-detalhe{font-size:12px;color:var(--tinta-3);margin:0 0 6px}
.ccg-opcoes{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px}
.ccg-opcoes label{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.ccg-fonte{font-size:11px;color:var(--tinta-3)}
.ccg-outro{margin-top:6px;max-width:260px}
