.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--control-height);padding:0 var(--space-3);border-radius:var(--radius-md);border:var(--border-width) solid transparent;font:inherit;font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;white-space:nowrap;transition:background var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);text-decoration:none;display:inline-flex}.btn:active:not(:disabled){transform:scale(.98)}.btn-sm{min-height:32px;padding:0 var(--space-3);font-size:var(--text-sm)}.btn-icon{display:inline-flex}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-hover)}.btn-ghost{color:var(--color-text-muted);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--color-surface-hover);color:var(--color-text)}.btn-danger{background:var(--color-surface);color:var(--color-danger);border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){background:var(--color-danger-soft)}.dialog-danger .btn-danger,.btn-danger.solid{background:var(--color-danger);color:var(--color-on-danger)}.dialog-danger .btn-danger:hover:not(:disabled),.btn-danger.solid:hover:not(:disabled){background:var(--color-danger-hover)}.btn-external{background:var(--color-external);color:var(--color-text-inverse)}.btn-external:hover:not(:disabled){filter:brightness(1.08)}.btn:disabled{opacity:.45;cursor:not-allowed}.kbd{font-family:var(--font-mono);border-radius:var(--radius-sm);opacity:.8;border:1px solid;padding:1px 5px;font-size:.6875rem;line-height:1.3}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spin{animation-duration:2.5s}}@media (width<=767px){.btn{min-height:var(--control-height-touch)}}
