dsh-deeptutor 0.1.3 → 0.1.5

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,420 @@
1
+ <!doctype html>
2
+ <html lang="{{LANG}}" data-theme="{{THEME}}">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>{{TITLE}}</title>
7
+ <style>
8
+ :root {
9
+ --bg: #fafaf8;
10
+ --bg-alt: #f0efe9;
11
+ --card: #ffffff;
12
+ --fg: #1f2328;
13
+ --fg-muted: #6a737d;
14
+ --accent: #0a66c2;
15
+ --accent-soft: rgba(10, 102, 194, 0.1);
16
+ --border: #e2e2dc;
17
+ --code-bg: #f4f3ee;
18
+ --code-fg: #24292f;
19
+ --th-bg: #f0efe9;
20
+ --link: #0a66c2;
21
+ --answer-bg: #fffdf3;
22
+ --answer-border: #e8c84a;
23
+ --shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 4px 16px rgba(0, 0, 0, 0.05);
24
+ }
25
+ [data-theme="dark"] {
26
+ --bg: #16181d;
27
+ --bg-alt: #1d2026;
28
+ --card: #1e2128;
29
+ --fg: #e6e6e6;
30
+ --fg-muted: #9aa0a6;
31
+ --accent: #7cb3ff;
32
+ --accent-soft: rgba(124, 179, 255, 0.12);
33
+ --border: #2e323a;
34
+ --code-bg: #121419;
35
+ --code-fg: #d7dae0;
36
+ --th-bg: #262a33;
37
+ --link: #7cb3ff;
38
+ --answer-bg: #23261d;
39
+ --answer-border: #8a7a2f;
40
+ --shadow: 0 1px 3px rgba(0, 0, 0, 0.4), 0 4px 16px rgba(0, 0, 0, 0.3);
41
+ }
42
+ * {
43
+ box-sizing: border-box;
44
+ }
45
+ html {
46
+ scroll-behavior: smooth;
47
+ }
48
+ body {
49
+ margin: 0;
50
+ background: var(--bg);
51
+ color: var(--fg);
52
+ font-family:
53
+ -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB",
54
+ "Microsoft YaHei", "Noto Sans CJK SC", Roboto, sans-serif;
55
+ line-height: 1.75;
56
+ font-size: 16px;
57
+ }
58
+ .page {
59
+ max-width: 860px;
60
+ margin: 0 auto;
61
+ padding: 32px 24px 80px;
62
+ }
63
+ /* header bar */
64
+ .topbar {
65
+ position: sticky;
66
+ top: 0;
67
+ z-index: 10;
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: space-between;
71
+ gap: 12px;
72
+ max-width: 860px;
73
+ margin: 0 auto;
74
+ padding: 10px 24px;
75
+ background: color-mix(in srgb, var(--bg) 88%, transparent);
76
+ backdrop-filter: blur(8px);
77
+ border-bottom: 1px solid var(--border);
78
+ }
79
+ .topbar .doc-title {
80
+ font-size: 13px;
81
+ font-weight: 600;
82
+ color: var(--fg-muted);
83
+ overflow: hidden;
84
+ text-overflow: ellipsis;
85
+ white-space: nowrap;
86
+ }
87
+ .theme-toggle {
88
+ flex-shrink: 0;
89
+ appearance: none;
90
+ border: 1px solid var(--border);
91
+ background: var(--card);
92
+ color: var(--fg);
93
+ border-radius: 999px;
94
+ padding: 5px 14px;
95
+ font-size: 13px;
96
+ cursor: pointer;
97
+ transition:
98
+ background 0.15s,
99
+ border-color 0.15s;
100
+ }
101
+ .theme-toggle:hover {
102
+ border-color: var(--accent);
103
+ color: var(--accent);
104
+ }
105
+ /* headings */
106
+ h1,
107
+ h2,
108
+ h3,
109
+ h4,
110
+ h5,
111
+ h6 {
112
+ line-height: 1.35;
113
+ margin: 1.6em 0 0.6em;
114
+ color: var(--fg);
115
+ }
116
+ h1 {
117
+ font-size: 1.9em;
118
+ padding-bottom: 0.4em;
119
+ border-bottom: 3px solid var(--accent);
120
+ margin-top: 0;
121
+ }
122
+ h1:not(:first-child) {
123
+ margin-top: 1.8em;
124
+ }
125
+ h2 {
126
+ font-size: 1.45em;
127
+ padding-bottom: 0.3em;
128
+ border-bottom: 1px solid var(--border);
129
+ }
130
+ h3 {
131
+ font-size: 1.2em;
132
+ }
133
+ h4 {
134
+ font-size: 1.05em;
135
+ }
136
+ /* toc */
137
+ .toc {
138
+ background: var(--card);
139
+ border: 1px solid var(--border);
140
+ border-radius: 10px;
141
+ padding: 16px 20px;
142
+ margin: 24px 0;
143
+ box-shadow: var(--shadow);
144
+ }
145
+ .toc h2 {
146
+ border: none;
147
+ margin: 0 0 8px;
148
+ font-size: 1em;
149
+ color: var(--fg-muted);
150
+ text-transform: uppercase;
151
+ letter-spacing: 0.06em;
152
+ }
153
+ .toc ul {
154
+ list-style: none;
155
+ margin: 0;
156
+ padding: 0;
157
+ }
158
+ .toc li {
159
+ margin: 2px 0;
160
+ }
161
+ .toc a {
162
+ color: var(--link);
163
+ text-decoration: none;
164
+ }
165
+ .toc a:hover {
166
+ text-decoration: underline;
167
+ }
168
+ .toc .toc-l3 {
169
+ padding-left: 1.4em;
170
+ font-size: 0.95em;
171
+ }
172
+ /* text */
173
+ p {
174
+ margin: 0.8em 0;
175
+ }
176
+ a {
177
+ color: var(--link);
178
+ }
179
+ strong {
180
+ font-weight: 650;
181
+ }
182
+ hr {
183
+ border: none;
184
+ border-top: 1px solid var(--border);
185
+ margin: 2em 0;
186
+ }
187
+ blockquote {
188
+ margin: 1em 0;
189
+ padding: 0.4em 1.1em;
190
+ border-left: 4px solid var(--accent);
191
+ background: var(--accent-soft);
192
+ border-radius: 0 8px 8px 0;
193
+ color: var(--fg);
194
+ }
195
+ blockquote p {
196
+ margin: 0.5em 0;
197
+ }
198
+ /* code */
199
+ code {
200
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
201
+ font-size: 0.88em;
202
+ background: var(--code-bg);
203
+ color: var(--code-fg);
204
+ padding: 0.15em 0.4em;
205
+ border-radius: 5px;
206
+ }
207
+ pre.code-block {
208
+ position: relative;
209
+ background: var(--code-bg);
210
+ color: var(--code-fg);
211
+ border: 1px solid var(--border);
212
+ border-radius: 10px;
213
+ padding: 14px 16px;
214
+ overflow-x: auto;
215
+ line-height: 1.55;
216
+ margin: 1.1em 0;
217
+ }
218
+ pre.code-block code {
219
+ background: none;
220
+ padding: 0;
221
+ font-size: 0.9em;
222
+ }
223
+ .lang-badge {
224
+ position: absolute;
225
+ top: 8px;
226
+ right: 10px;
227
+ font-size: 11px;
228
+ color: var(--fg-muted);
229
+ text-transform: uppercase;
230
+ letter-spacing: 0.05em;
231
+ background: var(--card);
232
+ border: 1px solid var(--border);
233
+ padding: 1px 8px;
234
+ border-radius: 999px;
235
+ }
236
+ /* lists */
237
+ ul,
238
+ ol {
239
+ padding-left: 1.6em;
240
+ margin: 0.8em 0;
241
+ }
242
+ li {
243
+ margin: 0.3em 0;
244
+ }
245
+ li.task {
246
+ list-style: none;
247
+ margin-left: -1.2em;
248
+ }
249
+ li.task input {
250
+ accent-color: var(--accent);
251
+ margin-right: 0.5em;
252
+ }
253
+ li.task.done {
254
+ color: var(--fg-muted);
255
+ text-decoration: line-through;
256
+ }
257
+ /* tables */
258
+ .table-wrap {
259
+ overflow-x: auto;
260
+ margin: 1.1em 0;
261
+ border-radius: 10px;
262
+ border: 1px solid var(--border);
263
+ }
264
+ table {
265
+ border-collapse: collapse;
266
+ width: 100%;
267
+ font-size: 0.95em;
268
+ }
269
+ th,
270
+ td {
271
+ padding: 8px 14px;
272
+ text-align: left;
273
+ border-bottom: 1px solid var(--border);
274
+ }
275
+ th {
276
+ background: var(--th-bg);
277
+ font-weight: 650;
278
+ white-space: nowrap;
279
+ }
280
+ tr:last-child td {
281
+ border-bottom: none;
282
+ }
283
+ tbody tr:hover {
284
+ background: var(--accent-soft);
285
+ }
286
+ /* quiz answers */
287
+ details.answer {
288
+ background: var(--answer-bg);
289
+ border: 1px solid var(--answer-border);
290
+ border-radius: 10px;
291
+ margin: 1.1em 0;
292
+ overflow: hidden;
293
+ }
294
+ details.answer summary {
295
+ cursor: pointer;
296
+ padding: 12px 16px;
297
+ font-weight: 600;
298
+ user-select: none;
299
+ display: flex;
300
+ align-items: baseline;
301
+ gap: 8px;
302
+ }
303
+ details.answer summary::-webkit-details-marker {
304
+ display: none;
305
+ }
306
+ details.answer summary::before {
307
+ content: "▶";
308
+ font-size: 0.8em;
309
+ color: var(--answer-border);
310
+ transition: transform 0.15s;
311
+ }
312
+ details.answer[open] summary::before {
313
+ transform: rotate(90deg);
314
+ }
315
+ details.answer summary .answer-tag {
316
+ font-size: 0.78em;
317
+ font-weight: 700;
318
+ color: var(--answer-border);
319
+ text-transform: uppercase;
320
+ letter-spacing: 0.06em;
321
+ }
322
+ details.answer .answer-body {
323
+ padding: 0 16px 14px;
324
+ border-top: 1px dashed var(--answer-border);
325
+ }
326
+ details.answer .answer-body p:first-child {
327
+ margin-top: 0.9em;
328
+ }
329
+ details.answer .answer-body > :last-child {
330
+ margin-bottom: 0.4em;
331
+ }
332
+ /* footer */
333
+ .footer {
334
+ margin-top: 3em;
335
+ padding-top: 1em;
336
+ border-top: 1px solid var(--border);
337
+ color: var(--fg-muted);
338
+ font-size: 12px;
339
+ text-align: center;
340
+ }
341
+ /* print */
342
+ @media print {
343
+ body {
344
+ background: #fff;
345
+ }
346
+ .topbar {
347
+ display: none;
348
+ }
349
+ .page {
350
+ max-width: none;
351
+ padding: 0;
352
+ }
353
+ details.answer {
354
+ border-color: #ccc;
355
+ background: #fff;
356
+ }
357
+ details.answer summary::before {
358
+ content: "▸ ";
359
+ }
360
+ details.answer:not([open]) {
361
+ border-style: dashed;
362
+ }
363
+ details.answer:not([open]) summary {
364
+ color: #333;
365
+ }
366
+ pre.code-block,
367
+ .table-wrap,
368
+ blockquote {
369
+ break-inside: avoid;
370
+ }
371
+ a {
372
+ color: inherit;
373
+ text-decoration: none;
374
+ }
375
+ }
376
+ </style>
377
+ </head>
378
+ <body>
379
+ <div class="topbar">
380
+ <span class="doc-title">{{TITLE}}</span>
381
+ <button class="theme-toggle" id="themeToggle" type="button" aria-label="切换主题">
382
+ 🌓 主题
383
+ </button>
384
+ </div>
385
+ <div class="page">
386
+ {{TOC}} {{BODY}}
387
+ <div class="footer">
388
+ Generated {{GENERATED}} · html-doc skill ·
389
+ <a
390
+ href="#"
391
+ onclick="
392
+ window.print();
393
+ return false;
394
+ "
395
+ >打印 / 导出 PDF</a
396
+ >
397
+ </div>
398
+ </div>
399
+ <script>
400
+ (function () {
401
+ var root = document.documentElement;
402
+ var saved = null;
403
+ try {
404
+ saved = localStorage.getItem("html-doc-theme");
405
+ } catch (e) {}
406
+ if (saved === "dark" || saved === "light") root.setAttribute("data-theme", saved);
407
+ var btn = document.getElementById("themeToggle");
408
+ btn.textContent = root.getAttribute("data-theme") === "dark" ? "☀️ 浅色" : "🌓 深色";
409
+ btn.addEventListener("click", function () {
410
+ var next = root.getAttribute("data-theme") === "dark" ? "light" : "dark";
411
+ root.setAttribute("data-theme", next);
412
+ btn.textContent = next === "dark" ? "☀️ 浅色" : "🌓 深色";
413
+ try {
414
+ localStorage.setItem("html-doc-theme", next);
415
+ } catch (e) {}
416
+ });
417
+ })();
418
+ </script>
419
+ </body>
420
+ </html>