.spinner{--spinner-size:20px;--spinner-thickness:max(2px, calc(var(--spinner-size) * .14));width:var(--spinner-size);height:var(--spinner-size);color:inherit;background:radial-gradient(farthest-side, currentColor 92%, transparent) top/var(--spinner-thickness) var(--spinner-thickness) no-repeat,conic-gradient(from 0deg, transparent 0 22%, currentColor 100%);-webkit-mask:radial-gradient(farthest-side, transparent calc(100% - var(--spinner-thickness) - .5px), #000 calc(100% - var(--spinner-thickness) + .5px));-webkit-mask:radial-gradient(farthest-side, transparent calc(100% - var(--spinner-thickness) - .5px), #000 calc(100% - var(--spinner-thickness) + .5px));mask:radial-gradient(farthest-side, transparent calc(100% - var(--spinner-thickness) - .5px), #000 calc(100% - var(--spinner-thickness) + .5px));will-change:transform;border-radius:50%;flex-shrink:0;animation:.9s linear infinite spinner-rotate;display:inline-block}.spinner--light{color:#fff}.spinner--dark{color:#0a0a0a}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.spinner-block{padding:var(--spacing-2xl) var(--spacing-lg);color:var(--text-secondary);flex:1;justify-content:center;align-items:center;display:flex}@keyframes spinner-rotate{to{transform:rotate(1turn)}}
.button{justify-content:center;align-items:center;gap:var(--spacing-sm);font-family:var(--font-sans);border-radius:var(--radius);cursor:pointer;transition:var(--transition-fast);white-space:nowrap;border:none;font-weight:500;line-height:1;text-decoration:none;display:inline-flex;position:relative}.button:disabled{opacity:.4;cursor:not-allowed}.button:active{transform:scale(.9)translateZ(0)}.button svg{flex-shrink:0;width:14px;height:14px}.button.fill{width:100%}.button--default{background-color:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border-hover)}.button--default:hover:not(:disabled){background-color:var(--bg-tertiary)}.button--primary{background-color:var(--accent);color:var(--bg-primary)}.button--primary:hover:not(:disabled){opacity:.85}.button--primary:active:not(:disabled){opacity:.7}.button--secondary{background-color:var(--bg-light);color:var(--accent);border:1px solid var(--border-hover)}.button--secondary:hover:not(:disabled){background-color:var(--bg-tertiary)}.button--success{background-color:var(--success);color:var(--bg-primary)}.button--success:hover:not(:disabled){opacity:.6}.button--danger{background-color:var(--error);color:var(--bg-primary)}.button--danger:hover:not(:disabled){opacity:.6}.button--ghost{color:var(--text-secondary);background-color:#0000}.button--ghost:hover:not(:disabled){background-color:var(--bg-tertiary);color:var(--text-primary)}.button--elevated{background-color:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.button--elevated:hover:not(:disabled){border-color:var(--border-hover)}.button--fill{width:100%}.button--xs{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--fs-sm);border-radius:var(--radius-lg)}.button--sm{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--fs-sm)}.button--md{padding:var(--spacing-md);font-size:var(--fs-base)}.button--xl{padding:var(--spacing-lg);font-size:var(--fs-base)}.button--lg{font-size:var(--fs-base);padding:10px 20px}.button--loading{pointer-events:none}.button__icon{align-items:center;display:flex}.button__content{align-items:center;gap:var(--spacing-sm);display:flex}
