Files
wxserver/pages/index/index.wxss
T
yuming 3f176924d0
部署到群晖 / deploy (push) Successful in 43s
视觉重构:紫渐变 SaaS 风 → 纸感编辑风(A 方案)
旧版多处违反 impeccable 设计规范(gradient text、6rpx 粗色条 border-left、
glassmorphism、bounce 动画)且整体呈现典型「AI/SaaS 通用紫渐变」(#6366f1 系、
#667eea 系),用户反馈「AI 味儿太浓」。

色板(OKLCH 概念,hex 落地):
- 背景:浅米黄 #FAF6ED
- 主文字:深墨蓝 #1F1D2B
- 暖灰副文字:#8A8278
- 强调(仅 today / FAB):墨红 #C8412F

涉及改动:
- app.wxss:删模板自带 .container padding 200rpx(首页/日历顶部空白真凶)+ 重写全局色板
- index.wxml/wxss:去紫渐变 Header + glassmorphism stats + border-left 大色条 + bounce
- calendar.wxml/wxss/json:去紫渐变月份头 + today 大色块 + section-title 6rpx 紫条
- settings.wxss:同款紫 Header + tips-card 6rpx 紫条 → 全卡边线 + 浅暖底
- add-anniversary.wxss:chip-active 紫 / 取消提交按钮渐变 / importance 高饱和色 → 统一
- add-person.wxss:gradient text + 紫 dashed 头像占位 + 多重渐变 → 全套重写
- person-detail.wxss:微信绿 + 灰底默认色 → 方向 A 色板
- utils/constants.js:IMPORTANCE_COLORS 高/中/低 = 墨红/焦糖/苔绿(替代橙红/橘/鲜绿)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-02 09:27:16 +08:00

394 lines
6.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* index.wxss
* 视觉方向:纸感编辑风(A 方案)
* - 浅米黄底(暖中性,反 SaaS 通用感)
* - 墨蓝主文字 + 暖灰副文字
* - 仅「今天/FAB」用墨红强调(Restrained,强调色占比 < 10%
* - 删除原 #6366f1→#8b5cf6 紫渐变、glassmorphism、bounce 动画、border-left 大色条
*/
page {
background: #FAF6ED;
}
.page {
display: flex;
flex-direction: column;
height: 100vh;
background: #FAF6ED;
}
/* ───── Header ───── */
.header {
padding: 56rpx 36rpx 24rpx;
flex-shrink: 0;
}
.header-title {
display: block;
font-size: 52rpx;
font-weight: 600;
color: #1F1D2B;
line-height: 1.15;
letter-spacing: -0.5rpx;
}
.header-date {
display: block;
font-size: 26rpx;
color: #8A8278;
margin-top: 10rpx;
}
.header-rule {
height: 1rpx;
background: #E8E2D5;
margin-top: 28rpx;
}
.stats-row {
display: flex;
gap: 64rpx;
padding-top: 24rpx;
}
.stat-item {
display: flex;
flex-direction: column;
gap: 4rpx;
}
.stat-num {
font-size: 44rpx;
font-weight: 600;
color: #1F1D2B;
line-height: 1;
letter-spacing: -1rpx;
}
.stat-num-urgent {
color: #C8412F;
}
.stat-label {
font-size: 24rpx;
color: #8A8278;
}
.stat-sep {
display: none;
}
/* ───── Search ───── */
.search-wrap {
padding: 16rpx 24rpx 8rpx;
flex-shrink: 0;
}
.search-box {
display: flex;
align-items: center;
background: #FFFFFF;
border: 1rpx solid #E8E2D5;
border-radius: 14rpx;
padding: 18rpx 24rpx;
}
.search-icon {
font-size: 30rpx;
margin-right: 14rpx;
opacity: 0.55;
}
.search-input {
flex: 1;
font-size: 28rpx;
color: #1F1D2B;
line-height: 1.5;
}
.search-placeholder {
color: #A9A096;
}
/* ───── Filter ───── */
.filter-scroll {
flex-shrink: 0;
white-space: nowrap;
}
.filter-bar {
display: flex;
padding: 16rpx 24rpx 8rpx;
gap: 36rpx;
}
.filter-tab {
display: inline-flex;
align-items: center;
padding: 10rpx 0;
font-size: 28rpx;
color: #8A8278;
background: transparent;
white-space: nowrap;
flex-shrink: 0;
border-bottom: 4rpx solid transparent;
transition: color 0.2s cubic-bezier(0.22, 1, 0.36, 1);
}
.tab-active {
color: #1F1D2B;
font-weight: 600;
border-bottom-color: #1F1D2B;
}
/* ───── List ───── */
.list {
flex: 1;
overflow: hidden;
padding: 16rpx 24rpx 0;
}
/* ───── Card ───── */
.card {
display: flex;
align-items: center;
background: #FFFFFF;
border: 1rpx solid #E8E2D5;
border-radius: 14rpx;
padding: 24rpx 24rpx 24rpx 20rpx;
margin-bottom: 16rpx;
transition: transform 0.15s cubic-bezier(0.22, 1, 0.36, 1);
}
.card:active {
transform: scale(0.985);
}
/* 强调用整卡背景 tint,不再用粗 border-left(绝对禁用项之一) */
.card-urgent {
background: #FFF8EE;
border-color: #EFD9B5;
}
.card-today {
background: #FFF1EA;
border-color: #E8BCA7;
}
/* ───── Avatar ───── */
.avatar-wrap {
width: 88rpx;
height: 88rpx;
border-radius: 50%;
margin-right: 20rpx;
flex-shrink: 0;
overflow: hidden;
}
.avatar-img {
width: 100%;
height: 100%;
border-radius: 50%;
}
.avatar-placeholder {
width: 100%;
height: 100%;
border-radius: 50%;
background: #EFE9DC;
display: flex;
align-items: center;
justify-content: center;
}
.avatar-initial {
font-size: 36rpx;
font-weight: 600;
color: #5A5247;
}
/* ───── Card body ───── */
.card-body {
flex: 1;
min-width: 0;
}
.card-row-top {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 8rpx;
}
.name-group {
display: flex;
align-items: center;
gap: 12rpx;
min-width: 0;
flex: 1;
margin-right: 16rpx;
}
.card-name {
font-size: 32rpx;
font-weight: 600;
color: #1F1D2B;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.card-nickname {
font-size: 22rpx;
color: #8A8278;
background: #F2EEE5;
padding: 3rpx 12rpx;
border-radius: 18rpx;
white-space: nowrap;
flex-shrink: 0;
}
/* ───── Badge ───── */
.badge {
display: inline-flex;
align-items: center;
padding: 6rpx 16rpx;
border-radius: 20rpx;
flex-shrink: 0;
}
.badge-text {
font-size: 22rpx;
font-weight: 600;
white-space: nowrap;
}
.badge-today {
background: #FFE3D7;
}
.badge-today .badge-text {
color: #C8412F;
}
.badge-hot {
background: #FFEFD9;
}
.badge-hot .badge-text {
color: #B36A1F;
}
.badge-soon {
background: #FAF1D9;
}
.badge-soon .badge-text {
color: #8C7322;
}
.badge-month {
background: #ECE6D7;
}
.badge-month .badge-text {
color: #6F664E;
}
.badge-normal {
background: #F2EEE5;
}
.badge-normal .badge-text {
color: #8A8278;
}
/* ───── Anniversary row ───── */
.card-row-ann {
display: flex;
align-items: center;
gap: 8rpx;
}
.ann-icon {
font-size: 26rpx;
flex-shrink: 0;
}
.ann-info {
font-size: 26rpx;
color: #5A5247;
flex: 1;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.muted {
color: #A9A096;
}
.ann-more {
font-size: 22rpx;
color: #8A8278;
background: #F2EEE5;
padding: 3rpx 12rpx;
border-radius: 18rpx;
flex-shrink: 0;
}
/* ───── Empty state ───── */
.empty {
display: flex;
flex-direction: column;
align-items: center;
padding: 160rpx 40rpx 80rpx;
}
.empty-icon {
font-size: 104rpx;
margin-bottom: 28rpx;
opacity: 0.7;
}
.empty-title {
font-size: 30rpx;
font-weight: 600;
color: #5A5247;
margin-bottom: 12rpx;
}
.empty-hint {
font-size: 24rpx;
color: #A9A096;
}
/* ───── List bottom padding ───── */
.list-bottom {
height: 180rpx;
}
/* ───── FAB ───── */
.fab {
position: fixed;
bottom: 64rpx;
right: 36rpx;
width: 104rpx;
height: 104rpx;
border-radius: 50%;
background: #1F1D2B;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 10rpx 28rpx rgba(31, 29, 43, 0.32);
z-index: 100;
transition: transform 0.2s cubic-bezier(0.22, 1, 0.36, 1);
}
.fab:active {
transform: scale(0.93);
}
.fab-icon {
font-size: 56rpx;
color: #FAF6ED;
font-weight: 300;
line-height: 1;
margin-top: -4rpx;
}