@datametria/vue-components 1.1.1 → 1.1.3

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.
@@ -1,31 +1,623 @@
1
- :root {
2
- --dm-primary: #0072CE;
3
- --dm-secondary: #4B0078;
4
- --dm-success: #10b981;
5
- --dm-error: #ef4444;
6
- --dm-warning: #f59e0b;
7
-
8
- --dm-gray-50: #f9fafb;
9
- --dm-gray-100: #f3f4f6;
10
- --dm-gray-700: #374151;
11
- --dm-gray-900: #111827;
12
-
13
- --dm-space-2: 0.5rem;
14
- --dm-space-3: 0.75rem;
15
- --dm-space-4: 1rem;
16
-
17
- --dm-text-sm: 0.875rem;
18
- --dm-text-base: 1rem;
19
- --dm-text-lg: 1.125rem;
20
-
21
- --dm-radius: 0.375rem;
22
- --dm-transition: 200ms ease-in-out;
23
- --dm-focus-ring: 0 0 0 3px rgba(0, 114, 206, 0.1);
24
- }
25
-
26
- @media (max-width: 640px) {
27
- :root {
28
- --dm-text-sm: 0.8rem;
29
- --dm-text-base: 0.9rem;
30
- }
31
- }
1
+ :root {
2
+ --dm-primary: #0072CE;
3
+ --dm-secondary: #4B0078;
4
+ --dm-success: #10b981;
5
+ --dm-error: #ef4444;
6
+ --dm-warning: #f59e0b;
7
+ --dm-info: #06b6d4;
8
+
9
+ --dm-gray-50: #f9fafb;
10
+ --dm-gray-100: #f3f4f6;
11
+ --dm-gray-700: #374151;
12
+ --dm-gray-900: #111827;
13
+
14
+ /* Gradientes corporativos */
15
+ --gradient-primary: linear-gradient(135deg, #0072CE 0%, #005ba3 100%);
16
+ --gradient-secondary: linear-gradient(135deg, #4B0078 0%, #3a005c 100%);
17
+ --gradient-success: linear-gradient(135deg, #10b981 0%, #059669 100%);
18
+ --gradient-warning: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
19
+
20
+ /* Bordas temáticas */
21
+ --border-success: #10b981;
22
+ --border-warning: #f59e0b;
23
+ --border-info: #06b6d4;
24
+ --border-feature: #8b5cf6;
25
+ --border-error: #ef4444;
26
+
27
+ --dm-space-2: 0.5rem;
28
+ --dm-space-3: 0.75rem;
29
+ --dm-space-4: 1rem;
30
+
31
+ --dm-text-sm: 0.875rem;
32
+ --dm-text-base: 1rem;
33
+ --dm-text-lg: 1.125rem;
34
+
35
+ /* Fluid typography */
36
+ --dm-text-xs-fluid: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
37
+ --dm-text-sm-fluid: clamp(0.875rem, 0.8rem + 0.375vw, 1rem);
38
+ --dm-text-base-fluid: clamp(1rem, 0.9rem + 0.5vw, 1.125rem);
39
+ --dm-text-lg-fluid: clamp(1.125rem, 1rem + 0.625vw, 1.25rem);
40
+ --dm-text-xl-fluid: clamp(1.25rem, 1.1rem + 0.75vw, 1.5rem);
41
+ --dm-text-2xl-fluid: clamp(1.5rem, 1.3rem + 1vw, 1.875rem);
42
+ --dm-text-3xl-fluid: clamp(1.875rem, 1.6rem + 1.375vw, 2.25rem);
43
+
44
+ --dm-radius: 0.375rem;
45
+ --dm-transition: 200ms ease-in-out;
46
+ --dm-focus-ring: 0 0 0 3px rgba(0, 114, 206, 0.1);
47
+
48
+ /* Accessibility Scale (default 1.0, range 0.8-2.0) */
49
+ --user-scale: 1.0;
50
+
51
+ /* Scaled typography */
52
+ --dm-text-sm-scaled: calc(var(--dm-text-sm) * var(--user-scale));
53
+ --dm-text-base-scaled: calc(var(--dm-text-base) * var(--user-scale));
54
+ --dm-text-lg-scaled: calc(var(--dm-text-lg) * var(--user-scale));
55
+
56
+ /* Scaled spacing */
57
+ --dm-space-2-scaled: calc(var(--dm-space-2) * var(--user-scale));
58
+ --dm-space-3-scaled: calc(var(--dm-space-3) * var(--user-scale));
59
+ --dm-space-4-scaled: calc(var(--dm-space-4) * var(--user-scale));
60
+
61
+ /* Shimmer animation */
62
+ --shimmer-bg: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.4) 50%, transparent 100%);
63
+ --shimmer-duration: 1.5s;
64
+
65
+ /* Enhanced transitions */
66
+ --transition-fast: 150ms ease-out;
67
+ --transition-normal: 200ms ease-in-out;
68
+ --transition-slow: 300ms ease-in-out;
69
+ --transition-bounce: 400ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
70
+ --transition-smooth: 250ms cubic-bezier(0.4, 0, 0.2, 1);
71
+
72
+ /* Responsive breakpoints */
73
+ --breakpoint-xs: 475px;
74
+ --breakpoint-sm: 640px;
75
+ --breakpoint-md: 768px;
76
+ --breakpoint-lg: 1024px;
77
+ --breakpoint-xl: 1280px;
78
+ --breakpoint-2xl: 1536px;
79
+
80
+ /* Fluid spacing system */
81
+ --space-xs-fluid: clamp(0.25rem, 0.2rem + 0.25vw, 0.375rem);
82
+ --space-sm-fluid: clamp(0.5rem, 0.4rem + 0.5vw, 0.75rem);
83
+ --space-md-fluid: clamp(1rem, 0.8rem + 1vw, 1.5rem);
84
+ --space-lg-fluid: clamp(1.5rem, 1.2rem + 1.5vw, 2.25rem);
85
+ --space-xl-fluid: clamp(2rem, 1.6rem + 2vw, 3rem);
86
+ --space-2xl-fluid: clamp(2.5rem, 2rem + 2.5vw, 3.75rem);
87
+
88
+ /* Fluid border radius */
89
+ --radius-sm-fluid: clamp(0.125rem, 0.1rem + 0.125vw, 0.25rem);
90
+ --radius-md-fluid: clamp(0.375rem, 0.3rem + 0.375vw, 0.5rem);
91
+ --radius-lg-fluid: clamp(0.5rem, 0.4rem + 0.5vw, 0.75rem);
92
+ --radius-xl-fluid: clamp(0.75rem, 0.6rem + 0.75vw, 1rem);
93
+
94
+ /* Container max-widths */
95
+ --container-xs: 475px;
96
+ --container-sm: 640px;
97
+ --container-md: 768px;
98
+ --container-lg: 1024px;
99
+ --container-xl: 1280px;
100
+ --container-2xl: 1536px;
101
+
102
+ /* Grid system */
103
+ --grid-cols-1: repeat(1, minmax(0, 1fr));
104
+ --grid-cols-2: repeat(2, minmax(0, 1fr));
105
+ --grid-cols-3: repeat(3, minmax(0, 1fr));
106
+ --grid-cols-4: repeat(4, minmax(0, 1fr));
107
+ --grid-cols-6: repeat(6, minmax(0, 1fr));
108
+ --grid-cols-12: repeat(12, minmax(0, 1fr));
109
+
110
+ /* Responsive grid gaps */
111
+ --gap-xs: clamp(0.5rem, 0.4rem + 0.5vw, 0.75rem);
112
+ --gap-sm: clamp(0.75rem, 0.6rem + 0.75vw, 1rem);
113
+ --gap-md: clamp(1rem, 0.8rem + 1vw, 1.5rem);
114
+ --gap-lg: clamp(1.5rem, 1.2rem + 1.5vw, 2rem);
115
+ --gap-xl: clamp(2rem, 1.6rem + 2vw, 2.5rem);
116
+ }
117
+ }
118
+
119
+ /* Dark Mode Variables */
120
+ [data-theme="dark"] {
121
+ --dm-primary: #3b82f6;
122
+ --dm-secondary: #8b5cf6;
123
+ --dm-success: #22c55e;
124
+ --dm-error: #f87171;
125
+ --dm-warning: #fbbf24;
126
+ --dm-info: #38bdf8;
127
+
128
+ --dm-bg-primary: #111827;
129
+ --dm-bg-secondary: #1f2937;
130
+ --dm-text-primary: #f9fafb;
131
+ --dm-text-secondary: #d1d5db;
132
+
133
+ --dm-gray-50: #1f2937;
134
+ --dm-gray-100: #374151;
135
+ --dm-gray-700: #d1d5db;
136
+ --dm-gray-900: #f9fafb;
137
+
138
+ /* Dark mode gradients */
139
+ --gradient-primary: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);
140
+ --gradient-secondary: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);
141
+ --gradient-success: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
142
+ --gradient-warning: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
143
+
144
+ /* Dark mode borders */
145
+ --border-success: #22c55e;
146
+ --border-warning: #fbbf24;
147
+ --border-info: #38bdf8;
148
+ --border-feature: #a78bfa;
149
+ --border-error: #f87171;
150
+
151
+ /* Dark mode shimmer */
152
+ --shimmer-bg: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.1) 50%, transparent 100%);
153
+ }
154
+
155
+ /* Shimmer Animation */
156
+ @keyframes shimmer {
157
+ 0% {
158
+ background-position: -200% 0;
159
+ }
160
+ 100% {
161
+ background-position: 200% 0;
162
+ }
163
+ }
164
+
165
+ .shimmer {
166
+ background: var(--dm-gray-200, #e5e7eb);
167
+ background-image: var(--shimmer-bg);
168
+ background-size: 200% 100%;
169
+ background-repeat: no-repeat;
170
+ animation: shimmer var(--shimmer-duration) ease-in-out infinite;
171
+ }
172
+
173
+ [data-theme="dark"] .shimmer {
174
+ background: var(--dm-gray-700, #374151);
175
+ }
176
+
177
+ /* Enhanced transition utilities */
178
+ .transition-fast {
179
+ transition: all var(--transition-fast);
180
+ }
181
+
182
+ .transition-normal {
183
+ transition: all var(--transition-normal);
184
+ }
185
+
186
+ .transition-slow {
187
+ transition: all var(--transition-slow);
188
+ }
189
+
190
+ .transition-bounce {
191
+ transition: all var(--transition-bounce);
192
+ }
193
+
194
+ .transition-smooth {
195
+ transition: all var(--transition-smooth);
196
+ }
197
+
198
+ /* Fade transitions */
199
+ .fade-enter-active,
200
+ .fade-leave-active {
201
+ transition: opacity var(--transition-normal);
202
+ }
203
+
204
+ .fade-enter-from,
205
+ .fade-leave-to {
206
+ opacity: 0;
207
+ }
208
+
209
+ /* Slide transitions */
210
+ .slide-up-enter-active,
211
+ .slide-up-leave-active {
212
+ transition: all var(--transition-smooth);
213
+ }
214
+
215
+ .slide-up-enter-from {
216
+ opacity: 0;
217
+ transform: translateY(20px);
218
+ }
219
+
220
+ .slide-up-leave-to {
221
+ opacity: 0;
222
+ transform: translateY(-20px);
223
+ }
224
+
225
+ .slide-down-enter-active,
226
+ .slide-down-leave-active {
227
+ transition: all var(--transition-smooth);
228
+ }
229
+
230
+ .slide-down-enter-from {
231
+ opacity: 0;
232
+ transform: translateY(-20px);
233
+ }
234
+
235
+ .slide-down-leave-to {
236
+ opacity: 0;
237
+ transform: translateY(20px);
238
+ }
239
+
240
+ /* Scale transitions */
241
+ .scale-enter-active,
242
+ .scale-leave-active {
243
+ transition: all var(--transition-bounce);
244
+ }
245
+
246
+ .scale-enter-from,
247
+ .scale-leave-to {
248
+ opacity: 0;
249
+ transform: scale(0.9);
250
+ }
251
+
252
+ /* Respect user motion preferences */
253
+ @media (prefers-reduced-motion: reduce) {
254
+ .shimmer {
255
+ animation: none;
256
+ }
257
+
258
+ .transition-fast,
259
+ .transition-normal,
260
+ .transition-slow,
261
+ .transition-bounce,
262
+ .transition-smooth {
263
+ transition: none;
264
+ }
265
+
266
+ .fade-enter-active,
267
+ .fade-leave-active,
268
+ .slide-up-enter-active,
269
+ .slide-up-leave-active,
270
+ .slide-down-enter-active,
271
+ .slide-down-leave-active,
272
+ .scale-enter-active,
273
+ .scale-leave-active {
274
+ transition: none;
275
+ }
276
+ }
277
+
278
+ /* Responsive breakpoints */
279
+ @media (min-width: 475px) {
280
+ .xs\:block { display: block; }
281
+ .xs\:hidden { display: none; }
282
+ .xs\:text-sm { font-size: var(--dm-text-sm); }
283
+ .xs\:text-base { font-size: var(--dm-text-base); }
284
+ }
285
+
286
+ @media (min-width: 640px) {
287
+ .sm\:block { display: block; }
288
+ .sm\:hidden { display: none; }
289
+ .sm\:text-sm { font-size: var(--dm-text-sm); }
290
+ .sm\:text-base { font-size: var(--dm-text-base); }
291
+ .sm\:text-lg { font-size: var(--dm-text-lg); }
292
+ }
293
+
294
+ @media (min-width: 768px) {
295
+ .md\:block { display: block; }
296
+ .md\:hidden { display: none; }
297
+ .md\:text-sm { font-size: var(--dm-text-sm); }
298
+ .md\:text-base { font-size: var(--dm-text-base); }
299
+ .md\:text-lg { font-size: var(--dm-text-lg); }
300
+ .md\:text-xl { font-size: 1.25rem; }
301
+ }
302
+
303
+ @media (min-width: 1024px) {
304
+ .lg\:block { display: block; }
305
+ .lg\:hidden { display: none; }
306
+ .lg\:text-sm { font-size: var(--dm-text-sm); }
307
+ .lg\:text-base { font-size: var(--dm-text-base); }
308
+ .lg\:text-lg { font-size: var(--dm-text-lg); }
309
+ .lg\:text-xl { font-size: 1.25rem; }
310
+ .lg\:text-2xl { font-size: 1.5rem; }
311
+ }
312
+
313
+ @media (min-width: 1280px) {
314
+ .xl\:block { display: block; }
315
+ .xl\:hidden { display: none; }
316
+ .xl\:text-lg { font-size: var(--dm-text-lg); }
317
+ .xl\:text-xl { font-size: 1.25rem; }
318
+ .xl\:text-2xl { font-size: 1.5rem; }
319
+ .xl\:text-3xl { font-size: 1.875rem; }
320
+ }
321
+
322
+ @media (min-width: 1536px) {
323
+ .\32xl\:block { display: block; }
324
+ .\32xl\:hidden { display: none; }
325
+ .\32xl\:text-xl { font-size: 1.25rem; }
326
+ .\32xl\:text-2xl { font-size: 1.5rem; }
327
+ .\32xl\:text-3xl { font-size: 1.875rem; }
328
+ .\32xl\:text-4xl { font-size: 2.25rem; }
329
+ }
330
+
331
+ /* Container queries */
332
+ .container-query {
333
+ container-type: inline-size;
334
+ }
335
+
336
+ @container (min-width: 320px) {
337
+ .cq-xs\:block { display: block; }
338
+ .cq-xs\:hidden { display: none; }
339
+ .cq-xs\:text-sm { font-size: var(--dm-text-sm); }
340
+ }
341
+
342
+ @container (min-width: 480px) {
343
+ .cq-sm\:block { display: block; }
344
+ .cq-sm\:hidden { display: none; }
345
+ .cq-sm\:text-base { font-size: var(--dm-text-base); }
346
+ }
347
+
348
+ @container (min-width: 640px) {
349
+ .cq-md\:block { display: block; }
350
+ .cq-md\:hidden { display: none; }
351
+ .cq-md\:text-lg { font-size: var(--dm-text-lg); }
352
+ }
353
+
354
+ @container (min-width: 768px) {
355
+ .cq-lg\:block { display: block; }
356
+ .cq-lg\:hidden { display: none; }
357
+ .cq-lg\:text-xl { font-size: 1.25rem; }
358
+ }
359
+
360
+ /* Aspect ratio utilities */
361
+ .aspect-square {
362
+ aspect-ratio: 1 / 1;
363
+ }
364
+
365
+ .aspect-video {
366
+ aspect-ratio: 16 / 9;
367
+ }
368
+
369
+ .aspect-photo {
370
+ aspect-ratio: 4 / 3;
371
+ }
372
+
373
+ .aspect-portrait {
374
+ aspect-ratio: 3 / 4;
375
+ }
376
+
377
+ .aspect-wide {
378
+ aspect-ratio: 21 / 9;
379
+ }
380
+
381
+ .aspect-golden {
382
+ aspect-ratio: 1.618 / 1;
383
+ }
384
+
385
+ /* Fallback for browsers without aspect-ratio support */
386
+ @supports not (aspect-ratio: 1 / 1) {
387
+ .aspect-square::before {
388
+ content: '';
389
+ display: block;
390
+ padding-top: 100%;
391
+ }
392
+
393
+ .aspect-video::before {
394
+ content: '';
395
+ display: block;
396
+ padding-top: 56.25%; /* 9/16 * 100% */
397
+ }
398
+
399
+ .aspect-photo::before {
400
+ content: '';
401
+ display: block;
402
+ padding-top: 75%; /* 3/4 * 100% */
403
+ }
404
+
405
+ .aspect-portrait::before {
406
+ content: '';
407
+ display: block;
408
+ padding-top: 133.33%; /* 4/3 * 100% */
409
+ }
410
+
411
+ .aspect-wide::before {
412
+ content: '';
413
+ display: block;
414
+ padding-top: 42.86%; /* 9/21 * 100% */
415
+ }
416
+
417
+ .aspect-golden::before {
418
+ content: '';
419
+ display: block;
420
+ padding-top: 61.8%; /* 1/1.618 * 100% */
421
+ }
422
+ }
423
+
424
+ /* Enhanced responsive utilities */
425
+ .container {
426
+ width: 100%;
427
+ margin-left: auto;
428
+ margin-right: auto;
429
+ padding-left: var(--space-sm-fluid);
430
+ padding-right: var(--space-sm-fluid);
431
+ }
432
+
433
+ @media (min-width: 475px) {
434
+ .container { max-width: var(--container-xs); }
435
+ }
436
+
437
+ @media (min-width: 640px) {
438
+ .container { max-width: var(--container-sm); }
439
+ }
440
+
441
+ @media (min-width: 768px) {
442
+ .container { max-width: var(--container-md); }
443
+ }
444
+
445
+ @media (min-width: 1024px) {
446
+ .container { max-width: var(--container-lg); }
447
+ }
448
+
449
+ @media (min-width: 1280px) {
450
+ .container { max-width: var(--container-xl); }
451
+ }
452
+
453
+ @media (min-width: 1536px) {
454
+ .container { max-width: var(--container-2xl); }
455
+ }
456
+
457
+ /* Responsive grid system */
458
+ .grid {
459
+ display: grid;
460
+ gap: var(--gap-md);
461
+ }
462
+
463
+ .grid-cols-1 { grid-template-columns: var(--grid-cols-1); }
464
+ .grid-cols-2 { grid-template-columns: var(--grid-cols-2); }
465
+ .grid-cols-3 { grid-template-columns: var(--grid-cols-3); }
466
+ .grid-cols-4 { grid-template-columns: var(--grid-cols-4); }
467
+ .grid-cols-6 { grid-template-columns: var(--grid-cols-6); }
468
+ .grid-cols-12 { grid-template-columns: var(--grid-cols-12); }
469
+
470
+ /* Responsive grid columns */
471
+ @media (min-width: 640px) {
472
+ .sm\:grid-cols-1 { grid-template-columns: var(--grid-cols-1); }
473
+ .sm\:grid-cols-2 { grid-template-columns: var(--grid-cols-2); }
474
+ .sm\:grid-cols-3 { grid-template-columns: var(--grid-cols-3); }
475
+ .sm\:grid-cols-4 { grid-template-columns: var(--grid-cols-4); }
476
+ }
477
+
478
+ @media (min-width: 768px) {
479
+ .md\:grid-cols-1 { grid-template-columns: var(--grid-cols-1); }
480
+ .md\:grid-cols-2 { grid-template-columns: var(--grid-cols-2); }
481
+ .md\:grid-cols-3 { grid-template-columns: var(--grid-cols-3); }
482
+ .md\:grid-cols-4 { grid-template-columns: var(--grid-cols-4); }
483
+ .md\:grid-cols-6 { grid-template-columns: var(--grid-cols-6); }
484
+ }
485
+
486
+ @media (min-width: 1024px) {
487
+ .lg\:grid-cols-1 { grid-template-columns: var(--grid-cols-1); }
488
+ .lg\:grid-cols-2 { grid-template-columns: var(--grid-cols-2); }
489
+ .lg\:grid-cols-3 { grid-template-columns: var(--grid-cols-3); }
490
+ .lg\:grid-cols-4 { grid-template-columns: var(--grid-cols-4); }
491
+ .lg\:grid-cols-6 { grid-template-columns: var(--grid-cols-6); }
492
+ .lg\:grid-cols-12 { grid-template-columns: var(--grid-cols-12); }
493
+ }
494
+
495
+ /* Fluid spacing utilities */
496
+ .space-xs { margin: var(--space-xs-fluid); }
497
+ .space-sm { margin: var(--space-sm-fluid); }
498
+ .space-md { margin: var(--space-md-fluid); }
499
+ .space-lg { margin: var(--space-lg-fluid); }
500
+ .space-xl { margin: var(--space-xl-fluid); }
501
+ .space-2xl { margin: var(--space-2xl-fluid); }
502
+
503
+ .p-xs { padding: var(--space-xs-fluid); }
504
+ .p-sm { padding: var(--space-sm-fluid); }
505
+ .p-md { padding: var(--space-md-fluid); }
506
+ .p-lg { padding: var(--space-lg-fluid); }
507
+ .p-xl { padding: var(--space-xl-fluid); }
508
+ .p-2xl { padding: var(--space-2xl-fluid); }
509
+
510
+ .gap-xs { gap: var(--gap-xs); }
511
+ .gap-sm { gap: var(--gap-sm); }
512
+ .gap-md { gap: var(--gap-md); }
513
+ .gap-lg { gap: var(--gap-lg); }
514
+ .gap-xl { gap: var(--gap-xl); }
515
+
516
+ /* Fluid border radius utilities */
517
+ .rounded-sm { border-radius: var(--radius-sm-fluid); }
518
+ .rounded-md { border-radius: var(--radius-md-fluid); }
519
+ .rounded-lg { border-radius: var(--radius-lg-fluid); }
520
+ .rounded-xl { border-radius: var(--radius-xl-fluid); }
521
+
522
+ /* Responsive text alignment */
523
+ .text-left { text-align: left; }
524
+ .text-center { text-align: center; }
525
+ .text-right { text-align: right; }
526
+
527
+ @media (min-width: 640px) {
528
+ .sm\:text-left { text-align: left; }
529
+ .sm\:text-center { text-align: center; }
530
+ .sm\:text-right { text-align: right; }
531
+ }
532
+
533
+ @media (min-width: 768px) {
534
+ .md\:text-left { text-align: left; }
535
+ .md\:text-center { text-align: center; }
536
+ .md\:text-right { text-align: right; }
537
+ }
538
+
539
+ @media (min-width: 1024px) {
540
+ .lg\:text-left { text-align: left; }
541
+ .lg\:text-center { text-align: center; }
542
+ .lg\:text-right { text-align: right; }
543
+ }
544
+
545
+ /* Responsive flexbox utilities */
546
+ .flex { display: flex; }
547
+ .flex-col { flex-direction: column; }
548
+ .flex-row { flex-direction: row; }
549
+ .flex-wrap { flex-wrap: wrap; }
550
+ .flex-nowrap { flex-wrap: nowrap; }
551
+
552
+ .justify-start { justify-content: flex-start; }
553
+ .justify-center { justify-content: center; }
554
+ .justify-end { justify-content: flex-end; }
555
+ .justify-between { justify-content: space-between; }
556
+ .justify-around { justify-content: space-around; }
557
+ .justify-evenly { justify-content: space-evenly; }
558
+
559
+ .items-start { align-items: flex-start; }
560
+ .items-center { align-items: center; }
561
+ .items-end { align-items: flex-end; }
562
+ .items-stretch { align-items: stretch; }
563
+
564
+ @media (min-width: 640px) {
565
+ .sm\:flex { display: flex; }
566
+ .sm\:flex-col { flex-direction: column; }
567
+ .sm\:flex-row { flex-direction: row; }
568
+ .sm\:justify-start { justify-content: flex-start; }
569
+ .sm\:justify-center { justify-content: center; }
570
+ .sm\:justify-end { justify-content: flex-end; }
571
+ .sm\:justify-between { justify-content: space-between; }
572
+ }
573
+
574
+ @media (min-width: 768px) {
575
+ .md\:flex { display: flex; }
576
+ .md\:flex-col { flex-direction: column; }
577
+ .md\:flex-row { flex-direction: row; }
578
+ .md\:justify-start { justify-content: flex-start; }
579
+ .md\:justify-center { justify-content: center; }
580
+ .md\:justify-end { justify-content: flex-end; }
581
+ .md\:justify-between { justify-content: space-between; }
582
+ }
583
+
584
+ @media (min-width: 1024px) {
585
+ .lg\:flex { display: flex; }
586
+ .lg\:flex-col { flex-direction: column; }
587
+ .lg\:flex-row { flex-direction: row; }
588
+ .lg\:justify-start { justify-content: flex-start; }
589
+ .lg\:justify-center { justify-content: center; }
590
+ .lg\:justify-end { justify-content: flex-end; }
591
+ .lg\:justify-between { justify-content: space-between; }
592
+ }
593
+
594
+ /* Mobile-first responsive adjustments */
595
+ @media (max-width: 640px) {
596
+ :root {
597
+ --dm-text-sm: 0.8rem;
598
+ --dm-text-base: 0.9rem;
599
+ --dm-space-2: 0.375rem;
600
+ --dm-space-3: 0.625rem;
601
+ --dm-space-4: 0.875rem;
602
+ }
603
+
604
+ .container {
605
+ padding-left: 1rem;
606
+ padding-right: 1rem;
607
+ }
608
+ }
609
+
610
+ @media (max-width: 475px) {
611
+ :root {
612
+ --dm-text-sm: 0.75rem;
613
+ --dm-text-base: 0.875rem;
614
+ --dm-space-2: 0.25rem;
615
+ --dm-space-3: 0.5rem;
616
+ --dm-space-4: 0.75rem;
617
+ }
618
+
619
+ .container {
620
+ padding-left: 0.75rem;
621
+ padding-right: 0.75rem;
622
+ }
623
+ }