/* 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:linear-gradient(135deg, var(--primary-color), var(--primary-color-dark));
  color:var(--text-on-brand);
  box-shadow:var(--shadow-brand);
}
.btn--primary:hover{filter:brightness(1.06);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:6px var(--sp-3);font-size:var(--fs-xs);}
