diff --git a/apps/web/src/app/styles/app.css b/apps/web/src/app/styles/app.css
index 98e6d5c..4a367b2 100644
--- a/apps/web/src/app/styles/app.css
+++ b/apps/web/src/app/styles/app.css
@@ -2950,3 +2950,11 @@
.proto-root .jc-fc-h { flex-wrap: wrap; row-gap: 3px; }
.proto-root .jc-fc-h b { min-width: 0; flex: 1 1 auto; }
.proto-root .jc-fc-open { white-space: nowrap; }
+
+/* ── 空态第三色调:muted —— 「通路还没接」(补充,非原型)──────────────
+ 原型只有 ok(办完了)和 brand(等着就会有)。但还有第三种空:**通路没接**,
+ 等下去也不会有内容。它不能跟 brand 一个样 —— 那是在请人白等。
+ 灰环 + 灰图标,视觉上就不许诺。 */
+.proto-root .jc-empty.t-muted .r1 { background: radial-gradient(circle, var(--line-soft), transparent 72%); }
+.proto-root .jc-empty.t-muted .r2 { background: var(--line-soft); }
+.proto-root .jc-empty.t-muted .jc-empty-ico { color: var(--ink-3); }
diff --git a/apps/web/src/features/desk-task/internal/ViewRegion.tsx b/apps/web/src/features/desk-task/internal/ViewRegion.tsx
index e9d181a..fd85a9e 100644
--- a/apps/web/src/features/desk-task/internal/ViewRegion.tsx
+++ b/apps/web/src/features/desk-task/internal/ViewRegion.tsx
@@ -192,12 +192,17 @@ export function ViewRegion({ detail, onReplyOrder }: ViewRegionProps) {
{openFile !== undefined ? (
) : view === 'comms' ? (
- /* 占位:与外界的往来(邮件线程等)还没接进来 —— 明说没接,不装成「暂无数据」 */
+ /*
+ * 「还没接」和「暂无数据」是两回事,占位不能混:
+ * 邮件与通道消息的数据在 `channel` / `event` 里确实有,但按单归档的投影还没做 ——
+ * 所以在这儿等下去也不会自己冒出内容来。说「都会归到这里」就是把没接说成了空,
+ * 人会一直等,或者以为坏了。如实说没接通,再说接通之后是什么样。
+ */
) : view === 'wf' ? (
diff --git a/apps/web/src/shared/desk/module-kit.tsx b/apps/web/src/shared/desk/module-kit.tsx
index c03adf1..144414d 100644
--- a/apps/web/src/shared/desk/module-kit.tsx
+++ b/apps/web/src/shared/desk/module-kit.tsx
@@ -190,6 +190,11 @@ export function NoteBand({ children }: { children: ReactNode }) {
*
* **空态是产品的常态,不是缺陷**:文案一律从用人的角度写「你手上现在没有什么」,
* 而不是从开发角度写「这块还没做」—— 后者是给自己看的,前者才是用户要的那句话。
+ *
+ * 三个色调分的是**三种空**,不是三种好看:
+ * - `ok` 办完了、清空了 —— 这是好事(待批清空、无未读)
+ * - `brand` 还没发生,但通路是通的 —— 等着就会有(还没有任务、还没有成果)
+ * - `muted` 通路还没接 —— 等下去也不会有内容。灰着,别让人白等
*/
export function EmptyState({
ico,
@@ -199,7 +204,7 @@ export function EmptyState({
hint,
}: {
ico: string;
- tone: 'ok' | 'brand';
+ tone: 'ok' | 'brand' | 'muted';
title: string;
desc: string;
hint?: string | undefined;
diff --git a/docs/debt.md b/docs/debt.md
index adff93b..afcc402 100644
--- a/docs/debt.md
+++ b/docs/debt.md
@@ -46,6 +46,12 @@
邮件线程、通道消息、原件存档 —— 数据在 `channel` 与 `event` 里已有,尚未做投影。
界面上明说「还没接」,不伪装成「暂无数据」。
+2026-07-28 对账:这条曾**只写在注释里没落到文案上** —— 注释写着「明说没接」,
+正文却写「都会归到这里」,等于把没接说成了空,人会一直等。已改为「往来记录还没接通」,
+并给空态加了第三色调 `muted`(通路没接,灰着不许诺;区别于 `brand` 的「等着就会有」)。
+`outbound_mail` 至今只有 channel 建表与清库脚本碰过,任何界面都读不到 —— 所以文案也
+不把人指去「消息」面。
+
## 工作区页签条装不下五个页签
五个四字页签 380px + 翻页囊 112px + 间距 30px = 522px,工作区仅 429px,差 94px。