/* 活动详情页面样式 - 玫瑰紫版 v3.0 */ page { background: linear-gradient(180deg, #E8C3D4 0%, #F5E6ED 100%); } .page-container { min-height: 100vh; background: linear-gradient(180deg, #E8C3D4 0%, #F5E6ED 100%); padding-bottom: 180rpx; } /* 固定导航栏容器 */ .nav-container { position: fixed; top: 0; left: 0; right: 0; z-index: 999; background: rgba(248, 249, 252, 0.75); backdrop-filter: blur(20rpx) saturate(180%); -webkit-backdrop-filter: blur(20rpx) saturate(180%); } /* 状态栏 */ .status-bar { background: transparent; } /* 导航栏 */ .nav-bar { display: flex; align-items: center; justify-content: center; padding: 0 32rpx; background: transparent; position: relative; } .nav-back { position: absolute; left: 32rpx; top: 50%; transform: translateY(-50%); width: 80rpx; height: 80rpx; display: flex; align-items: center; justify-content: center; z-index: 10; } .back-icon { width: 48rpx; height: 48rpx; } .nav-title { font-size: 36rpx; font-weight: 700; color: #1A1A1A; line-height: 1; } .nav-share { position: absolute; right: 32rpx; top: 50%; transform: translateY(-50%); width: 80rpx; height: 80rpx; display: flex; align-items: center; justify-content: center; z-index: 10; background: rgba(255, 255, 255, 0.9); border-radius: 50%; } .share-icon { width: 48rpx; height: 48rpx; opacity: 0.9; } /* 内容滚动区域 */ .content-scroll { height: 100vh; box-sizing: border-box; } /* 活动封面 - 梦幻渐变占位 */ .cover-section { width: 100%; height: 560rpx; position: relative; overflow: hidden; background: linear-gradient(135deg, #F5E6ED 0%, #FAF5F8 100%); } .cover-image { width: 100%; height: 100%; } .status-badge { position: absolute; top: 32rpx; right: 32rpx; padding: 0 32rpx; height: 72rpx; display: flex; align-items: center; justify-content: center; border-radius: 100rpx; backdrop-filter: blur(10px); } .status-badge.upcoming { background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%); box-shadow: 0 4rpx 16rpx rgba(96, 165, 250, 0.35); } .status-badge.ongoing { background: linear-gradient(135deg, #4ADE80 0%, #16A34A 100%); box-shadow: 0 4rpx 16rpx rgba(74, 222, 128, 0.35); } .status-badge.ended { background: linear-gradient(135deg, #9CA3AF 0%, #6B7280 100%); box-shadow: 0 4rpx 16rpx rgba(156, 163, 175, 0.25); } .status-badge.full { background: linear-gradient(135deg, #F97316 0%, #EA580C 100%); box-shadow: 0 4rpx 16rpx rgba(249, 115, 22, 0.35); } .status-text { font-size: 32rpx; font-weight: 700; color: #fff; } /* 基本信息区域 - 毛玻璃卡片 */ .info-section { margin: 32rpx; padding: 48rpx; background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(16rpx) saturate(150%); border-radius: 48rpx; border: 2rpx solid rgba(145, 69, 132, 0.2); box-shadow: 0 4rpx 20rpx rgba(145, 69, 132, 0.12), 0 2rpx 8rpx rgba(145, 69, 132, 0.08); } .activity-title { font-size: 56rpx; font-weight: 700; color: #1A1A1A; line-height: 1.3; margin-bottom: 32rpx; } /* 价格信息 */ .price-info { display: flex; align-items: center; justify-content: space-between; padding: 32rpx 0; border-bottom: 2rpx solid rgba(145, 69, 132, 0.1); margin-bottom: 32rpx; } .price-main { display: flex; align-items: baseline; gap: 8rpx; } .price-label { font-size: 48rpx; font-weight: 700; color: #4ADE80; } .price-symbol { font-size: 40rpx; font-weight: 700; color: #F97316; } .price-value { font-size: 64rpx; font-weight: 700; color: #F97316; line-height: 1; } .price-unit { font-size: 36rpx; font-weight: 400; color: #F97316; } .participants-info { display: flex; align-items: center; gap: 12rpx; padding: 0 24rpx; height: 72rpx; background: rgba(145, 69, 132, 0.1); border-radius: 100rpx; } .participants-icon { width: 40rpx; height: 40rpx; } .participants-text { font-size: 32rpx; font-weight: 400; color: #914584; } /* 信息列表 */ .info-list { display: flex; flex-direction: column; gap: 32rpx; } .info-item { display: flex; align-items: flex-start; gap: 24rpx; } .info-icon { width: 48rpx; height: 48rpx; margin-top: 4rpx; flex-shrink: 0; } .info-content { flex: 1; display: flex; flex-direction: column; gap: 8rpx; } .info-label { font-size: 32rpx; font-weight: 400; color: #6A7282; } .info-value { font-size: 36rpx; font-weight: 400; color: #1A1A1A; line-height: 1.5; } .phone-link { color: #914584; text-decoration: underline; } /* 活动详情区域 - 毛玻璃卡片 */ .detail-section { margin: 32rpx; padding: 48rpx; background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(16rpx) saturate(150%); border-radius: 48rpx; border: 2rpx solid rgba(145, 69, 132, 0.2); box-shadow: 0 4rpx 20rpx rgba(145, 69, 132, 0.12), 0 2rpx 8rpx rgba(145, 69, 132, 0.08); } .section-title { font-size: 48rpx; font-weight: 700; color: #1A1A1A; margin-bottom: 32rpx; } .detail-content { margin-bottom: 32rpx; } .detail-text { font-size: 36rpx; font-weight: 400; color: #4A5565; line-height: 1.8; white-space: pre-wrap; } /* rich-text 样式 */ .detail-rich-text-wrapper { position: relative; } .detail-rich-text { font-size: 36rpx; line-height: 1.8; color: #4A5565; word-break: break-all; overflow: hidden; } .detail-images { display: flex; flex-direction: column; gap: 24rpx; overflow: hidden; } .detail-image { width: 100%; max-width: 100%; border-radius: 24rpx; display: block; } /* 参与者区域 - 毛玻璃卡片 */ .participants-section { margin: 32rpx; padding: 48rpx; background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(16rpx) saturate(150%); border-radius: 48rpx; border: 2rpx solid rgba(145, 69, 132, 0.2); box-shadow: 0 4rpx 20rpx rgba(145, 69, 132, 0.12), 0 2rpx 8rpx rgba(145, 69, 132, 0.08); } .section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 32rpx; } .view-all { display: flex; align-items: center; gap: 8rpx; } .view-all-text { font-size: 32rpx; font-weight: 400; color: #914584; } .view-all-icon { width: 32rpx; height: 32rpx; } .participants-list { display: flex; flex-direction: column; gap: 24rpx; } .participant-item { display: flex; align-items: center; gap: 24rpx; } .participant-avatar { width: 96rpx; height: 96rpx; border-radius: 50%; border: 2rpx solid rgba(145, 69, 132, 0.2); background: linear-gradient(135deg, #F5E6ED 0%, #FAF5F8 100%); } .participant-info { flex: 1; display: flex; flex-direction: column; gap: 8rpx; } .participant-name { font-size: 36rpx; font-weight: 500; color: #1A1A1A; } .participant-time { font-size: 28rpx; font-weight: 400; color: #6A7282; } /* 推荐活动区域 - 毛玻璃卡片 */ .recommend-section { margin: 32rpx; padding: 48rpx; background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(16rpx) saturate(150%); border-radius: 48rpx; border: 2rpx solid rgba(145, 69, 132, 0.2); box-shadow: 0 4rpx 20rpx rgba(145, 69, 132, 0.12), 0 2rpx 8rpx rgba(145, 69, 132, 0.08); } .recommend-list { display: flex; flex-wrap: wrap; gap: 20rpx; margin-top: 24rpx; } .recommend-item { width: calc((100% - 20rpx) / 2); background: rgba(245, 230, 237, 0.6); backdrop-filter: blur(8rpx); border-radius: 24rpx; overflow: hidden; border: 2rpx solid rgba(145, 69, 132, 0.15); box-sizing: border-box; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); cursor: pointer; } .recommend-item:active { transform: translateY(-2rpx) scale(0.98); box-shadow: 0 2rpx 12rpx rgba(145, 69, 132, 0.15); } .recommend-image { width: 100%; height: 180rpx; background: linear-gradient(135deg, #F5E6ED 0%, #FAF5F8 100%); display: block; } .recommend-info { padding: 16rpx; display: flex; flex-direction: column; gap: 8rpx; background: rgba(255, 255, 255, 0.9); } .recommend-title { font-size: 26rpx; font-weight: 500; color: #1A1A1A; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.4; min-height: 72rpx; word-break: break-all; } .recommend-date { font-size: 22rpx; font-weight: 400; color: #6A7282; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* 底部占位 */ .bottom-placeholder { height: 200rpx; } /* 底部操作栏 */ .bottom-bar { position: fixed; bottom: 0; left: 0; right: 0; height: 198rpx; background: #fff; display: flex; align-items: center; padding: 0 32rpx; padding-bottom: env(safe-area-inset-bottom); box-shadow: 0 -8rpx 24rpx rgba(0, 0, 0, 0.04); z-index: 100; box-sizing: border-box; } .bar-left { display: flex; align-items: center; gap: 12rpx; } .action-btn { display: flex; flex-direction: column; align-items: center; justify-content: center; background: transparent; border: none; padding: 0; width: 80rpx; } .share-btn::after { border: none; } .action-icon { width: 48rpx; height: 48rpx; } .action-text { font-size: 22rpx; font-weight: 400; color: #64748b; margin-top: 4rpx; } .bar-right { flex: 1; margin-left: 0rpx; } .signup-btn { width: 100%; height: 96rpx; display: flex; align-items: center; justify-content: center; border-radius: 100rpx; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); cursor: pointer; } .signup-btn:active { transform: scale(0.96); } .signup-btn.upcoming { background: linear-gradient(135deg, #914584 0%, #7A3A6F 100%); box-shadow: 0 6rpx 24rpx rgba(145, 69, 132, 0.4), 0 3rpx 12rpx rgba(145, 69, 132, 0.3); } .signup-btn.upcoming:active { box-shadow: 0 4rpx 16rpx rgba(145, 69, 132, 0.45); } .signup-btn.ongoing { background: linear-gradient(135deg, #4ADE80 0%, #16A34A 100%); box-shadow: 0 6rpx 24rpx rgba(74, 222, 128, 0.35); } .signup-btn.ongoing:active { box-shadow: 0 4rpx 16rpx rgba(74, 222, 128, 0.4); } .signup-btn.ended { background: linear-gradient(135deg, #9CA3AF 0%, #6B7280 100%); box-shadow: 0 4rpx 16rpx rgba(156, 163, 175, 0.25); } .signup-btn.full { background: linear-gradient(135deg, #F97316 0%, #EA580C 100%); box-shadow: 0 6rpx 24rpx rgba(249, 115, 22, 0.35); } .signup-btn.full:active { box-shadow: 0 4rpx 16rpx rgba(249, 115, 22, 0.4); } .signup-text { font-size: 32rpx; font-weight: 700; color: #fff; white-space: nowrap; } /* 参与者列表弹窗 */ .participants-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(26, 26, 26, 0.5); z-index: 1000; display: flex; align-items: flex-end; visibility: hidden; transition: all 0.3s ease; } .participants-modal.show { visibility: visible; } .participants-modal .modal-content { width: 100%; background: #fff; border-radius: 32rpx 32rpx 0 0; padding: 40rpx 32rpx; transform: translateY(100%); transition: all 0.3s ease; } .participants-modal.show .modal-content { transform: translateY(0); } /* 二维码引导弹窗 */ .qrcode-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 10000; display: flex; align-items: center; justify-content: center; visibility: hidden; opacity: 0; transition: all 0.3s ease; } .qrcode-modal.show { visibility: visible; opacity: 1; } .qrcode-modal .modal-mask { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(4rpx); } .qrcode-modal .modal-content { position: relative; width: 600rpx; background: #FFFFFF; border-radius: 48rpx; padding: 60rpx 40rpx; display: flex; flex-direction: column; align-items: center; z-index: 1; transform: scale(0.8); transition: all 0.3s ease; } .qrcode-modal.show .modal-content { transform: scale(1); } .qrcode-modal .close-btn { position: absolute; top: 30rpx; right: 30rpx; width: 60rpx; height: 60rpx; display: flex; align-items: center; justify-content: center; } .qrcode-modal .close-icon { width: 32rpx; height: 32rpx; } .qrcode-modal .modal-title { font-size: 40rpx; font-weight: bold; color: #333; margin-bottom: 12rpx; } .qrcode-modal .modal-subtitle { font-size: 28rpx; color: #666; margin-bottom: 40rpx; } .qrcode-modal .qrcode-container { width: 400rpx; height: 400rpx; background: #f9f9f9; border: 2rpx solid #eee; border-radius: 24rpx; display: flex; align-items: center; justify-content: center; margin-bottom: 24rpx; overflow: hidden; } .qrcode-modal .qrcode-image { width: 360rpx; height: 360rpx; } .qrcode-modal .modal-tips { font-size: 24rpx; color: #999; margin-bottom: 40rpx; } .qrcode-modal .save-btn { width: 100%; height: 88rpx; background: #07C160; color: #fff; border-radius: 44rpx; display: flex; align-items: center; justify-content: center; font-size: 32rpx; font-weight: bold; } .qrcode-modal .save-btn:active { opacity: 0.8; } .modal-header { display: flex; align-items: center; justify-content: space-between; padding: 48rpx; border-bottom: 2rpx solid rgba(145, 69, 132, 0.1); } .modal-title { font-size: 48rpx; font-weight: 700; color: #1A1A1A; } .modal-close { width: 80rpx; height: 80rpx; display: flex; align-items: center; justify-content: center; } .close-icon { width: 48rpx; height: 48rpx; } .modal-scroll { flex: 1; overflow-y: auto; } .modal-participants-list { padding: 32rpx 48rpx; display: flex; flex-direction: column; gap: 32rpx; } .modal-participant-item { display: flex; align-items: center; gap: 24rpx; } .modal-participant-avatar { width: 112rpx; height: 112rpx; border-radius: 50%; border: 2rpx solid rgba(145, 69, 132, 0.2); background: linear-gradient(135deg, #F5E6ED 0%, #FAF5F8 100%); } .modal-participant-info { flex: 1; display: flex; flex-direction: column; gap: 12rpx; } .modal-participant-name { font-size: 40rpx; font-weight: 500; color: #1A1A1A; } .modal-participant-time { font-size: 32rpx; font-weight: 400; color: #6A7282; }