@refrakt-md/lumina 0.21.0 → 0.23.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 (131) hide show
  1. package/base.css +2 -1
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +7 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/tokens.d.ts +5 -3
  6. package/dist/tokens.d.ts.map +1 -1
  7. package/dist/tokens.js +44 -3
  8. package/dist/tokens.js.map +1 -1
  9. package/index.css +11 -1
  10. package/package.json +7 -5
  11. package/styles/base/attributes.css +6 -7
  12. package/styles/dimensions/checklist.css +7 -36
  13. package/styles/dimensions/cover.css +13 -95
  14. package/styles/dimensions/density.css +6 -3
  15. package/styles/dimensions/frame.css +7 -4
  16. package/styles/dimensions/media.css +14 -61
  17. package/styles/dimensions/metadata.css +30 -80
  18. package/styles/dimensions/sections.css +16 -30
  19. package/styles/dimensions/sequence.css +17 -82
  20. package/styles/dimensions/state.css +39 -56
  21. package/styles/dimensions/substrate.css +3 -0
  22. package/styles/dimensions/surfaces.css +73 -113
  23. package/styles/elements/blockquote.css +3 -2
  24. package/styles/elements/code.css +3 -0
  25. package/styles/elements/table.css +3 -0
  26. package/styles/global.css +24 -63
  27. package/styles/layouts/blog.css +34 -95
  28. package/styles/layouts/default.css +12 -86
  29. package/styles/layouts/docs.css +9 -159
  30. package/styles/layouts/mobile.css +3 -52
  31. package/styles/layouts/on-this-page.css +8 -7
  32. package/styles/layouts/plan.css +27 -158
  33. package/styles/layouts/search.css +17 -82
  34. package/styles/layouts/split.css +24 -169
  35. package/styles/layouts/theme-toggle.css +3 -29
  36. package/styles/layouts/version-switcher.css +9 -10
  37. package/styles/runes/accordion.css +25 -68
  38. package/styles/runes/aggregate.css +4 -13
  39. package/styles/runes/annotate.css +11 -40
  40. package/styles/runes/api.css +4 -1
  41. package/styles/runes/audio.css +12 -50
  42. package/styles/runes/badge.css +5 -2
  43. package/styles/runes/bar.css +3 -0
  44. package/styles/runes/bento.css +18 -161
  45. package/styles/runes/bg.css +3 -37
  46. package/styles/runes/blog.css +18 -20
  47. package/styles/runes/bond.css +6 -26
  48. package/styles/runes/breadcrumb.css +7 -15
  49. package/styles/runes/budget.css +23 -45
  50. package/styles/runes/bug.css +5 -2
  51. package/styles/runes/card.css +27 -95
  52. package/styles/runes/cast.css +10 -27
  53. package/styles/runes/changelog.css +13 -17
  54. package/styles/runes/character.css +6 -20
  55. package/styles/runes/chart.css +15 -57
  56. package/styles/runes/codegroup.css +18 -26
  57. package/styles/runes/collection.css +8 -85
  58. package/styles/runes/compare.css +8 -19
  59. package/styles/runes/comparison.css +29 -56
  60. package/styles/runes/conversation.css +9 -31
  61. package/styles/runes/cta.css +17 -40
  62. package/styles/runes/datatable.css +33 -48
  63. package/styles/runes/decision.css +5 -2
  64. package/styles/runes/design-context.css +5 -4
  65. package/styles/runes/details.css +9 -17
  66. package/styles/runes/diagram.css +8 -16
  67. package/styles/runes/diff.css +11 -94
  68. package/styles/runes/drawer.css +9 -113
  69. package/styles/runes/embed.css +5 -13
  70. package/styles/runes/event.css +5 -3
  71. package/styles/runes/expand.css +10 -45
  72. package/styles/runes/faction.css +6 -12
  73. package/styles/runes/feature.css +15 -43
  74. package/styles/runes/figure.css +7 -26
  75. package/styles/runes/file-ref.css +3 -18
  76. package/styles/runes/form.css +19 -48
  77. package/styles/runes/gallery.css +8 -140
  78. package/styles/runes/grid.css +4 -56
  79. package/styles/runes/hero.css +28 -140
  80. package/styles/runes/hint.css +23 -48
  81. package/styles/runes/howto.css +9 -31
  82. package/styles/runes/itinerary.css +15 -44
  83. package/styles/runes/juxtapose.css +17 -92
  84. package/styles/runes/lore.css +7 -14
  85. package/styles/runes/map.css +9 -42
  86. package/styles/runes/mediatext.css +4 -45
  87. package/styles/runes/milestone.css +15 -28
  88. package/styles/runes/mockup.css +10 -115
  89. package/styles/runes/nav.css +37 -212
  90. package/styles/runes/organization.css +6 -5
  91. package/styles/runes/page-section.css +3 -4
  92. package/styles/runes/pagination.css +10 -42
  93. package/styles/runes/palette.css +16 -35
  94. package/styles/runes/placeholder.css +16 -0
  95. package/styles/runes/plan-history.css +23 -43
  96. package/styles/runes/plan-progress.css +6 -7
  97. package/styles/runes/plan-ref.css +4 -1
  98. package/styles/runes/playlist.css +10 -44
  99. package/styles/runes/plot.css +9 -25
  100. package/styles/runes/preview.css +9 -34
  101. package/styles/runes/pricing.css +23 -41
  102. package/styles/runes/progress.css +8 -27
  103. package/styles/runes/pullquote.css +9 -31
  104. package/styles/runes/realm.css +6 -12
  105. package/styles/runes/recipe.css +12 -36
  106. package/styles/runes/relationships.css +5 -36
  107. package/styles/runes/reveal.css +17 -22
  108. package/styles/runes/sandbox.css +9 -39
  109. package/styles/runes/section.css +10 -24
  110. package/styles/runes/showcase.css +3 -20
  111. package/styles/runes/sidenote.css +5 -4
  112. package/styles/runes/snippet.css +3 -0
  113. package/styles/runes/spacing.css +14 -33
  114. package/styles/runes/spec.css +5 -2
  115. package/styles/runes/steps.css +14 -46
  116. package/styles/runes/storyboard.css +4 -19
  117. package/styles/runes/swatch.css +4 -7
  118. package/styles/runes/symbol.css +16 -14
  119. package/styles/runes/tabs.css +15 -18
  120. package/styles/runes/testimonial.css +12 -13
  121. package/styles/runes/textblock.css +6 -24
  122. package/styles/runes/timeline.css +10 -28
  123. package/styles/runes/tint.css +3 -0
  124. package/styles/runes/toc.css +9 -7
  125. package/styles/runes/track.css +12 -41
  126. package/styles/runes/typography.css +15 -27
  127. package/styles/runes/work.css +5 -2
  128. package/styles/runes/xref.css +3 -1
  129. package/tokens/base.css +56 -66
  130. package/tokens/dark.css +79 -80
  131. package/styles/dimensions/guest-posture.css +0 -27
@@ -1,7 +1,11 @@
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.
1
+ @layer skin {
2
+ /* ─── Surface Assignments (SPEC-107) ───────────────────────────────────
3
+ * Surface chrome is selected by the `data-elevation` depth-ladder axis, not by
4
+ * rune name. Each rung maps to a chrome bundle (fill / border / radius /
5
+ * padding / resting shadow); `data-prominence` maps the page-section-header
6
+ * family to a title type register. Per-rune defaults (`defaultElevation` /
7
+ * `defaultProminence`) live in each rune's config, so today's appearance is
8
+ * preserved while a theme can re-point any rune to a different rung.
5
9
  * ────────────────────────────────────────────────────────────────────── */
6
10
 
7
11
  /* Semantic surface/media aliases over the raw token scale (these reference
@@ -22,136 +26,92 @@
22
26
  so they sit flush with the surrounding header/footer container. */
23
27
 
24
28
  [data-rune]:not([data-rune] [data-rune]):not(:where([data-layout="menubar"], [data-layout="columns"])) {
25
- margin: 1.5rem 0;
29
+ margin: var(--rf-spacing-md) 0;
26
30
  }
27
31
 
28
- /* ─── Card: elevated container ────────────────────────────────────── */
29
-
30
- .rf-recipe,
31
- .rf-character,
32
- .rf-testimonial,
33
- .rf-event,
34
- .rf-realm,
35
- .rf-faction,
36
- .rf-lore,
37
- .rf-plot,
38
- .rf-bond,
39
- .rf-playlist,
40
- .rf-track,
41
- .rf-budget,
42
- .rf-organization,
43
- .rf-timeline,
44
- .rf-swatch,
45
- .rf-palette,
46
- .rf-typography,
47
- .rf-spacing,
48
- .rf-design-context,
49
- .rf-itinerary,
50
- .rf-symbol,
51
- .rf-changelog,
52
- .rf-api,
53
- .rf-howto,
54
- .rf-form {
32
+ /* ─── Elevation: depth-ladder chrome ──────────────────────────────────
33
+ * `flat` and the shadow rungs (`raised` / `floating` / `overlay`) carry a
34
+ * surface: fill, border, radius, and container padding. `sunken` adds the same
35
+ * chrome but recesses its fill below the page. `flush` has no surface boundary
36
+ * — it only reserves vertical rhythm. The shadow rungs layer a *resting*
37
+ * box-shadow on top of the flat chrome (kept distinct from `frame-shadow`'s
38
+ * per-guest drop-shadow, SPEC-107 §1). */
39
+
40
+ [data-elevation="flat"],
41
+ [data-elevation="sunken"],
42
+ [data-elevation="raised"],
43
+ [data-elevation="floating"],
44
+ [data-elevation="overlay"] {
55
45
  background: var(--rf-color-surface);
56
46
  border: 1px solid var(--rf-color-border);
57
47
  border-radius: var(--rf-radius-container);
58
48
  padding: var(--rune-padding, var(--rf-spacing-md));
59
49
  }
60
50
 
61
- /* ─── Inline: no visual boundary ──────────────────────────────────── */
62
-
63
- .rf-hint,
64
- .rf-details,
65
- .rf-sidenote,
66
- .rf-conversation,
67
- .rf-annotate,
68
- .rf-xref,
69
- .rf-pullquote,
70
- .rf-textblock,
71
- .rf-nav,
72
- .rf-breadcrumb,
73
- .rf-toc,
74
- .rf-datatable {
75
- padding: var(--rune-padding, var(--rf-spacing-sm)) 0;
51
+ /* Sunken the recessed "darker surface" (e.g. chart / diagram). Derived at
52
+ * use-site via relative-color (lower L, keep C+H) so it recomputes from a
53
+ * tinted `--rf-color-surface` automatically (a static inset-colour token would
54
+ * freeze to the untinted :root). Writes `background` only — never re-bases
55
+ * `--rf-color-surface` — so insets don't compound under nesting; depth is
56
+ * conveyed by border + the darker fill. `--rf-surface-inset-shift: 0` flushes
57
+ * it back to the surface colour. */
58
+ [data-elevation="sunken"] {
59
+ background: oklch(from var(--rf-color-surface) calc(l - var(--rf-surface-inset-shift)) c h);
76
60
  }
77
61
 
78
- /* ─── Banner: full-width strip ────────────────────────────────────── */
79
-
80
- .rf-hero,
81
- .rf-cta,
82
- .rf-feature,
83
- .rf-steps,
84
- .rf-bento,
85
- .rf-storyboard,
86
- .rf-map {
87
- padding: var(--rune-padding, var(--rf-spacing-xl)) 0;
62
+ /* Resting-shadow rungs depth above the flat surface. */
63
+ [data-elevation="raised"] {
64
+ box-shadow: var(--rf-shadow-sm);
88
65
  }
89
-
90
- /* ─── Inset: recessed container ───────────────────────────────────── */
91
-
92
- .rf-codegroup,
93
- .rf-mockup,
94
- .rf-diagram,
95
- .rf-chart,
96
- .rf-embed,
97
- .rf-gallery,
98
- .rf-figure,
99
- .rf-reveal {
100
- background: var(--rf-color-surface);
101
- border: 1px solid var(--rf-color-border);
102
- border-radius: var(--rf-radius-container);
103
- padding: var(--rune-padding, var(--rf-spacing-md));
66
+ [data-elevation="floating"] {
67
+ box-shadow: var(--rf-shadow-md);
104
68
  }
105
-
106
- /* ─── Media slot inherits the surface border ─────────────────────────
107
- * When a surface-bearing rune wraps a `[data-section="media"]` slot, the slot
108
- * shares the surface's 1px border so the framed media reads as part of the
109
- * same surface rather than a separate inner box. Scoped via `:where()` for
110
- * zero specificity — per-rune CSS can still override if a particular surface
111
- * wants a different chrome (e.g. character's circular portrait avoids this
112
- * because it's not a `[data-section="media"]` slot). */
113
- :where(.rf-card, .rf-bento-cell, .rf-recipe, .rf-realm, .rf-faction, .rf-playlist) [data-section="media"] {
114
- border: 1px solid var(--rf-color-border);
69
+ [data-elevation="overlay"] {
70
+ box-shadow: var(--rf-shadow-lg);
115
71
  }
116
72
 
117
- /* ─── Inset surface (SPEC-087) tint-tracking recessed fill ──────────
118
- * Derived at use-site via relative-color (lower L, keep C+H) so it recomputes from a tinted
119
- * `--rf-color-surface` automatically (a static inset-colour token would
120
- * freeze to the untinted :root). Writes `background` only — never re-bases
121
- * `--rf-color-surface` — so insets don't compound under nesting; depth is
122
- * conveyed by border/elevation. `--rf-surface-inset-shift: 0` flushes it. */
73
+ /* Flush no surface boundary; only vertical rhythm (density-aware via
74
+ * --rune-padding). Replaces the old inline/banner padding buckets; banner runes
75
+ * that want a more generous band declare their own `padding-block`. */
76
+ [data-elevation="flush"] {
77
+ padding-block: var(--rune-padding, var(--rf-spacing-sm));
78
+ }
123
79
 
124
- /* chart / diagram self surface: the standalone "darker surface". */
125
- .rf-chart,
126
- .rf-diagram {
127
- background: oklch(from var(--rf-color-surface) calc(l - var(--rf-surface-inset-shift)) c h);
80
+ /* ─── Prominence: page-section-header type register ───────────────────
81
+ * `data-prominence` re-points the section title size for page-section-header
82
+ * family runes (the engine only emits it where a header role exists). `normal`
83
+ * is the density default; the other steps layer on top, cascading down to
84
+ * [data-section="title"] via --rf-title-size — the same mechanism density uses,
85
+ * so a nested rune's own density/prominence re-declares it. */
86
+ [data-prominence="quiet"] {
87
+ --rf-title-size: var(--rf-text-xl);
88
+ }
89
+ [data-prominence="prominent"] {
90
+ --rf-title-size: var(--rf-text-3xl);
91
+ }
92
+ [data-prominence="display"] {
93
+ --rf-title-size: var(--rf-text-4xl);
128
94
  }
129
95
 
130
- /* …but when they're a media-zone guest the slot already provides the recessed
131
- * surface (border, radius, inset fill), so the inner chrome would just stack
132
- * as double-chrome. Drop it; keep padding so axis labels / SVG keep breathing
133
- * room. */
134
- [data-section="media"] > :is(.rf-chart, .rf-diagram) {
135
- background: transparent;
136
- border: 0;
96
+ /* ─── Media slot shares the surface chrome ───────────────────────────
97
+ * When a `flat` surface wraps a cover `[data-section="media"]` slot, the slot
98
+ * shares the surface's 1px border and a recessed well fill so the framed media
99
+ * reads as part of the same surface. Scoped via `:where()` for zero specificity
100
+ * so per-rune CSS can override. Floated-avatar portraits (`[data-media="portrait"]`,
101
+ * e.g. character / testimonial) opt out — they manage their own circular chrome.
102
+ * The hand-rolled `card` / `bento-cell` surfaces (which sit outside the
103
+ * elevation axis) carry the same media chrome from their own CSS files. */
104
+ :where([data-elevation="flat"]) [data-section="media"]:not([data-media="portrait"]) {
105
+ border: 1px solid var(--rf-color-border);
106
+ background: oklch(from var(--rf-color-surface) calc(l - var(--rf-surface-inset-shift)) c h);
137
107
  }
138
108
 
139
- /* Same treatment for `juxtapose` as a media guest its `__panels` container
140
- * has its own border + background + rounded corners (juxtapose stands alone
141
- * outside a card), but inside a card slot they double up with the slot's own
142
- * chrome. Drop the inner chrome; round to match the slot's media radius so the
143
- * comparison reads as part of the card surface. The slot's overflow:visible
144
- * and container-type:normal still come from `split.css` (juxtapose manages
145
- * its own clip inside `__panels`). */
146
- [data-section="media"] > .rf-juxtapose .rf-juxtapose__panels {
109
+ /* …but a sunken surface used as a media-zone guest already sits inside the
110
+ * slot's recessed well, so its own chrome would just double up. Drop it; keep
111
+ * padding so axis labels / SVG keep breathing room. */
112
+ [data-section="media"] > [data-elevation="sunken"] {
147
113
  background: transparent;
148
114
  border: 0;
149
- border-radius: var(--rf-radius-media);
150
115
  }
151
116
 
152
- /* Media wells of media-bearing runes: a recessed sub-surface that tracks the
153
- * (possibly tinted) container colour — invisible under a full-bleed guest,
154
- * visible in the gaps (transparent, displaced, or absent guest). */
155
- :is(.rf-card, .rf-bento-cell, .rf-recipe, .rf-realm, .rf-faction, .rf-playlist) [data-section="media"] {
156
- background: oklch(from var(--rf-color-surface) calc(l - var(--rf-surface-inset-shift)) c h);
157
117
  }
@@ -1,3 +1,4 @@
1
+ @layer skin {
1
2
  /* Blockquote */
2
3
  blockquote {
3
4
  position: relative;
@@ -5,8 +6,6 @@ blockquote {
5
6
  margin: 1.5rem 0;
6
7
  padding: 1rem 1.25rem 1rem 3.25rem;
7
8
  color: var(--rf-color-muted);
8
- background: var(--rf-color-surface);
9
- border-radius: 0 var(--rf-radius-md) var(--rf-radius-md) 0;
10
9
  }
11
10
  blockquote::before {
12
11
  content: '';
@@ -24,3 +23,5 @@ blockquote::before {
24
23
  blockquote p:last-child {
25
24
  margin-bottom: 0;
26
25
  }
26
+
27
+ }
@@ -1,3 +1,4 @@
1
+ @layer skin {
1
2
  /* Code block wrapper — the rf-codeblock div comes from the Markdoc fence node
2
3
  schema at build time. Inside codegroup the margin is removed by
3
4
  .rf-codegroup .rf-codeblock. */
@@ -114,3 +115,5 @@
114
115
  background: var(--rf-color-line-highlight);
115
116
  border-left-color: var(--rf-color-line-highlight-rail);
116
117
  }
118
+
119
+ }
@@ -1,3 +1,4 @@
1
+ @layer skin {
1
2
  /* Table wrapper */
2
3
  .rf-table-wrapper {
3
4
  overflow-x: auto;
@@ -34,3 +35,5 @@
34
35
  .rf-table-wrapper td code {
35
36
  font-size: 1em;
36
37
  }
38
+
39
+ }
package/styles/global.css CHANGED
@@ -1,15 +1,17 @@
1
- /* Lumina Theme — Global Base Styles */
2
-
3
- /* Reset */
4
- *, *::before, *::after {
5
- box-sizing: border-box;
6
- }
1
+ @layer skin {
2
+ /* Lumina Theme — Global Base Styles (skin).
3
+ *
4
+ * Structure (box model, zone resets, prose/heading/list/table rhythm, the
5
+ * responsive-image + scroll mechanisms) lives in @refrakt-md/skeleton
6
+ * (styles/global.css) per SPEC-094 §3 / WORK-438. What remains here is skin:
7
+ * typography, colour, native chrome, and the surface treatment of code/pre/
8
+ * tables. */
7
9
 
8
10
  html {
9
11
  font-family: var(--rf-font-sans);
10
12
  color: var(--rf-color-text);
11
13
  background: var(--rf-color-bg);
12
- line-height: 1.7;
14
+ line-height: var(--rf-leading-relaxed);
13
15
  -webkit-font-smoothing: antialiased;
14
16
  -moz-osx-font-smoothing: grayscale;
15
17
  -webkit-text-size-adjust: 100%;
@@ -24,18 +26,12 @@ html {
24
26
  text-size-adjust: 100%;
25
27
  }
26
28
 
27
- body {
28
- margin: 0;
29
- }
30
-
31
29
  /* ─── Theme-aware browser chrome (WORK-351) ─────────────────────────
32
30
  * Make native chrome — scrollbars, form controls, the main viewport
33
31
  * scrollbar — follow the active theme instead of always rendering in
34
32
  * the OS default scheme. */
35
33
 
36
- /* `color-scheme` so the UA paints native widgets/scrollbars per mode.
37
- * Mirrors the dark-token selectors (explicit toggle + system preference
38
- * unless forced light). */
34
+ /* `color-scheme` so the UA paints native widgets/scrollbars per mode. */
39
35
  :root { color-scheme: light; }
40
36
  [data-theme="dark"] { color-scheme: dark; }
41
37
  @media (prefers-color-scheme: dark) {
@@ -97,22 +93,15 @@ body {
97
93
  }
98
94
 
99
95
  h1, h2, h3, h4, h5, h6 {
100
- line-height: 1.25;
101
- margin-top: 2em;
102
- margin-bottom: 0.5em;
103
- font-weight: 650;
104
- letter-spacing: -0.015em;
96
+ line-height: var(--rf-leading-tight);
97
+ font-weight: var(--rf-weight-semibold);
98
+ letter-spacing: var(--rf-tracking-tight);
105
99
  }
106
100
 
107
- h1 { font-size: 1.875rem; font-weight: 700; letter-spacing: -0.025em; }
108
- h2 { font-size: 1.5rem; }
109
- h3 { font-size: 1.2rem; }
110
- h4 { font-size: 1.05rem; }
111
-
112
- p {
113
- margin-top: 0;
114
- margin-bottom: 1rem;
115
- }
101
+ h1 { font-size: var(--rf-text-3xl); font-weight: var(--rf-weight-bold); letter-spacing: var(--rf-tracking-tight); }
102
+ h2 { font-size: var(--rf-text-2xl); }
103
+ h3 { font-size: var(--rf-text-xl); }
104
+ h4 { font-size: var(--rf-text); }
116
105
 
117
106
  a {
118
107
  color: var(--rf-color-primary);
@@ -124,7 +113,7 @@ a:hover {
124
113
  text-decoration: underline;
125
114
  }
126
115
 
127
- strong { font-weight: 600; }
116
+ strong { font-weight: var(--rf-weight-semibold); }
128
117
 
129
118
  code {
130
119
  font-family: var(--rf-font-mono);
@@ -140,10 +129,8 @@ pre {
140
129
  color: var(--rf-color-code-text);
141
130
  padding: 1.25rem 1.5rem;
142
131
  border-radius: var(--rf-radius-md);
143
- overflow-x: auto;
144
- margin: 1.5rem 0;
145
- font-size: 0.875rem;
146
- line-height: 1.7;
132
+ font-size: var(--rf-text-sm);
133
+ line-height: var(--rf-leading-relaxed);
147
134
  border: 1px solid var(--rf-color-border);
148
135
  }
149
136
 
@@ -154,46 +141,23 @@ pre code {
154
141
  border-radius: 0;
155
142
  }
156
143
 
157
- img {
158
- max-width: 100%;
159
- height: auto;
160
- }
161
-
162
144
  hr {
163
145
  border: none;
164
146
  border-top: 1px solid var(--rf-color-border);
165
- margin: 2rem 0;
166
- }
167
-
168
- ul, ol {
169
- padding-left: 1.5rem;
170
- margin-top: 0;
171
- margin-bottom: 1rem;
172
- }
173
-
174
- li {
175
- margin-bottom: 0.25rem;
176
- }
177
-
178
- li > p {
179
- margin-bottom: 0.5rem;
180
147
  }
181
148
 
182
149
  table {
183
- width: 100%;
184
- border-collapse: collapse;
185
- margin: 1.5rem 0;
186
- font-size: 0.9rem;
150
+ font-size: var(--rf-text-sm);
187
151
  }
188
152
 
189
153
  th {
190
154
  text-align: left;
191
- font-weight: 600;
155
+ font-weight: var(--rf-weight-semibold);
192
156
  padding: 0.625rem 1rem;
193
157
  border-bottom: 1px solid var(--rf-color-border);
194
- font-size: 0.8rem;
158
+ font-size: var(--rf-text-xs);
195
159
  text-transform: uppercase;
196
- letter-spacing: 0.04em;
160
+ letter-spacing: var(--rf-tracking-wide);
197
161
  color: var(--rf-color-muted);
198
162
  }
199
163
 
@@ -202,7 +166,4 @@ td {
202
166
  border-bottom: 1px solid var(--rf-color-border);
203
167
  }
204
168
 
205
- meta {
206
- display: none;
207
169
  }
208
-