:root {
  --rosa: #D36A8C;
  --rosa-destaque: #EE6A96;
  --verde: #1F7A63;
  --preto: #0A0A0A;
  --grafite: #1A1A1A;
  --grafite-claro: #2A2A2A;
  --branco: #FFFFFF;
  --cinza: #9A9A9A;
  --perigo: #ff8a8a;
  --font-heading: 'Poppins', sans-serif;
  --font-body: 'Open Sans', sans-serif;

  /* Escala tipográfica */
  --fs-h1: 26px;
  --fs-h2: 20px;
  --fs-h3: 15px;
  --fs-corpo: 14px;
  --fs-auxiliar: 12px;
  --fs-dado: 22px;

  /* Escala de espaçamento (múltiplos de 4) */
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 20px;
  --sp-6: 24px;
  --sp-8: 32px;

  /* Raio padrão */
  --raio-sm: 8px;
  --raio-md: 12px;
  --raio-lg: 16px;
  --raio-pill: 999px;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--preto);
  color: var(--branco);
  font-family: var(--font-body);
  font-size: var(--fs-corpo);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}

h1, .h1 { font-family: var(--font-heading); font-weight: 700; font-size: var(--fs-h1); margin: 0; }
h2, .h2 { font-family: var(--font-heading); font-weight: 600; font-size: var(--fs-h2); margin: 0; }
h3, .h3, .heading { font-family: var(--font-heading); font-weight: 600; font-size: var(--fs-h3); margin: 0; }
.texto-auxiliar { color: var(--cinza); font-size: var(--fs-auxiliar); }
.texto-dado { font-family: var(--font-heading); font-weight: 700; font-size: var(--fs-dado); }

.tela-centralizada {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--sp-6);
}

.cartao {
  background: var(--grafite);
  border-radius: var(--raio-lg);
  padding: var(--sp-8) var(--sp-6);
  width: 100%;
  max-width: 380px;
}

.logo-espaco {
  width: 76px;
  height: 76px;
  border-radius: 50%;
  background: var(--rosa);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto var(--sp-5);
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 26px;
  color: var(--branco);
  box-shadow: 0 6px 20px rgba(211,106,140,0.25);
}

.titulo-marca {
  text-align: center;
  font-size: var(--fs-h1);
  margin: 0 0 var(--sp-1);
}

.subtitulo-marca {
  text-align: center;
  color: var(--cinza);
  font-size: var(--fs-corpo);
  margin: 0 0 var(--sp-8);
  line-height: 1.5;
}

label {
  display: block;
  font-size: var(--fs-auxiliar);
  color: var(--cinza);
  margin-bottom: var(--sp-2);
  margin-top: var(--sp-4);
  font-weight: 600;
  letter-spacing: 0.2px;
}

input, select, textarea {
  width: 100%;
  padding: 14px;
  border-radius: var(--raio-sm);
  border: 1px solid var(--grafite-claro);
  background: var(--preto);
  color: var(--branco);
  font-size: 16px;
  font-family: var(--font-body);
  transition: border-color 0.15s;
}
select { appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath fill='%239A9A9A' d='M0 0l6 8 6-8z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; padding-right: 40px; }

input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--rosa);
}
input::placeholder, textarea::placeholder { color: #6b6b6b; }

/* Checkbox/radio nativos com tamanho de toque confortável */
input[type="checkbox"], input[type="radio"] { width: 20px; height: 20px; accent-color: var(--rosa); cursor: pointer; }

/* ---- Botões: variantes consistentes ---- */
button.btn-primario, .btn-primario {
  width: 100%;
  margin-top: var(--sp-6);
  padding: 15px;
  border-radius: var(--raio-sm);
  border: none;
  background: var(--rosa);
  color: var(--branco);
  font-size: 16px;
  font-weight: 600;
  font-family: var(--font-heading);
  cursor: pointer;
  transition: background 0.15s, transform 0.1s;
  display: inline-block;
  text-align: center;
  text-decoration: none;
}
button.btn-primario:hover, .btn-primario:hover { background: var(--rosa-destaque); }
button.btn-primario:active, .btn-primario:active { transform: scale(0.98); }
button.btn-primario:disabled, .btn-primario:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }

.btn-secundario {
  width: 100%;
  padding: 14px;
  border-radius: var(--raio-sm);
  border: 1px solid var(--grafite-claro);
  background: transparent;
  color: var(--branco);
  font-size: 14px;
  font-weight: 600;
  font-family: var(--font-heading);
  cursor: pointer;
  margin-top: var(--sp-3);
}
.btn-secundario:hover { border-color: var(--rosa); color: var(--rosa); }

.btn-ghost {
  background: none;
  border: none;
  color: var(--cinza);
  font-size: var(--fs-corpo);
  font-family: var(--font-heading);
  font-weight: 600;
  cursor: pointer;
  padding: var(--sp-2) 0;
}
.btn-ghost:hover { color: var(--branco); }

.btn-perigo {
  background: rgba(211,71,71,0.15);
  color: var(--perigo);
  border: none;
  border-radius: var(--raio-sm);
  padding: 12px 16px;
  font-size: 13px;
  font-weight: 600;
  font-family: var(--font-heading);
  cursor: pointer;
}
.btn-perigo:hover { background: rgba(211,71,71,0.28); }

.btn-sucesso {
  background: var(--verde);
  color: var(--branco);
  border: none;
  border-radius: var(--raio-sm);
  padding: 14px 18px;
  font-size: 14px;
  font-weight: 700;
  font-family: var(--font-heading);
  cursor: pointer;
}
.btn-sucesso:hover { filter: brightness(1.1); }

button { font-family: inherit; }
button:disabled { opacity: 0.6; cursor: not-allowed; }

.erro {
  background: rgba(211, 71, 71, 0.15);
  color: var(--perigo);
  padding: 10px 14px;
  border-radius: var(--raio-sm);
  font-size: 13px;
  margin-top: var(--sp-4);
  display: none;
}
.erro.visivel { display: block; }

.ok-msg {
  background: rgba(31,122,99,0.15);
  color: #4fd6b5;
  padding: 10px 14px;
  border-radius: var(--raio-sm);
  font-size: 13px;
  margin-top: var(--sp-4);
  display: none;
}
.ok-msg.visivel { display: block; }

/* ---- Links e comandos: nenhum sublinhado por padrão do navegador ---- */
a {
  color: inherit;
  text-decoration: none;
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 2px;
}
/* Link textual dentro de parágrafo/corpo de texto: indica clicável sem virar hyperlink clássico do navegador */
.link-texto {
  color: var(--rosa);
  text-decoration: none;
  font-weight: 600;
  cursor: pointer;
  background: none;
  border: none;
  font-size: inherit;
  font-family: inherit;
  padding: 0;
}
.link-texto:hover { color: var(--rosa-destaque); }
.link-texto:active { opacity: 0.8; }

/* ---- Badges / estados / alertas reutilizáveis ---- */
.badge-status { display: inline-block; font-size: 11px; padding: 3px 10px; border-radius: var(--raio-pill); font-weight: 600; }
.badge-status.sucesso { background: rgba(31,122,99,0.2); color: #4fd6b5; }
.badge-status.alerta { background: rgba(238,106,150,0.18); color: var(--rosa-destaque); }
.badge-status.neutro { background: var(--grafite-claro); color: var(--cinza); }

.alerta-caixa { border-radius: var(--raio-sm); padding: var(--sp-3) var(--sp-4); font-size: 13px; margin: var(--sp-3) 0; line-height: 1.5; }
.alerta-caixa.info { background: rgba(211,106,140,0.12); border-left: 3px solid var(--rosa); }
.alerta-caixa.sucesso { background: rgba(31,122,99,0.12); border-left: 3px solid var(--verde); }
.alerta-caixa.perigo { background: rgba(211,71,71,0.15); border-left: 3px solid var(--perigo); color: var(--perigo); }

.campo-senha-wrap { position: relative; }
.campo-senha-wrap input { padding-right: 80px; }
.btn-mostrar-senha { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); background: var(--grafite-claro); border: none; color: var(--branco); font-size: 11px; padding: 8px 10px; border-radius: var(--raio-sm); cursor: pointer; }

.topo-app {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--sp-4) var(--sp-5);
  border-bottom: 1px solid var(--grafite-claro);
  position: sticky;
  top: 0;
  background: var(--preto);
  z-index: 5;
}

.topo-app .marca { font-family: var(--font-heading); font-weight: 700; font-size: 16px; letter-spacing: 0.3px; }

.sair-link {
  color: var(--cinza);
  font-size: 13px;
  background: none;
  border: none;
  cursor: pointer;
}
.sair-link:hover { color: var(--branco); }

.conteudo { padding: var(--sp-6) var(--sp-5) var(--sp-8); max-width: 640px; margin: 0 auto; }

/* ---- Estado vazio: sempre título + explicação humana, nunca "Sem dados." ---- */
.estado-vazio {
  text-align: center;
  color: var(--cinza);
  padding: var(--sp-8) var(--sp-5);
  font-size: 14px;
  line-height: 1.6;
}
.estado-vazio-titulo {
  font-family: var(--font-heading);
  font-weight: 600;
  color: var(--branco);
  font-size: var(--fs-h3);
  margin-bottom: var(--sp-2);
}

/* ---- Loading: spinner discreto reutilizável ---- */
.spinner-carregando {
  display: inline-block;
  width: 18px;
  height: 18px;
  border: 2px solid var(--grafite-claro);
  border-top-color: var(--rosa);
  border-radius: 50%;
  animation: girar 0.7s linear infinite;
}
@keyframes girar { to { transform: rotate(360deg); } }

/* Cards de conteúdo padrão — usado por dashboards, resumos, listas */
.cartao-padrao {
  background: var(--grafite);
  border-radius: var(--raio-md);
  padding: var(--sp-4) var(--sp-5);
}
