247 lines
7.5 KiB
Plaintext
247 lines
7.5 KiB
Plaintext
/* U18 首页 - V1.1 新版样式 */
|
|||
|
|
.page {
|
||
|
|
min-height: 100vh;
|
||
|
|
background: #FAFAF8;
|
||
|
|
padding-bottom: 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* ========== 品牌区 ========== */
|
||
|
|
.brand-bar {
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
justify-content: space-between;
|
||
|
|
padding: 20rpx 24rpx 16rpx;
|
||
|
|
background: #fff;
|
||
|
|
position: sticky;
|
||
|
|
top: 0;
|
||
|
|
z-index: 100;
|
||
|
|
}
|
||
|
|
|
||
|
|
.brand-info { display: flex; flex-direction: column; }
|
||
|
|
|
||
|
|
.brand-name {
|
||
|
|
font-size: 36rpx;
|
||
|
|
font-weight: 700;
|
||
|
|
color: #E96B6B;
|
||
|
|
line-height: 1.2;
|
||
|
|
}
|
||
|
|
|
||
|
|
.brand-slogan {
|
||
|
|
font-size: 22rpx;
|
||
|
|
color: #888;
|
||
|
|
margin-top: 4rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
.bell-btn {
|
||
|
|
position: relative;
|
||
|
|
width: 64rpx; height: 64rpx;
|
||
|
|
display: flex; align-items: center; justify-content: center;
|
||
|
|
border-radius: 50%;
|
||
|
|
background: #f5f5f5;
|
||
|
|
}
|
||
|
|
|
||
|
|
.bell-icon { font-size: 32rpx; }
|
||
|
|
|
||
|
|
.badge {
|
||
|
|
position: absolute; top: -4rpx; right: -4rpx;
|
||
|
|
min-width: 28rpx; height: 28rpx; line-height: 28rpx;
|
||
|
|
padding: 0 6rpx;
|
||
|
|
background: #E96B6B; color: #fff;
|
||
|
|
font-size: 20rpx; border-radius: 14rpx;
|
||
|
|
text-align: center;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* ========== 用户状态条 ========== */
|
||
|
|
.status-strip {
|
||
|
|
background: #fff;
|
||
|
|
padding: 16rpx 24rpx;
|
||
|
|
border-bottom: 1rpx solid #f0f0f0;
|
||
|
|
}
|
||
|
|
|
||
|
|
.status-checks { display: flex; gap: 24rpx; flex-wrap: wrap; }
|
||
|
|
|
||
|
|
.status-check {
|
||
|
|
font-size: 24rpx; color: #666;
|
||
|
|
}
|
||
|
|
.status-check.done { color: #2E7D32; }
|
||
|
|
.status-check.pending { color: #F57C00; }
|
||
|
|
|
||
|
|
.status-prompt { padding: 16rpx 0; }
|
||
|
|
|
||
|
|
.prompt-text {
|
||
|
|
font-size: 26rpx; color: #555;
|
||
|
|
display: block; margin-bottom: 16rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prompt-actions { display: flex; gap: 16rpx; }
|
||
|
|
|
||
|
|
.prompt-btn {
|
||
|
|
padding: 12rpx 28rpx; border-radius: 8rpx;
|
||
|
|
font-size: 26rpx; font-weight: 500;
|
||
|
|
}
|
||
|
|
.prompt-btn.primary { background: #E96B6B; color: #fff; }
|
||
|
|
.prompt-btn.secondary { background: #fff; color: #E96B6B; border: 1rpx solid #E96B6B; }
|
||
|
|
|
||
|
|
.paused-hint, .successful-hint { padding: 16rpx 0; text-align: center; }
|
||
|
|
.paused-hint text { font-size: 26rpx; color: #888; display: block; margin-bottom: 12rpx; }
|
||
|
|
.resume-btn {
|
||
|
|
display: inline-block; padding: 10rpx 32rpx;
|
||
|
|
background: #E96B6B; color: #fff;
|
||
|
|
border-radius: 8rpx; font-size: 26rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* ========== Banner ========== */
|
||
|
|
.banner-section { padding: 16rpx 24rpx; }
|
||
|
|
|
||
|
|
.banner-swiper {
|
||
|
|
width: 100%; height: 340rpx;
|
||
|
|
border-radius: 16rpx; overflow: hidden;
|
||
|
|
}
|
||
|
|
|
||
|
|
.banner-card { width: 100%; height: 100%; position: relative; }
|
||
|
|
.banner-img { width: 100%; height: 100%; object-fit: cover; }
|
||
|
|
|
||
|
|
.banner-overlay {
|
||
|
|
position: absolute; bottom: 0; left: 0; right: 0;
|
||
|
|
padding: 24rpx;
|
||
|
|
background: linear-gradient(transparent, rgba(0,0,0,0.6));
|
||
|
|
color: #fff;
|
||
|
|
}
|
||
|
|
.banner-title { font-size: 30rpx; font-weight: 600; display: block; margin-bottom: 4rpx; }
|
||
|
|
.banner-subtitle { font-size: 22rpx; opacity: 0.9; display: block; margin-bottom: 8rpx; }
|
||
|
|
.banner-btn {
|
||
|
|
display: inline-block; padding: 8rpx 20rpx;
|
||
|
|
background: rgba(255,255,255,0.25); border: 1rpx solid rgba(255,255,255,0.6);
|
||
|
|
border-radius: 20rpx; font-size: 22rpx; color: #fff;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* ========== 8个核心入口 ========== */
|
||
|
|
.entries-section {
|
||
|
|
background: #fff;
|
||
|
|
margin: 0 24rpx; border-radius: 16rpx;
|
||
|
|
padding: 24rpx 16rpx; margin-top: -8rpx;
|
||
|
|
position: relative; z-index: 10;
|
||
|
|
}
|
||
|
|
|
||
|
|
.entries-grid {
|
||
|
|
display: grid;
|
||
|
|
grid-template-columns: repeat(4, 1fr);
|
||
|
|
gap: 16rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
.entry-item {
|
||
|
|
display: flex; flex-direction: column; align-items: center;
|
||
|
|
padding: 12rpx 0;
|
||
|
|
}
|
||
|
|
.entry-item.disabled { opacity: 0.5; }
|
||
|
|
|
||
|
|
.entry-icon-bg {
|
||
|
|
width: 72rpx; height: 72rpx;
|
||
|
|
border-radius: 16rpx;
|
||
|
|
display: flex; align-items: center; justify-content: center;
|
||
|
|
margin-bottom: 8rpx;
|
||
|
|
}
|
||
|
|
.entry-icon-bg.icon-dating { background: #FFF0F0; }
|
||
|
|
.entry-icon-bg.icon-matchmaker { background: #FFF8E6; }
|
||
|
|
.entry-icon-bg.icon-activity { background: #E8F5E9; }
|
||
|
|
.entry-icon-bg.icon-counseling { background: #E3F2FD; }
|
||
|
|
.entry-icon-bg.icon-class { background: #F3E5F5; }
|
||
|
|
.entry-icon-bg.icon-premarital { background: #FFF3E0; }
|
||
|
|
.entry-icon-bg.icon-shield { background: #E8EAF6; }
|
||
|
|
.entry-icon-bg.icon-location { background: #E0F2F1; }
|
||
|
|
|
||
|
|
.entry-icon { font-size: 32rpx; }
|
||
|
|
.entry-label { font-size: 22rpx; color: #333; text-align: center; line-height: 1.3; }
|
||
|
|
|
||
|
|
/* ========== 通用 Section ========== */
|
||
|
|
.section { margin-top: 24rpx; padding: 0 24rpx; }
|
||
|
|
|
||
|
|
/* ========== 推荐卡片 ========== */
|
||
|
|
.rec-card { margin-bottom: 16rpx; }
|
||
|
|
.end-tip { text-align: center; font-size: 24rpx; color: #999; padding: 16rpx 0; }
|
||
|
|
|
||
|
|
/* ========== 骨架屏 ========== */
|
||
|
|
.skeleton-card {
|
||
|
|
display: flex; align-items: center;
|
||
|
|
padding: 16rpx 0; margin-bottom: 12rpx;
|
||
|
|
}
|
||
|
|
.skeleton-avatar {
|
||
|
|
width: 88rpx; height: 112rpx;
|
||
|
|
background: #eee; border-radius: 8rpx; margin-right: 16rpx;
|
||
|
|
}
|
||
|
|
.skeleton-info { flex: 1; }
|
||
|
|
.skeleton-line {
|
||
|
|
height: 24rpx; background: #eee;
|
||
|
|
border-radius: 4rpx; margin-bottom: 8rpx;
|
||
|
|
}
|
||
|
|
.skeleton-line.w60 { width: 60%; }
|
||
|
|
.skeleton-line.w40 { width: 40%; }
|
||
|
|
.skeleton-line.w80 { width: 80%; }
|
||
|
|
|
||
|
|
/* ========== 善缘公益服务 ========== */
|
||
|
|
.service-card {
|
||
|
|
background: linear-gradient(135deg, #FFF8F0 0%, #FFF0F0 100%);
|
||
|
|
border-radius: 16rpx; padding: 24rpx; margin-bottom: 12rpx;
|
||
|
|
}
|
||
|
|
.service-card-inner { display: flex; flex-direction: column; gap: 8rpx; }
|
||
|
|
.service-title { font-size: 28rpx; font-weight: 600; color: #333; }
|
||
|
|
.service-desc { font-size: 24rpx; color: #666; line-height: 1.5; }
|
||
|
|
.service-cta {
|
||
|
|
display: inline-block; margin-top: 8rpx;
|
||
|
|
padding: 8rpx 20rpx; background: #E96B6B;
|
||
|
|
color: #fff; border-radius: 20rpx;
|
||
|
|
font-size: 24rpx; width: fit-content;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* ========== 近期活动 ========== */
|
||
|
|
.activity-scroll { white-space: nowrap; margin: 0 -4rpx; }
|
||
|
|
.activity-h-card {
|
||
|
|
display: inline-block; width: 480rpx; margin: 0 4rpx 12rpx;
|
||
|
|
background: #fff; border-radius: 12rpx; overflow: hidden;
|
||
|
|
box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.06);
|
||
|
|
}
|
||
|
|
.activity-cover { width: 100%; height: 270rpx; background: #f0f0f0; }
|
||
|
|
.activity-info { padding: 12rpx 16rpx; }
|
||
|
|
.activity-title { font-size: 26rpx; font-weight: 600; color: #333; display: block; margin-bottom: 4rpx; }
|
||
|
|
.activity-meta { font-size: 22rpx; color: #888; display: block; }
|
||
|
|
|
||
|
|
/* ========== 善缘服务站 ========== */
|
||
|
|
.station-card {
|
||
|
|
background: #fff; border-radius: 16rpx; overflow: hidden;
|
||
|
|
box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.06); margin-top: 24rpx;
|
||
|
|
}
|
||
|
|
.station-card-inner {
|
||
|
|
display: flex; align-items: center; padding: 24rpx; gap: 16rpx;
|
||
|
|
}
|
||
|
|
.station-icon-area {
|
||
|
|
width: 80rpx; height: 80rpx; background: #E8F5E9;
|
||
|
|
border-radius: 16rpx; display: flex; align-items: center;
|
||
|
|
justify-content: center; flex-shrink: 0;
|
||
|
|
}
|
||
|
|
.station-icon { font-size: 40rpx; }
|
||
|
|
.station-info { flex: 1; min-width: 0; }
|
||
|
|
.station-name { font-size: 28rpx; font-weight: 600; color: #333; display: block; }
|
||
|
|
.station-short { font-size: 22rpx; color: #888; display: block; margin-top: 2rpx; }
|
||
|
|
.station-services { display: flex; flex-wrap: wrap; gap: 8rpx; margin-top: 8rpx; }
|
||
|
|
.station-tag {
|
||
|
|
font-size: 20rpx; padding: 2rpx 12rpx;
|
||
|
|
background: #F5F5F5; border-radius: 12rpx; color: #666;
|
||
|
|
}
|
||
|
|
.station-arrow { font-size: 36rpx; color: #ccc; flex-shrink: 0; }
|
||
|
|
|
||
|
|
/* ========== 安全提醒 ========== */
|
||
|
|
.safety-notice {
|
||
|
|
margin: 24rpx 24rpx 0;
|
||
|
|
background: #FFF9E6; border-radius: 12rpx;
|
||
|
|
padding: 20rpx 24rpx;
|
||
|
|
}
|
||
|
|
.safety-notice-inner { display: flex; align-items: flex-start; gap: 12rpx; }
|
||
|
|
.safety-icon { font-size: 32rpx; flex-shrink: 0; margin-top: 2rpx; }
|
||
|
|
.safety-text-area { flex: 1; }
|
||
|
|
.safety-title { font-size: 24rpx; font-weight: 600; color: #8B6914; display: block; margin-bottom: 4rpx; }
|
||
|
|
.safety-body { font-size: 22rpx; color: #8B6914; line-height: 1.5; display: block; }
|
||
|
|
.safety-cta { font-size: 24rpx; color: #E96B6B; flex-shrink: 0; padding-left: 12rpx; }
|
||
|
|
|
||
|
|
/* ========== 底部安全区 ========== */
|
||
|
|
.safe-area-bottom { height: env(safe-area-inset-bottom); }
|