@threelight/ui 0.2.0-alpha.1 → 0.3.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/css/base.css CHANGED
@@ -1,16 +1,19 @@
1
- @layer threelight.theme, threelight.primitives, threelight.utilities;
1
+ @layer threelight.theme, threelight.base, threelight.components, threelight.utilities;
2
2
 
3
3
  @layer threelight.theme {
4
4
  :where([data-tl-root]) {
5
- --tl-font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
6
- "Segoe UI", sans-serif;
7
- --tl-font-mono: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono",
5
+ --tl-font-sans:
6
+ "Hanken Grotesk", Inter, ui-sans-serif, system-ui, -apple-system,
7
+ BlinkMacSystemFont, "Segoe UI", sans-serif;
8
+ --tl-font-mono:
9
+ "IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono",
8
10
  monospace;
9
- --tl-font-size-display: 3rem;
10
- --tl-font-size-heading: 1.5rem;
11
- --tl-font-size-body: 1rem;
12
- --tl-font-size-caption: 0.875rem;
13
- --tl-font-size-metric: 2.5rem;
11
+
12
+ --tl-font-size-xs: 0.75rem;
13
+ --tl-font-size-sm: 0.8125rem;
14
+ --tl-font-size-md: 0.875rem;
15
+ --tl-font-size-lg: 1rem;
16
+ --tl-font-size-xl: 1.35rem;
14
17
 
15
18
  --tl-space-1: 0.25rem;
16
19
  --tl-space-2: 0.5rem;
@@ -19,43 +22,48 @@
19
22
  --tl-space-5: 1.25rem;
20
23
  --tl-space-6: 1.5rem;
21
24
  --tl-space-8: 2rem;
22
- --tl-space-10: 2.5rem;
23
-
24
- --tl-radius-sm: 4px;
25
- --tl-radius-md: 6px;
26
- --tl-radius-lg: 8px;
27
- --tl-shadow-sm: 0 1px 2px rgb(0 0 0 / 12%);
28
25
 
29
- --tl-color-canvas: #f8fafc;
26
+ --tl-radius-control: 0.375rem;
27
+ --tl-radius-card: 0.5rem;
28
+ --tl-radius-panel: 0.5rem;
29
+ --tl-shadow-card: 0 1px 2px rgb(18 24 38 / 8%);
30
+ --tl-shadow-popover: 0 18px 36px -22px rgb(16 24 40 / 28%);
31
+ --tl-density-comfortable: 1;
32
+ --tl-density-compact: 0.86;
33
+ --tl-motion-duration-fast: 120ms;
34
+ --tl-motion-duration-base: 160ms;
35
+ --tl-motion-ease-standard: cubic-bezier(0.23, 1, 0.32, 1);
36
+
37
+ --tl-color-canvas: #f5f7fa;
30
38
  --tl-color-surface: #ffffff;
31
- --tl-color-layer: #f1f5f9;
32
- --tl-color-content-primary: #111827;
33
- --tl-color-content-secondary: #334155;
34
- --tl-color-content-subtle: #475569;
35
- --tl-color-border-subtle: #d8dee8;
36
- --tl-color-border-strong: #94a3b8;
37
- --tl-color-focus: #2563eb;
38
-
39
- --tl-color-primary-fill: #1d4ed8;
39
+ --tl-color-layer: #f6f8fa;
40
+ --tl-color-content-primary: #181d23;
41
+ --tl-color-content-secondary: #515b66;
42
+ --tl-color-content-subtle: #9aa4b0;
43
+ --tl-color-border-subtle: #e4e8ed;
44
+ --tl-color-border-strong: #cbd3dc;
45
+ --tl-color-focus: #2563d9;
46
+
47
+ --tl-color-primary-fill: #2563d9;
40
48
  --tl-color-primary-content: #ffffff;
41
- --tl-color-primary-soft: #e0ecff;
42
- --tl-color-primary-border: #9db8ff;
43
- --tl-color-info-fill: #0369a1;
49
+ --tl-color-primary-soft: #eaf1ff;
50
+ --tl-color-primary-border: #c8d9fb;
51
+ --tl-color-info-fill: #1690b0;
44
52
  --tl-color-info-content: #ffffff;
45
- --tl-color-info-soft: #e0f2fe;
46
- --tl-color-info-border: #8bd3f7;
47
- --tl-color-success-fill: #166534;
53
+ --tl-color-info-soft: #e7f5f9;
54
+ --tl-color-info-border: #b9e1ec;
55
+ --tl-color-success-fill: #1f9d57;
48
56
  --tl-color-success-content: #ffffff;
49
- --tl-color-success-soft: #e8f7ee;
50
- --tl-color-success-border: #a9ddb9;
51
- --tl-color-warning-fill: #92400e;
52
- --tl-color-warning-content: #ffffff;
53
- --tl-color-warning-soft: #fff4d8;
54
- --tl-color-warning-border: #f1d18a;
55
- --tl-color-danger-fill: #b42318;
57
+ --tl-color-success-soft: #e6f6ec;
58
+ --tl-color-success-border: #c5ead2;
59
+ --tl-color-warning-fill: #b77a08;
60
+ --tl-color-warning-content: #221400;
61
+ --tl-color-warning-soft: #fdf4e3;
62
+ --tl-color-warning-border: #ecd59f;
63
+ --tl-color-danger-fill: #d83a3a;
56
64
  --tl-color-danger-content: #ffffff;
57
- --tl-color-danger-soft: #ffebe7;
58
- --tl-color-danger-border: #ffb4aa;
65
+ --tl-color-danger-soft: #fdecec;
66
+ --tl-color-danger-border: #f4c7c7;
59
67
 
60
68
  color: var(--tl-color-content-primary);
61
69
  background: var(--tl-color-canvas);
@@ -64,595 +72,790 @@
64
72
  }
65
73
 
66
74
  :where([data-tl-root][data-tl-mode="dark"]) {
67
- --tl-color-canvas: #0f172a;
68
- --tl-color-surface: #172033;
69
- --tl-color-layer: #1f2a3d;
70
- --tl-color-content-primary: #f8fafc;
71
- --tl-color-content-secondary: #dbe4ee;
72
- --tl-color-content-subtle: #b8c4d4;
73
- --tl-color-border-subtle: #334155;
74
- --tl-color-border-strong: #64748b;
75
- --tl-color-focus: #93c5fd;
76
-
77
- --tl-color-primary-fill: #93c5fd;
78
- --tl-color-primary-content: #10213f;
79
- --tl-color-primary-soft: #18365f;
80
- --tl-color-primary-border: #4f7db8;
81
- --tl-color-info-fill: #7dd3fc;
82
- --tl-color-info-content: #082f49;
83
- --tl-color-info-soft: #14364d;
84
- --tl-color-info-border: #3f87aa;
85
- --tl-color-success-fill: #86efac;
86
- --tl-color-success-content: #052e16;
87
- --tl-color-success-soft: #173924;
88
- --tl-color-success-border: #4b9462;
89
- --tl-color-warning-fill: #facc15;
90
- --tl-color-warning-content: #422006;
91
- --tl-color-warning-soft: #3f3215;
92
- --tl-color-warning-border: #a88924;
93
- --tl-color-danger-fill: #fca5a5;
94
- --tl-color-danger-content: #450a0a;
95
- --tl-color-danger-soft: #46201f;
96
- --tl-color-danger-border: #b75b59;
97
- }
98
-
99
- /*
100
- Temporary alpha compatibility aliases for old unnamespaced color tokens.
101
- These are not the stable public token contract and are not exported in
102
- metadata. New code, docs, examples, and adapters should use --tl-color-*.
103
- */
104
- :where([data-tl-root]) {
105
- --tl-canvas: var(--tl-color-canvas);
106
- --tl-surface: var(--tl-color-surface);
107
- --tl-layer: var(--tl-color-layer);
108
- --tl-content-primary: var(--tl-color-content-primary);
109
- --tl-content-secondary: var(--tl-color-content-secondary);
110
- --tl-content-subtle: var(--tl-color-content-subtle);
111
- --tl-border-subtle: var(--tl-color-border-subtle);
112
- --tl-border-strong: var(--tl-color-border-strong);
113
- --tl-focus: var(--tl-color-focus);
114
- --tl-primary-fill: var(--tl-color-primary-fill);
115
- --tl-primary-on-fill: var(--tl-color-primary-content);
116
- --tl-primary-soft: var(--tl-color-primary-soft);
117
- --tl-primary-content: var(--tl-color-primary-content);
118
- --tl-primary-border: var(--tl-color-primary-border);
119
- --tl-info-fill: var(--tl-color-info-fill);
120
- --tl-info-on-fill: var(--tl-color-info-content);
121
- --tl-info-soft: var(--tl-color-info-soft);
122
- --tl-info-content: var(--tl-color-info-content);
123
- --tl-info-border: var(--tl-color-info-border);
124
- --tl-success-fill: var(--tl-color-success-fill);
125
- --tl-success-on-fill: var(--tl-color-success-content);
126
- --tl-success-soft: var(--tl-color-success-soft);
127
- --tl-success-content: var(--tl-color-success-content);
128
- --tl-success-border: var(--tl-color-success-border);
129
- --tl-warning-fill: var(--tl-color-warning-fill);
130
- --tl-warning-on-fill: var(--tl-color-warning-content);
131
- --tl-warning-soft: var(--tl-color-warning-soft);
132
- --tl-warning-content: var(--tl-color-warning-content);
133
- --tl-warning-border: var(--tl-color-warning-border);
134
- --tl-danger-fill: var(--tl-color-danger-fill);
135
- --tl-danger-on-fill: var(--tl-color-danger-content);
136
- --tl-danger-soft: var(--tl-color-danger-soft);
137
- --tl-danger-content: var(--tl-color-danger-content);
138
- --tl-danger-border: var(--tl-color-danger-border);
75
+ --tl-color-canvas: #090d14;
76
+ --tl-color-surface: #111720;
77
+ --tl-color-layer: #151c27;
78
+ --tl-color-content-primary: #eef2f7;
79
+ --tl-color-content-secondary: #a7b0bf;
80
+ --tl-color-content-subtle: #778397;
81
+ --tl-color-border-subtle: #263140;
82
+ --tl-color-border-strong: #3a485c;
83
+ --tl-color-focus: #6ca0ff;
84
+
85
+ --tl-color-primary-fill: #4f86f5;
86
+ --tl-color-primary-content: #061225;
87
+ --tl-color-primary-soft: #15223a;
88
+ --tl-color-primary-border: #284670;
89
+ --tl-color-info-fill: #36a8c8;
90
+ --tl-color-info-content: #041217;
91
+ --tl-color-info-soft: #0d2932;
92
+ --tl-color-info-border: #1c4956;
93
+ --tl-color-success-fill: #33b069;
94
+ --tl-color-success-content: #04140a;
95
+ --tl-color-success-soft: #112c1d;
96
+ --tl-color-success-border: #1d4d33;
97
+ --tl-color-warning-fill: #d6a02b;
98
+ --tl-color-warning-content: #160f02;
99
+ --tl-color-warning-soft: #2c2410;
100
+ --tl-color-warning-border: #544517;
101
+ --tl-color-danger-fill: #e85a5a;
102
+ --tl-color-danger-content: #190606;
103
+ --tl-color-danger-soft: #311819;
104
+ --tl-color-danger-border: #5d2a2c;
105
+ --tl-shadow-card: 0 1px 2px rgb(0 0 0 / 42%);
106
+ --tl-shadow-popover: 0 18px 36px -22px rgb(0 0 0 / 72%);
139
107
  }
140
108
  }
141
109
 
142
- @layer threelight.primitives {
143
- :where([data-tl-root]) :where(
144
- .tl-layout-section,
145
- .tl-layout-stack,
146
- .tl-layout-cluster,
147
- .tl-layout-grid,
148
- .tl-component-card,
149
- .tl-component-panel,
150
- .tl-component-alert,
151
- .tl-component-display,
152
- .tl-component-heading,
153
- .tl-component-body,
154
- .tl-component-caption,
155
- .tl-component-meta,
156
- .tl-component-label,
157
- .tl-component-action-text,
158
- .tl-component-metric,
159
- .tl-component-code,
160
- .tl-component-button,
161
- .tl-component-badge,
162
- .tl-component-field,
163
- .tl-component-input,
164
- .tl-component-help,
165
- .tl-pattern-page-header,
166
- .tl-pattern-page-header__content,
167
- .tl-pattern-page-header__actions,
168
- .tl-pattern-empty-state,
169
- .tl-pattern-empty-state__content,
170
- .tl-pattern-empty-state__actions
171
- ) {
110
+ @layer threelight.base {
111
+ :where([data-tl-root]) *,
112
+ :where([data-tl-root]) *::before,
113
+ :where([data-tl-root]) *::after {
172
114
  box-sizing: border-box;
173
- min-inline-size: 0;
174
- max-inline-size: 100%;
175
115
  }
176
116
 
177
- :where([data-tl-root]) :where(
178
- .tl-component-display,
179
- .tl-component-heading,
180
- .tl-component-body,
181
- .tl-component-caption,
182
- .tl-component-meta,
183
- .tl-component-label,
184
- .tl-component-action-text,
185
- .tl-component-metric,
186
- .tl-component-code,
187
- .tl-component-button,
188
- .tl-component-badge,
189
- .tl-component-alert,
190
- .tl-component-help,
191
- .tl-pattern-page-header,
192
- .tl-pattern-page-header__content,
193
- .tl-pattern-empty-state,
194
- .tl-pattern-empty-state__content
195
- ) {
196
- overflow-wrap: anywhere;
197
- word-break: normal;
117
+ :where([data-tl-root]) :where(h1, h2, h3, h4, p, figure) {
118
+ margin: 0;
198
119
  }
199
120
 
200
- :where([data-tl-root]) :where(.tl-layout-section) {
201
- inline-size: min(100%, var(--tl-section-max, 72rem));
202
- margin-inline: auto;
203
- padding-block: var(--tl-section-padding-block, var(--tl-space-8));
204
- padding-inline: var(--tl-section-padding-inline, var(--tl-space-4));
121
+ :where([data-tl-root]) :where(button, input, select, textarea) {
122
+ font: inherit;
205
123
  }
206
124
 
207
- :where([data-tl-root]) :where(.tl-layout-stack) {
208
- display: flex;
209
- flex-direction: column;
210
- gap: var(--tl-gap, var(--tl-space-4));
125
+ :where([data-tl-root]) :where(button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, a:focus-visible) {
126
+ outline: 3px solid color-mix(in srgb, var(--tl-color-focus) 58%, transparent);
127
+ outline-offset: 2px;
128
+ }
129
+ }
130
+
131
+ @layer threelight.components {
132
+ :where([data-tl-root]) :where(.tl-stack) {
133
+ display: grid;
134
+ gap: var(--tl-stack-gap, var(--tl-space-4));
211
135
  }
212
136
 
213
- :where([data-tl-root]) :where(.tl-layout-cluster) {
137
+ :where([data-tl-root]) :where(.tl-cluster) {
214
138
  display: flex;
215
139
  flex-wrap: wrap;
216
140
  align-items: center;
217
- gap: var(--tl-gap, var(--tl-space-3));
141
+ gap: var(--tl-cluster-gap, var(--tl-space-3));
218
142
  }
219
143
 
220
- :where([data-tl-root]) :where(.tl-layout-grid) {
144
+ :where([data-tl-root]) :where(.tl-grid) {
221
145
  display: grid;
222
146
  grid-template-columns: repeat(
223
147
  auto-fit,
224
148
  minmax(min(100%, var(--tl-grid-min, 16rem)), 1fr)
225
149
  );
226
- gap: var(--tl-gap, var(--tl-space-4));
150
+ gap: var(--tl-grid-gap, var(--tl-space-4));
227
151
  }
228
152
 
229
- :where([data-tl-root]) :where(.tl-component-card, .tl-component-panel, .tl-component-alert) {
230
- --tl-component-background: var(--tl-color-surface);
231
- --tl-component-content: var(--tl-color-content-primary);
232
- --tl-component-content-muted: var(--tl-color-content-secondary);
233
- --tl-component-border: var(--tl-color-border-subtle);
234
-
235
- color: var(--tl-component-content);
236
- background: var(--tl-component-background);
237
- border: 1px solid var(--tl-component-border);
153
+ :where([data-tl-root]) :where(.tl-heading) {
154
+ color: var(--tl-color-content-primary);
155
+ font-size: var(--tl-heading-size, var(--tl-font-size-xl));
156
+ font-weight: 720;
157
+ letter-spacing: 0;
158
+ line-height: 1.16;
159
+ text-wrap: balance;
238
160
  }
239
161
 
240
- :where([data-tl-root]) :where(.tl-component-card) {
241
- border-radius: var(--tl-radius-card, var(--tl-radius-lg));
242
- box-shadow: var(--tl-card-shadow, var(--tl-shadow-sm));
243
- padding: var(--tl-card-padding, var(--tl-space-5));
162
+ :where([data-tl-root]) :where(.tl-text) {
163
+ color: var(--tl-text-color, var(--tl-color-content-secondary));
164
+ font-size: var(--tl-font-size-md);
165
+ line-height: 1.58;
244
166
  }
245
167
 
246
- :where([data-tl-root]) :where(.tl-component-panel) {
247
- --tl-component-background: var(--tl-color-layer);
168
+ :where([data-tl-root]) :where(.tl-caption) {
169
+ color: var(--tl-color-content-subtle);
170
+ font-size: var(--tl-font-size-xs);
171
+ font-weight: 600;
172
+ letter-spacing: 0.04em;
173
+ line-height: 1.45;
174
+ text-transform: uppercase;
175
+ }
248
176
 
249
- border-radius: var(--tl-radius-panel, var(--tl-radius-md));
250
- padding: var(--tl-panel-padding, var(--tl-space-4));
177
+ :where([data-tl-root]) :where(.tl-mono) {
178
+ font-family: var(--tl-font-mono);
179
+ font-size: var(--tl-font-size-xs);
251
180
  }
252
181
 
253
- :where([data-tl-root]) :where(.tl-component-alert) {
254
- --tl-component-background: var(--tl-color-layer);
255
- --tl-component-border: var(--tl-color-border-strong);
182
+ :where([data-tl-root]) :where(.tl-app-shell) {
183
+ display: grid;
184
+ grid-template-columns: minmax(13rem, 16rem) minmax(0, 1fr);
185
+ min-block-size: 100vh;
186
+ min-inline-size: 0;
187
+ background: var(--tl-color-canvas);
188
+ }
256
189
 
257
- border-radius: var(--tl-radius-md);
258
- padding: var(--tl-alert-padding, var(--tl-space-4));
190
+ :where([data-tl-root]) :where(.tl-app-shell__sidebar) {
191
+ min-inline-size: 0;
192
+ border-inline-end: 1px solid var(--tl-color-border-subtle);
193
+ background: var(--tl-color-surface);
259
194
  }
260
195
 
261
- :where([data-tl-root]) :where(
262
- .tl-component-card[data-tl-tone="primary"],
263
- .tl-component-panel[data-tl-tone="primary"],
264
- .tl-component-alert[data-tl-tone="primary"]
265
- ) {
266
- --tl-component-background: var(--tl-color-primary-soft);
267
- --tl-component-content: var(--tl-color-content-primary);
268
- --tl-component-content-muted: var(--tl-color-content-secondary);
269
- --tl-component-border: var(--tl-color-primary-border);
196
+ :where([data-tl-root]) :where(.tl-app-shell__topbar) {
197
+ display: flex;
198
+ flex-wrap: wrap;
199
+ align-items: center;
200
+ justify-content: space-between;
201
+ gap: var(--tl-space-3);
202
+ min-inline-size: 0;
203
+ min-block-size: 3.25rem;
204
+ padding-inline: var(--tl-space-5);
205
+ border-block-end: 1px solid var(--tl-color-border-subtle);
206
+ background: color-mix(in srgb, var(--tl-color-surface) 88%, transparent);
270
207
  }
271
208
 
272
- :where([data-tl-root]) :where(
273
- .tl-component-card[data-tl-tone="info"],
274
- .tl-component-panel[data-tl-tone="info"],
275
- .tl-component-alert[data-tl-tone="info"]
276
- ) {
277
- --tl-component-background: var(--tl-color-info-soft);
278
- --tl-component-content: var(--tl-color-content-primary);
279
- --tl-component-content-muted: var(--tl-color-content-secondary);
280
- --tl-component-border: var(--tl-color-info-border);
209
+ :where([data-tl-root]) :where(.tl-app-shell__topbar > *) {
210
+ min-inline-size: 0;
211
+ overflow-wrap: anywhere;
281
212
  }
282
213
 
283
- :where([data-tl-root]) :where(
284
- .tl-component-card[data-tl-tone="success"],
285
- .tl-component-panel[data-tl-tone="success"],
286
- .tl-component-alert[data-tl-tone="success"]
287
- ) {
288
- --tl-component-background: var(--tl-color-success-soft);
289
- --tl-component-content: var(--tl-color-content-primary);
290
- --tl-component-content-muted: var(--tl-color-content-secondary);
291
- --tl-component-border: var(--tl-color-success-border);
214
+ :where([data-tl-root]) :where(.tl-app-shell__main) {
215
+ min-inline-size: 0;
216
+ overflow-x: clip;
292
217
  }
293
218
 
294
- :where([data-tl-root]) :where(
295
- .tl-component-card[data-tl-tone="warning"],
296
- .tl-component-panel[data-tl-tone="warning"],
297
- .tl-component-alert[data-tl-tone="warning"]
298
- ) {
299
- --tl-component-background: var(--tl-color-warning-soft);
300
- --tl-component-content: var(--tl-color-content-primary);
301
- --tl-component-content-muted: var(--tl-color-content-secondary);
302
- --tl-component-border: var(--tl-color-warning-border);
219
+ :where([data-tl-root]) :where(.tl-app-shell__content) {
220
+ min-inline-size: 0;
221
+ max-inline-size: var(--tl-content-max, 76rem);
222
+ padding: var(--tl-space-6);
303
223
  }
304
224
 
305
- :where([data-tl-root]) :where(
306
- .tl-component-card[data-tl-tone="danger"],
307
- .tl-component-panel[data-tl-tone="danger"],
308
- .tl-component-alert[data-tl-tone="danger"]
309
- ) {
310
- --tl-component-background: var(--tl-color-danger-soft);
311
- --tl-component-content: var(--tl-color-content-primary);
312
- --tl-component-content-muted: var(--tl-color-content-secondary);
313
- --tl-component-border: var(--tl-color-danger-border);
225
+ :where([data-tl-root]) :where(.tl-side-nav) {
226
+ display: grid;
227
+ gap: var(--tl-space-5);
228
+ padding: var(--tl-space-5);
314
229
  }
315
230
 
316
- :where([data-tl-root]) :where(.tl-component-display) {
317
- color: var(--tl-component-content, var(--tl-color-content-primary));
318
- font-size: var(--tl-font-size-display);
319
- font-weight: 760;
320
- line-height: 1.05;
321
- letter-spacing: 0;
322
- text-wrap: balance;
231
+ :where([data-tl-root]) :where(.tl-side-nav__group) {
232
+ display: grid;
233
+ gap: var(--tl-space-1);
323
234
  }
324
235
 
325
- :where([data-tl-root]) :where(.tl-component-heading) {
326
- color: var(--tl-component-content, var(--tl-color-content-primary));
327
- font-size: var(--tl-font-size-heading);
236
+ :where([data-tl-root]) :where(.tl-side-nav__label) {
237
+ padding: var(--tl-space-2) var(--tl-space-2) var(--tl-space-1);
238
+ color: var(--tl-color-content-subtle);
239
+ font-size: var(--tl-font-size-xs);
328
240
  font-weight: 720;
329
- line-height: 1.18;
330
- letter-spacing: 0;
331
- text-wrap: balance;
241
+ letter-spacing: 0.08em;
242
+ text-transform: uppercase;
332
243
  }
333
244
 
334
- :where([data-tl-root]) :where(.tl-component-body) {
335
- color: var(--tl-component-content, var(--tl-color-content-primary));
336
- font-size: var(--tl-font-size-body);
337
- line-height: 1.62;
245
+ :where([data-tl-root]) :where(.tl-side-nav__item) {
246
+ display: flex;
247
+ align-items: center;
248
+ justify-content: space-between;
249
+ gap: var(--tl-space-2);
250
+ min-inline-size: 0;
251
+ color: var(--tl-color-content-secondary);
252
+ border-radius: var(--tl-radius-control);
253
+ padding: var(--tl-space-2) var(--tl-space-3);
254
+ text-decoration: none;
338
255
  }
339
256
 
340
- :where([data-tl-root]) :where(.tl-component-caption, .tl-component-help) {
341
- color: var(--tl-component-content-muted, var(--tl-color-content-secondary));
342
- font-size: var(--tl-font-size-caption);
343
- line-height: 1.5;
257
+ :where([data-tl-root]) :where(.tl-side-nav__item > *) {
258
+ min-inline-size: 0;
259
+ }
260
+
261
+ :where([data-tl-root]) :where(.tl-side-nav__item:hover) {
262
+ color: var(--tl-color-content-primary);
263
+ background: var(--tl-color-layer);
344
264
  }
345
265
 
346
- :where([data-tl-root]) :where(.tl-component-meta, .tl-component-label) {
347
- color: var(--tl-component-content-muted, var(--tl-color-content-subtle));
348
- font-size: var(--tl-font-size-caption);
266
+ :where([data-tl-root]) :where(.tl-side-nav__item[aria-current="page"]) {
267
+ color: var(--tl-color-primary-fill);
268
+ background: var(--tl-color-primary-soft);
269
+ box-shadow: inset 3px 0 0 var(--tl-color-primary-fill);
349
270
  font-weight: 650;
350
- line-height: 1.35;
351
271
  }
352
272
 
353
- :where([data-tl-root]) :where(.tl-component-action-text) {
354
- color: inherit;
355
- font-size: var(--tl-font-size-body);
356
- font-weight: 700;
357
- line-height: 1.25;
273
+ :where([data-tl-root]) :where(.tl-card, .tl-panel, .tl-data-panel) {
274
+ min-inline-size: 0;
275
+ color: var(--tl-color-content-primary);
276
+ border: 1px solid var(--tl-color-border-subtle);
277
+ border-radius: var(--tl-radius-card);
278
+ background: var(--tl-color-surface);
279
+ box-shadow: var(--tl-shadow-card);
358
280
  }
359
281
 
360
- :where([data-tl-root]) :where(.tl-component-metric) {
361
- color: var(--tl-component-content, var(--tl-color-content-primary));
362
- font-size: var(--tl-font-size-metric);
363
- font-weight: 760;
364
- line-height: 1;
365
- letter-spacing: 0;
282
+ :where([data-tl-root]) :where(.tl-card) {
283
+ padding: var(--tl-card-padding, var(--tl-space-5));
366
284
  }
367
285
 
368
- :where([data-tl-root]) :where(.tl-component-code) {
369
- display: inline-block;
370
- max-inline-size: 100%;
371
- color: var(--tl-component-content, var(--tl-color-content-primary));
372
- background: color-mix(in srgb, var(--tl-color-layer) 82%, transparent);
373
- border: 1px solid var(--tl-color-border-subtle);
374
- border-radius: var(--tl-radius-sm);
375
- font-family: var(--tl-font-mono);
376
- font-size: var(--tl-font-size-caption);
377
- line-height: 1.5;
378
- padding: 0.125rem 0.25rem;
379
- vertical-align: baseline;
380
- white-space: normal;
286
+ :where([data-tl-root]) :where(.tl-panel, .tl-data-panel) {
287
+ overflow: hidden;
288
+ }
289
+
290
+ :where([data-tl-root]) :where(.tl-card__header, .tl-panel__header, .tl-data-panel__header, .tl-card__footer, .tl-panel__footer, .tl-data-panel__footer) {
291
+ display: flex;
292
+ flex-wrap: wrap;
293
+ align-items: center;
294
+ justify-content: space-between;
295
+ gap: var(--tl-space-3);
296
+ padding: var(--tl-space-4) var(--tl-space-5);
297
+ }
298
+
299
+ :where([data-tl-root]) :where(.tl-card__body, .tl-panel__body, .tl-data-panel__body) {
300
+ min-inline-size: 0;
301
+ padding: var(--tl-space-5);
302
+ }
303
+
304
+ :where([data-tl-root]) :where(.tl-panel__header, .tl-data-panel__header, .tl-card__footer, .tl-panel__footer, .tl-data-panel__footer) {
305
+ border-block-end: 1px solid var(--tl-color-border-subtle);
306
+ }
307
+
308
+ :where([data-tl-root]) :where(.tl-card__footer, .tl-panel__footer, .tl-data-panel__footer) {
309
+ border-block-start: 1px solid var(--tl-color-border-subtle);
310
+ border-block-end: 0;
381
311
  }
382
312
 
383
- :where([data-tl-root]) :where(.tl-component-button) {
384
- --tl-button-background: var(--tl-color-surface);
385
- --tl-button-content: var(--tl-color-content-primary);
386
- --tl-button-border: var(--tl-color-border-strong);
387
- --tl-button-disabled-background: var(--tl-color-layer);
388
- --tl-button-disabled-content: var(--tl-color-content-secondary);
389
- --tl-button-disabled-border: var(--tl-color-border-subtle);
313
+ :where([data-tl-root]) :where(.tl-card__title, .tl-panel__title) {
314
+ font-weight: 720;
315
+ line-height: 1.25;
316
+ }
317
+
318
+ :where([data-tl-root]) :where(.tl-card__description, .tl-panel__description) {
319
+ color: var(--tl-color-content-secondary);
320
+ font-size: var(--tl-font-size-sm);
321
+ line-height: 1.5;
322
+ }
390
323
 
324
+ :where([data-tl-root]) :where(.tl-button, .tl-icon-button) {
391
325
  display: inline-flex;
392
326
  align-items: center;
393
327
  justify-content: center;
394
- flex: 0 1 auto;
395
- min-block-size: 2.75rem;
396
- min-inline-size: 0;
397
- max-inline-size: 100%;
398
328
  gap: var(--tl-space-2);
399
- color: var(--tl-button-content);
400
- background: var(--tl-button-background);
401
- border: 1px solid var(--tl-button-border);
402
- border-radius: var(--tl-radius-button, var(--tl-radius-md));
329
+ max-inline-size: 100%;
330
+ min-block-size: 2.25rem;
331
+ color: var(--tl-button-content, var(--tl-color-content-primary));
332
+ background: var(--tl-button-background, var(--tl-color-surface));
333
+ border: 1px solid var(--tl-button-border, var(--tl-color-border-strong));
334
+ border-radius: var(--tl-radius-control);
403
335
  cursor: pointer;
404
- font-family: var(--tl-font-sans);
405
- font-size: var(--tl-font-size-body);
406
- font-weight: 700;
336
+ font-weight: 650;
407
337
  line-height: 1.2;
408
- padding: 0.65rem 1rem;
338
+ padding: 0.5rem 0.875rem;
409
339
  text-align: center;
410
340
  text-decoration: none;
341
+ transition:
342
+ background-color var(--tl-motion-duration-base) var(--tl-motion-ease-standard),
343
+ border-color var(--tl-motion-duration-base) var(--tl-motion-ease-standard),
344
+ color var(--tl-motion-duration-fast) var(--tl-motion-ease-standard),
345
+ filter var(--tl-motion-duration-fast) var(--tl-motion-ease-standard);
411
346
  }
412
347
 
413
- :where([data-tl-root]) :where(.tl-component-button:hover) {
348
+ :where([data-tl-root]) :where(.tl-button:hover, .tl-icon-button:hover) {
414
349
  filter: brightness(0.98);
415
350
  }
416
351
 
417
- :where([data-tl-root]) :where(.tl-component-button:focus-visible, .tl-component-input:focus-visible) {
418
- outline: 3px solid var(--tl-color-focus);
419
- outline-offset: 2px;
352
+ :where([data-tl-root]) :where(.tl-button[data-tl-size="sm"], .tl-icon-button[data-tl-size="sm"]) {
353
+ min-block-size: 2rem;
354
+ padding: 0.375rem 0.65rem;
355
+ font-size: var(--tl-font-size-sm);
356
+ }
357
+
358
+ :where([data-tl-root]) :where(.tl-button[data-tl-size="lg"], .tl-icon-button[data-tl-size="lg"]) {
359
+ min-block-size: 2.75rem;
360
+ padding: 0.7rem 1rem;
420
361
  }
421
362
 
422
- :where([data-tl-root]) :where(
423
- .tl-component-button:disabled,
424
- .tl-component-button[aria-disabled="true"],
425
- .tl-component-input:disabled
426
- ) {
363
+ :where([data-tl-root]) :where(.tl-icon-button) {
364
+ inline-size: 2.25rem;
365
+ padding: 0;
366
+ }
367
+
368
+ :where([data-tl-root]) :where(.tl-button[data-tl-variant="solid"], .tl-icon-button[data-tl-variant="solid"]) {
369
+ --tl-button-background: var(--tl-tone-fill, var(--tl-color-primary-fill));
370
+ --tl-button-content: var(--tl-tone-content, var(--tl-color-primary-content));
371
+ --tl-button-border: var(--tl-tone-fill, var(--tl-color-primary-fill));
372
+ }
373
+
374
+ :where([data-tl-root]) :where(.tl-button[data-tl-variant="soft"], .tl-icon-button[data-tl-variant="soft"]) {
375
+ --tl-button-background: var(--tl-tone-soft, var(--tl-color-layer));
376
+ --tl-button-content: var(--tl-tone-ink, var(--tl-color-content-primary));
377
+ --tl-button-border: var(--tl-tone-border, var(--tl-color-border-subtle));
378
+ }
379
+
380
+ :where([data-tl-root]) :where(.tl-button[data-tl-variant="ghost"], .tl-button[data-tl-variant="plain"], .tl-icon-button[data-tl-variant="ghost"], .tl-icon-button[data-tl-variant="plain"]) {
381
+ --tl-button-background: transparent;
382
+ --tl-button-border: transparent;
383
+ }
384
+
385
+ :where([data-tl-root]) :where(.tl-button[data-tl-variant="plain"], .tl-icon-button[data-tl-variant="plain"]) {
386
+ padding-inline: 0;
387
+ }
388
+
389
+ :where([data-tl-root]) :where(.tl-button:disabled, .tl-icon-button:disabled, .tl-button[aria-disabled="true"], .tl-icon-button[aria-disabled="true"]) {
427
390
  cursor: not-allowed;
428
- color: var(--tl-button-disabled-content, var(--tl-color-content-secondary));
429
- background: var(--tl-button-disabled-background, var(--tl-color-layer));
430
- border-color: var(--tl-button-disabled-border, var(--tl-color-border-subtle));
391
+ opacity: 0.58;
431
392
  filter: none;
432
393
  }
433
394
 
434
- :where([data-tl-root]) :where(.tl-component-button[data-tl-tone="primary"]) {
435
- --tl-button-background: var(--tl-color-primary-fill);
436
- --tl-button-content: var(--tl-color-primary-content);
437
- --tl-button-border: var(--tl-color-primary-fill);
395
+ :where([data-tl-root]) :where([data-tl-tone="primary"]) {
396
+ --tl-tone-fill: var(--tl-color-primary-fill);
397
+ --tl-tone-content: var(--tl-color-primary-content);
398
+ --tl-tone-soft: var(--tl-color-primary-soft);
399
+ --tl-tone-border: var(--tl-color-primary-border);
400
+ --tl-tone-ink: var(--tl-color-primary-fill);
438
401
  }
439
402
 
440
- :where([data-tl-root]) :where(.tl-component-button[data-tl-tone="info"]) {
441
- --tl-button-background: var(--tl-color-info-fill);
442
- --tl-button-content: var(--tl-color-info-content);
443
- --tl-button-border: var(--tl-color-info-fill);
403
+ :where([data-tl-root]) :where([data-tl-tone="info"]) {
404
+ --tl-tone-fill: var(--tl-color-info-fill);
405
+ --tl-tone-content: var(--tl-color-info-content);
406
+ --tl-tone-soft: var(--tl-color-info-soft);
407
+ --tl-tone-border: var(--tl-color-info-border);
408
+ --tl-tone-ink: var(--tl-color-info-fill);
444
409
  }
445
410
 
446
- :where([data-tl-root]) :where(.tl-component-button[data-tl-tone="success"]) {
447
- --tl-button-background: var(--tl-color-success-fill);
448
- --tl-button-content: var(--tl-color-success-content);
449
- --tl-button-border: var(--tl-color-success-fill);
411
+ :where([data-tl-root]) :where([data-tl-tone="success"]) {
412
+ --tl-tone-fill: var(--tl-color-success-fill);
413
+ --tl-tone-content: var(--tl-color-success-content);
414
+ --tl-tone-soft: var(--tl-color-success-soft);
415
+ --tl-tone-border: var(--tl-color-success-border);
416
+ --tl-tone-ink: var(--tl-color-success-fill);
450
417
  }
451
418
 
452
- :where([data-tl-root]) :where(.tl-component-button[data-tl-tone="warning"]) {
453
- --tl-button-background: var(--tl-color-warning-fill);
454
- --tl-button-content: var(--tl-color-warning-content);
455
- --tl-button-border: var(--tl-color-warning-fill);
419
+ :where([data-tl-root]) :where([data-tl-tone="warning"]) {
420
+ --tl-tone-fill: var(--tl-color-warning-fill);
421
+ --tl-tone-content: var(--tl-color-warning-content);
422
+ --tl-tone-soft: var(--tl-color-warning-soft);
423
+ --tl-tone-border: var(--tl-color-warning-border);
424
+ --tl-tone-ink: var(--tl-color-warning-fill);
456
425
  }
457
426
 
458
- :where([data-tl-root]) :where(.tl-component-button[data-tl-tone="danger"]) {
459
- --tl-button-background: var(--tl-color-danger-fill);
460
- --tl-button-content: var(--tl-color-danger-content);
461
- --tl-button-border: var(--tl-color-danger-fill);
427
+ :where([data-tl-root]) :where([data-tl-tone="danger"]) {
428
+ --tl-tone-fill: var(--tl-color-danger-fill);
429
+ --tl-tone-content: var(--tl-color-danger-content);
430
+ --tl-tone-soft: var(--tl-color-danger-soft);
431
+ --tl-tone-border: var(--tl-color-danger-border);
432
+ --tl-tone-ink: var(--tl-color-danger-fill);
462
433
  }
463
434
 
464
- :where([data-tl-root]) :where(.tl-component-badge) {
465
- --tl-badge-background: var(--tl-color-layer);
466
- --tl-badge-content: var(--tl-color-content-primary);
467
- --tl-badge-border: var(--tl-color-border-subtle);
468
-
435
+ :where([data-tl-root]) :where(.tl-badge) {
469
436
  display: inline-flex;
470
437
  align-items: center;
438
+ inline-size: fit-content;
471
439
  max-inline-size: 100%;
472
- width: fit-content;
473
- color: var(--tl-badge-content);
474
- background: var(--tl-badge-background);
475
- border: 1px solid var(--tl-badge-border);
440
+ color: var(--tl-tone-ink, var(--tl-color-content-secondary));
441
+ background: var(--tl-tone-soft, var(--tl-color-layer));
442
+ border: 1px solid var(--tl-tone-border, var(--tl-color-border-subtle));
476
443
  border-radius: 999px;
477
- font-size: 0.875rem;
478
- font-weight: 700;
444
+ font-size: var(--tl-font-size-xs);
445
+ font-weight: 650;
479
446
  line-height: 1.2;
480
- padding: 0.25rem 0.6rem;
447
+ padding: 0.2rem 0.55rem;
481
448
  }
482
449
 
483
- :where([data-tl-root]) :where(.tl-component-badge[data-tl-tone="primary"]) {
484
- --tl-badge-background: var(--tl-color-primary-soft);
485
- --tl-badge-content: var(--tl-color-content-primary);
486
- --tl-badge-border: var(--tl-color-primary-border);
450
+ :where([data-tl-root]) :where(.tl-alert, .tl-toast) {
451
+ display: grid;
452
+ grid-template-columns: auto minmax(0, 1fr) auto;
453
+ gap: var(--tl-space-3);
454
+ color: var(--tl-color-content-primary);
455
+ background: var(--tl-tone-soft, var(--tl-color-surface));
456
+ border: 1px solid var(--tl-tone-border, var(--tl-color-border-subtle));
457
+ border-radius: var(--tl-radius-card);
458
+ padding: var(--tl-space-4);
487
459
  }
488
460
 
489
- :where([data-tl-root]) :where(.tl-component-badge[data-tl-tone="info"]) {
490
- --tl-badge-background: var(--tl-color-info-soft);
491
- --tl-badge-content: var(--tl-color-content-primary);
492
- --tl-badge-border: var(--tl-color-info-border);
461
+ :where([data-tl-root]) :where(.tl-alert__title, .tl-toast__title) {
462
+ font-weight: 720;
493
463
  }
494
464
 
495
- :where([data-tl-root]) :where(.tl-component-badge[data-tl-tone="success"]) {
496
- --tl-badge-background: var(--tl-color-success-soft);
497
- --tl-badge-content: var(--tl-color-content-primary);
498
- --tl-badge-border: var(--tl-color-success-border);
465
+ :where([data-tl-root]) :where(.tl-alert__description, .tl-toast__description) {
466
+ color: var(--tl-color-content-secondary);
467
+ font-size: var(--tl-font-size-sm);
499
468
  }
500
469
 
501
- :where([data-tl-root]) :where(.tl-component-badge[data-tl-tone="warning"]) {
502
- --tl-badge-background: var(--tl-color-warning-soft);
503
- --tl-badge-content: var(--tl-color-content-primary);
504
- --tl-badge-border: var(--tl-color-warning-border);
470
+ :where([data-tl-root]) :where(.tl-toast-region) {
471
+ position: fixed;
472
+ z-index: 50;
473
+ inset-block-end: var(--tl-space-4);
474
+ inset-inline-end: var(--tl-space-4);
475
+ display: grid;
476
+ gap: var(--tl-space-2);
477
+ inline-size: min(calc(100vw - 2rem), 24rem);
478
+ pointer-events: none;
505
479
  }
506
480
 
507
- :where([data-tl-root]) :where(.tl-component-badge[data-tl-tone="danger"]) {
508
- --tl-badge-background: var(--tl-color-danger-soft);
509
- --tl-badge-content: var(--tl-color-content-primary);
510
- --tl-badge-border: var(--tl-color-danger-border);
481
+ :where([data-tl-root]) :where(.tl-toast-region > *) {
482
+ pointer-events: auto;
511
483
  }
512
484
 
513
- :where([data-tl-root]) :where(.tl-component-field) {
485
+ :where([data-tl-root]) :where(.tl-field) {
514
486
  display: grid;
515
487
  gap: var(--tl-space-2);
516
- max-inline-size: 100%;
488
+ min-inline-size: 0;
489
+ }
490
+
491
+ :where([data-tl-root]) :where(.tl-field__label) {
492
+ color: var(--tl-color-content-secondary);
493
+ font-size: var(--tl-font-size-sm);
494
+ font-weight: 650;
495
+ }
496
+
497
+ :where([data-tl-root]) :where(.tl-field__help) {
498
+ color: var(--tl-color-content-subtle);
499
+ font-size: var(--tl-font-size-sm);
517
500
  }
518
501
 
519
- :where([data-tl-root]) :where(.tl-component-input) {
502
+ :where([data-tl-root]) :where(.tl-field__error) {
503
+ color: var(--tl-color-danger-fill);
504
+ font-size: var(--tl-font-size-sm);
505
+ font-weight: 650;
506
+ }
507
+
508
+ :where([data-tl-root]) :where(.tl-input, .tl-select) {
520
509
  inline-size: 100%;
510
+ min-block-size: 2.375rem;
511
+ min-inline-size: 0;
521
512
  max-inline-size: 100%;
522
513
  color: var(--tl-color-content-primary);
523
514
  background: var(--tl-color-surface);
524
515
  border: 1px solid var(--tl-color-border-strong);
525
- border-radius: var(--tl-radius-md);
516
+ border-radius: var(--tl-radius-control);
517
+ padding: 0.55rem 0.7rem;
518
+ transition:
519
+ border-color var(--tl-motion-duration-base) var(--tl-motion-ease-standard),
520
+ background-color var(--tl-motion-duration-base) var(--tl-motion-ease-standard);
521
+ }
522
+
523
+ :where([data-tl-root]) :where(.tl-input[aria-invalid="true"], .tl-select[aria-invalid="true"]) {
524
+ border-color: var(--tl-color-danger-fill);
525
+ }
526
+
527
+ :where([data-tl-root]) :where(.tl-switch) {
528
+ display: inline-flex;
529
+ align-items: center;
530
+ gap: var(--tl-space-2);
531
+ max-inline-size: 100%;
532
+ border: 0;
533
+ background: transparent;
534
+ color: inherit;
535
+ cursor: pointer;
526
536
  font: inherit;
527
- font-size: 1rem;
528
- line-height: 1.4;
529
- padding: 0.75rem 0.8rem;
537
+ padding: 0;
538
+ text-align: start;
539
+ }
540
+
541
+ :where([data-tl-root]) :where(.tl-switch__track) {
542
+ display: inline-flex;
543
+ align-items: center;
544
+ inline-size: 2.4rem;
545
+ block-size: 1.4rem;
546
+ padding: 0.125rem;
547
+ border: 1px solid var(--tl-color-border-strong);
548
+ border-radius: 999px;
549
+ background: var(--tl-color-layer);
550
+ }
551
+
552
+ :where([data-tl-root]) :where(.tl-switch__thumb) {
553
+ inline-size: 1rem;
554
+ block-size: 1rem;
555
+ border-radius: 999px;
556
+ background: var(--tl-color-content-secondary);
557
+ transition: transform var(--tl-motion-duration-base) var(--tl-motion-ease-standard);
530
558
  }
531
559
 
532
- :where([data-tl-root]) :where(.tl-pattern-page-header) {
560
+ :where([data-tl-root]) :where(.tl-switch[aria-checked="true"] .tl-switch__track) {
561
+ border-color: var(--tl-color-primary-fill);
562
+ background: var(--tl-color-primary-soft);
563
+ }
564
+
565
+ :where([data-tl-root]) :where(.tl-switch[aria-checked="true"] .tl-switch__thumb) {
566
+ transform: translateX(1rem);
567
+ background: var(--tl-color-primary-fill);
568
+ }
569
+
570
+ :where([data-tl-root]) :where(.tl-tabs) {
571
+ display: grid;
572
+ gap: var(--tl-space-4);
573
+ min-inline-size: 0;
574
+ }
575
+
576
+ :where([data-tl-root]) :where(.tl-tabs__list) {
533
577
  display: flex;
534
578
  flex-wrap: wrap;
535
- align-items: start;
536
- gap: var(--tl-page-header-gap, var(--tl-space-5));
579
+ gap: var(--tl-space-2);
580
+ padding: var(--tl-space-2);
581
+ border: 1px solid var(--tl-color-border-subtle);
582
+ border-radius: var(--tl-radius-card);
583
+ background: var(--tl-color-layer);
584
+ }
585
+
586
+ :where([data-tl-root]) :where(.tl-tabs__tab) {
587
+ border: 1px solid transparent;
588
+ border-radius: var(--tl-radius-control);
589
+ background: transparent;
590
+ color: var(--tl-color-content-secondary);
591
+ cursor: pointer;
592
+ padding: 0.5rem 0.75rem;
593
+ }
594
+
595
+ :where([data-tl-root]) :where(.tl-tabs__tab[aria-selected="true"]) {
596
+ color: var(--tl-color-primary-fill);
597
+ background: var(--tl-color-surface);
598
+ border-color: var(--tl-color-primary-border);
599
+ font-weight: 650;
600
+ }
601
+
602
+ :where([data-tl-root]) :where(.tl-table) {
603
+ display: block;
537
604
  inline-size: 100%;
538
605
  max-inline-size: 100%;
539
- padding-block: var(--tl-page-header-padding-block, var(--tl-space-5));
606
+ overflow-x: auto;
607
+ border-collapse: collapse;
608
+ white-space: nowrap;
609
+ }
610
+
611
+ :where([data-tl-root]) :where(.tl-table table, table.tl-table) {
612
+ inline-size: 100%;
613
+ border-collapse: collapse;
540
614
  }
541
615
 
542
- :where([data-tl-root]) :where(.tl-pattern-page-header__content) {
616
+ :where([data-tl-root]) :where(.tl-table th, .tl-table td) {
617
+ padding: 0.75rem var(--tl-space-4);
618
+ border-block-end: 1px solid var(--tl-color-border-subtle);
619
+ text-align: start;
620
+ vertical-align: middle;
621
+ }
622
+
623
+ :where([data-tl-root]) :where(.tl-table th) {
624
+ color: var(--tl-color-content-subtle);
625
+ font-size: var(--tl-font-size-xs);
626
+ font-weight: 720;
627
+ letter-spacing: 0.08em;
628
+ text-transform: uppercase;
629
+ }
630
+
631
+ :where([data-tl-root]) :where(.tl-table tr[aria-selected="true"]) {
632
+ background: var(--tl-color-primary-soft);
633
+ box-shadow: inset 3px 0 0 var(--tl-color-primary-fill);
634
+ }
635
+
636
+ :where([data-tl-root]) :where(.tl-code-block) {
543
637
  display: grid;
544
- flex: 1 1 min(100%, var(--tl-page-header-content-min, 28rem));
545
- gap: var(--tl-page-header-content-gap, var(--tl-space-2));
638
+ grid-template-columns: minmax(0, 1fr) auto;
639
+ gap: var(--tl-space-3);
640
+ align-items: start;
641
+ max-inline-size: 100%;
642
+ color: #eef2f7;
643
+ background: #0f141c;
644
+ border: 1px solid color-mix(in srgb, var(--tl-color-border-strong) 50%, transparent);
645
+ border-radius: var(--tl-radius-card);
646
+ padding: var(--tl-space-4);
647
+ overflow-x: auto;
648
+ }
649
+
650
+ :where([data-tl-root]) :where(.tl-code-block__content) {
651
+ min-inline-size: 0;
652
+ margin: 0;
653
+ font-family: var(--tl-font-mono);
654
+ font-size: var(--tl-font-size-sm);
655
+ white-space: pre;
656
+ }
657
+
658
+ :where([data-tl-root]) :where(.tl-code-block__copy) {
659
+ display: inline-flex;
660
+ align-items: center;
661
+ justify-content: center;
662
+ justify-self: end;
663
+ min-block-size: 2rem;
664
+ border: 1px solid var(--tl-color-border-strong);
665
+ border-radius: var(--tl-radius-control);
666
+ background: var(--tl-color-surface);
667
+ color: var(--tl-color-content-primary);
668
+ cursor: pointer;
669
+ font-weight: 650;
670
+ padding: 0.35rem 0.65rem;
546
671
  }
547
672
 
548
- :where([data-tl-root]) :where(.tl-pattern-page-header__actions) {
673
+ :where([data-tl-root]) :where(.tl-filter-bar) {
549
674
  display: flex;
550
675
  flex-wrap: wrap;
551
- flex: 0 1 min(100%, var(--tl-page-header-actions-max, 28rem));
552
- justify-content: flex-end;
553
- align-items: center;
554
- gap: var(--tl-page-header-actions-gap, var(--tl-space-3));
555
- max-inline-size: 100%;
676
+ align-items: end;
677
+ gap: var(--tl-space-3);
678
+ min-inline-size: 0;
679
+ padding: var(--tl-space-3);
680
+ border: 1px solid var(--tl-color-border-subtle);
681
+ border-radius: var(--tl-radius-card);
682
+ background: var(--tl-color-layer);
556
683
  }
557
684
 
558
- :where([data-tl-root]) :where(.tl-pattern-empty-state) {
685
+ :where([data-tl-root]) :where(.tl-filter-bar__group) {
559
686
  display: grid;
560
- justify-items: center;
561
- gap: var(--tl-empty-state-gap, var(--tl-space-4));
562
- inline-size: 100%;
563
- max-inline-size: 100%;
564
- color: var(--tl-component-content, var(--tl-color-content-primary));
565
- background: var(--tl-component-background, var(--tl-color-surface));
566
- border: 1px solid var(--tl-component-border, var(--tl-color-border-subtle));
567
- border-radius: var(--tl-radius-lg);
568
- padding: var(--tl-empty-state-padding, var(--tl-space-8) var(--tl-space-5));
569
- text-align: center;
687
+ gap: var(--tl-space-1);
688
+ min-inline-size: min(100%, 12rem);
689
+ }
690
+
691
+ :where([data-tl-root]) :where(.tl-filter-bar__actions) {
692
+ margin-inline-start: auto;
693
+ }
694
+
695
+ :where([data-tl-root]) :where(.tl-metric-group) {
696
+ display: grid;
697
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
698
+ gap: var(--tl-space-4);
699
+ }
700
+
701
+ :where([data-tl-root]) :where(.tl-metric-card) {
702
+ display: grid;
703
+ gap: var(--tl-space-1);
704
+ padding: var(--tl-space-4);
705
+ border: 1px solid var(--tl-color-border-subtle);
706
+ border-radius: var(--tl-radius-card);
707
+ background: var(--tl-color-surface);
708
+ box-shadow: var(--tl-shadow-card);
709
+ }
710
+
711
+ :where([data-tl-root]) :where(.tl-metric-card__label) {
712
+ color: var(--tl-color-content-secondary);
713
+ font-size: var(--tl-font-size-sm);
714
+ }
715
+
716
+ :where([data-tl-root]) :where(.tl-metric-card__value) {
717
+ color: var(--tl-color-content-primary);
718
+ font-size: 1.55rem;
719
+ font-weight: 760;
720
+ line-height: 1;
570
721
  }
571
722
 
572
- :where([data-tl-root]) :where(.tl-pattern-empty-state__content) {
723
+ :where([data-tl-root]) :where(.tl-metric-card__delta) {
724
+ color: var(--tl-tone-ink, var(--tl-color-content-subtle));
725
+ font-family: var(--tl-font-mono);
726
+ font-size: var(--tl-font-size-xs);
727
+ font-weight: 650;
728
+ }
729
+
730
+ :where([data-tl-root]) :where(.tl-settings-section) {
573
731
  display: grid;
574
- gap: var(--tl-empty-state-content-gap, var(--tl-space-2));
575
- inline-size: min(100%, var(--tl-empty-state-content-max, 42rem));
732
+ grid-template-columns: minmax(10rem, 0.36fr) minmax(0, 1fr);
733
+ gap: var(--tl-space-5);
734
+ padding-block: var(--tl-space-5);
735
+ border-block-end: 1px solid var(--tl-color-border-subtle);
576
736
  }
577
737
 
578
- :where([data-tl-root]) :where(.tl-pattern-empty-state__actions) {
738
+ :where([data-tl-root]) :where(.tl-stepper) {
739
+ display: grid;
740
+ gap: var(--tl-space-3);
741
+ }
742
+
743
+ :where([data-tl-root]) :where(.tl-stepper__item) {
579
744
  display: flex;
580
- flex-wrap: wrap;
581
- justify-content: center;
582
745
  align-items: center;
583
- gap: var(--tl-empty-state-actions-gap, var(--tl-space-3));
584
- inline-size: min(100%, var(--tl-empty-state-actions-max, 36rem));
746
+ gap: var(--tl-space-3);
747
+ min-block-size: 3rem;
748
+ padding: var(--tl-space-3);
749
+ border: 1px solid var(--tl-color-border-subtle);
750
+ border-radius: var(--tl-radius-card);
751
+ background: var(--tl-color-layer);
585
752
  }
586
753
 
587
- :where([data-tl-root]) :where(.tl-pattern-empty-state[data-tl-tone="primary"]) {
588
- --tl-component-background: var(--tl-color-primary-soft);
589
- --tl-component-content: var(--tl-color-content-primary);
590
- --tl-component-border: var(--tl-color-primary-border);
754
+ :where([data-tl-root]) :where(.tl-stepper__item[aria-current="step"]) {
755
+ border-color: var(--tl-color-primary-border);
756
+ background: var(--tl-color-primary-soft);
591
757
  }
592
758
 
593
- :where([data-tl-root]) :where(.tl-pattern-empty-state[data-tl-tone="info"]) {
594
- --tl-component-background: var(--tl-color-info-soft);
595
- --tl-component-content: var(--tl-color-content-primary);
596
- --tl-component-border: var(--tl-color-info-border);
759
+ :where([data-tl-root]) :where(.tl-stepper__marker) {
760
+ display: inline-grid;
761
+ place-items: center;
762
+ inline-size: 1.75rem;
763
+ block-size: 1.75rem;
764
+ border-radius: 999px;
765
+ background: var(--tl-color-surface);
766
+ border: 1px solid var(--tl-color-border-subtle);
767
+ font-weight: 720;
597
768
  }
598
769
 
599
- :where([data-tl-root]) :where(.tl-pattern-empty-state[data-tl-tone="success"]) {
600
- --tl-component-background: var(--tl-color-success-soft);
601
- --tl-component-content: var(--tl-color-content-primary);
602
- --tl-component-border: var(--tl-color-success-border);
770
+ :where([data-tl-root]) :where(.tl-choice-card) {
771
+ display: grid;
772
+ gap: var(--tl-space-2);
773
+ min-inline-size: 0;
774
+ padding: var(--tl-space-4);
775
+ color: var(--tl-color-content-primary);
776
+ background: var(--tl-color-surface);
777
+ border: 1px solid var(--tl-color-border-subtle);
778
+ border-radius: var(--tl-radius-card);
779
+ text-align: start;
603
780
  }
604
781
 
605
- :where([data-tl-root]) :where(.tl-pattern-empty-state[data-tl-tone="warning"]) {
606
- --tl-component-background: var(--tl-color-warning-soft);
607
- --tl-component-content: var(--tl-color-content-primary);
608
- --tl-component-border: var(--tl-color-warning-border);
782
+ :where([data-tl-root]) :where(.tl-choice-card[aria-pressed="true"], .tl-choice-card[aria-selected="true"]) {
783
+ border-color: var(--tl-color-primary-border);
784
+ background: var(--tl-color-primary-soft);
785
+ box-shadow: inset 3px 0 0 var(--tl-color-primary-fill);
609
786
  }
610
787
 
611
- :where([data-tl-root]) :where(.tl-pattern-empty-state[data-tl-tone="danger"]) {
612
- --tl-component-background: var(--tl-color-danger-soft);
613
- --tl-component-content: var(--tl-color-content-primary);
614
- --tl-component-border: var(--tl-color-danger-border);
788
+ :where([data-tl-root]) :where(.tl-empty-state) {
789
+ display: grid;
790
+ place-items: center;
791
+ gap: var(--tl-space-4);
792
+ min-block-size: 14rem;
793
+ padding: var(--tl-space-6);
794
+ text-align: center;
615
795
  }
616
796
 
617
- :where([data-tl-root]) :where([data-tl-state="loading"]) {
618
- cursor: progress;
797
+ :where([data-tl-root]) :where(.tl-docs-shell) {
798
+ display: grid;
799
+ grid-template-columns: minmax(12rem, 0.28fr) minmax(0, 1fr) minmax(10rem, 0.22fr);
800
+ gap: var(--tl-space-5);
801
+ min-inline-size: 0;
619
802
  }
620
803
 
621
- :where([data-tl-root]) :where([data-tl-state="error"]) {
622
- --tl-component-background: var(--tl-color-danger-soft);
623
- --tl-component-content: var(--tl-color-content-primary);
624
- --tl-component-border: var(--tl-color-danger-border);
625
- }
804
+ @media (max-width: 56rem) {
805
+ :where([data-tl-root]) :where(.tl-app-shell) {
806
+ grid-template-columns: 1fr;
807
+ }
808
+
809
+ :where([data-tl-root]) :where(.tl-app-shell__sidebar) {
810
+ border-inline-end: 0;
811
+ border-block-end: 1px solid var(--tl-color-border-subtle);
812
+ }
813
+
814
+ :where([data-tl-root]) :where(.tl-app-shell__content) {
815
+ padding: var(--tl-space-4);
816
+ }
817
+
818
+ :where([data-tl-root]) :where(.tl-side-nav) {
819
+ padding: var(--tl-space-4);
820
+ }
626
821
 
627
- @media (max-width: 48rem) {
628
- :where([data-tl-root]) :where(.tl-pattern-page-header__actions) {
629
- justify-content: flex-start;
630
- min-inline-size: 0;
822
+ :where([data-tl-root]) :where(.tl-side-nav__group) {
823
+ grid-template-columns: 1fr;
631
824
  }
632
825
 
633
- :where([data-tl-root]) :where(
634
- .tl-pattern-page-header__actions > *,
635
- .tl-pattern-empty-state__actions > *
636
- ) {
637
- flex: 1 1 min(100%, 12rem);
826
+ :where([data-tl-root]) :where(.tl-side-nav__item) {
827
+ flex-wrap: wrap;
828
+ }
829
+
830
+ :where([data-tl-root]) :where(.tl-grid, .tl-metric-group, .tl-settings-section, .tl-docs-shell) {
831
+ grid-template-columns: 1fr;
832
+ }
833
+
834
+ :where([data-tl-root]) :where(.tl-filter-bar__actions) {
835
+ margin-inline-start: 0;
836
+ }
837
+
838
+ :where([data-tl-root]) :where(.tl-code-block) {
839
+ grid-template-columns: 1fr;
638
840
  }
639
841
  }
640
842
  }
641
843
 
642
844
  @layer threelight.utilities {
643
- :where([data-tl-root]) :where(.tl-utility-sr-only) {
845
+ :where([data-tl-root]) :where(.tl-sr-only) {
644
846
  position: absolute;
645
847
  inline-size: 1px;
646
848
  block-size: 1px;
849
+ padding: 0;
850
+ margin: -1px;
647
851
  overflow: hidden;
648
- clip: rect(0 0 0 0);
649
- clip-path: inset(50%);
852
+ clip: rect(0, 0, 0, 0);
650
853
  white-space: nowrap;
854
+ border: 0;
651
855
  }
652
856
 
653
- :where([data-tl-root]) :where(.tl-utility-truncate) {
857
+ :where([data-tl-root]) :where(.tl-truncate) {
654
858
  min-inline-size: 0;
655
- max-inline-size: 100%;
656
859
  overflow: hidden;
657
860
  text-overflow: ellipsis;
658
861
  white-space: nowrap;