@chenchaolong/plugin-trade-compliance-workbench 1.0.48 → 1.0.49

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 (68) hide show
  1. package/dist/lib/entities/settings.entity.d.ts +2 -0
  2. package/dist/lib/entities/settings.entity.d.ts.map +1 -1
  3. package/dist/lib/entities/settings.entity.js +8 -0
  4. package/dist/lib/entities/settings.entity.js.map +1 -1
  5. package/dist/lib/remote-components/trade-compliance-workbench/app.css +1 -1
  6. package/dist/lib/remote-components/trade-compliance-workbench/app.js +4 -4
  7. package/dist/lib/remote-ui/analytics-contracts.d.ts +121 -145
  8. package/dist/lib/remote-ui/analytics-contracts.d.ts.map +1 -1
  9. package/dist/lib/remote-ui/analytics-contracts.js +8 -3
  10. package/dist/lib/remote-ui/analytics-contracts.js.map +1 -1
  11. package/dist/lib/remote-ui/app-source.js +130 -38
  12. package/dist/lib/remote-ui/app-source.js.map +1 -1
  13. package/dist/lib/remote-ui/model.d.ts.map +1 -1
  14. package/dist/lib/remote-ui/model.js +7 -43
  15. package/dist/lib/remote-ui/model.js.map +1 -1
  16. package/dist/lib/remote-ui/pages/analytics-charts.d.ts +12 -0
  17. package/dist/lib/remote-ui/pages/analytics-charts.d.ts.map +1 -0
  18. package/dist/lib/remote-ui/pages/analytics-charts.js +41 -0
  19. package/dist/lib/remote-ui/pages/analytics-charts.js.map +1 -0
  20. package/dist/lib/remote-ui/pages/analytics-dashboard.d.ts +11 -0
  21. package/dist/lib/remote-ui/pages/analytics-dashboard.d.ts.map +1 -0
  22. package/dist/lib/remote-ui/pages/analytics-dashboard.js +59 -0
  23. package/dist/lib/remote-ui/pages/analytics-dashboard.js.map +1 -0
  24. package/dist/lib/remote-ui/pages/analytics-detail-list.d.ts +13 -0
  25. package/dist/lib/remote-ui/pages/analytics-detail-list.d.ts.map +1 -0
  26. package/dist/lib/remote-ui/pages/analytics-detail-list.js +33 -0
  27. package/dist/lib/remote-ui/pages/analytics-detail-list.js.map +1 -0
  28. package/dist/lib/remote-ui/pages/analytics-format.d.ts +7 -0
  29. package/dist/lib/remote-ui/pages/analytics-format.d.ts.map +1 -0
  30. package/dist/lib/remote-ui/pages/analytics-format.js +31 -0
  31. package/dist/lib/remote-ui/pages/analytics-format.js.map +1 -0
  32. package/dist/lib/remote-ui/pages/analytics.d.ts +6 -9
  33. package/dist/lib/remote-ui/pages/analytics.d.ts.map +1 -1
  34. package/dist/lib/remote-ui/pages/analytics.js +77 -372
  35. package/dist/lib/remote-ui/pages/analytics.js.map +1 -1
  36. package/dist/lib/remote-ui/styles.css +158 -247
  37. package/dist/lib/runtime-validation.d.ts.map +1 -1
  38. package/dist/lib/runtime-validation.js +6 -35
  39. package/dist/lib/runtime-validation.js.map +1 -1
  40. package/dist/lib/sales-file.service.js +1 -1
  41. package/dist/lib/sales-file.service.js.map +1 -1
  42. package/dist/lib/schema-maintenance.d.ts +10 -0
  43. package/dist/lib/schema-maintenance.d.ts.map +1 -0
  44. package/dist/lib/schema-maintenance.js +34 -0
  45. package/dist/lib/schema-maintenance.js.map +1 -0
  46. package/dist/lib/types.d.ts +72 -63
  47. package/dist/lib/types.d.ts.map +1 -1
  48. package/dist/lib/types.js +2 -3
  49. package/dist/lib/types.js.map +1 -1
  50. package/dist/lib/workbench-view.provider.d.ts +12 -62
  51. package/dist/lib/workbench-view.provider.d.ts.map +1 -1
  52. package/dist/lib/workbench-view.provider.js +20 -4
  53. package/dist/lib/workbench-view.provider.js.map +1 -1
  54. package/dist/lib/workbench.middleware.d.ts +8 -8
  55. package/dist/lib/workbench.plugin.d.ts +3 -3
  56. package/dist/lib/workbench.plugin.d.ts.map +1 -1
  57. package/dist/lib/workbench.plugin.js +6 -6
  58. package/dist/lib/workbench.plugin.js.map +1 -1
  59. package/dist/lib/workbench.service.d.ts +4 -33
  60. package/dist/lib/workbench.service.d.ts.map +1 -1
  61. package/dist/lib/workbench.service.js +236 -265
  62. package/dist/lib/workbench.service.js.map +1 -1
  63. package/package.json +1 -1
  64. package/dist/lib/legacy-schema-cleanup.d.ts +0 -9
  65. package/dist/lib/legacy-schema-cleanup.d.ts.map +0 -1
  66. package/dist/lib/legacy-schema-cleanup.js +0 -28
  67. package/dist/lib/legacy-schema-cleanup.js.map +0 -1
  68. package/dist/lib/remote-ui/pages/analytics-prototype.css +0 -307
@@ -285,6 +285,8 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
285
285
  .tcw-filter-control--range > div { grid-template-columns: 1fr; }
286
286
  .tcw-filter-control--range em { text-align: center; }
287
287
  .tcw-pagination > div { flex-wrap: wrap; max-width: 100%; }
288
+ .tcw-page-analytics .tcw-topbar { align-items: stretch; flex-direction: column; gap: 4px; margin-inline: 0; padding: 6px 8px; }
289
+ .tcw-page-analytics .tcw-topbar-actions { width: 100%; justify-content: flex-end; gap: 4px; }
288
290
  }
289
291
 
290
292
  .tcw-home-page { display: grid; min-width: 0; gap: 8px; }
@@ -539,16 +541,11 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
539
541
 
540
542
  .tcw-page-analytics .tcw-content { container: tcw-analytics-content / inline-size; padding: 16px 24px 18px; background: #fbfcff; }
541
543
  .tcw-analytics-page { display: grid; min-width: 0; gap: 9px; }
542
- .tcw-analytics-overview-header { display: flex; min-width: 0; align-items: flex-end; justify-content: space-between; gap: 12px; }
543
- .tcw-analytics-overview-header .tcw-page-tabs { min-width: 0; flex: 1 1 auto; }
544
- .tcw-analytics-summary { display: grid; min-width: 0; gap: 8px; }
545
544
  .tcw-analytics-query { display: grid; grid-template-columns: minmax(0, 1fr); align-items: center; min-width: 0; gap: 8px; }
546
- .tcw-analytics-query .tcw-filter-panel { display: none; margin-bottom: 0; }
547
545
  .tcw-page-tabs { display: flex; min-height: 34px; gap: 12px; border-bottom: 1px solid var(--tcw-border); }
548
546
  .tcw-page-tabs button { position: relative; padding: 0 2px 8px; border: 0; color: var(--tcw-muted); background: transparent; font-size: 14px; font-weight: 650; }
549
547
  .tcw-page-tabs button[aria-selected="true"] { color: var(--tcw-primary); }
550
548
  .tcw-page-tabs button[aria-selected="true"]::after { position: absolute; right: 0; bottom: -1px; left: 0; height: 2px; background: var(--tcw-primary); content: ""; }
551
- .tcw-analytics-year { color: var(--tcw-muted); font-size: 12px; font-weight: 650; }
552
549
  .tcw-analytics-toolbar { display: flex; min-width: 0; min-height: 32px; flex-wrap: wrap; align-items: center; gap: 8px; padding: 0; border: 0; border-radius: 0; background: transparent; }
553
550
  .tcw-analytics-toolbar > .tcw-button { margin-left: 0; }
554
551
  .tcw-analytics-toolbar > .tcw-button:last-child { margin-left: auto; }
@@ -556,123 +553,13 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
556
553
  .tcw-segmented-control button { min-width: 90px; min-height: 34px; padding: 0 13px; border: 0; border-right: 1px solid var(--tcw-border); color: #4b586b; background: #fff; }
557
554
  .tcw-segmented-control button:last-child { border-right: 0; }
558
555
  .tcw-segmented-control button[aria-pressed="true"] { color: var(--tcw-primary); background: var(--tcw-primary-soft); font-weight: 650; }
559
- .tcw-analytics-switches { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
560
556
  .tcw-toggle { display: inline-flex; min-height: 32px; align-items: center; gap: 7px; color: #46546a; font-size: 13px; }
561
557
  .tcw-toggle input { width: 16px; height: 16px; margin: 0; accent-color: var(--tcw-primary); }
562
558
  .tcw-inline-loading { display: flex; min-height: 42px; align-items: center; justify-content: center; gap: 9px; border: 1px solid #bcd6f2; color: #285c91; background: #f0f7ff; }
563
- .tcw-analytics-page .tcw-metric-grid { display: grid; grid-template-columns: repeat(5, minmax(136px, 1fr)); gap: 8px; min-width: 0; margin-bottom: 0; overflow-x: auto; }
564
- .tcw-analytics-page .tcw-metric-grid article { display: grid; min-width: 136px; min-height: 64px; align-content: center; gap: 3px; padding: 7px 10px; border: 1px solid var(--tcw-border); border-left: 1px solid var(--tcw-border); border-radius: 5px; background: var(--tcw-surface); }
565
- .tcw-analytics-page .tcw-metric-grid span { color: var(--tcw-muted); font-size: 12px; }
566
- .tcw-analytics-page .tcw-metric-grid strong { min-width: 0; overflow: hidden; color: #202b3c; font-size: 17px; text-overflow: ellipsis; white-space: nowrap; }
567
- .tcw-analytics-page .tcw-sales-top { display: grid; min-width: 0; gap: 6px; margin-bottom: 0; padding: 8px 10px; border: 0; border-top: 1px solid var(--tcw-border); border-bottom: 1px solid var(--tcw-border); border-radius: 0; background: #fbfcfe; }
568
- .tcw-analytics-page .tcw-sales-top > strong { font-size: 13px; }
569
- .tcw-analytics-page .tcw-sales-top ol { display: grid; grid-template-columns: repeat(5, minmax(140px, 1fr)); gap: 0; margin: 0; padding: 0; overflow-x: auto; list-style: none; counter-reset: analytics-top; }
570
- .tcw-analytics-page .tcw-sales-top li { display: grid; min-width: 140px; grid-template-columns: 22px minmax(0, 1fr); gap: 2px 7px; padding: 2px 8px; border-left: 0; border-right: 1px solid var(--tcw-border-soft); counter-increment: analytics-top; }
571
- .tcw-analytics-page .tcw-sales-top li::before { grid-row: 1 / 3; align-self: center; color: var(--tcw-primary); font-weight: 700; content: counter(analytics-top); }
572
- .tcw-analytics-page .tcw-sales-top li span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
573
- .tcw-analytics-page .tcw-sales-top li b { color: #263448; font-size: 12px; font-weight: 650; }
574
- .tcw-analytics-page .tcw-sales-top small { color: var(--tcw-muted); }
575
- .tcw-analytics-workbench { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(280px, .75fr); gap: 10px; min-width: 0; }
576
- .tcw-analytics-visual-canvas { grid-template-columns: minmax(0, 1fr); padding: 11px; border: 1px solid var(--tcw-border); border-radius: 6px; background: #fbfcfe; }
577
- .tcw-analytics-visual-head { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 10px; border-bottom: 1px solid var(--tcw-border-soft); }
578
- .tcw-analytics-visual-head > div { display: grid; min-width: 0; gap: 3px; }
579
- .tcw-analytics-visual-head strong { display: inline-flex; align-items: center; gap: 7px; color: #202b3c; font-size: 15px; }
580
- .tcw-analytics-visual-head span, .tcw-analytics-chart-card header small { color: var(--tcw-muted); font-size: 12px; line-height: 1.4; }
581
- .tcw-analytics-visual-head button { display: inline-flex; flex: 0 0 auto; min-height: 31px; align-items: center; gap: 5px; padding: 0 10px; border: 1px solid var(--tcw-border); border-radius: 4px; color: #40516a; background: #fff; }
582
- .tcw-analytics-command-center { display: grid; min-width: 0; gap: 10px; }
583
- .tcw-analytics-backlog { min-width: 0; border: 1px solid var(--tcw-border); border-radius: 5px; background: var(--tcw-surface); }
584
- .tcw-analytics-backlog > strong { display: inline-flex; min-width: 0; align-items: center; gap: 7px; color: #202b3c; }
585
- .tcw-analytics-backlog button { display: inline-flex; min-height: 30px; align-items: center; gap: 5px; padding: 0 9px; border: 1px solid var(--tcw-border); border-radius: 4px; color: #40516a; background: #fff; }
586
- .tcw-analytics-backlog { display: grid; align-content: start; gap: 10px; padding: 11px; border-left: 3px solid var(--tcw-danger); }
587
- .tcw-analytics-backlog-label { width: fit-content; padding: 3px 7px; border-radius: 3px; color: #8a4f05; background: #fff4df; font-size: 12px; font-weight: 700; }
588
- .tcw-analytics-backlog dl { display: grid; gap: 8px; margin: 0; }
589
- .tcw-analytics-backlog dl div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; padding: 9px; border: 1px solid var(--tcw-border-soft); border-radius: 4px; background: #fbfcfe; }
590
- .tcw-analytics-backlog dt { color: var(--tcw-muted); }
591
- .tcw-analytics-backlog dd { margin: 0; color: #202b3c; font-weight: 700; }
592
- .tcw-analytics-dashboard { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(280px, .72fr); gap: 10px; min-width: 0; }
593
- .tcw-analytics-chart-grid { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(260px, .9fr); gap: 10px; min-width: 0; }
594
- .tcw-analytics-chart-card { display: grid; grid-template-rows: auto minmax(112px, 1fr); min-width: 0; min-height: 172px; padding: 11px; border: 1px solid var(--tcw-border); border-radius: 5px; background: var(--tcw-surface); }
595
- .tcw-analytics-chart-card--wide { grid-column: span 1; }
596
- .tcw-analytics-chart-card header { display: grid; min-width: 0; gap: 3px; margin-bottom: 8px; }
597
- .tcw-analytics-chart-card header strong { display: inline-flex; min-width: 0; align-items: center; gap: 6px; overflow: hidden; color: #202b3c; text-overflow: ellipsis; white-space: nowrap; }
598
- .tcw-analytics-chart-card header button { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 4px; min-height: 28px; padding: 0 8px; border: 1px solid var(--tcw-border); border-radius: 4px; color: #40516a; background: #fff; font-size: 12px; }
599
- .tcw-analytics-trend { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); align-items: end; gap: 8px; min-height: 124px; padding: 12px 10px 0; background: repeating-linear-gradient(to bottom, #fff 0 30px, #e9edf3 31px); }
600
- .tcw-analytics-trend i { position: relative; display: block; min-height: 10px; border-radius: 4px 4px 0 0; background: linear-gradient(180deg, #5c9ded, #2d77cf); }
601
- .tcw-analytics-trend span { position: absolute; right: 0; bottom: -18px; left: 0; color: var(--tcw-muted); text-align: center; font-size: 10px; font-style: normal; }
602
559
  .tcw-analytics-donut { display: grid; width: 126px; height: 126px; place-content: center; justify-self: center; align-self: center; border-radius: 50%; background: radial-gradient(circle, #fff 0 48%, transparent 49%), conic-gradient(#4d91e8 0 70%, #f3b64b 70% 88%, #d94a4a 88%); text-align: center; }
603
560
  .tcw-analytics-donut strong { font-size: 22px; }
604
561
  .tcw-analytics-donut span { color: var(--tcw-muted); font-size: 12px; }
605
- .tcw-analytics-stacked-bar { display: grid; align-content: center; gap: 12px; min-width: 0; }
606
- .tcw-analytics-stacked-bar > div { display: flex; width: 100%; height: 20px; overflow: hidden; border-radius: 999px; background: #edf2f8; }
607
- .tcw-analytics-stacked-bar > div i { min-width: 2px; }
608
- .tcw-analytics-stacked-bar dl { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 12px; margin: 0; }
609
- .tcw-analytics-stacked-bar dt { display: inline-flex; min-width: 0; align-items: center; gap: 6px; color: #40516a; }
610
- .tcw-analytics-stacked-bar dt i { width: 8px; height: 8px; flex: 0 0 8px; border-radius: 50%; }
611
- .tcw-analytics-stacked-bar dd { margin: 0; color: #202b3c; font-weight: 700; }
612
- .tcw-analytics-horizontal-bars { display: grid; align-content: center; gap: 9px; min-width: 0; }
613
- .tcw-analytics-horizontal-bars div { display: grid; grid-template-columns: minmax(72px, .9fr) minmax(0, 1.4fr) auto; align-items: center; gap: 9px; min-width: 0; }
614
- .tcw-analytics-horizontal-bars span { min-width: 0; overflow: hidden; color: #40516a; text-overflow: ellipsis; white-space: nowrap; }
615
- .tcw-analytics-horizontal-bars i { display: block; height: 11px; min-width: 8px; border-radius: 999px; background: linear-gradient(90deg, #307ed7, #67a9ef); }
616
- .tcw-analytics-horizontal-bars b { color: #202b3c; font-size: 12px; white-space: nowrap; }
617
- .tcw-analytics-donut-layout { display: grid; grid-template-columns: 132px minmax(0, 1fr); align-items: center; gap: 12px; min-width: 0; }
618
- .tcw-analytics-donut-layout dl { display: grid; gap: 8px; margin: 0; }
619
- .tcw-analytics-donut-layout dl div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; padding: 8px 9px; border: 1px solid var(--tcw-border-soft); border-radius: 4px; background: #fbfcfe; }
620
- .tcw-analytics-donut-layout dt { color: var(--tcw-muted); }
621
- .tcw-analytics-donut-layout dd { margin: 0; color: #202b3c; font-weight: 700; }
622
- .tcw-analytics-donut-layout .is-risk { border-left: 3px solid var(--tcw-danger); }
623
- .tcw-analytics-donut-layout .is-warn { border-left: 3px solid #e0a22d; }
624
- .tcw-analytics-donut-layout .is-audit { border-left: 3px solid var(--tcw-primary); }
625
- .tcw-analytics-bars { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); align-items: end; gap: 9px; min-height: 112px; padding-top: 8px; }
626
- .tcw-analytics-bars span { display: grid; min-width: 0; height: 112px; grid-template-rows: minmax(0, 1fr) auto; align-items: end; gap: 6px; }
627
- .tcw-analytics-bars i { display: block; width: 100%; min-height: 8px; border-radius: 4px 4px 0 0; background: #4c8fe3; }
628
- .tcw-analytics-bars.is-line i { border-radius: 999px; background: #20a58f; }
629
- .tcw-analytics-bars.is-donut i { border-radius: 50% 50% 0 0; background: #f0b34a; }
630
- .tcw-analytics-bars b { min-width: 0; overflow: hidden; color: var(--tcw-muted); text-align: center; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
631
- .tcw-analytics-audit-list { display: grid; align-content: center; gap: 9px; margin: 0; }
632
- .tcw-analytics-audit-list div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; padding: 9px 10px; border: 1px solid var(--tcw-border-soft); border-radius: 4px; background: #fbfcfe; }
633
- .tcw-analytics-audit-list dt { color: var(--tcw-muted); }
634
- .tcw-analytics-audit-list dd { margin: 0; font-weight: 700; }
635
- .tcw-analytics-dashboard-actions { display: grid; align-content: start; gap: 8px; min-width: 0; padding: 10px; border: 1px solid var(--tcw-border); border-radius: 5px; background: #fbfcfe; }
636
- .tcw-analytics-dashboard-actions button { display: inline-flex; width: 100%; min-height: 36px; align-items: center; justify-content: flex-start; gap: 8px; padding: 0 11px; border: 1px solid var(--tcw-border); border-radius: 4px; color: #35465d; background: #fff; }
637
- .tcw-analytics-drilldown { display: grid; min-width: 0; gap: 10px; padding: 10px; border: 1px solid var(--tcw-border); border-left: 3px solid var(--tcw-primary); border-radius: 5px; background: var(--tcw-surface); }
638
- .tcw-analytics-drilldown.is-risk { border-left-color: var(--tcw-danger); }
639
- .tcw-analytics-drilldown header { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 10px; }
640
- .tcw-analytics-drilldown header button { display: inline-flex; align-items: center; gap: 5px; min-height: 30px; padding: 0 9px; border: 1px solid var(--tcw-border); border-radius: 4px; color: #455266; background: #fff; }
641
- .tcw-analytics-drilldown-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
642
- .tcw-analytics-drilldown-metrics article { display: grid; gap: 4px; padding: 9px; border: 1px solid var(--tcw-border-soft); border-radius: 4px; background: #fbfcfe; }
643
- .tcw-analytics-drilldown-metrics span { color: var(--tcw-muted); font-size: 12px; }
644
- .tcw-analytics-modal-deck { position: fixed; inset: 0; z-index: 1100; display: grid; place-items: center; padding: 18px; background: rgba(10, 18, 30, .38); }
645
- .tcw-analytics-modal-deck[hidden] { display: none; }
646
- .tcw-analytics-modal { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; width: min(620px, calc(100vw - 36px)); max-height: calc(100vh - 36px); overflow: hidden; border: 1px solid var(--tcw-border); border-radius: 6px; background: var(--tcw-surface); box-shadow: 0 18px 56px rgba(15, 23, 42, .18); }
647
- .tcw-analytics-modal:has(.tcw-analytics-detail-modal) { width: min(1080px, calc(100vw - 36px)); }
648
- .tcw-analytics-modal[hidden] { display: none; }
649
- .tcw-analytics-modal > header, .tcw-analytics-modal > footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 52px; padding: 10px 16px; border-bottom: 1px solid var(--tcw-border); }
650
- .tcw-analytics-modal > footer { justify-content: flex-end; border-top: 1px solid var(--tcw-border); border-bottom: 0; }
651
- .tcw-analytics-modal-title { margin: 0; font-size: 17px; }
652
- .tcw-analytics-modal-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; min-width: 0; }
653
- .tcw-analytics-quick-range { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; min-width: 0; }
654
- .tcw-analytics-quick-range button, .tcw-analytics-chart-config button { display: inline-flex; min-width: 0; min-height: 32px; align-items: center; justify-content: center; gap: 5px; padding: 0 8px; border: 1px solid var(--tcw-border); border-radius: 4px; color: #455266; background: #fff; white-space: normal; }
655
- .tcw-analytics-quick-range button.is-active, .tcw-analytics-chart-config button.is-active { border-color: var(--tcw-primary); color: var(--tcw-primary); background: var(--tcw-primary-soft); }
656
- .tcw-analytics-date-range { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: 7px; align-items: center; min-width: 0; }
657
- .tcw-analytics-date-range em { color: var(--tcw-muted); font-style: normal; }
658
- .tcw-analytics-export-panel { display: grid; min-width: 0; gap: 14px; }
659
- .tcw-analytics-export-panel > button { display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 3px 10px; min-width: 0; padding: 11px; border: 1px solid var(--tcw-border); border-radius: 5px; color: #344054; background: #fff; text-align: left; }
660
- .tcw-analytics-export-panel > button > i { grid-row: 1 / 3; align-self: center; color: var(--tcw-primary); font-size: 22px; }
661
- .tcw-analytics-export-panel > button > strong, .tcw-analytics-export-panel > button > span { min-width: 0; }
662
- .tcw-analytics-export-panel > button > span { color: var(--tcw-muted); font-size: 12px; line-height: 1.45; }
663
- .tcw-analytics-export-panel fieldset { display: flex; min-width: 0; flex-wrap: wrap; gap: 10px 18px; margin: 0; padding: 10px; border: 1px solid var(--tcw-border); border-radius: 4px; }
664
- .tcw-analytics-export-panel legend { padding: 0 5px; color: #344054; font-weight: 650; }
665
- .tcw-analytics-export-panel label { display: inline-flex; min-width: 0; align-items: center; gap: 6px; }
666
- .tcw-analytics-export-fields { display: grid; width: 100%; max-height: 188px; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; overflow: auto; }
667
- .tcw-analytics-chart-config { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
668
- .tcw-analytics-chart-config .tcw-form-field { grid-column: 1 / -1; }
669
- .tcw-analytics-metric-help { display: grid; gap: 12px; margin: 0; }
670
- .tcw-analytics-metric-help div { display: grid; gap: 4px; padding: 10px; border: 1px solid var(--tcw-border-soft); border-radius: 4px; background: #fbfcfe; }
671
- .tcw-analytics-metric-help dt { font-weight: 700; }
672
- .tcw-analytics-metric-help dd { margin: 0; color: var(--tcw-muted); line-height: 1.5; }
673
562
  .tcw-analytics-cockpit-hero { display: flex; min-width: 0; align-items: flex-end; justify-content: space-between; gap: 16px; padding: 0 0 2px; border: 0; border-radius: 0; background: transparent; }
674
- .tcw-analytics-cockpit-crumbs { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; color: #667085; font-size: 12px; }
675
- .tcw-analytics-cockpit-crumbs strong { color: #344054; font-weight: 500; }
676
563
  .tcw-analytics-cockpit-hero h1 { display: inline; margin: 0; color: #101828; font-size: 24px; line-height: 1.22; letter-spacing: 0; }
677
564
  .tcw-analytics-cockpit-hero p { display: inline; margin: 0 0 0 14px; color: #667085; font-size: 13px; }
678
565
  .tcw-analytics-page-actions { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 12px; }
@@ -688,26 +575,24 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
688
575
  .tcw-analytics-period button[aria-pressed="true"] { color: #1769ff; background: #eaf4ff; font-weight: 700; }
689
576
  .tcw-analytics-cockpit { display: grid; min-width: 0; gap: 9px; }
690
577
  .tcw-analytics-kpi-grid { display: grid; grid-template-columns: repeat(10, minmax(118px, 1fr)); gap: 8px; min-width: 0; }
691
- .tcw-analytics-kpi-grid button { position: relative; display: grid; min-width: 0; min-height: 90px; grid-template-columns: minmax(0, 1fr) 24px; gap: 4px 7px; align-content: center; padding: 10px 10px 8px; overflow: hidden; border: 1px solid #e2e8f0; border-left: 3px solid #1769ff; border-radius: 5px; background: #fff; text-align: left; box-shadow: 0 3px 10px rgba(15, 23, 42, .045); }
692
- .tcw-analytics-kpi-grid button i { grid-column: 2; grid-row: 1 / 3; width: 23px; height: 23px; border-radius: 5px; display: inline-flex; align-items: center; justify-content: center; color: #1769ff; background: #eff6ff; font-size: 15px; }
693
- .tcw-analytics-kpi-grid button.is-success { border-left-color: #18a058; }
694
- .tcw-analytics-kpi-grid button.is-success i { color: #18a058; background: #eaf8f0; }
695
- .tcw-analytics-kpi-grid button.is-warn { border-left-color: #ff8a00; }
696
- .tcw-analytics-kpi-grid button.is-warn i { color: #ff8a00; background: #fff4e5; }
697
- .tcw-analytics-kpi-grid button.is-risk { border-left-color: #ff4d55; }
698
- .tcw-analytics-kpi-grid button.is-risk i { color: #ff4d55; background: #fff0f1; }
699
- .tcw-analytics-kpi-grid button.is-audit { border-left-color: #7c6ee6; }
700
- .tcw-analytics-kpi-grid button.is-audit i { color: #7c6ee6; background: #f1efff; }
578
+ .tcw-analytics-kpi-grid article { position: relative; display: grid; min-width: 0; min-height: 90px; grid-template-columns: minmax(0, 1fr) 24px; gap: 4px 7px; align-content: center; padding: 10px 10px 8px; overflow: hidden; border: 1px solid #e2e8f0; border-left: 3px solid #1769ff; border-radius: 5px; background: #fff; text-align: left; box-shadow: 0 3px 10px rgba(15, 23, 42, .045); }
579
+ .tcw-analytics-kpi-grid article > i { grid-column: 2; grid-row: 1 / 3; width: 23px; height: 23px; border-radius: 5px; display: inline-flex; align-items: center; justify-content: center; color: #1769ff; background: #eff6ff; font-size: 15px; }
580
+ .tcw-analytics-kpi-grid article.is-success { border-left-color: #18a058; }
581
+ .tcw-analytics-kpi-grid article.is-success > i { color: #18a058; background: #eaf8f0; }
582
+ .tcw-analytics-kpi-grid article.is-warn { border-left-color: #ff8a00; }
583
+ .tcw-analytics-kpi-grid article.is-warn > i { color: #ff8a00; background: #fff4e5; }
584
+ .tcw-analytics-kpi-grid article.is-risk { border-left-color: #ff4d55; }
585
+ .tcw-analytics-kpi-grid article.is-risk > i { color: #ff4d55; background: #fff0f1; }
701
586
  .tcw-analytics-kpi-grid span { min-width: 0; overflow: hidden; color: #475467; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
702
587
  .tcw-analytics-kpi-grid strong { grid-column: 1 / -1; min-width: 0; color: #0f5bb5; font-size: 16px; white-space: nowrap; }
703
- .tcw-analytics-kpi-grid button.is-success strong { color: #099250; }
704
- .tcw-analytics-kpi-grid button.is-warn strong { color: #f97316; }
705
- .tcw-analytics-kpi-grid button.is-risk strong { color: #f04438; }
588
+ .tcw-analytics-kpi-grid article.is-success strong { color: #099250; }
589
+ .tcw-analytics-kpi-grid article.is-warn strong { color: #f97316; }
590
+ .tcw-analytics-kpi-grid article.is-risk strong { color: #f04438; }
706
591
  .tcw-analytics-kpi-grid small { grid-column: 1 / -1; display: inline-flex; min-width: 0; gap: 5px; overflow: hidden; color: #667085; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
707
592
  .tcw-analytics-kpi-grid small em { color: #667085; font-style: normal; }
708
593
  .tcw-analytics-kpi-grid small b { color: #12b76a; font-weight: 700; }
709
594
  .tcw-analytics-cockpit-layout { display: grid; gap: 10px; min-width: 0; }
710
- .tcw-analytics-layout-row { display: grid; min-width: 0; gap: 10px; align-items: stretch; }
595
+ .tcw-analytics-layout-row { display: grid; width: 100%; min-width: 0; box-sizing: border-box; gap: 10px; align-items: stretch; }
711
596
  .tcw-analytics-layout-row--charts { grid-template-columns: minmax(0, .86fr) minmax(0, 1.28fr) minmax(0, 1fr) minmax(0, 1.08fr); }
712
597
  .tcw-analytics-layout-row--top5, .tcw-analytics-layout-row--bottom { grid-template-columns: repeat(3, minmax(0, 1fr)); }
713
598
  .tcw-analytics-panel { display: grid; min-width: 0; grid-template-rows: auto minmax(0, 1fr); align-content: stretch; gap: 7px; min-height: 0; padding: 9px 12px; overflow: hidden; border: 1px solid #e1e7ef; border-radius: 6px; background: #fff; box-shadow: 0 3px 12px rgba(15, 23, 42, .035); }
@@ -717,9 +602,8 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
717
602
  .tcw-analytics-panel > header { display: flex; min-width: 0; align-items: center; justify-content: space-between; min-height: 23px; padding-bottom: 7px; border-bottom: 1px solid #edf2f7; }
718
603
  .tcw-analytics-panel > header strong { display: inline-flex; min-width: 0; align-items: center; gap: 7px; overflow: hidden; color: #1f334c; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
719
604
  .tcw-analytics-panel > header i { color: #2d7dd2; font-size: 16px; }
720
- .tcw-analytics-panel-link { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 2px; padding: 0; border: 0; color: #2d7dd2; background: transparent; text-decoration: none; font-size: 12px; font-weight: 650; white-space: nowrap; cursor: pointer; }
721
- .tcw-analytics-panel-link:hover { color: #185da4; text-decoration: underline; }
722
- .tcw-analytics-todo-list, .tcw-analytics-table-list, .tcw-analytics-file-list, .tcw-analytics-source-list { display: grid; min-width: 0; gap: 6px; }
605
+ .tcw-analytics-view-all { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 3px; padding: 0; border: 0; color: #1769c2; background: transparent; font-size: 12px; font-weight: 650; }
606
+ .tcw-analytics-view-all:hover { text-decoration: underline; }
723
607
  .tcw-analytics-todo-board { display: grid; min-width: 0; align-content: start; font-size: 11px; }
724
608
  .tcw-analytics-todo-head, .tcw-analytics-todo-row { display: grid; grid-template-columns: minmax(0, 1.25fr) 34px minmax(76px, .86fr) 40px; align-items: center; gap: 5px; min-width: 0; }
725
609
  .tcw-analytics-todo-head { height: 22px; padding: 0 4px; color: #6d7b8f; background: #f8fbff; font-weight: 650; }
@@ -729,24 +613,6 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
729
613
  .tcw-analytics-todo-row span i { color: #1769ff; font-size: 12px; }
730
614
  .tcw-analytics-todo-row b, .tcw-analytics-todo-row em { min-width: 0; overflow: hidden; text-align: right; text-overflow: ellipsis; white-space: nowrap; }
731
615
  .tcw-analytics-todo-row em { color: #344054; font-style: normal; }
732
- .tcw-analytics-todo-table { width: 100%; min-width: 0; border-collapse: collapse; table-layout: fixed; color: #26364a; font-size: 12px; }
733
- .tcw-analytics-todo-table th, .tcw-analytics-todo-table td { overflow: hidden; padding: 7px 6px; border-bottom: 1px solid #edf2f7; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
734
- .tcw-analytics-todo-table th { color: #6d7b8f; background: #f8fbff; font-weight: 650; }
735
- .tcw-analytics-todo-table td:nth-child(2), .tcw-analytics-todo-table th:nth-child(2) { width: 58px; text-align: right; }
736
- .tcw-analytics-todo-table td:nth-child(3), .tcw-analytics-todo-table th:nth-child(3) { width: 68px; text-align: center; }
737
- .tcw-analytics-todo-table td:nth-child(4), .tcw-analytics-todo-table th:nth-child(4) { width: 70px; text-align: right; }
738
- .tcw-analytics-todo-list article { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 8px; padding: 7px 8px; border: 1px solid #edf2f7; border-left: 3px solid #2d7dd2; border-radius: 5px; background: #fbfdff; }
739
- .tcw-analytics-todo-list article.is-high { border-left-color: #d95040; }
740
- .tcw-analytics-todo-list article.is-medium { border-left-color: #e69f2a; }
741
- .tcw-analytics-todo-list strong, .tcw-analytics-todo-list span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
742
- .tcw-analytics-todo-list span { grid-column: 1 / -1; color: var(--tcw-muted); font-size: 12px; }
743
- .tcw-analytics-todo-list b { color: #1f334c; font-size: 12px; }
744
- .tcw-analytics-month-chart { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); align-items: end; gap: 7px; min-height: 118px; padding: 10px 8px 0; border: 1px solid #edf2f7; border-radius: 5px; background: repeating-linear-gradient(to bottom, #fff 0 25px, #f0f4f8 26px); }
745
- .tcw-analytics-month-chart div { display: grid; height: 104px; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: minmax(0, 1fr) 18px; align-items: end; gap: 0 2px; min-width: 0; }
746
- .tcw-analytics-month-chart i { display: block; min-height: 6px; border-radius: 4px 4px 0 0; }
747
- .tcw-analytics-month-chart .is-purchase { background: #91b8e6; }
748
- .tcw-analytics-month-chart .is-sales { background: #2d7dd2; }
749
- .tcw-analytics-month-chart span { grid-column: 1 / -1; color: var(--tcw-muted); text-align: center; font-size: 10px; }
750
616
  .tcw-analytics-line-chart { position: relative; min-width: 0; height: 138px; border: 1px solid #edf2f7; border-radius: 5px; background: linear-gradient(180deg, #ffffff, #fbfdff); }
751
617
  .tcw-analytics-line-chart svg { display: block; width: 100%; height: 100%; }
752
618
  .tcw-analytics-line-chart line { stroke: #edf2f7; stroke-width: 1; }
@@ -770,7 +636,6 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
770
636
  .tcw-analytics-chart-legend .is-purchase { background: #91b8e6; }
771
637
  .tcw-analytics-chart-legend .is-profit { background: #31a776; }
772
638
  .tcw-analytics-chart-legend .is-received { background: #f97316; }
773
- .tcw-analytics-trend-summary { display: none; }
774
639
  .tcw-analytics-money-structure { display: grid; min-width: 0; align-content: start; gap: 6px; height: 100%; font-size: 11px; }
775
640
  .tcw-analytics-money-head, .tcw-analytics-money-row { display: grid; grid-template-columns: 70px minmax(0, 1fr) 70px 48px; align-items: center; gap: 7px; min-width: 0; }
776
641
  .tcw-analytics-money-head { color: #6d7b8f; }
@@ -794,23 +659,12 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
794
659
  .tcw-analytics-risk-distribution dt { display: inline-flex; align-items: center; gap: 6px; color: #56677f; font-size: 11px; }
795
660
  .tcw-analytics-risk-distribution dt i { width: 8px; height: 8px; border-radius: 50%; }
796
661
  .tcw-analytics-risk-distribution dd { margin: 0; color: #1f334c; font-size: 11px; font-weight: 700; }
797
- .tcw-analytics-table-list article, .tcw-analytics-file-list article, .tcw-analytics-source-list article, .tcw-analytics-source-list button { display: grid; min-width: 0; gap: 3px; padding: 8px 8px; border: 0; border-bottom: 1px solid #edf2f7; background: transparent; color: inherit; text-align: left; text-decoration: none; cursor: pointer; }
798
- .tcw-analytics-table-list article:last-child, .tcw-analytics-file-list article:last-child, .tcw-analytics-source-list article:last-child, .tcw-analytics-source-list button:last-child { border-bottom: 0; }
662
+ .tcw-analytics-source-list article { display: grid; min-width: 0; gap: 2px; padding: 1px 0; border: 0; border-bottom: 1px solid #edf2f7; background: transparent; color: inherit; text-align: left; text-decoration: none; }
663
+ .tcw-analytics-source-list article:last-child { border-bottom: 0; }
799
664
  .tcw-analytics-source-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-content: start; gap: 0 18px; height: 100%; }
800
- .tcw-analytics-source-list button { grid-template-columns: 18px minmax(0, 1fr); align-items: center; min-height: 29px; padding: 3px 0; }
801
- .tcw-analytics-source-list button > i { color: #2d7dd2; font-size: 14px; }
802
- .tcw-analytics-source-list button:hover strong { color: #2d7dd2; text-decoration: underline; }
803
- .tcw-analytics-table-list span, .tcw-analytics-file-list strong, .tcw-analytics-source-list strong { min-width: 0; overflow: hidden; color: #1f334c; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; font-weight: 700; }
804
- .tcw-analytics-table-list span { white-space: normal; line-height: 1.35; }
805
- .tcw-analytics-table-list b { color: #2d7dd2; }
806
- .tcw-analytics-table-list small, .tcw-analytics-file-list span, .tcw-analytics-file-list small, .tcw-analytics-source-list span { min-width: 0; overflow: hidden; color: var(--tcw-muted); text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
807
- .tcw-analytics-info-list { width: 100%; border-collapse: collapse; table-layout: fixed; color: #26364a; font-size: 12px; }
808
- .tcw-analytics-info-list th, .tcw-analytics-info-list td { overflow: hidden; padding: 9px 8px; border-bottom: 1px solid #edf2f7; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
809
- .tcw-analytics-info-list th { color: #6d7b8f; background: #f8fbff; font-weight: 650; }
810
- .tcw-analytics-info-list th:first-child, .tcw-analytics-info-list td:first-child { width: 30%; }
811
- .tcw-analytics-info-list th:last-child, .tcw-analytics-info-list td:last-child { width: 86px; text-align: right; }
812
- .tcw-analytics-info-action { display: inline-flex; align-items: center; justify-content: center; gap: 4px; min-height: 26px; padding: 0 9px; border: 1px solid #cfe0f2; border-radius: 4px; color: #1769ff; background: #f0f7ff; font-size: 12px; font-weight: 650; cursor: pointer; }
813
- .tcw-analytics-row-action, .tcw-analytics-todo-action { display: inline-flex; align-items: center; justify-content: center; gap: 4px; min-height: 24px; padding: 0 7px; border: 1px solid #cfe0f2; border-radius: 4px; color: #1769ff; background: #f0f7ff; font-size: 11px; font-weight: 650; cursor: pointer; white-space: nowrap; }
665
+ .tcw-analytics-source-item { display: grid; min-width: 0; grid-template-columns: 18px minmax(0, 1fr); align-items: center; min-height: 24px; }
666
+ .tcw-analytics-source-item > i { color: #2d7dd2; font-size: 14px; }
667
+ .tcw-analytics-source-list strong { min-width: 0; overflow: hidden; color: #1f334c; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; font-weight: 700; }
814
668
  .tcw-analytics-risk-orders { display: grid; min-width: 0; gap: 6px; }
815
669
  .tcw-analytics-risk-orders article { display: grid; grid-template-columns: minmax(96px, .75fr) minmax(0, 1fr) minmax(80px, .7fr) auto auto; align-items: center; gap: 8px; min-width: 0; padding: 8px; border: 1px solid #edf2f7; border-radius: 5px; background: #fbfdff; }
816
670
  .tcw-analytics-risk-orders span, .tcw-analytics-risk-orders b, .tcw-analytics-risk-orders em { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@@ -820,6 +674,7 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
820
674
  .tcw-analytics-dashboard-table { width: 100%; min-width: 0; border-collapse: collapse; table-layout: fixed; color: #26364a; font-size: 10px; }
821
675
  .tcw-analytics-dashboard-table th, .tcw-analytics-dashboard-table td { overflow: hidden; padding: 5px 6px; border-bottom: 1px solid #edf2f7; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
822
676
  .tcw-analytics-dashboard-table th { color: #6d7b8f; background: #f8fbff; font-weight: 650; }
677
+ .tcw-analytics-dashboard-table th { white-space: normal; overflow-wrap: anywhere; line-height: 1.25; }
823
678
  .tcw-analytics-dashboard-table td:nth-child(n+2), .tcw-analytics-dashboard-table th:nth-child(n+2) { text-align: right; }
824
679
  .tcw-analytics-dashboard-table td:first-child, .tcw-analytics-dashboard-table th:first-child { width: auto; }
825
680
  .tcw-analytics-table--customer th:nth-child(1), .tcw-analytics-table--customer td:nth-child(1) { width: 20px; color: #1769ff; text-align: center; }
@@ -829,7 +684,9 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
829
684
  .tcw-analytics-table--supplier th:nth-child(1), .tcw-analytics-table--supplier td:nth-child(1) { width: 30%; text-align: left; }
830
685
  .tcw-analytics-table--supplier th:nth-child(3), .tcw-analytics-table--supplier td:nth-child(3) { width: 64px; text-align: center; }
831
686
  .tcw-analytics-table--files th:nth-child(1), .tcw-analytics-table--files td:nth-child(1) { width: 28%; text-align: left; }
687
+ .tcw-analytics-table--files th:nth-child(-n+4), .tcw-analytics-table--files td:nth-child(-n+4) { text-align: left; }
832
688
  .tcw-analytics-table--files th:nth-child(4), .tcw-analytics-table--files td:nth-child(4) { width: 25%; text-align: left; }
689
+ .tcw-analytics-table--files th:nth-child(5), .tcw-analytics-table--files td:nth-child(5) { width: 64px; text-align: right; }
833
690
  .tcw-analytics-dashboard-table tbody tr:hover { background: #fbfdff; }
834
691
  .tcw-analytics-dashboard-table em { color: #d95040; font-style: normal; font-weight: 650; }
835
692
  .tcw-analytics-dashboard-table.tcw-analytics-risk-orders { display: table; }
@@ -842,9 +699,28 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
842
699
  .tcw-analytics-status.is-warn { color: #1769ff; background: #eaf4ff; }
843
700
  .tcw-analytics-status.is-danger { color: #c2412f; background: #fff0ed; }
844
701
  .tcw-analytics-empty { display: grid; min-height: 92px; place-items: center; color: var(--tcw-muted); border: 1px dashed #dbe5ef; border-radius: 5px; background: #fbfdff; }
845
- .tcw-analytics-detail-modal { display: grid; min-width: 0; gap: 10px; }
846
- .tcw-analytics-detail-note { display: inline-flex; min-width: 0; align-items: center; gap: 7px; padding: 8px 10px; border: 1px solid #cfe0f2; border-radius: 5px; color: #285c91; background: #f0f7ff; font-size: 12px; }
847
- .tcw-analytics-detail-modal .tcw-grid-section { max-height: min(62vh, 620px); overflow: auto; }
702
+ .tcw-analytics-custom-range { display: inline-grid; grid-template-columns: minmax(132px, 1fr) auto minmax(132px, 1fr) auto; align-items: center; gap: 7px; min-width: 0; }
703
+ .tcw-analytics-custom-range input { width: 100%; min-width: 0; height: 32px; padding: 0 8px; border: 1px solid var(--tcw-border); border-radius: 4px; background: #fff; }
704
+ .tcw-analytics-detail-page { display: grid; min-width: 0; gap: 12px; }
705
+ .tcw-analytics-detail-header { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 16px; }
706
+ .tcw-analytics-detail-header > div { display: flex; min-width: 0; align-items: center; gap: 12px; }
707
+ .tcw-analytics-detail-header h2 { min-width: 0; margin: 0; overflow: hidden; color: #17283f; text-overflow: ellipsis; white-space: nowrap; font-size: 20px; }
708
+ .tcw-analytics-detail-header > span { color: var(--tcw-muted); white-space: nowrap; }
709
+
710
+ @media (max-width: 1200px) {
711
+ .tcw-analytics-layout-row--charts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
712
+ .tcw-analytics-kpi-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
713
+ }
714
+
715
+ @media (max-width: 760px) {
716
+ .tcw-analytics-layout-row--charts { grid-template-columns: minmax(0, 1fr); }
717
+ .tcw-analytics-layout-row--top5 { grid-template-columns: minmax(0, 1fr); }
718
+ .tcw-analytics-layout-row--bottom { grid-template-columns: minmax(0, 1fr); }
719
+ .tcw-analytics-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
720
+ .tcw-analytics-custom-range { width: 100%; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); }
721
+ .tcw-analytics-custom-range .tcw-button { grid-column: 1 / -1; justify-self: start; }
722
+ .tcw-analytics-detail-header { align-items: flex-start; flex-direction: column; }
723
+ }
848
724
 
849
725
  @container tcw-analytics-content (max-width: 1320px) {
850
726
  .tcw-analytics-kpi-grid {
@@ -920,13 +796,31 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
920
796
  }
921
797
 
922
798
  @container tcw-analytics-content (max-width: 820px) {
923
- .tcw-analytics-kpi-grid,
799
+ .tcw-analytics-kpi-grid {
800
+ grid-template-columns: repeat(2, minmax(0, 1fr));
801
+ }
802
+
924
803
  .tcw-analytics-layout-row--charts {
925
804
  grid-template-columns: minmax(0, 1fr);
926
805
  }
927
806
 
928
- .tcw-analytics-kpi-grid button {
929
- min-height: 78px;
807
+ .tcw-analytics-kpi-grid article {
808
+ min-height: 68px;
809
+ padding: 6px 8px 5px;
810
+ }
811
+
812
+ .tcw-analytics-kpi-grid article > i {
813
+ width: 20px;
814
+ height: 20px;
815
+ font-size: 13px;
816
+ }
817
+
818
+ .tcw-analytics-kpi-grid strong {
819
+ font-size: 14px;
820
+ }
821
+
822
+ .tcw-analytics-kpi-grid small {
823
+ font-size: 10px;
930
824
  }
931
825
 
932
826
  .tcw-analytics-layout-row--charts .tcw-analytics-panel {
@@ -955,6 +849,97 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
955
849
  }
956
850
  }
957
851
 
852
+ @container tcw-analytics-content (max-width: 420px) {
853
+ .tcw-analytics-page-actions {
854
+ display: grid;
855
+ width: 100%;
856
+ grid-template-columns: minmax(0, 1fr);
857
+ }
858
+
859
+ .tcw-analytics-period {
860
+ grid-template-columns: repeat(3, minmax(0, 1fr));
861
+ }
862
+
863
+ .tcw-analytics-period button {
864
+ height: auto;
865
+ min-height: 34px;
866
+ padding: 4px 2px;
867
+ white-space: normal;
868
+ }
869
+
870
+ .tcw-analytics-kpi-grid strong {
871
+ overflow-wrap: anywhere;
872
+ white-space: normal;
873
+ font-size: 14px;
874
+ }
875
+
876
+ .tcw-analytics-todo-head,
877
+ .tcw-analytics-todo-row {
878
+ height: auto;
879
+ grid-template-columns: minmax(0, 1fr) auto;
880
+ grid-template-rows: auto auto;
881
+ gap: 2px 8px;
882
+ padding-block: 4px;
883
+ }
884
+
885
+ .tcw-analytics-todo-head span:nth-child(1),
886
+ .tcw-analytics-todo-row span {
887
+ grid-column: 1;
888
+ grid-row: 1;
889
+ }
890
+
891
+ .tcw-analytics-todo-head span:nth-child(2),
892
+ .tcw-analytics-todo-row b {
893
+ grid-column: 2;
894
+ grid-row: 1;
895
+ text-align: right;
896
+ }
897
+
898
+ .tcw-analytics-todo-head span:nth-child(3),
899
+ .tcw-analytics-todo-row em {
900
+ grid-column: 1;
901
+ grid-row: 2;
902
+ text-align: left;
903
+ }
904
+
905
+ .tcw-analytics-todo-head span:nth-child(4),
906
+ .tcw-analytics-todo-row .tcw-analytics-risk-badge {
907
+ grid-column: 2;
908
+ grid-row: 2;
909
+ justify-self: end;
910
+ }
911
+
912
+ .tcw-analytics-money-head,
913
+ .tcw-analytics-money-row {
914
+ grid-template-columns: minmax(0, 1fr) auto;
915
+ gap: 3px 5px;
916
+ }
917
+
918
+ .tcw-analytics-money-head span:first-child {
919
+ grid-column: 1;
920
+ }
921
+
922
+ .tcw-analytics-money-head span:last-child,
923
+ .tcw-analytics-money-row strong {
924
+ grid-column: 2;
925
+ }
926
+
927
+ .tcw-analytics-money-row em {
928
+ grid-column: 1;
929
+ }
930
+
931
+ .tcw-analytics-money-row b {
932
+ grid-column: 2;
933
+ grid-row: 1;
934
+ }
935
+
936
+ .tcw-analytics-risk-distribution .tcw-analytics-donut {
937
+ width: min(126px, 100%);
938
+ height: auto;
939
+ aspect-ratio: 1;
940
+ }
941
+ }
942
+
958
943
  .tcw-settings-page { display: grid; min-width: 0; grid-template-columns: 218px minmax(0, 1fr); min-height: 520px; border: 1px solid var(--tcw-border); background: var(--tcw-surface); }
959
944
  .tcw-settings-navigation { padding: 8px 0; border-right: 1px solid var(--tcw-border); background: #f8fafc; }
960
945
  .tcw-settings-navigation button { display: grid; width: 100%; min-height: 46px; grid-template-columns: 22px minmax(0, 1fr); align-items: center; gap: 8px; padding: 7px 12px; border: 0; border-left: 3px solid transparent; color: #3e4b60; background: transparent; text-align: left; }
@@ -972,11 +957,6 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
972
957
  .tcw-field-error { display: block; margin-top: 5px; color: var(--tcw-danger); }
973
958
 
974
959
  @media (max-width: 900px) {
975
- .tcw-analytics-workbench,
976
- .tcw-analytics-dashboard,
977
- .tcw-analytics-chart-grid {
978
- grid-template-columns: minmax(0, 1fr);
979
- }
980
960
  .tcw-analytics-cockpit-hero {
981
961
  align-items: flex-start;
982
962
  flex-direction: column;
@@ -984,12 +964,6 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
984
964
  .tcw-analytics-kpi-grid {
985
965
  grid-template-columns: repeat(2, minmax(150px, 1fr));
986
966
  }
987
- .tcw-analytics-cockpit-layout {
988
- grid-template-columns: repeat(2, minmax(220px, 1fr));
989
- }
990
- .tcw-analytics-panel--wide {
991
- grid-column: span 2;
992
- }
993
967
  .tcw-analytics-risk-orders article {
994
968
  grid-template-columns: minmax(96px, .9fr) minmax(0, 1.1fr) minmax(80px, .8fr);
995
969
  }
@@ -997,48 +971,12 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
997
971
  .tcw-analytics-risk-orders small {
998
972
  justify-self: start;
999
973
  }
1000
- .tcw-analytics-dashboard-actions {
1001
- grid-template-columns: repeat(2, minmax(0, 1fr));
1002
- }
1003
- .tcw-analytics-modal {
1004
- width: min(620px, calc(100vw - 18px));
1005
- max-height: calc(100vh - 18px);
1006
- }
1007
- .tcw-page-analytics .tcw-analytics-query .tcw-filter-panel {
1008
- min-width: 0;
1009
- max-width: 100%;
1010
- box-sizing: border-box;
1011
- }
1012
- .tcw-page-analytics .tcw-analytics-query .tcw-filter-grid {
1013
- grid-template-columns: repeat(2, minmax(0, 1fr));
1014
- width: 100%;
1015
- min-width: 0;
1016
- max-width: 100%;
1017
- box-sizing: border-box;
1018
- }
1019
- .tcw-page-analytics .tcw-analytics-query .tcw-filter-control {
1020
- width: 100%;
1021
- min-width: 0;
1022
- max-width: 100%;
1023
- box-sizing: border-box;
1024
- }
1025
- .tcw-page-analytics .tcw-filter-control--range > div {
1026
- grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
1027
- min-width: 0;
1028
- }
1029
- .tcw-page-analytics .tcw-analytics-query .tcw-filter-control input {
1030
- width: 100%;
1031
- min-width: 0;
1032
- max-width: 100%;
1033
- box-sizing: border-box;
1034
- }
1035
974
  .tcw-page-analytics .tcw-analytics-toolbar {
1036
975
  display: grid;
1037
976
  grid-template-columns: repeat(2, minmax(0, 1fr));
1038
977
  align-items: start;
1039
978
  }
1040
979
  .tcw-page-analytics .tcw-analytics-toolbar > *,
1041
- .tcw-page-analytics .tcw-analytics-switches,
1042
980
  .tcw-page-analytics .tcw-segmented-control {
1043
981
  min-width: 0;
1044
982
  max-width: 100%;
@@ -1048,27 +986,11 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
1048
986
  max-width: 100%;
1049
987
  justify-self: start;
1050
988
  }
1051
- .tcw-analytics-page .tcw-metric-grid { grid-template-columns: repeat(3, minmax(136px, 1fr)); }
1052
989
  .tcw-settings-page { grid-template-columns: 190px minmax(0, 1fr); }
1053
990
  }
1054
991
 
1055
992
  @media (max-width: 680px) {
1056
- .tcw-analytics-dashboard-actions,
1057
- .tcw-analytics-drilldown-metrics,
1058
- .tcw-analytics-export-fields,
1059
- .tcw-analytics-chart-config {
1060
- grid-template-columns: minmax(0, 1fr);
1061
- }
1062
993
  .tcw-analytics-kpi-grid,
1063
- .tcw-analytics-cockpit-layout {
1064
- grid-template-columns: minmax(0, 1fr);
1065
- }
1066
- .tcw-analytics-panel--wide {
1067
- grid-column: auto;
1068
- }
1069
- .tcw-analytics-month-chart {
1070
- grid-template-columns: repeat(6, minmax(0, 1fr));
1071
- }
1072
994
  .tcw-analytics-risk-distribution {
1073
995
  grid-template-columns: minmax(0, 1fr);
1074
996
  }
@@ -1078,19 +1000,8 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
1078
1000
  .tcw-page-analytics .tcw-analytics-toolbar {
1079
1001
  grid-template-columns: minmax(0, 1fr);
1080
1002
  }
1081
- .tcw-analytics-quick-range {
1082
- grid-template-columns: repeat(2, minmax(0, 1fr));
1083
- }
1084
- .tcw-analytics-date-range {
1085
- grid-template-columns: minmax(0, 1fr);
1086
- }
1087
- .tcw-analytics-date-range em {
1088
- display: none;
1089
- }
1090
- .tcw-page-analytics .tcw-analytics-query .tcw-filter-grid { grid-template-columns: minmax(0, 1fr); }
1091
1003
  .tcw-analytics-toolbar { align-items: flex-start; flex-direction: column; }
1092
1004
  .tcw-analytics-toolbar > .tcw-button { margin-left: 0; }
1093
- .tcw-analytics-page .tcw-metric-grid { grid-template-columns: repeat(2, minmax(136px, 1fr)); }
1094
1005
  .tcw-settings-page { grid-template-columns: 1fr; }
1095
1006
  .tcw-settings-navigation { display: flex; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--tcw-border); }
1096
1007
  .tcw-settings-navigation button { flex: 0 0 155px; border-bottom: 2px solid transparent; border-left: 0; }
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-validation.d.ts","sourceRoot":"","sources":["../../src/lib/runtime-validation.ts"],"names":[],"mappings":"AACA,OAAO,EAIW,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAClG,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAiC,KAAK,2BAA2B,EAAE,KAAK,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,KAAK,oBAAoB,EAC1L,KAAK,YAAY,EAAE,KAAK,aAAa,EACtC,MAAM,YAAY,CAAA;AAEnB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAE9D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAM9F;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,UAAQ,UAItE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAEtE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAqBlF;AAqBD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;EAS9H;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;EAQvE;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;EASzE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;;;EAKzH;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,mCAAmC;IAClD,UAAU,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAA;IAC/C,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC5C,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IACpC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC1C,sBAAsB,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAA;CACvD;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,8BAA8B,GAAG,mCAAmC,CAU7H"}
1
+ {"version":3,"file":"runtime-validation.d.ts","sourceRoot":"","sources":["../../src/lib/runtime-validation.ts"],"names":[],"mappings":"AACA,OAAO,EAGW,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAClG,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,KAAK,2BAA2B,EAAE,KAAK,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,KAAK,oBAAoB,EAC3J,KAAK,YAAY,EAAE,KAAK,aAAa,EACtC,MAAM,YAAY,CAAA;AAEnB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAE9D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAM9F;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,UAAQ,UAItE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAEtE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAOlF;AAcD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;EAS9H;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;EAQvE;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;EASzE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;;;EAKzH;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,mCAAmC;IAClD,UAAU,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAA;IAC/C,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC5C,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IACpC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC1C,sBAAsB,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAA;CACvD;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,8BAA8B,GAAG,mCAAmC,CAU7H"}