.ui-btn{min-height:var(--size-touch);padding:0 var(--space-6);border:var(--size-hairline) solid transparent;border-radius:var(--radius-button);max-width:100%;font:var(--type-button);text-align:center;white-space:normal;overflow-wrap:break-word;-webkit-user-select:none;user-select:none;touch-action:manipulation;cursor:pointer;transition:transform var(--duration-instant) var(--ease-standard), background-color var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-base) var(--ease-standard);justify-content:center;align-items:center;display:inline-flex;position:relative}.ui-btn__content{justify-content:center;align-items:center;gap:var(--space-2);min-width:0;display:inline-flex}.ui-btn__label{min-width:0}.ui-btn__icon{flex-shrink:0;display:inline-flex}.ui-btn__icon svg{width:var(--size-icon-md);height:var(--size-icon-md)}.ui-btn__spinner{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.ui-btn.is-loading .ui-btn__content{visibility:hidden}.ui-btn--md{min-height:var(--size-touch)}.ui-btn--lg{min-height:var(--size-touch-lg);font:var(--type-button-lg)}.ui-btn--xl{min-height:var(--size-touch-xl);font:var(--type-display-sm);letter-spacing:var(--tracking-display)}.ui-btn--full{width:100%;display:flex}.ui-btn--primary{background:var(--color-action-primary);color:var(--color-action-primary-text)}.ui-btn--secondary{background:var(--color-action-secondary);color:var(--color-action-secondary-text);border-color:var(--color-border-default)}.ui-btn--ghost{color:var(--color-text-secondary);background:0 0}.ui-btn--danger{background:var(--color-danger-soft);color:var(--color-text-danger)}.ui-btn--danger-solid{background:var(--color-action-danger);color:var(--color-action-danger-text)}.ui-btn--link{min-height:var(--size-touch-min);padding:var(--space-1) var(--space-2);color:var(--color-text-accent);text-align:left;background:0 0}.ui-btn:active:not(:disabled):not(.is-disabled):not(.is-loading){transform:scale(var(--motion-scale-press))}.ui-btn--primary:active:not(:disabled):not(.is-disabled){background:var(--color-action-primary-pressed);box-shadow:var(--shadow-glow-accent-lift)}.ui-btn--secondary:active:not(:disabled):not(.is-disabled){background:var(--color-action-secondary-pressed);border-color:var(--color-border-strong)}.ui-btn--ghost:active:not(:disabled):not(.is-disabled){background:var(--color-surface-card)}.ui-btn:disabled,.ui-btn.is-disabled{opacity:var(--opacity-disabled);cursor:default}.ui-btn.is-loading{cursor:progress}.ui-btn--primary:disabled:not(.is-loading),.ui-btn--primary.is-disabled:not(.is-loading){opacity:1;background:var(--color-action-primary-disabled,var(--color-surface-card-pressed));box-shadow:none;color:var(--color-text-disabled);border-color:#0000}.ui-modal-backdrop{z-index:var(--z-modal-backdrop);padding:calc(var(--space-6) + var(--safe-top)) var(--space-5) calc(var(--space-6) + var(--safe-bottom));background:var(--color-scrim);-webkit-backdrop-filter:blur(var(--blur-sm));justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.ui-modal{z-index:var(--z-modal);width:100%;max-width:var(--layout-modal-max-width);max-height:100%;padding:var(--space-6);background:var(--color-surface-sheet);border:var(--size-hairline) solid var(--color-border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);outline:none;position:relative;overflow-y:auto}.ui-modal__icon{margin-bottom:var(--space-3);color:var(--color-text-secondary);display:inline-flex}.ui-modal--destructive .ui-modal__icon{color:var(--color-text-danger)}.ui-modal__icon svg{width:var(--size-icon-lg);height:var(--size-icon-lg)}.ui-modal__title{font:var(--type-display-sm);letter-spacing:var(--tracking-display);color:var(--color-text-primary);overflow-wrap:anywhere}.ui-modal__description{margin-top:var(--space-2);font:var(--type-body-sm);color:var(--color-text-secondary)}.ui-modal__error{align-items:flex-start;gap:var(--space-2);margin-top:var(--space-4);font:var(--type-body-sm);color:var(--color-text-danger);display:flex}.ui-modal__error svg{width:var(--size-icon-md);height:var(--size-icon-md);flex-shrink:0}.ui-modal__actions{gap:var(--space-3);margin-top:var(--space-6);flex-wrap:wrap-reverse;display:flex}.ui-modal__action{flex:1 0 auto}
