elements-kit 0.5.2 → 0.6.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/README.md CHANGED
@@ -493,9 +493,3 @@ class XPicker extends HTMLElement {
493
493
  - [ARCHITECTURE.md](ARCHITECTURE.md) — how the library works
494
494
  - [CONTRIBUTING.md](CONTRIBUTING.md) — build, test, PR checklist
495
495
 
496
- ## Roadmap
497
-
498
- - [ ] Context — share state across a subtree without prop drilling
499
- - [ ] UI library — pre-built reactive components built on ElementsKit primitives
500
- - [ ] More framework integrations (Vue, Solid, Angular, …)
501
- - [ ] Tutorial — building a full app from scratch
@@ -83,6 +83,6 @@
83
83
 
84
84
  .x-badge:where([data-variant="outline"]):where([data-high-contrast]) {
85
85
  box-shadow: inset 0 0 0 1px var(--color-a7),
86
- inset 0 0 0 1px var(--gray-a11);
86
+ inset 0 0 0 1px var(--base-color-a11);
87
87
  color: var(--color-12);
88
88
  }
@@ -19,215 +19,35 @@
19
19
  position: relative;
20
20
  }
21
21
 
22
- .x-button:where(:not([data-variant="ghost"])) {
22
+ .x-button:where(:not([data-variant="text"])) {
23
23
  height: var(--base-button-height);
24
24
  }
25
25
 
26
- .x-button:where([data-variant="ghost"]) {
26
+ .x-button:where([data-variant="text"]) {
27
27
  box-sizing: content-box;
28
28
  height: fit-content;
29
29
  }
30
30
 
31
31
  .x-button:where([data-size="1"]) {
32
- --base-button-classic-active-padding-top: 1px;
33
32
  --base-button-height: var(--space-5);
34
33
  border-radius: max(var(--radius-1), var(--radius-pill));
35
34
  }
36
35
 
37
36
  .x-button:where([data-size="2"]) {
38
- --base-button-classic-active-padding-top: 2px;
39
37
  --base-button-height: var(--space-6);
40
38
  border-radius: max(var(--radius-2), var(--radius-pill));
41
39
  }
42
40
 
43
41
  .x-button:where([data-size="3"]) {
44
- --base-button-classic-active-padding-top: 2px;
45
42
  --base-button-height: var(--space-7);
46
43
  border-radius: max(var(--radius-3), var(--radius-pill));
47
44
  }
48
45
 
49
46
  .x-button:where([data-size="4"]) {
50
- --base-button-classic-active-padding-top: 2px;
51
47
  --base-button-height: var(--space-8);
52
48
  border-radius: max(var(--radius-4), var(--radius-pill));
53
49
  }
54
50
 
55
- :where(:root) {
56
- --base-button-classic-after-inset: 2px;
57
- --base-button-classic-box-shadow-top: inset 0 0 0 1px var(--gray-a4),
58
- inset 0 -2px 1px var(--gray-a3);
59
- --base-button-classic-box-shadow-bottom: inset 0 4px 2px -2px var(--white-a9),
60
- inset 0 2px 1px -1px var(--white-a9);
61
- --base-button-classic-disabled-box-shadow: var(--base-button-classic-box-shadow-top),
62
- var(--base-button-classic-box-shadow-bottom);
63
- --base-button-classic-active-filter: brightness(.92) saturate(1.1);
64
- --base-button-classic-high-contrast-hover-filter: contrast(.88) saturate(1.1) brightness(1.1);
65
- --base-button-classic-high-contrast-active-filter: contrast(.82) saturate(1.2) brightness(1.16);
66
- }
67
-
68
- :is(.dark, .dark-theme), :is(.dark, .dark-theme) :where(:root:not(.light, .light-theme)) {
69
- --base-button-classic-after-inset: 1px;
70
- --base-button-classic-box-shadow-top: inset 0 0 0 1px var(--white-a2),
71
- inset 0 4px 2px -2px var(--white-a3),
72
- inset 0 1px 1px var(--white-a6),
73
- inset 0 -1px 1px var(--black-a6);
74
- --base-button-classic-box-shadow-bottom: 0 0 transparent;
75
- --base-button-classic-disabled-box-shadow: inset 0 0 0 1px var(--gray-a5),
76
- inset 0 4px 2px -2px var(--gray-a2),
77
- inset 0 1px 1px var(--gray-a5),
78
- inset 0 -1px 1px var(--black-a3),
79
- inset 0 0 0 1px var(--gray-a2);
80
- --base-button-classic-active-filter: brightness(1.08);
81
- --base-button-classic-high-contrast-hover-filter: contrast(.88) saturate(1.3) brightness(1.14);
82
- --base-button-classic-high-contrast-active-filter: brightness(.95) saturate(1.2);
83
- }
84
-
85
- .x-button:where([data-variant="classic"]) {
86
- background-color: var(--color-9);
87
- color: var(--accent-contrast);
88
- z-index: 0;
89
- background-image: linear-gradient(to bottom, transparent 50%, var(--gray-a4)),
90
- linear-gradient(to bottom, transparent 50%, var(--color-9) 80%);
91
- box-shadow: var(--base-button-classic-box-shadow-top),
92
- inset 0 0 0 1px var(--color-9),
93
- var(--base-button-classic-box-shadow-bottom);
94
- position: relative;
95
- }
96
-
97
- .x-button:where([data-variant="classic"]):after {
98
- content: "";
99
- border-radius: inherit;
100
- pointer-events: none;
101
- z-index: -1;
102
- border: var(--base-button-classic-after-inset) solid transparent;
103
- background-clip: content-box;
104
- background-color: inherit;
105
- background-image: linear-gradient(var(--black-a1),
106
- transparent,
107
- var(--white-a2));
108
- box-shadow: inset 0 2px 3px -1px var(--white-a4);
109
- position: absolute;
110
- inset: 0;
111
- }
112
-
113
- .x-button:where([data-variant="classic"]):where([data-high-contrast]) {
114
- background-color: var(--color-12);
115
- color: var(--gray-1);
116
- background-image: linear-gradient(to bottom, transparent 50%, var(--gray-a4)),
117
- linear-gradient(to bottom, transparent 50%, var(--color-12) 80%);
118
- box-shadow: var(--base-button-classic-box-shadow-top),
119
- inset 0 0 0 1px var(--color-12),
120
- var(--base-button-classic-box-shadow-bottom);
121
- }
122
-
123
- .x-button:where([data-variant="classic"]):where([data-high-contrast]):after {
124
- background-image: linear-gradient(var(--black-a3),
125
- transparent,
126
- var(--white-a2));
127
- }
128
-
129
- @media (pointer: coarse) {
130
- .x-button:where([data-variant="classic"]):where(:active:not([data-state="open"])) {
131
- outline: .5em solid var(--color-a4);
132
- outline-offset: 0;
133
- }
134
- }
135
-
136
- .x-button:where([data-variant="classic"]):where(:focus-visible) {
137
- outline: 2px solid var(--focus-8);
138
- outline-offset: 2px;
139
- }
140
-
141
- @media (hover: hover) {
142
- .x-button:where([data-variant="classic"]):where(:hover):after {
143
- background-color: var(--color-10);
144
- background-image: linear-gradient(var(--black-a2) -15%,
145
- transparent,
146
- var(--white-a3));
147
- }
148
-
149
- .x-button:where([data-variant="classic"]):where(:hover):where([data-high-contrast]) {
150
- filter: var(--base-button-classic-high-contrast-hover-filter);
151
- }
152
-
153
- .x-button:where([data-variant="classic"]):where(:hover):where([data-high-contrast]):after {
154
- background-color: var(--color-12);
155
- background-image: linear-gradient(var(--black-a5),
156
- transparent,
157
- var(--white-a2));
158
- }
159
- }
160
-
161
- .x-button:where([data-variant="classic"]):where([data-state="open"]):after {
162
- background-color: var(--color-10);
163
- background-image: linear-gradient(var(--black-a2) -15%,
164
- transparent,
165
- var(--white-a3));
166
- }
167
-
168
- .x-button:where([data-variant="classic"]):where([data-state="open"]):where([data-high-contrast]) {
169
- filter: var(--base-button-classic-high-contrast-hover-filter);
170
- }
171
-
172
- .x-button:where([data-variant="classic"]):where([data-state="open"]):where([data-high-contrast]):after {
173
- background-color: var(--color-12);
174
- background-image: linear-gradient(var(--black-a5),
175
- transparent,
176
- var(--white-a2));
177
- }
178
-
179
- .x-button:where([data-variant="classic"]):where(:active:not([data-state="open"], [data-disabled])) {
180
- background-color: var(--color-9);
181
- background-image: linear-gradient(var(--black-a1), transparent);
182
- padding-top: var(--base-button-classic-active-padding-top);
183
- box-shadow: inset 0 4px 2px -2px var(--gray-a4),
184
- inset 0 1px 1px var(--gray-a7),
185
- inset 0 0 0 1px var(--gray-a5),
186
- inset 0 0 0 1px var(--color-9),
187
- inset 0 3px 2px var(--gray-a3),
188
- inset 0 0 0 1px var(--white-a7),
189
- inset 0 -2px 1px var(--white-a5);
190
- }
191
-
192
- .x-button:where([data-variant="classic"]):where(:active:not([data-state="open"], [data-disabled])):after {
193
- box-shadow: none;
194
- background-color: inherit;
195
- background-image: linear-gradient(var(--black-a2),
196
- transparent,
197
- var(--white-a3));
198
- }
199
-
200
- .x-button:where([data-variant="classic"]):where(:active:not([data-state="open"], [data-disabled])):where([data-high-contrast]) {
201
- background-color: var(--color-12);
202
- filter: var(--base-button-classic-high-contrast-active-filter);
203
- box-shadow: var(--base-button__classic-active__shadow-front-layer),
204
- inset 0 0 0 1px var(--color-12),
205
- var(--base-button__classic-active__shadow-bottom-layer);
206
- }
207
-
208
- .x-button:where([data-variant="classic"]):where(:active:not([data-state="open"], [data-disabled])):where([data-high-contrast]):after {
209
- background-image: linear-gradient(var(--black-a5),
210
- transparent,
211
- var(--white-a3));
212
- }
213
-
214
- .x-button:where([data-variant="classic"]):where([data-disabled]) {
215
- color: var(--gray-a8);
216
- background-color: var(--gray-2);
217
- box-shadow: var(--base-button-classic-disabled-box-shadow);
218
- filter: none;
219
- background-image: none;
220
- outline: none;
221
- }
222
-
223
- .x-button:where([data-variant="classic"]):where([data-disabled]):after {
224
- box-shadow: none;
225
- background-color: var(--gray-a2);
226
- background-image: linear-gradient(var(--black-a1) -20%,
227
- transparent,
228
- var(--white-a1));
229
- }
230
-
231
51
  :where(:root) {
232
52
  --base-button-solid-active-filter: brightness(.92) saturate(1.1);
233
53
  --base-button-solid-high-contrast-hover-filter: contrast(.88) saturate(1.1)
@@ -278,7 +98,7 @@
278
98
 
279
99
  .x-button:where([data-variant="solid"]):where([data-high-contrast]) {
280
100
  background-color: var(--color-12);
281
- color: var(--gray-1);
101
+ color: var(--base-color-1);
282
102
  }
283
103
 
284
104
  @media (hover: hover) {
@@ -299,23 +119,23 @@
299
119
  }
300
120
 
301
121
  .x-button:where([data-variant="solid"]):where([data-disabled]) {
302
- color: var(--gray-a8);
303
- background-color: var(--gray-a3);
122
+ color: var(--base-color-a8);
123
+ background-color: var(--base-color-a3);
304
124
  filter: none;
305
125
  outline: none;
306
126
  }
307
127
 
308
- .x-button:where([data-variant="soft"], [data-variant="ghost"], [data-variant="ghost-offset"]) {
128
+ .x-button:where([data-variant="soft"], [data-variant="text"], [data-variant="borderless"]) {
309
129
  color: var(--color-a11);
310
130
  }
311
131
 
312
- .x-button:where([data-variant="soft"], [data-variant="ghost"], [data-variant="ghost-offset"]):where([data-high-contrast]) {
132
+ .x-button:where([data-variant="soft"], [data-variant="text"], [data-variant="borderless"]):where([data-high-contrast]) {
313
133
  color: var(--color-12);
314
134
  }
315
135
 
316
- .x-button:where([data-variant="soft"], [data-variant="ghost"], [data-variant="ghost-offset"]):where([data-disabled]) {
317
- color: var(--gray-a8);
318
- background-color: var(--gray-a3);
136
+ .x-button:where([data-variant="soft"], [data-variant="text"], [data-variant="borderless"]):where([data-disabled]) {
137
+ color: var(--base-color-a8);
138
+ background-color: var(--base-color-a3);
319
139
  }
320
140
 
321
141
  .x-button:where([data-variant="soft"]) {
@@ -342,31 +162,31 @@
342
162
  }
343
163
 
344
164
  .x-button:where([data-variant="soft"]):where([data-disabled]) {
345
- color: var(--gray-a8);
346
- background-color: var(--gray-a3);
165
+ color: var(--base-color-a8);
166
+ background-color: var(--base-color-a3);
347
167
  }
348
168
 
349
169
  @media (hover: hover) {
350
- .x-button:where([data-variant="ghost"], [data-variant="ghost-offset"]):where(:hover) {
170
+ .x-button:where([data-variant="text"], [data-variant="borderless"]):where(:hover) {
351
171
  background-color: var(--color-a3);
352
172
  }
353
173
  }
354
174
 
355
- .x-button:where([data-variant="ghost"], [data-variant="ghost-offset"]):where(:focus-visible) {
175
+ .x-button:where([data-variant="text"], [data-variant="borderless"]):where(:focus-visible) {
356
176
  outline: 2px solid var(--focus-8);
357
177
  outline-offset: -1px;
358
178
  }
359
179
 
360
- .x-button:where([data-variant="ghost"], [data-variant="ghost-offset"]):where([data-state="open"]) {
180
+ .x-button:where([data-variant="text"], [data-variant="borderless"]):where([data-state="open"]) {
361
181
  background-color: var(--color-a3);
362
182
  }
363
183
 
364
- .x-button:where([data-variant="ghost"], [data-variant="ghost-offset"]):where(:active:not([data-state="open"])) {
184
+ .x-button:where([data-variant="text"], [data-variant="borderless"]):where(:active:not([data-state="open"])) {
365
185
  background-color: var(--color-a4);
366
186
  }
367
187
 
368
- .x-button:where([data-variant="ghost"], [data-variant="ghost-offset"]):where([data-disabled]) {
369
- color: var(--gray-a8);
188
+ .x-button:where([data-variant="text"], [data-variant="borderless"]):where([data-disabled]) {
189
+ color: var(--base-color-a8);
370
190
  background-color: #0000;
371
191
  }
372
192
 
@@ -396,13 +216,13 @@
396
216
 
397
217
  .x-button:where([data-variant="outline"]):where([data-high-contrast]) {
398
218
  box-shadow: inset 0 0 0 1px var(--color-a7),
399
- inset 0 0 0 1px var(--gray-a11);
219
+ inset 0 0 0 1px var(--base-color-a11);
400
220
  color: var(--color-12);
401
221
  }
402
222
 
403
223
  .x-button:where([data-variant="outline"]):where([data-disabled]) {
404
- color: var(--gray-a8);
405
- box-shadow: inset 0 0 0 1px var(--gray-a7);
224
+ color: var(--base-color-a8);
225
+ box-shadow: inset 0 0 0 1px var(--base-color-a7);
406
226
  background-color: #0000;
407
227
  }
408
228
 
@@ -437,35 +257,35 @@
437
257
  }
438
258
 
439
259
  .x-button:where([data-variant="surface"]):where([data-disabled]) {
440
- color: var(--gray-a8);
441
- box-shadow: inset 0 0 0 1px var(--gray-a6);
442
- background-color: var(--gray-a2);
260
+ color: var(--base-color-a8);
261
+ box-shadow: inset 0 0 0 1px var(--base-color-a6);
262
+ background-color: var(--base-color-a2);
443
263
  }
444
264
 
445
- .x-button:where(:not([data-variant="ghost"])) :where(svg) {
265
+ .x-button:where(:not([data-variant="text"])) :where(svg) {
446
266
  opacity: .9;
447
267
  }
448
268
 
449
- .x-button:where([data-variant="ghost"]) {
450
- padding: var(--button-ghost-padding-y) var(--button-ghost-padding-x);
269
+ .x-button:where([data-variant="text"]) {
270
+ padding: var(--button-text-padding-y) var(--button-text-padding-x);
451
271
  --margin-top: 0px;
452
272
  --margin-right: 0px;
453
273
  --margin-bottom: 0px;
454
274
  --margin-left: 0px;
455
- --margin-top-override: calc(var(--margin-top) - var(--button-ghost-padding-y));
456
- --margin-right-override: calc(var(--margin-right) - var(--button-ghost-padding-x));
457
- --margin-bottom-override: calc(var(--margin-bottom) - var(--button-ghost-padding-y));
458
- --margin-left-override: calc(var(--margin-left) - var(--button-ghost-padding-x));
275
+ --margin-top-override: calc(var(--margin-top) - var(--button-text-padding-y));
276
+ --margin-right-override: calc(var(--margin-right) - var(--button-text-padding-x));
277
+ --margin-bottom-override: calc(var(--margin-bottom) - var(--button-text-padding-y));
278
+ --margin-left-override: calc(var(--margin-left) - var(--button-text-padding-x));
459
279
  }
460
280
 
461
- :where(.x-button:where([data-variant="ghost"])) > * {
281
+ :where(.x-button:where([data-variant="text"])) > * {
462
282
  --margin-top-override: initial;
463
283
  --margin-right-override: initial;
464
284
  --margin-bottom-override: initial;
465
285
  --margin-left-override: initial;
466
286
  }
467
287
 
468
- .x-button:where([data-variant="ghost"]) {
288
+ .x-button:where([data-variant="text"]) {
469
289
  margin: var(--margin-top-override) var(--margin-right-override)
470
290
  var(--margin-bottom-override) var(--margin-left-override);
471
291
  }
@@ -477,15 +297,15 @@
477
297
  letter-spacing: var(--letter-spacing-1);
478
298
  }
479
299
 
480
- .x-button:where([data-size="1"]):where(:not([data-variant="ghost"])) {
300
+ .x-button:where([data-size="1"]):where(:not([data-variant="text"])) {
481
301
  padding-left: var(--space-2);
482
302
  padding-right: var(--space-2);
483
303
  }
484
304
 
485
- .x-button:where([data-size="1"]):where([data-variant="ghost"]) {
305
+ .x-button:where([data-size="1"]):where([data-variant="text"]) {
486
306
  gap: var(--space-1);
487
- --button-ghost-padding-x: var(--space-2);
488
- --button-ghost-padding-y: var(--space-1);
307
+ --button-text-padding-x: var(--space-2);
308
+ --button-text-padding-y: var(--space-1);
489
309
  }
490
310
 
491
311
  .x-button:where([data-size="2"]) {
@@ -495,15 +315,15 @@
495
315
  letter-spacing: var(--letter-spacing-2);
496
316
  }
497
317
 
498
- .x-button:where([data-size="2"]):where(:not([data-variant="ghost"])) {
318
+ .x-button:where([data-size="2"]):where(:not([data-variant="text"])) {
499
319
  padding-left: var(--space-3);
500
320
  padding-right: var(--space-3);
501
321
  }
502
322
 
503
- .x-button:where([data-size="2"]):where([data-variant="ghost"]) {
323
+ .x-button:where([data-size="2"]):where([data-variant="text"]) {
504
324
  gap: var(--space-1);
505
- --button-ghost-padding-x: var(--space-2);
506
- --button-ghost-padding-y: var(--space-1);
325
+ --button-text-padding-x: var(--space-2);
326
+ --button-text-padding-y: var(--space-1);
507
327
  }
508
328
 
509
329
  .x-button:where([data-size="3"]) {
@@ -513,15 +333,15 @@
513
333
  letter-spacing: var(--letter-spacing-3);
514
334
  }
515
335
 
516
- .x-button:where([data-size="3"]):where(:not([data-variant="ghost"])) {
336
+ .x-button:where([data-size="3"]):where(:not([data-variant="text"])) {
517
337
  padding-left: var(--space-4);
518
338
  padding-right: var(--space-4);
519
339
  }
520
340
 
521
- .x-button:where([data-size="3"]):where([data-variant="ghost"]) {
341
+ .x-button:where([data-size="3"]):where([data-variant="text"]) {
522
342
  gap: var(--space-2);
523
- --button-ghost-padding-x: var(--space-3);
524
- --button-ghost-padding-y: calc(var(--space-1) * 1.5);
343
+ --button-text-padding-x: var(--space-3);
344
+ --button-text-padding-y: calc(var(--space-1) * 1.5);
525
345
  }
526
346
 
527
347
  .x-button:where([data-size="4"]) {
@@ -531,17 +351,17 @@
531
351
  letter-spacing: var(--letter-spacing-4);
532
352
  }
533
353
 
534
- .x-button:where([data-size="4"]):where(:not([data-variant="ghost"])) {
354
+ .x-button:where([data-size="4"]):where(:not([data-variant="text"])) {
535
355
  padding-left: var(--space-5);
536
356
  padding-right: var(--space-5);
537
357
  }
538
358
 
539
- .x-button:where([data-size="4"]):where([data-variant="ghost"]) {
359
+ .x-button:where([data-size="4"]):where([data-variant="text"]) {
540
360
  gap: var(--space-2);
541
- --button-ghost-padding-x: var(--space-4);
542
- --button-ghost-padding-y: var(--space-2);
361
+ --button-text-padding-x: var(--space-4);
362
+ --button-text-padding-y: var(--space-2);
543
363
  }
544
364
 
545
- .x-button:where(:not([data-variant="ghost"])) {
365
+ .x-button:where(:not([data-variant="text"])) {
546
366
  font-weight: var(--font-weight-medium);
547
367
  }
@@ -0,0 +1,129 @@
1
+ .x-card {
2
+ border-radius: var(--card-border-radius);
3
+ font-family: var(--default-font-family);
4
+ font-weight: var(--font-weight-regular);
5
+ text-align: start;
6
+ padding: var(--card-padding);
7
+ box-sizing: border-box;
8
+ font-style: normal;
9
+ display: block;
10
+ position: relative;
11
+ overflow: hidden;
12
+ }
13
+
14
+ .x-card:before, .x-card:after {
15
+ content: "";
16
+ pointer-events: none;
17
+ border-radius: calc(var(--card-border-radius) - var(--card-border-width));
18
+ inset: var(--card-border-width);
19
+ transition: inherit;
20
+ position: absolute;
21
+ }
22
+
23
+ .x-card:before {
24
+ z-index: -1;
25
+ }
26
+
27
+ .x-card {
28
+ contain: paint;
29
+ }
30
+
31
+ .x-card, .x-card:where([data-size="3"]) {
32
+ --card-padding: var(--space-5);
33
+ --card-border-radius: var(--radius-5);
34
+ }
35
+
36
+ .x-card:where([data-size="1"]) {
37
+ --card-padding: var(--space-3);
38
+ --card-border-radius: var(--radius-4);
39
+ }
40
+
41
+ .x-card:where([data-size="2"]) {
42
+ --card-padding: var(--space-4);
43
+ --card-border-radius: var(--radius-4);
44
+ }
45
+
46
+ .x-card:where([data-size="4"]) {
47
+ --card-padding: var(--space-6);
48
+ --card-border-radius: var(--radius-5);
49
+ }
50
+
51
+ .x-card:where([data-size="5"]) {
52
+ --card-padding: var(--space-8);
53
+ --card-border-radius: var(--radius-6);
54
+ }
55
+
56
+ .x-card, .x-card:where([data-variant="surface"]) {
57
+ --card-border-width: 1px;
58
+ }
59
+
60
+ :is(.x-card, .x-card:where([data-variant="surface"])):before {
61
+ background-color: var(--color-material, var(--color-surface));
62
+ -webkit-backdrop-filter: var(--backdrop-filter-material, none);
63
+ backdrop-filter: var(--backdrop-filter-material, none);
64
+ }
65
+
66
+ :is(.x-card, .x-card:where([data-variant="surface"])):after {
67
+ box-shadow: 0 0 0 1px var(--base-color-a5);
68
+ }
69
+
70
+ @media (hover: hover) {
71
+ :is(.x-card, .x-card:where([data-variant="surface"])):where(:any-link, button, label):where(:hover):after {
72
+ box-shadow: 0 0 0 1px var(--base-color-a7);
73
+ }
74
+ }
75
+
76
+ :is(.x-card, .x-card:where([data-variant="surface"])):where(:any-link, button, label):where(:active:not([data-state="open"])):after {
77
+ box-shadow: 0 0 0 1px var(--base-color-a6);
78
+ }
79
+
80
+ .x-card:where([data-variant="elevated"]) {
81
+ --card-border-width: 1px;
82
+ box-shadow: var(--shadow-2);
83
+ transition: box-shadow .12s;
84
+ }
85
+
86
+ .x-card:where([data-variant="elevated"]):before {
87
+ background-color: var(--color-material, var(--color-surface));
88
+ -webkit-backdrop-filter: var(--backdrop-filter-material, none);
89
+ backdrop-filter: var(--backdrop-filter-material, none);
90
+ }
91
+
92
+ .x-card:where([data-variant="elevated"]):after {
93
+ box-shadow: 0 0 0 1px var(--base-color-a3);
94
+ }
95
+
96
+ @media (hover: hover) {
97
+ .x-card:where([data-variant="elevated"]):where(:any-link, button, label):where(:hover) {
98
+ box-shadow: var(--shadow-3);
99
+ transition-duration: 40ms;
100
+ }
101
+ }
102
+
103
+ .x-card:where([data-variant="elevated"]):where(:any-link, button, label):where(:active:not([data-state="open"])) {
104
+ box-shadow: var(--shadow-2);
105
+ transition-duration: 40ms;
106
+ }
107
+
108
+ .x-card:where([data-variant="borderless"]) {
109
+ --card-border-width: 0px;
110
+ }
111
+
112
+ @media (hover: hover) {
113
+ .x-card:where([data-variant="borderless"]):where(:any-link, button, label):where(:hover) {
114
+ background-color: var(--base-color-a3);
115
+ }
116
+ }
117
+
118
+ .x-card:where([data-variant="borderless"]):where(:any-link, button, label):where(:active:not([data-state="open"])) {
119
+ background-color: var(--base-color-a4);
120
+ }
121
+
122
+ .x-card:where(:focus-visible) {
123
+ outline: 2px solid var(--focus-8);
124
+ outline-offset: -1px;
125
+ }
126
+
127
+ .x-card:where(:focus-visible):after {
128
+ outline: inherit;
129
+ }