@j3m-quantum/ui 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -430,23 +430,78 @@
430
430
  --j3m-bg-input-disabled: var(--j3m-glass-light-20);
431
431
  --j3m-bg-sidebar: #E8E8E8; /* Solid sidebar in glass mode */
432
432
 
433
- /* Legacy surface tokens */
434
- --surface-bg: var(--j3m-glass-light-40);
435
- --surface-border: var(--j3m-glass-border-white);
433
+ /* Legacy surface tokens - SOLID colors for portal components (match solid light mode) */
434
+ --surface-bg: var(--j3m-gray-1);
435
+ --surface-border: var(--j3m-gray-6);
436
436
  --surface-shadow: var(--j3m-glass-shadow-md);
437
437
  --surface-radius: var(--j3m-radius-l);
438
- --surface-blur: var(--j3m-blur-lg);
438
+ --surface-blur: 0;
439
439
 
440
- /* Overlay surfaces (dialogs, popovers, etc) */
441
- --overlay-bg: var(--j3m-glass-light-70);
442
- --overlay-border: var(--j3m-glass-border-light);
440
+ /* Overlay surfaces (dialogs, popovers, etc) - WHITE to match solid light mode */
441
+ --overlay-bg: var(--j3m-gray-1);
442
+ --overlay-border: var(--j3m-gray-6);
443
443
  --overlay-shadow: var(--j3m-glass-shadow-lg);
444
- --overlay-blur: var(--j3m-blur-lg);
444
+ --overlay-blur: 0;
445
445
 
446
- /* Shadcn overrides for glass */
447
- --input-bg: var(--j3m-glass-light-50);
446
+ /* Shadcn overrides for glass - Portal components use WHITE to match solid light mode */
447
+ --input-bg: var(--j3m-gray-1);
448
448
  --card: var(--j3m-glass-light-50);
449
- --popover: var(--j3m-glass-light-70);
449
+ --popover: var(--j3m-gray-1);
450
+
451
+ /* Dialog, Sheet, Drawer use popover token - ensure they're white */
452
+ --dialog: var(--j3m-gray-1);
453
+ }
454
+
455
+ /* Light Glass Mode - Portal Components (Dialog, Sheet, Drawer, Popover, HoverCard)
456
+ These render outside the app tree via React Portals.
457
+ Use WHITE backgrounds to match solid light mode. */
458
+ .theme-glass:not(.dark) [data-slot="dialog-content"],
459
+ .theme-glass:not(.dark) [data-slot="sheet-content"],
460
+ .theme-glass:not(.dark) [data-slot="drawer-content"],
461
+ .theme-glass:not(.dark) [data-slot="popover-content"],
462
+ .theme-glass:not(.dark) [data-slot="hover-card-content"],
463
+ .theme-glass:not(.dark) [data-slot="dropdown-menu-content"],
464
+ .theme-glass:not(.dark) [data-slot="context-menu-content"],
465
+ .theme-glass:not(.dark) [data-slot="menubar-content"],
466
+ .theme-glass:not(.dark) [data-slot="select-content"] {
467
+ background: var(--j3m-gray-1) !important;
468
+ border-color: var(--j3m-gray-6) !important;
469
+ color: var(--j3m-gray-12) !important;
470
+ }
471
+
472
+ /* Light Glass Mode - Command component and its children */
473
+ .theme-glass:not(.dark) [data-slot="command"] {
474
+ background: transparent !important;
475
+ }
476
+
477
+ .theme-glass:not(.dark) [data-slot="command-input-wrapper"] {
478
+ background: var(--j3m-gray-1) !important;
479
+ border-color: var(--j3m-gray-6) !important;
480
+ }
481
+
482
+ .theme-glass:not(.dark) [data-slot="command-list"] {
483
+ background: var(--j3m-gray-1) !important;
484
+ border-color: var(--j3m-gray-6) !important;
485
+ }
486
+
487
+ .theme-glass:not(.dark) [data-slot="command-input"] {
488
+ color: var(--j3m-gray-12) !important;
489
+ }
490
+
491
+ .theme-glass:not(.dark) [data-slot="command-item"] {
492
+ color: var(--j3m-gray-12) !important;
493
+ }
494
+
495
+ .theme-glass:not(.dark) [data-slot="command-group-heading"] {
496
+ color: var(--j3m-gray-9) !important;
497
+ }
498
+
499
+ /* Light Glass Mode - Calendar should match solid mode */
500
+ .theme-glass:not(.dark) [data-slot="calendar"],
501
+ .theme-glass:not(.dark) .rdp {
502
+ background: var(--j3m-gray-1) !important;
503
+ border-color: var(--j3m-gray-6) !important;
504
+ color: var(--j3m-gray-12) !important;
450
505
  }
451
506
 
452
507
  /* ========================================
@@ -459,14 +514,14 @@
459
514
  /* Override frosted glass tokens for dark mode */
460
515
  --j3m-glass-frosted: var(--j3m-glass-dark-surface);
461
516
  --j3m-glass-frosted-strong: var(--j3m-glass-dark-elevated);
462
- --j3m-glass-frosted-card: var(--j3m-glass-dark-surface);
517
+ --j3m-glass-frosted-card: var(--j3m-glass-dark-surface); /* Cards same darkness as sections (70%) */
463
518
  --j3m-glass-border-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.12) 0%, rgba(255, 255, 255, 0.04) 100%);
464
519
  --j3m-glass-border-light: var(--j3m-glass-dark-border-light);
465
520
  --j3m-glass-border-white: var(--j3m-glass-dark-border);
466
521
  --j3m-glass-border-subtle: var(--j3m-glass-dark-border-subtle);
467
522
 
468
523
  /* Override text colors for visibility */
469
- --card-foreground: rgba(255, 255, 255, 0.95);
524
+ --card-foreground: var(--accent-foreground);
470
525
  --accent-foreground: #FFFFFF;
471
526
  --foreground: rgba(255, 255, 255, 0.95);
472
527
  --muted-foreground: rgba(255, 255, 255, 0.6);
@@ -488,40 +543,50 @@
488
543
  radial-gradient(at 0% 100%, rgba(22, 27, 34, 0.6) 0px, transparent 50%),
489
544
  linear-gradient(180deg, #0a0a0f 0%, #0d1117 50%, #161b22 100%);
490
545
 
491
- /* Background & Surface Tokens (Dark Glass) - using semantic tokens */
546
+ /* Background & Surface Tokens (Dark Glass) - Use SOLID colors to match solid dark mode */
492
547
  --j3m-bg-app: transparent;
493
548
  --j3m-bg-page: transparent;
494
- --j3m-bg-surface: var(--j3m-glass-dark-surface);
495
- --j3m-bg-surface-hover: var(--j3m-glass-dark-surface-hover);
496
- --j3m-bg-surface-active: var(--j3m-glass-dark-surface-active);
497
- --j3m-bg-elevated: var(--j3m-glass-dark-elevated);
498
- --j3m-bg-elevated-hover: var(--j3m-glass-dark-elevated-hover);
499
- --j3m-bg-overlay: var(--j3m-glass-dark-overlay);
500
- --j3m-bg-muted: var(--j3m-glass-dark-muted);
501
- --j3m-bg-subtle: var(--j3m-glass-dark-subtle);
502
- --j3m-bg-element: var(--j3m-glass-dark-element);
503
- --j3m-bg-element-hover: var(--j3m-glass-dark-element-hover);
504
- --j3m-bg-element-active: var(--j3m-glass-dark-element-active);
505
- --j3m-bg-input: var(--j3m-glass-dark-input);
506
- --j3m-bg-input-disabled: var(--j3m-glass-dark-subtle);
507
- --j3m-bg-sidebar: #1a1a1a; /* Solid dark sidebar in glass mode */
508
-
509
- /* Legacy surface tokens */
510
- --surface-bg: var(--j3m-glass-dark-surface);
511
- --surface-border: var(--j3m-glass-dark-border);
512
- --overlay-bg: var(--j3m-glass-dark-overlay);
513
- --overlay-border: var(--j3m-glass-dark-border-light);
549
+ --j3m-bg-surface: var(--j3m-gray-13);
550
+ --j3m-bg-surface-hover: var(--j3m-gray-12);
551
+ --j3m-bg-surface-active: #404040;
552
+ --j3m-bg-elevated: var(--j3m-gray-12);
553
+ --j3m-bg-elevated-hover: #404040;
554
+ --j3m-bg-overlay: var(--j3m-gray-13);
555
+ --j3m-bg-muted: var(--j3m-gray-12);
556
+ --j3m-bg-subtle: var(--j3m-gray-11);
557
+ --j3m-bg-element: var(--j3m-gray-12);
558
+ --j3m-bg-element-hover: #404040;
559
+ --j3m-bg-element-active: #4a4a4a;
560
+ --j3m-bg-input: var(--j3m-gray-11);
561
+ --j3m-bg-input-disabled: var(--j3m-gray-10);
562
+ --j3m-bg-sidebar: var(--j3m-gray-13);
563
+
564
+ /* Legacy surface tokens - SOLID colors for portal components */
565
+ --surface-bg: var(--j3m-gray-13);
566
+ --surface-border: var(--j3m-gray-11);
567
+ --overlay-bg: var(--j3m-gray-13);
568
+ --overlay-border: var(--j3m-gray-11);
514
569
 
515
- /* Dark glass borders */
516
- --border: var(--j3m-glass-dark-border);
570
+ /* Dark glass borders - SOLID to match solid dark mode */
571
+ --border: var(--j3m-gray-11);
517
572
 
518
- /* Text colors for dark glass */
519
- --foreground: rgba(255, 255, 255, 0.95);
520
- --muted-foreground: rgba(255, 255, 255, 0.6);
573
+ /* Text colors - match solid dark mode */
574
+ --foreground: var(--j3m-gray-1);
575
+ --muted-foreground: var(--j3m-gray-7);
576
+
577
+ /* Shadcn overrides for dark glass - Use SOLID colors to match solid dark mode */
578
+ --card: var(--j3m-gray-13);
579
+ --popover: var(--j3m-gray-13);
580
+ --secondary: var(--j3m-gray-12);
581
+ --accent: #404040;
582
+ --accent-foreground: var(--j3m-gray-1);
521
583
 
522
- /* Shadcn overrides for dark glass */
523
- --card: var(--j3m-glass-dark-surface);
524
- --popover: var(--j3m-glass-dark-overlay);
584
+ /* Sidebar tokens - match solid dark mode */
585
+ --sidebar: var(--j3m-gray-13);
586
+ --sidebar-foreground: var(--j3m-gray-1);
587
+ --sidebar-border: var(--j3m-gray-11);
588
+ --sidebar-accent: #404040;
589
+ --sidebar-accent-foreground: var(--j3m-gray-1);
525
590
 
526
591
  /* Orange accent glow for interactive elements */
527
592
  --j3m-glass-shadow-glow: 0 0 20px rgba(243, 108, 33, 0.3);
@@ -532,30 +597,35 @@
532
597
  Applied inside glass surfaces to adjust nested components
533
598
  ======================================== */
534
599
 
600
+ /* Glass Context - Applied inside glass surfaces
601
+ - card: Keeps glass appearance for in-app content
602
+ - popover: WHITE solid to match solid light mode */
535
603
  .glass-context {
536
604
  --background: var(--j3m-glass-light-80);
537
605
  --input: var(--j3m-glass-light-50);
538
606
  --card: var(--j3m-glass-light-70);
539
- --popover: var(--j3m-glass-light-80);
607
+ --popover: var(--j3m-gray-1);
540
608
  --muted: var(--j3m-glass-light-50);
541
609
  --muted-foreground: rgba(0, 0, 0, 0.55);
542
610
  --secondary: var(--j3m-glass-light-80);
543
611
  --border: var(--j3m-glass-border-light);
544
612
  }
545
613
 
546
- /* Dark glass context - override for dark mode */
614
+ /* Dark glass context - Use SOLID dark mode colors to match solid dark mode */
547
615
  .dark .glass-context,
548
616
  .theme-glass.dark .glass-context {
549
- --background: var(--j3m-glass-dark-surface);
550
- --input: var(--j3m-glass-dark-input);
551
- --card: var(--j3m-glass-dark-surface);
552
- --popover: var(--j3m-glass-dark-overlay);
553
- --muted: var(--j3m-glass-dark-muted);
554
- --muted-foreground: rgba(255, 255, 255, 0.6);
555
- --secondary: var(--j3m-glass-dark-element);
556
- --border: var(--j3m-glass-dark-border);
557
- --foreground: rgba(255, 255, 255, 0.95);
558
- --card-foreground: rgba(255, 255, 255, 0.95);
617
+ --background: var(--j3m-gray-12);
618
+ --input: var(--j3m-gray-11);
619
+ --card: var(--j3m-gray-13);
620
+ --popover: var(--j3m-gray-13);
621
+ --muted: var(--j3m-gray-12);
622
+ --muted-foreground: var(--j3m-gray-7);
623
+ --secondary: var(--j3m-gray-12);
624
+ --accent: #404040;
625
+ --accent-foreground: var(--j3m-gray-1);
626
+ --border: var(--j3m-gray-11);
627
+ --foreground: var(--j3m-gray-1);
628
+ --card-foreground: var(--j3m-gray-1);
559
629
  }
560
630
 
561
631
  /* ========================================
@@ -1282,13 +1352,16 @@ textarea,
1282
1352
 
1283
1353
  /* --- SWITCH --- */
1284
1354
  .glass-context [data-slot="switch"],
1355
+ .glass-context [data-slot="theme-switch"],
1285
1356
  .glass-context [role="switch"] {
1286
1357
  background: rgba(255, 255, 255, 0.5) !important;
1287
1358
  border-color: rgba(0, 0, 0, 0.15) !important;
1288
1359
  }
1289
1360
 
1290
1361
  .glass-context [data-slot="switch"][data-state="checked"],
1291
- .glass-context [role="switch"][data-state="checked"] {
1362
+ .glass-context [data-slot="theme-switch"][data-state="checked"],
1363
+ .glass-context [role="switch"][data-state="checked"],
1364
+ .glass-context [role="switch"][aria-checked="true"] {
1292
1365
  background: var(--primary) !important;
1293
1366
  border-color: var(--primary) !important;
1294
1367
  }
@@ -1351,12 +1424,13 @@ textarea,
1351
1424
  }
1352
1425
 
1353
1426
  /* --- CALENDAR --- */
1354
- /* Glass mode - same background as input boxes, keep default hover/selected states */
1427
+ /* Glass mode - use solid white to match solid light mode */
1355
1428
  .glass-context [data-slot="calendar"],
1356
1429
  .glass-context .rdp {
1357
- background: rgba(255, 255, 255, 0.8) !important;
1358
- border: 1px solid rgba(0, 0, 0, 0.15) !important;
1430
+ background: var(--j3m-gray-1) !important;
1431
+ border: 1px solid var(--j3m-gray-6) !important;
1359
1432
  border-radius: var(--j3m-radius-l) !important;
1433
+ color: var(--j3m-gray-12) !important;
1360
1434
  }
1361
1435
 
1362
1436
  /* Remove inner white background from calendar grid */
@@ -1600,15 +1674,6 @@ textarea,
1600
1674
  .glass-context [data-slot="sheet-content"] {
1601
1675
  background: var(--sidebar) !important;
1602
1676
  border-color: var(--sidebar-border) !important;
1603
- padding-left: 1.5rem !important;
1604
- padding-right: 1.5rem !important;
1605
- }
1606
-
1607
- .glass-context [data-slot="sheet-header"],
1608
- .glass-context [data-slot="sheet-footer"],
1609
- .glass-context [data-slot="sheet-body"] {
1610
- padding-left: 0 !important;
1611
- padding-right: 0 !important;
1612
1677
  }
1613
1678
 
1614
1679
  /* --- DIALOG --- */
@@ -1624,40 +1689,56 @@ textarea,
1624
1689
  }
1625
1690
 
1626
1691
  .glass-context [data-slot="command"] {
1627
- background: transparent !important;
1628
- background-color: transparent !important;
1629
- border: none !important;
1630
- box-shadow: none !important;
1692
+ background: var(--j3m-gray-1) !important;
1693
+ background-color: var(--j3m-gray-1) !important;
1694
+ border: 1px solid var(--j3m-gray-6) !important;
1695
+ border-width: 1px !important;
1696
+ border-style: solid !important;
1697
+ box-shadow: var(--shadow-md) !important;
1631
1698
  outline: none !important;
1699
+ border-radius: var(--j3m-radius-l) !important;
1700
+ overflow: hidden !important;
1632
1701
  }
1633
1702
 
1703
+ /* Command in glass-context - unified container styling */
1634
1704
  .glass-context [data-slot="command-input-wrapper"] {
1635
- background: var(--sidebar) !important;
1636
- border: 1px solid var(--sidebar-border) !important;
1637
- border-radius: var(--j3m-radius-full) !important;
1638
- padding-left: 1rem !important;
1639
- padding-right: 1rem !important;
1705
+ background: transparent !important;
1706
+ border: 0 !important;
1707
+ border-width: 0 !important;
1708
+ border-bottom: 1px solid var(--j3m-gray-6) !important;
1709
+ border-radius: 0 !important;
1710
+ padding-left: 0.75rem !important;
1711
+ padding-right: 0.75rem !important;
1640
1712
  }
1641
1713
 
1642
1714
  .glass-context [data-slot="command-input"] {
1643
1715
  background: transparent !important;
1644
- color: var(--sidebar-foreground) !important;
1716
+ color: var(--j3m-gray-12) !important;
1645
1717
  }
1646
1718
 
1647
1719
  .glass-context [data-slot="command-input"]::placeholder {
1648
- color: var(--muted-foreground) !important;
1720
+ color: var(--j3m-gray-9) !important;
1721
+ }
1722
+
1723
+ /* Override generic input focus styles for command-input */
1724
+ .glass-context [data-slot="command-input"]:focus,
1725
+ .glass-context [data-slot="command-input"]:focus-visible {
1726
+ border-color: transparent !important;
1727
+ box-shadow: none !important;
1728
+ outline: none !important;
1649
1729
  }
1650
1730
 
1651
1731
  .glass-context [data-slot="command-input-wrapper"]:focus-within {
1652
- border-color: var(--j3m-orange-9) !important;
1653
- box-shadow: 0 0 0 3px rgba(243, 108, 33, 0.2) !important;
1732
+ border-bottom-color: var(--j3m-gray-8) !important;
1733
+ box-shadow: none !important;
1654
1734
  }
1655
1735
 
1656
1736
  .glass-context [data-slot="command-list"] {
1657
- background: var(--sidebar) !important;
1658
- border: 1px solid var(--sidebar-border) !important;
1659
- border-radius: var(--j3m-radius-l) !important;
1660
- margin-top: 0.25rem !important;
1737
+ background: transparent !important;
1738
+ border: 0 !important;
1739
+ border-width: 0 !important;
1740
+ border-radius: 0 !important;
1741
+ margin-top: 0 !important;
1661
1742
  }
1662
1743
 
1663
1744
  .glass-context [data-slot="command-group"] {
@@ -1665,7 +1746,11 @@ textarea,
1665
1746
  }
1666
1747
 
1667
1748
  .glass-context [data-slot="command-item"] {
1668
- color: var(--sidebar-foreground) !important;
1749
+ color: var(--j3m-gray-12) !important;
1750
+ }
1751
+
1752
+ .glass-context [data-slot="command-group-heading"] {
1753
+ color: var(--j3m-gray-9) !important;
1669
1754
  }
1670
1755
 
1671
1756
  /* Command item hover - use accent (grey) not primary (orange) */
@@ -1695,6 +1780,25 @@ textarea,
1695
1780
  }
1696
1781
 
1697
1782
  /* --- SCROLL AREA --- */
1783
+ /* Solid Light Mode - dark thumb on light background */
1784
+ [data-slot="scroll-area-thumb"] {
1785
+ background: rgba(0, 0, 0, 0.25) !important;
1786
+ }
1787
+
1788
+ [data-slot="scroll-area-thumb"]:hover {
1789
+ background: rgba(0, 0, 0, 0.4) !important;
1790
+ }
1791
+
1792
+ /* Solid Dark Mode - light thumb on dark background */
1793
+ .dark [data-slot="scroll-area-thumb"] {
1794
+ background: rgba(255, 255, 255, 0.25) !important;
1795
+ }
1796
+
1797
+ .dark [data-slot="scroll-area-thumb"]:hover {
1798
+ background: rgba(255, 255, 255, 0.4) !important;
1799
+ }
1800
+
1801
+ /* Glass Light Mode - same as light solid for consistency */
1698
1802
  .glass-context [data-slot="scroll-area"] {
1699
1803
  background: var(--sidebar) !important;
1700
1804
  border: 1px solid var(--sidebar-border) !important;
@@ -1745,23 +1849,41 @@ textarea,
1745
1849
  Styling for components inside .dark .glass-context
1746
1850
  ======================================== */
1747
1851
 
1748
- /* --- CARDS (Dark Glass) - ALL cards in dark glass mode --- */
1852
+ /* --- CARDS (Dark Glass) - Base styling for ALL dark glass cards --- */
1853
+ /* Freestanding cards on background image = Same darkness as sections (70%) */
1749
1854
  .dark.theme-glass [data-slot="card"],
1750
- .theme-glass.dark [data-slot="card"],
1855
+ .theme-glass.dark [data-slot="card"] {
1856
+ background: var(--j3m-glass-dark-surface) !important; /* 70% dark - matches section darkness */
1857
+ backdrop-filter: blur(var(--j3m-blur-frosted)) !important;
1858
+ -webkit-backdrop-filter: blur(var(--j3m-blur-frosted)) !important;
1859
+ border: 1px solid var(--j3m-glass-dark-border-light) !important;
1860
+ box-shadow: var(--j3m-glass-shadow-md) !important;
1861
+ color: var(--j3m-gray-1) !important;
1862
+ position: relative;
1863
+ }
1864
+
1865
+ /* Cards INSIDE glass sections = SAME darkness as sections for consistency */
1751
1866
  .dark .glass-context [data-slot="card"],
1867
+ .dark.theme-glass .glass-context [data-slot="card"],
1752
1868
  .theme-glass.dark .glass-context [data-slot="card"] {
1753
- background: var(--sidebar) !important;
1754
- border: 1px solid var(--sidebar-border) !important;
1755
- box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.15) !important;
1756
- color: var(--sidebar-foreground) !important;
1869
+ background: var(--j3m-glass-dark-surface) !important; /* 70% dark - matches section darkness */
1757
1870
  }
1758
1871
 
1759
- /* Remove the light gradient border pseudo-element in dark mode */
1872
+ /* Gradient border for glass edge effect on dark cards */
1760
1873
  .dark.theme-glass [data-slot="card"]::before,
1761
1874
  .theme-glass.dark [data-slot="card"]::before,
1762
- .dark .glass-context [data-slot="card"]::before,
1763
- .theme-glass.dark .glass-context [data-slot="card"]::before {
1764
- background: linear-gradient(180deg, rgba(255, 255, 255, 0.12) 0%, rgba(255, 255, 255, 0.04) 100%) !important;
1875
+ .dark .glass-context [data-slot="card"]::before {
1876
+ content: '';
1877
+ position: absolute;
1878
+ inset: 0;
1879
+ border-radius: inherit;
1880
+ padding: 1px;
1881
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0.05) 100%) !important;
1882
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1883
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1884
+ -webkit-mask-composite: xor;
1885
+ mask-composite: exclude;
1886
+ pointer-events: none;
1765
1887
  }
1766
1888
 
1767
1889
  /* Card text colors in dark glass */
@@ -1769,7 +1891,7 @@ textarea,
1769
1891
  .theme-glass.dark [data-slot="card"] *,
1770
1892
  .dark.theme-glass .glass-context *,
1771
1893
  .theme-glass.dark .glass-context * {
1772
- --card-foreground: var(--sidebar-foreground);
1894
+ --card-foreground: rgba(255, 255, 255, 0.95);
1773
1895
  }
1774
1896
 
1775
1897
  /* --- INPUT FIELDS (Dark Glass) --- */
@@ -1788,8 +1910,12 @@ textarea,
1788
1910
 
1789
1911
  .dark .glass-context input::placeholder,
1790
1912
  .dark .glass-context [data-slot="input"]::placeholder,
1913
+ .dark .glass-context textarea::placeholder,
1914
+ .dark .glass-context [data-slot="textarea"]::placeholder,
1791
1915
  .theme-glass.dark .glass-context input::placeholder,
1792
- .theme-glass.dark .glass-context [data-slot="input"]::placeholder {
1916
+ .theme-glass.dark .glass-context [data-slot="input"]::placeholder,
1917
+ .theme-glass.dark .glass-context textarea::placeholder,
1918
+ .theme-glass.dark .glass-context [data-slot="textarea"]::placeholder {
1793
1919
  color: var(--muted-foreground) !important;
1794
1920
  }
1795
1921
 
@@ -1801,6 +1927,40 @@ textarea,
1801
1927
  color: var(--sidebar-foreground) !important;
1802
1928
  }
1803
1929
 
1930
+ .dark .glass-context [data-slot="select-trigger"] [data-slot="select-value"],
1931
+ .theme-glass.dark .glass-context [data-slot="select-trigger"] [data-slot="select-value"] {
1932
+ color: var(--sidebar-foreground) !important;
1933
+ }
1934
+
1935
+ /* Select placeholder text in dark glass */
1936
+ .dark .glass-context [data-slot="select-trigger"] [data-placeholder],
1937
+ .theme-glass.dark .glass-context [data-slot="select-trigger"] [data-placeholder] {
1938
+ color: var(--muted-foreground) !important;
1939
+ }
1940
+
1941
+ /* --- NATIVE SELECT (Dark Glass) --- */
1942
+ .dark .glass-context select,
1943
+ .dark .glass-context [data-slot="native-select"],
1944
+ .theme-glass.dark .glass-context select,
1945
+ .theme-glass.dark .glass-context [data-slot="native-select"] {
1946
+ background: var(--sidebar) !important;
1947
+ border-color: var(--sidebar-border) !important;
1948
+ color: var(--sidebar-foreground) !important;
1949
+ }
1950
+
1951
+ .dark .glass-context select:focus,
1952
+ .dark .glass-context [data-slot="native-select"]:focus,
1953
+ .theme-glass.dark .glass-context select:focus,
1954
+ .theme-glass.dark .glass-context [data-slot="native-select"]:focus {
1955
+ border-color: var(--j3m-orange-9) !important;
1956
+ box-shadow: 0 0 0 3px rgba(243, 108, 33, 0.3) !important;
1957
+ }
1958
+
1959
+ .dark .glass-context [data-slot="native-select-icon"],
1960
+ .theme-glass.dark .glass-context [data-slot="native-select-icon"] {
1961
+ color: var(--muted-foreground) !important;
1962
+ }
1963
+
1804
1964
  /* --- BUTTONS (Dark Glass) --- */
1805
1965
  .dark .glass-context [data-slot="button"][data-variant="outline"],
1806
1966
  .dark .glass-context [data-slot="button"][data-variant="secondary"],
@@ -1864,6 +2024,22 @@ textarea,
1864
2024
  color: var(--sidebar-foreground) !important;
1865
2025
  }
1866
2026
 
2027
+ .dark .glass-context tfoot,
2028
+ .dark .glass-context [data-slot="table-footer"],
2029
+ .theme-glass.dark .glass-context tfoot,
2030
+ .theme-glass.dark .glass-context [data-slot="table-footer"] {
2031
+ background: var(--muted) !important;
2032
+ }
2033
+
2034
+ .dark .glass-context caption,
2035
+ .dark .glass-context [data-slot="table-caption"],
2036
+ .theme-glass.dark .glass-context caption,
2037
+ .theme-glass.dark .glass-context [data-slot="table-caption"] {
2038
+ background: var(--sidebar) !important;
2039
+ border-top: 1px solid var(--sidebar-border) !important;
2040
+ color: var(--muted-foreground) !important;
2041
+ }
2042
+
1867
2043
  /* --- DROPDOWN/POPOVER (Dark Glass) --- */
1868
2044
  .dark .glass-context [data-slot="dropdown-menu-content"],
1869
2045
  .dark .glass-context [data-slot="popover-content"],
@@ -1976,10 +2152,25 @@ textarea,
1976
2152
  }
1977
2153
 
1978
2154
  /* --- COMMAND (Dark Glass) --- */
2155
+ .dark .glass-context [data-slot="command"],
2156
+ .theme-glass.dark .glass-context [data-slot="command"] {
2157
+ background: var(--sidebar) !important;
2158
+ background-color: var(--sidebar) !important;
2159
+ border: 1px solid var(--sidebar-border) !important;
2160
+ border-width: 1px !important;
2161
+ border-style: solid !important;
2162
+ }
2163
+
1979
2164
  .dark .glass-context [data-slot="command-input-wrapper"],
1980
2165
  .theme-glass.dark .glass-context [data-slot="command-input-wrapper"] {
1981
- background: var(--sidebar) !important;
1982
- border-color: var(--sidebar-border) !important;
2166
+ background: transparent !important;
2167
+ border-bottom-color: var(--sidebar-border) !important;
2168
+ }
2169
+
2170
+ .dark .glass-context [data-slot="command-input-wrapper"]:focus-within,
2171
+ .theme-glass.dark .glass-context [data-slot="command-input-wrapper"]:focus-within {
2172
+ border-bottom-color: var(--j3m-gray-8) !important;
2173
+ box-shadow: none !important;
1983
2174
  }
1984
2175
 
1985
2176
  .dark .glass-context [data-slot="command-input"],
@@ -1992,10 +2183,21 @@ textarea,
1992
2183
  color: var(--muted-foreground) !important;
1993
2184
  }
1994
2185
 
2186
+ /* Override generic input focus styles for command-input in dark glass */
2187
+ .dark .glass-context [data-slot="command-input"]:focus,
2188
+ .dark .glass-context [data-slot="command-input"]:focus-visible,
2189
+ .theme-glass.dark .glass-context [data-slot="command-input"]:focus,
2190
+ .theme-glass.dark .glass-context [data-slot="command-input"]:focus-visible {
2191
+ border-color: transparent !important;
2192
+ box-shadow: none !important;
2193
+ outline: none !important;
2194
+ }
2195
+
1995
2196
  .dark .glass-context [data-slot="command-list"],
1996
2197
  .theme-glass.dark .glass-context [data-slot="command-list"] {
1997
- background: var(--sidebar) !important;
1998
- border-color: var(--sidebar-border) !important;
2198
+ background: transparent !important;
2199
+ border: 0 !important;
2200
+ border-width: 0 !important;
1999
2201
  }
2000
2202
 
2001
2203
  .dark .glass-context [data-slot="command-item"],
@@ -2078,13 +2280,31 @@ textarea,
2078
2280
  border-color: var(--sidebar-border) !important;
2079
2281
  }
2080
2282
 
2081
- /* --- CALENDAR (Dark Glass) --- */
2283
+ /* --- CALENDAR (Dark Glass) - Match solid dark mode --- */
2082
2284
  .dark .glass-context [data-slot="calendar"],
2083
2285
  .dark .glass-context .rdp,
2084
2286
  .theme-glass.dark .glass-context [data-slot="calendar"],
2085
- .theme-glass.dark .glass-context .rdp {
2086
- background: var(--sidebar) !important;
2087
- border-color: var(--sidebar-border) !important;
2287
+ .theme-glass.dark .glass-context .rdp,
2288
+ .theme-glass.dark [data-slot="calendar"],
2289
+ .theme-glass.dark .rdp {
2290
+ background: var(--j3m-gray-13) !important;
2291
+ border-color: var(--j3m-gray-11) !important;
2292
+ color: var(--j3m-gray-1) !important;
2293
+ }
2294
+
2295
+ /* Calendar weekday row - remove background, use light text */
2296
+ .dark .glass-context [data-slot="calendar"] thead,
2297
+ .dark .glass-context [data-slot="calendar"] .rdp-weekdays,
2298
+ .dark .glass-context [data-slot="calendar"] .rdp-weekday,
2299
+ .theme-glass.dark .glass-context [data-slot="calendar"] thead,
2300
+ .theme-glass.dark .glass-context [data-slot="calendar"] .rdp-weekdays,
2301
+ .theme-glass.dark .glass-context [data-slot="calendar"] .rdp-weekday,
2302
+ .theme-glass.dark [data-slot="calendar"] thead,
2303
+ .theme-glass.dark [data-slot="calendar"] .rdp-weekdays,
2304
+ .theme-glass.dark [data-slot="calendar"] .rdp-weekday {
2305
+ background: transparent !important;
2306
+ background-color: transparent !important;
2307
+ color: var(--muted-foreground) !important;
2088
2308
  }
2089
2309
 
2090
2310
  /* --- SLIDER (Dark Glass) --- */
@@ -2124,13 +2344,26 @@ textarea,
2124
2344
 
2125
2345
  /* --- SWITCH (Dark Glass) --- */
2126
2346
  .dark .glass-context [data-slot="switch"],
2347
+ .dark .glass-context [data-slot="theme-switch"],
2127
2348
  .dark .glass-context [role="switch"],
2128
2349
  .theme-glass.dark .glass-context [data-slot="switch"],
2350
+ .theme-glass.dark .glass-context [data-slot="theme-switch"],
2129
2351
  .theme-glass.dark .glass-context [role="switch"] {
2130
2352
  background: var(--muted) !important;
2131
2353
  border-color: var(--sidebar-border) !important;
2132
2354
  }
2133
2355
 
2356
+ /* Switch checked state - orange background */
2357
+ .dark .glass-context [data-slot="switch"][data-state="checked"],
2358
+ .dark .glass-context [data-slot="theme-switch"][data-state="checked"],
2359
+ .dark .glass-context [role="switch"][aria-checked="true"],
2360
+ .theme-glass.dark .glass-context [data-slot="switch"][data-state="checked"],
2361
+ .theme-glass.dark .glass-context [data-slot="theme-switch"][data-state="checked"],
2362
+ .theme-glass.dark .glass-context [role="switch"][aria-checked="true"] {
2363
+ background: var(--primary) !important;
2364
+ border-color: var(--primary) !important;
2365
+ }
2366
+
2134
2367
  /* ========================================
2135
2368
  TOAST/SONNER POSITIONING
2136
2369
  Position toasts at top-center of screen
@@ -2150,12 +2383,51 @@ textarea,
2150
2383
  transform: translateX(-50%) !important;
2151
2384
  }
2152
2385
 
2153
- /* Glass mode toast styling */
2154
- .glass-context [data-sonner-toast],
2155
- .glass-context .sonner-toast {
2156
- background: var(--sidebar) !important;
2157
- border-color: var(--sidebar-border) !important;
2158
- color: var(--sidebar-foreground) !important;
2386
+ /* Light Glass mode toast styling - WHITE to match solid light mode */
2387
+ .theme-glass:not(.dark) [data-sonner-toast],
2388
+ .theme-glass:not(.dark) .sonner-toast {
2389
+ background: var(--j3m-gray-1) !important;
2390
+ border-color: var(--j3m-gray-6) !important;
2391
+ color: var(--j3m-gray-12) !important;
2392
+ }
2393
+
2394
+ /* Dark glass toast - solid dark background with bright text */
2395
+ .theme-glass.dark [data-sonner-toast],
2396
+ .theme-glass.dark .sonner-toast,
2397
+ .dark.theme-glass [data-sonner-toast],
2398
+ .dark.theme-glass .sonner-toast {
2399
+ background: var(--j3m-gray-13) !important;
2400
+ border-color: var(--j3m-gray-11) !important;
2401
+ color: var(--j3m-gray-1) !important;
2402
+ }
2403
+
2404
+ .theme-glass.dark [data-sonner-toast] *,
2405
+ .theme-glass.dark .sonner-toast *,
2406
+ .dark.theme-glass [data-sonner-toast] *,
2407
+ .dark.theme-glass .sonner-toast * {
2408
+ color: var(--j3m-gray-1) !important;
2409
+ }
2410
+
2411
+ .theme-glass.dark [data-sonner-toast] [data-description],
2412
+ .dark.theme-glass [data-sonner-toast] [data-description] {
2413
+ color: var(--j3m-gray-7) !important;
2414
+ }
2415
+
2416
+ /* Solid Dark mode toast - ensure dark background */
2417
+ .dark:not(.theme-glass) [data-sonner-toast],
2418
+ .dark:not(.theme-glass) .sonner-toast {
2419
+ background: var(--j3m-gray-13) !important;
2420
+ border-color: var(--j3m-gray-11) !important;
2421
+ color: var(--j3m-gray-1) !important;
2422
+ }
2423
+
2424
+ .dark:not(.theme-glass) [data-sonner-toast] *,
2425
+ .dark:not(.theme-glass) .sonner-toast * {
2426
+ color: var(--j3m-gray-1) !important;
2427
+ }
2428
+
2429
+ .dark:not(.theme-glass) [data-sonner-toast] [data-description] {
2430
+ color: var(--j3m-gray-7) !important;
2159
2431
  }
2160
2432
 
2161
2433
  /* ========================================