.btn{justify-content:center;align-items:center;gap:var(--space-2);max-width:100%;min-height:var(--control-height);padding:0 var(--space-4);border-radius:var(--radius-control);border:var(--border-width) solid transparent;font:inherit;font-size:var(--text-sm);line-height:1.25rem;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), color var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);text-decoration:none;display:inline-flex}.btn>span:not(.btn-icon){text-overflow:ellipsis;min-width:0;overflow:hidden}.btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 2px var(--color-focus-halo);border-radius:var(--radius-control)}.btn:active:not(:disabled){transform:scale(.98)}.btn-sm{min-height:32px;padding:0 var(--space-3);font-size:var(--text-sm)}.btn-icon{flex-shrink:0;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-primary:active:not(:disabled){background:var(--color-primary-pressed)}.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);border-color:var(--color-danger)}.dialog-danger .btn-danger:hover:not(:disabled),.btn-danger.solid:hover:not(:disabled){background:var(--color-danger-hover);border-color:var(--color-danger-hover)}.btn-external{background:var(--color-external);color:var(--color-text-inverse);border-color:var(--color-external)}.btn-external:hover:not(:disabled){filter:brightness(1.08)}.btn.btn:disabled{background:var(--color-surface-sunken);color:var(--color-text-disabled);border-color:var(--color-border);filter:none;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}.btn,.btn:active:not(:disabled){transition:none;transform:none}}@media (width<=767px){.btn{min-height:var(--control-height-touch)}}
