@refrakt-md/lumina 0.30.1 → 0.32.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.
- package/contracts/structures.json +274 -298
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -3
- package/dist/config.js.map +1 -1
- package/package.json +5 -5
- package/styles/dimensions/density.css +25 -1
- package/styles/dimensions/sections.css +8 -4
- package/styles/dimensions/surfaces.css +21 -6
- package/styles/runes/bento.css +5 -1
- package/styles/runes/blog.css +5 -1
- package/styles/runes/cta.css +5 -1
- package/styles/runes/design-context.css +11 -1
- package/styles/runes/hero.css +9 -2
- package/styles/runes/palette.css +11 -1
- package/styles/runes/spacing.css +11 -1
- package/styles/runes/typography.css +11 -1
package/dist/config.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { type ThemeConfigOverrides } from '@refrakt-md/transform';
|
|
2
|
+
/** Lumina's overrides, exported separately from the merged result so tests can
|
|
3
|
+
* re-run the merge with a diagnostics sink — notably the ADR-028 identity
|
|
4
|
+
* guard, which Lumina must not trip (it overrides no rune at all). */
|
|
5
|
+
export declare const luminaOverrides: ThemeConfigOverrides;
|
|
1
6
|
/** Lumina theme configuration — extends base with icon SVGs and tint presets */
|
|
2
7
|
export declare const luminaConfig: import("@refrakt-md/transform").ThemeConfig;
|
|
3
8
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAGpF;;uEAEuE;AACvE,eAAO,MAAM,eAAe,EAAE,oBA2F7B,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,YAAY,6CAAgD,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { baseConfig } from '@refrakt-md/runes';
|
|
2
2
|
import { mergeThemeConfig } from '@refrakt-md/transform';
|
|
3
3
|
import { icons as lucideIcons } from './icons.js';
|
|
4
|
-
/** Lumina
|
|
5
|
-
|
|
4
|
+
/** Lumina's overrides, exported separately from the merged result so tests can
|
|
5
|
+
* re-run the merge with a diagnostics sink — notably the ADR-028 identity
|
|
6
|
+
* guard, which Lumina must not trip (it overrides no rune at all). */
|
|
7
|
+
export const luminaOverrides = {
|
|
6
8
|
tints: {
|
|
7
9
|
base: {
|
|
8
10
|
light: {
|
|
@@ -93,5 +95,7 @@ export const luminaConfig = mergeThemeConfig(baseConfig, {
|
|
|
93
95
|
},
|
|
94
96
|
global: lucideIcons,
|
|
95
97
|
},
|
|
96
|
-
}
|
|
98
|
+
};
|
|
99
|
+
/** Lumina theme configuration — extends base with icon SVGs and tint presets */
|
|
100
|
+
export const luminaConfig = mergeThemeConfig(baseConfig, luminaOverrides);
|
|
97
101
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAA6B,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AAElD;;uEAEuE;AACvE,MAAM,CAAC,MAAM,eAAe,GAAyB;IACpD,KAAK,EAAE;QACN,IAAI,EAAE;YACL,KAAK,EAAE;gBACN,EAAE,EAAE,oBAAoB;gBACxB,OAAO,EAAE,yBAAyB;gBAClC,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,uBAAuB;gBAC9B,OAAO,EAAE,yBAAyB;gBAClC,MAAM,EAAE,wBAAwB;aAChC;YACD,IAAI,EAAE;gBACL,EAAE,EAAE,oBAAoB;gBACxB,OAAO,EAAE,yBAAyB;gBAClC,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,uBAAuB;gBAC9B,OAAO,EAAE,yBAAyB;gBAClC,MAAM,EAAE,wBAAwB;aAChC;SACD;QACD,MAAM,EAAE;YACP,KAAK,EAAE;gBACN,EAAE,EAAE,yBAAyB;gBAC7B,OAAO,EAAE,+BAA+B;gBACxC,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,uBAAuB;gBAC9B,OAAO,EAAE,yBAAyB;gBAClC,MAAM,EAAE,wBAAwB;aAChC;YACD,IAAI,EAAE;gBACL,EAAE,EAAE,yBAAyB;gBAC7B,OAAO,EAAE,+BAA+B;gBACxC,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,uBAAuB;gBAC9B,OAAO,EAAE,yBAAyB;gBAClC,MAAM,EAAE,wBAAwB;aAChC;SACD;QACD,IAAI,EAAE;YACL,KAAK,EAAE;gBACN,EAAE,EAAE,gCAAgC;gBACpC,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,yBAAyB;gBAClC,MAAM,EAAE,wBAAwB;aAChC;YACD,IAAI,EAAE;gBACL,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,yBAAyB;gBAClC,MAAM,EAAE,SAAS;aACjB;SACD;QACD,IAAI,EAAE;YACL,KAAK,EAAE;gBACN,EAAE,EAAE,yBAAyB;gBAC7B,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,yBAAyB;gBAClC,MAAM,EAAE,6BAA6B;aACrC;YACD,IAAI,EAAE;gBACL,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,yBAAyB;gBAClC,MAAM,EAAE,SAAS;aACjB;SACD;QACD,IAAI,EAAE;YACL,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE;gBACL,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,wBAAwB;aACjC;SACD;KACD;IACD,KAAK,EAAE;QACN,IAAI,EAAE;YACL,IAAI,EAAE,4SAA4S;YAClT,OAAO,EAAE,iXAAiX;YAC1X,OAAO,EAAE,uSAAuS;YAChT,KAAK,EAAE,qRAAqR;SAC5R;QACD,uEAAuE;QACvE,yEAAyE;QACzE,0EAA0E;QAC1E,sEAAsE;QACtE,SAAS,EAAE;YACV,OAAO,EAAE,2MAA2M;SACpN;QACD,MAAM,EAAE,WAAW;KACnB;CACD,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@refrakt-md/lumina",
|
|
3
3
|
"description": "Lumina theme for refrakt.md — design tokens, CSS, identity transform, and layout configs",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.32.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -86,10 +86,10 @@
|
|
|
86
86
|
"generate-tokens": "node scripts/generate-tokens.mjs"
|
|
87
87
|
},
|
|
88
88
|
"dependencies": {
|
|
89
|
-
"@refrakt-md/runes": "0.
|
|
90
|
-
"@refrakt-md/skeleton": "0.
|
|
91
|
-
"@refrakt-md/transform": "0.
|
|
92
|
-
"@refrakt-md/types": "0.
|
|
89
|
+
"@refrakt-md/runes": "0.32.0",
|
|
90
|
+
"@refrakt-md/skeleton": "0.32.0",
|
|
91
|
+
"@refrakt-md/transform": "0.32.0",
|
|
92
|
+
"@refrakt-md/types": "0.32.0"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
95
|
"postcss": "^8.4.0"
|
|
@@ -38,6 +38,15 @@
|
|
|
38
38
|
--rf-title-size: var(--rf-text);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
/* Every rune root clears the prominence override so an ancestor's `prominence=`
|
|
42
|
+
* cannot leak into a nested rune's title — the same protection the density
|
|
43
|
+
* declarations above already give --rf-title-size. Declared here because this
|
|
44
|
+
* file is imported before dimensions/surfaces.css, so a rune carrying both
|
|
45
|
+
* `data-density` and `data-prominence` still keeps its own. */
|
|
46
|
+
[data-density] {
|
|
47
|
+
--rf-prominence-size: initial;
|
|
48
|
+
}
|
|
49
|
+
|
|
41
50
|
[data-density="minimal"] [data-section="description"] {
|
|
42
51
|
display: none;
|
|
43
52
|
}
|
|
@@ -46,6 +55,20 @@
|
|
|
46
55
|
display: none;
|
|
47
56
|
}
|
|
48
57
|
|
|
58
|
+
/* Most runes put the title beside the body; card puts its leading heading
|
|
59
|
+
* *inside* the body slot. The blanket hide above would take the title with it
|
|
60
|
+
* and leave an empty surface, so where a title is nested in the body, keep the
|
|
61
|
+
* body box and hide only its other children — "title and primary metadata only"
|
|
62
|
+
* then means what it says on those runes too. (SPEC-125 Phase 1: card only
|
|
63
|
+
* gained a `body` role in v0.31.0, so this case could not arise before.) */
|
|
64
|
+
[data-density="minimal"] [data-section="body"]:has(> [data-name="title"]) {
|
|
65
|
+
display: revert;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
[data-density="minimal"] [data-section="body"]:has(> [data-name="title"]) > :not([data-name="title"]) {
|
|
69
|
+
display: none;
|
|
70
|
+
}
|
|
71
|
+
|
|
49
72
|
[data-density="minimal"] [data-section="footer"] {
|
|
50
73
|
display: none;
|
|
51
74
|
}
|
|
@@ -72,7 +95,8 @@
|
|
|
72
95
|
[data-density="minimal"] [data-density="full"] [data-section="description"],
|
|
73
96
|
[data-density="minimal"] [data-density="full"] [data-section="body"],
|
|
74
97
|
[data-density="minimal"] [data-density="full"] [data-section="footer"],
|
|
75
|
-
[data-density="minimal"] [data-density="full"] [data-meta-rank="secondary"]
|
|
98
|
+
[data-density="minimal"] [data-density="full"] [data-meta-rank="secondary"],
|
|
99
|
+
[data-density="minimal"] [data-density="full"] [data-section="body"]:has(> [data-name="title"]) > :not([data-name="title"]) {
|
|
76
100
|
display: revert;
|
|
77
101
|
}
|
|
78
102
|
|
|
@@ -18,12 +18,16 @@
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/* ─── Title: primary heading ──────────────────────────────────────── */
|
|
21
|
-
/*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
21
|
+
/* Two inputs, in priority order:
|
|
22
|
+
* --rf-prominence-size an explicit author `prominence=` (surfaces.css)
|
|
23
|
+
* --rf-title-size the resting size for this density (density.css)
|
|
24
|
+
* They were one variable until v0.32.0, which meant a rune could not state its
|
|
25
|
+
* own resting size without also clobbering the author's override — the reason
|
|
26
|
+
* `prominence` was inert on eight runes (WORK-538). Splitting them lets a rune
|
|
27
|
+
* pin its default while `prominence` still wins. */
|
|
24
28
|
[data-section="title"] {
|
|
25
29
|
font-family: var(--rf-font-sans);
|
|
26
|
-
font-size: var(--rf-title-size, var(--rf-text-2xl));
|
|
30
|
+
font-size: var(--rf-prominence-size, var(--rf-title-size, var(--rf-text-2xl)));
|
|
27
31
|
font-weight: var(--rf-weight-bold);
|
|
28
32
|
line-height: var(--rf-leading-tight);
|
|
29
33
|
color: var(--rf-color-text);
|
|
@@ -85,17 +85,32 @@
|
|
|
85
85
|
/* ─── Prominence: page-section-header type register ───────────────────
|
|
86
86
|
* `data-prominence` re-points the section title size for page-section-header
|
|
87
87
|
* family runes (the engine only emits it where a header role exists). `normal`
|
|
88
|
-
* is the
|
|
89
|
-
* [data-section="title"] via --rf-
|
|
90
|
-
*
|
|
88
|
+
* is the rune's resting size; the other steps ramp away from it, cascading down
|
|
89
|
+
* to [data-section="title"] via --rf-prominence-size.
|
|
90
|
+
*
|
|
91
|
+
* **The ramp is relative, not an absolute type scale** (v0.32.0, WORK-538).
|
|
92
|
+
* The steps used to be fixed sizes — xl / 3xl / 4xl — which only reads as a
|
|
93
|
+
* register when the rune's resting size happens to be the density default. On a
|
|
94
|
+
* hero, whose headline rests above the whole scale, `display` made the title
|
|
95
|
+
* *smaller*; on a bento cell, which rests below it, `quiet` made it *larger*.
|
|
96
|
+
* The multipliers below are the ratios those fixed steps had to the 2xl resting
|
|
97
|
+
* size, so every rune resting at the density default keeps its exact numbers
|
|
98
|
+
* (1.5rem → 20 / 24 / 30 / 40px) while a rune that states its own resting size
|
|
99
|
+
* ramps around that instead.
|
|
100
|
+
*
|
|
101
|
+
* Published as --rf-prominence-size rather than by overwriting --rf-title-size,
|
|
102
|
+
* so a rune can state a resting size without also silencing the author's
|
|
103
|
+
* override. density.css clears the variable at every rune root, before these
|
|
104
|
+
* rules, so an ancestor's prominence cannot leak into a nested rune's title
|
|
105
|
+
* while a rune carrying both still keeps its own. */
|
|
91
106
|
[data-prominence="quiet"] {
|
|
92
|
-
--rf-
|
|
107
|
+
--rf-prominence-size: calc(var(--rf-title-size, var(--rf-text-2xl)) * 5 / 6);
|
|
93
108
|
}
|
|
94
109
|
[data-prominence="prominent"] {
|
|
95
|
-
--rf-
|
|
110
|
+
--rf-prominence-size: calc(var(--rf-title-size, var(--rf-text-2xl)) * 5 / 4);
|
|
96
111
|
}
|
|
97
112
|
[data-prominence="display"] {
|
|
98
|
-
--rf-
|
|
113
|
+
--rf-prominence-size: calc(var(--rf-title-size, var(--rf-text-2xl)) * 5 / 3);
|
|
99
114
|
}
|
|
100
115
|
|
|
101
116
|
/* ─── Media slot shares the surface chrome ───────────────────────────
|
package/styles/runes/bento.css
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
background: var(--rf-color-surface);
|
|
16
16
|
}
|
|
17
17
|
.rf-bento-cell {
|
|
18
|
+
--rf-title-size: var(--rf-text-lg);
|
|
18
19
|
border-radius: var(--rf-radius-container);
|
|
19
20
|
/* Thin-edge inset model: the cell hugs its media with a thin edge; the content
|
|
20
21
|
* zone adds the remaining inset back (below). */
|
|
@@ -45,7 +46,10 @@
|
|
|
45
46
|
padding: calc(var(--container-padding) - var(--bento-cell-edge));
|
|
46
47
|
}
|
|
47
48
|
.rf-bento-cell__title {
|
|
48
|
-
|
|
49
|
+
/* WORK-538 — read the prominence override first; the fallback is this rune's
|
|
50
|
+
* resting size, stated as --rf-title-size on the root so the prominence ramp
|
|
51
|
+
* can compute from it. */
|
|
52
|
+
font-size: var(--rf-prominence-size, var(--rf-title-size));
|
|
49
53
|
font-weight: var(--rf-weight-semibold);
|
|
50
54
|
margin: 0 0 0.5rem;
|
|
51
55
|
}
|
package/styles/runes/blog.css
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
@layer skin {
|
|
2
2
|
/* Blog — post listing with filtering and sorting */
|
|
3
3
|
.rf-blog {
|
|
4
|
+
--rf-title-size: var(--rf-text-3xl);
|
|
4
5
|
padding: 2rem 0;
|
|
5
6
|
}
|
|
6
7
|
.rf-blog__preamble {
|
|
7
8
|
margin-bottom: 2rem;
|
|
8
9
|
}
|
|
9
10
|
.rf-blog__headline {
|
|
10
|
-
|
|
11
|
+
/* WORK-538 — read the prominence override first; the fallback is this rune's
|
|
12
|
+
* resting size, stated as --rf-title-size on the root so the prominence ramp
|
|
13
|
+
* can compute from it. */
|
|
14
|
+
font-size: var(--rf-prominence-size, var(--rf-title-size));
|
|
11
15
|
font-weight: var(--rf-weight-bold);
|
|
12
16
|
letter-spacing: var(--rf-tracking-tight);
|
|
13
17
|
margin: 0 0 0.5rem;
|
package/styles/runes/cta.css
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
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
4
|
.rf-cta {
|
|
5
|
+
--rf-title-size: var(--rf-text-4xl);
|
|
5
6
|
padding: 3.5rem 2rem 3rem;
|
|
6
7
|
}
|
|
7
8
|
.rf-cta .rf-cta__preamble,
|
|
@@ -52,7 +53,10 @@
|
|
|
52
53
|
.rf-cta h2,
|
|
53
54
|
.rf-cta h3,
|
|
54
55
|
.rf-cta__headline {
|
|
55
|
-
|
|
56
|
+
/* WORK-538 — read the prominence override first; the fallback is this rune's
|
|
57
|
+
* resting size, stated as --rf-title-size on the root so the prominence ramp
|
|
58
|
+
* can compute from it. */
|
|
59
|
+
font-size: var(--rf-prominence-size, var(--rf-title-size));
|
|
56
60
|
font-weight: var(--rf-weight-bold);
|
|
57
61
|
letter-spacing: var(--rf-tracking-tight);
|
|
58
62
|
margin-bottom: 0.75rem;
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
+
|
|
3
|
+
/* WORK-538 — resting title size, so the prominence ramp computes from it
|
|
4
|
+
* rather than from the density default. */
|
|
5
|
+
.rf-design-context {
|
|
6
|
+
--rf-title-size: var(--rf-text-xl);
|
|
7
|
+
}
|
|
8
|
+
|
|
2
9
|
/* Design Context — unified token card wrapper */
|
|
3
10
|
.rf-design-context__title {
|
|
4
|
-
|
|
11
|
+
/* WORK-538 — read the prominence override first; the fallback is this rune's
|
|
12
|
+
* resting size, stated as --rf-title-size on the root so the prominence ramp
|
|
13
|
+
* can compute from it. */
|
|
14
|
+
font-size: var(--rf-prominence-size, var(--rf-title-size));
|
|
5
15
|
font-weight: var(--rf-weight-bold);
|
|
6
16
|
margin-bottom: 1rem;
|
|
7
17
|
}
|
package/styles/runes/hero.css
CHANGED
|
@@ -5,7 +5,12 @@
|
|
|
5
5
|
* @refrakt-md/skeleton (styles/runes/hero.css). What remains here is skin:
|
|
6
6
|
* spacing, type, the headline gradient, surface chrome, the scrim, radii, and
|
|
7
7
|
* text-align. */
|
|
8
|
+
/* The hero rests above the --rf-text scale's top step (4xl = 2.5rem); stated
|
|
9
|
+
* here rather than promoted to a --rf-text-5xl token, because the type scale is
|
|
10
|
+
* a typed contract every theme must satisfy (SPEC-048) and one rune's one-off
|
|
11
|
+
* does not belong in it. The prominence ramp scales around this value. */
|
|
8
12
|
.rf-hero {
|
|
13
|
+
--rf-title-size: 3.25rem;
|
|
9
14
|
padding: 7rem 2rem 6.5rem;
|
|
10
15
|
background-size: cover;
|
|
11
16
|
background-position: center;
|
|
@@ -80,8 +85,10 @@
|
|
|
80
85
|
}
|
|
81
86
|
.rf-hero h1,
|
|
82
87
|
.rf-hero__headline {
|
|
83
|
-
/*
|
|
84
|
-
|
|
88
|
+
/* WORK-538 — read the prominence override first; the fallback is this rune's
|
|
89
|
+
* resting size, stated as --rf-title-size on the root so the prominence ramp
|
|
90
|
+
* can compute from it. */
|
|
91
|
+
font-size: var(--rf-prominence-size, var(--rf-title-size));
|
|
85
92
|
font-weight: var(--rf-weight-bold);
|
|
86
93
|
letter-spacing: var(--rf-tracking-tight);
|
|
87
94
|
line-height: var(--rf-leading-tight);
|
package/styles/runes/palette.css
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
+
|
|
3
|
+
/* WORK-538 — resting title size, so the prominence ramp computes from it
|
|
4
|
+
* rather than from the density default. */
|
|
5
|
+
.rf-palette {
|
|
6
|
+
--rf-title-size: var(--rf-text-lg);
|
|
7
|
+
}
|
|
8
|
+
|
|
2
9
|
/* Palette — color swatch grid */
|
|
3
10
|
.rf-palette__title {
|
|
4
|
-
|
|
11
|
+
/* WORK-538 — read the prominence override first; the fallback is this rune's
|
|
12
|
+
* resting size, stated as --rf-title-size on the root so the prominence ramp
|
|
13
|
+
* can compute from it. */
|
|
14
|
+
font-size: var(--rf-prominence-size, var(--rf-title-size));
|
|
5
15
|
font-weight: var(--rf-weight-semibold);
|
|
6
16
|
margin-bottom: 1rem;
|
|
7
17
|
}
|
package/styles/runes/spacing.css
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
+
|
|
3
|
+
/* WORK-538 — resting title size, so the prominence ramp computes from it
|
|
4
|
+
* rather than from the density default. */
|
|
5
|
+
.rf-spacing {
|
|
6
|
+
--rf-title-size: var(--rf-text-lg);
|
|
7
|
+
}
|
|
8
|
+
|
|
2
9
|
/* Spacing — spacing scale, radii, and shadow display */
|
|
3
10
|
.rf-spacing__title {
|
|
4
|
-
|
|
11
|
+
/* WORK-538 — read the prominence override first; the fallback is this rune's
|
|
12
|
+
* resting size, stated as --rf-title-size on the root so the prominence ramp
|
|
13
|
+
* can compute from it. */
|
|
14
|
+
font-size: var(--rf-prominence-size, var(--rf-title-size));
|
|
5
15
|
font-weight: var(--rf-weight-semibold);
|
|
6
16
|
margin-bottom: 1rem;
|
|
7
17
|
}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
+
|
|
3
|
+
/* WORK-538 — resting title size, so the prominence ramp computes from it
|
|
4
|
+
* rather than from the density default. */
|
|
5
|
+
.rf-typography {
|
|
6
|
+
--rf-title-size: var(--rf-text-lg);
|
|
7
|
+
}
|
|
8
|
+
|
|
2
9
|
/* Typography — font specimen display */
|
|
3
10
|
.rf-typography__title {
|
|
4
|
-
|
|
11
|
+
/* WORK-538 — read the prominence override first; the fallback is this rune's
|
|
12
|
+
* resting size, stated as --rf-title-size on the root so the prominence ramp
|
|
13
|
+
* can compute from it. */
|
|
14
|
+
font-size: var(--rf-prominence-size, var(--rf-title-size));
|
|
5
15
|
font-weight: var(--rf-weight-semibold);
|
|
6
16
|
margin-bottom: 1rem;
|
|
7
17
|
}
|