/**app.wxss**/ page { background: #f8f8f8; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, Segoe UI, Arial, Roboto, 'PingFang SC', 'miui', 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif; } .container { min-height: 100vh; box-sizing: border-box; } .flex { display: flex; } .flex-col { display: flex; flex-direction: column; } .justify-between { justify-content: space-between; } .justify-center { justify-content: center; } .align-center { align-items: center; } .text-center { text-align: center; } .text-right { text-align: right; } .text-overflow { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .multi-text-overflow { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; } .gray { color: #999; } .red { color: #ff4d4f; } .bg-white { background: #fff; } .font-bold { font-weight: bold; } .full-width { width: 100%; } .full-height { height: 100%; } .position-relative { position: relative; } .position-absolute { position: absolute; } .position-fixed { position: fixed; } .border-box { box-sizing: border-box; } .border-none { border: none; } .border-radius { border-radius: 8rpx; } .border-radius-circle { border-radius: 50%; } .shadow { box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.1); } .transition { transition: all 0.3s ease; } .hover-opacity { opacity: 1; transition: opacity 0.3s ease; } .hover-opacity:active { opacity: 0.7; } .hover-scale { transform: scale(1); transition: transform 0.3s ease; } .hover-scale:active { transform: scale(0.98); } .safe-bottom { padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); } .loading { display: flex; align-items: center; justify-content: center; padding: 30rpx; } .loading-text { color: #999; font-size: 24rpx; margin-left: 10rpx; } .empty { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 60rpx 30rpx; } .empty-icon { width: 200rpx; height: 200rpx; margin-bottom: 20rpx; } .empty-text { color: #999; font-size: 28rpx; } .btn { display: flex; align-items: center; justify-content: center; padding: 0 30rpx; font-size: 28rpx; border-radius: 8rpx; border: none; background: none; } .btn::after { display: none; } .btn-primary { background: #ff4d4f; color: #fff; } .btn-default { background: #f5f5f5; color: #333; } .btn-plain { border: 1rpx solid #ddd; color: #333; } .btn-large { width: 100%; height: 88rpx; } .btn-medium { height: 72rpx; } .btn-small { height: 56rpx; font-size: 24rpx; } .btn-mini { height: 48rpx; font-size: 24rpx; padding: 0 20rpx; } .btn.disabled { opacity: 0.5; pointer-events: none; } .mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); z-index: 100; } .popup { position: fixed; z-index: 101; background: #fff; transition: all 0.3s ease; } .popup-bottom { left: 0; right: 0; bottom: 0; transform: translateY(100%); border-radius: 24rpx 24rpx 0 0; } .popup-bottom.show { transform: translateY(0); } .popup-center { top: 50%; left: 50%; transform: translate(-50%, -50%) scale(0.8); opacity: 0; border-radius: 12rpx; } .popup-center.show { transform: translate(-50%, -50%) scale(1); opacity: 1; } .divider { width: 100%; height: 1rpx; background: #eee; margin: 20rpx 0; } .badge { position: absolute; background: #ff4d4f; color: #fff; font-size: 20rpx; padding: 0 10rpx; height: 32rpx; min-width: 32rpx; line-height: 32rpx; text-align: center; border-radius: 16rpx; transform: translate(50%, -50%); top: 0; right: 0; } .tag { display: inline-flex; align-items: center; padding: 0 16rpx; height: 40rpx; font-size: 20rpx; border-radius: 4rpx; } .tag-primary { background: #fff1f0; color: #ff4d4f; } .tag-success { background: #f6ffed; color: #52c41a; } .tag-warning { background: #fffbe6; color: #faad14; } .tag-info { background: #e6f7ff; color: #1890ff; } .avatar { width: 80rpx; height: 80rpx; border-radius: 50%; background: #eee; } .avatar-large { width: 120rpx; height: 120rpx; } .avatar-small { width: 60rpx; height: 60rpx; } .price { font-size: 32rpx; color: #ff4d4f; font-weight: 500; } .price-symbol { font-size: 24rpx; margin-right: 2rpx; } .price-decimal { font-size: 24rpx; margin-left: 2rpx; } .price-large { font-size: 48rpx; } .price-large .price-symbol { font-size: 32rpx; } .price-large .price-decimal { font-size: 32rpx; } .price-small { font-size: 28rpx; } .price-small .price-symbol { font-size: 20rpx; } .price-small .price-decimal { font-size: 20rpx; } .card { background: #fff; border-radius: 12rpx; padding: 20rpx; margin-bottom: 20rpx; } .list { background: #fff; } .list-item { display: flex; align-items: center; padding: 30rpx; border-bottom: 1rpx solid #eee; } .list-item:last-child { border-bottom: none; } .list-item-content { flex: 1; } .list-item-title { font-size: 28rpx; color: #333; margin-bottom: 8rpx; } .list-item-desc { font-size: 24rpx; color: #999; } .list-item-extra { margin-left: 20rpx; } .grid { display: flex; flex-wrap: wrap; } .grid-item { width: 33.33%; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 20rpx; box-sizing: border-box; } .grid-item-icon { width: 80rpx; height: 80rpx; margin-bottom: 10rpx; } .grid-item-text { font-size: 24rpx; color: #666; } .form-item { display: flex; align-items: center; padding: 30rpx; background: #fff; border-bottom: 1rpx solid #eee; } .form-label { width: 200rpx; font-size: 28rpx; color: #333; } .form-input { flex: 1; font-size: 28rpx; } .form-input-placeholder { color: #999; } .form-extra { margin-left: 20rpx; } .tabs { display: flex; background: #fff; border-bottom: 1rpx solid #eee; } .tab { flex: 1; display: flex; align-items: center; justify-content: center; height: 88rpx; font-size: 28rpx; color: #666; position: relative; } .tab.active { color: #333; font-weight: 500; } .tab.active::after { content: ''; position: absolute; left: 50%; bottom: 0; width: 40rpx; height: 4rpx; background: #ff4d4f; transform: translateX(-50%); } .steps { display: flex; align-items: center; padding: 30rpx; background: #fff; } .step { flex: 1; display: flex; flex-direction: column; align-items: center; position: relative; } .step::before, .step::after { content: ''; position: absolute; top: 40rpx; width: 50%; height: 2rpx; background: #ddd; } .step::before { left: 0; } .step::after { right: 0; } .step:first-child::before, .step:last-child::after { display: none; } .step-icon { width: 80rpx; height: 80rpx; border-radius: 50%; background: #ddd; display: flex; align-items: center; justify-content: center; margin-bottom: 10rpx; position: relative; z-index: 1; } .step.active .step-icon { background: #ff4d4f; color: #fff; } .step-text { font-size: 24rpx; color: #999; } .step.active .step-text { color: #333; }