/* ====================================================================
   Tecnofour - Sistema de Registro de Inspecoes
   Paleta tirada da identidade do site institucional.
   ==================================================================== */

:root {
  --verde-escuro: #163838;
  --verde-escuro-2: #1e4a49;
  --sage: #85a6a6;
  --verde: #00a550;   /* "TECNO" do logo */
  --verde-claro: #8cc63f; /* "FOUR" do logo */
  --oliva: #839e0c;

  --fundo: #f3f5f4;
  --cartao: #ffffff;
  --borda: #dde3e1;
  --texto: #1b2422;
  --texto-fraco: #64726f;

  --vermelho: #c0392b;
  --ambar: #c87f0a;
  --azul: #2f6d8a;

  --raio: 10px;
  --sombra: 0 1px 2px rgba(22, 56, 56, .06), 0 4px 14px rgba(22, 56, 56, .05);
  --sidebar-w: 248px;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
}

body {
  font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
  background: var(--fundo);
  color: var(--texto);
  font-size: 15px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--verde); text-decoration: none; }
a:hover { text-decoration: underline; }

h1, h2, h3 { margin: 0 0 .4em; line-height: 1.2; font-weight: 700; }
h1 { font-size: 24px; }
h2 { font-size: 19px; }
h3 { font-size: 16px; }

/* ---------- Layout -------------------------------------------------- */

.app { display: flex; min-height: 100vh; }

.sidebar {
  width: var(--sidebar-w);
  flex: 0 0 var(--sidebar-w);
  background: var(--verde-escuro);
  color: #cfdbd9;
  display: flex;
  flex-direction: column;
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 40;
}

.sidebar__logo {
  padding: 22px 20px 18px;
  border-bottom: 1px solid rgba(255,255,255,.08);
}
.sidebar__logo img { width: 100%; max-width: 170px; display: block; }

.sidebar__nav { padding: 14px 10px; overflow-y: auto; flex: 1; }

.sidebar__grupo {
  font-size: 11px;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: #6f8b89;
  padding: 16px 12px 6px;
  font-weight: 700;
}

.sidebar a.item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  border-radius: 8px;
  color: #cfdbd9;
  font-size: 14.5px;
  text-decoration: none;
  margin-bottom: 2px;
}
.sidebar a.item:hover { background: rgba(255,255,255,.07); color: #fff; }
.sidebar a.item.ativo { background: var(--verde); color: #fff; font-weight: 600; }
.sidebar a.item svg { width: 17px; height: 17px; flex: 0 0 17px; }

.sidebar__rodape {
  padding: 14px 18px;
  border-top: 1px solid rgba(255,255,255,.08);
  font-size: 13px;
  color: #93a9a7;
}
.sidebar__rodape strong { display: block; color: #e6eeec; font-weight: 600; }
.sidebar__rodape a { color: #93a9a7; }

.conteudo {
  flex: 1;
  margin-left: var(--sidebar-w);
  min-width: 0;
}

.topo {
  background: var(--cartao);
  border-bottom: 1px solid var(--borda);
  padding: 16px 28px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  position: sticky;
  top: 0;
  z-index: 30;
}
.topo h1 { margin: 0; font-size: 20px; }
.topo .sub { color: var(--texto-fraco); font-size: 13.5px; margin-top: 2px; }

.pagina { padding: 24px 28px 60px; max-width: 1180px; }

/* ---------- Cartoes -------------------------------------------------- */

.cartao {
  background: var(--cartao);
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  box-shadow: var(--sombra);
  margin-bottom: 20px;
}
.cartao__cabeca {
  padding: 15px 20px;
  border-bottom: 1px solid var(--borda);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.cartao__cabeca h2 { margin: 0; font-size: 16px; }
.cartao__corpo { padding: 20px; }
.cartao__corpo--limpo { padding: 0; }

/* ---------- Indicadores ---------------------------------------------- */

.kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 14px;
  margin-bottom: 22px;
}
.kpi {
  background: var(--cartao);
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  padding: 16px 18px;
  box-shadow: var(--sombra);
  border-left: 4px solid var(--verde);
}
.kpi__n { font-size: 28px; font-weight: 700; line-height: 1.1; }
.kpi__r { font-size: 13px; color: var(--texto-fraco); margin-top: 3px; }
.kpi--alerta { border-left-color: var(--ambar); }
.kpi--neutro { border-left-color: var(--sage); }

/* ---------- Tabelas --------------------------------------------------- */

.tabela-wrap { overflow-x: auto; }

table.tabela {
  width: 100%;
  border-collapse: collapse;
  font-size: 14.5px;
}
table.tabela th {
  text-align: left;
  font-size: 12px;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--texto-fraco);
  font-weight: 700;
  padding: 11px 16px;
  background: #eef2f1;
  border-bottom: 1px solid var(--borda);
  white-space: nowrap;
}
table.tabela td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--borda);
  vertical-align: middle;
}
table.tabela tbody tr:last-child td { border-bottom: 0; }
table.tabela tbody tr:hover { background: #f7faf9; }
table.tabela td.acoes { text-align: right; white-space: nowrap; }

.vazio {
  padding: 40px 20px;
  text-align: center;
  color: var(--texto-fraco);
}

/* ---------- Etiquetas -------------------------------------------------- */

.tag {
  display: inline-block;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.6;
  white-space: nowrap;
}
.tag--verde    { background: #e3f5ea; color: #0b6b39; }
.tag--vermelho { background: #fbe9e7; color: #a3291b; }
.tag--azul     { background: #e7f0f5; color: #27586f; }
.tag--ambar    { background: #fdf2de; color: #8a5a06; }
.tag--cinza    { background: #eceeed; color: #5d6b68; }

/* ---------- Formularios ------------------------------------------------ */

.campo { margin-bottom: 16px; }
.campo label {
  display: block;
  font-size: 13.5px;
  font-weight: 600;
  margin-bottom: 5px;
  color: #2c3a37;
}
.campo .ajuda { font-size: 12.5px; color: var(--texto-fraco); margin-top: 5px; }

input[type=text], input[type=email], input[type=password], input[type=date],
input[type=number], select, textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid #c8d2cf;
  border-radius: 8px;
  font-family: inherit;
  font-size: 15px;
  color: var(--texto);
  background: #fff;
}
input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--verde);
  box-shadow: 0 0 0 3px rgba(0,165,80,.15);
}
input:disabled, select:disabled { background: #f1f3f2; color: #8b9794; }
textarea { min-height: 110px; resize: vertical; }

.linha {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 0 16px;
}

fieldset.grupo { border: 0; margin: 0 0 16px; padding: 0; }
fieldset.grupo legend {
  font-size: 13.5px; font-weight: 600; margin-bottom: 7px; padding: 0;
}
.checks { display: flex; flex-wrap: wrap; gap: 8px; }
.checks label {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 13px;
  border: 1px solid #c8d2cf;
  border-radius: 999px;
  cursor: pointer;
  font-size: 14px;
  background: #fff;
  user-select: none;
}
.checks label:has(input:checked) {
  border-color: var(--verde);
  background: #e9f7ef;
  font-weight: 600;
}
.checks input { accent-color: var(--verde); margin: 0; }

/* ---------- Botoes ------------------------------------------------------ */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 10px 17px;
  border: 1px solid transparent;
  border-radius: 8px;
  font-family: inherit;
  font-size: 14.5px;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  background: var(--verde);
  color: #fff;
  line-height: 1.2;
}
.btn:hover { background: #008f45; text-decoration: none; color: #fff; }
.btn:disabled { opacity: .55; cursor: not-allowed; }

.btn--secundario {
  background: #fff;
  color: var(--texto);
  border-color: #c8d2cf;
}
.btn--secundario:hover { background: #f1f4f3; color: var(--texto); }

.btn--perigo { background: var(--vermelho); }
.btn--perigo:hover { background: #a3291b; }

.btn--escuro { background: var(--verde-escuro); }
.btn--escuro:hover { background: var(--verde-escuro-2); }

.btn--pequeno { padding: 6px 12px; font-size: 13px; }
.btn--bloco { width: 100%; }

.acoes-form {
  display: flex;
  gap: 10px;
  align-items: center;
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid var(--borda);
}

/* ---------- Avisos ------------------------------------------------------ */

.aviso {
  padding: 13px 16px;
  border-radius: 8px;
  margin-bottom: 18px;
  font-size: 14.5px;
  border: 1px solid;
}
.aviso--ok   { background: #e8f6ee; border-color: #b4e0c6; color: #0b5c33; }
.aviso--erro { background: #fcebe9; border-color: #f0c2bc; color: #8f2318; }
.aviso--info { background: #eaf1f5; border-color: #c3d8e3; color: #27586f; }
.aviso strong { font-weight: 700; }

.senha-destaque {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 19px;
  font-weight: 700;
  letter-spacing: .06em;
  background: #fff;
  border: 1px dashed #9fb3af;
  border-radius: 8px;
  padding: 11px 16px;
  display: inline-block;
  margin: 8px 0;
  user-select: all;
}

/* ---------- Filtros ------------------------------------------------------ */

.filtros {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: flex-end;
  padding: 16px 20px;
  background: var(--cartao);
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  margin-bottom: 18px;
  box-shadow: var(--sombra);
}
.filtros .campo { margin: 0; min-width: 160px; flex: 1 1 160px; }

/* ---------- Login --------------------------------------------------------- */

body.tela-login {
  background: var(--verde-escuro);
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: 24px;
}
.login-caixa {
  background: #fff;
  border-radius: 14px;
  padding: 36px 34px 30px;
  width: 100%;
  max-width: 410px;
  box-shadow: 0 18px 50px rgba(0,0,0,.28);
}
.login-caixa img.logo { width: 200px; display: block; margin: 0 auto 10px; }
.login-caixa .sub {
  text-align: center;
  color: var(--texto-fraco);
  font-size: 14px;
  margin-bottom: 24px;
}

/* ---------- Trilha ------------------------------------------------------- */

.trilha {
  font-size: 13.5px;
  color: var(--texto-fraco);
  margin-bottom: 14px;
}
.trilha a { color: var(--texto-fraco); }
.trilha span { margin: 0 6px; opacity: .6; }

/* ---------- Mobile -------------------------------------------------------- */

.menu-botao { display: none; background: none; border: 0; cursor: pointer; padding: 6px; }

@media (max-width: 860px) {
  .sidebar {
    transform: translateX(-100%);
    transition: transform .22s ease;
    box-shadow: 0 0 40px rgba(0,0,0,.3);
  }
  body.menu-aberto .sidebar { transform: translateX(0); }
  .conteudo { margin-left: 0; }
  .menu-botao { display: inline-flex; }
  .topo { padding: 14px 16px; }
  .pagina { padding: 18px 16px 50px; }
  .sombra-menu {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(10,25,24,.45);
    z-index: 35;
  }
  body.menu-aberto .sombra-menu { display: block; }
}
