BUG-737:--font-display 以两个从未加载的 Anthropic 授权字体开头 (Tiempos Headline / StyreneB:无 @font-face、public/ 无字体、layout.tsx 只 vendor 了 Inter),于是每个中文标题都掉到 Songti SC / SimSun——20 条 规则宽,含助手回答正文的 h2/h3。display 与 body 合并为同一条无衬线栈, 层级改由字重承担(33 条 display 规则 400→500)。 拉丁衬线方案实测否决:Newsreader 拉丁子集 132 KB(Inter 的 2.7 倍), 只为给一个品牌字上衬线,且会把「D10 事业盘怎么读」劈成两种字形。 BUG-738:亮色 #85432f 与暗色 #d78064 不同源;--color-ring 在 @theme inline 里硬编码不跟随 :root。产品拍板换 Claude coral #cc785c, 但实测它作文字色只有 3.14:1,而 62 个调用点里 53 个是 color:。 按角色拆两阶:--color-action #a9583e(文字 4.85:1)、 --color-action-strong #cc785c(填充/导轨/焦点环,3:1 非文字阈值)。 --report-accent 刻意保持 #85432f(报告是纸面,不跟应用强调色)。 T1.3/T1.4:模型选择器进 ChatComposer 的 toolbar 插槽,删掉常驻 44px 的 .composer-footer;顶栏 68→46px,「分析对象:」改为标题旁静默 chip。 防复发:新增 font-stack-loadable-contract,断言字体栈里每个 family 要么 vendored 要么是系统字体,且 --font-display 不得触达任何 CJK 衬线。 测试 3346→3350,fail 仍 31 且清单与基线逐条一致;/ 仍 Static; CSS gzip 41,095→41,096(+0.002%);快速门 pytest 段 798 passed / 0 failed。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
45 lines
2.7 KiB
CSS
45 lines
2.7 KiB
CSS
:root {
|
|
--font-body: var(--font-inter, Inter), system-ui, sans-serif;
|
|
--font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
|
|
}
|
|
html, body {
|
|
width: 100%;
|
|
min-height: 100%;
|
|
margin: 0;
|
|
}
|
|
.admin-app-shell {
|
|
min-height: 100dvh;
|
|
background: #f3f2ee;
|
|
color: #1d1d1f;
|
|
font-family: var(--font-body);
|
|
}
|
|
.admin-app-shell .ant-layout { background: #f3f2ee; }
|
|
.admin-app-shell .ant-layout-sider { border-right: 1px solid #d8d6cf; box-shadow: none !important; }
|
|
.admin-app-shell .ant-layout-header { border-bottom: 1px solid #d8d6cf; box-shadow: none !important; }
|
|
.admin-app-shell .ant-layout-content { padding: 22px; }
|
|
.admin-app-shell .ant-menu { border-inline-end: 0 !important; background: transparent !important; }
|
|
.admin-app-shell .ant-menu-item, .admin-app-shell .ant-menu-submenu-title { margin-inline: 8px; width: calc(100% - 16px); }
|
|
.admin-app-shell .ant-card { border-color: #d8d6cf; box-shadow: none !important; }
|
|
.admin-app-shell .ant-card-head { border-bottom-color: #d8d6cf; }
|
|
.admin-app-shell .ant-card .ant-card { border-radius: 0; }
|
|
.admin-app-shell .ant-card .ant-card:not(:last-child) { border-bottom: 0; }
|
|
.admin-app-shell .ant-list-bordered { border-color: #d8d6cf; border-radius: 6px; }
|
|
.admin-app-shell .ant-table-wrapper .ant-table { background: #fbfaf7; }
|
|
.admin-app-shell .ant-table-wrapper .ant-table-container { border-radius: 6px; }
|
|
.admin-app-shell .ant-table-wrapper .ant-table-thead > tr > th { font-size: 12px; font-weight: 650; }
|
|
.admin-app-shell .ant-table-wrapper .ant-table-cell { line-height: 1.45; }
|
|
.admin-app-shell .ant-tag { margin-inline-end: 4px; border-radius: 4px; font-weight: 550; }
|
|
.admin-app-shell .ant-alert { border-radius: 6px; box-shadow: none; }
|
|
.admin-app-shell .ant-statistic-title { color: #5f5f59; font-size: 12px; }
|
|
.admin-app-shell .ant-statistic-content { font-size: 22px; font-weight: 650; }
|
|
.admin-app-shell .ant-typography h1, .admin-app-shell h1.ant-typography { font-family: var(--font-body); font-size: 26px; font-weight: 680; letter-spacing: -.025em; }
|
|
.admin-app-shell .ant-typography h2, .admin-app-shell h2.ant-typography { font-family: var(--font-body); font-size: 21px; font-weight: 650; letter-spacing: -.015em; }
|
|
.admin-app-shell .ant-typography h3, .admin-app-shell h3.ant-typography { font-family: var(--font-body); font-size: 17px; font-weight: 650; }
|
|
.admin-app-shell code { font-family: var(--font-mono); }
|
|
.admin-text-list { max-width: 680px; color: #5f5f59; line-height: 1.65; white-space: normal; overflow-wrap: anywhere; }
|
|
.admin-loading { min-height: 100dvh; display: grid; place-content: center; justify-items: center; gap: 12px; background: #f3f2ee; color: #5f5f59; }
|
|
|
|
@media (max-width: 767px) {
|
|
.admin-app-shell .ant-layout-content { padding: 14px; }
|
|
}
|