/* ============================================================
   BOTÕES — estados globais + variantes do DS.
   Tamanho padrão via .btn; cor via .btn-primary/-secondary/etc.
   ============================================================ */

button,
input[type="submit"] {
  /* Texto de todos os botões em bold. !important vence os font-weight
     inline (uns têm 600, outros 700, outros nada) — mesmo padrão que as
     regras de hover deste arquivo usam pra sobrepor estilo inline. */
  font-weight: 700 !important;
  transition:
    background-color 0.15s ease,
    color 0.15s ease,
    border-color 0.15s ease,
    transform 0.05s ease,
    box-shadow 0.15s ease,
    filter 0.15s ease;
}

button:not(:disabled):not([aria-disabled='true']),
input[type="submit"]:not(:disabled) {
  cursor: pointer;
}

/* Tamanho/forma padrão (combina com as variantes de cor abaixo) */
.btn {
  border-radius: 8px;
  padding: 12px 20px;
  font-size: 14px;
  font-family: inherit;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  line-height: 1.2;
  white-space: nowrap;
}
.btn--compacto {
  padding: 0 16px;
  height: 38px;
}
.btn--bloco {
  width: 100%;
}

/* --- Primário azul Mainô --- */
button.btn-primary,
a.btn-primary,
input.btn-primary {
  background: var(--azul);
  color: var(--sobre-cor);
  border: none;
}
button.btn-primary:not(:disabled):hover,
a.btn-primary:hover,
input.btn-primary:not(:disabled):hover {
  /* DS: hover troca a cor por um azul mais claro (sem sombra). */
  background-color: var(--azul-hover);
}
button.btn-primary:not(:disabled):active,
a.btn-primary:active,
input.btn-primary:not(:disabled):active {
  /* DS: estado "pressed" = navy escuro. */
  background-color: var(--azul-pressed);
}

/* --- Secundário (branco com borda) --- */
button.btn-secondary,
a.btn-secondary,
input.btn-secondary {
  /* DS: secundário = outline navy (borda + texto azul). */
  background: var(--sup);
  color: var(--marca-texto);
  border: 1px solid var(--azul);
}
button.btn-secondary:not(:disabled):hover,
a.btn-secondary:hover,
input.btn-secondary:not(:disabled):hover {
  background-color: var(--azul-suave-2);
  border-color: var(--azul);
  color: var(--marca-texto);
}

/* --- Sucesso verde --- */
button.btn-success,
a.btn-success,
input.btn-success {
  background: var(--verde);
  color: var(--sobre-cor);
  border: none;
}
button.btn-success:not(:disabled):hover,
a.btn-success:hover,
input.btn-success:not(:disabled):hover {
  background-color: var(--verde-escuro);
  box-shadow: 0 4px 14px rgba(42, 114, 33, 0.3);
}

/* --- Perigo/destrutivo vermelho --- */
button.btn-danger,
input.btn-danger {
  background: var(--vermelho-btn);
  color: var(--sobre-cor);
  border: none;
}
button.btn-danger:not(:disabled):hover,
input.btn-danger:not(:disabled):hover {
  background-color: var(--vermelho-btn-hover);
}

/* --- Ghost (sem fundo) — texto vermelho (Sair) --- */
button.btn-ghost-danger {
  background: none;
  color: var(--vermelho);
  border: none;
}
button.btn-ghost-danger:not(:disabled):hover {
  background-color: var(--vermelho-suave);
}

/* --- Ghost neutro (ícones, fechar, etc.) --- */
button.btn-ghost {
  background: none;
  border: none;
}
button.btn-ghost:not(:disabled):hover {
  background-color: var(--sup-hover);
}

/* Fallback attribute selectors — mantém retrocompatibilidade
   com botões que ainda usam apenas style inline */
button[style*='background:#033860']:not(:disabled):not(.btn-primary):hover,
button[style*='background: #033860']:not(:disabled):not(.btn-primary):hover {
  /* DS: hover troca a cor (azul mais claro), sem sombra. */
  background-color: var(--azul-hover) !important;
}
button[style*='background:#2A7221']:not(:disabled):not(.btn-success):hover,
button[style*='background: #2A7221']:not(:disabled):not(.btn-success):hover,
button[style*='background:#2a7221']:not(:disabled):not(.btn-success):hover {
  background-color: var(--verde-escuro) !important;
}
button[style*='background:#fff']:not(:disabled):not(.btn-secondary):hover,
button[style*='background: #fff']:not(:disabled):not(.btn-secondary):hover {
  background-color: var(--azul-suave-2) !important;
}
button[style*='background:none']:not(:disabled):hover,
button[style*='background: none']:not(:disabled):hover,
button[style*='background:transparent']:not(:disabled):hover,
button[style*='background: transparent']:not(:disabled):hover {
  background-color: var(--sup-hover) !important;
}
button[style*='color:#D22121']:not(:disabled):hover,
button[style*='color: #D22121']:not(:disabled):hover {
  background-color: var(--vermelho-suave) !important;
  color: var(--vermelho) !important;
}

button:not(:disabled):not([aria-disabled='true']):active,
input[type="submit"]:not(:disabled):active {
  transform: translateY(1px);
}

button:not(:disabled):not([aria-disabled='true']):focus-visible,
input[type="submit"]:not(:disabled):focus-visible {
  outline: 2px solid var(--azul);
  outline-offset: 2px;
}

button:disabled,
button[aria-disabled='true'],
input[type="submit"]:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}
