@howssatoshi/quantumcss 1.7.7 → 1.10.1

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.
@@ -27,30 +27,210 @@ html[data-theme="light"] a:hover {
27
27
 
28
28
  /* 1. Starlight Card */
29
29
  .starlight-card {
30
- background: var(--q-glass-bg);
31
- border: 1px solid var(--q-glass-border);
30
+ background: var(--q-color-surface);
31
+ border: 1px solid var(--q-color-border);
32
32
  border-radius: var(--q-radius-2xl);
33
33
  padding: var(--q-space-10);
34
34
  backdrop-filter: var(--q-glass-blur);
35
35
  -webkit-backdrop-filter: var(--q-glass-blur);
36
36
  position: relative;
37
- transition: border-color var(--q-transition-base), transform var(--q-transition-base), background-color var(--q-transition-base);
37
+ transition: border-color var(--q-duration-base) var(--q-ease-in-out),
38
+ transform var(--q-duration-base) var(--q-ease-in-out),
39
+ background-color var(--q-duration-base) var(--q-ease-in-out);
38
40
  }
39
41
 
40
42
  .starlight-card:hover {
41
- background-color: rgba(255, 255, 255, 0.04);
43
+ background-color: var(--q-color-surface-elevated);
42
44
  }
43
45
 
44
46
  /* ... existing code ... */
45
47
 
46
48
  .nav-glass:hover {
47
- background-color: rgba(255, 255, 255, 0.1);
49
+ background-color: var(--q-color-border-strong);
50
+ }
51
+
52
+ .starlight-nav, .starlight-navbar {
53
+ position: sticky;
54
+ top: 0;
55
+ z-index: 1000;
56
+ background: color-mix(in srgb, var(--q-color-bg), transparent 10%);
57
+ backdrop-filter: blur(16px);
58
+ border-bottom: 1px solid var(--q-color-border);
59
+ }
60
+
61
+ .nav-container {
62
+ max-width: 1200px;
63
+ margin: 0 auto;
64
+ padding: 1.25rem 1.5rem;
65
+ display: flex;
66
+ justify-content: space-between;
67
+ align-items: center;
68
+ width: 100%;
69
+ }
70
+
71
+ .nav-desktop { display: none; }
72
+ @media (min-width: 768px) { .nav-desktop { display: flex; align-items: center; } }
73
+
74
+ .nav-list {
75
+ display: flex;
76
+ list-style: none;
77
+ gap: 2rem;
78
+ margin: 0;
79
+ padding: 0;
80
+ }
81
+
82
+ .nav-list.vertical {
83
+ flex-direction: column;
84
+ gap: 0.5rem;
85
+ }
86
+
87
+ .nav-link {
88
+ font-size: 0.875rem;
89
+ font-weight: 600;
90
+ color: var(--q-text-secondary);
91
+ transition: all 0.2s ease;
92
+ position: relative;
93
+ padding: 0.5rem 0;
94
+ display: inline-flex;
95
+ align-items: center;
96
+ text-decoration: none;
97
+ }
98
+
99
+ .nav-link:hover {
100
+ color: var(--q-color-starlight-blue);
101
+ }
102
+
103
+ .nav-link.active {
104
+ color: var(--q-color-starlight-blue);
105
+ }
106
+
107
+ .nav-list.vertical .nav-link {
108
+ width: 100%;
109
+ padding: 0.75rem 1rem;
110
+ border-radius: 0.5rem;
111
+ }
112
+
113
+ .nav-list.vertical .nav-link:hover {
114
+ background: var(--q-highlight-bg);
115
+ }
116
+
117
+ .nav-list.vertical .nav-link.active {
118
+ background: linear-gradient(90deg, color-mix(in srgb, var(--q-color-starlight-blue), transparent 70%), transparent);
119
+ border-left: 3px solid var(--q-color-starlight-blue);
120
+ }
121
+
122
+ .nav-link::after {
123
+ content: '';
124
+ position: absolute;
125
+ bottom: 0;
126
+ left: 50%;
127
+ width: 0;
128
+ height: 2px;
129
+ background: var(--q-color-starlight-blue);
130
+ transition: all var(--q-duration-slow) var(--q-ease-in-out);
131
+ transform: translateX(-50%);
132
+ }
133
+
134
+ .nav-link:hover::after, .nav-link.active::after {
135
+ width: 80%;
136
+ box-shadow: 0 0 10px var(--q-color-starlight-glow);
137
+ }
138
+
139
+
140
+ /* 10. Timeline Component */
141
+ .starlight-timeline {
142
+ position: relative;
143
+ padding: 2rem 0;
144
+ }
145
+
146
+ .starlight-timeline::before {
147
+ content: '';
148
+ position: absolute;
149
+ left: 0;
150
+ top: 0;
151
+ bottom: 0;
152
+ width: 2px;
153
+ background: linear-gradient(to bottom, var(--q-color-starlight-blue), transparent);
154
+ }
155
+
156
+ @media (min-width: 768px) {
157
+ .starlight-timeline::before {
158
+ left: 50%;
159
+ transform: translateX(-50%);
160
+ }
48
161
  }
49
162
 
50
- .starlight-nav {
163
+ .timeline-item {
51
164
  position: relative;
165
+ margin-bottom: 4rem;
166
+ padding-left: 2.5rem;
167
+ }
168
+
169
+ @media (min-width: 768px) {
170
+ .timeline-item {
171
+ width: 50%;
172
+ padding-left: 0;
173
+ }
174
+
175
+ .timeline-item:nth-child(odd) {
176
+ padding-right: 3.5rem;
177
+ text-align: right;
178
+ }
179
+
180
+ .timeline-item:nth-child(even) {
181
+ margin-left: 50%;
182
+ padding-left: 3.5rem;
183
+ }
184
+ }
185
+
186
+ .timeline-dot {
187
+ position: absolute;
188
+ left: -5px;
189
+ top: 0.5rem;
190
+ width: 12px;
191
+ height: 12px;
192
+ border-radius: 50%;
193
+ background: var(--q-color-starlight-blue);
194
+ box-shadow: 0 0 10px var(--q-color-starlight-glow);
195
+ z-index: 1;
196
+ }
197
+
198
+ @media (min-width: 768px) {
199
+ .timeline-dot {
200
+ left: auto;
201
+ right: -6px;
202
+ }
203
+
204
+ .timeline-item:nth-child(even) .timeline-dot {
205
+ left: -6px;
206
+ right: auto;
207
+ }
208
+ }
209
+
210
+ .timeline-content {
211
+ background: var(--q-color-surface);
212
+ border: 1px solid var(--q-color-border);
213
+ border-radius: var(--q-radius-xl);
214
+ padding: 1.5rem;
215
+ transition: all 0.3s ease;
216
+ }
217
+
218
+ .timeline-content:hover {
219
+ border-color: var(--q-color-starlight-blue);
220
+ transform: translateY(-2px);
221
+ }
222
+
223
+ .timeline-date {
224
+ font-size: 0.75rem;
225
+ font-weight: 900;
226
+ color: var(--q-color-starlight-blue);
227
+ text-transform: uppercase;
228
+ letter-spacing: 0.1em;
229
+ margin-bottom: 0.5rem;
230
+ display: block;
52
231
  }
53
232
 
233
+
54
234
  html[data-theme="light"] .nav-glass:hover {
55
235
  background-color: rgba(255, 255, 255, 0.98);
56
236
  }
@@ -67,7 +247,7 @@ html[data-theme="light"] .starlight-card {
67
247
  appearance: none;
68
248
  width: 1.25rem;
69
249
  height: 1.25rem;
70
- background: rgb(255 255 255 / 5%);
250
+ background: var(--q-color-border);
71
251
  border: 1px solid rgb(255 255 255 / 20%);
72
252
  border-radius: 0.375rem;
73
253
  cursor: pointer;
@@ -142,6 +322,7 @@ html[data-theme="light"] .radio-starlight {
142
322
  top: 0; left: 0; width: 100%; height: 100%;
143
323
  pointer-events: none;
144
324
  z-index: 0;
325
+ background: var(--q-bg-primary);
145
326
  overflow: hidden;
146
327
  contain: strict;
147
328
  }
@@ -151,6 +332,7 @@ html[data-theme="light"] .radio-starlight {
151
332
  background: white;
152
333
  border-radius: 50%;
153
334
  opacity: 0.3;
335
+ z-index: -1;
154
336
  animation: star-twinkle var(--q-duration, 3s) infinite ease-in-out;
155
337
  will-change: transform, opacity;
156
338
  backface-visibility: hidden;
@@ -178,7 +360,7 @@ html[data-theme="light"] .star {
178
360
  .dialog-content {
179
361
  background-color: rgb(10 10 20 / 98%);
180
362
  backdrop-filter: blur(20px);
181
- border: 1px solid rgb(255 255 255 / 10%);
363
+ border: 1px solid var(--q-color-border-strong);
182
364
  border-radius: 1.5rem;
183
365
  padding: 2.5rem;
184
366
  max-width: 90%;
@@ -193,7 +375,7 @@ html[data-theme="light"] .star {
193
375
  background-color: rgb(10 10 20 / 98%);
194
376
  backdrop-filter: blur(24px);
195
377
  -webkit-backdrop-filter: blur(24px);
196
- border: 1px solid rgb(255 255 255 / 10%);
378
+ border: 1px solid var(--q-color-border-strong);
197
379
  border-radius: 1.5rem;
198
380
  padding: 3rem;
199
381
  width: 100%;
@@ -213,7 +395,7 @@ html[data-theme="light"] .star {
213
395
 
214
396
  .dialog-content::-webkit-scrollbar-track,
215
397
  .starlight-dialog::-webkit-scrollbar-track {
216
- background: rgb(255 255 255 / 5%);
398
+ background: var(--q-color-border);
217
399
  border-radius: 4px;
218
400
  }
219
401
 
@@ -242,8 +424,8 @@ html[data-theme="light"] .starlight-dialog {
242
424
  width: 2rem;
243
425
  height: 2rem;
244
426
  border-radius: 50%;
245
- background: rgb(255 255 255 / 5%);
246
- border: 1px solid rgb(255 255 255 / 10%);
427
+ background: var(--q-color-border);
428
+ border: 1px solid var(--q-color-border-strong);
247
429
  color: white;
248
430
  display: flex;
249
431
  align-items: center;
@@ -291,7 +473,7 @@ html[data-theme="light"] .dialog-content {
291
473
  background-color: rgba(8, 8, 26, 0.8);
292
474
  backdrop-filter: blur(16px);
293
475
  -webkit-backdrop-filter: blur(16px);
294
- border: 1px solid rgba(255, 255, 255, 0.1);
476
+ border: 1px solid var(--q-color-border-strong);
295
477
  border-radius: 0.75rem;
296
478
  padding: 0.5rem;
297
479
  margin-top: 0.5rem;
@@ -352,12 +534,18 @@ html[data-theme="light"] .dropdown-item:hover {
352
534
  }
353
535
 
354
536
  /* 7. Input & Glass Fixes */
355
- .input-starlight, .textarea-starlight {
537
+ .input-starlight, .textarea-starlight, .select-starlight {
356
538
  background-color: rgb(255 255 255 / 4%);
357
539
  border: 1px solid rgb(255 255 255 / 15%);
358
540
  border-radius: 0.75rem;
359
541
  color: inherit;
360
542
  width: 100%;
543
+ padding: 0.75rem 1.25rem;
544
+ }
545
+
546
+ .select-starlight:hover {
547
+ background-color: rgb(255 255 255 / 8%);
548
+ border-color: var(--q-color-starlight-blue);
361
549
  }
362
550
 
363
551
  textarea.input-starlight, .textarea-starlight {
@@ -366,11 +554,25 @@ textarea.input-starlight, .textarea-starlight {
366
554
  }
367
555
 
368
556
  html[data-theme="light"] .input-starlight,
369
- html[data-theme="light"] .textarea-starlight {
557
+ html[data-theme="light"] .textarea-starlight,
558
+ html[data-theme="light"] .select-starlight {
370
559
  background-color: #fff;
371
560
  border-color: #cbd5e1;
372
561
  }
373
562
 
563
+ .input-starlight:focus, .textarea-starlight:focus, .select-starlight:focus {
564
+ outline: none;
565
+ box-shadow: 0 0 0 2px var(--q-color-starlight-deep), 0 0 0 4px var(--q-color-starlight-blue);
566
+ border-color: var(--q-color-starlight-blue);
567
+ }
568
+
569
+ html[data-theme="light"] .input-starlight:focus,
570
+ html[data-theme="light"] .textarea-starlight:focus,
571
+ html[data-theme="light"] .select-starlight:focus {
572
+ box-shadow: 0 0 0 2px var(--q-light-bg), 0 0 0 4px rgb(59 130 246 / 40%);
573
+ border-color: #3b82f6;
574
+ }
575
+
374
576
  html[data-theme="light"] .glass {
375
577
  background-color: rgba(255, 255, 255, 0.5);
376
578
  border-color: rgba(0, 0, 0, 0.1);
@@ -381,15 +583,15 @@ html[data-theme="light"] .glass {
381
583
  background: rgb(0 0 0 / 40%);
382
584
  backdrop-filter: blur(20px);
383
585
  -webkit-backdrop-filter: blur(20px);
384
- border: 1px solid rgb(255 255 255 / 10%);
586
+ border: 1px solid var(--q-color-border-strong);
385
587
  border-radius: var(--q-radius-xl);
386
588
  overflow: hidden;
387
589
  box-shadow: 0 25px 50px -12px rgb(0 0 0 / 50%);
388
590
  }
389
591
 
390
592
  .code-window-header {
391
- background: rgb(255 255 255 / 5%);
392
- border-bottom: 1px solid rgb(255 255 255 / 5%);
593
+ background: var(--q-color-border);
594
+ border-bottom: 1px solid var(--q-color-border);
393
595
  padding: 1rem 1.5rem;
394
596
  display: flex;
395
597
  align-items: center;
@@ -408,6 +610,10 @@ html[data-theme="light"] .glass {
408
610
  opacity: 0.6;
409
611
  }
410
612
 
613
+ .code-window-dot:nth-child(1) { background: #ff5f56; }
614
+ .code-window-dot:nth-child(2) { background: #ffbd2e; }
615
+ .code-window-dot:nth-child(3) { background: #27c93f; }
616
+
411
617
  .code-window-title {
412
618
  font-size: 0.65rem;
413
619
  font-weight: 800;
@@ -444,15 +650,15 @@ html[data-theme="light"] .code-window-title {
444
650
  }
445
651
 
446
652
  .accordion-starlight.accordion-item:hover {
447
- border-color: rgb(0 212 255 / 30%);
653
+ border-color: color-mix(in srgb, var(--q-color-starlight-blue), transparent 70%);
448
654
  background: rgb(255 255 255 / 4%);
449
- box-shadow: 0 0 20px rgb(0 212 255 / 5%);
655
+ box-shadow: 0 0 20px color-mix(in srgb, var(--q-color-starlight-blue), transparent 95%);
450
656
  }
451
657
 
452
658
  .accordion-starlight.accordion-item.active {
453
659
  border-color: var(--q-color-starlight-blue);
454
- background: rgb(0 212 255 / 3%);
455
- box-shadow: 0 0 30px rgb(0 212 255 / 10%), inset 0 0 20px rgb(0 212 255 / 5%);
660
+ background: color-mix(in srgb, var(--q-color-starlight-blue), transparent 97%);
661
+ box-shadow: 0 0 30px color-mix(in srgb, var(--q-color-starlight-blue), transparent 90%), inset 0 0 20px color-mix(in srgb, var(--q-color-starlight-blue), transparent 95%);
456
662
  }
457
663
 
458
664
  .accordion-starlight .accordion-header {
@@ -465,8 +671,8 @@ html[data-theme="light"] .code-window-title {
465
671
  }
466
672
 
467
673
  .accordion-starlight.active .accordion-header {
468
- background: linear-gradient(to right, rgb(255 179 138 / 15%), rgb(0 212 255 / 15%)) !important;
469
- border-bottom: 1px solid rgb(0 212 255 / 20%);
674
+ background: linear-gradient(to right, color-mix(in srgb, var(--q-color-starlight-peach), transparent 55%), color-mix(in srgb, var(--q-color-starlight-blue), transparent 55%)) !important;
675
+ border-bottom: 1px solid color-mix(in srgb, var(--q-color-starlight-blue), transparent 80%);
470
676
  }
471
677
 
472
678
  .accordion-starlight .accordion-content {
@@ -506,15 +712,49 @@ html[data-theme="light"] .accordion-starlight .accordion-content {
506
712
  }
507
713
 
508
714
  /* 11. Search Input with Icon */
509
- .search-container {
715
+ .search-container, .starlight-search {
510
716
  position: relative;
511
717
  display: block;
512
718
  width: 100%;
719
+ border-radius: var(--q-radius-xl);
720
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
721
+ overflow: visible !important;
722
+ }
723
+
724
+ .search-container:focus-within, .starlight-search:focus-within {
725
+ box-shadow: 0 0 0 2px var(--q-color-starlight-deep), 0 0 0 4px var(--q-color-starlight-blue);
726
+ border-color: var(--q-color-starlight-blue);
727
+ outline: none;
728
+ }
729
+
730
+ html[data-theme="light"] .search-container:focus-within,
731
+ html[data-theme="light"] .starlight-search:focus-within {
732
+ box-shadow: 0 0 0 2px var(--q-light-bg), 0 0 0 4px rgb(59 130 246 / 40%);
733
+ border-color: #3b82f6;
734
+ }
735
+
736
+ .search-container input:focus, .starlight-search input:focus {
737
+ box-shadow: none !important;
738
+ outline: none !important;
513
739
  }
514
740
 
515
741
  .search-input {
516
- padding-left: 3rem !important;
517
742
  width: 100%;
743
+ border-radius: inherit;
744
+ padding: 0.75rem 1.25rem;
745
+ background: transparent;
746
+ border: none;
747
+ }
748
+
749
+ html[data-theme="light"] .search-container,
750
+ html[data-theme="light"] .starlight-search {
751
+ background-color: #fff;
752
+ border: 1px solid #cbd5e1;
753
+ }
754
+
755
+ .search-container.has-icon .search-input,
756
+ .starlight-search.has-icon .search-input {
757
+ padding-left: 3rem !important;
518
758
  }
519
759
 
520
760
  .search-icon {
@@ -576,6 +816,7 @@ html[data-theme="light"] .search-icon {
576
816
  padding: 1rem;
577
817
  opacity: 0;
578
818
  transition: opacity 0.3s ease;
819
+ color: white !important;
579
820
  }
580
821
 
581
822
  .gallery-item:hover .gallery-overlay {
@@ -632,7 +873,7 @@ html[data-theme="light"] .stat-value {
632
873
  background: rgba(255, 255, 255, 0.15);
633
874
  backdrop-filter: blur(16px);
634
875
  -webkit-backdrop-filter: blur(16px);
635
- border-bottom: 1px solid rgba(255, 255, 255, 0.1);
876
+ border-bottom: 1px solid var(--q-color-border-strong);
636
877
  background-clip: border-box;
637
878
  display: flex;
638
879
  flex-direction: column;
@@ -699,7 +940,7 @@ html[data-theme="light"] .nav-glass {
699
940
  }
700
941
 
701
942
  .nav-list.vertical .nav-link:hover {
702
- background: rgb(255 255 255 / 5%);
943
+ background: var(--q-color-border);
703
944
  color: var(--q-color-starlight-blue);
704
945
  }
705
946
 
@@ -738,8 +979,8 @@ html[data-theme="light"] .nav-link:hover {
738
979
  align-items: center;
739
980
  gap: 0.4rem;
740
981
  cursor: pointer;
741
- background: rgba(255, 255, 255, 0.05);
742
- border: 1px solid rgba(255, 255, 255, 0.1);
982
+ background: var(--q-color-border);
983
+ border: 1px solid var(--q-color-border-strong);
743
984
  border-radius: 0.5rem;
744
985
  padding: 0.5rem;
745
986
  transition: all 0.3s;
@@ -751,7 +992,7 @@ html[data-theme="light"] .hamburger {
751
992
  }
752
993
 
753
994
  .hamburger:hover {
754
- background: rgb(255 255 255 / 10%);
995
+ background: var(--q-color-border-strong);
755
996
  border-color: var(--q-color-starlight-blue);
756
997
  }
757
998
 
@@ -786,13 +1027,14 @@ html[data-theme="light"] .hamburger span {
786
1027
  background: rgba(8, 8, 26, 0.95);
787
1028
  backdrop-filter: blur(20px);
788
1029
  -webkit-backdrop-filter: blur(20px);
789
- border-top: 1px solid rgba(255, 255, 255, 0.05);
1030
+ border-top: 1px solid var(--q-color-border);
790
1031
  padding: 0 2rem;
791
1032
  max-height: 0;
792
1033
  overflow: hidden;
793
1034
  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
794
1035
  opacity: 0;
795
1036
  pointer-events: none;
1037
+ display: none;
796
1038
  }
797
1039
 
798
1040
  .nav-menu-mobile.active {
@@ -837,7 +1079,7 @@ html[data-theme="light"] .nav-menu-mobile {
837
1079
  .nav-list.vertical .dropdown-item {
838
1080
  padding: 0.5rem 1rem;
839
1081
  font-size: 0.825rem;
840
- border-left: 1px solid rgb(255 255 255 / 10%);
1082
+ border-left: 1px solid var(--q-color-border-strong);
841
1083
  border-radius: 0;
842
1084
  }
843
1085
 
@@ -866,7 +1108,7 @@ html[data-theme="light"] .nav-menu-mobile {
866
1108
  width: 280px !important;
867
1109
  min-width: 280px !important;
868
1110
  border-bottom: none;
869
- border-right: 1px solid rgb(255 255 255 / 10%);
1111
+ border-right: 1px solid var(--q-color-border-strong);
870
1112
  padding: 2.5rem 1.5rem;
871
1113
  align-items: flex-start;
872
1114
  justify-content: flex-start;
@@ -900,6 +1142,7 @@ html[data-theme="light"] .starlight-nav.vertical {
900
1142
  line-height: normal;
901
1143
  padding-top: 0.5rem !important;
902
1144
  padding-bottom: 0.5rem !important;
1145
+ padding-left: 1.25rem !important;
903
1146
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='white'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E");
904
1147
  background-repeat: no-repeat;
905
1148
  background-position: right 1rem center;
@@ -915,7 +1158,7 @@ html[data-theme="light"] .select-starlight {
915
1158
  appearance: none;
916
1159
  width: 100%;
917
1160
  height: 6px;
918
- background: rgb(255 255 255 / 10%);
1161
+ background: var(--q-color-border-strong);
919
1162
  border-radius: 3px;
920
1163
  outline: none;
921
1164
  }
@@ -957,8 +1200,8 @@ html[data-theme="light"] .range-starlight {
957
1200
  }
958
1201
 
959
1202
  .toggle-starlight .toggle-slider {
960
- background: rgb(255 255 255 / 10%);
961
- border: 1px solid rgb(255 255 255 / 10%);
1203
+ background: var(--q-color-border-strong);
1204
+ border: 1px solid var(--q-color-border-strong);
962
1205
  }
963
1206
 
964
1207
  html[data-theme="light"] .toggle-starlight .toggle-slider {
@@ -974,11 +1217,11 @@ html[data-theme="light"] .btn-starlight:hover,
974
1217
  html[data-theme="light"] .hover\:btn-starlight:hover,
975
1218
  html[data-theme="light"] .btn-primary,
976
1219
  html[data-theme="light"] .btn-primary:hover {
977
- background: linear-gradient(135deg, #ffb38a 40%, #00d4ff 100%) !important;
1220
+ background: linear-gradient(135deg, var(--q-color-starlight-peach) 40%, var(--q-color-starlight-blue) 100%) !important;
978
1221
  }
979
1222
 
980
1223
  html[data-theme="light"] .text-gradient-starlight {
981
- background: linear-gradient(135deg, #ffb38a 40%, #00d4ff 100%) !important;
1224
+ background: linear-gradient(135deg, var(--q-color-starlight-peach) 40%, var(--q-color-starlight-blue) 100%) !important;
982
1225
  -webkit-background-clip: text !important;
983
1226
  -webkit-text-fill-color: transparent !important;
984
1227
  }
@@ -993,7 +1236,7 @@ html[data-theme="light"] .dialog-content .bg-black_40 {
993
1236
 
994
1237
  /* 18. Semantic Typography Utilities */
995
1238
  .text-glow {
996
- text-shadow: 0 0 10px rgb(0 212 255 / 50%), 0 0 20px rgb(0 212 255 / 20%);
1239
+ text-shadow: 0 0 10px rgb(0 212 255 / 50%), 0 0 20px rgb(0 212 255 / 60%);
997
1240
  }
998
1241
 
999
1242
  .text-glass {
@@ -1051,15 +1294,15 @@ html[data-theme="light"] .starlight-loading {
1051
1294
  }
1052
1295
 
1053
1296
  ::-webkit-scrollbar-thumb {
1054
- background: rgb(255 255 255 / 10%);
1055
- border: 1px solid rgb(255 255 255 / 5%);
1297
+ background: var(--q-color-border-strong);
1298
+ border: 1px solid var(--q-color-border);
1056
1299
  border-radius: 10px;
1057
1300
  transition: all 0.3s;
1058
1301
  }
1059
1302
 
1060
1303
  ::-webkit-scrollbar-thumb:hover {
1061
1304
  background: rgb(0 212 255 / 30%);
1062
- box-shadow: 0 0 10px rgb(0 212 255 / 20%);
1305
+ box-shadow: 0 0 10px rgb(0 212 255 / 60%);
1063
1306
  }
1064
1307
 
1065
1308
  html[data-theme="light"] ::-webkit-scrollbar-track {
@@ -1078,7 +1321,7 @@ html[data-theme="light"] ::-webkit-scrollbar-thumb:hover {
1078
1321
  /* Firefox Support */
1079
1322
  * {
1080
1323
  scrollbar-width: thin;
1081
- scrollbar-color: rgb(255 255 255 / 10%) transparent;
1324
+ scrollbar-color: var(--q-color-border-strong) transparent;
1082
1325
  }
1083
1326
 
1084
1327
  html[data-theme="light"] * {
@@ -1136,3 +1379,623 @@ html[data-theme="light"] * {
1136
1379
  html[data-theme="light"] .btn-starlight:focus-visible {
1137
1380
  outline-color: var(--q-color-starlight-blue);
1138
1381
  }}
1382
+
1383
+ /* ============================================
1384
+ LAYOUT PRESETS - Composable, Flexible
1385
+ ============================================ */
1386
+
1387
+ /* Email 3-column layout */
1388
+ .email-nav {
1389
+ display: flex;
1390
+ flex-direction: column;
1391
+ height: 100%;
1392
+ background: rgb(0 0 0 / 40%);
1393
+ backdrop-filter: blur(24px);
1394
+ -webkit-backdrop-filter: blur(24px);
1395
+ border-right: 1px solid var(--q-color-border-strong);
1396
+ padding: 1rem;
1397
+ overflow-y: auto;
1398
+ }
1399
+
1400
+ .email-feed {
1401
+ display: flex;
1402
+ flex-direction: column;
1403
+ height: 100%;
1404
+ background: var(--q-color-border);
1405
+ backdrop-filter: blur(16px);
1406
+ -webkit-backdrop-filter: blur(16px);
1407
+ border-right: 1px solid var(--q-color-border-strong);
1408
+ overflow-y: auto;
1409
+ }
1410
+
1411
+ .email-content {
1412
+ display: flex;
1413
+ flex-direction: column;
1414
+ height: 100%;
1415
+ overflow-y: auto;
1416
+ }
1417
+
1418
+ /* Music 2-column + footer layout */
1419
+ .music-nav {
1420
+ display: flex;
1421
+ flex-direction: column;
1422
+ height: 100%;
1423
+ background: rgb(0 0 0 / 40%);
1424
+ backdrop-filter: blur(24px);
1425
+ -webkit-backdrop-filter: blur(24px);
1426
+ border-right: 1px solid var(--q-color-border-strong);
1427
+ padding: 1rem;
1428
+ overflow-y: auto;
1429
+ }
1430
+
1431
+ .music-content {
1432
+ display: flex;
1433
+ flex-direction: column;
1434
+ height: 100%;
1435
+ overflow-y: auto;
1436
+ }
1437
+
1438
+ .music-footer {
1439
+ display: flex;
1440
+ align-items: center;
1441
+ justify-content: space-between;
1442
+ padding: 1rem 1.5rem;
1443
+ background: rgb(0 0 0 / 40%);
1444
+ backdrop-filter: blur(24px);
1445
+ -webkit-backdrop-filter: blur(24px);
1446
+ border-top: 1px solid var(--q-color-border-strong);
1447
+ }
1448
+
1449
+ /* Chat 2-column layout */
1450
+ .chat-sidebar {
1451
+ display: flex;
1452
+ flex-direction: column;
1453
+ height: 100%;
1454
+ background: rgb(0 0 0 / 40%);
1455
+ backdrop-filter: blur(24px);
1456
+ -webkit-backdrop-filter: blur(24px);
1457
+ border-right: 1px solid var(--q-color-border-strong);
1458
+ overflow: hidden;
1459
+ }
1460
+
1461
+ .chat-content {
1462
+ display: flex;
1463
+ flex-direction: column;
1464
+ height: 100%;
1465
+ overflow: hidden;
1466
+ }
1467
+
1468
+ /* Admin 2-column layout */
1469
+ .admin-sidebar {
1470
+ display: flex;
1471
+ flex-direction: column;
1472
+ height: 100%;
1473
+ background: rgb(0 0 0 / 40%);
1474
+ backdrop-filter: blur(24px);
1475
+ -webkit-backdrop-filter: blur(24px);
1476
+ border-right: 1px solid var(--q-color-border-strong);
1477
+ padding: 1rem;
1478
+ overflow-y: auto;
1479
+ }
1480
+
1481
+ .admin-content {
1482
+ display: flex;
1483
+ flex-direction: column;
1484
+ height: 100%;
1485
+ overflow-y: auto;
1486
+ }
1487
+
1488
+ /* Analytics 2-column layout */
1489
+ .analytics-sidebar {
1490
+ display: flex;
1491
+ flex-direction: column;
1492
+ height: 100%;
1493
+ background: rgb(0 0 0 / 40%);
1494
+ backdrop-filter: blur(24px);
1495
+ -webkit-backdrop-filter: blur(24px);
1496
+ border-right: 1px solid var(--q-color-border-strong);
1497
+ padding: 1rem;
1498
+ overflow-y: auto;
1499
+ }
1500
+
1501
+ .analytics-content {
1502
+ display: flex;
1503
+ flex-direction: column;
1504
+ height: 100%;
1505
+ overflow-y: auto;
1506
+ }
1507
+
1508
+ /* Layout container classes (use in parent grid) */
1509
+ .layout-email-3col {
1510
+ display: grid;
1511
+ height: 100vh;
1512
+ grid-template-columns: 280px 320px 1fr;
1513
+ overflow: hidden;
1514
+ }
1515
+
1516
+ .layout-music-2col {
1517
+ display: grid;
1518
+ height: 100vh;
1519
+ grid-template-rows: 1fr auto;
1520
+ overflow: hidden;
1521
+ }
1522
+
1523
+ .layout-music-row {
1524
+ display: grid;
1525
+ grid-template-columns: 280px 1fr;
1526
+ overflow: hidden;
1527
+ }
1528
+
1529
+ .layout-chat-2col {
1530
+ display: grid;
1531
+ height: 100vh;
1532
+ grid-template-columns: 320px 1fr;
1533
+ overflow: hidden;
1534
+ }
1535
+
1536
+ .layout-admin-2col {
1537
+ display: grid;
1538
+ height: 100vh;
1539
+ grid-template-columns: 260px 1fr;
1540
+ overflow: hidden;
1541
+ }
1542
+
1543
+ .layout-analytics-2col {
1544
+ display: grid;
1545
+ height: 100vh;
1546
+ grid-template-columns: 240px 1fr;
1547
+ overflow: hidden;
1548
+ }
1549
+
1550
+ /* ============================================
1551
+ UI COMPONENT PRESETS - Reusable Elements
1552
+ ============================================ */
1553
+
1554
+ /* Stat Card - for dashboard metrics */
1555
+ .starlight-stat {
1556
+ display: flex;
1557
+ flex-direction: column;
1558
+ gap: 0.5rem;
1559
+ padding: 1.25rem;
1560
+ background: rgb(255 255 255 / 3%);
1561
+ border: 1px solid rgb(255 255 255 / 8%);
1562
+ border-radius: var(--q-radius-xl);
1563
+ transition: all 0.3s ease;
1564
+ }
1565
+
1566
+ .starlight-stat:hover {
1567
+ background: var(--q-color-border);
1568
+ border-color: rgb(255 255 255 / 12%);
1569
+ }
1570
+
1571
+ .starlight-stat-header {
1572
+ display: flex;
1573
+ align-items: center;
1574
+ justify-content: space-between;
1575
+ }
1576
+
1577
+ .starlight-stat-icon {
1578
+ display: flex;
1579
+ align-items: center;
1580
+ justify-content: center;
1581
+ width: 2.5rem;
1582
+ height: 2.5rem;
1583
+ border-radius: var(--q-radius-lg);
1584
+ background: rgb(0 212 255 / 15%);
1585
+ color: var(--q-color-starlight-blue);
1586
+ }
1587
+
1588
+ .starlight-stat-icon-green { background: rgb(16 185 129 / 15%); color: #10b981; }
1589
+ .starlight-stat-icon-orange { background: rgb(245 158 11 / 15%); color: #f59e0b; }
1590
+ .starlight-stat-icon-purple { background: rgb(139 92 246 / 15%); color: #8b5cf6; }
1591
+ .starlight-stat-icon-pink { background: rgb(236 72 153 / 15%); color: #ec4899; }
1592
+
1593
+ .starlight-stat-trend {
1594
+ display: flex;
1595
+ align-items: center;
1596
+ gap: 0.25rem;
1597
+ font-size: 0.75rem;
1598
+ font-weight: 600;
1599
+ }
1600
+
1601
+ .starlight-stat-trend-up { color: #10b981; }
1602
+ .starlight-stat-trend-down { color: #ef4444; }
1603
+
1604
+ .starlight-stat-value {
1605
+ font-size: 1.75rem;
1606
+ font-weight: 700;
1607
+ color: var(--q-color-starlight-blue);
1608
+ }
1609
+
1610
+ .starlight-stat-label {
1611
+ font-size: 0.875rem;
1612
+ color: rgb(255 255 255 / 60%);
1613
+ text-transform: uppercase;
1614
+ letter-spacing: 0.05em;
1615
+ }
1616
+
1617
+ /* Avatar - user/channel images */
1618
+ .starlight-avatar {
1619
+ display: flex;
1620
+ align-items: center;
1621
+ justify-content: center;
1622
+ border-radius: 50%;
1623
+ font-weight: 600;
1624
+ color: white;
1625
+ background: linear-gradient(135deg, var(--q-color-starlight-blue), #3b82f6);
1626
+ flex-shrink: 0;
1627
+ }
1628
+
1629
+ .starlight-avatar-sm {
1630
+ width: 2rem;
1631
+ height: 2rem;
1632
+ font-size: 0.625rem;
1633
+ }
1634
+
1635
+ .starlight-avatar-md {
1636
+ width: 2.5rem;
1637
+ height: 2.5rem;
1638
+ font-size: 0.75rem;
1639
+ }
1640
+
1641
+ .starlight-avatar-lg {
1642
+ width: 3rem;
1643
+ height: 3rem;
1644
+ font-size: 0.875rem;
1645
+ }
1646
+
1647
+ .starlight-avatar-xl {
1648
+ width: 4rem;
1649
+ height: 4rem;
1650
+ font-size: 1.125rem;
1651
+ }
1652
+
1653
+ .starlight-avatar img {
1654
+ width: 100%;
1655
+ height: 100%;
1656
+ object-fit: cover;
1657
+ border-radius: 50%;
1658
+ }
1659
+
1660
+ .starlight-avatar-online::after {
1661
+ content: '';
1662
+ position: absolute;
1663
+ bottom: 0;
1664
+ right: 0;
1665
+ width: 0.75rem;
1666
+ height: 0.75rem;
1667
+ background: #10b981;
1668
+ border: 2px solid var(--q-color-starlight-deep);
1669
+ border-radius: 50%;
1670
+ }
1671
+
1672
+ /* Theme Toggle */
1673
+ .starlight-theme-toggle {
1674
+ display: flex;
1675
+ align-items: center;
1676
+ justify-content: center;
1677
+ width: 2.5rem;
1678
+ height: 2.5rem;
1679
+ border-radius: 50%;
1680
+ background: var(--q-color-border);
1681
+ border: 1px solid var(--q-color-border-strong);
1682
+ color: inherit;
1683
+ cursor: pointer;
1684
+ transition: all 0.3s ease;
1685
+ flex-shrink: 0;
1686
+ }
1687
+
1688
+ .starlight-theme-toggle:hover {
1689
+ background: var(--q-color-border-strong);
1690
+ transform: scale(1.05);
1691
+ }
1692
+
1693
+ .starlight-theme-toggle svg {
1694
+ width: 1.25rem;
1695
+ height: 1.25rem;
1696
+ }
1697
+
1698
+ /* Notification Bell */
1699
+ .starlight-notification {
1700
+ position: relative;
1701
+ display: flex;
1702
+ align-items: center;
1703
+ justify-content: center;
1704
+ width: 2.5rem;
1705
+ height: 2.5rem;
1706
+ background: transparent;
1707
+ border: none;
1708
+ color: inherit;
1709
+ cursor: pointer;
1710
+ transition: all 0.2s ease;
1711
+ }
1712
+
1713
+ .starlight-notification:hover {
1714
+ color: var(--q-color-starlight-blue);
1715
+ }
1716
+
1717
+ .starlight-notification-dot {
1718
+ position: absolute;
1719
+ top: 0.5rem;
1720
+ right: 0.5rem;
1721
+ width: 0.5rem;
1722
+ height: 0.5rem;
1723
+ background: #ef4444;
1724
+ border-radius: 50%;
1725
+ animation: starlight-pulse 2s infinite;
1726
+ }
1727
+
1728
+ @keyframes starlight-pulse {
1729
+ 0%, 100% { opacity: 1; }
1730
+ 50% { opacity: 0.5; }
1731
+ }
1732
+
1733
+ /* Data Table */
1734
+ .starlight-table-container {
1735
+ background: rgb(255 255 255 / 3%);
1736
+ border: 1px solid rgb(255 255 255 / 8%);
1737
+ border-radius: var(--q-radius-xl);
1738
+ overflow: hidden;
1739
+ }
1740
+
1741
+ .starlight-table-header {
1742
+ display: flex;
1743
+ align-items: center;
1744
+ justify-content: space-between;
1745
+ padding: 1rem 1.25rem;
1746
+ border-bottom: 1px solid rgb(255 255 255 / 8%);
1747
+ }
1748
+
1749
+ .starlight-table-title {
1750
+ font-size: 1.125rem;
1751
+ font-weight: 600;
1752
+ }
1753
+
1754
+ .starlight-table-filters {
1755
+ display: flex;
1756
+ gap: 0.5rem;
1757
+ }
1758
+
1759
+ .starlight-table {
1760
+ width: 100%;
1761
+ border-collapse: collapse;
1762
+ }
1763
+
1764
+ .starlight-table th,
1765
+ .starlight-table td {
1766
+ padding: 0.875rem 1.25rem;
1767
+ text-align: left;
1768
+ border-bottom: 1px solid var(--q-color-border);
1769
+ }
1770
+
1771
+ .starlight-table th {
1772
+ font-size: 0.75rem;
1773
+ font-weight: 600;
1774
+ text-transform: uppercase;
1775
+ letter-spacing: 0.05em;
1776
+ color: rgb(255 255 255 / 60%);
1777
+ background: rgb(255 255 255 / 2%);
1778
+ }
1779
+
1780
+ .starlight-table tr:hover td {
1781
+ background: rgb(255 255 255 / 3%);
1782
+ }
1783
+
1784
+ .starlight-table-footer {
1785
+ display: flex;
1786
+ align-items: center;
1787
+ justify-content: space-between;
1788
+ padding: 0.875rem 1.25rem;
1789
+ border-top: 1px solid rgb(255 255 255 / 8%);
1790
+ font-size: 0.875rem;
1791
+ color: rgb(255 255 255 / 60%);
1792
+ }
1793
+
1794
+ /* Chart Card */
1795
+ .starlight-chart {
1796
+ background: rgb(255 255 255 / 3%);
1797
+ border: 1px solid rgb(255 255 255 / 8%);
1798
+ border-radius: var(--q-radius-xl);
1799
+ overflow: hidden;
1800
+ }
1801
+
1802
+ .starlight-chart-header {
1803
+ display: flex;
1804
+ align-items: center;
1805
+ justify-content: space-between;
1806
+ padding: 1rem 1.25rem;
1807
+ border-bottom: 1px solid var(--q-color-border);
1808
+ }
1809
+
1810
+ .starlight-chart-title {
1811
+ font-size: 1rem;
1812
+ font-weight: 600;
1813
+ }
1814
+
1815
+ .starlight-chart-tabs {
1816
+ display: flex;
1817
+ gap: 0.25rem;
1818
+ }
1819
+
1820
+ .starlight-chart-tab {
1821
+ padding: 0.375rem 0.75rem;
1822
+ font-size: 0.75rem;
1823
+ font-weight: 500;
1824
+ background: transparent;
1825
+ border: none;
1826
+ border-radius: var(--q-radius-md);
1827
+ color: rgb(255 255 255 / 60%);
1828
+ cursor: pointer;
1829
+ transition: all 0.2s ease;
1830
+ }
1831
+
1832
+ .starlight-chart-tab:hover {
1833
+ color: inherit;
1834
+ }
1835
+
1836
+ .starlight-chart-tab.active {
1837
+ background: rgb(0 212 255 / 15%);
1838
+ color: var(--q-color-starlight-blue);
1839
+ }
1840
+
1841
+ .starlight-chart-container {
1842
+ padding: 1.25rem;
1843
+ }
1844
+
1845
+ /* Breadcrumb */
1846
+ .starlight-breadcrumb {
1847
+ display: flex;
1848
+ align-items: center;
1849
+ gap: 0.5rem;
1850
+ font-size: 0.875rem;
1851
+ }
1852
+
1853
+ .starlight-breadcrumb-item {
1854
+ color: rgb(255 255 255 / 60%);
1855
+ text-decoration: none;
1856
+ transition: color 0.2s ease;
1857
+ }
1858
+
1859
+ .starlight-breadcrumb-item:hover {
1860
+ color: var(--q-color-starlight-blue);
1861
+ }
1862
+
1863
+ .starlight-breadcrumb-separator {
1864
+ color: rgb(255 255 255 / 40%);
1865
+ }
1866
+
1867
+ .starlight-breadcrumb-current {
1868
+ color: inherit;
1869
+ font-weight: 500;
1870
+ }
1871
+
1872
+ /* Gallery (enhanced) */
1873
+ .starlight-gallery-grid {
1874
+ display: grid;
1875
+ gap: 1rem;
1876
+ }
1877
+
1878
+ .starlight-gallery-item {
1879
+ position: relative;
1880
+ aspect-ratio: 16 / 9;
1881
+ border-radius: var(--q-radius-lg);
1882
+ overflow: hidden;
1883
+ }
1884
+
1885
+ .starlight-gallery-item img {
1886
+ width: 100%;
1887
+ height: 100%;
1888
+ object-fit: cover;
1889
+ transition: transform 0.5s ease;
1890
+ }
1891
+
1892
+ .starlight-gallery-item:hover img {
1893
+ transform: scale(1.05);
1894
+ }
1895
+
1896
+ .starlight-gallery-overlay {
1897
+ position: absolute;
1898
+ inset: 0;
1899
+ display: flex;
1900
+ align-items: flex-end;
1901
+ padding: 1rem;
1902
+ background: linear-gradient(to top, rgb(0 0 0 / 80%), transparent);
1903
+ opacity: 0;
1904
+ transition: opacity 0.3s ease;
1905
+ color: white !important;
1906
+ }
1907
+
1908
+ .starlight-gallery-item:hover .starlight-gallery-overlay {
1909
+ opacity: 1;
1910
+ }
1911
+
1912
+ /* Progress Bar */
1913
+ .starlight-progress {
1914
+ display: flex;
1915
+ align-items: center;
1916
+ gap: 0.75rem;
1917
+ }
1918
+
1919
+ .starlight-progress-bar {
1920
+ flex: 1;
1921
+ height: 0.5rem;
1922
+ background: var(--q-color-border-strong);
1923
+ border-radius: 9999px;
1924
+ overflow: hidden;
1925
+ }
1926
+
1927
+ .starlight-progress-fill {
1928
+ height: 100%;
1929
+ background: linear-gradient(90deg, var(--q-color-starlight-blue), var(--q-color-starlight-peach));
1930
+ border-radius: 9999px;
1931
+ transition: width 0.5s ease;
1932
+ }
1933
+
1934
+ .starlight-progress-value {
1935
+ font-size: 0.875rem;
1936
+ font-weight: 600;
1937
+ min-width: 3rem;
1938
+ text-align: right;
1939
+ }
1940
+
1941
+ /* Player Controls */
1942
+ .starlight-player-controls {
1943
+ display: flex;
1944
+ align-items: center;
1945
+ gap: 1rem;
1946
+ }
1947
+
1948
+ .starlight-player-btn {
1949
+ display: flex;
1950
+ align-items: center;
1951
+ justify-content: center;
1952
+ width: 2.5rem;
1953
+ height: 2.5rem;
1954
+ background: transparent;
1955
+ border: none;
1956
+ color: inherit;
1957
+ cursor: pointer;
1958
+ transition: all 0.2s ease;
1959
+ }
1960
+
1961
+ .starlight-player-btn:hover {
1962
+ color: var(--q-color-starlight-blue);
1963
+ transform: scale(1.1);
1964
+ }
1965
+
1966
+ .starlight-player-btn-primary {
1967
+ width: 3rem;
1968
+ height: 3rem;
1969
+ background: var(--q-color-starlight-blue);
1970
+ border-radius: 50%;
1971
+ color: #000;
1972
+ }
1973
+
1974
+ .starlight-player-btn-primary:hover {
1975
+ background: var(--q-color-starlight-peach);
1976
+ }
1977
+
1978
+ /* Page Header */
1979
+ .starlight-page-header {
1980
+ display: flex;
1981
+ align-items: center;
1982
+ justify-content: space-between;
1983
+ padding: 1.5rem;
1984
+ }
1985
+
1986
+ .starlight-page-title {
1987
+ font-size: 1.875rem;
1988
+ font-weight: 700;
1989
+ }
1990
+
1991
+ .starlight-page-subtitle {
1992
+ font-size: 0.875rem;
1993
+ color: rgb(255 255 255 / 60%);
1994
+ margin-top: 0.25rem;
1995
+ }
1996
+
1997
+ .starlight-page-actions {
1998
+ display: flex;
1999
+ align-items: center;
2000
+ gap: 0.75rem;
2001
+ }