@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.
- package/base.css +2 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -1
- package/dist/tokens.d.ts +5 -3
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +44 -3
- package/dist/tokens.js.map +1 -1
- package/index.css +11 -1
- package/package.json +7 -5
- package/styles/base/attributes.css +6 -7
- package/styles/dimensions/checklist.css +7 -36
- package/styles/dimensions/cover.css +13 -95
- package/styles/dimensions/density.css +6 -3
- package/styles/dimensions/frame.css +7 -4
- package/styles/dimensions/media.css +14 -61
- package/styles/dimensions/metadata.css +30 -80
- package/styles/dimensions/sections.css +16 -30
- package/styles/dimensions/sequence.css +17 -82
- package/styles/dimensions/state.css +39 -56
- package/styles/dimensions/substrate.css +3 -0
- package/styles/dimensions/surfaces.css +73 -113
- package/styles/elements/blockquote.css +3 -2
- package/styles/elements/code.css +3 -0
- package/styles/elements/table.css +3 -0
- package/styles/global.css +24 -63
- package/styles/layouts/blog.css +34 -95
- package/styles/layouts/default.css +12 -86
- package/styles/layouts/docs.css +9 -159
- package/styles/layouts/mobile.css +3 -52
- package/styles/layouts/on-this-page.css +8 -7
- package/styles/layouts/plan.css +27 -158
- package/styles/layouts/search.css +17 -82
- package/styles/layouts/split.css +24 -169
- package/styles/layouts/theme-toggle.css +3 -29
- package/styles/layouts/version-switcher.css +9 -10
- package/styles/runes/accordion.css +25 -68
- package/styles/runes/aggregate.css +4 -13
- package/styles/runes/annotate.css +11 -40
- package/styles/runes/api.css +4 -1
- package/styles/runes/audio.css +12 -50
- package/styles/runes/badge.css +5 -2
- package/styles/runes/bar.css +3 -0
- package/styles/runes/bento.css +18 -161
- package/styles/runes/bg.css +3 -37
- package/styles/runes/blog.css +18 -20
- package/styles/runes/bond.css +6 -26
- package/styles/runes/breadcrumb.css +7 -15
- package/styles/runes/budget.css +23 -45
- package/styles/runes/bug.css +5 -2
- package/styles/runes/card.css +27 -95
- package/styles/runes/cast.css +10 -27
- package/styles/runes/changelog.css +13 -17
- package/styles/runes/character.css +6 -20
- package/styles/runes/chart.css +15 -57
- package/styles/runes/codegroup.css +18 -26
- package/styles/runes/collection.css +8 -85
- package/styles/runes/compare.css +8 -19
- package/styles/runes/comparison.css +29 -56
- package/styles/runes/conversation.css +9 -31
- package/styles/runes/cta.css +17 -40
- package/styles/runes/datatable.css +33 -48
- package/styles/runes/decision.css +5 -2
- package/styles/runes/design-context.css +5 -4
- package/styles/runes/details.css +9 -17
- package/styles/runes/diagram.css +8 -16
- package/styles/runes/diff.css +11 -94
- package/styles/runes/drawer.css +9 -113
- package/styles/runes/embed.css +5 -13
- package/styles/runes/event.css +5 -3
- package/styles/runes/expand.css +10 -45
- package/styles/runes/faction.css +6 -12
- package/styles/runes/feature.css +15 -43
- package/styles/runes/figure.css +7 -26
- package/styles/runes/file-ref.css +3 -18
- package/styles/runes/form.css +19 -48
- package/styles/runes/gallery.css +8 -140
- package/styles/runes/grid.css +4 -56
- package/styles/runes/hero.css +28 -140
- package/styles/runes/hint.css +23 -48
- package/styles/runes/howto.css +9 -31
- package/styles/runes/itinerary.css +15 -44
- package/styles/runes/juxtapose.css +17 -92
- package/styles/runes/lore.css +7 -14
- package/styles/runes/map.css +9 -42
- package/styles/runes/mediatext.css +4 -45
- package/styles/runes/milestone.css +15 -28
- package/styles/runes/mockup.css +10 -115
- package/styles/runes/nav.css +37 -212
- package/styles/runes/organization.css +6 -5
- package/styles/runes/page-section.css +3 -4
- package/styles/runes/pagination.css +10 -42
- package/styles/runes/palette.css +16 -35
- package/styles/runes/placeholder.css +16 -0
- package/styles/runes/plan-history.css +23 -43
- package/styles/runes/plan-progress.css +6 -7
- package/styles/runes/plan-ref.css +4 -1
- package/styles/runes/playlist.css +10 -44
- package/styles/runes/plot.css +9 -25
- package/styles/runes/preview.css +9 -34
- package/styles/runes/pricing.css +23 -41
- package/styles/runes/progress.css +8 -27
- package/styles/runes/pullquote.css +9 -31
- package/styles/runes/realm.css +6 -12
- package/styles/runes/recipe.css +12 -36
- package/styles/runes/relationships.css +5 -36
- package/styles/runes/reveal.css +17 -22
- package/styles/runes/sandbox.css +9 -39
- package/styles/runes/section.css +10 -24
- package/styles/runes/showcase.css +3 -20
- package/styles/runes/sidenote.css +5 -4
- package/styles/runes/snippet.css +3 -0
- package/styles/runes/spacing.css +14 -33
- package/styles/runes/spec.css +5 -2
- package/styles/runes/steps.css +14 -46
- package/styles/runes/storyboard.css +4 -19
- package/styles/runes/swatch.css +4 -7
- package/styles/runes/symbol.css +16 -14
- package/styles/runes/tabs.css +15 -18
- package/styles/runes/testimonial.css +12 -13
- package/styles/runes/textblock.css +6 -24
- package/styles/runes/timeline.css +10 -28
- package/styles/runes/tint.css +3 -0
- package/styles/runes/toc.css +9 -7
- package/styles/runes/track.css +12 -41
- package/styles/runes/typography.css +15 -27
- package/styles/runes/work.css +5 -2
- package/styles/runes/xref.css +3 -1
- package/tokens/base.css +56 -66
- package/tokens/dark.css +79 -80
- package/styles/dimensions/guest-posture.css +0 -27
package/styles/runes/hero.css
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
@layer skin {
|
|
2
|
+
/* Hero — skin. The relative root, preamble/eyebrow/actions/button layout + their
|
|
3
|
+
* auto-margin alignment + mobile stack, the media-position flip, the responsive
|
|
4
|
+
* image box, and the cover-band height/containment authority live in
|
|
5
|
+
* @refrakt-md/skeleton (styles/runes/hero.css). What remains here is skin:
|
|
6
|
+
* spacing, type, the headline gradient, surface chrome, the scrim, radii, and
|
|
7
|
+
* text-align. */
|
|
2
8
|
.rf-hero {
|
|
3
|
-
position: relative;
|
|
4
9
|
padding: 7rem 2rem 6.5rem;
|
|
5
10
|
background-size: cover;
|
|
6
11
|
background-position: center;
|
|
7
12
|
}
|
|
8
13
|
.rf-hero__preamble {
|
|
9
|
-
flex-direction: column;
|
|
10
|
-
align-items: center;
|
|
11
14
|
gap: 0.25rem;
|
|
12
15
|
margin-bottom: 2rem;
|
|
13
16
|
}
|
|
14
17
|
/* Higher specificity needed to override .rf-hero p (0,1,1) */
|
|
15
18
|
.rf-hero .rf-hero__eyebrow {
|
|
16
|
-
font-size:
|
|
17
|
-
font-weight:
|
|
18
|
-
letter-spacing:
|
|
19
|
+
font-size: var(--rf-text-sm);
|
|
20
|
+
font-weight: var(--rf-weight-semibold);
|
|
21
|
+
letter-spacing: var(--rf-tracking-wider);
|
|
19
22
|
text-transform: uppercase;
|
|
20
23
|
color: var(--rf-color-primary);
|
|
21
24
|
margin: 0 0 1rem;
|
|
@@ -23,15 +26,13 @@
|
|
|
23
26
|
}
|
|
24
27
|
/* Pill-badge variant when eyebrow contains a link */
|
|
25
28
|
.rf-hero .rf-hero__eyebrow:has(a) {
|
|
26
|
-
display: inline-block;
|
|
27
|
-
position: relative;
|
|
28
29
|
padding: 0.25rem 0.875rem;
|
|
29
30
|
border: 1px solid var(--rf-color-border);
|
|
30
31
|
border-radius: var(--rf-radius-full);
|
|
31
32
|
color: var(--rf-color-text);
|
|
32
|
-
font-weight:
|
|
33
|
+
font-weight: var(--rf-weight-normal);
|
|
33
34
|
text-transform: none;
|
|
34
|
-
letter-spacing:
|
|
35
|
+
letter-spacing: var(--rf-tracking-normal);
|
|
35
36
|
transition: border-color 150ms ease;
|
|
36
37
|
}
|
|
37
38
|
.rf-hero .rf-hero__eyebrow:has(a):hover {
|
|
@@ -39,13 +40,10 @@
|
|
|
39
40
|
}
|
|
40
41
|
.rf-hero .rf-hero__eyebrow:has(a) a {
|
|
41
42
|
color: var(--rf-color-primary);
|
|
42
|
-
font-weight:
|
|
43
|
+
font-weight: var(--rf-weight-semibold);
|
|
43
44
|
text-decoration: none;
|
|
44
45
|
}
|
|
45
46
|
.rf-hero .rf-hero__eyebrow:has(a) a::before {
|
|
46
|
-
content: '';
|
|
47
|
-
position: absolute;
|
|
48
|
-
inset: 0;
|
|
49
47
|
border-radius: inherit;
|
|
50
48
|
}
|
|
51
49
|
.rf-hero__image {
|
|
@@ -53,47 +51,27 @@
|
|
|
53
51
|
}
|
|
54
52
|
.rf-hero__actions {
|
|
55
53
|
max-width: 720px;
|
|
56
|
-
margin: 0 auto;
|
|
57
|
-
display: flex;
|
|
58
|
-
align-items: center;
|
|
59
54
|
gap: 0.75rem;
|
|
60
|
-
flex-wrap: wrap;
|
|
61
55
|
}
|
|
62
56
|
.rf-hero[data-align="center"] .rf-hero__preamble,
|
|
63
57
|
.rf-hero[data-align="center"] > h1,
|
|
64
58
|
.rf-hero[data-align="center"] > p {
|
|
65
59
|
text-align: center;
|
|
66
60
|
}
|
|
67
|
-
.rf-hero[data-align="center"] .rf-hero__actions {
|
|
68
|
-
margin: 0 auto;
|
|
69
|
-
justify-content: center;
|
|
70
|
-
}
|
|
71
61
|
.rf-hero[data-align="left"] .rf-hero__preamble,
|
|
72
62
|
.rf-hero[data-align="left"] > h1,
|
|
73
63
|
.rf-hero[data-align="left"] > p {
|
|
74
64
|
text-align: left;
|
|
75
65
|
}
|
|
76
|
-
.rf-hero[data-align="left"] .rf-hero__preamble {
|
|
77
|
-
align-items: flex-start;
|
|
78
|
-
}
|
|
79
|
-
.rf-hero[data-align="left"] .rf-hero__actions {
|
|
80
|
-
margin: 0;
|
|
81
|
-
}
|
|
82
66
|
.rf-hero[data-align="right"] .rf-hero__preamble,
|
|
83
67
|
.rf-hero[data-align="right"] > h1,
|
|
84
68
|
.rf-hero[data-align="right"] > p {
|
|
85
69
|
text-align: right;
|
|
86
70
|
}
|
|
87
|
-
.rf-hero[data-align="right"] .rf-hero__preamble {
|
|
88
|
-
align-items: flex-end;
|
|
89
|
-
}
|
|
90
|
-
.rf-hero[data-align="right"] .rf-hero__actions {
|
|
91
|
-
margin: 0 0 0 auto;
|
|
92
|
-
}
|
|
93
71
|
.rf-hero__actions pre {
|
|
94
72
|
margin: 0;
|
|
95
73
|
padding: 0.7rem 1.75rem;
|
|
96
|
-
font-size:
|
|
74
|
+
font-size: var(--rf-text);
|
|
97
75
|
border-radius: var(--rf-radius-sm);
|
|
98
76
|
background: var(--rf-color-code-bg);
|
|
99
77
|
color: var(--rf-color-code-text);
|
|
@@ -102,10 +80,11 @@
|
|
|
102
80
|
}
|
|
103
81
|
.rf-hero h1,
|
|
104
82
|
.rf-hero__headline {
|
|
83
|
+
/* Hero display headline — a one-off above the --rf-text scale's top step. */
|
|
105
84
|
font-size: 3.25rem;
|
|
106
|
-
font-weight:
|
|
107
|
-
letter-spacing: -
|
|
108
|
-
line-height:
|
|
85
|
+
font-weight: var(--rf-weight-bold);
|
|
86
|
+
letter-spacing: var(--rf-tracking-tight);
|
|
87
|
+
line-height: var(--rf-leading-tight);
|
|
109
88
|
margin: 0 0 1rem;
|
|
110
89
|
background: linear-gradient(135deg, var(--rf-color-text) 0%, var(--rf-color-muted) 100%);
|
|
111
90
|
-webkit-background-clip: text;
|
|
@@ -115,8 +94,8 @@
|
|
|
115
94
|
/* Higher specificity needed to override .rf-hero p (0,1,1) */
|
|
116
95
|
.rf-hero p,
|
|
117
96
|
.rf-hero .rf-hero__blurb {
|
|
118
|
-
font-size:
|
|
119
|
-
line-height:
|
|
97
|
+
font-size: var(--rf-text-xl);
|
|
98
|
+
line-height: var(--rf-leading-relaxed);
|
|
120
99
|
color: var(--rf-color-muted);
|
|
121
100
|
margin: 0 0 2rem;
|
|
122
101
|
max-width: 40rem;
|
|
@@ -124,36 +103,25 @@
|
|
|
124
103
|
.rf-hero[data-align="center"] > p,
|
|
125
104
|
.rf-hero[data-align="center"] .rf-hero__blurb {
|
|
126
105
|
max-width: 560px;
|
|
127
|
-
margin-left: auto;
|
|
128
|
-
margin-right: auto;
|
|
129
106
|
margin-bottom: 2rem;
|
|
130
107
|
}
|
|
131
108
|
.rf-hero ul,
|
|
132
109
|
.rf-hero nav {
|
|
133
|
-
display: flex;
|
|
134
110
|
gap: 0.75rem;
|
|
135
|
-
flex-wrap: wrap;
|
|
136
|
-
list-style: none;
|
|
137
111
|
padding: 0;
|
|
138
112
|
margin: 0;
|
|
139
113
|
}
|
|
140
|
-
.rf-hero[data-align="center"] ul,
|
|
141
|
-
.rf-hero[data-align="center"] nav {
|
|
142
|
-
justify-content: center;
|
|
143
|
-
}
|
|
144
114
|
.rf-hero li {
|
|
145
115
|
padding: 0;
|
|
146
116
|
margin: 0;
|
|
147
117
|
}
|
|
148
118
|
.rf-hero li a,
|
|
149
119
|
.rf-hero nav a {
|
|
150
|
-
display: inline-flex;
|
|
151
|
-
align-items: center;
|
|
152
120
|
padding: 0.7rem 1.75rem;
|
|
153
121
|
border-radius: var(--rf-radius-sm);
|
|
154
122
|
text-decoration: none;
|
|
155
|
-
font-weight:
|
|
156
|
-
font-size:
|
|
123
|
+
font-weight: var(--rf-weight-semibold);
|
|
124
|
+
font-size: var(--rf-text);
|
|
157
125
|
transition: all 200ms ease;
|
|
158
126
|
}
|
|
159
127
|
.rf-hero li:first-child a {
|
|
@@ -181,40 +149,17 @@
|
|
|
181
149
|
margin-top: 3rem;
|
|
182
150
|
border-radius: var(--rf-radius-lg);
|
|
183
151
|
}
|
|
184
|
-
/* BUG-001 — hero DOM is content-first (headline before media: the right
|
|
185
|
-
* reading order for the classic hero), inverting the shared media-first
|
|
186
|
-
* stacked contract in layouts/split.css. Counter it so the labels are
|
|
187
|
-
* truthful: `bottom` (the hero default) is plain block flow — media renders
|
|
188
|
-
* after the content, exactly the historical look — and an explicit `top`
|
|
189
|
-
* flips the visual order without touching the DOM. */
|
|
190
|
-
.rf-hero[data-media-position="bottom"] {
|
|
191
|
-
display: block;
|
|
192
|
-
}
|
|
193
|
-
.rf-hero[data-media-position="top"] {
|
|
194
|
-
display: flex;
|
|
195
|
-
flex-direction: column-reverse;
|
|
196
|
-
}
|
|
197
152
|
.rf-hero[data-media-position="top"] > .rf-hero__media {
|
|
198
153
|
margin-top: 0;
|
|
199
154
|
margin-bottom: 3rem;
|
|
200
155
|
}
|
|
201
|
-
.rf-hero__media img {
|
|
202
|
-
display: block;
|
|
203
|
-
width: 100%;
|
|
204
|
-
height: auto;
|
|
205
|
-
}
|
|
206
156
|
.rf-hero__media pre {
|
|
207
157
|
margin: 0;
|
|
208
158
|
}
|
|
209
159
|
|
|
210
|
-
/* ── Cover mode (SPEC-101) —
|
|
211
|
-
* The
|
|
212
|
-
*
|
|
213
|
-
* specifics. This file imports after cover.css, so equal-specificity rules
|
|
214
|
-
* here win. */
|
|
215
|
-
|
|
216
|
-
/* The section's generous padding moves to the overlaid content — on the root
|
|
217
|
-
* it would inset the media well (the backdrop must be flush with the band). */
|
|
160
|
+
/* ── Cover mode (SPEC-101) — skin (the height/containment authority is skeleton).
|
|
161
|
+
* The section's generous padding moves to the overlaid content — on the root it
|
|
162
|
+
* would inset the media well (the backdrop must be flush with the band). */
|
|
218
163
|
.rf-hero--cover {
|
|
219
164
|
padding: 0;
|
|
220
165
|
}
|
|
@@ -222,38 +167,6 @@
|
|
|
222
167
|
--rune-padding: 7rem 2rem 6.5rem;
|
|
223
168
|
}
|
|
224
169
|
|
|
225
|
-
/* Band height authority: a hero is a full-width band, not a portrait tile.
|
|
226
|
-
* Height comes from a viewport-aware floor — deliberately NOT a default
|
|
227
|
-
* aspect-ratio: with `aspect-ratio` + `min-height`, the ratio transfers a
|
|
228
|
-
* winning min-height back into *width* on narrow screens (a 22rem-tall 21/9
|
|
229
|
-
* band computes ~820px wide on a 375px phone — the band marches off-screen).
|
|
230
|
-
* `--cover-aspect: auto` releases the shared 3/4 tile default; an explicit
|
|
231
|
-
* `aspect` knob still lands as an inline style and owns the shape. */
|
|
232
|
-
.rf-hero--cover {
|
|
233
|
-
--cover-aspect: auto;
|
|
234
|
-
min-height: clamp(22rem, 55vh, 40rem);
|
|
235
|
-
}
|
|
236
|
-
/* An explicit aspect owns the shape — drop the floor so the same
|
|
237
|
-
* ratio-vs-min-height transfer can't reintroduce the overflow. */
|
|
238
|
-
.rf-hero--cover[data-aspect] {
|
|
239
|
-
min-height: 0;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/* The shared cover layer applies `container-type: size` (size containment) for
|
|
243
|
-
* its orientation query — under it the band cannot grow with its content, so
|
|
244
|
-
* tall content clips at min-height. The hero band doesn't use the orientation
|
|
245
|
-
* query (the centred-band default below covers `auto` placement), so release
|
|
246
|
-
* the containment and let the band stretch to fit. */
|
|
247
|
-
.rf-hero--cover[data-media-position="cover"][data-cover-scope="full"] {
|
|
248
|
-
container-type: normal;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
/* Named height scale (`height="sm…xl"`): an explicit band height. */
|
|
252
|
-
.rf-hero--cover[data-height="sm"] { min-height: 20rem; }
|
|
253
|
-
.rf-hero--cover[data-height="md"] { min-height: 28rem; }
|
|
254
|
-
.rf-hero--cover[data-height="lg"] { min-height: 36rem; }
|
|
255
|
-
.rf-hero--cover[data-height="xl"] { min-height: 44rem; }
|
|
256
|
-
|
|
257
170
|
/* Mobile: the desktop overlay padding (7rem bands) would eat most of the well
|
|
258
171
|
* on a phone — tighten it so the content fits the band. */
|
|
259
172
|
@media (max-width: 640px) {
|
|
@@ -274,19 +187,9 @@
|
|
|
274
187
|
color: var(--rf-color-on-accent, var(--rf-color-bg));
|
|
275
188
|
}
|
|
276
189
|
|
|
277
|
-
/* Centre-band default: a hero overlay reads as a centred band, not the
|
|
278
|
-
* cover-card caption strip — seat it mid-well unless the author anchors it
|
|
279
|
-
* with an explicit `content-place`. */
|
|
280
|
-
.rf-hero--cover[data-media-position="cover"]:is([data-content-place="auto"], :not([data-content-place])) > [data-name="content"] {
|
|
281
|
-
align-self: center;
|
|
282
|
-
justify-self: stretch;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
190
|
/* The default cover scrim is edge-weighted (a caption-strip treatment); under
|
|
286
191
|
* the centred band it would leave the headline on undarkened media. With no
|
|
287
|
-
* explicit `content-place`, darken the well evenly (slightly bottom-weighted).
|
|
288
|
-
* An explicit `content-place` re-enters the shared content-edge scrim contract,
|
|
289
|
-
* and `scrim="none"` still opts out. */
|
|
192
|
+
* explicit `content-place`, darken the well evenly (slightly bottom-weighted). */
|
|
290
193
|
.rf-hero--cover:is([data-content-place="auto"], :not([data-content-place])):not([data-scrim="none"]) > [data-section="media"]::after {
|
|
291
194
|
background-image: var(--cover-scrim-image, linear-gradient(rgb(0 0 0 / 0.45), rgb(0 0 0 / 0.35) 50%, rgb(0 0 0 / 0.55)));
|
|
292
195
|
}
|
|
@@ -294,23 +197,8 @@
|
|
|
294
197
|
/* Mobile: stack actions full-width so the code block and button line up */
|
|
295
198
|
@media (max-width: 640px) {
|
|
296
199
|
.rf-hero__actions {
|
|
297
|
-
flex-direction: column;
|
|
298
|
-
align-items: stretch;
|
|
299
200
|
max-width: none;
|
|
300
201
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
box-sizing: border-box;
|
|
304
|
-
}
|
|
305
|
-
.rf-hero ul,
|
|
306
|
-
.rf-hero nav {
|
|
307
|
-
flex-direction: column;
|
|
308
|
-
align-items: stretch;
|
|
309
|
-
}
|
|
310
|
-
.rf-hero li a,
|
|
311
|
-
.rf-hero nav a {
|
|
312
|
-
justify-content: center;
|
|
313
|
-
width: 100%;
|
|
314
|
-
box-sizing: border-box;
|
|
315
|
-
}
|
|
202
|
+
}
|
|
203
|
+
|
|
316
204
|
}
|
package/styles/runes/hint.css
CHANGED
|
@@ -1,59 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
@layer skin {
|
|
2
|
+
/* Hint — skin. The sunken surface chrome (fill, border, radius) comes from
|
|
3
|
+
* dimensions/surfaces.css via defaultElevation: 'sunken'; only the bespoke
|
|
4
|
+
* padding stays here so the icon+title+body breathes wider than --rune-padding
|
|
5
|
+
* at compact density. The header layout + icon-glyph box mechanism live in
|
|
6
|
+
* @refrakt-md/skeleton (styles/runes/hint.css). */
|
|
2
7
|
.rf-hint {
|
|
3
8
|
--hint-color: var(--rf-color-info);
|
|
4
|
-
padding:
|
|
5
|
-
border-radius: var(--rf-radius-md);
|
|
6
|
-
background: var(--rf-color-surface);
|
|
9
|
+
padding: var(--rf-spacing-snug) var(--rf-spacing-cozy);
|
|
7
10
|
}
|
|
8
11
|
.rf-hint__header {
|
|
9
|
-
margin-bottom:
|
|
12
|
+
margin-bottom: var(--rf-spacing-xs);
|
|
10
13
|
color: var(--hint-color);
|
|
11
14
|
}
|
|
12
|
-
/* The lone `hintType` field renders icon + label in one inline-flex span. */
|
|
13
15
|
.rf-hint__header > span {
|
|
14
|
-
|
|
15
|
-
align-items: center;
|
|
16
|
-
gap: 0.375rem;
|
|
17
|
-
}
|
|
18
|
-
.rf-hint__header [data-icon-group="hint"] {
|
|
19
|
-
display: block;
|
|
16
|
+
gap: var(--rf-spacing-xs);
|
|
20
17
|
}
|
|
21
18
|
.rf-hint__header [data-icon-group="hint"]::before {
|
|
22
|
-
content: '';
|
|
23
|
-
display: block;
|
|
24
|
-
width: 1.25rem;
|
|
25
|
-
height: 1.25rem;
|
|
26
19
|
background-color: var(--hint-color);
|
|
27
|
-
-webkit-mask-size: contain;
|
|
28
|
-
mask-size: contain;
|
|
29
|
-
-webkit-mask-repeat: no-repeat;
|
|
30
|
-
mask-repeat: no-repeat;
|
|
31
|
-
}
|
|
32
|
-
[data-icon-group="hint"][data-icon="note"]::before {
|
|
33
|
-
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='12' y1='16' x2='12' y2='12'/%3E%3Cline x1='12' y1='8' x2='12.01' y2='8'/%3E%3C/svg%3E");
|
|
34
|
-
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='12' y1='16' x2='12' y2='12'/%3E%3Cline x1='12' y1='8' x2='12.01' y2='8'/%3E%3C/svg%3E");
|
|
35
|
-
}
|
|
36
|
-
[data-icon-group="hint"][data-icon="warning"]::before {
|
|
37
|
-
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z'/%3E%3Cline x1='12' y1='9' x2='12' y2='13'/%3E%3Cline x1='12' y1='17' x2='12.01' y2='17'/%3E%3C/svg%3E");
|
|
38
|
-
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z'/%3E%3Cline x1='12' y1='9' x2='12' y2='13'/%3E%3Cline x1='12' y1='17' x2='12.01' y2='17'/%3E%3C/svg%3E");
|
|
39
|
-
}
|
|
40
|
-
[data-icon-group="hint"][data-icon="caution"]::before {
|
|
41
|
-
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='15' y1='9' x2='9' y2='15'/%3E%3Cline x1='9' y1='9' x2='15' y2='15'/%3E%3C/svg%3E");
|
|
42
|
-
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='15' y1='9' x2='9' y2='15'/%3E%3Cline x1='9' y1='9' x2='15' y2='15'/%3E%3C/svg%3E");
|
|
43
|
-
}
|
|
44
|
-
[data-icon-group="hint"][data-icon="check"]::before {
|
|
45
|
-
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/%3E%3Cpolyline points='22 4 12 14.01 9 11.01'/%3E%3C/svg%3E");
|
|
46
|
-
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/%3E%3Cpolyline points='22 4 12 14.01 9 11.01'/%3E%3C/svg%3E");
|
|
47
20
|
}
|
|
48
21
|
.rf-hint__header [data-meta-value] {
|
|
49
|
-
font-weight:
|
|
22
|
+
font-weight: var(--rf-weight-semibold);
|
|
50
23
|
text-transform: capitalize;
|
|
51
|
-
font-size:
|
|
52
|
-
letter-spacing:
|
|
24
|
+
font-size: var(--rf-text-xs);
|
|
25
|
+
letter-spacing: var(--rf-tracking-wide);
|
|
53
26
|
}
|
|
54
27
|
.rf-hint__body {
|
|
55
|
-
font-size:
|
|
56
|
-
line-height:
|
|
28
|
+
font-size: var(--rf-text-sm);
|
|
29
|
+
line-height: var(--rf-leading-relaxed);
|
|
57
30
|
}
|
|
58
31
|
.rf-hint__body p:last-child {
|
|
59
32
|
margin-bottom: 0;
|
|
@@ -75,18 +48,20 @@
|
|
|
75
48
|
|
|
76
49
|
/* Context-aware: compact hint when nested inside a hero */
|
|
77
50
|
.rf-hint--in-hero {
|
|
78
|
-
margin:
|
|
79
|
-
padding:
|
|
51
|
+
margin: var(--rf-spacing-cozy) 0 0;
|
|
52
|
+
padding: var(--rf-spacing-sm) var(--rf-spacing-cozy);
|
|
80
53
|
border-radius: var(--rf-radius-sm);
|
|
81
|
-
font-size:
|
|
54
|
+
font-size: var(--rf-text-sm);
|
|
82
55
|
}
|
|
83
56
|
.rf-hint--in-hero .rf-hint__header {
|
|
84
|
-
margin-bottom:
|
|
57
|
+
margin-bottom: var(--rf-spacing-xs);
|
|
85
58
|
}
|
|
86
59
|
|
|
87
60
|
/* Context-aware: hint inside a feature block */
|
|
88
61
|
.rf-hint--in-feature {
|
|
89
|
-
margin:
|
|
90
|
-
padding:
|
|
91
|
-
font-size:
|
|
62
|
+
margin: var(--rf-spacing-snug) 0 0;
|
|
63
|
+
padding: var(--rf-spacing-sm) var(--rf-spacing-snug);
|
|
64
|
+
font-size: var(--rf-text-sm);
|
|
65
|
+
}
|
|
66
|
+
|
|
92
67
|
}
|
package/styles/runes/howto.css
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@layer skin {
|
|
1
2
|
/* HowTo — matches recipe design */
|
|
2
3
|
|
|
3
4
|
/* Tools/materials list — surfaced zone with primary markers */
|
|
@@ -11,7 +12,7 @@
|
|
|
11
12
|
}
|
|
12
13
|
.rf-howto__content ul li {
|
|
13
14
|
padding: 0.2rem 0;
|
|
14
|
-
line-height:
|
|
15
|
+
line-height: var(--rf-leading-relaxed);
|
|
15
16
|
}
|
|
16
17
|
.rf-howto__content ul li::marker {
|
|
17
18
|
color: var(--rf-color-primary);
|
|
@@ -21,31 +22,18 @@
|
|
|
21
22
|
.rf-howto__content ol {
|
|
22
23
|
padding-left: 0;
|
|
23
24
|
margin: 0;
|
|
24
|
-
list-style: none;
|
|
25
|
-
counter-reset: howto-step;
|
|
26
25
|
}
|
|
27
26
|
.rf-howto__content ol > li {
|
|
28
|
-
counter-increment: howto-step;
|
|
29
27
|
padding: 0.625rem 0;
|
|
30
28
|
padding-left: 2.25rem;
|
|
31
|
-
|
|
32
|
-
line-height: 1.65;
|
|
29
|
+
line-height: var(--rf-leading-relaxed);
|
|
33
30
|
}
|
|
34
31
|
.rf-howto__content ol > li + li {
|
|
35
32
|
border-top: 1px solid var(--rf-color-border);
|
|
36
33
|
}
|
|
37
34
|
.rf-howto__content ol > li::before {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
left: 0;
|
|
41
|
-
top: 0.625rem;
|
|
42
|
-
width: 1.5rem;
|
|
43
|
-
height: 1.5rem;
|
|
44
|
-
display: flex;
|
|
45
|
-
align-items: center;
|
|
46
|
-
justify-content: center;
|
|
47
|
-
font-size: 0.75rem;
|
|
48
|
-
font-weight: 700;
|
|
35
|
+
font-size: var(--rf-text-xs);
|
|
36
|
+
font-weight: var(--rf-weight-bold);
|
|
49
37
|
color: var(--rf-color-primary);
|
|
50
38
|
background: var(--rf-color-surface);
|
|
51
39
|
border-radius: var(--rf-radius-full);
|
|
@@ -63,31 +51,21 @@
|
|
|
63
51
|
border-radius: 0 var(--rf-radius-md) var(--rf-radius-md) 0;
|
|
64
52
|
padding: 0.75rem 1.25rem;
|
|
65
53
|
margin: 1.75rem 0 0;
|
|
66
|
-
font-size:
|
|
54
|
+
font-size: var(--rf-text-sm);
|
|
67
55
|
font-style: italic;
|
|
68
56
|
color: var(--rf-color-muted);
|
|
69
|
-
line-height:
|
|
57
|
+
line-height: var(--rf-leading-relaxed);
|
|
70
58
|
}
|
|
71
59
|
.rf-howto__content blockquote p {
|
|
72
60
|
margin: 0;
|
|
73
61
|
}
|
|
74
|
-
|
|
75
|
-
/* Metadata — est. time / difficulty are short, symmetric facts, so keep the
|
|
76
|
-
* def-list a dense tile grid at every width (a smaller column min than the
|
|
77
|
-
* 8rem default) instead of the shared mobile label/value list. */
|
|
78
|
-
.rf-howto__metadata {
|
|
79
|
-
grid-template-columns: repeat(auto-fit, minmax(6rem, 1fr));
|
|
80
|
-
}
|
|
81
62
|
@media (max-width: 48rem) {
|
|
82
63
|
.rf-howto__metadata {
|
|
83
|
-
grid-template-columns: repeat(auto-fit, minmax(6rem, 1fr));
|
|
84
64
|
gap: 0.75rem;
|
|
85
|
-
align-items: normal;
|
|
86
65
|
padding: 0;
|
|
87
66
|
border: none;
|
|
88
67
|
}
|
|
89
|
-
.rf-howto__metadata > [data-name="row"] {
|
|
90
|
-
display: flex;
|
|
91
|
-
}
|
|
92
68
|
}
|
|
93
69
|
|
|
70
|
+
|
|
71
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@layer skin {
|
|
1
2
|
/* Itinerary */
|
|
2
3
|
.rf-itinerary {
|
|
3
4
|
margin: 2rem 0;
|
|
@@ -14,25 +15,20 @@
|
|
|
14
15
|
margin-bottom: 0;
|
|
15
16
|
}
|
|
16
17
|
.rf-itinerary-day__header {
|
|
17
|
-
font-size:
|
|
18
|
-
font-weight:
|
|
18
|
+
font-size: var(--rf-text-lg);
|
|
19
|
+
font-weight: var(--rf-weight-bold);
|
|
19
20
|
color: var(--rf-color-text);
|
|
20
21
|
margin-bottom: 1rem;
|
|
21
22
|
padding-bottom: 0.5rem;
|
|
22
23
|
border-bottom: 2px solid var(--rf-color-border);
|
|
23
24
|
}
|
|
24
|
-
.rf-itinerary-day__header:empty {
|
|
25
|
-
display: none;
|
|
26
|
-
}
|
|
27
25
|
.rf-itinerary-day ol {
|
|
28
|
-
list-style: none;
|
|
29
26
|
padding: 0;
|
|
30
27
|
margin: 0;
|
|
31
28
|
}
|
|
32
29
|
|
|
33
30
|
/* Stop */
|
|
34
31
|
.rf-itinerary-stop {
|
|
35
|
-
position: relative;
|
|
36
32
|
padding-left: 2rem;
|
|
37
33
|
padding-bottom: 1.5rem;
|
|
38
34
|
border-left: 2px solid var(--rf-color-border);
|
|
@@ -43,12 +39,6 @@
|
|
|
43
39
|
padding-bottom: 0;
|
|
44
40
|
}
|
|
45
41
|
.rf-itinerary-stop::before {
|
|
46
|
-
content: '';
|
|
47
|
-
position: absolute;
|
|
48
|
-
left: -0.4375rem;
|
|
49
|
-
top: 0.25rem;
|
|
50
|
-
width: 0.75rem;
|
|
51
|
-
height: 0.75rem;
|
|
52
42
|
border-radius: 50%;
|
|
53
43
|
background: var(--rf-color-primary);
|
|
54
44
|
border: 2px solid var(--rf-color-bg);
|
|
@@ -57,27 +47,25 @@
|
|
|
57
47
|
|
|
58
48
|
/* Stop time */
|
|
59
49
|
.rf-itinerary-stop__time {
|
|
60
|
-
|
|
61
|
-
font-
|
|
62
|
-
font-weight: 600;
|
|
50
|
+
font-size: var(--rf-text-xs);
|
|
51
|
+
font-weight: var(--rf-weight-semibold);
|
|
63
52
|
color: var(--rf-color-primary);
|
|
64
|
-
letter-spacing:
|
|
53
|
+
letter-spacing: var(--rf-tracking-wide);
|
|
65
54
|
margin-bottom: 0.15rem;
|
|
66
55
|
}
|
|
67
56
|
|
|
68
57
|
/* Stop location */
|
|
69
58
|
.rf-itinerary-stop__location {
|
|
70
|
-
|
|
71
|
-
font-
|
|
72
|
-
font-weight: 700;
|
|
59
|
+
font-size: var(--rf-text);
|
|
60
|
+
font-weight: var(--rf-weight-bold);
|
|
73
61
|
color: var(--rf-color-text);
|
|
74
62
|
margin-bottom: 0.35rem;
|
|
75
63
|
}
|
|
76
64
|
|
|
77
65
|
/* Stop body */
|
|
78
66
|
.rf-itinerary-stop__body {
|
|
79
|
-
font-size:
|
|
80
|
-
line-height:
|
|
67
|
+
font-size: var(--rf-text-sm);
|
|
68
|
+
line-height: var(--rf-leading-relaxed);
|
|
81
69
|
color: var(--rf-color-muted);
|
|
82
70
|
}
|
|
83
71
|
.rf-itinerary-stop__body p:last-child {
|
|
@@ -87,11 +75,8 @@
|
|
|
87
75
|
/* Duration badge */
|
|
88
76
|
.rf-itinerary-stop[data-duration]::after {
|
|
89
77
|
content: attr(data-duration);
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
right: 0;
|
|
93
|
-
font-size: 0.75rem;
|
|
94
|
-
font-weight: 500;
|
|
78
|
+
font-size: var(--rf-text-xs);
|
|
79
|
+
font-weight: var(--rf-weight-medium);
|
|
95
80
|
color: var(--rf-color-muted);
|
|
96
81
|
background: var(--rf-color-surface);
|
|
97
82
|
padding: 0.1rem 0.5rem;
|
|
@@ -126,13 +111,10 @@
|
|
|
126
111
|
|
|
127
112
|
/* Horizontal direction */
|
|
128
113
|
.rf-itinerary--horizontal .rf-itinerary-day ol {
|
|
129
|
-
display: flex;
|
|
130
114
|
gap: 2rem;
|
|
131
|
-
overflow-x: auto;
|
|
132
115
|
padding: 2rem 0 1rem;
|
|
133
116
|
}
|
|
134
117
|
.rf-itinerary--horizontal .rf-itinerary-stop {
|
|
135
|
-
min-width: 14rem;
|
|
136
118
|
padding-left: 0;
|
|
137
119
|
padding-top: 1.5rem;
|
|
138
120
|
padding-bottom: 0;
|
|
@@ -143,31 +125,20 @@
|
|
|
143
125
|
.rf-itinerary--horizontal .rf-itinerary-stop:last-child {
|
|
144
126
|
border-top-color: transparent;
|
|
145
127
|
}
|
|
146
|
-
.rf-itinerary--horizontal .rf-itinerary-stop::before {
|
|
147
|
-
left: 0.5rem;
|
|
148
|
-
top: -0.4375rem;
|
|
149
|
-
}
|
|
150
128
|
.rf-itinerary--horizontal .rf-itinerary-stop[data-duration]::after {
|
|
151
|
-
position: static;
|
|
152
|
-
display: inline-block;
|
|
153
129
|
margin-top: 0.5rem;
|
|
154
130
|
}
|
|
155
|
-
|
|
156
|
-
/* Compact style */
|
|
157
|
-
.rf-itinerary--compact .rf-itinerary-stop__body {
|
|
158
|
-
display: none;
|
|
159
|
-
}
|
|
160
131
|
.rf-itinerary--compact .rf-itinerary-stop {
|
|
161
132
|
padding-bottom: 0.75rem;
|
|
162
133
|
}
|
|
163
134
|
.rf-itinerary--compact .rf-itinerary-stop__location {
|
|
164
|
-
|
|
165
|
-
font-size: 0.925rem;
|
|
135
|
+
font-size: var(--rf-text-sm);
|
|
166
136
|
}
|
|
167
137
|
.rf-itinerary--compact .rf-itinerary-stop__time {
|
|
168
|
-
display: inline;
|
|
169
138
|
margin-bottom: 0;
|
|
170
139
|
}
|
|
171
140
|
.rf-itinerary--compact .rf-itinerary-stop__time::after {
|
|
172
141
|
content: ' — ';
|
|
173
142
|
}
|
|
143
|
+
|
|
144
|
+
}
|