@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.1.6 → 0.1.8

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 (70) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.esm.js +11 -2
  4. package/dist/index.js +11 -2
  5. package/dist/styles.css +1 -1
  6. package/package.json +1 -1
  7. package/src/index.css +1046 -0
  8. package/src/index.ts +9 -1
  9. package/src/plugins/theme-css-generator.ts +354 -0
  10. package/src/styles/base/fonts.css +30 -0
  11. package/src/styles/base/generated-theme-variables.css +573 -0
  12. package/src/styles/base/index.css +7 -0
  13. package/src/styles/base/reset.css +48 -0
  14. package/src/styles/base/theme.css +1068 -0
  15. package/src/styles/base/typography.css +68 -0
  16. package/src/styles/base/variables.css +5 -0
  17. package/src/styles/components/CLAUDE.md +62 -0
  18. package/src/styles/components/base/badge.css +428 -0
  19. package/src/styles/components/base/button.css +774 -0
  20. package/src/styles/components/base/card.css +601 -0
  21. package/src/styles/components/base/checkbox.css +442 -0
  22. package/src/styles/components/base/index.css +9 -0
  23. package/src/styles/components/base/input.css +887 -0
  24. package/src/styles/components/base/label.css +296 -0
  25. package/src/styles/components/data-display/chart.css +353 -0
  26. package/src/styles/components/data-display/data-grid.css +619 -0
  27. package/src/styles/components/data-display/index.css +9 -0
  28. package/src/styles/components/data-display/list.css +560 -0
  29. package/src/styles/components/data-display/table.css +498 -0
  30. package/src/styles/components/data-display/timeline.css +764 -0
  31. package/src/styles/components/data-display/tree.css +881 -0
  32. package/src/styles/components/feedback/alert.css +358 -0
  33. package/src/styles/components/feedback/index.css +7 -0
  34. package/src/styles/components/feedback/progress.css +435 -0
  35. package/src/styles/components/feedback/skeleton.css +337 -0
  36. package/src/styles/components/feedback/toast.css +564 -0
  37. package/src/styles/components/index.css +17 -0
  38. package/src/styles/components/navigation/breadcrumb.css +465 -0
  39. package/src/styles/components/navigation/index.css +9 -0
  40. package/src/styles/components/navigation/menu.css +572 -0
  41. package/src/styles/components/navigation/pagination.css +635 -0
  42. package/src/styles/components/navigation/sidebar.css +807 -0
  43. package/src/styles/components/navigation/stepper.css +519 -0
  44. package/src/styles/components/navigation/tabs.css +404 -0
  45. package/src/styles/components/overlay/backdrop.css +243 -0
  46. package/src/styles/components/overlay/index.css +8 -0
  47. package/src/styles/components/overlay/modal.css +482 -0
  48. package/src/styles/components/overlay/popover.css +607 -0
  49. package/src/styles/components/overlay/portal.css +213 -0
  50. package/src/styles/components/overlay/tooltip.css +488 -0
  51. package/src/styles/generated-theme-variables.css +573 -0
  52. package/src/styles/index.css +5 -0
  53. package/src/styles/layers/index.css +54 -0
  54. package/src/styles/layers/overrides.css +108 -0
  55. package/src/styles/layers/validation.css +159 -0
  56. package/src/styles/layers/validation.js +310 -0
  57. package/src/styles/themes/default.css +450 -0
  58. package/src/styles/themes/enterprise.css +370 -0
  59. package/src/styles/themes/harvey.css +436 -0
  60. package/src/styles/themes/index.css +4 -0
  61. package/src/styles/themes/stan-design.css +572 -0
  62. package/src/styles/utilities/advanced-transition-system.css +467 -0
  63. package/src/styles/utilities/battery-conscious-animations.css +289 -0
  64. package/src/styles/utilities/enterprise-mobile-experience.css +817 -0
  65. package/src/styles/utilities/hardware-acceleration.css +121 -0
  66. package/src/styles/utilities/index.css +20 -0
  67. package/src/styles/utilities/mobile-skeleton-loading.css +596 -0
  68. package/src/styles/utilities/semantic-input-system.css +451 -0
  69. package/src/styles/utilities/touch-friendly-interface.css +247 -0
  70. package/src/styles/utilities/touch-optimization.css +165 -0
@@ -0,0 +1,121 @@
1
+ /* Hardware Acceleration & GPU Optimization CSS Utilities */
2
+
3
+ /* Base hardware acceleration class */
4
+ .hardware-accelerated {
5
+ transform: translateZ(0);
6
+ backface-visibility: hidden;
7
+ perspective: 1000px;
8
+ will-change: transform;
9
+ transform-style: preserve-3d;
10
+ }
11
+
12
+ /* GPU optimization for animations */
13
+ .gpu-optimized {
14
+ transform: translate3d(0, 0, 0);
15
+ will-change: transform, opacity;
16
+ backface-visibility: hidden;
17
+ transform-style: preserve-3d;
18
+ }
19
+
20
+ /* Transform3d optimization */
21
+ .transform3d-optimized {
22
+ transform: translate3d(0, 0, 0);
23
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
24
+ will-change: transform;
25
+ }
26
+
27
+ /* Performance-focused hardware acceleration */
28
+ .performance-accelerated {
29
+ transform: translateZ(0);
30
+ backface-visibility: hidden;
31
+ perspective: 1000px;
32
+ will-change: transform, opacity;
33
+ transform-style: preserve-3d;
34
+ contain: layout style paint;
35
+ }
36
+
37
+ /* Animation-specific hardware acceleration */
38
+ .animation-accelerated {
39
+ transform: translate3d(0, 0, 0);
40
+ will-change: transform, opacity;
41
+ backface-visibility: hidden;
42
+ transform-style: preserve-3d;
43
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
44
+ }
45
+
46
+ /* Scroll performance optimization */
47
+ .scroll-optimized {
48
+ transform: translateZ(0);
49
+ will-change: transform;
50
+ backface-visibility: hidden;
51
+ contain: layout style paint;
52
+ }
53
+
54
+ /* High-performance transforms */
55
+ .high-performance-transform {
56
+ transform: translate3d(0, 0, 0);
57
+ will-change: transform;
58
+ backface-visibility: hidden;
59
+ transform-style: preserve-3d;
60
+ transition: transform 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
61
+ }
62
+
63
+ /* Battery-optimized hardware acceleration */
64
+ .battery-optimized-acceleration {
65
+ transform: translateZ(0);
66
+ will-change: transform;
67
+ backface-visibility: hidden;
68
+ transform-style: preserve-3d;
69
+ transition: transform 0.4s ease-out;
70
+ }
71
+
72
+ /* Responsive hardware acceleration */
73
+ @media (prefers-reduced-motion: reduce) {
74
+ .hardware-accelerated,
75
+ .gpu-optimized,
76
+ .transform3d-optimized,
77
+ .performance-accelerated,
78
+ .animation-accelerated,
79
+ .scroll-optimized,
80
+ .high-performance-transform,
81
+ .battery-optimized-acceleration {
82
+ will-change: auto;
83
+ transition: none;
84
+ transform: none;
85
+ }
86
+ }
87
+
88
+ /* High DPI display optimization */
89
+ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
90
+ .hardware-accelerated,
91
+ .gpu-optimized,
92
+ .transform3d-optimized {
93
+ transform: translate3d(0, 0, 0) scale(1);
94
+ }
95
+ }
96
+
97
+ /* Touch device optimization */
98
+ @media (hover: none) and (pointer: coarse) {
99
+ .touch-optimized-acceleration {
100
+ transform: translate3d(0, 0, 0);
101
+ will-change: transform;
102
+ backface-visibility: hidden;
103
+ transition: transform 0.15s ease-out;
104
+ }
105
+ }
106
+
107
+ /* Print media optimization */
108
+ @media print {
109
+ .hardware-accelerated,
110
+ .gpu-optimized,
111
+ .transform3d-optimized,
112
+ .performance-accelerated,
113
+ .animation-accelerated,
114
+ .scroll-optimized,
115
+ .high-performance-transform,
116
+ .battery-optimized-acceleration {
117
+ transform: none !important;
118
+ will-change: auto !important;
119
+ transition: none !important;
120
+ }
121
+ }
@@ -0,0 +1,20 @@
1
+ /* Utilities Layer - System Utilities and Enhancements */
2
+ /* This layer contains utility classes and system-wide enhancements */
3
+
4
+ /* Animation and transition utilities */
5
+ @import './advanced-transition-system.css';
6
+ @import './battery-conscious-animations.css';
7
+
8
+ /* Performance utilities */
9
+ @import './hardware-acceleration.css';
10
+
11
+ /* Mobile and touch utilities */
12
+ @import './touch-friendly-interface.css';
13
+ @import './touch-optimization.css';
14
+ @import './mobile-skeleton-loading.css';
15
+
16
+ /* Enterprise and accessibility utilities */
17
+ @import './enterprise-mobile-experience.css';
18
+ @import './semantic-input-system.css';
19
+
20
+ /* Additional utility classes would be added here */
@@ -0,0 +1,596 @@
1
+ /* Mobile Skeleton & Loading State Sophistication */
2
+
3
+ /* Base skeleton styles */
4
+ .mobile-skeleton {
5
+ background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
6
+ background-size: 200% 100%;
7
+ border-radius: 4px;
8
+ position: relative;
9
+ overflow: hidden;
10
+ }
11
+
12
+ /* Skeleton variants */
13
+ .mobile-skeleton.text-line {
14
+ height: 16px;
15
+ width: 100%;
16
+ margin-bottom: 8px;
17
+ }
18
+
19
+ .mobile-skeleton.avatar {
20
+ width: 40px;
21
+ height: 40px;
22
+ border-radius: 50%;
23
+ }
24
+
25
+ .mobile-skeleton.card {
26
+ width: 100%;
27
+ height: 120px;
28
+ border-radius: 8px;
29
+ margin-bottom: 16px;
30
+ }
31
+
32
+ .mobile-skeleton.button {
33
+ width: 120px;
34
+ height: 40px;
35
+ border-radius: 6px;
36
+ }
37
+
38
+ /* Animation types */
39
+ .mobile-skeleton.animation-pulse {
40
+ animation: skeleton-pulse 1.5s ease-in-out infinite;
41
+ }
42
+
43
+ .mobile-skeleton.animation-wave {
44
+ animation: skeleton-wave 2s ease-in-out infinite;
45
+ }
46
+
47
+ .mobile-skeleton.animation-shimmer {
48
+ animation: skeleton-shimmer 1.5s ease-in-out infinite;
49
+ }
50
+
51
+ .mobile-skeleton.animation-fade {
52
+ animation: skeleton-fade 1s ease-in-out infinite;
53
+ }
54
+
55
+ /* Mobile-optimized animations */
56
+ @media (max-width: 768px) {
57
+ .mobile-skeleton.animation-pulse {
58
+ animation-duration: 2s;
59
+ }
60
+
61
+ .mobile-skeleton.animation-wave {
62
+ animation-duration: 2.5s;
63
+ }
64
+
65
+ .mobile-skeleton.animation-shimmer {
66
+ animation-duration: 2s;
67
+ }
68
+
69
+ .mobile-skeleton.animation-fade {
70
+ animation-duration: 1.5s;
71
+ }
72
+ }
73
+
74
+ /* Battery-conscious animations */
75
+ .mobile-skeleton.battery-low {
76
+ animation-duration: 3s !important;
77
+ opacity: 0.8;
78
+ }
79
+
80
+ .mobile-skeleton.battery-critical {
81
+ animation: none !important;
82
+ background: #f0f0f0;
83
+ opacity: 0.6;
84
+ }
85
+
86
+ /* Performance-optimized animations */
87
+ .mobile-skeleton.performance-low {
88
+ animation-duration: 2.5s !important;
89
+ will-change: auto;
90
+ }
91
+
92
+ .mobile-skeleton.performance-medium {
93
+ animation-duration: 2s !important;
94
+ will-change: transform;
95
+ }
96
+
97
+ .mobile-skeleton.performance-high {
98
+ animation-duration: 1.5s !important;
99
+ will-change: transform, opacity;
100
+ }
101
+
102
+ /* Touch-friendly skeleton interactions */
103
+ .mobile-skeleton.touch-friendly {
104
+ min-height: 44px;
105
+ min-width: 44px;
106
+ cursor: pointer;
107
+ transition: transform 0.1s ease, opacity 0.1s ease;
108
+ }
109
+
110
+ .mobile-skeleton.touch-friendly:hover {
111
+ transform: scale(1.02);
112
+ opacity: 0.9;
113
+ }
114
+
115
+ .mobile-skeleton.touch-friendly:active {
116
+ transform: scale(0.98);
117
+ opacity: 0.8;
118
+ }
119
+
120
+ /* Device-specific loading states */
121
+ .loading-state-mobile {
122
+ display: flex;
123
+ flex-direction: column;
124
+ gap: 12px;
125
+ padding: 16px;
126
+ }
127
+
128
+ .loading-state-tablet {
129
+ display: grid;
130
+ grid-template-columns: repeat(2, 1fr);
131
+ gap: 16px;
132
+ padding: 20px;
133
+ }
134
+
135
+ .loading-state-desktop {
136
+ display: grid;
137
+ grid-template-columns: repeat(3, 1fr);
138
+ gap: 20px;
139
+ padding: 24px;
140
+ }
141
+
142
+ /* Loading state types */
143
+ .loading-skeleton {
144
+ display: flex;
145
+ flex-direction: column;
146
+ gap: 8px;
147
+ }
148
+
149
+ .loading-spinner {
150
+ display: flex;
151
+ justify-content: center;
152
+ align-items: center;
153
+ height: 60px;
154
+ }
155
+
156
+ .loading-progress {
157
+ width: 100%;
158
+ height: 8px;
159
+ background: #f0f0f0;
160
+ border-radius: 4px;
161
+ overflow: hidden;
162
+ }
163
+
164
+ .loading-progress-bar {
165
+ height: 100%;
166
+ background: linear-gradient(90deg, #007bff, #0056b3);
167
+ border-radius: 4px;
168
+ transition: width 0.3s ease;
169
+ }
170
+
171
+ .loading-skeleton-spinner {
172
+ display: flex;
173
+ flex-direction: column;
174
+ align-items: center;
175
+ gap: 16px;
176
+ }
177
+
178
+ /* Spinner animations */
179
+ .spinner {
180
+ width: 40px;
181
+ height: 40px;
182
+ border: 4px solid #f0f0f0;
183
+ border-top: 4px solid #007bff;
184
+ border-radius: 50%;
185
+ animation: spin 1s linear infinite;
186
+ }
187
+
188
+ .spinner.battery-low {
189
+ animation-duration: 2s;
190
+ border-top-color: #ffc107;
191
+ }
192
+
193
+ .spinner.battery-critical {
194
+ animation-duration: 3s;
195
+ border-top-color: #dc3545;
196
+ }
197
+
198
+ /* Performance-based spinner */
199
+ .spinner.performance-low {
200
+ animation-duration: 2s;
201
+ border-width: 3px;
202
+ }
203
+
204
+ .spinner.performance-medium {
205
+ animation-duration: 1.5s;
206
+ border-width: 4px;
207
+ }
208
+
209
+ .spinner.performance-high {
210
+ animation-duration: 1s;
211
+ border-width: 4px;
212
+ }
213
+
214
+ /* Accessibility enhancements */
215
+ .mobile-skeleton[aria-label] {
216
+ position: relative;
217
+ }
218
+
219
+ .mobile-skeleton[aria-label]::after {
220
+ content: attr(aria-label);
221
+ position: absolute;
222
+ left: -10000px;
223
+ width: 1px;
224
+ height: 1px;
225
+ overflow: hidden;
226
+ }
227
+
228
+ /* Reduced motion support */
229
+ @media (prefers-reduced-motion: reduce) {
230
+ .mobile-skeleton {
231
+ animation: none !important;
232
+ background: #f0f0f0 !important;
233
+ }
234
+
235
+ .spinner {
236
+ animation: none !important;
237
+ border-top-color: #007bff !important;
238
+ }
239
+
240
+ .loading-progress-bar {
241
+ transition: none !important;
242
+ }
243
+
244
+ .mobile-skeleton.touch-friendly {
245
+ transition: none !important;
246
+ }
247
+
248
+ .mobile-skeleton.touch-friendly:hover,
249
+ .mobile-skeleton.touch-friendly:active {
250
+ transform: none !important;
251
+ opacity: 1 !important;
252
+ }
253
+ }
254
+
255
+ /* High contrast support */
256
+ @media (prefers-contrast: high) {
257
+ .mobile-skeleton {
258
+ background: #000000 !important;
259
+ border: 2px solid #ffffff !important;
260
+ }
261
+
262
+ .spinner {
263
+ border-color: #ffffff !important;
264
+ border-top-color: #000000 !important;
265
+ }
266
+
267
+ .loading-progress {
268
+ background: #ffffff !important;
269
+ border: 2px solid #000000 !important;
270
+ }
271
+
272
+ .loading-progress-bar {
273
+ background: #000000 !important;
274
+ }
275
+ }
276
+
277
+ /* Focus management */
278
+ .mobile-skeleton:focus {
279
+ outline: 2px solid #007bff;
280
+ outline-offset: 2px;
281
+ }
282
+
283
+ .mobile-skeleton:focus-visible {
284
+ outline: 2px solid #007bff;
285
+ outline-offset: 2px;
286
+ }
287
+
288
+ /* Loading state containers */
289
+ .loading-container {
290
+ position: relative;
291
+ min-height: 200px;
292
+ }
293
+
294
+ .loading-overlay {
295
+ position: absolute;
296
+ top: 0;
297
+ left: 0;
298
+ right: 0;
299
+ bottom: 0;
300
+ background: rgba(255, 255, 255, 0.9);
301
+ display: flex;
302
+ justify-content: center;
303
+ align-items: center;
304
+ z-index: 1000;
305
+ }
306
+
307
+ /* Loading state transitions */
308
+ .loading-state-enter {
309
+ opacity: 0;
310
+ transform: scale(0.9);
311
+ }
312
+
313
+ .loading-state-enter-active {
314
+ opacity: 1;
315
+ transform: scale(1);
316
+ transition: opacity 0.3s ease, transform 0.3s ease;
317
+ }
318
+
319
+ .loading-state-exit {
320
+ opacity: 1;
321
+ transform: scale(1);
322
+ }
323
+
324
+ .loading-state-exit-active {
325
+ opacity: 0;
326
+ transform: scale(0.9);
327
+ transition: opacity 0.3s ease, transform 0.3s ease;
328
+ }
329
+
330
+ /* Keyframe animations */
331
+ @keyframes skeleton-pulse {
332
+ 0%, 100% {
333
+ opacity: 1;
334
+ }
335
+ 50% {
336
+ opacity: 0.5;
337
+ }
338
+ }
339
+
340
+ @keyframes skeleton-wave {
341
+ 0% {
342
+ transform: translateX(-100%);
343
+ }
344
+ 100% {
345
+ transform: translateX(100%);
346
+ }
347
+ }
348
+
349
+ @keyframes skeleton-shimmer {
350
+ 0% {
351
+ background-position: -200% 0;
352
+ }
353
+ 100% {
354
+ background-position: 200% 0;
355
+ }
356
+ }
357
+
358
+ @keyframes skeleton-fade {
359
+ 0%, 100% {
360
+ opacity: 0.3;
361
+ }
362
+ 50% {
363
+ opacity: 1;
364
+ }
365
+ }
366
+
367
+ @keyframes spin {
368
+ 0% {
369
+ transform: rotate(0deg);
370
+ }
371
+ 100% {
372
+ transform: rotate(360deg);
373
+ }
374
+ }
375
+
376
+ /* Mobile-specific optimizations */
377
+ @media (max-width: 480px) {
378
+ .mobile-skeleton {
379
+ border-radius: 2px;
380
+ }
381
+
382
+ .mobile-skeleton.text-line {
383
+ height: 14px;
384
+ margin-bottom: 6px;
385
+ }
386
+
387
+ .mobile-skeleton.avatar {
388
+ width: 32px;
389
+ height: 32px;
390
+ }
391
+
392
+ .mobile-skeleton.card {
393
+ height: 100px;
394
+ margin-bottom: 12px;
395
+ }
396
+
397
+ .mobile-skeleton.button {
398
+ width: 100px;
399
+ height: 36px;
400
+ }
401
+
402
+ .loading-state-mobile {
403
+ padding: 12px;
404
+ gap: 8px;
405
+ }
406
+
407
+ .spinner {
408
+ width: 32px;
409
+ height: 32px;
410
+ border-width: 3px;
411
+ }
412
+ }
413
+
414
+ /* Tablet-specific optimizations */
415
+ @media (min-width: 481px) and (max-width: 1024px) {
416
+ .mobile-skeleton.card {
417
+ height: 140px;
418
+ }
419
+
420
+ .loading-state-tablet {
421
+ padding: 18px;
422
+ gap: 14px;
423
+ }
424
+
425
+ .spinner {
426
+ width: 36px;
427
+ height: 36px;
428
+ }
429
+ }
430
+
431
+ /* Desktop-specific optimizations */
432
+ @media (min-width: 1025px) {
433
+ .mobile-skeleton.card {
434
+ height: 160px;
435
+ }
436
+
437
+ .loading-state-desktop {
438
+ padding: 28px;
439
+ gap: 24px;
440
+ }
441
+
442
+ .spinner {
443
+ width: 48px;
444
+ height: 48px;
445
+ border-width: 5px;
446
+ }
447
+ }
448
+
449
+ /* Orientation-specific optimizations */
450
+ @media (orientation: portrait) {
451
+ .loading-state-tablet,
452
+ .loading-state-desktop {
453
+ grid-template-columns: 1fr;
454
+ }
455
+ }
456
+
457
+ /* Battery-conscious optimizations */
458
+ .battery-conscious .mobile-skeleton {
459
+ animation-duration: 2.5s !important;
460
+ }
461
+
462
+ .battery-conscious .spinner {
463
+ animation-duration: 2s !important;
464
+ }
465
+
466
+ .battery-conscious.battery-low .mobile-skeleton {
467
+ animation-duration: 3s !important;
468
+ }
469
+
470
+ .battery-conscious.battery-low .spinner {
471
+ animation-duration: 2.5s !important;
472
+ }
473
+
474
+ .battery-conscious.battery-critical .mobile-skeleton,
475
+ .battery-conscious.battery-critical .spinner {
476
+ animation: none !important;
477
+ }
478
+
479
+ /* Performance-based optimizations */
480
+ .performance-optimized .mobile-skeleton {
481
+ will-change: transform;
482
+ transform: translateZ(0);
483
+ }
484
+
485
+ .performance-optimized .spinner {
486
+ will-change: transform;
487
+ transform: translateZ(0);
488
+ }
489
+
490
+ /* Touch optimization */
491
+ .touch-optimized .mobile-skeleton.touch-friendly {
492
+ -webkit-tap-highlight-color: transparent;
493
+ touch-action: manipulation;
494
+ }
495
+
496
+ .touch-optimized .mobile-skeleton.touch-friendly:active {
497
+ -webkit-tap-highlight-color: rgba(0, 123, 255, 0.3);
498
+ }
499
+
500
+ /* Accessibility optimizations */
501
+ .accessibility-enhanced .mobile-skeleton {
502
+ -webkit-user-select: none;
503
+ user-select: none;
504
+ }
505
+
506
+ .accessibility-enhanced .mobile-skeleton:focus {
507
+ outline: 3px solid #007bff;
508
+ outline-offset: 3px;
509
+ }
510
+
511
+ /* Voice control support */
512
+ .voice-control-enabled .mobile-skeleton {
513
+ -webkit-user-select: text;
514
+ user-select: text;
515
+ }
516
+
517
+ /* Loading state status indicators */
518
+ .loading-status {
519
+ display: flex;
520
+ align-items: center;
521
+ gap: 8px;
522
+ margin-bottom: 16px;
523
+ padding: 8px 12px;
524
+ background: #f8f9fa;
525
+ border-radius: 6px;
526
+ border-left: 4px solid #007bff;
527
+ }
528
+
529
+ .loading-status.battery-low {
530
+ border-left-color: #ffc107;
531
+ }
532
+
533
+ .loading-status.battery-critical {
534
+ border-left-color: #dc3545;
535
+ }
536
+
537
+ .loading-status.performance-low {
538
+ border-left-color: #6c757d;
539
+ }
540
+
541
+ .loading-status.accessibility-enhanced {
542
+ border-left-color: #28a745;
543
+ }
544
+
545
+ /* Loading state metrics */
546
+ .loading-metrics {
547
+ display: grid;
548
+ grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
549
+ gap: 12px;
550
+ margin-top: 16px;
551
+ }
552
+
553
+ .metric-item {
554
+ display: flex;
555
+ flex-direction: column;
556
+ align-items: center;
557
+ padding: 12px;
558
+ background: #ffffff;
559
+ border: 1px solid #e9ecef;
560
+ border-radius: 6px;
561
+ text-align: center;
562
+ }
563
+
564
+ .metric-value {
565
+ font-size: 18px;
566
+ font-weight: 600;
567
+ color: #007bff;
568
+ margin-bottom: 4px;
569
+ }
570
+
571
+ .metric-label {
572
+ font-size: 12px;
573
+ color: #6c757d;
574
+ text-transform: uppercase;
575
+ letter-spacing: 0.5px;
576
+ }
577
+
578
+ /* Responsive loading states */
579
+ @media (max-width: 768px) {
580
+ .loading-metrics {
581
+ grid-template-columns: repeat(2, 1fr);
582
+ gap: 8px;
583
+ }
584
+
585
+ .metric-item {
586
+ padding: 8px;
587
+ }
588
+
589
+ .metric-value {
590
+ font-size: 16px;
591
+ }
592
+
593
+ .metric-label {
594
+ font-size: 10px;
595
+ }
596
+ }