.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: var(--tap); padding: 8px 18px; border-radius: var(--radius-sm);
  border: 1.5px solid var(--c-border-strong); font-weight: 700; text-decoration: none; line-height: 1.2; background: var(--c-surface); color: var(--c-text); white-space: nowrap; }
.btn:hover { background: var(--c-surface-2); }
.btn:disabled, .btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; }
.btn--primary { background: linear-gradient(145deg, #5b54f0, var(--c-primary)); color: var(--c-primary-ink); border-color: transparent; box-shadow: 0 6px 16px rgba(67, 56, 202, .3); }
.btn--primary:hover { background: var(--c-indigo-600); }
.btn--success { background: var(--c-success); color: #fff; border-color: transparent; }
.btn--success:hover { background: #0e6a4c; }
.btn--danger { background: var(--c-danger); color: #fff; border-color: transparent; }
.btn--danger:hover { background: #a11f26; }
.btn--warning { background: #f59e0b; color: #1b1f3b; border-color: transparent; }
.btn--ghost { background: transparent; border-color: transparent; color: var(--c-primary); }
.btn--ghost:hover { background: rgba(67, 56, 202, .08); }
.btn--sm { min-height: 36px; padding: 6px 12px; font-size: var(--fs-sm); }
.btn--lg { min-height: 56px; padding: 12px 24px; font-size: var(--fs-md); }
.btn--block { width: 100%; }
.btn .icon { width: 18px; height: 18px; }
.btn.is-busy { position: relative; color: transparent; pointer-events: none; }
.btn.is-busy::after { content: ""; position: absolute; width: 18px; height: 18px; border-radius: 50%; border: 2.5px solid rgba(255, 255, 255, .7); border-top-color: transparent; animation: spin .8s linear infinite; }
.btn:not(.btn--primary):not(.btn--success):not(.btn--danger).is-busy::after { border-color: var(--c-primary); border-top-color: transparent; }
@keyframes spin { to { transform: rotate(360deg); } }
.link-btn { background: none; border: 0; padding: 4px; color: var(--c-primary); font-weight: 600; text-decoration: underline; min-height: 32px; }
