/* 人物详情页样式 */ .page-container { min-height: 100vh; background: #fff; position: relative; overflow-x: hidden; } /* 顶部大图区域 */ .hero-section { position: relative; width: 100%; height: 580rpx; } .hero-image { width: 100%; height: 100%; } .hero-overlay { position: absolute; top: 0; left: 0; right: 0; height: 200rpx; background: linear-gradient(to bottom, rgba(0,0,0,0.3), transparent); padding: 96rpx 32rpx 0; } .back-btn { width: 72rpx; height: 72rpx; background: rgba(255,255,255,0.25); border-radius: 50%; display: flex; align-items: center; justify-content: center; } .back-icon { width: 48rpx; height: 48rpx; filter: brightness(0) invert(1); } /* 内容卡片区域 */ .content-card { position: relative; margin-top: -60rpx; background: #fff; border-radius: 48rpx 48rpx 0 0; min-height: calc(100vh - 520rpx); padding: 36rpx 32rpx; box-shadow: 0 -10rpx 40rpx rgba(0,0,0,0.08); height: calc(100vh - 520rpx); width: 100%; box-sizing: border-box; overflow-x: hidden; } /* 基本信息 */ .profile-header { margin-bottom: 16rpx; } .profile-name { display: block; font-size: 48rpx; font-weight: 700; color: #101828; line-height: 1.3; margin-bottom: 4rpx; } .profile-job { display: block; font-size: 28rpx; font-weight: 500; color: #6a7282; } /* 标签 */ .profile-tags { display: flex; gap: 16rpx; margin-bottom: 24rpx; } .tag { background: #f3f4f6; border-radius: 24rpx; padding: 12rpx 24rpx; font-size: 26rpx; font-weight: 600; color: #364153; } /* 收听独白 */ .audio-section { display: flex; align-items: center; gap: 24rpx; background: #f9fafb; border: 2rpx solid #f3f4f6; border-radius: 24rpx; padding: 20rpx 24rpx; margin-bottom: 28rpx; transition: all 0.3s ease; } /* 播放中状态 */ .audio-section.playing { background: linear-gradient(135deg, #e8f5e9 0%, #f1f8e9 100%); border-color: #4caf50; box-shadow: 0 4rpx 12rpx rgba(76, 175, 80, 0.15); } .audio-btn { width: 80rpx; height: 80rpx; background: #fff; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 2rpx 6rpx rgba(0,0,0,0.08); flex-shrink: 0; transition: all 0.3s ease; } /* 播放中按钮样式 */ .audio-section.playing .audio-btn { background: linear-gradient(135deg, #4caf50 0%, #66bb6a 100%); box-shadow: 0 4rpx 12rpx rgba(76, 175, 80, 0.3); animation: pulse 1.5s ease-in-out infinite; } @keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } .audio-icon { width: 40rpx; height: 40rpx; opacity: 1; transition: all 0.3s ease; } /* 播放中图标样式 */ .audio-section.playing .audio-icon { filter: brightness(0) invert(1); animation: rotate 2s linear infinite; } @keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .audio-info { flex: 1; display: flex; flex-direction: column; gap: 6rpx; } .audio-label { font-size: 26rpx; font-weight: 600; color: #99a1af; transition: color 0.3s ease; } /* 播放中文字样式 */ .audio-section.playing .audio-label { color: #4caf50; font-weight: 700; } .audio-wave { display: flex; gap: 4rpx; height: 6rpx; } .wave-bar { flex: 1; height: 100%; background: #d1d5dc; border-radius: 100rpx; transition: all 0.3s ease; } /* 播放中波形条动画 */ .wave-bar.animating { background: #4caf50; animation: wave 1s ease-in-out infinite; } .wave-bar.animating:nth-child(2n) { animation-delay: 0.1s; } .wave-bar.animating:nth-child(3n) { animation-delay: 0.2s; } .wave-bar.animating:nth-child(4n) { animation-delay: 0.3s; } @keyframes wave { 0%, 100% { height: 6rpx; opacity: 0.5; } 50% { height: 12rpx; opacity: 1; } } .audio-duration { font-size: 26rpx; font-weight: 600; color: #99a1af; flex-shrink: 0; transition: color 0.3s ease; } /* 播放中时长样式 */ .audio-section.playing .audio-duration { color: #4caf50; } /* 通用区块 */ .section { margin-bottom: 24rpx; } .section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16rpx; } .section-title { display: block; font-size: 30rpx; font-weight: 700; color: #101828; margin-bottom: 12rpx; } .section-header .section-title { margin-bottom: 0; } .section-content { font-size: 28rpx; color: #4a5565; line-height: 1.5; } .view-all { font-size: 26rpx; font-weight: 600; color: #ff6b6b; } /* 兴趣爱好标签 */ .hobby-tags { display: flex; flex-wrap: wrap; gap: 12rpx; width: 100%; box-sizing: border-box; } .hobby-tag { background: #f9fafb; border: 2rpx solid #e5e7eb; border-radius: 24rpx; padding: 10rpx 24rpx; font-size: 26rpx; font-weight: 600; color: #4a5565; flex-shrink: 0; } .hobby-tag.highlight { background: #fff0f0; border-color: #ff6b6b; color: #ff6b6b; } /* 相册 */ .photo-grid { display: flex; gap: 16rpx; } .photo-item { flex: 1; height: 280rpx; border-radius: 24rpx; overflow: hidden; position: relative; } .photo-image { width: 100%; height: 100%; } .photo-overlay { position: absolute; inset: 0; background: rgba(0,0,0,0.2); display: flex; align-items: center; justify-content: center; } .photo-more { font-size: 32rpx; font-weight: 600; color: #fff; } /* 底部占位 */ .bottom-placeholder { height: 180rpx; } /* 底部操作按钮 */ .action-bar { position: fixed; bottom: 0; left: 0; right: 0; height: 220rpx; background: linear-gradient(to top, #fff 60%, transparent); display: flex; align-items: center; justify-content: center; gap: 80rpx; padding-bottom: env(safe-area-inset-bottom); } .action-btn { display: flex; align-items: center; justify-content: center; border-radius: 50%; box-shadow: 0 8rpx 24rpx rgba(0,0,0,0.12); transition: transform 0.2s ease; } .action-btn:active { transform: scale(0.95); } /* X按钮 - 不喜欢 */ .action-btn.dislike-btn { width: 140rpx; height: 140rpx; background: #fff; border: 3rpx solid #f3f4f6; } .action-btn.dislike-btn .action-btn-icon { width: 64rpx; height: 64rpx; opacity: 0.6; } /* 对话按钮 - 微信绿色系 */ .action-btn.chat-btn { width: 140rpx; height: 140rpx; background: #07C160; box-shadow: 0 0 0 6rpx rgba(7, 193, 96, 0.15), 0 12rpx 32rpx rgba(7, 193, 96, 0.35); } .action-btn.chat-btn .action-btn-icon { width: 64rpx; height: 64rpx; filter: brightness(0) invert(1); } /* ==================== 爱心弹窗样式 ==================== */ /* 弹窗遮罩 */ .heart-popup-mask { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.5); z-index: 1001; display: flex; align-items: center; justify-content: center; } /* 弹窗主体 */ .heart-popup { width: 620rpx; background: #F8F9FC; border-radius: 48rpx; padding: 0; position: relative; animation: heartPopupIn 0.3s ease-out; box-shadow: 0 50rpx 100rpx -24rpx rgba(0, 0, 0, 0.25); min-height: 720rpx; } @keyframes heartPopupIn { from { opacity: 0; transform: scale(0.85); } to { opacity: 1; transform: scale(1); } } /* 关闭按钮 */ .heart-popup-close { position: absolute; top: 32rpx; right: 32rpx; width: 56rpx; height: 56rpx; display: flex; justify-content: center; align-items: center; z-index: 10; } .heart-popup-close image { width: 32rpx; height: 32rpx; opacity: 0.7; } /* 弹窗头部 - 白色圆角区域 */ .heart-popup-header { background: #FFFFFF; border-radius: 0 0 60rpx 60rpx; padding: 64rpx 40rpx 56rpx; display: flex; flex-direction: column; align-items: center; box-shadow: 0 2rpx 4rpx -2rpx rgba(0, 0, 0, 0.1), 0 2rpx 6rpx 0 rgba(0, 0, 0, 0.1); position: relative; } .popup-avatar-wrap { width: 192rpx; height: 192rpx; border-radius: 50%; overflow: hidden; border: 4rpx solid #FFFFFF; box-shadow: 0 8rpx 12rpx -8rpx rgba(0, 0, 0, 0.1), 0 20rpx 30rpx -6rpx rgba(0, 0, 0, 0.1); margin-bottom: 40rpx; position: relative; } .popup-avatar { width: 100%; height: 100%; } /* 头像右下角徽章 */ .popup-avatar-badge { position: absolute; bottom: 0; right: 0; width: 56rpx; height: 56rpx; background: #FFFFFF; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 4rpx 8rpx -4rpx rgba(0, 0, 0, 0.1), 0 8rpx 12rpx -2rpx rgba(0, 0, 0, 0.1); } .popup-avatar-badge image { width: 32rpx; height: 32rpx; } .popup-character-name { font-size: 48rpx; font-weight: 900; color: #101828; text-align: center; line-height: 1.25; letter-spacing: -0.025em; } .popup-character-name .highlight { color: #914584; } /* 选项区域 */ .heart-popup-options { padding: 56rpx 40rpx 64rpx; display: flex; flex-direction: column; gap: 32rpx; } /* 选项卡片 */ .heart-option-card { background: #FFFFFF; border: 2rpx solid #F3F4F6; border-radius: 32rpx; padding: 0 32rpx; height: 150rpx; display: flex; align-items: center; justify-content: space-between; gap: 10rpx; box-shadow: 0 2rpx 4rpx -2rpx rgba(0, 0, 0, 0.1), 0 2rpx 6rpx 0 rgba(0, 0, 0, 0.1); transition: all 0.2s ease; } .heart-option-card:active { transform: scale(0.98); } /* 分享选项 - 粉色背景 */ .heart-option-card.share-option { background: #FFF0F5; border-color: #FCE7F3; } /* 选项左侧内容 */ .heart-option-left { display: flex; align-items: center; gap: 28rpx; flex: 1; } .heart-option-icon { width: 96rpx; height: 96rpx; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 0 2rpx 4rpx -2rpx rgba(0, 0, 0, 0.1), 0 2rpx 6rpx 0 rgba(0, 0, 0, 0.1); } /* 分享图标 - 粉色 */ .heart-option-icon.share-icon { background: #FFF0F5; } .heart-option-icon.share-icon image { width: 52rpx; height: 52rpx; } /* 爱心图标 - 红色 */ .heart-option-icon.heart-icon { background: #FFF0F5; } .heart-option-icon.heart-icon image { width: 52rpx; height: 52rpx; } .heart-option-info { display: flex; flex-direction: column; gap: 8rpx; flex: 1; min-width: 0; } .heart-option-title { font-size: 36rpx; font-weight: 900; line-height: 1.4; letter-spacing: -0.025em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* 分享选项标题 - 紫色 */ .share-option .heart-option-title { color: #914584; } /* 爱心选项标题 - 黑色 */ .heart-option .heart-option-title { color: #101828; } .heart-option-desc { font-size: 28rpx; font-weight: 700; line-height: 1.5; opacity: 0.8; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* 分享选项描述 - 紫色 */ .share-option .heart-option-desc { color: #914584; } /* 爱心选项描述 - 灰色 */ .heart-option .heart-option-desc { color: #6A7282; } /* 选项右侧按钮 */ .heart-option-btn { width: 174rpx; height: 100rpx; border-radius: 100rpx; display: flex; align-items: center; justify-content: center; font-size: 40rpx; font-weight: 900; letter-spacing: -0.025em; line-height: 1.5; flex-shrink: 0; box-shadow: 0 4rpx 8rpx -4rpx rgba(0, 0, 0, 0.1), 0 8rpx 12rpx -2rpx rgba(0, 0, 0, 0.1); } /* 分享按钮 - 紫色 */ .heart-option-btn.share-btn { background: #914584; color: #FFFFFF; } /* 兑换按钮 - 灰色 */ .heart-option-btn.exchange-btn { background: #F3F4F6; color: #4A5565; } /* 暂不需要按钮 */ .heart-popup-footer { padding: 0 40rpx 56rpx; } .heart-cancel-btn { width: 100%; height: 102rpx; background: transparent; border: none; display: flex; align-items: center; justify-content: center; font-size: 36rpx; font-weight: 700; color: #99A1AF; letter-spacing: 0.025em; line-height: 1.5; } .heart-cancel-btn::after { border: none; }