.btn{cursor:pointer;transition:background-color var(--duration-normal) var(--ease-premium), color var(--duration-normal) var(--ease-premium), border-color var(--duration-normal) var(--ease-premium), transform var(--duration-fast) var(--ease-premium), box-shadow var(--duration-normal) var(--ease-premium);touch-action:manipulation;text-align:center;border-radius:999px;justify-content:center;align-items:center;min-height:44px;font-family:inherit;font-weight:500;line-height:1.35;text-decoration:none;display:inline-flex;position:relative}.btn:focus-visible{outline:2px solid var(--river);outline-offset:2px}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-sm{font-size:var(--step--1);padding:.5rem 1rem}.btn-md{font-size:var(--step-0);padding:.75rem 1.5rem}.btn-lg{font-size:var(--step-1);padding:1.1rem 2.2rem}.btn-primary{background-color:var(--river);color:#fff;border:1px solid #0000}.btn-primary:hover:not(:disabled){background-color:var(--river-deep);box-shadow:var(--shadow-button);transform:translateY(-2px)}.btn-secondary{background-color:var(--surface-strong);color:var(--ink);border:1px solid #0000}.btn-secondary:hover:not(:disabled){background-color:var(--surface-soft);transform:translateY(-2px);box-shadow:0 4px 12px #17222d0d}.btn-outline{color:var(--ink);border:1px solid var(--line-strong);background-color:#0000}.btn-outline:hover:not(:disabled){border-color:var(--ink);background-color:var(--ink);color:var(--surface);transform:translateY(-2px);box-shadow:0 4px 12px #17222d14}.btn-ghost{color:var(--ink);background-color:#0000;border:1px solid #0000}.btn-ghost:hover:not(:disabled){background-color:var(--river-soft);transform:translateY(-1px)}.btn-loading{pointer-events:none}.btn-text-hidden{opacity:0}.btn-spinner{border:2px solid #ffffff4d;border-top-color:currentColor;border-radius:50%;width:1.25em;height:1.25em;margin-top:-.625em;margin-left:-.625em;animation:.8s linear infinite spinner;position:absolute;top:50%;left:50%}.btn-outline .btn-spinner,.btn-ghost .btn-spinner,.btn-secondary .btn-spinner{border-color:currentColor #0000001a #0000001a}@keyframes spinner{to{transform:rotate(360deg)}}
