@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,138 +1,136 @@
1
1
  @layer skin {
2
- /* Recipe — editorial cookbook aesthetic */
2
+ /* Recipe — editorial cookbook aesthetic */
3
3
 
4
- /* Thin-edge inset model (matches `.rf-card`): card outer padding is a thin edge,
4
+ /* Thin-edge inset model (matches `.rf-card`): card outer padding is a thin edge,
5
5
  * the content column adds the remaining inset back so text sits at the full
6
6
  * `--rune-padding` without negative-margin bleed. Unlike `card`, the split
7
7
  * layout keeps `align-items: start` (no `--split-valign: stretch`) — recipe
8
8
  * content can be very tall (ingredients + many steps + tips), so stretching the
9
9
  * media to match would crop the image hard. The image keeps its natural ratio
10
10
  * and any leftover height in the media column sits as quiet card padding. */
11
- .rf-recipe {
12
- --rf-recipe-edge: 0.5rem;
13
- --rf-recipe-media-gap: var(--rf-spacing-lg);
14
- --rf-recipe-split-gap: var(--rf-spacing-sm);
15
- padding: var(--rf-recipe-edge);
16
- }
11
+ .rf-recipe {
12
+ --rf-recipe-edge: 0.5rem;
13
+ --rf-recipe-media-gap: var(--rf-spacing-lg);
14
+ --rf-recipe-split-gap: var(--rf-spacing-sm);
15
+ padding: var(--rf-recipe-edge);
16
+ }
17
17
 
18
- .rf-recipe__content {
19
- padding: max(0px, calc(var(--rune-padding, var(--rf-spacing-md)) - var(--rf-recipe-edge)));
20
- }
18
+ .rf-recipe__content {
19
+ padding: max(0px, calc(var(--rune-padding, var(--rf-spacing-md)) - var(--rf-recipe-edge)));
20
+ }
21
21
 
22
- /* Direct grid properties (column-gap / row-gap) rather than overriding shared
22
+ /* Direct grid properties (column-gap / row-gap) rather than overriding shared
23
23
  * media-position layout vars — the per-rune rules win via selector specificity
24
24
  * and stay in our control regardless of inline styles. */
25
- .rf-recipe[data-media-position="start"],
26
- .rf-recipe[data-media-position="end"] {
27
- column-gap: var(--rf-recipe-split-gap);
28
- row-gap: var(--rf-recipe-media-gap);
29
- }
25
+ .rf-recipe[data-media-position="start"],
26
+ .rf-recipe[data-media-position="end"] {
27
+ column-gap: var(--rf-recipe-split-gap);
28
+ row-gap: var(--rf-recipe-media-gap);
29
+ }
30
30
 
31
- .rf-recipe[data-media-position="top"] > [data-section="media"] {
32
- margin-bottom: var(--rf-recipe-media-gap);
33
- }
34
- .rf-recipe[data-media-position="bottom"] > [data-section="media"] {
35
- margin-top: var(--rf-recipe-media-gap);
36
- }
31
+ .rf-recipe[data-media-position="top"] > [data-section="media"] {
32
+ margin-bottom: var(--rf-recipe-media-gap);
33
+ }
34
+ .rf-recipe[data-media-position="bottom"] > [data-section="media"] {
35
+ margin-top: var(--rf-recipe-media-gap);
36
+ }
37
37
 
38
- .rf-recipe .rf-recipe__eyebrow {
39
- font-size: var(--rf-text-xs);
40
- font-weight: var(--rf-weight-semibold);
41
- letter-spacing: var(--rf-tracking-wider);
42
- text-transform: uppercase;
43
- color: var(--rf-color-primary);
44
- margin: 0 0 0.375rem;
45
- }
46
- .rf-recipe__headline {
47
- margin-top: 0;
48
- margin-bottom: 0.25rem;
49
- }
50
- .rf-recipe .rf-recipe__blurb {
51
- color: var(--rf-color-muted);
52
- margin-bottom: 0;
53
- max-width: 40rem;
54
- }
55
- .rf-recipe__image {
56
- margin-bottom: 1rem;
57
- }
38
+ .rf-recipe .rf-recipe__eyebrow {
39
+ font-size: var(--rf-text-xs);
40
+ font-weight: var(--rf-weight-semibold);
41
+ letter-spacing: var(--rf-tracking-wider);
42
+ text-transform: uppercase;
43
+ color: var(--rf-color-primary);
44
+ margin: 0 0 0.375rem;
45
+ }
46
+ .rf-recipe__headline {
47
+ margin-top: 0;
48
+ margin-bottom: 0.25rem;
49
+ }
50
+ .rf-recipe .rf-recipe__blurb {
51
+ color: var(--rf-color-muted);
52
+ margin-bottom: 0;
53
+ max-width: 40rem;
54
+ }
55
+ .rf-recipe__image {
56
+ margin-bottom: 1rem;
57
+ }
58
58
 
59
- /* Content wrapper */
60
- .rf-recipe__content {
61
- gap: 1.75rem;
62
- }
59
+ /* Content wrapper */
60
+ .rf-recipe__content {
61
+ gap: 1.75rem;
62
+ }
63
63
 
64
- /* Ingredients — surfaced zone with custom markers */
65
- .rf-recipe__content ul {
66
- background: var(--rf-color-surface);
67
- border: 1px solid var(--rf-color-border);
68
- border-radius: var(--rf-radius-md);
69
- padding: 1.25rem 1.25rem 1.25rem 2.5rem;
70
- list-style: disc;
71
- margin: 0;
72
- }
73
- .rf-recipe__content ul li {
74
- padding: 0.2rem 0;
75
- line-height: var(--rf-leading-relaxed);
76
- }
77
- .rf-recipe__content ul li::marker {
78
- color: var(--rf-color-primary);
79
- }
64
+ /* Ingredients — surfaced zone with custom markers */
65
+ .rf-recipe__content ul {
66
+ background: var(--rf-color-surface);
67
+ border: 1px solid var(--rf-color-border);
68
+ border-radius: var(--rf-radius-md);
69
+ padding: 1.25rem 1.25rem 1.25rem 2.5rem;
70
+ list-style: disc;
71
+ margin: 0;
72
+ }
73
+ .rf-recipe__content ul li {
74
+ padding: 0.2rem 0;
75
+ line-height: var(--rf-leading-relaxed);
76
+ }
77
+ .rf-recipe__content ul li::marker {
78
+ color: var(--rf-color-primary);
79
+ }
80
80
 
81
- /* Steps — numbered with styled counters */
82
- .rf-recipe__content ol {
83
- padding-left: 0;
84
- margin: 0;
85
- }
86
- .rf-recipe__content ol > li {
87
- padding: 0.625rem 0;
88
- padding-left: 2.25rem;
89
- line-height: var(--rf-leading-relaxed);
90
- }
91
- .rf-recipe__content ol > li + li {
92
- border-top: 1px solid var(--rf-color-border);
93
- }
94
- .rf-recipe__content ol > li::before {
95
- font-size: var(--rf-text-xs);
96
- font-weight: var(--rf-weight-bold);
97
- color: var(--rf-color-primary);
98
- background: var(--rf-color-surface);
99
- border-radius: var(--rf-radius-full);
100
- }
81
+ /* Steps — numbered with styled counters */
82
+ .rf-recipe__content ol {
83
+ padding-left: 0;
84
+ margin: 0;
85
+ }
86
+ .rf-recipe__content ol > li {
87
+ padding: 0.625rem 0;
88
+ padding-left: 2.25rem;
89
+ line-height: var(--rf-leading-relaxed);
90
+ }
91
+ .rf-recipe__content ol > li + li {
92
+ border-top: 1px solid var(--rf-color-border);
93
+ }
94
+ .rf-recipe__content ol > li::before {
95
+ font-size: var(--rf-text-xs);
96
+ font-weight: var(--rf-weight-bold);
97
+ color: var(--rf-color-primary);
98
+ background: var(--rf-color-surface);
99
+ border-radius: var(--rf-radius-full);
100
+ }
101
101
 
102
- .rf-recipe__content ol > li > p,
103
- .rf-recipe__content ul > li > p {
104
- margin: 0;
105
- }
102
+ .rf-recipe__content ol > li > p,
103
+ .rf-recipe__content ul > li > p {
104
+ margin: 0;
105
+ }
106
106
 
107
- /* Tips — callout accent like hint */
108
- .rf-recipe__content blockquote {
109
- border-left: 2px solid var(--rf-color-primary);
110
- background: var(--rf-color-surface);
111
- border-radius: 0 var(--rf-radius-md) var(--rf-radius-md) 0;
112
- padding: 0.75rem 1.25rem;
113
- margin: 0;
114
- font-size: var(--rf-text-sm);
115
- font-style: italic;
116
- color: var(--rf-color-muted);
117
- line-height: var(--rf-leading-relaxed);
118
- }
119
- .rf-recipe__content blockquote p {
120
- margin: 0;
121
- }
107
+ /* Tips — callout accent like hint */
108
+ .rf-recipe__content blockquote {
109
+ border-left: 2px solid var(--rf-color-primary);
110
+ background: var(--rf-color-surface);
111
+ border-radius: 0 var(--rf-radius-md) var(--rf-radius-md) 0;
112
+ padding: 0.75rem 1.25rem;
113
+ margin: 0;
114
+ font-size: var(--rf-text-sm);
115
+ font-style: italic;
116
+ color: var(--rf-color-muted);
117
+ line-height: var(--rf-leading-relaxed);
118
+ }
119
+ .rf-recipe__content blockquote p {
120
+ margin: 0;
121
+ }
122
122
 
123
- /* Media zone — base sizing/clip come from the shared [data-section="media"]
123
+ /* Media zone — base sizing/clip come from the shared [data-section="media"]
124
124
  * rule in split.css. The image uses the media radius tier so it reads as a
125
125
  * guest nested inside the (larger-radius) recipe card. */
126
- .rf-recipe__media img {
127
- border-radius: var(--rf-radius-media);
128
- }
129
- @media (max-width: 48rem) {
130
- .rf-recipe__metadata {
131
- gap: 0.75rem;
132
- padding: 0;
133
- border: none;
126
+ .rf-recipe__media img {
127
+ border-radius: var(--rf-radius-media);
128
+ }
129
+ @media (max-width: 48rem) {
130
+ .rf-recipe__metadata {
131
+ gap: 0.75rem;
132
+ padding: 0;
133
+ border: none;
134
+ }
134
135
  }
135
- }
136
-
137
-
138
136
  }
@@ -1,101 +1,102 @@
1
1
  @layer skin {
2
- /* Relationships — an entity's graph edges, grouped by kind (SPEC-072).
2
+ /* Relationships — an entity's graph edges, grouped by kind (SPEC-072).
3
3
  *
4
4
  * Generic over kind: the rune emits `data-kind` on each item and a humanized
5
5
  * group heading per kind. Mirrors collection's list chrome.
6
6
  */
7
7
 
8
- .rf-relationships {
9
- margin: var(--rf-spacing-md) 0;
10
- }
8
+ .rf-relationships {
9
+ margin: var(--rf-spacing-md) 0;
10
+ }
11
11
 
12
- .rf-relationships__preamble > :first-child { margin-top: 0; }
12
+ .rf-relationships__preamble > :first-child {
13
+ margin-top: 0;
14
+ }
13
15
 
14
- .rf-relationships__empty {
15
- color: var(--rf-color-muted);
16
- font-size: 0.9375em;
17
- }
16
+ .rf-relationships__empty {
17
+ color: var(--rf-color-muted);
18
+ font-size: 0.9375em;
19
+ }
18
20
 
19
- .rf-relationships__items {
20
- gap: var(--rf-spacing-sm);
21
- }
21
+ .rf-relationships__items {
22
+ gap: var(--rf-spacing-sm);
23
+ }
22
24
 
23
- /* grid arranges edges into responsive columns; list stays a stacked flow.
25
+ /* grid arranges edges into responsive columns; list stays a stacked flow.
24
26
  * Mirrors collection: item chrome comes from the item (the card built-in, or
25
27
  * a {% card %} in the body template), not the layout. */
26
- .rf-relationships[data-layout='grid'] .rf-relationships__items {
27
- gap: var(--rf-spacing-md);
28
- }
28
+ .rf-relationships[data-layout="grid"] .rf-relationships__items {
29
+ gap: var(--rf-spacing-md);
30
+ }
29
31
 
30
- /* Grouped grid: the grid belongs to each group (its items are the cells), not
32
+ /* Grouped grid: the grid belongs to each group (its items are the cells), not
31
33
  * to __items — whose children are the group blocks (or the accordion wrapper).
32
34
  * Left on __items, each group collapses into a single column. So __items stacks
33
35
  * the groups and each group becomes the grid, with its title spanning. */
34
- .rf-relationships[data-layout='grid'] .rf-relationships__items:has(.rf-relationships__group),
35
- .rf-relationships[data-layout='grid'] .rf-relationships__items:has(.rf-accordion) {
36
- gap: var(--rf-spacing-md);
37
- }
38
- .rf-relationships[data-layout='grid'] .rf-relationships__group {
39
- gap: var(--rf-spacing-md);
40
- }
36
+ .rf-relationships[data-layout="grid"] .rf-relationships__items:has(.rf-relationships__group),
37
+ .rf-relationships[data-layout="grid"] .rf-relationships__items:has(.rf-accordion) {
38
+ gap: var(--rf-spacing-md);
39
+ }
40
+ .rf-relationships[data-layout="grid"] .rf-relationships__group {
41
+ gap: var(--rf-spacing-md);
42
+ }
41
43
 
42
- .rf-relationships__group {
43
- margin-top: var(--rf-spacing-md);
44
- /* Tight default for the built-in inline shape (title + field spans). */
45
- gap: var(--rf-spacing-xs);
46
- }
47
- .rf-relationships__group:first-child {
48
- margin-top: 0;
49
- }
50
- /* Modestly roomier when items carry a body template (block content — more than
44
+ .rf-relationships__group {
45
+ margin-top: var(--rf-spacing-md);
46
+ /* Tight default for the built-in inline shape (title + field spans). */
47
+ gap: var(--rf-spacing-xs);
48
+ }
49
+ .rf-relationships__group:first-child {
50
+ margin-top: 0;
51
+ }
52
+ /* Modestly roomier when items carry a body template (block content — more than
51
53
  * a one-liner). Body-template items are marked `data-block` by the resolver;
52
54
  * the built-in inline title+field rows are not. */
53
- .rf-relationships__group:has(.rf-relationships__item[data-block]) {
54
- gap: var(--rf-spacing-sm);
55
- }
55
+ .rf-relationships__group:has(.rf-relationships__item[data-block]) {
56
+ gap: var(--rf-spacing-sm);
57
+ }
56
58
 
57
- .rf-relationships__group-title {
58
- margin: 0 0 var(--rf-spacing-sm);
59
- font-size: 0.875em;
60
- text-transform: uppercase;
61
- letter-spacing: var(--rf-tracking-wider);
62
- color: var(--rf-color-muted);
63
- }
59
+ .rf-relationships__group-title {
60
+ margin: 0 0 var(--rf-spacing-sm);
61
+ font-size: 0.875em;
62
+ text-transform: uppercase;
63
+ letter-spacing: var(--rf-tracking-wider);
64
+ color: var(--rf-color-muted);
65
+ }
64
66
 
65
- .rf-relationships__item {
66
- gap: var(--rf-spacing-xs) var(--rf-spacing-sm);
67
- }
68
- .rf-relationships__item[data-block] > :first-child {
69
- margin-top: 0;
70
- }
71
- .rf-relationships__item[data-block] > :last-child {
72
- margin-bottom: 0;
73
- }
67
+ .rf-relationships__item {
68
+ gap: var(--rf-spacing-xs) var(--rf-spacing-sm);
69
+ }
70
+ .rf-relationships__item[data-block] > :first-child {
71
+ margin-top: 0;
72
+ }
73
+ .rf-relationships__item[data-block] > :last-child {
74
+ margin-bottom: 0;
75
+ }
74
76
 
75
- /* Card chrome for the grid built-in (mirrors collection's __card). */
76
- .rf-relationships__card {
77
- gap: var(--rf-spacing-xs);
78
- padding: var(--rf-spacing-md);
79
- border: 1px solid var(--rf-color-border);
80
- border-radius: var(--rf-radius-md);
81
- background: var(--rf-color-surface);
82
- }
83
- .rf-relationships__card:hover {
84
- background: var(--rf-color-surface-hover);
85
- }
77
+ /* Card chrome for the grid built-in (mirrors collection's __card). */
78
+ .rf-relationships__card {
79
+ gap: var(--rf-spacing-xs);
80
+ padding: var(--rf-spacing-md);
81
+ border: 1px solid var(--rf-color-border);
82
+ border-radius: var(--rf-radius-md);
83
+ background: var(--rf-color-surface);
84
+ }
85
+ .rf-relationships__card:hover {
86
+ background: var(--rf-color-surface-hover);
87
+ }
86
88
 
87
- .rf-relationships__title {
88
- font-weight: var(--rf-weight-semibold);
89
- color: var(--rf-color-text);
90
- text-decoration: none;
91
- }
92
- .rf-relationships__title:hover {
93
- color: var(--rf-color-primary);
94
- }
95
-
96
- .rf-relationships__field {
97
- font-size: 0.875em;
98
- color: var(--rf-color-muted);
99
- }
89
+ .rf-relationships__title {
90
+ font-weight: var(--rf-weight-semibold);
91
+ color: var(--rf-color-text);
92
+ text-decoration: none;
93
+ }
94
+ .rf-relationships__title:hover {
95
+ color: var(--rf-color-primary);
96
+ }
100
97
 
98
+ .rf-relationships__field {
99
+ font-size: 0.875em;
100
+ color: var(--rf-color-muted);
101
+ }
101
102
  }
@@ -1,83 +1,94 @@
1
1
  @layer skin {
2
- /* Reveal — skin. The eyebrow stretched-link, steps flex, hidden-step collapse,
2
+ /* Reveal — skin. The eyebrow stretched-link, steps flex, hidden-step collapse,
3
3
  * metadata hide, and control flex live in @refrakt-md/skeleton
4
4
  * (styles/runes/reveal.css). */
5
- .rf-reveal__preamble {
6
- margin-bottom: 1.5rem;
7
- }
8
- .rf-reveal__eyebrow {
9
- font-size: var(--rf-text-sm);
10
- font-weight: var(--rf-weight-semibold);
11
- letter-spacing: var(--rf-tracking-wider);
12
- text-transform: uppercase;
13
- color: var(--rf-color-primary);
14
- margin: 0 0 0.5rem;
15
- }
16
- .rf-reveal__eyebrow:has(a) {
17
- padding: 0.25rem 0.875rem;
18
- border: 1px solid var(--rf-color-border);
19
- border-radius: var(--rf-radius-full);
20
- color: var(--rf-color-text);
21
- font-weight: var(--rf-weight-normal);
22
- text-transform: none;
23
- letter-spacing: var(--rf-tracking-normal);
24
- transition: border-color 150ms ease;
25
- }
26
- .rf-reveal__eyebrow:has(a):hover { border-color: var(--rf-color-muted); }
27
- .rf-reveal__eyebrow:has(a) a { color: var(--rf-color-primary); font-weight: var(--rf-weight-semibold); text-decoration: none; }
28
- .rf-reveal__eyebrow:has(a) a::before { border-radius: inherit; }
29
- .rf-reveal__headline {
30
- margin-top: 0;
31
- }
32
- .rf-reveal__blurb {
33
- color: var(--rf-color-muted);
34
- margin-bottom: 0;
35
- }
36
- .rf-reveal__image {
37
- margin-bottom: 1rem;
38
- }
39
- .rf-reveal__steps {
40
- gap: 1rem;
41
- }
42
- .rf-reveal-step {
43
- transition: opacity 0.3s ease, transform 0.3s ease;
44
- }
45
- .rf-reveal-step--visible {
46
- opacity: 1;
47
- transform: translateY(0);
48
- }
49
- .rf-reveal-step--hidden {
50
- opacity: 0;
51
- margin: 0;
52
- transform: translateY(0.5rem);
53
- }
54
- .rf-reveal-step__content {
55
- padding: 1rem 0;
56
- border-bottom: 1px solid var(--rf-color-border);
57
- }
58
- .rf-reveal-step__title {
59
- font-size: var(--rf-text-lg);
60
- font-weight: var(--rf-weight-semibold);
61
- margin: 0 0 0.5rem;
62
- }
63
- .rf-reveal-step__body p:last-child { margin-bottom: 0; }
64
- .rf-reveal__next,
65
- .rf-reveal__reset {
66
- gap: 0.5rem;
67
- margin-top: 1rem;
68
- padding: 0.5rem 1.25rem;
69
- border: 1px solid var(--rf-color-border);
70
- border-radius: var(--rf-radius-md);
71
- background: var(--rf-color-surface);
72
- color: var(--rf-color-text);
73
- font-size: var(--rf-text-sm);
74
- font-weight: var(--rf-weight-medium);
75
- cursor: pointer;
76
- transition: background 0.15s;
77
- }
78
- .rf-reveal__next:hover,
79
- .rf-reveal__reset:hover {
80
- background: var(--rf-color-border);
81
- }
82
-
5
+ .rf-reveal__preamble {
6
+ margin-bottom: 1.5rem;
7
+ }
8
+ .rf-reveal__eyebrow {
9
+ font-size: var(--rf-text-sm);
10
+ font-weight: var(--rf-weight-semibold);
11
+ letter-spacing: var(--rf-tracking-wider);
12
+ text-transform: uppercase;
13
+ color: var(--rf-color-primary);
14
+ margin: 0 0 0.5rem;
15
+ }
16
+ .rf-reveal__eyebrow:has(a) {
17
+ padding: 0.25rem 0.875rem;
18
+ border: 1px solid var(--rf-color-border);
19
+ border-radius: var(--rf-radius-full);
20
+ color: var(--rf-color-text);
21
+ font-weight: var(--rf-weight-normal);
22
+ text-transform: none;
23
+ letter-spacing: var(--rf-tracking-normal);
24
+ transition: border-color 150ms ease;
25
+ }
26
+ .rf-reveal__eyebrow:has(a):hover {
27
+ border-color: var(--rf-color-muted);
28
+ }
29
+ .rf-reveal__eyebrow:has(a) a {
30
+ color: var(--rf-color-primary);
31
+ font-weight: var(--rf-weight-semibold);
32
+ text-decoration: none;
33
+ }
34
+ .rf-reveal__eyebrow:has(a) a::before {
35
+ border-radius: inherit;
36
+ }
37
+ .rf-reveal__headline {
38
+ margin-top: 0;
39
+ }
40
+ .rf-reveal__blurb {
41
+ color: var(--rf-color-muted);
42
+ margin-bottom: 0;
43
+ }
44
+ .rf-reveal__image {
45
+ margin-bottom: 1rem;
46
+ }
47
+ .rf-reveal__steps {
48
+ gap: 1rem;
49
+ }
50
+ .rf-reveal-step {
51
+ transition:
52
+ opacity 0.3s ease,
53
+ transform 0.3s ease;
54
+ }
55
+ .rf-reveal-step--visible {
56
+ opacity: 1;
57
+ transform: translateY(0);
58
+ }
59
+ .rf-reveal-step--hidden {
60
+ opacity: 0;
61
+ margin: 0;
62
+ transform: translateY(0.5rem);
63
+ }
64
+ .rf-reveal-step__content {
65
+ padding: 1rem 0;
66
+ border-bottom: 1px solid var(--rf-color-border);
67
+ }
68
+ .rf-reveal-step__title {
69
+ font-size: var(--rf-text-lg);
70
+ font-weight: var(--rf-weight-semibold);
71
+ margin: 0 0 0.5rem;
72
+ }
73
+ .rf-reveal-step__body p:last-child {
74
+ margin-bottom: 0;
75
+ }
76
+ .rf-reveal__next,
77
+ .rf-reveal__reset {
78
+ gap: 0.5rem;
79
+ margin-top: 1rem;
80
+ padding: 0.5rem 1.25rem;
81
+ border: 1px solid var(--rf-color-border);
82
+ border-radius: var(--rf-radius-md);
83
+ background: var(--rf-color-surface);
84
+ color: var(--rf-color-text);
85
+ font-size: var(--rf-text-sm);
86
+ font-weight: var(--rf-weight-medium);
87
+ cursor: pointer;
88
+ transition: background 0.15s;
89
+ }
90
+ .rf-reveal__next:hover,
91
+ .rf-reveal__reset:hover {
92
+ background: var(--rf-color-border);
93
+ }
83
94
  }