.feed-page { min-height: 100vh; background: #ffffff; display: flex; flex-direction: column; } /* 主导航栏:与胶囊按钮同高,右侧避让胶囊 */ .navbar { display: flex; align-items: center; padding-left: 28rpx; flex-shrink: 0; box-sizing: border-box; } /* 次级菜单栏:胶囊按钮下方,全宽 */ .subbar { display: flex; align-items: center; padding: 8rpx 28rpx 12rpx; gap: 16rpx; flex-shrink: 0; } .topbar-logo { font-size: 46rpx; font-weight: 800; letter-spacing: -0.5rpx; color: #2b2438; flex-shrink: 0; } .logo-accent { background: linear-gradient(120deg, #ff2d6e, #ff7a1a); -webkit-background-clip: text; background-clip: text; color: transparent; } .topbar-tabs { flex: 1; display: flex; gap: 8rpx; justify-content: center; } .feed-tab { font-size: 26rpx; font-weight: 700; color: #a59cb5; padding: 8rpx 20rpx; border-radius: 999rpx; transition: all 0.2s; } .feed-tab-active { color: #ff2d6e; background: rgba(255, 45, 110, 0.12); font-weight: 900; } .topbar-actions { display: flex; gap: 12rpx; flex-shrink: 0; } .topbar-btn { width: 64rpx; height: 64rpx; border-radius: 26rpx; background: var(--glass); backdrop-filter: blur(28rpx) saturate(170%); -webkit-backdrop-filter: blur(28rpx) saturate(170%); border: 1rpx solid var(--glass-edge); box-shadow: var(--shadow-soft); display: flex; align-items: center; justify-content: center; font-size: 30rpx; color: #6e6480; position: relative; } .has-badge::after { content: ''; position: absolute; top: 8rpx; right: 8rpx; width: 14rpx; height: 14rpx; border-radius: 50%; background: #ff2d6e; border: 2rpx solid #fff; } /* 故事圈 */ .stories-scroll { flex-shrink: 0; white-space: nowrap; padding: 16rpx 28rpx 24rpx; } .story { display: inline-flex; flex-direction: column; align-items: center; gap: 10rpx; margin-right: 24rpx; white-space: normal; } .story-ring { width: 116rpx; height: 116rpx; border-radius: 40rpx; padding: 6rpx; box-sizing: border-box; background: conic-gradient(from 130deg, #ff2d6e, #ff7a1a, #ffd400, #00d9a0, #1f9bff, #8b5cf6, #ff2d6e); box-shadow: 0 18rpx 36rpx rgba(120, 70, 150, 0.20); } .story-ring-seen { background: rgba(165, 156, 181, 0.35); } .story-ring-me { background: linear-gradient(135deg, #ff2d6e, #ff7a1a); } .story-inner { width: 100%; height: 100%; border-radius: 32rpx; display: flex; align-items: center; justify-content: center; border: 5rpx solid rgba(255, 255, 255, 0.92); } .story-emoji { font-size: 46rpx; line-height: 1; } .story-name { font-size: 21rpx; font-weight: 700; color: #6e6480; } /* 信息流 */ .feed-scroll { flex: 1; padding-top: 8rpx; } /* 骨架屏 */ .skeleton-wrap { padding-top: 8rpx; } .skeleton-card { margin: 0 28rpx 32rpx; background: var(--glass); backdrop-filter: blur(28rpx) saturate(170%); -webkit-backdrop-filter: blur(28rpx) saturate(170%); border: 1rpx solid var(--glass-edge); border-radius: 56rpx; overflow: hidden; padding-bottom: 20rpx; } .skeleton-header { display: flex; align-items: center; gap: 20rpx; padding: 24rpx; } .skeleton-avatar { width: 76rpx; height: 76rpx; border-radius: 28rpx; flex-shrink: 0; } .skeleton-meta { flex: 1; display: flex; flex-direction: column; gap: 12rpx; } .skeleton-line { height: 26rpx; border-radius: 8rpx; } .skeleton-img { width: 100%; height: 360rpx; } .w100 { width: 100%; } .w80 { width: 80%; } .w60 { width: 60%; } .w40 { width: 40%; } .skeleton { background: linear-gradient(90deg, #f0eef5 25%, #e8e4f0 50%, #f0eef5 75%); background-size: 200% 100%; animation: shine 1.4s infinite; } @keyframes shine { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* 加载更多 */ .load-more { display: flex; justify-content: center; gap: 12rpx; padding: 32rpx; } .load-dot { width: 16rpx; height: 16rpx; border-radius: 50%; background: #ff2d6e; animation: bounce 1.2s infinite; } .load-dot-2 { animation-delay: 0.2s; } .load-dot-3 { animation-delay: 0.4s; } @keyframes bounce { 0%, 80%, 100% { transform: scale(0.8); opacity: 0.4; } 40% { transform: scale(1); opacity: 1; } } /* 到底了 */ .end-tip { text-align: center; font-size: 24rpx; color: #a59cb5; padding: 32rpx; } /* 空态 */ .empty-feed { display: flex; flex-direction: column; align-items: center; padding: 120rpx 60rpx 40rpx; gap: 16rpx; } .empty-emoji { font-size: 80rpx; line-height: 1; } .empty-title { font-size: 34rpx; font-weight: 900; color: #2b2438; } .empty-desc { font-size: 26rpx; color: #a59cb5; text-align: center; line-height: 1.6; } .empty-btn { margin-top: 24rpx; padding: 22rpx 60rpx; font-size: 28rpx; font-weight: 800; }