@liftkit-vue/core 0.1.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.
Files changed (43) hide show
  1. package/README.md +181 -0
  2. package/dist/core.css +1 -0
  3. package/dist/index.cjs +273 -0
  4. package/dist/index.mjs +5592 -0
  5. package/package.json +58 -0
  6. package/src/css/align-items.css +21 -0
  7. package/src/css/align-self.css +24 -0
  8. package/src/css/aspect-ratios.css +35 -0
  9. package/src/css/background-colors.css +951 -0
  10. package/src/css/border-color.css +241 -0
  11. package/src/css/border-radius.css +49 -0
  12. package/src/css/border-style.css +20 -0
  13. package/src/css/border-width.css +41 -0
  14. package/src/css/borders.css +33 -0
  15. package/src/css/breaks.css +5 -0
  16. package/src/css/column-span.css +47 -0
  17. package/src/css/cursor.css +3 -0
  18. package/src/css/display.css +21 -0
  19. package/src/css/flexboxes.css +128 -0
  20. package/src/css/gaps.css +42 -0
  21. package/src/css/height.css +27 -0
  22. package/src/css/index.css +36 -0
  23. package/src/css/justify-content.css +23 -0
  24. package/src/css/justify-items.css +20 -0
  25. package/src/css/liftkit-core.css +465 -0
  26. package/src/css/liftkitvars.css +378 -0
  27. package/src/css/lk-components.css +498 -0
  28. package/src/css/margins.css +947 -0
  29. package/src/css/opacity.css +87 -0
  30. package/src/css/overflow.css +27 -0
  31. package/src/css/padding.css +1041 -0
  32. package/src/css/pointer-events.css +3 -0
  33. package/src/css/position.css +21 -0
  34. package/src/css/scale.css +23 -0
  35. package/src/css/scrim.css +10 -0
  36. package/src/css/shadows.css +31 -0
  37. package/src/css/text-alignment.css +19 -0
  38. package/src/css/text-color.css +721 -0
  39. package/src/css/text-columns.css +4 -0
  40. package/src/css/typography.css +493 -0
  41. package/src/css/whitespace.css +3 -0
  42. package/src/css/width.css +7 -0
  43. package/src/css/z-index.css +25 -0
@@ -0,0 +1,498 @@
1
+ /*
2
+ * LiftKit Component Layout CSS
3
+ * Maps data-lk-* attributes to visual styles.
4
+ */
5
+
6
+ /* ===== Row ===== */
7
+ [data-lk-component="row"] {
8
+ display: flex;
9
+ flex-direction: row;
10
+ }
11
+ [data-lk-row-align-items="start"] { align-items: flex-start; }
12
+ [data-lk-row-align-items="center"] { align-items: center; }
13
+ [data-lk-row-align-items="end"] { align-items: flex-end; }
14
+ [data-lk-row-align-items="stretch"] { align-items: stretch; }
15
+ [data-lk-row-justify-content="start"] { justify-content: flex-start; }
16
+ [data-lk-row-justify-content="center"] { justify-content: center; }
17
+ [data-lk-row-justify-content="end"] { justify-content: flex-end; }
18
+ [data-lk-row-justify-content="space-between"] { justify-content: space-between; }
19
+ [data-lk-row-justify-content="space-around"] { justify-content: space-around; }
20
+ [data-lk-row-wrap-children="true"] { flex-wrap: wrap; }
21
+ [data-lk-row-default-child-behavior="auto-grow"] > * { flex: 1 0 0; }
22
+ [data-lk-row-default-child-behavior="auto-shrink"] > * { flex: 0 1 auto; }
23
+ [data-lk-row-gap="3xs"] { gap: var(--lk-size-3xs); }
24
+ [data-lk-row-gap="2xs"] { gap: var(--lk-size-2xs); }
25
+ [data-lk-row-gap="xs"] { gap: var(--lk-size-xs); }
26
+ [data-lk-row-gap="sm"] { gap: var(--lk-size-sm); }
27
+ [data-lk-row-gap="md"] { gap: var(--lk-size-md); }
28
+ [data-lk-row-gap="lg"] { gap: var(--lk-size-lg); }
29
+ [data-lk-row-gap="xl"] { gap: var(--lk-size-xl); }
30
+ [data-lk-row-gap="2xl"] { gap: var(--lk-size-2xl); }
31
+ [data-lk-row-gap="3xl"] { gap: var(--lk-size-3xl); }
32
+
33
+ /* ===== Column ===== */
34
+ [data-lk-component="column"] {
35
+ display: flex;
36
+ flex-direction: column;
37
+ }
38
+ [data-lk-column-align-items="start"] { align-items: flex-start; }
39
+ [data-lk-column-align-items="center"] { align-items: center; }
40
+ [data-lk-column-align-items="end"] { align-items: flex-end; }
41
+ [data-lk-column-align-items="stretch"] { align-items: stretch; }
42
+ [data-lk-column-gap="3xs"] { gap: var(--lk-size-3xs); }
43
+ [data-lk-column-gap="2xs"] { gap: var(--lk-size-2xs); }
44
+ [data-lk-column-gap="xs"] { gap: var(--lk-size-xs); }
45
+ [data-lk-column-gap="sm"] { gap: var(--lk-size-sm); }
46
+ [data-lk-column-gap="md"] { gap: var(--lk-size-md); }
47
+ [data-lk-column-gap="lg"] { gap: var(--lk-size-lg); }
48
+ [data-lk-column-gap="xl"] { gap: var(--lk-size-xl); }
49
+ [data-lk-column-gap="2xl"] { gap: var(--lk-size-2xl); }
50
+
51
+ /* ===== Grid ===== */
52
+ [data-lk-component="grid"] {
53
+ display: grid;
54
+ }
55
+ [data-lk-grid-gap="xs"] { gap: var(--lk-size-xs); }
56
+ [data-lk-grid-gap="sm"] { gap: var(--lk-size-sm); }
57
+ [data-lk-grid-gap="md"] { gap: var(--lk-size-md); }
58
+ [data-lk-grid-gap="lg"] { gap: var(--lk-size-lg); }
59
+ [data-lk-grid-gap="xl"] { gap: var(--lk-size-xl); }
60
+
61
+ /* ===== Container ===== */
62
+ [data-lk-component="container"],
63
+ [data-lk-container-max-width] {
64
+ margin-inline: auto;
65
+ width: 100%;
66
+ }
67
+ [data-lk-container-max-width="xs"] { max-width: 448px; }
68
+ [data-lk-container-max-width="sm"] { max-width: 640px; }
69
+ [data-lk-container-max-width="md"] { max-width: 896px; }
70
+ [data-lk-container-max-width="lg"] { max-width: 1152px; }
71
+ [data-lk-container-max-width="xl"] { max-width: 1408px; }
72
+ [data-lk-container-max-width="none"] { max-width: none; }
73
+ [data-lk-container-max-width="auto"] { max-width: none; }
74
+
75
+ /* ===== Section ===== */
76
+ [data-lk-component="section"] {
77
+ display: block;
78
+ }
79
+
80
+ /* ===== Tabs ===== */
81
+ [data-lk-component="tabs"] {
82
+ display: flex;
83
+ flex-direction: column;
84
+ }
85
+
86
+ /* ===== Tab Menu ===== */
87
+ [data-lk-component="tab-menu"] {
88
+ border-bottom: 1px solid var(--light__outlinevariant_lkv, #ccc);
89
+ }
90
+
91
+ /* ===== Tab Link ===== */
92
+ [data-lk-component="tab-link"] {
93
+ cursor: pointer;
94
+ padding: 0.75rem 1rem;
95
+ position: relative;
96
+ user-select: none;
97
+ transition: color 0.15s;
98
+ }
99
+ [data-lk-component="tab-link"]:hover {
100
+ background: color-mix(in srgb, var(--light__primary_lkv, #6750A4) 8%, transparent);
101
+ }
102
+ [data-lk-tab-link-selected="true"] {
103
+ color: var(--light__primary_lkv, #6750A4);
104
+ }
105
+ [data-lk-tab-link-selected="true"] .lk-indicator {
106
+ position: absolute;
107
+ bottom: 0;
108
+ left: 0;
109
+ right: 0;
110
+ height: 3px;
111
+ background: var(--light__primary_lkv, #6750A4);
112
+ border-radius: 3px 3px 0 0;
113
+ }
114
+
115
+ /* ===== Tab Content ===== */
116
+ [data-lk-component="tab-content"] {
117
+ display: block;
118
+ }
119
+
120
+ /* ===== Card ===== */
121
+ [data-lk-component="card"] {
122
+ position: relative;
123
+ border-radius: var(--lk-size-sm, 0.618em);
124
+ overflow: hidden;
125
+ }
126
+ [data-lk-component="card"][data-lk-card-variant="fill"] {
127
+ background: var(--light__surfacecontainerlow_lkv, #f5f5f5);
128
+ color: var(--light__onsurface_lkv, #1c1b1f);
129
+ }
130
+ [data-lk-component="card"][data-lk-card-variant="outline"] {
131
+ border: 1px solid var(--light__outlinevariant_lkv, #cac4d0);
132
+ color: var(--light__onsurface_lkv, #1c1b1f);
133
+ }
134
+ [data-lk-component="card"][data-lk-card-variant="transparent"] {
135
+ background: transparent;
136
+ }
137
+ [data-lk-card-element="padding-box"] {
138
+ position: relative;
139
+ z-index: 1;
140
+ padding: 1em;
141
+ }
142
+ [data-lk-component="card"].clickable {
143
+ cursor: pointer;
144
+ }
145
+ /* Card bgColor via flat material layer */
146
+ [data-lk-material-layer-type="flat"][data-lk-material-bg-color="primarycontainer"] { background: var(--lk-primarycontainer); }
147
+ [data-lk-material-layer-type="flat"][data-lk-material-bg-color="secondarycontainer"] { background: var(--lk-secondarycontainer); }
148
+ [data-lk-material-layer-type="flat"][data-lk-material-bg-color="tertiarycontainer"] { background: var(--lk-tertiarycontainer); }
149
+ [data-lk-material-layer-type="flat"][data-lk-material-bg-color="errorcontainer"] { background: var(--lk-errorcontainer); }
150
+ [data-lk-material-layer-type="flat"][data-lk-material-bg-color="surfacecontainer"] { background: var(--lk-surfacecontainer); }
151
+ [data-lk-material-layer-type="flat"][data-lk-material-bg-color="surfacecontainerlow"] { background: var(--lk-surfacecontainerlow); }
152
+ [data-lk-material-layer-type="flat"][data-lk-material-bg-color="surfacecontainerhigh"] { background: var(--lk-surfacecontainerhigh); }
153
+ [data-lk-material-layer-type="flat"][data-lk-material-bg-color="surface"] { background: var(--lk-surface); }
154
+ [data-lk-material-layer-type="flat"][data-lk-material-bg-color="primary"] { background: var(--lk-primary); }
155
+ [data-lk-material-layer-type="flat"][data-lk-material-bg-color="secondary"] { background: var(--lk-secondary); }
156
+ [data-lk-material-layer-type="flat"][data-lk-material-bg-color="tertiary"] { background: var(--lk-tertiary); }
157
+ [data-lk-material-layer-type="flat"][data-lk-material-bg-color="error"] { background: var(--lk-error); }
158
+
159
+ /* ===== Button ===== */
160
+ /* Note: LkButton uses utility classes (.bg-primary, .color-onprimary, etc.)
161
+ for color control. This CSS handles only layout, sizing, and variant structure.
162
+ Do NOT set background/color here — it overrides the utility class colors. */
163
+ [data-lk-component="button"] {
164
+ display: inline-flex;
165
+ align-items: center;
166
+ justify-content: center;
167
+ gap: 0.5em;
168
+ border: none;
169
+ border-radius: var(--lk-size-xs, 0.382em);
170
+ cursor: pointer;
171
+ font-family: inherit;
172
+ position: relative;
173
+ overflow: hidden;
174
+ transition: background 0.15s, box-shadow 0.15s;
175
+ padding: 0.625em 1.25em;
176
+ }
177
+ [data-lk-component="button"][data-lk-button-size="sm"] {
178
+ font-size: 0.875rem;
179
+ padding: 0.375em 0.875em;
180
+ }
181
+ [data-lk-component="button"][data-lk-button-size="lg"] {
182
+ font-size: 1.125rem;
183
+ padding: 0.75em 1.5em;
184
+ }
185
+ [data-lk-component="button"][data-lk-button-variant="outline"] {
186
+ background: transparent;
187
+ border: 1px solid var(--light__outline_lkv, #79747e);
188
+ }
189
+ [data-lk-component="button"][data-lk-button-variant="text"] {
190
+ background: transparent;
191
+ }
192
+ [data-lk-component="button"]:hover {
193
+ filter: brightness(1.1);
194
+ }
195
+ [data-lk-component="button"]:disabled {
196
+ opacity: 0.38;
197
+ cursor: not-allowed;
198
+ filter: none;
199
+ }
200
+
201
+ /* ===== Icon Button ===== */
202
+ [data-lk-component="icon-button"] {
203
+ display: inline-flex;
204
+ align-items: center;
205
+ justify-content: center;
206
+ border: none;
207
+ border-radius: 50%;
208
+ cursor: pointer;
209
+ aspect-ratio: 1;
210
+ position: relative;
211
+ overflow: hidden;
212
+ padding: 0.5em;
213
+ }
214
+ /* Fill variant — color-specific backgrounds */
215
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="fill"][data-lk-icon-button-color="primary"] {
216
+ background: var(--lk-primary); color: var(--lk-onprimary);
217
+ }
218
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="fill"][data-lk-icon-button-color="secondary"] {
219
+ background: var(--lk-secondary); color: var(--lk-onsecondary);
220
+ }
221
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="fill"][data-lk-icon-button-color="tertiary"] {
222
+ background: var(--lk-tertiary); color: var(--lk-ontertiary);
223
+ }
224
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="fill"][data-lk-icon-button-color="error"] {
225
+ background: var(--lk-error); color: var(--lk-onerror);
226
+ }
227
+ /* Outline variant */
228
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="outline"] {
229
+ background: transparent;
230
+ border: 1px solid var(--light__outline_lkv, #79747e);
231
+ }
232
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="outline"][data-lk-icon-button-color="primary"] { color: var(--lk-primary); }
233
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="outline"][data-lk-icon-button-color="secondary"] { color: var(--lk-secondary); }
234
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="outline"][data-lk-icon-button-color="tertiary"] { color: var(--lk-tertiary); }
235
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="outline"][data-lk-icon-button-color="error"] { color: var(--lk-error); }
236
+ /* Text variant — minimal with color-specific text */
237
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="text"] {
238
+ background: transparent;
239
+ }
240
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="text"][data-lk-icon-button-color="primary"] { color: var(--lk-primary); }
241
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="text"][data-lk-icon-button-color="secondary"] { color: var(--lk-secondary); }
242
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="text"][data-lk-icon-button-color="tertiary"] { color: var(--lk-tertiary); }
243
+ [data-lk-component="icon-button"][data-lk-icon-button-variant="text"][data-lk-icon-button-color="error"] { color: var(--lk-error); }
244
+ /* Size */
245
+ [data-lk-component="icon-button"][data-lk-icon-button-size="xs"] { font-size: 0.75rem; }
246
+ [data-lk-component="icon-button"][data-lk-icon-button-size="sm"] { font-size: 0.875rem; }
247
+ [data-lk-component="icon-button"][data-lk-icon-button-size="lg"] { font-size: 1.25rem; }
248
+ [data-lk-component="icon-button"][data-lk-icon-button-size="xl"] { font-size: 1.5rem; }
249
+
250
+ /* ===== Switch ===== */
251
+ [data-lk-component="switch"] {
252
+ cursor: pointer;
253
+ position: relative;
254
+ display: inline-flex;
255
+ align-items: center;
256
+ width: 3.25em;
257
+ height: 2em;
258
+ border-radius: 1em;
259
+ padding: 0.25em;
260
+ transition: background 0.2s;
261
+ }
262
+ [data-lk-component="switch-thumb"] {
263
+ width: 1.5em;
264
+ height: 1.5em;
265
+ border-radius: 50%;
266
+ background: white;
267
+ transition: transform 0.2s;
268
+ box-shadow: 0 1px 3px rgba(0,0,0,0.3);
269
+ }
270
+ [data-lk-switch-state="on"] [data-lk-component="switch-thumb"] {
271
+ transform: translateX(1.25em);
272
+ }
273
+
274
+ /* ===== Text Input ===== */
275
+ [data-lk-component="text-input"] {
276
+ display: flex;
277
+ flex-direction: column;
278
+ gap: 0.375em;
279
+ }
280
+ /* The component outputs "input-wrap" (not "input-row") */
281
+ [data-lk-text-input-el="input-wrap"] {
282
+ display: flex;
283
+ align-items: center;
284
+ border: 1px solid var(--light__outline_lkv, #79747e);
285
+ border-radius: var(--lk-size-xs, 0.382em);
286
+ padding: 0.625em 0.75em;
287
+ gap: 0.5em;
288
+ background: var(--lk-surface, var(--light__surface_lkv, #fff));
289
+ transition: border-color 0.15s;
290
+ position: relative;
291
+ }
292
+ [data-lk-text-input-el="input-wrap"]:focus-within {
293
+ border-color: var(--light__primary_lkv, #6750A4);
294
+ border-width: 2px;
295
+ }
296
+ [data-lk-text-input-el="input-wrap"] input {
297
+ border: none;
298
+ outline: none;
299
+ flex: 1;
300
+ font: inherit;
301
+ background: transparent;
302
+ color: var(--lk-onsurface, var(--light__onsurface_lkv, #1c1b1f));
303
+ }
304
+ [data-lk-text-input-el="input-wrap"] input::placeholder {
305
+ color: var(--lk-onsurfacevariant, var(--light__onsurfacevariant_lkv, #49454f));
306
+ }
307
+ /* Help text row */
308
+ [data-lk-component="text-input"] [data-lk-component="row"] {
309
+ opacity: 0.7;
310
+ }
311
+
312
+ /* ===== Select ===== */
313
+ [data-lk-component="select"] {
314
+ position: relative;
315
+ }
316
+
317
+ /* ===== Dropdown ===== */
318
+ [data-lk-component="dropdown"] {
319
+ position: relative;
320
+ display: inline-block;
321
+ }
322
+
323
+ /* ===== Snackbar ===== */
324
+ [data-lk-component="snackbar"] {
325
+ position: fixed;
326
+ bottom: 1.5rem;
327
+ left: 50%;
328
+ transform: translateX(-50%);
329
+ z-index: 9999;
330
+ min-width: 300px;
331
+ max-width: 560px;
332
+ }
333
+
334
+ /* ===== Navbar ===== */
335
+ [data-lk-component="navbar"] {
336
+ position: relative;
337
+ }
338
+ [data-lk-component="navbar"] .navbar-desktop {
339
+ display: flex;
340
+ align-items: center;
341
+ gap: 1rem;
342
+ padding: 0.5rem 1rem;
343
+ }
344
+ /* Mobile menu toggle button */
345
+ [data-lk-component="navbar"] .navbar-menu-toggle {
346
+ display: inline-flex;
347
+ align-items: center;
348
+ justify-content: center;
349
+ background: transparent;
350
+ border: none;
351
+ cursor: pointer;
352
+ padding: 0.5rem;
353
+ color: inherit;
354
+ -webkit-appearance: none;
355
+ appearance: none;
356
+ }
357
+ /* Hide mobile layout by default; show at narrow viewports */
358
+ [data-lk-component="navbar"] [data-lk-navbar-el="nav-menu"] {
359
+ display: none;
360
+ }
361
+ @media (max-width: 768px) {
362
+ [data-lk-component="navbar"] .navbar-desktop {
363
+ display: none;
364
+ }
365
+ [data-lk-component="navbar"] [data-lk-navbar-el="nav-menu"] {
366
+ display: block;
367
+ }
368
+ }
369
+
370
+ /* ===== Badge ===== */
371
+ [data-lk-component="badge"] {
372
+ display: inline-flex;
373
+ align-items: center;
374
+ justify-content: center;
375
+ border-radius: 50%;
376
+ aspect-ratio: 1;
377
+ }
378
+ [data-lk-badge-scale="md"] {
379
+ width: 2.5em;
380
+ }
381
+ [data-lk-badge-scale="lg"] {
382
+ width: 4em;
383
+ }
384
+ [data-lk-badge-color="lk-primary"] { background-color: var(--lk-primary); color: var(--lk-onprimary); }
385
+ [data-lk-badge-color="lk-secondary"] { background-color: var(--lk-secondary); color: var(--lk-onsecondary); }
386
+ [data-lk-badge-color="lk-tertiary"] { background-color: var(--lk-tertiary); color: var(--lk-ontertiary); }
387
+ [data-lk-badge-color="lk-error"] { background-color: var(--lk-error); color: var(--lk-onerror); }
388
+ [data-lk-badge-color="lk-warning"] { background-color: var(--lk-warning); color: var(--lk-onwarning); }
389
+ [data-lk-badge-color="lk-success"] { background-color: var(--lk-success); color: var(--lk-onsuccess); }
390
+ [data-lk-badge-color="lk-info"] { background-color: var(--lk-info); color: var(--lk-oninfo); }
391
+ [data-lk-badge-color="lk-surface"] { background-color: var(--lk-surface); color: var(--lk-onsurface); }
392
+ [data-lk-badge-color="lk-surfacecontainer"] { background-color: var(--lk-surfacecontainer); color: var(--lk-onsurface); }
393
+
394
+ /* ===== Sticker ===== */
395
+ [data-lk-component="sticker"] {
396
+ display: inline-block;
397
+ padding: 0.25em 0.75em;
398
+ border-radius: 0.375em;
399
+ }
400
+
401
+ /* ===== Icon ===== */
402
+ [data-lk-component="icon"] {
403
+ display: inline-flex;
404
+ align-items: center;
405
+ justify-content: center;
406
+ }
407
+
408
+ /* ===== Heading ===== */
409
+ [data-lk-component="heading"] {
410
+ margin: 0;
411
+ }
412
+
413
+ /* ===== Text ===== */
414
+ [data-lk-component="text"] {
415
+ margin: 0;
416
+ }
417
+
418
+ /* ===== State Layer ===== */
419
+ [data-lk-component="state-layer"] {
420
+ position: absolute;
421
+ inset: 0;
422
+ pointer-events: none;
423
+ transition: opacity 0.15s;
424
+ opacity: 0;
425
+ }
426
+ [data-lk-component="state-layer"][data-lk-forced-state="hover"] {
427
+ opacity: 0.08;
428
+ }
429
+ [data-lk-component="state-layer"][data-lk-forced-state="active"] {
430
+ opacity: 0.12;
431
+ }
432
+ [data-lk-component="state-layer"][data-lk-forced-state="focus"] {
433
+ opacity: 0.12;
434
+ outline: 2px solid var(--light__primary_lkv, #6750A4);
435
+ outline-offset: -2px;
436
+ }
437
+ *:hover > [data-lk-component="state-layer"]:not([data-lk-forced-state]) {
438
+ opacity: 0.08;
439
+ }
440
+ *:active > [data-lk-component="state-layer"]:not([data-lk-forced-state]) {
441
+ opacity: 0.12;
442
+ }
443
+
444
+ /* ===== Material Layer ===== */
445
+ [data-lk-component="material-layer"] {
446
+ position: absolute;
447
+ inset: 0;
448
+ pointer-events: none;
449
+ }
450
+ [data-lk-material-layer-type="glass"] [data-lk-material-sublayer="blur"] {
451
+ position: absolute;
452
+ inset: 0;
453
+ backdrop-filter: blur(16px);
454
+ -webkit-backdrop-filter: blur(16px);
455
+ }
456
+ [data-lk-material-layer-type="glass"][data-lk-material-type="thin"] [data-lk-material-sublayer="blur"] {
457
+ backdrop-filter: blur(8px);
458
+ }
459
+ [data-lk-material-layer-type="glass"][data-lk-material-type="thick"] [data-lk-material-sublayer="blur"] {
460
+ backdrop-filter: blur(32px);
461
+ }
462
+
463
+ /* ===== Image ===== */
464
+ [data-lk-component="image"] img,
465
+ img[data-lk-component="image"] {
466
+ display: block;
467
+ width: 100%;
468
+ height: auto;
469
+ }
470
+ [data-lk-image-aspect="1/1"] { aspect-ratio: 1; object-fit: cover; }
471
+ [data-lk-image-aspect="16/9"] { aspect-ratio: 16 / 9; object-fit: cover; }
472
+ [data-lk-image-aspect="4/3"] { aspect-ratio: 4 / 3; object-fit: cover; }
473
+ [data-lk-image-aspect="3/2"] { aspect-ratio: 3 / 2; object-fit: cover; }
474
+ [data-lk-image-aspect="2/1"] { aspect-ratio: 2 / 1; object-fit: cover; }
475
+ [data-lk-image-aspect="9/16"] { aspect-ratio: 9 / 16; object-fit: cover; }
476
+ [data-lk-image-aspect="5/4"] { aspect-ratio: 5 / 4; object-fit: cover; }
477
+ [data-lk-image-aspect="2.39/1"] { aspect-ratio: 2.39 / 1; object-fit: cover; }
478
+
479
+ /* ===== Menu Item ===== */
480
+ [data-lk-component="menu-item"] {
481
+ display: flex;
482
+ align-items: center;
483
+ gap: 0.5em;
484
+ padding: 0.5em 0.75em;
485
+ cursor: pointer;
486
+ border-radius: var(--lk-size-xs, 0.382em);
487
+ transition: background 0.1s;
488
+ }
489
+ [data-lk-component="menu-item"]:hover {
490
+ background: color-mix(in srgb, var(--light__onsurface_lkv, #1c1b1f) 8%, transparent);
491
+ }
492
+
493
+ /* ===== Placeholder Block ===== */
494
+ [data-lk-component="placeholder-block"] {
495
+ background: color-mix(in srgb, var(--light__outlinevariant_lkv, #cac4d0) 30%, transparent);
496
+ border-radius: var(--lk-size-xs, 0.382em);
497
+ min-height: 2em;
498
+ }