.ui-spinner{color:var(--label-secondary);justify-content:center;align-items:center;display:inline-flex}.ui-spinner__svg{width:20px;height:20px;animation:.8s linear infinite ui-spin}.ui-spinner--sm .ui-spinner__svg{width:14px;height:14px}.ui-spinner--lg .ui-spinner__svg{width:28px;height:28px}.ui-spinner__track{stroke:currentColor;opacity:.2}.ui-spinner__arc{stroke:var(--spinner-arc,var(--accent))}.ui-btn .ui-spinner__arc{stroke:currentColor}@keyframes ui-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.ui-spinner__svg{animation-duration:1.6s}}.ui-btn{--btn-h:var(--control-h);--btn-icon:16px;height:var(--btn-h);min-width:var(--btn-h);border-radius:var(--radius-control);font-size:var(--text-body);font-weight:var(--weight-medium);white-space:nowrap;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;outline-offset:5px;transition:background-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out), opacity var(--duration-fast) var(--ease-out), outline-offset var(--duration-fast) var(--ease-out), transform var(--duration-slow) var(--ease-spring-bouncy);border:0;justify-content:center;align-items:center;gap:6px;padding:0 14px;line-height:1;text-decoration:none;display:inline-flex;position:relative}.ui-btn:focus-visible{outline-offset:2px}.ui-btn:hover{text-decoration:none}.ui-btn svg{width:var(--btn-icon);height:var(--btn-icon)}.ui-btn__label{text-overflow:ellipsis;line-height:1.3;overflow:hidden}.ui-btn:active:not(:disabled):not([aria-disabled=true]){transform:scale(var(--press-scale));transition-duration:var(--duration-fast), var(--duration-fast), var(--duration-fast), var(--duration-fast), var(--duration-fast), 80ms;transition-timing-function:var(--ease-out)}.ui-btn .ui-spinner{color:currentColor;animation:ui-fade-in var(--duration-fast) var(--ease-out) backwards}.ui-btn--sm{--btn-h:var(--control-h-sm);--btn-icon:14px;font-size:var(--text-callout);border-radius:var(--radius-sm);gap:4px;padding:0 10px}.ui-btn--lg{--btn-h:var(--control-h-lg);--btn-icon:18px;font-size:var(--text-title-3);border-radius:10px;padding:0 18px}.ui-btn--full{width:100%}.ui-btn.ui-btn--icon{width:var(--btn-h);padding:0}.ui-btn--primary{background-color:var(--accent-fill);background-image:var(--accent-gradient);color:var(--on-accent);font-weight:var(--weight-semibold);box-shadow:0 1px 2px #96280c3d,0 0 0 .5px #96280c4d,inset 0 1px #fff3}.ui-btn--primary:hover{background-color:var(--accent-fill-hover);background-image:var(--accent-gradient-hover);box-shadow:0 2px 6px #96280c47,0 0 0 .5px #96280c57,inset 0 1px #fff3}.ui-btn--primary:active{background-color:var(--accent-fill-pressed);background-image:var(--accent-gradient-pressed);box-shadow:0 0 0 .5px #96280c57,inset 0 1px 2px #00000029}.ui-btn--secondary{background:var(--control-bg);color:var(--label);box-shadow:var(--shadow-control)}.ui-btn--secondary:hover{background:var(--control-bg-hover)}.ui-btn--secondary:active,.ui-btn--secondary[aria-haspopup][aria-expanded=true]{background:var(--control-bg-pressed)}.ui-btn--tinted{background:var(--accent-wash);color:var(--accent-on-wash)}.ui-btn--tinted:hover{background:var(--accent-wash-strong)}.ui-btn--plain{color:var(--accent-text);background:0 0;padding:0 8px}.ui-btn--plain:hover{background:var(--accent-hover-wash)}.ui-btn--plain:active{background:var(--accent-wash)}.ui-btn--ghost{color:var(--label-secondary);background:0 0;padding:0 8px}.ui-btn--ghost:hover{background:var(--fill-3);color:var(--label)}.ui-btn--ghost:active,.ui-btn--ghost[aria-haspopup][aria-expanded=true]{background:var(--fill-2);color:var(--label)}.ui-btn--destructive{background:var(--fill-3);color:var(--danger-on-wash)}.ui-btn--destructive:hover{background:var(--fill-2)}.ui-btn--destructive:active{background:var(--fill-1)}.ui-btn--danger{background:var(--danger-fill);color:#fff;font-weight:var(--weight-semibold);box-shadow:0 1px 2px #780a143d,inset 0 1px #ffffff29}.ui-btn--danger:hover{background:var(--danger-fill-hover)}.ui-btn:disabled,.ui-btn[aria-disabled=true]:not([data-loading]){opacity:.4;cursor:default;pointer-events:none}.ui-btn[data-loading]{cursor:progress}@media (prefers-reduced-motion:reduce){.ui-btn{transition-property:background-color,color,box-shadow,opacity}}@media (forced-colors:active){.ui-btn{border:1px solid buttontext}.ui-btn--primary{background-image:none}.ui-btn--primary,.ui-btn--danger{border-color:highlight}}
