@refrakt-md/lumina 0.8.5 → 0.9.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 (80) hide show
  1. package/base.css +10 -0
  2. package/contracts/structures.json +92 -47
  3. package/index.css +20 -0
  4. package/package.json +6 -6
  5. package/styles/dimensions/checklist.css +81 -0
  6. package/styles/dimensions/density.css +51 -0
  7. package/styles/dimensions/media.css +62 -0
  8. package/styles/dimensions/metadata.css +161 -0
  9. package/styles/dimensions/sections.css +77 -0
  10. package/styles/dimensions/sequence.css +129 -0
  11. package/styles/dimensions/state.css +57 -0
  12. package/styles/dimensions/surfaces.css +88 -0
  13. package/styles/global.css +1 -1
  14. package/styles/layouts/docs.css +28 -2
  15. package/styles/layouts/split.css +159 -3
  16. package/styles/runes/accordion.css +1 -2
  17. package/styles/runes/annotate.css +0 -3
  18. package/styles/runes/api.css +0 -4
  19. package/styles/runes/audio.css +0 -3
  20. package/styles/runes/backlog.css +61 -0
  21. package/styles/runes/bento.css +4 -5
  22. package/styles/runes/blog.css +3 -7
  23. package/styles/runes/budget.css +3 -19
  24. package/styles/runes/bug.css +25 -0
  25. package/styles/runes/cast.css +0 -3
  26. package/styles/runes/character.css +5 -43
  27. package/styles/runes/chart.css +0 -2
  28. package/styles/runes/codegroup.css +2 -2
  29. package/styles/runes/compare.css +0 -1
  30. package/styles/runes/conversation.css +0 -1
  31. package/styles/runes/cta.css +6 -3
  32. package/styles/runes/datatable.css +0 -3
  33. package/styles/runes/decision-log.css +46 -0
  34. package/styles/runes/decision.css +21 -0
  35. package/styles/runes/design-context.css +0 -1
  36. package/styles/runes/details.css +0 -1
  37. package/styles/runes/diagram.css +0 -1
  38. package/styles/runes/diff.css +0 -1
  39. package/styles/runes/embed.css +0 -1
  40. package/styles/runes/event.css +0 -3
  41. package/styles/runes/faction.css +79 -48
  42. package/styles/runes/feature.css +10 -10
  43. package/styles/runes/figure.css +0 -3
  44. package/styles/runes/form.css +0 -1
  45. package/styles/runes/gallery.css +0 -1
  46. package/styles/runes/grid.css +0 -3
  47. package/styles/runes/hero.css +13 -4
  48. package/styles/runes/hint.css +0 -7
  49. package/styles/runes/howto.css +7 -18
  50. package/styles/runes/itinerary.css +0 -2
  51. package/styles/runes/juxtapose.css +0 -4
  52. package/styles/runes/lore.css +0 -20
  53. package/styles/runes/mediatext.css +0 -3
  54. package/styles/runes/milestone.css +106 -0
  55. package/styles/runes/mockup.css +0 -1
  56. package/styles/runes/organization.css +0 -3
  57. package/styles/runes/palette.css +0 -3
  58. package/styles/runes/plan-activity.css +87 -0
  59. package/styles/runes/plan-progress.css +69 -0
  60. package/styles/runes/playlist.css +101 -83
  61. package/styles/runes/plot.css +0 -23
  62. package/styles/runes/preview.css +9 -17
  63. package/styles/runes/pricing.css +4 -1
  64. package/styles/runes/realm.css +80 -46
  65. package/styles/runes/recipe.css +7 -89
  66. package/styles/runes/reveal.css +1 -4
  67. package/styles/runes/sandbox.css +0 -1
  68. package/styles/runes/spacing.css +0 -3
  69. package/styles/runes/spec.css +20 -0
  70. package/styles/runes/steps.css +4 -2
  71. package/styles/runes/storyboard.css +0 -3
  72. package/styles/runes/symbol.css +0 -39
  73. package/styles/runes/tabs.css +1 -4
  74. package/styles/runes/testimonial.css +0 -2
  75. package/styles/runes/textblock.css +0 -3
  76. package/styles/runes/toc.css +0 -1
  77. package/styles/runes/track.css +16 -5
  78. package/styles/runes/typography.css +0 -3
  79. package/styles/runes/work.css +35 -0
  80. package/styles/runes/xref.css +12 -0
@@ -0,0 +1,161 @@
1
+ /* ─── Metadata Dimensions ──────────────────────────────────────────────
2
+ * Generic styling for metadata badges across all runes.
3
+ * Works via data-meta-type, data-meta-rank, and data-meta-sentiment
4
+ * attributes emitted by the identity transform engine.
5
+ *
6
+ * Composability: --meta-color cascades from sentiment → type rules.
7
+ * --meta-font-size cascades from rank → type rules.
8
+ * ────────────────────────────────────────────────────────────────────── */
9
+
10
+ /* ─── Rank ─────────────────────────────────────────────────────────── */
11
+
12
+ [data-meta-rank="primary"] {
13
+ --meta-font-size: 0.8125rem;
14
+ }
15
+
16
+ [data-meta-rank="secondary"] {
17
+ --meta-font-size: 0.75rem;
18
+ opacity: 0.8;
19
+ }
20
+
21
+ /* ─── Sentiment ────────────────────────────────────────────────────── */
22
+
23
+ [data-meta-sentiment="positive"] { --meta-color: var(--rf-color-success, #10b981); }
24
+ [data-meta-sentiment="negative"] { --meta-color: var(--rf-color-danger, #ef4444); }
25
+ [data-meta-sentiment="caution"] { --meta-color: var(--rf-color-warning, #f59e0b); }
26
+ [data-meta-sentiment="neutral"] { --meta-color: var(--rf-color-muted, #64748b); }
27
+
28
+ /* Colored dot for any item with a sentiment */
29
+ [data-meta-sentiment]::before {
30
+ content: '';
31
+ width: 0.5rem;
32
+ height: 0.5rem;
33
+ border-radius: 50%;
34
+ background: var(--meta-color, var(--rf-color-muted));
35
+ flex-shrink: 0;
36
+ }
37
+
38
+ /* ─── Meta Types ───────────────────────────────────────────────────── */
39
+
40
+ /* Status: bordered pill */
41
+ [data-meta-type="status"] {
42
+ display: inline-flex;
43
+ align-items: center;
44
+ gap: 0.375rem;
45
+ padding: 0.5em 1.0em;
46
+ border: 1px solid var(--rf-color-border);
47
+ border-radius: 999px;
48
+ font-size: var(--meta-font-size, 0.8125rem);
49
+ font-weight: 500;
50
+ color: var(--rf-color-muted);
51
+ }
52
+
53
+ /* Category: bordered pill */
54
+ [data-meta-type="category"] {
55
+ display: inline-flex;
56
+ align-items: center;
57
+ gap: 0.375rem;
58
+ padding: 0.5em 1.0em;
59
+ border: 1px solid var(--rf-color-border);
60
+ border-radius: 999px;
61
+ font-size: var(--meta-font-size, 0.8125rem);
62
+ font-weight: 500;
63
+ color: var(--rf-color-muted);
64
+ }
65
+
66
+ /* Quantity: bordered pill with tabular numbers */
67
+ [data-meta-type="quantity"] {
68
+ display: inline-flex;
69
+ align-items: center;
70
+ padding: 0.5em 1.0em;
71
+ border: 1px solid var(--rf-color-border);
72
+ border-radius: 999px;
73
+ font-variant-numeric: tabular-nums;
74
+ font-weight: 600;
75
+ font-size: var(--meta-font-size, 0.8125rem);
76
+ color: var(--rf-color-muted);
77
+ }
78
+
79
+ /* Temporal: bordered pill with time association */
80
+ [data-meta-type="temporal"] {
81
+ display: inline-flex;
82
+ align-items: center;
83
+ gap: 0.25rem;
84
+ padding: 0.5em 1.0em;
85
+ border: 1px solid var(--rf-color-border);
86
+ border-radius: 999px;
87
+ font-size: var(--meta-font-size, 0.8125rem);
88
+ font-variant-numeric: tabular-nums;
89
+ color: var(--rf-color-muted);
90
+ }
91
+
92
+ /* Tag: bordered pill */
93
+ [data-meta-type="tag"] {
94
+ display: inline-flex;
95
+ align-items: center;
96
+ padding: 0.5em 1.0em;
97
+ border: 1px solid var(--rf-color-border);
98
+ border-radius: 999px;
99
+ font-size: calc(var(--meta-font-size, 0.8125rem) * 0.9);
100
+ color: var(--rf-color-muted);
101
+ }
102
+
103
+ /* ID: bordered pill, monospace */
104
+ [data-meta-type="id"] {
105
+ display: inline-flex;
106
+ align-items: center;
107
+ padding: 0.5em 1.0em;
108
+ border: 1px solid var(--rf-color-border);
109
+ border-radius: 999px;
110
+ font-family: var(--rf-font-mono, monospace);
111
+ font-size: var(--meta-font-size, 0.8125rem);
112
+ font-weight: 500;
113
+ color: var(--rf-color-muted);
114
+ }
115
+
116
+ /* ─── Labels ──────────────────────────────────────────────────────── */
117
+
118
+ /* Label element within metadata items — thin, muted style.
119
+ * Themes can override or hide entirely: [data-meta-label] { display: none } */
120
+ [data-meta-label] {
121
+ font-weight: 400;
122
+ opacity: 0.65;
123
+ }
124
+
125
+ /* Visually hidden labels — accessible to screen readers but not visible.
126
+ * Themes can restore with: [data-meta-label-hidden] { position: static; ... } */
127
+ [data-meta-label-hidden] {
128
+ position: absolute;
129
+ width: 1px;
130
+ height: 1px;
131
+ padding: 0;
132
+ margin: -1px;
133
+ overflow: hidden;
134
+ clip: rect(0, 0, 0, 0);
135
+ white-space: nowrap;
136
+ border: 0;
137
+ }
138
+
139
+ /* ─── Mobile: compact badges ─────────────────────────────────────────── */
140
+
141
+ @media (max-width: 48rem) {
142
+ [data-meta-type="status"],
143
+ [data-meta-type="category"],
144
+ [data-meta-type="quantity"],
145
+ [data-meta-type="temporal"],
146
+ [data-meta-type="tag"],
147
+ [data-meta-type="id"] {
148
+ padding: 0.25em 0.625em;
149
+ font-size: calc(var(--meta-font-size, 0.8125rem) * 0.9);
150
+ }
151
+
152
+ [data-meta-sentiment]::before {
153
+ width: 0.375rem;
154
+ height: 0.375rem;
155
+ }
156
+
157
+ [data-section="header"] {
158
+ gap: 0.375rem;
159
+ margin-bottom: 1.5rem;
160
+ }
161
+ }
@@ -0,0 +1,77 @@
1
+ /* ─── Section Anatomy Dimension ─────────────────────────────────────────
2
+ * Generic layout and typography for the 6 standard section roles.
3
+ * Every rune that declares `sections` in its config gets these for free.
4
+ *
5
+ * Includes density × section interactions (title scaling, hiding).
6
+ * ────────────────────────────────────────────────────────────────────── */
7
+
8
+ /* ─── Header: chrome metadata row (badges, status, icons) ────────── */
9
+
10
+ [data-section="header"] {
11
+ display: flex;
12
+ flex-wrap: wrap;
13
+ align-items: center;
14
+ gap: 0.5rem;
15
+ margin-bottom: 3rem;
16
+ }
17
+
18
+ /* ─── Preamble: intro section (eyebrow, headline, blurb) ─────────── */
19
+
20
+ [data-section="preamble"] {
21
+ display: flex;
22
+ flex-direction: column;
23
+ gap: 0.25rem;
24
+ }
25
+
26
+ /* ─── Title: primary heading ──────────────────────────────────────── */
27
+
28
+ [data-section="title"] {
29
+ font-family: var(--rf-font-sans);
30
+ font-size: 1.5rem;
31
+ font-weight: 700;
32
+ line-height: 1.2;
33
+ color: var(--rf-color-text);
34
+ margin: 0;
35
+ }
36
+
37
+ /* Scale title with density */
38
+ [data-density="compact"] [data-section="title"] {
39
+ font-size: 2.125rem;
40
+ }
41
+
42
+ [data-density="minimal"] [data-section="title"] {
43
+ font-size: 1rem;
44
+ }
45
+
46
+ /* ─── Description: secondary text ─────────────────────────────────── */
47
+
48
+ [data-section="description"] {
49
+ font-size: 1rem;
50
+ line-height: 1.5;
51
+ color: var(--rf-color-muted);
52
+ margin: var(--rf-spacing-xs) 0 var(--rf-spacing-md);
53
+ }
54
+
55
+ /* ─── Body: main content ──────────────────────────────────────────── */
56
+
57
+ [data-section="body"] {
58
+ line-height: 1.6;
59
+ color: var(--rf-color-text);
60
+ }
61
+
62
+ /* ─── Footer: actions and links ───────────────────────────────────── */
63
+
64
+ [data-section="footer"] {
65
+ display: flex;
66
+ flex-wrap: wrap;
67
+ gap: var(--rf-spacing-sm);
68
+ margin-top: var(--rf-spacing-md);
69
+ padding-top: var(--rf-spacing-sm);
70
+ border-top: 1px solid var(--rf-color-border);
71
+ }
72
+
73
+ /* ─── Media: visual content ───────────────────────────────────────── */
74
+
75
+ [data-section="media"] {
76
+ margin: var(--rf-spacing-sm) 0;
77
+ }
@@ -0,0 +1,129 @@
1
+ /* === Sequential Items: universal ordered item styling === */
2
+
3
+ /* Numbered — counter circle to the left of each item */
4
+ [data-sequence="numbered"] {
5
+ counter-reset: sequence;
6
+ list-style: none;
7
+ padding-left: 0;
8
+ }
9
+
10
+ [data-sequence="numbered"] > li {
11
+ counter-increment: sequence;
12
+ position: relative;
13
+ padding-left: 2.25rem;
14
+ }
15
+
16
+ [data-sequence="numbered"] > li::before {
17
+ content: counter(sequence);
18
+ position: absolute;
19
+ left: 0;
20
+ top: 0.625rem;
21
+ width: 1.5rem;
22
+ height: 1.5rem;
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ font-size: 0.75rem;
27
+ font-weight: 700;
28
+ font-variant-numeric: tabular-nums;
29
+ color: var(--rf-color-primary);
30
+ background: var(--rf-color-surface-active);
31
+ border-radius: 50%;
32
+ }
33
+
34
+ [data-sequence="numbered"] > li + li {
35
+ border-top: 1px solid var(--rf-color-border);
36
+ }
37
+
38
+ /* Connected vertical — line with dots */
39
+ [data-sequence="connected"] {
40
+ list-style: none;
41
+ padding-left: 0;
42
+ }
43
+
44
+ [data-sequence="connected"] > li {
45
+ position: relative;
46
+ padding-left: 2rem;
47
+ padding-bottom: 2rem;
48
+ border-left: 2px solid var(--rf-color-border);
49
+ margin-left: 0.375rem;
50
+ }
51
+
52
+ [data-sequence="connected"] > li:last-child {
53
+ border-left-color: transparent;
54
+ padding-bottom: 0;
55
+ }
56
+
57
+ [data-sequence="connected"] > li::before {
58
+ content: '';
59
+ position: absolute;
60
+ left: -0.4375rem;
61
+ top: 0.25rem;
62
+ width: 0.75rem;
63
+ height: 0.75rem;
64
+ border-radius: 50%;
65
+ background: var(--rf-color-primary);
66
+ border: 2px solid var(--rf-color-background);
67
+ box-shadow: 0 0 0 2px var(--rf-color-primary);
68
+ }
69
+
70
+ /* Connected horizontal — line with dots */
71
+ [data-sequence="connected"][data-sequence-direction="horizontal"] {
72
+ display: flex;
73
+ gap: 2rem;
74
+ overflow-x: auto;
75
+ }
76
+
77
+ [data-sequence="connected"][data-sequence-direction="horizontal"] > li {
78
+ position: relative;
79
+ min-width: 12rem;
80
+ padding-top: 1.5rem;
81
+ padding-left: 0;
82
+ padding-bottom: 0;
83
+ border-left: none;
84
+ border-top: 2px solid var(--rf-color-border);
85
+ margin-left: 0;
86
+ }
87
+
88
+ [data-sequence="connected"][data-sequence-direction="horizontal"] > li:last-child {
89
+ border-top-color: var(--rf-color-border);
90
+ }
91
+
92
+ [data-sequence="connected"][data-sequence-direction="horizontal"] > li::before {
93
+ left: 0.5rem;
94
+ top: -0.4375rem;
95
+ }
96
+
97
+ /* Plain — no indicators, just ordered semantics */
98
+ [data-sequence="plain"] {
99
+ list-style: none;
100
+ padding-left: 0;
101
+ }
102
+
103
+ /* === Density interaction === */
104
+
105
+ /* Compact: smaller circles, tighter spacing */
106
+ [data-density="compact"] [data-sequence="numbered"] > li {
107
+ padding-left: 1.75rem;
108
+ }
109
+
110
+ [data-density="compact"] [data-sequence="numbered"] > li::before {
111
+ width: 1.25rem;
112
+ height: 1.25rem;
113
+ font-size: 0.625rem;
114
+ }
115
+
116
+ [data-density="compact"] [data-sequence="connected"] > li {
117
+ padding-bottom: 1rem;
118
+ }
119
+
120
+ /* Minimal: no indicators, collapsed list */
121
+ [data-density="minimal"] [data-sequence] > li::before {
122
+ display: none;
123
+ }
124
+
125
+ [data-density="minimal"] [data-sequence="connected"] > li {
126
+ border-left: none;
127
+ padding-left: 0;
128
+ margin-left: 0;
129
+ }
@@ -0,0 +1,57 @@
1
+ /* ─── Interactive State Dimension ───────────────────────────────────────
2
+ * Generic styling for interactive rune states: open/closed, active/inactive,
3
+ * selected, and disabled. Behaviours toggle data-state; themes read it here.
4
+ * ────────────────────────────────────────────────────────────────────── */
5
+
6
+ /* ─── Open/Closed: collapsible content ────────────────────────────── */
7
+
8
+ [data-state="closed"] > [class*="__body"],
9
+ [data-state="closed"] > [class*="__content"] {
10
+ display: none;
11
+ }
12
+
13
+ [data-state="open"] > [class*="__body"],
14
+ [data-state="open"] > [class*="__content"] {
15
+ display: block;
16
+ animation: rf-expand 0.2s ease-out;
17
+ }
18
+
19
+ @keyframes rf-expand {
20
+ from { opacity: 0; transform: translateY(-0.5rem); }
21
+ to { opacity: 1; transform: translateY(0); }
22
+ }
23
+
24
+ /* ─── Active/Inactive: selection indicators ───────────────────────── */
25
+
26
+ button[data-state="active"] {
27
+ border-bottom: 2px solid var(--rf-color-primary);
28
+ color: var(--rf-color-primary);
29
+ }
30
+
31
+ button[data-state="inactive"] {
32
+ border-bottom: 2px solid transparent;
33
+ color: var(--rf-color-muted);
34
+ }
35
+
36
+ /* Panels controlled by tab/toggle state */
37
+ [role="tabpanel"][data-state="inactive"] {
38
+ display: none;
39
+ }
40
+
41
+ [role="tabpanel"][data-state="active"] {
42
+ display: block;
43
+ }
44
+
45
+ /* ─── Selected: user selection highlight ──────────────────────────── */
46
+
47
+ [data-state="selected"] {
48
+ background: color-mix(in oklch, var(--rf-color-primary) 10%, transparent);
49
+ outline: 2px solid var(--rf-color-primary);
50
+ }
51
+
52
+ /* ─── Disabled: dimmed non-interactive ────────────────────────────── */
53
+
54
+ [data-state="disabled"] {
55
+ opacity: 0.4;
56
+ pointer-events: none;
57
+ }
@@ -0,0 +1,88 @@
1
+ /* ─── Surface Assignments ──────────────────────────────────────────────
2
+ * Groups runes into 4 surface types: card, inline, banner, inset.
3
+ * Each surface defines container treatment (background, padding, radius).
4
+ * Padding scales with density via --rune-padding custom property.
5
+ * ────────────────────────────────────────────────────────────────────── */
6
+
7
+ /* ─── Rune Spacing ────────────────────────────────────────────────── */
8
+ /* Only top-level runes get vertical margin; child runes (nav items,
9
+ accordion items, grid cells, etc.) inherit spacing from their parent. */
10
+
11
+ [data-rune]:not([data-rune] [data-rune]) {
12
+ margin: 1.5rem 0;
13
+ }
14
+
15
+ /* ─── Card: elevated container ────────────────────────────────────── */
16
+
17
+ .rf-recipe,
18
+ .rf-character,
19
+ .rf-testimonial,
20
+ .rf-event,
21
+ .rf-realm,
22
+ .rf-faction,
23
+ .rf-lore,
24
+ .rf-plot,
25
+ .rf-bond,
26
+ .rf-playlist,
27
+ .rf-track,
28
+ .rf-budget,
29
+ .rf-organization,
30
+ .rf-timeline,
31
+ .rf-swatch,
32
+ .rf-palette,
33
+ .rf-typography,
34
+ .rf-itinerary,
35
+ .rf-symbol,
36
+ .rf-changelog,
37
+ .rf-api,
38
+ .rf-howto {
39
+ background: var(--rf-color-surface);
40
+ border-radius: var(--rf-radius-md);
41
+ padding: var(--rune-padding, var(--rf-spacing-md));
42
+ }
43
+
44
+ /* ─── Inline: no visual boundary ──────────────────────────────────── */
45
+
46
+ .rf-hint,
47
+ .rf-details,
48
+ .rf-sidenote,
49
+ .rf-conversation,
50
+ .rf-annotate,
51
+ .rf-xref,
52
+ .rf-diff,
53
+ .rf-pullquote,
54
+ .rf-textblock,
55
+ .rf-nav,
56
+ .rf-breadcrumb,
57
+ .rf-toc,
58
+ .rf-datatable,
59
+ .rf-form {
60
+ padding: var(--rune-padding, var(--rf-spacing-sm)) 0;
61
+ }
62
+
63
+ /* ─── Banner: full-width strip ────────────────────────────────────── */
64
+
65
+ .rf-hero,
66
+ .rf-cta,
67
+ .rf-feature,
68
+ .rf-steps,
69
+ .rf-bento,
70
+ .rf-storyboard,
71
+ .rf-map {
72
+ padding: var(--rune-padding, var(--rf-spacing-xl)) 0;
73
+ }
74
+
75
+ /* ─── Inset: recessed container ───────────────────────────────────── */
76
+
77
+ .rf-codegroup,
78
+ .rf-mockup,
79
+ .rf-diagram,
80
+ .rf-chart,
81
+ .rf-embed,
82
+ .rf-gallery,
83
+ .rf-figure,
84
+ .rf-reveal {
85
+ background: var(--rf-color-surface);
86
+ border-radius: var(--rf-radius-md);
87
+ padding: var(--rune-padding, var(--rf-spacing-md));
88
+ }
package/styles/global.css CHANGED
@@ -28,7 +28,7 @@ h1, h2, h3, h4, h5, h6 {
28
28
  }
29
29
 
30
30
  h1 { font-size: 2rem; font-weight: 400; letter-spacing: -0.025em; }
31
- h2 { font-size: 2.5rem; font-weight: 400; }
31
+ h2 { font-size: 1.75rem; font-weight: 400; }
32
32
  h3 { font-size: 1.25rem; }
33
33
  h4 { font-size: 1.1rem; }
34
34
 
@@ -94,7 +94,6 @@
94
94
  .rf-docs-content__inner {
95
95
  max-width: 60rem;
96
96
  margin: 0 auto;
97
- padding: 0 2.5rem;
98
97
  --rf-content-padding: 2.5rem;
99
98
  }
100
99
  .rf-docs-content__inner--has-toc {
@@ -107,6 +106,33 @@
107
106
  min-width: 0;
108
107
  }
109
108
 
109
+ /* Width-variant grid — mirrors default layout's 5-track grid,
110
+ simplified to 3 tracks (no full breakout in docs context).
111
+ The wide inset tracks also serve as the content gutter. */
112
+ .rf-docs-content__body > div > article {
113
+ display: grid;
114
+ grid-template-columns:
115
+ [wide-start] minmax(var(--rf-content-padding, 2.5rem), var(--rf-docs-wide-inset, 3rem))
116
+ [content-start] minmax(0, 1fr)
117
+ [content-end] minmax(var(--rf-content-padding, 2.5rem), var(--rf-docs-wide-inset, 3rem))
118
+ [wide-end];
119
+ }
120
+ .rf-docs-content__body > div > article > * {
121
+ grid-column: content;
122
+ }
123
+ .rf-docs-content__body > div > article > [data-width="wide"],
124
+ .rf-docs-content__body > div > article > [data-width="full"] {
125
+ grid-column: wide;
126
+ }
127
+ .rf-docs-content__body > div > article > [data-width="compact"] {
128
+ max-width: var(--rf-width-compact, 30rem);
129
+ margin-inline: auto;
130
+ }
131
+ .rf-docs-content__body > div > article > [data-width="narrow"] {
132
+ max-width: var(--rf-width-narrow, 40rem);
133
+ margin-inline: auto;
134
+ }
135
+
110
136
  /* ---- "On this page" sidebar ---- */
111
137
  .rf-docs-toc {
112
138
  width: 220px;
@@ -209,7 +235,7 @@ html:has(.rf-docs-header) {
209
235
  margin-left: 0;
210
236
  }
211
237
  .rf-docs-content__inner {
212
- padding: 0 1.5rem;
213
238
  --rf-content-padding: 1.5rem;
239
+ --rf-docs-wide-inset: 1.5rem;
214
240
  }
215
241
  }