@bkstg/design-systems 1.0.0 → 1.0.1
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/package.json +1 -1
- package/tether/latest/README.md +44 -0
- package/tether/latest/charts-core.mjs +349 -0
- package/tether/latest/charts.js +58 -0
- package/tether/latest/motion.js +168 -0
- package/tether/latest/react/ActivityFeed.jsx +18 -0
- package/tether/latest/react/Alert.jsx +28 -0
- package/tether/latest/react/Annotations.jsx +24 -0
- package/tether/latest/react/AppShell.jsx +87 -0
- package/tether/latest/react/Avatar.jsx +19 -0
- package/tether/latest/react/Badge.jsx +14 -0
- package/tether/latest/react/Banner.jsx +17 -0
- package/tether/latest/react/Breadcrumbs.jsx +23 -0
- package/tether/latest/react/Button.jsx +31 -0
- package/tether/latest/react/ButtonGroup.jsx +29 -0
- package/tether/latest/react/Calendar.jsx +57 -0
- package/tether/latest/react/CardHeader.jsx +14 -0
- package/tether/latest/react/Chart.jsx +42 -0
- package/tether/latest/react/Chat.jsx +34 -0
- package/tether/latest/react/Checkbox.jsx +32 -0
- package/tether/latest/react/CodeSnippet.jsx +17 -0
- package/tether/latest/react/ColorPicker.jsx +35 -0
- package/tether/latest/react/CommandMenu.jsx +54 -0
- package/tether/latest/react/DatePicker.jsx +34 -0
- package/tether/latest/react/DeviceFrame.jsx +12 -0
- package/tether/latest/react/Dialog.jsx +43 -0
- package/tether/latest/react/Divider.jsx +10 -0
- package/tether/latest/react/Editor.jsx +85 -0
- package/tether/latest/react/EmptyState.jsx +13 -0
- package/tether/latest/react/Field.jsx +32 -0
- package/tether/latest/react/FileUpload.jsx +38 -0
- package/tether/latest/react/Filters.jsx +19 -0
- package/tether/latest/react/Infographics.jsx +54 -0
- package/tether/latest/react/InlineCTA.jsx +14 -0
- package/tether/latest/react/LineChart.jsx +23 -0
- package/tether/latest/react/Marketing.jsx +161 -0
- package/tether/latest/react/Menu.jsx +76 -0
- package/tether/latest/react/Metric.jsx +28 -0
- package/tether/latest/react/PageHeader.jsx +22 -0
- package/tether/latest/react/Pagination.jsx +32 -0
- package/tether/latest/react/Progress.jsx +26 -0
- package/tether/latest/react/RadioGroup.jsx +27 -0
- package/tether/latest/react/Reveal.jsx +17 -0
- package/tether/latest/react/SectionHeader.jsx +24 -0
- package/tether/latest/react/Select.jsx +19 -0
- package/tether/latest/react/Sheet.jsx +25 -0
- package/tether/latest/react/SideNav.jsx +37 -0
- package/tether/latest/react/Skeleton.jsx +16 -0
- package/tether/latest/react/Slider.jsx +27 -0
- package/tether/latest/react/Spinner.jsx +14 -0
- package/tether/latest/react/Steps.jsx +22 -0
- package/tether/latest/react/Switch.jsx +11 -0
- package/tether/latest/react/Table.jsx +24 -0
- package/tether/latest/react/Tabs.jsx +80 -0
- package/tether/latest/react/Tag.jsx +34 -0
- package/tether/latest/react/Tooltip.jsx +25 -0
- package/tether/latest/react/Tree.jsx +41 -0
- package/tether/latest/react/VideoPlayer.jsx +57 -0
- package/tether/latest/react/cx.js +4 -0
- package/tether/latest/react/index.js +59 -0
- package/tether/latest/system.json +44 -0
- package/tether/latest/tether.css +1661 -0
- package/tether/latest/tether.js +703 -0
- package/tether/v1/README.md +44 -0
- package/tether/v1/charts-core.mjs +349 -0
- package/tether/v1/charts.js +58 -0
- package/tether/v1/motion.js +168 -0
- package/tether/v1/react/ActivityFeed.jsx +18 -0
- package/tether/v1/react/Alert.jsx +28 -0
- package/tether/v1/react/Annotations.jsx +24 -0
- package/tether/v1/react/AppShell.jsx +87 -0
- package/tether/v1/react/Avatar.jsx +19 -0
- package/tether/v1/react/Badge.jsx +14 -0
- package/tether/v1/react/Banner.jsx +17 -0
- package/tether/v1/react/Breadcrumbs.jsx +23 -0
- package/tether/v1/react/Button.jsx +31 -0
- package/tether/v1/react/ButtonGroup.jsx +29 -0
- package/tether/v1/react/Calendar.jsx +57 -0
- package/tether/v1/react/CardHeader.jsx +14 -0
- package/tether/v1/react/Chart.jsx +42 -0
- package/tether/v1/react/Chat.jsx +34 -0
- package/tether/v1/react/Checkbox.jsx +32 -0
- package/tether/v1/react/CodeSnippet.jsx +17 -0
- package/tether/v1/react/ColorPicker.jsx +35 -0
- package/tether/v1/react/CommandMenu.jsx +54 -0
- package/tether/v1/react/DatePicker.jsx +34 -0
- package/tether/v1/react/DeviceFrame.jsx +12 -0
- package/tether/v1/react/Dialog.jsx +43 -0
- package/tether/v1/react/Divider.jsx +10 -0
- package/tether/v1/react/Editor.jsx +85 -0
- package/tether/v1/react/EmptyState.jsx +13 -0
- package/tether/v1/react/Field.jsx +32 -0
- package/tether/v1/react/FileUpload.jsx +38 -0
- package/tether/v1/react/Filters.jsx +19 -0
- package/tether/v1/react/Infographics.jsx +54 -0
- package/tether/v1/react/InlineCTA.jsx +14 -0
- package/tether/v1/react/LineChart.jsx +23 -0
- package/tether/v1/react/Marketing.jsx +161 -0
- package/tether/v1/react/Menu.jsx +76 -0
- package/tether/v1/react/Metric.jsx +28 -0
- package/tether/v1/react/PageHeader.jsx +22 -0
- package/tether/v1/react/Pagination.jsx +32 -0
- package/tether/v1/react/Progress.jsx +26 -0
- package/tether/v1/react/RadioGroup.jsx +27 -0
- package/tether/v1/react/Reveal.jsx +17 -0
- package/tether/v1/react/SectionHeader.jsx +24 -0
- package/tether/v1/react/Select.jsx +19 -0
- package/tether/v1/react/Sheet.jsx +25 -0
- package/tether/v1/react/SideNav.jsx +37 -0
- package/tether/v1/react/Skeleton.jsx +16 -0
- package/tether/v1/react/Slider.jsx +27 -0
- package/tether/v1/react/Spinner.jsx +14 -0
- package/tether/v1/react/Steps.jsx +22 -0
- package/tether/v1/react/Switch.jsx +11 -0
- package/tether/v1/react/Table.jsx +24 -0
- package/tether/v1/react/Tabs.jsx +80 -0
- package/tether/v1/react/Tag.jsx +34 -0
- package/tether/v1/react/Tooltip.jsx +25 -0
- package/tether/v1/react/Tree.jsx +41 -0
- package/tether/v1/react/VideoPlayer.jsx +57 -0
- package/tether/v1/react/cx.js +4 -0
- package/tether/v1/react/index.js +59 -0
- package/tether/v1/system.json +44 -0
- package/tether/v1/tether.css +1661 -0
- package/tether/v1/tether.js +703 -0
|
@@ -0,0 +1,1661 @@
|
|
|
1
|
+
/* Tether: design system export (tether.css)
|
|
2
|
+
* Base: shadcn/ui. Themes: backstage + backstage-light, mode light.
|
|
3
|
+
* Shape standard, typeface dm, texture off, motion full. Edited tokens: 0. Type styles edited or added: 0. Custom colors: 24.
|
|
4
|
+
* Generated 2026-10-04 from design-system-kit (themes by Colin).
|
|
5
|
+
* Do not edit this file; edit the system in the workbench and export again.
|
|
6
|
+
* Component patterns after shadcn/ui (MIT). */
|
|
7
|
+
|
|
8
|
+
/* themes: backstage + backstage-light, mode light */
|
|
9
|
+
:root{
|
|
10
|
+
--s:#f5f2f0;
|
|
11
|
+
--p:#fafaf9;
|
|
12
|
+
--l:#E5DDD5;
|
|
13
|
+
--i:#232220;
|
|
14
|
+
--i2:#4b4a49;
|
|
15
|
+
--i3:#525151;
|
|
16
|
+
--mid:#c0cece;
|
|
17
|
+
--pos:#2d2d2d;
|
|
18
|
+
--neg:#881337;
|
|
19
|
+
--good:#14532d;
|
|
20
|
+
--warn:#713f12;
|
|
21
|
+
--acc:#4d6b00;
|
|
22
|
+
--on-accent:#f2f2ef;
|
|
23
|
+
--fill:#657272;
|
|
24
|
+
--on-fill:#fafaf9;
|
|
25
|
+
--danger-edge:#e3c1c9;
|
|
26
|
+
--warn-fill:#f4ebdc;
|
|
27
|
+
--data-2:#2d2d2d;
|
|
28
|
+
--bar-a:#8fcc75;
|
|
29
|
+
--bar-b:#2f8d07;
|
|
30
|
+
--under-a:#d99aa8;
|
|
31
|
+
--under-b:#881337;
|
|
32
|
+
--warn-hatch:#b8862b;
|
|
33
|
+
--field:#fafaf9;
|
|
34
|
+
--edge-soft:rgba(45,45,45,.12);
|
|
35
|
+
--ring-c:rgba(155,196,15,.40);
|
|
36
|
+
--top-a:#fafaf9;
|
|
37
|
+
--card-a:#fafaf9;
|
|
38
|
+
--card-b:#fafaf9;
|
|
39
|
+
--shadow:0 1px 2px rgba(25,25,25,.06);
|
|
40
|
+
--tx-k:.8;
|
|
41
|
+
--dept-booking-ink:#af4800;
|
|
42
|
+
--dept-ticketing-ink:#d20a0a;
|
|
43
|
+
--dept-marketing-ink:#cb1052;
|
|
44
|
+
--dept-sponsorship-ink:#b217bb;
|
|
45
|
+
--dept-creative-ink:#0063d9;
|
|
46
|
+
--dept-production-ink:#6e3ff7;
|
|
47
|
+
--dept-operations-ink:#1c736f;
|
|
48
|
+
--dept-relations-ink:#8a6000;
|
|
49
|
+
--dept-hospitality-ink:#a65000;
|
|
50
|
+
--dept-finance-ink:#36751a;
|
|
51
|
+
--dept-fnb-ink:#8f5c11;
|
|
52
|
+
--dept-unassigned-ink:#686868;
|
|
53
|
+
--series-1:#2a6fc4;
|
|
54
|
+
--series-2:#c9531f;
|
|
55
|
+
--series-3:#0f8a5f;
|
|
56
|
+
--series-4:#a87100;
|
|
57
|
+
--series-5:#c4467a;
|
|
58
|
+
}
|
|
59
|
+
html[data-mode="dark"]{
|
|
60
|
+
--shadow:none;
|
|
61
|
+
--tx-k:1;
|
|
62
|
+
--dept-booking-ink:#ff8835;
|
|
63
|
+
--dept-ticketing-ink:#f87171;
|
|
64
|
+
--dept-marketing-ink:#f4709f;
|
|
65
|
+
--dept-sponsorship-ink:#e359eb;
|
|
66
|
+
--dept-creative-ink:#5fa8ff;
|
|
67
|
+
--dept-production-ink:#a78bfa;
|
|
68
|
+
--dept-operations-ink:#3fd0c9;
|
|
69
|
+
--dept-relations-ink:#ffc94d;
|
|
70
|
+
--dept-hospitality-ink:#ffb066;
|
|
71
|
+
--dept-finance-ink:#7ed957;
|
|
72
|
+
--dept-fnb-ink:#e8a33d;
|
|
73
|
+
--dept-unassigned-ink:#8a8a8a;
|
|
74
|
+
--series-1:#3987e5;
|
|
75
|
+
--series-2:#d95926;
|
|
76
|
+
--series-3:#199e70;
|
|
77
|
+
--series-4:#c98500;
|
|
78
|
+
--series-5:#d55181;
|
|
79
|
+
--s:#1d2525;
|
|
80
|
+
--p:#171c1c;
|
|
81
|
+
--l:#353535;
|
|
82
|
+
--i:#ededed;
|
|
83
|
+
--i2:#c2c2c2;
|
|
84
|
+
--i3:#a3a3a3;
|
|
85
|
+
--mid:#2d2d2d;
|
|
86
|
+
--pos:#99b8b8;
|
|
87
|
+
--neg:#ff7a85;
|
|
88
|
+
--good:#6ee08a;
|
|
89
|
+
--warn:#f5c451;
|
|
90
|
+
--acc:#99b8b8;
|
|
91
|
+
--on-accent:#111111;
|
|
92
|
+
--fill:#99b8b8;
|
|
93
|
+
--on-fill:#111111;
|
|
94
|
+
--danger-edge:#4a2b2e;
|
|
95
|
+
--warn-fill:#2a2515;
|
|
96
|
+
--data-2:#d4d7cb;
|
|
97
|
+
--bar-a:#179915;
|
|
98
|
+
--bar-b:#77c176;
|
|
99
|
+
--under-a:#8a3f47;
|
|
100
|
+
--under-b:#d9626d;
|
|
101
|
+
--warn-hatch:#f5c451;
|
|
102
|
+
--field:#111111;
|
|
103
|
+
--edge-soft:rgba(255,255,255,.12);
|
|
104
|
+
--ring-c:rgba(198,241,53,.35);
|
|
105
|
+
--top-a:#232323;
|
|
106
|
+
--card-a:#232323;
|
|
107
|
+
--card-b:#232323;
|
|
108
|
+
}
|
|
109
|
+
html[data-mode="light"]{
|
|
110
|
+
--s:#f5f2f0;
|
|
111
|
+
--p:#fafaf9;
|
|
112
|
+
--l:#E5DDD5;
|
|
113
|
+
--i:#232220;
|
|
114
|
+
--i2:#4b4a49;
|
|
115
|
+
--i3:#525151;
|
|
116
|
+
--mid:#c0cece;
|
|
117
|
+
--pos:#2d2d2d;
|
|
118
|
+
--neg:#881337;
|
|
119
|
+
--good:#14532d;
|
|
120
|
+
--warn:#713f12;
|
|
121
|
+
--acc:#4d6b00;
|
|
122
|
+
--on-accent:#f2f2ef;
|
|
123
|
+
--fill:#657272;
|
|
124
|
+
--on-fill:#fafaf9;
|
|
125
|
+
--danger-edge:#e3c1c9;
|
|
126
|
+
--warn-fill:#f4ebdc;
|
|
127
|
+
--data-2:#2d2d2d;
|
|
128
|
+
--bar-a:#8fcc75;
|
|
129
|
+
--bar-b:#2f8d07;
|
|
130
|
+
--under-a:#d99aa8;
|
|
131
|
+
--under-b:#881337;
|
|
132
|
+
--warn-hatch:#b8862b;
|
|
133
|
+
--field:#fafaf9;
|
|
134
|
+
--edge-soft:rgba(45,45,45,.12);
|
|
135
|
+
--ring-c:rgba(155,196,15,.40);
|
|
136
|
+
--top-a:#fafaf9;
|
|
137
|
+
--card-a:#fafaf9;
|
|
138
|
+
--card-b:#fafaf9;
|
|
139
|
+
--shadow:0 1px 2px rgba(25,25,25,.06);
|
|
140
|
+
--tx-k:.8;
|
|
141
|
+
--dept-booking-ink:#af4800;
|
|
142
|
+
--dept-ticketing-ink:#d20a0a;
|
|
143
|
+
--dept-marketing-ink:#cb1052;
|
|
144
|
+
--dept-sponsorship-ink:#b217bb;
|
|
145
|
+
--dept-creative-ink:#0063d9;
|
|
146
|
+
--dept-production-ink:#6e3ff7;
|
|
147
|
+
--dept-operations-ink:#1c736f;
|
|
148
|
+
--dept-relations-ink:#8a6000;
|
|
149
|
+
--dept-hospitality-ink:#a65000;
|
|
150
|
+
--dept-finance-ink:#36751a;
|
|
151
|
+
--dept-fnb-ink:#8f5c11;
|
|
152
|
+
--dept-unassigned-ink:#686868;
|
|
153
|
+
--series-1:#2a6fc4;
|
|
154
|
+
--series-2:#c9531f;
|
|
155
|
+
--series-3:#0f8a5f;
|
|
156
|
+
--series-4:#a87100;
|
|
157
|
+
--series-5:#c4467a;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
:root{
|
|
161
|
+
--font-system:ui-sans-serif,-apple-system,"Segoe UI",Roboto,sans-serif;
|
|
162
|
+
--font-grotesk:"Helvetica Neue",Helvetica,Arial,"Liberation Sans",sans-serif;
|
|
163
|
+
--font-serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,"Times New Roman",serif;
|
|
164
|
+
--font-monoface:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
|
|
165
|
+
--font-condensed:"Avenir Next Condensed","Arial Narrow","Roboto Condensed","Helvetica Neue",Arial,sans-serif;
|
|
166
|
+
--font-rounded:ui-rounded,"SF Pro Rounded","Nunito","Varela Round",system-ui,sans-serif;
|
|
167
|
+
--font-humanist:Seravek,"Gill Sans","Gill Sans MT",Optima,Candara,Verdana,sans-serif;
|
|
168
|
+
--font-dm:"DM Sans",ui-sans-serif,-apple-system,"Segoe UI",Roboto,sans-serif;
|
|
169
|
+
--font-dmmono:"DM Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
|
|
170
|
+
}
|
|
171
|
+
:root{
|
|
172
|
+
--ts-display-size:3rem; --ts-display-weight:800; --ts-display-lh:1.05; --ts-display-ls:-.03em; --ts-display-case:none; --ts-display-font:var(--font-body, var(--font-system));
|
|
173
|
+
--ts-h1-size:2rem; --ts-h1-weight:700; --ts-h1-lh:1.15; --ts-h1-ls:-.02em; --ts-h1-case:none; --ts-h1-font:var(--font-body, var(--font-system));
|
|
174
|
+
--ts-h2-size:1.5rem; --ts-h2-weight:700; --ts-h2-lh:1.2; --ts-h2-ls:-.01em; --ts-h2-case:none; --ts-h2-font:var(--font-body, var(--font-system));
|
|
175
|
+
--ts-h3-size:1.1rem; --ts-h3-weight:700; --ts-h3-lh:1.3; --ts-h3-ls:var(--ls-body,0); --ts-h3-case:none; --ts-h3-font:var(--font-body, var(--font-system));
|
|
176
|
+
--ts-lead-size:1.05rem; --ts-lead-weight:400; --ts-lead-lh:1.6; --ts-lead-ls:var(--ls-body,0); --ts-lead-case:none; --ts-lead-font:var(--font-body, var(--font-system));
|
|
177
|
+
--ts-body-size:15px; --ts-body-weight:400; --ts-body-lh:1.5; --ts-body-ls:var(--ls-body,0); --ts-body-case:none; --ts-body-font:var(--font-body, var(--font-system));
|
|
178
|
+
--ts-small-size:.875rem; --ts-small-weight:400; --ts-small-lh:1.5; --ts-small-ls:var(--ls-body,0); --ts-small-case:none; --ts-small-font:var(--font-body, var(--font-system));
|
|
179
|
+
--ts-caption-size:.8125rem; --ts-caption-weight:400; --ts-caption-lh:1.45; --ts-caption-ls:var(--ls-body,0); --ts-caption-case:none; --ts-caption-font:var(--font-body, var(--font-system));
|
|
180
|
+
--ts-label-size:.875rem; --ts-label-weight:600; --ts-label-lh:1.5; --ts-label-ls:var(--ls-body,0); --ts-label-case:none; --ts-label-font:var(--font-body, var(--font-system));
|
|
181
|
+
--ts-eyebrow-size:.625rem; --ts-eyebrow-weight:600; --ts-eyebrow-lh:1.2; --ts-eyebrow-ls:.14em; --ts-eyebrow-case:uppercase; --ts-eyebrow-font:var(--font-label, var(--font-body, var(--font-system)));
|
|
182
|
+
}
|
|
183
|
+
body{margin:0;background:var(--s);color:var(--i);font:var(--ts-body-weight) var(--ts-body-size)/var(--ts-body-lh) var(--ts-body-font);letter-spacing:var(--ts-body-ls);text-transform:var(--ts-body-case)}
|
|
184
|
+
html{font-size:calc(100% * var(--type-k, 1))}
|
|
185
|
+
:root{
|
|
186
|
+
--dept-booking:#ff8835;
|
|
187
|
+
--dept-booking-ink:#ff8835;
|
|
188
|
+
--dept-ticketing:#f87171;
|
|
189
|
+
--dept-ticketing-ink:#f87171;
|
|
190
|
+
--dept-marketing:#f4709f;
|
|
191
|
+
--dept-marketing-ink:#f4709f;
|
|
192
|
+
--dept-sponsorship:#e359eb;
|
|
193
|
+
--dept-sponsorship-ink:#e359eb;
|
|
194
|
+
--dept-creative:#5fa8ff;
|
|
195
|
+
--dept-creative-ink:#5fa8ff;
|
|
196
|
+
--dept-production:#a78bfa;
|
|
197
|
+
--dept-production-ink:#a78bfa;
|
|
198
|
+
--dept-operations:#3fd0c9;
|
|
199
|
+
--dept-operations-ink:#3fd0c9;
|
|
200
|
+
--dept-relations:#ffc94d;
|
|
201
|
+
--dept-relations-ink:#ffc94d;
|
|
202
|
+
--dept-hospitality:#ffb066;
|
|
203
|
+
--dept-hospitality-ink:#ffb066;
|
|
204
|
+
--dept-finance:#7ed957;
|
|
205
|
+
--dept-finance-ink:#7ed957;
|
|
206
|
+
--dept-fnb:#e8a33d;
|
|
207
|
+
--dept-fnb-ink:#e8a33d;
|
|
208
|
+
--dept-unassigned:#8a8a8a;
|
|
209
|
+
--dept-unassigned-ink:#8a8a8a;
|
|
210
|
+
}
|
|
211
|
+
html{ --font-body:var(--font-dm);
|
|
212
|
+
--font-label:var(--font-dmmono);
|
|
213
|
+
--ls-body:-.005em; }
|
|
214
|
+
:root{
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
}
|
|
232
|
+
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-repeat:repeat;opacity:calc(var(--tx-o,0) * var(--tx-k,1));background-image:none}
|
|
233
|
+
@media (prefers-reduced-motion: reduce){
|
|
234
|
+
*, *::before, *::after{animation:none!important;transition:none!important}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/* ── base: shadcn/ui ── */
|
|
238
|
+
/* bases/shadcn.css: the shadcn/ui flavor. Load after tokens.css, before components.css.
|
|
239
|
+
* shadcn/ui is MIT. Sizes and states follow its new-york components; colors come from the active theme.
|
|
240
|
+
* Every base sets the same component tokens, so any base works under the same components and React. */
|
|
241
|
+
:root{
|
|
242
|
+
/* this base's heading sizes, on the kit's type styles (tokens.css); the type editor sits on top */
|
|
243
|
+
--ts-display-size:3rem;
|
|
244
|
+
--ts-h1-size:2rem;
|
|
245
|
+
--ts-h2-size:1.5rem;
|
|
246
|
+
--base:shadcn;
|
|
247
|
+
/* shadcn's color names, pointed at the theme: a component written for shadcn works as-is */
|
|
248
|
+
--background:var(--s);
|
|
249
|
+
--foreground:var(--i);
|
|
250
|
+
--card:var(--p);
|
|
251
|
+
--card-foreground:var(--i);
|
|
252
|
+
--popover:var(--p);
|
|
253
|
+
--popover-foreground:var(--i);
|
|
254
|
+
--primary:var(--fill);
|
|
255
|
+
--primary-foreground:var(--on-fill);
|
|
256
|
+
--secondary:var(--mid);
|
|
257
|
+
--secondary-foreground:var(--i);
|
|
258
|
+
--muted:var(--mid);
|
|
259
|
+
--muted-foreground:var(--i3);
|
|
260
|
+
--accent:var(--mid);
|
|
261
|
+
--accent-foreground:var(--i);
|
|
262
|
+
--destructive:var(--neg);
|
|
263
|
+
--border:var(--l);
|
|
264
|
+
--input:var(--input-border);
|
|
265
|
+
--ring:var(--pos);
|
|
266
|
+
--radius:var(--r-md,8px);
|
|
267
|
+
--chart-1:var(--series-1);
|
|
268
|
+
--chart-2:var(--series-2);
|
|
269
|
+
--chart-3:var(--series-3);
|
|
270
|
+
--chart-4:var(--series-4);
|
|
271
|
+
--chart-5:var(--series-5);
|
|
272
|
+
/* Tailwind's shadow scale, which shadcn uses */
|
|
273
|
+
--shadow-xs:0 1px 2px 0 rgba(0,0,0,.05);
|
|
274
|
+
--shadow-sm:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);
|
|
275
|
+
--shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);
|
|
276
|
+
--shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);
|
|
277
|
+
--shadow-xl:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);
|
|
278
|
+
--shadow-2xl:0 25px 50px -12px rgba(0,0,0,.25);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/* Component tokens: value; then @edit type [min max step]. The workbench edits these per system. */
|
|
282
|
+
:root{
|
|
283
|
+
/* shared */
|
|
284
|
+
--focus-color:var(--pos);
|
|
285
|
+
--focus-width:2px;
|
|
286
|
+
--focus-offset:2px;
|
|
287
|
+
--disabled-opacity:.5;
|
|
288
|
+
/* Field edges: --i3 blended 80% toward --field, the softest blend that keeps 3:1 against every
|
|
289
|
+
ground in all 28 themes (check-kit.mjs measures it); 70% drops Newsprint to 2.58. */
|
|
290
|
+
--input-border:color-mix(in srgb,var(--i3) 80%,var(--field));
|
|
291
|
+
|
|
292
|
+
/* button: h-9, px-4, rounded-md, font-medium, shadow-xs */
|
|
293
|
+
--btn-radius:var(--r-md,8px);
|
|
294
|
+
--btn-h:36px;
|
|
295
|
+
--btn-pad-x:16px;
|
|
296
|
+
--btn-font-size:.875rem;
|
|
297
|
+
--btn-font-weight:500;
|
|
298
|
+
--btn-primary-bg:var(--fill);
|
|
299
|
+
--btn-primary-fg:var(--on-fill);
|
|
300
|
+
/* a darker edge so a light fill still shows a boundary on a light panel (lime on white is 1.31:1) */
|
|
301
|
+
--btn-primary-border:color-mix(in srgb,var(--on-fill) 14%,var(--fill));
|
|
302
|
+
--btn-primary-bg-hover:color-mix(in srgb,var(--fill) 90%,var(--on-fill));
|
|
303
|
+
--btn-secondary-bg:var(--p);
|
|
304
|
+
--btn-secondary-fg:var(--i);
|
|
305
|
+
--btn-secondary-border:var(--input-border);
|
|
306
|
+
--btn-secondary-bg-hover:var(--mid);
|
|
307
|
+
--btn-shadow:var(--shadow-xs);
|
|
308
|
+
--btn-hover-lift:0px;
|
|
309
|
+
--btn-press-scale:.98;
|
|
310
|
+
--btn-dur:150ms;
|
|
311
|
+
--btn-ease:ease;
|
|
312
|
+
|
|
313
|
+
/* input, textarea, select: h-9, px-3, shadow-xs, a 3px ring at half strength on focus */
|
|
314
|
+
--input-h:36px;
|
|
315
|
+
--input-pad-x:12px;
|
|
316
|
+
--input-radius:var(--r-md,8px);
|
|
317
|
+
--input-bg:var(--field);
|
|
318
|
+
--input-border-hover:var(--i2);
|
|
319
|
+
--input-shadow:var(--shadow-xs);
|
|
320
|
+
--input-ring:color-mix(in srgb,var(--focus-color) 50%,transparent);
|
|
321
|
+
--input-ring-width:3px;
|
|
322
|
+
--input-dur:150ms;
|
|
323
|
+
|
|
324
|
+
/* switch: 32 x 18 */
|
|
325
|
+
--switch-w:32px;
|
|
326
|
+
--switch-h:18px;
|
|
327
|
+
--switch-pad:1px;
|
|
328
|
+
--switch-off-bg:var(--field);
|
|
329
|
+
--switch-on-bg:var(--fill);
|
|
330
|
+
--switch-thumb-off:var(--i3);
|
|
331
|
+
--switch-thumb-on:var(--on-fill);
|
|
332
|
+
--switch-thumb-shadow:none;
|
|
333
|
+
--switch-dur:150ms;
|
|
334
|
+
--switch-ease:ease;
|
|
335
|
+
|
|
336
|
+
/* tabs */
|
|
337
|
+
--tabs-gap:2px;
|
|
338
|
+
--tabs-indicator:var(--pos);
|
|
339
|
+
--tabs-indicator-h:2px;
|
|
340
|
+
--tabs-pill-bg:var(--mid);
|
|
341
|
+
--tabs-dur:200ms;
|
|
342
|
+
--tabs-ease:ease-out;
|
|
343
|
+
|
|
344
|
+
/* dialog: max-w-lg, rounded-lg, shadow-lg, bg-black/50, zoom 95, 200ms */
|
|
345
|
+
--dialog-w:512px;
|
|
346
|
+
--dialog-radius:var(--r-lg,10px);
|
|
347
|
+
--dialog-backdrop:rgba(0,0,0,.5);
|
|
348
|
+
--dialog-blur:0px;
|
|
349
|
+
--dialog-enter-scale:.95;
|
|
350
|
+
--dialog-shadow:var(--shadow-lg);
|
|
351
|
+
--dialog-dur:200ms;
|
|
352
|
+
--dialog-ease:ease-out;
|
|
353
|
+
|
|
354
|
+
/* badge */
|
|
355
|
+
--badge-h:22px;
|
|
356
|
+
--badge-pad-x:8px;
|
|
357
|
+
--badge-radius:var(--r-sm,6px);
|
|
358
|
+
--badge-font-size:.75rem;
|
|
359
|
+
--badge-font-weight:500;
|
|
360
|
+
--badge-tint:14%;
|
|
361
|
+
--badge-neutral-bg:var(--mid);
|
|
362
|
+
--badge-ink:75%;
|
|
363
|
+
|
|
364
|
+
/* tag */
|
|
365
|
+
--tag-h:26px;
|
|
366
|
+
--tag-pad-x:8px;
|
|
367
|
+
--tag-radius:var(--r-sm,6px);
|
|
368
|
+
--tag-bg:var(--p);
|
|
369
|
+
--tag-fg:var(--i);
|
|
370
|
+
--tag-border:var(--input-border);
|
|
371
|
+
|
|
372
|
+
/* avatar */
|
|
373
|
+
--avatar-size-base:32px;
|
|
374
|
+
--avatar-size:var(--avatar-size-base);
|
|
375
|
+
--avatar-radius:999px;
|
|
376
|
+
--avatar-bg:var(--mid);
|
|
377
|
+
--avatar-fg:var(--i);
|
|
378
|
+
--avatar-ring:var(--p);
|
|
379
|
+
|
|
380
|
+
/* tooltip: inverted, dark on light and light on dark */
|
|
381
|
+
--tooltip-bg:var(--i);
|
|
382
|
+
--tooltip-fg:var(--s);
|
|
383
|
+
--tooltip-radius:6px;
|
|
384
|
+
--tooltip-font-size:.75rem;
|
|
385
|
+
--tooltip-delay:200ms;
|
|
386
|
+
--tooltip-dur:150ms;
|
|
387
|
+
|
|
388
|
+
/* progress: the fill is the primary color, not the button fill (lime on a pale track is about 1.1:1) */
|
|
389
|
+
--progress-h:8px;
|
|
390
|
+
--progress-radius:999px;
|
|
391
|
+
--progress-track:var(--mid);
|
|
392
|
+
--progress-fill:var(--pos);
|
|
393
|
+
--progress-dur:300ms;
|
|
394
|
+
--progress-ease:ease-out;
|
|
395
|
+
|
|
396
|
+
/* spinner */
|
|
397
|
+
--spinner-size:20px;
|
|
398
|
+
--spinner-width:2px;
|
|
399
|
+
--spinner-color:var(--pos);
|
|
400
|
+
--spinner-track:var(--mid);
|
|
401
|
+
--spinner-dur:800ms;
|
|
402
|
+
|
|
403
|
+
/* skeleton */
|
|
404
|
+
--skeleton-bg:var(--mid);
|
|
405
|
+
--skeleton-shine:color-mix(in srgb,var(--i) 8%,var(--mid));
|
|
406
|
+
--skeleton-radius:var(--r-sm,6px);
|
|
407
|
+
--skeleton-dur:1.6s;
|
|
408
|
+
|
|
409
|
+
/* alert */
|
|
410
|
+
--alert-pad:14px 16px;
|
|
411
|
+
--alert-radius:var(--r-lg,10px);
|
|
412
|
+
--alert-tint:6%;
|
|
413
|
+
--alert-edge:30%;
|
|
414
|
+
|
|
415
|
+
/* application navigation (sidebar) */
|
|
416
|
+
/* app sidebar with a flyout (ui-sidebar) */
|
|
417
|
+
--sidebar-w:240px;
|
|
418
|
+
--sidebar-rail-w:52px;
|
|
419
|
+
--sidebar-item-h:34px;
|
|
420
|
+
--sidebar-radius:var(--r-sm,8px);
|
|
421
|
+
--sidebar-bg:var(--p);
|
|
422
|
+
--sidebar-border:var(--l);
|
|
423
|
+
--sidebar-fg:var(--i2);
|
|
424
|
+
--sidebar-head-fg:var(--i3);
|
|
425
|
+
--sidebar-hover-bg:var(--mid);
|
|
426
|
+
--sidebar-hover-fg:var(--i);
|
|
427
|
+
--sidebar-current-bg:var(--fill);
|
|
428
|
+
--sidebar-current-fg:var(--on-fill);
|
|
429
|
+
--sidebar-scrim:rgba(0,0,0,.4);
|
|
430
|
+
--sidebar-dur:var(--dur-base,200ms);
|
|
431
|
+
--sidebar-ease:var(--ease-standard,ease);
|
|
432
|
+
--sidenav-w:256px;
|
|
433
|
+
--sidenav-bg:var(--p);
|
|
434
|
+
--sidenav-fg:var(--i2);
|
|
435
|
+
--sidenav-active-bg:var(--mid);
|
|
436
|
+
--sidenav-active-fg:var(--i);
|
|
437
|
+
--sidenav-radius:var(--r-sm,6px);
|
|
438
|
+
|
|
439
|
+
/* metric */
|
|
440
|
+
--metric-value-size:2rem;
|
|
441
|
+
--metric-value-weight:700;
|
|
442
|
+
|
|
443
|
+
/* chart: the line is the primary color, which holds 3:1 on panels in every theme */
|
|
444
|
+
--chart-h:180px;
|
|
445
|
+
--chart-line:var(--pos);
|
|
446
|
+
--chart-stroke:2px;
|
|
447
|
+
--chart-area-opacity:.12;
|
|
448
|
+
--chart-grid:var(--l);
|
|
449
|
+
|
|
450
|
+
/* table */
|
|
451
|
+
--table-radius:var(--r-md,8px);
|
|
452
|
+
--table-head-bg:var(--p);
|
|
453
|
+
--table-head-fg:var(--i2);
|
|
454
|
+
--table-row-hover:var(--mid);
|
|
455
|
+
|
|
456
|
+
/* checkbox and radio: size-4, rounded-[4px]; the checked box takes the primary fill */
|
|
457
|
+
--check-size:16px;
|
|
458
|
+
--check-radius:4px;
|
|
459
|
+
--check-on-bg:var(--fill);
|
|
460
|
+
--check-on-fg:var(--on-fill);
|
|
461
|
+
/* the checked box's edge: the fill moved toward body ink, so the box stays outlined on a panel in light and dark
|
|
462
|
+
themes alike (a lime fill alone is about 1.3:1 on white) */
|
|
463
|
+
--check-on-border:color-mix(in srgb,var(--i) 40%,var(--fill));
|
|
464
|
+
--radio-dot:6px;
|
|
465
|
+
--check-dur:120ms;
|
|
466
|
+
--check-ease:ease-out;
|
|
467
|
+
|
|
468
|
+
/* button group */
|
|
469
|
+
--btngroup-border:var(--input-border);
|
|
470
|
+
--btngroup-fg:var(--i2);
|
|
471
|
+
--btngroup-active-bg:var(--mid);
|
|
472
|
+
--btngroup-active-fg:var(--i);
|
|
473
|
+
|
|
474
|
+
/* dropdown menu: rounded-md, p-1, shadow-md; items px-2 py-1.5, rounded-sm */
|
|
475
|
+
--menu-w:200px;
|
|
476
|
+
--menu-radius:var(--r-md,8px);
|
|
477
|
+
--menu-pad:4px;
|
|
478
|
+
--menu-item-pad:6px 8px;
|
|
479
|
+
--menu-item-radius:4px;
|
|
480
|
+
--menu-item-hover:var(--mid);
|
|
481
|
+
/* a destructive item: the critical color moved a little toward body ink, so it reads at 4.5:1 when highlighted */
|
|
482
|
+
--menu-danger-fg:color-mix(in srgb,var(--neg) 85%,var(--i));
|
|
483
|
+
--menu-shadow:var(--shadow-md);
|
|
484
|
+
--menu-dur:120ms;
|
|
485
|
+
|
|
486
|
+
/* slider: the filled part is the primary color, which holds 3:1 on the track */
|
|
487
|
+
--slider-h:6px;
|
|
488
|
+
--slider-thumb:16px;
|
|
489
|
+
--slider-track:var(--mid);
|
|
490
|
+
--slider-fill:var(--pos);
|
|
491
|
+
--slider-thumb-bg:var(--p);
|
|
492
|
+
--slider-thumb-border:1px;
|
|
493
|
+
--slider-thumb-shadow:var(--shadow-sm);
|
|
494
|
+
|
|
495
|
+
/* text editor */
|
|
496
|
+
--editor-min-h:140px;
|
|
497
|
+
--editor-toolbar-bg:var(--p);
|
|
498
|
+
--editor-tool-on:var(--mid);
|
|
499
|
+
|
|
500
|
+
/* video player: the controls sit on the picture, so they are light on a dark scrim in every theme */
|
|
501
|
+
--video-radius:var(--r-lg,10px);
|
|
502
|
+
--video-bg:black;
|
|
503
|
+
--video-fg:white;
|
|
504
|
+
--video-scrim:rgba(0,0,0,.65);
|
|
505
|
+
|
|
506
|
+
/* empty state, inline call to action, page header, pagination */
|
|
507
|
+
--empty-pad:32px 16px;
|
|
508
|
+
--empty-icon-bg:var(--mid);
|
|
509
|
+
--cta-bg:color-mix(in srgb,var(--pos) 6%,var(--p));
|
|
510
|
+
--cta-border:var(--l);
|
|
511
|
+
--pagehead-title-size:var(--ts-h2-size);
|
|
512
|
+
--pagination-current-bg:var(--mid);
|
|
513
|
+
|
|
514
|
+
/* progress steps: done steps take the button fill, the current one rings in the primary color */
|
|
515
|
+
--steps-marker:26px;
|
|
516
|
+
--steps-done-bg:var(--fill);
|
|
517
|
+
--steps-done-fg:var(--on-fill);
|
|
518
|
+
--steps-current:var(--pos);
|
|
519
|
+
|
|
520
|
+
/* calendar and date picker */
|
|
521
|
+
--cal-cell:36px;
|
|
522
|
+
--cal-radius:var(--r-sm,6px);
|
|
523
|
+
--cal-selected-bg:var(--fill);
|
|
524
|
+
--cal-selected-fg:var(--on-fill);
|
|
525
|
+
--cal-today:var(--pos);
|
|
526
|
+
|
|
527
|
+
/* code snippet: a quiet panel; comments in secondary text */
|
|
528
|
+
--code-bg:color-mix(in srgb,var(--mid) 60%,var(--p));
|
|
529
|
+
--code-fg:var(--i);
|
|
530
|
+
|
|
531
|
+
/* command menu, file drop zone, filter chips, tree */
|
|
532
|
+
--command-w:520px;
|
|
533
|
+
--dropzone-border:var(--input-border);
|
|
534
|
+
--dropzone-active:var(--pos);
|
|
535
|
+
--chip-on-bg:var(--fill);
|
|
536
|
+
--chip-on-fg:var(--on-fill);
|
|
537
|
+
--tree-selected-bg:var(--mid);
|
|
538
|
+
|
|
539
|
+
/* messaging: your messages take the button fill */
|
|
540
|
+
--chat-h:420px;
|
|
541
|
+
--chat-radius:14px;
|
|
542
|
+
--chat-in-bg:var(--mid);
|
|
543
|
+
--chat-in-fg:var(--i);
|
|
544
|
+
--chat-out-bg:var(--fill);
|
|
545
|
+
--chat-out-fg:var(--on-fill);
|
|
546
|
+
|
|
547
|
+
/* slide-out panel: opens like the dialog, with its motion and backdrop */
|
|
548
|
+
--sheet-w:400px;
|
|
549
|
+
|
|
550
|
+
/* marketing sections: the band's padding and width, heading sizes */
|
|
551
|
+
--section-pad-y:64px;
|
|
552
|
+
--section-max:1120px;
|
|
553
|
+
--section-title-size:var(--ts-h1-size);
|
|
554
|
+
--hero-title-size:var(--ts-display-size);
|
|
555
|
+
/* an eyebrow over a title: the primary color moved toward body ink, so small caps hold 4.5:1 */
|
|
556
|
+
--eyebrow-fg:color-mix(in srgb,var(--pos) 70%,var(--i));
|
|
557
|
+
--mk-card-bg:var(--p);
|
|
558
|
+
--sitenav-bg:var(--p);
|
|
559
|
+
--stat-rule:var(--pos);
|
|
560
|
+
--quote-mark:var(--pos);
|
|
561
|
+
/* pricing: the featured plan's edge in the primary color, which holds 3:1 on a panel */
|
|
562
|
+
--plan-featured:var(--pos);
|
|
563
|
+
--plan-check:var(--pos);
|
|
564
|
+
/* call-to-action band and footer: inverted, dark on light and light on dark */
|
|
565
|
+
--ctaband-bg:var(--i);
|
|
566
|
+
--ctaband-fg:var(--s);
|
|
567
|
+
--footer-bg:var(--i);
|
|
568
|
+
--footer-fg:var(--s);
|
|
569
|
+
--footer-muted:color-mix(in srgb,var(--s) 72%,var(--i));
|
|
570
|
+
|
|
571
|
+
/* banners, device frames, design annotations */
|
|
572
|
+
--banner-bg:var(--i);
|
|
573
|
+
--banner-fg:var(--s);
|
|
574
|
+
--device-body:color-mix(in srgb,var(--i) 88%,var(--s));
|
|
575
|
+
--annot-bg:var(--pos);
|
|
576
|
+
--annot-fg:var(--s);
|
|
577
|
+
|
|
578
|
+
/* motion: the shared timing every animation reads (motion.js, the playground, and the exported GSAP and Motion code).
|
|
579
|
+
Colin's Motion setting decides how much of it plays: Full all of it, Calm short fades only, Still none */
|
|
580
|
+
--dur-fast:150ms;
|
|
581
|
+
--dur-base:250ms;
|
|
582
|
+
--dur-slow:500ms;
|
|
583
|
+
--ease-standard:cubic-bezier(.2,0,0,1);
|
|
584
|
+
--ease-enter:cubic-bezier(.16,1,.3,1);
|
|
585
|
+
--ease-exit:cubic-bezier(.4,0,1,1);
|
|
586
|
+
--motion-distance:16px;
|
|
587
|
+
--motion-stagger:60ms;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
/* ── type styles: the kit's, unchanged (.ui-t-<style> in components.css applies one to any element) ── */
|
|
592
|
+
/* ── components ── */
|
|
593
|
+
/* The hidden attribute always wins. A component's own display (flex, grid ...) would otherwise override
|
|
594
|
+
the browser's [hidden], and a "hidden" badge or alert would still show. */
|
|
595
|
+
[class^="ui-"][hidden],[class*=" ui-"][hidden]{display:none!important}
|
|
596
|
+
|
|
597
|
+
/* ── ui-btn ── */
|
|
598
|
+
.ui-btn{
|
|
599
|
+
--_bg:var(--btn-secondary-bg);--_fg:var(--btn-secondary-fg);--_bd:var(--btn-secondary-border);--_bg-h:var(--btn-secondary-bg-hover);
|
|
600
|
+
display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--btn-h);padding:0 var(--btn-pad-x);
|
|
601
|
+
font:inherit;font-size:var(--btn-font-size);font-weight:var(--btn-font-weight);line-height:1;white-space:nowrap;text-decoration:none;
|
|
602
|
+
color:var(--_fg);background:var(--_bg);border:1px solid var(--_bd);border-radius:var(--btn-radius);box-shadow:var(--btn-shadow);cursor:pointer;
|
|
603
|
+
transition:background-color var(--btn-dur) var(--btn-ease),border-color var(--btn-dur) var(--btn-ease),color var(--btn-dur) var(--btn-ease),transform var(--btn-dur) var(--btn-ease),box-shadow var(--btn-dur) var(--btn-ease);
|
|
604
|
+
}
|
|
605
|
+
.ui-btn:hover,.ui-btn.is-hover{background:var(--_bg-h);transform:translateY(calc(-1 * var(--btn-hover-lift)))}
|
|
606
|
+
.ui-btn:active,.ui-btn.is-active{transform:scale(var(--btn-press-scale))}
|
|
607
|
+
.ui-btn:focus-visible,.ui-btn.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}
|
|
608
|
+
.ui-btn:disabled,.ui-btn[aria-disabled="true"],.ui-btn.is-disabled{opacity:var(--disabled-opacity);cursor:not-allowed;transform:none;pointer-events:none}
|
|
609
|
+
.ui-btn svg{width:16px;height:16px;flex:none}
|
|
610
|
+
.ui-btn--primary{--_bg:var(--btn-primary-bg);--_fg:var(--btn-primary-fg);--_bd:var(--btn-primary-border);--_bg-h:var(--btn-primary-bg-hover)}
|
|
611
|
+
.ui-btn--ghost{--_bg:transparent;--_bd:transparent;--_fg:var(--i2);--_bg-h:var(--mid);box-shadow:none}
|
|
612
|
+
.ui-btn--ghost:hover,.ui-btn--ghost.is-hover{color:var(--i)}
|
|
613
|
+
/* text on a --neg fill uses the ground color: the same pair the contrast checker already holds at 4.5:1 */
|
|
614
|
+
.ui-btn--destructive{--_bg:var(--neg);--_fg:var(--s);--_bd:var(--neg);--_bg-h:color-mix(in srgb,var(--neg) 88%,var(--s))}
|
|
615
|
+
.ui-btn--link{--_bg:transparent;--_bd:transparent;--_fg:var(--pos);--_bg-h:transparent;height:auto;padding:0;box-shadow:none;text-decoration:underline;text-underline-offset:3px}
|
|
616
|
+
.ui-btn--sm{height:calc(var(--btn-h) - 6px);padding:0 calc(var(--btn-pad-x) - 4px);font-size:.82rem}
|
|
617
|
+
.ui-btn--lg{height:calc(var(--btn-h) + 8px);padding:0 calc(var(--btn-pad-x) + 6px);font-size:1rem}
|
|
618
|
+
.ui-btn--icon{width:var(--btn-h);padding:0}
|
|
619
|
+
.ui-btn[aria-busy="true"]{pointer-events:none}
|
|
620
|
+
.ui-btn[aria-busy="true"]::before{content:"";width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:ui-spin .7s linear infinite}
|
|
621
|
+
@keyframes ui-spin{to{transform:rotate(360deg)}}
|
|
622
|
+
/* ── end ui-btn ── */
|
|
623
|
+
|
|
624
|
+
/* ── ui-input ── */
|
|
625
|
+
.ui-field{display:grid;gap:6px;min-width:0}
|
|
626
|
+
.ui-label{font-size:var(--ts-label-size);color:var(--i);font-weight:var(--ts-label-weight);line-height:var(--ts-label-lh);letter-spacing:var(--ts-label-ls);text-transform:var(--ts-label-case);font-family:var(--ts-label-font)}
|
|
627
|
+
.ui-hint{font-size:var(--ts-caption-size);color:var(--i3);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
628
|
+
.ui-error{font-size:var(--ts-caption-size);color:var(--neg);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
629
|
+
.ui-input{width:100%;box-shadow:var(--input-shadow);height:var(--input-h);padding:0 var(--input-pad-x);font-size:var(--ts-body-size);color:var(--i);background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--input-radius);transition:border-color var(--input-dur) ease,box-shadow var(--input-dur) ease;font-weight:var(--ts-body-weight);line-height:var(--ts-body-lh);letter-spacing:var(--ts-body-ls);text-transform:var(--ts-body-case);font-family:var(--ts-body-font)}
|
|
630
|
+
.ui-input::placeholder{color:var(--i3);opacity:1}
|
|
631
|
+
.ui-input:hover,.ui-input.is-hover{border-color:var(--input-border-hover)}
|
|
632
|
+
.ui-input:focus,.ui-input.is-focus{outline:none;border-color:var(--focus-color);box-shadow:var(--input-shadow),0 0 0 var(--input-ring-width) var(--input-ring)}
|
|
633
|
+
.ui-input[aria-invalid="true"]{border-color:var(--neg)}
|
|
634
|
+
.ui-input[aria-invalid="true"]:focus{box-shadow:var(--input-shadow),0 0 0 var(--input-ring-width) color-mix(in srgb,var(--neg) 28%,transparent)}
|
|
635
|
+
.ui-input:disabled,.ui-input.is-disabled{opacity:var(--disabled-opacity);cursor:not-allowed}
|
|
636
|
+
textarea.ui-input{height:auto;min-height:96px;padding:10px var(--input-pad-x);line-height:1.5;resize:vertical}
|
|
637
|
+
/* ── end ui-input ── */
|
|
638
|
+
|
|
639
|
+
/* ── ui-select ── */
|
|
640
|
+
.ui-select{position:relative;display:block;min-width:0}
|
|
641
|
+
.ui-select .ui-input{appearance:none;padding-right:38px;cursor:pointer}
|
|
642
|
+
.ui-select::after{content:"";position:absolute;right:15px;top:50%;width:7px;height:7px;border-right:1.5px solid var(--i3);border-bottom:1.5px solid var(--i3);transform:translateY(-70%) rotate(45deg);pointer-events:none;transition:border-color var(--input-dur) ease}
|
|
643
|
+
.ui-select:hover::after,.ui-select:focus-within::after{border-color:var(--i)}
|
|
644
|
+
.ui-select option{background:var(--p);color:var(--i)}
|
|
645
|
+
/* ── end ui-select ── */
|
|
646
|
+
|
|
647
|
+
/* ── ui-switch ── */
|
|
648
|
+
.ui-switch-row{display:inline-flex;align-items:center;gap:10px;cursor:pointer;color:var(--i)}
|
|
649
|
+
.ui-switch{
|
|
650
|
+
appearance:none;flex:none;position:relative;width:var(--switch-w);height:var(--switch-h);margin:0;cursor:pointer;
|
|
651
|
+
background:var(--switch-off-bg);border:1px solid var(--input-border);border-radius:999px;
|
|
652
|
+
transition:background-color var(--switch-dur) var(--switch-ease),border-color var(--switch-dur) var(--switch-ease);
|
|
653
|
+
}
|
|
654
|
+
.ui-switch::before{
|
|
655
|
+
content:"";position:absolute;top:50%;left:var(--switch-pad);height:calc(var(--switch-h) - 2 * var(--switch-pad) - 2px);aspect-ratio:1;
|
|
656
|
+
border-radius:999px;background:var(--switch-thumb-off);box-shadow:var(--switch-thumb-shadow);transform:translateY(-50%);
|
|
657
|
+
transition:transform var(--switch-dur) var(--switch-ease),background-color var(--switch-dur) ease,aspect-ratio var(--switch-dur) var(--switch-ease);
|
|
658
|
+
}
|
|
659
|
+
.ui-switch:checked{background:var(--switch-on-bg);border-color:var(--switch-on-bg)}
|
|
660
|
+
.ui-switch:checked::before{background:var(--switch-thumb-on);transform:translate(calc(var(--switch-w) - var(--switch-h)),-50%)}
|
|
661
|
+
.ui-switch:active::before,.ui-switch.is-active::before{aspect-ratio:1.25}
|
|
662
|
+
.ui-switch:checked:active::before,.ui-switch:checked.is-active::before{transform:translate(calc(var(--switch-w) - var(--switch-h) - .25 * (var(--switch-h) - 2 * var(--switch-pad) - 2px)),-50%)}
|
|
663
|
+
.ui-switch:hover,.ui-switch.is-hover{border-color:var(--input-border-hover)}
|
|
664
|
+
.ui-switch:checked:hover,.ui-switch:checked.is-hover{border-color:var(--switch-on-bg)}
|
|
665
|
+
.ui-switch:focus-visible,.ui-switch.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}
|
|
666
|
+
.ui-switch:disabled,.ui-switch.is-disabled{opacity:var(--disabled-opacity);cursor:not-allowed}
|
|
667
|
+
/* ── end ui-switch ── */
|
|
668
|
+
|
|
669
|
+
/* ── ui-tabs ── */
|
|
670
|
+
.ui-tabs{display:grid;gap:14px;min-width:0}
|
|
671
|
+
.ui-tablist{position:relative;display:flex;gap:var(--tabs-gap);border-bottom:1px solid var(--l);overflow-x:auto;scrollbar-width:none}
|
|
672
|
+
.ui-tab{position:relative;z-index:1;font-size:var(--ts-small-size);font-weight:600;padding:10px 12px;border:0;background:transparent;color:var(--i3);cursor:pointer;white-space:nowrap;border-radius:var(--r-sm,8px) var(--r-sm,8px) 0 0;transition:color var(--tabs-dur) var(--tabs-ease);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
673
|
+
.ui-tab:hover,.ui-tab.is-hover{color:var(--i)}
|
|
674
|
+
.ui-tab[aria-selected="true"]{color:var(--i)}
|
|
675
|
+
.ui-tab:focus-visible,.ui-tab.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:calc(-1 * var(--focus-width))}
|
|
676
|
+
.ui-tab:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}
|
|
677
|
+
/* the indicator slides: components.js sets --x and --w from the selected tab */
|
|
678
|
+
.ui-tab-indicator{position:absolute;left:0;bottom:-1px;height:var(--tabs-indicator-h);width:var(--w,0);transform:translateX(var(--x,0));background:var(--tabs-indicator);border-radius:2px;transition:transform var(--tabs-dur) var(--tabs-ease),width var(--tabs-dur) var(--tabs-ease)}
|
|
679
|
+
.ui-tabs--pill .ui-tablist{border:1px solid var(--l);border-radius:var(--r-md,10px);padding:4px;background:var(--field);width:max-content;max-width:100%}
|
|
680
|
+
.ui-tabs--pill .ui-tab{border-radius:var(--r-sm,8px);padding:7px 14px}
|
|
681
|
+
.ui-tabs--pill .ui-tab-indicator{top:4px;bottom:4px;height:auto;background:var(--tabs-pill-bg);border-radius:var(--r-sm,8px);box-shadow:var(--shadow-xs)}
|
|
682
|
+
.ui-tabpanel{min-width:0;color:var(--i2)}
|
|
683
|
+
.ui-tabpanel:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:4px;border-radius:4px}
|
|
684
|
+
/* ── end ui-tabs ── */
|
|
685
|
+
|
|
686
|
+
/* ── ui-dialog ── */
|
|
687
|
+
.ui-dialog{
|
|
688
|
+
width:min(var(--dialog-w),calc(100vw - 32px));max-height:calc(100dvh - 48px);padding:0;overflow:auto;
|
|
689
|
+
color:var(--i);background:var(--p);border:1px solid var(--l);border-radius:var(--dialog-radius);box-shadow:var(--dialog-shadow);
|
|
690
|
+
opacity:0;transform:translateY(8px) scale(var(--dialog-enter-scale));
|
|
691
|
+
transition:opacity var(--dialog-dur) var(--dialog-ease),transform var(--dialog-dur) var(--dialog-ease),overlay var(--dialog-dur) allow-discrete,display var(--dialog-dur) allow-discrete;
|
|
692
|
+
}
|
|
693
|
+
.ui-dialog[open]{opacity:1;transform:none}
|
|
694
|
+
@starting-style{.ui-dialog[open]{opacity:0;transform:translateY(8px) scale(var(--dialog-enter-scale))}}
|
|
695
|
+
.ui-dialog::backdrop{background:var(--dialog-backdrop);backdrop-filter:blur(var(--dialog-blur));opacity:0;transition:opacity var(--dialog-dur) ease,overlay var(--dialog-dur) allow-discrete,display var(--dialog-dur) allow-discrete}
|
|
696
|
+
.ui-dialog[open]::backdrop{opacity:1}
|
|
697
|
+
@starting-style{.ui-dialog[open]::backdrop{opacity:0}}
|
|
698
|
+
html:has(.ui-dialog[open]){overflow:hidden}
|
|
699
|
+
.ui-dialog-head{display:flex;align-items:flex-start;gap:12px;padding:20px 20px 0}
|
|
700
|
+
.ui-dialog-title{flex:1;margin:0;font-size:var(--ts-h3-size);color:var(--i);font-weight:var(--ts-h3-weight);line-height:var(--ts-h3-lh);letter-spacing:var(--ts-h3-ls);text-transform:var(--ts-h3-case);font-family:var(--ts-h3-font)}
|
|
701
|
+
.ui-dialog-desc{margin:6px 0 0;font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
702
|
+
.ui-dialog-body{padding:14px 20px;color:var(--i2)}
|
|
703
|
+
.ui-dialog-foot{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:0 20px 20px}
|
|
704
|
+
.ui-dialog-close{flex:none;display:grid;place-items:center;width:32px;height:32px;margin:-6px -8px 0 0;border:0;border-radius:var(--r-sm,8px);background:transparent;color:var(--i3);cursor:pointer;transition:background-color var(--btn-dur) ease,color var(--btn-dur) ease}
|
|
705
|
+
.ui-dialog-close:hover{background:var(--mid);color:var(--i)}
|
|
706
|
+
.ui-dialog-close:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}
|
|
707
|
+
/* ── end ui-dialog ── */
|
|
708
|
+
|
|
709
|
+
/* ── ui-badge ── */
|
|
710
|
+
/* tones tint the panel with their own color. Text is the tone moved toward body ink (--badge-ink), which
|
|
711
|
+
adds contrast in light and dark alike: on the tint alone, Colin's status colors fall under 4.5:1 in
|
|
712
|
+
13 themes. check-kit holds the text at 4.5:1. */
|
|
713
|
+
.ui-badge{--_tone:var(--i2);--_bg:var(--badge-neutral-bg);
|
|
714
|
+
display:inline-flex;align-items:center;gap:6px;height:var(--badge-h);padding:0 var(--badge-pad-x);font-size:var(--badge-font-size);font-weight:var(--badge-font-weight);line-height:1;white-space:nowrap;
|
|
715
|
+
color:color-mix(in srgb,var(--_tone) var(--badge-ink),var(--i));background:var(--_bg);border:1px solid color-mix(in srgb,var(--_tone) 30%,transparent);border-radius:var(--badge-radius)}
|
|
716
|
+
.ui-badge--ok{--_tone:var(--good);--_bg:color-mix(in srgb,var(--good) var(--badge-tint),var(--p))}
|
|
717
|
+
.ui-badge--warn{--_tone:var(--warn);--_bg:color-mix(in srgb,var(--warn) var(--badge-tint),var(--p))}
|
|
718
|
+
.ui-badge--critical{--_tone:var(--neg);--_bg:color-mix(in srgb,var(--neg) var(--badge-tint),var(--p))}
|
|
719
|
+
.ui-badge--brand{--_tone:var(--on-fill);--_bg:var(--fill);border-color:var(--fill);color:var(--on-fill)}
|
|
720
|
+
.ui-badge--outline{--_bg:transparent;border-color:var(--input-border)}
|
|
721
|
+
.ui-badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
|
|
722
|
+
/* ── end ui-badge ── */
|
|
723
|
+
|
|
724
|
+
/* ── ui-tag ── */
|
|
725
|
+
.ui-tags{display:flex;flex-wrap:wrap;gap:6px}
|
|
726
|
+
.ui-tag{display:inline-flex;align-items:center;gap:4px;height:var(--tag-h);padding:0 4px 0 var(--tag-pad-x);font-size:var(--ts-caption-size);font-weight:500;color:var(--tag-fg);background:var(--tag-bg);border:1px solid var(--tag-border);border-radius:var(--tag-radius);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
727
|
+
.ui-tag:not(:has(.ui-tag-remove)){padding-right:var(--tag-pad-x)}
|
|
728
|
+
.ui-tag-remove{display:grid;place-items:center;width:18px;height:18px;padding:0;border:0;border-radius:4px;background:transparent;color:var(--i3);cursor:pointer;transition:background-color var(--btn-dur) ease,color var(--btn-dur) ease}
|
|
729
|
+
.ui-tag-remove:hover,.ui-tag-remove.is-hover{background:var(--mid);color:var(--i)}
|
|
730
|
+
.ui-tag-remove:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:1px}
|
|
731
|
+
.ui-tag-remove svg{width:12px;height:12px}
|
|
732
|
+
/* ── end ui-tag ── */
|
|
733
|
+
|
|
734
|
+
/* ── ui-avatar ── */
|
|
735
|
+
.ui-avatar{position:relative;display:inline-grid;place-items:center;flex:none;width:var(--avatar-size);height:var(--avatar-size);border-radius:var(--avatar-radius);background:var(--avatar-bg);color:var(--avatar-fg);font-size:calc(var(--avatar-size) * .38);font-weight:600;line-height:1;user-select:none}
|
|
736
|
+
.ui-avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
|
|
737
|
+
.ui-avatar--sm{--avatar-size:calc(var(--avatar-size-base) * .75)}
|
|
738
|
+
.ui-avatar--lg{--avatar-size:calc(var(--avatar-size-base) * 1.25)}
|
|
739
|
+
.ui-avatar-status{position:absolute;right:0;bottom:0;width:30%;height:30%;min-width:8px;min-height:8px;border-radius:50%;background:var(--good);box-shadow:0 0 0 2px var(--avatar-ring)}
|
|
740
|
+
.ui-avatar-group{display:inline-flex}
|
|
741
|
+
.ui-avatar-group .ui-avatar{box-shadow:0 0 0 2px var(--avatar-ring)}
|
|
742
|
+
.ui-avatar-group .ui-avatar + .ui-avatar{margin-left:calc(var(--avatar-size) * -.2)}
|
|
743
|
+
/* ── end ui-avatar ── */
|
|
744
|
+
|
|
745
|
+
/* ── ui-tooltip ── */
|
|
746
|
+
/* shows on hover and on keyboard focus; Escape hides it (WCAG 1.4.13), components.js */
|
|
747
|
+
.ui-tooltip-wrap{position:relative;display:inline-flex}
|
|
748
|
+
.ui-tooltip{position:absolute;z-index:70;left:50%;bottom:calc(100% + 8px);width:max-content;max-width:240px;padding:6px 10px;font-size:var(--tooltip-font-size);font-weight:500;line-height:1.4;color:var(--tooltip-fg);background:var(--tooltip-bg);border-radius:var(--tooltip-radius);box-shadow:var(--shadow-md);pointer-events:none;
|
|
749
|
+
opacity:0;transform:translate(-50%,4px);transition:opacity var(--tooltip-dur) ease,transform var(--tooltip-dur) ease;transition-delay:0s}
|
|
750
|
+
.ui-tooltip-wrap[data-side="bottom"] .ui-tooltip{bottom:auto;top:calc(100% + 8px);transform:translate(-50%,-4px)}
|
|
751
|
+
.ui-tooltip-wrap:hover:not(.is-dismissed) .ui-tooltip,.ui-tooltip-wrap:focus-within:not(.is-dismissed) .ui-tooltip,.ui-tooltip-wrap.is-hover .ui-tooltip{opacity:1;transform:translate(-50%,0);transition-delay:var(--tooltip-delay)}
|
|
752
|
+
/* ── end ui-tooltip ── */
|
|
753
|
+
|
|
754
|
+
/* ── ui-progress ── */
|
|
755
|
+
.ui-progress{position:relative;width:100%;height:var(--progress-h);overflow:hidden;background:var(--progress-track);border-radius:var(--progress-radius)}
|
|
756
|
+
.ui-progress-bar{height:100%;width:var(--value,0%);background:var(--progress-fill);border-radius:inherit;transition:width var(--progress-dur) var(--progress-ease)}
|
|
757
|
+
.ui-progress--indeterminate .ui-progress-bar{width:40%;animation:ui-progress-slide 1.4s ease-in-out infinite}
|
|
758
|
+
@keyframes ui-progress-slide{0%{transform:translateX(-100%)}100%{transform:translateX(250%)}}
|
|
759
|
+
.ui-progress-label{display:flex;justify-content:space-between;font-size:var(--ts-caption-size);color:var(--i2);margin-bottom:6px;font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
760
|
+
/* ── end ui-progress ── */
|
|
761
|
+
|
|
762
|
+
/* ── ui-spinner ── */
|
|
763
|
+
.ui-spinner{display:inline-block;flex:none;width:var(--spinner-size);height:var(--spinner-size);border-radius:50%;border:var(--spinner-width) solid var(--spinner-track);border-top-color:var(--spinner-color);animation:ui-spin var(--spinner-dur) linear infinite}
|
|
764
|
+
.ui-spinner--sm{width:calc(var(--spinner-size) * .7);height:calc(var(--spinner-size) * .7)}
|
|
765
|
+
.ui-spinner--lg{width:calc(var(--spinner-size) * 1.6);height:calc(var(--spinner-size) * 1.6)}
|
|
766
|
+
/* text for screen readers only */
|
|
767
|
+
.ui-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
|
|
768
|
+
/* ── end ui-spinner ── */
|
|
769
|
+
|
|
770
|
+
/* ── ui-skeleton ── */
|
|
771
|
+
/* a placeholder while content loads; add .ambient so Colin's Calm motion level stops the shimmer */
|
|
772
|
+
.ui-skeleton{display:block;height:1em;border-radius:var(--skeleton-radius);background:linear-gradient(90deg,var(--skeleton-bg) 0%,var(--skeleton-shine) 50%,var(--skeleton-bg) 100%);background-size:200% 100%;animation:ui-shimmer var(--skeleton-dur) ease-in-out infinite}
|
|
773
|
+
.ui-skeleton--circle{border-radius:50%}
|
|
774
|
+
@keyframes ui-shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
|
|
775
|
+
/* ── end ui-skeleton ── */
|
|
776
|
+
|
|
777
|
+
/* ── ui-alert ── */
|
|
778
|
+
.ui-alert{--_tone:var(--pos);
|
|
779
|
+
display:grid;grid-template-columns:auto 1fr auto;gap:4px 12px;align-items:start;padding:var(--alert-pad);color:var(--i);
|
|
780
|
+
background:color-mix(in srgb,var(--_tone) var(--alert-tint),var(--p));border:1px solid color-mix(in srgb,var(--_tone) var(--alert-edge),var(--p));border-radius:var(--alert-radius)}
|
|
781
|
+
.ui-alert--ok{--_tone:var(--good)}
|
|
782
|
+
.ui-alert--warn{--_tone:var(--warn)}
|
|
783
|
+
.ui-alert--critical{--_tone:var(--neg)}
|
|
784
|
+
.ui-alert-icon{grid-row:span 2;width:20px;height:20px;color:var(--_tone);margin-top:1px}
|
|
785
|
+
.ui-alert-title{margin:0;font-size:var(--ts-small-size);font-weight:700;color:var(--i);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
786
|
+
.ui-alert-body{grid-column:2;margin:0;font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
787
|
+
.ui-alert-close{grid-row:1;grid-column:3;display:grid;place-items:center;width:28px;height:28px;margin:-4px -6px 0 0;border:0;border-radius:var(--r-sm,8px);background:transparent;color:var(--i3);cursor:pointer}
|
|
788
|
+
.ui-alert-close:hover{background:color-mix(in srgb,var(--_tone) 14%,transparent);color:var(--i)}
|
|
789
|
+
.ui-alert-close:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:1px}
|
|
790
|
+
/* an alert written without an icon uses the full width */
|
|
791
|
+
.ui-alert:not(:has(.ui-alert-icon)){grid-template-columns:1fr auto}
|
|
792
|
+
.ui-alert:not(:has(.ui-alert-icon)) .ui-alert-body{grid-column:1}
|
|
793
|
+
.ui-alert:not(:has(.ui-alert-icon)) .ui-alert-close{grid-column:2}
|
|
794
|
+
/* ── end ui-alert ── */
|
|
795
|
+
|
|
796
|
+
/* ── ui-sidenav ── */
|
|
797
|
+
.ui-sidenav{display:flex;flex-direction:column;gap:6px;width:var(--sidenav-w);min-height:100%;padding:16px 12px;background:var(--sidenav-bg);border-right:1px solid var(--l)}
|
|
798
|
+
.ui-sidenav-brand{display:flex;align-items:center;gap:10px;padding:4px 8px 10px;font-weight:700;color:var(--i)}
|
|
799
|
+
.ui-sidenav-list{display:grid;gap:2px;margin:0;padding:0;list-style:none}
|
|
800
|
+
.ui-sidenav-link{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--sidenav-radius);font-size:var(--ts-small-size);font-weight:600;color:var(--sidenav-fg);text-decoration:none;transition:background-color var(--btn-dur) ease,color var(--btn-dur) ease;line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
801
|
+
.ui-sidenav-link svg{width:18px;height:18px;flex:none;color:var(--i3)}
|
|
802
|
+
.ui-sidenav-link:hover,.ui-sidenav-link.is-hover{background:var(--mid);color:var(--i)}
|
|
803
|
+
.ui-sidenav-link[aria-current="page"]{background:var(--sidenav-active-bg);color:var(--sidenav-active-fg)}
|
|
804
|
+
.ui-sidenav-link[aria-current="page"] svg{color:var(--sidenav-active-fg)}
|
|
805
|
+
.ui-sidenav-link:focus-visible,.ui-sidenav-link.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:-2px}
|
|
806
|
+
.ui-sidenav-link .ui-badge{margin-left:auto}
|
|
807
|
+
.ui-sidenav-spacer{flex:1}
|
|
808
|
+
.ui-sidenav-user{display:flex;align-items:center;gap:10px;margin-top:6px;padding:10px;border:1px solid var(--l);border-radius:var(--sidenav-radius);min-width:0}
|
|
809
|
+
.ui-sidenav-user span:last-child{display:grid;min-width:0;font-size:var(--ts-caption-size);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
810
|
+
.ui-sidenav-user strong{color:var(--i);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
811
|
+
.ui-sidenav-user small{color:var(--i3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
812
|
+
/* ── end ui-sidenav ── */
|
|
813
|
+
|
|
814
|
+
/* ── ui-sidebar: the app sidebar with a flyout, after the BKSTG workbench's own. Wide: it collapses to an
|
|
815
|
+
icon rail (the toggle at the top). Narrow (the app shell .ui-app under 720px): it slides over the page as
|
|
816
|
+
a drawer, opened from the bar's menu button; Escape or a tap outside closes it. Sections have a tiny
|
|
817
|
+
heading; a group opens in place (in the rail, opening a group widens the sidebar first). The current page
|
|
818
|
+
uses the button fill, so it reads as the primary color in every theme. Behavior: components.js. ── */
|
|
819
|
+
.ui-app{container-type:inline-size;position:relative;display:flex;min-height:100%;background:var(--s)}
|
|
820
|
+
.ui-app-main{display:flex;flex-direction:column;flex:1;min-width:0}
|
|
821
|
+
.ui-app-bar{display:none;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--sidebar-border);background:var(--sidebar-bg)}
|
|
822
|
+
.ui-sidebar{display:flex;flex-direction:column;gap:2px;flex:none;width:var(--sidebar-w);padding:8px;overflow:hidden auto;background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);transition:width var(--sidebar-dur) var(--sidebar-ease)}
|
|
823
|
+
.ui-sidebar[data-state="collapsed"]{width:var(--sidebar-rail-w)}
|
|
824
|
+
.ui-sidebar-top{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:var(--sidebar-item-h);padding-bottom:8px;margin-bottom:4px;border-bottom:1px solid var(--sidebar-border)}
|
|
825
|
+
.ui-sidebar-brand{display:flex;align-items:center;gap:8px;min-width:0;padding-left:6px;font-weight:700;color:var(--i);white-space:nowrap;overflow:hidden}
|
|
826
|
+
.ui-sidebar-toggle,.ui-sidebar-open{display:grid;place-items:center;flex:none;width:var(--sidebar-item-h);height:var(--sidebar-item-h);padding:0;border:0;border-radius:var(--sidebar-radius);background:transparent;color:var(--sidebar-fg);cursor:pointer}
|
|
827
|
+
.ui-sidebar-toggle svg,.ui-sidebar-open svg{width:18px;height:18px}
|
|
828
|
+
.ui-sidebar-item{display:flex;align-items:center;gap:10px;width:100%;min-height:var(--sidebar-item-h);padding:0 9px;border:0;border-radius:var(--sidebar-radius);background:transparent;color:var(--sidebar-fg);font:inherit;font-size:var(--ts-small-size);font-weight:600;line-height:1.2;text-align:left;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color var(--sidebar-dur) var(--sidebar-ease),color var(--sidebar-dur) var(--sidebar-ease)}
|
|
829
|
+
.ui-sidebar-item svg{flex:none;width:18px;height:18px}
|
|
830
|
+
.ui-sidebar-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
|
|
831
|
+
.ui-sidebar-count{margin-left:auto;font-size:var(--ts-caption-size);font-weight:600}
|
|
832
|
+
.ui-sidebar-chev{display:grid;margin-left:auto;transition:transform var(--sidebar-dur) var(--sidebar-ease)}
|
|
833
|
+
.ui-sidebar-chev svg{width:14px;height:14px}
|
|
834
|
+
.ui-sidebar-item[aria-expanded="true"] .ui-sidebar-chev{transform:rotate(180deg)}
|
|
835
|
+
.ui-sidebar-item:hover,.ui-sidebar-item.is-hover,.ui-sidebar-toggle:hover,.ui-sidebar-open:hover{background:var(--sidebar-hover-bg);color:var(--sidebar-hover-fg)}
|
|
836
|
+
.ui-sidebar-item[aria-current="page"]{background:var(--sidebar-current-bg);color:var(--sidebar-current-fg)}
|
|
837
|
+
.ui-sidebar-item:focus-visible,.ui-sidebar-item.is-focus,.ui-sidebar-toggle:focus-visible,.ui-sidebar-open:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:-2px}
|
|
838
|
+
.ui-sidebar-group{display:grid;gap:2px}
|
|
839
|
+
.ui-sidebar-group-body{display:grid;gap:2px;padding:2px 0 4px 28px}
|
|
840
|
+
.ui-sidebar-group-body[hidden]{display:none}
|
|
841
|
+
.ui-sidebar-head{margin:10px 0 2px;padding:8px 9px 0;border-top:1px solid var(--sidebar-border);color:var(--sidebar-head-fg);font-size:var(--ts-eyebrow-size);font-weight:var(--ts-eyebrow-weight);line-height:var(--ts-eyebrow-lh);letter-spacing:var(--ts-eyebrow-ls);text-transform:var(--ts-eyebrow-case);font-family:var(--ts-eyebrow-font)}
|
|
842
|
+
.ui-sidebar-foot{display:grid;gap:2px;margin-top:auto;padding-top:8px}
|
|
843
|
+
/* the rail: icons only, each still named (aria-label on the link, title for a pointer) */
|
|
844
|
+
.ui-sidebar[data-state="collapsed"] :is(.ui-sidebar-chev,.ui-sidebar-brand,.ui-sidebar-group-body){display:none}
|
|
845
|
+
.ui-sidebar[data-state="collapsed"] :is(.ui-sidebar-label,.ui-sidebar-count){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
|
|
846
|
+
.ui-sidebar[data-state="collapsed"] .ui-sidebar-top{justify-content:center}
|
|
847
|
+
.ui-sidebar[data-state="collapsed"] .ui-sidebar-item{justify-content:center;width:var(--sidebar-item-h);padding:0}
|
|
848
|
+
.ui-sidebar[data-state="collapsed"] .ui-sidebar-head{height:0;margin:6px 0;padding:0;overflow:hidden}
|
|
849
|
+
/* narrow: a drawer over the page, and the bar that opens it */
|
|
850
|
+
@container (max-width:720px){
|
|
851
|
+
.ui-app-bar{display:flex}
|
|
852
|
+
.ui-sidebar,.ui-sidebar[data-state="collapsed"]{position:absolute;inset:0 auto 0 0;z-index:20;width:min(var(--sidebar-w),86cqw);transform:translateX(-100%);visibility:hidden;transition:transform var(--sidebar-dur) var(--sidebar-ease),visibility 0s linear var(--sidebar-dur)}
|
|
853
|
+
.ui-sidebar[data-state="expanded"]{transform:none;visibility:visible;box-shadow:0 0 0 100vmax var(--sidebar-scrim);transition:transform var(--sidebar-dur) var(--sidebar-ease),visibility 0s}
|
|
854
|
+
}
|
|
855
|
+
/* ── end ui-sidebar ── */
|
|
856
|
+
|
|
857
|
+
/* ── ui-metric ── */
|
|
858
|
+
.ui-metric{display:grid;gap:4px;min-width:0}
|
|
859
|
+
.ui-metric-label{font-size:var(--ts-small-size);font-weight:500;color:var(--i2);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
860
|
+
.ui-metric-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}
|
|
861
|
+
/* proportional figures: equal-width (tabular) digits make some faces, DM Sans among them, set the comma as wide
|
|
862
|
+
as a digit, so 18,880 read as "18 , 880". Tables keep tabular digits, where columns need to line up. */
|
|
863
|
+
.ui-metric-value{font-size:var(--metric-value-size);font-weight:var(--metric-value-weight);line-height:1.1;letter-spacing:-.02em;color:var(--i);font-variant-numeric:proportional-nums}
|
|
864
|
+
.ui-metric-delta{display:inline-flex;align-items:center;gap:2px;font-size:var(--ts-caption-size);font-weight:600;color:var(--good);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
865
|
+
.ui-metric-delta--down{color:var(--neg)}
|
|
866
|
+
/* the change's color says good or bad, not up or down: by default up is good; goodWhen="down" (refunds, churn,
|
|
867
|
+
costs) flips it. The words say both: "down 2%, better" */
|
|
868
|
+
.ui-metric-delta--good{color:var(--good)}.ui-metric-delta--bad{color:var(--neg)}
|
|
869
|
+
.ui-metric-delta svg{width:16px;height:16px}
|
|
870
|
+
/* ── end ui-metric ── */
|
|
871
|
+
|
|
872
|
+
/* ── ui-chart ── */
|
|
873
|
+
/* a line chart drawn from data by components.js (data-ui-chart) or react/LineChart.jsx */
|
|
874
|
+
.ui-chart{position:relative;min-width:0;container-type:inline-size}
|
|
875
|
+
.ui-chart svg{display:block;width:100%;height:var(--chart-h);overflow:visible}
|
|
876
|
+
.ui-chart-grid{stroke:var(--chart-grid);stroke-width:1}
|
|
877
|
+
.ui-chart-area{fill:var(--chart-line);opacity:var(--chart-area-opacity)}
|
|
878
|
+
.ui-chart-line{fill:none;stroke:var(--chart-line);stroke-width:var(--chart-stroke);stroke-linejoin:round;stroke-linecap:round}
|
|
879
|
+
.ui-chart-axis{display:flex;justify-content:space-between;margin-top:8px;font-size:var(--ts-caption-size);color:var(--i3);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
880
|
+
/* a narrow chart shows every other label, so they never run together */
|
|
881
|
+
@container (max-width:360px){.ui-chart-axis span:nth-child(even){visibility:hidden}}
|
|
882
|
+
.ui-chart-marker{position:absolute;top:0;width:1px;background:var(--i3);pointer-events:none}
|
|
883
|
+
.ui-chart-tip{position:absolute;padding:4px 8px;font-size:var(--ts-caption-size);font-weight:600;white-space:nowrap;color:var(--tooltip-fg);background:var(--tooltip-bg);border-radius:var(--tooltip-radius);pointer-events:none;box-shadow:var(--shadow-md);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
884
|
+
/* ── end ui-chart ── */
|
|
885
|
+
|
|
886
|
+
/* ── ui-table ── */
|
|
887
|
+
.ui-table-wrap{overflow-x:auto;border:1px solid var(--l);border-radius:var(--table-radius);background:var(--p)}
|
|
888
|
+
.ui-table{width:100%;border-collapse:collapse;font-size:var(--ts-small-size);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
889
|
+
.ui-table caption{padding:14px 16px;text-align:left;font-weight:700;color:var(--i)}
|
|
890
|
+
.ui-table th{padding:10px 16px;text-align:left;font-size:var(--ts-caption-size);font-weight:600;color:var(--table-head-fg);background:var(--table-head-bg);border-bottom:1px solid var(--l);white-space:nowrap;line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
891
|
+
.ui-table td{padding:12px 16px;color:var(--i2);border-bottom:1px solid var(--l)}
|
|
892
|
+
.ui-table tbody tr:last-child td{border-bottom:0}
|
|
893
|
+
.ui-table tbody tr{transition:background-color var(--btn-dur) ease}
|
|
894
|
+
.ui-table tbody tr:hover,.ui-table tbody tr.is-hover{background:var(--table-row-hover)}
|
|
895
|
+
.ui-table td.ui-table-strong{color:var(--i);font-weight:600}
|
|
896
|
+
.ui-table .ui-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
|
|
897
|
+
/* ── end ui-table ── */
|
|
898
|
+
|
|
899
|
+
/* ── ui-feed ── */
|
|
900
|
+
.ui-feed{display:grid;gap:0;margin:0;padding:0;list-style:none}
|
|
901
|
+
.ui-feed-item{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;padding:12px 0;border-bottom:1px solid var(--l)}
|
|
902
|
+
.ui-feed-item:last-child{border-bottom:0}
|
|
903
|
+
.ui-feed-item > .ui-avatar{grid-row:span 2}
|
|
904
|
+
.ui-feed-text{margin:0;font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
905
|
+
.ui-feed-text strong{color:var(--i);font-weight:600}
|
|
906
|
+
.ui-feed-time{font-size:var(--ts-caption-size);color:var(--i3);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
907
|
+
/* ── end ui-feed ── */
|
|
908
|
+
|
|
909
|
+
/* ── ui-check ── */
|
|
910
|
+
/* checkbox and radio: real inputs, drawn with appearance:none, so forms, Space and labels all still work */
|
|
911
|
+
.ui-choices{display:grid;gap:12px;margin:0;padding:0;border:0;min-width:0}
|
|
912
|
+
.ui-choices > legend{padding:0;margin-bottom:10px}
|
|
913
|
+
.ui-check-row{display:inline-flex;align-items:flex-start;gap:10px;cursor:pointer;font-size:var(--ts-small-size);color:var(--i);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
914
|
+
.ui-check-text{display:grid;gap:2px;min-width:0}
|
|
915
|
+
.ui-check-text small{font-size:var(--ts-caption-size);color:var(--i3);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
916
|
+
.ui-check,.ui-radio{
|
|
917
|
+
appearance:none;flex:none;display:inline-grid;place-content:center;width:var(--check-size);height:var(--check-size);margin:calc((1.45em - var(--check-size)) / 2) 0 0;
|
|
918
|
+
background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--check-radius);box-shadow:var(--input-shadow);cursor:pointer;
|
|
919
|
+
transition:background-color var(--check-dur) var(--check-ease),border-color var(--check-dur) var(--check-ease);
|
|
920
|
+
}
|
|
921
|
+
.ui-radio{border-radius:50%}
|
|
922
|
+
.ui-check::before,.ui-radio::before{content:"";width:calc(var(--check-size) * .62);height:calc(var(--check-size) * .62);background:var(--check-on-fg);transform:scale(0);transition:transform var(--check-dur) var(--check-ease)}
|
|
923
|
+
.ui-check::before{clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0,43% 62%)}
|
|
924
|
+
.ui-radio::before{width:var(--radio-dot);height:var(--radio-dot);border-radius:50%}
|
|
925
|
+
.ui-check:checked,.ui-check:indeterminate,.ui-radio:checked{background:var(--check-on-bg);border-color:var(--check-on-border)}
|
|
926
|
+
.ui-check:checked::before,.ui-radio:checked::before{transform:scale(1)}
|
|
927
|
+
.ui-check:indeterminate::before{clip-path:inset(38% 8% round 2px);transform:scale(1)}
|
|
928
|
+
.ui-check:hover,.ui-check.is-hover,.ui-radio:hover,.ui-radio.is-hover{border-color:var(--input-border-hover)}
|
|
929
|
+
.ui-check:checked:hover,.ui-radio:checked:hover{border-color:var(--check-on-border)}
|
|
930
|
+
.ui-check:focus-visible,.ui-check.is-focus,.ui-radio:focus-visible,.ui-radio.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}
|
|
931
|
+
.ui-check:disabled,.ui-check.is-disabled,.ui-radio:disabled,.ui-radio.is-disabled{opacity:var(--disabled-opacity);cursor:not-allowed}
|
|
932
|
+
.ui-check-row:has(:disabled){cursor:not-allowed;color:var(--i3)}
|
|
933
|
+
/* ── end ui-check ── */
|
|
934
|
+
|
|
935
|
+
/* ── ui-btngroup ── */
|
|
936
|
+
/* a row of joined buttons. Toggle buttons carry aria-pressed; with data-ui-single, components.js keeps one pressed */
|
|
937
|
+
.ui-btngroup{display:inline-flex;max-width:100%;overflow-x:auto;scrollbar-width:none;background:var(--btn-secondary-bg);border:1px solid var(--btngroup-border);border-radius:var(--btn-radius);box-shadow:var(--btn-shadow)}
|
|
938
|
+
.ui-btngroup-item{
|
|
939
|
+
display:inline-flex;align-items:center;gap:8px;flex:none;height:calc(var(--btn-h) - 2px);padding:0 calc(var(--btn-pad-x) - 2px);
|
|
940
|
+
font:inherit;font-size:var(--btn-font-size);font-weight:var(--btn-font-weight);line-height:1;white-space:nowrap;color:var(--btngroup-fg);
|
|
941
|
+
background:transparent;border:0;border-left:1px solid var(--btngroup-border);cursor:pointer;
|
|
942
|
+
transition:background-color var(--btn-dur) var(--btn-ease),color var(--btn-dur) var(--btn-ease);
|
|
943
|
+
}
|
|
944
|
+
.ui-btngroup-item:first-child{border-left:0}
|
|
945
|
+
.ui-btngroup-item svg{width:16px;height:16px;flex:none}
|
|
946
|
+
.ui-btngroup-item:hover,.ui-btngroup-item.is-hover{background:var(--btn-secondary-bg-hover);color:var(--i)}
|
|
947
|
+
.ui-btngroup-item[aria-pressed="true"]{background:var(--btngroup-active-bg);color:var(--btngroup-active-fg)}
|
|
948
|
+
.ui-btngroup-item:focus-visible,.ui-btngroup-item.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:calc(-1 * var(--focus-width));position:relative}
|
|
949
|
+
.ui-btngroup-item:disabled,.ui-btngroup-item.is-disabled{opacity:var(--disabled-opacity);cursor:not-allowed}
|
|
950
|
+
/* ── end ui-btngroup ── */
|
|
951
|
+
|
|
952
|
+
/* ── ui-menu ── */
|
|
953
|
+
/* a dropdown menu. components.js opens it from a button with aria-haspopup="menu", moves focus with the arrow
|
|
954
|
+
keys, Home and End, closes on Escape, Tab or a click outside, and returns focus to the button */
|
|
955
|
+
.ui-menu-wrap{position:relative;display:inline-flex}
|
|
956
|
+
.ui-menu-trigger svg:last-child{transition:transform var(--menu-dur) ease}
|
|
957
|
+
.ui-menu-trigger[aria-expanded="true"] svg:last-child{transform:rotate(180deg)}
|
|
958
|
+
.ui-menu{
|
|
959
|
+
position:absolute;z-index:60;top:calc(100% + 6px);left:0;display:grid;width:max-content;min-width:max(100%,var(--menu-w));max-width:min(320px,calc(100vw - 32px));
|
|
960
|
+
padding:var(--menu-pad);color:var(--i);background:var(--p);border:1px solid var(--l);border-radius:var(--menu-radius);box-shadow:var(--menu-shadow);
|
|
961
|
+
transition:opacity var(--menu-dur) ease,transform var(--menu-dur) ease;
|
|
962
|
+
}
|
|
963
|
+
@starting-style{.ui-menu{opacity:0;transform:translateY(-4px)}}
|
|
964
|
+
.ui-menu-wrap[data-align="end"] .ui-menu{left:auto;right:0}
|
|
965
|
+
.ui-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:var(--menu-item-pad);font-size:var(--ts-small-size);text-align:left;text-decoration:none;color:var(--i);background:transparent;border:0;border-radius:var(--menu-item-radius);cursor:pointer;font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
966
|
+
.ui-menu-item svg{width:16px;height:16px;flex:none;color:var(--i3)}
|
|
967
|
+
.ui-menu-item:hover,.ui-menu-item:focus,.ui-menu-item.is-hover{background:var(--menu-item-hover);outline:none}
|
|
968
|
+
.ui-menu-item:focus-visible,.ui-menu-item.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:calc(-1 * var(--focus-width))}
|
|
969
|
+
.ui-menu-item[aria-disabled="true"]{opacity:var(--disabled-opacity);cursor:not-allowed}
|
|
970
|
+
.ui-menu-item--danger,.ui-menu-item--danger svg{color:var(--menu-danger-fg)}
|
|
971
|
+
.ui-menu-hint{margin-left:auto;padding-left:16px;font-size:var(--ts-caption-size);color:var(--i3);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
972
|
+
.ui-menu-label{padding:6px 8px 4px;font-size:var(--ts-caption-size);font-weight:600;color:var(--i3);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
973
|
+
.ui-menu-sep{height:1px;margin:4px calc(-1 * var(--menu-pad));background:var(--l)}
|
|
974
|
+
/* ── end ui-menu ── */
|
|
975
|
+
|
|
976
|
+
/* ── ui-slider ── */
|
|
977
|
+
/* a native range input. The filled part of the track reads --value, which components.js (or React) sets */
|
|
978
|
+
.ui-slider-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:8px;font-size:var(--ts-small-size);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
979
|
+
.ui-slider-head output{color:var(--i2);font-variant-numeric:tabular-nums}
|
|
980
|
+
.ui-slider{
|
|
981
|
+
--_track:linear-gradient(to right,var(--slider-fill) var(--value,50%),var(--slider-track) var(--value,50%));
|
|
982
|
+
appearance:none;display:block;width:100%;height:max(var(--slider-thumb),24px);margin:0;background:transparent;cursor:pointer;
|
|
983
|
+
}
|
|
984
|
+
.ui-slider::-webkit-slider-runnable-track{height:var(--slider-h);border-radius:999px;background:var(--_track)}
|
|
985
|
+
.ui-slider::-moz-range-track{height:var(--slider-h);border-radius:999px;background:var(--_track)}
|
|
986
|
+
.ui-slider::-webkit-slider-thumb{
|
|
987
|
+
appearance:none;width:var(--slider-thumb);height:var(--slider-thumb);margin-top:calc((var(--slider-h) - var(--slider-thumb)) / 2);
|
|
988
|
+
background:var(--slider-thumb-bg);border:var(--slider-thumb-border) solid var(--slider-fill);border-radius:50%;box-shadow:var(--slider-thumb-shadow);
|
|
989
|
+
transition:transform var(--btn-dur) ease;
|
|
990
|
+
}
|
|
991
|
+
.ui-slider::-moz-range-thumb{box-sizing:border-box;width:var(--slider-thumb);height:var(--slider-thumb);background:var(--slider-thumb-bg);border:var(--slider-thumb-border) solid var(--slider-fill);border-radius:50%;box-shadow:var(--slider-thumb-shadow)}
|
|
992
|
+
.ui-slider:active::-webkit-slider-thumb{transform:scale(1.1)}
|
|
993
|
+
.ui-slider:focus-visible{outline:none}
|
|
994
|
+
.ui-slider:focus-visible::-webkit-slider-thumb{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}
|
|
995
|
+
.ui-slider:focus-visible::-moz-range-thumb{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}
|
|
996
|
+
.ui-slider.is-focus::-webkit-slider-thumb{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}
|
|
997
|
+
.ui-slider:disabled,.ui-slider.is-disabled{opacity:var(--disabled-opacity);cursor:not-allowed}
|
|
998
|
+
.ui-slider-scale{display:flex;justify-content:space-between;margin-top:4px;font-size:var(--ts-caption-size);color:var(--i3);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
999
|
+
/* ── end ui-slider ── */
|
|
1000
|
+
|
|
1001
|
+
/* ── ui-editor ── */
|
|
1002
|
+
/* a rich text field: a toolbar (role="toolbar", arrow keys move between tools) over an editable area.
|
|
1003
|
+
components.js runs the tools with the browser's editing commands. Clean the HTML on the server before storing it. */
|
|
1004
|
+
.ui-editor{display:grid;min-width:0;background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--input-radius);box-shadow:var(--input-shadow);overflow:hidden;transition:border-color var(--input-dur) ease,box-shadow var(--input-dur) ease}
|
|
1005
|
+
.ui-editor:hover{border-color:var(--input-border-hover)}
|
|
1006
|
+
.ui-editor:focus-within{border-color:var(--focus-color);box-shadow:var(--input-shadow),0 0 0 var(--input-ring-width) var(--input-ring)}
|
|
1007
|
+
.ui-editor-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px;background:var(--editor-toolbar-bg);border-bottom:1px solid var(--l)}
|
|
1008
|
+
.ui-editor-tool{display:grid;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:var(--r-sm,6px);background:transparent;color:var(--i2);cursor:pointer;transition:background-color var(--btn-dur) ease,color var(--btn-dur) ease}
|
|
1009
|
+
.ui-editor-tool svg{width:16px;height:16px}
|
|
1010
|
+
.ui-editor-tool:hover,.ui-editor-tool.is-hover{background:var(--mid);color:var(--i)}
|
|
1011
|
+
.ui-editor-tool[aria-pressed="true"]{background:var(--editor-tool-on);color:var(--i)}
|
|
1012
|
+
.ui-editor-tool:focus-visible,.ui-editor-tool.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:-2px}
|
|
1013
|
+
.ui-editor-sep{width:1px;height:20px;margin:0 4px;background:var(--l)}
|
|
1014
|
+
.ui-editor-area{min-height:var(--editor-min-h);padding:12px var(--input-pad-x);font-size:var(--ts-body-size);line-height:1.6;color:var(--i);outline:none;overflow-wrap:anywhere;font-weight:var(--ts-body-weight);letter-spacing:var(--ts-body-ls);text-transform:var(--ts-body-case);font-family:var(--ts-body-font)}
|
|
1015
|
+
.ui-editor-area:empty::before{content:attr(data-placeholder);color:var(--i3)}
|
|
1016
|
+
.ui-editor-area > :first-child{margin-top:0}
|
|
1017
|
+
.ui-editor-area p{margin:0 0 .6em}
|
|
1018
|
+
.ui-editor-area ul,.ui-editor-area ol{margin:0 0 .6em;padding-left:1.4em}
|
|
1019
|
+
.ui-editor-area blockquote{margin:0 0 .6em;padding-left:12px;border-left:3px solid var(--l);color:var(--i2)}
|
|
1020
|
+
.ui-editor-foot{display:flex;justify-content:space-between;gap:12px;padding:6px var(--input-pad-x);font-size:var(--ts-caption-size);color:var(--i3);border-top:1px solid var(--l);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1021
|
+
/* ── end ui-editor ── */
|
|
1022
|
+
|
|
1023
|
+
/* ── ui-video ── */
|
|
1024
|
+
/* a <video> with its own controls, wired by components.js ([data-ui-video]). The controls sit on a dark scrim in
|
|
1025
|
+
every theme, because they sit on the picture, not on the page */
|
|
1026
|
+
.ui-video{position:relative;overflow:hidden;min-width:0;background:var(--video-bg);border-radius:var(--video-radius);color:var(--video-fg)}
|
|
1027
|
+
.ui-video video{display:block;width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover}
|
|
1028
|
+
.ui-video-big{position:absolute;inset:0;margin:auto;display:grid;place-items:center;width:64px;height:64px;padding:0;border:0;border-radius:50%;color:var(--video-fg);background:var(--video-scrim);cursor:pointer;transition:opacity var(--btn-dur) ease,transform var(--btn-dur) ease}
|
|
1029
|
+
.ui-video-big svg{width:28px;height:28px;margin-left:3px}
|
|
1030
|
+
.ui-video-big:hover{transform:scale(1.06)}
|
|
1031
|
+
.ui-video[data-playing] .ui-video-big{opacity:0;pointer-events:none}
|
|
1032
|
+
.ui-video-bar{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:6px;padding:24px 10px 8px;background:linear-gradient(transparent,var(--video-scrim));transition:opacity .25s ease}
|
|
1033
|
+
.ui-video[data-playing][data-idle] .ui-video-bar{opacity:0}
|
|
1034
|
+
.ui-video-btn{display:grid;place-items:center;flex:none;width:32px;height:32px;padding:0;border:0;border-radius:var(--r-sm,6px);background:transparent;color:inherit;cursor:pointer}
|
|
1035
|
+
.ui-video-btn svg{width:18px;height:18px}
|
|
1036
|
+
.ui-video-btn:hover{background:color-mix(in srgb,var(--video-fg) 18%,transparent)}
|
|
1037
|
+
.ui-video-big:focus-visible,.ui-video-btn:focus-visible{outline:2px solid var(--video-fg);outline-offset:1px}
|
|
1038
|
+
.ui-video-time{flex:none;font-size:var(--ts-caption-size);font-variant-numeric:tabular-nums;font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1039
|
+
.ui-video .ui-slider{--slider-track:color-mix(in srgb,var(--video-fg) 35%,transparent);--slider-fill:var(--video-fg);--slider-thumb-bg:var(--video-fg);--slider-thumb:14px;--slider-h:4px;flex:1;min-width:40px}
|
|
1040
|
+
.ui-video .ui-slider:focus-visible::-webkit-slider-thumb{outline-color:var(--video-fg)}
|
|
1041
|
+
.ui-video .ui-slider:focus-visible::-moz-range-thumb{outline-color:var(--video-fg)}
|
|
1042
|
+
/* ── end ui-video ── */
|
|
1043
|
+
|
|
1044
|
+
/* ── ui-breadcrumb ── */
|
|
1045
|
+
/* nav[aria-label] > ol: each step a link, the last one the current page (aria-current, not a link) */
|
|
1046
|
+
.ui-breadcrumb ol{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin:0;padding:0;list-style:none;font-size:var(--ts-caption-size);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1047
|
+
.ui-breadcrumb li{display:inline-flex;align-items:center;gap:6px;min-width:0;color:var(--i3)}
|
|
1048
|
+
.ui-breadcrumb li + li::before{content:"";width:6px;height:6px;border-right:1.5px solid var(--i3);border-top:1.5px solid var(--i3);transform:rotate(45deg);opacity:.8}
|
|
1049
|
+
.ui-breadcrumb a{color:var(--i2);text-decoration:none;border-radius:4px;transition:color var(--btn-dur) ease}
|
|
1050
|
+
.ui-breadcrumb a:hover,.ui-breadcrumb a.is-hover{color:var(--i);text-decoration:underline;text-underline-offset:3px}
|
|
1051
|
+
.ui-breadcrumb a:focus-visible,.ui-breadcrumb a.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:2px}
|
|
1052
|
+
.ui-breadcrumb [aria-current="page"]{color:var(--i);font-weight:600}
|
|
1053
|
+
.ui-breadcrumb svg{width:15px;height:15px;flex:none}
|
|
1054
|
+
/* ── end ui-breadcrumb ── */
|
|
1055
|
+
|
|
1056
|
+
/* ── ui-cardhead ── */
|
|
1057
|
+
.ui-cardhead{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px 16px;padding:16px 18px;border-bottom:1px solid var(--l)}
|
|
1058
|
+
.ui-cardhead-text{flex:1 1 200px;min-width:0}
|
|
1059
|
+
.ui-cardhead-title{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;font-size:var(--ts-h3-size);color:var(--i);font-weight:var(--ts-h3-weight);line-height:var(--ts-h3-lh);letter-spacing:var(--ts-h3-ls);text-transform:var(--ts-h3-case);font-family:var(--ts-h3-font)}
|
|
1060
|
+
.ui-cardhead-desc{margin:4px 0 0;font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1061
|
+
.ui-cardhead-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
|
|
1062
|
+
/* ── end ui-cardhead ── */
|
|
1063
|
+
|
|
1064
|
+
/* ── ui-divider ── */
|
|
1065
|
+
/* a rule, or a rule with a word or a button in the middle */
|
|
1066
|
+
.ui-divider{display:flex;align-items:center;gap:12px;margin:0;border:0;font-size:var(--ts-caption-size);font-weight:500;color:var(--i3);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1067
|
+
.ui-divider::before,.ui-divider::after{content:"";flex:1;height:1px;background:var(--l)}
|
|
1068
|
+
hr.ui-divider{display:block;height:1px;background:var(--l)}
|
|
1069
|
+
hr.ui-divider::before,hr.ui-divider::after{content:none}
|
|
1070
|
+
.ui-divider--start::before{flex:0 0 16px}
|
|
1071
|
+
/* ── end ui-divider ── */
|
|
1072
|
+
|
|
1073
|
+
/* ── ui-empty ── */
|
|
1074
|
+
.ui-empty{display:grid;justify-items:center;gap:6px;padding:var(--empty-pad);text-align:center}
|
|
1075
|
+
.ui-empty-icon{display:grid;place-items:center;width:48px;height:48px;margin-bottom:8px;border-radius:var(--r-md,10px);color:var(--i2);background:var(--empty-icon-bg);box-shadow:0 0 0 8px color-mix(in srgb,var(--empty-icon-bg) 45%,transparent)}
|
|
1076
|
+
.ui-empty-icon svg{width:22px;height:22px}
|
|
1077
|
+
.ui-empty-title{margin:0;font-size:var(--ts-h3-size);color:var(--i);font-weight:var(--ts-h3-weight);line-height:var(--ts-h3-lh);letter-spacing:var(--ts-h3-ls);text-transform:var(--ts-h3-case);font-family:var(--ts-h3-font)}
|
|
1078
|
+
.ui-empty-text{max-width:360px;margin:0;font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1079
|
+
.ui-empty-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:12px}
|
|
1080
|
+
/* ── end ui-empty ── */
|
|
1081
|
+
|
|
1082
|
+
/* ── ui-cta ── */
|
|
1083
|
+
/* an inline call to action: a short pitch and its buttons, set off from the content around it */
|
|
1084
|
+
.ui-cta{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;padding:18px 20px;color:var(--i);background:var(--cta-bg);border:1px solid var(--cta-border);border-radius:var(--r-lg,13px)}
|
|
1085
|
+
.ui-cta-text{flex:1 1 240px;min-width:0}
|
|
1086
|
+
.ui-cta-title{margin:0;font-size:var(--ts-h3-size);font-weight:var(--ts-h3-weight);line-height:var(--ts-h3-lh);letter-spacing:var(--ts-h3-ls);text-transform:var(--ts-h3-case);font-family:var(--ts-h3-font)}
|
|
1087
|
+
.ui-cta-body{margin:4px 0 0;font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1088
|
+
.ui-cta-actions{display:flex;flex-wrap:wrap;gap:8px}
|
|
1089
|
+
.ui-cta--fill{background:var(--fill);border-color:var(--fill);color:var(--on-fill)}
|
|
1090
|
+
.ui-cta--fill .ui-cta-body{color:var(--on-fill);opacity:.85}
|
|
1091
|
+
/* ── end ui-cta ── */
|
|
1092
|
+
|
|
1093
|
+
/* ── ui-pagehead ── */
|
|
1094
|
+
.ui-pagehead{display:grid;gap:14px;padding-bottom:18px;border-bottom:1px solid var(--l)}
|
|
1095
|
+
.ui-pagehead-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 20px}
|
|
1096
|
+
.ui-pagehead-text{flex:1 1 260px;min-width:0}
|
|
1097
|
+
.ui-pagehead-title{margin:0;font-size:var(--pagehead-title-size);color:var(--i);font-weight:var(--ts-h2-weight);line-height:var(--ts-h2-lh);letter-spacing:var(--ts-h2-ls);text-transform:var(--ts-h2-case);font-family:var(--ts-h2-font)}
|
|
1098
|
+
.ui-pagehead-desc{margin:6px 0 0;font-size:var(--ts-body-size);color:var(--i2);font-weight:var(--ts-body-weight);line-height:var(--ts-body-lh);letter-spacing:var(--ts-body-ls);text-transform:var(--ts-body-case);font-family:var(--ts-body-font)}
|
|
1099
|
+
.ui-pagehead-actions{display:flex;flex-wrap:wrap;gap:8px}
|
|
1100
|
+
/* ── end ui-pagehead ── */
|
|
1101
|
+
|
|
1102
|
+
/* ── ui-pagination ── */
|
|
1103
|
+
/* numbered pages with Previous and Next; in a narrow container the numbers give way to "Page 2 of 10" */
|
|
1104
|
+
.ui-pagination{display:flex;align-items:center;gap:8px;container-type:inline-size;min-width:0}
|
|
1105
|
+
.ui-pagination-pages{display:flex;flex:1;justify-content:center;gap:2px;margin:0;padding:0;list-style:none}
|
|
1106
|
+
.ui-page{display:grid;place-items:center;min-width:36px;height:36px;padding:0 8px;font-size:var(--ts-small-size);font-weight:600;color:var(--i2);background:transparent;border:0;border-radius:var(--r-sm,8px);cursor:pointer;text-decoration:none;line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1107
|
+
.ui-page:hover,.ui-page.is-hover{background:var(--mid);color:var(--i)}
|
|
1108
|
+
.ui-page[aria-current="page"]{background:var(--pagination-current-bg);color:var(--i)}
|
|
1109
|
+
.ui-page:focus-visible,.ui-page.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:-2px}
|
|
1110
|
+
.ui-page-gap{display:grid;place-items:center;min-width:28px;color:var(--i3)}
|
|
1111
|
+
.ui-pagination-info{display:none;flex:1;text-align:center;font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1112
|
+
@container (max-width:460px){.ui-pagination-pages{display:none}.ui-pagination-info{display:block}}
|
|
1113
|
+
/* ── end ui-pagination ── */
|
|
1114
|
+
|
|
1115
|
+
/* ── ui-steps ── */
|
|
1116
|
+
/* ol.ui-steps > li.ui-step[data-state=complete|current|upcoming]; the current step also carries aria-current="step" */
|
|
1117
|
+
.ui-steps{display:flex;gap:0;margin:0;padding:0;list-style:none;counter-reset:ui-step}
|
|
1118
|
+
.ui-step{position:relative;flex:1;display:grid;justify-items:center;gap:4px;min-width:0;padding:0 6px;text-align:center;counter-increment:ui-step}
|
|
1119
|
+
.ui-step::before{content:"";position:absolute;top:calc(var(--steps-marker) / 2);left:calc(-50% + var(--steps-marker) / 2 + 6px);right:calc(50% + var(--steps-marker) / 2 + 6px);height:2px;background:var(--l);border-radius:2px}
|
|
1120
|
+
.ui-step:first-child::before{content:none}
|
|
1121
|
+
.ui-step[data-state="complete"]::before,.ui-step[data-state="current"]::before{background:var(--steps-current)}
|
|
1122
|
+
.ui-step-marker{display:grid;place-items:center;width:var(--steps-marker);height:var(--steps-marker);border-radius:50%;font-size:var(--ts-caption-size);font-weight:700;color:var(--i3);background:var(--p);border:2px solid var(--l);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1123
|
+
.ui-step-marker::before{content:counter(ui-step)}
|
|
1124
|
+
.ui-step[data-state="current"] .ui-step-marker{color:var(--i);border-color:var(--steps-current);box-shadow:0 0 0 4px color-mix(in srgb,var(--steps-current) 22%,transparent)}
|
|
1125
|
+
.ui-step[data-state="complete"] .ui-step-marker{color:var(--steps-done-fg);background:var(--steps-done-bg);border-color:var(--steps-done-bg)}
|
|
1126
|
+
.ui-step[data-state="complete"] .ui-step-marker::before{content:"";width:9px;height:5px;border-left:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-1px) rotate(-45deg)}
|
|
1127
|
+
.ui-step-label{font-size:var(--ts-small-size);font-weight:600;color:var(--i);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1128
|
+
.ui-step[data-state="upcoming"] .ui-step-label{color:var(--i2)}
|
|
1129
|
+
.ui-step-desc{font-size:var(--ts-caption-size);color:var(--i3);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1130
|
+
.ui-steps--vertical{flex-direction:column;gap:18px}
|
|
1131
|
+
.ui-steps--vertical .ui-step{grid-template-columns:auto 1fr;justify-items:start;text-align:left;column-gap:12px;padding:0}
|
|
1132
|
+
.ui-steps--vertical .ui-step-marker{grid-row:span 2}
|
|
1133
|
+
.ui-steps--vertical .ui-step::before{top:auto;bottom:calc(100% + 2px);left:calc(var(--steps-marker) / 2 - 1px);right:auto;width:2px;height:16px}
|
|
1134
|
+
/* ── end ui-steps ── */
|
|
1135
|
+
|
|
1136
|
+
/* ── ui-sectionhead ── */
|
|
1137
|
+
.ui-sectionhead{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px 18px;padding-bottom:14px;margin-bottom:16px;border-bottom:1px solid var(--l)}
|
|
1138
|
+
.ui-sectionhead-text{flex:1 1 220px;min-width:0}
|
|
1139
|
+
.ui-sectionhead-title{margin:0;font-size:var(--ts-h3-size);color:var(--i);font-weight:var(--ts-h3-weight);line-height:var(--ts-h3-lh);letter-spacing:var(--ts-h3-ls);text-transform:var(--ts-h3-case);font-family:var(--ts-h3-font)}
|
|
1140
|
+
.ui-sectionhead-desc{margin:4px 0 0;font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1141
|
+
.ui-sectionhead-actions{display:flex;flex-wrap:wrap;gap:8px}
|
|
1142
|
+
/* ── end ui-sectionhead ── */
|
|
1143
|
+
|
|
1144
|
+
/* ── ui-sectionfoot ── */
|
|
1145
|
+
.ui-sectionfoot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;padding-top:16px;margin-top:20px;border-top:1px solid var(--l)}
|
|
1146
|
+
.ui-sectionfoot-note{margin:0;font-size:var(--ts-caption-size);color:var(--i3);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1147
|
+
.ui-sectionfoot-actions{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}
|
|
1148
|
+
/* ── end ui-sectionfoot ── */
|
|
1149
|
+
|
|
1150
|
+
/* ── ui-calendar ── */
|
|
1151
|
+
/* a month as a grid (role="grid"): arrow keys move a day, Page Up/Down a month, Home/End the week; components.js */
|
|
1152
|
+
.ui-calendar{display:grid;gap:8px;width:max-content;max-width:100%;padding:12px;background:var(--p);border:1px solid var(--l);border-radius:var(--r-lg,13px)}
|
|
1153
|
+
.ui-calendar-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
|
|
1154
|
+
.ui-calendar-title{margin:0;font-size:var(--ts-body-size);font-weight:700;color:var(--i);line-height:var(--ts-body-lh);letter-spacing:var(--ts-body-ls);text-transform:var(--ts-body-case);font-family:var(--ts-body-font)}
|
|
1155
|
+
.ui-calendar table{border-collapse:collapse}
|
|
1156
|
+
.ui-calendar th{width:var(--cal-cell);height:28px;font-size:var(--ts-caption-size);font-weight:600;color:var(--i3);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1157
|
+
.ui-calendar td{padding:1px;text-align:center}
|
|
1158
|
+
.ui-day{position:relative;display:grid;place-items:center;width:var(--cal-cell);height:var(--cal-cell);padding:0;font-size:var(--ts-small-size);color:var(--i);background:transparent;border:0;border-radius:var(--cal-radius);cursor:pointer;font-variant-numeric:tabular-nums;font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1159
|
+
.ui-day:hover,.ui-day.is-hover{background:var(--mid)}
|
|
1160
|
+
.ui-day[data-outside]{color:var(--i3)}
|
|
1161
|
+
.ui-day[aria-current="date"]{box-shadow:inset 0 0 0 2px var(--cal-today)}
|
|
1162
|
+
.ui-day[aria-selected="true"]{color:var(--cal-selected-fg);background:var(--cal-selected-bg)}
|
|
1163
|
+
.ui-day[data-event]::after{content:"";position:absolute;bottom:4px;left:50%;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:currentColor}
|
|
1164
|
+
.ui-day:focus-visible,.ui-day.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:1px;z-index:1}
|
|
1165
|
+
.ui-day:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}
|
|
1166
|
+
/* ── end ui-calendar ── */
|
|
1167
|
+
|
|
1168
|
+
/* ── ui-datepicker ── */
|
|
1169
|
+
/* a button that shows the chosen date and opens a calendar under it; Escape or a choice closes it */
|
|
1170
|
+
.ui-datepicker{position:relative;display:inline-block;min-width:0}
|
|
1171
|
+
.ui-datepicker-btn{display:flex;align-items:center;gap:8px;width:100%;min-width:200px;text-align:left;cursor:pointer}
|
|
1172
|
+
.ui-datepicker-btn svg{width:16px;height:16px;flex:none;color:var(--i3)}
|
|
1173
|
+
.ui-datepicker-btn[data-empty]{color:var(--i3)}
|
|
1174
|
+
.ui-datepicker-pop{position:absolute;z-index:60;top:calc(100% + 6px);left:0;box-shadow:var(--menu-shadow)}
|
|
1175
|
+
.ui-datepicker[data-align="end"] .ui-datepicker-pop{left:auto;right:0}
|
|
1176
|
+
.ui-datepicker-pop .ui-calendar{box-shadow:none}
|
|
1177
|
+
/* ── end ui-datepicker ── */
|
|
1178
|
+
|
|
1179
|
+
/* ── ui-code ── */
|
|
1180
|
+
.ui-code{margin:0;min-width:0;overflow:hidden;background:var(--code-bg);border:1px solid var(--l);border-radius:var(--r-md,10px)}
|
|
1181
|
+
.ui-code-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px 6px 14px;border-bottom:1px solid var(--l)}
|
|
1182
|
+
.ui-code-lang{color:var(--i2);font-size:var(--ts-eyebrow-size);font-weight:var(--ts-eyebrow-weight);line-height:var(--ts-eyebrow-lh);letter-spacing:var(--ts-eyebrow-ls);text-transform:var(--ts-eyebrow-case);font-family:var(--ts-eyebrow-font)}
|
|
1183
|
+
.ui-code pre{margin:0;padding:14px;overflow-x:auto;font:.84rem/1.6 ui-monospace,"DM Mono",SFMono-Regular,Menlo,Consolas,monospace;color:var(--code-fg);tab-size:2}
|
|
1184
|
+
.ui-code .ui-code-muted{color:var(--i2)}
|
|
1185
|
+
/* ── end ui-code ── */
|
|
1186
|
+
|
|
1187
|
+
/* ── ui-colorpick ── */
|
|
1188
|
+
.ui-colorpick{display:grid;gap:10px;min-width:0}
|
|
1189
|
+
.ui-swatches{display:flex;flex-wrap:wrap;gap:8px}
|
|
1190
|
+
.ui-swatch{width:28px;height:28px;padding:0;border:2px solid var(--p);border-radius:50%;box-shadow:0 0 0 1px var(--input-border);cursor:pointer}
|
|
1191
|
+
.ui-swatch[aria-checked="true"]{box-shadow:0 0 0 2px var(--i)}
|
|
1192
|
+
.ui-swatch:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:3px}
|
|
1193
|
+
.ui-colorpick-row{display:flex;align-items:center;gap:8px}
|
|
1194
|
+
.ui-colorpick-row input[type="color"]{flex:none;width:40px;height:var(--input-h);padding:3px;background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--input-radius);cursor:pointer}
|
|
1195
|
+
.ui-colorpick-row .ui-input{flex:1;min-width:0;font-family:ui-monospace,"DM Mono",SFMono-Regular,Menlo,monospace;text-transform:uppercase}
|
|
1196
|
+
/* ── end ui-colorpick ── */
|
|
1197
|
+
|
|
1198
|
+
/* ── ui-command ── */
|
|
1199
|
+
/* a command menu in a dialog: type to filter, arrows to move, Enter to run (a combobox over a listbox) */
|
|
1200
|
+
.ui-command{width:min(var(--command-w),calc(100vw - 32px))}
|
|
1201
|
+
.ui-command-search{display:flex;align-items:center;gap:10px;padding:4px 14px;border-bottom:1px solid var(--l)}
|
|
1202
|
+
.ui-command-search svg{width:18px;height:18px;flex:none;color:var(--i3)}
|
|
1203
|
+
.ui-command-search input{flex:1;min-width:0;height:48px;font-size:var(--ts-body-size);color:var(--i);background:transparent;border:0;outline:none;font-weight:var(--ts-body-weight);line-height:var(--ts-body-lh);letter-spacing:var(--ts-body-ls);text-transform:var(--ts-body-case);font-family:var(--ts-body-font)}
|
|
1204
|
+
.ui-command-search input::placeholder{color:var(--i3)}
|
|
1205
|
+
.ui-command-list{max-height:min(360px,60dvh);overflow-y:auto;padding:6px}
|
|
1206
|
+
.ui-command-group{padding:8px 8px 4px;font-size:var(--ts-caption-size);font-weight:600;color:var(--i3);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1207
|
+
.ui-command-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--menu-item-radius);font-size:var(--ts-small-size);color:var(--i);cursor:pointer;font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1208
|
+
.ui-command-item svg{width:16px;height:16px;flex:none;color:var(--i3)}
|
|
1209
|
+
.ui-command-item[aria-selected="true"]{background:var(--menu-item-hover)}
|
|
1210
|
+
.ui-command-item kbd{margin-left:auto;font-size:var(--ts-caption-size);color:var(--i3);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1211
|
+
.ui-command-empty{padding:24px;text-align:center;font-size:var(--ts-small-size);color:var(--i3);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1212
|
+
.ui-command-foot{display:flex;gap:14px;padding:8px 14px;font-size:var(--ts-caption-size);color:var(--i3);border-top:1px solid var(--l);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1213
|
+
.ui-kbd{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;font:600 .72rem/1 inherit;color:var(--i2);background:var(--mid);border:1px solid var(--l);border-radius:5px}
|
|
1214
|
+
/* ── end ui-command ── */
|
|
1215
|
+
|
|
1216
|
+
/* ── ui-dropzone ── */
|
|
1217
|
+
/* a label around a file input: click or drop; the chosen files list under it (components.js reads them, never uploads) */
|
|
1218
|
+
.ui-dropzone{position:relative;display:grid;justify-items:center;gap:6px;padding:24px 16px;text-align:center;color:var(--i2);background:var(--input-bg);border:1.5px dashed var(--dropzone-border);border-radius:var(--r-lg,13px);cursor:pointer;transition:border-color var(--input-dur) ease,background-color var(--input-dur) ease}
|
|
1219
|
+
.ui-dropzone input{position:absolute;width:1px;height:1px;opacity:0}
|
|
1220
|
+
.ui-dropzone:hover,.ui-dropzone.is-drag,.ui-dropzone.is-hover{border-color:var(--dropzone-active);background:color-mix(in srgb,var(--dropzone-active) 6%,var(--input-bg))}
|
|
1221
|
+
.ui-dropzone:focus-within,.ui-dropzone.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:2px}
|
|
1222
|
+
.ui-dropzone-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--r-md,10px);background:var(--mid);color:var(--i2)}
|
|
1223
|
+
.ui-dropzone-icon svg{width:20px;height:20px}
|
|
1224
|
+
.ui-dropzone strong{color:var(--i)}
|
|
1225
|
+
.ui-dropzone small{font-size:var(--ts-caption-size);color:var(--i3);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1226
|
+
.ui-files{display:grid;gap:8px;margin:10px 0 0;padding:0;list-style:none}
|
|
1227
|
+
.ui-file{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:4px 12px;padding:10px 12px;border:1px solid var(--l);border-radius:var(--r-md,10px);background:var(--p)}
|
|
1228
|
+
.ui-file > svg{grid-row:span 2;width:20px;height:20px;color:var(--i3)}
|
|
1229
|
+
.ui-file-name{min-width:0;overflow:hidden;font-size:var(--ts-small-size);font-weight:600;color:var(--i);white-space:nowrap;text-overflow:ellipsis;line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1230
|
+
.ui-file-size{grid-column:2;font-size:var(--ts-caption-size);color:var(--i3);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1231
|
+
.ui-file .ui-tag-remove{grid-row:1 / span 2;grid-column:3}
|
|
1232
|
+
/* ── end ui-dropzone ── */
|
|
1233
|
+
|
|
1234
|
+
/* ── ui-filters ── */
|
|
1235
|
+
/* a filter bar: search, chips that toggle (aria-pressed), and the active filters as removable tags */
|
|
1236
|
+
.ui-filters{display:grid;gap:10px;min-width:0}
|
|
1237
|
+
.ui-filters-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
|
|
1238
|
+
.ui-chip{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;font-size:var(--ts-caption-size);font-weight:600;color:var(--i2);background:var(--p);border:1px solid var(--input-border);border-radius:999px;cursor:pointer;transition:background-color var(--btn-dur) ease,color var(--btn-dur) ease;line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1239
|
+
.ui-chip:hover,.ui-chip.is-hover{color:var(--i);background:var(--mid)}
|
|
1240
|
+
.ui-chip[aria-pressed="true"]{color:var(--chip-on-fg);background:var(--chip-on-bg);border-color:var(--chip-on-bg)}
|
|
1241
|
+
.ui-chip:focus-visible,.ui-chip.is-focus{outline:var(--focus-width) solid var(--focus-color);outline-offset:2px}
|
|
1242
|
+
.ui-chip svg{width:14px;height:14px}
|
|
1243
|
+
/* ── end ui-filters ── */
|
|
1244
|
+
|
|
1245
|
+
/* ── ui-chat ── */
|
|
1246
|
+
/* messages (role="log", read out as they arrive) and a composer; Enter sends, Shift+Enter adds a line */
|
|
1247
|
+
.ui-chat{display:grid;grid-template-rows:1fr auto;min-width:0;max-height:var(--chat-h);background:var(--p);border:1px solid var(--l);border-radius:var(--r-lg,13px);overflow:hidden}
|
|
1248
|
+
.ui-chat-log{display:grid;align-content:start;gap:12px;padding:16px;overflow-y:auto}
|
|
1249
|
+
.ui-msg{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;max-width:80%}
|
|
1250
|
+
.ui-msg > .ui-avatar{grid-row:span 2;align-self:end}
|
|
1251
|
+
.ui-msg-bubble{padding:9px 13px;font-size:var(--ts-small-size);line-height:1.45;color:var(--chat-in-fg);background:var(--chat-in-bg);border-radius:var(--chat-radius) var(--chat-radius) var(--chat-radius) 4px;overflow-wrap:anywhere;font-weight:var(--ts-small-weight);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1252
|
+
.ui-msg-meta{font-size:var(--ts-caption-size);color:var(--i3);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1253
|
+
.ui-msg--out{justify-self:end;grid-template-columns:minmax(0,1fr)}
|
|
1254
|
+
.ui-msg--out .ui-msg-bubble{color:var(--chat-out-fg);background:var(--chat-out-bg);border-radius:var(--chat-radius) var(--chat-radius) 4px var(--chat-radius)}
|
|
1255
|
+
.ui-msg--out .ui-msg-meta{justify-self:end}
|
|
1256
|
+
.ui-chat-compose{display:flex;align-items:flex-end;gap:8px;padding:10px;border-top:1px solid var(--l)}
|
|
1257
|
+
.ui-chat-compose textarea.ui-input{min-height:40px;height:40px;max-height:120px;padding-top:9px;resize:none}
|
|
1258
|
+
/* ── end ui-chat ── */
|
|
1259
|
+
|
|
1260
|
+
/* ── ui-sheet ── */
|
|
1261
|
+
/* a slide-out panel: a <dialog> on the right edge, opened like a dialog ([data-ui-open]), Escape and the backdrop close it */
|
|
1262
|
+
.ui-sheet{position:fixed;inset:0 0 0 auto;width:min(var(--sheet-w),100vw);max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:0;display:flex;flex-direction:column;color:var(--i);background:var(--p);border:0;border-left:1px solid var(--l);box-shadow:var(--dialog-shadow);
|
|
1263
|
+
transform:translateX(100%);transition:transform var(--dialog-dur) var(--dialog-ease),overlay var(--dialog-dur) allow-discrete,display var(--dialog-dur) allow-discrete}
|
|
1264
|
+
.ui-sheet:not([open]){display:none}
|
|
1265
|
+
.ui-sheet[open]{transform:none}
|
|
1266
|
+
@starting-style{.ui-sheet[open]{transform:translateX(100%)}}
|
|
1267
|
+
.ui-sheet::backdrop{background:var(--dialog-backdrop);opacity:0;transition:opacity var(--dialog-dur) ease,overlay var(--dialog-dur) allow-discrete,display var(--dialog-dur) allow-discrete}
|
|
1268
|
+
.ui-sheet[open]::backdrop{opacity:1}
|
|
1269
|
+
@starting-style{.ui-sheet[open]::backdrop{opacity:0}}
|
|
1270
|
+
.ui-sheet-head{display:flex;align-items:flex-start;gap:12px;padding:18px 20px;border-bottom:1px solid var(--l)}
|
|
1271
|
+
.ui-sheet-title{flex:1;margin:0;font-size:var(--ts-h3-size);font-weight:var(--ts-h3-weight);line-height:var(--ts-h3-lh);letter-spacing:var(--ts-h3-ls);text-transform:var(--ts-h3-case);font-family:var(--ts-h3-font)}
|
|
1272
|
+
.ui-sheet-body{flex:1;overflow-y:auto;padding:18px 20px;color:var(--i2)}
|
|
1273
|
+
.ui-sheet-foot{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:14px 20px;border-top:1px solid var(--l)}
|
|
1274
|
+
/* ── end ui-sheet ── */
|
|
1275
|
+
|
|
1276
|
+
/* ── ui-tree ── */
|
|
1277
|
+
/* a tree (role="tree"): Up and Down move, Right opens or steps in, Left closes or steps out, Enter selects */
|
|
1278
|
+
.ui-tree,.ui-tree ul{margin:0;padding:0;list-style:none}
|
|
1279
|
+
.ui-tree ul{padding-left:18px}
|
|
1280
|
+
.ui-tree [role="treeitem"]{outline:none}
|
|
1281
|
+
.ui-tree-row{display:flex;align-items:center;gap:6px;min-height:32px;padding:0 8px;border-radius:var(--r-sm,8px);font-size:var(--ts-small-size);color:var(--i);cursor:pointer;font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1282
|
+
.ui-tree-row:hover{background:var(--mid)}
|
|
1283
|
+
.ui-tree-row svg{width:16px;height:16px;flex:none;color:var(--i3)}
|
|
1284
|
+
.ui-tree-caret{display:grid;place-items:center;width:16px;height:16px;flex:none;color:var(--i3);transition:transform .15s}
|
|
1285
|
+
.ui-tree-caret::before{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg)}
|
|
1286
|
+
[aria-expanded="true"] > .ui-tree-row .ui-tree-caret{transform:rotate(90deg)}
|
|
1287
|
+
.ui-tree-leaf{width:16px;flex:none}
|
|
1288
|
+
[aria-expanded="false"] > ul{display:none}
|
|
1289
|
+
[aria-selected="true"] > .ui-tree-row{color:var(--i);background:var(--tree-selected-bg);font-weight:600}
|
|
1290
|
+
[role="treeitem"]:focus-visible > .ui-tree-row{outline:var(--focus-width) solid var(--focus-color);outline-offset:-2px}
|
|
1291
|
+
/* ── end ui-tree ── */
|
|
1292
|
+
|
|
1293
|
+
/* ── ui-section ── */
|
|
1294
|
+
/* Marketing sections share this: a band with its own width, a heading block (eyebrow, title, lead), and layouts that
|
|
1295
|
+
follow the band's own width (container queries), so a section works in a narrow card and a full page alike */
|
|
1296
|
+
.ui-section{container-type:inline-size;padding:var(--section-pad-y) 20px;color:var(--i)}
|
|
1297
|
+
.ui-section-inner{max-width:var(--section-max);margin:0 auto;display:grid;gap:32px}
|
|
1298
|
+
.ui-section-head{display:grid;gap:10px;max-width:720px}
|
|
1299
|
+
.ui-section-head--center{justify-items:center;margin:0 auto;text-align:center}
|
|
1300
|
+
.ui-eyebrow{color:var(--eyebrow-fg);font-size:var(--ts-eyebrow-size);font-weight:var(--ts-eyebrow-weight);line-height:var(--ts-eyebrow-lh);letter-spacing:var(--ts-eyebrow-ls);text-transform:var(--ts-eyebrow-case);font-family:var(--ts-eyebrow-font)}
|
|
1301
|
+
.ui-section-title{margin:0;font-size:var(--section-title-size);font-weight:var(--ts-h1-weight);line-height:var(--ts-h1-lh);letter-spacing:var(--ts-h1-ls);text-transform:var(--ts-h1-case);font-family:var(--ts-h1-font)}
|
|
1302
|
+
.ui-section-lead{margin:0;font-size:var(--ts-lead-size);color:var(--i2);font-weight:var(--ts-lead-weight);line-height:var(--ts-lead-lh);letter-spacing:var(--ts-lead-ls);text-transform:var(--ts-lead-case);font-family:var(--ts-lead-font)}
|
|
1303
|
+
.ui-section--alt{background:var(--p)}
|
|
1304
|
+
.ui-cols{display:grid;gap:20px}
|
|
1305
|
+
@container (min-width:640px){.ui-cols--2,.ui-cols--3,.ui-cols--4{grid-template-columns:repeat(2,minmax(0,1fr))}}
|
|
1306
|
+
@container (min-width:900px){.ui-cols--3{grid-template-columns:repeat(3,minmax(0,1fr))}.ui-cols--4{grid-template-columns:repeat(4,minmax(0,1fr))}}
|
|
1307
|
+
.ui-mk-card{display:grid;align-content:start;gap:10px;min-width:0;padding:22px;background:var(--mk-card-bg);border:1px solid var(--l);border-radius:var(--r-lg,13px)}
|
|
1308
|
+
.ui-mk-card h3{margin:0;font-size:var(--ts-h3-size);font-weight:var(--ts-h3-weight);line-height:var(--ts-h3-lh);letter-spacing:var(--ts-h3-ls);text-transform:var(--ts-h3-case);font-family:var(--ts-h3-font)}
|
|
1309
|
+
.ui-mk-card p{margin:0;color:var(--i2);line-height:1.55}
|
|
1310
|
+
.ui-feature-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:var(--r-md,10px);color:var(--on-fill);background:var(--fill)}
|
|
1311
|
+
.ui-feature-icon svg{width:22px;height:22px}
|
|
1312
|
+
/* an image's place, drawn from the theme until a real picture goes in */
|
|
1313
|
+
.ui-media{display:grid;place-items:center;min-height:120px;aspect-ratio:16/10;border-radius:var(--r-lg,13px);color:var(--i3);font-size:var(--ts-caption-size);background:linear-gradient(135deg,color-mix(in srgb,var(--pos) 22%,var(--mid)),var(--mid) 55%,color-mix(in srgb,var(--fill) 35%,var(--mid)));font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1314
|
+
.ui-media--square{aspect-ratio:1}
|
|
1315
|
+
/* ── end ui-section ── */
|
|
1316
|
+
|
|
1317
|
+
/* ── ui-sitenav ── */
|
|
1318
|
+
/* a site header: brand, links, actions; under 760px of its own width the links fold into a menu button */
|
|
1319
|
+
.ui-sitenav{container-type:inline-size;position:relative;background:var(--sitenav-bg);border-bottom:1px solid var(--l)}
|
|
1320
|
+
.ui-sitenav-bar{display:flex;align-items:center;gap:20px;max-width:var(--section-max);height:64px;margin:0 auto;padding:0 20px}
|
|
1321
|
+
.ui-sitenav-brand{display:flex;align-items:center;gap:9px;font-weight:800;letter-spacing:-.01em;color:var(--i);text-decoration:none}
|
|
1322
|
+
.ui-sitenav-links{display:flex;gap:2px;margin:0;padding:0;list-style:none}
|
|
1323
|
+
.ui-sitenav-links a{display:block;padding:8px 12px;border-radius:var(--r-sm,8px);font-size:var(--ts-small-size);font-weight:600;color:var(--i2);text-decoration:none;line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1324
|
+
.ui-sitenav-links a:hover,.ui-sitenav-links a[aria-current="page"]{color:var(--i);background:var(--mid)}
|
|
1325
|
+
.ui-sitenav-links a:focus-visible,.ui-sitenav-toggle:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:2px}
|
|
1326
|
+
.ui-sitenav-actions{display:flex;gap:8px;margin-left:auto}
|
|
1327
|
+
.ui-sitenav-toggle{display:none}
|
|
1328
|
+
.ui-sitenav-panel{display:grid;gap:4px;padding:8px 16px 16px;border-top:1px solid var(--l)}
|
|
1329
|
+
.ui-sitenav-panel[hidden]{display:none}
|
|
1330
|
+
.ui-sitenav-panel a{padding:12px 8px;border-radius:var(--r-sm,8px);font-weight:600;color:var(--i);text-decoration:none}
|
|
1331
|
+
.ui-sitenav-panel a:hover{background:var(--mid)}
|
|
1332
|
+
@container (max-width:760px){.ui-sitenav-links,.ui-sitenav-actions{display:none}.ui-sitenav-toggle{display:inline-flex;margin-left:auto}}
|
|
1333
|
+
@container (min-width:761px){.ui-sitenav-panel{display:none!important}}
|
|
1334
|
+
/* ── end ui-sitenav ── */
|
|
1335
|
+
|
|
1336
|
+
/* ── ui-hero ── */
|
|
1337
|
+
.ui-hero{display:grid;gap:28px;align-items:center}
|
|
1338
|
+
.ui-hero-text{display:grid;gap:16px;justify-items:start}
|
|
1339
|
+
.ui-hero-title{margin:0;font-size:var(--hero-title-size);font-weight:var(--ts-display-weight);line-height:var(--ts-display-lh);letter-spacing:var(--ts-display-ls);text-transform:var(--ts-display-case);font-family:var(--ts-display-font)}
|
|
1340
|
+
.ui-hero-lead{margin:0;max-width:560px;font-size:calc(var(--ts-lead-size) * 1.1);color:var(--i2);font-weight:var(--ts-lead-weight);line-height:var(--ts-lead-lh);letter-spacing:var(--ts-lead-ls);text-transform:var(--ts-lead-case);font-family:var(--ts-lead-font)}
|
|
1341
|
+
.ui-hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
|
|
1342
|
+
.ui-hero--center{justify-items:center;text-align:center}
|
|
1343
|
+
.ui-hero--center .ui-hero-text{justify-items:center}
|
|
1344
|
+
@container (min-width:900px){.ui-hero--split{grid-template-columns:1.1fr 1fr}}
|
|
1345
|
+
@container (max-width:480px){.ui-hero-title{font-size:calc(var(--hero-title-size) * .72)}}
|
|
1346
|
+
/* ── end ui-hero ── */
|
|
1347
|
+
|
|
1348
|
+
/* ── ui-stats ── */
|
|
1349
|
+
.ui-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
|
|
1350
|
+
@container (min-width:760px){.ui-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}
|
|
1351
|
+
.ui-stat{display:grid;gap:4px;padding-left:16px;border-left:3px solid var(--stat-rule)}
|
|
1352
|
+
.ui-stat-value{font-size:var(--section-title-size);font-weight:800;letter-spacing:-.02em;color:var(--i);font-variant-numeric:proportional-nums}
|
|
1353
|
+
.ui-stat-label{font-weight:600;color:var(--i)}
|
|
1354
|
+
.ui-stat-note{font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1355
|
+
/* ── end ui-stats ── */
|
|
1356
|
+
|
|
1357
|
+
/* ── ui-logocloud ── */
|
|
1358
|
+
.ui-logocloud{display:grid;gap:18px;justify-items:center;text-align:center}
|
|
1359
|
+
.ui-logocloud p{margin:0;font-size:var(--ts-small-size);font-weight:600;color:var(--i2);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1360
|
+
.ui-logocloud ul{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:18px 34px;margin:0;padding:0;list-style:none;color:var(--i2)}
|
|
1361
|
+
.ui-logocloud li{display:flex;align-items:center;gap:8px;font-weight:700;font-size:var(--ts-lead-size)}
|
|
1362
|
+
/* ── end ui-logocloud ── */
|
|
1363
|
+
|
|
1364
|
+
/* ── ui-quote ── */
|
|
1365
|
+
.ui-quote{display:grid;gap:18px;margin:0;padding:24px;background:var(--mk-card-bg);border:1px solid var(--l);border-radius:var(--r-lg,13px)}
|
|
1366
|
+
.ui-quote blockquote{position:relative;margin:0;padding-top:28px;font-size:calc(var(--ts-lead-size) * 1.05);line-height:1.55;color:var(--i)}
|
|
1367
|
+
.ui-quote blockquote::before{content:"\201C";position:absolute;top:-14px;left:-2px;font:800 3.6rem/1 Georgia,serif;color:var(--quote-mark)}
|
|
1368
|
+
.ui-quote figcaption{display:flex;align-items:center;gap:12px}
|
|
1369
|
+
.ui-quote figcaption span{display:grid;font-size:var(--ts-small-size);color:var(--i2)}
|
|
1370
|
+
.ui-quote figcaption strong{color:var(--i)}
|
|
1371
|
+
.ui-quote--large blockquote{font-size:var(--ts-h2-size);font-weight:600;letter-spacing:-.01em}
|
|
1372
|
+
/* ── end ui-quote ── */
|
|
1373
|
+
|
|
1374
|
+
/* ── ui-person ── */
|
|
1375
|
+
.ui-person{display:grid;gap:10px;min-width:0;text-align:left}
|
|
1376
|
+
.ui-person h3{margin:4px 0 0;font-size:var(--ts-h3-size);font-weight:var(--ts-h3-weight);line-height:var(--ts-h3-lh);letter-spacing:var(--ts-h3-ls);text-transform:var(--ts-h3-case);font-family:var(--ts-h3-font)}
|
|
1377
|
+
.ui-person p{margin:0;font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1378
|
+
.ui-person .ui-person-role{color:var(--eyebrow-fg);font-weight:600}
|
|
1379
|
+
/* ── end ui-person ── */
|
|
1380
|
+
|
|
1381
|
+
/* ── ui-post ── */
|
|
1382
|
+
.ui-post{display:grid;gap:12px;min-width:0;color:inherit;text-decoration:none}
|
|
1383
|
+
.ui-post-meta{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:var(--ts-caption-size);color:var(--i2);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1384
|
+
.ui-post h3{margin:0;font-size:var(--ts-h3-size);font-weight:var(--ts-h3-weight);line-height:var(--ts-h3-lh);letter-spacing:var(--ts-h3-ls);text-transform:var(--ts-h3-case);font-family:var(--ts-h3-font)}
|
|
1385
|
+
.ui-post p{margin:0;color:var(--i2);line-height:1.55}
|
|
1386
|
+
.ui-post:hover h3{text-decoration:underline;text-underline-offset:3px}
|
|
1387
|
+
.ui-post:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:4px;border-radius:var(--r-lg,13px)}
|
|
1388
|
+
/* ── end ui-post ── */
|
|
1389
|
+
|
|
1390
|
+
/* ── ui-jobs ── */
|
|
1391
|
+
.ui-jobs{display:grid;margin:0;padding:0;list-style:none;border-top:1px solid var(--l)}
|
|
1392
|
+
.ui-job{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:18px 0;border-bottom:1px solid var(--l)}
|
|
1393
|
+
.ui-job-title{flex:1 1 240px;min-width:0;display:grid;gap:4px}
|
|
1394
|
+
.ui-job-title a{font-weight:700;color:var(--i);text-decoration:none}
|
|
1395
|
+
.ui-job-title a:hover{text-decoration:underline;text-underline-offset:3px}
|
|
1396
|
+
.ui-job-title a:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:2px}
|
|
1397
|
+
.ui-job-title span{font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1398
|
+
.ui-job-tags{display:flex;flex-wrap:wrap;gap:6px}
|
|
1399
|
+
/* ── end ui-jobs ── */
|
|
1400
|
+
|
|
1401
|
+
/* ── ui-faq ── */
|
|
1402
|
+
/* native <details>: no script, the keyboard and screen readers already know it */
|
|
1403
|
+
.ui-faq{display:grid;border-top:1px solid var(--l)}
|
|
1404
|
+
.ui-faq details{border-bottom:1px solid var(--l)}
|
|
1405
|
+
.ui-faq summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 2px;font-weight:700;color:var(--i);cursor:pointer;list-style:none}
|
|
1406
|
+
.ui-faq summary::-webkit-details-marker{display:none}
|
|
1407
|
+
.ui-faq summary::after{content:"";flex:none;width:9px;height:9px;border-right:2px solid var(--i2);border-bottom:2px solid var(--i2);transform:rotate(45deg);transition:transform var(--btn-dur) ease}
|
|
1408
|
+
.ui-faq details[open] summary::after{transform:rotate(-135deg)}
|
|
1409
|
+
.ui-faq summary:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:2px;border-radius:4px}
|
|
1410
|
+
.ui-faq details > div{padding:0 2px 18px;color:var(--i2);line-height:1.6}
|
|
1411
|
+
/* ── end ui-faq ── */
|
|
1412
|
+
|
|
1413
|
+
/* ── ui-pricing ── */
|
|
1414
|
+
.ui-plans{display:grid;gap:18px;align-items:stretch}
|
|
1415
|
+
@container (min-width:760px){.ui-plans{grid-template-columns:repeat(3,minmax(0,1fr))}}
|
|
1416
|
+
.ui-plan{display:grid;grid-template-rows:auto auto auto 1fr auto;gap:14px;min-width:0;padding:24px;background:var(--mk-card-bg);border:1px solid var(--l);border-radius:var(--r-lg,13px)}
|
|
1417
|
+
.ui-plan--featured{border:2px solid var(--plan-featured);box-shadow:var(--shadow-lg)}
|
|
1418
|
+
.ui-plan h3{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;font-size:var(--ts-h3-size);font-weight:var(--ts-h3-weight);line-height:var(--ts-h3-lh);letter-spacing:var(--ts-h3-ls);text-transform:var(--ts-h3-case);font-family:var(--ts-h3-font)}
|
|
1419
|
+
.ui-plan-price{display:flex;align-items:baseline;gap:6px}
|
|
1420
|
+
.ui-plan-price strong{font-size:2.4rem;font-weight:800;letter-spacing:-.03em;color:var(--i)}
|
|
1421
|
+
.ui-plan-price span{color:var(--i2)}
|
|
1422
|
+
.ui-plan > p{margin:0;color:var(--i2)}
|
|
1423
|
+
.ui-plan ul{display:grid;align-content:start;gap:10px;margin:0;padding:0;list-style:none;color:var(--i)}
|
|
1424
|
+
.ui-plan li{display:flex;gap:10px;align-items:flex-start}
|
|
1425
|
+
.ui-plan li::before{content:"";flex:none;width:12px;height:7px;margin-top:6px;border-left:2px solid var(--plan-check);border-bottom:2px solid var(--plan-check);transform:rotate(-45deg)}
|
|
1426
|
+
.ui-plan .ui-btn{width:100%}
|
|
1427
|
+
/* ── end ui-pricing ── */
|
|
1428
|
+
|
|
1429
|
+
/* ── ui-cta-band ── */
|
|
1430
|
+
.ui-cta-band{display:grid;gap:18px;padding:40px 28px;text-align:center;justify-items:center;color:var(--ctaband-fg);background:var(--ctaband-bg);border-radius:var(--r-lg,13px)}
|
|
1431
|
+
.ui-cta-band h2{margin:0;font-size:var(--section-title-size);font-weight:800;letter-spacing:-.02em;line-height:1.15}
|
|
1432
|
+
.ui-cta-band p{margin:0;max-width:560px;font-size:var(--ts-lead-size);opacity:.85;font-weight:var(--ts-lead-weight);line-height:var(--ts-lead-lh);letter-spacing:var(--ts-lead-ls);text-transform:var(--ts-lead-case);font-family:var(--ts-lead-font)}
|
|
1433
|
+
.ui-cta-band .ui-btn{--btn-secondary-bg:transparent;--btn-secondary-fg:var(--ctaband-fg);--btn-secondary-border:color-mix(in srgb,var(--ctaband-fg) 50%,transparent);--btn-secondary-bg-hover:color-mix(in srgb,var(--ctaband-fg) 12%,transparent)}
|
|
1434
|
+
.ui-cta-band .ui-btn--primary{--btn-primary-bg:var(--ctaband-fg);--btn-primary-fg:var(--ctaband-bg);--btn-primary-border:var(--ctaband-fg);--btn-primary-bg-hover:color-mix(in srgb,var(--ctaband-fg) 88%,var(--ctaband-bg))}
|
|
1435
|
+
.ui-cta-band .ui-hero-actions{justify-content:center}
|
|
1436
|
+
/* ── end ui-cta-band ── */
|
|
1437
|
+
|
|
1438
|
+
/* ── ui-newsletter ── */
|
|
1439
|
+
.ui-newsletter{display:grid;gap:18px;align-items:center}
|
|
1440
|
+
@container (min-width:760px){.ui-newsletter{grid-template-columns:1fr minmax(0,420px)}}
|
|
1441
|
+
.ui-newsletter form{display:grid;gap:8px}
|
|
1442
|
+
.ui-newsletter-row{display:flex;flex-wrap:wrap;gap:8px}
|
|
1443
|
+
.ui-newsletter-row .ui-input{flex:1 1 200px;width:auto}
|
|
1444
|
+
.ui-newsletter small{font-size:var(--ts-caption-size);color:var(--i2);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1445
|
+
/* ── end ui-newsletter ── */
|
|
1446
|
+
|
|
1447
|
+
/* ── ui-contact ── */
|
|
1448
|
+
.ui-contact{display:grid;gap:28px}
|
|
1449
|
+
@container (min-width:860px){.ui-contact{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}}
|
|
1450
|
+
.ui-contact-ways{display:grid;gap:20px;margin:0;padding:0;list-style:none}
|
|
1451
|
+
.ui-contact-ways li{display:grid;grid-template-columns:auto 1fr;gap:2px 14px}
|
|
1452
|
+
.ui-contact-ways .ui-feature-icon{grid-row:span 2;width:40px;height:40px}
|
|
1453
|
+
.ui-contact-ways strong{color:var(--i)}
|
|
1454
|
+
.ui-contact-ways span,.ui-contact-ways a{color:var(--i2)}
|
|
1455
|
+
.ui-contact form{display:grid;gap:14px}
|
|
1456
|
+
.ui-contact-2{display:grid;gap:14px}
|
|
1457
|
+
@container (min-width:520px){.ui-contact-2{grid-template-columns:repeat(2,minmax(0,1fr))}}
|
|
1458
|
+
/* ── end ui-contact ── */
|
|
1459
|
+
|
|
1460
|
+
/* ── ui-prose ── */
|
|
1461
|
+
/* long-form text: a readable measure and rhythm for the elements an article uses */
|
|
1462
|
+
.ui-prose{max-width:68ch;color:var(--i2);font-size:var(--ts-lead-size);line-height:1.75;font-weight:var(--ts-lead-weight);letter-spacing:var(--ts-lead-ls);text-transform:var(--ts-lead-case);font-family:var(--ts-lead-font)}
|
|
1463
|
+
.ui-prose > * + *{margin-top:1.1em}
|
|
1464
|
+
.ui-prose h2,.ui-prose h3{margin-top:1.8em;color:var(--i);line-height:1.25;letter-spacing:-.01em}
|
|
1465
|
+
.ui-prose h2{font-size:var(--ts-h2-size);font-weight:var(--ts-h2-weight);line-height:var(--ts-h2-lh);letter-spacing:var(--ts-h2-ls);text-transform:var(--ts-h2-case);font-family:var(--ts-h2-font)}.ui-prose h3{font-size:var(--ts-h3-size);font-weight:var(--ts-h3-weight);line-height:var(--ts-h3-lh);letter-spacing:var(--ts-h3-ls);text-transform:var(--ts-h3-case);font-family:var(--ts-h3-font)}
|
|
1466
|
+
.ui-prose p,.ui-prose ul,.ui-prose ol,.ui-prose blockquote,.ui-prose figure{margin-bottom:0}
|
|
1467
|
+
.ui-prose a{color:var(--i);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--pos)}
|
|
1468
|
+
.ui-prose strong{color:var(--i)}
|
|
1469
|
+
.ui-prose ul,.ui-prose ol{padding-left:1.3em}
|
|
1470
|
+
.ui-prose li + li{margin-top:.4em}
|
|
1471
|
+
.ui-prose blockquote{margin-left:0;padding-left:18px;border-left:3px solid var(--quote-mark);font-style:italic;color:var(--i)}
|
|
1472
|
+
.ui-prose figure{margin-left:0;margin-right:0}
|
|
1473
|
+
.ui-prose figcaption{margin-top:8px;font-size:var(--ts-caption-size);color:var(--i2);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1474
|
+
/* ── end ui-prose ── */
|
|
1475
|
+
|
|
1476
|
+
/* ── ui-footer ── */
|
|
1477
|
+
.ui-footer{container-type:inline-size;padding:48px 20px 28px;color:var(--footer-fg);background:var(--footer-bg)}
|
|
1478
|
+
.ui-footer-inner{display:grid;gap:32px;max-width:var(--section-max);margin:0 auto}
|
|
1479
|
+
.ui-footer-top{display:grid;gap:28px}
|
|
1480
|
+
@container (min-width:760px){.ui-footer-top{grid-template-columns:1.3fr repeat(3,minmax(0,1fr))}}
|
|
1481
|
+
.ui-footer-brand{display:grid;gap:10px;align-content:start}
|
|
1482
|
+
.ui-footer-brand strong{font-size:var(--ts-h3-size)}
|
|
1483
|
+
.ui-footer-brand p,.ui-footer small{margin:0;color:var(--footer-muted)}
|
|
1484
|
+
.ui-footer h2{margin:0 0 10px;color:var(--footer-muted);font-size:var(--ts-eyebrow-size);font-weight:var(--ts-eyebrow-weight);line-height:var(--ts-eyebrow-lh);letter-spacing:var(--ts-eyebrow-ls);text-transform:var(--ts-eyebrow-case);font-family:var(--ts-eyebrow-font)}
|
|
1485
|
+
.ui-footer ul{display:grid;gap:8px;margin:0;padding:0;list-style:none}
|
|
1486
|
+
.ui-footer a{color:var(--footer-fg);text-decoration:none}
|
|
1487
|
+
.ui-footer a:hover{text-decoration:underline;text-underline-offset:3px}
|
|
1488
|
+
.ui-footer a:focus-visible{outline:2px solid var(--footer-fg);outline-offset:2px;border-radius:2px}
|
|
1489
|
+
.ui-footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;padding-top:20px;border-top:1px solid color-mix(in srgb,var(--footer-fg) 18%,transparent)}
|
|
1490
|
+
/* ── end ui-footer ── */
|
|
1491
|
+
|
|
1492
|
+
/* ── ui-auth ── */
|
|
1493
|
+
/* a sign-in or sign-up card: brand, heading, fields, one main action; password rules shown as they are met */
|
|
1494
|
+
.ui-auth{display:grid;gap:18px;width:min(400px,100%);margin:0 auto;padding:28px 24px;background:var(--p);border:1px solid var(--l);border-radius:var(--r-lg,13px);box-shadow:var(--shadow-sm)}
|
|
1495
|
+
.ui-auth-head{display:grid;gap:6px;justify-items:center;text-align:center}
|
|
1496
|
+
.ui-auth-head h1{margin:6px 0 0;font-size:var(--ts-h2-size);font-weight:var(--ts-h2-weight);line-height:var(--ts-h2-lh);letter-spacing:var(--ts-h2-ls);text-transform:var(--ts-h2-case);font-family:var(--ts-h2-font)}
|
|
1497
|
+
.ui-auth-head p{margin:0;color:var(--i2)}
|
|
1498
|
+
.ui-auth form{display:grid;gap:14px}
|
|
1499
|
+
.ui-auth .ui-btn{width:100%}
|
|
1500
|
+
.ui-auth-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;font-size:var(--ts-small-size);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1501
|
+
.ui-auth-foot{margin:0;text-align:center;font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1502
|
+
.ui-auth a{color:var(--i);font-weight:600;text-underline-offset:3px}
|
|
1503
|
+
.ui-password{position:relative}
|
|
1504
|
+
.ui-password .ui-input{padding-right:76px}
|
|
1505
|
+
.ui-password button{position:absolute;right:4px;top:50%;transform:translateY(-50%);height:calc(var(--input-h) - 8px);padding:0 10px;font-size:var(--ts-caption-size);font-weight:600;color:var(--i2);background:transparent;border:0;border-radius:var(--r-sm,8px);cursor:pointer;line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1506
|
+
.ui-password button:hover{background:var(--mid);color:var(--i)}
|
|
1507
|
+
.ui-password button:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:0}
|
|
1508
|
+
.ui-rules{display:grid;gap:6px;margin:0;padding:0;list-style:none;font-size:var(--ts-caption-size);color:var(--i2);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1509
|
+
.ui-rules li{display:flex;align-items:center;gap:8px}
|
|
1510
|
+
.ui-rules li::before{content:"";flex:none;width:14px;height:14px;border-radius:50%;border:1.5px solid var(--input-border)}
|
|
1511
|
+
.ui-rules li[data-met]{color:var(--i)}
|
|
1512
|
+
.ui-rules li[data-met]::before{border-color:var(--steps-done-bg);background:var(--steps-done-bg)}
|
|
1513
|
+
/* ── end ui-auth ── */
|
|
1514
|
+
|
|
1515
|
+
/* ── ui-toc ── */
|
|
1516
|
+
/* a table of contents beside long text; the section in view is marked aria-current="true" */
|
|
1517
|
+
.ui-toc{display:grid;gap:2px;align-content:start;font-size:var(--ts-small-size);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1518
|
+
.ui-toc h2{margin:0 0 6px;color:var(--i2);font-size:var(--ts-eyebrow-size);font-weight:var(--ts-eyebrow-weight);line-height:var(--ts-eyebrow-lh);letter-spacing:var(--ts-eyebrow-ls);text-transform:var(--ts-eyebrow-case);font-family:var(--ts-eyebrow-font)}
|
|
1519
|
+
.ui-toc a{display:block;padding:6px 10px;border-left:2px solid var(--l);color:var(--i2);text-decoration:none}
|
|
1520
|
+
.ui-toc a:hover{color:var(--i)}
|
|
1521
|
+
.ui-toc a[aria-current="true"]{color:var(--i);border-left-color:var(--steps-current);font-weight:600}
|
|
1522
|
+
.ui-toc a:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:2px}
|
|
1523
|
+
/* ── end ui-toc ── */
|
|
1524
|
+
|
|
1525
|
+
/* ── ui-banner ── */
|
|
1526
|
+
/* an announcement across the top of a page or section; a close button ([data-ui-banner-close]) hides it */
|
|
1527
|
+
.ui-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 14px;padding:10px 48px 10px 16px;position:relative;font-size:var(--ts-small-size);text-align:center;color:var(--banner-fg);background:var(--banner-bg);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1528
|
+
.ui-banner a{color:inherit;font-weight:700;text-underline-offset:3px}
|
|
1529
|
+
.ui-banner a:focus-visible,.ui-banner-close:focus-visible{outline:2px solid currentColor;outline-offset:2px;border-radius:3px}
|
|
1530
|
+
.ui-banner-close{position:absolute;right:8px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:30px;height:30px;padding:0;color:inherit;background:transparent;border:0;border-radius:var(--r-sm,8px);cursor:pointer}
|
|
1531
|
+
.ui-banner-close:hover{background:color-mix(in srgb,currentColor 14%,transparent)}
|
|
1532
|
+
.ui-banner-close svg{width:16px;height:16px}
|
|
1533
|
+
.ui-banner--fill{color:var(--on-fill);background:var(--fill)}
|
|
1534
|
+
.ui-banner--subtle{color:var(--i);background:var(--mid);border-bottom:1px solid var(--l)}
|
|
1535
|
+
.ui-banner--card{justify-content:flex-start;text-align:left;padding:16px 52px 16px 18px;border-radius:var(--r-lg,13px)}
|
|
1536
|
+
/* ── end ui-banner ── */
|
|
1537
|
+
|
|
1538
|
+
/* ── ui-device ── */
|
|
1539
|
+
/* frames for showing work: a browser window, a laptop and a phone; put an image or any content inside */
|
|
1540
|
+
.ui-device{position:relative;min-width:0;margin:0}
|
|
1541
|
+
.ui-device-screen{display:grid;overflow:hidden;background:var(--s)}
|
|
1542
|
+
.ui-device-screen > img{display:block;width:100%;height:100%;object-fit:cover;object-position:top}
|
|
1543
|
+
.ui-device--browser{border:1px solid var(--l);border-radius:var(--r-md,10px);overflow:hidden;background:var(--p);box-shadow:var(--shadow-lg)}
|
|
1544
|
+
.ui-device-chrome{display:flex;align-items:center;gap:6px;height:30px;padding:0 10px;background:var(--mid);border-bottom:1px solid var(--l)}
|
|
1545
|
+
.ui-device-chrome i{width:9px;height:9px;border-radius:50%;background:var(--i3);opacity:.5}
|
|
1546
|
+
.ui-device-chrome span{flex:1;margin-left:8px;height:16px;max-width:240px;border-radius:999px;background:var(--p)}
|
|
1547
|
+
.ui-device--browser .ui-device-screen{aspect-ratio:16/10}
|
|
1548
|
+
.ui-device--laptop .ui-device-screen{aspect-ratio:16/10;border:10px solid var(--device-body);border-bottom-width:14px;border-radius:12px 12px 0 0}
|
|
1549
|
+
.ui-device--laptop::after{content:"";display:block;height:12px;margin:0 -7%;background:var(--device-body);border-radius:0 0 10px 10px;box-shadow:0 8px 18px -10px rgba(0,0,0,.6)}
|
|
1550
|
+
.ui-device--phone{width:min(240px,100%)}
|
|
1551
|
+
.ui-device--phone .ui-device-screen{aspect-ratio:9/19.5;border:9px solid var(--device-body);border-radius:34px}
|
|
1552
|
+
.ui-device--phone::before{content:"";position:absolute;z-index:1;top:16px;left:50%;width:64px;height:16px;margin-left:-32px;border-radius:999px;background:var(--device-body)}
|
|
1553
|
+
.ui-device figcaption{margin-top:12px;font-size:var(--ts-caption-size);text-align:center;color:var(--i2);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1554
|
+
/* ── end ui-device ── */
|
|
1555
|
+
|
|
1556
|
+
/* ── ui-annot ── */
|
|
1557
|
+
/* design annotations: numbered pins on a picture, each matched to a note; pins are buttons that show their note */
|
|
1558
|
+
.ui-annot{display:grid;gap:16px;min-width:0}
|
|
1559
|
+
.ui-annot{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr))}
|
|
1560
|
+
.ui-annot-canvas{position:relative;min-width:0}
|
|
1561
|
+
.ui-annot-pin{position:absolute;display:grid;place-items:center;width:26px;height:26px;margin:-13px 0 0 -13px;padding:0;font:700 .78rem/1 inherit;color:var(--annot-fg);background:var(--annot-bg);border:2px solid var(--p);border-radius:50%;box-shadow:var(--shadow-md);cursor:pointer}
|
|
1562
|
+
.ui-annot-pin[aria-pressed="true"]{outline:3px solid var(--annot-bg);outline-offset:2px}
|
|
1563
|
+
.ui-annot-pin:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:2px}
|
|
1564
|
+
.ui-annot-notes{display:grid;gap:10px;margin:0;padding:0;list-style:none;counter-reset:annot}
|
|
1565
|
+
.ui-annot-notes li{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;padding:10px 12px;border:1px solid var(--l);border-radius:var(--r-md,10px);background:var(--p);counter-increment:annot}
|
|
1566
|
+
.ui-annot-notes li::before{content:counter(annot);grid-row:span 2;display:grid;place-items:center;width:22px;height:22px;font:700 .72rem/1 inherit;color:var(--annot-fg);background:var(--annot-bg);border-radius:50%}
|
|
1567
|
+
.ui-annot-notes li[data-active]{border-color:var(--annot-bg);box-shadow:0 0 0 1px var(--annot-bg)}
|
|
1568
|
+
.ui-annot-notes strong{color:var(--i)}
|
|
1569
|
+
.ui-annot-notes span{font-size:var(--ts-small-size);color:var(--i2);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1570
|
+
/* a spec line: a measured distance between two edges */
|
|
1571
|
+
.ui-annot-spec{position:absolute;display:flex;align-items:center;justify-content:center;border:0 dashed var(--annot-bg);font:600 .7rem/1 ui-monospace,monospace;color:var(--annot-bg)}
|
|
1572
|
+
.ui-annot-spec--h{height:0;border-top-width:1.5px}
|
|
1573
|
+
.ui-annot-spec--v{width:0;border-left-width:1.5px}
|
|
1574
|
+
.ui-annot-spec span{padding:2px 5px;background:var(--p);border-radius:4px}
|
|
1575
|
+
/* ── end ui-annot ── */
|
|
1576
|
+
|
|
1577
|
+
/* ── ui-motion ── */
|
|
1578
|
+
/* motion.js reveals: an element waiting to reveal is hidden only once the script is running (html.ui-motion-ready),
|
|
1579
|
+
and never under Still or the device's reduce-motion setting, so nothing can stay invisible */
|
|
1580
|
+
html.ui-motion-ready:not([data-motion="still"]) [data-reveal]:not([data-revealed]):not([data-reveal-trigger="hover"]){opacity:0}
|
|
1581
|
+
@media (prefers-reduced-motion:reduce){html.ui-motion-ready [data-reveal]:not([data-revealed]){opacity:1}}
|
|
1582
|
+
/* split text: each piece in a clipping box, so a line or word can rise into view */
|
|
1583
|
+
.ui-split{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}
|
|
1584
|
+
.ui-split-in{display:inline-block}
|
|
1585
|
+
/* ── end ui-motion ── */
|
|
1586
|
+
|
|
1587
|
+
/* Type styles as classes: .ui-t-<style> gives any element one of the kit's ten styles (tokens.css --ts-*) */
|
|
1588
|
+
.ui-t-display{font-size:var(--ts-display-size);font-weight:var(--ts-display-weight);line-height:var(--ts-display-lh);letter-spacing:var(--ts-display-ls);text-transform:var(--ts-display-case);font-family:var(--ts-display-font)}
|
|
1589
|
+
.ui-t-h1{font-size:var(--ts-h1-size);font-weight:var(--ts-h1-weight);line-height:var(--ts-h1-lh);letter-spacing:var(--ts-h1-ls);text-transform:var(--ts-h1-case);font-family:var(--ts-h1-font)}
|
|
1590
|
+
.ui-t-h2{font-size:var(--ts-h2-size);font-weight:var(--ts-h2-weight);line-height:var(--ts-h2-lh);letter-spacing:var(--ts-h2-ls);text-transform:var(--ts-h2-case);font-family:var(--ts-h2-font)}
|
|
1591
|
+
.ui-t-h3{font-size:var(--ts-h3-size);font-weight:var(--ts-h3-weight);line-height:var(--ts-h3-lh);letter-spacing:var(--ts-h3-ls);text-transform:var(--ts-h3-case);font-family:var(--ts-h3-font)}
|
|
1592
|
+
.ui-t-lead{font-size:var(--ts-lead-size);font-weight:var(--ts-lead-weight);line-height:var(--ts-lead-lh);letter-spacing:var(--ts-lead-ls);text-transform:var(--ts-lead-case);font-family:var(--ts-lead-font)}
|
|
1593
|
+
.ui-t-body{font-size:var(--ts-body-size);font-weight:var(--ts-body-weight);line-height:var(--ts-body-lh);letter-spacing:var(--ts-body-ls);text-transform:var(--ts-body-case);font-family:var(--ts-body-font)}
|
|
1594
|
+
.ui-t-small{font-size:var(--ts-small-size);font-weight:var(--ts-small-weight);line-height:var(--ts-small-lh);letter-spacing:var(--ts-small-ls);text-transform:var(--ts-small-case);font-family:var(--ts-small-font)}
|
|
1595
|
+
.ui-t-caption{font-size:var(--ts-caption-size);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);letter-spacing:var(--ts-caption-ls);text-transform:var(--ts-caption-case);font-family:var(--ts-caption-font)}
|
|
1596
|
+
.ui-t-label{font-size:var(--ts-label-size);font-weight:var(--ts-label-weight);line-height:var(--ts-label-lh);letter-spacing:var(--ts-label-ls);text-transform:var(--ts-label-case);font-family:var(--ts-label-font)}
|
|
1597
|
+
.ui-t-eyebrow{font-size:var(--ts-eyebrow-size);font-weight:var(--ts-eyebrow-weight);line-height:var(--ts-eyebrow-lh);letter-spacing:var(--ts-eyebrow-ls);text-transform:var(--ts-eyebrow-case);font-family:var(--ts-eyebrow-font)}
|
|
1598
|
+
|
|
1599
|
+
/* ── ui-viz: the kit's charts (charts.js + charts-core.mjs draw them; React: Chart.jsx). Structure only: colors are
|
|
1600
|
+
the series (--series-1..5), the primary (--chart-line) or a tone; fills sit 2px apart in the card's color. ── */
|
|
1601
|
+
.ui-viz{position:relative;display:grid;gap:10px;min-width:0;margin:0;--viz-h:220px}
|
|
1602
|
+
.ui-viz--spark{--viz-h:40px;gap:0}
|
|
1603
|
+
.ui-viz--bar,.ui-viz--line,.ui-viz--area{--viz-h:220px}
|
|
1604
|
+
.ui-viz--horizontal{--viz-h:200px}
|
|
1605
|
+
.ui-viz--donut,.ui-viz--pie,.ui-viz--ring{justify-items:center}.ui-viz--donut .ui-viz-legend,.ui-viz--pie .ui-viz-legend{justify-content:center}
|
|
1606
|
+
.ui-viz--meter{gap:8px}
|
|
1607
|
+
.ui-viz--gauge{justify-items:center}.ui-viz--heatmap,.ui-viz--funnel{gap:8px}
|
|
1608
|
+
.ui-viz-round--gauge{margin:0 auto}.ui-viz-middle--gauge{place-content:end center;padding-bottom:2px}
|
|
1609
|
+
.ui-viz-cell{transition:opacity var(--dur-fast,120ms) ease}.ui-viz-plot:hover .ui-viz-cell:not(:hover){opacity:.7}
|
|
1610
|
+
.ui-viz-tick--strong{fill:var(--i2);font-weight:600}
|
|
1611
|
+
.ui-viz-ramp{display:flex;align-items:center;gap:4px;font-size:var(--ts-caption-size);color:var(--i3)}
|
|
1612
|
+
.ui-viz-ramp i{width:16px;height:10px;border-radius:2px}.ui-viz-ramp span:first-child{margin-right:4px}.ui-viz-ramp span:last-child{margin-left:4px}
|
|
1613
|
+
.ui-viz-plot{position:relative;min-width:0}
|
|
1614
|
+
.ui-viz-svg{display:block;max-width:100%;overflow:visible}
|
|
1615
|
+
.ui-viz-grid{stroke:var(--chart-grid);stroke-width:1}
|
|
1616
|
+
.ui-viz-tick{fill:var(--i3);font-family:var(--ts-caption-font);font-size:var(--ts-caption-size);font-weight:var(--ts-caption-weight)}
|
|
1617
|
+
.ui-viz-line{stroke-width:var(--chart-stroke);stroke-linejoin:round;stroke-linecap:round}
|
|
1618
|
+
.ui-viz--spark .ui-viz-line{stroke-width:calc(var(--chart-stroke) * .9)}
|
|
1619
|
+
.ui-viz-area{opacity:calc(var(--chart-area-opacity) * 1.6)}
|
|
1620
|
+
.ui-viz-track{stroke:var(--mid)}
|
|
1621
|
+
.ui-viz-trackbar{fill:var(--mid)}
|
|
1622
|
+
.ui-viz-cross{stroke:var(--i3);stroke-width:1;stroke-dasharray:3 3;pointer-events:none}
|
|
1623
|
+
.ui-viz-cross[hidden]{display:none}
|
|
1624
|
+
.ui-viz-plot:hover .ui-viz-bar:not(:hover),.ui-viz-plot:hover .ui-viz-seg:not(:hover),.ui-viz-plot:hover .ui-viz-sweep:not(:hover){opacity:.62}
|
|
1625
|
+
.ui-viz-mark{transition:opacity var(--dur-fast,120ms) ease}
|
|
1626
|
+
.ui-viz-round{position:relative;margin:0 auto}
|
|
1627
|
+
.ui-viz-middle{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:2px;text-align:center;pointer-events:none}
|
|
1628
|
+
.ui-viz-middle strong{font-size:var(--ts-h2-size);font-weight:var(--ts-h2-weight);line-height:1;letter-spacing:var(--ts-h2-ls);color:var(--i);font-variant-numeric:tabular-nums}
|
|
1629
|
+
.ui-viz-middle span{font-size:var(--ts-caption-size);color:var(--i3)}
|
|
1630
|
+
.ui-viz-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;list-style:none;font-size:var(--ts-caption-size);font-weight:var(--ts-caption-weight);line-height:var(--ts-caption-lh);color:var(--i2)}
|
|
1631
|
+
.ui-viz-legend li{display:flex;align-items:center;gap:6px}
|
|
1632
|
+
.ui-viz-key{flex:none;width:10px;height:10px;border-radius:3px}
|
|
1633
|
+
.ui-viz-tip{position:absolute;z-index:2;padding:4px 8px;font-size:var(--ts-caption-size);font-weight:600;line-height:var(--ts-caption-lh);white-space:nowrap;color:var(--tooltip-fg);background:var(--tooltip-bg);border-radius:var(--tooltip-radius);box-shadow:var(--shadow-md);pointer-events:none}
|
|
1634
|
+
.ui-viz-error{margin:0;padding:12px;border:1px dashed var(--neg);border-radius:var(--r-sm,8px);font-size:var(--ts-small-size);color:var(--neg)}
|
|
1635
|
+
|
|
1636
|
+
/* ── ui-compare: two (or more) values against each other; the first is the one that matters (primary), the rest
|
|
1637
|
+
are the baseline (dim ink). The difference is written out, never only drawn. ── */
|
|
1638
|
+
.ui-compare{display:grid;gap:10px;min-width:0}
|
|
1639
|
+
.ui-compare-row{display:grid;grid-template-columns:minmax(80px,auto) minmax(0,1fr) auto;align-items:center;gap:12px}
|
|
1640
|
+
.ui-compare-label{font-size:var(--ts-small-size);color:var(--i2)}
|
|
1641
|
+
.ui-compare-bar{height:10px;border-radius:999px;background:var(--mid);overflow:hidden}
|
|
1642
|
+
.ui-compare-bar > span{display:block;height:100%;width:var(--value,0%);border-radius:inherit;background:var(--i3)}
|
|
1643
|
+
.ui-compare-row:first-child .ui-compare-bar > span{background:var(--chart-line)}
|
|
1644
|
+
.ui-compare-value{font-weight:700;color:var(--i);font-variant-numeric:tabular-nums}
|
|
1645
|
+
.ui-compare-diff{margin:2px 0 0;font-size:var(--ts-caption-size);color:var(--i2)}
|
|
1646
|
+
/* ── ui-timeline: milestones in order; the dot and the words both say done, current or upcoming ── */
|
|
1647
|
+
.ui-timeline{display:grid;margin:0;padding:0;list-style:none}
|
|
1648
|
+
.ui-timeline-item{position:relative;display:grid;grid-template-columns:auto 1fr;gap:12px;padding:0 0 18px}
|
|
1649
|
+
.ui-timeline-item:not(:last-child)::before{content:"";position:absolute;left:5px;top:16px;bottom:0;width:2px;background:var(--l)}
|
|
1650
|
+
.ui-timeline-dot{width:12px;height:12px;margin-top:5px;border-radius:50%;border:2px solid var(--i3);background:var(--p);box-sizing:border-box}
|
|
1651
|
+
.ui-timeline-item[data-state="done"] .ui-timeline-dot{border-color:var(--good);background:var(--good)}
|
|
1652
|
+
.ui-timeline-item[data-state="current"] .ui-timeline-dot{border-color:var(--pos);background:var(--pos)}
|
|
1653
|
+
.ui-timeline-title{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;font-weight:600;color:var(--i)}
|
|
1654
|
+
.ui-timeline-text{margin:4px 0 2px;color:var(--i2)}
|
|
1655
|
+
.ui-timeline-time{font-size:var(--ts-caption-size);color:var(--i3)}
|
|
1656
|
+
/* ── ui-statgrid: a compact grid of figures for dashboards (marketing pages use ui-stats) ── */
|
|
1657
|
+
.ui-statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1px;margin:0;overflow:hidden;background:var(--l);border:1px solid var(--l);border-radius:var(--r-lg,13px)}
|
|
1658
|
+
.ui-statgrid > div{display:grid;gap:4px;align-content:start;padding:14px 16px;background:var(--p)}
|
|
1659
|
+
.ui-statgrid dt{font-size:var(--ts-caption-size);color:var(--i2)}
|
|
1660
|
+
.ui-statgrid dd{margin:0;font-size:var(--ts-h2-size);font-weight:700;line-height:1.1;color:var(--i);font-variant-numeric:tabular-nums}
|
|
1661
|
+
.ui-statgrid small{font-size:var(--ts-caption-size);color:var(--i3)}
|