.ui-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8rpx; border: none; padding: 0 32rpx; font-weight: 600; border-radius: 48rpx; line-height: 1; box-sizing: border-box; transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease; } .ui-btn::after { border: none; } .ui-btn:active:not(.is-disabled) { transform: scale(0.96); } .ui-btn--block { width: 100%; display: flex; } /* Sizes */ .ui-btn--sm { height: 64rpx; font-size: 26rpx; padding: 0 24rpx; } .ui-btn--md { height: 80rpx; font-size: 30rpx; } .ui-btn--lg { height: 96rpx; font-size: 34rpx; padding: 0 40rpx; } .ui-btn--xl { height: 108rpx; font-size: 36rpx; padding: 0 48rpx; } /* Variants */ .ui-btn--primary { background: linear-gradient(135deg, var(--primary), var(--primary-light)); color: #FFFFFF; box-shadow: 0 8rpx 24rpx rgba(var(--primary-rgb), 0.3); } .ui-btn--primary:active:not(.is-disabled) { box-shadow: 0 4rpx 12rpx rgba(var(--primary-rgb), 0.2); } .ui-btn--outline { background: transparent; color: var(--text-secondary); border: 2rpx solid rgba(var(--primary-rgb), 0.3); } .ui-btn--outline:active:not(.is-disabled) { background: var(--primary-bg); border-color: var(--primary); color: var(--primary); } .ui-btn--danger { background: #FFFFFF; color: #E53935; border: 2rpx solid rgba(229, 57, 53, 0.3); } .ui-btn--danger:active:not(.is-disabled) { background: rgba(229, 57, 53, 0.05); border-color: #E53935; } .ui-btn--ghost { /* Use rgba on the theme's RGB triplet instead of --primary-bg (~5% alpha) so the soft secondary reads as colored rather than near-white. */ background: rgba(var(--primary-rgb), 0.14); color: var(--primary); border: 2rpx solid rgba(var(--primary-rgb), 0.22); } .ui-btn--ghost:active:not(.is-disabled) { background: rgba(var(--primary-rgb), 0.22); border-color: rgba(var(--primary-rgb), 0.35); } .ui-btn.is-disabled { opacity: 0.5; pointer-events: none; } .ui-btn__icon { width: 1em; height: 1em; flex-shrink: 0; } .ui-btn__text { white-space: nowrap; }