@scribdown/ui-handdrawn 0.1.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.
- package/LICENSE +21 -0
- package/package.json +36 -0
- package/src/assets/blockquote-bar.svg +68 -0
- package/src/assets/delete.svg +64 -0
- package/src/assets/heading-mark.svg +60 -0
- package/src/assets/rect-shadow.svg +22 -0
- package/src/assets/rough-line-dash-horizontal.svg +32 -0
- package/src/assets/rough-line-dash-vertical.svg +32 -0
- package/src/assets/rough-line-horizontal.svg +6 -0
- package/src/assets/rough-line-shadow-horizontal.svg +80 -0
- package/src/assets/rough-line-shadow-vertical.svg +83 -0
- package/src/assets/rough-line-vertical.svg +6 -0
- package/src/assets/tag-body-hatch.svg +51 -0
- package/src/assets/tag-body-outline.svg +52 -0
- package/src/assets/tag-left-line.svg +50 -0
- package/src/assets/tag-right-hatch.svg +51 -0
- package/src/assets/tag-right-outline.svg +52 -0
- package/src/assets/toc-branch-toggle.svg +54 -0
- package/src/assets/underline-stroke.svg +44 -0
- package/src/styles/blockquote.css +40 -0
- package/src/styles/code.css +573 -0
- package/src/styles/details.css +29 -0
- package/src/styles/frame.css +71 -0
- package/src/styles/host-reset.css +46 -0
- package/src/styles/image-viewer.css +213 -0
- package/src/styles/image.css +232 -0
- package/src/styles/inline.css +101 -0
- package/src/styles/lists.css +126 -0
- package/src/styles/markdown.css +270 -0
- package/src/styles/mermaid.css +405 -0
- package/src/styles/shell.css +24 -0
- package/src/styles/table.css +252 -0
- package/src/styles/toc.css +163 -0
- package/src/styles/tokens.css +140 -0
- package/src/styles/toolbar.css +491 -0
- package/src/styles/video.css +195 -0
- package/src/styles.css +59 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/* TableRenderer:cell padding 12px 16px,横向滚动 */
|
|
2
|
+
.scribdown-markdown table {
|
|
3
|
+
/* 表格视觉主色 token:边框与阴影统一来源。 */
|
|
4
|
+
--scribdown-table-ink-token: var(--scribdown-color-accent);
|
|
5
|
+
/* 表格外框最终填充色,配合 code-block 边条 mask 使用。 */
|
|
6
|
+
--scribdown-table-border-fill: color-mix(
|
|
7
|
+
in srgb,
|
|
8
|
+
var(--scribdown-table-ink-token) 88%,
|
|
9
|
+
transparent
|
|
10
|
+
);
|
|
11
|
+
/* 单元格边线默认横向 SVG。 */
|
|
12
|
+
--scribdown-table-cell-border-horizontal-svg: var(--scribdown-frame-edge-horizontal);
|
|
13
|
+
/* 单元格边线默认纵向 SVG。 */
|
|
14
|
+
--scribdown-table-cell-border-vertical-svg: var(--scribdown-frame-edge-vertical);
|
|
15
|
+
/* 单元格边线填充色(比外框更轻,避免视觉抢占)。 */
|
|
16
|
+
--scribdown-table-cell-border-fill: color-mix(
|
|
17
|
+
in srgb,
|
|
18
|
+
var(--scribdown-table-ink-token) 40%,
|
|
19
|
+
transparent
|
|
20
|
+
);
|
|
21
|
+
/* thead 阴影层填充色(与边框同 token)。 */
|
|
22
|
+
--scribdown-table-head-shadow-fill: color-mix(
|
|
23
|
+
in srgb,
|
|
24
|
+
var(--scribdown-table-ink-token) 22%,
|
|
25
|
+
transparent
|
|
26
|
+
);
|
|
27
|
+
/* thead 阴影纹理:复用代码块 chrome 的 rect-shadow 资产。 */
|
|
28
|
+
--scribdown-table-head-shadow-svg: var(--scribdown-code-block-rect-shadow);
|
|
29
|
+
/* 间隔行(zebra)填充色:accent 极淡 tint,提升长表格可读性又不抢视觉。 */
|
|
30
|
+
--scribdown-table-row-stripe-fill: color-mix(
|
|
31
|
+
in srgb,
|
|
32
|
+
var(--scribdown-table-ink-token) 8%,
|
|
33
|
+
var(--scribdown-color-surface)
|
|
34
|
+
);
|
|
35
|
+
/* 行 hover 填充色:与 zebra(8%)拉开明显差距,单一阅读光带清晰可见。 */
|
|
36
|
+
--scribdown-table-row-hover-fill: color-mix(
|
|
37
|
+
in srgb,
|
|
38
|
+
var(--scribdown-table-ink-token) 32%,
|
|
39
|
+
var(--scribdown-color-surface)
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
position: relative;
|
|
43
|
+
z-index: 0;
|
|
44
|
+
isolation: isolate;
|
|
45
|
+
/* 关键步骤:小列数按内容收缩,避免右侧留白。 */
|
|
46
|
+
width: max-content;
|
|
47
|
+
max-width: 100%;
|
|
48
|
+
min-width: 0;
|
|
49
|
+
border-collapse: separate;
|
|
50
|
+
border-spacing: 0;
|
|
51
|
+
margin: 0 0 var(--scribdown-space-3);
|
|
52
|
+
display: block;
|
|
53
|
+
overflow-x: auto;
|
|
54
|
+
box-shadow: none;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* 关键步骤:表格外框复用代码块同款边条结构。 */
|
|
58
|
+
.scribdown-markdown table::after {
|
|
59
|
+
content: "";
|
|
60
|
+
position: absolute;
|
|
61
|
+
z-index: 2;
|
|
62
|
+
inset: 0;
|
|
63
|
+
pointer-events: none;
|
|
64
|
+
border-radius: inherit;
|
|
65
|
+
background-image:
|
|
66
|
+
var(--scribdown-rough-line-shadow-horizontal), var(--scribdown-rough-line-shadow-horizontal),
|
|
67
|
+
var(--scribdown-rough-line-shadow-vertical), var(--scribdown-rough-line-shadow-vertical);
|
|
68
|
+
background-position:
|
|
69
|
+
left 2px top -4px,
|
|
70
|
+
left 0px bottom -1px,
|
|
71
|
+
left -4px top 0px,
|
|
72
|
+
right -1px top 0px;
|
|
73
|
+
background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
|
|
74
|
+
background-size:
|
|
75
|
+
var(--scribdown-table-border-tile-horizontal),
|
|
76
|
+
var(--scribdown-table-border-tile-horizontal),
|
|
77
|
+
var(--scribdown-table-border-tile-vertical),
|
|
78
|
+
var(--scribdown-table-border-tile-vertical);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.scribdown-markdown th,
|
|
82
|
+
.scribdown-markdown td {
|
|
83
|
+
border: 0;
|
|
84
|
+
padding: var(--scribdown-space-2) var(--scribdown-space-3);
|
|
85
|
+
text-align: left;
|
|
86
|
+
/* 关键步骤:列宽下限,压到此值仍超出则整表横向滚动,避免窄列被逐字挤压。 */
|
|
87
|
+
min-width: 4rem;
|
|
88
|
+
/* 关键步骤:列宽上限,超出则单元格内换行(行变高),避免长文本把整表撑宽。 */
|
|
89
|
+
max-width: 22rem;
|
|
90
|
+
/* 关键步骤:短词(如 ID)不逐字拆,仅超长 token 放不下时才断行。 */
|
|
91
|
+
word-break: normal;
|
|
92
|
+
overflow-wrap: anywhere;
|
|
93
|
+
background-color: var(--scribdown-color-surface);
|
|
94
|
+
background-image:
|
|
95
|
+
var(--scribdown-table-cell-border-horizontal-svg),
|
|
96
|
+
var(--scribdown-table-cell-border-vertical-svg);
|
|
97
|
+
background-position:
|
|
98
|
+
left bottom,
|
|
99
|
+
right top;
|
|
100
|
+
background-repeat: repeat-x, repeat-y;
|
|
101
|
+
background-size:
|
|
102
|
+
96px 4px,
|
|
103
|
+
4px 72px;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* 关键步骤:最后一列不再绘制纵向单元格边线,避免与外框重叠。 */
|
|
107
|
+
.scribdown-markdown tr > *:last-child {
|
|
108
|
+
--scribdown-table-cell-border-vertical-svg: none;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* 关键步骤:仅最后一行数据不再绘制横向单元格边线,避免与外框重叠。 */
|
|
112
|
+
.scribdown-markdown table > tbody > tr:last-child > *,
|
|
113
|
+
.scribdown-markdown table > tr:last-child > * {
|
|
114
|
+
--scribdown-table-cell-border-horizontal-svg: none;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.scribdown-markdown th {
|
|
118
|
+
font-family: var(--scribdown-font-heading);
|
|
119
|
+
font-weight: 700;
|
|
120
|
+
background-color: var(--scribdown-color-surface);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* 关键步骤:tbody 偶数行加 zebra 填充;因 td 自带 background-color,
|
|
124
|
+
须落到单元格上才能生效,不能写在 tr 上。 */
|
|
125
|
+
.scribdown-markdown table > tbody > tr:nth-child(even) > td {
|
|
126
|
+
background-color: var(--scribdown-table-row-stripe-fill);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* 关键步骤:tbody 行 hover 高亮;选择器特异度需高于 zebra,确保覆盖奇偶行。
|
|
130
|
+
仅设色不加 transition,与手绘风格的瞬时反馈更搭。 */
|
|
131
|
+
.scribdown-markdown table > tbody > tr:hover > td,
|
|
132
|
+
.scribdown-markdown table > tbody > tr:nth-child(even):hover > td {
|
|
133
|
+
background-color: var(--scribdown-table-row-hover-fill);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* 关键步骤:thead 使用独立纹理层,确保文本与边线不受遮挡。 */
|
|
137
|
+
.scribdown-markdown thead th {
|
|
138
|
+
position: relative;
|
|
139
|
+
z-index: 0;
|
|
140
|
+
isolation: isolate;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.scribdown-markdown thead th::before {
|
|
144
|
+
content: "";
|
|
145
|
+
position: absolute;
|
|
146
|
+
z-index: -1;
|
|
147
|
+
inset: 0;
|
|
148
|
+
pointer-events: none;
|
|
149
|
+
background-image: var(--scribdown-table-head-shadow-svg);
|
|
150
|
+
background-position: center;
|
|
151
|
+
background-repeat: repeat-x;
|
|
152
|
+
background-size: auto 100%;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
@supports ((mask-image: url("")) or (-webkit-mask-image: url(""))) {
|
|
156
|
+
.scribdown-markdown th,
|
|
157
|
+
.scribdown-markdown td {
|
|
158
|
+
/* 关键步骤:单元格边线改为 mask 着色,保留纯线条层。 */
|
|
159
|
+
position: relative;
|
|
160
|
+
isolation: isolate;
|
|
161
|
+
background-image: none;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.scribdown-markdown th::after,
|
|
165
|
+
.scribdown-markdown td::after {
|
|
166
|
+
content: "";
|
|
167
|
+
position: absolute;
|
|
168
|
+
inset: 0;
|
|
169
|
+
pointer-events: none;
|
|
170
|
+
background-color: var(--scribdown-table-cell-border-fill);
|
|
171
|
+
-webkit-mask-image:
|
|
172
|
+
var(--scribdown-table-cell-border-horizontal-svg),
|
|
173
|
+
var(--scribdown-table-cell-border-vertical-svg);
|
|
174
|
+
-webkit-mask-position:
|
|
175
|
+
left bottom,
|
|
176
|
+
right top;
|
|
177
|
+
-webkit-mask-repeat: repeat-x, repeat-y;
|
|
178
|
+
-webkit-mask-size:
|
|
179
|
+
96px 4px,
|
|
180
|
+
4px 72px;
|
|
181
|
+
-webkit-mask-mode: alpha;
|
|
182
|
+
mask-image:
|
|
183
|
+
var(--scribdown-table-cell-border-horizontal-svg),
|
|
184
|
+
var(--scribdown-table-cell-border-vertical-svg);
|
|
185
|
+
mask-position:
|
|
186
|
+
left bottom,
|
|
187
|
+
right top;
|
|
188
|
+
mask-repeat: repeat-x, repeat-y;
|
|
189
|
+
mask-size:
|
|
190
|
+
96px 4px,
|
|
191
|
+
4px 72px;
|
|
192
|
+
mask-mode: alpha;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/* 关键步骤:右下角单元格已关闭横竖边线时,移除伪元素,避免背景填充残留。 */
|
|
196
|
+
.scribdown-markdown table > tbody > tr:last-child > *:last-child::after,
|
|
197
|
+
.scribdown-markdown table > tr:last-child > *:last-child::after {
|
|
198
|
+
content: none;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.scribdown-markdown thead th::before {
|
|
202
|
+
/* 关键步骤:shadow 纹理改为 mask,颜色统一由表格主 token 控制。 */
|
|
203
|
+
background-color: var(--scribdown-table-head-shadow-fill);
|
|
204
|
+
background-image: none;
|
|
205
|
+
-webkit-mask-image: var(--scribdown-table-head-shadow-svg);
|
|
206
|
+
-webkit-mask-position: center;
|
|
207
|
+
-webkit-mask-repeat: repeat-x;
|
|
208
|
+
-webkit-mask-size: auto 100%;
|
|
209
|
+
-webkit-mask-mode: alpha;
|
|
210
|
+
mask-image: var(--scribdown-table-head-shadow-svg);
|
|
211
|
+
mask-position: center;
|
|
212
|
+
mask-repeat: repeat-x;
|
|
213
|
+
mask-size: auto 100%;
|
|
214
|
+
mask-mode: alpha;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.scribdown-markdown table::after {
|
|
218
|
+
/* 关键步骤:保持代码块边条形状,改用绿色 token 着色。 */
|
|
219
|
+
background-color: var(--scribdown-table-border-fill);
|
|
220
|
+
background-image: none;
|
|
221
|
+
-webkit-mask-image:
|
|
222
|
+
var(--scribdown-rough-line-shadow-horizontal), var(--scribdown-rough-line-shadow-horizontal),
|
|
223
|
+
var(--scribdown-rough-line-shadow-vertical), var(--scribdown-rough-line-shadow-vertical);
|
|
224
|
+
-webkit-mask-position:
|
|
225
|
+
left top,
|
|
226
|
+
left bottom,
|
|
227
|
+
left top,
|
|
228
|
+
right top;
|
|
229
|
+
-webkit-mask-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
|
|
230
|
+
-webkit-mask-size:
|
|
231
|
+
var(--scribdown-table-border-tile-horizontal),
|
|
232
|
+
var(--scribdown-table-border-tile-horizontal),
|
|
233
|
+
var(--scribdown-table-border-tile-vertical),
|
|
234
|
+
var(--scribdown-table-border-tile-vertical);
|
|
235
|
+
-webkit-mask-mode: alpha, alpha, alpha, alpha;
|
|
236
|
+
mask-image:
|
|
237
|
+
var(--scribdown-rough-line-shadow-horizontal), var(--scribdown-rough-line-shadow-horizontal),
|
|
238
|
+
var(--scribdown-rough-line-shadow-vertical), var(--scribdown-rough-line-shadow-vertical);
|
|
239
|
+
mask-position:
|
|
240
|
+
left 2px top -4px,
|
|
241
|
+
left 0px bottom -1px,
|
|
242
|
+
left -4px top 0px,
|
|
243
|
+
right -1px top 0px;
|
|
244
|
+
mask-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
|
|
245
|
+
mask-size:
|
|
246
|
+
var(--scribdown-table-border-tile-horizontal),
|
|
247
|
+
var(--scribdown-table-border-tile-horizontal),
|
|
248
|
+
var(--scribdown-table-border-tile-vertical),
|
|
249
|
+
var(--scribdown-table-border-tile-vertical);
|
|
250
|
+
mask-mode: alpha, alpha, alpha, alpha;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/* TableOfContents:由 [TOC] 占位符生成(inline),同时被 toolbar 抽屉复用,
|
|
2
|
+
class 名是项目独占的命名空间,故全部不再依赖 .scribdown-markdown 父容器,
|
|
3
|
+
让 inline TOC 与抽屉目录共享一套层级 / 折叠样式。 */
|
|
4
|
+
.scribdown-toc {
|
|
5
|
+
width: fit-content;
|
|
6
|
+
max-width: 100%;
|
|
7
|
+
margin: 0 0 var(--scribdown-space-4);
|
|
8
|
+
padding: 8px 16px;
|
|
9
|
+
/* 关键步骤:目录根引入 .scribdown-frame 的手绘边框后,自身再补上卡片底色。 */
|
|
10
|
+
background: var(--scribdown-color-surface);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.scribdown-toc[open] {
|
|
14
|
+
width: 100%;
|
|
15
|
+
padding-bottom: var(--scribdown-space-4);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.scribdown-toc-summary {
|
|
19
|
+
position: relative;
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
gap: var(--scribdown-space-2);
|
|
23
|
+
min-height: 36px;
|
|
24
|
+
color: var(--scribdown-color-accent);
|
|
25
|
+
cursor: pointer;
|
|
26
|
+
font-family: var(--scribdown-font-heading);
|
|
27
|
+
font-size: 24px;
|
|
28
|
+
font-weight: 700;
|
|
29
|
+
line-height: 1.2;
|
|
30
|
+
list-style: none;
|
|
31
|
+
user-select: none;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.scribdown-toc-summary:focus,
|
|
35
|
+
.scribdown-toc-summary:focus-visible {
|
|
36
|
+
outline: none;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.scribdown-toc-summary::marker,
|
|
40
|
+
.scribdown-toc-summary::-webkit-details-marker {
|
|
41
|
+
display: none;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.scribdown-toc-summary::before {
|
|
45
|
+
content: "";
|
|
46
|
+
flex: 0 0 24px;
|
|
47
|
+
width: 24px;
|
|
48
|
+
height: 24px;
|
|
49
|
+
background-image: var(--scribdown-toc-toggle-icon);
|
|
50
|
+
background-repeat: no-repeat;
|
|
51
|
+
background-size: 100% 100%;
|
|
52
|
+
transform: rotate(-5deg);
|
|
53
|
+
transition: transform var(--scribdown-duration-fast) var(--scribdown-easing-standard);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.scribdown-toc[open] .scribdown-toc-summary::before {
|
|
57
|
+
transform: rotate(85deg);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.scribdown-toc-nav {
|
|
61
|
+
margin-top: var(--scribdown-space-2);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.scribdown-toc-list {
|
|
65
|
+
list-style: none;
|
|
66
|
+
margin: 0;
|
|
67
|
+
padding-left: 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* 嵌套子列表:层级缩进由每个条目左侧固定 gutter 累加体现,这里仅补一点纵向间距。 */
|
|
71
|
+
.scribdown-toc-list--nested {
|
|
72
|
+
margin: 4px 0 0;
|
|
73
|
+
padding-left: 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* 折叠态:隐藏当前分支条目的嵌套子列表。 */
|
|
77
|
+
.scribdown-toc-item--collapsed > .scribdown-toc-list--nested {
|
|
78
|
+
display: none;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* 目录条目:左侧预留固定 gutter 容纳折叠按钮;叶子无按钮但同样缩进,标题天然对齐。
|
|
82
|
+
层级缩进通过条目嵌套累加 padding-left 实现,无需 --depth-N 专门定位。 */
|
|
83
|
+
.scribdown-toc-item {
|
|
84
|
+
position: relative;
|
|
85
|
+
min-height: 28px;
|
|
86
|
+
margin-bottom: 4px;
|
|
87
|
+
padding-left: 22px;
|
|
88
|
+
color: var(--scribdown-color-text-secondary);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* 分支折叠按钮:定位在左侧 gutter,重置原生按钮样式,用手绘三角图标表示展开/折叠。
|
|
92
|
+
与标题链接彻底分离,点击只折叠、不跳转。 */
|
|
93
|
+
.scribdown-toc-toggle {
|
|
94
|
+
position: absolute;
|
|
95
|
+
left: 0;
|
|
96
|
+
top: 3px;
|
|
97
|
+
display: inline-flex;
|
|
98
|
+
width: 18px;
|
|
99
|
+
height: 18px;
|
|
100
|
+
padding: 0;
|
|
101
|
+
border: 0;
|
|
102
|
+
background-color: transparent;
|
|
103
|
+
background-image: var(--scribdown-toc-toggle-icon);
|
|
104
|
+
background-repeat: no-repeat;
|
|
105
|
+
background-position: center;
|
|
106
|
+
background-size: 100% 100%;
|
|
107
|
+
cursor: pointer;
|
|
108
|
+
/* 展开态:三角朝下。 */
|
|
109
|
+
transform: rotate(85deg);
|
|
110
|
+
transition: transform var(--scribdown-duration-fast) var(--scribdown-easing-standard);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* 折叠态:三角朝右。 */
|
|
114
|
+
.scribdown-toc-item--collapsed > .scribdown-toc-toggle {
|
|
115
|
+
transform: rotate(-5deg);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.scribdown-toc-toggle:focus {
|
|
119
|
+
outline: none;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.scribdown-toc-toggle:focus-visible {
|
|
123
|
+
outline: 2px solid color-mix(in srgb, var(--scribdown-color-warning) 68%, transparent);
|
|
124
|
+
outline-offset: 2px;
|
|
125
|
+
border-radius: 6px;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* 标题跳转链接:叶子与分支共用同一种元素与样式。 */
|
|
129
|
+
.scribdown-toc-link {
|
|
130
|
+
color: var(--scribdown-color-accent);
|
|
131
|
+
line-height: 1.5;
|
|
132
|
+
text-decoration: none;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.scribdown-toc-link:hover {
|
|
136
|
+
opacity: 0.8;
|
|
137
|
+
text-decoration: none;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.scribdown-toc-link:focus {
|
|
141
|
+
outline: none;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.scribdown-toc-link:focus-visible {
|
|
145
|
+
outline: 2px solid color-mix(in srgb, var(--scribdown-color-warning) 68%, transparent);
|
|
146
|
+
outline-offset: 2px;
|
|
147
|
+
border-radius: 6px;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* 当前章节:scrollspy 命中当前可视区标题时高亮对应目录项,与工具栏当前章节指示器同步。
|
|
151
|
+
关键步骤:底色用 box-shadow「外扩」而非 padding,行内链接换行时不挤动布局。 */
|
|
152
|
+
.scribdown-toc-link--active {
|
|
153
|
+
font-weight: 700;
|
|
154
|
+
opacity: 1;
|
|
155
|
+
border-radius: 4px;
|
|
156
|
+
background: color-mix(in srgb, var(--scribdown-color-accent) 15%, transparent);
|
|
157
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--scribdown-color-accent) 15%, transparent);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* 当前章节项 hover:保持高亮不被通用 hover 的半透明削弱。 */
|
|
161
|
+
.scribdown-toc-link--active:hover {
|
|
162
|
+
opacity: 1;
|
|
163
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/* ─── Token 定义 ───────────────────────────────────────────────────── */
|
|
2
|
+
/* 浅色主题:参考素描本米白纸张与水彩颜料色相。
|
|
3
|
+
长时间阅读偏好:暖色偏移降低蓝光眩光、文字采用深沉柏木色而非纯黑、
|
|
4
|
+
重点色保持低饱和的"褪色颜料"质感、纸面与卡面亮度差拉开以便内容浮起。 */
|
|
5
|
+
:root {
|
|
6
|
+
/* 暖米纸:略冷于旧版的牛皮黄,减轻长时间阅读的"陈旧报纸"感。 */
|
|
7
|
+
--scribdown-color-bg: #ebe1c8;
|
|
8
|
+
/* 内容纸面:进一步提亮但保持暖调,与底色形成清晰层次。 */
|
|
9
|
+
--scribdown-color-surface: #f8f0db;
|
|
10
|
+
/* 主文字:深胡桃色沉淀墨,对比 surface ≈12:1,足够锐利又不刺眼。 */
|
|
11
|
+
--scribdown-color-text-primary: #2f2620;
|
|
12
|
+
/* 次文字:泛黄旧墨色。 */
|
|
13
|
+
--scribdown-color-text-secondary: #786758;
|
|
14
|
+
/* 主题色:松林青苔——明度居中、与文字蓝相区分。 */
|
|
15
|
+
--scribdown-color-accent: #436b5b;
|
|
16
|
+
/* 链接色:靛青水墨蓝,去掉过往略带紫感的偏色。 */
|
|
17
|
+
--scribdown-color-link: #355a7d;
|
|
18
|
+
/* 已访问链接:晾干后的紫罗兰,色相比未访问偏暖。 */
|
|
19
|
+
--scribdown-color-link-visited: #6a527b;
|
|
20
|
+
/* 高亮笔色:姜黄荧光,保留涂抹的颜料质地。 */
|
|
21
|
+
--scribdown-color-mark: #d7ab48;
|
|
22
|
+
/* 边线:铅笔石墨与纸张混合后的暖灰。 */
|
|
23
|
+
--scribdown-color-border: #c5ad8a;
|
|
24
|
+
/* 危险色:陶土红,去除生硬的猩红,落在书法朱砂。 */
|
|
25
|
+
--scribdown-color-danger: #a8504a;
|
|
26
|
+
/* 警告色:烧赭石。 */
|
|
27
|
+
--scribdown-color-warning: #8d6432;
|
|
28
|
+
/* 代码块墨色:板岩紫,与正文棕色明显区分但不抢眼。 */
|
|
29
|
+
--scribdown-color-code-ink: #5e5483;
|
|
30
|
+
--scribdown-color-blockquote-bg: color-mix(
|
|
31
|
+
in srgb,
|
|
32
|
+
var(--scribdown-color-border) 18%,
|
|
33
|
+
var(--scribdown-color-surface)
|
|
34
|
+
);
|
|
35
|
+
--scribdown-color-blockquote-text: color-mix(
|
|
36
|
+
in srgb,
|
|
37
|
+
var(--scribdown-color-text-secondary) 88%,
|
|
38
|
+
var(--scribdown-color-surface)
|
|
39
|
+
);
|
|
40
|
+
--scribdown-color-blockquote-link: color-mix(
|
|
41
|
+
in srgb,
|
|
42
|
+
var(--scribdown-color-link) 86%,
|
|
43
|
+
var(--scribdown-color-text-primary)
|
|
44
|
+
);
|
|
45
|
+
--scribdown-color-blockquote-link-visited: color-mix(
|
|
46
|
+
in srgb,
|
|
47
|
+
var(--scribdown-color-link-visited) 86%,
|
|
48
|
+
var(--scribdown-color-text-primary)
|
|
49
|
+
);
|
|
50
|
+
/* 纸面颗粒:低饱和的褐色噪点,呼应"米黄毛边纸"。 */
|
|
51
|
+
--scribdown-paper-grain: rgba(132, 96, 44, 0.10);
|
|
52
|
+
/* 纸面纤维:浅青苔色丝纹,与 accent 同源。 */
|
|
53
|
+
--scribdown-paper-fiber: rgba(67, 107, 91, 0.06);
|
|
54
|
+
/* 偏移阴影:保留手绘的"墨晕"感,避免过黑。 */
|
|
55
|
+
--scribdown-shadow-sm: 2px 3px 0 rgba(47, 38, 32, 0.13);
|
|
56
|
+
--scribdown-shadow-md: 4px 6px 0 rgba(47, 38, 32, 0.18);
|
|
57
|
+
|
|
58
|
+
--scribdown-font-body: "Source Serif 4", "Noto Serif SC", serif;
|
|
59
|
+
--scribdown-font-heading: "Caveat", "LXGW WenKai", "Noto Serif SC", serif;
|
|
60
|
+
--scribdown-font-code: "JetBrains Mono", "Fira Code", monospace;
|
|
61
|
+
|
|
62
|
+
/* 四角独立写法,呼应手绘感 */
|
|
63
|
+
--scribdown-radius-sm: 8px 10px 9px 11px;
|
|
64
|
+
--scribdown-radius-md: 14px 16px 13px 17px;
|
|
65
|
+
|
|
66
|
+
--scribdown-space-1: 4px;
|
|
67
|
+
--scribdown-space-2: 8px;
|
|
68
|
+
--scribdown-space-3: 12px;
|
|
69
|
+
--scribdown-space-4: 16px;
|
|
70
|
+
--scribdown-space-5: 24px;
|
|
71
|
+
--scribdown-space-6: 32px;
|
|
72
|
+
--scribdown-space-7: 48px;
|
|
73
|
+
|
|
74
|
+
--scribdown-duration-fast: 120ms;
|
|
75
|
+
--scribdown-duration-base: 200ms;
|
|
76
|
+
--scribdown-easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
|
|
77
|
+
|
|
78
|
+
/* 关键步骤:目录折叠箭头 SVG 由 inline TOC 与 toolbar 抽屉共用,
|
|
79
|
+
放在 :root 上避免抽屉脱离 .scribdown-markdown 作用域后变量失效。 */
|
|
80
|
+
--scribdown-toc-toggle-icon: url("../assets/toc-branch-toggle.svg");
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* 暗色主题:"夜读台灯下的旧纸册":
|
|
84
|
+
纸面为接近黑的暖褐底,墨色反相为米白;颜料色以"粉笔/水彩"的提亮版本出现,
|
|
85
|
+
保持与浅色主题一致的色相与语义。 */
|
|
86
|
+
@media (prefers-color-scheme: dark) {
|
|
87
|
+
:root {
|
|
88
|
+
/* 夜间纸面底:暖褐近黑,避免冷调灰带来的"屏幕感"。 */
|
|
89
|
+
--scribdown-color-bg: #1e1915;
|
|
90
|
+
/* 卡面:底色之上 +6% 明度,让代码块/引用清晰浮起。 */
|
|
91
|
+
--scribdown-color-surface: #2a241f;
|
|
92
|
+
/* 主文字:温润米白粉笔。 */
|
|
93
|
+
--scribdown-color-text-primary: #ebdfcc;
|
|
94
|
+
/* 次文字:旧字迹褪色。 */
|
|
95
|
+
--scribdown-color-text-secondary: #ae9b85;
|
|
96
|
+
/* 主题色:粉笔薄荷青,亮度提到暗底易读区间。 */
|
|
97
|
+
--scribdown-color-accent: #7ebbab;
|
|
98
|
+
/* 链接色:粉笔水蓝。 */
|
|
99
|
+
--scribdown-color-link: #94b8de;
|
|
100
|
+
/* 已访问链接:粉笔薰衣草。 */
|
|
101
|
+
--scribdown-color-link-visited: #b39bcd;
|
|
102
|
+
/* 高亮色:暖琥珀粉笔。 */
|
|
103
|
+
--scribdown-color-mark: #d3aa57;
|
|
104
|
+
/* 边线:暗青铜,与底色同色相一脉。 */
|
|
105
|
+
--scribdown-color-border: #5a4a39;
|
|
106
|
+
/* 危险色:暗红粉笔。 */
|
|
107
|
+
--scribdown-color-danger: #db847a;
|
|
108
|
+
/* 警告色:黄铜粉笔。 */
|
|
109
|
+
--scribdown-color-warning: #d3a45f;
|
|
110
|
+
/* 代码块墨色:紫罗兰粉笔。 */
|
|
111
|
+
--scribdown-color-code-ink: #beacdc;
|
|
112
|
+
--scribdown-color-blockquote-bg: color-mix(
|
|
113
|
+
in srgb,
|
|
114
|
+
var(--scribdown-color-border) 28%,
|
|
115
|
+
var(--scribdown-color-surface)
|
|
116
|
+
);
|
|
117
|
+
--scribdown-color-blockquote-text: color-mix(
|
|
118
|
+
in srgb,
|
|
119
|
+
var(--scribdown-color-text-secondary) 90%,
|
|
120
|
+
var(--scribdown-color-bg)
|
|
121
|
+
);
|
|
122
|
+
--scribdown-color-blockquote-link: color-mix(
|
|
123
|
+
in srgb,
|
|
124
|
+
var(--scribdown-color-link) 88%,
|
|
125
|
+
var(--scribdown-color-text-primary)
|
|
126
|
+
);
|
|
127
|
+
--scribdown-color-blockquote-link-visited: color-mix(
|
|
128
|
+
in srgb,
|
|
129
|
+
var(--scribdown-color-link-visited) 88%,
|
|
130
|
+
var(--scribdown-color-text-primary)
|
|
131
|
+
);
|
|
132
|
+
/* 夜间纸面颗粒:暖琥珀微噪。 */
|
|
133
|
+
--scribdown-paper-grain: rgba(211, 170, 87, 0.10);
|
|
134
|
+
/* 夜间纸面纤维:薄荷青丝纹。 */
|
|
135
|
+
--scribdown-paper-fiber: rgba(126, 187, 171, 0.07);
|
|
136
|
+
/* 阴影更深以拉开层次。 */
|
|
137
|
+
--scribdown-shadow-sm: 2px 3px 0 rgba(0, 0, 0, 0.36);
|
|
138
|
+
--scribdown-shadow-md: 4px 6px 0 rgba(0, 0, 0, 0.48);
|
|
139
|
+
}
|
|
140
|
+
}
|