page { background: var(--bg-base); } .page { padding-top: var(--space-4); } .hero { position: relative; width: 100%; height: 410rpx; border-radius: var(--radius-lg); overflow: hidden; background-size: cover; background-position: center; padding: var(--space-5); display: flex; flex-direction: column; justify-content: flex-end; box-sizing: border-box; } .hero-tag { width: fit-content; min-height: 48rpx; border-radius: var(--radius-pill); padding: 0 16rpx; background: rgba(255, 255, 255, 0.86); color: var(--brand-main); font-size: var(--font-caption); display: flex; align-items: center; } .hero-name { margin-top: 12rpx; font-size: var(--font-title-md); font-weight: 700; color: #fff; } .hero-subtitle { margin-top: 8rpx; font-size: var(--font-body); color: rgba(255, 255, 255, 0.9); line-height: 1.6; } .hero-cta { margin-top: 18rpx; width: 220rpx; height: 88rpx; border-radius: var(--radius-md); background: #fff; color: var(--brand-main); font-size: var(--font-body-lg); font-weight: 700; display: flex; align-items: center; justify-content: center; } .stats-card { margin-top: var(--space-3); border-radius: var(--radius-md); border: 1px solid var(--border-soft); background: #fff; padding: var(--space-4); } .stats-main { display: flex; align-items: baseline; gap: 8rpx; } .stats-count { font-size: var(--font-title-md); color: var(--brand-main); font-weight: 700; line-height: 1; } .stats-unit { font-size: var(--font-body); color: var(--text-2); } .stats-sub { margin-top: 8rpx; font-size: var(--font-caption); color: var(--text-3); } .section { margin-top: var(--space-5); } .section-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-3); } .section-title { font-size: var(--font-title-sm); font-weight: 700; color: var(--text-1); } .section-link { min-height: 60rpx; padding: 0 8rpx; color: var(--text-2); font-size: var(--font-body); display: flex; align-items: center; } .works-grid { display: flex; gap: var(--space-2); } .work-large-wrap, .work-small-wrap { position: relative; overflow: hidden; border-radius: var(--radius-md); } .work-large { width: 430rpx; height: 236rpx; border-radius: var(--radius-md); } .work-right { flex: 1; display: flex; flex-direction: column; gap: var(--space-2); } .work-small { width: 100%; height: 112rpx; border-radius: var(--radius-md); } .work-mask { position: absolute; left: 0; right: 0; bottom: 0; padding: 14rpx 12rpx; background: linear-gradient(to top, rgba(0, 0, 0, 0.56), rgba(0, 0, 0, 0)); } .work-mask.small { padding: 10rpx; } .work-name { font-size: var(--font-body); font-weight: 700; color: #fff; } .work-meta { margin-top: 2rpx; font-size: var(--font-caption); color: rgba(255, 255, 255, 0.9); } .tags-scroll { margin-top: var(--space-4); width: 100%; white-space: nowrap; } .tags-row { display: inline-flex; gap: var(--space-2); } .tag-item { display: inline-flex; align-items: center; min-height: 56rpx; border-radius: var(--radius-pill); background: #fff; border: 1px solid var(--border-soft); padding: 0 18rpx; color: var(--text-2); font-size: var(--font-caption); } .pkg-card { margin-bottom: var(--space-3); background: var(--surface-1); border: 1px solid var(--border-soft); border-radius: var(--radius-md); padding: var(--space-4); } .pkg-top { display: flex; align-items: center; justify-content: space-between; } .pkg-badge { min-height: 48rpx; border-radius: var(--radius-pill); background: var(--surface-2); color: var(--brand-main); font-size: var(--font-caption); padding: 0 14rpx; display: flex; align-items: center; } .pkg-slots { color: var(--text-3); font-size: var(--font-caption); } .pkg-title { margin-top: var(--space-2); font-size: var(--font-title-sm); font-weight: 700; color: var(--text-1); } .pkg-desc { margin-top: 8rpx; font-size: var(--font-body); color: var(--text-2); } .pkg-price-row { margin-top: var(--space-2); display: flex; align-items: baseline; gap: 12rpx; } .pkg-price { font-size: var(--font-title-md); line-height: 1; font-weight: 700; color: var(--brand-main); } .pkg-origin { color: var(--text-3); font-size: var(--font-body); text-decoration: line-through; } .pkg-actions { margin-top: var(--space-3); display: flex; gap: var(--space-2); } .pkg-action { flex: 1; min-height: 88rpx; border-radius: var(--radius-md); font-size: var(--font-body); display: flex; align-items: center; justify-content: center; } .pkg-action.ghost { background: #f4f4f4; color: var(--text-2); } .pkg-action.solid { background: var(--brand-main); color: #fff; font-weight: 700; } .sticky-cta { position: fixed; left: var(--space-4); right: var(--space-4); bottom: calc(16rpx + env(safe-area-inset-bottom)); bottom: calc(16rpx + constant(safe-area-inset-bottom)); }