Files
wm b6e2093c82 feat: 分类浏览体验优化
- 后端 CategoryItem 新增 sample 字段,每个器械/部位分类附首条动作代表图(720 JPG 海报),前端网格无需点进详情即可预览
- 首页『按器械浏览』『按部位浏览』网格 tile 改为图文卡片,展示分类代表图
- filter-bar 内联改为一行可横滑的分类 chips + 末尾『全部类型』入口;点开面板展开全部,选中项自动置顶
2026-07-26 12:45:28 +08:00

117 lines
5.5 KiB
Plaintext

.home { min-height: 100vh; background: var(--bg-grad); }
.hero {
padding: 20rpx 40rpx 48rpx;
background: linear-gradient(160deg, var(--surface) 0%, var(--bg) 70%);
border-bottom-left-radius: 48rpx;
border-bottom-right-radius: 48rpx;
}
.hero__eyebrow { color: var(--accent); font-size: var(--fs-xs); letter-spacing: var(--ls-eyebrow); font-weight: var(--fw-semibold); }
.hero__title { font-size: var(--fs-3xl); font-weight: 700; letter-spacing: var(--ls-title); margin-top: 14rpx; color: var(--text); }
.hero__sub { font-size: var(--fs-sm); color: var(--text-2); margin-top: 14rpx; }
.search-pill {
margin-top: 36rpx;
display: flex; align-items: center;
background: var(--surface); border: 1rpx solid var(--line);
border-radius: var(--radius-pill); padding: 22rpx 30rpx;
}
.search-pill__ph { color: var(--text-3); font-size: var(--fs-base); }
.cta {
margin-top: 24rpx;
display: flex; align-items: center; justify-content: center;
background: linear-gradient(135deg, var(--gold) 0%, var(--gold-2) 100%);
color: var(--accent-on); font-weight: 700; font-size: var(--fs-lg);
border-radius: var(--radius-pill); padding: 28rpx;
box-shadow: var(--shadow-glow);
}
.cta__arrow { margin-left: 12rpx; font-size: 36rpx; }
.quick__grid { display: flex; flex-wrap: wrap; gap: 16rpx; }
.quick__tile {
width: calc((100% - 32rpx) / 3);
background: var(--surface); border: 1rpx solid var(--line);
border-radius: var(--radius); padding: 28rpx 18rpx;
display: flex; flex-direction: column; align-items: center;
position: relative; overflow: hidden;
transition: background var(--motion-fast) var(--ease);
}
.quick__tile:active { background: var(--surface-2); }
.quick__tile::after {
content: ''; position: absolute; inset: 0;
background: radial-gradient(circle at 50% 0%, var(--gold-soft), transparent 70%);
}
.quick__label { font-size: 26rpx; margin-top: 12rpx; color: var(--text); position: relative; z-index: 1; }
/* ===== 为你准备(个性化) ===== */
.personal__head { display: flex; align-items: center; justify-content: space-between; }
.personal__hi { font-size: var(--fs-xl); font-weight: 600; color: var(--text); margin-top: 6rpx; }
.personal__sub { font-size: var(--fs-sm); color: var(--text-2); font-weight: 600; margin: 28rpx 0 16rpx; }
.plan-row { display: flex; flex-direction: column; gap: 12rpx; }
.plan-chip {
display: flex; align-items: center; gap: 16rpx;
background: var(--surface); border: 1rpx solid var(--line);
border-radius: var(--radius); padding: 20rpx 24rpx;
}
.plan-chip:active { background: var(--surface-2); }
.plan-chip__body { display: flex; flex-direction: column; }
.plan-chip__name { font-size: var(--fs-base); color: var(--text); font-weight: 600; }
.plan-chip__meta { font-size: 22rpx; color: var(--text-3); margin-top: 4rpx; }
.rec-row { display: flex; flex-direction: column; gap: 12rpx; }
.rec-item {
display: flex; align-items: center; justify-content: space-between;
background: var(--surface); border: 1rpx solid var(--line);
border-radius: var(--radius); padding: 20rpx 24rpx;
}
.rec-item:active { background: var(--surface-2); }
.rec-item__body { display: flex; flex-direction: column; }
.rec-item__name { font-size: var(--fs-base); color: var(--text); font-weight: 600; }
.rec-item__reason { font-size: 22rpx; color: var(--accent); margin-top: 4rpx; }
.fav-scroll { white-space: nowrap; margin-top: 4rpx; }
.fav-card { display: inline-flex; flex-direction: column; width: 200rpx; margin-right: 16rpx; vertical-align: top; }
.fav-card__img {
width: 200rpx; height: 200rpx; border-radius: var(--radius);
background: var(--surface-2); border: 1rpx solid var(--line);
}
.fav-card__name { font-size: 24rpx; color: var(--text-2); margin-top: 10rpx; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hscroll { white-space: nowrap; margin-top: 8rpx; }
.hscroll__item { display: inline-block; width: 300rpx; margin-right: 20rpx; vertical-align: top; }
.chip-scroll { white-space: nowrap; margin-top: 8rpx; }
.prog {
display: inline-flex; flex-direction: column; align-items: center; justify-content: center;
min-width: 160rpx; padding: 24rpx 28rpx; margin-right: 16rpx;
border-radius: var(--radius-sm); border: 1rpx solid;
}
.prog__name { font-size: 26rpx; font-weight: 700; margin-top: 10rpx; }
.bp-grid { display: flex; flex-wrap: wrap; gap: 16rpx; }
.bp {
width: calc((100% - 48rpx) / 4);
background: var(--surface); border: 1rpx solid var(--line);
border-radius: var(--radius-sm); overflow: hidden;
display: flex; flex-direction: column; align-items: stretch;
}
.bp__img { width: 100%; height: 132rpx; background: var(--surface-2); display: block; }
.bp__label { font-size: 24rpx; color: var(--text); font-weight: 600; text-align: center; padding: 10rpx 6rpx 2rpx; }
.bp__count { font-size: 20rpx; color: var(--text-3); text-align: center; padding: 0 6rpx 12rpx; }
.eq-grid { display: flex; flex-wrap: wrap; gap: 16rpx; }
.eq {
width: calc((100% - 48rpx) / 4);
background: var(--surface); border: 1rpx solid var(--line);
border-radius: var(--radius-sm); overflow: hidden;
display: flex; flex-direction: column; align-items: stretch;
}
.eq__img { width: 100%; height: 132rpx; background: var(--surface-2); display: block; }
.eq:active { background: var(--surface-2); }
.eq__label { font-size: 24rpx; color: var(--text); font-weight: 600; text-align: center; padding: 10rpx 6rpx 2rpx; }
.eq__count { font-size: 20rpx; color: var(--text-3); text-align: center; padding: 0 6rpx 12rpx; }
.empty { color: var(--text-3); font-size: var(--fs-sm); text-align: center; padding: 40rpx 0; }