@lucasviola/specwiki 1.0.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.
Files changed (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +227 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +226 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/generate.d.ts +5 -0
  8. package/dist/commands/generate.d.ts.map +1 -0
  9. package/dist/commands/generate.js +197 -0
  10. package/dist/commands/generate.js.map +1 -0
  11. package/dist/commands/init.d.ts +5 -0
  12. package/dist/commands/init.d.ts.map +1 -0
  13. package/dist/commands/init.js +91 -0
  14. package/dist/commands/init.js.map +1 -0
  15. package/dist/commands/open.d.ts +8 -0
  16. package/dist/commands/open.d.ts.map +1 -0
  17. package/dist/commands/open.js +150 -0
  18. package/dist/commands/open.js.map +1 -0
  19. package/dist/config/loader.d.ts +20 -0
  20. package/dist/config/loader.d.ts.map +1 -0
  21. package/dist/config/loader.js +143 -0
  22. package/dist/config/loader.js.map +1 -0
  23. package/dist/config/patterns.d.ts +9 -0
  24. package/dist/config/patterns.d.ts.map +1 -0
  25. package/dist/config/patterns.js +159 -0
  26. package/dist/config/patterns.js.map +1 -0
  27. package/dist/core/Logger.d.ts +8 -0
  28. package/dist/core/Logger.d.ts.map +1 -0
  29. package/dist/core/Logger.js +33 -0
  30. package/dist/core/Logger.js.map +1 -0
  31. package/dist/core/paths.d.ts +8 -0
  32. package/dist/core/paths.d.ts.map +1 -0
  33. package/dist/core/paths.js +45 -0
  34. package/dist/core/paths.js.map +1 -0
  35. package/dist/discover/specs.d.ts +11 -0
  36. package/dist/discover/specs.d.ts.map +1 -0
  37. package/dist/discover/specs.js +157 -0
  38. package/dist/discover/specs.js.map +1 -0
  39. package/dist/output/html/assets/highlight.css +101 -0
  40. package/dist/output/html/assets/search.js +368 -0
  41. package/dist/output/html/assets/specwiki.css +905 -0
  42. package/dist/output/html/renderer.d.ts +21 -0
  43. package/dist/output/html/renderer.d.ts.map +1 -0
  44. package/dist/output/html/renderer.js +203 -0
  45. package/dist/output/html/renderer.js.map +1 -0
  46. package/dist/output/html/search-index.d.ts +20 -0
  47. package/dist/output/html/search-index.d.ts.map +1 -0
  48. package/dist/output/html/search-index.js +46 -0
  49. package/dist/output/html/search-index.js.map +1 -0
  50. package/dist/output/html/templates/article.mustache +85 -0
  51. package/dist/output/html/templates/index.mustache +80 -0
  52. package/dist/output/html/templates/layout.mustache +205 -0
  53. package/dist/output/llms.d.ts +4 -0
  54. package/dist/output/llms.d.ts.map +1 -0
  55. package/dist/output/llms.js +44 -0
  56. package/dist/output/llms.js.map +1 -0
  57. package/dist/output/readme-index.d.ts +17 -0
  58. package/dist/output/readme-index.d.ts.map +1 -0
  59. package/dist/output/readme-index.js +71 -0
  60. package/dist/output/readme-index.js.map +1 -0
  61. package/dist/output/wiki.d.ts +11 -0
  62. package/dist/output/wiki.d.ts.map +1 -0
  63. package/dist/output/wiki.js +400 -0
  64. package/dist/output/wiki.js.map +1 -0
  65. package/dist/parse/markdown.d.ts +6 -0
  66. package/dist/parse/markdown.d.ts.map +1 -0
  67. package/dist/parse/markdown.js +225 -0
  68. package/dist/parse/markdown.js.map +1 -0
  69. package/dist/types.d.ts +96 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +2 -0
  72. package/dist/types.js.map +1 -0
  73. package/package.json +67 -0
@@ -0,0 +1,905 @@
1
+ /* Spec Wiki layout — Vector-inspired chrome (S16.1 baseline + S16.2 navigation) */
2
+
3
+ :root {
4
+ color-scheme: light;
5
+ --background-color-base: #ffffff;
6
+ --background-color-base--hover: #eaecf0;
7
+ --background-color-code: #f6f8fa;
8
+ --background-color-interactive-subtle: #f8f9fa;
9
+ --color-base: #202122;
10
+ --color-base--hover: #404244;
11
+ --color-base--active: #000000;
12
+ --color-base--subtle: #54595d;
13
+ --color-primary: #3366cc;
14
+ --color-primary--hover: #2a4b8d;
15
+ --color-primary--active: #233566;
16
+ --border-color-base: #72777d;
17
+ --border-color-divider: #72777d;
18
+ --specwiki-shadow-color: rgba(0, 0, 0, 0.16);
19
+ --specwiki-search-match-background: #fff3b0;
20
+ --specwiki-search-badge-background: #eaecf0;
21
+ --specwiki-syntax-text: #24292e;
22
+ --specwiki-syntax-background: #f6f8fa;
23
+ --specwiki-syntax-keyword: #cf222e;
24
+ --specwiki-syntax-title: #8250df;
25
+ --specwiki-syntax-literal: #0550ae;
26
+ --specwiki-syntax-string: #0a3069;
27
+ --specwiki-syntax-built-in: #953800;
28
+ --specwiki-syntax-comment: #57606a;
29
+ --specwiki-syntax-tag: #116329;
30
+ --specwiki-syntax-section: #0969da;
31
+ --specwiki-syntax-bullet: #7d4e00;
32
+ --specwiki-syntax-addition: #1a7f37;
33
+ --specwiki-syntax-addition-background: #dafbe1;
34
+ --specwiki-syntax-deletion: #cf222e;
35
+ --specwiki-syntax-deletion-background: #ffebe9;
36
+ --specwiki-header-block-size: calc(var(--size-tool) + 1px);
37
+ }
38
+
39
+ :root[data-theme="light"] {
40
+ color-scheme: light;
41
+ }
42
+
43
+ @media (prefers-color-scheme: dark) {
44
+ :root:not([data-theme="light"]) {
45
+ color-scheme: dark;
46
+ --background-color-base: #16181c;
47
+ --background-color-base--hover: #2b2f36;
48
+ --background-color-code: #202328;
49
+ --background-color-interactive-subtle: #202328;
50
+ --color-base: #eaecf0;
51
+ --color-base--hover: #ffffff;
52
+ --color-base--active: #ffffff;
53
+ --color-base--subtle: #b6bdc6;
54
+ --color-primary: #6b8fe8;
55
+ --color-primary--hover: #9bb4f0;
56
+ --color-primary--active: #bdccf5;
57
+ --border-color-base: #72777d;
58
+ --border-color-divider: #72777d;
59
+ --specwiki-shadow-color: rgba(0, 0, 0, 0.48);
60
+ --specwiki-search-match-background: #665500;
61
+ --specwiki-search-badge-background: #343941;
62
+ --specwiki-syntax-text: #e6edf3;
63
+ --specwiki-syntax-background: #202328;
64
+ --specwiki-syntax-keyword: #ff7b72;
65
+ --specwiki-syntax-title: #d2a8ff;
66
+ --specwiki-syntax-literal: #79c0ff;
67
+ --specwiki-syntax-string: #a5d6ff;
68
+ --specwiki-syntax-built-in: #ffa657;
69
+ --specwiki-syntax-comment: #9ca6b1;
70
+ --specwiki-syntax-tag: #7ee787;
71
+ --specwiki-syntax-section: #58a6ff;
72
+ --specwiki-syntax-bullet: #f2cc60;
73
+ --specwiki-syntax-addition: #aff5b4;
74
+ --specwiki-syntax-addition-background: #033a16;
75
+ --specwiki-syntax-deletion: #ffdcd7;
76
+ --specwiki-syntax-deletion-background: #67060c;
77
+ }
78
+ }
79
+
80
+ :root[data-theme="dark"] {
81
+ color-scheme: dark;
82
+ --background-color-base: #16181c;
83
+ --background-color-base--hover: #2b2f36;
84
+ --background-color-code: #202328;
85
+ --background-color-interactive-subtle: #202328;
86
+ --color-base: #eaecf0;
87
+ --color-base--hover: #ffffff;
88
+ --color-base--active: #ffffff;
89
+ --color-base--subtle: #b6bdc6;
90
+ --color-primary: #6b8fe8;
91
+ --color-primary--hover: #9bb4f0;
92
+ --color-primary--active: #bdccf5;
93
+ --border-color-base: #72777d;
94
+ --border-color-divider: #72777d;
95
+ --specwiki-shadow-color: rgba(0, 0, 0, 0.48);
96
+ --specwiki-search-match-background: #665500;
97
+ --specwiki-search-badge-background: #343941;
98
+ --specwiki-syntax-text: #e6edf3;
99
+ --specwiki-syntax-background: #202328;
100
+ --specwiki-syntax-keyword: #ff7b72;
101
+ --specwiki-syntax-title: #d2a8ff;
102
+ --specwiki-syntax-literal: #79c0ff;
103
+ --specwiki-syntax-string: #a5d6ff;
104
+ --specwiki-syntax-built-in: #ffa657;
105
+ --specwiki-syntax-comment: #9ca6b1;
106
+ --specwiki-syntax-tag: #7ee787;
107
+ --specwiki-syntax-section: #58a6ff;
108
+ --specwiki-syntax-bullet: #f2cc60;
109
+ --specwiki-syntax-addition: #aff5b4;
110
+ --specwiki-syntax-addition-background: #033a16;
111
+ --specwiki-syntax-deletion: #ffdcd7;
112
+ --specwiki-syntax-deletion-background: #67060c;
113
+ }
114
+
115
+ * {
116
+ box-sizing: var(--box-sizing-base, border-box);
117
+ }
118
+
119
+ body.specwiki {
120
+ margin: 0;
121
+ font-family: var(--font-family-base);
122
+ font-size: 0.875rem;
123
+ line-height: var(--line-height-base);
124
+ color: var(--color-base);
125
+ background-color: var(--background-color-base);
126
+ }
127
+
128
+ .specwiki-header {
129
+ position: sticky;
130
+ top: 0;
131
+ z-index: 15;
132
+ background-color: var(--background-color-base);
133
+ border-bottom: 1px solid var(--border-color-divider);
134
+ padding: 0 var(--padding-horizontal-base);
135
+ }
136
+
137
+ .specwiki-header-inner {
138
+ max-width: none;
139
+ margin: 0 auto;
140
+ display: flex;
141
+ align-items: center;
142
+ gap: var(--padding-horizontal-base);
143
+ min-height: var(--size-tool);
144
+ }
145
+
146
+ .specwiki-search {
147
+ position: relative;
148
+ margin-left: auto;
149
+ flex: 1 1 16rem;
150
+ max-width: 24rem;
151
+ }
152
+
153
+ .specwiki-search-label {
154
+ position: absolute;
155
+ width: 1px;
156
+ height: 1px;
157
+ padding: 0;
158
+ margin: -1px;
159
+ overflow: hidden;
160
+ clip: rect(0, 0, 0, 0);
161
+ white-space: nowrap;
162
+ border: 0;
163
+ }
164
+
165
+ .specwiki-search-input {
166
+ width: 100%;
167
+ padding: 0.375rem 0.625rem;
168
+ border: 1px solid var(--border-color-divider);
169
+ border-radius: var(--border-radius-base, 2px);
170
+ font: inherit;
171
+ background-color: var(--background-color-base);
172
+ color: var(--color-base);
173
+ }
174
+
175
+ .specwiki-search-input:focus {
176
+ outline: 2px solid var(--color-primary);
177
+ outline-offset: 1px;
178
+ }
179
+
180
+ .specwiki-search-results {
181
+ position: absolute;
182
+ top: calc(100% + 0.25rem);
183
+ left: 0;
184
+ right: 0;
185
+ z-index: 40;
186
+ background-color: var(--background-color-base);
187
+ border: 1px solid var(--border-color-divider);
188
+ border-radius: var(--border-radius-base, 2px);
189
+ box-shadow: 0 2px 8px var(--specwiki-shadow-color);
190
+ max-height: min(24rem, calc(100vh - 4rem));
191
+ overflow-y: auto;
192
+ }
193
+
194
+ .specwiki-search-group + .specwiki-search-group {
195
+ border-top: 1px solid var(--border-color-divider);
196
+ }
197
+
198
+ .specwiki-search-group-heading {
199
+ margin: 0;
200
+ padding: 0.4rem 0.625rem;
201
+ color: var(--color-base--subtle);
202
+ background-color: var(--background-color-interactive-subtle);
203
+ font-size: 0.75rem;
204
+ font-weight: var(--font-weight-bold);
205
+ text-transform: uppercase;
206
+ letter-spacing: 0.04em;
207
+ }
208
+
209
+ .specwiki-search-results-list {
210
+ list-style: none;
211
+ margin: 0;
212
+ padding: 0;
213
+ }
214
+
215
+ .specwiki-search-results-list li {
216
+ border-bottom: 1px solid var(--border-color-divider);
217
+ }
218
+
219
+ .specwiki-search-results-list li:last-child {
220
+ border-bottom: none;
221
+ }
222
+
223
+ .specwiki-search-option {
224
+ display: grid;
225
+ grid-template-columns: minmax(0, 1fr) auto;
226
+ gap: 0.2rem 0.5rem;
227
+ padding: 0.5rem 0.625rem;
228
+ color: var(--color-primary);
229
+ text-decoration: none;
230
+ }
231
+
232
+ .specwiki-search-option:hover,
233
+ .specwiki-search-option[aria-selected="true"] {
234
+ background-color: var(--background-color-interactive-subtle);
235
+ outline: 2px solid var(--color-primary);
236
+ outline-offset: -2px;
237
+ }
238
+
239
+ .specwiki-search-title {
240
+ min-width: 0;
241
+ overflow: hidden;
242
+ font-weight: var(--font-weight-bold);
243
+ text-overflow: ellipsis;
244
+ white-space: nowrap;
245
+ }
246
+
247
+ .specwiki-search-category {
248
+ align-self: start;
249
+ max-width: 9rem;
250
+ padding: 0.1rem 0.35rem;
251
+ overflow: hidden;
252
+ border-radius: var(--border-radius-base, 2px);
253
+ color: var(--color-base);
254
+ background-color: var(--specwiki-search-badge-background);
255
+ font-size: 0.6875rem;
256
+ font-weight: var(--font-weight-normal);
257
+ text-overflow: ellipsis;
258
+ white-space: nowrap;
259
+ }
260
+
261
+ .specwiki-search-snippet {
262
+ display: block;
263
+ grid-column: 1 / -1;
264
+ min-width: 0;
265
+ overflow: hidden;
266
+ color: var(--color-base--subtle);
267
+ font-size: 0.8125rem;
268
+ font-weight: normal;
269
+ text-overflow: ellipsis;
270
+ white-space: nowrap;
271
+ }
272
+
273
+ .specwiki-search-match {
274
+ color: inherit;
275
+ background-color: var(--specwiki-search-match-background);
276
+ }
277
+
278
+ .specwiki-search-empty {
279
+ margin: 0;
280
+ padding: 0.75rem;
281
+ color: var(--color-base--subtle);
282
+ }
283
+
284
+ .specwiki-search-empty[hidden] {
285
+ display: none;
286
+ }
287
+
288
+ .specwiki-all-pages {
289
+ margin-top: calc(var(--padding-horizontal-base) * 2);
290
+ padding-top: var(--padding-horizontal-base);
291
+ border-top: 1px solid var(--border-color-divider);
292
+ }
293
+
294
+ .specwiki-logo {
295
+ color: var(--color-base);
296
+ text-decoration: none;
297
+ font-weight: var(--font-weight-bold);
298
+ font-size: 1rem;
299
+ font-family: var(--font-family-monospace);
300
+ letter-spacing: -0.02em;
301
+ }
302
+
303
+ .specwiki-logo:hover {
304
+ color: var(--color-base--hover);
305
+ }
306
+
307
+ .specwiki-logo-bracket {
308
+ color: var(--color-primary);
309
+ }
310
+
311
+ .specwiki-theme-toggle {
312
+ display: inline-flex;
313
+ align-items: center;
314
+ gap: 0.35rem;
315
+ min-height: 2rem;
316
+ padding: 0.25rem 0.625rem;
317
+ border: 1px solid var(--border-color-base);
318
+ border-radius: var(--border-radius-base, 2px);
319
+ color: var(--color-base);
320
+ background-color: var(--background-color-base);
321
+ font: inherit;
322
+ cursor: pointer;
323
+ }
324
+
325
+ .specwiki-theme-toggle:hover {
326
+ color: var(--color-base--hover);
327
+ background-color: var(--background-color-base--hover);
328
+ }
329
+
330
+ .specwiki-theme-toggle:focus-visible {
331
+ outline: 2px solid var(--color-primary);
332
+ outline-offset: 2px;
333
+ }
334
+
335
+ .specwiki-theme-toggle[hidden] {
336
+ display: none;
337
+ }
338
+
339
+ .specwiki-nav-toggle,
340
+ .specwiki-nav-close,
341
+ .specwiki-nav-backdrop {
342
+ display: none;
343
+ }
344
+
345
+ .specwiki-nav-toggle,
346
+ .specwiki-nav-close {
347
+ align-items: center;
348
+ justify-content: center;
349
+ min-width: 2rem;
350
+ min-height: 2rem;
351
+ padding: 0.25rem 0.5rem;
352
+ border: 1px solid var(--border-color-base);
353
+ border-radius: var(--border-radius-base, 2px);
354
+ color: var(--color-base);
355
+ background-color: var(--background-color-base);
356
+ font: inherit;
357
+ cursor: pointer;
358
+ }
359
+
360
+ .specwiki-nav-toggle:hover,
361
+ .specwiki-nav-close:hover {
362
+ color: var(--color-base--hover);
363
+ background-color: var(--background-color-base--hover);
364
+ }
365
+
366
+ .specwiki-nav-toggle:focus-visible,
367
+ .specwiki-nav-close:focus-visible {
368
+ outline: 2px solid var(--color-primary);
369
+ outline-offset: 2px;
370
+ }
371
+
372
+ .specwiki-nav-toggle[hidden],
373
+ .specwiki-nav-close[hidden],
374
+ .specwiki-nav-backdrop[hidden] {
375
+ display: none;
376
+ }
377
+
378
+ .specwiki-main {
379
+ max-width: none;
380
+ margin: 0;
381
+ padding: 0;
382
+ }
383
+
384
+ .specwiki-layout {
385
+ display: grid;
386
+ grid-template-columns: 12rem minmax(0, 1fr);
387
+ gap: 0;
388
+ min-height: calc(100vh - var(--size-tool));
389
+ }
390
+
391
+ .specwiki-layout-article {
392
+ grid-template-columns: 12rem minmax(0, 1fr) 11rem;
393
+ }
394
+
395
+ .specwiki-nav-drawer {
396
+ min-width: 0;
397
+ }
398
+
399
+ .category-nav {
400
+ height: 100%;
401
+ border-right: 1px solid var(--border-color-divider);
402
+ padding: var(--padding-horizontal-base);
403
+ background-color: var(--background-color-interactive-subtle);
404
+ overflow-y: auto;
405
+ }
406
+
407
+ .category-nav-group {
408
+ margin-bottom: var(--padding-horizontal-base);
409
+ }
410
+
411
+ .category-nav-group.category-nav-active .category-nav-heading {
412
+ font-weight: var(--font-weight-bold);
413
+ color: var(--color-base);
414
+ }
415
+
416
+ .category-nav-summary {
417
+ display: flex;
418
+ align-items: center;
419
+ gap: 0.25rem;
420
+ cursor: pointer;
421
+ list-style: none;
422
+ }
423
+
424
+ .category-nav-group > summary::-webkit-details-marker {
425
+ display: none;
426
+ }
427
+
428
+ .category-nav-group > summary::marker {
429
+ content: "";
430
+ }
431
+
432
+ .category-nav-group > summary::before {
433
+ content: "›";
434
+ color: var(--color-base--subtle);
435
+ font-size: 1rem;
436
+ line-height: 1;
437
+ transform: rotate(0deg);
438
+ transition: transform 160ms ease-out;
439
+ }
440
+
441
+ .category-nav-group[open] > summary::before {
442
+ transform: rotate(90deg);
443
+ }
444
+
445
+ .category-nav-heading {
446
+ display: block;
447
+ color: var(--color-primary);
448
+ text-decoration: none;
449
+ font-size: 0.8125rem;
450
+ margin-bottom: 0.25rem;
451
+ }
452
+
453
+ .category-nav-summary .category-nav-heading {
454
+ flex: 1;
455
+ min-width: 0;
456
+ margin-bottom: 0;
457
+ }
458
+
459
+ .category-nav-heading:hover {
460
+ text-decoration: underline;
461
+ }
462
+
463
+ .category-nav-count {
464
+ flex: 0 0 auto;
465
+ padding: 0.0625rem 0.375rem;
466
+ border-radius: var(--border-radius-base, 2px);
467
+ color: var(--color-base--subtle);
468
+ background-color: var(--background-color-interactive-subtle);
469
+ font-size: 0.6875rem;
470
+ font-weight: var(--font-weight-normal);
471
+ }
472
+
473
+ .category-nav-pages {
474
+ list-style: none;
475
+ margin: 0;
476
+ padding: 0 0 0 0.5rem;
477
+ }
478
+
479
+ .category-nav-pages li {
480
+ margin: 0.125rem 0;
481
+ }
482
+
483
+ .category-nav-pages a {
484
+ color: var(--color-base);
485
+ text-decoration: none;
486
+ font-size: 0.75rem;
487
+ }
488
+
489
+ .category-nav-pages a:hover {
490
+ color: var(--color-primary);
491
+ text-decoration: underline;
492
+ }
493
+
494
+ .specwiki-center {
495
+ padding: var(--padding-horizontal-base);
496
+ min-width: 0;
497
+ }
498
+
499
+ .breadcrumb {
500
+ font-size: 0.8125rem;
501
+ color: var(--color-base--subtle);
502
+ margin-bottom: var(--padding-horizontal-base);
503
+ }
504
+
505
+ .breadcrumb a {
506
+ color: var(--color-primary);
507
+ text-decoration: none;
508
+ }
509
+
510
+ .breadcrumb a:hover {
511
+ text-decoration: underline;
512
+ }
513
+
514
+ .infobox {
515
+ float: right;
516
+ width: 16rem;
517
+ margin: 0 0 var(--padding-horizontal-base) var(--padding-horizontal-base);
518
+ border: 1px solid var(--border-color-base);
519
+ background-color: var(--background-color-interactive-subtle);
520
+ padding: var(--padding-vertical-base) var(--padding-horizontal-base);
521
+ font-size: 0.8125rem;
522
+ }
523
+
524
+ .infobox-title {
525
+ margin: 0 0 var(--padding-vertical-base);
526
+ font-size: 1rem;
527
+ line-height: var(--line-height-heading);
528
+ text-align: center;
529
+ }
530
+
531
+ .infobox-table {
532
+ width: 100%;
533
+ border-collapse: collapse;
534
+ }
535
+
536
+ .infobox-table th {
537
+ text-align: left;
538
+ vertical-align: top;
539
+ padding: 0.25rem 0.5rem 0.25rem 0;
540
+ font-weight: var(--font-weight-normal);
541
+ color: var(--color-base--subtle);
542
+ white-space: nowrap;
543
+ }
544
+
545
+ .infobox-table td {
546
+ vertical-align: top;
547
+ padding: 0.25rem 0;
548
+ }
549
+
550
+ .infobox-table code {
551
+ font-size: 0.75rem;
552
+ word-break: break-all;
553
+ }
554
+
555
+ .toc {
556
+ border-left: 1px solid var(--border-color-divider);
557
+ padding: var(--padding-horizontal-base);
558
+ background-color: var(--background-color-interactive-subtle);
559
+ overflow-y: auto;
560
+ position: sticky;
561
+ top: var(--specwiki-header-block-size);
562
+ align-self: start;
563
+ max-height: calc(100vh - var(--specwiki-header-block-size));
564
+ }
565
+
566
+ .toc-heading {
567
+ margin: 0 0 var(--padding-vertical-base);
568
+ font-size: 0.8125rem;
569
+ font-weight: var(--font-weight-bold);
570
+ }
571
+
572
+ .toc-list {
573
+ list-style: none;
574
+ margin: 0;
575
+ padding: 0;
576
+ }
577
+
578
+ .toc-list li {
579
+ margin: 0.25rem 0;
580
+ }
581
+
582
+ .toc-list a {
583
+ color: var(--color-primary);
584
+ text-decoration: none;
585
+ font-size: 0.75rem;
586
+ }
587
+
588
+ .toc-list a:hover {
589
+ text-decoration: underline;
590
+ }
591
+
592
+ .toc-level-3 {
593
+ padding-left: 0.75rem;
594
+ }
595
+
596
+ .toc-level-4 {
597
+ padding-left: 1.5rem;
598
+ }
599
+
600
+ .toc-level-5 {
601
+ padding-left: 2.25rem;
602
+ }
603
+
604
+ .toc-level-6 {
605
+ padding-left: 3rem;
606
+ }
607
+
608
+ .specwiki-portal h1,
609
+ .mw-parser-output h1,
610
+ .mw-parser-output h2,
611
+ .mw-parser-output h3 {
612
+ line-height: var(--line-height-heading);
613
+ }
614
+
615
+ .mw-parser-output h2,
616
+ .mw-parser-output h3,
617
+ .mw-parser-output h4,
618
+ .mw-parser-output h5,
619
+ .mw-parser-output h6 {
620
+ position: relative;
621
+ }
622
+
623
+ .specwiki-article-body .mw-parser-output h1,
624
+ .specwiki-article-body .mw-parser-output h2,
625
+ .specwiki-article-body .mw-parser-output h3,
626
+ .specwiki-article-body .mw-parser-output h4,
627
+ .specwiki-article-body .mw-parser-output h5,
628
+ .specwiki-article-body .mw-parser-output h6,
629
+ .specwiki-category-section,
630
+ .specwiki-all-pages {
631
+ scroll-margin-top: calc(
632
+ var(--specwiki-header-block-size) + var(--padding-horizontal-base)
633
+ );
634
+ }
635
+
636
+ .mw-parser-output .heading-permalink {
637
+ opacity: 0;
638
+ margin-left: 0.35em;
639
+ color: var(--color-base--subtle);
640
+ text-decoration: none;
641
+ font-weight: var(--font-weight-normal);
642
+ }
643
+
644
+ .mw-parser-output h2:hover .heading-permalink,
645
+ .mw-parser-output h3:hover .heading-permalink,
646
+ .mw-parser-output h4:hover .heading-permalink,
647
+ .mw-parser-output h5:hover .heading-permalink,
648
+ .mw-parser-output h6:hover .heading-permalink {
649
+ opacity: 1;
650
+ }
651
+
652
+ .specwiki-portal-intro {
653
+ color: var(--color-base--subtle);
654
+ }
655
+
656
+ .specwiki-category-section {
657
+ margin-top: calc(var(--padding-horizontal-base) * 2);
658
+ padding-top: var(--padding-horizontal-base);
659
+ border-top: 1px solid var(--border-color-divider);
660
+ }
661
+
662
+ .specwiki-portal-pages {
663
+ list-style: disc;
664
+ padding-left: 1.5rem;
665
+ }
666
+
667
+ .specwiki-portal-pages a,
668
+ .mw-parser-output a {
669
+ color: var(--color-primary);
670
+ }
671
+
672
+ .mw-parser-output table {
673
+ border-collapse: collapse;
674
+ margin: var(--padding-vertical-base) 0;
675
+ width: 100%;
676
+ }
677
+
678
+ .mw-parser-output th,
679
+ .mw-parser-output td {
680
+ border: 1px solid var(--border-color-base);
681
+ padding: 0.35rem 0.5rem;
682
+ text-align: left;
683
+ }
684
+
685
+ .mw-parser-output th {
686
+ background-color: var(--background-color-interactive-subtle);
687
+ }
688
+
689
+ .mw-parser-output del {
690
+ color: var(--color-base--subtle);
691
+ }
692
+
693
+ .mw-parser-output ul.contains-task-list {
694
+ list-style: none;
695
+ padding-left: 0;
696
+ }
697
+
698
+ .mw-parser-output li.task-list-item {
699
+ list-style: none;
700
+ }
701
+
702
+ .mw-parser-output li.task-list-item input[type="checkbox"] {
703
+ margin-right: 0.35em;
704
+ }
705
+
706
+ .mw-parser-output blockquote {
707
+ border-left: 3px solid var(--border-color-base);
708
+ margin: 0;
709
+ padding: var(--padding-vertical-base) var(--padding-horizontal-base);
710
+ color: var(--color-base--subtle);
711
+ }
712
+
713
+ .mw-parser-output code {
714
+ background-color: var(--background-color-code);
715
+ padding: 0.15em 0.4em;
716
+ border-radius: var(--border-radius-base);
717
+ font-size: 0.9em;
718
+ font-family: var(--font-family-monospace);
719
+ }
720
+
721
+ .mw-parser-output pre {
722
+ background-color: var(--background-color-code);
723
+ padding: var(--padding-horizontal-base);
724
+ border-radius: var(--border-radius-base);
725
+ overflow-x: auto;
726
+ }
727
+
728
+ .mw-parser-output pre code {
729
+ background: none;
730
+ padding: 0;
731
+ }
732
+
733
+ .mw-parser-output pre code.hljs {
734
+ background: transparent;
735
+ padding: 0;
736
+ }
737
+
738
+ .mw-parser-output hr {
739
+ border: none;
740
+ border-top: 1px solid var(--border-color-divider);
741
+ margin: calc(var(--padding-horizontal-base) * 2) 0;
742
+ }
743
+
744
+ @media (max-width: 1199px) {
745
+ .infobox {
746
+ float: none;
747
+ width: auto;
748
+ margin: 0 0 var(--padding-horizontal-base);
749
+ }
750
+ }
751
+
752
+ @media (min-width: 1200px) {
753
+ .specwiki-article-body .mw-parser-output {
754
+ display: grid;
755
+ grid-template-columns: minmax(0, 1fr) minmax(0, 70ch) minmax(0, 1fr);
756
+ }
757
+
758
+ .specwiki-article-body .mw-parser-output > * {
759
+ grid-column: 2;
760
+ }
761
+
762
+ .specwiki-article-body .mw-parser-output > table,
763
+ .specwiki-article-body .mw-parser-output > pre {
764
+ grid-column: 1 / -1;
765
+ }
766
+ }
767
+
768
+ @media (max-width: 719px) {
769
+ .specwiki-header {
770
+ padding: 0 0.5rem;
771
+ }
772
+
773
+ .specwiki-header-inner {
774
+ gap: 0.375rem;
775
+ }
776
+
777
+ .specwiki-logo {
778
+ flex: 0 0 auto;
779
+ }
780
+
781
+ .specwiki-search {
782
+ min-width: 0;
783
+ flex: 1 1 auto;
784
+ margin-left: 0;
785
+ }
786
+
787
+ .specwiki-search-results {
788
+ right: auto;
789
+ width: max-content;
790
+ min-width: 100%;
791
+ max-width: calc(100vw - 1rem);
792
+ }
793
+
794
+ .specwiki-theme-toggle {
795
+ flex: 0 0 auto;
796
+ min-width: 2rem;
797
+ padding: 0.25rem 0.5rem;
798
+ }
799
+
800
+ .specwiki-theme-toggle span:last-child,
801
+ .specwiki-nav-toggle-label {
802
+ display: none;
803
+ }
804
+
805
+ .specwiki-layout,
806
+ .specwiki-layout-article {
807
+ grid-template-columns: minmax(0, 1fr);
808
+ grid-template-areas:
809
+ "center"
810
+ "toc"
811
+ "nav";
812
+ min-height: 0;
813
+ }
814
+
815
+ .specwiki-center {
816
+ grid-area: center;
817
+ min-width: 0;
818
+ padding: 0.75rem;
819
+ }
820
+
821
+ .specwiki-nav-drawer {
822
+ grid-area: nav;
823
+ min-width: 0;
824
+ }
825
+
826
+ .category-nav {
827
+ height: auto;
828
+ border-top: 1px solid var(--border-color-divider);
829
+ border-right: 0;
830
+ }
831
+
832
+ .toc {
833
+ grid-area: toc;
834
+ position: static;
835
+ max-height: none;
836
+ border-top: 1px solid var(--border-color-divider);
837
+ border-left: 0;
838
+ }
839
+
840
+ .mw-parser-output {
841
+ min-width: 0;
842
+ max-width: 100%;
843
+ }
844
+
845
+ .mw-parser-output table {
846
+ display: block;
847
+ max-width: 100%;
848
+ overflow-x: auto;
849
+ }
850
+
851
+ .mw-parser-output pre {
852
+ max-width: 100%;
853
+ overflow-x: auto;
854
+ }
855
+
856
+ .specwiki-nav-enhanced .specwiki-nav-toggle {
857
+ display: inline-flex;
858
+ flex: 0 0 auto;
859
+ }
860
+
861
+ .specwiki-nav-enhanced .specwiki-nav-drawer {
862
+ position: fixed;
863
+ inset: 0 auto 0 0;
864
+ z-index: 30;
865
+ width: min(18rem, calc(100vw - 3rem));
866
+ overflow-y: auto;
867
+ background-color: var(--background-color-interactive-subtle);
868
+ box-shadow: 2px 0 8px var(--specwiki-shadow-color);
869
+ transform: translateX(-100%);
870
+ transition: transform 160ms ease-out;
871
+ }
872
+
873
+ .specwiki-nav-enhanced .specwiki-nav-close {
874
+ display: inline-flex;
875
+ margin: 0.5rem 0.5rem 0 auto;
876
+ }
877
+
878
+ .specwiki-nav-enhanced .category-nav {
879
+ border-top: 0;
880
+ }
881
+
882
+ .specwiki-nav-open .specwiki-nav-drawer {
883
+ transform: translateX(0);
884
+ }
885
+
886
+ html.specwiki-nav-open,
887
+ .specwiki-nav-open body.specwiki {
888
+ overflow: hidden;
889
+ }
890
+
891
+ .specwiki-nav-open .specwiki-nav-backdrop {
892
+ position: fixed;
893
+ inset: 0;
894
+ z-index: 20;
895
+ display: block;
896
+ background-color: var(--specwiki-shadow-color);
897
+ }
898
+ }
899
+
900
+ @media (prefers-reduced-motion: reduce) {
901
+ .specwiki-nav-drawer,
902
+ .category-nav-group > summary::before {
903
+ transition: none;
904
+ }
905
+ }