@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,36 +1,39 @@
1
1
  @layer skin {
2
- /* Conversation — skin. The column stack, bubble flex/width/side-alignment, and the
2
+ /* Conversation — skin. The column stack, bubble flex/width/side-alignment, and the
3
3
  * data-carrier hides live in @refrakt-md/skeleton (styles/runes/conversation.css). */
4
- .rf-conversation {
5
- gap: 1rem;
6
- max-width: 40rem;
7
- }
8
- .rf-conversation__messages {
9
- gap: 1rem;
10
- }
11
- .rf-conversation-message__speaker {
12
- font-size: var(--rf-text-xs);
13
- font-weight: var(--rf-weight-semibold);
14
- color: var(--rf-color-muted);
15
- margin-bottom: 0.25rem;
16
- padding: 0 0.75rem;
17
- }
18
- .rf-conversation-message__body {
19
- padding: 0.75rem 1rem;
20
- border-radius: 1rem;
21
- font-size: var(--rf-text);
22
- line-height: var(--rf-leading-normal);
23
- }
24
- .rf-conversation-message--left .rf-conversation-message__body {
25
- background: var(--rf-color-surface);
26
- border-bottom-left-radius: 0.25rem;
27
- }
28
- .rf-conversation-message--right .rf-conversation-message__body {
29
- background: var(--rf-color-primary);
30
- color: white;
31
- border-bottom-right-radius: 0.25rem;
32
- }
33
- .rf-conversation-message__body p { margin: 0; }
34
- .rf-conversation-message__body p + p { margin-top: 0.5rem; }
35
-
4
+ .rf-conversation {
5
+ gap: 1rem;
6
+ max-width: 40rem;
7
+ }
8
+ .rf-conversation__messages {
9
+ gap: 1rem;
10
+ }
11
+ .rf-conversation-message__speaker {
12
+ font-size: var(--rf-text-xs);
13
+ font-weight: var(--rf-weight-semibold);
14
+ color: var(--rf-color-muted);
15
+ margin-bottom: 0.25rem;
16
+ padding: 0 0.75rem;
17
+ }
18
+ .rf-conversation-message__body {
19
+ padding: 0.75rem 1rem;
20
+ border-radius: 1rem;
21
+ font-size: var(--rf-text);
22
+ line-height: var(--rf-leading-normal);
23
+ }
24
+ .rf-conversation-message--left .rf-conversation-message__body {
25
+ background: var(--rf-color-surface);
26
+ border-bottom-left-radius: 0.25rem;
27
+ }
28
+ .rf-conversation-message--right .rf-conversation-message__body {
29
+ background: var(--rf-color-primary);
30
+ color: white;
31
+ border-bottom-right-radius: 0.25rem;
32
+ }
33
+ .rf-conversation-message__body p {
34
+ margin: 0;
35
+ }
36
+ .rf-conversation-message__body p + p {
37
+ margin-top: 0.5rem;
38
+ }
36
39
  }
@@ -1,139 +1,142 @@
1
1
  @layer skin {
2
- /* Call to Action — skin. The preamble/eyebrow/button-row layout + mobile stack
2
+ /* Call to Action — skin. The preamble/eyebrow/button-row layout + mobile stack
3
3
  * live in @refrakt-md/skeleton (styles/runes/cta.css). */
4
- .rf-cta {
5
- --rf-title-size: var(--rf-text-4xl);
6
- padding: 3.5rem 2rem 3rem;
7
- }
8
- .rf-cta .rf-cta__preamble,
9
- .rf-cta > h1, .rf-cta > h2, .rf-cta > h3,
10
- .rf-cta > p {
11
- text-align: center;
12
- }
13
- .rf-cta__preamble {
14
- gap: 0.25rem;
15
- margin-bottom: 1.5rem;
16
- }
17
- /* Higher specificity needed to override .rf-cta p (0,1,1) */
18
- .rf-cta .rf-cta__eyebrow {
19
- font-size: var(--rf-text-sm);
20
- font-weight: var(--rf-weight-semibold);
21
- letter-spacing: var(--rf-tracking-wider);
22
- text-transform: uppercase;
23
- color: var(--rf-color-primary);
24
- margin: 0 0 0.75rem;
25
- max-width: none;
26
- }
27
- /* Pill-badge variant when eyebrow contains a link */
28
- .rf-cta .rf-cta__eyebrow:has(a) {
29
- padding: 0.25rem 0.875rem;
30
- border: 1px solid var(--rf-color-border);
31
- border-radius: var(--rf-radius-full);
32
- color: var(--rf-color-text);
33
- font-weight: var(--rf-weight-normal);
34
- text-transform: none;
35
- letter-spacing: var(--rf-tracking-normal);
36
- transition: border-color 150ms ease;
37
- }
38
- .rf-cta .rf-cta__eyebrow:has(a):hover {
39
- border-color: var(--rf-color-muted);
40
- }
41
- .rf-cta .rf-cta__eyebrow:has(a) a {
42
- color: var(--rf-color-primary);
43
- font-weight: var(--rf-weight-semibold);
44
- text-decoration: none;
45
- }
46
- .rf-cta .rf-cta__eyebrow:has(a) a::before {
47
- border-radius: inherit;
48
- }
49
- .rf-cta__image {
50
- margin-bottom: 1.5rem;
51
- }
52
- .rf-cta h1,
53
- .rf-cta h2,
54
- .rf-cta h3,
55
- .rf-cta__headline {
56
- /* WORK-538 — read the prominence override first; the fallback is this rune's
4
+ .rf-cta {
5
+ --rf-title-size: var(--rf-text-4xl);
6
+ padding: 3.5rem 2rem 3rem;
7
+ }
8
+ .rf-cta .rf-cta__preamble,
9
+ .rf-cta > h1,
10
+ .rf-cta > h2,
11
+ .rf-cta > h3,
12
+ .rf-cta > p {
13
+ text-align: center;
14
+ }
15
+ .rf-cta__preamble {
16
+ gap: 0.25rem;
17
+ margin-bottom: 1.5rem;
18
+ }
19
+ /* Higher specificity needed to override .rf-cta p (0,1,1) */
20
+ .rf-cta .rf-cta__eyebrow {
21
+ font-size: var(--rf-text-sm);
22
+ font-weight: var(--rf-weight-semibold);
23
+ letter-spacing: var(--rf-tracking-wider);
24
+ text-transform: uppercase;
25
+ color: var(--rf-color-primary);
26
+ margin: 0 0 0.75rem;
27
+ max-width: none;
28
+ }
29
+ /* Pill-badge variant when eyebrow contains a link */
30
+ .rf-cta .rf-cta__eyebrow:has(a) {
31
+ padding: 0.25rem 0.875rem;
32
+ border: 1px solid var(--rf-color-border);
33
+ border-radius: var(--rf-radius-full);
34
+ color: var(--rf-color-text);
35
+ font-weight: var(--rf-weight-normal);
36
+ text-transform: none;
37
+ letter-spacing: var(--rf-tracking-normal);
38
+ transition: border-color 150ms ease;
39
+ }
40
+ .rf-cta .rf-cta__eyebrow:has(a):hover {
41
+ border-color: var(--rf-color-muted);
42
+ }
43
+ .rf-cta .rf-cta__eyebrow:has(a) a {
44
+ color: var(--rf-color-primary);
45
+ font-weight: var(--rf-weight-semibold);
46
+ text-decoration: none;
47
+ }
48
+ .rf-cta .rf-cta__eyebrow:has(a) a::before {
49
+ border-radius: inherit;
50
+ }
51
+ .rf-cta__image {
52
+ margin-bottom: 1.5rem;
53
+ }
54
+ .rf-cta h1,
55
+ .rf-cta h2,
56
+ .rf-cta h3,
57
+ .rf-cta__headline {
58
+ /* WORK-538 — read the prominence override first; the fallback is this rune's
57
59
  * resting size, stated as --rf-title-size on the root so the prominence ramp
58
60
  * can compute from it. */
59
- font-size: var(--rf-prominence-size, var(--rf-title-size));
60
- font-weight: var(--rf-weight-bold);
61
- letter-spacing: var(--rf-tracking-tight);
62
- margin-bottom: 0.75rem;
63
- margin-top: 0;
64
- line-height: var(--rf-leading-tight);
65
- background: linear-gradient(135deg, var(--rf-color-text) 0%, var(--rf-color-muted) 100%);
66
- -webkit-background-clip: text;
67
- -webkit-text-fill-color: transparent;
68
- background-clip: text;
69
- }
70
- /* Higher specificity needed to override .rf-cta p (0,1,1) */
71
- .rf-cta p,
72
- .rf-cta .rf-cta__blurb {
73
- font-size: var(--rf-text-lg);
74
- color: var(--rf-color-muted);
75
- max-width: 540px;
76
- margin: 0 auto 2rem;
77
- line-height: var(--rf-leading-relaxed);
78
- }
79
- .rf-cta ul {
80
- gap: 0.75rem;
81
- padding: 0;
82
- margin: 0;
83
- }
84
- .rf-cta li {
85
- padding: 0;
86
- margin: 0;
87
- }
88
- .rf-cta li a,
89
- .rf-cta nav a {
90
- padding: 0.625rem 1.5rem;
91
- border-radius: var(--rf-radius-sm);
92
- text-decoration: none;
93
- font-weight: var(--rf-weight-semibold);
94
- font-size: var(--rf-text-sm);
95
- transition: all 200ms ease;
96
- }
97
- .rf-cta li:first-child a {
98
- background: var(--rf-color-primary);
99
- color: white;
100
- box-shadow: var(--rf-shadow-sm);
101
- }
102
- .rf-cta li:first-child a:hover {
103
- background: var(--rf-color-primary-hover);
104
- box-shadow: var(--rf-shadow-md);
105
- transform: translateY(-1px);
106
- text-decoration: none;
107
- }
108
- .rf-cta li:not(:first-child) a {
109
- background: var(--rf-color-surface);
110
- color: var(--rf-color-text);
111
- border: 1px solid var(--rf-color-border);
112
- }
113
- .rf-cta li:not(:first-child) a:hover {
114
- background: var(--rf-color-surface-hover);
115
- border-color: var(--rf-color-surface-active);
116
- text-decoration: none;
117
- }
61
+ font-size: var(--rf-prominence-size, var(--rf-title-size));
62
+ font-weight: var(--rf-weight-bold);
63
+ letter-spacing: var(--rf-tracking-tight);
64
+ margin-bottom: 0.75rem;
65
+ margin-top: 0;
66
+ line-height: var(--rf-leading-tight);
67
+ background: linear-gradient(135deg, var(--rf-color-text) 0%, var(--rf-color-muted) 100%);
68
+ -webkit-background-clip: text;
69
+ -webkit-text-fill-color: transparent;
70
+ background-clip: text;
71
+ }
72
+ /* Higher specificity needed to override .rf-cta p (0,1,1) */
73
+ .rf-cta p,
74
+ .rf-cta .rf-cta__blurb {
75
+ font-size: var(--rf-text-lg);
76
+ color: var(--rf-color-muted);
77
+ max-width: 540px;
78
+ margin: 0 auto 2rem;
79
+ line-height: var(--rf-leading-relaxed);
80
+ }
81
+ .rf-cta ul {
82
+ gap: 0.75rem;
83
+ padding: 0;
84
+ margin: 0;
85
+ }
86
+ .rf-cta li {
87
+ padding: 0;
88
+ margin: 0;
89
+ }
90
+ .rf-cta li a,
91
+ .rf-cta nav a {
92
+ padding: 0.625rem 1.5rem;
93
+ border-radius: var(--rf-radius-sm);
94
+ text-decoration: none;
95
+ font-weight: var(--rf-weight-semibold);
96
+ font-size: var(--rf-text-sm);
97
+ transition: all 200ms ease;
98
+ }
99
+ .rf-cta li:first-child a {
100
+ background: var(--rf-color-primary);
101
+ color: white;
102
+ box-shadow: var(--rf-shadow-sm);
103
+ }
104
+ .rf-cta li:first-child a:hover {
105
+ background: var(--rf-color-primary-hover);
106
+ box-shadow: var(--rf-shadow-md);
107
+ transform: translateY(-1px);
108
+ text-decoration: none;
109
+ }
110
+ .rf-cta li:not(:first-child) a {
111
+ background: var(--rf-color-surface);
112
+ color: var(--rf-color-text);
113
+ border: 1px solid var(--rf-color-border);
114
+ }
115
+ .rf-cta li:not(:first-child) a:hover {
116
+ background: var(--rf-color-surface-hover);
117
+ border-color: var(--rf-color-surface-active);
118
+ text-decoration: none;
119
+ }
118
120
 
119
- /* Context-aware: CTA inside a hero gets more vertical space */
120
- .rf-cta--in-hero {
121
- padding-top: 2rem;
122
- padding-bottom: 0;
123
- }
124
-
125
- /* Context-aware: CTA inside pricing — compact, left-aligned */
126
- .rf-cta--in-pricing {
127
- padding: 1.5rem 0 0;
128
- }
129
- .rf-cta--in-pricing .rf-cta__preamble,
130
- .rf-cta--in-pricing > h1, .rf-cta--in-pricing > h2, .rf-cta--in-pricing > h3,
131
- .rf-cta--in-pricing > p {
132
- text-align: left;
133
- }
134
- .rf-cta--in-pricing p {
135
- margin: 0 0 1rem;
136
- max-width: none;
137
- }
121
+ /* Context-aware: CTA inside a hero gets more vertical space */
122
+ .rf-cta--in-hero {
123
+ padding-top: 2rem;
124
+ padding-bottom: 0;
125
+ }
138
126
 
127
+ /* Context-aware: CTA inside pricing — compact, left-aligned */
128
+ .rf-cta--in-pricing {
129
+ padding: 1.5rem 0 0;
130
+ }
131
+ .rf-cta--in-pricing .rf-cta__preamble,
132
+ .rf-cta--in-pricing > h1,
133
+ .rf-cta--in-pricing > h2,
134
+ .rf-cta--in-pricing > h3,
135
+ .rf-cta--in-pricing > p {
136
+ text-align: left;
137
+ }
138
+ .rf-cta--in-pricing p {
139
+ margin: 0 0 1rem;
140
+ max-width: none;
141
+ }
139
142
  }
@@ -1,90 +1,91 @@
1
1
  @layer skin {
2
- /* DataTable — skin. The toolbar/pagination flex + input width live in
2
+ /* DataTable — skin. The toolbar/pagination flex + input width live in
3
3
  * @refrakt-md/skeleton (styles/runes/datatable.css). The table chrome (header
4
4
  * strip, cell padding, row borders, hover) stays here. */
5
5
 
6
- /* The sunken surface chrome (fill + border + container radius) stays, but the
6
+ /* The sunken surface chrome (fill + border + container radius) stays, but the
7
7
  * elevation padding is dropped: the toolbar, table, and pagination each carry
8
8
  * their own rhythm and sit flush with the surface edge. */
9
- .rf-datatable {
10
- padding: 0;
11
- }
12
- .rf-datatable__toolbar {
13
- padding: var(--rf-spacing-sm);
14
- }
15
- .rf-datatable__input {
16
- padding: var(--rf-spacing-snug);
17
- border: 1px solid var(--rf-color-border);
18
- border-radius: var(--rf-radius-media);
19
- font-size: var(--rf-text-xs);
20
- font-family: var(--rf-font-sans);
21
- background: var(--rf-color-bg);
22
- color: var(--rf-color-text);
23
- }
24
- .rf-datatable__input:focus {
25
- outline: none;
26
- border-color: var(--rf-color-primary);
27
- box-shadow: 0 0 0 2px color-mix(in srgb, var(--rf-color-primary) 15%, transparent);
28
- }
29
- .rf-datatable__table {
30
- width: 100%;
31
- border-collapse: collapse;
32
- margin: 0;
33
- }
34
- .rf-datatable__table th {
35
- text-align: left;
36
- padding: 0.75rem 1rem;
37
- font-size: var(--rf-text-xs);
38
- font-weight: var(--rf-weight-semibold);
39
- text-transform: uppercase;
40
- letter-spacing: var(--rf-tracking-wider);
41
- color: var(--rf-color-muted);
42
- }
43
- /* Sortable headers (the behavior sets inline cursor:pointer on them). */
44
- .rf-datatable__table th[style*="cursor"]:hover {
45
- color: var(--rf-color-text);
46
- }
47
- .rf-datatable__sort-indicator {
48
- font-size: var(--rf-text-xs);
49
- opacity: 0.7;
50
- }
51
- .rf-datatable__table td {
52
- padding: 0.75rem 1rem;
53
- border-bottom: 1px solid var(--rf-color-border);
54
- font-size: var(--rf-text-sm);
55
- }
56
- .rf-datatable__table tr:last-child td {
57
- border-bottom: none;
58
- }
59
- .rf-datatable__table tr:hover td {
60
- background: var(--rf-color-surface-hover);
61
- }
62
- .rf-datatable__pagination {
63
- gap: 0.75rem;
64
- padding: var(--rf-spacing-sm);
65
- }
66
- .rf-datatable__page-btn {
67
- padding: 0.25rem 0.5rem;
68
- border: none;
69
- border-radius: var(--rf-radius-sm);
70
- background: transparent;
71
- color: var(--rf-color-muted);
72
- font-size: var(--rf-text-xs);
73
- font-family: var(--rf-font-sans);
74
- cursor: pointer;
75
- transition: color 150ms ease, background 150ms ease;
76
- }
77
- .rf-datatable__page-btn:hover:not(:disabled) {
78
- color: var(--rf-color-text);
79
- background: var(--rf-color-surface-hover);
80
- }
81
- .rf-datatable__page-btn:disabled {
82
- opacity: 0.3;
83
- cursor: not-allowed;
84
- }
85
- .rf-datatable__page-info {
86
- font-size: var(--rf-text-xs);
87
- color: var(--rf-color-muted);
88
- }
89
-
9
+ .rf-datatable {
10
+ padding: 0;
11
+ }
12
+ .rf-datatable__toolbar {
13
+ padding: var(--rf-spacing-sm);
14
+ }
15
+ .rf-datatable__input {
16
+ padding: var(--rf-spacing-snug);
17
+ border: 1px solid var(--rf-color-border);
18
+ border-radius: var(--rf-radius-media);
19
+ font-size: var(--rf-text-xs);
20
+ font-family: var(--rf-font-sans);
21
+ background: var(--rf-color-bg);
22
+ color: var(--rf-color-text);
23
+ }
24
+ .rf-datatable__input:focus {
25
+ outline: none;
26
+ border-color: var(--rf-color-primary);
27
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--rf-color-primary) 15%, transparent);
28
+ }
29
+ .rf-datatable__table {
30
+ width: 100%;
31
+ border-collapse: collapse;
32
+ margin: 0;
33
+ }
34
+ .rf-datatable__table th {
35
+ text-align: left;
36
+ padding: 0.75rem 1rem;
37
+ font-size: var(--rf-text-xs);
38
+ font-weight: var(--rf-weight-semibold);
39
+ text-transform: uppercase;
40
+ letter-spacing: var(--rf-tracking-wider);
41
+ color: var(--rf-color-muted);
42
+ }
43
+ /* Sortable headers (the behavior sets inline cursor:pointer on them). */
44
+ .rf-datatable__table th[style*="cursor"]:hover {
45
+ color: var(--rf-color-text);
46
+ }
47
+ .rf-datatable__sort-indicator {
48
+ font-size: var(--rf-text-xs);
49
+ opacity: 0.7;
50
+ }
51
+ .rf-datatable__table td {
52
+ padding: 0.75rem 1rem;
53
+ border-bottom: 1px solid var(--rf-color-border);
54
+ font-size: var(--rf-text-sm);
55
+ }
56
+ .rf-datatable__table tr:last-child td {
57
+ border-bottom: none;
58
+ }
59
+ .rf-datatable__table tr:hover td {
60
+ background: var(--rf-color-surface-hover);
61
+ }
62
+ .rf-datatable__pagination {
63
+ gap: 0.75rem;
64
+ padding: var(--rf-spacing-sm);
65
+ }
66
+ .rf-datatable__page-btn {
67
+ padding: 0.25rem 0.5rem;
68
+ border: none;
69
+ border-radius: var(--rf-radius-sm);
70
+ background: transparent;
71
+ color: var(--rf-color-muted);
72
+ font-size: var(--rf-text-xs);
73
+ font-family: var(--rf-font-sans);
74
+ cursor: pointer;
75
+ transition:
76
+ color 150ms ease,
77
+ background 150ms ease;
78
+ }
79
+ .rf-datatable__page-btn:hover:not(:disabled) {
80
+ color: var(--rf-color-text);
81
+ background: var(--rf-color-surface-hover);
82
+ }
83
+ .rf-datatable__page-btn:disabled {
84
+ opacity: 0.3;
85
+ cursor: not-allowed;
86
+ }
87
+ .rf-datatable__page-info {
88
+ font-size: var(--rf-text-xs);
89
+ color: var(--rf-color-muted);
90
+ }
90
91
  }
@@ -1,33 +1,32 @@
1
1
  @layer skin {
2
- /* Decision */
2
+ /* Decision */
3
3
 
4
- /* SPEC-079: eyebrow + metadata zone names replace header-primary /
4
+ /* SPEC-079: eyebrow + metadata zone names replace header-primary /
5
5
  * header-secondary. */
6
6
 
7
- .rf-decision__eyebrow {
8
- margin-bottom: 0.75rem;
9
- }
10
- .rf-decision__title h1,
11
- .rf-decision__title h2,
12
- .rf-decision__title h3 {
13
- margin-top: 0;
14
- }
15
-
16
- .rf-decision__metadata {
17
- margin-bottom: 1.5rem;
18
- }
7
+ .rf-decision__eyebrow {
8
+ margin-bottom: 0.75rem;
9
+ }
10
+ .rf-decision__title h1,
11
+ .rf-decision__title h2,
12
+ .rf-decision__title h3 {
13
+ margin-top: 0;
14
+ }
19
15
 
20
- .rf-decision__body {
21
- font-size: var(--rf-text-sm);
22
- line-height: var(--rf-leading-relaxed);
23
- }
24
- .rf-decision__body > section {
25
- margin-top: 1rem;
26
- padding-top: 0.75rem;
27
- border-top: 1px solid var(--rf-color-border);
28
- }
29
- .rf-decision__body > section:first-child {
30
- margin-top: 0.75rem;
31
- }
16
+ .rf-decision__metadata {
17
+ margin-bottom: 1.5rem;
18
+ }
32
19
 
20
+ .rf-decision__body {
21
+ font-size: var(--rf-text-sm);
22
+ line-height: var(--rf-leading-relaxed);
23
+ }
24
+ .rf-decision__body > section {
25
+ margin-top: 1rem;
26
+ padding-top: 0.75rem;
27
+ border-top: 1px solid var(--rf-color-border);
28
+ }
29
+ .rf-decision__body > section:first-child {
30
+ margin-top: 0.75rem;
31
+ }
33
32
  }
@@ -1,34 +1,32 @@
1
1
  @layer skin {
2
-
3
- /* WORK-538 — resting title size, so the prominence ramp computes from it
2
+ /* WORK-538 — resting title size, so the prominence ramp computes from it
4
3
  * rather than from the density default. */
5
- .rf-design-context {
6
- --rf-title-size: var(--rf-text-xl);
7
- }
4
+ .rf-design-context {
5
+ --rf-title-size: var(--rf-text-xl);
6
+ }
8
7
 
9
- /* Design Context — unified token card wrapper */
10
- .rf-design-context__title {
11
- /* WORK-538 — read the prominence override first; the fallback is this rune's
8
+ /* Design Context — unified token card wrapper */
9
+ .rf-design-context__title {
10
+ /* WORK-538 — read the prominence override first; the fallback is this rune's
12
11
  * resting size, stated as --rf-title-size on the root so the prominence ramp
13
12
  * can compute from it. */
14
- font-size: var(--rf-prominence-size, var(--rf-title-size));
15
- font-weight: var(--rf-weight-bold);
16
- margin-bottom: 1rem;
17
- }
18
- .rf-design-context__sections {
19
- gap: 1.5rem;
20
- }
13
+ font-size: var(--rf-prominence-size, var(--rf-title-size));
14
+ font-weight: var(--rf-weight-bold);
15
+ margin-bottom: 1rem;
16
+ }
17
+ .rf-design-context__sections {
18
+ gap: 1.5rem;
19
+ }
21
20
 
22
- /* Children inside design-context: remove card styling so the outer
21
+ /* Children inside design-context: remove card styling so the outer
23
22
  * design-context surface is the only visible frame. Structural selector
24
23
  * (`> [data-rune]` inside the sections wrapper) catches every direct rune
25
24
  * child, not just the four design-system runes — so dropping a future rune
26
25
  * into a design-context will Just Work without a per-rune CSS update. */
27
- .rf-design-context__sections > [data-rune] {
28
- background: none;
29
- border: none;
30
- border-radius: 0;
31
- padding: 0;
32
- }
33
-
26
+ .rf-design-context__sections > [data-rune] {
27
+ background: none;
28
+ border: none;
29
+ border-radius: 0;
30
+ padding: 0;
31
+ }
34
32
  }