/* ===================================================================
   ESTILO.CSS — TEMA VISUAL DO SISTEMA E-GESTÃO.SEG
   -------------------------------------------------------------------
   Este arquivo define TODA a aparência do sistema: cores, tipografia,
   modo claro/escuro, cartões, botões, formulários, menu e cabeçalho.
   Nenhuma cor deve ser escrita "solta" em outros arquivos CSS/HTML —
   sempre usar as variáveis definidas aqui (ex: var(--cor-primaria)),
   para que trocar o tema no sistema inteiro seja automático.
   =================================================================== */

/* -------------------------------------------------------------------
   1. RESET BÁSICO
   Remove margens/paddings padrão dos navegadores e força todos os
   elementos a considerar padding/borda dentro da largura definida
   (box-sizing), evitando caixas que "estouram" o layout.
   ------------------------------------------------------------------- */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* -------------------------------------------------------------------
   2. PALETA DE CORES — MODO CLARO (padrão)
   Estas são as variáveis oficiais da identidade visual do E-Gestão.
   No modo claro usamos os tons mais claros da paleta como fundo e
   os tons mais escuros como texto/contraste.
   ------------------------------------------------------------------- */
:root {
  /* --- Cores brutas da paleta oficial (não usar direto, usar as semânticas abaixo) --- */
  --azul-escuro: #003366;
  --azul-medio-1: #2B5885;
  --azul-medio-2: #4F8AC5;
  --azul-medio-claro: #9ABCDE;
  --azul-claro: #CADCEE;
  --azul-clarinho: #DDEBF7;
  --branco: #FFFFFF;
  --vermelho: #800000;
  --verde: #006600;
  --amarelo: #DEA900;
  --verde-claro: #00CC99;
  --verde-agua: #00FFCC;
  --verde-clarinho: #99FFCC;

  /* --- Variáveis semânticas (o resto do CSS usa estas) --- */
  --cor-fundo: var(--azul-clarinho);          /* fundo geral da página — tom pastel de azul */
  --cor-fundo-degrade: var(--azul-claro);     /* segunda cor do degradê de fundo, também pastel */
  --cor-superficie: rgba(255, 255, 255, 0.65);/* fundo dos cartões/painéis (efeito vidro) — branco translúcido sobre o azul pastel */
  --cor-superficie-solida: var(--branco);     /* fundo sólido, sem transparência (ex: campos de formulário) */
  --cor-borda: var(--azul-medio-claro);       /* linhas e contornos sutis */
  --cor-texto: var(--azul-escuro);            /* texto principal */
  --cor-texto-suave: var(--azul-medio-1);     /* texto secundário, menos importante */

  --cor-primaria: var(--azul-medio-1);        /* cor de destaque principal (botões, links, ícones ativos) */
  --cor-primaria-hover: var(--azul-escuro);   /* cor ao passar o mouse sobre elementos primários */
  --cor-destaque: var(--azul-medio-2);        /* cor de apoio, usada em gráficos e realces */

  --cor-sucesso: var(--verde);                /* confirmações, status "ativo" */
  --cor-erro: var(--vermelho);                /* erros, exclusões, bloqueios */
  --cor-alerta: var(--amarelo);               /* avisos, pendências */

  --sombra-cartao: 0 8px 24px rgba(0, 51, 102, 0.14); /* sombra suave dos cartões, dá profundidade */
  --brilho-vidro: rgba(255, 255, 255, 0.4);   /* reflexo usado na borda superior dos cartões de vidro */
}

/* -------------------------------------------------------------------
   3. PALETA DE CORES — MODO ESCURO
   Ativado quando a tag <html> recebe o atributo data-theme="dark"
   (isso é trocado via JavaScript quando o usuário clica no botão de
   tema). Aqui usamos os tons mais escuros da paleta como fundo.
   ------------------------------------------------------------------- */
[data-theme="dark"] {
  --cor-fundo: #001a33;                          /* mais escuro que azul-escuro, dá profundidade ao degradê */
  --cor-fundo-degrade: var(--azul-escuro);
  --cor-superficie: rgba(43, 88, 133, 0.35);     /* "vidro" escuro semi-transparente, efeito glassmorphism */
  --cor-superficie-solida: #0a2a4a;
  --cor-borda: rgba(154, 188, 222, 0.25);
  --cor-texto: var(--azul-clarinho);
  --cor-texto-suave: var(--azul-medio-claro);

  --cor-primaria: var(--azul-medio-2);
  --cor-primaria-hover: var(--verde-agua);       /* realce vibrante no hover, remete ao mockup de referência */
  --cor-destaque: var(--verde-agua);

  --cor-sucesso: var(--verde-claro);
  --cor-erro: #c0392b;                           /* vermelho um pouco mais claro para contrastar no fundo escuro */
  --cor-alerta: var(--amarelo);

  --sombra-cartao: 0 8px 32px rgba(0, 0, 0, 0.45);
  --brilho-vidro: rgba(255, 255, 255, 0.08);
}

/* -------------------------------------------------------------------
   4. BASE DA PÁGINA
   Fundo em degradê suave (dá o efeito "profissional", não é uma cor
   chapada), fonte padrão do sistema, transição suave ao trocar tema.
   ------------------------------------------------------------------- */
html, body {
  height: 100%;
}

body {
  font-family: 'Segoe UI', Tahoma, Verdana, Arial, sans-serif;
  color: var(--cor-texto);
  background: linear-gradient(160deg, var(--cor-fundo) 0%, var(--cor-fundo-degrade) 100%);
  min-height: 100vh;
  transition: background 0.3s ease, color 0.3s ease; /* troca de tema fica suave, não "pisca" */
}

/* Todo texto de interface (botões, menus, abas, rótulos) fica em caixa alta
   automaticamente via CSS — nunca digitar em maiúsculas no dado/JS. */
button,
.botao,
nav a,
.menu-lateral a,
.faixa-superior .titulo-sistema,
label,
.abas a,
th {
  text-transform: uppercase;
  letter-spacing: 0.03em; /* pequeno espaçamento deixa o caixa-alta mais legível */
}

/* -------------------------------------------------------------------
   5. CARTÕES / PAINÉIS (efeito "vidro" — glassmorphism)
   Usado em: caixa de login, cards do painel, blocos de formulário.
   O efeito de vidro vem do fundo semi-transparente + desfoque do que
   está atrás (backdrop-filter) + uma borda clara sutil no topo.
   ------------------------------------------------------------------- */
.cartao {
  background: var(--cor-superficie);
  border: 1px solid var(--cor-borda);
  border-top: 1px solid var(--brilho-vidro);
  border-radius: 16px;
  box-shadow: var(--sombra-cartao);
  backdrop-filter: blur(12px);   /* desfoca o fundo por trás do cartão */
  -webkit-backdrop-filter: blur(12px);
  padding: 32px;
  /* Se o conteúdo for mais largo que o cartão (ex: tabela com muitas
     colunas em uma tela de celular), rola por dentro do cartão em vez de
     estourar a largura da página. */
  overflow-x: auto;
}

/* -------------------------------------------------------------------
   6. BOTÕES
   Um botão base (.botao) + variações de cor semântica. O texto já
   sai em caixa alta pela regra da seção 4.
   ------------------------------------------------------------------- */
.botao {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 24px;
  /* Toda variação de botão tem borda transparente do mesmo tamanho — assim
     nenhum botão fica mais alto/baixo que outro dependendo da variação
     (se só alguns tivessem borda, ficariam com alturas diferentes lado a lado). */
  border: 1.5px solid transparent;
  border-radius: 10px;
  font-weight: 600;
  font-size: 0.9rem;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
  color: var(--branco);
  background: var(--cor-primaria);
  box-shadow: 0 4px 14px rgba(0, 51, 102, 0.25);
  /* Alguns botões são links (<a>), que os navegadores sublinham por padrão.
     Isso é removido aqui para todo botão ficar só em caixa alta, sem risco
     por baixo do texto — e sem essa diferença de altura entre um botão
     link e um botão de verdade (<button>). */
  text-decoration: none;
}

.botao:hover {
  background: var(--cor-primaria-hover);
  transform: translateY(-1px); /* leve "levantada" no hover, sensação de elevação */
  box-shadow: 0 6px 18px rgba(0, 51, 102, 0.32);
}

.botao:active {
  transform: translateY(0);
}

.botao:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}

/* Botão secundário (ex: Editar, Cancelar): antes era "vazado" (só contorno,
   sem preenchimento). Agora é preenchido com um tom neutro sólido, para
   nenhum botão do sistema ficar com aparência de contorno vazio. */
.botao-secundario {
  background: var(--cor-texto-suave);
  color: var(--branco);
  box-shadow: 0 4px 14px rgba(0, 51, 102, 0.18);
}

.botao-secundario:hover {
  background: var(--cor-primaria-hover);
}

.botao-sucesso { background: var(--cor-sucesso); }
.botao-erro    { background: var(--cor-erro); }
.botao-alerta  { background: var(--cor-alerta); color: var(--azul-escuro); }

.botao-bloco {
  width: 100%; /* botão ocupa a largura toda do formulário, comum em telas de login */
}

/* -------------------------------------------------------------------
   7. FORMULÁRIOS
   Campos de texto, seleção múltipla e mensagens de erro/sucesso
   padronizados para todas as telas do sistema.
   ------------------------------------------------------------------- */
.campo {
  margin-bottom: 20px;
}

.campo label {
  display: block;
  font-size: 0.78rem;
  color: var(--cor-texto-suave);
  margin-bottom: 6px;
  font-weight: 600;
}

.campo input,
.campo select,
.campo textarea {
  width: 100%;
  padding: 12px 14px;
  border-radius: 10px;
  border: 1.5px solid var(--cor-borda);
  background: var(--cor-superficie-solida);
  color: var(--cor-texto);
  font-size: 0.95rem;
  outline: none;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.campo input:focus,
.campo select:focus,
.campo textarea:focus {
  border-color: var(--cor-primaria);
  box-shadow: 0 0 0 3px rgba(79, 138, 197, 0.25); /* halo de foco, ajuda acessibilidade */
}

.mensagem-erro {
  background: rgba(128, 0, 0, 0.1);
  border: 1px solid var(--cor-erro);
  color: var(--cor-erro);
  padding: 12px 16px;
  border-radius: 10px;
  font-size: 0.85rem;
  margin-bottom: 20px;
}

.mensagem-sucesso {
  background: rgba(0, 102, 0, 0.1);
  border: 1px solid var(--cor-sucesso);
  color: var(--cor-sucesso);
  padding: 12px 16px;
  border-radius: 10px;
  font-size: 0.85rem;
  margin-bottom: 20px;
}

/* -------------------------------------------------------------------
   8. TELA DE LOGIN
   Centraliza a caixa de login vertical e horizontalmente na tela,
   com o logo do sistema acima do cartão de vidro.
   ------------------------------------------------------------------- */
/* Fundo exclusivo das telas de login/recuperação de senha: degradê em tons
   escuros partindo do azul-escuro oficial (#003366) como tom mais escuro,
   independente do modo claro/escuro escolhido pelo usuário (essas telas
   ainda não têm alternância de tema — o fundo é sempre escuro). */
body.corpo-login {
  background: linear-gradient(160deg, #003366 0%, #2B5885 100%);
}

.pagina-login {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  /* Espaço de baixo maior que o de cima empurra o conjunto logo+cartão um
     pouco para cima da tela, em vez de ficar perfeitamente centralizado. */
  padding: 24px 24px 8vh 24px;
}

.pagina-login .logo-sistema {
  max-width: 400px; /* mesma largura do cartão de login abaixo */
  width: 100%;
  height: auto;
  margin-bottom: 16px; /* mais próxima do cartão, sem encostar */
}

.pagina-login .cartao {
  width: 100%;
  max-width: 400px;
  padding: 48px 36px; /* cartão mais alto que o padrão dos demais cartões do sistema */
}

.pagina-login .rodape-link {
  margin-top: 20px;
  text-align: center;
  font-size: 0.8rem;
}

.pagina-login .rodape-link a {
  color: var(--cor-primaria);
  text-decoration: none;
}

.pagina-login .rodape-link a:hover {
  text-decoration: underline;
}

/* -------------------------------------------------------------------
   9. FAIXA SUPERIOR (cabeçalho fixo, presente em todas as telas
   internas do sistema, após o login)
   ------------------------------------------------------------------- */
.faixa-superior {
  position: sticky;
  top: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 12px 24px;
  background: var(--cor-superficie);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--cor-borda);
}

.faixa-superior .botao-menu {
  background: transparent;
  border: none;
  color: var(--cor-texto);
  font-size: 1.4rem;
  cursor: pointer;
  padding: 6px 10px;
  border-radius: 8px;
}

.faixa-superior .botao-menu:hover {
  background: var(--cor-borda);
}

.faixa-superior .logo-link {
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
}

.faixa-superior .titulo-sistema {
  font-family: 'Orbitron', 'Segoe UI', sans-serif; /* fonte técnica/geométrica, visual parecido com a logo original */
  font-weight: 800;
  font-size: 1.5rem;
  letter-spacing: 0.06em;
  color: var(--cor-primaria);
  white-space: nowrap;
}

.faixa-superior .campo-pesquisa {
  flex: 1;
  max-width: 420px;
  margin: 0 auto;
}

.faixa-superior .campo-pesquisa input {
  width: 100%;
  padding: 8px 14px;
  border-radius: 20px;
  border: 1.5px solid var(--cor-borda);
  background: var(--cor-superficie-solida);
  color: var(--cor-texto);
}

.faixa-superior .usuario-logado {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  padding: 6px 12px;
  border-radius: 20px;
  color: var(--cor-texto);
  text-decoration: none;
  font-size: 0.85rem;
  font-weight: 600;
}

.faixa-superior .usuario-logado:hover {
  background: var(--cor-borda);
}

/* -------------------------------------------------------------------
   10. MENU LATERAL
   Painel vertical que desliza para dentro/fora (classe .fechado
   controlada via JavaScript pelo botão da faixa superior).
   ------------------------------------------------------------------- */
.layout-interno {
  display: flex;
  min-height: calc(100vh - 61px); /* desconta a altura da faixa superior */
}

.menu-lateral {
  width: 260px;
  flex-shrink: 0;
  background: var(--cor-superficie);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-right: 1px solid var(--cor-borda);
  padding: 20px 0;
  transition: margin-left 0.25s ease;
}

.menu-lateral.fechado {
  margin-left: -260px; /* "empurra" o menu para fora da tela sem remover do layout */
}

.menu-lateral a {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 24px;
  color: var(--cor-texto);
  text-decoration: none;
  font-size: 0.82rem;
  font-weight: 600;
  border-left: 3px solid transparent;
}

.menu-lateral a:hover,
.menu-lateral a.ativo {
  background: var(--cor-borda);
  border-left-color: var(--cor-primaria);
}

.conteudo-principal {
  flex: 1;
  /* Sem isso, um item flex nunca encolhe além do tamanho do seu conteúdo
     (aqui, uma tabela larga). Nas telas com tabelas de mais colunas
     (Município Sede, etc.), isso empurrava a página inteira mais larga
     que a tela do celular, e a rolagem horizontal resultante tirava a
     sincronia entre onde o menu lateral aparece e onde o toque é
     registrado — por isso o clique não fechava o menu certinho. Com
     min-width: 0, é o "overflow-x: auto" do próprio .cartao (mais abaixo)
     que passa a conter a rolagem da tabela, sem afetar a página toda. */
  min-width: 0;
  padding: 32px;
}

/* -------------------------------------------------------------------
   11-A. GRADE DE FORMULÁRIO
   Distribui os campos de um formulário lado a lado (em vez de empilhados
   um embaixo do outro), ocupando toda a largura do cartão — usada em
   todas as telas de cadastro/edição para ficar mais horizontal e elegante.
   ------------------------------------------------------------------- */
.grade-formulario {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 4px 24px; /* pouco espaço vertical entre linhas, mais espaço horizontal entre colunas */
}

.grade-formulario .campo-largo {
  grid-column: 1 / -1; /* campo ocupa a largura toda da grade (ex: nome de um registro) */
}

/* -------------------------------------------------------------------
   11-A2. LISTA DE SELEÇÃO EM CHECKBOX
   Usada no Cadastro de Usuário para escolher, item por item, quais
   registros de cada nível hierárquico o usuário pode acessar — substitui
   a caixa de seleção múltipla nativa, mais difícil de usar.
   ------------------------------------------------------------------- */
.lista-selecao {
  max-height: 220px;
  overflow-y: auto;
  border: 1.5px solid var(--cor-borda);
  border-radius: 10px;
  background: var(--cor-superficie-solida);
  padding: 8px 4px;
}

.lista-selecao label {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  font-size: 0.85rem;
  font-weight: 400;
  text-transform: none;
  cursor: pointer;
  border-radius: 6px;
}

.lista-selecao label:hover {
  background: var(--cor-borda);
}

.lista-selecao input[type="checkbox"] {
  width: auto;
}

.lista-selecao .vazio {
  padding: 10px;
  font-size: 0.82rem;
  color: var(--cor-texto-suave);
}

/* -------------------------------------------------------------------
   11-B. CONTROLES DE REORDENAÇÃO (setas + número editável)
   Usado na coluna "Ordem" das tabelas de listagem dos cadastros simples.
   ------------------------------------------------------------------- */
.controle-ordem {
  display: flex;
  align-items: center;
  gap: 6px;
}

.controle-ordem input[type="number"] {
  width: 56px;
  padding: 6px 8px;
  border-radius: 8px;
  border: 1.5px solid var(--cor-borda);
  background: var(--cor-superficie-solida);
  color: var(--cor-texto);
  text-align: center;
}

.botao-seta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 1.5px solid transparent;
  border-radius: 8px;
  background: var(--cor-texto-suave);
  color: var(--branco);
  cursor: pointer;
  font-size: 0.7rem;
  line-height: 1;
  padding: 0;
}

.botao-seta:hover {
  background: var(--cor-primaria-hover);
}

.botao-seta:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}

/* -------------------------------------------------------------------
   11. TABELAS (usadas nas telas de listagem/cadastro)
   ------------------------------------------------------------------- */
table {
  width: 100%;
  border-collapse: collapse;
}

th, td {
  text-align: left;
  padding: 12px 16px;
  border-bottom: 1px solid var(--cor-borda);
  font-size: 0.85rem;
}

th {
  color: var(--cor-texto-suave);
  font-size: 0.72rem;
}

tr:hover td {
  background: rgba(79, 138, 197, 0.06);
}

/* Selo de status ativo/inativo, usado em quase toda tela de cadastro */
.selo {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 20px;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
}

.selo-ativo {
  background: rgba(0, 102, 0, 0.15);
  color: var(--cor-sucesso);
}

.selo-inativo {
  background: rgba(128, 0, 0, 0.12);
  color: var(--cor-erro);
}

/* -------------------------------------------------------------------
   12. RESPONSIVIDADE PARA CELULAR
   A partir daqui, ajustes que entram em vigor só em telas estreitas
   (celulares e tablets pequenos), sem alterar nada no computador.
   ------------------------------------------------------------------- */
@media (max-width: 768px) {
  /* Faixa superior mais compacta, e a caixa de pesquisa sai do caminho
     (ainda pode ser acessada futuramente por um ícone, se necessário). */
  .faixa-superior {
    padding: 8px 12px;
    gap: 8px;
  }

  .faixa-superior .campo-pesquisa {
    display: none;
  }

  /* Sem a caixa de pesquisa (que ocupava o espaço do meio), o nome do
     sistema "empurra" os ícones/botões da direita para a ponta da faixa,
     em vez de todo mundo ficar amontoado do lado esquerdo. */
  .faixa-superior .logo-link {
    margin-right: auto;
  }

  .faixa-superior .titulo-sistema {
    font-size: 1.05rem; /* no celular o nome do sistema encolhe para caber na faixa */
  }

  .faixa-superior .usuario-logado {
    font-size: 0.75rem;
    padding: 6px 8px;
    max-width: 90px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}

/* Numa tela ainda mais estreita, o botão "Sair" da faixa superior é
   escondido (ele continua disponível dentro do menu lateral) — evita que
   os itens da direita fiquem espremidos ou quebrem linha. */
@media (max-width: 420px) {
  .faixa-superior > a.botao.botao-erro {
    display: none;
  }
}

@media (max-width: 768px) {
  /* Menu lateral vira um painel flutuante por cima do conteúdo (em vez de
     empurrar o conteúdo para o lado, que não cabe em tela de celular).
     Por padrão já entra fechado (classe controlada em assets/js/script.js). */
  .menu-lateral {
    position: fixed;
    top: 61px;
    left: 0;
    height: calc(100vh - 61px);
    z-index: 150;
    box-shadow: 4px 0 24px rgba(0, 0, 0, 0.25);
    /* Sem isso, em telas baixas os itens do meio da lista (Órgãos até
       Postos/Graduações) ficavam na borda ou fora da área visível, e o
       toque neles não "pegava" direito — o painel rola por dentro dele
       mesmo agora, então todo item continua sempre visível e clicável. */
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* Fundo escurecido atrás do menu aberto — tocar nele fecha o menu.
     Some junto com o menu (ver classe .visivel controlada via JavaScript). */
  .fundo-menu {
    display: none;
    position: fixed;
    top: 61px;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: 140;
  }

  .fundo-menu.visivel {
    display: block;
  }

  .conteudo-principal {
    padding: 16px;
  }

  /* Formulários em coluna única — mais fácil de preencher rolando para
     baixo do que tentando encaixar campos lado a lado numa tela estreita. */
  .grade-formulario {
    grid-template-columns: 1fr;
  }

  .pagina-login {
    padding: 24px 16px 8vh 16px;
  }

  .pagina-login .cartao {
    padding: 32px 20px;
  }
}
