/* Buttons: primary, ghost, danger. */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--sp-2);
  padding:var(--sp-2) var(--sp-4);
  border-radius:var(--radius-sm);
  font-size:var(--fs-sm);
  font-weight:600;
  letter-spacing:.01em;
  border:1px solid transparent;
  text-decoration:none;
  transition:transform var(--transition), box-shadow var(--transition), filter var(--transition), background var(--transition);
}
.btn--primary{
  background:var(--primary-color);
  color:var(--text-on-brand);
  box-shadow:var(--shadow-brand);
}
/* The default focus ring (core/base.css) is --primary-color, the same wine this
 * button is painted with, so keyboard focus on a primary button was invisible.
 * Fixed on the component: `.btn--primary` is on seven templates, login included. */
.btn--primary:focus-visible{outline-color:var(--text-on-brand);}
/* Solid colours only: hover steps to the darker wine. */
.btn--primary:hover{background:var(--primary-color-dark);transform:translateY(-1px);}
.btn--primary:active{transform:translateY(0);}
.btn--full{width:100%;}

.btn--ghost{
  background:var(--bg-card);
  color:var(--text-secondary);
  border-color:var(--border-color-strong);
}
.btn--ghost:hover{background:var(--bg-color);color:var(--text-color);}

.btn--danger{
  background:var(--bg-card);
  color:var(--status-failed);
  border-color:var(--status-failed);
}
.btn--danger:hover{background:var(--status-failed);color:var(--text-on-brand);}

.btn--sm{padding:var(--sp-1-5) var(--sp-3);font-size:var(--fs-xs);}

/* A disabled button (ficha save before an edit, "Gerar PDFs" while the analysis blocks)
 * must read as unavailable: it used to look identical to an enabled one. Last, so it also
 * wins over the hover rules above. */
.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none;}
.btn--primary:disabled{background:var(--primary-color);}
