mljr-css 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 (53) hide show
  1. package/README.md +299 -0
  2. package/dist/mljr.css +12214 -0
  3. package/dist/mljr.min.css +3 -0
  4. package/dist/plugin.cjs +139 -0
  5. package/dist/plugin.d.cts +73 -0
  6. package/dist/plugin.d.ts +73 -0
  7. package/dist/plugin.js +102 -0
  8. package/package.json +60 -0
  9. package/src/base/reset.css +210 -0
  10. package/src/base/typography.css +286 -0
  11. package/src/components/accordion.css +210 -0
  12. package/src/components/alert.css +231 -0
  13. package/src/components/avatar.css +222 -0
  14. package/src/components/badge.css +315 -0
  15. package/src/components/breadcrumb.css +100 -0
  16. package/src/components/button.css +383 -0
  17. package/src/components/card.css +319 -0
  18. package/src/components/carousel.css +179 -0
  19. package/src/components/checkbox.css +303 -0
  20. package/src/components/chip.css +207 -0
  21. package/src/components/divider.css +248 -0
  22. package/src/components/drawer.css +242 -0
  23. package/src/components/dropdown.css +246 -0
  24. package/src/components/empty-state.css +216 -0
  25. package/src/components/file-upload.css +262 -0
  26. package/src/components/footer.css +231 -0
  27. package/src/components/input.css +504 -0
  28. package/src/components/modal.css +179 -0
  29. package/src/components/pagination.css +143 -0
  30. package/src/components/password.css +449 -0
  31. package/src/components/popover.css +175 -0
  32. package/src/components/progress.css +165 -0
  33. package/src/components/radio.css +200 -0
  34. package/src/components/select.css +165 -0
  35. package/src/components/sidebar.css +236 -0
  36. package/src/components/skeleton.css +161 -0
  37. package/src/components/spinner.css +259 -0
  38. package/src/components/stepper.css +257 -0
  39. package/src/components/table.css +184 -0
  40. package/src/components/tabs.css +219 -0
  41. package/src/components/textarea.css +164 -0
  42. package/src/components/toast.css +294 -0
  43. package/src/components/tooltip.css +99 -0
  44. package/src/index.css +54 -0
  45. package/src/layout/container.css +181 -0
  46. package/src/layout/footer.css +319 -0
  47. package/src/layout/header.css +223 -0
  48. package/src/layout/navbar.css +461 -0
  49. package/src/layout/navigation.css +328 -0
  50. package/src/layout/sidebar.css +334 -0
  51. package/src/plugin.ts +130 -0
  52. package/src/themes/variables.css +345 -0
  53. package/src/utilities/utilities.css +598 -0
@@ -0,0 +1,598 @@
1
+ /* ============================================
2
+ MLJR CSS Framework - Utilities
3
+ Claymorphism: Soft rounded utility classes
4
+ ============================================ */
5
+
6
+ /* Display */
7
+ .mljr-hidden { display: none; }
8
+ .mljr-block { display: block; }
9
+ .mljr-inline { display: inline; }
10
+ .mljr-inline-block { display: inline-block; }
11
+
12
+ /* Visibility */
13
+ .mljr-visible { visibility: visible; }
14
+ .mljr-invisible { visibility: hidden; }
15
+
16
+ /* Overflow */
17
+ .mljr-overflow-auto { overflow: auto; }
18
+ .mljr-overflow-hidden { overflow: hidden; }
19
+ .mljr-overflow-scroll { overflow: scroll; }
20
+ .mljr-overflow-x-auto { overflow-x: auto; }
21
+ .mljr-overflow-y-auto { overflow-y: auto; }
22
+
23
+ /* Position */
24
+ .mljr-relative { position: relative; }
25
+ .mljr-absolute { position: absolute; }
26
+ .mljr-fixed { position: fixed; }
27
+ .mljr-sticky { position: sticky; }
28
+
29
+ /* Inset */
30
+ .mljr-inset-0 { inset: 0; }
31
+ .mljr-top-0 { top: 0; }
32
+ .mljr-right-0 { right: 0; }
33
+ .mljr-bottom-0 { bottom: 0; }
34
+ .mljr-left-0 { left: 0; }
35
+
36
+ /* Z-index */
37
+ .mljr-z-0 { z-index: 0; }
38
+ .mljr-z-10 { z-index: 10; }
39
+ .mljr-z-20 { z-index: 20; }
40
+ .mljr-z-30 { z-index: 30; }
41
+ .mljr-z-40 { z-index: 40; }
42
+ .mljr-z-50 { z-index: 50; }
43
+
44
+ /* Width & Height */
45
+ .mljr-w-full { width: 100%; }
46
+ .mljr-w-auto { width: auto; }
47
+ .mljr-w-screen { width: 100vw; }
48
+ .mljr-h-full { height: 100%; }
49
+ .mljr-h-auto { height: auto; }
50
+ .mljr-h-screen { height: 100vh; }
51
+ .mljr-min-h-screen { min-height: 100vh; }
52
+
53
+ /* Margin */
54
+ .mljr-m-0 { margin: 0; }
55
+ .mljr-m-auto { margin: auto; }
56
+ .mljr-mx-auto { margin-left: auto; margin-right: auto; }
57
+ .mljr-my-auto { margin-top: auto; margin-bottom: auto; }
58
+ .mljr-mt-0 { margin-top: 0; }
59
+ .mljr-mt-1 { margin-top: var(--mljr-space-1); }
60
+ .mljr-mt-2 { margin-top: var(--mljr-space-2); }
61
+ .mljr-mt-3 { margin-top: var(--mljr-space-3); }
62
+ .mljr-mt-4 { margin-top: var(--mljr-space-4); }
63
+ .mljr-mt-6 { margin-top: var(--mljr-space-6); }
64
+ .mljr-mt-8 { margin-top: var(--mljr-space-8); }
65
+ .mljr-mb-0 { margin-bottom: 0; }
66
+ .mljr-mb-1 { margin-bottom: var(--mljr-space-1); }
67
+ .mljr-mb-2 { margin-bottom: var(--mljr-space-2); }
68
+ .mljr-mb-3 { margin-bottom: var(--mljr-space-3); }
69
+ .mljr-mb-4 { margin-bottom: var(--mljr-space-4); }
70
+ .mljr-mb-6 { margin-bottom: var(--mljr-space-6); }
71
+ .mljr-mb-8 { margin-bottom: var(--mljr-space-8); }
72
+
73
+ /* Padding */
74
+ .mljr-p-0 { padding: 0; }
75
+ .mljr-p-1 { padding: var(--mljr-space-1); }
76
+ .mljr-p-2 { padding: var(--mljr-space-2); }
77
+ .mljr-p-3 { padding: var(--mljr-space-3); }
78
+ .mljr-p-4 { padding: var(--mljr-space-4); }
79
+ .mljr-p-6 { padding: var(--mljr-space-6); }
80
+ .mljr-p-8 { padding: var(--mljr-space-8); }
81
+ .mljr-px-4 { padding-left: var(--mljr-space-4); padding-right: var(--mljr-space-4); }
82
+ .mljr-py-4 { padding-top: var(--mljr-space-4); padding-bottom: var(--mljr-space-4); }
83
+
84
+ /* Text */
85
+ .mljr-text-left { text-align: left; }
86
+ .mljr-text-center { text-align: center; }
87
+ .mljr-text-right { text-align: right; }
88
+ .mljr-text-justify { text-align: justify; }
89
+
90
+ .mljr-text-xs { font-size: var(--mljr-text-xs); }
91
+ .mljr-text-sm { font-size: var(--mljr-text-sm); }
92
+ .mljr-text-base { font-size: var(--mljr-text-base); }
93
+ .mljr-text-lg { font-size: var(--mljr-text-lg); }
94
+ .mljr-text-xl { font-size: var(--mljr-text-xl); }
95
+ .mljr-text-2xl { font-size: var(--mljr-text-2xl); }
96
+ .mljr-text-3xl { font-size: var(--mljr-text-3xl); }
97
+ .mljr-text-4xl { font-size: var(--mljr-text-4xl); }
98
+
99
+ .mljr-font-normal { font-weight: 400; }
100
+ .mljr-font-medium { font-weight: 500; }
101
+ .mljr-font-semibold { font-weight: 600; }
102
+ .mljr-font-bold { font-weight: 700; }
103
+
104
+ .mljr-uppercase { text-transform: uppercase; }
105
+ .mljr-lowercase { text-transform: lowercase; }
106
+ .mljr-capitalize { text-transform: capitalize; }
107
+
108
+ .mljr-truncate {
109
+ overflow: hidden;
110
+ text-overflow: ellipsis;
111
+ white-space: nowrap;
112
+ }
113
+
114
+ .mljr-line-clamp-2 {
115
+ display: -webkit-box;
116
+ -webkit-line-clamp: 2;
117
+ -webkit-box-orient: vertical;
118
+ overflow: hidden;
119
+ }
120
+
121
+ .mljr-line-clamp-3 {
122
+ display: -webkit-box;
123
+ -webkit-line-clamp: 3;
124
+ -webkit-box-orient: vertical;
125
+ overflow: hidden;
126
+ }
127
+
128
+ /* Colors */
129
+ .mljr-text-primary { color: var(--mljr-primary-600); }
130
+ .mljr-text-secondary { color: var(--mljr-secondary-600); }
131
+ .mljr-text-success { color: var(--mljr-success); }
132
+ .mljr-text-warning { color: var(--mljr-warning); }
133
+ .mljr-text-error { color: var(--mljr-error); }
134
+ .mljr-text-info { color: var(--mljr-info); }
135
+ .mljr-text-muted { color: var(--mljr-text-muted); }
136
+
137
+ .mljr-bg-primary { background-color: var(--mljr-primary-600); }
138
+ .mljr-bg-secondary { background-color: var(--mljr-secondary-600); }
139
+ .mljr-bg-success { background-color: var(--mljr-success); }
140
+ .mljr-bg-warning { background-color: var(--mljr-warning); }
141
+ .mljr-bg-error { background-color: var(--mljr-error); }
142
+ .mljr-bg-info { background-color: var(--mljr-info); }
143
+
144
+ /* Border */
145
+ .mljr-border { border: 1px solid var(--mljr-border); }
146
+ .mljr-border-0 { border: none; }
147
+ .mljr-border-t { border-top: 1px solid var(--mljr-border); }
148
+ .mljr-border-b { border-bottom: 1px solid var(--mljr-border); }
149
+ .mljr-border-l { border-left: 1px solid var(--mljr-border); }
150
+ .mljr-border-r { border-right: 1px solid var(--mljr-border); }
151
+
152
+ .mljr-rounded { border-radius: var(--mljr-radius); }
153
+ .mljr-rounded-sm { border-radius: var(--mljr-radius-sm); }
154
+ .mljr-rounded-md { border-radius: var(--mljr-radius-md); }
155
+ .mljr-rounded-lg { border-radius: var(--mljr-radius-lg); }
156
+ .mljr-rounded-xl { border-radius: var(--mljr-radius-xl); }
157
+ .mljr-rounded-2xl { border-radius: var(--mljr-radius-2xl); }
158
+ .mljr-rounded-full { border-radius: var(--mljr-radius-full); }
159
+ .mljr-rounded-none { border-radius: 0; }
160
+
161
+ /* Shadow */
162
+ .mljr-shadow-sm { box-shadow: var(--mljr-shadow-sm); }
163
+ .mljr-shadow { box-shadow: var(--mljr-shadow); }
164
+ .mljr-shadow-md { box-shadow: var(--mljr-shadow-md); }
165
+ .mljr-shadow-lg { box-shadow: var(--mljr-shadow-lg); }
166
+ .mljr-shadow-xl { box-shadow: var(--mljr-shadow-xl); }
167
+ .mljr-shadow-none { box-shadow: none; }
168
+
169
+ /* Opacity */
170
+ .mljr-opacity-0 { opacity: 0; }
171
+ .mljr-opacity-25 { opacity: 0.25; }
172
+ .mljr-opacity-50 { opacity: 0.5; }
173
+ .mljr-opacity-75 { opacity: 0.75; }
174
+ .mljr-opacity-100 { opacity: 1; }
175
+
176
+ /* Cursor */
177
+ .mljr-cursor-pointer { cursor: pointer; }
178
+ .mljr-cursor-not-allowed { cursor: not-allowed; }
179
+ .mljr-cursor-wait { cursor: wait; }
180
+
181
+ /* Pointer Events */
182
+ .mljr-pointer-events-none { pointer-events: none; }
183
+ .mljr-pointer-events-auto { pointer-events: auto; }
184
+
185
+ /* User Select */
186
+ .mljr-select-none { user-select: none; }
187
+ .mljr-select-text { user-select: text; }
188
+ .mljr-select-all { user-select: all; }
189
+
190
+ /* Screen Reader Only */
191
+ .mljr-sr-only {
192
+ position: absolute;
193
+ width: 1px;
194
+ height: 1px;
195
+ padding: 0;
196
+ margin: -1px;
197
+ overflow: hidden;
198
+ clip: rect(0, 0, 0, 0);
199
+ white-space: nowrap;
200
+ border-width: 0;
201
+ }
202
+
203
+ /* Focus Ring */
204
+ .mljr-focus-ring:focus-visible {
205
+ outline: 3px solid var(--mljr-primary-300);
206
+ outline-offset: 2px;
207
+ }
208
+
209
+ /* Transition */
210
+ .mljr-transition { transition: all var(--mljr-transition); }
211
+ .mljr-transition-fast { transition: all var(--mljr-transition-fast); }
212
+ .mljr-transition-slow { transition: all var(--mljr-transition-slow); }
213
+ .mljr-transition-none { transition: none; }
214
+
215
+ /* Animation */
216
+ .mljr-animate-spin {
217
+ animation: mljr-spin 1s linear infinite;
218
+ }
219
+
220
+ .mljr-animate-pulse {
221
+ animation: mljr-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
222
+ }
223
+
224
+ .mljr-animate-bounce {
225
+ animation: mljr-bounce 1s infinite;
226
+ }
227
+
228
+ @keyframes mljr-pulse {
229
+ 0%, 100% { opacity: 1; }
230
+ 50% { opacity: 0.5; }
231
+ }
232
+
233
+ @keyframes mljr-bounce {
234
+ 0%, 100% {
235
+ transform: translateY(-25%);
236
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
237
+ }
238
+ 50% {
239
+ transform: translateY(0);
240
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
241
+ }
242
+ }
243
+
244
+ /* Responsive Utilities */
245
+ @media (min-width: 640px) {
246
+ .mljr-sm\:hidden { display: none; }
247
+ .mljr-sm\:block { display: block; }
248
+ .mljr-sm\:flex { display: flex; }
249
+ .mljr-sm\:grid { display: grid; }
250
+ }
251
+
252
+ @media (min-width: 768px) {
253
+ .mljr-md\:hidden { display: none; }
254
+ .mljr-md\:block { display: block; }
255
+ .mljr-md\:flex { display: flex; }
256
+ .mljr-md\:grid { display: grid; }
257
+ }
258
+
259
+ @media (min-width: 1024px) {
260
+ .mljr-lg\:hidden { display: none; }
261
+ .mljr-lg\:block { display: block; }
262
+ .mljr-lg\:flex { display: flex; }
263
+ .mljr-lg\:grid { display: grid; }
264
+ }
265
+
266
+ /* ============================================
267
+ Claymorphism Utilities
268
+ Soft, rounded, playful 3D effects
269
+ ============================================ */
270
+
271
+ /* Clay Shadow - Raised/convex effect */
272
+ .mljr-clay {
273
+ box-shadow: var(--mljr-clay-shadow);
274
+ }
275
+
276
+ .mljr-clay-sm {
277
+ box-shadow: var(--mljr-clay-shadow-sm);
278
+ }
279
+
280
+ .mljr-clay-lg {
281
+ box-shadow: var(--mljr-clay-shadow-lg);
282
+ }
283
+
284
+ /* Clay Inset - Pressed/concave effect */
285
+ .mljr-clay-inset {
286
+ box-shadow: var(--mljr-clay-inset);
287
+ }
288
+
289
+ .mljr-clay-inset-sm {
290
+ box-shadow: var(--mljr-clay-inset-sm);
291
+ }
292
+
293
+ /* Clay Button - Raised with inner highlight */
294
+ .mljr-clay-btn {
295
+ box-shadow: var(--mljr-clay-btn);
296
+ }
297
+
298
+ /* Hover clay effects */
299
+ .mljr-hover-clay:hover {
300
+ box-shadow: var(--mljr-clay-shadow);
301
+ transform: translateY(-2px);
302
+ transition: all var(--mljr-transition);
303
+ }
304
+
305
+ .mljr-hover-clay-lg:hover {
306
+ box-shadow: var(--mljr-clay-shadow-lg);
307
+ transform: translateY(-4px);
308
+ transition: all var(--mljr-transition);
309
+ }
310
+
311
+ /* Active/pressed clay effect */
312
+ .mljr-active-clay:active {
313
+ box-shadow: var(--mljr-clay-inset-sm);
314
+ transform: translateY(0);
315
+ }
316
+
317
+ /* Frosted Glass Effect */
318
+ .mljr-frosted {
319
+ background: var(--mljr-frosted-bg);
320
+ backdrop-filter: blur(12px);
321
+ -webkit-backdrop-filter: blur(12px);
322
+ border: 1px solid var(--mljr-frosted-border);
323
+ }
324
+
325
+ .mljr-frosted-strong {
326
+ background: var(--mljr-frosted-bg-strong);
327
+ backdrop-filter: blur(20px);
328
+ -webkit-backdrop-filter: blur(20px);
329
+ border: 1px solid var(--mljr-frosted-border-strong);
330
+ }
331
+
332
+ .mljr-frosted-subtle {
333
+ background: var(--mljr-frosted-bg-subtle);
334
+ backdrop-filter: blur(8px);
335
+ -webkit-backdrop-filter: blur(8px);
336
+ border: 1px solid var(--mljr-frosted-border);
337
+ }
338
+
339
+ /* Rounded Clay - Large border radius for clay look */
340
+ .mljr-rounded-clay {
341
+ border-radius: var(--mljr-radius-xl);
342
+ }
343
+
344
+ .mljr-rounded-clay-sm {
345
+ border-radius: var(--mljr-radius-lg);
346
+ }
347
+
348
+ .mljr-rounded-clay-lg {
349
+ border-radius: var(--mljr-radius-2xl);
350
+ }
351
+
352
+ /* ============================================
353
+ Gradient Utilities (Soft/Warm)
354
+ ============================================ */
355
+
356
+ /* Gradient text */
357
+ .mljr-gradient-text-primary {
358
+ background: linear-gradient(135deg, var(--mljr-primary-500) 0%, var(--mljr-primary-700) 100%);
359
+ -webkit-background-clip: text;
360
+ -webkit-text-fill-color: transparent;
361
+ background-clip: text;
362
+ }
363
+
364
+ .mljr-gradient-text-secondary {
365
+ background: linear-gradient(135deg, var(--mljr-secondary-400) 0%, var(--mljr-secondary-600) 100%);
366
+ -webkit-background-clip: text;
367
+ -webkit-text-fill-color: transparent;
368
+ background-clip: text;
369
+ }
370
+
371
+ .mljr-gradient-text-accent {
372
+ background: linear-gradient(135deg, var(--mljr-accent-400) 0%, var(--mljr-accent-600) 100%);
373
+ -webkit-background-clip: text;
374
+ -webkit-text-fill-color: transparent;
375
+ background-clip: text;
376
+ }
377
+
378
+ /* Multi-color gradient (brand colors) */
379
+ .mljr-gradient-text-brand {
380
+ background: linear-gradient(135deg, var(--mljr-primary-400) 0%, var(--mljr-accent-500) 50%, var(--mljr-secondary-500) 100%);
381
+ -webkit-background-clip: text;
382
+ -webkit-text-fill-color: transparent;
383
+ background-clip: text;
384
+ }
385
+
386
+ /* Background gradients */
387
+ .mljr-bg-gradient-primary {
388
+ background: var(--mljr-gradient-primary);
389
+ }
390
+
391
+ .mljr-bg-gradient-secondary {
392
+ background: var(--mljr-gradient-secondary);
393
+ }
394
+
395
+ .mljr-bg-gradient-accent {
396
+ background: var(--mljr-gradient-accent);
397
+ }
398
+
399
+ .mljr-bg-gradient-brand {
400
+ background: var(--mljr-gradient-brand);
401
+ }
402
+
403
+ /* Soft warm mesh gradient */
404
+ .mljr-bg-mesh-warm {
405
+ background:
406
+ radial-gradient(ellipse at 20% 30%, rgba(249, 115, 22, 0.15) 0%, transparent 55%),
407
+ radial-gradient(ellipse at 80% 70%, rgba(168, 85, 247, 0.12) 0%, transparent 55%),
408
+ radial-gradient(ellipse at 50% 100%, rgba(20, 184, 166, 0.1) 0%, transparent 55%),
409
+ var(--mljr-bg);
410
+ }
411
+
412
+ /* Animated gradient background */
413
+ .mljr-bg-gradient-animated {
414
+ background: linear-gradient(
415
+ -45deg,
416
+ var(--mljr-primary-300),
417
+ var(--mljr-primary-500),
418
+ var(--mljr-secondary-400),
419
+ var(--mljr-accent-400)
420
+ );
421
+ background-size: 400% 400%;
422
+ animation: mljr-gradient-shift 8s ease infinite;
423
+ }
424
+
425
+ @keyframes mljr-gradient-shift {
426
+ 0% { background-position: 0% 50%; }
427
+ 50% { background-position: 100% 50%; }
428
+ 100% { background-position: 0% 50%; }
429
+ }
430
+
431
+ /* ============================================
432
+ Status Indicators (Soft/Rounded)
433
+ ============================================ */
434
+
435
+ /* Soft status dot */
436
+ .mljr-status-dot {
437
+ width: 10px;
438
+ height: 10px;
439
+ border-radius: var(--mljr-radius-full);
440
+ display: inline-block;
441
+ box-shadow: var(--mljr-clay-shadow-sm);
442
+ }
443
+
444
+ .mljr-status-dot-primary {
445
+ background: var(--mljr-gradient-primary);
446
+ }
447
+
448
+ .mljr-status-dot-secondary {
449
+ background: var(--mljr-gradient-secondary);
450
+ }
451
+
452
+ .mljr-status-dot-success {
453
+ background: var(--mljr-success);
454
+ }
455
+
456
+ .mljr-status-dot-warning {
457
+ background: var(--mljr-warning);
458
+ }
459
+
460
+ .mljr-status-dot-error {
461
+ background: var(--mljr-error);
462
+ }
463
+
464
+ /* Pulsing status dot */
465
+ .mljr-status-dot-pulse {
466
+ animation: mljr-status-pulse 2s ease-in-out infinite;
467
+ }
468
+
469
+ @keyframes mljr-status-pulse {
470
+ 0%, 100% {
471
+ opacity: 1;
472
+ transform: scale(1);
473
+ }
474
+ 50% {
475
+ opacity: 0.6;
476
+ transform: scale(0.9);
477
+ }
478
+ }
479
+
480
+ /* ============================================
481
+ Playful Hover Effects
482
+ ============================================ */
483
+
484
+ /* Lift on hover */
485
+ .mljr-hover-lift:hover {
486
+ transform: translateY(-4px);
487
+ transition: transform var(--mljr-transition);
488
+ }
489
+
490
+ /* Scale on hover */
491
+ .mljr-hover-scale:hover {
492
+ transform: scale(1.02);
493
+ transition: transform var(--mljr-transition);
494
+ }
495
+
496
+ /* Subtle bounce on hover */
497
+ .mljr-hover-bounce:hover {
498
+ animation: mljr-subtle-bounce 0.4s ease;
499
+ }
500
+
501
+ @keyframes mljr-subtle-bounce {
502
+ 0% { transform: translateY(0); }
503
+ 50% { transform: translateY(-6px); }
504
+ 100% { transform: translateY(0); }
505
+ }
506
+
507
+ /* Soft glow on hover (warm) */
508
+ .mljr-hover-glow:hover {
509
+ box-shadow:
510
+ var(--mljr-clay-shadow),
511
+ 0 0 20px rgba(249, 115, 22, 0.15);
512
+ transition: box-shadow var(--mljr-transition);
513
+ }
514
+
515
+ /* ============================================
516
+ Soft Panel/Container Utilities
517
+ ============================================ */
518
+
519
+ /* Soft panel - combines clay effects */
520
+ .mljr-soft-panel {
521
+ background: var(--mljr-bg);
522
+ border-radius: var(--mljr-radius-xl);
523
+ box-shadow: var(--mljr-clay-shadow);
524
+ border: 1px solid rgba(255, 255, 255, 0.5);
525
+ }
526
+
527
+ .dark .mljr-soft-panel,
528
+ [data-theme="dark"] .mljr-soft-panel {
529
+ background: var(--mljr-bg-secondary);
530
+ border-color: rgba(68, 64, 60, 0.3);
531
+ }
532
+
533
+ /* Inset panel - pressed appearance */
534
+ .mljr-inset-panel {
535
+ background: var(--mljr-bg-secondary);
536
+ border-radius: var(--mljr-radius-lg);
537
+ box-shadow: var(--mljr-clay-inset-sm);
538
+ }
539
+
540
+ /* Floating panel - elevated appearance */
541
+ .mljr-floating-panel {
542
+ background: var(--mljr-bg);
543
+ border-radius: var(--mljr-radius-2xl);
544
+ box-shadow: var(--mljr-clay-shadow-lg);
545
+ border: 1px solid rgba(255, 255, 255, 0.6);
546
+ }
547
+
548
+ .dark .mljr-floating-panel,
549
+ [data-theme="dark"] .mljr-floating-panel {
550
+ background: var(--mljr-bg-secondary);
551
+ border-color: rgba(68, 64, 60, 0.4);
552
+ }
553
+
554
+ /* ============================================
555
+ Display Font Utility
556
+ ============================================ */
557
+
558
+ .mljr-font-display {
559
+ font-family: var(--mljr-font-display);
560
+ }
561
+
562
+ /* ============================================
563
+ Soft Shimmer Animation
564
+ ============================================ */
565
+
566
+ .mljr-shimmer {
567
+ position: relative;
568
+ overflow: hidden;
569
+ }
570
+
571
+ .mljr-shimmer::after {
572
+ content: '';
573
+ position: absolute;
574
+ inset: 0;
575
+ background: linear-gradient(
576
+ 105deg,
577
+ transparent 40%,
578
+ rgba(255, 255, 255, 0.4) 50%,
579
+ transparent 60%
580
+ );
581
+ transform: translateX(-100%);
582
+ animation: mljr-shimmer 2.5s ease-in-out infinite;
583
+ }
584
+
585
+ @keyframes mljr-shimmer {
586
+ 0% { transform: translateX(-100%); }
587
+ 100% { transform: translateX(100%); }
588
+ }
589
+
590
+ .dark .mljr-shimmer::after,
591
+ [data-theme="dark"] .mljr-shimmer::after {
592
+ background: linear-gradient(
593
+ 105deg,
594
+ transparent 40%,
595
+ rgba(255, 255, 255, 0.1) 50%,
596
+ transparent 60%
597
+ );
598
+ }