页面 (电商AI平台/) - account / team / settings / index / products / projects: 累积迭代 - restraint.css: 设计 token 补充 - login.html / register.html: 新增登录注册页 - _ARCHIVE.md: 归档说明 Next.js 工程骨架 - app/ + components/: 新一代 SPA 雏形 (page / layout / sidebar / topbar / GridBg / Icon) - package.json / package-lock.json / next.config.mjs / tsconfig.json / postcss.config.mjs / next-env.d.ts 历史归档 / 文档 - v1/: 原 V1 静态稿镜像 (含 mockup-A/B/C) - PRD.md / deployment-guide.md / _check.html - ui参考/ / screenshots/ 杂项 - .gitignore 调整 - 删除根 README.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
14 KiB
流·Studio 设计规范
风格代号: Restraint(克制)· Firecrawl-inspired 适用范围: 流·Studio 全产品(工作台 / 项目 / 商品库 / 流水线 / 资产库 / 编辑器 / 账户) 最后更新: 2026-05-14
1. 设计哲学
一句话: 不是 SaaS,不是工具站,而是「一台精密设备的工作面板」。
三条铁律:
- 克制大于装饰 — 留白 > 容器 > 内容,大量空气感,绝不堆砌
- 单色锚点 — 全场只有一种 accent(橙色),且只用于 CTA / 关键状态 / 强调单词
- 结构清晰可见 — 用 1px 边框、网格背景、"+" 准星、mono 标签暴露"图纸感",而不是用阴影/渐变去隐藏结构
避免的"AI 味":
- 渐变铺面、玻璃拟态、彩色阴影
- 多色 emoji 图标
- 圆角无差别(全部 8px / 16px)
- 卡片浮在背景上的"贴纸感"
- 装饰盖过内容(场记板、霓虹灯、丝绒幕布这种主题公园式视觉)
2. 色彩系统
2.1 中性色(主体 95%)
| Token | Hex | 用途 |
|---|---|---|
--bg |
#FAF9F5 |
页面底色 · 米白(暖调,不是纯白) |
--bg-soft |
#F4F2EC |
hover 态底色 / mono 标签背景 |
--card |
#FFFFFF |
卡片 / 容器底色 |
--border |
#E9E5DB |
主分隔线 · 1px 实线 |
--border-soft |
#EFEBE0 |
次级边框 / 缩略图边框 |
2.2 文字层级(4 层)
| Token | Hex | 权重 / 用途 |
|---|---|---|
--ink |
#15140F |
一级 · 标题 / 数值 / 主文本 |
--ink-2 |
#5A584F |
二级 · 描述 / 次要按钮文字 |
--ink-3 |
#9C988C |
三级 · 标签 / 辅助说明 / 占位 |
--ink-4 |
#C8C4B8 |
四级 · ASCII 散点 / 极弱装饰 |
2.3 主题色(只用于关键点)
| Token | Hex | 用途 |
|---|---|---|
--orange |
#E55B26 |
唯一 accent · 主 CTA / active 态 / 关键单词强调 |
--orange-soft |
#FAE8DC |
主色边框软化 / pill 边框 |
--orange-tint |
#FFF4ED |
主色背景软化 / active nav 底色 |
2.4 状态色(仅状态使用,克制)
| 含义 | Token | Hex | 配套底色 | 配套边框 |
|---|---|---|---|---|
| 成功 | --green |
#3F6B3F |
#EAF2EA |
#D5E5D5 |
| 失败/告警 | --red |
#B33A2A |
#FBEBE7 |
#F2D6CE |
注: 没有蓝、紫、黄、青等「企业 dashboard 五彩斑斓色」。状态用色仅在 pill / 进度条段位上出现,绝不用作大面积背景。
3. 字体系统
3.1 字体族
| 用途 | 字体 |
|---|---|
| 正文 / UI | Inter, 'PingFang SC', 'Microsoft YaHei', sans-serif |
| Mono 装饰 | 'JetBrains Mono', monospace |
Mono 字体不是用来写代码的,是用来做装饰元素:
[ 200 OK ]标签、时间戳// 05.14、小注释/v2、deltas↑ 本月 +3等。
3.2 字号 / 字重 / 行高
| 角色 | 字号 | 字重 | 字距 | 用途 |
|---|---|---|---|---|
| H1 欢迎语 | 26 px | 600 | -0.018em | 页面主标题 |
| 数值 (KPI) | 30 px | 600 | -0.02em | 统计大数字 |
| H2 区块标题 | 15 px | 600 | -0.01em | "最近项目""快捷入口" |
| 卡片标题 | 13.5 px | 600 | normal | 项目名 / 商品名 |
| 正文 / nav | 13.5 px | 500 | normal | 默认 |
| 按钮 | 13 px | 500/600 | normal | btn / pill-btn |
| 描述次级 | 12.5 px | 400 | normal | meta / 描述行 |
| Pill 文字 | 11.5 px | 500 | normal | 状态徽标 |
| Mono 标签 | 10.5–11.5 px | 400/500 | 0.04em (letter-spacing) | [ STATUS ] |
| Mono 散点 | 8.5 px | 400 | 0.04em | 背景 ASCII 装饰 |
行高: 默认 1.5,标题 1.2,提示文本 1.6–1.7。
关键属性: 数值类必须加 font-variant-numeric: tabular-nums,保证等宽对齐。
4. 圆角规则(最关键的一条)
核心原则:结构性容器 = 0 圆角 · 交互元素 = 适度圆角 · 状态徽标 = 完全圆
| 元素类型 | 圆角值 | 例子 |
|---|---|---|
| 大卡片 / 区块容器 | 0 px | .stats .list-card .shortcut .tip .modal |
| 缩略图 / 画面占位 | 0 px | .thumb .ic |
| 按钮 / 输入框 / icon-btn | 9 px | .btn .pill-btn .icon-btn .search |
| nav 项 | 7 px | nav a |
| 头像 / 小色块 | 6 px | .av .team .p |
| Mono 标签 / badge | 3–4 px | .kbd .badge |
| Pill 状态徽标 / dot | 999 px | .pill .dot |
| 进度条段位 | 2–3 px | .prog span .bar |
为什么这样定: 大容器走硬边像「图纸框」,有工程感;按钮走中圆角保留可点击的友好感;状态徽标走全圆形成强对比,视觉跳脱出来。
5. 边框 / 阴影 / 描边
5.1 边框
- 统一规格:
1px solid var(--border) - 次级:
1px solid var(--border-soft) - 不允许 2px / 3px 实线(粗边破坏轻盈感)
- 虚线仅用于
.tip提示框:1px dashed var(--border)
5.2 阴影
- 默认无阴影(关键!)
- 唯一例外:Toast 浮层
box-shadow: 0 4px 20px rgba(21,20,15,0.06) - 弹窗用半透明遮罩
rgba(21,20,15,0.42)拉开层级,不靠 shadow
5.3 容器四角"+" 注册标(签名元素)
所有重要区块容器的四角放 + 字符,模拟印刷套版准星:
.stats::before,.stats::after { content:'+'; position:absolute; color:var(--ink-3); font-family:'JetBrains Mono',monospace; font-size:13px; }
.stats::before { top:-8px; left:-8px }
.stats::after { bottom:-8px; right:-8px }
/* 另外两角用额外 .corner-tr / .corner-bl span 补齐 */
6. 间距 / 栅格
基础栅格: 4 px
常用间距: 4 / 6 / 8 / 12 / 14 / 16 / 18 / 22 / 24 / 36 / 48 / 56
主区块布局:
- 侧边栏宽度:
248px - 主内容 padding:
48px 56px 56px - 内容最大宽度:
1480px - 区块之间垂直间距:
36px(welcome → stats → grid2) - 卡片网格间距:
24px(主区) /12px(子区) - 卡片内 padding:
22px 24px(stats) /14px 18px(列表行) /14px(快捷入口)
7. 背景:制图纸网格
7.1 三层叠加
图层 1(最上):主交叉点 "+" 准星 — 240×240 重复
图层 2(中间):子交叉点小圆点 — 60×60 重复
图层 3(最下):虚线网格 — 240×240 重复(stroke-dasharray: 1.5 4)
配色:
- "+" 准星:
#B8B3A4(stroke 1px) - 小点:
#CFCABB(r=0.9) - 虚线:
#E2DED2(stroke 1px)
7.2 视觉聚焦遮罩
整个网格背景用径向遮罩,中心实、四周淡:
mask-image: radial-gradient(ellipse 95% 80% at 50% 35%, #000 25%, transparent 95%);
效果:网格在屏幕中心隐约可见,边缘消失,不抢内容。
7.3 装饰散点(Mono ASCII)
主区域 4 个固定位置撒 ASCII 散点,模拟手稿污点 / 颗粒感:
· · +
· +XX+
+XXXX·
+X·
字号 8.5px / 颜色 --ink-4 / 透明度 0.8 / pointer-events:none。
7.4 边角 Mono 标签
主区域 4 个角各放一个 Mono 标签,样例:
左上 [ 200 OK ] 右上 [ /v2 ]
左下 [ .MP4 · 9:16 ] 右下 [ STUDIO ]
字号 10.5px / 颜色 --ink-3 / 字距 0.06em。
作用: 让页面看起来像「在某个开发环境 / 调试视图里」,而不是普通官网。这是区分 AI 味和高级感的关键。
8. 组件规范
8.1 按钮
3 种且仅 3 种:
| 类型 | 背景 | 文字 | 边框 | 圆角 | 字重 |
|---|---|---|---|---|---|
.btn 默认 |
--card 白 |
--ink |
--border |
9px | 500 |
.btn-primary 主 CTA |
--orange |
白 | --orange |
9px | 600 |
.btn-sm 小按钮 |
同上,padding 5px 11px / fontsize 12px |
Hover:默认 → --bg-soft;主按钮 → #D04E1F(橙色加深一档)。
8.2 Pill(状态徽标)
[ ● 状态文字 ] 完全圆角 / 1px 边框 / 11.5px 字号 / 4px 10px padding
| 状态 | 文字色 | 底色 | 边框 |
|---|---|---|---|
| info | --orange |
--orange-tint |
--orange-soft |
| ok | --green |
#EAF2EA |
#D5E5D5 |
| err | --red |
#FBEBE7 |
#F2D6CE |
每个 pill 前置 6px 圆点(.dot,颜色继承文字色)。
8.3 输入框 / 搜索
- 背景白 / 1px 边框 / 9px 圆角 / 9px 12px padding
- 占位字色
--ink-3 - 聚焦态可选橙色边框,但克制使用
- 右侧带 mono
⌘K提示徽标
8.4 KPI 统计行(.stats)
- 1 行 4 格,共用一个 1px 边框容器,无 gap
- 列与列之间用
border-right: 1px分隔(最后一列去掉) - 容器四角加 "+" 注册标
- 每格结构:label + badge → 大数字(30px) → delta / progress
8.5 列表(.recent)
[缩略图 54×70] [标题 + meta] [进度条 5 段] [pill] [按钮]
- grid 5 列:
54px 1fr auto auto auto - 行高 padding
14px 18px - 行间 1px 分隔线,最后行去掉
- 整行 hover →
--bg-soft
8.6 进度条段位(流水线 5 阶段专用)
5 个 18×5px 小段,3px 间距,每段独立颜色:
| 状态 | 颜色 |
|---|---|
| 未开始 | --bg-soft |
| 已完成 | --ink-2 |
| 当前 | --orange |
| 失败 | --red |
8.7 快捷入口卡(.shortcut)
- 白底 / 1px 边框 / 0 圆角 / 14px padding
- 左侧 30×30 橙色 tint 图标块(0 圆角)
- 右侧:标题(13px 600)+ Mono 描述(11.5px,
--ink-3) - Hover →
--bg-soft
8.8 提示框(.tip)
- 白底 / 1px 虚线边框(
dashed)/ 0 圆角 - 加粗标题独立一行 + 正文
- 内联代码用
.mono类:橙色文字 + 橙色 tint 底 + 3px 圆角
8.9 Toast
- 右下角 24px 偏移 / 白底 / 1px 边框 / 0 圆角
- 唯一允许阴影的元素:
0 4px 20px rgba(21,20,15,0.06) - 进入动画:
translateX(420px → 0),缓动cubic-bezier(0.34, 1.56, 0.64, 1),300ms - 自动消失:2400ms
- 内容结构:左侧 24×24 橙色 tint 图标 + 右侧标题 + Mono 副文本(
[ 200 OK ])
8.10 弹窗(Modal)
- 居中,460–480px 宽,白底,0 圆角
- 四角加 "+" 准星(同 stats 容器规则)
- 遮罩
rgba(21,20,15,0.42),带backdrop-filter: blur(8px) - 进入动画:
scale(0.96 → 1),250ms 弹性缓动 - 三段结构:
- Header:36px 橙色 tint 图标 + 标题 + Mono 副标
- Body:13px /
--ink-2/ 行高 1.7 - Footer:右对齐两个按钮(取消 + 主 CTA)
- ESC 关闭 / 点击遮罩关闭
9. 微观细节(决定"高级感"的)
9.1 标签全部包方括号
不要写 200 OK,要写 [ 200 OK ](方括号 + 单空格)。
不要写 MP4 9:16,要写 [ .MP4 · 9:16 ](中点分隔)。
路径用 /v2、/sidebar collapse 这种伪命令。
9.2 注释样式时间
// 05.14 · 周五 —— 双斜杠开头,模拟代码注释。
9.3 数值后缀
¥327 主体大字 + .40 小字次级(<small>),让数字主体更突出。
9.4 强调单词上色
正文里 <b style="color:var(--ink)">3 个项目</b> —— 让具体数值/名词比周围文字更深一档(不是变橙,只是变更黑)。橙色只留给 CTA。
9.5 ASCII 字符做装饰
进度箭头:↑ 本月 +3 ↓ -1.2% 用 Unicode 箭头。
中文标点 + 英文单位混排:本月 +3 较上月 +33% 中间用半角空格分隔。
9.6 链接式"更多"按钮
"查看全部"不要写成按钮,写成 [ ALL · 12 ] →(Mono 标签 + 箭头),颜色 --ink-3,hover 橙色。
9.7 缩略图不放图,放比例
9:16 这种 Mono 字符占位,模拟「未渲染图片的草稿状态」,呼应工程感。
10. Don't List(绝对禁止)
- ❌ 渐变背景(只有 hero 区可考虑,但首选纯色)
- ❌ 玻璃拟态(
backdrop-filter只用于 modal 遮罩,不用于卡片) - ❌ 彩色 emoji 图标(用 SVG line icon,1.8px stroke)
- ❌ 多个 accent 色(全场只有橙色一个 accent)
- ❌ 大圆角容器(>=10px 的卡片直接判错)
- ❌ 投影 / 内阴影 / 文字阴影
- ❌ 鲜艳的状态色(避免荧光绿、电光蓝、霓虹粉这类)
- ❌ 居中对齐大段正文(全部左对齐)
- ❌ 把装饰当主角(场记板、丝绒、霓虹灯都不要)
- ❌ 无意义的微动效(hover 旋转、缩放、彩虹流光等)
11. Sass / CSS Token 速查
:root{
/* 中性 */
--bg:#FAF9F5; --bg-soft:#F4F2EC; --card:#FFFFFF;
--border:#E9E5DB; --border-soft:#EFEBE0;
/* 文字 4 层 */
--ink:#15140F; --ink-2:#5A584F; --ink-3:#9C988C; --ink-4:#C8C4B8;
/* 主色 */
--orange:#E55B26; --orange-soft:#FAE8DC; --orange-tint:#FFF4ED;
--orange-hover:#D04E1F;
/* 状态 */
--green:#3F6B3F; --green-bg:#EAF2EA; --green-bd:#D5E5D5;
--red:#B33A2A; --red-bg:#FBEBE7; --red-bd:#F2D6CE;
}
12. 参考与来源
- 视觉灵感: Firecrawl(克制 / 单橙 accent / mono 装饰)
- 结构灵感: Linear / Stripe Dashboard(信息密度 / 1px 分层)
- 图纸感来源: 印刷套版准星 + 老 Unix 终端
- 当前实现: demo.html · restraint-2.html