orz-markdown 1.2.1 → 1.3.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.
@@ -0,0 +1,383 @@
1
+ /* ==========================================================================
2
+ Light Neat Theme 3 — "Orchard"
3
+ Based on the markdown.orz.how site design: a calm, brand-green light theme
4
+ with a Bricolage Grotesque display face, generous whitespace, soft cards,
5
+ and dark code blocks.
6
+
7
+ Google Fonts: Bricolage Grotesque (headings) · system-ui (body) · mono code
8
+
9
+ Optional modifiers on <body> or .markdown-body:
10
+ - .font-serif | .font-sans | .font-handwritten | .font-typewrite
11
+ - .size-xs | .size-sm | .size-lg | .size-xl
12
+ ========================================================================== */
13
+
14
+ @import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,600;12..96,700&family=Caveat:wght@500;600&display=swap');
15
+ @import './common.css';
16
+
17
+ :root {
18
+ color-scheme: light;
19
+
20
+ --bg: #fbfbf8;
21
+ --bg-soft: #fcfdfb;
22
+ --surface: #ffffff;
23
+ --surface-2: #f7f8f3;
24
+ --surface-3: #f1f4ec;
25
+ --border: #e7e7df;
26
+ --border-strong: #d6d8cb;
27
+ --border-soft: #eeeee7;
28
+
29
+ --text: #1b1d1a;
30
+ --text-soft: #52574d;
31
+ --text-muted: #6c7064;
32
+ --heading: #18211a;
33
+
34
+ --accent: #5f9e44;
35
+ --accent-2: #7bb35f;
36
+ --accent-strong: #356a2a;
37
+ --accent-warm: #c87f17;
38
+ --accent-grid: rgba(95, 158, 68, 0.08);
39
+ --wash: #f1f7ec;
40
+
41
+ --link: #356a2a;
42
+ --link-hover: #244c1c;
43
+ --link-visited: #5a6b41;
44
+
45
+ --code-bg: #1f2329;
46
+ --code-bg-2: #1b1f24;
47
+ --code-border: #2a2f36;
48
+ --code-text: #e8ebef;
49
+ --inline-code: #2f5226;
50
+ --inline-code-bg: #eef3e8;
51
+
52
+ --success-bg: #eaf6ec;
53
+ --success-border: #c5e6cb;
54
+ --success-text: #1d7a36;
55
+
56
+ --note-bg: #eef1fb;
57
+ --note-border: #d2d9f1;
58
+ --note-text: #3f4aa0;
59
+
60
+ --info-bg: #eef4fb;
61
+ --info-border: #cfe0f3;
62
+ --info-text: #1f5fa6;
63
+
64
+ --warning-bg: #fdf6e3;
65
+ --warning-border: #efe2bf;
66
+ --warning-text: #8a6411;
67
+
68
+ --danger-bg: #fbecec;
69
+ --danger-border: #f1cfcf;
70
+ --danger-text: #b03030;
71
+
72
+ --span-red: #c0392b;
73
+ --span-yellow: #b07d12;
74
+ --span-green: #2e8b3d;
75
+ --span-blue: #2e6db5;
76
+
77
+ --font-heading: 'Bricolage Grotesque', 'Segoe UI', system-ui, 'Noto Sans SC', 'Noto Sans TC', sans-serif;
78
+ --font-body: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', 'Noto Sans SC', 'Noto Sans TC', sans-serif;
79
+ --font-code: ui-monospace, 'SF Mono', 'JetBrains Mono', 'Fira Code', Menlo, Consolas, monospace;
80
+ --base-size: 1rem;
81
+ --line-height: 1.7;
82
+ --font-scale: 1;
83
+ --lh-copy: var(--line-height);
84
+ --lh-tight: 1.18;
85
+
86
+ --fs-50: calc(0.8 * var(--base-size) * var(--font-scale));
87
+ --fs-75: calc(0.9 * var(--base-size) * var(--font-scale));
88
+ --fs-100: calc(var(--base-size) * var(--font-scale));
89
+ --fs-200: calc(1.12 * var(--base-size) * var(--font-scale));
90
+ --fs-300: calc(1.28 * var(--base-size) * var(--font-scale));
91
+ --fs-400: calc(1.5 * var(--base-size) * var(--font-scale));
92
+ --fs-500: calc(1.9 * var(--base-size) * var(--font-scale));
93
+ --fs-600: calc(2.4 * var(--base-size) * var(--font-scale));
94
+
95
+ --space-1: 0.35rem;
96
+ --space-2: 0.65rem;
97
+ --space-3: 0.95rem;
98
+ --space-4: 1.3rem;
99
+ --space-5: 1.7rem;
100
+ --space-6: 2.5rem;
101
+
102
+ --radius-sm: 8px;
103
+ --radius: 13px;
104
+ --radius-lg: 18px;
105
+ --shadow: 0 1px 2px rgba(20, 30, 15, .04), 0 10px 30px -12px rgba(20, 30, 15, .12);
106
+ --shadow-soft: 0 1px 2px rgba(20, 30, 15, .04), 0 6px 18px -10px rgba(20, 30, 15, .10);
107
+ --transition: 160ms ease;
108
+
109
+ --markdown-body-max-width: 820px;
110
+ --markdown-body-padding: clamp(1.3rem, 3.4vw, 3rem);
111
+ --markdown-body-border: none;
112
+ --markdown-body-radius: 0;
113
+ --markdown-body-shadow: none;
114
+ --markdown-body-decorations-display: none;
115
+ }
116
+
117
+ body.font-serif, .markdown-body.font-serif { --font-body: 'Cardo', Georgia, 'Noto Serif SC', serif; --lh-copy: 1.8; }
118
+ body.font-sans, .markdown-body.font-sans { --font-body: ui-sans-serif, system-ui, 'Segoe UI', sans-serif; }
119
+ body.font-handwritten, .markdown-body.font-handwritten { --font-body: 'Caveat', 'Segoe Print', cursive; --lh-copy: 1.7; font-size: 1.12em; }
120
+ body.font-typewrite, .markdown-body.font-typewrite { --font-body: var(--font-code); --lh-copy: 1.7; }
121
+
122
+ body.size-xs, .markdown-body.size-xs { --font-scale: 0.9; }
123
+ body.size-sm, .markdown-body.size-sm { --font-scale: 0.96; }
124
+ body.size-lg, .markdown-body.size-lg { --font-scale: 1.08; }
125
+ body.size-xl, .markdown-body.size-xl { --font-scale: 1.18; }
126
+
127
+ *, *::before, *::after { box-sizing: border-box; }
128
+ html { font-size: var(--base-size); scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
129
+
130
+ body {
131
+ margin: 0;
132
+ min-height: 100vh;
133
+ padding: clamp(0.9rem, 2.5vw, 2.2rem);
134
+ background: var(--bg);
135
+ color: var(--text);
136
+ font-family: var(--font-body);
137
+ font-size: var(--fs-100);
138
+ line-height: var(--lh-copy);
139
+ -webkit-font-smoothing: antialiased;
140
+ }
141
+
142
+ ::selection { background: rgba(95, 158, 68, 0.18); color: var(--heading); }
143
+ ::-webkit-scrollbar { width: 11px; height: 11px; }
144
+ ::-webkit-scrollbar-thumb { background: rgba(95, 158, 68, 0.28); border-radius: 999px; border: 3px solid var(--bg); }
145
+ ::-webkit-scrollbar-thumb:hover { background: rgba(95, 158, 68, 0.45); }
146
+
147
+ .markdown-body {
148
+ position: relative;
149
+ max-width: var(--markdown-body-max-width);
150
+ margin: 0 auto;
151
+ padding: var(--markdown-body-padding);
152
+ background: transparent;
153
+ border: var(--markdown-body-border);
154
+ border-radius: var(--markdown-body-radius);
155
+ box-shadow: var(--markdown-body-shadow);
156
+ isolation: isolate;
157
+ }
158
+
159
+ .markdown-body::after {
160
+ display: var(--markdown-body-decorations-display);
161
+ content: '';
162
+ position: absolute;
163
+ inset: 0 auto auto 0;
164
+ width: 100%;
165
+ height: 4px;
166
+ border-radius: var(--markdown-body-radius) var(--markdown-body-radius) 0 0;
167
+ background: linear-gradient(90deg, var(--accent), var(--accent-2) 55%, transparent 92%);
168
+ pointer-events: none;
169
+ }
170
+
171
+ .markdown-body > :first-child { margin-top: 0; }
172
+ .markdown-body > :last-child { margin-bottom: 0; }
173
+
174
+ h1, h2, h3, h4, h5, h6 {
175
+ margin: 1.9em 0 0.6em;
176
+ color: var(--heading);
177
+ font-family: var(--font-heading);
178
+ line-height: var(--lh-tight);
179
+ font-weight: 600;
180
+ letter-spacing: -0.015em;
181
+ scroll-margin-top: 4rem;
182
+ }
183
+ h1:first-child, h2:first-child, h3:first-child { margin-top: 0; }
184
+
185
+ h1 { font-size: clamp(1.95rem, 4.2vw, 2.7rem); margin-bottom: 0.5em; padding-bottom: 0.45em; border-bottom: 1px solid var(--border); }
186
+ h2 { font-size: clamp(1.45rem, 2.8vw, 1.9rem); color: var(--heading); }
187
+ h3 { font-size: var(--fs-400); color: var(--accent-strong); }
188
+ h4 { font-size: var(--fs-300); color: var(--heading); }
189
+ h5 { font-size: var(--fs-200); color: var(--text-soft); }
190
+ h6 { font-size: var(--fs-100); text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); }
191
+
192
+ .header-anchor {
193
+ float: left; margin-left: -1.1em; padding-right: 0.3em; color: var(--accent);
194
+ text-decoration: none; opacity: 0; transition: opacity var(--transition);
195
+ }
196
+ h1:hover .header-anchor, h2:hover .header-anchor, h3:hover .header-anchor,
197
+ h4:hover .header-anchor, h5:hover .header-anchor, h6:hover .header-anchor { opacity: 0.7; }
198
+
199
+ p, ul, ol, blockquote, pre, table, .toc-wrapper, details.spoil, .tabs, .cols,
200
+ .youtube-embed, .mermaid, .smiles-render { margin: 0 0 var(--space-5); }
201
+ p:last-child, ul:last-child, ol:last-child, blockquote:last-child, pre:last-child, table:last-child { margin-bottom: 0; }
202
+
203
+ a { color: var(--link); text-decoration: underline; text-decoration-thickness: 1.2px;
204
+ text-decoration-color: rgba(53, 106, 42, 0.34); text-underline-offset: 0.18em; transition: color var(--transition); }
205
+ a:hover { color: var(--link-hover); text-decoration-color: var(--link-hover); }
206
+ a:visited { color: var(--link-visited); }
207
+
208
+ strong { color: var(--heading); font-weight: 700; }
209
+ em { color: var(--text); }
210
+ s, del { color: var(--text-muted); }
211
+ mark { padding: 0.06em 0.3em; color: #7a5e08; background: #fdeb9c; border-radius: 5px; }
212
+ ins { color: var(--success-text); text-decoration: underline wavy rgba(95, 158, 68, 0.7) 1.5px; text-underline-offset: 0.18em; }
213
+ sub, sup { font-size: 0.72em; color: var(--text-soft); }
214
+
215
+ code { font-family: var(--font-code); font-size: 0.88em; color: var(--inline-code);
216
+ background: var(--inline-code-bg); border-radius: 6px; padding: 0.12em 0.42em; }
217
+
218
+ pre { position: relative; overflow-x: auto; padding: 1.15rem 1.25rem 1.2rem;
219
+ background: var(--code-bg); border: 1px solid var(--code-border); border-radius: var(--radius); box-shadow: var(--shadow-soft); }
220
+ pre code { display: block; padding: 0; border: 0; background: transparent; color: var(--code-text);
221
+ font-size: var(--fs-75); line-height: 1.7; }
222
+
223
+ blockquote { padding: 0.7rem 0 0.7rem 1.1rem; color: var(--text-soft);
224
+ border-left: 3px solid var(--accent); background: linear-gradient(90deg, var(--wash), transparent 90%); border-radius: 0 8px 8px 0; }
225
+ blockquote > *:last-child { margin-bottom: 0; }
226
+
227
+ ul, ol { padding-left: 1.4rem; }
228
+ li { margin-bottom: 0.4rem; }
229
+ li > ul, li > ol { margin-top: 0.4rem; margin-bottom: 0; }
230
+ ul { list-style: none; }
231
+ ul > li { position: relative; }
232
+ ul > li::before { content: ''; position: absolute; left: -1rem; top: 0.7em; width: 0.4rem; height: 0.4rem;
233
+ border-radius: 999px; background: var(--accent); }
234
+ ol { list-style: decimal; }
235
+ ol::marker { color: var(--accent-strong); }
236
+
237
+ .task-list-item { list-style: none; padding-left: 0; }
238
+ .task-list-item::before { display: none; }
239
+ .task-list-item-checkbox, .task-list-item input[type='checkbox'] {
240
+ appearance: none; -webkit-appearance: none; position: relative; width: 1.02rem; height: 1.02rem;
241
+ margin: 0 0.5rem 0 0; vertical-align: -0.12em; border: 1px solid var(--border-strong); border-radius: 5px; background: #fff; }
242
+ .task-list-item-checkbox:checked, .task-list-item input[type='checkbox']:checked { background: var(--accent); border-color: var(--accent); }
243
+ .task-list-item-checkbox:checked::after, .task-list-item input[type='checkbox']:checked::after {
244
+ content: ''; position: absolute; left: 0.3rem; top: 0.07rem; width: 0.22rem; height: 0.46rem;
245
+ border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
246
+
247
+ table { border-collapse: separate; border-spacing: 0; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; background: var(--surface); }
248
+ thead th { padding: 0.7rem 0.95rem; background: var(--wash); border-bottom: 1px solid var(--border-strong);
249
+ color: var(--heading); font-size: var(--fs-75); font-weight: 700; text-align: left; white-space: nowrap; }
250
+ tbody td { padding: 0.7rem 0.95rem; border-bottom: 1px solid var(--border-soft); vertical-align: top; }
251
+ tbody tr:nth-child(even) td { background: rgba(95, 158, 68, 0.035); }
252
+ tbody tr:last-child td { border-bottom: 0; }
253
+
254
+ hr { height: 1px; margin: var(--space-6) 0; border: 0;
255
+ background: linear-gradient(90deg, transparent, var(--border-strong) 20%, var(--border-strong) 80%, transparent); }
256
+
257
+ img { margin: 0 auto; border-radius: var(--radius); border: 1px solid var(--border); box-shadow: var(--shadow-soft); }
258
+ p > img { display: inline; margin: 0; border-radius: 8px; }
259
+
260
+ .footnote-ref { font-size: 0.85em; }
261
+ .footnote-ref a, .footnote-backref { color: var(--accent-strong); text-decoration: none; }
262
+ .footnotes-sep { margin: var(--space-6) 0 var(--space-4); }
263
+ .footnotes { padding-top: var(--space-3); border-top: 1px solid var(--border-soft); color: var(--text-soft); font-size: var(--fs-75); }
264
+ .footnotes ol { margin-bottom: 0; }
265
+ .footnotes li { margin-bottom: 0.6rem; }
266
+
267
+ .katex { color: var(--heading); font-size: 1.04em; }
268
+ .katex-display { overflow-x: auto; overflow-y: hidden; padding: 0.85rem 1rem; background: var(--surface-2);
269
+ border: 1px solid var(--border); border-radius: var(--radius); }
270
+ .katex-error { display: inline-block; padding: 0.18em 0.45em; color: var(--danger-text); background: var(--danger-bg);
271
+ border: 1px solid var(--danger-border); border-radius: 8px; font-family: var(--font-code); font-size: var(--fs-75); }
272
+
273
+ div.success, div.note, div.info, div.warning, div.danger {
274
+ position: relative; margin-bottom: var(--space-5); padding: 0.9rem 1.1rem; border: 1px solid; border-radius: var(--radius); }
275
+ div.success { background: var(--success-bg); border-color: var(--success-border); }
276
+ div.note { background: var(--note-bg); border-color: var(--note-border); }
277
+ div.info { background: var(--info-bg); border-color: var(--info-border); }
278
+ div.warning { background: var(--warning-bg); border-color: var(--warning-border); }
279
+ div.danger { background: var(--danger-bg); border-color: var(--danger-border); }
280
+ div.success > p:first-child > strong:first-child { color: var(--success-text); }
281
+ div.note > p:first-child > strong:first-child { color: var(--note-text); }
282
+ div.info > p:first-child > strong:first-child { color: var(--info-text); }
283
+ div.warning > p:first-child > strong:first-child { color: var(--warning-text); }
284
+ div.danger > p:first-child > strong:first-child { color: var(--danger-text); }
285
+ div.success > *:last-child, div.note > *:last-child, div.info > *:last-child,
286
+ div.warning > *:last-child, div.danger > *:last-child { margin-bottom: 0; }
287
+
288
+ .left { float: left; max-width: min(44%, 22rem); padding: 0.8rem 0.95rem; background: var(--surface-2);
289
+ border: 1px solid var(--border); border-radius: var(--radius); margin: 0 var(--space-5) var(--space-4) 0; }
290
+ .right { text-align: right; margin: 0 0 var(--space-4); }
291
+ .center { margin: 0 auto var(--space-5); text-align: center; max-width: min(100%, 42rem); }
292
+
293
+ details.spoil { overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface-2); }
294
+ details.spoil > summary { display: flex; align-items: center; gap: 0.6rem; padding: 0.85rem 1.05rem; cursor: pointer;
295
+ list-style: none; user-select: none; color: var(--heading); font-weight: 650; background: var(--wash); }
296
+ details.spoil > summary::-webkit-details-marker { display: none; }
297
+ details.spoil > summary::before { content: '+'; display: inline-grid; place-items: center; width: 1.35rem; height: 1.35rem;
298
+ border-radius: 7px; background: #fff; border: 1px solid var(--border-strong); color: var(--accent-strong); font-weight: 700; line-height: 1; }
299
+ details.spoil[open] > summary::before { content: '–'; }
300
+ details.spoil[open] > summary { border-bottom: 1px solid var(--border-soft); }
301
+ details.spoil > :not(summary) { padding: 0.95rem 1.05rem 1.05rem; }
302
+
303
+ .tabs { overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface-2); }
304
+ .tabs-bar { display: flex; gap: 0.35rem; padding: 0.45rem; overflow-x: auto; background: var(--wash);
305
+ border-bottom: 1px solid var(--border-soft); scrollbar-width: none; }
306
+ .tabs-bar::-webkit-scrollbar { display: none; }
307
+ .tabs-bar-btn { border: 1px solid transparent; border-radius: 8px; padding: 0.5rem 0.85rem; background: transparent;
308
+ color: var(--text-soft); font: 650 var(--fs-75)/1.2 var(--font-heading); cursor: pointer; white-space: nowrap; transition: var(--transition); }
309
+ .tabs-bar-btn:hover { color: var(--heading); background: rgba(255, 255, 255, 0.7); }
310
+ .tabs-bar-btn.active { color: #fff; background: var(--accent-strong); border-color: transparent; }
311
+ .tab { display: none; padding: 1rem 1.15rem 1.15rem; }
312
+ .tab.active { display: block; }
313
+ .tabs:not([data-js]) .tab { display: block; }
314
+ .tabs:not([data-js]) .tab + .tab { border-top: 1px solid var(--border-soft); }
315
+
316
+ .cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; align-items: start; }
317
+ .col { min-width: 0; padding: 1rem 1.05rem; background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius); }
318
+ .col > *:last-child { margin-bottom: 0; }
319
+
320
+ .toc-wrapper { position: relative; }
321
+ nav.toc, .toc-list { padding: 1rem 1.15rem; background: var(--wash); border: 1px solid var(--border); border-radius: var(--radius); }
322
+ nav.toc ul, .toc-list ul { margin: 0; padding-left: 1.1rem; }
323
+ nav.toc li, .toc-list li { margin-bottom: 0.24rem; }
324
+ nav.toc li::before, .toc-list li::before { display: none; }
325
+ nav.toc a, .toc-list a { color: var(--text-soft); text-decoration: none; }
326
+ nav.toc a:hover, .toc-list a:hover { color: var(--accent-strong); }
327
+
328
+ span.red { color: var(--span-red); }
329
+ span.yellow { color: var(--span-yellow); }
330
+ span.green { color: var(--span-green); }
331
+ span.blue { color: var(--span-blue); }
332
+ span.success, span.info, span.warning, span.danger {
333
+ gap: 0; padding: 0.16em 0.6em; border-radius: 999px; border: 1px solid; font-size: 0.82em; font-weight: 700; vertical-align: middle; }
334
+ span.success::before, span.info::before, span.warning::before, span.danger::before { content: none; }
335
+ span.success { background: var(--success-bg); color: var(--success-text); border-color: var(--success-border); }
336
+ span.info { background: var(--info-bg); color: var(--info-text); border-color: var(--info-border); }
337
+ span.warning { background: var(--warning-bg); color: var(--warning-text); border-color: var(--warning-border); }
338
+ span.danger { background: var(--danger-bg); color: var(--danger-text); border-color: var(--danger-border); }
339
+
340
+ div.test-block { padding: 0.8rem 1rem; margin-bottom: var(--space-5); background: var(--wash);
341
+ border: 1px dashed rgba(95, 158, 68, 0.4); border-radius: var(--radius); color: var(--accent-strong);
342
+ font-family: var(--font-code); font-size: var(--fs-75); }
343
+ span.test-inline { display: inline-block; padding: 0.1em 0.4em; border-radius: 6px; border: 1px dashed rgba(95, 158, 68, 0.4);
344
+ color: var(--accent-strong); background: var(--wash); font-family: var(--font-code); font-size: 0.86em; }
345
+
346
+ div.youtube-embed { position: relative; overflow: hidden; height: 0; padding-bottom: 56.25%;
347
+ border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface-3); box-shadow: var(--shadow-soft); }
348
+ div.youtube-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
349
+
350
+ div.mermaid { padding: 1.15rem; border: 1px solid var(--border); border-radius: var(--radius);
351
+ background: var(--surface-2); overflow-x: auto; text-align: center; }
352
+ div.mermaid svg { max-width: 100%; height: auto; }
353
+ div.smiles-render canvas, canvas[data-smiles] { border-radius: 0; box-shadow: none; }
354
+ canvas.orz-chart { max-width: 100%; }
355
+
356
+ span.qrcode { padding: 6px; vertical-align: middle; background: #fff; border-radius: 10px; box-shadow: var(--shadow-soft); }
357
+
358
+ a:focus-visible, .tabs-bar-btn:focus-visible, details.spoil > summary:focus-visible {
359
+ outline: 2px solid var(--accent); outline-offset: 3px; border-radius: var(--radius-sm); text-decoration: none; }
360
+ .task-list-item-checkbox:focus-visible, .task-list-item input[type='checkbox']:focus-visible {
361
+ outline: 2px solid var(--accent); outline-offset: 2px; }
362
+
363
+ @media (max-width: 720px) {
364
+ body { padding: 0.7rem; }
365
+ .markdown-body { padding: 1.15rem; border-radius: var(--radius); }
366
+ .left { float: none; max-width: 100%; margin: 0 0 var(--space-4); }
367
+ .cols { grid-template-columns: 1fr; }
368
+ }
369
+
370
+ @media print {
371
+ body { padding: 0; background: #fff; color: #111; }
372
+ .markdown-body { max-width: 100%; padding: 0; border: 0; box-shadow: none; }
373
+ .markdown-body::after, .header-anchor, .tabs-bar, div.youtube-embed { display: none !important; }
374
+ pre, pre code { background: #f6f6f2 !important; color: #1b1d1a !important; }
375
+ a { color: #2f5226; text-decoration-color: currentColor; }
376
+ pre, code, blockquote, .success, .note, .info, .warning, .danger, nav.toc, .toc-list, .col,
377
+ details.spoil, div.mermaid, div.smiles-render { box-shadow: none !important; }
378
+ tr, iframe, video, pre, blockquote { break-inside: avoid; page-break-inside: avoid; }
379
+ }
380
+
381
+ /* code block — light & harmonic (replaces the dark box; code sits on the panel, no white highlight.js inner) */
382
+ .markdown-body pre { background: #f3f6ee; border: 1px solid #e4e9da; box-shadow: var(--shadow-soft); }
383
+ .markdown-body pre code, .markdown-body pre code.hljs { background: transparent; padding: 0; color: #2b3328; }