@incremark/theme 0.2.3

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.
@@ -0,0 +1,937 @@
1
+ /**
2
+ * 样式主入口
3
+ *
4
+ * 导入所有样式文件
5
+ */
6
+ /**
7
+ * 基础样式
8
+ */
9
+ /**
10
+ * Less 变量定义
11
+ *
12
+ * 这些变量引用 CSS Variables,在运行时可以通过 ThemeProvider 动态修改
13
+ *
14
+ * 注意:CSS Variables 定义在 css-variables.less 中(由脚本自动生成)
15
+ */
16
+ /**
17
+ * CSS Variables 定义
18
+ *
19
+ * ⚠️ 此文件由脚本自动生成,请勿手动编辑
20
+ * 生成脚本: scripts/generate-css-variables.ts
21
+ * 数据来源: src/tokens/*.ts 和 src/themes/*.ts
22
+ */
23
+ /* ============================================
24
+ 默认主题 CSS Variables
25
+ ============================================ */
26
+ :root {
27
+ --incremark-base-colors-blue-1: #FCFDFF;
28
+ --incremark-base-colors-blue-2: #D6E6FF;
29
+ --incremark-base-colors-blue-3: #B0CEFF;
30
+ --incremark-base-colors-blue-4: #8AB6FF;
31
+ --incremark-base-colors-blue-5: #639EFF;
32
+ --incremark-base-colors-blue-6: #3B82F6;
33
+ --incremark-base-colors-blue-7: #296BD7;
34
+ --incremark-base-colors-blue-8: #1A56B9;
35
+ --incremark-base-colors-blue-9: #0E439A;
36
+ --incremark-base-colors-blue-10: #05327C;
37
+ --incremark-base-colors-purple-1: #FFFFFF;
38
+ --incremark-base-colors-purple-2: #F8F1FF;
39
+ --incremark-base-colors-purple-3: #E5CBFF;
40
+ --incremark-base-colors-purple-4: #D3A4FF;
41
+ --incremark-base-colors-purple-5: #C07EFF;
42
+ --incremark-base-colors-purple-6: #A855F7;
43
+ --incremark-base-colors-purple-7: #8E40D8;
44
+ --incremark-base-colors-purple-8: #752DBA;
45
+ --incremark-base-colors-purple-9: #5E1E9B;
46
+ --incremark-base-colors-purple-10: #49127D;
47
+ --incremark-base-colors-green-1: #D5FFF1;
48
+ --incremark-base-colors-green-2: #AFFFE5;
49
+ --incremark-base-colors-green-3: #84F6D0;
50
+ --incremark-base-colors-green-4: #57E2B4;
51
+ --incremark-base-colors-green-5: #31CD99;
52
+ --incremark-base-colors-green-6: #10B981;
53
+ --incremark-base-colors-green-7: #069A69;
54
+ --incremark-base-colors-green-8: #007C53;
55
+ --incremark-base-colors-green-9: #005D3E;
56
+ --incremark-base-colors-green-10: #003F2A;
57
+ --incremark-base-colors-red-1: #FFFFFF;
58
+ --incremark-base-colors-red-2: #FFE2E2;
59
+ --incremark-base-colors-red-3: #FFBBBB;
60
+ --incremark-base-colors-red-4: #FF9595;
61
+ --incremark-base-colors-red-5: #FF6F6F;
62
+ --incremark-base-colors-red-6: #EF4444;
63
+ --incremark-base-colors-red-7: #D03131;
64
+ --incremark-base-colors-red-8: #B22121;
65
+ --incremark-base-colors-red-9: #931414;
66
+ --incremark-base-colors-red-10: #750A0A;
67
+ --incremark-base-colors-orange-1: #FFE7D6;
68
+ --incremark-base-colors-orange-2: #FFD0B0;
69
+ --incremark-base-colors-orange-3: #FFBA89;
70
+ --incremark-base-colors-orange-4: #FFA363;
71
+ --incremark-base-colors-orange-5: #FF8C3D;
72
+ --incremark-base-colors-orange-6: #F97316;
73
+ --incremark-base-colors-orange-7: #DA5E08;
74
+ --incremark-base-colors-orange-8: #BC4D00;
75
+ --incremark-base-colors-orange-9: #9D4000;
76
+ --incremark-base-colors-orange-10: #7F3400;
77
+ --incremark-base-colors-cyan-1: #C6F7FF;
78
+ --incremark-base-colors-cyan-2: #A0F1FF;
79
+ --incremark-base-colors-cyan-3: #7AECFF;
80
+ --incremark-base-colors-cyan-4: #53E4FD;
81
+ --incremark-base-colors-cyan-5: #29CDE8;
82
+ --incremark-base-colors-cyan-6: #06B6D4;
83
+ --incremark-base-colors-cyan-7: #009BB5;
84
+ --incremark-base-colors-cyan-8: #008197;
85
+ --incremark-base-colors-cyan-9: #006778;
86
+ --incremark-base-colors-cyan-10: #004D5A;
87
+ --incremark-color-neutral-1: #ffffff;
88
+ --incremark-color-neutral-2: #f8f9fc;
89
+ --incremark-color-neutral-3: #f1f3f8;
90
+ --incremark-color-neutral-4: #e2e5ec;
91
+ --incremark-color-neutral-5: #cdd1da;
92
+ --incremark-color-neutral-6: #9ca4b1;
93
+ --incremark-color-neutral-7: #677284;
94
+ --incremark-color-neutral-8: #34435a;
95
+ --incremark-color-neutral-9: #011431;
96
+ --incremark-color-neutral-10: #01122d;
97
+ --incremark-color-brand-primary: #3B82F6;
98
+ --incremark-color-brand-primary-hover: #296BD7;
99
+ --incremark-color-brand-primary-active: #1A56B9;
100
+ --incremark-color-brand-primary-light: #D6E6FF;
101
+ --incremark-color-text-primary: #34435a;
102
+ --incremark-color-text-secondary: #677284;
103
+ --incremark-color-text-tertiary: #9ca4b1;
104
+ --incremark-color-text-inverse: #ffffff;
105
+ --incremark-color-background-base: #ffffff;
106
+ --incremark-color-background-elevated: #f8f9fc;
107
+ --incremark-color-background-overlay: rgba(1, 20, 49, 0.6);
108
+ --incremark-color-border-default: #e2e5ec;
109
+ --incremark-color-border-subtle: #f1f3f8;
110
+ --incremark-color-border-strong: #677284;
111
+ --incremark-color-code-inline-background: #f1f3f8;
112
+ --incremark-color-code-inline-text: #34435a;
113
+ --incremark-color-code-block-background: #011431;
114
+ --incremark-color-code-block-text: #f8f9fc;
115
+ --incremark-color-code-header-background: #01122d;
116
+ --incremark-color-status-pending: #A855F7;
117
+ --incremark-color-status-completed: #10B981;
118
+ --incremark-color-interactive-link: #3B82F6;
119
+ --incremark-color-interactive-link-hover: #296BD7;
120
+ --incremark-color-interactive-link-visited: #8E40D8;
121
+ --incremark-color-interactive-checked: #10B981;
122
+ --incremark-typography-font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
123
+ --incremark-typography-font-family-mono: 'Fira Code', 'SF Mono', 'Monaco', 'Consolas', monospace;
124
+ --incremark-typography-font-size-xs: 11px;
125
+ --incremark-typography-font-size-sm: 12px;
126
+ --incremark-typography-font-size-base: 14px;
127
+ --incremark-typography-font-size-md: 16px;
128
+ --incremark-typography-font-size-lg: 18px;
129
+ --incremark-typography-font-size-heading-h1: 2em;
130
+ --incremark-typography-font-size-heading-h2: 1.5em;
131
+ --incremark-typography-font-size-heading-h3: 1.25em;
132
+ --incremark-typography-font-size-heading-h4: 1em;
133
+ --incremark-typography-font-size-heading-h5: 0.875em;
134
+ --incremark-typography-font-size-heading-h6: 0.85em;
135
+ --incremark-typography-font-weight-normal: 400;
136
+ --incremark-typography-font-weight-medium: 500;
137
+ --incremark-typography-font-weight-semibold: 600;
138
+ --incremark-typography-font-weight-bold: 700;
139
+ --incremark-typography-line-height-tight: 1.25;
140
+ --incremark-typography-line-height-normal: 1.5;
141
+ --incremark-typography-line-height-relaxed: 1.75;
142
+ --incremark-spacing-xs: 4px;
143
+ --incremark-spacing-sm: 8px;
144
+ --incremark-spacing-md: 12px;
145
+ --incremark-spacing-lg: 16px;
146
+ --incremark-spacing-xl: 24px;
147
+ --incremark-border-radius-sm: 4px;
148
+ --incremark-border-radius-md: 8px;
149
+ --incremark-border-radius-lg: 12px;
150
+ --incremark-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
151
+ --incremark-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
152
+ --incremark-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
153
+ --incremark-animation-duration-fast: 150ms;
154
+ --incremark-animation-duration-normal: 200ms;
155
+ --incremark-animation-duration-slow: 300ms;
156
+ --incremark-animation-easing-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
157
+ --incremark-animation-easing-ease-out: cubic-bezier(0, 0, 0.2, 1);
158
+ }
159
+ /* ============================================
160
+ 深色主题 CSS Variables
161
+ ============================================ */
162
+ [data-theme="dark"],
163
+ .theme-dark {
164
+ --incremark-base-colors-blue-1: #FCFDFF;
165
+ --incremark-base-colors-blue-2: #D6E6FF;
166
+ --incremark-base-colors-blue-3: #B0CEFF;
167
+ --incremark-base-colors-blue-4: #8AB6FF;
168
+ --incremark-base-colors-blue-5: #639EFF;
169
+ --incremark-base-colors-blue-6: #3B82F6;
170
+ --incremark-base-colors-blue-7: #296BD7;
171
+ --incremark-base-colors-blue-8: #1A56B9;
172
+ --incremark-base-colors-blue-9: #0E439A;
173
+ --incremark-base-colors-blue-10: #05327C;
174
+ --incremark-base-colors-purple-1: #FFFFFF;
175
+ --incremark-base-colors-purple-2: #F8F1FF;
176
+ --incremark-base-colors-purple-3: #E5CBFF;
177
+ --incremark-base-colors-purple-4: #D3A4FF;
178
+ --incremark-base-colors-purple-5: #C07EFF;
179
+ --incremark-base-colors-purple-6: #A855F7;
180
+ --incremark-base-colors-purple-7: #8E40D8;
181
+ --incremark-base-colors-purple-8: #752DBA;
182
+ --incremark-base-colors-purple-9: #5E1E9B;
183
+ --incremark-base-colors-purple-10: #49127D;
184
+ --incremark-base-colors-green-1: #D5FFF1;
185
+ --incremark-base-colors-green-2: #AFFFE5;
186
+ --incremark-base-colors-green-3: #84F6D0;
187
+ --incremark-base-colors-green-4: #57E2B4;
188
+ --incremark-base-colors-green-5: #31CD99;
189
+ --incremark-base-colors-green-6: #10B981;
190
+ --incremark-base-colors-green-7: #069A69;
191
+ --incremark-base-colors-green-8: #007C53;
192
+ --incremark-base-colors-green-9: #005D3E;
193
+ --incremark-base-colors-green-10: #003F2A;
194
+ --incremark-base-colors-red-1: #FFFFFF;
195
+ --incremark-base-colors-red-2: #FFE2E2;
196
+ --incremark-base-colors-red-3: #FFBBBB;
197
+ --incremark-base-colors-red-4: #FF9595;
198
+ --incremark-base-colors-red-5: #FF6F6F;
199
+ --incremark-base-colors-red-6: #EF4444;
200
+ --incremark-base-colors-red-7: #D03131;
201
+ --incremark-base-colors-red-8: #B22121;
202
+ --incremark-base-colors-red-9: #931414;
203
+ --incremark-base-colors-red-10: #750A0A;
204
+ --incremark-base-colors-orange-1: #FFE7D6;
205
+ --incremark-base-colors-orange-2: #FFD0B0;
206
+ --incremark-base-colors-orange-3: #FFBA89;
207
+ --incremark-base-colors-orange-4: #FFA363;
208
+ --incremark-base-colors-orange-5: #FF8C3D;
209
+ --incremark-base-colors-orange-6: #F97316;
210
+ --incremark-base-colors-orange-7: #DA5E08;
211
+ --incremark-base-colors-orange-8: #BC4D00;
212
+ --incremark-base-colors-orange-9: #9D4000;
213
+ --incremark-base-colors-orange-10: #7F3400;
214
+ --incremark-base-colors-cyan-1: #C6F7FF;
215
+ --incremark-base-colors-cyan-2: #A0F1FF;
216
+ --incremark-base-colors-cyan-3: #7AECFF;
217
+ --incremark-base-colors-cyan-4: #53E4FD;
218
+ --incremark-base-colors-cyan-5: #29CDE8;
219
+ --incremark-base-colors-cyan-6: #06B6D4;
220
+ --incremark-base-colors-cyan-7: #009BB5;
221
+ --incremark-base-colors-cyan-8: #008197;
222
+ --incremark-base-colors-cyan-9: #006778;
223
+ --incremark-base-colors-cyan-10: #004D5A;
224
+ --incremark-color-neutral-1: #0a1628;
225
+ --incremark-color-neutral-2: #162033;
226
+ --incremark-color-neutral-3: #273548;
227
+ --incremark-color-neutral-4: #546070;
228
+ --incremark-color-neutral-5: #8891a0;
229
+ --incremark-color-neutral-6: #cdd1da;
230
+ --incremark-color-neutral-7: #e2e5ec;
231
+ --incremark-color-neutral-8: #f1f3f8;
232
+ --incremark-color-neutral-9: #f8f9fc;
233
+ --incremark-color-neutral-10: #ffffff;
234
+ --incremark-color-brand-primary: #60A5FA;
235
+ --incremark-color-brand-primary-hover: #498BDB;
236
+ --incremark-color-brand-primary-active: #3672BD;
237
+ --incremark-color-brand-primary-light: #FBFDFF;
238
+ --incremark-color-text-primary: #f1f3f8;
239
+ --incremark-color-text-secondary: #e2e5ec;
240
+ --incremark-color-text-tertiary: #cdd1da;
241
+ --incremark-color-text-inverse: #0a1628;
242
+ --incremark-color-background-base: #0a1628;
243
+ --incremark-color-background-elevated: #162033;
244
+ --incremark-color-background-overlay: rgba(0, 0, 0, 0.75);
245
+ --incremark-color-border-subtle: #273548;
246
+ --incremark-color-border-default: #546070;
247
+ --incremark-color-border-strong: #e2e5ec;
248
+ --incremark-color-code-inline-background: #273548;
249
+ --incremark-color-code-inline-text: #f1f3f8;
250
+ --incremark-color-code-block-background: #273548;
251
+ --incremark-color-code-block-text: #f8f9fc;
252
+ --incremark-color-code-header-background: #162033;
253
+ --incremark-color-status-pending: #C084FC;
254
+ --incremark-color-status-completed: #34D399;
255
+ --incremark-color-interactive-link: #60A5FA;
256
+ --incremark-color-interactive-link-hover: #498BDB;
257
+ --incremark-color-interactive-link-visited: #E9D2FF;
258
+ --incremark-color-interactive-checked: #34D399;
259
+ --incremark-typography-font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
260
+ --incremark-typography-font-family-mono: 'Fira Code', 'SF Mono', 'Monaco', 'Consolas', monospace;
261
+ --incremark-typography-font-size-xs: 11px;
262
+ --incremark-typography-font-size-sm: 12px;
263
+ --incremark-typography-font-size-base: 14px;
264
+ --incremark-typography-font-size-md: 16px;
265
+ --incremark-typography-font-size-lg: 18px;
266
+ --incremark-typography-font-size-heading-h1: 2em;
267
+ --incremark-typography-font-size-heading-h2: 1.5em;
268
+ --incremark-typography-font-size-heading-h3: 1.25em;
269
+ --incremark-typography-font-size-heading-h4: 1em;
270
+ --incremark-typography-font-size-heading-h5: 0.875em;
271
+ --incremark-typography-font-size-heading-h6: 0.85em;
272
+ --incremark-typography-font-weight-normal: 400;
273
+ --incremark-typography-font-weight-medium: 500;
274
+ --incremark-typography-font-weight-semibold: 600;
275
+ --incremark-typography-font-weight-bold: 700;
276
+ --incremark-typography-line-height-tight: 1.25;
277
+ --incremark-typography-line-height-normal: 1.5;
278
+ --incremark-typography-line-height-relaxed: 1.75;
279
+ --incremark-spacing-xs: 4px;
280
+ --incremark-spacing-sm: 8px;
281
+ --incremark-spacing-md: 12px;
282
+ --incremark-spacing-lg: 16px;
283
+ --incremark-spacing-xl: 24px;
284
+ --incremark-border-radius-sm: 4px;
285
+ --incremark-border-radius-md: 8px;
286
+ --incremark-border-radius-lg: 12px;
287
+ --incremark-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
288
+ --incremark-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
289
+ --incremark-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
290
+ --incremark-animation-duration-fast: 150ms;
291
+ --incremark-animation-duration-normal: 200ms;
292
+ --incremark-animation-duration-slow: 300ms;
293
+ --incremark-animation-easing-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
294
+ --incremark-animation-easing-ease-out: cubic-bezier(0, 0, 0.2, 1);
295
+ }
296
+ /* ============ 颜色系统 ============ */
297
+ /* ============ 字体系统 ============ */
298
+ /* ============ 间距系统 ============ */
299
+ /* ============ 边框系统 ============ */
300
+ /* ============ 阴影系统 ============ */
301
+ /* ============ 动画系统 ============ */
302
+ .incremark-theme-provider {
303
+ height: 100%;
304
+ }
305
+ /* ============ 主容器 ============ */
306
+ .incremark {
307
+ font-family: var(--incremark-typography-font-family-base);
308
+ line-height: var(--incremark-typography-line-height-normal);
309
+ color: var(--incremark-color-text-primary);
310
+ background-color: var(--incremark-color-background-base);
311
+ min-height: 100%;
312
+ }
313
+ /* ============ 链接样式 ============ */
314
+ .incremark a {
315
+ color: var(--incremark-color-interactive-link);
316
+ text-decoration: none;
317
+ transition: color var(--incremark-animation-duration-normal) var(--incremark-animation-easing-ease-out);
318
+ }
319
+ .incremark a:hover {
320
+ color: var(--incremark-color-interactive-link-hover);
321
+ text-decoration: underline;
322
+ }
323
+ .incremark a:visited {
324
+ color: var(--incremark-color-interactive-link-visited);
325
+ }
326
+ /* ============ 块状态显示 ============ */
327
+ .incremark-block {
328
+ transition: border-color var(--incremark-animation-duration-normal) var(--incremark-animation-easing-ease-out);
329
+ }
330
+ .incremark-block.pending,
331
+ .incremark-block.incremark-pending {
332
+ border-left: 3px solid var(--incremark-color-status-pending);
333
+ padding-left: var(--incremark-spacing-lg);
334
+ opacity: 0.8;
335
+ }
336
+ .incremark-block.incremark-show-status.incremark-pending {
337
+ border-left: 3px solid var(--incremark-color-status-pending);
338
+ padding-left: var(--incremark-spacing-lg);
339
+ opacity: 0.8;
340
+ }
341
+ /* ============ 动画效果 ============ */
342
+ .incremark-fade-in {
343
+ animation: incremark-fade-in var(--incremark-animation-duration-slow) var(--incremark-animation-easing-ease-out);
344
+ }
345
+ @keyframes incremark-fade-in {
346
+ from {
347
+ opacity: 0;
348
+ }
349
+ to {
350
+ opacity: 1;
351
+ }
352
+ }
353
+ /* Vue Transition 支持 */
354
+ .incremark-fade-enter-active {
355
+ transition: opacity var(--incremark-animation-duration-normal) var(--incremark-animation-easing-ease-out);
356
+ }
357
+ .incremark-fade-enter-from {
358
+ opacity: 0;
359
+ }
360
+ .incremark-fade-leave-active {
361
+ transition: opacity var(--incremark-animation-duration-normal) var(--incremark-animation-easing-ease-out);
362
+ }
363
+ .incremark-fade-leave-to {
364
+ opacity: 0;
365
+ }
366
+ /**
367
+ * Button 组件样式
368
+ *
369
+ * 公共按钮样式,供代码块、Mermaid 图表等使用
370
+ */
371
+ /* ============ 基础按钮样式 ============ */
372
+ .incremark-btn {
373
+ padding: var(--incremark-spacing-xs) var(--incremark-spacing-md);
374
+ border: 1px solid var(--incremark-color-border-default);
375
+ border-radius: var(--incremark-border-radius-sm);
376
+ background: transparent;
377
+ color: var(--incremark-color-text-tertiary);
378
+ font-size: var(--incremark-typography-font-size-sm);
379
+ font-weight: var(--incremark-typography-font-weight-medium);
380
+ cursor: pointer;
381
+ transition: all var(--incremark-animation-duration-normal) var(--incremark-animation-easing-ease-out);
382
+ user-select: none;
383
+ white-space: nowrap;
384
+ }
385
+ .incremark-btn:hover:not(:disabled) {
386
+ background-color: var(--incremark-color-background-elevated);
387
+ color: var(--incremark-color-text-primary);
388
+ border-color: var(--incremark-color-border-strong);
389
+ }
390
+ .incremark-btn:active:not(:disabled) {
391
+ transform: translateY(1px);
392
+ }
393
+ .incremark-btn:disabled {
394
+ opacity: 0.5;
395
+ cursor: not-allowed;
396
+ }
397
+ /* ============ 代码块专用按钮 ============ */
398
+ .incremark-code-btn {
399
+ padding: var(--incremark-spacing-xs) var(--incremark-spacing-md);
400
+ border: 1px solid var(--incremark-color-border-strong);
401
+ border-radius: var(--incremark-border-radius-sm);
402
+ background: transparent;
403
+ color: var(--incremark-color-text-tertiary);
404
+ font-size: var(--incremark-typography-font-size-sm);
405
+ font-weight: var(--incremark-typography-font-weight-medium);
406
+ cursor: pointer;
407
+ transition: all var(--incremark-animation-duration-normal) var(--incremark-animation-easing-ease-out);
408
+ user-select: none;
409
+ white-space: nowrap;
410
+ }
411
+ .incremark-code-btn:hover:not(:disabled) {
412
+ background-color: var(--incremark-color-border-strong);
413
+ color: var(--incremark-color-text-inverse);
414
+ }
415
+ .incremark-code-btn:active:not(:disabled) {
416
+ transform: translateY(1px);
417
+ }
418
+ .incremark-code-btn:disabled {
419
+ opacity: 0.5;
420
+ cursor: not-allowed;
421
+ }
422
+ /**
423
+ * Heading 组件样式
424
+ */
425
+ .incremark-heading {
426
+ margin: var(--incremark-spacing-md) 0;
427
+ font-weight: var(--incremark-typography-font-weight-semibold);
428
+ line-height: var(--incremark-typography-line-height-tight);
429
+ color: var(--incremark-color-text-primary);
430
+ /* h1 特殊样式:带下边框 */
431
+ /* h6 特殊样式:颜色较淡 */
432
+ }
433
+ .incremark-heading.h1 {
434
+ font-size: var(--incremark-typography-font-size-heading-h1);
435
+ border-bottom: 1px solid var(--incremark-color-border-default);
436
+ padding-bottom: var(--incremark-spacing-sm);
437
+ }
438
+ .incremark-heading.h2 {
439
+ font-size: var(--incremark-typography-font-size-heading-h2);
440
+ }
441
+ .incremark-heading.h3 {
442
+ font-size: var(--incremark-typography-font-size-heading-h3);
443
+ }
444
+ .incremark-heading.h4 {
445
+ font-size: var(--incremark-typography-font-size-heading-h4);
446
+ }
447
+ .incremark-heading.h5 {
448
+ font-size: var(--incremark-typography-font-size-heading-h5);
449
+ }
450
+ .incremark-heading.h6 {
451
+ font-size: var(--incremark-typography-font-size-heading-h6);
452
+ color: var(--incremark-color-text-secondary);
453
+ }
454
+ /**
455
+ * Paragraph 组件样式
456
+ */
457
+ .incremark-paragraph {
458
+ margin: var(--incremark-spacing-lg) 0;
459
+ line-height: var(--incremark-typography-line-height-normal);
460
+ color: var(--incremark-color-text-primary);
461
+ }
462
+ /**
463
+ * Inline Code 组件样式
464
+ */
465
+ .incremark-inline-code {
466
+ padding: var(--incremark-spacing-xs) var(--incremark-spacing-sm);
467
+ background: var(--incremark-color-code-inline-background);
468
+ border-radius: var(--incremark-border-radius-sm);
469
+ font-family: var(--incremark-typography-font-family-mono);
470
+ font-size: var(--incremark-typography-font-size-sm);
471
+ color: var(--incremark-color-code-inline-text);
472
+ }
473
+ /**
474
+ * Image 组件样式
475
+ */
476
+ .incremark-image {
477
+ max-width: 100%;
478
+ height: auto;
479
+ display: block;
480
+ margin: var(--incremark-spacing-md) 0;
481
+ }
482
+ /**
483
+ * List 组件样式
484
+ */
485
+ /* ============ 列表容器 ============ */
486
+ .incremark-list {
487
+ margin: var(--incremark-spacing-lg) 0;
488
+ padding-left: 2em;
489
+ /* 任务列表:移除默认标记 */
490
+ }
491
+ .incremark-list.task-list {
492
+ list-style: none;
493
+ padding-left: 0;
494
+ }
495
+ /* ============ 列表项 ============ */
496
+ .incremark-list-item {
497
+ margin: var(--incremark-spacing-sm) 0;
498
+ line-height: var(--incremark-typography-line-height-normal);
499
+ /* 任务列表项:移除标记 */
500
+ }
501
+ .incremark-list-item.task-item {
502
+ list-style: none;
503
+ /* 任务标签容器 */
504
+ }
505
+ .incremark-list-item.task-item .task-label {
506
+ display: flex;
507
+ align-items: flex-start;
508
+ gap: var(--incremark-spacing-sm);
509
+ cursor: default;
510
+ /* 复选框 */
511
+ /* 任务内容 */
512
+ }
513
+ .incremark-list-item.task-item .task-label .checkbox {
514
+ margin-top: 0.3em;
515
+ flex-shrink: 0;
516
+ width: 16px;
517
+ height: 16px;
518
+ cursor: pointer;
519
+ accent-color: var(--incremark-color-interactive-checked);
520
+ }
521
+ .incremark-list-item.task-item .task-label .checkbox:checked {
522
+ accent-color: var(--incremark-color-interactive-checked);
523
+ }
524
+ .incremark-list-item.task-item .task-label .task-content {
525
+ flex: 1;
526
+ }
527
+ /**
528
+ * Table 组件样式
529
+ */
530
+ .incremark-table-wrapper {
531
+ overflow-x: auto;
532
+ margin: var(--incremark-spacing-lg) 0;
533
+ }
534
+ .incremark-table {
535
+ width: 100%;
536
+ border-collapse: collapse;
537
+ font-size: var(--incremark-typography-font-size-base);
538
+ /* 固定表格布局,避免打字机效果时列宽抖动 */
539
+ table-layout: fixed;
540
+ }
541
+ .incremark-table th,
542
+ .incremark-table td {
543
+ border: 1px solid var(--incremark-color-border-default);
544
+ padding: var(--incremark-spacing-md) var(--incremark-spacing-lg);
545
+ }
546
+ .incremark-table th {
547
+ background: var(--incremark-color-background-elevated);
548
+ font-weight: var(--incremark-typography-font-weight-semibold);
549
+ }
550
+ .incremark-table tr:nth-child(even) {
551
+ background: var(--incremark-color-background-elevated);
552
+ }
553
+ /**
554
+ * Blockquote 组件样式
555
+ */
556
+ .incremark-blockquote {
557
+ position: relative;
558
+ margin: var(--incremark-spacing-lg) 0;
559
+ padding: var(--incremark-spacing-md) var(--incremark-spacing-lg);
560
+ background: var(--incremark-color-background-elevated);
561
+ border-radius: 0 var(--incremark-border-radius-md) var(--incremark-border-radius-md) 0;
562
+ color: var(--incremark-color-text-secondary);
563
+ }
564
+ .incremark-blockquote::before {
565
+ content: '';
566
+ position: absolute;
567
+ width: 4px;
568
+ border-radius: 2px;
569
+ background: var(--incremark-color-brand-primary);
570
+ left: 0;
571
+ top: 0;
572
+ bottom: 0;
573
+ }
574
+ .incremark-blockquote p {
575
+ margin: var(--incremark-spacing-md) 0;
576
+ }
577
+ .incremark-blockquote p:first-child {
578
+ margin-top: 0;
579
+ }
580
+ .incremark-blockquote p:last-child {
581
+ margin-bottom: 0;
582
+ }
583
+ /**
584
+ * Thematic Break 组件样式
585
+ */
586
+ .incremark-hr {
587
+ margin: 2em 0;
588
+ border: none;
589
+ border-top: 2px solid var(--incremark-color-border-subtle);
590
+ }
591
+ /**
592
+ * Code Block 组件样式
593
+ */
594
+ /* ============ 代码块容器 ============ */
595
+ .incremark-code {
596
+ margin: var(--incremark-spacing-lg) 0;
597
+ border-radius: var(--incremark-border-radius-lg);
598
+ overflow: hidden;
599
+ background: var(--incremark-color-code-block-background);
600
+ }
601
+ /* ============ 代码块头部 ============ */
602
+ .code-header {
603
+ display: flex;
604
+ justify-content: space-between;
605
+ align-items: center;
606
+ padding: var(--incremark-spacing-md) var(--incremark-spacing-lg);
607
+ background: var(--incremark-color-code-header-background);
608
+ border-bottom: 1px solid var(--incremark-color-border-strong);
609
+ font-size: var(--incremark-typography-font-size-sm);
610
+ }
611
+ .code-header .language {
612
+ color: var(--incremark-color-text-tertiary);
613
+ text-transform: uppercase;
614
+ font-weight: var(--incremark-typography-font-weight-medium);
615
+ letter-spacing: 0.5px;
616
+ }
617
+ /* ============ 代码按钮样式(引用公共样式)============ */
618
+ .incremark-code .code-btn {
619
+ padding: var(--incremark-spacing-xs) var(--incremark-spacing-md);
620
+ border: 1px solid var(--incremark-color-border-strong);
621
+ border-radius: var(--incremark-border-radius-sm);
622
+ background: transparent;
623
+ color: var(--incremark-color-text-tertiary);
624
+ font-size: var(--incremark-typography-font-size-sm);
625
+ font-weight: var(--incremark-typography-font-weight-medium);
626
+ cursor: pointer;
627
+ transition: all var(--incremark-animation-duration-normal) var(--incremark-animation-easing-ease-out);
628
+ user-select: none;
629
+ white-space: nowrap;
630
+ }
631
+ .incremark-code .code-btn:hover:not(:disabled) {
632
+ background-color: var(--incremark-color-border-strong);
633
+ color: var(--incremark-color-text-inverse);
634
+ }
635
+ .incremark-code .code-btn:active:not(:disabled) {
636
+ transform: translateY(1px);
637
+ }
638
+ .incremark-code .code-btn:disabled {
639
+ opacity: 0.5;
640
+ cursor: not-allowed;
641
+ }
642
+ /* ============ 代码内容区域 ============ */
643
+ .code-content {
644
+ overflow-x: auto;
645
+ }
646
+ .code-loading {
647
+ opacity: 0.7;
648
+ }
649
+ /* ============ Shiki 高亮样式 ============ */
650
+ .shiki-wrapper pre {
651
+ margin: 0;
652
+ padding: var(--incremark-spacing-lg);
653
+ background: transparent !important;
654
+ overflow-x: auto;
655
+ }
656
+ .shiki-wrapper code {
657
+ font-family: var(--incremark-typography-font-family-mono);
658
+ font-size: var(--incremark-typography-font-size-base);
659
+ line-height: var(--incremark-typography-line-height-normal);
660
+ }
661
+ /* ============ 回退样式(无高亮时) ============ */
662
+ .code-fallback,
663
+ .code-loading pre {
664
+ margin: 0;
665
+ padding: var(--incremark-spacing-lg);
666
+ overflow-x: auto;
667
+ background: transparent;
668
+ }
669
+ .code-fallback code,
670
+ .code-loading code {
671
+ font-family: var(--incremark-typography-font-family-mono);
672
+ font-size: var(--incremark-typography-font-size-base);
673
+ line-height: var(--incremark-typography-line-height-normal);
674
+ color: var(--incremark-color-code-block-text);
675
+ }
676
+ /**
677
+ * Mermaid 图表组件样式
678
+ */
679
+ /* ============ Mermaid 容器 ============ */
680
+ .incremark-mermaid {
681
+ margin: var(--incremark-spacing-lg) 0;
682
+ border-radius: var(--incremark-border-radius-lg);
683
+ overflow: hidden;
684
+ background: var(--incremark-color-code-block-background);
685
+ }
686
+ /* ============ Mermaid 头部 ============ */
687
+ .mermaid-header {
688
+ display: flex;
689
+ justify-content: space-between;
690
+ align-items: center;
691
+ padding: var(--incremark-spacing-md) var(--incremark-spacing-lg);
692
+ background: var(--incremark-color-code-header-background);
693
+ border-bottom: 1px solid var(--incremark-color-border-strong);
694
+ font-size: var(--incremark-typography-font-size-sm);
695
+ }
696
+ .mermaid-header .language {
697
+ color: var(--incremark-color-text-tertiary);
698
+ text-transform: uppercase;
699
+ font-weight: var(--incremark-typography-font-weight-medium);
700
+ letter-spacing: 0.5px;
701
+ }
702
+ /* ============ Mermaid 操作按钮(引用公共样式)============ */
703
+ .incremark-mermaid .code-btn {
704
+ padding: var(--incremark-spacing-xs) var(--incremark-spacing-md);
705
+ border: 1px solid var(--incremark-color-border-strong);
706
+ border-radius: var(--incremark-border-radius-sm);
707
+ background: transparent;
708
+ color: var(--incremark-color-text-tertiary);
709
+ font-size: var(--incremark-typography-font-size-sm);
710
+ font-weight: var(--incremark-typography-font-weight-medium);
711
+ cursor: pointer;
712
+ transition: all var(--incremark-animation-duration-normal) var(--incremark-animation-easing-ease-out);
713
+ user-select: none;
714
+ white-space: nowrap;
715
+ }
716
+ .incremark-mermaid .code-btn:hover:not(:disabled) {
717
+ background-color: var(--incremark-color-border-strong);
718
+ color: var(--incremark-color-text-inverse);
719
+ }
720
+ .incremark-mermaid .code-btn:active:not(:disabled) {
721
+ transform: translateY(1px);
722
+ }
723
+ .incremark-mermaid .code-btn:disabled {
724
+ opacity: 0.5;
725
+ cursor: not-allowed;
726
+ }
727
+ /* ============ Mermaid 操作按钮组 ============ */
728
+ .mermaid-actions {
729
+ display: flex;
730
+ gap: var(--incremark-spacing-sm);
731
+ }
732
+ /* ============ Mermaid 内容区域 ============ */
733
+ .mermaid-content {
734
+ padding: var(--incremark-spacing-lg);
735
+ min-height: 100px;
736
+ }
737
+ .mermaid-loading {
738
+ color: var(--incremark-color-text-tertiary);
739
+ font-size: var(--incremark-typography-font-size-base);
740
+ }
741
+ .mermaid-source-code {
742
+ margin: 0;
743
+ padding: var(--incremark-spacing-md);
744
+ background: var(--incremark-color-code-block-background);
745
+ border-radius: var(--incremark-border-radius-sm);
746
+ color: var(--incremark-color-code-block-text);
747
+ font-family: var(--incremark-typography-font-family-mono);
748
+ font-size: var(--incremark-typography-font-size-sm);
749
+ line-height: var(--incremark-typography-line-height-normal);
750
+ white-space: pre-wrap;
751
+ overflow-x: auto;
752
+ }
753
+ /* ============ Mermaid SVG 渲染 ============ */
754
+ .mermaid-svg {
755
+ overflow-x: auto;
756
+ }
757
+ .mermaid-svg :deep(svg) {
758
+ max-width: 100%;
759
+ height: auto;
760
+ }
761
+ /**
762
+ * Math 组件样式
763
+ */
764
+ .incremark-math-inline {
765
+ display: inline;
766
+ }
767
+ .incremark-math-block {
768
+ margin: var(--incremark-spacing-lg) 0;
769
+ padding: var(--incremark-spacing-lg);
770
+ overflow-x: auto;
771
+ text-align: center;
772
+ }
773
+ .math-source {
774
+ background: var(--incremark-color-background-elevated);
775
+ padding: var(--incremark-spacing-xs) var(--incremark-spacing-sm);
776
+ border-radius: var(--incremark-border-radius-sm);
777
+ font-size: var(--incremark-typography-font-size-sm);
778
+ color: var(--incremark-color-text-tertiary);
779
+ }
780
+ .math-source-block {
781
+ margin: 0;
782
+ padding: var(--incremark-spacing-lg);
783
+ background: var(--incremark-color-background-elevated);
784
+ border-radius: var(--incremark-border-radius-sm);
785
+ text-align: left;
786
+ }
787
+ .math-source-block code {
788
+ font-family: var(--incremark-typography-font-family-mono);
789
+ font-size: var(--incremark-typography-font-size-sm);
790
+ color: var(--incremark-color-text-primary);
791
+ }
792
+ .math-rendered .katex {
793
+ font-size: var(--incremark-typography-font-size-md);
794
+ }
795
+ .math-rendered .katex-display {
796
+ margin: 0;
797
+ overflow-x: auto;
798
+ overflow-y: hidden;
799
+ }
800
+ /**
801
+ * Footnotes 组件样式
802
+ *
803
+ * 脚注在文档底部显示,包含标题、分隔线和列表
804
+ */
805
+ .incremark-footnotes {
806
+ padding-top: var(--incremark-spacing-md);
807
+ font-size: var(--incremark-typography-font-size-base);
808
+ }
809
+ .incremark-footnotes .incremark-list {
810
+ margin-bottom: var(--incremark-spacing-sm) 0;
811
+ }
812
+ .incremark-footnotes-divider {
813
+ margin-bottom: var(--incremark-spacing-md);
814
+ border: none;
815
+ border-top: 1px solid var(--incremark-color-border-subtle);
816
+ }
817
+ .incremark-footnotes-title {
818
+ font-size: var(--incremark-typography-font-size-md);
819
+ font-weight: var(--incremark-typography-font-weight-semibold);
820
+ color: var(--incremark-color-text-primary);
821
+ }
822
+ .incremark-footnotes-list {
823
+ list-style: none;
824
+ padding-left: 0;
825
+ counter-reset: footnote-counter;
826
+ }
827
+ .incremark-footnote-item {
828
+ display: flex;
829
+ align-items: flex-start;
830
+ gap: var(--incremark-spacing-sm);
831
+ padding: var(--incremark-spacing-xs);
832
+ border-radius: var(--incremark-border-radius-sm);
833
+ transition: background-color var(--incremark-animation-duration-fast) var(--incremark-animation-easing-ease-in-out);
834
+ line-height: var(--incremark-typography-line-height-normal);
835
+ }
836
+ .incremark-footnote-item:target {
837
+ background-color: var(--incremark-color-neutral-2);
838
+ }
839
+ .incremark-footnote-content {
840
+ flex: 1;
841
+ display: flex;
842
+ gap: var(--incremark-spacing-sm);
843
+ }
844
+ .incremark-footnote-number {
845
+ flex-shrink: 0;
846
+ font-weight: var(--incremark-typography-font-weight-semibold);
847
+ color: var(--incremark-color-text-secondary);
848
+ line-height: var(--incremark-typography-line-height-normal);
849
+ }
850
+ .incremark-footnote-body {
851
+ flex: 1;
852
+ }
853
+ .incremark-footnote-body > :first-child {
854
+ margin-top: 0;
855
+ }
856
+ .incremark-footnote-body > :last-child {
857
+ margin-bottom: 0;
858
+ }
859
+ .incremark-footnote-body p {
860
+ margin: var(--incremark-spacing-xs) 0;
861
+ }
862
+ .incremark-footnote-backref {
863
+ flex-shrink: 0;
864
+ color: var(--incremark-color-interactive-link);
865
+ text-decoration: none;
866
+ padding: 0 var(--incremark-spacing-xs);
867
+ border-radius: var(--incremark-border-radius-sm);
868
+ transition: background-color var(--incremark-animation-duration-fast) var(--incremark-animation-easing-ease-in-out);
869
+ line-height: var(--incremark-typography-line-height-normal);
870
+ }
871
+ .incremark-footnote-backref:hover {
872
+ background-color: var(--incremark-color-neutral-2);
873
+ }
874
+ /**
875
+ * HTML Element 组件样式
876
+ *
877
+ * 用于渲染 HTML 元素节点和未知子节点类型
878
+ */
879
+ /**
880
+ * 未知子节点类型样式
881
+ *
882
+ * 当遇到无法识别的节点类型时,使用此样式显示调试信息
883
+ */
884
+ .incremark-unknown-child {
885
+ color: var(--incremark-color-text-tertiary);
886
+ font-style: italic;
887
+ }
888
+ /**
889
+ * AutoScrollContainer 组件样式
890
+ */
891
+ .auto-scroll-container {
892
+ overflow-y: auto;
893
+ height: 100%;
894
+ }
895
+ /**
896
+ * Default 组件样式(用于未知节点类型的调试显示)
897
+ */
898
+ .incremark-default {
899
+ margin: var(--incremark-spacing-md) 0;
900
+ padding: var(--incremark-spacing-md);
901
+ background: var(--incremark-color-background-elevated);
902
+ border: 1px solid var(--incremark-color-border-strong);
903
+ border-radius: var(--incremark-border-radius-md);
904
+ font-size: 12px;
905
+ }
906
+ .incremark-default .type-badge {
907
+ display: inline-block;
908
+ padding: 2px var(--incremark-spacing-sm);
909
+ background: var(--incremark-color-border-strong);
910
+ border-radius: var(--incremark-border-radius-md);
911
+ font-weight: var(--incremark-typography-font-weight-semibold);
912
+ margin-bottom: var(--incremark-spacing-sm);
913
+ }
914
+ .incremark-default pre {
915
+ margin: 0;
916
+ white-space: pre-wrap;
917
+ word-break: break-all;
918
+ font-size: 11px;
919
+ }
920
+ /**
921
+ * HTML 节点样式(显示原始 HTML 源代码)
922
+ */
923
+ .incremark-html-code {
924
+ margin: var(--incremark-spacing-md) 0;
925
+ padding: var(--incremark-spacing-md) var(--incremark-spacing-lg);
926
+ background: var(--incremark-color-code-block-background);
927
+ border-radius: var(--incremark-border-radius-md);
928
+ overflow-x: auto;
929
+ }
930
+ .incremark-html-code code {
931
+ font-family: var(--incremark-typography-font-family-mono);
932
+ font-size: 14px;
933
+ line-height: var(--incremark-typography-line-height-normal);
934
+ color: var(--incremark-color-code-block-text);
935
+ white-space: pre-wrap;
936
+ word-break: break-all;
937
+ }