设计系统 v1.0 深空 · 双金属 · 令牌唯一真源

mt5.email 品牌 UI 系统

面向 MT5 使用公司的券商上线服务商。品牌承诺是「快速布局」—— 把白标平台、CRM、邮件通知、支付、合规陪跑拼成一条能走完的路径。 整套视觉建立在一个判断上:这个品类的界面都在撒同一个谎—— 用彩色状态标签宣称"一切正常",而运营真正需要知道的是「这件事走到哪一步了、卡在哪」。

设计支点 ①
双金属,各管各的语义

金只表示"人的信任与品牌",青只表示"机器的确定性 / 已送达"。 两者语义不重叠 —— 竞品只有一种颜色,所以他们的"状态"和"品牌"永远在互相稀释。

设计支点 ②
把状态做成路径,不是标签

签名组件「投递轨迹」取代彩色状态点:一笔开户、一封邮件、一次对账, 在这个产品里都是同一种东西 —— 一条要走完的路径。

设计支点 ③
暗色靠表面提亮,不靠阴影

阴影在深底上几乎不可见。层级用「表面提亮 + 1px 发丝边」表达 —— 这是暗色 UI 最常见的做错处。

令牌即契约

组件层只允许引用语义令牌
原始色阶是"颜料",语义令牌是"用途"。组件直接抓颜料的那一刻,换主题、改品牌色、做暗色适配就开始漏 —— 而且漏改的地方不会报错,只会难看。本页下方的对比度全部由浏览器实时计算,不写死在文档里。

色彩系统

五个色族:深空(承载)· 金(品牌 / 人的信任)· 青(系统 / 送达)· 琥珀(到期 / 待办)· 红(退信 / 失败)。 金与青语义不重叠是本系统唯一的颜色纪律。

语义令牌 · 对比度核验(浏览器实时计算)

判据 = WCAG 2.1 对比度。正文 ≥ 4.5:1(AA),大字号 ≥ 3:1。 本表的值由页面实时读取 CSS 令牌算出 —— 改令牌这里会立刻变红,不靠人肉维护文档。

用途前景 / 背景实测要求结论

非文字对比 · 组件边界(WCAG 1.4.11 要求 ≥ 3:1)

判据是「识别组件所必需」的视觉信息必须 ≥3:1。输入框、复选框、开关的边框 属于这一类 —— 用细发丝线画输入框在暗底上几乎看不出边界,很多产品栽在这。

元素前景 / 背景实测要求结论

非文字对比 · 装饰性分隔(WCAG 豁免)

卡片边界与表行分隔线不属于"识别组件所必需"的视觉信息(容器靠背景色差已可辨识), 因此 WCAG 不要求 3:1。这里列出来是为了说清它为什么可以不达标 —— ⛔ 不是把不达标算成通过。判定阈值写 1.1:1,只用来发现"几乎完全看不见"的退化。

元素前景 / 背景实测下限结论

排版

全系统只用两族字:无衬线(Inter / 思源黑体)+ 等宽(JetBrains Mono)。 刻意不引入衬线标题 —— 衬线传达"传承",而本品牌的承诺是"速度"。 语气靠颜色、留白和等宽数据层建立,不靠字体混搭(竞品普遍在混搭,且混得很乱)。

字号阶梯

语义排版

.t-label
账户状态 · 送达率 · 结算周期
小号大写 + 渐变字距(0.085em)。仪表盘的通用语,也是本系统最容易被忽略、但最能拉开差距的细节。
.t-num
1,284,930.55
金额、账号、计数全部走等宽数字(tabular-nums)。理由不是好看 —— 是比例数字会让成列金额左右跳动,运营对账时读错位。
.t-mono
task_01J8F3K2 · 900124 · mt5-gw-04 · 2026-10-16T04:39:08+08:00
任务号 / 账户号 / 主机名 / 时间戳。凡是"要抄下来去别处比对"的东西一律等宽。
.t-body(中文)
开户请求已受理,正在由网关投递至 MT5 主服务器。
中文行高用 1.75 而不是西文的 1.55 —— 汉字没有下伸部,行距不足会整段糊成一块。

字重与字距

字重 400 Regular 500 Medium 600 Semibold 700 Bold
字距 −0.022em 大标题 0 正文 +0.085em 标签

间距 · 圆角 · 层级 · 动效

4px 基准,8px 为节奏单位。圆角刻意偏小(3–20px): 大圆角是消费级 App 的语言,金融后台的语言是紧圆角 —— 紧圆角看起来"精确"。

间距阶梯

圆角

层级:暗色靠表面提亮,不靠阴影

bg-base
页面底
bg-surface
面板 / 侧栏
bg-raised
卡片
bg-overlay
浮层 / tooltip
深底上的阴影几乎不可见
用阴影拉开层级是亮色思维。暗色下请用表面提亮 + 发丝边;阴影只留给真正浮起来的元素(模态、吐司、下拉)。

动效

时长
80ms 按下 · 130ms 悬浮 · 200ms 进场 · 320ms 面板 · 520ms 载入循环
缓动
cubic-bezier(.2,.8,.2,1) 标准 · cubic-bezier(0,.6,.3,1) 进场 · cubic-bezier(.4,0,1,1) 退场
⛔ 不用回弹曲线 —— 回弹暗示"不精确",而这是个管钱的产品。
这个页面本身就在遵守 reduced-motion
所有时长令牌在 prefers-reduced-motion: reduce 下降为 1ms, 脉冲点与骨架屏停止动画。请在系统设置里打开「减少动态效果」再回来看这一页。

按钮

主按钮在暗色下是金填充(金在深空上最贵),亮色下是深墨填充(金在亮底做填充过不了对比度)。 这是刻意的主题不对称,理由写在 BRAND.md §2.3。

变体
尺寸
状态
带图标

载入态保留文字宽度:按钮载入时文字被透明化而非移除 —— 否则按钮会在点击瞬间变窄, 整行按钮跟着跳,指针下面的按钮会换人。

表单

输入框永远带标签(⛔ 不用 placeholder 当标签 —— 一开始输入标签就没了)。错误信息写在字段下方,且必须说清怎么改。

会出现在客户门户与邮件签名上
用于接收平台告警与合规通知
.northgate-fx.com
客户登录、KYC 上传、入金页面都挂在这个子域下
号段不能与已有品牌重叠。当前可用区间:900001–999999
上线后可在风控中心调整,但要触发一次重连

选择控件

复选框 / 单选
开关
分段控件 / 标签页

徽章与状态

状态徽章只表达单点事实(一封信的结局、一个账号的状态)。 一条要走完的路径请用「投递轨迹」 —— 用徽章表达流程是本品类最常见的错误。

语义 已送达 投递中 待确认 已退信 草稿 企业版 启用 主服务器
内置圆点 正在投递 连续 3 次退信 ⌘K 命令面板

卡片与指标

今日开户
184
较昨日 +12.4%
邮件送达率
99.2%
近 24 小时 · 退信 7 封
待人工处理
6
最早一笔滞留 4h12m
本月结算 企业版
28,400 USD
账期至 11-01
Northgate Markets · 部署
第 12 天 / 预计第 21 天上线
进行中
下一步:完成支付通道联调

表格

表头走 小号大写标签,数字列右对齐 + 等宽。行悬浮可点,选中态用低调的金色底,⛔ 不用高饱和蓝。

开户记录
近 24 小时
交易账号客户归属品牌初始入金 开户通道状态受理时间
900124 Chen Wei Northgate Markets 1,000.00 USD 门户自助 已完成 04:21:08
900125 Aisha Rahman Northgate Markets 5,000.00 USD IB 推荐 建户中 04:33:51
900126 Marco Silva Northgate Markets — 门户自助 待补 KYC 04:37:12
900127 — Northgate Markets — 门户自助 邮箱已占用 04:38:44
共 4 条 · 更新时间 04:39:02
1 / 1

反馈

域名验证通过
已在 northgate-fx.com 找到 TXT 记录,证书签发中。
退信率超过 2% 阈值
最近 6 小时 132 封中有 4 封退信,集中在 @qq.com。 查看退信明细
MT5 主连接已断开 3 分钟
建户请求已进入队列并停止投递(不会重复建户)。恢复后会自动续跑,无需人工干预。 查看队列
合规提醒
你正在使用「混合模式」。切换为 A-Book 前请确认流动性协议已生效 —— 未生效的切换会导致敞口裸露。

吐司

开户请求已受理,账号 900128
该域名证书 7 天后到期
投递失败:SMTP 认证被拒(535)

浮层

不可逆操作必须两步确认 + 先说后果,且确认框里要写清"会发生什么",而不是只问"确定吗"。

退信率按最近 6 小时滚动计算 Esc关闭浮层

★ 投递轨迹

签名组件。一笔开户、一封邮件、一次对账、一次 KYC 复核,在这个产品里都是同一种东西: 一条要走完的路径。竞品把它做成一个彩色标签("处理中"),信息量几乎为零 —— 运营看不到走到哪、卡在哪、哪一步退回来了。

失败态不只靠变色
失败节点画成 ×,且它之前的连线出现断口。只用红色(颜色差)会让色觉障碍用户看不出区别 —— 颜色之外必须有第二重形态信号。
纵向(详情页 / 抽屉)
进行中
客户提交开户
04:21:08门户自助 · 1,000.00 USD
KYC 自动核验通过
04:21:14用时 6.2s · 无人工介入
投递至 MT5 主服务器
04:33:51第 2 次尝试 · 上次超时
发送开户成功邮件
等待上一步完成
通知 IB 结算
横向(列表 / 概览卡)
已中断
受理
08:00
建户
08:02
邮件退信
邮箱不存在
通知 IB
账号已建成,但通知没送达。账号不受影响,可单独重发通知,⛔ 不需重跑开户。

空态与加载

空态必须回答「为什么空」+「下一步做什么」。 只画一个插图和"暂无数据",等于把用户丢在原地。加载态用骨架屏而不是转圈 —— 骨架屏能预告版面结构,转圈不能。

还没有发过通知

交易账号建成后,系统会自动给客户发送开户确认邮件。 想先看看长什么样,可以用测试数据发一封。

正在拉取投递记录…
邮件投递量

代码与密钥

服务商产品一定会有 API 和密钥。密钥默认掩码显示,要显式揭示 —— ⛔ 不做"页面一打开就完整可见 + 一个大复制按钮",那是把泄露变成一次误点。

POST /v1/accounts200
# 开户:异步受理,幂等
curl -X POST https://api.mt5.email/v1/accounts \
  -H "Authorization: Bearer $MT5E_KEY" \
  -d '{"brand":"northgate","name":"Chen Wei",
       "email":"chen@example.com","leverage":100,
       "currency":"USD"}'

# → {"login":900124,"task_id":"01J8F3K2","idempotent":false}
••••••••••••••••••••••••••••
前缀 mt5e_live_ · 创建于 2026-09-02 · 最近使用 3 分钟前
whsec_7f3a9c21b0d84e6f
用于校验回调真实来源,⛔ 不要放在前端
密钥仅在创建时完整显示一次。之后只能轮换,看不到原文。

数据可视化

图表只承担三件事:趋势、对比、阈值。纯手写 SVG,⛔ 不引图表库 —— 券商后台要快,一个 300KB 的图表库换不来任何这个页面需要的东西。

面积趋势(金)

10-0310-0910-16
开户量峰值 184 · 均值 121 · 环比 +12.4%

对比柱 + 阈值线

NorthVertexAuric KantoDeltaMeridian
本月上月
阈值 2.0%
退信率— — 阈值 当前 1.8% · 逼近阈值

无障碍核验

WCAG 2.1 AA 是本系统的下限,不是加分项。下面是可在浏览器里复现的核验清单。

键盘可达
  • 全站统一焦点环:2px 金色 + 2px 偏移,⛔ 任何地方都不许 outline:none
  • Tab 顺序 = 视觉顺序;模态打开后焦点进入模态并循环,Esc 关闭后焦点回到触发元素
  • 行内可点区域用 <button> / <a>,⛔ 不用带 onclick 的 div
触达尺寸
  • 所有可点元素高度 ≥ 30px;主操作 ≥ 36px;移动端 ≥ 44px(.btn--lg)
  • 复选框视觉 16px,但可点区域由 label 撑满整行
  • 表格行的操作按钮用小号,但行高 44px 保证触摸不误触
色觉障碍
  • 状态色永不单独承载语义:徽章带圆点 + 文字,轨迹带形状(✓ / × / 空环),图表带图例
  • 投递轨迹的失败态用 × 形态 + 连线断口,不只用红色
  • 红/绿同时出现的场景(送达率)必须带数值,不靠颜色对比
文字缩放与动效
  • 浏览器缩放到 200% 不出现横向滚动条(布局用 minmax(0,1fr) 与 clamp())
  • prefers-reduced-motion 下所有时长归零、脉冲与骨架屏停止
  • 中文正文行高 1.75,西文 1.55;-webkit-text-size-adjust:100% 防止横屏被放大