色彩

工具类用苹果液态玻璃的色板,小屋用暖纸与橄榄墨。色块点一下就复制色值;写着的对比度都是按最不利的底实算的。

工具 · 液态玻璃

黑红、六套中性、粉彩三条路都被屋主否过,这里只写定下来的;为什么不是那样,见否掉的方向「黑红与六套中性」「粉彩三选与六套」两条,被否的样子按当时的色值画在现行旁边。

中性底 + 两档玻璃;层次靠玻璃、投影、分隔线,不靠边框

底色只写在html上。玻璃.62给侧栏、顶栏这类视口大小的磨砂面;强玻璃.78给条目卡这类随正文长的面,不挂磨砂。

本站这里在用全站 · 侧栏导航

浅色
深色

对照换成「靠边框分层」看看:刷刷改版前的面板是1px描边加白底(示意),层次全靠线,光晕、玻璃和投影都没了。

数值

html { background: #F4F5F9; }            /* 深:#0B0C10;body 保持透明 */
--glass:        rgba(255,255,255,.62);  /* 深:rgba(40,42,52,.55) */
--glass-strong: rgba(255,255,255,.78);  /* 深:rgba(44,46,58,.72) */
--glass-edge:   rgba(255,255,255,.9);   /* 顶边亮线;深:rgba(255,255,255,.12) */
--sep:          rgba(60,60,67,.12);     /* 深:rgba(84,84,88,.5) */
--shadow: 0 10px 30px rgba(20,30,60,.08), inset 0 1px 0 var(--glass-edge);
                                        /* 深:0 10px 30px rgba(0,0,0,.35) */

用在哪

.62磨砂:侧栏、顶栏、tab bar、弹层——视口大小的面。.78不磨砂:条目卡、阅读栏、右栏——随正文长的面。本站同样:侧栏、顶栏挂.62磨砂,条目卡.78不挂。

为什么

屋主要「参考苹果的UI和配色」。分层只靠玻璃、投影和分隔线,不用边框。长面不挂磨砂:长到近两万像素会超显卡纹理上限、整层丢弃,每次滚动还要重新光栅化;屋主台式机没显卡,磨砂正是那台机器的瓶颈。

坑

body也写了不透明背景时,它画在z-index:-1的body::before之上,三团光晕整个被盖掉——而离线算的对比度照样「成立」。底色只写html,body透明。

出处:tools/plan/docs/design/SPEC-apple-glass.md:12「结构」、:15「颜色(苹果系统色)」;tools/gang/design-proposal.md:909「磨砂只放在视口大小的表面上」;tools/shua/design-proposal.md:350「落到刷刷时自己拿的决定」;反例照tools/shua/design-proposal.md:28「做得好、不要动的地方」(面板统一1px描边 + 白底 + 小圆角)

文字分三级:次级.76承载文字,三级.32只作装饰

正文#1C1C1E;次级字统一rgba(60,60,67,.76),深色rgba(235,235,245,.62);三级.32只给chevron与分隔符,不承载文字。

本站这里在用总览 · 章节目录

浅 · 底=强玻璃叠靛光晕最浓角#EFEFFB

正文#1C1C1E14.92

次级rgba(60,60,67,.76)4.91

三级.321.77只作装饰

深 · 底=强玻璃叠青光晕最浓角#273440

正文#F2F2F711.40

次级rgba(235,235,245,.62)5.17

三级.322.48只作装饰

用起来同一张分组列表卡:标题用正文色,副标题和计数用次级,chevron用三级。最后一行是反例——三级色拿来写字,最不利角浅色只有1.77、深色2.48。

浅色

  • 综合业务练习上次做到第12题 · 3分钟前120题
  • 结算业务基础已做完 · 昨天86题
  • 票据业务进阶还没开始 · 这行用了三级色反例

深色

  • 综合业务练习上次做到第12题 · 3分钟前120题
  • 结算业务基础已做完 · 昨天86题
  • 票据业务进阶还没开始 · 这行用了三级色反例

数值

--label:  #1C1C1E;              /* 深 #F2F2F7 */
--label2: rgba(60,60,67,.76);   /* 深 rgba(235,235,245,.62);次级,承载文字 */
--label3: rgba(60,60,67,.32);   /* 深 rgba(235,235,245,.32);只给 chevron、分隔符 */

为什么是.76

样张原值.62叠最亮光晕角只有3.42;改.73只压过了蓝光晕,绿、橙、粉、青、靛的光晕更深,只有4.28–4.49;.76让六色都过(本站实测条目卡最低4.91)。一个值,不按强调色分表。

各家本地压深

统一值只是起点:plan内容区的字直接压光晕、没有玻璃底,本地压到.85;card的hero副标题、页脚也在裸光晕上,压到.89、深色.64。这两处都有记录,是SPEC允许的本地偏离。本站把所有文字都放在玻璃卡上,分组说明这类压裸光晕的字只用正文色,所以.76够用。

坑

次级字.76直接压在光晕中心(不隔玻璃)只有3.52。字要么上玻璃,要么换正文色,别指望统一值免检。

出处:tools/plan/docs/design/SPEC-apple-glass.md:121「降级与可访问性」、:133「次级字统一值与各项目自测义务」、:176「各家有记录的偏离」

六个苹果强调色:填充档与文字档分开

填充、渐变、图标、色点、焦点环用系统色原值;一当文字用,就换HIG「增强对比度」那组。原值当字不达标:#007AFF压白只有4.02,#34C759只有2.2。

本站这里在用全站 · 强调色

蓝默认

绿

靛

橙

粉

青

每格:填充 浅 / 深 · 渐变(浅端)· 文字档 浅 / 深。文字档那两块的底是「强玻璃叠这个强调色自己的光晕最浓角」的合成色,数字是那一角的对比度(公式法)。

用起来主按钮、次按钮、选中标签、链接、进度条、焦点环,浅深并排。换个颜色看看(默认跟着全站强调色);按Tab走进来,焦点环是填充档原色、2px、外扩2px。点「做一题」进度条往前走。

浅色

专项练习选好题型就能开始
已完成8/20题

链接一律用文字档:对比度怎么算。

深色

专项练习选好题型就能开始
已完成8/20题

链接一律用文字档:对比度怎么算。

文字档

/* 浅色:HIG 增强对比度 */  蓝 #0040DD · 绿 #1F7A36 · 靛 #3634A3 · 橙 #C93400 · 粉 #D30F45 · 青 #0071A4 · 红 #D70015
/* 深色:HIG 深色增强对比度 */ 蓝 #409CFF · 绿 #30DB5B · 靛 #8E8BFF · 橙 #FFB340 · 粉 #FF6482 · 青 #5AC8F5 · 红 #FF6961

绿用#1F7A36,不用HIG的#248A3D(压白只有4.40);深色靛从HIG的#7D7AFF提亮到#8E8BFF(对#0B0C10是6.8)。

渐变浅端

浅色accent-2:蓝#5AC8FA、绿#A8E063、靛#BF5AF2、橙#FFD60A、粉#FF9AA2、青#64D2FF。深色样张只重写了蓝(#64D2FF),其余沿用浅色那组,本站与岗岗、card一样照这个写。

现状

深色accent-2四家是三种写法:刷刷、plan各自配了一套,互相也对不上。统一与否等控制室定,正在对齐。

出处:tools/plan/docs/design/SPEC-apple-glass.md:17「颜色(苹果系统色)」、:76「自适应」文字档、:122「降级与可访问性」、:201「各家有记录的偏离」

主按钮 = 品牌图标同一条亮渐变 + 白字,浅深都一样

linear-gradient(135deg,var(--accent),var(--accent-2))加白字和一层text-shadow。白字对浅端的比值不够,这是屋主拍板的审美例外:如实记录、不断言。

本站这里在用总览 · 随便翻一条

浅色

4.02 / 1.90
2.22 / 1.55
5.65 / 3.52
2.20 / 1.41
3.65 / 2.02
2.57 / 1.72

深色

3.65 / 1.72
2.02 / 1.55
5.06 / 3.52
2.06 / 1.41
3.52 / 2.02
1.99 / 1.72

按钮下的数字:白字对渐变深端 / 浅端的实际比值。审美例外,记录不断言——不是「大字3:1」:按钮字14–15px,够不上WCAG大字(18.66px粗体或24px)。按钮点一下复制它的渐变。

用起来三级按钮放在一起:主按钮亮渐变白字、次按钮实色软底加文字档、第三级强玻璃底加正文色,浅深并排,跟着全站强调色走。点一下复制类名。

浅色

深色

代码

.btn {
  background: linear-gradient(135deg, var(--accent), var(--accent-2)); /* 与品牌图标同一条 */
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,.25);   /* 唯一的补救:不压深渐变、不加描边 */
  font-weight: 600;
  box-shadow: 0 8px 18px var(--accent-shadow);
}
.btn-tint  { background: var(--accent-tint); color: var(--accent-text); }  /* 次按钮:实色软底 + 文字档 */

为什么

曾经为了4.5把渐变压深,屋主看了说要和左上角一样浅。审美例外只开这一处:别的承载信息的文字——正文、链接、chip、次按钮——一律≥4.5,压深的「文字档」只用在它们身上。

「所有颜色的按钮色可以和页面左上角的颜色一样浅一点」

屋主 · 2026-09-23

坑

别用「大字3:1」口径粉饰;对比度脚本把主按钮单列成「记录不断言」,其余照断言。

出处:tools/plan/docs/design/SPEC-apple-glass.md:120「降级与可访问性」、:144「对比度验收方法」;比值与tools/card/collection/shared/theme.css:5文件头注释逐个对得上

语义色固定、不随强调色;风险必须带文字

红=冲突、逾期、答错;橙=今天截止;绿=完成、答对。填充用系统色,字用文字档压在同色相的实色软底上,旁边一定有字,不只靠颜色。日期标签另有一档黄,只给两天内到期,见下一条。

本站这里在用交互 · 条目里的坑

冲突 · 逾期2天 今天截止 已完成
冲突 · 逾期2天 今天截止 已完成

用起来提示条、带字的风险标签,下面是只靠颜色的反例,浅深并排。点「红绿色弱模拟」:带字的那组照样读得出,只有色点的那组红绿就分不清了。

浅色

已保存改动写进了本机

今天截止还有2项没交

冲突两件事都排在周三上午

风险标签带字

  • 交物业费逾期2天
  • 周报今天截止
  • 材料收集已完成

反例只靠颜色

  • 交物业费
  • 周报
  • 材料收集

深色

已保存改动写进了本机

今天截止还有2项没交

冲突两件事都排在周三上午

风险标签带字

  • 交物业费逾期2天
  • 周报今天截止
  • 材料收集已完成

反例只靠颜色

  • 交物业费
  • 周报
  • 材料收集

模拟用的是Machado等2009年发表的绿色盲(deuteranopia)颜色矩阵,SVG feColorMatrix在线性RGB里算,只是示意,不等于每个人看到的样子。

数值

        填充(浅 / 深)      文字档(浅 / 深)     实色软底(浅 / 深)
红      #FF3B30 / #FF453A   #D70015 / #FF6961   #FFE9E8 / #412021
橙      #FF9500 / #FF9F0A   #C93400 / #FFB340   #FFF3E3 / #413019
绿      #34C759 / #30D158   #1F7A36 / #30DB5B   #E9F9ED / #1C3927

用在哪

plan的风险色:红=冲突逾期、橙=今天截止、黄=两天内到期(2026-10-08加,只给日期标签,见下一条「黄色只给两天内到期」)、绿=完成、灰=未开始和离截止三天以上;风险色覆盖阶段色,用户不能自定义。刷刷答对绿、答错红。本站条目里的「坑」铺橙色实色软底,左边写着「坑」字,不只靠颜色。

为什么

语义不能跟着强调色变,换了强调色「红」还得是红。色弱的人分不清红绿,所以风险提示必须有文字说明,不能只靠颜色。

本站本地

深色红字HIG原值#FF6961压强玻璃叠青光晕最浓角只有4.49,本站提亮到#FF6E66(4.63);其余五个文字档压最不利角都≥4.62。

出处:tools/plan/docs/design/SPEC-apple-glass.md:18「颜色(苹果系统色)」、:76文字档;tools/plan/docs/BUSINESS_LOGIC.md:1014「风险与颜色逻辑」

黄色只给两天内到期:日期标签按离截止几天分四档,远的一律灰

逾期红、今天截止橙、明天后天黄、其余灰;已完成和已归档的一律灰。强调色不再拿来标日期,只留给能点的东西和进度条;一行里只有日期标签带颜色,「重要」「待重排」这些标签都是灰的。

用起来一组带截止日的假任务(2026年10月)。拖「今天是」滑块(或聚焦后按←→),日期标签按离截止还有几天换档:逾期红、今天截止橙、明天后天黄、其余灰;已完成的一律灰。文案照plan今日页的口径。浅深并排。

浅色

    深色

      数值 / 代码

      urgencyTone(days)            // days = 截止日 − 今天,按日历天
        days < 0    overdue  红   逾期N天
        days === 0  today    橙   今天截止
        days ≤ 2    soon     黄   明天截止 / 还有2天
        其余        normal   灰   还有N天(--fill 底 + 次级字)
      已完成 / 已归档        一律 normal,只给灰色的绝对日期(10月5日)
      
      黄(2026-10-08加,只给 soon)
        填充    #FFCC00 / #FFD60A   只当填充,不当字:压白1.51、压页面底1.39
        文字档  #7A5200 / #FFD60A   压自己的软底6.23 / 9.04
        软底    #FDF3CF / #3A3214   (实色)
      token 按用途起名   --soon-50: var(--yellow-soft);  --soon-700: var(--yellow-text);

      用在哪

      plan今日、日程、全部任务三页的任务行日期标签,和详情里的截止日期胶囊,同一个urgencyTone。全部任务页近两天之外写绝对日期(周四/9月30日),颜色照样按这四档。SPEC写明四家通用:其余三家以后有日期标签照这一套。和上一条「语义色」的交叉:橙从「即将截止」收窄成「今天截止」,明天、后天归黄。

      为什么

      改版前不急的日期(「明天」「还有12天」「10月20日」)也用强调色软底+强调色字,和「逾期」一样大、一样粗、一样有颜色,远的和急的一样响。分四档以后,只有真急的带颜色,越急越暖;强调色只留给能点的东西,日期不再冒充按钮。

      一眼不知道哪里是重点

      屋主,2026-10-08,对照SuperTodo(SPEC §2a记录)

      坑

      系统黄当字压白只有1.51、压页面底1.39:浅色的字必须压到#7A5200,深色那档的字才能直接用系统黄。plan写完对比度测试后先把--yellow-text改回#FFCC00跑一次,当场红,判据才算接上了。已完成、已归档的任务要单独判:不判的话做完的事也挂着「逾期」,plan 10-08修过一次。

      出处:tools/plan/docs/design/SPEC-apple-glass.md:19「颜色(苹果系统色)」、:22「2a. 紧急程度标签」;tools/plan/app/src/domain/dateLabel.ts:30「urgencyTone」、:102「isSettledTask」;tools/plan/app/src/styles/tokens.css:186「--yellow-text」、:387「--soon-50」;tools/plan/app/src/styles/tokens.contrast.test.ts:75;tools/plan/docs/BUSINESS_LOGIC.md:1037「黄色:两天内到期」、:1877「紧急程度只用一组色」

      承载文字的浅底一律实色;token按用途起名

      次按钮、选中项、标签、计数胶囊这类「上面压字」的软底不透明;半透明只留给投影、光晕、描边。--accent-tint实色软底、--accent-shadow投影,各管各的。

      本站这里在用收藏 · 标签多选

      光晕最淡处

      半透明 · 4.06 实色 · 4.59

      光晕最浓处

      半透明 · 2.67 实色 · 4.59

      同一个粉色chip:半透明底rgba(255,45,85,.14)会把底下的光晕吃进来,挪到光晕中心就从4.06掉到2.67;实色底#FFE8EC在哪都是4.59。

      拖一拖把光晕从最淡拖到最浓,看同一组标签、次按钮、计数胶囊:半透明底的字一路往下掉,实色底的字一直是4.59。粉色、浅色是六色里最不利的一组。

      半透明底已选 · 单选稍后122.67
      实色底已选 · 单选稍后124.59

      数值

      --fill: #E6E6E6;          /* 浅 = 白与正文色 #1C1C1E 兑11%;深 #393A3E = 深底与正文色兑20% */
      --accent-tint: #E3F0FF;   /* 实色软底:浅 = 填充色兑11%进白;深 = 兑18%进 #17181C(#152B45) */
      --accent-shadow: rgba(0,122,255,.13);  /* 投影:必须半透明,不压字 */
      /* plan 再拆一支 --accent-stroke(描边,半透明,按图形 ≥3判) */

      为什么

      半透明软底和压在上面的字是同一个色相,底吃进光晕后对比度随位置漂:岗岗实测同色相文字只有3.9–4.4,plan是「同一个chip挪个位置就从4.4掉到3.3」。实色把这一格从「随光晕变」变成确定值,文字档能原封不动用统一值。

      命名教训

      旧的--accent-soft同时当软底、投影、描边,--on-accent同时当主按钮白字和实底上的字——名字说的是长相,所以谁都拿去用。token的名字必须说明用途,不是说明颜色。

      出处:tools/plan/docs/design/SPEC-apple-glass.md:135「次级字统一值与各项目自测义务」、:158「plan本地第三轮」、:173「命名教训」;tools/gang/design-proposal.md:833「例外与理由」;tools/plan/docs/ui-redesign-proposal-v2.md:587「对比度第三轮」

      背景是三团光晕:一团跟强调色、一团暖、一团冷

      固定在视口的body::before画三团radial-gradient,透明度.2–.55,blur(10px)把边糊软;深色下减弱。点下面的开关,一团一团看。

      本站这里在用全站 · 强调色

      代码

      body::before {
        content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
        background:
          radial-gradient(38vw 38vw at 12% 8%,   var(--blob1), transparent 60%),
          radial-gradient(34vw 34vw at 92% 18%,  var(--blob2), transparent 60%),
          radial-gradient(40vw 40vw at 70% 100%, var(--blob3), transparent 60%);
        filter: blur(10px);
      }
      /* 蓝(默认)浅:rgba(90,200,250,.55)  rgba(255,214,170,.55)  rgba(175,160,255,.45)
                   深:rgba(10,132,255,.35)  rgba(255,159,10,.22)   rgba(94,92,230,.35) */

      为什么

      光晕是这套视觉的主要特征,不为了字色去减淡它——字不够就上玻璃或压深字,别动光晕。用固定伪元素而不是background-attachment:fixed:iOS Safari不支持固定附着,背景会被拉成整页高、越往下越跑偏。

      坑

      光晕的vw尺寸与blur半径不乘大屏缩放系数;html与body只能有一个写底色(见「中性底」那条)。

      出处:tools/plan/docs/design/SPEC-apple-glass.md:20「颜色(苹果系统色)」;tools/plan/docs/design/shua-glass.html:31body::before;tools/gang/styles.css:613「刻意不用background-attachment:fixed」

      深色靠两个属性切换;头部同步脚本在样式表前设好,免闪色

      html[data-mode]写已解析的light/dark,偏好(含auto)另存data-mode-pref;强调色data-accent。localStorage两个键<项目>-mode、<项目>-accent,默认light + blue。

      本站这里在用全站 · 浅深切换

      data-mode-pref
      —
      data-mode
      —
      data-accent
      —
      theme-color
      —

      任何元素都能局部切给这块加data-mode="dark",令牌在它身上重算一遍。

      左边读的是本页<html>上的实时值:去侧栏底部(手机在「更多」里)换外观或强调色,这里跟着变。

      代码

      <head>
        <meta name="theme-color" content="#F4F5F9">   <!-- 深色 #0B0C10,脚本跟着改 -->
        <script src="assets/boot.js"></script>         <!-- 同步,排在样式表之前 -->
        <link rel="stylesheet" href="assets/star.css">
      
      // boot.js 要点:读 star-mode / star-accent(try/catch,非法值回落 light + blue),
      // auto 按 prefers-color-scheme 解析后写进 data-mode,并监听系统翻转。
      root.setAttribute("data-mode-pref", pref);
      root.setAttribute("data-mode", pref === "auto" ? (mq.matches ? "dark" : "light") : pref);
      root.setAttribute("data-accent", accent);

      为什么

      属性在样式表下载前就在<html>上,首帧拿到正确的令牌:深色下不先白一下,切过强调色刷新也不闪别的色。data-mode写已解析值,CSS只要一份深色块,不必为auto再抄一遍(plan的写法)。file://下读localStorage可能直接抛错,读写一律try/catch。

      本站写法

      令牌一行一对浅深值:--bg: var(--lt,#F4F5F9) var(--dk,#0B0C10),挂在:root,[data-mode],[data-accent]上,所以样例里任何元素加属性都能局部切——这页的深色样例全是这么做的。

      出处:tools/plan/docs/design/SPEC-apple-glass.md:29「主题与切换」;tools/plan/app/src/styles/tokens.css:11文件头「两个维度」;tools/gang/index.html:15外观预置脚本注释

      对比度按最不利的那一角算,公式法与像素法两法验收

      底色取「玻璃rgba叠在光晕最浓(深色最亮)那一角」的合成色,不取屏幕平均、不取玻璃名义值;半透明字先按alpha压到底上再算。正文与次级≥4.5,图形≥3,高对比≥7。

      次级字样例Aa 123

      合成后:#67676F

      4.91: 1

      • 正文 ≥4.5
      • 图形 ≥3
      • 高对比 ≥7

      公式

      const L=h=>{const [r,g,b]=[1,3,5].map(i=>parseInt(h.slice(i,i+2),16)/255).map(c=>c<=0.03928?c/12.92:Math.pow((c+0.055)/1.055,2.4));return .2126*r+.7152*g+.0722*b};
      const C=(a,b)=>{const x=L(a),y=L(b);return ((Math.max(x,y)+.05)/(Math.min(x,y)+.05)).toFixed(2)};

      两法

      1. 公式法压最不利角:对每个文字色,底取玻璃叠光晕最浓那一角的合成色,套上面的L/C。
      2. 像素法交叉验证:真实页面逐元素截图,取底色像素众数(含磨砂与光晕的最终合成),浅深 × 六强调色 × 全部承载文字的元素。

      两条路各抓得到对方漏的:岗岗公式法抓到粉色光晕下顶栏环节名4.35,像素法抓到深色弹层底太亮、三个强调色选中项4.17–4.25。任一条不过就算不过。

      本站实测

      条目卡(强玻璃.78叠光晕最浓角),浅深 × 六强调色:次级字最低4.91(浅靛)/5.17(深青);强调色文字档最低4.75(浅粉)/4.68(深蓝)。侧栏磨砂.62叠饱和度提升后的光晕:粉文字档只有4.26,所以侧栏、顶栏、tab bar里的强调色字一律压在强玻璃选中底上(≥4.70)。

      坑

      读getComputedStyle().backgroundColor只拿到rgba字面量,算不出真实底色;统一值只是起点,各项目必须在自己最不利的光晕角下实测,不够就本地压深并记录。

      出处:tools/plan/docs/design/SPEC-apple-glass.md:139「对比度验收方法」、:137「各项目自测义务」;tools/gang/design-proposal.md:772「computed值不可信」

      舞台底用随强调色走的深色调,不用纯黑:星野

      卡集选卡台的底是屋主从六选里挑的「D星野」:深夜蓝紫160°渐变,中段混18%强调色,中心一团45%强调色柔光,十二颗CSS星点慢慢闪,四周压暗角。浅色模式也用,深色再压一档。

      本站这里在用总览 · 条目星球

      点色点换这块舞台的强调色(card默认靛);系统开了「减弱动态效果」时星点静止。

      代码

      --stage-1: #0F1128; --stage-2: #1B1740; --stage-3: #0B0C1E;   /* 深色 #0A0B1E #141030 #070812 */
      --stage: radial-gradient(50% 45% at 50% 55%, color-mix(in srgb, var(--accent) 45%, transparent), transparent 70%),
               linear-gradient(160deg, var(--stage-1), color-mix(in srgb, var(--accent) 18%, var(--stage-2)) 55%, var(--stage-3));
      .stage::before { /* 十二颗星:radial-gradient(1.2px 1.2px at 12% 18%, #fff 60%, transparent) × 12 */
        opacity: .85; animation: twinkle 9s ease-in-out infinite; }
      .stage::after  { background: radial-gradient(90% 90% at 50% 50%, transparent 60%, rgba(0,0,0,.5)); }  /* 暗角 */
      @keyframes twinkle { 0%, 100% { opacity: .85 } 50% { opacity: .55 } }
      @media (prefers-reduced-motion: reduce) { .stage::before { animation: none } }

      为什么

      舞台底随强调色的深色调、不用纯黑:这一句是控制室2026-09-23 02:15下发时自己加的,查不到屋主说过(这里以前写成「屋主裁定」,2026-10-08查会话记录更正,经过见否掉的方向 · 舞台底六选)。屋主从六选(极光雾、聚光舞台、网格渐变加颗粒、星野、玻璃台面、光环)里回了「D」,挑的是星野;球形选卡撤掉之后星野底留了下来。

      出处:tools/card/collection/shared/theme.css:24--stage;tools/card/collection/gallery.css:17.globe-stage::before星点、:40减弱动效;tools/card/CLAUDE.md:233「星野」;控制室会话记录(2026-09-23 02:15下发「舞台底改成随强调色的深色调而不是纯黑」,02:20屋主回「D」)

      小屋 · 暖纸

      色板来自小米SU7车漆色系:低饱和、暖底,橄榄绿主色、雅灰加珍珠白底、熔岩橙点缀、海湾蓝冷调呼吸。饱和色严格限量、限位置。

      暖纸中性系统:每个颜色都有固定角色和使用限制

      纸底、墨、橄榄、熔岩橙各司其职;白天与夜里是同一套角色的两份值。对比度都是按WCAG实测,不达标的只压明度、不动色相。

      白天 · 纸底#F8F6F1

      • 纸底#F8F6F1页面底;上叠暖雾冷雾两层
      • 卡面#FDFCF9只给浮起面,不铺大面积
      • 墨#2E2D28标题、工具名 · 12.77
      • 正文墨#3E3C35正文、说明 · 10.22
      • 次级字#6C6A61次级说明、导航默认 · 5.02
      • 辅助小字#6B685B11–12.5px小字 · 5.18(原#97948A只有2.81)
      • 橄榄#5E6144主按钮底、焦点环 · 5.95
      • 深橄榄#4A4D35链接、规格数字、巨字「小屋」 · 8.09
      • 橄榄浅#E1E0CE药丸标签底;hover面也用它,不能是橙
      • 色块#D5D4C1只有两处:门厅色块、随笔头像
      • 雅灰#EDEAE3只给地毯(写作框是未渲染的设计规格)
      • 线#E4E0D6顶栏描边、卡片边框
      • 熔岩橙#AA4E1D只给随笔日期;不做按钮、强调、标签 · 5.09

      夜里 · 纸底#15171B(冷夜暖灯)

      • 纸底#15171B夜空炭,225色相
      • 卡面#1E1F25夜卡纸
      • 墨#E7E3DA暖奶油,灯照着的字 · 14.01
      • 正文墨#DDD9D0正文、说明 · 12.74
      • 次级字#B1ABA0次级说明 · 7.86
      • 辅助小字#9F9A8E小字 · 6.40(夜卡纸5.86)
      • 黄铜灯色#CDBF98橄榄的夜里:主按钮、焦点环 · 9.83
      • 灯下大字#E0D7BD深橄榄的夜里 · 12.50
      • 橄榄浅#2E3138药丸标签底
      • 色块#2A2E37青黛,和画里的夜空同族
      • 雅灰#25272D地毯
      • 线#353840描边、边框
      • 炉火橙#EB8947熔岩橙提亮一档,仍只给日期 · 7.01

      色值末尾的数字是对各自纸底的对比度。夜里那组按globals.css里的HSL实算(同文件的十六进制注释是近似值)。

      用起来顶栏当前项、随笔日记卡、药丸标签、主按钮「放进屋里」,白天夜里并排。签名头像在站上是一张小图,这里只画它的底色块。熔岩橙只出现在日期上;点顶栏换当前项,点主按钮复制它的底色,Tab进来看橄榄焦点环。

      白天

      Ysevan
      9月27日 · 星期日2026

      把颜色和交互收进一本合集,以后开新站先翻它。

      多云 · 在家
      离线可用

      夜里

      Ysevan
      9月27日 · 星期日2026

      把颜色和交互收进一本合集,以后开新站先翻它。

      多云 · 在家
      离线可用

      写法

      :root {                       /* token 写裸 H S% L%(shadcn 惯例) */
        --background: 42.9 33.3% 95.9%;   /* #F8F6F1 */
        --xw-lava: 21 71% 39%;            /* #AA4E1D */
      }
      .dark { --background: 225 12% 9.5%; /* #15171B */ }
      .x { color: hsl(var(--xw-lava)); }  /* CSS Module 里手写必须包 hsl(),否则整条声明无声失效 */

      为什么

      「名片为主」的暖屋:低饱和暖底读起来安静,饱和色一多就不是这间屋子了,所以每个饱和色只许出现在写明的位置。对比度不达标的五处(辅助小字、熔岩橙压地毯、输入框边框、hover面语义、缺正文墨槽位)都按实测只压明度修掉。

      坑

      凡是把--xw-*抄成页内副本的地方,白天夜里都要各抄一份,否则只有白天是对的——随笔卡底行小字入夜后曾掉到2.94。

      出处:Ysevan_web/docs/xiaowu-ui-spec.md「2.1 shadcn 标准槽位」、「2.2 小屋扩展槽位(--xw-*)」、「2.5 对比度实测与必须的微调」;Ysevan_web/app/globals.css「:root」、「.dark」;「用起来」那块照Ysevan_web/docs/xiaowu-ui-spec.md「5.3 站名与导航」(「当前项」)、「7.4 日记流」、「7.3 composer:完整交互规格(设计规格,当前未渲染)」(「放进屋里」)、「2.1 shadcn 标准槽位」(「药丸标签底」)、「2.5 对比度实测与必须的微调」(「offset 4px」)——当前项、日记卡、药丸标签、焦点环外扩4px;「放进屋里」是写作框的主按钮,写作框只是设计规格、站上没有渲染

      阴影用暖墨,不用纯黑;门厅卡片三根发丝线各司其职

      阴影色一律rgba(74,77,53,…),只有贴地、浮起两档,挂在墙上的画再沉一倍。发丝线1px不随卡片缩放。

      暖墨rgba(74,77,53,.22)
      挂画投影
      纯黑rgba(0,0,0,.22)
      压在暖纸上发灰
      浮起0 8px 20px -10px .11
      工具卡、弹层
      贴地0 1px 2px .05
      常态卡片
      1. 卡片外框1px solid rgba(74,77,53,.17)把整张卡片从纸底上立起来
      2. 接缝border-left: 1px solid rgba(74,77,53,.14)内部分界比外框浅一档
      3. 画纸边box-shadow: 0 0 0 1px rgba(74,77,53,.09)画纸白和卡纸白太近,不描就糊

      数值

      --shadow-rest: 0 1px 2px rgba(74,77,53,.05);          /* 贴地:常态卡片、列表项 */
      --shadow-lift: 0 8px 20px -10px rgba(74,77,53,.11);   /* 浮起:抬起来的卡片、弹层 */
      .hall__card   { box-shadow: 0 16px 34px -14px rgba(74,77,53,.22); } /* 挂画:比工具卡深一倍 */

      为什么

      纯黑阴影压在暖纸底上会发灰。两档之外不要第三档,hover也不换档。工具卡摆在地毯上,门厅卡片挂在墙上,所以挂画投影更沉;色块与画纸各自不加投影,否则接缝处叠出一道脏影。

      坑

      装饰性边框对比度只有1.24,不作3:1要求——但不要因此把线做得更淡。

      出处:Ysevan_web/docs/xiaowu-ui-spec.md「A.3 圆角、阴影、焦点环」、「4.6.2 数值」(「三根线,各司其职」「挂画投影在卡片上」)、「2.5 对比度实测与必须的微调」(「装饰性不达标,可接受」)

      夜里是同一间屋子:冷夜暖灯,不是反相

      底沉进画里夜空的青蓝炭(色相220–225),字、黄铜灯色、炉火橙全是暖的(42–45)。暖色要靠冷底才显得暖,全屋刷暖只会腻。

      用起来同一组小屋元素:门厅色块与巨字、随笔小卡、主按钮,白天和夜里并排。夜里底是冷的、字和灯是暖的,右上角一团极淡的灯晕(白天是暖雾)。关掉雾与灯晕,看它出了多少力。

      数值

      .dark {
        --background: 225 12% 9.5%;   /* #15171B 夜空炭 */
        --foreground: 42 22% 88%;     /* 暖奶油 */
        --primary:    44 34% 70%;     /* 黄铜灯色 */
        --xw-olive-block: 222 14% 19%;/* #2A2E37 青黛——和画里的夜空同族 */
        --xw-lava:    24 80% 60%;     /* 炉火橙 */
      }
      html.dark { color-scheme: dark; }  /* 滚动条、表单控件跟着入夜 */

      为什么

      夜不是把亮色反相,是「这间屋子晚上长什么样」。夜橄榄(深绿一暗就泥)和琥珀棕(全屋刷暖发腻)两版都被否,第三版把底换成冷的,暖字才显得出暖。切换用顶栏的「墙壁开关」,整页交叉淡化。

      现状

      规格原则「两个时辰,一间屋子」和globals.css的文件头、.dark注释都已改成冷夜暖灯(225的冷底、40–45的暖字),文档与代码对得上(2026-10-08核)。此前它们写的「色相家族不变,纸压成松烟暖炭」是第一、二版的旧说法。

      出处:Ysevan_web/app/globals.css「冷夜暖灯」、「.dark」(文件头注释与夜里那一块);Ysevan_web/docs/xiaowu-ui-spec.md「1.2 六条原则」(「两个时辰,一间屋子」)

      夜里画与装饰只暗一档,不往蓝里偏

      静态绿植夜里整体收一档:filter: brightness(.78) saturate(.85),四处同一条,不逐叶改色。别用hue-rotate推冷。

      白天
      夜里 · brightness(.78) saturate(.85)
      错误:hue-rotate推冷,叶子发蓝、红果变色

      同一小枝示意(叶色取小屋装饰色)。中间是定下的做法,右边是被否的方向。

      代码

      :global(.dark) .deco { filter: brightness(0.78) saturate(0.85); }   /* 四处绿植同一条 */
      .poster { filter: brightness(0.66) saturate(0.8); }                 /* 工具页静态海报:更暗一档,同样不偏冷 */

      为什么

      brightness等比缩三个通道、色相不动,saturate只收一点彩度:暗一档、仍然是绿的、墨线留着。hue-rotate会把红勾和丝带一起转成青色。漂浮叶子第一版整体偏冷,屋主说叶子几乎看不见、晴天娃娃变成蓝灰,被否。

      出处:Ysevan_web/docs/xiaowu-ui-spec.md「9.6 夜里」、「6.9.4 静态版」(「不偏冷」);Ysevan_web/app/hall.module.css「:global(.dark) .deco」

      工具身份色只落在小面积:序号、图标块、「打开」、焦点环

      工具架上每个工具各有一支身份色(现在六支:2026-09-27加了travel的林绿,2026-09-28加了设计合集的梅紫、暂定),写成组件内常量,不进全局色板。夜里色值一个不改,改的是下面那张纸。

      白天

      01日程安排#2563EB · 4.79
      02刷刷#B4232C · 6.04
      03岗岗#8F1D2C · 8.17
      04card#10666E · 6.18
      05travel#296B38 · 5.97
      06设计合集#702682 · 8.50 · 暂定

      夜里 · 图标块与「打开」垫回白天那张纸

      01日程安排页底3.47 → 纸4.79
      02刷刷2.75 → 6.04
      03岗岗2.03 → 8.17
      04card2.69 → 6.18
      05travel2.78 → 5.97
      06设计合集1.96 → 8.50

      白天岗岗那张的「打开」上画着焦点环的样子(2px身份色、外扩3px)。夜里序号不垫纸、换成夜里的次级墨(7.86)。「打开」点一下复制身份色。

      对照同一张刷刷卡:左边身份色只落在序号、图标块、「打开」、焦点环;右边是反例(示意)——身份色铺到边框、底色、标题、正文上,暖屋一下就花了。

      现行小面积

      02刷刷

      离线刷题,错题自动收进错题本。

      反例铺大面积(示意)

      02刷刷

      离线刷题,错题自动收进错题本。

      数值

      01 · 日程安排   --brand: #2563EB  --brandsoft: rgba(37,99,235,.11)   纸底4.79
      02 · 刷刷       --brand: #B4232C  --brandsoft: rgba(180,35,44,.10)   纸底6.04
      03 · 岗岗       --brand: #8F1D2C  --brandsoft: rgba(143,29,44,.18)   纸底8.17(工具架变体;岗岗站内 #A62031)
      04 · card       --brand: #10666E  --brandsoft: rgba(16,102,110,.12)  纸底6.18(汐青)
      05 · travel     --brand: #296B38  --brandsoft: rgba(41,107,56,.12)   纸底5.97(林绿)
      06 · 设计合集   --brand: #702682  --brandsoft: rgba(112,38,130,.11)  纸底8.50(梅紫,暂定)
      :global(.dark) .icon, :global(.dark) .open { background: hsl(42.9 33.3% 95.9%); }  /* --tool-paper:白天那张纸 */

      为什么

      家族感靠中性系统统一,身份靠品牌色区分;身份色一旦铺大面积,暖屋就花了。不得用于卡片边框、底色、标题、正文、状态条、hover面、分隔线。夜里页底上身份色只有1.96–3.47,换纸之后回到白天的数——观感像暗屋里几块点着灯的小牌子。

      新增一支

      1. 和已有几支色相拉开(221°、355°、350°之外,汐青取185°);
      2. 和这个工具自己的作品色系读得到一起(card十三张卡里冷色占多数);
      3. 够深,能当纸上的字(card卡面的#8ACBE8压暖纸只有1.65,只能当装饰)。

      坑

      夜里「打开」的hover那层淡品牌色要叠在纸上:.open:hover写的是background简写,夜里会把整张纸换掉、当场掉回2.75,要另写一条只改background-image。

      出处:Ysevan_web/docs/xiaowu-ui-spec.md「2.3 工具身份色(六个 brand,不进 token)」(「小面积原则」「夜里的纸片规则」「四处落点」);Ysevan_web/app/projects/tools.module.css「夜里的身份色:换纸,不换色」(那一段的注释与规则)

      装饰色留字面量,不进色板

      绿植与门厅卡片的十来个颜色都是aria-hidden的纯装饰,只把浅叶、中叶两支提成变量,其余写在SVG里。

      用起来照小屋盆栽的四层叠法画的一小株(示意,不是原图):水洗底、后层浅叶加冷调叶影、前层中叶加二道水、雅灰陶盆。鼠标停在上面的色块上(或Tab到它),用到这个色的部件留下、其余淡出;夜里整株只暗一档。

      白天 · 卡纸白#FFFDFA上
      夜里 · brightness(.78) saturate(.85)

      为什么

      装饰SVG是自洽的图形单元,十来个只出现一次的色值全提成全局token只会污染色板。同理,定义了却没用上的--board #B8B69E不落地——不上线未使用的token。海湾蓝在全站只剩一个去处:绿植里半透明的冷调叶影。

      对比度

      这些都是纯装饰,不适用3:1/4.5:1;浅叶压纸底只有1.88,就是「很淡」的设计意图。

      出处:Ysevan_web/docs/xiaowu-ui-spec.md「2.6 装饰与插画专用色」(「落地方式」)、「2.2 小屋扩展槽位(--xw-*)」(「不需要落地的」);盆栽示意的四层叠法照Ysevan_web/docs/xiaowu-ui-spec.md「9.4 SVG 内部结构(defs + use 复用)」