فهرست منبع

refactor(cfc-web): 登录页左侧品牌区重新设计 — 五维能量轮盘

cfc-web Login.vue:
- 背景替换为暖棕渐变 (#1A0F00 → #4A3020)
- 五行沙盘 SVG → CSS 公转五维能量轮盘
- 中心家金色徽章 + 脉冲动画
- 五维色系节点: 身橙/智紫/富金/行绿/心粉
- role-tags 颜色更新: 家庭客户(紫)/服务商(粉)/平台运营(绿)
- 右侧表单区保持不变

cfc-frontend body/index.vue:
- RadarChart → HealthDimensionsSection 组件替换
Xiaogang Liao 2 ماه پیش
والد
کامیت
c52575e709
2فایلهای تغییر یافته به همراه250 افزوده شده و 327 حذف شده
  1. 7 26
      cfc-frontend/pages/body/index.vue
  2. 243 301
      cfc-web/src/views/Login.vue

+ 7 - 26
cfc-frontend/pages/body/index.vue

@@ -47,19 +47,11 @@
       @childChanged="onChildChanged"
       @scrollTo="scrollToSection" />
 
-    <!-- 雷达图 -->
-    <view class="section" v-if="dimensionData">
-      <RadarChart
-        v-if="dimensionData && dimensionData.dimensions"
-        :dimensions="dimensionData.dimensions.map(function(d) { return { label: d.label, key: d.dimension } })"
-        :scores="dimensionData.dimensions.map(function(d) { return d.score })"
-        fillColor="#FF8C42"
-        gridColor="#FED7AA"
-        labelColor="#9A3412"
-        :width="580"
-        :height="580"
-        @dimensionClick="goDimensionDetail" />
-    </view>
+    <!-- 七维健康全景 -->
+    <HealthDimensionsSection
+      v-if="isLoggedIn"
+      :healthData="dimensionData"
+      :activeChildId="activeChildId" />
 
     <!-- 功能入口 -->
     <view class="func-section" v-if="sectionVisible('func_entries')">
@@ -205,7 +197,7 @@ import DimensionActivities from '../../components/DimensionActivities.vue'
 import DimensionProducts from '../../components/DimensionProducts.vue'
 import DimensionArticles from '../../components/DimensionArticles.vue'
 import FamilyRelationGraph from '../../components/FamilyRelationGraph.vue'
-import RadarChart from '../../components/RadarChart.vue'
+import HealthDimensionsSection from '../../components/HealthDimensionsSection.vue'
 import AIFloatingAvatar from '../../components/AIFloatingAvatar.vue'
 import { getVisibleSections, getEnergyOverview, getChildren, getTodayTasksByCategory, getActivityList, getProductsByDomain, getFamilyEnergySandbox, getVisibleFamilyMembers, getDimensionOverview, getFeaturedArticles } from '../../utils/api.js'
 import config from '../../config.js'
@@ -238,7 +230,7 @@ const healthRequest = function(url, data) {
 }
 
 export default {
-  components: { TabTransition, PageBanner, LoginGuideCard, HealthTips, FamilyEnergyBar, UserQuickEntry, DimensionTasks, DimensionActivities, DimensionProducts, DimensionArticles, FamilyRelationGraph, RadarChart, AIFloatingAvatar },
+  components: { TabTransition, PageBanner, LoginGuideCard, HealthTips, FamilyEnergyBar, UserQuickEntry, DimensionTasks, DimensionActivities, DimensionProducts, DimensionArticles, FamilyRelationGraph, HealthDimensionsSection, AIFloatingAvatar },
   data() {
     return {
       isLoggedIn: false,
@@ -541,14 +533,6 @@ export default {
         })
         return
       }
-      if (item.page === 'health-dimensions') {
-        if (!this.activeChildId) {
-          uni.showToast({ title: '请先选择孩子', icon: 'none' })
-          return
-        }
-        uni.navigateTo({ url: '/pages/body-detail/health-dimensions?childId=' + this.activeChildId })
-        return
-      }
       if (item.page) uni.navigateTo({ url: item.page })
     },
     goToHealthReport: function() {
@@ -558,9 +542,6 @@ export default {
       }
       uni.navigateTo({ url: '/pages/body-detail/health-report?childId=' + this.activeChildId })
     },
-    goDimensionDetail: function(dimKey) {
-      uni.navigateTo({ url: '/pages/body/dimension-detail?dimension=' + dimKey + '&childId=' + this.activeChildId })
-    },
     goToCheckin: function() {
       if (!this.activeChildId) {
         uni.showToast({ title: '请先选择孩子', icon: 'none' })

+ 243 - 301
cfc-web/src/views/Login.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="login-page">
-    <!-- 左侧品牌展示区 — 浠艾福品牌故事 + 五维能量 -->
+    <!-- 左侧品牌展示区 — 五维能量轮盘 -->
     <div class="brand-panel">
       <div class="brand-content">
 
@@ -13,6 +13,77 @@
           </div>
         </div>
 
+        <!-- ===== 五维能量轮盘 ===== -->
+        <div class="orbit-section">
+          <div class="orbit-container">
+            <!-- 中心"家"徽章 -->
+            <div class="orbit-center-node">
+              <span class="center-text">家</span>
+            </div>
+
+            <!-- 轨道装饰 SVG -->
+            <svg class="orbit-ring-svg" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
+              <!-- 外层装饰轨道 -->
+              <circle cx="150" cy="150" r="138" fill="none" stroke="rgba(255,255,255,0.05)" stroke-width="1" />
+              <circle cx="150" cy="150" r="134" fill="none" stroke="rgba(255,215,0,0.08)" stroke-width="0.5" stroke-dasharray="2,4" class="orbital-dash" />
+
+              <!-- 相生弧线 -->
+              <defs>
+                <marker id="orbitArrow" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
+                  <polygon points="0,0 10,3.5 0,7" fill="#FFD700" opacity="0.6"/>
+                </marker>
+              </defs>
+              <path d="M 150,22 A 128,128 0 0,1 271,83" fill="none" stroke="#FFD700" stroke-width="1.5" stroke-opacity="0.5" class="arc-gen" marker-end="url(#orbitArrow)" />
+              <path d="M 271,83 A 128,128 0 0,1 226,260" fill="none" stroke="#FFD700" stroke-width="1.5" stroke-opacity="0.5" class="arc-gen" marker-end="url(#orbitArrow)" />
+              <path d="M 226,260 A 128,128 0 0,1 74,260" fill="none" stroke="#FFD700" stroke-width="1.5" stroke-opacity="0.5" class="arc-gen" marker-end="url(#orbitArrow)" />
+              <path d="M 74,260 A 128,128 0 0,1 29,83" fill="none" stroke="#FFD700" stroke-width="1.5" stroke-opacity="0.5" class="arc-gen" marker-end="url(#orbitArrow)" />
+              <path d="M 29,83 A 128,128 0 0,1 150,22" fill="none" stroke="#FFD700" stroke-width="1.5" stroke-opacity="0.5" class="arc-gen" marker-end="url(#orbitArrow)" />
+
+              <!-- 轨道粒子 -->
+              <circle cx="150" cy="12" r="2" fill="#FFE066" opacity="0.5" class="orbit-particle" />
+              <circle cx="278" cy="80" r="2" fill="#FFE066" opacity="0.5" class="orbit-particle" />
+              <circle cx="232" cy="265" r="2" fill="#FFE066" opacity="0.5" class="orbit-particle" />
+              <circle cx="68" cy="265" r="2" fill="#FFE066" opacity="0.5" class="orbit-particle" />
+              <circle cx="22" cy="80" r="2" fill="#FFE066" opacity="0.5" class="orbit-particle" />
+            </svg>
+
+            <!-- 五维节点 (CSS 公转,72°等分) -->
+            <!-- 身(橙) 0° -->
+            <div class="orbit-node" style="--node-color:#FF8C42; --orbit-angle:0deg; --orbit-delay:0s;">
+              <span class="node-icon">🌏</span>
+              <span class="node-label">身</span>
+            </div>
+            <!-- 智(紫) 72° -->
+            <div class="orbit-node" style="--node-color:#6366F1; --orbit-angle:72deg; --orbit-delay:-3s;">
+              <span class="node-icon">⚔️</span>
+              <span class="node-label">智</span>
+            </div>
+            <!-- 富(金) 144° -->
+            <div class="orbit-node" style="--node-color:#F59E0B; --orbit-angle:144deg; --orbit-delay:-6s;">
+              <span class="node-icon">💧</span>
+              <span class="node-label">富</span>
+            </div>
+            <!-- 行(绿) 216° -->
+            <div class="orbit-node" style="--node-color:#10B981; --orbit-angle:216deg; --orbit-delay:-9s;">
+              <span class="node-icon">🌿</span>
+              <span class="node-label">行</span>
+            </div>
+            <!-- 心(粉) 288° -->
+            <div class="orbit-node" style="--node-color:#FF6B9D; --orbit-angle:288deg; --orbit-delay:-12s;">
+              <span class="node-icon">🔥</span>
+              <span class="node-label">心</span>
+            </div>
+
+            <!-- 图例 -->
+            <div class="orbit-legend">
+              <span class="legend-item">
+                <svg width="20" height="6" viewBox="0 0 20 6"><line x1="0" y1="3" x2="14" y2="3" stroke="#FFD700" stroke-width="1.5"/><polygon points="14,3 18,1 18,5" fill="#FFD700"/></svg>
+                <span>相生</span>
+              </span>
+            </div>
+          </div>
+        </div>
+
         <!-- ===== 核心主张 ===== -->
         <div class="brand-mission">
           <h1 class="mission-title">给全家的<span class="highlight">一站式幸福提案</span></h1>
@@ -21,175 +92,6 @@
           </p>
         </div>
 
-        <!-- ===== 五维能量沙盘 ===== -->
-        <div class="sand-table-wrap">
-          <svg class="sand-table-svg" viewBox="0 0 340 370" xmlns="http://www.w3.org/2000/svg">
-            <defs>
-              <!-- 相生箭头 -->
-              <marker id="arrowGen" markerWidth="52" markerHeight="10" refX="48" refY="5" orient="auto" markerUnits="userSpaceOnUse">
-                <polygon points="7,5 0,0 0,10" fill="#FFE066" />
-              </marker>
-              <!-- 相克箭头 -->
-              <marker id="arrowOve" markerWidth="45" markerHeight="12" refX="41" refY="6" orient="auto" markerUnits="userSpaceOnUse">
-                <polygon points="7,6 0,0 0,12" fill="#FF8A80" />
-              </marker>
-
-              <!-- 节点径向渐变 -->
-              <radialGradient id="gradEarth" cx="40%" cy="35%" r="60%">
-                <stop offset="0%"   stop-color="#D4B896" />
-                <stop offset="100%" stop-color="#9A7B4F" />
-              </radialGradient>
-              <radialGradient id="gradMetal" cx="40%" cy="35%" r="60%">
-                <stop offset="0%"   stop-color="#F0DA70" />
-                <stop offset="100%" stop-color="#D4A843" />
-              </radialGradient>
-              <radialGradient id="gradWater" cx="40%" cy="35%" r="60%">
-                <stop offset="0%"   stop-color="#8FC5E8" />
-                <stop offset="100%" stop-color="#5B9BD5" />
-              </radialGradient>
-              <radialGradient id="gradWood" cx="40%" cy="35%" r="60%">
-                <stop offset="0%"   stop-color="#81C784" />
-                <stop offset="100%" stop-color="#4CAF50" />
-              </radialGradient>
-              <radialGradient id="gradFire" cx="40%" cy="35%" r="60%">
-                <stop offset="0%"   stop-color="#FFAB91" />
-                <stop offset="100%" stop-color="#F08A7A" />
-              </radialGradient>
-
-              <!-- 外环渐变轨道 -->
-              <linearGradient id="ringGrad" x1="0%" y1="0%" x2="100%" y2="100%">
-                <stop offset="0%"   stop-color="#FFD700" stop-opacity="0.25" />
-                <stop offset="25%"  stop-color="#FFE066" stop-opacity="0.15" />
-                <stop offset="50%"  stop-color="#FFD700" stop-opacity="0.08" />
-                <stop offset="75%"  stop-color="#FFE066" stop-opacity="0.15" />
-                <stop offset="100%" stop-color="#FFD700" stop-opacity="0.25" />
-              </linearGradient>
-
-              <!-- 发光滤镜 -->
-              <filter id="glowStrong">
-                <feGaussianBlur stdDeviation="4" result="blur"/>
-                <feMerge>
-                  <feMergeNode in="blur"/>
-                  <feMergeNode in="blur"/>
-                  <feMergeNode in="SourceGraphic"/>
-                </feMerge>
-              </filter>
-              <filter id="glowNode">
-                <feGaussianBlur stdDeviation="2.5" result="blur"/>
-                <feMerge>
-                  <feMergeNode in="blur"/>
-                  <feMergeNode in="blur"/>
-                  <feMergeNode in="SourceGraphic"/>
-                </feMerge>
-              </filter>
-            </defs>
-
-            <!-- 背景光晕 -->
-            <circle cx="170" cy="190" r="140" fill="url(#ringGrad)" />
-
-            <!-- 外层装饰轨道 -->
-            <circle cx="170" cy="190" r="132" fill="none" stroke="rgba(255,255,255,0.06)" stroke-width="1" />
-            <circle cx="170" cy="190" r="129" fill="none" stroke="rgba(255,215,0,0.10)" stroke-width="0.5" stroke-dasharray="2,4" class="orbital-ring" />
-
-            <!-- 轨道粒子 -->
-            <circle cx="170" cy="58"  r="2" fill="#FFE066" opacity="0.5" class="particle" />
-            <circle cx="271" cy="133" r="2" fill="#FFE066" opacity="0.5" class="particle" />
-            <circle cx="240" cy="280" r="2" fill="#FFE066" opacity="0.5" class="particle" />
-            <circle cx="100" cy="280" r="2" fill="#FFE066" opacity="0.5" class="particle" />
-            <circle cx="69"  cy="133" r="2" fill="#FFE066" opacity="0.5" class="particle" />
-
-            <!-- 相生环 -->
-            <path d="M 170,85 A 105,105 0 0,1 270,158" fill="none" stroke="#FFD700" stroke-width="2.5" stroke-opacity="0.8" class="arc-gen" marker-end="url(#arrowGen)" />
-            <path d="M 270,158 A 105,105 0 0,1 232,275" fill="none" stroke="#FFD700" stroke-width="2.5" stroke-opacity="0.8" class="arc-gen" marker-end="url(#arrowGen)" />
-            <path d="M 232,275 A 105,105 0 0,1 108,275" fill="none" stroke="#FFD700" stroke-width="2.5" stroke-opacity="0.8" class="arc-gen" marker-end="url(#arrowGen)" />
-            <path d="M 108,275 A 105,105 0 0,1 70,158" fill="none" stroke="#FFD700" stroke-width="2.5" stroke-opacity="0.8" class="arc-gen" marker-end="url(#arrowGen)" />
-            <path d="M 70,158 A 105,105 0 0,1 170,85" fill="none" stroke="#FFD700" stroke-width="2.5" stroke-opacity="0.8" class="arc-gen" marker-end="url(#arrowGen)" />
-
-            <!-- 相克线 -->
-            <line x1="108" y1="275" x2="170" y2="85" stroke="#FF8A80" stroke-width="1.5" stroke-dasharray="6,6" stroke-opacity="0.45" class="line-ove-quiet" marker-end="url(#arrowOve)" />
-            <line x1="170" y1="85" x2="232" y2="275" stroke="#FF8A80" stroke-width="2" stroke-dasharray="6,6" class="line-ove" marker-end="url(#arrowOve)" />
-            <line x1="232" y1="275" x2="70" y2="158" stroke="#FF8A80" stroke-width="2" stroke-dasharray="6,6" class="line-ove" marker-end="url(#arrowOve)" />
-            <line x1="70" y1="158" x2="270" y2="158" stroke="#FF8A80" stroke-width="2" stroke-dasharray="6,6" class="line-ove" marker-end="url(#arrowOve)" />
-            <line x1="270" y1="158" x2="108" y2="275" stroke="#FF8A80" stroke-width="2" stroke-dasharray="6,6" class="line-ove" marker-end="url(#arrowOve)" />
-
-            <!-- 五维节点 -->
-            <!-- 身(土) -->
-            <g class="node-group">
-              <circle cx="170" cy="85" r="34" fill="url(#gradEarth)" stroke="rgba(212,184,150,0.5)" stroke-width="2" filter="url(#glowNode)" />
-              <circle cx="170" cy="85" r="30" fill="none" stroke="rgba(255,255,255,0.08)" stroke-width="0.5" />
-              <text x="170" y="79" text-anchor="middle" fill="#fff" font-size="18">🌏</text>
-              <text x="170" y="100" text-anchor="middle" fill="#fff" font-size="15" font-weight="600">身</text>
-              <text x="170" y="114" text-anchor="middle" fill="rgba(255,255,255,0.45)" font-size="9">土</text>
-            </g>
-            <!-- 智(金) -->
-            <g class="node-group">
-              <circle cx="270" cy="158" r="34" fill="url(#gradMetal)" stroke="rgba(240,218,112,0.5)" stroke-width="2" filter="url(#glowNode)" />
-              <circle cx="270" cy="158" r="30" fill="none" stroke="rgba(255,255,255,0.08)" stroke-width="0.5" />
-              <text x="270" y="152" text-anchor="middle" fill="#fff" font-size="18">⚔️</text>
-              <text x="270" y="173" text-anchor="middle" fill="#fff" font-size="15" font-weight="600">智</text>
-              <text x="270" y="187" text-anchor="middle" fill="rgba(255,255,255,0.45)" font-size="9">金</text>
-            </g>
-            <!-- 富(水) -->
-            <g class="node-group">
-              <circle cx="232" cy="275" r="34" fill="url(#gradWater)" stroke="rgba(143,197,232,0.5)" stroke-width="2" filter="url(#glowNode)" />
-              <circle cx="232" cy="275" r="30" fill="none" stroke="rgba(255,255,255,0.08)" stroke-width="0.5" />
-              <text x="232" y="269" text-anchor="middle" fill="#fff" font-size="18">💧</text>
-              <text x="232" y="290" text-anchor="middle" fill="#fff" font-size="15" font-weight="600">富</text>
-              <text x="232" y="304" text-anchor="middle" fill="rgba(255,255,255,0.45)" font-size="9">水</text>
-            </g>
-            <!-- 行(木) -->
-            <g class="node-group">
-              <circle cx="108" cy="275" r="34" fill="url(#gradWood)" stroke="rgba(129,199,132,0.5)" stroke-width="2" filter="url(#glowNode)" />
-              <circle cx="108" cy="275" r="30" fill="none" stroke="rgba(255,255,255,0.08)" stroke-width="0.5" />
-              <text x="108" y="269" text-anchor="middle" fill="#fff" font-size="18">🌿</text>
-              <text x="108" y="290" text-anchor="middle" fill="#fff" font-size="15" font-weight="600">行</text>
-              <text x="108" y="304" text-anchor="middle" fill="rgba(255,255,255,0.45)" font-size="9">木</text>
-            </g>
-            <!-- 心(火) -->
-            <g class="node-group">
-              <circle cx="70" cy="158" r="34" fill="url(#gradFire)" stroke="rgba(255,171,145,0.5)" stroke-width="2" filter="url(#glowNode)" />
-              <circle cx="70" cy="158" r="30" fill="none" stroke="rgba(255,255,255,0.08)" stroke-width="0.5" />
-              <text x="70" y="152" text-anchor="middle" fill="#fff" font-size="18">🔥</text>
-              <text x="70" y="173" text-anchor="middle" fill="#fff" font-size="15" font-weight="600">心</text>
-              <text x="70" y="187" text-anchor="middle" fill="rgba(255,255,255,0.45)" font-size="9">火</text>
-            </g>
-
-            <!-- 中心文字 -->
-            <text x="170" y="188" text-anchor="middle" fill="rgba(255,255,255,0.07)" font-size="13" letter-spacing="5">五行 · 相生相克</text>
-
-            <!-- 图例 -->
-            <g transform="translate(170, 345)">
-              <line x1="-50" y1="0" x2="-22" y2="0" stroke="#FFD700" stroke-width="2" />
-              <polygon points="-22,0 -17,-3 -17,3" fill="#FFD700" />
-              <text x="-8" y="4" text-anchor="start" fill="rgba(255,255,255,0.5)" font-size="9">相生</text>
-              <line x1="44" y1="0" x2="72" y2="0" stroke="#FF8A80" stroke-width="1.5" stroke-dasharray="4,3" />
-              <polygon points="72,0 77,-3 77,3" fill="#FF8A80" />
-              <text x="80" y="4" text-anchor="start" fill="rgba(255,255,255,0.5)" font-size="9">相克</text>
-            </g>
-          </svg>
-        </div>
-
-        <!-- ===== 品牌价值 ===== -->
-        <div class="brand-values">
-          <div class="value-item">
-            <span class="value-icon">🌏</span>
-            <span class="value-label">身</span>
-            <span class="value-arrow">→</span>
-            <span class="value-icon">⚔️</span>
-            <span class="value-label">智</span>
-            <span class="value-arrow">→</span>
-            <span class="value-icon">💧</span>
-            <span class="value-label">富</span>
-            <span class="value-arrow">→</span>
-            <span class="value-icon">🌿</span>
-            <span class="value-label">行</span>
-            <span class="value-arrow">→</span>
-            <span class="value-icon">🔥</span>
-            <span class="value-label">心</span>
-          </div>
-          <p class="value-subtitle">相生相克 · 动态平衡 · 全家成长</p>
-        </div>
-
         <!-- ===== 数据 + 角色标签 ===== -->
         <div class="brand-footer">
           <div class="stats-row">
@@ -209,9 +111,9 @@
             </div>
           </div>
           <div class="role-tags">
-            <span class="role-tag" style="border-color:#5B9BD5;color:#8FC5E8">家庭客户</span>
-            <span class="role-tag" style="border-color:#F08A7A;color:#FFAB91">服务商</span>
-            <span class="role-tag" style="border-color:#4CAF50;color:#81C784">平台运营</span>
+            <span class="role-tag" style="border-color:#6366F1;color:#818CF8">家庭客户</span>
+            <span class="role-tag" style="border-color:#FF6B9D;color:#FF8CB3">服务商</span>
+            <span class="role-tag" style="border-color:#10B981;color:#34D399">平台运营</span>
           </div>
         </div>
 
@@ -394,8 +296,8 @@ export default {
 <style scoped>
 /* ============================================================
    登录页面 — 亿图腾 · 浠艾福 (Care Family)
-   品牌色: #4A9BD7 · #F59E0B
-   设计灵感: 企业官网 web/ 品牌体系
+   五维能量轮盘设计 · 2026-07-02 重新设计
+   品牌色: 身#FF8C42 / 智#6366F1 / 富#F59E0B / 行#10B981 / 心#FF6B9D
    ============================================================ */
 
 .login-page {
@@ -407,7 +309,7 @@ export default {
     'PingFang SC', 'Microsoft YaHei', 'Noto Sans SC', sans-serif;
 }
 
-/* ==================== 左侧品牌区 ==================== */
+/* ==================== 左侧品牌区 — 暖棕渐变 ==================== */
 .brand-panel {
   flex: 0 0 55%;
   position: relative;
@@ -415,23 +317,22 @@ export default {
   align-items: center;
   justify-content: center;
   background: linear-gradient(160deg,
-    #0A1F3A 0%,
-    #0F2F55 20%,
-    #1A4D7A 45%,
-    #2E6FA0 70%,
-    #4A9BD7 100%);
+    #1A0F00 0%,
+    #2D1810 30%,
+    #3D2B1F 60%,
+    #4A3020 100%);
   overflow: hidden;
 }
 
-/* 背景纹理 — 抽象山水波纹 */
+/* 背景纹理 — 暖金粒子光晕 */
 .brand-panel::before {
   content: '';
   position: absolute;
   top: 0; left: 0; right: 0; bottom: 0;
   background:
-    radial-gradient(ellipse 120% 50% at 10% 20%, rgba(255, 215, 0, 0.03) 0%, transparent 70%),
-    radial-gradient(ellipse 80% 40% at 90% 80%, rgba(74, 155, 215, 0.06) 0%, transparent 70%),
-    radial-gradient(circle 60% 60% at 50% 100%, rgba(255, 255, 255, 0.02) 0%, transparent 60%);
+    radial-gradient(ellipse 100% 40% at 50% 30%, rgba(255, 215, 0, 0.04) 0%, transparent 70%),
+    radial-gradient(ellipse 80% 60% at 80% 80%, rgba(255, 140, 66, 0.05) 0%, transparent 70%),
+    radial-gradient(circle 50% 50% at 20% 80%, rgba(99, 102, 241, 0.03) 0%, transparent 60%);
   pointer-events: none;
   z-index: 0;
 }
@@ -443,9 +344,9 @@ export default {
   flex-direction: column;
   align-items: center;
   justify-content: center;
-  max-width: 520px;
+  max-width: 480px;
   width: 100%;
-  padding: 24px 40px;
+  padding: 32px 36px;
   color: #fff;
   min-height: 100vh;
   box-sizing: border-box;
@@ -457,7 +358,7 @@ export default {
   display: flex;
   align-items: center;
   gap: 14px;
-  margin-bottom: 12px;
+  margin-bottom: 6px;
 }
 
 .logo-img {
@@ -474,11 +375,11 @@ export default {
 }
 
 .brand-cn {
-  font-size: 22px;
+  font-size: 24px;
   font-weight: 700;
-  letter-spacing: 3px;
+  letter-spacing: 4px;
   line-height: 1.3;
-  background: linear-gradient(135deg, #FFE066 0%, #FFD700 50%, #FFE066 100%);
+  background: linear-gradient(135deg, #FFE066 0%, #F59E0B 50%, #FFE066 100%);
   -webkit-background-clip: text;
   -webkit-text-fill-color: transparent;
   background-clip: text;
@@ -497,156 +398,196 @@ export default {
   text-transform: uppercase;
 }
 
-/* -------- 核心主张 -------- */
-.brand-mission {
-  flex-shrink: 0;
-  text-align: center;
-  margin-bottom: 10px;
-}
-
-.mission-title {
-  font-size: 20px;
-  font-weight: 700;
-  letter-spacing: 2px;
-  margin: 0 0 4px;
-  line-height: 1.4;
-}
-
-.mission-title .highlight {
-  background: linear-gradient(135deg, #FFE066, #F59E0B);
-  -webkit-background-clip: text;
-  -webkit-text-fill-color: transparent;
-  background-clip: text;
-}
-
-.mission-desc {
-  font-size: 13px;
-  opacity: 0.55;
-  letter-spacing: 1px;
-  margin: 0;
-  font-weight: 300;
-}
-
-/* -------- 五维能量沙盘 -------- */
-.sand-table-wrap {
+/* -------- 五维能量轮盘 ==================== */
+.orbit-section {
   flex: 1;
   display: flex;
   align-items: center;
   justify-content: center;
   width: 100%;
   min-height: 0;
-  margin: -8px 0;
-}
-
-.sand-table-svg {
-  width: 100%;
-  max-width: 320px;
-  height: auto;
-  display: block;
+  margin: -6px 0;
 }
 
-/* 相生环流动 */
-.sand-table-svg .arc-gen {
-  stroke-dasharray: 10 8;
-  animation: flowArc 1.2s linear infinite;
-}
-.sand-table-svg .arc-gen:nth-child(4)  { animation-delay: 0.00s; }
-.sand-table-svg .arc-gen:nth-child(5)  { animation-delay: 0.24s; }
-.sand-table-svg .arc-gen:nth-child(6)  { animation-delay: 0.48s; }
-.sand-table-svg .arc-gen:nth-child(7)  { animation-delay: 0.72s; }
-.sand-table-svg .arc-gen:nth-child(8)  { animation-delay: 0.96s; }
-
-@keyframes flowArc {
-  0%   { stroke-dashoffset: 0; }
-  100% { stroke-dashoffset: -18; }
+.orbit-container {
+  position: relative;
+  width: 300px;
+  height: 300px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
 }
 
-/* 相克线脉冲 */
-.sand-table-svg .line-ove {
-  animation: pulseLine 2.2s ease-in-out infinite;
+/* 轨道 SVG */
+.orbit-ring-svg {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 1;
+  overflow: visible;
 }
-.sand-table-svg .line-ove:nth-child(10) { animation-delay: 0.00s; }
-.sand-table-svg .line-ove:nth-child(11) { animation-delay: 0.44s; }
-.sand-table-svg .line-ove:nth-child(12) { animation-delay: 0.88s; }
-.sand-table-svg .line-ove:nth-child(13) { animation-delay: 1.32s; }
 
-@keyframes pulseLine {
-  0%, 100% { stroke-opacity: 0.35; stroke-width: 1.5; }
-  50%      { stroke-opacity: 0.75; stroke-width: 2.5; }
+/* 虚线轨道旋转 */
+.orbital-dash {
+  animation: rotateDash 20s linear infinite;
+  transform-origin: 150px 150px;
 }
 
-.sand-table-svg .line-ove-quiet {
-  stroke-opacity: 0.35;
+@keyframes rotateDash {
+  0%   { transform: rotate(0deg); }
+  100% { transform: rotate(360deg); }
 }
 
-/* 节点呼吸 */
-.sand-table-svg .node-group {
-  animation: nodeBreathe 3.2s ease-in-out infinite;
+/* 相生弧线流光 */
+.arc-gen {
+  stroke-dasharray: 8 6;
+  animation: flowArc 1.2s linear infinite;
 }
-.sand-table-svg .node-group:nth-child(14) { animation-delay: 0.0s; }
-.sand-table-svg .node-group:nth-child(15) { animation-delay: 0.64s; }
-.sand-table-svg .node-group:nth-child(16) { animation-delay: 1.28s; }
-.sand-table-svg .node-group:nth-child(17) { animation-delay: 1.92s; }
-.sand-table-svg .node-group:nth-child(18) { animation-delay: 2.56s; }
 
-@keyframes nodeBreathe {
-  0%, 100% { opacity: 0.85; transform: scale(1); }
-  50%      { opacity: 1;   transform: scale(1.03); }
+@keyframes flowArc {
+  0%   { stroke-dashoffset: 0; }
+  100% { stroke-dashoffset: -14; }
 }
 
 /* 轨道粒子公转 */
-.sand-table-svg .particle {
+.orbit-particle {
   animation: orbitParticle 8s linear infinite;
-  transform-origin: 170px 190px;
+  transform-origin: 150px 150px;
 }
-.sand-table-svg .particle:nth-child(3) { animation-delay: 0.0s; }
 
 @keyframes orbitParticle {
-  0%   { opacity: 0;   transform: rotate(0deg)   translateX(132px) rotate(0deg); }
+  0%   { opacity: 0;   transform: rotate(0deg)   translateX(138px) rotate(0deg); }
   12%  { opacity: 0.6; }
   88%  { opacity: 0.6; }
-  100% { opacity: 0;   transform: rotate(360deg) translateX(132px) rotate(-360deg); }
+  100% { opacity: 0;   transform: rotate(360deg) translateX(138px) rotate(-360deg); }
 }
 
-/* -------- 品牌价值 -------- */
-.brand-values {
-  flex-shrink: 0;
-  text-align: center;
-  margin: 2px 0 8px;
+/* 中心节点 — 金色"家"徽章 */
+.orbit-center-node {
+  position: relative;
+  z-index: 3;
+  width: 72px;
+  height: 72px;
+  border-radius: 50%;
+  background: linear-gradient(135deg, #FFD700, #F59E0B);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  box-shadow:
+    0 0 20px rgba(245, 158, 11, 0.3),
+    0 0 60px rgba(245, 158, 11, 0.1);
+  animation: pulseCenter 3s ease-in-out infinite;
 }
 
-.value-item {
-  display: inline-flex;
+.center-text {
+  font-size: 24px;
+  font-weight: 700;
+  color: #fff;
+  letter-spacing: 2px;
+  text-shadow: 0 1px 4px rgba(0,0,0,0.15);
+}
+
+@keyframes pulseCenter {
+  0%, 100% { box-shadow: 0 0 20px rgba(245, 158, 11, 0.3), 0 0 60px rgba(245, 158, 11, 0.1); transform: scale(1); }
+  50%      { box-shadow: 0 0 30px rgba(245, 158, 11, 0.5), 0 0 80px rgba(245, 158, 11, 0.2); transform: scale(1.05); }
+}
+
+/* 五维节点公转 */
+.orbit-node {
+  position: absolute;
+  z-index: 2;
+  width: 52px;
+  height: 52px;
+  border-radius: 50%;
+  background: var(--node-color);
+  border: 2px solid rgba(255, 255, 255, 0.2);
+  display: flex;
+  flex-direction: column;
   align-items: center;
-  gap: 2px;
-  flex-wrap: wrap;
   justify-content: center;
+  box-shadow: 0 0 12px rgba(0,0,0,0.15), inset 0 1px 2px rgba(255,255,255,0.15);
+  animation: orbitRotate 15s linear infinite;
+  animation-delay: var(--orbit-delay);
+  left: calc(50% - 26px);
+  top: calc(50% - 26px);
+  transform-origin: center;
 }
 
-.value-icon {
-  font-size: 16px;
-  line-height: 1;
+/* 轨道公转: 绕中心公转 125px 半径 */
+@keyframes orbitRotate {
+  0%   { transform: rotate(var(--orbit-angle)) translateX(125px) rotate(calc(-1 * var(--orbit-angle))); }
+  100% { transform: rotate(calc(var(--orbit-angle) + 360deg)) translateX(125px) rotate(calc(-1 * var(--orbit-angle) - 360deg)); }
 }
 
-.value-label {
+.node-icon {
   font-size: 14px;
-  font-weight: 600;
-  letter-spacing: 1px;
   line-height: 1;
+  margin-bottom: 1px;
 }
 
-.value-arrow {
+.node-label {
   font-size: 11px;
-  opacity: 0.3;
-  margin: 0 6px;
+  font-weight: 700;
+  color: #fff;
   line-height: 1;
+  text-shadow: 0 1px 2px rgba(0,0,0,0.1);
 }
 
-.value-subtitle {
-  font-size: 11px;
+/* 图例 */
+.orbit-legend {
+  position: absolute;
+  bottom: -10px;
+  left: 50%;
+  transform: translateX(-50%);
+  z-index: 2;
+  display: flex;
+  align-items: center;
+  gap: 4px;
+  font-size: 9px;
   opacity: 0.4;
-  letter-spacing: 3px;
-  margin: 4px 0 0;
+  color: #fff;
+  letter-spacing: 1px;
+}
+
+.legend-item {
+  display: flex;
+  align-items: center;
+  gap: 4px;
+}
+
+.legend-item svg {
+  display: block;
+}
+
+/* -------- 核心主张 -------- */
+.brand-mission {
+  flex-shrink: 0;
+  text-align: center;
+  margin-bottom: 8px;
+}
+
+.mission-title {
+  font-size: 20px;
+  font-weight: 700;
+  letter-spacing: 2px;
+  margin: 0 0 4px;
+  line-height: 1.4;
+}
+
+.mission-title .highlight {
+  background: linear-gradient(135deg, #FF8C42, #F59E0B);
+  -webkit-background-clip: text;
+  -webkit-text-fill-color: transparent;
+  background-clip: text;
+}
+
+.mission-desc {
+  font-size: 13px;
+  opacity: 0.55;
+  letter-spacing: 1px;
+  margin: 0;
   font-weight: 300;
 }
 
@@ -654,6 +595,7 @@ export default {
 .brand-footer {
   flex-shrink: 0;
   width: 100%;
+  margin-top: 4px;
 }
 
 .stats-row {
@@ -661,18 +603,18 @@ export default {
   align-items: center;
   justify-content: center;
   gap: 0;
-  margin-bottom: 12px;
+  margin-bottom: 10px;
 }
 
 .stat-item {
   display: flex;
   flex-direction: column;
   align-items: center;
-  padding: 0 14px;
+  padding: 0 16px;
 }
 
 .stat-num {
-  font-size: 20px;
+  font-size: 22px;
   font-weight: 700;
   background: linear-gradient(135deg, #FFE066, #F59E0B);
   -webkit-background-clip: text;
@@ -691,7 +633,7 @@ export default {
 .stat-divider {
   width: 1px;
   height: 28px;
-  background: rgba(255, 255, 255, 0.1);
+  background: rgba(255, 255, 255, 0.12);
 }
 
 .role-tags {
@@ -876,7 +818,7 @@ export default {
   .form-panel {
     flex: 1;
     padding: 24px;
-    background: linear-gradient(160deg, #0A1F3A, #1A4D7A);
+    background: linear-gradient(160deg, #1A0F00, #3D2B1F);
   }
   .form-card {
     box-shadow: 0 8px 40px rgba(0, 0, 0, 0.15);
@@ -885,4 +827,4 @@ export default {
     box-shadow: 0 8px 40px rgba(0, 0, 0, 0.15);
   }
 }
-</style>
+</style>