@refrakt-md/lumina 0.33.0 → 0.35.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 +623 -0
  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 +36 -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 +96 -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,8 +1,8 @@
1
1
  @layer skin {
2
- /* Sandbox — skin. The iframe clip/fill + banner/poster/activate layout live in
2
+ /* Sandbox — skin. The iframe clip/fill + banner/poster/activate layout live in
3
3
  * @refrakt-md/skeleton (styles/runes/sandbox.css). */
4
4
 
5
- /* The iframe canvas is opaque (the behaviour writes `color-scheme` onto the
5
+ /* The iframe canvas is opaque (the behaviour writes `color-scheme` onto the
6
6
  * srcdoc `<html>`, so the UA paints a solid backdrop — `background: transparent`
7
7
  * can't make it see-through). A rounded shape therefore can't come from inside
8
8
  * the sandbox; the embedding element has to clip it. The sandbox owns its
@@ -13,62 +13,61 @@
13
13
  * (hero/feature) where the guest keeps its own chrome — while a clip-host well
14
14
  * rounds it to the smaller media tier via the shared `[data-section="media"]
15
15
  * > *` rule. A full-bleed cover/backdrop sandbox sits flush. */
16
- .rf-sandbox {
17
- border-radius: var(--rf-radius-container);
18
- }
19
- [data-media-position="cover"] .rf-sandbox {
20
- border-radius: 0;
21
- }
22
- .rf-sandbox iframe {
23
- border: none;
24
- border-radius: inherit;
25
- }
26
- /* Static fallback (pre/code shown before hydration) */
27
- .rf-sandbox pre {
28
- margin: 0;
29
- }
30
- /* When inside preview, remove sandbox margin */
31
- .rf-preview .rf-sandbox {
32
- margin: 0;
33
- }
34
- /* Untrusted-mode affordance. */
35
- .rf-sandbox[data-security-mode="untrusted"] {
36
- border: 1px solid var(--rf-color-warning, #b45309);
37
- }
38
- .rf-sandbox__untrusted-banner {
39
- padding: 0.5rem 0.75rem;
40
- font-size: var(--rf-text-sm);
41
- line-height: 1.25rem;
42
- font-weight: var(--rf-weight-semibold);
43
- color: var(--rf-color-warning);
44
- background: var(--rf-color-warning-bg, #fef3c7);
45
- border-bottom: 1px solid var(--rf-color-warning, #b45309);
46
- }
47
- .rf-sandbox__poster {
48
- background: var(--rf-color-surface-2, var(--rf-color-surface, #f4f4f5));
49
- }
50
- .rf-sandbox__activate {
51
- gap: 0.5ch;
52
- padding: 0.5rem 1rem;
53
- font: inherit;
54
- font-weight: var(--rf-weight-semibold);
55
- color: var(--rf-color-on-accent, #fff);
56
- background: var(--rf-color-accent, #2563eb);
57
- border: none;
58
- border-radius: var(--rf-radius-md);
59
- cursor: pointer;
60
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.25);
61
- }
62
- .rf-sandbox__activate::before {
63
- content: "▶";
64
- font-size: 0.85em;
65
- }
66
- .rf-sandbox__activate:hover {
67
- background: var(--rf-color-accent-hover, var(--rf-color-accent, #1d4ed8));
68
- }
69
- .rf-sandbox__activate:focus-visible {
70
- outline: 2px solid var(--rf-color-accent, #2563eb);
71
- outline-offset: 2px;
72
- }
73
-
16
+ .rf-sandbox {
17
+ border-radius: var(--rf-radius-container);
18
+ }
19
+ [data-media-position="cover"] .rf-sandbox {
20
+ border-radius: 0;
21
+ }
22
+ .rf-sandbox iframe {
23
+ border: none;
24
+ border-radius: inherit;
25
+ }
26
+ /* Static fallback (pre/code shown before hydration) */
27
+ .rf-sandbox pre {
28
+ margin: 0;
29
+ }
30
+ /* When inside preview, remove sandbox margin */
31
+ .rf-preview .rf-sandbox {
32
+ margin: 0;
33
+ }
34
+ /* Untrusted-mode affordance. */
35
+ .rf-sandbox[data-security-mode="untrusted"] {
36
+ border: 1px solid var(--rf-color-warning, #b45309);
37
+ }
38
+ .rf-sandbox__untrusted-banner {
39
+ padding: 0.5rem 0.75rem;
40
+ font-size: var(--rf-text-sm);
41
+ line-height: 1.25rem;
42
+ font-weight: var(--rf-weight-semibold);
43
+ color: var(--rf-color-warning);
44
+ background: var(--rf-color-warning-bg, #fef3c7);
45
+ border-bottom: 1px solid var(--rf-color-warning, #b45309);
46
+ }
47
+ .rf-sandbox__poster {
48
+ background: var(--rf-color-surface-2, var(--rf-color-surface, #f4f4f5));
49
+ }
50
+ .rf-sandbox__activate {
51
+ gap: 0.5ch;
52
+ padding: 0.5rem 1rem;
53
+ font: inherit;
54
+ font-weight: var(--rf-weight-semibold);
55
+ color: var(--rf-color-on-accent, #fff);
56
+ background: var(--rf-color-accent, #2563eb);
57
+ border: none;
58
+ border-radius: var(--rf-radius-md);
59
+ cursor: pointer;
60
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.25);
61
+ }
62
+ .rf-sandbox__activate::before {
63
+ content: "▶";
64
+ font-size: 0.85em;
65
+ }
66
+ .rf-sandbox__activate:hover {
67
+ background: var(--rf-color-accent-hover, var(--rf-color-accent, #1d4ed8));
68
+ }
69
+ .rf-sandbox__activate:focus-visible {
70
+ outline: 2px solid var(--rf-color-accent, #2563eb);
71
+ outline-offset: 2px;
72
+ }
74
73
  }
@@ -1,56 +1,63 @@
1
1
  @layer skin {
2
- /* Section — a generic page section: an eyebrow/headline/blurb header above
2
+ /* Section — a generic page section: an eyebrow/headline/blurb header above
3
3
  arbitrary body content. Header styling mirrors the shared page-section look
4
4
  (reveal/feature); the body is content-agnostic and full width. */
5
- .rf-section {
6
- gap: 1.5rem;
7
- }
8
-
9
- /* Header */
10
- .rf-section__preamble {
11
- gap: 0.5rem;
12
- max-width: var(--rf-measure, 65ch);
13
- margin: 0;
14
- }
15
- .rf-section__eyebrow {
16
- font-size: var(--rf-text-sm);
17
- font-weight: var(--rf-weight-semibold);
18
- letter-spacing: var(--rf-tracking-wider);
19
- text-transform: uppercase;
20
- color: var(--rf-color-primary);
21
- margin: 0;
22
- }
23
- .rf-section__eyebrow:has(a) {
24
- padding: 0.25rem 0.875rem;
25
- border: 1px solid var(--rf-color-border);
26
- border-radius: var(--rf-radius-full);
27
- color: var(--rf-color-text);
28
- font-weight: var(--rf-weight-normal);
29
- text-transform: none;
30
- letter-spacing: var(--rf-tracking-normal);
31
- transition: border-color 150ms ease;
32
- }
33
- .rf-section__eyebrow:has(a):hover { border-color: var(--rf-color-muted); }
34
- .rf-section__eyebrow:has(a) a { color: var(--rf-color-primary); font-weight: var(--rf-weight-semibold); text-decoration: none; }
35
- .rf-section__eyebrow:has(a) a::before { border-radius: inherit; }
36
- .rf-section__headline {
37
- margin: 0;
38
- }
39
- .rf-section__blurb {
40
- color: var(--rf-color-muted);
41
- margin: 0;
42
- }
43
- .rf-section__image {
44
- margin: 0;
45
- border-radius: var(--rf-radius-md);
46
- }
5
+ .rf-section {
6
+ gap: 1.5rem;
7
+ }
47
8
 
48
- /* Header alignment (the body stays full width). */
49
- .rf-section[data-align="center"] .rf-section__preamble {
50
- text-align: center;
51
- }
52
- .rf-section[data-align="end"] .rf-section__preamble {
53
- text-align: end;
54
- }
9
+ /* Header */
10
+ .rf-section__preamble {
11
+ gap: 0.5rem;
12
+ max-width: var(--rf-measure, 65ch);
13
+ margin: 0;
14
+ }
15
+ .rf-section__eyebrow {
16
+ font-size: var(--rf-text-sm);
17
+ font-weight: var(--rf-weight-semibold);
18
+ letter-spacing: var(--rf-tracking-wider);
19
+ text-transform: uppercase;
20
+ color: var(--rf-color-primary);
21
+ margin: 0;
22
+ }
23
+ .rf-section__eyebrow:has(a) {
24
+ padding: 0.25rem 0.875rem;
25
+ border: 1px solid var(--rf-color-border);
26
+ border-radius: var(--rf-radius-full);
27
+ color: var(--rf-color-text);
28
+ font-weight: var(--rf-weight-normal);
29
+ text-transform: none;
30
+ letter-spacing: var(--rf-tracking-normal);
31
+ transition: border-color 150ms ease;
32
+ }
33
+ .rf-section__eyebrow:has(a):hover {
34
+ border-color: var(--rf-color-muted);
35
+ }
36
+ .rf-section__eyebrow:has(a) a {
37
+ color: var(--rf-color-primary);
38
+ font-weight: var(--rf-weight-semibold);
39
+ text-decoration: none;
40
+ }
41
+ .rf-section__eyebrow:has(a) a::before {
42
+ border-radius: inherit;
43
+ }
44
+ .rf-section__headline {
45
+ margin: 0;
46
+ }
47
+ .rf-section__blurb {
48
+ color: var(--rf-color-muted);
49
+ margin: 0;
50
+ }
51
+ .rf-section__image {
52
+ margin: 0;
53
+ border-radius: var(--rf-radius-md);
54
+ }
55
55
 
56
+ /* Header alignment (the body stays full width). */
57
+ .rf-section[data-align="center"] .rf-section__preamble {
58
+ text-align: center;
59
+ }
60
+ .rf-section[data-align="end"] .rf-section__preamble {
61
+ text-align: end;
62
+ }
56
63
  }
@@ -1,21 +1,40 @@
1
1
  @layer skin {
2
- /* Spacing — vertical margin around the showcase */
3
- .rf-showcase[data-spacing="flush"] { margin-top: 0; margin-bottom: 0; }
4
- .rf-showcase[data-spacing="tight"] { margin-top: var(--rf-spacing-section-tight, 1.5rem); margin-bottom: var(--rf-spacing-section-tight, 1.5rem); }
5
- .rf-showcase[data-spacing="loose"] { margin-top: var(--rf-spacing-section-loose, 8rem); margin-bottom: var(--rf-spacing-section-loose, 8rem); }
6
- .rf-showcase[data-spacing="breathe"] { margin-top: var(--rf-spacing-section-breathe, 12rem); margin-bottom: var(--rf-spacing-section-breathe, 12rem); }
7
- /* Inset — all-around padding (not just inline, since showcase is a contained frame) */
8
- .rf-showcase[data-inset="flush"] { padding: 0; }
9
- .rf-showcase[data-inset="tight"] { padding: var(--rf-inset-tight, 1rem); }
10
- .rf-showcase[data-inset="loose"] { padding: var(--rf-inset-loose, 4rem); }
11
- .rf-showcase[data-inset="breathe"] { padding: var(--rf-inset-breathe, 8rem); }
12
- /* Responsive: collapse bleed on mobile */
13
- @media (max-width: 768px) {
14
- .rf-showcase[data-bleed] {
2
+ /* Spacing — vertical margin around the showcase */
3
+ .rf-showcase[data-spacing="flush"] {
15
4
  margin-top: 0;
16
5
  margin-bottom: 0;
17
- margin-inline-end: 0;
18
6
  }
19
- }
20
-
7
+ .rf-showcase[data-spacing="tight"] {
8
+ margin-top: var(--rf-spacing-section-tight, 1.5rem);
9
+ margin-bottom: var(--rf-spacing-section-tight, 1.5rem);
10
+ }
11
+ .rf-showcase[data-spacing="loose"] {
12
+ margin-top: var(--rf-spacing-section-loose, 8rem);
13
+ margin-bottom: var(--rf-spacing-section-loose, 8rem);
14
+ }
15
+ .rf-showcase[data-spacing="breathe"] {
16
+ margin-top: var(--rf-spacing-section-breathe, 12rem);
17
+ margin-bottom: var(--rf-spacing-section-breathe, 12rem);
18
+ }
19
+ /* Inset — all-around padding (not just inline, since showcase is a contained frame) */
20
+ .rf-showcase[data-inset="flush"] {
21
+ padding: 0;
22
+ }
23
+ .rf-showcase[data-inset="tight"] {
24
+ padding: var(--rf-inset-tight, 1rem);
25
+ }
26
+ .rf-showcase[data-inset="loose"] {
27
+ padding: var(--rf-inset-loose, 4rem);
28
+ }
29
+ .rf-showcase[data-inset="breathe"] {
30
+ padding: var(--rf-inset-breathe, 8rem);
31
+ }
32
+ /* Responsive: collapse bleed on mobile */
33
+ @media (max-width: 768px) {
34
+ .rf-showcase[data-bleed] {
35
+ margin-top: 0;
36
+ margin-bottom: 0;
37
+ margin-inline-end: 0;
38
+ }
39
+ }
21
40
  }
@@ -1,29 +1,32 @@
1
1
  @layer skin {
2
- /* Sidenote */
3
- .rf-sidenote {
4
- margin: 1rem 0;
5
- font-size: var(--rf-text-sm);
6
- line-height: var(--rf-leading-relaxed);
7
- }
8
- .rf-sidenote--sidenote {
9
- border-left: 3px solid var(--rf-color-primary);
10
- padding: 0.75rem 1rem;
11
- color: var(--rf-color-muted);
12
- }
13
- .rf-sidenote--footnote {
14
- border-top: 1px solid var(--rf-color-border);
15
- padding-top: 0.75rem;
16
- margin-top: 2rem;
17
- color: var(--rf-color-muted);
18
- }
19
- .rf-sidenote--tooltip {
20
- background: var(--rf-color-surface-hover);
21
- border: 1px solid var(--rf-color-border);
22
- border-radius: var(--rf-radius-md);
23
- padding: 0.75rem 1rem;
24
- color: var(--rf-color-muted);
25
- }
26
- .rf-sidenote__body p { margin: 0; }
27
- .rf-sidenote__body p + p { margin-top: 0.5rem; }
28
-
2
+ /* Sidenote */
3
+ .rf-sidenote {
4
+ margin: 1rem 0;
5
+ font-size: var(--rf-text-sm);
6
+ line-height: var(--rf-leading-relaxed);
7
+ }
8
+ .rf-sidenote--sidenote {
9
+ border-left: 3px solid var(--rf-color-primary);
10
+ padding: 0.75rem 1rem;
11
+ color: var(--rf-color-muted);
12
+ }
13
+ .rf-sidenote--footnote {
14
+ border-top: 1px solid var(--rf-color-border);
15
+ padding-top: 0.75rem;
16
+ margin-top: 2rem;
17
+ color: var(--rf-color-muted);
18
+ }
19
+ .rf-sidenote--tooltip {
20
+ background: var(--rf-color-surface-hover);
21
+ border: 1px solid var(--rf-color-border);
22
+ border-radius: var(--rf-radius-md);
23
+ padding: 0.75rem 1rem;
24
+ color: var(--rf-color-muted);
25
+ }
26
+ .rf-sidenote__body p {
27
+ margin: 0;
28
+ }
29
+ .rf-sidenote__body p + p {
30
+ margin-top: 0.5rem;
31
+ }
29
32
  }
@@ -1,5 +1,5 @@
1
1
  @layer skin {
2
- /* Snippet — file embedded as a code block.
2
+ /* Snippet — file embedded as a code block.
3
3
  *
4
4
  * The standalone form is a `<figure class="rf-snippet">` wrapping the
5
5
  * existing `<pre class="rf-code-block">`. Nested forms (snippet inside
@@ -14,17 +14,16 @@
14
14
  * SPEC-062.
15
15
  */
16
16
 
17
- .rf-snippet {
18
- /* Override the UA `<figure>` defaults — browsers ship with
17
+ .rf-snippet {
18
+ /* Override the UA `<figure>` defaults — browsers ship with
19
19
  * margin-inline: 40px and margin-block: 1em which makes the snippet
20
20
  * figure look indented inside any container. The longhand resets
21
21
  * cover both physical and logical margin properties because the
22
22
  * physical longhands set by `margin:` don't always cascade-override
23
23
  * the UA's logical longhands. */
24
- margin: var(--rf-spacing-md) 0;
25
- margin-inline-start: 0;
26
- margin-inline-end: 0;
27
- padding: 0;
28
- }
29
-
24
+ margin: var(--rf-spacing-md) 0;
25
+ margin-inline-start: 0;
26
+ margin-inline-end: 0;
27
+ padding: 0;
28
+ }
30
29
  }
@@ -1,98 +1,96 @@
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-spacing {
6
- --rf-title-size: var(--rf-text-lg);
7
- }
4
+ .rf-spacing {
5
+ --rf-title-size: var(--rf-text-lg);
6
+ }
8
7
 
9
- /* Spacing — spacing scale, radii, and shadow display */
10
- .rf-spacing__title {
11
- /* WORK-538 — read the prominence override first; the fallback is this rune's
8
+ /* Spacing — spacing scale, radii, and shadow display */
9
+ .rf-spacing__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-semibold);
16
- margin-bottom: 1rem;
17
- }
18
- .rf-spacing__section {
19
- margin-bottom: 2rem;
20
- }
21
- .rf-spacing__section:last-child {
22
- margin-bottom: 0;
23
- }
24
- .rf-spacing__section-title {
25
- font-size: var(--rf-text-xs);
26
- font-weight: var(--rf-weight-semibold);
27
- text-transform: uppercase;
28
- letter-spacing: var(--rf-tracking-wider);
29
- color: var(--rf-color-muted);
30
- margin-bottom: 0.75rem;
31
- }
32
-
33
- /* Spacing scale — proportional bars */
34
- .rf-spacing__scale {
35
- gap: 0.375rem;
36
- }
37
- .rf-spacing__scale-item {
38
- gap: 0.75rem;
39
- }
40
- .rf-spacing__scale-bar {
41
- background: var(--rf-color-primary);
42
- border-radius: var(--rf-radius-sm, 4px);
43
- opacity: 0.8;
44
- }
45
- .rf-spacing__scale-label {
46
- font-size: var(--rf-text-xs);
47
- font-family: var(--rf-font-mono, monospace);
48
- color: var(--rf-color-text, #1a1a2e);
49
- white-space: nowrap;
50
- }
51
- .rf-spacing__scale-multiplier {
52
- color: var(--rf-color-muted);
53
- margin-left: 0.25rem;
54
- }
13
+ font-size: var(--rf-prominence-size, var(--rf-title-size));
14
+ font-weight: var(--rf-weight-semibold);
15
+ margin-bottom: 1rem;
16
+ }
17
+ .rf-spacing__section {
18
+ margin-bottom: 2rem;
19
+ }
20
+ .rf-spacing__section:last-child {
21
+ margin-bottom: 0;
22
+ }
23
+ .rf-spacing__section-title {
24
+ font-size: var(--rf-text-xs);
25
+ font-weight: var(--rf-weight-semibold);
26
+ text-transform: uppercase;
27
+ letter-spacing: var(--rf-tracking-wider);
28
+ color: var(--rf-color-muted);
29
+ margin-bottom: 0.75rem;
30
+ }
55
31
 
56
- /* Radius — rounded corner samples */
57
- .rf-spacing__radii {
58
- gap: 1.25rem;
59
- }
60
- .rf-spacing__radius-item {
61
- gap: 0.375rem;
62
- }
63
- .rf-spacing__radius-sample {
64
- border: 2px solid var(--rf-color-border, #e5e7eb);
65
- background: var(--rf-color-surface-raised, #f9fafb);
66
- }
67
- .rf-spacing__radius-label {
68
- font-weight: var(--rf-weight-medium);
69
- font-size: var(--rf-text-xs);
70
- }
71
- .rf-spacing__radius-value {
72
- font-size: var(--rf-text-xs);
73
- font-family: var(--rf-font-mono, monospace);
74
- color: var(--rf-color-muted);
75
- }
32
+ /* Spacing scale — proportional bars */
33
+ .rf-spacing__scale {
34
+ gap: 0.375rem;
35
+ }
36
+ .rf-spacing__scale-item {
37
+ gap: 0.75rem;
38
+ }
39
+ .rf-spacing__scale-bar {
40
+ background: var(--rf-color-primary);
41
+ border-radius: var(--rf-radius-sm, 4px);
42
+ opacity: 0.8;
43
+ }
44
+ .rf-spacing__scale-label {
45
+ font-size: var(--rf-text-xs);
46
+ font-family: var(--rf-font-mono, monospace);
47
+ color: var(--rf-color-text, #1a1a2e);
48
+ white-space: nowrap;
49
+ }
50
+ .rf-spacing__scale-multiplier {
51
+ color: var(--rf-color-muted);
52
+ margin-left: 0.25rem;
53
+ }
76
54
 
77
- /* Shadows — sample cards */
78
- .rf-spacing__shadows {
79
- gap: 1.5rem;
80
- }
81
- .rf-spacing__shadow-item {
82
- gap: 0.5rem;
83
- }
84
- .rf-spacing__shadow-sample {
85
- background: var(--rf-color-surface, #fff);
86
- border-radius: var(--rf-radius-md, 8px);
87
- }
88
- .rf-spacing__shadow-label {
89
- font-weight: var(--rf-weight-medium);
90
- font-size: var(--rf-text-xs);
91
- }
55
+ /* Radius — rounded corner samples */
56
+ .rf-spacing__radii {
57
+ gap: 1.25rem;
58
+ }
59
+ .rf-spacing__radius-item {
60
+ gap: 0.375rem;
61
+ }
62
+ .rf-spacing__radius-sample {
63
+ border: 2px solid var(--rf-color-border, #e5e7eb);
64
+ background: var(--rf-color-surface-raised, #f9fafb);
65
+ }
66
+ .rf-spacing__radius-label {
67
+ font-weight: var(--rf-weight-medium);
68
+ font-size: var(--rf-text-xs);
69
+ }
70
+ .rf-spacing__radius-value {
71
+ font-size: var(--rf-text-xs);
72
+ font-family: var(--rf-font-mono, monospace);
73
+ color: var(--rf-color-muted);
74
+ }
92
75
 
93
- /* Context-aware: no outer margin when inside design-context */
94
- .rf-spacing--in-design-context {
95
- margin: 0;
96
- }
76
+ /* Shadows — sample cards */
77
+ .rf-spacing__shadows {
78
+ gap: 1.5rem;
79
+ }
80
+ .rf-spacing__shadow-item {
81
+ gap: 0.5rem;
82
+ }
83
+ .rf-spacing__shadow-sample {
84
+ background: var(--rf-color-surface, #fff);
85
+ border-radius: var(--rf-radius-md, 8px);
86
+ }
87
+ .rf-spacing__shadow-label {
88
+ font-weight: var(--rf-weight-medium);
89
+ font-size: var(--rf-text-xs);
90
+ }
97
91
 
92
+ /* Context-aware: no outer margin when inside design-context */
93
+ .rf-spacing--in-design-context {
94
+ margin: 0;
95
+ }
98
96
  }
@@ -1,33 +1,32 @@
1
1
  @layer skin {
2
- /* Spec */
2
+ /* Spec */
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. Layout-level geometry lives on [data-zone-layout]
6
6
  * selectors. */
7
7
 
8
- .rf-spec__eyebrow {
9
- margin-bottom: 0.75rem;
10
- }
11
- .rf-spec__title h1,
12
- .rf-spec__title h2,
13
- .rf-spec__title h3 {
14
- margin-top: 0;
15
- }
16
-
17
- .rf-spec__metadata {
18
- margin-bottom: 1.5rem;
19
- }
8
+ .rf-spec__eyebrow {
9
+ margin-bottom: 0.75rem;
10
+ }
11
+ .rf-spec__title h1,
12
+ .rf-spec__title h2,
13
+ .rf-spec__title h3 {
14
+ margin-top: 0;
15
+ }
20
16
 
21
- .rf-spec__body {
22
- font-size: var(--rf-text-sm);
23
- line-height: var(--rf-leading-relaxed);
24
- }
25
- .rf-spec__body blockquote {
26
- border-left: 3px solid var(--rf-color-border);
27
- padding: 0.5rem 1rem;
28
- margin: 0.75rem 0;
29
- font-style: italic;
30
- color: var(--rf-color-muted);
31
- }
17
+ .rf-spec__metadata {
18
+ margin-bottom: 1.5rem;
19
+ }
32
20
 
21
+ .rf-spec__body {
22
+ font-size: var(--rf-text-sm);
23
+ line-height: var(--rf-leading-relaxed);
24
+ }
25
+ .rf-spec__body blockquote {
26
+ border-left: 3px solid var(--rf-color-border);
27
+ padding: 0.5rem 1rem;
28
+ margin: 0.75rem 0;
29
+ font-style: italic;
30
+ color: var(--rf-color-muted);
31
+ }
33
32
  }