.page { min-height: 100vh; background: #E8C3D4; display: flex; flex-direction: column; } /* 顶部导航栏已移除,改用全局 unified-header */ /* Tabs */ .tabs { background: #ffffff; display: flex; justify-content: center; gap: 80rpx; padding-bottom: 20rpx; border-bottom-left-radius: 32rpx; border-bottom-right-radius: 32rpx; position: relative; z-index: 10; } .tab-item { position: relative; font-size: 32rpx; font-weight: 700; color: #9CA3AF; padding: 10rpx 0; } .tab-item.active { color: #111827; font-weight: 900; font-size: 34rpx; } .tab-indicator { position: absolute; bottom: -10rpx; left: 50%; transform: translateX(-50%); width: 40rpx; height: 6rpx; background: #B06AB3; border-radius: 999rpx; } /* Content */ .content { flex: 1; } .tab-content { padding-bottom: 80rpx; } /* Special Offers Grid */ .special-offers { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24rpx; margin-bottom: 40rpx; padding: 0 24rpx; } .offer-card { width: 100%; height: 412rpx; border-radius: 32rpx; padding: 32rpx; box-sizing: border-box; position: relative; color: #ffffff; display: flex; flex-direction: column; justify-content: space-between; box-shadow: 0 10rpx 15rpx -3rpx rgba(0,0,0,0.1); overflow: hidden; } .offer-tag { position: absolute; top: 0; right: 0; padding: 10rpx 24rpx; border-bottom-left-radius: 28rpx; font-size: 24rpx; font-weight: 900; letter-spacing: 0.5px; } .offer-body { position: relative; z-index: 2; margin-top: 10rpx; } .offer-price-row { display: flex; align-items: baseline; margin-bottom: 8rpx; } .offer-symbol { font-size: 32rpx; font-weight: 700; margin-right: 4rpx; } .offer-price { font-size: 72rpx; font-weight: 700; line-height: 1; letter-spacing: -2rpx; } .offer-oprice { font-size: 28rpx; text-decoration: line-through; opacity: 0.9; margin-left: 12rpx; font-weight: 700; } .offer-title { display: block; font-size: 40rpx; font-weight: 900; margin-top: 12rpx; line-height: 1.4; letter-spacing: -1rpx; } .offer-sub { display: block; font-size: 28rpx; font-weight: 700; opacity: 1; margin-top: 4rpx; letter-spacing: 0.5px; } .offer-btn { background: rgba(0,0,0,0.15); text-align: center; padding: 20rpx 0; border-radius: 999rpx; font-size: 32rpx; font-weight: 900; box-shadow: 0 2rpx 4rpx rgba(0,0,0,0.1); position: relative; z-index: 2; letter-spacing: 1.5px; } /* Decorative background icon simulation */ .offer-card::after { content: ''; position: absolute; bottom: -20rpx; right: -20rpx; width: 180rpx; height: 180rpx; background-repeat: no-repeat; background-size: contain; opacity: 0.12; transform: rotate(-15deg); pointer-events: none; } .offer-card.first::after { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 12 20 22 4 22 4 12'/%3E%3Crect x='2' y='7' width='20' height='5'/%3E%3Cline x1='12' y1='22' x2='12' y2='7'/%3E%3Cpath d='M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z'/%3E%3Cpath d='M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z'/%3E%3C/svg%3E"); } .offer-card.month::after { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/%3E%3C/svg%3E"); } .offer-card.year::after { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 4l3 12h14l3-12-6 7-4-7-4 7-6-7z'/%3E%3Cpath d='M19 16l1 3H4l1-3'/%3E%3C/svg%3E"); } .offer-card.svip::after { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 3h12l4 6-10 12L2 9z'/%3E%3Cpath d='M11 3l-4 6 5 11 5-11-4-6'/%3E%3Cpath d='M2 9h20'/%3E%3C/svg%3E"); } .offer-card.soulmate::after { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'/%3E%3C/svg%3E"); } /* Member Center */ .member-center { background: #ffffff; border-radius: 40rpx; padding: 32rpx; border: 2rpx solid #F3D1EA; } .section-head { display: flex; align-items: center; gap: 16rpx; margin-bottom: 32rpx; } .section-indicator { width: 8rpx; height: 32rpx; background: #B06AB3; border-radius: 999rpx; } .section-indicator.yellow { background: #FFD700; } .section-title { font-size: 36rpx; font-weight: 900; color: #111827; } .vip-only-tag { margin-left: 16rpx; background: #FFF9E6; color: #B8860B; font-size: 20rpx; font-weight: 800; padding: 4rpx 12rpx; border-radius: 999rpx; border: 2rpx solid rgba(255, 215, 0, 0.3); } .vip-list { display: flex; flex-direction: column; gap: 24rpx; } .vip-item { background: #FDF4F9; border-radius: 32rpx; padding: 32rpx; border: 4rpx solid transparent; position: relative; overflow: hidden; } .vip-tag-corner { position: absolute; top: 0; right: 0; background: #FFD700; color: #7C2D12; font-size: 20rpx; font-weight: 900; padding: 8rpx 24rpx; border-bottom-left-radius: 24rpx; } .vip-main { display: flex; align-items: center; gap: 24rpx; margin-bottom: 24rpx; } .vip-icon-box { width: 96rpx; height: 96rpx; border-radius: 24rpx; display: flex; align-items: center; justify-content: center; box-shadow: 0 8rpx 16rpx rgba(0,0,0,0.1); } .vip-info { flex: 1; } .vip-title { display: block; font-size: 34rpx; font-weight: 900; color: #111827; } .vip-desc { display: block; font-size: 24rpx; font-weight: 700; color: #6B7280; margin-top: 4rpx; } .vip-price-col { text-align: right; } .vip-price { display: block; font-size: 44rpx; font-weight: 900; } .vip-oprice { display: block; font-size: 24rpx; color: #9CA3AF; text-decoration: line-through; } .vip-benefits { margin-bottom: 24rpx; padding-left: 8rpx; display: flex; flex-direction: column; gap: 12rpx; } .benefit-row { display: flex; align-items: center; gap: 12rpx; } .benefit-text { font-size: 26rpx; color: #374151; font-weight: 600; } .vip-buy-btn { width: 100%; padding: 24rpx 0; border-radius: 24rpx; color: #ffffff; font-size: 30rpx; font-weight: 900; box-shadow: 0 8rpx 20rpx rgba(0,0,0,0.1); } /* Shop Section */ .shop-section { /* same as member center logic */ } .shop-grid { display: flex; flex-wrap: wrap; gap: 24rpx; } .shop-item { width: calc(33.33% - 16rpx); background: #ffffff; border-radius: 24rpx; overflow: hidden; box-shadow: 0 4rpx 12rpx rgba(0,0,0,0.05); } .shop-img-box { height: 180rpx; background: #F9FAFB; position: relative; } .shop-img { width: 100%; height: 100%; } .exchange-badge { position: absolute; top: 8rpx; right: 8rpx; background: rgba(0,0,0,0.4); backdrop-filter: blur(8rpx); color: #ffffff; font-size: 18rpx; padding: 4rpx 12rpx; border-radius: 999rpx; font-weight: 700; } .shop-info { padding: 16rpx; } .shop-name { display: block; font-size: 24rpx; font-weight: 800; color: #111827; margin-bottom: 8rpx; } .shop-cost-row { display: flex; align-items: center; gap: 6rpx; } .shop-cost { font-size: 24rpx; font-weight: 900; color: #B06AB3; } /* Modal */ .modal { position: fixed; inset: 0; z-index: 100; display: flex; align-items: center; justify-content: center; } .mask { position: absolute; inset: 0; background: rgba(0,0,0,0.6); backdrop-filter: blur(8rpx); } .sheet { position: relative; width: 80%; max-width: 600rpx; background: #ffffff; border-radius: 48rpx; padding: 40rpx; animation: popUp 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); } @keyframes popUp { from { transform: scale(0.9); opacity: 0; } to { transform: scale(1); opacity: 1; } } .sheet-head { text-align: center; margin-bottom: 40rpx; } .sheet-title { display: block; font-size: 36rpx; font-weight: 900; color: #111827; } .sheet-sub { display: block; font-size: 24rpx; color: #6B7280; margin-top: 8rpx; } .sheet-card { background: #F9FAFB; border-radius: 32rpx; padding: 32rpx; display: flex; align-items: center; gap: 24rpx; margin-bottom: 40rpx; } .sheet-icon-box { width: 96rpx; height: 96rpx; background: #ffffff; border-radius: 24rpx; display: flex; align-items: center; justify-content: center; box-shadow: 0 4rpx 12rpx rgba(0,0,0,0.05); } .sheet-info { flex: 1; } .sheet-name { display: block; font-size: 32rpx; font-weight: 900; color: #111827; } .sheet-desc { font-size: 24rpx; color: #6B7280; margin-top: 4rpx; } .sheet-price-box { text-align: right; } .sheet-price-val { font-size: 40rpx; font-weight: 900; color: #B06AB3; } .sheet-price-unit { font-size: 20rpx; color: #B06AB3; margin-left: 4rpx; } .sheet-btn { width: 100%; padding: 28rpx 0; background: #B06AB3; color: #ffffff; border-radius: 24rpx; font-size: 32rpx; font-weight: 900; box-shadow: 0 12rpx 24rpx rgba(176, 106, 179, 0.3); }