@metropolle/design-system 1.0.0-beta.20250821024300.dfbe136 → 1.0.0-beta.2026.1.1.1723.0f6bc6d

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 (57) hide show
  1. package/README.md +1 -0
  2. package/dist/css/compat/back.css +466 -0
  3. package/dist/css/components.css +1476 -8
  4. package/dist/css/liquid-glass.css +468 -0
  5. package/dist/css/mermaid.css +163 -0
  6. package/dist/css/tokens.css +67 -0
  7. package/dist/react/components/react/DataTable/DataTable.d.ts +4 -0
  8. package/dist/react/components/react/DataTable/DataTable.d.ts.map +1 -0
  9. package/dist/react/components/react/DataTable/TableHeader.d.ts +4 -0
  10. package/dist/react/components/react/DataTable/TableHeader.d.ts.map +1 -0
  11. package/dist/react/components/react/DataTable/TableRow.d.ts +4 -0
  12. package/dist/react/components/react/DataTable/TableRow.d.ts.map +1 -0
  13. package/dist/react/components/react/DataTable/examples.d.ts +28 -0
  14. package/dist/react/components/react/DataTable/examples.d.ts.map +1 -0
  15. package/dist/react/components/react/DataTable/index.d.ts +7 -0
  16. package/dist/react/components/react/DataTable/index.d.ts.map +1 -0
  17. package/dist/react/components/react/DataTable/migration-example.d.ts +46 -0
  18. package/dist/react/components/react/DataTable/migration-example.d.ts.map +1 -0
  19. package/dist/react/components/react/DataTable/renderers.d.ts +24 -0
  20. package/dist/react/components/react/DataTable/renderers.d.ts.map +1 -0
  21. package/dist/react/components/react/DataTable/types.d.ts +57 -0
  22. package/dist/react/components/react/DataTable/types.d.ts.map +1 -0
  23. package/dist/react/components/react/GlassCard/GlassCard.d.ts +46 -6
  24. package/dist/react/components/react/GlassCard/GlassCard.d.ts.map +1 -1
  25. package/dist/react/components/react/Modal/ConfirmDialog.d.ts +17 -0
  26. package/dist/react/components/react/Modal/ConfirmDialog.d.ts.map +1 -0
  27. package/dist/react/components/react/Modal/Modal.d.ts +12 -0
  28. package/dist/react/components/react/Modal/Modal.d.ts.map +1 -0
  29. package/dist/react/components/react/Modal/ModalBody.d.ts +9 -0
  30. package/dist/react/components/react/Modal/ModalBody.d.ts.map +1 -0
  31. package/dist/react/components/react/Modal/ModalFooter.d.ts +8 -0
  32. package/dist/react/components/react/Modal/ModalFooter.d.ts.map +1 -0
  33. package/dist/react/components/react/Modal/ModalHeader.d.ts +11 -0
  34. package/dist/react/components/react/Modal/ModalHeader.d.ts.map +1 -0
  35. package/dist/react/components/react/Modal/index.d.ts +6 -0
  36. package/dist/react/components/react/Modal/index.d.ts.map +1 -0
  37. package/dist/react/components/react/Select/Select.d.ts +71 -0
  38. package/dist/react/components/react/Select/Select.d.ts.map +1 -0
  39. package/dist/react/components/react/Select/index.d.ts +2 -0
  40. package/dist/react/components/react/Select/index.d.ts.map +1 -0
  41. package/dist/react/components/react/ThemeToggle/ThemeToggle.d.ts +28 -0
  42. package/dist/react/components/react/ThemeToggle/ThemeToggle.d.ts.map +1 -0
  43. package/dist/react/components/react/ThemeToggle/index.d.ts +3 -0
  44. package/dist/react/components/react/ThemeToggle/index.d.ts.map +1 -0
  45. package/dist/react/components/react/Typography/Typography.d.ts.map +1 -1
  46. package/dist/react/components/react/index.d.ts +11 -0
  47. package/dist/react/components/react/index.d.ts.map +1 -1
  48. package/dist/react/index.d.ts +11 -0
  49. package/dist/react/index.esm.js +1147 -14
  50. package/dist/react/index.esm.js.map +1 -1
  51. package/dist/react/index.js +1164 -12
  52. package/dist/react/index.js.map +1 -1
  53. package/dist/tokens/colors.json +100 -18
  54. package/dist/tokens/index.d.ts +19 -24
  55. package/dist/tokens/index.js +69 -2
  56. package/dist/tokens/index.json +100 -18
  57. package/package.json +23 -13
@@ -42,6 +42,58 @@
42
42
  width: 100%;
43
43
  }
44
44
 
45
+ /* =========================
46
+ Modal Styles
47
+ NOTE: Modal styling is handled 100% via inline styles in Modal.tsx
48
+ (same approach as ProfileCard for visual consistency)
49
+ NO CSS classes are used for the modal card itself.
50
+ ========================= */
51
+
52
+ /* Header close button sizing + alignment */
53
+ .mds-modal-header > button[aria-label="Fechar"] {
54
+ /* Size and reset */
55
+ font-size: 1rem !important;
56
+ line-height: 1 !important;
57
+ transition: none !important;
58
+ padding: 0 !important;
59
+ background: transparent !important;
60
+ border: none !important;
61
+ /* Colors from DS tokens with robust fallback */
62
+ color: var(--mds-color-text-secondary, var(--text-secondary, rgba(0,0,0,0.65))) !important;
63
+ /* Absolute centering like the left icon */
64
+ position: absolute !important;
65
+ right: 16px !important;
66
+ top: 50% !important;
67
+ transform: translateY(-50%) !important;
68
+ width: 32px !important;
69
+ height: 32px !important;
70
+ display: inline-flex !important;
71
+ align-items: center !important;
72
+ justify-content: center !important;
73
+ }
74
+ .mds-modal-header > button[aria-label="Fechar"]:hover,
75
+ .mds-modal-header > button[aria-label="Fechar"]:focus,
76
+ .mds-modal-header > button[aria-label="Fechar"]:focus-visible {
77
+ /* Keep centered on interactive states and avoid lifts/shadows */
78
+ position: absolute !important;
79
+ right: 16px !important;
80
+ top: 50% !important;
81
+ transform: translateY(-50%) !important;
82
+ box-shadow: none !important;
83
+ transition: none !important;
84
+ color: var(--mds-color-text-primary, var(--text-primary, #111827)) !important;
85
+ }
86
+
87
+ /* Responsive modal */
88
+ @media (max-width: 768px) {
89
+ .mds-modal-overlay .mds-modal-card,
90
+ .modal-overlay .mds-modal-card {
91
+ min-width: 90vw !important;
92
+ max-width: 95vw !important;
93
+ margin: 20px !important;
94
+ }
95
+ }
96
+
45
97
  /* Button Sizes */
46
98
  .mds-button--sm {
47
99
  padding: var(--mds-spacing-sm) var(--mds-spacing-md);
@@ -275,7 +327,7 @@
275
327
  font-size: var(--mds-typography-fontSize-4xl);
276
328
  line-height: var(--mds-typography-lineHeight-tight);
277
329
  letter-spacing: var(--mds-typography-letterSpacing-brand);
278
- font-weight: var(--mds-typography-fontWeight-normal);
330
+ font-weight: var(--mds-typography-fontWeight-bold);
279
331
  color: var(--mds-color-text-primary);
280
332
  }
281
333
 
@@ -288,17 +340,59 @@
288
340
  font-family: var(--mds-typography-fontFamily-brand);
289
341
  }
290
342
 
343
+ /* Brand Logo Size Variants - Consistent across all environments */
344
+ .mds-brand-logo--sm {
345
+ font-size: 1.5rem; /* 24px - Navbar size */
346
+ letter-spacing: -0.03rem;
347
+ }
348
+
349
+ .mds-brand-logo--md {
350
+ font-size: 2rem; /* 32px - Medium contexts */
351
+ letter-spacing: -0.04rem;
352
+ }
353
+
354
+ .mds-brand-logo--lg {
355
+ font-size: 2.125rem; /* 34px - Landing/hero contexts */
356
+ letter-spacing: var(--mds-typography-letterSpacing-brand);
357
+ }
358
+
359
+ /* Navbar-specific brand logo - always consistent size */
360
+ .navbar-brand-logo,
361
+ .navbar__brand-logo,
362
+ .login-brand-logo {
363
+ font-size: 1.5rem !important;
364
+ letter-spacing: -0.03rem !important;
365
+ font-weight: var(--mds-typography-fontWeight-bold) !important;
366
+ font-family: var(--mds-typography-fontFamily-brand) !important;
367
+ color: var(--mds-color-text-primary) !important;
368
+ }
369
+
291
370
  /* Brand Logo Responsive */
292
371
  @media (max-width: 768px) {
293
372
  .mds-text--brand,
294
373
  .mds-brand-logo,
295
- .mds-brand-logo--sm,
296
- .mds-brand-logo--md,
297
- .mds-brand-logo--lg,
298
374
  .logo-brand {
299
375
  font-size: 1.8rem;
300
376
  letter-spacing: var(--mds-typography-letterSpacing-tight);
301
377
  }
378
+
379
+ .mds-brand-logo--sm,
380
+ .navbar-brand-logo,
381
+ .navbar__brand-logo,
382
+ .login-brand-logo {
383
+ font-size: 1.25rem !important;
384
+ letter-spacing: -0.02rem !important;
385
+ }
386
+
387
+ .mds-brand-logo--md {
388
+ font-size: 1.5rem;
389
+ letter-spacing: -0.03rem;
390
+ }
391
+
392
+ .mds-brand-logo--lg {
393
+ font-size: 1.8rem;
394
+ letter-spacing: var(--mds-typography-letterSpacing-tight);
395
+ }
302
396
  }
303
397
 
304
398
  /* Glass Card - Enhanced styles (complementing base tokens.css) */
@@ -327,7 +421,1381 @@
327
421
  outline-offset: 2px;
328
422
  }
329
423
 
330
- /* Dark mode support (future) */
331
- @media (prefers-color-scheme: dark) {
332
- /* Enhanced styles for dark mode when implemented */
333
- }
424
+ /* Dashboard Components */
425
+
426
+ /* Dashboard Action Controls */
427
+ .mds-dashboard-controls {
428
+ display: flex;
429
+ align-items: center;
430
+ gap: var(--mds-spacing-md);
431
+ }
432
+
433
+ /* Period Filter Dropdown */
434
+ .mds-period-filter {
435
+ position: relative;
436
+ display: inline-block;
437
+ }
438
+
439
+ .mds-period-filter__select {
440
+ padding: var(--mds-spacing-sm) var(--mds-spacing-md);
441
+ font-weight: var(--mds-typography-fontWeight-medium);
442
+ font-size: var(--mds-typography-fontSize-sm);
443
+ font-family: var(--mds-typography-fontFamily-brand);
444
+ border-radius: var(--mds-spacing-borderRadius-md);
445
+ cursor: pointer;
446
+ outline: none;
447
+ -webkit-appearance: none;
448
+ -moz-appearance: none;
449
+ appearance: none;
450
+ background-repeat: no-repeat;
451
+ background-size: 16px;
452
+ padding-right: 2rem;
453
+ min-width: 140px;
454
+ transition: var(--mds-effects-transition-normal);
455
+
456
+ /* Theme-specific styles are applied via CSS custom properties */
457
+ background-color: var(--mds-dashboard-control-bg);
458
+ color: var(--mds-dashboard-control-color);
459
+ border: 1px solid var(--mds-dashboard-control-border);
460
+ background-image: var(--mds-dashboard-control-dropdown-icon);
461
+ background-position: right 8px center;
462
+ box-shadow: var(--mds-dashboard-control-shadow);
463
+ }
464
+
465
+ .mds-period-filter__select:hover:not(:disabled) {
466
+ background-color: var(--mds-dashboard-control-bg-hover);
467
+ box-shadow: var(--mds-dashboard-control-shadow-hover);
468
+ }
469
+
470
+ .mds-period-filter__select:disabled {
471
+ opacity: var(--mds-effects-opacity-disabled);
472
+ cursor: not-allowed;
473
+ }
474
+
475
+ /* Dropdown Options Styling - High specificity to override compat rules */
476
+ select.mds-period-filter__select option {
477
+ background-color: var(--mds-dashboard-control-option-bg) !important;
478
+ color: var(--mds-dashboard-control-option-color) !important;
479
+ padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important;
480
+ -webkit-appearance: none !important;
481
+ }
482
+
483
+ select.mds-period-filter__select option:hover,
484
+ select.mds-period-filter__select option:focus,
485
+ select.mds-period-filter__select option:checked {
486
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
487
+ color: var(--mds-dashboard-control-option-color-hover) !important;
488
+ }
489
+
490
+ /* Enhanced contrast for webkit-based browsers */
491
+ select.mds-period-filter__select option:focus,
492
+ select.mds-period-filter__select option:active,
493
+ select.mds-period-filter__select option[selected] {
494
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
495
+ color: var(--mds-dashboard-control-option-color-hover) !important;
496
+ font-weight: 500 !important;
497
+ }
498
+
499
+ /* Additional styling for browsers that support it */
500
+ .mds-period-filter__select::-webkit-scrollbar {
501
+ width: 8px;
502
+ }
503
+
504
+ .mds-period-filter__select::-webkit-scrollbar-track {
505
+ background: var(--mds-dashboard-control-option-bg);
506
+ }
507
+
508
+ .mds-period-filter__select::-webkit-scrollbar-thumb {
509
+ background: var(--mds-dashboard-control-border);
510
+ border-radius: 4px;
511
+ }
512
+
513
+ .mds-period-filter__select::-webkit-scrollbar-thumb:hover {
514
+ background: var(--mds-dashboard-control-border-disabled);
515
+ }
516
+
517
+ /* =========================
518
+ Generic Dropdown/Select Component
519
+ ========================= */
520
+
521
+ /* Generic dropdown container */
522
+ .mds-dropdown {
523
+ position: relative;
524
+ display: inline-block;
525
+ }
526
+
527
+ /* Generic themed select - inherits dashboard control styling */
528
+ .mds-select-themed {
529
+ padding: var(--mds-spacing-sm) var(--mds-spacing-md) !important;
530
+ font-weight: var(--mds-typography-fontWeight-medium) !important;
531
+ font-size: var(--mds-typography-fontSize-sm) !important;
532
+ font-family: var(--mds-typography-fontFamily-brand) !important;
533
+ border-radius: var(--mds-spacing-borderRadius-md) !important;
534
+ cursor: pointer !important;
535
+ outline: none !important;
536
+ -webkit-appearance: none !important;
537
+ -moz-appearance: none !important;
538
+ appearance: none !important;
539
+ background-repeat: no-repeat !important;
540
+ background-size: 16px !important;
541
+ padding-right: 2rem !important;
542
+ transition: var(--mds-effects-transition-normal) !important;
543
+
544
+ /* Theme-specific styles are applied via CSS custom properties */
545
+ background-color: var(--mds-dashboard-control-bg) !important;
546
+ color: var(--mds-dashboard-control-color) !important;
547
+ border: 1px solid var(--mds-dashboard-control-border) !important;
548
+ background-image: var(--mds-dashboard-control-dropdown-icon) !important;
549
+ background-position: right 8px center !important;
550
+ box-shadow: var(--mds-dashboard-control-shadow) !important;
551
+ }
552
+
553
+ .mds-select-themed:hover:not(:disabled) {
554
+ background-color: var(--mds-dashboard-control-bg-hover) !important;
555
+ box-shadow: var(--mds-dashboard-control-shadow-hover) !important;
556
+ }
557
+
558
+ .mds-select-themed:disabled {
559
+ opacity: var(--mds-effects-opacity-disabled) !important;
560
+ cursor: not-allowed !important;
561
+ }
562
+
563
+ /* Dropdown Options Styling - High specificity to override compat rules */
564
+ select.mds-select-themed option {
565
+ background-color: var(--mds-dashboard-control-option-bg) !important;
566
+ color: var(--mds-dashboard-control-option-color) !important;
567
+ padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important;
568
+ -webkit-appearance: none !important;
569
+ }
570
+
571
+ select.mds-select-themed option:hover,
572
+ select.mds-select-themed option:focus,
573
+ select.mds-select-themed option:checked {
574
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
575
+ color: var(--mds-dashboard-control-option-color-hover) !important;
576
+ }
577
+
578
+ /* Enhanced contrast for webkit-based browsers */
579
+ select.mds-select-themed option:focus,
580
+ select.mds-select-themed option:active,
581
+ select.mds-select-themed option[selected] {
582
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
583
+ color: var(--mds-dashboard-control-option-color-hover) !important;
584
+ font-weight: 500 !important;
585
+ }
586
+
587
+ /* Maximum specificity for geo dropdowns to ensure they always work */
588
+ html .mds-dropdown select.mds-select-themed option {
589
+ background-color: var(--mds-dashboard-control-option-bg) !important;
590
+ color: var(--mds-dashboard-control-option-color) !important;
591
+ }
592
+
593
+ html .mds-dropdown select.mds-select-themed option:hover,
594
+ html .mds-dropdown select.mds-select-themed option:focus,
595
+ html .mds-dropdown select.mds-select-themed option:checked {
596
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
597
+ color: var(--mds-dashboard-control-option-color-hover) !important;
598
+ }
599
+
600
+ /* Absolute specificity to override any browser or other CSS */
601
+ html body .mds-dropdown select.mds-select-themed option,
602
+ html body div .mds-dropdown select.mds-select-themed option {
603
+ background-color: var(--mds-dashboard-control-option-bg) !important;
604
+ color: var(--mds-dashboard-control-option-color) !important;
605
+ padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important;
606
+ font-size: var(--mds-typography-fontSize-sm) !important;
607
+ font-family: var(--mds-typography-fontFamily-brand) !important;
608
+ }
609
+
610
+ html body .mds-dropdown select.mds-select-themed option:hover,
611
+ html body .mds-dropdown select.mds-select-themed option:focus,
612
+ html body .mds-dropdown select.mds-select-themed option:checked,
613
+ html body div .mds-dropdown select.mds-select-themed option:hover,
614
+ html body div .mds-dropdown select.mds-select-themed option:focus,
615
+ html body div .mds-dropdown select.mds-select-themed option:checked {
616
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
617
+ color: var(--mds-dashboard-control-option-color-hover) !important;
618
+ font-weight: 500 !important;
619
+ }
620
+
621
+ /* Ultimate specificity safeguard for geo dropdowns */
622
+ html body div.mds-dropdown select.mds-select-themed {
623
+ background-color: var(--mds-dashboard-control-bg) !important;
624
+ color: var(--mds-dashboard-control-color) !important;
625
+ border: 1px solid var(--mds-dashboard-control-border) !important;
626
+ background-image: var(--mds-dashboard-control-dropdown-icon) !important;
627
+ background-position: right 8px center !important;
628
+ background-repeat: no-repeat !important;
629
+ background-size: 16px !important;
630
+ padding-right: 2rem !important;
631
+ }
632
+
633
+ /* Additional styling for browsers that support it */
634
+ .mds-select-themed::-webkit-scrollbar {
635
+ width: 8px;
636
+ }
637
+
638
+ .mds-select-themed::-webkit-scrollbar-track {
639
+ background: var(--mds-dashboard-control-option-bg);
640
+ }
641
+
642
+ .mds-select-themed::-webkit-scrollbar-thumb {
643
+ background: var(--mds-dashboard-control-border);
644
+ border-radius: 4px;
645
+ }
646
+
647
+ .mds-select-themed::-webkit-scrollbar-thumb:hover {
648
+ background: var(--mds-dashboard-control-border-disabled);
649
+ }
650
+
651
+ /* Compatibility alias - maps period filter to generic themed select */
652
+ .mds-period-filter__select {
653
+ /* Copy all styles from .mds-select-themed for full compatibility */
654
+ padding: var(--mds-spacing-sm) var(--mds-spacing-md);
655
+ font-weight: var(--mds-typography-fontWeight-medium);
656
+ font-size: var(--mds-typography-fontSize-sm);
657
+ font-family: var(--mds-typography-fontFamily-brand);
658
+ border-radius: var(--mds-spacing-borderRadius-md);
659
+ cursor: pointer;
660
+ outline: none;
661
+ -webkit-appearance: none;
662
+ -moz-appearance: none;
663
+ appearance: none;
664
+ background-repeat: no-repeat;
665
+ background-size: 16px;
666
+ padding-right: 2rem;
667
+ min-width: 140px;
668
+ transition: var(--mds-effects-transition-normal);
669
+
670
+ /* Theme-specific styles are applied via CSS custom properties */
671
+ background-color: var(--mds-dashboard-control-bg);
672
+ color: var(--mds-dashboard-control-color);
673
+ border: 1px solid var(--mds-dashboard-control-border);
674
+ background-image: var(--mds-dashboard-control-dropdown-icon);
675
+ background-position: right 8px center;
676
+ box-shadow: var(--mds-dashboard-control-shadow);
677
+ }
678
+
679
+ .mds-period-filter__select:hover:not(:disabled) {
680
+ background-color: var(--mds-dashboard-control-bg-hover);
681
+ box-shadow: var(--mds-dashboard-control-shadow-hover);
682
+ }
683
+
684
+ .mds-period-filter__select:disabled {
685
+ opacity: var(--mds-effects-opacity-disabled);
686
+ cursor: not-allowed;
687
+ }
688
+
689
+ /* Dashboard Refresh Button */
690
+ .mds-dashboard-refresh {
691
+ padding: var(--mds-spacing-sm) var(--mds-spacing-md);
692
+ font-weight: var(--mds-typography-fontWeight-medium);
693
+ font-size: var(--mds-typography-fontSize-sm);
694
+ font-family: var(--mds-typography-fontFamily-brand);
695
+ border-radius: var(--mds-spacing-borderRadius-md);
696
+ cursor: pointer;
697
+ outline: none;
698
+ border: 1px solid var(--mds-dashboard-control-border);
699
+ transition: var(--mds-effects-transition-normal);
700
+ min-width: 140px;
701
+ width: 140px;
702
+
703
+ /* Theme-specific styles */
704
+ background-color: var(--mds-dashboard-control-bg);
705
+ color: var(--mds-dashboard-control-color);
706
+ box-shadow: var(--mds-dashboard-control-shadow);
707
+ }
708
+
709
+ .mds-dashboard-refresh:hover:not(:disabled) {
710
+ background-color: var(--mds-dashboard-control-bg-hover);
711
+ transform: translateY(-2px);
712
+ box-shadow: var(--mds-dashboard-control-shadow-hover);
713
+ }
714
+
715
+ .mds-dashboard-refresh:disabled {
716
+ opacity: var(--mds-effects-opacity-disabled);
717
+ cursor: not-allowed;
718
+ background-color: transparent !important;
719
+ border: 2px solid var(--mds-dashboard-control-border-disabled);
720
+ transform: none !important;
721
+ box-shadow: none !important;
722
+ }
723
+
724
+ /* Theme Support - Default (Dark Theme) */
725
+ :root {
726
+ /* Dashboard Control Variables - Dark Theme (default) */
727
+ --mds-dashboard-control-bg: rgba(0, 0, 0, 0.35);
728
+ --mds-dashboard-control-bg-hover: rgba(0, 0, 0, 0.5);
729
+ --mds-dashboard-control-color: #ffffff;
730
+ --mds-dashboard-control-border: rgba(255, 255, 255, 0.18);
731
+ --mds-dashboard-control-border-disabled: rgba(255, 255, 255, 0.3);
732
+ --mds-dashboard-control-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
733
+ --mds-dashboard-control-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.4);
734
+ --mds-dashboard-control-dropdown-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
735
+
736
+ /* Dropdown Options - Dark Theme */
737
+ --mds-dashboard-control-option-bg: #2a2a2a;
738
+ --mds-dashboard-control-option-color: #ffffff;
739
+ --mds-dashboard-control-option-bg-hover: #505050;
740
+ --mds-dashboard-control-option-color-hover: #ffffff;
741
+
742
+ /* Login specific variables - Dark Theme */
743
+ --mds-login-bg: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #2a2a2a 100%);
744
+ --mds-input-bg: rgba(255, 255, 255, 0.1);
745
+ --mds-input-focus-border: #aaaaaa;
746
+ --mds-input-focus-bg: rgba(255, 255, 255, 0.15);
747
+ --mds-input-focus-shadow: 0 4px 12px rgba(170, 170, 170, 0.2);
748
+ --mds-error-bg: rgba(200, 200, 200, 0.15);
749
+ --mds-error-border: rgba(200, 200, 200, 0.3);
750
+ }
751
+
752
+ /* Theme Toggle (square, themed) */
753
+ .mds-theme-toggle {
754
+ position: relative;
755
+ display: inline-flex;
756
+ align-items: center;
757
+ justify-content: center;
758
+ width: var(--mds-theme-toggle-size, 2.5rem);
759
+ height: var(--mds-theme-toggle-size, 2.5rem);
760
+ min-width: var(--mds-theme-toggle-size, 2.5rem);
761
+ padding: 0;
762
+ border-radius: var(--mds-spacing-borderRadius-md);
763
+ border: 1px solid var(--mds-dashboard-control-border);
764
+ background-color: var(--mds-dashboard-control-bg);
765
+ color: var(--mds-dashboard-control-color);
766
+ box-shadow: var(--mds-dashboard-control-shadow);
767
+ cursor: pointer;
768
+ outline: none;
769
+ transition: var(--mds-effects-transition-normal);
770
+ }
771
+
772
+ /* Force dark background in dark theme */
773
+ .mds-theme-toggle[data-theme="dark"] {
774
+ background-color: rgba(0, 0, 0, 0.35) !important;
775
+ border: 1px solid rgba(255, 255, 255, 0.18) !important;
776
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
777
+ }
778
+
779
+ .mds-theme-toggle:hover:not(:disabled) {
780
+ background-color: var(--mds-dashboard-control-bg-hover);
781
+ box-shadow: var(--mds-dashboard-control-shadow-hover);
782
+ }
783
+
784
+ /* Force dark hover in dark theme */
785
+ .mds-theme-toggle[data-theme="dark"]:hover:not(:disabled) {
786
+ background-color: rgba(0, 0, 0, 0.5) !important;
787
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4) !important;
788
+ }
789
+
790
+ .mds-theme-toggle:disabled {
791
+ opacity: var(--mds-effects-opacity-disabled);
792
+ cursor: not-allowed;
793
+ background-color: transparent !important;
794
+ border: 2px solid var(--mds-dashboard-control-border-disabled);
795
+ box-shadow: none !important;
796
+ }
797
+
798
+ .mds-theme-toggle--sm { --mds-theme-toggle-size: 2rem; }
799
+ .mds-theme-toggle--md { --mds-theme-toggle-size: 2.5rem; }
800
+ .mds-theme-toggle--lg { --mds-theme-toggle-size: 3rem; }
801
+
802
+ /* Monochromatic theme toggle icons via CSS pseudo-elements */
803
+ .mds-theme-toggle[data-theme="light"]::before {
804
+ content: '';
805
+ position: absolute;
806
+ left: 50%;
807
+ top: 50%;
808
+ transform: translate(-50%, -50%);
809
+ width: 20px;
810
+ height: 20px;
811
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z' fill='%23000000'/%3E%3C/svg%3E");
812
+ background-size: contain;
813
+ background-repeat: no-repeat;
814
+ background-position: center;
815
+ }
816
+
817
+ .mds-theme-toggle[data-theme="dark"]::before {
818
+ content: '';
819
+ position: absolute;
820
+ left: 50%;
821
+ top: 50%;
822
+ transform: translate(-50%, -50%);
823
+ width: 20px;
824
+ height: 20px;
825
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='4' fill='%23ffffff'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41' stroke='%23ffffff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
826
+ background-size: contain;
827
+ background-repeat: no-repeat;
828
+ background-position: center;
829
+ }
830
+
831
+ /* Light Theme Support */
832
+ [data-theme="light"] {
833
+ --mds-dashboard-control-bg: rgba(0, 0, 0, 0.1);
834
+ --mds-dashboard-control-bg-hover: rgba(0, 0, 0, 0.15);
835
+ --mds-dashboard-control-color: #1a1a1a;
836
+ --mds-dashboard-control-border: rgba(0, 0, 0, 0.1);
837
+ --mds-dashboard-control-border-disabled: rgba(0, 0, 0, 0.3);
838
+ --mds-dashboard-control-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
839
+ --mds-dashboard-control-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.15);
840
+ --mds-dashboard-control-dropdown-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
841
+
842
+ /* Dropdown Options - Light Theme */
843
+ --mds-dashboard-control-option-bg: #ffffff;
844
+ --mds-dashboard-control-option-color: #1a1a1a;
845
+ --mds-dashboard-control-option-bg-hover: #f0f7ff;
846
+ --mds-dashboard-control-option-color-hover: #1a1a1a;
847
+
848
+ /* Login specific variables - Light Theme */
849
+ --mds-login-bg: linear-gradient(135deg, #f5f5f5 0%, #e8e8e8 50%, #dcdcdc 100%);
850
+ --mds-input-bg: rgba(255, 255, 255, 0.8);
851
+ --mds-input-focus-border: #666666;
852
+ --mds-input-focus-bg: rgba(255, 255, 255, 1);
853
+ --mds-input-focus-shadow: 0 4px 12px rgba(102, 102, 102, 0.15);
854
+ --mds-error-bg: rgba(150, 150, 150, 0.1);
855
+ --mds-error-border: rgba(150, 150, 150, 0.3);
856
+ }
857
+
858
+ /* Form Input Styles */
859
+ .mds-input {
860
+ position: relative;
861
+ display: block;
862
+ width: 100%;
863
+ padding: var(--mds-spacing-md) var(--mds-spacing-md);
864
+ font-family: var(--mds-typography-fontFamily-brand);
865
+ font-size: var(--mds-typography-fontSize-base);
866
+ font-weight: var(--mds-typography-fontWeight-normal);
867
+ line-height: var(--mds-typography-lineHeight-normal);
868
+ color: var(--mds-color-text-primary);
869
+ background-color: var(--mds-color-background-primary);
870
+ border: 2px solid var(--mds-color-border-medium);
871
+ border-radius: var(--mds-spacing-borderRadius-md);
872
+ outline: none;
873
+ transition: var(--mds-effects-transition-normal);
874
+ }
875
+
876
+ .mds-input:focus {
877
+ border-color: var(--mds-color-brand-primary);
878
+ box-shadow: 0 0 0 3px rgba(0, 111, 238, 0.1);
879
+ }
880
+
881
+ .mds-input:disabled {
882
+ opacity: var(--mds-effects-opacity-disabled);
883
+ cursor: not-allowed;
884
+ background-color: var(--mds-color-background-secondary);
885
+ }
886
+
887
+ .mds-input--error {
888
+ border-color: #dc2626;
889
+ background-color: #fef2f2;
890
+ }
891
+
892
+ .mds-input--error:focus {
893
+ border-color: #dc2626;
894
+ box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
895
+ }
896
+
897
+ /* Textarea specific styles */
898
+ .mds-textarea {
899
+ resize: vertical;
900
+ min-height: 80px;
901
+ }
902
+
903
+ /* Select specific styles */
904
+ .mds-select {
905
+ -webkit-appearance: none;
906
+ -moz-appearance: none;
907
+ appearance: none;
908
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
909
+ background-position: right var(--mds-spacing-md) center;
910
+ background-repeat: no-repeat;
911
+ background-size: 16px;
912
+ padding-right: calc(var(--mds-spacing-md) + 24px);
913
+ }
914
+
915
+ .mds-select:disabled {
916
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%239CA3AF' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
917
+ }
918
+
919
+ /* Select dropdown option styles for .mds-input - fixes Edge/Windows dropdown visibility */
920
+ select.mds-input {
921
+ -webkit-appearance: none;
922
+ -moz-appearance: none;
923
+ appearance: none;
924
+ color-scheme: dark; /* Forces OS to render dropdown with dark theme on Edge/Chrome Windows */
925
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
926
+ background-position: right var(--mds-spacing-md) center;
927
+ background-repeat: no-repeat;
928
+ background-size: 16px;
929
+ padding-right: calc(var(--mds-spacing-md) + 24px);
930
+ cursor: pointer;
931
+ }
932
+
933
+ select.mds-input:disabled {
934
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%239CA3AF' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
935
+ cursor: not-allowed;
936
+ }
937
+
938
+ select.mds-input option {
939
+ background-color: var(--mds-dashboard-control-option-bg) !important;
940
+ color: var(--mds-dashboard-control-option-color) !important;
941
+ padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important;
942
+ }
943
+
944
+ select.mds-input option:hover,
945
+ select.mds-input option:focus,
946
+ select.mds-input option:checked {
947
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
948
+ color: var(--mds-dashboard-control-option-color-hover) !important;
949
+ }
950
+
951
+ /* Light theme override for select.mds-input */
952
+ html[data-theme="light"] select.mds-input {
953
+ color-scheme: light;
954
+ }
955
+
956
+ /* ============================================
957
+ Custom Select Component (JavaScript-rendered dropdown)
958
+ Cross-browser compatible - works on Edge/Chrome Windows
959
+ ============================================ */
960
+
961
+ /* Select Trigger Button */
962
+ .mds-select-trigger {
963
+ display: inline-flex;
964
+ align-items: center;
965
+ justify-content: space-between;
966
+ gap: 8px;
967
+ width: 100%;
968
+ min-width: 0;
969
+ max-width: 100%;
970
+ box-sizing: border-box;
971
+ padding: 10px 12px;
972
+ font-family: var(--mds-typography-fontFamily-brand, system-ui, sans-serif);
973
+ font-size: 0.95rem;
974
+ line-height: 1.5;
975
+ color: var(--mds-color-text-primary, #ffffff);
976
+ background-color: rgba(255, 255, 255, 0.08);
977
+ border: 1px solid rgba(255, 255, 255, 0.15);
978
+ border-radius: 8px;
979
+ cursor: pointer;
980
+ transition: all 0.2s ease;
981
+ text-align: left;
982
+ outline: none;
983
+ overflow: hidden;
984
+ }
985
+
986
+ .mds-select-trigger:hover:not(:disabled) {
987
+ background-color: rgba(255, 255, 255, 0.12);
988
+ border-color: rgba(255, 255, 255, 0.25);
989
+ }
990
+
991
+ .mds-select-trigger:focus:not(:disabled) {
992
+ border-color: var(--mds-color-primary, #3b82f6);
993
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.25);
994
+ }
995
+
996
+ .mds-select-trigger--open {
997
+ border-color: var(--mds-color-primary, #3b82f6);
998
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.25);
999
+ }
1000
+
1001
+ .mds-select-trigger--disabled {
1002
+ opacity: 0.5;
1003
+ cursor: not-allowed;
1004
+ background-color: rgba(255, 255, 255, 0.04);
1005
+ }
1006
+
1007
+ .mds-select-trigger--loading {
1008
+ cursor: wait;
1009
+ }
1010
+
1011
+ .mds-select-trigger--error {
1012
+ border-color: var(--mds-color-error, #ef4444);
1013
+ }
1014
+
1015
+ .mds-select-trigger--error:focus {
1016
+ box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.25);
1017
+ }
1018
+
1019
+ .mds-select-trigger--full-width {
1020
+ width: 100%;
1021
+ }
1022
+
1023
+ /* Select Trigger Value */
1024
+ .mds-select-trigger__value {
1025
+ flex: 1;
1026
+ overflow: hidden;
1027
+ text-overflow: ellipsis;
1028
+ white-space: nowrap;
1029
+ }
1030
+
1031
+ .mds-select-trigger__placeholder {
1032
+ color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.5));
1033
+ }
1034
+
1035
+ /* Select Trigger Icon */
1036
+ .mds-select-trigger__icon {
1037
+ display: flex;
1038
+ align-items: center;
1039
+ justify-content: center;
1040
+ flex-shrink: 0;
1041
+ width: 20px;
1042
+ height: 20px;
1043
+ color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.5));
1044
+ transition: transform 0.2s ease;
1045
+ }
1046
+
1047
+ .mds-select-trigger--open .mds-select-trigger__icon {
1048
+ transform: rotate(180deg);
1049
+ }
1050
+
1051
+ .mds-select-chevron {
1052
+ width: 16px;
1053
+ height: 16px;
1054
+ }
1055
+
1056
+ .mds-select-spinner {
1057
+ width: 16px;
1058
+ height: 16px;
1059
+ animation: mds-select-spin 1s linear infinite;
1060
+ }
1061
+
1062
+ @keyframes mds-select-spin {
1063
+ from { transform: rotate(0deg); }
1064
+ to { transform: rotate(360deg); }
1065
+ }
1066
+
1067
+ /* Select Dropdown */
1068
+ .mds-select-dropdown {
1069
+ background-color: var(--mds-dashboard-control-option-bg, #2a2a2a);
1070
+ border: 1px solid rgba(255, 255, 255, 0.15);
1071
+ border-radius: 8px;
1072
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2);
1073
+ overflow: hidden;
1074
+ animation: mds-select-dropdown-enter 0.15s ease-out;
1075
+ }
1076
+
1077
+ @keyframes mds-select-dropdown-enter {
1078
+ from {
1079
+ opacity: 0;
1080
+ transform: translateY(-4px);
1081
+ }
1082
+ to {
1083
+ opacity: 1;
1084
+ transform: translateY(0);
1085
+ }
1086
+ }
1087
+
1088
+ /* Select Search */
1089
+ .mds-select-search {
1090
+ position: relative;
1091
+ padding: 8px;
1092
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1093
+ }
1094
+
1095
+ .mds-select-search__input {
1096
+ width: 100%;
1097
+ padding: 8px 12px 8px 36px;
1098
+ font-family: var(--mds-typography-fontFamily-brand, system-ui, sans-serif);
1099
+ font-size: 0.9rem;
1100
+ color: var(--mds-color-text-primary, #ffffff);
1101
+ background-color: rgba(255, 255, 255, 0.08);
1102
+ border: 1px solid rgba(255, 255, 255, 0.15);
1103
+ border-radius: 6px;
1104
+ outline: none;
1105
+ transition: all 0.2s ease;
1106
+ }
1107
+
1108
+ .mds-select-search__input:focus {
1109
+ border-color: var(--mds-color-primary, #3b82f6);
1110
+ background-color: rgba(255, 255, 255, 0.12);
1111
+ }
1112
+
1113
+ .mds-select-search__input::-moz-placeholder {
1114
+ color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.5));
1115
+ }
1116
+
1117
+ .mds-select-search__input::placeholder {
1118
+ color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.5));
1119
+ }
1120
+
1121
+ .mds-select-search__icon {
1122
+ position: absolute;
1123
+ left: 20px;
1124
+ top: 50%;
1125
+ transform: translateY(-50%);
1126
+ width: 16px;
1127
+ height: 16px;
1128
+ color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.5));
1129
+ pointer-events: none;
1130
+ }
1131
+
1132
+ /* Select Options List */
1133
+ .mds-select-options {
1134
+ list-style: none;
1135
+ margin: 0;
1136
+ padding: 4px;
1137
+ overflow-y: auto;
1138
+ max-height: inherit;
1139
+ }
1140
+
1141
+ /* Select Option */
1142
+ .mds-select-option {
1143
+ display: flex;
1144
+ align-items: center;
1145
+ justify-content: space-between;
1146
+ gap: 8px;
1147
+ padding: 10px 12px;
1148
+ font-size: 0.95rem;
1149
+ color: var(--mds-dashboard-control-option-color, #ffffff);
1150
+ background-color: transparent;
1151
+ border-radius: 6px;
1152
+ cursor: pointer;
1153
+ transition: background-color 0.15s ease;
1154
+ }
1155
+
1156
+ .mds-select-option:hover,
1157
+ .mds-select-option--highlighted {
1158
+ background-color: var(--mds-dashboard-control-option-bg-hover, #505050);
1159
+ }
1160
+
1161
+ .mds-select-option--selected {
1162
+ color: var(--mds-color-primary, #3b82f6);
1163
+ font-weight: 500;
1164
+ }
1165
+
1166
+ .mds-select-option--disabled {
1167
+ opacity: 0.5;
1168
+ cursor: not-allowed;
1169
+ }
1170
+
1171
+ .mds-select-option--disabled:hover {
1172
+ background-color: transparent;
1173
+ }
1174
+
1175
+ .mds-select-option--empty {
1176
+ color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.5));
1177
+ font-style: italic;
1178
+ cursor: default;
1179
+ }
1180
+
1181
+ .mds-select-option--empty:hover {
1182
+ background-color: transparent;
1183
+ }
1184
+
1185
+ .mds-select-option__label {
1186
+ flex: 1;
1187
+ overflow: hidden;
1188
+ text-overflow: ellipsis;
1189
+ white-space: nowrap;
1190
+ }
1191
+
1192
+ .mds-select-option__check {
1193
+ flex-shrink: 0;
1194
+ width: 16px;
1195
+ height: 16px;
1196
+ color: var(--mds-color-primary, #3b82f6);
1197
+ }
1198
+
1199
+ /* Select Size Variants */
1200
+ .mds-select--sm .mds-select-trigger {
1201
+ padding: 6px 10px;
1202
+ font-size: 0.85rem;
1203
+ }
1204
+
1205
+ .mds-select--sm .mds-select-option {
1206
+ padding: 6px 10px;
1207
+ font-size: 0.85rem;
1208
+ }
1209
+
1210
+ .mds-select--lg .mds-select-trigger {
1211
+ padding: 14px 16px;
1212
+ font-size: 1.05rem;
1213
+ }
1214
+
1215
+ .mds-select--lg .mds-select-option {
1216
+ padding: 12px 16px;
1217
+ font-size: 1.05rem;
1218
+ }
1219
+
1220
+ /* Light Theme Overrides */
1221
+ html[data-theme="light"] .mds-select-trigger {
1222
+ color: var(--mds-color-text-primary, #1a1a1a);
1223
+ background-color: rgba(0, 0, 0, 0.04);
1224
+ border-color: rgba(0, 0, 0, 0.15);
1225
+ }
1226
+
1227
+ html[data-theme="light"] .mds-select-trigger:hover:not(:disabled) {
1228
+ background-color: rgba(0, 0, 0, 0.08);
1229
+ border-color: rgba(0, 0, 0, 0.25);
1230
+ }
1231
+
1232
+ html[data-theme="light"] .mds-select-trigger__placeholder {
1233
+ color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.5));
1234
+ }
1235
+
1236
+ html[data-theme="light"] .mds-select-trigger__icon {
1237
+ color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.5));
1238
+ }
1239
+
1240
+ html[data-theme="light"] .mds-select-dropdown {
1241
+ background-color: var(--mds-dashboard-control-option-bg, #ffffff);
1242
+ border-color: rgba(0, 0, 0, 0.15);
1243
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15), 0 2px 8px rgba(0, 0, 0, 0.1);
1244
+ }
1245
+
1246
+ html[data-theme="light"] .mds-select-search {
1247
+ border-bottom-color: rgba(0, 0, 0, 0.1);
1248
+ }
1249
+
1250
+ html[data-theme="light"] .mds-select-search__input {
1251
+ color: var(--mds-color-text-primary, #1a1a1a);
1252
+ background-color: rgba(0, 0, 0, 0.04);
1253
+ border-color: rgba(0, 0, 0, 0.15);
1254
+ }
1255
+
1256
+ html[data-theme="light"] .mds-select-search__input:focus {
1257
+ background-color: rgba(0, 0, 0, 0.02);
1258
+ }
1259
+
1260
+ html[data-theme="light"] .mds-select-search__input::-moz-placeholder {
1261
+ color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.5));
1262
+ }
1263
+
1264
+ html[data-theme="light"] .mds-select-search__input::placeholder {
1265
+ color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.5));
1266
+ }
1267
+
1268
+ html[data-theme="light"] .mds-select-search__icon {
1269
+ color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.5));
1270
+ }
1271
+
1272
+ html[data-theme="light"] .mds-select-option {
1273
+ color: var(--mds-dashboard-control-option-color, #1a1a1a);
1274
+ }
1275
+
1276
+ html[data-theme="light"] .mds-select-option:hover,
1277
+ html[data-theme="light"] .mds-select-option--highlighted {
1278
+ background-color: var(--mds-dashboard-control-option-bg-hover, #f0f7ff);
1279
+ }
1280
+
1281
+ html[data-theme="light"] .mds-select-option--empty {
1282
+ color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.5));
1283
+ }
1284
+
1285
+ /* Label styles */
1286
+ .mds-label {
1287
+ display: block;
1288
+ font-family: var(--mds-typography-fontFamily-brand);
1289
+ font-size: var(--mds-typography-fontSize-sm);
1290
+ font-weight: var(--mds-typography-fontWeight-medium);
1291
+ color: var(--mds-color-text-primary);
1292
+ margin-bottom: var(--mds-spacing-xs);
1293
+ }
1294
+
1295
+ .mds-label--required::after {
1296
+ content: " *";
1297
+ color: #dc2626;
1298
+ }
1299
+
1300
+ /* Field group */
1301
+ .mds-field {
1302
+ margin-bottom: var(--mds-spacing-lg);
1303
+ }
1304
+
1305
+ .mds-field-error {
1306
+ display: block;
1307
+ font-family: var(--mds-typography-fontFamily-brand);
1308
+ font-size: var(--mds-typography-fontSize-sm);
1309
+ color: #dc2626;
1310
+ margin-top: var(--mds-spacing-xs);
1311
+ }
1312
+
1313
+ .mds-field-help {
1314
+ display: block;
1315
+ font-family: var(--mds-typography-fontFamily-brand);
1316
+ font-size: var(--mds-typography-fontSize-sm);
1317
+ color: var(--mds-color-text-secondary);
1318
+ margin-top: var(--mds-spacing-xs);
1319
+ }
1320
+
1321
+ /* Dashboard Layout Utilities */
1322
+ .mds-dashboard-grid {
1323
+ display: grid;
1324
+ gap: var(--mds-spacing-xl);
1325
+ }
1326
+
1327
+ .mds-dashboard-stats-grid {
1328
+ display: grid;
1329
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
1330
+ gap: var(--mds-spacing-lg);
1331
+ }
1332
+
1333
+ .mds-dashboard-charts-grid {
1334
+ display: grid;
1335
+ grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
1336
+ gap: var(--mds-spacing-lg);
1337
+ }
1338
+
1339
+ /* Dashboard Content Sections */
1340
+ .mds-dashboard-section {
1341
+ display: flex;
1342
+ flex-direction: column;
1343
+ gap: var(--mds-spacing-xl);
1344
+ }
1345
+
1346
+ /* ========================================
1347
+ Layout Utility Classes - @back optimization
1348
+ ======================================== */
1349
+
1350
+ /* Flexbox utilities */
1351
+ .mds-flex {
1352
+ display: flex;
1353
+ }
1354
+
1355
+ .mds-flex-col {
1356
+ display: flex;
1357
+ flex-direction: column;
1358
+ }
1359
+
1360
+ .mds-flex-center {
1361
+ display: flex;
1362
+ align-items: center;
1363
+ justify-content: center;
1364
+ }
1365
+
1366
+ .mds-flex-between {
1367
+ display: flex;
1368
+ align-items: center;
1369
+ justify-content: space-between;
1370
+ }
1371
+
1372
+ .mds-flex-start {
1373
+ display: flex;
1374
+ align-items: flex-start;
1375
+ justify-content: flex-start;
1376
+ }
1377
+
1378
+ .mds-flex-end {
1379
+ display: flex;
1380
+ align-items: center;
1381
+ justify-content: flex-end;
1382
+ }
1383
+
1384
+ /* Spacing utilities */
1385
+ .mds-gap-xs { gap: var(--mds-spacing-xs); }
1386
+ .mds-gap-sm { gap: var(--mds-spacing-sm); }
1387
+ .mds-gap-md { gap: var(--mds-spacing-md); }
1388
+ .mds-gap-lg { gap: var(--mds-spacing-lg); }
1389
+ .mds-gap-xl { gap: var(--mds-spacing-xl); }
1390
+
1391
+ /* Padding utilities */
1392
+ .mds-p-xs { padding: var(--mds-spacing-xs); }
1393
+ .mds-p-sm { padding: var(--mds-spacing-sm); }
1394
+ .mds-p-md { padding: var(--mds-spacing-md); }
1395
+ .mds-p-lg { padding: var(--mds-spacing-lg); }
1396
+ .mds-p-xl { padding: var(--mds-spacing-xl); }
1397
+
1398
+ /* Margin utilities */
1399
+ .mds-m-xs { margin: var(--mds-spacing-xs); }
1400
+ .mds-m-sm { margin: var(--mds-spacing-sm); }
1401
+ .mds-m-md { margin: var(--mds-spacing-md); }
1402
+ .mds-m-lg { margin: var(--mds-spacing-lg); }
1403
+ .mds-m-xl { margin: var(--mds-spacing-xl); }
1404
+
1405
+ /* Margin bottom utilities */
1406
+ .mds-mb-xs { margin-bottom: var(--mds-spacing-xs); }
1407
+ .mds-mb-sm { margin-bottom: var(--mds-spacing-sm); }
1408
+ .mds-mb-md { margin-bottom: var(--mds-spacing-md); }
1409
+ .mds-mb-lg { margin-bottom: var(--mds-spacing-lg); }
1410
+ .mds-mb-xl { margin-bottom: var(--mds-spacing-xl); }
1411
+
1412
+ /* ========================================
1413
+ Dashboard Layout Classes - @back optimization
1414
+ ======================================== */
1415
+
1416
+ /* Dashboard container */
1417
+ .mds-dashboard-container {
1418
+ display: flex;
1419
+ min-height: 100vh;
1420
+ font-family: var(--mds-typography-fontFamily-brand);
1421
+ transition: all 0.3s ease;
1422
+ background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #2a2a2a 100%);
1423
+ background-attachment: fixed;
1424
+ background-repeat: no-repeat;
1425
+ background-size: 100% 100%;
1426
+ color: #ffffff;
1427
+ }
1428
+
1429
+ /* Light theme dashboard container */
1430
+ html[data-theme="light"] .mds-dashboard-container {
1431
+ background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 50%, #cbd5e1 100%);
1432
+ color: #1a1a1a;
1433
+ }
1434
+
1435
+ /* Dashboard main content */
1436
+ .mds-dashboard-main {
1437
+ flex: 1;
1438
+ margin-left: 260px;
1439
+ margin-top: 60px;
1440
+ display: flex;
1441
+ flex-direction: column;
1442
+ min-height: calc(100vh - 60px);
1443
+ }
1444
+
1445
+ /* Page header */
1446
+ .mds-page-header {
1447
+ padding: var(--mds-spacing-lg) var(--mds-spacing-xl) var(--mds-spacing-md) var(--mds-spacing-xl);
1448
+ backdrop-filter: blur(10px);
1449
+ -webkit-backdrop-filter: blur(10px);
1450
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
1451
+ }
1452
+
1453
+ /* Dark theme page header */
1454
+ html[data-theme="dark"] .mds-page-header {
1455
+ background-color: rgba(30, 41, 59, 0.4);
1456
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1457
+ }
1458
+
1459
+ /* Light theme page header */
1460
+ html[data-theme="light"] .mds-page-header {
1461
+ background-color: rgba(255, 255, 255, 0.7);
1462
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
1463
+ }
1464
+
1465
+ /* Page title */
1466
+ .mds-page-title {
1467
+ margin: 0 0 var(--mds-spacing-xs) 0;
1468
+ font-size: var(--mds-typography-fontSize-xl);
1469
+ font-weight: var(--mds-typography-fontWeight-semibold);
1470
+ color: var(--mds-colors-color-text-primary);
1471
+ }
1472
+
1473
+ /* Page description */
1474
+ .mds-page-description {
1475
+ margin: 0;
1476
+ font-size: var(--mds-typography-fontSize-sm);
1477
+ color: var(--mds-colors-color-text-secondary);
1478
+ line-height: var(--mds-typography-lineHeight-normal);
1479
+ }
1480
+
1481
+ /* Main content area */
1482
+ .mds-main-content {
1483
+ flex: 1;
1484
+ padding: var(--mds-spacing-xl);
1485
+ overflow-y: auto;
1486
+ position: relative;
1487
+ }
1488
+
1489
+ /* ========================================
1490
+ Navbar Classes - @back optimization
1491
+ ======================================== */
1492
+
1493
+ /* Fixed navbar */
1494
+ .mds-navbar {
1495
+ position: fixed;
1496
+ top: 0;
1497
+ left: 0;
1498
+ right: 0;
1499
+ height: 60px;
1500
+ z-index: 1000;
1501
+ backdrop-filter: blur(10px);
1502
+ -webkit-backdrop-filter: blur(10px);
1503
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
1504
+ transition: all 0.3s ease;
1505
+ font-family: var(--mds-typography-fontFamily-brand);
1506
+ }
1507
+
1508
+ /* Dark theme navbar */
1509
+ html[data-theme="dark"] .mds-navbar {
1510
+ background-color: rgba(30, 41, 59, 0.95);
1511
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1512
+ }
1513
+
1514
+ /* Light theme navbar */
1515
+ html[data-theme="light"] .mds-navbar {
1516
+ background-color: rgba(255, 255, 255, 0.95);
1517
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
1518
+ }
1519
+
1520
+ /* Navbar content container */
1521
+ .mds-navbar-content {
1522
+ display: flex;
1523
+ align-items: center;
1524
+ justify-content: space-between;
1525
+ height: 100%;
1526
+ max-width: 100%;
1527
+ }
1528
+
1529
+ /* Navbar brand section */
1530
+ .mds-navbar-brand {
1531
+ display: flex;
1532
+ align-items: center;
1533
+ gap: var(--mds-spacing-md);
1534
+ }
1535
+
1536
+ /* Navbar actions section */
1537
+ .mds-navbar-actions {
1538
+ display: flex;
1539
+ align-items: center;
1540
+ gap: var(--mds-spacing-md);
1541
+ }
1542
+
1543
+ /* User info in navbar */
1544
+ .mds-navbar-user {
1545
+ font-size: var(--mds-typography-fontSize-sm);
1546
+ color: var(--mds-colors-color-text-secondary);
1547
+ margin-right: var(--mds-spacing-sm);
1548
+ }
1549
+
1550
+ /* Sidebar-width brand section */
1551
+ .mds-navbar-brand-section {
1552
+ width: 260px;
1553
+ display: flex;
1554
+ align-items: center;
1555
+ justify-content: center;
1556
+ }
1557
+
1558
+ /* Center user info section */
1559
+ .mds-navbar-center {
1560
+ flex: 1;
1561
+ display: flex;
1562
+ justify-content: center;
1563
+ }
1564
+
1565
+ /* User info badge */
1566
+ .mds-navbar-user-badge {
1567
+ display: flex;
1568
+ align-items: center;
1569
+ gap: var(--mds-spacing-sm);
1570
+ font-size: var(--mds-typography-fontSize-sm);
1571
+ padding: var(--mds-spacing-sm) var(--mds-spacing-md);
1572
+ border-radius: 20px;
1573
+ border: 1px solid;
1574
+ font-weight: var(--mds-typography-fontWeight-medium);
1575
+ }
1576
+
1577
+ /* Dark theme user badge */
1578
+ html[data-theme="dark"] .mds-navbar-user-badge {
1579
+ color: #888;
1580
+ background-color: rgba(255, 255, 255, 0.05);
1581
+ border-color: rgba(255, 255, 255, 0.1);
1582
+ }
1583
+
1584
+ /* Light theme user badge */
1585
+ html[data-theme="light"] .mds-navbar-user-badge {
1586
+ color: #666;
1587
+ background-color: rgba(0, 0, 0, 0.03);
1588
+ border-color: rgba(0, 0, 0, 0.1);
1589
+ }
1590
+
1591
+ /* User badge elements */
1592
+ .mds-navbar-user-badge .user-name {
1593
+ font-weight: var(--mds-typography-fontWeight-medium);
1594
+ }
1595
+
1596
+ .mds-navbar-user-badge .user-separator {
1597
+ opacity: 0.7;
1598
+ }
1599
+
1600
+ .mds-navbar-user-badge .user-email {
1601
+ opacity: 0.8;
1602
+ }
1603
+
1604
+ /* Dark mode support (future) */
1605
+ @media (prefers-color-scheme: dark) {
1606
+ /* Enhanced styles for dark mode when implemented */
1607
+ }
1608
+
1609
+ /* ========================================
1610
+ DataTable Component Styles
1611
+ ======================================== */
1612
+
1613
+ /* DataTable Base Styles */
1614
+ .data-table {
1615
+ position: relative;
1616
+ border-radius: 24px;
1617
+ backdrop-filter: blur(24px);
1618
+ background-color: rgba(255, 255, 255, 0.1);
1619
+ border: 1px solid rgba(255, 255, 255, 0.3);
1620
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
1621
+ overflow: hidden;
1622
+ font-family: var(--mds-typography-fontFamily-brand);
1623
+ }
1624
+
1625
+ /* Loading Animation */
1626
+ .data-table-spinner {
1627
+ width: 32px;
1628
+ height: 32px;
1629
+ border: 2px solid transparent;
1630
+ border-top: 2px solid white;
1631
+ border-radius: 50%;
1632
+ animation: mds-spin 1s linear infinite;
1633
+ }
1634
+
1635
+ /* Responsive Breakpoints */
1636
+ @media (max-width: 768px) {
1637
+ .data-table[role="table"] {
1638
+ display: block !important;
1639
+ }
1640
+
1641
+ .data-table .table-header {
1642
+ display: none !important;
1643
+ }
1644
+
1645
+ .data-table .table-body {
1646
+ display: block !important;
1647
+ }
1648
+
1649
+ .data-table .table-row {
1650
+ display: block !important;
1651
+ border: 1px solid var(--mds-color-border-medium) !important;
1652
+ border-radius: 12px !important;
1653
+ margin-bottom: 16px !important;
1654
+ padding: 16px !important;
1655
+ background: rgba(255, 255, 255, 0.05) !important;
1656
+ }
1657
+
1658
+ .data-table .table-cell {
1659
+ display: flex !important;
1660
+ justify-content: space-between !important;
1661
+ align-items: center !important;
1662
+ padding: 8px 0 !important;
1663
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
1664
+ }
1665
+
1666
+ .data-table .table-cell:last-child {
1667
+ border-bottom: none !important;
1668
+ justify-content: center !important;
1669
+ margin-top: 12px !important;
1670
+ }
1671
+
1672
+ .data-table .table-cell::before {
1673
+ content: attr(data-label) !important;
1674
+ font-weight: var(--mds-typography-fontWeight-medium) !important;
1675
+ color: var(--mds-color-text-secondary) !important;
1676
+ font-size: var(--mds-typography-fontSize-xs) !important;
1677
+ text-transform: uppercase !important;
1678
+ letter-spacing: 0.5px !important;
1679
+ min-width: 100px !important;
1680
+ }
1681
+
1682
+ .data-table .table-actions {
1683
+ flex-direction: column !important;
1684
+ gap: var(--mds-spacing-sm) !important;
1685
+ }
1686
+
1687
+ .data-table .table-actions button {
1688
+ width: 100% !important;
1689
+ justify-content: center !important;
1690
+ }
1691
+ }
1692
+
1693
+ /* Tablet Breakpoint */
1694
+ @media (max-width: 1024px) and (min-width: 769px) {
1695
+ .data-table .table-row {
1696
+ font-size: var(--mds-typography-fontSize-sm) !important;
1697
+ }
1698
+
1699
+ .data-table .table-cell {
1700
+ padding: var(--mds-spacing-sm) var(--mds-spacing-md) !important;
1701
+ }
1702
+
1703
+ .data-table .table-actions button {
1704
+ padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important;
1705
+ font-size: var(--mds-typography-fontSize-xs) !important;
1706
+ }
1707
+ }
1708
+
1709
+ /* Utility Classes */
1710
+ .data-table-compact .table-cell {
1711
+ padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important;
1712
+ }
1713
+
1714
+ .data-table-audit .table-row {
1715
+ border-left: 3px solid transparent;
1716
+ }
1717
+
1718
+ .data-table-audit .table-row[data-action="CREATE"] {
1719
+ border-left-color: rgba(34, 197, 94, 0.5);
1720
+ }
1721
+
1722
+ .data-table-audit .table-row[data-action="UPDATE"] {
1723
+ border-left-color: rgba(59, 130, 246, 0.5);
1724
+ }
1725
+
1726
+ .data-table-audit .table-row[data-action="DELETE"] {
1727
+ border-left-color: rgba(239, 68, 68, 0.5);
1728
+ }
1729
+
1730
+ /* Scrollbar Styling */
1731
+ .data-table .table-body::-webkit-scrollbar {
1732
+ width: 8px;
1733
+ }
1734
+
1735
+ .data-table .table-body::-webkit-scrollbar-track {
1736
+ background: rgba(255, 255, 255, 0.05);
1737
+ border-radius: 4px;
1738
+ }
1739
+
1740
+ .data-table .table-body::-webkit-scrollbar-thumb {
1741
+ background: rgba(255, 255, 255, 0.2);
1742
+ border-radius: 4px;
1743
+ }
1744
+
1745
+ .data-table .table-body::-webkit-scrollbar-thumb:hover {
1746
+ background: rgba(255, 255, 255, 0.3);
1747
+ }
1748
+
1749
+ /* Badge and Chip Styles */
1750
+ .data-table-badge {
1751
+ display: inline-flex;
1752
+ align-items: center;
1753
+ padding: 4px 8px;
1754
+ border-radius: 16px;
1755
+ font-size: var(--mds-typography-fontSize-xs);
1756
+ font-weight: var(--mds-typography-fontWeight-medium);
1757
+ backdrop-filter: blur(8px);
1758
+ border: 1px solid rgba(255, 255, 255, 0.1);
1759
+ white-space: nowrap;
1760
+ }
1761
+
1762
+ .data-table-badge.primary {
1763
+ background-color: rgba(59, 130, 246, 0.2);
1764
+ border-color: rgba(59, 130, 246, 0.3);
1765
+ color: #3b82f6;
1766
+ }
1767
+
1768
+ .data-table-badge.success {
1769
+ background-color: rgba(34, 197, 94, 0.2);
1770
+ border-color: rgba(34, 197, 94, 0.3);
1771
+ color: #22c55e;
1772
+ }
1773
+
1774
+ .data-table-badge.warning {
1775
+ background-color: rgba(234, 179, 8, 0.2);
1776
+ border-color: rgba(234, 179, 8, 0.3);
1777
+ color: #eab308;
1778
+ }
1779
+
1780
+ .data-table-badge.danger {
1781
+ background-color: rgba(239, 68, 68, 0.2);
1782
+ border-color: rgba(239, 68, 68, 0.3);
1783
+ color: #ef4444;
1784
+ }
1785
+
1786
+ .data-table-badge.info {
1787
+ background-color: rgba(147, 51, 234, 0.2);
1788
+ border-color: rgba(147, 51, 234, 0.3);
1789
+ color: #9333ea;
1790
+ }
1791
+
1792
+ /* Code/Monospace Cell Styling */
1793
+ .data-table-code {
1794
+ font-family: 'Courier New', monospace;
1795
+ background-color: rgba(255, 255, 255, 0.1);
1796
+ padding: 4px 12px;
1797
+ border-radius: 8px;
1798
+ display: inline-block;
1799
+ font-size: var(--mds-typography-fontSize-sm);
1800
+ word-break: break-all;
1801
+ }