/* 频道详情页样式 */ .detail-page { min-height: 100vh; background: #FCFCFC; } /* 沉浸式头部 */ .hero { width: 100%; position: relative; overflow: hidden; } .back-btn { position: absolute; left: 32rpx; width: 72rpx; height: 72rpx; border-radius: 50%; background: rgba(0, 0, 0, 0.1); backdrop-filter: blur(10px); display: flex; align-items: center; justify-content: center; z-index: 10; } .back-arrow { font-size: 48rpx; color: #FFF; font-weight: 300; margin-top: -4rpx; } .hero-content { display: flex; flex-direction: column; align-items: center; padding-bottom: 100rpx; position: relative; z-index: 2; } .hero-icon { font-size: 120rpx; margin-bottom: 24rpx; text-shadow: 0 8rpx 16rpx rgba(0, 0, 0, 0.2); } .hero-name { font-size: 52rpx; font-weight: 800; color: #FFF; letter-spacing: -2rpx; margin-bottom: 12rpx; text-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.15); } .hero-tag { font-size: 26rpx; font-weight: 500; color: rgba(255, 255, 255, 0.8); margin-bottom: 40rpx; } .hero-sub-btn { padding: 16rpx 56rpx; border-radius: 999rpx; font-size: 26rpx; font-weight: 700; background: #FFF; color: #333; border: none; box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.15); z-index: 10; } .hero-sub-btn::after { border: none; } .hero-sub-btn:active { transform: scale(0.97); } .hero-sub-btn.subscribed { background: rgba(255, 255, 255, 0.2); backdrop-filter: blur(10px); color: #FFF; border: 2rpx solid rgba(255, 255, 255, 0.3); box-shadow: none; } .hero-expired { display: block; margin-top: 12rpx; font-size: 20rpx; color: rgba(255, 255, 255, 0.7); letter-spacing: 0.5rpx; } /* 到期日 + 续订按钮 同一行 */ .hero-sub-row { display: flex; align-items: center; gap: 16rpx; margin-top: 12rpx; } .renew-inline-btn { background: rgba(255, 255, 255, 0.2); border: 1rpx solid rgba(255, 255, 255, 0.5); border-radius: 32rpx; padding: 6rpx 20rpx; } .renew-inline-text { font-size: 20rpx; color: #FFF; font-weight: 600; } /* 徽标(免费 / VIP / 到期)*/ .hero-badge { display: inline-block; padding: 8rpx 24rpx; border-radius: 999rpx; font-size: 22rpx; font-weight: 700; margin-bottom: 16rpx; } .free-badge { background: rgba(46, 204, 113, 0.25); color: #FFF; border: 1rpx solid rgba(255,255,255,0.3); } .vip-badge { background: rgba(251, 191, 36, 0.3); color: #FFC; border: 1rpx solid rgba(255,255,255,0.3); } .expired-badge { background: rgba(239, 68, 68, 0.3); color: #FFF; border: 1rpx solid rgba(255,255,255,0.3); } /* 按钮变体 */ .hero-sub-btn.free-btn { background: #2ECC71; color: #FFF; box-shadow: 0 8rpx 24rpx rgba(46,204,113,0.3); } .hero-sub-btn.vip-btn { background: linear-gradient(135deg, #FBBF24, #D97706); color: #1F2937; box-shadow: 0 8rpx 24rpx rgba(251,191,36,0.35); } .hero-sub-btn.renew-btn { background: linear-gradient(135deg, #FF9D42, #FF7832); color: #FFF; box-shadow: 0 8rpx 24rpx rgba(255,120,50,0.35); } /* 波浪 */ .hero-wave { position: absolute; bottom: -4rpx; left: 0; right: 0; height: 64rpx; background: #FCFCFC; border-radius: 100% 100% 0 0; } /* 内容区 */ .content-area { padding: 0 32rpx; position: relative; z-index: 10; } /* 试听提示 */ .trial-notice { display: flex; align-items: flex-start; background: var(--color-primary-light); border: 1rpx solid rgba(255, 157, 66, 0.2); border-radius: 24rpx; padding: 24rpx; margin-bottom: 32rpx; } /* VIP提示(金色) */ .vip-notice { background: rgba(251, 191, 36, 0.08); border-color: rgba(251, 191, 36, 0.3); } /* 到期提示(红色) */ .expired-notice { background: rgba(239, 68, 68, 0.06); border-color: rgba(239, 68, 68, 0.2); } .notice-action { flex-shrink: 0; font-size: 24rpx; font-weight: 700; color: var(--color-primary); margin-left: 8rpx; align-self: center; } .notice-icon { font-size: 32rpx; margin-right: 16rpx; flex-shrink: 0; margin-top: 4rpx; } .notice-info { flex: 1; } .notice-title { display: block; font-size: 24rpx; font-weight: 700; color: #333; } .notice-desc { display: block; font-size: 22rpx; color: #999; margin-top: 6rpx; line-height: 1.5; } /* 列表头 */ .list-header { display: flex; align-items: center; padding: 16rpx 0 24rpx; position: sticky; top: 0; z-index: 20; background: rgba(252, 252, 252, 0.95); backdrop-filter: blur(10px); border-bottom: 1rpx solid rgba(0, 0, 0, 0.04); margin-bottom: 20rpx; } .list-title { font-size: 32rpx; font-weight: 700; color: #333; } .list-count { margin-left: 12rpx; font-size: 22rpx; color: #999; background: #F5F5F5; padding: 4rpx 16rpx; border-radius: 999rpx; font-weight: 500; } /* 列表项 */ .list-item { display: flex; align-items: center; padding: 24rpx; border-radius: 32rpx; border: 1rpx solid #F5F5F5; background: #FFF; box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.02); margin-bottom: 16rpx; transition: all 0.2s; } .list-item:active { box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06); } .list-item.playing { background: rgba(255, 157, 66, 0.06); border-color: rgba(255, 157, 66, 0.15); } .list-item.locked { opacity: 0.45; filter: grayscale(0.3); } .item-index { width: 72rpx; text-align: center; font-size: 36rpx; font-weight: 800; color: #DDD; font-style: italic; margin-right: 12rpx; flex-shrink: 0; } .item-info { flex: 1; padding-right: 16rpx; overflow: hidden; } .item-title { display: block; font-size: 28rpx; font-weight: 700; color: #333; line-height: 1.4; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .item-title.text-primary { color: var(--color-primary); } .item-meta { display: flex; align-items: center; margin-top: 8rpx; font-size: 22rpx; color: #999; font-weight: 500; } .meta-dot { margin: 0 8rpx; } .item-play-btn { width: 72rpx; height: 72rpx; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; background: #F5F5F5; border: 1rpx solid #EEE; transition: all 0.2s; } .item-play-btn.active { background: var(--color-primary); border-color: transparent; box-shadow: 0 4rpx 16rpx rgba(255, 157, 66, 0.3); } /* 锁定状态的圆圈 */ .item-play-btn.locked-btn { background: #F0F0F0; border-color: #E0E0E0; opacity: 0.6; } .lock-icon { font-size: 28rpx; } /* 纯文字播放三角 */ .play-tri { font-size: 22rpx; color: #888; padding-left: 4rpx; } .item-play-btn.active .play-tri { color: #FFF; } /* 迷你暂停两条竖线 */ .mini-pause { display: flex; gap: 6rpx; align-items: center; } .mp-bar { width: 5rpx; height: 26rpx; background: #FFF; border-radius: 3rpx; } /* 全锁定提示条(橙色调) */ .locked-notice { background: rgba(255, 157, 66, 0.06); border-color: rgba(255, 157, 66, 0.25); }