/* ── Fase 2A: telas de administração (modal, formulários, tabelas, painel) ─ */

.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(15,20,12,0.72);
  z-index: 90;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  overflow-y: auto;
  padding: 24px 16px;
}
.modal-overlay[hidden] { display: none; }

.modal-caixa {
  background: var(--areia);
  color: var(--verde-escuro);
  border-radius: 8px;
  border: 1px solid var(--dourado);
  width: 100%;
  max-width: 640px;
  box-shadow: 0 12px 40px rgba(0,0,0,0.5);
}
.modal-caixa.modal-larga { max-width: 980px; }

.modal-cabecalho {
  background: var(--verde-escuro);
  color: var(--off-white);
  padding: 16px 20px;
  border-radius: 8px 8px 0 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}
.modal-cabecalho h2 { color: var(--dourado); font-size: 18px; }
.modal-fechar {
  background: none; border: none; color: var(--off-white);
  font-size: 24px; line-height: 1; cursor: pointer;
  min-width: var(--toque-min); min-height: var(--toque-min);
}

.modal-corpo { padding: 20px; max-height: 75vh; overflow-y: auto; }
.modal-rodape {
  padding: 14px 20px;
  border-top: 1px solid rgba(31,45,26,0.15);
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}

.campo-grupo { margin-bottom: 16px; }
.campo-grupo label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: rgba(31,45,26,0.75);
  margin-bottom: 5px;
}
.campo-grupo input[type="text"],
.campo-grupo input[type="email"],
.campo-grupo input[type="url"],
.campo-grupo input[type="date"],
.campo-grupo input[type="number"],
.campo-grupo input[type="password"],
.campo-grupo input[type="search"],
.campo-grupo select,
.campo-grupo textarea {
  width: 100%;
  min-height: var(--toque-min);
  padding: 9px 11px;
  border-radius: 4px;
  border: 1px solid rgba(31,45,26,0.35);
  background: var(--off-white);
  color: var(--verde-escuro);
  font-size: 15px;
  font-family: inherit;
}
.campo-grupo textarea { min-height: 80px; resize: vertical; }
.campo-grupo .campo-ajuda { font-size: 12px; color: rgba(31,45,26,0.6); margin-top: 4px; }
.campo-grupo .campo-erro {
  font-size: 12px; color: var(--vermelho); font-weight: 600; margin-top: 4px; display: none;
}
.campo-grupo.com-erro input, .campo-grupo.com-erro select, .campo-grupo.com-erro textarea {
  border-color: var(--vermelho);
}
.campo-grupo.com-erro .campo-erro { display: block; }

.campo-checkbox { display: flex; align-items: center; gap: 10px; }
.campo-checkbox input { width: 22px; height: 22px; }

.linha-2col { display: flex; gap: 14px; flex-wrap: wrap; }
.linha-2col > .campo-grupo { flex: 1; min-width: 200px; }

.modal-erro-geral {
  background: rgba(163,52,31,0.15);
  border: 1px solid var(--vermelho);
  color: var(--vermelho);
  border-radius: 4px;
  padding: 10px 12px;
  font-size: 13px;
  margin-bottom: 14px;
  display: none;
  font-weight: 600;
}
.modal-erro-geral.visivel { display: block; }

/* ── botões de ação ────────────────────────────────────────────────────── */

.botao-acao {
  min-height: var(--toque-min);
  padding: 10px 18px;
  border-radius: 4px;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  border: none;
}
.botao-acao.primario { background: var(--dourado); color: var(--verde-escuro); }
.botao-acao.secundario { background: transparent; border: 1px solid var(--verde-escuro); color: var(--verde-escuro); }
.botao-acao.perigo { background: var(--vermelho); color: var(--off-white); }
.botao-acao:disabled { opacity: 0.55; cursor: default; }

.botao-adicionar {
  background: var(--dourado);
  color: var(--verde-escuro);
  border: none;
  border-radius: 4px;
  padding: 9px 16px;
  min-height: var(--toque-min);
  font-weight: 700;
  font-size: 13px;
  cursor: pointer;
  margin-bottom: 12px;
}
.botao-espacado { margin-bottom: 12px; }

.lista-municipios-check {
  max-height: 220px;
  overflow-y: auto;
  border: 1px solid rgba(31,45,26,0.25);
  border-radius: 4px;
  padding: 8px;
}
.linha-municipio-check {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 0;
  font-weight: 400;
  text-transform: none;
  font-size: 13px;
}
.busca-painel {
  margin-bottom: 12px;
  min-height: 44px;
  padding: 8px 12px;
  border-radius: 4px;
  border: 1px solid rgba(31,45,26,0.3);
  width: 100%;
  max-width: 320px;
}
.pre-auditoria {
  white-space: pre-wrap;
  font-size: 11px;
  max-width: 340px;
  margin: 0;
}
.filtros-linha {
  display: flex;
  gap: 8px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.botao-pequeno {
  background: none;
  border: 1px solid rgba(31,45,26,0.4);
  color: var(--verde-escuro);
  border-radius: 4px;
  padding: 8px 12px;
  min-height: 38px;
  font-size: 12px;
  cursor: pointer;
}
.botao-pequeno.perigo { border-color: var(--vermelho); color: var(--vermelho); }

/* ── painel de administração (telas globais) ──────────────────────────── */

.painel-admin {
  position: fixed;
  inset: 0;
  background: var(--off-white);
  color: var(--verde-escuro);
  z-index: 80;
  display: flex;
  flex-direction: column;
}
.painel-admin[hidden] { display: none; }
.painel-admin-cabecalho {
  background: var(--verde-escuro);
  color: var(--off-white);
  padding: 14px 20px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-shrink: 0;
}
.painel-admin-cabecalho h2 { color: var(--dourado); font-size: 18px; }
.painel-admin-corpo { flex: 1; min-height: 0; overflow-y: auto; padding: 16px 20px; }
.painel-admin-filtros {
  display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; margin-bottom: 16px;
}
.painel-admin-filtros .campo-grupo { margin-bottom: 0; min-width: 160px; }

table.tabela-admin {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  background: var(--areia);
  border-radius: 6px;
  overflow: hidden;
}
table.tabela-admin th {
  background: var(--verde-primario);
  color: var(--off-white);
  text-align: left;
  padding: 10px 12px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
table.tabela-admin td {
  padding: 10px 12px;
  border-bottom: 1px solid rgba(31,45,26,0.12);
  vertical-align: middle;
}
table.tabela-admin tr:last-child td { border-bottom: none; }
table.tabela-admin td.col-acoes { white-space: nowrap; text-align: right; }
table.tabela-admin tr.excluido { opacity: 0.55; }
.tabela-wrap { overflow-x: auto; }

.selo {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  padding: 2px 7px;
  border-radius: 3px;
  letter-spacing: 0.03em;
}
.selo-vencido { background: rgba(163,52,31,0.18); color: var(--vermelho); }
.selo-vence-breve { background: rgba(201,162,39,0.25); color: #7a6115; }
.selo-vigente { background: rgba(58,74,46,0.15); color: var(--verde-primario); }

.lista-vazia-painel {
  padding: 30px; text-align: center; color: rgba(31,45,26,0.55); font-size: 14px;
}

/* ── ficha: abas funcionais (Fase 2A) ─────────────────────────────────── */

.ficha-abas button:not(:disabled) { cursor: pointer; }

.subtitulo-secao {
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: rgba(31,45,26,0.7);
  margin: 18px 0 10px;
  padding-top: 12px;
  border-top: 1px solid rgba(31,45,26,0.12);
}
.subtitulo-secao:first-child { margin-top: 0; padding-top: 0; border-top: none; }

.cartao-pessoa {
  display: flex;
  gap: 12px;
  padding: 12px;
  background: rgba(255,255,255,0.35);
  border-radius: 6px;
  margin-bottom: 10px;
  align-items: flex-start;
}
.cartao-pessoa .foto-miniatura {
  width: 56px; height: 56px; border-radius: 6px; object-fit: cover;
  background: var(--verde-primario); flex-shrink: 0;
}
.cartao-pessoa .foto-miniatura.vazia {
  display: flex; align-items: center; justify-content: center;
  color: var(--off-white); font-size: 10px; text-align: center;
}
.cartao-pessoa .dados { flex: 1; min-width: 0; }
.cartao-pessoa .dados strong { display: block; font-size: 14px; }
.cartao-pessoa .dados .linha-sec { font-size: 12px; color: rgba(31,45,26,0.65); margin-top: 2px; }
.cartao-pessoa .acoes { display: flex; gap: 6px; flex-shrink: 0; }

.rodape-somas {
  margin-top: 16px;
  padding: 12px;
  background: rgba(58,74,46,0.1);
  border-radius: 6px;
  font-size: 13px;
}
.rodape-somas .linha { display: flex; justify-content: space-between; padding: 3px 0; }
.rodape-somas .linha strong { font-size: 15px; }

.aviso-nao-salvo {
  background: rgba(201,162,39,0.2);
  border: 1px solid var(--dourado);
  color: #7a6115;
  padding: 8px 12px;
  border-radius: 4px;
  font-size: 12px;
  margin-bottom: 12px;
}

.input-foto-wrap { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.input-foto-preview {
  width: 72px; height: 72px; border-radius: 6px; object-fit: cover; background: rgba(31,45,26,0.1);
}
