.profile-page { min-height: 100vh; background: #ffffff; display: flex; flex-direction: column; } /* 主导航栏:与胶囊等高,右侧避让胶囊 */ .navbar { display: flex; align-items: center; justify-content: space-between; padding-left: 28rpx; flex-shrink: 0; box-sizing: border-box; } .navbar-title { font-size: 36rpx; font-weight: 800; color: #2b2438; } .settings-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: 28rpx; } .profile-scroll { flex: 1; } /* 用户信息区:玻璃英雄卡 + 漂浮渐变光斑 */ .profile-header { position: relative; margin: 8rpx 28rpx 20rpx; padding: 32rpx 28rpx 26rpx; overflow: hidden; border-radius: 56rpx; 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), inset 0 1rpx 0 rgba(255, 255, 255, 0.65); } .hero-blob { position: absolute; border-radius: 50%; filter: blur(70rpx); opacity: 0.5; pointer-events: none; } .hb1 { width: 260rpx; height: 260rpx; background: #ffd400; top: -100rpx; right: -60rpx; } .hb2 { width: 200rpx; height: 200rpx; background: #00d9a0; bottom: -80rpx; left: -40rpx; } .user-top { position: relative; z-index: 1; display: flex; align-items: flex-start; gap: 24rpx; margin-bottom: 28rpx; } .user-avatar-wrap { position: relative; flex-shrink: 0; } .user-avatar { width: 132rpx; height: 132rpx; border-radius: 44rpx; display: flex; align-items: center; justify-content: center; border: 4rpx solid rgba(255, 255, 255, 0.85); box-shadow: 0 18rpx 36rpx rgba(120, 70, 150, 0.22); } .avatar-text { font-size: 56rpx; font-weight: 800; color: rgba(43, 36, 56, 0.72); } .avatar-edit { position: absolute; bottom: -6rpx; right: -6rpx; width: 46rpx; height: 46rpx; border-radius: 50%; background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(16rpx); -webkit-backdrop-filter: blur(16rpx); box-shadow: 0 8rpx 18rpx rgba(120, 70, 150, 0.18); display: flex; align-items: center; justify-content: center; font-size: 22rpx; } .user-meta { flex: 1; padding-top: 6rpx; min-width: 0; } .user-name-row { display: flex; align-items: center; gap: 12rpx; margin-bottom: 4rpx; } .user-name { font-size: 34rpx; font-weight: 800; color: #2b2438; } .user-handle { display: block; font-size: 24rpx; color: #a59cb5; margin-bottom: 10rpx; } .user-bio { display: block; font-size: 24rpx; color: #6e6480; line-height: 1.6; } .edit-profile-btn { background: rgba(255, 255, 255, 0.55); border: 1.5rpx solid #8b5cf6; border-radius: 999rpx; padding: 14rpx 28rpx; font-size: 24rpx; font-weight: 800; color: #8b5cf6; flex-shrink: 0; align-self: flex-start; } /* 数据统计 */ .stats-row { position: relative; z-index: 1; display: flex; gap: 16rpx; align-items: center; } .stat-item { flex: 1; padding: 22rpx 0; text-align: center; background: var(--glass-strong); backdrop-filter: blur(34rpx) saturate(180%); -webkit-backdrop-filter: blur(34rpx) saturate(180%); border: 1rpx solid var(--glass-edge); border-radius: 36rpx; box-shadow: var(--shadow-soft), inset 0 1rpx 0 rgba(255, 255, 255, 0.7); } .stat-num { display: block; font-size: 38rpx; font-weight: 800; color: #ff2d6e; font-variant-numeric: tabular-nums; } .stat-label { display: block; font-size: 21rpx; font-weight: 700; color: #a59cb5; margin-top: 4rpx; } /* 区块 */ .section-wrap { margin-bottom: 12rpx; } .section-header { display: flex; align-items: center; justify-content: space-between; padding: 20rpx 28rpx 14rpx; } .section-title { font-size: 22rpx; font-weight: 800; color: #a59cb5; letter-spacing: 0.6rpx; } .add-pet-btn { font-size: 24rpx; font-weight: 800; color: #ff2d6e; background: rgba(255, 45, 110, 0.12); border-radius: 999rpx; padding: 8rpx 20rpx; } /* 宠物卡片 */ .pets-scroll { white-space: nowrap; padding: 0 28rpx 16rpx; } .pet-card { display: inline-flex; align-items: center; gap: 18rpx; background: var(--glass); backdrop-filter: blur(28rpx) saturate(170%); -webkit-backdrop-filter: blur(28rpx) saturate(170%); border: 1rpx solid var(--glass-edge); border-radius: 40rpx; padding: 20rpx 24rpx; margin-right: 20rpx; box-shadow: var(--shadow-soft), inset 0 1rpx 0 rgba(255, 255, 255, 0.6); white-space: normal; vertical-align: top; max-width: 560rpx; } .pet-card-empty { background: rgba(255, 255, 255, 0.40); border: 3rpx dashed rgba(43, 36, 56, 0.18); box-shadow: none; } .pet-avatar { width: 84rpx; height: 84rpx; border-radius: 30rpx; display: flex; align-items: center; justify-content: center; border: 2.5rpx solid rgba(255, 255, 255, 0.8); flex-shrink: 0; } .pet-avatar-add { background: rgba(255, 255, 255, 0.55); border-style: dashed; color: #a59cb5; } .pet-emoji { font-size: 44rpx; line-height: 1; } .pet-info { min-width: 0; } .pet-name { display: block; font-size: 28rpx; font-weight: 800; color: #2b2438; margin-bottom: 6rpx; } .pet-breed { display: block; font-size: 22rpx; color: #a59cb5; } .pet-badge { background: linear-gradient(135deg, #ff2d6e, #8b5cf6); color: #fff; border-radius: 24rpx; padding: 10rpx 18rpx; font-size: 20rpx; font-weight: 800; flex-shrink: 0; transform: rotate(3deg); box-shadow: 0 12rpx 24rpx rgba(139, 92, 246, 0.3); } /* 视图切换 */ .view-toggle { display: flex; background: var(--glass); backdrop-filter: blur(24rpx) saturate(170%); -webkit-backdrop-filter: blur(24rpx) saturate(170%); border: 1rpx solid var(--glass-edge); border-radius: 18rpx; overflow: hidden; } .toggle-item { padding: 10rpx 20rpx; font-size: 24rpx; color: #a59cb5; } .toggle-item.active { background: rgba(255, 45, 110, 0.14); color: #ff2d6e; font-weight: 800; } /* 动态网格 */ .post-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9rpx; padding: 0 28rpx 20rpx; } .grid-item { aspect-ratio: 1; border-radius: 26rpx; overflow: hidden; background: rgba(255, 255, 255, 0.45); border: 1rpx solid rgba(255, 255, 255, 0.6); display: flex; align-items: center; justify-content: center; } .grid-img { width: 100%; height: 100%; } .grid-no-img { padding: 12rpx; font-size: 20rpx; color: #a59cb5; text-align: center; line-height: 1.4; } .grid-empty { grid-column: span 3; display: flex; flex-direction: column; align-items: center; padding: 60rpx 0; gap: 16rpx; } .empty-emoji { font-size: 72rpx; } .empty-tip { font-size: 26rpx; color: #a59cb5; } .post-btn { padding: 18rpx 48rpx; font-size: 26rpx; font-weight: 800; margin-top: 8rpx; }