/* ============================================================
   Keystone Button — from the Keystone Property design system.
   Variants map to brand roles. Calm, grounded, no bounce.
   ============================================================ */
.ks-btn {
  --_bg: var(--brand); --_fg: var(--text-on-brand); --_bd: transparent;
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  font-family: var(--font-sans); font-weight: var(--fw-semibold); font-size: var(--text-sm);
  line-height: 1; letter-spacing: var(--ls-snug); white-space: nowrap; cursor: pointer;
  border: var(--border-1) solid var(--_bd); border-radius: var(--radius-md);
  background: var(--_bg); color: var(--_fg); height: var(--control-h-md); padding: 0 var(--space-5);
  transition: background var(--dur-fast) var(--ease-standard),
              box-shadow var(--dur-fast) var(--ease-standard),
              transform var(--dur-fast) var(--ease-standard);
}
.ks-btn:hover { background: var(--brand-hover); }
.ks-btn:active { background: var(--brand-active); transform: translateY(1px); }
.ks-btn:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.ks-btn[disabled] { opacity: .5; cursor: not-allowed; transform: none; }

.ks-btn--accent { --_bg: var(--accent); --_fg: var(--text-on-accent); }
.ks-btn--accent:hover { background: var(--accent-hover); }
.ks-btn--accent:active { background: var(--clay-800); }

.ks-btn--secondary { --_bg: var(--surface-card); --_fg: var(--text-strong); --_bd: var(--border-strong); }
.ks-btn--secondary:hover { background: var(--surface-raised); }
.ks-btn--secondary:active { background: var(--brand-subtle); }

.ks-btn--ghost { --_bg: transparent; --_fg: var(--text-link); --_bd: transparent; }
.ks-btn--ghost:hover { background: var(--brand-subtle); }

.ks-btn--sm { height: var(--control-h-sm); padding: 0 var(--space-3); font-size: var(--text-xs); }
.ks-btn--lg { height: var(--control-h-lg); padding: 0 var(--space-8); font-size: var(--text-base); }
.ks-btn--block { width: 100%; }
.ks-btn__icon { display: inline-flex; width: 1.05em; height: 1.05em; }
.ks-btn__icon svg { width: 100%; height: 100%; }
