@refrakt-md/lumina 0.32.0 → 0.34.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 +29 -29
- package/contracts/structures.json +58 -60
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +57 -57
- package/dist/icons.js.map +1 -1
- package/dist/presets/catppuccin.js.map +1 -1
- package/dist/presets/dracula.js.map +1 -1
- package/dist/presets/gruvbox.js.map +1 -1
- package/dist/presets/niwaki.js.map +1 -1
- package/dist/presets/nord.js.map +1 -1
- package/dist/presets/one-dark.js.map +1 -1
- package/dist/presets/solarized.js.map +1 -1
- package/dist/presets/tideline.d.ts.map +1 -1
- package/dist/presets/tideline.js +20 -4
- package/dist/presets/tideline.js.map +1 -1
- package/dist/presets/tokyo-night.js.map +1 -1
- package/dist/tokens.js.map +1 -1
- package/index.css +124 -124
- package/package.json +5 -5
- package/presets.json +61 -13
- package/styles/base/attributes.css +32 -13
- package/styles/dimensions/checklist.css +45 -46
- package/styles/dimensions/cover.css +71 -51
- package/styles/dimensions/density.css +69 -65
- package/styles/dimensions/frame.css +116 -57
- package/styles/dimensions/metadata.css +110 -103
- package/styles/dimensions/motion.css +42 -13
- package/styles/dimensions/reading.css +27 -27
- package/styles/dimensions/sections.css +44 -45
- package/styles/dimensions/sequence.css +56 -57
- package/styles/dimensions/state.css +8 -2
- package/styles/dimensions/substrate.css +82 -58
- package/styles/dimensions/surfaces.css +65 -62
- package/styles/elements/blockquote.css +24 -25
- package/styles/elements/code.css +72 -71
- package/styles/elements/table.css +36 -37
- package/styles/global.css +163 -121
- package/styles/layouts/blog.css +219 -218
- package/styles/layouts/default.css +168 -167
- package/styles/layouts/docs.css +121 -122
- package/styles/layouts/mobile.css +54 -55
- package/styles/layouts/on-this-page.css +46 -47
- package/styles/layouts/plan.css +248 -247
- package/styles/layouts/search.css +142 -140
- package/styles/layouts/split.css +45 -45
- package/styles/layouts/theme-toggle.css +33 -31
- package/styles/layouts/version-switcher.css +38 -37
- package/styles/runes/accordion.css +90 -81
- package/styles/runes/aggregate.css +50 -39
- package/styles/runes/annotate.css +46 -45
- package/styles/runes/api.css +22 -23
- package/styles/runes/audio.css +140 -141
- package/styles/runes/badge.css +12 -13
- package/styles/runes/bar.css +4 -5
- package/styles/runes/bento.css +73 -62
- package/styles/runes/bg.css +62 -47
- package/styles/runes/blog.css +89 -90
- package/styles/runes/bond.css +49 -50
- package/styles/runes/breadcrumb.css +34 -35
- package/styles/runes/budget.css +126 -127
- package/styles/runes/bug.css +28 -27
- package/styles/runes/card.css +63 -60
- package/styles/runes/carousel.css +15 -15
- package/styles/runes/cast.css +50 -51
- package/styles/runes/changelog.css +45 -46
- package/styles/runes/character.css +31 -32
- package/styles/runes/chart.css +194 -106
- package/styles/runes/codegroup.css +109 -100
- package/styles/runes/collection.css +87 -86
- package/styles/runes/compare.css +38 -39
- package/styles/runes/comparison.css +205 -179
- package/styles/runes/conversation.css +36 -33
- package/styles/runes/cta.css +135 -132
- package/styles/runes/datatable.css +84 -83
- package/styles/runes/decision.css +25 -26
- package/styles/runes/design-context.css +21 -23
- package/styles/runes/details.css +26 -27
- package/styles/runes/diagram.css +28 -29
- package/styles/runes/diff.css +75 -72
- package/styles/runes/drawer.css +276 -198
- package/styles/runes/embed.css +20 -21
- package/styles/runes/event.css +35 -36
- package/styles/runes/expand.css +43 -34
- package/styles/runes/faction.css +47 -48
- package/styles/runes/feature.css +119 -112
- package/styles/runes/figure.css +11 -12
- package/styles/runes/file-ref.css +11 -13
- package/styles/runes/form.css +155 -154
- package/styles/runes/gallery.css +59 -60
- package/styles/runes/grid.css +10 -7
- package/styles/runes/hero.css +189 -185
- package/styles/runes/hint.css +57 -58
- package/styles/runes/howto.css +62 -64
- package/styles/runes/itinerary.css +133 -134
- package/styles/runes/juxtapose.css +83 -82
- package/styles/runes/lore.css +32 -34
- package/styles/runes/map.css +106 -99
- package/styles/runes/mediatext.css +30 -27
- package/styles/runes/milestone.css +98 -97
- package/styles/runes/mockup.css +338 -335
- package/styles/runes/nav.css +465 -450
- package/styles/runes/organization.css +23 -20
- package/styles/runes/page-section.css +14 -15
- package/styles/runes/pagination.css +45 -44
- package/styles/runes/palette.css +78 -80
- package/styles/runes/placeholder.css +8 -9
- package/styles/runes/plan-history.css +160 -161
- package/styles/runes/plan-progress.css +15 -16
- package/styles/runes/plan-ref.css +32 -23
- package/styles/runes/playlist.css +106 -107
- package/styles/runes/plot.css +92 -91
- package/styles/runes/preview.css +152 -149
- package/styles/runes/pricing.css +133 -123
- package/styles/runes/progress.css +32 -27
- package/styles/runes/pullquote.css +89 -90
- package/styles/runes/realm.css +47 -48
- package/styles/runes/recipe.css +112 -114
- package/styles/runes/relationships.css +77 -76
- package/styles/runes/reveal.css +90 -79
- package/styles/runes/sandbox.css +59 -60
- package/styles/runes/section.css +57 -50
- package/styles/runes/showcase.css +35 -16
- package/styles/runes/sidenote.css +30 -27
- package/styles/runes/snippet.css +8 -9
- package/styles/runes/spacing.css +86 -88
- package/styles/runes/spec.css +24 -25
- package/styles/runes/steps.css +89 -80
- package/styles/runes/storyboard.css +46 -45
- package/styles/runes/swatch.css +22 -23
- package/styles/runes/symbol.css +117 -118
- package/styles/runes/tabs.css +88 -79
- package/styles/runes/testimonial.css +43 -44
- package/styles/runes/textblock.css +32 -28
- package/styles/runes/timeline.css +63 -64
- package/styles/runes/tint.css +214 -215
- package/styles/runes/toc.css +40 -41
- package/styles/runes/track.css +89 -90
- package/styles/runes/typography.css +89 -91
- package/styles/runes/work.css +47 -36
- package/styles/runes/xref.css +21 -22
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
-
/* Blockquote */
|
|
3
|
-
blockquote {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
blockquote::before {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
blockquote p:last-child {
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
2
|
+
/* Blockquote */
|
|
3
|
+
blockquote {
|
|
4
|
+
position: relative;
|
|
5
|
+
border-left: 3px solid var(--rf-color-primary);
|
|
6
|
+
margin: 1.5rem 0;
|
|
7
|
+
padding: 1rem 1.25rem 1rem 3.25rem;
|
|
8
|
+
color: var(--rf-color-muted);
|
|
9
|
+
}
|
|
10
|
+
blockquote::before {
|
|
11
|
+
content: "";
|
|
12
|
+
position: absolute;
|
|
13
|
+
left: 0.75rem;
|
|
14
|
+
top: 1rem;
|
|
15
|
+
width: 18px;
|
|
16
|
+
height: 18px;
|
|
17
|
+
background: var(--rf-color-primary);
|
|
18
|
+
opacity: 0.4;
|
|
19
|
+
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10 8C10 5.79 8.21 4 6 4C3.79 4 2 5.79 2 8C2 10.21 3.79 12 6 12C6.67 12 7.31 11.83 7.88 11.54C7.63 14.08 5.55 16.09 3 16.34V18.36C6.68 18.09 9.64 15.13 9.93 11.45C9.98 10.99 10 10.5 10 10V8ZM22 8C22 5.79 20.21 4 18 4C15.79 4 14 5.79 14 8C14 10.21 15.79 12 18 12C18.67 12 19.31 11.83 19.88 11.54C19.63 14.08 17.55 16.09 15 16.34V18.36C18.68 18.09 21.64 15.13 21.93 11.45C21.98 10.99 22 10.5 22 10V8Z'/%3E%3C/svg%3E");
|
|
20
|
+
mask-size: contain;
|
|
21
|
+
mask-repeat: no-repeat;
|
|
22
|
+
}
|
|
23
|
+
blockquote p:last-child {
|
|
24
|
+
margin-bottom: 0;
|
|
25
|
+
}
|
|
27
26
|
}
|
package/styles/elements/code.css
CHANGED
|
@@ -1,50 +1,52 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
-
/* Code block wrapper — the rf-codeblock div comes from the Markdoc fence node
|
|
2
|
+
/* Code block wrapper — the rf-codeblock div comes from the Markdoc fence node
|
|
3
3
|
schema at build time. Inside codegroup the margin is removed by
|
|
4
4
|
.rf-codegroup .rf-codeblock. */
|
|
5
|
-
.rf-codeblock {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
5
|
+
.rf-codeblock {
|
|
6
|
+
position: relative;
|
|
7
|
+
margin: 1.5rem 0;
|
|
8
|
+
}
|
|
9
9
|
|
|
10
|
-
.rf-codeblock > pre {
|
|
11
|
-
|
|
12
|
-
}
|
|
10
|
+
.rf-codeblock > pre {
|
|
11
|
+
margin: 0;
|
|
12
|
+
}
|
|
13
13
|
|
|
14
|
-
/* Copy button — injected by the copy behavior at runtime */
|
|
15
|
-
.rf-codeblock__copy {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
14
|
+
/* Copy button — injected by the copy behavior at runtime */
|
|
15
|
+
.rf-codeblock__copy {
|
|
16
|
+
position: absolute;
|
|
17
|
+
top: 0.5rem;
|
|
18
|
+
right: 0.5rem;
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
width: 2rem;
|
|
23
|
+
height: 2rem;
|
|
24
|
+
border: none;
|
|
25
|
+
border-radius: var(--rf-radius-sm);
|
|
26
|
+
background: transparent;
|
|
27
|
+
color: var(--rf-color-code-text, #e2e8f0);
|
|
28
|
+
cursor: pointer;
|
|
29
|
+
opacity: 0;
|
|
30
|
+
transition:
|
|
31
|
+
opacity 150ms ease,
|
|
32
|
+
background-color 150ms ease;
|
|
33
|
+
}
|
|
32
34
|
|
|
33
|
-
.rf-codeblock:hover .rf-codeblock__copy {
|
|
34
|
-
|
|
35
|
-
}
|
|
35
|
+
.rf-codeblock:hover .rf-codeblock__copy {
|
|
36
|
+
opacity: 0.6;
|
|
37
|
+
}
|
|
36
38
|
|
|
37
|
-
.rf-codeblock__copy:hover {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
39
|
+
.rf-codeblock__copy:hover {
|
|
40
|
+
opacity: 1 !important;
|
|
41
|
+
background: rgba(255, 255, 255, 0.1);
|
|
42
|
+
}
|
|
41
43
|
|
|
42
|
-
.rf-codeblock__copy--copied {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
44
|
+
.rf-codeblock__copy--copied {
|
|
45
|
+
opacity: 1 !important;
|
|
46
|
+
color: var(--rf-color-success, #4ade80);
|
|
47
|
+
}
|
|
46
48
|
|
|
47
|
-
/* WORK-304 — fence-level annotations: line numbers + line highlight.
|
|
49
|
+
/* WORK-304 — fence-level annotations: line numbers + line highlight.
|
|
48
50
|
*
|
|
49
51
|
* Shiki renders each line as `<span class="line">…</span>`. The fence
|
|
50
52
|
* schema forwards `data-linenumbers` / `data-highlight-lines` /
|
|
@@ -71,49 +73,48 @@
|
|
|
71
73
|
* consistent across highlighted and plain rows — matches the diff row
|
|
72
74
|
* primitive at `runes/diff.css`. Highlighted rows just colour the
|
|
73
75
|
* border + add the surface tint. */
|
|
74
|
-
.rf-codeblock pre code {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
76
|
+
.rf-codeblock pre code {
|
|
77
|
+
display: grid;
|
|
78
|
+
min-width: max-content;
|
|
79
|
+
}
|
|
78
80
|
|
|
79
|
-
.rf-codeblock pre code .line {
|
|
80
|
-
|
|
81
|
-
}
|
|
81
|
+
.rf-codeblock pre code .line {
|
|
82
|
+
border-left: 3px solid transparent;
|
|
83
|
+
}
|
|
82
84
|
|
|
83
|
-
/* Line numbers — gutter::before owns the left column. Strip the pre's
|
|
85
|
+
/* Line numbers — gutter::before owns the left column. Strip the pre's
|
|
84
86
|
* horizontal padding when linenumbers are on so the gutter sits flush
|
|
85
87
|
* against the codeblock edge; the gutter's own padding + right border
|
|
86
88
|
* provides the visual separation from the code body. */
|
|
87
|
-
.rf-codeblock pre[data-linenumbers] {
|
|
88
|
-
|
|
89
|
-
}
|
|
89
|
+
.rf-codeblock pre[data-linenumbers] {
|
|
90
|
+
padding-left: 0;
|
|
91
|
+
}
|
|
90
92
|
|
|
91
|
-
.rf-codeblock pre[data-linenumbers] code {
|
|
92
|
-
|
|
93
|
-
}
|
|
93
|
+
.rf-codeblock pre[data-linenumbers] code {
|
|
94
|
+
counter-reset: rf-line var(--rf-start-line, 0);
|
|
95
|
+
}
|
|
94
96
|
|
|
95
|
-
.rf-codeblock pre[data-linenumbers] code .line::before {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
97
|
+
.rf-codeblock pre[data-linenumbers] code .line::before {
|
|
98
|
+
counter-increment: rf-line;
|
|
99
|
+
content: counter(rf-line);
|
|
100
|
+
display: inline-block;
|
|
101
|
+
width: 3em;
|
|
102
|
+
padding-inline: 0.75rem 0.5rem;
|
|
103
|
+
margin-right: 0.75rem;
|
|
104
|
+
text-align: right;
|
|
105
|
+
color: var(--rf-color-line-number);
|
|
106
|
+
font-variant-numeric: tabular-nums;
|
|
107
|
+
user-select: none;
|
|
108
|
+
border-right: 1px solid var(--rf-color-border);
|
|
109
|
+
}
|
|
108
110
|
|
|
109
|
-
/* Highlighted lines share diff's row template — neutral surface tint
|
|
111
|
+
/* Highlighted lines share diff's row template — neutral surface tint
|
|
110
112
|
* + primary-coloured left rail, no `+`/`-` sigil. The grid layout on
|
|
111
113
|
* `<code>` above keeps consecutive highlighted rows continuous (no
|
|
112
114
|
* subpixel gaps between the rails). Border is on every `.line` (above)
|
|
113
115
|
* so the content alignment doesn't jump when highlighting a row. */
|
|
114
|
-
.rf-codeblock pre code .line[data-line-status="highlight"] {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
|
|
116
|
+
.rf-codeblock pre code .line[data-line-status="highlight"] {
|
|
117
|
+
background: var(--rf-color-line-highlight);
|
|
118
|
+
border-left-color: var(--rf-color-line-highlight-rail);
|
|
119
|
+
}
|
|
119
120
|
}
|
|
@@ -1,39 +1,38 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
-
/* Table wrapper */
|
|
3
|
-
.rf-table-wrapper {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
.rf-table-wrapper table {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
.rf-table-wrapper th {
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
.rf-table-wrapper td {
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
.rf-table-wrapper td:last-child {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
.rf-table-wrapper th:first-child,
|
|
24
|
-
.rf-table-wrapper td:first-child {
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
.rf-table-wrapper th:last-child,
|
|
28
|
-
.rf-table-wrapper td:last-child {
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
.rf-table-wrapper tr:last-child td {
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
.rf-table-wrapper th code,
|
|
35
|
-
.rf-table-wrapper td code {
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
2
|
+
/* Table wrapper */
|
|
3
|
+
.rf-table-wrapper {
|
|
4
|
+
overflow-x: auto;
|
|
5
|
+
-webkit-overflow-scrolling: touch;
|
|
6
|
+
margin: 1.5rem 0;
|
|
7
|
+
}
|
|
8
|
+
.rf-table-wrapper table {
|
|
9
|
+
margin: 0;
|
|
10
|
+
border-collapse: collapse;
|
|
11
|
+
width: 100%;
|
|
12
|
+
}
|
|
13
|
+
.rf-table-wrapper th {
|
|
14
|
+
white-space: nowrap;
|
|
15
|
+
}
|
|
16
|
+
.rf-table-wrapper td {
|
|
17
|
+
white-space: nowrap;
|
|
18
|
+
}
|
|
19
|
+
.rf-table-wrapper td:last-child {
|
|
20
|
+
white-space: normal;
|
|
21
|
+
min-width: 20rem;
|
|
22
|
+
}
|
|
23
|
+
.rf-table-wrapper th:first-child,
|
|
24
|
+
.rf-table-wrapper td:first-child {
|
|
25
|
+
padding-left: 0;
|
|
26
|
+
}
|
|
27
|
+
.rf-table-wrapper th:last-child,
|
|
28
|
+
.rf-table-wrapper td:last-child {
|
|
29
|
+
padding-right: 0;
|
|
30
|
+
}
|
|
31
|
+
.rf-table-wrapper tr:last-child td {
|
|
32
|
+
border-bottom: none;
|
|
33
|
+
}
|
|
34
|
+
.rf-table-wrapper th code,
|
|
35
|
+
.rf-table-wrapper td code {
|
|
36
|
+
font-size: 1em;
|
|
37
|
+
}
|
|
39
38
|
}
|
package/styles/global.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
-
/* Lumina Theme — Global Base Styles (skin).
|
|
2
|
+
/* Lumina Theme — Global Base Styles (skin).
|
|
3
3
|
*
|
|
4
4
|
* Structure (box model, zone resets, prose/heading/list/table rhythm, the
|
|
5
5
|
* responsive-image + scroll mechanisms) lives in @refrakt-md/skeleton
|
|
@@ -7,163 +7,205 @@
|
|
|
7
7
|
* typography, colour, native chrome, and the surface treatment of code/pre/
|
|
8
8
|
* tables. */
|
|
9
9
|
|
|
10
|
-
html {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
html {
|
|
11
|
+
font-family: var(--rf-font-sans);
|
|
12
|
+
color: var(--rf-color-text);
|
|
13
|
+
background: var(--rf-color-bg);
|
|
14
|
+
line-height: var(--rf-leading-relaxed);
|
|
15
|
+
-webkit-font-smoothing: antialiased;
|
|
16
|
+
-moz-osx-font-smoothing: grayscale;
|
|
17
|
+
-webkit-text-size-adjust: 100%;
|
|
18
|
+
text-size-adjust: 100%;
|
|
19
|
+
transition:
|
|
20
|
+
background-color 200ms ease,
|
|
21
|
+
color 200ms ease;
|
|
22
|
+
/* Opt out of mobile Safari's "text inflation" — it auto-scales text
|
|
21
23
|
* inside elements wider than the viewport (e.g. the diff's
|
|
22
24
|
* `min-width: 40rem` split panels and any horizontally-scrolling
|
|
23
25
|
* code block) and makes their fonts read several pixels larger
|
|
24
26
|
* than designed. */
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
27
|
+
-webkit-text-size-adjust: 100%;
|
|
28
|
+
text-size-adjust: 100%;
|
|
29
|
+
}
|
|
28
30
|
|
|
29
|
-
/* ─── Theme-aware browser chrome (WORK-351) ─────────────────────────
|
|
31
|
+
/* ─── Theme-aware browser chrome (WORK-351) ─────────────────────────
|
|
30
32
|
* Make native chrome — scrollbars, form controls, the main viewport
|
|
31
33
|
* scrollbar — follow the active theme instead of always rendering in
|
|
32
34
|
* the OS default scheme. */
|
|
33
35
|
|
|
34
|
-
/* `color-scheme` so the UA paints native widgets/scrollbars per mode. */
|
|
35
|
-
:root {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
/* `color-scheme` so the UA paints native widgets/scrollbars per mode. */
|
|
37
|
+
:root {
|
|
38
|
+
color-scheme: light;
|
|
39
|
+
}
|
|
40
|
+
[data-theme="dark"] {
|
|
41
|
+
color-scheme: dark;
|
|
42
|
+
}
|
|
43
|
+
@media (prefers-color-scheme: dark) {
|
|
44
|
+
:root:not([data-theme="light"]) {
|
|
45
|
+
color-scheme: dark;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
40
48
|
|
|
41
|
-
/* Branded text selection — a subtle primary wash (the native/OS blue
|
|
49
|
+
/* Branded text selection — a subtle primary wash (the native/OS blue
|
|
42
50
|
* otherwise leaks through). Background only, so the element's own text
|
|
43
51
|
* colour stays legible under any theme. */
|
|
44
|
-
::selection {
|
|
45
|
-
|
|
46
|
-
}
|
|
52
|
+
::selection {
|
|
53
|
+
background: color-mix(in oklch, var(--rf-color-primary) 22%, transparent);
|
|
54
|
+
}
|
|
47
55
|
|
|
48
|
-
/* Token-driven scrollbars. `scrollbar-color` / `scrollbar-width` inherit,
|
|
56
|
+
/* Token-driven scrollbars. `scrollbar-color` / `scrollbar-width` inherit,
|
|
49
57
|
* so setting them on the root reaches every overflow container (codegroup,
|
|
50
58
|
* datatable, drawer body, nav/sidebar) without per-rune rules; the WebKit
|
|
51
59
|
* pseudo-elements refine the same colours. More specific per-container
|
|
52
60
|
* rules (e.g. the hidden docs sidebar) still win. */
|
|
53
|
-
:root {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
::-webkit-scrollbar {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
:root {
|
|
62
|
+
scrollbar-width: thin;
|
|
63
|
+
scrollbar-color: var(--rf-color-muted) transparent;
|
|
64
|
+
}
|
|
65
|
+
::-webkit-scrollbar {
|
|
66
|
+
width: 10px;
|
|
67
|
+
height: 10px;
|
|
68
|
+
}
|
|
69
|
+
::-webkit-scrollbar-track {
|
|
70
|
+
background: transparent;
|
|
71
|
+
}
|
|
72
|
+
::-webkit-scrollbar-thumb {
|
|
73
|
+
background: var(--rf-color-muted);
|
|
74
|
+
border-radius: var(--rf-radius-full);
|
|
75
|
+
border: 2px solid transparent;
|
|
76
|
+
background-clip: padding-box;
|
|
77
|
+
}
|
|
78
|
+
::-webkit-scrollbar-thumb:hover {
|
|
79
|
+
background: var(--rf-color-text);
|
|
80
|
+
}
|
|
66
81
|
|
|
67
|
-
/* ─── Keyboard focus (WORK-352) ─────────────────────────────────────
|
|
82
|
+
/* ─── Keyboard focus (WORK-352) ─────────────────────────────────────
|
|
68
83
|
* A uniform, token-driven focus ring on every interactive element, at
|
|
69
84
|
* zero specificity (`:where`) so a rune's own `:focus-visible` overrides
|
|
70
85
|
* it. An outline (not box-shadow) follows border-radius and never shifts
|
|
71
86
|
* layout; `outline-color` uses `primary`, so it is visible in both modes. */
|
|
72
|
-
:where(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
87
|
+
:where(
|
|
88
|
+
a[href],
|
|
89
|
+
button,
|
|
90
|
+
input,
|
|
91
|
+
select,
|
|
92
|
+
textarea,
|
|
93
|
+
summary,
|
|
94
|
+
[tabindex]:not([tabindex="-1"]),
|
|
95
|
+
[role="button"],
|
|
96
|
+
[role="tab"],
|
|
97
|
+
[role="link"],
|
|
98
|
+
[role="menuitem"],
|
|
99
|
+
[role="menuitemradio"]
|
|
100
|
+
):focus-visible {
|
|
101
|
+
outline: 2px solid var(--rf-color-primary);
|
|
102
|
+
outline-offset: 2px;
|
|
103
|
+
}
|
|
80
104
|
|
|
81
|
-
/* ─── Reduced motion (WORK-352) ─────────────────────────────────────
|
|
105
|
+
/* ─── Reduced motion (WORK-352) ─────────────────────────────────────
|
|
82
106
|
* Honour the user's motion preference across every animated rune
|
|
83
107
|
* (chart, reveal, juxtapose, accordion, drawer, …) in one place. Uses a
|
|
84
108
|
* near-zero duration rather than `none` so animation/transition end
|
|
85
109
|
* events still fire for behaviours that await them. */
|
|
86
|
-
@media (prefers-reduced-motion: reduce) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
110
|
+
@media (prefers-reduced-motion: reduce) {
|
|
111
|
+
*,
|
|
112
|
+
*::before,
|
|
113
|
+
*::after {
|
|
114
|
+
animation-duration: 0.01ms !important;
|
|
115
|
+
animation-iteration-count: 1 !important;
|
|
116
|
+
transition-duration: 0.01ms !important;
|
|
117
|
+
scroll-behavior: auto !important;
|
|
118
|
+
}
|
|
92
119
|
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
h1, h2, h3, h4, h5, h6 {
|
|
96
|
-
line-height: var(--rf-leading-tight);
|
|
97
|
-
font-weight: var(--rf-weight-semibold);
|
|
98
|
-
letter-spacing: var(--rf-tracking-tight);
|
|
99
|
-
}
|
|
100
120
|
|
|
101
|
-
h1
|
|
102
|
-
h2
|
|
103
|
-
h3
|
|
104
|
-
h4
|
|
121
|
+
h1,
|
|
122
|
+
h2,
|
|
123
|
+
h3,
|
|
124
|
+
h4,
|
|
125
|
+
h5,
|
|
126
|
+
h6 {
|
|
127
|
+
line-height: var(--rf-leading-tight);
|
|
128
|
+
font-weight: var(--rf-weight-semibold);
|
|
129
|
+
letter-spacing: var(--rf-tracking-tight);
|
|
130
|
+
}
|
|
105
131
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
132
|
+
h1 {
|
|
133
|
+
font-size: var(--rf-text-3xl);
|
|
134
|
+
font-weight: var(--rf-weight-bold);
|
|
135
|
+
letter-spacing: var(--rf-tracking-tight);
|
|
136
|
+
}
|
|
137
|
+
h2 {
|
|
138
|
+
font-size: var(--rf-text-2xl);
|
|
139
|
+
}
|
|
140
|
+
h3 {
|
|
141
|
+
font-size: var(--rf-text-xl);
|
|
142
|
+
}
|
|
143
|
+
h4 {
|
|
144
|
+
font-size: var(--rf-text);
|
|
145
|
+
}
|
|
115
146
|
|
|
116
|
-
|
|
147
|
+
a {
|
|
148
|
+
color: var(--rf-color-primary);
|
|
149
|
+
text-decoration: none;
|
|
150
|
+
transition: color 150ms ease;
|
|
151
|
+
}
|
|
152
|
+
a:hover {
|
|
153
|
+
color: var(--rf-color-primary-hover);
|
|
154
|
+
text-decoration: underline;
|
|
155
|
+
}
|
|
117
156
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
background: var(--rf-color-inline-code-bg);
|
|
122
|
-
padding: 0.15rem 0.4rem;
|
|
123
|
-
border-radius: var(--rf-radius-sm);
|
|
124
|
-
font-variant-ligatures: none;
|
|
125
|
-
}
|
|
157
|
+
strong {
|
|
158
|
+
font-weight: var(--rf-weight-semibold);
|
|
159
|
+
}
|
|
126
160
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}
|
|
161
|
+
code {
|
|
162
|
+
font-family: var(--rf-font-mono);
|
|
163
|
+
font-size: 0.875em;
|
|
164
|
+
background: var(--rf-color-inline-code-bg);
|
|
165
|
+
padding: 0.15rem 0.4rem;
|
|
166
|
+
border-radius: var(--rf-radius-sm);
|
|
167
|
+
font-variant-ligatures: none;
|
|
168
|
+
}
|
|
136
169
|
|
|
137
|
-
pre
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
170
|
+
pre {
|
|
171
|
+
background: var(--rf-color-code-bg);
|
|
172
|
+
color: var(--rf-color-code-text);
|
|
173
|
+
padding: 1.25rem 1.5rem;
|
|
174
|
+
border-radius: var(--rf-radius-md);
|
|
175
|
+
font-size: var(--rf-text-sm);
|
|
176
|
+
line-height: var(--rf-leading-relaxed);
|
|
177
|
+
border: 1px solid var(--rf-color-border);
|
|
178
|
+
}
|
|
143
179
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
180
|
+
pre code {
|
|
181
|
+
background: none;
|
|
182
|
+
padding: 0;
|
|
183
|
+
font-size: inherit;
|
|
184
|
+
border-radius: 0;
|
|
185
|
+
}
|
|
148
186
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
187
|
+
hr {
|
|
188
|
+
border: none;
|
|
189
|
+
border-top: 1px solid var(--rf-color-border);
|
|
190
|
+
}
|
|
152
191
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
padding: 0.625rem 1rem;
|
|
157
|
-
border-bottom: 1px solid var(--rf-color-border);
|
|
158
|
-
font-size: var(--rf-text-xs);
|
|
159
|
-
text-transform: uppercase;
|
|
160
|
-
letter-spacing: var(--rf-tracking-wide);
|
|
161
|
-
color: var(--rf-color-muted);
|
|
162
|
-
}
|
|
192
|
+
table {
|
|
193
|
+
font-size: var(--rf-text-sm);
|
|
194
|
+
}
|
|
163
195
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
196
|
+
th {
|
|
197
|
+
text-align: left;
|
|
198
|
+
font-weight: var(--rf-weight-semibold);
|
|
199
|
+
padding: 0.625rem 1rem;
|
|
200
|
+
border-bottom: 1px solid var(--rf-color-border);
|
|
201
|
+
font-size: var(--rf-text-xs);
|
|
202
|
+
text-transform: uppercase;
|
|
203
|
+
letter-spacing: var(--rf-tracking-wide);
|
|
204
|
+
color: var(--rf-color-muted);
|
|
205
|
+
}
|
|
168
206
|
|
|
207
|
+
td {
|
|
208
|
+
padding: 0.625rem 1rem;
|
|
209
|
+
border-bottom: 1px solid var(--rf-color-border);
|
|
210
|
+
}
|
|
169
211
|
}
|