@bytechain.cn/colamd-themes 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/.claude/skills/colamd-themes-preview.skill.md +333 -0
  2. package/.claude/skills/colamd-themes.skill.md +10 -0
  3. package/.dsh/skills/colamd-themes/SKILL.md +14 -0
  4. package/.github/supported-topics.yml +17 -0
  5. package/.hermes/skills/tools/colamd-themes/SKILL.md +14 -0
  6. package/.openclaw/skills/colamd-themes/SKILL.md +1 -146
  7. package/.opencode/skills/colamd-themes/SKILL.md +17 -0
  8. package/.trae/rules/colamd-themes.md +0 -145
  9. package/CHANGELOG.md +318 -240
  10. package/DSH_SUPPORT_SUMMARY.md +87 -0
  11. package/README.md +414 -384
  12. package/README_CN.md +412 -384
  13. package/RELEASENOTE.md +541 -365
  14. package/bytechain.cn-colamd-themes-0.5.0.tgz +0 -0
  15. package/dist/cli.js +272 -32
  16. package/dist/cli.js.map +1 -1
  17. package/dist/color-utils.d.ts +1 -0
  18. package/dist/color-utils.js +25 -6
  19. package/dist/color-utils.js.map +1 -1
  20. package/dist/extractors/pdf-extractor.js +6 -1
  21. package/dist/extractors/pdf-extractor.js.map +1 -1
  22. package/dist/extractors/url-extractor.d.ts +0 -4
  23. package/dist/extractors/url-extractor.js +13 -126
  24. package/dist/extractors/url-extractor.js.map +1 -1
  25. package/dist/generator.d.ts +1 -1
  26. package/dist/generator.js +32 -11
  27. package/dist/generator.js.map +1 -1
  28. package/dist/models.d.ts +5 -4
  29. package/dist/models.js +2 -3
  30. package/dist/models.js.map +1 -1
  31. package/dist/renderer.d.ts +4 -2
  32. package/dist/renderer.js +68 -25
  33. package/dist/renderer.js.map +1 -1
  34. package/dist/templates/template.css +220 -498
  35. package/dist/templates/theme-paradigm.md +530 -658
  36. package/dist/templates/theme-template.hbs +256 -370
  37. package/dist/theme-store.js +19 -3
  38. package/dist/theme-store.js.map +1 -1
  39. package/dist/utils/document-paradigm.d.ts +12 -0
  40. package/dist/utils/document-paradigm.js +109 -0
  41. package/dist/utils/document-paradigm.js.map +1 -0
  42. package/dist/validators.d.ts +4 -1
  43. package/dist/validators.js +115 -1
  44. package/dist/validators.js.map +1 -1
  45. package/mcp-server/dist/index.d.ts +13 -0
  46. package/mcp-server/dist/index.d.ts.map +1 -0
  47. package/mcp-server/dist/index.js +0 -0
  48. package/mcp-server/dist/index.js.map +1 -0
  49. package/mcp-server/package-lock.json +1759 -0
  50. package/mcp-server/package.json +24 -0
  51. package/mcp-server/src/index.ts +0 -0
  52. package/mcp-server/tsconfig.json +19 -0
  53. package/package.json +54 -36
  54. package/skills/build-skills.sh +30 -5
  55. package/skills/colamd-themes/SKILL.md +180 -148
  56. package/src/cli.ts +474 -217
  57. package/src/color-systems.ts +289 -289
  58. package/src/color-utils.ts +137 -120
  59. package/src/contrast.ts +66 -66
  60. package/src/docx-style-paradigm.ts +811 -811
  61. package/src/export-cli.ts +356 -356
  62. package/src/extractors/base.ts +8 -8
  63. package/src/extractors/docx-extractor.ts +417 -417
  64. package/src/extractors/pdf-extractor.ts +533 -527
  65. package/src/extractors/url-extractor.ts +846 -981
  66. package/src/generator.ts +197 -169
  67. package/src/index.ts +29 -29
  68. package/src/models.ts +212 -212
  69. package/src/renderer.ts +332 -288
  70. package/src/templates/template.css +220 -498
  71. package/src/templates/theme-paradigm.md +530 -658
  72. package/src/templates/theme-template.hbs +256 -370
  73. package/src/theme-store.ts +185 -170
  74. package/src/types/pdf-parse.d.ts +12 -12
  75. package/src/utils/cli-utils.ts +84 -84
  76. package/src/utils/document-paradigm.ts +118 -0
  77. package/src/validators.ts +298 -176
  78. package/themes/academic-paper-pt.css +353 -1805
  79. package/themes/academic-paper.css +350 -1099
  80. package/themes/academic-style.css +342 -2430
  81. package/themes/colly.css +256 -370
  82. package/themes/elegant.css +288 -671
  83. package/themes/forest-ink.css +240 -664
  84. package/themes/guizang.css +250 -732
  85. package/themes/hermes-security.css +279 -0
  86. package/themes/meeting-minutes.css +256 -370
  87. package/themes/pixso-design.css +278 -1261
  88. package/themes/salvator-blog.css +256 -370
  89. package/themes/shimo-theme.css +256 -0
  90. package/themes/swiss-design.css +285 -746
  91. package/themes/template.css +220 -498
  92. package/themes/trae-blue.css +280 -737
  93. package/themes/word-contract.css +249 -0
  94. package/themes-preview/demo-content.md +187 -187
  95. package/tsconfig.json +18 -18
  96. package/src/mermaid-presets.ts +0 -142
  97. package/themes/swiss-design copy.css +0 -746
  98. package/themes-preview/colly-preview.html +0 -623
  99. package/themes-preview/meeting-minutes-preview.html +0 -625
  100. package/themes-preview/salvator-blog-preview.html +0 -623
@@ -1,1805 +1,353 @@
1
- /*
2
- * ColaMD 主题:Academic Paper (学术论文打印)
3
- * 版本:v3.0(遵循 theme-paradigm.md 范式)
4
- *
5
- * 风格特征:
6
- * - 纯白底 + 纯黑正文 + 灰度 Mermaid 图表
7
- * - 遵循中文学术论文排版规范(GB/T 7713)
8
- * - 宋体正文 + 黑体标题,首行缩进 2em
9
- * - 三线表规范,无彩色设计,印刷友好
10
- *
11
- * 字体系统:
12
- * - 正文:宋体 (SimSun) 小四号 16px / 12pt
13
- * - 标题:黑体 (SimHei) 三号~五号 22px~14px / 16pt~10.5pt
14
- * - 代码:Courier New 五号 14px / 10.5pt
15
- * - Mermaid:黑体 小五号 12px / 9pt
16
- *
17
- * 单位规范:
18
- * - 屏幕样式:px 单位(偶数整数原则)
19
- * - 打印样式:pt 单位(物理精确,1pt = 1/72 inch)
20
- * - 转换公式:pt = px × 0.75
21
- *
22
- * 导入:Theme > Import Theme
23
- */
24
-
25
- /* ═══════════════════════════════════════════════════════════════
26
- SECTION 1 — 设计令牌 (Design Tokens)
27
- ═══════════════════════════════════════════════════════════════ */
28
-
29
- body.theme-custom {
30
-
31
- /* ═══════════════════════════════════════════════════════════════
32
- 1.1 种子色板 — 10 级灰度(GB/T 7713 学术论文规范)
33
- ═══════════════════════════════════════════════════════════════ */
34
-
35
- /* 表面色:纯白体系 — 学术论文以留白为核心 */
36
- --seed-surface: #ffffff;
37
- /* L0 页面背景(纯白) */
38
- --seed-panel: #f5f5f5;
39
- /* L1 代码/区块背景(浅灰) */
40
- --seed-panel-alt: #fafafa;
41
- /* L2 次要表面(极浅灰) */
42
-
43
- /* 文字色:黑白灰三阶 — 高对比度,符合 WCAG AAA */
44
- --seed-ink: #000000;
45
- /* T0 正文/标题(纯黑) */
46
- --seed-ink-muted: #333333;
47
- /* T1 次要文字 */
48
- --seed-ink-dim: #666666;
49
- /* T2 弱化/禁用文字 */
50
-
51
- /* 边框色:学术论文三线表规范 */
52
- --seed-border: #000000;
53
- /* 强调边框 = 纯黑 */
54
- --seed-border-light: #cccccc;
55
- /* 浅边框/分割线 */
56
-
57
- /* ═══════════════════════════════════════════════════════════════
58
- 1.2 字体系统 — GB/T 7713 学术论文规范
59
- ═══════════════════════════════════════════════════════════════ */
60
-
61
- /* 正文字体栈:宋体 → 宋体 SC → 思源宋体 */
62
- --font-body: "SimSun", "Songti SC", "Source Han Serif SC", "Noto Serif SC",
63
- Georgia, "Times New Roman", serif;
64
-
65
- /* 标题字体栈:黑体 → 黑体 SC → 思源黑体 */
66
- --font-heading: "SimHei", "Heiti SC", "Source Han Sans SC", "Noto Sans SC",
67
- "Microsoft YaHei", "Arial", sans-serif;
68
-
69
- /* 等宽字体栈 */
70
- --font-code: "Courier New", "Consolas", "Source Code Pro", monospace;
71
-
72
- /* Mermaid 图表字体:黑体(与标题一致) */
73
- --font-mermaid: var(--font-heading);
74
-
75
- /* ═══════════════════════════════════════════════════════════════
76
- 1.3 字号 & 间距 — 屏幕 px 单位
77
- ═══════════════════════════════════════════════════════════════ */
78
-
79
- --font-size-root: 16px;
80
-
81
- /* 标题倍率 — GB/T 7713 中文字号标准 */
82
- --font-scale-h1: 1.375;
83
- /* 22px — 三号(论文题目) */
84
- --font-scale-h2: 1.125;
85
- /* 18px — 四号(一级节) */
86
- --font-scale-h3: 1.0;
87
- /* 16px — 小四号(二级节) */
88
- --font-scale-h4: 1.0;
89
- /* 16px — 小四号(三级节) */
90
- --font-scale-h5: 0.875;
91
- /* 14px — 五号 */
92
- --font-scale-h6: 0.875;
93
- /* 14px — 五号 */
94
-
95
- /* Mermaid 独立字号:小五号 12px */
96
- --font-size-mermaid: 12px;
97
-
98
- /* 行高 — 学术论文规范 */
99
- --line-height-body: 1.5;
100
- --line-height-heading: 1.35;
101
- --line-height-code: 1.5;
102
-
103
- /* ═══════════════════════════════════════════════════════════════
104
- 1.4 圆角 & 间距 — 学术论文:直角优先
105
- ═══════════════════════════════════════════════════════════════ */
106
-
107
- --radius-sm: 0px;
108
- --radius-md: 0px;
109
- --radius-lg: 0px;
110
- --content-width: 210mm;
111
-
112
- /* 页边距(GB/T 7713) */
113
- --page-margin-top: 25mm;
114
- --page-margin-bottom: 25mm;
115
- --page-margin-left: 30mm;
116
- --page-margin-right: 25mm;
117
-
118
- /* ═══════════════════════════════════════════════════════════════
119
- 1.5 灰度色板 — 10 级亮度感知
120
- ═══════════════════════════════════════════════════════════════ */
121
-
122
- --gray-0: #ffffff;
123
- /* 纯白 - 页面背景 */
124
- --gray-1: #fafafa;
125
- /* 极浅灰 - 次要表面 */
126
- --gray-2: #f5f5f5;
127
- /* 浅灰 - 代码/区块背景 */
128
- --gray-3: #eeeeee;
129
- /* 中浅灰 - 表头底色 */
130
- --gray-4: #e0e0e0;
131
- /* 浅中灰 - 高亮标记 */
132
- --gray-5: #cccccc;
133
- /* 中灰 - 边框/分割线 */
134
- --gray-6: #999999;
135
- /* 中深灰 - 次要文字 */
136
- --gray-7: #666666;
137
- /* 深灰 - 弱化文字 */
138
- --gray-8: #333333;
139
- /* 近黑 - 强调边框 */
140
- --gray-9: #000000;
141
- /* 纯黑 - 正文/标题 */
142
- }
143
-
144
- /* ═══════════════════════════════════════════════════════════════
145
- SECTION 2 — 语义映射 (Semantic Mapping)
146
- ═══════════════════════════════════════════════════════════════ */
147
-
148
- body.theme-custom {
149
-
150
- /* ── 2.1 编辑区表面色 ── */
151
- --bg-color: var(--seed-surface);
152
- --surface-color: var(--seed-panel);
153
- --surface-alt: var(--seed-panel-alt);
154
-
155
- /* ── 2.2 编辑区文字色 ── */
156
- --text-color: var(--seed-ink);
157
- --heading-color: var(--seed-ink);
158
- --text-muted: var(--seed-ink-muted);
159
- --text-dim: var(--seed-ink-dim);
160
-
161
- /* ── 2.3 链接 & 强调 ── */
162
- --link-color: var(--seed-ink);
163
- --accent-color: var(--seed-ink);
164
- --accent-dark: var(--seed-ink);
165
- --accent-light: var(--gray-4);
166
- --selection-bg: rgba(0, 0, 0, 0.12);
167
-
168
- /* ── 2.4 边框 & 分割线 ── */
169
- --border-color: var(--seed-border);
170
- --blockquote-border: var(--seed-ink);
171
- --hr-color: var(--seed-ink);
172
-
173
- /* ── 2.5 内联代码 ── */
174
- --code-bg: var(--gray-3);
175
- --code-color: var(--seed-ink);
176
-
177
- /* ── 2.6 代码块 ── */
178
- --code-block-bg: var(--seed-panel);
179
- --code-block-text: var(--seed-ink);
180
- --code-block-color: var(--seed-ink);
181
-
182
- /* ── 2.7 引用块 ── */
183
- --blockquote-bg: var(--seed-panel-alt);
184
-
185
- /* ── 2.8 表格 — 三线表规范 ── */
186
- --table-header-bg: transparent;
187
- --table-border: var(--seed-ink);
188
-
189
- /* ── 2.9 表格 — 表头文字 ── */
190
- --table-header-text: var(--seed-ink);
191
-
192
- /* ── 2.10 滚动条 ── */
193
- --scrollbar-thumb: var(--gray-5);
194
- --scrollbar-thumb-hover: var(--gray-6);
195
- }
196
-
197
- /* ═══════════════════════════════════════════════════════════════
198
- SECTION 3 — Mermaid 图表变量
199
- 学术论文图表:白底黑框灰度,印刷友好
200
- ═══════════════════════════════════════════════════════════════ */
201
-
202
- body.theme-custom {
203
-
204
- /* ── 3.1 容器 ── */
205
- --mermaid-background: var(--seed-surface);
206
- --mermaid-border-color: var(--gray-5);
207
- --mermaid-border-radius: var(--radius-md);
208
- --mermaid-padding: 20px;
209
-
210
- /* ── 3.2 字体 ── */
211
- --mermaid-font-family: var(--font-mermaid);
212
- --mermaid-font-size: var(--font-size-mermaid);
213
-
214
- /* ── 3.3 节点 — 浅灰填色 + 深灰边框 ── */
215
- --mermaid-node-fill: var(--gray-3);
216
- --mermaid-node-bkg: var(--gray-2);
217
- --mermaid-node-stroke: var(--gray-8);
218
- --mermaid-node-stroke-width: 1px;
219
- --mermaid-node-text: var(--seed-ink);
220
-
221
- /* ── 3.4 连线 ── */
222
- --mermaid-edge-stroke: var(--gray-8);
223
- --mermaid-edge-stroke-width: 1px;
224
-
225
- /* ── 3.5 聚类 ── */
226
- --mermaid-cluster-fill: var(--gray-1);
227
- --mermaid-cluster-stroke: var(--gray-7);
228
-
229
- /* ── 3.6 标签 ── */
230
- --mermaid-label-text: var(--seed-ink);
231
- --mermaid-edge-label-text: var(--seed-ink);
232
- --mermaid-edge-label-bg: var(--seed-surface);
233
-
234
- /* ── 3.7 标题 & 坐标轴 ── */
235
- --mermaid-title-text: var(--seed-ink);
236
- --mermaid-axis-text: var(--gray-7);
237
- --mermaid-highlight: var(--gray-8);
238
-
239
- /* ── 3.8 人物节点 ── */
240
- --mermaid-person-stroke: var(--gray-8);
241
- --mermaid-person-bkg: var(--gray-2);
242
-
243
- /* ── 3.9 偏移 ── */
244
- --mermaid-label-offset-y: 0px;
245
-
246
- /* ── 3.10 莫兰迪灰色阶色板(多系列区分) ── */
247
- --mermaid-cscale0: var(--gray-6);
248
- --mermaid-cscale1: var(--gray-7);
249
- --mermaid-cscale2: var(--gray-6);
250
- --mermaid-cscale3: var(--gray-8);
251
- --mermaid-cscale4: var(--gray-6);
252
- --mermaid-cscale5: var(--gray-7);
253
- --mermaid-cscale6: var(--gray-8);
254
- --mermaid-cscale7: var(--gray-6);
255
- --mermaid-cscale8: var(--gray-7);
256
- --mermaid-cscale9: var(--gray-6);
257
- --mermaid-cscale10: var(--gray-8);
258
- --mermaid-cscale11: var(--gray-7);
259
- }
260
-
261
- /* ═══════════════════════════════════════════════════════════════
262
- SECTION 4 — 排版微调变量
263
- ═══════════════════════════════════════════════════════════════ */
264
-
265
- body.theme-custom {
266
- --line-height-base: var(--line-height-body);
267
- }
268
-
269
- /* ═══════════════════════════════════════════════════════════════
270
- SECTION 5 — 选择器级微调 (Selector Fine-Tuning)
271
- ═══════════════════════════════════════════════════════════════ */
272
-
273
- /* ── 5.1 全局:纯白底 + 宋体 + 两端对齐 ── */
274
- html {
275
- font-size: var(--font-size-root);
276
- -webkit-font-smoothing: antialiased;
277
- }
278
-
279
- body.theme-custom,
280
- html,
281
- body {
282
- background-color: var(--bg-color);
283
- color: var(--text-color);
284
- font-family: var(--font-body);
285
- line-height: var(--line-height-body);
286
- text-align: justify;
287
- }
288
-
289
- body.theme-custom {
290
- -webkit-font-smoothing: antialiased;
291
- }
292
-
293
- /* ── 5.2 编辑区 — A4 页面尺寸 ── */
294
- body.theme-custom #editor {
295
- max-width: var(--content-width);
296
- margin: 0 auto;
297
- padding: var(--page-margin-top) var(--page-margin-right) var(--page-margin-bottom) var(--page-margin-left);
298
- }
299
-
300
- #write {
301
- max-width: var(--content-width);
302
- margin: 0 auto;
303
- padding: 0;
304
- }
305
-
306
- #write>ul:first-child,
307
- #write>ol:first-child {
308
- margin-top: 30px;
309
- }
310
-
311
- /* ── 5.3 标题:黑体,GB/T 7713 字号规范 ── */
312
- body.theme-custom h1,
313
- body.theme-custom h2,
314
- body.theme-custom h3,
315
- body.theme-custom h4,
316
- body.theme-custom h5,
317
- body.theme-custom h6 {
318
- font-family: var(--font-heading);
319
- color: var(--heading-color);
320
- font-weight: 700;
321
- line-height: var(--line-height-heading);
322
- text-indent: 0;
323
- }
324
-
325
- /* h1: 三号 22px,居中 */
326
- body.theme-custom h1 {
327
- font-size: calc(var(--font-size-root) * var(--font-scale-h1));
328
- text-align: center;
329
- margin-top: 32px;
330
- margin-bottom: 24px;
331
- }
332
-
333
- /* h2: 四号 18px,左对齐 */
334
- body.theme-custom h2 {
335
- font-size: calc(var(--font-size-root) * var(--font-scale-h2));
336
- margin-top: 26px;
337
- margin-bottom: 14px;
338
- }
339
-
340
- /* h3/h4: 小四号 16px */
341
- body.theme-custom h3 {
342
- font-size: calc(var(--font-size-root) * var(--font-scale-h3));
343
- margin-top: 18px;
344
- margin-bottom: 10px;
345
- }
346
-
347
- body.theme-custom h4 {
348
- font-size: calc(var(--font-size-root) * var(--font-scale-h4));
349
- margin-top: 18px;
350
- margin-bottom: 8px;
351
- }
352
-
353
- /* h5/h6: 五号 14px */
354
- body.theme-custom h5 {
355
- font-size: calc(var(--font-size-root) * var(--font-scale-h5));
356
- margin-top: 16px;
357
- margin-bottom: 6px;
358
- }
359
-
360
- body.theme-custom h6 {
361
- font-size: calc(var(--font-size-root) * var(--font-scale-h6));
362
- color: var(--text-color);
363
- margin-top: 14px;
364
- margin-bottom: 6px;
365
- }
366
-
367
- h1:hover a.anchor,
368
- h2:hover a.anchor,
369
- h3:hover a.anchor,
370
- h4:hover a.anchor,
371
- h5:hover a.anchor,
372
- h6:hover a.anchor {
373
- text-decoration: none;
374
- }
375
-
376
- /* ── 5.4 正文:宋体,首行缩进 2em ── */
377
- body.theme-custom p,
378
- body.theme-custom #write>p {
379
- margin: 0;
380
- line-height: var(--line-height-body);
381
- text-align: justify;
382
- text-indent: 2em;
383
- font-size: var(--font-size-root);
384
- }
385
-
386
- body.theme-custom p+p {
387
- margin-top: 0;
388
- }
389
-
390
- /* ── 5.5 内联强调 ── */
391
- body.theme-custom strong {
392
- color: var(--seed-accent-dark) !important;
393
- font-weight: 700 !important;
394
- font-style: block !important;
395
- -webkit-print-color-adjust: exact !important;
396
- print-color-adjust: exact !important;
397
- }
398
-
399
- body.theme-custom em {
400
- font-style: italic;
401
- color: var(--seed-ink);
402
- }
403
-
404
- body.theme-custom em strong,
405
- body.theme-custom strong em {
406
- color: var(--seed-ink);
407
- font-weight: 700;
408
- }
409
-
410
- /* ── 5.6 链接:黑 + 底部横线 ── */
411
- body.theme-custom a {
412
- color: var(--link-color);
413
- text-decoration: none;
414
- border-bottom: 1px solid var(--link-color);
415
- }
416
-
417
- body.theme-custom a:hover {
418
- text-decoration: none;
419
- }
420
-
421
- /* ── 5.7 其他内联元素 ── */
422
- body.theme-custom u {
423
- text-decoration: none;
424
- border-bottom: 1px solid var(--seed-ink);
425
- padding-bottom: 1px;
426
- }
427
-
428
- body.theme-custom mark {
429
- background: var(--gray-4);
430
- color: var(--seed-ink);
431
- padding: 1px 4px;
432
- border-radius: 0;
433
- }
434
-
435
- body.theme-custom del,
436
- body.theme-custom s {
437
- color: var(--gray-7);
438
- }
439
-
440
- /* ── 5.8 引用块 — 黑线左侧 ── */
441
- body.theme-custom blockquote {
442
- margin: 10px 0;
443
- padding: 10px 16px 10px 20px;
444
- border-left: 3px solid var(--blockquote-border);
445
- background: var(--blockquote-bg);
446
- color: var(--seed-ink);
447
- font-family: var(--font-body);
448
- font-size: 14px;
449
- }
450
-
451
- body.theme-custom blockquote p {
452
- margin: 4px 0;
453
- text-indent: 0;
454
- }
455
-
456
- /* ── 5.9 分割线 ── */
457
- body.theme-custom hr {
458
- border: none;
459
- border-top: 1px solid var(--hr-color);
460
- margin: 32px 0;
461
- height: 0;
462
- }
463
-
464
- /* ── 5.10 列表 — GB/T 7713 学术论文规范 ── */
465
-
466
- /* 列表重置 */
467
- body.theme-custom ul,
468
- body.theme-custom ol,
469
- body.theme-custom li {
470
- margin: 0;
471
- padding: 0;
472
- }
473
-
474
- /* 列表容器 */
475
- body.theme-custom #editor .ProseMirror>ul,
476
- body.theme-custom #editor .ProseMirror>ol,
477
- body.theme-custom #write>ul:first-of-type,
478
- body.theme-custom #write>ol:first-of-type {
479
- margin: 6px 0 6px 2em;
480
- padding-left: 1.5em;
481
- list-style: none;
482
- counter-reset: ol-lv1 ul-lv1;
483
- }
484
-
485
- body.theme-custom ul ul,
486
- body.theme-custom ul ol,
487
- body.theme-custom ol ul,
488
- body.theme-custom ol ol {
489
- margin: 0;
490
- padding-left: 1.5em;
491
- list-style: none;
492
- }
493
-
494
- /* 列表项 */
495
- body.theme-custom li {
496
- line-height: 1.6;
497
- font-family: var(--font-body);
498
- font-size: var(--font-size-root);
499
- font-weight: normal;
500
- text-indent: 0;
501
- list-style: none;
502
- padding: 2px 0;
503
- }
504
-
505
- body.theme-custom li::before {
506
- content: "";
507
- display: inline;
508
- margin-right: 0.35em;
509
- }
510
-
511
- /* ProseMirror li > p 内联化 */
512
- body.theme-custom #editor .ProseMirror li>p {
513
- display: inline;
514
- margin: 0;
515
- padding: 0;
516
- text-indent: 0;
517
- font-size: inherit;
518
- font-weight: inherit;
519
- font-family: inherit;
520
- }
521
-
522
- body.theme-custom li strong {
523
- font-family: inherit;
524
- font-weight: 700;
525
- }
526
-
527
- /* 有序列表编号体系 */
528
- body.theme-custom ol>li {
529
- counter-increment: ol-lv1;
530
- }
531
-
532
- body.theme-custom ol>li::before {
533
- content: counter(ol-lv1) ".";
534
- font-family: var(--font-body);
535
- }
536
-
537
- body.theme-custom ol>li>ol {
538
- counter-reset: ol-lv2;
539
- }
540
-
541
- body.theme-custom ol>li>ol>li {
542
- counter-increment: ol-lv2;
543
- }
544
-
545
- body.theme-custom ol>li>ol>li::before {
546
- content: "(" counter(ol-lv2) ")";
547
- font-family: var(--font-body);
548
- }
549
-
550
- body.theme-custom ol>li>ol>li>ol {
551
- counter-reset: ol-lv3;
552
- }
553
-
554
- body.theme-custom ol>li>ol>li>ol>li {
555
- counter-increment: ol-lv3;
556
- }
557
-
558
- body.theme-custom ol>li>ol>li>ol>li::before {
559
- content: counter(ol-lv3, cjk-ideographic) "";
560
- font-family: var(--font-body);
561
- }
562
-
563
- body.theme-custom ol ol ol ol>li::before {
564
- content: counter(list-item, lower-roman) ".";
565
- font-family: var(--font-body);
566
- }
567
-
568
- /* 无序列表符号体系 */
569
- body.theme-custom ul>li {
570
- counter-increment: ul-lv1;
571
- }
572
-
573
- body.theme-custom ul>li::before {
574
- content: "\25A0\00A0";
575
- }
576
-
577
- body.theme-custom ul>li>ul {
578
- counter-reset: ul-lv2;
579
- }
580
-
581
- body.theme-custom ul>li>ul>li {
582
- counter-increment: ul-lv2;
583
- }
584
-
585
- body.theme-custom ul>li>ul>li::before {
586
- content: "\25CF\00A0";
587
- }
588
-
589
- body.theme-custom ul>li>ul>li>ul {
590
- counter-reset: ul-lv3;
591
- }
592
-
593
- body.theme-custom ul>li>ul>li>ul>li {
594
- counter-increment: ul-lv3;
595
- }
596
-
597
- body.theme-custom ul>li>ul>li>ul>li::before {
598
- content: "\25CB\00A0";
599
- }
600
-
601
- body.theme-custom ul ul ul ul>li::before {
602
- content: "\25C6\00A0";
603
- }
604
-
605
- /* 混合嵌套 */
606
- body.theme-custom ul>li>ol {
607
- counter-reset: ol-mix2;
608
- }
609
-
610
- body.theme-custom ul>li>ol>li {
611
- counter-increment: ol-mix2;
612
- }
613
-
614
- body.theme-custom ul>li>ol>li::before {
615
- content: "(" counter(ol-mix2) ")";
616
- font-family: var(--font-body);
617
- }
618
-
619
- body.theme-custom ol>li>ul {
620
- counter-reset: ul-mix2;
621
- }
622
-
623
- body.theme-custom ol>li>ul>li {
624
- counter-increment: ul-mix2;
625
- }
626
-
627
- body.theme-custom ol>li>ul>li::before {
628
- content: "\25CF\00A0";
629
- }
630
-
631
- .md-task-list-item>input {
632
- margin-left: -1.3em;
633
- margin-top: 0.3em;
634
- }
635
-
636
- /* ── 5.11 内联代码 ── */
637
- body.theme-custom code,
638
- body.theme-custom tt {
639
- font-family: var(--font-code);
640
- font-size: 0.88em;
641
- padding: 1px 6px;
642
- margin: 0 1px;
643
- background: var(--code-bg);
644
- border-radius: 0;
645
- color: var(--code-color);
646
- border: none;
647
- }
648
-
649
- /* ── 5.12 代码块 — 浅灰底黑字,直角 ── */
650
- body.theme-custom pre.md-fences {
651
- font-family: var(--font-code);
652
- font-size: 14px;
653
- line-height: var(--line-height-code);
654
- background: var(--code-block-bg);
655
- color: var(--code-block-text);
656
- padding: 14px 18px;
657
- border-radius: 0;
658
- margin: 16px 0;
659
- overflow-x: auto;
660
- border: 1px solid var(--seed-ink);
661
- }
662
-
663
- body.theme-custom pre.md-fences code {
664
- background: transparent;
665
- color: inherit;
666
- padding: 0;
667
- margin: 0;
668
- border-radius: 0;
669
- border: none;
670
- }
671
-
672
- body.theme-custom #editor .ProseMirror pre {
673
- font-family: var(--font-code);
674
- font-size: 14px;
675
- line-height: var(--line-height-code);
676
- background: var(--code-block-bg) !important;
677
- color: var(--code-block-text) !important;
678
- padding: 14px 18px;
679
- border-radius: 0;
680
- margin: 16px 0;
681
- overflow-x: auto;
682
- border: 1px solid var(--seed-ink);
683
- }
684
-
685
- body.theme-custom #editor .ProseMirror pre code {
686
- background: transparent !important;
687
- color: var(--code-block-text) !important;
688
- padding: 0;
689
- margin: 0;
690
- border-radius: 0;
691
- border: none;
692
- }
693
-
694
- /* ── 5.13 代码语法高亮 — 黑白打印友好 ── */
695
- .cm-s-inner {
696
- font-family: var(--font-code);
697
- font-size: 14px;
698
- line-height: var(--line-height-code);
699
- }
700
-
701
- body.theme-custom .token.comment,
702
- body.theme-custom .token.prolog,
703
- body.theme-custom .token.doctype,
704
- body.theme-custom .token.cdata,
705
- .cm-s-inner .cm-comment,
706
- .cm-s-inner .cm-quote,
707
- .cm-s-inner .cm-hr {
708
- color: var(--gray-7);
709
- font-style: italic;
710
- }
711
-
712
- body.theme-custom .token.punctuation,
713
- .cm-s-inner .cm-meta {
714
- color: var(--gray-8);
715
- }
716
-
717
- body.theme-custom .token.keyword,
718
- body.theme-custom .token.important,
719
- .cm-s-inner .cm-keyword {
720
- color: var(--seed-ink);
721
- font-weight: 700;
722
- }
723
-
724
- body.theme-custom .token.boolean,
725
- body.theme-custom .token.builtin,
726
- body.theme-custom .token.tag,
727
- body.theme-custom .token.selector,
728
- body.theme-custom .token.constant,
729
- body.theme-custom .token.deleted,
730
- .cm-s-inner .cm-atom,
731
- .cm-s-inner .cm-builtin,
732
- .cm-s-inner .cm-tag,
733
- .cm-s-inner .cm-error {
734
- color: var(--seed-ink);
735
- font-weight: 600;
736
- }
737
-
738
- body.theme-custom .token.string,
739
- body.theme-custom .token.attr-value,
740
- body.theme-custom .token.symbol,
741
- body.theme-custom .token.inserted,
742
- .cm-s-inner .cm-string {
743
- color: var(--gray-8);
744
- }
745
-
746
- body.theme-custom .token.number,
747
- .cm-s-inner .cm-number {
748
- color: var(--seed-ink);
749
- }
750
-
751
- body.theme-custom .token.function,
752
- body.theme-custom .token.class-name,
753
- body.theme-custom .token.variable,
754
- body.theme-custom .token.attr-name,
755
- body.theme-custom .token.property,
756
- body.theme-custom .token.entity,
757
- .cm-s-inner .cm-def,
758
- .cm-s-inner .cm-variable-2,
759
- .cm-s-inner .cm-attribute,
760
- .cm-s-inner .cm-property,
761
- .cm-s-inner .cm-header {
762
- color: var(--seed-ink);
763
- }
764
-
765
- .cm-s-inner .cm-header {
766
- font-weight: 700;
767
- }
768
-
769
- body.theme-custom .token.url,
770
- .cm-s-inner .cm-link {
771
- color: var(--seed-ink);
772
- text-decoration: underline;
773
- }
774
-
775
- body.theme-custom .token.operator,
776
- .cm-s-inner .cm-operator {
777
- color: var(--gray-8);
778
- }
779
-
780
- body.theme-custom .token.regex {
781
- color: var(--gray-8);
782
- }
783
-
784
- .cm-s-inner .cm-variable {
785
- color: var(--seed-ink);
786
- }
787
-
788
- /* ── 5.14 表格 — GB/T 7713 三线表规范 ── */
789
-
790
- /* 表格容器 */
791
- body.theme-custom table {
792
- width: 100%;
793
- border-collapse: collapse;
794
- margin: 18px auto;
795
- font-size: 14px;
796
- line-height: 1.5;
797
- }
798
-
799
- /* 表头单元格:黑体 五号 加粗 居中 */
800
- body.theme-custom table th {
801
- background: var(--table-header-bg);
802
- font-weight: 700;
803
- color: var(--seed-ink);
804
- padding: 8px 10px;
805
- text-align: center;
806
- text-indent: 0;
807
- vertical-align: middle;
808
- font-family: var(--font-heading);
809
- }
810
-
811
- /* 数据单元格:宋体 五号 左对齐 */
812
- body.theme-custom table td {
813
- padding: 8px 10px;
814
- text-align: left;
815
- text-indent: 0;
816
- vertical-align: top;
817
- font-family: var(--font-body);
818
- }
819
-
820
- /* 表格内段落 */
821
- body.theme-custom table p,
822
- body.theme-custom table td p {
823
- margin: 0;
824
- padding: 0;
825
- text-indent: 0;
826
- text-align: left;
827
- line-height: 1.4;
828
- font-size: inherit;
829
- }
830
-
831
- /* 表格内列表 */
832
- body.theme-custom table ul,
833
- body.theme-custom table ol {
834
- margin: 2px 0;
835
- padding-left: 1.5em;
836
- }
837
-
838
- body.theme-custom table li {
839
- margin: 2px 0;
840
- padding-left: 0;
841
- font-size: inherit;
842
- }
843
-
844
- body.theme-custom table li::before {
845
- display: inline;
846
- margin-right: 0.35em;
847
- }
848
-
849
- /* 去掉 hover 效果 */
850
- body.theme-custom table tr:hover td {
851
- background: transparent;
852
- }
853
-
854
- /* 三线表样式:顶线 + 表头底线 + 底线,无竖线 */
855
- body.theme-custom table {
856
- border-top: 2px solid var(--seed-ink);
857
- border-bottom: 2px solid var(--seed-ink);
858
- border-left: none;
859
- border-right: none;
860
- }
861
-
862
- body.theme-custom table th {
863
- border: none;
864
- border-bottom: 1px solid var(--seed-ink);
865
- background: transparent;
866
- }
867
-
868
- body.theme-custom table td {
869
- border: none;
870
- border-bottom: none;
871
- }
872
-
873
- /* ── 5.15 图片 — 无圆角,图题居中 ── */
874
- body.theme-custom img {
875
- max-width: 100%;
876
- border-radius: 0;
877
- }
878
-
879
- body.theme-custom p>img:only-child {
880
- display: block;
881
- margin: 16px auto;
882
- }
883
-
884
- body.theme-custom figure {
885
- margin: 16px 0;
886
- text-align: center;
887
- }
888
-
889
- body.theme-custom .md-image-src {
890
- margin: 16px auto;
891
- display: block;
892
- }
893
-
894
- body.theme-custom figcaption {
895
- font-family: var(--font-body);
896
- font-size: 14px;
897
- line-height: 1.5;
898
- text-align: center;
899
- color: var(--seed-ink);
900
- margin-top: 8px;
901
- }
902
-
903
- /* ── 5.16 数学公式 — 纯黑白 ── */
904
- body.theme-custom .math-block {
905
- background: var(--seed-surface);
906
- padding: 12px 0;
907
- margin: 16px 0;
908
- border-radius: 0;
909
- border: none;
910
- text-align: center;
911
- overflow-x: auto;
912
- }
913
-
914
- body.theme-custom .math-block .katex,
915
- body.theme-custom .math-block .katex *,
916
- body.theme-custom .math-block .MathJax,
917
- body.theme-custom .math-block .MathJax *,
918
- body.theme-custom .math-inline,
919
- body.theme-custom .math-inline .katex,
920
- body.theme-custom .math-inline .katex *,
921
- .md-inline-math script,
922
- .md-inline-math .MathJax {
923
- color: var(--seed-ink) !important;
924
- }
925
-
926
- /* ── 5.17 Mermaid 图表容器 ── */
927
- .md-diagram-panel {
928
- margin: 1.5em 0;
929
- }
930
-
931
- /* 图表备注(图题) */
932
- body.theme-custom .md-filename {
933
- font-family: var(--font-body);
934
- font-size: 14px;
935
- color: var(--seed-ink);
936
- text-align: center;
937
- margin-top: 8px;
938
- }
939
-
940
- body.theme-custom .mermaid-block {
941
- background: var(--mermaid-background);
942
- border: 1px solid var(--mermaid-border-color);
943
- border-radius: var(--mermaid-border-radius);
944
- padding: var(--mermaid-padding);
945
- margin: 1.5em 0;
946
- overflow-x: auto;
947
- }
948
-
949
- body.theme-custom .mermaid-preview {
950
- background: transparent;
951
- border: none;
952
- padding: 0;
953
- margin: 0;
954
- }
955
-
956
- .md-diagram-panel.md-mermaid {
957
- background: var(--mermaid-background);
958
- border: 1px solid var(--mermaid-border-color);
959
- border-radius: var(--mermaid-border-radius);
960
- padding: var(--mermaid-padding);
961
- margin: 1.5em 0;
962
- overflow-x: auto;
963
- }
964
-
965
- .md-diagram-panel.md-mermaid svg,
966
- body.theme-custom .mermaid-preview svg {
967
- max-width: 100%;
968
- height: auto;
969
- }
970
-
971
- /* Mermaid 全局字体 */
972
- body.theme-custom .mermaid-preview svg text,
973
- body.theme-custom .mermaid-preview svg tspan {
974
- font-family: var(--font-mermaid) !important;
975
- font-size: var(--font-size-mermaid) !important;
976
- fill: var(--mermaid-node-text) !important;
977
- }
978
-
979
- body.theme-custom .mermaid-preview svg foreignObject span,
980
- body.theme-custom .mermaid-preview svg foreignObject p,
981
- body.theme-custom .mermaid-preview svg foreignObject div,
982
- body.theme-custom .mermaid-preview svg .nodeLabel span,
983
- body.theme-custom .mermaid-preview svg .edgeLabel span {
984
- font-family: var(--font-mermaid) !important;
985
- font-size: var(--font-size-mermaid) !important;
986
- color: var(--mermaid-node-text) !important;
987
- }
988
-
989
- body.theme-custom .mermaid-preview svg .titleText,
990
- body.theme-custom .mermaid-preview svg .pieTitleText {
991
- font-size: var(--font-size-mermaid) !important;
992
- fill: var(--mermaid-title-text) !important;
993
- }
994
-
995
- /* Mermaid 节点 */
996
- body.theme-custom .mermaid-preview svg .node rect,
997
- body.theme-custom .mermaid-preview svg .node circle,
998
- body.theme-custom .mermaid-preview svg .node ellipse,
999
- body.theme-custom .mermaid-preview svg .node polygon,
1000
- body.theme-custom .mermaid-preview svg .node path {
1001
- fill: var(--mermaid-node-bkg) !important;
1002
- stroke: var(--mermaid-node-stroke) !important;
1003
- stroke-width: var(--mermaid-node-stroke-width) !important;
1004
- }
1005
-
1006
- /* Mermaid 连线 */
1007
- body.theme-custom .mermaid-preview svg .edgePath .path {
1008
- stroke: var(--mermaid-edge-stroke) !important;
1009
- stroke-width: var(--mermaid-edge-stroke-width) !important;
1010
- }
1011
-
1012
- body.theme-custom .mermaid-preview svg defs marker path {
1013
- fill: var(--mermaid-edge-stroke) !important;
1014
- stroke: var(--mermaid-edge-stroke) !important;
1015
- }
1016
-
1017
- body.theme-custom .mermaid-preview svg .relation {
1018
- stroke: var(--mermaid-edge-stroke) !important;
1019
- }
1020
-
1021
- /* Mermaid 聚类 */
1022
- body.theme-custom .mermaid-preview svg .cluster rect,
1023
- body.theme-custom .mermaid-preview svg .cluster path {
1024
- fill: var(--mermaid-cluster-fill) !important;
1025
- stroke: var(--mermaid-cluster-stroke) !important;
1026
- stroke-width: 1px !important;
1027
- }
1028
-
1029
- /* Mermaid 标签 */
1030
- body.theme-custom .mermaid-preview svg .edgeLabel text,
1031
- body.theme-custom .mermaid-preview svg .label text,
1032
- body.theme-custom .mermaid-preview svg .nodeLabel text {
1033
- fill: var(--mermaid-node-text) !important;
1034
- }
1035
-
1036
- body.theme-custom .mermaid-preview svg .nodeLabel span,
1037
- body.theme-custom .mermaid-preview svg .edgeLabel span {
1038
- color: var(--mermaid-node-text) !important;
1039
- }
1040
-
1041
- body.theme-custom .mermaid-preview svg .edgeLabel rect {
1042
- fill: var(--mermaid-label-background) !important;
1043
- stroke: none !important;
1044
- }
1045
-
1046
- /* Mermaid 各类图表(简化版,完整版见原文件) */
1047
- body.theme-custom .mermaid-preview svg .actor rect,
1048
- body.theme-custom .mermaid-preview svg .actor path {
1049
- fill: var(--mermaid-person-bkg) !important;
1050
- stroke: var(--mermaid-node-stroke) !important;
1051
- }
1052
-
1053
- body.theme-custom .mermaid-preview svg text.actor {
1054
- fill: var(--mermaid-node-text) !important;
1055
- }
1056
-
1057
- body.theme-custom .mermaid-preview svg .actor-line {
1058
- stroke: var(--mermaid-line-color) !important;
1059
- }
1060
-
1061
- body.theme-custom .mermaid-preview svg .messageLine0,
1062
- body.theme-custom .mermaid-preview svg .messageLine1 {
1063
- stroke: var(--mermaid-node-stroke) !important;
1064
- stroke-width: 1px !important;
1065
- }
1066
-
1067
- body.theme-custom .mermaid-preview svg .messageText {
1068
- fill: var(--mermaid-node-text) !important;
1069
- }
1070
-
1071
- body.theme-custom .mermaid-preview svg .loopText,
1072
- body.theme-custom .mermaid-preview svg .altText,
1073
- body.theme-custom .mermaid-preview svg .optText,
1074
- body.theme-custom .mermaid-preview svg .loopText tspan,
1075
- body.theme-custom .mermaid-preview svg .altText tspan,
1076
- body.theme-custom .mermaid-preview svg .optText tspan {
1077
- fill: var(--mermaid-axis-text) !important;
1078
- }
1079
-
1080
- body.theme-custom .mermaid-preview svg .loopLine,
1081
- body.theme-custom .mermaid-preview svg .altLine,
1082
- body.theme-custom .mermaid-preview svg .optLine {
1083
- stroke: var(--mermaid-node-stroke) !important;
1084
- }
1085
-
1086
- body.theme-custom .mermaid-preview svg .labelBox {
1087
- stroke: var(--mermaid-node-stroke) !important;
1088
- fill: var(--mermaid-label-background) !important;
1089
- }
1090
-
1091
- body.theme-custom .mermaid-preview svg .labelText {
1092
- fill: var(--mermaid-node-text) !important;
1093
- }
1094
-
1095
- body.theme-custom .mermaid-preview svg .note {
1096
- fill: var(--surface-color) !important;
1097
- stroke: var(--mermaid-line-color) !important;
1098
- }
1099
-
1100
- /* 类图 */
1101
- body.theme-custom .mermaid-preview svg .classGroup rect,
1102
- body.theme-custom .mermaid-preview svg .classBox rect,
1103
- body.theme-custom .mermaid-preview svg .classBox path {
1104
- stroke: var(--mermaid-node-stroke) !important;
1105
- fill: var(--mermaid-node-bkg) !important;
1106
- }
1107
-
1108
- body.theme-custom .mermaid-preview svg .classTitle text,
1109
- body.theme-custom .mermaid-preview svg .classTitle span,
1110
- body.theme-custom .mermaid-preview svg .classText text,
1111
- body.theme-custom .mermaid-preview svg .classText span {
1112
- fill: var(--mermaid-node-text) !important;
1113
- color: var(--mermaid-node-text) !important;
1114
- }
1115
-
1116
- body.theme-custom .mermaid-preview svg .divider {
1117
- stroke: var(--mermaid-node-stroke) !important;
1118
- }
1119
-
1120
- /* 状态图 */
1121
- body.theme-custom .mermaid-preview svg .statediagram-state rect,
1122
- body.theme-custom .mermaid-preview svg .statediagram-state circle {
1123
- fill: var(--mermaid-node-bkg) !important;
1124
- stroke: var(--mermaid-node-stroke) !important;
1125
- stroke-width: 1px !important;
1126
- }
1127
-
1128
- body.theme-custom .mermaid-preview svg .statediagram-cluster rect {
1129
- fill: var(--mermaid-cluster-fill) !important;
1130
- stroke: var(--mermaid-cluster-stroke) !important;
1131
- }
1132
-
1133
- body.theme-custom .mermaid-preview svg .statediagram-state .nodeLabel text,
1134
- body.theme-custom .mermaid-preview svg .statediagram-state .nodeLabel span,
1135
- body.theme-custom .mermaid-preview svg .statediagram-cluster .outer-title text {
1136
- fill: var(--mermaid-node-text) !important;
1137
- color: var(--mermaid-node-text) !important;
1138
- }
1139
-
1140
- body.theme-custom .mermaid-preview svg .transition {
1141
- stroke: var(--mermaid-node-stroke) !important;
1142
- }
1143
-
1144
- body.theme-custom .mermaid-preview svg .edgeLabel .label text {
1145
- fill: var(--mermaid-node-text) !important;
1146
- }
1147
-
1148
- /* 甘特图 */
1149
- body.theme-custom .mermaid-preview svg .task {
1150
- fill: var(--mermaid-person-bkg) !important;
1151
- stroke: var(--mermaid-node-stroke) !important;
1152
- stroke-width: 1px !important;
1153
- }
1154
-
1155
- body.theme-custom .mermaid-preview svg .taskText,
1156
- body.theme-custom .mermaid-preview svg .taskTextOutsideRight,
1157
- body.theme-custom .mermaid-preview svg .taskTextOutsideLeft {
1158
- fill: var(--mermaid-node-text) !important;
1159
- }
1160
-
1161
- body.theme-custom .mermaid-preview svg .section rect {
1162
- fill: var(--mermaid-tertiary-color) !important;
1163
- stroke: var(--mermaid-node-stroke) !important;
1164
- }
1165
-
1166
- body.theme-custom .mermaid-preview svg .sectionText,
1167
- body.theme-custom .mermaid-preview svg .sectionTitle {
1168
- fill: var(--mermaid-node-text) !important;
1169
- }
1170
-
1171
- body.theme-custom .mermaid-preview svg .today {
1172
- stroke: var(--mermaid-node-stroke) !important;
1173
- stroke-width: 2px !important;
1174
- }
1175
-
1176
- body.theme-custom .mermaid-preview svg .grid .tick line,
1177
- body.theme-custom .mermaid-preview svg .grid .domain {
1178
- stroke: var(--mermaid-line-color) !important;
1179
- }
1180
-
1181
- body.theme-custom .mermaid-preview svg .tick text {
1182
- fill: var(--mermaid-axis-text) !important;
1183
- }
1184
-
1185
- /* 饼图 */
1186
- body.theme-custom .mermaid-preview svg .pieCircle,
1187
- body.theme-custom .mermaid-preview svg .slice {
1188
- stroke: var(--mermaid-node-stroke) !important;
1189
- }
1190
-
1191
- body.theme-custom .mermaid-preview svg .legend text {
1192
- fill: var(--mermaid-node-text) !important;
1193
- }
1194
-
1195
- /* ER 图 */
1196
- body.theme-custom .mermaid-preview svg .er .entityBox rect,
1197
- body.theme-custom .mermaid-preview svg .er .entityBox path {
1198
- fill: var(--mermaid-node-bkg) !important;
1199
- stroke: var(--mermaid-node-stroke) !important;
1200
- }
1201
-
1202
- body.theme-custom .mermaid-preview svg .er text,
1203
- body.theme-custom .mermaid-preview svg .er .relationshipLabel {
1204
- fill: var(--mermaid-node-text) !important;
1205
- }
1206
-
1207
- body.theme-custom .mermaid-preview svg .er .relationshipLine {
1208
- stroke: var(--mermaid-node-stroke) !important;
1209
- }
1210
-
1211
- /* Git 图 */
1212
- body.theme-custom .mermaid-preview svg .git .commit rect,
1213
- body.theme-custom .mermaid-preview svg .git .commit circle {
1214
- fill: var(--mermaid-cscale9) !important;
1215
- stroke: var(--mermaid-node-stroke) !important;
1216
- }
1217
-
1218
- body.theme-custom .mermaid-preview svg .git text,
1219
- body.theme-custom .mermaid-preview svg .git .branchLabel text {
1220
- fill: var(--mermaid-node-text) !important;
1221
- }
1222
-
1223
- body.theme-custom .mermaid-preview svg .git .tag rect,
1224
- body.theme-custom .mermaid-preview svg .git .tag circle {
1225
- fill: var(--mermaid-secondary-color) !important;
1226
- stroke: var(--mermaid-node-stroke) !important;
1227
- }
1228
-
1229
- body.theme-custom .mermaid-preview svg .git .branch rect {
1230
- fill: var(--mermaid-tertiary-color) !important;
1231
- stroke: var(--mermaid-line-color) !important;
1232
- }
1233
-
1234
- body.theme-custom .mermaid-preview svg .git .commit-line,
1235
- body.theme-custom .mermaid-preview svg .git .branch-line {
1236
- stroke: var(--mermaid-node-stroke) !important;
1237
- }
1238
-
1239
- /* 用户旅程图 */
1240
- body.theme-custom .mermaid-preview svg .journey .task rect {
1241
- fill: var(--mermaid-node-bkg) !important;
1242
- stroke: var(--mermaid-node-stroke) !important;
1243
- }
1244
-
1245
- body.theme-custom .mermaid-preview svg .journey text {
1246
- fill: var(--mermaid-node-text) !important;
1247
- }
1248
-
1249
- /* 时间线 */
1250
- body.theme-custom .mermaid-preview svg .timeline rect {
1251
- fill: var(--mermaid-node-bkg) !important;
1252
- stroke: var(--mermaid-node-stroke) !important;
1253
- }
1254
-
1255
- body.theme-custom .mermaid-preview svg .timeline text {
1256
- fill: var(--mermaid-node-text) !important;
1257
- }
1258
-
1259
- body.theme-custom .mermaid-preview svg .timeline .period rect {
1260
- fill: var(--mermaid-cluster-fill) !important;
1261
- stroke: var(--mermaid-cluster-stroke) !important;
1262
- }
1263
-
1264
- /* 思维导图 */
1265
- body.theme-custom .mermaid-preview svg .mindmap-node rect,
1266
- body.theme-custom .mermaid-preview svg .mindmap-node circle,
1267
- body.theme-custom .mermaid-preview svg .mindmap-node ellipse,
1268
- body.theme-custom .mermaid-preview svg .mindmap-node polygon,
1269
- body.theme-custom .mermaid-preview svg .mindmap-node path {
1270
- fill: var(--mermaid-node-bkg) !important;
1271
- stroke: var(--mermaid-node-stroke) !important;
1272
- }
1273
-
1274
- body.theme-custom .mermaid-preview svg .mindmap-node text,
1275
- body.theme-custom .mermaid-preview svg .mindmap-node .nodeLabel text,
1276
- body.theme-custom .mermaid-preview svg .mindmap-node .nodeLabel span {
1277
- fill: var(--mermaid-node-text) !important;
1278
- color: var(--mermaid-node-text) !important;
1279
- }
1280
-
1281
- body.theme-custom .mermaid-preview svg .mindmap-edge {
1282
- stroke: var(--mermaid-node-stroke) !important;
1283
- }
1284
-
1285
- /* C4 架构图 */
1286
- body.theme-custom .mermaid-preview svg .c4 .person rect,
1287
- body.theme-custom .mermaid-preview svg .c4 .person path,
1288
- body.theme-custom .mermaid-preview svg .c4 .system rect,
1289
- body.theme-custom .mermaid-preview svg .c4 .system path,
1290
- body.theme-custom .mermaid-preview svg .c4 .container rect,
1291
- body.theme-custom .mermaid-preview svg .c4 .container path,
1292
- body.theme-custom .mermaid-preview svg .c4 .boundary rect,
1293
- body.theme-custom .mermaid-preview svg .c4 .boundary path {
1294
- stroke: var(--mermaid-node-stroke) !important;
1295
- }
1296
-
1297
- body.theme-custom .mermaid-preview svg .c4 text,
1298
- body.theme-custom .mermaid-preview svg .c4 span {
1299
- fill: var(--mermaid-node-text) !important;
1300
- color: var(--mermaid-node-text) !important;
1301
- }
1302
-
1303
- body.theme-custom .mermaid-preview svg .person rect,
1304
- body.theme-custom .mermaid-preview svg .person path {
1305
- fill: var(--mermaid-person-bkg) !important;
1306
- stroke: var(--mermaid-node-stroke) !important;
1307
- }
1308
-
1309
- body.theme-custom .mermaid-preview svg .person-man text {
1310
- fill: var(--mermaid-node-text) !important;
1311
- }
1312
-
1313
- body.theme-custom .mermaid-preview svg .person-man span {
1314
- color: var(--mermaid-node-text) !important;
1315
- }
1316
-
1317
- /* XY Chart */
1318
- body.theme-custom .mermaid-preview svg .xychart .axis text {
1319
- fill: var(--mermaid-axis-text) !important;
1320
- }
1321
-
1322
- body.theme-custom .mermaid-preview svg .xychart .axis line,
1323
- body.theme-custom .mermaid-preview svg .xychart .axis path {
1324
- stroke: var(--mermaid-node-stroke) !important;
1325
- }
1326
-
1327
- body.theme-custom .mermaid-preview svg .xychart .plot rect,
1328
- body.theme-custom .mermaid-preview svg .xychart .plot line {
1329
- stroke: var(--mermaid-node-stroke) !important;
1330
- }
1331
-
1332
- body.theme-custom .mermaid-preview svg .xychart .titleText {
1333
- fill: var(--mermaid-node-text) !important;
1334
- }
1335
-
1336
- /* 四象限图 */
1337
- body.theme-custom .mermaid-preview svg .quadrant rect {
1338
- stroke: var(--mermaid-node-stroke) !important;
1339
- }
1340
-
1341
- body.theme-custom .mermaid-preview svg .quadrant text,
1342
- body.theme-custom .mermaid-preview svg .quadrant .titleText {
1343
- fill: var(--mermaid-node-text) !important;
1344
- }
1345
-
1346
- body.theme-custom .mermaid-preview svg .quadrant .axis text {
1347
- fill: var(--mermaid-axis-text) !important;
1348
- }
1349
-
1350
- body.theme-custom .mermaid-preview svg .quadrant .axis line,
1351
- body.theme-custom .mermaid-preview svg .quadrant .axis path {
1352
- stroke: var(--mermaid-node-stroke) !important;
1353
- }
1354
-
1355
- body.theme-custom .mermaid-preview svg .quadrant .point {
1356
- fill: var(--mermaid-node-stroke) !important;
1357
- stroke: var(--mermaid-node-stroke) !important;
1358
- }
1359
-
1360
- /* Sankey 图 */
1361
- body.theme-custom .mermaid-preview svg .sankey .link {
1362
- stroke: var(--mermaid-node-stroke) !important;
1363
- }
1364
-
1365
- body.theme-custom .mermaid-preview svg .sankey text {
1366
- fill: var(--mermaid-node-text) !important;
1367
- }
1368
-
1369
- /* 图表标题加粗 */
1370
- body.theme-custom .mermaid-preview svg .pieTitleText,
1371
- body.theme-custom .mermaid-preview svg .xychart .titleText,
1372
- body.theme-custom .mermaid-preview svg .quadrant .titleText {
1373
- font-weight: 700 !important;
1374
- }
1375
-
1376
- /* Mermaid 源码编辑器 */
1377
- body.theme-custom .mermaid-source {
1378
- width: 100%;
1379
- min-height: 100px;
1380
- border: 1px solid var(--mermaid-node-stroke);
1381
- border-radius: 0;
1382
- padding: 12px;
1383
- font-size: 14px;
1384
- font-family: var(--font-code);
1385
- color: var(--text-color);
1386
- background: var(--surface-color);
1387
- outline: none;
1388
- resize: vertical;
1389
- line-height: 1.5;
1390
- white-space: pre-wrap;
1391
- }
1392
-
1393
- body.theme-custom .mermaid-source:focus {
1394
- border-color: var(--mermaid-node-text);
1395
- }
1396
-
1397
- /* ── 5.18 脚注(小五号 12px) ── */
1398
- body.theme-custom .footnotes {
1399
- font-family: var(--font-body);
1400
- font-size: 12px;
1401
- color: var(--seed-ink);
1402
- margin-top: 32px;
1403
- border-top: 1px solid var(--seed-ink);
1404
- padding-top: 16px;
1405
- }
1406
-
1407
- /* 段落内加粗标签 */
1408
- body.theme-custom #write>p strong {
1409
- font-weight: 700;
1410
- }
1411
-
1412
- /* 关键词 / 参考文献 */
1413
- body.theme-custom .references,
1414
- body.theme-custom [class*="reference"] {
1415
- font-family: var(--font-body);
1416
- font-size: 12px;
1417
- line-height: 1.5;
1418
- }
1419
-
1420
- body.theme-custom .references li,
1421
- body.theme-custom [class*="reference"] li {
1422
- text-indent: -2em;
1423
- padding-left: 2em;
1424
- margin-bottom: 6px;
1425
- }
1426
-
1427
- /* ── 5.19 响应式 ── */
1428
- @media only screen and (min-width: 1400px) {
1429
- #write {
1430
- max-width: var(--content-width);
1431
- }
1432
- }
1433
-
1434
- @media only screen and (max-width: 768px) {
1435
- #write {
1436
- padding: 15mm 12mm 15mm 12mm;
1437
- }
1438
-
1439
- body.theme-custom .mermaid-block,
1440
- body.theme-custom .mermaid-preview,
1441
- .md-diagram-panel.md-mermaid {
1442
- padding: 12px;
1443
- margin: 1em 0;
1444
- }
1445
-
1446
- body.theme-custom .mermaid-preview svg {
1447
- max-width: 100% !important;
1448
- height: auto !important;
1449
- }
1450
-
1451
- body.theme-custom .mermaid-preview svg text {
1452
- font-size: 12px !important;
1453
- }
1454
-
1455
- .md-diagram-panel.md-mermaid svg text {
1456
- font-size: 12px !important;
1457
- }
1458
-
1459
- body.theme-custom .mermaid-preview svg .titleText {
1460
- font-size: 14px !important;
1461
- }
1462
-
1463
- .md-diagram-panel.md-mermaid svg .titleText {
1464
- font-size: 14px !important;
1465
- }
1466
- }
1467
-
1468
- /* ── 5.20 滚动条 ── */
1469
- body.theme-custom {
1470
- scrollbar-width: auto;
1471
- scrollbar-color: var(--gray-8);
1472
- }
1473
-
1474
- /* ── 5.21 源码编辑模式 ── */
1475
- body.theme-custom #source-editor {
1476
- font-family: var(--font-code);
1477
- font-size: var(--font-size-root);
1478
- line-height: var(--line-height-code);
1479
- background: var(--seed-surface);
1480
- color: var(--seed-ink);
1481
- }
1482
-
1483
- /* ═══════════════════════════════════════════════════════════════
1484
- SECTION 6 — 打印 / 导出
1485
- 原则:屏幕样式的完整镜像,使用 pt 物理精确单位
1486
- 学术论文印刷:保留黑体标题 + 宋体正文 + 三线表 + 纯白底色
1487
- ═══════════════════════════════════════════════════════════════ */
1488
-
1489
- @media print {
1490
- @page {
1491
- size: A4;
1492
- margin: 25mm 25mm 25mm 30mm;
1493
-
1494
- @bottom-center {
1495
- content: counter(page);
1496
- font-family: "SimSun", "Songti SC", serif;
1497
- font-size: 9pt;
1498
- color: var(--gray-9);
1499
- }
1500
- }
1501
-
1502
- /* ── 6.0 变量重声明 ── */
1503
- body.theme-custom {
1504
- --seed-surface: #ffffff;
1505
- --seed-ink: #000000;
1506
- --seed-ink-muted: #333333;
1507
- --seed-panel: #f5f5f5;
1508
- --seed-panel-alt: #fafafa;
1509
- --seed-border: #000000;
1510
- --font-size-root: 16px;
1511
- --line-height-body: 1.5;
1512
- --line-height-heading: 1.35;
1513
- --font-scale-h1: 2.25;
1514
- --font-scale-h2: 1.625;
1515
- --font-scale-h3: 1.25;
1516
- --font-scale-h4: 1.25;
1517
- --font-scale-h5: 1;
1518
- --font-scale-h6: 1;
1519
- --font-size-mermaid: 12px;
1520
- --font-body: "SimSun", "Songti SC", "Source Han Serif SC", "Noto Serif SC", Georgia, serif;
1521
- --font-heading: "SimHei", "Heiti SC", "Source Han Sans SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;
1522
- --font-code: "Courier New", "Consolas", monospace;
1523
- }
1524
-
1525
- /* ── 6.1 根元素:字号 + 宋体 + 两端对齐 + 底色 ── */
1526
- html {
1527
- font-size: var(--font-size-root) !important;
1528
- }
1529
-
1530
- html,
1531
- body,
1532
- body.theme-custom {
1533
- background: var(--seed-surface) !important;
1534
- color: var(--seed-ink) !important;
1535
- font-family: var(--font-body) !important;
1536
- line-height: var(--line-height-body) !important;
1537
- text-align: justify !important;
1538
- -webkit-print-color-adjust: exact !important;
1539
- print-color-adjust: exact !important;
1540
- }
1541
-
1542
- /* ── 6.2 编辑区:A4 页面尺寸 ── */
1543
- #titlebar,
1544
- #slides-btn,
1545
- #agent-dot {
1546
- display: none !important;
1547
- }
1548
-
1549
- #editor {
1550
- height: auto !important;
1551
- overflow: visible !important;
1552
- padding: 0 !important;
1553
- }
1554
-
1555
- #write {
1556
- max-width: none !important;
1557
- padding: 0 !important;
1558
- margin: 0 !important;
1559
- }
1560
-
1561
- /* ── 6.3 标题:黑体,pt 精确字号 ── */
1562
- body.theme-custom h1,
1563
- body.theme-custom h2,
1564
- body.theme-custom h3,
1565
- body.theme-custom h4,
1566
- body.theme-custom h5,
1567
- body.theme-custom h6 {
1568
- font-family: var(--font-heading) !important;
1569
- font-weight: 700 !important;
1570
- line-height: var(--line-height-heading) !important;
1571
- color: var(--seed-ink) !important;
1572
- -webkit-print-color-adjust: exact !important;
1573
- print-color-adjust: exact !important;
1574
- }
1575
-
1576
- /* 标题字号:pt 精确映射 */
1577
- body.theme-custom h1 {
1578
- font-size: 24pt !important;
1579
- }
1580
-
1581
- /* 三号:22px → 16pt */
1582
- body.theme-custom h2 {
1583
- font-size: 16pt !important;
1584
- }
1585
-
1586
- /* 四号:18px → 14pt */
1587
- body.theme-custom h3 {
1588
- font-size: 12pt !important;
1589
- }
1590
-
1591
- /* 小四号:16px → 12pt */
1592
- body.theme-custom h4 {
1593
- font-size: 12pt !important;
1594
- }
1595
-
1596
- /* 小四号 */
1597
- body.theme-custom h5 {
1598
- font-size: 10.5pt !important;
1599
- }
1600
-
1601
- /* 五号:14px → 10.5pt */
1602
- body.theme-custom h6 {
1603
- font-size: 10.5pt !important;
1604
- }
1605
-
1606
- /* 五号 */
1607
-
1608
- /* ── 6.4 正文:宋体,首行缩进 ── */
1609
- body.theme-custom p {
1610
- font-family: var(--font-body) !important;
1611
- color: var(--seed-ink) !important;
1612
- font-size: 12pt !important;
1613
- text-indent: 2em !important;
1614
- line-height: 1.5 !important;
1615
- text-align: justify !important;
1616
- margin: 0 !important;
1617
- }
1618
-
1619
- /* ── 6.5 内联强调 ── */
1620
- body.theme-custom strong {
1621
- font-family: var(--font-heading) !important;
1622
- font-weight: 700 !important;
1623
- -webkit-print-color-adjust: exact !important;
1624
- print-color-adjust: exact !important;
1625
- font-style: italic !important;
1626
- }
1627
-
1628
- body.theme-custom em {
1629
- font-style: italic !important;
1630
- color: var(--seed-ink) !important;
1631
- }
1632
-
1633
- /* ── 6.6 链接 ── */
1634
- body.theme-custom a {
1635
- color: var(--seed-ink) !important;
1636
- text-decoration: none !important;
1637
- border-bottom: 1px solid var(--seed-ink) !important;
1638
- }
1639
-
1640
- /* ── 6.7 引用块 ── */
1641
- body.theme-custom blockquote {
1642
- background: var(--seed-panel-alt) !important;
1643
- border-left: 3px solid var(--seed-ink) !important;
1644
- color: var(--seed-ink) !important;
1645
- font-size: 10.5pt !important;
1646
- -webkit-print-color-adjust: exact !important;
1647
- print-color-adjust: exact !important;
1648
- }
1649
-
1650
- /* ── 6.8 列表 ── */
1651
- body.theme-custom li {
1652
- font-family: var(--font-body) !important;
1653
- font-size: 12pt !important;
1654
- line-height: 1.6 !important;
1655
- color: var(--seed-ink) !important;
1656
- }
1657
-
1658
- body.theme-custom li strong {
1659
- font-family: var(--font-heading) !important;
1660
- font-style: italic !important;
1661
- font-weight: 700 !important;
1662
- }
1663
-
1664
- /* ── 6.9 内联代码 ── */
1665
- body.theme-custom code {
1666
- background: var(--gray-3) !important;
1667
- color: var(--seed-ink) !important;
1668
- border: none !important;
1669
- border-radius: 0 !important;
1670
- padding: 1px 6px !important;
1671
- font-family: var(--font-code) !important;
1672
- font-size: 10.5pt !important;
1673
- -webkit-print-color-adjust: exact !important;
1674
- print-color-adjust: exact !important;
1675
- }
1676
-
1677
- /* ── 6.10 代码块 ── */
1678
- body.theme-custom pre {
1679
- background: var(--seed-panel) !important;
1680
- color: var(--seed-ink) !important;
1681
- border: none !important;
1682
- border-radius: 0 !important;
1683
- font-size: 10.5pt !important;
1684
- line-height: 1.5 !important;
1685
- font-family: var(--font-code) !important;
1686
- -webkit-print-color-adjust: exact !important;
1687
- print-color-adjust: exact !important;
1688
- }
1689
-
1690
- body.theme-custom pre code {
1691
- background: transparent !important;
1692
- border: none !important;
1693
- padding: 0 !important;
1694
- }
1695
-
1696
- /* ── 6.11 表格:三线表 ── */
1697
- body.theme-custom table {
1698
- border-collapse: collapse !important;
1699
- border-top: 1px solid var(--seed-ink) !important;
1700
- border-bottom: 1px solid var(--seed-ink) !important;
1701
- border-left: 1px solid var(--seed-ink) !important;
1702
- border-right: 1px solid var(--seed-ink) !important;
1703
- font-size: 10.5pt !important;
1704
- }
1705
-
1706
- body.theme-custom table th {
1707
- background: var(--seed-ink) !important;
1708
- -webkit-print-color-adjust: exact !important;
1709
- print-color-adjust: exact !important;
1710
- font-family: var(--font-heading) !important;
1711
- font-size: 10.5pt !important;
1712
- font-weight: 700 !important;
1713
- color: var(--table-header-text) !important;
1714
- padding: 8px 10px !important;
1715
- text-align: center !important;
1716
- text-indent: 0 !important;
1717
- vertical-align: middle !important;
1718
- }
1719
-
1720
- body.theme-custom table td {
1721
- border: 1px solid var(--seed-border) !important;
1722
- font-size: 10.5pt !important;
1723
- padding: 8px 10px !important;
1724
- text-align: left !important;
1725
- text-indent: 0 !important;
1726
- vertical-align: top !important;
1727
- }
1728
-
1729
- body.theme-custom table strong {
1730
- font-weight: 700 !important;
1731
- font-family: inherit !important;
1732
- }
1733
-
1734
- /* ── 6.12 数学公式 ── */
1735
- body.theme-custom .math-inline,
1736
- body.theme-custom .math-block {
1737
- color: var(--seed-ink) !important;
1738
- -webkit-print-color-adjust: exact !important;
1739
- print-color-adjust: exact !important;
1740
- }
1741
-
1742
- /* ── 6.13 Mermaid 图表容器 ── */
1743
- body.theme-custom .mermaid-block,
1744
- body.theme-custom .mermaid-preview,
1745
- .md-diagram-panel.md-mermaid {
1746
- background: var(--seed-surface) !important;
1747
- border: 1px solid var(--gray-5) !important;
1748
- border-radius: 0 !important;
1749
- -webkit-print-color-adjust: exact !important;
1750
- print-color-adjust: exact !important;
1751
- }
1752
-
1753
- body.theme-custom .mermaid-preview svg,
1754
- body.theme-custom .mermaid-preview svg * {
1755
- -webkit-print-color-adjust: exact !important;
1756
- print-color-adjust: exact !important;
1757
- }
1758
-
1759
- body.theme-custom .mermaid-block+p {
1760
- font-family: var(--font-body) !important;
1761
- font-size: 10.5pt !important;
1762
- text-align: center !important;
1763
- color: var(--seed-ink) !important;
1764
- }
1765
-
1766
- /* ── 6.14 脚注 ── */
1767
- body.theme-custom .footnotes {
1768
- border-top: 1px solid var(--seed-ink) !important;
1769
- font-size: 9pt !important;
1770
- }
1771
-
1772
- /* ── 6.15 分页控制 ── */
1773
- body.theme-custom h1 {
1774
- page-break-before: avoid;
1775
- }
1776
-
1777
- body.theme-custom h2,
1778
- body.theme-custom h3,
1779
- body.theme-custom h4,
1780
- body.theme-custom h5,
1781
- body.theme-custom h6 {
1782
- page-break-after: avoid;
1783
- }
1784
-
1785
- body.theme-custom table,
1786
- body.theme-custom figure,
1787
- body.theme-custom img {
1788
- page-break-inside: avoid;
1789
- }
1790
-
1791
- body.theme-custom p {
1792
- orphans: 3;
1793
- widows: 3;
1794
- }
1795
-
1796
- /* ── 6.16 防止内容溢出 ── */
1797
- body.theme-custom pre,
1798
- body.theme-custom .md-fences,
1799
- body.theme-custom .mermaid-block,
1800
- body.theme-custom .md-diagram-panel {
1801
- overflow: visible !important;
1802
- white-space: pre-wrap !important;
1803
- word-wrap: break-word !important;
1804
- }
1805
- }
1
+ /*
2
+ * ColaMD Theme: academic-paper-pt
3
+ * 学术论文(GB/T 7713)打印导向变体 — 纯白底、近黑正文、宋体正文 + 黑体标题、三线表
4
+ * 契约:ColaMD Extend 2.7(CodeMirror 6 + Pele)
5
+ *
6
+ * 原打印版字号已全部换算为 px:
7
+ * 正文 16px、一级节 21px、论文题目 32px、代码/表格 14px、脚注 12px。
8
+ *
9
+ * 变量一律写在 :root;编辑器里没有 <h1>/<blockquote> 元素,
10
+ * 标题是带类的一行,引用/代码块是每行一个 div(禁止纵向 padding)。
11
+ */
12
+
13
+ :root {
14
+ /* ── 1.1 Seed Palette — 灰度学术色板 ── */
15
+ --seed-accent: #000000;
16
+ --seed-accent-light: #e0e0e0;
17
+ --seed-accent-dark: #000000;
18
+ --seed-surface: #ffffff;
19
+ --seed-panel: #f5f5f5;
20
+ --seed-panel-alt: #eeeeee;
21
+ --seed-ink: #000000;
22
+ --seed-ink-muted: #333333;
23
+ --seed-ink-dim: #666666;
24
+ --seed-border: #000000;
25
+ --seed-border-strong: #000000;
26
+
27
+ /* ── 1.2 Semantic Colors(活变量)── */
28
+ --bg-color: var(--seed-surface);
29
+ --text-color: var(--seed-ink);
30
+ --text-secondary: var(--seed-ink-muted);
31
+ --text-muted: var(--seed-ink-dim);
32
+ --border-color: #cccccc;
33
+ --link-color: var(--seed-ink); /* 印刷:链接黑字 + 下划线 */
34
+
35
+ --code-bg: var(--seed-panel-alt); /* 行内代码 #eeeeee */
36
+ --code-block-bg: var(--seed-panel); /* 代码块 #f5f5f5 */
37
+ --code-block-text: var(--seed-ink);
38
+
39
+ --blockquote-border: var(--seed-ink);
40
+ --blockquote-bg: #fafafa;
41
+ --table-header-bg: transparent; /* 三线表:表头不上底色 */
42
+
43
+ --selection-bg: rgba(0, 0, 0, 0.12);
44
+ --highlight-bg: var(--seed-accent-light);
45
+
46
+ /* ── 1.3 Typography & Metrics(活变量,打印字号换算)── */
47
+ --font-body: "SimSun", "Songti SC", "Source Han Serif SC", "Noto Serif SC",
48
+ Georgia, "Times New Roman", serif;
49
+ --font-mono: "Courier New", "Consolas", "Source Code Pro", monospace;
50
+ --editor-font-size: 16px; /* 小四号正文 */
51
+ --editor-column-width: 794px; /* A4 版心列宽 */
52
+
53
+ /* ── 1.4 Pele 图表 — 白底黑线灰度,印刷友好 ── */
54
+ --pele-bg: var(--code-block-bg);
55
+ --pele-fg: var(--code-block-text);
56
+ --pele-muted: var(--seed-ink-dim);
57
+ --pele-line: var(--seed-ink);
58
+ --pele-surface: var(--seed-panel-alt);
59
+ --pele-surface-alt: var(--seed-accent-light);
60
+ --pele-border: var(--seed-ink);
61
+ --pele-accent: var(--seed-ink);
62
+ --pele-radius: 0px;
63
+ }
64
+
65
+ /* ═══════════════════════════════════════════════════════════
66
+ SECTION 2 — 编辑器 DOM(#editor .cm-content + .cm-md-*)
67
+ ═══════════════════════════════════════════════════════════ */
68
+
69
+ #editor .cm-content {
70
+ font-family: var(--font-body);
71
+ font-size: var(--editor-font-size);
72
+ line-height: 1.5;
73
+ text-align: justify;
74
+ }
75
+
76
+ /* ── 2.1 标题:黑体,按印刷字号——题目 32px 居中,一级节 21px ── */
77
+ #editor .cm-content .cm-md-atxheading1,
78
+ #editor .cm-content .cm-md-atxheading2,
79
+ #editor .cm-content .cm-md-atxheading3,
80
+ #editor .cm-content .cm-md-atxheading4,
81
+ #editor .cm-content .cm-md-atxheading5,
82
+ #editor .cm-content .cm-md-atxheading6 {
83
+ font-family: "SimHei", "Heiti SC", "Source Han Sans SC", "Noto Sans SC",
84
+ "Microsoft YaHei", Arial, sans-serif;
85
+ color: var(--text-color);
86
+ font-weight: 700;
87
+ line-height: 1.35;
88
+ border-bottom: none;
89
+ padding-bottom: 0;
90
+ }
91
+
92
+ #editor .cm-content .cm-md-atxheading1 { font-size: 32px; text-align: center; margin: 32px 0 24px; }
93
+ #editor .cm-content .cm-md-atxheading2 { font-size: 21px; margin: 26px 0 14px; }
94
+ #editor .cm-content .cm-md-atxheading3 { font-size: 16px; margin: 18px 0 10px; }
95
+ #editor .cm-content .cm-md-atxheading4 { font-size: 16px; margin: 18px 0 8px; }
96
+ #editor .cm-content .cm-md-atxheading5 { font-size: 14px; margin: 16px 0 6px; }
97
+ #editor .cm-content .cm-md-atxheading6 { font-size: 14px; margin: 14px 0 6px; }
98
+
99
+ /* ── 2.2 行内强调 ── */
100
+ #editor .cm-content .cm-md-strong { color: var(--text-color); font-weight: 700; }
101
+ #editor .cm-content .cm-md-em { font-style: italic; }
102
+ #editor .cm-content .cm-md-strike { color: var(--text-muted); text-decoration: line-through; }
103
+ #editor .cm-content .cm-md-highlight { background: var(--highlight-bg); }
104
+
105
+ /* ── 2.3 链接:黑字 + 底横线 ── */
106
+ #editor .cm-content .cm-md-link {
107
+ color: var(--link-color);
108
+ text-decoration: none;
109
+ border-bottom: 1px solid var(--link-color);
110
+ }
111
+ #editor .cm-content .cm-md-url { color: var(--text-muted); }
112
+
113
+ #editor .cm-content .cm-md-inlinecode {
114
+ font-family: var(--font-mono);
115
+ font-size: 14px; /* 五号 */
116
+ background: var(--code-bg);
117
+ color: var(--text-color);
118
+ border-radius: 0;
119
+ padding: 0 4px;
120
+ }
121
+
122
+ #editor .cm-content .cm-md-marker,
123
+ #editor .cm-content .cm-md-quotemark,
124
+ #editor .cm-content .cm-md-listmark {
125
+ color: var(--text-muted);
126
+ font-family: var(--font-body);
127
+ }
128
+
129
+ /* ── 2.4 引用块:浅灰底 + 黑色左竖线(每行一个 div,只设左右内边距)── */
130
+ #editor .cm-content .cm-md-blockquote {
131
+ background: var(--blockquote-bg);
132
+ color: var(--text-color);
133
+ font-size: 14px; /* 五号 */
134
+ border-left: 3px solid var(--blockquote-border);
135
+ padding-left: 20px;
136
+ padding-right: 16px;
137
+ }
138
+
139
+ /* ── 2.5 代码块:浅灰底 + 1px 细框,直角 ── */
140
+ #editor .cm-content .cm-md-codeblock {
141
+ background: var(--code-block-bg);
142
+ color: var(--code-block-text);
143
+ font-family: var(--font-mono);
144
+ font-size: 14px; /* 五号 */
145
+ line-height: 1.5;
146
+ border-left: 1px solid var(--border-color);
147
+ border-right: 1px solid var(--border-color);
148
+ padding-left: 18px;
149
+ padding-right: 18px;
150
+ }
151
+ #editor .cm-content .cm-md-codeblock-first {
152
+ border-top: 1px solid var(--border-color);
153
+ border-top-left-radius: 0;
154
+ border-top-right-radius: 0;
155
+ }
156
+ #editor .cm-content .cm-md-codeblock-last {
157
+ border-bottom: 1px solid var(--border-color);
158
+ border-bottom-left-radius: 0;
159
+ border-bottom-right-radius: 0;
160
+ }
161
+
162
+ /* ── 2.6 表格:三线表(2px 顶/底线 + 1px 表头线,无竖线)── */
163
+ #editor .cm-content .cm-md-table-widget table {
164
+ border-collapse: collapse;
165
+ border-top: 2px solid var(--text-color);
166
+ border-bottom: 2px solid var(--text-color);
167
+ }
168
+ #editor .cm-content .cm-md-table-widget th,
169
+ #editor .cm-content .cm-md-table-widget td {
170
+ border-left: none;
171
+ border-right: none;
172
+ font-size: 14px; /* 五号 */
173
+ line-height: 1.5;
174
+ padding: 8px 10px;
175
+ }
176
+ #editor .cm-content .cm-md-table-widget th {
177
+ background: var(--table-header-bg);
178
+ font-family: "SimHei", "Heiti SC", "Source Han Sans SC", "Noto Sans SC",
179
+ "Microsoft YaHei", Arial, sans-serif;
180
+ font-weight: 700;
181
+ text-align: center;
182
+ border-bottom: 1px solid var(--text-color);
183
+ }
184
+ #editor .cm-content .cm-md-table-widget td { text-align: left; border-bottom: none; }
185
+
186
+ /* ── 2.7 分隔线 ── */
187
+ #editor .cm-content .cm-md-hr { border-top: 1px solid var(--text-color); margin: 32px 0; }
188
+
189
+ /* ── 2.8 中文首行缩进:段落行 2em,其余行归零 ── */
190
+ #editor .cm-content .cm-line { text-indent: 2em; }
191
+
192
+ #editor .cm-content .cm-md-atxheading1,
193
+ #editor .cm-content .cm-md-atxheading2,
194
+ #editor .cm-content .cm-md-atxheading3,
195
+ #editor .cm-content .cm-md-atxheading4,
196
+ #editor .cm-content .cm-md-atxheading5,
197
+ #editor .cm-content .cm-md-atxheading6,
198
+ #editor .cm-content .cm-md-blockquote,
199
+ #editor .cm-content .cm-md-codeblock,
200
+ #editor .cm-content .cm-md-hr,
201
+ #editor .cm-content .cm-md-mermaid,
202
+ #editor .cm-content .cm-md-li-0,
203
+ #editor .cm-content .cm-md-li-1,
204
+ #editor .cm-content .cm-md-li-2,
205
+ #editor .cm-content .cm-md-li-3,
206
+ #editor .cm-content .cm-md-li-4,
207
+ #editor .cm-content .cm-md-li-5,
208
+ #editor .cm-content .cm-md-li-6 {
209
+ text-indent: 0;
210
+ }
211
+
212
+ /* ═══════════════════════════════════════════════════════════
213
+ SECTION 3 — 导出 HTML(.colamd-document,语义标签)
214
+ document.css 负责结构,这里只补学术论文配色与三线表。
215
+ ═══════════════════════════════════════════════════════════ */
216
+
217
+ .colamd-document {
218
+ font-family: var(--font-body);
219
+ font-size: var(--editor-font-size);
220
+ line-height: 1.5;
221
+ text-align: justify;
222
+ }
223
+
224
+ .colamd-document h1,
225
+ .colamd-document h2,
226
+ .colamd-document h3,
227
+ .colamd-document h4,
228
+ .colamd-document h5,
229
+ .colamd-document h6 {
230
+ font-family: "SimHei", "Heiti SC", "Source Han Sans SC", "Noto Sans SC",
231
+ "Microsoft YaHei", Arial, sans-serif;
232
+ color: var(--text-color);
233
+ font-weight: 700;
234
+ line-height: 1.35;
235
+ text-indent: 0;
236
+ }
237
+ .colamd-document h1 { text-align: center; }
238
+
239
+ .colamd-document strong { color: var(--text-color); font-weight: 700; }
240
+ .colamd-document em { font-style: italic; }
241
+ .colamd-document del { color: var(--text-muted); text-decoration: line-through; }
242
+ .colamd-document mark { background: var(--highlight-bg); color: var(--text-color); padding: 1px 4px; }
243
+ .colamd-document a {
244
+ color: var(--link-color);
245
+ text-decoration: none;
246
+ border-bottom: 1px solid var(--link-color);
247
+ }
248
+
249
+ .colamd-document code {
250
+ font-family: var(--font-mono);
251
+ font-size: 14px; /* 五号 */
252
+ background: var(--code-bg);
253
+ color: var(--text-color);
254
+ border-radius: 0;
255
+ padding: 1px 6px;
256
+ }
257
+ .colamd-document pre {
258
+ font-family: var(--font-mono);
259
+ font-size: 14px; /* 五号 */
260
+ line-height: 1.5;
261
+ background: var(--code-block-bg);
262
+ border: 1px solid var(--border-color);
263
+ border-radius: 0;
264
+ padding: 14px 18px;
265
+ margin: 16px 0;
266
+ overflow-x: auto;
267
+ text-align: left;
268
+ }
269
+ .colamd-document pre code { background: transparent; color: var(--code-block-text); padding: 0; }
270
+
271
+ .colamd-document blockquote {
272
+ margin: 10px 0;
273
+ padding: 10px 16px 10px 20px;
274
+ background: var(--blockquote-bg);
275
+ color: var(--text-color);
276
+ border-left: 3px solid var(--blockquote-border);
277
+ font-size: 14px; /* 五号 */
278
+ }
279
+ .colamd-document blockquote p { margin: 4px 0; text-indent: 0; }
280
+
281
+ .colamd-document table {
282
+ width: 100%;
283
+ margin: 18px auto;
284
+ border-collapse: collapse;
285
+ border-top: 2px solid var(--text-color);
286
+ border-bottom: 2px solid var(--text-color);
287
+ font-size: 14px; /* 五号 */
288
+ line-height: 1.5;
289
+ }
290
+ .colamd-document th,
291
+ .colamd-document td {
292
+ border-left: none;
293
+ border-right: none;
294
+ padding: 8px 10px;
295
+ text-indent: 0;
296
+ }
297
+ .colamd-document th {
298
+ background: var(--table-header-bg);
299
+ font-family: "SimHei", "Heiti SC", "Source Han Sans SC", "Noto Sans SC",
300
+ "Microsoft YaHei", Arial, sans-serif;
301
+ font-weight: 700;
302
+ text-align: center;
303
+ vertical-align: middle;
304
+ border-bottom: 1px solid var(--text-color);
305
+ }
306
+ .colamd-document td { text-align: left; vertical-align: top; border-bottom: none; }
307
+
308
+ .colamd-document figure { margin: 16px 0; text-align: center; }
309
+ .colamd-document img { max-width: 100%; border-radius: 0; }
310
+ .colamd-document figcaption,
311
+ .colamd-document caption {
312
+ font-family: var(--font-body);
313
+ font-size: 14px; /* 五号 */
314
+ line-height: 1.5;
315
+ color: var(--text-color);
316
+ text-align: center;
317
+ text-indent: 0;
318
+ margin-top: 8px;
319
+ }
320
+
321
+ .colamd-document hr { border: none; border-top: 1px solid var(--text-color); margin: 32px 0; }
322
+
323
+ /* 脚注 / 参考文献:小五号 12px,悬挂缩进 */
324
+ .colamd-document .footnotes {
325
+ margin-top: 32px;
326
+ padding-top: 16px;
327
+ border-top: 1px solid var(--text-color);
328
+ font-size: 12px;
329
+ }
330
+ .colamd-document .footnotes li { text-indent: -2em; padding-left: 2em; margin-bottom: 6px; }
331
+
332
+ .colamd-document p { margin: 0; text-indent: 2em; text-align: justify; }
333
+ .colamd-document li p,
334
+ .colamd-document td p,
335
+ .colamd-document th p,
336
+ .colamd-document blockquote p,
337
+ .colamd-document figcaption p {
338
+ text-indent: 0;
339
+ }
340
+
341
+ /* ═══════════════════════════════════════════════════════════
342
+ SECTION 4 — 打印(仅保真块)
343
+ ═══════════════════════════════════════════════════════════ */
344
+
345
+ @media print {
346
+ html,
347
+ body {
348
+ background: var(--bg-color);
349
+ color: var(--text-color);
350
+ -webkit-print-color-adjust: exact;
351
+ print-color-adjust: exact;
352
+ }
353
+ }