.pu-btn{--_h:var(--control-h-md);--_px:16px;--_fs:var(--text-md);display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--_h);padding:0 var(--_px);font-size:var(--_fs);font-family:var(--font-sans);font-weight:var(--weight-medium);line-height:1;white-space:nowrap;border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;box-sizing:border-box;transition:var(--transition-colors),transform var(--dur-fast) var(--ease-standard)}.pu-btn:active:not(:disabled){transform:scale(var(--press-scale))}.pu-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.pu-btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.pu-btn svg{width:1.15em;height:1.15em;flex:none}.pu-btn--sm{--_h:var(--control-h-sm);--_px:12px;--_fs:var(--text-sm);border-radius:var(--radius-sm)}.pu-btn--lg{--_h:var(--control-h-lg);--_px:22px;--_fs:var(--text-base)}.pu-btn--block{display:flex;width:100%}.pu-btn--primary{background:var(--color-primary,#0A63D6);color:var(--color-on-primary)}.pu-btn--primary:hover:not(:disabled){background:var(--color-primary-hover,#0A4FA8)}.pu-btn--primary:active:not(:disabled){background:var(--color-primary-active,#0C417F)}.pu-btn--gradient{background:var(--gradient-cta,linear-gradient(120deg,#0A63D6,#0E25F7,#8E12D7));color:#fff;box-shadow:var(--shadow-sm)}.pu-btn--gradient:hover:not(:disabled){box-shadow:var(--shadow-glow);filter:brightness(1.06)}.pu-btn--secondary{background:var(--surface-card);color:var(--text-strong);border-color:var(--border-control);box-shadow:var(--shadow-xs)}.pu-btn--secondary:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-strong)}.pu-btn--ghost{background:transparent;color:var(--text-body)}.pu-btn--ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--text-strong)}.pu-btn--link{background:transparent;color:var(--text-link);height:auto;padding:0 2px;border-radius:var(--radius-xs)}.pu-btn--link:hover:not(:disabled){color:var(--color-primary-hover);text-decoration:underline;text-underline-offset:3px}.pu-btn--link:active:not(:disabled){transform:none}.pu-btn--danger{background:var(--color-danger,#D32424);color:#fff}.pu-btn--danger:hover:not(:disabled){background:var(--color-danger-hover,#A81C1C)}.pu-btn__spin{width:1em;height:1em;border:2px solid;border-right:2px solid transparent;border-radius:50%;animation:pu-spin .6s linear infinite}@keyframes pu-spin{to{transform:rotate(1turn)}}