@syuttechnologies/layout 1.0.2 → 1.0.22

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.
Files changed (59) hide show
  1. package/README.md +536 -0
  2. package/assets/logo.png +0 -0
  3. package/dist/components/ChangePasswordModal.d.ts.map +1 -1
  4. package/dist/components/ChangePasswordModal.js +22 -11
  5. package/dist/components/EnterpriseLayout.d.ts.map +1 -1
  6. package/dist/components/EnterpriseLayout.js +1975 -1960
  7. package/dist/components/temp.d.ts +1 -0
  8. package/dist/components/temp.d.ts.map +1 -0
  9. package/dist/components/temp.js +1 -0
  10. package/dist/components/ui/ActionMenu/ActionMenu.d.ts +52 -0
  11. package/dist/components/ui/ActionMenu/ActionMenu.d.ts.map +1 -0
  12. package/dist/components/ui/ActionMenu/ActionMenu.js +116 -0
  13. package/dist/components/ui/ActionMenu/index.d.ts +3 -0
  14. package/dist/components/ui/ActionMenu/index.d.ts.map +1 -0
  15. package/dist/components/ui/ActionMenu/index.js +2 -0
  16. package/dist/components/ui/ModuleHeader/ModuleHeader.d.ts +90 -0
  17. package/dist/components/ui/ModuleHeader/ModuleHeader.d.ts.map +1 -0
  18. package/dist/components/ui/ModuleHeader/ModuleHeader.js +433 -0
  19. package/dist/components/ui/ModuleHeader/index.d.ts +3 -0
  20. package/dist/components/ui/ModuleHeader/index.d.ts.map +1 -0
  21. package/dist/components/ui/ModuleHeader/index.js +1 -0
  22. package/dist/components/ui/SyutGrid/SyutGrid.d.ts +74 -0
  23. package/dist/components/ui/SyutGrid/SyutGrid.d.ts.map +1 -0
  24. package/dist/components/ui/SyutGrid/SyutGrid.js +306 -0
  25. package/dist/components/ui/SyutGrid/index.d.ts +3 -0
  26. package/dist/components/ui/SyutGrid/index.d.ts.map +1 -0
  27. package/dist/components/ui/SyutGrid/index.js +2 -0
  28. package/dist/components/ui/SyutSelect/SyutSelectUnified.d.ts +128 -0
  29. package/dist/components/ui/SyutSelect/SyutSelectUnified.d.ts.map +1 -0
  30. package/dist/components/ui/SyutSelect/SyutSelectUnified.js +679 -0
  31. package/dist/components/ui/SyutSelect/index.d.ts +3 -0
  32. package/dist/components/ui/SyutSelect/index.d.ts.map +1 -0
  33. package/dist/components/ui/SyutSelect/index.js +2 -0
  34. package/dist/icon-collection/icon-systems.d.ts +89 -0
  35. package/dist/icon-collection/icon-systems.d.ts.map +1 -0
  36. package/dist/icon-collection/icon-systems.js +70 -0
  37. package/dist/icon-collection/index.d.ts +4 -0
  38. package/dist/icon-collection/index.d.ts.map +1 -0
  39. package/dist/icon-collection/index.js +8 -0
  40. package/dist/index.d.ts +12 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +19 -1
  43. package/package.json +9 -4
  44. package/src/components/ChangePasswordModal.tsx +26 -14
  45. package/src/components/EnterpriseLayout.tsx +4475 -4460
  46. package/src/components/EnterpriseLayout.tsx.bak +4475 -0
  47. package/src/components/temp.tsx +0 -0
  48. package/src/components/ui/ActionMenu/ActionMenu.tsx +222 -0
  49. package/src/components/ui/ActionMenu/index.ts +2 -0
  50. package/src/components/ui/ModuleHeader/ModuleHeader.tsx +722 -0
  51. package/src/components/ui/ModuleHeader/index.ts +9 -0
  52. package/src/components/ui/SyutGrid/SyutGrid.tsx +483 -0
  53. package/src/components/ui/SyutGrid/index.ts +2 -0
  54. package/src/components/ui/SyutSelect/SyutSelectUnified.tsx +1115 -0
  55. package/src/components/ui/SyutSelect/index.ts +3 -0
  56. package/src/icon-collection/icon-systems.tsx +464 -0
  57. package/src/icon-collection/index.ts +13 -0
  58. package/src/index.ts +47 -1
  59. package/tsconfig.tsbuildinfo +1 -1
@@ -110,7 +110,6 @@ export const EnterpriseLayout = ({ config, componentRegistry, children, router =
110
110
  setDynamicNavigation(parsedNavigation);
111
111
  // Update expanded sections for the new navigation
112
112
  setExpandedSections(new Set(parsedNavigation.map((n) => n.section)));
113
- setExpandedOverviewSections(new Set(parsedNavigation.filter((sec) => sec.section !== "Dashboard").map((sec) => sec.section)));
114
113
  }
115
114
  }
116
115
  catch (error) {
@@ -142,10 +141,25 @@ export const EnterpriseLayout = ({ config, componentRegistry, children, router =
142
141
  }
143
142
  }
144
143
  }, []);
144
+ // Sync dynamicModules when config.modules prop changes (if no localStorage override)
145
+ useEffect(() => {
146
+ const storedModules = localStorage.getItem('MODULES_CONFIG');
147
+ if (!storedModules && config.modules) {
148
+ setDynamicModules(config.modules);
149
+ }
150
+ }, [config.modules]);
151
+ // Sync dynamicNavigation when config.navigation prop changes (if no localStorage override)
152
+ useEffect(() => {
153
+ const storedNavigation = localStorage.getItem('NAVIGATION_MENU');
154
+ if (!storedNavigation && config.navigation) {
155
+ setDynamicNavigation(config.navigation);
156
+ setExpandedSections(new Set(config.navigation.map((n) => n.section)));
157
+ }
158
+ }, [config.navigation]);
145
159
  // User preference for auto-collapse (configurable)
146
160
  const [autoCollapseEnabled, setAutoCollapseEnabled] = useState(config.layout.autoCollapseSidebar);
147
161
  // Overview tab section management
148
- const [expandedOverviewSections, setExpandedOverviewSections] = useState(new Set(config.navigation.filter(sec => sec.section !== "Dashboard").map(sec => sec.section)));
162
+ const [expandedOverviewSections, setExpandedOverviewSections] = useState(new Set());
149
163
  // React 18 Concurrent Features
150
164
  const [isPending, startTransition] = useTransition();
151
165
  const deferredActiveTab = useDeferredValue(activeTab);
@@ -197,1963 +211,1964 @@ export const EnterpriseLayout = ({ config, componentRegistry, children, router =
197
211
  const footerHeight = footerVisible && config.layout.enableFooter
198
212
  ? config.layout.footerHeight
199
213
  : "0px";
200
- return `
201
- * {
202
- margin: 0;
203
- padding: 0;
204
- box-sizing: border-box;
205
- }
206
-
207
- :root {
208
- --primary: ${colors.primary};
209
- --secondary: ${colors.secondary};
210
- --success: ${colors.success};
211
- --warning: ${colors.warning};
212
- --danger: ${colors.danger};
213
- --info: ${colors.info};
214
-
215
- --bg-primary: #ffffff;
216
- --bg-secondary: #f8fafc;
217
- --bg-gradient: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
218
- --text-primary: #1e293b;
219
- --text-secondary: #64748b;
220
- --text-muted: #94a3b8;
221
- --border-color: rgba(226, 232, 240, 0.5);
222
- --glass-bg: rgba(255, 255, 255, 0.95);
223
- --shadow: 0 8px 12px -2px rgba(0, 0, 0, 0.1);
224
- --accent-primary: ${colors.primary};
225
- --accent-gradient: linear-gradient(135deg, ${colors.primary}, ${colors.info});
226
-
227
- --header-height: ${config.layout.headerHeight};
228
- --sidebar-width: ${config.layout.sidebarWidth};
229
- --sidebar-collapsed-width: ${config.layout.sidebarCollapsedWidth};
230
- --footer-height: ${footerHeight};
231
- --tab-bar-height: ${config.layout.tabBarHeight};
232
- }
233
-
234
- [data-theme="dark"] {
235
- --bg-primary: #0f172a;
236
- --bg-secondary: #1e293b;
237
- --bg-gradient: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
238
- --text-primary: #f1f5f9;
239
- --text-secondary: #cbd5e1;
240
- --text-muted: #64748b;
241
- --border-color: rgba(71, 85, 105, 0.5);
242
- --glass-bg: rgba(15, 23, 42, 0.95);
243
- --shadow: 0 8px 12px -2px rgba(0, 0, 0, 0.3);
244
- }
245
-
246
- html {
247
- margin: 0;
248
- padding: 0;
249
- width: 100%;
250
- overflow: hidden;
251
- }
252
-
253
- body {
254
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
255
- background: var(--bg-gradient);
256
- color: var(--text-primary);
257
- line-height: 1.5;
258
- height: 100vh;
259
- width: 100%;
260
- margin: 0;
261
- padding: 0;
262
- overflow: hidden;
263
- transition: background 0.3s ease, color 0.3s ease;
264
- }
265
-
266
- .enterprise-layout {
267
- width: 100%;
268
- height: 100vh;
269
- display: flex;
270
- flex-direction: column;
271
- overflow: hidden;
272
- }
273
-
274
- .layout-header {
275
- position: fixed;
276
- top: 0;
277
- left: 0;
278
- right: 0;
279
- height: var(--header-height);
280
- background: var(--glass-bg);
281
- backdrop-filter: blur(15px);
282
- border-bottom: 1px solid var(--border-color);
283
- display: flex;
284
- align-items: center;
285
- justify-content: space-between;
286
- padding: 0 1rem;
287
- z-index: 1000;
288
- box-shadow: var(--shadow);
289
- }
290
-
291
- .header-left {
292
- display: flex;
293
- align-items: center;
294
- gap: 0.75rem;
295
- flex: 0 0 auto;
296
- min-width: 0;
297
- }
298
-
299
- .header-center {
300
- display: flex;
301
- align-items: center;
302
- flex: 1;
303
- justify-content: center;
304
- min-width: 0;
305
- }
306
-
307
- .header-right {
308
- display: flex;
309
- align-items: center;
310
- gap: 0.75rem;
311
- flex-shrink: 0;
312
- position: relative;
313
- }
314
-
315
- .header-info-section {
316
- display: flex;
317
- align-items: center;
318
- gap: 0.5rem;
319
- height: fit-content;
320
- max-height: calc(var(--header-height) - 1rem);
321
- }
322
-
323
- .header-info-card {
324
- display: flex;
325
- align-items: center;
326
- gap: 0.5rem;
327
- padding: 0.375rem 0.875rem;
328
- border-radius: 1.25rem;
329
- backdrop-filter: blur(10px);
330
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
331
- cursor: pointer;
332
- position: relative;
333
- overflow: visible;
334
- height: fit-content;
335
- max-height: 2.25rem;
336
- }
337
-
338
- .header-info-card-blue {
339
- background: linear-gradient(135deg, rgba(37, 99, 235, 0.1) 0%, rgba(59, 130, 246, 0.06) 100%);
340
- border: 1px solid rgba(37, 99, 235, 0.2);
341
- box-shadow: 0 2px 6px rgba(37, 99, 235, 0.08),
342
- 0 1px 2px rgba(0, 0, 0, 0.04);
343
- }
344
-
345
- .header-info-card-green {
346
- background: linear-gradient(135deg, rgba(16, 185, 129, 0.1) 0%, rgba(34, 197, 94, 0.06) 100%);
347
- border: 1px solid rgba(16, 185, 129, 0.2);
348
- box-shadow: 0 2px 6px rgba(16, 185, 129, 0.08),
349
- 0 1px 2px rgba(0, 0, 0, 0.04);
350
- }
351
-
352
- .header-info-card::before {
353
- content: '';
354
- position: absolute;
355
- top: 50%;
356
- left: 50%;
357
- width: 100%;
358
- height: 100%;
359
- background: radial-gradient(circle, rgba(255, 255, 255, 0.12) 0%, transparent 70%);
360
- transform: translate(-50%, -50%) scale(0);
361
- transition: transform 0.5s ease-out;
362
- pointer-events: none;
363
- }
364
-
365
- .header-info-card:hover::before {
366
- transform: translate(-50%, -50%) scale(2);
367
- }
368
-
369
- .header-info-card-blue:hover {
370
- transform: translateY(-2px);
371
- box-shadow: 0 4px 12px rgba(37, 99, 235, 0.18),
372
- 0 2px 4px rgba(0, 0, 0, 0.06);
373
- border-color: rgba(37, 99, 235, 0.35);
374
- background: linear-gradient(135deg, rgba(37, 99, 235, 0.14) 0%, rgba(59, 130, 246, 0.08) 100%);
375
- }
376
-
377
- .header-info-card-green:hover {
378
- transform: translateY(-2px);
379
- box-shadow: 0 4px 12px rgba(16, 185, 129, 0.18),
380
- 0 2px 4px rgba(0, 0, 0, 0.06);
381
- border-color: rgba(16, 185, 129, 0.35);
382
- background: linear-gradient(135deg, rgba(16, 185, 129, 0.14) 0%, rgba(34, 197, 94, 0.08) 100%);
383
- }
384
-
385
- .header-info-card:active {
386
- transform: translateY(0) scale(0.98);
387
- transition: all 0.1s ease;
388
- }
389
-
390
- .header-info-icon {
391
- display: flex;
392
- align-items: center;
393
- justify-content: center;
394
- width: 1.25rem;
395
- height: 1.25rem;
396
- flex-shrink: 0;
397
- }
398
-
399
- .header-info-card-blue .header-info-icon {
400
- color: #2563eb;
401
- }
402
-
403
- .header-info-card-green .header-info-icon {
404
- color: #10b981;
405
- }
406
-
407
- .header-info-content {
408
- display: flex;
409
- flex-direction: column;
410
- gap: 0.0625rem;
411
- min-width: 0;
412
- }
413
-
414
- .header-info-label {
415
- font-size: 0.5625rem;
416
- text-transform: uppercase;
417
- letter-spacing: 0.08em;
418
- font-weight: 700;
419
- line-height: 1;
420
- white-space: nowrap;
421
- }
422
-
423
- .header-info-card-blue .header-info-label {
424
- color: #1d4ed8;
425
- opacity: 0.85;
426
- }
427
-
428
- .header-info-card-green .header-info-label {
429
- color: #059669;
430
- opacity: 0.85;
431
- }
432
-
433
- .header-info-value {
434
- font-size: 0.8125rem;
435
- font-weight: 700;
436
- white-space: nowrap;
437
- letter-spacing: -0.01em;
438
- line-height: 1.2;
439
- }
440
-
441
- .header-info-card-blue .header-info-value {
442
- color: #1e3a8a;
443
- }
444
-
445
- .header-info-card-green .header-info-value {
446
- color: #065f46;
447
- }
448
-
449
- .header-info-card:hover .header-info-label,
450
- .header-info-card:hover .header-info-value {
451
- opacity: 1;
452
- }
453
-
454
- .header-info-card.selectable {
455
- cursor: pointer;
456
- padding-right: 0.625rem;
457
- }
458
-
459
- .header-info-chevron {
460
- display: flex;
461
- align-items: center;
462
- justify-content: center;
463
- margin-left: 0.25rem;
464
- transition: transform 0.3s ease;
465
- opacity: 0.7;
466
- }
467
-
468
- .header-info-card:hover .header-info-chevron {
469
- opacity: 1;
470
- }
471
-
472
- .header-info-dropdown {
473
- position: absolute;
474
- top: calc(100% + 0.5rem);
475
- left: 0;
476
- right: 0;
477
- background: var(--glass-bg);
478
- border-radius: 0.75rem;
479
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15),
480
- 0 4px 8px rgba(0, 0, 0, 0.1);
481
- backdrop-filter: blur(12px);
482
- z-index: 1000;
483
- overflow: hidden;
484
- animation: dropdownSlideIn 0.2s ease-out;
485
- min-width: 180px;
486
- }
487
-
488
- @keyframes dropdownSlideIn {
489
- from {
490
- opacity: 0;
491
- transform: translateY(-8px);
492
- }
493
- to {
494
- opacity: 1;
495
- transform: translateY(0);
496
- }
497
- }
498
-
499
- .header-info-dropdown-blue {
500
- border: 1px solid rgba(37, 99, 235, 0.3);
501
- }
502
-
503
- .header-info-dropdown-green {
504
- border: 1px solid rgba(16, 185, 129, 0.3);
505
- }
506
-
507
- .header-info-dropdown-item {
508
- display: flex;
509
- align-items: center;
510
- justify-content: space-between;
511
- padding: 0.625rem 0.875rem;
512
- font-size: 0.8125rem;
513
- font-weight: 500;
514
- color: var(--text-primary);
515
- transition: all 0.2s ease;
516
- cursor: pointer;
517
- gap: 0.5rem;
518
- }
519
-
520
- .header-info-dropdown-item:hover {
521
- background: rgba(37, 99, 235, 0.08);
522
- }
523
-
524
- .header-info-dropdown-blue .header-info-dropdown-item:hover {
525
- background: rgba(37, 99, 235, 0.12);
526
- color: #1e40af;
527
- }
528
-
529
- .header-info-dropdown-green .header-info-dropdown-item:hover {
530
- background: rgba(16, 185, 129, 0.12);
531
- color: #047857;
532
- }
533
-
534
- .header-info-dropdown-item.active {
535
- font-weight: 700;
536
- background: rgba(37, 99, 235, 0.1);
537
- }
538
-
539
- .header-info-dropdown-blue .header-info-dropdown-item.active {
540
- background: rgba(37, 99, 235, 0.15);
541
- color: #1e40af;
542
- }
543
-
544
- .header-info-dropdown-green .header-info-dropdown-item.active {
545
- background: rgba(16, 185, 129, 0.15);
546
- color: #047857;
547
- }
548
-
549
- .header-info-dropdown-item svg {
550
- flex-shrink: 0;
551
- }
552
-
553
- .app-logo {
554
- display: flex;
555
- align-items: center;
556
- gap: 0.5rem;
557
- font-size: 1.125rem;
558
- font-weight: 700;
559
- background: var(--accent-gradient);
560
- -webkit-background-clip: text;
561
- -webkit-text-fill-color: transparent;
562
- background-clip: text;
563
- white-space: nowrap;
564
- flex-shrink: 0;
565
- }
566
-
567
- .logo-image {
568
- flex-shrink: 0;
569
- border-radius: 0.375rem;
570
- }
571
-
572
- .breadcrumb-container {
573
- display: flex;
574
- align-items: center;
575
- font-size: 0.75rem;
576
- opacity: 0.8;
577
- margin-left: 1rem;
578
- }
579
-
580
- .breadcrumb {
581
- display: flex;
582
- align-items: center;
583
- gap: 0.375rem;
584
- color: var(--text-secondary);
585
- }
586
-
587
- .breadcrumb-item {
588
- display: flex;
589
- align-items: center;
590
- gap: 0.25rem;
591
- }
592
-
593
- .breadcrumb-link {
594
- color: var(--text-secondary);
595
- text-decoration: none;
596
- transition: color 0.2s ease;
597
- }
598
-
599
- .breadcrumb-link:hover {
600
- color: var(--accent-primary);
601
- }
602
-
603
- .breadcrumb-current {
604
- color: var(--accent-primary);
605
- font-weight: 500;
606
- }
607
-
608
- .breadcrumb-separator {
609
- color: var(--text-muted);
610
- opacity: 0.6;
611
- }
612
-
613
- .layout-body {
614
- display: flex;
615
- height: calc(100vh - var(--header-height) - var(--footer-height));
616
- margin-top: var(--header-height);
617
- overflow: hidden;
618
- }
619
-
620
- .layout-body.footer-hidden {
621
- height: calc(100vh - var(--header-height));
622
- }
623
-
624
- .layout-sidebar {
625
- width: var(--sidebar-width);
626
- background: var(--glass-bg);
627
- backdrop-filter: blur(15px);
628
- border-right: 1px solid var(--border-color);
629
- overflow-y: auto;
630
- overflow-x: hidden;
631
- transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1), transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
632
- flex-shrink: 0;
633
- will-change: width;
634
- backface-visibility: hidden;
635
- contain: layout style paint;
636
- }
637
-
638
- .layout-sidebar.collapsed {
639
- width: var(--sidebar-collapsed-width);
640
- overflow-y: hidden;
641
- }
642
-
643
- .layout-sidebar.mobile-hidden {
644
- transform: translateX(-100%);
645
- width: 0;
646
- }
647
-
648
- .layout-main {
649
- flex: 1;
650
- display: flex;
651
- flex-direction: column;
652
- background: var(--bg-gradient);
653
- min-width: 0;
654
- width: 100%;
655
- height: 100%;
656
- overflow: hidden;
657
- box-sizing: border-box;
658
- }
659
-
660
- .layout-footer {
661
- position: fixed;
662
- bottom: 0;
663
- left: 0;
664
- right: 0;
665
- height: var(--footer-height);
666
- background: var(--glass-bg);
667
- backdrop-filter: blur(15px);
668
- border-top: 1px solid var(--border-color);
669
- display: flex;
670
- align-items: center;
671
- justify-content: space-between;
672
- padding: 0 1rem;
673
- z-index: 1000;
674
- box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);
675
- font-size: 0.7rem;
676
- color: var(--text-secondary);
677
- transition: transform 0.3s ease;
678
- }
679
-
680
- .layout-footer.hidden {
681
- transform: translateY(100%);
682
- visibility: hidden;
683
- opacity: 0;
684
- }
685
-
686
- .footer-left {
687
- display: flex;
688
- align-items: center;
689
- gap: 0.75rem;
690
- }
691
-
692
- .footer-environment {
693
- display: flex;
694
- align-items: center;
695
- gap: 0.25rem;
696
- padding: 0.125rem 0.375rem;
697
- border-radius: 0.375rem;
698
- font-weight: 500;
699
- font-size: 0.625rem;
700
- }
701
-
702
- .env-development {
703
- background: var(--danger);
704
- color: white;
705
- }
706
-
707
- .env-staging {
708
- background: var(--warning);
709
- color: white;
710
- }
711
-
712
- .env-production {
713
- background: var(--success);
714
- color: white;
715
- }
716
-
717
- .env-uat {
718
- background: var(--info);
719
- color: white;
720
- }
721
-
722
- .footer-right {
723
- display: flex;
724
- align-items: center;
725
- gap: 0.75rem;
726
- }
727
-
728
- .footer-support {
729
- color: var(--accent-primary);
730
- text-decoration: none;
731
- transition: opacity 0.2s ease;
732
- }
733
-
734
- .footer-support:hover {
735
- opacity: 0.8;
736
- }
737
-
738
- .content-wrapper {
739
- display: flex;
740
- flex-direction: column;
741
- height: 100%;
742
- overflow: hidden;
743
- width: 100%;
744
- }
745
-
746
- .tab-bar {
747
- display: flex;
748
- align-items: center;
749
- background: var(--glass-bg);
750
- border-bottom: 1px solid var(--border-color);
751
- padding: 0;
752
- margin: 0;
753
- min-height: var(--tab-bar-height);
754
- overflow-x: hidden;
755
- flex-shrink: 0;
756
- gap: 0.25rem;
757
- transition: all 0.3s ease;
758
- width: 100%;
759
- box-sizing: border-box;
760
- }
761
-
762
- .tab-bar.hidden {
763
- display: none;
764
- }
765
-
766
- .single-page-header {
767
- display: flex;
768
- align-items: center;
769
- justify-content: space-between;
770
- background: var(--glass-bg);
771
- border-bottom: 1px solid var(--border-color);
772
- padding: 0.5rem 1.25rem;
773
- flex-shrink: 0;
774
- }
775
-
776
- .page-title {
777
- font-size: 1.125rem;
778
- font-weight: 600;
779
- color: var(--text-primary);
780
- }
781
-
782
- .back-button {
783
- display: flex;
784
- align-items: center;
785
- gap: 0.5rem;
786
- padding: 0.375rem 0.75rem;
787
- background: transparent;
788
- border: 1px solid var(--border-color);
789
- border-radius: 0.5rem;
790
- color: var(--text-secondary);
791
- text-decoration: none;
792
- font-size: 0.8rem;
793
- transition: all 0.3s ease;
794
- cursor: pointer;
795
- }
796
-
797
- .back-button:hover {
798
- background: var(--bg-secondary);
799
- color: var(--text-primary);
800
- border-color: var(--border-color);
801
- }
802
-
803
- .tab {
804
- display: flex;
805
- align-items: center;
806
- gap: 0.5rem;
807
- padding: 0.375rem 0.5rem;
808
- margin: 0;
809
- background: var(--bg-secondary);
810
- border: 1px solid var(--border-color);
811
- border-bottom: none;
812
- border-radius: 0.75rem 0.75rem 0 0;
813
- cursor: pointer;
814
- transition: all 0.3s ease;
815
- white-space: nowrap;
816
- min-width: 100px;
817
- max-width: 180px;
818
- font-size: 0.8rem;
819
- color: var(--text-secondary);
820
- }
821
-
822
- .tab:hover {
823
- background: var(--bg-primary);
824
- color: var(--text-primary);
825
- }
826
-
827
- .tab.active {
828
- background: var(--bg-primary);
829
- border-color: var(--accent-primary);
830
- color: var(--accent-primary);
831
- box-shadow: 0 -2px 4px rgba(37, 99, 235, 0.1);
832
- }
833
-
834
- .tab-title {
835
- flex: 1;
836
- overflow: hidden;
837
- text-overflow: ellipsis;
838
- white-space: nowrap;
839
- min-width: 0;
840
- }
841
-
842
- .tab-close {
843
- display: flex;
844
- align-items: center;
845
- justify-content: center;
846
- width: 1rem;
847
- height: 1rem;
848
- border-radius: 50%;
849
- background: none;
850
- border: none;
851
- cursor: pointer;
852
- color: var(--text-muted);
853
- transition: all 0.3s ease;
854
- flex-shrink: 0;
855
- }
856
-
857
- .tab-close:hover {
858
- background: var(--border-color);
859
- color: var(--text-secondary);
860
- }
861
-
862
- .tab.active .tab-close:hover {
863
- background: rgba(37, 99, 235, 0.1);
864
- color: var(--accent-primary);
865
- }
866
-
867
- /* Tab overflow menu styles for mobile */
868
- .tab-bar-wrapper {
869
- display: flex;
870
- align-items: center;
871
- width: 100%;
872
- background: var(--glass-bg);
873
- border-bottom: 1px solid var(--border-color);
874
- min-height: var(--tab-bar-height);
875
- }
876
-
877
- .tab-bar-visible {
878
- display: flex;
879
- align-items: center;
880
- gap: 0.25rem;
881
- flex: 1;
882
- overflow: hidden;
883
- min-height: var(--tab-bar-height);
884
- }
885
-
886
- .tab-more-container {
887
- position: relative;
888
- flex-shrink: 0;
889
- }
890
-
891
- .tab-more-btn {
892
- display: none;
893
- align-items: center;
894
- gap: 0.25rem;
895
- padding: 0.375rem 0.75rem;
896
- background: var(--bg-secondary);
897
- border: 1px solid var(--border-color);
898
- border-radius: 0.5rem;
899
- cursor: pointer;
900
- font-size: 0.8rem;
901
- color: var(--text-secondary);
902
- transition: all 0.3s ease;
903
- margin-right: 0.5rem;
904
- white-space: nowrap;
905
- }
906
-
907
- .tab-more-btn:hover {
908
- background: var(--bg-primary);
909
- color: var(--accent-primary);
910
- border-color: var(--accent-primary);
911
- }
912
-
913
- .tab-more-btn.active {
914
- background: var(--accent-primary);
915
- color: white;
916
- border-color: var(--accent-primary);
917
- }
918
-
919
- .tab-overflow-menu {
920
- position: absolute;
921
- top: 100%;
922
- right: 0;
923
- min-width: 200px;
924
- max-width: 280px;
925
- background: var(--glass-bg);
926
- backdrop-filter: blur(15px);
927
- border: 1px solid var(--border-color);
928
- border-radius: 0.75rem;
929
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
930
- padding: 0.5rem;
931
- z-index: 1002;
932
- margin-top: 0.25rem;
933
- opacity: 0;
934
- visibility: hidden;
935
- transform: translateY(-10px);
936
- transition: all 0.3s ease;
937
- }
938
-
939
- .tab-overflow-menu.open {
940
- opacity: 1;
941
- visibility: visible;
942
- transform: translateY(0);
943
- }
944
-
945
- .tab-overflow-item {
946
- display: flex;
947
- align-items: center;
948
- justify-content: space-between;
949
- padding: 0.5rem 0.75rem;
950
- border-radius: 0.5rem;
951
- cursor: pointer;
952
- font-size: 0.8rem;
953
- color: var(--text-secondary);
954
- transition: all 0.3s ease;
955
- gap: 0.5rem;
956
- }
957
-
958
- .tab-overflow-item:hover {
959
- background: var(--bg-secondary);
960
- color: var(--text-primary);
961
- }
962
-
963
- .tab-overflow-item.active {
964
- background: rgba(37, 99, 235, 0.1);
965
- color: var(--accent-primary);
966
- }
967
-
968
- .tab-overflow-item-title {
969
- flex: 1;
970
- overflow: hidden;
971
- text-overflow: ellipsis;
972
- white-space: nowrap;
973
- }
974
-
975
- .tab-overflow-item-close {
976
- display: flex;
977
- align-items: center;
978
- justify-content: center;
979
- width: 1.25rem;
980
- height: 1.25rem;
981
- border-radius: 50%;
982
- background: none;
983
- border: none;
984
- cursor: pointer;
985
- color: var(--text-muted);
986
- transition: all 0.3s ease;
987
- flex-shrink: 0;
988
- }
989
-
990
- .tab-overflow-item-close:hover {
991
- background: var(--border-color);
992
- color: var(--danger);
993
- }
994
-
995
- .tab-content-area {
996
- flex: 1;
997
- overflow: hidden;
998
- width: 100%;
999
- height: 100%;
1000
- min-height: 0;
1001
- background: var(--bg-gradient);
1002
- box-sizing: border-box;
1003
- }
1004
-
1005
- .enterprise-module {
1006
- display: none;
1007
- width: 100%;
1008
- height: 100%;
1009
- overflow: hidden;
1010
- box-sizing: border-box;
1011
- }
1012
-
1013
- .enterprise-module.active {
1014
- display: block;
1015
- }
1016
-
1017
- .module-header {
1018
- background: var(--glass-bg);
1019
- backdrop-filter: blur(15px);
1020
- border: 1px solid var(--border-color);
1021
- border-radius: 1rem;
1022
- padding: 0.75rem 1.25rem;
1023
- margin: 0.75rem 1.25rem 0 1.25rem;
1024
- box-shadow: var(--shadow);
1025
- display: flex;
1026
- align-items: flex-start;
1027
- justify-content: space-between;
1028
- gap: 1rem;
1029
- flex-shrink: 0;
1030
- }
1031
-
1032
- .module-header-content {
1033
- flex: 1;
1034
- text-align: left;
1035
- }
1036
-
1037
- .module-title {
1038
- font-size: 1.25rem;
1039
- font-weight: 700;
1040
- background: var(--accent-gradient);
1041
- -webkit-background-clip: text;
1042
- -webkit-text-fill-color: transparent;
1043
- background-clip: text;
1044
- margin-bottom: 0.375rem;
1045
- line-height: 1.2;
1046
- }
1047
-
1048
- .module-description {
1049
- font-size: 0.8rem;
1050
- color: var(--text-secondary);
1051
- margin-bottom: 0;
1052
- line-height: 1.3;
1053
- }
1054
-
1055
- .module-actions {
1056
- display: flex;
1057
- align-items: flex-start;
1058
- gap: 0.75rem;
1059
- flex-wrap: wrap;
1060
- flex-shrink: 0;
1061
- }
1062
-
1063
- .module-content {
1064
- padding: 0 1.25rem 2rem 1.25rem;
1065
- max-width: 100%;
1066
- overflow: hidden;
1067
- }
1068
-
1069
- .layout-body.footer-hidden .module-content {
1070
- padding-bottom: 0;
1071
- }
1072
-
1073
- .btn {
1074
- display: inline-flex;
1075
- align-items: center;
1076
- justify-content: center;
1077
- gap: 0.375rem;
1078
- padding: 0.5rem 1rem;
1079
- font-size: 0.8rem;
1080
- font-weight: 500;
1081
- border: none;
1082
- border-radius: 0.75rem;
1083
- cursor: pointer;
1084
- text-decoration: none;
1085
- transition: all 0.3s ease;
1086
- white-space: nowrap;
1087
- }
1088
-
1089
- .btn-primary {
1090
- background: var(--accent-gradient);
1091
- color: white;
1092
- box-shadow: 0 4px 15px rgba(37, 99, 235, 0.3);
1093
- }
1094
-
1095
- .btn-primary:hover {
1096
- transform: translateY(-2px);
1097
- box-shadow: 0 8px 25px rgba(37, 99, 235, 0.4);
1098
- }
1099
-
1100
- .btn-secondary {
1101
- background: var(--glass-bg);
1102
- color: var(--text-primary);
1103
- border: 1px solid var(--border-color);
1104
- }
1105
-
1106
- .btn-secondary:hover {
1107
- background: var(--bg-secondary);
1108
- transform: translateY(-2px);
1109
- }
1110
-
1111
- .nav-section {
1112
- padding: 0.75rem 0 0 0;
1113
- border-bottom: 1px solid var(--border-color);
1114
- }
1115
-
1116
- .nav-section:last-child {
1117
- border-bottom: none;
1118
- }
1119
-
1120
- .nav-section-header {
1121
- display: flex;
1122
- align-items: center;
1123
- justify-content: space-between;
1124
- padding: 0.5rem 1rem;
1125
- cursor: pointer;
1126
- transition: all 0.3s ease;
1127
- border-radius: 0.75rem;
1128
- margin: 0 0.75rem 0.375rem 0.75rem;
1129
- position: relative;
1130
- }
1131
-
1132
- .nav-section-header:hover {
1133
- background: var(--bg-secondary);
1134
- }
1135
-
1136
- .nav-section-title {
1137
- font-size: 0.6875rem;
1138
- font-weight: 600;
1139
- color: var(--text-secondary);
1140
- text-transform: uppercase;
1141
- letter-spacing: 0.075em;
1142
- margin: 0;
1143
- flex: 1;
1144
- }
1145
-
1146
- .nav-chevron {
1147
- color: var(--text-muted);
1148
- transition: all 0.2s ease;
1149
- display: flex;
1150
- align-items: center;
1151
- justify-content: center;
1152
- }
1153
-
1154
- .nav-section-header.expanded .nav-chevron {
1155
- transform: rotate(0deg);
1156
- }
1157
-
1158
- .nav-section-header.collapsed .nav-chevron {
1159
- transform: rotate(-90deg);
1160
- }
1161
-
1162
- .nav-section-content {
1163
- overflow: hidden;
1164
- transition: all 0.3s ease;
1165
- padding-bottom: 0.75rem;
1166
- }
1167
-
1168
- .nav-section-content.expanded {
1169
- max-height: 500px;
1170
- opacity: 1;
1171
- }
1172
-
1173
- .nav-section-content.collapsed {
1174
- max-height: 0;
1175
- opacity: 0;
1176
- padding-bottom: 0;
1177
- }
1178
-
1179
- .nav-menu {
1180
- list-style: none;
1181
- }
1182
-
1183
- .nav-item {
1184
- margin: 0 0.75rem;
1185
- }
1186
-
1187
- .nav-link {
1188
- display: flex;
1189
- align-items: center;
1190
- gap: 0.75rem;
1191
- padding: 0.5rem 0.75rem;
1192
- color: var(--text-secondary);
1193
- text-decoration: none;
1194
- border-radius: 0.75rem;
1195
- transition: all 0.3s ease;
1196
- font-size: 0.8rem;
1197
- position: relative;
1198
- }
1199
-
1200
- .nav-link:hover,
1201
- .nav-link.active {
1202
- background: var(--accent-gradient);
1203
- color: white;
1204
- transform: translateX(4px);
1205
- box-shadow: var(--shadow);
1206
- }
1207
-
1208
- /* NEW: Multi-level menu styles */
1209
- .nav-sub-menu {
1210
- margin-left: 1.5rem;
1211
- border-left: 1px solid var(--border-color);
1212
- padding-left: 0.5rem;
1213
- margin-top: 0.25rem;
1214
- list-style: none;
1215
- }
1216
-
1217
- .nav-sub-item {
1218
- margin: 0 0.5rem;
1219
- }
1220
-
1221
- .nav-sub-link {
1222
- display: flex;
1223
- align-items: center;
1224
- gap: 0.5rem;
1225
- padding: 0.375rem 0.5rem;
1226
- color: var(--text-muted);
1227
- text-decoration: none;
1228
- border-radius: 0.5rem;
1229
- transition: all 0.3s ease;
1230
- font-size: 0.75rem;
1231
- position: relative;
1232
- }
1233
-
1234
- .nav-sub-link:hover,
1235
- .nav-sub-link.active {
1236
- background: var(--accent-gradient);
1237
- color: white;
1238
- transform: translateX(2px);
1239
- box-shadow: var(--shadow);
1240
- }
1241
-
1242
- .nav-item-with-children > .nav-link {
1243
- position: relative;
1244
- }
1245
-
1246
- .nav-item-expand {
1247
- position: absolute;
1248
- right: 0.5rem;
1249
- color: var(--text-muted);
1250
- transition: all 0.2s ease;
1251
- display: flex;
1252
- align-items: center;
1253
- justify-content: center;
1254
- }
1255
-
1256
- .nav-item-expand.expanded {
1257
- transform: rotate(90deg);
1258
- }
1259
-
1260
- .nav-badge {
1261
- background: var(--danger);
1262
- color: white;
1263
- font-size: 0.625rem;
1264
- padding: 0.125rem 0.3rem;
1265
- border-radius: 0.5rem;
1266
- margin-left: auto;
1267
- font-weight: 600;
1268
- }
1269
-
1270
- .menu-toggle {
1271
- background: none;
1272
- border: none;
1273
- padding: 0.5rem;
1274
- border-radius: 0.75rem;
1275
- cursor: pointer;
1276
- color: var(--text-secondary);
1277
- transition: all 0.3s ease;
1278
- }
1279
-
1280
- .menu-toggle:hover {
1281
- background: var(--bg-secondary);
1282
- color: var(--text-primary);
1283
- }
1284
-
1285
- .persona-control {
1286
- position: relative;
1287
- display: flex;
1288
- align-items: center;
1289
- gap: 0.375rem;
1290
- padding: 0.375rem;
1291
- border-radius: 0.75rem;
1292
- cursor: pointer;
1293
- transition: all 0.3s ease;
1294
- flex-shrink: 0;
1295
- }
1296
-
1297
- .persona-control:hover {
1298
- background: var(--bg-secondary);
1299
- }
1300
-
1301
- .persona-avatar {
1302
- width: 2rem;
1303
- height: 2rem;
1304
- border-radius: 50%;
1305
- background: var(--accent-gradient);
1306
- display: flex;
1307
- align-items: center;
1308
- justify-content: center;
1309
- color: white;
1310
- font-weight: 600;
1311
- font-size: 0.75rem;
1312
- flex-shrink: 0;
1313
- }
1314
-
1315
- .persona-role {
1316
- font-size: 0.75rem;
1317
- color: var(--text-secondary);
1318
- white-space: nowrap;
1319
- overflow: hidden;
1320
- text-overflow: ellipsis;
1321
- max-width: 100px;
1322
- }
1323
-
1324
- .persona-panel {
1325
- position: absolute;
1326
- top: 100%;
1327
- right: 0;
1328
- width: 300px;
1329
- background: var(--glass-bg);
1330
- backdrop-filter: blur(15px);
1331
- border: 2px solid rgba(203, 213, 225, 0.8);
1332
- border-radius: 1rem;
1333
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
1334
- padding: 1rem;
1335
- z-index: 1001;
1336
- margin-top: 0.5rem;
1337
- opacity: 0;
1338
- visibility: hidden;
1339
- transform: translateY(-10px);
1340
- transition: all 0.3s ease;
1341
- }
1342
-
1343
- .persona-panel.open {
1344
- opacity: 1;
1345
- visibility: visible;
1346
- transform: translateY(0);
1347
- }
1348
-
1349
- .persona-panel-header {
1350
- display: flex;
1351
- align-items: center;
1352
- gap: 0.75rem;
1353
- padding-bottom: 0.75rem;
1354
- margin-bottom: 0.75rem;
1355
- border-bottom: 2px solid rgba(226, 232, 240, 0.9);
1356
- }
1357
-
1358
- .persona-panel-avatar {
1359
- width: 2.5rem;
1360
- height: 2.5rem;
1361
- border-radius: 50%;
1362
- background: var(--accent-gradient);
1363
- display: flex;
1364
- align-items: center;
1365
- justify-content: center;
1366
- color: white;
1367
- font-weight: 600;
1368
- font-size: 0.875rem;
1369
- }
1370
-
1371
- .persona-panel-info h3 {
1372
- font-size: 0.875rem;
1373
- font-weight: 600;
1374
- color: var(--text-primary);
1375
- margin-bottom: 0.125rem;
1376
- }
1377
-
1378
- .persona-panel-info p {
1379
- font-size: 0.75rem;
1380
- color: var(--text-secondary);
1381
- }
1382
-
1383
- .persona-panel-section {
1384
- padding-bottom: 0.75rem;
1385
- margin-bottom: 0.75rem;
1386
- border-bottom: 1px solid rgba(226, 232, 240, 0.8);
1387
- }
1388
-
1389
- .persona-panel-section:last-child {
1390
- margin-bottom: 0;
1391
- padding-bottom: 0;
1392
- border-bottom: none;
1393
- }
1394
-
1395
- .persona-panel-section h4 {
1396
- font-size: 0.75rem;
1397
- font-weight: 600;
1398
- color: var(--text-secondary);
1399
- text-transform: uppercase;
1400
- letter-spacing: 0.05em;
1401
- margin-bottom: 0.5rem;
1402
- }
1403
-
1404
- .persona-panel-controls {
1405
- display: flex;
1406
- flex-direction: column;
1407
- gap: 0.375rem;
1408
- }
1409
-
1410
- .persona-control-item {
1411
- display: flex;
1412
- align-items: center;
1413
- justify-content: space-between;
1414
- padding: 0.5rem 0.75rem;
1415
- border-radius: 0.5rem;
1416
- border: 1px solid transparent;
1417
- transition: all 0.3s ease;
1418
- cursor: pointer;
1419
- font-size: 0.8rem;
1420
- }
1421
-
1422
- .persona-control-item:hover {
1423
- background: var(--bg-secondary);
1424
- border-color: rgba(203, 213, 225, 0.7);
1425
- }
1426
-
1427
- .persona-control-item.action {
1428
- color: var(--text-primary);
1429
- }
1430
-
1431
- .persona-control-item.action:hover {
1432
- color: var(--accent-primary);
1433
- }
1434
-
1435
- .persona-control-item.danger:hover {
1436
- background: rgba(220, 38, 38, 0.1);
1437
- color: var(--danger);
1438
- }
1439
-
1440
- .persona-control-label {
1441
- display: flex;
1442
- align-items: center;
1443
- gap: 0.5rem;
1444
- }
1445
-
1446
- /* Notification Panel */
1447
- .notification-bell {
1448
- position: relative;
1449
- display: flex;
1450
- align-items: center;
1451
- justify-content: center;
1452
- width: 2.5rem;
1453
- height: 2.5rem;
1454
- border-radius: 50%;
1455
- cursor: pointer;
1456
- transition: all 0.3s ease;
1457
- background: transparent;
1458
- }
1459
-
1460
- .notification-bell:hover {
1461
- background: var(--bg-secondary);
1462
- }
1463
-
1464
- .notification-badge {
1465
- position: absolute;
1466
- top: 0.25rem;
1467
- right: 0.25rem;
1468
- background: var(--danger);
1469
- color: white;
1470
- font-size: 0.625rem;
1471
- font-weight: 600;
1472
- min-width: 1.125rem;
1473
- height: 1.125rem;
1474
- border-radius: 0.5625rem;
1475
- display: flex;
1476
- align-items: center;
1477
- justify-content: center;
1478
- padding: 0 0.25rem;
1479
- border: 2px solid var(--glass-bg);
1480
- }
1481
-
1482
- .notification-panel {
1483
- position: absolute;
1484
- top: 100%;
1485
- right: 0;
1486
- width: 380px;
1487
- max-height: 500px;
1488
- background: var(--glass-bg);
1489
- backdrop-filter: blur(15px);
1490
- border: 2px solid rgba(203, 213, 225, 0.8);
1491
- border-radius: 1rem;
1492
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
1493
- z-index: 1001;
1494
- margin-top: 0.5rem;
1495
- opacity: 0;
1496
- visibility: hidden;
1497
- transform: translateY(-10px);
1498
- transition: all 0.3s ease;
1499
- display: flex;
1500
- flex-direction: column;
1501
- }
1502
-
1503
- .notification-panel.open {
1504
- opacity: 1;
1505
- visibility: visible;
1506
- transform: translateY(0);
1507
- }
1508
-
1509
- .notification-panel-header {
1510
- display: flex;
1511
- align-items: center;
1512
- justify-content: space-between;
1513
- padding: 1rem 1.25rem;
1514
- border-bottom: 2px solid rgba(226, 232, 240, 0.9);
1515
- }
1516
-
1517
- .notification-panel-title {
1518
- font-size: 1rem;
1519
- font-weight: 600;
1520
- color: var(--text-primary);
1521
- }
1522
-
1523
- .notification-panel-actions {
1524
- display: flex;
1525
- gap: 0.5rem;
1526
- }
1527
-
1528
- .notification-action-btn {
1529
- font-size: 0.75rem;
1530
- color: var(--primary);
1531
- background: transparent;
1532
- border: none;
1533
- cursor: pointer;
1534
- padding: 0.25rem 0.5rem;
1535
- border-radius: 0.375rem;
1536
- transition: all 0.2s ease;
1537
- }
1538
-
1539
- .notification-action-btn:hover {
1540
- background: rgba(37, 99, 235, 0.1);
1541
- }
1542
-
1543
- .notification-panel-content {
1544
- flex: 1;
1545
- overflow-y: auto;
1546
- padding: 0.5rem;
1547
- }
1548
-
1549
- .notification-item {
1550
- display: flex;
1551
- gap: 0.75rem;
1552
- padding: 0.875rem;
1553
- margin-bottom: 0.5rem;
1554
- border-radius: 0.75rem;
1555
- cursor: pointer;
1556
- transition: all 0.2s ease;
1557
- border: 1px solid transparent;
1558
- }
1559
-
1560
- .notification-item:hover {
1561
- background: var(--bg-secondary);
1562
- border-color: rgba(203, 213, 225, 0.7);
1563
- }
1564
-
1565
- .notification-item.unread {
1566
- background: rgba(37, 99, 235, 0.05);
1567
- }
1568
-
1569
- .notification-icon {
1570
- flex-shrink: 0;
1571
- width: 2.5rem;
1572
- height: 2.5rem;
1573
- border-radius: 50%;
1574
- display: flex;
1575
- align-items: center;
1576
- justify-content: center;
1577
- font-size: 1.125rem;
1578
- }
1579
-
1580
- .notification-icon.success {
1581
- background: rgba(22, 163, 74, 0.1);
1582
- color: var(--success);
1583
- }
1584
-
1585
- .notification-icon.info {
1586
- background: rgba(37, 99, 235, 0.1);
1587
- color: var(--primary);
1588
- }
1589
-
1590
- .notification-icon.warning {
1591
- background: rgba(217, 119, 6, 0.1);
1592
- color: var(--warning);
1593
- }
1594
-
1595
- .notification-icon.error {
1596
- background: rgba(220, 38, 38, 0.1);
1597
- color: var(--danger);
1598
- }
1599
-
1600
- .notification-content {
1601
- flex: 1;
1602
- min-width: 0;
1603
- }
1604
-
1605
- .notification-title {
1606
- font-size: 0.875rem;
1607
- font-weight: 600;
1608
- color: var(--text-primary);
1609
- margin-bottom: 0.25rem;
1610
- }
1611
-
1612
- .notification-message {
1613
- font-size: 0.8rem;
1614
- color: var(--text-secondary);
1615
- margin-bottom: 0.375rem;
1616
- line-height: 1.4;
1617
- }
1618
-
1619
- .notification-time {
1620
- font-size: 0.7rem;
1621
- color: var(--text-muted);
1622
- }
1623
-
1624
- .notification-empty {
1625
- text-align: center;
1626
- padding: 3rem 2rem;
1627
- color: var(--text-muted);
1628
- }
1629
-
1630
- .notification-empty-icon {
1631
- font-size: 3rem;
1632
- margin-bottom: 1rem;
1633
- opacity: 0.3;
1634
- }
1635
-
1636
- .notification-filters {
1637
- display: flex;
1638
- align-items: center;
1639
- justify-content: space-between;
1640
- padding: 0.75rem 1rem;
1641
- border-bottom: 1px solid rgba(226, 232, 240, 0.8);
1642
- background: var(--bg-secondary);
1643
- }
1644
-
1645
- .notification-filter-tabs {
1646
- display: flex;
1647
- gap: 0.25rem;
1648
- background: white;
1649
- border-radius: 0.5rem;
1650
- padding: 0.25rem;
1651
- }
1652
-
1653
- .notification-filter-tab {
1654
- padding: 0.375rem 0.75rem;
1655
- font-size: 0.75rem;
1656
- font-weight: 500;
1657
- color: var(--text-secondary);
1658
- background: transparent;
1659
- border: none;
1660
- border-radius: 0.375rem;
1661
- cursor: pointer;
1662
- transition: all 0.2s ease;
1663
- }
1664
-
1665
- .notification-filter-tab:hover {
1666
- background: var(--bg-secondary);
1667
- }
1668
-
1669
- .notification-filter-tab.active {
1670
- background: var(--primary);
1671
- color: white;
1672
- }
1673
-
1674
- .notification-grouping-dropdown {
1675
- position: relative;
1676
- }
1677
-
1678
- .notification-grouping-btn {
1679
- display: flex;
1680
- align-items: center;
1681
- gap: 0.375rem;
1682
- padding: 0.375rem 0.625rem;
1683
- font-size: 0.75rem;
1684
- font-weight: 500;
1685
- color: var(--text-secondary);
1686
- background: white;
1687
- border: 1px solid var(--border-color);
1688
- border-radius: 0.375rem;
1689
- cursor: pointer;
1690
- transition: all 0.2s ease;
1691
- }
1692
-
1693
- .notification-grouping-btn:hover {
1694
- border-color: var(--primary);
1695
- color: var(--primary);
1696
- }
1697
-
1698
- .notification-group-header {
1699
- padding: 0.5rem 0.875rem;
1700
- font-size: 0.75rem;
1701
- font-weight: 600;
1702
- color: var(--text-secondary);
1703
- text-transform: uppercase;
1704
- letter-spacing: 0.05em;
1705
- background: var(--bg-secondary);
1706
- border-bottom: 1px solid rgba(226, 232, 240, 0.8);
1707
- margin-bottom: 0.25rem;
1708
- }
1709
-
1710
- .view-mode-toggle {
1711
- display: flex;
1712
- align-items: center;
1713
- background: var(--bg-secondary);
1714
- border: 1px solid var(--border-color);
1715
- border-radius: 0.5rem;
1716
- padding: 0.125rem;
1717
- gap: 0.125rem;
1718
- }
1719
-
1720
- .view-mode-btn {
1721
- display: flex;
1722
- align-items: center;
1723
- justify-content: center;
1724
- padding: 0.25rem 0.5rem;
1725
- border-radius: 0.375rem;
1726
- cursor: pointer;
1727
- transition: all 0.3s ease;
1728
- color: var(--text-secondary);
1729
- background: transparent;
1730
- border: none;
1731
- font-size: 0.75rem;
1732
- }
1733
-
1734
- .view-mode-btn.active {
1735
- background: var(--accent-gradient);
1736
- color: white;
1737
- }
1738
-
1739
- .theme-toggle {
1740
- display: flex;
1741
- align-items: center;
1742
- gap: 0.5rem;
1743
- }
1744
-
1745
- .theme-switch {
1746
- position: relative;
1747
- width: 2.5rem;
1748
- height: 1.25rem;
1749
- background: var(--bg-secondary);
1750
- border: 1px solid var(--border-color);
1751
- border-radius: 0.625rem;
1752
- cursor: pointer;
1753
- transition: all 0.3s ease;
1754
- }
1755
-
1756
- .theme-switch.active {
1757
- background: var(--accent-primary);
1758
- border-color: var(--accent-primary);
1759
- }
1760
-
1761
- .theme-switch-handle {
1762
- position: absolute;
1763
- top: 0.125rem;
1764
- left: 0.125rem;
1765
- width: 0.875rem;
1766
- height: 0.875rem;
1767
- background: white;
1768
- border-radius: 50%;
1769
- transition: all 0.3s ease;
1770
- }
1771
-
1772
- .theme-switch.active .theme-switch-handle {
1773
- transform: translateX(1.125rem);
1774
- }
1775
-
1776
- /* Compact Mode Styles */
1777
- .sidebar-collapsed .nav-section-title,
1778
- .sidebar-collapsed .nav-badge,
1779
- .sidebar-collapsed .persona-role {
1780
- display: none;
1781
- }
1782
-
1783
- .sidebar-collapsed .nav-link {
1784
- justify-content: center;
1785
- padding: 0.75rem;
1786
- margin: 0.25rem 0.5rem;
1787
- }
1788
-
1789
- .sidebar-collapsed .nav-section-header {
1790
- justify-content: center;
1791
- padding: 0.75rem;
1792
- margin: 0.25rem 0.5rem;
1793
- }
1794
-
1795
- .sidebar-collapsed .nav-chevron {
1796
- display: none;
1797
- }
1798
-
1799
- .sidebar-collapsed .nav-section-content {
1800
- display: none;
1801
- }
1802
-
1803
- /* Compact navigation specific styles */
1804
- .compact-navigation {
1805
- padding: 0.5rem 0;
1806
- width: 100%;
1807
- overflow: visible;
1808
- }
1809
-
1810
- .compact-nav-item {
1811
- margin: 0.25rem 0.5rem;
1812
- position: relative;
1813
- }
1814
-
1815
- .compact-nav-link {
1816
- display: flex;
1817
- align-items: center;
1818
- justify-content: center;
1819
- padding: 0.75rem;
1820
- color: var(--text-secondary);
1821
- text-decoration: none;
1822
- border-radius: 0.75rem;
1823
- transition: all 0.2s ease;
1824
- font-size: 0.8rem;
1825
- position: relative;
1826
- min-height: 3rem;
1827
- width: 100%;
1828
- box-sizing: border-box;
1829
- }
1830
-
1831
- .compact-nav-link:hover,
1832
- .compact-nav-link.active {
1833
- background: var(--accent-gradient);
1834
- color: white;
1835
- box-shadow: var(--shadow);
1836
- }
1837
-
1838
- .compact-nav-badge {
1839
- position: absolute;
1840
- top: 0.25rem;
1841
- right: 0.25rem;
1842
- background: var(--danger);
1843
- color: white;
1844
- font-size: 0.5rem;
1845
- padding: 0.125rem 0.25rem;
1846
- border-radius: 0.375rem;
1847
- font-weight: 600;
1848
- min-width: 1rem;
1849
- text-align: center;
1850
- line-height: 1;
1851
- }
1852
-
1853
- .section-tooltip {
1854
- position: relative;
1855
- }
1856
-
1857
- .section-tooltip::after {
1858
- content: attr(data-tooltip);
1859
- position: absolute;
1860
- left: calc(100% + 0.75rem);
1861
- top: 50%;
1862
- transform: translateY(-50%);
1863
- background: var(--glass-bg);
1864
- color: var(--text-primary);
1865
- padding: 0.5rem 0.75rem;
1866
- border-radius: 0.5rem;
1867
- font-size: 0.75rem;
1868
- white-space: nowrap;
1869
- z-index: 1000;
1870
- box-shadow: var(--shadow);
1871
- backdrop-filter: blur(15px);
1872
- border: 1px solid var(--border-color);
1873
- opacity: 0;
1874
- visibility: hidden;
1875
- transition: all 0.2s ease;
1876
- pointer-events: none;
1877
- }
1878
-
1879
- /* FIX: Only show tooltips after initialization */
1880
- .enterprise-layout.initialized .section-tooltip:hover::after {
1881
- opacity: 1;
1882
- visibility: visible;
1883
- }
1884
-
1885
- /* Tablet responsive styles */
1886
- @media (max-width: 1024px) and (min-width: 769px) {
1887
- /* Reduce header info card padding on tablets */
1888
- .header-info-card {
1889
- padding: 0.3rem 0.6rem;
1890
- gap: 0.4rem;
1891
- }
1892
-
1893
- .header-info-label {
1894
- font-size: 0.5rem;
1895
- }
1896
-
1897
- .header-info-value {
1898
- font-size: 0.75rem;
1899
- }
1900
-
1901
- .header-info-icon {
1902
- width: 1rem;
1903
- height: 1rem;
1904
- }
1905
-
1906
- .notification-bell {
1907
- width: 2.25rem;
1908
- height: 2.25rem;
1909
- }
1910
-
1911
- .logo-company {
1912
- font-size: 1.1rem;
1913
- }
1914
-
1915
- .logo-tagline {
1916
- font-size: 0.55rem;
1917
- }
1918
- }
1919
-
1920
- /* Mobile responsive styles */
1921
- @media (max-width: 768px) {
1922
- .mobile-overlay {
1923
- position: fixed;
1924
- top: var(--header-height);
1925
- left: 0;
1926
- right: 0;
1927
- bottom: 0;
1928
- background: rgba(0, 0, 0, 0.5);
1929
- z-index: 1000;
1930
- opacity: 0;
1931
- visibility: hidden;
1932
- transition: opacity 0.3s ease, visibility 0.3s ease;
1933
- }
1934
-
1935
- .mobile-overlay.visible {
1936
- opacity: 1;
1937
- visibility: visible;
1938
- }
1939
-
1940
- .layout-sidebar {
1941
- position: absolute;
1942
- top: var(--header-height);
1943
- left: 0;
1944
- height: calc(100% - var(--header-height));
1945
- width: 85vw;
1946
- max-width: var(--sidebar-width);
1947
- transform: translateX(-100%);
1948
- z-index: 1001;
1949
- }
1950
-
1951
- .layout-sidebar.mobile-open {
1952
- transform: translateX(0);
1953
- }
1954
-
1955
- .tab-bar {
1956
- padding: 0;
1957
- margin: 0;
1958
- width: 100%;
1959
- }
1960
-
1961
- /* Mobile tab overflow - show only 2 tabs + more button */
1962
- .tab-bar-visible .tab {
1963
- display: none;
1964
- }
1965
-
1966
- .tab-bar-visible .tab:nth-child(-n+2) {
1967
- display: flex;
1968
- }
1969
-
1970
- .tab-more-btn {
1971
- display: flex;
1972
- }
1973
-
1974
- .tab {
1975
- min-width: 80px;
1976
- max-width: 120px;
1977
- padding: 0.25rem 0.5rem;
1978
- margin: 0;
1979
- font-size: 0.7rem;
1980
- }
1981
-
1982
- .single-page-header {
1983
- padding: 0.375rem 0.75rem;
1984
- }
1985
-
1986
- .page-title {
1987
- font-size: 1rem;
1988
- }
1989
-
1990
- .module-header {
1991
- margin: 1rem;
1992
- padding: 1rem;
1993
- flex-direction: column;
1994
- align-items: flex-start;
1995
- gap: 0.75rem;
1996
- }
1997
-
1998
- .module-content {
1999
- padding: 1rem;
2000
- }
2001
-
2002
- .footer-left,
2003
- .footer-right {
2004
- gap: 0.5rem;
2005
- }
2006
-
2007
- .footer-environment {
2008
- font-size: 0.5rem;
2009
- }
2010
-
2011
- .breadcrumb-container {
2012
- display: none;
2013
- }
2014
-
2015
- .header-center {
2016
- display: none;
2017
- }
2018
-
2019
- /* Hide Entity & FY info cards on mobile to make room for persona */
2020
- .header-info-section {
2021
- display: none;
2022
- }
2023
-
2024
- /* Ensure header-right elements are properly spaced and visible */
2025
- .header-right {
2026
- gap: 0.5rem;
2027
- flex-wrap: nowrap;
2028
- flex-shrink: 0;
2029
- }
2030
-
2031
- /* Adjust notification bell size for mobile */
2032
- .notification-bell {
2033
- width: 2.25rem;
2034
- height: 2.25rem;
2035
- flex-shrink: 0;
2036
- }
2037
-
2038
- /* Ensure persona-control is always visible on mobile */
2039
- .persona-control {
2040
- display: flex !important;
2041
- flex-shrink: 0;
2042
- z-index: 1001;
2043
- }
2044
-
2045
- /* Make notification panel full width on mobile */
2046
- .notification-panel {
2047
- position: fixed;
2048
- left: 50%;
2049
- right: auto;
2050
- transform: translateX(-50%);
2051
- width: calc(100vw - 2rem);
2052
- max-width: 380px;
2053
- }
2054
-
2055
- .notification-panel.open {
2056
- transform: translateX(-50%) translateY(0);
2057
- }
2058
-
2059
- /* Adjust persona panel for mobile - fixed position for better visibility */
2060
- .persona-panel {
2061
- position: fixed;
2062
- top: var(--header-height);
2063
- right: 0.5rem;
2064
- left: auto;
2065
- width: calc(100vw - 1rem);
2066
- max-width: 300px;
2067
- margin-top: 0.25rem;
2068
- }
2069
-
2070
- /* Make logo smaller on mobile */
2071
- .logo-company {
2072
- font-size: 1rem;
2073
- }
2074
-
2075
- .logo-tagline {
2076
- font-size: 0.5rem;
2077
- }
2078
-
2079
- .persona-role {
2080
- display: none;
2081
- }
2082
- }
2083
-
2084
- /* Extra small mobile (phones) */
2085
- @media (max-width: 480px) {
2086
- .layout-header {
2087
- padding: 0 0.5rem;
2088
- height: 3rem;
2089
- }
2090
-
2091
- .header-left {
2092
- gap: 0.5rem;
2093
- }
2094
-
2095
- .menu-toggle {
2096
- width: 2rem;
2097
- height: 2rem;
2098
- padding: 0.25rem;
2099
- }
2100
-
2101
- .logo-company {
2102
- font-size: 0.875rem;
2103
- }
2104
-
2105
- .logo-tagline {
2106
- display: none;
2107
- }
2108
-
2109
- .notification-bell {
2110
- width: 2rem;
2111
- height: 2rem;
2112
- }
2113
-
2114
- .notification-panel {
2115
- width: calc(100vw - 1rem);
2116
- max-width: 100%;
2117
- right: -0.25rem;
2118
- }
2119
-
2120
- .notification-filter-tab {
2121
- padding: 0.25rem 0.5rem;
2122
- font-size: 0.65rem;
2123
- }
2124
-
2125
- .notification-grouping-btn {
2126
- font-size: 0.65rem;
2127
- padding: 0.25rem 0.5rem;
2128
- }
2129
-
2130
- .tab {
2131
- min-width: 60px;
2132
- max-width: 100px;
2133
- padding: 0.25rem 0.375rem;
2134
- font-size: 0.65rem;
2135
- }
2136
-
2137
- .module-header {
2138
- margin: 0.75rem;
2139
- padding: 0.75rem;
2140
- }
2141
-
2142
- .module-content {
2143
- padding: 0.75rem;
2144
- }
2145
-
2146
- .header-right {
2147
- gap: 0.375rem;
2148
- }
2149
-
2150
- /* Smaller persona avatar on extra small screens */
2151
- .persona-avatar {
2152
- width: 1.75rem;
2153
- height: 1.75rem;
2154
- font-size: 0.65rem;
2155
- }
2156
- }
214
+ return `
215
+ * {
216
+ margin: 0;
217
+ padding: 0;
218
+ box-sizing: border-box;
219
+ }
220
+
221
+ :root {
222
+ --primary: ${colors.primary};
223
+ --secondary: ${colors.secondary};
224
+ --success: ${colors.success};
225
+ --warning: ${colors.warning};
226
+ --danger: ${colors.danger};
227
+ --info: ${colors.info};
228
+
229
+ --bg-primary: #ffffff;
230
+ --bg-secondary: #f8fafc;
231
+ --bg-gradient: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
232
+ --text-primary: #1e293b;
233
+ --text-secondary: #64748b;
234
+ --text-muted: #94a3b8;
235
+ --border-color: rgba(226, 232, 240, 0.5);
236
+ --glass-bg: rgba(255, 255, 255, 0.95);
237
+ --shadow: 0 8px 12px -2px rgba(0, 0, 0, 0.1);
238
+ --accent-primary: ${colors.primary};
239
+ --accent-gradient: linear-gradient(135deg, ${colors.primary}, ${colors.info});
240
+
241
+ --header-height: ${config.layout.headerHeight};
242
+ --sidebar-width: ${config.layout.sidebarWidth};
243
+ --sidebar-collapsed-width: ${config.layout.sidebarCollapsedWidth};
244
+ --footer-height: ${footerHeight};
245
+ --tab-bar-height: ${config.layout.tabBarHeight};
246
+ }
247
+
248
+ [data-theme="dark"] {
249
+ --bg-primary: #0f172a;
250
+ --bg-secondary: #1e293b;
251
+ --bg-gradient: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
252
+ --text-primary: #f1f5f9;
253
+ --text-secondary: #cbd5e1;
254
+ --text-muted: #64748b;
255
+ --border-color: rgba(71, 85, 105, 0.5);
256
+ --glass-bg: rgba(15, 23, 42, 0.95);
257
+ --shadow: 0 8px 12px -2px rgba(0, 0, 0, 0.3);
258
+ }
259
+
260
+ html {
261
+ margin: 0;
262
+ padding: 0;
263
+ width: 100%;
264
+ overflow: hidden;
265
+ }
266
+
267
+ body {
268
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
269
+ background: var(--bg-gradient);
270
+ color: var(--text-primary);
271
+ line-height: 1.5;
272
+ height: 100vh;
273
+ width: 100%;
274
+ margin: 0;
275
+ padding: 0;
276
+ overflow: hidden;
277
+ transition: background 0.3s ease, color 0.3s ease;
278
+ }
279
+
280
+ .enterprise-layout {
281
+ width: 100%;
282
+ height: 100vh;
283
+ display: flex;
284
+ flex-direction: column;
285
+ overflow: hidden;
286
+ }
287
+
288
+ .layout-header {
289
+ position: fixed;
290
+ top: 0;
291
+ left: 0;
292
+ right: 0;
293
+ height: var(--header-height);
294
+ background: var(--glass-bg);
295
+ backdrop-filter: blur(15px);
296
+ border-bottom: 1px solid var(--border-color);
297
+ display: flex;
298
+ align-items: center;
299
+ justify-content: space-between;
300
+ padding: 0 1rem;
301
+ z-index: 1000;
302
+ box-shadow: var(--shadow);
303
+ }
304
+
305
+ .header-left {
306
+ display: flex;
307
+ align-items: center;
308
+ gap: 0.75rem;
309
+ flex: 0 0 auto;
310
+ min-width: 0;
311
+ }
312
+
313
+ .header-center {
314
+ display: flex;
315
+ align-items: center;
316
+ flex: 1;
317
+ justify-content: center;
318
+ min-width: 0;
319
+ }
320
+
321
+ .header-right {
322
+ display: flex;
323
+ align-items: center;
324
+ gap: 0.75rem;
325
+ flex-shrink: 0;
326
+ position: relative;
327
+ }
328
+
329
+ .header-info-section {
330
+ display: flex;
331
+ align-items: center;
332
+ gap: 0.5rem;
333
+ height: fit-content;
334
+ max-height: calc(var(--header-height) - 1rem);
335
+ }
336
+
337
+ .header-info-card {
338
+ display: flex;
339
+ align-items: center;
340
+ gap: 0.5rem;
341
+ padding: 0.375rem 0.875rem;
342
+ border-radius: 1.25rem;
343
+ backdrop-filter: blur(10px);
344
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
345
+ cursor: pointer;
346
+ position: relative;
347
+ overflow: visible;
348
+ height: fit-content;
349
+ max-height: 2.25rem;
350
+ }
351
+
352
+ .header-info-card-blue {
353
+ background: linear-gradient(135deg, rgba(37, 99, 235, 0.1) 0%, rgba(59, 130, 246, 0.06) 100%);
354
+ border: 1px solid rgba(37, 99, 235, 0.2);
355
+ box-shadow: 0 2px 6px rgba(37, 99, 235, 0.08),
356
+ 0 1px 2px rgba(0, 0, 0, 0.04);
357
+ }
358
+
359
+ .header-info-card-green {
360
+ background: linear-gradient(135deg, rgba(16, 185, 129, 0.1) 0%, rgba(34, 197, 94, 0.06) 100%);
361
+ border: 1px solid rgba(16, 185, 129, 0.2);
362
+ box-shadow: 0 2px 6px rgba(16, 185, 129, 0.08),
363
+ 0 1px 2px rgba(0, 0, 0, 0.04);
364
+ }
365
+
366
+ .header-info-card::before {
367
+ content: '';
368
+ position: absolute;
369
+ top: 50%;
370
+ left: 50%;
371
+ width: 100%;
372
+ height: 100%;
373
+ background: radial-gradient(circle, rgba(255, 255, 255, 0.12) 0%, transparent 70%);
374
+ transform: translate(-50%, -50%) scale(0);
375
+ transition: transform 0.5s ease-out;
376
+ pointer-events: none;
377
+ }
378
+
379
+ .header-info-card:hover::before {
380
+ transform: translate(-50%, -50%) scale(2);
381
+ }
382
+
383
+ .header-info-card-blue:hover {
384
+ transform: translateY(-2px);
385
+ box-shadow: 0 4px 12px rgba(37, 99, 235, 0.18),
386
+ 0 2px 4px rgba(0, 0, 0, 0.06);
387
+ border-color: rgba(37, 99, 235, 0.35);
388
+ background: linear-gradient(135deg, rgba(37, 99, 235, 0.14) 0%, rgba(59, 130, 246, 0.08) 100%);
389
+ }
390
+
391
+ .header-info-card-green:hover {
392
+ transform: translateY(-2px);
393
+ box-shadow: 0 4px 12px rgba(16, 185, 129, 0.18),
394
+ 0 2px 4px rgba(0, 0, 0, 0.06);
395
+ border-color: rgba(16, 185, 129, 0.35);
396
+ background: linear-gradient(135deg, rgba(16, 185, 129, 0.14) 0%, rgba(34, 197, 94, 0.08) 100%);
397
+ }
398
+
399
+ .header-info-card:active {
400
+ transform: translateY(0) scale(0.98);
401
+ transition: all 0.1s ease;
402
+ }
403
+
404
+ .header-info-icon {
405
+ display: flex;
406
+ align-items: center;
407
+ justify-content: center;
408
+ width: 1.25rem;
409
+ height: 1.25rem;
410
+ flex-shrink: 0;
411
+ }
412
+
413
+ .header-info-card-blue .header-info-icon {
414
+ color: #2563eb;
415
+ }
416
+
417
+ .header-info-card-green .header-info-icon {
418
+ color: #10b981;
419
+ }
420
+
421
+ .header-info-content {
422
+ display: flex;
423
+ flex-direction: column;
424
+ gap: 0.0625rem;
425
+ min-width: 0;
426
+ }
427
+
428
+ .header-info-label {
429
+ font-size: 0.5625rem;
430
+ text-transform: uppercase;
431
+ letter-spacing: 0.08em;
432
+ font-weight: 700;
433
+ line-height: 1;
434
+ white-space: nowrap;
435
+ }
436
+
437
+ .header-info-card-blue .header-info-label {
438
+ color: #1d4ed8;
439
+ opacity: 0.85;
440
+ }
441
+
442
+ .header-info-card-green .header-info-label {
443
+ color: #059669;
444
+ opacity: 0.85;
445
+ }
446
+
447
+ .header-info-value {
448
+ font-size: 0.8125rem;
449
+ font-weight: 700;
450
+ white-space: nowrap;
451
+ letter-spacing: -0.01em;
452
+ line-height: 1.2;
453
+ }
454
+
455
+ .header-info-card-blue .header-info-value {
456
+ color: #1e3a8a;
457
+ }
458
+
459
+ .header-info-card-green .header-info-value {
460
+ color: #065f46;
461
+ }
462
+
463
+ .header-info-card:hover .header-info-label,
464
+ .header-info-card:hover .header-info-value {
465
+ opacity: 1;
466
+ }
467
+
468
+ .header-info-card.selectable {
469
+ cursor: pointer;
470
+ padding-right: 0.625rem;
471
+ }
472
+
473
+ .header-info-chevron {
474
+ display: flex;
475
+ align-items: center;
476
+ justify-content: center;
477
+ margin-left: 0.25rem;
478
+ transition: transform 0.3s ease;
479
+ opacity: 0.7;
480
+ }
481
+
482
+ .header-info-card:hover .header-info-chevron {
483
+ opacity: 1;
484
+ }
485
+
486
+ .header-info-dropdown {
487
+ position: absolute;
488
+ top: calc(100% + 0.5rem);
489
+ left: 0;
490
+ right: 0;
491
+ background: var(--glass-bg);
492
+ border-radius: 0.75rem;
493
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15),
494
+ 0 4px 8px rgba(0, 0, 0, 0.1);
495
+ backdrop-filter: blur(12px);
496
+ z-index: 1000;
497
+ overflow: hidden;
498
+ animation: dropdownSlideIn 0.2s ease-out;
499
+ min-width: 180px;
500
+ }
501
+
502
+ @keyframes dropdownSlideIn {
503
+ from {
504
+ opacity: 0;
505
+ transform: translateY(-8px);
506
+ }
507
+ to {
508
+ opacity: 1;
509
+ transform: translateY(0);
510
+ }
511
+ }
512
+
513
+ .header-info-dropdown-blue {
514
+ border: 1px solid rgba(37, 99, 235, 0.3);
515
+ }
516
+
517
+ .header-info-dropdown-green {
518
+ border: 1px solid rgba(16, 185, 129, 0.3);
519
+ }
520
+
521
+ .header-info-dropdown-item {
522
+ display: flex;
523
+ align-items: center;
524
+ justify-content: space-between;
525
+ padding: 0.625rem 0.875rem;
526
+ font-size: 0.8125rem;
527
+ font-weight: 500;
528
+ color: var(--text-primary);
529
+ transition: all 0.2s ease;
530
+ cursor: pointer;
531
+ gap: 0.5rem;
532
+ }
533
+
534
+ .header-info-dropdown-item:hover {
535
+ background: rgba(37, 99, 235, 0.08);
536
+ }
537
+
538
+ .header-info-dropdown-blue .header-info-dropdown-item:hover {
539
+ background: rgba(37, 99, 235, 0.12);
540
+ color: #1e40af;
541
+ }
542
+
543
+ .header-info-dropdown-green .header-info-dropdown-item:hover {
544
+ background: rgba(16, 185, 129, 0.12);
545
+ color: #047857;
546
+ }
547
+
548
+ .header-info-dropdown-item.active {
549
+ font-weight: 700;
550
+ background: rgba(37, 99, 235, 0.1);
551
+ }
552
+
553
+ .header-info-dropdown-blue .header-info-dropdown-item.active {
554
+ background: rgba(37, 99, 235, 0.15);
555
+ color: #1e40af;
556
+ }
557
+
558
+ .header-info-dropdown-green .header-info-dropdown-item.active {
559
+ background: rgba(16, 185, 129, 0.15);
560
+ color: #047857;
561
+ }
562
+
563
+ .header-info-dropdown-item svg {
564
+ flex-shrink: 0;
565
+ }
566
+
567
+ .app-logo {
568
+ display: flex;
569
+ align-items: center;
570
+ gap: 0.5rem;
571
+ font-size: 1.125rem;
572
+ font-weight: 700;
573
+ background: var(--accent-gradient);
574
+ -webkit-background-clip: text;
575
+ -webkit-text-fill-color: transparent;
576
+ background-clip: text;
577
+ white-space: nowrap;
578
+ flex-shrink: 0;
579
+ }
580
+
581
+ .logo-image {
582
+ flex-shrink: 0;
583
+ border-radius: 0.375rem;
584
+ }
585
+
586
+ .breadcrumb-container {
587
+ display: flex;
588
+ align-items: center;
589
+ font-size: 0.75rem;
590
+ opacity: 0.8;
591
+ margin-left: 1rem;
592
+ }
593
+
594
+ .breadcrumb {
595
+ display: flex;
596
+ align-items: center;
597
+ gap: 0.375rem;
598
+ color: var(--text-secondary);
599
+ }
600
+
601
+ .breadcrumb-item {
602
+ display: flex;
603
+ align-items: center;
604
+ gap: 0.25rem;
605
+ }
606
+
607
+ .breadcrumb-link {
608
+ color: var(--text-secondary);
609
+ text-decoration: none;
610
+ transition: color 0.2s ease;
611
+ }
612
+
613
+ .breadcrumb-link:hover {
614
+ color: var(--accent-primary);
615
+ }
616
+
617
+ .breadcrumb-current {
618
+ color: var(--accent-primary);
619
+ font-weight: 500;
620
+ }
621
+
622
+ .breadcrumb-separator {
623
+ color: var(--text-muted);
624
+ opacity: 0.6;
625
+ }
626
+
627
+ .layout-body {
628
+ display: flex;
629
+ height: calc(100vh - var(--header-height) - var(--footer-height));
630
+ margin-top: var(--header-height);
631
+ overflow: hidden;
632
+ }
633
+
634
+ .layout-body.footer-hidden {
635
+ height: calc(100vh - var(--header-height));
636
+ }
637
+
638
+ .layout-sidebar {
639
+ width: var(--sidebar-width);
640
+ background: var(--glass-bg);
641
+ backdrop-filter: blur(15px);
642
+ border-right: 1px solid var(--border-color);
643
+ overflow-y: auto;
644
+ overflow-x: hidden;
645
+ transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1), transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
646
+ flex-shrink: 0;
647
+ will-change: width;
648
+ backface-visibility: hidden;
649
+ contain: layout style paint;
650
+ }
651
+
652
+ .layout-sidebar.collapsed {
653
+ width: var(--sidebar-collapsed-width);
654
+ overflow-y: hidden;
655
+ }
656
+
657
+ .layout-sidebar.mobile-hidden {
658
+ transform: translateX(-100%);
659
+ width: 0;
660
+ }
661
+
662
+ .layout-main {
663
+ flex: 1;
664
+ display: flex;
665
+ flex-direction: column;
666
+ background: var(--bg-gradient);
667
+ min-width: 0;
668
+ width: 100%;
669
+ height: 100%;
670
+ overflow: hidden;
671
+ box-sizing: border-box;
672
+ }
673
+
674
+ .layout-footer {
675
+ position: fixed;
676
+ bottom: 0;
677
+ left: 0;
678
+ right: 0;
679
+ height: var(--footer-height);
680
+ background: var(--glass-bg);
681
+ backdrop-filter: blur(15px);
682
+ border-top: 1px solid var(--border-color);
683
+ display: flex;
684
+ align-items: center;
685
+ justify-content: space-between;
686
+ padding: 0 1rem;
687
+ z-index: 1000;
688
+ box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);
689
+ font-size: 0.7rem;
690
+ color: var(--text-secondary);
691
+ transition: transform 0.3s ease;
692
+ }
693
+
694
+ .layout-footer.hidden {
695
+ transform: translateY(100%);
696
+ visibility: hidden;
697
+ opacity: 0;
698
+ }
699
+
700
+ .footer-left {
701
+ display: flex;
702
+ align-items: center;
703
+ gap: 0.75rem;
704
+ }
705
+
706
+ .footer-environment {
707
+ display: flex;
708
+ align-items: center;
709
+ gap: 0.25rem;
710
+ padding: 0.125rem 0.375rem;
711
+ border-radius: 0.375rem;
712
+ font-weight: 500;
713
+ font-size: 0.625rem;
714
+ }
715
+
716
+ .env-development {
717
+ background: var(--danger);
718
+ color: white;
719
+ }
720
+
721
+ .env-staging {
722
+ background: var(--warning);
723
+ color: white;
724
+ }
725
+
726
+ .env-production {
727
+ background: var(--success);
728
+ color: white;
729
+ }
730
+
731
+ .env-uat {
732
+ background: var(--info);
733
+ color: white;
734
+ }
735
+
736
+ .footer-right {
737
+ display: flex;
738
+ align-items: center;
739
+ gap: 0.75rem;
740
+ }
741
+
742
+ .footer-support {
743
+ color: var(--accent-primary);
744
+ text-decoration: none;
745
+ transition: opacity 0.2s ease;
746
+ }
747
+
748
+ .footer-support:hover {
749
+ opacity: 0.8;
750
+ }
751
+
752
+ .content-wrapper {
753
+ display: flex;
754
+ flex-direction: column;
755
+ height: 100%;
756
+ overflow: hidden;
757
+ width: 100%;
758
+ }
759
+
760
+ .tab-bar {
761
+ display: flex;
762
+ align-items: center;
763
+ background: var(--glass-bg);
764
+ border-bottom: 1px solid var(--border-color);
765
+ padding: 0;
766
+ margin: 0;
767
+ min-height: var(--tab-bar-height);
768
+ overflow-x: hidden;
769
+ flex-shrink: 0;
770
+ gap: 0.25rem;
771
+ transition: all 0.3s ease;
772
+ width: 100%;
773
+ box-sizing: border-box;
774
+ }
775
+
776
+ .tab-bar.hidden {
777
+ display: none;
778
+ }
779
+
780
+ .single-page-header {
781
+ display: flex;
782
+ align-items: center;
783
+ justify-content: space-between;
784
+ background: var(--glass-bg);
785
+ border-bottom: 1px solid var(--border-color);
786
+ padding: 0.5rem 1.25rem;
787
+ flex-shrink: 0;
788
+ }
789
+
790
+ .page-title {
791
+ font-size: 1.125rem;
792
+ font-weight: 600;
793
+ color: var(--text-primary);
794
+ }
795
+
796
+ .back-button {
797
+ display: flex;
798
+ align-items: center;
799
+ gap: 0.5rem;
800
+ padding: 0.375rem 0.75rem;
801
+ background: transparent;
802
+ border: 1px solid var(--border-color);
803
+ border-radius: 0.5rem;
804
+ color: var(--text-secondary);
805
+ text-decoration: none;
806
+ font-size: 0.8rem;
807
+ transition: all 0.3s ease;
808
+ cursor: pointer;
809
+ }
810
+
811
+ .back-button:hover {
812
+ background: var(--bg-secondary);
813
+ color: var(--text-primary);
814
+ border-color: var(--border-color);
815
+ }
816
+
817
+ .tab {
818
+ display: flex;
819
+ align-items: center;
820
+ gap: 0.5rem;
821
+ padding: 0.375rem 0.5rem;
822
+ margin: 0;
823
+ background: var(--bg-secondary);
824
+ border: 1px solid var(--border-color);
825
+ border-bottom: none;
826
+ border-radius: 0.75rem 0.75rem 0 0;
827
+ cursor: pointer;
828
+ transition: all 0.3s ease;
829
+ white-space: nowrap;
830
+ min-width: 100px;
831
+ max-width: 180px;
832
+ font-size: 0.8rem;
833
+ color: var(--text-secondary);
834
+ }
835
+
836
+ .tab:hover {
837
+ background: var(--bg-primary);
838
+ color: var(--text-primary);
839
+ }
840
+
841
+ .tab.active {
842
+ background: var(--bg-primary);
843
+ border-color: var(--accent-primary);
844
+ color: var(--accent-primary);
845
+ box-shadow: 0 -2px 4px rgba(37, 99, 235, 0.1);
846
+ }
847
+
848
+ .tab-title {
849
+ flex: 1;
850
+ overflow: hidden;
851
+ text-overflow: ellipsis;
852
+ white-space: nowrap;
853
+ min-width: 0;
854
+ }
855
+
856
+ .tab-close {
857
+ display: flex;
858
+ align-items: center;
859
+ justify-content: center;
860
+ width: 1rem;
861
+ height: 1rem;
862
+ border-radius: 50%;
863
+ background: none;
864
+ border: none;
865
+ cursor: pointer;
866
+ color: var(--text-muted);
867
+ transition: all 0.3s ease;
868
+ flex-shrink: 0;
869
+ }
870
+
871
+ .tab-close:hover {
872
+ background: var(--border-color);
873
+ color: var(--text-secondary);
874
+ }
875
+
876
+ .tab.active .tab-close:hover {
877
+ background: rgba(37, 99, 235, 0.1);
878
+ color: var(--accent-primary);
879
+ }
880
+
881
+ /* Tab overflow menu styles for mobile */
882
+ .tab-bar-wrapper {
883
+ display: flex;
884
+ align-items: center;
885
+ width: 100%;
886
+ background: var(--glass-bg);
887
+ border-bottom: 1px solid var(--border-color);
888
+ min-height: var(--tab-bar-height);
889
+ }
890
+
891
+ .tab-bar-visible {
892
+ display: flex;
893
+ align-items: center;
894
+ gap: 0.25rem;
895
+ flex: 1;
896
+ overflow: hidden;
897
+ min-height: var(--tab-bar-height);
898
+ }
899
+
900
+ .tab-more-container {
901
+ position: relative;
902
+ flex-shrink: 0;
903
+ }
904
+
905
+ .tab-more-btn {
906
+ display: none;
907
+ align-items: center;
908
+ gap: 0.25rem;
909
+ padding: 0.375rem 0.75rem;
910
+ background: var(--bg-secondary);
911
+ border: 1px solid var(--border-color);
912
+ border-radius: 0.5rem;
913
+ cursor: pointer;
914
+ font-size: 0.8rem;
915
+ color: var(--text-secondary);
916
+ transition: all 0.3s ease;
917
+ margin-right: 0.5rem;
918
+ white-space: nowrap;
919
+ }
920
+
921
+ .tab-more-btn:hover {
922
+ background: var(--bg-primary);
923
+ color: var(--accent-primary);
924
+ border-color: var(--accent-primary);
925
+ }
926
+
927
+ .tab-more-btn.active {
928
+ background: var(--accent-primary);
929
+ color: white;
930
+ border-color: var(--accent-primary);
931
+ }
932
+
933
+ .tab-overflow-menu {
934
+ position: absolute;
935
+ top: 100%;
936
+ right: 0;
937
+ min-width: 200px;
938
+ max-width: 280px;
939
+ background: var(--glass-bg);
940
+ backdrop-filter: blur(15px);
941
+ border: 1px solid var(--border-color);
942
+ border-radius: 0.75rem;
943
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
944
+ padding: 0.5rem;
945
+ z-index: 1002;
946
+ margin-top: 0.25rem;
947
+ opacity: 0;
948
+ visibility: hidden;
949
+ transform: translateY(-10px);
950
+ transition: all 0.3s ease;
951
+ }
952
+
953
+ .tab-overflow-menu.open {
954
+ opacity: 1;
955
+ visibility: visible;
956
+ transform: translateY(0);
957
+ }
958
+
959
+ .tab-overflow-item {
960
+ display: flex;
961
+ align-items: center;
962
+ justify-content: space-between;
963
+ padding: 0.5rem 0.75rem;
964
+ border-radius: 0.5rem;
965
+ cursor: pointer;
966
+ font-size: 0.8rem;
967
+ color: var(--text-secondary);
968
+ transition: all 0.3s ease;
969
+ gap: 0.5rem;
970
+ }
971
+
972
+ .tab-overflow-item:hover {
973
+ background: var(--bg-secondary);
974
+ color: var(--text-primary);
975
+ }
976
+
977
+ .tab-overflow-item.active {
978
+ background: rgba(37, 99, 235, 0.1);
979
+ color: var(--accent-primary);
980
+ }
981
+
982
+ .tab-overflow-item-title {
983
+ flex: 1;
984
+ overflow: hidden;
985
+ text-overflow: ellipsis;
986
+ white-space: nowrap;
987
+ }
988
+
989
+ .tab-overflow-item-close {
990
+ display: flex;
991
+ align-items: center;
992
+ justify-content: center;
993
+ width: 1.25rem;
994
+ height: 1.25rem;
995
+ border-radius: 50%;
996
+ background: none;
997
+ border: none;
998
+ cursor: pointer;
999
+ color: var(--text-muted);
1000
+ transition: all 0.3s ease;
1001
+ flex-shrink: 0;
1002
+ }
1003
+
1004
+ .tab-overflow-item-close:hover {
1005
+ background: var(--border-color);
1006
+ color: var(--danger);
1007
+ }
1008
+
1009
+ .tab-content-area {
1010
+ flex: 1;
1011
+ overflow: auto;
1012
+ width: 100%;
1013
+ height: 100%;
1014
+ min-height: 0;
1015
+ background: var(--bg-gradient);
1016
+ box-sizing: border-box;
1017
+ }
1018
+
1019
+ .enterprise-module {
1020
+ display: none;
1021
+ width: 100%;
1022
+ height: 100%;
1023
+ overflow: auto;
1024
+ box-sizing: border-box;
1025
+ }
1026
+
1027
+ .enterprise-module.active {
1028
+ display: block;
1029
+ }
1030
+
1031
+ .module-header {
1032
+ background: var(--glass-bg);
1033
+ backdrop-filter: blur(15px);
1034
+ border: 1px solid var(--border-color);
1035
+ border-radius: 1rem;
1036
+ padding: 0.75rem 1.25rem;
1037
+ margin: 0.75rem 1.25rem 0 1.25rem;
1038
+ box-shadow: var(--shadow);
1039
+ display: flex;
1040
+ align-items: flex-start;
1041
+ justify-content: space-between;
1042
+ gap: 1rem;
1043
+ flex-shrink: 0;
1044
+ }
1045
+
1046
+ .module-header-content {
1047
+ flex: 1;
1048
+ text-align: left;
1049
+ }
1050
+
1051
+ .module-title {
1052
+ font-size: 1.25rem;
1053
+ font-weight: 700;
1054
+ background: var(--accent-gradient);
1055
+ -webkit-background-clip: text;
1056
+ -webkit-text-fill-color: transparent;
1057
+ background-clip: text;
1058
+ margin-bottom: 0.375rem;
1059
+ line-height: 1.2;
1060
+ }
1061
+
1062
+ .module-description {
1063
+ font-size: 0.8rem;
1064
+ color: var(--text-secondary);
1065
+ margin-bottom: 0;
1066
+ line-height: 1.3;
1067
+ }
1068
+
1069
+ .module-actions {
1070
+ display: flex;
1071
+ align-items: flex-start;
1072
+ gap: 0.75rem;
1073
+ flex-wrap: wrap;
1074
+ flex-shrink: 0;
1075
+ }
1076
+
1077
+ .module-content {
1078
+ padding: 0 1.25rem 2rem 1.25rem;
1079
+ max-width: 100%;
1080
+ overflow: hidden;
1081
+ }
1082
+
1083
+ .layout-body.footer-hidden .module-content {
1084
+ padding-bottom: 0;
1085
+ }
1086
+
1087
+ .btn {
1088
+ display: inline-flex;
1089
+ align-items: center;
1090
+ justify-content: center;
1091
+ gap: 0.375rem;
1092
+ padding: 0.5rem 1rem;
1093
+ font-size: 0.8rem;
1094
+ font-weight: 500;
1095
+ border: none;
1096
+ border-radius: 0.75rem;
1097
+ cursor: pointer;
1098
+ text-decoration: none;
1099
+ transition: all 0.3s ease;
1100
+ white-space: nowrap;
1101
+ }
1102
+
1103
+ .btn-primary {
1104
+ background: var(--accent-gradient);
1105
+ color: white;
1106
+ box-shadow: 0 4px 15px rgba(37, 99, 235, 0.3);
1107
+ }
1108
+
1109
+ .btn-primary:hover {
1110
+ transform: translateY(-2px);
1111
+ box-shadow: 0 8px 25px rgba(37, 99, 235, 0.4);
1112
+ }
1113
+
1114
+ .btn-secondary {
1115
+ background: var(--glass-bg);
1116
+ color: var(--text-primary);
1117
+ border: 1px solid var(--border-color);
1118
+ }
1119
+
1120
+ .btn-secondary:hover {
1121
+ background: var(--bg-secondary);
1122
+ transform: translateY(-2px);
1123
+ }
1124
+
1125
+ .nav-section {
1126
+ padding: 0.75rem 0 0 0;
1127
+ border-bottom: 1px solid var(--border-color);
1128
+ }
1129
+
1130
+ .nav-section:last-child {
1131
+ border-bottom: none;
1132
+ }
1133
+
1134
+ .nav-section-header {
1135
+ display: flex;
1136
+ align-items: center;
1137
+ justify-content: space-between;
1138
+ padding: 0.5rem 1rem;
1139
+ cursor: pointer;
1140
+ transition: all 0.3s ease;
1141
+ border-radius: 0.75rem;
1142
+ margin: 0 0.75rem 0.375rem 0.75rem;
1143
+ position: relative;
1144
+ }
1145
+
1146
+ .nav-section-header:hover {
1147
+ background: var(--bg-secondary);
1148
+ }
1149
+
1150
+ .nav-section-title {
1151
+ font-size: 0.6875rem;
1152
+ font-weight: 600;
1153
+ color: var(--text-secondary);
1154
+ text-transform: uppercase;
1155
+ letter-spacing: 0.075em;
1156
+ margin: 0;
1157
+ flex: 1;
1158
+ }
1159
+
1160
+ .nav-chevron {
1161
+ color: var(--text-muted);
1162
+ transition: all 0.2s ease;
1163
+ display: flex;
1164
+ align-items: center;
1165
+ justify-content: center;
1166
+ }
1167
+
1168
+ .nav-section-header.expanded .nav-chevron {
1169
+ transform: rotate(0deg);
1170
+ }
1171
+
1172
+ .nav-section-header.collapsed .nav-chevron {
1173
+ transform: rotate(-90deg);
1174
+ }
1175
+
1176
+ .nav-section-content {
1177
+ overflow: hidden;
1178
+ transition: all 0.3s ease;
1179
+ padding-bottom: 0.75rem;
1180
+ }
1181
+
1182
+ .nav-section-content.expanded {
1183
+ max-height: 500px;
1184
+ opacity: 1;
1185
+ }
1186
+
1187
+ .nav-section-content.collapsed {
1188
+ max-height: 0;
1189
+ opacity: 0;
1190
+ padding-bottom: 0;
1191
+ }
1192
+
1193
+ .nav-menu {
1194
+ list-style: none;
1195
+ }
1196
+
1197
+ .nav-item {
1198
+ margin: 0 0.75rem;
1199
+ }
1200
+
1201
+ .nav-link {
1202
+ display: flex;
1203
+ align-items: center;
1204
+ gap: 0.75rem;
1205
+ padding: 0.5rem 0.75rem;
1206
+ color: var(--text-secondary);
1207
+ text-decoration: none;
1208
+ border-radius: 0.75rem;
1209
+ transition: all 0.3s ease;
1210
+ font-size: 0.8rem;
1211
+ position: relative;
1212
+ }
1213
+
1214
+ .nav-link:hover,
1215
+ .nav-link.active {
1216
+ background: var(--accent-gradient);
1217
+ color: white;
1218
+ transform: translateX(4px);
1219
+ box-shadow: var(--shadow);
1220
+ }
1221
+
1222
+ /* NEW: Multi-level menu styles */
1223
+ .nav-sub-menu {
1224
+ margin-left: 1.5rem;
1225
+ border-left: 1px solid var(--border-color);
1226
+ padding-left: 0.5rem;
1227
+ margin-top: 0.25rem;
1228
+ list-style: none;
1229
+ }
1230
+
1231
+ .nav-sub-item {
1232
+ margin: 0 0.5rem;
1233
+ }
1234
+
1235
+ .nav-sub-link {
1236
+ display: flex;
1237
+ align-items: center;
1238
+ gap: 0.5rem;
1239
+ padding: 0.375rem 0.5rem;
1240
+ color: var(--text-muted);
1241
+ text-decoration: none;
1242
+ border-radius: 0.5rem;
1243
+ transition: all 0.3s ease;
1244
+ font-size: 0.75rem;
1245
+ position: relative;
1246
+ }
1247
+
1248
+ .nav-sub-link:hover,
1249
+ .nav-sub-link.active {
1250
+ background: var(--accent-gradient);
1251
+ color: white;
1252
+ transform: translateX(2px);
1253
+ box-shadow: var(--shadow);
1254
+ }
1255
+
1256
+ .nav-item-with-children > .nav-link {
1257
+ position: relative;
1258
+ }
1259
+
1260
+ .nav-item-expand {
1261
+ position: absolute;
1262
+ right: 0.5rem;
1263
+ color: var(--text-muted);
1264
+ transition: all 0.2s ease;
1265
+ display: flex;
1266
+ align-items: center;
1267
+ justify-content: center;
1268
+ }
1269
+
1270
+ .nav-item-expand.expanded {
1271
+ transform: rotate(90deg);
1272
+ }
1273
+
1274
+ .nav-badge {
1275
+ background: var(--danger);
1276
+ color: white;
1277
+ font-size: 0.625rem;
1278
+ padding: 0.125rem 0.3rem;
1279
+ border-radius: 0.5rem;
1280
+ margin-left: auto;
1281
+ font-weight: 600;
1282
+ }
1283
+
1284
+ .menu-toggle {
1285
+ background: none;
1286
+ border: none;
1287
+ padding: 0.5rem;
1288
+ border-radius: 0.75rem;
1289
+ cursor: pointer;
1290
+ color: var(--text-secondary);
1291
+ transition: all 0.3s ease;
1292
+ }
1293
+
1294
+ .menu-toggle:hover {
1295
+ background: var(--bg-secondary);
1296
+ color: var(--text-primary);
1297
+ }
1298
+
1299
+ .persona-control {
1300
+ position: relative;
1301
+ display: flex;
1302
+ align-items: center;
1303
+ gap: 0.375rem;
1304
+ padding: 0.375rem;
1305
+ border-radius: 0.75rem;
1306
+ cursor: pointer;
1307
+ transition: all 0.3s ease;
1308
+ flex-shrink: 0;
1309
+ z-index: 10002;
1310
+ }
1311
+
1312
+ .persona-control:hover {
1313
+ background: var(--bg-secondary);
1314
+ }
1315
+
1316
+ .persona-avatar {
1317
+ width: 2rem;
1318
+ height: 2rem;
1319
+ border-radius: 50%;
1320
+ background: var(--accent-gradient);
1321
+ display: flex;
1322
+ align-items: center;
1323
+ justify-content: center;
1324
+ color: white;
1325
+ font-weight: 600;
1326
+ font-size: 0.75rem;
1327
+ flex-shrink: 0;
1328
+ }
1329
+
1330
+ .persona-role {
1331
+ font-size: 0.75rem;
1332
+ color: var(--text-secondary);
1333
+ white-space: nowrap;
1334
+ overflow: hidden;
1335
+ text-overflow: ellipsis;
1336
+ max-width: 100px;
1337
+ }
1338
+
1339
+ .persona-panel {
1340
+ position: absolute;
1341
+ top: 100%;
1342
+ right: 0;
1343
+ width: 300px;
1344
+ background: var(--glass-bg);
1345
+ backdrop-filter: blur(15px);
1346
+ border: 2px solid rgba(203, 213, 225, 0.8);
1347
+ border-radius: 1rem;
1348
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
1349
+ padding: 1rem;
1350
+ z-index: 10001;
1351
+ margin-top: 0.5rem;
1352
+ opacity: 0;
1353
+ visibility: hidden;
1354
+ transform: translateY(-10px);
1355
+ transition: all 0.3s ease;
1356
+ }
1357
+
1358
+ .persona-panel.open {
1359
+ opacity: 1;
1360
+ visibility: visible;
1361
+ transform: translateY(0);
1362
+ }
1363
+
1364
+ .persona-panel-header {
1365
+ display: flex;
1366
+ align-items: center;
1367
+ gap: 0.75rem;
1368
+ padding-bottom: 0.75rem;
1369
+ margin-bottom: 0.75rem;
1370
+ border-bottom: 2px solid rgba(226, 232, 240, 0.9);
1371
+ }
1372
+
1373
+ .persona-panel-avatar {
1374
+ width: 2.5rem;
1375
+ height: 2.5rem;
1376
+ border-radius: 50%;
1377
+ background: var(--accent-gradient);
1378
+ display: flex;
1379
+ align-items: center;
1380
+ justify-content: center;
1381
+ color: white;
1382
+ font-weight: 600;
1383
+ font-size: 0.875rem;
1384
+ }
1385
+
1386
+ .persona-panel-info h3 {
1387
+ font-size: 0.875rem;
1388
+ font-weight: 600;
1389
+ color: var(--text-primary);
1390
+ margin-bottom: 0.125rem;
1391
+ }
1392
+
1393
+ .persona-panel-info p {
1394
+ font-size: 0.75rem;
1395
+ color: var(--text-secondary);
1396
+ }
1397
+
1398
+ .persona-panel-section {
1399
+ padding-bottom: 0.75rem;
1400
+ margin-bottom: 0.75rem;
1401
+ border-bottom: 1px solid rgba(226, 232, 240, 0.8);
1402
+ }
1403
+
1404
+ .persona-panel-section:last-child {
1405
+ margin-bottom: 0;
1406
+ padding-bottom: 0;
1407
+ border-bottom: none;
1408
+ }
1409
+
1410
+ .persona-panel-section h4 {
1411
+ font-size: 0.75rem;
1412
+ font-weight: 600;
1413
+ color: var(--text-secondary);
1414
+ text-transform: uppercase;
1415
+ letter-spacing: 0.05em;
1416
+ margin-bottom: 0.5rem;
1417
+ }
1418
+
1419
+ .persona-panel-controls {
1420
+ display: flex;
1421
+ flex-direction: column;
1422
+ gap: 0.375rem;
1423
+ }
1424
+
1425
+ .persona-control-item {
1426
+ display: flex;
1427
+ align-items: center;
1428
+ justify-content: space-between;
1429
+ padding: 0.5rem 0.75rem;
1430
+ border-radius: 0.5rem;
1431
+ border: 1px solid transparent;
1432
+ transition: all 0.3s ease;
1433
+ cursor: pointer;
1434
+ font-size: 0.8rem;
1435
+ }
1436
+
1437
+ .persona-control-item:hover {
1438
+ background: var(--bg-secondary);
1439
+ border-color: rgba(203, 213, 225, 0.7);
1440
+ }
1441
+
1442
+ .persona-control-item.action {
1443
+ color: var(--text-primary);
1444
+ }
1445
+
1446
+ .persona-control-item.action:hover {
1447
+ color: var(--accent-primary);
1448
+ }
1449
+
1450
+ .persona-control-item.danger:hover {
1451
+ background: rgba(220, 38, 38, 0.1);
1452
+ color: var(--danger);
1453
+ }
1454
+
1455
+ .persona-control-label {
1456
+ display: flex;
1457
+ align-items: center;
1458
+ gap: 0.5rem;
1459
+ }
1460
+
1461
+ /* Notification Panel */
1462
+ .notification-bell {
1463
+ position: relative;
1464
+ display: flex;
1465
+ align-items: center;
1466
+ justify-content: center;
1467
+ width: 2.5rem;
1468
+ height: 2.5rem;
1469
+ border-radius: 50%;
1470
+ cursor: pointer;
1471
+ transition: all 0.3s ease;
1472
+ background: transparent;
1473
+ }
1474
+
1475
+ .notification-bell:hover {
1476
+ background: var(--bg-secondary);
1477
+ }
1478
+
1479
+ .notification-badge {
1480
+ position: absolute;
1481
+ top: 0.25rem;
1482
+ right: 0.25rem;
1483
+ background: var(--danger);
1484
+ color: white;
1485
+ font-size: 0.625rem;
1486
+ font-weight: 600;
1487
+ min-width: 1.125rem;
1488
+ height: 1.125rem;
1489
+ border-radius: 0.5625rem;
1490
+ display: flex;
1491
+ align-items: center;
1492
+ justify-content: center;
1493
+ padding: 0 0.25rem;
1494
+ border: 2px solid var(--glass-bg);
1495
+ }
1496
+
1497
+ .notification-panel {
1498
+ position: absolute;
1499
+ top: 100%;
1500
+ right: 0;
1501
+ width: 380px;
1502
+ max-height: 500px;
1503
+ background: var(--glass-bg);
1504
+ backdrop-filter: blur(15px);
1505
+ border: 2px solid rgba(203, 213, 225, 0.8);
1506
+ border-radius: 1rem;
1507
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
1508
+ z-index: 1001;
1509
+ margin-top: 0.5rem;
1510
+ opacity: 0;
1511
+ visibility: hidden;
1512
+ transform: translateY(-10px);
1513
+ transition: all 0.3s ease;
1514
+ display: flex;
1515
+ flex-direction: column;
1516
+ }
1517
+
1518
+ .notification-panel.open {
1519
+ opacity: 1;
1520
+ visibility: visible;
1521
+ transform: translateY(0);
1522
+ }
1523
+
1524
+ .notification-panel-header {
1525
+ display: flex;
1526
+ align-items: center;
1527
+ justify-content: space-between;
1528
+ padding: 1rem 1.25rem;
1529
+ border-bottom: 2px solid rgba(226, 232, 240, 0.9);
1530
+ }
1531
+
1532
+ .notification-panel-title {
1533
+ font-size: 1rem;
1534
+ font-weight: 600;
1535
+ color: var(--text-primary);
1536
+ }
1537
+
1538
+ .notification-panel-actions {
1539
+ display: flex;
1540
+ gap: 0.5rem;
1541
+ }
1542
+
1543
+ .notification-action-btn {
1544
+ font-size: 0.75rem;
1545
+ color: var(--primary);
1546
+ background: transparent;
1547
+ border: none;
1548
+ cursor: pointer;
1549
+ padding: 0.25rem 0.5rem;
1550
+ border-radius: 0.375rem;
1551
+ transition: all 0.2s ease;
1552
+ }
1553
+
1554
+ .notification-action-btn:hover {
1555
+ background: rgba(37, 99, 235, 0.1);
1556
+ }
1557
+
1558
+ .notification-panel-content {
1559
+ flex: 1;
1560
+ overflow-y: auto;
1561
+ padding: 0.5rem;
1562
+ }
1563
+
1564
+ .notification-item {
1565
+ display: flex;
1566
+ gap: 0.75rem;
1567
+ padding: 0.875rem;
1568
+ margin-bottom: 0.5rem;
1569
+ border-radius: 0.75rem;
1570
+ cursor: pointer;
1571
+ transition: all 0.2s ease;
1572
+ border: 1px solid transparent;
1573
+ }
1574
+
1575
+ .notification-item:hover {
1576
+ background: var(--bg-secondary);
1577
+ border-color: rgba(203, 213, 225, 0.7);
1578
+ }
1579
+
1580
+ .notification-item.unread {
1581
+ background: rgba(37, 99, 235, 0.05);
1582
+ }
1583
+
1584
+ .notification-icon {
1585
+ flex-shrink: 0;
1586
+ width: 2.5rem;
1587
+ height: 2.5rem;
1588
+ border-radius: 50%;
1589
+ display: flex;
1590
+ align-items: center;
1591
+ justify-content: center;
1592
+ font-size: 1.125rem;
1593
+ }
1594
+
1595
+ .notification-icon.success {
1596
+ background: rgba(22, 163, 74, 0.1);
1597
+ color: var(--success);
1598
+ }
1599
+
1600
+ .notification-icon.info {
1601
+ background: rgba(37, 99, 235, 0.1);
1602
+ color: var(--primary);
1603
+ }
1604
+
1605
+ .notification-icon.warning {
1606
+ background: rgba(217, 119, 6, 0.1);
1607
+ color: var(--warning);
1608
+ }
1609
+
1610
+ .notification-icon.error {
1611
+ background: rgba(220, 38, 38, 0.1);
1612
+ color: var(--danger);
1613
+ }
1614
+
1615
+ .notification-content {
1616
+ flex: 1;
1617
+ min-width: 0;
1618
+ }
1619
+
1620
+ .notification-title {
1621
+ font-size: 0.875rem;
1622
+ font-weight: 600;
1623
+ color: var(--text-primary);
1624
+ margin-bottom: 0.25rem;
1625
+ }
1626
+
1627
+ .notification-message {
1628
+ font-size: 0.8rem;
1629
+ color: var(--text-secondary);
1630
+ margin-bottom: 0.375rem;
1631
+ line-height: 1.4;
1632
+ }
1633
+
1634
+ .notification-time {
1635
+ font-size: 0.7rem;
1636
+ color: var(--text-muted);
1637
+ }
1638
+
1639
+ .notification-empty {
1640
+ text-align: center;
1641
+ padding: 3rem 2rem;
1642
+ color: var(--text-muted);
1643
+ }
1644
+
1645
+ .notification-empty-icon {
1646
+ font-size: 3rem;
1647
+ margin-bottom: 1rem;
1648
+ opacity: 0.3;
1649
+ }
1650
+
1651
+ .notification-filters {
1652
+ display: flex;
1653
+ align-items: center;
1654
+ justify-content: space-between;
1655
+ padding: 0.75rem 1rem;
1656
+ border-bottom: 1px solid rgba(226, 232, 240, 0.8);
1657
+ background: var(--bg-secondary);
1658
+ }
1659
+
1660
+ .notification-filter-tabs {
1661
+ display: flex;
1662
+ gap: 0.25rem;
1663
+ background: white;
1664
+ border-radius: 0.5rem;
1665
+ padding: 0.25rem;
1666
+ }
1667
+
1668
+ .notification-filter-tab {
1669
+ padding: 0.375rem 0.75rem;
1670
+ font-size: 0.75rem;
1671
+ font-weight: 500;
1672
+ color: var(--text-secondary);
1673
+ background: transparent;
1674
+ border: none;
1675
+ border-radius: 0.375rem;
1676
+ cursor: pointer;
1677
+ transition: all 0.2s ease;
1678
+ }
1679
+
1680
+ .notification-filter-tab:hover {
1681
+ background: var(--bg-secondary);
1682
+ }
1683
+
1684
+ .notification-filter-tab.active {
1685
+ background: var(--primary);
1686
+ color: white;
1687
+ }
1688
+
1689
+ .notification-grouping-dropdown {
1690
+ position: relative;
1691
+ }
1692
+
1693
+ .notification-grouping-btn {
1694
+ display: flex;
1695
+ align-items: center;
1696
+ gap: 0.375rem;
1697
+ padding: 0.375rem 0.625rem;
1698
+ font-size: 0.75rem;
1699
+ font-weight: 500;
1700
+ color: var(--text-secondary);
1701
+ background: white;
1702
+ border: 1px solid var(--border-color);
1703
+ border-radius: 0.375rem;
1704
+ cursor: pointer;
1705
+ transition: all 0.2s ease;
1706
+ }
1707
+
1708
+ .notification-grouping-btn:hover {
1709
+ border-color: var(--primary);
1710
+ color: var(--primary);
1711
+ }
1712
+
1713
+ .notification-group-header {
1714
+ padding: 0.5rem 0.875rem;
1715
+ font-size: 0.75rem;
1716
+ font-weight: 600;
1717
+ color: var(--text-secondary);
1718
+ text-transform: uppercase;
1719
+ letter-spacing: 0.05em;
1720
+ background: var(--bg-secondary);
1721
+ border-bottom: 1px solid rgba(226, 232, 240, 0.8);
1722
+ margin-bottom: 0.25rem;
1723
+ }
1724
+
1725
+ .view-mode-toggle {
1726
+ display: flex;
1727
+ align-items: center;
1728
+ background: var(--bg-secondary);
1729
+ border: 1px solid var(--border-color);
1730
+ border-radius: 0.5rem;
1731
+ padding: 0.125rem;
1732
+ gap: 0.125rem;
1733
+ }
1734
+
1735
+ .view-mode-btn {
1736
+ display: flex;
1737
+ align-items: center;
1738
+ justify-content: center;
1739
+ padding: 0.25rem 0.5rem;
1740
+ border-radius: 0.375rem;
1741
+ cursor: pointer;
1742
+ transition: all 0.3s ease;
1743
+ color: var(--text-secondary);
1744
+ background: transparent;
1745
+ border: none;
1746
+ font-size: 0.75rem;
1747
+ }
1748
+
1749
+ .view-mode-btn.active {
1750
+ background: var(--accent-gradient);
1751
+ color: white;
1752
+ }
1753
+
1754
+ .theme-toggle {
1755
+ display: flex;
1756
+ align-items: center;
1757
+ gap: 0.5rem;
1758
+ }
1759
+
1760
+ .theme-switch {
1761
+ position: relative;
1762
+ width: 2.5rem;
1763
+ height: 1.25rem;
1764
+ background: var(--bg-secondary);
1765
+ border: 1px solid var(--border-color);
1766
+ border-radius: 0.625rem;
1767
+ cursor: pointer;
1768
+ transition: all 0.3s ease;
1769
+ }
1770
+
1771
+ .theme-switch.active {
1772
+ background: var(--accent-primary);
1773
+ border-color: var(--accent-primary);
1774
+ }
1775
+
1776
+ .theme-switch-handle {
1777
+ position: absolute;
1778
+ top: 0.125rem;
1779
+ left: 0.125rem;
1780
+ width: 0.875rem;
1781
+ height: 0.875rem;
1782
+ background: white;
1783
+ border-radius: 50%;
1784
+ transition: all 0.3s ease;
1785
+ }
1786
+
1787
+ .theme-switch.active .theme-switch-handle {
1788
+ transform: translateX(1.125rem);
1789
+ }
1790
+
1791
+ /* Compact Mode Styles */
1792
+ .sidebar-collapsed .nav-section-title,
1793
+ .sidebar-collapsed .nav-badge,
1794
+ .sidebar-collapsed .persona-role {
1795
+ display: none;
1796
+ }
1797
+
1798
+ .sidebar-collapsed .nav-link {
1799
+ justify-content: center;
1800
+ padding: 0.75rem;
1801
+ margin: 0.25rem 0.5rem;
1802
+ }
1803
+
1804
+ .sidebar-collapsed .nav-section-header {
1805
+ justify-content: center;
1806
+ padding: 0.75rem;
1807
+ margin: 0.25rem 0.5rem;
1808
+ }
1809
+
1810
+ .sidebar-collapsed .nav-chevron {
1811
+ display: none;
1812
+ }
1813
+
1814
+ .sidebar-collapsed .nav-section-content {
1815
+ display: none;
1816
+ }
1817
+
1818
+ /* Compact navigation specific styles */
1819
+ .compact-navigation {
1820
+ padding: 0.5rem 0;
1821
+ width: 100%;
1822
+ overflow: visible;
1823
+ }
1824
+
1825
+ .compact-nav-item {
1826
+ margin: 0.25rem 0.5rem;
1827
+ position: relative;
1828
+ }
1829
+
1830
+ .compact-nav-link {
1831
+ display: flex;
1832
+ align-items: center;
1833
+ justify-content: center;
1834
+ padding: 0.75rem;
1835
+ color: var(--text-secondary);
1836
+ text-decoration: none;
1837
+ border-radius: 0.75rem;
1838
+ transition: all 0.2s ease;
1839
+ font-size: 0.8rem;
1840
+ position: relative;
1841
+ min-height: 3rem;
1842
+ width: 100%;
1843
+ box-sizing: border-box;
1844
+ }
1845
+
1846
+ .compact-nav-link:hover,
1847
+ .compact-nav-link.active {
1848
+ background: var(--accent-gradient);
1849
+ color: white;
1850
+ box-shadow: var(--shadow);
1851
+ }
1852
+
1853
+ .compact-nav-badge {
1854
+ position: absolute;
1855
+ top: 0.25rem;
1856
+ right: 0.25rem;
1857
+ background: var(--danger);
1858
+ color: white;
1859
+ font-size: 0.5rem;
1860
+ padding: 0.125rem 0.25rem;
1861
+ border-radius: 0.375rem;
1862
+ font-weight: 600;
1863
+ min-width: 1rem;
1864
+ text-align: center;
1865
+ line-height: 1;
1866
+ }
1867
+
1868
+ .section-tooltip {
1869
+ position: relative;
1870
+ }
1871
+
1872
+ .section-tooltip::after {
1873
+ content: attr(data-tooltip);
1874
+ position: absolute;
1875
+ left: calc(100% + 0.75rem);
1876
+ top: 50%;
1877
+ transform: translateY(-50%);
1878
+ background: var(--glass-bg);
1879
+ color: var(--text-primary);
1880
+ padding: 0.5rem 0.75rem;
1881
+ border-radius: 0.5rem;
1882
+ font-size: 0.75rem;
1883
+ white-space: nowrap;
1884
+ z-index: 1000;
1885
+ box-shadow: var(--shadow);
1886
+ backdrop-filter: blur(15px);
1887
+ border: 1px solid var(--border-color);
1888
+ opacity: 0;
1889
+ visibility: hidden;
1890
+ transition: all 0.2s ease;
1891
+ pointer-events: none;
1892
+ }
1893
+
1894
+ /* FIX: Only show tooltips after initialization */
1895
+ .enterprise-layout.initialized .section-tooltip:hover::after {
1896
+ opacity: 1;
1897
+ visibility: visible;
1898
+ }
1899
+
1900
+ /* Tablet responsive styles */
1901
+ @media (max-width: 1024px) and (min-width: 769px) {
1902
+ /* Reduce header info card padding on tablets */
1903
+ .header-info-card {
1904
+ padding: 0.3rem 0.6rem;
1905
+ gap: 0.4rem;
1906
+ }
1907
+
1908
+ .header-info-label {
1909
+ font-size: 0.5rem;
1910
+ }
1911
+
1912
+ .header-info-value {
1913
+ font-size: 0.75rem;
1914
+ }
1915
+
1916
+ .header-info-icon {
1917
+ width: 1rem;
1918
+ height: 1rem;
1919
+ }
1920
+
1921
+ .notification-bell {
1922
+ width: 2.25rem;
1923
+ height: 2.25rem;
1924
+ }
1925
+
1926
+ .logo-company {
1927
+ font-size: 1.1rem;
1928
+ }
1929
+
1930
+ .logo-tagline {
1931
+ font-size: 0.55rem;
1932
+ }
1933
+ }
1934
+
1935
+ /* Mobile responsive styles */
1936
+ @media (max-width: 768px) {
1937
+ .mobile-overlay {
1938
+ position: fixed;
1939
+ top: var(--header-height);
1940
+ left: 0;
1941
+ right: 0;
1942
+ bottom: 0;
1943
+ background: rgba(0, 0, 0, 0.5);
1944
+ z-index: 1000;
1945
+ opacity: 0;
1946
+ visibility: hidden;
1947
+ transition: opacity 0.3s ease, visibility 0.3s ease;
1948
+ }
1949
+
1950
+ .mobile-overlay.visible {
1951
+ opacity: 1;
1952
+ visibility: visible;
1953
+ }
1954
+
1955
+ .layout-sidebar {
1956
+ position: absolute;
1957
+ top: var(--header-height);
1958
+ left: 0;
1959
+ height: calc(100% - var(--header-height));
1960
+ width: 85vw;
1961
+ max-width: var(--sidebar-width);
1962
+ transform: translateX(-100%);
1963
+ z-index: 1001;
1964
+ }
1965
+
1966
+ .layout-sidebar.mobile-open {
1967
+ transform: translateX(0);
1968
+ }
1969
+
1970
+ .tab-bar {
1971
+ padding: 0;
1972
+ margin: 0;
1973
+ width: 100%;
1974
+ }
1975
+
1976
+ /* Mobile tab overflow - show only 2 tabs + more button */
1977
+ .tab-bar-visible .tab {
1978
+ display: none;
1979
+ }
1980
+
1981
+ .tab-bar-visible .tab:nth-child(-n+2) {
1982
+ display: flex;
1983
+ }
1984
+
1985
+ .tab-more-btn {
1986
+ display: flex;
1987
+ }
1988
+
1989
+ .tab {
1990
+ min-width: 80px;
1991
+ max-width: 120px;
1992
+ padding: 0.25rem 0.5rem;
1993
+ margin: 0;
1994
+ font-size: 0.7rem;
1995
+ }
1996
+
1997
+ .single-page-header {
1998
+ padding: 0.375rem 0.75rem;
1999
+ }
2000
+
2001
+ .page-title {
2002
+ font-size: 1rem;
2003
+ }
2004
+
2005
+ .module-header {
2006
+ margin: 1rem;
2007
+ padding: 1rem;
2008
+ flex-direction: column;
2009
+ align-items: flex-start;
2010
+ gap: 0.75rem;
2011
+ }
2012
+
2013
+ .module-content {
2014
+ padding: 1rem;
2015
+ }
2016
+
2017
+ .footer-left,
2018
+ .footer-right {
2019
+ gap: 0.5rem;
2020
+ }
2021
+
2022
+ .footer-environment {
2023
+ font-size: 0.5rem;
2024
+ }
2025
+
2026
+ .breadcrumb-container {
2027
+ display: none;
2028
+ }
2029
+
2030
+ .header-center {
2031
+ display: none;
2032
+ }
2033
+
2034
+ /* Hide Entity & FY info cards on mobile to make room for persona */
2035
+ .header-info-section {
2036
+ display: none;
2037
+ }
2038
+
2039
+ /* Ensure header-right elements are properly spaced and visible */
2040
+ .header-right {
2041
+ gap: 0.5rem;
2042
+ flex-wrap: nowrap;
2043
+ flex-shrink: 0;
2044
+ }
2045
+
2046
+ /* Adjust notification bell size for mobile */
2047
+ .notification-bell {
2048
+ width: 2.25rem;
2049
+ height: 2.25rem;
2050
+ flex-shrink: 0;
2051
+ }
2052
+
2053
+ /* Ensure persona-control is always visible on mobile */
2054
+ .persona-control {
2055
+ display: flex !important;
2056
+ flex-shrink: 0;
2057
+ z-index: 1001;
2058
+ }
2059
+
2060
+ /* Make notification panel full width on mobile */
2061
+ .notification-panel {
2062
+ position: fixed;
2063
+ left: 50%;
2064
+ right: auto;
2065
+ transform: translateX(-50%);
2066
+ width: calc(100vw - 2rem);
2067
+ max-width: 380px;
2068
+ }
2069
+
2070
+ .notification-panel.open {
2071
+ transform: translateX(-50%) translateY(0);
2072
+ }
2073
+
2074
+ /* Adjust persona panel for mobile - fixed position for better visibility */
2075
+ .persona-panel {
2076
+ position: fixed;
2077
+ top: var(--header-height);
2078
+ right: 0.5rem;
2079
+ left: auto;
2080
+ width: calc(100vw - 1rem);
2081
+ max-width: 300px;
2082
+ margin-top: 0.25rem;
2083
+ }
2084
+
2085
+ /* Make logo smaller on mobile */
2086
+ .logo-company {
2087
+ font-size: 1rem;
2088
+ }
2089
+
2090
+ .logo-tagline {
2091
+ font-size: 0.5rem;
2092
+ }
2093
+
2094
+ .persona-role {
2095
+ display: none;
2096
+ }
2097
+ }
2098
+
2099
+ /* Extra small mobile (phones) */
2100
+ @media (max-width: 480px) {
2101
+ .layout-header {
2102
+ padding: 0 0.5rem;
2103
+ height: 3rem;
2104
+ }
2105
+
2106
+ .header-left {
2107
+ gap: 0.5rem;
2108
+ }
2109
+
2110
+ .menu-toggle {
2111
+ width: 2rem;
2112
+ height: 2rem;
2113
+ padding: 0.25rem;
2114
+ }
2115
+
2116
+ .logo-company {
2117
+ font-size: 0.875rem;
2118
+ }
2119
+
2120
+ .logo-tagline {
2121
+ display: none;
2122
+ }
2123
+
2124
+ .notification-bell {
2125
+ width: 2rem;
2126
+ height: 2rem;
2127
+ }
2128
+
2129
+ .notification-panel {
2130
+ width: calc(100vw - 1rem);
2131
+ max-width: 100%;
2132
+ right: -0.25rem;
2133
+ }
2134
+
2135
+ .notification-filter-tab {
2136
+ padding: 0.25rem 0.5rem;
2137
+ font-size: 0.65rem;
2138
+ }
2139
+
2140
+ .notification-grouping-btn {
2141
+ font-size: 0.65rem;
2142
+ padding: 0.25rem 0.5rem;
2143
+ }
2144
+
2145
+ .tab {
2146
+ min-width: 60px;
2147
+ max-width: 100px;
2148
+ padding: 0.25rem 0.375rem;
2149
+ font-size: 0.65rem;
2150
+ }
2151
+
2152
+ .module-header {
2153
+ margin: 0.75rem;
2154
+ padding: 0.75rem;
2155
+ }
2156
+
2157
+ .module-content {
2158
+ padding: 0.75rem;
2159
+ }
2160
+
2161
+ .header-right {
2162
+ gap: 0.375rem;
2163
+ }
2164
+
2165
+ /* Smaller persona avatar on extra small screens */
2166
+ .persona-avatar {
2167
+ width: 1.75rem;
2168
+ height: 1.75rem;
2169
+ font-size: 0.65rem;
2170
+ }
2171
+ }
2157
2172
  `;
2158
2173
  }, [config.branding.colors, config.layout, footerVisible]);
2159
2174
  // Apply theme and styles
@@ -2616,7 +2631,7 @@ export const EnterpriseLayout = ({ config, componentRegistry, children, router =
2616
2631
  }, children: "Tabs" }), _jsx("button", { className: `view-mode-btn ${!tabModeEnabled ? "active" : ""}`, onClick: (e) => {
2617
2632
  e.stopPropagation();
2618
2633
  startTransition(() => setTabModeEnabled(false));
2619
- }, children: "Single" })] })] }), _jsxs("div", { className: "persona-control-item", children: [_jsxs("div", { className: "persona-control-label", children: [_jsx(IconSystem.settings, {}), "Dark Mode=5"] }), _jsx("div", { className: `theme-switch ${darkMode ? "active" : ""}`, onClick: (e) => {
2634
+ }, children: "Single" })] })] }), _jsxs("div", { className: "persona-control-item", children: [_jsxs("div", { className: "persona-control-label", children: [_jsx(IconSystem.settings, {}), "Dark Mode-7"] }), _jsx("div", { className: `theme-switch ${darkMode ? "active" : ""}`, onClick: (e) => {
2620
2635
  e.stopPropagation();
2621
2636
  toggleTheme();
2622
2637
  }, children: _jsx("div", { className: "theme-switch-handle" }) })] }), _jsxs("div", { className: "persona-control-item", children: [_jsxs("div", { className: "persona-control-label", children: [_jsx(IconSystem.footer, {}), "Show Footer"] }), _jsx("div", { className: `theme-switch ${footerVisible ? "active" : ""}`, onClick: (e) => {