@redacto.io/consent-sdk-react 4.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/LICENSE +176 -0
  3. package/README.md +98 -1
  4. package/dist/index.js +231 -96
  5. package/dist/index.mjs +231 -96
  6. package/dist/privacy-center.d.mts +649 -0
  7. package/dist/privacy-center.d.ts +649 -0
  8. package/dist/privacy-center.js +20824 -0
  9. package/dist/privacy-center.mjs +20789 -0
  10. package/package.json +47 -3
  11. package/src/RedactoNoticeConsent/RedactoNoticeConsent.tsx +6 -4
  12. package/src/RedactoNoticeConsent/api/index.ts +2 -0
  13. package/src/RedactoNoticeConsent/api/types.ts +2 -0
  14. package/src/RedactoNoticeConsent/components/DigiLockerCallback.tsx +128 -62
  15. package/src/RedactoNoticeConsent/language-codes.ts +97 -0
  16. package/src/RedactoNoticeConsentInline/RedactoNoticeConsentInline.tsx +0 -3
  17. package/src/RedactoNoticeConsentInline/api/index.ts +0 -1
  18. package/src/RedactoPrivacyCenter/PrivacyCenterActivityPage.tsx +19 -0
  19. package/src/RedactoPrivacyCenter/PrivacyCenterCaseDetailsPage.tsx +154 -0
  20. package/src/RedactoPrivacyCenter/PrivacyCenterConsentManagerPage.tsx +17 -0
  21. package/src/RedactoPrivacyCenter/PrivacyCenterFormPage.tsx +79 -0
  22. package/src/RedactoPrivacyCenter/PrivacyCenterHomePage.tsx +30 -0
  23. package/src/RedactoPrivacyCenter/PrivacyCenterLayout.tsx +173 -0
  24. package/src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx +55 -0
  25. package/src/RedactoPrivacyCenter/api/actions.ts +476 -0
  26. package/src/RedactoPrivacyCenter/api/client.ts +524 -0
  27. package/src/RedactoPrivacyCenter/api/config.ts +33 -0
  28. package/src/RedactoPrivacyCenter/api/fetcher.ts +181 -0
  29. package/src/RedactoPrivacyCenter/api/upload.ts +93 -0
  30. package/src/RedactoPrivacyCenter/assets/character.svg +31 -0
  31. package/src/RedactoPrivacyCenter/assets/fileAttach.svg +9 -0
  32. package/src/RedactoPrivacyCenter/assets/greenTick.svg +4 -0
  33. package/src/RedactoPrivacyCenter/assets/mail.svg +3 -0
  34. package/src/RedactoPrivacyCenter/assets/poweredByRedacto.svg +9 -0
  35. package/src/RedactoPrivacyCenter/assets/sentImg.svg +9 -0
  36. package/src/RedactoPrivacyCenter/assets/uploadFileIcon.svg +9 -0
  37. package/src/RedactoPrivacyCenter/components/ActivitiesList.tsx +272 -0
  38. package/src/RedactoPrivacyCenter/components/CaseDetails/AttachmentCard.tsx +38 -0
  39. package/src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx +31 -0
  40. package/src/RedactoPrivacyCenter/components/CaseDetails/DocumentRequestCard.tsx +73 -0
  41. package/src/RedactoPrivacyCenter/components/CaseDetails/MessageComposer.tsx +87 -0
  42. package/src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx +95 -0
  43. package/src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx +147 -0
  44. package/src/RedactoPrivacyCenter/components/CaseDetails/RequestDetailsTab.tsx +171 -0
  45. package/src/RedactoPrivacyCenter/components/CaseDetails/StatusEvent.tsx +23 -0
  46. package/src/RedactoPrivacyCenter/components/CaseDetails/useFileUpload.ts +116 -0
  47. package/src/RedactoPrivacyCenter/components/CaseDetails/useMessagePolling.ts +36 -0
  48. package/src/RedactoPrivacyCenter/components/CaseDetails/utils.ts +56 -0
  49. package/src/RedactoPrivacyCenter/components/CaseDetailsModal.tsx +469 -0
  50. package/src/RedactoPrivacyCenter/components/CaseHistory.tsx +426 -0
  51. package/src/RedactoPrivacyCenter/components/ConsentManager.tsx +732 -0
  52. package/src/RedactoPrivacyCenter/components/ConsentManagerColumns.tsx +238 -0
  53. package/src/RedactoPrivacyCenter/components/ConsentManagerConstants.ts +7 -0
  54. package/src/RedactoPrivacyCenter/components/ConsentManagerTableSkeleton.tsx +155 -0
  55. package/src/RedactoPrivacyCenter/components/DataRequest/CorrectionDataSection.tsx +189 -0
  56. package/src/RedactoPrivacyCenter/components/DataRequest/GrievanceDataSection.tsx +118 -0
  57. package/src/RedactoPrivacyCenter/components/DataRequest/NominationDataSection.tsx +66 -0
  58. package/src/RedactoPrivacyCenter/components/DataRequest/PurposeSelectionSection.tsx +304 -0
  59. package/src/RedactoPrivacyCenter/components/Form.tsx +1596 -0
  60. package/src/RedactoPrivacyCenter/components/GrievanceTable.tsx +174 -0
  61. package/src/RedactoPrivacyCenter/components/GrievanceTablePagination.tsx +337 -0
  62. package/src/RedactoPrivacyCenter/components/ModifyConsentModal.tsx +330 -0
  63. package/src/RedactoPrivacyCenter/components/Pagination.tsx +140 -0
  64. package/src/RedactoPrivacyCenter/components/PrivacyCenterLayout.tsx +304 -0
  65. package/src/RedactoPrivacyCenter/components/RequestSubmit.tsx +232 -0
  66. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/SideBarPC.tsx +475 -0
  67. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/SideMenuPC.tsx +408 -0
  68. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/constants.tsx +42 -0
  69. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/menuItemsPC.tsx +1 -0
  70. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/types.ts +40 -0
  71. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/utils.ts +38 -0
  72. package/src/RedactoPrivacyCenter/components/ThemeTransitionOverlay.tsx +85 -0
  73. package/src/RedactoPrivacyCenter/components/activitiesColumns.tsx +141 -0
  74. package/src/RedactoPrivacyCenter/components/caseHistoryColumns.tsx +159 -0
  75. package/src/RedactoPrivacyCenter/components/constant.ts +16 -0
  76. package/src/RedactoPrivacyCenter/components/types.ts +76 -0
  77. package/src/RedactoPrivacyCenter/components/utils.tsx +10 -0
  78. package/src/RedactoPrivacyCenter/config/routes.ts +9 -0
  79. package/src/RedactoPrivacyCenter/config/table.ts +25 -0
  80. package/src/RedactoPrivacyCenter/context/AuthContext.tsx +137 -0
  81. package/src/RedactoPrivacyCenter/context/BaseUrlContext.tsx +41 -0
  82. package/src/RedactoPrivacyCenter/context/LocaleContext.tsx +11 -0
  83. package/src/RedactoPrivacyCenter/context/NavigationContext.tsx +96 -0
  84. package/src/RedactoPrivacyCenter/context/OrganizationContext.tsx +30 -0
  85. package/src/RedactoPrivacyCenter/context/PageChromeContext.tsx +60 -0
  86. package/src/RedactoPrivacyCenter/context/theme.tsx +127 -0
  87. package/src/RedactoPrivacyCenter/context/types.ts +14 -0
  88. package/src/RedactoPrivacyCenter/lib/api.ts +566 -0
  89. package/src/RedactoPrivacyCenter/lib/consent-manager/utils.tsx +63 -0
  90. package/src/RedactoPrivacyCenter/lib/constants.ts +161 -0
  91. package/src/RedactoPrivacyCenter/lib/i18n.ts +81 -0
  92. package/src/RedactoPrivacyCenter/lib/locales.ts +105 -0
  93. package/src/RedactoPrivacyCenter/lib/queries.ts +134 -0
  94. package/src/RedactoPrivacyCenter/lib/types.ts +531 -0
  95. package/src/RedactoPrivacyCenter/lib/useCurrentLanguage.ts +37 -0
  96. package/src/RedactoPrivacyCenter/lib/utils.ts +626 -0
  97. package/src/RedactoPrivacyCenter/locales/as/translation.json +280 -0
  98. package/src/RedactoPrivacyCenter/locales/bho/translation.json +280 -0
  99. package/src/RedactoPrivacyCenter/locales/bn/translation.json +280 -0
  100. package/src/RedactoPrivacyCenter/locales/brx/translation.json +280 -0
  101. package/src/RedactoPrivacyCenter/locales/doi/translation.json +280 -0
  102. package/src/RedactoPrivacyCenter/locales/en/translation.json +255 -0
  103. package/src/RedactoPrivacyCenter/locales/gom/translation.json +280 -0
  104. package/src/RedactoPrivacyCenter/locales/gu/translation.json +280 -0
  105. package/src/RedactoPrivacyCenter/locales/hi/translation.json +280 -0
  106. package/src/RedactoPrivacyCenter/locales/kn/translation.json +280 -0
  107. package/src/RedactoPrivacyCenter/locales/ks/translation.json +280 -0
  108. package/src/RedactoPrivacyCenter/locales/mai/translation.json +280 -0
  109. package/src/RedactoPrivacyCenter/locales/ml/translation.json +280 -0
  110. package/src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json +280 -0
  111. package/src/RedactoPrivacyCenter/locales/mr/translation.json +280 -0
  112. package/src/RedactoPrivacyCenter/locales/ne/translation.json +280 -0
  113. package/src/RedactoPrivacyCenter/locales/or/translation.json +280 -0
  114. package/src/RedactoPrivacyCenter/locales/pa/translation.json +280 -0
  115. package/src/RedactoPrivacyCenter/locales/sa/translation.json +280 -0
  116. package/src/RedactoPrivacyCenter/locales/sat/translation.json +280 -0
  117. package/src/RedactoPrivacyCenter/locales/sd/translation.json +280 -0
  118. package/src/RedactoPrivacyCenter/locales/ta/translation.json +280 -0
  119. package/src/RedactoPrivacyCenter/locales/te/translation.json +280 -0
  120. package/src/RedactoPrivacyCenter/locales/ur/translation.json +280 -0
  121. package/src/RedactoPrivacyCenter/styles/base.css +117 -0
  122. package/src/RedactoPrivacyCenter/styles/injectStyles.ts +1725 -0
  123. package/src/RedactoPrivacyCenter/styles/pcStyles.ts +813 -0
  124. package/src/RedactoPrivacyCenter/styles/responsive.ts +138 -0
  125. package/src/RedactoPrivacyCenter/styles/variables.css +133 -0
  126. package/src/RedactoPrivacyCenter/table/AdvancedTable.tsx +367 -0
  127. package/src/RedactoPrivacyCenter/table/AdvancedTablePagination.tsx +476 -0
  128. package/src/RedactoPrivacyCenter/table/index.ts +2 -0
  129. package/src/RedactoPrivacyCenter/types/images.d.ts +29 -0
  130. package/src/RedactoPrivacyCenter/ui/Footer.tsx +75 -0
  131. package/src/RedactoPrivacyCenter/ui/FormBlockWrapper.tsx +54 -0
  132. package/src/RedactoPrivacyCenter/ui/PCAccordion.tsx +93 -0
  133. package/src/RedactoPrivacyCenter/ui/PCActionIcon.tsx +47 -0
  134. package/src/RedactoPrivacyCenter/ui/PCAvatar.tsx +69 -0
  135. package/src/RedactoPrivacyCenter/ui/PCBadge.tsx +48 -0
  136. package/src/RedactoPrivacyCenter/ui/PCButton.tsx +77 -0
  137. package/src/RedactoPrivacyCenter/ui/PCCheckbox.tsx +55 -0
  138. package/src/RedactoPrivacyCenter/ui/PCCollapse.tsx +107 -0
  139. package/src/RedactoPrivacyCenter/ui/PCEmpty.tsx +35 -0
  140. package/src/RedactoPrivacyCenter/ui/PCInput.tsx +132 -0
  141. package/src/RedactoPrivacyCenter/ui/PCLoader.tsx +31 -0
  142. package/src/RedactoPrivacyCenter/ui/PCModal.tsx +106 -0
  143. package/src/RedactoPrivacyCenter/ui/PCPopover.tsx +173 -0
  144. package/src/RedactoPrivacyCenter/ui/PCSelect.tsx +387 -0
  145. package/src/RedactoPrivacyCenter/ui/PCTable.tsx +149 -0
  146. package/src/RedactoPrivacyCenter/ui/PCText.tsx +41 -0
  147. package/src/RedactoPrivacyCenter/ui/PCTextarea.tsx +43 -0
  148. package/src/RedactoPrivacyCenter/ui/PCTitle.tsx +37 -0
  149. package/src/RedactoPrivacyCenter/ui/PCTooltip.tsx +119 -0
  150. package/src/RedactoPrivacyCenter/ui/SimpleBar.tsx +25 -0
  151. package/src/RedactoPrivacyCenter/ui/StatusBadge.tsx +53 -0
  152. package/src/RedactoPrivacyCenter/ui/ThemeToggle.tsx +72 -0
  153. package/src/RedactoPrivacyCenter/ui/index.ts +18 -0
  154. package/src/RedactoPrivacyCenter/utils/cn.ts +28 -0
  155. package/src/RedactoPrivacyCenter/utils/date.ts +48 -0
  156. package/src/RedactoPrivacyCenter/utils/status.ts +111 -0
  157. package/src/RedactoPrivacyCenter/utils/toast.ts +130 -0
  158. package/src/privacy-center.ts +108 -0
  159. package/tsconfig.json +2 -0
  160. package/tsup.config.ts +16 -1
  161. package/.turbo/turbo-build.log +0 -21
@@ -0,0 +1,1725 @@
1
+ /**
2
+ * CSS Injection Utility for Privacy Center SDK
3
+ *
4
+ * Injects CSS that cannot be done with inline styles:
5
+ * - Keyframe animations
6
+ * - Pseudo-elements (::after, ::before)
7
+ * - Checkbox checked states
8
+ * - Focus states for form elements
9
+ */
10
+
11
+ let stylesInjected = false;
12
+
13
+ export const injectPCStyles = () => {
14
+ if (stylesInjected || typeof document === 'undefined') {
15
+ return;
16
+ }
17
+
18
+ const STYLE_ID = 'redacto-privacy-center-styles';
19
+
20
+ // Check if styles are already injected
21
+ if (document.getElementById(STYLE_ID)) {
22
+ stylesInjected = true;
23
+ return;
24
+ }
25
+
26
+ const style = document.createElement('style');
27
+ style.id = STYLE_ID;
28
+ // Inject CSS variables first
29
+ const variablesStyle = document.createElement('style');
30
+ variablesStyle.id = 'redacto-privacy-center-variables';
31
+ if (!document.getElementById('redacto-privacy-center-variables')) {
32
+ // CSS variables will be injected via a separate import or inline
33
+ // For now, we'll rely on the host app or inject them here
34
+ variablesStyle.textContent = `
35
+ :root, [data-theme="light"] {
36
+ --pc-primary: #3b82f6;
37
+ --pc-primary-hover: #2563eb;
38
+ --pc-primary-active: #1d4ed8;
39
+ --pc-secondary: #6b7280;
40
+ --pc-secondary-hover: #4b5563;
41
+ --pc-success: #10b981;
42
+ --pc-error: #ef4444;
43
+ --pc-warning: #f59e0b;
44
+ --pc-warning-bg: #fef9c3;
45
+ --pc-warning-border: #fcd34d;
46
+ --pc-warning-text: #92400e;
47
+ --pc-info: #3b82f6;
48
+ --pc-bg-shell: #ffffff;
49
+ --pc-bg-primary: #ffffff;
50
+ --pc-bg-secondary: #f9fafb;
51
+ --pc-bg-tertiary: #f3f4f6;
52
+ --pc-bg-hover: #f9fafb;
53
+ --pc-bg-active: #f3f4f6;
54
+ --pc-bg-overlay: rgba(0, 0, 0, 0.5);
55
+ --pc-text-primary: #111827;
56
+ --pc-text-secondary: #6b7280;
57
+ --pc-text-tertiary: #9ca3af;
58
+ --pc-text-inverse: #ffffff;
59
+ --pc-text-disabled: #d1d5db;
60
+ --pc-border-color: #e5e7eb;
61
+ --pc-border-color-hover: #d1d5db;
62
+ --pc-border-color-focus: #3b82f6;
63
+ --pc-border-radius-sm: 0.375rem;
64
+ --pc-border-radius-md: 0.4375rem;
65
+ --pc-border-radius-lg: 0.625rem;
66
+ --pc-border-radius-xl: 0.875rem;
67
+ --pc-border-radius-2xl: 1.25rem;
68
+ --pc-border-radius-3xl: 2rem;
69
+ --pc-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
70
+ --pc-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
71
+ --pc-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
72
+ --pc-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
73
+ --pc-sidebar-shadow: 12px 0 28px rgba(15, 23, 42, 0.08), 1px 0 0 rgba(15, 23, 42, 0.04);
74
+ --pc-spacing-xs: 0.25rem;
75
+ --pc-spacing-sm: 0.5rem;
76
+ --pc-spacing-md: 0.875rem;
77
+ --pc-spacing-lg: 1.25rem;
78
+ --pc-spacing-xl: 1.75rem;
79
+ --pc-spacing-2xl: 2.5rem;
80
+ --pc-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
81
+ --pc-font-size-xs: 0.75rem;
82
+ --pc-font-size-sm: 0.8125rem;
83
+ --pc-font-size-base: 0.9375rem;
84
+ --pc-font-size-lg: 1.0625rem;
85
+ --pc-font-size-xl: 1.1875rem;
86
+ --pc-font-size-2xl: 1.375rem;
87
+ --pc-font-size-3xl: 1.75rem;
88
+ --pc-font-weight-normal: 400;
89
+ --pc-font-weight-medium: 500;
90
+ --pc-font-weight-semibold: 600;
91
+ --pc-font-weight-bold: 700;
92
+ --pc-transition-fast: 150ms ease-in-out;
93
+ --pc-transition-base: 200ms ease-in-out;
94
+ --pc-transition-slow: 300ms ease-in-out;
95
+ --pc-z-dropdown: 1000;
96
+ --pc-z-sticky: 1020;
97
+ --pc-z-fixed: 1030;
98
+ --pc-z-modal-backdrop: 1200;
99
+ --pc-z-modal: 1210;
100
+ --pc-z-popover: 1060;
101
+ --pc-z-tooltip: 1070;
102
+ --pc-icon-filter: 0;
103
+ --pc-sidebar-mobile-width: 280px;
104
+ --pc-sidebar-collapsed-width: 80px;
105
+ --pc-sidebar-expanded-width: 300px;
106
+ --pc-sidebar-expanded-width-2xl: 320px;
107
+ }
108
+ [data-theme="dark"] {
109
+ --pc-primary: #60a5fa;
110
+ --pc-primary-hover: #3b82f6;
111
+ --pc-primary-active: #2563eb;
112
+ --pc-secondary: #9ca3af;
113
+ --pc-secondary-hover: #6b7280;
114
+ --pc-success: #34d399;
115
+ --pc-error: #f87171;
116
+ --pc-warning: #fbbf24;
117
+ --pc-warning-bg: #78350f;
118
+ --pc-warning-border: #fbbf24;
119
+ --pc-warning-text: #fef3c7;
120
+ --pc-info: #60a5fa;
121
+ --pc-bg-shell: #111827;
122
+ --pc-bg-primary: #1b2435;
123
+ --pc-bg-secondary: #243044;
124
+ --pc-bg-tertiary: #31405a;
125
+ --pc-bg-hover: #243044;
126
+ --pc-bg-active: #31405a;
127
+ --pc-bg-overlay: rgba(0, 0, 0, 0.7);
128
+ --pc-text-primary: #f9fafb;
129
+ --pc-text-secondary: #d1d5db;
130
+ --pc-text-tertiary: #9ca3af;
131
+ --pc-text-inverse: #111827;
132
+ --pc-text-disabled: #6b7280;
133
+ --pc-border-color: rgba(148, 163, 184, 0.18);
134
+ --pc-border-color-hover: rgba(148, 163, 184, 0.28);
135
+ --pc-border-color-focus: #60a5fa;
136
+ --pc-sidebar-shadow: 14px 0 36px rgba(2, 6, 23, 0.42), 1px 0 0 rgba(148, 163, 184, 0.08);
137
+ --pc-icon-filter: 1;
138
+ }
139
+ `;
140
+ document.head.appendChild(variablesStyle);
141
+ }
142
+
143
+ style.textContent = `
144
+ /* Privacy Center SDK Styles */
145
+
146
+ /* Theme Transition Animations */
147
+ /* Smooth transitions for all color-related properties (scoped to SDK root).
148
+ IMPORTANT: Avoid !important so component-specific transitions (e.g. transform)
149
+ can win and animations remain smooth. */
150
+ .pc-root,
151
+ .pc-root *,
152
+ .pc-root *::before,
153
+ .pc-root *::after {
154
+ transition: background-color 0.4s cubic-bezier(0.4, 0, 0.2, 1),
155
+ color 0.4s cubic-bezier(0.4, 0, 0.2, 1),
156
+ border-color 0.4s cubic-bezier(0.4, 0, 0.2, 1),
157
+ fill 0.4s cubic-bezier(0.4, 0, 0.2, 1),
158
+ stroke 0.4s cubic-bezier(0.4, 0, 0.2, 1);
159
+ }
160
+
161
+ /* Exclude certain elements from transitions */
162
+ svg *,
163
+ img,
164
+ video,
165
+ canvas {
166
+ transition: none !important;
167
+ }
168
+
169
+ /* Sun and Moon Rising Animation */
170
+ @keyframes pc-sun-moon-rise {
171
+ 0% {
172
+ bottom: -150px;
173
+ opacity: 0;
174
+ transform: translateX(-50%) scale(0.5) rotate(-10deg);
175
+ }
176
+ 15% {
177
+ opacity: 1;
178
+ transform: translateX(-50%) scale(1) rotate(0deg);
179
+ }
180
+ 70% {
181
+ opacity: 1;
182
+ transform: translateX(-50%) scale(1.1) rotate(5deg);
183
+ }
184
+ 100% {
185
+ bottom: calc(100vh + 50px);
186
+ opacity: 0;
187
+ transform: translateX(-50%) scale(0.7) rotate(10deg);
188
+ }
189
+ }
190
+
191
+ /* Sun specific glow animation */
192
+ @keyframes pc-sun-glow {
193
+ 0%, 100% {
194
+ filter: drop-shadow(0 0 30px rgba(251, 191, 36, 0.7))
195
+ drop-shadow(0 0 60px rgba(251, 191, 36, 0.4));
196
+ }
197
+ 50% {
198
+ filter: drop-shadow(0 0 50px rgba(251, 191, 36, 0.9))
199
+ drop-shadow(0 0 100px rgba(251, 191, 36, 0.6));
200
+ }
201
+ }
202
+
203
+ /* Moon specific glow animation */
204
+ @keyframes pc-moon-glow {
205
+ 0%, 100% {
206
+ filter: drop-shadow(0 0 30px rgba(224, 231, 255, 0.7))
207
+ drop-shadow(0 0 60px rgba(224, 231, 255, 0.4));
208
+ }
209
+ 50% {
210
+ filter: drop-shadow(0 0 50px rgba(224, 231, 255, 0.9))
211
+ drop-shadow(0 0 100px rgba(224, 231, 255, 0.6));
212
+ }
213
+ }
214
+
215
+ .pc-theme-transition-overlay {
216
+ position: fixed;
217
+ top: 0;
218
+ left: 0;
219
+ right: 0;
220
+ bottom: 0;
221
+ pointer-events: none;
222
+ z-index: 9999;
223
+ display: flex;
224
+ align-items: center;
225
+ justify-content: center;
226
+ opacity: 0;
227
+ will-change: opacity;
228
+ overflow: hidden;
229
+ }
230
+
231
+ .pc-theme-transition-icon {
232
+ will-change: transform, opacity, bottom, filter;
233
+ }
234
+
235
+ .pc-theme-transition-light {
236
+ animation: pc-sun-moon-rise 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards,
237
+ pc-sun-glow 1s ease-in-out;
238
+ }
239
+
240
+ .pc-theme-transition-dark {
241
+ animation: pc-sun-moon-rise 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards,
242
+ pc-moon-glow 1s ease-in-out;
243
+ }
244
+
245
+ /* Keyframe Animations */
246
+ @keyframes pc-spin {
247
+ 0% {
248
+ transform: rotate(0deg);
249
+ }
250
+ 100% {
251
+ transform: rotate(360deg);
252
+ }
253
+ }
254
+
255
+ @keyframes pc-fadeIn {
256
+ from {
257
+ opacity: 0;
258
+ }
259
+ to {
260
+ opacity: 1;
261
+ }
262
+ }
263
+
264
+ @keyframes pc-slideDown {
265
+ from {
266
+ opacity: 0;
267
+ transform: translateY(-10px);
268
+ }
269
+ to {
270
+ opacity: 1;
271
+ transform: translateY(0);
272
+ }
273
+ }
274
+
275
+ @keyframes pc-slideUp {
276
+ from {
277
+ opacity: 0;
278
+ transform: translateY(10px);
279
+ }
280
+ to {
281
+ opacity: 1;
282
+ transform: translateY(0);
283
+ }
284
+ }
285
+
286
+ @keyframes pulse {
287
+ 0%, 100% {
288
+ opacity: 1;
289
+ }
290
+ 50% {
291
+ opacity: 0.5;
292
+ }
293
+ }
294
+
295
+ /* Checkbox Styles */
296
+ .pc-checkbox {
297
+ appearance: none !important;
298
+ -webkit-appearance: none !important;
299
+ -moz-appearance: none !important;
300
+ border: 2px solid var(--pc-border-color) !important;
301
+ border-radius: var(--pc-border-radius-sm) !important;
302
+ background-color: var(--pc-bg-primary) !important;
303
+ cursor: pointer !important;
304
+ position: relative !important;
305
+ box-sizing: border-box !important;
306
+ margin: 0 !important;
307
+ transition: all 0.2s ease !important;
308
+ flex-shrink: 0 !important;
309
+ }
310
+
311
+ .pc-checkbox:checked {
312
+ background-color: var(--pc-primary) !important;
313
+ border-color: var(--pc-primary) !important;
314
+ }
315
+
316
+ .pc-checkbox:hover:not(:disabled) {
317
+ border-color: var(--pc-primary) !important;
318
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1) !important;
319
+ }
320
+
321
+ .pc-checkbox:checked::after {
322
+ content: '' !important;
323
+ position: absolute !important;
324
+ left: 50% !important;
325
+ top: 50% !important;
326
+ transform: translate(-50%, -50%) rotate(45deg) !important;
327
+ width: 4px !important;
328
+ height: 8px !important;
329
+ border: solid var(--pc-text-inverse) !important;
330
+ border-width: 0 2px 2px 0 !important;
331
+ box-sizing: border-box !important;
332
+ }
333
+
334
+ .pc-checkbox-sm:checked::after {
335
+ width: 3px !important;
336
+ height: 6px !important;
337
+ border-width: 0 1.5px 1.5px 0 !important;
338
+ }
339
+
340
+ .pc-checkbox:focus {
341
+ outline: 2px solid var(--pc-border-color-focus) !important;
342
+ outline-offset: 2px !important;
343
+ }
344
+
345
+ .pc-checkbox:disabled {
346
+ opacity: 0.5 !important;
347
+ cursor: not-allowed !important;
348
+ }
349
+
350
+ /* Input Focus Styles - Removed focus ring and border change */
351
+ .pc-input:focus,
352
+ .pc-textarea:focus,
353
+ .pc-select:focus {
354
+ outline: none !important;
355
+ box-shadow: none !important;
356
+ }
357
+
358
+ /* Button Hover States */
359
+ .pc-button-primary:hover:not(:disabled) {
360
+ background-color: var(--pc-primary-hover) !important;
361
+ }
362
+
363
+ .pc-button-secondary:hover:not(:disabled) {
364
+ background-color: var(--pc-secondary-hover) !important;
365
+ }
366
+
367
+ .pc-button-outline:hover:not(:disabled) {
368
+ background-color: var(--pc-bg-hover) !important;
369
+ }
370
+
371
+ .pc-button-text:hover:not(:disabled) {
372
+ background-color: var(--pc-bg-hover) !important;
373
+ }
374
+
375
+ .pc-button-danger:hover:not(:disabled) {
376
+ background-color: #dc2626 !important;
377
+ }
378
+
379
+ /* Responsive modal footer actions (stack buttons on small screens) */
380
+ .pc-modal-footer-actions {
381
+ display: flex;
382
+ gap: var(--pc-spacing-sm);
383
+ justify-content: flex-end;
384
+ width: 100%;
385
+ }
386
+
387
+ @media (max-width: 480px) {
388
+ .pc-modal-footer-actions {
389
+ flex-direction: column-reverse;
390
+ align-items: stretch;
391
+ }
392
+ .pc-modal-footer-actions > button {
393
+ width: 100% !important;
394
+ }
395
+ }
396
+
397
+ /* Button Focus States */
398
+ .pc-button:focus-visible {
399
+ outline: 2px solid var(--pc-border-color-focus) !important;
400
+ outline-offset: 2px !important;
401
+ }
402
+
403
+ /* Table Row Hover */
404
+ .pc-table-row:hover {
405
+ background-color: var(--pc-bg-hover) !important;
406
+ }
407
+
408
+ /* Action Icon Hover */
409
+ .pc-action-icon:hover:not(:disabled) {
410
+ background-color: var(--pc-bg-hover) !important;
411
+ }
412
+
413
+ /* Modal Overlay Animation */
414
+ .pc-modal-overlay {
415
+ animation: pc-fadeIn 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
416
+ }
417
+
418
+ /* Dropdown Animation - Support both top and bottom positioning */
419
+ .pc-select-dropdown {
420
+ animation: pc-slideDown 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
421
+ }
422
+
423
+ /* Responsive dropdown - allow width to be set via inline styles */
424
+ .pc-select-dropdown {
425
+ box-sizing: border-box !important;
426
+ }
427
+
428
+ /* Ensure options don't wrap and dropdown is compact */
429
+ .pc-select-option {
430
+ white-space: nowrap !important;
431
+ }
432
+
433
+ /* Responsive dropdown positioning for small screens */
434
+ @media (max-width: 639px) {
435
+ .pc-select-dropdown {
436
+ left: 0 !important;
437
+ right: auto !important;
438
+ }
439
+ }
440
+
441
+ /* For very small screens, ensure dropdown doesn't overflow viewport */
442
+ @media (max-width: 480px) {
443
+ .pc-select-dropdown {
444
+ max-width: calc(100vw - 2rem) !important;
445
+ }
446
+ }
447
+
448
+ /* Tooltip Animation */
449
+ .pc-tooltip {
450
+ animation: pc-slideUp 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
451
+ }
452
+
453
+ /* Accordion Transition */
454
+ .pc-accordion-body {
455
+ transition: max-height 0.3s ease, padding 0.3s ease !important;
456
+ }
457
+
458
+ /* Scrollbar Styles (for better UX) */
459
+ .pc-scrollbar::-webkit-scrollbar {
460
+ width: 8px;
461
+ height: 8px;
462
+ }
463
+
464
+ .pc-scrollbar::-webkit-scrollbar-track {
465
+ background: var(--pc-bg-secondary);
466
+ border-radius: 4px;
467
+ }
468
+
469
+ .pc-scrollbar::-webkit-scrollbar-thumb {
470
+ background: var(--pc-border-color);
471
+ border-radius: 4px;
472
+ }
473
+
474
+ .pc-scrollbar::-webkit-scrollbar-thumb:hover {
475
+ background: var(--pc-border-color-hover);
476
+ }
477
+
478
+ /* Ensure SDK components have proper z-index */
479
+ .pc-select-dropdown {
480
+ z-index: var(--pc-z-dropdown) !important;
481
+ }
482
+
483
+ .pc-tooltip {
484
+ z-index: 1300 !important;
485
+ }
486
+
487
+ .pc-modal-overlay {
488
+ z-index: var(--pc-z-modal-backdrop) !important;
489
+ }
490
+
491
+ .pc-modal {
492
+ z-index: var(--pc-z-modal) !important;
493
+ }
494
+
495
+ /* Responsive Utilities */
496
+ @media (max-width: 639px) {
497
+ .pc-hidden-xs {
498
+ display: none !important;
499
+ }
500
+ .pc-block-xs {
501
+ display: block !important;
502
+ }
503
+ .pc-flex-xs {
504
+ display: flex !important;
505
+ }
506
+ }
507
+
508
+ @media (min-width: 640px) {
509
+ .pc-hidden-sm {
510
+ display: none !important;
511
+ }
512
+ .pc-block-sm {
513
+ display: block !important;
514
+ }
515
+ .pc-flex-sm {
516
+ display: flex !important;
517
+ }
518
+ }
519
+
520
+ @media (min-width: 768px) {
521
+ .pc-hidden-md {
522
+ display: none !important;
523
+ }
524
+ .pc-block-md {
525
+ display: block !important;
526
+ }
527
+ .pc-flex-md {
528
+ display: flex !important;
529
+ }
530
+ }
531
+
532
+ @media (min-width: 1024px) {
533
+ .pc-hidden-lg {
534
+ display: none !important;
535
+ }
536
+ .pc-block-lg {
537
+ display: block !important;
538
+ }
539
+ .pc-flex-lg {
540
+ display: flex !important;
541
+ }
542
+ }
543
+
544
+ /* Status badge: responsive, light bg, little radius */
545
+ .pc-status-badge {
546
+ border-radius: 9999px;
547
+ max-width: 100%;
548
+ white-space: nowrap;
549
+ overflow: hidden;
550
+ text-overflow: ellipsis;
551
+ }
552
+ @media (max-width: 480px) {
553
+ .pc-status-badge {
554
+ padding: 0.2rem 0.4rem !important;
555
+ font-size: 0.6875rem !important;
556
+ }
557
+ }
558
+ @media (min-width: 481px) and (max-width: 639px) {
559
+ .pc-status-badge {
560
+ padding: 0.22rem 0.45rem !important;
561
+ font-size: 0.7rem !important;
562
+ }
563
+ }
564
+
565
+ /* Responsive Typography */
566
+ .pc-text-responsive {
567
+ font-size: 0.875rem;
568
+ }
569
+ @media (min-width: 768px) {
570
+ .pc-text-responsive {
571
+ font-size: 1rem;
572
+ }
573
+ }
574
+ @media (min-width: 1024px) {
575
+ .pc-text-responsive {
576
+ font-size: 1.125rem;
577
+ }
578
+ }
579
+
580
+ /* Responsive Container */
581
+ .pc-container-responsive {
582
+ width: 100%;
583
+ padding-left: 0.75rem;
584
+ padding-right: 0.75rem;
585
+ }
586
+ @media (min-width: 640px) {
587
+ .pc-container-responsive {
588
+ padding-left: 1rem;
589
+ padding-right: 1rem;
590
+ }
591
+ }
592
+ @media (min-width: 1024px) {
593
+ .pc-container-responsive {
594
+ padding-left: 1.5rem;
595
+ padding-right: 1.5rem;
596
+ max-width: 1280px;
597
+ margin-left: auto;
598
+ margin-right: auto;
599
+ }
600
+ }
601
+
602
+ /* Responsive Grid */
603
+ .pc-grid-responsive {
604
+ display: grid;
605
+ grid-template-columns: 1fr;
606
+ gap: 0.75rem;
607
+ }
608
+ @media (min-width: 640px) {
609
+ .pc-grid-responsive {
610
+ display: flex;
611
+ flex-direction: row;
612
+ gap: 1rem;
613
+ }
614
+ }
615
+ @media (min-width: 1024px) {
616
+ .pc-grid-responsive {
617
+ display: flex;
618
+ flex-direction: row;
619
+ gap: 1.5rem;
620
+ }
621
+ }
622
+
623
+ /* Responsive Flex Direction */
624
+ .pc-flex-responsive {
625
+ flex-direction: column;
626
+ }
627
+ @media (min-width: 640px) {
628
+ .pc-flex-responsive {
629
+ flex-direction: row;
630
+ align-items: flex-start;
631
+ }
632
+ }
633
+
634
+ /* Responsive Spacing */
635
+ .pc-spacing-responsive {
636
+ gap: 0.5rem;
637
+ }
638
+ @media (min-width: 768px) {
639
+ .pc-spacing-responsive {
640
+ gap: 1rem;
641
+ }
642
+ }
643
+ @media (min-width: 1024px) {
644
+ .pc-spacing-responsive {
645
+ gap: 1.5rem;
646
+ }
647
+ }
648
+
649
+ /* Responsive Padding */
650
+ .pc-padding-responsive {
651
+ padding: 0.75rem;
652
+ }
653
+ @media (min-width: 640px) {
654
+ .pc-padding-responsive {
655
+ padding: 1rem;
656
+ }
657
+ }
658
+ @media (min-width: 1024px) {
659
+ .pc-padding-responsive {
660
+ padding: 1.5rem;
661
+ }
662
+ }
663
+
664
+ /* Responsive Width */
665
+ .pc-w-full-mobile {
666
+ width: 100%;
667
+ }
668
+ @media (min-width: 640px) {
669
+ .pc-w-full-mobile {
670
+ width: auto;
671
+ }
672
+ }
673
+
674
+ /* Ensure proper box-sizing for all SDK elements */
675
+ .pc-root,
676
+ .pc-root *,
677
+ .pc-root *::before,
678
+ .pc-root *::after {
679
+ box-sizing: border-box;
680
+ }
681
+
682
+ /* Base reset for SDK components */
683
+ .pc-root {
684
+ font-family: var(--pc-font-family);
685
+ font-size: var(--pc-font-size-base);
686
+ line-height: 1.5;
687
+ color: var(--pc-text-primary);
688
+ background-color: var(--pc-bg-shell);
689
+ -webkit-font-smoothing: antialiased;
690
+ -moz-osx-font-smoothing: grayscale;
691
+ }
692
+
693
+ /* Ensure tables are responsive */
694
+ .pc-table-wrapper {
695
+ overflow-x: auto;
696
+ -webkit-overflow-scrolling: touch;
697
+ }
698
+
699
+ /* Responsive table */
700
+ @media (max-width: 767px) {
701
+ .pc-table-responsive {
702
+ font-size: 0.875rem;
703
+ }
704
+ .pc-table-responsive th,
705
+ .pc-table-responsive td {
706
+ padding: 0.5rem 0.25rem;
707
+ }
708
+ }
709
+
710
+ /* Sidebar responsive styles */
711
+ /* Mobile: Hidden by default, shown when mobile menu is open */
712
+ @media (max-width: 767px) {
713
+ .pc-sidebar {
714
+ width: var(--pc-sidebar-mobile-width) !important;
715
+ transform: translateX(-100%) !important;
716
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
717
+ will-change: transform;
718
+ }
719
+ .pc-sidebar[data-mobile-open="true"] {
720
+ transform: translateX(0) !important;
721
+ }
722
+ }
723
+
724
+ /* Mobile overlay fade */
725
+ .pc-mobile-overlay {
726
+ opacity: 0;
727
+ pointer-events: none;
728
+ transition: opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1);
729
+ will-change: opacity;
730
+ }
731
+ .pc-mobile-overlay[data-open="true"] {
732
+ opacity: 1;
733
+ pointer-events: auto;
734
+ }
735
+
736
+ /* Medium screens (768px+): Sidebar visible, collapsed by default */
737
+ @media (min-width: 768px) {
738
+ .pc-sidebar {
739
+ transform: translateX(0) !important;
740
+ /* Default to collapsed width */
741
+ width: var(--pc-sidebar-collapsed-width) !important;
742
+ transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
743
+ will-change: width;
744
+ }
745
+ /* Expand only when collapse state is toggled off */
746
+ .pc-sidebar:not(.pc-sidebar-collapsed) {
747
+ width: var(--pc-sidebar-expanded-width) !important;
748
+ }
749
+ /* Explicitly set collapsed width */
750
+ .pc-sidebar.pc-sidebar-collapsed {
751
+ width: var(--pc-sidebar-collapsed-width) !important;
752
+ }
753
+ }
754
+
755
+ /* Large screens (1024px+): Same behavior as medium */
756
+ @media (min-width: 1024px) {
757
+ .pc-sidebar:not(.pc-sidebar-collapsed) {
758
+ width: var(--pc-sidebar-expanded-width) !important;
759
+ }
760
+ }
761
+
762
+ /* Extra large screens (1280px+): Same behavior */
763
+ @media (min-width: 1280px) {
764
+ .pc-sidebar:not(.pc-sidebar-collapsed) {
765
+ width: var(--pc-sidebar-expanded-width) !important;
766
+ }
767
+ }
768
+
769
+ @media (min-width: 1536px) {
770
+ .pc-sidebar:not(.pc-sidebar-collapsed) {
771
+ width: var(--pc-sidebar-expanded-width-2xl) !important;
772
+ }
773
+ }
774
+
775
+ /* Desktop sidebar toggle affordance:
776
+ fixed top-layer button aligned to the sidebar border. */
777
+ .pc-sidebar-toggle-desktop {
778
+ left: calc(var(--pc-sidebar-collapsed-width) - 14px);
779
+ transform: translateY(-50%);
780
+ transition: opacity 0.2s ease, left 0.3s cubic-bezier(0.4, 0, 0.2, 1);
781
+ }
782
+ @media (min-width: 768px) {
783
+ .pc-sidebar {
784
+ isolation: isolate;
785
+ }
786
+ .pc-sidebar-toggle-desktop[data-visible="false"] {
787
+ opacity: 0;
788
+ pointer-events: none;
789
+ }
790
+ .pc-sidebar-toggle-desktop[data-visible="true"] {
791
+ opacity: 1;
792
+ pointer-events: auto;
793
+ }
794
+ .pc-sidebar-toggle-desktop[data-collapsed="false"] {
795
+ left: calc(var(--pc-sidebar-expanded-width) - 14px);
796
+ }
797
+ }
798
+ @media (min-width: 1536px) {
799
+ .pc-sidebar-toggle-desktop[data-collapsed="false"] {
800
+ left: calc(var(--pc-sidebar-expanded-width-2xl) - 14px);
801
+ }
802
+ }
803
+
804
+ /* Ensure menu items are always vertical */
805
+ .pc-sidebar-menu-container {
806
+ display: flex !important;
807
+ flex-direction: column !important;
808
+ }
809
+
810
+ /* Ensure menu items stack vertically, not horizontally */
811
+ .pc-sidebar-menu-container > * {
812
+ display: block !important;
813
+ width: 100% !important;
814
+ flex-shrink: 0 !important;
815
+ }
816
+
817
+ /* Collapsed menu items should be centered and vertical */
818
+ .pc-sidebar.pc-sidebar-collapsed .pc-sidebar-menu-container > * {
819
+ width: 100% !important;
820
+ }
821
+
822
+ /* Prevent horizontal layout of menu items */
823
+ .pc-sidebar-menu-container > * > * {
824
+ display: block !important;
825
+ }
826
+
827
+ /* Ensure menu items are always vertical */
828
+ .pc-sidebar .pc-menu-container {
829
+ display: flex !important;
830
+ flex-direction: column !important;
831
+ }
832
+
833
+ /* Responsive Header Layout */
834
+ .pc-header-responsive {
835
+ flex-direction: column !important;
836
+ }
837
+ @media (min-width: 768px) {
838
+ .pc-header-responsive {
839
+ flex-direction: row !important;
840
+ align-items: flex-start !important;
841
+ justify-content: space-between !important;
842
+ }
843
+ }
844
+
845
+ /* Responsive Title Section */
846
+ .pc-title-responsive {
847
+ width: 100% !important;
848
+ }
849
+ @media (min-width: 768px) {
850
+ .pc-title-responsive {
851
+ flex: 1 !important;
852
+ min-width: 200px !important;
853
+ width: auto !important;
854
+ }
855
+ }
856
+
857
+ /* Responsive Export Button */
858
+ .pc-export-button-responsive {
859
+ width: 100% !important;
860
+ }
861
+ @media (min-width: 768px) {
862
+ .pc-export-button-responsive {
863
+ width: auto !important;
864
+ flex-shrink: 0 !important;
865
+ }
866
+ }
867
+ @media (min-width: 768px) {
868
+ .pc-export-button-responsive button {
869
+ width: auto !important;
870
+ }
871
+ }
872
+
873
+ /* Responsive Filters Layout */
874
+ .pc-filters-responsive {
875
+ flex-direction: column !important;
876
+ }
877
+ @media (min-width: 768px) {
878
+ .pc-filters-responsive {
879
+ flex-direction: row !important;
880
+ align-items: flex-start !important;
881
+ justify-content: space-between !important;
882
+ width: 100% !important;
883
+ flex-wrap: wrap !important;
884
+ }
885
+ }
886
+
887
+ /* Responsive Search Input */
888
+ .pc-search-responsive {
889
+ width: 100% !important;
890
+ }
891
+ @media (min-width: 768px) {
892
+ .pc-search-responsive {
893
+ width: auto !important;
894
+ min-width: 160px !important;
895
+ max-width: 340px !important;
896
+ }
897
+ }
898
+
899
+ /* Responsive Filters Row */
900
+ .pc-filters-row-responsive {
901
+ flex-direction: column !important;
902
+ width: 100% !important;
903
+ margin-left: 0 !important;
904
+ }
905
+ @media (min-width: 768px) {
906
+ .pc-filters-row-responsive {
907
+ flex-direction: row !important;
908
+ width: auto !important;
909
+ flex-shrink: 0 !important;
910
+ margin-left: auto !important;
911
+ margin-right: 0 !important;
912
+ gap: 1rem !important;
913
+ align-items: center !important;
914
+ justify-content: flex-end !important;
915
+ flex-wrap: wrap !important;
916
+ }
917
+ }
918
+
919
+ /* Consent Manager filter selects: full width on mobile, responsive on medium, fixed on desktop */
920
+ .pc-filter-select {
921
+ width: 100% !important;
922
+ min-width: 0 !important;
923
+ }
924
+ /* Medium screens (e.g. tablets): allow shrink + wrap to avoid overflow */
925
+ @media (min-width: 768px) and (max-width: 1023px) {
926
+ .pc-search-responsive {
927
+ flex: 1 1 200px !important;
928
+ max-width: none !important;
929
+ }
930
+ .pc-filters-row-responsive {
931
+ width: 100% !important;
932
+ margin-left: 0 !important;
933
+ justify-content: flex-start !important;
934
+ }
935
+ .pc-filter-select {
936
+ flex: 1 1 200px !important;
937
+ width: auto !important;
938
+ min-width: 180px !important;
939
+ max-width: 240px !important;
940
+ }
941
+ }
942
+ /* Desktop: keep equal, sufficient width */
943
+ @media (min-width: 1024px) {
944
+ .pc-filter-select {
945
+ width: 240px !important;
946
+ min-width: 240px !important;
947
+ flex: 0 0 auto !important;
948
+ }
949
+ }
950
+ @media (min-width: 768px) {
951
+ .pc-filters-row-responsive > *:not(:first-child) {
952
+
953
+ }
954
+ .pc-filter-button-wrapper {
955
+ width: auto !important;
956
+ min-width: auto !important;
957
+ }
958
+ /* Tabs container should only take space it needs */
959
+ .pc-filters-row-responsive > *:first-child {
960
+ min-width: auto !important;
961
+ width: auto !important;
962
+ }
963
+ }
964
+
965
+ /* Override the generic first-child sizing for our filter selects */
966
+ @media (min-width: 1024px) {
967
+ .pc-filters-row-responsive > .pc-filter-select:first-child {
968
+ width: 240px !important;
969
+ min-width: 240px !important;
970
+ }
971
+ }
972
+
973
+ /* ─── Case Details Page ───────────────────────────────────────────────── */
974
+
975
+ .pc-case-page {
976
+ width: 100%;
977
+ display: flex;
978
+ flex-direction: column;
979
+ min-height: 100%;
980
+ }
981
+
982
+ .pc-case-back {
983
+ margin-bottom: 1rem;
984
+ }
985
+
986
+ .pc-case-back-btn {
987
+ padding-left: 0;
988
+ color: var(--pc-text-secondary);
989
+ }
990
+
991
+ .pc-case-back-icon {
992
+ margin-right: 0.5rem;
993
+ }
994
+
995
+ .pc-case-header {
996
+ display: flex;
997
+ flex-wrap: wrap;
998
+ align-items: center;
999
+ gap: 0.5rem;
1000
+ padding: 0.75rem 0;
1001
+ border-bottom: 1px solid var(--pc-border-color);
1002
+ font-size: var(--pc-font-size-sm);
1003
+ color: var(--pc-text-secondary);
1004
+ }
1005
+
1006
+ .pc-case-header-id {
1007
+ font-weight: var(--pc-font-weight-semibold);
1008
+ color: var(--pc-text-primary);
1009
+ }
1010
+
1011
+ .pc-case-header-overdue {
1012
+ color: #dc2626;
1013
+ }
1014
+
1015
+ .pc-case-tabs {
1016
+ display: flex;
1017
+ border-bottom: 1px solid var(--pc-border-color);
1018
+ }
1019
+
1020
+ .pc-case-tab {
1021
+ padding: 0.75rem 1.25rem;
1022
+ font-size: var(--pc-font-size-sm);
1023
+ font-weight: var(--pc-font-weight-medium);
1024
+ color: var(--pc-text-secondary);
1025
+ border: none;
1026
+ border-bottom: 2px solid transparent;
1027
+ background: transparent;
1028
+ cursor: pointer;
1029
+ margin-bottom: -1px;
1030
+ transition: all 0.15s;
1031
+ }
1032
+
1033
+ .pc-case-tab--active {
1034
+ font-weight: var(--pc-font-weight-semibold);
1035
+ color: var(--pc-primary);
1036
+ border-bottom-color: var(--pc-primary);
1037
+ }
1038
+
1039
+ .pc-case-tab-content {
1040
+ flex: 1;
1041
+ display: flex;
1042
+ flex-direction: column;
1043
+ min-height: 0;
1044
+ }
1045
+
1046
+ /* ─── Messages Tab ─────────────────────────────────────────────────── */
1047
+
1048
+ .pc-messages-container {
1049
+ display: flex;
1050
+ flex-direction: column;
1051
+ min-height: 30vh;
1052
+ max-height: 60vh;
1053
+ border: 1px solid var(--pc-border-color);
1054
+ border-radius: 0.5rem;
1055
+ overflow: hidden;
1056
+ margin-top: 1rem;
1057
+ background-color: var(--pc-bg-primary);
1058
+ }
1059
+
1060
+ .pc-messages-notice {
1061
+ display: flex;
1062
+ align-items: center;
1063
+ gap: 0.5rem;
1064
+ padding: 0.625rem 1rem;
1065
+ font-size: var(--pc-font-size-sm);
1066
+ flex-shrink: 0;
1067
+ }
1068
+
1069
+ .pc-messages-notice-text {
1070
+ flex: 1;
1071
+ }
1072
+
1073
+ .pc-messages-refresh-btn {
1074
+ display: flex;
1075
+ align-items: center;
1076
+ justify-content: center;
1077
+ background: transparent;
1078
+ border: none;
1079
+ cursor: pointer;
1080
+ padding: 0.25rem;
1081
+ border-radius: 0.25rem;
1082
+ transition: opacity 0.15s;
1083
+ }
1084
+
1085
+ .pc-messages-refresh-btn:disabled {
1086
+ cursor: default;
1087
+ opacity: 0.5;
1088
+ }
1089
+
1090
+ .pc-messages-list {
1091
+ flex: 1;
1092
+ overflow-y: auto;
1093
+ padding: 1rem;
1094
+ display: flex;
1095
+ flex-direction: column;
1096
+ gap: 1rem;
1097
+ min-height: 0;
1098
+ }
1099
+
1100
+ .pc-messages-center {
1101
+ display: flex;
1102
+ justify-content: center;
1103
+ padding: 3rem 0;
1104
+ }
1105
+
1106
+ .pc-messages-center-text {
1107
+ text-align: center;
1108
+ padding: 3rem 0;
1109
+ }
1110
+
1111
+ .pc-messages-empty {
1112
+ flex: 1;
1113
+ display: flex;
1114
+ flex-direction: column;
1115
+ align-items: center;
1116
+ justify-content: center;
1117
+ gap: 0.75rem;
1118
+ padding: 3rem 0;
1119
+ }
1120
+
1121
+ .pc-messages-empty-icon {
1122
+ opacity: 0.3;
1123
+ color: var(--pc-text-secondary);
1124
+ }
1125
+
1126
+ /* ─── Message Composer ─────────────────────────────────────────────── */
1127
+
1128
+ .pc-composer {
1129
+ border-top: 1px solid var(--pc-border-color);
1130
+ background-color: var(--pc-bg-primary);
1131
+ flex-shrink: 0;
1132
+ }
1133
+
1134
+ .pc-composer-pending-row {
1135
+ display: flex;
1136
+ align-items: center;
1137
+ gap: 0.5rem;
1138
+ padding: 0.5rem 1rem 0;
1139
+ }
1140
+
1141
+ .pc-composer-pending-pill {
1142
+ display: flex;
1143
+ align-items: center;
1144
+ gap: 0.5rem;
1145
+ padding: 0.25rem 0.75rem;
1146
+ background-color: var(--pc-bg-secondary);
1147
+ border: 1px solid var(--pc-border-color);
1148
+ border-radius: 1rem;
1149
+ font-size: var(--pc-font-size-xs);
1150
+ color: var(--pc-text-primary);
1151
+ }
1152
+
1153
+ .pc-composer-pending-size {
1154
+ color: var(--pc-text-secondary);
1155
+ }
1156
+
1157
+ .pc-composer-remove-btn {
1158
+ background: none;
1159
+ border: none;
1160
+ cursor: pointer;
1161
+ color: var(--pc-text-secondary);
1162
+ padding: 0;
1163
+ line-height: 1;
1164
+ }
1165
+
1166
+ .pc-composer-textarea-wrap {
1167
+ padding: 0.75rem 1rem 0;
1168
+ }
1169
+
1170
+ .pc-composer-textarea {
1171
+ width: 100%;
1172
+ resize: none;
1173
+ outline: none;
1174
+ font-size: var(--pc-font-size-sm);
1175
+ color: var(--pc-text-primary);
1176
+ background-color: transparent;
1177
+ font-family: inherit;
1178
+ line-height: 1.5;
1179
+ border: 1px solid var(--pc-border-color);
1180
+ border-radius: 0.5rem;
1181
+ }
1182
+
1183
+ .pc-composer-actions {
1184
+ display: flex;
1185
+ justify-content: space-between;
1186
+ align-items: center;
1187
+ padding: 0.5rem 1rem 0.75rem;
1188
+ }
1189
+
1190
+ .pc-composer-btn {
1191
+ gap: 0.375rem;
1192
+ width: auto;
1193
+ }
1194
+
1195
+ .pc-composer-footer {
1196
+ text-align: center;
1197
+ padding: 0.375rem;
1198
+ font-size: var(--pc-font-size-xs);
1199
+ color: var(--pc-text-secondary);
1200
+ border-top: 1px solid var(--pc-border-color);
1201
+ }
1202
+
1203
+ /* ─── Chat Bubble ──────────────────────────────────────────────────── */
1204
+
1205
+ .pc-chat-bubble-wrap {
1206
+ display: flex;
1207
+ flex-direction: column;
1208
+ gap: 0.25rem;
1209
+ }
1210
+
1211
+ .pc-chat-bubble-wrap--sent {
1212
+ align-items: flex-end;
1213
+ }
1214
+
1215
+ .pc-chat-bubble-wrap--received {
1216
+ align-items: flex-start;
1217
+ }
1218
+
1219
+ .pc-chat-sender {
1220
+ font-size: var(--pc-font-size-xs);
1221
+ color: var(--pc-text-secondary);
1222
+ }
1223
+
1224
+ .pc-chat-bubble {
1225
+ max-width: 70%;
1226
+ padding: 0.625rem 0.875rem;
1227
+ font-size: var(--pc-font-size-sm);
1228
+ line-height: 1.5;
1229
+ word-break: break-word;
1230
+ }
1231
+
1232
+ .pc-chat-bubble--sent {
1233
+ border-radius: 1rem 0.25rem 1rem 1rem;
1234
+ background-color: var(--pc-primary);
1235
+ color: #ffffff;
1236
+ }
1237
+
1238
+ .pc-chat-bubble--received {
1239
+ border-radius: 0.25rem 1rem 1rem 1rem;
1240
+ background-color: var(--pc-bg-secondary);
1241
+ color: var(--pc-text-primary);
1242
+ border: 1px solid var(--pc-border-color);
1243
+ }
1244
+
1245
+ /* ─── Attachment Card ──────────────────────────────────────────────── */
1246
+
1247
+ .pc-attachment-card {
1248
+ display: flex;
1249
+ align-items: center;
1250
+ gap: 0.75rem;
1251
+ padding: 0.625rem 0.875rem;
1252
+ background-color: var(--pc-bg-secondary);
1253
+ border: 1px solid var(--pc-border-color);
1254
+ border-radius: 0.5rem;
1255
+ max-width: 320px;
1256
+ }
1257
+
1258
+ .pc-attachment-icon {
1259
+ color: var(--pc-primary);
1260
+ flex-shrink: 0;
1261
+ }
1262
+
1263
+ .pc-attachment-info {
1264
+ flex: 1;
1265
+ min-width: 0;
1266
+ }
1267
+
1268
+ .pc-attachment-name {
1269
+ font-size: var(--pc-font-size-sm);
1270
+ font-weight: var(--pc-font-weight-medium);
1271
+ color: var(--pc-primary);
1272
+ overflow: hidden;
1273
+ text-overflow: ellipsis;
1274
+ white-space: nowrap;
1275
+ }
1276
+
1277
+ .pc-attachment-size {
1278
+ font-size: var(--pc-font-size-xs);
1279
+ color: var(--pc-text-secondary);
1280
+ }
1281
+
1282
+ .pc-attachment-download {
1283
+ color: var(--pc-text-secondary);
1284
+ flex-shrink: 0;
1285
+ }
1286
+
1287
+ /* ─── Document Request Card ────────────────────────────────────────── */
1288
+
1289
+ .pc-doc-request-card {
1290
+ border-radius: 0.75rem;
1291
+ padding: 1rem;
1292
+ display: flex;
1293
+ flex-direction: column;
1294
+ gap: 0.75rem;
1295
+ max-width: 480px;
1296
+ }
1297
+
1298
+ .pc-doc-request-header {
1299
+ display: flex;
1300
+ align-items: flex-start;
1301
+ gap: 0.5rem;
1302
+ }
1303
+
1304
+ .pc-doc-request-icon {
1305
+ margin-top: 2px;
1306
+ flex-shrink: 0;
1307
+ }
1308
+
1309
+ .pc-doc-request-title {
1310
+ font-weight: var(--pc-font-weight-semibold);
1311
+ font-size: var(--pc-font-size-sm);
1312
+ }
1313
+
1314
+ .pc-doc-request-accepted {
1315
+ font-size: var(--pc-font-size-xs);
1316
+ margin-top: 0.125rem;
1317
+ }
1318
+
1319
+ .pc-doc-request-status {
1320
+ margin-left: auto;
1321
+ font-size: var(--pc-font-size-xs);
1322
+ font-weight: var(--pc-font-weight-medium);
1323
+ white-space: nowrap;
1324
+ padding: 0.125rem 0.5rem;
1325
+ border-radius: 0.375rem;
1326
+ }
1327
+
1328
+ .pc-doc-request-upload-btn {
1329
+ width: 100%;
1330
+ justify-content: center;
1331
+ gap: 0.375rem;
1332
+ border-style: solid;
1333
+ }
1334
+
1335
+ .pc-doc-request-rejection {
1336
+ font-size: var(--pc-font-size-xs);
1337
+ padding: 0.375rem 0.625rem;
1338
+ border-radius: 0.375rem;
1339
+ }
1340
+
1341
+ /* ─── Status Event ─────────────────────────────────────────────────── */
1342
+
1343
+ .pc-status-event {
1344
+ display: flex;
1345
+ flex-direction: column;
1346
+ align-items: center;
1347
+ gap: 0.25rem;
1348
+ }
1349
+
1350
+ .pc-status-event-pill {
1351
+ display: flex;
1352
+ align-items: center;
1353
+ gap: 0.5rem;
1354
+ padding: 0.5rem 1rem;
1355
+ border-radius: 1rem;
1356
+ font-size: var(--pc-font-size-sm);
1357
+ font-weight: var(--pc-font-weight-medium);
1358
+ }
1359
+
1360
+ .pc-status-event-sub {
1361
+ font-size: var(--pc-font-size-xs);
1362
+ opacity: 0.85;
1363
+ }
1364
+
1365
+ .pc-status-event-time {
1366
+ font-size: var(--pc-font-size-xs);
1367
+ color: var(--pc-text-secondary);
1368
+ }
1369
+
1370
+ /* ─── Request Details Tab ──────────────────────────────────────────── */
1371
+
1372
+ .pc-request-details {
1373
+ display: flex;
1374
+ flex-direction: column;
1375
+ gap: var(--pc-spacing-xl);
1376
+ padding: var(--pc-spacing-xl) var(--pc-spacing-lg);
1377
+ overflow-y: auto;
1378
+ }
1379
+
1380
+ /* Summary card row: each field sits in a subtle card */
1381
+ .pc-request-summary-card {
1382
+ background-color: var(--pc-bg-secondary);
1383
+ border: 1px solid var(--pc-border-color);
1384
+ border-radius: var(--pc-border-radius-lg);
1385
+ padding: var(--pc-spacing-lg);
1386
+ }
1387
+
1388
+ .pc-request-summary-grid {
1389
+ display: grid;
1390
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
1391
+ gap: var(--pc-spacing-lg);
1392
+ }
1393
+
1394
+ .pc-request-field-label {
1395
+ margin-bottom: 0.375rem;
1396
+ }
1397
+
1398
+ .pc-request-field-value {
1399
+ color: var(--pc-text-primary);
1400
+ }
1401
+
1402
+ .pc-request-field-value--capitalize {
1403
+ text-transform: capitalize;
1404
+ color: var(--pc-text-primary);
1405
+ }
1406
+
1407
+ /* Description block */
1408
+ .pc-request-description {
1409
+ background-color: var(--pc-bg-secondary);
1410
+ padding: var(--pc-spacing-lg);
1411
+ border-radius: var(--pc-border-radius-lg);
1412
+ border: 1px solid var(--pc-border-color);
1413
+ }
1414
+
1415
+ .pc-request-description-title {
1416
+ margin-bottom: var(--pc-spacing-sm);
1417
+ color: var(--pc-text-primary);
1418
+ }
1419
+
1420
+ .pc-request-description-text {
1421
+ line-height: 1.7;
1422
+ }
1423
+
1424
+ /* Specifics section */
1425
+ .pc-request-specifics {
1426
+ display: flex;
1427
+ flex-direction: column;
1428
+ gap: var(--pc-spacing-xl);
1429
+ }
1430
+
1431
+ .pc-request-section-divider {
1432
+ display: flex;
1433
+ align-items: center;
1434
+ gap: 0.75rem;
1435
+ }
1436
+
1437
+ .pc-request-section-divider::after {
1438
+ content: '';
1439
+ flex: 1;
1440
+ height: 1px;
1441
+ background-color: var(--pc-border-color);
1442
+ }
1443
+
1444
+ .pc-request-section-title {
1445
+ font-size: var(--pc-font-size-xs);
1446
+ font-weight: var(--pc-font-weight-bold);
1447
+ text-transform: uppercase;
1448
+ letter-spacing: 0.08em;
1449
+ color: var(--pc-text-secondary);
1450
+ margin: 0;
1451
+ white-space: nowrap;
1452
+ }
1453
+
1454
+ .pc-request-section-heading {
1455
+ margin-bottom: var(--pc-spacing-sm);
1456
+ color: var(--pc-text-primary);
1457
+ font-size: var(--pc-font-size-sm);
1458
+ }
1459
+
1460
+ /* Purpose cards */
1461
+ .pc-request-purpose-list {
1462
+ list-style-type: none;
1463
+ padding-left: 0;
1464
+ margin: 0;
1465
+ display: flex;
1466
+ flex-direction: column;
1467
+ gap: var(--pc-spacing-sm);
1468
+ }
1469
+
1470
+ .pc-request-purpose-item {
1471
+ padding: var(--pc-spacing-lg);
1472
+ background-color: var(--pc-bg-secondary);
1473
+ border-radius: var(--pc-border-radius-lg);
1474
+ border: 1px solid var(--pc-border-color);
1475
+ transition: box-shadow 0.15s ease;
1476
+ }
1477
+
1478
+ .pc-request-purpose-item:hover {
1479
+ box-shadow: var(--pc-shadow-sm);
1480
+ }
1481
+
1482
+ .pc-request-purpose-name {
1483
+ font-weight: var(--pc-font-weight-semibold);
1484
+ font-size: var(--pc-font-size-sm);
1485
+ color: var(--pc-text-primary);
1486
+ margin-bottom: 0.25rem;
1487
+ }
1488
+
1489
+ .pc-request-purpose-desc {
1490
+ color: var(--pc-text-secondary);
1491
+ font-size: var(--pc-font-size-xs);
1492
+ margin-bottom: var(--pc-spacing-sm);
1493
+ line-height: 1.6;
1494
+ }
1495
+
1496
+ .pc-request-data-elements {
1497
+ margin-top: var(--pc-spacing-sm);
1498
+ padding-top: var(--pc-spacing-sm);
1499
+ border-top: 1px solid var(--pc-border-color);
1500
+ display: flex;
1501
+ flex-wrap: wrap;
1502
+ gap: var(--pc-spacing-xs);
1503
+ }
1504
+
1505
+ /* Correction data table */
1506
+ .pc-request-table-wrap {
1507
+ min-width: 100%;
1508
+ border: 1px solid var(--pc-border-color);
1509
+ border-radius: var(--pc-border-radius-lg);
1510
+ overflow: hidden;
1511
+ background-color: var(--pc-bg-primary);
1512
+ }
1513
+
1514
+ .pc-request-table {
1515
+ width: 100%;
1516
+ font-size: var(--pc-font-size-sm);
1517
+ }
1518
+
1519
+ .pc-request-table-header {
1520
+ background-color: var(--pc-bg-secondary);
1521
+ }
1522
+
1523
+ .pc-request-table-head {
1524
+ padding: 0.625rem 1rem;
1525
+ white-space: nowrap;
1526
+ color: var(--pc-text-secondary);
1527
+ font-weight: var(--pc-font-weight-semibold);
1528
+ font-size: var(--pc-font-size-xs);
1529
+ text-transform: uppercase;
1530
+ letter-spacing: 0.04em;
1531
+ }
1532
+
1533
+ .pc-request-table-row {
1534
+ border-bottom: 1px solid var(--pc-border-color);
1535
+ }
1536
+
1537
+ .pc-request-table-row:last-child {
1538
+ border-bottom: none;
1539
+ }
1540
+
1541
+ .pc-request-table-cell {
1542
+ padding: 0.75rem 1rem;
1543
+ font-size: var(--pc-font-size-sm);
1544
+ }
1545
+
1546
+ .pc-request-table-cell--name {
1547
+ font-weight: var(--pc-font-weight-medium);
1548
+ color: var(--pc-text-primary);
1549
+ }
1550
+
1551
+ .pc-request-table-cell--value {
1552
+ color: var(--pc-text-secondary);
1553
+ word-break: break-word;
1554
+ }
1555
+
1556
+ /* Nomination card */
1557
+ .pc-request-nomination-card {
1558
+ background-color: var(--pc-bg-secondary);
1559
+ padding: var(--pc-spacing-lg);
1560
+ border-radius: var(--pc-border-radius-lg);
1561
+ border: 1px solid var(--pc-border-color);
1562
+ display: grid;
1563
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
1564
+ gap: var(--pc-spacing-md);
1565
+ }
1566
+
1567
+ .pc-request-nomination-field {
1568
+ display: flex;
1569
+ flex-direction: column;
1570
+ gap: 0.25rem;
1571
+ }
1572
+
1573
+ /* Grievance badges */
1574
+ .pc-request-grievance-wrap {
1575
+ display: flex;
1576
+ flex-wrap: wrap;
1577
+ gap: var(--pc-spacing-xs);
1578
+ }
1579
+
1580
+ .pc-hidden {
1581
+ display: none;
1582
+ }
1583
+
1584
+ /* Case Details Modal Responsive Styles */
1585
+ .pc-case-details-content {
1586
+ padding: 1rem !important;
1587
+ }
1588
+ @media (min-width: 640px) {
1589
+ .pc-case-details-content {
1590
+ padding: 1.5rem !important;
1591
+ }
1592
+ }
1593
+
1594
+ .pc-case-details-grid {
1595
+ grid-template-columns: 1fr !important;
1596
+ }
1597
+ @media (min-width: 640px) {
1598
+ .pc-case-details-grid {
1599
+ grid-template-columns: repeat(2, 1fr) !important;
1600
+ }
1601
+ }
1602
+ @media (min-width: 1024px) {
1603
+ .pc-case-details-grid {
1604
+ grid-template-columns: repeat(4, 1fr) !important;
1605
+ }
1606
+ }
1607
+
1608
+ /* ─── Erasure Consent Modal ────────────────────────────────────────── */
1609
+
1610
+ .pc-erasure-modal-content {
1611
+ display: flex;
1612
+ flex-direction: column;
1613
+ gap: var(--pc-spacing-lg);
1614
+ }
1615
+
1616
+ .pc-erasure-modal-footer {
1617
+ display: flex;
1618
+ justify-content: flex-end;
1619
+ gap: var(--pc-spacing-sm);
1620
+ width: 100%;
1621
+ flex-wrap: wrap;
1622
+ }
1623
+
1624
+ .pc-erasure-modal-header {
1625
+ display: flex;
1626
+ flex-direction: column;
1627
+ align-items: center;
1628
+ text-align: center;
1629
+ gap: var(--pc-spacing-sm);
1630
+ }
1631
+
1632
+ .pc-erasure-modal-icon {
1633
+ flex-shrink: 0;
1634
+ width: 3rem;
1635
+ height: 3rem;
1636
+ border-radius: 50%;
1637
+ background-color: color-mix(in srgb, var(--pc-primary) 10%, transparent);
1638
+ display: flex;
1639
+ align-items: center;
1640
+ justify-content: center;
1641
+ color: var(--pc-primary);
1642
+ }
1643
+
1644
+ .pc-erasure-modal-title {
1645
+ margin: 0;
1646
+ font-size: var(--pc-font-size-lg);
1647
+ font-weight: var(--pc-font-weight-semibold);
1648
+ color: var(--pc-text-primary);
1649
+ }
1650
+
1651
+ .pc-erasure-modal-question {
1652
+ margin: 0;
1653
+ max-width: 28rem;
1654
+ font-size: var(--pc-font-size-sm);
1655
+ color: var(--pc-text-secondary);
1656
+ line-height: 1.5;
1657
+ }
1658
+
1659
+ .pc-erasure-modal-purposes {
1660
+ border-radius: var(--pc-border-radius-md);
1661
+ border: 1px solid var(--pc-border-color);
1662
+ background-color: var(--pc-bg-secondary);
1663
+ padding: var(--pc-spacing-md);
1664
+ display: flex;
1665
+ flex-direction: column;
1666
+ gap: var(--pc-spacing-sm);
1667
+ }
1668
+
1669
+ .pc-erasure-modal-purposes-label {
1670
+ margin: 0;
1671
+ font-size: var(--pc-font-size-xs);
1672
+ font-weight: var(--pc-font-weight-semibold);
1673
+ color: var(--pc-text-secondary);
1674
+ letter-spacing: 0.05em;
1675
+ text-transform: uppercase;
1676
+ }
1677
+
1678
+ .pc-erasure-modal-purpose-item {
1679
+ font-size: var(--pc-font-size-sm);
1680
+ font-weight: var(--pc-font-weight-semibold);
1681
+ color: var(--pc-text-primary);
1682
+ word-break: break-word;
1683
+ }
1684
+
1685
+ .pc-erasure-modal-purposes-placeholder {
1686
+ font-size: var(--pc-font-size-sm);
1687
+ color: var(--pc-text-secondary);
1688
+ }
1689
+
1690
+ .pc-erasure-modal-warning {
1691
+ border-radius: var(--pc-border-radius-md);
1692
+ border: 1px solid var(--pc-warning);
1693
+ background-color: color-mix(in srgb, var(--pc-warning) 10%, transparent);
1694
+ padding: var(--pc-spacing-md);
1695
+ }
1696
+
1697
+ .pc-erasure-modal-warning-text {
1698
+ margin: 0;
1699
+ font-size: var(--pc-font-size-sm);
1700
+ color: var(--pc-text-primary);
1701
+ line-height: 1.5;
1702
+ }
1703
+
1704
+ .pc-erasure-modal-warning-label {
1705
+ font-weight: var(--pc-font-weight-semibold);
1706
+ }
1707
+
1708
+ /* ─── Request Submit: Revoke Consent Notice ────────────────────────── */
1709
+
1710
+ .pc-request-submit-revoke-notice {
1711
+ margin-top: var(--pc-spacing-md);
1712
+ padding: var(--pc-spacing-sm);
1713
+ border-radius: var(--pc-border-radius-md);
1714
+ border: 1px solid var(--pc-warning);
1715
+ background-color: color-mix(in srgb, var(--pc-warning) 10%, transparent);
1716
+ }
1717
+
1718
+ .pc-request-submit-revoke-notice-text {
1719
+ color: var(--pc-text-primary);
1720
+ }
1721
+ `;
1722
+
1723
+ document.head.appendChild(style);
1724
+ stylesInjected = true;
1725
+ };