@refrakt-md/lumina 0.32.0 → 0.34.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 (142) hide show
  1. package/base.css +29 -29
  2. package/contracts/structures.json +58 -60
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/icons.d.ts.map +1 -1
  6. package/dist/icons.js +57 -57
  7. package/dist/icons.js.map +1 -1
  8. package/dist/presets/catppuccin.js.map +1 -1
  9. package/dist/presets/dracula.js.map +1 -1
  10. package/dist/presets/gruvbox.js.map +1 -1
  11. package/dist/presets/niwaki.js.map +1 -1
  12. package/dist/presets/nord.js.map +1 -1
  13. package/dist/presets/one-dark.js.map +1 -1
  14. package/dist/presets/solarized.js.map +1 -1
  15. package/dist/presets/tideline.d.ts.map +1 -1
  16. package/dist/presets/tideline.js +20 -4
  17. package/dist/presets/tideline.js.map +1 -1
  18. package/dist/presets/tokyo-night.js.map +1 -1
  19. package/dist/tokens.js.map +1 -1
  20. package/index.css +124 -124
  21. package/package.json +5 -5
  22. package/presets.json +61 -13
  23. package/styles/base/attributes.css +32 -13
  24. package/styles/dimensions/checklist.css +45 -46
  25. package/styles/dimensions/cover.css +71 -51
  26. package/styles/dimensions/density.css +69 -65
  27. package/styles/dimensions/frame.css +116 -57
  28. package/styles/dimensions/metadata.css +110 -103
  29. package/styles/dimensions/motion.css +42 -13
  30. package/styles/dimensions/reading.css +27 -27
  31. package/styles/dimensions/sections.css +44 -45
  32. package/styles/dimensions/sequence.css +56 -57
  33. package/styles/dimensions/state.css +8 -2
  34. package/styles/dimensions/substrate.css +82 -58
  35. package/styles/dimensions/surfaces.css +65 -62
  36. package/styles/elements/blockquote.css +24 -25
  37. package/styles/elements/code.css +72 -71
  38. package/styles/elements/table.css +36 -37
  39. package/styles/global.css +163 -121
  40. package/styles/layouts/blog.css +219 -218
  41. package/styles/layouts/default.css +168 -167
  42. package/styles/layouts/docs.css +121 -122
  43. package/styles/layouts/mobile.css +54 -55
  44. package/styles/layouts/on-this-page.css +46 -47
  45. package/styles/layouts/plan.css +248 -247
  46. package/styles/layouts/search.css +142 -140
  47. package/styles/layouts/split.css +45 -45
  48. package/styles/layouts/theme-toggle.css +33 -31
  49. package/styles/layouts/version-switcher.css +38 -37
  50. package/styles/runes/accordion.css +90 -81
  51. package/styles/runes/aggregate.css +50 -39
  52. package/styles/runes/annotate.css +46 -45
  53. package/styles/runes/api.css +22 -23
  54. package/styles/runes/audio.css +140 -141
  55. package/styles/runes/badge.css +12 -13
  56. package/styles/runes/bar.css +4 -5
  57. package/styles/runes/bento.css +73 -62
  58. package/styles/runes/bg.css +62 -47
  59. package/styles/runes/blog.css +89 -90
  60. package/styles/runes/bond.css +49 -50
  61. package/styles/runes/breadcrumb.css +34 -35
  62. package/styles/runes/budget.css +126 -127
  63. package/styles/runes/bug.css +28 -27
  64. package/styles/runes/card.css +63 -60
  65. package/styles/runes/carousel.css +15 -15
  66. package/styles/runes/cast.css +50 -51
  67. package/styles/runes/changelog.css +45 -46
  68. package/styles/runes/character.css +31 -32
  69. package/styles/runes/chart.css +194 -106
  70. package/styles/runes/codegroup.css +109 -100
  71. package/styles/runes/collection.css +87 -86
  72. package/styles/runes/compare.css +38 -39
  73. package/styles/runes/comparison.css +205 -179
  74. package/styles/runes/conversation.css +36 -33
  75. package/styles/runes/cta.css +135 -132
  76. package/styles/runes/datatable.css +84 -83
  77. package/styles/runes/decision.css +25 -26
  78. package/styles/runes/design-context.css +21 -23
  79. package/styles/runes/details.css +26 -27
  80. package/styles/runes/diagram.css +28 -29
  81. package/styles/runes/diff.css +75 -72
  82. package/styles/runes/drawer.css +276 -198
  83. package/styles/runes/embed.css +20 -21
  84. package/styles/runes/event.css +35 -36
  85. package/styles/runes/expand.css +43 -34
  86. package/styles/runes/faction.css +47 -48
  87. package/styles/runes/feature.css +119 -112
  88. package/styles/runes/figure.css +11 -12
  89. package/styles/runes/file-ref.css +11 -13
  90. package/styles/runes/form.css +155 -154
  91. package/styles/runes/gallery.css +59 -60
  92. package/styles/runes/grid.css +10 -7
  93. package/styles/runes/hero.css +189 -185
  94. package/styles/runes/hint.css +57 -58
  95. package/styles/runes/howto.css +62 -64
  96. package/styles/runes/itinerary.css +133 -134
  97. package/styles/runes/juxtapose.css +83 -82
  98. package/styles/runes/lore.css +32 -34
  99. package/styles/runes/map.css +106 -99
  100. package/styles/runes/mediatext.css +30 -27
  101. package/styles/runes/milestone.css +98 -97
  102. package/styles/runes/mockup.css +338 -335
  103. package/styles/runes/nav.css +465 -450
  104. package/styles/runes/organization.css +23 -20
  105. package/styles/runes/page-section.css +14 -15
  106. package/styles/runes/pagination.css +45 -44
  107. package/styles/runes/palette.css +78 -80
  108. package/styles/runes/placeholder.css +8 -9
  109. package/styles/runes/plan-history.css +160 -161
  110. package/styles/runes/plan-progress.css +15 -16
  111. package/styles/runes/plan-ref.css +32 -23
  112. package/styles/runes/playlist.css +106 -107
  113. package/styles/runes/plot.css +92 -91
  114. package/styles/runes/preview.css +152 -149
  115. package/styles/runes/pricing.css +133 -123
  116. package/styles/runes/progress.css +32 -27
  117. package/styles/runes/pullquote.css +89 -90
  118. package/styles/runes/realm.css +47 -48
  119. package/styles/runes/recipe.css +112 -114
  120. package/styles/runes/relationships.css +77 -76
  121. package/styles/runes/reveal.css +90 -79
  122. package/styles/runes/sandbox.css +59 -60
  123. package/styles/runes/section.css +57 -50
  124. package/styles/runes/showcase.css +35 -16
  125. package/styles/runes/sidenote.css +30 -27
  126. package/styles/runes/snippet.css +8 -9
  127. package/styles/runes/spacing.css +86 -88
  128. package/styles/runes/spec.css +24 -25
  129. package/styles/runes/steps.css +89 -80
  130. package/styles/runes/storyboard.css +46 -45
  131. package/styles/runes/swatch.css +22 -23
  132. package/styles/runes/symbol.css +117 -118
  133. package/styles/runes/tabs.css +88 -79
  134. package/styles/runes/testimonial.css +43 -44
  135. package/styles/runes/textblock.css +32 -28
  136. package/styles/runes/timeline.css +63 -64
  137. package/styles/runes/tint.css +214 -215
  138. package/styles/runes/toc.css +40 -41
  139. package/styles/runes/track.css +89 -90
  140. package/styles/runes/typography.css +89 -91
  141. package/styles/runes/work.css +47 -36
  142. package/styles/runes/xref.css +21 -22
@@ -1,184 +1,185 @@
1
1
  @layer skin {
2
- /* Default layout */
3
- .rf-header {
4
- background: var(--rf-color-bg);
5
- border-bottom: 1px solid var(--rf-color-border);
6
- }
7
- .rf-header__inner {
8
- gap: 1rem;
9
- padding: 0.625rem 1.5rem;
10
- }
11
- .rf-header p {
12
- margin: 0;
13
- line-height: 1;
14
- }
15
- .rf-header h1, .rf-header h2, .rf-header h3 {
16
- margin: 0;
17
- font-size: var(--rf-text-xl);
18
- font-weight: var(--rf-weight-semibold);
19
- letter-spacing: var(--rf-tracking-tight);
20
- line-height: 1;
21
- }
22
- .rf-header a {
23
- color: inherit;
24
- text-decoration: none;
25
- }
26
- .rf-header a:hover {
27
- text-decoration: none;
28
- }
29
- .rf-header p:first-child a {
30
- gap: 0.5rem;
31
- font-weight: var(--rf-weight-semibold);
32
- font-size: var(--rf-text-xl);
33
- letter-spacing: var(--rf-tracking-tight);
34
- }
35
- .rf-header p:first-child a > .rf-icon {
36
- vertical-align: middle;
37
- color: currentColor;
38
- }
39
- .rf-header__inner p ~ p {
40
- font-size: var(--rf-text-sm);
41
- }
42
- .rf-header__inner p ~ p a {
43
- margin-left: 1.5rem;
44
- color: var(--rf-color-muted);
45
- }
46
- .rf-header__inner p ~ p a:hover {
47
- color: var(--rf-color-text);
48
- }
49
- .rf-header__inner p ~ p a svg {
50
- vertical-align: -0.15em;
51
- }
52
- .rf-page-content {
53
- --rf-content-max: 80rem;
54
- --rf-content-gutter: 1.5rem;
2
+ /* Default layout */
3
+ .rf-header {
4
+ background: var(--rf-color-bg);
5
+ border-bottom: 1px solid var(--rf-color-border);
6
+ }
7
+ .rf-header__inner {
8
+ gap: 1rem;
9
+ padding: 0.625rem 1.5rem;
10
+ }
11
+ .rf-header p {
12
+ margin: 0;
13
+ line-height: 1;
14
+ }
15
+ .rf-header h1,
16
+ .rf-header h2,
17
+ .rf-header h3 {
18
+ margin: 0;
19
+ font-size: var(--rf-text-xl);
20
+ font-weight: var(--rf-weight-semibold);
21
+ letter-spacing: var(--rf-tracking-tight);
22
+ line-height: 1;
23
+ }
24
+ .rf-header a {
25
+ color: inherit;
26
+ text-decoration: none;
27
+ }
28
+ .rf-header a:hover {
29
+ text-decoration: none;
30
+ }
31
+ .rf-header p:first-child a {
32
+ gap: 0.5rem;
33
+ font-weight: var(--rf-weight-semibold);
34
+ font-size: var(--rf-text-xl);
35
+ letter-spacing: var(--rf-tracking-tight);
36
+ }
37
+ .rf-header p:first-child a > .rf-icon {
38
+ vertical-align: middle;
39
+ color: currentColor;
40
+ }
41
+ .rf-header__inner p ~ p {
42
+ font-size: var(--rf-text-sm);
43
+ }
44
+ .rf-header__inner p ~ p a {
45
+ margin-left: 1.5rem;
46
+ color: var(--rf-color-muted);
47
+ }
48
+ .rf-header__inner p ~ p a:hover {
49
+ color: var(--rf-color-text);
50
+ }
51
+ .rf-header__inner p ~ p a svg {
52
+ vertical-align: -0.15em;
53
+ }
54
+ .rf-page-content {
55
+ --rf-content-max: 80rem;
56
+ --rf-content-gutter: 1.5rem;
55
57
 
56
- padding-top: 2.5rem;
57
- padding-bottom: 4rem;
58
- }
59
- .rf-page-content > article > [data-width="full"] {
60
- padding-inline: max(
61
- var(--rf-content-gutter, 1.5rem),
62
- calc((100% - var(--rf-content-max, 80rem)) / 2)
63
- );
64
- }
65
- /* Page sections (data-content-measure="anchored") keep their content at the
58
+ padding-top: 2.5rem;
59
+ padding-bottom: 4rem;
60
+ }
61
+ .rf-page-content > article > [data-width="full"] {
62
+ padding-inline: max(
63
+ var(--rf-content-gutter, 1.5rem),
64
+ calc((100% - var(--rf-content-max, 80rem)) / 2)
65
+ );
66
+ }
67
+ /* Page sections (data-content-measure="anchored") keep their content at the
66
68
  * text measure when bled to the wide track — only the surface/background
67
69
  * widens, matching how `full` reads as a band. The absolutely-positioned bg
68
70
  * fills the padded box, so the inner padding restores content without pulling
69
71
  * the bleed in. Runes without the flag fill the wide track (card breakout). */
70
- .rf-page-content > article > [data-content-measure="anchored"][data-width="wide"] {
71
- padding-inline: max(
72
- var(--rf-content-gutter, 1.5rem),
73
- calc((100% - var(--rf-content-max, 80rem)) / 2)
74
- );
75
- }
76
- /* Tinted sections also break out to full width */
77
- .rf-page-content > article > :is([data-tint], [data-color-scheme]):not([data-width]) {
78
- padding-inline: max(
79
- var(--rf-content-gutter, 1.5rem),
80
- calc((100% - var(--rf-content-max, 80rem)) / 2)
81
- );
82
- }
72
+ .rf-page-content > article > [data-content-measure="anchored"][data-width="wide"] {
73
+ padding-inline: max(
74
+ var(--rf-content-gutter, 1.5rem),
75
+ calc((100% - var(--rf-content-max, 80rem)) / 2)
76
+ );
77
+ }
78
+ /* Tinted sections also break out to full width */
79
+ .rf-page-content > article > :is([data-tint], [data-color-scheme]):not([data-width]) {
80
+ padding-inline: max(
81
+ var(--rf-content-gutter, 1.5rem),
82
+ calc((100% - var(--rf-content-max, 80rem)) / 2)
83
+ );
84
+ }
83
85
 
84
- /* Section spacing — vertical rhythm around block runes.
86
+ /* Section spacing — vertical rhythm around block runes.
85
87
  * Rune blocks (elements with data-rune) get section-level margins.
86
88
  * Prose elements (p, h2, pre, table, etc.) keep their natural flow
87
89
  * spacing from global.css — only gaining section margins when
88
90
  * immediately adjacent to a rune block. */
89
- .rf-page-content > article > * + [data-rune] {
90
- margin-top: var(--rf-spacing-section, 4rem);
91
- margin-bottom: var(--rf-spacing-section, 4rem);
92
- }
93
- /* Prose after a rune block: section gap above only.
91
+ .rf-page-content > article > * + [data-rune] {
92
+ margin-top: var(--rf-spacing-section, 4rem);
93
+ margin-bottom: var(--rf-spacing-section, 4rem);
94
+ }
95
+ /* Prose after a rune block: section gap above only.
94
96
  * No margin-bottom so subsequent prose keeps natural flow spacing. */
95
- .rf-page-content > article > [data-rune] + :not([data-rune]) {
96
- margin-top: var(--rf-spacing-section, 4rem);
97
- }
98
- .rf-page-content > article > [data-spacing="flush"] {
99
- margin-top: 0;
100
- margin-bottom: 0;
101
- }
102
- .rf-page-content > article > [data-spacing="tight"] {
103
- margin-top: var(--rf-spacing-section-tight, 1.5rem);
104
- margin-bottom: var(--rf-spacing-section-tight, 1.5rem);
105
- }
106
- .rf-page-content > article > [data-spacing="loose"] {
107
- margin-top: var(--rf-spacing-section-loose, 8rem);
108
- margin-bottom: var(--rf-spacing-section-loose, 8rem);
109
- }
110
- .rf-page-content > article > [data-spacing="breathe"] {
111
- margin-top: var(--rf-spacing-section-breathe, 12rem);
112
- margin-bottom: var(--rf-spacing-section-breathe, 12rem);
113
- }
114
-
115
- /* Spacing on tinted/dark sections — use padding so space is inside the painted background */
116
- .rf-page-content > article > :is([data-color-scheme], [data-tint])[data-spacing="flush"] {
117
- margin-top: 0;
118
- margin-bottom: 0;
119
- padding-top: 0;
120
- padding-bottom: 0;
121
- }
122
- .rf-page-content > article > :is([data-color-scheme], [data-tint])[data-spacing="tight"] {
123
- margin-top: 0;
124
- margin-bottom: 0;
125
- padding-top: var(--rf-spacing-section-tight, 1.5rem);
126
- padding-bottom: var(--rf-spacing-section-tight, 1.5rem);
127
- }
128
- .rf-page-content > article > :is([data-color-scheme], [data-tint])[data-spacing="default"],
129
- .rf-page-content > article > :is([data-color-scheme], [data-tint]):not([data-spacing]) {
130
- margin-top: 0;
131
- margin-bottom: 0;
132
- padding-top: var(--rf-spacing-section, 4rem);
133
- padding-bottom: var(--rf-spacing-section, 4rem);
134
- }
135
- .rf-page-content > article > :is([data-color-scheme], [data-tint])[data-spacing="loose"] {
136
- margin-top: 0;
137
- margin-bottom: 0;
138
- padding-top: var(--rf-spacing-section-loose, 8rem);
139
- padding-bottom: var(--rf-spacing-section-loose, 8rem);
140
- }
141
- .rf-page-content > article > :is([data-color-scheme], [data-tint])[data-spacing="breathe"] {
142
- margin-top: 0;
143
- margin-bottom: 0;
144
- padding-top: var(--rf-spacing-section-breathe, 12rem);
145
- padding-bottom: var(--rf-spacing-section-breathe, 12rem);
146
- }
97
+ .rf-page-content > article > [data-rune] + :not([data-rune]) {
98
+ margin-top: var(--rf-spacing-section, 4rem);
99
+ }
100
+ .rf-page-content > article > [data-spacing="flush"] {
101
+ margin-top: 0;
102
+ margin-bottom: 0;
103
+ }
104
+ .rf-page-content > article > [data-spacing="tight"] {
105
+ margin-top: var(--rf-spacing-section-tight, 1.5rem);
106
+ margin-bottom: var(--rf-spacing-section-tight, 1.5rem);
107
+ }
108
+ .rf-page-content > article > [data-spacing="loose"] {
109
+ margin-top: var(--rf-spacing-section-loose, 8rem);
110
+ margin-bottom: var(--rf-spacing-section-loose, 8rem);
111
+ }
112
+ .rf-page-content > article > [data-spacing="breathe"] {
113
+ margin-top: var(--rf-spacing-section-breathe, 12rem);
114
+ margin-bottom: var(--rf-spacing-section-breathe, 12rem);
115
+ }
147
116
 
148
- /* Inset — horizontal padding within block runes */
149
- .rf-page-content > article > [data-inset="flush"] {
150
- padding-inline: 0;
151
- }
152
- .rf-page-content > article > [data-inset="tight"] {
153
- padding-inline: var(--rf-inset-tight, 1rem);
154
- }
155
- .rf-page-content > article > [data-inset="loose"] {
156
- padding-inline: var(--rf-inset-loose, 4rem);
157
- }
158
- .rf-page-content > article > [data-inset="breathe"] {
159
- padding-inline: var(--rf-inset-breathe, 8rem);
160
- }
117
+ /* Spacing on tinted/dark sections — use padding so space is inside the painted background */
118
+ .rf-page-content > article > :is([data-color-scheme], [data-tint])[data-spacing="flush"] {
119
+ margin-top: 0;
120
+ margin-bottom: 0;
121
+ padding-top: 0;
122
+ padding-bottom: 0;
123
+ }
124
+ .rf-page-content > article > :is([data-color-scheme], [data-tint])[data-spacing="tight"] {
125
+ margin-top: 0;
126
+ margin-bottom: 0;
127
+ padding-top: var(--rf-spacing-section-tight, 1.5rem);
128
+ padding-bottom: var(--rf-spacing-section-tight, 1.5rem);
129
+ }
130
+ .rf-page-content > article > :is([data-color-scheme], [data-tint])[data-spacing="default"],
131
+ .rf-page-content > article > :is([data-color-scheme], [data-tint]):not([data-spacing]) {
132
+ margin-top: 0;
133
+ margin-bottom: 0;
134
+ padding-top: var(--rf-spacing-section, 4rem);
135
+ padding-bottom: var(--rf-spacing-section, 4rem);
136
+ }
137
+ .rf-page-content > article > :is([data-color-scheme], [data-tint])[data-spacing="loose"] {
138
+ margin-top: 0;
139
+ margin-bottom: 0;
140
+ padding-top: var(--rf-spacing-section-loose, 8rem);
141
+ padding-bottom: var(--rf-spacing-section-loose, 8rem);
142
+ }
143
+ .rf-page-content > article > :is([data-color-scheme], [data-tint])[data-spacing="breathe"] {
144
+ margin-top: 0;
145
+ margin-bottom: 0;
146
+ padding-top: var(--rf-spacing-section-breathe, 12rem);
147
+ padding-bottom: var(--rf-spacing-section-breathe, 12rem);
148
+ }
161
149
 
162
- /* Collapse top/bottom padding when a full-bleed section is first/last */
163
- .rf-page-content:has(> article > :first-child:is([data-width="full"], [data-tint])) {
164
- padding-top: 0;
165
- }
166
- .rf-page-content:has(> article > :last-child:is([data-width="full"], [data-tint])) {
167
- padding-bottom: 0;
168
- }
150
+ /* Inset — horizontal padding within block runes */
151
+ .rf-page-content > article > [data-inset="flush"] {
152
+ padding-inline: 0;
153
+ }
154
+ .rf-page-content > article > [data-inset="tight"] {
155
+ padding-inline: var(--rf-inset-tight, 1rem);
156
+ }
157
+ .rf-page-content > article > [data-inset="loose"] {
158
+ padding-inline: var(--rf-inset-loose, 4rem);
159
+ }
160
+ .rf-page-content > article > [data-inset="breathe"] {
161
+ padding-inline: var(--rf-inset-breathe, 8rem);
162
+ }
169
163
 
170
- /* Site footer */
171
- .rf-footer {
172
- padding: 2.5rem 1.5rem 2rem;
173
- border-top: 1px solid var(--rf-color-border);
174
- background: var(--rf-color-bg);
175
- color: var(--rf-color-muted);
176
- font-size: var(--rf-text-sm);
177
- }
178
- .rf-footer p {
179
- margin: 1.5rem 0 0;
180
- font-size: var(--rf-text-xs);
181
- color: var(--rf-color-muted);
182
- }
164
+ /* Collapse top/bottom padding when a full-bleed section is first/last */
165
+ .rf-page-content:has(> article > :first-child:is([data-width="full"], [data-tint])) {
166
+ padding-top: 0;
167
+ }
168
+ .rf-page-content:has(> article > :last-child:is([data-width="full"], [data-tint])) {
169
+ padding-bottom: 0;
170
+ }
183
171
 
172
+ /* Site footer */
173
+ .rf-footer {
174
+ padding: 2.5rem 1.5rem 2rem;
175
+ border-top: 1px solid var(--rf-color-border);
176
+ background: var(--rf-color-bg);
177
+ color: var(--rf-color-muted);
178
+ font-size: var(--rf-text-sm);
179
+ }
180
+ .rf-footer p {
181
+ margin: 1.5rem 0 0;
182
+ font-size: var(--rf-text-xs);
183
+ color: var(--rf-color-muted);
184
+ }
184
185
  }
@@ -1,140 +1,139 @@
1
1
  @layer skin {
2
- /* Docs layout */
2
+ /* Docs layout */
3
3
 
4
- /* ---- Fixed header ---- */
5
- .rf-docs-header {
6
- background: var(--rf-color-bg, #fff);
7
- border-bottom: 1px solid var(--rf-color-border);
8
- }
9
- .rf-docs-header__inner {
10
- gap: 1rem;
11
- padding: 0.625rem 1.5rem;
12
- }
13
- .rf-docs-header p {
14
- margin: 0;
15
- line-height: 1;
16
- }
17
- .rf-docs-header a {
18
- color: inherit;
19
- text-decoration: none;
20
- }
21
- .rf-docs-header a:hover {
22
- text-decoration: none;
23
- }
24
- .rf-docs-header p:first-child a {
25
- gap: 0.5rem;
26
- font-weight: var(--rf-weight-semibold);
27
- font-size: var(--rf-text-xl);
28
- letter-spacing: var(--rf-tracking-tight);
29
- }
30
- .rf-docs-header p:first-child a > .rf-icon {
31
- vertical-align: middle;
32
- color: currentColor;
33
- }
34
- .rf-docs-header__inner p ~ p {
35
- font-size: var(--rf-text-sm);
36
- }
37
- .rf-docs-header__inner p ~ p a {
38
- margin-left: 1.5rem;
39
- color: var(--rf-color-muted);
40
- }
41
- .rf-docs-header__inner p ~ p a:hover {
42
- color: var(--rf-color-text);
43
- }
44
- .rf-docs-header__inner p ~ p a svg {
45
- vertical-align: -0.15em;
46
- }
4
+ /* ---- Fixed header ---- */
5
+ .rf-docs-header {
6
+ background: var(--rf-color-bg, #fff);
7
+ border-bottom: 1px solid var(--rf-color-border);
8
+ }
9
+ .rf-docs-header__inner {
10
+ gap: 1rem;
11
+ padding: 0.625rem 1.5rem;
12
+ }
13
+ .rf-docs-header p {
14
+ margin: 0;
15
+ line-height: 1;
16
+ }
17
+ .rf-docs-header a {
18
+ color: inherit;
19
+ text-decoration: none;
20
+ }
21
+ .rf-docs-header a:hover {
22
+ text-decoration: none;
23
+ }
24
+ .rf-docs-header p:first-child a {
25
+ gap: 0.5rem;
26
+ font-weight: var(--rf-weight-semibold);
27
+ font-size: var(--rf-text-xl);
28
+ letter-spacing: var(--rf-tracking-tight);
29
+ }
30
+ .rf-docs-header p:first-child a > .rf-icon {
31
+ vertical-align: middle;
32
+ color: currentColor;
33
+ }
34
+ .rf-docs-header__inner p ~ p {
35
+ font-size: var(--rf-text-sm);
36
+ }
37
+ .rf-docs-header__inner p ~ p a {
38
+ margin-left: 1.5rem;
39
+ color: var(--rf-color-muted);
40
+ }
41
+ .rf-docs-header__inner p ~ p a:hover {
42
+ color: var(--rf-color-text);
43
+ }
44
+ .rf-docs-header__inner p ~ p a svg {
45
+ vertical-align: -0.15em;
46
+ }
47
47
 
48
- /* ---- Sticky sidebar ---- */
49
- .rf-docs-sidebar {
50
- padding: 1.5rem;
51
- border-right: 1px solid var(--rf-color-border);
52
- background: var(--rf-color-bg, #fff);
53
- }
54
- .rf-docs-sidebar::-webkit-scrollbar {
55
- width: 0;
56
- }
48
+ /* ---- Sticky sidebar ---- */
49
+ .rf-docs-sidebar {
50
+ padding: 1.5rem;
51
+ border-right: 1px solid var(--rf-color-border);
52
+ background: var(--rf-color-bg, #fff);
53
+ }
54
+ .rf-docs-sidebar::-webkit-scrollbar {
55
+ width: 0;
56
+ }
57
57
 
58
- /* ---- Content area ---- */
59
- .rf-docs-content {
60
- padding-top: 4.75rem;
61
- padding-bottom: 4rem;
62
- }
63
- .rf-docs-content__inner {
64
- --rf-content-padding: 2.5rem;
65
- }
66
- .rf-docs-content__inner--has-toc {
67
- gap: 6rem;
68
- }
58
+ /* ---- Content area ---- */
59
+ .rf-docs-content {
60
+ padding-top: 4.75rem;
61
+ padding-bottom: 4rem;
62
+ }
63
+ .rf-docs-content__inner {
64
+ --rf-content-padding: 2.5rem;
65
+ }
66
+ .rf-docs-content__inner--has-toc {
67
+ gap: 6rem;
68
+ }
69
69
 
70
- /* Pagination wrapper sits outside the article grid, so it gets its own
70
+ /* Pagination wrapper sits outside the article grid, so it gets its own
71
71
  horizontal padding so prev/next don't run to the viewport edges on
72
72
  narrow viewports. Uses the same `--rf-content-padding` token the
73
73
  article grid uses for its gutter columns. */
74
- .rf-docs-content__pagination {
75
- padding-inline: var(--rf-content-padding, 2.5rem);
76
- }
74
+ .rf-docs-content__pagination {
75
+ padding-inline: var(--rf-content-padding, 2.5rem);
76
+ }
77
77
 
78
- /* ---- "On this page" sidebar ---- */
79
- .rf-docs-toc {
80
- padding: 0 1.25rem;
81
- }
82
- .rf-docs-toc::-webkit-scrollbar {
83
- width: 0;
84
- }
78
+ /* ---- "On this page" sidebar ---- */
79
+ .rf-docs-toc {
80
+ padding: 0 1.25rem;
81
+ }
82
+ .rf-docs-toc::-webkit-scrollbar {
83
+ width: 0;
84
+ }
85
85
 
86
- /* ---- Mobile toolbar (hidden on desktop) ---- */
87
- .rf-docs-toolbar {
88
- gap: 0.75rem;
89
- padding: 0.625rem 1rem;
90
- border-bottom: 1px solid var(--rf-color-border);
91
- background: var(--rf-color-bg, #fff);
92
- }
93
- .rf-docs-toolbar__hamburger {
94
- background: none;
95
- border: none;
96
- padding: 0.25rem;
97
- cursor: pointer;
98
- color: var(--rf-color-muted);
99
- line-height: 0;
100
- }
101
- .rf-docs-toolbar__hamburger:hover {
102
- color: var(--rf-color-text);
103
- }
104
- .rf-docs-toolbar__breadcrumb {
105
- font-size: var(--rf-text-xs);
106
- color: var(--rf-color-muted);
107
- /* `flex: 1 1 0` (basis 0, not auto) so the breadcrumb shrinks against
86
+ /* ---- Mobile toolbar (hidden on desktop) ---- */
87
+ .rf-docs-toolbar {
88
+ gap: 0.75rem;
89
+ padding: 0.625rem 1rem;
90
+ border-bottom: 1px solid var(--rf-color-border);
91
+ background: var(--rf-color-bg, #fff);
92
+ }
93
+ .rf-docs-toolbar__hamburger {
94
+ background: none;
95
+ border: none;
96
+ padding: 0.25rem;
97
+ cursor: pointer;
98
+ color: var(--rf-color-muted);
99
+ line-height: 0;
100
+ }
101
+ .rf-docs-toolbar__hamburger:hover {
102
+ color: var(--rf-color-text);
103
+ }
104
+ .rf-docs-toolbar__breadcrumb {
105
+ font-size: var(--rf-text-xs);
106
+ color: var(--rf-color-muted);
107
+ /* `flex: 1 1 0` (basis 0, not auto) so the breadcrumb shrinks against
108
108
  * the available space rather than starting at its full content width —
109
109
  * combined with `min-width: 0` this is what triggers ellipsis on long
110
110
  * titles. Without basis 0 a long page title overflows the toolbar and
111
111
  * forces horizontal page scroll on narrow viewports. */
112
- text-overflow: ellipsis;
113
- white-space: nowrap;
114
- }
115
- .rf-docs-breadcrumb-category {
116
- color: var(--rf-color-muted);
117
- }
118
- .rf-docs-breadcrumb-sep {
119
- margin: 0 0.35rem;
120
- color: var(--rf-color-border);
121
- }
122
- .rf-docs-breadcrumb-page {
123
- color: var(--rf-color-text);
124
- font-weight: var(--rf-weight-medium);
125
- }
126
-
127
- /* ---- Hide TOC on medium screens ---- */
128
-
129
- /* ---- Mobile overrides ---- */
130
- @media (max-width: 768px) {
131
- .rf-docs-content {
132
- padding-top: 2rem;
112
+ text-overflow: ellipsis;
113
+ white-space: nowrap;
133
114
  }
134
- .rf-docs-content__inner {
135
- --rf-content-padding: 1.5rem;
136
- --rf-docs-wide-inset: 1.5rem;
115
+ .rf-docs-breadcrumb-category {
116
+ color: var(--rf-color-muted);
137
117
  }
138
- }
118
+ .rf-docs-breadcrumb-sep {
119
+ margin: 0 0.35rem;
120
+ color: var(--rf-color-border);
121
+ }
122
+ .rf-docs-breadcrumb-page {
123
+ color: var(--rf-color-text);
124
+ font-weight: var(--rf-weight-medium);
125
+ }
126
+
127
+ /* ---- Hide TOC on medium screens ---- */
139
128
 
129
+ /* ---- Mobile overrides ---- */
130
+ @media (max-width: 768px) {
131
+ .rf-docs-content {
132
+ padding-top: 2rem;
133
+ }
134
+ .rf-docs-content__inner {
135
+ --rf-content-padding: 1.5rem;
136
+ --rf-docs-wide-inset: 1.5rem;
137
+ }
138
+ }
140
139
  }