@dr-ishaan/remake-blocks 1.2.0 → 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,660 @@
1
+ /**
2
+ * remake-blocks – Default Styles
3
+ *
4
+ * 29 first-class callout types + enhanced blockquotes + disclosure widgets.
5
+ * Each type has its own CSS custom properties, variant class, and dark mode tokens.
6
+ */
7
+
8
+ /* ========================================================================
9
+ 1. CSS Custom Properties (Design Tokens)
10
+ ======================================================================== */
11
+
12
+ :root {
13
+ /* -- Layout ----------------------------------------------------------- */
14
+ --callout-radius: 6px;
15
+ --callout-padding-y: 8px;
16
+ --callout-padding-x: 12px;
17
+ --callout-gap: 4px;
18
+ --callout-title-font-size: 1.0625em;
19
+ --callout-body-font-size: 1.0625em;
20
+ --callout-icon-size: 20px;
21
+ --callout-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
22
+
23
+ /* -- GFM (5) ---------------------------------------------------------- */
24
+ --callout-note-border: #54aeff; --callout-note-bg: #ddf4ff;
25
+ --callout-tip-border: #3fb950; --callout-tip-bg: #dafbe1;
26
+ --callout-important-border: #a371f7; --callout-important-bg: #fbefff;
27
+ --callout-warning-border: #d29922; --callout-warning-bg: #fff8c5;
28
+ --callout-caution-border: #f85149; --callout-caution-bg: #ffebe9;
29
+
30
+ /* -- Obsidian (10) ---------------------------------------------------- */
31
+ --callout-abstract-border: #22d3ee; --callout-abstract-bg: #ecfeff;
32
+ --callout-info-border: #8b949e; --callout-info-bg: #f6f8fa;
33
+ --callout-success-border: #2da44e; --callout-success-bg: #caf7ca;
34
+ --callout-question-border: #d97706; --callout-question-bg: #fff1e5;
35
+ --callout-failure-border: #d45454; --callout-failure-bg: #ffe2e2;
36
+ --callout-danger-border: #f85149; --callout-danger-bg: #ffebe9;
37
+ --callout-quote-border: #8b949e; --callout-quote-bg: #f6f8fa;
38
+ --callout-bug-border: #e35d7f; --callout-bug-bg: #ffedf2;
39
+ --callout-example-border: #a371f7; --callout-example-bg: #fbefff;
40
+ --callout-todo-border: #4a9ec9; --callout-todo-bg: #e5f2fc;
41
+
42
+ /* -- Promoted Aliases (14) — distinct palettes ------------------------ */
43
+ --callout-summary-border: #0e9aaa; --callout-summary-bg: #f0fdfa;
44
+ --callout-tldr-border: #22d3ee; --callout-tldr-bg: #ecfeff;
45
+ --callout-hint-border: #4ea847; --callout-hint-bg: #e8f5e9;
46
+ --callout-check-border: #14b8a6; --callout-check-bg: #f0fdfa;
47
+ --callout-done-border: #22c55e; --callout-done-bg: #dcfce7;
48
+ --callout-help-border: #d97706; --callout-help-bg: #fff7ed;
49
+ --callout-faq-border: #d97706; --callout-faq-bg: #fffbeb;
50
+ --callout-attention-border: #eab308; --callout-attention-bg: #fefce8;
51
+ --callout-fail-border: #e11d48; --callout-fail-bg: #fff1f2;
52
+ --callout-missing-border: #b44444; --callout-missing-bg: #fef2f2;
53
+ --callout-error-border: #ef4444; --callout-error-bg: #fef2f2;
54
+ --callout-cite-border: #6366f1; --callout-cite-bg: #eef2ff;
55
+
56
+ /* -- Enhanced Blockquote ---------------------------------------------- */
57
+ --blockquote-enhanced-border: #d0d7de;
58
+ --blockquote-enhanced-bg: #f6f8fa;
59
+ --blockquote-enhanced-color: #57606a;
60
+ --blockquote-padding: 8px 14px;
61
+ --blockquote-margin: 10px 0;
62
+
63
+ /* -- Disclosure Widget ------------------------------------------------ */
64
+ --disclosure-border: #d0d7de;
65
+ --disclosure-bg: transparent;
66
+ --disclosure-title-color: #24292f;
67
+ --disclosure-body-color: inherit;
68
+ --disclosure-radius: 6px;
69
+ --disclosure-padding: 8px 12px;
70
+ --disclosure-title-font-size: 1.0625em;
71
+ --disclosure-body-font-size: 1.0625em;
72
+ }
73
+
74
+ /* ========================================================================
75
+ 2. Dark Mode Tokens
76
+ ======================================================================== */
77
+
78
+ @media (prefers-color-scheme: dark) {
79
+ :root {
80
+ --callout-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
81
+
82
+ /* GFM */
83
+ --callout-note-border: #1f6feb; --callout-note-bg: #0c2d6b;
84
+ --callout-tip-border: #238636; --callout-tip-bg: #0f5323;
85
+ --callout-important-border: #8957e5; --callout-important-bg: #32195a;
86
+ --callout-warning-border: #9e6a03; --callout-warning-bg: #3d2e00;
87
+ --callout-caution-border: #da3633; --callout-caution-bg: #5c1014;
88
+
89
+ /* Obsidian */
90
+ --callout-abstract-border: #06b6d4; --callout-abstract-bg: #083344;
91
+ --callout-info-border: #656d76; --callout-info-bg: #161b22;
92
+ --callout-success-border: #2da44e; --callout-success-bg: #0f5323;
93
+ --callout-question-border: #d29922; --callout-question-bg: #3d2e00;
94
+ --callout-failure-border: #c53030; --callout-failure-bg: #451a1a;
95
+ --callout-danger-border: #da3633; --callout-danger-bg: #5c1014;
96
+ --callout-quote-border: #656d76; --callout-quote-bg: #161b22;
97
+ --callout-bug-border: #c93257; --callout-bug-bg: #451a2e;
98
+ --callout-example-border: #8957e5; --callout-example-bg: #32195a;
99
+ --callout-todo-border: #2274a5; --callout-todo-bg: #0c2d6b;
100
+
101
+ /* Promoted Aliases */
102
+ --callout-summary-border: #0891b2; --callout-summary-bg: #083344;
103
+ --callout-tldr-border: #06b6d4; --callout-tldr-bg: #083344;
104
+ --callout-hint-border: #3fb950; --callout-hint-bg: #0f5323;
105
+ --callout-check-border: #14b8a6; --callout-check-bg: #083344;
106
+ --callout-done-border: #22c55e; --callout-done-bg: #0f5323;
107
+ --callout-help-border: #d97706; --callout-help-bg: #3d2e00;
108
+ --callout-faq-border: #d97706; --callout-faq-bg: #3d2e00;
109
+ --callout-attention-border: #eab308; --callout-attention-bg: #3d2e00;
110
+ --callout-fail-border: #e11d48; --callout-fail-bg: #451a2e;
111
+ --callout-missing-border: #b44444; --callout-missing-bg: #451a1a;
112
+ --callout-error-border: #ef4444; --callout-error-bg: #5c1014;
113
+ --callout-cite-border: #6366f1; --callout-cite-bg: #1e1b4b;
114
+
115
+ --blockquote-enhanced-border: #444c56;
116
+ --blockquote-enhanced-bg: #161b22;
117
+ --blockquote-enhanced-color: #8b949e;
118
+
119
+ --disclosure-border: #444c56;
120
+ --disclosure-bg: transparent;
121
+ --disclosure-title-color: #e6edf3;
122
+ --disclosure-body-color: inherit;
123
+ }
124
+ }
125
+
126
+ /* ========================================================================
127
+ 2b. Manual Dark Mode via data-theme attribute
128
+ ======================================================================== */
129
+
130
+ [data-theme="dark"],
131
+ [data-theme="dim"] {
132
+ --callout-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
133
+
134
+ --callout-note-border: #1f6feb; --callout-note-bg: #0c2d6b;
135
+ --callout-tip-border: #238636; --callout-tip-bg: #0f5323;
136
+ --callout-important-border: #8957e5; --callout-important-bg: #32195a;
137
+ --callout-warning-border: #9e6a03; --callout-warning-bg: #3d2e00;
138
+ --callout-caution-border: #da3633; --callout-caution-bg: #5c1014;
139
+
140
+ --callout-abstract-border: #06b6d4; --callout-abstract-bg: #083344;
141
+ --callout-info-border: #656d76; --callout-info-bg: #161b22;
142
+ --callout-success-border: #2da44e; --callout-success-bg: #0f5323;
143
+ --callout-question-border: #d29922; --callout-question-bg: #3d2e00;
144
+ --callout-failure-border: #c53030; --callout-failure-bg: #451a1a;
145
+ --callout-danger-border: #da3633; --callout-danger-bg: #5c1014;
146
+ --callout-quote-border: #656d76; --callout-quote-bg: #161b22;
147
+ --callout-bug-border: #c93257; --callout-bug-bg: #451a2e;
148
+ --callout-example-border: #8957e5; --callout-example-bg: #32195a;
149
+ --callout-todo-border: #2274a5; --callout-todo-bg: #0c2d6b;
150
+
151
+ --callout-summary-border: #0891b2; --callout-summary-bg: #083344;
152
+ --callout-tldr-border: #06b6d4; --callout-tldr-bg: #083344;
153
+ --callout-hint-border: #3fb950; --callout-hint-bg: #0f5323;
154
+ --callout-check-border: #14b8a6; --callout-check-bg: #083344;
155
+ --callout-done-border: #22c55e; --callout-done-bg: #0f5323;
156
+ --callout-help-border: #d97706; --callout-help-bg: #3d2e00;
157
+ --callout-faq-border: #d97706; --callout-faq-bg: #3d2e00;
158
+ --callout-attention-border: #eab308; --callout-attention-bg: #3d2e00;
159
+ --callout-fail-border: #e11d48; --callout-fail-bg: #451a2e;
160
+ --callout-missing-border: #b44444; --callout-missing-bg: #451a1a;
161
+ --callout-error-border: #ef4444; --callout-error-bg: #5c1014;
162
+ --callout-cite-border: #6366f1; --callout-cite-bg: #1e1b4b;
163
+
164
+ --blockquote-enhanced-border: #444c56;
165
+ --blockquote-enhanced-bg: #161b22;
166
+ --blockquote-enhanced-color: #8b949e;
167
+
168
+ --disclosure-border: #444c56;
169
+ --disclosure-bg: transparent;
170
+ --disclosure-title-color: #e6edf3;
171
+ --disclosure-body-color: inherit;
172
+ }
173
+
174
+ /* ========================================================================
175
+ 3. Callout Container
176
+ ======================================================================== */
177
+
178
+ .callout {
179
+ position: relative;
180
+ display: flex;
181
+ flex-direction: column;
182
+ gap: var(--callout-gap);
183
+ padding: var(--callout-padding-y) var(--callout-padding-x);
184
+ border-radius: var(--callout-radius);
185
+ border-left: 4px solid var(--callout-color, var(--callout-note-border));
186
+ margin: 10px 0;
187
+ box-shadow: var(--callout-shadow);
188
+ overflow: hidden;
189
+ }
190
+
191
+ .callout::before {
192
+ content: "";
193
+ position: absolute;
194
+ inset: 0;
195
+ opacity: 0.04;
196
+ background: linear-gradient(135deg, var(--callout-color, var(--callout-note-border)) 0%, transparent 60%);
197
+ pointer-events: none;
198
+ }
199
+
200
+ /* ========================================================================
201
+ 4. Callout Type Variants (29)
202
+ ======================================================================== */
203
+
204
+ /* GFM (5) */
205
+ .callout-note { --callout-color: var(--callout-note-border); background: var(--callout-note-bg); border-left-color: var(--callout-note-border); }
206
+ .callout-tip { --callout-color: var(--callout-tip-border); background: var(--callout-tip-bg); border-left-color: var(--callout-tip-border); }
207
+ .callout-important { --callout-color: var(--callout-important-border); background: var(--callout-important-bg); border-left-color: var(--callout-important-border); }
208
+ .callout-warning { --callout-color: var(--callout-warning-border); background: var(--callout-warning-bg); border-left-color: var(--callout-warning-border); }
209
+ .callout-caution { --callout-color: var(--callout-caution-border); background: var(--callout-caution-bg); border-left-color: var(--callout-caution-border); }
210
+
211
+ /* Obsidian (10) */
212
+ .callout-abstract { --callout-color: var(--callout-abstract-border); background: var(--callout-abstract-bg); border-left-color: var(--callout-abstract-border); }
213
+ .callout-info { --callout-color: var(--callout-info-border); background: var(--callout-info-bg); border-left-color: var(--callout-info-border); }
214
+ .callout-success { --callout-color: var(--callout-success-border); background: var(--callout-success-bg); border-left-color: var(--callout-success-border); }
215
+ .callout-question { --callout-color: var(--callout-question-border); background: var(--callout-question-bg); border-left-color: var(--callout-question-border); }
216
+ .callout-failure { --callout-color: var(--callout-failure-border); background: var(--callout-failure-bg); border-left-color: var(--callout-failure-border); }
217
+ .callout-danger { --callout-color: var(--callout-danger-border); background: var(--callout-danger-bg); border-left-color: var(--callout-danger-border); }
218
+ .callout-quote { --callout-color: var(--callout-quote-border); background: var(--callout-quote-bg); border-left-color: var(--callout-quote-border); }
219
+ .callout-bug { --callout-color: var(--callout-bug-border); background: var(--callout-bug-bg); border-left-color: var(--callout-bug-border); }
220
+ .callout-example { --callout-color: var(--callout-example-border); background: var(--callout-example-bg); border-left-color: var(--callout-example-border); }
221
+ .callout-todo { --callout-color: var(--callout-todo-border); background: var(--callout-todo-bg); border-left-color: var(--callout-todo-border); }
222
+
223
+ /* Promoted Aliases (14) */
224
+ .callout-summary { --callout-color: var(--callout-summary-border); background: var(--callout-summary-bg); border-left-color: var(--callout-summary-border); }
225
+ .callout-tldr { --callout-color: var(--callout-tldr-border); background: var(--callout-tldr-bg); border-left-color: var(--callout-tldr-border); }
226
+ .callout-hint { --callout-color: var(--callout-hint-border); background: var(--callout-hint-bg); border-left-color: var(--callout-hint-border); }
227
+ .callout-check { --callout-color: var(--callout-check-border); background: var(--callout-check-bg); border-left-color: var(--callout-check-border); }
228
+ .callout-done { --callout-color: var(--callout-done-border); background: var(--callout-done-bg); border-left-color: var(--callout-done-border); }
229
+ .callout-help { --callout-color: var(--callout-help-border); background: var(--callout-help-bg); border-left-color: var(--callout-help-border); }
230
+ .callout-faq { --callout-color: var(--callout-faq-border); background: var(--callout-faq-bg); border-left-color: var(--callout-faq-border); }
231
+ .callout-attention { --callout-color: var(--callout-attention-border); background: var(--callout-attention-bg); border-left-color: var(--callout-attention-border); }
232
+ .callout-fail { --callout-color: var(--callout-fail-border); background: var(--callout-fail-bg); border-left-color: var(--callout-fail-border); }
233
+ .callout-missing { --callout-color: var(--callout-missing-border); background: var(--callout-missing-bg); border-left-color: var(--callout-missing-border); }
234
+ .callout-error { --callout-color: var(--callout-error-border); background: var(--callout-error-bg); border-left-color: var(--callout-error-border); }
235
+ .callout-cite { --callout-color: var(--callout-cite-border); background: var(--callout-cite-bg); border-left-color: var(--callout-cite-border); }
236
+
237
+ /* ========================================================================
238
+ 5. Callout Title
239
+ ======================================================================== */
240
+
241
+ .callout-title {
242
+ display: flex;
243
+ align-items: center;
244
+ gap: 5px;
245
+ font-weight: 700;
246
+ font-size: var(--callout-title-font-size);
247
+ line-height: 1.3;
248
+ letter-spacing: 0.01em;
249
+ color: var(--callout-color);
250
+ user-select: none;
251
+ }
252
+
253
+ .callout-icon {
254
+ display: inline-flex;
255
+ align-items: center;
256
+ justify-content: center;
257
+ flex-shrink: 0;
258
+ width: var(--callout-icon-size);
259
+ height: var(--callout-icon-size);
260
+ }
261
+
262
+ .callout-icon svg {
263
+ width: 100%;
264
+ height: 100%;
265
+ stroke-width: 2;
266
+ }
267
+
268
+ .callout-title-text {
269
+ text-transform: uppercase;
270
+ font-size: 0.9em;
271
+ letter-spacing: 0.04em;
272
+ }
273
+
274
+ /* ========================================================================
275
+ 6. Callout Body
276
+ ======================================================================== */
277
+
278
+ .callout-body {
279
+ font-size: var(--callout-body-font-size);
280
+ line-height: 1.5;
281
+ color: inherit;
282
+ }
283
+
284
+ .callout-body > *:first-child { margin-top: 0; }
285
+ .callout-body > *:last-child { margin-bottom: 0; }
286
+ .callout-body p { margin: 0.25em 0; }
287
+
288
+ .callout-body code {
289
+ font-size: 0.9em;
290
+ padding: 0.15em 0.4em;
291
+ border-radius: 4px;
292
+ background-color: rgba(0, 0, 0, 0.06);
293
+ }
294
+
295
+ .callout-body pre {
296
+ margin: 0.4em 0;
297
+ padding: 8px 10px;
298
+ border-radius: 4px;
299
+ background-color: rgba(0, 0, 0, 0.04);
300
+ overflow-x: auto;
301
+ }
302
+
303
+ .callout-body pre code {
304
+ padding: 0;
305
+ background: none;
306
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
307
+ font-size: 0.9375em;
308
+ }
309
+
310
+ .callout-body ul,
311
+ .callout-body ol {
312
+ padding-left: 1.3em;
313
+ margin: 0.25em 0;
314
+ }
315
+
316
+ .callout-body li { margin: 0.1em 0; }
317
+
318
+ .callout-body a {
319
+ color: var(--callout-color);
320
+ text-decoration: underline;
321
+ text-underline-offset: 2px;
322
+ }
323
+
324
+ .callout-body a:hover { opacity: 0.85; }
325
+
326
+ /* ========================================================================
327
+ 7. Enhanced Blockquote
328
+ ======================================================================== */
329
+
330
+ .blockquote-enhanced {
331
+ margin: var(--blockquote-margin);
332
+ padding: 0;
333
+ }
334
+
335
+ .blockquote-enhanced blockquote {
336
+ position: relative;
337
+ margin: 0;
338
+ padding: var(--blockquote-padding);
339
+ border-left: 3px solid var(--blockquote-enhanced-border);
340
+ background-color: var(--blockquote-enhanced-bg);
341
+ border-radius: 0 var(--callout-radius) var(--callout-radius) 0;
342
+ color: var(--blockquote-enhanced-color);
343
+ font-style: italic;
344
+ line-height: 1.5;
345
+ }
346
+
347
+ .blockquote-enhanced blockquote > *:first-child { margin-top: 0; }
348
+ .blockquote-enhanced blockquote > *:last-child { margin-bottom: 0; }
349
+ .blockquote-enhanced blockquote p { margin: 0.2em 0; }
350
+
351
+ /* ========================================================================
352
+ 8. Collapsible Callout (<details>/<summary>)
353
+ ======================================================================== */
354
+
355
+ /* Native <details>/<summary> collapsible — no JavaScript required */
356
+ .callout.collapsible { cursor: pointer; }
357
+
358
+ .callout.collapsible > summary {
359
+ display: flex;
360
+ align-items: center;
361
+ gap: 5px;
362
+ font-weight: 700;
363
+ font-size: var(--callout-title-font-size);
364
+ line-height: 1.3;
365
+ letter-spacing: 0.01em;
366
+ color: var(--callout-color);
367
+ user-select: none;
368
+ list-style: none;
369
+ padding: 0;
370
+ }
371
+
372
+ /* Remove default marker */
373
+ .callout.collapsible > summary::-webkit-details-marker { display: none; }
374
+ .callout.collapsible > summary::marker { display: none; content: ""; }
375
+
376
+ /* Chevron indicator */
377
+ .callout.collapsible > summary::after {
378
+ content: "";
379
+ margin-left: auto;
380
+ width: 6px;
381
+ height: 6px;
382
+ border-right: 1.5px solid currentColor;
383
+ border-bottom: 1.5px solid currentColor;
384
+ transform: rotate(45deg);
385
+ transition: transform 0.2s ease;
386
+ flex-shrink: 0;
387
+ }
388
+
389
+ .callout.collapsible[open] > summary::after {
390
+ transform: rotate(-135deg);
391
+ }
392
+
393
+ .callout.collapsible > .callout-body {
394
+ animation: callout-fade-in 0.15s ease-out;
395
+ }
396
+
397
+ /* ========================================================================
398
+ 9. Disclosure Widget
399
+ ======================================================================== */
400
+
401
+ /**
402
+ * Plain collapsible block — no color, no icon, just a clean disclosure.
403
+ * Syntax: > [!] Title or > [!]+ Title or > [!]- Title
404
+ * Always renders as <details>/<summary>.
405
+ */
406
+
407
+ .disclosure {
408
+ margin: 10px 0;
409
+ border: 1px solid var(--disclosure-border);
410
+ border-radius: var(--disclosure-radius);
411
+ background: var(--disclosure-bg);
412
+ overflow: hidden;
413
+ }
414
+
415
+ .disclosure > summary {
416
+ display: flex;
417
+ align-items: center;
418
+ gap: 6px;
419
+ padding: var(--disclosure-padding);
420
+ font-weight: 600;
421
+ font-size: var(--disclosure-title-font-size);
422
+ line-height: 1.3;
423
+ color: var(--disclosure-title-color);
424
+ cursor: pointer;
425
+ user-select: none;
426
+ list-style: none;
427
+ transition: background-color 0.15s ease;
428
+ }
429
+
430
+ .disclosure > summary:hover {
431
+ background-color: rgba(0, 0, 0, 0.03);
432
+ }
433
+
434
+ /* Remove default marker */
435
+ .disclosure > summary::-webkit-details-marker { display: none; }
436
+ .disclosure > summary::marker { display: none; content: ""; }
437
+
438
+ /* Chevron indicator */
439
+ .disclosure > summary::before {
440
+ content: "";
441
+ flex-shrink: 0;
442
+ width: 6px;
443
+ height: 6px;
444
+ border-right: 1.5px solid currentColor;
445
+ border-bottom: 1.5px solid currentColor;
446
+ transform: rotate(45deg);
447
+ transition: transform 0.2s ease;
448
+ }
449
+
450
+ .disclosure[open] > summary::before {
451
+ transform: rotate(-135deg);
452
+ }
453
+
454
+ .disclosure-title {
455
+ display: flex;
456
+ align-items: center;
457
+ gap: 6px;
458
+ padding: var(--disclosure-padding);
459
+ font-weight: 600;
460
+ font-size: var(--disclosure-title-font-size);
461
+ line-height: 1.3;
462
+ color: var(--disclosure-title-color);
463
+ user-select: none;
464
+ list-style: none;
465
+ }
466
+
467
+ .disclosure-body {
468
+ padding: 0 var(--disclosure-padding) var(--disclosure-padding);
469
+ font-size: var(--disclosure-body-font-size);
470
+ line-height: 1.5;
471
+ color: var(--disclosure-body-color);
472
+ animation: callout-fade-in 0.15s ease-out;
473
+ }
474
+
475
+ .disclosure-body > *:first-child { margin-top: 0; }
476
+ .disclosure-body > *:last-child { margin-bottom: 0; }
477
+ .disclosure-body p { margin: 0.25em 0; }
478
+
479
+ .disclosure-body code {
480
+ font-size: 0.9em;
481
+ padding: 0.15em 0.4em;
482
+ border-radius: 4px;
483
+ background-color: rgba(0, 0, 0, 0.06);
484
+ }
485
+
486
+ .disclosure-body pre {
487
+ margin: 0.4em 0;
488
+ padding: 8px 10px;
489
+ border-radius: 4px;
490
+ background-color: rgba(0, 0, 0, 0.04);
491
+ overflow-x: auto;
492
+ }
493
+
494
+ .disclosure-body pre code {
495
+ padding: 0;
496
+ background: none;
497
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
498
+ font-size: 0.9375em;
499
+ }
500
+
501
+ .disclosure-body ul,
502
+ .disclosure-body ol {
503
+ padding-left: 1.3em;
504
+ margin: 0.25em 0;
505
+ }
506
+
507
+ .disclosure-body li { margin: 0.1em 0; }
508
+
509
+ /* ========================================================================
510
+ 10. Accordion
511
+ ======================================================================== */
512
+
513
+ /**
514
+ * Grouped disclosures where opening one closes the others.
515
+ * Auto-created when 2+ [!] blocks appear consecutively.
516
+ * Progressive enhancement: without JS, each disclosure still toggles independently.
517
+ */
518
+
519
+ .disclosure-accordion {
520
+ margin: 10px 0;
521
+ border: 1px solid var(--disclosure-border);
522
+ border-radius: var(--disclosure-radius);
523
+ overflow: hidden;
524
+ }
525
+
526
+ .disclosure-accordion > .disclosure {
527
+ margin: 0;
528
+ border: none;
529
+ border-radius: 0;
530
+ }
531
+
532
+ /* Connect accordion items with a subtle divider */
533
+ .disclosure-accordion > .disclosure + .disclosure {
534
+ border-top: 1px solid var(--disclosure-border);
535
+ }
536
+
537
+ /* Accordion item hover — highlight the active item */
538
+ .disclosure-accordion > .disclosure > summary:hover {
539
+ background-color: rgba(0, 0, 0, 0.04);
540
+ }
541
+
542
+ /* ========================================================================
543
+ 11. Tree View
544
+ ======================================================================== */
545
+
546
+ /**
547
+ * Nested disclosures with indentation and visual tree lines.
548
+ * Created automatically when [!] blocks are nested inside each other.
549
+ * Pure CSS — no JavaScript required.
550
+ */
551
+
552
+ .disclosure-tree {
553
+ margin-left: 16px;
554
+ border-left: 2px solid var(--disclosure-border);
555
+ border-top: none;
556
+ border-right: none;
557
+ border-bottom: none;
558
+ border-radius: 0;
559
+ }
560
+
561
+ .disclosure-tree > summary {
562
+ padding-left: calc(var(--disclosure-padding) + 4px);
563
+ }
564
+
565
+ /* Depth-based indentation */
566
+ .disclosure[data-depth="1"] { margin-left: 16px; }
567
+ .disclosure[data-depth="2"] { margin-left: 32px; }
568
+ .disclosure[data-depth="3"] { margin-left: 48px; }
569
+ .disclosure[data-depth="4"] { margin-left: 64px; }
570
+ .disclosure[data-depth="5"] { margin-left: 80px; }
571
+
572
+ /* Tree line for each depth level */
573
+ .disclosure[data-depth] > summary::after {
574
+ content: "";
575
+ position: absolute;
576
+ left: -16px;
577
+ top: 50%;
578
+ width: 12px;
579
+ height: 0;
580
+ border-top: 2px solid var(--disclosure-border);
581
+ }
582
+
583
+ .disclosure[data-depth] > summary {
584
+ position: relative;
585
+ }
586
+
587
+ /* Subtle left border for tree context */
588
+ .disclosure-tree .disclosure-body {
589
+ border-left: 2px solid var(--disclosure-border);
590
+ margin-left: 8px;
591
+ padding-left: calc(var(--disclosure-padding) + 4px);
592
+ }
593
+
594
+ /* ========================================================================
595
+ 12. Animations
596
+ ======================================================================== */
597
+
598
+ @keyframes callout-fade-in {
599
+ from { opacity: 0; transform: translateY(4px); }
600
+ to { opacity: 1; transform: translateY(0); }
601
+ }
602
+
603
+ .callout { animation: callout-fade-in 0.25s ease-out; }
604
+
605
+ @media (prefers-reduced-motion: reduce) {
606
+ .callout { animation: none; }
607
+ .disclosure > .disclosure-body { animation: none; }
608
+ }
609
+
610
+ /* ========================================================================
611
+ 13. Print Styles
612
+ ======================================================================== */
613
+
614
+ @media print {
615
+ .callout { box-shadow: none; break-inside: avoid; }
616
+ .callout::before { display: none; }
617
+ .blockquote-enhanced blockquote { background: none; border-left-width: 2px; }
618
+ .disclosure { border-width: 1px; }
619
+ .disclosure-accordion { border-width: 1px; }
620
+ .disclosure-tree { border-left-width: 1px; }
621
+ }
622
+
623
+ /* ========================================================================
624
+ 14. Inline Callouts (v1.3.0+)
625
+ ======================================================================== */
626
+
627
+ /**
628
+ * Inline callouts float beside text on desktop, become full-width on mobile.
629
+ * Apply via the {inline} or {inline-end} per-callout override:
630
+ *
631
+ * > [!NOTE]{inline} — floats left, text wraps right
632
+ * > [!TIP]{inline-end} — floats right, text wraps left
633
+ *
634
+ * Responsive: on screens < 768px, inline callouts become full-width
635
+ * (no float) to avoid cramping on mobile.
636
+ */
637
+
638
+ .callout-inline {
639
+ float: left;
640
+ width: var(--callout-inline-width, 50%);
641
+ margin: 0 1em 1em 0;
642
+ clear: left;
643
+ }
644
+
645
+ .callout-inline-end {
646
+ float: right;
647
+ width: var(--callout-inline-width, 50%);
648
+ margin: 0 0 1em 1em;
649
+ clear: right;
650
+ }
651
+
652
+ @media (max-width: 768px) {
653
+ .callout-inline,
654
+ .callout-inline-end {
655
+ float: none;
656
+ width: 100%;
657
+ margin: 1em 0;
658
+ clear: both;
659
+ }
660
+ }