Procházet zdrojové kódy

refactor(beautify): D30 第六轮令牌收割 (hex 1129->1034)

- uni.scss 新增 10 个高频令牌:\-peach/\-steel/\-ink/\-steel/
  \-tint-100/\-warm/\-danger/\-red/\-ghost-soft/\-charcoal
  (均 ≥3 文件复用,附文件数注释)
- replace-hex-to-token.js 新增第六轮 22 条规则(含 \-success-3 #52C41A)
- 61 个文件 98 处 style 块 hex 收编
- 全站硬编码色 1129 -> 1034;P2 44->34;uni.scss dart-sass 编译通过
liaoxg před 5 dny
rodič
revize
f024b1bb76
63 změnil soubory, kde provedl 132 přidání a 98 odebrání
  1. 1 1
      cfc-frontend/components/login-sheet.vue
  2. 2 2
      cfc-frontend/components/wuxing-sandbox.vue
  3. 3 3
      cfc-frontend/pages/article-center/index.vue
  4. 1 1
      cfc-frontend/pages/assessment/quota.vue
  5. 1 1
      cfc-frontend/pages/cognitive-hall.vue
  6. 1 1
      cfc-frontend/pages/cognitive-test/language-test.vue
  7. 1 1
      cfc-frontend/pages/cognitive-test/perception-test.vue
  8. 1 1
      cfc-frontend/pages/cognitive-test/speed-test.vue
  9. 2 2
      cfc-frontend/pages/diet/food-query.vue
  10. 1 1
      cfc-frontend/pages/diet/index.vue
  11. 1 1
      cfc-frontend/pages/diet/recommendation.vue
  12. 3 3
      cfc-frontend/pages/discover/circle-feed.vue
  13. 2 2
      cfc-frontend/pages/discover/create-circle.vue
  14. 1 1
      cfc-frontend/pages/energy/detail.vue
  15. 2 2
      cfc-frontend/pages/games/1a2b.vue
  16. 1 1
      cfc-frontend/pages/games/list.vue
  17. 2 2
      cfc-frontend/pages/games/schulte.vue
  18. 4 4
      cfc-frontend/pages/games/sudoku.vue
  19. 1 1
      cfc-frontend/pages/growth/caution-detail.vue
  20. 1 1
      cfc-frontend/pages/guide/packages/detail.vue
  21. 1 1
      cfc-frontend/pages/guide/packages/index.vue
  22. 1 1
      cfc-frontend/pages/guide/packages/share.vue
  23. 1 1
      cfc-frontend/pages/health/gut-flora-foods-detail.vue
  24. 1 1
      cfc-frontend/pages/health/meditation-index.vue
  25. 1 1
      cfc-frontend/pages/health/my-feedback.vue
  26. 3 3
      cfc-frontend/pages/health/plan-list.vue
  27. 1 1
      cfc-frontend/pages/health/report-detail.vue
  28. 3 3
      cfc-frontend/pages/health/report-list.vue
  29. 2 2
      cfc-frontend/pages/health/report-upload.vue
  30. 1 1
      cfc-frontend/pages/invite/join-form.vue
  31. 1 1
      cfc-frontend/pages/meal/log.vue
  32. 1 1
      cfc-frontend/pages/meal/preference.vue
  33. 1 1
      cfc-frontend/pages/meal/recipe-detail.vue
  34. 2 2
      cfc-frontend/pages/meal/recommend.vue
  35. 2 2
      cfc-frontend/pages/membership/upgrade.vue
  36. 1 1
      cfc-frontend/pages/mind-detail/emotion-checkin.vue
  37. 1 1
      cfc-frontend/pages/parent/appointments.vue
  38. 1 1
      cfc-frontend/pages/parent/wishes/index.vue
  39. 2 2
      cfc-frontend/pages/profile-extra/family-members.vue
  40. 1 1
      cfc-frontend/pages/profile/report-management.vue
  41. 1 1
      cfc-frontend/pages/promotion/index.vue
  42. 1 1
      cfc-frontend/pages/psych-assessment/index.vue
  43. 1 1
      cfc-frontend/pages/shop/after-sales-detail/after-sales-detail.vue
  44. 1 1
      cfc-frontend/pages/shop/after-sales/after-sales.vue
  45. 1 1
      cfc-frontend/pages/shop/checkout/checkout.vue
  46. 1 1
      cfc-frontend/pages/shop/consignee-list/consignee-list.vue
  47. 1 1
      cfc-frontend/pages/shop/logistics/logistics.vue
  48. 1 1
      cfc-frontend/pages/shop/order-detail/order-detail.vue
  49. 2 2
      cfc-frontend/pages/shop/order-list/order-list.vue
  50. 1 1
      cfc-frontend/pages/shop/payment/payment.vue
  51. 1 1
      cfc-frontend/pages/teacher/messages.vue
  52. 4 4
      cfc-frontend/pages/teacher/plan-create.vue
  53. 3 3
      cfc-frontend/pages/teacher/plan-detail.vue
  54. 3 3
      cfc-frontend/pages/teacher/plan-list.vue
  55. 6 6
      cfc-frontend/pages/teacher/review-family.vue
  56. 5 5
      cfc-frontend/pages/teacher/review-workbench.vue
  57. 1 1
      cfc-frontend/pages/user-edit/user-edit.vue
  58. 1 1
      cfc-frontend/pages/vendor/order-review/order-review.vue
  59. 1 1
      cfc-frontend/pages/vendor/orders/orders.vue
  60. 1 1
      cfc-frontend/pages/vendor/products/products.vue
  61. 1 1
      cfc-frontend/pages/wishes/detail.vue
  62. 23 0
      cfc-frontend/scripts/replace-hex-to-token.js
  63. 11 0
      cfc-frontend/uni.scss

+ 1 - 1
cfc-frontend/components/login-sheet.vue

@@ -421,7 +421,7 @@ export default {
 }
 .phone-btn[disabled] {
   background: #e0d8cc !important;
-  color: #aaa !important;
+  color: $text-ghost-soft !important;
 }
 .phone-btn-icon {
   margin-right: 8rpx;

+ 2 - 2
cfc-frontend/components/wuxing-sandbox.vue

@@ -721,7 +721,7 @@ export default {
 }
 .point-dot--fire { background: linear-gradient(135deg, $mind-accent, $mat-orange-strong); }
 .point-dot--water { background: linear-gradient(135deg, #42A5F5, $mat-blue-strong); }
-.point-dot--earth { background: linear-gradient(135deg, #8D6E63, #5D4037); }
+.point-dot--earth { background: linear-gradient(135deg, $brown-warm, #5D4037); }
 .point-dot--metal { background: linear-gradient(135deg, $accent-gold, #FF8F00); }
 .point-dot--wood { background: linear-gradient(135deg, $mat-green, $mat-green-strong); }
 
@@ -770,7 +770,7 @@ export default {
 }
 .dim-item--wood { color: $mat-green; background: rgba(76,175,80,0.12); }
 .dim-item--fire { color: $mind-accent; background: rgba(255,107,53,0.12); }
-.dim-item--earth { color: #8D6E63; background: rgba(141,110,99,0.12); }
+.dim-item--earth { color: $brown-warm; background: rgba(141,110,99,0.12); }
 .dim-item--metal { color: $accent-gold; background: rgba(255,215,0,0.12); }
 .dim-item--water { color: #42A5F5; background: rgba(66,165,245,0.12); }
 

+ 3 - 3
cfc-frontend/pages/article-center/index.vue

@@ -368,7 +368,7 @@ onLoad(options) {
 .ac-nav-title {
   font-size: 32rpx;
   font-weight: bold;
-  color: #1a1a1a;
+  color: $text-charcoal;
   flex: 1;
   text-align: center;
 }
@@ -561,13 +561,13 @@ onLoad(options) {
 }
 .ac-card-readtime {
   font-size: 20rpx;
-  color: #aaa;
+  color: $text-ghost-soft;
 }
 .ac-card-title {
   display: block;
   font-size: calc(30rpx * var(--font-scale, 1));
   font-weight: 600;
-  color: #1a1a1a;
+  color: $text-charcoal;
   line-height: 1.45;
   margin-bottom: 10rpx;
   overflow: hidden;

+ 1 - 1
cfc-frontend/pages/assessment/quota.vue

@@ -199,7 +199,7 @@ export default {
   font-size: 32rpx;
 }
 .info-value.expired {
-  color: #F44336;
+  color: $mat-red;
 }
 .card-actions {
   margin-top: 20rpx;

+ 1 - 1
cfc-frontend/pages/cognitive-hall.vue

@@ -158,7 +158,7 @@ export default {
 
 <style scoped lang="scss">
 // ===== 页面级局部调色板(单页专有色阶;同值才映射全局令牌,约定见 uni.scss §14) =====
-$c-text-ghost-3: #AAA;
+$c-text-ghost-3: $text-ghost-soft;
 $c-border-hair:  $facade-hairline-2;      // 发丝分隔线
 $c-ink-night:    $app-ink-night;   // 深夜蓝黑(本页深色文字)
 

+ 1 - 1
cfc-frontend/pages/cognitive-test/language-test.vue

@@ -377,7 +377,7 @@ export default {
   justify-content: center;
   width: 47%;
   min-height: 120rpx;
-  background: #2a2a4a;
+  background: $game-ink;
   border-radius: 24rpx;
   border: 4rpx solid transparent;
   margin-bottom: 24rpx;

+ 1 - 1
cfc-frontend/pages/cognitive-test/perception-test.vue

@@ -375,7 +375,7 @@ export default {
   justify-content: center;
   width: 30%;
   height: 190rpx;
-  background: #2a2a4a;
+  background: $game-ink;
   border-radius: 24rpx;
   border: 4rpx solid transparent;
   margin-bottom: 24rpx;

+ 1 - 1
cfc-frontend/pages/cognitive-test/speed-test.vue

@@ -481,7 +481,7 @@ export default {
   display: flex;
   align-items: center;
   justify-content: center;
-  background: #2a2a4a;
+  background: $game-ink;
   border: 2rpx solid transparent;
   border-radius: 20rpx;
   margin-bottom: 30rpx;

+ 2 - 2
cfc-frontend/pages/diet/food-query.vue

@@ -654,7 +654,7 @@ export default {
 .food-name {
   font-size: 28rpx;
   font-weight: 600;
-  color: #1a1a1a;
+  color: $text-charcoal;
   display: block;
   white-space: nowrap;
   overflow: hidden;
@@ -700,7 +700,7 @@ export default {
 }
 .badge-unsuitable {
   background: $fortune-0-tint;
-  color: #F44336;
+  color: $mat-red;
 }
 
 /* 空状态 */

+ 1 - 1
cfc-frontend/pages/diet/index.vue

@@ -767,7 +767,7 @@ export default {
 .food-tag {
   font-size: 22rpx;
   color: $dim-body;
-  background: #FFF0E0;
+  background: $warm-peach;
   padding: 6rpx 16rpx;
   border-radius: 20rpx;
 }

+ 1 - 1
cfc-frontend/pages/diet/recommendation.vue

@@ -393,7 +393,7 @@ export default {
 .action-btn { padding: 12rpx 26rpx; border-radius: 999rpx; font-size: 24rpx; }
 .like-btn { background: $mat-green-tint; color: $mat-green; }
 .swap-btn { background: #E8F1FB; color: $mat-blue-base; }
-.skip-btn { background: $fortune-0-tint; color: #F44336; }
+.skip-btn { background: $fortune-0-tint; color: $mat-red; }
 .nutrition-grid {
   display: flex;
   justify-content: space-around;

+ 3 - 3
cfc-frontend/pages/discover/circle-feed.vue

@@ -584,7 +584,7 @@ export default {
   font-size: 20rpx;
   padding: 4rpx 12rpx;
   border-radius: 12rpx;
-  background: #FFF0E0;
+  background: $warm-peach;
   color: $dim-body;
 }
 
@@ -698,7 +698,7 @@ export default {
   border-radius: 16rpx;
   border: 2rpx solid transparent;
 }
-.type-active { border-color: $dim-body; background: #FFF0E0; }
+.type-active { border-color: $dim-body; background: $warm-peach; }
 .to-icon { font-size: 36rpx; margin-bottom: 6rpx; }
 .to-label { font-size: calc(22rpx * var(--font-scale, 1)); color: $facade-text-body; }
 .post-textarea {
@@ -746,5 +746,5 @@ export default {
   margin-right: 16rpx;
 }
 .mi-name { font-size: calc(26rpx * var(--font-scale, 1)); color: $facade-text-strong; flex: 1; }
-.mi-role { font-size: calc(20rpx * var(--font-scale, 1)); color: $dim-body; background: #FFF0E0; padding: 4rpx 12rpx; border-radius: 12rpx; }
+.mi-role { font-size: calc(20rpx * var(--font-scale, 1)); color: $dim-body; background: $warm-peach; padding: 4rpx 12rpx; border-radius: 12rpx; }
 </style>

+ 2 - 2
cfc-frontend/pages/discover/create-circle.vue

@@ -143,7 +143,7 @@ export default {
 .form-item { padding: 24rpx 0; border-bottom: 1rpx solid $facade-fill-2; }
 .form-item:last-child { border-bottom: none; }
 .form-label { font-size: 28rpx; font-weight: 600; color: $facade-text-strong; display: block; margin-bottom: 16rpx; }
-.required { color: #F44336; }
+.required { color: $mat-red; }
 .form-input {
   width: 100%; height: 72rpx; background: $facade-fill-2; border-radius: 12rpx;
   padding: 0 20rpx; font-size: 28rpx; box-sizing: border-box;
@@ -158,7 +158,7 @@ export default {
   padding: 20rpx 28rpx; margin-right: 16rpx; margin-bottom: 16rpx;
   background: $facade-fill-2; border-radius: 16rpx; border: 2rpx solid transparent;
 }
-.type-active { border-color: $dim-body; background: #FFF0E0; }
+.type-active { border-color: $dim-body; background: $warm-peach; }
 .to-icon { font-size: 40rpx; margin-bottom: 8rpx; }
 .to-label { font-size: 24rpx; color: $facade-text-body; }
 .join-options { display: flex; flex-direction: column; }

+ 1 - 1
cfc-frontend/pages/energy/detail.vue

@@ -167,7 +167,7 @@ export default {
 }
 .dim-icon--fire { background: linear-gradient(135deg, $mind-accent, $mat-orange-strong); }
 .dim-icon--water { background: linear-gradient(135deg, #42A5F5, $mat-blue-strong); }
-.dim-icon--earth { background: linear-gradient(135deg, #8D6E63, #5D4037); }
+.dim-icon--earth { background: linear-gradient(135deg, $brown-warm, #5D4037); }
 .dim-icon--metal { background: linear-gradient(135deg, $accent-gold, #FF8F00); }
 .dim-icon--wood { background: linear-gradient(135deg, $mat-green, $mat-green-strong); }
 .dim-icon { font-size: 44rpx; }

+ 2 - 2
cfc-frontend/pages/games/1a2b.vue

@@ -228,7 +228,7 @@ export default {
   margin-bottom: 30rpx;
 }
 .info-text {
-  color: #aaa;
+  color: $text-ghost-soft;
   font-size: 28rpx;
   display: block;
   margin-bottom: 10rpx;
@@ -282,7 +282,7 @@ export default {
   justify-content: center;
 }
 .result-content {
-  background: #2a2a4a;
+  background: $game-ink;
   padding: 60rpx;
   border-radius: 20rpx;
   text-align: center;

+ 1 - 1
cfc-frontend/pages/games/list.vue

@@ -136,7 +136,7 @@ export default {
 }
 
 .game-card {
-  background: linear-gradient(135deg, #2a2a4a 0%, #1a1a3a 100%);
+  background: linear-gradient(135deg, $game-ink 0%, #1a1a3a 100%);
   border-radius: 20rpx;
   padding: 30rpx;
   display: flex;

+ 2 - 2
cfc-frontend/pages/games/schulte.vue

@@ -215,7 +215,7 @@ export default {
 
 .grid-cell {
   aspect-ratio: 1;
-  background: #2a2a4a;
+  background: $game-ink;
   display: flex;
   align-items: center;
   justify-content: center;
@@ -268,7 +268,7 @@ export default {
 }
 
 .result-content {
-  background: #2a2a4a;
+  background: $game-ink;
   padding: 60rpx;
   border-radius: 20rpx;
   text-align: center;

+ 4 - 4
cfc-frontend/pages/games/sudoku.vue

@@ -352,7 +352,7 @@ export default {
 }
 
 .level-btn {
-  background: #2a2a4a;
+  background: $game-ink;
   color: $app-surface;
   padding: 15rpx 40rpx;
   border-radius: 30rpx;
@@ -365,7 +365,7 @@ export default {
 }
 
 .board {
-  background: #2a2a4a;
+  background: $game-ink;
   padding: 10rpx;
   border-radius: 10rpx;
   display: inline-block;
@@ -411,7 +411,7 @@ export default {
 .num-btn {
   width: 80rpx;
   height: 80rpx;
-  background: #2a2a4a;
+  background: $game-ink;
   color: $app-surface;
   border-radius: 10rpx;
   display: flex;
@@ -451,7 +451,7 @@ export default {
 }
 
 .result-content {
-  background: #2a2a4a;
+  background: $game-ink;
   padding: 60rpx;
   border-radius: 20rpx;
   text-align: center;

+ 1 - 1
cfc-frontend/pages/growth/caution-detail.vue

@@ -300,7 +300,7 @@ export default {
 .food-name {
   font-size: 32rpx;
   font-weight: 600;
-  color: #1a1a1a;
+  color: $text-charcoal;
 }
 .score-badge-group {
   display: flex;

+ 1 - 1
cfc-frontend/pages/guide/packages/detail.vue

@@ -229,7 +229,7 @@ export default {
 .item-info { display: flex; gap: 20rpx; font-size: 24rpx; color: $facade-text-body; margin-bottom: 12rpx; }
 .item-actions { display: flex; gap: 20rpx; justify-content: flex-end; }
 .action-edit { color: $mat-green; font-size: 26rpx; }
-.action-delete { color: #f44336; font-size: 26rpx; }
+.action-delete { color: $mat-red; font-size: 26rpx; }
 .empty-items { text-align: center; padding: 40rpx; color: $facade-text-muted; }
 
 .popup-content { background: $app-surface; border-radius: 24rpx 24rpx 0 0; padding: 30rpx; max-height: 80vh; overflow-y: auto; }

+ 1 - 1
cfc-frontend/pages/guide/packages/index.vue

@@ -178,7 +178,7 @@ export default {
 .package-status.draft { background: $facade-fill; color: $facade-text-body; }
 .package-status.pending { background: $fortune-1-tint; color: $mat-orange-base; }
 .package-status.approved { background: $mat-green-tint; color: $mat-green; }
-.package-status.rejected { background: $fortune-0-tint; color: #f44336; }
+.package-status.rejected { background: $fortune-0-tint; color: $mat-red; }
 .package-status.offline { background: $facade-fill-2; color: $facade-text-muted; }
 
 .package-info {

+ 1 - 1
cfc-frontend/pages/guide/packages/share.vue

@@ -180,7 +180,7 @@ export default {
 .name { font-size: 34rpx; font-weight: bold; color: $facade-text-strong; display: block; margin-bottom: 10rpx; }
 .desc { font-size: 26rpx; color: $facade-text-body; display: block; margin-bottom: 20rpx; }
 .meta { display: flex; align-items: center; gap: 20rpx; font-size: 26rpx; }
-.price { font-size: 34rpx; color: #f44336; font-weight: bold; }
+.price { font-size: 34rpx; color: $mat-red; font-weight: bold; }
 
 .share-options { background: $app-surface; border-radius: 16rpx; padding: 30rpx; }
 .section-title { font-size: 30rpx; font-weight: bold; display: block; margin-bottom: 20rpx; }

+ 1 - 1
cfc-frontend/pages/health/gut-flora-foods-detail.vue

@@ -450,7 +450,7 @@ methods: {
 .food-card.band-null { border-left-color: $facade-text-ghost; }
 
 .food-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8rpx; }
-.food-name { font-size: calc(30rpx * var(--font-scale, 1)); font-weight: 600; color: #1a1a1a; flex: 1; min-width: 0; }
+.food-name { font-size: calc(30rpx * var(--font-scale, 1)); font-weight: 600; color: $text-charcoal; flex: 1; min-width: 0; }
 .food-right { display: flex; align-items: center; gap: 10rpx; flex-shrink: 0; }
 
 .status-tag {

+ 1 - 1
cfc-frontend/pages/health/meditation-index.vue

@@ -238,7 +238,7 @@ function healthRequest(url, data) {
   margin-bottom: 12rpx;
 }
 .type-active {
-  background: #EDE9FE;
+  background: $violet-tint-100;
   color: $dim-wisdom;
   font-weight: 500;
 }

+ 1 - 1
cfc-frontend/pages/health/my-feedback.vue

@@ -172,7 +172,7 @@ export default {
 }
 .mf-empty-hint {
   font-size: 24rpx;
-  color: #aaa;
+  color: $text-ghost-soft;
   text-align: center;
   line-height: 1.6;
 }

+ 3 - 3
cfc-frontend/pages/health/plan-list.vue

@@ -148,13 +148,13 @@ export default {
 .title {
   font-size: 36rpx;
   font-weight: bold;
-  color: #1F2D3D;
+  color: $ink-steel;
   display: block;
 }
 
 .subtitle {
   font-size: 26rpx;
-  color: #8A94A6;
+  color: $text-steel;
   margin-top: 8rpx;
   display: block;
 }
@@ -183,7 +183,7 @@ export default {
 
 .loading-text {
   font-size: 28rpx;
-  color: #8A94A6;
+  color: $text-steel;
 }
 
 .empty-icon {

+ 1 - 1
cfc-frontend/pages/health/report-detail.vue

@@ -1314,7 +1314,7 @@ $c-rptd-orange-1:    #FF8A65; // 低档渐变起
 $c-rptd-orange-2:    #FF5722; // 低档渐变终(deep-orange-500)
 $c-rptd-red-1:       #EF9A9A; // 无档渐变起
 $c-rptd-red-2:       #E53935; // 无档渐变终
-$c-rptd-orange-tint: #FFF0E0; // 浅橙底(提示卡)
+$c-rptd-orange-tint: $warm-peach; // 浅橙底(提示卡)
 $c-rptd-orange-line: #FFD4A8; // 暖橙描边
 
 .page {

+ 3 - 3
cfc-frontend/pages/health/report-list.vue

@@ -774,7 +774,7 @@ export default {
 .swipe-delete {
   width: 80px;
   height: 100%;
-  background: #F56C6C;
+  background: $el-danger;
   color: $app-surface;
   font-size: 28rpx;
   display: flex;
@@ -855,7 +855,7 @@ export default {
 }
 .report-upload-date {
   font-size: 22rpx;
-  color: #AAA;
+  color: $text-ghost-soft;
   margin-top: 2rpx;
 }
 .report-card-right {
@@ -966,7 +966,7 @@ export default {
 }
 .adjust-panel .cancel-bind-text {
   font-size: 28rpx;
-  color: #F56C6C;
+  color: $el-danger;
 }
 .adjust-panel .cancel-bind-arrow {
   font-size: 32rpx;

+ 2 - 2
cfc-frontend/pages/health/report-upload.vue

@@ -524,7 +524,7 @@ if (options.type === 'a2' || options.reportKind === 'a2') {
   min-width: 120rpx;
 }
 .member-selected {
-  background: #EDE9FE;
+  background: $violet-tint-100;
   border-color: $facade-violet;
 }
 .member-hover {
@@ -824,7 +824,7 @@ if (options.type === 'a2' || options.reportKind === 'a2') {
 .guide-icon-blue { background: $status-info-soft; }
 .guide-icon-green { background: $status-success-soft-2; }
 .guide-icon-orange { background: $facade-brand-tint-2; }
-.guide-icon-purple { background: #EDE9FE; }
+.guide-icon-purple { background: $violet-tint-100; }
 .guide-icon-teal { background: #CCFBF1; }
 .guide-info {
   flex: 1;

+ 1 - 1
cfc-frontend/pages/invite/join-form.vue

@@ -190,7 +190,7 @@ export default {
 	margin-bottom: 16rpx;
 }
 .required {
-	color: #f44336;
+	color: $mat-red;
 }
 .input, .picker-input {
 	padding: 28rpx 24rpx;

+ 1 - 1
cfc-frontend/pages/meal/log.vue

@@ -242,7 +242,7 @@ export default {
   font-size: 28rpx;
   color: var(--color-primary, $brand-primary);
   padding: 10rpx 20rpx;
-  background: #FFF0E0;
+  background: $warm-peach;
   border-radius: 8rpx;
 }
 .submit-btn {

+ 1 - 1
cfc-frontend/pages/meal/preference.vue

@@ -194,7 +194,7 @@ export default {
   font-size: 28rpx;
   color: var(--color-primary, $brand-primary);
   padding: 16rpx 20rpx;
-  background: #FFF0E0;
+  background: $warm-peach;
   border-radius: 8rpx;
 }
 .checkbox-row {

+ 1 - 1
cfc-frontend/pages/meal/recipe-detail.vue

@@ -206,7 +206,7 @@ export default {
   border-radius: 6rpx;
 }
 .tag-sec {
-  background: #FFF0E0;
+  background: $warm-peach;
   color: var(--color-primary, $brand-primary);
 }
 .section {

+ 2 - 2
cfc-frontend/pages/meal/recommend.vue

@@ -163,7 +163,7 @@ export default {
   font-size: calc(28rpx * var(--font-scale, 1));
   color: var(--color-primary, $brand-primary);
   padding: 10rpx 20rpx;
-  background: #FFF0E0;
+  background: $warm-peach;
   border-radius: 8rpx;
 }
 .input {
@@ -231,7 +231,7 @@ export default {
 }
 .replace-item-hover {
   opacity: 0.8;
-  background: #FFF0E0;
+  background: $warm-peach;
 }
 .food-name {
   font-size: calc(28rpx * var(--font-scale, 1));

+ 2 - 2
cfc-frontend/pages/membership/upgrade.vue

@@ -502,7 +502,7 @@ export default {
   font-weight: 600;
 }
 .cell-premium.active {
-  background: #EDE9FE;
+  background: $violet-tint-100;
   color: $facade-violet;
   font-weight: 600;
 }
@@ -528,7 +528,7 @@ export default {
   color: $brand-primary;
 }
 .header-row .cell-premium.active {
-  background: #EDE9FE;
+  background: $violet-tint-100;
   color: $facade-violet;
 }
 

+ 1 - 1
cfc-frontend/pages/mind-detail/emotion-checkin.vue

@@ -815,7 +815,7 @@ import { body, danger, success } from '@/utils/brand-colors.js'
 $c-tint-magenta: #FFF0FF;   // 效价-激活度网格渐变 25% 档
 $c-tint-cream:   #FFFFF0;   // 效价-激活度网格渐变 100% 档
 $c-border-grid:  $facade-fill-4;   // 效价-激活度网格描边
-$c-text-aaa:     #AAA;      // 强度提示弱文字
+$c-text-aaa:     $text-ghost-soft;      // 强度提示弱文字
 $c-border-input: $facade-hairline;   // 自定义标签输入框描边
 
 .checkin-container {

+ 1 - 1
cfc-frontend/pages/parent/appointments.vue

@@ -184,7 +184,7 @@ export default {
 .status-1 { background: $mat-blue-tint; color: $mat-blue-base; }
 .status-2 { background: $mat-green-tint; color: $mat-green; }
 .status-3 { background: $facade-fill-2; color: #9E9E9E; }
-.status-4 { background: $fortune-0-tint; color: #F44336; }
+.status-4 { background: $fortune-0-tint; color: $mat-red; }
 
 .card-body {
   margin-bottom: 20rpx;

+ 1 - 1
cfc-frontend/pages/parent/wishes/index.vue

@@ -430,7 +430,7 @@ export default {
 .wish-status.pending_exchange { background: $status-warning-soft; color: $status-warning-deep; }
 .wish-status.approved { background: $status-info-soft; color: $status-info-deep; }
 .wish-status.exchanging { background: $status-info-soft; color: $status-info-deep; }
-.wish-status.fulfilled { background: #EDE9FE; color: #7C3AED; }
+.wish-status.fulfilled { background: $violet-tint-100; color: #7C3AED; }
 
 .wish-actions {
   display: flex;

+ 2 - 2
cfc-frontend/pages/profile-extra/family-members.vue

@@ -787,14 +787,14 @@ $c-fam-card:         #FFFCF5; // 卡片底(米白)
 $c-fam-line:         #F0EAE2; // 暖分隔线
 $c-fam-tint:         #FFF1E8; // 浅橙底
 $c-fam-violet-text:  #6D28D9; // 紫罗兰文字
-$c-fam-violet-bg:    #EDE9FE; // 紫罗兰底
+$c-fam-violet-bg:    $violet-tint-100; // 紫罗兰底
 $c-fam-violet-line:  #C7D2FE; // 紫罗兰深底(亲密条)
 $c-elm-info-bg:      #f0f9ff; // Element UI 信息浅底
 $c-elm-info-bg-2:    #EEF0FF; // Element UI 蓝浅底
 $c-elm-success-bg:   #f0f9eb; // Element UI 成功浅底
 $c-elm-success-text: #67c23a; // Element UI 成功文字
 $c-elm-danger-bg:    #fef0f0; // Element UI 危险浅底
-$c-elm-danger-text:  #f56c6c; // Element UI 危险文字
+$c-elm-danger-text:  $el-danger; // Element UI 危险文字
 
 .container {
   padding: 30rpx 30rpx 140rpx;

+ 1 - 1
cfc-frontend/pages/profile/report-management.vue

@@ -247,7 +247,7 @@ export default {
 
 .date-text {
   font-size: 24rpx;
-  color: #aaa;
+  color: $text-ghost-soft;
 }
 
 .card-right {

+ 1 - 1
cfc-frontend/pages/promotion/index.vue

@@ -975,7 +975,7 @@ export default {
 .icon-share { background: #E0F2FE; }
 .icon-team { background: #FCE7F3; }
 .icon-leaderboard { background: #FFF3CD; }
-.icon-records { background: #EDE9FE; }
+.icon-records { background: $violet-tint-100; }
 .menu-icon-text {
   font-size: 36rpx;
 }

+ 1 - 1
cfc-frontend/pages/psych-assessment/index.vue

@@ -390,7 +390,7 @@ export default {
 
 .scale-status-pending {
   font-size: 22rpx;
-  color: #aaa;
+  color: $text-ghost-soft;
   margin-top: 8rpx;
   display: block;
 }

+ 1 - 1
cfc-frontend/pages/shop/after-sales-detail/after-sales-detail.vue

@@ -230,7 +230,7 @@ export default {
 }
 .header-approved,
 .header-completed {
-  background: linear-gradient(135deg, #52c41a, #73d13d);
+  background: linear-gradient(135deg, $status-success-3, #73d13d);
 }
 .header-rejected {
   background: linear-gradient(135deg, #ff4d4f, #ff7875);

+ 1 - 1
cfc-frontend/pages/shop/after-sales/after-sales.vue

@@ -230,7 +230,7 @@ export default {
   background: $brand-primary-tint-2;
 }
 .status-approved {
-  color: #52c41a;
+  color: $status-success-3;
   background: #f6ffed;
 }
 .status-rejected {

+ 1 - 1
cfc-frontend/pages/shop/checkout/checkout.vue

@@ -1661,7 +1661,7 @@ showOnlineSlotPicker: function() {
   flex-shrink: 0;
 }
 .required-mark {
-  color: #f56c6c;
+  color: $el-danger;
 }
 .purchase-field-input {
   flex: 1;

+ 1 - 1
cfc-frontend/pages/shop/consignee-list/consignee-list.vue

@@ -198,7 +198,7 @@ export default {
 }
 .delete-btn {
   font-size: 26rpx;
-  color: #f56c6c;
+  color: $el-danger;
   padding: 8rpx 16rpx;
 }
 .arrow {

+ 1 - 1
cfc-frontend/pages/shop/logistics/logistics.vue

@@ -197,7 +197,7 @@ export default {
 }
 .status-completed {
   background: #f6ffed;
-  color: #52c41a;
+  color: $status-success-3;
 }
 .refresh-btn {
   font-size: 24rpx;

+ 1 - 1
cfc-frontend/pages/shop/order-detail/order-detail.vue

@@ -569,7 +569,7 @@ export default {
   border: none;
 }
 .btn-confirm-receive {
-  background: linear-gradient(135deg, #52c41a, #73d13d);
+  background: linear-gradient(135deg, $status-success-3, #73d13d);
   color: $app-surface;
   font-size: 28rpx;
   padding: 0 40rpx;

+ 2 - 2
cfc-frontend/pages/shop/order-list/order-list.vue

@@ -521,7 +521,7 @@ export default {
 }
 .product-name {
   font-size: 28rpx;
-  color: #1a1a1a;
+  color: $text-charcoal;
   font-weight: 500;
   line-height: 1.4;
   flex: 1;
@@ -567,7 +567,7 @@ export default {
   font-size: 20rpx;
 }
 .type-activity { background: $brand-primary-tint-2; color: $brand-primary; }
-.type-course { background: #EDE9FE; color: #7C3AED; }
+.type-course { background: $violet-tint-100; color: #7C3AED; }
 .type-physical { background: #E0F2FE; color: $status-info-deep-2; }
 .type-digital { background: $status-success-tint-2; color: $status-success-strong-2; }
 .type-service { background: $status-warning-soft; color: $status-warning-deep; }

+ 1 - 1
cfc-frontend/pages/shop/payment/payment.vue

@@ -432,7 +432,7 @@ export default {
 }
 .payment-checked {
   font-size: 32rpx;
-  color: #52c41a;
+  color: $status-success-3;
   font-weight: bold;
 }
 .pay-section {

+ 1 - 1
cfc-frontend/pages/teacher/messages.vue

@@ -91,7 +91,7 @@ export default {
   position: absolute;
   top: -10rpx;
   right: -10rpx;
-  background: #F56C6C;
+  background: $el-danger;
   color: $app-surface;
   font-size: 20rpx;
   min-width: 36rpx;

+ 4 - 4
cfc-frontend/pages/teacher/plan-create.vue

@@ -101,14 +101,14 @@ export default {
 
 .label {
   font-size: 28rpx;
-  color: #1F2D3D;
+  color: $ink-steel;
   display: block;
   margin-bottom: 12rpx;
   font-weight: 500;
 }
 
 .required {
-  color: #F44336;
+  color: $mat-red;
 }
 
 .input {
@@ -118,7 +118,7 @@ export default {
   border-radius: 12rpx;
   padding: 0 20rpx;
   font-size: 28rpx;
-  color: #1F2D3D;
+  color: $ink-steel;
   box-sizing: border-box;
 }
 
@@ -129,7 +129,7 @@ export default {
   border-radius: 12rpx;
   padding: 20rpx;
   font-size: 28rpx;
-  color: #1F2D3D;
+  color: $ink-steel;
   box-sizing: border-box;
 }
 

+ 3 - 3
cfc-frontend/pages/teacher/plan-detail.vue

@@ -136,10 +136,10 @@ export default {
 <style scoped lang="scss">
 .page { padding: 24rpx; background: $facade-fill-blue-ghost; min-height: 100vh; }
 .card { background: $app-surface; border-radius: 16rpx; padding: 24rpx; margin-bottom: 20rpx; }
-.title { font-size: 32rpx; font-weight: 600; color: #1F2D3D; display: block; margin-bottom: 12rpx; }
-.meta { font-size: 24rpx; color: #8A94A6; display: block; margin-bottom: 6rpx; }
+.title { font-size: 32rpx; font-weight: 600; color: $ink-steel; display: block; margin-bottom: 12rpx; }
+.meta { font-size: 24rpx; color: $text-steel; display: block; margin-bottom: 6rpx; }
 .label { font-size: 26rpx; color: #5A6478; display: block; margin-bottom: 12rpx; }
-.editor { width: 100%; min-height: 400rpx; font-size: 28rpx; color: #1F2D3D; padding: 16rpx; background: #F7F9FC; border-radius: 12rpx; }
+.editor { width: 100%; min-height: 400rpx; font-size: 28rpx; color: $ink-steel; padding: 16rpx; background: #F7F9FC; border-radius: 12rpx; }
 .actions { display: flex; flex-direction: row; flex-wrap: wrap; }
 .btn { flex: 1; text-align: center; padding: 20rpx 0; border-radius: 12rpx; font-size: 28rpx; margin-right: 16rpx; margin-bottom: 16rpx; min-width: 40%; }
 .btn.ghost { background: $app-surface; color: $brand-primary; border: 1rpx solid $brand-primary; }

+ 3 - 3
cfc-frontend/pages/teacher/plan-list.vue

@@ -118,13 +118,13 @@ export default {
 .title {
   font-size: 36rpx;
   font-weight: bold;
-  color: #1F2D3D;
+  color: $ink-steel;
   display: block;
 }
 
 .subtitle {
   font-size: 26rpx;
-  color: #8A94A6;
+  color: $text-steel;
   margin-top: 8rpx;
   display: block;
 }
@@ -153,7 +153,7 @@ export default {
 
 .loading-text {
   font-size: 28rpx;
-  color: #8A94A6;
+  color: $text-steel;
 }
 
 .empty-icon {

+ 6 - 6
cfc-frontend/pages/teacher/review-family.vue

@@ -175,19 +175,19 @@ export default {
 <style scoped lang="scss">
 .page { padding: 24rpx; background: $facade-fill-blue-ghost; min-height: 100vh; }
 .tabs { display: flex; flex-direction: row; background: $app-surface; border-radius: 12rpx; margin-bottom: 20rpx; }
-.tab { flex: 1; text-align: center; padding: 20rpx 0; font-size: 28rpx; color: #8A94A6; }
+.tab { flex: 1; text-align: center; padding: 20rpx 0; font-size: 28rpx; color: $text-steel; }
 .tab.active { color: $brand-primary; font-weight: 600; }
 .card { background: $app-surface; border-radius: 16rpx; padding: 24rpx; margin-bottom: 20rpx; }
 .row { display: flex; flex-direction: row; align-items: center; justify-content: space-between; margin-bottom: 12rpx; }
-.name { font-size: 30rpx; color: #1F2D3D; font-weight: 500; }
+.name { font-size: 30rpx; color: $ink-steel; font-weight: 500; }
 .badge { font-size: 22rpx; color: $uni-info; background: #EAF4FC; padding: 4rpx 12rpx; border-radius: 8rpx; }
-.badge.grey { color: #8A94A6; background: #F2F4F7; }
-.meta { font-size: 24rpx; color: #8A94A6; }
+.badge.grey { color: $text-steel; background: #F2F4F7; }
+.meta { font-size: 24rpx; color: $text-steel; }
 .member-bar { background: $app-surface; border-radius: 12rpx; padding: 20rpx 24rpx; margin-bottom: 20rpx; }
-.picker { font-size: 28rpx; color: #1F2D3D; }
+.picker { font-size: 28rpx; color: $ink-steel; }
 .actions { display: flex; flex-direction: row; margin-top: 16rpx; }
 .btn { flex: 1; text-align: center; padding: 16rpx 0; border-radius: 12rpx; font-size: 26rpx; margin-right: 16rpx; }
 .btn.ok { background: $brand-primary; color: $app-surface; }
 .btn.no { background: #F2F4F7; color: #5A6478; margin-right: 0; }
-.empty { text-align: center; color: #8A94A6; font-size: 28rpx; padding: 80rpx 0; }
+.empty { text-align: center; color: $text-steel; font-size: 28rpx; padding: 80rpx 0; }
 </style>

+ 5 - 5
cfc-frontend/pages/teacher/review-workbench.vue

@@ -80,12 +80,12 @@ export default {
 <style scoped lang="scss">
 .page { padding: 24rpx; background: $facade-fill-blue-ghost; min-height: 100vh; }
 .header { padding: 24rpx 8rpx; }
-.title { font-size: 36rpx; font-weight: 600; color: #1F2D3D; display: block; }
-.sub { font-size: 26rpx; color: #8A94A6; margin-top: 8rpx; display: block; }
+.title { font-size: 36rpx; font-weight: 600; color: $ink-steel; display: block; }
+.sub { font-size: 26rpx; color: $text-steel; margin-top: 8rpx; display: block; }
 .card { background: $app-surface; border-radius: 16rpx; padding: 24rpx; margin-bottom: 20rpx; }
 .row { display: flex; flex-direction: row; align-items: center; justify-content: space-between; margin-bottom: 12rpx; }
-.name { font-size: 30rpx; color: #1F2D3D; font-weight: 500; }
+.name { font-size: 30rpx; color: $ink-steel; font-weight: 500; }
 .badge { font-size: 22rpx; color: $uni-info; background: #EAF4FC; padding: 4rpx 12rpx; border-radius: 8rpx; }
-.meta { font-size: 24rpx; color: #8A94A6; }
-.empty { text-align: center; color: #8A94A6; font-size: 28rpx; padding: 80rpx 0; }
+.meta { font-size: 24rpx; color: $text-steel; }
+.empty { text-align: center; color: $text-steel; font-size: 28rpx; padding: 80rpx 0; }
 </style>

+ 1 - 1
cfc-frontend/pages/user-edit/user-edit.vue

@@ -839,7 +839,7 @@ bindReferralIfNotSelf(code).then(function(res) {
 }
 
 .required {
-	color: #f44336;
+	color: $mat-red;
 }
 
 .input, .picker-input {

+ 1 - 1
cfc-frontend/pages/vendor/order-review/order-review.vue

@@ -417,7 +417,7 @@ export default {
 }
 .coupon-tag {
   font-size: 26rpx;
-  color: #52c41a;
+  color: $status-success-3;
   background: #f6ffed;
   padding: 8rpx 20rpx;
   border-radius: 8rpx;

+ 1 - 1
cfc-frontend/pages/vendor/orders/orders.vue

@@ -240,7 +240,7 @@ export default {
 }
 .status-pending { background: $brand-primary-tint-2; color: #fa8c16; }
 .status-paid { background: #e6f7ff; color: $status-info-3; }
-.status-completed { background: #f6ffed; color: #52c41a; }
+.status-completed { background: #f6ffed; color: $status-success-3; }
 .order-body {
   display: flex;
   justify-content: space-between;

+ 1 - 1
cfc-frontend/pages/vendor/products/products.vue

@@ -273,7 +273,7 @@ export default {
 }
 .status-draft { background: $facade-fill-2; color: $facade-text-muted; }
 .status-pending { background: $brand-primary-tint-2; color: #fa8c16; }
-.status-approved { background: #f6ffed; color: #52c41a; }
+.status-approved { background: #f6ffed; color: $status-success-3; }
 .status-rejected { background: #fff2f0; color: #ff4d4f; }
 .status-on_shelf { background: #e6f7ff; color: $status-info-3; }
 .status-off_shelf { background: $facade-fill-2; color: $facade-text-muted; }

+ 1 - 1
cfc-frontend/pages/wishes/detail.vue

@@ -257,7 +257,7 @@ export default {
 .wish-status.active { background: $status-success-soft; color: $status-success-deep; }
 .wish-status.pending_exchange { background: $status-warning-soft; color: $status-warning-deep; }
 .wish-status.exchanging { background: $status-info-soft; color: $status-info-deep; }
-.wish-status.fulfilled { background: #EDE9FE; color: #7C3AED; }
+.wish-status.fulfilled { background: $violet-tint-100; color: #7C3AED; }
 
 .category-tag {
   font-size: 24rpx;

+ 23 - 0
cfc-frontend/scripts/replace-hex-to-token.js

@@ -252,6 +252,29 @@ const ALL_RULES = [
   ['#f9f9f9', '$facade-fill-ghost-2'],
   ['#EC4899', '$accent-pink'],
   ['#ec4899', '$accent-pink'],
+  // ---- 第六轮(新增全局令牌,2026-10-20)----
+  ['#FFF0E0', '$warm-peach'],
+  ['#fff0e0', '$warm-peach'],
+  ['#8A94A6', '$text-steel'],
+  ['#8a94a6', '$text-steel'],
+  ['#2A2A4A', '$game-ink'],
+  ['#2a2a4a', '$game-ink'],
+  ['#1F2D3D', '$ink-steel'],
+  ['#1f2d3d', '$ink-steel'],
+  ['#EDE9FE', '$violet-tint-100'],
+  ['#ede9fe', '$violet-tint-100'],
+  ['#8D6E63', '$brown-warm'],
+  ['#8d6e63', '$brown-warm'],
+  ['#F56C6C', '$el-danger'],
+  ['#f56c6c', '$el-danger'],
+  ['#F44336', '$mat-red'],
+  ['#f44336', '$mat-red'],
+  ['#52C41A', '$status-success-3'],
+  ['#52c41a', '$status-success-3'],
+  ['#1A1A1A', '$text-charcoal'],
+  ['#1a1a1a', '$text-charcoal'],
+  ['#AAA',    '$text-ghost-soft'],
+  ['#aaa',    '$text-ghost-soft'],
 ].sort((a, b) => b[0].length - a[0].length)
 
 const GRAY_RULES   = ALL_RULES.filter(r => { const i = ALL_RULES.indexOf(r); return i < 30 })

+ 11 - 0
cfc-frontend/uni.scss

@@ -620,6 +620,17 @@ $accent-navy:        #1E3A5F; // 深海军蓝渐变主色(4 文件;评分卡
 $tint-info-soft:     #E8F4FD; // 信息蓝浅底(article-edit + articles)
 $hint-cream-bg:      #FEF9E7; // 提示条奶油底(articles + shop/index)
 $warm-cream:         #FFF3E6; // 暖奶油底(饮食/健康问卷,4 文件)
+// ---- 第六轮高频补档(≥3 文件复用,2026-10-20)----
+$warm-peach:         #FFF0E0; // 暖桃色底(饮食/餐食/发现,9 文件)
+$text-steel:         #8A94A6; // 钢灰文字(成长规划师端,5 文件)
+$game-ink:           #2A2A4A; // 游戏深蓝黑(认知测评/小游戏,7 文件)
+$ink-steel:          #1F2D3D; // 深钢蓝文字(规划师端标题,6 文件)
+$violet-tint-100:    #EDE9FE; // violet-100 浅紫底(9 文件)
+$brown-warm:         #8D6E63; // 暖棕(关系图/横幅,7 文件)
+$el-danger:          #F56C6C; // Element UI danger(6 文件)
+$mat-red:            #F44336; // Material red-500(11 文件)
+$text-ghost-soft:    #AAA;    // 弱化灰文字(9 文件)
+$text-charcoal:      #1A1A1A; // 炭黑正文(6 文件)
 $hint-cream-border:  #F0E6C0; // 提示条奶油描边(articles + shop/index)
 $hint-gold-ink:      #B8860B; // 提示条金褐文字(8 文件)
 $facade-fill-page:   #F8F8F8; // 页面灰底(33 文件;health-main 原 $c-fill-warm 同值收敛于此)