@refrakt-md/skeleton 0.42.0 → 0.43.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/index.css +2 -1
- package/package.json +2 -2
- package/styles/dimensions/link.css +25 -0
- package/styles/dimensions/sections.css +14 -0
- package/styles/runes/accordion.css +1 -10
- package/styles/runes/actions.css +39 -0
- package/styles/runes/bento.css +2 -12
- package/styles/runes/card.css +4 -15
- package/styles/runes/cta.css +7 -39
- package/styles/runes/feature.css +1 -11
- package/styles/runes/hero.css +8 -59
- package/styles/runes/pricing.css +1 -13
- package/styles/runes/reveal.css +1 -10
- package/styles/runes/section.css +27 -12
- package/styles/runes/steps.css +1 -13
- package/styles/runes/tabs.css +1 -11
- package/styles/runes/page-section.css +0 -12
package/index.css
CHANGED
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
@import "./styles/dimensions/cover.css" layer(skeleton);
|
|
37
37
|
@import "./styles/dimensions/metadata.css" layer(skeleton);
|
|
38
38
|
@import "./styles/dimensions/sections.css" layer(skeleton);
|
|
39
|
+
@import "./styles/dimensions/link.css" layer(skeleton);
|
|
39
40
|
@import "./styles/dimensions/reading.css" layer(skeleton);
|
|
40
41
|
@import "./styles/dimensions/checklist.css" layer(skeleton);
|
|
41
42
|
@import "./styles/dimensions/sequence.css" layer(skeleton);
|
|
@@ -54,6 +55,7 @@
|
|
|
54
55
|
@import "./styles/layouts/plan.css" layer(skeleton);
|
|
55
56
|
|
|
56
57
|
/* ── Rune structure ── */
|
|
58
|
+
@import "./styles/runes/actions.css" layer(skeleton);
|
|
57
59
|
@import "./styles/runes/card.css" layer(skeleton);
|
|
58
60
|
@import "./styles/runes/hint.css" layer(skeleton);
|
|
59
61
|
@import "./styles/runes/steps.css" layer(skeleton);
|
|
@@ -110,7 +112,6 @@
|
|
|
110
112
|
@import "./styles/runes/file-ref.css" layer(skeleton);
|
|
111
113
|
@import "./styles/runes/form.css" layer(skeleton);
|
|
112
114
|
@import "./styles/runes/mediatext.css" layer(skeleton);
|
|
113
|
-
@import "./styles/runes/page-section.css" layer(skeleton);
|
|
114
115
|
@import "./styles/runes/placeholder.css" layer(skeleton);
|
|
115
116
|
@import "./styles/runes/pullquote.css" layer(skeleton);
|
|
116
117
|
@import "./styles/runes/relationships.css" layer(skeleton);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@refrakt-md/skeleton",
|
|
3
3
|
"description": "The structural cascade layer + layer-order contract every refrakt theme builds on — ships `@layer skeleton` and the `@layer skeleton, skin;` order declaration, plus the token-name contract",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.43.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"styles"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@refrakt-md/types": "0.
|
|
32
|
+
"@refrakt-md/types": "0.43.0"
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|
|
35
35
|
"build": "tsc"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* link — structure (SPEC-160 D8, WORK-655). Whole-region links, keyed on the
|
|
2
|
+
* `data-link` attribute the identity transform writes, so they work around any
|
|
3
|
+
* rune and need no rune CSS.
|
|
4
|
+
*
|
|
5
|
+
* - wrap: a real `<a>` around content with nothing interactive in it.
|
|
6
|
+
* - stretch: an `<a>` laid over its host (`card`/`bento-cell` `href`, or a
|
|
7
|
+
* `{% link %}` around interactive content); the content's own links and
|
|
8
|
+
* controls sit above it and stay clickable. */
|
|
9
|
+
|
|
10
|
+
a[data-link="wrap"] {
|
|
11
|
+
display: block;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
:has(> [data-link="stretch"]) {
|
|
15
|
+
position: relative;
|
|
16
|
+
}
|
|
17
|
+
[data-link="stretch"] {
|
|
18
|
+
position: absolute;
|
|
19
|
+
inset: 0;
|
|
20
|
+
z-index: 0;
|
|
21
|
+
}
|
|
22
|
+
:has(> [data-link="stretch"]) :is(a, button, input, select, textarea, summary):not([data-link]) {
|
|
23
|
+
position: relative;
|
|
24
|
+
z-index: 1;
|
|
25
|
+
}
|
|
@@ -20,3 +20,17 @@
|
|
|
20
20
|
display: flex;
|
|
21
21
|
flex-wrap: wrap;
|
|
22
22
|
}
|
|
23
|
+
|
|
24
|
+
/* An eyebrow holding a link is a pill whose link covers it (WORK-656). The
|
|
25
|
+
* stretched link is structure; the pill's chrome is skin (Lumina's
|
|
26
|
+
* dimensions/sections.css). Keyed on the role, so every rune with an eyebrow
|
|
27
|
+
* gets it, `card` included. */
|
|
28
|
+
[data-section="eyebrow"]:has(a) {
|
|
29
|
+
display: inline-block;
|
|
30
|
+
position: relative;
|
|
31
|
+
}
|
|
32
|
+
[data-section="eyebrow"]:has(a) a::before {
|
|
33
|
+
content: "";
|
|
34
|
+
position: absolute;
|
|
35
|
+
inset: 0;
|
|
36
|
+
}
|
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
/* accordion — structure. The
|
|
1
|
+
/* accordion — structure. The items passthrough, the
|
|
2
2
|
* item-header flex + native-marker hide + chevron box/glyph/open-rotate mechanism,
|
|
3
3
|
* the title/count flex, and the ::details-content collapse mechanism. Type,
|
|
4
4
|
* borders, spacing, the chevron tint, transitions, and prose are skin (Lumina's
|
|
5
5
|
* styles/runes/accordion.css). The chevron glyph is the registry mask
|
|
6
6
|
* --rf-icon-accordion-chevron (SPEC-094 §8 / WORK-437). */
|
|
7
7
|
|
|
8
|
-
.rf-accordion__eyebrow:has(a) {
|
|
9
|
-
display: inline-block;
|
|
10
|
-
position: relative;
|
|
11
|
-
}
|
|
12
|
-
.rf-accordion__eyebrow:has(a) a::before {
|
|
13
|
-
content: "";
|
|
14
|
-
position: absolute;
|
|
15
|
-
inset: 0;
|
|
16
|
-
}
|
|
17
8
|
.rf-accordion__items {
|
|
18
9
|
display: contents;
|
|
19
10
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* actions — structure (SPEC-160 D6). The action row, the button-shaped link, and
|
|
2
|
+
* the mobile stack. The look (padding, fill, rank) is skin: Lumina's
|
|
3
|
+
* styles/runes/actions.css. A host positions the row by setting
|
|
4
|
+
* `--actions-justify` (hero and cta do, from their alignment). */
|
|
5
|
+
|
|
6
|
+
.rf-actions {
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
flex-wrap: wrap;
|
|
10
|
+
justify-content: var(--actions-justify, flex-start);
|
|
11
|
+
}
|
|
12
|
+
.rf-actions__list {
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-wrap: wrap;
|
|
15
|
+
list-style: none;
|
|
16
|
+
justify-content: var(--actions-justify, flex-start);
|
|
17
|
+
}
|
|
18
|
+
.rf-actions__action > a {
|
|
19
|
+
display: inline-flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* Mobile: stack actions full-width so a command line and the buttons line up. */
|
|
24
|
+
@media (max-width: 640px) {
|
|
25
|
+
.rf-actions,
|
|
26
|
+
.rf-actions__list {
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
align-items: stretch;
|
|
29
|
+
}
|
|
30
|
+
.rf-actions__command pre {
|
|
31
|
+
width: 100%;
|
|
32
|
+
box-sizing: border-box;
|
|
33
|
+
}
|
|
34
|
+
.rf-actions__action > a {
|
|
35
|
+
justify-content: center;
|
|
36
|
+
width: 100%;
|
|
37
|
+
box-sizing: border-box;
|
|
38
|
+
}
|
|
39
|
+
}
|
package/styles/runes/bento.css
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* bento — structure. The container-query grid system: the grid track + cell
|
|
2
2
|
* spans, the cell flex layout + media placement, the row/content sizing knobs,
|
|
3
|
-
* the collapse queries,
|
|
3
|
+
* the collapse queries, and metadata hiding (the stretched `href` link is the
|
|
4
|
+
* shared dimensions/link.css). The cell surface
|
|
4
5
|
* chrome, spacing vars (padding/edge/gap), type, and the media-well chrome stay
|
|
5
6
|
* skin (Lumina's styles/runes/bento.css). bento-cell is a hand-rolled surface
|
|
6
7
|
* outside the data-elevation axis, so its padding has no surfaces competitor. */
|
|
@@ -157,17 +158,6 @@
|
|
|
157
158
|
height: auto;
|
|
158
159
|
}
|
|
159
160
|
|
|
160
|
-
/* Whole-cell link — stretched overlay; nested links stay clickable. */
|
|
161
|
-
.rf-bento-cell__link {
|
|
162
|
-
position: absolute;
|
|
163
|
-
inset: 0;
|
|
164
|
-
z-index: 0;
|
|
165
|
-
}
|
|
166
|
-
.rf-bento-cell a:not(.rf-bento-cell__link) {
|
|
167
|
-
position: relative;
|
|
168
|
-
z-index: 1;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
161
|
/* ─── Binary collapse — single stacked column with auto rows below breakpoint. ─── */
|
|
172
162
|
@container rf-bento (max-width: 640px) {
|
|
173
163
|
:is(.rf-bento[data-collapse="sm"], .rf-bento[data-collapse=""]) .rf-bento__grid {
|
package/styles/runes/card.css
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/* card — structure (SPEC-070). Pure layout only: the
|
|
2
|
-
*
|
|
3
|
-
*
|
|
1
|
+
/* card — structure (SPEC-070). Pure layout only: the clip, the split
|
|
2
|
+
* vertical-align, the collection-grid height filling, and the intrinsic-height
|
|
3
|
+
* scale. The stretched `href` link is the shared dimensions/link.css. ALL spacing stays skin in Lumina's card.css — the root
|
|
4
4
|
* `padding` overrides the surface-elevation padding (skin) by source order, and
|
|
5
5
|
* the split gaps + zone-reset margins are same-layer rhythm contests. */
|
|
6
6
|
|
|
7
7
|
.rf-card {
|
|
8
|
-
position: relative; /* anchor for the stretched link */
|
|
8
|
+
position: relative; /* anchor for the stretched link (dimensions/link.css) */
|
|
9
9
|
overflow: hidden; /* clip non-media layers to the rounded box */
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -46,14 +46,3 @@
|
|
|
46
46
|
.rf-card[data-height="xl"] {
|
|
47
47
|
min-height: 34rem;
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
/* Whole-card stretched link; real links in body/footer sit above it. */
|
|
51
|
-
.rf-card__link {
|
|
52
|
-
position: absolute;
|
|
53
|
-
inset: 0;
|
|
54
|
-
z-index: 0;
|
|
55
|
-
}
|
|
56
|
-
.rf-card a:not(.rf-card__link) {
|
|
57
|
-
position: relative;
|
|
58
|
-
z-index: 1;
|
|
59
|
-
}
|
package/styles/runes/cta.css
CHANGED
|
@@ -1,46 +1,14 @@
|
|
|
1
|
-
/* cta — structure. The preamble layout
|
|
2
|
-
*
|
|
3
|
-
* gradient, surface chrome, and colour stay skin
|
|
1
|
+
/* cta — structure. The preamble layout and the centred
|
|
2
|
+
* actions row (the row itself is the `actions` rune's, styles/runes/actions.css).
|
|
3
|
+
* All spacing, type, the headline gradient, surface chrome, and colour stay skin
|
|
4
|
+
* (Lumina's styles/runes/cta.css). */
|
|
4
5
|
|
|
5
6
|
.rf-cta__preamble {
|
|
6
7
|
flex-direction: column;
|
|
7
8
|
align-items: center;
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
/*
|
|
11
|
-
.rf-
|
|
12
|
-
|
|
13
|
-
position: relative;
|
|
14
|
-
}
|
|
15
|
-
.rf-cta .rf-cta__eyebrow:has(a) a::before {
|
|
16
|
-
content: "";
|
|
17
|
-
position: absolute;
|
|
18
|
-
inset: 0;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/* Action-button row. */
|
|
22
|
-
.rf-cta ul {
|
|
23
|
-
display: flex;
|
|
24
|
-
justify-content: center;
|
|
25
|
-
flex-wrap: wrap;
|
|
26
|
-
list-style: none;
|
|
27
|
-
}
|
|
28
|
-
.rf-cta li a,
|
|
29
|
-
.rf-cta nav a {
|
|
30
|
-
display: inline-flex;
|
|
31
|
-
align-items: center;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/* Mobile: stack action buttons full-width so multi-button CTAs line up. */
|
|
35
|
-
@media (max-width: 640px) {
|
|
36
|
-
.rf-cta ul {
|
|
37
|
-
flex-direction: column;
|
|
38
|
-
align-items: stretch;
|
|
39
|
-
}
|
|
40
|
-
.rf-cta li a,
|
|
41
|
-
.rf-cta nav a {
|
|
42
|
-
justify-content: center;
|
|
43
|
-
width: 100%;
|
|
44
|
-
box-sizing: border-box;
|
|
45
|
-
}
|
|
11
|
+
/* The actions row is centred. */
|
|
12
|
+
.rf-cta__actions {
|
|
13
|
+
--actions-justify: center;
|
|
46
14
|
}
|
package/styles/runes/feature.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* feature — structure. The preamble flex
|
|
1
|
+
/* feature — structure. The preamble flex, the content
|
|
2
2
|
* display reset, the definitions grid, the feature-item icon stack, and the
|
|
3
3
|
* media-position flip. Spacing, type, surface chrome, alignment (text-align), and
|
|
4
4
|
* colour stay skin (Lumina's styles/runes/feature.css). */
|
|
@@ -8,16 +8,6 @@
|
|
|
8
8
|
align-items: flex-start;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
.rf-feature__eyebrow:has(a) {
|
|
12
|
-
display: inline-block;
|
|
13
|
-
position: relative;
|
|
14
|
-
}
|
|
15
|
-
.rf-feature__eyebrow:has(a) a::before {
|
|
16
|
-
content: "";
|
|
17
|
-
position: absolute;
|
|
18
|
-
inset: 0;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
11
|
.rf-feature__content {
|
|
22
12
|
display: contents;
|
|
23
13
|
}
|
package/styles/runes/hero.css
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/* hero — structure. The relative root (scrim/overlay anchor), the preamble
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* box, and the cover-band height/containment authority (which wins over the
|
|
1
|
+
/* hero — structure. The relative root (scrim/overlay anchor), the preamble,
|
|
2
|
+
* the actions row's position via auto-margins (the row itself is the `actions`
|
|
3
|
+
* rune's, styles/runes/actions.css), the media-position flip, the responsive
|
|
4
|
+
* image box, and the cover-band height/containment authority (which wins over the
|
|
5
5
|
* shared cover layer by specificity). All spacing, type, the headline gradient,
|
|
6
6
|
* surface chrome, scrim, radii, and text-align stay skin (Lumina's
|
|
7
7
|
* styles/runes/hero.css). */
|
|
@@ -19,28 +19,15 @@
|
|
|
19
19
|
align-items: center;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
/* Linked eyebrow → pill with a stretched link (chrome is skin). */
|
|
23
|
-
.rf-hero .rf-hero__eyebrow:has(a) {
|
|
24
|
-
display: inline-block;
|
|
25
|
-
position: relative;
|
|
26
|
-
}
|
|
27
|
-
.rf-hero .rf-hero__eyebrow:has(a) a::before {
|
|
28
|
-
content: "";
|
|
29
|
-
position: absolute;
|
|
30
|
-
inset: 0;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
22
|
.rf-hero__actions {
|
|
34
|
-
display: flex;
|
|
35
|
-
align-items: center;
|
|
36
|
-
flex-wrap: wrap;
|
|
37
23
|
margin: 0 auto;
|
|
38
24
|
}
|
|
39
25
|
|
|
40
|
-
/* Alignment — auto-margins
|
|
26
|
+
/* Alignment — auto-margins position the preamble and the actions row, and
|
|
27
|
+
* `--actions-justify` aligns the buttons inside it. */
|
|
41
28
|
.rf-hero[data-align="center"] .rf-hero__actions {
|
|
29
|
+
--actions-justify: center;
|
|
42
30
|
margin: 0 auto;
|
|
43
|
-
justify-content: center;
|
|
44
31
|
}
|
|
45
32
|
.rf-hero[data-align="left"] .rf-hero__preamble {
|
|
46
33
|
align-items: flex-start;
|
|
@@ -52,6 +39,7 @@
|
|
|
52
39
|
align-items: flex-end;
|
|
53
40
|
}
|
|
54
41
|
.rf-hero[data-align="right"] .rf-hero__actions {
|
|
42
|
+
--actions-justify: flex-end;
|
|
55
43
|
margin: 0 0 0 auto;
|
|
56
44
|
}
|
|
57
45
|
.rf-hero[data-align="center"] > p,
|
|
@@ -60,22 +48,6 @@
|
|
|
60
48
|
margin-right: auto;
|
|
61
49
|
}
|
|
62
50
|
|
|
63
|
-
.rf-hero ul,
|
|
64
|
-
.rf-hero nav {
|
|
65
|
-
display: flex;
|
|
66
|
-
flex-wrap: wrap;
|
|
67
|
-
list-style: none;
|
|
68
|
-
}
|
|
69
|
-
.rf-hero[data-align="center"] ul,
|
|
70
|
-
.rf-hero[data-align="center"] nav {
|
|
71
|
-
justify-content: center;
|
|
72
|
-
}
|
|
73
|
-
.rf-hero li a,
|
|
74
|
-
.rf-hero nav a {
|
|
75
|
-
display: inline-flex;
|
|
76
|
-
align-items: center;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
51
|
/* BUG-001 — content-first DOM inverts the shared media-first stacked contract. */
|
|
80
52
|
.rf-hero[data-media-position="bottom"] {
|
|
81
53
|
display: block;
|
|
@@ -122,26 +94,3 @@
|
|
|
122
94
|
align-self: center;
|
|
123
95
|
justify-self: stretch;
|
|
124
96
|
}
|
|
125
|
-
|
|
126
|
-
/* Mobile: stack actions full-width so the code block and button line up. */
|
|
127
|
-
@media (max-width: 640px) {
|
|
128
|
-
.rf-hero__actions {
|
|
129
|
-
flex-direction: column;
|
|
130
|
-
align-items: stretch;
|
|
131
|
-
}
|
|
132
|
-
.rf-hero__actions pre {
|
|
133
|
-
width: 100%;
|
|
134
|
-
box-sizing: border-box;
|
|
135
|
-
}
|
|
136
|
-
.rf-hero ul,
|
|
137
|
-
.rf-hero nav {
|
|
138
|
-
flex-direction: column;
|
|
139
|
-
align-items: stretch;
|
|
140
|
-
}
|
|
141
|
-
.rf-hero li a,
|
|
142
|
-
.rf-hero nav a {
|
|
143
|
-
justify-content: center;
|
|
144
|
-
width: 100%;
|
|
145
|
-
box-sizing: border-box;
|
|
146
|
-
}
|
|
147
|
-
}
|
package/styles/runes/pricing.css
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/* pricing — structure. The tiers grid, the tier flex-column (so CTAs drop to a
|
|
2
|
-
* common baseline via margin-top:auto), the preamble
|
|
3
|
-
* stretched-link, and list resets. All spacing, type, surface chrome, colour, and
|
|
2
|
+
* common baseline via margin-top:auto), the preamble layout, and list resets. All spacing, type, surface chrome, colour, and
|
|
4
3
|
* shadow stay skin (Lumina's styles/runes/pricing.css). */
|
|
5
4
|
|
|
6
5
|
.rf-pricing > header,
|
|
@@ -9,17 +8,6 @@
|
|
|
9
8
|
align-items: flex-start;
|
|
10
9
|
}
|
|
11
10
|
|
|
12
|
-
/* Linked eyebrow → pill with a stretched link (chrome is skin). */
|
|
13
|
-
.rf-pricing__eyebrow:has(a) {
|
|
14
|
-
display: inline-block;
|
|
15
|
-
position: relative;
|
|
16
|
-
}
|
|
17
|
-
.rf-pricing__eyebrow:has(a) a::before {
|
|
18
|
-
content: "";
|
|
19
|
-
position: absolute;
|
|
20
|
-
inset: 0;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
11
|
.rf-pricing__tiers,
|
|
24
12
|
.rf-pricing > ul[data-layout="grid"] {
|
|
25
13
|
display: grid;
|
package/styles/runes/reveal.css
CHANGED
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
/* reveal — structure. The
|
|
1
|
+
/* reveal — structure. The steps flex column, the
|
|
2
2
|
* hidden-step collapse (height/overflow), the metadata hide, and the control
|
|
3
3
|
* button flex. The animation (opacity/transform/transition), spacing, type,
|
|
4
4
|
* borders, and surface chrome are skin (Lumina's styles/runes/reveal.css). */
|
|
5
5
|
|
|
6
|
-
.rf-reveal__eyebrow:has(a) {
|
|
7
|
-
display: inline-block;
|
|
8
|
-
position: relative;
|
|
9
|
-
}
|
|
10
|
-
.rf-reveal__eyebrow:has(a) a::before {
|
|
11
|
-
content: "";
|
|
12
|
-
position: absolute;
|
|
13
|
-
inset: 0;
|
|
14
|
-
}
|
|
15
6
|
.rf-reveal__steps {
|
|
16
7
|
display: flex;
|
|
17
8
|
flex-direction: column;
|
package/styles/runes/section.css
CHANGED
|
@@ -1,23 +1,38 @@
|
|
|
1
|
-
/* section — structure. The column stack, the preamble flex
|
|
2
|
-
*
|
|
1
|
+
/* section — structure. The column stack, the preamble flex, the responsive image
|
|
2
|
+
* box, the full-width body, and the header alignment
|
|
3
3
|
* (align-items + auto-margins). Type, gaps, max-width, radii, and text-align are
|
|
4
|
-
* skin.
|
|
5
|
-
|
|
4
|
+
* skin.
|
|
5
|
+
*
|
|
6
|
+
* The split (`media-position`, SPEC-160 D2) is the shared layout's, keyed on
|
|
7
|
+
* `[data-media-position]` in layouts/split.css and the cover dimension. The
|
|
8
|
+
* column stack is `:where()` so it never outranks those attribute selectors,
|
|
9
|
+
* which this file loads after. */
|
|
10
|
+
:where(.rf-section) {
|
|
6
11
|
display: flex;
|
|
7
12
|
flex-direction: column;
|
|
8
13
|
}
|
|
9
|
-
.rf-
|
|
14
|
+
.rf-section__content {
|
|
10
15
|
display: flex;
|
|
11
16
|
flex-direction: column;
|
|
17
|
+
min-width: 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* Intrinsic-height scale (SPEC-089), as on `card` — for cover sections. */
|
|
21
|
+
.rf-section[data-height="sm"] {
|
|
22
|
+
min-height: 12rem;
|
|
23
|
+
}
|
|
24
|
+
.rf-section[data-height="md"] {
|
|
25
|
+
min-height: 18rem;
|
|
26
|
+
}
|
|
27
|
+
.rf-section[data-height="lg"] {
|
|
28
|
+
min-height: 26rem;
|
|
12
29
|
}
|
|
13
|
-
.rf-
|
|
14
|
-
|
|
15
|
-
position: relative;
|
|
30
|
+
.rf-section[data-height="xl"] {
|
|
31
|
+
min-height: 34rem;
|
|
16
32
|
}
|
|
17
|
-
.rf-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
inset: 0;
|
|
33
|
+
.rf-section__preamble {
|
|
34
|
+
display: flex;
|
|
35
|
+
flex-direction: column;
|
|
21
36
|
}
|
|
22
37
|
.rf-section__image {
|
|
23
38
|
max-width: 100%;
|
package/styles/runes/steps.css
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/* steps — structure. The step counter mechanism, the step item positioning, the
|
|
2
|
-
* counter-badge box placement, the preamble
|
|
3
|
-
* resets, and the media-position flip. All spacing, type, surface, and the badge
|
|
2
|
+
* counter-badge box placement, the preamble layout, list resets, and the media-position flip. All spacing, type, surface, and the badge
|
|
4
3
|
* chrome stay skin (Lumina's styles/runes/steps.css). */
|
|
5
4
|
|
|
6
5
|
.rf-steps {
|
|
@@ -12,17 +11,6 @@
|
|
|
12
11
|
align-items: flex-start;
|
|
13
12
|
}
|
|
14
13
|
|
|
15
|
-
/* Linked eyebrow → pill with a stretched link (chrome is skin). */
|
|
16
|
-
.rf-steps__eyebrow:has(a) {
|
|
17
|
-
display: inline-block;
|
|
18
|
-
position: relative;
|
|
19
|
-
}
|
|
20
|
-
.rf-steps__eyebrow:has(a) a::before {
|
|
21
|
-
content: "";
|
|
22
|
-
position: absolute;
|
|
23
|
-
inset: 0;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
14
|
.rf-steps ol {
|
|
27
15
|
list-style: none;
|
|
28
16
|
}
|
package/styles/runes/tabs.css
CHANGED
|
@@ -1,19 +1,9 @@
|
|
|
1
|
-
/* tabs — structure. The
|
|
1
|
+
/* tabs — structure. The scrollable tab strip (display
|
|
2
2
|
* + overflow), and the tab-button flex. The strip's `display: flex` is what
|
|
3
3
|
* guest-posture's hide rule overrides — now both skeleton, resolved by specificity.
|
|
4
4
|
* Type, colour, borders, spacing, and the active treatment are skin (Lumina's
|
|
5
5
|
* styles/runes/tabs.css). */
|
|
6
6
|
|
|
7
|
-
.rf-tabs__eyebrow:has(a) {
|
|
8
|
-
display: inline-block;
|
|
9
|
-
position: relative;
|
|
10
|
-
}
|
|
11
|
-
.rf-tabs__eyebrow:has(a) a::before {
|
|
12
|
-
content: "";
|
|
13
|
-
position: absolute;
|
|
14
|
-
inset: 0;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
7
|
/* Tab bar — the scrollable strip. */
|
|
18
8
|
.rf-tabs__tabs {
|
|
19
9
|
display: flex;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/* page-section — structure. The split two-column grid (+ mobile collapse). Padding,
|
|
2
|
-
* heading resets, and the gap are skin. */
|
|
3
|
-
.rf-page-section--split {
|
|
4
|
-
display: grid;
|
|
5
|
-
grid-template-columns: 1fr 1fr;
|
|
6
|
-
align-items: start;
|
|
7
|
-
}
|
|
8
|
-
@media (max-width: 768px) {
|
|
9
|
-
.rf-page-section--split {
|
|
10
|
-
grid-template-columns: 1fr;
|
|
11
|
-
}
|
|
12
|
-
}
|