mr-md 1.0.4 → 2.0.0-beta

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 (58) hide show
  1. package/README.md +10 -5
  2. package/dist/builder.d.ts +6 -20
  3. package/dist/builder.d.ts.map +1 -1
  4. package/dist/builder.js +38 -97
  5. package/dist/cli/dev.d.ts +2 -0
  6. package/dist/cli/dev.d.ts.map +1 -0
  7. package/dist/cli/dev.js +92 -0
  8. package/dist/cli/generate.d.ts +2 -0
  9. package/dist/cli/generate.d.ts.map +1 -0
  10. package/dist/cli/generate.js +171 -0
  11. package/dist/cli/init.d.ts +2 -0
  12. package/dist/cli/init.d.ts.map +1 -0
  13. package/dist/cli/init.js +89 -0
  14. package/dist/cli.d.ts +3 -0
  15. package/dist/cli.d.ts.map +1 -0
  16. package/dist/cli.js +27 -0
  17. package/dist/client/app.js +282 -107
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/renderer/blocks.d.ts.map +1 -1
  22. package/dist/renderer/blocks.js +88 -16
  23. package/dist/renderer/html-neo.d.ts +7 -0
  24. package/dist/renderer/html-neo.d.ts.map +1 -0
  25. package/dist/renderer/html-neo.js +173 -0
  26. package/dist/renderer/html.d.ts.map +1 -1
  27. package/dist/renderer/html.js +36 -7
  28. package/dist/renderer/index-neo.d.ts +4 -0
  29. package/dist/renderer/index-neo.d.ts.map +1 -0
  30. package/dist/renderer/index-neo.js +469 -0
  31. package/dist/renderer/index.d.ts +1 -2
  32. package/dist/renderer/index.d.ts.map +1 -1
  33. package/dist/renderer/index.js +29 -379
  34. package/dist/renderer/markdown.d.ts +1 -1
  35. package/dist/renderer/markdown.d.ts.map +1 -1
  36. package/dist/renderer/markdown.js +3 -3
  37. package/dist/renderer/utils.d.ts +1 -1
  38. package/dist/renderer/utils.d.ts.map +1 -1
  39. package/dist/renderer/utils.js +41 -34
  40. package/dist/styles/theme-neo.css +1369 -0
  41. package/dist/styles/theme.css +412 -127
  42. package/dist/types.d.ts +8 -10
  43. package/dist/types.d.ts.map +1 -1
  44. package/package.json +8 -7
  45. package/src/builder.ts +49 -125
  46. package/src/cli/dev.ts +102 -0
  47. package/src/cli/generate.ts +191 -0
  48. package/src/cli/init.ts +97 -0
  49. package/src/cli.ts +29 -0
  50. package/src/client/app.js +282 -107
  51. package/src/index.ts +1 -1
  52. package/src/renderer/blocks.ts +89 -15
  53. package/src/renderer/html.ts +36 -7
  54. package/src/renderer/index.ts +30 -394
  55. package/src/renderer/markdown.ts +3 -2
  56. package/src/renderer/utils.ts +43 -36
  57. package/src/styles/theme.css +412 -127
  58. package/src/types.ts +8 -12
@@ -0,0 +1,1369 @@
1
+
2
+ :root {
3
+ color-scheme: light;
4
+ --font-sans:
5
+ "Archivo", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
6
+ --font-display: "Syne", Georgia, serif;
7
+ --font-mono:
8
+ "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
9
+ monospace;
10
+
11
+ --bg: #f4f4f0;
12
+ --paper: #ffffff;
13
+ --panel: #ffffff;
14
+ --panel-strong: #e4e4e0;
15
+ --ink: #000000;
16
+ --muted: #4a4a4a;
17
+ --faint: #8a8a8a;
18
+ --line: #000000;
19
+ --line-strong: #000000;
20
+ --code-bg: #111111;
21
+ --text-code: #f4f4f0;
22
+ --blue: #0055ff;
23
+ --teal: #00e5ff;
24
+ --amber: #ffaa00;
25
+ --rose: #ff2200;
26
+ --violet: #aa00ff;
27
+ --accent: var(--blue);
28
+ --accent-soft: rgba(0, 85, 255, 0.15);
29
+ --correct-bg: #ccffcc;
30
+ --correct-line: #00aa00;
31
+ --wrong-bg: #ffcccc;
32
+ --wrong-line: #ff2200;
33
+ --shadow: 4px 4px 0px 0px var(--ink);
34
+ }
35
+
36
+ html[data-palette="field"] {
37
+ --bg: #f2fcf5;
38
+ --paper: #ffffff;
39
+ --line: #e2f5e9;
40
+ --line-strong: #bbf7d0;
41
+ --accent: var(--teal);
42
+ --accent-soft: rgba(13, 148, 136, 0.1);
43
+ }
44
+
45
+ html[data-palette="ember"] {
46
+ --bg: #fffcf8;
47
+ --paper: #ffffff;
48
+ --line: #fce8d5;
49
+ --line-strong: #fed7aa;
50
+ --accent: #ea580c;
51
+ --accent-soft: rgba(234, 88, 12, 0.1);
52
+ }
53
+
54
+ html[data-palette="elixir"] {
55
+ --bg: #f8f5fc;
56
+ --paper: #ffffff;
57
+ --line: #ede5f6;
58
+ --line-strong: #d8b4fe;
59
+ --accent: #a855f7;
60
+ --accent-soft: rgba(168, 85, 247, 0.1);
61
+ }
62
+
63
+ html[data-palette="trunk"] {
64
+ --bg: #fdfaf8;
65
+ --paper: #ffffff;
66
+ --line: #f4ece4;
67
+ --line-strong: #d6bfa8;
68
+ --accent: #78350f;
69
+ --accent-soft: rgba(120, 53, 15, 0.1);
70
+ }
71
+
72
+ html[data-palette="lava"] {
73
+ --bg: #fff5f5;
74
+ --paper: #ffffff;
75
+ --line: #fce8e8;
76
+ --line-strong: #fca5a5;
77
+ --accent: #ef4444;
78
+ --accent-soft: rgba(239, 68, 68, 0.1);
79
+ }
80
+
81
+ :root[data-theme="dark"] {
82
+ color-scheme: dark;
83
+ --bg: #000000;
84
+ --paper: #000000;
85
+ --panel: #0a0a0a;
86
+ --panel-strong: #1a1a1a;
87
+ --ink: #ffffff;
88
+ --muted: #a1a1aa;
89
+ --faint: #71717a;
90
+ --line: #ffffff;
91
+ --line-strong: #ffffff;
92
+ --code-bg: #111111;
93
+ --text-code: #e4e4e7;
94
+ --blue: #0088ff;
95
+ --teal: #00e5ff;
96
+ --amber: #ffcc00;
97
+ --rose: #ff4444;
98
+ --violet: #cc44ff;
99
+ --accent: var(--blue);
100
+ --accent-soft: rgba(0, 136, 255, 0.2);
101
+ --correct-bg: rgba(0, 170, 0, 0.2);
102
+ --correct-line: #00cc00;
103
+ --wrong-bg: rgba(255, 68, 68, 0.2);
104
+ --wrong-line: #ff4444;
105
+ --shadow: 4px 4px 0px 0px var(--accent);
106
+ }
107
+
108
+ html[data-palette="field"][data-theme="dark"] {
109
+ --bg: #090c0a;
110
+ --paper: #121212;
111
+ --line: #1a221c;
112
+ --line-strong: #27362c;
113
+ --accent: var(--teal);
114
+ --accent-soft: rgba(45, 212, 191, 0.1);
115
+ }
116
+
117
+ html[data-palette="ember"][data-theme="dark"] {
118
+ --bg: #0d0a08;
119
+ --paper: #121212;
120
+ --line: #221a16;
121
+ --line-strong: #362822;
122
+ --accent: #fb923c;
123
+ --accent-soft: rgba(251, 146, 60, 0.1);
124
+ }
125
+
126
+ html[data-palette="elixir"][data-theme="dark"] {
127
+ --bg: #0b0a0e;
128
+ --paper: #121212;
129
+ --line: #1c1a24;
130
+ --line-strong: #2d263b;
131
+ --accent: #c084fc;
132
+ --accent-soft: rgba(192, 132, 252, 0.1);
133
+ }
134
+
135
+ html[data-palette="trunk"][data-theme="dark"] {
136
+ --bg: #0c0a09;
137
+ --paper: #121212;
138
+ --line: #201a17;
139
+ --line-strong: #332822;
140
+ --accent: #d4a373;
141
+ --accent-soft: rgba(212, 163, 115, 0.1);
142
+ }
143
+
144
+ html[data-palette="lava"][data-theme="dark"] {
145
+ --bg: #0f0808;
146
+ --paper: #121212;
147
+ --line: #241414;
148
+ --line-strong: #3c1e1e;
149
+ --accent: #f87171;
150
+ --accent-soft: rgba(248, 113, 113, 0.1);
151
+ }
152
+
153
+ @media (prefers-color-scheme: dark) {
154
+ :root:not([data-theme="light"]) {
155
+ color-scheme: dark;
156
+ --bg: #000000;
157
+ --paper: #000000;
158
+ --panel: #0a0a0a;
159
+ --panel-strong: #1a1a1a;
160
+ --ink: #ffffff;
161
+ --muted: #a1a1aa;
162
+ --faint: #71717a;
163
+ --line: #ffffff;
164
+ --line-strong: #ffffff;
165
+ --code-bg: #111111;
166
+ --text-code: #e4e4e7;
167
+ --blue: #0088ff;
168
+ --teal: #00e5ff;
169
+ --amber: #ffcc00;
170
+ --rose: #ff4444;
171
+ --violet: #cc44ff;
172
+ --accent: var(--blue);
173
+ --accent-soft: rgba(0, 136, 255, 0.2);
174
+ --correct-bg: rgba(0, 170, 0, 0.2);
175
+ --correct-line: #00cc00;
176
+ --wrong-bg: rgba(255, 68, 68, 0.2);
177
+ --wrong-line: #ff4444;
178
+ --shadow: 4px 4px 0px 0px var(--accent);
179
+ }
180
+
181
+ html[data-palette="field"]:not([data-theme="light"]) {
182
+ --bg: #090c0a;
183
+ --paper: #121212;
184
+ --line: #1a221c;
185
+ --line-strong: #27362c;
186
+ --accent: var(--teal);
187
+ --accent-soft: rgba(45, 212, 191, 0.1);
188
+ }
189
+
190
+ html[data-palette="ember"]:not([data-theme="light"]) {
191
+ --bg: #0d0a08;
192
+ --paper: #121212;
193
+ --line: #221a16;
194
+ --line-strong: #362822;
195
+ --accent: #fb923c;
196
+ --accent-soft: rgba(251, 146, 60, 0.1);
197
+ }
198
+
199
+ html[data-palette="elixir"]:not([data-theme="light"]) {
200
+ --bg: #0b0a0e;
201
+ --paper: #121212;
202
+ --line: #1c1a24;
203
+ --line-strong: #2d263b;
204
+ --accent: #c084fc;
205
+ --accent-soft: rgba(192, 132, 252, 0.1);
206
+ }
207
+
208
+ html[data-palette="trunk"]:not([data-theme="light"]) {
209
+ --bg: #0c0a09;
210
+ --paper: #121212;
211
+ --line: #201a17;
212
+ --line-strong: #332822;
213
+ --accent: #d4a373;
214
+ --accent-soft: rgba(212, 163, 115, 0.1);
215
+ }
216
+
217
+ html[data-palette="lava"]:not([data-theme="light"]) {
218
+ --bg: #0f0808;
219
+ --paper: #121212;
220
+ --line: #241414;
221
+ --line-strong: #3c1e1e;
222
+ --accent: #f87171;
223
+ --accent-soft: rgba(248, 113, 113, 0.1);
224
+ }
225
+ }
226
+
227
+ * {
228
+ box-sizing: border-box;
229
+ margin: 0;
230
+ padding: 0;
231
+ }
232
+ html {
233
+ }
234
+ body {
235
+ background: var(--bg);
236
+ color: var(--ink);
237
+ font-family: var(--font-sans);
238
+ line-height: 1.85;
239
+ -webkit-font-smoothing: antialiased;
240
+ text-rendering: optimizeLegibility;
241
+ }
242
+
243
+ .bk-shell {
244
+ display: flex;
245
+ min-height: 100vh;
246
+ overflow: hidden;
247
+ position: relative;
248
+ }
249
+
250
+ .bk-sidebar-collapse-floating {
251
+ position: absolute;
252
+ top: 50%;
253
+ transform: translateY(-50%);
254
+ left: 274px;
255
+ width: 28px;
256
+ height: 28px;
257
+ border-radius: 0;
258
+ border: 2px solid var(--line);
259
+ background: var(--paper);
260
+ color: var(--muted);
261
+ display: grid;
262
+ place-items: center;
263
+ cursor: pointer;
264
+ z-index: 40;
265
+ transition:
266
+ opacity 0.3s ease,
267
+ left 0.3s ease,
268
+ background 0.2s,
269
+ color 0.2s,
270
+ border-color 0.2s;
271
+ box-shadow: 4px 4px 0px 0px var(--ink);
272
+ }
273
+ .bk-shell[data-collapsed="true"] .bk-sidebar-collapse-floating {
274
+ left: -28px;
275
+ opacity: 0;
276
+ pointer-events: none;
277
+ }
278
+ .bk-sidebar-collapse-floating:hover {
279
+ background: var(--paper-hover, #f5f5f5);
280
+ color: var(--ink);
281
+ border-color: var(--ink);
282
+ }
283
+
284
+ .bk-sidebar {
285
+ width: 288px;
286
+ flex-shrink: 0;
287
+ position: relative;
288
+ height: 100vh;
289
+ overflow-y: auto;
290
+ border-right: 2px solid var(--line);
291
+ background: color-mix(in srgb, var(--paper) 88%, transparent);
292
+ backdrop-filter: blur(18px);
293
+ -webkit-backdrop-filter: blur(18px);
294
+ transition:
295
+ margin-left 0.3s ease,
296
+ opacity 0.3s ease;
297
+ }
298
+ .bk-shell[data-collapsed="true"] .bk-sidebar {
299
+ margin-left: -288px;
300
+ opacity: 0;
301
+ }
302
+ .bk-main {
303
+ flex-grow: 1;
304
+ position: relative;
305
+ height: 100vh;
306
+ overflow-y: auto;
307
+ min-width: 0;
308
+ }
309
+ .bk-sidebar-inner {
310
+ padding: 28px 0;
311
+ display: flex;
312
+ flex-direction: column;
313
+ min-height: 100%;
314
+ box-sizing: border-box;
315
+ }
316
+ .bk-sidebar-header {
317
+ position: relative;
318
+ padding: 0 22px 24px;
319
+ border-bottom: 2px solid var(--line);
320
+ margin-bottom: 18px;
321
+ }
322
+ .bk-brand-mark {
323
+ width: 36px;
324
+ height: 36px;
325
+ display: grid;
326
+ place-items: center;
327
+ border: 2px solid var(--line-strong);
328
+ border-radius: 0;
329
+ color: var(--accent);
330
+ font-weight: 700;
331
+ font-size: 12px;
332
+ margin-bottom: 18px;
333
+ }
334
+ .bk-sidebar-header-top {
335
+ display: flex;
336
+ align-items: center;
337
+ gap: 8px;
338
+ margin-bottom: 18px;
339
+ }
340
+ .bk-icon-btn {
341
+ width: 36px;
342
+ height: 36px;
343
+ display: grid;
344
+ place-items: center;
345
+ border: 2px solid var(--line);
346
+ border-radius: 0;
347
+ background: var(--paper);
348
+ color: var(--muted);
349
+ cursor: pointer;
350
+ text-decoration: none;
351
+ transition:
352
+ transform 0.18s ease,
353
+ border-color 0.18s ease,
354
+ background 0.18s ease,
355
+ color 0.18s ease;
356
+ }
357
+ .bk-icon-btn:hover,
358
+ .bk-icon-btn[aria-expanded="true"] {
359
+ transform: translateY(-1px);
360
+ border-color: var(--accent);
361
+ color: var(--accent);
362
+ background: var(--accent-soft);
363
+ }
364
+ .bk-sidebar-expand {
365
+ position: fixed;
366
+ top: 24px;
367
+ left: 24px;
368
+ width: 40px;
369
+ height: 40px;
370
+ display: none;
371
+ place-items: center;
372
+ border: 2px solid var(--line);
373
+ border-radius: 0;
374
+ background: var(--paper);
375
+ color: var(--muted);
376
+ cursor: pointer;
377
+ z-index: 100;
378
+ box-shadow: var(--shadow);
379
+ transition: all 0.2s ease;
380
+ }
381
+ .bk-shell[data-collapsed="true"] .bk-sidebar-expand {
382
+ display: grid;
383
+ }
384
+ .bk-sidebar-expand:hover {
385
+ border-color: var(--accent);
386
+ color: var(--accent);
387
+ transform: translateY(-1px);
388
+ }
389
+
390
+ .bk-back-link {
391
+ display: inline-flex;
392
+ align-items: center;
393
+ gap: 6px;
394
+ font-size: 13px;
395
+ font-weight: 500;
396
+ color: var(--muted);
397
+ text-decoration: none;
398
+ margin-bottom: 12px;
399
+ transition: color 0.18s ease;
400
+ }
401
+ .bk-back-link:hover {
402
+ color: var(--ink);
403
+ }
404
+ .bk-sidebar-footer {
405
+ margin-top: auto;
406
+ padding: 24px 22px 0;
407
+ border-top: 2px solid var(--line);
408
+ position: relative;
409
+ }
410
+
411
+ .bk-sr-only {
412
+ position: absolute;
413
+ width: 1px;
414
+ height: 1px;
415
+ padding: 0;
416
+ margin: -1px;
417
+ overflow: hidden;
418
+ clip: rect(0, 0, 0, 0);
419
+ white-space: nowrap;
420
+ border: 0;
421
+ }
422
+ .bk-sidebar-title {
423
+ font-weight: 700;
424
+ font-size: 15px;
425
+ line-height: 1.35;
426
+ color: var(--ink);
427
+ }
428
+ .bk-sidebar-author {
429
+ font-size: 12px;
430
+ color: var(--muted);
431
+ margin-top: 6px;
432
+ }
433
+ .bk-tag-row {
434
+ display: flex;
435
+ flex-wrap: wrap;
436
+ gap: 6px;
437
+ margin-top: 16px;
438
+ }
439
+ .bk-tag-row span {
440
+ font-size: 11px;
441
+ color: var(--muted);
442
+ border: 2px solid var(--line);
443
+ border-radius: 0;
444
+ padding: 3px 8px;
445
+ background: var(--panel);
446
+ }
447
+ .bk-theme-panel {
448
+ position: absolute;
449
+ z-index: 20;
450
+ left: 22px;
451
+ bottom: 64px;
452
+ width: min(240px, calc(100vw - 36px));
453
+ display: grid;
454
+ gap: 8px;
455
+ padding: 14px;
456
+ border: 2px solid var(--line);
457
+ border-radius: 0;
458
+ background: var(--paper);
459
+ box-shadow: var(--shadow);
460
+ }
461
+ .bk-theme-panel[hidden] {
462
+ display: none;
463
+ }
464
+ .bk-theme-row {
465
+ display: flex;
466
+ align-items: center;
467
+ justify-content: space-between;
468
+ gap: 8px;
469
+ }
470
+ .bk-segmented-control {
471
+ display: flex;
472
+ gap: 4px;
473
+ padding: 4px;
474
+ background: color-mix(in srgb, var(--panel) 50%, var(--paper));
475
+ border: 2px solid var(--line);
476
+ border-radius: 0;
477
+ }
478
+ .bk-segment-btn {
479
+ display: flex;
480
+ align-items: center;
481
+ justify-content: center;
482
+ width: 28px;
483
+ height: 28px;
484
+ border: none;
485
+ background: transparent;
486
+ color: var(--muted);
487
+ border-radius: 0;
488
+ cursor: pointer;
489
+ transition: background 0.2s, color 0.2s, box-shadow 0.2s;
490
+ }
491
+ .bk-segment-btn:hover {
492
+ color: var(--ink);
493
+ background: color-mix(in srgb, var(--panel) 80%, transparent);
494
+ }
495
+ .bk-segment-btn.active {
496
+ background: var(--paper);
497
+ color: var(--accent);
498
+ box-shadow: 4px 4px 0px 0px var(--ink);
499
+ border: 2px solid var(--line);
500
+ }
501
+ .bk-theme-panel span {
502
+ color: var(--muted);
503
+ font-size: 11px;
504
+ font-weight: 700;
505
+ text-transform: uppercase;
506
+ letter-spacing: 0.06em;
507
+ }
508
+
509
+ .bk-nav {
510
+ display: flex;
511
+ flex-direction: column;
512
+ gap: 4px;
513
+ padding: 0 16px;
514
+ position: relative;
515
+ }
516
+ .bk-nav-active-pill {
517
+ position: absolute;
518
+ left: 16px;
519
+ right: 16px;
520
+ background: var(--accent-soft);
521
+ border-radius: 0;
522
+ transition: top 0.25s cubic-bezier(0.2, 0.8, 0.2, 1), height 0.25s cubic-bezier(0.2, 0.8, 0.2, 1), opacity 0.2s ease;
523
+ z-index: 0;
524
+ pointer-events: none;
525
+ opacity: 0;
526
+ }
527
+ .bk-nav-item {
528
+ display: block;
529
+ padding: 7px 12px;
530
+ font-size: 13px;
531
+ line-height: 1.4;
532
+ color: var(--muted);
533
+ text-decoration: none;
534
+ border-bottom: none;
535
+ border-radius: 0;
536
+ position: relative;
537
+ z-index: 1;
538
+ transition: color 0.15s ease;
539
+ }
540
+ .bk-nav-item:hover {
541
+ color: var(--ink);
542
+ }
543
+ .bk-nav-item.active {
544
+ color: var(--accent);
545
+ }
546
+ .bk-nav-heading {
547
+ font-weight: 600;
548
+ color: var(--ink);
549
+ margin-top: 8px;
550
+ }
551
+ .bk-nav-heading:first-child {
552
+ margin-top: 0;
553
+ }
554
+ .bk-nav-sub,
555
+ .bk-nav-sim {
556
+ padding-left: 32px;
557
+ font-size: 13px;
558
+ position: relative;
559
+ }
560
+ .bk-nav-quiz {
561
+ padding-left: 32px;
562
+ font-style: italic;
563
+ opacity: 0.85;
564
+ position: relative;
565
+ }
566
+
567
+ .bk-main {
568
+ min-width: 0;
569
+ }
570
+ .bk-content {
571
+ max-width: 1024px;
572
+ margin: 0 auto;
573
+ padding: 56px 34px 128px;
574
+ display: flex;
575
+ flex-direction: column;
576
+ align-items: center;
577
+ gap: 30px;
578
+ }
579
+ .bk-content > * {
580
+ width: 100%;
581
+ max-width: 720px;
582
+ }
583
+ .bk-content > .bk-object,
584
+ .bk-content > .bk-end-nav {
585
+ max-width: 100%;
586
+ }
587
+ .bk-density-compact .bk-content {
588
+ gap: 22px;
589
+ }
590
+
591
+ .bk-hero {
592
+ border-bottom: 2px solid var(--line);
593
+ padding: 18px 0 44px;
594
+ margin-bottom: 4px;
595
+ }
596
+ .bk-eyebrow {
597
+ color: var(--accent);
598
+ font-size: 12px;
599
+ font-weight: 700;
600
+ text-transform: uppercase;
601
+ letter-spacing: 0.08em;
602
+ margin-bottom: 18px;
603
+ }
604
+ .bk-hero h1 {
605
+ font-family: var(--font-display);
606
+ font-size: clamp(38px, 6vw, 66px);
607
+ line-height: 1.02;
608
+ letter-spacing: 0;
609
+ max-width: 780px;
610
+ width: fit-content;
611
+ margin: 0;
612
+ }
613
+ .bk-deck {
614
+ max-width: 660px;
615
+ color: var(--muted);
616
+ font-size: 18px;
617
+ line-height: 1.65;
618
+ margin-top: 22px;
619
+ }
620
+
621
+ .bk-markdown h1,
622
+ .bk-section h1 {
623
+ font-family: var(--font-display);
624
+ font-size: 34px;
625
+ font-weight: 700;
626
+ letter-spacing: 0;
627
+ margin: 16px 0 24px;
628
+ line-height: 1.2;
629
+ }
630
+ .bk-section.bk-heading {
631
+ margin-top: 24px;
632
+ }
633
+ .bk-section.bk-subsection {
634
+ margin-top: 16px;
635
+ }
636
+ .bk-markdown h2,
637
+ .bk-section h2 {
638
+ font-size: 23px;
639
+ font-weight: 650;
640
+ margin: 32px 0 16px;
641
+ letter-spacing: 0;
642
+ }
643
+ .bk-markdown h3,
644
+ .bk-section h3 {
645
+ font-size: 18px;
646
+ font-weight: 600;
647
+ margin: 24px 0 12px;
648
+ }
649
+
650
+ p {
651
+ margin-bottom: 16px;
652
+ color: var(--ink);
653
+ font-size: 18px;
654
+ }
655
+ ul,
656
+ ol {
657
+ padding-left: 24px;
658
+ margin-bottom: 16px;
659
+ color: var(--ink);
660
+ }
661
+ li {
662
+ margin-bottom: 8px;
663
+ }
664
+ li > p {
665
+ margin-bottom: 8px;
666
+ }
667
+ strong {
668
+ font-weight: 600;
669
+ }
670
+ a {
671
+ color: var(--accent);
672
+ text-decoration: none;
673
+ border-bottom: 2px solid transparent;
674
+ transition: border-color 0.2s;
675
+ }
676
+ a:hover {
677
+ border-color: var(--accent);
678
+ }
679
+
680
+ code {
681
+ font-family: var(--font-mono);
682
+ font-size: 0.85em;
683
+ padding: 0.2em 0.4em;
684
+ background: var(--panel);
685
+ border: 2px solid var(--line);
686
+ border-radius: 0;
687
+ color: var(--ink);
688
+ }
689
+
690
+ blockquote {
691
+ border-left: 6px solid var(--line-strong);
692
+ padding: 4px 0 4px 20px;
693
+ margin: 24px 0;
694
+ color: var(--muted);
695
+ font-style: italic;
696
+ }
697
+
698
+ .bk-math-block {
699
+ margin: 24px 0;
700
+ overflow-x: auto;
701
+ overflow-y: hidden;
702
+ display: flex;
703
+ justify-content: center;
704
+ }
705
+ hr.bk-divider {
706
+ border: none;
707
+ border-top: 2px solid var(--line);
708
+ margin: 48px auto;
709
+ width: 50%;
710
+ }
711
+
712
+ .bk-callout {
713
+ display: flex;
714
+ gap: 16px;
715
+ padding: 20px;
716
+ border-radius: 0;
717
+ border: 2px solid;
718
+ margin: 24px 0;
719
+ background: var(--panel);
720
+ border-color: var(--line);
721
+ }
722
+ .bk-callout-icon {
723
+ flex-shrink: 0;
724
+ width: 24px;
725
+ height: 24px;
726
+ border-radius: 0;
727
+ display: flex;
728
+ align-items: center;
729
+ justify-content: center;
730
+ font-weight: bold;
731
+ font-size: 14px;
732
+ color: #fff;
733
+ }
734
+ .bk-callout-content {
735
+ flex-grow: 1;
736
+ }
737
+ .bk-callout-label {
738
+ font-weight: 600;
739
+ font-size: 14px;
740
+ margin-bottom: 8px;
741
+ text-transform: uppercase;
742
+ letter-spacing: 0.05em;
743
+ }
744
+ .bk-callout-body > *:last-child {
745
+ margin-bottom: 0;
746
+ }
747
+
748
+ .bk-callout--note .bk-callout-icon {
749
+ background: var(--muted);
750
+ }
751
+ .bk-callout--note .bk-callout-icon::after {
752
+ content: "i";
753
+ }
754
+ .bk-callout--note .bk-callout-label {
755
+ color: var(--muted);
756
+ }
757
+
758
+ .bk-callout--tip {
759
+ background: color-mix(in srgb, var(--teal) 12%, var(--paper));
760
+ border-color: color-mix(in srgb, var(--teal) 32%, var(--line));
761
+ }
762
+ .bk-callout--tip .bk-callout-icon {
763
+ background: var(--teal);
764
+ }
765
+ .bk-callout--tip .bk-callout-icon::after {
766
+ content: "OK";
767
+ font-size: 9px;
768
+ }
769
+ .bk-callout--tip .bk-callout-label {
770
+ color: var(--teal);
771
+ }
772
+
773
+ .bk-callout--important {
774
+ background: color-mix(in srgb, var(--blue) 12%, var(--paper));
775
+ border-color: color-mix(in srgb, var(--blue) 32%, var(--line));
776
+ }
777
+ .bk-callout--important .bk-callout-icon {
778
+ background: var(--blue);
779
+ }
780
+ .bk-callout--important .bk-callout-icon::after {
781
+ content: "!";
782
+ }
783
+ .bk-callout--important .bk-callout-label {
784
+ color: var(--blue);
785
+ }
786
+
787
+ .bk-callout--warning {
788
+ background: color-mix(in srgb, var(--amber) 14%, var(--paper));
789
+ border-color: color-mix(in srgb, var(--amber) 36%, var(--line));
790
+ }
791
+ .bk-callout--warning .bk-callout-icon {
792
+ background: var(--amber);
793
+ }
794
+ .bk-callout--warning .bk-callout-icon::after {
795
+ content: "!";
796
+ }
797
+ .bk-callout--warning .bk-callout-label {
798
+ color: var(--amber);
799
+ }
800
+
801
+ .bk-code-block {
802
+ margin: 24px 0;
803
+ border-radius: 0;
804
+ background: var(--code-bg);
805
+ border: 2px solid var(--line);
806
+ overflow: hidden;
807
+ box-shadow: var(--shadow);
808
+ }
809
+ .bk-code-header {
810
+ display: flex;
811
+ justify-content: space-between;
812
+ align-items: center;
813
+ padding: 10px 44px 10px 16px;
814
+ background: rgba(255, 255, 255, 0.05);
815
+ border-bottom: 2px solid rgba(255, 255, 255, 0.1);
816
+ font-family: var(--font-mono);
817
+ font-size: 12px;
818
+ color: #a1a1aa;
819
+ }
820
+ .bk-code-lang {
821
+ text-transform: uppercase;
822
+ }
823
+ .bk-code-scroll {
824
+ padding: 20px;
825
+ overflow-x: auto;
826
+ }
827
+ .bk-code-block pre {
828
+ margin: 0;
829
+ background: transparent;
830
+ border: none;
831
+ padding: 0;
832
+ }
833
+ .bk-code-block code {
834
+ border: none;
835
+ padding: 0;
836
+ font-size: 14px;
837
+ }
838
+ .bk-code-block code:not(.hljs) {
839
+ background: transparent;
840
+ color: var(--text-code);
841
+ }
842
+ .hljs {
843
+ background: transparent !important;
844
+ }
845
+
846
+ .bk-copy-btn {
847
+ position: absolute;
848
+ top: 8px;
849
+ right: 8px;
850
+ width: 28px;
851
+ height: 28px;
852
+ display: grid;
853
+ place-items: center;
854
+ border: 2px solid rgba(255, 255, 255, 0.1);
855
+ background: rgba(255, 255, 255, 0.05);
856
+ color: #a1a1aa;
857
+ border-radius: 0;
858
+ cursor: pointer;
859
+ transition: all 0.2s ease;
860
+ z-index: 10;
861
+ }
862
+ .bk-code-block:has(.bk-code-header) .bk-copy-btn {
863
+ top: 4px;
864
+ }
865
+ .bk-copy-btn:hover {
866
+ background: rgba(255, 255, 255, 0.1);
867
+ color: #fff;
868
+ }
869
+ .bk-copy-btn.copied {
870
+ color: #61b58d;
871
+ border-color: rgba(97, 181, 141, 0.3);
872
+ background: rgba(97, 181, 141, 0.1);
873
+ }
874
+
875
+ .bk-object {
876
+ margin: 34px 0;
877
+ border: 2px solid var(--line);
878
+ border-radius: 0;
879
+ background: var(--paper);
880
+ overflow: hidden;
881
+ box-shadow: var(--shadow);
882
+ }
883
+ .bk-object:focus-within {
884
+ border-color: var(--object-accent, var(--accent));
885
+ }
886
+ .bk-object-header {
887
+ display: flex;
888
+ align-items: center;
889
+ gap: 12px;
890
+ padding: 13px 16px;
891
+ border-bottom: 2px solid var(--line);
892
+ background: color-mix(in srgb, var(--object-accent, var(--accent)) 3%, var(--paper));
893
+ }
894
+ .bk-object-kicker {
895
+ font-size: 11px;
896
+ font-weight: 700;
897
+ text-transform: uppercase;
898
+ letter-spacing: 0.08em;
899
+ color: var(--object-accent, var(--accent));
900
+ }
901
+ .bk-object-title {
902
+ font-size: 13px;
903
+ color: var(--muted);
904
+ font-weight: 600;
905
+ }
906
+ .bk-object-maximize {
907
+ margin-left: auto;
908
+ width: 28px;
909
+ height: 28px;
910
+ display: grid;
911
+ place-items: center;
912
+ border: none;
913
+ background: transparent;
914
+ color: var(--muted);
915
+ cursor: pointer;
916
+ border-radius: 0;
917
+ }
918
+ .bk-object-maximize:hover {
919
+ background: rgba(0, 0, 0, 0.05);
920
+ color: var(--ink);
921
+ }
922
+
923
+ :root[data-theme="dark"] .bk-object-maximize:hover {
924
+ background: rgba(255, 255, 255, 0.1);
925
+ }
926
+ .bk-object--maximized {
927
+ position: fixed;
928
+ inset: 0;
929
+ width: 100vw;
930
+ height: 100vh;
931
+ z-index: 1000;
932
+ margin: 0;
933
+ border: none;
934
+ border-radius: 0;
935
+ display: flex;
936
+ flex-direction: column;
937
+ overflow: hidden;
938
+ }
939
+ .bk-object--maximized .bk-code-block {
940
+ flex-grow: 1;
941
+ min-height: 0;
942
+ height: auto !important;
943
+ max-height: none !important;
944
+ }
945
+ .bk-object--maximized .bk-embed-frame,
946
+ .bk-object--maximized .bk-media {
947
+ flex: 0 1 auto;
948
+ min-height: 0;
949
+ min-width: 0;
950
+ margin: auto;
951
+ height: 100% !important;
952
+ width: auto !important;
953
+ max-width: 100% !important;
954
+ max-height: 100% !important;
955
+ }
956
+ .bk-object--maximized .bk-caption {
957
+ margin-top: auto;
958
+ }
959
+ .bk-object--maximized .bk-embed-interactive iframe {
960
+ pointer-events: auto !important;
961
+ }
962
+ .bk-object--maximized .bk-embed-overlay {
963
+ display: none !important;
964
+ }
965
+ .bk-object--blue {
966
+ --object-accent: var(--blue);
967
+ }
968
+ .bk-object--teal {
969
+ --object-accent: var(--teal);
970
+ }
971
+ .bk-object--amber {
972
+ --object-accent: var(--amber);
973
+ }
974
+ .bk-object--rose {
975
+ --object-accent: var(--rose);
976
+ }
977
+ .bk-object--violet {
978
+ --object-accent: var(--violet);
979
+ }
980
+ .bk-embed-frame {
981
+ position: relative;
982
+ width: 100%;
983
+ border-radius: 0;
984
+ overflow: hidden;
985
+ background: #000;
986
+ content-visibility: auto;
987
+ contain-intrinsic-size: auto 480px;
988
+ isolation: isolate;
989
+ display: flex;
990
+ justify-content: center;
991
+ align-items: center;
992
+ aspect-ratio: 16 / 9;
993
+ }
994
+ .bk-embed-interactive iframe {
995
+ pointer-events: none;
996
+ transition: opacity 0.2s;
997
+ }
998
+ .bk-embed-interactive.is-interactive iframe {
999
+ pointer-events: auto;
1000
+ }
1001
+ .bk-embed-overlay {
1002
+ position: absolute;
1003
+ inset: 0;
1004
+ z-index: 10;
1005
+ display: flex;
1006
+ align-items: center;
1007
+ justify-content: center;
1008
+ background: rgba(0, 0, 0, 0.2);
1009
+ backdrop-filter: blur(2px);
1010
+ -webkit-backdrop-filter: blur(2px);
1011
+ cursor: pointer;
1012
+ transition:
1013
+ opacity 0.2s,
1014
+ visibility 0.2s;
1015
+ }
1016
+ .bk-embed-overlay:hover,
1017
+ .bk-embed-overlay:focus {
1018
+ background: rgba(0, 0, 0, 0.3);
1019
+ outline: none;
1020
+ }
1021
+ .bk-embed-overlay-text {
1022
+ padding: 8px 16px;
1023
+ background: rgba(0, 0, 0, 0.6);
1024
+ color: #fff;
1025
+ border-radius: 0;
1026
+ font-size: 13px;
1027
+ font-weight: 600;
1028
+ box-shadow: 4px 4px 0px 0px var(--ink);
1029
+ backdrop-filter: blur(4px);
1030
+ -webkit-backdrop-filter: blur(4px);
1031
+ transition: transform 0.2s;
1032
+ }
1033
+ .bk-embed-overlay:hover .bk-embed-overlay-text,
1034
+ .bk-embed-overlay:focus .bk-embed-overlay-text {
1035
+ transform: scale(1.05);
1036
+ }
1037
+ .bk-embed-interactive.is-interactive .bk-embed-overlay {
1038
+ opacity: 0;
1039
+ visibility: hidden;
1040
+ pointer-events: none;
1041
+ }
1042
+ .bk-sim-controls {
1043
+ display: grid;
1044
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
1045
+ gap: 10px 14px;
1046
+ padding: 14px 16px;
1047
+ border-bottom: 2px solid var(--line);
1048
+ background: var(--panel);
1049
+ }
1050
+ .bk-sim-toggle,
1051
+ .bk-sim-range {
1052
+ display: grid;
1053
+ gap: 6px;
1054
+ color: var(--muted);
1055
+ font-size: 12px;
1056
+ font-weight: 650;
1057
+ }
1058
+ .bk-sim-toggle {
1059
+ grid-template-columns: auto 1fr;
1060
+ align-items: center;
1061
+ }
1062
+ .bk-sim-range {
1063
+ grid-template-columns: 1fr auto;
1064
+ align-items: center;
1065
+ }
1066
+ .bk-sim-range input {
1067
+ grid-column: 1 / -1;
1068
+ width: 100%;
1069
+ accent-color: var(--accent);
1070
+ }
1071
+ .bk-sim-toggle input {
1072
+ accent-color: var(--accent);
1073
+ }
1074
+ .bk-sim-toggle input,
1075
+ .bk-sim-range input {
1076
+ cursor: pointer;
1077
+ }
1078
+ .bk-sim-range output {
1079
+ color: var(--ink);
1080
+ font-variant-numeric: tabular-nums;
1081
+ }
1082
+ .bk-media {
1083
+ width: 100%;
1084
+ display: flex;
1085
+ align-items: center;
1086
+ justify-content: center;
1087
+ border-radius: 0;
1088
+ overflow: hidden;
1089
+ background: var(--panel);
1090
+ aspect-ratio: 16 / 9;
1091
+ }
1092
+ .bk-media img,
1093
+ .bk-media video {
1094
+ width: 100%;
1095
+ height: 100%;
1096
+ object-fit: cover;
1097
+ display: block;
1098
+ }
1099
+ .bk-media--audio {
1100
+ padding: 24px;
1101
+ }
1102
+ .bk-media audio {
1103
+ width: 100%;
1104
+ }
1105
+ .bk-aspect-auto {
1106
+ min-height: 0;
1107
+ }
1108
+ .bk-caption {
1109
+ padding: 12px 16px 14px;
1110
+ border-top: 2px solid var(--line);
1111
+ color: var(--muted);
1112
+ font-size: 13px;
1113
+ line-height: 1.55;
1114
+ background: var(--panel);
1115
+ }
1116
+ .bk-caption * {
1117
+ font-size: inherit;
1118
+ margin: 0;
1119
+ }
1120
+ .bk-latex-block {
1121
+ display: flex;
1122
+ justify-content: center;
1123
+ overflow-x: auto;
1124
+ padding: 28px 18px;
1125
+ background: var(--paper);
1126
+ }
1127
+ .bk-latex-inline {
1128
+ padding: 16px;
1129
+ background: var(--paper);
1130
+ }
1131
+ .bk-columns {
1132
+ display: grid;
1133
+ gap: 18px;
1134
+ padding: 18px;
1135
+ background: var(--paper);
1136
+ }
1137
+ .bk-column {
1138
+ min-width: 0;
1139
+ padding: 16px;
1140
+ border: 2px solid var(--line);
1141
+ border-radius: 0;
1142
+ background: var(--panel);
1143
+ }
1144
+ .bk-column > *:last-child {
1145
+ margin-bottom: 0;
1146
+ }
1147
+
1148
+ .bk-quiz {
1149
+ margin: 32px 0;
1150
+ border-radius: 0;
1151
+ border: 2px solid var(--line);
1152
+ background: var(--paper);
1153
+ overflow: hidden;
1154
+ box-shadow: var(--shadow);
1155
+ }
1156
+ .bk-quiz-head {
1157
+ display: flex;
1158
+ flex-direction: column;
1159
+ gap: 4px;
1160
+ padding: 16px 22px;
1161
+ font-size: 13px;
1162
+ font-weight: 700;
1163
+ text-transform: uppercase;
1164
+ letter-spacing: 0.06em;
1165
+ color: var(--accent);
1166
+ border-bottom: 2px solid var(--line);
1167
+ background: var(--accent-soft);
1168
+ }
1169
+ .bk-quiz-head small {
1170
+ color: var(--muted);
1171
+ text-transform: none;
1172
+ letter-spacing: 0;
1173
+ font-weight: 500;
1174
+ }
1175
+ .bk-question {
1176
+ padding: 24px;
1177
+ border-bottom: 2px solid var(--line);
1178
+ }
1179
+ .bk-question:last-child {
1180
+ border-bottom: none;
1181
+ }
1182
+ .bk-q-text {
1183
+ font-size: 16px;
1184
+ font-weight: 500;
1185
+ margin-bottom: 20px;
1186
+ }
1187
+ .bk-q-text > *:last-child {
1188
+ margin-bottom: 0;
1189
+ }
1190
+ .bk-opts {
1191
+ display: flex;
1192
+ flex-direction: column;
1193
+ gap: 12px;
1194
+ }
1195
+ .bk-opt {
1196
+ display: flex;
1197
+ align-items: center;
1198
+ gap: 16px;
1199
+ width: 100%;
1200
+ text-align: left;
1201
+ padding: 14px 16px;
1202
+ border-radius: 0;
1203
+ border: 2px solid var(--line);
1204
+ background: var(--paper);
1205
+ color: var(--ink);
1206
+ font-size: 15px;
1207
+ cursor: pointer;
1208
+ transition: all 0.2s;
1209
+ }
1210
+ .bk-opt:hover {
1211
+ border-color: var(--line-strong);
1212
+ background: var(--panel);
1213
+ }
1214
+ .bk-opt-dot {
1215
+ width: 18px;
1216
+ height: 18px;
1217
+ border-radius: 0;
1218
+ border: 2px solid var(--muted);
1219
+ flex-shrink: 0;
1220
+ transition: all 0.2s;
1221
+ }
1222
+
1223
+ .bk-opt.correct {
1224
+ background: var(--correct-bg);
1225
+ border-color: var(--correct-line);
1226
+ pointer-events: none;
1227
+ }
1228
+ .bk-opt.correct .bk-opt-dot {
1229
+ border-color: var(--correct-line);
1230
+ background: var(--correct-line);
1231
+ }
1232
+
1233
+ .bk-opt.wrong {
1234
+ background: var(--wrong-bg);
1235
+ border-color: var(--wrong-line);
1236
+ pointer-events: none;
1237
+ opacity: 0.8;
1238
+ }
1239
+ .bk-opt.wrong .bk-opt-dot {
1240
+ border-color: var(--wrong-line);
1241
+ background: var(--wrong-line);
1242
+ }
1243
+
1244
+ .bk-opt.disabled {
1245
+ opacity: 0.5;
1246
+ pointer-events: none;
1247
+ }
1248
+
1249
+ .bk-explanation {
1250
+ margin-top: 20px;
1251
+ padding: 16px;
1252
+ background: var(--panel);
1253
+ border: 2px solid var(--line);
1254
+ border-radius: 0;
1255
+ font-size: 14px;
1256
+ color: var(--muted);
1257
+ }
1258
+ .bk-explanation > *:last-child {
1259
+ margin-bottom: 0;
1260
+ }
1261
+
1262
+ .bk-end-nav {
1263
+ display: grid;
1264
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1265
+ gap: 12px;
1266
+ margin-top: 48px;
1267
+ padding-top: 28px;
1268
+ border-top: 2px solid var(--line);
1269
+ }
1270
+ .bk-end-link {
1271
+ min-height: 100px;
1272
+ display: grid;
1273
+ align-content: center;
1274
+ gap: 8px;
1275
+ padding: 16px;
1276
+ border: 2px solid var(--line);
1277
+ border-radius: 0;
1278
+ background: var(--paper);
1279
+ color: var(--ink);
1280
+ text-decoration: none;
1281
+ }
1282
+ .bk-end-link:hover {
1283
+ border-color: var(--accent);
1284
+ background: var(--accent-soft);
1285
+ }
1286
+ .bk-end-link span {
1287
+ color: var(--muted);
1288
+ font-size: 12px;
1289
+ font-weight: 700;
1290
+ text-transform: uppercase;
1291
+ }
1292
+ .bk-end-link strong {
1293
+ line-height: 1.25;
1294
+ }
1295
+ .bk-end-link--next {
1296
+ background: var(--accent-soft);
1297
+ border-color: color-mix(in srgb, var(--accent) 36%, var(--line));
1298
+ }
1299
+
1300
+ @media (max-width: 800px) {
1301
+ .bk-shell {
1302
+ display: block;
1303
+ }
1304
+ .bk-sidebar-collapse-floating {
1305
+ display: none;
1306
+ }
1307
+ .bk-sidebar {
1308
+ width: 100%;
1309
+ height: auto;
1310
+ position: static;
1311
+ border-right: none;
1312
+ border-bottom: 2px solid var(--line);
1313
+ }
1314
+ .bk-sidebar-inner {
1315
+ padding: 20px;
1316
+ }
1317
+ .bk-sidebar-header {
1318
+ padding-left: 0;
1319
+ padding-right: 0;
1320
+ }
1321
+ .bk-settings-button {
1322
+ right: 0;
1323
+ }
1324
+ .bk-theme-panel {
1325
+ right: 0;
1326
+ }
1327
+ .bk-nav {
1328
+ padding: 0;
1329
+ max-height: 190px;
1330
+ overflow-y: auto;
1331
+ }
1332
+ .bk-content {
1333
+ padding: 32px 20px 80px;
1334
+ }
1335
+ .bk-hero h1 {
1336
+ font-size: 38px;
1337
+ }
1338
+ .bk-home {
1339
+ grid-template-columns: 1fr;
1340
+ }
1341
+ .bk-home-grid {
1342
+ grid-template-columns: 1fr;
1343
+ }
1344
+ .bk-end-nav {
1345
+ grid-template-columns: 1fr;
1346
+ }
1347
+ .bk-object {
1348
+ margin-left: -20px;
1349
+ margin-right: -20px;
1350
+ max-width: none;
1351
+ border-left: none;
1352
+ border-right: none;
1353
+ border-radius: 0;
1354
+ }
1355
+ .bk-object-header,
1356
+ .bk-quiz-head {
1357
+ padding-left: 20px;
1358
+ padding-right: 20px;
1359
+ }
1360
+ .bk-columns {
1361
+ grid-template-columns: 1fr !important;
1362
+ }
1363
+ }
1364
+
1365
+ @media (prefers-reduced-motion: no-preference) {
1366
+ @view-transition {
1367
+ navigation: auto;
1368
+ }
1369
+ }