.btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:0;border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;font-family:inherit;font-weight:var(--font-weight-medium);text-decoration:none;user-select:none;white-space:nowrap;position:relative;transition:background-color var(--duration-fast) var(--easing-standard),color var(--duration-fast) var(--easing-standard),box-shadow var(--duration-fast) var(--easing-standard),transform var(--duration-fast) var(--easing-standard)}.btn:focus-visible{outline:var(--border-thick) solid color-mix(in srgb,var(--border-brand) 40%,transparent);outline-offset:2px}.btn[disabled]{cursor:not-allowed}.btn--loading{pointer-events:none;cursor:wait}.btn--full-width{width:100%}.btn--sm{padding:6px 10px;gap:6px;font-size:13px;line-height:16px}.btn--md{padding:8px 14px;gap:8px;font-size:var(--font-size-sm);line-height:20px}.btn--lg{padding:10px 18px;gap:8px;font-size:var(--font-size-base);line-height:24px}.btn--icon-only.btn--sm{padding:6px;width:28px}.btn--icon-only.btn--md{padding:8px;width:36px}.btn--icon-only.btn--lg{padding:10px;width:44px}.btn--primary{background:var(--accent-bg-bright);color:var(--accent-fg-on-accent);box-shadow:inset 0 0 0 1px var(--accent-ring-inner),var(--shadow-md)}.btn--primary:hover:not([disabled]){background:var(--accent-bg-bright-hover)}.btn--primary:active:not([disabled]){background:var(--accent-bg-bright-pressed);box-shadow:var(--shadow-sm);transform:translateY(1px)}.btn--primary[disabled],.btn--primary.btn--loading{background:var(--bg-muted);color:var(--text-disabled);box-shadow:none}.btn--primary.btn--loading{background:var(--accent-bg-bright);color:var(--accent-fg-on-accent);box-shadow:inset 0 0 0 1px var(--accent-ring-inner),var(--shadow-md);opacity:.8}.btn--destructive{background:var(--danger-bg-bright);color:var(--accent-fg-on-accent);box-shadow:inset 0 0 0 1px var(--danger-ring-inner),var(--shadow-md)}.btn--destructive:hover:not([disabled]){background:var(--danger-bg-bright-hover)}.btn--destructive:active:not([disabled]){background:var(--danger-bg-bright-pressed);box-shadow:var(--shadow-sm);transform:translateY(1px)}.btn--destructive[disabled]{background:var(--bg-muted);color:var(--text-disabled);box-shadow:none}.btn--destructive.btn--loading{background:var(--danger-bg-bright);color:var(--accent-fg-on-accent);box-shadow:inset 0 0 0 1px var(--danger-ring-inner),var(--shadow-md);opacity:.8}.btn--secondary{background:var(--bg-elevated);color:var(--text-primary);box-shadow:inset 0 0 0 1px var(--border-elevated),var(--shadow-sm)}.btn--secondary:hover:not([disabled]){background:var(--bg-muted)}.btn--secondary:active:not([disabled]){background:var(--bg-muted);box-shadow:inset 0 0 0 1px var(--border-elevated);transform:translateY(1px)}.btn--secondary[disabled],.btn--secondary.btn--loading{background:var(--bg-muted);color:var(--text-disabled);box-shadow:inset 0 0 0 1px var(--border-elevated)}.btn--tertiary{background:transparent;color:var(--text-primary)}.btn--tertiary:hover:not([disabled]){background:var(--bg-muted)}.btn--tertiary:active:not([disabled]){background:var(--bg-muted)}.btn--tertiary[disabled],.btn--tertiary.btn--loading{background:transparent;color:var(--text-disabled)}.btn--link{background:transparent;color:var(--text-link);padding:0;font-weight:var(--font-weight-medium)}.btn--link:hover:not([disabled]){text-decoration:underline;text-underline-offset:2px}.btn--link:active:not([disabled]){color:var(--text-brand);text-decoration:underline;text-underline-offset:2px}.btn--link[disabled],.btn--link.btn--loading{color:var(--text-disabled);text-decoration:none}.btn__icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.btn--sm .btn__icon{width:14px;height:14px}.btn--md .btn__icon{width:16px;height:16px}.btn--lg .btn__icon{width:18px;height:18px}.btn__icon svg{width:100%;height:100%;display:block}.btn__label{display:inline-block}.btn__spinner{display:inline-block;flex-shrink:0;border:2px solid currentColor;border-top-color:transparent;border-radius:var(--radius-full);animation:btn-spin .7s linear infinite;opacity:.9}.btn--sm .btn__spinner{width:12px;height:12px;border-width:1.5px}.btn--md .btn__spinner{width:14px;height:14px}.btn--lg .btn__spinner{width:16px;height:16px}@keyframes btn-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.btn__spinner{animation-duration:2s}.btn:active{transform:none}}
