@bytechain.cn/colamd-themes 0.3.2 → 0.5.1

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 (99) 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 -37
  7. package/.opencode/skills/colamd-themes/SKILL.md +17 -0
  8. package/.trae/rules/colamd-themes.md +0 -36
  9. package/CHANGELOG.md +331 -241
  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 -389
  14. package/dist/cli.js +36 -55
  15. package/dist/cli.js.map +1 -1
  16. package/dist/color-utils.d.ts +1 -0
  17. package/dist/color-utils.js +25 -6
  18. package/dist/color-utils.js.map +1 -1
  19. package/dist/extractors/pdf-extractor.js +6 -1
  20. package/dist/extractors/pdf-extractor.js.map +1 -1
  21. package/dist/extractors/url-extractor.d.ts +0 -4
  22. package/dist/extractors/url-extractor.js +13 -126
  23. package/dist/extractors/url-extractor.js.map +1 -1
  24. package/dist/generator.d.ts +1 -1
  25. package/dist/generator.js +32 -11
  26. package/dist/generator.js.map +1 -1
  27. package/dist/models.d.ts +5 -4
  28. package/dist/models.js +2 -3
  29. package/dist/models.js.map +1 -1
  30. package/dist/renderer.d.ts +6 -3
  31. package/dist/renderer.js +54 -93
  32. package/dist/renderer.js.map +1 -1
  33. package/dist/templates/template.css +220 -498
  34. package/dist/templates/theme-paradigm.md +530 -658
  35. package/dist/templates/theme-template.hbs +256 -370
  36. package/dist/theme-store.js +19 -3
  37. package/dist/theme-store.js.map +1 -1
  38. package/dist/utils/document-paradigm.d.ts +12 -0
  39. package/dist/utils/document-paradigm.js +109 -0
  40. package/dist/utils/document-paradigm.js.map +1 -0
  41. package/dist/validators.d.ts +4 -1
  42. package/dist/validators.js +115 -1
  43. package/dist/validators.js.map +1 -1
  44. package/mcp-server/dist/index.d.ts +13 -0
  45. package/mcp-server/dist/index.d.ts.map +1 -0
  46. package/mcp-server/dist/index.js +0 -0
  47. package/mcp-server/dist/index.js.map +1 -0
  48. package/mcp-server/package-lock.json +1759 -0
  49. package/mcp-server/package.json +24 -0
  50. package/mcp-server/src/index.ts +0 -0
  51. package/mcp-server/tsconfig.json +19 -0
  52. package/package.json +54 -36
  53. package/skills/build-skills.sh +30 -5
  54. package/skills/colamd-themes/SKILL.md +180 -178
  55. package/src/cli.ts +474 -487
  56. package/src/color-systems.ts +289 -289
  57. package/src/color-utils.ts +137 -120
  58. package/src/contrast.ts +66 -66
  59. package/src/docx-style-paradigm.ts +811 -811
  60. package/src/export-cli.ts +356 -356
  61. package/src/extractors/base.ts +8 -8
  62. package/src/extractors/docx-extractor.ts +417 -417
  63. package/src/extractors/pdf-extractor.ts +533 -527
  64. package/src/extractors/url-extractor.ts +846 -981
  65. package/src/generator.ts +197 -169
  66. package/src/index.ts +29 -29
  67. package/src/models.ts +212 -212
  68. package/src/renderer.ts +310 -359
  69. package/src/templates/template.css +220 -498
  70. package/src/templates/theme-paradigm.md +530 -658
  71. package/src/templates/theme-template.hbs +256 -370
  72. package/src/theme-store.ts +185 -170
  73. package/src/types/pdf-parse.d.ts +12 -12
  74. package/src/utils/cli-utils.ts +84 -84
  75. package/src/utils/document-paradigm.ts +118 -0
  76. package/src/validators.ts +298 -176
  77. package/themes/academic-paper-pt.css +353 -1805
  78. package/themes/academic-paper.css +350 -1099
  79. package/themes/academic-style.css +342 -2430
  80. package/themes/colly.css +256 -370
  81. package/themes/elegant.css +288 -671
  82. package/themes/forest-ink.css +240 -664
  83. package/themes/guizang.css +250 -732
  84. package/themes/hermes-security.css +279 -0
  85. package/themes/meeting-minutes.css +256 -370
  86. package/themes/pixso-design.css +278 -1261
  87. package/themes/salvator-blog.css +256 -370
  88. package/themes/shimo-theme.css +256 -0
  89. package/themes/swiss-design.css +285 -746
  90. package/themes/template.css +220 -498
  91. package/themes/trae-blue.css +280 -737
  92. package/themes/word-contract.css +249 -0
  93. package/themes-preview/demo-content.md +187 -187
  94. package/tsconfig.json +18 -18
  95. package/src/mermaid-presets.ts +0 -142
  96. package/themes/swiss-design copy.css +0 -746
  97. package/themes-preview/colly-preview.html +0 -623
  98. package/themes-preview/meeting-minutes-preview.html +0 -625
  99. package/themes-preview/salvator-blog-preview.html +0 -623
@@ -1,1261 +1,278 @@
1
- /*
2
- * ColaMD 主题:Pixso Design (设计美学)
3
- * 配色:纯净白底 + 渐变蓝紫点缀
4
- * 风格:现代简约、大量留白、精致布局
5
- * 兼容:ColaMD (body.theme-custom) / Typora
6
- * 导入:Theme > Import Theme
7
- */
8
-
9
- /* ── 1. 根变量 & 主题变量 ── */
10
- :root {
11
- --side-bar-bg-color: #f7f8fa;
12
- --control-text-color: #5a6270;
13
- --active-file-bg-color: #e8ecf2;
14
- --active-file-text-color: #1e2330;
15
- --active-file-border-color: #6366f1;
16
- --bg-color: #ffffff;
17
- --text-color: #2d3436;
18
- --select-text-bg-color: rgba(99, 102, 241, 0.15);
19
- --select-text-font-color: #1e2330;
20
- --rawblock-edit-panel-bd: #e5e7eb;
21
- }
22
-
23
- body.theme-custom {
24
- --bg-color: #f8f9fb;
25
- --text-color: #2d3436;
26
- --heading-color: #1a1d26;
27
- --border-color: #e5e7eb;
28
- --code-bg: #f4f5f7;
29
- --code-color: #6366f1;
30
- --code-block-bg: #1e2235;
31
- --code-block-text: #e4e7ed;
32
- --code-block-color: #e4e7ed;
33
- --blockquote-bg: #f9fafb;
34
- --blockquote-border: linear-gradient(180deg, #6366f1, #8b5cf6);
35
- --link-color: #6366f1;
36
- --accent-color: #6366f1;
37
- --accent-dark: #4f46e5;
38
- --accent-light: #eef2ff;
39
- --surface-color: #f9fafb;
40
- --surface-alt: #f8f9fb;
41
- --text-muted: #6b7280;
42
- --text-dim: #9ca3af;
43
- --selection-bg: rgba(99, 102, 241, 0.12);
44
- --table-header-bg: #f9fafb;
45
- --table-stripe: rgba(99, 102, 241, 0.03);
46
- --scrollbar-thumb: #d1d5db;
47
- --scrollbar-thumb-hover: #9ca3af;
48
- --hr-color: #e5e7eb;
49
- --mermaid-font-family: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
50
- --mermaid-font-size: 13px;
51
- --mermaid-dark-mode: false;
52
- --mermaid-background: linear-gradient(135deg, #f8f9fb 0%, #eef2ff 50%, #fdf4ff 100%);
53
- --mermaid-primary-color: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
54
- --mermaid-primary-border-color: #4f46e5;
55
- --mermaid-primary-text-color: #ffffff;
56
- --mermaid-secondary-color: linear-gradient(135deg, #ec4899 0%, #f43f5e 100%);
57
- --mermaid-secondary-border-color: #db2777;
58
- --mermaid-secondary-text-color: #ffffff;
59
-
60
- --mermaid-tertiary-color: linear-gradient(135deg, #06b6d4 0%, #3b82f6 100%);
61
- --mermaid-tertiary-border-color: #0891b2;
62
- --mermaid-tertiary-text-color: #ffffff;
63
- --mermaid-line-color: linear-gradient(90deg, #6366f1, #8b5cf6, #a78bfa);
64
- --mermaid-text-color: #1e1b4b;
65
- --mermaid-main-bkg: linear-gradient(135deg, #e0e7ff 0%, #c7d2fe 100%);
66
- --mermaid-second-bkg: linear-gradient(135deg, #ede9fe 0%, #ddd6fe 100%);
67
- --mermaid-main-contrast-color: #4f46e5;
68
- --mermaid-label-background: linear-gradient(135deg, #f0f4ff 0%, #faf5ff 100%);
69
- --mermaid-label-text-color: #374151;
70
- --mermaid-node-border: #4f46e5;
71
- --mermaid-node-bkg: linear-gradient(145deg, #818cf8 0%, #6366f1 50%, #4f46e5 100%);
72
- --mermaid-cluster-bkg: rgba(99, 102, 241, 0.08);
73
- --mermaid-cluster-border: linear-gradient(90deg, #6366f1, #8b5cf6);
74
- --mermaid-default-link-color: #a78bfa;
75
- --mermaid-edge-label-background: linear-gradient(135deg, #dbeafe 0%, #fce7f3 100%);
76
- --mermaid-arrowhead-color: #6366f1;
77
-
78
- /* 多彩调色板 */
79
- --mermaid-accent-pink: linear-gradient(135deg, #ec4899 0%, #f472b6 100%);
80
- --mermaid-accent-cyan: linear-gradient(135deg, #06b6d4 0%, #22d3ee 100%);
81
- --mermaid-accent-emerald: linear-gradient(135deg, #10b981 0%, #34d399 100%);
82
- --mermaid-accent-amber: linear-gradient(135deg, #f59e0b 0%, #fbbf24 100%);
83
- --mermaid-accent-rose: linear-gradient(135deg, #f43f5e 0%, #fb7185 100%);
84
-
85
- --mermaid-person-border: #4f46e5;
86
- --mermaid-person-bkg: linear-gradient(135deg, #818cf8 0%, #a78bfa 100%);
87
- }
88
-
89
- pre { --select-text-bg-color: #2d2640; --select-text-font-color: #fff; }
90
-
91
- /* ── 2. 全局 ── */
92
- html {
93
- font-size: 16px;
94
- -webkit-font-smoothing: antialiased;
95
- -moz-osx-font-smoothing: grayscale;
96
- }
97
-
98
- body.theme-custom,
99
- html,
100
- body {
101
- background-color: #f8f9fb;
102
- color: #2d3436;
103
- font-family: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
104
- line-height: 1.85;
105
- }
106
-
107
- body.theme-custom {
108
- -webkit-font-smoothing: antialiased;
109
- letter-spacing: 0.01em;
110
- }
111
-
112
- #write {
113
- max-width: 800px;
114
- margin: 0 auto;
115
- padding: 40px 60px 120px;
116
- }
117
-
118
- #write > ul:first-child,
119
- #write > ol:first-child {
120
- margin-top: 40px;
121
- }
122
-
123
- @media only screen and (min-width:1400px) {
124
- #write { max-width: 900px; }
125
- }
126
-
127
- @media only screen and (max-width:768px) {
128
- #write { padding: 30px 25px 80px; }
129
- }
130
-
131
- /* ── 3. 标题 ── */
132
- h1, h2, h3, h4, h5, h6,
133
- body.theme-custom h1, body.theme-custom h2, body.theme-custom h3,
134
- body.theme-custom h4, body.theme-custom h5, body.theme-custom h6 {
135
- position: relative;
136
- color: #1a1d26;
137
- font-weight: 700;
138
- line-height: 1.35;
139
- margin-top: 2.2em;
140
- margin-bottom: 0.75em;
141
- letter-spacing: -0.02em;
142
- }
143
-
144
- h1, body.theme-custom h1 {
145
- font-size: 2em;
146
- padding-bottom: 0.35em;
147
- cursor: text;
148
- background: linear-gradient(135deg, #1a1d26 0%, #4338ca 100%);
149
- -webkit-background-clip: text;
150
- background-clip: text;
151
- -webkit-text-fill-color: transparent;
152
- color: #1a1d26;
153
- }
154
-
155
- h2, body.theme-custom h2 {
156
- font-size: 1.55em;
157
- padding-bottom: 0.25em;
158
- cursor: text;
159
- border-bottom: none;
160
- position: relative;
161
- display: block;
162
- }
163
-
164
- h2::after,
165
- body.theme-custom h2::after {
166
- content: '';
167
- position: absolute;
168
- left: 0;
169
- bottom: 0.15em;
170
- width: 60%;
171
- height: 3px;
172
- background: linear-gradient(90deg, #6366f1, #8b5cf6);
173
- border-radius: 2px;
174
- }
175
-
176
- h3, body.theme-custom h3 {
177
- font-size: 1.28em;
178
- cursor: text;
179
- color: #283149;
180
- }
181
-
182
- h4, body.theme-custom h4 {
183
- font-size: 1.12em;
184
- cursor: text;
185
- font-weight: 600;
186
- }
187
-
188
- h5, body.theme-custom h5 {
189
- font-size: 1em;
190
- cursor: text;
191
- font-weight: 600;
192
- color: #374151;
193
- }
194
-
195
- h6, body.theme-custom h6 {
196
- font-size: 0.92em;
197
- color: #6b7280;
198
- cursor: text;
199
- font-weight: 500;
200
- }
201
-
202
- h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor,
203
- h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {
204
- text-decoration: none;
205
- }
206
-
207
- /* ── 4. 内联元素 ── */
208
- p {
209
- margin: 1em 0;
210
- line-height: 1.85;
211
- text-align: justify;
212
- }
213
-
214
- strong, body.theme-custom strong {
215
- color: #4338ca;
216
- font-weight: 700;
217
- }
218
-
219
- em, body.theme-custom em {
220
- font-style: italic;
221
- color: #4b5563;
222
- }
223
-
224
- em strong, strong em,
225
- body.theme-custom em strong, body.theme-custom strong em {
226
- color: #4338ca;
227
- }
228
-
229
- a, body.theme-custom a {
230
- color: #6366f1;
231
- text-decoration: none;
232
- transition: all 0.2s ease;
233
- border-bottom: 1px solid transparent;
234
- border-bottom-color: rgba(99, 102, 241, 0.35);
235
- }
236
-
237
- a:hover, body.theme-custom a:hover {
238
- color: #4f46e5;
239
- border-bottom-color: #4f46e5;
240
- text-decoration: none;
241
- }
242
-
243
- u, body.theme-custom u {
244
- text-decoration: none;
245
- border-bottom: 2px solid #6366f1;
246
- padding-bottom: 1px;
247
- opacity: 0.85;
248
- }
249
-
250
- mark, body.theme-custom mark {
251
- background: linear-gradient(120deg, rgba(99, 102, 241, 0.14) 0%, rgba(139, 92, 246, 0.14) 100%);
252
- color: #2d3436;
253
- padding: 2px 6px;
254
- border-radius: 3px;
255
- }
256
-
257
- del, s {
258
- color: #9ca3af;
259
- }
260
-
261
- /* ── 5. 引用�?── */
262
- blockquote, body.theme-custom blockquote {
263
- margin: 1.8em 0;
264
- padding: 20px 24px 20px 28px;
265
- border-left: none;
266
- position: relative;
267
- background: linear-gradient(135deg, #f8f9ff 0%, #fdf4ff 100%);
268
- color: #4b5563;
269
- border-radius: 10px;
270
- box-shadow: 0 2px 12px rgba(99, 102, 241, 0.06);
271
- }
272
-
273
- blockquote::before,
274
- body.theme-custom blockquote::before {
275
- content: '';
276
- position: absolute;
277
- left: 0;
278
- top: 0;
279
- bottom: 0;
280
- width: 4px;
281
- background: linear-gradient(180deg, #6366f1, #8b5cf6);
282
- border-radius: 10px 0 0 10px;
283
- }
284
-
285
- blockquote p, body.theme-custom blockquote p {
286
- margin: 0.6em 0;
287
- line-height: 1.75;
288
- }
289
-
290
- /* ── 6. 分割�?── */
291
- hr, body.theme-custom hr {
292
- border: none;
293
- height: 1px;
294
- margin: 3em 0;
295
- background: linear-gradient(90deg, transparent, #e5e7eb 50%, transparent);
296
- }
297
-
298
- /* ── 7. 列表 ── */
299
- ul, ol, body.theme-custom ul, body.theme-custom ol {
300
- padding-left: 1.9em;
301
- margin: 1em 0;
302
- }
303
-
304
- li, body.theme-custom li {
305
- margin: 0.45em 0;
306
- line-height: 1.78;
307
- }
308
-
309
- ul li {
310
- list-style-type: disc;
311
- list-style-position: outside;
312
- }
313
-
314
- ol li {
315
- list-style-type: decimal;
316
- list-style-position: outside;
317
- }
318
-
319
- .md-task-list-item > input {
320
- margin-left: -1.3em;
321
- margin-top: 0.32em;
322
- }
323
-
324
- /* ── 8. 内联代码 ── */
325
- code, tt,
326
- body.theme-custom code, body.theme-custom tt {
327
- font-family: "JetBrains Mono", "Fira Code", "SF Mono", Menlo, Consolas, monospace;
328
- font-size: 0.88em;
329
- padding: 3px 7px;
330
- margin: 0 2px;
331
- background: #f4f5f7;
332
- border-radius: 5px;
333
- color: #6366f1;
334
- border: 1px solid rgba(99, 102, 241, 0.08);
335
- }
336
-
337
- /* ── 9. 代码�?── */
338
- pre.md-fences {
339
- font-family: "JetBrains Mono", "Fira Code", "SF Mono", Menlo, Consolas, monospace;
340
- font-size: 0.88em;
341
- line-height: 1.68;
342
- background: linear-gradient(145deg, #1e2235 0%, #2a2040 100%);
343
- color: #e4e7ed;
344
- padding: 22px 26px;
345
- border-radius: 10px;
346
- margin: 1.8em 0;
347
- overflow-x: auto;
348
- box-shadow: 0 8px 30px rgba(0, 0, 0, 0.18), inset 0 1px 0 rgba(255,255,255,0.05);
349
- border: 1px solid rgba(99, 102, 241, 0.15);
350
- }
351
-
352
- pre.md-fences code {
353
- background: transparent;
354
- color: inherit;
355
- padding: 0;
356
- margin: 0;
357
- border-radius: 0;
358
- border: none;
359
- }
360
-
361
- body.theme-custom #editor .ProseMirror pre {
362
- font-family: "JetBrains Mono", "Fira Code", "SF Mono", Menlo, Consolas, monospace;
363
- font-size: 0.88em;
364
- line-height: 1.68;
365
- background: linear-gradient(145deg, #1e2235 0%, #2a2040 100%) !important;
366
- color: #e4e7ed !important;
367
- padding: 22px 26px;
368
- border-radius: 10px;
369
- margin: 1.8em 0;
370
- overflow-x: auto;
371
- box-shadow: 0 8px 30px rgba(0, 0, 0, 0.18), inset 0 1px 0 rgba(255,255,255,0.05);
372
- border: 1px solid rgba(99, 102, 241, 0.15);
373
- }
374
-
375
- body.theme-custom #editor .ProseMirror pre code {
376
- background: transparent !important;
377
- color: inherit !important;
378
- padding: 0;
379
- margin: 0;
380
- border-radius: 0;
381
- border: none;
382
- }
383
-
384
- /* ── 10. 代码语法高亮 ── */
385
- .cm-s-inner {
386
- font-family: "JetBrains Mono", "Fira Code", "SF Mono", monospace;
387
- font-size: 0.9em;
388
- line-height: 1.68;
389
- }
390
-
391
- /* 注释 / 引用 / 分隔�?*/
392
- body.theme-custom .token.comment, body.theme-custom .token.prolog,
393
- body.theme-custom .token.doctype, body.theme-custom .token.cdata,
394
- .cm-s-inner .cm-comment, .cm-s-inner .cm-quote, .cm-s-inner .cm-hr {
395
- color: #7c83a6;
396
- font-style: italic;
397
- }
398
-
399
- /* 标点 / 元数�?*/
400
- body.theme-custom .token.punctuation, .cm-s-inner .cm-meta {
401
- color: #9ca3be;
402
- }
403
-
404
- /* 关键�?(粗体) */
405
- body.theme-custom .token.keyword, body.theme-custom .token.important,
406
- .cm-s-inner .cm-keyword {
407
- color: #a78bfa;
408
- font-weight: 700;
409
- }
410
-
411
- /* 布尔 / 内建 / 标签 / 选择�?/ 常量 / 删除 / 原子 / 错误 */
412
- body.theme-custom .token.boolean, body.theme-custom .token.builtin,
413
- body.theme-custom .token.tag, body.theme-custom .token.selector,
414
- body.theme-custom .token.constant, body.theme-custom .token.deleted,
415
- .cm-s-inner .cm-atom, .cm-s-inner .cm-builtin,
416
- .cm-s-inner .cm-tag, .cm-s-inner .cm-error {
417
- color: #f472b6;
418
- }
419
-
420
- /* 字符�?/ 属性�?/ 符号 / 插入 */
421
- body.theme-custom .token.string, body.theme-custom .token.attr-value,
422
- body.theme-custom .token.symbol, body.theme-custom .token.inserted,
423
- .cm-s-inner .cm-string {
424
- color: #34d399;
425
- }
426
-
427
- /* 数字 */
428
- body.theme-custom .token.number, .cm-s-inner .cm-number {
429
- color: #fbbf24;
430
- }
431
-
432
- /* 函数 / 类名 / 变量 / 属性名 / 实体 / 定义 */
433
- body.theme-custom .token.function, body.theme-custom .token.class-name,
434
- body.theme-custom .token.variable, body.theme-custom .token.attr-name,
435
- body.theme-custom .token.property, body.theme-custom .token.entity,
436
- .cm-s-inner .cm-def, .cm-s-inner .cm-variable-2,
437
- .cm-s-inner .cm-attribute, .cm-s-inner .cm-property,
438
- .cm-s-inner .cm-header {
439
- color: #60a5fa;
440
- }
441
-
442
- .cm-s-inner .cm-header {
443
- font-weight: 700;
444
- }
445
- body.theme-custom .token.url, .cm-s-inner .cm-link {
446
- color: #60a5fa;
447
- text-decoration: underline;
448
- }
449
-
450
- /* 运算�?*/
451
- body.theme-custom .token.operator, .cm-s-inner .cm-operator {
452
- color: #94a3b8;
453
- }
454
-
455
- /* 正则 / 代码文本�?*/
456
- body.theme-custom .token.regex { color: #fb923c; }
457
- .cm-s-inner .cm-variable { color: #e4e7ed; }
458
-
459
- /* ── 11. 表格 ── */
460
- table, body.theme-custom table {
461
- width: 100%;
462
- border-collapse: collapse;
463
- margin: 1.8em 0;
464
- font-size: 0.93em;
465
- border-radius: 10px;
466
- overflow: hidden;
467
- box-shadow: 0 4px 20px rgba(79, 70, 229, 0.08), 0 1px 3px rgba(0, 0, 0, 0.04);
468
- border: 2px solid #c7d2fe;
469
- }
470
-
471
- table th, body.theme-custom table th {
472
- background: linear-gradient(180deg, #4f46e5 0%, #6366f1 50%, #7c3aed 100%);
473
- font-weight: 700;
474
- color: #ffffff;
475
- padding: 14px 20px;
476
- border-right: 1px solid rgba(255, 255, 255, 0.15);
477
- border-bottom: 3px solid #3730a3;
478
- text-align: left;
479
- font-size: 0.95em;
480
- letter-spacing: 0.02em;
481
- text-transform: uppercase;
482
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
483
- position: relative;
484
- }
485
-
486
- table th:last-child,
487
- body.theme-custom table th:last-child {
488
- border-right: none;
489
- }
490
-
491
- table th::before,
492
- body.theme-custom table th::before {
493
- content: '';
494
- position: absolute;
495
- left: 0;
496
- top: 0;
497
- bottom: 0;
498
- width: 3px;
499
- background: linear-gradient(180deg, #fbbf24, #f59e0b);
500
- opacity: 0.9;
501
- }
502
-
503
- table td, body.theme-custom table td {
504
- padding: 13px 20px;
505
- border-right: 1px solid #e5e7eb;
506
- border-bottom: 1px solid #e5e7eb;
507
- transition: all 0.25s ease;
508
- color: #374151;
509
- }
510
-
511
- table td:last-child,
512
- body.theme-custom table td:last-child {
513
- border-right: none;
514
- }
515
-
516
- table tr:last-child td,
517
- body.theme-custom table tr:last-child td {
518
- border-bottom: none;
519
- }
520
-
521
- /* 斑马纹效果 */
522
- table tbody tr:nth-child(even) td,
523
- body.theme-custom table tbody tr:nth-child(even) td {
524
- background-color: rgba(99, 102, 241, 0.03);
525
- }
526
-
527
- table tbody tr:nth-child(odd) td,
528
- body.theme-custom table tbody tr:nth-child(odd) td {
529
- background-color: #ffffff;
530
- }
531
-
532
- /* 悬停效果 */
533
- table tbody tr:hover td,
534
- body.theme-custom table tbody tr:hover td {
535
- background: linear-gradient(90deg, rgba(99, 102, 241, 0.06), rgba(139, 92, 246, 0.04));
536
- color: #1e1b4b;
537
- transform: scale(1.005);
538
- box-shadow: inset 0 0 0 1px rgba(99, 102, 241, 0.12);
539
- }
540
-
541
- /* ── 12. 图片 ── */
542
- img, body.theme-custom img {
543
- max-width: 100%;
544
- border-radius: 10px;
545
- transition: transform 0.3s ease, box-shadow 0.3s ease;
546
- }
547
-
548
- img:hover, body.theme-custom img:hover {
549
- transform: scale(1.01);
550
- box-shadow: 0 8px 30px rgba(99, 102, 241, 0.12);
551
- }
552
-
553
- p > img:only-child, body.theme-custom p > img:only-child {
554
- display: block;
555
- margin: 2em auto;
556
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
557
- }
558
-
559
- body.theme-custom figure {
560
- margin: 2em 0;
561
- text-align: center;
562
- }
563
-
564
- body.theme-custom figcaption {
565
- font-size: 0.89em;
566
- color: var(--text-muted);
567
- margin-top: 0.8em;
568
- font-style: italic;
569
- }
570
-
571
- /* ── 13. 数学公式 ── */
572
-
573
- /* ColaMD */
574
- body.theme-custom .math-block {
575
- background: linear-gradient(135deg, #f8f9ff 0%, #fef4ff 100%);
576
- padding: 20px 0;
577
- margin: 1.8em 0;
578
- border-radius: 10px;
579
- border: 1px solid rgba(99, 102, 241, 0.1);
580
- text-align: center;
581
- overflow-x: auto;
582
- box-shadow: 0 2px 12px rgba(99, 102, 241, 0.05);
583
- }
584
-
585
- body.theme-custom .math-block .katex,
586
- body.theme-custom .math-block .katex-display,
587
- body.theme-custom .math-block .MathJax,
588
- body.theme-custom .math-block .katex *,
589
- body.theme-custom .math-block .MathJax *,
590
- body.theme-custom .math-block .katex .mord,
591
- body.theme-custom .math-block .katex .mbin,
592
- body.theme-custom .math-block .katex .mrel,
593
- body.theme-custom .math-block .katex .mopen,
594
- body.theme-custom .math-block .katex .mclose,
595
- body.theme-custom .math-block .katex .mpunct,
596
- body.theme-custom .math-block .katex .minner {
597
- color: #2d3436 !important;
598
- }
599
-
600
- /* Typora */
601
- .md-math-block, .MathJax_Display {
602
- margin: 1.8em 0 !important;
603
- text-align: center;
604
- }
605
-
606
- .md-inline-math, .md-inline-math script, .md-math-inline, .MathJax {
607
- color: #2d3436;
608
- }
609
-
610
- .MathJax svg, .MathJax_Display svg {
611
- fill: currentColor;
612
- stroke: currentColor;
613
- }
614
-
615
- /* ── 14. Mermaid ── */
616
-
617
- /* 容器 */
618
- .md-diagram-panel { margin: 1.8em 0; }
619
-
620
- .md-diagram-panel.md-mermaid,
621
- body.theme-custom .mermaid-block {
622
- background: linear-gradient(135deg, #f8f9fb 0%, #eef2ff 30%, #fdf4ff 60%, #fce7f3 100%);
623
- border: none;
624
- border-radius: 16px;
625
- padding: 28px;
626
- margin: 1.8em 0;
627
- box-shadow:
628
- 0 8px 32px rgba(99, 102, 241, 0.12),
629
- 0 2px 8px rgba(139, 92, 246, 0.08),
630
- inset 0 1px 0 rgba(255, 255, 255, 0.5);
631
- }
632
-
633
- body.theme-custom .mermaid-preview {
634
- background: transparent;
635
- border: none;
636
- padding: 0;
637
- margin: 0;
638
- }
639
-
640
- .md-diagram-panel.md-mermaid svg,
641
- body.theme-custom .mermaid-preview svg {
642
- max-width: 100%;
643
- height: auto;
644
- }
645
-
646
- /* 全局字体 */
647
- .md-diagram-panel.md-mermaid svg text,
648
- body.theme-custom .mermaid-preview svg text {
649
- fill: #1e1b4b;
650
- font-family: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;
651
- }
652
-
653
- body.theme-custom .mermaid-preview svg .nodeLabel span,
654
- body.theme-custom .mermaid-preview svg .edgeLabel span {
655
- font-family: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;
656
- }
657
-
658
- body.theme-custom .mermaid-preview svg foreignObject span {
659
- color: #1e1b4b !important;
660
- font-family: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif !important;
661
- font-size: 14px !important;
662
- }
663
-
664
- .md-diagram-panel.md-mermaid .node .label {
665
- color: #1e1b4b !important;
666
- font-family: "Inter", -apple-system, BlinkMacSystemFont, sans-serif !important;
667
- }
668
-
669
- /* 通用节点 & 连线 (ColaMD) */
670
- body.theme-custom .mermaid-preview svg .node rect,
671
- body.theme-custom .mermaid-preview svg .node circle,
672
- body.theme-custom .mermaid-preview svg .node ellipse,
673
- body.theme-custom .mermaid-preview svg .node polygon,
674
- body.theme-custom .mermaid-preview svg .node path {
675
- stroke: #4f46e5;
676
- stroke-width: 2px;
677
- fill: url(#nodeGradient) !important;
678
- filter: drop-shadow(0 2px 4px rgba(99, 102, 241, 0.25));
679
- }
680
-
681
- body.theme-custom .mermaid-preview svg defs {
682
- display: block;
683
- }
684
-
685
- body.theme-custom .mermaid-preview svg defs::after {
686
- content: '';
687
- display: none;
688
- }
689
-
690
- body.theme-custom .mermaid-preview svg .edgePath .path {
691
- stroke: url(#lineGradient);
692
- stroke-width: 2.5px;
693
- fill: none;
694
- }
695
-
696
- body.theme-custom .mermaid-preview svg .cluster rect,
697
- body.theme-custom .mermaid-preview svg .cluster path {
698
- stroke: #8b5cf6;
699
- stroke-width: 2px;
700
- fill: rgba(139, 92, 246, 0.06);
701
- stroke-dasharray: 8, 4;
702
- }
703
-
704
- body.theme-custom .mermaid-preview svg defs marker path {
705
- fill: #6366f1;
706
- stroke: #6366f1;
707
- }
708
-
709
- /* 通用节点 & 连线 (Typora) */
710
- .md-diagram-panel.md-mermaid .node rect,
711
- .md-diagram-panel.md-mermaid .node circle,
712
- .md-diagram-panel.md-mermaid .node ellipse,
713
- .md-diagram-panel.md-mermaid .node polygon {
714
- fill: #818cf8 !important;
715
- stroke: #4f46e5 !important;
716
- stroke-width: 2px !important;
717
- }
718
-
719
- .md-diagram-panel.md-mermaid .edgePath .path {
720
- stroke: #6366f1 !important;
721
- stroke-width: 2.5px !important;
722
- }
723
-
724
- .md-diagram-panel.md-mermaid .edgeLabel {
725
- background: linear-gradient(135deg, #fef3c7 0%, #fce7f3 100%) !important;
726
- color: #4c1d95 !important;
727
- }
728
-
729
- .md-diagram-panel.md-mermaid .cluster rect {
730
- fill: rgba(139, 92, 246, 0.1) !important;
731
- stroke: #8b5cf6 !important;
732
- stroke-width: 2px !important;
733
- stroke-dasharray: 8, 4;
734
- }
735
-
736
- /* 硬编码色值覆�?*/
737
- body.theme-custom .mermaid-preview svg rect[stroke="#444444"],
738
- body.theme-custom .mermaid-preview svg path[stroke="#444444"],
739
- body.theme-custom .mermaid-preview svg line[stroke="#444444"],
740
- body.theme-custom .mermaid-preview svg rect[stroke="#000000"],
741
- body.theme-custom .mermaid-preview svg path[stroke="#000000"],
742
- body.theme-custom .mermaid-preview svg line[stroke="#000000"] {
743
- stroke: #4f46e5 !important;
744
- }
745
-
746
- /* 标签 & 文本 (ColaMD) */
747
- body.theme-custom .mermaid-preview svg .label text,
748
- body.theme-custom .mermaid-preview svg .nodeLabel text {
749
- fill: #1e1b4b !important;
750
- }
751
-
752
- body.theme-custom .mermaid-preview svg .nodeLabel span {
753
- color: #1e1b4b !important;
754
- }
755
-
756
- body.theme-custom .mermaid-preview svg .edgeLabel text {
757
- fill: #4c1d95 !important;
758
- font-weight: 600;
759
- }
760
-
761
- body.theme-custom .mermaid-preview svg .edgeLabel rect {
762
- fill: linear-gradient(135deg, #fef3c7 0%, #fce7f3 100%) !important;
763
- stroke: #f59e0b !important;
764
- stroke-width: 1.5px;
765
- }
766
-
767
- body.theme-custom .mermaid-preview svg .edgeLabel span {
768
- color: #4c1d95 !important;
769
- }
770
-
771
- /* 文本偏移 */
772
- body.theme-custom .mermaid-preview svg .label text,
773
- body.theme-custom .mermaid-preview svg .nodeLabel text {
774
- transform: translateY(-3px) !important;
775
- }
776
-
777
- body.theme-custom .mermaid-preview svg .titleText {
778
- transform: translateY(-1px) !important;
779
- }
780
-
781
- body.theme-custom .mermaid-preview svg .xychart .axis text {
782
- transform: translateY(0) !important;
783
- }
784
-
785
- body.theme-custom .mermaid-preview svg .nodeLabel,
786
- body.theme-custom .mermaid-preview svg .edgeLabel {
787
- display: inline-block !important;
788
- position: relative !important;
789
- top: -3px !important;
790
- }
791
-
792
- /* 状态图 */
793
- body.theme-custom .mermaid-preview svg .statediagram-state rect,
794
- body.theme-custom .mermaid-preview svg .statediagram-state circle {
795
- stroke: #ec4899;
796
- stroke-width: 2.5px;
797
- fill: linear-gradient(135deg, #ec4899 0%, #f43f5e 100%) !important;
798
- filter: drop-shadow(0 3px 6px rgba(236, 72, 153, 0.3));
799
- }
800
-
801
- body.theme-custom .mermaid-preview svg .statediagram-state .nodeLabel text,
802
- body.theme-custom .mermaid-preview svg .statediagram-state .nodeLabel span,
803
- body.theme-custom .mermaid-preview svg .statediagram-cluster .outer-title text,
804
- body.theme-custom .mermaid-preview svg .edgeLabel .label text {
805
- fill: #ffffff !important;
806
- color: #ffffff !important;
807
- font-weight: 600;
808
- }
809
-
810
- body.theme-custom .mermaid-preview svg .statediagram-cluster rect {
811
- stroke: #6366f1;
812
- }
813
-
814
- body.theme-custom .mermaid-preview svg .transition {
815
- stroke: #c7d2fe;
816
- }
817
-
818
- /* 饼图 */
819
- body.theme-custom .mermaid-preview svg .pieCircle,
820
- body.theme-custom .mermaid-preview svg .slice {
821
- stroke: #ffffff;
822
- stroke-width: 2px;
823
- filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.15));
824
- }
825
-
826
- body.theme-custom .mermaid-preview svg .pieTitleText,
827
- body.theme-custom .mermaid-preview svg .legend text {
828
- fill: #1e1b4b !important;
829
- font-weight: 600;
830
- }
831
-
832
- /* 四象限图 */
833
- body.theme-custom .mermaid-preview svg .quadrant rect {
834
- stroke: #6366f1;
835
- stroke-width: 2px;
836
- }
837
-
838
- body.theme-custom .mermaid-preview svg .quadrant text,
839
- body.theme-custom .mermaid-preview svg .quadrant .titleText {
840
- fill: #1e1b4b !important;
841
- font-weight: 700;
842
- }
843
-
844
- body.theme-custom .mermaid-preview svg .quadrant .axis text {
845
- fill: #374151 !important;
846
- font-weight: 500;
847
- }
848
-
849
- body.theme-custom .mermaid-preview svg .quadrant .axis line,
850
- body.theme-custom .mermaid-preview svg .quadrant .axis path {
851
- stroke: #8b5cf6;
852
- stroke-width: 2px;
853
- }
854
-
855
- body.theme-custom .mermaid-preview svg .quadrant .point {
856
- fill: #ec4899;
857
- stroke: #ffffff;
858
- stroke-width: 2px;
859
- }
860
-
861
- /* XY Chart */
862
- body.theme-custom .mermaid-preview svg .xychart .axis text {
863
- fill: #4b5563 !important;
864
- font-weight: 500;
865
- }
866
-
867
- body.theme-custom .mermaid-preview svg .xychart .axis line,
868
- body.theme-custom .mermaid-preview svg .xychart .axis path {
869
- stroke: #8b5cf6;
870
- stroke-width: 2px;
871
- }
872
-
873
- body.theme-custom .mermaid-preview svg .xychart .plot rect {
874
- stroke: #4f46e5;
875
- stroke-width: 2px;
876
- fill: linear-gradient(180deg, #818cf8 0%, #6366f1 50%, #4f46e5 100%) !important;
877
- filter: drop-shadow(0 2px 4px rgba(99, 102, 241, 0.25));
878
- }
879
-
880
- body.theme-custom .mermaid-preview svg .xychart .plot line {
881
- stroke: #a78bfa;
882
- stroke-width: 2.5px;
883
- }
884
-
885
- body.theme-custom .mermaid-preview svg .xychart .titleText {
886
- fill: #1e1b4b !important;
887
- font-weight: 700;
888
- }
889
-
890
- /* Sankey */
891
- body.theme-custom .mermaid-preview svg .sankey .link {
892
- stroke: linear-gradient(90deg, #6366f1, #8b5cf6, #ec4899);
893
- stroke-opacity: 0.5;
894
- fill: none;
895
- }
896
-
897
- body.theme-custom .mermaid-preview svg .sankey text {
898
- fill: #1e1b4b !important;
899
- font-weight: 600;
900
- }
901
-
902
- /* 时序图 (ColaMD) */
903
- body.theme-custom .mermaid-preview svg .actor rect,
904
- body.theme-custom .mermaid-preview svg .actor path {
905
- stroke: #06b6d4;
906
- stroke-width: 2.5px;
907
- fill: linear-gradient(180deg, #22d3ee 0%, #06b6d4 100%) !important;
908
- }
909
-
910
- body.theme-custom .mermaid-preview svg text.actor {
911
- fill: #ffffff !important;
912
- font-weight: 700;
913
- }
914
-
915
- body.theme-custom .mermaid-preview svg .messageLine0,
916
- body.theme-custom .mermaid-preview svg .messageLine1 {
917
- stroke: #8b5cf6 !important;
918
- stroke-width: 2.5px;
919
- }
920
-
921
- body.theme-custom .mermaid-preview svg .messageText,
922
- body.theme-custom .mermaid-preview svg .labelText,
923
- body.theme-custom .mermaid-preview svg .loopText tspan,
924
- body.theme-custom .mermaid-preview svg .altText tspan,
925
- body.theme-custom .mermaid-preview svg .optText tspan {
926
- fill: #1e1b4b !important;
927
- font-weight: 600;
928
- }
929
-
930
- body.theme-custom .mermaid-preview svg .loopText,
931
- body.theme-custom .mermaid-preview svg .altText,
932
- body.theme-custom .mermaid-preview svg .optText {
933
- fill: #9ca3af !important;
934
- }
935
-
936
- body.theme-custom .mermaid-preview svg .loopLine,
937
- body.theme-custom .mermaid-preview svg .altLine,
938
- body.theme-custom .mermaid-preview svg .optLine {
939
- stroke: #6366f1 !important;
940
- }
941
-
942
- body.theme-custom .mermaid-preview svg .labelBox {
943
- stroke: #f59e0b;
944
- stroke-width: 2px;
945
- fill: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%) !important;
946
- }
947
-
948
- /* 时序图 (Typora) */
949
- .md-diagram-panel.md-mermaid .actor {
950
- fill: #22d3ee !important;
951
- stroke: #06b6d4 !important;
952
- }
953
-
954
- .md-diagram-panel.md-mermaid text.actor {
955
- fill: #ffffff !important;
956
- }
957
-
958
- .md-diagram-panel.md-mermaid .messageLine0,
959
- .md-diagram-panel.md-mermaid .messageLine1 {
960
- stroke: #6366f1 !important;
961
- }
962
-
963
- .md-diagram-panel.md-mermaid .messageText {
964
- fill: #6b7280 !important;
965
- }
966
-
967
- /* 类图 */
968
- body.theme-custom .mermaid-preview svg .classBox rect,
969
- body.theme-custom .mermaid-preview svg .classBox path {
970
- stroke: #8b5cf6;
971
- stroke-width: 2px;
972
- fill: linear-gradient(180deg, #ddd6fe 0%, #c4b5fd 100%) !important;
973
- }
974
-
975
- body.theme-custom .mermaid-preview svg .classTitle text,
976
- body.theme-custom .mermaid-preview svg .classTitle span {
977
- fill: #4c1d95 !important;
978
- color: #4c1d95 !important;
979
- font-weight: 700;
980
- }
981
-
982
- body.theme-custom .mermaid-preview svg .classText text,
983
- body.theme-custom .mermaid-preview svg .classText span {
984
- fill: #5b21b6 !important;
985
- color: #5b21b6 !important;
986
- font-weight: 500;
987
- }
988
-
989
- body.theme-custom .mermaid-preview svg .divider {
990
- stroke: #e5e7eb;
991
- }
992
-
993
- body.theme-custom .mermaid-preview svg .relation {
994
- stroke: #6366f1;
995
- }
996
-
997
- /* 甘特图 (ColaMD) */
998
- body.theme-custom .mermaid-preview svg .task {
999
- stroke: #10b981;
1000
- stroke-width: 2px;
1001
- fill: linear-gradient(90deg, #34d399 0%, #10b981 100%) !important;
1002
- }
1003
-
1004
- body.theme-custom .mermaid-preview svg .taskText,
1005
- body.theme-custom .mermaid-preview svg .taskTextOutsideRight,
1006
- body.theme-custom .mermaid-preview svg .taskTextOutsideLeft,
1007
- body.theme-custom .mermaid-preview svg .sectionText,
1008
- body.theme-custom .mermaid-preview svg .sectionTitle {
1009
- fill: #ffffff !important;
1010
- font-weight: 700;
1011
- }
1012
-
1013
- body.theme-custom .mermaid-preview svg .section rect {
1014
- stroke: #f59e0b;
1015
- stroke-width: 2px;
1016
- }
1017
-
1018
- body.theme-custom .mermaid-preview svg .today {
1019
- stroke: #6366f1 !important;
1020
- }
1021
-
1022
- body.theme-custom .mermaid-preview svg .grid .tick line {
1023
- stroke: #e5e7eb;
1024
- }
1025
-
1026
- body.theme-custom .mermaid-preview svg .grid .domain {
1027
- stroke: #6366f1;
1028
- }
1029
-
1030
- body.theme-custom .mermaid-preview svg .tick text {
1031
- fill: #9ca3af;
1032
- }
1033
-
1034
- /* 甘特图 (Typora) */
1035
- .md-diagram-panel.md-mermaid .section0,
1036
- .md-diagram-panel.md-mermaid .section1,
1037
- .md-diagram-panel.md-mermaid .section2,
1038
- .md-diagram-panel.md-mermaid .section3 {
1039
- fill: linear-gradient(90deg, #818cf8 0%, #6366f1 50%, #a78bfa 100%) !important;
1040
- stroke: #4f46e5 !important;
1041
- }
1042
-
1043
- .md-diagram-panel.md-mermaid .grid .tick line {
1044
- stroke: #e5e7eb !important;
1045
- }
1046
-
1047
- .md-diagram-panel.md-mermaid .grid .domain {
1048
- stroke: #6366f1 !important;
1049
- }
1050
-
1051
- .md-diagram-panel.md-mermaid .tick text {
1052
- fill: #9ca3af !important;
1053
- }
1054
-
1055
- /* 流程�?/ ER �?*/
1056
- .md-diagram-panel.md-mermaid .nodeDefault,
1057
- .md-diagram-panel.md-mermaid .node clicked,
1058
- .md-diagram-panel.md-mermaid .relation {
1059
- fill: linear-gradient(135deg, #c084fc 0%, #a855f7 100%) !important;
1060
- stroke: #9333ea !important;
1061
- }
1062
-
1063
- .md-diagram-panel.md-mermaid .edgeLabel {
1064
- background: linear-gradient(135deg, #fef3c7 0%, #fce7f3 100%) !important;
1065
- }
1066
-
1067
- /* ── 15. 滚动条样�?── */
1068
- ::-webkit-scrollbar {
1069
- width: 7px;
1070
- height: 7px;
1071
- }
1072
-
1073
- ::-webkit-scrollbar-track {
1074
- background: transparent;
1075
- }
1076
-
1077
- ::-webkit-scrollbar-thumb {
1078
- background: linear-gradient(180deg, #c7d2fe, #ddd6fe);
1079
- border-radius: 10px;
1080
- transition: background 0.3s ease;
1081
- }
1082
-
1083
- ::-webkit-scrollbar-thumb:hover {
1084
- background: linear-gradient(180deg, #a5b4fc, #c4b5fd);
1085
- }
1086
-
1087
- /* ── 16. 选择文本样式 ── */
1088
- ::selection,
1089
- body.theme-custom ::selection {
1090
- background: rgba(99, 102, 241, 0.18);
1091
- color: #1a1d26;
1092
- }
1093
-
1094
- ::-moz-selection,
1095
- body.theme-custom ::-moz-selection {
1096
- background: rgba(99, 102, 241, 0.18);
1097
- color: #1a1d26;
1098
- }
1099
-
1100
- /* ── 17. 特殊效果 ── */
1101
-
1102
- /* 图片容器增强 */
1103
- body.theme-custom figure img {
1104
- transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);
1105
- }
1106
-
1107
- /* 列表样式优化 */
1108
- body.theme-custom li::marker {
1109
- color: #a5b4fc;
1110
- }
1111
-
1112
- ol li::marker {
1113
- color: #6366f1;
1114
- font-weight: 600;
1115
- }
1116
-
1117
- /* 段落首字下沉效果(可选) */
1118
- body.theme-custom #write > p:first-of-type::first-letter {
1119
- /* font-size: 1.3em;
1120
- font-weight: 700;
1121
- float: left;
1122
- margin-right: 6px;
1123
- color: #6366f1; */
1124
- }
1125
-
1126
- /* 脚注样式 */
1127
- body.theme-custom sup {
1128
- color: #6366f1;
1129
- font-size: 0.82em;
1130
- cursor: pointer;
1131
- vertical-align: super;
1132
- margin: 0 2px;
1133
- }
1134
-
1135
- /* TOC 目录样式 */
1136
- body.theme-custom .md-toc-content {
1137
- background: linear-gradient(135deg, #f8f9ff 0%, #fdf4ff 100%);
1138
- border: 1px solid rgba(99, 102, 241, 0.1);
1139
- border-radius: 10px;
1140
- padding: 20px 24px;
1141
- margin: 2em 0;
1142
- box-shadow: 0 2px 12px rgba(99, 102, 241, 0.05);
1143
- }
1144
-
1145
- body.theme-custom .md-toc-content .md-toc-title {
1146
- font-weight: 700;
1147
- color: #1a1d26;
1148
- font-size: 1.1em;
1149
- margin-bottom: 12px;
1150
- padding-bottom: 10px;
1151
- border-bottom: 2px solid #e5e7eb;
1152
- }
1153
-
1154
- body.theme-custom .md-toc-content a {
1155
- color: #4b5563;
1156
- border-bottom: none;
1157
- transition: all 0.2s ease;
1158
- display: inline-block;
1159
- padding: 2px 0;
1160
- }
1161
-
1162
- body.theme-custom .md-toc-content a:hover {
1163
- color: #6366f1;
1164
- transform: translateX(4px);
1165
- }
1166
-
1167
- /* 任务列表样式 */
1168
- body.theme-custom input[type="checkbox"] {
1169
- accent-color: #6366f1;
1170
- width: 16px;
1171
- height: 16px;
1172
- cursor: pointer;
1173
- margin-right: 6px;
1174
- }
1175
-
1176
- /* ── 15. YAML 元数�?── */
1177
- pre.md-meta-block,
1178
- body.theme-custom .frontmatter,
1179
- body.theme-custom .yaml-front-matter {
1180
- font-family: "JetBrains Mono", "Fira Code", monospace;
1181
- font-size: 0.85em;
1182
- background: linear-gradient(135deg, #f8f9ff 0%, #fdf4ff 100%);
1183
- border: 1px solid rgba(99, 102, 241, 0.12);
1184
- border-radius: 8px;
1185
- padding: 16px 20px;
1186
- margin-bottom: 2em;
1187
- color: #4b5563;
1188
- }
1189
-
1190
- /* ── 16. 脚注 ── */
1191
- .md-footnote { font-size: 0.85em; color: #6366f1; }
1192
- sup.md-footnote {
1193
- background: transparent;
1194
- cursor: pointer;
1195
- }
1196
-
1197
- /* ── 17. TOC 目录(完善) */
1198
- .md-toc { font-size: 0.9em; }
1199
- .md-toc-item { color: #2d3436; transition: all 0.2s ease; }
1200
- .md-toc-item:hover { color: #6366f1; transform: translateX(3px); }
1201
- .md-toc-h1 .md-toc-inner { font-weight: 700; color: #1a1d26; }
1202
- .md-toc-h2 .md-toc-inner { font-weight: 600; color: #283149; }
1203
- .md-toc-h3 .md-toc-inner { font-weight: 500; color: #374151; }
1204
-
1205
- /* ── 18. 侧边�?── */
1206
- .sidebar-content { font-family: inherit; }
1207
- .file-node-content { line-height: 1.65; transition: background 0.2s ease; }
1208
- .file-node-content:hover { background: rgba(99, 102, 241, 0.05); border-radius: 5px; }
1209
- .file-node-title { font-size: 1em; color: #2d3436; }
1210
- .file-node-title:hover { color: #6366f1; }
1211
-
1212
- /* ── 19. 聚焦模式 ── */
1213
- .on-focus-mode .md-end-block:not(.md-focus):not(.md-focus-container) * {
1214
- color: rgba(107, 114, 128, 0.35) !important;
1215
- }
1216
- .on-focus-mode .md-end-block:not(.md-focus):not(.md-focus-container) img {
1217
- opacity: 0.35;
1218
- }
1219
- .on-focus-mode .md-end-block:not(.md-focus):not(.md-focus-container) a,
1220
- .on-focus-mode .md-end-block:not(.md-focus):not(.md-focus-container) strong {
1221
- color: rgba(99, 102, 241, 0.25) !important;
1222
- }
1223
-
1224
- /* ── 20. 搜索 & 选择 ── */
1225
- #write .md-search-hit {
1226
- background: rgba(99, 102, 241, 0.18);
1227
- border-radius: 3px;
1228
- box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.12);
1229
- }
1230
-
1231
- /* ── 22. Megamenu ── */
1232
- .megamenu-content { font-family: inherit; }
1233
- #megamenu-back-btn { color: #2d3436; transition: color 0.2s ease; }
1234
- #megamenu-back-btn:hover { color: #6366f1; }
1235
-
1236
- /* 打印样式优化 */
1237
- @media print {
1238
- body.theme-custom {
1239
- background: #f8f9fb !important;
1240
- color: black !important;
1241
- }
1242
-
1243
- body.theme-custom h1,
1244
- body.theme-custom h2 {
1245
- -webkit-text-fill-color: initial !important;
1246
- background: none !important;
1247
- }
1248
-
1249
- body.theme-custom h2::after {
1250
- background: #333 !important;
1251
- }
1252
-
1253
- body.theme-custom blockquote {
1254
- background: #f5f5f5 !important;
1255
- border-left: 4px solid #333 !important;
1256
- }
1257
-
1258
- body.theme-custom blockquote::before {
1259
- display: none !important;
1260
- }
1261
- }
1
+ /*
2
+ * ColaMD Theme: pixso-design(设计美学)
3
+ * 纯净白底 + 靛蓝/紫渐变点缀;无衬线、卡片化留白、渐变表头
4
+ * 契约:ColaMD Extend 2.7(CodeMirror 6 + Pele)
5
+ *
6
+ * 变量一律写在 :root;编辑器里没有 <h1>/<blockquote> 元素,
7
+ * 标题是带类的一行,引用/代码块是每行一个 div(禁止纵向 padding)。
8
+ */
9
+
10
+ :root {
11
+ /* ── 1.1 Seed Palette ── */
12
+ --seed-accent: #4f46e5;
13
+ --seed-accent-light: #e9eafc;
14
+ --seed-accent-dark: #4338ca;
15
+ --seed-surface: #f4f4f5;
16
+ --seed-panel: #efeff1;
17
+ --seed-panel-alt: #ececed;
18
+ --seed-ink: #2b3440;
19
+ --seed-ink-muted: #656e7a;
20
+ --seed-ink-dim: #9ba4b0;
21
+ --seed-border: #d6d6d8;
22
+ --seed-border-strong: #4338ca;
23
+
24
+ /* ── 1.2 Semantic Colors ── */
25
+ --bg-color: var(--seed-surface);
26
+ --text-color: var(--seed-ink);
27
+ --text-secondary: #4b5563;
28
+ --text-muted: var(--seed-ink-muted);
29
+ --border-color: var(--seed-border);
30
+ --link-color: var(--seed-accent);
31
+ --code-bg: var(--seed-panel);
32
+ --code-block-bg: #1e2235;
33
+ --code-block-text: #e4e7ed;
34
+ --blockquote-border: var(--seed-accent);
35
+ --blockquote-bg: #f8f9ff;
36
+ --table-header-bg: var(--seed-accent-dark);
37
+ --selection-bg: rgba(79, 70, 229, 0.18);
38
+ --highlight-bg: linear-gradient(120deg, rgba(79, 70, 229, 0.14) 0%, rgba(139, 92, 246, 0.14) 100%);
39
+
40
+ /* ── 1.3 Typography & Metrics ── */
41
+ --font-body: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
42
+ --font-mono: "JetBrains Mono", "Fira Code", "SF Mono", Menlo, Consolas, monospace;
43
+ --editor-font-size: 16px;
44
+ --editor-column-width: 800px;
45
+
46
+ /* ── 1.4 Pele(原渐变图的实色降级)── */
47
+ --pele-bg: var(--seed-surface);
48
+ --pele-fg: #1e1b4b;
49
+ --pele-muted: var(--seed-ink-muted);
50
+ --pele-line: var(--seed-accent);
51
+ --pele-surface: var(--seed-accent-light);
52
+ --pele-surface-alt: #ddd6fe;
53
+ --pele-border: var(--seed-accent-dark);
54
+ --pele-accent: var(--seed-accent);
55
+ --pele-radius: 10px;
56
+ }
57
+
58
+ /* ═══ SECTION 2 — 编辑器 DOM ═══ */
59
+
60
+ #editor .cm-content {
61
+ font-family: var(--font-body); line-height: 1.85; letter-spacing: 0.01em;
62
+ }
63
+
64
+ /* 2.1 标题:无衬线、紧凑字距 */
65
+ #editor .cm-content .cm-md-atxheading1,
66
+ #editor .cm-content .cm-md-atxheading2,
67
+ #editor .cm-content .cm-md-atxheading3,
68
+ #editor .cm-content .cm-md-atxheading4,
69
+ #editor .cm-content .cm-md-atxheading5,
70
+ #editor .cm-content .cm-md-atxheading6 {
71
+ color: #1a1d26; font-weight: 700; line-height: 1.35; letter-spacing: -0.02em;
72
+ }
73
+ #editor .cm-content .cm-md-atxheading1 { font-size: 2em; padding-bottom: 0.35em; }
74
+ /* 二级标题的 60% 渐变短线是这套主题的签名。 */
75
+ #editor .cm-content .cm-md-atxheading2 {
76
+ font-size: 1.55em; padding-bottom: 0.25em;
77
+ background-image: linear-gradient(90deg, #4f46e5, #8b5cf6);
78
+ background-size: 60% 3px; background-repeat: no-repeat; background-position: left bottom;
79
+ }
80
+ #editor .cm-content .cm-md-atxheading3 { font-size: 1.28em; color: #283149; }
81
+ #editor .cm-content .cm-md-atxheading4 { font-size: 1.12em; font-weight: 600; }
82
+ #editor .cm-content .cm-md-atxheading5 { font-size: 1em; font-weight: 600; color: #374151; }
83
+ #editor .cm-content .cm-md-atxheading6 { font-size: 0.92em; font-weight: 500; color: var(--text-muted); }
84
+
85
+ /* 2.2 行内强调:靛蓝深调 */
86
+ #editor .cm-content .cm-md-strong { color: var(--seed-accent-dark); font-weight: 700; }
87
+ #editor .cm-content .cm-md-em { font-style: italic; color: var(--text-secondary); }
88
+ #editor .cm-content .cm-md-strike { text-decoration: line-through; }
89
+ #editor .cm-content .cm-md-highlight { background: var(--highlight-bg); color: var(--text-color); }
90
+
91
+ /* 2.3 链接:靛蓝字 + 淡色底边 */
92
+ #editor .cm-content .cm-md-link {
93
+ color: var(--link-color); text-decoration: none;
94
+ border-bottom: 1px solid rgba(79, 70, 229, 0.35);
95
+ }
96
+ #editor .cm-content .cm-md-url { color: var(--text-muted); }
97
+
98
+ /* 2.4 内联代码:浅灰卡片 */
99
+ #editor .cm-content .cm-md-inlinecode {
100
+ font-family: var(--font-mono); font-size: 0.88em;
101
+ background: var(--code-bg); color: var(--seed-accent);
102
+ padding: 3px 7px; margin: 0 2px; border-radius: 5px;
103
+ border: 1px solid rgba(79, 70, 229, 0.08);
104
+ }
105
+
106
+ #editor .cm-content .cm-md-marker,
107
+ #editor .cm-content .cm-md-quotemark { color: var(--text-muted); }
108
+ #editor .cm-content .cm-md-listmark { color: #a5b4fc; }
109
+
110
+ /* 2.5 引用块:淡紫渐变底 + 靛蓝左条 */
111
+ #editor .cm-content .cm-md-blockquote {
112
+ background: linear-gradient(135deg, #f8f9ff 0%, #fdf4ff 100%);
113
+ color: var(--text-secondary);
114
+ border-left: 4px solid var(--blockquote-border);
115
+ padding-left: 28px; padding-right: 24px;
116
+ }
117
+
118
+ /* 2.6 代码块:深蓝紫底,圆角落在首末行 */
119
+ #editor .cm-content .cm-md-codeblock {
120
+ font-family: var(--font-mono); font-size: 0.88em; line-height: 1.68;
121
+ background: var(--code-block-bg); color: var(--code-block-text);
122
+ border-left: 1px solid rgba(79, 70, 229, 0.15);
123
+ border-right: 1px solid rgba(79, 70, 229, 0.15);
124
+ padding-left: 26px; padding-right: 26px;
125
+ }
126
+ #editor .cm-content .cm-md-codeblock-first {
127
+ border-top-left-radius: 10px; border-top-right-radius: 10px;
128
+ }
129
+ #editor .cm-content .cm-md-codeblock-last {
130
+ border-bottom-left-radius: 10px; border-bottom-right-radius: 10px;
131
+ }
132
+
133
+ /* 2.7 表格:靛蓝渐变表头 + 白色字 */
134
+ #editor .cm-content .cm-md-table-widget th,
135
+ #editor .cm-content .cm-md-table-widget td { border-color: var(--border-color); }
136
+ #editor .cm-content .cm-md-table-widget th {
137
+ background: linear-gradient(180deg, #4338ca 0%, #4f46e5 50%, #7c3aed 100%);
138
+ color: #ffffff; font-weight: 700; font-size: 0.95em;
139
+ letter-spacing: 0.02em; text-transform: uppercase;
140
+ border-bottom: 3px solid #3730a3;
141
+ border-right: 1px solid rgba(255, 255, 255, 0.15);
142
+ }
143
+ #editor .cm-content .cm-md-table-widget td {
144
+ color: #374151;
145
+ border-bottom: 1px solid var(--border-color);
146
+ border-right: 1px solid var(--border-color);
147
+ }
148
+
149
+ /* 2.8 分隔线:细而轻,大留白 */
150
+ #editor .cm-content .cm-md-hr { border-top: 1px solid var(--border-color); margin: 3em 0; }
151
+
152
+ /* 2.9 列表:按层级缩进 */
153
+ #editor .cm-content .cm-md-li-0 { margin-left: 0; }
154
+ #editor .cm-content .cm-md-li-1 { margin-left: 1.9em; }
155
+ #editor .cm-content .cm-md-li-2 { margin-left: 3.8em; }
156
+ #editor .cm-content .cm-md-li-3 { margin-left: 5.7em; }
157
+ #editor .cm-content .cm-md-li-4 { margin-left: 7.6em; }
158
+ #editor .cm-content .cm-md-li-5 { margin-left: 9.5em; }
159
+ #editor .cm-content .cm-md-li-6 { margin-left: 11.4em; }
160
+
161
+ /* 2.10 图表占位:柔和四角渐变卡片 */
162
+ #editor .cm-content .cm-md-mermaid {
163
+ background: linear-gradient(135deg, #f8f9fb 0%, #eef2ff 30%, #fdf4ff 60%, #fce7f3 100%);
164
+ border-radius: 16px; padding-left: 28px; padding-right: 28px;
165
+ }
166
+
167
+ /* 2.11 中文首行缩进:标题/引用/代码/图表/列表行归零 */
168
+ #editor .cm-content .cm-line { text-indent: 2em; }
169
+
170
+ #editor .cm-content .cm-md-atxheading1,
171
+ #editor .cm-content .cm-md-atxheading2,
172
+ #editor .cm-content .cm-md-atxheading3,
173
+ #editor .cm-content .cm-md-atxheading4,
174
+ #editor .cm-content .cm-md-atxheading5,
175
+ #editor .cm-content .cm-md-atxheading6,
176
+ #editor .cm-content .cm-md-blockquote,
177
+ #editor .cm-content .cm-md-codeblock,
178
+ #editor .cm-content .cm-md-hr,
179
+ #editor .cm-content .cm-md-mermaid,
180
+ #editor .cm-content .cm-md-li-0,
181
+ #editor .cm-content .cm-md-li-1,
182
+ #editor .cm-content .cm-md-li-2,
183
+ #editor .cm-content .cm-md-li-3,
184
+ #editor .cm-content .cm-md-li-4,
185
+ #editor .cm-content .cm-md-li-5,
186
+ #editor .cm-content .cm-md-li-6 {
187
+ text-indent: 0;
188
+ }
189
+
190
+ /* ═══ SECTION 3 — 导出 HTML(.colamd-document)═══ */
191
+
192
+ .colamd-document {
193
+ font-family: var(--font-body); font-size: 16px;
194
+ line-height: 1.85; letter-spacing: 0.01em; color: var(--text-color);
195
+ }
196
+
197
+ .colamd-document h1,
198
+ .colamd-document h2,
199
+ .colamd-document h3,
200
+ .colamd-document h4,
201
+ .colamd-document h5,
202
+ .colamd-document h6 {
203
+ color: #1a1d26; font-weight: 700; line-height: 1.35; letter-spacing: -0.02em;
204
+ }
205
+ .colamd-document h1 { font-size: 2em; }
206
+ .colamd-document h2 {
207
+ font-size: 1.55em; padding-bottom: 0.25em;
208
+ background-image: linear-gradient(90deg, #4f46e5, #8b5cf6);
209
+ background-size: 60% 3px; background-repeat: no-repeat; background-position: left bottom;
210
+ }
211
+ .colamd-document h3 { font-size: 1.28em; color: #283149; }
212
+ .colamd-document h4 { font-size: 1.12em; font-weight: 600; }
213
+ .colamd-document h5 { font-size: 1em; font-weight: 600; color: #374151; }
214
+ .colamd-document h6 { font-size: 0.92em; font-weight: 500; color: var(--text-muted); }
215
+
216
+ .colamd-document strong { color: var(--seed-accent-dark); }
217
+ .colamd-document em { font-style: italic; color: var(--text-secondary); }
218
+ .colamd-document a {
219
+ color: var(--link-color); text-decoration: none;
220
+ border-bottom: 1px solid rgba(79, 70, 229, 0.35);
221
+ }
222
+
223
+ .colamd-document code {
224
+ font-family: var(--font-mono); font-size: 0.88em;
225
+ background: var(--code-bg); color: var(--seed-accent);
226
+ padding: 3px 7px; border-radius: 5px;
227
+ border: 1px solid rgba(79, 70, 229, 0.08);
228
+ }
229
+ .colamd-document pre {
230
+ font-family: var(--font-mono); font-size: 0.88em; line-height: 1.68;
231
+ background: linear-gradient(145deg, #1e2235 0%, #2a2040 100%);
232
+ color: var(--code-block-text);
233
+ padding: 22px 26px; border-radius: 10px;
234
+ border: 1px solid rgba(79, 70, 229, 0.15);
235
+ }
236
+ .colamd-document pre code { background: transparent; color: inherit; padding: 0; border: none; }
237
+
238
+ .colamd-document blockquote {
239
+ background: linear-gradient(135deg, #f8f9ff 0%, #fdf4ff 100%);
240
+ color: var(--text-secondary);
241
+ border-left: 4px solid var(--blockquote-border);
242
+ border-radius: 10px;
243
+ }
244
+ .colamd-document mark { background: var(--highlight-bg); color: var(--text-color); }
245
+
246
+ .colamd-document th {
247
+ background: linear-gradient(180deg, #4338ca 0%, #4f46e5 50%, #7c3aed 100%);
248
+ color: #ffffff; font-weight: 700; font-size: 0.95em;
249
+ letter-spacing: 0.02em; text-transform: uppercase;
250
+ border-bottom: 3px solid #3730a3;
251
+ }
252
+ .colamd-document td { color: #374151; border-bottom: 1px solid var(--border-color); }
253
+ .colamd-document hr {
254
+ border: none; height: 1px; margin: 3em 0;
255
+ background: linear-gradient(90deg, transparent, #e5e7eb 50%, transparent);
256
+ }
257
+
258
+ .colamd-document ul,
259
+ .colamd-document ol { padding-left: 1.9em; }
260
+ .colamd-document li { margin: 0.45em 0; line-height: 1.78; }
261
+
262
+ .colamd-document p { text-indent: 2em; }
263
+ .colamd-document li p,
264
+ .colamd-document td p,
265
+ .colamd-document th p,
266
+ .colamd-document blockquote p { text-indent: 0; }
267
+
268
+ /* ═══ SECTION 4 — 打印 ═══ */
269
+
270
+ @media print {
271
+ html,
272
+ body {
273
+ background: var(--bg-color);
274
+ color: var(--text-color);
275
+ -webkit-print-color-adjust: exact;
276
+ print-color-adjust: exact;
277
+ }
278
+ }