.btn{border-radius:var(--radius-md);font-weight:600;font-size:var(--font-base);cursor:pointer;white-space:nowrap;min-height:var(--touch-min);letter-spacing:-.01em;border:none;justify-content:center;align-items:center;gap:6px;padding:0 1.25rem;text-decoration:none;transition:all .15s;display:inline-flex;position:relative}.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 1px 2px #2563eb40,0 2px 8px #2563eb33}.btn-primary:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 2px 4px #2563eb4d,0 4px 12px #2563eb40}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:var(--surface);color:var(--text-secondary);border:1.5px solid var(--border);box-shadow:var(--shadow-xs)}.btn-secondary:hover:not(:disabled){background:var(--surface-hover);color:var(--text);border-color:#94a3b8}.btn-outline{color:var(--primary);border:1.5px solid var(--primary);background:0 0}.btn-outline:hover:not(:disabled){background:var(--primary-muted)}.btn-ghost{color:var(--text-muted);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.btn-danger{background:var(--danger);color:#fff;box-shadow:0 1px 2px #dc262633}.btn-danger:hover:not(:disabled){background:#b91c1c;transform:translateY(-1px)}.btn-success{background:var(--success);color:#fff}.btn-success:hover:not(:disabled){background:#047857}.btn-sm{min-height:34px;font-size:var(--font-sm);border-radius:var(--radius-sm);gap:4px;padding:0 .875rem}.btn-md{min-height:var(--touch-min);padding:0 1.25rem}.btn-lg{min-height:50px;font-size:var(--font-lg);border-radius:var(--radius-lg);gap:8px;padding:0 1.75rem}.btn-full{width:100%}.btn-loading{pointer-events:none;color:#0000!important}.btn-loading:after{content:"";border:2.5px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin;position:absolute}.btn-secondary.btn-loading:after,.btn-ghost.btn-loading:after,.btn-outline.btn-loading:after{border-color:#00000026;border-top-color:var(--primary)}@keyframes spin{to{transform:rotate(360deg)}}
