@chengzhao-dev/dsh-quarto-book 0.4.2 → 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 (55) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/package.json +5 -2
  4. package/skills/designing-theme/SKILL.md +2 -2
  5. package/skills/designing-theme/assets/theme/css/base.css +216 -55
  6. package/skills/designing-theme/assets/theme/css/callouts.css +32 -23
  7. package/skills/designing-theme/assets/theme/css/code.css +84 -2
  8. package/skills/designing-theme/assets/theme/css/content.css +152 -36
  9. package/skills/designing-theme/assets/theme/css/landing.css +150 -52
  10. package/skills/designing-theme/assets/theme/css/nav.css +462 -35
  11. package/skills/designing-theme/assets/theme/css/sidebar.css +76 -31
  12. package/skills/designing-theme/assets/theme/css/tokens.css +34 -16
  13. package/skills/designing-theme/assets/theme/includes/fonts.html +1 -1
  14. package/skills/designing-theme/assets/theme/includes/footer.html +16 -7
  15. package/skills/designing-theme/assets/theme/includes/palette.html +420 -0
  16. package/skills/designing-theme/assets/theme/palettes/flexoki/brand-mark.svg +3 -0
  17. package/skills/designing-theme/assets/theme/palettes/flexoki/favicon-dark.svg +5 -0
  18. package/skills/designing-theme/assets/theme/palettes/flexoki/favicon-light.svg +5 -0
  19. package/skills/designing-theme/assets/theme/palettes/flexoki/highlight-dark.theme +214 -0
  20. package/skills/designing-theme/assets/theme/palettes/flexoki/highlight-light.theme +214 -0
  21. package/skills/designing-theme/assets/theme/palettes/flexoki/meta.md +53 -0
  22. package/skills/designing-theme/assets/theme/palettes/flexoki/theme-dark.scss +43 -0
  23. package/skills/designing-theme/assets/theme/palettes/flexoki/theme-light.scss +40 -0
  24. package/skills/designing-theme/assets/theme/palettes/flexoki/tokens.css +156 -0
  25. package/skills/designing-theme/assets/theme/palettes/hill-light/brand-mark.svg +3 -0
  26. package/skills/designing-theme/assets/theme/palettes/hill-light/favicon-dark.svg +5 -0
  27. package/skills/designing-theme/assets/theme/palettes/hill-light/favicon-light.svg +5 -0
  28. package/skills/designing-theme/assets/theme/palettes/hill-light/meta.md +78 -0
  29. package/skills/designing-theme/assets/theme/palettes/hill-light/syntax.css +150 -0
  30. package/skills/designing-theme/assets/theme/palettes/hill-light/tokens.css +322 -0
  31. package/skills/designing-theme/assets/theme/palettes/solarized/brand-mark.svg +3 -0
  32. package/skills/designing-theme/assets/theme/palettes/solarized/favicon-dark.svg +5 -0
  33. package/skills/designing-theme/assets/theme/palettes/solarized/favicon-light.svg +5 -0
  34. package/skills/designing-theme/assets/theme/palettes/solarized/highlight-dark.theme +214 -0
  35. package/skills/designing-theme/assets/theme/palettes/solarized/highlight-light.theme +214 -0
  36. package/skills/designing-theme/assets/theme/palettes/solarized/meta.md +66 -0
  37. package/skills/designing-theme/assets/theme/palettes/solarized/syntax.css +67 -0
  38. package/skills/designing-theme/assets/theme/palettes/solarized/theme-dark.scss +43 -0
  39. package/skills/designing-theme/assets/theme/palettes/solarized/theme-light.scss +41 -0
  40. package/skills/designing-theme/assets/theme/palettes/solarized/tokens.css +154 -0
  41. package/skills/designing-theme/knowledge/reading-surface.md +27 -15
  42. package/skills/designing-theme/references/theme-spine.md +2 -2
  43. package/skills/designing-theme/references/theme-system.md +82 -36
  44. package/skills/designing-theme/scripts/checking-layout.py +306 -48
  45. package/skills/designing-theme/scripts/measuring-pages.mjs +40 -3
  46. package/skills/writing-quarto/quarto/render.md +2 -2
  47. package/skills/writing-quarto/scripts/checking-dom.py +14 -7
  48. package/skills/designing-theme/assets/theme/assets/brand-mark.svg +0 -4
  49. package/skills/designing-theme/assets/theme/assets/favicon.svg +0 -9
  50. package/skills/designing-theme/assets/theme/palettes/github/highlight-dark.theme +0 -213
  51. package/skills/designing-theme/assets/theme/palettes/github/highlight-light.theme +0 -213
  52. package/skills/designing-theme/assets/theme/palettes/github/meta.md +0 -38
  53. package/skills/designing-theme/assets/theme/palettes/github/theme-dark.scss +0 -35
  54. package/skills/designing-theme/assets/theme/palettes/github/theme-light.scss +0 -34
  55. package/skills/designing-theme/assets/theme/palettes/github/tokens.css +0 -160
@@ -0,0 +1,150 @@
1
+ /* ============================================================
2
+ Palette: hill-light · 语法高亮覆盖层
3
+ Quarto 只编译一对 highlight-style(Flexoki);山光四时的语法色
4
+ 在这里按 html[data-palette="hill-light"][data-mode] 覆盖。
5
+ 只写颜色,不改字号、字重与布局。
6
+ ============================================================ */
7
+
8
+ /* 溪山晓雾 · 06:00–10:59 */
9
+ html[data-palette="hill-light"][data-mode="dawn"] code span:not([class]),
10
+ html[data-palette="hill-light"][data-mode="dawn"] div.sourceCode,
11
+ html[data-palette="hill-light"][data-mode="dawn"] div.sourceCode pre.sourceCode { color: #2B3538; }
12
+
13
+ html[data-palette="hill-light"][data-mode="dawn"] code span.al { color: #8C352C; font-weight: 600; }
14
+ html[data-palette="hill-light"][data-mode="dawn"] code span.an { color: #5F6E6F; }
15
+ html[data-palette="hill-light"][data-mode="dawn"] code span.at { color: #8A5A12; }
16
+ html[data-palette="hill-light"][data-mode="dawn"] code span.bn { color: #8A5A12; }
17
+ html[data-palette="hill-light"][data-mode="dawn"] code span.bu { color: #596A97; }
18
+ html[data-palette="hill-light"][data-mode="dawn"] code span.cf { color: #2D6A66; }
19
+ html[data-palette="hill-light"][data-mode="dawn"] code span.ch { color: #2F6B4F; }
20
+ html[data-palette="hill-light"][data-mode="dawn"] code span.cn { color: #8A5A12; }
21
+ html[data-palette="hill-light"][data-mode="dawn"] code span.co { color: #5F6E6F; }
22
+ html[data-palette="hill-light"][data-mode="dawn"] code span.cv { color: #5F6E6F; }
23
+ html[data-palette="hill-light"][data-mode="dawn"] code span.do { color: #5F6E6F; }
24
+ html[data-palette="hill-light"][data-mode="dawn"] code span.dt { color: #40548A; }
25
+ html[data-palette="hill-light"][data-mode="dawn"] code span.dv { color: #8A5A12; }
26
+ html[data-palette="hill-light"][data-mode="dawn"] code span.er { color: #8C352C; text-decoration: underline; }
27
+ html[data-palette="hill-light"][data-mode="dawn"] code span.ex { color: #8C352C; font-weight: 600; }
28
+ html[data-palette="hill-light"][data-mode="dawn"] code span.fl { color: #8A5A12; }
29
+ html[data-palette="hill-light"][data-mode="dawn"] code span.fu { color: #596A97; }
30
+ html[data-palette="hill-light"][data-mode="dawn"] code span.im { color: #8A5A12; }
31
+ html[data-palette="hill-light"][data-mode="dawn"] code span.in { color: #5F6E6F; }
32
+ html[data-palette="hill-light"][data-mode="dawn"] code span.kw { color: #2D6A66; }
33
+ html[data-palette="hill-light"][data-mode="dawn"] code span.op { color: #2D6A66; }
34
+ html[data-palette="hill-light"][data-mode="dawn"] code span.ot { color: #40548A; }
35
+ html[data-palette="hill-light"][data-mode="dawn"] code span.pp { color: #8A5A12; }
36
+ html[data-palette="hill-light"][data-mode="dawn"] code span.re { color: #5F6E6F; }
37
+ html[data-palette="hill-light"][data-mode="dawn"] code span.sc { color: #8C352C; }
38
+ html[data-palette="hill-light"][data-mode="dawn"] code span.ss { color: #2F6B4F; }
39
+ html[data-palette="hill-light"][data-mode="dawn"] code span.st { color: #2F6B4F; }
40
+ html[data-palette="hill-light"][data-mode="dawn"] code span.va { color: #596A97; }
41
+ html[data-palette="hill-light"][data-mode="dawn"] code span.vs { color: #2F6B4F; }
42
+ html[data-palette="hill-light"][data-mode="dawn"] code span.wa { color: #8A5A12; }
43
+
44
+ /* 溪山午荫 · 11:00–16:59 */
45
+ html[data-palette="hill-light"][data-mode="noon"] code span:not([class]),
46
+ html[data-palette="hill-light"][data-mode="noon"] div.sourceCode,
47
+ html[data-palette="hill-light"][data-mode="noon"] div.sourceCode pre.sourceCode { color: #263230; }
48
+
49
+ html[data-palette="hill-light"][data-mode="noon"] code span.al { color: #853027; font-weight: 600; }
50
+ html[data-palette="hill-light"][data-mode="noon"] code span.an { color: #5A6B62; }
51
+ html[data-palette="hill-light"][data-mode="noon"] code span.at { color: #7E510F; }
52
+ html[data-palette="hill-light"][data-mode="noon"] code span.bn { color: #7E510F; }
53
+ html[data-palette="hill-light"][data-mode="noon"] code span.bu { color: #566694; }
54
+ html[data-palette="hill-light"][data-mode="noon"] code span.cf { color: #1D6A55; }
55
+ html[data-palette="hill-light"][data-mode="noon"] code span.ch { color: #276847; }
56
+ html[data-palette="hill-light"][data-mode="noon"] code span.cn { color: #7E510F; }
57
+ html[data-palette="hill-light"][data-mode="noon"] code span.co { color: #5A6B62; }
58
+ html[data-palette="hill-light"][data-mode="noon"] code span.cv { color: #5A6B62; }
59
+ html[data-palette="hill-light"][data-mode="noon"] code span.do { color: #5A6B62; }
60
+ html[data-palette="hill-light"][data-mode="noon"] code span.dt { color: #3B4F86; }
61
+ html[data-palette="hill-light"][data-mode="noon"] code span.dv { color: #7E510F; }
62
+ html[data-palette="hill-light"][data-mode="noon"] code span.er { color: #853027; text-decoration: underline; }
63
+ html[data-palette="hill-light"][data-mode="noon"] code span.ex { color: #853027; font-weight: 600; }
64
+ html[data-palette="hill-light"][data-mode="noon"] code span.fl { color: #7E510F; }
65
+ html[data-palette="hill-light"][data-mode="noon"] code span.fu { color: #566694; }
66
+ html[data-palette="hill-light"][data-mode="noon"] code span.im { color: #7E510F; }
67
+ html[data-palette="hill-light"][data-mode="noon"] code span.in { color: #5A6B62; }
68
+ html[data-palette="hill-light"][data-mode="noon"] code span.kw { color: #1D6A55; }
69
+ html[data-palette="hill-light"][data-mode="noon"] code span.op { color: #1D6A55; }
70
+ html[data-palette="hill-light"][data-mode="noon"] code span.ot { color: #3B4F86; }
71
+ html[data-palette="hill-light"][data-mode="noon"] code span.pp { color: #7E510F; }
72
+ html[data-palette="hill-light"][data-mode="noon"] code span.re { color: #5A6B62; }
73
+ html[data-palette="hill-light"][data-mode="noon"] code span.sc { color: #853027; }
74
+ html[data-palette="hill-light"][data-mode="noon"] code span.ss { color: #276847; }
75
+ html[data-palette="hill-light"][data-mode="noon"] code span.st { color: #276847; }
76
+ html[data-palette="hill-light"][data-mode="noon"] code span.va { color: #566694; }
77
+ html[data-palette="hill-light"][data-mode="noon"] code span.vs { color: #276847; }
78
+ html[data-palette="hill-light"][data-mode="noon"] code span.wa { color: #7E510F; }
79
+
80
+ /* 溪山暮烟 · 17:00–19:59 */
81
+ html[data-palette="hill-light"][data-mode="dusk"] code span:not([class]),
82
+ html[data-palette="hill-light"][data-mode="dusk"] div.sourceCode,
83
+ html[data-palette="hill-light"][data-mode="dusk"] div.sourceCode pre.sourceCode { color: #3A2C26; }
84
+
85
+ html[data-palette="hill-light"][data-mode="dusk"] code span.al { color: #8A352A; font-weight: 600; }
86
+ html[data-palette="hill-light"][data-mode="dusk"] code span.an { color: #725F55; }
87
+ html[data-palette="hill-light"][data-mode="dusk"] code span.at { color: #8A5518; }
88
+ html[data-palette="hill-light"][data-mode="dusk"] code span.bn { color: #8A5518; }
89
+ html[data-palette="hill-light"][data-mode="dusk"] code span.bu { color: #616486; }
90
+ html[data-palette="hill-light"][data-mode="dusk"] code span.cf { color: #35645D; }
91
+ html[data-palette="hill-light"][data-mode="dusk"] code span.ch { color: #3C6A4C; }
92
+ html[data-palette="hill-light"][data-mode="dusk"] code span.cn { color: #8A5518; }
93
+ html[data-palette="hill-light"][data-mode="dusk"] code span.co { color: #725F55; }
94
+ html[data-palette="hill-light"][data-mode="dusk"] code span.cv { color: #725F55; }
95
+ html[data-palette="hill-light"][data-mode="dusk"] code span.do { color: #725F55; }
96
+ html[data-palette="hill-light"][data-mode="dusk"] code span.dt { color: #4A4F7A; }
97
+ html[data-palette="hill-light"][data-mode="dusk"] code span.dv { color: #8A5518; }
98
+ html[data-palette="hill-light"][data-mode="dusk"] code span.er { color: #8A352A; text-decoration: underline; }
99
+ html[data-palette="hill-light"][data-mode="dusk"] code span.ex { color: #8A352A; font-weight: 600; }
100
+ html[data-palette="hill-light"][data-mode="dusk"] code span.fl { color: #8A5518; }
101
+ html[data-palette="hill-light"][data-mode="dusk"] code span.fu { color: #616486; }
102
+ html[data-palette="hill-light"][data-mode="dusk"] code span.im { color: #8A5518; }
103
+ html[data-palette="hill-light"][data-mode="dusk"] code span.in { color: #725F55; }
104
+ html[data-palette="hill-light"][data-mode="dusk"] code span.kw { color: #35645D; }
105
+ html[data-palette="hill-light"][data-mode="dusk"] code span.op { color: #35645D; }
106
+ html[data-palette="hill-light"][data-mode="dusk"] code span.ot { color: #4A4F7A; }
107
+ html[data-palette="hill-light"][data-mode="dusk"] code span.pp { color: #8A5518; }
108
+ html[data-palette="hill-light"][data-mode="dusk"] code span.re { color: #725F55; }
109
+ html[data-palette="hill-light"][data-mode="dusk"] code span.sc { color: #8A352A; }
110
+ html[data-palette="hill-light"][data-mode="dusk"] code span.ss { color: #3C6A4C; }
111
+ html[data-palette="hill-light"][data-mode="dusk"] code span.st { color: #3C6A4C; }
112
+ html[data-palette="hill-light"][data-mode="dusk"] code span.va { color: #616486; }
113
+ html[data-palette="hill-light"][data-mode="dusk"] code span.vs { color: #3C6A4C; }
114
+ html[data-palette="hill-light"][data-mode="dusk"] code span.wa { color: #8A5518; }
115
+
116
+ /* 溪山夜月 · 20:00–05:59 */
117
+ html[data-palette="hill-light"][data-mode="night"] code span:not([class]),
118
+ html[data-palette="hill-light"][data-mode="night"] div.sourceCode,
119
+ html[data-palette="hill-light"][data-mode="night"] div.sourceCode pre.sourceCode { color: #D7DDD9; }
120
+
121
+ html[data-palette="hill-light"][data-mode="night"] code span.al { color: #DD9585; font-weight: 600; }
122
+ html[data-palette="hill-light"][data-mode="night"] code span.an { color: #87938E; }
123
+ html[data-palette="hill-light"][data-mode="night"] code span.at { color: #D8AB6E; }
124
+ html[data-palette="hill-light"][data-mode="night"] code span.bn { color: #D8AB6E; }
125
+ html[data-palette="hill-light"][data-mode="night"] code span.bu { color: #9FB3D6; }
126
+ html[data-palette="hill-light"][data-mode="night"] code span.cf { color: #8CB9AE; }
127
+ html[data-palette="hill-light"][data-mode="night"] code span.ch { color: #86B894; }
128
+ html[data-palette="hill-light"][data-mode="night"] code span.cn { color: #D8AB6E; }
129
+ html[data-palette="hill-light"][data-mode="night"] code span.co { color: #87938E; }
130
+ html[data-palette="hill-light"][data-mode="night"] code span.cv { color: #87938E; }
131
+ html[data-palette="hill-light"][data-mode="night"] code span.do { color: #87938E; }
132
+ html[data-palette="hill-light"][data-mode="night"] code span.dt { color: #A3B4DD; }
133
+ html[data-palette="hill-light"][data-mode="night"] code span.dv { color: #D8AB6E; }
134
+ html[data-palette="hill-light"][data-mode="night"] code span.er { color: #DD9585; text-decoration: underline; }
135
+ html[data-palette="hill-light"][data-mode="night"] code span.ex { color: #DD9585; font-weight: 600; }
136
+ html[data-palette="hill-light"][data-mode="night"] code span.fl { color: #D8AB6E; }
137
+ html[data-palette="hill-light"][data-mode="night"] code span.fu { color: #9FB3D6; }
138
+ html[data-palette="hill-light"][data-mode="night"] code span.im { color: #D8AB6E; }
139
+ html[data-palette="hill-light"][data-mode="night"] code span.in { color: #87938E; }
140
+ html[data-palette="hill-light"][data-mode="night"] code span.kw { color: #8CB9AE; }
141
+ html[data-palette="hill-light"][data-mode="night"] code span.op { color: #8CB9AE; }
142
+ html[data-palette="hill-light"][data-mode="night"] code span.ot { color: #A3B4DD; }
143
+ html[data-palette="hill-light"][data-mode="night"] code span.pp { color: #D8AB6E; }
144
+ html[data-palette="hill-light"][data-mode="night"] code span.re { color: #87938E; }
145
+ html[data-palette="hill-light"][data-mode="night"] code span.sc { color: #DD9585; }
146
+ html[data-palette="hill-light"][data-mode="night"] code span.ss { color: #86B894; }
147
+ html[data-palette="hill-light"][data-mode="night"] code span.st { color: #86B894; }
148
+ html[data-palette="hill-light"][data-mode="night"] code span.va { color: #9FB3D6; }
149
+ html[data-palette="hill-light"][data-mode="night"] code span.vs { color: #86B894; }
150
+ html[data-palette="hill-light"][data-mode="night"] code span.wa { color: #D8AB6E; }
@@ -0,0 +1,322 @@
1
+ /* ============================================================
2
+ Palette: hill-light · 山光四时(dawn / noon / dusk / night)
3
+ 色值源:D:/Github/hill-light/hill-light-theme/css/tokens.css(单一色值来源)。
4
+ 本文件把山光的「纸/墨/强调/线」映射到本插件的 59 个语义令牌;
5
+ 四种模式由 html[data-mode] 选择,night 同时声明 color-scheme: dark。
6
+ 几何、字号、行高与明暗共用,见 css/tokens.css。
7
+ ============================================================ */
8
+
9
+ html[data-palette="hill-light"][data-mode="dawn"],
10
+ html[data-palette="hill-light"]:not([data-mode]) {
11
+ /* 溪山晓雾 · 06:00–10:59 */
12
+ color-scheme: light;
13
+ }
14
+
15
+ html[data-palette="hill-light"][data-mode="dawn"] body,
16
+ html[data-palette="hill-light"]:not([data-mode]) body {
17
+ /* 溪山晓雾 · 06:00–10:59 · 语义令牌 */
18
+ --body-color: #2B3538;
19
+ --emphasis-color: #2B3538;
20
+ --code-bg: #E9E5DA;
21
+ --code-border: #D6D2C6;
22
+ --code-fg: #2B3538;
23
+ --code-title-bg: #EEEAE0;
24
+ --code-title-fg: #58686B;
25
+ --line-num-color: #556565;
26
+ --inline-code-bg: rgba(43, 53, 56, 0.06);
27
+ --inline-code-fg: #2B3538;
28
+ --text-secondary: #58686B;
29
+ --link-color: #2B3538;
30
+ --link-hover-color: #2D6A66;
31
+ --link-underline: rgba(43, 53, 56, 0.38);
32
+ --text-link: var(--link-color);
33
+ --text-underline: var(--link-underline);
34
+ --action-color: #2D6A66;
35
+ --table-border: #D6D2C6;
36
+ --callout-note-border: #58686B;
37
+ --callout-note-bg: transparent;
38
+ --callout-tip-border: #2F6B4F;
39
+ --callout-tip-bg: transparent;
40
+ --callout-warning-border: #8A5A12;
41
+ --callout-warning-bg: transparent;
42
+ --callout-important-border: #40548A;
43
+ --callout-important-bg: transparent;
44
+ --callout-caution-border: #8C352C;
45
+ --callout-caution-bg: transparent;
46
+ --copy-btn-bg: #E9E5DA;
47
+ --copy-btn-border: #D6D2C6;
48
+ --scrollbar-thumb: #D6D2C6;
49
+ --selection-bg: #CFE0DA;
50
+ --mark-bg: rgba(138, 90, 18, 0.24);
51
+ --sidebar-hover-bg: rgba(43, 53, 56, 0.04);
52
+ --sidebar-active-bg: rgba(45, 106, 102, 0.10);
53
+ --sidebar-fg: #58686B;
54
+ --accent: var(--action-color);
55
+ --navbar-bg: #F2EFE7;
56
+ --navbar-fg: #2B3538;
57
+ --navbar-muted: #58686B;
58
+ --navbar-border: #DCD8CD;
59
+ --navbar-input-bg: #E9E5DA;
60
+ --navbar-hover-bg: rgba(43, 53, 56, 0.04);
61
+ --navbar-secondary-bg: rgba(242, 239, 231, 0.88);
62
+ --dot-accent: #2D6A66;
63
+ --card-bg: transparent;
64
+ --card-border: #D6D2C6;
65
+ --toc-active: var(--body-color);
66
+ --page-bg: #F2EFE7;
67
+ --surface-raised: #F8F5EE;
68
+ --sidebar-bg: transparent;
69
+ --line-num-bg: rgba(43, 53, 56, 0.04);
70
+ --line-hover-bg: rgba(45, 106, 102, 0.06);
71
+ --overlay-scrim: rgba(0, 0, 0, 0.42);
72
+ }
73
+
74
+ html[data-palette="hill-light"][data-mode="noon"] {
75
+ /* 溪山午荫 · 11:00–16:59 */
76
+ color-scheme: light;
77
+ }
78
+
79
+ html[data-palette="hill-light"][data-mode="noon"] body {
80
+ /* 溪山午荫 · 11:00–16:59 · 语义令牌 */
81
+ --body-color: #263230;
82
+ --emphasis-color: #263230;
83
+ --code-bg: #F0EBDD;
84
+ --code-border: #D8D3C3;
85
+ --code-fg: #263230;
86
+ --code-title-bg: #F5F0E4;
87
+ --code-title-fg: #4F615B;
88
+ --line-num-color: #5A6B62;
89
+ --inline-code-bg: rgba(38, 50, 48, 0.06);
90
+ --inline-code-fg: #263230;
91
+ --text-secondary: #4F615B;
92
+ --link-color: #263230;
93
+ --link-hover-color: #1D6A55;
94
+ --link-underline: rgba(38, 50, 48, 0.38);
95
+ --text-link: var(--link-color);
96
+ --text-underline: var(--link-underline);
97
+ --action-color: #1D6A55;
98
+ --table-border: #D8D3C3;
99
+ --callout-note-border: #4F615B;
100
+ --callout-note-bg: transparent;
101
+ --callout-tip-border: #276847;
102
+ --callout-tip-bg: transparent;
103
+ --callout-warning-border: #7E510F;
104
+ --callout-warning-bg: transparent;
105
+ --callout-important-border: #3B4F86;
106
+ --callout-important-bg: transparent;
107
+ --callout-caution-border: #853027;
108
+ --callout-caution-bg: transparent;
109
+ --copy-btn-bg: #F0EBDD;
110
+ --copy-btn-border: #D8D3C3;
111
+ --scrollbar-thumb: #D8D3C3;
112
+ --selection-bg: #CCE5D8;
113
+ --mark-bg: rgba(126, 81, 15, 0.24);
114
+ --sidebar-hover-bg: rgba(38, 50, 48, 0.04);
115
+ --sidebar-active-bg: rgba(29, 106, 85, 0.10);
116
+ --sidebar-fg: #4F615B;
117
+ --accent: var(--action-color);
118
+ --navbar-bg: #FAF6EC;
119
+ --navbar-fg: #263230;
120
+ --navbar-muted: #4F615B;
121
+ --navbar-border: #E0DACC;
122
+ --navbar-input-bg: #F0EBDD;
123
+ --navbar-hover-bg: rgba(38, 50, 48, 0.04);
124
+ --navbar-secondary-bg: rgba(250, 246, 236, 0.88);
125
+ --dot-accent: #1D6A55;
126
+ --card-bg: transparent;
127
+ --card-border: #D8D3C3;
128
+ --toc-active: var(--body-color);
129
+ --page-bg: #FAF6EC;
130
+ --surface-raised: #FFFCF4;
131
+ --sidebar-bg: transparent;
132
+ --line-num-bg: rgba(38, 50, 48, 0.04);
133
+ --line-hover-bg: rgba(29, 106, 85, 0.06);
134
+ --overlay-scrim: rgba(0, 0, 0, 0.42);
135
+ }
136
+
137
+ html[data-palette="hill-light"][data-mode="dusk"] {
138
+ /* 溪山暮烟 · 17:00–19:59 */
139
+ color-scheme: light;
140
+ }
141
+
142
+ html[data-palette="hill-light"][data-mode="dusk"] body {
143
+ /* 溪山暮烟 · 17:00–19:59 · 语义令牌 */
144
+ --body-color: #3A2C26;
145
+ --emphasis-color: #3A2C26;
146
+ --code-bg: #E8D6C1;
147
+ --code-border: #D8C4AE;
148
+ --code-fg: #3A2C26;
149
+ --code-title-bg: #ECDCC8;
150
+ --code-title-fg: #67534A;
151
+ --line-num-color: #68554B;
152
+ --inline-code-bg: rgba(58, 44, 38, 0.06);
153
+ --inline-code-fg: #3A2C26;
154
+ --text-secondary: #67534A;
155
+ --link-color: #3A2C26;
156
+ --link-hover-color: #35645D;
157
+ --link-underline: rgba(58, 44, 38, 0.38);
158
+ --text-link: var(--link-color);
159
+ --text-underline: var(--link-underline);
160
+ --action-color: #35645D;
161
+ --table-border: #D8C4AE;
162
+ --callout-note-border: #67534A;
163
+ --callout-note-bg: transparent;
164
+ --callout-tip-border: #3C6A4C;
165
+ --callout-tip-bg: transparent;
166
+ --callout-warning-border: #8A5518;
167
+ --callout-warning-bg: transparent;
168
+ --callout-important-border: #4A4F7A;
169
+ --callout-important-bg: transparent;
170
+ --callout-caution-border: #8A352A;
171
+ --callout-caution-bg: transparent;
172
+ --copy-btn-bg: #E8D6C1;
173
+ --copy-btn-border: #D8C4AE;
174
+ --scrollbar-thumb: #D8C4AE;
175
+ --selection-bg: #E4CFB6;
176
+ --mark-bg: rgba(138, 85, 24, 0.24);
177
+ --sidebar-hover-bg: rgba(58, 44, 38, 0.04);
178
+ --sidebar-active-bg: rgba(53, 100, 93, 0.10);
179
+ --sidebar-fg: #67534A;
180
+ --accent: var(--action-color);
181
+ --navbar-bg: #F1E2D0;
182
+ --navbar-fg: #3A2C26;
183
+ --navbar-muted: #67534A;
184
+ --navbar-border: #DECCB8;
185
+ --navbar-input-bg: #E8D6C1;
186
+ --navbar-hover-bg: rgba(58, 44, 38, 0.04);
187
+ --navbar-secondary-bg: rgba(241, 226, 208, 0.88);
188
+ --dot-accent: #35645D;
189
+ --card-bg: transparent;
190
+ --card-border: #D8C4AE;
191
+ --toc-active: var(--body-color);
192
+ --page-bg: #F1E2D0;
193
+ --surface-raised: #F8EBDA;
194
+ --sidebar-bg: transparent;
195
+ --line-num-bg: rgba(58, 44, 38, 0.04);
196
+ --line-hover-bg: rgba(53, 100, 93, 0.06);
197
+ --overlay-scrim: rgba(0, 0, 0, 0.42);
198
+ }
199
+
200
+ html[data-palette="hill-light"][data-mode="night"] {
201
+ /* 溪山夜月 · 20:00–05:59 */
202
+ color-scheme: dark;
203
+ }
204
+
205
+ html[data-palette="hill-light"][data-mode="night"] body {
206
+ /* 溪山夜月 · 20:00–05:59 · 语义令牌 */
207
+ --body-color: #D7DDD9;
208
+ --emphasis-color: #D7DDD9;
209
+ --code-bg: #283132;
210
+ --code-border: #3A4644;
211
+ --code-fg: #D7DDD9;
212
+ --code-title-bg: #2E3738;
213
+ --code-title-fg: #A2AEA9;
214
+ --line-num-color: #8F9B96;
215
+ --inline-code-bg: rgba(215, 221, 217, 0.08);
216
+ --inline-code-fg: #D7DDD9;
217
+ --text-secondary: #A2AEA9;
218
+ --link-color: #D7DDD9;
219
+ --link-hover-color: #8CB9AE;
220
+ --link-underline: rgba(215, 221, 217, 0.38);
221
+ --text-link: var(--link-color);
222
+ --text-underline: var(--link-underline);
223
+ --action-color: #8CB9AE;
224
+ --table-border: #3A4644;
225
+ --callout-note-border: #A2AEA9;
226
+ --callout-note-bg: transparent;
227
+ --callout-tip-border: #86B894;
228
+ --callout-tip-bg: transparent;
229
+ --callout-warning-border: #D8AB6E;
230
+ --callout-warning-bg: transparent;
231
+ --callout-important-border: #A3B4DD;
232
+ --callout-important-bg: transparent;
233
+ --callout-caution-border: #DD9585;
234
+ --callout-caution-bg: transparent;
235
+ --copy-btn-bg: #283132;
236
+ --copy-btn-border: rgba(162, 174, 169, 0.40);
237
+ --scrollbar-thumb: #3A4644;
238
+ --selection-bg: #35514B;
239
+ --mark-bg: rgba(216, 171, 110, 0.24);
240
+ --sidebar-hover-bg: rgba(215, 221, 217, 0.06);
241
+ --sidebar-active-bg: rgba(140, 185, 174, 0.10);
242
+ --sidebar-fg: #A2AEA9;
243
+ --accent: var(--action-color);
244
+ --navbar-bg: #1B2223;
245
+ --navbar-fg: #D7DDD9;
246
+ --navbar-muted: #A2AEA9;
247
+ --navbar-border: #313C3A;
248
+ --navbar-input-bg: #283132;
249
+ --navbar-hover-bg: rgba(215, 221, 217, 0.06);
250
+ --navbar-secondary-bg: rgba(27, 34, 35, 0.88);
251
+ --dot-accent: #8CB9AE;
252
+ --card-bg: transparent;
253
+ --card-border: #3A4644;
254
+ --toc-active: var(--body-color);
255
+ --page-bg: #1B2223;
256
+ --surface-raised: #232B2C;
257
+ --sidebar-bg: transparent;
258
+ --line-num-bg: rgba(215, 221, 217, 0.04);
259
+ --line-hover-bg: rgba(140, 185, 174, 0.06);
260
+ --overlay-scrim: rgba(0, 0, 0, 0.62);
261
+ }
262
+
263
+ @media print {
264
+ html[data-palette="hill-light"][data-mode="night"] { color-scheme: light; }
265
+ html[data-palette="hill-light"][data-mode="night"] body {
266
+ /* 打印 · 夜月换回晓雾纸墨 */
267
+ --body-color: #2B3538;
268
+ --emphasis-color: #2B3538;
269
+ --code-bg: #E9E5DA;
270
+ --code-border: #D6D2C6;
271
+ --code-fg: #2B3538;
272
+ --code-title-bg: #EEEAE0;
273
+ --code-title-fg: #58686B;
274
+ --line-num-color: #556565;
275
+ --inline-code-bg: rgba(43, 53, 56, 0.06);
276
+ --inline-code-fg: #2B3538;
277
+ --text-secondary: #58686B;
278
+ --link-color: #2B3538;
279
+ --link-hover-color: #2D6A66;
280
+ --link-underline: rgba(43, 53, 56, 0.38);
281
+ --text-link: var(--link-color);
282
+ --text-underline: var(--link-underline);
283
+ --action-color: #2D6A66;
284
+ --table-border: #D6D2C6;
285
+ --callout-note-border: #58686B;
286
+ --callout-note-bg: transparent;
287
+ --callout-tip-border: #2F6B4F;
288
+ --callout-tip-bg: transparent;
289
+ --callout-warning-border: #8A5A12;
290
+ --callout-warning-bg: transparent;
291
+ --callout-important-border: #40548A;
292
+ --callout-important-bg: transparent;
293
+ --callout-caution-border: #8C352C;
294
+ --callout-caution-bg: transparent;
295
+ --copy-btn-bg: #E9E5DA;
296
+ --copy-btn-border: #D6D2C6;
297
+ --scrollbar-thumb: #D6D2C6;
298
+ --selection-bg: #CFE0DA;
299
+ --mark-bg: rgba(138, 90, 18, 0.24);
300
+ --sidebar-hover-bg: rgba(43, 53, 56, 0.04);
301
+ --sidebar-active-bg: rgba(45, 106, 102, 0.10);
302
+ --sidebar-fg: #58686B;
303
+ --accent: var(--action-color);
304
+ --navbar-bg: #F2EFE7;
305
+ --navbar-fg: #2B3538;
306
+ --navbar-muted: #58686B;
307
+ --navbar-border: #DCD8CD;
308
+ --navbar-input-bg: #E9E5DA;
309
+ --navbar-hover-bg: rgba(43, 53, 56, 0.04);
310
+ --navbar-secondary-bg: rgba(242, 239, 231, 0.88);
311
+ --dot-accent: #2D6A66;
312
+ --card-bg: transparent;
313
+ --card-border: #D6D2C6;
314
+ --toc-active: var(--body-color);
315
+ --page-bg: #F2EFE7;
316
+ --surface-raised: #F8F5EE;
317
+ --sidebar-bg: transparent;
318
+ --line-num-bg: rgba(43, 53, 56, 0.04);
319
+ --line-hover-bg: rgba(45, 106, 102, 0.06);
320
+ --overlay-scrim: rgba(0, 0, 0, 0.42);
321
+ }
322
+ }
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="书">
2
+ <path fill="#000000" fill-rule="evenodd" d="M32 18c-6-5-15-7-24-6v36c9-1 18 1 24 6 6-5 15-7 24-6V12c-9-1-18 1-24 6Zm-2 3v29c-5-3-11-4-17-4V16c6 0 12 2 17 5Zm4 0c5-3 11-5 17-5v30c-6 0-12 1-17 4V21Z"/>
3
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="书">
2
+ <rect width="64" height="64" rx="14" fill="#002B36"/>
3
+ <path fill="#839496" fill-rule="evenodd" d="M32 18c-6-5-15-7-24-6v36c9-1 18 1 24 6 6-5 15-7 24-6V12c-9-1-18 1-24 6Zm-2 3v29c-5-3-11-4-17-4V16c6 0 12 2 17 5Zm4 0c5-3 11-5 17-5v30c-6 0-12 1-17 4V21Z"/>
4
+ <rect x="30" y="20" width="4" height="32" fill="#51A0D5"/>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="书">
2
+ <rect width="64" height="64" rx="14" fill="#FDF6E3"/>
3
+ <path fill="#526C74" fill-rule="evenodd" d="M32 18c-6-5-15-7-24-6v36c9-1 18 1 24 6 6-5 15-7 24-6V12c-9-1-18 1-24 6Zm-2 3v29c-5-3-11-4-17-4V16c6 0 12 2 17 5Zm4 0c5-3 11-5 17-5v30c-6 0-12 1-17 4V21Z"/>
4
+ <rect x="30" y="20" width="4" height="32" fill="#268BD2"/>
5
+ </svg>