Просмотр исходного кода

docs(首页改造): 设计稿 FAIL 修复收口 + 计划文档裁定同步

design-critic 对抗式复审(2026-10-28)FAIL(2 Major+2 Minor) 修复复测 PASS,增量入库:
- 禁用态契约从 .btn 收口到全部交互控件:.svc/.tab/.icon-btn/.task-check
  一律 opacity:1 + pointer-events:none,带底控件用 warm-200+text-2,纯文字/图标控件用 muted text-3
  (原 opacity:0.45 淡出合成 2.51/2.31:1 不可读 → 实测 6.04/6.05:1)
- 16 个内联装饰图标 SVG 补 aria-hidden="true"
- 契约说明条与实现一致化
- 删除孤儿令牌 --opacity-disabled(零引用)
- 计划文档 §4.3 同步:禁用控件分类 + 令牌仅保留定义不再被引用
Agnes Agent 2 недель назад
Родитель
Сommit
5baaff3572
2 измененных файлов с 24 добавлено и 24 удалено
  1. 23 23
      cfc-frontend/design/cfc-home-redesign.html
  2. 1 1
      docs/2026-10-27-index-home-redesign-plan.md

+ 23 - 23
cfc-frontend/design/cfc-home-redesign.html

@@ -178,7 +178,6 @@
   --shadow-device: 0 24px 60px rgba(60, 45, 30, 0.16);
   --shadow-device: 0 24px 60px rgba(60, 45, 30, 0.16);
 
 
   /* ---------- 状态令牌 ---------- */
   /* ---------- 状态令牌 ---------- */
-  --opacity-disabled: 0.45;
   --opacity-press: 0.88;
   --opacity-press: 0.88;
 }
 }
 
 
@@ -493,7 +492,7 @@ svg { display: block; }
 
 
 .icon-btn:active { transform: scale(0.94); }
 .icon-btn:active { transform: scale(0.94); }
 
 
-.icon-btn[disabled] { opacity: var(--opacity-disabled); cursor: not-allowed; }
+.icon-btn[disabled] { color: var(--text-3); cursor: not-allowed; opacity: 1; pointer-events: none; }
 
 
 .bell-badge {
 .bell-badge {
   position: absolute;
   position: absolute;
@@ -861,7 +860,7 @@ svg { display: block; }
 
 
 .task-check:active { transform: scale(0.94); }
 .task-check:active { transform: scale(0.94); }
 
 
-.task-check[disabled] { opacity: var(--opacity-disabled); cursor: not-allowed; }
+.task-check[disabled] { color: var(--text-3); cursor: not-allowed; opacity: 1; pointer-events: none; }
 
 
 .check-ring {
 .check-ring {
   width: var(--icon-lg);
   width: var(--icon-lg);
@@ -986,7 +985,7 @@ svg { display: block; }
 
 
 .svc:active { transform: scale(0.97); }
 .svc:active { transform: scale(0.97); }
 
 
-.svc[disabled] { opacity: var(--opacity-disabled); cursor: not-allowed; }
+.svc[disabled] { background: var(--warm-200); color: var(--text-2); border-color: var(--line-control); opacity: 1; cursor: not-allowed; pointer-events: none; }
 
 
 .svc-icon {
 .svc-icon {
   width: var(--tile-md);
   width: var(--tile-md);
@@ -1128,8 +1127,9 @@ svg { display: block; }
 .btn-primary:hover { background: var(--accent-strong); }
 .btn-primary:hover { background: var(--accent-strong); }
 /* 按下 */
 /* 按下 */
 .btn-primary:active { transform: scale(0.97); }
 .btn-primary:active { transform: scale(0.97); }
-/* 禁用(主理人契约:禁用态清晰、不淡出,中性底 + 深字;移除全局 0.45 淡出对白字合成对比度的破坏;
-   pointer-events:none 切断 hover/active/transform 重漆,防止 .btn-primary:hover 等更高特异性规则覆盖中性底) */
+/* 禁用(主理人契约:禁用态清晰、不淡出。所有禁用控件统一——带底控件 .btn/.svc 用 中性 warm-200 底 + 深字 text-2;
+   纯文字/图标控件 .tab/.icon-btn/.task-check 用 muted text-3;一律 opacity:1 + pointer-events:none 切断 hover/active/transform 重漆;
+   禁止 0.45 全局淡出对白字合成对比度的破坏) */
 .btn[disabled],
 .btn[disabled],
 .btn.is-disabled {
 .btn.is-disabled {
   background: var(--warm-200);
   background: var(--warm-200);
@@ -1229,7 +1229,7 @@ svg { display: block; }
 
 
 .tab[aria-current="page"] span { font-weight: 600; }
 .tab[aria-current="page"] span { font-weight: 600; }
 
 
-.tab[disabled] { opacity: var(--opacity-disabled); cursor: not-allowed; }
+.tab[disabled] { color: var(--text-3); cursor: not-allowed; opacity: 1; pointer-events: none; }
 
 
 /* ============================ 响应式与动效降级 ============================ */
 /* ============================ 响应式与动效降级 ============================ */
 @media (max-width: 430px) {
 @media (max-width: 430px) {
@@ -1409,7 +1409,7 @@ svg { display: block; }
           <div class="hero-head">
           <div class="hero-head">
             <div class="sandbox-brand">
             <div class="sandbox-brand">
               <span class="sandbox-logo" aria-hidden="true">
               <span class="sandbox-logo" aria-hidden="true">
-                <svg viewBox="0 0 24 24"><path d="M12 3.4 14.4 9.1h6l-4.8 3.7 1.8 5.9-5.4-3.8-5.4 3.8 1.8-5.9-4.8-3.7h6z" fill="currentColor"/></svg>
+                <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3.4 14.4 9.1h6l-4.8 3.7 1.8 5.9-5.4-3.8-5.4 3.8 1.8-5.9-4.8-3.7h6z" fill="currentColor"/></svg>
               </span>
               </span>
               <div>
               <div>
                 <h2 class="hero-kicker" id="hero-title">浠艾福能量沙盘</h2>
                 <h2 class="hero-kicker" id="hero-title">浠艾福能量沙盘</h2>
@@ -1487,7 +1487,7 @@ svg { display: block; }
           <ul class="dims">
           <ul class="dims">
             <li class="dim">
             <li class="dim">
               <span class="dim-badge dim-badge--body" aria-hidden="true">
               <span class="dim-badge dim-badge--body" aria-hidden="true">
-                <svg viewBox="0 0 24 24"><circle cx="12" cy="8" r="3.2" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M5.5 19c0-3.3 2.9-5.5 6.5-5.5s6.5 2.2 6.5 5.5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg>
+                <svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="8" r="3.2" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M5.5 19c0-3.3 2.9-5.5 6.5-5.5s6.5 2.2 6.5 5.5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg>
               </span>
               </span>
               <span class="dim-main">
               <span class="dim-main">
                 <span class="dim-line">
                 <span class="dim-line">
@@ -1500,7 +1500,7 @@ svg { display: block; }
             </li>
             </li>
             <li class="dim">
             <li class="dim">
               <span class="dim-badge dim-badge--wisdom" aria-hidden="true">
               <span class="dim-badge dim-badge--wisdom" aria-hidden="true">
-                <svg viewBox="0 0 24 24"><path d="M13 3 6.5 13H11l-1 8 6.5-10H12z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/></svg>
+                <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M13 3 6.5 13H11l-1 8 6.5-10H12z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/></svg>
               </span>
               </span>
               <span class="dim-main">
               <span class="dim-main">
                 <span class="dim-line">
                 <span class="dim-line">
@@ -1513,7 +1513,7 @@ svg { display: block; }
             </li>
             </li>
             <li class="dim">
             <li class="dim">
               <span class="dim-badge dim-badge--wealth" aria-hidden="true">
               <span class="dim-badge dim-badge--wealth" aria-hidden="true">
-                <svg viewBox="0 0 24 24"><path d="M12 3.5c3.2 3.6 5.5 6.4 5.5 9.3a5.5 5.5 0 0 1-11 0c0-2.9 2.3-5.7 5.5-9.3z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/></svg>
+                <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3.5c3.2 3.6 5.5 6.4 5.5 9.3a5.5 5.5 0 0 1-11 0c0-2.9 2.3-5.7 5.5-9.3z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/></svg>
               </span>
               </span>
               <span class="dim-main">
               <span class="dim-main">
                 <span class="dim-line">
                 <span class="dim-line">
@@ -1526,7 +1526,7 @@ svg { display: block; }
             </li>
             </li>
             <li class="dim">
             <li class="dim">
               <span class="dim-badge dim-badge--action" aria-hidden="true">
               <span class="dim-badge dim-badge--action" aria-hidden="true">
-                <svg viewBox="0 0 24 24"><path d="M5 19C5 11 11 5 19 5c0 8-6 14-14 14z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M8.4 15.6 19 5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg>
+                <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5 19C5 11 11 5 19 5c0 8-6 14-14 14z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M8.4 15.6 19 5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg>
               </span>
               </span>
               <span class="dim-main">
               <span class="dim-main">
                 <span class="dim-line">
                 <span class="dim-line">
@@ -1539,7 +1539,7 @@ svg { display: block; }
             </li>
             </li>
             <li class="dim">
             <li class="dim">
               <span class="dim-badge dim-badge--mind" aria-hidden="true">
               <span class="dim-badge dim-badge--mind" aria-hidden="true">
-                <svg viewBox="0 0 24 24"><path d="M12 20s-7-4.3-7-9.2A3.9 3.9 0 0 1 12 8a3.9 3.9 0 0 1 7 2.8C19 15.7 12 20 12 20z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/></svg>
+                <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 20s-7-4.3-7-9.2A3.9 3.9 0 0 1 12 8a3.9 3.9 0 0 1 7 2.8C19 15.7 12 20 12 20z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/></svg>
               </span>
               </span>
               <span class="dim-main">
               <span class="dim-main">
                 <span class="dim-line">
                 <span class="dim-line">
@@ -1666,52 +1666,52 @@ svg { display: block; }
           </div>
           </div>
           <div class="services">
           <div class="services">
             <button type="button" class="svc" aria-label="健康报告:解读家人的体检结果">
             <button type="button" class="svc" aria-label="健康报告:解读家人的体检结果">
-              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M7 3.5h7l4 4V20.5H7z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M14 3.5V8h4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M9.5 12h6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M9.5 15.5h6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span>
+              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M7 3.5h7l4 4V20.5H7z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M14 3.5V8h4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M9.5 12h6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M9.5 15.5h6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span>
               <span class="svc-name">健康报告</span>
               <span class="svc-name">健康报告</span>
               <span class="svc-desc">解读家人的体检结果</span>
               <span class="svc-desc">解读家人的体检结果</span>
             </button>
             </button>
             <button type="button" class="svc" aria-label="食材推荐:按本周状态配一周三餐">
             <button type="button" class="svc" aria-label="食材推荐:按本周状态配一周三餐">
-              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M4 11.5h16a8 8 0 0 1-16 0z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M9 8.5c0-1.5 1-2 1-3.5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M13.5 8.5c0-1.5 1-2 1-3.5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span>
+              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 11.5h16a8 8 0 0 1-16 0z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M9 8.5c0-1.5 1-2 1-3.5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M13.5 8.5c0-1.5 1-2 1-3.5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span>
               <span class="svc-name">食材推荐</span>
               <span class="svc-name">食材推荐</span>
               <span class="svc-desc">按本周状态配一周三餐</span>
               <span class="svc-desc">按本周状态配一周三餐</span>
             </button>
             </button>
             <button type="button" class="svc" aria-label="五维详情:看全家五维变化趋势">
             <button type="button" class="svc" aria-label="五维详情:看全家五维变化趋势">
-              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M12 3.2 20.4 9.4 17.2 19.2H6.8L3.6 9.4z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><circle cx="12" cy="12" r="1.6" fill="none" stroke="currentColor" stroke-width="1.8"/></svg></span>
+              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3.2 20.4 9.4 17.2 19.2H6.8L3.6 9.4z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><circle cx="12" cy="12" r="1.6" fill="none" stroke="currentColor" stroke-width="1.8"/></svg></span>
               <span class="svc-name">五维详情</span>
               <span class="svc-name">五维详情</span>
               <span class="svc-desc">看全家五维变化趋势</span>
               <span class="svc-desc">看全家五维变化趋势</span>
             </button>
             </button>
             <button type="button" class="svc" aria-label="成长记录:记下家人的每个变化">
             <button type="button" class="svc" aria-label="成长记录:记下家人的每个变化">
-              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24"><rect x="4" y="5.5" width="16" height="14.5" rx="2.5" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M4 10.5h16" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M8 3.5v4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M16 3.5v4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M9.5 15l2 2 3.5-3.5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg></span>
+              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="4" y="5.5" width="16" height="14.5" rx="2.5" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M4 10.5h16" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M8 3.5v4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M16 3.5v4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M9.5 15l2 2 3.5-3.5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg></span>
               <span class="svc-name">成长记录</span>
               <span class="svc-name">成长记录</span>
               <span class="svc-desc">记下家人的每个变化</span>
               <span class="svc-desc">记下家人的每个变化</span>
             </button>
             </button>
             <button type="button" class="svc" aria-label="活动:报名家庭健康活动">
             <button type="button" class="svc" aria-label="活动:报名家庭健康活动">
-              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M6 3.5V21" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M6 4.5h11l-2.2 4 2.2 4H6z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/></svg></span>
+              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 3.5V21" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M6 4.5h11l-2.2 4 2.2 4H6z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/></svg></span>
               <span class="svc-name">活动</span>
               <span class="svc-name">活动</span>
               <span class="svc-desc">报名家庭健康活动</span>
               <span class="svc-desc">报名家庭健康活动</span>
             </button>
             </button>
             <button type="button" class="svc" aria-label="认知测评:半小时自查脑力状态">
             <button type="button" class="svc" aria-label="认知测评:半小时自查脑力状态">
-              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="8" fill="none" stroke="currentColor" stroke-width="1.8"/><circle cx="12" cy="12" r="4" fill="none" stroke="currentColor" stroke-width="1.8"/><circle cx="12" cy="12" r="1" fill="currentColor" stroke="none"/></svg></span>
+              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="8" fill="none" stroke="currentColor" stroke-width="1.8"/><circle cx="12" cy="12" r="4" fill="none" stroke="currentColor" stroke-width="1.8"/><circle cx="12" cy="12" r="1" fill="currentColor" stroke="none"/></svg></span>
               <span class="svc-name">认知测评</span>
               <span class="svc-name">认知测评</span>
               <span class="svc-desc">半小时自查脑力状态</span>
               <span class="svc-desc">半小时自查脑力状态</span>
             </button>
             </button>
             <button type="button" class="svc" aria-label="文章:每天读懂一条健康知识">
             <button type="button" class="svc" aria-label="文章:每天读懂一条健康知识">
-              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M4 5.5c2.5-1 5-1 7.5.8v13c-2.5-1.8-5-1.8-7.5-.8z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M20 5.5c-2.5-1-5-1-7.5.8v13c2.5-1.8 5-1.8 7.5-.8z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/></svg></span>
+              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 5.5c2.5-1 5-1 7.5.8v13c-2.5-1.8-5-1.8-7.5-.8z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M20 5.5c-2.5-1-5-1-7.5.8v13c2.5-1.8 5-1.8 7.5-.8z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/></svg></span>
               <span class="svc-name">文章</span>
               <span class="svc-name">文章</span>
               <span class="svc-desc">每天读懂一条健康知识</span>
               <span class="svc-desc">每天读懂一条健康知识</span>
             </button>
             </button>
             <button type="button" class="svc" aria-label="商城:为家人挑选健康好物">
             <button type="button" class="svc" aria-label="商城:为家人挑选健康好物">
-              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M5.5 8h13l-1 12h-11z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M9 8V6.5a3 3 0 0 1 6 0V8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span>
+              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.5 8h13l-1 12h-11z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M9 8V6.5a3 3 0 0 1 6 0V8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span>
               <span class="svc-name">商城</span>
               <span class="svc-name">商城</span>
               <span class="svc-desc">为家人挑选健康好物</span>
               <span class="svc-desc">为家人挑选健康好物</span>
             </button>
             </button>
             <button type="button" class="svc" aria-label="会员:查看会员专属权益">
             <button type="button" class="svc" aria-label="会员:查看会员专属权益">
-              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M4 17.5 5 7l4.5 3.5L12 6l2.5 4.5L19 7l1 10.5z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M4 20h16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span>
+              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 17.5 5 7l4.5 3.5L12 6l2.5 4.5L19 7l1 10.5z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M4 20h16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span>
               <span class="svc-name">会员</span>
               <span class="svc-name">会员</span>
               <span class="svc-desc">查看会员专属权益</span>
               <span class="svc-desc">查看会员专属权益</span>
             </button>
             </button>
             <button type="button" class="svc" aria-label="客服:人工客服在线解答">
             <button type="button" class="svc" aria-label="客服:人工客服在线解答">
-              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M4.5 14v-2a7.5 7.5 0 0 1 15 0v2" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><rect x="3" y="13" width="3.5" height="6" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.8"/><rect x="17.5" y="13" width="3.5" height="6" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M19.5 19v.5a2.5 2.5 0 0 1-2.5 2.5h-2" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span>
+              <span class="svc-icon" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4.5 14v-2a7.5 7.5 0 0 1 15 0v2" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><rect x="3" y="13" width="3.5" height="6" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.8"/><rect x="17.5" y="13" width="3.5" height="6" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M19.5 19v.5a2.5 2.5 0 0 1-2.5 2.5h-2" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span>
               <span class="svc-name">客服</span>
               <span class="svc-name">客服</span>
               <span class="svc-desc">人工客服在线解答</span>
               <span class="svc-desc">人工客服在线解答</span>
             </button>
             </button>

+ 1 - 1
docs/2026-10-27-index-home-redesign-plan.md

@@ -119,7 +119,7 @@ tabBar(首页 / 健康 / 成长 / 我的)
 ### 4.3 按钮八态(主理人拍板)
 ### 4.3 按钮八态(主理人拍板)
 
 
 - **除禁用态外,一律白色字体**
 - **除禁用态外,一律白色字体**
-- 禁用态:暖灰中性底 + 深字(`text-2`),**不加白字、不淡出**;全局 `.btn[disabled]`/`.btn.is-disabled` 的 `opacity: var(--opacity-disabled)`(0.45 淡出)**已移除**(2026-10-28),并加 `pointer-events: none` 切断 hover/active/transform 重漆(防止 `.btn-primary:hover` 等更高特异性规则覆盖中性底);`--opacity-disabled` 令牌保留(icon-btn/task-check/svc/tab 仍引用,不在八态契约内)
+- 禁用态:带底控件(`.btn`/`.svc`)用暖灰中性底 `warm-200` + 深字 `text-2`;纯文字/图标控件(`.tab`/`.icon-btn`/`.task-check`)用 muted `text-3`;**一律不加白字、不淡出**,`opacity: 1` + `pointer-events: none` 切断 hover/active/transform 重漆;原 `opacity: var(--opacity-disabled)`(0.45 淡出)已从全部禁用控件移除(2026-10-28 起,2026-10-29 收口覆盖 4 控件);`--opacity-disabled` 令牌仅保留定义、不再被任何禁用规则引用
 - 八态:默认 / 悬停 / 焦点 / 按下 / 禁用 / 加载中 / 出错 / 成功,文字对比均须 ≥4.5:1
 - 八态:默认 / 悬停 / 焦点 / 按下 / 禁用 / 加载中 / 出错 / 成功,文字对比均须 ≥4.5:1
 
 
 ### 4.4 其余令牌
 ### 4.4 其余令牌