@refrakt-md/lumina 0.20.2 → 0.22.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 (108) hide show
  1. package/contracts/structures.json +154 -5
  2. package/dist/tokens.d.ts +5 -3
  3. package/dist/tokens.d.ts.map +1 -1
  4. package/dist/tokens.js +42 -3
  5. package/dist/tokens.js.map +1 -1
  6. package/index.css +2 -0
  7. package/package.json +6 -5
  8. package/styles/dimensions/checklist.css +1 -1
  9. package/styles/dimensions/cover.css +18 -0
  10. package/styles/dimensions/density.css +3 -0
  11. package/styles/dimensions/frame.css +4 -4
  12. package/styles/dimensions/metadata.css +6 -6
  13. package/styles/dimensions/sections.css +12 -15
  14. package/styles/dimensions/sequence.css +3 -3
  15. package/styles/global.css +15 -15
  16. package/styles/layouts/blog.css +31 -31
  17. package/styles/layouts/default.css +9 -9
  18. package/styles/layouts/docs.css +6 -6
  19. package/styles/layouts/mobile.css +2 -2
  20. package/styles/layouts/on-this-page.css +5 -5
  21. package/styles/layouts/plan.css +24 -24
  22. package/styles/layouts/search.css +14 -14
  23. package/styles/layouts/version-switcher.css +6 -6
  24. package/styles/runes/accordion.css +10 -10
  25. package/styles/runes/aggregate.css +1 -1
  26. package/styles/runes/annotate.css +5 -5
  27. package/styles/runes/api.css +1 -1
  28. package/styles/runes/audio.css +9 -9
  29. package/styles/runes/badge.css +2 -2
  30. package/styles/runes/bento.css +2 -2
  31. package/styles/runes/blog.css +15 -15
  32. package/styles/runes/bond.css +3 -3
  33. package/styles/runes/breadcrumb.css +2 -2
  34. package/styles/runes/budget.css +20 -20
  35. package/styles/runes/bug.css +2 -2
  36. package/styles/runes/card.css +3 -3
  37. package/styles/runes/cast.css +5 -5
  38. package/styles/runes/changelog.css +8 -8
  39. package/styles/runes/character.css +3 -3
  40. package/styles/runes/chart.css +5 -5
  41. package/styles/runes/codegroup.css +3 -3
  42. package/styles/runes/collection.css +3 -3
  43. package/styles/runes/compare.css +5 -5
  44. package/styles/runes/comparison.css +22 -22
  45. package/styles/runes/conversation.css +4 -4
  46. package/styles/runes/cta.css +14 -14
  47. package/styles/runes/datatable.css +8 -8
  48. package/styles/runes/decision.css +2 -2
  49. package/styles/runes/design-context.css +2 -2
  50. package/styles/runes/details.css +4 -4
  51. package/styles/runes/diagram.css +3 -3
  52. package/styles/runes/diff.css +6 -6
  53. package/styles/runes/drawer.css +8 -8
  54. package/styles/runes/embed.css +1 -1
  55. package/styles/runes/event.css +2 -2
  56. package/styles/runes/expand.css +5 -5
  57. package/styles/runes/faction.css +3 -3
  58. package/styles/runes/feature.css +23 -11
  59. package/styles/runes/figure.css +3 -3
  60. package/styles/runes/form.css +16 -16
  61. package/styles/runes/gallery.css +7 -7
  62. package/styles/runes/hero.css +116 -14
  63. package/styles/runes/hint.css +7 -7
  64. package/styles/runes/howto.css +6 -6
  65. package/styles/runes/itinerary.css +12 -12
  66. package/styles/runes/juxtapose.css +6 -6
  67. package/styles/runes/lore.css +4 -4
  68. package/styles/runes/map.css +6 -6
  69. package/styles/runes/mediatext.css +1 -1
  70. package/styles/runes/milestone.css +12 -12
  71. package/styles/runes/mockup.css +7 -7
  72. package/styles/runes/nav.css +34 -34
  73. package/styles/runes/organization.css +3 -3
  74. package/styles/runes/pagination.css +5 -5
  75. package/styles/runes/palette.css +13 -13
  76. package/styles/runes/placeholder.css +16 -0
  77. package/styles/runes/plan-history.css +20 -20
  78. package/styles/runes/plan-progress.css +3 -3
  79. package/styles/runes/plan-ref.css +1 -1
  80. package/styles/runes/playlist.css +8 -8
  81. package/styles/runes/plot.css +6 -6
  82. package/styles/runes/preview.css +6 -6
  83. package/styles/runes/pricing.css +16 -16
  84. package/styles/runes/progress.css +2 -2
  85. package/styles/runes/pullquote.css +6 -5
  86. package/styles/runes/realm.css +3 -3
  87. package/styles/runes/recipe.css +9 -9
  88. package/styles/runes/relationships.css +2 -2
  89. package/styles/runes/reveal.css +10 -10
  90. package/styles/runes/sandbox.css +52 -2
  91. package/styles/runes/section.css +70 -0
  92. package/styles/runes/sidenote.css +2 -2
  93. package/styles/runes/spacing.css +11 -11
  94. package/styles/runes/spec.css +2 -2
  95. package/styles/runes/steps.css +22 -10
  96. package/styles/runes/storyboard.css +2 -2
  97. package/styles/runes/swatch.css +1 -1
  98. package/styles/runes/symbol.css +10 -10
  99. package/styles/runes/tabs.css +9 -9
  100. package/styles/runes/testimonial.css +7 -7
  101. package/styles/runes/textblock.css +4 -4
  102. package/styles/runes/timeline.css +7 -7
  103. package/styles/runes/toc.css +4 -4
  104. package/styles/runes/track.css +10 -10
  105. package/styles/runes/typography.css +12 -12
  106. package/styles/runes/work.css +2 -2
  107. package/tokens/base.css +43 -66
  108. package/tokens/dark.css +76 -80
@@ -45,9 +45,9 @@
45
45
  display: inline-flex;
46
46
  align-items: center;
47
47
  gap: 0.5rem;
48
- font-weight: 600;
49
- font-size: 1.2rem;
50
- letter-spacing: -0.02em;
48
+ font-weight: var(--rf-weight-semibold);
49
+ font-size: var(--rf-text-xl);
50
+ letter-spacing: var(--rf-tracking-tight);
51
51
  }
52
52
  .rf-blog-header img,
53
53
  .rf-blog-header p:first-child a > .rf-icon {
@@ -60,7 +60,7 @@
60
60
  color: currentColor;
61
61
  }
62
62
  .rf-blog-header__inner p ~ p {
63
- font-size: 0.85rem;
63
+ font-size: var(--rf-text-sm);
64
64
  }
65
65
  .rf-blog-header__inner p ~ p a {
66
66
  margin-left: 1.5rem;
@@ -93,16 +93,16 @@
93
93
  max-width: 42rem;
94
94
  }
95
95
  .rf-blog-index__title {
96
- font-size: 2.25rem;
97
- font-weight: 800;
98
- line-height: 1.15;
99
- letter-spacing: -0.02em;
96
+ font-size: var(--rf-text-4xl);
97
+ font-weight: var(--rf-weight-bold);
98
+ line-height: var(--rf-leading-tight);
99
+ letter-spacing: var(--rf-tracking-tight);
100
100
  margin: 0 0 1rem;
101
101
  color: var(--rf-color-text);
102
102
  }
103
103
  .rf-blog-index__body {
104
104
  margin-bottom: 2rem;
105
- line-height: 1.8;
105
+ line-height: var(--rf-leading-relaxed);
106
106
  color: var(--rf-color-muted);
107
107
  }
108
108
  .rf-blog-index__body:empty {
@@ -130,8 +130,8 @@
130
130
  text-decoration: none;
131
131
  }
132
132
  .rf-blog-card__title {
133
- font-size: 1.35rem;
134
- font-weight: 700;
133
+ font-size: var(--rf-text-xl);
134
+ font-weight: var(--rf-weight-bold);
135
135
  margin: 0 0 0.5rem;
136
136
  color: var(--rf-color-text);
137
137
  }
@@ -139,7 +139,7 @@
139
139
  display: flex;
140
140
  align-items: center;
141
141
  gap: 0.75rem;
142
- font-size: 0.85rem;
142
+ font-size: var(--rf-text-sm);
143
143
  color: var(--rf-color-muted);
144
144
  margin-bottom: 0.5rem;
145
145
  }
@@ -149,8 +149,8 @@
149
149
  }
150
150
  .rf-blog-card__desc {
151
151
  margin: 0 0 0.75rem;
152
- font-size: 0.95rem;
153
- line-height: 1.6;
152
+ font-size: var(--rf-text);
153
+ line-height: var(--rf-leading-relaxed);
154
154
  color: var(--rf-color-muted);
155
155
  }
156
156
  .rf-blog-card__tags {
@@ -160,8 +160,8 @@
160
160
  margin-bottom: 0.75rem;
161
161
  }
162
162
  .rf-blog-card__link {
163
- font-size: 0.85rem;
164
- font-weight: 600;
163
+ font-size: var(--rf-text-sm);
164
+ font-weight: var(--rf-weight-semibold);
165
165
  color: var(--rf-color-primary, var(--rf-color-text));
166
166
  }
167
167
 
@@ -175,10 +175,10 @@
175
175
  border-bottom: 1px solid var(--rf-color-border);
176
176
  }
177
177
  .rf-blog-article__title {
178
- font-size: 2.25rem;
179
- font-weight: 800;
180
- line-height: 1.15;
181
- letter-spacing: -0.02em;
178
+ font-size: var(--rf-text-4xl);
179
+ font-weight: var(--rf-weight-bold);
180
+ line-height: var(--rf-leading-tight);
181
+ letter-spacing: var(--rf-tracking-tight);
182
182
  margin: 0 0 1rem;
183
183
  color: var(--rf-color-text);
184
184
  }
@@ -186,11 +186,11 @@
186
186
  display: flex;
187
187
  align-items: center;
188
188
  gap: 0.75rem;
189
- font-size: 0.9rem;
189
+ font-size: var(--rf-text-sm);
190
190
  color: var(--rf-color-muted);
191
191
  }
192
192
  .rf-blog-article__meta time {
193
- font-weight: 500;
193
+ font-weight: var(--rf-weight-medium);
194
194
  }
195
195
  .rf-blog-article__author::before {
196
196
  content: '\00b7';
@@ -203,8 +203,8 @@
203
203
  margin-top: 0.75rem;
204
204
  }
205
205
  .rf-blog-article__tag {
206
- font-size: 0.75rem;
207
- font-weight: 500;
206
+ font-size: var(--rf-text-xs);
207
+ font-weight: var(--rf-weight-medium);
208
208
  padding: 0.2rem 0.6rem;
209
209
  border-radius: 9999px;
210
210
  background: var(--rf-color-surface);
@@ -214,7 +214,7 @@
214
214
 
215
215
  /* ---- Article body typography ---- */
216
216
  .rf-blog-article__body {
217
- line-height: 1.8;
217
+ line-height: var(--rf-leading-relaxed);
218
218
  }
219
219
  .rf-blog-article__body h2 {
220
220
  margin-top: 2.5rem;
@@ -234,16 +234,16 @@
234
234
  .rf-blog-sidebar {
235
235
  position: sticky;
236
236
  top: 2.5rem;
237
- font-size: 0.85rem;
237
+ font-size: var(--rf-text-sm);
238
238
  color: var(--rf-color-muted);
239
239
  }
240
240
  .rf-blog-sidebar h2,
241
241
  .rf-blog-sidebar h3,
242
242
  .rf-blog-sidebar h4 {
243
- font-size: 0.75rem;
244
- font-weight: 600;
243
+ font-size: var(--rf-text-xs);
244
+ font-weight: var(--rf-weight-semibold);
245
245
  text-transform: uppercase;
246
- letter-spacing: 0.05em;
246
+ letter-spacing: var(--rf-tracking-wider);
247
247
  color: var(--rf-color-muted);
248
248
  margin-top: 0;
249
249
  margin-bottom: 0.5rem;
@@ -269,7 +269,7 @@
269
269
  border-top: 1px solid var(--rf-color-border);
270
270
  padding: 2rem 1.5rem;
271
271
  text-align: center;
272
- font-size: 0.85rem;
272
+ font-size: var(--rf-text-sm);
273
273
  color: var(--rf-color-muted);
274
274
  }
275
275
 
@@ -282,7 +282,7 @@
282
282
  grid-template-columns: 1fr;
283
283
  }
284
284
  .rf-blog-article__title {
285
- font-size: 1.75rem;
285
+ font-size: var(--rf-text-3xl);
286
286
  }
287
287
  .rf-blog-sidebar {
288
288
  position: static;
@@ -31,9 +31,9 @@
31
31
  }
32
32
  .rf-header h1, .rf-header h2, .rf-header h3 {
33
33
  margin: 0;
34
- font-size: 1.2rem;
35
- font-weight: 600;
36
- letter-spacing: -0.02em;
34
+ font-size: var(--rf-text-xl);
35
+ font-weight: var(--rf-weight-semibold);
36
+ letter-spacing: var(--rf-tracking-tight);
37
37
  line-height: 1;
38
38
  }
39
39
  .rf-header a {
@@ -48,9 +48,9 @@
48
48
  display: inline-flex;
49
49
  align-items: center;
50
50
  gap: 0.5rem;
51
- font-weight: 600;
52
- font-size: 1.2rem;
53
- letter-spacing: -0.02em;
51
+ font-weight: var(--rf-weight-semibold);
52
+ font-size: var(--rf-text-xl);
53
+ letter-spacing: var(--rf-tracking-tight);
54
54
  }
55
55
  .rf-header img,
56
56
  .rf-header p:first-child a > .rf-icon {
@@ -66,7 +66,7 @@
66
66
  color: currentColor;
67
67
  }
68
68
  .rf-header__inner p ~ p {
69
- font-size: 0.85rem;
69
+ font-size: var(--rf-text-sm);
70
70
  }
71
71
  .rf-header__inner p ~ p a {
72
72
  margin-left: 1.5rem;
@@ -234,7 +234,7 @@
234
234
  border-top: 1px solid var(--rf-color-border);
235
235
  background: var(--rf-color-bg);
236
236
  color: var(--rf-color-muted);
237
- font-size: 0.875rem;
237
+ font-size: var(--rf-text-sm);
238
238
  }
239
239
  .rf-footer > * {
240
240
  width: 100%;
@@ -242,6 +242,6 @@
242
242
  }
243
243
  .rf-footer p {
244
244
  margin: 1.5rem 0 0;
245
- font-size: 0.8rem;
245
+ font-size: var(--rf-text-xs);
246
246
  color: var(--rf-color-muted);
247
247
  }
@@ -45,9 +45,9 @@
45
45
  display: inline-flex;
46
46
  align-items: center;
47
47
  gap: 0.5rem;
48
- font-weight: 600;
49
- font-size: 1.2rem;
50
- letter-spacing: -0.02em;
48
+ font-weight: var(--rf-weight-semibold);
49
+ font-size: var(--rf-text-xl);
50
+ letter-spacing: var(--rf-tracking-tight);
51
51
  }
52
52
  .rf-docs-header img,
53
53
  .rf-docs-header p:first-child a > .rf-icon {
@@ -60,7 +60,7 @@
60
60
  color: currentColor;
61
61
  }
62
62
  .rf-docs-header__inner p ~ p {
63
- font-size: 0.85rem;
63
+ font-size: var(--rf-text-sm);
64
64
  }
65
65
  .rf-docs-header__inner p ~ p a {
66
66
  margin-left: 1.5rem;
@@ -215,7 +215,7 @@ html:has(.rf-docs-header) {
215
215
  color: var(--rf-color-text);
216
216
  }
217
217
  .rf-docs-toolbar__breadcrumb {
218
- font-size: 0.8rem;
218
+ font-size: var(--rf-text-xs);
219
219
  color: var(--rf-color-muted);
220
220
  /* `flex: 1 1 0` (basis 0, not auto) so the breadcrumb shrinks against
221
221
  * the available space rather than starting at its full content width —
@@ -237,7 +237,7 @@ html:has(.rf-docs-header) {
237
237
  }
238
238
  .rf-docs-breadcrumb-page {
239
239
  color: var(--rf-color-text);
240
- font-weight: 500;
240
+ font-weight: var(--rf-weight-medium);
241
241
  }
242
242
 
243
243
  /* ---- Hide TOC on medium screens ---- */
@@ -68,8 +68,8 @@
68
68
  .rf-mobile-panel .rf-nav--menubar .rf-nav-group__panel .rf-nav--columns .rf-nav-item__link {
69
69
  display: block;
70
70
  padding: 0;
71
- font-size: 1.5rem;
72
- font-weight: 700;
71
+ font-size: var(--rf-text-2xl);
72
+ font-weight: var(--rf-weight-bold);
73
73
  color: var(--rf-color-text);
74
74
  text-decoration: none;
75
75
  background: transparent;
@@ -1,14 +1,14 @@
1
1
  /* On This Page — TOC sidebar navigation */
2
2
 
3
3
  .rf-on-this-page {
4
- font-size: 0.8rem;
4
+ font-size: var(--rf-text-xs);
5
5
  }
6
6
 
7
7
  .rf-on-this-page__title {
8
- font-size: 0.7rem;
9
- font-weight: 600;
8
+ font-size: var(--rf-text-xs);
9
+ font-weight: var(--rf-weight-semibold);
10
10
  text-transform: uppercase;
11
- letter-spacing: 0.05em;
11
+ letter-spacing: var(--rf-tracking-wider);
12
12
  color: var(--rf-color-muted, #64748b);
13
13
  margin: 0 0 0.75rem;
14
14
  }
@@ -32,7 +32,7 @@
32
32
  padding: 0.25rem 0.75rem;
33
33
  color: var(--rf-color-muted, #64748b);
34
34
  text-decoration: none;
35
- line-height: 1.4;
35
+ line-height: var(--rf-leading-snug);
36
36
  }
37
37
 
38
38
  .rf-on-this-page__item a:hover {
@@ -14,8 +14,8 @@
14
14
  }
15
15
 
16
16
  .rf-plan-dashboard__section-title {
17
- font-size: 1.125rem;
18
- font-weight: 600;
17
+ font-size: var(--rf-text-lg);
18
+ font-weight: var(--rf-weight-semibold);
19
19
  color: var(--rf-color-text, #212529);
20
20
  margin-block-end: var(--rf-spacing-md, 1rem);
21
21
  padding-block-end: var(--rf-spacing-sm, 0.5rem);
@@ -43,8 +43,8 @@
43
43
  display: flex;
44
44
  align-items: center;
45
45
  justify-content: space-between;
46
- font-size: 1.125rem;
47
- font-weight: 700;
46
+ font-size: var(--rf-text-lg);
47
+ font-weight: var(--rf-weight-bold);
48
48
  margin-block-end: var(--rf-spacing-lg, 1.5rem);
49
49
  color: var(--rf-color-text, #212529);
50
50
  }
@@ -77,10 +77,10 @@
77
77
  }
78
78
 
79
79
  .rf-plan-sidebar__group-title {
80
- font-size: 0.8125rem;
81
- font-weight: 600;
80
+ font-size: var(--rf-text-sm);
81
+ font-weight: var(--rf-weight-semibold);
82
82
  text-transform: uppercase;
83
- letter-spacing: 0.05em;
83
+ letter-spacing: var(--rf-tracking-wider);
84
84
  color: var(--rf-color-muted, #6c757d);
85
85
  margin-block-end: var(--rf-spacing-sm, 0.5rem);
86
86
  }
@@ -100,7 +100,7 @@
100
100
  border-radius: var(--rf-radius-sm, 0.25rem);
101
101
  background: transparent;
102
102
  color: var(--rf-color-muted, #6c757d);
103
- font-size: 0.8125rem;
103
+ font-size: var(--rf-text-sm);
104
104
  cursor: pointer;
105
105
  text-align: start;
106
106
  transition: background 0.15s ease;
@@ -124,12 +124,12 @@
124
124
 
125
125
  .rf-plan-sidebar__status-label {
126
126
  flex: 1;
127
- font-weight: 500;
127
+ font-weight: var(--rf-weight-medium);
128
128
  }
129
129
 
130
130
  .rf-plan-sidebar__status-count {
131
- font-size: 0.75rem;
132
- font-weight: 600;
131
+ font-size: var(--rf-text-xs);
132
+ font-weight: var(--rf-weight-semibold);
133
133
  color: var(--rf-color-muted, #6c757d);
134
134
  background: var(--rf-color-surface-active, #f1f3f5);
135
135
  padding: 0 0.375rem;
@@ -152,7 +152,7 @@
152
152
  border-radius: var(--rf-radius-sm, 0.25rem);
153
153
  color: var(--rf-color-text, #212529);
154
154
  text-decoration: none;
155
- font-size: 0.8125rem;
155
+ font-size: var(--rf-text-sm);
156
156
  transition: background 0.15s ease;
157
157
  }
158
158
 
@@ -179,7 +179,7 @@
179
179
  .rf-plan-sidebar__link--active {
180
180
  background: var(--rf-color-info-bg, #e7f5ff);
181
181
  color: var(--rf-color-info, #339af0);
182
- font-weight: 600;
182
+ font-weight: var(--rf-weight-semibold);
183
183
  }
184
184
 
185
185
  .rf-plan-sidebar__link--focused {
@@ -200,17 +200,17 @@
200
200
 
201
201
  .rf-plan-sidebar__blocker-icon {
202
202
  margin-left: auto;
203
- font-size: 0.75rem;
203
+ font-size: var(--rf-text-xs);
204
204
  color: var(--rf-color-danger, #ff6b6b);
205
205
  flex-shrink: 0;
206
206
  }
207
207
 
208
208
  /* Views section in sidebar */
209
209
  .rf-plan-sidebar__view-header {
210
- font-size: 0.6875rem;
211
- font-weight: 600;
210
+ font-size: var(--rf-text-xs);
211
+ font-weight: var(--rf-weight-semibold);
212
212
  text-transform: uppercase;
213
- letter-spacing: 0.05em;
213
+ letter-spacing: var(--rf-tracking-wider);
214
214
  color: var(--rf-color-muted, #6c757d);
215
215
  padding: 0.25rem 0.5rem;
216
216
  margin-block-start: 0.25rem;
@@ -228,8 +228,8 @@
228
228
  }
229
229
 
230
230
  .rf-plan-sidebar__link .rf-plan-sidebar__view-count {
231
- font-size: 0.6875rem;
232
- font-weight: 600;
231
+ font-size: var(--rf-text-xs);
232
+ font-weight: var(--rf-weight-semibold);
233
233
  color: var(--rf-color-muted, #6c757d);
234
234
  background: var(--rf-color-surface-active, #f1f3f5);
235
235
  padding: 0 0.375rem;
@@ -311,8 +311,8 @@
311
311
  }
312
312
 
313
313
  .rf-plan-toolbar__title {
314
- font-size: 0.875rem;
315
- font-weight: 600;
314
+ font-size: var(--rf-text-sm);
315
+ font-weight: var(--rf-weight-semibold);
316
316
  color: var(--rf-color-text, #212529);
317
317
  flex: 1;
318
318
  min-width: 0;
@@ -367,8 +367,8 @@
367
367
  padding: 0.5rem 1rem;
368
368
  color: var(--rf-color-text, #212529);
369
369
  text-decoration: none;
370
- font-size: 0.8125rem;
371
- line-height: 1.4;
370
+ font-size: var(--rf-text-sm);
371
+ line-height: var(--rf-leading-snug);
372
372
  }
373
373
 
374
374
  .rf-section-nav__link:hover {
@@ -381,7 +381,7 @@
381
381
 
382
382
  .rf-section-nav__item[data-active] .rf-section-nav__link {
383
383
  color: var(--rf-color-info, #339af0);
384
- font-weight: 600;
384
+ font-weight: var(--rf-weight-semibold);
385
385
  }
386
386
 
387
387
  /* ---- Responsive ---- */
@@ -8,7 +8,7 @@
8
8
  border-radius: var(--rf-radius-full);
9
9
  background: var(--rf-color-surface);
10
10
  color: var(--rf-color-muted);
11
- font-size: 0.8rem;
11
+ font-size: var(--rf-text-xs);
12
12
  font-family: var(--rf-font-sans);
13
13
  cursor: pointer;
14
14
  transition: border-color 0.15s, color 0.15s, background 0.15s;
@@ -37,8 +37,8 @@
37
37
  border-radius: var(--rf-radius-sm);
38
38
  background: var(--rf-color-bg);
39
39
  font-family: var(--rf-font-sans);
40
- font-size: 0.7rem;
41
- line-height: 1.2;
40
+ font-size: var(--rf-text-xs);
41
+ line-height: var(--rf-leading-tight);
42
42
  color: var(--rf-color-muted);
43
43
  }
44
44
 
@@ -84,7 +84,7 @@
84
84
  border: none;
85
85
  outline: none;
86
86
  background: transparent;
87
- font-size: 1rem;
87
+ font-size: var(--rf-text);
88
88
  font-family: var(--rf-font-sans);
89
89
  color: var(--rf-color-text);
90
90
  }
@@ -103,7 +103,7 @@
103
103
  border-radius: var(--rf-radius-sm);
104
104
  background: var(--rf-color-surface);
105
105
  font-family: var(--rf-font-sans);
106
- font-size: 0.7rem;
106
+ font-size: var(--rf-text-xs);
107
107
  color: var(--rf-color-muted);
108
108
  flex-shrink: 0;
109
109
  }
@@ -133,15 +133,15 @@
133
133
  }
134
134
  .rf-search-result__title {
135
135
  display: block;
136
- font-weight: 500;
137
- font-size: 0.875rem;
138
- line-height: 1.4;
136
+ font-weight: var(--rf-weight-medium);
137
+ font-size: var(--rf-text-sm);
138
+ line-height: var(--rf-leading-snug);
139
139
  margin-bottom: 0.125rem;
140
140
  }
141
141
  .rf-search-result__excerpt {
142
142
  display: block;
143
- font-size: 0.8rem;
144
- line-height: 1.5;
143
+ font-size: var(--rf-text-xs);
144
+ line-height: var(--rf-leading-normal);
145
145
  color: var(--rf-color-muted);
146
146
  }
147
147
  .rf-search-result__excerpt mark {
@@ -155,7 +155,7 @@
155
155
  .rf-search-dialog__empty {
156
156
  text-align: center;
157
157
  padding: 2rem 1rem;
158
- font-size: 0.875rem;
158
+ font-size: var(--rf-text-sm);
159
159
  color: var(--rf-color-muted);
160
160
  }
161
161
 
@@ -166,7 +166,7 @@
166
166
  gap: 1rem;
167
167
  padding: 0.5rem 1rem;
168
168
  border-top: 1px solid var(--rf-color-border);
169
- font-size: 0.7rem;
169
+ font-size: var(--rf-text-xs);
170
170
  color: var(--rf-color-muted);
171
171
  }
172
172
  .rf-search-dialog__footer kbd {
@@ -179,8 +179,8 @@
179
179
  border-radius: 3px;
180
180
  background: var(--rf-color-surface);
181
181
  font-family: var(--rf-font-sans);
182
- font-size: 0.65rem;
183
- line-height: 1.4;
182
+ font-size: var(--rf-text-xs);
183
+ line-height: var(--rf-leading-snug);
184
184
  }
185
185
 
186
186
  /* Mobile */
@@ -5,15 +5,15 @@
5
5
  align-items: center;
6
6
  gap: 0.5rem;
7
7
  margin-bottom: 1.5rem;
8
- font-size: 0.85rem;
8
+ font-size: var(--rf-text-sm);
9
9
  }
10
10
 
11
11
  .rf-version-switcher__label {
12
12
  color: var(--rf-color-muted);
13
- font-weight: 500;
14
- font-size: 0.8rem;
13
+ font-weight: var(--rf-weight-medium);
14
+ font-size: var(--rf-text-xs);
15
15
  text-transform: uppercase;
16
- letter-spacing: 0.03em;
16
+ letter-spacing: var(--rf-tracking-wide);
17
17
  }
18
18
 
19
19
  .rf-version-switcher__select {
@@ -23,11 +23,11 @@
23
23
  border: 1px solid var(--rf-color-border);
24
24
  border-radius: var(--rf-radius-sm, 0.25rem);
25
25
  color: var(--rf-color-text);
26
- font-size: 0.85rem;
26
+ font-size: var(--rf-text-sm);
27
27
  font-family: inherit;
28
28
  padding: 0.3rem 2rem 0.3rem 0.6rem;
29
29
  cursor: pointer;
30
- line-height: 1.4;
30
+ line-height: var(--rf-leading-snug);
31
31
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
32
32
  background-repeat: no-repeat;
33
33
  background-position: right 0.5rem center;
@@ -5,9 +5,9 @@
5
5
  margin-bottom: 1.5rem;
6
6
  }
7
7
  .rf-accordion__eyebrow {
8
- font-size: 0.8125rem;
9
- font-weight: 600;
10
- letter-spacing: 0.05em;
8
+ font-size: var(--rf-text-sm);
9
+ font-weight: var(--rf-weight-semibold);
10
+ letter-spacing: var(--rf-tracking-wider);
11
11
  text-transform: uppercase;
12
12
  color: var(--rf-color-primary);
13
13
  margin: 0 0 0.5rem;
@@ -19,13 +19,13 @@
19
19
  border: 1px solid var(--rf-color-border);
20
20
  border-radius: var(--rf-radius-full);
21
21
  color: var(--rf-color-text);
22
- font-weight: 400;
22
+ font-weight: var(--rf-weight-normal);
23
23
  text-transform: none;
24
- letter-spacing: 0;
24
+ letter-spacing: var(--rf-tracking-normal);
25
25
  transition: border-color 150ms ease;
26
26
  }
27
27
  .rf-accordion__eyebrow:has(a):hover { border-color: var(--rf-color-muted); }
28
- .rf-accordion__eyebrow:has(a) a { color: var(--rf-color-primary); font-weight: 600; text-decoration: none; }
28
+ .rf-accordion__eyebrow:has(a) a { color: var(--rf-color-primary); font-weight: var(--rf-weight-semibold); text-decoration: none; }
29
29
  .rf-accordion__eyebrow:has(a) a::before { content: ''; position: absolute; inset: 0; border-radius: inherit; }
30
30
  .rf-accordion__headline {
31
31
  margin-top: 0;
@@ -51,8 +51,8 @@
51
51
  align-items: center;
52
52
  gap: 0.5rem;
53
53
  padding: 0.875rem 0rem;
54
- font-weight: 600;
55
- font-size: 0.95rem;
54
+ font-weight: var(--rf-weight-semibold);
55
+ font-size: var(--rf-text);
56
56
  cursor: pointer;
57
57
  user-select: none;
58
58
  list-style: none;
@@ -112,8 +112,8 @@
112
112
  * `group-display="accordion"` panel, where the card's own typography
113
113
  * should govern. */
114
114
  .rf-accordion-item__body:not(:has([data-block])) {
115
- font-size: 0.925rem;
116
- line-height: 1.65;
115
+ font-size: var(--rf-text-sm);
116
+ line-height: var(--rf-leading-relaxed);
117
117
  color: var(--rf-color-muted);
118
118
  }
119
119
  .rf-accordion-item__body p:last-child {
@@ -20,7 +20,7 @@
20
20
  * weight tuned to stand out modestly in prose. */
21
21
  .rf-aggregate[data-aggregate='count'] {
22
22
  font-variant-numeric: tabular-nums;
23
- font-weight: 600;
23
+ font-weight: var(--rf-weight-semibold);
24
24
  color: var(--rf-color-text);
25
25
  }
26
26
 
@@ -9,7 +9,7 @@
9
9
  width: 40%;
10
10
  margin: 0.25rem 0 0.5rem 1rem;
11
11
  padding: 0.5rem 0 0.5rem 1rem;
12
- font-size: 0.8125rem;
12
+ font-size: var(--rf-text-sm);
13
13
  color: var(--rf-color-muted);
14
14
  border-left: 2px solid var(--rf-color-border);
15
15
  }
@@ -20,7 +20,7 @@
20
20
  vertical-align: baseline;
21
21
  margin: 0 0.25rem;
22
22
  padding: 0.125rem 0 0.125rem 0.5rem;
23
- font-size: 0.8125rem;
23
+ font-size: var(--rf-text-sm);
24
24
  color: var(--rf-color-muted);
25
25
  border-left: 2px solid var(--rf-color-border);
26
26
  }
@@ -40,8 +40,8 @@
40
40
  justify-content: center;
41
41
  width: 1rem;
42
42
  height: 1rem;
43
- font-size: 0.625rem;
44
- font-weight: 700;
43
+ font-size: var(--rf-text-xs);
44
+ font-weight: var(--rf-weight-bold);
45
45
  color: var(--rf-color-primary);
46
46
  border: 1px solid var(--rf-color-primary);
47
47
  border-radius: var(--rf-radius-full, 50%);
@@ -55,7 +55,7 @@
55
55
  transform: translateX(-50%);
56
56
  width: 16rem;
57
57
  padding: 0.75rem;
58
- font-size: 0.8125rem;
58
+ font-size: var(--rf-text-sm);
59
59
  color: var(--rf-color-text);
60
60
  background: var(--rf-color-bg);
61
61
  border: 1px solid var(--rf-color-border);
@@ -19,7 +19,7 @@
19
19
  padding: 0.5rem 1rem;
20
20
  margin: 0.75rem 0;
21
21
  border-radius: 0 var(--rf-radius-sm) var(--rf-radius-sm) 0;
22
- font-size: 0.9375rem;
22
+ font-size: var(--rf-text);
23
23
  }
24
24
  .rf-api__body blockquote::before {
25
25
  content: none;