@aitrien/motifspec 1.13.0 → 1.13.3

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 (83) hide show
  1. package/CHANGELOG.md +275 -257
  2. package/LICENSE +21 -21
  3. package/README.md +128 -150
  4. package/dist/backdrop.html +1 -1
  5. package/dist/chroma.css +36 -36
  6. package/dist/codex.css +1145 -1145
  7. package/dist/codex.js +126 -126
  8. package/dist/contrast.md +101 -101
  9. package/dist/fonts.css +3 -3
  10. package/dist/icons.svg +18 -18
  11. package/dist/plate.html +1 -1
  12. package/dist/plate.js +292 -292
  13. package/dist/theme-init.js +1 -1
  14. package/dist/tokens.css +466 -466
  15. package/dist/tokens.js +3330 -3330
  16. package/dist/tokens.json +3330 -3330
  17. package/docs/components/_template.md +37 -37
  18. package/docs/components/accession-label.md +106 -106
  19. package/docs/components/backdrop.md +83 -83
  20. package/docs/components/button-and-link.md +87 -87
  21. package/docs/components/callout.md +75 -75
  22. package/docs/components/code-block.md +109 -109
  23. package/docs/components/data-table.md +73 -73
  24. package/docs/components/figure.md +68 -68
  25. package/docs/components/heading-anchor.md +76 -76
  26. package/docs/components/icon.md +63 -63
  27. package/docs/components/ornament.md +77 -77
  28. package/docs/components/pagination.md +78 -78
  29. package/docs/components/post-list-item.md +91 -91
  30. package/docs/components/project-card.md +82 -82
  31. package/docs/components/prose.md +122 -122
  32. package/docs/components/site-footer.md +99 -99
  33. package/docs/components/site-header.md +133 -133
  34. package/docs/components/specimen-plate.md +92 -92
  35. package/docs/components/table-of-contents.md +83 -83
  36. package/docs/components/tag.md +70 -70
  37. package/docs/components/tooltip.md +67 -67
  38. package/docs/hugo.md +132 -120
  39. package/docs/syntax-highlighting.md +55 -55
  40. package/docs/templates.md +21 -30
  41. package/fonts/OFL-jetbrains-mono.txt +93 -93
  42. package/fonts/OFL-national-park.txt +93 -93
  43. package/fonts/OFL-yarndings-12.txt +93 -93
  44. package/icons/LICENSE +202 -202
  45. package/icons/manifest.json +75 -75
  46. package/layouts/_markup/render-blockquote.html +30 -30
  47. package/layouts/_markup/render-codeblock.html +18 -18
  48. package/layouts/_markup/render-heading.html +2 -2
  49. package/layouts/_markup/render-image.html +14 -14
  50. package/layouts/_markup/render-link.html +14 -14
  51. package/layouts/_markup/render-table.html +31 -31
  52. package/layouts/_partials/motifspec/accession/id.html +2 -2
  53. package/layouts/_partials/motifspec/accession/label.html +18 -18
  54. package/layouts/_partials/motifspec/accession/status.html +2 -2
  55. package/layouts/_partials/motifspec/article.html +24 -24
  56. package/layouts/_partials/motifspec/back-link.html +2 -2
  57. package/layouts/_partials/motifspec/body-end.html +5 -5
  58. package/layouts/_partials/motifspec/body-start.html +5 -5
  59. package/layouts/_partials/motifspec/figure.html +14 -14
  60. package/layouts/_partials/motifspec/filed-under.html +5 -5
  61. package/layouts/_partials/motifspec/h2s.html +7 -7
  62. package/layouts/_partials/motifspec/head.html +15 -15
  63. package/layouts/_partials/motifspec/pagination-entries.html +34 -34
  64. package/layouts/_partials/motifspec/pagination-pages.html +30 -30
  65. package/layouts/_partials/motifspec/post-list-item.html +15 -15
  66. package/layouts/_partials/motifspec/project-card.html +23 -23
  67. package/layouts/_partials/motifspec/section-heading.html +3 -3
  68. package/layouts/_partials/motifspec/site-header.html +27 -27
  69. package/layouts/_partials/motifspec/table-of-contents.html +21 -21
  70. package/layouts/_partials/motifspec/tag-filter.html +22 -22
  71. package/layouts/_partials/motifspec/tags.html +8 -8
  72. package/layouts/_partials/motifspec/tokens.html +9 -9
  73. package/package.json +68 -68
  74. package/scripts/check.mjs +153 -153
  75. package/scripts/lib.mjs +176 -176
  76. package/tokens/README.md +3 -3
  77. package/tokens/border.json +63 -63
  78. package/tokens/color.json +1902 -1902
  79. package/tokens/motion.json +207 -207
  80. package/tokens/radius.json +53 -53
  81. package/tokens/size.json +378 -378
  82. package/tokens/space.json +289 -289
  83. package/tokens/typography.json +859 -859
@@ -1,859 +1,859 @@
1
- {
2
- "primitive": {
3
- "font": {
4
- "family": {
5
- "$type": "fontFamily",
6
- "national-park": {
7
- "$value": [
8
- "National Park",
9
- "ui-sans-serif",
10
- "system-ui",
11
- "-apple-system",
12
- "Segoe UI",
13
- "Roboto",
14
- "sans-serif"
15
- ],
16
- "$description": "National Park (OFL), variable wght 200-800, Latin subset 38 KB. Primitive.",
17
- "$extensions": {
18
- "codex.tier": "primitive"
19
- }
20
- },
21
- "jetbrains-mono": {
22
- "$value": [
23
- "JetBrains Mono",
24
- "ui-monospace",
25
- "SFMono-Regular",
26
- "Menlo",
27
- "Consolas",
28
- "monospace"
29
- ],
30
- "$description": "JetBrains Mono (OFL), variable wght 100-800, Latin subset 40 KB. Primitive.",
31
- "$extensions": {
32
- "codex.tier": "primitive"
33
- }
34
- },
35
- "yarndings-12": {
36
- "$value": [
37
- "Yarndings 12"
38
- ],
39
- "$description": "Yarndings 12 (OFL) knitting-chart dingbats, 11 KB. No text fallback by design. Primitive.",
40
- "$extensions": {
41
- "codex.tier": "primitive"
42
- }
43
- }
44
- },
45
- "size": {
46
- "$type": "dimension",
47
- "$description": "Modular scale. Ratio 1.2 at 360px rising to 1.25 at 1440px; steps 1-2 are fixed for legibility. Primitive.",
48
- "1": {
49
- "$value": {
50
- "value": 0.75,
51
- "unit": "rem"
52
- },
53
- "$extensions": {
54
- "codex.tier": "primitive"
55
- }
56
- },
57
- "2": {
58
- "$value": {
59
- "value": 0.9,
60
- "unit": "rem"
61
- },
62
- "$extensions": {
63
- "codex.tier": "primitive",
64
- "codex.fluid": {
65
- "min": {
66
- "value": 0.875,
67
- "unit": "rem"
68
- },
69
- "max": {
70
- "value": 0.9,
71
- "unit": "rem"
72
- },
73
- "viewport": {
74
- "min": {
75
- "value": 22.5,
76
- "unit": "rem"
77
- },
78
- "max": {
79
- "value": 90,
80
- "unit": "rem"
81
- }
82
- }
83
- }
84
- }
85
- },
86
- "3": {
87
- "$value": {
88
- "value": 1.125,
89
- "unit": "rem"
90
- },
91
- "$extensions": {
92
- "codex.tier": "primitive",
93
- "codex.fluid": {
94
- "min": {
95
- "value": 1.0625,
96
- "unit": "rem"
97
- },
98
- "max": {
99
- "value": 1.125,
100
- "unit": "rem"
101
- },
102
- "viewport": {
103
- "min": {
104
- "value": 22.5,
105
- "unit": "rem"
106
- },
107
- "max": {
108
- "value": 90,
109
- "unit": "rem"
110
- }
111
- }
112
- }
113
- }
114
- },
115
- "4": {
116
- "$value": {
117
- "value": 1.406,
118
- "unit": "rem"
119
- },
120
- "$extensions": {
121
- "codex.tier": "primitive",
122
- "codex.fluid": {
123
- "min": {
124
- "value": 1.275,
125
- "unit": "rem"
126
- },
127
- "max": {
128
- "value": 1.406,
129
- "unit": "rem"
130
- },
131
- "viewport": {
132
- "min": {
133
- "value": 22.5,
134
- "unit": "rem"
135
- },
136
- "max": {
137
- "value": 90,
138
- "unit": "rem"
139
- }
140
- }
141
- }
142
- }
143
- },
144
- "5": {
145
- "$value": {
146
- "value": 1.758,
147
- "unit": "rem"
148
- },
149
- "$extensions": {
150
- "codex.tier": "primitive",
151
- "codex.fluid": {
152
- "min": {
153
- "value": 1.53,
154
- "unit": "rem"
155
- },
156
- "max": {
157
- "value": 1.758,
158
- "unit": "rem"
159
- },
160
- "viewport": {
161
- "min": {
162
- "value": 22.5,
163
- "unit": "rem"
164
- },
165
- "max": {
166
- "value": 90,
167
- "unit": "rem"
168
- }
169
- }
170
- }
171
- }
172
- },
173
- "6": {
174
- "$value": {
175
- "value": 2.197,
176
- "unit": "rem"
177
- },
178
- "$extensions": {
179
- "codex.tier": "primitive",
180
- "codex.fluid": {
181
- "min": {
182
- "value": 1.836,
183
- "unit": "rem"
184
- },
185
- "max": {
186
- "value": 2.197,
187
- "unit": "rem"
188
- },
189
- "viewport": {
190
- "min": {
191
- "value": 22.5,
192
- "unit": "rem"
193
- },
194
- "max": {
195
- "value": 90,
196
- "unit": "rem"
197
- }
198
- }
199
- }
200
- }
201
- },
202
- "7": {
203
- "$value": {
204
- "value": 2.747,
205
- "unit": "rem"
206
- },
207
- "$extensions": {
208
- "codex.tier": "primitive",
209
- "codex.fluid": {
210
- "min": {
211
- "value": 2.203,
212
- "unit": "rem"
213
- },
214
- "max": {
215
- "value": 2.747,
216
- "unit": "rem"
217
- },
218
- "viewport": {
219
- "min": {
220
- "value": 22.5,
221
- "unit": "rem"
222
- },
223
- "max": {
224
- "value": 90,
225
- "unit": "rem"
226
- }
227
- }
228
- }
229
- }
230
- },
231
- "8": {
232
- "$value": {
233
- "value": 3.433,
234
- "unit": "rem"
235
- },
236
- "$extensions": {
237
- "codex.tier": "primitive",
238
- "codex.fluid": {
239
- "min": {
240
- "value": 2.644,
241
- "unit": "rem"
242
- },
243
- "max": {
244
- "value": 3.433,
245
- "unit": "rem"
246
- },
247
- "viewport": {
248
- "min": {
249
- "value": 22.5,
250
- "unit": "rem"
251
- },
252
- "max": {
253
- "value": 90,
254
- "unit": "rem"
255
- }
256
- }
257
- }
258
- }
259
- }
260
- },
261
- "weight": {
262
- "$type": "fontWeight",
263
- "light": {
264
- "$value": 300,
265
- "$extensions": {
266
- "codex.tier": "primitive"
267
- }
268
- },
269
- "regular": {
270
- "$value": 400,
271
- "$extensions": {
272
- "codex.tier": "primitive"
273
- }
274
- },
275
- "medium": {
276
- "$value": 500,
277
- "$extensions": {
278
- "codex.tier": "primitive"
279
- }
280
- },
281
- "semibold": {
282
- "$value": 600,
283
- "$extensions": {
284
- "codex.tier": "primitive"
285
- }
286
- },
287
- "bold": {
288
- "$value": 700,
289
- "$extensions": {
290
- "codex.tier": "primitive"
291
- }
292
- },
293
- "extrabold": {
294
- "$value": 800,
295
- "$extensions": {
296
- "codex.tier": "primitive"
297
- }
298
- }
299
- },
300
- "line-height": {
301
- "$type": "number",
302
- "tight": {
303
- "$value": 1.1,
304
- "$extensions": {
305
- "codex.tier": "primitive"
306
- }
307
- },
308
- "snug": {
309
- "$value": 1.25,
310
- "$extensions": {
311
- "codex.tier": "primitive"
312
- }
313
- },
314
- "normal": {
315
- "$value": 1.4,
316
- "$extensions": {
317
- "codex.tier": "primitive"
318
- }
319
- },
320
- "relaxed": {
321
- "$value": 1.6,
322
- "$extensions": {
323
- "codex.tier": "primitive"
324
- }
325
- }
326
- },
327
- "relative": {
328
- "$type": "number",
329
- "code": {
330
- "$value": 0.875,
331
- "$description": "Size of inline code relative to its parent text (em). Primitive.",
332
- "$extensions": {
333
- "codex.tier": "primitive",
334
- "codex.unit": "em"
335
- }
336
- }
337
- },
338
- "tracking": {
339
- "$type": "number",
340
- "$description": "Letter-spacing in em (see codex.unit). Primitive.",
341
- "tighter": {
342
- "$value": -0.025,
343
- "$extensions": {
344
- "codex.tier": "primitive",
345
- "codex.unit": "em"
346
- }
347
- },
348
- "tight": {
349
- "$value": -0.015,
350
- "$extensions": {
351
- "codex.tier": "primitive",
352
- "codex.unit": "em"
353
- }
354
- },
355
- "none": {
356
- "$value": 0,
357
- "$extensions": {
358
- "codex.tier": "primitive",
359
- "codex.unit": "em"
360
- }
361
- },
362
- "wide": {
363
- "$value": 0.04,
364
- "$extensions": {
365
- "codex.tier": "primitive",
366
- "codex.unit": "em"
367
- }
368
- },
369
- "wider": {
370
- "$value": 0.08,
371
- "$extensions": {
372
- "codex.tier": "primitive",
373
- "codex.unit": "em"
374
- }
375
- }
376
- }
377
- }
378
- },
379
- "font": {
380
- "family": {
381
- "$type": "fontFamily",
382
- "display": {
383
- "$value": "{primitive.font.family.national-park}",
384
- "$description": "Headings, the wordmark and the home statement."
385
- },
386
- "body": {
387
- "$value": "{primitive.font.family.national-park}",
388
- "$description": "Running text, UI text, nav and buttons. The default family on body."
389
- },
390
- "mono": {
391
- "$value": "{primitive.font.family.jetbrains-mono}",
392
- "$description": "Code, plus short machine-like labels: accession numbers, dates, tags, eyebrow labels, table headers. Never for paragraphs."
393
- },
394
- "ornament": {
395
- "$value": "{primitive.font.family.yarndings-12}",
396
- "$description": "Decorative knitting-chart glyphs only. Always aria-hidden, never conveys meaning, at most one ornament group per viewport. Use any glyph listed in codex.glyphs.glyphs; never one in codex.glyphs.forbidden.",
397
- "$extensions": {
398
- "codex.glyphs": {
399
- "groups": {
400
- "botanical": "Plants and flowers. The default choice for end marks, empty states and dividers.",
401
- "frost": "Snowflakes, stars and bursts. Use one at a time; they are dense and draw the eye.",
402
- "stitch": "Crosses, checks and small squares from knitting charts. Good for bands and repeating rules.",
403
- "diamond": "Diamonds and rings. Good for dividers and band centres.",
404
- "mark": "Corners, bars, dots and triangles. Structural accents: registration corners, rules, list ends."
405
- },
406
- "glyphs": {
407
- "leaf": {
408
- "char": "h",
409
- "group": "botanical"
410
- },
411
- "sprout": {
412
- "char": "f",
413
- "group": "botanical"
414
- },
415
- "flower": {
416
- "char": "g",
417
- "group": "botanical"
418
- },
419
- "potted": {
420
- "char": "c",
421
- "group": "botanical"
422
- },
423
- "bloom": {
424
- "char": "b",
425
- "group": "botanical"
426
- },
427
- "blossom": {
428
- "char": "m",
429
- "group": "botanical"
430
- },
431
- "petals": {
432
- "char": "P",
433
- "group": "botanical"
434
- },
435
- "flower-outline": {
436
- "char": "R",
437
- "group": "botanical"
438
- },
439
- "rosette": {
440
- "char": "U",
441
- "group": "botanical"
442
- },
443
- "seedhead": {
444
- "char": "a",
445
- "group": "botanical"
446
- },
447
- "corolla": {
448
- "char": "8",
449
- "group": "botanical"
450
- },
451
- "bud": {
452
- "char": "9",
453
- "group": "botanical"
454
- },
455
- "small-flower": {
456
- "char": "5",
457
- "group": "botanical"
458
- },
459
- "seed": {
460
- "char": "t",
461
- "group": "botanical"
462
- },
463
- "clover": {
464
- "char": "E",
465
- "group": "botanical"
466
- },
467
- "clover-long": {
468
- "char": "F",
469
- "group": "botanical"
470
- },
471
- "clover-tall": {
472
- "char": "G",
473
- "group": "botanical"
474
- },
475
- "band-large": {
476
- "char": "W",
477
- "group": "botanical"
478
- },
479
- "lobe-outline": {
480
- "char": "X",
481
- "group": "botanical"
482
- },
483
- "snowflake": {
484
- "char": "S",
485
- "group": "frost"
486
- },
487
- "snowflake-dense": {
488
- "char": "H",
489
- "group": "frost"
490
- },
491
- "snowflake-small": {
492
- "char": "d",
493
- "group": "frost"
494
- },
495
- "snowflake-blocks": {
496
- "char": "e",
497
- "group": "frost"
498
- },
499
- "snowflake-large": {
500
- "char": "q",
501
- "group": "frost"
502
- },
503
- "frost": {
504
- "char": "i",
505
- "group": "frost"
506
- },
507
- "frost-open": {
508
- "char": "j",
509
- "group": "frost"
510
- },
511
- "frost-grid": {
512
- "char": "l",
513
- "group": "frost"
514
- },
515
- "frost-dense": {
516
- "char": "n",
517
- "group": "frost"
518
- },
519
- "frost-x": {
520
- "char": "s",
521
- "group": "frost"
522
- },
523
- "burst": {
524
- "char": "V",
525
- "group": "frost"
526
- },
527
- "spark-dotted": {
528
- "char": "Q",
529
- "group": "frost"
530
- },
531
- "x-dense": {
532
- "char": "T",
533
- "group": "frost"
534
- },
535
- "x-bold": {
536
- "char": "O",
537
- "group": "frost"
538
- },
539
- "band-small": {
540
- "char": "k",
541
- "group": "stitch"
542
- },
543
- "cross": {
544
- "char": "A",
545
- "group": "stitch"
546
- },
547
- "cross-solid": {
548
- "char": "\"",
549
- "group": "stitch"
550
- },
551
- "cross-outline": {
552
- "char": "'",
553
- "group": "stitch"
554
- },
555
- "cross-small": {
556
- "char": "2",
557
- "group": "stitch"
558
- },
559
- "cross-blocks": {
560
- "char": "B",
561
- "group": "stitch"
562
- },
563
- "cross-barred": {
564
- "char": "C",
565
- "group": "stitch"
566
- },
567
- "maltese": {
568
- "char": "D",
569
- "group": "stitch"
570
- },
571
- "cross-notched": {
572
- "char": "7",
573
- "group": "stitch"
574
- },
575
- "pinwheel-cross": {
576
- "char": "3",
577
- "group": "stitch"
578
- },
579
- "corners": {
580
- "char": "J",
581
- "group": "stitch"
582
- },
583
- "grid": {
584
- "char": "I",
585
- "group": "stitch"
586
- },
587
- "x-small": {
588
- "char": "K",
589
- "group": "stitch"
590
- },
591
- "x": {
592
- "char": "L",
593
- "group": "stitch"
594
- },
595
- "x-dotted": {
596
- "char": "M",
597
- "group": "stitch"
598
- },
599
- "x-thin": {
600
- "char": "N",
601
- "group": "stitch"
602
- },
603
- "checker-x": {
604
- "char": "+",
605
- "group": "stitch"
606
- },
607
- "checker-small": {
608
- "char": "0",
609
- "group": "stitch"
610
- },
611
- "diamond-dots": {
612
- "char": "1",
613
- "group": "stitch"
614
- },
615
- "knot": {
616
- "char": "4",
617
- "group": "stitch"
618
- },
619
- "square-dot": {
620
- "char": "6",
621
- "group": "stitch"
622
- },
623
- "square-hole": {
624
- "char": ":",
625
- "group": "stitch"
626
- },
627
- "square-outline": {
628
- "char": ";",
629
- "group": "stitch"
630
- },
631
- "square": {
632
- "char": ",",
633
- "group": "stitch"
634
- },
635
- "stack": {
636
- "char": "<",
637
- "group": "stitch"
638
- },
639
- "pinwheel": {
640
- "char": ">",
641
- "group": "stitch"
642
- },
643
- "pinwheel-small": {
644
- "char": "Y",
645
- "group": "stitch"
646
- },
647
- "pinwheel-tiny": {
648
- "char": "Z",
649
- "group": "stitch"
650
- },
651
- "diamond": {
652
- "char": "–",
653
- "group": "diamond"
654
- },
655
- "diamond-hollow": {
656
- "char": "—",
657
- "group": "diamond"
658
- },
659
- "diamond-cross": {
660
- "char": "o",
661
- "group": "diamond"
662
- },
663
- "diamond-nested": {
664
- "char": "p",
665
- "group": "diamond"
666
- },
667
- "diamond-outline": {
668
- "char": "r",
669
- "group": "diamond"
670
- },
671
- "diamond-stack": {
672
- "char": "=",
673
- "group": "diamond"
674
- },
675
- "circle": {
676
- "char": "!",
677
- "group": "diamond"
678
- },
679
- "ring": {
680
- "char": "?",
681
- "group": "diamond"
682
- },
683
- "summit": {
684
- "char": "·",
685
- "group": "mark"
686
- },
687
- "funnel": {
688
- "char": "•",
689
- "group": "mark"
690
- },
691
- "dot": {
692
- "char": ".",
693
- "group": "mark"
694
- },
695
- "bar": {
696
- "char": "(",
697
- "group": "mark"
698
- },
699
- "bar-outline": {
700
- "char": ")",
701
- "group": "mark"
702
- },
703
- "rule": {
704
- "char": "-",
705
- "group": "mark"
706
- },
707
- "tick": {
708
- "char": "_",
709
- "group": "mark"
710
- },
711
- "corner-top-left": {
712
- "char": "/",
713
- "group": "mark"
714
- },
715
- "corner-top-right": {
716
- "char": "\\",
717
- "group": "mark"
718
- },
719
- "corner-bottom-left": {
720
- "char": "*",
721
- "group": "mark"
722
- },
723
- "corner-bottom-right": {
724
- "char": "#",
725
- "group": "mark"
726
- }
727
- },
728
- "roles": {
729
- "band": "band-small + band-large, alternating (footer band)",
730
- "divider": "band-small, band-large, band-small (prose <hr>)",
731
- "end-mark": "flower (after an article's last sentence)",
732
- "empty-state": "sprout (404 and empty lists)"
733
- },
734
- "forbidden": {
735
- "chars": "uvwxyz[]{}",
736
- "reason": "Faces, a robot, hearts and animals read as emoji. Never use them."
737
- }
738
- }
739
- }
740
- }
741
- },
742
- "size": {
743
- "$type": "dimension",
744
- "display": {
745
- "$value": "{primitive.font.size.8}",
746
- "$description": "The single largest line on a page (home statement). Once per page at most."
747
- },
748
- "heading-1": {
749
- "$value": "{primitive.font.size.7}",
750
- "$description": "Page titles: h1 on posts, projects and indexes."
751
- },
752
- "heading-2": {
753
- "$value": "{primitive.font.size.6}",
754
- "$description": "Section headings (h2) in prose and on index pages."
755
- },
756
- "heading-3": {
757
- "$value": "{primitive.font.size.5}",
758
- "$description": "Sub-section headings (h3) and card titles in featured layouts."
759
- },
760
- "heading-4": {
761
- "$value": "{primitive.font.size.4}",
762
- "$description": "Minor headings (h4) and standard card titles."
763
- },
764
- "lede": {
765
- "$value": "{primitive.font.size.4}",
766
- "$description": "The introductory paragraph under a page title. One per page."
767
- },
768
- "body": {
769
- "$value": "{primitive.font.size.3}",
770
- "$description": "Running text and default UI text."
771
- },
772
- "small": {
773
- "$value": "{primitive.font.size.2}",
774
- "$description": "Captions, metadata, table cells, code blocks, button labels."
775
- },
776
- "label": {
777
- "$value": "{primitive.font.size.1}",
778
- "$description": "Mono uppercase labels: accession fields, eyebrows, tags, table headers. Always with font.tracking.label."
779
- },
780
- "code-inline": {
781
- "$type": "number",
782
- "$value": "{primitive.font.relative.code}",
783
- "$extensions": {
784
- "codex.unit": "em"
785
- },
786
- "$description": "Inline code relative to surrounding text, so mono matches the x-height of National Park."
787
- }
788
- },
789
- "weight": {
790
- "$type": "fontWeight",
791
- "body": {
792
- "$value": "{primitive.font.weight.regular}",
793
- "$description": "Running text."
794
- },
795
- "ui": {
796
- "$value": "{primitive.font.weight.medium}",
797
- "$description": "Nav items, labels and mono metadata."
798
- },
799
- "strong": {
800
- "$value": "{primitive.font.weight.semibold}",
801
- "$description": "<strong>, button labels and table header text. National Park has no italic, so <em> uses a synthetic oblique; use strong for real emphasis."
802
- },
803
- "heading": {
804
- "$value": "{primitive.font.weight.semibold}",
805
- "$description": "h2-h4 and card titles."
806
- },
807
- "display": {
808
- "$value": "{primitive.font.weight.bold}",
809
- "$description": "h1 and the display statement only."
810
- }
811
- },
812
- "line-height": {
813
- "$type": "number",
814
- "display": {
815
- "$value": "{primitive.font.line-height.tight}",
816
- "$description": "Display and h1, set with tight tracking."
817
- },
818
- "heading": {
819
- "$value": "{primitive.font.line-height.snug}",
820
- "$description": "h2-h4 and card titles."
821
- },
822
- "ui": {
823
- "$value": "{primitive.font.line-height.normal}",
824
- "$description": "Single-line UI: nav, buttons, labels, table cells."
825
- },
826
- "body": {
827
- "$value": "{primitive.font.line-height.relaxed}",
828
- "$description": "Running text at the prose measure."
829
- },
830
- "code": {
831
- "$value": "{primitive.font.line-height.relaxed}",
832
- "$description": "Code blocks."
833
- }
834
- },
835
- "tracking": {
836
- "$type": "number",
837
- "display": {
838
- "$value": "{primitive.font.tracking.tighter}",
839
- "$description": "Display and h1 sizes."
840
- },
841
- "heading": {
842
- "$value": "{primitive.font.tracking.tight}",
843
- "$description": "h2-h4 headings and card titles."
844
- },
845
- "body": {
846
- "$value": "{primitive.font.tracking.none}",
847
- "$description": "Running text. Never track lowercase body text."
848
- },
849
- "label": {
850
- "$value": "{primitive.font.tracking.wider}",
851
- "$description": "Mono uppercase labels."
852
- },
853
- "ui": {
854
- "$value": "{primitive.font.tracking.wide}",
855
- "$description": "Mono lowercase tags and small UI text."
856
- }
857
- }
858
- }
859
- }
1
+ {
2
+ "primitive": {
3
+ "font": {
4
+ "family": {
5
+ "$type": "fontFamily",
6
+ "national-park": {
7
+ "$value": [
8
+ "National Park",
9
+ "ui-sans-serif",
10
+ "system-ui",
11
+ "-apple-system",
12
+ "Segoe UI",
13
+ "Roboto",
14
+ "sans-serif"
15
+ ],
16
+ "$description": "National Park (OFL), variable wght 200-800, Latin subset 38 KB. Primitive.",
17
+ "$extensions": {
18
+ "codex.tier": "primitive"
19
+ }
20
+ },
21
+ "jetbrains-mono": {
22
+ "$value": [
23
+ "JetBrains Mono",
24
+ "ui-monospace",
25
+ "SFMono-Regular",
26
+ "Menlo",
27
+ "Consolas",
28
+ "monospace"
29
+ ],
30
+ "$description": "JetBrains Mono (OFL), variable wght 100-800, Latin subset 40 KB. Primitive.",
31
+ "$extensions": {
32
+ "codex.tier": "primitive"
33
+ }
34
+ },
35
+ "yarndings-12": {
36
+ "$value": [
37
+ "Yarndings 12"
38
+ ],
39
+ "$description": "Yarndings 12 (OFL) knitting-chart dingbats, 11 KB. No text fallback by design. Primitive.",
40
+ "$extensions": {
41
+ "codex.tier": "primitive"
42
+ }
43
+ }
44
+ },
45
+ "size": {
46
+ "$type": "dimension",
47
+ "$description": "Modular scale. Ratio 1.2 at 360px rising to 1.25 at 1440px; steps 1-2 are fixed for legibility. Primitive.",
48
+ "1": {
49
+ "$value": {
50
+ "value": 0.75,
51
+ "unit": "rem"
52
+ },
53
+ "$extensions": {
54
+ "codex.tier": "primitive"
55
+ }
56
+ },
57
+ "2": {
58
+ "$value": {
59
+ "value": 0.9,
60
+ "unit": "rem"
61
+ },
62
+ "$extensions": {
63
+ "codex.tier": "primitive",
64
+ "codex.fluid": {
65
+ "min": {
66
+ "value": 0.875,
67
+ "unit": "rem"
68
+ },
69
+ "max": {
70
+ "value": 0.9,
71
+ "unit": "rem"
72
+ },
73
+ "viewport": {
74
+ "min": {
75
+ "value": 22.5,
76
+ "unit": "rem"
77
+ },
78
+ "max": {
79
+ "value": 90,
80
+ "unit": "rem"
81
+ }
82
+ }
83
+ }
84
+ }
85
+ },
86
+ "3": {
87
+ "$value": {
88
+ "value": 1.125,
89
+ "unit": "rem"
90
+ },
91
+ "$extensions": {
92
+ "codex.tier": "primitive",
93
+ "codex.fluid": {
94
+ "min": {
95
+ "value": 1.0625,
96
+ "unit": "rem"
97
+ },
98
+ "max": {
99
+ "value": 1.125,
100
+ "unit": "rem"
101
+ },
102
+ "viewport": {
103
+ "min": {
104
+ "value": 22.5,
105
+ "unit": "rem"
106
+ },
107
+ "max": {
108
+ "value": 90,
109
+ "unit": "rem"
110
+ }
111
+ }
112
+ }
113
+ }
114
+ },
115
+ "4": {
116
+ "$value": {
117
+ "value": 1.406,
118
+ "unit": "rem"
119
+ },
120
+ "$extensions": {
121
+ "codex.tier": "primitive",
122
+ "codex.fluid": {
123
+ "min": {
124
+ "value": 1.275,
125
+ "unit": "rem"
126
+ },
127
+ "max": {
128
+ "value": 1.406,
129
+ "unit": "rem"
130
+ },
131
+ "viewport": {
132
+ "min": {
133
+ "value": 22.5,
134
+ "unit": "rem"
135
+ },
136
+ "max": {
137
+ "value": 90,
138
+ "unit": "rem"
139
+ }
140
+ }
141
+ }
142
+ }
143
+ },
144
+ "5": {
145
+ "$value": {
146
+ "value": 1.758,
147
+ "unit": "rem"
148
+ },
149
+ "$extensions": {
150
+ "codex.tier": "primitive",
151
+ "codex.fluid": {
152
+ "min": {
153
+ "value": 1.53,
154
+ "unit": "rem"
155
+ },
156
+ "max": {
157
+ "value": 1.758,
158
+ "unit": "rem"
159
+ },
160
+ "viewport": {
161
+ "min": {
162
+ "value": 22.5,
163
+ "unit": "rem"
164
+ },
165
+ "max": {
166
+ "value": 90,
167
+ "unit": "rem"
168
+ }
169
+ }
170
+ }
171
+ }
172
+ },
173
+ "6": {
174
+ "$value": {
175
+ "value": 2.197,
176
+ "unit": "rem"
177
+ },
178
+ "$extensions": {
179
+ "codex.tier": "primitive",
180
+ "codex.fluid": {
181
+ "min": {
182
+ "value": 1.836,
183
+ "unit": "rem"
184
+ },
185
+ "max": {
186
+ "value": 2.197,
187
+ "unit": "rem"
188
+ },
189
+ "viewport": {
190
+ "min": {
191
+ "value": 22.5,
192
+ "unit": "rem"
193
+ },
194
+ "max": {
195
+ "value": 90,
196
+ "unit": "rem"
197
+ }
198
+ }
199
+ }
200
+ }
201
+ },
202
+ "7": {
203
+ "$value": {
204
+ "value": 2.747,
205
+ "unit": "rem"
206
+ },
207
+ "$extensions": {
208
+ "codex.tier": "primitive",
209
+ "codex.fluid": {
210
+ "min": {
211
+ "value": 2.203,
212
+ "unit": "rem"
213
+ },
214
+ "max": {
215
+ "value": 2.747,
216
+ "unit": "rem"
217
+ },
218
+ "viewport": {
219
+ "min": {
220
+ "value": 22.5,
221
+ "unit": "rem"
222
+ },
223
+ "max": {
224
+ "value": 90,
225
+ "unit": "rem"
226
+ }
227
+ }
228
+ }
229
+ }
230
+ },
231
+ "8": {
232
+ "$value": {
233
+ "value": 3.433,
234
+ "unit": "rem"
235
+ },
236
+ "$extensions": {
237
+ "codex.tier": "primitive",
238
+ "codex.fluid": {
239
+ "min": {
240
+ "value": 2.644,
241
+ "unit": "rem"
242
+ },
243
+ "max": {
244
+ "value": 3.433,
245
+ "unit": "rem"
246
+ },
247
+ "viewport": {
248
+ "min": {
249
+ "value": 22.5,
250
+ "unit": "rem"
251
+ },
252
+ "max": {
253
+ "value": 90,
254
+ "unit": "rem"
255
+ }
256
+ }
257
+ }
258
+ }
259
+ }
260
+ },
261
+ "weight": {
262
+ "$type": "fontWeight",
263
+ "light": {
264
+ "$value": 300,
265
+ "$extensions": {
266
+ "codex.tier": "primitive"
267
+ }
268
+ },
269
+ "regular": {
270
+ "$value": 400,
271
+ "$extensions": {
272
+ "codex.tier": "primitive"
273
+ }
274
+ },
275
+ "medium": {
276
+ "$value": 500,
277
+ "$extensions": {
278
+ "codex.tier": "primitive"
279
+ }
280
+ },
281
+ "semibold": {
282
+ "$value": 600,
283
+ "$extensions": {
284
+ "codex.tier": "primitive"
285
+ }
286
+ },
287
+ "bold": {
288
+ "$value": 700,
289
+ "$extensions": {
290
+ "codex.tier": "primitive"
291
+ }
292
+ },
293
+ "extrabold": {
294
+ "$value": 800,
295
+ "$extensions": {
296
+ "codex.tier": "primitive"
297
+ }
298
+ }
299
+ },
300
+ "line-height": {
301
+ "$type": "number",
302
+ "tight": {
303
+ "$value": 1.1,
304
+ "$extensions": {
305
+ "codex.tier": "primitive"
306
+ }
307
+ },
308
+ "snug": {
309
+ "$value": 1.25,
310
+ "$extensions": {
311
+ "codex.tier": "primitive"
312
+ }
313
+ },
314
+ "normal": {
315
+ "$value": 1.4,
316
+ "$extensions": {
317
+ "codex.tier": "primitive"
318
+ }
319
+ },
320
+ "relaxed": {
321
+ "$value": 1.6,
322
+ "$extensions": {
323
+ "codex.tier": "primitive"
324
+ }
325
+ }
326
+ },
327
+ "relative": {
328
+ "$type": "number",
329
+ "code": {
330
+ "$value": 0.875,
331
+ "$description": "Size of inline code relative to its parent text (em). Primitive.",
332
+ "$extensions": {
333
+ "codex.tier": "primitive",
334
+ "codex.unit": "em"
335
+ }
336
+ }
337
+ },
338
+ "tracking": {
339
+ "$type": "number",
340
+ "$description": "Letter-spacing in em (see codex.unit). Primitive.",
341
+ "tighter": {
342
+ "$value": -0.025,
343
+ "$extensions": {
344
+ "codex.tier": "primitive",
345
+ "codex.unit": "em"
346
+ }
347
+ },
348
+ "tight": {
349
+ "$value": -0.015,
350
+ "$extensions": {
351
+ "codex.tier": "primitive",
352
+ "codex.unit": "em"
353
+ }
354
+ },
355
+ "none": {
356
+ "$value": 0,
357
+ "$extensions": {
358
+ "codex.tier": "primitive",
359
+ "codex.unit": "em"
360
+ }
361
+ },
362
+ "wide": {
363
+ "$value": 0.04,
364
+ "$extensions": {
365
+ "codex.tier": "primitive",
366
+ "codex.unit": "em"
367
+ }
368
+ },
369
+ "wider": {
370
+ "$value": 0.08,
371
+ "$extensions": {
372
+ "codex.tier": "primitive",
373
+ "codex.unit": "em"
374
+ }
375
+ }
376
+ }
377
+ }
378
+ },
379
+ "font": {
380
+ "family": {
381
+ "$type": "fontFamily",
382
+ "display": {
383
+ "$value": "{primitive.font.family.national-park}",
384
+ "$description": "Headings, the wordmark and the home statement."
385
+ },
386
+ "body": {
387
+ "$value": "{primitive.font.family.national-park}",
388
+ "$description": "Running text, UI text, nav and buttons. The default family on body."
389
+ },
390
+ "mono": {
391
+ "$value": "{primitive.font.family.jetbrains-mono}",
392
+ "$description": "Code, plus short machine-like labels: accession numbers, dates, tags, eyebrow labels, table headers. Never for paragraphs."
393
+ },
394
+ "ornament": {
395
+ "$value": "{primitive.font.family.yarndings-12}",
396
+ "$description": "Decorative knitting-chart glyphs only. Always aria-hidden, never conveys meaning, at most one ornament group per viewport. Use any glyph listed in codex.glyphs.glyphs; never one in codex.glyphs.forbidden.",
397
+ "$extensions": {
398
+ "codex.glyphs": {
399
+ "groups": {
400
+ "botanical": "Plants and flowers. The default choice for end marks, empty states and dividers.",
401
+ "frost": "Snowflakes, stars and bursts. Use one at a time; they are dense and draw the eye.",
402
+ "stitch": "Crosses, checks and small squares from knitting charts. Good for bands and repeating rules.",
403
+ "diamond": "Diamonds and rings. Good for dividers and band centres.",
404
+ "mark": "Corners, bars, dots and triangles. Structural accents: registration corners, rules, list ends."
405
+ },
406
+ "glyphs": {
407
+ "leaf": {
408
+ "char": "h",
409
+ "group": "botanical"
410
+ },
411
+ "sprout": {
412
+ "char": "f",
413
+ "group": "botanical"
414
+ },
415
+ "flower": {
416
+ "char": "g",
417
+ "group": "botanical"
418
+ },
419
+ "potted": {
420
+ "char": "c",
421
+ "group": "botanical"
422
+ },
423
+ "bloom": {
424
+ "char": "b",
425
+ "group": "botanical"
426
+ },
427
+ "blossom": {
428
+ "char": "m",
429
+ "group": "botanical"
430
+ },
431
+ "petals": {
432
+ "char": "P",
433
+ "group": "botanical"
434
+ },
435
+ "flower-outline": {
436
+ "char": "R",
437
+ "group": "botanical"
438
+ },
439
+ "rosette": {
440
+ "char": "U",
441
+ "group": "botanical"
442
+ },
443
+ "seedhead": {
444
+ "char": "a",
445
+ "group": "botanical"
446
+ },
447
+ "corolla": {
448
+ "char": "8",
449
+ "group": "botanical"
450
+ },
451
+ "bud": {
452
+ "char": "9",
453
+ "group": "botanical"
454
+ },
455
+ "small-flower": {
456
+ "char": "5",
457
+ "group": "botanical"
458
+ },
459
+ "seed": {
460
+ "char": "t",
461
+ "group": "botanical"
462
+ },
463
+ "clover": {
464
+ "char": "E",
465
+ "group": "botanical"
466
+ },
467
+ "clover-long": {
468
+ "char": "F",
469
+ "group": "botanical"
470
+ },
471
+ "clover-tall": {
472
+ "char": "G",
473
+ "group": "botanical"
474
+ },
475
+ "band-large": {
476
+ "char": "W",
477
+ "group": "botanical"
478
+ },
479
+ "lobe-outline": {
480
+ "char": "X",
481
+ "group": "botanical"
482
+ },
483
+ "snowflake": {
484
+ "char": "S",
485
+ "group": "frost"
486
+ },
487
+ "snowflake-dense": {
488
+ "char": "H",
489
+ "group": "frost"
490
+ },
491
+ "snowflake-small": {
492
+ "char": "d",
493
+ "group": "frost"
494
+ },
495
+ "snowflake-blocks": {
496
+ "char": "e",
497
+ "group": "frost"
498
+ },
499
+ "snowflake-large": {
500
+ "char": "q",
501
+ "group": "frost"
502
+ },
503
+ "frost": {
504
+ "char": "i",
505
+ "group": "frost"
506
+ },
507
+ "frost-open": {
508
+ "char": "j",
509
+ "group": "frost"
510
+ },
511
+ "frost-grid": {
512
+ "char": "l",
513
+ "group": "frost"
514
+ },
515
+ "frost-dense": {
516
+ "char": "n",
517
+ "group": "frost"
518
+ },
519
+ "frost-x": {
520
+ "char": "s",
521
+ "group": "frost"
522
+ },
523
+ "burst": {
524
+ "char": "V",
525
+ "group": "frost"
526
+ },
527
+ "spark-dotted": {
528
+ "char": "Q",
529
+ "group": "frost"
530
+ },
531
+ "x-dense": {
532
+ "char": "T",
533
+ "group": "frost"
534
+ },
535
+ "x-bold": {
536
+ "char": "O",
537
+ "group": "frost"
538
+ },
539
+ "band-small": {
540
+ "char": "k",
541
+ "group": "stitch"
542
+ },
543
+ "cross": {
544
+ "char": "A",
545
+ "group": "stitch"
546
+ },
547
+ "cross-solid": {
548
+ "char": "\"",
549
+ "group": "stitch"
550
+ },
551
+ "cross-outline": {
552
+ "char": "'",
553
+ "group": "stitch"
554
+ },
555
+ "cross-small": {
556
+ "char": "2",
557
+ "group": "stitch"
558
+ },
559
+ "cross-blocks": {
560
+ "char": "B",
561
+ "group": "stitch"
562
+ },
563
+ "cross-barred": {
564
+ "char": "C",
565
+ "group": "stitch"
566
+ },
567
+ "maltese": {
568
+ "char": "D",
569
+ "group": "stitch"
570
+ },
571
+ "cross-notched": {
572
+ "char": "7",
573
+ "group": "stitch"
574
+ },
575
+ "pinwheel-cross": {
576
+ "char": "3",
577
+ "group": "stitch"
578
+ },
579
+ "corners": {
580
+ "char": "J",
581
+ "group": "stitch"
582
+ },
583
+ "grid": {
584
+ "char": "I",
585
+ "group": "stitch"
586
+ },
587
+ "x-small": {
588
+ "char": "K",
589
+ "group": "stitch"
590
+ },
591
+ "x": {
592
+ "char": "L",
593
+ "group": "stitch"
594
+ },
595
+ "x-dotted": {
596
+ "char": "M",
597
+ "group": "stitch"
598
+ },
599
+ "x-thin": {
600
+ "char": "N",
601
+ "group": "stitch"
602
+ },
603
+ "checker-x": {
604
+ "char": "+",
605
+ "group": "stitch"
606
+ },
607
+ "checker-small": {
608
+ "char": "0",
609
+ "group": "stitch"
610
+ },
611
+ "diamond-dots": {
612
+ "char": "1",
613
+ "group": "stitch"
614
+ },
615
+ "knot": {
616
+ "char": "4",
617
+ "group": "stitch"
618
+ },
619
+ "square-dot": {
620
+ "char": "6",
621
+ "group": "stitch"
622
+ },
623
+ "square-hole": {
624
+ "char": ":",
625
+ "group": "stitch"
626
+ },
627
+ "square-outline": {
628
+ "char": ";",
629
+ "group": "stitch"
630
+ },
631
+ "square": {
632
+ "char": ",",
633
+ "group": "stitch"
634
+ },
635
+ "stack": {
636
+ "char": "<",
637
+ "group": "stitch"
638
+ },
639
+ "pinwheel": {
640
+ "char": ">",
641
+ "group": "stitch"
642
+ },
643
+ "pinwheel-small": {
644
+ "char": "Y",
645
+ "group": "stitch"
646
+ },
647
+ "pinwheel-tiny": {
648
+ "char": "Z",
649
+ "group": "stitch"
650
+ },
651
+ "diamond": {
652
+ "char": "–",
653
+ "group": "diamond"
654
+ },
655
+ "diamond-hollow": {
656
+ "char": "—",
657
+ "group": "diamond"
658
+ },
659
+ "diamond-cross": {
660
+ "char": "o",
661
+ "group": "diamond"
662
+ },
663
+ "diamond-nested": {
664
+ "char": "p",
665
+ "group": "diamond"
666
+ },
667
+ "diamond-outline": {
668
+ "char": "r",
669
+ "group": "diamond"
670
+ },
671
+ "diamond-stack": {
672
+ "char": "=",
673
+ "group": "diamond"
674
+ },
675
+ "circle": {
676
+ "char": "!",
677
+ "group": "diamond"
678
+ },
679
+ "ring": {
680
+ "char": "?",
681
+ "group": "diamond"
682
+ },
683
+ "summit": {
684
+ "char": "·",
685
+ "group": "mark"
686
+ },
687
+ "funnel": {
688
+ "char": "•",
689
+ "group": "mark"
690
+ },
691
+ "dot": {
692
+ "char": ".",
693
+ "group": "mark"
694
+ },
695
+ "bar": {
696
+ "char": "(",
697
+ "group": "mark"
698
+ },
699
+ "bar-outline": {
700
+ "char": ")",
701
+ "group": "mark"
702
+ },
703
+ "rule": {
704
+ "char": "-",
705
+ "group": "mark"
706
+ },
707
+ "tick": {
708
+ "char": "_",
709
+ "group": "mark"
710
+ },
711
+ "corner-top-left": {
712
+ "char": "/",
713
+ "group": "mark"
714
+ },
715
+ "corner-top-right": {
716
+ "char": "\\",
717
+ "group": "mark"
718
+ },
719
+ "corner-bottom-left": {
720
+ "char": "*",
721
+ "group": "mark"
722
+ },
723
+ "corner-bottom-right": {
724
+ "char": "#",
725
+ "group": "mark"
726
+ }
727
+ },
728
+ "roles": {
729
+ "band": "band-small + band-large, alternating (footer band)",
730
+ "divider": "band-small, band-large, band-small (prose <hr>)",
731
+ "end-mark": "flower (after an article's last sentence)",
732
+ "empty-state": "sprout (404 and empty lists)"
733
+ },
734
+ "forbidden": {
735
+ "chars": "uvwxyz[]{}",
736
+ "reason": "Faces, a robot, hearts and animals read as emoji. Never use them."
737
+ }
738
+ }
739
+ }
740
+ }
741
+ },
742
+ "size": {
743
+ "$type": "dimension",
744
+ "display": {
745
+ "$value": "{primitive.font.size.8}",
746
+ "$description": "The single largest line on a page (home statement). Once per page at most."
747
+ },
748
+ "heading-1": {
749
+ "$value": "{primitive.font.size.7}",
750
+ "$description": "Page titles: h1 on posts, projects and indexes."
751
+ },
752
+ "heading-2": {
753
+ "$value": "{primitive.font.size.6}",
754
+ "$description": "Section headings (h2) in prose and on index pages."
755
+ },
756
+ "heading-3": {
757
+ "$value": "{primitive.font.size.5}",
758
+ "$description": "Sub-section headings (h3) and card titles in featured layouts."
759
+ },
760
+ "heading-4": {
761
+ "$value": "{primitive.font.size.4}",
762
+ "$description": "Minor headings (h4) and standard card titles."
763
+ },
764
+ "lede": {
765
+ "$value": "{primitive.font.size.4}",
766
+ "$description": "The introductory paragraph under a page title. One per page."
767
+ },
768
+ "body": {
769
+ "$value": "{primitive.font.size.3}",
770
+ "$description": "Running text and default UI text."
771
+ },
772
+ "small": {
773
+ "$value": "{primitive.font.size.2}",
774
+ "$description": "Captions, metadata, table cells, code blocks, button labels."
775
+ },
776
+ "label": {
777
+ "$value": "{primitive.font.size.1}",
778
+ "$description": "Mono uppercase labels: accession fields, eyebrows, tags, table headers. Always with font.tracking.label."
779
+ },
780
+ "code-inline": {
781
+ "$type": "number",
782
+ "$value": "{primitive.font.relative.code}",
783
+ "$extensions": {
784
+ "codex.unit": "em"
785
+ },
786
+ "$description": "Inline code relative to surrounding text, so mono matches the x-height of National Park."
787
+ }
788
+ },
789
+ "weight": {
790
+ "$type": "fontWeight",
791
+ "body": {
792
+ "$value": "{primitive.font.weight.regular}",
793
+ "$description": "Running text."
794
+ },
795
+ "ui": {
796
+ "$value": "{primitive.font.weight.medium}",
797
+ "$description": "Nav items, labels and mono metadata."
798
+ },
799
+ "strong": {
800
+ "$value": "{primitive.font.weight.semibold}",
801
+ "$description": "<strong>, button labels and table header text. National Park has no italic, so <em> uses a synthetic oblique; use strong for real emphasis."
802
+ },
803
+ "heading": {
804
+ "$value": "{primitive.font.weight.semibold}",
805
+ "$description": "h2-h4 and card titles."
806
+ },
807
+ "display": {
808
+ "$value": "{primitive.font.weight.bold}",
809
+ "$description": "h1 and the display statement only."
810
+ }
811
+ },
812
+ "line-height": {
813
+ "$type": "number",
814
+ "display": {
815
+ "$value": "{primitive.font.line-height.tight}",
816
+ "$description": "Display and h1, set with tight tracking."
817
+ },
818
+ "heading": {
819
+ "$value": "{primitive.font.line-height.snug}",
820
+ "$description": "h2-h4 and card titles."
821
+ },
822
+ "ui": {
823
+ "$value": "{primitive.font.line-height.normal}",
824
+ "$description": "Single-line UI: nav, buttons, labels, table cells."
825
+ },
826
+ "body": {
827
+ "$value": "{primitive.font.line-height.relaxed}",
828
+ "$description": "Running text at the prose measure."
829
+ },
830
+ "code": {
831
+ "$value": "{primitive.font.line-height.relaxed}",
832
+ "$description": "Code blocks."
833
+ }
834
+ },
835
+ "tracking": {
836
+ "$type": "number",
837
+ "display": {
838
+ "$value": "{primitive.font.tracking.tighter}",
839
+ "$description": "Display and h1 sizes."
840
+ },
841
+ "heading": {
842
+ "$value": "{primitive.font.tracking.tight}",
843
+ "$description": "h2-h4 headings and card titles."
844
+ },
845
+ "body": {
846
+ "$value": "{primitive.font.tracking.none}",
847
+ "$description": "Running text. Never track lowercase body text."
848
+ },
849
+ "label": {
850
+ "$value": "{primitive.font.tracking.wider}",
851
+ "$description": "Mono uppercase labels."
852
+ },
853
+ "ui": {
854
+ "$value": "{primitive.font.tracking.wide}",
855
+ "$description": "Mono lowercase tags and small UI text."
856
+ }
857
+ }
858
+ }
859
+ }