/* ==========================================================================
   Estilos das telas internas (painel, criar, contrato, usuarios, admin,
   novo modelo, contratos). Cada tela acrescenta suas regras aqui
   (T-034 a T-037; revisao sobria na T-043).
   ========================================================================== */
.tela { display: flex; flex-direction: column; gap: 1.125rem; }
.tela__construcao { padding: 3rem 1rem; text-align: center; color: hsl(var(--texto-suave)); border: 1px dashed hsl(var(--borda-forte)); border-radius: var(--raio); }

/* ---------- Painel (T-034) ---------- */
.painel__capacidade { margin: 0; }
.painel__linha { align-items: start; }
.painel__svg { width: 100%; }
.grafico { width: 100%; height: auto; overflow: visible; }
.grafico__grade { stroke: hsl(var(--borda)); stroke-width: 1; }
.grafico__eixo { fill: hsl(var(--texto-suave)); font-family: var(--f-mono); font-size: 10px; }
/* cores das series em tokens (--dado*, --heatmap-*): o tema claro usa um azul mais escuro (T-055) */
.grafico__area { fill: hsl(var(--dado) / .14); }
.grafico__linha { fill: none; stroke: hsl(var(--dado)); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.grafico__ponto { fill: hsl(var(--superficie)); stroke: hsl(var(--dado)); stroke-width: 1.5; cursor: pointer; transition: r .15s; }
.grafico__ponto:hover, .grafico__ponto:focus-visible { r: 5; fill: var(--dado-destaque); outline: none; }
.grafico__barra { fill: var(--dado-barra); cursor: pointer; }
.grafico__barra:hover, .grafico__barra:focus-visible { fill: var(--dado-destaque); outline: none; }
.painel__ano { width: auto; min-height: 1.875rem; padding: .25rem .5rem; font-size: .8125rem; }

.heatmap { overflow-x: auto; padding-bottom: .25rem; }
.heatmap__meses { display: grid; grid-template-columns: repeat(var(--semanas, 53), .75rem); gap: 3px; margin-bottom: .25rem; font-family: var(--f-mono); font-size: .625rem; color: hsl(var(--texto-suave)); }
.heatmap__grade { display: grid; grid-template-columns: repeat(var(--semanas, 53), .75rem); grid-template-rows: repeat(7, .75rem); gap: 3px; }
.heatmap__celula { width: .75rem; height: .75rem; padding: 0; border: 0; border-radius: 2px; background: hsl(var(--card-alto)); cursor: pointer; }
.heatmap__celula--n1 { background: var(--heatmap-1); }
.heatmap__celula--n2 { background: var(--heatmap-2); }
.heatmap__celula--n3 { background: var(--heatmap-3); }
.heatmap__celula--n4 { background: var(--heatmap-4); }
.heatmap__celula:hover, .heatmap__celula:focus-visible { outline: 1px solid hsl(var(--texto)); outline-offset: 1px; box-shadow: none; }
.heatmap__celula--ativa { outline: 2px solid hsl(var(--texto)); outline-offset: 1px; }
.heatmap__legenda { display: flex; align-items: center; gap: 4px; margin-top: .5rem; font-size: .6875rem; }
.heatmap__legenda .heatmap__celula { cursor: default; }

.painel__buscas { display: grid; grid-template-columns: 1fr 1fr auto auto; gap: .5rem; align-items: end; margin-bottom: .75rem; }
@media (max-width: 900px) { .painel__buscas { grid-template-columns: 1fr; } }
.painel__avisos { margin: 0 0 .5rem; font-size: .75rem; }
/* chips longos (capacidade/previsao) quebram linha no celular em vez de alargar a pagina (T-041) */
.painel__capacidade { white-space: normal; max-width: 100%; height: auto; line-height: 1.4; }
.botao--drive svg { width: 1rem; height: 1rem; }
.botao[aria-disabled="true"] { opacity: .5; cursor: not-allowed; }

.viewer { position: fixed; inset: 0; z-index: 65; display: flex; flex-direction: column; background: hsl(var(--fundo)); }
.viewer__topo { display: flex; align-items: center; gap: 1rem; padding: .625rem 1rem; border-bottom: 1px solid hsl(var(--borda)); background: hsl(var(--superficie)); }
.viewer__topo h2 { margin: 0; flex: 1; font-size: .9375rem; }
.viewer__corpo { flex: 1; display: grid; grid-template-columns: 1fr 18rem; min-height: 0; }
.viewer__pdf { width: 100%; height: 100%; border: 0; background: #2b2b2b; }
.viewer__lateral { padding: 1rem; overflow-y: auto; border-left: 1px solid hsl(var(--borda)); }
.viewer__versoes { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; font-size: .8125rem; }
@media (max-width: 900px) { .viewer__corpo { grid-template-columns: 1fr; grid-template-rows: 1fr auto; } }

/* ---------- Criar contrato (T-035) ---------- */
.dropzone { display: block; padding: 1.25rem; text-align: center; font-size: .8125rem; border: 1px dashed hsl(var(--borda-forte)); border-radius: var(--raio); background: hsl(var(--card)); cursor: pointer; transition: border-color var(--transicao), background-color var(--transicao); }
.dropzone:hover, .dropzone:focus-visible, .dropzone--ativa { border-color: var(--cta); background: rgb(37 99 235 / .06); }
.arquivos { list-style: none; margin: .5rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .375rem; }
.arquivos__item { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; padding: .375rem .625rem; border: 1px solid hsl(var(--borda)); border-radius: var(--raio-p); font-size: .8125rem; }
.progresso { height: .3rem; overflow: hidden; border-radius: 999px; background: hsl(var(--card-alto)); }
.progresso__barra { width: 0; height: 100%; background: var(--cta); transition: width .2s; }
.perguntas__lista { margin: 0 0 1rem; padding-left: 1.25rem; display: flex; flex-direction: column; gap: .375rem; font-size: .8125rem; }
/* avisos do checklist (T-074): os do servidor e os da IA, sobrios, na borda amarela dos avisos */
.checklist__avisos, .construcao__notas {
  margin: 0 0 1rem; padding: .5rem .75rem; border: 1px solid hsl(var(--borda-forte)); border-left: 3px solid hsl(var(--amarelo));
  border-radius: var(--raio-p); background: hsl(var(--card)); font-size: .8125rem;
}
.checklist__avisos-titulo, .construcao__notas-titulo { margin: 0 0 .25rem; font-size: .8125rem; }
/* trava do checklist (T-089): o pedido em geracao ou ja gerado; o mesmo cartao sobrio, na borda da acao */
.checklist__trava {
  margin: 0 0 1rem; padding: .625rem .75rem; border: 1px solid hsl(var(--borda-forte)); border-left: 3px solid var(--cta);
  border-radius: var(--raio-p); background: hsl(var(--card)); font-size: .8125rem; display: flex; flex-direction: column; gap: .5rem;
}
.checklist__trava p { margin: 0; }
.tabela-editor input[aria-invalid="true"] { border-color: hsl(var(--vermelho)); }
.checklist__avisos-lista, .construcao__notas-lista { margin: 0; padding-left: 1.25rem; display: flex; flex-direction: column; gap: .25rem; }
.secao { padding: 1rem; border: 1px solid hsl(var(--borda)); border-radius: var(--raio); background: hsl(var(--superficie)); display: flex; flex-direction: column; gap: .625rem; }
.secao--removida { opacity: .6; }
.secao__topo { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.secao__topo h3 { margin: 0; flex: 1; }
.campo-check { padding: .625rem .75rem; border: 1px solid hsl(var(--borda)); border-left-width: 3px; border-radius: var(--raio-p); background: hsl(var(--card)); display: flex; flex-direction: column; gap: .5rem; }
.campo-check--verde { border-left-color: hsl(var(--verde)); }
.campo-check--amarelo { border-left-color: hsl(var(--amarelo)); }
.campo-check--vermelho { border-left-color: hsl(var(--vermelho)); }
.campo-check__cab { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; font-size: .8125rem; }
.campo-check__origem { font-size: .75rem; color: hsl(var(--texto-suave)); }
.campo-check__corpo { display: grid; grid-template-columns: 1fr auto; gap: .5rem; align-items: start; }
@media (max-width: 700px) { .campo-check__corpo { grid-template-columns: 1fr; } }
.tabela-editor input { min-height: 2rem; padding: .25rem .5rem; }
.passos { list-style: none; margin: 0 0 1rem; padding: 0; display: flex; gap: .5rem; flex-wrap: wrap; counter-reset: passo; }
.passos__item { padding: .3rem .625rem; border-radius: var(--raio-p); border: 1px solid hsl(var(--borda-forte)); font-size: .75rem; color: hsl(var(--texto-suave)); }
.passos__item::before { counter-increment: passo; content: counter(passo) ". "; font-family: var(--f-mono); }
.passos__item--feito { border-color: hsl(var(--verde) / .5); color: hsl(var(--verde)); }
.passos__item--atual { border-color: var(--cta); color: hsl(var(--texto)); background: rgb(37 99 235 / .15); }

/* ---------- Contrato (T-036) ---------- */
.abas { display: flex; gap: .125rem; flex-wrap: wrap; border-bottom: 1px solid hsl(var(--borda)); }
.abas__aba { padding: .5rem .75rem; border: 0; border-bottom: 2px solid transparent; background: none; color: hsl(var(--texto-suave)); font-size: .8125rem; font-weight: 500; }
.abas__aba:hover { color: hsl(var(--texto)); }
.abas__aba[aria-selected="true"] { color: hsl(var(--texto)); border-bottom-color: var(--cta); }
.abas__painel { padding-top: 1rem; }
.contrato__pdf { width: 100%; height: 75vh; border: 1px solid hsl(var(--borda)); border-radius: var(--raio); background: #2b2b2b; }
.contrato__indicador { white-space: nowrap; }
.editor { display: flex; flex-direction: column; gap: .375rem; padding: 1.5rem; border: 1px solid hsl(var(--borda)); border-radius: var(--raio); background: hsl(var(--superficie)); font-family: var(--f-serif); font-size: 1rem; line-height: 1.6; }
.editor__bloco { padding: .375rem .5rem; border-radius: var(--raio-p); border: 1px solid transparent; white-space: pre-wrap; text-align: justify; }
.editor__bloco:hover { border-color: hsl(var(--borda-forte)); }
.editor__bloco:focus { outline: none; border-color: var(--cta); background: rgb(37 99 235 / .06); box-shadow: none; }
.editor__bloco--negrito { font-weight: 700; }
.editor__bloco--celula { font-family: var(--f-mono); font-size: .8125rem; border-left: 3px solid hsl(var(--borda-forte)); }

/* ---------- Contratos (T-041) ---------- */
.contratos__filtros { flex-wrap: wrap; }
.contratos__filtros .campo__entrada { width: auto; min-width: 9rem; min-height: 2rem; padding: .25rem .5rem; font-size: .8125rem; }
.contratos__rodape { flex-wrap: wrap; gap: var(--espaco-2); font-size: .75rem; }
@media (max-width: 720px) {
  .contratos__filtros .campo__entrada { flex: 1 1 100%; }
}

/* ---------- Admin (T-037): cotas da chave com rotulo visivel ---------- */
.admin__cotas { display: flex; align-items: flex-end; gap: .375rem .5rem; flex-wrap: wrap; }
.admin__cotas .campo { gap: .125rem; }
.admin__cotas .campo__rotulo { font-size: .75rem; white-space: nowrap; }
.admin__cotas .campo__entrada { width: 7.5rem; min-height: 2rem; padding: .25rem .5rem; font-family: var(--f-mono); }

/* ---------- Configuracoes (T-055) ---------- */
.configuracoes__cabecalho h2 { margin-bottom: .125rem; }
.configuracoes__cabecalho p { margin: 0; font-size: .8125rem; }
.configuracoes__usuario { display: flex; align-items: center; gap: .375rem; flex-wrap: wrap; margin: 0; font-size: .8125rem; }
.opcoes-tema { min-width: 0; margin: 0; padding: 0; border: 0; }
.opcoes-tema legend { padding: 0; margin-bottom: .5rem; }
.opcoes-tema__lista { display: flex; flex-wrap: wrap; gap: .5rem; }
.opcao-tema {
  display: flex; align-items: center; gap: .625rem; flex: 1 1 12rem; max-width: 18rem;
  padding: .625rem .75rem; border: 1px solid hsl(var(--borda-forte)); border-radius: var(--raio-p);
  background: hsl(var(--card)); cursor: pointer; transition: border-color var(--transicao);
}
.opcao-tema:hover { border-color: hsl(var(--texto-suave)); }
.opcao-tema--marcada, .opcao-tema--marcada:hover { border-color: var(--cta); }
.opcao-tema input { flex: none; margin: 0; accent-color: var(--cta); }
.opcoes-tema:disabled .opcao-tema { cursor: progress; }
/* amostra fixa de cada tema (mostra o fundo daquele tema, qualquer que seja o atual) */
.opcao-tema__amostra { flex: none; width: 1.75rem; height: 1.25rem; border-radius: 2px; border: 1px solid hsl(var(--borda-forte)); }
.opcao-tema__amostra--escuro { background: hsl(0 0% 7%); }
.opcao-tema__amostra--claro { background: hsl(0 0% 100%); }
.opcao-tema__texto { display: grid; gap: .0625rem; min-width: 0; }
.opcao-tema__rotulo { font-size: .8125rem; font-weight: 500; }
.opcao-tema__descricao { font-size: .75rem; color: hsl(var(--texto-suave)); }

/* ---------- Apresentacoes (T-065): lista, editor por zonas, versoes e links ---------- */
.opcao-marcar { display: inline-flex; align-items: center; gap: .5rem; font-size: .8125rem; color: hsl(var(--texto-suave)); cursor: pointer; }
.opcao-marcar input { flex: none; margin: 0; accent-color: var(--cta); }
.apresentacao__meta { gap: .5rem; margin: .125rem 0 0; font-size: .8125rem; }
.editor-deck { display: grid; grid-template-columns: 15rem minmax(0, 1fr) 20rem; gap: 1rem; align-items: start; }
.editor-deck__slides h2, .editor-deck__campos h2 { margin-bottom: .75rem; }
.editor-deck__inserir { margin-top: .75rem; padding-top: .75rem; border-top: 1px solid hsl(var(--borda)); }
.editor-deck__inserir .botao { width: 100%; }
.editor-deck__previa { min-width: 0; }
.editor-deck__caixa { width: 100%; aspect-ratio: 16 / 9; border: 1px solid hsl(var(--borda)); border-radius: var(--raio); background: #000; overflow: hidden; }
.editor-deck__quadro { display: block; width: 100%; height: 100%; border: 0; background: #000; }
.editor-deck__caixa--todos { aspect-ratio: auto; height: 72vh; }
.editor-deck__rodape { margin-top: .25rem; }
.deck-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .25rem; max-height: 60vh; overflow-y: auto; }
.deck-lista__item { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: .25rem; border: 1px solid transparent; border-radius: var(--raio-p); }
.deck-lista__item:hover { background: hsl(var(--card)); }
.deck-lista__item--ativo, .deck-lista__item--ativo:hover { border-color: hsl(var(--borda-forte)); background: hsl(var(--card-alto)); box-shadow: inset 2px 0 0 var(--cta); }
.deck-lista__abrir { display: grid; gap: .125rem; min-width: 0; padding: .4rem .5rem; border: 0; background: none; color: hsl(var(--texto)); text-align: left; }
.deck-lista__numero { font-family: var(--f-mono); font-size: .625rem; letter-spacing: .04em; color: hsl(var(--texto-suave)); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.deck-lista__titulo { font-size: .8125rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.deck-lista__acoes { display: flex; gap: .125rem; padding-right: .25rem; }
.deck-lista__acao { width: 1.5rem; height: 1.5rem; padding: 0; border: 1px solid hsl(var(--borda)); border-radius: var(--raio-p); background: hsl(var(--card)); color: hsl(var(--texto-suave)); font-size: .75rem; line-height: 1; }
.deck-lista__acao:hover:not(:disabled) { border-color: hsl(var(--borda-forte)); color: hsl(var(--texto)); }
.deck-lista__acao:disabled { opacity: .35; cursor: not-allowed; }
.zona__cabecalho { display: flex; align-items: center; gap: .5rem; }
.zona__cabecalho .campo__rotulo { flex: 1; min-width: 0; }
.zona__contador { font-family: var(--f-mono); font-size: .6875rem; color: hsl(var(--texto-suave)); }
.zona__contador--excedido { color: hsl(var(--vermelho)); }
.zona__erro { margin: .25rem 0 0; font-size: .75rem; line-height: 1.4; color: hsl(var(--vermelho)); }
.editor-deck__aviso { margin: 0; line-height: 1.4; }
.link-form { display: grid; grid-template-columns: repeat(2, minmax(0, 14rem)) auto; justify-content: start; gap: .75rem; align-items: end; }
.link-form__acao { align-items: flex-start; }
.link-criado { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .5rem; align-items: center; }
@media (max-width: 1279px) {
  .editor-deck { grid-template-columns: 14rem minmax(0, 1fr); }
  .editor-deck__campos { grid-column: 1 / -1; }
}
@media (max-width: 900px) {
  .editor-deck { grid-template-columns: minmax(0, 1fr); }
  .deck-lista { max-height: 40vh; }
  .link-form { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- Simulador (T-063) ----------
   Cenarios em abas; formulario a esquerda e resultado preso a direita (no celular o resultado vai para
   baixo e uma barra com o preco fica presa no rodape). So tokens do tema: vale no escuro e no claro. */
.simulador__cenarios { display: flex; align-items: flex-end; justify-content: space-between; gap: .5rem 1rem; flex-wrap: wrap; border-bottom: 1px solid hsl(var(--borda)); }
.simulador__abas { border-bottom: 0; }
.simulador__aba-tipo { font-weight: 400; color: hsl(var(--texto-suave)); }
.simulador__acoes-cenarios { padding-bottom: .375rem; }
.simulador__corpo { display: grid; grid-template-columns: minmax(0, 1fr) minmax(18rem, 22rem); gap: 1.125rem; align-items: start; }
.simulador__formulario { padding: 0; }
.simulador__secao { display: flex; flex-direction: column; gap: .75rem; min-width: 0; padding: 1rem 1.125rem; border-top: 1px solid hsl(var(--borda)); }
.simulador__secao:first-child { border-top: 0; }
.simulador__secao-titulo { margin: 0; font-size: .875rem; }
.simulador__secao-texto { margin: -.5rem 0 0; font-size: .75rem; }
.simulador__campos { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fill, minmax(9.5rem, 1fr)); }
.simulador__campos .campo__rotulo { font-size: .75rem; }
.simulador__escolha { display: flex; flex-wrap: wrap; gap: .5rem; min-width: 0; margin: 0; padding: 0; border: 0; }
.simulador__escolha legend { width: 100%; margin-bottom: .375rem; padding: 0; }
.simulador__opcoes { display: flex; flex-wrap: wrap; gap: .5rem; }
.simulador__opcao {
  display: inline-flex; align-items: flex-start; gap: .5rem;
  padding: .45rem .625rem; border: 1px solid hsl(var(--borda-forte)); border-radius: var(--raio-p);
  background: hsl(var(--card)); font-size: .8125rem; cursor: pointer; transition: border-color var(--transicao);
}
.simulador__opcao:hover { border-color: hsl(var(--texto-suave)); }
.simulador__opcao:has(input:checked) { border-color: var(--cta); }
.simulador__opcao input { flex: none; width: 1rem; height: 1rem; margin: .125rem 0 0; accent-color: var(--cta); }
.simulador__opcao-texto { display: grid; gap: .0625rem; }
.simulador__dica-linha { display: flex; align-items: center; gap: .25rem .75rem; flex-wrap: wrap; }
.simulador__dica { margin: 0; font-size: .75rem; color: hsl(var(--texto-suave)); }
.simulador__dica-alerta { font-size: .75rem; color: hsl(var(--amarelo)); }
.simulador__dica-alerta:empty { display: none; }
.simulador__vazio { margin: 0; font-size: .8125rem; }

/* tabelas com campos (escopo PERT, custos extras, infraestrutura) */
.simulador__tabela th, .simulador__tabela td { padding: .375rem; }
.simulador__tabela th:first-child { width: 45%; }
.simulador__tabela tbody tr:hover { background: transparent; }
.simulador__tabela input, .simulador__tabela select {
  width: 100%; min-width: 3.5rem; min-height: 2rem; padding: .25rem .5rem;
  border: 1px solid hsl(var(--borda-forte)); border-radius: var(--raio-p); background: hsl(var(--card)); color: hsl(var(--texto));
}
.simulador__tabela select { min-width: 5.5rem; padding-right: .25rem; }
.simulador__tabela input[type="checkbox"] { width: 1rem; min-width: 0; min-height: 0; height: 1rem; padding: 0; accent-color: var(--cta); }
.simulador__tabela input:focus-visible, .simulador__tabela select:focus-visible { border-color: var(--cta); }
.simulador__tabela .simulador__nome { min-width: 9rem; }
.simulador__tabela .simulador__numero { min-width: 3.5rem; font-family: var(--f-mono); }
.simulador__tabela abbr { text-decoration: none; cursor: help; }
.simulador__remover { font-size: 1rem; line-height: 1; }
.simulador__tabela .simulador__entrada--erro { border-color: hsl(var(--vermelho)); }
.simulador__centro { text-align: center; }
.simulador__aviso-lista { margin: 0; font-size: .75rem; color: hsl(var(--vermelho)); }
.simulador__aviso-lista:empty { display: none; }
.simulador__parametros { display: grid; grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr)); gap: .625rem 1rem; margin: 0; }
.simulador__parametros div { display: grid; gap: .0625rem; min-width: 0; }
.simulador__parametros dt { font-size: .6875rem; color: hsl(var(--texto-suave)); }
.simulador__parametros dd { margin: 0; font-family: var(--f-mono); font-size: .75rem; }

/* resultado */
.simulador__lateral { display: flex; flex-direction: column; gap: .875rem; min-width: 0; position: sticky; top: 1rem; max-height: calc(100vh - 2rem); overflow-y: auto; overscroll-behavior: contain; }
.simulador__resultado { display: flex; flex-direction: column; gap: .625rem; }
.simulador__resultado-topo { display: flex; align-items: baseline; justify-content: space-between; gap: .25rem .75rem; flex-wrap: wrap; }
.simulador__resultado-topo h2 { margin: 0; }
.simulador__subtitulo { margin: 0; font-size: .75rem; color: hsl(var(--texto-suave)); }
.simulador__status { margin: 0; font-size: .75rem; color: hsl(var(--texto-suave)); }
.simulador__status:empty { display: none; }
.simulador__status--erro { color: hsl(var(--vermelho)); }
.simulador__numeros, .simulador__detalhes { display: flex; flex-direction: column; gap: .625rem; transition: opacity var(--transicao); }
.simulador__detalhes:empty { display: none; }
.simulador__lateral--calculando .simulador__numeros, .simulador__lateral--calculando .simulador__detalhes,
.simulador__lateral--calculando .simulador__complementos,
.simulador__lateral--desatualizado .simulador__numeros, .simulador__lateral--desatualizado .simulador__detalhes,
.simulador__lateral--desatualizado .simulador__complementos { opacity: .55; }
/* resultado velho (erro ou campo invalido): marca visivel acima do preco */
.simulador__desatualizado { display: flex; align-items: flex-start; gap: .5rem; margin: 0; font-size: .75rem; color: hsl(var(--texto-suave)); }
.simulador__desatualizado .badge { flex: none; }
.simulador__motivo { margin: -.25rem 0 0; font-size: .75rem; color: hsl(var(--texto-suave)); }
.simulador__motivo:empty { display: none; }
.simulador__preco-rotulo, .simulador__pagamento { margin: 0; font-size: .75rem; color: hsl(var(--texto-suave)); }
.simulador__preco { margin: 0; font-family: var(--f-mono); font-size: 1.75rem; font-weight: 500; line-height: 1.1; }
.simulador__margem { display: flex; align-items: center; gap: .375rem .5rem; flex-wrap: wrap; font-size: .8125rem; }
.simulador__margem strong { font-family: var(--f-mono); font-weight: 500; }
.simulador__margem .suave { font-size: .75rem; }
.simulador__bloqueio { margin: 0; padding: .5rem .75rem; border: 1px solid hsl(var(--vermelho) / .6); border-left-width: 3px; border-radius: var(--raio-p); background: hsl(var(--card)); font-size: .8125rem; }
.simulador__detalhe { display: grid; grid-template-columns: minmax(0, 1fr) auto; margin: 0; font-size: .8125rem; }
.simulador__detalhe dt, .simulador__detalhe dd { padding: .3125rem 0; border-top: 1px solid hsl(var(--borda)); }
.simulador__detalhe dd { margin: 0; padding-left: .75rem; font-family: var(--f-mono); text-align: right; white-space: nowrap; }
.simulador__detalhe small { display: block; font-size: .6875rem; color: hsl(var(--texto-suave)); }
.simulador__detalhe .simulador__total { font-weight: 600; }
.simulador__criar { width: 100%; }
.simulador__complementos { display: flex; flex-direction: column; gap: .875rem; transition: opacity var(--transicao); }
.simulador__cartao { display: flex; flex-direction: column; gap: .625rem; }
.simulador__cartao h3 { margin: 0; }
.simulador__opcoes-pagamento td small { font-size: .6875rem; color: hsl(var(--texto-suave)); }
.simulador__opcoes-pagamento .tabela__num { white-space: nowrap; text-align: right; }
.simulador__opcao-rotulo { display: inline-flex; align-items: center; gap: .375rem; flex-wrap: wrap; }
.simulador__escolhida td { background: hsl(var(--card-alto)); }
.simulador__escolhida td:first-child { box-shadow: inset 2px 0 0 var(--cta); }
.simulador__recomendacao { display: flex; flex-direction: column; align-items: flex-start; gap: .375rem; margin: 0; font-size: .75rem; }
.simulador__fatores { margin: 0; font-size: .8125rem; }
.simulador__avisos { margin: 0; padding-left: 1.125rem; display: flex; flex-direction: column; gap: .25rem; font-size: .75rem; color: hsl(var(--texto-suave)); }

/* comparacao lado a lado */
.simulador__comparacao .card__titulo p { margin: 0; font-size: .75rem; }
.simulador__tabela-comparacao th, .simulador__tabela-comparacao td { white-space: nowrap; }
.simulador__tabela-comparacao th:first-child { width: 12rem; }
.simulador__tabela-comparacao tbody th { font-family: var(--f-sans); font-size: .8125rem; font-weight: 500; letter-spacing: 0; text-transform: none; color: hsl(var(--texto-suave)); background: transparent; }
.simulador__tabela-comparacao td { font-family: var(--f-mono); }
.simulador__tabela-comparacao td small { font-family: var(--f-sans); font-size: .6875rem; color: hsl(var(--texto-suave)); }
.simulador__coluna {
  display: inline-flex; flex-direction: column; align-items: flex-start; gap: .0625rem; padding: 0;
  border: 0; background: none; color: inherit; font: inherit; letter-spacing: inherit; text-transform: inherit; text-align: left;
}
.simulador__coluna:hover { color: hsl(var(--texto)); }
.simulador__coluna-tipo { font-family: var(--f-sans); font-size: .6875rem; letter-spacing: 0; text-transform: none; }
.simulador__coluna--ativa { color: hsl(var(--texto)); box-shadow: inset 0 -2px 0 var(--cta); }
.simulador__celula--ativa { background: hsl(var(--card)); }
.simulador__celula--calculando > * { opacity: .55; }

/* barra do preco no celular (a mesma informacao do resultado, presa no rodape enquanto o formulario rola) */
.simulador__barra { display: none; }
@media (max-width: 1100px) {
  .simulador__corpo { grid-template-columns: minmax(0, 1fr); }
  .simulador__lateral { position: static; max-height: none; overflow: visible; }
  .simulador__barra {
    display: flex; align-items: center; gap: .375rem .75rem; flex-wrap: wrap; position: sticky; bottom: .5rem; z-index: 20;
    padding: .5rem .75rem; border: 1px solid hsl(var(--borda-forte)); border-radius: var(--raio);
    background: hsl(var(--superficie)); box-shadow: var(--sombra-flutuante); font-size: .8125rem;
  }
  .simulador__campos { grid-template-columns: repeat(auto-fill, minmax(8.5rem, 1fr)); }
  .simulador__tabela-comparacao th:first-child { width: 7rem; white-space: normal; }
  .simulador__barra-preco { font-family: var(--f-mono); font-weight: 500; }
  .simulador__barra-status { color: hsl(var(--texto-suave)); font-size: .75rem; }
  .simulador__barra--calculando .simulador__barra-preco { opacity: .55; }
}

/* ---------- Gantt (T-058) ----------
   CPM (SVG desenhado pela logica pura) e Gantt lado a lado; abaixo de 1100 px, abas. As cores seguem os tokens,
   entao os dois temas funcionam: barra = texto (escura no claro, clara no escuro), critica = vermelho, visita = amarelo. */
.gantt__form .grade--4 { align-items: start; }
.gantt__atividades summary { cursor: pointer; font-size: .8125rem; font-weight: 500; color: hsl(var(--texto)); }
.gantt__atividades[open] summary { margin-bottom: .5rem; }
.gantt__tabela-atividades input[type="text"] { width: 5rem; min-height: 1.875rem; padding: .2rem .45rem; border: 1px solid hsl(var(--borda-forte));
  border-radius: var(--raio-p); background: hsl(var(--card)); color: hsl(var(--texto)); font-family: var(--f-mono); }
.gantt__tabela-atividades input[type="checkbox"] { accent-color: var(--cta); }
.gantt__downloads { flex-wrap: wrap; }
.gantt__avisos { margin: 0; padding-left: 1.125rem; font-size: .75rem; color: hsl(var(--texto-suave)); }
.gantt__caminho { margin: 0; font-family: var(--f-mono); font-size: .75rem; color: hsl(var(--texto-suave)); overflow-wrap: anywhere; }
.gantt__abas { display: none; }
.gantt__visoes { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1rem; align-items: start; }
.gantt__painel { display: flex; flex-direction: column; gap: .5rem; min-width: 0; }
.gantt__painel h3 { margin: 0; font-size: .875rem; }
.gantt__rolagem { max-width: 100%; max-height: 72vh; overflow: auto; border: 1px solid hsl(var(--borda)); border-radius: var(--raio); background: hsl(var(--card)); }
.gantt__rolagem:focus-visible { outline: 2px solid var(--cta); outline-offset: 2px; }
.gantt__legenda { display: flex; flex-wrap: wrap; gap: .25rem 1rem; margin: 0; padding: 0; list-style: none; font-size: .75rem; color: hsl(var(--texto-suave)); }
.gantt__amostra { display: inline-block; width: .875rem; height: .625rem; margin-right: .375rem; vertical-align: -1px; border: 1px solid hsl(var(--borda-forte)); }
.gantt__amostra--barra { background: hsl(var(--texto) / .8); }
.gantt__amostra--critica { background: hsl(var(--vermelho)); }
.gantt__amostra--comercial { background: hsl(var(--texto-suave)); }
.gantt__amostra--visita { background: hsl(var(--amarelo)); }
.gantt__comparar { display: flex; align-items: center; gap: .5rem; width: fit-content; font-size: .8125rem; cursor: pointer; }
.gantt__comparar input { width: 1rem; height: 1rem; margin: 0; accent-color: var(--cta); }
.gantt__importacao { display: flex; flex-direction: column; gap: .625rem; }
.gantt__importacao:empty { display: none; }
.gantt__importacao p { margin: 0; }
.gantt__importacao-titulo { font-family: var(--f-mono); font-size: .75rem; color: hsl(var(--texto-suave)); }
.gantt__lista { margin: 0; padding-left: 1.125rem; display: flex; flex-direction: column; gap: .25rem; font-size: .8125rem; }
.gantt__igual { color: hsl(var(--verde)); font-weight: 500; }
.gantt__diferente { color: hsl(var(--amarelo)); font-weight: 500; }

/* tamanho natural (o base.css limita svg a 100%): com 40 atividades o texto continua legivel e a area rola */
.cpm-svg { display: block; max-width: none; }
.cpm-faixa { fill: hsl(var(--texto) / .035); }
.cpm-trilha { fill: hsl(var(--texto-suave)); font-size: 11px; font-weight: 600; }
.cpm-trilha--critica { fill: hsl(var(--vermelho)); }
.cpm-comercial__quadro { fill: hsl(var(--superficie)); stroke: hsl(var(--borda-forte)); stroke-dasharray: 4 3; }
.cpm-comercial__titulo { fill: hsl(var(--texto)); font-size: 12px; font-weight: 600; }
.cpm-comercial__subtitulo { fill: hsl(var(--texto-suave)); font-size: 10px; }
.cpm-comercial__item { fill: hsl(var(--texto)); font-size: 11px; }
.cpm-caixa { fill: hsl(var(--superficie)); stroke: hsl(var(--borda-forte)); stroke-width: 1; }
.cpm-no--critico .cpm-caixa { stroke: hsl(var(--vermelho)); stroke-width: 2; }
.cpm-no--marco .cpm-caixa { stroke-dasharray: 5 3; }
.cpm-divisoria { stroke: hsl(var(--borda)); stroke-width: 1; }
.cpm-visita { fill: hsl(var(--amarelo)); }
.cpm-tempo { fill: hsl(var(--texto-suave)); font-family: var(--f-mono); font-size: 10px; }
.cpm-rotulo { fill: hsl(var(--texto)); font-size: 11px; }
.cpm-no--critico .cpm-rotulo { font-weight: 600; }
.cpm-seta { fill: none; stroke: hsl(var(--texto-suave)); stroke-width: 1.25; }
.cpm-seta--critica { stroke: hsl(var(--vermelho)); stroke-width: 2; }
.cpm-seta--entrada { stroke-dasharray: 4 3; }
.cpm-ponta { fill: hsl(var(--texto-suave)); }
.cpm-ponta--critica { fill: hsl(var(--vermelho)); }

.gantt-grade { border-collapse: separate; border-spacing: 0; font-size: .75rem; }
.gantt-grade th, .gantt-grade td { height: 1.5rem; padding: 0; border-right: 1px solid hsl(var(--borda)); border-bottom: 1px solid hsl(var(--borda)); }
.gantt-grade thead th { position: sticky; z-index: 2; padding: 0 .25rem; background: hsl(var(--card-alto)); font-family: var(--f-mono);
  font-size: .625rem; font-weight: 500; color: hsl(var(--texto-suave)); text-align: center; white-space: nowrap; }
.gantt-grade thead tr:first-child th { top: 0; }
.gantt-grade thead tr:nth-child(2) th { top: 1.5rem; }
.gantt-grade .gantt-grade__num, .gantt-grade .gantt-grade__cod, .gantt-grade .gantt-grade__nome { position: sticky; z-index: 1; background: hsl(var(--card)); }
.gantt-grade thead .gantt-grade__num, .gantt-grade thead .gantt-grade__cod, .gantt-grade thead .gantt-grade__nome { z-index: 3; background: hsl(var(--card-alto)); }
.gantt-grade .gantt-grade__num { left: 0; min-width: 2.25rem; text-align: center; }
.gantt-grade .gantt-grade__cod { left: 2.25rem; min-width: 2.75rem; font-family: var(--f-mono); text-align: center; }
.gantt-grade .gantt-grade__nome { left: 5rem; min-width: 15rem; max-width: 15rem; padding: 0 .5rem; overflow: hidden; text-align: left;
  text-overflow: ellipsis; white-space: nowrap; font-weight: 500; }
.gantt-grade .gantt-grade__nome--visita { box-shadow: inset 3px 0 0 hsl(var(--amarelo)); }
.gantt-grade__linha--critica .gantt-grade__nome { color: hsl(var(--vermelho)); }
.gantt-grade__linha--comercial .gantt-grade__nome { color: hsl(var(--texto-suave)); }
.gantt-grade .gantt-grade__horas, .gantt-grade .gantt-grade__prec { min-width: 3.5rem; padding: 0 .375rem; font-family: var(--f-mono); text-align: center; white-space: nowrap; }
.gantt-grade__semana, .gantt-grade__celula { min-width: 1.5rem; }
.gantt-grade__celula--barra { background: hsl(var(--texto) / .8); }
.gantt-grade__celula--barra-critica { background: hsl(var(--vermelho)); }
.gantt-grade__celula--comercial { background: hsl(var(--texto-suave)); }
.gantt-grade .gantt-grade__semana--bloqueada, .gantt-grade__celula--bloqueada { background: hsl(var(--borda)); }
.gantt-grade .gantt-grade__faixa { min-width: 1.5rem; background: hsl(var(--vermelho)); color: hsl(var(--texto-sobre-cor)); font-size: .625rem; font-weight: 700;
  letter-spacing: .04em; text-align: center; vertical-align: middle; }
.gantt-grade__faixa span { display: inline-block; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; }

@media (max-width: 1099px) {
  .gantt__abas { display: flex; }
  .gantt__visoes { grid-template-columns: minmax(0, 1fr); }
  .gantt__visoes[data-aba="cpm"] .gantt__painel--gantt, .gantt__visoes[data-aba="gantt"] .gantt__painel--cpm { display: none; }
}
/* celular: so codigo e um nome mais curto ficam fixos, para sobrar largura para as semanas */
@media (max-width: 640px) {
  .gantt-grade .gantt-grade__num { left: auto; }
  .gantt-grade .gantt-grade__cod { left: 0; }
  .gantt-grade .gantt-grade__nome { left: 2.75rem; min-width: 8.5rem; max-width: 8.5rem; }
}

/* ---------- Metas (T-062) ----------
   Cores so por tokens (dois temas): realizado no azul das series (--dado), meta tracejada no texto suave. */
/* controles sempre abaixo do titulo: trocar de ano nao faz o bloco pular de lugar */
.metas .tela__topo { flex-direction: column; align-items: flex-start; gap: .75rem; }
.metas__controles { display: flex; align-items: center; gap: .625rem; flex-wrap: wrap; }
.metas__rotulo { font-size: .8125rem; color: hsl(var(--texto-suave)); }
.metas__ano { width: auto; min-height: 2rem; padding: .25rem .5rem; font-size: .8125rem; }
.metas__meta, .metas__editor { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; font-size: .8125rem; }
.metas__meta { padding-left: .75rem; border-left: 1px solid hsl(var(--borda-forte)); }
@media (max-width: 600px) { .metas__meta { padding-left: 0; border-left: 0; } } /* quebrada em linha propria no celular */
.metas__meta-rotulo { color: hsl(var(--texto-suave)); }
.metas__meta-valor { font-family: var(--f-mono); font-weight: 500; }
.metas__meta-valor--vazia { font-family: var(--f-sans); font-weight: 400; color: hsl(var(--texto-suave)); }
.metas__meta-nota { font-size: .75rem; }
.metas__editor .campo__entrada { width: 8.5rem; min-height: 2rem; padding: .25rem .5rem; font-family: var(--f-mono); }
.metas__corpo { gap: 1.125rem; }
.metas__ajuda { margin: -.5rem 0 0; font-size: .75rem; }
.metas__subtitulo { margin: -.375rem 0 .75rem; font-size: .75rem; }
/* valores em reais nao quebram depois do "R$": cartoes com largura minima para 12 caracteres em mono */
.metas__cartoes { grid-template-columns: repeat(auto-fit, minmax(11.5rem, 1fr)); }
.metas__kpis { grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: .625rem; }
@media (min-width: 1024px) { .metas__kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } } /* 6 KPIs em 2 linhas cheias */
.metas__kpis .stat { background: hsl(var(--card)); }
.stat__linha { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.metas .stat__valor { font-size: 1.25rem; white-space: nowrap; }
.metas .stat__valor--vazio { font-family: var(--f-sans); font-size: .9375rem; font-weight: 400; line-height: 1.6; white-space: normal; color: hsl(var(--texto-suave)); }
.grafico--metas .grafico__eixo { font-size: 11px; } /* viewBox na largura real: 11 unidades = 11 px */
.grafico__meta { fill: none; stroke: hsl(var(--texto-suave)); stroke-width: 1.5; stroke-dasharray: 5 4; }
.grafico__ponto--fixo { cursor: default; }
.grafico__legenda { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; margin: 0; padding: 0; list-style: none; font-size: .75rem; color: hsl(var(--texto-suave)); }
.grafico__legenda li { display: inline-flex; align-items: center; gap: .375rem; }
.grafico__chave { width: 1.25rem; height: 0; border-top: 2px solid hsl(var(--dado)); }
.grafico__chave--meta { border-top: 2px dashed hsl(var(--texto-suave)); }
.metas__tabela th, .metas__tabela td { white-space: nowrap; }
.metas__tabela tbody tr:last-child th { border-bottom: 0; }
.metas__tabela tbody th { font-family: var(--f-sans); font-size: .8125rem; font-weight: 500; letter-spacing: 0; text-transform: none; color: hsl(var(--texto)); background: transparent; }
.metas__tabela tr[aria-current="date"] th { box-shadow: inset 2px 0 0 var(--cta); }
.metas__tabela tr[aria-current="date"] td, .metas__tabela tr[aria-current="date"] th { background: hsl(var(--card)); }
.metas__mes--futuro th, .metas__mes--futuro td { color: hsl(var(--texto-suave)); }
.metas__negativo { color: hsl(var(--vermelho)); }


/* ---------- Configuracoes: Precificacao (T-056) ---------- */
.config-preco { min-width: 0; }
.config-preco__status { display: flex; align-items: center; justify-content: space-between; gap: .5rem .75rem; flex-wrap: wrap; }
.config-preco__versao { display: flex; align-items: center; gap: .375rem .625rem; flex-wrap: wrap; margin: 0; font-size: .8125rem; }
.config-preco__versao strong { font-weight: 600; }
.config-preco__ajuda { margin: 0; max-width: 78ch; font-size: .75rem; color: hsl(var(--texto-suave)); }
.config-preco__aviso {
  display: flex; align-items: center; justify-content: space-between; gap: .5rem .75rem; flex-wrap: wrap;
  padding: .5rem .75rem; border: 1px solid hsl(var(--borda-forte)); border-left: 3px solid hsl(var(--vermelho));
  border-radius: var(--raio-p); background: hsl(var(--card)); font-size: .8125rem;
}
.config-preco__aviso p { margin: 0; }
.config-preco__aviso--info { border-left-color: var(--cta); }
.config-preco__impacto .stat { align-content: start; }
.config-preco__frase { font-size: .75rem; color: hsl(var(--texto)); }
.config-preco__frase:empty { display: none; }
.abas__contagem { color: hsl(var(--vermelho)); font-family: var(--f-mono); font-size: .75rem; }
.config-preco__painel { padding-top: .25rem; }

/* grupos: fieldset sem caixa, separado por um fio, como as secoes do site */
.config-preco__grupo { min-width: 0; margin: 0; padding: 1rem 0 0; border: 0; border-top: 1px solid hsl(var(--borda)); display: flex; flex-direction: column; gap: .625rem; }
.config-preco__grupo:first-child { padding-top: 0; border-top: 0; }
.config-preco__grupo-titulo { float: left; width: 100%; padding: 0; margin: 0; font-family: var(--f-display); font-size: .875rem; font-weight: 600; }
.config-preco__grupo-titulo + * { clear: both; }
.config-preco__campos { display: grid; gap: .75rem 1rem; grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); align-items: start; }
.config-preco__campo--largo { grid-column: 1 / -1; }
.config-preco__campo--medio { grid-column: 1 / -1; max-width: 32rem; }
.config-preco__campo--ano { flex: 0 0 7rem; }
.config-preco__resumo { margin: 0; font-size: .8125rem; color: hsl(var(--texto-suave)); }
.config-preco__resumo--erro { color: hsl(var(--vermelho)); }

/* campo com unidade: R$ antes, %, h, km/l depois, colados na caixa */
.entrada-unidade { display: flex; align-items: stretch; min-width: 0; }
.entrada-unidade input { flex: 1 1 auto; min-width: 0; }
.entrada-unidade__afixo {
  display: inline-flex; align-items: center; flex: none; padding: 0 .5rem;
  border: 1px solid hsl(var(--borda-forte)); background: hsl(var(--card-alto));
  color: hsl(var(--texto-suave)); font-family: var(--f-mono); font-size: .75rem; white-space: nowrap;
}
.entrada-unidade__afixo--antes { border-right: 0; border-radius: var(--raio-p) 0 0 var(--raio-p); }
.entrada-unidade__afixo--depois { border-left: 0; border-radius: 0 var(--raio-p) var(--raio-p) 0; }
.config-preco .campo input.tem-antes { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.config-preco .campo input.tem-depois { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.config-preco .campo input[type="checkbox"] { width: 1rem; height: 1rem; min-height: 0; padding: 0; margin: 0; flex: none; accent-color: var(--cta); }
.config-preco__caixa { display: flex; align-items: center; gap: .5rem; min-height: 2rem; font-size: .8125rem; font-weight: 500; cursor: pointer; }
.config-preco--leitura .config-preco__caixa { cursor: default; }
.campo__anterior { font-size: .75rem; color: hsl(var(--primaria)); }
.campo__anterior:empty { display: none; }

/* marcas: alterado (azul de acao) e com erro (vermelho vence) */
.config-preco .entrada--alterada { border-color: var(--cta); }
.config-preco [aria-invalid="true"] { border-color: hsl(var(--vermelho)); }

/* matriz porte x dificuldade: tabela densa que rola dentro do cartao no celular */
.config-preco__matriz { min-width: 36rem; }
.config-preco__matriz td { vertical-align: top; }
.config-preco__matriz tbody tr:hover { background: transparent; }
.config-preco__matriz tbody tr:last-child th { border-bottom: 0; }
.config-preco__matriz th.config-preco__porte { font-family: var(--f-sans); font-size: .8125rem; font-weight: 500; letter-spacing: 0; text-transform: none; color: hsl(var(--texto)); background: transparent; vertical-align: top; padding-top: .9rem; }
.config-preco__celula { display: grid; gap: .375rem; }
.config-preco__faixa { display: flex; align-items: center; gap: .375rem; font-size: .75rem; color: hsl(var(--texto-suave)); }
.config-preco__matriz input {
  width: 4.5rem; min-height: 2rem; padding: .25rem .45rem;
  border: 1px solid hsl(var(--borda-forte)); border-radius: var(--raio-p);
  background: hsl(var(--card)); color: hsl(var(--texto)); font-family: var(--f-mono); font-size: .8125rem;
  transition: border-color var(--transicao), box-shadow var(--transicao);
}
.config-preco__matriz input:focus-visible { border-color: var(--cta); box-shadow: var(--anel-foco); }

/* infraestrutura mensal do recorrente: uma linha por item */
.config-preco__infra { display: flex; flex-direction: column; gap: .5rem; }
.config-preco__infra-linha { display: grid; grid-template-columns: minmax(0, 1fr) 10rem auto; gap: .5rem; align-items: center; }
.config-preco__infra-linha .campo__erro { grid-column: 1 / -1; }
.config-preco__vazio-lista { margin: 0; font-size: .8125rem; }

/* setores e meta: formularios de uma linha e renomear dentro da tabela */
.config-preco__linha-form { display: flex; align-items: flex-end; gap: .625rem; flex-wrap: wrap; }
.config-preco__linha-form .campo { flex: 1 1 14rem; }
.config-preco__linha-form .config-preco__campo--ano { flex: 0 0 7rem; }
.config-preco__renomear { display: flex; align-items: center; gap: .375rem; flex-wrap: wrap; }
.config-preco__renomear .campo__entrada { width: auto; flex: 1 1 12rem; min-height: 2rem; padding: .25rem .5rem; }
.config-preco__acoes { gap: .25rem .5rem; }

/* somente leitura (quem nao e admin): valor legivel, sem cara de campo editavel */
.config-preco--leitura .campo input[readonly], .config-preco--leitura .campo textarea[readonly],
.config-preco--leitura .config-preco__matriz input[readonly] { background: transparent; border-color: hsl(var(--borda)); }
.config-preco--leitura .campo select:disabled { opacity: 1; background: transparent; border-color: hsl(var(--borda)); }

/* barra de salvar: no fim da secao; com alteracoes pendentes fica presa ao pe da janela */
.config-preco__barra {
  display: flex; align-items: center; justify-content: space-between; gap: .5rem .75rem; flex-wrap: wrap;
  padding: .625rem .875rem; border: 1px solid hsl(var(--borda)); border-radius: var(--raio);
  background: hsl(var(--superficie));
}
.config-preco__barra p { margin: 0; font-size: .8125rem; color: hsl(var(--texto-suave)); }
.config-preco__barra--pendente { position: sticky; bottom: 0; z-index: 5; border-color: hsl(var(--borda-forte)); box-shadow: var(--sombra-flutuante); }
.config-preco__barra--pendente p { color: hsl(var(--texto)); }
@media (max-width: 560px) {
  .config-preco__infra-linha { grid-template-columns: minmax(0, 1fr) auto; }
  .config-preco__infra-linha .entrada-unidade { grid-column: 1 / 2; }
  .config-preco__barra { padding: .5rem .625rem; }
  .config-preco__barra .linha { width: 100%; flex-wrap: nowrap; }
  .config-preco__barra .botao { flex: 1 1 auto; }
}

/* ---------- Dashboard (T-061) ----------
   Evolucao do painel (T-034) com os indicadores do EnproPrice, no mesmo estilo: cartoes .stat, cards com borda
   fina, chips de alternancia e o painel lateral. Cores so por tokens (dois temas): series e categorias em
   --serie-*, dia vazio do calendario em --calendario-vazio e os niveis misturados com --calendario-tinta;
   pontos de estado nos tokens de estado. */
.dashboard .tela__topo { align-items: flex-start; }
.dashboard__acoes { justify-content: flex-end; }
@media (max-width: 720px) { .dashboard__acoes { justify-content: flex-start; } }
.dashboard__filtros {
  display: flex; align-items: center; gap: .5rem .75rem; flex-wrap: wrap;
  padding: .5rem .75rem; border: 1px solid hsl(var(--borda)); border-radius: var(--raio); background: hsl(var(--superficie));
}
.dashboard__rotulo { font-size: .8125rem; color: hsl(var(--texto-suave)); }
.dashboard__filtros .campo__entrada, .dashboard__selecao { width: auto; max-width: 100%; min-height: 2rem; padding: .25rem .5rem; font-size: .8125rem; }
.dashboard__datas { display: inline-flex; align-items: center; gap: .375rem; flex-wrap: wrap; }
.dashboard__datas[hidden] { display: none; }
.dashboard__periodo { font-family: var(--f-mono); font-size: .75rem; }
.dashboard__legado { margin-left: auto; }
@media (max-width: 720px) { .dashboard__legado { margin-left: 0; } }
.carregando { opacity: .55; transition: opacity var(--transicao); }

/* cartoes: o .stat do painel virou botao que abre a analise no painel lateral; o ponto discreto diz o estado */
.dashboard__cartoes { display: grid; gap: .875rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 13.5rem), 1fr)); }
.stat--cartao {
  width: 100%; align-content: start; text-align: left; font: inherit; color: inherit; cursor: pointer;
  transition: border-color var(--transicao), background-color var(--transicao);
}
.stat--cartao:hover { border-color: hsl(var(--borda-forte)); background: hsl(var(--card)); }
.stat--cartao:focus-visible { box-shadow: var(--anel-foco); outline: none; }
.stat--cartao .stat__valor { font-size: 1.375rem; white-space: nowrap; }
.stat--cartao .stat__valor--vazio { font-family: var(--f-sans); font-size: .9375rem; font-weight: 400; line-height: 1.6; white-space: normal; color: hsl(var(--texto-suave)); }
.ponto { flex: none; width: .5rem; height: .5rem; border-radius: 50%; background: hsl(var(--texto-suave) / .6); }
.ponto--verde { background: hsl(var(--verde) / .85); }
.ponto--amarelo { background: hsl(var(--amarelo) / .85); }
.ponto--vermelho { background: hsl(var(--vermelho) / .85); }

/* evolucao ao lado da distribuicao no desktop; empilhados abaixo de 1180 px */
.dashboard__linha { display: grid; gap: 1.125rem; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 1180px) { .dashboard__linha { grid-template-columns: minmax(0, 1.7fr) minmax(20rem, 1fr); } }
.dashboard__controles { display: flex; align-items: center; gap: .5rem .75rem; flex-wrap: wrap; }
.dashboard__controles--linha { margin-bottom: .5rem; }
.dashboard__alternancia { display: inline-flex; align-items: center; gap: .375rem; flex-wrap: wrap; }
.dashboard__nota { margin: 0 0 .5rem; font-size: .75rem; line-height: 1.45; }
.dashboard__grafico { width: 100%; min-height: 15rem; }
.dashboard__grafico .vazio { min-height: 13rem; display: grid; place-items: center; }
.dashboard__numeros { margin-top: .5rem; font-size: .8125rem; }
.dashboard__numeros summary { width: fit-content; cursor: pointer; color: hsl(var(--texto-suave)); }
.dashboard__numeros summary:hover { color: hsl(var(--texto)); }
.dashboard__numeros[open] summary { margin-bottom: .5rem; }
.dashboard__tabela-numeros th, .dashboard__tabela-numeros td { white-space: nowrap; }
.dashboard__tabela-numeros tbody th { font-family: var(--f-sans); font-size: .8125rem; font-weight: 400; letter-spacing: 0; text-transform: none; color: hsl(var(--texto)); background: transparent; }

/* series: linha de 2 px, marca com anel da superficie, area suave so com uma serie; a cor segue a serie */
.grafico__serie--propostas, .chave--propostas, .heatmap__celula--propostas { --cor: var(--serie-propostas); }
.grafico__serie--fechados, .chave--fechados, .chave--fechamentos, .heatmap__celula--fechamentos { --cor: var(--serie-fechados); }
.grafico__serie--contratos, .chave--contratos, .heatmap__celula--contratos { --cor: var(--serie-contratos); }
.chave--perdas, .heatmap__celula--perdas { --cor: var(--serie-perdas); }
.grafico--dashboard .grafico__linha { stroke: hsl(var(--cor)); }
.grafico--dashboard .grafico__area { fill: hsl(var(--cor) / .1); }
.grafico__marca { fill: hsl(var(--cor)); stroke: hsl(var(--superficie)); stroke-width: 2; pointer-events: none; }
.grafico__alvo { fill: transparent; }
.grafico__guia { stroke: hsl(var(--borda-forte)); stroke-width: 1; opacity: 0; transition: opacity var(--transicao); }
.grafico__coluna:hover .grafico__guia, .grafico__coluna:focus-visible .grafico__guia { opacity: 1; }
.grafico__coluna:focus-visible, .histograma__faixa:focus-visible { outline: none; }
.grafico--dashboard .grafico__eixo, .grafico--histograma .grafico__eixo { font-size: 11px; }
.chave { flex: none; display: inline-block; width: .625rem; height: .625rem; border-radius: 2px; background: hsl(var(--cor)); }
.dashboard__alternancia .chip .mono { font-size: .6875rem; }

/* histograma: barras na cor da primeira serie, minima e alvo tracejadas nos tokens de estado */
.histograma__barra { fill: hsl(var(--serie-propostas)); }
.histograma__faixa:hover .histograma__barra, .histograma__faixa:focus-visible .histograma__barra { fill: var(--dado-destaque); }
.histograma__linha { stroke-width: 1.5; stroke-dasharray: 4 3; }
.histograma__linha--minima { stroke: hsl(var(--amarelo)); }
.histograma__linha--alvo { stroke: hsl(var(--verde)); }
.dashboard__legenda-linhas { margin-top: .375rem; }
.grafico__chave--minima { border-top: 2px dashed hsl(var(--amarelo)); }
.grafico__chave--alvo { border-top: 2px dashed hsl(var(--verde)); }

/* mapa de calor do ano por categoria: dia vazio com contorno; niveis 1 a 4 misturam a cor com a tinta do tema
   (mais eventos: mais claro no escuro, mais escuro no claro) */
.dashboard__legenda { margin-bottom: .625rem; }
.heatmap--categorias .heatmap__celula { background: hsl(var(--calendario-vazio)); box-shadow: inset 0 0 0 1px hsl(var(--borda)); }
.heatmap--categorias .heatmap__celula--k1 { background: hsl(var(--cor)); box-shadow: none; }
.heatmap--categorias .heatmap__celula--k2 { background: color-mix(in oklab, hsl(var(--cor)) 80%, hsl(var(--calendario-tinta))); box-shadow: none; }
.heatmap--categorias .heatmap__celula--k3 { background: color-mix(in oklab, hsl(var(--cor)) 62%, hsl(var(--calendario-tinta))); box-shadow: none; }
.heatmap--categorias .heatmap__celula--k4 { background: color-mix(in oklab, hsl(var(--cor)) 45%, hsl(var(--calendario-tinta))); box-shadow: none; }
/* navegador sem color-mix(): os niveis ficam na cor da categoria, do mais transparente ao cheio */
@supports not (color: color-mix(in oklab, currentColor 50%, transparent)) {
  .heatmap--categorias .heatmap__celula--k1 { background: hsl(var(--cor) / .45); }
  .heatmap--categorias .heatmap__celula--k2 { background: hsl(var(--cor) / .65); }
  .heatmap--categorias .heatmap__celula--k3 { background: hsl(var(--cor) / .82); }
  .heatmap--categorias .heatmap__celula--k4 { background: hsl(var(--cor)); }
}

/* historico unico. T-091 (AR-11): o filtro quebra a linha pela largura que sobra no cartao (o José aberto ao lado
   tira 26rem da coluna), e nao pela da janela; a busca fica com o que sobra da linha */
.dashboard__filtros-historico { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-bottom: .75rem; }
.dashboard__filtros-historico input[type="search"] { flex: 1 1 12rem; min-width: 0; }
.dashboard__filtros-historico .campo__entrada { min-height: 2rem; padding: .25rem .5rem; font-size: .8125rem; }
@media (max-width: 900px) {
  .dashboard__filtros-historico > * { flex: 1 1 calc(50% - .25rem); min-width: 0; }
  .dashboard__filtros-historico input[type="search"] { flex-basis: 100%; }
}
.dashboard__tabela-historico { min-width: 60rem; } /* no celular a tabela rola dentro do cartao em vez de espremer as colunas */
.dashboard__tabela-historico td { vertical-align: top; }
.dashboard__tabela-historico td small { font-size: .6875rem; }
.dashboard__tabela-historico td.mono, .dashboard__tabela-historico .tabela__num, .dashboard__tabela-historico .badge { white-space: nowrap; }
.dashboard__linha-link { cursor: pointer; }
.dashboard__paginas { margin-top: .75rem; font-size: .75rem; }

/* painel lateral da analise: um pouco mais largo que o dos contratos do dia */
.painel-lateral--analise { width: min(28rem, 100%); }
.analise__subtitulo { margin: -.375rem 0 0; font-size: .75rem; }
.analise__resumo { margin: 0; font-size: .8125rem; }
.analise__grupo h3, .analise__principais h3 { margin: 0 0 .375rem; font-size: .8125rem; }
.analise__descricao { margin: -.125rem 0 .5rem; font-size: .75rem; }
.analise__item--fixo { cursor: default; }
.analise__item--fixo:hover { border-color: hsl(var(--borda)); }
.analise__linha { display: flex; align-items: baseline; justify-content: space-between; gap: .75rem; }
.analise__valor { font-family: var(--f-mono); font-size: .75rem; white-space: nowrap; }
.analise__nota { font-size: .75rem; line-height: 1.4; color: hsl(var(--texto-suave)); }
.analise__corte { margin: .375rem 0 0; font-size: .75rem; }
/* gerar a apresentacao so deste cartao (T-065 parte 2): botao do tamanho do texto, no fim da analise */
.analise__apresentacao { align-self: flex-start; }
.analise__principais { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); padding-top: .75rem; border-top: 1px solid hsl(var(--borda)); }
.analise__ranking { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .3rem; font-size: .8125rem; }
.analise__ranking li { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; }
.analise__ranking li > :first-child, .analise__linha > :first-child { min-width: 0; overflow-wrap: anywhere; }

/* blocos do painel de contratos, agrupados no fim */
.dashboard__contratos { display: flex; flex-direction: column; gap: 1.125rem; padding-top: 1rem; border-top: 1px solid hsl(var(--borda)); }
.dashboard__secao h2 { margin: 0; }
/* grafico de 30 dias ao lado dos cartoes de contratos (em largura inteira ele ficava alto demais) */
.dashboard__contratos-linha { display: grid; gap: 1.125rem; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 1024px) { .dashboard__contratos-linha { grid-template-columns: minmax(0, 1.8fr) minmax(15rem, 1fr); } }
.dashboard__tiles { display: grid; gap: .875rem; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); }
.dashboard__secao p { margin: .125rem 0 0; font-size: .8125rem; }

/* ---------- Site (T-094) ----------
   Leads do formulario do site e Google Analytics 4 no estilo do Dashboard: a mesma linha de filtros, cartoes .stat, o
   grafico de evolucao e tabelas em cards com borda fina. Cores so por tokens (dois temas): series em --serie-*, a seta
   da variacao e o ponto das fontes nos tokens de estado. No celular (390 px) tudo empilha e as tabelas rolam dentro do
   cartao. */
.site__sincronia { margin-left: auto; font-size: .75rem; }
.site__cartoes { grid-template-columns: repeat(auto-fill, minmax(min(100%, 13rem), 1fr)); }
.site__cartoes .stat { align-content: start; }
.site__cartoes .stat__valor { font-size: 1.375rem; white-space: nowrap; }
.site__cartoes .stat__valor--vazio { font-family: var(--f-sans); font-size: .9375rem; font-weight: 400; color: hsl(var(--texto-suave)); }
.site__variacao--alta::before, .site__variacao--queda::before { display: inline-block; margin-right: .25rem; font-size: .625rem; }
.site__variacao--alta::before { content: "\25B2"; color: hsl(var(--verde)); }
.site__variacao--queda::before { content: "\25BC"; color: hsl(var(--vermelho)); }
.grafico__serie--visualizacoes, .chave--visualizacoes { --cor: var(--serie-propostas); }
.grafico__serie--sessoes, .chave--sessoes { --cor: var(--serie-fechados); }

/* avisos, situacao das fontes e passo a passo do admin */
.site__avisos:empty { display: none; }
.site__aviso { margin: 0; padding: .625rem .875rem; font-size: .8125rem; border: 1px solid hsl(var(--borda)); border-left: 3px solid hsl(var(--amarelo));
  border-radius: var(--raio); background: hsl(var(--superficie)); color: hsl(var(--texto)); }
.site__fontes { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; font-size: .8125rem; }
.site__fonte { display: flex; align-items: baseline; gap: .5rem; flex-wrap: wrap; }
.site__fonte .ponto { align-self: center; }
.site__fonte-nome { font-weight: 600; }
.site__fonte-aviso { flex-basis: 100%; padding-left: 1rem; font-size: .75rem; line-height: 1.45; }
.site__passos-titulo { margin: 1rem 0 .5rem; font-size: .875rem; }
.site__passos { margin: 0; padding: 0; list-style: none; display: grid; gap: .75rem; }
.site__passo { padding: .75rem .875rem; border: 1px solid hsl(var(--borda)); border-radius: var(--raio); background: hsl(var(--card)); }
.site__passo-topo { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.site__passo-numero { display: inline-grid; place-items: center; width: 1.375rem; height: 1.375rem; border-radius: 50%; font-family: var(--f-mono);
  font-size: .75rem; border: 1px solid hsl(var(--borda-forte)); color: hsl(var(--texto-suave)); }
.site__passo-topo .badge { margin-left: auto; }
.site__passo-texto { margin: .375rem 0 0; font-size: .8125rem; line-height: 1.5; color: hsl(var(--texto-suave)); overflow-wrap: anywhere; }
.site__passo-links { display: flex; flex-wrap: wrap; gap: .375rem 1rem; margin-top: .375rem; font-size: .8125rem; }

/* planilhas candidatas (mais de uma parece a do formulario): o admin escolhe */
.site__candidatas { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.site__candidata { display: flex; align-items: center; justify-content: space-between; gap: .5rem .75rem; flex-wrap: wrap; padding: .5rem .75rem;
  border: 1px solid hsl(var(--borda)); border-radius: var(--raio); background: hsl(var(--card)); font-size: .8125rem; overflow-wrap: anywhere; }

/* tabelas do GA4 lado a lado no desktop; leads com a mensagem quebrando a linha */
.site__tabelas { display: grid; gap: 1.125rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 22rem), 1fr)); align-items: start; }
.site__tabela .site__rotulo { max-width: 16rem; overflow-wrap: anywhere; }
.site__leads { min-width: 48rem; }
.site__leads td { vertical-align: top; }
.site__leads td small { display: block; }
.site__contato { overflow-wrap: anywhere; }
.site__mensagem { max-width: 22rem; white-space: pre-line; overflow-wrap: anywhere; color: hsl(var(--texto-suave)); }
@media (max-width: 720px) {
  .site__cartoes { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .625rem; }
  .site__cartoes .stat { padding: .75rem .875rem; }
  .site__cartoes .stat__valor { font-size: 1.125rem; }
  .site__sincronia { margin-left: 0; flex-basis: 100%; }
  .site__passo-topo .badge { margin-left: 0; }
}

/* ---------- Novo projeto (T-057) ----------
   Passos numerados no topo (o atual sublinhado no azul de acao), cadastro em grade, escopo com o Gantt do projeto e a
   precificacao no desenho do Simulador (formulario e preco lado a lado; classes simulador__ reusadas). Barra de acoes
   presa no rodape. So tokens do tema: vale no escuro e no claro. */
.projeto-novo__navegacao { border-bottom: 1px solid hsl(var(--borda)); }
.projeto-novo__passos { display: flex; gap: .25rem; margin: 0; padding: 0; overflow-x: auto; list-style: none; }
.projeto-novo__passo-item { flex: none; }
.projeto-novo__passo {
  display: inline-flex; align-items: center; gap: .5rem; padding: .5rem .75rem;
  border: 0; border-bottom: 2px solid transparent; background: none;
  color: hsl(var(--texto-suave)); font-size: .8125rem; font-weight: 500; white-space: nowrap;
}
.projeto-novo__passo:hover:not(:disabled) { color: hsl(var(--texto)); }
.projeto-novo__passo:disabled { opacity: .45; cursor: not-allowed; }
.projeto-novo__passo--atual { color: hsl(var(--texto)); border-bottom-color: var(--cta); }
.projeto-novo__passo-numero {
  display: inline-grid; place-items: center; width: 1.25rem; height: 1.25rem;
  border: 1px solid hsl(var(--borda-forte)); border-radius: 50%; font-family: var(--f-mono); font-size: .6875rem;
}
.projeto-novo__passo--atual .projeto-novo__passo-numero { border-color: var(--cta); color: hsl(var(--texto)); }
.projeto-novo__passo--feito .projeto-novo__passo-numero { border-color: hsl(var(--verde) / .6); color: hsl(var(--verde)); }
.projeto-novo__estado { margin: -.5rem 0 0; font-family: var(--f-mono); font-size: .75rem; color: hsl(var(--texto-suave)); }
/* alteracoes nao salvas: texto na cor do texto (contraste AA nos dois temas) e o ponto amarelo marcando o estado */
.projeto-novo__estado--pendente { color: hsl(var(--texto)); }
.projeto-novo__estado--pendente::before {
  content: ""; display: inline-block; width: .5rem; height: .5rem; margin-right: .375rem; border-radius: 50%;
  background: hsl(var(--amarelo)); vertical-align: .05em;
}
.projeto-novo__corpo { display: flex; flex-direction: column; gap: 1.125rem; min-width: 0; }
.projeto-novo__secao { margin: .5rem 0 0; font-size: .875rem; }
.projeto-novo__secao:first-child { margin-top: 0; }
.projeto-novo__interno { width: fit-content; }
.projeto-novo__grupo { min-width: 0; margin: 0; padding: 0; border: 0; }
.projeto-novo__aviso, .projeto-novo__bloqueio {
  display: flex; align-items: center; gap: .25rem .75rem; flex-wrap: wrap; margin: 0; padding: .5rem .75rem;
  border: 1px solid hsl(var(--borda-forte)); border-left-width: 3px; border-radius: var(--raio-p);
  background: hsl(var(--card)); font-size: .8125rem;
}
.projeto-novo__aviso { border-left-color: hsl(var(--amarelo)); }
.projeto-novo__bloqueio { border-color: hsl(var(--vermelho) / .6); border-left-color: hsl(var(--vermelho)); }
.projeto-novo__notas { gap: .5rem; }
.projeto-novo__meta { margin: .125rem 0 0; font-size: .75rem; }
.projeto-novo__nota-preco { margin: 0; font-size: .75rem; }
.projeto-novo__nota-preco:empty { display: none; }
/* riscos medidos e avisos do motor de sistema, abaixo do detalhamento do preco */
.projeto-novo__riscos { display: flex; flex-direction: column; gap: .375rem; padding-top: .625rem; border-top: 1px solid hsl(var(--borda)); }
.projeto-novo__riscos h3 { margin: 0; font-size: .8125rem; }
/* campo travado (horas e visitas do Gantt): so leitura, com a nota e o atalho para o escopo */
.campo--travado input { border-style: dashed; background: hsl(var(--card-alto)); color: hsl(var(--texto)); cursor: default; }
.campo__trava { display: flex; align-items: center; gap: .125rem .5rem; flex-wrap: wrap; font-size: .75rem; color: hsl(var(--texto-suave)); }
.campo__trava .botao { height: auto; padding: .125rem .375rem; }
/* revisao */
.projeto-novo__blocos { display: grid; grid-template-columns: repeat(auto-fit, minmax(19rem, 1fr)); gap: 1rem 1.5rem; }
.projeto-novo__bloco { min-width: 0; }
.projeto-novo__bloco h3 { margin: 0 0 .375rem; font-size: .8125rem; }
.projeto-novo__lista { display: grid; grid-template-columns: minmax(8rem, max-content) minmax(0, 1fr); gap: .25rem .75rem; margin: 0; font-size: .8125rem; }
.projeto-novo__lista dt { color: hsl(var(--texto-suave)); }
.projeto-novo__lista dd { margin: 0; overflow-wrap: anywhere; }
.projeto-novo__sugestao { display: flex; flex-direction: column; gap: .625rem; }
.projeto-novo__sugestao:empty { display: none; }
.projeto-novo__efeito th[scope="row"] {
  font-family: var(--f-sans); font-size: .8125rem; font-weight: 500; letter-spacing: 0; text-transform: none;
  color: hsl(var(--texto)); background: transparent;
}
.projeto-novo__mudou td { color: hsl(var(--texto)); font-weight: 600; }
/* leitura da planilha e visoes do plano da importacao: recolhidas, com a rolagem lateral dentro do cartao */
.projeto-novo__leitura { min-width: 0; padding-top: .625rem; border-top: 1px solid hsl(var(--borda)); }
/* barra de acoes presa no rodape enquanto o formulario rola */
.projeto-novo__acoes {
  position: sticky; bottom: 0; z-index: 20; display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
  padding: .625rem 0; border-top: 1px solid hsl(var(--borda)); background: hsl(var(--fundo));
}
.projeto-novo__acoes-espaco { flex: 1; }
/* com a barra de acoes na tela, os avisos sobem para nao cobrir os botoes */
body:has(.projeto-novo__acoes) .toasts { bottom: 4.75rem; }
@media (max-width: 640px) {
  .projeto-novo__acoes .botao { flex: 1 1 auto; }
  .projeto-novo__acoes-espaco { display: none; }
  body:has(.projeto-novo__acoes) .toasts { bottom: 7.5rem; } /* a barra quebra em duas linhas no celular */
  /* os 4 passos em duas colunas, sem rolagem lateral */
  .projeto-novo__passos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: visible; }
  .projeto-novo__passo { width: 100%; }
  .projeto-novo__lista { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .projeto-novo__lista dd { margin-bottom: .375rem; }
}

/* ---------- Drive (T-067) ----------
   Navegador de pastas sobrio: migalhas, tabela densa (pastas primeiro, o nome da pasta e o link para entrar) e o
   iframe do Drive so quando pedido. So tokens do tema (escuro e claro); no celular (ate 640 px) cada item vira um
   bloco com o rotulo de cada dado, sem rolagem lateral. */
.drive__acoes { gap: .5rem; }
.drive__aviso h2 { margin-bottom: .25rem; }
.drive__aviso p:last-of-type { margin-bottom: .75rem; }
/* as migalhas sao o titulo do cartao: a pasta aberta no fim, em destaque; a contagem de itens a direita */
.drive__titulo { flex-wrap: nowrap; align-items: baseline; }
.drive__caminho { flex: 1; min-width: 0; margin: 0; }
.drive__migalhas { display: flex; flex-wrap: wrap; align-items: baseline; gap: .125rem .375rem; margin: 0; padding: 0; list-style: none; font-size: .8125rem; }
.drive__migalha { display: inline-flex; align-items: baseline; gap: .375rem; min-width: 0; max-width: 100%; }
.drive__migalha + .drive__migalha::before { content: "/"; color: hsl(var(--texto-suave)); }
.drive__migalha a, .drive__migalha span { max-width: 16rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.drive__migalha--atual span { max-width: 28rem; font-size: .9375rem; font-weight: 600; color: hsl(var(--texto)); }
.drive__reticencias { color: hsl(var(--texto-suave)); cursor: help; }
.drive__contagem { font-size: .75rem; }
.drive__tabela th[scope="row"] {
  font-family: var(--f-sans); font-size: .8125rem; font-weight: 400; letter-spacing: 0; text-transform: none;
  color: hsl(var(--texto)); background: transparent;
}
.drive__celula-nome { max-width: 28rem; overflow-wrap: anywhere; }
.drive__nome--pasta { font-weight: 500; }
.drive__celula-abrir { text-align: right; white-space: nowrap; }
.drive__abrir { font-size: .8125rem; }
.drive__rodape { margin-top: .75rem; font-size: .75rem; }
.drive__embutido { padding: .75rem; }
.drive__nota { margin: 0 0 .5rem; font-size: .75rem; }
.drive__quadro {
  display: block; width: 100%; height: min(70vh, 36rem); border: 1px solid hsl(var(--borda)); border-radius: var(--raio-p);
  background: hsl(var(--superficie));
}
.drive__explica { margin: 0 0 .5rem; font-size: .8125rem; }
.drive__ultima { margin: 0; font-size: .8125rem; }
.drive__ultima:empty { display: none; }
@media (max-width: 640px) {
  .drive__titulo { flex-wrap: wrap; }
  .drive__migalha a, .drive__migalha span { max-width: 9rem; }
  .drive__migalha--atual span { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
  .drive__tabela thead { display: none; }
  .drive__tabela, .drive__tabela tbody, .drive__tabela tr, .drive__tabela th, .drive__tabela td { display: block; width: 100%; }
  .drive__tabela tr { padding: .5rem .75rem; border-bottom: 1px solid hsl(var(--borda)); }
  .drive__tabela tbody tr:last-child { border-bottom: 0; }
  .drive__tabela th, .drive__tabela td { padding: .125rem 0; border-bottom: 0; text-align: left; }
  .drive__tabela td[data-rotulo]::before {
    content: attr(data-rotulo) ": "; font-family: var(--f-sans); font-size: .8125rem; color: hsl(var(--texto-suave));
  }
  .drive__celula-nome { max-width: none; }
  .drive__celula-abrir { padding-top: .25rem; }
  .drive__quadro { height: 60vh; }
}

/* ---------- Projetos (T-060) ----------
   Tela Projetos: barra de filtros, quadro por etapa (colunas com a rolagem lateral dentro do quadro, nunca da pagina) e
   lista paginada. Detalhe do projeto: cabecalho com as acoes, linha do tempo das etapas (Gantt de status: uma trilha por
   etapa, barras posicionadas pelas variaveis --inicio e --largura em %, postas pelo CSSOM), o que falta, entregas em
   passos, custos, documentos e historico. So tokens do tema: vale no escuro e no claro. */
.projetos__filtros {
  display: flex; flex-wrap: wrap; align-items: flex-end; gap: .5rem .75rem;
  padding: .625rem .75rem; border: 1px solid hsl(var(--borda)); border-radius: var(--raio); background: hsl(var(--superficie));
}
.projetos__filtro { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.projetos__filtro .campo__rotulo { font-size: .75rem; color: hsl(var(--texto-suave)); }
.projetos__filtros .campo__entrada { width: auto; max-width: 100%; min-height: 2rem; padding: .25rem .5rem; font-size: .8125rem; }
.projetos__filtros select.campo__entrada { max-width: 15rem; } /* nome longo de servico nao estica a barra */
.projetos__busca { flex: 1 1 13rem; }
.projetos__busca .campo__entrada { width: 100%; }
.projetos__periodo { display: inline-flex; align-items: center; gap: .375rem; flex-wrap: wrap; }
.projetos__marcas { display: flex; flex-direction: column; gap: .125rem; }
.projetos__marcar { display: inline-flex; align-items: center; gap: .375rem; font-size: .8125rem; color: hsl(var(--texto-suave)); cursor: pointer; }
.projetos__marcar input { margin: 0; accent-color: var(--cta); }
.projetos__visao { display: inline-flex; align-self: flex-end; border: 1px solid hsl(var(--borda-forte)); border-radius: var(--raio-p); overflow: hidden; }
.projetos__visao button {
  height: 2rem; padding: 0 .75rem; border: 0; background: hsl(var(--card)); color: hsl(var(--texto-suave));
  font-size: .8125rem; font-weight: 500;
}
.projetos__visao button + button { border-left: 1px solid hsl(var(--borda-forte)); }
.projetos__visao button:hover { color: hsl(var(--texto)); }
.projetos__visao button[aria-pressed="true"] { background: hsl(var(--card-alto)); color: hsl(var(--texto)); box-shadow: inset 0 -2px 0 var(--cta); }
@media (max-width: 640px) {
  /* celular: filtros em duas colunas; busca, periodo e as marcas ocupam a linha inteira */
  .projetos__filtros { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: end; }
  .projetos__visao { justify-self: start; }
  .projetos__visao, .projetos__busca, .projetos__filtro--periodo, .projetos__marcas { grid-column: 1 / -1; }
  .projetos__filtros .campo__entrada, .projetos__filtros select.campo__entrada { width: 100%; max-width: none; }
  .projetos__periodo { display: flex; flex-wrap: nowrap; }
  .projetos__periodo .campo__entrada { flex: 1 1 0; min-width: 0; }
}
.projetos__estado { margin: -.375rem 0 0; font-size: .75rem; }
.projetos__estado:empty { display: none; }
.projetos__tabela { min-width: 58rem; } /* no celular a tabela rola dentro do envolto */
.projetos__tabela td { vertical-align: top; }
.projetos__tabela td small { font-size: .6875rem; }
.projetos__tabela td:first-child, .projetos__tabela .tabela__num, .projetos__tabela .badge { white-space: nowrap; }
.projetos__paginas { margin-top: .75rem; font-size: .75rem; }

/* quadro por etapa */
.quadro {
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(13.5rem, 1fr); gap: .75rem; align-items: start;
  overflow-x: auto; padding-bottom: .5rem;
}
.quadro__coluna {
  display: flex; flex-direction: column; gap: .5rem; min-width: 0; padding: .625rem;
  border: 1px solid hsl(var(--borda)); border-radius: var(--raio); background: hsl(var(--superficie));
  transition: border-color var(--transicao), opacity var(--transicao), background-color var(--transicao);
}
.quadro__cabeca { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.quadro__titulo { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; width: 100%; margin: 0; font-size: .8125rem; }
.quadro__contagem { font-family: var(--f-mono); font-size: .6875rem; font-weight: 500; color: hsl(var(--texto-suave)); }
.quadro__lista { display: flex; flex-direction: column; gap: .5rem; min-height: 3rem; margin: 0; padding: 0; list-style: none; }
.quadro__vazio {
  padding: .75rem; font-size: .75rem; text-align: center; color: hsl(var(--texto-suave));
  border: 1px dashed hsl(var(--borda)); border-radius: var(--raio-p);
}
.quadro__mais { align-self: center; }
.quadro__item[draggable="true"] { cursor: grab; }
.quadro__item--arrastando { opacity: .5; }
/* durante o arraste: as colunas que a maquina permite ganham a borda da acao; as outras apagam */
.quadro__coluna--alvo { border-color: var(--cta); }
.quadro__coluna--fora { opacity: .55; }
.quadro__coluna--sobre { background: hsl(var(--card)); }
.cartao-projeto {
  display: grid; gap: .25rem; padding: .625rem .75rem;
  border: 1px solid hsl(var(--borda)); border-radius: var(--raio-p); background: hsl(var(--card));
}
.cartao-projeto:hover, .cartao-projeto:focus-within { border-color: hsl(var(--borda-forte)); }
.cartao-projeto__topo { display: flex; align-items: center; justify-content: space-between; gap: .5rem; min-height: 1.125rem; }
.cartao-projeto__codigo { font-family: var(--f-mono); font-size: .6875rem; color: hsl(var(--texto-suave)); }
.cartao-projeto__titulo { font-size: .8125rem; font-weight: 600; color: hsl(var(--texto)); overflow-wrap: anywhere; }
.cartao-projeto__linha { margin: 0; font-size: .75rem; color: hsl(var(--texto-suave)); overflow-wrap: anywhere; }
.cartao-projeto__rodape { display: flex; align-items: center; justify-content: space-between; gap: .5rem; font-size: .75rem; }
.cartao-projeto__valor { font-family: var(--f-mono); white-space: nowrap; }
.cartao-projeto__responsavel { color: hsl(var(--texto-suave)); overflow-wrap: anywhere; text-align: right; }
.cartao-projeto__marcas { display: flex; flex-wrap: wrap; gap: .25rem; margin: 0; }
.cartao-projeto__mover { justify-self: start; height: 1.625rem; margin-top: .125rem; padding: 0 .5rem; }

/* dialogo da transicao (quadro e detalhe) */
.transicao__grupo { display: flex; flex-direction: column; gap: .375rem; min-width: 0; margin: 0; padding: 0; border: 0; }
.transicao__grupo legend { margin-bottom: .375rem; padding: 0; }
.transicao__opcao { color: hsl(var(--texto)); }
.transicao__fixo { margin: 0; font-size: .8125rem; }
.transicao__pendencias {
  margin: 0; padding: .5rem .75rem; font-size: .8125rem;
  border: 1px solid hsl(var(--borda-forte)); border-left: 3px solid hsl(var(--amarelo)); border-radius: var(--raio-p); background: hsl(var(--card));
}
.transicao__pendencias ul { margin: .25rem 0 0; padding-left: 1.125rem; }

/* detalhe do projeto */
.projeto .ponto { display: inline-block; vertical-align: .05em; }
.projeto__trilha { font-size: .75rem; color: hsl(var(--texto-suave)); }
.projeto__topo { align-items: flex-start; margin-bottom: 0; }
.projeto__identidade { display: grid; gap: .25rem; min-width: 0; }
.projeto__identidade .eyebrow, .projeto__identidade h1, .projeto__linha { margin: 0; }
.projeto__identidade h1 { overflow-wrap: anywhere; }
.projeto__marcas { gap: .375rem; }
.projeto__motivo-perda { margin: 0; font-size: .8125rem; color: hsl(var(--texto-suave)); overflow-wrap: anywhere; }
.projeto__valor { display: grid; gap: .125rem; justify-items: end; text-align: right; }
.projeto__valor strong { font-family: var(--f-mono); font-size: 1.25rem; font-weight: 500; }
.projeto__valor small { max-width: 18rem; font-size: .75rem; }
.projeto__valor-rotulo { font-size: .75rem; color: hsl(var(--texto-suave)); }
.projeto__acoes { display: flex; flex-direction: column; gap: .5rem; }
.projeto__botoes { display: flex; flex-wrap: wrap; gap: .5rem; }
/* acao destrutiva: a borda avisa; o texto fica na cor do botao (vermelho sobre o cartao escuro nao chega a 4,5:1) */
.projeto__cancelar { border-color: hsl(var(--vermelho) / .7); }
.projeto__cancelar:hover { border-color: hsl(var(--vermelho)); }
.projeto__motivos { display: grid; gap: .125rem; }
.projeto__motivo { margin: 0; font-size: .75rem; color: hsl(var(--texto-suave)); }
.projeto__grade { display: grid; gap: 1.125rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); align-items: start; }
.projeto__bloco { min-width: 0; }
.projeto__bloco h3 { margin: 0 0 .375rem; font-size: .8125rem; }
.projeto__nota { margin: 0; font-size: .75rem; }
.projeto__eixo { font-size: .6875rem; }
.projeto__lista { display: grid; grid-template-columns: minmax(8rem, max-content) minmax(0, 1fr); gap: .25rem .75rem; margin: 0; font-size: .8125rem; }
.projeto__lista dt { color: hsl(var(--texto-suave)); }
.projeto__lista dd { margin: 0; overflow-wrap: anywhere; }
.projeto__ciclo { display: flex; align-items: center; gap: .5rem; margin: .5rem 0 0; font-size: .8125rem; }
.projeto__falta { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
  margin-top: 1rem; padding-top: .875rem; border-top: 1px solid hsl(var(--borda)); }
.projeto__checklist { display: flex; flex-direction: column; gap: .375rem; margin: 0; padding: 0; list-style: none; font-size: .8125rem; }
.projeto__checklist li { display: flex; align-items: baseline; gap: .5rem; }
.projeto__checklist li > span:last-child { min-width: 0; overflow-wrap: anywhere; }
.projeto__documentos { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); }
.projeto__documento { cursor: default; }
/* Pasta no Drive (T-077): pasta ausente avisa so pelo fio, o texto fica na cor suave; pendentes numa lista curta */
.projeto__drive-aviso { margin: .375rem 0 0; padding-left: .5rem; border-left: 2px solid hsl(var(--amarelo)); font-size: .75rem;
  color: hsl(var(--texto-suave)); overflow-wrap: anywhere; }
.projeto__drive-pendentes { margin: .25rem 0 0; padding-left: 1rem; font-size: .75rem; color: hsl(var(--texto-suave)); }
.projeto__acompanhamento { margin-top: 1rem; padding-top: .875rem; border-top: 1px solid hsl(var(--borda)); }
.projeto__acompanhamento .grade--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); }
/* confirmacao obrigatoria do dialogo da assinatura (envio pendente ou recusado no Autentique) */
.projeto__confirmacao { gap: .25rem; }

/* linha do tempo das etapas (Gantt de status) */
.gantt-status { display: flex; flex-direction: column; gap: .375rem; margin: 0; padding: 0; list-style: none; }
.gantt-status__linha { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr) 12rem; gap: .75rem; align-items: center; font-size: .8125rem; }
.gantt-status__rotulo { overflow-wrap: anywhere; }
.gantt-status__trilho { position: relative; height: .75rem; border-radius: 2px; background: hsl(var(--card-alto)); }
.gantt-status__barra {
  position: absolute; top: 0; bottom: 0; left: var(--inicio, 0%); width: var(--largura, 0%);
  border-radius: 2px; background: var(--dado-barra);
}
.gantt-status__texto { font-size: .75rem; color: hsl(var(--texto-suave)); text-align: right; }
.gantt-status__linha--atual .gantt-status__rotulo { font-weight: 600; }
.gantt-status__linha--atual .gantt-status__barra { background: var(--dado-destaque); }
.gantt-status__linha--atual .gantt-status__texto { color: hsl(var(--texto)); }
.gantt-status__linha--final .gantt-status__barra { background: hsl(var(--texto-suave)); }
.gantt-status__linha--futura, .gantt-status__linha--pulada { color: hsl(var(--texto-suave)); }
.gantt-status__linha--pulada .gantt-status__trilho { background: transparent; border: 1px dashed hsl(var(--borda-forte)); }
/* T-085 (AG-24): etapa com a data gravada, sem a passagem (texto normal, trilho vazio) e a do importado sem historico */
.gantt-status__linha--registrada .gantt-status__trilho { background: transparent; border: 1px solid hsl(var(--borda-forte)); }
.gantt-status__linha--sem_registro { color: hsl(var(--texto-suave)); }
.gantt-status__linha--sem_registro .gantt-status__trilho { background: transparent; border: 1px dotted hsl(var(--borda-forte)); }

/* andamento das entregas em passos */
.projeto__entregas { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .25rem; margin: .5rem 0 .875rem; padding: 0; list-style: none; }
.projeto__entrega {
  padding: .375rem .125rem 0; border-top: 3px solid hsl(var(--borda-forte));
  font-size: .6875rem; text-align: center; color: hsl(var(--texto-suave));
}
.projeto__entrega--feito { border-top-color: hsl(var(--verde)); color: hsl(var(--texto)); }
.projeto__entrega--atual { border-top-color: var(--cta); color: hsl(var(--texto)); font-weight: 600; }

/* historico */
.projeto__historico { display: flex; flex-direction: column; margin: 0; padding: 0; list-style: none; }
.projeto__evento {
  display: grid; grid-template-columns: 10rem minmax(0, 1fr); gap: .25rem .75rem;
  padding: .5rem 0; border-bottom: 1px solid hsl(var(--borda)); font-size: .8125rem;
}
.projeto__evento:last-child { border-bottom: 0; }
.projeto__evento-quando { display: grid; font-family: var(--f-mono); font-size: .6875rem; color: hsl(var(--texto-suave)); }
.projeto__evento-corpo { min-width: 0; }
.projeto__evento-detalhe { margin: .125rem 0 0; font-size: .75rem; color: hsl(var(--texto-suave)); overflow-wrap: anywhere; white-space: pre-line; }

@media (max-width: 720px) {
  .projeto__topo { flex-direction: column; }
  .projeto__valor { justify-items: start; text-align: left; }
  .gantt-status__linha { grid-template-columns: minmax(0, 1fr) auto; row-gap: .25rem; }
  .gantt-status__trilho { grid-column: 1 / -1; grid-row: 2; }
  .projeto__entregas { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: .5rem; }
  .projeto__evento { grid-template-columns: minmax(0, 1fr); }
  .projeto__lista { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .projeto__lista dd { margin-bottom: .375rem; }
}

/* ---------- Arquivo (T-064) ----------
   Historico unico denso: filtros numa grade compacta, tipo em texto discreto, badges de ponto, links em chips e
   botoes pequenos; dialogos no modal do sistema. So tokens do tema (escuro e claro); ate 640 px cada linha vira um
   bloco com o rotulo de cada dado, sem rolagem lateral. */
.arquivo__filtros {
  display: grid; gap: .5rem .75rem; align-items: end;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 8.5rem), 1fr));
}
.arquivo__filtros .campo__entrada { min-height: 2rem; padding: .25rem .5rem; font-size: .8125rem; }
.arquivo__filtros .campo__rotulo { font-size: .75rem; color: hsl(var(--texto-suave)); }
.arquivo__filtros .campo__erro { grid-column: 1 / -1; margin: 0; }
.arquivo__tipos { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: .375rem 1rem; min-width: 0; margin: 0; padding: 0; border: 0; }
.arquivo__tipos legend { float: left; margin-right: .25rem; padding: 0; font-size: .75rem; color: hsl(var(--texto-suave)); }
.arquivo__busca { grid-column: span 2; }
.arquivo__filtros-acoes { display: flex; gap: .375rem; align-items: center; }
.arquivo__filtros--antigos { grid-template-columns: minmax(0, 1fr) auto auto; }
.arquivo__filtros--antigos .arquivo__busca { grid-column: auto; }
.arquivo__cancelados { align-self: center; }
.arquivo__ativos { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.arquivo__ativos:empty { display: none; }
.arquivo__explica, .arquivo__resumo { margin: 0; font-size: .8125rem; }
/* abaixo da largura minima a tabela rola dentro do cartao (como o historico do dashboard) em vez de espremer as colunas */
.arquivo__tabela { min-width: 54rem; }
.arquivo__tabela--antigos { min-width: 40rem; }
.arquivo__tabela td, .arquivo__tabela th[scope="row"] { vertical-align: top; }
.arquivo__tabela th[scope="row"] {
  font-family: var(--f-sans); font-size: .8125rem; font-weight: 400; letter-spacing: 0; text-transform: none;
  color: hsl(var(--texto)); background: transparent;
}
.arquivo__documento { min-width: 12rem; max-width: 24rem; }
.arquivo__documento small { display: block; }
.arquivo__titulo { display: block; font-weight: 500; overflow-wrap: anywhere; }
.arquivo__detalhe { font-family: var(--f-mono); font-size: .6875rem; }
.arquivo__cancelamento { font-size: .75rem; line-height: 1.4; overflow-wrap: anywhere; }
.arquivo__tipo { display: block; font-family: var(--f-mono); font-size: .625rem; letter-spacing: .06em; text-transform: uppercase; color: hsl(var(--texto-suave)); }
.arquivo__cliente { min-width: 9rem; overflow-wrap: anywhere; }
.arquivo__cliente small, .arquivo__documento small.mono { white-space: nowrap; }
.arquivo__projeto, .arquivo__data { white-space: nowrap; }
.arquivo__data small { font-size: .6875rem; }
.arquivo__situacao { display: flex; flex-wrap: wrap; gap: .25rem; }
.arquivo__acoes { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .375rem; min-width: 12rem; }
.arquivo__acoes .botao--pequeno { height: 1.625rem; padding: 0 .5rem; }
.arquivo__rodape { display: flex; align-items: center; justify-content: space-between; gap: .5rem; flex-wrap: wrap; font-size: .75rem; }
.arquivo__rodape:empty { display: none; }
.arquivo__por-pagina { width: auto; min-height: 1.875rem; padding: .125rem .375rem; font-size: .75rem; }
.arquivo__dialogo .modal__caixa { max-width: 32rem; }
.arquivo__dialogo h2 { font-size: 1rem; }
.arquivo__dialogo-alvo { margin: 0; font-size: .8125rem; overflow-wrap: anywhere; }
.arquivo__form-legado .grade--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); }
.arquivo__form-legado input[readonly] { color: hsl(var(--texto-suave)); background: hsl(var(--card-alto)); }
@media (max-width: 640px) {
  .arquivo__busca { grid-column: 1 / -1; }
  .arquivo__filtros--antigos { grid-template-columns: minmax(0, 1fr); }
  .arquivo__tabela, .arquivo__tabela--antigos { min-width: 0; }
  .arquivo__tabela thead { display: none; }
  .arquivo__tabela, .arquivo__tabela tbody, .arquivo__tabela tr, .arquivo__tabela th, .arquivo__tabela td { display: block; width: 100%; }
  .arquivo__tabela tr { padding: .5rem .75rem; border-bottom: 1px solid hsl(var(--borda)); }
  .arquivo__tabela tbody tr:last-child { border-bottom: 0; }
  .arquivo__tabela th, .arquivo__tabela td { padding: .125rem 0; border-bottom: 0; text-align: left; }
  .arquivo__tabela td[data-rotulo]::before {
    content: attr(data-rotulo) ": "; font-family: var(--f-sans); font-size: .75rem; color: hsl(var(--texto-suave));
  }
  .arquivo__documento { max-width: none; }
  .arquivo__tabela td.arquivo__sem-valor { display: none; }
  .arquivo__situacao { display: inline-flex; }
  .arquivo__acoes { min-width: 0; padding-top: .375rem; }
  .arquivo__documento, .arquivo__cliente { min-width: 0; }
  .arquivo__rodape { justify-content: flex-start; }
}
