@howssatoshi/quantumcss 1.7.5 → 1.8.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.
@@ -1,44 +1,60 @@
1
- /* Starlight UI - Premium Components */
1
+ /*!
2
+ * QuantumCSS Theme Layer
3
+ * Theme: Starlight UI (Premium)
4
+ *
5
+ * ROLE:
6
+ * 1. Injects brand-specific aesthetics.
7
+ * 2. Maps brand tokens to semantic core layer.
8
+ * 3. Defines theme-specific layout extensions.
9
+ */
10
+
11
+ /* 1. Starlight Theme Layer (Brand Mapping) */
12
+ :root {
13
+ --q-color-primary: var(--q-color-starlight-blue);
14
+ --q-color-primary-hover: var(--q-color-starlight-peach);
15
+ --q-color-link: var(--q-color-starlight-blue);
16
+ --q-color-link-hover: var(--q-color-starlight-peach);
17
+ --q-gradient-primary: linear-gradient(135deg, var(--q-color-starlight-peach) 0%, var(--q-color-starlight-blue) 100%);
18
+ --q-color-text-inverse: #000;
19
+ }
20
+
21
+ html[data-theme="light"] {
22
+ --q-color-text-inverse: #fff;
23
+ }
2
24
 
3
25
  /* Links */
4
26
  a {
5
- color: var(--q-color-starlight-blue);
27
+ color: var(--q-color-link);
6
28
  text-decoration: none;
7
- transition: all var(--q-transition-base);
29
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
8
30
  position: relative;
9
31
  }
10
32
 
11
33
  a:hover {
12
- color: var(--q-color-starlight-peach);
13
- text-shadow: 0 0 8px rgb(255 179 138 / 40%);
34
+ color: var(--q-color-link-hover);
35
+ text-shadow: 0 0 8px color-mix(in srgb, var(--q-color-link-hover), transparent 60%);
14
36
  }
15
37
 
16
38
  a:active {
17
39
  transform: scale(0.98);
18
40
  }
19
41
 
20
- html[data-theme="light"] a {
21
- color: var(--q-color-starlight-blue);
22
- }
23
-
24
- html[data-theme="light"] a:hover {
25
- color: var(--q-color-starlight-peach);
26
- }
27
-
28
- /* 1. Starlight Card */
42
+ /* 2. Starlight Components Refactored to Semantic Tokens */
29
43
  .starlight-card {
30
- background: var(--q-glass-bg);
31
- border: 1px solid var(--q-glass-border);
44
+ background: var(--q-color-surface);
45
+ border: 1px solid var(--q-color-border);
32
46
  border-radius: var(--q-radius-2xl);
33
47
  padding: var(--q-space-10);
34
48
  backdrop-filter: var(--q-glass-blur);
35
49
  -webkit-backdrop-filter: var(--q-glass-blur);
36
50
  position: relative;
37
- transition: border-color var(--q-transition-base), transform var(--q-transition-base), background-color var(--q-transition-base);
51
+ transition: border-color var(--q-duration-base) var(--q-ease-in-out),
52
+ transform var(--q-duration-base) var(--q-ease-in-out),
53
+ background-color var(--q-duration-base) var(--q-ease-in-out);
38
54
  }
39
55
 
40
56
  .starlight-card:hover {
41
- background-color: rgba(255, 255, 255, 0.04);
57
+ background-color: var(--q-color-surface-elevated);
42
58
  }
43
59
 
44
60
  /* ... existing code ... */
@@ -71,7 +87,7 @@ html[data-theme="light"] .starlight-card {
71
87
  border: 1px solid rgb(255 255 255 / 20%);
72
88
  border-radius: 0.375rem;
73
89
  cursor: pointer;
74
- transition: all 0.2s ease;
90
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
75
91
  display: inline-flex;
76
92
  align-items: center;
77
93
  justify-content: center;
@@ -126,7 +142,7 @@ html[data-theme="light"] .radio-starlight {
126
142
  white-space: nowrap;
127
143
  pointer-events: none;
128
144
  opacity: 0;
129
- transition: all 0.2s ease;
145
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
130
146
  z-index: 800;
131
147
  box-shadow: 0 4px 15px rgb(0 0 0 / 40%);
132
148
  }
@@ -249,7 +265,7 @@ html[data-theme="light"] .starlight-dialog {
249
265
  align-items: center;
250
266
  justify-content: center;
251
267
  cursor: pointer;
252
- transition: all 0.2s;
268
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
253
269
  padding: 0;
254
270
  }
255
271
 
@@ -301,7 +317,7 @@ html[data-theme="light"] .dialog-content {
301
317
  opacity: 0;
302
318
  visibility: hidden;
303
319
  transform: translateY(10px);
304
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
320
+ transition: all var(--q-duration-slow) var(--q-ease-in-out);
305
321
  pointer-events: none;
306
322
  will-change: backdrop-filter, transform, opacity;
307
323
  }
@@ -322,7 +338,7 @@ html[data-theme="light"] .dialog-content {
322
338
  padding: 0.625rem 1rem;
323
339
  border-radius: 0.5rem;
324
340
  color: var(--q-text-primary, rgba(255, 255, 255, 0.7));
325
- transition: all 0.2s ease;
341
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
326
342
  text-align: left;
327
343
  background: transparent;
328
344
  border: none;
@@ -444,15 +460,15 @@ html[data-theme="light"] .code-window-title {
444
460
  }
445
461
 
446
462
  .accordion-starlight.accordion-item:hover {
447
- border-color: rgb(0 212 255 / 30%);
463
+ border-color: color-mix(in srgb, var(--q-color-starlight-blue), transparent 70%);
448
464
  background: rgb(255 255 255 / 4%);
449
- box-shadow: 0 0 20px rgb(0 212 255 / 5%);
465
+ box-shadow: 0 0 20px color-mix(in srgb, var(--q-color-starlight-blue), transparent 95%);
450
466
  }
451
467
 
452
468
  .accordion-starlight.accordion-item.active {
453
469
  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%);
470
+ background: color-mix(in srgb, var(--q-color-starlight-blue), transparent 97%);
471
+ 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
472
  }
457
473
 
458
474
  .accordion-starlight .accordion-header {
@@ -465,8 +481,8 @@ html[data-theme="light"] .code-window-title {
465
481
  }
466
482
 
467
483
  .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%);
484
+ 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;
485
+ border-bottom: 1px solid color-mix(in srgb, var(--q-color-starlight-blue), transparent 80%);
470
486
  }
471
487
 
472
488
  .accordion-starlight .accordion-content {
@@ -575,7 +591,7 @@ html[data-theme="light"] .search-icon {
575
591
  align-items: flex-end;
576
592
  padding: 1rem;
577
593
  opacity: 0;
578
- transition: opacity 0.3s ease;
594
+ transition: opacity var(--q-duration-slow) var(--q-ease-in-out);
579
595
  }
580
596
 
581
597
  .gallery-item:hover .gallery-overlay {
@@ -680,7 +696,7 @@ html[data-theme="light"] .nav-glass {
680
696
  font-size: 0.875rem;
681
697
  font-weight: 500;
682
698
  color: rgb(255 255 255 / 70%);
683
- transition: all 0.3s;
699
+ transition: all var(--q-duration-slow) var(--q-ease-in-out);
684
700
  position: relative;
685
701
  padding: 0.5rem 0;
686
702
  display: inline-flex;
@@ -711,7 +727,7 @@ html[data-theme="light"] .nav-glass {
711
727
  width: 0;
712
728
  height: 2px;
713
729
  background: var(--q-color-starlight-blue);
714
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
730
+ transition: all var(--q-duration-slow) var(--q-ease-in-out);
715
731
  box-shadow: 0 0 10px var(--q-color-starlight-glow);
716
732
  transform: translateX(-50%);
717
733
  }
@@ -742,7 +758,7 @@ html[data-theme="light"] .nav-link:hover {
742
758
  border: 1px solid rgba(255, 255, 255, 0.1);
743
759
  border-radius: 0.5rem;
744
760
  padding: 0.5rem;
745
- transition: all 0.3s;
761
+ transition: all var(--q-duration-slow) var(--q-ease-in-out);
746
762
  }
747
763
 
748
764
  html[data-theme="light"] .hamburger {
@@ -764,7 +780,7 @@ html[data-theme="light"] .hamburger:hover {
764
780
  height: 2px;
765
781
  background: white;
766
782
  border-radius: 2px;
767
- transition: all 0.3s;
783
+ transition: all var(--q-duration-slow) var(--q-ease-in-out);
768
784
  transform-origin: center;
769
785
  }
770
786
 
@@ -790,7 +806,7 @@ html[data-theme="light"] .hamburger span {
790
806
  padding: 0 2rem;
791
807
  max-height: 0;
792
808
  overflow: hidden;
793
- transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
809
+ transition: all var(--q-duration-slow) var(--q-ease-in-out);
794
810
  opacity: 0;
795
811
  pointer-events: none;
796
812
  }
@@ -932,7 +948,7 @@ html[data-theme="light"] .range-starlight {
932
948
  border-radius: 50%;
933
949
  cursor: pointer;
934
950
  box-shadow: 0 0 10px var(--q-color-starlight-glow);
935
- transition: all 0.2s;
951
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
936
952
  }
937
953
 
938
954
  .range-starlight:-webkit-slider-thumb:hover {
@@ -974,11 +990,11 @@ html[data-theme="light"] .btn-starlight:hover,
974
990
  html[data-theme="light"] .hover\:btn-starlight:hover,
975
991
  html[data-theme="light"] .btn-primary,
976
992
  html[data-theme="light"] .btn-primary:hover {
977
- background: linear-gradient(135deg, #ffb38a 40%, #00d4ff 100%) !important;
993
+ background: linear-gradient(135deg, var(--q-color-starlight-peach) 40%, var(--q-color-starlight-blue) 100%) !important;
978
994
  }
979
995
 
980
996
  html[data-theme="light"] .text-gradient-starlight {
981
- background: linear-gradient(135deg, #ffb38a 40%, #00d4ff 100%) !important;
997
+ background: linear-gradient(135deg, var(--q-color-starlight-peach) 40%, var(--q-color-starlight-blue) 100%) !important;
982
998
  -webkit-background-clip: text !important;
983
999
  -webkit-text-fill-color: transparent !important;
984
1000
  }
@@ -993,7 +1009,7 @@ html[data-theme="light"] .dialog-content .bg-black_40 {
993
1009
 
994
1010
  /* 18. Semantic Typography Utilities */
995
1011
  .text-glow {
996
- text-shadow: 0 0 10px rgb(0 212 255 / 50%), 0 0 20px rgb(0 212 255 / 20%);
1012
+ text-shadow: 0 0 10px rgb(0 212 255 / 50%), 0 0 20px rgb(0 212 255 / 60%);
997
1013
  }
998
1014
 
999
1015
  .text-glass {
@@ -1054,12 +1070,12 @@ html[data-theme="light"] .starlight-loading {
1054
1070
  background: rgb(255 255 255 / 10%);
1055
1071
  border: 1px solid rgb(255 255 255 / 5%);
1056
1072
  border-radius: 10px;
1057
- transition: all 0.3s;
1073
+ transition: all var(--q-duration-slow) var(--q-ease-in-out);
1058
1074
  }
1059
1075
 
1060
1076
  ::-webkit-scrollbar-thumb:hover {
1061
1077
  background: rgb(0 212 255 / 30%);
1062
- box-shadow: 0 0 10px rgb(0 212 255 / 20%);
1078
+ box-shadow: 0 0 10px rgb(0 212 255 / 60%);
1063
1079
  }
1064
1080
 
1065
1081
  html[data-theme="light"] ::-webkit-scrollbar-track {
@@ -1103,8 +1119,8 @@ html[data-theme="light"] * {
1103
1119
  }
1104
1120
 
1105
1121
  .btn-starlight {
1106
- background: linear-gradient(135deg, var(--q-color-starlight-peach) 0%, var(--q-color-starlight-blue) 100%);
1107
- color: #000;
1122
+ background: var(--q-gradient-primary);
1123
+ color: var(--q-color-text-inverse);
1108
1124
  font-weight: 700;
1109
1125
  border: none;
1110
1126
  border-radius: 0.5rem;
@@ -1112,8 +1128,8 @@ html[data-theme="light"] * {
1112
1128
  align-items: center;
1113
1129
  justify-content: center;
1114
1130
  cursor: pointer;
1115
- transition: all 0.2s ease;
1116
- box-shadow: 0 0 20px rgb(0 212 255 / 30%);
1131
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
1132
+ box-shadow: 0 0 20px color-mix(in srgb, var(--q-color-primary), transparent 70%);
1117
1133
  text-decoration: none;
1118
1134
  }
1119
1135
 
@@ -1136,3 +1152,622 @@ html[data-theme="light"] * {
1136
1152
  html[data-theme="light"] .btn-starlight:focus-visible {
1137
1153
  outline-color: var(--q-color-starlight-blue);
1138
1154
  }}
1155
+
1156
+ /* ============================================
1157
+ LAYOUT PRESETS - Composable, Flexible
1158
+ ============================================ */
1159
+
1160
+ /* Email 3-column layout */
1161
+ .email-nav {
1162
+ display: flex;
1163
+ flex-direction: column;
1164
+ height: 100%;
1165
+ background: rgb(0 0 0 / 40%);
1166
+ backdrop-filter: blur(24px);
1167
+ -webkit-backdrop-filter: blur(24px);
1168
+ border-right: 1px solid rgb(255 255 255 / 10%);
1169
+ padding: 1rem;
1170
+ overflow-y: auto;
1171
+ }
1172
+
1173
+ .email-feed {
1174
+ display: flex;
1175
+ flex-direction: column;
1176
+ height: 100%;
1177
+ background: rgb(255 255 255 / 5%);
1178
+ backdrop-filter: blur(16px);
1179
+ -webkit-backdrop-filter: blur(16px);
1180
+ border-right: 1px solid rgb(255 255 255 / 10%);
1181
+ overflow-y: auto;
1182
+ }
1183
+
1184
+ .email-content {
1185
+ display: flex;
1186
+ flex-direction: column;
1187
+ height: 100%;
1188
+ overflow-y: auto;
1189
+ }
1190
+
1191
+ /* Music 2-column + footer layout */
1192
+ .music-nav {
1193
+ display: flex;
1194
+ flex-direction: column;
1195
+ height: 100%;
1196
+ background: rgb(0 0 0 / 40%);
1197
+ backdrop-filter: blur(24px);
1198
+ -webkit-backdrop-filter: blur(24px);
1199
+ border-right: 1px solid rgb(255 255 255 / 10%);
1200
+ padding: 1rem;
1201
+ overflow-y: auto;
1202
+ }
1203
+
1204
+ .music-content {
1205
+ display: flex;
1206
+ flex-direction: column;
1207
+ height: 100%;
1208
+ overflow-y: auto;
1209
+ }
1210
+
1211
+ .music-footer {
1212
+ display: flex;
1213
+ align-items: center;
1214
+ justify-content: space-between;
1215
+ padding: 1rem 1.5rem;
1216
+ background: rgb(0 0 0 / 40%);
1217
+ backdrop-filter: blur(24px);
1218
+ -webkit-backdrop-filter: blur(24px);
1219
+ border-top: 1px solid rgb(255 255 255 / 10%);
1220
+ }
1221
+
1222
+ /* Chat 2-column layout */
1223
+ .chat-sidebar {
1224
+ display: flex;
1225
+ flex-direction: column;
1226
+ height: 100%;
1227
+ background: rgb(0 0 0 / 40%);
1228
+ backdrop-filter: blur(24px);
1229
+ -webkit-backdrop-filter: blur(24px);
1230
+ border-right: 1px solid rgb(255 255 255 / 10%);
1231
+ overflow: hidden;
1232
+ }
1233
+
1234
+ .chat-content {
1235
+ display: flex;
1236
+ flex-direction: column;
1237
+ height: 100%;
1238
+ overflow: hidden;
1239
+ }
1240
+
1241
+ /* Admin 2-column layout */
1242
+ .admin-sidebar {
1243
+ display: flex;
1244
+ flex-direction: column;
1245
+ height: 100%;
1246
+ background: rgb(0 0 0 / 40%);
1247
+ backdrop-filter: blur(24px);
1248
+ -webkit-backdrop-filter: blur(24px);
1249
+ border-right: 1px solid rgb(255 255 255 / 10%);
1250
+ padding: 1rem;
1251
+ overflow-y: auto;
1252
+ }
1253
+
1254
+ .admin-content {
1255
+ display: flex;
1256
+ flex-direction: column;
1257
+ height: 100%;
1258
+ overflow-y: auto;
1259
+ }
1260
+
1261
+ /* Analytics 2-column layout */
1262
+ .analytics-sidebar {
1263
+ display: flex;
1264
+ flex-direction: column;
1265
+ height: 100%;
1266
+ background: rgb(0 0 0 / 40%);
1267
+ backdrop-filter: blur(24px);
1268
+ -webkit-backdrop-filter: blur(24px);
1269
+ border-right: 1px solid rgb(255 255 255 / 10%);
1270
+ padding: 1rem;
1271
+ overflow-y: auto;
1272
+ }
1273
+
1274
+ .analytics-content {
1275
+ display: flex;
1276
+ flex-direction: column;
1277
+ height: 100%;
1278
+ overflow-y: auto;
1279
+ }
1280
+
1281
+ /* Layout container classes (use in parent grid) */
1282
+ .layout-email-3col {
1283
+ display: grid;
1284
+ height: 100vh;
1285
+ grid-template-columns: 280px 320px 1fr;
1286
+ overflow: hidden;
1287
+ }
1288
+
1289
+ .layout-music-2col {
1290
+ display: grid;
1291
+ height: 100vh;
1292
+ grid-template-rows: 1fr auto;
1293
+ overflow: hidden;
1294
+ }
1295
+
1296
+ .layout-music-row {
1297
+ display: grid;
1298
+ grid-template-columns: 280px 1fr;
1299
+ overflow: hidden;
1300
+ }
1301
+
1302
+ .layout-chat-2col {
1303
+ display: grid;
1304
+ height: 100vh;
1305
+ grid-template-columns: 320px 1fr;
1306
+ overflow: hidden;
1307
+ }
1308
+
1309
+ .layout-admin-2col {
1310
+ display: grid;
1311
+ height: 100vh;
1312
+ grid-template-columns: 260px 1fr;
1313
+ overflow: hidden;
1314
+ }
1315
+
1316
+ .layout-analytics-2col {
1317
+ display: grid;
1318
+ height: 100vh;
1319
+ grid-template-columns: 240px 1fr;
1320
+ overflow: hidden;
1321
+ }
1322
+
1323
+ /* ============================================
1324
+ UI COMPONENT PRESETS - Reusable Elements
1325
+ ============================================ */
1326
+
1327
+ /* Stat Card - for dashboard metrics */
1328
+ .starlight-stat {
1329
+ display: flex;
1330
+ flex-direction: column;
1331
+ gap: 0.5rem;
1332
+ padding: 1.25rem;
1333
+ background: rgb(255 255 255 / 3%);
1334
+ border: 1px solid rgb(255 255 255 / 8%);
1335
+ border-radius: var(--q-radius-xl);
1336
+ transition: all 0.3s ease;
1337
+ }
1338
+
1339
+ .starlight-stat:hover {
1340
+ background: rgb(255 255 255 / 5%);
1341
+ border-color: rgb(255 255 255 / 12%);
1342
+ }
1343
+
1344
+ .starlight-stat-header {
1345
+ display: flex;
1346
+ align-items: center;
1347
+ justify-content: space-between;
1348
+ }
1349
+
1350
+ .starlight-stat-icon {
1351
+ display: flex;
1352
+ align-items: center;
1353
+ justify-content: center;
1354
+ width: 2.5rem;
1355
+ height: 2.5rem;
1356
+ border-radius: var(--q-radius-lg);
1357
+ background: color-mix(in srgb, var(--q-color-primary) 15%, transparent);
1358
+ color: var(--q-color-primary);
1359
+ }
1360
+
1361
+ .starlight-stat-icon-green { background: rgb(16 185 129 / 15%); color: #10b981; }
1362
+ .starlight-stat-icon-orange { background: rgb(245 158 11 / 15%); color: #f59e0b; }
1363
+ .starlight-stat-icon-purple { background: rgb(139 92 246 / 15%); color: #8b5cf6; }
1364
+ .starlight-stat-icon-pink { background: rgb(236 72 153 / 15%); color: #ec4899; }
1365
+
1366
+ .starlight-stat-trend {
1367
+ display: flex;
1368
+ align-items: center;
1369
+ gap: 0.25rem;
1370
+ font-size: 0.75rem;
1371
+ font-weight: 600;
1372
+ }
1373
+
1374
+ .starlight-stat-trend-up { color: #10b981; }
1375
+ .starlight-stat-trend-down { color: #ef4444; }
1376
+
1377
+ .starlight-stat-value {
1378
+ font-size: 1.75rem;
1379
+ font-weight: 700;
1380
+ color: var(--q-color-primary);
1381
+ }
1382
+
1383
+ .starlight-stat-label {
1384
+ font-size: 0.875rem;
1385
+ color: rgb(255 255 255 / 60%);
1386
+ text-transform: uppercase;
1387
+ letter-spacing: 0.05em;
1388
+ }
1389
+
1390
+ /* Avatar - user/channel images */
1391
+ .starlight-avatar {
1392
+ display: flex;
1393
+ align-items: center;
1394
+ justify-content: center;
1395
+ border-radius: 50%;
1396
+ font-weight: 600;
1397
+ color: white;
1398
+ background: linear-gradient(135deg, var(--q-color-starlight-blue), #3b82f6);
1399
+ flex-shrink: 0;
1400
+ }
1401
+
1402
+ .starlight-avatar-sm {
1403
+ width: 2rem;
1404
+ height: 2rem;
1405
+ font-size: 0.625rem;
1406
+ }
1407
+
1408
+ .starlight-avatar-md {
1409
+ width: 2.5rem;
1410
+ height: 2.5rem;
1411
+ font-size: 0.75rem;
1412
+ }
1413
+
1414
+ .starlight-avatar-lg {
1415
+ width: 3rem;
1416
+ height: 3rem;
1417
+ font-size: 0.875rem;
1418
+ }
1419
+
1420
+ .starlight-avatar-xl {
1421
+ width: 4rem;
1422
+ height: 4rem;
1423
+ font-size: 1.125rem;
1424
+ }
1425
+
1426
+ .starlight-avatar img {
1427
+ width: 100%;
1428
+ height: 100%;
1429
+ object-fit: cover;
1430
+ border-radius: 50%;
1431
+ }
1432
+
1433
+ .starlight-avatar-online::after {
1434
+ content: '';
1435
+ position: absolute;
1436
+ bottom: 0;
1437
+ right: 0;
1438
+ width: 0.75rem;
1439
+ height: 0.75rem;
1440
+ background: #10b981;
1441
+ border: 2px solid var(--q-color-starlight-deep);
1442
+ border-radius: 50%;
1443
+ }
1444
+
1445
+ /* Theme Toggle */
1446
+ .starlight-theme-toggle {
1447
+ display: flex;
1448
+ align-items: center;
1449
+ justify-content: center;
1450
+ width: 2.5rem;
1451
+ height: 2.5rem;
1452
+ border-radius: 50%;
1453
+ background: rgb(255 255 255 / 5%);
1454
+ border: 1px solid rgb(255 255 255 / 10%);
1455
+ color: inherit;
1456
+ cursor: pointer;
1457
+ transition: all 0.3s ease;
1458
+ flex-shrink: 0;
1459
+ }
1460
+
1461
+ .starlight-theme-toggle:hover {
1462
+ background: rgb(255 255 255 / 10%);
1463
+ transform: scale(1.05);
1464
+ }
1465
+
1466
+ .starlight-theme-toggle svg {
1467
+ width: 1.25rem;
1468
+ height: 1.25rem;
1469
+ }
1470
+
1471
+ /* Notification Bell */
1472
+ .starlight-notification {
1473
+ position: relative;
1474
+ display: flex;
1475
+ align-items: center;
1476
+ justify-content: center;
1477
+ width: 2.5rem;
1478
+ height: 2.5rem;
1479
+ background: transparent;
1480
+ border: none;
1481
+ color: inherit;
1482
+ cursor: pointer;
1483
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
1484
+ }
1485
+
1486
+ .starlight-notification:hover {
1487
+ color: var(--q-color-starlight-blue);
1488
+ }
1489
+
1490
+ .starlight-notification-dot {
1491
+ position: absolute;
1492
+ top: 0.5rem;
1493
+ right: 0.5rem;
1494
+ width: 0.5rem;
1495
+ height: 0.5rem;
1496
+ background: #ef4444;
1497
+ border-radius: 50%;
1498
+ animation: starlight-pulse 2s infinite;
1499
+ }
1500
+
1501
+ @keyframes starlight-pulse {
1502
+ 0%, 100% { opacity: 1; }
1503
+ 50% { opacity: 0.5; }
1504
+ }
1505
+
1506
+ /* Data Table */
1507
+ .starlight-table-container {
1508
+ background: rgb(255 255 255 / 3%);
1509
+ border: 1px solid rgb(255 255 255 / 8%);
1510
+ border-radius: var(--q-radius-xl);
1511
+ overflow: hidden;
1512
+ }
1513
+
1514
+ .starlight-table-header {
1515
+ display: flex;
1516
+ align-items: center;
1517
+ justify-content: space-between;
1518
+ padding: 1rem 1.25rem;
1519
+ border-bottom: 1px solid rgb(255 255 255 / 8%);
1520
+ }
1521
+
1522
+ .starlight-table-title {
1523
+ font-size: 1.125rem;
1524
+ font-weight: 600;
1525
+ }
1526
+
1527
+ .starlight-table-filters {
1528
+ display: flex;
1529
+ gap: 0.5rem;
1530
+ }
1531
+
1532
+ .starlight-table {
1533
+ width: 100%;
1534
+ border-collapse: collapse;
1535
+ }
1536
+
1537
+ .starlight-table th,
1538
+ .starlight-table td {
1539
+ padding: 0.875rem 1.25rem;
1540
+ text-align: left;
1541
+ border-bottom: 1px solid rgb(255 255 255 / 5%);
1542
+ }
1543
+
1544
+ .starlight-table th {
1545
+ font-size: 0.75rem;
1546
+ font-weight: 600;
1547
+ text-transform: uppercase;
1548
+ letter-spacing: 0.05em;
1549
+ color: rgb(255 255 255 / 60%);
1550
+ background: rgb(255 255 255 / 2%);
1551
+ }
1552
+
1553
+ .starlight-table tr:hover td {
1554
+ background: rgb(255 255 255 / 3%);
1555
+ }
1556
+
1557
+ .starlight-table-footer {
1558
+ display: flex;
1559
+ align-items: center;
1560
+ justify-content: space-between;
1561
+ padding: 0.875rem 1.25rem;
1562
+ border-top: 1px solid rgb(255 255 255 / 8%);
1563
+ font-size: 0.875rem;
1564
+ color: rgb(255 255 255 / 60%);
1565
+ }
1566
+
1567
+ /* Chart Card */
1568
+ .starlight-chart {
1569
+ background: rgb(255 255 255 / 3%);
1570
+ border: 1px solid rgb(255 255 255 / 8%);
1571
+ border-radius: var(--q-radius-xl);
1572
+ overflow: hidden;
1573
+ }
1574
+
1575
+ .starlight-chart-header {
1576
+ display: flex;
1577
+ align-items: center;
1578
+ justify-content: space-between;
1579
+ padding: 1rem 1.25rem;
1580
+ border-bottom: 1px solid rgb(255 255 255 / 5%);
1581
+ }
1582
+
1583
+ .starlight-chart-title {
1584
+ font-size: 1rem;
1585
+ font-weight: 600;
1586
+ }
1587
+
1588
+ .starlight-chart-tabs {
1589
+ display: flex;
1590
+ gap: 0.25rem;
1591
+ }
1592
+
1593
+ .starlight-chart-tab {
1594
+ padding: 0.375rem 0.75rem;
1595
+ font-size: 0.75rem;
1596
+ font-weight: 500;
1597
+ background: transparent;
1598
+ border: none;
1599
+ border-radius: var(--q-radius-md);
1600
+ color: rgb(255 255 255 / 60%);
1601
+ cursor: pointer;
1602
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
1603
+ }
1604
+
1605
+ .starlight-chart-tab:hover {
1606
+ color: inherit;
1607
+ }
1608
+
1609
+ .starlight-chart-tab.active {
1610
+ background: rgb(0 212 255 / 15%);
1611
+ color: var(--q-color-starlight-blue);
1612
+ }
1613
+
1614
+ .starlight-chart-container {
1615
+ padding: 1.25rem;
1616
+ }
1617
+
1618
+ /* Breadcrumb */
1619
+ .starlight-breadcrumb {
1620
+ display: flex;
1621
+ align-items: center;
1622
+ gap: 0.5rem;
1623
+ font-size: 0.875rem;
1624
+ }
1625
+
1626
+ .starlight-breadcrumb-item {
1627
+ color: rgb(255 255 255 / 60%);
1628
+ text-decoration: none;
1629
+ transition: color 0.2s ease;
1630
+ }
1631
+
1632
+ .starlight-breadcrumb-item:hover {
1633
+ color: var(--q-color-starlight-blue);
1634
+ }
1635
+
1636
+ .starlight-breadcrumb-separator {
1637
+ color: rgb(255 255 255 / 40%);
1638
+ }
1639
+
1640
+ .starlight-breadcrumb-current {
1641
+ color: inherit;
1642
+ font-weight: 500;
1643
+ }
1644
+
1645
+ /* Gallery (enhanced) */
1646
+ .starlight-gallery-grid {
1647
+ display: grid;
1648
+ gap: 1rem;
1649
+ }
1650
+
1651
+ .starlight-gallery-item {
1652
+ position: relative;
1653
+ aspect-ratio: 16 / 9;
1654
+ border-radius: var(--q-radius-lg);
1655
+ overflow: hidden;
1656
+ }
1657
+
1658
+ .starlight-gallery-item img {
1659
+ width: 100%;
1660
+ height: 100%;
1661
+ object-fit: cover;
1662
+ transition: transform var(--q-duration-slower) var(--q-ease-in-out);
1663
+ }
1664
+
1665
+ .starlight-gallery-item:hover img {
1666
+ transform: scale(1.05);
1667
+ }
1668
+
1669
+ .starlight-gallery-overlay {
1670
+ position: absolute;
1671
+ inset: 0;
1672
+ display: flex;
1673
+ align-items: flex-end;
1674
+ padding: 1rem;
1675
+ background: linear-gradient(to top, rgb(0 0 0 / 80%), transparent);
1676
+ opacity: 0;
1677
+ transition: opacity var(--q-duration-slow) var(--q-ease-in-out);
1678
+ }
1679
+
1680
+ .starlight-gallery-item:hover .starlight-gallery-overlay {
1681
+ opacity: 1;
1682
+ }
1683
+
1684
+ /* Progress Bar */
1685
+ .starlight-progress {
1686
+ display: flex;
1687
+ align-items: center;
1688
+ gap: 0.75rem;
1689
+ }
1690
+
1691
+ .starlight-progress-bar {
1692
+ flex: 1;
1693
+ height: 0.5rem;
1694
+ background: rgb(255 255 255 / 10%);
1695
+ border-radius: 9999px;
1696
+ overflow: hidden;
1697
+ }
1698
+
1699
+ .starlight-progress-fill {
1700
+ height: 100%;
1701
+ background: linear-gradient(90deg, var(--q-color-starlight-blue), var(--q-color-starlight-peach));
1702
+ border-radius: 9999px;
1703
+ transition: width var(--q-duration-slower) var(--q-ease-in-out);
1704
+ }
1705
+
1706
+ .starlight-progress-value {
1707
+ font-size: 0.875rem;
1708
+ font-weight: 600;
1709
+ min-width: 3rem;
1710
+ text-align: right;
1711
+ }
1712
+
1713
+ /* Player Controls */
1714
+ .starlight-player-controls {
1715
+ display: flex;
1716
+ align-items: center;
1717
+ gap: 1rem;
1718
+ }
1719
+
1720
+ .starlight-player-btn {
1721
+ display: flex;
1722
+ align-items: center;
1723
+ justify-content: center;
1724
+ width: 2.5rem;
1725
+ height: 2.5rem;
1726
+ background: transparent;
1727
+ border: none;
1728
+ color: inherit;
1729
+ cursor: pointer;
1730
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
1731
+ }
1732
+
1733
+ .starlight-player-btn:hover {
1734
+ color: var(--q-color-starlight-blue);
1735
+ transform: scale(1.1);
1736
+ }
1737
+
1738
+ .starlight-player-btn-primary {
1739
+ width: 3rem;
1740
+ height: 3rem;
1741
+ background: var(--q-color-starlight-blue);
1742
+ border-radius: 50%;
1743
+ color: #000;
1744
+ }
1745
+
1746
+ .starlight-player-btn-primary:hover {
1747
+ background: var(--q-color-starlight-peach);
1748
+ }
1749
+
1750
+ /* Page Header */
1751
+ .starlight-page-header {
1752
+ display: flex;
1753
+ align-items: center;
1754
+ justify-content: space-between;
1755
+ padding: 1.5rem;
1756
+ }
1757
+
1758
+ .starlight-page-title {
1759
+ font-size: 1.875rem;
1760
+ font-weight: 700;
1761
+ }
1762
+
1763
+ .starlight-page-subtitle {
1764
+ font-size: 0.875rem;
1765
+ color: rgb(255 255 255 / 60%);
1766
+ margin-top: 0.25rem;
1767
+ }
1768
+
1769
+ .starlight-page-actions {
1770
+ display: flex;
1771
+ align-items: center;
1772
+ gap: 0.75rem;
1773
+ }