.ds-button{--btn-bg:var(--color-accent);--btn-fg:var(--color-on-accent);--btn-border:transparent;--btn-h:40px;--btn-px:16px;height:var(--btn-h);padding:0 var(--btn-px);border:1px solid var(--btn-border);border-radius:var(--radius-md,8px);background:var(--btn-bg);color:var(--btn-fg);font-family:var(--font-sans,system-ui, sans-serif);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--motion-fast,.12s) var(--ease-standard,ease), border-color var(--motion-fast,.12s) var(--ease-standard,ease), transform var(--motion-fast,.12s) var(--ease-standard,ease);justify-content:center;align-items:center;gap:8px;font-size:15px;font-weight:600;line-height:1;display:inline-flex;position:relative}.ds-button:hover:not(:disabled):not([aria-disabled=true]){background:color-mix(in srgb, var(--btn-bg) 88%, var(--color-text))}.ds-button:active:not(:disabled):not([aria-disabled=true]){transform:translateY(1px)}.ds-button:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.ds-button:disabled{opacity:.45;cursor:not-allowed}.ds-button[aria-busy=true]{cursor:progress}.ds-button--sm{--btn-h:32px;--btn-px:12px;font-size:14px}.ds-button--lg{--btn-h:48px;--btn-px:20px;font-size:16px}.ds-button--full{width:100%}.ds-button--secondary{--btn-bg:var(--color-surface);--btn-fg:var(--color-text);--btn-border:var(--color-border-strong,var(--color-border))}.ds-button--ghost{--btn-bg:var(--ds-canvas,var(--color-bg));--btn-fg:var(--color-accent)}.ds-button--ghost:hover:not(:disabled):not([aria-disabled=true]){background:color-mix(in srgb, var(--color-accent) 10%, var(--btn-bg))}.ds-button--destructive{--btn-bg:var(--ds-tone-destructive,#b42318);--btn-fg:var(--ds-on-tone,#fff)}.ds-button>svg,.ds-button-icon{stroke-width:2px;flex:none;width:16px;height:16px}.ds-button--lg>svg{width:18px;height:18px}.ds-button-spinner{border:2px solid;border-right-color:#0000;border-radius:999px;flex:none;width:16px;height:16px;animation:.7s linear infinite ds-spin}@keyframes ds-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.ds-button{transition:none}.ds-button-spinner{animation-duration:2s}}
