@refrakt-md/skeleton 0.22.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/README.md +41 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/index.css +145 -0
- package/package.json +37 -0
- package/styles/dimensions/checklist.css +43 -0
- package/styles/dimensions/cover.css +91 -0
- package/styles/dimensions/guest-posture.css +19 -0
- package/styles/dimensions/media.css +38 -0
- package/styles/dimensions/metadata.css +66 -0
- package/styles/dimensions/sections.css +22 -0
- package/styles/dimensions/sequence.css +109 -0
- package/styles/dimensions/state.css +28 -0
- package/styles/global.css +37 -0
- package/styles/layouts/blog.css +38 -0
- package/styles/layouts/default.css +51 -0
- package/styles/layouts/docs.css +82 -0
- package/styles/layouts/mobile.css +39 -0
- package/styles/layouts/on-this-page.css +4 -0
- package/styles/layouts/plan.css +103 -0
- package/styles/layouts/search.css +80 -0
- package/styles/layouts/split.css +127 -0
- package/styles/layouts/theme-toggle.css +26 -0
- package/styles/layouts/version-switcher.css +10 -0
- package/styles/runes/accordion.css +55 -0
- package/styles/runes/aggregate.css +13 -0
- package/styles/runes/annotate.css +55 -0
- package/styles/runes/audio.css +70 -0
- package/styles/runes/bento.css +118 -0
- package/styles/runes/bg.css +29 -0
- package/styles/runes/blog.css +13 -0
- package/styles/runes/bond.css +36 -0
- package/styles/runes/breadcrumb.css +16 -0
- package/styles/runes/budget.css +42 -0
- package/styles/runes/card.css +37 -0
- package/styles/runes/cast.css +33 -0
- package/styles/runes/changelog.css +9 -0
- package/styles/runes/character.css +22 -0
- package/styles/runes/chart.css +32 -0
- package/styles/runes/codegroup.css +25 -0
- package/styles/runes/collection.css +51 -0
- package/styles/runes/compare.css +19 -0
- package/styles/runes/comparison.css +54 -0
- package/styles/runes/conversation.css +29 -0
- package/styles/runes/cta.css +46 -0
- package/styles/runes/datatable.css +16 -0
- package/styles/runes/design-context.css +6 -0
- package/styles/runes/details.css +19 -0
- package/styles/runes/diagram.css +17 -0
- package/styles/runes/diff.css +40 -0
- package/styles/runes/drawer.css +118 -0
- package/styles/runes/embed.css +20 -0
- package/styles/runes/event.css +5 -0
- package/styles/runes/expand.css +7 -0
- package/styles/runes/faction.css +13 -0
- package/styles/runes/feature.css +56 -0
- package/styles/runes/figure.css +23 -0
- package/styles/runes/file-ref.css +2 -0
- package/styles/runes/form.css +55 -0
- package/styles/runes/gallery.css +128 -0
- package/styles/runes/grid.css +62 -0
- package/styles/runes/hero.css +130 -0
- package/styles/runes/hint.css +28 -0
- package/styles/runes/howto.css +35 -0
- package/styles/runes/itinerary.css +41 -0
- package/styles/runes/juxtapose.css +61 -0
- package/styles/runes/lore.css +12 -0
- package/styles/runes/map.css +45 -0
- package/styles/runes/mediatext.css +37 -0
- package/styles/runes/milestone.css +31 -0
- package/styles/runes/mockup.css +144 -0
- package/styles/runes/nav.css +258 -0
- package/styles/runes/organization.css +6 -0
- package/styles/runes/page-section.css +12 -0
- package/styles/runes/pagination.css +39 -0
- package/styles/runes/palette.css +33 -0
- package/styles/runes/placeholder.css +7 -0
- package/styles/runes/plan-history.css +38 -0
- package/styles/runes/plan-progress.css +10 -0
- package/styles/runes/playlist.css +61 -0
- package/styles/runes/plot.css +23 -0
- package/styles/runes/preview.css +45 -0
- package/styles/runes/pricing.css +40 -0
- package/styles/runes/progress.css +22 -0
- package/styles/runes/pullquote.css +39 -0
- package/styles/runes/realm.css +14 -0
- package/styles/runes/recipe.css +40 -0
- package/styles/runes/relationships.css +49 -0
- package/styles/runes/reveal.css +29 -0
- package/styles/runes/sandbox.css +30 -0
- package/styles/runes/section.css +36 -0
- package/styles/runes/showcase.css +12 -0
- package/styles/runes/spacing.css +45 -0
- package/styles/runes/steps.css +65 -0
- package/styles/runes/storyboard.css +22 -0
- package/styles/runes/swatch.css +12 -0
- package/styles/runes/symbol.css +8 -0
- package/styles/runes/tabs.css +28 -0
- package/styles/runes/testimonial.css +13 -0
- package/styles/runes/textblock.css +25 -0
- package/styles/runes/timeline.css +31 -0
- package/styles/runes/toc.css +10 -0
- package/styles/runes/track.css +55 -0
- package/styles/runes/typography.css +33 -0
- package/styles/runes/xref.css +5 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/* mockup — structure. The generic device-frame layout primitives: the root sizing
|
|
2
|
+
* + container context, the fit-mode scaling, the frame/viewport/bezel layout, and
|
|
3
|
+
* the positioning/flex of the shared chrome parts (notch, status bar, home
|
|
4
|
+
* indicator, title bar, traffic lights, address bar, keyboard, trackpad). The
|
|
5
|
+
* per-device dimensions + frame chrome (border/radius/bezel colours/glyphs) and
|
|
6
|
+
* the device-specific overrides are skin (Lumina's styles/runes/mockup.css) — a
|
|
7
|
+
* cohesive "device skin" that overrides this generic layout by specificity/order. */
|
|
8
|
+
|
|
9
|
+
.rf-mockup {
|
|
10
|
+
display: block;
|
|
11
|
+
width: 100%;
|
|
12
|
+
container-type: inline-size;
|
|
13
|
+
}
|
|
14
|
+
.rf-showcase[data-place] .rf-mockup {
|
|
15
|
+
width: auto;
|
|
16
|
+
max-width: 100%;
|
|
17
|
+
container-type: normal;
|
|
18
|
+
}
|
|
19
|
+
.rf-showcase[data-place] .rf-mockup__frame {
|
|
20
|
+
zoom: var(--mockup-scale, 1);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* Fit mode: none (native pixel size + scale transform). */
|
|
24
|
+
.rf-mockup[data-fit="none"] {
|
|
25
|
+
display: inline-block;
|
|
26
|
+
width: auto;
|
|
27
|
+
container-type: normal;
|
|
28
|
+
}
|
|
29
|
+
.rf-mockup[data-fit="none"] .rf-mockup__frame {
|
|
30
|
+
zoom: normal;
|
|
31
|
+
transform: scale(var(--mockup-scale, 1));
|
|
32
|
+
transform-origin: top center;
|
|
33
|
+
margin-inline: 0;
|
|
34
|
+
}
|
|
35
|
+
.rf-mockup[data-fit="none"].rf-mockup--browser,
|
|
36
|
+
.rf-mockup[data-fit="none"].rf-mockup--browser-dark {
|
|
37
|
+
display: block;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.rf-mockup__frame {
|
|
41
|
+
position: relative;
|
|
42
|
+
margin-inline: auto;
|
|
43
|
+
zoom: calc(var(--mockup-scale, 1) * min(1, tan(atan2(100cqi, var(--mockup-device-width, 100cqi)))));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.rf-mockup__viewport {
|
|
47
|
+
overflow: auto;
|
|
48
|
+
}
|
|
49
|
+
.rf-mockup__viewport img {
|
|
50
|
+
display: block;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.rf-mockup__bezel {
|
|
54
|
+
display: flex;
|
|
55
|
+
flex-direction: column;
|
|
56
|
+
overflow: hidden;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Notch positioning (per-device size + colour is skin; iPhone SE re-anchors it). */
|
|
60
|
+
.rf-mockup__notch {
|
|
61
|
+
position: absolute;
|
|
62
|
+
top: 0;
|
|
63
|
+
left: 50%;
|
|
64
|
+
transform: translateX(-50%);
|
|
65
|
+
z-index: 2;
|
|
66
|
+
}
|
|
67
|
+
.rf-mockup__notch[data-notch="dynamic-island"] {
|
|
68
|
+
width: 120px;
|
|
69
|
+
height: 34px;
|
|
70
|
+
top: 12px;
|
|
71
|
+
}
|
|
72
|
+
.rf-mockup__notch[data-notch="classic"] {
|
|
73
|
+
width: 150px;
|
|
74
|
+
height: 28px;
|
|
75
|
+
top: 0;
|
|
76
|
+
}
|
|
77
|
+
.rf-mockup__notch[data-notch="punch-hole"] {
|
|
78
|
+
width: 12px;
|
|
79
|
+
height: 12px;
|
|
80
|
+
top: 16px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.rf-mockup__status-bar {
|
|
84
|
+
display: flex;
|
|
85
|
+
align-items: center;
|
|
86
|
+
justify-content: space-between;
|
|
87
|
+
height: 44px;
|
|
88
|
+
position: relative;
|
|
89
|
+
z-index: 1;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.rf-mockup__home-indicator {
|
|
93
|
+
display: flex;
|
|
94
|
+
justify-content: center;
|
|
95
|
+
align-items: center;
|
|
96
|
+
height: 32px;
|
|
97
|
+
}
|
|
98
|
+
.rf-mockup__home-indicator::after {
|
|
99
|
+
content: '';
|
|
100
|
+
display: block;
|
|
101
|
+
width: 134px;
|
|
102
|
+
height: 5px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.rf-mockup__title-bar {
|
|
106
|
+
display: flex;
|
|
107
|
+
align-items: center;
|
|
108
|
+
min-height: 2.5rem;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.rf-mockup__traffic-lights {
|
|
112
|
+
display: flex;
|
|
113
|
+
flex-shrink: 0;
|
|
114
|
+
}
|
|
115
|
+
.rf-mockup__traffic-light {
|
|
116
|
+
display: block;
|
|
117
|
+
width: 12px;
|
|
118
|
+
height: 12px;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.rf-mockup__address-bar {
|
|
122
|
+
flex: 1;
|
|
123
|
+
display: flex;
|
|
124
|
+
align-items: center;
|
|
125
|
+
max-width: 60%;
|
|
126
|
+
min-height: 1.75rem;
|
|
127
|
+
}
|
|
128
|
+
.rf-mockup__url {
|
|
129
|
+
overflow: hidden;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.rf-mockup__keyboard {
|
|
133
|
+
display: flex;
|
|
134
|
+
justify-content: center;
|
|
135
|
+
}
|
|
136
|
+
.rf-mockup__trackpad {
|
|
137
|
+
width: 40%;
|
|
138
|
+
height: 6px;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Context: centred in a grid cell. */
|
|
142
|
+
.rf-grid .rf-mockup {
|
|
143
|
+
justify-self: center;
|
|
144
|
+
}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/* nav — structure. The layout systems behind each nav mode — sidebar list reset +
|
|
2
|
+
* link box, collapsible group disclosure, the menubar flex bar + dropdown
|
|
3
|
+
* show/hide mechanism, the columns/cards grids, the strip flex, and the responsive
|
|
4
|
+
* reflows. Type, colour, spacing, borders, radii, the dropdown chrome, and the
|
|
5
|
+
* chevron glyph stay skin (Lumina's styles/runes/nav.css). */
|
|
6
|
+
|
|
7
|
+
.rf-nav ul { list-style: none; }
|
|
8
|
+
.rf-nav-item__link { display: block; }
|
|
9
|
+
|
|
10
|
+
/* Inline-badge items sit on one row. */
|
|
11
|
+
.rf-nav-item:has(> .rf-badge[data-name="badge"]) {
|
|
12
|
+
display: flex;
|
|
13
|
+
align-items: center;
|
|
14
|
+
}
|
|
15
|
+
.rf-nav-item:has(> .rf-badge[data-name="badge"]) > .rf-nav-item__link {
|
|
16
|
+
flex: 0 1 auto;
|
|
17
|
+
min-width: 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* ── Collapsible groups ── */
|
|
21
|
+
.rf-nav--collapsible .rf-nav-group h2,
|
|
22
|
+
.rf-nav--collapsible .rf-nav-group h3 {
|
|
23
|
+
display: flex;
|
|
24
|
+
align-items: center;
|
|
25
|
+
justify-content: space-between;
|
|
26
|
+
}
|
|
27
|
+
.rf-nav--collapsible .rf-nav-group h2::after,
|
|
28
|
+
.rf-nav--collapsible .rf-nav-group h3::after {
|
|
29
|
+
content: '';
|
|
30
|
+
width: 0.5rem;
|
|
31
|
+
height: 0.5rem;
|
|
32
|
+
transform: rotate(45deg);
|
|
33
|
+
}
|
|
34
|
+
.rf-nav--collapsible .rf-nav-group > .rf-nav-group__panel,
|
|
35
|
+
.rf-nav--collapsible .rf-nav-group > ul,
|
|
36
|
+
.rf-nav--collapsible .rf-nav-group > ol {
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
}
|
|
39
|
+
.rf-nav--collapsible .rf-nav-group[data-collapsed="true"] > .rf-nav-group__panel,
|
|
40
|
+
.rf-nav--collapsible .rf-nav-group[data-collapsed="true"] > ul,
|
|
41
|
+
.rf-nav--collapsible .rf-nav-group[data-collapsed="true"] > ol {
|
|
42
|
+
height: 0;
|
|
43
|
+
}
|
|
44
|
+
.rf-nav--collapsible .rf-nav-group[data-collapsed="true"] h2::after,
|
|
45
|
+
.rf-nav--collapsible .rf-nav-group[data-collapsed="true"] h3::after {
|
|
46
|
+
transform: rotate(-45deg);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* ── Menubar layout ── */
|
|
50
|
+
.rf-nav--menubar > .rf-nav__top-level > ul,
|
|
51
|
+
.rf-nav--menubar > .rf-nav__top-level ul {
|
|
52
|
+
display: flex;
|
|
53
|
+
flex-wrap: wrap;
|
|
54
|
+
align-items: center;
|
|
55
|
+
}
|
|
56
|
+
.rf-nav--menubar > .rf-nav__top-level .rf-nav-item__link {
|
|
57
|
+
display: inline-block;
|
|
58
|
+
}
|
|
59
|
+
.rf-nav--menubar .rf-nav-group {
|
|
60
|
+
position: relative;
|
|
61
|
+
display: inline-block;
|
|
62
|
+
}
|
|
63
|
+
.rf-nav--menubar .rf-nav-group > .rf-nav-group__panel {
|
|
64
|
+
display: block;
|
|
65
|
+
position: absolute;
|
|
66
|
+
top: 100%;
|
|
67
|
+
right: 0;
|
|
68
|
+
left: auto;
|
|
69
|
+
min-width: 14rem;
|
|
70
|
+
z-index: 50;
|
|
71
|
+
opacity: 0;
|
|
72
|
+
visibility: hidden;
|
|
73
|
+
pointer-events: none;
|
|
74
|
+
transform: translateY(-4px);
|
|
75
|
+
}
|
|
76
|
+
.rf-nav--menubar .rf-nav-group:hover > .rf-nav-group__panel,
|
|
77
|
+
.rf-nav--menubar .rf-nav-group:focus-within > .rf-nav-group__panel,
|
|
78
|
+
.rf-nav--menubar .rf-nav-group[data-open="true"] > .rf-nav-group__panel {
|
|
79
|
+
opacity: 1;
|
|
80
|
+
visibility: visible;
|
|
81
|
+
pointer-events: auto;
|
|
82
|
+
transform: translateY(0);
|
|
83
|
+
}
|
|
84
|
+
.rf-nav--menubar .rf-nav-group__panel ul { list-style: none; }
|
|
85
|
+
.rf-nav--menubar .rf-nav-group__panel > ul > li > .rf-nav-item__link {
|
|
86
|
+
display: block;
|
|
87
|
+
width: 100%;
|
|
88
|
+
box-sizing: border-box;
|
|
89
|
+
}
|
|
90
|
+
.rf-nav--menubar > nav,
|
|
91
|
+
.rf-nav--menubar {
|
|
92
|
+
display: flex;
|
|
93
|
+
flex-wrap: wrap;
|
|
94
|
+
align-items: center;
|
|
95
|
+
}
|
|
96
|
+
.rf-nav--menubar [data-name="trigger"] {
|
|
97
|
+
display: none;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@media (max-width: 768px) {
|
|
101
|
+
.rf-nav--menubar [data-name="trigger"] {
|
|
102
|
+
display: none;
|
|
103
|
+
}
|
|
104
|
+
.rf-nav--menubar {
|
|
105
|
+
flex-direction: column;
|
|
106
|
+
align-items: stretch;
|
|
107
|
+
}
|
|
108
|
+
.rf-nav--menubar > .rf-nav__top-level,
|
|
109
|
+
.rf-nav--menubar > .rf-nav-group {
|
|
110
|
+
display: block;
|
|
111
|
+
width: 100%;
|
|
112
|
+
}
|
|
113
|
+
.rf-nav--menubar > .rf-nav__top-level > ul {
|
|
114
|
+
flex-direction: column;
|
|
115
|
+
align-items: stretch;
|
|
116
|
+
}
|
|
117
|
+
.rf-nav--menubar > .rf-nav__top-level .rf-nav-item__link {
|
|
118
|
+
display: block;
|
|
119
|
+
}
|
|
120
|
+
.rf-nav--menubar .rf-nav-group {
|
|
121
|
+
position: static;
|
|
122
|
+
display: block;
|
|
123
|
+
}
|
|
124
|
+
.rf-nav--menubar .rf-nav-group > .rf-nav-group__panel {
|
|
125
|
+
position: static;
|
|
126
|
+
display: block;
|
|
127
|
+
min-width: 0;
|
|
128
|
+
opacity: 1;
|
|
129
|
+
visibility: visible;
|
|
130
|
+
pointer-events: auto;
|
|
131
|
+
transform: none;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* ── Columns layout ── */
|
|
136
|
+
.rf-nav--columns {
|
|
137
|
+
display: grid;
|
|
138
|
+
grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
|
|
139
|
+
}
|
|
140
|
+
.rf-nav--columns .rf-nav__top-level {
|
|
141
|
+
grid-column: 1 / -1;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
@media (max-width: 600px) {
|
|
145
|
+
.rf-nav--columns {
|
|
146
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* ── Cards layout ── */
|
|
151
|
+
.rf-nav--cards > .rf-nav__top-level > ul,
|
|
152
|
+
.rf-nav--cards > ul {
|
|
153
|
+
display: grid;
|
|
154
|
+
grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
|
|
155
|
+
list-style: none;
|
|
156
|
+
}
|
|
157
|
+
.rf-nav--cards .rf-nav-group > ul {
|
|
158
|
+
display: grid;
|
|
159
|
+
grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
|
|
160
|
+
}
|
|
161
|
+
.rf-nav--cards .rf-nav-item__link {
|
|
162
|
+
display: flex;
|
|
163
|
+
flex-direction: column;
|
|
164
|
+
height: 100%;
|
|
165
|
+
}
|
|
166
|
+
.rf-nav--cards .rf-nav-item__icon {
|
|
167
|
+
width: 1.5rem;
|
|
168
|
+
height: 1.5rem;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@media (max-width: 500px) {
|
|
172
|
+
.rf-nav--cards > ul,
|
|
173
|
+
.rf-nav--cards > .rf-nav__top-level > ul,
|
|
174
|
+
.rf-nav--cards .rf-nav-group > ul {
|
|
175
|
+
grid-template-columns: 1fr;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/* ── Per-item description (any layout) ── */
|
|
180
|
+
.rf-nav-item__description {
|
|
181
|
+
display: block;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/* ── Rich menubar panels ── */
|
|
185
|
+
.rf-nav--menubar .rf-nav-group__panel:has(.rf-nav-group__intro),
|
|
186
|
+
.rf-nav--menubar .rf-nav-group__panel:has(.rf-nav-group__footer),
|
|
187
|
+
.rf-nav--menubar .rf-nav-group__panel:has(.rf-nav) {
|
|
188
|
+
min-width: 20rem;
|
|
189
|
+
max-width: 36rem;
|
|
190
|
+
}
|
|
191
|
+
.rf-nav--menubar .rf-nav-group__panel:has(.rf-nav--columns > div[data-name="column"]) {
|
|
192
|
+
min-width: 36rem;
|
|
193
|
+
max-width: 56rem;
|
|
194
|
+
}
|
|
195
|
+
.rf-nav--menubar .rf-nav-group__panel .rf-nav--columns .rf-nav-item__link {
|
|
196
|
+
display: block;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* ── Multi-section columns ── */
|
|
200
|
+
.rf-nav--columns .rf-nav-group__column,
|
|
201
|
+
.rf-nav--columns .rf-nav__column,
|
|
202
|
+
.rf-nav--columns > div[data-name="column"] {
|
|
203
|
+
display: flex;
|
|
204
|
+
flex-direction: column;
|
|
205
|
+
}
|
|
206
|
+
.rf-nav--columns:has(> div[data-name="column"]) {
|
|
207
|
+
display: grid;
|
|
208
|
+
grid-template-columns: unset;
|
|
209
|
+
grid-auto-flow: column;
|
|
210
|
+
grid-auto-columns: minmax(14rem, 1fr);
|
|
211
|
+
}
|
|
212
|
+
@media (max-width: 900px) {
|
|
213
|
+
.rf-nav--columns:has(> div[data-name="column"]) {
|
|
214
|
+
grid-auto-flow: row;
|
|
215
|
+
grid-auto-columns: unset;
|
|
216
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
@media (max-width: 600px) {
|
|
220
|
+
.rf-nav--columns:has(> div[data-name="column"]) {
|
|
221
|
+
grid-auto-flow: row;
|
|
222
|
+
grid-auto-columns: unset;
|
|
223
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/* ── Strip layout ── */
|
|
228
|
+
.rf-nav--strip {
|
|
229
|
+
display: flex;
|
|
230
|
+
flex-wrap: wrap;
|
|
231
|
+
}
|
|
232
|
+
.rf-nav--strip ul {
|
|
233
|
+
display: flex;
|
|
234
|
+
flex-wrap: wrap;
|
|
235
|
+
list-style: none;
|
|
236
|
+
}
|
|
237
|
+
.rf-nav--strip .rf-nav-item__link {
|
|
238
|
+
display: inline-block;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/* ── Mobile menubar: nested columns collapse ── */
|
|
242
|
+
@media (max-width: 768px) {
|
|
243
|
+
.rf-nav--menubar .rf-nav-group__panel .rf-nav--columns {
|
|
244
|
+
grid-auto-flow: row;
|
|
245
|
+
grid-auto-columns: unset;
|
|
246
|
+
grid-template-columns: 1fr;
|
|
247
|
+
}
|
|
248
|
+
.rf-nav--menubar .rf-nav-group__panel .rf-nav--columns .rf-nav-item__description {
|
|
249
|
+
display: none;
|
|
250
|
+
}
|
|
251
|
+
.rf-nav--menubar .rf-nav-group__panel:has(.rf-nav-group__intro),
|
|
252
|
+
.rf-nav--menubar .rf-nav-group__panel:has(.rf-nav-group__footer),
|
|
253
|
+
.rf-nav--menubar .rf-nav-group__panel:has(.rf-nav),
|
|
254
|
+
.rf-nav--menubar .rf-nav-group__panel:has(.rf-nav--columns > div[data-name="column"]) {
|
|
255
|
+
min-width: 0;
|
|
256
|
+
max-width: 100%;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* pagination — structure. The prev/next flex row, each box as an equal-width flex
|
|
2
|
+
* column (flex/min-width/max-width), the prev/next cross-axis alignment + the next
|
|
3
|
+
* auto-push, and the marker flex order. Spacing, borders, radius, type, and colour
|
|
4
|
+
* are skin (Lumina's styles/runes/pagination.css). */
|
|
5
|
+
|
|
6
|
+
.rf-pagination {
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: stretch;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.rf-pagination__prev,
|
|
12
|
+
.rf-pagination__next {
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
flex: 1 1 0;
|
|
16
|
+
min-width: 0;
|
|
17
|
+
max-width: calc(50% - 0.5rem);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.rf-pagination__prev {
|
|
21
|
+
align-items: flex-start;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.rf-pagination__next {
|
|
25
|
+
align-items: flex-end;
|
|
26
|
+
margin-left: auto;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* The next box emits `<label> <marker>`; force the marker to the top to match prev. */
|
|
30
|
+
.rf-pagination__next [data-name="marker"] {
|
|
31
|
+
order: -1;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@media (max-width: 768px) {
|
|
35
|
+
.rf-pagination__prev,
|
|
36
|
+
.rf-pagination__next {
|
|
37
|
+
max-width: calc(50% - 0.25rem);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* palette — structure. The swatch grid (+ mobile cap), the swatch flex column, the
|
|
2
|
+
* swatch-colour height, the a11y flex, and the neutral-scale flex strip + stops.
|
|
3
|
+
* Radii, borders, gaps, and type are skin. */
|
|
4
|
+
.rf-palette__grid {
|
|
5
|
+
display: grid;
|
|
6
|
+
grid-template-columns: repeat(var(--rf-palette-cols, 4), 1fr);
|
|
7
|
+
}
|
|
8
|
+
@media (max-width: 768px) {
|
|
9
|
+
.rf-palette__grid {
|
|
10
|
+
grid-template-columns: repeat(min(var(--rf-palette-cols, 4), 3), 1fr);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
.rf-palette__swatch {
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
}
|
|
17
|
+
.rf-palette__swatch-color {
|
|
18
|
+
height: 5rem;
|
|
19
|
+
}
|
|
20
|
+
.rf-palette__swatch-a11y {
|
|
21
|
+
display: flex;
|
|
22
|
+
}
|
|
23
|
+
.rf-palette__scale {
|
|
24
|
+
display: flex;
|
|
25
|
+
overflow: hidden;
|
|
26
|
+
}
|
|
27
|
+
.rf-palette__scale-stop {
|
|
28
|
+
flex: 1;
|
|
29
|
+
display: flex;
|
|
30
|
+
align-items: flex-end;
|
|
31
|
+
justify-content: center;
|
|
32
|
+
min-height: 4rem;
|
|
33
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* plan-history — structure (mirrors the vertical timeline). The events list reset,
|
|
2
|
+
* event positioning + marker box placement (+ responsive), the inline date, the
|
|
3
|
+
* change/entity-summary flex, the criteria list reset, the commit-message block,
|
|
4
|
+
* and the mobile change wrap. Connector borders, marker chrome, badges, and type
|
|
5
|
+
* are skin. */
|
|
6
|
+
.rf-plan-history__events { list-style: none; }
|
|
7
|
+
.rf-plan-history__event { position: relative; }
|
|
8
|
+
.rf-plan-history__event::before {
|
|
9
|
+
content: '';
|
|
10
|
+
position: absolute;
|
|
11
|
+
left: -0.4375rem;
|
|
12
|
+
top: 0.25rem;
|
|
13
|
+
width: 0.75rem;
|
|
14
|
+
height: 0.75rem;
|
|
15
|
+
}
|
|
16
|
+
.rf-plan-history__date { display: inline; }
|
|
17
|
+
.rf-plan-history__change {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
}
|
|
21
|
+
.rf-plan-history__criteria { list-style: none; }
|
|
22
|
+
.rf-plan-history--global .rf-plan-history__commit-message {
|
|
23
|
+
display: block;
|
|
24
|
+
}
|
|
25
|
+
.rf-plan-history--global .rf-plan-history__entity-summary {
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: baseline;
|
|
28
|
+
}
|
|
29
|
+
@media (max-width: 640px) {
|
|
30
|
+
.rf-plan-history__event::before {
|
|
31
|
+
width: 0.625rem;
|
|
32
|
+
height: 0.625rem;
|
|
33
|
+
left: -0.375rem;
|
|
34
|
+
}
|
|
35
|
+
.rf-plan-history__change {
|
|
36
|
+
flex-wrap: wrap;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/* plan-progress — structure. The per-type block stack + group flex columns. The
|
|
2
|
+
* heading type and gaps are skin. */
|
|
3
|
+
.rf-plan-progress {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
}
|
|
7
|
+
.rf-plan-progress__group {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/* playlist — structure. The inner-header flex, the tracks list reset + counter +
|
|
2
|
+
* clip, the track-row flex (overriding the sequence dimension's absolute dot), the
|
|
3
|
+
* track-cell flex sizing + ellipsis overflow + duration auto-push, the meta hide,
|
|
4
|
+
* the cover aspect, and the narrow-screen column hides. The inset padding + split
|
|
5
|
+
* gaps + chrome + the track-number glyph stay skin. */
|
|
6
|
+
.rf-playlist__content > .rf-playlist__header {
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
align-items: flex-start;
|
|
9
|
+
}
|
|
10
|
+
.rf-playlist__tracks {
|
|
11
|
+
list-style: none;
|
|
12
|
+
counter-reset: track;
|
|
13
|
+
overflow: hidden;
|
|
14
|
+
}
|
|
15
|
+
.rf-playlist__tracks > li {
|
|
16
|
+
display: flex;
|
|
17
|
+
align-items: baseline;
|
|
18
|
+
position: static;
|
|
19
|
+
}
|
|
20
|
+
.rf-playlist__tracks > li > meta {
|
|
21
|
+
display: none;
|
|
22
|
+
}
|
|
23
|
+
.rf-playlist__tracks > li::before {
|
|
24
|
+
position: static;
|
|
25
|
+
width: auto;
|
|
26
|
+
height: auto;
|
|
27
|
+
min-width: 1.5rem;
|
|
28
|
+
flex-shrink: 0;
|
|
29
|
+
}
|
|
30
|
+
.rf-playlist__tracks [data-name="track-name"] {
|
|
31
|
+
flex: 1;
|
|
32
|
+
min-width: 0;
|
|
33
|
+
overflow: hidden;
|
|
34
|
+
}
|
|
35
|
+
.rf-playlist__tracks [data-name="track-artist"] {
|
|
36
|
+
flex-shrink: 0;
|
|
37
|
+
}
|
|
38
|
+
.rf-playlist__tracks [data-name="track-duration"] {
|
|
39
|
+
flex-shrink: 0;
|
|
40
|
+
margin-left: auto;
|
|
41
|
+
min-width: 3rem;
|
|
42
|
+
}
|
|
43
|
+
.rf-playlist__tracks [data-name="track-meta"] {
|
|
44
|
+
flex-shrink: 0;
|
|
45
|
+
}
|
|
46
|
+
/* Cover aspect — defaults to square (album convention). Authors override via
|
|
47
|
+
* `frame-aspect="..."`; the engine lands `--frame-aspect` on the media zone
|
|
48
|
+
* (frameTarget defaults to 'media' since playlist has a media section), and
|
|
49
|
+
* the global `[data-section="media"] > :is(img, video)` rule already fills
|
|
50
|
+
* the zone with the image (height: 100%, object-fit: cover). The media zone
|
|
51
|
+
* carries both `data-section="media"` and `data-name="media"`, so the canonical
|
|
52
|
+
* BEM element selector `.rf-playlist__media` targets the same node. */
|
|
53
|
+
.rf-playlist__media {
|
|
54
|
+
aspect-ratio: var(--frame-aspect, 1);
|
|
55
|
+
}
|
|
56
|
+
@media (max-width: 480px) {
|
|
57
|
+
.rf-playlist__tracks [data-name="track-artist"],
|
|
58
|
+
.rf-playlist__tracks [data-name="track-meta"] {
|
|
59
|
+
display: none;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* plot — structure. The column stack, the name block, the beats list reset, the
|
|
2
|
+
* beat positioning + dot box placement (incl. the linear connector dot offset and
|
|
3
|
+
* the linear label block). Dot colours, connector borders, type, and spacing are
|
|
4
|
+
* skin. */
|
|
5
|
+
.rf-plot { display: flex; flex-direction: column; }
|
|
6
|
+
.rf-plot > span[property="name"] { display: block; }
|
|
7
|
+
.rf-plot ol { list-style: none; }
|
|
8
|
+
.rf-beat { position: relative; }
|
|
9
|
+
.rf-beat::before {
|
|
10
|
+
content: '';
|
|
11
|
+
position: absolute;
|
|
12
|
+
left: 0.375rem;
|
|
13
|
+
top: 1rem;
|
|
14
|
+
width: 0.75rem;
|
|
15
|
+
height: 0.75rem;
|
|
16
|
+
}
|
|
17
|
+
.rf-plot--linear .rf-beat::before {
|
|
18
|
+
left: -0.4375rem;
|
|
19
|
+
top: 0.125rem;
|
|
20
|
+
}
|
|
21
|
+
.rf-plot--linear .rf-beat > span[data-field="label"] {
|
|
22
|
+
display: block;
|
|
23
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/* preview — structure. The toolbar/controls/toggle flex rows + toggle-button box,
|
|
2
|
+
* the canvas clip, the viewport-frame positioning + the constrained auto-centre,
|
|
3
|
+
* the viewport-label placement, the source-tabs flex, and the in-feature breakout.
|
|
4
|
+
* Surface chrome, radii, borders, type, padding, and text-align are skin. */
|
|
5
|
+
.rf-preview__toolbar {
|
|
6
|
+
display: flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
justify-content: space-between;
|
|
9
|
+
min-height: 2rem;
|
|
10
|
+
}
|
|
11
|
+
.rf-preview__controls {
|
|
12
|
+
display: flex;
|
|
13
|
+
align-items: center;
|
|
14
|
+
}
|
|
15
|
+
.rf-preview__view-toggle { display: flex; }
|
|
16
|
+
.rf-preview__toggle { display: flex; }
|
|
17
|
+
.rf-preview__toggle-btn {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
justify-content: center;
|
|
21
|
+
width: 1.625rem;
|
|
22
|
+
height: 1.625rem;
|
|
23
|
+
}
|
|
24
|
+
.rf-preview__canvas { overflow: hidden; }
|
|
25
|
+
.rf-preview__viewport-toggle { display: flex; }
|
|
26
|
+
.rf-preview__viewport-frame {
|
|
27
|
+
position: relative;
|
|
28
|
+
overflow: hidden;
|
|
29
|
+
}
|
|
30
|
+
.rf-preview__viewport-frame--constrained {
|
|
31
|
+
margin: 0 auto;
|
|
32
|
+
}
|
|
33
|
+
.rf-preview__viewport-label {
|
|
34
|
+
position: absolute;
|
|
35
|
+
top: 0.25rem;
|
|
36
|
+
right: 0.5rem;
|
|
37
|
+
pointer-events: none;
|
|
38
|
+
z-index: 1;
|
|
39
|
+
}
|
|
40
|
+
.rf-preview__source-tabs { display: flex; }
|
|
41
|
+
@container (max-width: 1280px) {
|
|
42
|
+
.rf-preview--in-feature {
|
|
43
|
+
margin-inline: calc(-1 * var(--rf-content-gutter, 1.5rem));
|
|
44
|
+
}
|
|
45
|
+
}
|