@import '../../styles/xym-recharge-shared.wxss'; .vip-page { min-height: 100vh; background: #fff9f0; padding-bottom: calc(320rpx + env(safe-area-inset-bottom)); position: relative; } .page-bg { position: absolute; top: 0; left: 0; width: 100%; z-index: 0; } .page-bg-fallback { position: absolute; top: 0; left: 0; right: 0; height: 360rpx; background: linear-gradient(180deg, #ffe082 0%, #fff9f0 100%); z-index: 0; } .page-body { position: relative; z-index: 1; padding: 24rpx 30rpx 0; } .user-row { display: flex; align-items: center; margin-bottom: 24rpx; } .user-avatar { width: 88rpx; height: 88rpx; border-radius: 50%; margin-right: 20rpx; background: #eee; } .user-info { flex: 1; min-width: 0; } .user-name { display: block; font-size: 32rpx; font-weight: 700; color: #222; } .user-id { display: block; margin-top: 6rpx; font-size: 24rpx; color: #999; } .member-badge { padding: 8rpx 20rpx; border-radius: 999rpx; background: rgba(0, 0, 0, 0.06); font-size: 22rpx; color: #666; flex-shrink: 0; } .vip-swiper { height: 280rpx; margin-bottom: 28rpx; } .vip-card { position: relative; overflow: hidden; height: 260rpx; margin: 0 8rpx; border-radius: 24rpx; transform: scale(0.96); transition: transform 0.3s; } .vip-card--active { transform: scale(1); } .vip-card-bg, .vip-card-bg-img { position: absolute; inset: 0; border-radius: 24rpx; } .vip-card-bg { background: linear-gradient(135deg, #fae04d 0%, #ffb74d 55%, #ff8a65 100%); } .vip-card-bg-img { width: 100%; height: 100%; } .vip-card-inner { position: relative; z-index: 1; display: flex; justify-content: space-between; align-items: stretch; padding: 28rpx; height: 100%; box-sizing: border-box; } .vip-card-left { flex: 1; min-width: 0; } .vip-title-row { display: flex; align-items: center; gap: 12rpx; } .vip-name { font-size: 32rpx; font-weight: 800; color: #222; } .vip-status { padding: 4rpx 12rpx; border-radius: 8rpx; background: rgba(255, 255, 255, 0.55); font-size: 20rpx; color: #666; } .vip-price-row { display: flex; align-items: baseline; margin: 16rpx 0 8rpx; } .vip-currency { font-size: 32rpx; font-weight: 700; margin-right: 4rpx; } .vip-price { font-size: 56rpx; font-weight: 800; line-height: 1; } .vip-validity { font-size: 24rpx; color: rgba(0, 0, 0, 0.55); } .vip-card-right { width: 160rpx; display: flex; align-items: center; justify-content: center; } .icon-clip { overflow: hidden; flex-shrink: 0; background: rgba(255, 255, 255, 0.6); } .icon-clip-img { width: 100%; height: 100%; display: block; } .icon-clip-vip { width: 140rpx; height: 140rpx; border-radius: 36rpx; } .vip-logo-fallback { width: 120rpx; height: 120rpx; border-radius: 32rpx; background: rgba(255, 255, 255, 0.85); display: flex; align-items: center; justify-content: center; border: 2rpx solid rgba(255, 255, 255, 0.9); } .vip-logo-text { font-size: 36rpx; font-weight: 800; color: #e6a23c; } .vip-shimmer { position: absolute; inset: 0; background: linear-gradient(105deg, transparent 40%, rgba(255, 255, 255, 0.4) 50%, transparent 60%); animation: card-shimmer 3s infinite; pointer-events: none; z-index: 2; } .section-head { display: flex; align-items: center; margin: 24rpx 0 16rpx; } .section-bar { width: 8rpx; height: 32rpx; border-radius: 4rpx; background: linear-gradient(180deg, #f5c242, #e6a23c); margin-right: 12rpx; } .section-title { font-size: 30rpx; font-weight: 700; color: #333; } .rules-scroll { width: 100%; white-space: nowrap; margin-bottom: 8rpx; } .rules-row { display: inline-flex; gap: 16rpx; padding-bottom: 8rpx; } .rule-card { display: inline-flex; flex-direction: column; width: 200rpx; min-height: 160rpx; padding: 20rpx 16rpx; border-radius: 16rpx; background: #fff; border: 2rpx solid #f5e6c8; box-sizing: border-box; white-space: normal; vertical-align: top; } .rule-num { width: 40rpx; height: 40rpx; border-radius: 50%; background: linear-gradient(135deg, #fae04d, #ffb74d); display: flex; align-items: center; justify-content: center; font-size: 22rpx; font-weight: 700; color: #492f00; margin-bottom: 12rpx; } .rule-text { font-size: 22rpx; color: #666; line-height: 1.5; } .benefits-row { display: flex; gap: 16rpx; margin-bottom: 8rpx; } .benefit-card { flex: 1; background: #fff; border-radius: 16rpx; padding: 20rpx 12rpx; box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.04); text-align: center; } .benefit-icon-img, .icon-clip-benefit { width: 56rpx; height: 56rpx; margin: 0 auto 8rpx; border-radius: 20rpx; } .icon-clip-advantage, .advantage-icon-img { width: 48rpx; height: 48rpx; margin-bottom: 8rpx; border-radius: 18rpx; } .benefit-title { display: block; font-size: 26rpx; font-weight: 700; color: #e65100; margin-bottom: 8rpx; } .benefit-desc { display: block; font-size: 22rpx; color: #888; line-height: 1.45; } .advantage-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20rpx 16rpx; margin-bottom: 16rpx; } .advantage-item { background: #fff; border-radius: 16rpx; padding: 20rpx; box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.04); } .advantage-title { display: block; font-size: 26rpx; font-weight: 700; color: #e6a23c; margin-bottom: 6rpx; } .advantage-desc { display: block; font-size: 22rpx; color: #999; line-height: 1.4; } .jifen-section { margin-top: 8rpx; } .jifen-card { background: #fff; border-radius: 20rpx; padding: 28rpx; display: flex; align-items: center; justify-content: space-between; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04); } .jifen-label { display: block; font-size: 24rpx; color: #999; } .jifen-value { display: block; font-size: 48rpx; font-weight: 800; color: #492f00; margin: 8rpx 0; } .jifen-tip { font-size: 22rpx; color: #e65100; } .jifen-tip--ok { color: #67c23a; } .jifen-btn { padding: 16rpx 32rpx; border-radius: 999rpx; background: linear-gradient(90deg, #fae04d, #ffc0a3); font-size: 28rpx; font-weight: 700; color: #492f00; } .jifen-btn--disabled { opacity: 0.5; } .owned-section { margin-top: 24rpx; } .owned-item { background: #fff; border-radius: 16rpx; padding: 20rpx 24rpx; margin-bottom: 12rpx; display: flex; justify-content: space-between; align-items: center; } .owned-name { font-size: 28rpx; font-weight: 600; color: #333; } .owned-expire { font-size: 24rpx; color: #999; } .footer-bar { position: fixed; left: 0; right: 0; bottom: 0; padding: 16rpx 30rpx calc(16rpx + env(safe-area-inset-bottom)); background: rgba(255, 249, 240, 0.98); box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.06); z-index: 10; } .deposit-banner { display: flex; justify-content: space-between; align-items: center; padding: 14rpx 20rpx; margin-bottom: 12rpx; border-radius: 12rpx; background: linear-gradient(90deg, #fff3e0, #ffe0b2); } .deposit-banner-text { font-size: 24rpx; color: #666; } .deposit-banner-link { font-size: 24rpx; color: #e6a23c; font-weight: 600; } .agree-row { display: flex; align-items: center; flex-wrap: wrap; margin-bottom: 12rpx; font-size: 24rpx; color: #666; } .agree-check { width: 32rpx; height: 32rpx; border-radius: 50%; border: 2rpx solid #ccc; margin-right: 10rpx; display: flex; align-items: center; justify-content: center; font-size: 20rpx; color: #fff; } .agree-check--on { background: #f5a623; border-color: #f5a623; } .agree-link { color: #e6a23c; } .buy-row { display: flex; gap: 16rpx; } .buy-btn { position: relative; overflow: hidden; height: 88rpx; border-radius: 44rpx; display: flex; align-items: center; justify-content: center; font-size: 26rpx; font-weight: 700; padding: 0 16rpx; box-sizing: border-box; } .buy-btn--outline { flex: 0 0 38%; background: #fff; border: 2rpx solid #f5c242; color: #333; } .buy-btn--primary { flex: 1; background: linear-gradient(90deg, #fae04d, #ffc0a3); color: #492f00; box-shadow: 0 8rpx 20rpx rgba(245, 166, 35, 0.35); } .buy-btn--full { flex: 1; width: 100%; } .buy-btn-shimmer { position: absolute; inset: 0; background: linear-gradient(105deg, transparent 40%, rgba(255, 255, 255, 0.5) 50%, transparent 60%); animation: btn-shimmer 2.5s infinite; pointer-events: none; } @keyframes card-shimmer { 0% { transform: translateX(-120%); } 100% { transform: translateX(120%); } } @keyframes btn-shimmer { 0% { transform: translateX(-120%); } 100% { transform: translateX(120%); } }