@keenmate/pure-admin-theme-express 1.0.0-rc01 → 1.0.0-rc02

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,566 +1,693 @@
1
- /* Express Theme - Bold yellow and red palette inspired by logistics brands */
2
- @use 'sass:color';
3
-
4
- @import '@keenmate/pure-admin-core/src/scss/variables/index';
5
-
6
- // Express color palette - Bold yellow and red
7
- $express-yellow: #FFCC00; // Primary yellow
8
- $express-yellow-light: #FFE57F;
9
- $express-yellow-lighter: #FFF0B2;
10
-
11
- $express-red: #D40511; // Primary red
12
- $express-red-hover: #F91320;
13
- $express-red-dark: #98040C;
14
-
15
- $express-black: #000000;
16
- $express-dark: #333333;
17
- $express-gray: #8C8C8C;
18
- $express-gray-light: #CCCCCC;
19
- $express-gray-lighter: #E5E5E5;
20
- $express-gray-lightest: #EBEBEB;
21
- $express-bg: #F2F2F2;
22
-
23
- // Layout overrides
24
- $sidebar-width: 29rem; // 290px (10px base)
25
-
26
- // Font overrides
27
- $body-font-family: "Delivery", system-ui, -apple-system, sans-serif;
28
-
29
- // Express theme color overrides - Bold yellow header/footer with red accents
30
- $primary-bg: #ffffff;
31
- $content-background-color: $express-bg;
32
- $header-bg: $express-yellow; // Bold yellow header
33
- $header-border-color: $express-yellow; // Remove gray line between header and sidebar
34
- $sidebar-bg: $express-black; // Black sidebar
35
- $sidebar-submenu-bg: #1a1a1a; // Slightly lighter black for submenus
36
- $sidebar-submenu-hover-bg: rgba(255, 255, 255, 0.1); // Match level 1 hover
37
- $sidebar-submenu-active-bg: $express-red; // Match level 1 active (red accent)
38
- $footer-bg: $express-yellow; // Bold yellow footer
39
- $footer-border-color: $express-yellow; // Remove gray line between footer and sidebar
40
- $border-color: $express-gray-lighter;
41
- $text-primary: $express-dark;
42
- $text-secondary: $express-gray;
43
- $accent-color: $express-red; // Red accent
44
- $accent-hover: rgba(212, 5, 17, 0.12);
45
- $accent-light: rgba(212, 5, 17, 0.06);
46
-
47
- // Sync base variables with theme colors
48
- $base-accent-color: $accent-color;
49
- $base-accent-color-hover: $express-red-hover;
50
- $base-accent-color-active: color.adjust($express-red, $lightness: 15%);
51
- $base-accent-color-light: $accent-light;
52
- $base-accent-color-light-hover: rgba($base-accent-color, 0.10);
53
-
54
- // Form focus colors - must match accent color
55
- $input-focus-border-color: $accent-color;
56
- $select-focus-border-color: $accent-color;
57
- $textarea-focus-border-color: $accent-color;
58
-
59
- // Checkbox colors - must match accent color
60
- $checkbox-border-color-hover: $accent-color;
61
- $checkbox-border-color-checked: $accent-color;
62
- $checkbox-bg-checked: $accent-color;
63
- $checkbox-bg-indeterminate: $accent-color;
64
- $checkbox-focus-shadow: 0 0 0 2px rgba($accent-color, 0.25);
65
-
66
- // Card colors
67
- $card-bg: #ffffff;
68
- $card-header-bg: $express-gray-lightest;
69
- $card-footer-bg: #ffffff;
70
- $card-tabs-bg: $express-gray-lighter;
71
-
72
- // Input colors
73
- $input-bg: #ffffff;
74
- $input-border: $express-gray-lighter;
75
- $input-text: $express-dark;
76
-
77
- // Table colors
78
- $table-bg: #ffffff;
79
- $table-header-bg: $express-gray-lightest;
80
- $table-hover-bg: $express-yellow-lighter;
81
- $table-stripe: $express-bg;
82
-
83
- // Button colors - Red primary, yellow secondary
84
- $btn-primary-bg: $express-red;
85
- $btn-primary-bg-hover: $express-red-hover;
86
- $btn-primary-text: #ffffff;
87
- $btn-secondary-bg: $express-yellow;
88
- $btn-secondary-bg-hover: $express-yellow-light;
89
- $btn-secondary-text: $express-black;
90
- $btn-success-bg: #10b981;
91
- $btn-success-bg-hover: #059669;
92
- $btn-warning-bg: #f59e0b;
93
- $btn-warning-text: #ffffff;
94
- $btn-danger-bg: $express-red-dark;
95
- $btn-danger-bg-hover: $express-red;
96
- $btn-info-bg: #06b6d4;
97
- $btn-info-bg-hover: #0891b2;
98
- $btn-light-bg: $express-gray-lightest;
99
- $btn-light-text: $express-dark;
100
- $btn-light-bg-hover: $express-gray-lighter;
101
- $btn-dark-bg: $express-dark;
102
- $btn-dark-bg-hover: $express-black;
103
-
104
- // Validation shadow colors - match button colors
105
- $success-bg: $btn-success-bg;
106
- $success-bg-light: rgba(16, 185, 129, 0.1);
107
- $warning-bg: $btn-warning-bg;
108
- $warning-bg-light: rgba(245, 158, 11, 0.1);
109
- $danger-bg: $btn-danger-bg;
110
- $danger-bg-light: rgba(180, 5, 14, 0.1);
111
-
112
- // Modal colors
113
- $modal-overlay-bg: rgba(0, 0, 0, 0.6);
114
- $modal-content-bg: #ffffff;
115
-
116
- // Profile name in header
117
- $header-profile-name-color: $express-black; // Black text on yellow header
118
-
119
- // Alert colors - Vibrant and punchy with semi-transparent backgrounds
120
- $alert-success-text: #065f46; // Darker green for contrast
121
- $alert-success-bg: rgba(16, 185, 129, 0.68); // More vibrant
122
- $alert-success-border: #10b981;
123
-
124
- $alert-danger-text: #7f1d1d; // Dark red for contrast
125
- $alert-danger-bg: rgba(212, 5, 17, 0.58);
126
- $alert-danger-border: $express-red;
127
- $alert-danger-text-transform: uppercase; // Uppercase for emphasis
128
-
129
- $alert-warning-text: #78350f; // Dark amber for contrast
130
- $alert-warning-bg: rgba(255, 193, 7, 0.58);
131
- $alert-warning-border: #ffc107;
132
-
133
- $alert-info-text: #164e63; // Dark cyan for contrast
134
- $alert-info-bg: rgba(6, 182, 212, 0.58);
135
- $alert-info-border: #06b6d4;
136
-
137
- // Delivery Font
138
- @font-face {
139
- font-family: "Delivery";
140
- src: url(/fonts/Delivery/Delivery_W_Rg.woff2) format("woff2");
141
- font-weight: 400;
142
- font-style: normal;
143
- }
144
-
145
- @import '@keenmate/pure-admin-core/src/scss/core';
146
- @import '@keenmate/pure-admin-core/src/scss/utilities';
147
- @import '@keenmate/pure-admin-core/src/scss/base-css-variables';
148
-
149
- // Express-specific styling overrides
150
- // Header text visibility - black text on yellow header
151
- .pa-header {
152
- &__brand h1 {
153
- color: $express-black !important;
154
- font-weight: $font-weight-bold !important;
155
- }
156
-
157
- &__nav > ul > li > a {
158
- color: $express-dark !important;
159
-
160
- &:hover {
161
- color: $express-red !important;
162
- background-color: rgba(212, 5, 17, 0.08) !important;
163
- }
164
- }
165
-
166
- &__title h2 {
167
- color: $express-dark !important;
168
- }
169
-
170
- &__profile-btn {
171
- color: $express-black !important;
172
-
173
- &:hover {
174
- background-color: rgba(212, 5, 17, 0.12) !important;
175
- }
176
- }
177
- }
178
-
179
- // Burger menu - black bars on yellow header
180
- .burger-menu {
181
- span {
182
- background-color: $express-black !important;
183
- }
184
-
185
- &:hover span {
186
- background-color: $express-red !important;
187
- }
188
- }
189
-
190
- // Theme switcher in header
191
- .theme-switcher {
192
- label {
193
- color: $express-dark !important;
194
- }
195
-
196
- select {
197
- background-color: $express-yellow-light !important;
198
- color: $express-black !important;
199
- border-color: $express-gray-lighter !important;
200
-
201
- &:focus {
202
- border-color: $express-red !important;
203
- }
204
- }
205
- }
206
-
207
- // Footer text - black on yellow
208
- .pa-layout__footer {
209
- color: $express-dark !important;
210
-
211
- p {
212
- color: $express-dark !important;
213
- }
214
- }
215
-
216
- // Sidebar - black background with white/light text
217
- .pa-sidebar {
218
- border-right-color: $express-black !important; // Remove gray border
219
-
220
- &__link,
221
- &__toggle {
222
- color: #ffffff !important;
223
-
224
- &:hover {
225
- background-color: rgba(255, 255, 255, 0.1) !important;
226
- color: $express-yellow !important;
227
- }
228
- }
229
-
230
- &__link--active {
231
- background-color: $express-red !important;
232
- border-right: 3px solid $express-yellow !important;
233
- color: #ffffff !important;
234
- }
235
-
236
- &__chevron {
237
- color: #ffffff !important;
238
- }
239
- }
240
-
241
- // Primary button - bold red with white text
242
- .pa-btn--primary {
243
- font-weight: $font-weight-bold !important;
244
- background-color: $express-red !important;
245
- color: #ffffff !important;
246
-
247
- &:hover {
248
- background-color: $express-red-hover !important;
249
- box-shadow: 0 2px 8px rgba(212, 5, 17, 0.3) !important;
250
- }
251
- }
252
-
253
- // Secondary button - yellow with black text
254
- .pa-btn--secondary {
255
- background-color: $express-yellow !important;
256
- color: $express-black !important;
257
- border-color: $express-yellow !important;
258
-
259
- &:hover {
260
- background-color: $express-yellow-light !important;
261
- border-color: $express-yellow-light !important;
262
- box-shadow: 0 2px 8px rgba(255, 204, 0, 0.25) !important;
263
- }
264
- }
265
-
266
- // Danger button - dark red
267
- .pa-btn--danger {
268
- font-weight: $font-weight-bold !important;
269
-
270
- &:hover {
271
- box-shadow: 0 2px 8px rgba(212, 5, 17, 0.3) !important;
272
- }
273
- }
274
-
275
- // ============================================================================
276
- // CSS VARIABLES - LIGHT MODE (Default - matches current Express)
277
- // ============================================================================
278
- :root, .pa-mode-light {
279
- --page-loader-bg: rgba(255, 255, 255, 0.95);
280
- --page-loader-spinner-border: #ccc;
281
- --page-loader-spinner-accent: #D40511; // Express red
282
-
283
- // Base CSS variables for web components (daterangepicker, multiselect, etc.)
284
- @include output-base-css-variables;
285
-
286
- // Pure Admin theme CSS variables for runtime theme switching
287
- @include output-pa-css-variables;
288
-
289
- // Web component overrides (light mode)
290
- --drp-dropdown-bg: #ffffff;
291
- --drp-border-color: #{$express-gray-lighter};
292
- --drp-primary-bg: #{$express-bg};
293
- --drp-primary-bg-hover: #{$express-gray-lightest};
294
- --drp-text-primary: #{$express-dark};
295
- --drp-text-secondary: #{$express-gray};
296
- --drp-button-bg: transparent;
297
- --drp-button-color: #{$express-dark};
298
- --drp-button-accent-text-color: #ffffff;
299
- --drp-button-today-color: #{$express-red};
300
- --drp-button-clear-color: #{$express-gray};
301
- --drp-button-cancel-color: #{$express-gray};
302
-
303
- --ms-dropdown-bg: #ffffff;
304
- --ms-input-bg: #ffffff;
305
- --ms-primary-bg: #{$express-bg};
306
- --ms-primary-bg-hover: #{$express-gray-lightest};
307
- --ms-border-color: #{$express-gray-lighter};
308
- --ms-text-color-1: #{$express-dark};
309
- --ms-text-color-2: #{$express-gray};
310
- --ms-text-color-3: #{$express-gray-light};
311
- --ms-text-color-4: #{$express-gray-lighter};
312
- --ms-hint-bg: #{$express-gray-lightest};
313
- --ms-actions-bg: #{$express-gray-lightest};
314
- --ms-selected-popover-bg: #ffffff;
315
- }
316
-
317
- // ============================================================================
318
- // CSS VARIABLES - DARK MODE
319
- // ============================================================================
320
- .pa-mode-dark {
321
- // Express dark palette
322
- $dark-bg: #1a1a1a;
323
- $dark-card: #242424;
324
- $dark-surface: #2a2a2a;
325
- $dark-border: #3a3a3a;
326
- $dark-text: #ffffff;
327
- $dark-text-secondary: #aaaaaa;
328
-
329
- --page-loader-bg: rgba(0, 0, 0, 0.95);
330
- --page-loader-spinner-border: #333;
331
- --page-loader-spinner-accent: #{$express-yellow};
332
-
333
- // Core colors - dark backgrounds
334
- --pa-primary-bg: #{$dark-bg};
335
- --pa-bg-secondary: #{$dark-bg};
336
- --pa-content-bg: #121212;
337
-
338
- // Text colors - light text on dark bg
339
- --pa-text-primary: #{$dark-text};
340
- --pa-text-secondary: #{$dark-text-secondary};
341
-
342
- // Keep Express brand colors
343
- --pa-accent: #{$express-red};
344
- --pa-accent-hover: rgba(212, 5, 17, 0.2);
345
- --pa-accent-light: rgba(212, 5, 17, 0.15);
346
-
347
- // Border
348
- --pa-border-color: #{$dark-border};
349
-
350
- // Header stays yellow (Express brand)
351
- --pa-header-bg: #{$express-yellow};
352
- --pa-header-border-color: #{$express-yellow};
353
- --pa-header-text: #{$express-black};
354
- --pa-header-text-secondary: #{$express-dark};
355
- --pa-header-profile-name-color: #{$express-black};
356
-
357
- // Sidebar stays black
358
- --pa-sidebar-bg: #{$express-black};
359
- --pa-sidebar-text: #ffffff;
360
- --pa-sidebar-text-secondary: #ffffff;
361
- --pa-sidebar-submenu-bg: #{$dark-bg};
362
- --pa-sidebar-submenu-hover-bg: rgba(255, 255, 255, 0.1);
363
- --pa-sidebar-submenu-active-bg: #{$express-red};
364
-
365
- // Footer stays yellow
366
- --pa-footer-bg: #{$express-yellow};
367
- --pa-footer-border-color: #{$express-yellow};
368
-
369
- // Cards - dark backgrounds
370
- --pa-card-bg: #{$dark-card};
371
- --pa-card-header-bg: #{$dark-surface};
372
- --pa-card-footer-bg: #{$dark-surface};
373
- --pa-card-tabs-bg: #{$dark-border};
374
-
375
- // Inputs - dark backgrounds
376
- --pa-input-bg: #{$dark-surface};
377
- --pa-input-border: #{$dark-border};
378
- --pa-input-text: #{$dark-text};
379
- --pa-input-focus-border-color: #{$express-red};
380
-
381
- // Input group - use muted yellow for Express branding
382
- --pa-input-group-prepend-bg: rgba(255, 204, 0, 0.15);
383
- --pa-input-group-prepend-text: #{$express-yellow};
384
- --pa-input-group-append-bg: rgba(255, 204, 0, 0.15);
385
- --pa-input-group-append-text: #{$express-yellow};
386
-
387
- // Input group buttons
388
- .pa-input-group__button {
389
- background-color: rgba(255, 204, 0, 0.15) !important;
390
- color: $express-yellow !important;
391
- border-color: $dark-border !important;
392
-
393
- &:hover {
394
- background-color: rgba(255, 204, 0, 0.25) !important;
395
- }
396
- }
397
-
398
- // Tables - dark backgrounds
399
- --pa-table-bg: #{$dark-card};
400
- --pa-table-header-bg: #{$dark-surface};
401
- --pa-table-stripe: #{$dark-bg};
402
- --pa-table-hover-bg: #{$dark-surface};
403
-
404
- // Modals
405
- --pa-modal-content-bg: #{$dark-card};
406
- --pa-modal-overlay-bg: rgba(0, 0, 0, 0.8);
407
-
408
- // Loader overlay
409
- --pa-loader-overlay-bg: rgba(0, 0, 0, 0.7);
410
-
411
- // Profile panel
412
- --pa-profile-overlay-bg: rgba(0, 0, 0, 0.5);
413
-
414
- // Tooltip/Popover
415
- --pa-tooltip-bg: #{$dark-border};
416
- --pa-tooltip-text: #{$dark-text};
417
- --pa-popover-content-bg: #{$dark-card};
418
-
419
- // Command palette
420
- --pa-command-palette-backdrop-bg: rgba(0, 0, 0, 0.8);
421
- --pa-command-palette-item-hover-bg: #{$dark-surface};
422
- --pa-command-palette-item-active-bg: rgba(212, 5, 17, 0.2);
423
- --pa-command-palette-highlight-bg: rgba(212, 5, 17, 0.3);
424
-
425
- // Alerts - light text for dark mode visibility
426
- --pa-alert-info-text: #ffffff;
427
- --pa-alert-info-bg: rgba(6, 182, 212, 0.3);
428
- --pa-alert-success-text: #ffffff;
429
- --pa-alert-success-bg: rgba(16, 185, 129, 0.3);
430
- --pa-alert-warning-text: #ffffff;
431
- --pa-alert-warning-bg: rgba(255, 193, 7, 0.3);
432
- --pa-alert-danger-text: #ffffff;
433
- --pa-alert-danger-bg: rgba(212, 5, 17, 0.3);
434
-
435
- // Code inside alerts - inherit alert text color
436
- .pa-alert code {
437
- color: inherit;
438
- background-color: rgba(255, 255, 255, 0.2);
439
- }
440
-
441
- // Buttons - adjust for dark mode
442
- --pa-btn-secondary-bg: #{$dark-border};
443
- --pa-btn-secondary-bg-hover: #{$dark-surface};
444
- --pa-btn-secondary-text: #{$dark-text};
445
- --pa-btn-light-bg: #{$dark-surface};
446
- --pa-btn-light-bg-hover: #{$dark-border};
447
- --pa-btn-light-text: #{$dark-text};
448
-
449
- // Semantic colors - slightly brighter for dark mode
450
- --pa-success-bg: #10b981;
451
- --pa-success-bg-light: rgba(16, 185, 129, 0.2);
452
- --pa-warning-bg: #f59e0b;
453
- --pa-warning-bg-light: rgba(245, 158, 11, 0.2);
454
- --pa-danger-bg: #{$express-red-dark};
455
- --pa-danger-bg-light: rgba(180, 5, 14, 0.2);
456
- --pa-info-bg: #06b6d4;
457
- --pa-info-bg-light: rgba(6, 182, 212, 0.2);
458
-
459
- // Base variables for web components (dark mode)
460
- --base-primary-bg: #{$dark-bg};
461
- --base-primary-bg-hover: #{$dark-surface};
462
- --base-text-color-1: #{$dark-text};
463
- --base-text-color-2: #{$dark-text-secondary};
464
- // Accent colors - use yellow for better visibility on dark backgrounds
465
- --base-accent-color: #{$express-yellow};
466
- --base-accent-color-hover: #{$express-yellow-light};
467
- --base-accent-color-active: #{$express-yellow-light};
468
- --base-accent-color-light: rgba(255, 204, 0, 0.2);
469
- --base-accent-color-light-hover: rgba(255, 204, 0, 0.3);
470
- --base-text-color-3: #888888;
471
- --base-text-color-4: #666666;
472
- --base-border-color: #{$dark-border};
473
- --base-border: 1px solid #{$dark-border};
474
- --base-input-bg: #{$dark-surface};
475
- --base-input-color: #{$dark-text};
476
- --base-input-border: 1px solid #{$dark-border};
477
- --base-input-border-hover: 1px solid #{$express-red};
478
- --base-input-border-focus: 1px solid #{$express-red};
479
- --base-input-placeholder-color: #666666;
480
- --base-dropdown-bg: #{$dark-card};
481
- --base-dropdown-border: 1px solid #{$dark-border};
482
- --base-dropdown-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.4);
483
- --base-tooltip-bg: #{$dark-border};
484
- --base-tooltip-text-color: #{$dark-text};
485
-
486
- // Daterangepicker overrides (dark mode)
487
- web-daterangepicker {
488
- --drp-dropdown-bg: #{$dark-card};
489
- --drp-border-color: #{$dark-border};
490
- --drp-primary-bg: #{$dark-bg};
491
- --drp-primary-bg-hover: #{$dark-surface};
492
- --drp-text-primary: #{$dark-text};
493
- --drp-text-secondary: #{$dark-text-secondary};
494
- --drp-button-bg: transparent;
495
- --drp-button-color: #{$dark-text};
496
- --drp-button-accent-text-color: #ffffff;
497
- --drp-button-today-color: #{$express-red};
498
- --drp-button-clear-color: #{$dark-text-secondary};
499
- --drp-button-cancel-color: #{$dark-text-secondary};
500
- }
501
-
502
- // Multiselect overrides (dark mode)
503
- web-multiselect {
504
- --ms-dropdown-bg: #{$dark-card};
505
- --ms-input-bg: #{$dark-surface};
506
- --ms-primary-bg: #{$dark-bg};
507
- --ms-primary-bg-hover: #{$dark-surface};
508
- --ms-border-color: #{$dark-border};
509
- --ms-text-color-1: #{$dark-text};
510
- --ms-text-color-2: #{$dark-text-secondary};
511
- --ms-text-color-3: #888888;
512
- --ms-text-color-4: #666666;
513
- --ms-hint-bg: #{$dark-bg};
514
- --ms-actions-bg: #{$dark-bg};
515
- --ms-selected-popover-bg: #{$dark-card};
516
- }
517
- }
518
-
519
- // ============================================================================
520
- // DARK MODE COMPONENT ADJUSTMENTS
521
- // ============================================================================
522
- .pa-mode-dark {
523
- // Footer text - keep dark on yellow background
524
- .pa-layout__footer {
525
- color: $express-dark !important;
526
-
527
- p {
528
- color: $express-dark !important;
529
- }
530
- }
531
-
532
- // Primary alert - white text on red background for contrast
533
- .pa-alert--primary {
534
- color: #ffffff !important;
535
- background-color: rgba($express-red, 0.25) !important;
536
- border-color: rgba($express-red, 0.4) !important;
537
- }
538
-
539
- // Card shadows darker
540
- .pa-card {
541
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
542
- }
543
-
544
- // Secondary button adjustments for dark mode
545
- .pa-btn--secondary {
546
- background-color: #3a3a3a !important;
547
- color: #ffffff !important;
548
- border-color: #4a4a4a !important;
549
-
550
- &:hover {
551
- background-color: #4a4a4a !important;
552
- border-color: #5a5a5a !important;
553
- }
554
- }
555
-
556
- // Outline secondary button
557
- .pa-btn--outline-secondary {
558
- border-color: #5a5a5a !important;
559
- color: #aaaaaa !important;
560
-
561
- &:hover {
562
- background-color: #3a3a3a !important;
563
- color: #ffffff !important;
564
- }
565
- }
566
- }
1
+ /* Express Theme - Bold yellow and red palette inspired by logistics brands */
2
+ @use 'sass:color';
3
+
4
+ // ============================================================================
5
+ // EXPRESS COLOR PALETTE
6
+ // ============================================================================
7
+ $express-yellow: #FFCC00; // Primary yellow
8
+ $express-yellow-light: #FFE57F;
9
+ $express-yellow-lighter: #FFF0B2;
10
+
11
+ $express-red: #D40511; // Primary red
12
+ $express-red-hover: #F91320;
13
+ $express-red-dark: #98040C;
14
+
15
+ $express-black: #000000;
16
+ $express-dark: #333333;
17
+ $express-gray: #8C8C8C;
18
+ $express-gray-light: #CCCCCC;
19
+ $express-gray-lighter: #E5E5E5;
20
+ $express-gray-lightest: #EBEBEB;
21
+ $express-bg: #F2F2F2;
22
+
23
+ // ============================================================================
24
+ // BASE VARIABLES - Single Source of Truth
25
+ // ============================================================================
26
+ // All framework variables will derive from these
27
+
28
+ // Accent colors (Express uses red as accent)
29
+ $base-accent-color: $express-red;
30
+ $base-accent-color-hover: $express-red-hover;
31
+ $base-accent-color-active: color.adjust($express-red, $lightness: 15%);
32
+ $base-accent-color-light: rgba($express-red, 0.06);
33
+ $base-accent-color-light-hover: rgba($express-red, 0.10);
34
+
35
+ // Text colors
36
+ $base-text-color-1: $express-dark;
37
+ $base-text-color-2: $express-gray;
38
+ $base-text-color-3: $express-gray-light;
39
+ $base-text-color-4: $express-gray-lighter;
40
+ $base-text-color-on-accent: #ffffff;
41
+
42
+ // Surface colors
43
+ $base-surface-1: #ffffff; // Cards, modals
44
+ $base-surface-2: $express-bg; // Page background
45
+ $base-surface-3: $express-gray-lighter; // Dividers
46
+ $base-surface-inverse: $express-dark;
47
+ $base-overlay-bg: rgba(0, 0, 0, 0.6);
48
+ $base-shadow-color: rgba(0, 0, 0, 0.15);
49
+
50
+ // Border
51
+ $base-border-color: $express-gray-lighter;
52
+
53
+ // Input fields
54
+ $base-input-bg: #ffffff;
55
+ $base-input-color: $express-dark;
56
+ $base-input-border: 1px solid $express-gray-lighter;
57
+ $base-input-border-hover: 1px solid $express-gray;
58
+ $base-input-border-focus: 1px solid $express-red;
59
+ $base-input-placeholder-color: $express-gray-light;
60
+
61
+ // Dropdown/Popover
62
+ $base-dropdown-bg: #ffffff;
63
+ $base-dropdown-border: $express-gray-lighter;
64
+ $base-dropdown-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);
65
+
66
+ // Tooltip
67
+ $base-tooltip-bg: $express-dark;
68
+ $base-tooltip-text-color: #ffffff;
69
+
70
+ // Contextual colors
71
+ $base-success-color: #10b981;
72
+ $base-success-color-hover: #059669;
73
+ $base-success-bg-light: rgba(16, 185, 129, 0.1);
74
+ $base-success-text: #065f46;
75
+ $base-text-on-success: #ffffff;
76
+
77
+ $base-danger-color: $express-red-dark;
78
+ $base-danger-color-hover: $express-red;
79
+ $base-danger-bg-light: rgba(180, 5, 14, 0.1);
80
+ $base-danger-text: #7f1d1d;
81
+ $base-text-on-danger: #ffffff;
82
+
83
+ $base-warning-color: #f59e0b;
84
+ $base-warning-color-hover: #d97706;
85
+ $base-warning-bg-light: rgba(245, 158, 11, 0.1);
86
+ $base-warning-text: #78350f;
87
+ $base-text-on-warning: #ffffff;
88
+
89
+ $base-info-color: #06b6d4;
90
+ $base-info-color-hover: #0891b2;
91
+ $base-info-bg-light: rgba(6, 182, 212, 0.1);
92
+ $base-info-text: #164e63;
93
+ $base-text-on-info: #ffffff;
94
+
95
+ // Interactive states
96
+ $base-focus-ring-color: rgba($express-red, 0.25);
97
+
98
+ // Typography
99
+ $base-font-family: "Fira Sans Condensed", "Arial Narrow", "Arial", sans-serif;
100
+
101
+ // ============================================================================
102
+ // FRAMEWORK VARIABLES - Import and let them derive from base
103
+ // ============================================================================
104
+ @import '@keenmate/pure-admin-core/src/scss/variables/index';
105
+
106
+ // Layout overrides
107
+ $sidebar-width: 29rem; // 290px (10px base)
108
+
109
+ // Font overrides
110
+ $body-font-family: $base-font-family;
111
+
112
+ // Layout-specific overrides (Express brand identity)
113
+ $primary-bg: #ffffff;
114
+ $content-background-color: $express-bg;
115
+ $header-bg: $express-yellow; // Bold yellow header
116
+ $header-border-color: $express-yellow;
117
+ $sidebar-bg: $express-black; // Black sidebar
118
+ $sidebar-submenu-bg: #1a1a1a;
119
+ $sidebar-submenu-hover-bg: rgba(255, 255, 255, 0.1);
120
+ $sidebar-submenu-active-bg: $express-red;
121
+ $footer-bg: $express-yellow; // Bold yellow footer
122
+ $footer-border-color: $express-yellow;
123
+ $text-primary: $base-text-color-1;
124
+ $text-secondary: $base-text-color-2;
125
+ $accent-hover: rgba($express-red, 0.12);
126
+ $accent-light: rgba($express-red, 0.06);
127
+
128
+ // Card colors
129
+ $card-bg: #ffffff;
130
+ $card-header-bg: $express-gray-lightest;
131
+ $card-footer-bg: #ffffff;
132
+ $card-tabs-bg: $express-gray-lighter;
133
+
134
+ // Input colors
135
+ $input-bg: $base-input-bg;
136
+ $input-border: $base-input-border;
137
+ $input-text: $base-input-color;
138
+
139
+ // Form focus colors
140
+ $input-focus-border-color: $base-accent-color;
141
+ $select-focus-border-color: $base-accent-color;
142
+ $textarea-focus-border-color: $base-accent-color;
143
+
144
+ // Checkbox colors
145
+ $checkbox-border-color-hover: $base-accent-color;
146
+ $checkbox-border-color-checked: $base-accent-color;
147
+ $checkbox-bg-checked: $base-accent-color;
148
+ $checkbox-bg-indeterminate: $base-accent-color;
149
+ $checkbox-focus-shadow: 0 0 0 2px $base-focus-ring-color;
150
+
151
+ // Table colors
152
+ $table-bg: #ffffff;
153
+ $table-header-bg: $express-gray-lightest;
154
+ $table-hover-bg: $express-yellow-lighter;
155
+ $table-stripe: $express-bg;
156
+
157
+ // Button colors - Red primary, yellow secondary
158
+ $btn-primary-bg: $base-accent-color;
159
+ $btn-primary-bg-hover: $base-accent-color-hover;
160
+ $btn-primary-text: #ffffff;
161
+ $btn-secondary-bg: $express-yellow;
162
+ $btn-secondary-bg-hover: $express-yellow-light;
163
+ $btn-secondary-text: $express-black;
164
+ $btn-light-bg: $express-gray-lightest;
165
+ $btn-light-text: $express-dark;
166
+ $btn-light-bg-hover: $express-gray-lighter;
167
+ $btn-dark-bg: $express-dark;
168
+ $btn-dark-bg-hover: $express-black;
169
+
170
+ // Validation shadow colors
171
+ $success-bg-light: $base-success-bg-light;
172
+ $warning-bg-light: $base-warning-bg-light;
173
+ $danger-bg-light: $base-danger-bg-light;
174
+
175
+ // Modal colors
176
+ $modal-overlay-bg: $base-overlay-bg;
177
+ $modal-content-bg: #ffffff;
178
+
179
+ // Profile name in header
180
+ $header-profile-name-color: $express-black; // Black text on yellow header
181
+
182
+ // Alert colors - Vibrant and punchy with semi-transparent backgrounds
183
+ $alert-success-text: $base-success-text;
184
+ $alert-success-bg: rgba(16, 185, 129, 0.68);
185
+ $alert-success-border: $base-success-color;
186
+
187
+ $alert-danger-text: $base-danger-text;
188
+ $alert-danger-bg: rgba(212, 5, 17, 0.58);
189
+ $alert-danger-border: $express-red;
190
+
191
+ $alert-warning-text: $base-warning-text;
192
+ $alert-warning-bg: rgba(255, 193, 7, 0.58);
193
+ $alert-warning-border: #ffc107;
194
+
195
+ $alert-info-text: $base-info-text;
196
+ $alert-info-bg: rgba(6, 182, 212, 0.58);
197
+ $alert-info-border: $base-info-color;
198
+
199
+ // ============================================================================
200
+ // FONTS
201
+ // ============================================================================
202
+ /* cyrillic-ext */
203
+ @font-face {
204
+ font-family: 'Fira Sans Condensed';
205
+ font-style: normal;
206
+ font-weight: 400;
207
+ font-display: swap;
208
+ src: url(/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfvtrftV.woff2) format('woff2');
209
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
210
+ }
211
+ /* cyrillic */
212
+ @font-face {
213
+ font-family: 'Fira Sans Condensed';
214
+ font-style: normal;
215
+ font-weight: 400;
216
+ font-display: swap;
217
+ src: url(/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfLtrftV.woff2) format('woff2');
218
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
219
+ }
220
+ /* greek-ext */
221
+ @font-face {
222
+ font-family: 'Fira Sans Condensed';
223
+ font-style: normal;
224
+ font-weight: 400;
225
+ font-display: swap;
226
+ src: url(/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfrtrftV.woff2) format('woff2');
227
+ unicode-range: U+1F00-1FFF;
228
+ }
229
+ /* greek */
230
+ @font-face {
231
+ font-family: 'Fira Sans Condensed';
232
+ font-style: normal;
233
+ font-weight: 400;
234
+ font-display: swap;
235
+ src: url(/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfXtrftV.woff2) format('woff2');
236
+ unicode-range: U+0370-03FF;
237
+ }
238
+ /* vietnamese */
239
+ @font-face {
240
+ font-family: 'Fira Sans Condensed';
241
+ font-style: normal;
242
+ font-weight: 400;
243
+ font-display: swap;
244
+ src: url(/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfntrftV.woff2) format('woff2');
245
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
246
+ }
247
+ /* latin-ext */
248
+ @font-face {
249
+ font-family: 'Fira Sans Condensed';
250
+ font-style: normal;
251
+ font-weight: 400;
252
+ font-display: swap;
253
+ src: url(/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfjtrftV.woff2) format('woff2');
254
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
255
+ }
256
+ /* latin */
257
+ @font-face {
258
+ font-family: 'Fira Sans Condensed';
259
+ font-style: normal;
260
+ font-weight: 400;
261
+ font-display: swap;
262
+ src: url(/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfbtrQ.woff2) format('woff2');
263
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
264
+ }
265
+
266
+ // ============================================================================
267
+ // CORE IMPORTS
268
+ // ============================================================================
269
+ @import '@keenmate/pure-admin-core/src/scss/core';
270
+ @import '@keenmate/pure-admin-core/src/scss/utilities';
271
+ @import '@keenmate/pure-admin-core/src/scss/base-css-variables';
272
+
273
+ // ============================================================================
274
+ // EXPRESS-SPECIFIC STYLING OVERRIDES
275
+ // ============================================================================
276
+
277
+ // Header text visibility - black text on yellow header
278
+ .pa-header {
279
+ &__brand h1 {
280
+ color: $express-black !important;
281
+ font-weight: $font-weight-bold !important;
282
+ }
283
+
284
+ &__nav > ul > li > a {
285
+ color: $express-dark !important;
286
+
287
+ &:hover {
288
+ color: $express-red !important;
289
+ background-color: rgba(212, 5, 17, 0.08) !important;
290
+ }
291
+ }
292
+
293
+ &__title h2 {
294
+ color: $express-dark !important;
295
+ }
296
+
297
+ &__profile-btn {
298
+ color: $express-black !important;
299
+
300
+ &:hover {
301
+ background-color: rgba(212, 5, 17, 0.12) !important;
302
+ }
303
+ }
304
+ }
305
+
306
+ // Burger menu - black bars on yellow header
307
+ .burger-menu {
308
+ span {
309
+ background-color: $express-black !important;
310
+ }
311
+
312
+ &:hover span {
313
+ background-color: $express-red !important;
314
+ }
315
+ }
316
+
317
+ // Theme switcher in header
318
+ .theme-switcher {
319
+ label {
320
+ color: $express-dark !important;
321
+ }
322
+
323
+ select {
324
+ background-color: $express-yellow-light !important;
325
+ color: $express-black !important;
326
+ border-color: $express-gray-lighter !important;
327
+
328
+ &:focus {
329
+ border-color: $express-red !important;
330
+ }
331
+ }
332
+ }
333
+
334
+ // Footer text - black on yellow
335
+ .pa-layout__footer {
336
+ color: $express-dark !important;
337
+
338
+ p {
339
+ color: $express-dark !important;
340
+ }
341
+ }
342
+
343
+ // Sidebar - black background with white/light text
344
+ .pa-sidebar {
345
+ border-right-color: $express-black !important;
346
+
347
+ &__link,
348
+ &__toggle {
349
+ color: #ffffff !important;
350
+
351
+ &:hover {
352
+ background-color: rgba(255, 255, 255, 0.1) !important;
353
+ color: $express-yellow !important;
354
+ }
355
+ }
356
+
357
+ &__link--active {
358
+ background-color: $express-red !important;
359
+ border-right: 3px solid $express-yellow !important;
360
+ color: #ffffff !important;
361
+ }
362
+
363
+ &__chevron {
364
+ color: #ffffff !important;
365
+ }
366
+ }
367
+
368
+ // Primary button - bold red with white text
369
+ .pa-btn--primary {
370
+ font-weight: $font-weight-bold !important;
371
+ background-color: $express-red !important;
372
+ color: #ffffff !important;
373
+
374
+ &:hover {
375
+ background-color: $express-red-hover !important;
376
+ box-shadow: 0 2px 8px rgba(212, 5, 17, 0.3) !important;
377
+ }
378
+ }
379
+
380
+ // Secondary button - yellow with black text
381
+ .pa-btn--secondary {
382
+ background-color: $express-yellow !important;
383
+ color: $express-black !important;
384
+ border-color: $express-yellow !important;
385
+
386
+ &:hover {
387
+ background-color: $express-yellow-light !important;
388
+ border-color: $express-yellow-light !important;
389
+ box-shadow: 0 2px 8px rgba(255, 204, 0, 0.25) !important;
390
+ }
391
+ }
392
+
393
+ // Danger button - dark red
394
+ .pa-btn--danger {
395
+ font-weight: $font-weight-bold !important;
396
+
397
+ &:hover {
398
+ box-shadow: 0 2px 8px rgba(212, 5, 17, 0.3) !important;
399
+ }
400
+ }
401
+
402
+ // ============================================================================
403
+ // CSS VARIABLES - LIGHT MODE (Default - matches current Express)
404
+ // ============================================================================
405
+ :root, .pa-mode-light {
406
+ --page-loader-bg: rgba(255, 255, 255, 0.95);
407
+ --page-loader-spinner-border: #ccc;
408
+ --page-loader-spinner-accent: #{$express-red};
409
+
410
+ // Base CSS variables for web components
411
+ @include output-base-css-variables;
412
+
413
+ // Pure Admin theme CSS variables
414
+ @include output-pa-css-variables;
415
+
416
+ // Web component overrides (light mode)
417
+ --drp-dropdown-bg: #ffffff;
418
+ --drp-border-color: #{$express-gray-lighter};
419
+ --drp-primary-bg: #{$express-bg};
420
+ --drp-primary-bg-hover: #{$express-gray-lightest};
421
+ --drp-text-primary: #{$express-dark};
422
+ --drp-text-secondary: #{$express-gray};
423
+ --drp-button-bg: transparent;
424
+ --drp-button-color: #{$express-dark};
425
+ --drp-button-accent-text-color: #ffffff;
426
+ --drp-button-today-color: #{$express-red};
427
+ --drp-button-clear-color: #{$express-gray};
428
+ --drp-button-cancel-color: #{$express-gray};
429
+
430
+ --ms-dropdown-bg: #ffffff;
431
+ --ms-input-bg: #ffffff;
432
+ --ms-primary-bg: #{$express-bg};
433
+ --ms-primary-bg-hover: #{$express-gray-lightest};
434
+ --ms-border-color: #{$express-gray-lighter};
435
+ --ms-text-color-1: #{$express-dark};
436
+ --ms-text-color-2: #{$express-gray};
437
+ --ms-text-color-3: #{$express-gray-light};
438
+ --ms-text-color-4: #{$express-gray-lighter};
439
+ --ms-hint-bg: #{$express-gray-lightest};
440
+ --ms-actions-bg: #{$express-gray-lightest};
441
+ --ms-selected-popover-bg: #ffffff;
442
+ }
443
+
444
+ // ============================================================================
445
+ // CSS VARIABLES - DARK MODE
446
+ // ============================================================================
447
+ .pa-mode-dark {
448
+ // Express dark palette
449
+ $dark-bg: #1a1a1a;
450
+ $dark-card: #242424;
451
+ $dark-surface: #2a2a2a;
452
+ $dark-border: #3a3a3a;
453
+ $dark-text: #ffffff;
454
+ $dark-text-secondary: #aaaaaa;
455
+
456
+ --page-loader-bg: rgba(0, 0, 0, 0.95);
457
+ --page-loader-spinner-border: #333;
458
+ --page-loader-spinner-accent: #{$express-yellow};
459
+
460
+ // Core colors - dark backgrounds
461
+ --pa-primary-bg: #{$dark-bg};
462
+ --pa-bg-secondary: #{$dark-bg};
463
+ --pa-content-bg: #121212;
464
+
465
+ // Text colors - light text on dark bg
466
+ --pa-text-primary: #{$dark-text};
467
+ --pa-text-secondary: #{$dark-text-secondary};
468
+
469
+ // Keep Express brand colors
470
+ --pa-accent: #{$express-red};
471
+ --pa-accent-hover: rgba(212, 5, 17, 0.2);
472
+ --pa-accent-light: rgba(212, 5, 17, 0.15);
473
+
474
+ // Border
475
+ --pa-border-color: #{$dark-border};
476
+
477
+ // Header stays yellow (Express brand)
478
+ --pa-header-bg: #{$express-yellow};
479
+ --pa-header-border-color: #{$express-yellow};
480
+ --pa-header-text: #{$express-black};
481
+ --pa-header-text-secondary: #{$express-dark};
482
+ --pa-header-profile-name-color: #{$express-black};
483
+
484
+ // Sidebar stays black
485
+ --pa-sidebar-bg: #{$express-black};
486
+ --pa-sidebar-text: #ffffff;
487
+ --pa-sidebar-text-secondary: #ffffff;
488
+ --pa-sidebar-submenu-bg: #{$dark-bg};
489
+ --pa-sidebar-submenu-hover-bg: rgba(255, 255, 255, 0.1);
490
+ --pa-sidebar-submenu-active-bg: #{$express-red};
491
+
492
+ // Footer stays yellow
493
+ --pa-footer-bg: #{$express-yellow};
494
+ --pa-footer-border-color: #{$express-yellow};
495
+
496
+ // Cards - dark backgrounds
497
+ --pa-card-bg: #{$dark-card};
498
+ --pa-card-header-bg: #{$dark-surface};
499
+ --pa-card-footer-bg: #{$dark-surface};
500
+ --pa-card-tabs-bg: #{$dark-border};
501
+
502
+ // Inputs - dark backgrounds
503
+ --pa-input-bg: #{$dark-surface};
504
+ --pa-input-border: #{$dark-border};
505
+ --pa-input-text: #{$dark-text};
506
+ --pa-input-focus-border-color: #{$express-red};
507
+
508
+ // Input group - use muted yellow for Express branding
509
+ --pa-input-group-prepend-bg: rgba(255, 204, 0, 0.15);
510
+ --pa-input-group-prepend-text: #{$express-yellow};
511
+ --pa-input-group-append-bg: rgba(255, 204, 0, 0.15);
512
+ --pa-input-group-append-text: #{$express-yellow};
513
+
514
+ // Input group buttons
515
+ .pa-input-group__button {
516
+ background-color: rgba(255, 204, 0, 0.15) !important;
517
+ color: $express-yellow !important;
518
+ border-color: $dark-border !important;
519
+
520
+ &:hover {
521
+ background-color: rgba(255, 204, 0, 0.25) !important;
522
+ }
523
+ }
524
+
525
+ // Tables - dark backgrounds
526
+ --pa-table-bg: #{$dark-card};
527
+ --pa-table-header-bg: #{$dark-surface};
528
+ --pa-table-stripe: #{$dark-bg};
529
+ --pa-table-hover-bg: #{$dark-surface};
530
+
531
+ // Modals
532
+ --pa-modal-content-bg: #{$dark-card};
533
+ --pa-modal-overlay-bg: rgba(0, 0, 0, 0.8);
534
+
535
+ // Loader overlay
536
+ --pa-loader-overlay-bg: rgba(0, 0, 0, 0.7);
537
+
538
+ // Profile panel
539
+ --pa-profile-overlay-bg: rgba(0, 0, 0, 0.5);
540
+
541
+ // Tooltip/Popover
542
+ --pa-tooltip-bg: #{$dark-border};
543
+ --pa-tooltip-text: #{$dark-text};
544
+ --pa-popover-content-bg: #{$dark-card};
545
+
546
+ // Command palette
547
+ --pa-command-palette-backdrop-bg: rgba(0, 0, 0, 0.8);
548
+ --pa-command-palette-item-hover-bg: #{$dark-surface};
549
+ --pa-command-palette-item-active-bg: rgba(212, 5, 17, 0.2);
550
+ --pa-command-palette-highlight-bg: rgba(212, 5, 17, 0.3);
551
+
552
+ // Alerts - light text for dark mode visibility
553
+ --pa-alert-info-text: #ffffff;
554
+ --pa-alert-info-bg: rgba(6, 182, 212, 0.3);
555
+ --pa-alert-success-text: #ffffff;
556
+ --pa-alert-success-bg: rgba(16, 185, 129, 0.3);
557
+ --pa-alert-warning-text: #ffffff;
558
+ --pa-alert-warning-bg: rgba(255, 193, 7, 0.3);
559
+ --pa-alert-danger-text: #ffffff;
560
+ --pa-alert-danger-bg: rgba(212, 5, 17, 0.3);
561
+
562
+ // Code inside alerts - inherit alert text color
563
+ .pa-alert code {
564
+ color: inherit;
565
+ background-color: rgba(255, 255, 255, 0.2);
566
+ }
567
+
568
+ // Buttons - adjust for dark mode
569
+ --pa-btn-secondary-bg: #{$dark-border};
570
+ --pa-btn-secondary-bg-hover: #{$dark-surface};
571
+ --pa-btn-secondary-text: #{$dark-text};
572
+ --pa-btn-light-bg: #{$dark-surface};
573
+ --pa-btn-light-bg-hover: #{$dark-border};
574
+ --pa-btn-light-text: #{$dark-text};
575
+
576
+ // Semantic colors - slightly brighter for dark mode
577
+ --pa-success-bg: #10b981;
578
+ --pa-success-bg-light: rgba(16, 185, 129, 0.2);
579
+ --pa-warning-bg: #f59e0b;
580
+ --pa-warning-bg-light: rgba(245, 158, 11, 0.2);
581
+ --pa-danger-bg: #{$express-red-dark};
582
+ --pa-danger-bg-light: rgba(180, 5, 14, 0.2);
583
+ --pa-info-bg: #06b6d4;
584
+ --pa-info-bg-light: rgba(6, 182, 212, 0.2);
585
+
586
+ // Base variables for web components (dark mode)
587
+ --base-surface-1: #{$dark-card};
588
+ --base-surface-2: #{$dark-bg};
589
+ --base-surface-3: #{$dark-surface};
590
+ --base-text-color-1: #{$dark-text};
591
+ --base-text-color-2: #{$dark-text-secondary};
592
+ --base-text-color-3: #888888;
593
+ --base-text-color-4: #666666;
594
+ // Accent colors - use yellow for better visibility on dark backgrounds
595
+ --base-accent-color: #{$express-yellow};
596
+ --base-accent-color-hover: #{$express-yellow-light};
597
+ --base-accent-color-active: #{$express-yellow-light};
598
+ --base-accent-color-light: rgba(255, 204, 0, 0.2);
599
+ --base-accent-color-light-hover: rgba(255, 204, 0, 0.3);
600
+ --base-border-color: #{$dark-border};
601
+ --base-input-bg: #{$dark-surface};
602
+ --base-input-color: #{$dark-text};
603
+ --base-input-border: 1px solid #{$dark-border};
604
+ --base-input-border-hover: 1px solid #{$express-red};
605
+ --base-input-border-focus: 1px solid #{$express-red};
606
+ --base-input-placeholder-color: #666666;
607
+ --base-dropdown-bg: #{$dark-card};
608
+ --base-dropdown-border: #{$dark-border};
609
+ --base-dropdown-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.4);
610
+ --base-tooltip-bg: #{$dark-border};
611
+ --base-tooltip-text-color: #{$dark-text};
612
+
613
+ // Daterangepicker overrides (dark mode)
614
+ web-daterangepicker {
615
+ --drp-dropdown-bg: #{$dark-card};
616
+ --drp-border-color: #{$dark-border};
617
+ --drp-primary-bg: #{$dark-bg};
618
+ --drp-primary-bg-hover: #{$dark-surface};
619
+ --drp-text-primary: #{$dark-text};
620
+ --drp-text-secondary: #{$dark-text-secondary};
621
+ --drp-button-bg: transparent;
622
+ --drp-button-color: #{$dark-text};
623
+ --drp-button-accent-text-color: #ffffff;
624
+ --drp-button-today-color: #{$express-red};
625
+ --drp-button-clear-color: #{$dark-text-secondary};
626
+ --drp-button-cancel-color: #{$dark-text-secondary};
627
+ }
628
+
629
+ // Multiselect overrides (dark mode)
630
+ web-multiselect {
631
+ --ms-dropdown-bg: #{$dark-card};
632
+ --ms-input-bg: #{$dark-surface};
633
+ --ms-primary-bg: #{$dark-bg};
634
+ --ms-primary-bg-hover: #{$dark-surface};
635
+ --ms-border-color: #{$dark-border};
636
+ --ms-text-color-1: #{$dark-text};
637
+ --ms-text-color-2: #{$dark-text-secondary};
638
+ --ms-text-color-3: #888888;
639
+ --ms-text-color-4: #666666;
640
+ --ms-hint-bg: #{$dark-bg};
641
+ --ms-actions-bg: #{$dark-bg};
642
+ --ms-selected-popover-bg: #{$dark-card};
643
+ }
644
+ }
645
+
646
+ // ============================================================================
647
+ // DARK MODE COMPONENT ADJUSTMENTS
648
+ // ============================================================================
649
+ .pa-mode-dark {
650
+ // Footer text - keep dark on yellow background
651
+ .pa-layout__footer {
652
+ color: $express-dark !important;
653
+
654
+ p {
655
+ color: $express-dark !important;
656
+ }
657
+ }
658
+
659
+ // Primary alert - white text on red background for contrast
660
+ .pa-alert--primary {
661
+ color: #ffffff !important;
662
+ background-color: rgba($express-red, 0.25) !important;
663
+ border-color: rgba($express-red, 0.4) !important;
664
+ }
665
+
666
+ // Card shadows darker
667
+ .pa-card {
668
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
669
+ }
670
+
671
+ // Secondary button adjustments for dark mode
672
+ .pa-btn--secondary {
673
+ background-color: #3a3a3a !important;
674
+ color: #ffffff !important;
675
+ border-color: #4a4a4a !important;
676
+
677
+ &:hover {
678
+ background-color: #4a4a4a !important;
679
+ border-color: #5a5a5a !important;
680
+ }
681
+ }
682
+
683
+ // Outline secondary button
684
+ .pa-btn--outline-secondary {
685
+ border-color: #5a5a5a !important;
686
+ color: #aaaaaa !important;
687
+
688
+ &:hover {
689
+ background-color: #3a3a3a !important;
690
+ color: #ffffff !important;
691
+ }
692
+ }
693
+ }