:root {
  --azul: #0a5cff;
  --azul-escuro: #023e8a;
  --fundo: #f4f6fb;
  --texto: #1b1f2a;
  --texto-suave: #5a6272;
  --borda: #e1e5ee;
  --branco: #ffffff;
  --verde: #1b9e5a;
  --amarelo: #c98a00;
  --vermelho: #d33;
  --cinza: #8892a0;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  background: var(--fundo);
  color: var(--texto);
}

.login-wrap {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

.login-card {
  background: var(--branco);
  border: 1px solid var(--borda);
  border-radius: 12px;
  padding: 40px;
  width: 340px;
  box-shadow: 0 8px 24px rgba(10, 30, 80, 0.08);
}

.login-card h1 {
  margin: 0 0 4px;
  font-size: 22px;
  color: var(--azul-escuro);
}

.login-card p.subtitulo {
  margin: 0 0 24px;
  color: var(--texto-suave);
  font-size: 13px;
}

label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  margin: 14px 0 6px;
}

input, select {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--borda);
  border-radius: 8px;
  font-size: 14px;
}

button {
  cursor: pointer;
  border: none;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 600;
}

.btn-primaria {
  background: var(--azul);
  color: white;
  padding: 11px 16px;
  width: 100%;
  margin-top: 20px;
}

.btn-primaria:hover { background: var(--azul-escuro); }

.btn-secundaria {
  background: var(--branco);
  color: var(--azul-escuro);
  border: 1px solid var(--borda);
  padding: 6px 12px;
}

.erro {
  color: var(--vermelho);
  font-size: 13px;
  margin-top: 12px;
  display: none;
}

.demo-hint {
  margin-top: 20px;
  font-size: 12px;
  color: var(--cinza);
  line-height: 1.6;
  border-top: 1px dashed var(--borda);
  padding-top: 14px;
}

/* Painel */
header.topo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: var(--branco);
  border-bottom: 1px solid var(--borda);
  padding: 14px 24px;
}

header.topo .marca {
  font-weight: 700;
  color: var(--azul-escuro);
  font-size: 18px;
}

header.topo .usuario {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 13px;
  color: var(--texto-suave);
}

.badge-perfil {
  background: #eaf1ff;
  color: var(--azul-escuro);
  padding: 3px 10px;
  border-radius: 999px;
  font-weight: 600;
  font-size: 11px;
  text-transform: uppercase;
}

nav.abas {
  display: flex;
  gap: 4px;
  padding: 0 24px;
  background: var(--branco);
  border-bottom: 1px solid var(--borda);
}

nav.abas button {
  background: transparent;
  padding: 12px 16px;
  color: var(--texto-suave);
  border-bottom: 3px solid transparent;
}

nav.abas button.ativa {
  color: var(--azul);
  border-bottom-color: var(--azul);
}

main.conteudo {
  padding: 24px;
  max-width: 1100px;
  margin: 0 auto;
}

.cards-patrimonio {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 14px;
  margin-bottom: 24px;
}

.card {
  background: var(--branco);
  border: 1px solid var(--borda);
  border-radius: 10px;
  padding: 16px;
}

.card .valor {
  font-size: 28px;
  font-weight: 700;
}

.card .rotulo {
  font-size: 12px;
  color: var(--texto-suave);
  text-transform: uppercase;
  letter-spacing: .03em;
}

.status-estoque .valor { color: var(--cinza); }
.status-aguardando .valor { color: var(--amarelo); }
.status-ativado .valor { color: var(--verde); }
.status-bloqueado .valor { color: var(--vermelho); }
.status-cancelado .valor { color: var(--cinza); }

.form-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  background: var(--branco);
  border: 1px solid var(--borda);
  border-radius: 10px;
  padding: 20px;
  margin-bottom: 20px;
}

.form-grid .campo-full { grid-column: 1 / -1; }

.campo-com-botao {
  display: flex;
  gap: 8px;
}

.campo-com-botao input { flex: 1; }

.scanner-caixa {
  margin-top: 12px;
  padding: 14px;
  background: var(--fundo);
  border: 1px dashed var(--borda);
  border-radius: 10px;
}

.scanner-caixa video {
  width: 100%;
  max-width: 360px;
  border-radius: 8px;
  background: #000;
  display: block;
}

.scanner-status {
  font-size: 12px;
  color: var(--texto-suave);
  margin: 8px 0;
}

table {
  width: 100%;
  border-collapse: collapse;
  background: var(--branco);
  border: 1px solid var(--borda);
  border-radius: 10px;
  overflow: hidden;
}

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

th { background: #fafbff; color: var(--texto-suave); font-weight: 600; }

.tag {
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
}

.tag-estoque { background: #eef0f4; color: var(--cinza); }
.tag-aguardando_liberacao { background: #fff3d9; color: var(--amarelo); }
.tag-ativado { background: #e4f7ec; color: var(--verde); }
.tag-bloqueado { background: #fbe4e4; color: var(--vermelho); }
.tag-cancelado { background: #eef0f4; color: var(--cinza); }

.mensagem {
  padding: 10px 14px;
  border-radius: 8px;
  font-size: 13px;
  margin-bottom: 16px;
}

.mensagem.sucesso { background: #e4f7ec; color: var(--verde); }
.mensagem.falha { background: #fbe4e4; color: var(--vermelho); }

.aviso-construcao {
  background: var(--branco);
  border: 1px dashed var(--borda);
  border-radius: 10px;
  padding: 40px;
  text-align: center;
  color: var(--texto-suave);
}
