Ver código fonte

PhaseB: 采纳品牌V3规范 - logo三件套入库+爱伴橙配色全量替换+管理端蓝色退出

liaoxg 6 dias atrás
pai
commit
ae699bef9e
52 arquivos alterados com 448 adições e 422 exclusões
  1. 1 1
      train-frontend/App.vue
  2. 4 4
      train-frontend/common/uni.css
  3. 1 1
      train-frontend/pages.json
  4. 9 9
      train-frontend/pages/assignment/index.vue
  5. 5 5
      train-frontend/pages/badge/index.vue
  6. 7 7
      train-frontend/pages/case/index.vue
  7. 9 9
      train-frontend/pages/checkin/index.vue
  8. 6 6
      train-frontend/pages/class/index.vue
  9. 27 27
      train-frontend/pages/course/detail.vue
  10. 12 12
      train-frontend/pages/course/index.vue
  11. 11 11
      train-frontend/pages/enroll/form.vue
  12. 15 15
      train-frontend/pages/enroll/list.vue
  13. 10 10
      train-frontend/pages/group-order/create.vue
  14. 11 11
      train-frontend/pages/group-order/detail.vue
  15. 9 9
      train-frontend/pages/group-order/index.vue
  16. 12 12
      train-frontend/pages/group/index.vue
  17. 18 20
      train-frontend/pages/index/index.vue
  18. 7 7
      train-frontend/pages/material/index.vue
  19. 18 18
      train-frontend/pages/mine/index.vue
  20. 8 8
      train-frontend/pages/pay/index.vue
  21. 4 4
      train-frontend/pages/pay/result.vue
  22. 8 8
      train-frontend/pages/plan/index.vue
  23. 7 7
      train-frontend/pages/roadmap/index.vue
  24. 8 8
      train-frontend/pages/salon/feedback.vue
  25. 7 7
      train-frontend/pages/salon/form.vue
  26. 10 10
      train-frontend/pages/salon/list.vue
  27. 11 11
      train-frontend/pages/salon/mine.vue
  28. 11 11
      train-frontend/pages/scoreboard/index.vue
  29. 15 15
      train-frontend/pages/share/index.vue
  30. 5 5
      train-frontend/pages/share/stats.vue
  31. 10 10
      train-frontend/pages/survey/index.vue
  32. 6 6
      train-frontend/pages/teaching/index.vue
  33. 12 12
      train-frontend/pages/upload/index.vue
  34. 5 5
      train-frontend/pages/verify/index.vue
  35. 11 11
      train-frontend/pages/vote/index.vue
  36. BIN
      train-frontend/static/logo-icon.png
  37. BIN
      train-frontend/static/logo-mark.png
  38. BIN
      train-frontend/static/logo-text.png
  39. 19 9
      train-frontend/uni.scss
  40. BIN
      train-web/src/assets/logo-mark.png
  41. BIN
      train-web/src/assets/logo-text.png
  42. 7 1
      train-web/src/router/index.js
  43. 2 2
      train-web/src/views/Courses.vue
  44. 2 2
      train-web/src/views/Dashboard.vue
  45. 26 12
      train-web/src/views/Layout.vue
  46. 9 11
      train-web/src/views/Login.vue
  47. 1 1
      train-web/src/views/ManualScore.vue
  48. 1 1
      train-web/src/views/Materials.vue
  49. 1 1
      train-web/src/views/Scoreboard.vue
  50. 47 47
      train-web/src/views/Screen.vue
  51. 1 1
      train-web/src/views/Stats.vue
  52. 2 2
      train-web/src/views/Users.vue

+ 1 - 1
train-frontend/App.vue

@@ -28,7 +28,7 @@ page {
   font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',
     'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei',
     'Helvetica Neue', Helvetica, Arial, sans-serif;
-  color: #1E293B;
+  color: #2A2326;
   font-size: 28rpx;
   line-height: 1.6;
   -webkit-font-smoothing: antialiased;

+ 4 - 4
train-frontend/common/uni.css

@@ -6,7 +6,7 @@ page {
   padding: 20rpx;
 }
 .btn-primary {
-  background-color: #F97316;
+  background-color: #FC7A57;
   color: #fff;
   border-radius: 20rpx;
   padding: 20rpx 40rpx;
@@ -18,8 +18,8 @@ page {
 }
 .btn-secondary {
   background-color: #fff;
-  color: #F97316;
-  border: 2rpx solid #F97316;
+  color: #FC7A57;
+  border: 2rpx solid #FC7A57;
   border-radius: 20rpx;
   padding: 20rpx 40rpx;
   text-align: center;
@@ -33,7 +33,7 @@ page {
   box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
 }
 .text-primary {
-  color: #F97316;
+  color: #FC7A57;
 }
 .text-gray {
   color: #999;

+ 1 - 1
train-frontend/pages.json

@@ -202,7 +202,7 @@
   "lazyCodeLoading": "requiredComponents",
   "tabBar": {
     "color": "#7A7E83",
-    "selectedColor": "#F97316",
+    "selectedColor": "#FC7A57",
     "borderStyle": "black",
     "backgroundColor": "#FFFFFF",
     "list": [

+ 9 - 9
train-frontend/pages/assignment/index.vue

@@ -18,8 +18,8 @@
           <view class="role-select">
             <text class="role-label">角色:</text>
             <radio-group @change="onRoleChange($event, book.type)">
-              <label class="role-option"><radio value="expert" :checked="selectedRole[book.type] === 'expert'" color="#F97316" />做账专家</label>
-              <label class="role-option"><radio value="support" :checked="selectedRole[book.type] === 'support'" color="#F97316" />通用支援</label>
+              <label class="role-option"><radio value="expert" :checked="selectedRole[book.type] === 'expert'" color="#FC7A57" />做账专家</label>
+              <label class="role-option"><radio value="support" :checked="selectedRole[book.type] === 'support'" color="#FC7A57" />通用支援</label>
             </radio-group>
           </view>
           <button class="claim-btn" @click="handleClaim(book.type)" :loading="claiming[book.type]">认领</button>
@@ -87,18 +87,18 @@ onShow() {
 <style scoped>
 .assignment-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .page-header { margin-bottom: 32rpx; }
-.page-title { display: block; font-size: 40rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; }
-.page-desc { display: block; font-size: 26rpx; color: #64748B; }
+.page-title { display: block; font-size: 40rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; }
+.page-desc { display: block; font-size: 26rpx; color: #5A4F4B; }
 .book-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; margin-bottom: 24rpx; }
 .book-header { display: flex; align-items: center; margin-bottom: 20rpx; }
 .book-icon { font-size: 48rpx; margin-right: 20rpx; }
-.book-name { display: block; font-size: 30rpx; font-weight: 600; color: #1E293B; }
-.book-desc { display: block; font-size: 24rpx; color: #64748B; margin-top: 4rpx; }
+.book-name { display: block; font-size: 30rpx; font-weight: 600; color: #2A2326; }
+.book-desc { display: block; font-size: 24rpx; color: #5A4F4B; margin-top: 4rpx; }
 .claimed-badge { background: #F0FDF4; color: #22C55E; font-size: 26rpx; font-weight: 500; padding: 12rpx 24rpx; border-radius: 8rpx; text-align: center; }
 .claim-actions { border-top: 1rpx solid #F1F5F9; padding-top: 20rpx; }
 .role-select { margin-bottom: 16rpx; }
-.role-label { font-size: 26rpx; color: #64748B; }
-.role-option { font-size: 26rpx; color: #1E293B; margin-right: 24rpx; }
-.claim-btn { width: 100%; height: 76rpx; line-height: 76rpx; background: #F97316; color: #FFF; font-size: 28rpx; font-weight: 500; border-radius: 38rpx; border: none; }
+.role-label { font-size: 26rpx; color: #5A4F4B; }
+.role-option { font-size: 26rpx; color: #2A2326; margin-right: 24rpx; }
+.claim-btn { width: 100%; height: 76rpx; line-height: 76rpx; background: #FC7A57; color: #FFF; font-size: 28rpx; font-weight: 500; border-radius: 38rpx; border: none; }
 .claim-btn:active { opacity: 0.85; }
 </style>

+ 5 - 5
train-frontend/pages/badge/index.vue

@@ -47,11 +47,11 @@ export default {
       earnedCount: 0,
       badges: [],
       gradeColorMap: {
-        novice: '#94A3B8',
+        novice: '#94877F',
         starter: '#7C3AED',
         expert: '#F59E0B',
         system: '#14B8A6',
-        lecturer: '#F97316'
+        lecturer: '#FC7A57'
       },
       categoryMap: {
         module: '模块徽章',
@@ -191,7 +191,7 @@ export default {
 .section-title {
   font-size: 32rpx;
   font-weight: 700;
-  color: #1E293B;
+  color: #2A2326;
 }
 
 .badge-grid {
@@ -227,12 +227,12 @@ export default {
 .badge-icon {
   font-size: 40rpx;
   margin-bottom: 8rpx;
-  color: #94A3B8;
+  color: #94877F;
 }
 
 .badge-name {
   font-size: 24rpx;
-  color: #64748B;
+  color: #5A4F4B;
   width: 140rpx;
   overflow: hidden;
   text-overflow: ellipsis;

+ 7 - 7
train-frontend/pages/case/index.vue

@@ -83,22 +83,22 @@ export default {
 <style scoped>
 .case-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 24rpx; }
-.empty-tip { font-size: 26rpx; color: #94A3B8; padding: 32rpx 0; text-align: center; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 24rpx; }
+.empty-tip { font-size: 26rpx; color: #94877F; padding: 32rpx 0; text-align: center; }
 .case-item { padding: 24rpx 0; border-bottom: 1rpx solid #F1F5F9; }
 .case-item:last-child { border-bottom: none; }
-.case-title { display: block; font-size: 28rpx; color: #1E293B; font-weight: 600; margin-bottom: 8rpx; }
-.case-summary { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 16rpx; }
+.case-title { display: block; font-size: 28rpx; color: #2A2326; font-weight: 600; margin-bottom: 8rpx; }
+.case-summary { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 16rpx; }
 .case-foot { display: flex; align-items: center; justify-content: space-between; }
 .case-status { font-size: 24rpx; font-weight: 600; }
-.case-status.pending { color: #F97316; }
+.case-status.pending { color: #FC7A57; }
 .case-status.authorized { color: #3B82F6; }
 .case-status.rejected { color: #EF4444; }
 .case-status.published { color: #22C55E; }
 .case-actions { display: flex; align-items: center; }
 .action-btn { font-size: 26rpx; padding: 8rpx 28rpx; border-radius: 28rpx; margin-left: 16rpx; }
 .action-btn.reject { color: #EF4444; border: 2rpx solid #FECACA; }
-.action-btn.agree { background: #F97316; color: #FFF; border: 2rpx solid #F97316; }
+.action-btn.agree { background: #FC7A57; color: #FFF; border: 2rpx solid #FC7A57; }
 .action-btn:active { opacity: 0.8; }
 </style>

+ 9 - 9
train-frontend/pages/checkin/index.vue

@@ -16,19 +16,19 @@
       <view v-else>
         <view class="check-group">
           <label class="check-item">
-            <checkbox :checked="prepForm.wealthData" @tap="prepForm.wealthData = !prepForm.wealthData" color="#F97316" />
+            <checkbox :checked="prepForm.wealthData" @tap="prepForm.wealthData = !prepForm.wealthData" color="#FC7A57" />
             <text>我有财富相关数据</text>
           </label>
           <label class="check-item">
-            <checkbox :checked="prepForm.healthData" @tap="prepForm.healthData = !prepForm.healthData" color="#F97316" />
+            <checkbox :checked="prepForm.healthData" @tap="prepForm.healthData = !prepForm.healthData" color="#FC7A57" />
             <text>我有健康相关数据</text>
           </label>
           <label class="check-item">
-            <checkbox :checked="prepForm.growthData" @tap="prepForm.growthData = !prepForm.growthData" color="#F97316" />
+            <checkbox :checked="prepForm.growthData" @tap="prepForm.growthData = !prepForm.growthData" color="#FC7A57" />
             <text>我有成长相关数据</text>
           </label>
           <label class="check-item">
-            <checkbox :checked="prepForm.hasNone" @tap="prepForm.hasNone = !prepForm.hasNone" color="#F97316" />
+            <checkbox :checked="prepForm.hasNone" @tap="prepForm.hasNone = !prepForm.hasNone" color="#FC7A57" />
             <text>以上都没有(使用脱敏样本数据)</text>
           </label>
         </view>
@@ -152,18 +152,18 @@ onShow() {
 <style scoped>
 .checkin-page { min-height: 100vh; background: #F5F5F5; padding: 24rpx 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; margin-bottom: 24rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 24rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 24rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
 .status-badge { padding: 16rpx 24rpx; border-radius: 8rpx; font-size: 26rpx; font-weight: 500; }
 .status-badge.done { background: #F0FDF4; color: #22C55E; }
-.upload-btn { width: 100%; height: 80rpx; line-height: 80rpx; background: #FFF7ED; color: #F97316; font-size: 28rpx; border: 2rpx dashed #F97316; border-radius: 12rpx; margin-bottom: 16rpx; }
+.upload-btn { width: 100%; height: 80rpx; line-height: 80rpx; background: #FFF0E8; color: #FC7A57; font-size: 28rpx; border: 2rpx dashed #FC7A57; border-radius: 12rpx; margin-bottom: 16rpx; }
 .preview-img { width: 100%; height: 300rpx; border-radius: 12rpx; margin-bottom: 16rpx; }
-.submit-btn { width: 100%; height: 80rpx; line-height: 80rpx; background: #F97316; color: #FFF; font-size: 28rpx; font-weight: 500; border-radius: 40rpx; border: none; margin-top: 16rpx; }
+.submit-btn { width: 100%; height: 80rpx; line-height: 80rpx; background: #FC7A57; color: #FFF; font-size: 28rpx; font-weight: 500; border-radius: 40rpx; border: none; margin-top: 16rpx; }
 .submit-btn:active { opacity: 0.85; }
 .check-group { margin-bottom: 16rpx; }
-.check-item { display: flex; align-items: center; padding: 16rpx 0; font-size: 28rpx; color: #1E293B; }
+.check-item { display: flex; align-items: center; padding: 16rpx 0; font-size: 28rpx; color: #2A2326; }
 .check-item text { margin-left: 12rpx; }
 .shortcut-grid { display: flex; flex-wrap: wrap; gap: 20rpx; }
 .shortcut-item { width: calc(25% - 15rpx); display: flex; flex-direction: column; align-items: center; padding: 20rpx 0; }
 .shortcut-icon { font-size: 48rpx; margin-bottom: 8rpx; }
-.shortcut-text { font-size: 24rpx; color: #1E293B; text-align: center; }
+.shortcut-text { font-size: 24rpx; color: #2A2326; text-align: center; }
 </style>

+ 6 - 6
train-frontend/pages/class/index.vue

@@ -100,13 +100,13 @@ export default {
   display: block;
   font-size: 36rpx;
   font-weight: 700;
-  color: #1E293B;
+  color: #2A2326;
   margin-bottom: 32rpx;
 }
 .card-desc {
   display: block;
   font-size: 26rpx;
-  color: #64748B;
+  color: #5A4F4B;
   margin-bottom: 32rpx;
 }
 .info-row {
@@ -117,11 +117,11 @@ export default {
 }
 .info-label {
   font-size: 28rpx;
-  color: #64748B;
+  color: #5A4F4B;
 }
 .info-value {
   font-size: 28rpx;
-  color: #1E293B;
+  color: #2A2326;
   font-weight: 500;
 }
 .code-input {
@@ -131,7 +131,7 @@ export default {
   border-radius: 12rpx;
   padding: 0 24rpx;
   font-size: 32rpx;
-  color: #1E293B;
+  color: #2A2326;
   background: #F8FAFC;
   margin-bottom: 16rpx;
 }
@@ -145,7 +145,7 @@ export default {
   width: 100%;
   height: 88rpx;
   line-height: 88rpx;
-  background: #F97316;
+  background: #FC7A57;
   color: #FFFFFF;
   font-size: 30rpx;
   font-weight: 600;

+ 27 - 27
train-frontend/pages/course/detail.vue

@@ -288,62 +288,62 @@ export default {
 .course-detail-page { min-height: 100vh; background: #F5F5F5; padding: 24rpx 32rpx; }
 .course-head { background: #FFF; border-radius: 20rpx; padding: 32rpx; margin-bottom: 24rpx; display: flex; flex-direction: column; }
 .action-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; margin-bottom: 24rpx; display: flex; flex-direction: column; align-items: center; }
-.action-title { font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 12rpx; }
-.action-desc { font-size: 26rpx; color: #64748B; text-align: center; line-height: 1.6; margin-bottom: 28rpx; }
-.action-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: linear-gradient(135deg, #F97316, #EA580C); color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
-.action-btn.disabled { background: #F1F5F9; color: #94A3B8; }
+.action-title { font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 12rpx; }
+.action-desc { font-size: 26rpx; color: #5A4F4B; text-align: center; line-height: 1.6; margin-bottom: 28rpx; }
+.action-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: linear-gradient(135deg, #FC7A57, #F9494F); color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
+.action-btn.disabled { background: #F1F5F9; color: #94877F; }
 .action-btn:active { opacity: 0.88; }
-.course-level { align-self: flex-start; font-size: 22rpx; font-weight: 600; color: #F97316; background: #FFF7ED; border-radius: 8rpx; padding: 4rpx 14rpx; margin-bottom: 12rpx; }
-.course-name { font-size: 36rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; }
+.course-level { align-self: flex-start; font-size: 22rpx; font-weight: 600; color: #FC7A57; background: #FFF0E8; border-radius: 8rpx; padding: 4rpx 14rpx; margin-bottom: 12rpx; }
+.course-name { font-size: 36rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; }
 .course-status { align-self: flex-start; font-size: 22rpx; border-radius: 6rpx; padding: 4rpx 16rpx; margin-bottom: 12rpx; }
-.course-status.st-upcoming { color: #F97316; background: #FFF7ED; }
+.course-status.st-upcoming { color: #FC7A57; background: #FFF0E8; }
 .course-status.st-active { color: #22C55E; background: #F0FDF4; }
-.course-status.st-finished { color: #94A3B8; background: #F1F5F9; }
-.course-desc { font-size: 26rpx; color: #64748B; line-height: 1.6; margin-bottom: 8rpx; }
-.course-time { font-size: 24rpx; color: #94A3B8; margin-bottom: 8rpx; }
-.course-class { font-size: 24rpx; color: #1E293B; background: #F1F5F9; border-radius: 8rpx; padding: 8rpx 16rpx; align-self: flex-start; }
+.course-status.st-finished { color: #94877F; background: #F1F5F9; }
+.course-desc { font-size: 26rpx; color: #5A4F4B; line-height: 1.6; margin-bottom: 8rpx; }
+.course-time { font-size: 24rpx; color: #94877F; margin-bottom: 8rpx; }
+.course-class { font-size: 24rpx; color: #2A2326; background: #F1F5F9; border-radius: 8rpx; padding: 8rpx 16rpx; align-self: flex-start; }
 
 .module-section { margin-bottom: 24rpx; }
 .module-list { display: flex; flex-direction: column; gap: 20rpx; }
 .module-item { background: #FFF; border-radius: 16rpx; padding: 24rpx; border: 1px solid #E2E8F0; }
 .module-main { display: flex; align-items: center; margin-bottom: 12rpx; }
-.module-key { font-size: 20rpx; color: #F97316; background: #FFF7ED; padding: 2rpx 8rpx; border-radius: 4rpx; margin-right: 12rpx; font-weight: 600; }
-.module-title { font-size: 28rpx; font-weight: 700; color: #1E293B; flex: 1; }
-.module-version { font-size: 22rpx; color: #94A3B8; }
-.module-output { font-size: 24rpx; color: #64748B; line-height: 1.5; margin-bottom: 16rpx; }
+.module-key { font-size: 20rpx; color: #FC7A57; background: #FFF0E8; padding: 2rpx 8rpx; border-radius: 4rpx; margin-right: 12rpx; font-weight: 600; }
+.module-title { font-size: 28rpx; font-weight: 700; color: #2A2326; flex: 1; }
+.module-version { font-size: 22rpx; color: #94877F; }
+.module-output { font-size: 24rpx; color: #5A4F4B; line-height: 1.5; margin-bottom: 16rpx; }
 .module-footer { display: flex; justify-content: space-between; align-items: center; border-top: 1px solid #F1F5F9; padding-top: 16rpx; }
-.module-duration { font-size: 22rpx; color: #94A3B8; }
-.module-status { font-size: 22rpx; font-weight: 600; color: #94A3B8; }
+.module-duration { font-size: 22rpx; color: #94877F; }
+.module-status { font-size: 22rpx; font-weight: 600; color: #94877F; }
 .module-status.done { color: #22C55E; }
 
 .class-info-card { background: #FFF; border-radius: 16rpx; padding: 28rpx 32rpx; margin-bottom: 24rpx; display: flex; flex-direction: column; }
-.class-info-title { font-size: 24rpx; color: #94A3B8; margin-bottom: 8rpx; }
-.class-info-name { font-size: 30rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; }
+.class-info-title { font-size: 24rpx; color: #94877F; margin-bottom: 8rpx; }
+.class-info-name { font-size: 30rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; }
 .class-info-time { font-size: 26rpx; color: #475569; margin-bottom: 4rpx; }
 .class-info-place { font-size: 26rpx; color: #475569; }
 
 .stage-card { display: flex; align-items: center; background: #FFF; border-radius: 16rpx; padding: 28rpx 32rpx; margin-bottom: 24rpx; }
 .stage-icon { font-size: 48rpx; margin-right: 20rpx; }
 .stage-text { display: flex; flex-direction: column; }
-.stage-title { font-size: 30rpx; font-weight: 700; color: #1E293B; margin-bottom: 6rpx; }
-.stage-sub { font-size: 24rpx; color: #64748B; }
+.stage-title { font-size: 30rpx; font-weight: 700; color: #2A2326; margin-bottom: 6rpx; }
+.stage-sub { font-size: 24rpx; color: #5A4F4B; }
 
-.stage-title-block { font-size: 30rpx; font-weight: 600; color: #1E293B; margin-bottom: 16rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
+.stage-title-block { font-size: 30rpx; font-weight: 600; color: #2A2326; margin-bottom: 16rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
 
 .section-card { background: #FFF; border-radius: 16rpx; padding: 28rpx; margin-bottom: 24rpx; }
 .section-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16rpx; }
-.section-title { font-size: 30rpx; font-weight: 600; color: #1E293B; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.progress-count { font-size: 24rpx; color: #64748B; }
+.section-title { font-size: 30rpx; font-weight: 600; color: #2A2326; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.progress-count { font-size: 24rpx; color: #5A4F4B; }
 .progress-bar { height: 16rpx; background: #F1F5F9; border-radius: 8rpx; overflow: hidden; margin-bottom: 20rpx; }
-.progress-fill { height: 100%; background: linear-gradient(90deg, #F97316, #EA580C); border-radius: 8rpx; }
+.progress-fill { height: 100%; background: linear-gradient(90deg, #FC7A57, #F9494F); border-radius: 8rpx; }
 .progress-list { display: flex; flex-direction: column; }
 .progress-item { display: flex; align-items: center; padding: 10rpx 0; }
 .progress-icon { font-size: 28rpx; margin-right: 12rpx; }
-.progress-label { font-size: 26rpx; color: #1E293B; }
+.progress-label { font-size: 26rpx; color: #2A2326; }
 
 .nav-grid { display: flex; flex-wrap: wrap; gap: 0; background: #FFF; border-radius: 16rpx; overflow: hidden; }
 .nav-item { width: 25%; display: flex; flex-direction: column; align-items: center; padding: 28rpx 0; }
 .nav-item:active { background: #F8FAFC; }
 .nav-icon { font-size: 44rpx; margin-bottom: 8rpx; }
-.nav-text { font-size: 24rpx; color: #1E293B; text-align: center; }
+.nav-text { font-size: 24rpx; color: #2A2326; text-align: center; }
 </style>

+ 12 - 12
train-frontend/pages/course/index.vue

@@ -150,34 +150,34 @@ export default {
 
 <style scoped>
 .course-page { min-height: 100vh; background: #F5F5F5; padding: 24rpx 32rpx; }
-.section-title { font-size: 30rpx; font-weight: 600; color: #1E293B; margin-bottom: 16rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
+.section-title { font-size: 30rpx; font-weight: 600; color: #2A2326; margin-bottom: 16rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
 
-.active-card { background: linear-gradient(135deg, #F97316, #EA580C); border-radius: 20rpx; padding: 32rpx; margin-bottom: 32rpx; }
+.active-card { background: linear-gradient(135deg, #FC7A57, #F9494F); border-radius: 20rpx; padding: 32rpx; margin-bottom: 32rpx; }
 .active-badge { display: inline-block; background: rgba(255,255,255,0.2); border-radius: 100rpx; padding: 4rpx 20rpx; margin-bottom: 16rpx; }
 .active-badge-text { font-size: 22rpx; color: #FFF; font-weight: 600; }
 .active-name { display: block; font-size: 36rpx; font-weight: 700; color: #FFF; margin-bottom: 8rpx; }
 .active-desc { display: block; font-size: 26rpx; color: rgba(255,255,255,0.9); margin-bottom: 16rpx; }
 .active-time { display: flex; flex-direction: column; margin-bottom: 24rpx; }
 .active-time-text { font-size: 22rpx; color: rgba(255,255,255,0.8); margin-bottom: 4rpx; }
-.active-btn { background: #FFF; color: #EA580C; font-size: 30rpx; font-weight: 600; border-radius: 48rpx; height: 80rpx; line-height: 80rpx; border: none; margin: 0; }
+.active-btn { background: #FFF; color: #F9494F; font-size: 30rpx; font-weight: 600; border-radius: 48rpx; height: 80rpx; line-height: 80rpx; border: none; margin: 0; }
 .active-btn:active { opacity: 0.9; }
 
 .course-list { display: flex; flex-direction: column; }
 .course-card { background: #FFF; border-radius: 16rpx; padding: 28rpx; margin-bottom: 20rpx; }
 .course-head { display: flex; align-items: center; margin-bottom: 8rpx; }
-.course-level { font-size: 24rpx; font-weight: 600; color: #F97316; background: #FFF7ED; border-radius: 8rpx; padding: 4rpx 14rpx; margin-right: 16rpx; }
-.course-name { font-size: 30rpx; font-weight: 600; color: #1E293B; flex: 1; }
-.course-desc { font-size: 24rpx; color: #64748B; margin-bottom: 16rpx; line-height: 1.6; }
+.course-level { font-size: 24rpx; font-weight: 600; color: #FC7A57; background: #FFF0E8; border-radius: 8rpx; padding: 4rpx 14rpx; margin-right: 16rpx; }
+.course-name { font-size: 30rpx; font-weight: 600; color: #2A2326; flex: 1; }
+.course-desc { font-size: 24rpx; color: #5A4F4B; margin-bottom: 16rpx; line-height: 1.6; }
 .course-tags { display: flex; align-items: center; margin-bottom: 20rpx; }
-.course-tag { font-size: 20rpx; color: #64748B; background: #F1F5F9; border-radius: 6rpx; padding: 4rpx 14rpx; margin-right: 12rpx; }
-.course-tag.st-upcoming { color: #F97316; background: #FFF7ED; }
+.course-tag { font-size: 20rpx; color: #5A4F4B; background: #F1F5F9; border-radius: 6rpx; padding: 4rpx 14rpx; margin-right: 12rpx; }
+.course-tag.st-upcoming { color: #FC7A57; background: #FFF0E8; }
 .course-tag.st-active { color: #22C55E; background: #F0FDF4; }
-.course-tag.st-finished { color: #94A3B8; background: #F1F5F9; }
+.course-tag.st-finished { color: #94877F; background: #F1F5F9; }
 .course-tag.mine { color: #6366F1; background: #EEF2FF; }
 .course-tag.my-confirmed { color: #22C55E; background: #F0FDF4; }
-.course-tag.my-reviewing { color: #F97316; background: #FFF7ED; }
+.course-tag.my-reviewing { color: #FC7A57; background: #FFF0E8; }
 .course-tag.my-rejected { color: #EF5350; background: #FEF2F2; }
-.course-btn { background: linear-gradient(135deg, #F97316, #EA580C); color: #FFF; font-size: 28rpx; font-weight: 600; border-radius: 44rpx; height: 76rpx; line-height: 76rpx; border: none; margin: 0; }
+.course-btn { background: linear-gradient(135deg, #FC7A57, #F9494F); color: #FFF; font-size: 28rpx; font-weight: 600; border-radius: 44rpx; height: 76rpx; line-height: 76rpx; border: none; margin: 0; }
 .course-btn:active { opacity: 0.9; }
-.btn-disabled { background: #E2E8F0; color: #94A3B8; }
+.btn-disabled { background: #E2E8F0; color: #94877F; }
 </style>

+ 11 - 11
train-frontend/pages/enroll/form.vue

@@ -21,7 +21,7 @@
       </view>
       <view class="form-item switch-item">
         <text class="form-label">是否携带笔记本</text>
-        <switch :checked="form.bringLaptop === 1" color="#F97316" @change="onLaptopChange" />
+        <switch :checked="form.bringLaptop === 1" color="#FC7A57" @change="onLaptopChange" />
       </view>
       <view class="form-item">
         <text class="form-label">已备数据</text>
@@ -149,24 +149,24 @@ export default {
 <style scoped>
 .form-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 32rpx; }
-.summary-box { background: #FFF7ED; border-radius: 8rpx; padding: 20rpx 24rpx; margin-bottom: 24rpx; border: 2rpx solid #FED7AA; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 32rpx; }
+.summary-box { background: #FFF0E8; border-radius: 8rpx; padding: 20rpx 24rpx; margin-bottom: 24rpx; border: 2rpx solid #FED7AA; }
 .summary-row { display: flex; align-items: center; margin-bottom: 8rpx; }
 .summary-row:last-child { margin-bottom: 0; }
-.summary-label { font-size: 24rpx; color: #64748B; width: 140rpx; flex-shrink: 0; }
-.summary-value { font-size: 26rpx; color: #1E293B; font-weight: 600; flex: 1; }
+.summary-label { font-size: 24rpx; color: #5A4F4B; width: 140rpx; flex-shrink: 0; }
+.summary-value { font-size: 26rpx; color: #2A2326; font-weight: 600; flex: 1; }
 .form-item { margin-bottom: 24rpx; }
 .form-label { display: block; font-size: 26rpx; color: #475569; font-weight: 500; margin-bottom: 12rpx; }
-.form-input { height: 72rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 16rpx; font-size: 28rpx; color: #1E293B; background: #F8FAFC; }
-.form-textarea { width: 100%; height: 160rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 16rpx; font-size: 28rpx; color: #1E293B; background: #F8FAFC; box-sizing: border-box; }
+.form-input { height: 72rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 16rpx; font-size: 28rpx; color: #2A2326; background: #F8FAFC; }
+.form-textarea { width: 100%; height: 160rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 16rpx; font-size: 28rpx; color: #2A2326; background: #F8FAFC; box-sizing: border-box; }
 .check-group { display: flex; flex-wrap: wrap; }
 .check-item { display: flex; align-items: center; width: 50%; margin-bottom: 16rpx; }
 .check-square { width: 36rpx; height: 36rpx; border: 2rpx solid #CBD5E1; border-radius: 6rpx; display: flex; align-items: center; justify-content: center; font-size: 24rpx; color: #FFF; margin-right: 12rpx; flex-shrink: 0; }
-.check-square.checked { background: #F97316; border-color: #F97316; }
-.check-text { font-size: 26rpx; color: #1E293B; }
+.check-square.checked { background: #FC7A57; border-color: #FC7A57; }
+.check-text { font-size: 26rpx; color: #2A2326; }
 .switch-item { display: flex; align-items: center; justify-content: space-between; }
 .switch-item .form-label { margin-bottom: 0; }
-.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 24rpx; }
+.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 24rpx; }
 .submit-btn:active { opacity: 0.85; }
 </style>

+ 15 - 15
train-frontend/pages/enroll/list.vue

@@ -214,42 +214,42 @@ export default {
 <style scoped>
 .enroll-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; margin-bottom: 24rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 24rpx; }
-.empty-tip { font-size: 26rpx; color: #94A3B8; padding: 32rpx 0; text-align: center; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 24rpx; }
+.empty-tip { font-size: 26rpx; color: #94877F; padding: 32rpx 0; text-align: center; }
 .course-card { border: 2rpx solid #E2E8F0; border-radius: 12rpx; padding: 24rpx; margin-bottom: 20rpx; }
 .course-head { display: flex; align-items: center; margin-bottom: 12rpx; }
-.course-level { background: #F97316; color: #FFF; padding: 2rpx 8rpx; border-radius: 4rpx; margin-right: 12rpx; font-weight: 600; font-size: 24rpx; }
-.course-name { font-size: 30rpx; font-weight: 600; color: #1E293B; flex: 1; }
+.course-level { background: #FC7A57; color: #FFF; padding: 2rpx 8rpx; border-radius: 4rpx; margin-right: 12rpx; font-weight: 600; font-size: 24rpx; }
+.course-name { font-size: 30rpx; font-weight: 600; color: #2A2326; flex: 1; }
 .course-price-box { display: flex; align-items: center; gap: 16rpx; margin-bottom: 12rpx; }
-.course-price { font-size: 28rpx; color: #F97316; font-weight: 600; }
+.course-price { font-size: 28rpx; color: #FC7A57; font-weight: 600; }
 .course-price-free { font-size: 28rpx; color: #22C55E; font-weight: 600; }
-.member-price { font-size: 24rpx; color: #64748B; }
+.member-price { font-size: 24rpx; color: #5A4F4B; }
 .course-status-box { margin-bottom: 16rpx; }
 .status-text { font-size: 24rpx; }
 .status-active { color: #22C55E; }
-.status-draft { color: #94A3B8; }
+.status-draft { color: #94877F; }
 .status-finished { color: #EF4444; }
 .course-foot { display: flex; align-items: center; justify-content: flex-end; }
-.enroll-btn { width: 200rpx; height: 64rpx; line-height: 64rpx; font-size: 26rpx; background: #F97316; color: #FFF; border-radius: 32rpx; border: none; margin: 0; }
+.enroll-btn { width: 200rpx; height: 64rpx; line-height: 64rpx; font-size: 26rpx; background: #FC7A57; color: #FFF; border-radius: 32rpx; border: none; margin: 0; }
 .enroll-btn:active { opacity: 0.85; }
 .enroll-btn:disabled { background: #CBD5E1; }
 .mine-item { padding: 20rpx 0; border-bottom: 1rpx solid #F1F5F9; }
 .mine-item:last-child { border-bottom: none; }
 .mine-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8rpx; }
-.mine-class { font-size: 28rpx; color: #1E293B; font-weight: 500; flex: 1; }
+.mine-class { font-size: 28rpx; color: #2A2326; font-weight: 500; flex: 1; }
 .mine-course { font-weight: 700; margin-right: 8rpx; }
-.mine-status { font-size: 24rpx; color: #F97316; }
-.mine-time { font-size: 24rpx; color: #94A3B8; }
+.mine-status { font-size: 24rpx; color: #FC7A57; }
+.mine-time { font-size: 24rpx; color: #94877F; }
 .mine-actions { display: flex; justify-content: flex-end; margin-top: 16rpx; }
 .mine-btn { width: 160rpx; height: 56rpx; line-height: 56rpx; font-size: 24rpx; border-radius: 28rpx; border: none; margin: 0 0 0 16rpx; }
 .mine-btn:active { opacity: 0.85; }
-.cancel-btn { background: #F1F5F9; color: #64748B; }
-.pay-btn { background: #F97316; color: #FFF; }
+.cancel-btn { background: #F1F5F9; color: #5A4F4B; }
+.pay-btn { background: #FC7A57; color: #FFF; }
 .mine-enroll { display: flex; align-items: center; margin-top: 12rpx; }
 .mine-enroll-status { font-size: 24rpx; padding: 2rpx 12rpx; border-radius: 4rpx; color: #FFF; }
 .enroll-active { background: #22C55E; }
 .enroll-dormant { background: #D97706; }
-.mine-enroll-deadline { font-size: 24rpx; color: #94A3B8; margin-left: 16rpx; flex: 1; }
+.mine-enroll-deadline { font-size: 24rpx; color: #94877F; margin-left: 16rpx; flex: 1; }
 .activate-btn { background: #D97706; color: #FFF; }
 </style>

+ 10 - 10
train-frontend/pages/group-order/create.vue

@@ -183,24 +183,24 @@ export default {
 <style scoped>
 .form-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 32rpx; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 32rpx; }
 .form-item { margin-bottom: 24rpx; }
 .form-label { display: block; font-size: 26rpx; color: #475569; font-weight: 500; margin-bottom: 12rpx; }
-.form-input { height: 72rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 16rpx; font-size: 28rpx; color: #1E293B; background: #F8FAFC; }
-.picker-value { height: 72rpx; line-height: 72rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 16rpx; font-size: 28rpx; color: #1E293B; background: #F8FAFC; }
-.picker-value.placeholder { color: #94A3B8; }
-.unit-tip { font-size: 24rpx; color: #F97316; margin-top: 12rpx; }
+.form-input { height: 72rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 16rpx; font-size: 28rpx; color: #2A2326; background: #F8FAFC; }
+.picker-value { height: 72rpx; line-height: 72rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 16rpx; font-size: 28rpx; color: #2A2326; background: #F8FAFC; }
+.picker-value.placeholder { color: #94877F; }
+.unit-tip { font-size: 24rpx; color: #FC7A57; margin-top: 12rpx; }
 .member-item { display: flex; align-items: center; margin-bottom: 16rpx; }
 .member-name { width: 200rpx; height: 64rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 12rpx; font-size: 26rpx; background: #F8FAFC; margin-right: 12rpx; }
 .member-phone { flex: 1; height: 64rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 12rpx; font-size: 26rpx; background: #F8FAFC; margin-right: 12rpx; }
 .member-del { font-size: 24rpx; color: #EF4444; padding: 8rpx; }
-.add-member { display: block; font-size: 26rpx; color: #F97316; font-weight: 600; margin-top: 8rpx; }
+.add-member { display: block; font-size: 26rpx; color: #FC7A57; font-weight: 600; margin-top: 8rpx; }
 .check-group { display: flex; }
 .check-item { display: flex; align-items: center; margin-right: 40rpx; }
 .check-square { width: 36rpx; height: 36rpx; border: 2rpx solid #CBD5E1; border-radius: 6rpx; display: flex; align-items: center; justify-content: center; font-size: 24rpx; color: #FFF; margin-right: 12rpx; flex-shrink: 0; }
-.check-square.checked { background: #F97316; border-color: #F97316; }
-.check-text { font-size: 26rpx; color: #1E293B; }
-.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 24rpx; }
+.check-square.checked { background: #FC7A57; border-color: #FC7A57; }
+.check-text { font-size: 26rpx; color: #2A2326; }
+.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 24rpx; }
 .submit-btn:active { opacity: 0.85; }
 </style>

+ 11 - 11
train-frontend/pages/group-order/detail.vue

@@ -128,25 +128,25 @@ export default {
 <style scoped>
 .form-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; margin-bottom: 24rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 16rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 16rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
 .info-row { display: flex; align-items: center; justify-content: space-between; padding: 14rpx 0; border-bottom: 1rpx solid #F8FAFC; }
-.info-label { font-size: 26rpx; color: #64748B; }
-.info-value { font-size: 28rpx; color: #1E293B; font-weight: 500; }
-.info-value.amount { color: #F97316; font-weight: 700; font-size: 32rpx; }
-.info-value.pending { color: #F97316; }
+.info-label { font-size: 26rpx; color: #5A4F4B; }
+.info-value { font-size: 28rpx; color: #2A2326; font-weight: 500; }
+.info-value.amount { color: #FC7A57; font-weight: 700; font-size: 32rpx; }
+.info-value.pending { color: #FC7A57; }
 .info-value.paid { color: #22C55E; }
-.info-value.closed { color: #94A3B8; }
+.info-value.closed { color: #94877F; }
 .pay-area { margin-top: 32rpx; }
-.pay-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
+.pay-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
 .pay-btn:active { opacity: 0.85; }
-.pay-tip { font-size: 24rpx; color: #94A3B8; text-align: center; margin-top: 16rpx; }
+.pay-tip { font-size: 24rpx; color: #94877F; text-align: center; margin-top: 16rpx; }
 .paid-tip { font-size: 26rpx; color: #22C55E; text-align: center; padding: 16rpx 0; }
 .member-item { display: flex; align-items: center; justify-content: space-between; padding: 16rpx 0; border-bottom: 1rpx solid #F1F5F9; }
 .member-item:last-child { border-bottom: none; }
 .member-info { display: flex; align-items: center; }
-.member-name { font-size: 28rpx; color: #1E293B; font-weight: 500; margin-right: 24rpx; }
-.member-phone { font-size: 26rpx; color: #64748B; }
+.member-name { font-size: 28rpx; color: #2A2326; font-weight: 500; margin-right: 24rpx; }
+.member-phone { font-size: 26rpx; color: #5A4F4B; }
 .member-status { font-size: 24rpx; font-weight: 600; }
 .member-status.paid { color: #22C55E; }
-.member-status.pending { color: #F97316; }
+.member-status.pending { color: #FC7A57; }
 </style>

+ 9 - 9
train-frontend/pages/group-order/index.vue

@@ -72,20 +72,20 @@ export default {
 <style scoped>
 .gorder-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; margin-bottom: 24rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 24rpx; }
-.empty-tip { font-size: 26rpx; color: #94A3B8; padding: 32rpx 0; text-align: center; }
-.create-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 24rpx; }
+.empty-tip { font-size: 26rpx; color: #94877F; padding: 32rpx 0; text-align: center; }
+.create-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
 .create-btn:active { opacity: 0.85; }
 .order-item { padding: 24rpx 0; border-bottom: 1rpx solid #F1F5F9; }
 .order-item:last-child { border-bottom: none; }
 .order-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8rpx; }
 .order-no { font-size: 26rpx; color: #475569; font-weight: 500; }
 .order-status { font-size: 24rpx; font-weight: 600; }
-.order-status.pending { color: #F97316; }
+.order-status.pending { color: #FC7A57; }
 .order-status.paid { color: #22C55E; }
-.order-status.closed { color: #94A3B8; }
-.order-class { display: block; font-size: 28rpx; color: #1E293B; font-weight: 600; margin-bottom: 6rpx; }
-.order-meta { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 6rpx; }
-.order-time { display: block; font-size: 24rpx; color: #94A3B8; }
+.order-status.closed { color: #94877F; }
+.order-class { display: block; font-size: 28rpx; color: #2A2326; font-weight: 600; margin-bottom: 6rpx; }
+.order-meta { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 6rpx; }
+.order-time { display: block; font-size: 24rpx; color: #94877F; }
 </style>

+ 12 - 12
train-frontend/pages/group/index.vue

@@ -103,24 +103,24 @@ bookTypeLabel(type) {
 .group-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .group-card, .empty-card { background: #FFF; border-radius: 16rpx; padding: 40rpx 32rpx; }
 .group-header { margin-bottom: 32rpx; }
-.group-name { display: block; font-size: 36rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; }
-.group-slogan { display: block; font-size: 26rpx; color: #F97316; }
-.section-title { font-size: 30rpx; font-weight: 600; color: #1E293B; margin: 24rpx 0 16rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
+.group-name { display: block; font-size: 36rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; }
+.group-slogan { display: block; font-size: 26rpx; color: #FC7A57; }
+.section-title { font-size: 30rpx; font-weight: 600; color: #2A2326; margin: 24rpx 0 16rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
 .member-list { margin-bottom: 24rpx; }
 .member-item { display: flex; align-items: center; justify-content: space-between; padding: 16rpx 0; border-bottom: 1rpx solid #F1F5F9; }
 .member-info { display: flex; flex-direction: column; flex: 1; }
-.member-name { font-size: 28rpx; color: #1E293B; }
-.member-role { font-size: 24rpx; color: #64748B; margin-top: 4rpx; }
-.speaker-btn { width: 160rpx; height: 56rpx; line-height: 56rpx; font-size: 24rpx; color: #F97316; background: #FFF0E6; border-radius: 28rpx; border: none; margin: 0 0 0 16rpx; }
+.member-name { font-size: 28rpx; color: #2A2326; }
+.member-role { font-size: 24rpx; color: #5A4F4B; margin-top: 4rpx; }
+.speaker-btn { width: 160rpx; height: 56rpx; line-height: 56rpx; font-size: 24rpx; color: #FC7A57; background: #FFF0E6; border-radius: 28rpx; border: none; margin: 0 0 0 16rpx; }
 .speaker-btn:active { opacity: 0.85; }
-.empty-text { font-size: 26rpx; color: #94A3B8; padding: 16rpx 0; }
+.empty-text { font-size: 26rpx; color: #94877F; padding: 16rpx 0; }
 .assign-list { margin-bottom: 24rpx; }
 .assign-item { display: flex; justify-content: space-between; padding: 16rpx 0; border-bottom: 1rpx solid #F1F5F9; }
-.assign-type { font-size: 28rpx; color: #1E293B; font-weight: 500; }
-.assign-role { font-size: 24rpx; color: #F97316; }
-.empty-title { display: block; font-size: 36rpx; font-weight: 700; color: #1E293B; margin-bottom: 12rpx; text-align: center; }
-.empty-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 40rpx; text-align: center; }
+.assign-type { font-size: 28rpx; color: #2A2326; font-weight: 500; }
+.assign-role { font-size: 24rpx; color: #FC7A57; }
+.empty-title { display: block; font-size: 36rpx; font-weight: 700; color: #2A2326; margin-bottom: 12rpx; text-align: center; }
+.empty-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 40rpx; text-align: center; }
 .group-id-input { width: 100%; height: 80rpx; border: 2rpx solid #E2E8F0; border-radius: 12rpx; padding: 0 24rpx; font-size: 28rpx; background: #F8FAFC; margin-bottom: 24rpx; }
-.join-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
+.join-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
 .join-btn:active { opacity: 0.85; }
 </style>

+ 18 - 20
train-frontend/pages/index/index.vue

@@ -1,8 +1,7 @@
 <template>
   <view class="home-page">
     <view class="banner">
-      <text class="banner-icon">🚀</text>
-      <text class="banner-title">爱伴·AI之旅</text>
+      <image class="banner-logo" src="/static/logo-text.png" mode="widthFix"></image>
       <view class="course-tag">
         <text class="course-tag-text">{{ courseLabel }}</text>
       </view>
@@ -231,9 +230,8 @@ export default {
 
 <style scoped>
 .home-page { min-height: 100vh; background: #F5F5F5; padding: 0 32rpx 32rpx; }
-.banner { background: linear-gradient(135deg, #F97316, #EA580C); border-radius: 0 0 32rpx 32rpx; padding: 60rpx 32rpx 48rpx; text-align: center; margin: 0 -32rpx 24rpx; position: relative; }
-.banner-icon { font-size: 72rpx; display: block; margin-bottom: 16rpx; }
-.banner-title { display: block; font-size: 40rpx; font-weight: 700; color: #FFF; margin-bottom: 16rpx; }
+.banner { background: linear-gradient(135deg, #FF9E5E, #FC7A57 46%, #F9494F); border-radius: 0 0 32rpx 32rpx; padding: 60rpx 32rpx 48rpx; text-align: center; margin: 0 -32rpx 24rpx; position: relative; }
+  .banner-logo { width: 400rpx; display: block; margin: 0 auto 16rpx; }
 .course-tag {
   display: inline-block;
   background: rgba(255,255,255,0.18);
@@ -250,7 +248,7 @@ export default {
 }
 .login-entry-btn { 
   background: #FFF; 
-  color: #EA580C; 
+  color: #F9494F; 
   font-size: 24rpx; 
   font-weight: 600; 
   border-radius: 100rpx; 
@@ -263,30 +261,30 @@ export default {
 .status-card { background: #FFF; border-radius: 16rpx; padding: 24rpx 32rpx; margin-bottom: 24rpx; }
 .status-row { display: flex; justify-content: space-between; padding: 14rpx 0; border-bottom: 1rpx solid #F1F5F9; }
 .status-row:last-child { border-bottom: none; }
-.status-label { font-size: 28rpx; color: #64748B; }
-.status-value { font-size: 28rpx; color: #1E293B; font-weight: 500; }
+.status-label { font-size: 28rpx; color: #5A4F4B; }
+.status-value { font-size: 28rpx; color: #2A2326; font-weight: 500; }
 .val-pass { color: #22C55E; }
 .val-pending { color: #FFB74D; }
 .val-fail { color: #EF5350; }
-.section-title { font-size: 30rpx; font-weight: 600; color: #1E293B; margin-bottom: 16rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
+.section-title { font-size: 30rpx; font-weight: 600; color: #2A2326; margin-bottom: 16rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
 .nav-grid { display: flex; flex-wrap: wrap; gap: 0; background: #FFF; border-radius: 16rpx; overflow: hidden; }
 .nav-item { width: 25%; display: flex; flex-direction: column; align-items: center; padding: 28rpx 0; }
 .nav-item:active { background: #F8FAFC; }
 .nav-icon { font-size: 44rpx; margin-bottom: 8rpx; }
-.nav-text { font-size: 24rpx; color: #1E293B; text-align: center; }
+.nav-text { font-size: 24rpx; color: #2A2326; text-align: center; }
 .course-mini-list { display: flex; flex-direction: column; margin-top: 20rpx; }
 .course-mini-card { background: #FFF; border-radius: 16rpx; padding: 24rpx 28rpx; margin-bottom: 16rpx; }
 .course-mini-card:active { background: #F8FAFC; }
 .course-mini-head { display: flex; align-items: center; margin-bottom: 8rpx; }
-.course-mini-level { font-size: 22rpx; font-weight: 600; color: #F97316; background: #FFF7ED; border-radius: 8rpx; padding: 4rpx 14rpx; margin-right: 16rpx; }
-.course-mini-name { font-size: 28rpx; font-weight: 600; color: #1E293B; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
+.course-mini-level { font-size: 22rpx; font-weight: 600; color: #FC7A57; background: #FFF0E8; border-radius: 8rpx; padding: 4rpx 14rpx; margin-right: 16rpx; }
+.course-mini-name { font-size: 28rpx; font-weight: 600; color: #2A2326; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
 .course-mini-status { font-size: 22rpx; border-radius: 6rpx; padding: 4rpx 14rpx; }
-.course-mini-status.st-upcoming { color: #F97316; background: #FFF7ED; }
+.course-mini-status.st-upcoming { color: #FC7A57; background: #FFF0E8; }
 .course-mini-status.st-active { color: #22C55E; background: #F0FDF4; }
-.course-mini-status.st-finished { color: #94A3B8; background: #F1F5F9; }
-.course-mini-desc { font-size: 24rpx; color: #64748B; line-height: 1.5; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
+.course-mini-status.st-finished { color: #94877F; background: #F1F5F9; }
+.course-mini-desc { font-size: 24rpx; color: #5A4F4B; line-height: 1.5; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
 .course-mini-empty { background: #FFF; border-radius: 16rpx; padding: 48rpx 0; text-align: center; }
-.course-mini-empty-text { font-size: 26rpx; color: #94A3B8; }
+.course-mini-empty-text { font-size: 26rpx; color: #94877F; }
 
 /* Bottom Sheet Styles */
 .login-sheet-mask {
@@ -342,19 +340,19 @@ export default {
   display: block;
   font-size: 36rpx;
   font-weight: 700;
-  color: #1E293B;
+  color: #2A2326;
   margin-bottom: 12rpx;
 }
 .sheet-sub {
   display: block;
   font-size: 26rpx;
-  color: #64748B;
+  color: #5A4F4B;
 }
 .sheet-login-btn {
   width: 100%;
   height: 96rpx;
   line-height: 96rpx;
-  background: linear-gradient(135deg, #F97316, #EA580C);
+  background: linear-gradient(135deg, #FC7A57, #F9494F);
   color: #FFF;
   font-size: 32rpx;
   font-weight: 600;
@@ -370,6 +368,6 @@ export default {
 }
 .sheet-footer-text {
   font-size: 22rpx;
-  color: #94A3B8;
+  color: #94877F;
 }
 </style>

+ 7 - 7
train-frontend/pages/material/index.vue

@@ -64,15 +64,15 @@ export default {
 <style scoped>
 .material-page { min-height: 100vh; background: #F5F5F5; padding: 24rpx 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; margin-bottom: 24rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 28rpx; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 28rpx; }
 .material-list { margin-top: 8rpx; }
 .material-item { display: flex; align-items: center; padding: 24rpx 0; border-bottom: 1rpx solid #F1F5F9; }
 .material-icon { font-size: 40rpx; margin-right: 16rpx; }
 .material-info { flex: 1; display: flex; flex-direction: column; }
-.material-title { font-size: 28rpx; font-weight: 500; color: #1E293B; }
-.material-badge { display: inline-block; align-self: flex-start; font-size: 20rpx; color: #F97316; background: #FFF7ED; padding: 2rpx 12rpx; border-radius: 6rpx; margin-top: 8rpx; }
-.material-badge.general { color: #64748B; background: #F1F5F9; }
-.material-preview { font-size: 26rpx; color: #F97316; margin-left: 16rpx; }
-.empty-text { font-size: 26rpx; color: #94A3B8; text-align: center; padding: 40rpx 0; }
+.material-title { font-size: 28rpx; font-weight: 500; color: #2A2326; }
+.material-badge { display: inline-block; align-self: flex-start; font-size: 20rpx; color: #FC7A57; background: #FFF0E8; padding: 2rpx 12rpx; border-radius: 6rpx; margin-top: 8rpx; }
+.material-badge.general { color: #5A4F4B; background: #F1F5F9; }
+.material-preview { font-size: 26rpx; color: #FC7A57; margin-left: 16rpx; }
+.empty-text { font-size: 26rpx; color: #94877F; text-align: center; padding: 40rpx 0; }
 </style>

+ 18 - 18
train-frontend/pages/mine/index.vue

@@ -257,7 +257,7 @@ export default {
 
 <style scoped>
 .mine-page { min-height: 100vh; background: #F5F5F5; padding: 24rpx 32rpx; }
-.profile-card { display: flex; align-items: center; background: linear-gradient(135deg, #F97316, #EA580C); border-radius: 16rpx; padding: 40rpx 32rpx; margin-bottom: 24rpx; }
+.profile-card { display: flex; align-items: center; background: linear-gradient(135deg, #FC7A57, #F9494F); border-radius: 16rpx; padding: 40rpx 32rpx; margin-bottom: 24rpx; }
 .avatar { width: 100rpx; height: 100rpx; border-radius: 50rpx; background: rgba(255,255,255,0.25); display: flex; align-items: center; justify-content: center; font-size: 56rpx; margin-right: 24rpx; flex-shrink: 0; }
 .profile-info { flex: 1; }
 .profile-name { display: block; font-size: 36rpx; font-weight: 700; color: #FFF; margin-bottom: 8rpx; }
@@ -267,49 +267,49 @@ export default {
 .verify-pending { background: rgba(255,183,77,0.2); color: #FFD54F; }
 .verify-fail { background: rgba(239,83,80,0.2); color: #E57373; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 28rpx 32rpx; margin-bottom: 24rpx; }
-.section-title { display: block; font-size: 30rpx; font-weight: 700; color: #1E293B; margin-bottom: 16rpx; }
-.section-sub { display: block; font-size: 24rpx; color: #94A3B8; margin-top: 8rpx; }
-.empty-text { font-size: 26rpx; color: #94A3B8; text-align: center; padding: 24rpx 0; }
+.section-title { display: block; font-size: 30rpx; font-weight: 700; color: #2A2326; margin-bottom: 16rpx; }
+.section-sub { display: block; font-size: 24rpx; color: #94877F; margin-top: 8rpx; }
+.empty-text { font-size: 26rpx; color: #94877F; text-align: center; padding: 24rpx 0; }
 .cert-ok { display: flex; flex-direction: column; align-items: center; padding: 16rpx 0; }
-.cert-no { font-size: 32rpx; font-weight: 700; color: #F97316; font-family: monospace; margin-bottom: 12rpx; }
+.cert-no { font-size: 32rpx; font-weight: 700; color: #FC7A57; font-family: monospace; margin-bottom: 12rpx; }
 .cert-tip { font-size: 26rpx; color: #22C55E; margin-bottom: 20rpx; }
-.mini-btn { width: 240rpx; height: 64rpx; line-height: 64rpx; background: #F97316; color: #FFF; font-size: 26rpx; border-radius: 32rpx; border: none; padding: 0; text-align: center; }
+.mini-btn { width: 240rpx; height: 64rpx; line-height: 64rpx; background: #FC7A57; color: #FFF; font-size: 26rpx; border-radius: 32rpx; border: none; padding: 0; text-align: center; }
 .mini-btn:active { opacity: 0.85; }
 .cert-verify-box { width: 100%; margin-top: 32rpx; padding-top: 32rpx; border-top: 1rpx solid #F1F5F9; display: flex; flex-direction: column; align-items: center; }
 .verify-input-group { display: flex; width: 100%; max-width: 500rpx; align-items: center; margin-bottom: 16rpx; }
-.verify-input { flex: 1; height: 64rpx; background: #F8FAFC; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 20rpx; font-size: 26rpx; color: #1E293B; }
-.verify-btn { width: 120rpx; height: 64rpx; line-height: 64rpx; background: #F97316; color: #FFF; font-size: 26rpx; border-radius: 8rpx; border: none; padding: 0; margin-left: 16rpx; }
+.verify-input { flex: 1; height: 64rpx; background: #F8FAFC; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 20rpx; font-size: 26rpx; color: #2A2326; }
+.verify-btn { width: 120rpx; height: 64rpx; line-height: 64rpx; background: #FC7A57; color: #FFF; font-size: 26rpx; border-radius: 8rpx; border: none; padding: 0; margin-left: 16rpx; }
 .verify-btn:disabled { background: #CBD5E1; }
 .verify-result { font-size: 26rpx; text-align: center; padding: 12rpx 24rpx; border-radius: 8rpx; background: #F8FAFC; }
 .res-valid { color: #22C55E; border: 1rpx solid #BBF7D0; }
-.res-invalid { color: #94A3B8; border: 1rpx solid #E2E8F0; }
-.cert-progress { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 16rpx; }
+.res-invalid { color: #94877F; border: 1rpx solid #E2E8F0; }
+.cert-progress { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 16rpx; }
 .cert-items { }
 .cert-item { display: flex; align-items: center; padding: 10rpx 0; }
 .cert-icon { font-size: 28rpx; margin-right: 12rpx; }
-.cert-label { font-size: 26rpx; color: #1E293B; }
+.cert-label { font-size: 26rpx; color: #2A2326; }
 .coupon-list { }
 .coupon-item { display: flex; justify-content: space-between; align-items: center; padding: 20rpx 0; border-bottom: 1rpx solid #F1F5F9; }
 .coupon-info { display: flex; align-items: center; flex-wrap: wrap; flex: 1; margin-right: 16rpx; }
-.coupon-code { font-size: 24rpx; color: #64748B; font-family: monospace; margin-right: 16rpx; }
+.coupon-code { font-size: 24rpx; color: #5A4F4B; font-family: monospace; margin-right: 16rpx; }
 .coupon-status { font-size: 22rpx; padding: 4rpx 12rpx; border-radius: 6rpx; }
 .coupon-status.unused { background: #F0FDF4; color: #22C55E; }
-.coupon-status.used { background: #F1F5F9; color: #94A3B8; }
+.coupon-status.used { background: #F1F5F9; color: #94877F; }
 .coupon-status.expired { background: #FEF2F2; color: #EF4444; }
-.redeem-btn { font-size: 26rpx; color: #F97316; font-weight: 600; padding: 8rpx 24rpx; border: 2rpx solid #FED7AA; border-radius: 28rpx; }
-.redeem-btn:active { background: #FFF7ED; }
+.redeem-btn { font-size: 26rpx; color: #FC7A57; font-weight: 600; padding: 8rpx 24rpx; border: 2rpx solid #FED7AA; border-radius: 28rpx; }
+.redeem-btn:active { background: #FFF0E8; }
 .menu-card { background: #FFF; border-radius: 16rpx; overflow: hidden; margin-bottom: 32rpx; }
 .menu-item { display: flex; align-items: center; padding: 28rpx 32rpx; border-bottom: 1rpx solid #F1F5F9; }
 .menu-item:active { background: #F8FAFC; }
 .menu-icon { font-size: 36rpx; margin-right: 20rpx; }
-.menu-text { flex: 1; font-size: 30rpx; color: #1E293B; }
+.menu-text { flex: 1; font-size: 30rpx; color: #2A2326; }
 .menu-arrow { font-size: 32rpx; color: #CBD5E1; }
 .course-entry { display: flex; align-items: center; background: #FFF; border-radius: 16rpx; padding: 28rpx 32rpx; margin-bottom: 32rpx; }
 .course-entry:active { background: #F8FAFC; }
 .course-entry-icon { font-size: 44rpx; margin-right: 20rpx; }
 .course-entry-text { flex: 1; display: flex; flex-direction: column; }
-.course-entry-title { font-size: 30rpx; font-weight: 600; color: #1E293B; margin-bottom: 6rpx; }
-.course-entry-sub { font-size: 24rpx; color: #64748B; }
+.course-entry-title { font-size: 30rpx; font-weight: 600; color: #2A2326; margin-bottom: 6rpx; }
+.course-entry-sub { font-size: 24rpx; color: #5A4F4B; }
 .course-entry-arrow { font-size: 36rpx; color: #CBD5E1; }
 .logout-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FFF; color: #EF5350; font-size: 30rpx; font-weight: 500; border-radius: 16rpx; border: 2rpx solid #FEE2E2; }
 .logout-btn:active { opacity: 0.85; }

+ 8 - 8
train-frontend/pages/pay/index.vue

@@ -157,16 +157,16 @@ export default {
 <style scoped>
 .pay-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .pay-card { background: #FFF; border-radius: 16rpx; padding: 48rpx 32rpx; display: flex; flex-direction: column; align-items: center; }
-.pay-title { font-size: 28rpx; color: #64748B; margin-bottom: 24rpx; }
-.pay-amount { font-size: 64rpx; font-weight: 700; color: #1E293B; margin-bottom: 16rpx; }
-.pay-order { font-size: 24rpx; color: #94A3B8; margin-bottom: 48rpx; }
+.pay-title { font-size: 28rpx; color: #5A4F4B; margin-bottom: 24rpx; }
+.pay-amount { font-size: 64rpx; font-weight: 700; color: #2A2326; margin-bottom: 16rpx; }
+.pay-order { font-size: 24rpx; color: #94877F; margin-bottom: 48rpx; }
 .paid-box { display: flex; flex-direction: column; align-items: center; width: 100%; }
 .paid-icon { width: 96rpx; height: 96rpx; border-radius: 50%; background: #22C55E; color: #FFF; font-size: 56rpx; display: flex; align-items: center; justify-content: center; margin-bottom: 24rpx; }
-.paid-text { font-size: 32rpx; font-weight: 600; color: #1E293B; margin-bottom: 48rpx; }
-.pay-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
+.paid-text { font-size: 32rpx; font-weight: 600; color: #2A2326; margin-bottom: 48rpx; }
+.pay-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
 .pay-btn:active { opacity: 0.85; }
-.pay-tip { font-size: 24rpx; color: #94A3B8; margin-top: 16rpx; }
-.primary-btn { width: 400rpx; height: 80rpx; line-height: 80rpx; background: #F97316; color: #FFF; font-size: 28rpx; font-weight: 600; border-radius: 40rpx; border: none; }
+.pay-tip { font-size: 24rpx; color: #94877F; margin-top: 16rpx; }
+.primary-btn { width: 400rpx; height: 80rpx; line-height: 80rpx; background: #FC7A57; color: #FFF; font-size: 28rpx; font-weight: 600; border-radius: 40rpx; border: none; }
 .primary-btn:active { opacity: 0.85; }
-.empty-tip { font-size: 26rpx; color: #94A3B8; padding: 64rpx 0; text-align: center; }
+.empty-tip { font-size: 26rpx; color: #94877F; padding: 64rpx 0; text-align: center; }
 </style>

+ 4 - 4
train-frontend/pages/pay/result.vue

@@ -55,11 +55,11 @@ export default {
 .result-icon { width: 120rpx; height: 120rpx; border-radius: 50%; color: #FFF; font-size: 72rpx; display: flex; align-items: center; justify-content: center; margin-bottom: 32rpx; }
 .icon-success { background: #22C55E; }
 .icon-fail { background: #EF4444; }
-.result-title { font-size: 36rpx; font-weight: 700; color: #1E293B; margin-bottom: 16rpx; }
+.result-title { font-size: 36rpx; font-weight: 700; color: #2A2326; margin-bottom: 16rpx; }
 .result-amount { font-size: 28rpx; color: #475569; margin-bottom: 8rpx; }
-.result-order { font-size: 24rpx; color: #94A3B8; margin-bottom: 56rpx; }
-.primary-btn { width: 480rpx; height: 84rpx; line-height: 84rpx; background: #F97316; color: #FFF; font-size: 28rpx; font-weight: 600; border-radius: 42rpx; border: none; margin-bottom: 24rpx; }
+.result-order { font-size: 24rpx; color: #94877F; margin-bottom: 56rpx; }
+.primary-btn { width: 480rpx; height: 84rpx; line-height: 84rpx; background: #FC7A57; color: #FFF; font-size: 28rpx; font-weight: 600; border-radius: 42rpx; border: none; margin-bottom: 24rpx; }
 .primary-btn:active { opacity: 0.85; }
-.ghost-btn { width: 480rpx; height: 84rpx; line-height: 84rpx; background: #FFF; color: #64748B; font-size: 28rpx; border-radius: 42rpx; border: 2rpx solid #E2E8F0; }
+.ghost-btn { width: 480rpx; height: 84rpx; line-height: 84rpx; background: #FFF; color: #5A4F4B; font-size: 28rpx; border-radius: 42rpx; border: 2rpx solid #E2E8F0; }
 .ghost-btn:active { opacity: 0.7; }
 </style>

+ 8 - 8
train-frontend/pages/plan/index.vue

@@ -84,18 +84,18 @@ export default {
 <style scoped>
 .plan-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 32rpx; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 32rpx; }
 .existing-plan { margin-top: 16rpx; }
 .plan-status { display: block; font-size: 28rpx; color: #22C55E; font-weight: 500; margin-bottom: 20rpx; }
 .plan-items { margin-bottom: 16rpx; }
 .plan-item { display: flex; padding: 16rpx 0; border-bottom: 1rpx solid #F1F5F9; }
-.day-label { width: 100rpx; font-size: 26rpx; color: #F97316; font-weight: 600; flex-shrink: 0; }
-.day-content { flex: 1; font-size: 28rpx; color: #1E293B; }
-.plan-time { font-size: 24rpx; color: #94A3B8; }
+.day-label { width: 100rpx; font-size: 26rpx; color: #FC7A57; font-weight: 600; flex-shrink: 0; }
+.day-content { flex: 1; font-size: 28rpx; color: #2A2326; }
+.plan-time { font-size: 24rpx; color: #94877F; }
 .day-input { display: flex; align-items: center; margin-bottom: 20rpx; }
-.day-input .day-label { width: 100rpx; font-size: 26rpx; color: #F97316; font-weight: 600; flex-shrink: 0; }
-.form-input { flex: 1; height: 72rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 16rpx; font-size: 28rpx; color: #1E293B; background: #F8FAFC; }
-.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 24rpx; }
+.day-input .day-label { width: 100rpx; font-size: 26rpx; color: #FC7A57; font-weight: 600; flex-shrink: 0; }
+.form-input { flex: 1; height: 72rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 16rpx; font-size: 28rpx; color: #2A2326; background: #F8FAFC; }
+.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 24rpx; }
 .submit-btn:active { opacity: 0.85; }
 </style>

+ 7 - 7
train-frontend/pages/roadmap/index.vue

@@ -77,14 +77,14 @@ export default {
 <style scoped>
 .roadmap-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 12rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 32rpx; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 12rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 32rpx; }
 .form-item { margin-bottom: 28rpx; }
-.form-label { display: block; font-size: 28rpx; color: #1E293B; font-weight: 500; margin-bottom: 12rpx; }
-.form-textarea { width: 100%; min-height: 240rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 20rpx; font-size: 28rpx; color: #1E293B; background: #F8FAFC; }
-.upload-btn { width: 100%; height: 72rpx; line-height: 72rpx; background: #FFF7ED; color: #F97316; font-size: 28rpx; border: 2rpx dashed #F97316; border-radius: 8rpx; margin-bottom: 16rpx; }
+.form-label { display: block; font-size: 28rpx; color: #2A2326; font-weight: 500; margin-bottom: 12rpx; }
+.form-textarea { width: 100%; min-height: 240rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 20rpx; font-size: 28rpx; color: #2A2326; background: #F8FAFC; }
+.upload-btn { width: 100%; height: 72rpx; line-height: 72rpx; background: #FFF0E8; color: #FC7A57; font-size: 28rpx; border: 2rpx dashed #FC7A57; border-radius: 8rpx; margin-bottom: 16rpx; }
 .preview-img { width: 100%; height: 250rpx; border-radius: 8rpx; margin-bottom: 12rpx; }
-.file-name { font-size: 24rpx; color: #64748B; }
-.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 16rpx; }
+.file-name { font-size: 24rpx; color: #5A4F4B; }
+.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 16rpx; }
 .submit-btn:active { opacity: 0.85; }
 </style>

+ 8 - 8
train-frontend/pages/salon/feedback.vue

@@ -99,20 +99,20 @@ export default {
 <style scoped>
 .feedback-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 24rpx; }
-.summary-box { background: #FFF7ED; border-radius: 8rpx; padding: 20rpx 24rpx; margin-bottom: 24rpx; border: 2rpx solid #FED7AA; }
-.summary-text { display: block; font-size: 28rpx; color: #1E293B; font-weight: 600; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 24rpx; }
+.summary-box { background: #FFF0E8; border-radius: 8rpx; padding: 20rpx 24rpx; margin-bottom: 24rpx; border: 2rpx solid #FED7AA; }
+.summary-text { display: block; font-size: 28rpx; color: #2A2326; font-weight: 600; }
 .rate-box { margin-bottom: 24rpx; }
 .form-label { display: block; font-size: 26rpx; color: #475569; font-weight: 500; margin-bottom: 12rpx; }
 .star-row { display: flex; align-items: center; }
 .star { font-size: 56rpx; margin-right: 16rpx; }
-.star-on { color: #F97316; }
+.star-on { color: #FC7A57; }
 .star-off { color: #CBD5E1; }
-.rate-tip { font-size: 26rpx; color: #64748B; margin-left: 8rpx; }
+.rate-tip { font-size: 26rpx; color: #5A4F4B; margin-left: 8rpx; }
 .form-item { margin-bottom: 24rpx; }
-.form-input { width: 100%; box-sizing: border-box; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 16rpx; font-size: 28rpx; color: #1E293B; background: #F8FAFC; }
+.form-input { width: 100%; box-sizing: border-box; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 16rpx; font-size: 28rpx; color: #2A2326; background: #F8FAFC; }
 .textarea { height: 240rpx; }
-.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 24rpx; }
+.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 24rpx; }
 .submit-btn:active { opacity: 0.85; }
 </style>

+ 7 - 7
train-frontend/pages/salon/form.vue

@@ -106,16 +106,16 @@ export default {
 <style scoped>
 .form-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 32rpx; }
-.summary-box { background: #FFF7ED; border-radius: 8rpx; padding: 20rpx 24rpx; margin-bottom: 24rpx; border: 2rpx solid #FED7AA; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 32rpx; }
+.summary-box { background: #FFF0E8; border-radius: 8rpx; padding: 20rpx 24rpx; margin-bottom: 24rpx; border: 2rpx solid #FED7AA; }
 .summary-row { display: flex; align-items: center; margin-bottom: 8rpx; }
 .summary-row:last-child { margin-bottom: 0; }
-.summary-label { font-size: 24rpx; color: #64748B; width: 140rpx; flex-shrink: 0; }
-.summary-value { font-size: 26rpx; color: #1E293B; font-weight: 600; flex: 1; }
+.summary-label { font-size: 24rpx; color: #5A4F4B; width: 140rpx; flex-shrink: 0; }
+.summary-value { font-size: 26rpx; color: #2A2326; font-weight: 600; flex: 1; }
 .form-item { margin-bottom: 24rpx; }
 .form-label { display: block; font-size: 26rpx; color: #475569; font-weight: 500; margin-bottom: 12rpx; }
-.form-input { height: 72rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 16rpx; font-size: 28rpx; color: #1E293B; background: #F8FAFC; }
-.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 24rpx; }
+.form-input { height: 72rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 16rpx; font-size: 28rpx; color: #2A2326; background: #F8FAFC; }
+.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 24rpx; }
 .submit-btn:active { opacity: 0.85; }
 </style>

+ 10 - 10
train-frontend/pages/salon/list.vue

@@ -116,24 +116,24 @@ export default {
 .salon-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; }
 .head-row { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 8rpx; }
-.mine-link { font-size: 24rpx; color: #F97316; flex-shrink: 0; padding-top: 4rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 24rpx; }
-.empty-tip { font-size: 26rpx; color: #94A3B8; padding: 32rpx 0; text-align: center; }
+.mine-link { font-size: 24rpx; color: #FC7A57; flex-shrink: 0; padding-top: 4rpx; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 24rpx; }
+.empty-tip { font-size: 26rpx; color: #94877F; padding: 32rpx 0; text-align: center; }
 .salon-card { border: 2rpx solid #E2E8F0; border-radius: 12rpx; padding: 24rpx; margin-bottom: 20rpx; }
 .salon-head { margin-bottom: 16rpx; }
-.salon-theme { display: block; background: #FFF7ED; color: #F97316; font-size: 22rpx; font-weight: 600; padding: 4rpx 12rpx; border-radius: 4rpx; width: fit-content; margin-bottom: 8rpx; }
-.salon-title { display: block; font-size: 30rpx; font-weight: 600; color: #1E293B; }
+.salon-theme { display: block; background: #FFF0E8; color: #FC7A57; font-size: 22rpx; font-weight: 600; padding: 4rpx 12rpx; border-radius: 4rpx; width: fit-content; margin-bottom: 8rpx; }
+.salon-title { display: block; font-size: 30rpx; font-weight: 600; color: #2A2326; }
 .salon-info { margin-bottom: 16rpx; }
 .info-item { display: flex; align-items: center; margin-bottom: 4rpx; }
-.info-label { font-size: 24rpx; color: #64748B; width: 70rpx; flex-shrink: 0; }
+.info-label { font-size: 24rpx; color: #5A4F4B; width: 70rpx; flex-shrink: 0; }
 .info-value { font-size: 26rpx; color: #475569; }
 .salon-price-box { display: flex; align-items: center; gap: 16rpx; margin-bottom: 16rpx; }
-.salon-price { font-size: 28rpx; color: #F97316; font-weight: 600; }
+.salon-price { font-size: 28rpx; color: #FC7A57; font-weight: 600; }
 .salon-price-free { font-size: 28rpx; color: #22C55E; font-weight: 600; }
-.member-price { font-size: 24rpx; color: #64748B; }
+.member-price { font-size: 24rpx; color: #5A4F4B; }
 .salon-foot { display: flex; align-items: center; justify-content: flex-end; }
-.enroll-btn { width: 200rpx; height: 64rpx; line-height: 64rpx; font-size: 26rpx; background: #F97316; color: #FFF; border-radius: 32rpx; border: none; margin: 0; }
+.enroll-btn { width: 200rpx; height: 64rpx; line-height: 64rpx; font-size: 26rpx; background: #FC7A57; color: #FFF; border-radius: 32rpx; border: none; margin: 0; }
 .enroll-btn:active { opacity: 0.85; }
 .enroll-btn:disabled { background: #CBD5E1; }
 </style>

+ 11 - 11
train-frontend/pages/salon/mine.vue

@@ -165,27 +165,27 @@ export default {
 <style scoped>
 .mine-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 24rpx; }
-.empty-tip { font-size: 26rpx; color: #94A3B8; padding: 32rpx 0; text-align: center; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 24rpx; }
+.empty-tip { font-size: 26rpx; color: #94877F; padding: 32rpx 0; text-align: center; }
 .salon-card { border: 2rpx solid #E2E8F0; border-radius: 12rpx; padding: 24rpx; margin-bottom: 20rpx; }
 .salon-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8rpx; }
   .head-right { display: flex; align-items: center; gap: 12rpx; }
   .salon-state { font-size: 22rpx; font-weight: 600; padding: 2rpx 12rpx; border-radius: 4rpx; }
   .state-go { background: #DCFCE7; color: #16A34A; }
-  .state-wait { background: #FFF7ED; color: #F97316; }
-  .state-end { background: #F1F5F9; color: #94A3B8; }
-.salon-theme { display: block; background: #FFF7ED; color: #F97316; font-size: 22rpx; font-weight: 600; padding: 4rpx 12rpx; border-radius: 4rpx; }
+  .state-wait { background: #FFF0E8; color: #FC7A57; }
+  .state-end { background: #F1F5F9; color: #94877F; }
+.salon-theme { display: block; background: #FFF0E8; color: #FC7A57; font-size: 22rpx; font-weight: 600; padding: 4rpx 12rpx; border-radius: 4rpx; }
 .salon-status { font-size: 22rpx; color: #22C55E; font-weight: 600; }
-.salon-title { display: block; font-size: 30rpx; font-weight: 600; color: #1E293B; margin-bottom: 12rpx; }
+.salon-title { display: block; font-size: 30rpx; font-weight: 600; color: #2A2326; margin-bottom: 12rpx; }
 .salon-info { margin-bottom: 16rpx; }
 .info-item { display: flex; align-items: center; margin-bottom: 4rpx; }
-.info-label { font-size: 24rpx; color: #64748B; width: 70rpx; flex-shrink: 0; }
+.info-label { font-size: 24rpx; color: #5A4F4B; width: 70rpx; flex-shrink: 0; }
 .info-value { font-size: 26rpx; color: #475569; }
 .salon-foot { display: flex; align-items: center; justify-content: flex-end; gap: 16rpx; }
 .mini-btn { height: 60rpx; line-height: 60rpx; font-size: 26rpx; border-radius: 30rpx; border: none; margin: 0; padding: 0 32rpx; }
-.mini-btn.primary { background: #F97316; color: #FFF; }
-.mini-btn.plain { background: #FFF; color: #F97316; border: 2rpx solid #F97316; }
+.mini-btn.primary { background: #FC7A57; color: #FFF; }
+.mini-btn.plain { background: #FFF; color: #FC7A57; border: 2rpx solid #FC7A57; }
 .mini-btn:active { opacity: 0.85; }
-.foot-tip { font-size: 24rpx; color: #94A3B8; }
+.foot-tip { font-size: 24rpx; color: #94877F; }
 </style>

+ 11 - 11
train-frontend/pages/scoreboard/index.vue

@@ -79,23 +79,23 @@ export default {
 <style scoped>
 .scoreboard-page { min-height: 100vh; background: #F5F5F5; padding: 24rpx 32rpx; }
 .page-header { margin-bottom: 32rpx; }
-.page-title { display: block; font-size: 40rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; }
-.page-desc { display: block; font-size: 26rpx; color: #64748B; }
+.page-title { display: block; font-size: 40rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; }
+.page-desc { display: block; font-size: 26rpx; color: #5A4F4B; }
 .empty-state { text-align: center; padding: 80rpx 0; }
-.empty-text { font-size: 28rpx; color: #94A3B8; }
+.empty-text { font-size: 28rpx; color: #94877F; }
 .rank-list { display: flex; flex-direction: column; gap: 16rpx; }
 .rank-item { display: flex; align-items: center; background: #FFF; border-radius: 16rpx; padding: 24rpx; }
-.rank-gold { background: linear-gradient(135deg, #FFF7ED, #FFFBEB); border: 2rpx solid #FDE68A; }
+.rank-gold { background: linear-gradient(135deg, #FFF0E8, #FFFBEB); border: 2rpx solid #FDE68A; }
 .rank-silver { background: linear-gradient(135deg, #F8FAFC, #F1F5F9); border: 2rpx solid #E2E8F0; }
-.rank-bronze { background: linear-gradient(135deg, #FFF7ED, #FEF3E2); border: 2rpx solid #FED7AA; }
+.rank-bronze { background: linear-gradient(135deg, #FFF0E8, #FEF3E2); border: 2rpx solid #FED7AA; }
 .rank-num { width: 80rpx; text-align: center; margin-right: 16rpx; }
 .rank-medal { font-size: 40rpx; }
-.rank-index { font-size: 32rpx; font-weight: 700; color: #94A3B8; }
+.rank-index { font-size: 32rpx; font-weight: 700; color: #94877F; }
 .rank-info { flex: 1; }
-.rank-name { display: block; font-size: 30rpx; font-weight: 600; color: #1E293B; }
-.rank-slogan { display: block; font-size: 24rpx; color: #F97316; margin-top: 4rpx; }
-.rank-members { display: block; font-size: 22rpx; color: #94A3B8; margin-top: 4rpx; }
+.rank-name { display: block; font-size: 30rpx; font-weight: 600; color: #2A2326; }
+.rank-slogan { display: block; font-size: 24rpx; color: #FC7A57; margin-top: 4rpx; }
+.rank-members { display: block; font-size: 22rpx; color: #94877F; margin-top: 4rpx; }
 .rank-score { text-align: right; }
-.score-num { font-size: 40rpx; font-weight: 700; color: #F97316; }
-.score-label { font-size: 22rpx; color: #64748B; margin-left: 4rpx; }
+.score-num { font-size: 40rpx; font-weight: 700; color: #FC7A57; }
+.score-label { font-size: 22rpx; color: #5A4F4B; margin-left: 4rpx; }
 </style>

+ 15 - 15
train-frontend/pages/share/index.vue

@@ -73,31 +73,31 @@ export default {
       var height = 450
       // 背景
       var gradient = ctx.createLinearGradient(0, 0, 0, height)
-      gradient.addColorStop(0, '#FFF7ED')
+      gradient.addColorStop(0, '#FFF0E8')
       gradient.addColorStop(1, '#FED7AA')
       ctx.setFillStyle(gradient)
       ctx.fillRect(0, 0, width, height)
       // 顶部品牌区
-      ctx.setFillStyle('#EA580C')
+      ctx.setFillStyle('#F9494F')
       ctx.fillRect(0, 0, width, 8)
-      ctx.setFillStyle('#1E293B')
+      ctx.setFillStyle('#2A2326')
       ctx.setFontSize(22)
       ctx.setTextAlign('center')
       ctx.fillText('爱伴·AI之旅', width / 2, 60)
-      ctx.setFillStyle('#64748B')
+      ctx.setFillStyle('#5A4F4B')
       ctx.setFontSize(13)
       ctx.fillText('我的专属邀请码', width / 2, 90)
       // 中央邀请码卡片
       ctx.setFillStyle('#FFFFFF')
       this.roundRect(ctx, 40, 130, width - 80, 120, 12)
-      ctx.setFillStyle('#F97316')
+      ctx.setFillStyle('#FC7A57')
       ctx.setFontSize(15)
       ctx.fillText('我的邀请码', width / 2, 165)
-      ctx.setFillStyle('#1E293B')
+      ctx.setFillStyle('#2A2326')
       ctx.setFontSize(34)
       ctx.fillText(self.inviteCode || '------', width / 2, 215)
       // 底部提示
-      ctx.setFillStyle('#EA580C')
+      ctx.setFillStyle('#F9494F')
       ctx.setFontSize(14)
       ctx.fillText('扫码加入训练营', width / 2, 320)
       // 二维码占位区(生产环境接入 getwxacodeunlimit 后绘制小程序码)
@@ -110,7 +110,7 @@ export default {
       ctx.setFillStyle('#CBD5E1')
       ctx.setFontSize(11)
       ctx.fillText('小程序码', width / 2, 390)
-      ctx.setFillStyle('#94A3B8')
+      ctx.setFillStyle('#94877F')
       ctx.setFontSize(12)
       ctx.fillText('爱伴·AI之旅训练营', width / 2, 420)
       ctx.draw(false)
@@ -235,14 +235,14 @@ export default {
 .poster-image { width: 100%; border-radius: 12rpx; }
 .invite-row { background: #FFF; border-radius: 16rpx; padding: 32rpx; margin-bottom: 24rpx; display: flex; align-items: center; }
 .share-text-row { padding: 20rpx 32rpx; }
-.share-text-preview { flex: 1; font-size: 24rpx; color: #F97316; margin-left: 24rpx; line-height: 1.5; }
+.share-text-preview { flex: 1; font-size: 24rpx; color: #FC7A57; margin-left: 24rpx; line-height: 1.5; }
 .share-text-preview:active { opacity: 0.7; }
-.invite-label { font-size: 28rpx; color: #1E293B; font-weight: 600; flex-shrink: 0; }
-.invite-code { flex: 1; font-size: 32rpx; color: #F97316; font-weight: 700; font-family: monospace; margin-left: 24rpx; letter-spacing: 4rpx; }
-.copy-btn { flex-shrink: 0; height: 60rpx; line-height: 60rpx; padding: 0 32rpx; background: #F97316; color: #FFF; font-size: 26rpx; border-radius: 30rpx; border: none; }
+.invite-label { font-size: 28rpx; color: #2A2326; font-weight: 600; flex-shrink: 0; }
+.invite-code { flex: 1; font-size: 32rpx; color: #FC7A57; font-weight: 700; font-family: monospace; margin-left: 24rpx; letter-spacing: 4rpx; }
+.copy-btn { flex-shrink: 0; height: 60rpx; line-height: 60rpx; padding: 0 32rpx; background: #FC7A57; color: #FFF; font-size: 26rpx; border-radius: 30rpx; border: none; }
 .copy-btn[disabled] { background: #FDBA74; color: #FFF; }
-.save-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 8rpx; }
+.save-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 8rpx; }
 .save-btn:active { opacity: 0.85; }
-.stats-link { display: flex; align-items: center; justify-content: center; padding: 32rpx 0; color: #64748B; font-size: 28rpx; }
-.stats-link .arrow { color: #94A3B8; font-size: 32rpx; margin-left: 8rpx; }
+.stats-link { display: flex; align-items: center; justify-content: center; padding: 32rpx 0; color: #5A4F4B; font-size: 28rpx; }
+.stats-link .arrow { color: #94877F; font-size: 32rpx; margin-left: 8rpx; }
 </style>

+ 5 - 5
train-frontend/pages/share/stats.vue

@@ -70,11 +70,11 @@ export default {
 .stat-card { background: #FFF; border-radius: 16rpx; padding: 40rpx 24rpx; margin-bottom: 24rpx; }
 .stat-row { display: flex; justify-content: space-around; }
 .stat-item { display: flex; flex-direction: column; align-items: center; flex: 1; }
-.stat-num { font-size: 56rpx; font-weight: 700; color: #F97316; }
-.stat-label { font-size: 26rpx; color: #64748B; margin-top: 12rpx; }
+.stat-num { font-size: 56rpx; font-weight: 700; color: #FC7A57; }
+.stat-label { font-size: 26rpx; color: #5A4F4B; margin-top: 12rpx; }
 .tip-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; margin-bottom: 24rpx; }
-.tip-title { display: block; font-size: 30rpx; font-weight: 700; color: #1E293B; margin-bottom: 16rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
+.tip-title { display: block; font-size: 30rpx; font-weight: 700; color: #2A2326; margin-bottom: 16rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
 .tip-desc { display: block; font-size: 26rpx; color: #475569; line-height: 48rpx; }
-.poster-link { display: flex; align-items: center; justify-content: center; padding: 32rpx 0; color: #64748B; font-size: 28rpx; }
-.poster-link .arrow { color: #94A3B8; font-size: 32rpx; margin-left: 8rpx; }
+.poster-link { display: flex; align-items: center; justify-content: center; padding: 32rpx 0; color: #5A4F4B; font-size: 28rpx; }
+.poster-link .arrow { color: #94877F; font-size: 32rpx; margin-left: 8rpx; }
 </style>

+ 10 - 10
train-frontend/pages/survey/index.vue

@@ -5,7 +5,7 @@
       <text class="card-desc">选择您最感兴趣的领域,提交后有机会获得测评兑换卡</text>
       <view class="interest-list">
         <label class="interest-item" v-for="(item, idx) in interests" :key="idx">
-          <radio :value="item.value" :checked="selected === item.value" @tap="selected = item.value" color="#F97316" />
+          <radio :value="item.value" :checked="selected === item.value" @tap="selected = item.value" color="#FC7A57" />
           <text class="interest-icon">{{ item.icon }}</text>
           <view class="interest-info">
             <text class="interest-name">{{ item.label }}</text>
@@ -85,22 +85,22 @@ export default {
 <style scoped>
 .survey-page { min-height: 100vh; background: #F5F5F5; padding: 24rpx 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; margin-bottom: 24rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 8rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
-.card-desc { display: block; font-size: 26rpx; color: #64748B; margin-bottom: 28rpx; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 8rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
+.card-desc { display: block; font-size: 26rpx; color: #5A4F4B; margin-bottom: 28rpx; }
 .interest-list { margin-bottom: 24rpx; }
 .interest-item { display: flex; align-items: center; padding: 24rpx; border: 2rpx solid #E2E8F0; border-radius: 12rpx; margin-bottom: 16rpx; }
 .interest-icon { font-size: 40rpx; margin: 0 16rpx; }
-.interest-name { display: block; font-size: 28rpx; font-weight: 600; color: #1E293B; }
-.interest-desc { display: block; font-size: 24rpx; color: #64748B; margin-top: 4rpx; }
-.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
+.interest-name { display: block; font-size: 28rpx; font-weight: 600; color: #2A2326; }
+.interest-desc { display: block; font-size: 24rpx; color: #5A4F4B; margin-top: 4rpx; }
+.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
 .submit-btn:active { opacity: 0.85; }
-.empty-text { font-size: 26rpx; color: #94A3B8; text-align: center; padding: 24rpx 0; }
+.empty-text { font-size: 26rpx; color: #94877F; text-align: center; padding: 24rpx 0; }
 .coupon-list { margin-top: 16rpx; }
 .coupon-item { display: flex; justify-content: space-between; align-items: center; padding: 20rpx 0; border-bottom: 1rpx solid #F1F5F9; }
-.coupon-type { font-size: 28rpx; font-weight: 500; color: #1E293B; }
+.coupon-type { font-size: 28rpx; font-weight: 500; color: #2A2326; }
 .coupon-info { display: flex; align-items: center; gap: 16rpx; }
-.coupon-code { font-size: 24rpx; color: #64748B; font-family: monospace; }
+.coupon-code { font-size: 24rpx; color: #5A4F4B; font-family: monospace; }
 .coupon-status { font-size: 22rpx; padding: 4rpx 12rpx; border-radius: 6rpx; }
 .coupon-status.unused { background: #F0FDF4; color: #22C55E; }
-.coupon-status.used { background: #F1F5F9; color: #94A3B8; }
+.coupon-status.used { background: #F1F5F9; color: #94877F; }
 </style>

+ 6 - 6
train-frontend/pages/teaching/index.vue

@@ -104,13 +104,13 @@ export default {
 <style scoped>
 .teaching-page { min-height: 100vh; background: #F5F5F5; padding: 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 24rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 24rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
 .form-item { margin-bottom: 28rpx; }
-.form-label { display: block; font-size: 28rpx; color: #1E293B; font-weight: 500; margin-bottom: 12rpx; }
-.form-input, .picker-display { width: 100%; height: 80rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 20rpx; font-size: 28rpx; color: #1E293B; background: #F8FAFC; line-height: 80rpx; }
-.form-textarea { width: 100%; min-height: 200rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 20rpx; font-size: 28rpx; color: #1E293B; background: #F8FAFC; }
-.upload-btn { width: 100%; height: 72rpx; line-height: 72rpx; background: #FFF7ED; color: #F97316; font-size: 28rpx; border: 2rpx dashed #F97316; border-radius: 8rpx; margin-bottom: 16rpx; }
+.form-label { display: block; font-size: 28rpx; color: #2A2326; font-weight: 500; margin-bottom: 12rpx; }
+.form-input, .picker-display { width: 100%; height: 80rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 20rpx; font-size: 28rpx; color: #2A2326; background: #F8FAFC; line-height: 80rpx; }
+.form-textarea { width: 100%; min-height: 200rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 20rpx; font-size: 28rpx; color: #2A2326; background: #F8FAFC; }
+.upload-btn { width: 100%; height: 72rpx; line-height: 72rpx; background: #FFF0E8; color: #FC7A57; font-size: 28rpx; border: 2rpx dashed #FC7A57; border-radius: 8rpx; margin-bottom: 16rpx; }
 .preview-img { width: 100%; height: 250rpx; border-radius: 8rpx; margin-bottom: 16rpx; }
-.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 16rpx; }
+.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; margin-top: 16rpx; }
 .submit-btn:active { opacity: 0.85; }
 </style>

+ 12 - 12
train-frontend/pages/upload/index.vue

@@ -11,13 +11,13 @@
       <view class="form-item">
         <text class="form-label">上传类型</text>
         <radio-group @change="onTypeChange">
-          <label class="radio-item"><radio value="deep" :checked="uploadForm.type === 'deep'" color="#F97316" />深度分析</label>
-          <label class="radio-item"><radio value="taught" :checked="uploadForm.type === 'taught'" color="#F97316" />教学成果</label>
+          <label class="radio-item"><radio value="deep" :checked="uploadForm.type === 'deep'" color="#FC7A57" />深度分析</label>
+          <label class="radio-item"><radio value="taught" :checked="uploadForm.type === 'taught'" color="#FC7A57" />教学成果</label>
         </radio-group>
       </view>
       <view class="form-item">
         <label class="check-item">
-          <checkbox :checked="uploadForm.desensitized" @tap="uploadForm.desensitized = !uploadForm.desensitized" color="#F97316" />
+          <checkbox :checked="uploadForm.desensitized" @tap="uploadForm.desensitized = !uploadForm.desensitized" color="#FC7A57" />
           <text>我已确认数据已脱敏处理</text>
         </label>
       </view>
@@ -135,19 +135,19 @@ onShow() {
 <style scoped>
 .upload-page { min-height: 100vh; background: #F5F5F5; padding: 24rpx 32rpx; }
 .section-card { background: #FFF; border-radius: 16rpx; padding: 32rpx; margin-bottom: 24rpx; }
-.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 24rpx; border-left: 8rpx solid #F97316; padding-left: 16rpx; }
+.section-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 24rpx; border-left: 8rpx solid #FC7A57; padding-left: 16rpx; }
 .form-item { margin-bottom: 24rpx; }
-.form-label { display: block; font-size: 28rpx; color: #1E293B; font-weight: 500; margin-bottom: 12rpx; }
-.picker-display { height: 72rpx; line-height: 72rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 20rpx; font-size: 28rpx; color: #1E293B; background: #F8FAFC; }
-.radio-item, .check-item { display: flex; align-items: center; font-size: 28rpx; color: #1E293B; margin-bottom: 12rpx; }
-.upload-btn { width: 100%; height: 72rpx; line-height: 72rpx; background: #FFF7ED; color: #F97316; font-size: 28rpx; border: 2rpx dashed #F97316; border-radius: 8rpx; margin-bottom: 16rpx; }
+.form-label { display: block; font-size: 28rpx; color: #2A2326; font-weight: 500; margin-bottom: 12rpx; }
+.picker-display { height: 72rpx; line-height: 72rpx; border: 2rpx solid #E2E8F0; border-radius: 8rpx; padding: 0 20rpx; font-size: 28rpx; color: #2A2326; background: #F8FAFC; }
+.radio-item, .check-item { display: flex; align-items: center; font-size: 28rpx; color: #2A2326; margin-bottom: 12rpx; }
+.upload-btn { width: 100%; height: 72rpx; line-height: 72rpx; background: #FFF0E8; color: #FC7A57; font-size: 28rpx; border: 2rpx dashed #FC7A57; border-radius: 8rpx; margin-bottom: 16rpx; }
 .preview-img { width: 100%; height: 300rpx; border-radius: 8rpx; margin-bottom: 16rpx; }
-.submit-btn { width: 100%; height: 80rpx; line-height: 80rpx; background: #F97316; color: #FFF; font-size: 28rpx; font-weight: 500; border-radius: 40rpx; border: none; }
+.submit-btn { width: 100%; height: 80rpx; line-height: 80rpx; background: #FC7A57; color: #FFF; font-size: 28rpx; font-weight: 500; border-radius: 40rpx; border: none; }
 .submit-btn:active { opacity: 0.85; }
-.empty-text { font-size: 26rpx; color: #94A3B8; text-align: center; padding: 24rpx 0; }
+.empty-text { font-size: 26rpx; color: #94877F; text-align: center; padding: 24rpx 0; }
 .sub-item { border-bottom: 1rpx solid #F1F5F9; padding: 20rpx 0; }
 .sub-header { display: flex; justify-content: space-between; align-items: center; }
-.sub-type { font-size: 28rpx; color: #1E293B; font-weight: 500; }
-.sub-status { font-size: 24rpx; color: #F97316; }
+.sub-type { font-size: 28rpx; color: #2A2326; font-weight: 500; }
+.sub-status { font-size: 24rpx; color: #FC7A57; }
 .sub-thumb { width: 120rpx; height: 120rpx; border-radius: 8rpx; margin-top: 12rpx; }
 </style>

+ 5 - 5
train-frontend/pages/verify/index.vue

@@ -141,13 +141,13 @@ if (!self.$store.state.classId) {
   display: block;
   font-size: 40rpx;
   font-weight: 700;
-  color: #1E293B;
+  color: #2A2326;
   margin-bottom: 12rpx;
 }
 .page-desc {
   display: block;
   font-size: 26rpx;
-  color: #64748B;
+  color: #5A4F4B;
 }
 .form-card {
   background: #FFFFFF;
@@ -161,7 +161,7 @@ if (!self.$store.state.classId) {
 .form-label {
   display: block;
   font-size: 28rpx;
-  color: #1E293B;
+  color: #2A2326;
   font-weight: 500;
   margin-bottom: 12rpx;
 }
@@ -175,7 +175,7 @@ if (!self.$store.state.classId) {
   border-radius: 12rpx;
   padding: 0 24rpx;
   font-size: 28rpx;
-  color: #1E293B;
+  color: #2A2326;
   background: #F8FAFC;
 }
 .form-error {
@@ -188,7 +188,7 @@ if (!self.$store.state.classId) {
   width: 100%;
   height: 96rpx;
   line-height: 96rpx;
-  background: #F97316;
+  background: #FC7A57;
   color: #FFFFFF;
   font-size: 32rpx;
   font-weight: 600;

+ 11 - 11
train-frontend/pages/vote/index.vue

@@ -140,25 +140,25 @@ export default {
 <style scoped>
 .vote-page { min-height: 100vh; background: #F5F5F5; padding: 24rpx 32rpx; }
 .round-toggle { display: flex; background: #FFF; border-radius: 12rpx; overflow: hidden; margin-bottom: 24rpx; }
-.round-tab { flex: 1; height: 80rpx; line-height: 80rpx; text-align: center; font-size: 28rpx; color: #64748B; background: #FFF; }
-.round-tab.active { color: #FFF; background: #F97316; font-weight: 600; }
-.vote-hint { display: block; font-size: 26rpx; color: #F97316; margin-bottom: 20rpx; text-align: center; }
+.round-tab { flex: 1; height: 80rpx; line-height: 80rpx; text-align: center; font-size: 28rpx; color: #5A4F4B; background: #FFF; }
+.round-tab.active { color: #FFF; background: #FC7A57; font-weight: 600; }
+.vote-hint { display: block; font-size: 26rpx; color: #FC7A57; margin-bottom: 20rpx; text-align: center; }
 .group-list { background: #FFF; border-radius: 12rpx; overflow: hidden; margin-bottom: 24rpx; }
 .group-item { display: flex; align-items: center; justify-content: space-between; padding: 24rpx 28rpx; border-bottom: 1rpx solid #F1F5F9; }
-.group-item.selected { background: #FFF7ED; }
+.group-item.selected { background: #FFF0E8; }
 .group-item.disabled { opacity: 0.4; }
-.group-name { font-size: 28rpx; color: #1E293B; }
+.group-name { font-size: 28rpx; color: #2A2326; }
 .group-check { font-size: 28rpx; }
-.group-disabled { font-size: 24rpx; color: #94A3B8; margin-left: 8rpx; }
-.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #F97316; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
+.group-disabled { font-size: 24rpx; color: #94877F; margin-left: 8rpx; }
+.submit-btn { width: 100%; height: 88rpx; line-height: 88rpx; background: #FC7A57; color: #FFF; font-size: 30rpx; font-weight: 600; border-radius: 44rpx; border: none; }
 .submit-btn:active { opacity: 0.85; }
 .result-section { background: #FFF; border-radius: 16rpx; padding: 32rpx; }
-.result-title { display: block; font-size: 32rpx; font-weight: 700; color: #1E293B; margin-bottom: 24rpx; }
+.result-title { display: block; font-size: 32rpx; font-weight: 700; color: #2A2326; margin-bottom: 24rpx; }
 .bar-list { margin-bottom: 24rpx; }
 .bar-item { display: flex; align-items: center; margin-bottom: 16rpx; }
-.bar-label { width: 160rpx; font-size: 26rpx; color: #1E293B; text-align: right; margin-right: 16rpx; }
+.bar-label { width: 160rpx; font-size: 26rpx; color: #2A2326; text-align: right; margin-right: 16rpx; }
 .bar-track { flex: 1; height: 32rpx; background: #F1F5F9; border-radius: 16rpx; overflow: hidden; }
-.bar-fill { height: 100%; background: linear-gradient(90deg, #F97316, #FB923C); border-radius: 16rpx; transition: width 0.5s; }
-.bar-count { width: 80rpx; font-size: 24rpx; color: #64748B; text-align: right; margin-left: 12rpx; }
+.bar-fill { height: 100%; background: linear-gradient(90deg, #FC7A57, #FF9E5E); border-radius: 16rpx; transition: width 0.5s; }
+.bar-count { width: 80rpx; font-size: 24rpx; color: #5A4F4B; text-align: right; margin-left: 12rpx; }
 .voted-badge { text-align: center; font-size: 26rpx; color: #22C55E; background: #F0FDF4; padding: 16rpx; border-radius: 8rpx; }
 </style>

BIN
train-frontend/static/logo-icon.png


BIN
train-frontend/static/logo-mark.png


BIN
train-frontend/static/logo-text.png


+ 19 - 9
train-frontend/uni.scss

@@ -1,24 +1,34 @@
-$uni-primary: #F97316;
-$uni-primary-light: #FB923C;
-$uni-primary-dark: #EA580C;
-$uni-primary-pale: #FFF7ED;
+// 品牌 V3 规范(爱伴·AI之旅):爱伴橙 #FC7A57 主色,渐变 #FF9E5E → #FC7A57 → #F9494F
+// 对比度红线:爱伴橙/珊瑚红不得用于 18px 以下正文(正文用深墨 #2A2326)
+$uni-primary: #FC7A57;
+$uni-primary-light: #FF9E5E;
+$uni-primary-dark: #F9494F;
+$uni-primary-pale: #FFF0E8;
+$brand-gradient: linear-gradient(135deg, #FF9E5E 0%, #FC7A57 46%, #F9494F 100%);
+$brand-warm: #6B4F52;
+$brand-ink: #2A2326;
+$brand-ink2: #5A4F4B;
+$brand-ink3: #94877F;
+$brand-line: #EFE6E0;
+$brand-paper: #FDFBFA;
+$brand-deep: #1B212C;
 $uni-success: #22C55E;
 $uni-success-light: #86EFAC;
 $uni-warning: #FFB74D;
 $uni-warning-light: #FFD54F;
 $uni-error: #EF5350;
 $uni-error-light: #E57373;
-$uni-info: #F97316;
+$uni-info: #FC7A57;
 $uni-bg-color: #F5F5F5;
 $uni-bg-color-grey: #EDF2F7;
 $uni-bg-color-dark: #E2E8F0;
 $uni-surface: #FFFFFF;
 $uni-border-color: #CBD5E1;
 $uni-border-color-light: #E2E8F0;
-$uni-text-color: #1E293B;
-$uni-text-color-secondary: #64748B;
-$uni-text-color-grey: #94A3B8;
-$uni-text-color-placeholder: #94A3B8;
+$uni-text-color: #2A2326;
+$uni-text-color-secondary: #5A4F4B;
+$uni-text-color-grey: #94877F;
+$uni-text-color-placeholder: #94877F;
 $uni-text-color-inverse: #FFFFFF;
 $uni-font-size-xs: 20rpx;
 $uni-font-size-sm: 24rpx;

BIN
train-web/src/assets/logo-mark.png


BIN
train-web/src/assets/logo-text.png


+ 7 - 1
train-web/src/router/index.js

@@ -46,13 +46,19 @@ const routes = [
         name: 'Classes',
         component: () => import('@/views/Classes.vue'),
         meta: { title: '班级管理' }
-      }
+      },
       {
         path: 'salons',
         name: 'Salons',
         component: () => import('@/views/Salons.vue'),
         meta: { title: '沙龙管理' }
       },
+      {
+        path: 'members',
+        name: 'Members',
+        component: () => import('@/views/Members.vue'),
+        meta: { title: '会员台账' }
+      },
       {
         path: 'enrollments',
         name: 'Enrollments',

+ 2 - 2
train-web/src/views/Courses.vue

@@ -404,7 +404,7 @@ self.submitting = true
 .tips {
   margin-left: 8px;
   font-size: 12px;
-  color: #94A3B8;
+  color: #94877F;
 }
 
 .section-toolbar {
@@ -417,6 +417,6 @@ self.submitting = true
   padding: 20px 0;
   text-align: center;
   font-size: 13px;
-  color: #94A3B8;
+  color: #94877F;
 }
 </style>

+ 2 - 2
train-web/src/views/Dashboard.vue

@@ -93,12 +93,12 @@ export default {
 .stat-value {
   font-size: 32px;
   font-weight: 700;
-  color: #6366F1;
+  color: #FC7A57;
   margin-bottom: 8px;
 }
 
 .stat-label {
   font-size: 13px;
-  color: #94A3B8;
+  color: #94877F;
 }
 </style>

+ 26 - 12
train-web/src/views/Layout.vue

@@ -1,14 +1,17 @@
 <template>
   <el-container class="layout-container">
     <el-aside width="200px" class="el-aside">
-      <div class="logo">爱伴·AI之旅</div>
+      <div class="logo">
+        <img class="logo-mark" src="@/assets/logo-mark.png" alt="爱伴" />
+        <span class="logo-text">爱伴·AI之旅</span>
+      </div>
       <el-scrollbar wrap-class="sidebar-scrollbar-wrap">
         <el-menu
           :default-active="activeMenu"
           class="sidebar-menu"
           background-color="transparent"
-          text-color="#64748B"
-          active-text-color="#6366F1"
+          text-color="#94877F"
+          active-text-color="#FC7A57"
           @select="handleMenuSelect"
         >
           <el-menu-item index="/dashboard" v-if="canSee('/dashboard')">
@@ -35,7 +38,7 @@
             <i class="el-icon-wallet"></i>
             <span slot="title">订单管理</span>
           </el-menu-item>
-          <el-menu-item index="/group-orders" v-if="canSee('/group-orders')">
+                    <el-menu-item index="/group-orders" v-if="canSee('/group-orders')">
             <i class="el-icon-shopping-cart-2"></i>
             <span slot="title">团报管理</span>
           </el-menu-item>
@@ -157,7 +160,7 @@ export default {
 }
 
 .el-aside {
-  background-color: #304156;
+  background-color: #1B212C;
   overflow: visible;
   display: flex;
   flex-direction: column;
@@ -165,14 +168,25 @@ export default {
 
 .logo {
   height: 60px;
-  line-height: 60px;
-  text-align: center;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  background-color: #1B212C;
+  flex-shrink: 0;
+  gap: 8px;
+}
+
+.logo-mark {
+  height: 32px;
+  width: auto;
+}
+
+.logo-text {
   color: #fff;
-  font-size: 18px;
+  font-size: 15px;
   font-weight: bold;
-  background-color: #2b3a4a;
-  flex-shrink: 0;
   letter-spacing: 2px;
+  white-space: nowrap;
 }
 
 .sidebar-scrollbar-wrap {
@@ -186,11 +200,11 @@ export default {
 }
 
 .sidebar-scrollbar-wrap::-webkit-scrollbar-track {
-  background: #304156;
+  background: #1B212C;
 }
 
 .sidebar-scrollbar-wrap::-webkit-scrollbar-thumb {
-  background: #4a5568;
+  background: #3a3f49;
   border-radius: 3px;
 }
 

+ 9 - 11
train-web/src/views/Login.vue

@@ -3,7 +3,7 @@
     <div class="login-container">
       <div class="login-card">
         <div class="login-header">
-          <h2 class="login-title">爱伴·AI之旅</h2>
+          <img class="login-logo" src="@/assets/logo-text.png" alt="爱伴·AI之旅" />
           <p class="login-subtitle">管理后台登录</p>
         </div>
 
@@ -130,7 +130,7 @@ export default {
   align-items: center;
   justify-content: center;
   min-height: 100vh;
-  background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
+  background: linear-gradient(135deg, #1B212C 0%, #2A2326 100%);
 }
 
 .login-container {
@@ -151,17 +151,15 @@ export default {
   margin-bottom: 32px;
 }
 
-.login-title {
-  font-size: 24px;
-  font-weight: 700;
-  color: #1E293B;
-  margin: 0 0 8px;
-  letter-spacing: 2px;
+.login-logo {
+  height: 48px;
+  display: inline-block;
+  margin-bottom: 8px;
 }
 
 .login-subtitle {
   font-size: 14px;
-  color: #94A3B8;
+  color: #94877F;
   margin: 0;
 }
 
@@ -185,7 +183,7 @@ export default {
 
 .test-title {
   font-size: 12px;
-  color: #94A3B8;
+  color: #94877F;
   margin: 0 0 8px;
 }
 
@@ -200,6 +198,6 @@ export default {
   align-items: center;
   gap: 8px;
   font-size: 12px;
-  color: #64748B;
+  color: #5A4F4B;
 }
 </style>

+ 1 - 1
train-web/src/views/ManualScore.vue

@@ -114,7 +114,7 @@ export default {
 
 .form-tip {
   font-size: 12px;
-  color: #94A3B8;
+  color: #94877F;
   line-height: 1.4;
 }
 </style>

+ 1 - 1
train-web/src/views/Materials.vue

@@ -319,7 +319,7 @@ export default {
 }
 
 .link {
-  color: #409EFF;
+  color: #FC7A57;
   text-decoration: none;
 }
 

+ 1 - 1
train-web/src/views/Scoreboard.vue

@@ -94,7 +94,7 @@ export default {
 
 .score-value {
   font-weight: 700;
-  color: #6366F1;
+  color: #FC7A57;
   font-size: 16px;
 }
 </style>

+ 47 - 47
train-web/src/views/Screen.vue

@@ -594,7 +594,7 @@ export default {
   left: 0;
   right: 0;
   bottom: 0;
-  background: radial-gradient(1200px 600px at 20% -10%, #1e3a5f 0%, #0f172a 55%, #0a0f1e 100%);
+  background: radial-gradient(1200px 600px at 20% -10%, #2A2326 0%, #1B212C 55%, #14181F 100%);
   color: #e2e8f0;
   display: flex;
   flex-direction: column;
@@ -615,7 +615,7 @@ export default {
   font-size: 26px;
   font-weight: 700;
   letter-spacing: 2px;
-  background: linear-gradient(90deg, #60a5fa, #a78bfa);
+  background: linear-gradient(135deg, #FF9E5E, #FC7A57 46%, #F9494F);
   -webkit-background-clip: text;
   -webkit-text-fill-color: transparent;
 }
@@ -625,14 +625,14 @@ export default {
 .course-title {
   font-size: 40px;
   font-weight: 700;
-  color: #f8fafc;
+  color: #FDFBFA;
   letter-spacing: 4px;
-  text-shadow: 0 0 30px rgba(96, 165, 250, 0.35);
+  text-shadow: 0 0 30px rgba(252, 122, 87, 0.35);
 }
 .banner-text {
   margin-top: 6px;
   font-size: 20px;
-  color: #93c5fd;
+  color: #FF9E5E;
 }
 .clock {
   text-align: right;
@@ -645,7 +645,7 @@ export default {
 }
 .clock .date {
   font-size: 16px;
-  color: #94a3b8;
+  color: #94877F;
   margin-top: 2px;
 }
 
@@ -677,12 +677,12 @@ export default {
 }
 .panel-sub {
   font-size: 13px;
-  color: #64748b;
+  color: #5A4F4B;
   letter-spacing: 2px;
 }
 .stat-badge {
   font-size: 26px;
-  color: #38bdf8;
+  color: #FC7A57;
   font-weight: 700;
 }
 
@@ -702,13 +702,13 @@ export default {
   display: flex;
   align-items: center;
   gap: 20px;
-  background: rgba(30, 58, 95, 0.5);
+  background: rgba(27, 33, 44, 0.5);
   border-radius: 12px;
   padding: 14px 24px;
   border-left: 4px solid #475569;
 }
 .rank-card.rank-top {
-  background: linear-gradient(90deg, rgba(250, 204, 21, 0.18), rgba(30, 58, 95, 0.5));
+  background: linear-gradient(90deg, rgba(250, 204, 21, 0.18), rgba(27, 33, 44, 0.5));
   border-left-color: #facc15;
 }
 .rank-no {
@@ -716,7 +716,7 @@ export default {
   font-weight: 800;
   width: 64px;
   text-align: center;
-  color: #64748b;
+  color: #5A4F4B;
 }
 .rank-top .rank-no {
   color: #facc15;
@@ -732,7 +732,7 @@ export default {
 }
 .g-slogan {
   font-size: 14px;
-  color: #94a3b8;
+  color: #94877F;
   margin-top: 2px;
   white-space: nowrap;
   overflow: hidden;
@@ -741,12 +741,12 @@ export default {
 .rank-score {
   font-size: 44px;
   font-weight: 800;
-  color: #f8fafc;
+  color: #FDFBFA;
   font-variant-numeric: tabular-nums;
 }
 .rank-score .unit {
   font-size: 18px;
-  color: #94a3b8;
+  color: #94877F;
   font-weight: 400;
   margin-left: 4px;
 }
@@ -773,12 +773,12 @@ export default {
 }
 .meter-fill {
   height: 100%;
-  background: linear-gradient(90deg, #38bdf8, #818cf8);
+  background: linear-gradient(90deg, #FF9E5E, #FC7A57 46%, #F9494F);
   border-radius: 8px;
   transition: width 0.6s ease;
 }
 .meter-fill.green {
-  background: linear-gradient(90deg, #34d399, #38bdf8);
+  background: linear-gradient(90deg, #34d399, #FF9E5E);
 }
 .scroll-box {
   flex: 1;
@@ -791,7 +791,7 @@ export default {
   gap: 8px;
   font-size: 22px;
   padding: 6px 4px;
-  color: #94a3b8;
+  color: #94877F;
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
@@ -800,7 +800,7 @@ export default {
   color: #d1fae5;
 }
 .c-item.todo {
-  color: #94a3b8;
+  color: #94877F;
 }
 .dot {
   width: 12px;
@@ -824,7 +824,7 @@ export default {
   flex-shrink: 0;
 }
 .cert-tag.gray {
-  color: #94a3b8;
+  color: #94877F;
   border-color: rgba(148, 163, 184, 0.4);
 }
 .empty {
@@ -844,7 +844,7 @@ export default {
 }
 .foot-item {
   font-size: 14px;
-  color: #64748b;
+  color: #5A4F4B;
 }
 .live-dot {
   color: #34d399;
@@ -867,11 +867,11 @@ export default {
   display: inline-flex;
   align-items: center;
   gap: 18px;
-  background: linear-gradient(90deg, rgba(56, 189, 248, 0.18), rgba(129, 140, 248, 0.18));
-  border: 1px solid rgba(56, 189, 248, 0.45);
+  background: linear-gradient(90deg, rgba(252, 122, 87, 0.18), rgba(129, 140, 248, 0.18));
+  border: 1px solid rgba(252, 122, 87, 0.45);
   border-radius: 40px;
   padding: 10px 32px;
-  box-shadow: 0 0 34px rgba(56, 189, 248, 0.28);
+  box-shadow: 0 0 34px rgba(252, 122, 87, 0.28);
 }
 .timer-box.idle {
   background: rgba(148, 163, 184, 0.12);
@@ -881,21 +881,21 @@ export default {
 .timer-label {
   font-size: 22px;
   font-weight: 600;
-  color: #f8fafc;
+  color: #FDFBFA;
   letter-spacing: 2px;
 }
 .timer-value {
   font-size: 60px;
   font-weight: 800;
-  color: #38bdf8;
+  color: #FC7A57;
   font-variant-numeric: tabular-nums;
   line-height: 1;
-  text-shadow: 0 0 24px rgba(56, 189, 248, 0.5);
+  text-shadow: 0 0 24px rgba(252, 122, 87, 0.5);
 }
 .timer-box.idle .timer-value,
 .timer-idle {
   font-size: 30px;
-  color: #94a3b8;
+  color: #94877F;
   font-weight: 600;
 }
 .step-pill {
@@ -928,9 +928,9 @@ export default {
 }
 .step-item.active {
   opacity: 1;
-  background: rgba(56, 189, 248, 0.2);
-  border-color: #38bdf8;
-  box-shadow: 0 0 16px rgba(56, 189, 248, 0.3);
+  background: rgba(252, 122, 87, 0.2);
+  border-color: #FC7A57;
+  box-shadow: 0 0 16px rgba(252, 122, 87, 0.3);
 }
 .step-item.done {
   opacity: 0.85;
@@ -943,7 +943,7 @@ export default {
   background: #475569;
 }
 .step-item.active .step-dot {
-  background: #38bdf8;
+  background: #FC7A57;
 }
 .step-item.done .step-dot {
   background: #34d399;
@@ -974,7 +974,7 @@ export default {
   gap: 8px;
 }
 .gp-head {
-  color: #94a3b8;
+  color: #94877F;
   font-size: 16px;
   padding: 0 8px 4px;
 }
@@ -992,7 +992,7 @@ export default {
   color: #f1f5f9;
 }
 .gp-row {
-  background: rgba(30, 58, 95, 0.45);
+  background: rgba(27, 33, 44, 0.45);
   border-radius: 10px;
   padding: 10px 8px;
 }
@@ -1003,7 +1003,7 @@ export default {
   padding: 3px 10px;
   border-radius: 16px;
   border: 1px solid rgba(148, 163, 184, 0.4);
-  color: #94a3b8;
+  color: #94877F;
 }
 .status-pill.ok {
   color: #34d399;
@@ -1039,21 +1039,21 @@ export default {
 }
 .vote-tabs.light .vote-tab.active {
   color: #0284c7;
-  border-color: #38bdf8;
+  border-color: #FC7A57;
   background: #e0f2fe;
 }
 .vote-tab {
   font-size: 16px;
-  color: #94a3b8;
+  color: #94877F;
   padding: 3px 12px;
   border-radius: 14px;
   border: 1px solid rgba(148, 163, 184, 0.4);
   cursor: pointer;
 }
 .vote-tab.active {
-  color: #38bdf8;
-  border-color: #38bdf8;
-  background: rgba(56, 189, 248, 0.15);
+  color: #FC7A57;
+  border-color: #FC7A57;
+  background: rgba(252, 122, 87, 0.15);
 }
 .vote-edit-list {
   max-height: 320px;
@@ -1101,7 +1101,7 @@ export default {
 }
 .v-fill {
   height: 100%;
-  background: linear-gradient(90deg, #38bdf8, #a78bfa);
+  background: linear-gradient(90deg, #FF9E5E, #FC7A57 46%, #F9494F);
   border-radius: 8px;
   transition: width 0.6s ease;
 }
@@ -1110,7 +1110,7 @@ export default {
   text-align: right;
   font-size: 20px;
   font-weight: 700;
-  color: #f8fafc;
+  color: #FDFBFA;
   font-variant-numeric: tabular-nums;
 }
 .material-list {
@@ -1151,8 +1151,8 @@ export default {
   cursor: pointer;
 }
 .step-edit-item.active {
-  border-color: #38bdf8;
-  background: rgba(56, 189, 248, 0.1);
+  border-color: #FC7A57;
+  background: rgba(252, 122, 87, 0.1);
 }
 .step-edit-dot {
   width: 28px;
@@ -1167,7 +1167,7 @@ export default {
   flex-shrink: 0;
 }
 .step-edit-item.active .step-edit-dot {
-  background: #38bdf8;
+  background: #FC7A57;
 }
 .step-edit-name {
   flex: 1;
@@ -1176,7 +1176,7 @@ export default {
 }
 .step-edit-min {
   font-size: 14px;
-  color: #94a3b8;
+  color: #94877F;
 }
 .agenda-editor {
   width: 100%;
@@ -1189,7 +1189,7 @@ export default {
 }
 .banner-hint {
   font-size: 13px;
-  color: #94a3b8;
+  color: #94877F;
   margin-bottom: 8px;
 }
 
@@ -1210,6 +1210,6 @@ export default {
   box-shadow: 0 8px 30px rgba(0, 0, 0, 0.4);
 }
 .back-link {
-  color: #93c5fd !important;
+  color: #FF9E5E !important;
 }
 </style>

+ 1 - 1
train-web/src/views/Stats.vue

@@ -99,7 +99,7 @@ export default {
           data: scores,
           itemStyle: {
             color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-              { offset: 0, color: '#6366F1' },
+              { offset: 0, color: '#FC7A57' },
               { offset: 1, color: '#818CF8' }
             ])
           },

+ 2 - 2
train-web/src/views/Users.vue

@@ -344,8 +344,8 @@ export default {
   margin: 0 0 10px;
   font-size: 14px;
   font-weight: 600;
-  color: #303133;
-  border-left: 3px solid #409eff;
+  color: #2A2326;
+  border-left: 3px solid #FC7A57;
   padding-left: 8px;
 }
 </style>