@redacto.io/consent-sdk-react 10.0.0-beta.9 → 10.0.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 (264) hide show
  1. package/NOTICE.md +17 -0
  2. package/README.md +141 -3
  3. package/dist/chunk-FEGTW73Q.mjs +182 -0
  4. package/dist/fonts.d.mts +35 -0
  5. package/dist/fonts.d.ts +35 -0
  6. package/dist/fonts.js +183 -0
  7. package/dist/fonts.mjs +10 -0
  8. package/dist/index.d.mts +12 -1
  9. package/dist/index.d.ts +12 -1
  10. package/dist/index.js +724 -365
  11. package/dist/index.mjs +346 -201
  12. package/dist/montserrat.generated-NBTECYRW.mjs +22 -0
  13. package/dist/privacy-center.d.mts +0 -1
  14. package/dist/privacy-center.d.ts +0 -1
  15. package/dist/privacy-center.js +2 -66
  16. package/dist/privacy-center.mjs +2 -66
  17. package/dist/types-6Aj7faxL.d.mts +57 -0
  18. package/dist/types-6Aj7faxL.d.ts +57 -0
  19. package/package.json +10 -1
  20. package/.turbo/turbo-build.log +0 -22
  21. package/.turbo/turbo-test.log +0 -203
  22. package/.turbo/turbo-verify-pack.log +0 -6
  23. package/CHANGELOG.md +0 -353
  24. package/src/RedactoNoticeAssisted/RedactoNoticeAssisted.test.tsx +0 -934
  25. package/src/RedactoNoticeAssisted/RedactoNoticeAssisted.tsx +0 -2160
  26. package/src/RedactoNoticeAssisted/api/index.ts +0 -275
  27. package/src/RedactoNoticeAssisted/api/types.ts +0 -182
  28. package/src/RedactoNoticeAssisted/assets/redacto-logo.png +0 -0
  29. package/src/RedactoNoticeAssisted/constants.ts +0 -51
  30. package/src/RedactoNoticeAssisted/i18n.ts +0 -1408
  31. package/src/RedactoNoticeAssisted/index.ts +0 -1
  32. package/src/RedactoNoticeAssisted/injectStyles.ts +0 -251
  33. package/src/RedactoNoticeAssisted/styles.ts +0 -730
  34. package/src/RedactoNoticeAssisted/types.ts +0 -26
  35. package/src/RedactoNoticeAssisted/useMediaQuery.ts +0 -36
  36. package/src/RedactoNoticeConsent/RedactoNoticeConsent.test.tsx +0 -1152
  37. package/src/RedactoNoticeConsent/RedactoNoticeConsent.tsx +0 -4308
  38. package/src/RedactoNoticeConsent/api/index.ts +0 -542
  39. package/src/RedactoNoticeConsent/api/sandbox.ts +0 -150
  40. package/src/RedactoNoticeConsent/api/types.ts +0 -515
  41. package/src/RedactoNoticeConsent/assets/redacto-logo.png +0 -0
  42. package/src/RedactoNoticeConsent/components/DigiLockerCallback.tsx +0 -602
  43. package/src/RedactoNoticeConsent/components/index.ts +0 -7
  44. package/src/RedactoNoticeConsent/constants.ts +0 -20
  45. package/src/RedactoNoticeConsent/index.ts +0 -1
  46. package/src/RedactoNoticeConsent/injectStyles.ts +0 -151
  47. package/src/RedactoNoticeConsent/language-codes.ts +0 -95
  48. package/src/RedactoNoticeConsent/services/storage.ts +0 -122
  49. package/src/RedactoNoticeConsent/styles.ts +0 -409
  50. package/src/RedactoNoticeConsent/types.ts +0 -80
  51. package/src/RedactoNoticeConsent/useMediaQuery.ts +0 -36
  52. package/src/RedactoNoticeConsentInline/RedactoNoticeConsentInline.test.tsx +0 -369
  53. package/src/RedactoNoticeConsentInline/RedactoNoticeConsentInline.tsx +0 -687
  54. package/src/RedactoNoticeConsentInline/api/index.ts +0 -106
  55. package/src/RedactoNoticeConsentInline/api/types.ts +0 -183
  56. package/src/RedactoNoticeConsentInline/assets/redacto-logo.png +0 -0
  57. package/src/RedactoNoticeConsentInline/index.ts +0 -1
  58. package/src/RedactoNoticeConsentInline/injectStyles.ts +0 -40
  59. package/src/RedactoNoticeConsentInline/styles.ts +0 -397
  60. package/src/RedactoNoticeConsentInline/types.ts +0 -51
  61. package/src/RedactoNoticeConsentInline/useMediaQuery.ts +0 -36
  62. package/src/RedactoPrivacyCenter/NotificationsPage.tsx +0 -182
  63. package/src/RedactoPrivacyCenter/PrivacyCenterActivityPage.tsx +0 -19
  64. package/src/RedactoPrivacyCenter/PrivacyCenterCaseDetailsPage.tsx +0 -156
  65. package/src/RedactoPrivacyCenter/PrivacyCenterConsentManagerPage.tsx +0 -17
  66. package/src/RedactoPrivacyCenter/PrivacyCenterFormPage.tsx +0 -79
  67. package/src/RedactoPrivacyCenter/PrivacyCenterHomePage.tsx +0 -36
  68. package/src/RedactoPrivacyCenter/PrivacyCenterLayout.tsx +0 -177
  69. package/src/RedactoPrivacyCenter/PrivacyCenterMyReceiptPage.tsx +0 -26
  70. package/src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx +0 -93
  71. package/src/RedactoPrivacyCenter/api/actions.ts +0 -695
  72. package/src/RedactoPrivacyCenter/api/client.ts +0 -1003
  73. package/src/RedactoPrivacyCenter/api/config.ts +0 -33
  74. package/src/RedactoPrivacyCenter/api/fetcher.ts +0 -275
  75. package/src/RedactoPrivacyCenter/api/orgBranding.ts +0 -16
  76. package/src/RedactoPrivacyCenter/api/upload.ts +0 -93
  77. package/src/RedactoPrivacyCenter/assets/character.svg +0 -31
  78. package/src/RedactoPrivacyCenter/assets/fileAttach.svg +0 -9
  79. package/src/RedactoPrivacyCenter/assets/greenTick.svg +0 -4
  80. package/src/RedactoPrivacyCenter/assets/mail.svg +0 -3
  81. package/src/RedactoPrivacyCenter/assets/poweredByRedacto.svg +0 -9
  82. package/src/RedactoPrivacyCenter/assets/sentImg.svg +0 -9
  83. package/src/RedactoPrivacyCenter/assets/uploadFileIcon.svg +0 -9
  84. package/src/RedactoPrivacyCenter/components/ActivitiesList.tsx +0 -252
  85. package/src/RedactoPrivacyCenter/components/ActivityTimeline.tsx +0 -239
  86. package/src/RedactoPrivacyCenter/components/AppShell/AppShell.tsx +0 -268
  87. package/src/RedactoPrivacyCenter/components/AppShell/MobileNavDrawer.tsx +0 -218
  88. package/src/RedactoPrivacyCenter/components/AppShell/NavItem.tsx +0 -205
  89. package/src/RedactoPrivacyCenter/components/AppShell/PageHeader.tsx +0 -107
  90. package/src/RedactoPrivacyCenter/components/AppShell/SidebarNav.tsx +0 -100
  91. package/src/RedactoPrivacyCenter/components/AppShell/TopAppBar.tsx +0 -339
  92. package/src/RedactoPrivacyCenter/components/AppShell/UserMenu.tsx +0 -245
  93. package/src/RedactoPrivacyCenter/components/AppShell/hooks/useIsTruncated.ts +0 -28
  94. package/src/RedactoPrivacyCenter/components/AppShell/hooks/useKeyboardShortcut.ts +0 -40
  95. package/src/RedactoPrivacyCenter/components/AppShell/hooks/useSidebarState.ts +0 -62
  96. package/src/RedactoPrivacyCenter/components/AppShell/usePrivacyCenterExitAction.ts +0 -36
  97. package/src/RedactoPrivacyCenter/components/CaseDetails/AttachmentCard.tsx +0 -38
  98. package/src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx +0 -31
  99. package/src/RedactoPrivacyCenter/components/CaseDetails/DocumentRequestCard.tsx +0 -79
  100. package/src/RedactoPrivacyCenter/components/CaseDetails/FinalizedTooltipWrapper.tsx +0 -25
  101. package/src/RedactoPrivacyCenter/components/CaseDetails/MessageComposer.tsx +0 -96
  102. package/src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx +0 -97
  103. package/src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx +0 -156
  104. package/src/RedactoPrivacyCenter/components/CaseDetails/RequestDetailsTab.tsx +0 -171
  105. package/src/RedactoPrivacyCenter/components/CaseDetails/StatusEvent.tsx +0 -23
  106. package/src/RedactoPrivacyCenter/components/CaseDetails/useFileUpload.ts +0 -116
  107. package/src/RedactoPrivacyCenter/components/CaseDetails/useMessagePolling.ts +0 -43
  108. package/src/RedactoPrivacyCenter/components/CaseDetails/utils.ts +0 -71
  109. package/src/RedactoPrivacyCenter/components/CaseDetailsModal.tsx +0 -469
  110. package/src/RedactoPrivacyCenter/components/CaseHistory.tsx +0 -426
  111. package/src/RedactoPrivacyCenter/components/ConsentManager.tsx +0 -1206
  112. package/src/RedactoPrivacyCenter/components/ConsentManagerCells.tsx +0 -218
  113. package/src/RedactoPrivacyCenter/components/ConsentManagerColumns.tsx +0 -138
  114. package/src/RedactoPrivacyCenter/components/ConsentManagerConstants.ts +0 -7
  115. package/src/RedactoPrivacyCenter/components/ConsentManagerExpandedRow.tsx +0 -179
  116. package/src/RedactoPrivacyCenter/components/ConsentManagerGroupedColumns.tsx +0 -318
  117. package/src/RedactoPrivacyCenter/components/ConsentManagerProductCards.tsx +0 -333
  118. package/src/RedactoPrivacyCenter/components/ConsentManagerPurposeCards.tsx +0 -102
  119. package/src/RedactoPrivacyCenter/components/ConsentManagerTableSkeleton.tsx +0 -159
  120. package/src/RedactoPrivacyCenter/components/DataRequest/CorrectionDataSection.tsx +0 -189
  121. package/src/RedactoPrivacyCenter/components/DataRequest/GrievanceDataSection.tsx +0 -118
  122. package/src/RedactoPrivacyCenter/components/DataRequest/NominationDataSection.tsx +0 -66
  123. package/src/RedactoPrivacyCenter/components/DataRequest/ProductSelectionSection.tsx +0 -222
  124. package/src/RedactoPrivacyCenter/components/DataRequest/PurposeSelectionSection.tsx +0 -331
  125. package/src/RedactoPrivacyCenter/components/Form.tsx +0 -1821
  126. package/src/RedactoPrivacyCenter/components/GrievanceTable.tsx +0 -174
  127. package/src/RedactoPrivacyCenter/components/GrievanceTablePagination.tsx +0 -337
  128. package/src/RedactoPrivacyCenter/components/ModifyConsentModal.tsx +0 -334
  129. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationBell.tsx +0 -173
  130. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationCTAButton.tsx +0 -18
  131. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationDropdown.tsx +0 -54
  132. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationDropdownItem.tsx +0 -57
  133. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationIcon.tsx +0 -19
  134. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationListPanel.tsx +0 -92
  135. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationRefreshButton.tsx +0 -20
  136. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx +0 -58
  137. package/src/RedactoPrivacyCenter/components/NotificationHub/StatCard.tsx +0 -10
  138. package/src/RedactoPrivacyCenter/components/NotificationHub/useNotificationActions.ts +0 -112
  139. package/src/RedactoPrivacyCenter/components/NotificationHub/utils.ts +0 -27
  140. package/src/RedactoPrivacyCenter/components/Pagination.tsx +0 -140
  141. package/src/RedactoPrivacyCenter/components/PrivacyCenterEmptyState.tsx +0 -76
  142. package/src/RedactoPrivacyCenter/components/PrivacyCenterSessionExpired.tsx +0 -97
  143. package/src/RedactoPrivacyCenter/components/ReceiptsList.tsx +0 -454
  144. package/src/RedactoPrivacyCenter/components/RequestSubmit.tsx +0 -270
  145. package/src/RedactoPrivacyCenter/components/SelectUser.tsx +0 -95
  146. package/src/RedactoPrivacyCenter/components/SelectUserGate.tsx +0 -195
  147. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/constants.tsx +0 -25
  148. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/types.ts +0 -21
  149. package/src/RedactoPrivacyCenter/components/caseHistoryColumns.tsx +0 -159
  150. package/src/RedactoPrivacyCenter/components/constant.ts +0 -52
  151. package/src/RedactoPrivacyCenter/components/groupHelpers.ts +0 -155
  152. package/src/RedactoPrivacyCenter/components/receiptColumns.tsx +0 -203
  153. package/src/RedactoPrivacyCenter/components/types.ts +0 -123
  154. package/src/RedactoPrivacyCenter/components/utils.tsx +0 -10
  155. package/src/RedactoPrivacyCenter/config/routes.ts +0 -9
  156. package/src/RedactoPrivacyCenter/config/table.ts +0 -25
  157. package/src/RedactoPrivacyCenter/context/AuthContext.tsx +0 -252
  158. package/src/RedactoPrivacyCenter/context/BaseUrlContext.tsx +0 -47
  159. package/src/RedactoPrivacyCenter/context/BrandingContext.tsx +0 -52
  160. package/src/RedactoPrivacyCenter/context/DataAvailabilityContext.session-expired.test.tsx +0 -92
  161. package/src/RedactoPrivacyCenter/context/DataAvailabilityContext.tsx +0 -181
  162. package/src/RedactoPrivacyCenter/context/LocaleContext.tsx +0 -11
  163. package/src/RedactoPrivacyCenter/context/NavigationContext.tsx +0 -96
  164. package/src/RedactoPrivacyCenter/context/OrganizationContext.tsx +0 -30
  165. package/src/RedactoPrivacyCenter/context/PageChromeContext.tsx +0 -80
  166. package/src/RedactoPrivacyCenter/context/ProfileSwitchContext.tsx +0 -15
  167. package/src/RedactoPrivacyCenter/context/types.ts +0 -57
  168. package/src/RedactoPrivacyCenter/lib/api.ts +0 -759
  169. package/src/RedactoPrivacyCenter/lib/consent-manager/utils.tsx +0 -67
  170. package/src/RedactoPrivacyCenter/lib/constants.ts +0 -283
  171. package/src/RedactoPrivacyCenter/lib/i18n.ts +0 -81
  172. package/src/RedactoPrivacyCenter/lib/locales.ts +0 -102
  173. package/src/RedactoPrivacyCenter/lib/queries.ts +0 -141
  174. package/src/RedactoPrivacyCenter/lib/sandbox.ts +0 -104
  175. package/src/RedactoPrivacyCenter/lib/types.ts +0 -896
  176. package/src/RedactoPrivacyCenter/lib/useCurrentLanguage.ts +0 -37
  177. package/src/RedactoPrivacyCenter/lib/utils.refresh-circuit.test.ts +0 -127
  178. package/src/RedactoPrivacyCenter/lib/utils.refresh-storage.test.ts +0 -85
  179. package/src/RedactoPrivacyCenter/lib/utils.session-expired.test.ts +0 -109
  180. package/src/RedactoPrivacyCenter/lib/utils.ts +0 -798
  181. package/src/RedactoPrivacyCenter/locales/as/translation.json +0 -342
  182. package/src/RedactoPrivacyCenter/locales/bn/translation.json +0 -342
  183. package/src/RedactoPrivacyCenter/locales/brx/translation.json +0 -342
  184. package/src/RedactoPrivacyCenter/locales/doi/translation.json +0 -342
  185. package/src/RedactoPrivacyCenter/locales/en/translation.json +0 -357
  186. package/src/RedactoPrivacyCenter/locales/gom/translation.json +0 -342
  187. package/src/RedactoPrivacyCenter/locales/gu/translation.json +0 -342
  188. package/src/RedactoPrivacyCenter/locales/hi/translation.json +0 -345
  189. package/src/RedactoPrivacyCenter/locales/kn/translation.json +0 -342
  190. package/src/RedactoPrivacyCenter/locales/ks/translation.json +0 -342
  191. package/src/RedactoPrivacyCenter/locales/mai/translation.json +0 -342
  192. package/src/RedactoPrivacyCenter/locales/ml/translation.json +0 -342
  193. package/src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json +0 -342
  194. package/src/RedactoPrivacyCenter/locales/mr/translation.json +0 -342
  195. package/src/RedactoPrivacyCenter/locales/ne/translation.json +0 -342
  196. package/src/RedactoPrivacyCenter/locales/or/translation.json +0 -342
  197. package/src/RedactoPrivacyCenter/locales/pa/translation.json +0 -342
  198. package/src/RedactoPrivacyCenter/locales/sa/translation.json +0 -342
  199. package/src/RedactoPrivacyCenter/locales/sat/translation.json +0 -342
  200. package/src/RedactoPrivacyCenter/locales/sd/translation.json +0 -342
  201. package/src/RedactoPrivacyCenter/locales/ta/translation.json +0 -342
  202. package/src/RedactoPrivacyCenter/locales/te/translation.json +0 -342
  203. package/src/RedactoPrivacyCenter/locales/ur/translation.json +0 -342
  204. package/src/RedactoPrivacyCenter/styles/applyBrandingTheme.ts +0 -66
  205. package/src/RedactoPrivacyCenter/styles/base.css +0 -117
  206. package/src/RedactoPrivacyCenter/styles/injectStyles.ts +0 -3108
  207. package/src/RedactoPrivacyCenter/styles/pcStyles.ts +0 -831
  208. package/src/RedactoPrivacyCenter/styles/responsive.ts +0 -138
  209. package/src/RedactoPrivacyCenter/styles/variables.css +0 -96
  210. package/src/RedactoPrivacyCenter/table/AdvancedTable.tsx +0 -387
  211. package/src/RedactoPrivacyCenter/table/AdvancedTablePagination.tsx +0 -468
  212. package/src/RedactoPrivacyCenter/table/index.ts +0 -2
  213. package/src/RedactoPrivacyCenter/types/images.d.ts +0 -29
  214. package/src/RedactoPrivacyCenter/ui/Footer.tsx +0 -69
  215. package/src/RedactoPrivacyCenter/ui/FormBlockWrapper.tsx +0 -54
  216. package/src/RedactoPrivacyCenter/ui/PCAccordion.tsx +0 -93
  217. package/src/RedactoPrivacyCenter/ui/PCActionIcon.tsx +0 -47
  218. package/src/RedactoPrivacyCenter/ui/PCAvatar.test.tsx +0 -83
  219. package/src/RedactoPrivacyCenter/ui/PCAvatar.tsx +0 -93
  220. package/src/RedactoPrivacyCenter/ui/PCBadge.tsx +0 -48
  221. package/src/RedactoPrivacyCenter/ui/PCButton.tsx +0 -77
  222. package/src/RedactoPrivacyCenter/ui/PCCheckbox.tsx +0 -55
  223. package/src/RedactoPrivacyCenter/ui/PCCollapse.tsx +0 -107
  224. package/src/RedactoPrivacyCenter/ui/PCEmpty.tsx +0 -35
  225. package/src/RedactoPrivacyCenter/ui/PCInput.tsx +0 -132
  226. package/src/RedactoPrivacyCenter/ui/PCLoader.tsx +0 -31
  227. package/src/RedactoPrivacyCenter/ui/PCModal.tsx +0 -106
  228. package/src/RedactoPrivacyCenter/ui/PCPopover.tsx +0 -206
  229. package/src/RedactoPrivacyCenter/ui/PCSelect.tsx +0 -433
  230. package/src/RedactoPrivacyCenter/ui/PCTable.tsx +0 -149
  231. package/src/RedactoPrivacyCenter/ui/PCText.tsx +0 -41
  232. package/src/RedactoPrivacyCenter/ui/PCTextarea.tsx +0 -43
  233. package/src/RedactoPrivacyCenter/ui/PCTitle.tsx +0 -37
  234. package/src/RedactoPrivacyCenter/ui/PCTooltip.tsx +0 -121
  235. package/src/RedactoPrivacyCenter/ui/SimpleBar.tsx +0 -25
  236. package/src/RedactoPrivacyCenter/ui/StatusBadge.tsx +0 -53
  237. package/src/RedactoPrivacyCenter/ui/index.ts +0 -18
  238. package/src/RedactoPrivacyCenter/utils/cn.ts +0 -28
  239. package/src/RedactoPrivacyCenter/utils/date.ts +0 -48
  240. package/src/RedactoPrivacyCenter/utils/status.ts +0 -111
  241. package/src/RedactoPrivacyCenter/utils/toast.ts +0 -130
  242. package/src/index.ts +0 -19
  243. package/src/privacy-center.ts +0 -113
  244. package/src/shared/api-errors.ts +0 -180
  245. package/src/shared/notice-consent-status.ts +0 -190
  246. package/src/shared/sandbox.ts +0 -6
  247. package/src/types/css.d.ts +0 -4
  248. package/src/types/images.d.ts +0 -19
  249. package/src/types/react-jsx.d.ts +0 -26
  250. package/tests/DataAvailabilityContext.test.tsx +0 -123
  251. package/tests/Form.test.tsx +0 -1424
  252. package/tests/ManageConsentErrorMapping.test.tsx +0 -85
  253. package/tests/ProductSelectionSection.test.tsx +0 -328
  254. package/tests/RequestSubmit.test.tsx +0 -135
  255. package/tests/RevocablePurpose.test.tsx +0 -146
  256. package/tests/RevokeWarningMessage.test.tsx +0 -151
  257. package/tests/consentClient.test.ts +0 -217
  258. package/tests/manageConsentServer.test.ts +0 -38
  259. package/tests/mocks.ts +0 -257
  260. package/tests/resolveContactFromJwt.test.ts +0 -44
  261. package/tests/setup.ts +0 -16
  262. package/tsconfig.json +0 -16
  263. package/tsup.config.ts +0 -31
  264. package/vitest.config.ts +0 -16
@@ -1,3108 +0,0 @@
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 {
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: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', '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-consent-toolbar-control-height: 2rem;
104
- --pc-navbar-actions-control-height: var(--pc-consent-toolbar-control-height);
105
- --pc-sidebar-mobile-width: 280px;
106
- --pc-sidebar-collapsed-width: 80px;
107
- --pc-sidebar-expanded-width: 300px;
108
- --pc-sidebar-expanded-width-2xl: 320px;
109
- }
110
- `;
111
- document.head.appendChild(variablesStyle);
112
- }
113
-
114
- // Inject Inter font from Google Fonts so the SDK has a polished default
115
- // even when the host app provides no custom typography. Hosts can opt out
116
- // by overriding --pc-font-family.
117
- const FONT_LINK_ID = 'redacto-privacy-center-fonts';
118
- if (!document.getElementById(FONT_LINK_ID)) {
119
- const preconnect1 = document.createElement('link');
120
- preconnect1.rel = 'preconnect';
121
- preconnect1.href = 'https://fonts.googleapis.com';
122
- document.head.appendChild(preconnect1);
123
-
124
- const preconnect2 = document.createElement('link');
125
- preconnect2.rel = 'preconnect';
126
- preconnect2.href = 'https://fonts.gstatic.com';
127
- preconnect2.crossOrigin = 'anonymous';
128
- document.head.appendChild(preconnect2);
129
-
130
- const fontLink = document.createElement('link');
131
- fontLink.id = FONT_LINK_ID;
132
- fontLink.rel = 'stylesheet';
133
- fontLink.href =
134
- 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap';
135
- document.head.appendChild(fontLink);
136
- }
137
-
138
- style.textContent = `
139
- /* Privacy Center SDK Styles */
140
-
141
- /* Theme Transition Animations */
142
- /* Smooth transitions for all color-related properties (scoped to SDK root).
143
- IMPORTANT: Avoid !important so component-specific transitions (e.g. transform)
144
- can win and animations remain smooth. */
145
- .pc-root,
146
- .pc-root *,
147
- .pc-root *::before,
148
- .pc-root *::after {
149
- transition: background-color 0.4s cubic-bezier(0.4, 0, 0.2, 1),
150
- color 0.4s cubic-bezier(0.4, 0, 0.2, 1),
151
- border-color 0.4s cubic-bezier(0.4, 0, 0.2, 1),
152
- fill 0.4s cubic-bezier(0.4, 0, 0.2, 1),
153
- stroke 0.4s cubic-bezier(0.4, 0, 0.2, 1);
154
- }
155
-
156
- /* Exclude certain elements from transitions */
157
- svg *,
158
- img,
159
- video,
160
- canvas {
161
- transition: none !important;
162
- }
163
-
164
- /* Keyframe Animations */
165
- @keyframes pc-spin {
166
- 0% {
167
- transform: rotate(0deg);
168
- }
169
- 100% {
170
- transform: rotate(360deg);
171
- }
172
- }
173
-
174
- @keyframes pc-fadeIn {
175
- from {
176
- opacity: 0;
177
- }
178
- to {
179
- opacity: 1;
180
- }
181
- }
182
-
183
- @keyframes pc-slideDown {
184
- from {
185
- opacity: 0;
186
- transform: translateY(-10px);
187
- }
188
- to {
189
- opacity: 1;
190
- transform: translateY(0);
191
- }
192
- }
193
-
194
- @keyframes pc-slideUp {
195
- from {
196
- opacity: 0;
197
- transform: translateY(10px);
198
- }
199
- to {
200
- opacity: 1;
201
- transform: translateY(0);
202
- }
203
- }
204
-
205
- @keyframes pulse {
206
- 0%, 100% {
207
- opacity: 1;
208
- }
209
- 50% {
210
- opacity: 0.5;
211
- }
212
- }
213
-
214
- /* Checkbox Styles */
215
- .pc-checkbox {
216
- appearance: none !important;
217
- -webkit-appearance: none !important;
218
- -moz-appearance: none !important;
219
- border: 2px solid var(--pc-border-color) !important;
220
- border-radius: var(--pc-border-radius-sm) !important;
221
- background-color: var(--pc-bg-primary) !important;
222
- cursor: pointer !important;
223
- position: relative !important;
224
- box-sizing: border-box !important;
225
- margin: 0 !important;
226
- transition: all 0.2s ease !important;
227
- flex-shrink: 0 !important;
228
- }
229
-
230
- .pc-checkbox:checked {
231
- background-color: var(--pc-primary) !important;
232
- border-color: var(--pc-primary) !important;
233
- }
234
-
235
- .pc-checkbox:hover:not(:disabled) {
236
- border-color: var(--pc-primary) !important;
237
- box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1) !important;
238
- }
239
-
240
- .pc-checkbox:checked::after {
241
- content: '' !important;
242
- position: absolute !important;
243
- left: 50% !important;
244
- top: 50% !important;
245
- transform: translate(-50%, -50%) rotate(45deg) !important;
246
- width: 4px !important;
247
- height: 8px !important;
248
- border: solid var(--pc-text-inverse) !important;
249
- border-width: 0 2px 2px 0 !important;
250
- box-sizing: border-box !important;
251
- }
252
-
253
- .pc-checkbox-sm:checked::after {
254
- width: 3px !important;
255
- height: 6px !important;
256
- border-width: 0 1.5px 1.5px 0 !important;
257
- }
258
-
259
- .pc-checkbox:focus {
260
- outline: 2px solid var(--pc-border-color-focus) !important;
261
- outline-offset: 2px !important;
262
- }
263
-
264
- .pc-checkbox:disabled {
265
- opacity: 0.5 !important;
266
- cursor: not-allowed !important;
267
- }
268
-
269
- /* Input Focus Styles - Removed focus ring and border change */
270
- .pc-input:focus,
271
- .pc-textarea:focus,
272
- .pc-select:focus {
273
- outline: none !important;
274
- box-shadow: none !important;
275
- }
276
-
277
- /* Button Hover States */
278
- .pc-button-primary:hover:not(:disabled) {
279
- background-color: var(--pc-primary-hover) !important;
280
- }
281
-
282
- .pc-button-secondary:hover:not(:disabled) {
283
- background-color: var(--pc-primary) !important;
284
- color: var(--pc-text-inverse) !important;
285
- }
286
-
287
- .pc-button-outline:hover:not(:disabled) {
288
- background-color: var(--pc-bg-hover) !important;
289
- }
290
-
291
- .pc-button-text:hover:not(:disabled) {
292
- background-color: var(--pc-bg-hover) !important;
293
- }
294
-
295
- .pc-button-danger:hover:not(:disabled) {
296
- background-color: #dc2626 !important;
297
- }
298
-
299
- /* Responsive modal footer actions (stack buttons on small screens) */
300
- .pc-modal-footer-actions {
301
- display: flex;
302
- gap: var(--pc-spacing-sm);
303
- justify-content: flex-end;
304
- width: 100%;
305
- }
306
-
307
- @media (max-width: 480px) {
308
- .pc-modal-footer-actions {
309
- flex-direction: column-reverse;
310
- align-items: stretch;
311
- }
312
- .pc-modal-footer-actions > button {
313
- width: 100% !important;
314
- }
315
- }
316
-
317
- /* Button Focus States */
318
- .pc-button:focus-visible {
319
- outline: 2px solid var(--pc-border-color-focus) !important;
320
- outline-offset: 2px !important;
321
- }
322
-
323
- /* Table Row Hover */
324
- .pc-table-row:hover {
325
- background-color: var(--pc-bg-hover) !important;
326
- }
327
-
328
- /* Action Icon Hover */
329
- .pc-action-icon:hover:not(:disabled) {
330
- background-color: var(--pc-bg-hover) !important;
331
- }
332
-
333
- /* Modal Overlay Animation */
334
- .pc-modal-overlay {
335
- animation: pc-fadeIn 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
336
- }
337
-
338
- /* Dropdown Animation - Support both top and bottom positioning */
339
- .pc-select-dropdown {
340
- animation: pc-slideDown 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
341
- }
342
-
343
- /* Popover Animation - matches modal/dropdown motion vocabulary */
344
- .pc-popover {
345
- animation: pc-fadeIn 120ms cubic-bezier(0.16, 1, 0.3, 1);
346
- }
347
-
348
- @media (prefers-reduced-motion: reduce) {
349
- .pc-popover {
350
- animation: none !important;
351
- }
352
- }
353
-
354
- /* Responsive dropdown - allow width to be set via inline styles */
355
- .pc-select-dropdown {
356
- box-sizing: border-box !important;
357
- }
358
-
359
- /* Ensure options don't wrap and dropdown is compact */
360
- .pc-select-option {
361
- white-space: nowrap !important;
362
- }
363
-
364
- /* Responsive dropdown positioning for small screens */
365
- @media (max-width: 639px) {
366
- .pc-select-dropdown {
367
- left: 0 !important;
368
- right: auto !important;
369
- }
370
- }
371
-
372
- /* For very small screens, ensure dropdown doesn't overflow viewport */
373
- @media (max-width: 480px) {
374
- .pc-select-dropdown {
375
- max-width: calc(100vw - 2rem) !important;
376
- }
377
- }
378
-
379
- /* Tooltip Animation */
380
- .pc-tooltip {
381
- animation: pc-slideUp 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
382
- }
383
-
384
- /* Accordion Transition */
385
- .pc-accordion-body {
386
- transition: max-height 0.3s ease, padding 0.3s ease !important;
387
- }
388
-
389
- /* Activity Timeline */
390
- .pc-timeline-content {
391
- transition: background-color var(--pc-transition-fast) !important;
392
- }
393
- .pc-timeline-row:hover .pc-timeline-content {
394
- background-color: var(--pc-bg-secondary) !important;
395
- }
396
- .pc-timeline-item {
397
- animation: pc-fadeIn 0.2s ease both;
398
- }
399
- @media (prefers-reduced-motion: reduce) {
400
- .pc-timeline-item {
401
- animation: none !important;
402
- }
403
- }
404
-
405
- /* Scrollbar Styles (for better UX) */
406
- .pc-scrollbar::-webkit-scrollbar {
407
- width: 8px;
408
- height: 8px;
409
- }
410
-
411
- .pc-scrollbar::-webkit-scrollbar-track {
412
- background: var(--pc-bg-secondary);
413
- border-radius: 4px;
414
- }
415
-
416
- .pc-scrollbar::-webkit-scrollbar-thumb {
417
- background: var(--pc-border-color);
418
- border-radius: 4px;
419
- }
420
-
421
- .pc-scrollbar::-webkit-scrollbar-thumb:hover {
422
- background: var(--pc-border-color-hover);
423
- }
424
-
425
- /* Ensure SDK components have proper z-index */
426
- .pc-select-dropdown {
427
- z-index: var(--pc-z-dropdown) !important;
428
- }
429
-
430
- .pc-tooltip {
431
- z-index: 1300 !important;
432
- }
433
-
434
- .pc-modal-overlay {
435
- z-index: var(--pc-z-modal-backdrop) !important;
436
- }
437
-
438
- .pc-modal {
439
- z-index: var(--pc-z-modal) !important;
440
- }
441
-
442
- /* Responsive Utilities */
443
- @media (max-width: 639px) {
444
- .pc-hidden-xs {
445
- display: none !important;
446
- }
447
- .pc-block-xs {
448
- display: block !important;
449
- }
450
- .pc-flex-xs {
451
- display: flex !important;
452
- }
453
- }
454
-
455
- @media (min-width: 640px) {
456
- .pc-hidden-sm {
457
- display: none !important;
458
- }
459
- .pc-block-sm {
460
- display: block !important;
461
- }
462
- .pc-flex-sm {
463
- display: flex !important;
464
- }
465
- }
466
-
467
- @media (min-width: 768px) {
468
- .pc-hidden-md {
469
- display: none !important;
470
- }
471
- .pc-block-md {
472
- display: block !important;
473
- }
474
- .pc-flex-md {
475
- display: flex !important;
476
- }
477
- }
478
-
479
- @media (min-width: 1024px) {
480
- .pc-hidden-lg {
481
- display: none !important;
482
- }
483
- .pc-block-lg {
484
- display: block !important;
485
- }
486
- .pc-flex-lg {
487
- display: flex !important;
488
- }
489
- }
490
-
491
- /* Status badge: responsive, light bg, little radius */
492
- .pc-status-badge {
493
- border-radius: 9999px;
494
- max-width: 100%;
495
- white-space: nowrap;
496
- overflow: hidden;
497
- text-overflow: ellipsis;
498
- }
499
- @media (max-width: 480px) {
500
- .pc-status-badge {
501
- padding: 0.2rem 0.4rem !important;
502
- font-size: 0.6875rem !important;
503
- }
504
- }
505
- @media (min-width: 481px) and (max-width: 639px) {
506
- .pc-status-badge {
507
- padding: 0.22rem 0.45rem !important;
508
- font-size: 0.7rem !important;
509
- }
510
- }
511
-
512
- /* Responsive Typography */
513
- .pc-text-responsive {
514
- font-size: 0.875rem;
515
- }
516
- @media (min-width: 768px) {
517
- .pc-text-responsive {
518
- font-size: 1rem;
519
- }
520
- }
521
- @media (min-width: 1024px) {
522
- .pc-text-responsive {
523
- font-size: 1.125rem;
524
- }
525
- }
526
-
527
- /* Responsive Container */
528
- .pc-container-responsive {
529
- width: 100%;
530
- padding-left: 0.75rem;
531
- padding-right: 0.75rem;
532
- }
533
- @media (min-width: 640px) {
534
- .pc-container-responsive {
535
- padding-left: 1rem;
536
- padding-right: 1rem;
537
- }
538
- }
539
- @media (min-width: 1024px) {
540
- .pc-container-responsive {
541
- padding-left: 1.5rem;
542
- padding-right: 1.5rem;
543
- max-width: 1280px;
544
- margin-left: auto;
545
- margin-right: auto;
546
- }
547
- }
548
-
549
- /* Responsive Grid */
550
- .pc-grid-responsive {
551
- display: grid;
552
- grid-template-columns: 1fr;
553
- gap: 0.75rem;
554
- }
555
- @media (min-width: 640px) {
556
- .pc-grid-responsive {
557
- display: flex;
558
- flex-direction: row;
559
- gap: 1rem;
560
- }
561
- }
562
- @media (min-width: 1024px) {
563
- .pc-grid-responsive {
564
- display: flex;
565
- flex-direction: row;
566
- gap: 1.5rem;
567
- }
568
- }
569
-
570
- .pc-product-select-section {
571
- width: 100%;
572
- max-width: 100%;
573
- min-width: 0;
574
- overflow: visible;
575
- }
576
- .pc-product-select-header {
577
- padding-left: 0.75rem;
578
- padding-right: 0.75rem;
579
- margin-bottom: 0.75rem;
580
- }
581
- .pc-product-select-chips {
582
- display: flex;
583
- flex-wrap: wrap;
584
- align-items: center;
585
- gap: 0.4375rem;
586
- width: 100%;
587
- max-width: 100%;
588
- min-width: 0;
589
- padding-left: 0.75rem;
590
- padding-right: 0.75rem;
591
- padding-bottom: 0.125rem;
592
- overflow: visible;
593
- }
594
- .pc-product-select-chip {
595
- display: inline-flex;
596
- align-items: center;
597
- flex-wrap: nowrap;
598
- box-sizing: border-box;
599
- padding: 0.3125rem 0.6875rem;
600
- border: 1px solid var(--pc-border-color);
601
- border-radius: 9999px;
602
- background-color: var(--pc-bg-secondary);
603
- color: var(--pc-text-primary);
604
- cursor: pointer;
605
- appearance: none;
606
- -webkit-appearance: none;
607
- font-family: inherit;
608
- line-height: 1.25;
609
- transition: border-color 0.2s ease, background-color 0.2s ease;
610
- max-width: 100%;
611
- min-width: 0;
612
- }
613
- .pc-product-select-chip:disabled {
614
- cursor: default;
615
- opacity: 0.85;
616
- }
617
- .pc-product-select-chip--selected {
618
- border-color: var(--pc-primary);
619
- background-color: color-mix(in srgb, var(--pc-primary) 10%, var(--pc-bg-primary));
620
- }
621
- .pc-product-select-chip--skeleton {
622
- cursor: default;
623
- pointer-events: none;
624
- }
625
- .pc-product-select-chip-inner {
626
- display: flex;
627
- flex-direction: column;
628
- align-items: flex-start;
629
- gap: 0.0625rem;
630
- min-width: 0;
631
- max-width: min(100%, 11.5rem);
632
- }
633
- .pc-product-select-chip-label {
634
- display: block;
635
- overflow: hidden;
636
- text-overflow: ellipsis;
637
- white-space: nowrap;
638
- max-width: 100%;
639
- min-width: 0;
640
- font-size: 0.8125rem;
641
- font-weight: 500;
642
- line-height: 1.25;
643
- }
644
- .pc-product-select-chip-suffix {
645
- display: block;
646
- overflow: hidden;
647
- text-overflow: ellipsis;
648
- white-space: nowrap;
649
- max-width: 100%;
650
- min-width: 0;
651
- font-size: 0.6875rem;
652
- font-weight: 500;
653
- color: var(--pc-text-secondary);
654
- line-height: 1.25;
655
- }
656
- .pc-product-select-chip-meta {
657
- display: block;
658
- overflow: hidden;
659
- text-overflow: ellipsis;
660
- white-space: nowrap;
661
- max-width: 100%;
662
- min-width: 0;
663
- font-size: 0.6875rem;
664
- color: var(--pc-text-secondary);
665
- line-height: 1.25;
666
- }
667
- .pc-select-user {
668
- display: flex;
669
- flex-direction: column;
670
- justify-content: center;
671
- gap: var(--pc-spacing-xl);
672
- width: 100%;
673
- max-width: 460px;
674
- margin: 0 auto;
675
- min-height: min(62vh, 540px);
676
- padding-top: var(--pc-spacing-2xl);
677
- padding-bottom: var(--pc-spacing-2xl);
678
- }
679
- .pc-select-user__header {
680
- display: flex;
681
- flex-direction: column;
682
- align-items: center;
683
- text-align: center;
684
- gap: var(--pc-spacing-sm);
685
- }
686
- .pc-select-user__header > * {
687
- margin: 0;
688
- }
689
- .pc-select-user__list {
690
- display: flex;
691
- flex-direction: column;
692
- gap: 0.625rem;
693
- }
694
- .pc-select-user__item {
695
- display: flex;
696
- align-items: center;
697
- justify-content: space-between;
698
- gap: 0.75rem;
699
- width: 100%;
700
- box-sizing: border-box;
701
- padding: 0.75rem 1rem;
702
- border: 1px solid var(--pc-border-color);
703
- border-radius: 0.625rem;
704
- background-color: var(--pc-bg-primary);
705
- color: var(--pc-text-primary);
706
- cursor: pointer;
707
- text-align: left;
708
- appearance: none;
709
- -webkit-appearance: none;
710
- font-family: inherit;
711
- transition: border-color 0.2s ease, background-color 0.2s ease;
712
- }
713
- .pc-select-user__item:hover:not(:disabled) {
714
- border-color: var(--pc-primary);
715
- background-color: color-mix(in srgb, var(--pc-primary) 6%, var(--pc-bg-primary));
716
- }
717
- .pc-select-user__item:disabled {
718
- cursor: default;
719
- opacity: 0.7;
720
- }
721
- .pc-select-user__item:focus-visible {
722
- outline: 2px solid var(--pc-border-color-focus);
723
- outline-offset: 2px;
724
- }
725
- .pc-select-user__item-text {
726
- display: flex;
727
- flex-direction: column;
728
- align-items: flex-start;
729
- gap: 0.125rem;
730
- min-width: 0;
731
- }
732
- .pc-select-user__item-primary {
733
- font-size: 0.875rem;
734
- font-weight: 600;
735
- line-height: 1.25;
736
- overflow: hidden;
737
- text-overflow: ellipsis;
738
- white-space: nowrap;
739
- max-width: 100%;
740
- }
741
- .pc-select-user__item-secondary {
742
- font-size: 0.75rem;
743
- color: var(--pc-text-secondary);
744
- line-height: 1.25;
745
- overflow: hidden;
746
- text-overflow: ellipsis;
747
- white-space: nowrap;
748
- max-width: 100%;
749
- }
750
- .pc-select-user__item-status {
751
- font-size: 0.75rem;
752
- font-weight: 600;
753
- color: var(--pc-primary);
754
- flex-shrink: 0;
755
- }
756
- .pc-select-user__item-chevron {
757
- color: var(--pc-primary);
758
- flex-shrink: 0;
759
- }
760
- .pc-select-user__error {
761
- margin: 0.75rem 0 0;
762
- font-size: 0.8125rem;
763
- color: var(--pc-error);
764
- text-align: center;
765
- }
766
- .pc-select-user-loading {
767
- display: flex;
768
- align-items: center;
769
- justify-content: center;
770
- min-height: 60vh;
771
- }
772
- .pc-product-purpose-panel {
773
- display: flex;
774
- flex-direction: column;
775
- width: 100%;
776
- max-width: 100%;
777
- min-width: 0;
778
- border: 1px solid var(--pc-border-color);
779
- border-radius: var(--pc-radius-lg, 0.5rem);
780
- background-color: var(--pc-bg-secondary);
781
- overflow: hidden;
782
- }
783
- .pc-product-purpose-panel-header {
784
- display: flex;
785
- flex-direction: column;
786
- gap: 0.25rem;
787
- padding: 0.75rem;
788
- background-color: var(--pc-bg-primary);
789
- border-bottom: 1px solid var(--pc-border-color);
790
- }
791
- .pc-product-purpose-panel-title-row {
792
- display: flex;
793
- align-items: center;
794
- flex-wrap: wrap;
795
- gap: 0.375rem 0.5rem;
796
- min-width: 0;
797
- }
798
- .pc-product-purpose-panel-title {
799
- overflow-wrap: anywhere;
800
- word-break: break-word;
801
- min-width: 0;
802
- }
803
- .pc-product-purpose-panel-nominator,
804
- .pc-product-purpose-panel-subtitle {
805
- overflow-wrap: anywhere;
806
- word-break: break-word;
807
- }
808
- .pc-product-purpose-panel-body {
809
- padding: 0.75rem;
810
- background-color: var(--pc-bg-primary);
811
- overflow-x: auto;
812
- -webkit-overflow-scrolling: touch;
813
- }
814
- @media (min-width: 640px) {
815
- .pc-product-select-header {
816
- padding-left: 1rem;
817
- padding-right: 1rem;
818
- margin-bottom: 1rem;
819
- }
820
- .pc-product-select-chips {
821
- gap: 0.4375rem;
822
- padding-left: 1rem;
823
- padding-right: 1rem;
824
- }
825
- .pc-product-purpose-panel-header {
826
- padding: 0.875rem 1rem;
827
- }
828
- .pc-product-purpose-panel-body {
829
- padding: 1rem;
830
- }
831
- }
832
- @media (min-width: 768px) {
833
- .pc-product-select-chips {
834
- gap: 0.4375rem;
835
- }
836
- .pc-product-purpose-panel-header {
837
- padding: 1rem;
838
- }
839
- .pc-product-purpose-panel-body {
840
- padding: 1rem;
841
- }
842
- }
843
- @media (min-width: 1024px) {
844
- .pc-product-select-header {
845
- padding-left: 1rem;
846
- padding-right: 1rem;
847
- }
848
- .pc-product-select-chips {
849
- gap: 0.4375rem;
850
- }
851
- .pc-product-select-chip-inner {
852
- max-width: min(100%, 13rem);
853
- }
854
- }
855
- @media (min-width: 1280px) {
856
- .pc-product-select-chips {
857
- gap: 0.625rem;
858
- }
859
- }
860
-
861
- /* Responsive Flex Direction */
862
- .pc-flex-responsive {
863
- flex-direction: column;
864
- }
865
- @media (min-width: 640px) {
866
- .pc-flex-responsive {
867
- flex-direction: row;
868
- align-items: flex-start;
869
- }
870
- }
871
-
872
- /* Responsive Spacing */
873
- .pc-spacing-responsive {
874
- gap: 0.5rem;
875
- }
876
- @media (min-width: 768px) {
877
- .pc-spacing-responsive {
878
- gap: 1rem;
879
- }
880
- }
881
- @media (min-width: 1024px) {
882
- .pc-spacing-responsive {
883
- gap: 1.5rem;
884
- }
885
- }
886
-
887
- /* Responsive Padding */
888
- .pc-padding-responsive {
889
- padding: 0.75rem;
890
- }
891
- @media (min-width: 640px) {
892
- .pc-padding-responsive {
893
- padding: 1rem;
894
- }
895
- }
896
- @media (min-width: 1024px) {
897
- .pc-padding-responsive {
898
- padding: 1.5rem;
899
- }
900
- }
901
-
902
- /* Responsive Width */
903
- .pc-w-full-mobile {
904
- width: 100%;
905
- }
906
- @media (min-width: 640px) {
907
- .pc-w-full-mobile {
908
- width: auto;
909
- }
910
- }
911
-
912
- /* Ensure proper box-sizing for all SDK elements */
913
- .pc-root,
914
- .pc-root *,
915
- .pc-root *::before,
916
- .pc-root *::after {
917
- box-sizing: border-box;
918
- }
919
-
920
- /* Base reset for SDK components */
921
- .pc-root {
922
- font-family: var(--pc-font-family);
923
- font-size: var(--pc-font-size-base);
924
- line-height: 1.5;
925
- color: var(--pc-text-primary);
926
- background-color: var(--pc-bg-shell);
927
- -webkit-font-smoothing: antialiased;
928
- -moz-osx-font-smoothing: grayscale;
929
- }
930
-
931
- /* Ensure tables are responsive */
932
- .pc-table-wrapper {
933
- overflow-x: auto;
934
- -webkit-overflow-scrolling: touch;
935
- }
936
-
937
- /* Responsive table */
938
- @media (max-width: 767px) {
939
- .pc-table-responsive {
940
- font-size: 0.875rem;
941
- }
942
- .pc-table-responsive th,
943
- .pc-table-responsive td {
944
- padding: 0.5rem 0.25rem;
945
- }
946
- }
947
-
948
- /* Sidebar responsive styles */
949
- /* Mobile: Hidden by default, shown when mobile menu is open */
950
- @media (max-width: 767px) {
951
- .pc-sidebar {
952
- width: var(--pc-sidebar-mobile-width) !important;
953
- transform: translateX(-100%) !important;
954
- transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
955
- will-change: transform;
956
- }
957
- .pc-sidebar[data-mobile-open="true"] {
958
- transform: translateX(0) !important;
959
- }
960
- }
961
-
962
- /* Mobile overlay fade */
963
- .pc-mobile-overlay {
964
- opacity: 0;
965
- pointer-events: none;
966
- transition: opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1);
967
- will-change: opacity;
968
- }
969
- .pc-mobile-overlay[data-open="true"] {
970
- opacity: 1;
971
- pointer-events: auto;
972
- }
973
-
974
- /* Medium screens (768px+): Sidebar visible, collapsed by default */
975
- @media (min-width: 768px) {
976
- .pc-sidebar {
977
- transform: translateX(0) !important;
978
- /* Default to collapsed width */
979
- width: var(--pc-sidebar-collapsed-width) !important;
980
- transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
981
- will-change: width;
982
- }
983
- /* Expand only when collapse state is toggled off */
984
- .pc-sidebar:not(.pc-sidebar-collapsed) {
985
- width: var(--pc-sidebar-expanded-width) !important;
986
- }
987
- /* Explicitly set collapsed width */
988
- .pc-sidebar.pc-sidebar-collapsed {
989
- width: var(--pc-sidebar-collapsed-width) !important;
990
- }
991
- }
992
-
993
- /* Large screens (1024px+): Same behavior as medium */
994
- @media (min-width: 1024px) {
995
- .pc-sidebar:not(.pc-sidebar-collapsed) {
996
- width: var(--pc-sidebar-expanded-width) !important;
997
- }
998
- }
999
-
1000
- /* Extra large screens (1280px+): Same behavior */
1001
- @media (min-width: 1280px) {
1002
- .pc-sidebar:not(.pc-sidebar-collapsed) {
1003
- width: var(--pc-sidebar-expanded-width) !important;
1004
- }
1005
- }
1006
-
1007
- @media (min-width: 1536px) {
1008
- .pc-sidebar:not(.pc-sidebar-collapsed) {
1009
- width: var(--pc-sidebar-expanded-width-2xl) !important;
1010
- }
1011
- }
1012
-
1013
- /* Desktop sidebar toggle affordance:
1014
- fixed top-layer button aligned to the sidebar border. */
1015
- .pc-sidebar-toggle-desktop {
1016
- left: calc(var(--pc-sidebar-collapsed-width) - 14px);
1017
- transform: translateY(-50%);
1018
- transition: opacity 0.2s ease, left 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1019
- }
1020
- @media (min-width: 768px) {
1021
- .pc-sidebar {
1022
- isolation: isolate;
1023
- }
1024
- .pc-sidebar-toggle-desktop[data-visible="false"] {
1025
- opacity: 0;
1026
- pointer-events: none;
1027
- }
1028
- .pc-sidebar-toggle-desktop[data-visible="true"] {
1029
- opacity: 1;
1030
- pointer-events: auto;
1031
- }
1032
- .pc-sidebar-toggle-desktop[data-collapsed="false"] {
1033
- left: calc(var(--pc-sidebar-expanded-width) - 14px);
1034
- }
1035
- }
1036
- @media (min-width: 1536px) {
1037
- .pc-sidebar-toggle-desktop[data-collapsed="false"] {
1038
- left: calc(var(--pc-sidebar-expanded-width-2xl) - 14px);
1039
- }
1040
- }
1041
-
1042
- /* Ensure menu items are always vertical */
1043
- .pc-sidebar-menu-container {
1044
- display: flex !important;
1045
- flex-direction: column !important;
1046
- }
1047
-
1048
- /* Ensure menu items stack vertically, not horizontally */
1049
- .pc-sidebar-menu-container > * {
1050
- display: block !important;
1051
- width: 100% !important;
1052
- flex-shrink: 0 !important;
1053
- }
1054
-
1055
- /* Collapsed menu items should be centered and vertical */
1056
- .pc-sidebar.pc-sidebar-collapsed .pc-sidebar-menu-container > * {
1057
- width: 100% !important;
1058
- }
1059
-
1060
- /* Prevent horizontal layout of menu items */
1061
- .pc-sidebar-menu-container > * > * {
1062
- display: block !important;
1063
- }
1064
-
1065
- /* Ensure menu items are always vertical */
1066
- .pc-sidebar .pc-menu-container {
1067
- display: flex !important;
1068
- flex-direction: column !important;
1069
- }
1070
-
1071
- /* Responsive Header Layout */
1072
- .pc-header-responsive {
1073
- flex-direction: column !important;
1074
- }
1075
- @media (min-width: 768px) {
1076
- .pc-header-responsive {
1077
- flex-direction: row !important;
1078
- align-items: flex-start !important;
1079
- justify-content: space-between !important;
1080
- }
1081
- }
1082
-
1083
- /* Responsive Title Section */
1084
- .pc-title-responsive {
1085
- width: 100% !important;
1086
- }
1087
- @media (min-width: 768px) {
1088
- .pc-title-responsive {
1089
- flex: 1 !important;
1090
- min-width: 200px !important;
1091
- width: auto !important;
1092
- }
1093
- }
1094
-
1095
- /* Responsive Export Button */
1096
- .pc-export-button-responsive {
1097
- width: 100% !important;
1098
- }
1099
- @media (min-width: 768px) {
1100
- .pc-export-button-responsive {
1101
- width: auto !important;
1102
- flex-shrink: 0 !important;
1103
- }
1104
- }
1105
- @media (min-width: 768px) {
1106
- .pc-export-button-responsive button {
1107
- width: auto !important;
1108
- }
1109
- }
1110
-
1111
- /* Responsive Filters Layout */
1112
- .pc-filters-responsive {
1113
- flex-direction: column !important;
1114
- }
1115
- @media (min-width: 768px) {
1116
- .pc-filters-responsive {
1117
- flex-direction: row !important;
1118
- align-items: flex-start !important;
1119
- justify-content: space-between !important;
1120
- width: 100% !important;
1121
- flex-wrap: wrap !important;
1122
- }
1123
- }
1124
-
1125
- /* Responsive Search Input */
1126
- .pc-search-responsive {
1127
- width: 100% !important;
1128
- }
1129
- @media (min-width: 768px) {
1130
- .pc-search-responsive {
1131
- width: auto !important;
1132
- min-width: 160px !important;
1133
- max-width: 340px !important;
1134
- }
1135
- }
1136
-
1137
- /* Responsive Filters Row */
1138
- .pc-filters-row-responsive {
1139
- flex-direction: column !important;
1140
- width: 100% !important;
1141
- margin-left: 0 !important;
1142
- }
1143
- @media (min-width: 768px) {
1144
- .pc-filters-row-responsive {
1145
- flex-direction: row !important;
1146
- width: auto !important;
1147
- flex-shrink: 0 !important;
1148
- margin-left: auto !important;
1149
- margin-right: 0 !important;
1150
- gap: 1rem !important;
1151
- align-items: center !important;
1152
- justify-content: flex-end !important;
1153
- flex-wrap: wrap !important;
1154
- }
1155
- }
1156
-
1157
- /* Consent Manager filter selects: full width on mobile, responsive on medium, fixed on desktop */
1158
- .pc-filter-select {
1159
- width: 100% !important;
1160
- min-width: 0 !important;
1161
- }
1162
- /* Medium screens (e.g. tablets): allow shrink + wrap to avoid overflow */
1163
- @media (min-width: 768px) and (max-width: 1023px) {
1164
- .pc-search-responsive {
1165
- flex: 1 1 200px !important;
1166
- max-width: none !important;
1167
- }
1168
- .pc-filters-row-responsive {
1169
- width: 100% !important;
1170
- margin-left: 0 !important;
1171
- justify-content: flex-start !important;
1172
- }
1173
- .pc-filter-select {
1174
- flex: 1 1 200px !important;
1175
- width: auto !important;
1176
- min-width: 180px !important;
1177
- max-width: 240px !important;
1178
- }
1179
- }
1180
- /* Desktop: keep equal, sufficient width */
1181
- @media (min-width: 1024px) {
1182
- .pc-filter-select {
1183
- width: 240px !important;
1184
- min-width: 240px !important;
1185
- flex: 0 0 auto !important;
1186
- }
1187
- }
1188
- @media (min-width: 768px) {
1189
- .pc-filters-row-responsive > *:not(:first-child) {
1190
-
1191
- }
1192
- .pc-filter-button-wrapper {
1193
- width: auto !important;
1194
- min-width: auto !important;
1195
- }
1196
- /* Tabs container should only take space it needs */
1197
- .pc-filters-row-responsive > *:first-child {
1198
- min-width: auto !important;
1199
- width: auto !important;
1200
- }
1201
- }
1202
-
1203
- /* Override the generic first-child sizing for our filter selects */
1204
- @media (min-width: 1024px) {
1205
- .pc-filters-row-responsive > .pc-filter-select:first-child {
1206
- width: 240px !important;
1207
- min-width: 240px !important;
1208
- }
1209
- }
1210
-
1211
- /* My Receipt — toolbar polish */
1212
- .pc-receipts-filters-card {
1213
- display: flex;
1214
- flex-direction: column;
1215
- gap: 0.75rem;
1216
- border: 1px solid var(--pc-border-color);
1217
- border-radius: var(--pc-border-radius-lg);
1218
- background-color: var(--pc-bg-primary);
1219
- padding: 0.75rem;
1220
- }
1221
- .pc-receipts-filters-header {
1222
- display: flex;
1223
- flex-direction: column;
1224
- gap: 0.5rem;
1225
- }
1226
- .pc-receipts-filters-grid {
1227
- display: grid;
1228
- grid-template-columns: minmax(0, 1fr);
1229
- gap: 0.75rem;
1230
- width: 100%;
1231
- }
1232
- .pc-receipts-filter-control {
1233
- width: 100% !important;
1234
- min-width: 0 !important;
1235
- max-width: none !important;
1236
- flex: 1 1 auto !important;
1237
- }
1238
- .pc-receipts-summary-row {
1239
- display: flex;
1240
- flex-direction: column;
1241
- gap: 0.5rem;
1242
- border-top: 1px solid var(--pc-border-color);
1243
- padding-top: 0.625rem;
1244
- }
1245
- .pc-receipts-active-chips {
1246
- display: flex;
1247
- flex-wrap: wrap;
1248
- gap: 0.375rem;
1249
- align-items: center;
1250
- }
1251
- .pc-receipts-filter-chip {
1252
- display: inline-flex;
1253
- align-items: center;
1254
- gap: 0.25rem;
1255
- border-radius: 9999px;
1256
- border: 1px solid var(--pc-border-color);
1257
- background-color: var(--pc-bg-secondary);
1258
- color: var(--pc-text-secondary);
1259
- font-size: 0.75rem;
1260
- line-height: 1.2;
1261
- padding: 0.1875rem 0.5rem;
1262
- white-space: nowrap;
1263
- }
1264
- .pc-receipts-filter-chip-label {
1265
- color: var(--pc-text-primary);
1266
- font-weight: 600;
1267
- }
1268
- .pc-receipt-custom-hint {
1269
- margin: 0;
1270
- color: var(--pc-error);
1271
- }
1272
- @media (min-width: 768px) and (max-width: 1023px) {
1273
- .pc-receipts-filters-grid {
1274
- grid-template-columns: repeat(2, minmax(0, 1fr));
1275
- }
1276
- }
1277
- @media (min-width: 768px) {
1278
- .pc-receipts-filters-card {
1279
- padding: 0.875rem 1rem;
1280
- }
1281
- .pc-receipts-filters-header {
1282
- flex-direction: row;
1283
- align-items: flex-start;
1284
- justify-content: space-between;
1285
- gap: 1rem;
1286
- }
1287
- .pc-receipts-summary-row {
1288
- flex-direction: row;
1289
- align-items: flex-start;
1290
- justify-content: space-between;
1291
- gap: 0.75rem;
1292
- }
1293
- .pc-receipts-active-chips {
1294
- justify-content: flex-end;
1295
- }
1296
- }
1297
- @media (min-width: 1024px) {
1298
- .pc-receipts-filters-grid {
1299
- grid-template-columns: repeat(2, minmax(0, 1fr));
1300
- }
1301
- }
1302
-
1303
- /* My Receipt — custom date range (From / To pair) */
1304
- .pc-receipt-date-range {
1305
- display: flex;
1306
- flex-direction: row;
1307
- align-items: flex-end;
1308
- gap: 0.5rem;
1309
- width: 100%;
1310
- margin-top: -0.125rem;
1311
- }
1312
- .pc-receipt-date-field {
1313
- flex: 1 1 0;
1314
- min-width: 0;
1315
- }
1316
- @media (min-width: 768px) {
1317
- .pc-receipt-date-range {
1318
- width: auto !important;
1319
- }
1320
- .pc-receipt-date-field {
1321
- flex: 0 0 auto;
1322
- width: 160px;
1323
- }
1324
- }
1325
-
1326
- .pc-navbar-actions {
1327
- align-items: center !important;
1328
- }
1329
- .pc-navbar-language-select {
1330
- width: auto !important;
1331
- min-width: 120px !important;
1332
- max-width: min(65vw, 320px) !important;
1333
- }
1334
- .pc-navbar-language-select .pc-select {
1335
- box-sizing: border-box !important;
1336
- height: var(--pc-navbar-actions-control-height, var(--pc-consent-toolbar-control-height, 2rem)) !important;
1337
- min-height: var(--pc-navbar-actions-control-height, var(--pc-consent-toolbar-control-height, 2rem)) !important;
1338
- max-height: var(--pc-navbar-actions-control-height, var(--pc-consent-toolbar-control-height, 2rem)) !important;
1339
- padding: 0 0.625rem !important;
1340
- border-color: var(--pc-border-color) !important;
1341
- border-radius: 0.5rem !important;
1342
- background-color: var(--pc-bg-primary) !important;
1343
- box-shadow: none !important;
1344
- font-size: 0.8125rem !important;
1345
- line-height: 1 !important;
1346
- }
1347
- .pc-navbar-language-select .pc-select > span:nth-child(2) {
1348
- line-height: 1.25 !important;
1349
- }
1350
- .pc-navbar-language-select .pc-select svg {
1351
- width: 12px;
1352
- height: 12px;
1353
- }
1354
- .pc-navbar-icon-btn {
1355
- box-sizing: border-box !important;
1356
- width: var(--pc-navbar-actions-control-height, var(--pc-consent-toolbar-control-height, 2rem)) !important;
1357
- height: var(--pc-navbar-actions-control-height, var(--pc-consent-toolbar-control-height, 2rem)) !important;
1358
- min-width: var(--pc-navbar-actions-control-height, var(--pc-consent-toolbar-control-height, 2rem)) !important;
1359
- min-height: var(--pc-navbar-actions-control-height, var(--pc-consent-toolbar-control-height, 2rem)) !important;
1360
- border: 1px solid var(--pc-border-color) !important;
1361
- border-radius: 0.5rem !important;
1362
- background-color: var(--pc-bg-primary) !important;
1363
- color: var(--pc-text-primary) !important;
1364
- padding: 0 !important;
1365
- }
1366
- .pc-navbar-icon-btn:hover:not(:disabled) {
1367
- background-color: var(--pc-bg-hover) !important;
1368
- border-color: var(--pc-border-color-hover) !important;
1369
- }
1370
-
1371
- /* Manage Consent specific shell + table polish */
1372
- .pc-consent-manager-surface {
1373
- width: 100%;
1374
- margin: 0;
1375
- padding-top: 0.25rem;
1376
- }
1377
- .pc-consent-shell-card .pc-consent-tabs-row {
1378
- align-items: center !important;
1379
- justify-content: space-between !important;
1380
- padding-top: 0.125rem !important;
1381
- padding-bottom: 0.375rem !important;
1382
- }
1383
- .pc-consent-shell-card .pc-consent-tabs-left {
1384
- display: flex !important;
1385
- align-items: center !important;
1386
- min-width: 0 !important;
1387
- }
1388
- .pc-consent-shell-card .pc-consent-view-toggle {
1389
- margin-left: auto !important;
1390
- display: flex !important;
1391
- align-items: center !important;
1392
- gap: 0.625rem !important;
1393
- padding-right: 0.5rem !important;
1394
- flex-shrink: 0 !important;
1395
- margin-bottom: 0.0625rem !important;
1396
- }
1397
- .pc-consent-shell-card .pc-consent-view-toggle-label {
1398
- white-space: nowrap !important;
1399
- font-size: 0.75rem !important;
1400
- color: var(--pc-text-secondary) !important;
1401
- }
1402
- .pc-consent-shell-card .pc-consent-view-toggle-group {
1403
- box-shadow: none !important;
1404
- border: 1px solid var(--pc-border-color) !important;
1405
- background-color: var(--pc-bg-secondary) !important;
1406
- }
1407
- .pc-consent-shell-card .pc-consent-view-toggle-btn {
1408
- color: var(--pc-text-secondary);
1409
- }
1410
- .pc-consent-shell-card .pc-consent-view-toggle-btn:hover:not(.is-active) {
1411
- background-color: var(--pc-bg-hover) !important;
1412
- color: var(--pc-text-primary) !important;
1413
- }
1414
- .pc-consent-shell-card .pc-consent-view-toggle-btn.is-active {
1415
- background-color: var(--pc-primary) !important;
1416
- color: var(--pc-text-inverse) !important;
1417
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12) !important;
1418
- }
1419
- .pc-consent-shell-card .pc-filters-responsive {
1420
- gap: 0.75rem !important;
1421
- }
1422
- @media (min-width: 768px) {
1423
- .pc-consent-shell-card .pc-filters-responsive {
1424
- align-items: center !important;
1425
- }
1426
- }
1427
- .pc-consent-shell-card .pc-search-responsive {
1428
- max-width: none !important;
1429
- }
1430
- .pc-consent-shell-card .pc-search-responsive > div {
1431
- width: 100% !important;
1432
- }
1433
- .pc-consent-shell-card .pc-search-responsive [style*="border"] {
1434
- border-color: var(--pc-border-color) !important;
1435
- box-shadow: none !important;
1436
- }
1437
- .pc-consent-shell-card .pc-search-responsive .pc-input-affix {
1438
- box-sizing: border-box !important;
1439
- height: var(--pc-consent-toolbar-control-height, 2rem) !important;
1440
- min-height: var(--pc-consent-toolbar-control-height, 2rem) !important;
1441
- max-height: var(--pc-consent-toolbar-control-height, 2rem) !important;
1442
- align-items: stretch !important;
1443
- }
1444
- .pc-consent-shell-card .pc-search-responsive .pc-input-affix > span:first-of-type,
1445
- .pc-consent-shell-card .pc-search-responsive .pc-input-affix > button {
1446
- align-self: center !important;
1447
- }
1448
- .pc-consent-shell-card .pc-search-responsive .pc-input {
1449
- box-sizing: border-box !important;
1450
- height: 100% !important;
1451
- min-height: 0 !important;
1452
- max-height: none !important;
1453
- padding: 0.25rem 0.5rem !important;
1454
- line-height: 1.25 !important;
1455
- font-size: 0.75rem !important;
1456
- }
1457
- .pc-consent-shell-card .pc-filter-select .pc-select {
1458
- box-sizing: border-box !important;
1459
- height: var(--pc-consent-toolbar-control-height, 2rem) !important;
1460
- min-height: var(--pc-consent-toolbar-control-height, 2rem) !important;
1461
- max-height: var(--pc-consent-toolbar-control-height, 2rem) !important;
1462
- padding: 0.25rem 0.5rem !important;
1463
- line-height: 1 !important;
1464
- font-size: 0.75rem !important;
1465
- }
1466
- .pc-consent-shell-card .pc-filter-select .pc-select > span:nth-child(2) {
1467
- line-height: 1.25 !important;
1468
- }
1469
- .pc-consent-shell-card .pc-filters-summary {
1470
- font-size: 0.6875rem !important;
1471
- color: var(--pc-text-secondary) !important;
1472
- }
1473
- .pc-consent-desktop-view {
1474
- display: block;
1475
- }
1476
- .pc-consent-mobile-view {
1477
- display: none;
1478
- }
1479
- .pc-consent-mobile-list {
1480
- display: flex;
1481
- flex-direction: column;
1482
- gap: 0.625rem;
1483
- }
1484
- .pc-consent-mobile-card {
1485
- display: flex;
1486
- flex-direction: column;
1487
- gap: 0.5rem;
1488
- border: 1px solid var(--pc-border-color);
1489
- border-radius: var(--pc-border-radius-lg);
1490
- background-color: var(--pc-bg-primary);
1491
- padding: 0.625rem 0.75rem;
1492
- box-shadow: none;
1493
- }
1494
- .pc-consent-mobile-card-header {
1495
- display: flex;
1496
- align-items: flex-start;
1497
- justify-content: space-between;
1498
- gap: 0.5rem;
1499
- flex-wrap: wrap;
1500
- }
1501
- .pc-consent-mobile-product-head {
1502
- display: flex;
1503
- align-items: flex-start;
1504
- gap: 0.5rem;
1505
- min-width: 0;
1506
- flex: 1 1 180px;
1507
- }
1508
- .pc-consent-mobile-avatar {
1509
- display: inline-flex;
1510
- align-items: center;
1511
- justify-content: center;
1512
- width: 24px;
1513
- height: 24px;
1514
- border-radius: 0.4375rem;
1515
- font-size: 0.6875rem;
1516
- font-weight: 700;
1517
- line-height: 1;
1518
- flex-shrink: 0;
1519
- }
1520
- .pc-consent-mobile-subtle-text {
1521
- margin: 0 !important;
1522
- margin-top: 0.125rem !important;
1523
- font-size: 0.6875rem !important;
1524
- line-height: 1.2 !important;
1525
- color: var(--pc-text-secondary) !important;
1526
- display: -webkit-box;
1527
- -webkit-line-clamp: 2;
1528
- -webkit-box-orient: vertical;
1529
- overflow: hidden;
1530
- word-break: break-word;
1531
- }
1532
- .pc-consent-mobile-chip-row {
1533
- display: flex;
1534
- flex-wrap: wrap;
1535
- gap: 0.375rem;
1536
- }
1537
- .pc-consent-mobile-status-chip {
1538
- font-size: 0.65625rem !important;
1539
- font-weight: 600 !important;
1540
- padding: 0.125rem 0.4375rem !important;
1541
- }
1542
- .pc-consent-mobile-activity-row {
1543
- display: flex;
1544
- flex-direction: column;
1545
- gap: 0.125rem;
1546
- min-width: 0;
1547
- }
1548
- .pc-consent-mobile-meta-grid {
1549
- display: grid;
1550
- grid-template-columns: repeat(2, minmax(0, 1fr));
1551
- gap: 0.5rem 0.625rem;
1552
- }
1553
- .pc-consent-mobile-meta-label {
1554
- margin: 0 !important;
1555
- margin-bottom: 0.1875rem !important;
1556
- font-size: 0.625rem !important;
1557
- text-transform: uppercase;
1558
- letter-spacing: 0.05em;
1559
- color: var(--pc-text-tertiary) !important;
1560
- }
1561
- .pc-consent-mobile-action-cell {
1562
- display: flex;
1563
- flex-direction: column;
1564
- align-items: flex-start;
1565
- justify-content: flex-end;
1566
- }
1567
- .pc-consent-mobile-expand-btn {
1568
- width: 100%;
1569
- display: flex;
1570
- align-items: center;
1571
- justify-content: space-between;
1572
- border: 1px solid var(--pc-border-color);
1573
- border-radius: var(--pc-border-radius-md);
1574
- background-color: var(--pc-bg-secondary);
1575
- color: var(--pc-text-primary);
1576
- font-size: 0.75rem;
1577
- font-weight: 600;
1578
- padding: 0.375rem 0.5rem;
1579
- cursor: pointer;
1580
- }
1581
- .pc-consent-mobile-purpose-list {
1582
- display: flex;
1583
- flex-direction: column;
1584
- gap: 0.5rem;
1585
- padding-top: 0.125rem;
1586
- }
1587
- .pc-consent-mobile-purpose-item {
1588
- border: 1px solid var(--pc-border-color);
1589
- border-radius: var(--pc-border-radius-md);
1590
- background-color: var(--pc-bg-secondary);
1591
- padding: 0.5rem;
1592
- }
1593
- .pc-consent-mobile-purpose-head {
1594
- display: flex;
1595
- align-items: flex-start;
1596
- justify-content: space-between;
1597
- gap: 0.5rem;
1598
- margin-bottom: 0.375rem;
1599
- }
1600
- .pc-consent-mobile-empty {
1601
- border: 1px solid var(--pc-border-color);
1602
- border-radius: var(--pc-border-radius-lg);
1603
- background-color: var(--pc-bg-primary);
1604
- padding: 0.75rem;
1605
- }
1606
- .pc-consent-shell-card .pc-export-button-responsive {
1607
- display: inline-flex !important;
1608
- align-items: center !important;
1609
- }
1610
- .pc-consent-shell-card .pc-export-button-responsive button {
1611
- box-sizing: border-box !important;
1612
- height: var(--pc-consent-toolbar-control-height, 2rem) !important;
1613
- min-height: var(--pc-consent-toolbar-control-height, 2rem) !important;
1614
- max-height: var(--pc-consent-toolbar-control-height, 2rem) !important;
1615
- padding: 0 0.625rem !important;
1616
- line-height: 1 !important;
1617
- border-color: var(--pc-border-color) !important;
1618
- box-shadow: none !important;
1619
- font-size: 0.75rem !important;
1620
- }
1621
- .pc-consent-shell-card .pc-filters-row-responsive {
1622
- gap: 0.5rem !important;
1623
- }
1624
- @media (min-width: 768px) {
1625
- .pc-consent-shell-card .pc-search-responsive {
1626
- width: 310px !important;
1627
- min-width: 310px !important;
1628
- flex: 0 0 310px !important;
1629
- }
1630
- .pc-consent-shell-card .pc-filters-row-responsive {
1631
- align-items: center !important;
1632
- justify-content: flex-start !important;
1633
- margin-left: 0 !important;
1634
- flex: 1 1 auto !important;
1635
- width: auto !important;
1636
- }
1637
- .pc-consent-shell-card .pc-filter-select {
1638
- width: auto !important;
1639
- min-width: 0 !important;
1640
- flex: 0 0 auto !important;
1641
- }
1642
- .pc-consent-shell-card .pc-filter-select:first-child {
1643
- width: 128px !important;
1644
- min-width: 128px !important;
1645
- }
1646
- .pc-consent-shell-card .pc-filter-select:nth-child(2) {
1647
- width: 136px !important;
1648
- min-width: 136px !important;
1649
- }
1650
- .pc-consent-shell-card .pc-filters-summary {
1651
- margin-left: auto !important;
1652
- }
1653
- }
1654
- @media (max-width: 767px) {
1655
- .pc-consent-desktop-view {
1656
- display: none;
1657
- }
1658
- .pc-consent-mobile-view {
1659
- display: block;
1660
- }
1661
- .pc-consent-shell-card .pc-consent-tabs-row {
1662
- flex-wrap: wrap !important;
1663
- padding-bottom: 0.375rem !important;
1664
- }
1665
- .pc-consent-shell-card .pc-consent-view-toggle-label {
1666
- display: none !important;
1667
- }
1668
- .pc-consent-shell-card .pc-consent-view-toggle {
1669
- width: 100% !important;
1670
- justify-content: flex-end !important;
1671
- padding-right: 0 !important;
1672
- margin-bottom: 0 !important;
1673
- }
1674
- .pc-consent-shell-card .pc-filters-row-responsive {
1675
- width: 100% !important;
1676
- }
1677
- .pc-consent-shell-card .pc-filters-summary {
1678
- align-self: flex-start !important;
1679
- }
1680
- .pc-consent-pagination-wrap {
1681
- margin-top: 0.5rem;
1682
- }
1683
- }
1684
- @media (min-width: 768px) {
1685
- .pc-consent-desktop-view {
1686
- display: block;
1687
- }
1688
- .pc-consent-mobile-view {
1689
- display: none;
1690
- }
1691
- }
1692
- @media (max-width: 420px) {
1693
- .pc-consent-mobile-meta-grid {
1694
- grid-template-columns: 1fr;
1695
- }
1696
- }
1697
-
1698
- .pc-consent-table-container {
1699
- border: 1px solid var(--pc-border-color) !important;
1700
- border-bottom: none !important;
1701
- border-radius: var(--pc-border-radius-lg) var(--pc-border-radius-lg) 0 0 !important;
1702
- box-shadow: none !important;
1703
- overflow: hidden !important;
1704
- }
1705
- .pc-consent-table {
1706
- table-layout: fixed;
1707
- width: 100%;
1708
- }
1709
- .pc-consent-table th:first-child,
1710
- .pc-consent-table td:first-child {
1711
- width: 32px !important;
1712
- min-width: 32px !important;
1713
- max-width: 32px !important;
1714
- }
1715
- .pc-consent-table th:nth-child(2),
1716
- .pc-consent-table td:nth-child(2) {
1717
- width: 38% !important;
1718
- min-width: 260px !important;
1719
- }
1720
- .pc-consent-table th:nth-child(3),
1721
- .pc-consent-table td:nth-child(3) {
1722
- width: 15% !important;
1723
- min-width: 120px !important;
1724
- }
1725
- .pc-consent-table th:nth-child(4),
1726
- .pc-consent-table td:nth-child(4) {
1727
- width: 20% !important;
1728
- min-width: 160px !important;
1729
- }
1730
- .pc-consent-table th:last-child,
1731
- .pc-consent-table td:last-child {
1732
- width: 27% !important;
1733
- min-width: 180px !important;
1734
- }
1735
- .pc-consent-table-purpose th:first-child,
1736
- .pc-consent-table-purpose td:first-child {
1737
- width: 28% !important;
1738
- min-width: 220px !important;
1739
- max-width: none !important;
1740
- text-align: left !important;
1741
- padding-left: 0.875rem !important;
1742
- padding-right: 0.875rem !important;
1743
- }
1744
- .pc-consent-table-purpose th:nth-child(2),
1745
- .pc-consent-table-purpose td:nth-child(2) {
1746
- width: 18% !important;
1747
- min-width: 140px !important;
1748
- }
1749
- .pc-consent-table-purpose th:nth-child(3),
1750
- .pc-consent-table-purpose td:nth-child(3) {
1751
- width: 14% !important;
1752
- min-width: 110px !important;
1753
- }
1754
- .pc-consent-table-purpose th:nth-child(4),
1755
- .pc-consent-table-purpose td:nth-child(4) {
1756
- width: 16% !important;
1757
- min-width: 140px !important;
1758
- }
1759
- .pc-consent-table-purpose th:nth-child(5),
1760
- .pc-consent-table-purpose td:nth-child(5) {
1761
- width: 14% !important;
1762
- min-width: 120px !important;
1763
- }
1764
- .pc-consent-table-purpose th:nth-child(6),
1765
- .pc-consent-table-purpose td:nth-child(6) {
1766
- width: 10% !important;
1767
- min-width: 90px !important;
1768
- }
1769
- .pc-consent-table-purpose th:nth-child(7),
1770
- .pc-consent-table-purpose td:nth-child(7) {
1771
- width: 10% !important;
1772
- min-width: 90px !important;
1773
- text-align: right !important;
1774
- }
1775
- .pc-consent-table-purpose .pc-consent-table-head-cell:first-child,
1776
- .pc-consent-table-purpose .pc-consent-table-row td:first-child {
1777
- text-align: left !important;
1778
- padding-left: 0.875rem !important;
1779
- padding-right: 0.875rem !important;
1780
- }
1781
- .pc-consent-table-head-cell {
1782
- font-size: 0.65rem !important;
1783
- letter-spacing: 0.06em !important;
1784
- text-transform: uppercase !important;
1785
- color: var(--pc-text-primary) !important;
1786
- font-weight: 600 !important;
1787
- padding-top: 0.625rem !important;
1788
- padding-bottom: 0.625rem !important;
1789
- background-color: var(--pc-bg-secondary) !important;
1790
- }
1791
- .pc-consent-table-row td {
1792
- padding-top: 0.5rem !important;
1793
- padding-bottom: 0.5rem !important;
1794
- vertical-align: middle !important;
1795
- -webkit-user-select: none !important;
1796
- user-select: none !important;
1797
- }
1798
- .pc-consent-table-head-cell:first-child,
1799
- .pc-consent-table-row td:first-child {
1800
- text-align: center !important;
1801
- padding-left: 0.375rem !important;
1802
- padding-right: 0.375rem !important;
1803
- }
1804
- .pc-consent-table-expanded-row:hover {
1805
- background-color: transparent !important;
1806
- }
1807
- .pc-consent-table-expanded-row td {
1808
- border-top: none !important;
1809
- }
1810
- .pc-consent-table-expanded-cell {
1811
- padding: 0 !important;
1812
- background-color: transparent !important;
1813
- }
1814
- /* Keep parent + expanded child hover in sync */
1815
- .pc-consent-table-row:hover + .pc-consent-table-expanded-row .pc-consent-expanded-surface,
1816
- .pc-consent-table-row:hover + .pc-consent-table-expanded-row .pc-consent-expanded-card,
1817
- .pc-consent-table-row:hover + .pc-consent-table-expanded-row .pc-consent-expanded-card th,
1818
- .pc-consent-table-row:hover + .pc-consent-table-expanded-row .pc-consent-expanded-card td,
1819
- .pc-consent-table-expanded-row:hover .pc-consent-expanded-surface,
1820
- .pc-consent-table-expanded-row:hover .pc-consent-expanded-card,
1821
- .pc-consent-table-expanded-row:hover .pc-consent-expanded-card th,
1822
- .pc-consent-table-expanded-row:hover .pc-consent-expanded-card td {
1823
- background-color: var(--pc-bg-hover) !important;
1824
- }
1825
-
1826
- .pc-consent-pagination-wrap {
1827
- border-top: none !important;
1828
- border-left: 1px solid var(--pc-border-color);
1829
- border-right: 1px solid var(--pc-border-color);
1830
- border-bottom: 1px solid var(--pc-border-color);
1831
- border-radius: 0 0 var(--pc-border-radius-lg) var(--pc-border-radius-lg);
1832
- padding: 0.125rem 0.75rem 0.375rem;
1833
- background-color: var(--pc-bg-primary);
1834
- }
1835
-
1836
- /* ─── Case Details Page ───────────────────────────────────────────────── */
1837
-
1838
- .pc-case-page {
1839
- width: 100%;
1840
- display: flex;
1841
- flex-direction: column;
1842
- min-height: 100%;
1843
- }
1844
-
1845
- .pc-case-back {
1846
- margin-bottom: 1rem;
1847
- }
1848
-
1849
- .pc-case-back-btn {
1850
- padding-left: 0;
1851
- color: var(--pc-text-secondary);
1852
- }
1853
-
1854
- .pc-case-back-icon {
1855
- margin-right: 0.5rem;
1856
- }
1857
-
1858
- .pc-case-header {
1859
- display: flex;
1860
- flex-wrap: wrap;
1861
- align-items: center;
1862
- gap: 0.5rem;
1863
- padding: 0.75rem 0;
1864
- border-bottom: 1px solid var(--pc-border-color);
1865
- font-size: var(--pc-font-size-sm);
1866
- color: var(--pc-text-secondary);
1867
- }
1868
-
1869
- .pc-case-header-id {
1870
- font-weight: var(--pc-font-weight-semibold);
1871
- color: var(--pc-text-primary);
1872
- }
1873
-
1874
- .pc-case-header-overdue {
1875
- color: #dc2626;
1876
- }
1877
-
1878
- .pc-case-tabs {
1879
- display: flex;
1880
- border-bottom: 1px solid var(--pc-border-color);
1881
- }
1882
-
1883
- .pc-case-tab {
1884
- padding: 0.75rem 1.25rem;
1885
- font-size: var(--pc-font-size-sm);
1886
- font-weight: var(--pc-font-weight-medium);
1887
- color: var(--pc-text-secondary);
1888
- border: none;
1889
- border-bottom: 2px solid transparent;
1890
- background: transparent;
1891
- cursor: pointer;
1892
- margin-bottom: -1px;
1893
- transition: all 0.15s;
1894
- }
1895
-
1896
- .pc-case-tab--active {
1897
- font-weight: var(--pc-font-weight-semibold);
1898
- color: var(--pc-primary);
1899
- border-bottom-color: var(--pc-primary);
1900
- }
1901
-
1902
- .pc-case-tab-content {
1903
- flex: 1;
1904
- display: flex;
1905
- flex-direction: column;
1906
- min-height: 0;
1907
- }
1908
-
1909
- /* ─── Messages Tab ─────────────────────────────────────────────────── */
1910
-
1911
- .pc-messages-container {
1912
- display: flex;
1913
- flex-direction: column;
1914
- min-height: 30vh;
1915
- max-height: 60vh;
1916
- border: 1px solid var(--pc-border-color);
1917
- border-radius: 0.5rem;
1918
- overflow: hidden;
1919
- margin-top: 1rem;
1920
- background-color: var(--pc-bg-primary);
1921
- }
1922
-
1923
- .pc-messages-notice {
1924
- display: flex;
1925
- align-items: center;
1926
- gap: 0.5rem;
1927
- padding: 0.625rem 1rem;
1928
- font-size: var(--pc-font-size-sm);
1929
- flex-shrink: 0;
1930
- }
1931
-
1932
- .pc-messages-notice-text {
1933
- flex: 1;
1934
- }
1935
-
1936
- .pc-messages-refresh-btn {
1937
- display: flex;
1938
- align-items: center;
1939
- justify-content: center;
1940
- background: transparent;
1941
- border: none;
1942
- cursor: pointer;
1943
- padding: 0.25rem;
1944
- border-radius: 0.25rem;
1945
- transition: opacity 0.15s;
1946
- }
1947
-
1948
- .pc-messages-refresh-btn:disabled {
1949
- cursor: default;
1950
- opacity: 0.5;
1951
- }
1952
-
1953
- .pc-messages-list {
1954
- flex: 1;
1955
- overflow-y: auto;
1956
- padding: 1rem;
1957
- display: flex;
1958
- flex-direction: column;
1959
- gap: 1rem;
1960
- min-height: 0;
1961
- }
1962
-
1963
- .pc-messages-center {
1964
- display: flex;
1965
- justify-content: center;
1966
- padding: 3rem 0;
1967
- }
1968
-
1969
- .pc-messages-center-text {
1970
- text-align: center;
1971
- padding: 3rem 0;
1972
- }
1973
-
1974
- .pc-messages-empty {
1975
- flex: 1;
1976
- display: flex;
1977
- flex-direction: column;
1978
- align-items: center;
1979
- justify-content: center;
1980
- gap: 0.75rem;
1981
- padding: 3rem 0;
1982
- }
1983
-
1984
- .pc-messages-empty-icon {
1985
- opacity: 0.3;
1986
- color: var(--pc-text-secondary);
1987
- }
1988
-
1989
- /* ─── Message Composer ─────────────────────────────────────────────── */
1990
-
1991
- .pc-composer {
1992
- border-top: 1px solid var(--pc-border-color);
1993
- background-color: var(--pc-bg-primary);
1994
- flex-shrink: 0;
1995
- }
1996
-
1997
- .pc-composer-pending-row {
1998
- display: flex;
1999
- align-items: center;
2000
- gap: 0.5rem;
2001
- padding: 0.5rem 1rem 0;
2002
- }
2003
-
2004
- .pc-composer-pending-pill {
2005
- display: flex;
2006
- align-items: center;
2007
- gap: 0.5rem;
2008
- padding: 0.25rem 0.75rem;
2009
- background-color: var(--pc-bg-secondary);
2010
- border: 1px solid var(--pc-border-color);
2011
- border-radius: 1rem;
2012
- font-size: var(--pc-font-size-xs);
2013
- color: var(--pc-text-primary);
2014
- }
2015
-
2016
- .pc-composer-pending-size {
2017
- color: var(--pc-text-secondary);
2018
- }
2019
-
2020
- .pc-composer-remove-btn {
2021
- background: none;
2022
- border: none;
2023
- cursor: pointer;
2024
- color: var(--pc-text-secondary);
2025
- padding: 0;
2026
- line-height: 1;
2027
- }
2028
-
2029
- .pc-composer-textarea-wrap {
2030
- padding: 0.75rem 1rem 0;
2031
- }
2032
-
2033
- .pc-composer-textarea {
2034
- width: 100%;
2035
- resize: none;
2036
- outline: none;
2037
- font-size: var(--pc-font-size-sm);
2038
- color: var(--pc-text-primary);
2039
- background-color: transparent;
2040
- font-family: inherit;
2041
- line-height: 1.5;
2042
- border: 1px solid var(--pc-border-color);
2043
- border-radius: 0.5rem;
2044
- }
2045
-
2046
- .pc-composer-actions {
2047
- display: flex;
2048
- justify-content: space-between;
2049
- align-items: center;
2050
- padding: 0.5rem 1rem 0.75rem;
2051
- }
2052
-
2053
- .pc-composer-btn {
2054
- gap: 0.375rem;
2055
- width: auto;
2056
- }
2057
-
2058
- .pc-composer-footer {
2059
- text-align: center;
2060
- padding: 0.375rem;
2061
- font-size: var(--pc-font-size-xs);
2062
- color: var(--pc-text-secondary);
2063
- border-top: 1px solid var(--pc-border-color);
2064
- }
2065
-
2066
- /* ─── Chat Bubble ──────────────────────────────────────────────────── */
2067
-
2068
- .pc-chat-bubble-wrap {
2069
- display: flex;
2070
- flex-direction: column;
2071
- gap: 0.25rem;
2072
- }
2073
-
2074
- .pc-chat-bubble-wrap--sent {
2075
- align-items: flex-end;
2076
- }
2077
-
2078
- .pc-chat-bubble-wrap--received {
2079
- align-items: flex-start;
2080
- }
2081
-
2082
- .pc-chat-sender {
2083
- font-size: var(--pc-font-size-xs);
2084
- color: var(--pc-text-secondary);
2085
- }
2086
-
2087
- .pc-chat-bubble {
2088
- max-width: 70%;
2089
- padding: 0.625rem 0.875rem;
2090
- font-size: var(--pc-font-size-sm);
2091
- line-height: 1.5;
2092
- word-break: break-word;
2093
- }
2094
-
2095
- .pc-chat-bubble--sent {
2096
- border-radius: 1rem 0.25rem 1rem 1rem;
2097
- background-color: var(--pc-primary);
2098
- color: #ffffff;
2099
- }
2100
-
2101
- .pc-chat-bubble--received {
2102
- border-radius: 0.25rem 1rem 1rem 1rem;
2103
- background-color: var(--pc-bg-secondary);
2104
- color: var(--pc-text-primary);
2105
- border: 1px solid var(--pc-border-color);
2106
- }
2107
-
2108
- /* ─── Attachment Card ──────────────────────────────────────────────── */
2109
-
2110
- .pc-attachment-card {
2111
- display: flex;
2112
- align-items: center;
2113
- gap: 0.75rem;
2114
- padding: 0.625rem 0.875rem;
2115
- background-color: var(--pc-bg-secondary);
2116
- border: 1px solid var(--pc-border-color);
2117
- border-radius: 0.5rem;
2118
- max-width: 320px;
2119
- }
2120
-
2121
- .pc-attachment-icon {
2122
- color: var(--pc-primary);
2123
- flex-shrink: 0;
2124
- }
2125
-
2126
- .pc-attachment-info {
2127
- flex: 1;
2128
- min-width: 0;
2129
- }
2130
-
2131
- .pc-attachment-name {
2132
- font-size: var(--pc-font-size-sm);
2133
- font-weight: var(--pc-font-weight-medium);
2134
- color: var(--pc-primary);
2135
- overflow: hidden;
2136
- text-overflow: ellipsis;
2137
- white-space: nowrap;
2138
- }
2139
-
2140
- .pc-attachment-size {
2141
- font-size: var(--pc-font-size-xs);
2142
- color: var(--pc-text-secondary);
2143
- }
2144
-
2145
- .pc-attachment-download {
2146
- color: var(--pc-text-secondary);
2147
- flex-shrink: 0;
2148
- }
2149
-
2150
- /* ─── Document Request Card ────────────────────────────────────────── */
2151
-
2152
- .pc-doc-request-card {
2153
- border-radius: 0.75rem;
2154
- padding: 1rem;
2155
- display: flex;
2156
- flex-direction: column;
2157
- gap: 0.75rem;
2158
- max-width: 480px;
2159
- }
2160
-
2161
- .pc-doc-request-header {
2162
- display: flex;
2163
- align-items: flex-start;
2164
- gap: 0.5rem;
2165
- }
2166
-
2167
- .pc-doc-request-icon {
2168
- margin-top: 2px;
2169
- flex-shrink: 0;
2170
- }
2171
-
2172
- .pc-doc-request-title {
2173
- font-weight: var(--pc-font-weight-semibold);
2174
- font-size: var(--pc-font-size-sm);
2175
- }
2176
-
2177
- .pc-doc-request-accepted {
2178
- font-size: var(--pc-font-size-xs);
2179
- margin-top: 0.125rem;
2180
- }
2181
-
2182
- .pc-doc-request-status {
2183
- margin-left: auto;
2184
- font-size: var(--pc-font-size-xs);
2185
- font-weight: var(--pc-font-weight-medium);
2186
- white-space: nowrap;
2187
- padding: 0.125rem 0.5rem;
2188
- border-radius: 0.375rem;
2189
- }
2190
-
2191
- .pc-doc-request-upload-btn {
2192
- width: 100%;
2193
- justify-content: center;
2194
- gap: 0.375rem;
2195
- border-style: solid;
2196
- }
2197
-
2198
- .pc-doc-request-rejection {
2199
- font-size: var(--pc-font-size-xs);
2200
- padding: 0.375rem 0.625rem;
2201
- border-radius: 0.375rem;
2202
- }
2203
-
2204
- /* ─── Status Event ─────────────────────────────────────────────────── */
2205
-
2206
- .pc-status-event {
2207
- display: flex;
2208
- flex-direction: column;
2209
- align-items: center;
2210
- gap: 0.25rem;
2211
- }
2212
-
2213
- .pc-status-event-pill {
2214
- display: flex;
2215
- align-items: center;
2216
- gap: 0.5rem;
2217
- padding: 0.5rem 1rem;
2218
- border-radius: 1rem;
2219
- font-size: var(--pc-font-size-sm);
2220
- font-weight: var(--pc-font-weight-medium);
2221
- }
2222
-
2223
- .pc-status-event-sub {
2224
- font-size: var(--pc-font-size-xs);
2225
- opacity: 0.85;
2226
- }
2227
-
2228
- .pc-status-event-time {
2229
- font-size: var(--pc-font-size-xs);
2230
- color: var(--pc-text-secondary);
2231
- }
2232
-
2233
- /* ─── Request Details Tab ──────────────────────────────────────────── */
2234
-
2235
- .pc-request-details {
2236
- display: flex;
2237
- flex-direction: column;
2238
- gap: var(--pc-spacing-xl);
2239
- padding: var(--pc-spacing-xl) var(--pc-spacing-lg);
2240
- overflow-y: auto;
2241
- }
2242
-
2243
- /* Summary card row: each field sits in a subtle card */
2244
- .pc-request-summary-card {
2245
- background-color: var(--pc-bg-secondary);
2246
- border: 1px solid var(--pc-border-color);
2247
- border-radius: var(--pc-border-radius-lg);
2248
- padding: var(--pc-spacing-lg);
2249
- }
2250
-
2251
- .pc-request-summary-grid {
2252
- display: grid;
2253
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
2254
- gap: var(--pc-spacing-lg);
2255
- }
2256
-
2257
- .pc-request-field-label {
2258
- margin-bottom: 0.375rem;
2259
- }
2260
-
2261
- .pc-request-field-value {
2262
- color: var(--pc-text-primary);
2263
- }
2264
-
2265
- .pc-request-field-value--capitalize {
2266
- text-transform: capitalize;
2267
- color: var(--pc-text-primary);
2268
- }
2269
-
2270
- /* Description block */
2271
- .pc-request-description {
2272
- background-color: var(--pc-bg-secondary);
2273
- padding: var(--pc-spacing-lg);
2274
- border-radius: var(--pc-border-radius-lg);
2275
- border: 1px solid var(--pc-border-color);
2276
- }
2277
-
2278
- .pc-request-description-title {
2279
- margin-bottom: var(--pc-spacing-sm);
2280
- color: var(--pc-text-primary);
2281
- }
2282
-
2283
- .pc-request-description-text {
2284
- line-height: 1.7;
2285
- }
2286
-
2287
- /* Specifics section */
2288
- .pc-request-specifics {
2289
- display: flex;
2290
- flex-direction: column;
2291
- gap: var(--pc-spacing-xl);
2292
- }
2293
-
2294
- .pc-request-section-divider {
2295
- display: flex;
2296
- align-items: center;
2297
- gap: 0.75rem;
2298
- }
2299
-
2300
- .pc-request-section-divider::after {
2301
- content: '';
2302
- flex: 1;
2303
- height: 1px;
2304
- background-color: var(--pc-border-color);
2305
- }
2306
-
2307
- .pc-request-section-title {
2308
- font-size: var(--pc-font-size-xs);
2309
- font-weight: var(--pc-font-weight-bold);
2310
- text-transform: uppercase;
2311
- letter-spacing: 0.08em;
2312
- color: var(--pc-text-secondary);
2313
- margin: 0;
2314
- white-space: nowrap;
2315
- }
2316
-
2317
- .pc-request-section-heading {
2318
- margin-bottom: var(--pc-spacing-sm);
2319
- color: var(--pc-text-primary);
2320
- font-size: var(--pc-font-size-sm);
2321
- }
2322
-
2323
- /* Purpose cards */
2324
- .pc-request-purpose-list {
2325
- list-style-type: none;
2326
- padding-left: 0;
2327
- margin: 0;
2328
- display: flex;
2329
- flex-direction: column;
2330
- gap: var(--pc-spacing-sm);
2331
- }
2332
-
2333
- .pc-request-purpose-item {
2334
- padding: var(--pc-spacing-lg);
2335
- background-color: var(--pc-bg-secondary);
2336
- border-radius: var(--pc-border-radius-lg);
2337
- border: 1px solid var(--pc-border-color);
2338
- transition: box-shadow 0.15s ease;
2339
- }
2340
-
2341
- .pc-request-purpose-item:hover {
2342
- box-shadow: var(--pc-shadow-sm);
2343
- }
2344
-
2345
- .pc-request-purpose-name {
2346
- font-weight: var(--pc-font-weight-semibold);
2347
- font-size: var(--pc-font-size-sm);
2348
- color: var(--pc-text-primary);
2349
- margin-bottom: 0.25rem;
2350
- }
2351
-
2352
- .pc-request-purpose-desc {
2353
- color: var(--pc-text-secondary);
2354
- font-size: var(--pc-font-size-xs);
2355
- margin-bottom: var(--pc-spacing-sm);
2356
- line-height: 1.6;
2357
- }
2358
-
2359
- .pc-request-data-elements {
2360
- margin-top: var(--pc-spacing-sm);
2361
- padding-top: var(--pc-spacing-sm);
2362
- border-top: 1px solid var(--pc-border-color);
2363
- display: flex;
2364
- flex-wrap: wrap;
2365
- gap: var(--pc-spacing-xs);
2366
- }
2367
-
2368
- /* Correction data table */
2369
- .pc-request-table-wrap {
2370
- min-width: 100%;
2371
- border: 1px solid var(--pc-border-color);
2372
- border-radius: var(--pc-border-radius-lg);
2373
- overflow: hidden;
2374
- background-color: var(--pc-bg-primary);
2375
- }
2376
-
2377
- .pc-request-table {
2378
- width: 100%;
2379
- font-size: var(--pc-font-size-sm);
2380
- }
2381
-
2382
- .pc-request-table-header {
2383
- background-color: var(--pc-bg-secondary);
2384
- }
2385
-
2386
- .pc-request-table-head {
2387
- padding: 0.625rem 1rem;
2388
- white-space: nowrap;
2389
- color: var(--pc-text-secondary);
2390
- font-weight: var(--pc-font-weight-semibold);
2391
- font-size: var(--pc-font-size-xs);
2392
- text-transform: uppercase;
2393
- letter-spacing: 0.04em;
2394
- }
2395
-
2396
- .pc-request-table-row {
2397
- border-bottom: 1px solid var(--pc-border-color);
2398
- }
2399
-
2400
- .pc-request-table-row:last-child {
2401
- border-bottom: none;
2402
- }
2403
-
2404
- .pc-request-table-cell {
2405
- padding: 0.75rem 1rem;
2406
- font-size: var(--pc-font-size-sm);
2407
- }
2408
-
2409
- .pc-request-table-cell--name {
2410
- font-weight: var(--pc-font-weight-medium);
2411
- color: var(--pc-text-primary);
2412
- }
2413
-
2414
- .pc-request-table-cell--value {
2415
- color: var(--pc-text-secondary);
2416
- word-break: break-word;
2417
- }
2418
-
2419
- /* Nomination card */
2420
- .pc-request-nomination-card {
2421
- background-color: var(--pc-bg-secondary);
2422
- padding: var(--pc-spacing-lg);
2423
- border-radius: var(--pc-border-radius-lg);
2424
- border: 1px solid var(--pc-border-color);
2425
- display: grid;
2426
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
2427
- gap: var(--pc-spacing-md);
2428
- }
2429
-
2430
- .pc-request-nomination-field {
2431
- display: flex;
2432
- flex-direction: column;
2433
- gap: 0.25rem;
2434
- }
2435
-
2436
- /* Grievance badges */
2437
- .pc-request-grievance-wrap {
2438
- display: flex;
2439
- flex-wrap: wrap;
2440
- gap: var(--pc-spacing-xs);
2441
- }
2442
-
2443
- .pc-hidden {
2444
- display: none;
2445
- }
2446
-
2447
- /* Case Details Modal Responsive Styles */
2448
- .pc-case-details-content {
2449
- padding: 1rem !important;
2450
- }
2451
- @media (min-width: 640px) {
2452
- .pc-case-details-content {
2453
- padding: 1.5rem !important;
2454
- }
2455
- }
2456
-
2457
- .pc-case-details-grid {
2458
- grid-template-columns: 1fr !important;
2459
- }
2460
- @media (min-width: 640px) {
2461
- .pc-case-details-grid {
2462
- grid-template-columns: repeat(2, 1fr) !important;
2463
- }
2464
- }
2465
- @media (min-width: 1024px) {
2466
- .pc-case-details-grid {
2467
- grid-template-columns: repeat(4, 1fr) !important;
2468
- }
2469
- }
2470
-
2471
- /* ─── Erasure Consent Modal ────────────────────────────────────────── */
2472
-
2473
- .pc-erasure-modal-content {
2474
- display: flex;
2475
- flex-direction: column;
2476
- gap: var(--pc-spacing-lg);
2477
- }
2478
-
2479
- .pc-erasure-modal-footer {
2480
- display: flex;
2481
- justify-content: flex-end;
2482
- gap: var(--pc-spacing-sm);
2483
- width: 100%;
2484
- flex-wrap: wrap;
2485
- }
2486
-
2487
- .pc-erasure-modal-header {
2488
- display: flex;
2489
- flex-direction: column;
2490
- align-items: center;
2491
- text-align: center;
2492
- gap: var(--pc-spacing-sm);
2493
- }
2494
-
2495
- .pc-erasure-modal-icon {
2496
- flex-shrink: 0;
2497
- width: 3rem;
2498
- height: 3rem;
2499
- border-radius: 50%;
2500
- background-color: color-mix(in srgb, var(--pc-primary) 10%, transparent);
2501
- display: flex;
2502
- align-items: center;
2503
- justify-content: center;
2504
- color: var(--pc-primary);
2505
- }
2506
-
2507
- .pc-erasure-modal-title {
2508
- margin: 0;
2509
- font-size: var(--pc-font-size-lg);
2510
- font-weight: var(--pc-font-weight-semibold);
2511
- color: var(--pc-text-primary);
2512
- }
2513
-
2514
- .pc-erasure-modal-question {
2515
- margin: 0;
2516
- max-width: 28rem;
2517
- font-size: var(--pc-font-size-sm);
2518
- color: var(--pc-text-secondary);
2519
- line-height: 1.5;
2520
- }
2521
-
2522
- .pc-erasure-modal-purposes {
2523
- border-radius: var(--pc-border-radius-md);
2524
- border: 1px solid var(--pc-border-color);
2525
- background-color: var(--pc-bg-secondary);
2526
- padding: var(--pc-spacing-md);
2527
- display: flex;
2528
- flex-direction: column;
2529
- gap: var(--pc-spacing-sm);
2530
- }
2531
-
2532
- .pc-erasure-modal-purposes-label {
2533
- margin: 0;
2534
- font-size: var(--pc-font-size-xs);
2535
- font-weight: var(--pc-font-weight-semibold);
2536
- color: var(--pc-text-secondary);
2537
- letter-spacing: 0.05em;
2538
- text-transform: uppercase;
2539
- }
2540
-
2541
- .pc-erasure-modal-purpose-item {
2542
- font-size: var(--pc-font-size-sm);
2543
- font-weight: var(--pc-font-weight-semibold);
2544
- color: var(--pc-text-primary);
2545
- word-break: break-word;
2546
- }
2547
-
2548
- .pc-erasure-modal-purposes-placeholder {
2549
- font-size: var(--pc-font-size-sm);
2550
- color: var(--pc-text-secondary);
2551
- }
2552
-
2553
- .pc-erasure-modal-warning {
2554
- border-radius: var(--pc-border-radius-md);
2555
- border: 1px solid var(--pc-warning);
2556
- background-color: color-mix(in srgb, var(--pc-warning) 10%, transparent);
2557
- padding: var(--pc-spacing-md);
2558
- }
2559
-
2560
- .pc-erasure-modal-warning-text {
2561
- margin: 0;
2562
- font-size: var(--pc-font-size-sm);
2563
- color: var(--pc-text-primary);
2564
- line-height: 1.5;
2565
- }
2566
-
2567
- .pc-erasure-modal-warning-label {
2568
- font-weight: var(--pc-font-weight-semibold);
2569
- }
2570
-
2571
- /* ─── Request Submit: Revoke Consent Notice ────────────────────────── */
2572
-
2573
- .pc-request-submit-revoke-notice {
2574
- margin-top: var(--pc-spacing-md);
2575
- padding: var(--pc-spacing-sm);
2576
- border-radius: var(--pc-border-radius-md);
2577
- border: 1px solid var(--pc-warning);
2578
- background-color: color-mix(in srgb, var(--pc-warning) 10%, transparent);
2579
- }
2580
-
2581
- .pc-request-submit-revoke-notice-text {
2582
- color: var(--pc-text-primary);
2583
- }
2584
-
2585
- /* ─── Notification Hub ────────────────────────────────────────────────── */
2586
-
2587
- .pc-notification-panel {
2588
- background-color: var(--pc-bg-primary);
2589
- border-radius: var(--pc-border-radius-lg);
2590
- border: 1px solid var(--pc-border-color);
2591
- overflow: hidden;
2592
- width: 100%;
2593
- display: flex;
2594
- flex-direction: column;
2595
- }
2596
-
2597
- .pc-notification-panel-header {
2598
- display: flex;
2599
- align-items: center;
2600
- justify-content: space-between;
2601
- padding: 1rem 1.5rem;
2602
- border-bottom: 1px solid var(--pc-border-color);
2603
- }
2604
-
2605
- .pc-notification-row {
2606
- display: flex;
2607
- align-items: flex-start;
2608
- gap: 1rem;
2609
- padding: 1rem 1.5rem;
2610
- border-bottom: 1px solid var(--pc-border-color);
2611
- transition: background-color 0.15s ease;
2612
- cursor: pointer;
2613
- background-color: transparent;
2614
- }
2615
-
2616
- .pc-notification-row[data-read="false"] {
2617
- background-color: var(--pc-bg-secondary);
2618
- }
2619
-
2620
- .pc-notification-row:hover {
2621
- background-color: var(--pc-bg-tertiary) !important;
2622
- }
2623
-
2624
- .pc-notification-dropdown-row {
2625
- display: flex;
2626
- align-items: flex-start;
2627
- gap: 0.75rem;
2628
- padding: 0.875rem 1rem;
2629
- cursor: pointer;
2630
- transition: background-color 0.15s ease;
2631
- background-color: transparent;
2632
- }
2633
-
2634
- .pc-notification-dropdown-row[data-read="false"] {
2635
- background-color: var(--pc-bg-secondary);
2636
- }
2637
-
2638
- .pc-notification-dropdown-row:hover {
2639
- background-color: var(--pc-bg-tertiary) !important;
2640
- }
2641
-
2642
- .pc-notification-icon {
2643
- border-radius: 50%;
2644
- display: flex;
2645
- align-items: center;
2646
- justify-content: center;
2647
- flex-shrink: 0;
2648
- background-color: var(--pc-notification-icon-bg, transparent);
2649
- }
2650
-
2651
- .pc-notification-icon-lg {
2652
- width: 40px;
2653
- height: 40px;
2654
- margin-top: 0.125rem;
2655
- }
2656
-
2657
- .pc-notification-icon-sm {
2658
- width: 36px;
2659
- height: 36px;
2660
- }
2661
-
2662
- .pc-notification-unread-dot-lg {
2663
- display: inline-block;
2664
- width: 6px;
2665
- height: 6px;
2666
- border-radius: 50%;
2667
- background-color: var(--pc-primary);
2668
- flex-shrink: 0;
2669
- }
2670
-
2671
- .pc-notification-unread-dot-sm {
2672
- width: 8px;
2673
- height: 8px;
2674
- border-radius: 50%;
2675
- background-color: var(--pc-primary);
2676
- flex-shrink: 0;
2677
- margin-top: 0.375rem;
2678
- }
2679
-
2680
- .pc-notification-badge {
2681
- position: absolute;
2682
- top: 2px;
2683
- right: 2px;
2684
- min-width: 16px;
2685
- height: 16px;
2686
- border-radius: 9999px;
2687
- background-color: #ef4444;
2688
- color: #ffffff;
2689
- font-size: 0.625rem;
2690
- font-weight: 700;
2691
- display: flex;
2692
- align-items: center;
2693
- justify-content: center;
2694
- padding: 0 4px;
2695
- line-height: 1;
2696
- pointer-events: none;
2697
- }
2698
-
2699
- .pc-notification-cta {
2700
- font-weight: 500;
2701
- cursor: pointer;
2702
- transition: opacity 0.15s ease;
2703
- line-height: 1.3;
2704
- }
2705
-
2706
- .pc-notification-cta:hover {
2707
- opacity: 0.85;
2708
- }
2709
-
2710
- .pc-notification-cta-sm {
2711
- font-size: 0.6875rem;
2712
- padding: 0.1875rem 0.5rem;
2713
- border-radius: 0.25rem;
2714
- }
2715
-
2716
- .pc-notification-cta-lg {
2717
- font-size: 0.75rem;
2718
- padding: 0.25rem 0.75rem;
2719
- border-radius: 0.375rem;
2720
- }
2721
-
2722
- .pc-notification-cta--primary {
2723
- border: 1px solid var(--pc-primary);
2724
- background-color: var(--pc-primary);
2725
- color: #ffffff;
2726
- }
2727
-
2728
- .pc-notification-cta--danger {
2729
- border: 1px solid #dc2626;
2730
- background-color: #dc2626;
2731
- color: #ffffff;
2732
- }
2733
-
2734
- .pc-notification-cta--secondary {
2735
- border: 1px solid var(--pc-border-color);
2736
- background-color: transparent;
2737
- color: var(--pc-text-secondary);
2738
- }
2739
-
2740
- .pc-notification-status-badge {
2741
- font-size: 0.6875rem;
2742
- font-weight: 500;
2743
- padding: 0.125rem 0.5rem;
2744
- border-radius: 9999px;
2745
- }
2746
-
2747
- /* Circular navbar controls: the bell and the org-logo menu button. Same size
2748
- token, ring and hover, so the topbar cluster reads as one set of controls. */
2749
- .pc-notification-bell-btn,
2750
- .pc-navbar-avatar-btn {
2751
- display: flex;
2752
- align-items: center;
2753
- justify-content: center;
2754
- box-sizing: border-box;
2755
- width: var(--pc-navbar-actions-control-height, var(--pc-consent-toolbar-control-height, 2rem));
2756
- height: var(--pc-navbar-actions-control-height, var(--pc-consent-toolbar-control-height, 2rem));
2757
- min-width: var(--pc-navbar-actions-control-height, var(--pc-consent-toolbar-control-height, 2rem));
2758
- min-height: var(--pc-navbar-actions-control-height, var(--pc-consent-toolbar-control-height, 2rem));
2759
- border: 1px solid var(--pc-border-color);
2760
- background: var(--pc-bg-primary);
2761
- cursor: pointer;
2762
- border-radius: 9999px;
2763
- color: var(--pc-text-primary);
2764
- transition: color 0.3s ease, background-color 0.15s ease, border-color 0.15s ease;
2765
- padding: 0;
2766
- }
2767
- .pc-notification-bell-btn svg {
2768
- width: 14px;
2769
- height: 14px;
2770
- }
2771
-
2772
- .pc-notification-bell-btn:hover,
2773
- .pc-navbar-avatar-btn:hover {
2774
- background-color: var(--pc-bg-hover);
2775
- border-color: var(--pc-border-color-hover);
2776
- }
2777
-
2778
- .pc-notification-filter-tab {
2779
- background: none;
2780
- border: none;
2781
- font-size: 0.8125rem;
2782
- cursor: pointer;
2783
- padding: 0.75rem 1rem;
2784
- transition: color 0.15s ease, border-color 0.15s ease;
2785
- }
2786
-
2787
- .pc-notification-pagination-btn {
2788
- font-size: 0.8125rem;
2789
- font-weight: 500;
2790
- padding: 0.375rem 0.75rem;
2791
- border-radius: 0.375rem;
2792
- border: 1px solid var(--pc-border-color);
2793
- background-color: transparent;
2794
- cursor: pointer;
2795
- }
2796
-
2797
- .pc-notification-link-btn {
2798
- background: none;
2799
- border: none;
2800
- color: var(--pc-primary);
2801
- font-size: 0.8125rem;
2802
- font-weight: 500;
2803
- cursor: pointer;
2804
- padding: 0;
2805
- }
2806
-
2807
- .pc-notification-refresh-btn {
2808
- display: flex;
2809
- align-items: center;
2810
- justify-content: center;
2811
- background: none;
2812
- border: none;
2813
- color: var(--pc-text-secondary);
2814
- padding: 0.25rem;
2815
- border-radius: 0.375rem;
2816
- transition: color 0.15s ease;
2817
- cursor: pointer;
2818
- }
2819
-
2820
- .pc-notification-refresh-btn:hover:not(:disabled) {
2821
- color: var(--pc-text-primary);
2822
- }
2823
-
2824
- .pc-notification-refresh-btn:disabled {
2825
- cursor: default;
2826
- opacity: 0.5;
2827
- }
2828
-
2829
- .pc-notification-refresh-btn--spinning > svg {
2830
- animation: pc-spin 1s linear infinite;
2831
- }
2832
-
2833
- /* Keyboard focus rings for Notification Hub interactive controls */
2834
- .pc-notification-cta:focus-visible,
2835
- .pc-notification-bell-btn:focus-visible:not(:disabled),
2836
- .pc-navbar-avatar-btn:focus-visible:not(:disabled),
2837
- .pc-notification-filter-tab:focus-visible:not(:disabled),
2838
- .pc-notification-pagination-btn:focus-visible:not(:disabled),
2839
- .pc-notification-link-btn:focus-visible:not(:disabled),
2840
- .pc-notification-refresh-btn:focus-visible:not(:disabled) {
2841
- outline: 2px solid var(--pc-border-color-focus);
2842
- outline-offset: 2px;
2843
- }
2844
-
2845
- .pc-notification-stat-card {
2846
- display: flex;
2847
- flex-direction: column;
2848
- align-items: center;
2849
- justify-content: center;
2850
- gap: 0.375rem;
2851
- padding: 1.25rem 1rem;
2852
- background-color: var(--pc-bg-primary);
2853
- border: 1px solid var(--pc-border-color);
2854
- border-radius: var(--pc-border-radius-lg);
2855
- }
2856
-
2857
- .pc-notification-back-btn {
2858
- display: inline-flex;
2859
- align-items: center;
2860
- gap: 0.25rem;
2861
- background: none;
2862
- border: none;
2863
- color: var(--pc-primary);
2864
- font-size: 0.8125rem;
2865
- font-weight: 500;
2866
- cursor: pointer;
2867
- padding: 0.25rem 0;
2868
- align-self: flex-start;
2869
- }
2870
-
2871
- .pc-notification-empty-state {
2872
- padding: 3rem;
2873
- text-align: center;
2874
- color: var(--pc-text-secondary);
2875
- font-size: 0.875rem;
2876
- }
2877
-
2878
- .pc-notification-dropdown-empty-state {
2879
- padding: 2rem 1rem;
2880
- text-align: center;
2881
- color: var(--pc-text-secondary);
2882
- font-size: 0.8125rem;
2883
- }
2884
-
2885
- .pc-notification-dropdown-footer {
2886
- padding: 0.75rem 1rem;
2887
- border-top: 1px solid var(--pc-border-color);
2888
- display: flex;
2889
- justify-content: center;
2890
- }
2891
-
2892
- .pc-notification-page {
2893
- width: 100%;
2894
- display: flex;
2895
- flex-direction: column;
2896
- gap: 1.25rem;
2897
- }
2898
-
2899
- .pc-notification-stats-grid {
2900
- display: grid;
2901
- grid-template-columns: repeat(4, 1fr);
2902
- gap: 1rem;
2903
- width: 100%;
2904
- }
2905
-
2906
- .pc-notification-stat-value {
2907
- font-size: 1.75rem;
2908
- font-weight: 700;
2909
- line-height: 1.2;
2910
- }
2911
-
2912
- .pc-notification-stat-label {
2913
- font-size: 0.8125rem;
2914
- color: var(--pc-text-secondary);
2915
- font-weight: 500;
2916
- }
2917
-
2918
- .pc-notification-bell-wrapper {
2919
- display: inline-flex;
2920
- position: relative;
2921
- }
2922
-
2923
- @media (min-width: 640px) {
2924
- .pc-notification-popover-offset {
2925
- transform: translateX(-65px) !important;
2926
- }
2927
- }
2928
-
2929
- .pc-notification-dropdown {
2930
- width: min(380px, calc(100vw - 16px));
2931
- max-height: 480px;
2932
- display: flex;
2933
- flex-direction: column;
2934
- padding: 0;
2935
- }
2936
-
2937
- .pc-notification-dropdown-title {
2938
- font-size: 0.9375rem;
2939
- font-weight: 600;
2940
- color: var(--pc-text-primary);
2941
- }
2942
-
2943
- .pc-notification-header-actions {
2944
- display: flex;
2945
- align-items: center;
2946
- gap: 0.75rem;
2947
- }
2948
-
2949
- .pc-notification-dropdown-list {
2950
- overflow-y: auto;
2951
- flex: 1;
2952
- }
2953
-
2954
- .pc-notification-link-btn-arrow {
2955
- display: flex;
2956
- align-items: center;
2957
- gap: 0.25rem;
2958
- }
2959
-
2960
- .pc-notification-dropdown-row:not(:last-child) {
2961
- border-bottom: 1px solid var(--pc-border-color);
2962
- }
2963
-
2964
- .pc-notification-dropdown-content {
2965
- flex: 1;
2966
- min-width: 0;
2967
- }
2968
-
2969
- .pc-notification-dropdown-title-text {
2970
- margin: 0;
2971
- font-size: 0.8125rem;
2972
- line-height: 1.4;
2973
- font-weight: 400;
2974
- color: var(--pc-text-primary);
2975
- }
2976
-
2977
- .pc-notification-dropdown-row[data-read="false"] .pc-notification-dropdown-title-text {
2978
- font-weight: 600;
2979
- }
2980
-
2981
- .pc-notification-status-badge {
2982
- color: #2563eb;
2983
- background-color: #eff6ff;
2984
- }
2985
-
2986
- .pc-notification-dropdown-description {
2987
- margin: 0.125rem 0 0;
2988
- font-size: 0.75rem;
2989
- line-height: 1.4;
2990
- color: var(--pc-text-secondary);
2991
- overflow: hidden;
2992
- text-overflow: ellipsis;
2993
- white-space: nowrap;
2994
- }
2995
-
2996
- .pc-notification-dropdown-time {
2997
- margin: 0.25rem 0 0;
2998
- font-size: 0.6875rem;
2999
- color: var(--pc-text-tertiary);
3000
- }
3001
-
3002
- .pc-notification-dropdown-ctas {
3003
- display: flex;
3004
- gap: 0.375rem;
3005
- margin-top: 0.375rem;
3006
- }
3007
-
3008
- .pc-notification-row-content {
3009
- flex: 1;
3010
- min-width: 0;
3011
- }
3012
-
3013
- .pc-notification-row-title-line {
3014
- display: flex;
3015
- align-items: center;
3016
- gap: 0.5rem;
3017
- flex-wrap: wrap;
3018
- margin-bottom: 0.25rem;
3019
- }
3020
-
3021
- .pc-notification-row-title {
3022
- font-size: 0.875rem;
3023
- font-weight: 400;
3024
- color: var(--pc-text-primary);
3025
- }
3026
-
3027
- .pc-notification-row[data-read="false"] .pc-notification-row-title {
3028
- font-weight: 600;
3029
- }
3030
-
3031
- .pc-notification-row-description {
3032
- margin: 0;
3033
- font-size: 0.8125rem;
3034
- color: var(--pc-text-secondary);
3035
- line-height: 1.5;
3036
- }
3037
-
3038
- .pc-notification-row-ctas {
3039
- display: flex;
3040
- gap: 0.5rem;
3041
- margin-top: 0.5rem;
3042
- }
3043
-
3044
- .pc-notification-row-time {
3045
- font-size: 0.75rem;
3046
- color: var(--pc-text-tertiary);
3047
- flex-shrink: 0;
3048
- white-space: nowrap;
3049
- margin-top: 0.125rem;
3050
- }
3051
-
3052
- .pc-notification-panel-title {
3053
- margin: 0;
3054
- font-size: 1rem;
3055
- font-weight: 600;
3056
- color: var(--pc-text-primary);
3057
- }
3058
-
3059
- .pc-notification-panel-count {
3060
- margin-left: 0.5rem;
3061
- font-size: 0.75rem;
3062
- font-weight: 500;
3063
- color: var(--pc-text-tertiary);
3064
- }
3065
-
3066
- .pc-notification-filter-tabs {
3067
- display: flex;
3068
- gap: 0;
3069
- border-bottom: 1px solid var(--pc-border-color);
3070
- padding: 0 1.5rem;
3071
- }
3072
-
3073
- .pc-notification-filter-tab {
3074
- border-bottom: 2px solid transparent;
3075
- color: var(--pc-text-secondary);
3076
- font-weight: 400;
3077
- }
3078
-
3079
- .pc-notification-filter-tab[data-active="true"] {
3080
- border-bottom-color: var(--pc-primary);
3081
- color: var(--pc-primary);
3082
- font-weight: 600;
3083
- }
3084
-
3085
- .pc-notification-pagination {
3086
- display: flex;
3087
- align-items: center;
3088
- justify-content: center;
3089
- gap: 0.75rem;
3090
- padding: 1rem 1.5rem;
3091
- border-top: 1px solid var(--pc-border-color);
3092
- }
3093
-
3094
- .pc-notification-pagination-range {
3095
- font-size: 0.75rem;
3096
- color: var(--pc-text-secondary);
3097
- }
3098
-
3099
- .pc-notification-pagination-btn:disabled {
3100
- cursor: default;
3101
- color: var(--pc-text-tertiary);
3102
- opacity: 0.5;
3103
- }
3104
- `;
3105
-
3106
- document.head.appendChild(style);
3107
- stylesInjected = true;
3108
- };