@howssatoshi/quantumcss 1.7.7 → 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,3 +1,12 @@
1
+ /*!
2
+ * QuantumCSS Core
3
+ * Layer: Components (Brand Neutral)
4
+ *
5
+ * RULES:
6
+ * 1. Components MUST ONLY use semantic tokens.
7
+ * 2. NO hardcoded colors, beziers, or brand tokens.
8
+ * 3. Layout and structural logic only.
9
+ */
1
10
 
2
11
  .group:hover .group-hover\:opacity-100 { opacity: 1; }
3
12
  .group:hover .group-hover\:scale-110 { transform: scale(1.1); }
@@ -12,7 +21,7 @@
12
21
  padding: var(--q-space-2) var(--q-space-4);
13
22
  border-radius: var(--q-radius-md);
14
23
  font-weight: 500;
15
- transition: all var(--q-duration-150) var(--q-ease-in-out);
24
+ transition: all var(--q-duration-fast) var(--q-ease-in-out);
16
25
  cursor: pointer;
17
26
  border: 1px solid transparent;
18
27
  text-decoration: none;
@@ -37,21 +46,20 @@
37
46
  }
38
47
 
39
48
  .btn-secondary {
40
- background-color: rgb(255 255 255 / 8%);
41
- color: #ffffff !important;
49
+ background-color: var(--q-color-surface-elevated);
50
+ color: var(--q-color-text) !important;
42
51
  border: 0;
43
52
  backdrop-filter: blur(12px);
44
53
  -webkit-backdrop-filter: blur(12px);
45
54
  }
46
55
 
47
56
  .btn-secondary:hover {
48
- background-color: rgb(255 255 255 / 10%);
57
+ background-color: color-mix(in srgb, var(--q-color-surface-elevated), white 5%);
49
58
  }
50
59
 
51
- body.light-mode .btn-secondary,
52
60
  html[data-theme="light"] .btn-secondary {
53
- background-color: rgb(0 0 0 / 3%);
54
- color: #1e293b !important;
61
+ background-color: var(--q-color-surface-elevated);
62
+ color: var(--q-color-text) !important;
55
63
  border: 0;
56
64
  }
57
65
 
@@ -91,19 +99,24 @@ html[data-theme="light"] .btn-secondary {
91
99
  font-size: 1.25rem;
92
100
  }
93
101
 
102
+ /* Glass Utility */
103
+ .glass {
104
+ background: var(--q-glass-bg);
105
+ border: 1px solid var(--q-glass-border);
106
+ backdrop-filter: var(--q-glass-blur);
107
+ -webkit-backdrop-filter: var(--q-glass-blur);
108
+ border-radius: var(--q-radius-xl);
109
+ }
110
+
94
111
  /* Card Component */
95
112
  .card {
96
- background-color: white;
97
- color: #1e293b;
113
+ background-color: var(--q-color-surface);
114
+ color: var(--q-color-text);
115
+ border: 1px solid var(--q-color-border);
98
116
  border-radius: var(--q-radius-lg);
99
117
  box-shadow: var(--q-shadow-md);
100
118
  overflow: hidden;
101
- transition: all var(--q-duration-200) var(--q-ease-in-out);
102
- }
103
-
104
- body.light-mode .card {
105
- background-color: white;
106
- color: #1e293b;
119
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
107
120
  }
108
121
 
109
122
  .card:hover {
@@ -113,7 +126,7 @@ body.light-mode .card {
113
126
 
114
127
  .card-header {
115
128
  padding: var(--q-space-6);
116
- border-bottom: 1px solid #e5e7eb;
129
+ border-bottom: 1px solid var(--q-color-border);
117
130
  }
118
131
 
119
132
  .card-body {
@@ -122,14 +135,9 @@ body.light-mode .card {
122
135
 
123
136
  .card-footer {
124
137
  padding: var(--q-space-6);
125
- border-top: 1px solid #e5e7eb;
126
- background-color: #f9fafb;
127
- color: #1e293b;
128
- }
129
-
130
- body.light-mode .card-footer {
131
- background-color: #f9fafb;
132
- color: #1e293b;
138
+ border-top: 1px solid var(--q-color-border);
139
+ background-color: var(--q-color-bg-muted);
140
+ color: var(--q-color-text-muted);
133
141
  }
134
142
 
135
143
  /* Input Component */
@@ -137,17 +145,12 @@ body.light-mode .card-footer {
137
145
  display: block;
138
146
  width: 100%;
139
147
  padding: var(--q-space-2) var(--q-space-3);
140
- border: 1px solid #d1d5db;
148
+ border: 1px solid var(--q-color-border);
141
149
  border-radius: var(--q-radius-md);
142
- background-color: white;
143
- color: #1e293b;
150
+ background-color: var(--q-color-surface);
151
+ color: var(--q-color-text);
144
152
  font-size: 1rem;
145
- transition: all var(--q-duration-150) var(--q-ease-in-out);
146
- }
147
-
148
- body.light-mode .input {
149
- background-color: white;
150
- color: #1e293b;
153
+ transition: all var(--q-duration-fast) var(--q-ease-in-out);
151
154
  }
152
155
 
153
156
  textarea.input {
@@ -157,7 +160,7 @@ textarea.input {
157
160
  .input:focus {
158
161
  outline: none;
159
162
  border-color: var(--q-color-primary);
160
- box-shadow: 0 0 0 3px var(--q-color-primary);
163
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--q-color-primary) 30%, transparent);
161
164
  }
162
165
 
163
166
  /* Date & Time Input Specifics */
@@ -186,23 +189,18 @@ input[type="date"]::-webkit-calendar-picker-indicator {
186
189
  }
187
190
 
188
191
  .input:disabled {
189
- background-color: #f3f4f6;
190
- color: #6b7280;
192
+ background-color: var(--q-color-bg-muted);
193
+ color: var(--q-color-text-muted);
191
194
  cursor: not-allowed;
192
195
  }
193
196
 
194
- body.light-mode .input:disabled {
195
- background-color: #f3f4f6;
196
- color: #6b7280;
197
- }
198
-
199
197
  .input-error {
200
- border-color: var(--q-color-error);
198
+ border-color: var(--q-color-danger);
201
199
  }
202
200
 
203
201
  .input-error:focus {
204
- border-color: var(--q-color-error);
205
- box-shadow: 0 0 0 3px var(--q-color-error);
202
+ border-color: var(--q-color-danger);
203
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--q-color-danger) 30%, transparent);
206
204
  }
207
205
 
208
206
  /* Badge Component */
@@ -221,64 +219,33 @@ body.light-mode .input:disabled {
221
219
  }
222
220
 
223
221
  .badge-primary {
224
- background-color: rgb(0 212 255 / 15%);
225
- color: #00d4ff;
226
- border-color: rgb(0 212 255 / 30%);
222
+ background-color: var(--q-color-info-soft);
223
+ color: var(--q-color-info);
224
+ border-color: color-mix(in srgb, var(--q-color-info) 30%, transparent);
227
225
  }
228
226
 
229
227
  .badge-secondary {
230
- background-color: rgb(255 255 255 / 5%);
231
- color: rgb(255 255 255 / 80%);
232
- border-color: rgb(255 255 255 / 10%);
228
+ background-color: var(--q-color-surface-elevated);
229
+ color: var(--q-color-text-muted);
230
+ border-color: var(--q-color-border);
233
231
  }
234
232
 
235
233
  .badge-success {
236
- background-color: rgb(16 185 129 / 15%);
237
- color: #10b981;
238
- border-color: rgb(16 185 129 / 30%);
234
+ background-color: var(--q-color-success-soft);
235
+ color: var(--q-color-success);
236
+ border-color: color-mix(in srgb, var(--q-color-success) 30%, transparent);
239
237
  }
240
238
 
241
239
  .badge-warning {
242
- background-color: rgb(245 158 11 / 15%);
243
- color: #f59e0b;
244
- border-color: rgb(245 158 11 / 30%);
240
+ background-color: var(--q-color-warning-soft);
241
+ color: var(--q-color-warning);
242
+ border-color: color-mix(in srgb, var(--q-color-warning) 30%, transparent);
245
243
  }
246
244
 
247
245
  .badge-error {
248
- background-color: rgb(239 68 68 / 15%);
249
- color: #ef4444;
250
- border-color: rgb(239 68 68 / 30%);
251
- }
252
-
253
- /* Light Mode Overrides for Badges */
254
- html[data-theme="light"] .badge-primary {
255
- background-color: rgb(59 130 246 / 10%);
256
- color: #2563eb;
257
- border-color: rgb(59 130 246 / 20%);
258
- }
259
-
260
- html[data-theme="light"] .badge-secondary {
261
- background-color: rgb(0 0 0 / 5%);
262
- color: #475569;
263
- border-color: rgb(0 0 0 / 10%);
264
- }
265
-
266
- html[data-theme="light"] .badge-success {
267
- background-color: rgb(16 185 129 / 10%);
268
- color: #059669;
269
- border-color: rgb(16 185 129 / 20%);
270
- }
271
-
272
- html[data-theme="light"] .badge-warning {
273
- background-color: rgb(245 158 11 / 10%);
274
- color: #d97706;
275
- border-color: rgb(245 158 11 / 20%);
276
- }
277
-
278
- html[data-theme="light"] .badge-error {
279
- background-color: rgb(239 68 68 / 10%);
280
- color: #dc2626;
281
- border-color: rgb(239 68 68 / 20%);
246
+ background-color: var(--q-color-danger-soft);
247
+ color: var(--q-color-danger);
248
+ border-color: color-mix(in srgb, var(--q-color-danger) 30%, transparent);
282
249
  }
283
250
 
284
251
  /* Alert Component */
@@ -289,34 +256,34 @@ html[data-theme="light"] .badge-error {
289
256
  }
290
257
 
291
258
  .alert-success {
292
- background-color: #d1fae5;
293
- border-color: #6ee7b7;
294
- color: #065f46;
259
+ background-color: var(--q-color-success-soft);
260
+ border-color: color-mix(in srgb, var(--q-color-success) 20%, transparent);
261
+ color: var(--q-color-success);
295
262
  }
296
263
 
297
264
  .alert-warning {
298
- background-color: #fed7aa;
299
- border-color: #fbbf24;
300
- color: #92400e;
265
+ background-color: var(--q-color-warning-soft);
266
+ border-color: color-mix(in srgb, var(--q-color-warning) 20%, transparent);
267
+ color: var(--q-color-warning);
301
268
  }
302
269
 
303
270
  .alert-error {
304
- background-color: #fee2e2;
305
- border-color: #f87171;
306
- color: #991b1b;
271
+ background-color: var(--q-color-danger-soft);
272
+ border-color: color-mix(in srgb, var(--q-color-danger) 20%, transparent);
273
+ color: var(--q-color-danger);
307
274
  }
308
275
 
309
276
  .alert-info {
310
- background-color: #dbeafe;
311
- border-color: #60a5fa;
312
- color: #1e40af;
277
+ background-color: var(--q-color-info-soft);
278
+ border-color: color-mix(in srgb, var(--q-color-info) 20%, transparent);
279
+ color: var(--q-color-info);
313
280
  }
314
281
 
315
282
  /* Modal Component */
316
283
  .modal-overlay {
317
284
  position: fixed;
318
285
  inset: 0;
319
- background-color: rgb(0 0 0 / 50%);
286
+ background-color: color-mix(in srgb, var(--q-color-bg) 50%, transparent);
320
287
  display: flex;
321
288
  align-items: center;
322
289
  justify-content: center;
@@ -324,8 +291,8 @@ html[data-theme="light"] .badge-error {
324
291
  }
325
292
 
326
293
  .modal-content {
327
- background-color: white;
328
- color: #1e293b;
294
+ background-color: var(--q-color-surface);
295
+ color: var(--q-color-text);
329
296
  border-radius: var(--q-radius-lg);
330
297
  box-shadow: var(--q-shadow-2xl);
331
298
  max-width: 90vw;
@@ -333,17 +300,12 @@ html[data-theme="light"] .badge-error {
333
300
  overflow-y: auto;
334
301
  }
335
302
 
336
- body.light-mode .modal-content {
337
- background-color: white;
338
- color: #1e293b;
339
- }
340
-
341
303
  /* Loading Spinner */
342
304
  .spinner {
343
305
  display: inline-block;
344
306
  width: 1.5rem;
345
307
  height: 1.5rem;
346
- border: 2px solid rgb(255 255 255 / 10%);
308
+ border: 2px solid var(--q-color-border);
347
309
  border-top-color: var(--q-color-primary);
348
310
  border-radius: 50%;
349
311
  animation: spin 1s linear infinite;
@@ -355,7 +317,11 @@ body.light-mode .modal-content {
355
317
 
356
318
  /* Skeleton Loading */
357
319
  .skeleton {
358
- background: linear-gradient(90deg, rgb(255 255 255 / 5%) 25%, rgb(255 255 255 / 10%) 50%, rgb(255 255 255 / 5%) 75%);
320
+ background: linear-gradient(90deg,
321
+ var(--q-color-bg-muted) 25%,
322
+ color-mix(in srgb, var(--q-color-bg-muted), white 5%) 50%,
323
+ var(--q-color-bg-muted) 75%
324
+ );
359
325
  background-size: 200% 100%;
360
326
  animation: shimmer 2s infinite;
361
327
  border-radius: var(--q-radius-md);
@@ -366,11 +332,6 @@ body.light-mode .modal-content {
366
332
  100% { background-position: -200% 0; }
367
333
  }
368
334
 
369
- body.light-mode .skeleton {
370
- background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
371
- background-size: 200% 100%;
372
- }
373
-
374
335
  /* Tooltip Component */
375
336
  .tooltip {
376
337
  position: relative;
@@ -381,15 +342,15 @@ body.light-mode .skeleton {
381
342
  bottom: 100%;
382
343
  left: 50%;
383
344
  transform: translateX(-50%);
384
- background-color: #1f2937;
385
- color: white;
345
+ background-color: var(--q-color-bg-muted);
346
+ color: var(--q-color-text);
386
347
  padding: var(--q-space-1) var(--q-space-2);
387
348
  border-radius: var(--q-radius-md);
388
349
  font-size: 0.875rem;
389
350
  white-space: nowrap;
390
351
  opacity: 0;
391
352
  visibility: hidden;
392
- transition: all var(--q-duration-150) var(--q-ease-in-out);
353
+ transition: all var(--q-duration-fast) var(--q-ease-in-out);
393
354
  z-index: 10;
394
355
  margin-bottom: var(--q-space-1);
395
356
  }
@@ -409,9 +370,9 @@ body.light-mode .skeleton {
409
370
  position: absolute;
410
371
  top: 100%;
411
372
  left: 0;
412
- background-color: white;
413
- color: #1e293b;
414
- border: 1px solid #e5e7eb;
373
+ background-color: var(--q-color-surface);
374
+ color: var(--q-color-text);
375
+ border: 1px solid var(--q-color-border);
415
376
  border-radius: var(--q-radius-md);
416
377
  box-shadow: var(--q-shadow-lg);
417
378
  min-width: 200px;
@@ -419,12 +380,7 @@ body.light-mode .skeleton {
419
380
  opacity: 0;
420
381
  visibility: hidden;
421
382
  transform: translateY(-10px);
422
- transition: all var(--q-duration-150) var(--q-ease-in-out);
423
- }
424
-
425
- body.light-mode .dropdown-content {
426
- background-color: white;
427
- color: #1e293b;
383
+ transition: all var(--q-duration-fast) var(--q-ease-in-out);
428
384
  }
429
385
 
430
386
  .dropdown.active .dropdown-content {
@@ -441,74 +397,53 @@ body.light-mode .dropdown-content {
441
397
  background: none;
442
398
  border: none;
443
399
  cursor: pointer;
444
- color: #1e293b;
445
- transition: background-color var(--q-duration-150) var(--q-ease-in-out);
400
+ color: var(--q-color-text);
401
+ transition: background-color var(--q-duration-fast) var(--q-ease-in-out);
446
402
  }
447
403
 
448
404
  .dropdown-item:hover {
449
- background-color: #f3f4f6;
450
- color: #1e293b;
451
- }
452
-
453
- body.light-mode .dropdown-item {
454
- color: #1e293b;
455
- }
456
-
457
- body.light-mode .dropdown-item:hover {
458
- background-color: #f3f4f6;
459
- color: #1e293b;
405
+ background-color: var(--q-color-bg-muted);
406
+ color: var(--q-color-text);
460
407
  }
461
408
 
462
409
  /* Accordion Component */
463
410
  .accordion-item {
464
- border: 1px solid #e5e7eb;
411
+ border: 1px solid var(--q-card-border);
465
412
  border-radius: var(--q-radius-md);
466
413
  margin-bottom: var(--q-space-2);
467
414
  overflow: hidden;
468
415
  }
469
416
 
470
417
  .accordion-header {
471
- padding: var(--q-space-4);
472
- background-color: #f9fafb;
473
- color: #1e293b;
418
+ padding: var(--q-space-3) var(--q-space-4);
419
+ font-weight: 600;
420
+ background-color: var(--q-color-surface-elevated);
421
+ border-bottom: 1px solid var(--q-color-border);
422
+ color: var(--q-color-text);
474
423
  cursor: pointer;
475
424
  display: flex;
476
425
  justify-content: space-between;
477
426
  align-items: center;
478
- transition: background-color var(--q-duration-150) var(--q-ease-in-out);
427
+ transition: background-color var(--q-duration-fast) var(--q-ease-in-out);
479
428
  }
480
429
 
481
430
  .accordion-header:hover {
482
- background-color: #f3f4f6;
483
- color: #1e293b;
431
+ background-color: color-mix(in srgb, var(--q-color-surface-elevated), white 5%);
432
+ color: var(--q-color-text);
484
433
  }
485
434
 
486
435
  .accordion-content {
487
- padding: var(--q-space-4);
488
- background-color: white;
489
- color: #1e293b;
436
+ padding: 0 var(--q-space-4);
437
+ background-color: var(--q-color-surface);
438
+ color: var(--q-color-text);
490
439
  max-height: 0;
491
440
  overflow: hidden;
492
- transition: max-height var(--q-duration-300) var(--q-ease-in-out);
493
- }
494
-
495
- body.light-mode .accordion-header {
496
- background-color: #f9fafb;
497
- color: #1e293b;
498
- }
499
-
500
- body.light-mode .accordion-header:hover {
501
- background-color: #f3f4f6;
502
- color: #1e293b;
503
- }
504
-
505
- body.light-mode .accordion-content {
506
- background-color: white;
507
- color: #1e293b;
441
+ transition: max-height var(--q-duration-slow) var(--q-ease-in-out), padding var(--q-duration-slow) var(--q-ease-in-out);
508
442
  }
509
443
 
510
444
  .accordion-item.active .accordion-content {
511
445
  max-height: 500px;
446
+ padding: var(--q-space-4);
512
447
  }
513
448
 
514
449
  .accordion-item.active .accordion-icon {
@@ -516,13 +451,13 @@ body.light-mode .accordion-content {
516
451
  }
517
452
 
518
453
  .accordion-icon {
519
- transition: transform var(--q-duration-300) var(--q-ease-in-out);
454
+ transition: transform var(--q-duration-slow) var(--q-ease-in-out);
520
455
  }
521
456
 
522
457
  /* Tab Component */
523
458
  .tab-list {
524
459
  display: flex;
525
- border-bottom: 1px solid rgb(255 255 255 / 10%);
460
+ border-bottom: 1px solid var(--q-color-border);
526
461
  }
527
462
 
528
463
  .tab-button {
@@ -531,35 +466,17 @@ body.light-mode .accordion-content {
531
466
  border: none;
532
467
  cursor: pointer;
533
468
  border-bottom: 2px solid transparent;
534
- color: var(--q-text-secondary);
469
+ color: var(--q-color-text-muted);
535
470
  font-weight: 500;
536
- transition: all var(--q-duration-150) var(--q-ease-in-out);
471
+ transition: all var(--q-duration-fast) var(--q-ease-in-out);
537
472
  }
538
473
 
539
474
  .tab-button:hover {
540
- background-color: rgb(255 255 255 / 5%);
541
- color: var(--q-text-primary);
475
+ background-color: var(--q-color-surface-elevated);
476
+ color: var(--q-color-text);
542
477
  }
543
478
 
544
479
  .tab-button.active {
545
- border-bottom-color: var(--q-color-starlight-blue);
546
- color: var(--q-color-starlight-blue);
547
- }
548
-
549
- body.light-mode .tab-list {
550
- border-bottom-color: #e2e8f0;
551
- }
552
-
553
- body.light-mode .tab-button {
554
- color: #64748b;
555
- }
556
-
557
- body.light-mode .tab-button:hover {
558
- background-color: #f1f5f9;
559
- color: #0f172a;
560
- }
561
-
562
- body.light-mode .tab-button.active {
563
480
  border-bottom-color: var(--q-color-primary);
564
481
  color: var(--q-color-primary);
565
482
  }
@@ -580,14 +497,14 @@ body.light-mode .tab-button.active {
580
497
  .progress {
581
498
  width: 100%;
582
499
  height: 0.5rem;
583
- background-color: #e5e7eb;
500
+ background-color: var(--q-color-border);
584
501
  border-radius: var(--q-radius-full);
585
502
  overflow: hidden;
586
503
  }
587
504
 
588
505
  .progress-bar {
589
506
  height: 100%;
590
- transition: width var(--q-duration-300) var(--q-ease-in-out);
507
+ transition: width var(--q-duration-slow) var(--q-ease-in-out);
591
508
  }
592
509
 
593
510
  /* Toggle Switch */
@@ -608,8 +525,8 @@ body.light-mode .tab-button.active {
608
525
  position: absolute;
609
526
  cursor: pointer;
610
527
  inset: 0;
611
- background-color: #cbd5e1;
612
- transition: background-color var(--q-duration-150) var(--q-ease-in-out);
528
+ background-color: var(--q-color-text-muted);
529
+ transition: background-color var(--q-duration-fast) var(--q-ease-in-out);
613
530
  border-radius: var(--q-radius-full);
614
531
  }
615
532
 
@@ -621,7 +538,7 @@ body.light-mode .tab-button.active {
621
538
  left: 0.125rem;
622
539
  bottom: 0.125rem;
623
540
  background-color: white;
624
- transition: transform var(--q-duration-150) var(--q-ease-in-out);
541
+ transition: transform var(--q-duration-fast) var(--q-ease-in-out);
625
542
  border-radius: 50%;
626
543
  }
627
544
 
@@ -653,7 +570,7 @@ body.light-mode .tab-button.active {
653
570
  }
654
571
 
655
572
  .animate-fade-in {
656
- animation: fadeIn var(--q-duration-500) var(--q-ease-in-out);
573
+ animation: fadeIn var(--q-duration-slow) var(--q-ease-in-out);
657
574
  }
658
575
 
659
576
  @keyframes fadeIn {
@@ -662,7 +579,16 @@ body.light-mode .tab-button.active {
662
579
  }
663
580
 
664
581
  .animate-slide-up {
665
- animation: slideUp var(--q-duration-300) var(--q-ease-out);
582
+ animation: slideUp var(--q-duration-slow) var(--q-ease-out);
583
+ }
584
+
585
+ @keyframes slideUp {
586
+ from { transform: translateY(20px); opacity: 0; }
587
+ to { transform: translateY(0); opacity: 1; }
588
+ }
589
+
590
+ .animate-slide-up {
591
+ animation: slideUp var(--q-duration-slow) var(--q-ease-out);
666
592
  }
667
593
 
668
594
  @keyframes slideUp {
@@ -671,7 +597,7 @@ body.light-mode .tab-button.active {
671
597
  }
672
598
 
673
599
  .animate-slide-down {
674
- animation: slideDown var(--q-duration-300) var(--q-ease-out);
600
+ animation: slideDown var(--q-duration-slow) var(--q-ease-out);
675
601
  }
676
602
 
677
603
  @keyframes slideDown {
@@ -691,59 +617,39 @@ body.light-mode .tab-button.active {
691
617
  }
692
618
 
693
619
  .table-wrapper::-webkit-scrollbar-track {
694
- background: rgb(255 255 255 / 5%);
620
+ background: var(--q-color-bg-muted);
695
621
  border-radius: 4px;
696
622
  }
697
623
 
698
624
  .table-wrapper::-webkit-scrollbar-thumb {
699
- background: var(--q-color-starlight-blue, #3b82f6);
625
+ background: var(--q-color-primary);
700
626
  border-radius: 4px;
701
627
  }
702
628
 
703
- body.light-mode .table-wrapper::-webkit-scrollbar-track {
704
- background: rgb(0 0 0 / 5%);
705
- }
706
-
707
629
  .table {
708
630
  width: 100%;
709
631
  border-collapse: collapse;
710
632
  font-size: 0.875rem;
711
633
  text-align: left;
712
- color: var(--q-text-primary);
634
+ color: var(--q-color-text);
713
635
  }
714
636
 
715
637
  .table th {
716
638
  padding: var(--q-space-3) var(--q-space-4);
717
639
  font-weight: 600;
718
- background-color: rgb(255 255 255 / 5%);
719
- border-bottom: 2px solid rgb(255 255 255 / 10%);
720
- color: var(--q-text-primary);
640
+ background-color: var(--q-color-surface-elevated);
641
+ border-bottom: 2px solid var(--q-color-border);
642
+ color: var(--q-color-text);
721
643
  }
722
644
 
723
645
  .table td {
724
646
  padding: var(--q-space-3) var(--q-space-4);
725
- border-bottom: 1px solid rgb(255 255 255 / 10%);
726
- color: var(--q-text-secondary);
647
+ border-bottom: 1px solid var(--q-color-border);
648
+ color: var(--q-color-text-muted);
727
649
  }
728
650
 
729
651
  .table tbody tr:hover {
730
- background-color: rgb(255 255 255 / 3%);
731
- }
732
-
733
- /* Light Mode Table Styles */
734
- body.light-mode .table th {
735
- background-color: #f8fafc;
736
- border-bottom-color: #e2e8f0;
737
- color: #0f172a;
738
- }
739
-
740
- body.light-mode .table td {
741
- border-bottom-color: #e2e8f0;
742
- color: #334155;
743
- }
744
-
745
- body.light-mode .table tbody tr:hover {
746
- background-color: #f1f5f9;
652
+ background-color: var(--q-color-bg-muted);
747
653
  }
748
654
 
749
655
  /* Overflow Utility */
@@ -765,7 +671,7 @@ body.light-mode .table tbody tr:hover {
765
671
  display: grid;
766
672
  grid-template-columns: 260px minmax(0, 1fr);
767
673
  height: 100vh;
768
- background: var(--q-bg-primary, #08081a);
674
+ background: var(--q-color-bg);
769
675
  overflow: hidden;
770
676
  max-width: 100vw;
771
677
  }
@@ -780,8 +686,8 @@ body.light-mode .table tbody tr:hover {
780
686
 
781
687
  /* Sidebar navigation container */
782
688
  .sidebar {
783
- background: linear-gradient(180deg, rgba(15, 23, 42, 0.98) 0%, rgba(8, 8, 26, 0.98) 100%);
784
- border-right: 1px solid rgba(255, 255, 255, 0.08);
689
+ background: var(--q-color-surface);
690
+ border-right: 1px solid var(--q-color-border);
785
691
  padding: 1.5rem;
786
692
  display: flex;
787
693
  flex-direction: column;
@@ -802,8 +708,8 @@ body.light-mode .table tbody tr:hover {
802
708
  align-items: center;
803
709
  margin-bottom: 2rem;
804
710
  padding: 1rem 1.5rem;
805
- background: rgba(255, 255, 255, 0.03);
806
- border: 1px solid rgba(255, 255, 255, 0.08);
711
+ background: var(--q-color-surface-elevated);
712
+ border: 1px solid var(--q-color-border);
807
713
  border-radius: 1rem;
808
714
  }
809
715
 
@@ -822,15 +728,11 @@ body.light-mode .table tbody tr:hover {
822
728
  margin-bottom: 2rem;
823
729
  }
824
730
 
825
- /* Light mode overrides for layout */
826
- body.light-mode .sidebar {
827
- background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
828
- border-right-color: #e2e8f0;
829
- }
830
-
831
- body.light-mode .top-nav {
832
- background: #ffffff;
833
- border-color: #e2e8f0;
731
+ /* Page actions container */
732
+ .page-actions {
733
+ display: flex;
734
+ align-items: center;
735
+ gap: 0.75rem;
834
736
  }
835
737
 
836
738
  /* Responsive layout adjustments */
@@ -853,9 +755,6 @@ body.light-mode .top-nav {
853
755
  display: none;
854
756
  }
855
757
 
856
- .main-content {
857
- }
858
-
859
758
  .page-header {
860
759
  flex-direction: column;
861
760
  align-items: flex-start;
@@ -879,7 +778,7 @@ body.light-mode .top-nav {
879
778
  font-weight: 700;
880
779
  text-transform: uppercase;
881
780
  letter-spacing: 0.15em;
882
- color: var(--q-text-muted, #64748b);
781
+ color: var(--q-color-text-muted);
883
782
  margin-bottom: 0.75rem;
884
783
  padding-left: 0.75rem;
885
784
  }
@@ -891,10 +790,10 @@ body.light-mode .top-nav {
891
790
  gap: 0.875rem;
892
791
  padding: 0.75rem;
893
792
  border-radius: 0.625rem;
894
- color: var(--q-text-secondary, #94a3b8);
793
+ color: var(--q-color-text-muted);
895
794
  font-size: 0.875rem;
896
795
  cursor: pointer;
897
- transition: all 0.2s ease;
796
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
898
797
  margin-bottom: 0.25rem;
899
798
  text-decoration: none;
900
799
  border: none;
@@ -904,13 +803,13 @@ body.light-mode .top-nav {
904
803
  }
905
804
 
906
805
  .nav-item:hover {
907
- background: rgba(255, 255, 255, 0.05);
908
- color: var(--q-text-primary, #f1f5f9);
806
+ background: var(--q-color-surface-elevated);
807
+ color: var(--q-color-text);
909
808
  }
910
809
 
911
810
  .nav-item.active {
912
- background: rgba(0, 212, 255, 0.12);
913
- color: var(--q-color-starlight, #00d4ff);
811
+ background: color-mix(in srgb, var(--q-color-primary) 12%, transparent);
812
+ color: var(--q-color-primary);
914
813
  }
915
814
 
916
815
  /* Constrain nav item icons - prevent oversized icons */
@@ -932,14 +831,10 @@ body.light-mode .top-nav {
932
831
  }
933
832
 
934
833
  .sidebar::-webkit-scrollbar-thumb {
935
- background: rgba(255, 255, 255, 0.1);
834
+ background: var(--q-color-border);
936
835
  border-radius: 2px;
937
836
  }
938
837
 
939
- body.light-mode .sidebar::-webkit-scrollbar-thumb {
940
- background: #cbd5e1;
941
- }
942
-
943
838
  /* Navigation badge (count) */
944
839
  .nav-badge {
945
840
  margin-left: auto;
@@ -947,18 +842,8 @@ body.light-mode .sidebar::-webkit-scrollbar-thumb {
947
842
  font-weight: 600;
948
843
  padding: 0.125rem 0.5rem;
949
844
  border-radius: 9999px;
950
- background: rgba(239, 68, 68, 0.2);
951
- color: #f87171;
952
- }
953
-
954
- /* Light mode overrides for navigation */
955
- body.light-mode .nav-item:hover {
956
- background: #f1f5f9;
957
- color: #0f172a;
958
- }
959
-
960
- body.light-mode .nav-section-title {
961
- color: #64748b;
845
+ background: var(--q-color-danger-soft);
846
+ color: var(--q-color-danger);
962
847
  }
963
848
 
964
849
  /* ============================================================================
@@ -976,15 +861,15 @@ body.light-mode .nav-section-title {
976
861
 
977
862
  /* Individual stat card */
978
863
  .stat-card {
979
- background: rgba(255, 255, 255, 0.03);
980
- border: 1px solid rgba(255, 255, 255, 0.08);
864
+ background: var(--q-color-surface);
865
+ border: 1px solid var(--q-color-border);
981
866
  border-radius: 1rem;
982
867
  padding: 1.5rem;
983
- transition: all 0.3s ease;
868
+ transition: all var(--q-duration-slow) var(--q-ease-in-out);
984
869
  }
985
870
 
986
871
  .stat-card:hover {
987
- background: rgba(255, 255, 255, 0.05);
872
+ background: var(--q-color-surface-elevated);
988
873
  transform: translateY(-2px);
989
874
  }
990
875
 
@@ -1008,42 +893,42 @@ body.light-mode .nav-section-title {
1008
893
 
1009
894
  /* Icon color variants */
1010
895
  .stat-icon-blue {
1011
- background: rgba(59, 130, 246, 0.15);
1012
- color: #60a5fa;
896
+ background: var(--q-color-info-soft);
897
+ color: var(--q-color-info);
1013
898
  }
1014
899
 
1015
900
  .stat-icon-green {
1016
- background: rgba(16, 185, 129, 0.15);
1017
- color: #34d399;
901
+ background: var(--q-color-success-soft);
902
+ color: var(--q-color-success);
1018
903
  }
1019
904
 
1020
905
  .stat-icon-orange {
1021
- background: rgba(249, 115, 22, 0.15);
1022
- color: #fb923c;
906
+ background: var(--q-color-warning-soft);
907
+ color: var(--q-color-warning);
1023
908
  }
1024
909
 
1025
910
  .stat-icon-purple {
1026
- background: rgba(139, 92, 246, 0.15);
1027
- color: #a78bfa;
911
+ background: color-mix(in srgb, var(--q-color-primary) 15%, transparent);
912
+ color: var(--q-color-primary);
1028
913
  }
1029
914
 
1030
915
  .stat-icon-red {
1031
- background: rgba(239, 68, 68, 0.15);
1032
- color: #f87171;
916
+ background: var(--q-color-danger-soft);
917
+ color: var(--q-color-danger);
1033
918
  }
1034
919
 
1035
920
  /* Stat value display */
1036
921
  .stat-value {
1037
922
  font-size: 1.875rem;
1038
923
  font-weight: 700;
1039
- color: var(--q-text-primary, #f1f5f9);
924
+ color: var(--q-color-text);
1040
925
  margin-bottom: 0.25rem;
1041
926
  }
1042
927
 
1043
928
  /* Stat label */
1044
929
  .stat-label {
1045
930
  font-size: 0.875rem;
1046
- color: var(--q-text-muted, #64748b);
931
+ color: var(--q-color-text-muted);
1047
932
  }
1048
933
 
1049
934
  /* Trend indicator */
@@ -1058,56 +943,13 @@ body.light-mode .nav-section-title {
1058
943
  }
1059
944
 
1060
945
  .stat-trend-up {
1061
- background: rgba(16, 185, 129, 0.15);
1062
- color: #34d399;
946
+ background: var(--q-color-success-soft);
947
+ color: var(--q-color-success);
1063
948
  }
1064
949
 
1065
950
  .stat-trend-down {
1066
- background: rgba(239, 68, 68, 0.15);
1067
- color: #f87171;
1068
- }
1069
-
1070
- /* Light mode overrides for stat cards */
1071
- body.light-mode .stat-card {
1072
- background: #ffffff;
1073
- border-color: #e2e8f0;
1074
- }
1075
-
1076
- body.light-mode .stat-card:hover {
1077
- background: #f8fafc;
1078
- }
1079
-
1080
- body.light-mode .stat-icon-blue {
1081
- background: rgba(59, 130, 246, 0.1);
1082
- }
1083
-
1084
- body.light-mode .stat-icon-green {
1085
- background: rgba(16, 185, 129, 0.1);
1086
- }
1087
-
1088
- body.light-mode .stat-icon-orange {
1089
- background: rgba(249, 115, 22, 0.1);
1090
- }
1091
-
1092
- body.light-mode .stat-icon-purple {
1093
- background: rgba(139, 92, 246, 0.1);
1094
- }
1095
-
1096
- body.light-mode .stat-icon-red {
1097
- background: rgba(239, 68, 68, 0.1);
1098
- }
1099
-
1100
- /* Responsive stats grid */
1101
- @media (max-width: 1280px) {
1102
- .stats-grid {
1103
- grid-template-columns: repeat(2, 1fr);
1104
- }
1105
- }
1106
-
1107
- @media (max-width: 768px) {
1108
- .stats-grid {
1109
- grid-template-columns: 1fr;
1110
- }
951
+ background: var(--q-color-danger-soft);
952
+ color: var(--q-color-danger);
1111
953
  }
1112
954
 
1113
955
  /* ============================================================================
@@ -1120,20 +962,20 @@ body.light-mode .stat-icon-red {
1120
962
  width: 40px;
1121
963
  height: 40px;
1122
964
  border-radius: 0.625rem;
1123
- background: rgba(255, 255, 255, 0.05);
1124
- border: 1px solid rgba(255, 255, 255, 0.1);
1125
- color: var(--q-text-secondary, #94a3b8);
965
+ background: var(--q-color-surface);
966
+ border: 1px solid var(--q-color-border);
967
+ color: var(--q-color-text-muted);
1126
968
  display: flex;
1127
969
  align-items: center;
1128
970
  justify-content: center;
1129
971
  cursor: pointer;
1130
- transition: all 0.2s ease;
972
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
1131
973
  position: relative;
1132
974
  }
1133
975
 
1134
976
  .icon-btn:hover {
1135
- background: rgba(255, 255, 255, 0.08);
1136
- color: var(--q-text-primary, #f1f5f9);
977
+ background: var(--q-color-surface-elevated);
978
+ color: var(--q-color-text);
1137
979
  }
1138
980
 
1139
981
  /* Circular icon button */
@@ -1166,40 +1008,26 @@ body.light-mode .stat-icon-red {
1166
1008
  width: 32px;
1167
1009
  height: 32px;
1168
1010
  border-radius: 0.5rem;
1169
- background: rgba(255, 255, 255, 0.05);
1170
- border: 1px solid rgba(255, 255, 255, 0.1);
1171
- color: var(--q-text-muted, #64748b);
1011
+ background: var(--q-color-surface);
1012
+ border: 1px solid var(--q-color-border);
1013
+ color: var(--q-color-text-muted);
1172
1014
  display: flex;
1173
1015
  align-items: center;
1174
1016
  justify-content: center;
1175
1017
  cursor: pointer;
1176
- transition: all 0.2s ease;
1018
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
1177
1019
  }
1178
1020
 
1179
1021
  .action-btn:hover {
1180
- background: rgba(255, 255, 255, 0.08);
1181
- color: var(--q-text-primary, #f1f5f9);
1022
+ background: var(--q-color-surface-elevated);
1023
+ color: var(--q-color-text);
1182
1024
  }
1183
1025
 
1184
1026
  /* Delete action button */
1185
1027
  .action-btn-delete:hover {
1186
- background: rgba(239, 68, 68, 0.15);
1187
- color: #f87171;
1188
- border-color: rgba(239, 68, 68, 0.3);
1189
- }
1190
-
1191
- /* Light mode overrides for icon buttons */
1192
- body.light-mode .icon-btn,
1193
- body.light-mode .action-btn {
1194
- background: #f1f5f9;
1195
- border-color: #e2e8f0;
1196
- color: #64748b;
1197
- }
1198
-
1199
- body.light-mode .icon-btn:hover,
1200
- body.light-mode .action-btn:hover {
1201
- background: #e2e8f0;
1202
- color: #0f172a;
1028
+ background: var(--q-color-danger-soft);
1029
+ color: var(--q-color-danger);
1030
+ border-color: color-mix(in srgb, var(--q-color-danger) 30%, transparent);
1203
1031
  }
1204
1032
 
1205
1033
  /* ============================================================================
@@ -1211,7 +1039,7 @@ body.light-mode .action-btn:hover {
1211
1039
  .theme-toggle-wrapper {
1212
1040
  margin-top: auto;
1213
1041
  padding-top: 1.5rem;
1214
- border-top: 1px solid rgba(255, 255, 255, 0.08);
1042
+ border-top: 1px solid var(--q-color-border);
1215
1043
  }
1216
1044
 
1217
1045
  /* Theme toggle button */
@@ -1222,18 +1050,18 @@ body.light-mode .action-btn:hover {
1222
1050
  justify-content: center;
1223
1051
  gap: 0.5rem;
1224
1052
  padding: 0.75rem;
1225
- background: rgba(255, 255, 255, 0.05);
1226
- border: 1px solid rgba(255, 255, 255, 0.1);
1053
+ background: var(--q-color-surface);
1054
+ border: 1px solid var(--q-color-border);
1227
1055
  border-radius: 0.625rem;
1228
- color: var(--q-text-secondary, #94a3b8);
1056
+ color: var(--q-color-text-muted);
1229
1057
  font-size: 0.875rem;
1230
1058
  cursor: pointer;
1231
- transition: all 0.2s ease;
1059
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
1232
1060
  }
1233
1061
 
1234
1062
  .theme-btn:hover {
1235
- background: rgba(255, 255, 255, 0.08);
1236
- color: var(--q-text-primary, #f1f5f9);
1063
+ background: var(--q-color-surface-elevated);
1064
+ color: var(--q-color-text);
1237
1065
  }
1238
1066
 
1239
1067
  /* Sun/moon icon visibility */
@@ -1241,25 +1069,14 @@ body.light-mode .action-btn:hover {
1241
1069
  display: none;
1242
1070
  }
1243
1071
 
1244
- body.light-mode .sun-icon {
1072
+ html[data-theme="light"] .sun-icon {
1245
1073
  display: inline;
1246
1074
  }
1247
1075
 
1248
- body.light-mode .moon-icon {
1076
+ html[data-theme="light"] .moon-icon {
1249
1077
  display: none;
1250
1078
  }
1251
1079
 
1252
- /* Light mode overrides for theme toggle */
1253
- body.light-mode .theme-btn {
1254
- background: #f1f5f9;
1255
- border-color: #e2e8f0;
1256
- color: #475569;
1257
- }
1258
-
1259
- body.light-mode .theme-toggle-wrapper {
1260
- border-top-color: #e2e8f0;
1261
- }
1262
-
1263
1080
  /* ============================================================================
1264
1081
  AVATARS
1265
1082
  User avatars with initials and images
@@ -1270,13 +1087,13 @@ body.light-mode .theme-toggle-wrapper {
1270
1087
  width: 40px;
1271
1088
  height: 40px;
1272
1089
  border-radius: 50%;
1273
- background: linear-gradient(135deg, #3b82f6, var(--q-color-starlight, #00d4ff));
1090
+ background: var(--q-gradient-primary);
1274
1091
  display: flex;
1275
1092
  align-items: center;
1276
1093
  justify-content: center;
1277
1094
  font-weight: 600;
1278
1095
  font-size: 0.875rem;
1279
- color: white;
1096
+ color: var(--q-color-text-inverse);
1280
1097
  position: relative;
1281
1098
  flex-shrink: 0;
1282
1099
  overflow: hidden;
@@ -1327,22 +1144,13 @@ body.light-mode .theme-toggle-wrapper {
1327
1144
 
1328
1145
  .user-name {
1329
1146
  font-weight: 600;
1330
- color: var(--q-text-primary, #f1f5f9);
1147
+ color: var(--q-color-text);
1331
1148
  margin-bottom: 0.125rem;
1332
1149
  }
1333
1150
 
1334
1151
  .user-email {
1335
1152
  font-size: 0.75rem;
1336
- color: var(--q-text-muted, #64748b);
1337
- }
1338
-
1339
- /* Light mode overrides for user info */
1340
- body.light-mode .user-name {
1341
- color: #0f172a;
1342
- }
1343
-
1344
- body.light-mode .user-email {
1345
- color: #64748b;
1153
+ color: var(--q-color-text-muted);
1346
1154
  }
1347
1155
 
1348
1156
  /* ============================================================================
@@ -1370,30 +1178,30 @@ body.light-mode .user-email {
1370
1178
 
1371
1179
  /* Status variants */
1372
1180
  .status-active {
1373
- background: rgba(16, 185, 129, 0.15);
1374
- color: #34d399;
1181
+ background: var(--q-color-success-soft);
1182
+ color: var(--q-color-success);
1375
1183
  }
1376
1184
 
1377
- .status-active__:before {
1378
- background: #34d399;
1185
+ .status-active::before {
1186
+ background: var(--q-color-success);
1379
1187
  }
1380
1188
 
1381
1189
  .status-pending {
1382
- background: rgba(245, 158, 11, 0.15);
1383
- color: #fbbf24;
1190
+ background: var(--q-color-warning-soft);
1191
+ color: var(--q-color-warning);
1384
1192
  }
1385
1193
 
1386
1194
  .status-pending::before {
1387
- background: #fbbf24;
1195
+ background: var(--q-color-warning);
1388
1196
  }
1389
1197
 
1390
1198
  .status-inactive {
1391
- background: rgba(239, 68, 68, 0.15);
1392
- color: #f87171;
1199
+ background: var(--q-color-danger-soft);
1200
+ color: var(--q-color-danger);
1393
1201
  }
1394
1202
 
1395
- .status-inactive__:before {
1396
- background: #f87171;
1203
+ .status-inactive::before {
1204
+ background: var(--q-color-danger);
1397
1205
  }
1398
1206
 
1399
1207
  /* Role badge */
@@ -1403,18 +1211,19 @@ body.light-mode .user-email {
1403
1211
  border-radius: 0.375rem;
1404
1212
  font-size: 0.75rem;
1405
1213
  font-weight: 500;
1406
- background: rgba(255, 255, 255, 0.05);
1407
- color: var(--q-text-secondary, #94a3b8);
1214
+ background: var(--q-color-surface);
1215
+ color: var(--q-color-text-muted);
1408
1216
  }
1409
1217
 
1410
1218
  .role-admin {
1411
- background: rgba(0, 212, 255, 0.15);
1412
- color: var(--q-color-starlight, #00d4ff);
1219
+ background: color-mix(in srgb, var(--q-color-primary) 15%, transparent);
1220
+ color: var(--q-color-primary);
1413
1221
  }
1414
1222
 
1415
1223
  .role-moderator {
1416
- background: rgba(139, 92, 246, 0.15);
1417
- color: #a78bfa;
1224
+ background: color-mix(in srgb, var(--q-color-primary) 15%, transparent);
1225
+ color: var(--q-color-primary);
1226
+ opacity: 0.8;
1418
1227
  }
1419
1228
 
1420
1229
  /* Count badge */
@@ -1425,11 +1234,11 @@ body.light-mode .user-email {
1425
1234
  min-width: 20px;
1426
1235
  height: 20px;
1427
1236
  padding: 0 6px;
1428
- background: linear-gradient(135deg, var(--q-color-starlight, #00d4ff), #3b82f6);
1237
+ background: var(--q-gradient-primary);
1429
1238
  border-radius: 10px;
1430
1239
  font-size: 0.6875rem;
1431
1240
  font-weight: 700;
1432
- color: white;
1241
+ color: var(--q-color-text-inverse);
1433
1242
  }
1434
1243
 
1435
1244
  /* Label/tag */
@@ -1444,59 +1253,18 @@ body.light-mode .user-email {
1444
1253
  }
1445
1254
 
1446
1255
  .label-work {
1447
- background: rgba(59, 130, 246, 0.2);
1448
- color: #60a5fa;
1256
+ background: var(--q-color-info-soft);
1257
+ color: var(--q-color-info);
1449
1258
  }
1450
1259
 
1451
1260
  .label-personal {
1452
- background: rgba(16, 185, 129, 0.2);
1453
- color: #34d399;
1261
+ background: var(--q-color-success-soft);
1262
+ color: var(--q-color-success);
1454
1263
  }
1455
1264
 
1456
1265
  .label-important {
1457
- background: rgba(239, 68, 68, 0.2);
1458
- color: #f87171;
1459
- }
1460
-
1461
- /* Light mode overrides for badges */
1462
- body.light-mode .status-active {
1463
- background: rgba(16, 185, 129, 0.1);
1464
- color: #059669;
1465
- }
1466
-
1467
- body.light-mode .status-pending {
1468
- background: rgba(245, 158, 11, 0.1);
1469
- color: #d97706;
1470
- }
1471
-
1472
- body.light-mode .status-inactive {
1473
- background: rgba(239, 68, 68, 0.1);
1474
- color: #dc2626;
1475
- }
1476
-
1477
- body.light-mode .role-badge {
1478
- background: #f1f5f9;
1479
- color: #475569;
1480
- }
1481
-
1482
- body.light-mode .role-admin {
1483
- background: rgba(0, 212, 255, 0.1);
1484
- color: #0284c7;
1485
- }
1486
-
1487
- body.light-mode .label-work {
1488
- background: rgba(59, 130, 246, 0.1);
1489
- color: #2563eb;
1490
- }
1491
-
1492
- body.light-mode .label-personal {
1493
- background: rgba(16, 185, 129, 0.1);
1494
- color: #059669;
1495
- }
1496
-
1497
- body.light-mode .label-important {
1498
- background: rgba(239, 68, 68, 0.1);
1499
- color: #dc2626;
1266
+ background: var(--q-color-danger-soft);
1267
+ color: var(--q-color-danger);
1500
1268
  }
1501
1269
 
1502
1270
  /* ============================================================================
@@ -1513,22 +1281,22 @@ body.light-mode .label-important {
1513
1281
  .search-input {
1514
1282
  width: 280px;
1515
1283
  padding: 0.625rem 1rem 0.625rem 2.5rem;
1516
- background: rgba(255, 255, 255, 0.05);
1517
- border: 1px solid rgba(255, 255, 255, 0.1);
1284
+ background: var(--q-color-surface);
1285
+ border: 1px solid var(--q-color-border);
1518
1286
  border-radius: 0.625rem;
1519
- color: var(--q-text-primary, #f1f5f9);
1287
+ color: var(--q-color-text);
1520
1288
  font-size: 0.875rem;
1521
- transition: all 0.2s ease;
1289
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
1522
1290
  }
1523
1291
 
1524
1292
  .search-input:focus {
1525
1293
  outline: none;
1526
- border-color: rgba(0, 212, 255, 0.5);
1527
- background: rgba(255, 255, 255, 0.08);
1294
+ border-color: color-mix(in srgb, var(--q-color-primary) 50%, transparent);
1295
+ background: var(--q-color-surface-elevated);
1528
1296
  }
1529
1297
 
1530
1298
  .search-input::placeholder {
1531
- color: var(--q-text-muted, #64748b);
1299
+ color: var(--q-color-text-muted);
1532
1300
  }
1533
1301
 
1534
1302
  /* Search icon */
@@ -1537,7 +1305,7 @@ body.light-mode .label-important {
1537
1305
  left: 0.875rem;
1538
1306
  top: 50%;
1539
1307
  transform: translateY(-50%);
1540
- color: var(--q-text-muted, #64748b);
1308
+ color: var(--q-color-text-muted);
1541
1309
  pointer-events: none;
1542
1310
  }
1543
1311
 
@@ -1549,10 +1317,10 @@ body.light-mode .label-important {
1549
1317
  /* Filter select (for table filters) */
1550
1318
  .filter-select {
1551
1319
  padding: 0.5rem 2rem 0.5rem 0.75rem;
1552
- background: rgba(255, 255, 255, 0.05);
1553
- border: 1px solid rgba(255, 255, 255, 0.1);
1320
+ background: var(--q-color-surface);
1321
+ border: 1px solid var(--q-color-border);
1554
1322
  border-radius: 0.5rem;
1555
- color: var(--q-text-secondary, #94a3b8);
1323
+ color: var(--q-color-text-muted);
1556
1324
  font-size: 0.875rem;
1557
1325
  cursor: pointer;
1558
1326
  appearance: none;
@@ -1564,24 +1332,7 @@ body.light-mode .label-important {
1564
1332
 
1565
1333
  .filter-select:focus {
1566
1334
  outline: none;
1567
- border-color: rgba(0, 212, 255, 0.5);
1568
- }
1569
-
1570
- /* Light mode overrides for search */
1571
- body.light-mode .search-input,
1572
- body.light-mode .filter-select {
1573
- background: #f1f5f9;
1574
- border-color: #e2e8f0;
1575
- color: #0f172a;
1576
- }
1577
-
1578
- body.light-mode .search-input:focus {
1579
- border-color: #3b82f6;
1580
- background: #ffffff;
1581
- }
1582
-
1583
- body.light-mode .search-input::placeholder {
1584
- color: #94a3b8;
1335
+ border-color: color-mix(in srgb, var(--q-color-primary) 50%, transparent);
1585
1336
  }
1586
1337
 
1587
1338
  /* ============================================================================
@@ -1596,24 +1347,24 @@ body.light-mode .search-input::placeholder {
1596
1347
  right: 2px;
1597
1348
  width: 10px;
1598
1349
  height: 10px;
1599
- background: #10b981;
1350
+ background: var(--q-color-success);
1600
1351
  border-radius: 50%;
1601
- border: 2px solid var(--q-bg-primary, #08081a);
1352
+ border: 2px solid var(--q-color-bg);
1602
1353
  }
1603
1354
 
1604
1355
  /* Away status indicator */
1605
1356
  .away-indicator {
1606
- background: #f59e0b;
1357
+ background: var(--q-color-warning);
1607
1358
  }
1608
1359
 
1609
1360
  /* Busy status indicator */
1610
1361
  .busy-indicator {
1611
- background: #ef4444;
1362
+ background: var(--q-color-danger);
1612
1363
  }
1613
1364
 
1614
1365
  /* Offline status indicator */
1615
1366
  .offline-indicator {
1616
- background: #64748b;
1367
+ background: var(--q-color-text-muted);
1617
1368
  }
1618
1369
 
1619
1370
  /* Notification dot */
@@ -1623,9 +1374,9 @@ body.light-mode .search-input::placeholder {
1623
1374
  right: 8px;
1624
1375
  width: 8px;
1625
1376
  height: 8px;
1626
- background: #ef4444;
1377
+ background: var(--q-color-danger);
1627
1378
  border-radius: 50%;
1628
- border: 2px solid var(--q-bg-primary, #08081a);
1379
+ border: 2px solid var(--q-color-bg);
1629
1380
  }
1630
1381
 
1631
1382
  /* Notification badge with number */
@@ -1636,7 +1387,7 @@ body.light-mode .search-input::placeholder {
1636
1387
  min-width: 18px;
1637
1388
  height: 18px;
1638
1389
  padding: 0 5px;
1639
- background: #ef4444;
1390
+ background: var(--q-color-danger);
1640
1391
  border-radius: 9px;
1641
1392
  font-size: 0.6875rem;
1642
1393
  font-weight: 700;
@@ -1644,14 +1395,7 @@ body.light-mode .search-input::placeholder {
1644
1395
  display: flex;
1645
1396
  align-items: center;
1646
1397
  justify-content: center;
1647
- border: 2px solid var(--q-bg-primary, #08081a);
1648
- }
1649
-
1650
- /* Light mode overrides for indicators */
1651
- body.light-mode .online-indicator,
1652
- body.light-mode .notification-dot,
1653
- body.light-mode .notification-badge {
1654
- border-color: #ffffff;
1398
+ border: 2px solid var(--q-color-bg);
1655
1399
  }
1656
1400
 
1657
1401
  /* ============================================================================
@@ -1669,47 +1413,29 @@ body.light-mode .notification-badge {
1669
1413
  height: 36px;
1670
1414
  padding: 0 0.75rem;
1671
1415
  border-radius: 0.5rem;
1672
- background: rgba(255, 255, 255, 0.05);
1673
- border: 1px solid rgba(255, 255, 255, 0.1);
1674
- color: var(--q-text-secondary, #94a3b8);
1416
+ background: var(--q-color-surface);
1417
+ border: 1px solid var(--q-color-border);
1418
+ color: var(--q-color-text-muted);
1675
1419
  font-size: 0.875rem;
1676
1420
  cursor: pointer;
1677
- transition: all 0.2s ease;
1421
+ transition: all var(--q-duration-base) var(--q-ease-in-out);
1678
1422
  display: flex;
1679
1423
  align-items: center;
1680
1424
  justify-content: center;
1681
1425
  }
1682
1426
 
1683
1427
  .page-btn:hover {
1684
- background: rgba(255, 255, 255, 0.08);
1685
- color: var(--q-text-primary, #f1f5f9);
1428
+ background: var(--q-color-surface-elevated);
1429
+ color: var(--q-color-text);
1686
1430
  }
1687
1431
 
1688
1432
  .page-btn.active {
1689
- background: rgba(0, 212, 255, 0.15);
1690
- border-color: rgba(0, 212, 255, 0.3);
1691
- color: var(--q-color-starlight, #00d4ff);
1433
+ background: color-mix(in srgb, var(--q-color-primary) 15%, transparent);
1434
+ border-color: color-mix(in srgb, var(--q-color-primary) 30%, transparent);
1435
+ color: var(--q-color-primary);
1692
1436
  }
1693
1437
 
1694
1438
  .page-btn:disabled {
1695
1439
  opacity: 0.5;
1696
1440
  cursor: not-allowed;
1697
- }
1698
-
1699
- /* Light mode overrides for pagination */
1700
- body.light-mode .page-btn {
1701
- background: #f1f5f9;
1702
- border-color: #e2e8f0;
1703
- color: #64748b;
1704
- }
1705
-
1706
- body.light-mode .page-btn:hover {
1707
- background: #e2e8f0;
1708
- color: #0f172a;
1709
- }
1710
-
1711
- body.light-mode .page-btn.active {
1712
- background: rgba(59, 130, 246, 0.1);
1713
- border-color: rgba(59, 130, 246, 0.3);
1714
- color: #2563eb;
1715
1441
  }