小程序端:设计系统收敛与排版层级修复

问题:88 个 wxss 里散落大量硬编码颜色/字号/字重,无法统一调整;
部分正文对比度不达 WCAG AA(4.5:1);组件触摸目标偏小。

改动:
- 硬编码颜色收敛到语义 token(颜色统一走 design token,不再散落字面值)
- 修正全站字号阶梯:正文 ≥12px、角标 ≥11px;字重只用 400/500/600/700
- 组件触摸目标提升到 ≥44px,并补交互反馈
- 首页补氛围层次、强化排版层级

验证(本轮实测):
- UI 契约门禁 18/18 PASS(含 wxml 结构、wxss 组件选择器、token 显式值断言)
- 声明级体检 88/88 通过(全部 wxss 声明合法)

交付物:artifacts/miniapp-design-v2-preview.html
This commit is contained in:
WorkBuddy
2026-09-23 01:06:46 +08:00
parent 825fd41ee4
commit 269adf1fed
81 changed files with 5064 additions and 3533 deletions
+2 -2
View File
@@ -1,2 +1,2 @@
.ui-act{overflow:hidden;border-radius:28rpx;background:#fff;box-shadow:0 10rpx 32rpx rgba(34,35,91,.08)}.ui-act__cover{position:relative;width:100%;height:240rpx;background:#F0F1F6}.ui-act__cover-img{display:block;width:100%;height:100%}.ui-act__fee-badge{position:absolute;top:18rpx;right:18rpx;padding:7rpx 15rpx;border-radius:22rpx;background:linear-gradient(135deg,var(--mini-accent-coral),var(--mini-accent-pink));color:#fff;font-size:18rpx;font-weight:600}.ui-act__body{padding:22rpx 24rpx}.ui-act__title{overflow:hidden;color:#222746;font-size:28rpx;font-weight:700;line-height:1.35;white-space:nowrap;text-overflow:ellipsis}.ui-act__meta{margin-top:7rpx;color:#767C94;font-size:20rpx;line-height:1.45}.ui-act__intro{display:-webkit-box;overflow:hidden;margin-top:12rpx;color:#626981;font-size:21rpx;line-height:1.55;-webkit-box-orient:vertical;-webkit-line-clamp:2}.ui-act__footer{display:flex;align-items:center;justify-content:space-between;margin-top:18rpx}.ui-act__capacity{color:#858A9E;font-size:19rpx}.ui-act__status-action{min-width:126rpx;height:56rpx;display:flex;align-items:center;justify-content:center;border-radius:28rpx;background:linear-gradient(135deg,var(--mini-accent-coral),var(--mini-accent-pink));color:#fff;font-size:21rpx;font-weight:650}.ui-act__status-action.disabled{background:#EFF0F5;color:#8E93A6}.ui-act--compact{display:flex;height:200rpx}.ui-act--compact .ui-act__cover{width:200rpx;height:200rpx;flex-shrink:0}.ui-act--compact .ui-act__body{flex:1;min-width:0;padding:16rpx 18rpx}.ui-act--compact .ui-act__intro{display:none}
.ui-act__type-row{display:flex;align-items:center;margin-top:10rpx;flex-wrap:wrap}.ui-act__type-badge{padding:4rpx 14rpx;border-radius:18rpx;background:#FFF1F0;color:#D9453C;font-size:18rpx;font-weight:600}.ui-act__eligibility{margin-left:12rpx;color:#858A9E;font-size:18rpx}
.ui-act{overflow:hidden;border-radius:28rpx;background:var(--color-bg-card);box-shadow:0 10rpx 32rpx rgba(34,35,91,.08)}.ui-act__cover{position:relative;width:100%;height:240rpx;background:var(--color-bg-subtle)}.ui-act__cover-img{display:block;width:100%;height:100%}.ui-act__fee-badge{position:absolute;top:18rpx;right:18rpx;padding:7rpx 15rpx;border-radius:22rpx;background:var(--gradient-brand-solid);color:var(--color-text-inverse);font-size:18rpx;font-weight:600}.ui-act__body{padding:22rpx 24rpx}.ui-act__title{overflow:hidden;color:var(--color-text-strong);font-size:28rpx;font-weight:700;line-height:1.35;white-space:nowrap;text-overflow:ellipsis}.ui-act__meta{margin-top:7rpx;color:var(--color-text-tertiary);font-size:24rpx;line-height:1.45}.ui-act__intro{display:-webkit-box;overflow:hidden;margin-top:12rpx;color:var(--color-text-secondary);font-size:24rpx;line-height:1.55;-webkit-box-orient:vertical;-webkit-line-clamp:2}.ui-act__footer{display:flex;align-items:center;justify-content:space-between;margin-top:18rpx}.ui-act__capacity{color:var(--color-text-tertiary);font-size:24rpx}.ui-act__status-action{min-width:126rpx;min-height:var(--tap-min);display:flex;align-items:center;justify-content:center;border-radius:28rpx;background:var(--gradient-brand-solid);color:var(--color-text-inverse);font-size:24rpx;font-weight:600}.ui-act__status-action.disabled{background:var(--color-bg-subtle);color:var(--color-text-tertiary)}.ui-act--compact{display:flex;height:200rpx}.ui-act--compact .ui-act__cover{width:200rpx;height:200rpx;flex-shrink:0}.ui-act--compact .ui-act__body{flex:1;min-width:0;padding:16rpx 18rpx}.ui-act--compact .ui-act__intro{display:none}
.ui-act__type-row{display:flex;align-items:center;margin-top:10rpx;flex-wrap:wrap}.ui-act__type-badge{padding:4rpx 14rpx;border-radius:18rpx;background:var(--color-primary-light);color:var(--color-danger-strong);font-size:18rpx;font-weight:600}.ui-act__eligibility{margin-left:12rpx;color:var(--color-text-tertiary);font-size:24rpx}
+40 -40
View File
@@ -1,59 +1,59 @@
.ui-avatar {
position: relative;
flex-shrink: 0;
background: var(--color-bg-disabled);
overflow: hidden;
position:relative;
flex-shrink:0;
background:var(--color-bg-disabled);
overflow:hidden;
}
.ui-avatar--circle { border-radius: 50%; }
.ui-avatar--square { border-radius: var(--radius-md); }
.ui-avatar--circle { border-radius:50%; }
.ui-avatar--square { border-radius:var(--radius-md); }
/* 尺寸:sm 60 / md 88 / lg 120 / xl 160 */
.ui-avatar--sm { width: 60rpx; height: 60rpx; }
.ui-avatar--md { width: 88rpx; height: 88rpx; }
.ui-avatar--lg { width: 120rpx; height: 120rpx; }
.ui-avatar--xl { width: 160rpx; height: 160rpx; }
.ui-avatar--sm { width:60rpx; height:60rpx; }
.ui-avatar--md { width:88rpx; height:88rpx; }
.ui-avatar--lg { width:120rpx; height:120rpx; }
.ui-avatar--xl { width:160rpx; height:160rpx; }
.ui-avatar__img {
width: 100%;
height: 100%;
display: block;
width:100%;
height:100%;
display:block;
}
.ui-avatar__fallback {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background: var(--color-primary-light);
width:100%;
height:100%;
display:flex;
align-items:center;
justify-content:center;
background:var(--color-primary-light);
}
.ui-avatar__fallback-text {
font-size: var(--font-size-lg);
color: var(--color-primary);
font-weight: var(--font-weight-semibold);
font-size:var(--font-size-lg);
color:var(--color-primary-strong);
font-weight:var(--font-weight-semibold);
}
.ui-avatar__fallback-icon {
width: 100%;
height: 100%;
width:100%;
height:100%;
}
.ui-avatar__badges {
position: absolute;
bottom: -4rpx;
left: 50%;
transform: translateX(-50%);
display: flex;
gap: 6rpx;
position:absolute;
bottom:-4rpx;
left:50%;
transform:translateX(-50%);
display:flex;
gap:6rpx;
}
.ui-avatar__badge {
font-size: 16rpx;
line-height: 1;
padding: 4rpx 8rpx;
border-radius: var(--radius-full);
color: #FFFFFF;
font-weight: var(--font-weight-medium);
white-space: nowrap;
font-size:16rpx;
line-height:1;
padding:4rpx 8rpx;
border-radius:var(--radius-full);
color:var(--color-text-inverse);
font-weight:var(--font-weight-medium);
white-space:nowrap;
}
.ui-avatar__badge--verified { background: var(--color-success); }
.ui-avatar__badge--reviewed { background: var(--color-info); }
.ui-avatar__badge--verified { background:var(--color-success); }
.ui-avatar__badge--reviewed { background:var(--color-info); }
/* 小尺寸时隐藏徽标避免溢出 */
.ui-avatar--sm .ui-avatar__badges { display: none; }
.ui-avatar--sm .ui-avatar__badges { display:none; }
+75 -62
View File
@@ -1,111 +1,124 @@
/**
* Button 组件样式
* 引用全局 Design Token(addGlobalClass: true)
* 引用全局 Design Token(addGlobalClass:true)
*
* 2026-09-22 修复:
* 1) 触摸目标:md 只有 80rpx(40px)、sm 只有 56rpx(28px),低于 44px 下限;
* text 变体更是 min-height:auto,几乎点不中。现统一以 --tap-min 兜底。
* 2) 对比度:主按钮背景原为 --color-primary(#E96B6B),白字仅 3.10:1。
* 改用 --color-primary-solid(#C24C50) = 4.73:1,视觉上仍是暖红。
* secondary/text 的红色文字同理从 3.10 提到 --color-primary-strong 的 5.33。
* 3) 危险按钮 --color-danger(#D94A4A) 白字 4.18:1 不达标,改用 -strong 变体。
* 4) 按压反馈统一走 --press-scale / --press-opacity,替代硬编码 0.98 / 0.85。
*/
.ui-btn {
display: inline-flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
border-radius: var(--radius-full);
font-family: var(--font-family-cn);
font-weight: var(--font-weight-medium);
text-align: center;
transition: opacity var(--motion-fast) var(--ease-standard),
transform var(--motion-fast) var(--ease-standard);
user-select: none;
line-height: 1;
white-space: nowrap;
display:inline-flex;
align-items:center;
justify-content:center;
box-sizing:border-box;
border-radius:var(--radius-full);
font-family:var(--font-family-cn);
font-weight:var(--font-weight-semibold);
text-align:center;
transition:transform var(--motion-fast) var(--ease-spring),
opacity var(--motion-fast) var(--ease-standard),
background-color var(--motion-fast) var(--ease-standard);
user-select:none;
line-height:1.2;
white-space:nowrap;
}
/* 尺寸 */
/* 尺寸:全部以 44×44px 为热区下限 */
.ui-btn--sm {
padding: 14rpx 24rpx;
font-size: var(--font-size-sm);
min-height: 56rpx;
padding:14rpx 28rpx;
font-size:var(--font-size-sm);
min-height:var(--tap-min);
}
.ui-btn--md {
padding: 20rpx 36rpx;
font-size: var(--font-size-base);
min-height: 80rpx;
padding:20rpx 36rpx;
font-size:var(--font-size-base);
min-height:var(--tap-min);
}
.ui-btn--lg {
padding: 26rpx 48rpx;
font-size: var(--font-size-lg);
min-height: 96rpx;
padding:26rpx 48rpx;
font-size:var(--font-size-lg);
min-height:var(--tap-comfortable);
}
/* 撑满 */
.ui-btn--block {
display: flex;
width: 100%;
display:flex;
width:100%;
}
/* 变体 */
.ui-btn--primary {
background: var(--color-primary);
color: #FFFFFF;
background:var(--color-primary-solid);
color:var(--color-text-inverse);
}
.ui-btn--secondary {
background: var(--color-bg-card);
color: var(--color-primary);
border: 1rpx solid var(--color-primary);
background:var(--color-bg-card);
color:var(--color-primary-strong);
border:var(--border-width) solid var(--color-primary-strong);
}
.ui-btn--ghost {
background: transparent;
color: var(--color-text-primary);
border: 1rpx solid var(--color-border);
background:transparent;
color:var(--color-text-primary);
border:var(--border-width) solid var(--color-border-strong);
}
.ui-btn--danger {
background: var(--color-danger);
color: #FFFFFF;
background:var(--color-danger-strong);
color:var(--color-text-inverse);
}
.ui-btn--text {
background: transparent;
color: var(--color-primary);
padding-left: 0;
padding-right: 0;
min-height: auto;
background:transparent;
color:var(--color-primary-strong);
padding-left:var(--spacing-2);
padding-right:var(--spacing-2);
/* 视觉是纯文字,但热区仍需 44px:多出的部分由 align-items:center 居中留白 */
min-height:var(--tap-min);
}
/* 状态 */
.ui-btn--disabled,
.ui-btn--loading {
opacity: 0.55;
opacity:0.55;
}
.ui-btn--disabled.ui-btn--primary,
.ui-btn--disabled.ui-btn--danger {
background: var(--color-text-disabled);
background:var(--color-text-disabled);
}
.ui-btn--disabled.ui-btn--secondary,
.ui-btn--disabled.ui-btn--ghost {
color: var(--color-text-disabled);
border-color: var(--color-text-disabled);
color:var(--color-text-disabled);
border-color:var(--color-text-disabled);
}
.ui-btn--hover {
opacity: 0.85;
transform: scale(0.98);
/* 按压反馈(hover-class 与 CSS :active 双保险) */
.ui-btn--hover,
.ui-btn:active {
opacity:var(--press-opacity);
transform:scale(var(--press-scale));
}
/* Loading spinner */
.ui-btn__spinner {
width: 28rpx;
height: 28rpx;
margin-right: 12rpx;
display: flex;
align-items: center;
justify-content: center;
width:28rpx;
height:28rpx;
margin-right:12rpx;
display:flex;
align-items:center;
justify-content:center;
}
.ui-btn__spinner-dot {
width: 18rpx;
height: 18rpx;
border-radius: 50%;
border: 3rpx solid currentColor;
border-top-color: transparent;
animation: ui-btn-spin 0.7s linear infinite;
width:18rpx;
height:18rpx;
border-radius:50%;
border:3rpx solid currentColor;
border-top-color:transparent;
animation:ui-btn-spin 0.7s linear infinite;
}
@keyframes ui-btn-spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
from { transform:rotate(0deg); }
to { transform:rotate(360deg); }
}
+46 -46
View File
@@ -1,66 +1,66 @@
.ui-conv {
display: flex;
align-items: center;
background: var(--color-bg-card);
padding: 18rpx 20rpx;
border-bottom: 1rpx solid var(--color-divider);
display:flex;
align-items:center;
background:var(--color-bg-card);
padding:18rpx 20rpx;
border-bottom:1rpx solid var(--color-divider);
}
.ui-conv--disabled {
opacity: 0.6;
opacity:0.6;
}
.ui-conv__body {
flex: 1;
min-width: 0;
margin-left: var(--spacing-3);
flex:1;
min-width:0;
margin-left:var(--spacing-3);
}
.ui-conv__top {
display: flex;
justify-content: space-between;
align-items: baseline;
display:flex;
justify-content:space-between;
align-items:baseline;
}
.ui-conv__name {
color: #222746;
font-size: 26rpx;
font-weight: 650;
color:var(--color-text-strong);
font-size:26rpx;
font-weight:600;
}
.ui-conv__time {
color: #8b90a5;
font-size: 19rpx;
flex-shrink: 0;
margin-left: var(--spacing-2);
color:var(--color-text-tertiary);
font-size:24rpx;
flex-shrink:0;
margin-left:var(--spacing-2);
}
.ui-conv__bottom {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: var(--spacing-1);
display:flex;
justify-content:space-between;
align-items:center;
margin-top:var(--spacing-1);
}
.ui-conv__last {
flex: 1;
min-width: 0;
color: #7a8097;
font-size: 21rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin-right: var(--spacing-2);
flex:1;
min-width:0;
color:var(--color-text-tertiary);
font-size:24rpx;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
margin-right:var(--spacing-2);
}
.ui-conv__badge {
min-width: 36rpx;
height: 36rpx;
padding: 0 10rpx;
border-radius: var(--radius-full);
background: var(--color-danger);
color: #FFFFFF;
font-size: var(--font-size-xs);
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
flex-shrink: 0;
min-width:36rpx;
height:36rpx;
padding:0 10rpx;
border-radius:var(--radius-full);
background:var(--color-danger);
color:var(--color-text-inverse);
font-size:var(--font-size-xs);
display:flex;
align-items:center;
justify-content:center;
line-height:1;
flex-shrink:0;
}
.ui-conv__status-hint {
margin-top: var(--spacing-1);
font-size: var(--font-size-xs);
color: var(--color-text-tertiary);
margin-top:var(--spacing-1);
font-size:var(--font-size-xs);
color:var(--color-text-tertiary);
}
@@ -1,47 +1,47 @@
.ui-dialog-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: var(--color-bg-overlay);
z-index: var(--z-modal);
display: flex;
align-items: center;
justify-content: center;
padding: 0 var(--spacing-6);
position:fixed;
top:0;
left:0;
right:0;
bottom:0;
background:var(--color-bg-overlay);
z-index:var(--z-modal);
display:flex;
align-items:center;
justify-content:center;
padding:0 var(--spacing-6);
}
.ui-dialog {
width: 100%;
max-width: 600rpx;
background: var(--color-bg-card);
border-radius: var(--radius-lg);
padding: var(--spacing-5) var(--spacing-4) var(--spacing-4);
box-shadow: var(--shadow-popup);
animation: ui-dialog-in var(--motion-normal) var(--ease-standard);
width:100%;
max-width:600rpx;
background:var(--color-bg-card);
border-radius:var(--radius-lg);
padding:var(--spacing-5) var(--spacing-4) var(--spacing-4);
box-shadow:var(--shadow-popup);
animation:ui-dialog-in var(--motion-normal) var(--ease-standard);
}
@keyframes ui-dialog-in {
from { transform: scale(0.92); opacity: 0; }
to { transform: scale(1); opacity: 1; }
from { transform:scale(0.92); opacity:0; }
to { transform:scale(1); opacity:1; }
}
.ui-dialog__title {
font-size: var(--font-size-xl);
font-weight: var(--font-weight-semibold);
color: var(--color-text-primary);
text-align: center;
margin-bottom: var(--spacing-3);
font-size:var(--font-size-xl);
font-weight:var(--font-weight-semibold);
color:var(--color-text-primary);
text-align:center;
margin-bottom:var(--spacing-3);
}
.ui-dialog__content {
font-size: var(--font-size-md);
color: var(--color-text-secondary);
line-height: var(--line-height-relaxed);
text-align: center;
margin-bottom: var(--spacing-5);
font-size:var(--font-size-md);
color:var(--color-text-secondary);
line-height:var(--line-height-relaxed);
text-align:center;
margin-bottom:var(--spacing-5);
}
.ui-dialog__actions {
display: flex;
gap: var(--spacing-2);
display:flex;
gap:var(--spacing-2);
}
.ui-dialog__btn {
flex: 1;
flex:1;
}
+43 -43
View File
@@ -1,60 +1,60 @@
.ui-empty {
display: flex;
flex-direction: column;
align-items: center;
padding: var(--spacing-10) var(--spacing-page-x);
text-align: center;
display:flex;
flex-direction:column;
align-items:center;
padding:var(--spacing-10) var(--spacing-page-x);
text-align:center;
}
.ui-empty__illustration {
width: 160rpx;
height: 160rpx;
border-radius: 50%;
background: var(--color-bg-disabled);
display: flex;
align-items: center;
justify-content: center;
margin-bottom: var(--spacing-4);
width:160rpx;
height:160rpx;
border-radius:50%;
background:var(--color-bg-disabled);
display:flex;
align-items:center;
justify-content:center;
margin-bottom:var(--spacing-4);
}
.ui-empty__icon {
width: 72rpx;
height: 72rpx;
opacity: 0.72;
width:72rpx;
height:72rpx;
opacity:0.72;
}
.ui-empty__title {
font-size: var(--font-size-lg);
font-weight: var(--font-weight-medium);
color: var(--color-text-primary);
margin-bottom: var(--spacing-2);
font-size:var(--font-size-lg);
font-weight:var(--font-weight-medium);
color:var(--color-text-primary);
margin-bottom:var(--spacing-2);
}
.ui-empty__desc {
font-size: var(--font-size-sm);
color: var(--color-text-tertiary);
line-height: var(--line-height-relaxed);
max-width: 480rpx;
font-size:var(--font-size-sm);
color:var(--color-text-tertiary);
line-height:var(--line-height-relaxed);
max-width:480rpx;
}
.ui-empty__actions {
display: flex;
flex-direction: column;
gap: var(--spacing-2);
margin-top: var(--spacing-6);
width: 100%;
max-width: 480rpx;
display:flex;
flex-direction:column;
gap:var(--spacing-2);
margin-top:var(--spacing-6);
width:100%;
max-width:480rpx;
}
.ui-empty__action {
display: flex;
align-items: center;
justify-content: center;
height: 80rpx;
border-radius: var(--radius-full);
font-size: var(--font-size-base);
font-weight: var(--font-weight-medium);
}
display:flex;
align-items:center;
justify-content:center;
min-height:var(--tap-min);
border-radius:var(--radius-full);
font-size:var(--font-size-base);
font-weight:var(--font-weight-medium);
min-width:var(--tap-min);}
.ui-empty__action--primary {
background: var(--color-primary);
color: #FFFFFF;
background:var(--color-primary-solid);
color:var(--color-text-inverse);
}
.ui-empty__action--secondary {
background: var(--color-bg-card);
color: var(--color-primary);
border: 1rpx solid var(--color-primary);
background:var(--color-bg-card);
color:var(--color-primary-strong);
border:1rpx solid var(--color-primary);
}
+25 -25
View File
@@ -1,45 +1,45 @@
.error-state {
padding: 64rpx 32rpx;
text-align: center;
background: var(--color-bg-card);
border-radius: var(--radius-lg);
padding:64rpx 32rpx;
text-align:center;
background:var(--color-bg-card);
border-radius:var(--radius-lg);
}
.error-icon {
display: block;
width: 72rpx;
height: 72rpx;
margin: 0 auto 20rpx;
display:block;
width:72rpx;
height:72rpx;
margin:0 auto 20rpx;
}
.error-title,
.error-desc {
display: block;
display:block;
}
.error-title {
font-size: 30rpx;
font-weight: 600;
font-size:30rpx;
font-weight:600;
}
.error-desc {
margin-top: 8rpx;
color: var(--color-text-tertiary);
font-size: 24rpx;
margin-top:8rpx;
color:var(--color-text-tertiary);
font-size:24rpx;
}
.retry-btn {
width: 220rpx;
height: 80rpx;
margin-top: 24rpx;
border: 0;
border-radius: var(--radius-full);
background: var(--color-primary);
color: var(--color-text-inverse);
font-size: 26rpx;
line-height: 80rpx;
}
width:220rpx;
min-height:var(--tap-min);
margin-top:24rpx;
border:0;
border-radius:var(--radius-full);
background:var(--color-primary-solid);
color:var(--color-text-inverse);
font-size:26rpx;
line-height:var(--tap-min);
min-width:var(--tap-min);}
.retry-btn::after {
border: 0;
border:0;
}
+45 -45
View File
@@ -1,69 +1,69 @@
.ui-input {
padding: var(--spacing-3) 0;
border-bottom: 1rpx solid var(--color-border);
position: relative;
padding:var(--spacing-3) 0;
border-bottom:1rpx solid var(--color-border);
position:relative;
}
.ui-input__label {
font-size: var(--font-size-sm);
color: var(--color-text-tertiary);
margin-bottom: var(--spacing-2);
font-size:var(--font-size-sm);
color:var(--color-text-tertiary);
margin-bottom:var(--spacing-2);
}
.ui-input__field-wrap {
display: flex;
align-items: center;
display:flex;
align-items:center;
}
.ui-input__field {
flex: 1;
min-width: 0;
font-size: var(--font-size-base);
color: var(--color-text-primary);
padding: var(--spacing-2) 0;
line-height: var(--line-height-normal);
flex:1;
min-width:0;
font-size:var(--font-size-base);
color:var(--color-text-primary);
padding:var(--spacing-2) 0;
line-height:var(--line-height-normal);
}
.ui-input__placeholder {
color: var(--color-text-placeholder);
color:var(--color-text-placeholder);
}
.ui-input__clear {
flex-shrink: 0;
margin-left: var(--spacing-2);
width: 36rpx;
height: 36rpx;
border-radius: 50%;
background: var(--color-text-disabled);
color: #FFFFFF;
font-size: 28rpx;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
flex-shrink:0;
margin-left:var(--spacing-2);
width:36rpx;
height:36rpx;
border-radius:50%;
background:var(--color-text-disabled);
color:var(--color-text-inverse);
font-size:28rpx;
display:flex;
align-items:center;
justify-content:center;
line-height:1;
}
.ui-input__footer {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-top: var(--spacing-1);
min-height: 28rpx;
display:flex;
justify-content:space-between;
align-items:flex-start;
margin-top:var(--spacing-1);
min-height:28rpx;
}
.ui-input__error {
color: var(--color-danger);
font-size: var(--font-size-xs);
flex: 1;
color:var(--color-danger-strong);
font-size:var(--font-size-xs);
flex:1;
}
.ui-input__count {
color: var(--color-text-tertiary);
font-size: var(--font-size-xs);
margin-left: var(--spacing-2);
color:var(--color-text-tertiary);
font-size:var(--font-size-xs);
margin-left:var(--spacing-2);
}
.ui-input--error .ui-input__field {
color: var(--color-danger);
color:var(--color-danger-strong);
}
.ui-input--error {
border-bottom-color: var(--color-border-error);
border-bottom-color:var(--color-border-error);
}
.ui-input--disabled .ui-input__field {
color: var(--color-text-disabled);
background: var(--color-bg-disabled);
border-radius: var(--radius-sm);
padding-left: var(--spacing-2);
padding-right: var(--spacing-2);
color:var(--color-text-disabled);
background:var(--color-bg-disabled);
border-radius:var(--radius-sm);
padding-left:var(--spacing-2);
padding-right:var(--spacing-2);
}
+26 -26
View File
@@ -1,42 +1,42 @@
.ui-likers {
display: inline-flex;
align-items: center;
background: var(--color-bg-card);
border-radius: var(--radius-full);
border: 1rpx solid var(--color-border);
color: var(--color-text-tertiary);
display:inline-flex;
align-items:center;
background:var(--color-bg-card);
border-radius:var(--radius-full);
border:1rpx solid var(--color-border);
color:var(--color-text-tertiary);
}
.ui-likers--active {
background: var(--color-primary-light);
border-color: var(--color-primary-light);
color: var(--color-primary);
background:var(--color-primary-light);
border-color:var(--color-primary-light);
color:var(--color-primary-strong);
}
.ui-likers--sm {
padding: 6rpx 14rpx;
font-size: var(--font-size-xs);
padding:6rpx 14rpx;
font-size:var(--font-size-xs);
}
.ui-likers--md {
padding: 8rpx 18rpx;
font-size: var(--font-size-sm);
padding:8rpx 18rpx;
font-size:var(--font-size-sm);
}
.ui-likers--lg {
padding: 12rpx 24rpx;
font-size: var(--font-size-md);
padding:12rpx 24rpx;
font-size:var(--font-size-md);
}
.ui-likers__icon {
width: 24rpx;
height: 24rpx;
display: flex;
align-items: center;
justify-content: center;
margin-right: 8rpx;
width:24rpx;
height:24rpx;
display:flex;
align-items:center;
justify-content:center;
margin-right:8rpx;
}
.ui-likers__heart {
width: 20rpx;
height: 18rpx;
background: currentColor;
clip-path: polygon(50% 100%, 0 38%, 18% 8%, 50% 28%, 82% 8%, 100% 38%);
width:20rpx;
height:18rpx;
background:currentColor;
clip-path:polygon(50% 100%, 0 38%, 18% 8%, 50% 28%, 82% 8%, 100% 38%);
}
.ui-likers__text {
font-size: inherit;
font-size:inherit;
}
+52 -52
View File
@@ -1,91 +1,91 @@
.ui-loading--block {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: var(--spacing-8) var(--spacing-page-x);
display:flex;
flex-direction:column;
align-items:center;
justify-content:center;
padding:var(--spacing-8) var(--spacing-page-x);
}
.ui-loading--inline {
display: inline-flex;
align-items: center;
display:inline-flex;
align-items:center;
}
.ui-loading__spinner {
width: 60rpx;
height: 60rpx;
display: flex;
align-items: center;
justify-content: center;
width:60rpx;
height:60rpx;
display:flex;
align-items:center;
justify-content:center;
}
.ui-loading__spinner-icon {
width: 48rpx;
height: 48rpx;
animation: ui-loading-spin 0.8s linear infinite;
width:48rpx;
height:48rpx;
animation:ui-loading-spin 0.8s linear infinite;
}
@keyframes ui-loading-spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
from { transform:rotate(0deg); }
to { transform:rotate(360deg); }
}
.ui-loading__text {
margin-top: var(--spacing-3);
font-size: var(--font-size-sm);
color: var(--color-text-tertiary);
margin-top:var(--spacing-3);
font-size:var(--font-size-sm);
color:var(--color-text-tertiary);
}
/* Skeleton */
.ui-loading__skeleton {
width: 100%;
width:100%;
}
.ui-loading__skeleton-row {
display: flex;
align-items: center;
padding: var(--spacing-3) var(--spacing-page-x);
background: var(--color-bg-card);
border-bottom: 1rpx solid var(--color-divider);
display:flex;
align-items:center;
padding:var(--spacing-3) var(--spacing-page-x);
background:var(--color-bg-card);
border-bottom:1rpx solid var(--color-divider);
}
.ui-loading__skeleton-avatar {
width: 88rpx;
height: 88rpx;
border-radius: 50%;
background: var(--color-bg-disabled);
margin-right: var(--spacing-3);
flex-shrink: 0;
width:88rpx;
height:88rpx;
border-radius:50%;
background:var(--color-bg-disabled);
margin-right:var(--spacing-3);
flex-shrink:0;
}
.ui-loading__skeleton-content {
flex: 1;
min-width: 0;
flex:1;
min-width:0;
}
.ui-loading__skeleton-line {
height: 24rpx;
background: var(--color-bg-disabled);
border-radius: var(--radius-sm);
position: relative;
overflow: hidden;
height:24rpx;
background:var(--color-bg-disabled);
border-radius:var(--radius-sm);
position:relative;
overflow:hidden;
}
.ui-loading__skeleton-line--title {
width: 40%;
margin-bottom: var(--spacing-2);
width:40%;
margin-bottom:var(--spacing-2);
}
.ui-loading__skeleton-line--meta {
width: 70%;
width:70%;
}
/* shimmer */
.ui-loading__skeleton-line::after,
.ui-loading__skeleton-avatar::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(
content:'';
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
background:linear-gradient(
90deg,
transparent 0%,
rgba(255, 255, 255, 0.55) 50%,
transparent 100%
);
animation: ui-loading-shimmer 1.4s ease-in-out infinite;
animation:ui-loading-shimmer 1.4s ease-in-out infinite;
}
@keyframes ui-loading-shimmer {
0% { transform: translateX(-100%); }
100% { transform: translateX(100%); }
0% { transform:translateX(-100%); }
100% { transform:translateX(100%); }
}
+32 -32
View File
@@ -1,52 +1,52 @@
.ui-mm {
background: var(--color-bg-card);
border-radius: 26rpx;
padding: 24rpx;
margin-top: 10rpx;
box-shadow: 0 8rpx 28rpx rgba(35,35,95,.06);
background:var(--color-bg-card);
border-radius:26rpx;
padding:24rpx;
margin-top:10rpx;
box-shadow:0 8rpx 28rpx rgba(35,35,95,.06);
}
.ui-mm__header {
display: block;
display:block;
}
.ui-mm__title-row {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: var(--spacing-2);
display:flex;
justify-content:space-between;
align-items:center;
margin-bottom:var(--spacing-2);
}
.ui-mm__title {
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
color: var(--color-text-primary);
font-size:var(--font-size-lg);
font-weight:var(--font-weight-semibold);
color:var(--color-text-primary);
}
.ui-mm__mm-info {
font-size: var(--font-size-md);
color: var(--color-text-secondary);
margin-bottom: var(--spacing-2);
font-size:var(--font-size-md);
color:var(--color-text-secondary);
margin-bottom:var(--spacing-2);
}
.ui-mm__req {
padding: var(--spacing-2) var(--spacing-3);
background: var(--color-bg-disabled);
border-radius: var(--radius-sm);
margin-bottom: var(--spacing-2);
padding:var(--spacing-2) var(--spacing-3);
background:var(--color-bg-disabled);
border-radius:var(--radius-sm);
margin-bottom:var(--spacing-2);
}
.ui-mm__req-label {
font-size: var(--font-size-xs);
color: var(--color-text-tertiary);
font-size:var(--font-size-xs);
color:var(--color-text-tertiary);
}
.ui-mm__req-content {
font-size: var(--font-size-sm);
color: var(--color-text-secondary);
line-height: var(--line-height-normal);
display: block;
margin-top: 4rpx;
font-size:var(--font-size-sm);
color:var(--color-text-secondary);
line-height:var(--line-height-normal);
display:block;
margin-top:4rpx;
}
.ui-mm__follow-up {
font-size: var(--font-size-xs);
color: var(--color-text-tertiary);
font-size:var(--font-size-xs);
color:var(--color-text-tertiary);
}
.ui-mm__footer {
margin-top: var(--spacing-3);
padding-top: var(--spacing-3);
border-top: 1rpx solid var(--color-divider);
margin-top:var(--spacing-3);
padding-top:var(--spacing-3);
border-top:1rpx solid var(--color-divider);
}
+48 -48
View File
@@ -1,78 +1,78 @@
.ui-bubble {
padding: var(--spacing-1) var(--spacing-page-x);
padding:var(--spacing-1) var(--spacing-page-x);
}
.ui-bubble__time {
text-align: center;
margin: var(--spacing-3) 0;
font-size: var(--font-size-xs);
color: var(--color-text-tertiary);
text-align:center;
margin:var(--spacing-3) 0;
font-size:var(--font-size-xs);
color:var(--color-text-tertiary);
}
.ui-bubble__system {
text-align: center;
font-size: var(--font-size-sm);
color: var(--color-text-tertiary);
background: var(--color-bg-disabled);
padding: var(--spacing-1) var(--spacing-3);
border-radius: var(--radius-sm);
display: inline-block;
margin: 0 auto;
text-align:center;
font-size:var(--font-size-sm);
color:var(--color-text-tertiary);
background:var(--color-bg-disabled);
padding:var(--spacing-1) var(--spacing-3);
border-radius:var(--radius-sm);
display:inline-block;
margin:0 auto;
}
.ui-bubble__row {
display: flex;
align-items: flex-end;
display:flex;
align-items:flex-end;
}
.ui-bubble--other .ui-bubble__row {
justify-content: flex-start;
justify-content:flex-start;
}
.ui-bubble--self .ui-bubble__row {
justify-content: flex-end;
justify-content:flex-end;
}
.ui-bubble__content-wrap {
display: flex;
flex-direction: column;
max-width: 70%;
margin: 0 var(--spacing-2);
display:flex;
flex-direction:column;
max-width:70%;
margin:0 var(--spacing-2);
}
.ui-bubble--self .ui-bubble__content-wrap {
align-items: flex-end;
align-items:flex-end;
}
.ui-bubble__content {
padding: var(--spacing-2) var(--spacing-3);
border-radius: var(--radius-lg);
font-size: var(--font-size-base);
line-height: var(--line-height-normal);
word-break: break-all;
padding:var(--spacing-2) var(--spacing-3);
border-radius:var(--radius-lg);
font-size:var(--font-size-base);
line-height:var(--line-height-normal);
word-break:break-all;
}
.ui-bubble--other .ui-bubble__content {
background: var(--color-bg-card);
color: var(--color-text-primary);
border-top-left-radius: var(--radius-sm);
background:var(--color-bg-card);
color:var(--color-text-primary);
border-top-left-radius:var(--radius-sm);
}
.ui-bubble--self .ui-bubble__content {
background: var(--color-primary);
color: #FFFFFF;
border-top-right-radius: var(--radius-sm);
background:var(--color-primary-solid);
color:var(--color-text-inverse);
border-top-right-radius:var(--radius-sm);
}
.ui-bubble__retry {
margin-top: var(--spacing-1);
font-size: var(--font-size-xs);
color: var(--color-danger);
align-self: flex-end;
margin-top:var(--spacing-1);
font-size:var(--font-size-xs);
color:var(--color-danger-strong);
align-self:flex-end;
}
.ui-bubble__sending {
margin-top: var(--spacing-1);
display: flex;
align-items: center;
justify-content: flex-end;
margin-top:var(--spacing-1);
display:flex;
align-items:center;
justify-content:flex-end;
}
.ui-bubble__sending-dot {
width: 16rpx;
height: 16rpx;
border-radius: 50%;
background: var(--color-text-disabled);
animation: ui-bubble-pulse 1s ease-in-out infinite;
width:16rpx;
height:16rpx;
border-radius:50%;
background:var(--color-text-disabled);
animation:ui-bubble-pulse 1s ease-in-out infinite;
}
@keyframes ui-bubble-pulse {
0%, 100% { opacity: 0.3; }
50% { opacity: 1; }
0%, 100% { opacity:0.3; }
50% { opacity:1; }
}
+35 -35
View File
@@ -1,51 +1,51 @@
.ui-nav {
position: sticky;
top: 0;
left: 0;
width: 100%;
z-index: var(--z-sticky);
box-sizing: border-box;
position:sticky;
top:0;
left:0;
width:100%;
z-index:var(--z-sticky);
box-sizing:border-box;
}
.ui-nav--card {
background: var(--color-bg-card);
border-bottom: 1rpx solid var(--color-divider);
background:var(--color-bg-card);
border-bottom:1rpx solid var(--color-divider);
}
.ui-nav--transparent {
background: transparent;
background:transparent;
}
.ui-nav__bar {
display: flex;
align-items: center;
height: 88rpx;
padding: 0 var(--spacing-2);
display:flex;
align-items:center;
height:88rpx;
padding:0 var(--spacing-2);
}
.ui-nav__back,
.ui-nav__placeholder {
width: 64rpx;
height: 64rpx;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
width:64rpx;
min-height:var(--tap-min);
display:flex;
align-items:center;
justify-content:center;
flex-shrink:0;
min-width:var(--tap-min);}
.ui-nav__back-icon {
width: 36rpx;
height: 36rpx;
width:36rpx;
height:36rpx;
}
.ui-nav__title {
flex: 1;
text-align: center;
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
color: var(--color-text-primary);
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
flex:1;
text-align:center;
font-size:var(--font-size-lg);
font-weight:var(--font-weight-semibold);
color:var(--color-text-primary);
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
}
.ui-nav__right {
flex-shrink: 0;
min-width: 64rpx;
display: flex;
align-items: center;
justify-content: flex-end;
flex-shrink:0;
min-width:64rpx;
display:flex;
align-items:center;
justify-content:flex-end;
}
+71 -71
View File
@@ -1,99 +1,99 @@
.ui-photo__list {
display: flex;
flex-wrap: wrap;
gap: var(--spacing-2);
display:flex;
flex-wrap:wrap;
gap:var(--spacing-2);
}
.ui-photo__item,
.ui-photo__add {
width: 200rpx;
height: 200rpx;
border-radius: var(--radius-md);
position: relative;
overflow: hidden;
width:200rpx;
height:200rpx;
border-radius:var(--radius-md);
position:relative;
overflow:hidden;
}
.ui-photo__item {
background: var(--color-bg-disabled);
background:var(--color-bg-disabled);
}
.ui-photo__img {
width: 100%;
height: 100%;
display: block;
width:100%;
height:100%;
display:block;
}
.ui-photo__status {
position: absolute;
top: 8rpx;
left: 8rpx;
position:absolute;
top:8rpx;
left:8rpx;
}
.ui-photo__remove {
position: absolute;
top: 8rpx;
right: 8rpx;
width: 36rpx;
height: 36rpx;
border-radius: 50%;
background: rgba(0, 0, 0, 0.55);
color: #FFFFFF;
font-size: 24rpx;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
}
position:absolute;
top:8rpx;
right:8rpx;
width:36rpx;
min-height:var(--tap-min);
border-radius:50%;
background:rgba(0, 0, 0, 0.55);
color:var(--color-text-inverse);
font-size:24rpx;
display:flex;
align-items:center;
justify-content:center;
line-height:1;
min-width:var(--tap-min);}
.ui-photo__retry {
position: absolute;
bottom: 8rpx;
left: 50%;
transform: translateX(-50%);
padding: 4rpx 16rpx;
border-radius: var(--radius-full);
background: var(--color-danger);
color: #FFFFFF;
font-size: var(--font-size-xs);
position:absolute;
bottom:8rpx;
left:50%;
transform:translateX(-50%);
padding:4rpx 16rpx;
border-radius:var(--radius-full);
background:var(--color-danger);
color:var(--color-text-inverse);
font-size:var(--font-size-xs);
}
.ui-photo__mask {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.4);
display: flex;
align-items: center;
justify-content: center;
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
background:rgba(0, 0, 0, 0.4);
display:flex;
align-items:center;
justify-content:center;
}
.ui-photo__spinner {
width: 40rpx;
height: 40rpx;
border: 3rpx solid rgba(255, 255, 255, 0.5);
border-top-color: #FFFFFF;
border-radius: 50%;
animation: ui-photo-spin 0.8s linear infinite;
width:40rpx;
height:40rpx;
border:3rpx solid rgba(255, 255, 255, 0.5);
border-top-color:var(--color-text-inverse);
border-radius:50%;
animation:ui-photo-spin 0.8s linear infinite;
}
@keyframes ui-photo-spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
from { transform:rotate(0deg); }
to { transform:rotate(360deg); }
}
.ui-photo__add {
background: var(--color-bg-disabled);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
border: 2rpx dashed var(--color-text-disabled);
background:var(--color-bg-disabled);
display:flex;
flex-direction:column;
align-items:center;
justify-content:center;
border:2rpx dashed var(--color-text-disabled);
}
.ui-photo__add-icon {
font-size: var(--font-size-2xl);
color: var(--color-text-tertiary);
line-height: 1;
font-size:var(--font-size-2xl);
color:var(--color-text-tertiary);
line-height:1;
}
.ui-photo__add-text {
margin-top: var(--spacing-1);
font-size: var(--font-size-xs);
color: var(--color-text-tertiary);
margin-top:var(--spacing-1);
font-size:var(--font-size-xs);
color:var(--color-text-tertiary);
}
.ui-photo__hint {
margin-top: var(--spacing-2);
font-size: var(--font-size-xs);
color: var(--color-text-tertiary);
line-height: var(--line-height-normal);
margin-top:var(--spacing-2);
font-size:var(--font-size-xs);
color:var(--color-text-tertiary);
line-height:var(--line-height-normal);
}
+48 -48
View File
@@ -1,72 +1,72 @@
.ui-pref__hint {
padding: var(--spacing-2) var(--spacing-3);
background: var(--color-warning-light);
border-radius: var(--radius-sm);
font-size: var(--font-size-xs);
color: var(--color-warning);
line-height: var(--line-height-normal);
margin-bottom: var(--spacing-3);
padding:var(--spacing-2) var(--spacing-3);
background:var(--color-warning-light);
border-radius:var(--radius-sm);
font-size:var(--font-size-xs);
color:var(--color-warning-strong);
line-height:var(--line-height-normal);
margin-bottom:var(--spacing-3);
}
.ui-pref__row {
display: flex;
align-items: center;
padding: var(--spacing-3) 0;
border-bottom: 1rpx solid var(--color-divider);
display:flex;
align-items:center;
padding:var(--spacing-3) 0;
border-bottom:1rpx solid var(--color-divider);
}
.ui-pref__label {
width: 140rpx;
font-size: var(--font-size-md);
color: var(--color-text-secondary);
flex-shrink: 0;
width:140rpx;
font-size:var(--font-size-md);
color:var(--color-text-secondary);
flex-shrink:0;
}
.ui-pref__range {
display: flex;
align-items: center;
flex: 1;
min-width: 0;
display:flex;
align-items:center;
flex:1;
min-width:0;
}
.ui-pref__num {
flex: 1;
min-width: 0;
height: 64rpx;
padding: 0 var(--spacing-2);
border: 1rpx solid var(--color-border);
border-radius: var(--radius-sm);
font-size: var(--font-size-md);
text-align: center;
flex:1;
min-width:0;
height:64rpx;
padding:0 var(--spacing-2);
border:1rpx solid var(--color-border);
border-radius:var(--radius-sm);
font-size:var(--font-size-md);
text-align:center;
}
.ui-pref__dash {
margin: 0 var(--spacing-2);
color: var(--color-text-tertiary);
margin:0 var(--spacing-2);
color:var(--color-text-tertiary);
}
.ui-pref__tags {
flex: 1;
min-width: 0;
display: flex;
flex-wrap: wrap;
gap: var(--spacing-1);
flex:1;
min-width:0;
display:flex;
flex-wrap:wrap;
gap:var(--spacing-1);
}
.ui-pref__picker {
flex: 1;
flex:1;
}
.ui-pref__picker-value {
padding: var(--spacing-2) 0;
font-size: var(--font-size-md);
color: var(--color-text-primary);
padding:var(--spacing-2) 0;
font-size:var(--font-size-md);
color:var(--color-text-primary);
}
.ui-pref__importance {
margin-left: var(--spacing-2);
padding: 6rpx 16rpx;
border-radius: var(--radius-full);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-medium);
flex-shrink: 0;
margin-left:var(--spacing-2);
padding:6rpx 16rpx;
border-radius:var(--radius-full);
font-size:var(--font-size-xs);
font-weight:var(--font-weight-medium);
flex-shrink:0;
}
.ui-pref__importance--required {
background: var(--color-danger-light);
color: var(--color-danger);
background:var(--color-danger-light);
color:var(--color-danger-strong);
}
.ui-pref__importance--preferred {
background: var(--color-bg-disabled);
color: var(--color-text-tertiary);
background:var(--color-bg-disabled);
color:var(--color-text-tertiary);
}
+1 -1
View File
@@ -1 +1 @@
.ui-rec{display:flex;align-items:center;gap:16rpx;min-height:132rpx;padding:14rpx 16rpx;background:#fff;border-bottom:1rpx solid #F0F1F6}.ui-rec:last-child{border-bottom:0}.ui-rec__info{flex:1;min-width:0}.ui-rec__name-row{display:flex;align-items:center;gap:10rpx}.ui-rec__name{font-size:26rpx;font-weight:700;color:#222746}.ui-rec__age{font-size:21rpx;color:#545B76}.ui-rec__online{margin-left:auto;font-size:18rpx;color:#39A987}.ui-rec__online::before{content:'·';margin-right:4rpx}.ui-rec__meta{margin-top:5rpx;font-size:20rpx;color:#767C94;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ui-rec__reasons{display:flex;gap:7rpx;margin-top:8rpx;overflow:hidden}.ui-rec__reason{flex:none;padding:4rpx 9rpx;border-radius:12rpx;background:#F3EEFF;color:#7860AE;font-size:17rpx;white-space:nowrap}.ui-rec__actions{width:82rpx;display:flex;flex-direction:column;align-items:center;gap:7rpx}.compact-like{width:64rpx;height:64rpx;display:flex;align-items:center;justify-content:center;border-radius:32rpx;background:#FFF0F5;box-shadow:0 7rpx 18rpx rgba(255,79,145,.18)}.compact-like__icon{width:44rpx;height:44rpx}.compact-pass{font-size:17rpx;color:#A0A4B4;white-space:nowrap}
.ui-rec{display:flex;align-items:center;gap:16rpx;min-height:132rpx;padding:14rpx 16rpx;background:var(--color-bg-card);border-bottom:1rpx solid var(--color-divider)}.ui-rec:last-child{border-bottom:0}.ui-rec__info{flex:1;min-width:0}.ui-rec__name-row{display:flex;align-items:center;gap:10rpx}.ui-rec__name{font-size:26rpx;font-weight:700;color:var(--color-text-strong)}.ui-rec__age{font-size:24rpx;color:var(--color-text-secondary)}.ui-rec__online{margin-left:auto;font-size:24rpx;color:var(--color-success-strong)}.ui-rec__online::before{content:'·';margin-right:4rpx}.ui-rec__meta{margin-top:5rpx;font-size:24rpx;color:var(--color-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ui-rec__reasons{display:flex;gap:7rpx;margin-top:8rpx;overflow:hidden}.ui-rec__reason{flex:none;padding:4rpx 9rpx;border-radius:12rpx;background:var(--color-accent-purple-light);color:var(--color-accent-purple-strong);font-size:24rpx;white-space:nowrap}.ui-rec__actions{width:var(--tap-min);display:flex;flex-direction:column;align-items:center;gap:7rpx}.compact-like{width:var(--tap-min);min-height:var(--tap-min);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);background:var(--color-primary-light);box-shadow:0 7rpx 18rpx rgba(255,79,145,.18);}.compact-like__icon{width:44rpx;height:44rpx}.compact-pass{font-size:24rpx;color:var(--color-text-tertiary);white-space:nowrap}
+40 -19
View File
@@ -1,31 +1,52 @@
/**
* 区块标题(全站所有页面共用,是排版层级的关键一环)
*
* 2026-09-22 修订:
* 1) 层级拉开:标题 36rpx→40rpx(--font-size-xl),与正文 32rpx / 卡片标题 28rpx
* 形成「区块标题 > 卡片标题 > 正文 > 元信息」四级阶梯。
* 旧值 36rpx 与卡片标题仅差 10rpx,层级读不出来。
* 2) 右侧 action 是全站最容易被忽略的触摸目标:只有 26rpx 文字高(约 13px),
* 远低于 44px 下限。改为 min-height:--tap-min,热区向上补白。
* 3) action 文字色原为 --color-primary(#E96B6B)=3.10:1,不达标,改 -strong。
*/
.ui-section {
display: flex;
align-items: center;
justify-content: space-between;
padding: var(--spacing-3) var(--spacing-page-x);
display:flex;
align-items:center;
justify-content:space-between;
padding:var(--spacing-2) var(--spacing-page-x);
}
.ui-section__left {
display: flex;
align-items: baseline;
display:flex;
align-items:baseline;
min-width:0;
}
.ui-section__title {
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
color: var(--color-text-primary);
font-size:var(--font-size-xl);
font-weight:var(--font-weight-semibold);
color:var(--color-text-strong);
letter-spacing:var(--letter-spacing-tight);
}
.ui-section__subtitle {
margin-left: var(--spacing-2);
font-size: var(--font-size-sm);
color: var(--color-text-tertiary);
margin-left:var(--spacing-2);
font-size:var(--font-size-xs);
color:var(--color-text-tertiary);
}
.ui-section__action {
display: flex;
align-items: center;
font-size: var(--font-size-sm);
color: var(--color-primary);
display:flex;
align-items:center;
flex:none;
min-height:var(--tap-min);
padding-left:var(--spacing-3);
font-size:var(--font-size-sm);
font-weight:var(--font-weight-medium);
color:var(--color-primary-strong);
transition:opacity var(--motion-fast) var(--ease-standard);
}
.ui-section__action:active {
opacity:var(--press-opacity);
}
.ui-section__arrow {
margin-left: 4rpx;
width: 24rpx;
height: 24rpx;
margin-left:4rpx;
width:24rpx;
height:24rpx;
}
+34 -34
View File
@@ -1,63 +1,63 @@
.service-hero {
position: relative;
height: 300rpx;
overflow: hidden;
border-radius: 0 0 32rpx 32rpx;
background: #fff4f7;
position:relative;
height:300rpx;
overflow:hidden;
border-radius:0 0 32rpx 32rpx;
background:var(--color-primary-light);
}
.service-hero__image,
.service-hero__veil {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
position:absolute;
inset:0;
width:100%;
height:100%;
}
.service-hero__veil {
background: linear-gradient(90deg, rgba(255, 250, 252, 0.98) 0%, rgba(255, 250, 252, 0.82) 38%, rgba(255, 250, 252, 0.08) 70%);
background:linear-gradient(90deg, rgba(255, 250, 252, 0.98) 0%, rgba(255, 250, 252, 0.82) 38%, rgba(255, 250, 252, 0.08) 70%);
}
.service-hero--night .service-hero__veil {
background: linear-gradient(90deg, rgba(18, 24, 83, 0.92) 0%, rgba(34, 31, 111, 0.64) 42%, rgba(34, 31, 111, 0.08) 72%);
background:linear-gradient(90deg, rgba(18, 24, 83, 0.92) 0%, rgba(34, 31, 111, 0.64) 42%, rgba(34, 31, 111, 0.08) 72%);
}
.service-hero__content {
position: relative;
z-index: 1;
display: flex;
flex-direction: column;
justify-content: center;
width: 54%;
height: 100%;
padding: 0 36rpx;
box-sizing: border-box;
position:relative;
z-index:1;
display:flex;
flex-direction:column;
justify-content:center;
width:54%;
height:100%;
padding:0 36rpx;
box-sizing:border-box;
}
.service-hero__eyebrow {
margin-bottom: 10rpx;
color: var(--color-primary);
font-size: 22rpx;
font-weight: 600;
letter-spacing: 2rpx;
margin-bottom:10rpx;
color:var(--color-primary-strong);
font-size:24rpx;
font-weight:600;
letter-spacing:2rpx;
}
.service-hero__title {
color: #24305e;
font-size: 40rpx;
font-weight: 700;
line-height: 1.28;
color:var(--color-text-strong);
font-size:40rpx;
font-weight:700;
line-height:1.28;
}
.service-hero__subtitle {
margin-top: 14rpx;
color: #737c96;
font-size: 24rpx;
line-height: 1.55;
margin-top:14rpx;
color:var(--color-text-tertiary);
font-size:24rpx;
line-height:1.55;
}
.service-hero--night .service-hero__eyebrow,
.service-hero--night .service-hero__title,
.service-hero--night .service-hero__subtitle {
color: #ffffff;
color:var(--color-text-inverse);
}
+24 -24
View File
@@ -1,40 +1,40 @@
.ui-badge {
display: inline-flex;
align-items: center;
padding: 4rpx 14rpx;
border-radius: var(--radius-full);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-medium);
line-height: 1.4;
white-space: nowrap;
display:inline-flex;
align-items:center;
padding:4rpx 14rpx;
border-radius:var(--radius-full);
font-size:var(--font-size-xs);
font-weight:var(--font-weight-medium);
line-height:1.4;
white-space:nowrap;
}
.ui-badge__dot {
width: 8rpx;
height: 8rpx;
border-radius: 50%;
background: currentColor;
margin-right: 8rpx;
width:8rpx;
height:8rpx;
border-radius:50%;
background:currentColor;
margin-right:8rpx;
}
.ui-badge__label {
font-size: inherit;
font-size:inherit;
}
.ui-badge--success {
background: var(--color-success-light);
color: var(--color-success);
background:var(--color-success-light);
color:var(--color-success-strong);
}
.ui-badge--warning {
background: var(--color-warning-light);
color: var(--color-warning);
background:var(--color-warning-light);
color:var(--color-warning-strong);
}
.ui-badge--danger {
background: var(--color-danger-light);
color: var(--color-danger);
background:var(--color-danger-light);
color:var(--color-danger-strong);
}
.ui-badge--info {
background: var(--color-info-light);
color: var(--color-info);
background:var(--color-info-light);
color:var(--color-info-strong);
}
.ui-badge--disabled {
background: var(--color-bg-disabled);
color: var(--color-text-disabled);
background:var(--color-bg-disabled);
color:var(--color-text-disabled);
}
@@ -1,67 +1,67 @@
.ui-success-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: var(--color-bg-overlay);
z-index: var(--z-modal);
display: flex;
align-items: center;
justify-content: center;
padding: 0 var(--spacing-6);
position:fixed;
top:0;
left:0;
right:0;
bottom:0;
background:var(--color-bg-overlay);
z-index:var(--z-modal);
display:flex;
align-items:center;
justify-content:center;
padding:0 var(--spacing-6);
}
.ui-success {
width: 100%;
max-width: 600rpx;
background: var(--color-bg-card);
border-radius: var(--radius-lg);
padding: var(--spacing-6) var(--spacing-4) var(--spacing-4);
text-align: center;
box-shadow: var(--shadow-popup);
animation: ui-success-in var(--motion-normal) var(--ease-standard);
width:100%;
max-width:600rpx;
background:var(--color-bg-card);
border-radius:var(--radius-lg);
padding:var(--spacing-6) var(--spacing-4) var(--spacing-4);
text-align:center;
box-shadow:var(--shadow-popup);
animation:ui-success-in var(--motion-normal) var(--ease-standard);
}
@keyframes ui-success-in {
from { transform: scale(0.92); opacity: 0; }
to { transform: scale(1); opacity: 1; }
from { transform:scale(0.92); opacity:0; }
to { transform:scale(1); opacity:1; }
}
.ui-success__heart {
width: 120rpx;
height: 120rpx;
margin: 0 auto var(--spacing-3);
background: var(--color-primary-light);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
width:120rpx;
height:120rpx;
margin:0 auto var(--spacing-3);
background:var(--color-primary-light);
border-radius:50%;
display:flex;
align-items:center;
justify-content:center;
}
.ui-success__heart-icon {
width: 56rpx;
height: 56rpx;
background: var(--color-primary);
clip-path: polygon(50% 100%, 0 38%, 18% 18%, 50% 38%, 82% 18%, 100% 38%);
width:56rpx;
height:56rpx;
background:var(--color-primary);
clip-path:polygon(50% 100%, 0 38%, 18% 18%, 50% 38%, 82% 18%, 100% 38%);
}
.ui-success__title {
font-size: var(--font-size-xl);
font-weight: var(--font-weight-semibold);
color: var(--color-text-primary);
margin-bottom: var(--spacing-2);
font-size:var(--font-size-xl);
font-weight:var(--font-weight-semibold);
color:var(--color-text-primary);
margin-bottom:var(--spacing-2);
}
.ui-success__content {
font-size: var(--font-size-md);
color: var(--color-text-secondary);
line-height: var(--line-height-relaxed);
margin-bottom: var(--spacing-2);
font-size:var(--font-size-md);
color:var(--color-text-secondary);
line-height:var(--line-height-relaxed);
margin-bottom:var(--spacing-2);
}
.ui-success__expires {
font-size: var(--font-size-xs);
color: var(--color-warning);
margin-bottom: var(--spacing-4);
font-size:var(--font-size-xs);
color:var(--color-warning-strong);
margin-bottom:var(--spacing-4);
}
.ui-success__actions {
display: flex;
gap: var(--spacing-2);
display:flex;
gap:var(--spacing-2);
}
.ui-success__btn {
flex: 1;
flex:1;
}
+31 -31
View File
@@ -1,46 +1,46 @@
.ui-tag {
display: inline-flex;
align-items: center;
padding: 10rpx 20rpx;
border-radius: var(--radius-full);
font-size: var(--font-size-sm);
line-height: 1.3;
background: var(--color-bg-disabled);
color: var(--color-text-secondary);
border: 1rpx solid transparent;
transition: all var(--motion-fast) var(--ease-standard);
user-select: none;
display:inline-flex;
align-items:center;
padding:10rpx 20rpx;
border-radius:var(--radius-full);
font-size:var(--font-size-sm);
line-height:1.3;
background:var(--color-bg-disabled);
color:var(--color-text-secondary);
border:1rpx solid transparent;
transition:all var(--motion-fast) var(--ease-standard);
user-select:none;
}
.ui-tag__label {
font-size: inherit;
font-size:inherit;
}
.ui-tag__close {
margin-left: 8rpx;
font-size: var(--font-size-md);
line-height: 1;
color: var(--color-text-tertiary);
width: 24rpx;
height: 24rpx;
display: flex;
align-items: center;
justify-content: center;
}
margin-left:8rpx;
font-size:var(--font-size-md);
line-height:1;
color:var(--color-text-tertiary);
width:24rpx;
min-height:var(--tap-min);
display:flex;
align-items:center;
justify-content:center;
min-width:var(--tap-min);}
.ui-tag--default.ui-tag--selected {
background: var(--color-primary-light);
color: var(--color-primary);
border-color: var(--color-primary);
background:var(--color-primary-light);
color:var(--color-primary-strong);
border-color:var(--color-primary);
}
.ui-tag--primary {
background: var(--color-primary);
color: #FFFFFF;
background:var(--color-primary-solid);
color:var(--color-text-inverse);
}
.ui-tag--primary.ui-tag--selected {
background: var(--color-primary-active);
background:var(--color-primary-active);
}
.ui-tag--disabled {
opacity: 0.55;
opacity:0.55;
}
.ui-tag--hover {
opacity: 0.85;
transform: scale(0.97);
opacity:0.85;
transform:scale(0.97);
}
+32 -32
View File
@@ -1,56 +1,56 @@
.ui-textarea {
padding: var(--spacing-3) 0;
border-bottom: 1rpx solid var(--color-border);
padding:var(--spacing-3) 0;
border-bottom:1rpx solid var(--color-border);
}
.ui-textarea__label {
font-size: var(--font-size-sm);
color: var(--color-text-tertiary);
margin-bottom: var(--spacing-2);
font-size:var(--font-size-sm);
color:var(--color-text-tertiary);
margin-bottom:var(--spacing-2);
}
.ui-textarea__field-wrap {
background: var(--color-bg-card);
border-radius: var(--radius-md);
padding: var(--spacing-2) var(--spacing-3);
border: 1rpx solid var(--color-border);
background:var(--color-bg-card);
border-radius:var(--radius-md);
padding:var(--spacing-2) var(--spacing-3);
border:1rpx solid var(--color-border);
}
.ui-textarea__field {
width: 100%;
font-size: var(--font-size-base);
color: var(--color-text-primary);
line-height: var(--line-height-normal);
min-height: 144rpx;
width:100%;
font-size:var(--font-size-base);
color:var(--color-text-primary);
line-height:var(--line-height-normal);
min-height:144rpx;
}
.ui-textarea__placeholder {
color: var(--color-text-placeholder);
color:var(--color-text-placeholder);
}
.ui-textarea__footer {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-top: var(--spacing-1);
min-height: 28rpx;
display:flex;
justify-content:space-between;
align-items:flex-start;
margin-top:var(--spacing-1);
min-height:28rpx;
}
.ui-textarea__error {
color: var(--color-danger);
font-size: var(--font-size-xs);
flex: 1;
color:var(--color-danger-strong);
font-size:var(--font-size-xs);
flex:1;
}
.ui-textarea__hint {
color: var(--color-warning);
font-size: var(--font-size-xs);
flex: 1;
color:var(--color-warning-strong);
font-size:var(--font-size-xs);
flex:1;
}
.ui-textarea__count {
color: var(--color-text-tertiary);
font-size: var(--font-size-xs);
margin-left: var(--spacing-2);
color:var(--color-text-tertiary);
font-size:var(--font-size-xs);
margin-left:var(--spacing-2);
}
.ui-textarea--error .ui-textarea__field-wrap {
border-color: var(--color-border-error);
border-color:var(--color-border-error);
}
.ui-textarea--disabled .ui-textarea__field {
color: var(--color-text-disabled);
color:var(--color-text-disabled);
}
.ui-textarea--disabled .ui-textarea__field-wrap {
background: var(--color-bg-disabled);
background:var(--color-bg-disabled);
}
+30 -30
View File
@@ -1,50 +1,50 @@
.ui-user-card {
display: flex;
align-items: center;
background: var(--color-bg-card);
min-height: 148rpx;
padding: 14rpx 18rpx;
border-bottom: 1rpx solid #F0F1F6;
display:flex;
align-items:center;
background:var(--color-bg-card);
min-height:148rpx;
padding:14rpx 18rpx;
border-bottom:1rpx solid var(--color-divider);
}
.ui-user-card__select {
margin-right: var(--spacing-3);
margin-right:var(--spacing-3);
}
.ui-user-card__checkbox {
transform: scale(.82);
transform:scale(.82);
}
.ui-user-card__body {
flex: 1;
min-width: 0;
margin-left: 16rpx;
flex:1;
min-width:0;
margin-left:16rpx;
}
.ui-user-card__name-row {
display: flex;
align-items: baseline;
margin-bottom: var(--spacing-1);
display:flex;
align-items:baseline;
margin-bottom:var(--spacing-1);
}
.ui-user-card__name {
font-size: 26rpx;
font-weight: 700;
color: #222746;
margin-right: var(--spacing-2);
font-size:26rpx;
font-weight:700;
color:var(--color-text-strong);
margin-right:var(--spacing-2);
}
.ui-user-card__age {
font-size: 21rpx;
color: #596079;
font-size:24rpx;
color:var(--color-text-secondary);
}
.ui-user-card__online {
margin-left: auto;
color: #39A987;
font-size: 18rpx;
margin-left:auto;
color:var(--color-success-strong);
font-size:24rpx;
}
.ui-user-card__meta {
font-size: 20rpx;
color: #767C94;
line-height: 1.4;
margin-top: 4rpx;
font-size:24rpx;
color:var(--color-text-tertiary);
line-height:1.4;
margin-top:4rpx;
}
.ui-user-card__actions {
flex-shrink: 0;
margin-left: var(--spacing-2);
flex-shrink:0;
margin-left:var(--spacing-2);
}
.ui-user-card__tags{display:flex;gap:7rpx;margin-top:8rpx;overflow:hidden}.ui-user-card__tag{flex:none;padding:4rpx 9rpx;border-radius:12rpx;background:#F3EEFF;color:#7860AE;font-size:17rpx;white-space:nowrap}
.ui-user-card__tags{display:flex;gap:7rpx;margin-top:8rpx;overflow:hidden}.ui-user-card__tag{flex:none;padding:4rpx 9rpx;border-radius:12rpx;background:var(--color-accent-purple-light);color:var(--color-accent-purple-strong);font-size:24rpx;white-space:nowrap}