# 流·Studio 设计规范 > **风格代号:** Restraint(克制)· Firecrawl-inspired > **适用范围:** 流·Studio 全产品(工作台 / 项目 / 商品库 / 流水线 / 资产库 / 编辑器 / 账户) > **最后更新:** 2026-05-14 --- ## 1. 设计哲学 **一句话:** 不是 SaaS,不是工具站,而是「一台精密设备的工作面板」。 **三条铁律:** 1. **克制大于装饰** — 留白 > 容器 > 内容,大量空气感,绝不堆砌 2. **单色锚点** — 全场只有一种 accent(橙色),且只用于 CTA / 关键状态 / 强调单词 3. **结构清晰可见** — 用 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 容器四角"+" 注册标(签名元素) 所有重要区块容器的四角放 `+` 字符,模拟印刷套版准星: ```css .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 视觉聚焦遮罩 整个网格背景用径向遮罩,中心实、四周淡: ```css 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` 小字次级(``),让数字主体更突出。 ### 9.4 强调单词上色 正文里 `3 个项目` —— 让具体数值/名词比周围文字更深一档(不是变橙,只是变更黑)。**橙色只留给 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 速查 ```css :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](https://www.firecrawl.dev/)(克制 / 单橙 accent / mono 装饰) - **结构灵感:** Linear / Stripe Dashboard(信息密度 / 1px 分层) - **图纸感来源:** 印刷套版准星 + 老 Unix 终端 - **当前实现:** [demo.html](demo.html) · [restraint-2.html](_design_src/untitled/project/directions/v3/restraint-2.html)