.btn{--btn-bg:var(--color-accent-strong);--btn-fg:var(--color-on-accent);--btn-border:transparent;justify-content:center;align-items:center;gap:var(--space-xs);min-height:2.75rem;font-family:var(--font-body);font-size:var(--text-sm);letter-spacing:.01em;color:var(--btn-fg);background:var(--btn-bg);border:1px solid var(--btn-border);border-radius:var(--radius-pill);transition:transform var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out);text-align:center;white-space:nowrap;padding:.7em 1.4em;font-weight:600;display:inline-flex}.btn:hover{background:var(--color-accent-deep);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn:active{box-shadow:none;transform:translateY(0)}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none}.btn--full{width:100%}.btn--lg{min-height:3.25rem;font-size:var(--text-base);padding:.85em 1.9em}.btn--secondary{--btn-bg:transparent;--btn-fg:var(--color-ink-strong);--btn-border:var(--line-strong)}.btn--secondary:hover{background:var(--color-surface-sunken);border-color:var(--color-ink-strong);color:var(--color-ink-strong)}.btn--ghost{--btn-bg:transparent;--btn-fg:var(--color-ink-strong);--btn-border:transparent;padding-inline:.6em}.btn--ghost:hover{background:var(--color-surface-sunken);box-shadow:none;transform:none}.btn--on-dark.btn--secondary{--btn-fg:var(--color-on-dark);--btn-border:var(--line-on-dark)}.btn--on-dark.btn--secondary:hover{background:var(--color-dark-raised);border-color:var(--color-on-dark);color:var(--color-on-dark)}.btn-link{align-items:center;gap:var(--space-xs);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-accent-strong);transition:gap var(--duration-fast) var(--ease-out);display:inline-flex}.btn-link:after{content:"→";transition:transform var(--duration-fast) var(--ease-out)}.btn-link:hover:after{transform:translate(3px)}
