profile-pane 3.1.5 → 3.2.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 (311) hide show
  1. package/README.md +16 -0
  2. package/lib/04567ff683933c35c465.png +0 -0
  3. package/lib/10163fd9b5a0e00d63a0.png +0 -0
  4. package/lib/1234dcb2eec2e45f252b.png +0 -0
  5. package/lib/20899934157df4db56cb.png +0 -0
  6. package/lib/33760bf79f097f449da5.png +0 -0
  7. package/lib/578d2b6ed32e7624164e.png +0 -0
  8. package/lib/5f62a5b2b7e99b9640c7.png +0 -0
  9. package/lib/6525766ecd288ec60129.png +0 -0
  10. package/lib/7800be6f6c4b5b0f4f20.png +0 -0
  11. package/lib/976473cf5fe24d657d4b.png +0 -0
  12. package/lib/ChatWithMe.d.ts +2 -1
  13. package/lib/ChatWithMe.d.ts.map +1 -1
  14. package/lib/ChatWithMe.js +3 -3
  15. package/lib/ProfileView.d.ts +1 -1
  16. package/lib/ProfileView.d.ts.map +1 -1
  17. package/lib/ProfileView.js +71 -131
  18. package/lib/ProfileViewModelPresenter.d.ts +23 -0
  19. package/lib/ProfileViewModelPresenter.d.ts.map +1 -0
  20. package/lib/ProfileViewModelPresenter.js +37 -0
  21. package/lib/QRCodeCard.d.ts +3 -1
  22. package/lib/QRCodeCard.d.ts.map +1 -1
  23. package/lib/QRCodeCard.js +86 -66
  24. package/lib/addMeToYourFriends.d.ts +3 -3
  25. package/lib/addMeToYourFriends.d.ts.map +1 -1
  26. package/lib/addMeToYourFriends.js +14 -30
  27. package/lib/bda84f59e7216675a208.png +0 -0
  28. package/lib/buttonsHelper.js +1 -1
  29. package/lib/cd68e8f3990ba8b2139e.png +0 -0
  30. package/lib/e7074a7e2cb69e51cfd3.png +0 -0
  31. package/lib/editProfilePane/EditCVCard.d.ts +1 -0
  32. package/lib/editProfilePane/EditCVCard.d.ts.map +1 -1
  33. package/lib/editProfilePane/EditCVCard.js +2 -1
  34. package/lib/editProfilePane/EditCommunitiesCard.d.ts +1 -1
  35. package/lib/editProfilePane/EditCommunitiesCard.d.ts.map +1 -1
  36. package/lib/editProfilePane/EditCommunitiesCard.js +2 -1
  37. package/lib/editProfilePane/EditContactsCard.d.ts +1 -0
  38. package/lib/editProfilePane/EditContactsCard.d.ts.map +1 -1
  39. package/lib/editProfilePane/EditContactsCard.js +2 -0
  40. package/lib/editProfilePane/EditFriendsCard.d.ts +1 -1
  41. package/lib/editProfilePane/EditFriendsCard.d.ts.map +1 -1
  42. package/lib/editProfilePane/EditFriendsCard.js +2 -1
  43. package/lib/editProfilePane/EditOtherPreferences.d.ts +1 -0
  44. package/lib/editProfilePane/EditOtherPreferences.d.ts.map +1 -1
  45. package/lib/editProfilePane/EditOtherPreferences.js +1 -0
  46. package/lib/editProfilePane/EditProfileView.d.ts +1 -1
  47. package/lib/editProfilePane/EditProfileView.d.ts.map +1 -1
  48. package/lib/editProfilePane/EditProfileView.js +1 -1
  49. package/lib/editProfilePane/EditSocialCard.d.ts +1 -0
  50. package/lib/editProfilePane/EditSocialCard.d.ts.map +1 -1
  51. package/lib/editProfilePane/EditSocialCard.js +2 -1
  52. package/lib/editProfilePane/editProfilePresenter.d.ts +1 -0
  53. package/lib/editProfilePane/editProfilePresenter.d.ts.map +1 -1
  54. package/lib/editProfilePane/editProfilePresenter.js +2 -0
  55. package/lib/f3772696fb7ee53c23d8.png +0 -0
  56. package/lib/icons-svg/contactIcons.d.ts +3 -0
  57. package/lib/icons-svg/contactIcons.d.ts.map +1 -0
  58. package/lib/icons-svg/contactIcons.js +32 -0
  59. package/lib/icons-svg/profileIcons.d.ts +22 -0
  60. package/lib/icons-svg/profileIcons.d.ts.map +1 -0
  61. package/lib/icons-svg/profileIcons.js +309 -0
  62. package/lib/index.d.ts +1 -3
  63. package/lib/index.d.ts.map +1 -1
  64. package/lib/index.js +42 -19
  65. package/lib/profile-pane.js +15629 -5670
  66. package/lib/profile-pane.js.map +1 -1
  67. package/lib/profile-pane.min.js +2171 -230
  68. package/lib/profile-pane.min.js.map +1 -1
  69. package/lib/rdfFormsHelper.d.ts +1 -0
  70. package/lib/rdfFormsHelper.d.ts.map +1 -1
  71. package/lib/rdfFormsHelper.js +2 -0
  72. package/lib/sections/bio/BioEditDialog.d.ts +6 -0
  73. package/lib/sections/bio/BioEditDialog.d.ts.map +1 -0
  74. package/lib/sections/bio/BioEditDialog.js +119 -0
  75. package/lib/sections/bio/BioSection.d.ts +7 -0
  76. package/lib/sections/bio/BioSection.d.ts.map +1 -0
  77. package/lib/sections/bio/BioSection.js +131 -0
  78. package/lib/sections/bio/mutations.d.ts +4 -0
  79. package/lib/sections/bio/mutations.d.ts.map +1 -0
  80. package/lib/sections/bio/mutations.js +43 -0
  81. package/lib/sections/bio/selectors.d.ts +4 -0
  82. package/lib/sections/bio/selectors.d.ts.map +1 -0
  83. package/lib/sections/bio/selectors.js +15 -0
  84. package/lib/sections/bio/types.d.ts +15 -0
  85. package/lib/sections/bio/types.d.ts.map +1 -0
  86. package/lib/sections/bio/types.js +5 -0
  87. package/lib/sections/contactInfo/ContactInfoEditDialog.d.ts +7 -0
  88. package/lib/sections/contactInfo/ContactInfoEditDialog.d.ts.map +1 -0
  89. package/lib/sections/contactInfo/ContactInfoEditDialog.js +658 -0
  90. package/lib/sections/contactInfo/ContactInfoSection.d.ts +5 -0
  91. package/lib/sections/contactInfo/ContactInfoSection.d.ts.map +1 -0
  92. package/lib/sections/contactInfo/ContactInfoSection.js +229 -0
  93. package/lib/sections/contactInfo/mutations.d.ts +4 -0
  94. package/lib/sections/contactInfo/mutations.d.ts.map +1 -0
  95. package/lib/sections/contactInfo/mutations.js +150 -0
  96. package/lib/sections/contactInfo/selectors.d.ts +4 -0
  97. package/lib/sections/contactInfo/selectors.d.ts.map +1 -0
  98. package/lib/sections/contactInfo/selectors.js +104 -0
  99. package/lib/sections/contactInfo/types.d.ts +44 -0
  100. package/lib/sections/contactInfo/types.d.ts.map +1 -0
  101. package/lib/sections/contactInfo/types.js +5 -0
  102. package/lib/sections/education/EducationEditDialog.d.ts +7 -0
  103. package/lib/sections/education/EducationEditDialog.d.ts.map +1 -0
  104. package/lib/sections/education/EducationEditDialog.js +459 -0
  105. package/lib/sections/education/EducationSection.d.ts +7 -0
  106. package/lib/sections/education/EducationSection.d.ts.map +1 -0
  107. package/lib/sections/education/EducationSection.js +126 -0
  108. package/lib/sections/education/mutations.d.ts +4 -0
  109. package/lib/sections/education/mutations.d.ts.map +1 -0
  110. package/lib/sections/education/mutations.js +60 -0
  111. package/lib/sections/education/selectors.d.ts +4 -0
  112. package/lib/sections/education/selectors.d.ts.map +1 -0
  113. package/lib/sections/education/selectors.js +64 -0
  114. package/lib/sections/education/types.d.ts +20 -0
  115. package/lib/sections/education/types.d.ts.map +1 -0
  116. package/lib/sections/education/types.js +5 -0
  117. package/lib/sections/heading/HeadingEditDialog.d.ts +6 -0
  118. package/lib/sections/heading/HeadingEditDialog.d.ts.map +1 -0
  119. package/lib/sections/heading/HeadingEditDialog.js +742 -0
  120. package/lib/sections/heading/HeadingSection.d.ts +9 -0
  121. package/lib/sections/heading/HeadingSection.d.ts.map +1 -0
  122. package/lib/sections/heading/HeadingSection.js +97 -0
  123. package/lib/sections/heading/camera.d.ts +19 -0
  124. package/lib/sections/heading/camera.d.ts.map +1 -0
  125. package/lib/sections/heading/camera.js +199 -0
  126. package/lib/sections/heading/dateHelpers.d.ts +4 -0
  127. package/lib/sections/heading/dateHelpers.d.ts.map +1 -0
  128. package/lib/sections/heading/dateHelpers.js +48 -0
  129. package/lib/sections/heading/imageHelpers.d.ts +4 -0
  130. package/lib/sections/heading/imageHelpers.d.ts.map +1 -0
  131. package/lib/sections/heading/imageHelpers.js +81 -0
  132. package/lib/sections/heading/mutations.d.ts +4 -0
  133. package/lib/sections/heading/mutations.d.ts.map +1 -0
  134. package/lib/sections/heading/mutations.js +190 -0
  135. package/lib/sections/heading/selectors.d.ts +5 -0
  136. package/lib/sections/heading/selectors.d.ts.map +1 -0
  137. package/lib/sections/heading/selectors.js +157 -0
  138. package/lib/sections/heading/types.d.ts +36 -0
  139. package/lib/sections/heading/types.d.ts.map +1 -0
  140. package/lib/sections/heading/types.js +5 -0
  141. package/lib/sections/languages/LanguageEditDialog.d.ts +7 -0
  142. package/lib/sections/languages/LanguageEditDialog.d.ts.map +1 -0
  143. package/lib/sections/languages/LanguageEditDialog.js +457 -0
  144. package/lib/sections/languages/LanguageSection.d.ts +5 -0
  145. package/lib/sections/languages/LanguageSection.d.ts.map +1 -0
  146. package/lib/sections/languages/LanguageSection.js +137 -0
  147. package/lib/sections/languages/mutations.d.ts +6 -0
  148. package/lib/sections/languages/mutations.d.ts.map +1 -0
  149. package/lib/sections/languages/mutations.js +296 -0
  150. package/lib/sections/languages/selectors.d.ts +5 -0
  151. package/lib/sections/languages/selectors.d.ts.map +1 -0
  152. package/lib/sections/languages/selectors.js +146 -0
  153. package/lib/sections/languages/types.d.ts +15 -0
  154. package/lib/sections/languages/types.d.ts.map +1 -0
  155. package/lib/sections/languages/types.js +5 -0
  156. package/lib/sections/projects/ProjectEditDialog.d.ts +7 -0
  157. package/lib/sections/projects/ProjectEditDialog.d.ts.map +1 -0
  158. package/lib/sections/projects/ProjectEditDialog.js +182 -0
  159. package/lib/sections/projects/ProjectSection.d.ts +6 -0
  160. package/lib/sections/projects/ProjectSection.d.ts.map +1 -0
  161. package/lib/sections/projects/ProjectSection.js +220 -0
  162. package/lib/sections/projects/mutations.d.ts +4 -0
  163. package/lib/sections/projects/mutations.d.ts.map +1 -0
  164. package/lib/sections/projects/mutations.js +188 -0
  165. package/lib/sections/projects/selectors.d.ts +5 -0
  166. package/lib/sections/projects/selectors.d.ts.map +1 -0
  167. package/lib/sections/projects/selectors.js +163 -0
  168. package/lib/sections/projects/types.d.ts +28 -0
  169. package/lib/sections/projects/types.d.ts.map +1 -0
  170. package/lib/sections/projects/types.js +8 -0
  171. package/lib/sections/resume/ResumeEditDialog.d.ts +7 -0
  172. package/lib/sections/resume/ResumeEditDialog.d.ts.map +1 -0
  173. package/lib/sections/resume/ResumeEditDialog.js +629 -0
  174. package/lib/sections/resume/ResumeSection.d.ts +7 -0
  175. package/lib/sections/resume/ResumeSection.d.ts.map +1 -0
  176. package/lib/sections/resume/ResumeSection.js +160 -0
  177. package/lib/sections/resume/mutations.d.ts +6 -0
  178. package/lib/sections/resume/mutations.d.ts.map +1 -0
  179. package/lib/sections/resume/mutations.js +172 -0
  180. package/lib/sections/resume/selectors.d.ts +4 -0
  181. package/lib/sections/resume/selectors.d.ts.map +1 -0
  182. package/lib/sections/resume/selectors.js +142 -0
  183. package/lib/sections/resume/types.d.ts +33 -0
  184. package/lib/sections/resume/types.d.ts.map +1 -0
  185. package/lib/sections/resume/types.js +8 -0
  186. package/lib/sections/shared/collapsibleSection.d.ts +2 -0
  187. package/lib/sections/shared/collapsibleSection.d.ts.map +1 -0
  188. package/lib/sections/shared/collapsibleSection.js +24 -0
  189. package/lib/sections/shared/contactTypeUtils.d.ts +7 -0
  190. package/lib/sections/shared/contactTypeUtils.d.ts.map +1 -0
  191. package/lib/sections/shared/contactTypeUtils.js +48 -0
  192. package/lib/sections/shared/idNodeFactory.d.ts +3 -0
  193. package/lib/sections/shared/idNodeFactory.d.ts.map +1 -0
  194. package/lib/sections/shared/idNodeFactory.js +14 -0
  195. package/lib/sections/shared/phoneCountries.d.ts +20 -0
  196. package/lib/sections/shared/phoneCountries.d.ts.map +1 -0
  197. package/lib/sections/shared/phoneCountries.js +1080 -0
  198. package/lib/sections/shared/rdfList.d.ts +3 -0
  199. package/lib/sections/shared/rdfList.d.ts.map +1 -0
  200. package/lib/sections/shared/rdfList.js +34 -0
  201. package/lib/sections/shared/rdfMutationHelpers.d.ts +12 -0
  202. package/lib/sections/shared/rdfMutationHelpers.d.ts.map +1 -0
  203. package/lib/sections/shared/rdfMutationHelpers.js +82 -0
  204. package/lib/sections/shared/rowState.d.ts +21 -0
  205. package/lib/sections/shared/rowState.d.ts.map +1 -0
  206. package/lib/sections/shared/rowState.js +52 -0
  207. package/lib/sections/shared/sanitizeUtils.d.ts +5 -0
  208. package/lib/sections/shared/sanitizeUtils.d.ts.map +1 -0
  209. package/lib/sections/shared/sanitizeUtils.js +22 -0
  210. package/lib/sections/shared/sectionCardHelpers.d.ts +11 -0
  211. package/lib/sections/shared/sectionCardHelpers.d.ts.map +1 -0
  212. package/lib/sections/shared/sectionCardHelpers.js +105 -0
  213. package/lib/sections/shared/types.d.ts +7 -0
  214. package/lib/sections/shared/types.d.ts.map +1 -0
  215. package/lib/sections/shared/types.js +5 -0
  216. package/lib/sections/skills/SkillsEditDialog.d.ts +7 -0
  217. package/lib/sections/skills/SkillsEditDialog.d.ts.map +1 -0
  218. package/lib/sections/skills/SkillsEditDialog.js +340 -0
  219. package/lib/sections/skills/SkillsSection.d.ts +5 -0
  220. package/lib/sections/skills/SkillsSection.d.ts.map +1 -0
  221. package/lib/sections/skills/SkillsSection.js +169 -0
  222. package/lib/sections/skills/mutations.d.ts +6 -0
  223. package/lib/sections/skills/mutations.d.ts.map +1 -0
  224. package/lib/sections/skills/mutations.js +110 -0
  225. package/lib/sections/skills/selectors.d.ts +6 -0
  226. package/lib/sections/skills/selectors.d.ts.map +1 -0
  227. package/lib/sections/skills/selectors.js +37 -0
  228. package/lib/sections/skills/types.d.ts +14 -0
  229. package/lib/sections/skills/types.d.ts.map +1 -0
  230. package/lib/sections/skills/types.js +5 -0
  231. package/lib/sections/social/SocialEditDialog.d.ts +7 -0
  232. package/lib/sections/social/SocialEditDialog.d.ts.map +1 -0
  233. package/lib/sections/social/SocialEditDialog.js +362 -0
  234. package/lib/sections/social/SocialSection.d.ts +8 -0
  235. package/lib/sections/social/SocialSection.d.ts.map +1 -0
  236. package/lib/sections/social/SocialSection.js +201 -0
  237. package/lib/sections/social/constants.d.ts +3 -0
  238. package/lib/sections/social/constants.d.ts.map +1 -0
  239. package/lib/sections/social/constants.js +16 -0
  240. package/lib/sections/social/helpers.d.ts +15 -0
  241. package/lib/sections/social/helpers.d.ts.map +1 -0
  242. package/lib/sections/social/helpers.js +316 -0
  243. package/lib/sections/social/mutations.d.ts +4 -0
  244. package/lib/sections/social/mutations.d.ts.map +1 -0
  245. package/lib/sections/social/mutations.js +298 -0
  246. package/lib/sections/social/selectors.d.ts +4 -0
  247. package/lib/sections/social/selectors.d.ts.map +1 -0
  248. package/lib/sections/social/selectors.js +43 -0
  249. package/lib/sections/social/types.d.ts +19 -0
  250. package/lib/sections/social/types.d.ts.map +1 -0
  251. package/lib/sections/social/types.js +5 -0
  252. package/lib/styles/BioSection.css +77 -0
  253. package/lib/styles/CVCard.css +107 -2
  254. package/lib/styles/ContactInfoEditDialog.css +153 -0
  255. package/lib/styles/EditDialogs.css +1028 -0
  256. package/lib/styles/EducationCard.css +103 -0
  257. package/lib/styles/HeadingSection.css +309 -0
  258. package/lib/styles/ProfileCard.css +10 -42
  259. package/lib/styles/ProfileView.css +53 -8
  260. package/lib/styles/ProjectsCard.css +206 -0
  261. package/lib/styles/QRCodeCard.css +29 -10
  262. package/lib/styles/SocialCard.css +41 -13
  263. package/lib/styles/dialog.css +209 -0
  264. package/lib/styles/utilities.css +638 -256
  265. package/lib/textUtils.d.ts +6 -0
  266. package/lib/textUtils.d.ts.map +1 -0
  267. package/lib/textUtils.js +44 -0
  268. package/lib/texts.d.ts +45 -4
  269. package/lib/texts.d.ts.map +1 -1
  270. package/lib/texts.js +46 -5
  271. package/lib/types.d.ts +2 -0
  272. package/lib/types.d.ts.map +1 -0
  273. package/lib/types.js +5 -0
  274. package/lib/ui/dialog.d.ts +29 -0
  275. package/lib/ui/dialog.d.ts.map +1 -0
  276. package/lib/ui/dialog.js +269 -0
  277. package/lib/ui/errors.d.ts +2 -0
  278. package/lib/ui/errors.d.ts.map +1 -0
  279. package/lib/ui/errors.js +10 -0
  280. package/package.json +6 -4
  281. package/lib/CVCard.d.ts +0 -4
  282. package/lib/CVCard.d.ts.map +0 -1
  283. package/lib/CVCard.js +0 -114
  284. package/lib/CVPresenter.d.ts +0 -25
  285. package/lib/CVPresenter.d.ts.map +0 -1
  286. package/lib/CVPresenter.js +0 -119
  287. package/lib/FriendList.d.ts +0 -6
  288. package/lib/FriendList.d.ts.map +0 -1
  289. package/lib/FriendList.js +0 -27
  290. package/lib/ProfileCard.d.ts +0 -6
  291. package/lib/ProfileCard.d.ts.map +0 -1
  292. package/lib/ProfileCard.js +0 -62
  293. package/lib/SocialCard.d.ts +0 -5
  294. package/lib/SocialCard.d.ts.map +0 -1
  295. package/lib/SocialCard.js +0 -51
  296. package/lib/SocialPresenter.d.ts +0 -11
  297. package/lib/SocialPresenter.d.ts.map +0 -1
  298. package/lib/SocialPresenter.js +0 -117
  299. package/lib/StuffCard.d.ts +0 -10
  300. package/lib/StuffCard.d.ts.map +0 -1
  301. package/lib/StuffCard.js +0 -52
  302. package/lib/StuffPresenter.d.ts +0 -14
  303. package/lib/StuffPresenter.d.ts.map +0 -1
  304. package/lib/StuffPresenter.js +0 -53
  305. package/lib/presenter.d.ts +0 -14
  306. package/lib/presenter.d.ts.map +0 -1
  307. package/lib/presenter.js +0 -68
  308. package/lib/styles/FriendList.css +0 -12
  309. package/lib/styles/StuffCard.css +0 -23
  310. package/lib/styles/editProfile.css +0 -62
  311. package/lib/styles/profileRDFFormsEnforced.css +0 -431
@@ -1,289 +1,2230 @@
1
- !function(n,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("UI"),require("SolidLogic"),require("rdflib")):"function"==typeof define&&define.amd?define(["UI","SolidLogic","rdflib"],e):"object"==typeof exports?exports.ProfilePane=e(require("UI"),require("SolidLogic"),require("rdflib")):n.ProfilePane=e(n.UI,n.SolidLogic,n.rdflib)}(this,(n,e,t)=>(()=>{var i={1267(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* CVCard.css */\n/* Note: Uses utilities: .section-title for cvOrg styling */\n\n.cvSection {\n margin-bottom: 1.25em;\n}\n\n.cvRole {\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n display: flex;\n flex-direction: column;\n gap: 0.2em;\n}\n\n.cvOrg {\n font-weight: 600;\n color: var(--color-primary);\n}\n\n.cvSkill, .cvLanguage {\n text-align: left;\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n}\n\n.cvSection h3 {\n color: var(--color-text);\n font-size: var(--font-size-lg);\n font-weight: 600;\n line-height: var(--line-height-tight);\n margin-bottom: var(--spacing-xs);\n border-bottom: 1px solid var(--color-border-pale);\n padding-bottom: var(--spacing-xs);\n}\n","",{version:3,sources:["webpack://./src/styles/CVCard.css"],names:[],mappings:"AAAA,eAAe;AACf,2DAA2D;;AAE3D;EACE,qBAAqB;AACvB;;AAEA;EACE,2BAA2B;EAC3B,gCAAgC;EAChC,oCAAoC;EACpC,aAAa;EACb,sBAAsB;EACtB,UAAU;AACZ;;AAEA;EACE,gBAAgB;EAChB,2BAA2B;AAC7B;;AAEA;EACE,gBAAgB;EAChB,2BAA2B;EAC3B,gCAAgC;EAChC,oCAAoC;AACtC;;AAEA;EACE,wBAAwB;EACxB,8BAA8B;EAC9B,gBAAgB;EAChB,qCAAqC;EACrC,gCAAgC;EAChC,iDAAiD;EACjD,iCAAiC;AACnC",sourcesContent:["/* CVCard.css */\n/* Note: Uses utilities: .section-title for cvOrg styling */\n\n.cvSection {\n margin-bottom: 1.25em;\n}\n\n.cvRole {\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n display: flex;\n flex-direction: column;\n gap: 0.2em;\n}\n\n.cvOrg {\n font-weight: 600;\n color: var(--color-primary);\n}\n\n.cvSkill, .cvLanguage {\n text-align: left;\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n}\n\n.cvSection h3 {\n color: var(--color-text);\n font-size: var(--font-size-lg);\n font-weight: 600;\n line-height: var(--line-height-tight);\n margin-bottom: var(--spacing-xs);\n border-bottom: 1px solid var(--color-border-pale);\n padding-bottom: var(--spacing-xs);\n}\n"],sourceRoot:""}]);const s=a},3750(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* ChatWithMe.css */\n/* Uses utilities: .section-centered, .loading-text, .btn-primary, .btn-transparent */\n\n.chatSection {\n overflow-x: auto;\n}\n","",{version:3,sources:["webpack://./src/styles/ChatWithMe.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,qFAAqF;;AAErF;EACE,gBAAgB;AAClB",sourcesContent:["/* ChatWithMe.css */\n/* Uses utilities: .section-centered, .loading-text, .btn-primary, .btn-transparent */\n\n.chatSection {\n overflow-x: auto;\n}\n"],sourceRoot:""}]);const s=a},1666(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* FriendList.css */\n/* Uses utilities: .list-reset, .section-title, .zebra-stripe, .flex, .gap-xs, .mb-md */\n\n.friendItem {\n padding: var(--spacing-xs) 0;\n font-size: 1em;\n color: var(--color-text-muted);\n}\n\n.friendItem:last-child {\n border-bottom: none;\n}\n","",{version:3,sources:["webpack://./src/styles/FriendList.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,uFAAuF;;AAEvF;EACE,4BAA4B;EAC5B,cAAc;EACd,8BAA8B;AAChC;;AAEA;EACE,mBAAmB;AACrB",sourcesContent:["/* FriendList.css */\n/* Uses utilities: .list-reset, .section-title, .zebra-stripe, .flex, .gap-xs, .mb-md */\n\n.friendItem {\n padding: var(--spacing-xs) 0;\n font-size: 1em;\n color: var(--color-text-muted);\n}\n\n.friendItem:last-child {\n border-bottom: none;\n}\n"],sourceRoot:""}]);const s=a},1937(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* ProfileCard.css */\n/* Uses utilities: .action-button-focus, .btn-primary, .flex-column-center, .text-truncate, .text-center, .text-wrap-anywhere, .section-centered, .btn-transparent */\n\n.profileCard {\n /* Component container */\n}\n\n.image {\n width: 160px;\n height: 160px;\n border-radius: 50%;\n object-fit: cover;\n margin-bottom: var(--spacing-sm);\n box-shadow: var(--box-shadow-sm);\n border: 3px solid var(--color-primary);\n background: var(--color-card-bg);\n box-sizing: border-box;\n}\n\n.image-alt {\n width: 160px;\n height: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n margin-bottom: var(--spacing-sm);\n box-shadow: var(--box-shadow-sm);\n border: 3px solid var(--color-primary);\n background: var(--color-card-bg);\n box-sizing: border-box;\n color: var(--color-text-secondary);\n}\n\n.name {\n font-size: var(--font-size-xl);\n font-weight: 700;\n line-height: var(--line-height-tight);\n text-decoration: underline;\n text-underline-offset: 0.2em;\n margin: 0;\n letter-spacing: var(--letter-spacing-wide);\n}\n\n.intro {\n color: var(--color-text-secondary);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n margin-bottom: var(--spacing-xs);\n max-width: 40ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n.buttonSection {\n color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs);\n}\n\n.buttonSubSection {\n width: 100%;\n min-width: 0;\n display: grid;\n}\n\n.buttonSubSection button {\n width: 100%;\n min-width: 0;\n}\n\n/* Ensure prompt inputs stretch to fit their container */\n.add-friend-button-container input[type="text"] {\n width: 100%;\n box-sizing: border-box;\n}\n\n.qrCodeSection {\n color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs);\n}\n\n.details {\n color: var(--color-text-muted);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n max-width: 45ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* ProfileCard styles as regular CSS */\n.profile-card {\n border: 1px solid #ccc;\n padding: 16px;\n background: white;\n}\n',"",{version:3,sources:["webpack://./src/styles/ProfileCard.css"],names:[],mappings:"AAAA,oBAAoB;AACpB,oKAAoK;;AAEpK;EACE,wBAAwB;AAC1B;;AAEA;EACE,YAAY;EACZ,aAAa;EACb,kBAAkB;EAClB,iBAAiB;EACjB,gCAAgC;EAChC,gCAAgC;EAChC,sCAAsC;EACtC,gCAAgC;EAChC,sBAAsB;AACxB;;AAEA;EACE,YAAY;EACZ,aAAa;EACb,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,kBAAkB;EAClB,gCAAgC;EAChC,gCAAgC;EAChC,sCAAsC;EACtC,gCAAgC;EAChC,sBAAsB;EACtB,kCAAkC;AACpC;;AAEA;EACE,8BAA8B;EAC9B,gBAAgB;EAChB,qCAAqC;EACrC,0BAA0B;EAC1B,4BAA4B;EAC5B,SAAS;EACT,0CAA0C;AAC5C;;AAEA;EACE,kCAAkC;EAClC,gCAAgC;EAChC,oCAAoC;EACpC,gCAAgC;EAChC,eAAe;EACf,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA;EACE,kCAAkC;EAClC,cAAc;EACd,gCAAgC;AAClC;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,aAAa;AACf;;AAEA;EACE,WAAW;EACX,YAAY;AACd;;AAEA,wDAAwD;AACxD;EACE,WAAW;EACX,sBAAsB;AACxB;;AAEA;EACE,kCAAkC;EAClC,cAAc;EACd,gCAAgC;AAClC;;AAEA;EACE,8BAA8B;EAC9B,gCAAgC;EAChC,oCAAoC;EACpC,eAAe;EACf,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA,sCAAsC;AACtC;EACE,sBAAsB;EACtB,aAAa;EACb,iBAAiB;AACnB",sourcesContent:['/* ProfileCard.css */\n/* Uses utilities: .action-button-focus, .btn-primary, .flex-column-center, .text-truncate, .text-center, .text-wrap-anywhere, .section-centered, .btn-transparent */\n\n.profileCard {\n /* Component container */\n}\n\n.image {\n width: 160px;\n height: 160px;\n border-radius: 50%;\n object-fit: cover;\n margin-bottom: var(--spacing-sm);\n box-shadow: var(--box-shadow-sm);\n border: 3px solid var(--color-primary);\n background: var(--color-card-bg);\n box-sizing: border-box;\n}\n\n.image-alt {\n width: 160px;\n height: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n margin-bottom: var(--spacing-sm);\n box-shadow: var(--box-shadow-sm);\n border: 3px solid var(--color-primary);\n background: var(--color-card-bg);\n box-sizing: border-box;\n color: var(--color-text-secondary);\n}\n\n.name {\n font-size: var(--font-size-xl);\n font-weight: 700;\n line-height: var(--line-height-tight);\n text-decoration: underline;\n text-underline-offset: 0.2em;\n margin: 0;\n letter-spacing: var(--letter-spacing-wide);\n}\n\n.intro {\n color: var(--color-text-secondary);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n margin-bottom: var(--spacing-xs);\n max-width: 40ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n.buttonSection {\n color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs);\n}\n\n.buttonSubSection {\n width: 100%;\n min-width: 0;\n display: grid;\n}\n\n.buttonSubSection button {\n width: 100%;\n min-width: 0;\n}\n\n/* Ensure prompt inputs stretch to fit their container */\n.add-friend-button-container input[type="text"] {\n width: 100%;\n box-sizing: border-box;\n}\n\n.qrCodeSection {\n color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs);\n}\n\n.details {\n color: var(--color-text-muted);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n max-width: 45ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* ProfileCard styles as regular CSS */\n.profile-card {\n border: 1px solid #ccc;\n padding: 16px;\n background: white;\n}\n'],sourceRoot:""}]);const s=a},436(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* ProfileView.css */\n/* Uses utilities: .section-bg, .text-center */\n\n/* Horizontal layout for cards */\n.profile-grid .profileSection {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n margin-bottom: var(--spacing-md);\n box-sizing: border-box;\n margin-bottom: var(--spacing-md);\n overflow-wrap: anywhere;\n}\n\n@media (min-width: 900px) {\n .profile-grid .profileSection {\n margin-bottom: 0;\n }\n}\n","",{version:3,sources:["webpack://./src/styles/ProfileView.css"],names:[],mappings:"AAAA,oBAAoB;AACpB,8CAA8C;;AAE9C,gCAAgC;AAChC;EACE,WAAW;EACX,eAAe;EACf,YAAY;EACZ,sBAAsB;EACtB,gCAAgC;EAChC,sBAAsB;EACtB,gCAAgC;EAChC,uBAAuB;AACzB;;AAEA;EACE;IACE,gBAAgB;EAClB;AACF",sourcesContent:["/* ProfileView.css */\n/* Uses utilities: .section-bg, .text-center */\n\n/* Horizontal layout for cards */\n.profile-grid .profileSection {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n margin-bottom: var(--spacing-md);\n box-sizing: border-box;\n margin-bottom: var(--spacing-md);\n overflow-wrap: anywhere;\n}\n\n@media (min-width: 900px) {\n .profile-grid .profileSection {\n margin-bottom: 0;\n }\n}\n"],sourceRoot:""}]);const s=a},1134(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* QRCodeCard.css */\n/* Note: Uses utilities: .text-center */\n\n/* Caption under the QR code */\n.qrCaption {\n text-align: center;\n margin-top: 0;\n font-size: 0.95em;\n color: var(--color-text-secondary);\n}\n\n.QRCode {\n width: 100%;\n max-width: 320px;\n min-width: 180px;\n margin: 0 auto;\n display: block;\n}\n\n.QRCode [role="img"]:focus {\n outline: 2px solid var(--color-primary, #7C4DFF);\n outline-offset: 2px;\n box-shadow: 0 0 0 2px rgba(124,77,255,0.2);\n}',"",{version:3,sources:["webpack://./src/styles/QRCodeCard.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,uCAAuC;;AAEvC,8BAA8B;AAC9B;EACE,kBAAkB;EAClB,aAAa;EACb,iBAAiB;EACjB,kCAAkC;AACpC;;AAEA;EACE,WAAW;EACX,gBAAgB;EAChB,gBAAgB;EAChB,cAAc;EACd,cAAc;AAChB;;AAEA;EACE,gDAAgD;EAChD,mBAAmB;EACnB,0CAA0C;AAC5C",sourcesContent:['/* QRCodeCard.css */\n/* Note: Uses utilities: .text-center */\n\n/* Caption under the QR code */\n.qrCaption {\n text-align: center;\n margin-top: 0;\n font-size: 0.95em;\n color: var(--color-text-secondary);\n}\n\n.QRCode {\n width: 100%;\n max-width: 320px;\n min-width: 180px;\n margin: 0 auto;\n display: block;\n}\n\n.QRCode [role="img"]:focus {\n outline: 2px solid var(--color-primary, #7C4DFF);\n outline-offset: 2px;\n box-shadow: 0 0 0 2px rgba(124,77,255,0.2);\n}'],sourceRoot:""}]);const s=a},1649(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* SocialCard.css */\n/* Uses utilities: .list-reset, .text-wrap-anywhere, .flex, .gap-sm, .gap-lg, .rounded-sm */\n\n.socialList {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: var(--spacing-lg);\n justify-content: center;\n}\n\n.socialItem {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n font-size: 1.1em;\n}\n\n.socialItem span {\n min-width: 0;\n display: block;\n}\n\n.socialItem a {\n color: var(--color-primary);\n text-decoration: none;\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n min-height: var(--min-touch-target);\n padding: var(--spacing-xs);\n border-radius: var(--border-radius-base);\n transition: background-color var(--animation-duration) ease;\n position: relative;\n flex: 1;\n min-width: 0;\n}\n\n.socialItem a:hover,\n.socialItem a:focus {\n text-decoration: underline;\n background-color: rgba(124, 77, 255, 0.1);\n}\n\n/* Screen reader only external link indication */\n.socialItem a[href^="http"]:after {\n content: " (external link)";\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.socialIcon {\n width: 2.5em;\n height: 2.5em;\n border-radius: var(--border-radius-base);\n background: var(--color-card-bg);\n flex-shrink: 0;\n}\n',"",{version:3,sources:["webpack://./src/styles/SocialCard.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,2FAA2F;;AAE3F;EACE,aAAa;EACb,mBAAmB;EACnB,eAAe;EACf,sBAAsB;EACtB,uBAAuB;AACzB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA;EACE,YAAY;EACZ,cAAc;AAChB;;AAEA;EACE,2BAA2B;EAC3B,qBAAqB;EACrB,aAAa;EACb,mBAAmB;EACnB,sBAAsB;EACtB,mCAAmC;EACnC,0BAA0B;EAC1B,wCAAwC;EACxC,2DAA2D;EAC3D,kBAAkB;EAClB,OAAO;EACP,YAAY;AACd;;AAEA;;EAEE,0BAA0B;EAC1B,yCAAyC;AAC3C;;AAEA,gDAAgD;AAChD;EACE,2BAA2B;EAC3B,kBAAkB;EAClB,cAAc;EACd,UAAU;EACV,WAAW;EACX,gBAAgB;AAClB;;AAEA;EACE,YAAY;EACZ,aAAa;EACb,wCAAwC;EACxC,gCAAgC;EAChC,cAAc;AAChB",sourcesContent:['/* SocialCard.css */\n/* Uses utilities: .list-reset, .text-wrap-anywhere, .flex, .gap-sm, .gap-lg, .rounded-sm */\n\n.socialList {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: var(--spacing-lg);\n justify-content: center;\n}\n\n.socialItem {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n font-size: 1.1em;\n}\n\n.socialItem span {\n min-width: 0;\n display: block;\n}\n\n.socialItem a {\n color: var(--color-primary);\n text-decoration: none;\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n min-height: var(--min-touch-target);\n padding: var(--spacing-xs);\n border-radius: var(--border-radius-base);\n transition: background-color var(--animation-duration) ease;\n position: relative;\n flex: 1;\n min-width: 0;\n}\n\n.socialItem a:hover,\n.socialItem a:focus {\n text-decoration: underline;\n background-color: rgba(124, 77, 255, 0.1);\n}\n\n/* Screen reader only external link indication */\n.socialItem a[href^="http"]:after {\n content: " (external link)";\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.socialIcon {\n width: 2.5em;\n height: 2.5em;\n border-radius: var(--border-radius-base);\n background: var(--color-card-bg);\n flex-shrink: 0;\n}\n'],sourceRoot:""}]);const s=a},6660(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* StuffCard.css */\n/* Uses utilities: .zebra-stripe */\n\n.stuffTable {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: var(--spacing-md);\n caption-side: top;\n}\n\n.stuffTable caption {\n font-weight: 600;\n padding: var(--spacing-sm);\n text-align: left;\n color: var(--color-text);\n}\n\n.stuffTable th,\n.stuffTable td {\n padding: var(--spacing-sm) var(--spacing-md);\n text-align: left;\n line-height: 1.4;\n}\n","",{version:3,sources:["webpack://./src/styles/StuffCard.css"],names:[],mappings:"AAAA,kBAAkB;AAClB,kCAAkC;;AAElC;EACE,WAAW;EACX,yBAAyB;EACzB,gCAAgC;EAChC,iBAAiB;AACnB;;AAEA;EACE,gBAAgB;EAChB,0BAA0B;EAC1B,gBAAgB;EAChB,wBAAwB;AAC1B;;AAEA;;EAEE,4CAA4C;EAC5C,gBAAgB;EAChB,gBAAgB;AAClB",sourcesContent:["/* StuffCard.css */\n/* Uses utilities: .zebra-stripe */\n\n.stuffTable {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: var(--spacing-md);\n caption-side: top;\n}\n\n.stuffTable caption {\n font-weight: 600;\n padding: var(--spacing-sm);\n text-align: left;\n color: var(--color-text);\n}\n\n.stuffTable th,\n.stuffTable td {\n padding: var(--spacing-sm) var(--spacing-md);\n text-align: left;\n line-height: 1.4;\n}\n"],sourceRoot:""}]);const s=a},5179(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,".profile-grid .add-friend-button-container,\n.profile-grid .add-community-button-container {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xxs);\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n/* Ensure the button container can shrink properly in narrow layouts */\n.profile-grid .add-community-button-container {\n min-width: 0;\n max-width: 100%;\n}\n\n/* Allow any direct children to shrink so no element forces overflow */\n.profile-grid .add-community-button-container > * {\n min-width: 0;\n max-width: 100%;\n}\n\n.profile-grid table {\n margin: 0 !important;\n}\n\n.profile-grid td {\n padding: 0;\n}\n\n.profile-grid .add-friend-button-container .span,\n.profile-grid .add-community-button-container .span {\n display: inline-flex;\n align-items: center;\n}\n\n.profile-grid .add-friend-button-container > div,\n.profile-grid .add-community-button-container > div {\n flex-basis: 100%;\n}\n\n/* Prevent the add-community input from overflowing its flex container */\n.profile-grid .add-community-button-container input {\n min-width: 0;\n max-width: 96%;\n flex: 1 1 0;\n word-break: break-word;\n}\n\n.profile-grid .profile-image {\n width: var( --profile-image-size);\n height: var( --profile-image-size);\n margin: var(--spacing-xxxs);\n border-radius: var(--spacing-lg);\n}\n\n.profile-grid .default-profile-image {\n width: 140%;\n height: 140%;\n object-fit: cover;\n margin-left: -0.6em;\n border-radius: var(--spacing-lg);\n}","",{version:3,sources:["webpack://./src/styles/editProfile.css"],names:[],mappings:"AAAA;;EAEE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,eAAe;EACf,2BAA2B;AAC7B;;AAEA,sEAAsE;AACtE;EACE,YAAY;EACZ,eAAe;AACjB;;AAEA,sEAAsE;AACtE;EACE,YAAY;EACZ,eAAe;AACjB;;AAEA;EACE,oBAAoB;AACtB;;AAEA;EACE,UAAU;AACZ;;AAEA;;EAEE,oBAAoB;EACpB,mBAAmB;AACrB;;AAEA;;EAEE,gBAAgB;AAClB;;AAEA,wEAAwE;AACxE;EACE,YAAY;EACZ,cAAc;EACd,WAAW;EACX,sBAAsB;AACxB;;AAEA;EACE,iCAAiC;EACjC,kCAAkC;EAClC,2BAA2B;EAC3B,gCAAgC;AAClC;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,iBAAiB;EACjB,mBAAmB;EACnB,gCAAgC;AAClC",sourcesContent:[".profile-grid .add-friend-button-container,\n.profile-grid .add-community-button-container {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xxs);\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n/* Ensure the button container can shrink properly in narrow layouts */\n.profile-grid .add-community-button-container {\n min-width: 0;\n max-width: 100%;\n}\n\n/* Allow any direct children to shrink so no element forces overflow */\n.profile-grid .add-community-button-container > * {\n min-width: 0;\n max-width: 100%;\n}\n\n.profile-grid table {\n margin: 0 !important;\n}\n\n.profile-grid td {\n padding: 0;\n}\n\n.profile-grid .add-friend-button-container .span,\n.profile-grid .add-community-button-container .span {\n display: inline-flex;\n align-items: center;\n}\n\n.profile-grid .add-friend-button-container > div,\n.profile-grid .add-community-button-container > div {\n flex-basis: 100%;\n}\n\n/* Prevent the add-community input from overflowing its flex container */\n.profile-grid .add-community-button-container input {\n min-width: 0;\n max-width: 96%;\n flex: 1 1 0;\n word-break: break-word;\n}\n\n.profile-grid .profile-image {\n width: var( --profile-image-size);\n height: var( --profile-image-size);\n margin: var(--spacing-xxxs);\n border-radius: var(--spacing-lg);\n}\n\n.profile-grid .default-profile-image {\n width: 140%;\n height: 140%;\n object-fit: cover;\n margin-left: -0.6em;\n border-radius: var(--spacing-lg);\n}"],sourceRoot:""}]);const s=a},6776(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* Delete pop up*/\n/* Make the Solid-UI delete confirmation popup appear near the last click position.\n Keep the built-in Solid-UI styling (orange border, white background) so it looks like the original.\n*/\n.profile-grid div[style*="position: relative"] > div[style*="display: grid"] {\n/* only override positioning; keep styling (border/background/etc) from solid-ui */\n position: absolute !important;\n z-index: 9999 !important;\n top: 0 !important;\n right: 0 !important;\n left: auto !important;\n display: grid !important;\n pointer-events: auto !important;\n opacity: 1 !important;\n visibility: visible !important;\n padding: 0.7em !important;\n min-width: 280px !important;\n max-width: 90vw !important;\n background: var(--color-background) !important;\n border: 0.1em solid var(--color-primary) !important;\n border-radius: var(--border-radius-base) !important;\n box-shadow: 0 0.5em 0.9em rgba(0, 0, 0, 0.2) !important;\n grid-template-columns: auto auto !important;\n gap: 0.3em !important;\n}\n\n/* Ensure SVG icons and their buttons inside the Solid-UI delete popup have transparent backgrounds */\n.profile-grid div[style*="position: relative"] > div[style*="display: grid"] img[src$=".svg"],\n.profile-grid div[style*="position: relative"] > div[style*="display: grid"] button {\n background: transparent !important;\n}\n\n.profile-form .individualPane {\n box-shadow: none !important;\n}\n\n.profile-form p {\n padding: 0 !important;\n}\n\n.profile-form .mb-md {\n margin-bottom: 0 !important;\n}\n\n.profile-form h2 {\n margin-bottom: 1em !important;\n}\n\n.profile-form h3 {\n color: var(--color-primary) !important;\n padding: 0 !important;\n font-size: 1em !important;\n font-weight: 600 !important;\n}\n\n/* Shared form layout rules are imported from rdfFormsCommon.css */\n/* Solid-UI form sizing fixes scoped to Edit CV section */\n.profile-form .hoverControl:not(:has(> img:first-child)) {\n border: 0.1em solid rgb(136, 136, 136) !important;\n flex-direction: column !important;\n}\n\n.profile-form .hoverControl:has(> img:first-child) {\n background-color: transparent !important;\n border: none !important;\n margin: 0 !important;\n border-radius: 0 !important;\n padding: 0.7em !important;\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Make sure the delete icon floats in the top-right corner of the full hoverControl wrapper */\n.profile-form .hoverControl,\n.profile-grid .hoverControl {\n position: relative !important;\n}\n\n.profile-grid .hoverControl > img.hoverControlHide,\n.profile-grid .hoverControl > [data-testid="deleteButtonWithCheck"] {\n position: absolute !important;\n top: 0.2em !important;\n right: 0.2em !important;\n width: 1.5em !important;\n height: 1.5em !important;\n align-items: center;\n justify-content: center;\n margin: 0 !important;\n float: none !important;\n transform: none !important;\n}\n\n/* When icon is 2nd or 3rd child (i.e. sibling elements exist), align it vertically to the previous item */\n.profile-grid .hoverControl > img.hoverControlHide:nth-child(1),\n.profile-grid .hoverControl > img.hoverControlHide:nth-child(2),\n.profile-grid .hoverControl > [data-testid="deleteButtonWithCheck"]:nth-child(1),\n.profile-grid .hoverControl > [data-testid="deleteButtonWithCheck"]:nth-child(2) {\n top: 50% !important;\n transform: translateY(-50%) !important;\n display: inline-flex !important;\n}\n\n/* Show the delete icon only when the container is hovered */\n.profile-grid .hoverControl:hover > img.hoverControlHide,\n.profile-grid .hoverControl:hover > [data-testid="deleteButtonWithCheck"] {\n display: inline-flex !important;\n}\n\n/* Also show the delete icon when the entire row is hovered */\n.profile-grid .attachmentTable tr:hover .hoverControl > img.hoverControlHide,\n.profile-grid .attachmentTable tr:hover .hoverControl > [data-testid="deleteButtonWithCheck"] {\n display: inline-flex !important;\n}\n\n/* Make the hover-control cell easier to hit */\n.profile-grid .hoverControl {\n padding: 0.75em !important;\n min-width: 2.5em !important;\n min-height: 2.5em !important;\n}\n\n/* When the hoverControl only contains the hidden delete icon, keep it out of layout so it doesn\'t create empty space */\n.profile-form .formFieldValue .hoverControl:has(> img.hoverControlHide) {\n min-width: 0 !important;\n min-height: 0 !important;\n width: 0 !important;\n height: 0 !important;\n padding: 0 !important;\n margin: 0 !important;\n overflow: visible !important;\n}\n\n/* Hide delete icon only in autocomplete fields */\n.profile-grid .formFieldValue:has(input[data-testid="autocomplete-input"]) [data-testid="delete-button"] {\n display: none !important;\n}\n\n/* Keep autocomplete cancel button hidden when the user is not interacting.\n This avoids the cancel button remaining visible when focus moves away. */\n.profile-grid .formFieldValue:not(:focus-within) [data-testid="cancel-button"] {\n display: none !important;\n}\n\n.profile-grid .hoverControl:has(> img:first-child) > span {\n display: inline-flex;\n align-items: center;\n margin-left: 0.3em;\n}\n\n.profile-grid div[style*="padding: 0.5em"]:has(> img) > span {\n margin-left: 0.3em;\n vertical-align: super !important;\n}\n\n.profile-grid .hoverControl:has(> img:first-child):hover {\n background-color: transparent !important;\n}\n\n.profile-grid button:has(> img[src$=".svg"]),\n.profile-grid .formFieldValue input[type ="color"] {\n background-color: var(--color-section-bg) !important;\n border: none !important;\n margin: 0 !important;\n border-radius: 0 !important;\n box-shadow: none !important;\n padding: 0.5em !important;\n transition: background-color 0.2s ease, box-shadow 0.2s ease;\n padding: 0 !important;\n}\n\n/* Specific icon button should have no extra padding */\n.profile-grid button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_1369241.svg"]) {\n padding: 0 !important;\n}\n\n.profile-form button {\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n}\n\n.profile-form input:not([type="color"]) {\n width: 99%;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.profile-form input:not([type="color"]),\n.profile-form textarea,\n.profile-form select {\n max-width: 96%;\n min-width: 0;\n box-sizing: border-box ;\n font: inherit;\n color: var(--color-text);\n background-color: var(--color-card-bg) !important;\n border: 1px solid var(--color-border-pale);\n}\n\n.profile-form textarea {\n border-color: var(--color-border-pale) !important;\n}\n\n.profile-form input[type="date"],\n.profile-form input[type="month"],\n.profile-form input[type="week"],\n.profile-form input[type="time"],\n.profile-form input[type="datetime-local"] {\n min-height: var(--min-touch-target);\n}\n\n.profile-form .hoverControl:has(> img:first-child):focus-visible,\n.profile-form button:focus-visible,\n.profile-form input:not([type="color"]):focus-visible,\n.profile-form textarea:focus-visible,\n.profile-form select:focus-visible {\n outline: var(--focus-ring-width) solid var(--color-primary) !important;\n outline-offset: 2px;\n box-shadow: 0 0 0 1px var(--color-background);\n}\n\n.profile-form input[type="url"] {\n width: 100%;\n}\n\n.profile-form select#formSelect {\n width: 100%;\n max-width: 97%;\n box-sizing: border-box;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/* Remove border/padding from the first wrapper div (and its first child wrapper). */\n.profile-form > div:first-of-type,\n.profile-form > div:first-of-type > div:first-of-type {\n border: none !important;\n padding: 0 !important;\n}\n\n/* Remove border/padding from the inner div of the first wrapper in the contact section. */\nsection[aria-labelledby="edit-profile-contact-heading"] .profile-form > div:first-of-type > div:first-of-type {\n border: none !important;\n padding: 0 !important;\n}\n\n/* In contactPane, remove border/padding from all direct child divs. */\n.contactPane > div {\n border: none !important;\n padding: 0 !important;\n}\n\n/* Align schema.org, solid terms, FOAF, vCard, and org field labels with their input values. */\n.profile-form :not(.choiceBox):has(> .formFieldName):has(> .formFieldValue) {\n display: flex;\n}\n\n/* for the Resume inside corporation choice */\n/* Add space between classifierBox label and select box */\n.profile-form .choiceBox .classifierBox-label {\n /* Optional: ensure label doesn\'t have extra margin */\n margin-right: 0;\n padding-left: 0.3em;\n}\n.profile-form .choiceBox .choiceBox-selectBox select {\n margin-left: 2.1em !important;\n}\n\n/* for the Resume orga details */\n/* Add space between classifierBox label and select box */\n.profile-form .classifierBox .classifierBox-label {\n /* Match .formFieldName for alignment */\n margin-right: 0;\n padding-left: 0.3em;\n width: 8em;\n padding: 0.3em;\n vertical-align: middle;\n}\n.profile-form .classifierBox .classifierBox-selectBox {\n margin-left: 0 !important;\n}\n\n.profile-form .classifierBox .classifierBox-selectBox select {\n margin-left: 0 !important;\n}\n\n/* for the social media */\n/* Add space between classifierBox label and select box */\n.profile-grid section[data-testid="edit-social-section"] .classifierBox-label {\n /* Optional: ensure label doesn\'t have extra margin */\n margin-right: 0;\n padding-left: 0.3em;\n}\n.profile-grid section[data-testid="edit-social-section"] .classifierBox-selectBox select {\n margin-left: 0.7em !important;\n}\n\n.profile-form :not(.choiceBox):has(> .formFieldName):has(> .formFieldValue) > .formFieldValue {\n margin-bottom: 0;\n}\n\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n}\n\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) + .formFieldValue {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n flex: 1;\n min-width: 0;\n}\n\n.profile-form textarea,\n.profile-form .formFieldValue textarea {\n appearance: none;\n -webkit-appearance: none;\n border: .05em solid #88c !important;\n border-style: solid !important;\n border-width: .05em !important;\n border-color: #88c !important;\n border-radius: 0.2em !important;\n width: 99%;\n box-sizing: border-box;\n margin-top: var(--spacing-xs);\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/* Add horizontal gap between label and textarea for all label+textarea pairs. */\n.profile-form div:has(> a) + div:has(textarea) {\n margin-left: var(--spacing-sm);\n}\n\n/* Center textarea label vertically in flex rows. */\n.profile-form div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) {\n align-items: flex-start;\n}\n\n.profile-form div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) > div:has(> a) {\n padding-left: var(--spacing-xs);\n padding-top: var(--spacing-sm);\n}\n\n\n.profile-form :not(.choiceBox):has(> .formFieldValue input[data-testid="autocomplete-input"]) > .formFieldName {\n padding-top: 0.55em !important;\n}\n\n\n.profile-form input:disabled,\n.profile-form textarea:disabled,\n.profile-form select:disabled,\n.profile-form input[readonly],\n.profile-form textarea[readonly],\n.profile-form input:read-only,\n.profile-form textarea:read-only {\n background-color: var(--color-background) !important;\n cursor: not-allowed;\n opacity: 0.75;\n border: 0.05em solid white !important;\n}\n\n.webidControl table td div.contactPane.namedPane {\n border: none !important;\n}\n\n/* Hide the edit icon used by solid-ui (noun_253504.svg and noun_1180158.svg) when it appears as an <img> */\n.profile-form img[src*="noun_253504.svg"],\n.profile-form img[src*="noun_1180158.svg"],\n.webidControl img[src*="noun_253504.svg"],\n.webidControl img[src*="noun_1180158.svg"] {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n}\n\n/* Ensure the parent button for that icon doesn\'t add padding/margin or affect layout */\n.profile-form button:has(> img[src*="noun_253504.svg"]),\n.profile-form button:has(> img[src*="noun_1180158.svg"]),\n.webidControl button:has(> img[src*="noun_253504.svg"]),\n.webidControl button:has(> img[src*="noun_1180158.svg"]) {\n display: none !important;\n padding: 0 !important;\n margin: 0 !important;\n border: none !important;\n background: none !important;\n width: 0 !important;\n height: 0 !important;\n overflow: hidden !important;\n}\n\n/* Exceptions: allow these icons (and their buttons) when they\'re part of the add-friend or add-community flows. */\n.profile-grid .profileSection .add-friend-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"],\n.profile-grid .profileSection .add-community-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"],\n.profile-grid .profileSection .add-friend-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"]),\n.profile-grid .profileSection .add-community-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"]) {\n display: inline-flex !important;\n width: auto !important;\n height: auto !important;\n overflow: visible !important;\n}\n\n\n/* Exception: allow “Continue” buttons inside add-friend and add-community button containers. */\n.profile-grid .profileSection .add-friend-button-container button:has(> img[title="Continue"]),\n.profile-grid .profileSection .add-community-button-container button:has(> img[title="Continue"]),\n.profile-grid .profileSection .add-friend-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"]),\n.profile-grid .profileSection .add-community-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"]),\n.profile-grid .profileSection .add-friend-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"],\n.profile-grid .profileSection .add-community-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"] {\n display: inline-flex !important;\n width: 2em !important;\n height: 2em !important;\n overflow: visible !important;\n}\n',"",{version:3,sources:["webpack://./src/styles/profileRDFFormsEnforced.css"],names:[],mappings:"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",sourcesContent:['/* Delete pop up*/\n/* Make the Solid-UI delete confirmation popup appear near the last click position.\n Keep the built-in Solid-UI styling (orange border, white background) so it looks like the original.\n*/\n.profile-grid div[style*="position: relative"] > div[style*="display: grid"] {\n/* only override positioning; keep styling (border/background/etc) from solid-ui */\n position: absolute !important;\n z-index: 9999 !important;\n top: 0 !important;\n right: 0 !important;\n left: auto !important;\n display: grid !important;\n pointer-events: auto !important;\n opacity: 1 !important;\n visibility: visible !important;\n padding: 0.7em !important;\n min-width: 280px !important;\n max-width: 90vw !important;\n background: var(--color-background) !important;\n border: 0.1em solid var(--color-primary) !important;\n border-radius: var(--border-radius-base) !important;\n box-shadow: 0 0.5em 0.9em rgba(0, 0, 0, 0.2) !important;\n grid-template-columns: auto auto !important;\n gap: 0.3em !important;\n}\n\n/* Ensure SVG icons and their buttons inside the Solid-UI delete popup have transparent backgrounds */\n.profile-grid div[style*="position: relative"] > div[style*="display: grid"] img[src$=".svg"],\n.profile-grid div[style*="position: relative"] > div[style*="display: grid"] button {\n background: transparent !important;\n}\n\n.profile-form .individualPane {\n box-shadow: none !important;\n}\n\n.profile-form p {\n padding: 0 !important;\n}\n\n.profile-form .mb-md {\n margin-bottom: 0 !important;\n}\n\n.profile-form h2 {\n margin-bottom: 1em !important;\n}\n\n.profile-form h3 {\n color: var(--color-primary) !important;\n padding: 0 !important;\n font-size: 1em !important;\n font-weight: 600 !important;\n}\n\n/* Shared form layout rules are imported from rdfFormsCommon.css */\n/* Solid-UI form sizing fixes scoped to Edit CV section */\n.profile-form .hoverControl:not(:has(> img:first-child)) {\n border: 0.1em solid rgb(136, 136, 136) !important;\n flex-direction: column !important;\n}\n\n.profile-form .hoverControl:has(> img:first-child) {\n background-color: transparent !important;\n border: none !important;\n margin: 0 !important;\n border-radius: 0 !important;\n padding: 0.7em !important;\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Make sure the delete icon floats in the top-right corner of the full hoverControl wrapper */\n.profile-form .hoverControl,\n.profile-grid .hoverControl {\n position: relative !important;\n}\n\n.profile-grid .hoverControl > img.hoverControlHide,\n.profile-grid .hoverControl > [data-testid="deleteButtonWithCheck"] {\n position: absolute !important;\n top: 0.2em !important;\n right: 0.2em !important;\n width: 1.5em !important;\n height: 1.5em !important;\n align-items: center;\n justify-content: center;\n margin: 0 !important;\n float: none !important;\n transform: none !important;\n}\n\n/* When icon is 2nd or 3rd child (i.e. sibling elements exist), align it vertically to the previous item */\n.profile-grid .hoverControl > img.hoverControlHide:nth-child(1),\n.profile-grid .hoverControl > img.hoverControlHide:nth-child(2),\n.profile-grid .hoverControl > [data-testid="deleteButtonWithCheck"]:nth-child(1),\n.profile-grid .hoverControl > [data-testid="deleteButtonWithCheck"]:nth-child(2) {\n top: 50% !important;\n transform: translateY(-50%) !important;\n display: inline-flex !important;\n}\n\n/* Show the delete icon only when the container is hovered */\n.profile-grid .hoverControl:hover > img.hoverControlHide,\n.profile-grid .hoverControl:hover > [data-testid="deleteButtonWithCheck"] {\n display: inline-flex !important;\n}\n\n/* Also show the delete icon when the entire row is hovered */\n.profile-grid .attachmentTable tr:hover .hoverControl > img.hoverControlHide,\n.profile-grid .attachmentTable tr:hover .hoverControl > [data-testid="deleteButtonWithCheck"] {\n display: inline-flex !important;\n}\n\n/* Make the hover-control cell easier to hit */\n.profile-grid .hoverControl {\n padding: 0.75em !important;\n min-width: 2.5em !important;\n min-height: 2.5em !important;\n}\n\n/* When the hoverControl only contains the hidden delete icon, keep it out of layout so it doesn\'t create empty space */\n.profile-form .formFieldValue .hoverControl:has(> img.hoverControlHide) {\n min-width: 0 !important;\n min-height: 0 !important;\n width: 0 !important;\n height: 0 !important;\n padding: 0 !important;\n margin: 0 !important;\n overflow: visible !important;\n}\n\n/* Hide delete icon only in autocomplete fields */\n.profile-grid .formFieldValue:has(input[data-testid="autocomplete-input"]) [data-testid="delete-button"] {\n display: none !important;\n}\n\n/* Keep autocomplete cancel button hidden when the user is not interacting.\n This avoids the cancel button remaining visible when focus moves away. */\n.profile-grid .formFieldValue:not(:focus-within) [data-testid="cancel-button"] {\n display: none !important;\n}\n\n.profile-grid .hoverControl:has(> img:first-child) > span {\n display: inline-flex;\n align-items: center;\n margin-left: 0.3em;\n}\n\n.profile-grid div[style*="padding: 0.5em"]:has(> img) > span {\n margin-left: 0.3em;\n vertical-align: super !important;\n}\n\n.profile-grid .hoverControl:has(> img:first-child):hover {\n background-color: transparent !important;\n}\n\n.profile-grid button:has(> img[src$=".svg"]),\n.profile-grid .formFieldValue input[type ="color"] {\n background-color: var(--color-section-bg) !important;\n border: none !important;\n margin: 0 !important;\n border-radius: 0 !important;\n box-shadow: none !important;\n padding: 0.5em !important;\n transition: background-color 0.2s ease, box-shadow 0.2s ease;\n padding: 0 !important;\n}\n\n/* Specific icon button should have no extra padding */\n.profile-grid button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_1369241.svg"]) {\n padding: 0 !important;\n}\n\n.profile-form button {\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n}\n\n.profile-form input:not([type="color"]) {\n width: 99%;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.profile-form input:not([type="color"]),\n.profile-form textarea,\n.profile-form select {\n max-width: 96%;\n min-width: 0;\n box-sizing: border-box ;\n font: inherit;\n color: var(--color-text);\n background-color: var(--color-card-bg) !important;\n border: 1px solid var(--color-border-pale);\n}\n\n.profile-form textarea {\n border-color: var(--color-border-pale) !important;\n}\n\n.profile-form input[type="date"],\n.profile-form input[type="month"],\n.profile-form input[type="week"],\n.profile-form input[type="time"],\n.profile-form input[type="datetime-local"] {\n min-height: var(--min-touch-target);\n}\n\n.profile-form .hoverControl:has(> img:first-child):focus-visible,\n.profile-form button:focus-visible,\n.profile-form input:not([type="color"]):focus-visible,\n.profile-form textarea:focus-visible,\n.profile-form select:focus-visible {\n outline: var(--focus-ring-width) solid var(--color-primary) !important;\n outline-offset: 2px;\n box-shadow: 0 0 0 1px var(--color-background);\n}\n\n.profile-form input[type="url"] {\n width: 100%;\n}\n\n.profile-form select#formSelect {\n width: 100%;\n max-width: 97%;\n box-sizing: border-box;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/* Remove border/padding from the first wrapper div (and its first child wrapper). */\n.profile-form > div:first-of-type,\n.profile-form > div:first-of-type > div:first-of-type {\n border: none !important;\n padding: 0 !important;\n}\n\n/* Remove border/padding from the inner div of the first wrapper in the contact section. */\nsection[aria-labelledby="edit-profile-contact-heading"] .profile-form > div:first-of-type > div:first-of-type {\n border: none !important;\n padding: 0 !important;\n}\n\n/* In contactPane, remove border/padding from all direct child divs. */\n.contactPane > div {\n border: none !important;\n padding: 0 !important;\n}\n\n/* Align schema.org, solid terms, FOAF, vCard, and org field labels with their input values. */\n.profile-form :not(.choiceBox):has(> .formFieldName):has(> .formFieldValue) {\n display: flex;\n}\n\n/* for the Resume inside corporation choice */\n/* Add space between classifierBox label and select box */\n.profile-form .choiceBox .classifierBox-label {\n /* Optional: ensure label doesn\'t have extra margin */\n margin-right: 0;\n padding-left: 0.3em;\n}\n.profile-form .choiceBox .choiceBox-selectBox select {\n margin-left: 2.1em !important;\n}\n\n/* for the Resume orga details */\n/* Add space between classifierBox label and select box */\n.profile-form .classifierBox .classifierBox-label {\n /* Match .formFieldName for alignment */\n margin-right: 0;\n padding-left: 0.3em;\n width: 8em;\n padding: 0.3em;\n vertical-align: middle;\n}\n.profile-form .classifierBox .classifierBox-selectBox {\n margin-left: 0 !important;\n}\n\n.profile-form .classifierBox .classifierBox-selectBox select {\n margin-left: 0 !important;\n}\n\n/* for the social media */\n/* Add space between classifierBox label and select box */\n.profile-grid section[data-testid="edit-social-section"] .classifierBox-label {\n /* Optional: ensure label doesn\'t have extra margin */\n margin-right: 0;\n padding-left: 0.3em;\n}\n.profile-grid section[data-testid="edit-social-section"] .classifierBox-selectBox select {\n margin-left: 0.7em !important;\n}\n\n.profile-form :not(.choiceBox):has(> .formFieldName):has(> .formFieldValue) > .formFieldValue {\n margin-bottom: 0;\n}\n\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n}\n\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) + .formFieldValue {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n flex: 1;\n min-width: 0;\n}\n\n.profile-form textarea,\n.profile-form .formFieldValue textarea {\n appearance: none;\n -webkit-appearance: none;\n border: .05em solid #88c !important;\n border-style: solid !important;\n border-width: .05em !important;\n border-color: #88c !important;\n border-radius: 0.2em !important;\n width: 99%;\n box-sizing: border-box;\n margin-top: var(--spacing-xs);\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/* Add horizontal gap between label and textarea for all label+textarea pairs. */\n.profile-form div:has(> a) + div:has(textarea) {\n margin-left: var(--spacing-sm);\n}\n\n/* Center textarea label vertically in flex rows. */\n.profile-form div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) {\n align-items: flex-start;\n}\n\n.profile-form div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) > div:has(> a) {\n padding-left: var(--spacing-xs);\n padding-top: var(--spacing-sm);\n}\n\n\n.profile-form :not(.choiceBox):has(> .formFieldValue input[data-testid="autocomplete-input"]) > .formFieldName {\n padding-top: 0.55em !important;\n}\n\n\n.profile-form input:disabled,\n.profile-form textarea:disabled,\n.profile-form select:disabled,\n.profile-form input[readonly],\n.profile-form textarea[readonly],\n.profile-form input:read-only,\n.profile-form textarea:read-only {\n background-color: var(--color-background) !important;\n cursor: not-allowed;\n opacity: 0.75;\n border: 0.05em solid white !important;\n}\n\n.webidControl table td div.contactPane.namedPane {\n border: none !important;\n}\n\n/* Hide the edit icon used by solid-ui (noun_253504.svg and noun_1180158.svg) when it appears as an <img> */\n.profile-form img[src*="noun_253504.svg"],\n.profile-form img[src*="noun_1180158.svg"],\n.webidControl img[src*="noun_253504.svg"],\n.webidControl img[src*="noun_1180158.svg"] {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n}\n\n/* Ensure the parent button for that icon doesn\'t add padding/margin or affect layout */\n.profile-form button:has(> img[src*="noun_253504.svg"]),\n.profile-form button:has(> img[src*="noun_1180158.svg"]),\n.webidControl button:has(> img[src*="noun_253504.svg"]),\n.webidControl button:has(> img[src*="noun_1180158.svg"]) {\n display: none !important;\n padding: 0 !important;\n margin: 0 !important;\n border: none !important;\n background: none !important;\n width: 0 !important;\n height: 0 !important;\n overflow: hidden !important;\n}\n\n/* Exceptions: allow these icons (and their buttons) when they\'re part of the add-friend or add-community flows. */\n.profile-grid .profileSection .add-friend-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"],\n.profile-grid .profileSection .add-community-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"],\n.profile-grid .profileSection .add-friend-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"]),\n.profile-grid .profileSection .add-community-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"]) {\n display: inline-flex !important;\n width: auto !important;\n height: auto !important;\n overflow: visible !important;\n}\n\n\n/* Exception: allow “Continue” buttons inside add-friend and add-community button containers. */\n.profile-grid .profileSection .add-friend-button-container button:has(> img[title="Continue"]),\n.profile-grid .profileSection .add-community-button-container button:has(> img[title="Continue"]),\n.profile-grid .profileSection .add-friend-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"]),\n.profile-grid .profileSection .add-community-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"]),\n.profile-grid .profileSection .add-friend-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"],\n.profile-grid .profileSection .add-community-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"] {\n display: inline-flex !important;\n width: 2em !important;\n height: 2em !important;\n overflow: visible !important;\n}\n'],sourceRoot:""}]);const s=a},5092(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* Utility-first CSS classes for layout, spacing, and responsiveness */\n\n:root {\n --profile-image-size: 3em;\n}\n\n@media (max-width: 1000px) {\n .profile-grid,\n .profile-grid * {\n font-size: 2rem !important;\n }\n\n .profile-grid .actionButton,\n .profile-grid .searchInput,\n .profile-grid .flatButton,\n .profile-grid .buttonSection button,\n .profile-grid .groupButtonsList button {\n min-height: calc(var(--min-touch-target) + 0.5em) !important;\n font-size: 2rem !important;\n padding: 1em 1em !important;\n }\n}\n\n.actionButton {\n width: 100%;\n min-width: 180px;\n max-width: 320px;\n box-sizing: border-box;\n display: inline-block;\n}\n\n/* ===========================================\n PROFILE GRID LAYOUT\n =========================================== */\n\n.profile-grid {\n display: grid;\n /* Allow the grid to shrink below 30em on small viewports to avoid overflow */\n grid-template-columns: repeat(auto-fit, minmax(min(100%, 30em), 1fr));\n gap: var(--spacing-lg);\n background: var(--color-background);\n}\n\n.profile-header,\n.profile-footer {\n grid-column: 1 / -1;\n}\n\n.center {\n justify-content: center;\n align-items: center;\n}\n\n.flex {\n display: flex;\n}\n.grid {\n display: grid;\n}\n\n/* Spacing utilities using CSS variables */\n.gap-xs { gap: var(--spacing-xs); }\n.gap-sm { gap: var(--spacing-sm); }\n.gap-md { gap: var(--spacing-md); }\n.gap-lg { gap: var(--spacing-lg); }\n.gap-xl { gap: var(--spacing-xl); }\n\n.mt-xs { margin-top: var(--spacing-xs); }\n.mt-sm { margin-top: var(--spacing-sm); }\n.mt-md { margin-top: var(--spacing-md); }\n.mt-lg { margin-top: var(--spacing-lg); }\n\n.mb-xs { margin-bottom: var(--spacing-xs); }\n.mb-sm { margin-bottom: var(--spacing-sm); }\n.mb-md { margin-bottom: var(--spacing-md); }\n.mb-lg { margin-bottom: var(--spacing-lg); }\n\n.p-xs { padding: var(--spacing-xs); }\n.p-sm { padding: var(--spacing-sm); }\n.p-md { padding: var(--spacing-md); }\n.p-lg { padding: var(--spacing-lg); }\n\n.rounded { border-radius: var(--border-radius-full); }\n.rounded-sm { border-radius: var(--border-radius-base); }\n\n.shadow { box-shadow: var(--box-shadow); }\n.shadow-sm { box-shadow: var(--box-shadow-sm); }\n\n.bg-primary {\n background: var(--color-primary);\n color: #fff;\n}\n.bg-card {\n background: var(--color-card-bg);\n}\n\n/* Accessibility utilities */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.min-touch-target {\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n}\n\n/* Enhanced accessibility utilities */\n.visually-hidden {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n.visually-hidden.focusable:focus,\n.visually-hidden.focusable:active {\n position: static !important;\n width: auto !important;\n height: auto !important;\n padding: inherit !important;\n margin: inherit !important;\n overflow: visible !important;\n clip: auto !important;\n white-space: inherit !important;\n}\n\n/* Skip links utility */\n.skip-links {\n position: absolute;\n top: -100px;\n left: 0;\n z-index: 1000;\n}\n\n.skip-links a {\n position: absolute;\n left: 6px;\n top: 6px;\n padding: var(--spacing-sm);\n background: var(--color-primary);\n color: white;\n text-decoration: none;\n border-radius: var(--border-radius-base);\n}\n\n.skip-links a:focus {\n top: 6px;\n}\n\n.reduced-motion {\n animation: none !important;\n transition: none !important;\n}\n\n/* Focus management */\n.focus-ring {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.no-focus-ring {\n outline: none;\n}\n\n.no-focus-ring:focus-visible {\n outline: none;\n box-shadow: none;\n}\n\n/* ARIA live regions */\n.live-region {\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n/* Note: Use aria-live="polite" or aria-live="assertive" HTML attributes with .live-region */\n\n/* Text scaling utilities */\n.text-scale-friendly {\n line-height: 1.5;\n max-width: 70ch; /* Optimal reading length */\n}\n\n/* Text accessibility utilities */\n.text-readable {\n line-height: var(--line-height-base);\n max-width: 65ch;\n}\n\n.text-lg {\n font-size: var(--font-size-lg);\n line-height: var(--line-height-base);\n}\n\n.text-small {\n font-size: max(var(--font-size-sm), var(--min-font-size));\n line-height: var(--min-line-height);\n}\n\n.text-contrast-high {\n color: var(--color-text);\n font-weight: 600;\n}\n\n:focus-visible {\n outline: var(--focus-ring-width) solid var(--color-primary);\n outline-offset: 2px;\n box-shadow: 0 0 0 1px var(--color-background);\n}\n\n:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n}\n\n/* Prevent labels from appearing focusable to keyboard users. */\nlabel:focus,\nlabel:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n}\n\n/* Better focus for text elements */\n.focusable-text:focus {\n background-color: rgba(124, 77, 255, 0.1);\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n/* High contrast text */\n.high-contrast {\n color: var(--color-text);\n background: var(--color-background);\n border: 1px solid var(--color-border-pale);\n}\n\n/* ===========================================\n CONSOLIDATED COMPONENT PATTERNS\n =========================================== */\n\n/* Primary Button - used by ChatWithMe, ProfileCard */\n.btn-primary {\n min-height: var(--min-touch-target);\n padding: var(--spacing-sm) var(--spacing-md);\n border: 1px solid var(--color-primary);\n border-radius: var(--border-radius-base);\n background: var(--color-primary);\n color: white;\n font-weight: 600;\n cursor: pointer;\n transition: all var(--animation-duration) ease;\n}\n\n.btn-primary:hover {\n background: color-mix(in srgb, var(--color-primary) 90%, black);\n box-shadow: 0 2px 4px rgba(124, 77, 255, 0.2);\n}\n\n.btn-primary:active {\n box-shadow: 0 1px 2px rgba(124, 77, 255, 0.2);\n}\n\n.btn-primary:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n transform: none;\n}\n\n/* Action Button Focus - used by ChatWithMe, ProfileCard */\n.action-button-focus:focus,\n.action-button-focus:focus-visible {\n outline: 3px solid var(--color-primary) !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 2px var(--color-background), 0 0 0 5px rgba(124, 77, 255, 0.25) !important;\n z-index: 1;\n}\n\n/* List Reset - used by FriendList, SocialCard, nav */\n.list-reset {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n/* Zebra Striping - used by FriendList, StuffCard tables */\n.zebra-stripe tr:nth-child(even),\n.zebra-stripe > *:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.02);\n}\n\n/* Section Title - primary colored heading */\n.section-title {\n font-size: 1.25em;\n font-weight: 600;\n color: var(--color-primary);\n margin: 0;\n}\n\n/* Text Overflow - used by ProfileCard, SocialCard */\n.text-truncate {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.text-wrap-anywhere {\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n/* Loading Text - primary colored centered loading indicator */\n.loading-text {\n color: var(--color-primary);\n text-align: center;\n margin: var(--spacing-md) 0;\n}\n\n/* Centered Section - flex column with center alignment */\n.section-centered {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n/* Card Section Background */\n.section-bg {\n background: var(--color-section-bg);\n border-radius: var(--border-radius-full);\n box-shadow: var(--box-shadow);\n padding: var(--spacing-md);\n}\n\n\n/* Transparent button override (for solid-ui integration) */\n.btn-transparent {\n background-color: transparent;\n}\n\n.btn-transparent:hover {\n background-color: transparent;\n}\n',"",{version:3,sources:["webpack://./src/styles/utilities.css"],names:[],mappings:"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",sourcesContent:['/* Utility-first CSS classes for layout, spacing, and responsiveness */\n\n:root {\n --profile-image-size: 3em;\n}\n\n@media (max-width: 1000px) {\n .profile-grid,\n .profile-grid * {\n font-size: 2rem !important;\n }\n\n .profile-grid .actionButton,\n .profile-grid .searchInput,\n .profile-grid .flatButton,\n .profile-grid .buttonSection button,\n .profile-grid .groupButtonsList button {\n min-height: calc(var(--min-touch-target) + 0.5em) !important;\n font-size: 2rem !important;\n padding: 1em 1em !important;\n }\n}\n\n.actionButton {\n width: 100%;\n min-width: 180px;\n max-width: 320px;\n box-sizing: border-box;\n display: inline-block;\n}\n\n/* ===========================================\n PROFILE GRID LAYOUT\n =========================================== */\n\n.profile-grid {\n display: grid;\n /* Allow the grid to shrink below 30em on small viewports to avoid overflow */\n grid-template-columns: repeat(auto-fit, minmax(min(100%, 30em), 1fr));\n gap: var(--spacing-lg);\n background: var(--color-background);\n}\n\n.profile-header,\n.profile-footer {\n grid-column: 1 / -1;\n}\n\n.center {\n justify-content: center;\n align-items: center;\n}\n\n.flex {\n display: flex;\n}\n.grid {\n display: grid;\n}\n\n/* Spacing utilities using CSS variables */\n.gap-xs { gap: var(--spacing-xs); }\n.gap-sm { gap: var(--spacing-sm); }\n.gap-md { gap: var(--spacing-md); }\n.gap-lg { gap: var(--spacing-lg); }\n.gap-xl { gap: var(--spacing-xl); }\n\n.mt-xs { margin-top: var(--spacing-xs); }\n.mt-sm { margin-top: var(--spacing-sm); }\n.mt-md { margin-top: var(--spacing-md); }\n.mt-lg { margin-top: var(--spacing-lg); }\n\n.mb-xs { margin-bottom: var(--spacing-xs); }\n.mb-sm { margin-bottom: var(--spacing-sm); }\n.mb-md { margin-bottom: var(--spacing-md); }\n.mb-lg { margin-bottom: var(--spacing-lg); }\n\n.p-xs { padding: var(--spacing-xs); }\n.p-sm { padding: var(--spacing-sm); }\n.p-md { padding: var(--spacing-md); }\n.p-lg { padding: var(--spacing-lg); }\n\n.rounded { border-radius: var(--border-radius-full); }\n.rounded-sm { border-radius: var(--border-radius-base); }\n\n.shadow { box-shadow: var(--box-shadow); }\n.shadow-sm { box-shadow: var(--box-shadow-sm); }\n\n.bg-primary {\n background: var(--color-primary);\n color: #fff;\n}\n.bg-card {\n background: var(--color-card-bg);\n}\n\n/* Accessibility utilities */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.min-touch-target {\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n}\n\n/* Enhanced accessibility utilities */\n.visually-hidden {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n.visually-hidden.focusable:focus,\n.visually-hidden.focusable:active {\n position: static !important;\n width: auto !important;\n height: auto !important;\n padding: inherit !important;\n margin: inherit !important;\n overflow: visible !important;\n clip: auto !important;\n white-space: inherit !important;\n}\n\n/* Skip links utility */\n.skip-links {\n position: absolute;\n top: -100px;\n left: 0;\n z-index: 1000;\n}\n\n.skip-links a {\n position: absolute;\n left: 6px;\n top: 6px;\n padding: var(--spacing-sm);\n background: var(--color-primary);\n color: white;\n text-decoration: none;\n border-radius: var(--border-radius-base);\n}\n\n.skip-links a:focus {\n top: 6px;\n}\n\n.reduced-motion {\n animation: none !important;\n transition: none !important;\n}\n\n/* Focus management */\n.focus-ring {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.no-focus-ring {\n outline: none;\n}\n\n.no-focus-ring:focus-visible {\n outline: none;\n box-shadow: none;\n}\n\n/* ARIA live regions */\n.live-region {\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n/* Note: Use aria-live="polite" or aria-live="assertive" HTML attributes with .live-region */\n\n/* Text scaling utilities */\n.text-scale-friendly {\n line-height: 1.5;\n max-width: 70ch; /* Optimal reading length */\n}\n\n/* Text accessibility utilities */\n.text-readable {\n line-height: var(--line-height-base);\n max-width: 65ch;\n}\n\n.text-lg {\n font-size: var(--font-size-lg);\n line-height: var(--line-height-base);\n}\n\n.text-small {\n font-size: max(var(--font-size-sm), var(--min-font-size));\n line-height: var(--min-line-height);\n}\n\n.text-contrast-high {\n color: var(--color-text);\n font-weight: 600;\n}\n\n:focus-visible {\n outline: var(--focus-ring-width) solid var(--color-primary);\n outline-offset: 2px;\n box-shadow: 0 0 0 1px var(--color-background);\n}\n\n:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n}\n\n/* Prevent labels from appearing focusable to keyboard users. */\nlabel:focus,\nlabel:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n}\n\n/* Better focus for text elements */\n.focusable-text:focus {\n background-color: rgba(124, 77, 255, 0.1);\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n/* High contrast text */\n.high-contrast {\n color: var(--color-text);\n background: var(--color-background);\n border: 1px solid var(--color-border-pale);\n}\n\n/* ===========================================\n CONSOLIDATED COMPONENT PATTERNS\n =========================================== */\n\n/* Primary Button - used by ChatWithMe, ProfileCard */\n.btn-primary {\n min-height: var(--min-touch-target);\n padding: var(--spacing-sm) var(--spacing-md);\n border: 1px solid var(--color-primary);\n border-radius: var(--border-radius-base);\n background: var(--color-primary);\n color: white;\n font-weight: 600;\n cursor: pointer;\n transition: all var(--animation-duration) ease;\n}\n\n.btn-primary:hover {\n background: color-mix(in srgb, var(--color-primary) 90%, black);\n box-shadow: 0 2px 4px rgba(124, 77, 255, 0.2);\n}\n\n.btn-primary:active {\n box-shadow: 0 1px 2px rgba(124, 77, 255, 0.2);\n}\n\n.btn-primary:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n transform: none;\n}\n\n/* Action Button Focus - used by ChatWithMe, ProfileCard */\n.action-button-focus:focus,\n.action-button-focus:focus-visible {\n outline: 3px solid var(--color-primary) !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 2px var(--color-background), 0 0 0 5px rgba(124, 77, 255, 0.25) !important;\n z-index: 1;\n}\n\n/* List Reset - used by FriendList, SocialCard, nav */\n.list-reset {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n/* Zebra Striping - used by FriendList, StuffCard tables */\n.zebra-stripe tr:nth-child(even),\n.zebra-stripe > *:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.02);\n}\n\n/* Section Title - primary colored heading */\n.section-title {\n font-size: 1.25em;\n font-weight: 600;\n color: var(--color-primary);\n margin: 0;\n}\n\n/* Text Overflow - used by ProfileCard, SocialCard */\n.text-truncate {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.text-wrap-anywhere {\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n/* Loading Text - primary colored centered loading indicator */\n.loading-text {\n color: var(--color-primary);\n text-align: center;\n margin: var(--spacing-md) 0;\n}\n\n/* Centered Section - flex column with center alignment */\n.section-centered {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n/* Card Section Background */\n.section-bg {\n background: var(--color-section-bg);\n border-radius: var(--border-radius-full);\n box-shadow: var(--box-shadow);\n padding: var(--spacing-md);\n}\n\n\n/* Transparent button override (for solid-ui integration) */\n.btn-transparent {\n background-color: transparent;\n}\n\n.btn-transparent:hover {\n background-color: transparent;\n}\n'],sourceRoot:""}]);const s=a},6314(n){"use strict";n.exports=function(n){var e=[];return e.toString=function(){return this.map(function(e){var t="",i=void 0!==e[5];return e[4]&&(t+="@supports (".concat(e[4],") {")),e[2]&&(t+="@media ".concat(e[2]," {")),i&&(t+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),t+=n(e),i&&(t+="}"),e[2]&&(t+="}"),e[4]&&(t+="}"),t}).join("")},e.i=function(n,t,i,o,r){"string"==typeof n&&(n=[[null,n,void 0]]);var a={};if(i)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(a[l]=!0)}for(var d=0;d<n.length;d++){var c=[].concat(n[d]);i&&a[c[0]]||(void 0!==r&&(void 0===c[5]||(c[1]="@layer".concat(c[5].length>0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=r),t&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=t):c[2]=t),o&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=o):c[4]="".concat(o)),e.push(c))}},e}},1354(n){"use strict";n.exports=function(n){var e=n[1],t=n[3];if(!t)return e;if("function"==typeof btoa){var i=btoa(unescape(encodeURIComponent(JSON.stringify(t)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),r="/*# ".concat(o," */");return[e].concat([r]).join("\n")}return[e].join("\n")}},6320(n){"use strict";var e={single_source_shortest_paths:function(n,t,i){var o={},r={};r[t]=0;var a,s,l,d,c,A,u,p=e.PriorityQueue.make();for(p.push(t,0);!p.empty();)for(l in s=(a=p.pop()).value,d=a.cost,c=n[s]||{})c.hasOwnProperty(l)&&(A=d+c[l],u=r[l],(void 0===r[l]||u>A)&&(r[l]=A,p.push(l,A),o[l]=s));if(void 0!==i&&void 0===r[i]){var m=["Could not find a path from ",t," to ",i,"."].join("");throw new Error(m)}return o},extract_shortest_path_from_predecessor_list:function(n,e){for(var t=[],i=e;i;)t.push(i),n[i],i=n[i];return t.reverse(),t},find_path:function(n,t,i){var o=e.single_source_shortest_paths(n,t,i);return e.extract_shortest_path_from_predecessor_list(o,i)},PriorityQueue:{make:function(n){var t,i=e.PriorityQueue,o={};for(t in n=n||{},i)i.hasOwnProperty(t)&&(o[t]=i[t]);return o.queue=[],o.sorter=n.sorter||i.default_sorter,o},default_sorter:function(n,e){return n.cost-e.cost},push:function(n,e){var t={value:n,cost:e};this.queue.push(t),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};n.exports=e},7583(n,e,t){const i=t(1333),o=t(157),r=t(7899),a=t(6756);function s(n,e,t,r,a){const s=[].slice.call(arguments,1),l=s.length,d="function"==typeof s[l-1];if(!d&&!i())throw new Error("Callback required as last argument");if(!d){if(l<1)throw new Error("Too few arguments provided");return 1===l?(t=e,e=r=void 0):2!==l||e.getContext||(r=t,t=e,e=void 0),new Promise(function(i,a){try{const a=o.create(t,r);i(n(a,e,r))}catch(n){a(n)}})}if(l<2)throw new Error("Too few arguments provided");2===l?(a=t,t=e,e=r=void 0):3===l&&(e.getContext&&void 0===a?(a=r,r=void 0):(a=r,r=t,t=e,e=void 0));try{const i=o.create(t,r);a(null,n(i,e,r))}catch(n){a(n)}}o.create,s.bind(null,r.render),s.bind(null,r.renderToDataURL),e.toString=s.bind(null,function(n,e,t){return a.render(n,t)})},1333(n){n.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},6421(n,e,t){const i=t(6886).getSymbolSize;e.getRowColCoords=function(n){if(1===n)return[];const e=Math.floor(n/7)+2,t=i(n),o=145===t?26:2*Math.ceil((t-13)/(2*e-2)),r=[t-7];for(let n=1;n<e-1;n++)r[n]=r[n-1]-o;return r.push(6),r.reverse()},e.getPositions=function(n){const t=[],i=e.getRowColCoords(n),o=i.length;for(let n=0;n<o;n++)for(let e=0;e<o;e++)0===n&&0===e||0===n&&e===o-1||n===o-1&&0===e||t.push([i[n],i[e]]);return t}},1433(n,e,t){const i=t(208),o=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function r(n){this.mode=i.ALPHANUMERIC,this.data=n}r.getBitsLength=function(n){return 11*Math.floor(n/2)+n%2*6},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(n){let e;for(e=0;e+2<=this.data.length;e+=2){let t=45*o.indexOf(this.data[e]);t+=o.indexOf(this.data[e+1]),n.put(t,11)}this.data.length%2&&n.put(o.indexOf(this.data[e]),6)},n.exports=r},9899(n){function e(){this.buffer=[],this.length=0}e.prototype={get:function(n){const e=Math.floor(n/8);return 1==(this.buffer[e]>>>7-n%8&1)},put:function(n,e){for(let t=0;t<e;t++)this.putBit(1==(n>>>e-t-1&1))},getLengthInBits:function(){return this.length},putBit:function(n){const e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),n&&(this.buffer[e]|=128>>>this.length%8),this.length++}},n.exports=e},8820(n){function e(n){if(!n||n<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=n,this.data=new Uint8Array(n*n),this.reservedBit=new Uint8Array(n*n)}e.prototype.set=function(n,e,t,i){const o=n*this.size+e;this.data[o]=t,i&&(this.reservedBit[o]=!0)},e.prototype.get=function(n,e){return this.data[n*this.size+e]},e.prototype.xor=function(n,e,t){this.data[n*this.size+e]^=t},e.prototype.isReserved=function(n,e){return this.reservedBit[n*this.size+e]},n.exports=e},5822(n,e,t){const i=t(208);function o(n){this.mode=i.BYTE,this.data="string"==typeof n?(new TextEncoder).encode(n):new Uint8Array(n)}o.getBitsLength=function(n){return 8*n},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(n){for(let e=0,t=this.data.length;e<t;e++)n.put(this.data[e],8)},n.exports=o},7518(n,e,t){const i=t(9953),o=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(n,e){switch(e){case i.L:return o[4*(n-1)+0];case i.M:return o[4*(n-1)+1];case i.Q:return o[4*(n-1)+2];case i.H:return o[4*(n-1)+3];default:return}},e.getTotalCodewordsCount=function(n,e){switch(e){case i.L:return r[4*(n-1)+0];case i.M:return r[4*(n-1)+1];case i.Q:return r[4*(n-1)+2];case i.H:return r[4*(n-1)+3];default:return}}},9953(n,e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2},e.isValid=function(n){return n&&void 0!==n.bit&&n.bit>=0&&n.bit<4},e.from=function(n,t){if(e.isValid(n))return n;try{return function(n){if("string"!=typeof n)throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+n)}}(n)}catch(n){return t}}},7756(n,e,t){const i=t(6886).getSymbolSize;e.getPositions=function(n){const e=i(n);return[[0,0],[e-7,0],[0,e-7]]}},4565(n,e,t){const i=t(6886),o=i.getBCHDigit(1335);e.getEncodedBits=function(n,e){const t=n.bit<<3|e;let r=t<<10;for(;i.getBCHDigit(r)-o>=0;)r^=1335<<i.getBCHDigit(r)-o;return 21522^(t<<10|r)}},2731(n,e){const t=new Uint8Array(512),i=new Uint8Array(256);!function(){let n=1;for(let e=0;e<255;e++)t[e]=n,i[n]=e,n<<=1,256&n&&(n^=285);for(let n=255;n<512;n++)t[n]=t[n-255]}(),e.log=function(n){if(n<1)throw new Error("log("+n+")");return i[n]},e.exp=function(n){return t[n]},e.mul=function(n,e){return 0===n||0===e?0:t[i[n]+i[e]]}},4861(n,e,t){const i=t(208),o=t(6886);function r(n){this.mode=i.KANJI,this.data=n}r.getBitsLength=function(n){return 13*n},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(n){let e;for(e=0;e<this.data.length;e++){let t=o.toSJIS(this.data[e]);if(t>=33088&&t<=40956)t-=33088;else{if(!(t>=57408&&t<=60351))throw new Error("Invalid SJIS character: "+this.data[e]+"\nMake sure your charset is UTF-8");t-=49472}t=192*(t>>>8&255)+(255&t),n.put(t,13)}},n.exports=r},1332(n,e){e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const t=3,i=3,o=40,r=10;function a(n,t,i){switch(n){case e.Patterns.PATTERN000:return(t+i)%2==0;case e.Patterns.PATTERN001:return t%2==0;case e.Patterns.PATTERN010:return i%3==0;case e.Patterns.PATTERN011:return(t+i)%3==0;case e.Patterns.PATTERN100:return(Math.floor(t/2)+Math.floor(i/3))%2==0;case e.Patterns.PATTERN101:return t*i%2+t*i%3==0;case e.Patterns.PATTERN110:return(t*i%2+t*i%3)%2==0;case e.Patterns.PATTERN111:return(t*i%3+(t+i)%2)%2==0;default:throw new Error("bad maskPattern:"+n)}}e.isValid=function(n){return null!=n&&""!==n&&!isNaN(n)&&n>=0&&n<=7},e.from=function(n){return e.isValid(n)?parseInt(n,10):void 0},e.getPenaltyN1=function(n){const e=n.size;let i=0,o=0,r=0,a=null,s=null;for(let l=0;l<e;l++){o=r=0,a=s=null;for(let d=0;d<e;d++){let e=n.get(l,d);e===a?o++:(o>=5&&(i+=t+(o-5)),a=e,o=1),e=n.get(d,l),e===s?r++:(r>=5&&(i+=t+(r-5)),s=e,r=1)}o>=5&&(i+=t+(o-5)),r>=5&&(i+=t+(r-5))}return i},e.getPenaltyN2=function(n){const e=n.size;let t=0;for(let i=0;i<e-1;i++)for(let o=0;o<e-1;o++){const e=n.get(i,o)+n.get(i,o+1)+n.get(i+1,o)+n.get(i+1,o+1);4!==e&&0!==e||t++}return t*i},e.getPenaltyN3=function(n){const e=n.size;let t=0,i=0,r=0;for(let o=0;o<e;o++){i=r=0;for(let a=0;a<e;a++)i=i<<1&2047|n.get(o,a),a>=10&&(1488===i||93===i)&&t++,r=r<<1&2047|n.get(a,o),a>=10&&(1488===r||93===r)&&t++}return t*o},e.getPenaltyN4=function(n){let e=0;const t=n.data.length;for(let i=0;i<t;i++)e+=n.data[i];return Math.abs(Math.ceil(100*e/t/5)-10)*r},e.applyMask=function(n,e){const t=e.size;for(let i=0;i<t;i++)for(let o=0;o<t;o++)e.isReserved(o,i)||e.xor(o,i,a(n,o,i))},e.getBestMask=function(n,t){const i=Object.keys(e.Patterns).length;let o=0,r=1/0;for(let a=0;a<i;a++){t(a),e.applyMask(a,n);const i=e.getPenaltyN1(n)+e.getPenaltyN2(n)+e.getPenaltyN3(n)+e.getPenaltyN4(n);e.applyMask(a,n),i<r&&(r=i,o=a)}return o}},208(n,e,t){const i=t(1878),o=t(7044);e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(n,e){if(!n.ccBits)throw new Error("Invalid mode: "+n);if(!i.isValid(e))throw new Error("Invalid version: "+e);return e>=1&&e<10?n.ccBits[0]:e<27?n.ccBits[1]:n.ccBits[2]},e.getBestModeForData=function(n){return o.testNumeric(n)?e.NUMERIC:o.testAlphanumeric(n)?e.ALPHANUMERIC:o.testKanji(n)?e.KANJI:e.BYTE},e.toString=function(n){if(n&&n.id)return n.id;throw new Error("Invalid mode")},e.isValid=function(n){return n&&n.bit&&n.ccBits},e.from=function(n,t){if(e.isValid(n))return n;try{return function(n){if("string"!=typeof n)throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+n)}}(n)}catch(n){return t}}},4357(n,e,t){const i=t(208);function o(n){this.mode=i.NUMERIC,this.data=n.toString()}o.getBitsLength=function(n){return 10*Math.floor(n/3)+(n%3?n%3*3+1:0)},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(n){let e,t,i;for(e=0;e+3<=this.data.length;e+=3)t=this.data.substr(e,3),i=parseInt(t,10),n.put(i,10);const o=this.data.length-e;o>0&&(t=this.data.substr(e),i=parseInt(t,10),n.put(i,3*o+1))},n.exports=o},4713(n,e,t){const i=t(2731);e.mul=function(n,e){const t=new Uint8Array(n.length+e.length-1);for(let o=0;o<n.length;o++)for(let r=0;r<e.length;r++)t[o+r]^=i.mul(n[o],e[r]);return t},e.mod=function(n,e){let t=new Uint8Array(n);for(;t.length-e.length>=0;){const n=t[0];for(let o=0;o<e.length;o++)t[o]^=i.mul(e[o],n);let o=0;for(;o<t.length&&0===t[o];)o++;t=t.slice(o)}return t},e.generateECPolynomial=function(n){let t=new Uint8Array([1]);for(let o=0;o<n;o++)t=e.mul(t,new Uint8Array([1,i.exp(o)]));return t}},157(n,e,t){const i=t(6886),o=t(9953),r=t(9899),a=t(8820),s=t(6421),l=t(7756),d=t(1332),c=t(7518),A=t(4764),u=t(1427),p=t(4565),m=t(208),f=t(9801);function h(n,e,t){const i=n.size,o=p.getEncodedBits(e,t);let r,a;for(r=0;r<15;r++)a=1==(o>>r&1),r<6?n.set(r,8,a,!0):r<8?n.set(r+1,8,a,!0):n.set(i-15+r,8,a,!0),r<8?n.set(8,i-r-1,a,!0):r<9?n.set(8,15-r-1+1,a,!0):n.set(8,15-r-1,a,!0);n.set(i-8,8,1,!0)}function g(n,e,t){const o=new r;t.forEach(function(e){o.put(e.mode.bit,4),o.put(e.getLength(),m.getCharCountIndicator(e.mode,n)),e.write(o)});const a=8*(i.getSymbolTotalCodewords(n)-c.getTotalCodewordsCount(n,e));for(o.getLengthInBits()+4<=a&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(0);const s=(a-o.getLengthInBits())/8;for(let n=0;n<s;n++)o.put(n%2?17:236,8);return function(n,e,t){const o=i.getSymbolTotalCodewords(e),r=c.getTotalCodewordsCount(e,t),a=o-r,s=c.getBlocksCount(e,t),l=o%s,d=s-l,u=Math.floor(o/s),p=Math.floor(a/s),m=p+1,f=u-p,h=new A(f);let g=0;const C=new Array(s),b=new Array(s);let B=0;const E=new Uint8Array(n.buffer);for(let n=0;n<s;n++){const e=n<d?p:m;C[n]=E.slice(g,g+e),b[n]=h.encode(C[n]),g+=e,B=Math.max(B,e)}const v=new Uint8Array(o);let w,y,x=0;for(w=0;w<B;w++)for(y=0;y<s;y++)w<C[y].length&&(v[x++]=C[y][w]);for(w=0;w<f;w++)for(y=0;y<s;y++)v[x++]=b[y][w];return v}(o,n,e)}function C(n,e,t,o){let r;if(Array.isArray(n))r=f.fromArray(n);else{if("string"!=typeof n)throw new Error("Invalid data");{let i=e;if(!i){const e=f.rawSplit(n);i=u.getBestVersionForData(e,t)}r=f.fromString(n,i||40)}}const c=u.getBestVersionForData(r,t);if(!c)throw new Error("The amount of data is too big to be stored in a QR Code");if(e){if(e<c)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+c+".\n")}else e=c;const A=g(e,t,r),p=i.getSymbolSize(e),m=new a(p);return function(n,e){const t=n.size,i=l.getPositions(e);for(let e=0;e<i.length;e++){const o=i[e][0],r=i[e][1];for(let e=-1;e<=7;e++)if(!(o+e<=-1||t<=o+e))for(let i=-1;i<=7;i++)r+i<=-1||t<=r+i||(e>=0&&e<=6&&(0===i||6===i)||i>=0&&i<=6&&(0===e||6===e)||e>=2&&e<=4&&i>=2&&i<=4?n.set(o+e,r+i,!0,!0):n.set(o+e,r+i,!1,!0))}}(m,e),function(n){const e=n.size;for(let t=8;t<e-8;t++){const e=t%2==0;n.set(t,6,e,!0),n.set(6,t,e,!0)}}(m),function(n,e){const t=s.getPositions(e);for(let e=0;e<t.length;e++){const i=t[e][0],o=t[e][1];for(let e=-2;e<=2;e++)for(let t=-2;t<=2;t++)-2===e||2===e||-2===t||2===t||0===e&&0===t?n.set(i+e,o+t,!0,!0):n.set(i+e,o+t,!1,!0)}}(m,e),h(m,t,0),e>=7&&function(n,e){const t=n.size,i=u.getEncodedBits(e);let o,r,a;for(let e=0;e<18;e++)o=Math.floor(e/3),r=e%3+t-8-3,a=1==(i>>e&1),n.set(o,r,a,!0),n.set(r,o,a,!0)}(m,e),function(n,e){const t=n.size;let i=-1,o=t-1,r=7,a=0;for(let s=t-1;s>0;s-=2)for(6===s&&s--;;){for(let t=0;t<2;t++)if(!n.isReserved(o,s-t)){let i=!1;a<e.length&&(i=1==(e[a]>>>r&1)),n.set(o,s-t,i),r--,-1===r&&(a++,r=7)}if(o+=i,o<0||t<=o){o-=i,i=-i;break}}}(m,A),isNaN(o)&&(o=d.getBestMask(m,h.bind(null,m,t))),d.applyMask(o,m),h(m,t,o),{modules:m,version:e,errorCorrectionLevel:t,maskPattern:o,segments:r}}e.create=function(n,e){if(void 0===n||""===n)throw new Error("No input text");let t,r,a=o.M;return void 0!==e&&(a=o.from(e.errorCorrectionLevel,o.M),t=u.from(e.version),r=d.from(e.maskPattern),e.toSJISFunc&&i.setToSJISFunction(e.toSJISFunc)),C(n,t,a,r)}},4764(n,e,t){const i=t(4713);function o(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}o.prototype.initialize=function(n){this.degree=n,this.genPoly=i.generateECPolynomial(this.degree)},o.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const e=new Uint8Array(n.length+this.degree);e.set(n);const t=i.mod(e,this.genPoly),o=this.degree-t.length;if(o>0){const n=new Uint8Array(this.degree);return n.set(t,o),n}return t},n.exports=o},7044(n,e){const t="[0-9]+";let i="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";i=i.replace(/u/g,"\\u");const o="(?:(?![A-Z0-9 $%*+\\-./:]|"+i+")(?:.|[\r\n]))+";e.KANJI=new RegExp(i,"g"),e.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),e.BYTE=new RegExp(o,"g"),e.NUMERIC=new RegExp(t,"g"),e.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");const r=new RegExp("^"+i+"$"),a=new RegExp("^"+t+"$"),s=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");e.testKanji=function(n){return r.test(n)},e.testNumeric=function(n){return a.test(n)},e.testAlphanumeric=function(n){return s.test(n)}},9801(n,e,t){const i=t(208),o=t(4357),r=t(1433),a=t(5822),s=t(4861),l=t(7044),d=t(6886),c=t(6320);function A(n){return unescape(encodeURIComponent(n)).length}function u(n,e,t){const i=[];let o;for(;null!==(o=n.exec(t));)i.push({data:o[0],index:o.index,mode:e,length:o[0].length});return i}function p(n){const e=u(l.NUMERIC,i.NUMERIC,n),t=u(l.ALPHANUMERIC,i.ALPHANUMERIC,n);let o,r;d.isKanjiModeEnabled()?(o=u(l.BYTE,i.BYTE,n),r=u(l.KANJI,i.KANJI,n)):(o=u(l.BYTE_KANJI,i.BYTE,n),r=[]);return e.concat(t,o,r).sort(function(n,e){return n.index-e.index}).map(function(n){return{data:n.data,mode:n.mode,length:n.length}})}function m(n,e){switch(e){case i.NUMERIC:return o.getBitsLength(n);case i.ALPHANUMERIC:return r.getBitsLength(n);case i.KANJI:return s.getBitsLength(n);case i.BYTE:return a.getBitsLength(n)}}function f(n,e){let t;const l=i.getBestModeForData(n);if(t=i.from(e,l),t!==i.BYTE&&t.bit<l.bit)throw new Error('"'+n+'" cannot be encoded with mode '+i.toString(t)+".\n Suggested mode is: "+i.toString(l));switch(t!==i.KANJI||d.isKanjiModeEnabled()||(t=i.BYTE),t){case i.NUMERIC:return new o(n);case i.ALPHANUMERIC:return new r(n);case i.KANJI:return new s(n);case i.BYTE:return new a(n)}}e.fromArray=function(n){return n.reduce(function(n,e){return"string"==typeof e?n.push(f(e,null)):e.data&&n.push(f(e.data,e.mode)),n},[])},e.fromString=function(n,t){const o=function(n){const e=[];for(let t=0;t<n.length;t++){const o=n[t];switch(o.mode){case i.NUMERIC:e.push([o,{data:o.data,mode:i.ALPHANUMERIC,length:o.length},{data:o.data,mode:i.BYTE,length:o.length}]);break;case i.ALPHANUMERIC:e.push([o,{data:o.data,mode:i.BYTE,length:o.length}]);break;case i.KANJI:e.push([o,{data:o.data,mode:i.BYTE,length:A(o.data)}]);break;case i.BYTE:e.push([{data:o.data,mode:i.BYTE,length:A(o.data)}])}}return e}(p(n,d.isKanjiModeEnabled())),r=function(n,e){const t={},o={start:{}};let r=["start"];for(let a=0;a<n.length;a++){const s=n[a],l=[];for(let n=0;n<s.length;n++){const d=s[n],c=""+a+n;l.push(c),t[c]={node:d,lastCount:0},o[c]={};for(let n=0;n<r.length;n++){const a=r[n];t[a]&&t[a].node.mode===d.mode?(o[a][c]=m(t[a].lastCount+d.length,d.mode)-m(t[a].lastCount,d.mode),t[a].lastCount+=d.length):(t[a]&&(t[a].lastCount=d.length),o[a][c]=m(d.length,d.mode)+4+i.getCharCountIndicator(d.mode,e))}}r=l}for(let n=0;n<r.length;n++)o[r[n]].end=0;return{map:o,table:t}}(o,t),a=c.find_path(r.map,"start","end"),s=[];for(let n=1;n<a.length-1;n++)s.push(r.table[a[n]].node);return e.fromArray(function(n){return n.reduce(function(n,e){const t=n.length-1>=0?n[n.length-1]:null;return t&&t.mode===e.mode?(n[n.length-1].data+=e.data,n):(n.push(e),n)},[])}(s))},e.rawSplit=function(n){return e.fromArray(p(n,d.isKanjiModeEnabled()))}},6886(n,e){let t;const i=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return 4*n+17},e.getSymbolTotalCodewords=function(n){return i[n]},e.getBCHDigit=function(n){let e=0;for(;0!==n;)e++,n>>>=1;return e},e.setToSJISFunction=function(n){if("function"!=typeof n)throw new Error('"toSJISFunc" is not a valid function.');t=n},e.isKanjiModeEnabled=function(){return void 0!==t},e.toSJIS=function(n){return t(n)}},1878(n,e){e.isValid=function(n){return!isNaN(n)&&n>=1&&n<=40}},1427(n,e,t){const i=t(6886),o=t(7518),r=t(9953),a=t(208),s=t(1878),l=i.getBCHDigit(7973);function d(n,e){return a.getCharCountIndicator(n,e)+4}function c(n,e){let t=0;return n.forEach(function(n){const i=d(n.mode,e);t+=i+n.getBitsLength()}),t}e.from=function(n,e){return s.isValid(n)?parseInt(n,10):e},e.getCapacity=function(n,e,t){if(!s.isValid(n))throw new Error("Invalid QR Code version");void 0===t&&(t=a.BYTE);const r=8*(i.getSymbolTotalCodewords(n)-o.getTotalCodewordsCount(n,e));if(t===a.MIXED)return r;const l=r-d(t,n);switch(t){case a.NUMERIC:return Math.floor(l/10*3);case a.ALPHANUMERIC:return Math.floor(l/11*2);case a.KANJI:return Math.floor(l/13);case a.BYTE:default:return Math.floor(l/8)}},e.getBestVersionForData=function(n,t){let i;const o=r.from(t,r.M);if(Array.isArray(n)){if(n.length>1)return function(n,t){for(let i=1;i<=40;i++)if(c(n,i)<=e.getCapacity(i,t,a.MIXED))return i}(n,o);if(0===n.length)return 1;i=n[0]}else i=n;return function(n,t,i){for(let o=1;o<=40;o++)if(t<=e.getCapacity(o,i,n))return o}(i.mode,i.getLength(),o)},e.getEncodedBits=function(n){if(!s.isValid(n)||n<7)throw new Error("Invalid QR Code version");let e=n<<12;for(;i.getBCHDigit(e)-l>=0;)e^=7973<<i.getBCHDigit(e)-l;return n<<12|e}},7899(n,e,t){const i=t(2726);e.render=function(n,e,t){let o=t,r=e;void 0!==o||e&&e.getContext||(o=e,e=void 0),e||(r=function(){try{return document.createElement("canvas")}catch(n){throw new Error("You need to specify a canvas element")}}()),o=i.getOptions(o);const a=i.getImageWidth(n.modules.size,o),s=r.getContext("2d"),l=s.createImageData(a,a);return i.qrToImageData(l.data,n,o),function(n,e,t){n.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=t,e.width=t,e.style.height=t+"px",e.style.width=t+"px"}(s,r,a),s.putImageData(l,0,0),r},e.renderToDataURL=function(n,t,i){let o=i;void 0!==o||t&&t.getContext||(o=t,t=void 0),o||(o={});const r=e.render(n,t,o),a=o.type||"image/png",s=o.rendererOpts||{};return r.toDataURL(a,s.quality)}},6756(n,e,t){const i=t(2726);function o(n,e){const t=n.a/255,i=e+'="'+n.hex+'"';return t<1?i+" "+e+'-opacity="'+t.toFixed(2).slice(1)+'"':i}function r(n,e,t){let i=n+e;return void 0!==t&&(i+=" "+t),i}e.render=function(n,e,t){const a=i.getOptions(e),s=n.modules.size,l=n.modules.data,d=s+2*a.margin,c=a.color.light.a?"<path "+o(a.color.light,"fill")+' d="M0 0h'+d+"v"+d+'H0z"/>':"",A="<path "+o(a.color.dark,"stroke")+' d="'+function(n,e,t){let i="",o=0,a=!1,s=0;for(let l=0;l<n.length;l++){const d=Math.floor(l%e),c=Math.floor(l/e);d||a||(a=!0),n[l]?(s++,l>0&&d>0&&n[l-1]||(i+=a?r("M",d+t,.5+c+t):r("m",o,0),o=0,a=!1),d+1<e&&n[l+1]||(i+=r("h",s),s=0)):o++}return i}(l,s,a.margin)+'"/>',u='viewBox="0 0 '+d+" "+d+'"',p='<svg xmlns="http://www.w3.org/2000/svg" '+(a.width?'width="'+a.width+'" height="'+a.width+'" ':"")+u+' shape-rendering="crispEdges">'+c+A+"</svg>\n";return"function"==typeof t&&t(null,p),p}},2726(n,e){function t(n){if("number"==typeof n&&(n=n.toString()),"string"!=typeof n)throw new Error("Color should be defined as hex string");let e=n.slice().replace("#","").split("");if(e.length<3||5===e.length||e.length>8)throw new Error("Invalid hex color: "+n);3!==e.length&&4!==e.length||(e=Array.prototype.concat.apply([],e.map(function(n){return[n,n]}))),6===e.length&&e.push("F","F");const t=parseInt(e.join(""),16);return{r:t>>24&255,g:t>>16&255,b:t>>8&255,a:255&t,hex:"#"+e.slice(0,6).join("")}}e.getOptions=function(n){n||(n={}),n.color||(n.color={});const e=void 0===n.margin||null===n.margin||n.margin<0?4:n.margin,i=n.width&&n.width>=21?n.width:void 0,o=n.scale||4;return{width:i,scale:i?4:o,margin:e,color:{dark:t(n.color.dark||"#000000ff"),light:t(n.color.light||"#ffffffff")},type:n.type,rendererOpts:n.rendererOpts||{}}},e.getScale=function(n,e){return e.width&&e.width>=n+2*e.margin?e.width/(n+2*e.margin):e.scale},e.getImageWidth=function(n,t){const i=e.getScale(n,t);return Math.floor((n+2*t.margin)*i)},e.qrToImageData=function(n,t,i){const o=t.modules.size,r=t.modules.data,a=e.getScale(o,i),s=Math.floor((o+2*i.margin)*a),l=i.margin*a,d=[i.color.light,i.color.dark];for(let e=0;e<s;e++)for(let t=0;t<s;t++){let c=4*(e*s+t),A=i.color.light;if(e>=l&&t>=l&&e<s-l&&t<s-l){A=d[r[Math.floor((e-l)/a)*o+Math.floor((t-l)/a)]?1:0]}n[c++]=A.r,n[c++]=A.g,n[c++]=A.b,n[c]=A.a}}},5072(n){"use strict";var e=[];function t(n){for(var t=-1,i=0;i<e.length;i++)if(e[i].identifier===n){t=i;break}return t}function i(n,i){for(var r={},a=[],s=0;s<n.length;s++){var l=n[s],d=i.base?l[0]+i.base:l[0],c=r[d]||0,A="".concat(d," ").concat(c);r[d]=c+1;var u=t(A),p={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==u)e[u].references++,e[u].updater(p);else{var m=o(p,i);i.byIndex=s,e.splice(s,0,{identifier:A,updater:m,references:1})}a.push(A)}return a}function o(n,e){var t=e.domAPI(e);t.update(n);return function(e){if(e){if(e.css===n.css&&e.media===n.media&&e.sourceMap===n.sourceMap&&e.supports===n.supports&&e.layer===n.layer)return;t.update(n=e)}else t.remove()}}n.exports=function(n,o){var r=i(n=n||[],o=o||{});return function(n){n=n||[];for(var a=0;a<r.length;a++){var s=t(r[a]);e[s].references--}for(var l=i(n,o),d=0;d<r.length;d++){var c=t(r[d]);0===e[c].references&&(e[c].updater(),e.splice(c,1))}r=l}}},7659(n){"use strict";var e={};n.exports=function(n,t){var i=function(n){if(void 0===e[n]){var t=document.querySelector(n);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(n){t=null}e[n]=t}return e[n]}(n);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(t)}},540(n){"use strict";n.exports=function(n){var e=document.createElement("style");return n.setAttributes(e,n.attributes),n.insert(e,n.options),e}},5056(n,e,t){"use strict";n.exports=function(n){var e=t.nc;e&&n.setAttribute("nonce",e)}},7825(n){"use strict";n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=n.insertStyleElement(n);return{update:function(t){!function(n,e,t){var i="";t.supports&&(i+="@supports (".concat(t.supports,") {")),t.media&&(i+="@media ".concat(t.media," {"));var o=void 0!==t.layer;o&&(i+="@layer".concat(t.layer.length>0?" ".concat(t.layer):""," {")),i+=t.css,o&&(i+="}"),t.media&&(i+="}"),t.supports&&(i+="}");var r=t.sourceMap;r&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleTagTransform(i,n,e.options)}(e,n,t)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(e)}}}},1113(n){"use strict";n.exports=function(n,e){if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}},6077(n){n.exports=function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){"use strict";t.r(e),t.d(e,"validateHTMLColorName",function(){return a}),t.d(e,"validateHTMLColorSpecialName",function(){return s}),t.d(e,"validateHTMLColorHex",function(){return l}),t.d(e,"validateHTMLColorRgb",function(){return f}),t.d(e,"validateHTMLColorHsl",function(){return h}),t.d(e,"validateHTMLColorHwb",function(){return g}),t.d(e,"validateHTMLColorLab",function(){return C}),t.d(e,"validateHTMLColorLch",function(){return b}),t.d(e,"validateHTMLColor",function(){return B});const i=n=>n&&"string"==typeof n,o=["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenrod","DarkGray","DarkGrey","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkSlateGrey","DarkTurquoise","DarkViolet","DeepPink","DeepSkyBlue","DimGray","DimGrey","DodgerBlue","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","Goldenrod","Gray","Grey","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenrodYellow","LightGray","LightGrey","LightGreen","LightPink","LightSalmon","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSlateGrey","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquamarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenrod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","RebeccaPurple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","SlateGrey","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","Wheat","White","WhiteSmoke","Yellow","YellowGreen"],r=["currentColor","inherit","transparent"],a=n=>{let e=!1;return i(n)&&o.map(t=>(n.toLowerCase()===t.toLowerCase()&&(e=!0),null)),e},s=n=>{let e=!1;return i(n)&&r.map(t=>(n.toLowerCase()===t.toLowerCase()&&(e=!0),null)),e},l=n=>{if(i(n)){return n&&/^#([\da-f]{3}){1,2}$|^#([\da-f]{4}){1,2}$/i.test(n)}return!1},d="(([\\d]{0,5})((\\.([\\d]{1,5}))?))",c=`(${d}%)`,A="(([0-9]|[1-9][0-9]|100)%)",u=`(${A}|(0?((\\.([\\d]{1,5}))?))|1)`,p=`([\\s]{0,5})\\)?)(([\\s]{0,5})(\\/?)([\\s]{1,5})(((${A}))|(0?((\\.([\\d]{1,5}))?))|1))?([\\s]{0,5})\\)`,m="(-?(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|3[0-5][0-9])((\\.([\\d]{1,5}))?)|360)(deg)?)",f=n=>{if(i(n)){const e="([\\s]{0,5})([\\d]{1,5})%?([\\s]{0,5}),?",t="((([\\s]{0,5}),?([\\s]{0,5}))|(([\\s]{1,5})))",i=new RegExp(`^(rgb)a?\\(${e}${t}${e}${t}${e}${t}((\\/?([\\s]{0,5})(0?\\.?([\\d]{1,5})%?([\\s]{0,5}))?|1|0))?\\)$`);return n&&i.test(n)}return!1},h=n=>{if(i(n)){const e=new RegExp(`^(hsl)a?\\((([\\s]{0,5})(${m}|(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|3[0-9][0-9]|400)grad)|((([0-5])?\\.([\\d]{1,5})|6\\.([0-9]|1[0-9]|2[0-8])|[0-6])rad)|((0?((\\.([\\d]{1,5}))?)|1)turn))((([\\s]{0,5}),([\\s]{0,5}))|(([\\s]{1,5}))))(([\\s]{0,5})(0|${A})((([\\s]{0,5}),([\\s]{0,5}))|(([\\s]{1,5}))))(([\\s]{0,5})(0|${A})([\\s]{0,5})\\)?)(([\\s]{0,5})(\\/?|,?)([\\s]{0,5})(((${A}))|(0?((\\.([\\d]{1,5}))?))|1))?\\)$`);return n&&e.test(n)}return!1},g=n=>{if(i(n)){const e=new RegExp(`^(hwb\\(([\\s]{0,5})${m}([\\s]{1,5}))((0|${A})([\\s]{1,5}))((0|${A})${p}$`);return n&&e.test(n)}return!1},C=n=>{if(i(n)){const e="(-?(([0-9]|[1-9][0-9]|1[0-5][0-9])((\\.([\\d]{1,5}))?)?|160))",t=new RegExp(`^(lab\\(([\\s]{0,5})${c}([\\s]{1,5})${e}([\\s]{1,5})${e}${p}$`);return n&&t.test(n)}return!1},b=n=>{if(i(n)){const e=new RegExp(`^lch\\((([\\s]{0,5})${"((([0-9]|[1-9][0-9])?((\\.([\\d]{1,5}))?)|100)(%)?)"}([\\s]{1,5})${""+d}([\\s]{1,5})${`((${m})|(0|${u})|(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|3[0-5][0-9])((\\.([\\d]{1,5}))?)|360))`}([\\s]{0,5})(${`(\\/([\\s]{0,5})${u})`})?)\\)$`);return n&&e.test(n)}return!1},B=n=>!!(n&&l(n)||f(n)||h(n)||g(n)||C(n)||b(n));e.default=n=>!!(n&&l(n)||a(n)||s(n)||f(n)||h(n)||g(n)||C(n)||b(n))}])},5663(n){"use strict";n.exports=e},9426(e){"use strict";e.exports=n},5491(n){"use strict";n.exports=t}},o={};function r(n){var e=o[n];if(void 0!==e)return e.exports;var t=o[n]={id:n,exports:{}};return i[n](t,t.exports,r),t.exports}r.n=n=>{var e=n&&n.__esModule?()=>n.default:()=>n;return r.d(e,{a:e}),e},r.d=(n,e)=>{for(var t in e)r.o(e,t)&&!r.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},r.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),r.nc=void 0;var a={};return(()=>{"use strict";r.d(a,{default:()=>Ze});var n=r(5072),e=r.n(n),t=r(7825),i=r.n(t),o=r(7659),s=r.n(o),l=r(5056),d=r.n(l),c=r(540),A=r.n(c),u=r(1113),p=r.n(u),m=r(1267),f={};f.styleTagTransform=p(),f.setAttributes=d(),f.insert=s().bind(null,"head"),f.domAPI=i(),f.insertStyleElement=A();e()(m.A,f);m.A&&m.A.locals&&m.A.locals;var h=r(3750),g={};g.styleTagTransform=p(),g.setAttributes=d(),g.insert=s().bind(null,"head"),g.domAPI=i(),g.insertStyleElement=A();e()(h.A,g);h.A&&h.A.locals&&h.A.locals;var C=r(1666),b={};b.styleTagTransform=p(),b.setAttributes=d(),b.insert=s().bind(null,"head"),b.domAPI=i(),b.insertStyleElement=A();e()(C.A,b);C.A&&C.A.locals&&C.A.locals;var B=r(1937),E={};E.styleTagTransform=p(),E.setAttributes=d(),E.insert=s().bind(null,"head"),E.domAPI=i(),E.insertStyleElement=A();e()(B.A,E);B.A&&B.A.locals&&B.A.locals;var v=r(436),w={};w.styleTagTransform=p(),w.setAttributes=d(),w.insert=s().bind(null,"head"),w.domAPI=i(),w.insertStyleElement=A();e()(v.A,w);v.A&&v.A.locals&&v.A.locals;var y=r(1134),x={};x.styleTagTransform=p(),x.setAttributes=d(),x.insert=s().bind(null,"head"),x.domAPI=i(),x.insertStyleElement=A();e()(y.A,x);y.A&&y.A.locals&&y.A.locals;var k=r(1649),S={};S.styleTagTransform=p(),S.setAttributes=d(),S.insert=s().bind(null,"head"),S.domAPI=i(),S.insertStyleElement=A();e()(k.A,S);k.A&&k.A.locals&&k.A.locals;var F=r(6660),$={};$.styleTagTransform=p(),$.setAttributes=d(),$.insert=s().bind(null,"head"),$.domAPI=i(),$.insertStyleElement=A();e()(F.A,$);F.A&&F.A.locals&&F.A.locals;var I=r(5092),T={};T.styleTagTransform=p(),T.setAttributes=d(),T.insert=s().bind(null,"head"),T.domAPI=i(),T.insertStyleElement=A();e()(I.A,T);I.A&&I.A.locals&&I.A.locals;const L=globalThis,_=n=>n,N=L.trustedTypes,P=N?N.createPolicy("lit-html",{createHTML:n=>n}):void 0,D="$lit$",R=`lit$${Math.random().toFixed(9).slice(2)}$`,z="?"+R,M=`<${z}>`,O=document,U=()=>O.createComment(""),H=n=>null===n||"object"!=typeof n&&"function"!=typeof n,q=Array.isArray,G=n=>q(n)||"function"==typeof n?.[Symbol.iterator],j="[ \t\n\f\r]",W=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,V=/-->/g,Y=/>/g,Q=RegExp(`>|${j}(?:([^\\s"'>=/]+)(${j}*=${j}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),Z=/'/g,J=/"/g,K=/^(?:script|style|textarea|title)$/i,X=n=>(e,...t)=>({_$litType$:n,strings:e,values:t}),nn=X(1),en=(X(2),X(3),Symbol.for("lit-noChange")),tn=Symbol.for("lit-nothing"),on=new WeakMap,rn=O.createTreeWalker(O,129);function an(n,e){if(!q(n)||!n.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==P?P.createHTML(e):e}const sn=(n,e)=>{const t=n.length-1,i=[];let o,r=2===e?"<svg>":3===e?"<math>":"",a=W;for(let e=0;e<t;e++){const t=n[e];let s,l,d=-1,c=0;for(;c<t.length&&(a.lastIndex=c,l=a.exec(t),null!==l);)c=a.lastIndex,a===W?"!--"===l[1]?a=V:void 0!==l[1]?a=Y:void 0!==l[2]?(K.test(l[2])&&(o=RegExp("</"+l[2],"g")),a=Q):void 0!==l[3]&&(a=Q):a===Q?">"===l[0]?(a=o??W,d=-1):void 0===l[1]?d=-2:(d=a.lastIndex-l[2].length,s=l[1],a=void 0===l[3]?Q:'"'===l[3]?J:Z):a===J||a===Z?a=Q:a===V||a===Y?a=W:(a=Q,o=void 0);const A=a===Q&&n[e+1].startsWith("/>")?" ":"";r+=a===W?t+M:d>=0?(i.push(s),t.slice(0,d)+D+t.slice(d)+R+A):t+R+(-2===d?e:A)}return[an(n,r+(n[t]||"<?>")+(2===e?"</svg>":3===e?"</math>":"")),i]};class ln{constructor({strings:n,_$litType$:e},t){let i;this.parts=[];let o=0,r=0;const a=n.length-1,s=this.parts,[l,d]=sn(n,e);if(this.el=ln.createElement(l,t),rn.currentNode=this.el.content,2===e||3===e){const n=this.el.content.firstChild;n.replaceWith(...n.childNodes)}for(;null!==(i=rn.nextNode())&&s.length<a;){if(1===i.nodeType){if(i.hasAttributes())for(const n of i.getAttributeNames())if(n.endsWith(D)){const e=d[r++],t=i.getAttribute(n).split(R),a=/([.?@])?(.*)/.exec(e);s.push({type:1,index:o,name:a[2],strings:t,ctor:"."===a[1]?pn:"?"===a[1]?mn:"@"===a[1]?fn:un}),i.removeAttribute(n)}else n.startsWith(R)&&(s.push({type:6,index:o}),i.removeAttribute(n));if(K.test(i.tagName)){const n=i.textContent.split(R),e=n.length-1;if(e>0){i.textContent=N?N.emptyScript:"";for(let t=0;t<e;t++)i.append(n[t],U()),rn.nextNode(),s.push({type:2,index:++o});i.append(n[e],U())}}}else if(8===i.nodeType)if(i.data===z)s.push({type:2,index:o});else{let n=-1;for(;-1!==(n=i.data.indexOf(R,n+1));)s.push({type:7,index:o}),n+=R.length-1}o++}}static createElement(n,e){const t=O.createElement("template");return t.innerHTML=n,t}}function dn(n,e,t=n,i){if(e===en)return e;let o=void 0!==i?t._$Co?.[i]:t._$Cl;const r=H(e)?void 0:e._$litDirective$;return o?.constructor!==r&&(o?._$AO?.(!1),void 0===r?o=void 0:(o=new r(n),o._$AT(n,t,i)),void 0!==i?(t._$Co??=[])[i]=o:t._$Cl=o),void 0!==o&&(e=dn(n,o._$AS(n,e.values),o,i)),e}class cn{constructor(n,e){this._$AV=[],this._$AN=void 0,this._$AD=n,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(n){const{el:{content:e},parts:t}=this._$AD,i=(n?.creationScope??O).importNode(e,!0);rn.currentNode=i;let o=rn.nextNode(),r=0,a=0,s=t[0];for(;void 0!==s;){if(r===s.index){let e;2===s.type?e=new An(o,o.nextSibling,this,n):1===s.type?e=new s.ctor(o,s.name,s.strings,this,n):6===s.type&&(e=new hn(o,this,n)),this._$AV.push(e),s=t[++a]}r!==s?.index&&(o=rn.nextNode(),r++)}return rn.currentNode=O,i}p(n){let e=0;for(const t of this._$AV)void 0!==t&&(void 0!==t.strings?(t._$AI(n,t,e),e+=t.strings.length-2):t._$AI(n[e])),e++}}class An{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(n,e,t,i){this.type=2,this._$AH=tn,this._$AN=void 0,this._$AA=n,this._$AB=e,this._$AM=t,this.options=i,this._$Cv=i?.isConnected??!0}get parentNode(){let n=this._$AA.parentNode;const e=this._$AM;return void 0!==e&&11===n?.nodeType&&(n=e.parentNode),n}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(n,e=this){n=dn(this,n,e),H(n)?n===tn||null==n||""===n?(this._$AH!==tn&&this._$AR(),this._$AH=tn):n!==this._$AH&&n!==en&&this._(n):void 0!==n._$litType$?this.$(n):void 0!==n.nodeType?this.T(n):G(n)?this.k(n):this._(n)}O(n){return this._$AA.parentNode.insertBefore(n,this._$AB)}T(n){this._$AH!==n&&(this._$AR(),this._$AH=this.O(n))}_(n){this._$AH!==tn&&H(this._$AH)?this._$AA.nextSibling.data=n:this.T(O.createTextNode(n)),this._$AH=n}$(n){const{values:e,_$litType$:t}=n,i="number"==typeof t?this._$AC(n):(void 0===t.el&&(t.el=ln.createElement(an(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{const n=new cn(i,this),t=n.u(this.options);n.p(e),this.T(t),this._$AH=n}}_$AC(n){let e=on.get(n.strings);return void 0===e&&on.set(n.strings,e=new ln(n)),e}k(n){q(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let t,i=0;for(const o of n)i===e.length?e.push(t=new An(this.O(U()),this.O(U()),this,this.options)):t=e[i],t._$AI(o),i++;i<e.length&&(this._$AR(t&&t._$AB.nextSibling,i),e.length=i)}_$AR(n=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);n!==this._$AB;){const e=_(n).nextSibling;_(n).remove(),n=e}}setConnected(n){void 0===this._$AM&&(this._$Cv=n,this._$AP?.(n))}}class un{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(n,e,t,i,o){this.type=1,this._$AH=tn,this._$AN=void 0,this.element=n,this.name=e,this._$AM=i,this.options=o,t.length>2||""!==t[0]||""!==t[1]?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=tn}_$AI(n,e=this,t,i){const o=this.strings;let r=!1;if(void 0===o)n=dn(this,n,e,0),r=!H(n)||n!==this._$AH&&n!==en,r&&(this._$AH=n);else{const i=n;let a,s;for(n=o[0],a=0;a<o.length-1;a++)s=dn(this,i[t+a],e,a),s===en&&(s=this._$AH[a]),r||=!H(s)||s!==this._$AH[a],s===tn?n=tn:n!==tn&&(n+=(s??"")+o[a+1]),this._$AH[a]=s}r&&!i&&this.j(n)}j(n){n===tn?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,n??"")}}class pn extends un{constructor(){super(...arguments),this.type=3}j(n){this.element[this.name]=n===tn?void 0:n}}class mn extends un{constructor(){super(...arguments),this.type=4}j(n){this.element.toggleAttribute(this.name,!!n&&n!==tn)}}class fn extends un{constructor(n,e,t,i,o){super(n,e,t,i,o),this.type=5}_$AI(n,e=this){if((n=dn(this,n,e,0)??tn)===en)return;const t=this._$AH,i=n===tn&&t!==tn||n.capture!==t.capture||n.once!==t.once||n.passive!==t.passive,o=n!==tn&&(t===tn||i);i&&this.element.removeEventListener(this.name,this,t),o&&this.element.addEventListener(this.name,this,n),this._$AH=n}handleEvent(n){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,n):this._$AH.handleEvent(n)}}class hn{constructor(n,e,t){this.element=n,this.type=6,this._$AN=void 0,this._$AM=e,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(n){dn(this,n)}}const gn={M:D,P:R,A:z,C:1,L:sn,R:cn,D:G,V:dn,I:An,H:un,N:mn,U:fn,B:pn,F:hn},Cn=L.litHtmlPolyfillSupport;Cn?.(ln,An),(L.litHtmlVersions??=[]).push("3.3.2");var bn=r(9426),Bn=r(5663);const{I:En}=gn,vn=2;class wn{constructor(n){}get _$AU(){return this._$AM._$AU}_$AT(n,e,t){this._$Ct=n,this._$AM=e,this._$Ci=t}_$AS(n,e){return this.update(n,e)}update(n,e){return this.render(...e)}}const yn=(n,e)=>{const t=n._$AN;if(void 0===t)return!1;for(const n of t)n._$AO?.(e,!1),yn(n,e);return!0},xn=n=>{let e,t;do{if(void 0===(e=n._$AM))break;t=e._$AN,t.delete(n),n=e}while(0===t?.size)},kn=n=>{for(let e;e=n._$AM;n=e){let t=e._$AN;if(void 0===t)e._$AN=t=new Set;else if(t.has(n))break;t.add(n),$n(e)}};function Sn(n){void 0!==this._$AN?(xn(this),this._$AM=n,kn(this)):this._$AM=n}function Fn(n,e=!1,t=0){const i=this._$AH,o=this._$AN;if(void 0!==o&&0!==o.size)if(e)if(Array.isArray(i))for(let n=t;n<i.length;n++)yn(i[n],!1),xn(i[n]);else null!=i&&(yn(i,!1),xn(i));else yn(this,n)}const $n=n=>{n.type==vn&&(n._$AP??=Fn,n._$AQ??=Sn)};class In extends wn{constructor(){super(...arguments),this._$AN=void 0}_$AT(n,e,t){super._$AT(n,e,t),kn(this),this.isConnected=n._$AU}_$AO(n,e=!0){n!==this.isConnected&&(this.isConnected=n,n?this.reconnected?.():this.disconnected?.()),e&&(yn(this,n),xn(this))}setValue(n){if((n=>void 0===n.strings)(this._$Ct))this._$Ct._$AI(n,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=n,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}class Tn{constructor(n){this.G=n}disconnect(){this.G=void 0}reconnect(n){this.G=n}deref(){return this.G}}class Ln{constructor(){this.Y=void 0,this.Z=void 0}get(){return this.Y}pause(){this.Y??=new Promise(n=>this.Z=n)}resume(){this.Z?.(),this.Y=this.Z=void 0}}const _n=(n=>(...e)=>({_$litDirective$:n,values:e}))(class extends In{constructor(){super(...arguments),this._$CK=new Tn(this),this._$CX=new Ln}render(n,e){return en}update(n,[e,t]){if(this.isConnected||this.disconnected(),e===this._$CJ)return en;this._$CJ=e;let i=0;const{_$CK:o,_$CX:r}=this;return(async(n,e)=>{for await(const t of n)if(!1===await e(t))return})(e,async n=>{for(;r.get();)await r.get();const a=o.deref();if(void 0!==a){if(a._$CJ!==e)return!1;void 0!==t&&(n=t(n,i)),a.commitValue(n,i),i++}return!0}),en}commitValue(n,e){this.setValue(n)}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}}),Nn="Current user not found! Not logged in?",Pn="Add me to your friends",Dn="Login to add me to your friends",Rn="Login to chat with me",zn="Chat with me",Mn="Resume",On="Social accounts",Un="Friends";function Hn(n,e,t){const i=bn.widgets.errorMessageBlock(e.dom,t);i.setAttribute("role","alert"),i.setAttribute("aria-live","assertive"),i.setAttribute("tabindex","0"),setTimeout(()=>{i.focus()},100),n.appendChild(i)}function qn(n){for(;n.childNodes.length>2;)n.removeChild(n.lastChild)}function Gn(n){return!!n}var jn=r(5491);let Wn=document.createElement("section");const Vn=(n,e)=>{let t=Qn(Bn.authn.currentUser())?Pn.toUpperCase():Dn.toUpperCase();const i=bn.widgets.button(e.dom,void 0,t,function(t){t.preventDefault(),Yn(n,e,bn.ns.foaf("knows")).then(()=>{qn(Wn),function(n,e){const t=document.createElement("div");t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.setAttribute("tabindex","0"),t.classList.add("actionButton","licOkay"),t.innerHTML=e,setTimeout(()=>{t.focus()},100),n.appendChild(t)}(Wn,"Friend was added!"),o()}).catch(n=>{qn(Wn),Hn(Wn,e,n)})},{needsBorder:!0});function o(){const t=Bn.authn.currentUser(),o=e.session.store;Qn(t)?Zn(o,t,n,bn.ns.foaf("knows")).then(n=>{i.innerHTML=n?"Already part of friends".toUpperCase():Pn.toUpperCase()}):i.innerHTML=Dn.toUpperCase()}return i.refresh=o(),i};async function Yn(n,e,t){const i=Bn.authn.currentUser(),o=e.session.store;if(!Qn(i))throw new Error(Nn);if(await Zn(o,i,n,t))throw new Error("Friend already exists");{await o.fetcher.load(i);const e=o.updater,r=[(0,jn.st)(i,t,n,i.doc())];try{await e.update([],r)}catch(n){let e=n;throw e.toString().includes("Unauthenticated")&&(e=Nn),new Error(e)}}}function Qn(n){return!!n}async function Zn(n,e,t,i){return await n.fetcher.load(e),0!==n.whether(e,i,t,e.doc())}const Jn=(n,e)=>{var t;const i=function(n,e,{dom:t}){const i=t.createElement("div");return console.log("Extracting friends for subject:",e.doc()),bn.widgets.attachmentList(t,e,i,{doc:e.doc(),modify:n,predicate:bn.ns.foaf("knows"),noun:"friend"}),""===i.textContent?null:(console.log("Extracted friends:",i.innerHTML),i)}(!1,n,e);return i&&(null===(t=i.textContent)||void 0===t?void 0:t.trim())?nn`
2
- <section
3
- class="friendListSection"
4
- data-testid="friend-list"
5
- >
6
- <h2 id="friends-section-title" class="sr-only">Friends</h2>
7
- <nav aria-label="Friend profiles">
8
- <ul class="list-reset zebra-stripe" role="list">
9
- ${i}
10
- </ul>
11
- </nav>
12
- </section>
13
- `:null};var Kn=r(6077);const Xn=(n,e)=>{const t=bn.utils.label(n),i=bn.widgets.findImage(n),o=e.anyValue(n,bn.ns.vcard("role")),r=e.anyValue(n,bn.ns.vcard("organization-name")),a=e.any(n,bn.ns.vcard("hasAddress")),s=null!=a?e.anyValue(a,bn.ns.vcard("country-name")):null,l=null!=a?e.anyValue(a,bn.ns.vcard("locality")):null,{backgroundColor:d,highlightColor:c}=function(n,e){const t=e.anyValue(n,bn.ns.solid("profileBackgroundColor"),null,n.doc()),i=e.anyValue(n,bn.ns.solid("profileHighlightColor"),null,n.doc());return{backgroundColor:te(t,""),highlightColor:te(i,"")}}(n,e),A=function(n){let e=Bn.store.anyJS(n,bn.ns.solid("preferredSubjectPronoun"))||"";if(e){const t=Bn.store.anyJS(n,bn.ns.solid("preferredObjectPronoun"));if(t){e+="/"+t;const i=Bn.store.anyJS(n,bn.ns.solid("preferredRelativePronoun"));i&&(e+="/"+i)}e=" ("+e+") "}return e||""}(n);return{name:t,imageSrc:i,introduction:ee(o,r),location:ne(s,l),backgroundColor:d,pronouns:A,highlightColor:c}};function ne(n,e){return n&&e?`${e}, ${n}`:n||e||null}function ee(n,e){return n&&e?`${n} at ${e}`:e||n||null}function te(n,e){return n&&(0,Kn.validateHTMLColorHex)(n)?n:e}const ie=(0,jn.Namespace)("http://www.w3.org/ns/org#"),oe=["PastRole","CurrentRole","FutureRole"];function re(n,e){return n?"("+n.value.slice(0,10)+" to "+(e?e.value.slice(0,10):"")+")":""}function ae(n,e){const t=e.elements;if(Array.isArray(t))return t.flatMap(e=>ae(n,e));if(!n.any(e,bn.ns.rdf("first")))return[e];const i=[];let o=e;for(;o;){const e=n.any(o,bn.ns.rdf("first"));e&&i.push(...ae(n,e));const t=n.any(o,bn.ns.rdf("rest"));if(!t||"NamedNode"===t.termType&&t.value===bn.ns.rdf("nil").value)break;o=t}return i}function se(n,e){const t=function(n,e){const t=n.each(null,ie("member"),e,null),i={PastRole:[],CurrentRole:[],FutureRole:[]};for(const e of t){let t,o,r,a,s;const l=n.any(e,bn.ns.schema("startDate")),d=n.any(e,bn.ns.schema("endDate")),c=re(l,d),A=n.any(e,ie("organization"));A&&(o=n.anyJS(A,bn.ns.schema("name")),t=n.any(A,bn.ns.schema("uri")),s=n.any(A,bn.ns.solid("publicId"))),s&&(r=n.anyJS(s,bn.ns.schema("name")));const u=r||o,p=n.any(e,ie("role"));p&&(a=n.anyJS(p,bn.ns.schema("name")));const m=n.anyJS(e,bn.ns.vcard("role")),f={startDate:l,endDate:d,orgName:u,roleText:m&&a?a+" - "+m:m||a,dates:c,orgHomePage:t};for(const t of oe)n.holds(e,bn.ns.rdf("type"),bn.ns.solid(t))&&i[t].push(f)}return i}(e,n);for(const n of oe)t[n].sort(function(n,e){return n.endDate&&e.endDate?n.endDate>e.endDate?-1:1:n.startDate>e.startDate?-1:1});const i=e.each(n,bn.ns.schema("skills")).map(n=>function(n,e){if("Literal"===e.termType)return e.value;const t=n.anyJS(e,bn.ns.solid("publicId"));if(t){const e=n.anyJS(t,bn.ns.schema("name"));if(e)return e}const i=n.anyJS(e,bn.ns.vcard("role"));return i&&i[0]>""?i:""}(e,n)).filter(n=>""!==n),o=e.each(n,bn.ns.schema("knowsLanguage")).flatMap(n=>ae(e,n)).map(n=>function(n,e){if("Literal"===e.termType)return e.value;const t=n.anyJS(e,bn.ns.solid("publicId"));return t?bn.utils.label(t,!0):""}(e,n));return{rolesByType:t,skills:i,languages:Array.from(new Set(o))}}const le='@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix solid: <http://www.w3.org/ns/solid/terms#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix schema: <http://schema.org/>.\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix org: <http://www.w3.org/ns/org#>.\n@prefix : <#>.\n\n########### ATTENTION - we cannot rename this ontology file name without migrating existing data on existing accounts\n\n########### Social Media - other accounts\n#\n# Twitter, linked In, Orkid, Mastodon, Matrix, Bluesky, Instagram, Facebook, Github,\n# Snapchat, TikTok, etc\n\n:this\n <http://purl.org/dc/elements/1.1/title> "Social media form" ;\n a ui:Form ;\n ui:parts (\n :SocialsForm\n ).\n\n:SocialsForm a ui:Multiple;\n ui:label "online account";\n ui:property foaf:account; # the triple is created with the foaf:acccounts predicate\n ui:ordered true; # Allow user to order occounts most important first.\n ui:part :AccountsForm.\n\n:AccountsForm a ui:Group; \n ui:weight 1; \n ui:parts ( \n :AccountField \n :AccountIdField ).\n\n:AccountField a ui:Classifier; \n ui:label "Account"@en;\n ui:multiple false ; \n ui:category foaf:Account. # the accounts are described by the foaf:Account predicate\n\n# this is what is needed to make a dropdown box\nfoaf:Account a rdfs:Class;\n rdfs:label "Online Account Provider";\n owl:disjointUnionOf ( \n :BlueSkyAccount :DiggAccount :FacebookAccount :GithubAccount :InstagramAccount\n :LinkedInAccount :MastodonAccount :MatrixAccount :MediumAccount :NostrAccount \n :OrcidAccount :PinterestAccount :RedditAccount :SnapchatAccount :StravaAccount \n :TiktokAccount :TumblrAccount :TwitterAccount :OtherAccount) .\n\n:AccountIdField a ui:Options; \n ui:dependingOn rdf:type; \n ui:case\n [ ui:for :BlueSkyAccount; ui:use :BlueSkyIdField ],\n [ ui:for :DiggAccount; ui:use :DiggIdField],\n [ ui:for :FacebookAccount; ui:use :FacebookIdField ],\n [ ui:for :GithubAccount; ui:use :GithubIdField ],\n [ ui:for :InstagramAccount; ui:use :InstagramIdField ],\n [ ui:for :LinkedInAccount; ui:use :LinkedInIdField ],\n [ ui:for :MastodonAccount; ui:use :MastodonIdField ],\n [ ui:for :MatrixAccount; ui:use :MatrixIdField ],\n [ ui:for :MediumAccount; ui:use :MediumIdField ],\n [ ui:for :NostrAccount; ui:use :NostrIdField ],\n [ ui:for :OrcidAccount; ui:use :OrcidIdField ],\n [ ui:for :PinterestAccount; ui:use :PinterestIdField ],\n [ ui:for :RedditAccount; ui:use :RedditIdField ],\n [ ui:for :StravaAccount; ui:use :StravaIdField ],\n [ ui:for :SnapchatAccount; ui:use :SnapchatIdField ],\n [ ui:for :TiktokAccount; ui:use :TiktokIdField ],\n [ ui:for :TumblrAccount; ui:use :TumblrIdField ],\n [ ui:for :TwitterAccount; ui:use :TwitterIdField ],\n [ ui:for :OtherAccount; ui:use :OtherIdForm ] .\n\n:BlueSkyAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Bluesky";\n foaf:userProfilePrefix "https://bsky.app/profile/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/bluesky-1.svg>;\n foaf:homepage <https://bsky.app/> .\n\n:DiggAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Digg";\n foaf:userProfilePrefix "https://www.digg.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/digg-icon.svg>;\n foaf:homepage <https://www.digg.com/> .\n\n:FacebookAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Facebook";\n foaf:userProfilePrefix "https://www.facebook.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/facebook-2020-2-1.svg>;\n foaf:homepage <https://www.facebook.com/> .\n\n:GithubAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Github";\n foaf:userProfilePrefix "https://www.github.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/github-icon.svg>;\n foaf:homepage <https://github.com/> .\n\n:InstagramAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Instagram";\n foaf:userProfilePrefix "https://www.instagram.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/instagram-2016-5.svg>;\n foaf:homepage <https://www.instagram.com/> .\n\n:LinkedInAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "LinkedIn";\n foaf:userProfilePrefix "https://www.linkedin.com/in/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/linkedin-icon.svg>;\n foaf:homepage <https://linkedin.com/> .\n\n:MastodonAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Mastodon" ;\n foaf:userProfilePrefix "https://mastodon.social/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/mastodon-2.svg>;\n foaf:homepage <https://joinmastodon.org/> .\n\n:MatrixAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Matrix" ;\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/matrix-logo-black.svg> ;\n foaf:userProfilePrefix "https://matrix.to/#/" ;\n foaf:homepage <https://matrix.org/> .\n\n:MediumAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Medium";\n foaf:userProfilePrefix "https://medium.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/medium-logo-wordmark-black.svg>;\n foaf:homepage <https://medium.com/> .\n\n:NostrAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Nostr";\n foaf:userProfilePrefix "https://primal.net/p/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/nostr-icon-purple-on-white.svg>;\n foaf:homepage <https://nostr.net/> .\n\n:OrcidAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "ORCiD";\n foaf:userProfilePrefix "https://orcid.org/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/ORCID-1.svg>;\n foaf:homepage <https://orcid.org/> .\n\n:PinterestAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Pinterest";\n foaf:userProfilePrefix "https://pin.it/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/pinterest-2-1.svg>;\n foaf:homepage <https://pinterest.com/> .\n\n:RedditAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Reddit";\n foaf:userProfilePrefix "https://www.reddit.com/user/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/reddit-4.svg>;\n foaf:homepage <https://reddit.com/> .\n\n:SnapchatAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Snapchat";\n foaf:userProfilePrefix "https://www.snapchat.com/add/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/snapchat-1.svg>;\n foaf:homepage <https://www.snapchat.com/> .\n\n:StravaAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Strava";\n foaf:userProfilePrefix "https://www.strava.com/athletes/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/strava-2.svg>;\n foaf:homepage <https://strava.com/> .\n\n:TiktokAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "TikTok";\n foaf:userProfilePrefix "https://www.tiktok.com/@";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/tiktok-icon-2.svg>;\n foaf:homepage <https://www.tiktok.com/> .\n\n:TumblrAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Tumblr";\n foaf:userProfilePrefix "https://www.tumblr.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/tumblr-icon.svg>;\n foaf:homepage <https://www.tumblr.com/> .\n\n:TwitterAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "X";\n foaf:userProfilePrefix "https://x.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/x-2.svg>;\n foaf:homepage <https://x.com/> .\n\n:OtherAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Other" ;\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/noun_1689339.svg> .\n\n:BlueSkyIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-](.[a-z0-9A-Z_-])*".\n\n:DiggIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-](.[a-z0-9A-Z_-])*".\n\n:FacebookIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:GithubIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:InstagramIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:LinkedInIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:MastodonIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:MatrixIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:MediumIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:NostrIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:OrcidIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:PinterestIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:RedditIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:StravaIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:SnapchatIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TiktokIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TumblrIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TwitterIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n# an unknown online account needs more info\n\n:OtherIdForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :OtherIdField \n :OtherIconField \n :OtherLabelField ).\n\n:OtherIdField\n a ui:NamedNodeURIField ;\n ui:label "Account link";\n ui:maxLength "200" ;\n ui:property foaf:homepage.\n\n:OtherIconField\n a ui:NamedNodeURIField ;\n ui:label "Icon link";\n ui:maxLength "200" ;\n ui:property foaf:icon.\n\n:OtherLabelField\n a ui:SingleLineTextField ;\n ui:label "Name";\n ui:maxLength "200" ;\n ui:property rdfs:label.\n\n# ends\n',de="https://solidos.github.io/profile-pane/src/ontology/";function ce(n,e,t,i,o,r,a,s){const l=de+i,d=s||"this",c=(0,jn.Namespace)(l+"#")(d);Ae(o,t,i,l),bn.widgets.appendForm(r,n,{},e,c,a,(n,e)=>{n||bn.widgets.errorMessageBlock(r,e)}),function(n){const e="noun_19460_green.svg",t=n=>{var t;const i=n.querySelector("img"),o=n.querySelector("span");return(null==i?void 0:i.src.includes(e))&&(null===(t=null==o?void 0:o.textContent)||void 0===t?void 0:t.trim().toLowerCase().startsWith("add "))};Array.from(n.querySelectorAll("div")).filter(t).forEach(e=>{e.addEventListener("click",()=>{const t=function(e){let t=e;for(;t&&t!==n;){if(t.querySelector('input[data-testid="autocomplete-input"]'))return t;t=t.parentElement}return n}(e),i=new Set(Array.from(t.querySelectorAll('input[data-testid="autocomplete-input"]'))),o=Date.now(),r=setInterval(()=>{const n=Array.from(t.querySelectorAll('input[data-testid="autocomplete-input"]')).find(n=>!i.has(n));if(n)return ue(t),n.focus(),void clearInterval(r);Date.now()-o>1e3&&clearInterval(r)},50)})})}(n);let A={x:0,y:0};n.addEventListener("pointerdown",n=>{A={x:n.clientX,y:n.clientY}},{capture:!0});const u=n=>{const e=r.defaultView||window,t=10,i=e.innerWidth-t,o=e.innerHeight-t;n.style.position="fixed",n.style.zIndex="9999",n.style.pointerEvents="auto",n.style.opacity="1",n.style.visibility="visible";const a=n.getBoundingClientRect(),s=a.width||200,l=a.height||100,d=Math.min(Math.max(A.x+t,t),i-s),c=Math.min(Math.max(A.y+t,t),o-l);n.style.left=`${d}px`,n.style.top=`${c}px`};new MutationObserver(n=>{for(const e of n)for(const n of Array.from(e.addedNodes)){if(!(n instanceof HTMLElement))continue;if("absolute"===n.style.position&&"grid"===n.style.display&&"-1em"===n.style.top){u(n);continue}const e=n.querySelector('div[style*="position:absolute"][style*="display:grid"][style*="top:-1em"]');e&&u(e)}}).observe(n,{childList:!0,subtree:!0})}function Ae(n,e,t,i){const o=i||de+t,r=(0,jn.sym)(o);n.holds(void 0,void 0,void 0,r)||(0,jn.parse)(e,n,o,"text/turtle",()=>null)}function ue(n){const e=["label",".formFieldName a",".classifierBox-label a",".choiceBox-label a",".label a",'a[href="http://www.w3.org/2006/vcard/ns#note"]','a[href$="#note"]'].join(", "),t=null==n?void 0:n.querySelectorAll(e);t&&Array.from(t).forEach(n=>{"number"==typeof n.tabIndex&&-1!==n.tabIndex&&(n.tabIndex=-1),"true"!==n.getAttribute("aria-hidden")&&n.setAttribute("aria-hidden","true")})}const pe=bn.icons.iconBase+"noun_10636_grey.svg";function me(n,e){function t(n){const t=e.any(n,bn.ns.foaf("name"))||e.any(n,bn.ns.rdfs("label"));if(t)return t.value;const i=e.each(n,bn.ns.rdf("type"));for(const n of i){const t=e.any(n,bn.ns.rdfs("label"));return t?t.value:bn.utils.label(n)}return"Unknown Account"}function i(n){const t=e.any(n,bn.ns.foaf("icon"));if(t)return t.value;const i=e.each(n,bn.ns.rdf("type"));if(i.length>0)for(const n of i){const t=e.any(n,bn.ns.foaf("icon"));if(null!==t)return t.value}return pe}function o(n){const t=e.any(n,bn.ns.foaf("homepage"));if(t)return t.value;const i=e.anyJS(n,bn.ns.foaf("accountName"),null,n.doc())||"No_account_Name",o=e.each(n,bn.ns.rdf("type"));for(const n of o)if("NamedNode"===n.termType){const t=e.any(n,bn.ns.foaf("userProfilePrefix"));if(t)return t.value+i.trim()}return e.anyJS(n,bn.ns.foaf("homepage"),null,n.doc())||""}function r(n){return{name:t(n),icon:i(n),homepage:o(n)}}Ae(e,le,"socialMedia.ttl");let a=e.each(n,bn.ns.foaf("account")).flatMap(n=>function(n,e){const t=new Set;return function e(i){const o=`${i.termType||typeof i}:${i.value||String(i)}`;if(t.has(o))return[];t.add(o);const r=i.elements;if(Array.isArray(r))return r.flatMap(n=>e(n));if(!n.any(i,bn.ns.rdf("first")))return[i];const a=[];let s=i;for(;s;){const t=n.any(s,bn.ns.rdf("first"));t&&a.push(...e(t));const i=n.any(s,bn.ns.rdf("rest"));if(!i||"NamedNode"===i.termType&&i.value===bn.ns.rdf("nil").value)break;s=i}return a}(e)}(e,n));const s=new Set,l=[];for(const n of a)if("NamedNode"===n.termType){const t=e.any(n,bn.ns.foaf("accountName")),i=t?t.value:"";s.has(i)||(s.add(i),l.push(r(n)))}return l.length?{accounts:l}:{accounts:[]}}const{iconForClass:fe}=bn.widgets,{typeIndex:he}=Bn.solidLogicSingleton,{getScopedAppInstances:ge}=he,Ce={};for(const n in fe){const e=n.split(":")[0],t=n.split(":")[1],i=bn.ns[e](t);Ce[i.uri]=jn.uri.join(fe[n],bn.icons.iconBase)}async function be(n){return{stuff:(await ge(null,n)).map(n=>{const e=(t=n.type||bn.ns.rdf("Resource"),Ce[t.uri]||bn.icons.iconBase+"noun_10636.svg");var t;return{href:n.instance.uri,name:bn.utils.label(n.instance),icon:e,instance:n.instance}})}}function Be(n){if(3===(n=n.replace(/^#/,"")).length&&(n=n.split("").map(n=>n+n).join("")),6!==n.length)return null;const e=parseInt(n,16);return{r:e>>16&255,g:e>>8&255,b:255&e}}function Ee({r:n,g:e,b:t}){const i=[n,e,t].map(function(n){return(n/=255)<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)});return.2126*i[0]+.7152*i[1]+.0722*i[2]}const ve=(n,e,t)=>{const i=n||"#000000",o=e||"#ffffff",r=bn.utils.label(t),a=function(n,e){const t=Be(n),i=Be(e);if(!t||!i)return 1;const o=Ee(t),r=Ee(i);return(Math.max(o,r)+.05)/(Math.min(o,r)+.05)}(i,o);a<4.5&&console.warn(`QRCodeCard: The contrast ratio between highlightColor (${i}) and backgroundColor (${o}) is ${a.toFixed(2)}, which is below the WCAG 2.1 recommended minimum of 4.5:1 for normal text.`);const s="FN:"+r+"\r\n",l="URL:"+t.uri+"r\n";setTimeout(()=>{const n=document.querySelector('.QRCode [role="img"]');if(n){const e=n.hasAttribute("aria-label"),t=n.hasAttribute("alt");e||t||console.warn("QRCodeCard: The QR code element should have an accessible label (aria-label or alt attribute) for screen readers.")}else console.warn('QRCodeCard: No element with role="img" found for the QR code. Ensure the QR code is rendered as an <img> or <canvas> with proper ARIA attributes.')},0);return nn`
1
+ !function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("SolidLogic"),require("UI"),require("rdflib")):"function"==typeof define&&define.amd?define(["SolidLogic","UI","rdflib"],n):"object"==typeof exports?exports.ProfilePane=n(require("SolidLogic"),require("UI"),require("rdflib")):e.ProfilePane=n(e.SolidLogic,e.UI,e.rdflib)}(this,(e,n,t)=>(()=>{var i={741(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,".bioDescriptionWrap {\n\tmargin: 0;\n\tposition: relative;\n\tisolation: isolate;\n}\n\n.bioDescriptionText {\n\tmargin: 0;\n\twidth: 100%;\n\tmax-width: none;\n\tdisplay: -webkit-box;\n\t-webkit-box-orient: vertical;\n\t-webkit-line-clamp: 3;\n\tline-clamp: 3;\n\tline-height: var(--line-height-base, 1.5);\n\tposition: relative;\n\toverflow: hidden;\n}\n\n.bioDescriptionText:not(.isExpanded)::after {\n\tcontent: '';\n\tposition: absolute;\n\tright: 0;\n\ttop: calc(100% - 1.5em);\n\twidth: 50%;\n\theight: 1.5em;\n\tbackground: var(--color-card-bg);\n\tpointer-events: none;\n}\n\n.bioDescriptionText.isExpanded {\n\tdisplay: block;\n\t-webkit-line-clamp: unset;\n\tline-clamp: unset;\n\toverflow: visible;\n}\n\n.bioDescriptionToggle {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tbackground: none;\n\tcolor: var(--color-primary);\n\tcursor: pointer;\n\tfont: inherit;\n\tfont-size: var(--font-size-sm);\n\tline-height: var(--line-height-base, 1.5);\n\tposition: absolute;\n\tleft: 50%;\n\tbottom: 0;\n\tbackground-color: var(--color-card-bg);\n\twhite-space: nowrap;\n\tmin-height: auto;\n\tmin-width: auto;\n\tpadding-left: 0;\n\tpadding-right: 0;\n\tpadding-top: 0;\n\tpadding-bottom: 0;\n\tmargin-left: 0;\n\tmargin-right: 0;\n\tz-index: 0;\n}\n\n.bioDescriptionWrap .bioDescriptionText:not(.isExpanded) + .bioDescriptionToggle {\n\ttop: calc(100% - 1.5em + 0.28em - 12px);\n\tbottom: auto;\n\ttransform: translateY(7px);\n}\n\n.bioDescriptionText.isExpanded + .bioDescriptionToggle {\n\tposition: static;\n\tdisplay: inline;\n\tpadding-left: 0;\n\ttop: auto;\n\tbottom: auto;\n\ttransform: none;\n}\n","",{version:3,sources:["webpack://./src/styles/BioSection.css"],names:[],mappings:"AAAA;CACC,SAAS;CACT,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA;CACC,SAAS;CACT,WAAW;CACX,eAAe;CACf,oBAAoB;CACpB,4BAA4B;CAC5B,qBAAqB;CACrB,aAAa;CACb,yCAAyC;CACzC,kBAAkB;CAClB,gBAAgB;AACjB;;AAEA;CACC,WAAW;CACX,kBAAkB;CAClB,QAAQ;CACR,uBAAuB;CACvB,UAAU;CACV,aAAa;CACb,gCAAgC;CAChC,oBAAoB;AACrB;;AAEA;CACC,cAAc;CACd,yBAAyB;CACzB,iBAAiB;CACjB,iBAAiB;AAClB;;AAEA;CACC,SAAS;CACT,UAAU;CACV,SAAS;CACT,gBAAgB;CAChB,2BAA2B;CAC3B,eAAe;CACf,aAAa;CACb,8BAA8B;CAC9B,yCAAyC;CACzC,kBAAkB;CAClB,SAAS;CACT,SAAS;CACT,sCAAsC;CACtC,mBAAmB;CACnB,gBAAgB;CAChB,eAAe;CACf,eAAe;CACf,gBAAgB;CAChB,cAAc;CACd,iBAAiB;CACjB,cAAc;CACd,eAAe;CACf,UAAU;AACX;;AAEA;CACC,uCAAuC;CACvC,YAAY;CACZ,0BAA0B;AAC3B;;AAEA;CACC,gBAAgB;CAChB,eAAe;CACf,eAAe;CACf,SAAS;CACT,YAAY;CACZ,eAAe;AAChB",sourcesContent:[".bioDescriptionWrap {\n\tmargin: 0;\n\tposition: relative;\n\tisolation: isolate;\n}\n\n.bioDescriptionText {\n\tmargin: 0;\n\twidth: 100%;\n\tmax-width: none;\n\tdisplay: -webkit-box;\n\t-webkit-box-orient: vertical;\n\t-webkit-line-clamp: 3;\n\tline-clamp: 3;\n\tline-height: var(--line-height-base, 1.5);\n\tposition: relative;\n\toverflow: hidden;\n}\n\n.bioDescriptionText:not(.isExpanded)::after {\n\tcontent: '';\n\tposition: absolute;\n\tright: 0;\n\ttop: calc(100% - 1.5em);\n\twidth: 50%;\n\theight: 1.5em;\n\tbackground: var(--color-card-bg);\n\tpointer-events: none;\n}\n\n.bioDescriptionText.isExpanded {\n\tdisplay: block;\n\t-webkit-line-clamp: unset;\n\tline-clamp: unset;\n\toverflow: visible;\n}\n\n.bioDescriptionToggle {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tbackground: none;\n\tcolor: var(--color-primary);\n\tcursor: pointer;\n\tfont: inherit;\n\tfont-size: var(--font-size-sm);\n\tline-height: var(--line-height-base, 1.5);\n\tposition: absolute;\n\tleft: 50%;\n\tbottom: 0;\n\tbackground-color: var(--color-card-bg);\n\twhite-space: nowrap;\n\tmin-height: auto;\n\tmin-width: auto;\n\tpadding-left: 0;\n\tpadding-right: 0;\n\tpadding-top: 0;\n\tpadding-bottom: 0;\n\tmargin-left: 0;\n\tmargin-right: 0;\n\tz-index: 0;\n}\n\n.bioDescriptionWrap .bioDescriptionText:not(.isExpanded) + .bioDescriptionToggle {\n\ttop: calc(100% - 1.5em + 0.28em - 12px);\n\tbottom: auto;\n\ttransform: translateY(7px);\n}\n\n.bioDescriptionText.isExpanded + .bioDescriptionToggle {\n\tposition: static;\n\tdisplay: inline;\n\tpadding-left: 0;\n\ttop: auto;\n\tbottom: auto;\n\ttransform: none;\n}\n"],sourceRoot:""}]);const l=r},1267(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,"/* CVCard.css */\n/* Note: Uses utilities: .section-title for cvOrg styling */\n\n.cvSection {\n margin-bottom: 1.25em;\n}\n\n.cvSection > ul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.cvRole {\n margin: 0 0 var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\n.cvRole:last-child {\n margin-bottom: 0;\n}\n\n.cvRoleHeader {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: baseline;\n gap: var(--spacing-sm);\n}\n\n.cvRoleHeader h4,\n.cvRoleHeader time {\n margin: 0;\n}\n\n.cvRolePeriod {\n margin: 0;\n font-size: var(--font-size-sm);\n line-height: var(--line-height-tight);\n}\n\n@media (max-width: 640px) {\n .cvRoleHeader {\n flex-direction: column;\n align-items: flex-start;\n }\n}\n\n.cvOrg {\n font-weight: 600;\n color: var(--color-primary);\n margin: 0;\n}\n\n.cvDescriptionWrap {\n margin: 0;\n position: relative;\n isolation: isolate;\n}\n\n.cvDescriptionText {\n margin: 0;\n width: 100%;\n max-width: none;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n line-height: var(--line-height-base);\n padding-right: 4.5em;\n overflow: hidden;\n}\n\n.cvDescriptionText.isExpanded {\n display: block;\n -webkit-line-clamp: unset;\n line-clamp: unset;\n padding-right: 0;\n overflow: visible;\n}\n\n.cvDescriptionToggle {\n margin: 0;\n padding: 0;\n border: 0;\n background: none;\n color: var(--color-primary);\n cursor: pointer;\n font: inherit;\n font-size: var(--font-size-sm);\n line-height: var(--line-height-base, 1.5);\n position: absolute;\n right: 0;\n bottom: 0;\n background-color: var(--color-card-bg);\n white-space: nowrap;\n min-height: auto;\n min-width: auto;\n padding-left: 0;\n padding-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n margin-left: 0;\n margin-right: 0;\n z-index: 0;\n}\n\n.cvDescriptionWrap .cvDescriptionText:not(.isExpanded) + .cvDescriptionToggle {\n top: calc(100% - 1.5em + 0.28em - 11px);\n bottom: auto;\n transform: translateY(7px);\n}\n\n.cvDescriptionText.isExpanded + .cvDescriptionToggle {\n position: static;\n display: inline;\n padding-left: 0;\n top: auto;\n bottom: auto;\n transform: none;\n}\n\n.cvSkill, .cvLanguage {\n text-align: left;\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n}\n\n.cvSection h3 {\n color: var(--color-text);\n font-size: var(--font-size-lg);\n font-weight: 600;\n line-height: var(--line-height-tight);\n margin-bottom: var(--spacing-xs);\n border-bottom: 1px solid var(--color-border-pale);\n padding-bottom: var(--spacing-xs);\n}\n","",{version:3,sources:["webpack://./src/styles/CVCard.css"],names:[],mappings:"AAAA,eAAe;AACf,2DAA2D;;AAE3D;EACE,qBAAqB;AACvB;;AAEA;EACE,gBAAgB;EAChB,SAAS;EACT,UAAU;AACZ;;AAEA;EACE,+BAA+B;EAC/B,gCAAgC;EAChC,oCAAoC;EACpC,aAAa;EACb,sBAAsB;EACtB,MAAM;AACR;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,8BAA8B;EAC9B,qBAAqB;EACrB,sBAAsB;AACxB;;AAEA;;EAEE,SAAS;AACX;;AAEA;EACE,SAAS;EACT,8BAA8B;EAC9B,qCAAqC;AACvC;;AAEA;EACE;IACE,sBAAsB;IACtB,uBAAuB;EACzB;AACF;;AAEA;EACE,gBAAgB;EAChB,2BAA2B;EAC3B,SAAS;AACX;;AAEA;EACE,SAAS;EACT,kBAAkB;EAClB,kBAAkB;AACpB;;AAEA;EACE,SAAS;EACT,WAAW;EACX,eAAe;EACf,oBAAoB;EACpB,4BAA4B;EAC5B,qBAAqB;EACrB,aAAa;EACb,oCAAoC;EACpC,oBAAoB;EACpB,gBAAgB;AAClB;;AAEA;EACE,cAAc;EACd,yBAAyB;EACzB,iBAAiB;EACjB,gBAAgB;EAChB,iBAAiB;AACnB;;AAEA;EACE,SAAS;EACT,UAAU;EACV,SAAS;EACT,gBAAgB;EAChB,2BAA2B;EAC3B,eAAe;EACf,aAAa;EACb,8BAA8B;EAC9B,yCAAyC;EACzC,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,sCAAsC;EACtC,mBAAmB;EACnB,gBAAgB;EAChB,eAAe;EACf,eAAe;EACf,gBAAgB;EAChB,cAAc;EACd,iBAAiB;EACjB,cAAc;EACd,eAAe;EACf,UAAU;AACZ;;AAEA;EACE,uCAAuC;EACvC,YAAY;EACZ,0BAA0B;AAC5B;;AAEA;EACE,gBAAgB;EAChB,eAAe;EACf,eAAe;EACf,SAAS;EACT,YAAY;EACZ,eAAe;AACjB;;AAEA;EACE,gBAAgB;EAChB,2BAA2B;EAC3B,gCAAgC;EAChC,oCAAoC;AACtC;;AAEA;EACE,wBAAwB;EACxB,8BAA8B;EAC9B,gBAAgB;EAChB,qCAAqC;EACrC,gCAAgC;EAChC,iDAAiD;EACjD,iCAAiC;AACnC",sourcesContent:["/* CVCard.css */\n/* Note: Uses utilities: .section-title for cvOrg styling */\n\n.cvSection {\n margin-bottom: 1.25em;\n}\n\n.cvSection > ul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.cvRole {\n margin: 0 0 var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\n.cvRole:last-child {\n margin-bottom: 0;\n}\n\n.cvRoleHeader {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: baseline;\n gap: var(--spacing-sm);\n}\n\n.cvRoleHeader h4,\n.cvRoleHeader time {\n margin: 0;\n}\n\n.cvRolePeriod {\n margin: 0;\n font-size: var(--font-size-sm);\n line-height: var(--line-height-tight);\n}\n\n@media (max-width: 640px) {\n .cvRoleHeader {\n flex-direction: column;\n align-items: flex-start;\n }\n}\n\n.cvOrg {\n font-weight: 600;\n color: var(--color-primary);\n margin: 0;\n}\n\n.cvDescriptionWrap {\n margin: 0;\n position: relative;\n isolation: isolate;\n}\n\n.cvDescriptionText {\n margin: 0;\n width: 100%;\n max-width: none;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n line-height: var(--line-height-base);\n padding-right: 4.5em;\n overflow: hidden;\n}\n\n.cvDescriptionText.isExpanded {\n display: block;\n -webkit-line-clamp: unset;\n line-clamp: unset;\n padding-right: 0;\n overflow: visible;\n}\n\n.cvDescriptionToggle {\n margin: 0;\n padding: 0;\n border: 0;\n background: none;\n color: var(--color-primary);\n cursor: pointer;\n font: inherit;\n font-size: var(--font-size-sm);\n line-height: var(--line-height-base, 1.5);\n position: absolute;\n right: 0;\n bottom: 0;\n background-color: var(--color-card-bg);\n white-space: nowrap;\n min-height: auto;\n min-width: auto;\n padding-left: 0;\n padding-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n margin-left: 0;\n margin-right: 0;\n z-index: 0;\n}\n\n.cvDescriptionWrap .cvDescriptionText:not(.isExpanded) + .cvDescriptionToggle {\n top: calc(100% - 1.5em + 0.28em - 11px);\n bottom: auto;\n transform: translateY(7px);\n}\n\n.cvDescriptionText.isExpanded + .cvDescriptionToggle {\n position: static;\n display: inline;\n padding-left: 0;\n top: auto;\n bottom: auto;\n transform: none;\n}\n\n.cvSkill, .cvLanguage {\n text-align: left;\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n}\n\n.cvSection h3 {\n color: var(--color-text);\n font-size: var(--font-size-lg);\n font-weight: 600;\n line-height: var(--line-height-tight);\n margin-bottom: var(--spacing-xs);\n border-bottom: 1px solid var(--color-border-pale);\n padding-bottom: var(--spacing-xs);\n}\n"],sourceRoot:""}]);const l=r},3750(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,"/* ChatWithMe.css */\n/* Uses utilities: .section-centered, .loading-text, .btn-primary, .btn-transparent */\n\n.chatSection {\n overflow-x: auto;\n}\n","",{version:3,sources:["webpack://./src/styles/ChatWithMe.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,qFAAqF;;AAErF;EACE,gBAAgB;AAClB",sourcesContent:["/* ChatWithMe.css */\n/* Uses utilities: .section-centered, .loading-text, .btn-primary, .btn-transparent */\n\n.chatSection {\n overflow-x: auto;\n}\n"],sourceRoot:""}]);const l=r},7380(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,".profile__edit-form--contact-info .profile-edit-dialog__section {\n gap: 0;\n}\n\n.profile__edit-form--contact-info .profile-edit-dialog__section + .profile-edit-dialog__section {\n border-top: var(--border-width-sm, 0.1rem) solid var(--slate-200, #E2E8F0);\n padding-top: var(--spacing-xs, 0.75rem);\n}\n\n.profile__edit-form--contact-info .profile__section-header {\n margin-bottom: 0;\n}\n\n.profile__edit-form--contact-info .profile-edit-dialog__section fieldset {\n margin-top: 0.25rem;\n gap: var(--spacing-xs, 0.75rem);\n}\n\n.profile__edit-form--contact-info .profile-edit-dialog__section-heading {\n margin: 0;\n color: var(--gray-700, #364153);\n font-size: var(--font-size-md, 1rem); /* 16px */\n font-weight: var(--font-weight-md, 500);\n line-height: normal;\n}\n\n.profile-edit-dialog__phone-prefix-field {\n flex: 0 0 6.1rem;\n margin: 0;\n}\n\n.phonePrefixSelect,\n.profile-edit-dialog__phone-local-input {\n border: 0 !important;\n background: transparent;\n min-height: calc(var(--min-touch-target, 44px) - 2px);\n height: calc(var(--min-touch-target, 44px) - 2px);\n}\n\n.phonePrefixSelect {\n padding: 0 0.2rem 0 0;\n}\n\n.phonePrefixSelect:focus,\n.profile-edit-dialog__phone-local-input:focus {\n outline: none;\n}\n\n.profile-edit-dialog__phone-type-row {\n flex: 0 0 7.5rem;\n}\n\n.profile-edit-dialog__row--contact-point {\n max-width: 100%;\n width: 100%;\n border: 0;\n outline: 0;\n box-shadow: none;\n}\n\n.profile-edit-dialog__section fieldset > .profile-edit-dialog__row--contact-point {\n margin-bottom: var(--spacing-xs, 0.75rem);\n}\n\n.profile-edit-dialog__section fieldset > .profile-edit-dialog__row--contact-point:last-child {\n margin-bottom: var(--spacing-sm, 0.9375rem);\n}\n\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field,\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field-type,\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field > .label {\n border: 0;\n outline: 0;\n box-shadow: none;\n background: transparent;\n}\n\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field > .label {\n display: block;\n width: 100%;\n}\n\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field-type.profile-edit-dialog__phone-type-row {\n flex: 0 0 6.5rem;\n width: 6.5rem;\n min-width: 6.5rem;\n}\n\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field-type.emailTypeRow {\n flex: 0 0 6.5rem;\n width: 6.5rem;\n min-width: 6.5rem;\n}\n\n.profile-edit-dialog__row--address-header.profile-edit-dialog__row--full {\n max-width: 100%;\n width: 100%;\n align-items: center;\n}\n\n.profile-edit-dialog__row--address-header.profile-edit-dialog__row--full .profile-edit-dialog__actions {\n align-self: center;\n}\n\n.profile-edit-dialog__row--address-header.profile-edit-dialog__row--full .profile-edit-dialog__delete-button,\n#profile-modal .modal .profile-edit-dialog__row--address-header.profile-edit-dialog__row--full button.profile-edit-dialog__delete-button {\n min-height: 1.75rem;\n min-width: 1.75rem;\n}\n\n.profile-edit-dialog__address-title {\n margin: 0;\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: var(--font-weight-medium, 500);\n line-height: var(--line-height-base, 1.5);\n}\n\n@media (max-width: 640px) {\n .profile-edit-dialog__row--contact-point {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n gap: var(--spacing-2xs, 0.625rem);\n }\n\n .profile-edit-dialog__row--contact-point > .profile-edit-dialog__field {\n flex: 1 1 0;\n min-width: 0;\n }\n\n .profile-edit-dialog__row--contact-point > .profile-edit-dialog__field-type.profile-edit-dialog__phone-type-row,\n .profile-edit-dialog__row--contact-point > .profile-edit-dialog__field-type.emailTypeRow {\n flex: 0 0 5.5rem;\n width: 5.5rem;\n min-width: 5.5rem;\n max-width: 5.5rem;\n }\n\n .profile-edit-dialog__row--contact-point > .profile-edit-dialog__actions {\n flex: 0 0 auto;\n margin-left: 0;\n justify-content: flex-end;\n }\n\n .profile-edit-dialog__phone-prefix-field {\n flex: 0 0 5.75rem;\n }\n}\n","",{version:3,sources:["webpack://./src/styles/ContactInfoEditDialog.css"],names:[],mappings:"AAAA;EACE,MAAM;AACR;;AAEA;EACE,0EAA0E;EAC1E,uCAAuC;AACzC;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,mBAAmB;EACnB,+BAA+B;AACjC;;AAEA;EACE,SAAS;EACT,+BAA+B;EAC/B,oCAAoC,EAAE,SAAS;EAC/C,uCAAuC;EACvC,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;EAChB,SAAS;AACX;;AAEA;;EAEE,oBAAoB;EACpB,uBAAuB;EACvB,qDAAqD;EACrD,iDAAiD;AACnD;;AAEA;EACE,qBAAqB;AACvB;;AAEA;;EAEE,aAAa;AACf;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,eAAe;EACf,WAAW;EACX,SAAS;EACT,UAAU;EACV,gBAAgB;AAClB;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,2CAA2C;AAC7C;;AAEA;;;EAGE,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,uBAAuB;AACzB;;AAEA;EACE,cAAc;EACd,YAAY;AACd;;AAEA;EACE,cAAc;EACd,WAAW;AACb;;AAEA;EACE,gBAAgB;EAChB,aAAa;EACb,iBAAiB;AACnB;;AAEA;EACE,gBAAgB;EAChB,aAAa;EACb,iBAAiB;AACnB;;AAEA;EACE,eAAe;EACf,WAAW;EACX,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;AACpB;;AAEA;;EAEE,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,SAAS;EACT,wCAAwC;EACxC,2CAA2C;EAC3C,yCAAyC;AAC3C;;AAEA;EACE;IACE,mBAAmB;IACnB,mBAAmB;IACnB,iBAAiB;IACjB,iCAAiC;EACnC;;EAEA;IACE,WAAW;IACX,YAAY;EACd;;EAEA;;IAEE,gBAAgB;IAChB,aAAa;IACb,iBAAiB;IACjB,iBAAiB;EACnB;;EAEA;IACE,cAAc;IACd,cAAc;IACd,yBAAyB;EAC3B;;EAEA;IACE,iBAAiB;EACnB;AACF",sourcesContent:[".profile__edit-form--contact-info .profile-edit-dialog__section {\n gap: 0;\n}\n\n.profile__edit-form--contact-info .profile-edit-dialog__section + .profile-edit-dialog__section {\n border-top: var(--border-width-sm, 0.1rem) solid var(--slate-200, #E2E8F0);\n padding-top: var(--spacing-xs, 0.75rem);\n}\n\n.profile__edit-form--contact-info .profile__section-header {\n margin-bottom: 0;\n}\n\n.profile__edit-form--contact-info .profile-edit-dialog__section fieldset {\n margin-top: 0.25rem;\n gap: var(--spacing-xs, 0.75rem);\n}\n\n.profile__edit-form--contact-info .profile-edit-dialog__section-heading {\n margin: 0;\n color: var(--gray-700, #364153);\n font-size: var(--font-size-md, 1rem); /* 16px */\n font-weight: var(--font-weight-md, 500);\n line-height: normal;\n}\n\n.profile-edit-dialog__phone-prefix-field {\n flex: 0 0 6.1rem;\n margin: 0;\n}\n\n.phonePrefixSelect,\n.profile-edit-dialog__phone-local-input {\n border: 0 !important;\n background: transparent;\n min-height: calc(var(--min-touch-target, 44px) - 2px);\n height: calc(var(--min-touch-target, 44px) - 2px);\n}\n\n.phonePrefixSelect {\n padding: 0 0.2rem 0 0;\n}\n\n.phonePrefixSelect:focus,\n.profile-edit-dialog__phone-local-input:focus {\n outline: none;\n}\n\n.profile-edit-dialog__phone-type-row {\n flex: 0 0 7.5rem;\n}\n\n.profile-edit-dialog__row--contact-point {\n max-width: 100%;\n width: 100%;\n border: 0;\n outline: 0;\n box-shadow: none;\n}\n\n.profile-edit-dialog__section fieldset > .profile-edit-dialog__row--contact-point {\n margin-bottom: var(--spacing-xs, 0.75rem);\n}\n\n.profile-edit-dialog__section fieldset > .profile-edit-dialog__row--contact-point:last-child {\n margin-bottom: var(--spacing-sm, 0.9375rem);\n}\n\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field,\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field-type,\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field > .label {\n border: 0;\n outline: 0;\n box-shadow: none;\n background: transparent;\n}\n\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field > .label {\n display: block;\n width: 100%;\n}\n\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field-type.profile-edit-dialog__phone-type-row {\n flex: 0 0 6.5rem;\n width: 6.5rem;\n min-width: 6.5rem;\n}\n\n.profile-edit-dialog__row--contact-point > .profile-edit-dialog__field-type.emailTypeRow {\n flex: 0 0 6.5rem;\n width: 6.5rem;\n min-width: 6.5rem;\n}\n\n.profile-edit-dialog__row--address-header.profile-edit-dialog__row--full {\n max-width: 100%;\n width: 100%;\n align-items: center;\n}\n\n.profile-edit-dialog__row--address-header.profile-edit-dialog__row--full .profile-edit-dialog__actions {\n align-self: center;\n}\n\n.profile-edit-dialog__row--address-header.profile-edit-dialog__row--full .profile-edit-dialog__delete-button,\n#profile-modal .modal .profile-edit-dialog__row--address-header.profile-edit-dialog__row--full button.profile-edit-dialog__delete-button {\n min-height: 1.75rem;\n min-width: 1.75rem;\n}\n\n.profile-edit-dialog__address-title {\n margin: 0;\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: var(--font-weight-medium, 500);\n line-height: var(--line-height-base, 1.5);\n}\n\n@media (max-width: 640px) {\n .profile-edit-dialog__row--contact-point {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n gap: var(--spacing-2xs, 0.625rem);\n }\n\n .profile-edit-dialog__row--contact-point > .profile-edit-dialog__field {\n flex: 1 1 0;\n min-width: 0;\n }\n\n .profile-edit-dialog__row--contact-point > .profile-edit-dialog__field-type.profile-edit-dialog__phone-type-row,\n .profile-edit-dialog__row--contact-point > .profile-edit-dialog__field-type.emailTypeRow {\n flex: 0 0 5.5rem;\n width: 5.5rem;\n min-width: 5.5rem;\n max-width: 5.5rem;\n }\n\n .profile-edit-dialog__row--contact-point > .profile-edit-dialog__actions {\n flex: 0 0 auto;\n margin-left: 0;\n justify-content: flex-end;\n }\n\n .profile-edit-dialog__phone-prefix-field {\n flex: 0 0 5.75rem;\n }\n}\n"],sourceRoot:""}]);const l=r},5203(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,".profile-edit-dialog__section {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-xs);\n}\n\n.profile__edit-form {\n width: 100%;\n}\n\n.profile-edit-dialog__section h4 {\n margin: 0;\n}\n\n.profile-edit-dialog__section fieldset {\n width: 100%;\n margin: 0;\n display: grid;\n gap: var(--spacing-sm);\n border: 0;\n padding: 0;\n min-inline-size: 0;\n}\n.profile-edit-dialog__field-description {\n color: var(--gray-600, #4A5565);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-normal, normal);\n line-height: var(--line-height-base, 1.5); /* 21px */\n}\n\n.profile-edit-dialog__bio-field-container {\n display: flex;\n width: 100%;\n max-width: 34rem;\n padding: 0;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs, 0.75rem);\n box-sizing: border-box;\n margin: 0;\n}\n\n.profile-edit-dialog__row {\n display: flex;\n align-items: flex-start;\n gap: var(--spacing-sm);\n max-width: 34rem;\n}\n\n.profile-edit-dialog__section--resume fieldset {\n gap: var(--spacing-xs, 0.75rem);\n}\n\n.profile-edit-dialog__row--language {\n margin-left: calc(-1 * var(--spacing-xs, 0.75rem));\n}\n\n.profile-edit-dialog__row--social {\n margin-left: calc(-1 * var(--spacing-2xs, 0.625rem));\n max-width: 100%;\n width: 100%;\n}\n\n.profile-edit-dialog__field--social-type {\n flex: 0 0 7rem;\n width: 7rem;\n max-width: 7rem;\n}\n\n.profile-edit-dialog__field--social-url {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.profile-edit-dialog__row--full {\n max-width: 100%;\n width: 100%;\n}\n\n.profile-edit-dialog__row--project {\n max-width: 100%;\n width: 100%;\n}\n\n.profile-edit-dialog__row--resume-entry-header {\n align-items: center;\n border-bottom: 1px solid var(--gray-400, #99A1AF);\n}\n\n.profile-edit-dialog__row--resume-entry-header > .profile-edit-dialog__entry-heading {\n margin: 0;\n}\n\n.profile-edit-dialog__entry-heading {\n margin: 0;\n color: var(--gray-700, #364153);\n font-size: var(--font-size-sm, 0.875rem);\n font-style: normal;\n font-weight: var(--font-weight-md, 500);\n line-height: normal;\n}\n\n.educationEditSection .profile-edit-dialog__section-heading {\n margin: 0;\n color: var(--gray-700, #364153);\n font-size: 16px;\n font-weight: 500;\n}\n\n.profile-edit-dialog__row--resume-entry-header .profile-edit-dialog__delete-button,\n#profile-modal .modal .profile-edit-dialog__row--resume-entry-header button.profile-edit-dialog__delete-button {\n min-height: 1.75rem;\n min-width: 1.75rem;\n}\n\n/* Force two direct children to split the row into equal columns. */\n.profile-edit-dialog__row--equal > .profile-edit-dialog__field,\n.profile-edit-dialog__row--equal > .profile-edit-dialog__field-type {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.profile-edit-dialog__image-preview {\n display: grid;\n gap: var(--spacing-xs);\n}\n\n.profile-edit-dialog__image-preview-label,\n.profile-edit-dialog__image-preview-description {\n margin: 0;\n}\n\n.profile-edit-dialog__image-preview-actions {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n}\n\n.profile-edit-dialog__image-frame {\n position: relative;\n display: inline-block;\n line-height: 0;\n}\n\n.profile-edit-dialog__image-camera-button {\n display: none;\n position: absolute;\n right: var(--spacing-2xs, 0.625rem);\n bottom: var(--spacing-2xs, 0.625rem);\n z-index: 1;\n}\n\n/* Override modal-wide button defaults for the small camera overlay control. */\n#profile-modal .modal button.profile-edit-dialog__image-camera-button {\n display: none !important;\n position: absolute;\n right: var(--spacing-2xs, 0.625rem);\n bottom: var(--spacing-2xs, 0.625rem);\n width: 1.25rem;\n height: 1.25rem;\n min-width: 1.25rem;\n min-height: 1.25rem;\n padding: 3px;\n background: var(--white, #FFF);\n border-radius: 3.333px;\n box-shadow: 0 0 4.444px 0 rgba(0, 0, 0, 0.25);\n flex-shrink: 0;\n}\n\n.profile-edit-dialog__image-camera-button svg {\n width: 0.875rem !important;\n height: 0.875rem !important;\n display: block;\n flex-shrink: 0;\n}\n.profile-edit-dialog__image-camera-capture-row {\n display: flex;\n justify-content: center;\n width: 100%;\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__image-camera-capture-row {\n margin-bottom: calc(var(--spacing-lg, 1.25rem) / -2);\n}\n\n.profile-edit-dialog__image-camera-capture-frame {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: fit-content;\n max-width: 100%;\n margin-left: auto;\n margin-right: auto;\n margin-top: calc(var(--spacing-xs, 0.625rem) / 2);\n margin-bottom: var(--spacing-xs, 0.625rem);\n padding: 10px;\n box-sizing: border-box;\n border: 1px solid var(--gray-200, #E5E7EB);\n border-radius: 8px;\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__image-camera-capture-frame {\n margin-top: calc(var(--spacing-xs, 0.625rem) / 4);\n margin-bottom: calc(var(--spacing-xs, 0.625rem) / 2);\n}\n\n.profile-edit-dialog__image-camera-capture-frame[hidden] {\n display: none;\n}\n\n.profile-edit-dialog__image-camera-capture-frame table {\n border-collapse: collapse;\n width: 100%;\n table-layout: fixed;\n}\n\n.profile-edit-dialog__image-camera-capture-frame td {\n text-align: center;\n vertical-align: middle;\n}\n\n.profile-edit-dialog__image-camera-capture-frame tr:last-child {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: var(--spacing-2xs, 0.625rem);\n}\n\n.profile-edit-dialog__image-camera-capture-frame tr:last-child td {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n width: auto;\n}\n\n.profile-edit-dialog__image-camera-capture-frame tr:last-child td:first-child {\n margin-right: auto;\n}\n\n#profile-modal .modal .profile-edit-dialog__image-camera-capture-frame tr:last-child td:first-child button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.profile-edit-dialog__camera-control {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.profile-edit-dialog__camera-control-actions {\n display: flex;\n align-items: center;\n justify-content: center !important;\n gap: var(--spacing-2xs, 0.625rem);\n width: max-content;\n margin-left: auto;\n margin-right: auto;\n margin-top: calc(var(--spacing-2xs, 0.625rem) / 2);\n align-self: center;\n}\n\n.profile-edit-dialog__camera-control-cancel {\n position: absolute;\n top: 0;\n right: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: 0 !important;\n background: transparent !important;\n box-shadow: none !important;\n color: var(--gray-600, #4A5565) !important;\n margin-right: 0 !important;\n}\n\n.profile-edit-dialog__camera-control-cancel svg {\n display: block;\n}\n\n#profile-modal .modal .profile-edit-dialog__camera-control-cancel:hover,\n#profile-modal .modal .profile-edit-dialog__camera-control-cancel:focus-visible {\n background: transparent !important;\n border: 0 !important;\n color: var(--gray-900, #101828) !important;\n}\n/* display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 2rem;\n padding: 0.25rem 0.625rem;\n border: 1px solid var(--gray-300, #D5D7DA) !important;\n -- background: var(--gray-200, #E5E7EB) !important; \n background: var(--gray-100, #FFF) !important;\n color: var(--gray-700, #364153) !important;\n box-shadow: none !important;\n border-radius: 0.375rem;\n font-weight: var(--font-weight-md, 500); */\n.profile-edit-dialog__camera-control-action {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n font-size: var(--font-size-xxs, 0.75rem) !important; /* 12 px */\n font-weight: var(--font-weight-xbold, 700) !important;\n line-height: var(--line-height-base, 1.5) !important; /* 150% */\n border-radius: var(--border-radius-base, 0.3125rem) !important;\n border: 0.8px solid var(--gray-300, #D1D5DC) !important;\n color: var(--gray-900, #101828) !important;\n background: var(--white, #FFF) !important;\n padding: 6.6px 11.075px 7px 12.8px !important;\n}\n\n#profile-modal .modal .profile-edit-dialog__camera-control-actions button:hover,\n#profile-modal .modal .profile-edit-dialog__camera-control-actions button:focus-visible {\n background: var(--gray-100, #F3F4F6) !important;\n border-color: var(--gray-400, #99A1AF) !important;\n}\n\n.profile-edit-dialog__image-camera-capture-frame video,\n.profile-edit-dialog__image-camera-capture-frame canvas {\n display: block;\n width: 100%;\n max-width: 260px;\n height: auto;\n border-radius: 0.5rem;\n margin: 0 auto;\n}\n\n#profile-modal .modal .profile-edit-dialog__image-camera-capture-frame button {\n font-size: var(--font-size-sm, 0.875rem);\n}\n\n.profile-edit-dialog__image-upload-button,\n.profile-edit-dialog__image-remove-button {\n min-height: var(--min-touch-target, 44px);\n padding: 0 var(--spacing-sm);\n}\n\n.profile-edit-dialog__field,\n.profile-edit-dialog__field-type {\n display: block;\n margin: 0;\n}\n\n.profile-edit-dialog__field-type {\n width: 100%;\n}\n\n.profile-edit-dialog__field {\n /* flex: 1 1 auto; */\n min-width: 0;\n}\n\n.profile__edit-form--resume .profile-edit-dialog__field,\n.profile__edit-form--resume .profile-edit-dialog__field-type:not(.hidden),\n.profile__edit-form--contact-info .profile-edit-dialog__field,\n.profile__edit-form--contact-info .profile-edit-dialog__field-type:not(.hidden) {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xxs, 0.3125rem);\n flex: 1 0 0;\n}\n\n.profile__edit-form--resume .profile-edit-dialog__row {\n max-width: 100%;\n width: 100%;\n}\n\n.profile__edit-form--resume .profile-edit-dialog__section fieldset > .profile-edit-dialog__field {\n max-width: 100%;\n}\n\n.profile__edit-form--resume .profile-edit-dialog__field > input,\n.profile__edit-form--resume .profile-edit-dialog__field > select,\n.profile__edit-form--resume .profile-edit-dialog__field > textarea,\n.profile__edit-form--resume .profile-edit-dialog__field-type > input,\n.profile__edit-form--resume .profile-edit-dialog__field-type > select,\n.profile__edit-form--resume .profile-edit-dialog__field-type > textarea,\n.profile__edit-form--contact-info .profile-edit-dialog__field > input,\n.profile__edit-form--contact-info .profile-edit-dialog__field > select,\n.profile__edit-form--contact-info .profile-edit-dialog__field > textarea,\n.profile__edit-form--contact-info .profile-edit-dialog__field-type > input,\n.profile__edit-form--contact-info .profile-edit-dialog__field-type > select,\n.profile__edit-form--contact-info .profile-edit-dialog__field-type > textarea {\n align-self: stretch;\n}\n\n.profile-edit-dialog__field--resume-location {\n flex: 1 0 0;\n width: auto;\n max-width: none;\n}\n\n.profile-edit-dialog__row--resume-dates {\n max-width: 100%;\n width: 100%;\n}\n\n.profile-edit-dialog__field--date-group {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.profile-edit-dialog__date-pair {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n width: 100%;\n}\n\n.profile-edit-dialog__date-pair > select {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.profile-edit-dialog__field--stack {\n display: grid;\n gap: var(--spacing-xxs);\n}\n\n.profile-edit-dialog__field--stack > small {\n display: block;\n width: 100%;\n text-align: right;\n}\n\n.profile-edit-dialog__bio-field-container > small {\n align-self: flex-end;\n text-align: right;\n}\n\n.profile-edit-dialog__field--full {\n max-width: 100% !important;\n width: 100%;\n}\n\n.profile-edit-dialog__field--row-width {\n max-width: 34rem;\n width: 100%;\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__row,\n.profile-edit-dialog--heading .profile-edit-dialog__field--row-width {\n max-width: 100%;\n width: 100%;\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo {\n padding-bottom: calc(var(--spacing-sm, 0.938rem) / 2);\n margin-bottom: calc(var(--spacing-sm, 0.938rem) / 2);\n border-bottom: 1px solid var(--slate-200, #E2E8F0);\n}\n\n.profile-edit-dialog--heading .profile-edit {\n gap: calc(var(--spacing-lg, 1.25rem) / 2);\n}\n\n.profile-edit-dialog__login-message {\n margin: 0;\n font-size: var(--font-size-xs, 0.75rem);\n color: var(--red-600, #E7000B);\n}\n\n.profile-edit-dialog__section + .profile-edit-dialog__login-message {\n margin-top: var(--spacing-sm, 0.938rem);\n}\n\n.profile__edit-form--projects .profile-edit-dialog__login-message {\n margin-top: var(--spacing-sm, 0.938rem);\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__row--contact-point {\n max-width: 100%;\n width: 100%;\n gap: var(--spacing-2xs, 0.625rem);\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__row--contact-point > .profile-edit-dialog__field {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__row--contact-point > .profile-edit-dialog__field > .label {\n display: block;\n width: 100%;\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__row--contact-point.profile-edit-dialog__row--equal > .profile-edit-dialog__field-type.profile-edit-dialog__field-type--contact-point {\n flex: 0 0 6.4375rem;\n width: 6.4375rem;\n min-width: 6.4375rem;\n max-width: 6.4375rem;\n}\n\n.profile-edit-dialog__field-type--contact-point select {\n width: auto;\n max-width: none;\n min-width: 6.4375rem;\n}\n\n.profile-edit-dialog__row--address-header {\n max-width: 34rem;\n align-items: flex-end;\n}\n\n.profile-edit-dialog__row--inline-end {\n justify-content: flex-end;\n max-width: 100%;\n}\n\n.profile-edit-dialog__checkbox-label {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xs);\n margin-left: auto;\n cursor: pointer;\n}\n\n.profile-edit-dialog__checkbox-input {\n width: 1rem;\n height: 1rem;\n margin: 0;\n flex: 0 0 auto;\n accent-color: var(--color-primary, #7C4DFF);\n cursor: pointer;\n}\n\n.profile-edit-dialog__checkbox-input:focus-visible {\n outline: var(--focus-indicator-width, 2px) solid var(--color-primary, #7C4DFF);\n outline-offset: 2px;\n}\n\n.profile-edit-dialog__checkbox-input:disabled {\n opacity: var(--opacity-disabled, 0.5);\n}\n\n/* The street-address row is a standalone label, so cap its width like the flex rows. */\n.profile-edit-dialog__section fieldset > .profile-edit-dialog__field {\n max-width: 34rem;\n}\n\n.profile-edit-dialog__field-type--wide {\n flex: 1 1 auto;\n min-width: 0;\n width: 100%;\n max-width: 100%;\n}\n\n.profile-edit-dialog__field-type--contact-point {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n align-self: flex-start;\n}\n\n.profile-edit-dialog__actions {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n}\n\n.profile-edit-dialog__actions--edge {\n margin-left: auto;\n}\n\n.profile-edit-dialog__input-wrap {\n position: relative;\n width: 100%;\n}\n\n.profile-edit-dialog__input--with-action {\n width: 100%;\n box-sizing: border-box;\n padding-right: 7.5rem;\n}\n\n.profile-edit-dialog__input--with-leading-icon {\n width: 100%;\n box-sizing: border-box;\n padding-left: 2.1rem;\n}\n\n.profile-edit-dialog__search-icon {\n position: absolute;\n left: var(--spacing-2xs, 0.625rem);\n top: 50%;\n transform: translateY(-50%);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--gray-400, #99A1AF);\n pointer-events: none;\n z-index: 1;\n}\n\n.profile-edit-dialog__search-icon svg {\n display: block;\n width: 0.8125rem;\n height: 0.8125rem;\n}\n\n.profile-edit-dialog__delete-button {\n min-height: var(--min-touch-target, 44px);\n min-width: var(--min-touch-target, 44px);\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n}\n\n#profile-modal .modal button.profile-edit-dialog__delete-button {\n min-height: var(--min-touch-target, 44px);\n min-width: var(--min-touch-target, 44px);\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: inherit;\n box-shadow: none;\n}\n\n.profile-edit-dialog__delete-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.1rem;\n height: 1.1rem;\n fill: currentColor;\n}\n\n.profile-edit-dialog__delete-icon svg {\n width: 1.1rem;\n height: 1.1rem;\n}\n\n.profile-edit-dialog__delete-button:hover,\n.profile-edit-dialog__delete-button:focus-visible {\n color: var(--color-danger, #b42318);\n}\n\n.profile-edit-dialog__image-button {\n text-align: center;\n font-size: var(--font-size-xxs, 0.75rem); /* 12 px */\n font-weight: var(--font-weight-xbold, 700);\n line-height: var(--line-height-base, 1.5); /* 150% */\n border-radius: var(--border-radius-base, 0.3125rem);\n border: 0.8px solid var(--gray-300, #D1D5DC);\n}\n\n.profile-edit-dialog__image-upload-button {\n color: var(--gray-900, #101828);\n border: 0.8px solid var(--gray-300, #D1D5DC);\n background: var(--white, #FFF);\n padding: 6.6px 11.075px 7px 12.8px;\n}\n\n.profile-edit-dialog__image-remove-button {\n color: var(--red-600, #E7000B);\n padding: 6.6px 13.037px 7px 13.8px;\n border: 0.8px solid rgba(0, 0, 0, 0.00);\n background: var(--gray-100, #F3F4F6);\n}\n\n#profile-modal .modal .profile-edit-dialog__image-upload-button:hover,\n#profile-modal .modal .profile-edit-dialog__image-upload-button:focus-visible,\n#profile-modal .modal .profile-edit-dialog__image-remove-button:hover,\n#profile-modal .modal .profile-edit-dialog__image-remove-button:focus-visible {\n background: var(--gray-100, #F3F4F6) !important;\n border-color: var(--gray-400, #99A1AF) !important;\n}\n\n/* Placeholder class for project paste action styling. */\n.profile-edit-dialog__paste-button {\n display: flex;\n padding: 0.25rem 0.375rem; /* 4px 6px */\n align-items: center;\n position: absolute;\n background: var(--white, #fff);\n border: 0;\n outline: none;\n white-space: nowrap;\n right: var(--spacing-2xs, 0.625rem);\n top: 50%;\n transform: translateY(-50%);\n z-index: 1;\n color: var(--gray-500, #6A7282);\n font-size: 0.75rem; /* 12px */\n font-weight: var(--font-weight-normal, 400);\n}\n\n.profile-edit-dialog__paste-button:focus,\n.profile-edit-dialog__paste-button:focus-visible {\n outline: none;\n}\n\n/* remove the regular button styling for paste */\n#profile-modal .modal button.profile-edit-dialog__paste-button,\n#profile-modal .modal button.profile-edit-dialog__paste-button:hover,\n#profile-modal .modal button.profile-edit-dialog__paste-button:focus,\n#profile-modal .modal button.profile-edit-dialog__paste-button:focus-visible,\n#profile-modal .modal button.profile-edit-dialog__paste-button:active {\n border: 0;\n outline: none;\n box-shadow: none;\n -webkit-appearance: none;\n appearance: none;\n}\n.profile-edit-dialog__paste-icon {\n width: 0.694rem; /* 11.105px */\n height: 0.813rem; /* 13.038px */\n fill: var(--gray-500, #6A7282);\n}\n#profile-modal .modal button.profile-edit-dialog__drag-handle {\n min-height: 1.75rem;\n min-width: 1.75rem;\n padding: 0;\n border: 0;\n background: transparent;\n box-shadow: none;\n}\n\n.profile-edit-dialog__row--drop-target {\n outline: 1px dashed var(--gray-400, #99A1AF);\n outline-offset: 2px;\n}\n\n#profile-modal .modal button.profile-edit-dialog__delete-button:hover,\n#profile-modal .modal button.profile-edit-dialog__delete-button:focus-visible {\n border: 0;\n background: transparent;\n color: var(--color-danger, #b42318);\n}\n\n.profile-edit-dialog__field input,\n.profile-edit-dialog__field select,\n.profile-edit-dialog__field-type input,\n.profile-edit-dialog__field-type select {\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n min-height: var(--min-touch-target, 44px);\n height: var(--min-touch-target, 44px);\n border-radius: var(--border-radius-base, 0.3125rem);\n border: 1px solid var(--gray-400, #99A1AF);\n background: var(--white, #FFF);\n color: var(--gray-900, #101828);\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: var(--font-weight-medium, 500);\n padding: var(--spacing-2xs, 0.625rem);\n}\n\n.profile-edit-dialog__field input.profile-edit-dialog__input--with-leading-icon {\n padding-left: 2.1rem;\n}\n\n/* Keep phone/email contact-point type selects compact. */\n.profile-edit-dialog__field-type--contact-point > select {\n display: inline-block;\n width: auto !important;\n max-width: none !important;\n min-width: 0 !important;\n}\n\n/* In heading edit, force both type selects to fill the same fixed wrapper width. */\n.profile-edit-dialog--heading .profile-edit-dialog__row--contact-point > .profile-edit-dialog__field-type.profile-edit-dialog__field-type--contact-point > select {\n display: block;\n width: 100% !important;\n min-width: 0 !important;\n max-width: 100% !important;\n}\n\n/* Keep phone/email type selects compact after the generic full-width rule above. */\n.profile-edit-dialog__field-type--contact-point select {\n width: fit-content;\n max-width: none;\n min-width: 6.4375rem;\n}\n\n.profile-edit-dialog__textarea {\n color: var(--gray-900, #101828);\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: var(--font-weight-md, 500);\n line-height: var(--line-height-loose, 1.6); /* 22.4px */\n border-radius: var(--border-radius-base, 0.3125rem);\n border: var(--border-width-sm, 0.1rem) solid var(--gray-400, #99A1AF);\n background: var(--white, #FFF);\n}\n\n.profile-edit-dialog__field textarea,\n.profile-edit-dialog__field-type textarea {\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n min-height: var(--min-touch-target, 44px);\n}\n\n/* Dedicated hook for the social account type select in SocialEditDialog. */\n.profile-edit-dialog__social-account-select {\n display: block;\n width: 100%;\n min-width: 0;\n max-width: 100%;\n box-sizing: border-box;\n min-height: var(--min-touch-target, 44px);\n height: var(--min-touch-target, 44px);\n border-radius: var(--border-radius-base, 0.3125rem);\n border: 1px solid var(--gray-400, #99A1AF);\n background: var(--white, #FFF);\n color: var(--gray-900, #101828);\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: var(--font-weight-medium, 500);\n padding: var(--spacing-2xs, 0.625rem);\n\n\n}\n\n.profile-edit-dialog__bio-field-container textarea {\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n min-height: var(--min-touch-target, 44px);\n}\n\n.profile-edit-dialog__textarea {\n min-height: 10rem !important;\n height: auto;\n resize: vertical;\n}\n\n.profile-edit-dialog__field--stack small {\n justify-self: end;\n text-align: right;\n}\n\n@media (max-width: 640px) {\n .profile-edit-dialog__row {\n max-width: 100%;\n flex-direction: column;\n align-items: stretch;\n }\n\n .profile-edit-dialog__row--equal > .profile-edit-dialog__field,\n .profile-edit-dialog__row--equal > .profile-edit-dialog__field-type {\n flex: 1 1 auto;\n }\n\n .profile-edit-dialog__field-type {\n flex: 1 1 auto;\n }\n\n .profile-edit-dialog__field-type--contact-point {\n flex: 1 1 auto;\n max-width: 100%;\n }\n\n .profile-edit-dialog__row--address-header {\n flex-direction: row;\n align-items: flex-end;\n }\n\n .profile-edit-dialog__row--social {\n margin-left: 0;\n gap: var(--spacing-2xs, 0.625rem);\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n }\n\n .profile-edit-dialog__row--social .profile-edit-dialog__social-icon {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n .profile-edit-dialog__field--social-type {\n flex: 0 0 5.5rem;\n width: 5.5rem;\n max-width: 5.5rem;\n }\n\n .profile-edit-dialog__field--social-url {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .profile-edit-dialog__field--resume-location {\n flex: 1 1 100%;\n width: 100%;\n max-width: 100%;\n }\n\n .profile-edit-dialog__row--language {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n }\n\n .profile-edit-dialog__row--language > .profile-edit-dialog__field {\n flex: 1 1 0;\n min-width: 0;\n }\n\n .profile-edit-dialog__row--resume-entry-header {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n width: 100%;\n max-width: 100%;\n }\n\n .profile-edit-dialog__row--resume-entry-header > .profile-edit-dialog__actions--edge {\n margin-left: auto;\n }\n\n .profile-edit-dialog__row--skill {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n gap: var(--spacing-2xs, 0.625rem);\n }\n\n .profile-edit-dialog__row--skill > .profile-edit-dialog__field {\n flex: 1 1 0;\n min-width: 0;\n }\n\n .profile-edit-dialog__row--skill > .profile-edit-dialog__actions {\n flex: 0 0 auto;\n margin-left: 0;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n gap: var(--spacing-xs, 0.75rem);\n width: 100%;\n max-width: 100%;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo > header {\n margin-bottom: 0;\n flex: 0 0 auto;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile__hero,\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile__hero-alt {\n width: 5.5rem;\n height: 5.5rem;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile__hero-alt {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile-edit-dialog__image-camera-button {\n display: inline-flex;\n right: var(--spacing-xxs, 0.3125rem);\n bottom: var(--spacing-xxs, 0.3125rem);\n width: 1.875rem;\n min-width: 1.875rem;\n min-height: 1.875rem;\n }\n\n #profile-modal .modal button.profile-edit-dialog__image-camera-button {\n display: inline-flex !important;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile-edit-dialog__image-preview {\n flex: 1 1 auto;\n min-width: 0;\n gap: var(--spacing-xxs, 0.3125rem);\n width: 100%;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile-edit-dialog__image-preview-label {\n font-size: var(--font-size-sm, 0.875rem);\n line-height: var(--line-height-tight, 1.25);\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile-edit-dialog__image-preview-description {\n font-size: 10px;\n line-height: var(--line-height-base, 1.4);\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile-edit-dialog__image-preview-actions {\n flex-wrap: nowrap;\n gap: var(--spacing-xs, 0.5rem);\n width: 100%;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile-edit-dialog__image-button {\n flex: 1 1 0;\n width: 100%;\n padding: 0 0.75rem;\n }\n\n .profile-edit-dialog__row--inline-end {\n justify-content: flex-start;\n }\n\n .profile-edit-dialog__actions {\n justify-content: flex-start;\n }\n\n .profile-edit-dialog__row--address-header .profile-edit-dialog__actions {\n justify-content: flex-end;\n }\n\n .profile-edit-dialog__textarea {\n min-height: 15rem !important;\n }\n\n .profile-edit-dialog__input-help-text {\n display: none;\n }\n}\n","",{version:3,sources:["webpack://./src/styles/EditDialogs.css"],names:[],mappings:"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",sourcesContent:[".profile-edit-dialog__section {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-xs);\n}\n\n.profile__edit-form {\n width: 100%;\n}\n\n.profile-edit-dialog__section h4 {\n margin: 0;\n}\n\n.profile-edit-dialog__section fieldset {\n width: 100%;\n margin: 0;\n display: grid;\n gap: var(--spacing-sm);\n border: 0;\n padding: 0;\n min-inline-size: 0;\n}\n.profile-edit-dialog__field-description {\n color: var(--gray-600, #4A5565);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-normal, normal);\n line-height: var(--line-height-base, 1.5); /* 21px */\n}\n\n.profile-edit-dialog__bio-field-container {\n display: flex;\n width: 100%;\n max-width: 34rem;\n padding: 0;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs, 0.75rem);\n box-sizing: border-box;\n margin: 0;\n}\n\n.profile-edit-dialog__row {\n display: flex;\n align-items: flex-start;\n gap: var(--spacing-sm);\n max-width: 34rem;\n}\n\n.profile-edit-dialog__section--resume fieldset {\n gap: var(--spacing-xs, 0.75rem);\n}\n\n.profile-edit-dialog__row--language {\n margin-left: calc(-1 * var(--spacing-xs, 0.75rem));\n}\n\n.profile-edit-dialog__row--social {\n margin-left: calc(-1 * var(--spacing-2xs, 0.625rem));\n max-width: 100%;\n width: 100%;\n}\n\n.profile-edit-dialog__field--social-type {\n flex: 0 0 7rem;\n width: 7rem;\n max-width: 7rem;\n}\n\n.profile-edit-dialog__field--social-url {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.profile-edit-dialog__row--full {\n max-width: 100%;\n width: 100%;\n}\n\n.profile-edit-dialog__row--project {\n max-width: 100%;\n width: 100%;\n}\n\n.profile-edit-dialog__row--resume-entry-header {\n align-items: center;\n border-bottom: 1px solid var(--gray-400, #99A1AF);\n}\n\n.profile-edit-dialog__row--resume-entry-header > .profile-edit-dialog__entry-heading {\n margin: 0;\n}\n\n.profile-edit-dialog__entry-heading {\n margin: 0;\n color: var(--gray-700, #364153);\n font-size: var(--font-size-sm, 0.875rem);\n font-style: normal;\n font-weight: var(--font-weight-md, 500);\n line-height: normal;\n}\n\n.educationEditSection .profile-edit-dialog__section-heading {\n margin: 0;\n color: var(--gray-700, #364153);\n font-size: 16px;\n font-weight: 500;\n}\n\n.profile-edit-dialog__row--resume-entry-header .profile-edit-dialog__delete-button,\n#profile-modal .modal .profile-edit-dialog__row--resume-entry-header button.profile-edit-dialog__delete-button {\n min-height: 1.75rem;\n min-width: 1.75rem;\n}\n\n/* Force two direct children to split the row into equal columns. */\n.profile-edit-dialog__row--equal > .profile-edit-dialog__field,\n.profile-edit-dialog__row--equal > .profile-edit-dialog__field-type {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.profile-edit-dialog__image-preview {\n display: grid;\n gap: var(--spacing-xs);\n}\n\n.profile-edit-dialog__image-preview-label,\n.profile-edit-dialog__image-preview-description {\n margin: 0;\n}\n\n.profile-edit-dialog__image-preview-actions {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n}\n\n.profile-edit-dialog__image-frame {\n position: relative;\n display: inline-block;\n line-height: 0;\n}\n\n.profile-edit-dialog__image-camera-button {\n display: none;\n position: absolute;\n right: var(--spacing-2xs, 0.625rem);\n bottom: var(--spacing-2xs, 0.625rem);\n z-index: 1;\n}\n\n/* Override modal-wide button defaults for the small camera overlay control. */\n#profile-modal .modal button.profile-edit-dialog__image-camera-button {\n display: none !important;\n position: absolute;\n right: var(--spacing-2xs, 0.625rem);\n bottom: var(--spacing-2xs, 0.625rem);\n width: 1.25rem;\n height: 1.25rem;\n min-width: 1.25rem;\n min-height: 1.25rem;\n padding: 3px;\n background: var(--white, #FFF);\n border-radius: 3.333px;\n box-shadow: 0 0 4.444px 0 rgba(0, 0, 0, 0.25);\n flex-shrink: 0;\n}\n\n.profile-edit-dialog__image-camera-button svg {\n width: 0.875rem !important;\n height: 0.875rem !important;\n display: block;\n flex-shrink: 0;\n}\n.profile-edit-dialog__image-camera-capture-row {\n display: flex;\n justify-content: center;\n width: 100%;\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__image-camera-capture-row {\n margin-bottom: calc(var(--spacing-lg, 1.25rem) / -2);\n}\n\n.profile-edit-dialog__image-camera-capture-frame {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: fit-content;\n max-width: 100%;\n margin-left: auto;\n margin-right: auto;\n margin-top: calc(var(--spacing-xs, 0.625rem) / 2);\n margin-bottom: var(--spacing-xs, 0.625rem);\n padding: 10px;\n box-sizing: border-box;\n border: 1px solid var(--gray-200, #E5E7EB);\n border-radius: 8px;\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__image-camera-capture-frame {\n margin-top: calc(var(--spacing-xs, 0.625rem) / 4);\n margin-bottom: calc(var(--spacing-xs, 0.625rem) / 2);\n}\n\n.profile-edit-dialog__image-camera-capture-frame[hidden] {\n display: none;\n}\n\n.profile-edit-dialog__image-camera-capture-frame table {\n border-collapse: collapse;\n width: 100%;\n table-layout: fixed;\n}\n\n.profile-edit-dialog__image-camera-capture-frame td {\n text-align: center;\n vertical-align: middle;\n}\n\n.profile-edit-dialog__image-camera-capture-frame tr:last-child {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: var(--spacing-2xs, 0.625rem);\n}\n\n.profile-edit-dialog__image-camera-capture-frame tr:last-child td {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n width: auto;\n}\n\n.profile-edit-dialog__image-camera-capture-frame tr:last-child td:first-child {\n margin-right: auto;\n}\n\n#profile-modal .modal .profile-edit-dialog__image-camera-capture-frame tr:last-child td:first-child button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.profile-edit-dialog__camera-control {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.profile-edit-dialog__camera-control-actions {\n display: flex;\n align-items: center;\n justify-content: center !important;\n gap: var(--spacing-2xs, 0.625rem);\n width: max-content;\n margin-left: auto;\n margin-right: auto;\n margin-top: calc(var(--spacing-2xs, 0.625rem) / 2);\n align-self: center;\n}\n\n.profile-edit-dialog__camera-control-cancel {\n position: absolute;\n top: 0;\n right: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: 0 !important;\n background: transparent !important;\n box-shadow: none !important;\n color: var(--gray-600, #4A5565) !important;\n margin-right: 0 !important;\n}\n\n.profile-edit-dialog__camera-control-cancel svg {\n display: block;\n}\n\n#profile-modal .modal .profile-edit-dialog__camera-control-cancel:hover,\n#profile-modal .modal .profile-edit-dialog__camera-control-cancel:focus-visible {\n background: transparent !important;\n border: 0 !important;\n color: var(--gray-900, #101828) !important;\n}\n/* display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 2rem;\n padding: 0.25rem 0.625rem;\n border: 1px solid var(--gray-300, #D5D7DA) !important;\n -- background: var(--gray-200, #E5E7EB) !important; \n background: var(--gray-100, #FFF) !important;\n color: var(--gray-700, #364153) !important;\n box-shadow: none !important;\n border-radius: 0.375rem;\n font-weight: var(--font-weight-md, 500); */\n.profile-edit-dialog__camera-control-action {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n font-size: var(--font-size-xxs, 0.75rem) !important; /* 12 px */\n font-weight: var(--font-weight-xbold, 700) !important;\n line-height: var(--line-height-base, 1.5) !important; /* 150% */\n border-radius: var(--border-radius-base, 0.3125rem) !important;\n border: 0.8px solid var(--gray-300, #D1D5DC) !important;\n color: var(--gray-900, #101828) !important;\n background: var(--white, #FFF) !important;\n padding: 6.6px 11.075px 7px 12.8px !important;\n}\n\n#profile-modal .modal .profile-edit-dialog__camera-control-actions button:hover,\n#profile-modal .modal .profile-edit-dialog__camera-control-actions button:focus-visible {\n background: var(--gray-100, #F3F4F6) !important;\n border-color: var(--gray-400, #99A1AF) !important;\n}\n\n.profile-edit-dialog__image-camera-capture-frame video,\n.profile-edit-dialog__image-camera-capture-frame canvas {\n display: block;\n width: 100%;\n max-width: 260px;\n height: auto;\n border-radius: 0.5rem;\n margin: 0 auto;\n}\n\n#profile-modal .modal .profile-edit-dialog__image-camera-capture-frame button {\n font-size: var(--font-size-sm, 0.875rem);\n}\n\n.profile-edit-dialog__image-upload-button,\n.profile-edit-dialog__image-remove-button {\n min-height: var(--min-touch-target, 44px);\n padding: 0 var(--spacing-sm);\n}\n\n.profile-edit-dialog__field,\n.profile-edit-dialog__field-type {\n display: block;\n margin: 0;\n}\n\n.profile-edit-dialog__field-type {\n width: 100%;\n}\n\n.profile-edit-dialog__field {\n /* flex: 1 1 auto; */\n min-width: 0;\n}\n\n.profile__edit-form--resume .profile-edit-dialog__field,\n.profile__edit-form--resume .profile-edit-dialog__field-type:not(.hidden),\n.profile__edit-form--contact-info .profile-edit-dialog__field,\n.profile__edit-form--contact-info .profile-edit-dialog__field-type:not(.hidden) {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xxs, 0.3125rem);\n flex: 1 0 0;\n}\n\n.profile__edit-form--resume .profile-edit-dialog__row {\n max-width: 100%;\n width: 100%;\n}\n\n.profile__edit-form--resume .profile-edit-dialog__section fieldset > .profile-edit-dialog__field {\n max-width: 100%;\n}\n\n.profile__edit-form--resume .profile-edit-dialog__field > input,\n.profile__edit-form--resume .profile-edit-dialog__field > select,\n.profile__edit-form--resume .profile-edit-dialog__field > textarea,\n.profile__edit-form--resume .profile-edit-dialog__field-type > input,\n.profile__edit-form--resume .profile-edit-dialog__field-type > select,\n.profile__edit-form--resume .profile-edit-dialog__field-type > textarea,\n.profile__edit-form--contact-info .profile-edit-dialog__field > input,\n.profile__edit-form--contact-info .profile-edit-dialog__field > select,\n.profile__edit-form--contact-info .profile-edit-dialog__field > textarea,\n.profile__edit-form--contact-info .profile-edit-dialog__field-type > input,\n.profile__edit-form--contact-info .profile-edit-dialog__field-type > select,\n.profile__edit-form--contact-info .profile-edit-dialog__field-type > textarea {\n align-self: stretch;\n}\n\n.profile-edit-dialog__field--resume-location {\n flex: 1 0 0;\n width: auto;\n max-width: none;\n}\n\n.profile-edit-dialog__row--resume-dates {\n max-width: 100%;\n width: 100%;\n}\n\n.profile-edit-dialog__field--date-group {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.profile-edit-dialog__date-pair {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n width: 100%;\n}\n\n.profile-edit-dialog__date-pair > select {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.profile-edit-dialog__field--stack {\n display: grid;\n gap: var(--spacing-xxs);\n}\n\n.profile-edit-dialog__field--stack > small {\n display: block;\n width: 100%;\n text-align: right;\n}\n\n.profile-edit-dialog__bio-field-container > small {\n align-self: flex-end;\n text-align: right;\n}\n\n.profile-edit-dialog__field--full {\n max-width: 100% !important;\n width: 100%;\n}\n\n.profile-edit-dialog__field--row-width {\n max-width: 34rem;\n width: 100%;\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__row,\n.profile-edit-dialog--heading .profile-edit-dialog__field--row-width {\n max-width: 100%;\n width: 100%;\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo {\n padding-bottom: calc(var(--spacing-sm, 0.938rem) / 2);\n margin-bottom: calc(var(--spacing-sm, 0.938rem) / 2);\n border-bottom: 1px solid var(--slate-200, #E2E8F0);\n}\n\n.profile-edit-dialog--heading .profile-edit {\n gap: calc(var(--spacing-lg, 1.25rem) / 2);\n}\n\n.profile-edit-dialog__login-message {\n margin: 0;\n font-size: var(--font-size-xs, 0.75rem);\n color: var(--red-600, #E7000B);\n}\n\n.profile-edit-dialog__section + .profile-edit-dialog__login-message {\n margin-top: var(--spacing-sm, 0.938rem);\n}\n\n.profile__edit-form--projects .profile-edit-dialog__login-message {\n margin-top: var(--spacing-sm, 0.938rem);\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__row--contact-point {\n max-width: 100%;\n width: 100%;\n gap: var(--spacing-2xs, 0.625rem);\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__row--contact-point > .profile-edit-dialog__field {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__row--contact-point > .profile-edit-dialog__field > .label {\n display: block;\n width: 100%;\n}\n\n.profile-edit-dialog--heading .profile-edit-dialog__row--contact-point.profile-edit-dialog__row--equal > .profile-edit-dialog__field-type.profile-edit-dialog__field-type--contact-point {\n flex: 0 0 6.4375rem;\n width: 6.4375rem;\n min-width: 6.4375rem;\n max-width: 6.4375rem;\n}\n\n.profile-edit-dialog__field-type--contact-point select {\n width: auto;\n max-width: none;\n min-width: 6.4375rem;\n}\n\n.profile-edit-dialog__row--address-header {\n max-width: 34rem;\n align-items: flex-end;\n}\n\n.profile-edit-dialog__row--inline-end {\n justify-content: flex-end;\n max-width: 100%;\n}\n\n.profile-edit-dialog__checkbox-label {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xs);\n margin-left: auto;\n cursor: pointer;\n}\n\n.profile-edit-dialog__checkbox-input {\n width: 1rem;\n height: 1rem;\n margin: 0;\n flex: 0 0 auto;\n accent-color: var(--color-primary, #7C4DFF);\n cursor: pointer;\n}\n\n.profile-edit-dialog__checkbox-input:focus-visible {\n outline: var(--focus-indicator-width, 2px) solid var(--color-primary, #7C4DFF);\n outline-offset: 2px;\n}\n\n.profile-edit-dialog__checkbox-input:disabled {\n opacity: var(--opacity-disabled, 0.5);\n}\n\n/* The street-address row is a standalone label, so cap its width like the flex rows. */\n.profile-edit-dialog__section fieldset > .profile-edit-dialog__field {\n max-width: 34rem;\n}\n\n.profile-edit-dialog__field-type--wide {\n flex: 1 1 auto;\n min-width: 0;\n width: 100%;\n max-width: 100%;\n}\n\n.profile-edit-dialog__field-type--contact-point {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n align-self: flex-start;\n}\n\n.profile-edit-dialog__actions {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n}\n\n.profile-edit-dialog__actions--edge {\n margin-left: auto;\n}\n\n.profile-edit-dialog__input-wrap {\n position: relative;\n width: 100%;\n}\n\n.profile-edit-dialog__input--with-action {\n width: 100%;\n box-sizing: border-box;\n padding-right: 7.5rem;\n}\n\n.profile-edit-dialog__input--with-leading-icon {\n width: 100%;\n box-sizing: border-box;\n padding-left: 2.1rem;\n}\n\n.profile-edit-dialog__search-icon {\n position: absolute;\n left: var(--spacing-2xs, 0.625rem);\n top: 50%;\n transform: translateY(-50%);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--gray-400, #99A1AF);\n pointer-events: none;\n z-index: 1;\n}\n\n.profile-edit-dialog__search-icon svg {\n display: block;\n width: 0.8125rem;\n height: 0.8125rem;\n}\n\n.profile-edit-dialog__delete-button {\n min-height: var(--min-touch-target, 44px);\n min-width: var(--min-touch-target, 44px);\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n}\n\n#profile-modal .modal button.profile-edit-dialog__delete-button {\n min-height: var(--min-touch-target, 44px);\n min-width: var(--min-touch-target, 44px);\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: inherit;\n box-shadow: none;\n}\n\n.profile-edit-dialog__delete-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.1rem;\n height: 1.1rem;\n fill: currentColor;\n}\n\n.profile-edit-dialog__delete-icon svg {\n width: 1.1rem;\n height: 1.1rem;\n}\n\n.profile-edit-dialog__delete-button:hover,\n.profile-edit-dialog__delete-button:focus-visible {\n color: var(--color-danger, #b42318);\n}\n\n.profile-edit-dialog__image-button {\n text-align: center;\n font-size: var(--font-size-xxs, 0.75rem); /* 12 px */\n font-weight: var(--font-weight-xbold, 700);\n line-height: var(--line-height-base, 1.5); /* 150% */\n border-radius: var(--border-radius-base, 0.3125rem);\n border: 0.8px solid var(--gray-300, #D1D5DC);\n}\n\n.profile-edit-dialog__image-upload-button {\n color: var(--gray-900, #101828);\n border: 0.8px solid var(--gray-300, #D1D5DC);\n background: var(--white, #FFF);\n padding: 6.6px 11.075px 7px 12.8px;\n}\n\n.profile-edit-dialog__image-remove-button {\n color: var(--red-600, #E7000B);\n padding: 6.6px 13.037px 7px 13.8px;\n border: 0.8px solid rgba(0, 0, 0, 0.00);\n background: var(--gray-100, #F3F4F6);\n}\n\n#profile-modal .modal .profile-edit-dialog__image-upload-button:hover,\n#profile-modal .modal .profile-edit-dialog__image-upload-button:focus-visible,\n#profile-modal .modal .profile-edit-dialog__image-remove-button:hover,\n#profile-modal .modal .profile-edit-dialog__image-remove-button:focus-visible {\n background: var(--gray-100, #F3F4F6) !important;\n border-color: var(--gray-400, #99A1AF) !important;\n}\n\n/* Placeholder class for project paste action styling. */\n.profile-edit-dialog__paste-button {\n display: flex;\n padding: 0.25rem 0.375rem; /* 4px 6px */\n align-items: center;\n position: absolute;\n background: var(--white, #fff);\n border: 0;\n outline: none;\n white-space: nowrap;\n right: var(--spacing-2xs, 0.625rem);\n top: 50%;\n transform: translateY(-50%);\n z-index: 1;\n color: var(--gray-500, #6A7282);\n font-size: 0.75rem; /* 12px */\n font-weight: var(--font-weight-normal, 400);\n}\n\n.profile-edit-dialog__paste-button:focus,\n.profile-edit-dialog__paste-button:focus-visible {\n outline: none;\n}\n\n/* remove the regular button styling for paste */\n#profile-modal .modal button.profile-edit-dialog__paste-button,\n#profile-modal .modal button.profile-edit-dialog__paste-button:hover,\n#profile-modal .modal button.profile-edit-dialog__paste-button:focus,\n#profile-modal .modal button.profile-edit-dialog__paste-button:focus-visible,\n#profile-modal .modal button.profile-edit-dialog__paste-button:active {\n border: 0;\n outline: none;\n box-shadow: none;\n -webkit-appearance: none;\n appearance: none;\n}\n.profile-edit-dialog__paste-icon {\n width: 0.694rem; /* 11.105px */\n height: 0.813rem; /* 13.038px */\n fill: var(--gray-500, #6A7282);\n}\n#profile-modal .modal button.profile-edit-dialog__drag-handle {\n min-height: 1.75rem;\n min-width: 1.75rem;\n padding: 0;\n border: 0;\n background: transparent;\n box-shadow: none;\n}\n\n.profile-edit-dialog__row--drop-target {\n outline: 1px dashed var(--gray-400, #99A1AF);\n outline-offset: 2px;\n}\n\n#profile-modal .modal button.profile-edit-dialog__delete-button:hover,\n#profile-modal .modal button.profile-edit-dialog__delete-button:focus-visible {\n border: 0;\n background: transparent;\n color: var(--color-danger, #b42318);\n}\n\n.profile-edit-dialog__field input,\n.profile-edit-dialog__field select,\n.profile-edit-dialog__field-type input,\n.profile-edit-dialog__field-type select {\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n min-height: var(--min-touch-target, 44px);\n height: var(--min-touch-target, 44px);\n border-radius: var(--border-radius-base, 0.3125rem);\n border: 1px solid var(--gray-400, #99A1AF);\n background: var(--white, #FFF);\n color: var(--gray-900, #101828);\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: var(--font-weight-medium, 500);\n padding: var(--spacing-2xs, 0.625rem);\n}\n\n.profile-edit-dialog__field input.profile-edit-dialog__input--with-leading-icon {\n padding-left: 2.1rem;\n}\n\n/* Keep phone/email contact-point type selects compact. */\n.profile-edit-dialog__field-type--contact-point > select {\n display: inline-block;\n width: auto !important;\n max-width: none !important;\n min-width: 0 !important;\n}\n\n/* In heading edit, force both type selects to fill the same fixed wrapper width. */\n.profile-edit-dialog--heading .profile-edit-dialog__row--contact-point > .profile-edit-dialog__field-type.profile-edit-dialog__field-type--contact-point > select {\n display: block;\n width: 100% !important;\n min-width: 0 !important;\n max-width: 100% !important;\n}\n\n/* Keep phone/email type selects compact after the generic full-width rule above. */\n.profile-edit-dialog__field-type--contact-point select {\n width: fit-content;\n max-width: none;\n min-width: 6.4375rem;\n}\n\n.profile-edit-dialog__textarea {\n color: var(--gray-900, #101828);\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: var(--font-weight-md, 500);\n line-height: var(--line-height-loose, 1.6); /* 22.4px */\n border-radius: var(--border-radius-base, 0.3125rem);\n border: var(--border-width-sm, 0.1rem) solid var(--gray-400, #99A1AF);\n background: var(--white, #FFF);\n}\n\n.profile-edit-dialog__field textarea,\n.profile-edit-dialog__field-type textarea {\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n min-height: var(--min-touch-target, 44px);\n}\n\n/* Dedicated hook for the social account type select in SocialEditDialog. */\n.profile-edit-dialog__social-account-select {\n display: block;\n width: 100%;\n min-width: 0;\n max-width: 100%;\n box-sizing: border-box;\n min-height: var(--min-touch-target, 44px);\n height: var(--min-touch-target, 44px);\n border-radius: var(--border-radius-base, 0.3125rem);\n border: 1px solid var(--gray-400, #99A1AF);\n background: var(--white, #FFF);\n color: var(--gray-900, #101828);\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: var(--font-weight-medium, 500);\n padding: var(--spacing-2xs, 0.625rem);\n\n\n}\n\n.profile-edit-dialog__bio-field-container textarea {\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n min-height: var(--min-touch-target, 44px);\n}\n\n.profile-edit-dialog__textarea {\n min-height: 10rem !important;\n height: auto;\n resize: vertical;\n}\n\n.profile-edit-dialog__field--stack small {\n justify-self: end;\n text-align: right;\n}\n\n@media (max-width: 640px) {\n .profile-edit-dialog__row {\n max-width: 100%;\n flex-direction: column;\n align-items: stretch;\n }\n\n .profile-edit-dialog__row--equal > .profile-edit-dialog__field,\n .profile-edit-dialog__row--equal > .profile-edit-dialog__field-type {\n flex: 1 1 auto;\n }\n\n .profile-edit-dialog__field-type {\n flex: 1 1 auto;\n }\n\n .profile-edit-dialog__field-type--contact-point {\n flex: 1 1 auto;\n max-width: 100%;\n }\n\n .profile-edit-dialog__row--address-header {\n flex-direction: row;\n align-items: flex-end;\n }\n\n .profile-edit-dialog__row--social {\n margin-left: 0;\n gap: var(--spacing-2xs, 0.625rem);\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n }\n\n .profile-edit-dialog__row--social .profile-edit-dialog__social-icon {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n .profile-edit-dialog__field--social-type {\n flex: 0 0 5.5rem;\n width: 5.5rem;\n max-width: 5.5rem;\n }\n\n .profile-edit-dialog__field--social-url {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .profile-edit-dialog__field--resume-location {\n flex: 1 1 100%;\n width: 100%;\n max-width: 100%;\n }\n\n .profile-edit-dialog__row--language {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n }\n\n .profile-edit-dialog__row--language > .profile-edit-dialog__field {\n flex: 1 1 0;\n min-width: 0;\n }\n\n .profile-edit-dialog__row--resume-entry-header {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n width: 100%;\n max-width: 100%;\n }\n\n .profile-edit-dialog__row--resume-entry-header > .profile-edit-dialog__actions--edge {\n margin-left: auto;\n }\n\n .profile-edit-dialog__row--skill {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n gap: var(--spacing-2xs, 0.625rem);\n }\n\n .profile-edit-dialog__row--skill > .profile-edit-dialog__field {\n flex: 1 1 0;\n min-width: 0;\n }\n\n .profile-edit-dialog__row--skill > .profile-edit-dialog__actions {\n flex: 0 0 auto;\n margin-left: 0;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n gap: var(--spacing-xs, 0.75rem);\n width: 100%;\n max-width: 100%;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo > header {\n margin-bottom: 0;\n flex: 0 0 auto;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile__hero,\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile__hero-alt {\n width: 5.5rem;\n height: 5.5rem;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile__hero-alt {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile-edit-dialog__image-camera-button {\n display: inline-flex;\n right: var(--spacing-xxs, 0.3125rem);\n bottom: var(--spacing-xxs, 0.3125rem);\n width: 1.875rem;\n min-width: 1.875rem;\n min-height: 1.875rem;\n }\n\n #profile-modal .modal button.profile-edit-dialog__image-camera-button {\n display: inline-flex !important;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile-edit-dialog__image-preview {\n flex: 1 1 auto;\n min-width: 0;\n gap: var(--spacing-xxs, 0.3125rem);\n width: 100%;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile-edit-dialog__image-preview-label {\n font-size: var(--font-size-sm, 0.875rem);\n line-height: var(--line-height-tight, 1.25);\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile-edit-dialog__image-preview-description {\n font-size: 10px;\n line-height: var(--line-height-base, 1.4);\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile-edit-dialog__image-preview-actions {\n flex-wrap: nowrap;\n gap: var(--spacing-xs, 0.5rem);\n width: 100%;\n }\n\n .profile-edit-dialog--heading .profile-edit-dialog__row--heading-photo .profile-edit-dialog__image-button {\n flex: 1 1 0;\n width: 100%;\n padding: 0 0.75rem;\n }\n\n .profile-edit-dialog__row--inline-end {\n justify-content: flex-start;\n }\n\n .profile-edit-dialog__actions {\n justify-content: flex-start;\n }\n\n .profile-edit-dialog__row--address-header .profile-edit-dialog__actions {\n justify-content: flex-end;\n }\n\n .profile-edit-dialog__textarea {\n min-height: 15rem !important;\n }\n\n .profile-edit-dialog__input-help-text {\n display: none;\n }\n}\n"],sourceRoot:""}]);const l=r},1569(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,'.profile__avatar {\n flex: 0 0 auto;\n}\n\n.profile__heading-top {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n grid-template-areas:\n "avatar info actions"\n "avatar details details";\n column-gap: var(--spacing-md, 1.25rem);\n row-gap: var(--spacing-sm, 0.75rem);\n align-items: start;\n width: 100%;\n}\n\n.profile__name {\ncolor: var(--color-text-heading, #000);\nfont-size: var(--font-size-xxl, 1.75rem); /* 28px */\nfont-weight: var(--font-weight-bold, 600);\nmargin: 0;\npadding: 0;\ntext-indent: 0;\nline-height: 1.2;\ntext-align: left;\ntransform: translateX(-4px);\n}\n\n.profile__info {\n grid-area: info;\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-width: 0;\n align-items: flex-start;\n}\n\n.profile__details {\n grid-area: details;\n color: var(--color-text-secondary, #4A5565);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n display: flex;\n width: 100%;\n align-content: flex-start;\n align-items: flex-start;\n flex-wrap: wrap;\n gap: var(--spacing-sm, 0.75rem) 2rem; /* 12px vertical, 32px horizontal */\n}\n\n.profile__info > .profile__header-bar {\n margin-left: 0;\n padding-left: 0;\n align-self: stretch;\n}\n\n.profile__header-bar {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 0.125rem;\n width: 100%;\n margin: 0;\n padding: 0;\n}\n\n.profile__heading-actions {\n grid-area: actions;\n margin-left: auto;\n align-self: flex-start;\n}\n\n.profile__avatar {\n grid-area: avatar;\n}\n\n.profile__heading-action-button {\n position: static;\n min-width: 0;\n width: auto;\n max-width: none;\n padding: var(--spacing-xxs, 0.3125rem);\n}\n.profile__identity {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n gap: 0.4375rem; /* 7px */\n justify-content: flex-start;\n width: 100%;\n flex-wrap: nowrap;\n}\n\n.profile__pronouns {\n color: var(--color-text-secondary, #4A5565);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-regular, 400);\n line-height: 1.2;\n}\n\n.profile__role-org {\n margin: 0;\n width: 100%;\n white-space: normal;\n color: var(--color-text-subheading, #101828);\n font-size: var(--font-size-base, 1rem);\n font-weight: var(--font-weight-medium, 500);\n line-height: 1.25;\n text-align: left;\n}\n\n.profile__meta-row,\n.profile__contact-row {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n justify-content: flex-start;\n column-gap: 0.25rem; /* 4px */\n row-gap: var(--spacing-xs, 0.5rem);\n align-items: start;\n margin: 0;\n padding: 0;\n width: 100%;\n}\n\n.profile__meta-row .profile__item,\n.profile__contact-row .profile__item {\n display: flex;\n align-items: center;\n gap: var(--spacing-2xs, 0.625rem);\n min-width: 0;\n}\n\n.profile__meta-row .profile__value,\n.profile__contact-row .profile__value {\n display: flex;\n align-items: flex-start;\n gap: var(--spacing-xxs, 0.3125rem);\n min-width: 0;\n white-space: normal !important;\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n.profile__meta-row .profile__value-text,\n.profile__contact-row .profile__value-text {\n min-width: 0;\n white-space: normal !important;\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n.profile__prefix-icon {\n display: inline-flex;\n align-items: center;\n margin-right: 0.125rem;\n}\n\n.profile__detail-icon {\n display: block;\n width: 1rem;\n height: 1rem;\n}\n\n.profile__hero {\n width: 140px;\n height: 140px;\n border-radius: var(--border-radius-full, 0.625rem); /* 10px */;\n border: var(--border-width-sm, 0.1rem) solid var(--color-primary, #7C4DFF);\n background: lightgray 50% / cover no-repeat;\n background-position: 50%;\n object-fit: cover;\n object-position: center;\n}\n\n.profile__hero-alt {\n width: 140px;\n height: 140px;\n padding: 0 36.4px; \n border-radius: var(--border-radius-full, 0.625rem); /* 10px */;\n border: 1.6px dashed #CBD5E1;\n background: #F8FAFC;\n box-sizing: border-box;\n}\n\n/* added because the icon wasn\'t centering on mobile\n due to styles in mashlib */\n.profile__hero-alt .profile__hero-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n}\n\n.profile__hero-alt .profile__hero-icon svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n@media (max-width: 640px) {\n .profile__heading-top {\n grid-template-columns: auto minmax(0, 1fr) auto;\n grid-template-areas:\n "avatar info actions"\n "details details details";\n column-gap: var(--spacing-sm, 0.75rem);\n row-gap: var(--spacing-sm, 0.75rem);\n }\n\n .profile__name {\n font-size: 1.5rem;\n line-height: 1.15;\n }\n\n .profile__identity {\n gap: 0.125rem;\n }\n\n .profile__pronouns {\n font-size: var(--font-size-xs, 0.75rem);\n line-height: 1.1;\n white-space: nowrap;\n }\n\n .profile__hero,\n .profile__hero-alt {\n width: 112px;\n height: 112px;\n }\n\n .profile__hero-alt {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n }\n\n .profile__hero-icon {\n display: block;\n margin: 0 auto;\n width: 48px;\n height: 48px;\n }\n\n .profile__details {\n gap: var(--spacing-xs, 0.5rem);\n }\n\n .profile__meta-row,\n .profile__contact-row {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n column-gap: 0.25rem;\n }\n}\n\n@container profile-pane (max-width: 640px) {\n .profile__heading-top {\n grid-template-columns: auto minmax(0, 1fr) auto;\n grid-template-areas:\n "avatar info actions"\n "details details details";\n column-gap: var(--spacing-sm, 0.75rem);\n row-gap: var(--spacing-sm, 0.75rem);\n }\n\n .profile__name {\n font-size: 1.5rem;\n line-height: 1.15;\n }\n\n .profile__identity {\n gap: 0.125rem;\n }\n\n .profile__pronouns {\n font-size: var(--font-size-xs, 0.75rem);\n line-height: 1.1;\n white-space: nowrap;\n }\n\n .profile__hero,\n .profile__hero-alt {\n width: 112px;\n height: 112px;\n }\n\n .profile__hero-alt {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n }\n\n .profile__hero-icon {\n display: block;\n margin: 0 auto;\n width: 48px;\n height: 48px;\n }\n\n .profile__details {\n gap: var(--spacing-xs, 0.5rem);\n }\n\n .profile__meta-row,\n .profile__contact-row {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n column-gap: 0.25rem;\n }\n}\n',"",{version:3,sources:["webpack://./src/styles/HeadingSection.css"],names:[],mappings:"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",sourcesContent:['.profile__avatar {\n flex: 0 0 auto;\n}\n\n.profile__heading-top {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n grid-template-areas:\n "avatar info actions"\n "avatar details details";\n column-gap: var(--spacing-md, 1.25rem);\n row-gap: var(--spacing-sm, 0.75rem);\n align-items: start;\n width: 100%;\n}\n\n.profile__name {\ncolor: var(--color-text-heading, #000);\nfont-size: var(--font-size-xxl, 1.75rem); /* 28px */\nfont-weight: var(--font-weight-bold, 600);\nmargin: 0;\npadding: 0;\ntext-indent: 0;\nline-height: 1.2;\ntext-align: left;\ntransform: translateX(-4px);\n}\n\n.profile__info {\n grid-area: info;\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-width: 0;\n align-items: flex-start;\n}\n\n.profile__details {\n grid-area: details;\n color: var(--color-text-secondary, #4A5565);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n display: flex;\n width: 100%;\n align-content: flex-start;\n align-items: flex-start;\n flex-wrap: wrap;\n gap: var(--spacing-sm, 0.75rem) 2rem; /* 12px vertical, 32px horizontal */\n}\n\n.profile__info > .profile__header-bar {\n margin-left: 0;\n padding-left: 0;\n align-self: stretch;\n}\n\n.profile__header-bar {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 0.125rem;\n width: 100%;\n margin: 0;\n padding: 0;\n}\n\n.profile__heading-actions {\n grid-area: actions;\n margin-left: auto;\n align-self: flex-start;\n}\n\n.profile__avatar {\n grid-area: avatar;\n}\n\n.profile__heading-action-button {\n position: static;\n min-width: 0;\n width: auto;\n max-width: none;\n padding: var(--spacing-xxs, 0.3125rem);\n}\n.profile__identity {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n gap: 0.4375rem; /* 7px */\n justify-content: flex-start;\n width: 100%;\n flex-wrap: nowrap;\n}\n\n.profile__pronouns {\n color: var(--color-text-secondary, #4A5565);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-regular, 400);\n line-height: 1.2;\n}\n\n.profile__role-org {\n margin: 0;\n width: 100%;\n white-space: normal;\n color: var(--color-text-subheading, #101828);\n font-size: var(--font-size-base, 1rem);\n font-weight: var(--font-weight-medium, 500);\n line-height: 1.25;\n text-align: left;\n}\n\n.profile__meta-row,\n.profile__contact-row {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n justify-content: flex-start;\n column-gap: 0.25rem; /* 4px */\n row-gap: var(--spacing-xs, 0.5rem);\n align-items: start;\n margin: 0;\n padding: 0;\n width: 100%;\n}\n\n.profile__meta-row .profile__item,\n.profile__contact-row .profile__item {\n display: flex;\n align-items: center;\n gap: var(--spacing-2xs, 0.625rem);\n min-width: 0;\n}\n\n.profile__meta-row .profile__value,\n.profile__contact-row .profile__value {\n display: flex;\n align-items: flex-start;\n gap: var(--spacing-xxs, 0.3125rem);\n min-width: 0;\n white-space: normal !important;\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n.profile__meta-row .profile__value-text,\n.profile__contact-row .profile__value-text {\n min-width: 0;\n white-space: normal !important;\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n.profile__prefix-icon {\n display: inline-flex;\n align-items: center;\n margin-right: 0.125rem;\n}\n\n.profile__detail-icon {\n display: block;\n width: 1rem;\n height: 1rem;\n}\n\n.profile__hero {\n width: 140px;\n height: 140px;\n border-radius: var(--border-radius-full, 0.625rem); /* 10px */;\n border: var(--border-width-sm, 0.1rem) solid var(--color-primary, #7C4DFF);\n background: lightgray 50% / cover no-repeat;\n background-position: 50%;\n object-fit: cover;\n object-position: center;\n}\n\n.profile__hero-alt {\n width: 140px;\n height: 140px;\n padding: 0 36.4px; \n border-radius: var(--border-radius-full, 0.625rem); /* 10px */;\n border: 1.6px dashed #CBD5E1;\n background: #F8FAFC;\n box-sizing: border-box;\n}\n\n/* added because the icon wasn\'t centering on mobile\n due to styles in mashlib */\n.profile__hero-alt .profile__hero-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n}\n\n.profile__hero-alt .profile__hero-icon svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n@media (max-width: 640px) {\n .profile__heading-top {\n grid-template-columns: auto minmax(0, 1fr) auto;\n grid-template-areas:\n "avatar info actions"\n "details details details";\n column-gap: var(--spacing-sm, 0.75rem);\n row-gap: var(--spacing-sm, 0.75rem);\n }\n\n .profile__name {\n font-size: 1.5rem;\n line-height: 1.15;\n }\n\n .profile__identity {\n gap: 0.125rem;\n }\n\n .profile__pronouns {\n font-size: var(--font-size-xs, 0.75rem);\n line-height: 1.1;\n white-space: nowrap;\n }\n\n .profile__hero,\n .profile__hero-alt {\n width: 112px;\n height: 112px;\n }\n\n .profile__hero-alt {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n }\n\n .profile__hero-icon {\n display: block;\n margin: 0 auto;\n width: 48px;\n height: 48px;\n }\n\n .profile__details {\n gap: var(--spacing-xs, 0.5rem);\n }\n\n .profile__meta-row,\n .profile__contact-row {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n column-gap: 0.25rem;\n }\n}\n\n@container profile-pane (max-width: 640px) {\n .profile__heading-top {\n grid-template-columns: auto minmax(0, 1fr) auto;\n grid-template-areas:\n "avatar info actions"\n "details details details";\n column-gap: var(--spacing-sm, 0.75rem);\n row-gap: var(--spacing-sm, 0.75rem);\n }\n\n .profile__name {\n font-size: 1.5rem;\n line-height: 1.15;\n }\n\n .profile__identity {\n gap: 0.125rem;\n }\n\n .profile__pronouns {\n font-size: var(--font-size-xs, 0.75rem);\n line-height: 1.1;\n white-space: nowrap;\n }\n\n .profile__hero,\n .profile__hero-alt {\n width: 112px;\n height: 112px;\n }\n\n .profile__hero-alt {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n }\n\n .profile__hero-icon {\n display: block;\n margin: 0 auto;\n width: 48px;\n height: 48px;\n }\n\n .profile__details {\n gap: var(--spacing-xs, 0.5rem);\n }\n\n .profile__meta-row,\n .profile__contact-row {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n column-gap: 0.25rem;\n }\n}\n'],sourceRoot:""}]);const l=r},1937(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,'/* ProfileCard.css */\n/* Uses utilities: .action-button-focus, .btn-primary, .flex-column-center, .text-truncate, .text-center, .text-wrap-anywhere, .section-centered, .btn-transparent */\n\n.profileCard {\n /* Component container */\n}\n\n.name {\n font-size: var(--font-size-xl);\n font-weight: 700;\n line-height: var(--line-height-tight);\n text-decoration: underline;\n text-underline-offset: 0.2em;\n margin: 0;\n letter-spacing: var(--letter-spacing-wide);\n}\n\n.profile__actions {\n color: var(--color-text-secondary);\n font-size: var(--font-size-base, 1rem);\n margin-bottom: var(--spacing-xs);\n}\n\n.buttonSubSection {\n width: 100%;\n min-width: 0;\n display: grid;\n}\n\n.buttonSubSection button {\n width: 100%;\n min-width: 0;\n}\n\n/* Ensure prompt inputs stretch to fit their container */\n.add-friend-button-container input[type="text"] {\n width: 100%;\n box-sizing: border-box;\n}\n\n.profile__qr-code {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 20px;\n align-self: stretch;\n /* OLD color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs); */\n}\n\n.details {\n color: var(--color-text-muted);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n max-width: 45ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* ProfileCard styles as regular CSS */\n.profile-card {\n border: 1px solid #ccc;\n padding: 16px;\n background: white;\n}\n',"",{version:3,sources:["webpack://./src/styles/ProfileCard.css"],names:[],mappings:"AAAA,oBAAoB;AACpB,oKAAoK;;AAEpK;EACE,wBAAwB;AAC1B;;AAEA;EACE,8BAA8B;EAC9B,gBAAgB;EAChB,qCAAqC;EACrC,0BAA0B;EAC1B,4BAA4B;EAC5B,SAAS;EACT,0CAA0C;AAC5C;;AAEA;EACE,kCAAkC;EAClC,sCAAsC;EACtC,gCAAgC;AAClC;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,aAAa;AACf;;AAEA;EACE,WAAW;EACX,YAAY;AACd;;AAEA,wDAAwD;AACxD;EACE,WAAW;EACX,sBAAsB;AACxB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,mBAAmB;EACnB,SAAS;EACT,mBAAmB;EACnB;;qCAEmC;AACrC;;AAEA;EACE,8BAA8B;EAC9B,gCAAgC;EAChC,oCAAoC;EACpC,eAAe;EACf,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA,sCAAsC;AACtC;EACE,sBAAsB;EACtB,aAAa;EACb,iBAAiB;AACnB",sourcesContent:['/* ProfileCard.css */\n/* Uses utilities: .action-button-focus, .btn-primary, .flex-column-center, .text-truncate, .text-center, .text-wrap-anywhere, .section-centered, .btn-transparent */\n\n.profileCard {\n /* Component container */\n}\n\n.name {\n font-size: var(--font-size-xl);\n font-weight: 700;\n line-height: var(--line-height-tight);\n text-decoration: underline;\n text-underline-offset: 0.2em;\n margin: 0;\n letter-spacing: var(--letter-spacing-wide);\n}\n\n.profile__actions {\n color: var(--color-text-secondary);\n font-size: var(--font-size-base, 1rem);\n margin-bottom: var(--spacing-xs);\n}\n\n.buttonSubSection {\n width: 100%;\n min-width: 0;\n display: grid;\n}\n\n.buttonSubSection button {\n width: 100%;\n min-width: 0;\n}\n\n/* Ensure prompt inputs stretch to fit their container */\n.add-friend-button-container input[type="text"] {\n width: 100%;\n box-sizing: border-box;\n}\n\n.profile__qr-code {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 20px;\n align-self: stretch;\n /* OLD color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs); */\n}\n\n.details {\n color: var(--color-text-muted);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n max-width: 45ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* ProfileCard styles as regular CSS */\n.profile-card {\n border: 1px solid #ccc;\n padding: 16px;\n background: white;\n}\n'],sourceRoot:""}]);const l=r},436(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,"/* ProfileView.css */\n/* Uses utilities: .section-bg, .text-center */\n\n\n.profile-grid .profile__main {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n margin-bottom: 0;\n overflow-wrap: anywhere;\n align-items: flex-start;\n}\n\n.profile-grid .profile__sidebar {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n text-align: left;\n border-radius: var(--border-radius-base);\n background: var(--color-background, #F8F9FB);\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n overflow-x: clip;\n}\n\n.profile-grid .profile__section {\n padding: var(--spacing-lg);\n border-radius: var(--border-radius-base);\n background: var(--white, #FFF);\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n overflow-x: clip;\n}\n\n.profile-grid .profile__section--empty {\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n overflow-x: clip;\n}\n\n\n/* SAM Not sure this is needed, and potentially should be moved somewhere else */\n.profile-grid .phone-type {\n font-size: var(--font-size-sm);\n line-height: var(--line-height-base);\n color: var(--color-text-secondary);\n}\n\n@container profile-pane (max-width: 1000px) {\n #main-content.profile-grid {\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n margin-inline: auto !important;\n padding-inline: var(--spacing-sm, 0.75rem) !important;\n }\n}\n\n","",{version:3,sources:["webpack://./src/styles/ProfileView.css"],names:[],mappings:"AAAA,oBAAoB;AACpB,8CAA8C;;;AAG9C;EACE,WAAW;EACX,eAAe;EACf,YAAY;EACZ,sBAAsB;EACtB,gBAAgB;EAChB,uBAAuB;EACvB,uBAAuB;AACzB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,oBAAoB;EACpB,gBAAgB;EAChB,wCAAwC;EACxC,4CAA4C;EAC5C,WAAW;EACX,eAAe;EACf,YAAY;EACZ,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA;EACE,0BAA0B;EAC1B,wCAAwC;EACxC,8BAA8B;EAC9B,sBAAsB;EACtB,WAAW;EACX,eAAe;EACf,YAAY;EACZ,gBAAgB;AAClB;;AAEA;EACE,sBAAsB;EACtB,WAAW;EACX,eAAe;EACf,YAAY;EACZ,gBAAgB;AAClB;;;AAGA,gFAAgF;AAChF;EACE,8BAA8B;EAC9B,oCAAoC;EACpC,kCAAkC;AACpC;;AAEA;EACE;IACE,WAAW;IACX,eAAe;IACf,sBAAsB;IACtB,8BAA8B;IAC9B,qDAAqD;EACvD;AACF",sourcesContent:["/* ProfileView.css */\n/* Uses utilities: .section-bg, .text-center */\n\n\n.profile-grid .profile__main {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n margin-bottom: 0;\n overflow-wrap: anywhere;\n align-items: flex-start;\n}\n\n.profile-grid .profile__sidebar {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n text-align: left;\n border-radius: var(--border-radius-base);\n background: var(--color-background, #F8F9FB);\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n overflow-x: clip;\n}\n\n.profile-grid .profile__section {\n padding: var(--spacing-lg);\n border-radius: var(--border-radius-base);\n background: var(--white, #FFF);\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n overflow-x: clip;\n}\n\n.profile-grid .profile__section--empty {\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n overflow-x: clip;\n}\n\n\n/* SAM Not sure this is needed, and potentially should be moved somewhere else */\n.profile-grid .phone-type {\n font-size: var(--font-size-sm);\n line-height: var(--line-height-base);\n color: var(--color-text-secondary);\n}\n\n@container profile-pane (max-width: 1000px) {\n #main-content.profile-grid {\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n margin-inline: auto !important;\n padding-inline: var(--spacing-sm, 0.75rem) !important;\n }\n}\n\n"],sourceRoot:""}]);const l=r},2270(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,'/* The following are the original styles for the ProjectsCard section. */\n.project-card__rail {\n display: flex;\n gap: 1rem;\n overflow-x: auto;\n padding: 0;\n margin: 0;\n list-style: none;\n scroll-snap-type: x proximity;\n}\n.project-card__follow-button {\n width: auto;\n border-radius: var(--border-radius-md, 0.5rem);\n border: var(--border-width-sm, 0.1rem) solid var(--color-primary, #7C4DFF); \n padding: 0.5rem 0.625rem; /* ~8px 10px, increased by ~2px in rem */\n color: var(--color-primary, #7C4DFF);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-md, 500);\n background: var(--white, #FFF);\n cursor: pointer;\n}\n\n.project-card__follow-button:hover {\n background: var(--lavender-400, #cbb9ff);\n}\n\n.project-card__rail::-webkit-scrollbar {\n height: 8px;\n}\n\n.project-card__rail::-webkit-scrollbar-thumb {\n background: #b0b7c3;\n border-radius: 999px;\n}\n\n.project-card {\n flex: 0 0 min(420px, 88vw);\n scroll-snap-align: start;\n border-radius: var(--border-radius-md, 0.5rem);\n border: var(--border-width-sm, 0.1rem) solid var(--gray-200, #E5E7EB);\n padding: var(--spacing-md, 1.25rem);\n justify-content: center;\n align-items: flex-start;\n gap: var(--spacing-sm, 0.938rem);\n flex-shrink: 0;\n}\n\n.project-card__link {\n display: block;\n color: inherit;\n text-decoration: none;\n}\n\n.project-card__link:hover .project-card__title,\n.project-card__link:focus-visible .project-card__title {\n text-decoration: underline;\n}\n\n.project-card__wrapper {\n display: grid;\n grid-template-columns: 88px 1fr;\n gap: 0.9rem;\n align-items: start;\n padding-bottom: 0.563rem;\n border-radius: var(--border-radius-md, 0.5rem);\n border-bottom: 1px solid var(--gray-200, #E5E7EB);\n}\n\n.project-card__thumb {\n width: 66px;\n height: 66px;\n overflow: hidden;\n border-radius: var(--border-radius-base, 0.3125rem);\n background: var(--gray-200, #E5E7EB);\n padding: 0.656rem var(--spacing-2xs, 0.625rem);\n aspect-ratio: 1/1;\n}\n\n.project-card__thumb-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n\n.project-card__thumb-fallback {\n width: 100%;\n height: 100%;\n font-size: 0.72rem;\n color: #5a6476;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.project-card__content {\n min-width: 0;\n}\n\n.project-card__title,\n.project-card__organization,\n.project-card__category,\n.project-card__meta,\n.project-card__description {\n margin: 0;\n}\n\n.project-card__title {\n overflow: hidden;\n color: var(--gray-900, #101828);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--font-size-lg, 1.125rem);\n font-weight: var(--font-weight-bold, 600);\n align-self: stretch;\n}\n\n.project-card__organization {\n margin-top: 0.35rem;\n color: var(--gray-700, #364153);\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: var(--font-weight-md, 500);\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n line-height: 1.35;\n max-height: calc(1.35em * 2);\n align-self: stretch;\n}\n\n.project-card__category {\n font-size: var(--font-size-xxs, 0.75rem);\n font-weight: var(--font-weight-md, 500);\n}\n\n.project-card__category--project {\n color: var(--purple-500, #AD46FF);\n \n}\n\n.project-card__category--community {\n color: var(--yellow-700, #A65F00);\n}\n\n.project-card__category--unknown {\n color: var(--slate-700, #314158);\n}\n\n.project-card__meta {\n margin-top: 0.55rem;\n overflow-wrap: anywhere;\n font-size: 0.86rem;\n}\n\n.project-card__footer {\n margin-top: 0.8rem;\n padding: 0.75rem;\n\n}\n\n.project-card__more-button {\n display: none;\n}\n\n@media (max-width: 640px) {\n .project-card__rail {\n flex-wrap: wrap;\n overflow-x: visible;\n scroll-snap-type: none;\n }\n\n .project-card {\n flex: 1 1 100%;\n max-width: 100%;\n }\n\n .profile-section-collapsible[data-mobile-expanded="false"] .project-card:nth-child(n + 3) {\n display: none;\n }\n\n .project-card__more-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n width: 100%;\n margin-top: 0.75rem;\n padding: 0;\n border: 0;\n background: transparent;\n color: var(--color-primary, #7C4DFF);\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: var(--font-weight-bold, 600);\n cursor: pointer;\n }\n\n .project-card__more-button[data-mobile-expanded="true"] .project-card__more-icon {\n transform: rotate(180deg);\n }\n\n .project-card__more-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: transform var(--animation-duration, 0.2s) ease;\n }\n}\n',"",{version:3,sources:["webpack://./src/styles/ProjectsCard.css"],names:[],mappings:"AAAA,yEAAyE;AACzE;EACE,aAAa;EACb,SAAS;EACT,gBAAgB;EAChB,UAAU;EACV,SAAS;EACT,gBAAgB;EAChB,6BAA6B;AAC/B;AACA;EACE,WAAW;EACX,8CAA8C;EAC9C,0EAA0E;EAC1E,wBAAwB,EAAE,wCAAwC;EAClE,oCAAoC;EACpC,wCAAwC,EAAE,SAAS;EACnD,uCAAuC;EACvC,8BAA8B;EAC9B,eAAe;AACjB;;AAEA;EACE,wCAAwC;AAC1C;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,mBAAmB;EACnB,oBAAoB;AACtB;;AAEA;EACE,0BAA0B;EAC1B,wBAAwB;EACxB,8CAA8C;EAC9C,qEAAqE;EACrE,mCAAmC;EACnC,uBAAuB;EACvB,uBAAuB;EACvB,gCAAgC;EAChC,cAAc;AAChB;;AAEA;EACE,cAAc;EACd,cAAc;EACd,qBAAqB;AACvB;;AAEA;;EAEE,0BAA0B;AAC5B;;AAEA;EACE,aAAa;EACb,+BAA+B;EAC/B,WAAW;EACX,kBAAkB;EAClB,wBAAwB;EACxB,8CAA8C;EAC9C,iDAAiD;AACnD;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,mDAAmD;EACnD,oCAAoC;EACpC,8CAA8C;EAC9C,iBAAiB;AACnB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,iBAAiB;EACjB,cAAc;AAChB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,cAAc;EACd,yBAAyB;EACzB,sBAAsB;AACxB;;AAEA;EACE,YAAY;AACd;;AAEA;;;;;EAKE,SAAS;AACX;;AAEA;EACE,gBAAgB;EAChB,+BAA+B;EAC/B,uBAAuB;EACvB,mBAAmB;EACnB,wCAAwC;EACxC,yCAAyC;EACzC,mBAAmB;AACrB;;AAEA;EACE,mBAAmB;EACnB,+BAA+B;EAC/B,wCAAwC;EACxC,uCAAuC;EACvC,gBAAgB;EAChB,uBAAuB;EACvB,cAAc;EACd,iBAAiB;EACjB,4BAA4B;EAC5B,mBAAmB;AACrB;;AAEA;EACE,wCAAwC;EACxC,uCAAuC;AACzC;;AAEA;EACE,iCAAiC;;AAEnC;;AAEA;EACE,iCAAiC;AACnC;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,mBAAmB;EACnB,uBAAuB;EACvB,kBAAkB;AACpB;;AAEA;EACE,kBAAkB;EAClB,gBAAgB;;AAElB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE;IACE,eAAe;IACf,mBAAmB;IACnB,sBAAsB;EACxB;;EAEA;IACE,cAAc;IACd,eAAe;EACjB;;EAEA;IACE,aAAa;EACf;;EAEA;IACE,oBAAoB;IACpB,mBAAmB;IACnB,uBAAuB;IACvB,aAAa;IACb,WAAW;IACX,mBAAmB;IACnB,UAAU;IACV,SAAS;IACT,uBAAuB;IACvB,oCAAoC;IACpC,wCAAwC;IACxC,yCAAyC;IACzC,eAAe;EACjB;;EAEA;IACE,yBAAyB;EAC3B;;EAEA;IACE,oBAAoB;IACpB,mBAAmB;IACnB,uBAAuB;IACvB,0DAA0D;EAC5D;AACF",sourcesContent:['/* The following are the original styles for the ProjectsCard section. */\n.project-card__rail {\n display: flex;\n gap: 1rem;\n overflow-x: auto;\n padding: 0;\n margin: 0;\n list-style: none;\n scroll-snap-type: x proximity;\n}\n.project-card__follow-button {\n width: auto;\n border-radius: var(--border-radius-md, 0.5rem);\n border: var(--border-width-sm, 0.1rem) solid var(--color-primary, #7C4DFF); \n padding: 0.5rem 0.625rem; /* ~8px 10px, increased by ~2px in rem */\n color: var(--color-primary, #7C4DFF);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-md, 500);\n background: var(--white, #FFF);\n cursor: pointer;\n}\n\n.project-card__follow-button:hover {\n background: var(--lavender-400, #cbb9ff);\n}\n\n.project-card__rail::-webkit-scrollbar {\n height: 8px;\n}\n\n.project-card__rail::-webkit-scrollbar-thumb {\n background: #b0b7c3;\n border-radius: 999px;\n}\n\n.project-card {\n flex: 0 0 min(420px, 88vw);\n scroll-snap-align: start;\n border-radius: var(--border-radius-md, 0.5rem);\n border: var(--border-width-sm, 0.1rem) solid var(--gray-200, #E5E7EB);\n padding: var(--spacing-md, 1.25rem);\n justify-content: center;\n align-items: flex-start;\n gap: var(--spacing-sm, 0.938rem);\n flex-shrink: 0;\n}\n\n.project-card__link {\n display: block;\n color: inherit;\n text-decoration: none;\n}\n\n.project-card__link:hover .project-card__title,\n.project-card__link:focus-visible .project-card__title {\n text-decoration: underline;\n}\n\n.project-card__wrapper {\n display: grid;\n grid-template-columns: 88px 1fr;\n gap: 0.9rem;\n align-items: start;\n padding-bottom: 0.563rem;\n border-radius: var(--border-radius-md, 0.5rem);\n border-bottom: 1px solid var(--gray-200, #E5E7EB);\n}\n\n.project-card__thumb {\n width: 66px;\n height: 66px;\n overflow: hidden;\n border-radius: var(--border-radius-base, 0.3125rem);\n background: var(--gray-200, #E5E7EB);\n padding: 0.656rem var(--spacing-2xs, 0.625rem);\n aspect-ratio: 1/1;\n}\n\n.project-card__thumb-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n\n.project-card__thumb-fallback {\n width: 100%;\n height: 100%;\n font-size: 0.72rem;\n color: #5a6476;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.project-card__content {\n min-width: 0;\n}\n\n.project-card__title,\n.project-card__organization,\n.project-card__category,\n.project-card__meta,\n.project-card__description {\n margin: 0;\n}\n\n.project-card__title {\n overflow: hidden;\n color: var(--gray-900, #101828);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--font-size-lg, 1.125rem);\n font-weight: var(--font-weight-bold, 600);\n align-self: stretch;\n}\n\n.project-card__organization {\n margin-top: 0.35rem;\n color: var(--gray-700, #364153);\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: var(--font-weight-md, 500);\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n line-height: 1.35;\n max-height: calc(1.35em * 2);\n align-self: stretch;\n}\n\n.project-card__category {\n font-size: var(--font-size-xxs, 0.75rem);\n font-weight: var(--font-weight-md, 500);\n}\n\n.project-card__category--project {\n color: var(--purple-500, #AD46FF);\n \n}\n\n.project-card__category--community {\n color: var(--yellow-700, #A65F00);\n}\n\n.project-card__category--unknown {\n color: var(--slate-700, #314158);\n}\n\n.project-card__meta {\n margin-top: 0.55rem;\n overflow-wrap: anywhere;\n font-size: 0.86rem;\n}\n\n.project-card__footer {\n margin-top: 0.8rem;\n padding: 0.75rem;\n\n}\n\n.project-card__more-button {\n display: none;\n}\n\n@media (max-width: 640px) {\n .project-card__rail {\n flex-wrap: wrap;\n overflow-x: visible;\n scroll-snap-type: none;\n }\n\n .project-card {\n flex: 1 1 100%;\n max-width: 100%;\n }\n\n .profile-section-collapsible[data-mobile-expanded="false"] .project-card:nth-child(n + 3) {\n display: none;\n }\n\n .project-card__more-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n width: 100%;\n margin-top: 0.75rem;\n padding: 0;\n border: 0;\n background: transparent;\n color: var(--color-primary, #7C4DFF);\n font-size: var(--font-size-sm, 0.875rem);\n font-weight: var(--font-weight-bold, 600);\n cursor: pointer;\n }\n\n .project-card__more-button[data-mobile-expanded="true"] .project-card__more-icon {\n transform: rotate(180deg);\n }\n\n .project-card__more-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: transform var(--animation-duration, 0.2s) ease;\n }\n}\n'],sourceRoot:""}]);const l=r},1134(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,'/* QRCodeCard.css */\n/* Note: Uses utilities: .text-center */\n\n/* Caption under the QR code */\n.qrcode-card__caption {\n text-align: center;\n margin-top: 0;\n padding-bottom: 0.25rem;\n color: var(--gray-800, #1E2939);\n font-size: var(--font-size-md, 1rem); /* 16px */\n font-weight: var(--font-weight-md, 500);\n}\n\n.qrcode-card {\n width: 136px;\n margin: 0 auto;\n height: auto;\n flex-shrink: 0;\n}\n\n.qrcode-card__frame {\n padding: 1rem 1rem 1.25rem 1.063rem; /* 16px 16px 20px 17px */\n border-radius: var(--border-radius-base, 0.3125rem); /* 5px */\n border: var(--border-width-thin, 0.1rem) solid var(--gray-200, #E5E7EB);\n background: var(--gray-100, #F3F4F6);\n}\n\n.qrcode-card [role="img"]:focus {\n outline: var(--border-width-medium, 2px) solid var(--color-primary, #7C4DFF);\n outline-offset: 2px;\n box-shadow: 0 0 0 2px rgba(124,77,255,0.2);\n}\n\n.qrcode-card [role="img"] {\n width: 136px;\n height: 136px;\n}\n\n.qrcode-card [role="img"] svg {\n width: 100%;\n height: 100%;\n display: block;\n}',"",{version:3,sources:["webpack://./src/styles/QRCodeCard.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,uCAAuC;;AAEvC,8BAA8B;AAC9B;EACE,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,+BAA+B;EAC/B,oCAAoC,EAAE,SAAS;EAC/C,uCAAuC;AACzC;;AAEA;EACE,YAAY;EACZ,cAAc;EACd,YAAY;EACZ,cAAc;AAChB;;AAEA;EACE,mCAAmC,EAAE,wBAAwB;EAC7D,mDAAmD,EAAE,QAAQ;EAC7D,uEAAuE;EACvE,oCAAoC;AACtC;;AAEA;EACE,4EAA4E;EAC5E,mBAAmB;EACnB,0CAA0C;AAC5C;;AAEA;EACE,YAAY;EACZ,aAAa;AACf;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,cAAc;AAChB",sourcesContent:['/* QRCodeCard.css */\n/* Note: Uses utilities: .text-center */\n\n/* Caption under the QR code */\n.qrcode-card__caption {\n text-align: center;\n margin-top: 0;\n padding-bottom: 0.25rem;\n color: var(--gray-800, #1E2939);\n font-size: var(--font-size-md, 1rem); /* 16px */\n font-weight: var(--font-weight-md, 500);\n}\n\n.qrcode-card {\n width: 136px;\n margin: 0 auto;\n height: auto;\n flex-shrink: 0;\n}\n\n.qrcode-card__frame {\n padding: 1rem 1rem 1.25rem 1.063rem; /* 16px 16px 20px 17px */\n border-radius: var(--border-radius-base, 0.3125rem); /* 5px */\n border: var(--border-width-thin, 0.1rem) solid var(--gray-200, #E5E7EB);\n background: var(--gray-100, #F3F4F6);\n}\n\n.qrcode-card [role="img"]:focus {\n outline: var(--border-width-medium, 2px) solid var(--color-primary, #7C4DFF);\n outline-offset: 2px;\n box-shadow: 0 0 0 2px rgba(124,77,255,0.2);\n}\n\n.qrcode-card [role="img"] {\n width: 136px;\n height: 136px;\n}\n\n.qrcode-card [role="img"] svg {\n width: 100%;\n height: 100%;\n display: block;\n}'],sourceRoot:""}]);const l=r},1649(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,'/* SocialCard.css */\n/* Uses utilities: .list-reset, .text-wrap-anywhere, .flex, .gap-sm, .gap-lg, .rounded-sm */\n\n.socialList {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: var(--spacing-xxs);\n justify-content: flex-start;\n}\n\n.socialItem {\n display: flex;\n align-items: center;\n}\n\n.socialItem a {\n color: var(--color-primary);\n text-decoration: none;\n display: flex;\n align-items: center;\n min-height: var(--min-touch-target);\n padding: var(--spacing-xxs); \n border-radius: var(--border-radius-base);\n transition: background-color var(--animation-duration) ease;\n position: relative;\n flex: 1;\n min-width: 0;\n}\n\n.socialItem a:hover,\n.socialItem a:focus {\n text-decoration: underline;\n background-color: rgba(124, 77, 255, 0.1);\n}\n\n/* Screen reader only external link indication */\n.socialItem a[href^="http"]:after {\n content: " (external link)";\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.socialIcon {\n width: var(--icon-base);\n height: var(--icon-base);\n border-radius: var(--border-radius-base);\n background: var(--color-card-bg);\n flex-shrink: 0;\n}\n\n.socialCard__more-button {\n display: none;\n}\n\n@media (max-width: 1000px) {\n .socialCard .socialList {\n display: grid;\n grid-template-columns: repeat(5, max-content);\n justify-content: flex-start;\n }\n\n .socialCard[data-mobile-expanded="true"] .socialList {\n grid-template-columns: repeat(3, max-content);\n }\n\n .socialCard[data-mobile-expanded="false"] .socialItem:nth-child(n + 11) {\n display: none;\n }\n\n .socialCard__more-button {\n display: inline-flex;\n margin-top: var(--spacing-xs);\n padding: 0;\n border: 0;\n background: transparent;\n color: var(--color-primary, #7C4DFF);\n font: inherit;\n font-weight: 600;\n cursor: pointer;\n }\n\n .socialCard[data-mobile-expanded="true"] .socialCard__more-button {\n display: none;\n }\n}\n',"",{version:3,sources:["webpack://./src/styles/SocialCard.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,2FAA2F;;AAE3F;EACE,aAAa;EACb,mBAAmB;EACnB,eAAe;EACf,uBAAuB;EACvB,2BAA2B;AAC7B;;AAEA;EACE,aAAa;EACb,mBAAmB;AACrB;;AAEA;EACE,2BAA2B;EAC3B,qBAAqB;EACrB,aAAa;EACb,mBAAmB;EACnB,mCAAmC;EACnC,2BAA2B;EAC3B,wCAAwC;EACxC,2DAA2D;EAC3D,kBAAkB;EAClB,OAAO;EACP,YAAY;AACd;;AAEA;;EAEE,0BAA0B;EAC1B,yCAAyC;AAC3C;;AAEA,gDAAgD;AAChD;EACE,2BAA2B;EAC3B,kBAAkB;EAClB,cAAc;EACd,UAAU;EACV,WAAW;EACX,gBAAgB;AAClB;;AAEA;EACE,uBAAuB;EACvB,wBAAwB;EACxB,wCAAwC;EACxC,gCAAgC;EAChC,cAAc;AAChB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE;IACE,aAAa;IACb,6CAA6C;IAC7C,2BAA2B;EAC7B;;EAEA;IACE,6CAA6C;EAC/C;;EAEA;IACE,aAAa;EACf;;EAEA;IACE,oBAAoB;IACpB,6BAA6B;IAC7B,UAAU;IACV,SAAS;IACT,uBAAuB;IACvB,oCAAoC;IACpC,aAAa;IACb,gBAAgB;IAChB,eAAe;EACjB;;EAEA;IACE,aAAa;EACf;AACF",sourcesContent:['/* SocialCard.css */\n/* Uses utilities: .list-reset, .text-wrap-anywhere, .flex, .gap-sm, .gap-lg, .rounded-sm */\n\n.socialList {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: var(--spacing-xxs);\n justify-content: flex-start;\n}\n\n.socialItem {\n display: flex;\n align-items: center;\n}\n\n.socialItem a {\n color: var(--color-primary);\n text-decoration: none;\n display: flex;\n align-items: center;\n min-height: var(--min-touch-target);\n padding: var(--spacing-xxs); \n border-radius: var(--border-radius-base);\n transition: background-color var(--animation-duration) ease;\n position: relative;\n flex: 1;\n min-width: 0;\n}\n\n.socialItem a:hover,\n.socialItem a:focus {\n text-decoration: underline;\n background-color: rgba(124, 77, 255, 0.1);\n}\n\n/* Screen reader only external link indication */\n.socialItem a[href^="http"]:after {\n content: " (external link)";\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.socialIcon {\n width: var(--icon-base);\n height: var(--icon-base);\n border-radius: var(--border-radius-base);\n background: var(--color-card-bg);\n flex-shrink: 0;\n}\n\n.socialCard__more-button {\n display: none;\n}\n\n@media (max-width: 1000px) {\n .socialCard .socialList {\n display: grid;\n grid-template-columns: repeat(5, max-content);\n justify-content: flex-start;\n }\n\n .socialCard[data-mobile-expanded="true"] .socialList {\n grid-template-columns: repeat(3, max-content);\n }\n\n .socialCard[data-mobile-expanded="false"] .socialItem:nth-child(n + 11) {\n display: none;\n }\n\n .socialCard__more-button {\n display: inline-flex;\n margin-top: var(--spacing-xs);\n padding: 0;\n border: 0;\n background: transparent;\n color: var(--color-primary, #7C4DFF);\n font: inherit;\n font-weight: 600;\n cursor: pointer;\n }\n\n .socialCard[data-mobile-expanded="true"] .socialCard__more-button {\n display: none;\n }\n}\n'],sourceRoot:""}]);const l=r},4594(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,'/* CSS for the accessible modal dialogs created by dialog.ts */\n/* dialog host */\n#profile-modal {\n margin: 0;\n padding: 0;\n border: none;\n background: rgba(0, 0, 0, 0.5);\n max-width: none;\n max-height: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n inset: 0;\n display: grid;\n place-items: center;\n z-index: 9999;\n}\n\n#profile-modal:not([open]) {\n display: none;\n}\n\n#profile-modal::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n#profile-modal .modal {\n box-sizing: border-box;\n margin: 0;\n background: var(--color-background);\n padding: var(--spacing-lg);\n border-radius: var(--border-radius-base);\n max-width: 100%;\n width: min(640px, 92vw);\n max-height: 85vh;\n overflow: auto;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);\n}\n\n#profile-modal .modal .modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-lg);\n margin: calc(-1 * var(--spacing-lg)) calc(-1 * var(--spacing-lg)) var(--spacing-sm) calc(-1 * var(--spacing-lg));\n padding: var(--spacing-lg);\n border-radius: var(--border-radius-base, 0.3125rem) var(--border-radius-base, 0.3125rem) 0 0;\n border: var(--border-width-sm, 0.1rem) solid var(--slate-200, #E2E8F0);\n background: var(--slate-50, #F8FAFC);\n}\n\n#profile-modal .modal #modal-title {\n margin: 0;\n}\n\n#profile-modal .modal #modal-header-action > button[aria-label="Close dialog"] {\n min-height: 2rem;\n min-width: 2rem;\n padding: 0;\n border: none;\n background: transparent;\n color: var(--color-text);\n font-size: 1.5rem;\n line-height: 1;\n cursor: pointer;\n}\n\n#profile-modal .modal #modal-header-action > button[aria-label="Close dialog"]:hover {\n color: var(--color-primary);\n}\n\n#profile-modal .modal #modal-header-action {\n display: flex;\n align-items: center;\n}\n\n#profile-modal .modal .modal__header-action-button {\n min-height: auto;\n padding: var(--spacing-xxs);\n border: none;\n background: none;\n color: var(--color-primary);\n font-weight: 500;\n}\n\n#profile-modal .modal .modal__header-action-button:hover {\n text-decoration: underline;\n}\n\n/* button container: center buttons horizontally (uses id in markup) */\n#profile-modal #modal-buttons {\n display: flex;\n padding: 20px 0 20px 30px;\n justify-content: flex-end;\n align-items: center;\n gap: 15px;\n align-self: stretch;\n border-top: var(--border-width-sm, 0.1rem) solid var(--slate-200, #E2E8F0);\n background: var(--gray-50, #F9FAFB);\n}\n\n#profile-modal #modal-buttons button {\n width: 10.8rem;\n}\n\n#profile-modal .modal__error-section {\n margin-top: var(--spacing-sm);\n}\n\n#profile-modal .modal__error-section[hidden] {\n display: none !important;\n}\n\n\n/* buttons themselves use the shared btn-primary rules */\n#profile-modal .modal button {\n min-height: var(--min-touch-target);\n padding: var(--spacing-sm) var(--spacing-md);\n border: 1px solid var(--color-primary);\n border-radius: var(--border-radius-base);\n font-weight: 600;\n cursor: pointer;\n transition: all var(--animation-duration) ease;\n}\n\n#profile-modal .modal button.btn-primary {\n background: var(--color-primary);\n color: var(--white, #FFF);\n font-size: var(--font-size-lg, 1.125rem); /* 18px */\n font-weight: var(--font-weight-bold, 600);\n}\n\n#profile-modal .modal button.btn-primary:hover {\n background: color-mix(in srgb, var(--color-primary) 90%, black);\n box-shadow: 0 2px 4px rgba(124, 77, 255, 0.2);\n}\n\n#profile-modal .modal button.btn-primary:active {\n box-shadow: 0 1px 2px rgba(124, 77, 255, 0.2);\n}\n\n#profile-modal .modal button:disabled {\n opacity: var(--opacity-disabled, 0.6);\n cursor: not-allowed;\n transform: none;\n}\n\n/* Keep text-style actions in section headers while preserving footer button styling. */\n#profile-modal .modal .profile__section-header .profile__action-button {\n min-height: auto;\n padding: var(--spacing-xxs);\n border: none;\n background: none;\n color: var(--color-primary);\n font-weight: 500;\n}\n\n#profile-modal .modal .profile__section-header .profile__action-button:hover {\n text-decoration: underline;\n}\n\n@media (max-width: 640px) {\n #profile-modal {\n padding-top: max(var(--spacing-sm), env(safe-area-inset-top));\n padding-right: var(--spacing-sm);\n padding-bottom: max(var(--spacing-sm), env(safe-area-inset-bottom));\n padding-left: var(--spacing-sm);\n place-items: center;\n }\n\n #profile-modal .modal {\n width: min(420px, calc(100% - 2 * var(--spacing-sm)));\n max-width: 420px;\n max-height: calc(100dvh - 2 * var(--spacing-sm));\n padding: var(--spacing-md);\n border-radius: calc(var(--border-radius-base) * 0.75);\n overscroll-behavior: contain;\n justify-self: center;\n align-self: center;\n margin: 0;\n }\n\n #profile-modal .modal .modal-header {\n gap: var(--spacing-md);\n margin: calc(-1 * var(--spacing-md)) calc(-1 * var(--spacing-md)) var(--spacing-sm) calc(-1 * var(--spacing-md));\n padding: var(--spacing-md);\n }\n\n #profile-modal #modal-buttons {\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-sm, 0.938rem);\n padding: var(--spacing-md) 0 0;\n margin: var(--spacing-md) auto 0;\n box-sizing: border-box;\n width: 100%;\n }\n\n #profile-modal #modal-buttons button {\n flex: 0 0 auto;\n width: 10.8rem;\n min-width: 8.5rem;\n padding: var(--spacing-sm) var(--spacing-md);\n font-size: var(--font-size-md, 1rem);\n }\n\n}\n',"",{version:3,sources:["webpack://./src/styles/dialog.css"],names:[],mappings:"AAAA,8DAA8D;AAC9D,gBAAgB;AAChB;EACE,SAAS;EACT,UAAU;EACV,YAAY;EACZ,8BAA8B;EAC9B,eAAe;EACf,gBAAgB;EAChB,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,eAAe;EACf,QAAQ;EACR,aAAa;EACb,mBAAmB;EACnB,aAAa;AACf;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,8BAA8B;AAChC;;AAEA;EACE,sBAAsB;EACtB,SAAS;EACT,mCAAmC;EACnC,0BAA0B;EAC1B,wCAAwC;EACxC,eAAe;EACf,uBAAuB;EACvB,gBAAgB;EAChB,cAAc;EACd,yCAAyC;AAC3C;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,8BAA8B;EAC9B,sBAAsB;EACtB,gHAAgH;EAChH,0BAA0B;EAC1B,4FAA4F;EAC5F,sEAAsE;EACtE,oCAAoC;AACtC;;AAEA;EACE,SAAS;AACX;;AAEA;EACE,gBAAgB;EAChB,eAAe;EACf,UAAU;EACV,YAAY;EACZ,uBAAuB;EACvB,wBAAwB;EACxB,iBAAiB;EACjB,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;EACE,aAAa;EACb,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;EAChB,2BAA2B;EAC3B,YAAY;EACZ,gBAAgB;EAChB,2BAA2B;EAC3B,gBAAgB;AAClB;;AAEA;EACE,0BAA0B;AAC5B;;AAEA,sEAAsE;AACtE;EACE,aAAa;EACb,yBAAyB;EACzB,yBAAyB;EACzB,mBAAmB;EACnB,SAAS;EACT,mBAAmB;EACnB,0EAA0E;EAC1E,mCAAmC;AACrC;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,6BAA6B;AAC/B;;AAEA;EACE,wBAAwB;AAC1B;;;AAGA,wDAAwD;AACxD;EACE,mCAAmC;EACnC,4CAA4C;EAC5C,sCAAsC;EACtC,wCAAwC;EACxC,gBAAgB;EAChB,eAAe;EACf,8CAA8C;AAChD;;AAEA;EACE,gCAAgC;EAChC,yBAAyB;EACzB,wCAAwC,EAAE,SAAS;EACnD,yCAAyC;AAC3C;;AAEA;EACE,+DAA+D;EAC/D,6CAA6C;AAC/C;;AAEA;EACE,6CAA6C;AAC/C;;AAEA;EACE,qCAAqC;EACrC,mBAAmB;EACnB,eAAe;AACjB;;AAEA,uFAAuF;AACvF;EACE,gBAAgB;EAChB,2BAA2B;EAC3B,YAAY;EACZ,gBAAgB;EAChB,2BAA2B;EAC3B,gBAAgB;AAClB;;AAEA;EACE,0BAA0B;AAC5B;;AAEA;EACE;IACE,6DAA6D;IAC7D,gCAAgC;IAChC,mEAAmE;IACnE,+BAA+B;IAC/B,mBAAmB;EACrB;;EAEA;IACE,qDAAqD;IACrD,gBAAgB;IAChB,gDAAgD;IAChD,0BAA0B;IAC1B,qDAAqD;IACrD,4BAA4B;IAC5B,oBAAoB;IACpB,kBAAkB;IAClB,SAAS;EACX;;EAEA;IACE,sBAAsB;IACtB,gHAAgH;IAChH,0BAA0B;EAC5B;;EAEA;IACE,mBAAmB;IACnB,mBAAmB;IACnB,uBAAuB;IACvB,gCAAgC;IAChC,8BAA8B;IAC9B,gCAAgC;IAChC,sBAAsB;IACtB,WAAW;EACb;;EAEA;IACE,cAAc;IACd,cAAc;IACd,iBAAiB;IACjB,4CAA4C;IAC5C,oCAAoC;EACtC;;AAEF",sourcesContent:['/* CSS for the accessible modal dialogs created by dialog.ts */\n/* dialog host */\n#profile-modal {\n margin: 0;\n padding: 0;\n border: none;\n background: rgba(0, 0, 0, 0.5);\n max-width: none;\n max-height: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n inset: 0;\n display: grid;\n place-items: center;\n z-index: 9999;\n}\n\n#profile-modal:not([open]) {\n display: none;\n}\n\n#profile-modal::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n#profile-modal .modal {\n box-sizing: border-box;\n margin: 0;\n background: var(--color-background);\n padding: var(--spacing-lg);\n border-radius: var(--border-radius-base);\n max-width: 100%;\n width: min(640px, 92vw);\n max-height: 85vh;\n overflow: auto;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);\n}\n\n#profile-modal .modal .modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-lg);\n margin: calc(-1 * var(--spacing-lg)) calc(-1 * var(--spacing-lg)) var(--spacing-sm) calc(-1 * var(--spacing-lg));\n padding: var(--spacing-lg);\n border-radius: var(--border-radius-base, 0.3125rem) var(--border-radius-base, 0.3125rem) 0 0;\n border: var(--border-width-sm, 0.1rem) solid var(--slate-200, #E2E8F0);\n background: var(--slate-50, #F8FAFC);\n}\n\n#profile-modal .modal #modal-title {\n margin: 0;\n}\n\n#profile-modal .modal #modal-header-action > button[aria-label="Close dialog"] {\n min-height: 2rem;\n min-width: 2rem;\n padding: 0;\n border: none;\n background: transparent;\n color: var(--color-text);\n font-size: 1.5rem;\n line-height: 1;\n cursor: pointer;\n}\n\n#profile-modal .modal #modal-header-action > button[aria-label="Close dialog"]:hover {\n color: var(--color-primary);\n}\n\n#profile-modal .modal #modal-header-action {\n display: flex;\n align-items: center;\n}\n\n#profile-modal .modal .modal__header-action-button {\n min-height: auto;\n padding: var(--spacing-xxs);\n border: none;\n background: none;\n color: var(--color-primary);\n font-weight: 500;\n}\n\n#profile-modal .modal .modal__header-action-button:hover {\n text-decoration: underline;\n}\n\n/* button container: center buttons horizontally (uses id in markup) */\n#profile-modal #modal-buttons {\n display: flex;\n padding: 20px 0 20px 30px;\n justify-content: flex-end;\n align-items: center;\n gap: 15px;\n align-self: stretch;\n border-top: var(--border-width-sm, 0.1rem) solid var(--slate-200, #E2E8F0);\n background: var(--gray-50, #F9FAFB);\n}\n\n#profile-modal #modal-buttons button {\n width: 10.8rem;\n}\n\n#profile-modal .modal__error-section {\n margin-top: var(--spacing-sm);\n}\n\n#profile-modal .modal__error-section[hidden] {\n display: none !important;\n}\n\n\n/* buttons themselves use the shared btn-primary rules */\n#profile-modal .modal button {\n min-height: var(--min-touch-target);\n padding: var(--spacing-sm) var(--spacing-md);\n border: 1px solid var(--color-primary);\n border-radius: var(--border-radius-base);\n font-weight: 600;\n cursor: pointer;\n transition: all var(--animation-duration) ease;\n}\n\n#profile-modal .modal button.btn-primary {\n background: var(--color-primary);\n color: var(--white, #FFF);\n font-size: var(--font-size-lg, 1.125rem); /* 18px */\n font-weight: var(--font-weight-bold, 600);\n}\n\n#profile-modal .modal button.btn-primary:hover {\n background: color-mix(in srgb, var(--color-primary) 90%, black);\n box-shadow: 0 2px 4px rgba(124, 77, 255, 0.2);\n}\n\n#profile-modal .modal button.btn-primary:active {\n box-shadow: 0 1px 2px rgba(124, 77, 255, 0.2);\n}\n\n#profile-modal .modal button:disabled {\n opacity: var(--opacity-disabled, 0.6);\n cursor: not-allowed;\n transform: none;\n}\n\n/* Keep text-style actions in section headers while preserving footer button styling. */\n#profile-modal .modal .profile__section-header .profile__action-button {\n min-height: auto;\n padding: var(--spacing-xxs);\n border: none;\n background: none;\n color: var(--color-primary);\n font-weight: 500;\n}\n\n#profile-modal .modal .profile__section-header .profile__action-button:hover {\n text-decoration: underline;\n}\n\n@media (max-width: 640px) {\n #profile-modal {\n padding-top: max(var(--spacing-sm), env(safe-area-inset-top));\n padding-right: var(--spacing-sm);\n padding-bottom: max(var(--spacing-sm), env(safe-area-inset-bottom));\n padding-left: var(--spacing-sm);\n place-items: center;\n }\n\n #profile-modal .modal {\n width: min(420px, calc(100% - 2 * var(--spacing-sm)));\n max-width: 420px;\n max-height: calc(100dvh - 2 * var(--spacing-sm));\n padding: var(--spacing-md);\n border-radius: calc(var(--border-radius-base) * 0.75);\n overscroll-behavior: contain;\n justify-self: center;\n align-self: center;\n margin: 0;\n }\n\n #profile-modal .modal .modal-header {\n gap: var(--spacing-md);\n margin: calc(-1 * var(--spacing-md)) calc(-1 * var(--spacing-md)) var(--spacing-sm) calc(-1 * var(--spacing-md));\n padding: var(--spacing-md);\n }\n\n #profile-modal #modal-buttons {\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-sm, 0.938rem);\n padding: var(--spacing-md) 0 0;\n margin: var(--spacing-md) auto 0;\n box-sizing: border-box;\n width: 100%;\n }\n\n #profile-modal #modal-buttons button {\n flex: 0 0 auto;\n width: 10.8rem;\n min-width: 8.5rem;\n padding: var(--spacing-sm) var(--spacing-md);\n font-size: var(--font-size-md, 1rem);\n }\n\n}\n'],sourceRoot:""}]);const l=r},5092(e,n,t){"use strict";t.d(n,{A:()=>l});var i=t(1354),o=t.n(i),a=t(6314),r=t.n(a)()(o());r.push([e.id,'/* Utility-first CSS classes for layout, spacing, and responsiveness */\n/* These utilities are designed specfically for the profile pane */\n/* Utilities that can be shared by all panes should be added to dev-globals.css \n and to mashlib repo mash-utilities.css and then updated accross all pane\n development environments */\n:root {\n --profile-image-size: 3em;\n}\n\n.profile-pane-host {\n display: block;\n width: 100%;\n min-width: 100%;\n max-width: none;\n box-sizing: border-box;\n}\n\n@media (max-width: 768px) {\n .profile-grid {\n font-size: clamp(0.9rem, 1.1vw + 0.65rem, 1rem);\n }\n\n .profile-grid .profile__action-button,\n .profile-grid .profile__actions button {\n min-height: calc(var(--min-touch-target, 44px) + 0.5em) !important;\n font-size: clamp(0.9rem, 2.1vw, 1rem) !important;\n padding: 0.75em 0.9em !important;\n }\n}\n\n/* ===========================================\n PROFILE GRID LAYOUT\n =========================================== */\n\n.profile-grid {\n display: grid;\n grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);\n gap: var(--spacing-xxs, 0.3125rem);\n background: var(--color-background, #F8F9FB);\n}\n\n.profile-grid > * {\n min-width: 0;\n}\n\n.profile-pane-root {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n display: block;\n container-name: profile-pane;\n container-type: inline-size;\n}\n\n/* Embedded rendering inside SolidOS outline table cells needs a single-column fallback.\n The outline reserves space for icon/predicate columns, so the available content width\n is effectively much narrower than the viewport. */\ntd.obj .profile-pane-root {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n}\n\n@container profile-pane (max-width: 768px) {\n .profile-grid {\n font-size: clamp(0.9rem, 1.1vw + 0.65rem, 1rem);\n }\n\n .profile-grid .profile__action-button,\n .profile-grid .profile__actions button {\n min-height: calc(var(--min-touch-target, 44px) + 0.5em) !important;\n font-size: clamp(0.9rem, 2.1vw, 1rem) !important;\n padding: 0.75em 0.9em !important;\n }\n}\n\n@container profile-pane (max-width: 768px) {\n .profile-grid {\n grid-template-columns: 1fr;\n gap: var(--spacing-xxs, 0.3125rem);\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n margin: 0 auto;\n padding-inline: var(--spacing-xxs, 0.3125rem);\n overflow-x: clip;\n }\n}\n\n@media (max-width: 768px) {\n .profile-grid {\n grid-template-columns: 1fr;\n gap: var(--spacing-xxs, 0.3125rem);\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n margin: 0 auto;\n padding-inline: var(--spacing-xxs, 0.3125rem);\n overflow-x: clip;\n }\n}\n\n/* END GRID LAYOUT */\n\n.profile__section {\n width: 100%;\n}\n\n.profile__section--empty {\n padding: var(--spacing-1xl, 2.5rem) var(--spacing-lg, 1.5625rem); /* 40px 25px */\n width: 100%;\n}\n\n.profile__section,\n.profile__section--empty,\n.profile__action-button--empty {\n background: var(--color-card-bg, #fff);\n}\n\n/* Header row layout utility for profile section headers */\n.profile__section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-xs, 0.75rem);\n width: 100%;\n}\n\n.profile__section-header h2,\n.profile__section-header h3,\n.profile__section-header h4 {\n margin: 0;\n}\n\n.profile__action-button {\n width: 100%;\n min-width: 11.25rem; /* 180px */\n max-width: 20rem; /* 320px */\n box-sizing: border-box;\n display: inline-block;\n}\n\n.profile__action-button--empty {\n /*padding: 6px 8px; Note: these are the styles from new design\n min-height: auto; however they don\'t meet accessibility guidelines \n min-width: 0; for touch target size */ \n width: fit-content;\n min-width: fit-content;\n max-width: fit-content;\n white-space: nowrap;\n box-sizing: border-box;\n border: var(--border-width-sm, 1px) solid var(--color-border-darker, #4A5565);\n color: var(--slate-700, #314158);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-medium, 500);\n line-height: var(--line-height-tight, 1.4);\n}\n.profile__empty-state-message {\n color: #62748E;\n text-align: center;\n font-size: var(--font-size-xs, 0.813rem); /* 13px */\n font-weight: var(--font-weight-normal, 400);\n line-height: var(--line-height-tight, 1.4); /* 140% from design 18.2px */\n}\n.contact-info__icon-wrapper {\n width: 36px;\n height: 36px;\n padding: 0 0.575rem; /* 9.2px - from design, but also ensures icons are centered in the circle */\n flex-shrink: 0;\n}\n\n.contact-info__icon {\n width: var(--icon-xxs, 1rem); /* 16px */\n height: var(--icon-xxs, 1rem); /* 16px */\n flex-shrink: 0;\n stroke-width: 1.333px;\n stroke: #90A1B9;\n}\n\n.contact-info__contact-point-value {\n color: var(--slate-800, #1D293D);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-bold, 600);\n white-space: normal !important;\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n.contact-info__contact-point-type {\n color: var(--slate-500, #62748E);\n font-size: var(--font-size-xxs, 0.75rem); /* 12px */\n font-weight: var(--font-weight-md, 500);\n}\n\n.contact-info__address {\n color: var(--slate-800, #1D293D);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-bold, 600);\n}\n\n.contact-info__list {\n list-style: none;\n margin: 0;\n padding: 0 0 var(--spacing-2xs, 0.625rem) 0;\n gap: var(--spacing-2xs, 0.625rem);\n}\n\n.contact-info__list:last-of-type {\n padding-bottom: 0;\n}\n\n.contact-info__list + .contact-info__list {\n margin-top: var(--spacing-2xs, 0.625rem);\n}\n\n.contact-info__item {\n margin-inline-start: 0;\n}\n\n.contact-info__empty-icon svg {\n width: var(--icon-md, 2.5rem); /* 40px */\n height: var(--icon-md, 2.5rem); /* 40px */\n display: block;\n}\n\n.contact-info__empty-icon svg path {\n stroke-width: 0.25rem; /* 4px */\n stroke: #E5E7EB;\n}\n\n.contact-info__empty-message {\n color: #9CA3AF;\n text-align: center;\n font-size: var(--font-size-xs, 0.813rem); /* 13px */\n font-weight: var(--font-weight-normal, 400);\n line-height: var(--line-height-tight, 1.4); /* design says 1.2 */\n}\n\n.contact-info__empty-icon-wrapper {\n width: 3rem; /* 48px */\n flex: 1 0 0;\n}\n.profile__empty-state-content {\n gap: var(--spacing-2xs, 0.625rem); /* 10px */\n}\n\n.profile__empty-state-content > h2,\n.profile__empty-state-content > p {\n margin: 0;\n}\n\n/* SAM - generated by ai below need to check design and change */\n.profile__action-button--empty:hover {\n background: var(--color-primary, #7C4DFF);\n border-color: var(--color-primary, #7C4DFF);\n color: white;\n}\n\n.profile__add-more-content {\n gap: var(--spacing-xxs, 0.3125rem);\n}\n\n.profile__add-more-icon {\n width: var(--icon-xxxs, 0.75rem); /* 12px */\n height: var(--icon-xxxs, 0.75rem); /* 12px */\n line-height: 0;\n flex: 0 0 auto;\n}\n\n.profile__add-more-icon svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n.skills__list {\n list-style: none;\n margin: 0;\n padding: 0;\n align-items: flex-start;\n gap: 0.5rem; /* 8px */\n}\n\n.skills__item {\n gap: 0.2rem;\n}\n\n.skills__item-label {\n color: var(--slate-900, #0F172B);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-md, 500);\n line-height: 1.2;\n}\n\n.skills__remove-button {\n border: none;\n background: none;\n cursor: pointer;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n\n.languages__list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.languages__item-label {\n color: var(--gray-900, #101828);\n font-size: var(--font-size-md, 1rem); /* 16px */\n font-weight: var(--font-weight-md, 500);\n}\n\n.languages__empty-icon {\n width: var(--icon-xs, 1.5rem); /* 24px new design uses this */\n height: var(--icon-xs, 1.5rem); /* 24px new design uses this */\n flex-shrink: 0;\n}\n/* Add-me-to-friends button style shared across profile sections. */\n.profile__btn-friends {\n width: auto;\n min-width: 0;\n max-width: none;\n padding: 0.375rem 0.75rem;\n gap: var(--spacing-xxs, 0.3125rem);\n border-radius: var(--border-radius-md, 0.5rem);\n border: 1px solid var(--color-primary, #7C4DFF);\n background: transparent;\n color: var(--color-primary, #7C4DFF);\n}\n\n/* Text-style action button utility (used for section header/edit actions). */\n.profile-action-text {\n width: auto;\n min-width: 0;\n max-width: none;\n padding: var(--spacing-xxs, 0.3125rem);\n border: none;\n background: none;\n color: var(--color-primary, #7C4DFF);\n cursor: pointer;\n font-size: var(--font-size-sm, 0.875rem);\n}\n\n.profile-action-text:hover {\n text-decoration: underline;\n}\n\n.profile-section-collapsible {\n display: block;\n}\n\n.profile-section-collapsible__header {\n margin-bottom: 0;\n}\n\n.profile-section-collapsible__actions {\n gap: var(--spacing-xs, 0.75rem);\n margin-top: -0.25rem;\n}\n\n.profile-section-collapsible__edit-button {\n min-width: 0;\n}\n\n.profile-section-collapsible__edit-icon {\n display: none;\n}\n\n.profile-section-collapsible__actions > button.inline-flex-row {\n display: none !important;\n min-height: auto;\n min-width: auto;\n padding: var(--spacing-xxs, 0.3125rem);\n border: none;\n background: none;\n color: var(--color-text, #1A1A1A);\n cursor: pointer;\n}\n\n.profile-section-collapsible__chevron {\n display: inline-block;\n flex: 0 0 auto;\n transition: transform var(--animation-duration, 0.2s) ease;\n}\n\n.profile-section-collapsible__content {\n margin-top: var(--spacing-2xs, 0.625rem);\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.profile-section-collapsible__content > :first-child {\n margin-top: 0;\n}\n\n.profile-section-collapsible__content > :last-child {\n margin-bottom: 0;\n}\n\n.bioCard,\n.bioSection,\n.socialCard,\n.socialList,\n.skills__list,\n.languages__list,\n.contact-info__list {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n@media (min-width: 769px) {\n .profile-section-collapsible > .profile-section-collapsible__content {\n display: block;\n }\n\n .profile-section-collapsible__edit-label svg,\n .profile__action-icon svg {\n width: 0.875rem;\n height: 0.875rem;\n }\n\n .profile-section-collapsible__edit-label svg path,\n .profile__action-icon svg path {\n fill: var(--color-primary, #7C4DFF);\n }\n\n .profile-section-collapsible__edit-label {\n display: inline;\n transform: translateY(-0.125rem);\n }\n\n .profile__add-more-icon {\n transform: translateY(-0.125rem);\n }\n\n .profile-section-collapsible__edit-icon {\n display: none;\n }\n}\n\n@media (max-width: 576px) {\n .profile-grid .profile__section-header h2,\n .profile-grid .profile__section-header h3,\n .profile-grid .profile__section-header h4,\n .profile-grid .profile__empty-state-content > h2,\n .profile-grid .cvSection h3,\n .profile-grid .profile__name,\n .profile-grid .friends-pane__header-name {\n font-family: inherit !important;\n }\n\n .profile-section-collapsible--inline-mobile-actions > .profile-section-collapsible__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n }\n\n .profile-section-collapsible--inline-mobile-actions > .profile-section-collapsible__header h2 {\n margin: 0;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__actions {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n gap: 0.25rem;\n margin-top: 0;\n flex: 0 0 auto;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button {\n display: inline-flex !important;\n order: 1;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:active,\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:focus,\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:focus-visible {\n border: none !important;\n outline: none !important;\n box-shadow: none !important;\n background: transparent !important;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__actions > button.inline-flex-row {\n order: 2;\n }\n\n .profile__section-header h2,\n .profile__section-header h3,\n .profile__section-header h4 {\n font-size: var(--font-size-lg, 1.125rem) !important;\n line-height: 1.2 !important;\n }\n\n .profile-grid .profile__empty-state-content > h2,\n .profile-grid .cvSection h3 {\n font-size: var(--font-size-lg, 1.125rem) !important;\n line-height: 1.2 !important;\n }\n\n .profile-grid .profile__name,\n .profile-grid .friends-pane__header-name {\n font-size: 1.5rem !important;\n line-height: 1.15 !important;\n }\n\n .profile-grid .profile__pronouns,\n .profile-grid .friends-pane__header-pronouns,\n .profile-grid .friends-pane__friends-pronouns {\n font-family: inherit !important;\n font-size: 0.6875rem !important;\n line-height: 1.1 !important;\n }\n\n .profile-section-collapsible[data-expanded="false"] .profile-section-collapsible__content {\n display: none;\n }\n\n .profile-section-collapsible__actions.flex-column {\n align-items: flex-end;\n gap: 0.25rem;\n }\n\n /* Keep empty-section mobile header controls in the same order as regular sections: toggle first, add/edit below. */\n .profile__section--empty .profile-section-collapsible__actions > button.inline-flex-row {\n order: 1;\n }\n\n .profile__section--empty .profile-section-collapsible__actions > .profile-section-collapsible__edit-button {\n order: 2;\n }\n\n .profile-section-collapsible[data-expanded="true"] .profile-section-collapsible__chevron {\n transform: rotate(180deg);\n }\n\n .profile-section-collapsible__edit-label {\n display: none !important;\n }\n\n .profile-section-collapsible__edit-icon {\n display: inline;\n }\n\n /* Empty-state action buttons use icon-only mobile controls (plus sign). */\n .profile__section--empty .profile-section-collapsible__edit-label {\n display: none !important;\n }\n\n .profile__section--empty .profile-section-collapsible__edit-icon {\n display: inline !important;\n }\n\n .profile-section-collapsible .profile-section-collapsible__edit-button {\n display: none !important;\n order: 2;\n }\n\n .profile-section-collapsible[data-expanded="true"] .profile-section-collapsible__edit-button {\n display: inline-flex !important;\n }\n /* Reassert toggle button layout in collapsible action rows on mobile \n so utility resets never hide/misalign the control. */\n .profile-section-collapsible__actions > button.inline-flex-row {\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n }\n\n .profile-section-collapsible__edit-icon--add svg path {\n fill: #1E2939 !important;\n stroke: #1E2939 !important;\n }\n\n .profile-section-collapsible__edit-icon--projects svg path {\n stroke-width: 1.714px !important;\n stroke: var(--gray-800, #1E2939) !important;\n fill: none !important;\n }\n\n}\n\n@container profile-pane (max-width: 576px) {\n .profile-grid .profile__section-header h2,\n .profile-grid .profile__section-header h3,\n .profile-grid .profile__section-header h4,\n .profile-grid .profile__empty-state-content > h2,\n .profile-grid .cvSection h3,\n .profile-grid .profile__name,\n .profile-grid .friends-pane__header-name {\n font-family: inherit !important;\n }\n\n .profile-section-collapsible--inline-mobile-actions > .profile-section-collapsible__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n }\n\n .profile-section-collapsible--inline-mobile-actions > .profile-section-collapsible__header h2 {\n margin: 0;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__actions {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n gap: 0.25rem;\n margin-top: 0;\n flex: 0 0 auto;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button {\n order: 1;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:active,\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:focus,\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:focus-visible {\n border: none !important;\n outline: none !important;\n box-shadow: none !important;\n background: transparent !important;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__actions > button.inline-flex-row {\n order: 2;\n }\n\n .profile__section-header h2,\n .profile__section-header h3,\n .profile__section-header h4 {\n font-size: var(--font-size-lg, 1.125rem) !important;\n line-height: 1.2 !important;\n }\n\n .profile-grid .profile__empty-state-content > h2,\n .profile-grid .cvSection h3 {\n font-size: var(--font-size-lg, 1.125rem) !important;\n line-height: 1.2 !important;\n }\n\n .profile-grid .profile__name,\n .profile-grid .friends-pane__header-name {\n font-size: 1.5rem !important;\n line-height: 1.15 !important;\n }\n\n .profile-grid .profile__pronouns,\n .profile-grid .friends-pane__header-pronouns,\n .profile-grid .friends-pane__friends-pronouns {\n font-family: inherit !important;\n font-size: 0.6875rem !important;\n line-height: 1.1 !important;\n }\n\n .profile-section-collapsible[data-expanded="false"] .profile-section-collapsible__content {\n display: none;\n }\n\n .profile-section-collapsible__actions.flex-column {\n align-items: flex-end;\n gap: 0.25rem;\n }\n\n .profile__section--empty .profile-section-collapsible__actions > button.inline-flex-row {\n order: 1;\n }\n\n .profile__section--empty .profile-section-collapsible__actions > .profile-section-collapsible__edit-button {\n order: 2;\n }\n\n .profile-section-collapsible[data-expanded="true"] .profile-section-collapsible__chevron {\n transform: rotate(180deg);\n }\n\n .profile-section-collapsible__edit-label {\n display: none !important;\n }\n\n .profile-section-collapsible__edit-icon {\n display: inline;\n }\n\n .profile__section--empty .profile-section-collapsible__edit-label {\n display: none !important;\n }\n\n .profile__section--empty .profile-section-collapsible__edit-icon {\n display: inline !important;\n }\n\n .profile-section-collapsible .profile-section-collapsible__edit-button {\n display: none !important;\n order: 2;\n }\n\n .profile-section-collapsible[data-expanded="true"] .profile-section-collapsible__edit-button {\n display: inline-flex !important;\n }\n\n .profile-section-collapsible__actions > button.inline-flex-row {\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n }\n\n .profile-section-collapsible__edit-icon--add svg path {\n fill: #1E2939 !important;\n stroke: #1E2939 !important;\n }\n\n .profile-section-collapsible__edit-icon--projects svg path {\n stroke-width: 1.714px !important;\n stroke: var(--gray-800, #1E2939) !important;\n fill: none !important;\n }\n}\n\n/* Zebra Striping - used by FriendList, StuffCard tables */\n.zebra-stripe tr:nth-child(even),\n.zebra-stripe > *:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.02);\n}\n\n',"",{version:3,sources:["webpack://./src/styles/utilities.css"],names:[],mappings:"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",sourcesContent:['/* Utility-first CSS classes for layout, spacing, and responsiveness */\n/* These utilities are designed specfically for the profile pane */\n/* Utilities that can be shared by all panes should be added to dev-globals.css \n and to mashlib repo mash-utilities.css and then updated accross all pane\n development environments */\n:root {\n --profile-image-size: 3em;\n}\n\n.profile-pane-host {\n display: block;\n width: 100%;\n min-width: 100%;\n max-width: none;\n box-sizing: border-box;\n}\n\n@media (max-width: 768px) {\n .profile-grid {\n font-size: clamp(0.9rem, 1.1vw + 0.65rem, 1rem);\n }\n\n .profile-grid .profile__action-button,\n .profile-grid .profile__actions button {\n min-height: calc(var(--min-touch-target, 44px) + 0.5em) !important;\n font-size: clamp(0.9rem, 2.1vw, 1rem) !important;\n padding: 0.75em 0.9em !important;\n }\n}\n\n/* ===========================================\n PROFILE GRID LAYOUT\n =========================================== */\n\n.profile-grid {\n display: grid;\n grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);\n gap: var(--spacing-xxs, 0.3125rem);\n background: var(--color-background, #F8F9FB);\n}\n\n.profile-grid > * {\n min-width: 0;\n}\n\n.profile-pane-root {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n display: block;\n container-name: profile-pane;\n container-type: inline-size;\n}\n\n/* Embedded rendering inside SolidOS outline table cells needs a single-column fallback.\n The outline reserves space for icon/predicate columns, so the available content width\n is effectively much narrower than the viewport. */\ntd.obj .profile-pane-root {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n}\n\n@container profile-pane (max-width: 768px) {\n .profile-grid {\n font-size: clamp(0.9rem, 1.1vw + 0.65rem, 1rem);\n }\n\n .profile-grid .profile__action-button,\n .profile-grid .profile__actions button {\n min-height: calc(var(--min-touch-target, 44px) + 0.5em) !important;\n font-size: clamp(0.9rem, 2.1vw, 1rem) !important;\n padding: 0.75em 0.9em !important;\n }\n}\n\n@container profile-pane (max-width: 768px) {\n .profile-grid {\n grid-template-columns: 1fr;\n gap: var(--spacing-xxs, 0.3125rem);\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n margin: 0 auto;\n padding-inline: var(--spacing-xxs, 0.3125rem);\n overflow-x: clip;\n }\n}\n\n@media (max-width: 768px) {\n .profile-grid {\n grid-template-columns: 1fr;\n gap: var(--spacing-xxs, 0.3125rem);\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n margin: 0 auto;\n padding-inline: var(--spacing-xxs, 0.3125rem);\n overflow-x: clip;\n }\n}\n\n/* END GRID LAYOUT */\n\n.profile__section {\n width: 100%;\n}\n\n.profile__section--empty {\n padding: var(--spacing-1xl, 2.5rem) var(--spacing-lg, 1.5625rem); /* 40px 25px */\n width: 100%;\n}\n\n.profile__section,\n.profile__section--empty,\n.profile__action-button--empty {\n background: var(--color-card-bg, #fff);\n}\n\n/* Header row layout utility for profile section headers */\n.profile__section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-xs, 0.75rem);\n width: 100%;\n}\n\n.profile__section-header h2,\n.profile__section-header h3,\n.profile__section-header h4 {\n margin: 0;\n}\n\n.profile__action-button {\n width: 100%;\n min-width: 11.25rem; /* 180px */\n max-width: 20rem; /* 320px */\n box-sizing: border-box;\n display: inline-block;\n}\n\n.profile__action-button--empty {\n /*padding: 6px 8px; Note: these are the styles from new design\n min-height: auto; however they don\'t meet accessibility guidelines \n min-width: 0; for touch target size */ \n width: fit-content;\n min-width: fit-content;\n max-width: fit-content;\n white-space: nowrap;\n box-sizing: border-box;\n border: var(--border-width-sm, 1px) solid var(--color-border-darker, #4A5565);\n color: var(--slate-700, #314158);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-medium, 500);\n line-height: var(--line-height-tight, 1.4);\n}\n.profile__empty-state-message {\n color: #62748E;\n text-align: center;\n font-size: var(--font-size-xs, 0.813rem); /* 13px */\n font-weight: var(--font-weight-normal, 400);\n line-height: var(--line-height-tight, 1.4); /* 140% from design 18.2px */\n}\n.contact-info__icon-wrapper {\n width: 36px;\n height: 36px;\n padding: 0 0.575rem; /* 9.2px - from design, but also ensures icons are centered in the circle */\n flex-shrink: 0;\n}\n\n.contact-info__icon {\n width: var(--icon-xxs, 1rem); /* 16px */\n height: var(--icon-xxs, 1rem); /* 16px */\n flex-shrink: 0;\n stroke-width: 1.333px;\n stroke: #90A1B9;\n}\n\n.contact-info__contact-point-value {\n color: var(--slate-800, #1D293D);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-bold, 600);\n white-space: normal !important;\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n.contact-info__contact-point-type {\n color: var(--slate-500, #62748E);\n font-size: var(--font-size-xxs, 0.75rem); /* 12px */\n font-weight: var(--font-weight-md, 500);\n}\n\n.contact-info__address {\n color: var(--slate-800, #1D293D);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-bold, 600);\n}\n\n.contact-info__list {\n list-style: none;\n margin: 0;\n padding: 0 0 var(--spacing-2xs, 0.625rem) 0;\n gap: var(--spacing-2xs, 0.625rem);\n}\n\n.contact-info__list:last-of-type {\n padding-bottom: 0;\n}\n\n.contact-info__list + .contact-info__list {\n margin-top: var(--spacing-2xs, 0.625rem);\n}\n\n.contact-info__item {\n margin-inline-start: 0;\n}\n\n.contact-info__empty-icon svg {\n width: var(--icon-md, 2.5rem); /* 40px */\n height: var(--icon-md, 2.5rem); /* 40px */\n display: block;\n}\n\n.contact-info__empty-icon svg path {\n stroke-width: 0.25rem; /* 4px */\n stroke: #E5E7EB;\n}\n\n.contact-info__empty-message {\n color: #9CA3AF;\n text-align: center;\n font-size: var(--font-size-xs, 0.813rem); /* 13px */\n font-weight: var(--font-weight-normal, 400);\n line-height: var(--line-height-tight, 1.4); /* design says 1.2 */\n}\n\n.contact-info__empty-icon-wrapper {\n width: 3rem; /* 48px */\n flex: 1 0 0;\n}\n.profile__empty-state-content {\n gap: var(--spacing-2xs, 0.625rem); /* 10px */\n}\n\n.profile__empty-state-content > h2,\n.profile__empty-state-content > p {\n margin: 0;\n}\n\n/* SAM - generated by ai below need to check design and change */\n.profile__action-button--empty:hover {\n background: var(--color-primary, #7C4DFF);\n border-color: var(--color-primary, #7C4DFF);\n color: white;\n}\n\n.profile__add-more-content {\n gap: var(--spacing-xxs, 0.3125rem);\n}\n\n.profile__add-more-icon {\n width: var(--icon-xxxs, 0.75rem); /* 12px */\n height: var(--icon-xxxs, 0.75rem); /* 12px */\n line-height: 0;\n flex: 0 0 auto;\n}\n\n.profile__add-more-icon svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n.skills__list {\n list-style: none;\n margin: 0;\n padding: 0;\n align-items: flex-start;\n gap: 0.5rem; /* 8px */\n}\n\n.skills__item {\n gap: 0.2rem;\n}\n\n.skills__item-label {\n color: var(--slate-900, #0F172B);\n font-size: var(--font-size-sm, 0.875rem); /* 14px */\n font-weight: var(--font-weight-md, 500);\n line-height: 1.2;\n}\n\n.skills__remove-button {\n border: none;\n background: none;\n cursor: pointer;\n padding: 0;\n margin: 0;\n line-height: 1;\n}\n\n.languages__list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.languages__item-label {\n color: var(--gray-900, #101828);\n font-size: var(--font-size-md, 1rem); /* 16px */\n font-weight: var(--font-weight-md, 500);\n}\n\n.languages__empty-icon {\n width: var(--icon-xs, 1.5rem); /* 24px new design uses this */\n height: var(--icon-xs, 1.5rem); /* 24px new design uses this */\n flex-shrink: 0;\n}\n/* Add-me-to-friends button style shared across profile sections. */\n.profile__btn-friends {\n width: auto;\n min-width: 0;\n max-width: none;\n padding: 0.375rem 0.75rem;\n gap: var(--spacing-xxs, 0.3125rem);\n border-radius: var(--border-radius-md, 0.5rem);\n border: 1px solid var(--color-primary, #7C4DFF);\n background: transparent;\n color: var(--color-primary, #7C4DFF);\n}\n\n/* Text-style action button utility (used for section header/edit actions). */\n.profile-action-text {\n width: auto;\n min-width: 0;\n max-width: none;\n padding: var(--spacing-xxs, 0.3125rem);\n border: none;\n background: none;\n color: var(--color-primary, #7C4DFF);\n cursor: pointer;\n font-size: var(--font-size-sm, 0.875rem);\n}\n\n.profile-action-text:hover {\n text-decoration: underline;\n}\n\n.profile-section-collapsible {\n display: block;\n}\n\n.profile-section-collapsible__header {\n margin-bottom: 0;\n}\n\n.profile-section-collapsible__actions {\n gap: var(--spacing-xs, 0.75rem);\n margin-top: -0.25rem;\n}\n\n.profile-section-collapsible__edit-button {\n min-width: 0;\n}\n\n.profile-section-collapsible__edit-icon {\n display: none;\n}\n\n.profile-section-collapsible__actions > button.inline-flex-row {\n display: none !important;\n min-height: auto;\n min-width: auto;\n padding: var(--spacing-xxs, 0.3125rem);\n border: none;\n background: none;\n color: var(--color-text, #1A1A1A);\n cursor: pointer;\n}\n\n.profile-section-collapsible__chevron {\n display: inline-block;\n flex: 0 0 auto;\n transition: transform var(--animation-duration, 0.2s) ease;\n}\n\n.profile-section-collapsible__content {\n margin-top: var(--spacing-2xs, 0.625rem);\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.profile-section-collapsible__content > :first-child {\n margin-top: 0;\n}\n\n.profile-section-collapsible__content > :last-child {\n margin-bottom: 0;\n}\n\n.bioCard,\n.bioSection,\n.socialCard,\n.socialList,\n.skills__list,\n.languages__list,\n.contact-info__list {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n@media (min-width: 769px) {\n .profile-section-collapsible > .profile-section-collapsible__content {\n display: block;\n }\n\n .profile-section-collapsible__edit-label svg,\n .profile__action-icon svg {\n width: 0.875rem;\n height: 0.875rem;\n }\n\n .profile-section-collapsible__edit-label svg path,\n .profile__action-icon svg path {\n fill: var(--color-primary, #7C4DFF);\n }\n\n .profile-section-collapsible__edit-label {\n display: inline;\n transform: translateY(-0.125rem);\n }\n\n .profile__add-more-icon {\n transform: translateY(-0.125rem);\n }\n\n .profile-section-collapsible__edit-icon {\n display: none;\n }\n}\n\n@media (max-width: 576px) {\n .profile-grid .profile__section-header h2,\n .profile-grid .profile__section-header h3,\n .profile-grid .profile__section-header h4,\n .profile-grid .profile__empty-state-content > h2,\n .profile-grid .cvSection h3,\n .profile-grid .profile__name,\n .profile-grid .friends-pane__header-name {\n font-family: inherit !important;\n }\n\n .profile-section-collapsible--inline-mobile-actions > .profile-section-collapsible__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n }\n\n .profile-section-collapsible--inline-mobile-actions > .profile-section-collapsible__header h2 {\n margin: 0;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__actions {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n gap: 0.25rem;\n margin-top: 0;\n flex: 0 0 auto;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button {\n display: inline-flex !important;\n order: 1;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:active,\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:focus,\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:focus-visible {\n border: none !important;\n outline: none !important;\n box-shadow: none !important;\n background: transparent !important;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__actions > button.inline-flex-row {\n order: 2;\n }\n\n .profile__section-header h2,\n .profile__section-header h3,\n .profile__section-header h4 {\n font-size: var(--font-size-lg, 1.125rem) !important;\n line-height: 1.2 !important;\n }\n\n .profile-grid .profile__empty-state-content > h2,\n .profile-grid .cvSection h3 {\n font-size: var(--font-size-lg, 1.125rem) !important;\n line-height: 1.2 !important;\n }\n\n .profile-grid .profile__name,\n .profile-grid .friends-pane__header-name {\n font-size: 1.5rem !important;\n line-height: 1.15 !important;\n }\n\n .profile-grid .profile__pronouns,\n .profile-grid .friends-pane__header-pronouns,\n .profile-grid .friends-pane__friends-pronouns {\n font-family: inherit !important;\n font-size: 0.6875rem !important;\n line-height: 1.1 !important;\n }\n\n .profile-section-collapsible[data-expanded="false"] .profile-section-collapsible__content {\n display: none;\n }\n\n .profile-section-collapsible__actions.flex-column {\n align-items: flex-end;\n gap: 0.25rem;\n }\n\n /* Keep empty-section mobile header controls in the same order as regular sections: toggle first, add/edit below. */\n .profile__section--empty .profile-section-collapsible__actions > button.inline-flex-row {\n order: 1;\n }\n\n .profile__section--empty .profile-section-collapsible__actions > .profile-section-collapsible__edit-button {\n order: 2;\n }\n\n .profile-section-collapsible[data-expanded="true"] .profile-section-collapsible__chevron {\n transform: rotate(180deg);\n }\n\n .profile-section-collapsible__edit-label {\n display: none !important;\n }\n\n .profile-section-collapsible__edit-icon {\n display: inline;\n }\n\n /* Empty-state action buttons use icon-only mobile controls (plus sign). */\n .profile__section--empty .profile-section-collapsible__edit-label {\n display: none !important;\n }\n\n .profile__section--empty .profile-section-collapsible__edit-icon {\n display: inline !important;\n }\n\n .profile-section-collapsible .profile-section-collapsible__edit-button {\n display: none !important;\n order: 2;\n }\n\n .profile-section-collapsible[data-expanded="true"] .profile-section-collapsible__edit-button {\n display: inline-flex !important;\n }\n /* Reassert toggle button layout in collapsible action rows on mobile \n so utility resets never hide/misalign the control. */\n .profile-section-collapsible__actions > button.inline-flex-row {\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n }\n\n .profile-section-collapsible__edit-icon--add svg path {\n fill: #1E2939 !important;\n stroke: #1E2939 !important;\n }\n\n .profile-section-collapsible__edit-icon--projects svg path {\n stroke-width: 1.714px !important;\n stroke: var(--gray-800, #1E2939) !important;\n fill: none !important;\n }\n\n}\n\n@container profile-pane (max-width: 576px) {\n .profile-grid .profile__section-header h2,\n .profile-grid .profile__section-header h3,\n .profile-grid .profile__section-header h4,\n .profile-grid .profile__empty-state-content > h2,\n .profile-grid .cvSection h3,\n .profile-grid .profile__name,\n .profile-grid .friends-pane__header-name {\n font-family: inherit !important;\n }\n\n .profile-section-collapsible--inline-mobile-actions > .profile-section-collapsible__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n }\n\n .profile-section-collapsible--inline-mobile-actions > .profile-section-collapsible__header h2 {\n margin: 0;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__actions {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n gap: 0.25rem;\n margin-top: 0;\n flex: 0 0 auto;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button {\n order: 1;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:active,\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:focus,\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:focus-visible {\n border: none !important;\n outline: none !important;\n box-shadow: none !important;\n background: transparent !important;\n }\n\n .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__actions > button.inline-flex-row {\n order: 2;\n }\n\n .profile__section-header h2,\n .profile__section-header h3,\n .profile__section-header h4 {\n font-size: var(--font-size-lg, 1.125rem) !important;\n line-height: 1.2 !important;\n }\n\n .profile-grid .profile__empty-state-content > h2,\n .profile-grid .cvSection h3 {\n font-size: var(--font-size-lg, 1.125rem) !important;\n line-height: 1.2 !important;\n }\n\n .profile-grid .profile__name,\n .profile-grid .friends-pane__header-name {\n font-size: 1.5rem !important;\n line-height: 1.15 !important;\n }\n\n .profile-grid .profile__pronouns,\n .profile-grid .friends-pane__header-pronouns,\n .profile-grid .friends-pane__friends-pronouns {\n font-family: inherit !important;\n font-size: 0.6875rem !important;\n line-height: 1.1 !important;\n }\n\n .profile-section-collapsible[data-expanded="false"] .profile-section-collapsible__content {\n display: none;\n }\n\n .profile-section-collapsible__actions.flex-column {\n align-items: flex-end;\n gap: 0.25rem;\n }\n\n .profile__section--empty .profile-section-collapsible__actions > button.inline-flex-row {\n order: 1;\n }\n\n .profile__section--empty .profile-section-collapsible__actions > .profile-section-collapsible__edit-button {\n order: 2;\n }\n\n .profile-section-collapsible[data-expanded="true"] .profile-section-collapsible__chevron {\n transform: rotate(180deg);\n }\n\n .profile-section-collapsible__edit-label {\n display: none !important;\n }\n\n .profile-section-collapsible__edit-icon {\n display: inline;\n }\n\n .profile__section--empty .profile-section-collapsible__edit-label {\n display: none !important;\n }\n\n .profile__section--empty .profile-section-collapsible__edit-icon {\n display: inline !important;\n }\n\n .profile-section-collapsible .profile-section-collapsible__edit-button {\n display: none !important;\n order: 2;\n }\n\n .profile-section-collapsible[data-expanded="true"] .profile-section-collapsible__edit-button {\n display: inline-flex !important;\n }\n\n .profile-section-collapsible__actions > button.inline-flex-row {\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n }\n\n .profile-section-collapsible__edit-icon--add svg path {\n fill: #1E2939 !important;\n stroke: #1E2939 !important;\n }\n\n .profile-section-collapsible__edit-icon--projects svg path {\n stroke-width: 1.714px !important;\n stroke: var(--gray-800, #1E2939) !important;\n fill: none !important;\n }\n}\n\n/* Zebra Striping - used by FriendList, StuffCard tables */\n.zebra-stripe tr:nth-child(even),\n.zebra-stripe > *:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.02);\n}\n\n'],sourceRoot:""}]);const l=r},6314(e){"use strict";e.exports=function(e){var n=[];return n.toString=function(){return this.map(function(n){var t="",i=void 0!==n[5];return n[4]&&(t+="@supports (".concat(n[4],") {")),n[2]&&(t+="@media ".concat(n[2]," {")),i&&(t+="@layer".concat(n[5].length>0?" ".concat(n[5]):""," {")),t+=e(n),i&&(t+="}"),n[2]&&(t+="}"),n[4]&&(t+="}"),t}).join("")},n.i=function(e,t,i,o,a){"string"==typeof e&&(e=[[null,e,void 0]]);var r={};if(i)for(var l=0;l<this.length;l++){var s=this[l][0];null!=s&&(r[s]=!0)}for(var d=0;d<e.length;d++){var c=[].concat(e[d]);i&&r[c[0]]||(void 0!==a&&(void 0===c[5]||(c[1]="@layer".concat(c[5].length>0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=a),t&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=t):c[2]=t),o&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=o):c[4]="".concat(o)),n.push(c))}},n}},1354(e){"use strict";e.exports=function(e){var n=e[1],t=e[3];if(!t)return n;if("function"==typeof btoa){var i=btoa(unescape(encodeURIComponent(JSON.stringify(t)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),a="/*# ".concat(o," */");return[n].concat([a]).join("\n")}return[n].join("\n")}},6320(e){"use strict";var n={single_source_shortest_paths:function(e,t,i){var o={},a={};a[t]=0;var r,l,s,d,c,A,p,u=n.PriorityQueue.make();for(u.push(t,0);!u.empty();)for(s in l=(r=u.pop()).value,d=r.cost,c=e[l]||{})c.hasOwnProperty(s)&&(A=d+c[s],p=a[s],(void 0===a[s]||p>A)&&(a[s]=A,u.push(s,A),o[s]=l));if(void 0!==i&&void 0===a[i]){var f=["Could not find a path from ",t," to ",i,"."].join("");throw new Error(f)}return o},extract_shortest_path_from_predecessor_list:function(e,n){for(var t=[],i=n;i;)t.push(i),e[i],i=e[i];return t.reverse(),t},find_path:function(e,t,i){var o=n.single_source_shortest_paths(e,t,i);return n.extract_shortest_path_from_predecessor_list(o,i)},PriorityQueue:{make:function(e){var t,i=n.PriorityQueue,o={};for(t in e=e||{},i)i.hasOwnProperty(t)&&(o[t]=i[t]);return o.queue=[],o.sorter=e.sorter||i.default_sorter,o},default_sorter:function(e,n){return e.cost-n.cost},push:function(e,n){var t={value:e,cost:n};this.queue.push(t),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};e.exports=n},7583(e,n,t){const i=t(1333),o=t(157),a=t(7899),r=t(6756);function l(e,n,t,a,r){const l=[].slice.call(arguments,1),s=l.length,d="function"==typeof l[s-1];if(!d&&!i())throw new Error("Callback required as last argument");if(!d){if(s<1)throw new Error("Too few arguments provided");return 1===s?(t=n,n=a=void 0):2!==s||n.getContext||(a=t,t=n,n=void 0),new Promise(function(i,r){try{const r=o.create(t,a);i(e(r,n,a))}catch(e){r(e)}})}if(s<2)throw new Error("Too few arguments provided");2===s?(r=t,t=n,n=a=void 0):3===s&&(n.getContext&&void 0===r?(r=a,a=void 0):(r=a,a=t,t=n,n=void 0));try{const i=o.create(t,a);r(null,e(i,n,a))}catch(e){r(e)}}o.create,l.bind(null,a.render),l.bind(null,a.renderToDataURL),n.toString=l.bind(null,function(e,n,t){return r.render(e,t)})},1333(e){e.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},6421(e,n,t){const i=t(6886).getSymbolSize;n.getRowColCoords=function(e){if(1===e)return[];const n=Math.floor(e/7)+2,t=i(e),o=145===t?26:2*Math.ceil((t-13)/(2*n-2)),a=[t-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-o;return a.push(6),a.reverse()},n.getPositions=function(e){const t=[],i=n.getRowColCoords(e),o=i.length;for(let e=0;e<o;e++)for(let n=0;n<o;n++)0===e&&0===n||0===e&&n===o-1||e===o-1&&0===n||t.push([i[e],i[n]]);return t}},1433(e,n,t){const i=t(208),o=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function a(e){this.mode=i.ALPHANUMERIC,this.data=e}a.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},a.prototype.getLength=function(){return this.data.length},a.prototype.getBitsLength=function(){return a.getBitsLength(this.data.length)},a.prototype.write=function(e){let n;for(n=0;n+2<=this.data.length;n+=2){let t=45*o.indexOf(this.data[n]);t+=o.indexOf(this.data[n+1]),e.put(t,11)}this.data.length%2&&e.put(o.indexOf(this.data[n]),6)},e.exports=a},9899(e){function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){const n=Math.floor(e/8);return 1==(this.buffer[n]>>>7-e%8&1)},put:function(e,n){for(let t=0;t<n;t++)this.putBit(1==(e>>>n-t-1&1))},getLengthInBits:function(){return this.length},putBit:function(e){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}},e.exports=n},8820(e){function n(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,n,t,i){const o=e*this.size+n;this.data[o]=t,i&&(this.reservedBit[o]=!0)},n.prototype.get=function(e,n){return this.data[e*this.size+n]},n.prototype.xor=function(e,n,t){this.data[e*this.size+n]^=t},n.prototype.isReserved=function(e,n){return this.reservedBit[e*this.size+n]},e.exports=n},5822(e,n,t){const i=t(208);function o(e){this.mode=i.BYTE,this.data="string"==typeof e?(new TextEncoder).encode(e):new Uint8Array(e)}o.getBitsLength=function(e){return 8*e},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(e){for(let n=0,t=this.data.length;n<t;n++)e.put(this.data[n],8)},e.exports=o},7518(e,n,t){const i=t(9953),o=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],a=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];n.getBlocksCount=function(e,n){switch(n){case i.L:return o[4*(e-1)+0];case i.M:return o[4*(e-1)+1];case i.Q:return o[4*(e-1)+2];case i.H:return o[4*(e-1)+3];default:return}},n.getTotalCodewordsCount=function(e,n){switch(n){case i.L:return a[4*(e-1)+0];case i.M:return a[4*(e-1)+1];case i.Q:return a[4*(e-1)+2];case i.H:return a[4*(e-1)+3];default:return}}},9953(e,n){n.L={bit:1},n.M={bit:0},n.Q={bit:3},n.H={bit:2},n.isValid=function(e){return e&&void 0!==e.bit&&e.bit>=0&&e.bit<4},n.from=function(e,t){if(n.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw new Error("Param is not a string");switch(e.toLowerCase()){case"l":case"low":return n.L;case"m":case"medium":return n.M;case"q":case"quartile":return n.Q;case"h":case"high":return n.H;default:throw new Error("Unknown EC Level: "+e)}}(e)}catch(e){return t}}},7756(e,n,t){const i=t(6886).getSymbolSize;n.getPositions=function(e){const n=i(e);return[[0,0],[n-7,0],[0,n-7]]}},4565(e,n,t){const i=t(6886),o=i.getBCHDigit(1335);n.getEncodedBits=function(e,n){const t=e.bit<<3|n;let a=t<<10;for(;i.getBCHDigit(a)-o>=0;)a^=1335<<i.getBCHDigit(a)-o;return 21522^(t<<10|a)}},2731(e,n){const t=new Uint8Array(512),i=new Uint8Array(256);!function(){let e=1;for(let n=0;n<255;n++)t[n]=e,i[e]=n,e<<=1,256&e&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]}(),n.log=function(e){if(e<1)throw new Error("log("+e+")");return i[e]},n.exp=function(e){return t[e]},n.mul=function(e,n){return 0===e||0===n?0:t[i[e]+i[n]]}},4861(e,n,t){const i=t(208),o=t(6886);function a(e){this.mode=i.KANJI,this.data=e}a.getBitsLength=function(e){return 13*e},a.prototype.getLength=function(){return this.data.length},a.prototype.getBitsLength=function(){return a.getBitsLength(this.data.length)},a.prototype.write=function(e){let n;for(n=0;n<this.data.length;n++){let t=o.toSJIS(this.data[n]);if(t>=33088&&t<=40956)t-=33088;else{if(!(t>=57408&&t<=60351))throw new Error("Invalid SJIS character: "+this.data[n]+"\nMake sure your charset is UTF-8");t-=49472}t=192*(t>>>8&255)+(255&t),e.put(t,13)}},e.exports=a},1332(e,n){n.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const t=3,i=3,o=40,a=10;function r(e,t,i){switch(e){case n.Patterns.PATTERN000:return(t+i)%2==0;case n.Patterns.PATTERN001:return t%2==0;case n.Patterns.PATTERN010:return i%3==0;case n.Patterns.PATTERN011:return(t+i)%3==0;case n.Patterns.PATTERN100:return(Math.floor(t/2)+Math.floor(i/3))%2==0;case n.Patterns.PATTERN101:return t*i%2+t*i%3==0;case n.Patterns.PATTERN110:return(t*i%2+t*i%3)%2==0;case n.Patterns.PATTERN111:return(t*i%3+(t+i)%2)%2==0;default:throw new Error("bad maskPattern:"+e)}}n.isValid=function(e){return null!=e&&""!==e&&!isNaN(e)&&e>=0&&e<=7},n.from=function(e){return n.isValid(e)?parseInt(e,10):void 0},n.getPenaltyN1=function(e){const n=e.size;let i=0,o=0,a=0,r=null,l=null;for(let s=0;s<n;s++){o=a=0,r=l=null;for(let d=0;d<n;d++){let n=e.get(s,d);n===r?o++:(o>=5&&(i+=t+(o-5)),r=n,o=1),n=e.get(d,s),n===l?a++:(a>=5&&(i+=t+(a-5)),l=n,a=1)}o>=5&&(i+=t+(o-5)),a>=5&&(i+=t+(a-5))}return i},n.getPenaltyN2=function(e){const n=e.size;let t=0;for(let i=0;i<n-1;i++)for(let o=0;o<n-1;o++){const n=e.get(i,o)+e.get(i,o+1)+e.get(i+1,o)+e.get(i+1,o+1);4!==n&&0!==n||t++}return t*i},n.getPenaltyN3=function(e){const n=e.size;let t=0,i=0,a=0;for(let o=0;o<n;o++){i=a=0;for(let r=0;r<n;r++)i=i<<1&2047|e.get(o,r),r>=10&&(1488===i||93===i)&&t++,a=a<<1&2047|e.get(r,o),r>=10&&(1488===a||93===a)&&t++}return t*o},n.getPenaltyN4=function(e){let n=0;const t=e.data.length;for(let i=0;i<t;i++)n+=e.data[i];return Math.abs(Math.ceil(100*n/t/5)-10)*a},n.applyMask=function(e,n){const t=n.size;for(let i=0;i<t;i++)for(let o=0;o<t;o++)n.isReserved(o,i)||n.xor(o,i,r(e,o,i))},n.getBestMask=function(e,t){const i=Object.keys(n.Patterns).length;let o=0,a=1/0;for(let r=0;r<i;r++){t(r),n.applyMask(r,e);const i=n.getPenaltyN1(e)+n.getPenaltyN2(e)+n.getPenaltyN3(e)+n.getPenaltyN4(e);n.applyMask(r,e),i<a&&(a=i,o=r)}return o}},208(e,n,t){const i=t(1878),o=t(7044);n.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},n.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},n.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},n.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},n.MIXED={bit:-1},n.getCharCountIndicator=function(e,n){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!i.isValid(n))throw new Error("Invalid version: "+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},n.getBestModeForData=function(e){return o.testNumeric(e)?n.NUMERIC:o.testAlphanumeric(e)?n.ALPHANUMERIC:o.testKanji(e)?n.KANJI:n.BYTE},n.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")},n.isValid=function(e){return e&&e.bit&&e.ccBits},n.from=function(e,t){if(n.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw new Error("Param is not a string");switch(e.toLowerCase()){case"numeric":return n.NUMERIC;case"alphanumeric":return n.ALPHANUMERIC;case"kanji":return n.KANJI;case"byte":return n.BYTE;default:throw new Error("Unknown mode: "+e)}}(e)}catch(e){return t}}},4357(e,n,t){const i=t(208);function o(e){this.mode=i.NUMERIC,this.data=e.toString()}o.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(e){let n,t,i;for(n=0;n+3<=this.data.length;n+=3)t=this.data.substr(n,3),i=parseInt(t,10),e.put(i,10);const o=this.data.length-n;o>0&&(t=this.data.substr(n),i=parseInt(t,10),e.put(i,3*o+1))},e.exports=o},4713(e,n,t){const i=t(2731);n.mul=function(e,n){const t=new Uint8Array(e.length+n.length-1);for(let o=0;o<e.length;o++)for(let a=0;a<n.length;a++)t[o+a]^=i.mul(e[o],n[a]);return t},n.mod=function(e,n){let t=new Uint8Array(e);for(;t.length-n.length>=0;){const e=t[0];for(let o=0;o<n.length;o++)t[o]^=i.mul(n[o],e);let o=0;for(;o<t.length&&0===t[o];)o++;t=t.slice(o)}return t},n.generateECPolynomial=function(e){let t=new Uint8Array([1]);for(let o=0;o<e;o++)t=n.mul(t,new Uint8Array([1,i.exp(o)]));return t}},157(e,n,t){const i=t(6886),o=t(9953),a=t(9899),r=t(8820),l=t(6421),s=t(7756),d=t(1332),c=t(7518),A=t(4764),p=t(1427),u=t(4565),f=t(208),m=t(9801);function g(e,n,t){const i=e.size,o=u.getEncodedBits(n,t);let a,r;for(a=0;a<15;a++)r=1==(o>>a&1),a<6?e.set(a,8,r,!0):a<8?e.set(a+1,8,r,!0):e.set(i-15+a,8,r,!0),a<8?e.set(8,i-a-1,r,!0):a<9?e.set(8,15-a-1+1,r,!0):e.set(8,15-a-1,r,!0);e.set(i-8,8,1,!0)}function h(e,n,t){const o=new a;t.forEach(function(n){o.put(n.mode.bit,4),o.put(n.getLength(),f.getCharCountIndicator(n.mode,e)),n.write(o)});const r=8*(i.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n));for(o.getLengthInBits()+4<=r&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(0);const l=(r-o.getLengthInBits())/8;for(let e=0;e<l;e++)o.put(e%2?17:236,8);return function(e,n,t){const o=i.getSymbolTotalCodewords(n),a=c.getTotalCodewordsCount(n,t),r=o-a,l=c.getBlocksCount(n,t),s=o%l,d=l-s,p=Math.floor(o/l),u=Math.floor(r/l),f=u+1,m=p-u,g=new A(m);let h=0;const C=new Array(l),b=new Array(l);let E=0;const _=new Uint8Array(e.buffer);for(let e=0;e<l;e++){const n=e<d?u:f;C[e]=_.slice(h,h+n),b[e]=g.encode(C[e]),h+=n,E=Math.max(E,n)}const v=new Uint8Array(o);let w,y,B=0;for(w=0;w<E;w++)for(y=0;y<l;y++)w<C[y].length&&(v[B++]=C[y][w]);for(w=0;w<m;w++)for(y=0;y<l;y++)v[B++]=b[y][w];return v}(o,e,n)}function C(e,n,t,o){let a;if(Array.isArray(e))a=m.fromArray(e);else{if("string"!=typeof e)throw new Error("Invalid data");{let i=n;if(!i){const n=m.rawSplit(e);i=p.getBestVersionForData(n,t)}a=m.fromString(e,i||40)}}const c=p.getBestVersionForData(a,t);if(!c)throw new Error("The amount of data is too big to be stored in a QR Code");if(n){if(n<c)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+c+".\n")}else n=c;const A=h(n,t,a),u=i.getSymbolSize(n),f=new r(u);return function(e,n){const t=e.size,i=s.getPositions(n);for(let n=0;n<i.length;n++){const o=i[n][0],a=i[n][1];for(let n=-1;n<=7;n++)if(!(o+n<=-1||t<=o+n))for(let i=-1;i<=7;i++)a+i<=-1||t<=a+i||(n>=0&&n<=6&&(0===i||6===i)||i>=0&&i<=6&&(0===n||6===n)||n>=2&&n<=4&&i>=2&&i<=4?e.set(o+n,a+i,!0,!0):e.set(o+n,a+i,!1,!0))}}(f,n),function(e){const n=e.size;for(let t=8;t<n-8;t++){const n=t%2==0;e.set(t,6,n,!0),e.set(6,t,n,!0)}}(f),function(e,n){const t=l.getPositions(n);for(let n=0;n<t.length;n++){const i=t[n][0],o=t[n][1];for(let n=-2;n<=2;n++)for(let t=-2;t<=2;t++)-2===n||2===n||-2===t||2===t||0===n&&0===t?e.set(i+n,o+t,!0,!0):e.set(i+n,o+t,!1,!0)}}(f,n),g(f,t,0),n>=7&&function(e,n){const t=e.size,i=p.getEncodedBits(n);let o,a,r;for(let n=0;n<18;n++)o=Math.floor(n/3),a=n%3+t-8-3,r=1==(i>>n&1),e.set(o,a,r,!0),e.set(a,o,r,!0)}(f,n),function(e,n){const t=e.size;let i=-1,o=t-1,a=7,r=0;for(let l=t-1;l>0;l-=2)for(6===l&&l--;;){for(let t=0;t<2;t++)if(!e.isReserved(o,l-t)){let i=!1;r<n.length&&(i=1==(n[r]>>>a&1)),e.set(o,l-t,i),a--,-1===a&&(r++,a=7)}if(o+=i,o<0||t<=o){o-=i,i=-i;break}}}(f,A),isNaN(o)&&(o=d.getBestMask(f,g.bind(null,f,t))),d.applyMask(o,f),g(f,t,o),{modules:f,version:n,errorCorrectionLevel:t,maskPattern:o,segments:a}}n.create=function(e,n){if(void 0===e||""===e)throw new Error("No input text");let t,a,r=o.M;return void 0!==n&&(r=o.from(n.errorCorrectionLevel,o.M),t=p.from(n.version),a=d.from(n.maskPattern),n.toSJISFunc&&i.setToSJISFunction(n.toSJISFunc)),C(e,t,r,a)}},4764(e,n,t){const i=t(4713);function o(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}o.prototype.initialize=function(e){this.degree=e,this.genPoly=i.generateECPolynomial(this.degree)},o.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");const n=new Uint8Array(e.length+this.degree);n.set(e);const t=i.mod(n,this.genPoly),o=this.degree-t.length;if(o>0){const e=new Uint8Array(this.degree);return e.set(t,o),e}return t},e.exports=o},7044(e,n){const t="[0-9]+";let i="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";i=i.replace(/u/g,"\\u");const o="(?:(?![A-Z0-9 $%*+\\-./:]|"+i+")(?:.|[\r\n]))+";n.KANJI=new RegExp(i,"g"),n.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),n.BYTE=new RegExp(o,"g"),n.NUMERIC=new RegExp(t,"g"),n.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");const a=new RegExp("^"+i+"$"),r=new RegExp("^"+t+"$"),l=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");n.testKanji=function(e){return a.test(e)},n.testNumeric=function(e){return r.test(e)},n.testAlphanumeric=function(e){return l.test(e)}},9801(e,n,t){const i=t(208),o=t(4357),a=t(1433),r=t(5822),l=t(4861),s=t(7044),d=t(6886),c=t(6320);function A(e){return unescape(encodeURIComponent(e)).length}function p(e,n,t){const i=[];let o;for(;null!==(o=e.exec(t));)i.push({data:o[0],index:o.index,mode:n,length:o[0].length});return i}function u(e){const n=p(s.NUMERIC,i.NUMERIC,e),t=p(s.ALPHANUMERIC,i.ALPHANUMERIC,e);let o,a;d.isKanjiModeEnabled()?(o=p(s.BYTE,i.BYTE,e),a=p(s.KANJI,i.KANJI,e)):(o=p(s.BYTE_KANJI,i.BYTE,e),a=[]);return n.concat(t,o,a).sort(function(e,n){return e.index-n.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,n){switch(n){case i.NUMERIC:return o.getBitsLength(e);case i.ALPHANUMERIC:return a.getBitsLength(e);case i.KANJI:return l.getBitsLength(e);case i.BYTE:return r.getBitsLength(e)}}function m(e,n){let t;const s=i.getBestModeForData(e);if(t=i.from(n,s),t!==i.BYTE&&t.bit<s.bit)throw new Error('"'+e+'" cannot be encoded with mode '+i.toString(t)+".\n Suggested mode is: "+i.toString(s));switch(t!==i.KANJI||d.isKanjiModeEnabled()||(t=i.BYTE),t){case i.NUMERIC:return new o(e);case i.ALPHANUMERIC:return new a(e);case i.KANJI:return new l(e);case i.BYTE:return new r(e)}}n.fromArray=function(e){return e.reduce(function(e,n){return"string"==typeof n?e.push(m(n,null)):n.data&&e.push(m(n.data,n.mode)),e},[])},n.fromString=function(e,t){const o=function(e){const n=[];for(let t=0;t<e.length;t++){const o=e[t];switch(o.mode){case i.NUMERIC:n.push([o,{data:o.data,mode:i.ALPHANUMERIC,length:o.length},{data:o.data,mode:i.BYTE,length:o.length}]);break;case i.ALPHANUMERIC:n.push([o,{data:o.data,mode:i.BYTE,length:o.length}]);break;case i.KANJI:n.push([o,{data:o.data,mode:i.BYTE,length:A(o.data)}]);break;case i.BYTE:n.push([{data:o.data,mode:i.BYTE,length:A(o.data)}])}}return n}(u(e,d.isKanjiModeEnabled())),a=function(e,n){const t={},o={start:{}};let a=["start"];for(let r=0;r<e.length;r++){const l=e[r],s=[];for(let e=0;e<l.length;e++){const d=l[e],c=""+r+e;s.push(c),t[c]={node:d,lastCount:0},o[c]={};for(let e=0;e<a.length;e++){const r=a[e];t[r]&&t[r].node.mode===d.mode?(o[r][c]=f(t[r].lastCount+d.length,d.mode)-f(t[r].lastCount,d.mode),t[r].lastCount+=d.length):(t[r]&&(t[r].lastCount=d.length),o[r][c]=f(d.length,d.mode)+4+i.getCharCountIndicator(d.mode,n))}}a=s}for(let e=0;e<a.length;e++)o[a[e]].end=0;return{map:o,table:t}}(o,t),r=c.find_path(a.map,"start","end"),l=[];for(let e=1;e<r.length-1;e++)l.push(a.table[r[e]].node);return n.fromArray(function(e){return e.reduce(function(e,n){const t=e.length-1>=0?e[e.length-1]:null;return t&&t.mode===n.mode?(e[e.length-1].data+=n.data,e):(e.push(n),e)},[])}(l))},n.rawSplit=function(e){return n.fromArray(u(e,d.isKanjiModeEnabled()))}},6886(e,n){let t;const i=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];n.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return 4*e+17},n.getSymbolTotalCodewords=function(e){return i[e]},n.getBCHDigit=function(e){let n=0;for(;0!==e;)n++,e>>>=1;return n},n.setToSJISFunction=function(e){if("function"!=typeof e)throw new Error('"toSJISFunc" is not a valid function.');t=e},n.isKanjiModeEnabled=function(){return void 0!==t},n.toSJIS=function(e){return t(e)}},1878(e,n){n.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}},1427(e,n,t){const i=t(6886),o=t(7518),a=t(9953),r=t(208),l=t(1878),s=i.getBCHDigit(7973);function d(e,n){return r.getCharCountIndicator(e,n)+4}function c(e,n){let t=0;return e.forEach(function(e){const i=d(e.mode,n);t+=i+e.getBitsLength()}),t}n.from=function(e,n){return l.isValid(e)?parseInt(e,10):n},n.getCapacity=function(e,n,t){if(!l.isValid(e))throw new Error("Invalid QR Code version");void 0===t&&(t=r.BYTE);const a=8*(i.getSymbolTotalCodewords(e)-o.getTotalCodewordsCount(e,n));if(t===r.MIXED)return a;const s=a-d(t,e);switch(t){case r.NUMERIC:return Math.floor(s/10*3);case r.ALPHANUMERIC:return Math.floor(s/11*2);case r.KANJI:return Math.floor(s/13);case r.BYTE:default:return Math.floor(s/8)}},n.getBestVersionForData=function(e,t){let i;const o=a.from(t,a.M);if(Array.isArray(e)){if(e.length>1)return function(e,t){for(let i=1;i<=40;i++)if(c(e,i)<=n.getCapacity(i,t,r.MIXED))return i}(e,o);if(0===e.length)return 1;i=e[0]}else i=e;return function(e,t,i){for(let o=1;o<=40;o++)if(t<=n.getCapacity(o,i,e))return o}(i.mode,i.getLength(),o)},n.getEncodedBits=function(e){if(!l.isValid(e)||e<7)throw new Error("Invalid QR Code version");let n=e<<12;for(;i.getBCHDigit(n)-s>=0;)n^=7973<<i.getBCHDigit(n)-s;return e<<12|n}},7899(e,n,t){const i=t(2726);n.render=function(e,n,t){let o=t,a=n;void 0!==o||n&&n.getContext||(o=n,n=void 0),n||(a=function(){try{return document.createElement("canvas")}catch(e){throw new Error("You need to specify a canvas element")}}()),o=i.getOptions(o);const r=i.getImageWidth(e.modules.size,o),l=a.getContext("2d"),s=l.createImageData(r,r);return i.qrToImageData(s.data,e,o),function(e,n,t){e.clearRect(0,0,n.width,n.height),n.style||(n.style={}),n.height=t,n.width=t,n.style.height=t+"px",n.style.width=t+"px"}(l,a,r),l.putImageData(s,0,0),a},n.renderToDataURL=function(e,t,i){let o=i;void 0!==o||t&&t.getContext||(o=t,t=void 0),o||(o={});const a=n.render(e,t,o),r=o.type||"image/png",l=o.rendererOpts||{};return a.toDataURL(r,l.quality)}},6756(e,n,t){const i=t(2726);function o(e,n){const t=e.a/255,i=n+'="'+e.hex+'"';return t<1?i+" "+n+'-opacity="'+t.toFixed(2).slice(1)+'"':i}function a(e,n,t){let i=e+n;return void 0!==t&&(i+=" "+t),i}n.render=function(e,n,t){const r=i.getOptions(n),l=e.modules.size,s=e.modules.data,d=l+2*r.margin,c=r.color.light.a?"<path "+o(r.color.light,"fill")+' d="M0 0h'+d+"v"+d+'H0z"/>':"",A="<path "+o(r.color.dark,"stroke")+' d="'+function(e,n,t){let i="",o=0,r=!1,l=0;for(let s=0;s<e.length;s++){const d=Math.floor(s%n),c=Math.floor(s/n);d||r||(r=!0),e[s]?(l++,s>0&&d>0&&e[s-1]||(i+=r?a("M",d+t,.5+c+t):a("m",o,0),o=0,r=!1),d+1<n&&e[s+1]||(i+=a("h",l),l=0)):o++}return i}(s,l,r.margin)+'"/>',p='viewBox="0 0 '+d+" "+d+'"',u='<svg xmlns="http://www.w3.org/2000/svg" '+(r.width?'width="'+r.width+'" height="'+r.width+'" ':"")+p+' shape-rendering="crispEdges">'+c+A+"</svg>\n";return"function"==typeof t&&t(null,u),u}},2726(e,n){function t(e){if("number"==typeof e&&(e=e.toString()),"string"!=typeof e)throw new Error("Color should be defined as hex string");let n=e.slice().replace("#","").split("");if(n.length<3||5===n.length||n.length>8)throw new Error("Invalid hex color: "+e);3!==n.length&&4!==n.length||(n=Array.prototype.concat.apply([],n.map(function(e){return[e,e]}))),6===n.length&&n.push("F","F");const t=parseInt(n.join(""),16);return{r:t>>24&255,g:t>>16&255,b:t>>8&255,a:255&t,hex:"#"+n.slice(0,6).join("")}}n.getOptions=function(e){e||(e={}),e.color||(e.color={});const n=void 0===e.margin||null===e.margin||e.margin<0?4:e.margin,i=e.width&&e.width>=21?e.width:void 0,o=e.scale||4;return{width:i,scale:i?4:o,margin:n,color:{dark:t(e.color.dark||"#000000ff"),light:t(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}},n.getScale=function(e,n){return n.width&&n.width>=e+2*n.margin?n.width/(e+2*n.margin):n.scale},n.getImageWidth=function(e,t){const i=n.getScale(e,t);return Math.floor((e+2*t.margin)*i)},n.qrToImageData=function(e,t,i){const o=t.modules.size,a=t.modules.data,r=n.getScale(o,i),l=Math.floor((o+2*i.margin)*r),s=i.margin*r,d=[i.color.light,i.color.dark];for(let n=0;n<l;n++)for(let t=0;t<l;t++){let c=4*(n*l+t),A=i.color.light;if(n>=s&&t>=s&&n<l-s&&t<l-s){A=d[a[Math.floor((n-s)/r)*o+Math.floor((t-s)/r)]?1:0]}e[c++]=A.r,e[c++]=A.g,e[c++]=A.b,e[c]=A.a}}},5072(e){"use strict";var n=[];function t(e){for(var t=-1,i=0;i<n.length;i++)if(n[i].identifier===e){t=i;break}return t}function i(e,i){for(var a={},r=[],l=0;l<e.length;l++){var s=e[l],d=i.base?s[0]+i.base:s[0],c=a[d]||0,A="".concat(d," ").concat(c);a[d]=c+1;var p=t(A),u={css:s[1],media:s[2],sourceMap:s[3],supports:s[4],layer:s[5]};if(-1!==p)n[p].references++,n[p].updater(u);else{var f=o(u,i);i.byIndex=l,n.splice(l,0,{identifier:A,updater:f,references:1})}r.push(A)}return r}function o(e,n){var t=n.domAPI(n);t.update(e);return function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap&&n.supports===e.supports&&n.layer===e.layer)return;t.update(e=n)}else t.remove()}}e.exports=function(e,o){var a=i(e=e||[],o=o||{});return function(e){e=e||[];for(var r=0;r<a.length;r++){var l=t(a[r]);n[l].references--}for(var s=i(e,o),d=0;d<a.length;d++){var c=t(a[d]);0===n[c].references&&(n[c].updater(),n.splice(c,1))}a=s}}},7659(e){"use strict";var n={};e.exports=function(e,t){var i=function(e){if(void 0===n[e]){var t=document.querySelector(e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}n[e]=t}return n[e]}(e);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(t)}},540(e){"use strict";e.exports=function(e){var n=document.createElement("style");return e.setAttributes(n,e.attributes),e.insert(n,e.options),n}},5056(e,n,t){"use strict";e.exports=function(e){var n=t.nc;n&&e.setAttribute("nonce",n)}},7825(e){"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var n=e.insertStyleElement(e);return{update:function(t){!function(e,n,t){var i="";t.supports&&(i+="@supports (".concat(t.supports,") {")),t.media&&(i+="@media ".concat(t.media," {"));var o=void 0!==t.layer;o&&(i+="@layer".concat(t.layer.length>0?" ".concat(t.layer):""," {")),i+=t.css,o&&(i+="}"),t.media&&(i+="}"),t.supports&&(i+="}");var a=t.sourceMap;a&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),n.styleTagTransform(i,e,n.options)}(n,e,t)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)}}}},1113(e){"use strict";e.exports=function(e,n){if(n.styleSheet)n.styleSheet.cssText=e;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(e))}}},5663(n){"use strict";n.exports=e},9426(e){"use strict";e.exports=n},5491(e){"use strict";e.exports=t}},o={};function a(e){var n=o[e];if(void 0!==n)return n.exports;var t=o[e]={id:e,exports:{}};return i[e](t,t.exports,a),t.exports}a.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return a.d(n,{a:n}),n},a.d=(e,n)=>{for(var t in n)a.o(n,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var n=a.g.document;if(!e&&n&&(n.currentScript&&"SCRIPT"===n.currentScript.tagName.toUpperCase()&&(e=n.currentScript.src),!e)){var t=n.getElementsByTagName("script");if(t.length)for(var i=t.length-1;i>-1&&(!e||!/^http(s?):/.test(e));)e=t[i--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),a.nc=void 0;var r={};return(()=>{"use strict";a.d(r,{default:()=>zr});var e=a(5072),n=a.n(e),t=a(7825),i=a.n(t),o=a(7659),l=a.n(o),s=a(5056),d=a.n(s),c=a(540),A=a.n(c),p=a(1113),u=a.n(p),f=a(1267),m={};m.styleTagTransform=u(),m.setAttributes=d(),m.insert=l().bind(null,"head"),m.domAPI=i(),m.insertStyleElement=A();n()(f.A,m);f.A&&f.A.locals&&f.A.locals;var g=a(3750),h={};h.styleTagTransform=u(),h.setAttributes=d(),h.insert=l().bind(null,"head"),h.domAPI=i(),h.insertStyleElement=A();n()(g.A,h);g.A&&g.A.locals&&g.A.locals;var C=a(1937),b={};b.styleTagTransform=u(),b.setAttributes=d(),b.insert=l().bind(null,"head"),b.domAPI=i(),b.insertStyleElement=A();n()(C.A,b);C.A&&C.A.locals&&C.A.locals;var E=a(436),_={};_.styleTagTransform=u(),_.setAttributes=d(),_.insert=l().bind(null,"head"),_.domAPI=i(),_.insertStyleElement=A();n()(E.A,_);E.A&&E.A.locals&&E.A.locals;var v=a(1134),w={};w.styleTagTransform=u(),w.setAttributes=d(),w.insert=l().bind(null,"head"),w.domAPI=i(),w.insertStyleElement=A();n()(v.A,w);v.A&&v.A.locals&&v.A.locals;var y=a(1649),B={};B.styleTagTransform=u(),B.setAttributes=d(),B.insert=l().bind(null,"head"),B.domAPI=i(),B.insertStyleElement=A();n()(y.A,B);y.A&&y.A.locals&&y.A.locals;var x=a(5092),k={};k.styleTagTransform=u(),k.setAttributes=d(),k.insert=l().bind(null,"head"),k.domAPI=i(),k.insertStyleElement=A();n()(x.A,k);x.A&&x.A.locals&&x.A.locals;const I=globalThis,$=e=>e,S=I.trustedTypes,D=S?S.createPolicy("lit-html",{createHTML:e=>e}):void 0,N="$lit$",T=`lit$${Math.random().toFixed(9).slice(2)}$`,j="?"+T,z=`<${j}>`,F=document,P=()=>F.createComment(""),L=e=>null===e||"object"!=typeof e&&"function"!=typeof e,M=Array.isArray,W=e=>M(e)||"function"==typeof e?.[Symbol.iterator],R="[ \t\n\f\r]",U=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,H=/-->/g,Y=/>/g,O=RegExp(`>|${R}(?:([^\\s"'>=/]+)(${R}*=${R}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),q=/'/g,V=/"/g,Q=/^(?:script|style|textarea|title)$/i,Z=e=>(n,...t)=>({_$litType$:e,strings:n,values:t}),X=Z(1),G=(Z(2),Z(3),Symbol.for("lit-noChange")),K=Symbol.for("lit-nothing"),J=new WeakMap,ee=F.createTreeWalker(F,129);function ne(e,n){if(!M(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==D?D.createHTML(n):n}const te=(e,n)=>{const t=e.length-1,i=[];let o,a=2===n?"<svg>":3===n?"<math>":"",r=U;for(let n=0;n<t;n++){const t=e[n];let l,s,d=-1,c=0;for(;c<t.length&&(r.lastIndex=c,s=r.exec(t),null!==s);)c=r.lastIndex,r===U?"!--"===s[1]?r=H:void 0!==s[1]?r=Y:void 0!==s[2]?(Q.test(s[2])&&(o=RegExp("</"+s[2],"g")),r=O):void 0!==s[3]&&(r=O):r===O?">"===s[0]?(r=o??U,d=-1):void 0===s[1]?d=-2:(d=r.lastIndex-s[2].length,l=s[1],r=void 0===s[3]?O:'"'===s[3]?V:q):r===V||r===q?r=O:r===H||r===Y?r=U:(r=O,o=void 0);const A=r===O&&e[n+1].startsWith("/>")?" ":"";a+=r===U?t+z:d>=0?(i.push(l),t.slice(0,d)+N+t.slice(d)+T+A):t+T+(-2===d?n:A)}return[ne(e,a+(e[t]||"<?>")+(2===n?"</svg>":3===n?"</math>":"")),i]};class ie{constructor({strings:e,_$litType$:n},t){let i;this.parts=[];let o=0,a=0;const r=e.length-1,l=this.parts,[s,d]=te(e,n);if(this.el=ie.createElement(s,t),ee.currentNode=this.el.content,2===n||3===n){const e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(i=ee.nextNode())&&l.length<r;){if(1===i.nodeType){if(i.hasAttributes())for(const e of i.getAttributeNames())if(e.endsWith(N)){const n=d[a++],t=i.getAttribute(e).split(T),r=/([.?@])?(.*)/.exec(n);l.push({type:1,index:o,name:r[2],strings:t,ctor:"."===r[1]?se:"?"===r[1]?de:"@"===r[1]?ce:le}),i.removeAttribute(e)}else e.startsWith(T)&&(l.push({type:6,index:o}),i.removeAttribute(e));if(Q.test(i.tagName)){const e=i.textContent.split(T),n=e.length-1;if(n>0){i.textContent=S?S.emptyScript:"";for(let t=0;t<n;t++)i.append(e[t],P()),ee.nextNode(),l.push({type:2,index:++o});i.append(e[n],P())}}}else if(8===i.nodeType)if(i.data===j)l.push({type:2,index:o});else{let e=-1;for(;-1!==(e=i.data.indexOf(T,e+1));)l.push({type:7,index:o}),e+=T.length-1}o++}}static createElement(e,n){const t=F.createElement("template");return t.innerHTML=e,t}}function oe(e,n,t=e,i){if(n===G)return n;let o=void 0!==i?t._$Co?.[i]:t._$Cl;const a=L(n)?void 0:n._$litDirective$;return o?.constructor!==a&&(o?._$AO?.(!1),void 0===a?o=void 0:(o=new a(e),o._$AT(e,t,i)),void 0!==i?(t._$Co??=[])[i]=o:t._$Cl=o),void 0!==o&&(n=oe(e,o._$AS(e,n.values),o,i)),n}class ae{constructor(e,n){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){const{el:{content:n},parts:t}=this._$AD,i=(e?.creationScope??F).importNode(n,!0);ee.currentNode=i;let o=ee.nextNode(),a=0,r=0,l=t[0];for(;void 0!==l;){if(a===l.index){let n;2===l.type?n=new re(o,o.nextSibling,this,e):1===l.type?n=new l.ctor(o,l.name,l.strings,this,e):6===l.type&&(n=new Ae(o,this,e)),this._$AV.push(n),l=t[++r]}a!==l?.index&&(o=ee.nextNode(),a++)}return ee.currentNode=F,i}p(e){let n=0;for(const t of this._$AV)void 0!==t&&(void 0!==t.strings?(t._$AI(e,t,n),n+=t.strings.length-2):t._$AI(e[n])),n++}}class re{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,n,t,i){this.type=2,this._$AH=K,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=t,this.options=i,this._$Cv=i?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return void 0!==n&&11===e?.nodeType&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=oe(this,e,n),L(e)?e===K||null==e||""===e?(this._$AH!==K&&this._$AR(),this._$AH=K):e!==this._$AH&&e!==G&&this._(e):void 0!==e._$litType$?this.$(e):void 0!==e.nodeType?this.T(e):W(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==K&&L(this._$AH)?this._$AA.nextSibling.data=e:this.T(F.createTextNode(e)),this._$AH=e}$(e){const{values:n,_$litType$:t}=e,i="number"==typeof t?this._$AC(e):(void 0===t.el&&(t.el=ie.createElement(ne(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(n);else{const e=new ae(i,this),t=e.u(this.options);e.p(n),this.T(t),this._$AH=e}}_$AC(e){let n=J.get(e.strings);return void 0===n&&J.set(e.strings,n=new ie(e)),n}k(e){M(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let t,i=0;for(const o of e)i===n.length?n.push(t=new re(this.O(P()),this.O(P()),this,this.options)):t=n[i],t._$AI(o),i++;i<n.length&&(this._$AR(t&&t._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,n){for(this._$AP?.(!1,!0,n);e!==this._$AB;){const n=$(e).nextSibling;$(e).remove(),e=n}}setConnected(e){void 0===this._$AM&&(this._$Cv=e,this._$AP?.(e))}}class le{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,n,t,i,o){this.type=1,this._$AH=K,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=o,t.length>2||""!==t[0]||""!==t[1]?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=K}_$AI(e,n=this,t,i){const o=this.strings;let a=!1;if(void 0===o)e=oe(this,e,n,0),a=!L(e)||e!==this._$AH&&e!==G,a&&(this._$AH=e);else{const i=e;let r,l;for(e=o[0],r=0;r<o.length-1;r++)l=oe(this,i[t+r],n,r),l===G&&(l=this._$AH[r]),a||=!L(l)||l!==this._$AH[r],l===K?e=K:e!==K&&(e+=(l??"")+o[r+1]),this._$AH[r]=l}a&&!i&&this.j(e)}j(e){e===K?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class se extends le{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===K?void 0:e}}class de extends le{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==K)}}class ce extends le{constructor(e,n,t,i,o){super(e,n,t,i,o),this.type=5}_$AI(e,n=this){if((e=oe(this,e,n,0)??K)===G)return;const t=this._$AH,i=e===K&&t!==K||e.capture!==t.capture||e.once!==t.once||e.passive!==t.passive,o=e!==K&&(t===K||i);i&&this.element.removeEventListener(this.name,this,t),o&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}}class Ae{constructor(e,n,t){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(e){oe(this,e)}}const pe=I.litHtmlPolyfillSupport;pe?.(ie,re),(I.litHtmlVersions??=[]).push("3.3.2");const ue=(e,n,t)=>{const i=t?.renderBefore??n;let o=i._$litPart$;if(void 0===o){const e=t?.renderBefore??null;i._$litPart$=o=new re(n.insertBefore(P(),e),e,void 0,t??{})}return o._$AI(e),o};var fe=a(5663),me=a(9426);const ge="Resume",he="Skills",Ce="Languages",be="Projects & Communities",Ee="Save Changes",_e="Cancel",ve="Delete entry",we="You need to log in as the profile owner to save contact updates.",ye="Could not save contact updates.",Be="Could not save heading updates.",xe="Could not save social accounts updates.",ke="Could not save bio updates.",Ie="Store does not support updates",$e="Follow me on";function Se(e){return Boolean(e&&"object"==typeof e&&"string"==typeof e.uri)}function De(e){return Boolean(e&&"object"==typeof e&&"function"==typeof e.any)}function Ne(e){return(e||"").trim().replace(/^mailto:/i,"")}function Te(e){return(e||"").trim().replace(/^tel:/i,"")}function je(e){const n=(e||"").trim();return!!n&&(!!/^mailto:/i.test(n)||/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n))}function ze(e){const n=(e||"").trim();return!!n&&(!!/^tel:/i.test(n)||/^[+()\-\s\d]{5,}$/.test(n))}function Fe(e,n,t,i){var o;if(!e)return"";const a=e.each(n,t),r="email"===i?je:ze;for(const t of a){if(!t)continue;const a=t.value;if("string"==typeof a&&r(a))return"email"===i?Ne(a):Te(a);if("NamedNode"===t.termType||"BlankNode"===t.termType){const a=n.doc(),l=e.statementsMatching(t,me.ns.vcard("value"),null,a),s=e.statementsMatching(t,me.ns.vcard("value"));for(const e of[...l,...s]){const n=null===(o=e.object)||void 0===o?void 0:o.value;if("string"==typeof n&&r(n))return"email"===i?Ne(n):Te(n)}}}return""}const Pe=(e,n,t)=>{const{subject:i,store:o}=function(e,n,t){if(Se(e))return{subject:e,store:De(n)?n:void 0};if(Se(t))return{subject:t,store:De(n)?n:void 0};throw new Error("QRCodeCard requires a profile subject NamedNode.")}(e,n,t),a=me.utils.label(i),r=e=>(e||"").replace(/\\/g,"\\\\").replace(/;/g,"\\;").replace(/,/g,"\\,").replace(/\r?\n/g,"\\n"),l=r(a||i.uri),s=r(i.uri),d=Fe(o,i,me.ns.vcard("hasEmail"),"email"),c=Fe(o,i,me.ns.vcard("hasTelephone"),"tel"),A=["BEGIN:VCARD","VERSION:4.0",`FN:${l}`,`URL:${s}`];d&&A.push(`EMAIL;TYPE=internet:${r(d)}`),c&&A.push(`TEL:${r(c)}`),A.push("END:VCARD");const p=A.join("\r\n");return X`
14
2
  <figure
15
- class="QRCode"
16
- data-value="${"BEGIN:VCARD\r\n"+s+l+"END:VCARD\r\nVERSION:4.0\r\n"}"
17
- highlightColor="${i}"
18
- backgroundColor="${o}"
3
+ class="qrcode-card flex-column-center"
4
+ data-value="${p}"
19
5
  data-testid="qrcode-card"
20
6
  aria-labelledby="qr-code-caption"
21
7
  role="img"
22
8
  aria-describedby="qr-code-description"
23
9
  >
24
10
  <div
25
- aria-label="Static QR code containing contact information for ${r}"
11
+ aria-label="Static QR code containing contact information for ${a}"
26
12
  role="img"
27
13
  tabindex="0"
28
14
  ></div>
29
15
  <figcaption
30
16
  id="qr-code-caption"
31
- class="qrCaption"
17
+ class="qrcode-card__caption"
32
18
  >
33
- ${"Scan the QR code to connect with me"}
19
+ ${"Link to Profile"}
34
20
  </figcaption>
35
21
  <div
36
22
  id="qr-code-description"
37
23
  class="sr-only"
38
24
  >
39
- This is a static QR code containing vCard information for ${r}, including profile URL ${t.uri}. The QR code is not interactive.
25
+ This is a static QR code containing vCard information for ${a}, including profile URL ${i.uri}. The QR code is not interactive.
40
26
  </div>
41
27
  </figure>
42
- `},we=({name:n,imageSrc:e,introduction:t,location:i,pronouns:o,highlightColor:r,backgroundColor:a},s,l)=>nn`
43
- <article class="profileCard" aria-labelledby="profile-name">
44
- <h2 id="profile-name" class="sr-only">${n}</h2>
45
- <header class="header flex-column-center mb-md" aria-label="Profile information">
46
- ${xe(e,n)}
28
+ `};function Le(e,n){const t=new Set;return function n(i){const o=`${i.termType||typeof i}:${i.value||String(i)}`;if(t.has(o))return[];t.add(o);const a=i.elements;if(Array.isArray(a))return a.flatMap(e=>n(e));if(!e.any(i,me.ns.rdf("first")))return[i];const r=[];let l=i;for(;l;){const t=e.any(l,me.ns.rdf("first"));t&&r.push(...n(t));const i=e.any(l,me.ns.rdf("rest"));if(!i||"NamedNode"===i.termType&&i.value===me.ns.rdf("nil").value)break;l=i}return r}(n)}var Me=a(5491);const We='@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix solid: <http://www.w3.org/ns/solid/terms#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix schema: <http://schema.org/>.\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix org: <http://www.w3.org/ns/org#>.\n@prefix : <#>.\n\n########### ATTENTION - we cannot rename this ontology file name without migrating existing data on existing accounts\n\n########### Social Media - other accounts\n#\n# Twitter, linked In, Orkid, Mastodon, Matrix, Bluesky, Instagram, Facebook, Github,\n# Snapchat, TikTok, etc\n#\n# NOTE: Temporary icon strategy.\n# We currently use URNs like <urn:profile-pane:icon:<key>> for bundled local icons.\n# These icons are planned to move to a dedicated icons project in the future.\n\n:this\n <http://purl.org/dc/elements/1.1/title> "Social media form" ;\n a ui:Form ;\n ui:parts (\n :SocialsForm\n ).\n\n:SocialsForm a ui:Multiple;\n ui:label "online account";\n ui:property foaf:account; # the triple is created with the foaf:acccounts predicate\n ui:ordered true; # Allow user to order occounts most important first.\n ui:part :AccountsForm.\n\n:AccountsForm a ui:Group; \n ui:weight 1; \n ui:parts ( \n :AccountField \n :AccountIdField ).\n\n:AccountField a ui:Classifier; \n ui:label "Account"@en;\n ui:multiple false ; \n ui:category foaf:Account. # the accounts are described by the foaf:Account predicate\n\n# this is what is needed to make a dropdown box\nfoaf:Account a rdfs:Class;\n rdfs:label "Online Account Provider";\n owl:disjointUnionOf ( \n :BlueSkyAccount :DribbleAccount :DiggAccount :DiscordAccount :FacebookAccount :GithubAccount :InstagramAccount\n :LinkedInAccount :MastodonAccount :MatrixAccount :MediumAccount :NostrAccount \n :OrcidAccount :PinterestAccount :RedditAccount :SharechatAccount :SnapchatAccount :SpotifyAccount :StravaAccount \n :TelegramAccount :TiktokAccount :TumblrAccount :TwitterAccount :WhatsAppAccount :YouTubeAccount :OtherAccount) .\n\n:AccountIdField a ui:Options; \n ui:dependingOn rdf:type; \n ui:case\n [ ui:for :BlueSkyAccount; ui:use :BlueSkyIdField ],\n [ ui:for :DribbleAccount; ui:use :DribbleIdField ],\n [ ui:for :DiggAccount; ui:use :DiggIdField],\n [ ui:for :FacebookAccount; ui:use :FacebookIdField ],\n [ ui:for :DiscordAccount; ui:use :DiscordIdField ],\n [ ui:for :GithubAccount; ui:use :GithubIdField ],\n [ ui:for :InstagramAccount; ui:use :InstagramIdField ],\n [ ui:for :LinkedInAccount; ui:use :LinkedInIdField ],\n [ ui:for :MastodonAccount; ui:use :MastodonIdField ],\n [ ui:for :MatrixAccount; ui:use :MatrixIdField ],\n [ ui:for :MediumAccount; ui:use :MediumIdField ],\n [ ui:for :NostrAccount; ui:use :NostrIdField ],\n [ ui:for :OrcidAccount; ui:use :OrcidIdField ],\n [ ui:for :PinterestAccount; ui:use :PinterestIdField ],\n [ ui:for :RedditAccount; ui:use :RedditIdField ],\n [ ui:for :StravaAccount; ui:use :StravaIdField ],\n [ ui:for :SharechatAccount; ui:use :SharechatIdField ],\n [ ui:for :SnapchatAccount; ui:use :SnapchatIdField ],\n [ ui:for :SpotifyAccount; ui:use :SpotifyIdField ],\n [ ui:for :TelegramAccount; ui:use :TelegramIdField ],\n [ ui:for :TiktokAccount; ui:use :TiktokIdField ],\n [ ui:for :TumblrAccount; ui:use :TumblrIdField ],\n [ ui:for :TwitterAccount; ui:use :TwitterIdField ],\n [ ui:for :WhatsAppAccount; ui:use :WhatsAppIdField ],\n [ ui:for :YouTubeAccount; ui:use :YouTubeIdField ],\n [ ui:for :OtherAccount; ui:use :OtherIdForm ] .\n\n:BlueSkyAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Bluesky";\n foaf:userProfilePrefix "https://bsky.app/profile/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/bluesky-1.svg>;\n foaf:homepage <https://bsky.app/> .\n\n:DribbleAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Dribble";\n foaf:userProfilePrefix "https://dribbble.com/";\n foaf:icon <urn:profile-pane:icon:dribbble>;\n foaf:homepage <https://dribbble.com/> .\n\n\n:DiscordAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Discord";\n foaf:userProfilePrefix "https://discord.com/users/";\n foaf:icon <urn:profile-pane:icon:discord>;\n foaf:homepage <https://discord.com/> .\n\n:DiggAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Digg";\n foaf:userProfilePrefix "https://www.digg.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/digg-icon.svg>;\n foaf:homepage <https://www.digg.com/> .\n\n:FacebookAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Facebook";\n foaf:userProfilePrefix "https://www.facebook.com/";\n foaf:icon <urn:profile-pane:icon:facebook>;\n foaf:homepage <https://www.facebook.com/> .\n\n:GithubAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Github";\n foaf:userProfilePrefix "https://www.github.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/github-icon.svg>;\n foaf:homepage <https://github.com/> .\n\n:InstagramAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Instagram";\n foaf:userProfilePrefix "https://www.instagram.com/";\n foaf:icon <urn:profile-pane:icon:instagram>;\n foaf:homepage <https://www.instagram.com/> .\n\n:LinkedInAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "LinkedIn";\n foaf:userProfilePrefix "https://www.linkedin.com/in/";\n foaf:icon <urn:profile-pane:icon:linkedin>;\n foaf:homepage <https://linkedin.com/> .\n\n:MastodonAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Mastodon" ;\n foaf:userProfilePrefix "https://mastodon.social/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/mastodon-2.svg>;\n foaf:homepage <https://joinmastodon.org/> .\n\n:MatrixAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Matrix" ;\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/matrix-logo-black.svg> ;\n foaf:userProfilePrefix "https://matrix.to/#/" ;\n foaf:homepage <https://matrix.org/> .\n\n:MediumAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Medium";\n foaf:userProfilePrefix "https://medium.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/medium-logo-wordmark-black.svg>;\n foaf:homepage <https://medium.com/> .\n\n:NostrAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Nostr";\n foaf:userProfilePrefix "https://primal.net/p/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/nostr-icon-purple-on-white.svg>;\n foaf:homepage <https://nostr.net/> .\n\n:OrcidAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "ORCiD";\n foaf:userProfilePrefix "https://orcid.org/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/ORCID-1.svg>;\n foaf:homepage <https://orcid.org/> .\n\n:PinterestAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Pinterest";\n foaf:userProfilePrefix "https://pin.it/";\n foaf:icon <urn:profile-pane:icon:pinterest>;\n foaf:homepage <https://pinterest.com/> .\n\n:RedditAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Reddit";\n foaf:userProfilePrefix "https://www.reddit.com/user/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/reddit-4.svg>;\n foaf:homepage <https://reddit.com/> .\n\n:SharechatAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "ShareChat";\n foaf:userProfilePrefix "https://www.sharechat.com/user/";\n foaf:icon <urn:profile-pane:icon:sharechat>;\n foaf:homepage <https://sharechat.com/> .\n\n:SnapchatAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Snapchat";\n foaf:userProfilePrefix "https://www.snapchat.com/add/";\n foaf:icon <urn:profile-pane:icon:snapchat>;\n foaf:homepage <https://www.snapchat.com/> .\n\n:SpotifyAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Spotify";\n foaf:userProfilePrefix "https://www.spotify.com/user/";\n foaf:icon <urn:profile-pane:icon:spotify>;\n foaf:homepage <https://www.spotify.com/> .\n\n:StravaAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Strava";\n foaf:userProfilePrefix "https://www.strava.com/athletes/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/strava-2.svg>;\n foaf:homepage <https://strava.com/> .\n\n:TelegramAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Telegram";\n foaf:userProfilePrefix "https://t.me/";\n foaf:icon <urn:profile-pane:icon:telegram>;\n foaf:homepage <https://telegram.org/> .\n\n:TiktokAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "TikTok";\n foaf:userProfilePrefix "https://www.tiktok.com/@";\n foaf:icon <urn:profile-pane:icon:tiktok>;\n foaf:homepage <https://www.tiktok.com/> .\n\n:TumblrAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Tumblr";\n foaf:userProfilePrefix "https://www.tumblr.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/tumblr-icon.svg>;\n foaf:homepage <https://www.tumblr.com/> .\n\n:TwitterAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "X";\n foaf:userProfilePrefix "https://x.com/";\n foaf:icon <urn:profile-pane:icon:x>;\n foaf:homepage <https://x.com/> .\n\n:WhatsAppAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "WhatsApp";\n foaf:userProfilePrefix "https://wa.me/";\n foaf:icon <urn:profile-pane:icon:whatsapp>;\n foaf:homepage <https://www.whatsapp.com/> .\n\n:YouTubeAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "YouTube";\n foaf:userProfilePrefix "https://www.youtube.com/";\n foaf:icon <urn:profile-pane:icon:youtube>;\n foaf:homepage <https://www.youtube.com/> .\n\n:OtherAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Other" ;\n foaf:icon <urn:profile-pane:starIcon> .\n\n:BlueSkyIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-](.[a-z0-9A-Z_-])*".\n\n:DiggIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-](.[a-z0-9A-Z_-])*".\n\n:FacebookIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:DiscordIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:DribbleIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:GithubIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:InstagramIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:LinkedInIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:MastodonIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:MatrixIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:MediumIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:NostrIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:OrcidIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:PinterestIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:RedditIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:StravaIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:SnapchatIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:SpotifyIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TelegramIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TiktokIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TumblrIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TwitterIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:WhatsAppIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:YouTubeIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n# an unknown online account needs more info\n\n:OtherIdForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :OtherIdField \n :OtherIconField \n :OtherLabelField ).\n\n:OtherIdField\n a ui:NamedNodeURIField ;\n ui:label "Account link";\n ui:maxLength "200" ;\n ui:property foaf:homepage.\n\n:OtherIconField\n a ui:NamedNodeURIField ;\n ui:label "Icon link";\n ui:maxLength "200" ;\n ui:property foaf:icon.\n\n:OtherLabelField\n a ui:SingleLineTextField ;\n ui:label "Name";\n ui:maxLength "200" ;\n ui:property rdfs:label.\n\n# ends\n',Re=X`
29
+ <svg
30
+ xmlns="http://www.w3.org/2000/svg"
31
+ width="16"
32
+ height="16"
33
+ viewBox="0 0 16 16"
34
+ fill="none"
35
+ aria-hidden="true"
36
+ focusable="false"
37
+ >
38
+ <path d="M13.3327 13.9999V8.66659C13.3327 8.31296 13.1922 7.97382 12.9422 7.72378C12.6921 7.47373 12.353 7.33325 11.9993 7.33325H3.99935C3.64573 7.33325 3.30659 7.47373 3.05654 7.72378C2.80649 7.97382 2.66602 8.31296 2.66602 8.66659V13.9999" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
39
+ <path d="M2.66602 10.6667C2.66602 10.6667 2.99935 10 3.99935 10C4.99935 10 5.66602 11.3333 6.66602 11.3333C7.66602 11.3333 8.33268 10 9.33268 10C10.3327 10 10.9993 11.3333 11.9993 11.3333C12.9993 11.3333 13.3327 10.6667 13.3327 10.6667" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
40
+ <path d="M1.33398 14H14.6673" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
41
+ <path d="M4.66602 5.33325V7.33325" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
42
+ <path d="M8 5.33325V7.33325" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
43
+ <path d="M11.334 5.33325V7.33325" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
44
+ <path d="M4.66602 2.66675H4.67268" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
45
+ <path d="M8 2.66675H8.00667" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
46
+ <path d="M11.334 2.66675H11.3407" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
47
+ </svg>
48
+ `,Ue=X`
49
+ <svg xmlns="http://www.w3.org/2000/svg"
50
+ width="16"
51
+ height="16"
52
+ viewBox="0 0 16 16"
53
+ fill="none"
54
+ aria-hidden="true"
55
+ focusable="false"
56
+ >
57
+ <path d="M13.3327 6.66659C13.3327 9.99525 9.64002 13.4619 8.40002 14.5326C8.2845 14.6194 8.14388 14.6664 7.99935 14.6664C7.85482 14.6664 7.7142 14.6194 7.59868 14.5326C6.35868 13.4619 2.66602 9.99525 2.66602 6.66659C2.66602 5.2521 3.22792 3.89554 4.22811 2.89535C5.22831 1.89516 6.58486 1.33325 7.99935 1.33325C9.41384 1.33325 10.7704 1.89516 11.7706 2.89535C12.7708 3.89554 13.3327 5.2521 13.3327 6.66659Z" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
58
+ <path d="M8 8.66675C9.10457 8.66675 10 7.77132 10 6.66675C10 5.56218 9.10457 4.66675 8 4.66675C6.89543 4.66675 6 5.56218 6 6.66675C6 7.77132 6.89543 8.66675 8 8.66675Z" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
59
+ </svg>
60
+ `,He=X`
61
+ <svg xmlns="http://www.w3.org/2000/svg"
62
+ width="14"
63
+ height="14"
64
+ viewBox="0 0 14 14"
65
+ fill="none"
66
+ aria-hidden="true"
67
+ focusable="false"
68
+ >
69
+ <path d="M11.254 3.08785C11.4818 2.86004 11.8513 2.86004 12.0791 3.08785C12.3066 3.31559 12.3066 3.68451 12.0791 3.91226L5.66216 10.3292C5.55282 10.4385 5.40458 10.5 5.24996 10.5001C5.09525 10.5001 4.94646 10.4386 4.83707 10.3292L1.92085 7.41226C1.69305 7.18445 1.69305 6.81565 1.92085 6.58785C2.14866 6.36004 2.51746 6.36004 2.74527 6.58785L5.24927 9.09117L11.254 3.08785Z" fill="#7C4DFF"/>
70
+ </svg>
71
+ `,Ye=X`
72
+ <svg xmlns="http://www.w3.org/2000/svg"
73
+ width="14"
74
+ height="14"
75
+ viewBox="0 0 14 14"
76
+ fill="none"
77
+ aria-hidden="true"
78
+ focusable="false"
79
+ >
80
+ <path d="M2.91602 7H11.0827" stroke="#314158" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round"/>
81
+ <path d="M7 2.9165V11.0832" stroke="#314158" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round"/>
82
+ </svg>
83
+ `,Oe=X`
84
+ <svg xmlns="http://www.w3.org/2000/svg"
85
+ width="12"
86
+ height="12"
87
+ viewBox="0 0 12 12"
88
+ fill="none"
89
+ aria-hidden="true"
90
+ focusable="false"
91
+ >
92
+ <g clip-path="url(#clip0_3001_2564)">
93
+ <path d="M6.06055 0.10083C6.53372 0.101056 6.91793 0.485037 6.91797 0.958252V5.20532H11.165C11.6384 5.20532 12.0225 5.58936 12.0225 6.06274C12.0223 6.536 11.6383 6.92017 11.165 6.92017H6.91797V11.1663C6.91797 11.6395 6.53374 12.0235 6.06055 12.0237C5.58716 12.0237 5.20312 11.6396 5.20312 11.1663V6.92017H0.957031C0.483929 6.91994 0.0997601 6.53586 0.0996094 6.06274C0.0996094 5.5895 0.483837 5.20555 0.957031 5.20532H5.20312V0.958252C5.20316 0.484897 5.58718 0.10083 6.06055 0.10083Z" fill="#7C4DFF"/>
94
+ </g>
95
+ <defs>
96
+ <clipPath id="clip0_3001_2564">
97
+ <rect width="12" height="12" fill="white"/>
98
+ </clipPath>
99
+ </defs>
100
+ </svg>
101
+ `,qe=X`
102
+ <svg xmlns="http://www.w3.org/2000/svg"
103
+ width="13"
104
+ height="13"
105
+ viewBox="0 0 13 13"
106
+ fill="none"
107
+ aria-hidden="true"
108
+ focusable="false"
109
+ >
110
+ <circle cx="5.5" cy="5.5" r="4.5" stroke="#99A1AF" stroke-width="1.2" fill="none"/>
111
+ <path d="M9.1 9.1L12 12" stroke="#99A1AF" stroke-width="1.2" stroke-linecap="round"/>
112
+ </svg>
113
+ `,Ve=X`
114
+ <svg xmlns="http://www.w3.org/2000/svg"
115
+ width="20"
116
+ height="20"
117
+ viewBox="0 0 20 20"
118
+ fill="none"
119
+ aria-hidden="true"
120
+ focusable="false"
121
+ >
122
+ <path d="M8.33301 9.16675V14.1667" stroke="#D1D5DC" stroke-width="1.45833" stroke-linecap="round" stroke-linejoin="round"/>
123
+ <path d="M11.667 9.16675V14.1667" stroke="#D1D5DC" stroke-width="1.45833" stroke-linecap="round" stroke-linejoin="round"/>
124
+ <path d="M15.8337 5V16.6667C15.8337 17.1087 15.6581 17.5326 15.3455 17.8452C15.0329 18.1577 14.609 18.3333 14.167 18.3333H5.83366C5.39163 18.3333 4.96771 18.1577 4.65515 17.8452C4.34259 17.5326 4.16699 17.1087 4.16699 16.6667V5" stroke="#D1D5DC" stroke-width="1.45833" stroke-linecap="round" stroke-linejoin="round"/>
125
+ <path d="M2.5 5H17.5" stroke="#D1D5DC" stroke-width="1.45833" stroke-linecap="round" stroke-linejoin="round"/>
126
+ <path d="M6.66699 5.00008V3.33341C6.66699 2.89139 6.84259 2.46746 7.15515 2.1549C7.46771 1.84234 7.89163 1.66675 8.33366 1.66675H11.667C12.109 1.66675 12.5329 1.84234 12.8455 2.1549C13.1581 2.46746 13.3337 2.89139 13.3337 3.33341V5.00008" stroke="#D1D5DC" stroke-width="1.45833" stroke-linecap="round" stroke-linejoin="round"/>
127
+ </svg>
128
+ `,Qe=X`
129
+ <svg xmlns="http://www.w3.org/2000/svg"
130
+ width="18"
131
+ height="18"
132
+ viewBox="0 0 18 18"
133
+ fill="none"
134
+ aria-hidden="true"
135
+ focusable="false"
136
+ >
137
+ <path d="M6.75 9.75C7.16421 9.75 7.5 9.41421 7.5 9C7.5 8.58579 7.16421 8.25 6.75 8.25C6.33579 8.25 6 8.58579 6 9C6 9.41421 6.33579 9.75 6.75 9.75Z" stroke="#99A1AF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
138
+ <path d="M6.75 4.5C7.16421 4.5 7.5 4.16421 7.5 3.75C7.5 3.33579 7.16421 3 6.75 3C6.33579 3 6 3.33579 6 3.75C6 4.16421 6.33579 4.5 6.75 4.5Z" stroke="#99A1AF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
139
+ <path d="M6.75 15C7.16421 15 7.5 14.6642 7.5 14.25C7.5 13.8358 7.16421 13.5 6.75 13.5C6.33579 13.5 6 13.8358 6 14.25C6 14.6642 6.33579 15 6.75 15Z" stroke="#99A1AF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
140
+ <path d="M11.25 9.75C11.6642 9.75 12 9.41421 12 9C12 8.58579 11.6642 8.25 11.25 8.25C10.8358 8.25 10.5 8.58579 10.5 9C10.5 9.41421 10.8358 9.75 11.25 9.75Z" stroke="#99A1AF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
141
+ <path d="M11.25 4.5C11.6642 4.5 12 4.16421 12 3.75C12 3.33579 11.6642 3 11.25 3C10.8358 3 10.5 3.33579 10.5 3.75C10.5 4.16421 10.8358 4.5 11.25 4.5Z" stroke="#99A1AF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
142
+ <path d="M11.25 15C11.6642 15 12 14.6642 12 14.25C12 13.8358 11.6642 13.5 11.25 13.5C10.8358 13.5 10.5 13.8358 10.5 14.25C10.5 14.6642 10.8358 15 11.25 15Z" stroke="#99A1AF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
143
+ </svg>
144
+ `,Ze=X`
145
+ <svg xmlns="http://www.w3.org/2000/svg"
146
+ width="30"
147
+ height="30"
148
+ viewBox="0 0 30 30"
149
+ fill="none"
150
+ aria-hidden="true"
151
+ focusable="false"
152
+ >
153
+ <rect width="30" height="30" rx="5" fill="black" fill-opacity="0.2"/>
154
+ <path d="M14.1093 6.74536C14.4804 6.01811 15.5196 6.01811 15.8907 6.74536L17.7665 10.4209C17.9118 10.7056 18.1844 10.9037 18.5001 10.9539L22.5754 11.6021C23.3817 11.7303 23.7028 12.7186 23.1259 13.2963L20.2099 16.216C19.984 16.4422 19.8798 16.7627 19.9296 17.0785L20.5726 21.1546C20.6998 21.9611 19.8591 22.5719 19.1314 22.2017L15.4534 20.3307C15.1685 20.1857 14.8315 20.1857 14.5466 20.3307L10.8686 22.2017C10.1409 22.5719 9.30023 21.9611 9.42744 21.1546L10.0704 17.0785C10.1202 16.7627 10.016 16.4422 9.79012 16.216L6.87413 13.2963C6.29716 12.7186 6.61827 11.7303 7.42462 11.6021L11.4999 10.9539C11.8156 10.9037 12.0882 10.7056 12.2335 10.4209L14.1093 6.74536Z" fill="#F4F4F4"/>
155
+ </svg>
156
+ `,Xe=X`
157
+ <svg xmlns="http://www.w3.org/2000/svg"
158
+ width="12"
159
+ height="12"
160
+ viewBox="0 0 12 12"
161
+ fill="none"
162
+ aria-hidden="true"
163
+ focusable="false"
164
+ >
165
+ <g clip-path="url(#clip0_3001_349)">
166
+ <path d="M6.06055 0.10083C6.53372 0.101056 6.91793 0.485037 6.91797 0.958252V5.20532H11.165C11.6384 5.20532 12.0225 5.58936 12.0225 6.06274C12.0223 6.536 11.6383 6.92017 11.165 6.92017H6.91797V11.1663C6.91797 11.6395 6.53374 12.0235 6.06055 12.0237C5.58716 12.0237 5.20312 11.6396 5.20312 11.1663V6.92017H0.957031C0.483929 6.91994 0.0997601 6.53586 0.0996094 6.06274C0.0996094 5.5895 0.483837 5.20555 0.957031 5.20532H5.20312V0.958252C5.20316 0.484897 5.58718 0.10083 6.06055 0.10083Z" fill="#7C4DFF"/>
167
+ </g>
168
+ <defs>
169
+ <clipPath id="clip0_3001_349">
170
+ <rect width="12" height="12" fill="white"/>
171
+ </clipPath>
172
+ </defs>
173
+ </svg>
174
+ `,Ge=X`
175
+ <svg xmlns="http://www.w3.org/2000/svg"
176
+ width="64"
177
+ height="64"
178
+ viewBox="0 0 64 64"
179
+ fill="none"
180
+ aria-hidden="true"
181
+ focusable="false"
182
+ >
183
+ <path d="M32.0007 58.6666C46.7282 58.6666 58.6673 46.7275 58.6673 31.9999C58.6673 17.2723 46.7282 5.33325 32.0007 5.33325C17.2731 5.33325 5.33398 17.2723 5.33398 31.9999C5.33398 46.7275 17.2731 58.6666 32.0007 58.6666Z" stroke="#CBD5E1" stroke-width="5.33333" stroke-linecap="round" stroke-linejoin="round"/>
184
+ <path d="M32 34.6667C36.4183 34.6667 40 31.085 40 26.6667C40 22.2485 36.4183 18.6667 32 18.6667C27.5817 18.6667 24 22.2485 24 26.6667C24 31.085 27.5817 34.6667 32 34.6667Z" stroke="#CBD5E1" stroke-width="5.33333" stroke-linecap="round" stroke-linejoin="round"/>
185
+ <path d="M18.666 55.0986V50.6666C18.666 49.2521 19.2279 47.8955 20.2281 46.8954C21.2283 45.8952 22.5849 45.3333 23.9993 45.3333H39.9993C41.4138 45.3333 42.7704 45.8952 43.7706 46.8954C44.7708 47.8955 45.3327 49.2521 45.3327 50.6666V55.0986" stroke="#CBD5E1" stroke-width="5.33333" stroke-linecap="round" stroke-linejoin="round"/>
186
+ </svg>
187
+ `,Ke=X`
188
+ <svg xmlns="http://www.w3.org/2000/svg"
189
+ width="48"
190
+ height="48"
191
+ viewBox="0 0 48 48"
192
+ fill="none"
193
+ aria-hidden="true"
194
+ focusable="false"
195
+ >
196
+ <path d="M24 44C35.0457 44 44 35.0457 44 24C44 12.9543 35.0457 4 24 4C12.9543 4 4 12.9543 4 24C4 35.0457 12.9543 44 24 44Z" stroke="#E5E7EB" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
197
+ <path d="M24 4C18.8645 9.39231 16 16.5535 16 24C16 31.4465 18.8645 38.6077 24 44C29.1355 38.6077 32 31.4465 32 24C32 16.5535 29.1355 9.39231 24 4Z" stroke="#E5E7EB" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
198
+ <path d="M4 24H44" stroke="#E5E7EB" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
199
+ </svg>
200
+ `,Je=X`
201
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
202
+ width="33"
203
+ height="36"
204
+ viewBox="0 0 33 36"
205
+ fill="none"
206
+ aria-hidden="true"
207
+ focusable="false"
208
+ >
209
+ <path d="M4.48242 29.6799H28.4824V5.67993H4.48242V29.6799Z" fill="url(#pattern0_1101_13838)"/>
210
+ <defs>
211
+ <pattern id="pattern0_1101_13838" patternContentUnits="objectBoundingBox" width="1" height="1">
212
+ <use xlink:href="#image0_1101_13838" transform="scale(0.00625)"/>
213
+ </pattern>
214
+ <image id="image0_1101_13838" width="160" height="160" preserveAspectRatio="none" xlink:href="data:image/png;base64,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"/>
215
+ </defs>
216
+ </svg>
217
+ `,en=X`
218
+ <svg xmlns="http://www.w3.org/2000/svg"
219
+ width="24"
220
+ height="24"
221
+ viewBox="0 0 24 24"
222
+ fill="none"
223
+ aria-hidden="true"
224
+ focusable="false"
225
+ >
226
+ <path d="M21 15C21 15.5304 20.7893 16.0391 20.4142 16.4142C20.0391 16.7893 19.5304 17 19 17H7L3 21V5C3 4.46957 3.21071 3.96086 3.58579 3.58579C3.96086 3.21071 4.46957 3 5 3H19C19.5304 3 20.0391 3.21071 20.4142 3.58579C20.7893 3.96086 21 4.46957 21 5V15Z" stroke="#E5E7EB" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
227
+ </svg>
228
+ `,nn=X`
229
+ <svg xmlns="http://www.w3.org/2000/svg"
230
+ width="48"
231
+ height="48"
232
+ viewBox="0 0 48 48"
233
+ fill="none"
234
+ aria-hidden="true"
235
+ focusable="false"
236
+ >
237
+ <path d="M40 8H8C5.79086 8 4 9.79086 4 12V36C4 38.2091 5.79086 40 8 40H40C42.2091 40 44 38.2091 44 36V12C44 9.79086 42.2091 8 40 8Z" stroke="#E5E7EB" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
238
+ <path d="M44 14L26.06 25.4C25.4425 25.7869 24.7286 25.992 24 25.992C23.2714 25.992 22.5575 25.7869 21.94 25.4L4 14" stroke="#E5E7EB" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
239
+ </svg>
240
+ `,tn=X`
241
+ <svg xmlns="http://www.w3.org/2000/svg"
242
+ width="12"
243
+ height="14"
244
+ viewBox="0 0 12 14"
245
+ fill="none"
246
+ aria-hidden="true"
247
+ focusable="false"
248
+ >
249
+ <path d="M10.7004 2.667L8.43806 0.404688C8.17731 0.143938 7.83038 0 7.46113 0H3.22613C2.464 0 1.84363 0.619938 1.84363 1.3825V1.84625H1.37988C0.619062 1.84625 0 2.46531 0 3.22613V11.6576C0 12.4184 0.619062 13.0375 1.37988 13.0375H7.882C8.64281 13.0375 9.26188 12.4184 9.26188 11.6576V11.1926H9.723C10.4847 11.1926 11.1046 10.5726 11.1046 9.81137V3.64306C11.1046 3.27994 10.9572 2.92381 10.7004 2.667ZM9.75888 2.83938H8.855C8.5295 2.83938 8.26438 2.57469 8.26438 2.24875V1.34488L9.75888 2.83938ZM8.47438 11.6576C8.47438 11.9844 8.20881 12.25 7.882 12.25H1.37988C1.0535 12.25 0.7875 11.9844 0.7875 11.6576V3.22613C0.7875 2.89931 1.05306 2.63375 1.37988 2.63375H1.84406V9.81181C1.84406 10.5731 2.464 11.1926 3.22525 11.1926H8.47438V11.6576ZM10.3171 9.81137C10.3171 10.1391 10.0511 10.4051 9.72344 10.4051H3.22525C2.898 10.4051 2.632 10.1391 2.632 9.81181V1.3825C2.632 1.05438 2.89844 0.7875 3.22656 0.7875H7.46156C7.46681 0.7875 7.47163 0.790563 7.47688 0.790563V2.24875C7.47688 3.00869 8.09506 3.62688 8.855 3.62688H10.3136C10.3136 3.63256 10.3167 3.63738 10.3167 3.64306V9.81137H10.3171Z" fill="#6A7282"/>
250
+ </svg>
251
+ `,on=X`
252
+ <svg xmlns="http://www.w3.org/2000/svg"
253
+ width="12"
254
+ height="12"
255
+ viewBox="0 0 12 12"
256
+ fill="none"
257
+ aria-hidden="true"
258
+ focusable="false"
259
+ >
260
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M10.5301 0.244005C10.8555 -0.0813835 11.3834 -0.0812864 11.7088 0.244005C12.0338 0.569352 12.0338 1.09639 11.7088 1.42174L7.15416 5.97545L11.7088 10.5301C12.0341 10.8556 12.0342 11.3835 11.7088 11.7088C11.3835 12.0342 10.8556 12.0341 10.5301 11.7088L5.97545 7.15416L1.42174 11.7088C1.09639 12.0338 0.569351 12.0338 0.244004 11.7088C-0.0812866 11.3834 -0.0813828 10.8555 0.244004 10.5301L4.79772 5.97545L0.244004 1.42174C-0.0812866 1.09629 -0.0813828 0.569393 0.244004 0.244005C0.569393 -0.0813835 1.09629 -0.0812864 1.42174 0.244005L5.97545 4.79772L10.5301 0.244005Z" fill="#4A5565"/>
261
+ </svg>
262
+ `,an=X`
263
+ <svg xmlns="http://www.w3.org/2000/svg"
264
+ width="20"
265
+ height="20"
266
+ viewBox="0 0 20 20"
267
+ fill="none"
268
+ aria-hidden="true"
269
+ focusable="false"
270
+ >
271
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M14.3063 3.34814C14.9271 3.34832 15.5236 3.59563 15.9625 4.03467C16.4012 4.47362 16.648 5.06935 16.6481 5.68994C16.648 6.31072 16.4004 6.90719 15.9615 7.34619L15.9606 7.34521L7.95373 15.355L7.95275 15.356C7.73845 15.5696 7.47464 15.7278 7.18517 15.8159H7.1842L4.57287 16.6079H4.57092C4.40678 16.6572 4.23224 16.6614 4.06603 16.6196C3.89974 16.5778 3.74793 16.4918 3.62658 16.3706C3.50526 16.2494 3.41865 16.0974 3.37658 15.9312C3.33472 15.7651 3.3383 15.5903 3.38732 15.4263L3.3883 15.4243L4.18127 12.813V12.811C4.27013 12.5215 4.42882 12.2574 4.64318 12.0435L12.651 4.03467V4.03369C13.09 3.59513 13.6857 3.34816 14.3063 3.34814ZM5.56213 12.9634C5.49841 13.0269 5.4509 13.1059 5.42443 13.1919L5.42345 13.1909L4.82189 15.1733L6.80627 14.5718C6.89221 14.5456 6.97114 14.4985 7.03478 14.4351L13.274 8.19482L11.8014 6.72217L5.56213 12.9634ZM14.3063 4.64893C14.0303 4.64894 13.7652 4.75864 13.5699 4.95361L12.7213 5.80225L14.194 7.2749L15.0426 6.42627L15.1119 6.3501C15.2635 6.16488 15.3473 5.93141 15.3473 5.68994C15.3472 5.41394 15.2377 5.14881 15.0426 4.95361C14.8474 4.75846 14.5823 4.64906 14.3063 4.64893Z" fill="#1E2939"/>
272
+ </svg>
273
+ `,rn=X`
274
+ <svg xmlns="http://www.w3.org/2000/svg"
275
+ width="14"
276
+ height="14"
277
+ viewBox="0 0 14 14"
278
+ fill="none"
279
+ aria-hidden="true"
280
+ focusable="false"
281
+ >
282
+ <path d="M10.5 3.5L3.5 10.5" stroke="#6A7282" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
283
+ <path d="M3.5 3.5L10.5 10.5" stroke="#6A7282" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
284
+ </svg>
285
+ `,ln=X`
286
+ <svg xmlns="http://www.w3.org/2000/svg"
287
+ width="14"
288
+ height="14"
289
+ viewBox="0 0 14 14"
290
+ fill="none"
291
+ aria-hidden="true"
292
+ focusable="false"
293
+ >
294
+ <path d="M8.16427 2.3335C8.37473 2.33349 8.58127 2.39042 8.76201 2.49825C8.94276 2.60608 9.09096 2.76079 9.19093 2.946L9.47443 3.471C9.5744 3.6562 9.72261 3.81091 9.90335 3.91874C10.0841 4.02657 10.2906 4.0835 10.5011 4.0835H11.666C11.9754 4.0835 12.2722 4.20641 12.491 4.4252C12.7098 4.644 12.8327 4.94074 12.8327 5.25016V10.5002C12.8327 10.8096 12.7098 11.1063 12.491 11.3251C12.2722 11.5439 11.9754 11.6668 11.666 11.6668H2.33268C2.02326 11.6668 1.72652 11.5439 1.50772 11.3251C1.28893 11.1063 1.16602 10.8096 1.16602 10.5002V5.25016C1.16602 4.94074 1.28893 4.644 1.50772 4.4252C1.72652 4.20641 2.02326 4.0835 2.33268 4.0835H3.4976C3.70784 4.08351 3.91419 4.0267 4.0948 3.91909C4.27542 3.81148 4.42361 3.65706 4.52368 3.47216L4.80893 2.94483C4.90901 2.75993 5.05719 2.60551 5.23781 2.4979C5.41843 2.39029 5.62477 2.33348 5.83502 2.3335H8.16427Z" stroke="#1E2939" stroke-width="1.02083" stroke-linecap="round" stroke-linejoin="round"/>
295
+ <path d="M7 9.33337C7.9665 9.33337 8.75 8.54987 8.75 7.58337C8.75 6.61688 7.9665 5.83337 7 5.83337C6.0335 5.83337 5.25 6.61688 5.25 7.58337C5.25 8.54987 6.0335 9.33337 7 9.33337Z" stroke="#1E2939" stroke-width="1.02083" stroke-linecap="round" stroke-linejoin="round"/>
296
+ </svg>
297
+ `,sn=X`
298
+ <svg xmlns="http://www.w3.org/2000/svg"
299
+ width="16"
300
+ height="16"
301
+ viewBox="0 0 16 16"
302
+ fill="none"
303
+ aria-hidden="true"
304
+ focusable="false"
305
+ >
306
+ <path d="M3.5 4L8 8L12.5 4" stroke="#7C4DFF" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
307
+ <path d="M3.5 8L8 12L12.5 8" stroke="#7C4DFF" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
308
+ </svg>
309
+ `;const dn="https://solidos.github.io/profile-pane/src/ontology/";function cn(e,n,t,i){const o=i||dn+t,a=(0,Me.sym)(o);e.holds(void 0,void 0,void 0,a)||(0,Me.parse)(n,e,o,"text/turtle",()=>null)}const An=`${me.icons.iconBase}noun_10636_grey.svg`,pn=(()=>{var e;const n=(null===(e=null==Ze?void 0:Ze.strings)||void 0===e?void 0:e.join(""))||"";return n?`data:image/svg+xml;utf8,${encodeURIComponent(n)}`:An})(),un=a.p+"976473cf5fe24d657d4b.png",fn=a.p+"5f62a5b2b7e99b9640c7.png",mn=a.p+"20899934157df4db56cb.png",gn=a.p+"10163fd9b5a0e00d63a0.png",hn=a.p+"04567ff683933c35c465.png",Cn=a.p+"33760bf79f097f449da5.png",bn=a.p+"f3772696fb7ee53c23d8.png",En=a.p+"6525766ecd288ec60129.png",_n=a.p+"cd68e8f3990ba8b2139e.png",vn=a.p+"578d2b6ed32e7624164e.png",wn=a.p+"7800be6f6c4b5b0f4f20.png",yn=a.p+"e7074a7e2cb69e51cfd3.png",Bn=a.p+"1234dcb2eec2e45f252b.png",xn=a.p+"bda84f59e7216675a208.png",kn=(0,Me.sym)("http://www.w3.org/2002/07/owl#disjointUnionOf"),In="urn:profile-pane:starIcon",$n="urn:profile-pane:icon:",Sn="https://solidos.github.io/profile-pane/src/ontology/socialMedia.ttl",Dn=`${Sn}#`,Nn=(()=>{var e;const n=(null===(e=null==Ze?void 0:Ze.strings)||void 0===e?void 0:e.join(""))||"";return n?`data:image/svg+xml;utf8,${encodeURIComponent(n)}`:pn})();let Tn=null;const jn=[{classUri:`${Dn}FacebookAccount`,label:"Facebook",icon:mn,userProfilePrefix:"https://www.facebook.com/",homepage:"https://www.facebook.com/"},{classUri:`${Dn}InstagramAccount`,label:"Instagram",icon:gn,userProfilePrefix:"https://www.instagram.com/",homepage:"https://www.instagram.com/"},{classUri:`${Dn}LinkedInAccount`,label:"LinkedIn",icon:hn,userProfilePrefix:"https://www.linkedin.com/in/",homepage:"https://linkedin.com/"},{classUri:`${Dn}TiktokAccount`,label:"TikTok",icon:wn,userProfilePrefix:"https://www.tiktok.com/@",homepage:"https://www.tiktok.com/"},{classUri:`${Dn}TwitterAccount`,label:"X",icon:Bn,userProfilePrefix:"https://x.com/",homepage:"https://x.com/"},{classUri:`${Dn}YouTubeAccount`,label:"YouTube",icon:xn,userProfilePrefix:"https://www.youtube.com/",homepage:"https://www.youtube.com/"},{classUri:`${Dn}DiscordAccount`,label:"Discord",icon:un,userProfilePrefix:"https://discord.com/users/",homepage:"https://discord.com/"},{classUri:`${Dn}SnapchatAccount`,label:"Snapchat",icon:En,userProfilePrefix:"https://www.snapchat.com/add/",homepage:"https://www.snapchat.com/"},{classUri:`${Dn}PinterestAccount`,label:"Pinterest",icon:Cn,userProfilePrefix:"https://pin.it/",homepage:"https://pinterest.com/"},{classUri:`${Dn}SpotifyAccount`,label:"Spotify",icon:_n,userProfilePrefix:"https://www.spotify.com/user/",homepage:"https://www.spotify.com/"},{classUri:`${Dn}TelegramAccount`,label:"Telegram",icon:vn,userProfilePrefix:"https://t.me/",homepage:"https://telegram.org/"},{classUri:`${Dn}DribbleAccount`,label:"Dribble",icon:fn,userProfilePrefix:"https://dribbble.com/",homepage:"https://dribbble.com/"},{classUri:`${Dn}SharechatAccount`,label:"ShareChat",icon:bn,userProfilePrefix:"https://www.sharechat.com/user/",homepage:"https://sharechat.com/"},{classUri:`${Dn}WhatsAppAccount`,label:"WhatsApp",icon:yn,userProfilePrefix:"https://wa.me/",homepage:"https://www.whatsapp.com/"}],zn={discord:un,dribbble:fn,facebook:mn,instagram:gn,linkedin:hn,pinterest:Cn,sharechat:bn,snapchat:En,spotify:_n,telegram:vn,tiktok:wn,whatsapp:yn,x:Bn,youtube:xn,"discord.png":un,"dribbble.png":fn,"facebook.png":mn,"instagram.png":gn,"linkedin.png":hn,"pinterest.png":Cn,"sharechat.png":bn,"snapchat.png":En,"spotify.png":_n,"telegram.png":vn,"tiktok.png":wn,"whatsapp.png":yn,"x.png":Bn,"youtube.png":xn};function Fn(e){if(!e)return"";const n=e.trim().toLowerCase();if(n.startsWith($n)){const e=n.slice(22);return zn[e]||""}const t="icons-png/",i=n.lastIndexOf(t);if(-1===i)return"";const o=n.slice(i+10);return zn[o]||""}function Pn(e){return(e||"").trim().toLowerCase().replace(/[#:/]/g," ").replace(/account\b/g,"").replace(/[^a-z0-9]/g,"")}function Ln(e,n){const t=(n||"").trim();if(!t)return;const i=t.toLowerCase(),o=e.find(e=>e.classUri.toLowerCase()===i||e.label.toLowerCase()===i);if(o)return o;const a=Pn(t);return a?e.find(e=>{const n=Pn(e.label),t=Pn(e.classUri);return n===a||t===a}):void 0}function Mn(e){cn(e,We,"socialMedia.ttl")}function Wn(e){Mn(e);const n=function(){if(Tn)return Tn;const e=(0,Me.graph)();return(0,Me.parse)(We,e,Sn,"text/turtle",()=>null),Tn=e,e}(),t=new Map,i=n.any(me.ns.foaf("Account"),kn);if(i){const e=Le(n,i).filter(e=>"NamedNode"===e.termType);for(const n of e)t.set(n.value,n)}const o=n.statementsMatching(void 0,me.ns.rdfs("subClassOf"),me.ns.foaf("Account"));for(const e of o){const n=e.subject;"NamedNode"===(null==n?void 0:n.termType)&&t.set(n.value,n)}const a=Array.from(t.values());if(!a.length)return[];const r=a.map(e=>{var t,i,o,a;const r=(null===(t=n.any(e,me.ns.rdfs("label")))||void 0===t?void 0:t.value)||me.utils.label(e)||e.value,l=(null===(i=n.any(e,me.ns.foaf("icon")))||void 0===i?void 0:i.value)||"",s=function(e,n){if(e.endsWith("#OtherAccount")||n===In)return Nn;const t=Fn(n);return t||n||pn}(e.value,l),d=(null===(o=n.any(e,me.ns.foaf("homepage")))||void 0===o?void 0:o.value)||"",c=(null===(a=n.any(e,me.ns.foaf("userProfilePrefix")))||void 0===a?void 0:a.value)||"";return{classUri:e.value,label:r,icon:s,homepage:d||void 0,userProfilePrefix:c||void 0}}),l=new Set,s=r.filter(e=>{const n=e.label.toLowerCase().trim();return!(!n||l.has(n))&&(l.add(n),!0)});for(const e of jn){const n=e.label.toLowerCase().trim();l.has(n)||(s.push(e),l.add(n))}return s}function Rn(e,n){const t=e.any(n,me.ns.foaf("name"))||e.any(n,me.ns.rdfs("label"));if(t)return t.value;const i=e.each(n,me.ns.rdf("type"));for(const n of i){const t=e.any(n,me.ns.rdfs("label"));return t?t.value:me.utils.label(n)}return"Unknown Account"}function Un(e,n){var t;const i=e.any(n,me.ns.foaf("icon"));if((null==i?void 0:i.value)===In)return Nn;if(i){const e=Fn(i.value);return e||i.value}const o=e.each(n,me.ns.rdf("type"));for(const n of o){if(null===(t=null==n?void 0:n.value)||void 0===t?void 0:t.endsWith("#OtherAccount"))return Nn;const i=e.any(n,me.ns.foaf("icon"));if((null==i?void 0:i.value)===In)return Nn;if(i){const e=Fn(i.value);return e||i.value}}return pn}function Hn(e,n){const t=e.any(n,me.ns.foaf("homepage"));if(t)return t.value;const i=String(e.anyJS(n,me.ns.foaf("accountName"),null,n.doc())||"No_account_Name").trim();if(/^https?:\/\//i.test(i))return i;const o=e.each(n,me.ns.rdf("type"));for(const n of o)if("NamedNode"===n.termType){const t=e.any(n,me.ns.foaf("userProfilePrefix"));if(t)return t.value+String(i).trim()}return e.anyJS(n,me.ns.foaf("homepage"),null,n.doc())||""}function Yn(e,n){function t(e){return{name:Rn(n,e),icon:Un(n,e),homepage:Hn(n,e),entryNode:e}}Mn(n);const i=n.each(e,me.ns.foaf("account")).flatMap(e=>Le(n,e)),o=new Set,a=[];for(const e of i)if("NamedNode"===e.termType){const i=n.any(e,me.ns.foaf("accountName")),r=i?i.value:"";o.has(r)||(o.add(r),a.push(t(e)))}return a.length?{accounts:a}:{accounts:[]}}function On(e,n){if("Literal"===n.termType)return"";const t=e.anyJS(n,me.ns.schema("name"));if(t)return t;const i=e.any(n,me.ns.solid("publicId"));if(i&&"NamedNode"===i.termType){const n=e.anyJS(i,me.ns.schema("name"));return n||me.utils.label(i,!0)}return""}function qn(e,n){return n.each(e,me.ns.schema("skills")).filter(e=>"Literal"!==e.termType).map(e=>{const t=n.any(e,me.ns.solid("publicId")),i=t?t.value:"";return{name:On(n,e),publicId:i,entryNode:e}}).filter(e=>""!==e.name)}const Vn="https://www.w3.org/ns/iana/language-code/";function Qn(e){return e.replace(/\s+/g," ").trim()}function Zn(e,n){return!!Array.isArray(null==n?void 0:n.elements)||("BlankNode"===n.termType||"NamedNode"===n.termType)&&Boolean(e.any(n,me.ns.rdf("first")))}function Xn(e){return(e||"").trim().toLowerCase()}function Gn(e){const n=(e||"").trim().toLowerCase();if(!n)return"";try{const e=null===Intl||void 0===Intl?void 0:Intl.DisplayNames;if("function"==typeof e){const t=new e(["en"],{type:"language"}).of(n);if(t)return t}}catch{}return n}function Kn(e){const n=(e||"").trim();if(!n)return"";if(n.startsWith(Vn)){return Gn(Xn(n.slice(41)))}return Gn(n)}function Jn(e,n){const t=function(e,n,t){var i,o;const a=e.statementsMatching(n,t),r=a.find(e=>{var n;return((null===(n=e.object)||void 0===n?void 0:n.lang)||"").toLowerCase().startsWith("en")});if(r&&"string"==typeof(null===(i=r.object)||void 0===i?void 0:i.value))return r.object.value;const l=a.find(e=>{var n;return"Literal"===(null===(n=e.object)||void 0===n?void 0:n.termType)});return l&&"string"==typeof(null===(o=l.object)||void 0===o?void 0:o.value)?l.object.value:""}(e,n,me.ns.schema("name"));if(t)return Qn(t);const i=function(e,n){const t=e.statementsMatching(n,me.ns.rdfs("label")).find(e=>{var n;return((null===(n=e.object)||void 0===n?void 0:n.lang)||"").toLowerCase().startsWith("en")});return t&&t.object&&"string"==typeof t.object.value?t.object.value:""}(e,n);return i?Qn(i):n.value.startsWith(Vn)?Kn(n.value):""}function et(e,n){if("NamedNode"===(null==n?void 0:n.termType))return n.value;if("Literal"===(null==n?void 0:n.termType)){return Xn(n.value)||void 0}return"NamedNode"===e.termType&&e.value.startsWith(Vn)?e.value:void 0}function nt(e,n){if("Literal"===n.termType)return n.value;if("NamedNode"!==n.termType&&"BlankNode"!==n.termType)return"";const t=e.any(n,me.ns.solid("publicId"))||void 0;return function(e,n,t){if("NamedNode"===(null==t?void 0:t.termType)){return Jn(e,t)||Kn(t.value)}if("Literal"===(null==t?void 0:t.termType)){const n=Xn(t.value);if(!n)return"";return Jn(e,(0,Me.sym)(`${Vn}${n}`))||Gn(n)}if("NamedNode"===n.termType){const t=Jn(e,n);if(t)return t}return""}(e,n,t)}function tt(e,n){const t=n.each(e,me.ns.schema("knowsLanguage")),i=t.filter(e=>Zn(n,e)).map(e=>Le(n,e)).sort((e,n)=>n.length-e.length)[0]||[],o=[...i,...t.filter(e=>!Zn(n,e))].map(e=>({name:nt(n,e),publicId:et(e,n.any(e,me.ns.solid("publicId"))||void 0),proficiency:n.anyValue(e,me.ns.schema("proficiencyLevel"))||void 0,entryNode:e})).filter(e=>Boolean(e.name)),a=new Map;return o.forEach(e=>{const n=e.publicId||e.name;a.has(n)||a.set(n,e)}),Array.from(a.values())}const it=me.ns.schema("EducationalOccupationalCredential"),ot=me.ns.vcard("Organization").value;function at(e){const n=(e||"").trim();if(!n)return"";const t=n.match(/[#/]([^#/]+)$/);return(null==t?void 0:t[1])||n}function rt(e,n,t){if(!n)return"";if("Literal"===n.termType)return n.value;if("NamedNode"===n.termType){const i=e.anyJS(n,me.ns.rdfs("label"),null,t);return i||at(n.value)}return""}function lt(e,n,t){const i=e.each(n,me.ns.rdf("type"),null,t).filter(e=>"NamedNode"===e.termType&&e.value.startsWith(me.ns.solid("").value));return rt(e,i.find(e=>{const n=at(e.value);return"PastRole"===n||"CurrentRole"===n||"FutureRole"===n})||i[0],t)}function st(e,n,t){const i=e.any(n,me.ns.org("classification"),null,t),o=rt(e,i,t);if(o)return o;const a=e.each(n,me.ns.rdf("type"),null,t).filter(e=>"NamedNode"===e.termType).filter(e=>e.value!==ot);return rt(e,a.find(e=>e.value.startsWith("http://schema.org/"))||a[0],t)}function dt(e,n){var t,i;const o=[],a=new Map,r=n.doc(),l=e.each(null,me.ns.org("member"),n,r).filter(n=>!function(e,n,t){return e.holds(n,me.ns.rdf("type"),it,t)}(e,n,r));for(const n of l){let o,l,s,d,c,A,p;const u=e.any(n,me.ns.schema("startDate"),null,r),f=e.any(n,me.ns.schema("endDate"),null,r),m=e.anyJS(n,me.ns.schema("description"),null,r),g=!f,h=lt(e,n,r),C=e.any(n,me.ns.org("organization"),null,r);C&&(l=e.anyJS(C,me.ns.schema("name"),null,r),o=e.any(C,me.ns.schema("uri"),null,r),A=st(e,C,r),p=e.any(C,me.ns.org("location"),null,r),c=e.any(C,me.ns.solid("publicId"),null,r)),c&&(s=e.anyJS(c,me.ns.schema("name"),null,r));const b=s||l,E=e.any(n,me.ns.org("role"),null,r);E&&(d=e.anyJS(E,me.ns.schema("name"),null,r));const _=e.anyJS(n,me.ns.vcard("role"),null,r),v={title:_&&d?d+" - "+_:_||d,roleType:h,entryNode:n,startDate:u,endDate:f,isCurrentRole:g,orgName:b,orgType:A,orgLocation:p,orgHomePage:o,description:m||void 0},w=[v.title||"",v.orgName||"",(null===(t=v.startDate)||void 0===t?void 0:t.value)||"",(null===(i=v.endDate)||void 0===i?void 0:i.value)||""].join("|"),y=a.get(w);if(!y){a.set(w,v);continue}const B="NamedNode"===y.entryNode.termType,x="NamedNode"===v.entryNode.termType;!B&&x&&a.set(w,v)}return a.forEach(e=>o.push(e)),o}function ct(e){return e?"string"==typeof e?e:e.value||"":""}function At(e){const n=(e||"").trim();return!!n&&(!!/^mailto:/i.test(n)||/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n))}function pt(e){const n=(e||"").trim();return!!n&&(!!/^tel:/i.test(n)||/^[+()\-\s\d]{5,}$/.test(n))}function ut(e,n,t,i){const o="email"===i?At:pt;if(o(ct(n)))return n;const a=e.statementsMatching(n,me.ns.vcard("value"),null,t),r=e.statementsMatching(n,me.ns.vcard("value"));for(const e of[...a,...r]){const n=e.object;if(o(ct(n)))return n}return null}function ft(e,n){const t=function(e,n){const t=[];return(n.each(e,me.ns.vcard("hasEmail"),null,e.doc())||null).forEach(i=>{const o=ut(n,i,e.doc(),"email");if(!o)return;const a=n.any(i,me.ns.rdf("type"),null,e.doc());t.push({entryNode:i,type:a,valueNode:o})}),t}(e,n),i=function(e,n){const t=[];return(n.each(e,me.ns.vcard("hasTelephone"),null,e.doc())||null).forEach(i=>{const o=ut(n,i,e.doc(),"phone");if(!o)return;const a=n.any(i,me.ns.rdf("type"),null,e.doc());t.push({entryNode:i,type:a,valueNode:o})}),t}(e,n),o=function(e,n){const t=[];return(n.each(e,me.ns.vcard("hasAddress"),null,e.doc())||null).map(i=>{const o=ct(n.any(i,me.ns.vcard("street-address"),null,e.doc())),a=ct(n.any(i,me.ns.vcard("locality"),null,e.doc())),r=ct(n.any(i,me.ns.vcard("region"),null,e.doc())),l=ct(n.any(i,me.ns.vcard("postal-code"),null,e.doc())),s=ct(n.any(i,me.ns.vcard("country-name"),null,e.doc())),d=n.any(i,me.ns.rdf("type"),null,e.doc());t.push({entryNode:i,...d?{type:d}:{},streetAddress:o,locality:a,region:r,postalCode:l,countryName:s})}),t}(e,n);return{emails:t,phones:i,addresses:o}}const mt=me.ns.schema("EducationalOccupationalCredential");function gt(e,n){const t=[],i=new Map,o=n.doc(),a=e.each(null,me.ns.org("member"),n,o).filter(n=>function(e,n,t){return e.holds(n,me.ns.rdf("type"),mt,t)}(e,n,o));for(const n of a){const t={school:e.anyJS(n,me.ns.schema("name"),null,o)||"",degree:e.anyJS(n,me.ns.schema("educationalCredentialAwarded"),null,o)||void 0,location:e.anyJS(n,me.ns.schema("location"),null,o)||void 0,startDate:e.anyJS(n,me.ns.schema("startDate"),null,o)||void 0,endDate:e.anyJS(n,me.ns.schema("endDate"),null,o)||void 0,description:e.anyJS(n,me.ns.schema("description"),null,o)||void 0,entryNode:n},a=[t.school||"",t.degree||"",t.location||"",t.startDate||"",t.endDate||""].join("|"),r=i.get(a);if(!r){i.set(a,t);continue}const l="NamedNode"===r.entryNode.termType,s="NamedNode"===t.entryNode.termType;!l&&s&&i.set(a,t)}return i.forEach(e=>t.push(e)),t}function ht(e,n,t){const i=[...n.each(e,me.ns.solid("community"),null,t),...n.each(e,me.ns.solid("community"),null,null)].flatMap(e=>{const t=Array.isArray(null==e?void 0:e.elements),i=("BlankNode"===e.termType||"NamedNode"===e.termType)&&Boolean(n.any(e,me.ns.rdf("first")));return t||i?Le(n,e):[e]}),o=new Set,a=[];for(const e of i){const n=`${(null==e?void 0:e.termType)||""}:${(null==e?void 0:e.value)||""}`;o.has(n)||(o.add(n),a.push(e))}return a}function Ct(e,n){var t;if(!e)return null;if("NamedNode"===e.termType)return e;if("Literal"===e.termType)try{return(0,Me.sym)(e.value)}catch{return null}if("BlankNode"!==e.termType)return null;const i=[me.ns.solid("publicId"),me.ns.schema("url"),me.ns.foaf("homepage"),me.ns.rdfs("seeAlso"),me.ns.schema("sameAs"),me.ns.schema("mainEntityOfPage")];for(const t of i){const i=n.any(e,t);if(null==i?void 0:i.value){if("NamedNode"===i.termType)return i;if("Literal"===i.termType)try{return(0,Me.sym)(i.value)}catch{}}}const o=n.statementsMatching(e,null,null,null).find(e=>"NamedNode"===e.object.termType);return(null===(t=null==o?void 0:o.object)||void 0===t?void 0:t.value)?o.object:null}async function bt(e,n){await async function(e,n){const t=e.doc(),i=null==n?void 0:n.fetcher;if(!i||"function"!=typeof i.load)return;const o=ht(e,n,t),a=new Map;for(const e of o){const t=Ct(e,n);if(!t)continue;const i=t.doc();a.set(i.value,i)}a.size&&await Promise.all(Array.from(a.values()).map(async e=>{!function(e,n){const t=null==e?void 0:e.requested;if(!t||"object"!=typeof t)return;const i=t[n];("string"==typeof i&&"requested"!==i&&"done"!==i||"number"==typeof i&&i>=400)&&delete t[n]}(i,e.value);try{await i.load(e)}catch{}}))}(e,n);const t=e.doc(),i=new Set,o=ht(e,n,t).map(e=>{var t,o,a;const r=Ct(e,n),l=(null==r?void 0:r.value)||((s=e)?"NamedNode"===s.termType?s.value||"":"Literal"===s.termType&&s.value||"":"");var s;const d=function(e){const n=(e||"").trim();if(!n)return"";try{return new URL(n).href}catch{return n}}(l),c=r||function(e,n){if(e&&"NamedNode"===e.termType)return e;try{return(0,Me.sym)(n)}catch{return null}}(e,l),A=null==c?void 0:c.doc(),p=c&&n.anyValue(c,me.ns.foaf("name"),null,A||null)||void 0,u=c&&n.anyValue(c,me.ns.vcard("organization-name"),null,A||null)||void 0,f=p||(c?me.utils.label(c):me.utils.label(d)),m=c?me.widgets.findImage(c)||(null!==(a=null===(o=(t=me.widgets).findImageFromURI)||void 0===o?void 0:o.call(t,c))&&void 0!==a?a:void 0):void 0;let g=[];c&&(g=n.each(c,me.ns.rdf("type"),null,A||null));const h=g.find(e=>"NamedNode"===e.termType&&(e.value===me.ns.schema("Project").value||e.value===me.ns.schema("Community").value)),C=(null==h?void 0:h.value)===me.ns.schema("Project").value?"project":(null==h?void 0:h.value)===me.ns.schema("Community").value?"community":"unknown";return l&&d&&!i.has(d)?(i.add(d),{url:l,title:f,name:p,orgName:u,imageUrl:m,category:C,entryNode:e}):null}).filter(e=>Boolean(e));return o}function Et(e){if(!e)return"";if("string"==typeof e)return e;if("object"==typeof e&&"value"in e){const n=e.value;return"string"==typeof n?n:""}return""}function _t(e){const n=(e||"").trim();return!!n&&(!!/^mailto:/i.test(n)||/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n))}function vt(e){const n=(e||"").trim();return!!n&&(!!/^tel:/i.test(n)||/^[+()\-\s\d]{5,}$/.test(n))}function wt(e,n,t,i){if(!n)return;const o="email"===i?_t:vt;if(o(Et(n)))return n;if("NamedNode"!==n.termType)return;const a=e.statementsMatching(n,me.ns.vcard("value"),null,t),r=e.statementsMatching(n,me.ns.vcard("value"));for(const e of[...a,...r])if(o(Et(e.object)))return e.object}function yt(e,n,t){if("NamedNode"!==n.termType)return;const i=e.statementsMatching(n,me.ns.rdf("type"),null,t);if(i.length>0)return i[0].object;const o=e.statementsMatching(n,me.ns.rdf("type"));return o.length>0?o[0].object:void 0}function Bt(e){const n=Et(e).trim().toLowerCase();return!!n&&("work"===n||n.endsWith("#work")||n.endsWith("/work"))}function xt(e,n,t,i,o,a){const r=[...e.statementsMatching(n,t,null,i),...e.statementsMatching(n,t)].map(e=>e.object),l=[],s=new Set;for(const n of r){const t=Et(n);if(t&&s.has(t))continue;t&&s.add(t);const r=wt(e,n,i,o);if(!r)continue;const d=yt(e,n,i)||a;l.push({entryNode:n,type:d,valueNode:r})}const d=l.find(n=>function(e,n,t){return"NamedNode"===n.termType&&[...e.statementsMatching(n,me.ns.rdf("type"),null,t),...e.statementsMatching(n,me.ns.rdf("type"))].some(e=>Bt(e.object))}(e,n.entryNode,i)||Bt(n.type));return d||(l.length>0?l[0]:void 0)}function kt(e,n){return e&&n?`${n}, ${e}`:e||n||null}const It=(e,n)=>{const t=me.utils.label(e),i=n.anyValue(e,me.ns.vcard("nickname"))||n.anyValue(e,me.ns.foaf("nick"))||void 0,o=n.anyValue(e,me.ns.vcard("bday"))||void 0,a=me.widgets.findImage(e),r=n.anyValue(e,me.ns.vcard("role"))||void 0,l=n.anyValue(e,me.ns.vcard("organization-name"))||void 0,s=e.doc(),d=xt(n,e,me.ns.vcard("hasTelephone"),s,"phone",me.ns.vcard("Voice")),c=xt(n,e,me.ns.vcard("hasEmail"),s,"email",me.ns.vcard("Internet")),A=n.any(e,me.ns.vcard("hasAddress"))||void 0,p=A&&n.any(A,me.ns.rdf("type"))||void 0,u=A&&n.anyValue(A,me.ns.vcard("street-address"))||void 0,f=A&&n.anyValue(A,me.ns.vcard("locality"))||void 0,m=A&&n.anyValue(A,me.ns.vcard("region"))||void 0,g=A&&n.anyValue(A,me.ns.vcard("postal-code"))||void 0,h=A&&n.anyValue(A,me.ns.vcard("country-name"))||void 0,C=A?{entryNode:A,type:p,streetAddress:u,locality:f,region:m,postalCode:g,countryName:h}:void 0,b=A||null,E=null!=b?n.anyValue(b,me.ns.vcard("country-name")):null,_=null!=b?n.anyValue(b,me.ns.vcard("locality")):null,v=function(e,n){let t=e.anyJS(n,me.ns.solid("preferredSubjectPronoun"))||"";if(t){const i=e.anyJS(n,me.ns.solid("preferredObjectPronoun"));i&&(t+="/"+i)}return t||""}(n,e);return{name:t,nickname:i,imageSrc:a,dateOfBirth:o,jobTitle:r,orgName:l,primaryPhone:d,primaryEmail:c,primaryAddress:C,location:kt(E,_),pronouns:v,entryNode:e}};async function $t(e,n){const t=It(e,n),i=ft(e,n),o=qn(e,n),a=tt(e,n),r=function(e,n){return function(e){return e.sort((e,n)=>{const t=!e.endDate;if(t!==!n.endDate)return t?-1:1;const i=e.endDate||"",o=n.endDate||"";if(i!==o)return o.localeCompare(i);const a=e.startDate||"";return(n.startDate||"").localeCompare(a)})}(gt(n,e))}(e,n),l=await bt(e,n),s=((e,n)=>({description:n.anyJS(e,me.ns.vcard("note")),entryNode:e}))(e,n),d=Yn(e,n),c=function(e,n){const t=(i=dt(n,e),i.sort((e,n)=>{var t,i,o,a;const r=!e.endDate;if(r!==!n.endDate)return r?-1:1;const l=(null===(t=e.endDate)||void 0===t?void 0:t.value)||"",s=(null===(i=n.endDate)||void 0===i?void 0:i.value)||"";if(l!==s)return s.localeCompare(l);const d=(null===(o=e.startDate)||void 0===o?void 0:o.value)||"";return((null===(a=n.startDate)||void 0===a?void 0:a.value)||"").localeCompare(d)}));var i;return t}(e,n);return{profileDetails:t,social:d,contactInfo:i,skills:o,languages:a,education:r,projects:l,bioDetails:s,cvDetails:c}}var St=a(4594),Dt={};Dt.styleTagTransform=u(),Dt.setAttributes=d(),Dt.insert=l().bind(null,"head"),Dt.domAPI=i(),Dt.insertStyleElement=A();n()(St.A,Dt);St.A&&St.A.locals&&St.A.locals;let Nt=null,Tt=null;function jt(e){return Nt&&e.body.contains(Nt)||(Nt=null,Nt=e.createElement("dialog"),Nt.id="profile-modal",Nt.setAttribute("aria-modal","true"),Nt.setAttribute("aria-labelledby","modal-title"),Nt.setAttribute("aria-describedby","modal-desc"),Nt.innerHTML='\n <div class="modal">\n <div class="modal-header">\n <h2 id="modal-title"></h2>\n <div id="modal-header-action"></div>\n </div>\n <div id="modal-desc"></div>\n <section id="modal-error" class="modal__error-section" aria-live="assertive" role="alert" hidden></section>\n <div id="modal-buttons"></div>\n </div>\n ',e.body.appendChild(Nt)),Nt}function zt(e){return{dialog:e,title:e.querySelector("#modal-title"),headerAction:e.querySelector("#modal-header-action"),description:e.querySelector("#modal-desc"),error:e.querySelector("#modal-error"),buttons:e.querySelector("#modal-buttons")}}function Ft(e){e.error.textContent="",e.error.hidden=!0}function Pt(e,n){e.error.textContent=n,e.error.hidden=!1}function Lt(e,n){const t=function(e){const n=Array.from(e.querySelectorAll('input, select, textarea, [contenteditable="true"], [tabindex]:not([tabindex="-1"])'));for(const e of n){const n=e.hasAttribute("disabled")||"true"===e.getAttribute("aria-disabled"),t=e.hasAttribute("hidden")||"true"===e.getAttribute("aria-hidden");if(!n&&!t)return e}return null}(e);if(t)return t.focus(),void((t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement)&&t.select());const i=n.querySelector("button");i&&i.focus()}function Mt({title:e,message:n,buttons:t,headerAction:i,dom:o}){const a=jt(o),r=zt(a);return Tt=o.activeElement,function(e){if("function"==typeof e.showModal)try{return void(e.open||e.showModal())}catch{}e.setAttribute("open","")}(a),r.title.textContent=e||"",r.description.innerHTML="","string"==typeof n?r.description.textContent=n:r.description.appendChild(n),r.buttons.innerHTML="",Ft(r),new Promise(e=>{const n=n=>{!function(){if(Nt){!function(e){"function"==typeof e.close&&e.open?e.close():e.removeAttribute("open")}(Nt),Nt.oncancel=null;const e=Nt.querySelector("#modal-header-action button");e&&(e.onclick=null),Tt&&"focus"in Tt&&Tt.focus()}}(),e(n)},l=()=>{const e=a.querySelector("button[data-cancel]");e?e.click():n(!1)};a.oncancel=e=>{e.preventDefault(),l()},r.headerAction.innerHTML="";const s=i||{type:"close"};if("close"===s.type){const e=o.createElement("button");e.setAttribute("type","button"),e.setAttribute("aria-label","Close dialog"),ue(on,e),e.onclick=()=>l(),r.headerAction.appendChild(e)}else if("button"===s.type){const e=o.createElement("button");e.setAttribute("type","button"),e.className=s.className||"modal__header-action-button profile__action-button profile-action-text flex-center",e.textContent=s.label,e.setAttribute("aria-label",s.ariaLabel||s.label),e.onclick=async()=>{s.onClick&&await s.onClick()},r.headerAction.appendChild(e)}t.forEach(e=>{const t=o.createElement("button");t.setAttribute("type","button"),t.textContent=e.label,e.primary&&t.classList.add("btn-primary"),e.cancel&&(t.classList.add("btn-light"),t.setAttribute("data-cancel","true")),t.addEventListener("click",async()=>{if(e.beforeClose){if(!await e.beforeClose())return}n(e.value)}),r.buttons.appendChild(t)}),Lt(r.description,r.buttons)})}function Wt(e){const n=e.submitLabel||"Save Changes",t=e.cancelLabel||"Cancel",i=jt(e.dom),o=zt(i),a=e.dom.createElement("button");a.type="submit",a.hidden=!0,a.tabIndex=-1,e.form.appendChild(a);const r=e=>{e.preventDefault();const n=i.querySelector("#modal-buttons .btn-primary");null==n||n.click()};return e.form.addEventListener("submit",r),Mt({title:e.title,message:e.form,headerAction:e.headerAction,buttons:[{label:t,value:null,cancel:!0},{label:n,value:"save",primary:!0,beforeClose:async()=>{if(Ft(o),e.validate){const n=await e.validate();if(n)return Pt(o,n),!1}if(!e.onSave)return!0;try{return await e.onSave(),!0}catch(n){const t=n instanceof Error?n.message:String(n),i=e.formatSaveError?e.formatSaveError(n):t;return Pt(o,i),!1}}}],dom:e.dom}).then(n=>"save"!==n?null:function(e){const n=new FormData(e),t={};return n.forEach((e,n)=>{t[n]=String(e)}),t}(e.form)).finally(()=>{e.form.removeEventListener("submit",r),a.remove()})}var Rt=a(5203),Ut={};Ut.styleTagTransform=u(),Ut.setAttributes=d(),Ut.insert=l().bind(null,"head"),Ut.domAPI=i(),Ut.insertStyleElement=A();n()(Rt.A,Ut);Rt.A&&Rt.A.locals&&Rt.A.locals;var Ht=a(7380),Yt={};Yt.styleTagTransform=u(),Yt.setAttributes=d(),Yt.insert=l().bind(null,"head"),Yt.domAPI=i(),Yt.insertStyleElement=A();n()(Ht.A,Yt);Ht.A&&Ht.A.locals&&Ht.A.locals;function Ot(e){return e.startsWith("_:")?e.slice(2):e}function qt(e,n,t){if(!e.updater)throw new Error(Ie);const i=(n||[]).filter(n=>{if(!(n&&n.subject&&n.predicate&&n.object))return!1;const t=n.why;return e.holds(n.subject,n.predicate,n.object,t)}),o=(t||[]).filter(e=>Boolean(e&&e.subject&&e.predicate&&e.object));return 0===i.length&&0===o.length?Promise.resolve():new Promise((n,t)=>{try{e.updater.update(i,o,(e,i,o)=>{!0!==i?t(new Error(o||"Failed to save updates")):n()})}catch(e){t(e instanceof Error?e:new Error(String(e)))}})}function Vt(e,n,t){return e.statementsMatching(n,null,null,t)}function Qt(e,n,t,i,o,a,r){o.push(...e.statementsMatching(n,t,null,i)),r&&a.push((0,Me.st)(n,t,r,i))}function Zt(e,n,t,i){const o=e.each(n,t,null,i),a=o.flatMap(n=>Vt(e,n,i));return{linkedNodes:o,linkedStatements:a,linkStatements:e.statementsMatching(n,t,null,i)}}function Xt(e,n){const t=Ot(n);return e.find(e=>Ot(e.value)===t||e.value===n)}let Gt=0;function Kt(e){const n=Date.now(),t=n>Gt?n:Gt+1;return Gt=t,(0,Me.sym)(`${e.uri}#id${t}`)}function Jt(e,n,t,i){const o=i.value.startsWith("tel:")?i.value:`tel:${i.value}`,a=(0,Me.sym)(o),r=[(0,Me.st)(e,me.ns.vcard("hasTelephone"),t,n),(0,Me.st)(t,me.ns.vcard("value"),a,n)];return i.type&&r.push((0,Me.st)(t,me.ns.rdf("type"),me.ns.vcard(i.type),n)),r}function ei(e,n,t,i){const o=i.value.startsWith("mailto:")?i.value:`mailto:${i.value}`,a=(0,Me.sym)(o),r=[(0,Me.st)(e,me.ns.vcard("hasEmail"),t,n),(0,Me.st)(t,me.ns.vcard("value"),a,n)];return i.type&&r.push((0,Me.st)(t,me.ns.rdf("type"),me.ns.vcard(i.type),n)),r}function ni(e,n,t,i){const o=[(0,Me.st)(e,me.ns.vcard("hasAddress"),t,n)];return i.type&&o.push((0,Me.st)(t,me.ns.rdf("type"),me.ns.vcard(i.type),n)),i.streetAddress&&o.push((0,Me.st)(t,me.ns.vcard("street-address"),i.streetAddress,n)),i.locality&&o.push((0,Me.st)(t,me.ns.vcard("locality"),i.locality,n)),i.region&&o.push((0,Me.st)(t,me.ns.vcard("region"),i.region,n)),i.postalCode&&o.push((0,Me.st)(t,me.ns.vcard("postal-code"),i.postalCode,n)),i.countryName&&o.push((0,Me.st)(t,me.ns.vcard("country-name"),i.countryName,n)),o}async function ti(e,n,t){try{await async function(e,n,t){const i=n.doc(),o=e.each(n,me.ns.vcard("hasTelephone"),null,i),a=[],r=[];t.remove.forEach(t=>{if(!t.entryNode)return;const r=Xt(o,t.entryNode);if(r){const t=Zt(e,n,me.ns.vcard("hasTelephone"),i).linkStatements.find(e=>{var n;return(null===(n=e.object)||void 0===n?void 0:n.value)===r.value});t&&a.push(t),a.push(...Vt(e,r,i))}}),t.update.forEach(t=>{if(!t.entryNode)return;const l=Xt(o,t.entryNode);if(!l)return void r.push(...Jt(n,i,Kt(i),t));const s=Zt(e,n,me.ns.vcard("hasTelephone"),i).linkStatements.find(e=>{var n;return(null===(n=e.object)||void 0===n?void 0:n.value)===l.value});s&&a.push(s),a.push(...Vt(e,l,i)),r.push(...Jt(n,i,l,t))}),t.create.forEach(e=>{r.push(...Jt(n,i,Kt(i),e))}),await qt(e,a,r)}(e,n,t.phoneOps),await async function(e,n,t){const i=n.doc(),o=e.each(n,me.ns.vcard("hasEmail"),null,i),a=[],r=[];t.remove.forEach(t=>{if(!t.entryNode)return;const r=Xt(o,t.entryNode);if(r){const t=Zt(e,n,me.ns.vcard("hasEmail"),i).linkStatements.find(e=>{var n;return(null===(n=e.object)||void 0===n?void 0:n.value)===r.value});t&&a.push(t),a.push(...Vt(e,r,i))}}),t.update.forEach(t=>{if(!t.entryNode)return;const l=Xt(o,t.entryNode);l?(a.push(...Vt(e,l,i)),r.push(...ei(n,i,l,t))):r.push(...ei(n,i,Kt(i),t))}),t.create.forEach(e=>{r.push(...ei(n,i,Kt(i),e))}),await qt(e,a,r)}(e,n,t.emailOps),await async function(e,n,t){const i=n.doc(),o=e.each(n,me.ns.vcard("hasAddress"),null,i),a=[],r=[];t.remove.forEach(t=>{if(!t.entryNode)return;const r=Xt(o,t.entryNode);if(r){const t=Zt(e,n,me.ns.vcard("hasAddress"),i).linkStatements.find(e=>{var n;return(null===(n=e.object)||void 0===n?void 0:n.value)===r.value});t&&a.push(t),a.push(...Vt(e,r,i))}}),t.update.forEach(t=>{if(!t.entryNode)return;const l=Xt(o,t.entryNode);l?(a.push(...Vt(e,l,i)),r.push(...ni(n,i,l,t))):r.push(...ni(n,i,Kt(i),t))}),t.create.forEach(e=>{r.push(...ni(n,i,Kt(i),e))}),await qt(e,a,r)}(e,n,t.addressOps)}catch(e){const n=e instanceof Error?e.message:String(e);throw new Error(`Failed to save contact info: ${n}`)}}const ii="+1",oi=[{iso2:"EG",dialCode:"+20",name:"Egypt"},{iso2:"ZA",dialCode:"+27",name:"South Africa"},{iso2:"GR",dialCode:"+30",name:"Greece"},{iso2:"NL",dialCode:"+31",name:"Netherlands"},{iso2:"BE",dialCode:"+32",name:"Belgium"},{iso2:"FR",dialCode:"+33",name:"France"},{iso2:"ES",dialCode:"+34",name:"Spain"},{iso2:"HU",dialCode:"+36",name:"Hungary"},{iso2:"IT",dialCode:"+39",name:"Italy"},{iso2:"RO",dialCode:"+40",name:"Romania"},{iso2:"CH",dialCode:"+41",name:"Switzerland"},{iso2:"AT",dialCode:"+43",name:"Austria"},{iso2:"GG",dialCode:"+44",name:"Guernsey"},{iso2:"IM",dialCode:"+44",name:"Isle of Man"},{iso2:"JE",dialCode:"+44",name:"Jersey"},{iso2:"GB",dialCode:"+44",name:"United Kingdom"},{iso2:"DK",dialCode:"+45",name:"Denmark"},{iso2:"SE",dialCode:"+46",name:"Sweden"},{iso2:"BV",dialCode:"+47",name:"Bouvet Island"},{iso2:"NO",dialCode:"+47",name:"Norway"},{iso2:"PL",dialCode:"+48",name:"Poland"},{iso2:"DE",dialCode:"+49",name:"Germany"},{iso2:"PE",dialCode:"+51",name:"Peru"},{iso2:"MX",dialCode:"+52",name:"Mexico"},{iso2:"CU",dialCode:"+53",name:"Cuba"},{iso2:"AR",dialCode:"+54",name:"Argentina"},{iso2:"BR",dialCode:"+55",name:"Brazil"},{iso2:"CL",dialCode:"+56",name:"Chile"},{iso2:"CO",dialCode:"+57",name:"Colombia"},{iso2:"VE",dialCode:"+58",name:"Venezuela"},{iso2:"MY",dialCode:"+60",name:"Malaysia"},{iso2:"AU",dialCode:"+61",name:"Australia"},{iso2:"CX",dialCode:"+61",name:"Christmas Island"},{iso2:"CC",dialCode:"+61",name:"Cocos (Keeling) Islands"},{iso2:"ID",dialCode:"+62",name:"Indonesia"},{iso2:"PH",dialCode:"+63",name:"Philippines"},{iso2:"NZ",dialCode:"+64",name:"New Zealand"},{iso2:"PN",dialCode:"+64",name:"Pitcairn Islands"},{iso2:"SG",dialCode:"+65",name:"Singapore"},{iso2:"TH",dialCode:"+66",name:"Thailand"},{iso2:"RU",dialCode:"+73",name:"Russia"},{iso2:"KZ",dialCode:"+76",name:"Kazakhstan"},{iso2:"JP",dialCode:"+81",name:"Japan"},{iso2:"KR",dialCode:"+82",name:"South Korea"},{iso2:"VN",dialCode:"+84",name:"Vietnam"},{iso2:"CN",dialCode:"+86",name:"China"},{iso2:"TR",dialCode:"+90",name:"Turkiye"},{iso2:"IN",dialCode:"+91",name:"India"},{iso2:"PK",dialCode:"+92",name:"Pakistan"},{iso2:"AF",dialCode:"+93",name:"Afghanistan"},{iso2:"LK",dialCode:"+94",name:"Sri Lanka"},{iso2:"MM",dialCode:"+95",name:"Myanmar"},{iso2:"IR",dialCode:"+98",name:"Iran"},{iso2:"SS",dialCode:"+211",name:"South Sudan"},{iso2:"MA",dialCode:"+212",name:"Morocco"},{iso2:"DZ",dialCode:"+213",name:"Algeria"},{iso2:"TN",dialCode:"+216",name:"Tunisia"},{iso2:"LY",dialCode:"+218",name:"Libya"},{iso2:"GM",dialCode:"+220",name:"Gambia"},{iso2:"SN",dialCode:"+221",name:"Senegal"},{iso2:"MR",dialCode:"+222",name:"Mauritania"},{iso2:"ML",dialCode:"+223",name:"Mali"},{iso2:"GN",dialCode:"+224",name:"Guinea"},{iso2:"CI",dialCode:"+225",name:"Ivory Coast"},{iso2:"BF",dialCode:"+226",name:"Burkina Faso"},{iso2:"NE",dialCode:"+227",name:"Niger"},{iso2:"TG",dialCode:"+228",name:"Togo"},{iso2:"BJ",dialCode:"+229",name:"Benin"},{iso2:"MU",dialCode:"+230",name:"Mauritius"},{iso2:"LR",dialCode:"+231",name:"Liberia"},{iso2:"SL",dialCode:"+232",name:"Sierra Leone"},{iso2:"GH",dialCode:"+233",name:"Ghana"},{iso2:"NG",dialCode:"+234",name:"Nigeria"},{iso2:"TD",dialCode:"+235",name:"Chad"},{iso2:"CF",dialCode:"+236",name:"Central African Republic"},{iso2:"CM",dialCode:"+237",name:"Cameroon"},{iso2:"CV",dialCode:"+238",name:"Cape Verde"},{iso2:"ST",dialCode:"+239",name:"Sao Tome and Principe"},{iso2:"GQ",dialCode:"+240",name:"Equatorial Guinea"},{iso2:"GA",dialCode:"+241",name:"Gabon"},{iso2:"CG",dialCode:"+242",name:"Congo"},{iso2:"CD",dialCode:"+243",name:"DR Congo"},{iso2:"AO",dialCode:"+244",name:"Angola"},{iso2:"GW",dialCode:"+245",name:"Guinea-Bissau"},{iso2:"IO",dialCode:"+246",name:"British Indian Ocean Territory"},{iso2:"SC",dialCode:"+248",name:"Seychelles"},{iso2:"SD",dialCode:"+249",name:"Sudan"},{iso2:"RW",dialCode:"+250",name:"Rwanda"},{iso2:"ET",dialCode:"+251",name:"Ethiopia"},{iso2:"SO",dialCode:"+252",name:"Somalia"},{iso2:"DJ",dialCode:"+253",name:"Djibouti"},{iso2:"KE",dialCode:"+254",name:"Kenya"},{iso2:"TZ",dialCode:"+255",name:"Tanzania"},{iso2:"UG",dialCode:"+256",name:"Uganda"},{iso2:"BI",dialCode:"+257",name:"Burundi"},{iso2:"MZ",dialCode:"+258",name:"Mozambique"},{iso2:"ZM",dialCode:"+260",name:"Zambia"},{iso2:"MG",dialCode:"+261",name:"Madagascar"},{iso2:"TF",dialCode:"+262",name:"French Southern and Antarctic Lands"},{iso2:"YT",dialCode:"+262",name:"Mayotte"},{iso2:"RE",dialCode:"+262",name:"Reunion"},{iso2:"ZW",dialCode:"+263",name:"Zimbabwe"},{iso2:"NA",dialCode:"+264",name:"Namibia"},{iso2:"MW",dialCode:"+265",name:"Malawi"},{iso2:"LS",dialCode:"+266",name:"Lesotho"},{iso2:"BW",dialCode:"+267",name:"Botswana"},{iso2:"SZ",dialCode:"+268",name:"Eswatini"},{iso2:"UM",dialCode:"+268",name:"United States Minor Outlying Islands"},{iso2:"KM",dialCode:"+269",name:"Comoros"},{iso2:"SH",dialCode:"+290",name:"Saint Helena, Ascension and Tristan da Cunha"},{iso2:"ER",dialCode:"+291",name:"Eritrea"},{iso2:"AW",dialCode:"+297",name:"Aruba"},{iso2:"FO",dialCode:"+298",name:"Faroe Islands"},{iso2:"GL",dialCode:"+299",name:"Greenland"},{iso2:"GI",dialCode:"+350",name:"Gibraltar"},{iso2:"PT",dialCode:"+351",name:"Portugal"},{iso2:"LU",dialCode:"+352",name:"Luxembourg"},{iso2:"IE",dialCode:"+353",name:"Ireland"},{iso2:"IS",dialCode:"+354",name:"Iceland"},{iso2:"AL",dialCode:"+355",name:"Albania"},{iso2:"MT",dialCode:"+356",name:"Malta"},{iso2:"CY",dialCode:"+357",name:"Cyprus"},{iso2:"FI",dialCode:"+358",name:"Finland"},{iso2:"BG",dialCode:"+359",name:"Bulgaria"},{iso2:"LT",dialCode:"+370",name:"Lithuania"},{iso2:"LV",dialCode:"+371",name:"Latvia"},{iso2:"EE",dialCode:"+372",name:"Estonia"},{iso2:"MD",dialCode:"+373",name:"Moldova"},{iso2:"AM",dialCode:"+374",name:"Armenia"},{iso2:"BY",dialCode:"+375",name:"Belarus"},{iso2:"AD",dialCode:"+376",name:"Andorra"},{iso2:"MC",dialCode:"+377",name:"Monaco"},{iso2:"SM",dialCode:"+378",name:"San Marino"},{iso2:"UA",dialCode:"+380",name:"Ukraine"},{iso2:"RS",dialCode:"+381",name:"Serbia"},{iso2:"ME",dialCode:"+382",name:"Montenegro"},{iso2:"XK",dialCode:"+383",name:"Kosovo"},{iso2:"HR",dialCode:"+385",name:"Croatia"},{iso2:"SI",dialCode:"+386",name:"Slovenia"},{iso2:"BA",dialCode:"+387",name:"Bosnia and Herzegovina"},{iso2:"MK",dialCode:"+389",name:"North Macedonia"},{iso2:"CZ",dialCode:"+420",name:"Czechia"},{iso2:"SK",dialCode:"+421",name:"Slovakia"},{iso2:"LI",dialCode:"+423",name:"Liechtenstein"},{iso2:"FK",dialCode:"+500",name:"Falkland Islands"},{iso2:"GS",dialCode:"+500",name:"South Georgia"},{iso2:"BZ",dialCode:"+501",name:"Belize"},{iso2:"GT",dialCode:"+502",name:"Guatemala"},{iso2:"SV",dialCode:"+503",name:"El Salvador"},{iso2:"HN",dialCode:"+504",name:"Honduras"},{iso2:"NI",dialCode:"+505",name:"Nicaragua"},{iso2:"CR",dialCode:"+506",name:"Costa Rica"},{iso2:"PA",dialCode:"+507",name:"Panama"},{iso2:"PM",dialCode:"+508",name:"Saint Pierre and Miquelon"},{iso2:"HT",dialCode:"+509",name:"Haiti"},{iso2:"GP",dialCode:"+590",name:"Guadeloupe"},{iso2:"BL",dialCode:"+590",name:"Saint Barthelemy"},{iso2:"MF",dialCode:"+590",name:"Saint Martin"},{iso2:"BO",dialCode:"+591",name:"Bolivia"},{iso2:"GY",dialCode:"+592",name:"Guyana"},{iso2:"EC",dialCode:"+593",name:"Ecuador"},{iso2:"GF",dialCode:"+594",name:"French Guiana"},{iso2:"PY",dialCode:"+595",name:"Paraguay"},{iso2:"MQ",dialCode:"+596",name:"Martinique"},{iso2:"SR",dialCode:"+597",name:"Suriname"},{iso2:"UY",dialCode:"+598",name:"Uruguay"},{iso2:"BQ",dialCode:"+599",name:"Caribbean Netherlands"},{iso2:"CW",dialCode:"+599",name:"Curacao"},{iso2:"TL",dialCode:"+670",name:"Timor-Leste"},{iso2:"NF",dialCode:"+672",name:"Norfolk Island"},{iso2:"BN",dialCode:"+673",name:"Brunei"},{iso2:"NR",dialCode:"+674",name:"Nauru"},{iso2:"PG",dialCode:"+675",name:"Papua New Guinea"},{iso2:"TO",dialCode:"+676",name:"Tonga"},{iso2:"SB",dialCode:"+677",name:"Solomon Islands"},{iso2:"VU",dialCode:"+678",name:"Vanuatu"},{iso2:"FJ",dialCode:"+679",name:"Fiji"},{iso2:"PW",dialCode:"+680",name:"Palau"},{iso2:"WF",dialCode:"+681",name:"Wallis and Futuna"},{iso2:"CK",dialCode:"+682",name:"Cook Islands"},{iso2:"NU",dialCode:"+683",name:"Niue"},{iso2:"WS",dialCode:"+685",name:"Samoa"},{iso2:"KI",dialCode:"+686",name:"Kiribati"},{iso2:"NC",dialCode:"+687",name:"New Caledonia"},{iso2:"TV",dialCode:"+688",name:"Tuvalu"},{iso2:"PF",dialCode:"+689",name:"French Polynesia"},{iso2:"TK",dialCode:"+690",name:"Tokelau"},{iso2:"FM",dialCode:"+691",name:"Micronesia"},{iso2:"MH",dialCode:"+692",name:"Marshall Islands"},{iso2:"KP",dialCode:"+850",name:"North Korea"},{iso2:"HK",dialCode:"+852",name:"Hong Kong"},{iso2:"MO",dialCode:"+853",name:"Macau"},{iso2:"KH",dialCode:"+855",name:"Cambodia"},{iso2:"LA",dialCode:"+856",name:"Laos"},{iso2:"BD",dialCode:"+880",name:"Bangladesh"},{iso2:"TW",dialCode:"+886",name:"Taiwan"},{iso2:"MV",dialCode:"+960",name:"Maldives"},{iso2:"LB",dialCode:"+961",name:"Lebanon"},{iso2:"JO",dialCode:"+962",name:"Jordan"},{iso2:"SY",dialCode:"+963",name:"Syria"},{iso2:"IQ",dialCode:"+964",name:"Iraq"},{iso2:"KW",dialCode:"+965",name:"Kuwait"},{iso2:"SA",dialCode:"+966",name:"Saudi Arabia"},{iso2:"YE",dialCode:"+967",name:"Yemen"},{iso2:"OM",dialCode:"+968",name:"Oman"},{iso2:"PS",dialCode:"+970",name:"Palestine"},{iso2:"AE",dialCode:"+971",name:"United Arab Emirates"},{iso2:"IL",dialCode:"+972",name:"Israel"},{iso2:"BH",dialCode:"+973",name:"Bahrain"},{iso2:"QA",dialCode:"+974",name:"Qatar"},{iso2:"BT",dialCode:"+975",name:"Bhutan"},{iso2:"MN",dialCode:"+976",name:"Mongolia"},{iso2:"NP",dialCode:"+977",name:"Nepal"},{iso2:"TJ",dialCode:"+992",name:"Tajikistan"},{iso2:"TM",dialCode:"+993",name:"Turkmenistan"},{iso2:"AZ",dialCode:"+994",name:"Azerbaijan"},{iso2:"GE",dialCode:"+995",name:"Georgia"},{iso2:"KG",dialCode:"+996",name:"Kyrgyzstan"},{iso2:"UZ",dialCode:"+998",name:"Uzbekistan"},{iso2:"US",dialCode:"+1201",name:"United States"},{iso2:"CA",dialCode:"+1204",name:"Canada"},{iso2:"BS",dialCode:"+1242",name:"Bahamas"},{iso2:"BB",dialCode:"+1246",name:"Barbados"},{iso2:"AI",dialCode:"+1264",name:"Anguilla"},{iso2:"AG",dialCode:"+1268",name:"Antigua and Barbuda"},{iso2:"VG",dialCode:"+1284",name:"British Virgin Islands"},{iso2:"VI",dialCode:"+1340",name:"United States Virgin Islands"},{iso2:"KY",dialCode:"+1345",name:"Cayman Islands"},{iso2:"BM",dialCode:"+1441",name:"Bermuda"},{iso2:"GD",dialCode:"+1473",name:"Grenada"},{iso2:"TC",dialCode:"+1649",name:"Turks and Caicos Islands"},{iso2:"MS",dialCode:"+1664",name:"Montserrat"},{iso2:"MP",dialCode:"+1670",name:"Northern Mariana Islands"},{iso2:"GU",dialCode:"+1671",name:"Guam"},{iso2:"AS",dialCode:"+1684",name:"American Samoa"},{iso2:"SX",dialCode:"+1721",name:"Sint Maarten"},{iso2:"LC",dialCode:"+1758",name:"Saint Lucia"},{iso2:"DM",dialCode:"+1767",name:"Dominica"},{iso2:"VC",dialCode:"+1784",name:"Saint Vincent and the Grenadines"},{iso2:"PR",dialCode:"+1787",name:"Puerto Rico"},{iso2:"DO",dialCode:"+1809",name:"Dominican Republic"},{iso2:"TT",dialCode:"+1868",name:"Trinidad and Tobago"},{iso2:"KN",dialCode:"+1869",name:"Saint Kitts and Nevis"},{iso2:"JM",dialCode:"+1876",name:"Jamaica"},{iso2:"SJ",dialCode:"+4779",name:"Svalbard and Jan Mayen"},{iso2:"AX",dialCode:"+35818",name:"Aland Islands"},{iso2:"EH",dialCode:"+2125288",name:"Western Sahara"},{iso2:"VA",dialCode:"+3906698",name:"Vatican City"}],ai=new Set(["AQ","AX","BL","BM","BQ","BV","CC","CK","CP","CW","CX","EH","FK","FO","GF","GG","GI","GL","GP","GS","GU","HK","HM","IM","IO","JE","KY","MF","MO","MP","MQ","MS","NC","NF","NU","PF","PM","PN","PR","RE","SH","SJ","TC","TF","TK","UM","VG","VI","WF","YT"]);function ri(e){return/^\+1\d{3,}$/.test(e)?"+1":/^\+7\d+$/.test(e)?"+7":/^\+39\d{3,}$/.test(e)?"+39":/^\+358\d+$/.test(e)?"+358":/^\+47\d+$/.test(e)?"+47":/^\+212\d+$/.test(e)?"+212":e}const li=[...oi.filter(e=>!ai.has(e.iso2)).map(e=>({...e,dialCode:ri(e.dialCode)})).filter((e,n,t)=>{const i=`${e.iso2}|${e.dialCode}`;return t.findIndex(e=>`${e.iso2}|${e.dialCode}`===i)===n})].sort((e,n)=>{const t=Number.parseInt(e.dialCode.replace("+",""),10),i=Number.parseInt(n.dialCode.replace("+",""),10);return t!==i?t-i:e.name.localeCompare(n.name)}),si={"+1":"US","+7":"RU"},di=Array.from(li.reduce((e,n)=>{if(!e.get(n.dialCode))return e.set(n.dialCode,n),e;const t=si[n.dialCode];return t&&n.iso2===t&&e.set(n.dialCode,n),e},new Map).values()),ci=Array.from(new Set(oi.map(e=>e.dialCode))).sort((e,n)=>n.length-e.length);function Ai(e){const n=e.trim();if(!n)return{dialCode:ii,localNumber:""};if(!n.startsWith("+"))return{dialCode:ii,localNumber:n};const t=ci.find(e=>n.startsWith(e));if(!t)return{dialCode:ii,localNumber:n};const i=ri(t),o=n.slice(t.length),a=n.slice(i.length);return{dialCode:di.some(e=>e.dialCode===i)?i:ii,localNumber:t.length>i.length?a:o}}function pi(e,n){const t=n.trim();return t?t.startsWith("+")?t:`${e}${t}`:""}function ui(e){if(!e)return"";if("string"==typeof e)return e;if("object"==typeof e&&"value"in e){const n=e.value;return"string"==typeof n?n:""}return""}function fi(e){const n=ui(e).trim();if(!n)return"";const t=n.replace(/^<|>$/g,"").split("#"),i=t[t.length-1].split("/");return i[i.length-1]}function mi(e){return e.replace(/[\u0000-\u001F\u007F]/g," ").replace(/\s+/g," ").trim()}function gi(e){return Boolean(e&&""!==e.trim())}function hi(e){const n=fi(e).trim().toLowerCase();return n?"cell"===n||"mobile"===n?"Mobile":"home"===n?"Home":"work"===n||"office"===n?"Work":"":""}function Ci(e){const n=fi(e).trim().toLowerCase();return n?"cell"===n||"mobile"===n?"Cell":"home"===n?"Home":"work"===n||"office"===n?"Work":"":""}function bi(e){const n=fi(e).trim().toLowerCase();return n?"personal"===n||"home"===n?"Personal":"office"===n||"work"===n?"Office":"":""}function Ei(e){const n=fi(e).trim().toLowerCase();return n?"personal"===n||"home"===n?"Home":"office"===n||"work"===n?"Office":"":""}function _i(e,n){const t=e[n];t&&(t.entryNode?t.status="deleted":e.splice(n,1))}function vi(e,n,t){e[n]=t.trim(),e.entryNode?e.status="existing"===e.status||"deleted"===e.status?"modified":e.status:e.status="new"}function wi(e,n){return{create:e.filter(e=>"new"===e.status&&n(e)),update:e.filter(e=>"modified"===e.status&&n(e)),remove:e.filter(e=>"deleted"===e.status)}}function yi(e,n,t,i){e[n]=t,i(e)?e.entryNode?e.status="existing"===e.status||"deleted"===e.status?"modified":e.status:e.status="new":e.status=e.entryNode?"deleted":"new"}function Bi(e){return mi(e).replace(/\s+/g,"").toLowerCase()}function xi(e){return mi(e).replace(/[^0-9()\-\s.]/g,"")}function ki(e){return mi(e)}function Ii(e){return mi(e)}const $i=X`
310
+ <svg xmlns="http://www.w3.org/2000/svg"
311
+ width="16"
312
+ height="16"
313
+ viewBox="0 0 16 16"
314
+ fill="none"
315
+ aria-hidden="true"
316
+ focusable="false"
317
+ >
318
+ <path d="M9.22198 11.0453C9.35967 11.1085 9.51478 11.1229 9.66178 11.0862C9.80877 11.0495 9.93887 10.9638 10.0307 10.8433L10.2673 10.5333C10.3915 10.3677 10.5526 10.2333 10.7377 10.1407C10.9228 10.0481 11.127 9.99992 11.334 9.99992H13.334C13.6876 9.99992 14.0267 10.1404 14.2768 10.3904C14.5268 10.6405 14.6673 10.9796 14.6673 11.3333V13.3333C14.6673 13.6869 14.5268 14.026 14.2768 14.2761C14.0267 14.5261 13.6876 14.6666 13.334 14.6666C10.1514 14.6666 7.09914 13.4023 4.8487 11.1519C2.59827 8.90143 1.33398 5.84918 1.33398 2.66659C1.33398 2.31296 1.47446 1.97382 1.72451 1.72378C1.97456 1.47373 2.3137 1.33325 2.66732 1.33325H4.66732C5.02094 1.33325 5.36008 1.47373 5.61013 1.72378C5.86017 1.97382 6.00065 2.31296 6.00065 2.66659V4.66659C6.00065 4.87358 5.95246 5.07773 5.85989 5.26287C5.76732 5.44801 5.63291 5.60906 5.46732 5.73325L5.15532 5.96725C5.03293 6.0607 4.94666 6.19364 4.91118 6.34349C4.87569 6.49333 4.89317 6.65084 4.96065 6.78925C5.87177 8.63983 7.37027 10.1364 9.22198 11.0453Z" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
319
+ </svg>
320
+ `,Si=X`
321
+ <svg xmlns="http://www.w3.org/2000/svg"
322
+ width="16"
323
+ height="16"
324
+ viewBox="0 0 16 16"
325
+ fill="none"
326
+ aria-hidden="true"
327
+ focusable="false"
328
+ >
329
+ <path d="M14.6673 4.66675L8.67332 8.48475C8.46991 8.60289 8.23888 8.66512 8.00365 8.66512C7.76843 8.66512 7.53739 8.60289 7.33398 8.48475L1.33398 4.66675" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
330
+ <path d="M13.334 2.66675H2.66732C1.93094 2.66675 1.33398 3.2637 1.33398 4.00008V12.0001C1.33398 12.7365 1.93094 13.3334 2.66732 13.3334H13.334C14.0704 13.3334 14.6673 12.7365 14.6673 12.0001V4.00008C14.6673 3.2637 14.0704 2.66675 13.334 2.66675Z" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
331
+ </svg>
332
+ `;function Di(e){return function(e){return"value"in e}(e)?gi(e.value):[e.streetAddress,e.locality,e.region,e.postalCode,e.countryName].some(gi)}function Ni(e,n){const t=e.map((e,n)=>({phone:e,index:n})).filter(({phone:e})=>"deleted"!==e.status);return X`
333
+ <section
334
+ aria-labelledby="phone-numbers-heading"
335
+ class="profile-edit-dialog__section">
336
+ <header class="profile__section-header">
337
+ <h3 id="phone-numbers-heading" class="profile-edit-dialog__section-heading">
338
+ <span class="sectionTitleIcon" aria-hidden="true">${$i}</span>
339
+ Phone Numbers
340
+ </h3>
341
+ <button
342
+ type="button"
343
+ class="profile__action-button profile-action-text flex-center"
344
+ aria-label="Add another phone number"
345
+ @click=${t=>{t.preventDefault(),e.unshift({value:"",type:"",entryNode:"",status:"new"}),n({focusSelector:'[name="phone-value-0"]'})}}
346
+ >
347
+ <span class="profile__add-more-content inline-flex-row">
348
+ <span class="profile__add-more-icon inline-flex-row" aria-hidden="true">${Xe}</span>
349
+ Add More
350
+ </span>
351
+ </button>
47
352
  </header>
48
-
49
- <section class="intro text-center" aria-label="About">
50
- ${ye(t,"","About")}
51
- ${ye(i,"🌐","Location")}
52
- ${ye(o,"","Pronouns")}
53
- </section>
54
-
55
- <section class="buttonSection text-center" aria-label="Actions">
56
- ${((n,e)=>{Wn=e.dom.createElement("section"),Wn.setAttribute("class","buttonSubSection text-truncate text-center section-centered"),Wn.setAttribute("aria-labelledby","add-me-to-your-friends-button-section"),Wn.setAttribute("data-testid","button");const t=e.dom.createElement("h3");t.setAttribute("id","add-me-to-your-friends-button-section"),t.setAttribute("class","sr-only"),t.textContent="Add me to your friends actions",Wn.appendChild(t);const i=Vn(n,e);return i.classList.add("actionButton","btn-primary","action-button-focus"),Wn.appendChild(i),nn`${Wn}`})(l,s)}
57
- </section>
58
-
59
- <div class="qrCodeSection section-centered">
60
- ${ve(r,a,l)}
353
+ <fieldset>
354
+ <legend class="sr-only">Phone number entries</legend>
355
+ ${t.map(({index:t},i)=>function({phones:e,index:n,displayIndex:t,onDelete:i}){const o=e[n],a=`Phone Number ${t+1}`,r=`Phone Type ${t+1}`,l=`phone-value-${n}`,s=`phone-type-${n}`,d=Ai((null==o?void 0:o.value)||"");let c=d.dialCode;return X`
356
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--contact-point">
357
+ <div class="profile-edit-dialog__field">
358
+ <label aria-label=${a} class="label">
359
+ <input
360
+ class="input"
361
+ type="tel"
362
+ name=${l}
363
+ .value=${d.localNumber}
364
+ required
365
+ data-contact-field="value"
366
+ data-entry-node=${(null==o?void 0:o.entryNode)||""}
367
+ data-row-status=${(null==o?void 0:o.status)||"n/a"}
368
+ placeholder="Phone Number"
369
+ autocomplete="tel-national"
370
+ inputmode="tel"
371
+ @input=${t=>{const i=xi(t.target.value);e[n]&&yi(e[n],"value",pi(c,i),Di)}}
372
+ />
373
+ </label>
374
+ </div>
375
+ <label aria-label=${r} class="label profile-edit-dialog__field-type profile-edit-dialog__phone-type-row">
376
+ <select name=${s} id="phone-type-select-${l}" @change=${t=>{const i=t.target.value;e[n]&&vi(e[n],"type",i)}} .value=${(null==o?void 0:o.type)||""}>
377
+ <option value="Cell">Mobile</option>
378
+ <option value="Home">Home</option>
379
+ <option value="Work">Work</option>
380
+ </select>
381
+ </label>
382
+ <div class="profile-edit-dialog__actions">
383
+ <button
384
+ type="button"
385
+ class="profile-edit-dialog__delete-button"
386
+ aria-label=${`Delete phone number ${t+1}`}
387
+ title=${ve}
388
+ @click=${e=>{e.preventDefault(),i()}}
389
+ >
390
+ <span class="profile-edit-dialog__delete-icon" aria-hidden="true">${Ve}</span>
391
+ </button>
61
392
  </div>
62
- </article>
63
- `,ye=(n,e=tn,t="")=>n?nn`
64
- <div class="details" role="text" ${t?`aria-label="${t}: ${n}"`:""}>
65
- ${e} ${n}
66
393
  </div>
67
- `:tn,xe=(n,e)=>n?nn`
68
- <img
69
- class="image"
70
- src=${n}
71
- alt="Profile photo of ${e}"
72
- width="160"
73
- height="160"
74
- loading="eager"
394
+ `}({phones:e,index:t,displayIndex:i,onDelete:()=>{_i(e,t),n()}}))}
395
+ </fieldset>
396
+ </section>
397
+ `}function Ti(e,n){const t=e.map((e,n)=>({email:e,index:n})).filter(({email:e})=>"deleted"!==e.status);return X`
398
+ <section
399
+ aria-labelledby="email-addresses-heading"
400
+ class="profile-edit-dialog__section">
401
+ <header class="profile__section-header">
402
+ <h3 id="email-addresses-heading" class="profile-edit-dialog__section-heading">
403
+ <span class="sectionTitleIcon" aria-hidden="true">${Si}</span>
404
+ Email Addresses
405
+ </h3>
406
+ <button
407
+ type="button"
408
+ class="profile__action-button profile-action-text flex-center"
409
+ aria-label="Add another email address"
410
+ @click=${t=>{t.preventDefault(),e.unshift({value:"",type:"",entryNode:"",status:"new"}),n({focusSelector:'[name="email-value-0"]'})}}
411
+ >
412
+ <span class="profile__add-more-content inline-flex-row">
413
+ <span class="profile__add-more-icon inline-flex-row" aria-hidden="true">${Xe}</span>
414
+ Add More
415
+ </span>
416
+ </button>
417
+ </header>
418
+ <fieldset>
419
+ <legend class="sr-only">Email address entries</legend>
420
+ ${t.map(({index:t},i)=>function({emails:e,index:n,displayIndex:t,onDelete:i}){const o=e[n],a=`Email Type ${t+1}`,r=`email-value-${n}`,l=`email-type-${n}`;return X`
421
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--contact-point">
422
+ <label aria-label=${`Email Address ${t+1}`} class="label profile-edit-dialog__field">
423
+ <input
424
+ class="input"
425
+ type="email"
426
+ name=${r}
427
+ .value=${(null==o?void 0:o.value)||""}
428
+ required
429
+ data-contact-field="value"
430
+ data-entry-node=${(null==o?void 0:o.entryNode)||""}
431
+ data-row-status=${(null==o?void 0:o.status)||"n/a"}
432
+ placeholder="Email Address"
433
+ autocomplete="email"
434
+ inputmode="email"
435
+ @input=${t=>{const i=Bi(t.target.value);e[n]&&yi(e[n],"value",i,Di)}}
436
+ />
437
+ </label>
438
+ <label aria-label=${a} class="label profile-edit-dialog__field-type emailTypeRow">
439
+ <select name=${l} id="email-type-select-${r}" @change=${t=>{const i=t.target.value;e[n]&&vi(e[n],"type",i)}} .value=${(null==o?void 0:o.type)||""}>
440
+ <option value="Home">Personal</option>
441
+ <option value="Office">Office</option>
442
+ </select>
443
+ </label>
444
+ <div class="profile-edit-dialog__actions">
445
+ <button
446
+ type="button"
447
+ class="profile-edit-dialog__delete-button"
448
+ aria-label=${`Delete email address ${t+1}`}
449
+ title=${ve}
450
+ @click=${e=>{e.preventDefault(),i()}}
451
+ >
452
+ <span class="profile-edit-dialog__delete-icon" aria-hidden="true">${Ve}</span>
453
+ </button>
454
+ </div>
455
+ </div>
456
+ `}({emails:e,index:t,displayIndex:i,onDelete:()=>{_i(e,t),n()}}))}
457
+ </fieldset>
458
+ </section>
459
+ `}function ji(e,n){const t=e.map((e,n)=>({address:e,index:n})).filter(({address:e})=>"deleted"!==e.status);return X`
460
+ <section
461
+ aria-labelledby="address-heading"
462
+ class="profile-edit-dialog__section">
463
+ <header class="profile__section-header">
464
+ <h3 id="address-heading" class="profile-edit-dialog__section-heading">
465
+ <span class="sectionTitleIcon" aria-hidden="true">${Ue}</span>
466
+ Addresses
467
+ </h3>
468
+ <button
469
+ type="button"
470
+ class="profile__action-button profile-action-text flex-center"
471
+ aria-label="Add another address"
472
+ @click=${t=>{t.preventDefault(),e.unshift({streetAddress:"",locality:"",region:"",postalCode:"",countryName:"",type:"",entryNode:"",status:"new"}),n({focusSelector:'[name="address-street-0"]'})}}
473
+ >
474
+ <span class="profile__add-more-content inline-flex-row">
475
+ <span class="profile__add-more-icon inline-flex-row" aria-hidden="true">${Xe}</span>
476
+ Add More
477
+ </span>
478
+ </button>
479
+ </header>
480
+ <fieldset>
481
+ <legend class="sr-only">Address entries</legend>
482
+ ${t.map(({index:t},i)=>function({addresses:e,index:n,displayIndex:t,onDelete:i}){const o=e[n],a=`Address ${t+1}`,r=`address-street-${n}`,l=`address-locality-${n}`,s=`address-region-${n}`,d=`address-postal-${n}`,c=`address-country-${n}`,A=t=>i=>{const o=ki(i.target.value);e[n]&&yi(e[n],t,o,Di)};return X`
483
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--address-header profile-edit-dialog__row--full">
484
+ <p class="profile-edit-dialog__address-title">${a}</p>
485
+ <label aria-label=${`Address Type ${t+1}`} class="label profile-edit-dialog__field-type profile-edit-dialog__field-type--wide hidden">
486
+ Address Type
487
+ <select name=${`address-type-${n}`} id=${`address-type-select-${n}`} @change=${t=>{const i=t.target.value;e[n]&&vi(e[n],"type",i)}} .value=${(null==o?void 0:o.type)||""}>
488
+ <option value="Home">Home</option>
489
+ <option value="Work">Work</option>
490
+ </select>
491
+ </label>
492
+ <div class="profile-edit-dialog__actions profile-edit-dialog__actions--edge">
493
+ <button
494
+ type="button"
495
+ class="profile-edit-dialog__delete-button"
496
+ aria-label=${`Delete address ${t+1}`}
497
+ title=${ve}
498
+ @click=${e=>{e.preventDefault(),i()}}
499
+ >
500
+ <span class="profile-edit-dialog__delete-icon" aria-hidden="true">${Ve}</span>
501
+ </button>
502
+ </div>
503
+ </div>
504
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--full">
505
+ <label aria-label=${`${a} Street`} class="label profile-edit-dialog__field profile-edit-dialog__field--full">
506
+ Street Address
507
+ <input
508
+ class="input"
509
+ type="text"
510
+ name=${r}
511
+ .value=${(null==o?void 0:o.streetAddress)||""}
512
+ required
513
+ data-contact-field="streetAddress"
514
+ data-entry-node=${(null==o?void 0:o.entryNode)||""}
515
+ data-row-status=${(null==o?void 0:o.status)||"n/a"}
516
+ placeholder="Street Address"
517
+ autocomplete="street-address"
518
+ inputmode="text"
519
+ @change=${A("streetAddress")}
520
+ />
521
+ </label>
522
+ </div>
523
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--full profile-edit-dialog__row--equal">
524
+ <label aria-label=${`${a} Locality`} class="label profile-edit-dialog__field">
525
+ Locality
526
+ <input
527
+ class="input"
528
+ type="text"
529
+ name=${l}
530
+ .value=${(null==o?void 0:o.locality)||""}
531
+ data-contact-field="locality"
532
+ data-entry-node=${(null==o?void 0:o.entryNode)||""}
533
+ data-row-status=${(null==o?void 0:o.status)||"n/a"}
534
+ placeholder="City / Locality"
535
+ autocomplete="address-level2"
536
+ inputmode="text"
537
+ @change=${A("locality")}
538
+ />
539
+ </label>
540
+ <label aria-label=${`${a} Postal Code`} class="label profile-edit-dialog__field">
541
+ Postal Code
542
+ <input
543
+ class="input"
544
+ type="text"
545
+ name=${d}
546
+ .value=${(null==o?void 0:o.postalCode)||""}
547
+ data-contact-field="postalCode"
548
+ data-entry-node=${(null==o?void 0:o.entryNode)||""}
549
+ data-row-status=${(null==o?void 0:o.status)||"n/a"}
550
+ placeholder="Postal Code"
551
+ autocomplete="postal-code"
552
+ inputmode="text"
553
+ @change=${A("postalCode")}
554
+ />
555
+ </label>
556
+ </div>
557
+
558
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--full profile-edit-dialog__row--equal">
559
+ <label aria-label=${`${a} Region`} class="label profile-edit-dialog__field">
560
+ Region
561
+ <input
562
+ class="input"
563
+ type="text"
564
+ name=${s}
565
+ .value=${(null==o?void 0:o.region)||""}
566
+ data-contact-field="region"
567
+ data-entry-node=${(null==o?void 0:o.entryNode)||""}
568
+ data-row-status=${(null==o?void 0:o.status)||"n/a"}
569
+ placeholder="State / Region"
570
+ autocomplete="address-level1"
571
+ inputmode="text"
572
+ @change=${A("region")}
573
+ />
574
+ </label>
575
+ <label aria-label=${`${a} Country`} class="label profile-edit-dialog__field">
576
+ Country
577
+ <input
578
+ class="input"
579
+ type="text"
580
+ name=${c}
581
+ .value=${(null==o?void 0:o.countryName)||""}
582
+ data-contact-field="countryName"
583
+ data-entry-node=${(null==o?void 0:o.entryNode)||""}
584
+ data-row-status=${(null==o?void 0:o.status)||"n/a"}
585
+ placeholder="Country"
586
+ autocomplete="country-name"
587
+ inputmode="text"
588
+ @change=${A("countryName")}
75
589
  />
76
- `:nn`
77
- <div class="image-alt" role="img" aria-label="${e}" tabindex="0">
78
- ${e}
590
+ </label>
591
+ </div>
592
+ `}({addresses:e,index:t,displayIndex:i,onDelete:()=>{_i(e,t),n()}}))}
593
+ </fieldset>
594
+ </section>
595
+ `}function zi(e,n,t,i={}){const o=(i={})=>zi(e,n,t,i);ue(X`
596
+ ${Ni(n.phones,o)}
597
+ ${Ti(n.emails,o)}
598
+ ${ji(n.addresses,o)}
599
+ ${"owner"!==t?X`<p class="profile-edit-dialog__login-message">${we}</p>`:null}
600
+ `,e),i.focusSelector&&function(e,n){const t=e.querySelector(n);t&&"function"==typeof t.focus&&(t.scrollIntoView({block:"nearest",behavior:"auto"}),t.focus(),(t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement)&&t.select())}(e,i.focusSelector)}function Fi(e,n){const t=document.createElement("form");t.classList.add("profile__edit-form"),t.classList.add("profile__edit-form--contact-info");const i=function(e){const n=(e.emails||[]).map(e=>({value:Bi(ui(e.valueNode).replace(/^mailto:/i,"")),type:Ei(e.type),entryNode:ui(e.entryNode),status:ui(e.entryNode)?"existing":"new"})).filter(e=>Boolean(e.value||e.entryNode||e.type)),t=(e.phones||[]).map(e=>({value:mi(ui(e.valueNode).replace(/^tel:/i,"")),type:Ci(e.type),entryNode:ui(e.entryNode),status:"existing"})).filter(e=>Boolean(e.value)),i=(e.addresses||[]).map(e=>({streetAddress:ki(ui(e.streetAddress)),locality:ki(ui(e.locality)),region:ki(ui(e.region)),postalCode:ki(ui(e.postalCode)),countryName:ki(ui(e.countryName)),type:ui(e.type),entryNode:ui(e.entryNode),status:ui(e.entryNode)?"existing":"new"})).filter(e=>Di(e)||Boolean(e.entryNode||e.type));return{emails:n.length?n:[{value:"",type:"",entryNode:"",status:"new"}],phones:t.length?t:[{value:"",type:"",entryNode:"",status:"new"}],addresses:i.length?i:[{streetAddress:"",locality:"",region:"",postalCode:"",countryName:"",type:"",entryNode:"",status:"new"}]}}(e);return zi(t,i,n),{form:t,formState:i}}async function Pi(e,n,t,i,o,a){var r;const l=(null===(r=e.currentTarget)||void 0===r?void 0:r.ownerDocument)||document,{form:s,formState:d}=Fi(i,o);await Wt({title:"Edit More Contacts",dom:l,form:s,headerAction:{type:"close"},submitLabel:Ee,cancelLabel:_e,validate:()=>"owner"!==o?we:function(e){const n=wi(e.phones,Di),t=wi(e.emails,Di),i=wi(e.addresses,Di);return n.create.length>0||n.update.length>0||n.remove.length>0||t.create.length>0||t.update.length>0||t.remove.length>0||i.create.length>0||i.update.length>0||i.remove.length>0?null:"No contact info changes detected."}(d),onSave:async()=>{const e={phoneOps:wi(d.phones,Di),emailOps:wi(d.emails,Di),addressOps:wi(d.addresses,Di)};await ti(n,t,e)},formatSaveError:e=>{const n=e instanceof Error?e.message:String(e);return`${ye} ${n}`}})&&a&&await a()}let Li=!1;function Mi(e){return e?"string"==typeof e?e:e.value||"":""}function Wi(){"undefined"!=typeof window&&(window.requestAnimationFrame(()=>function(e=document){[{wrap:".cvDescriptionWrap",text:".cvDescriptionText",toggle:".cvDescriptionToggle"},{wrap:".bioDescriptionWrap",text:".bioDescriptionText",toggle:".bioDescriptionToggle"}].forEach(({wrap:n,text:t,toggle:i})=>{e.querySelectorAll(n).forEach(e=>{const n=e.querySelector(t),o=e.querySelector(i);if(!n||!o)return;if(n.classList.contains("isExpanded"))return void(o.hidden=!1);const a=n.scrollHeight>n.clientHeight+1;o.hidden=!a,a||(o.setAttribute("aria-expanded","false"),o.textContent="...more")})})}(window.document)),Li||(window.addEventListener("resize",()=>Wi()),Li=!0))}function Ri(e){var n,t;e.preventDefault(),e.stopPropagation(),null===(t=(n=e).stopImmediatePropagation)||void 0===t||t.call(n);const i=e.currentTarget;if(!i)return;const o=i.getAttribute("aria-controls");if(!o)return;const a=document.getElementById(o);if(!a)return;const r=a.classList.toggle("isExpanded");i.setAttribute("aria-expanded",r?"true":"false"),i.textContent=r?"...less":"...more",r||Wi()}function Ui(e){const n=Mi(e);if(!n)return"";const t=n.slice(0,4),i=n.slice(5,7),o=Number(i)-1;return!t||o<0||o>11?n:`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][o]}, ${t}`}function Hi(e){const n=Mi(e);if(n)return n.slice(0,7)}function Yi(e){const n=e.currentTarget,t=null==n?void 0:n.closest(".profile-section-collapsible"),i=null==t?void 0:t.querySelector(".profile-section-collapsible__content");if(!n||!t||!i)return;const o="true"!==t.getAttribute("data-expanded");t.setAttribute("data-expanded",String(o)),n.setAttribute("aria-expanded",String(o)),i.setAttribute("aria-hidden",String(!o)),o&&"undefined"!=typeof window&&window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{Wi()})})}function Oi(e){if(!e)return"";if("string"==typeof e)return e;if("object"==typeof e&&"value"in e){const n=e.value;return"string"==typeof n?n:""}return""}function qi(e,n){return e?"email"===n?e.replace(/^mailto:/i,""):e.replace(/^tel:/i,""):""}function Vi(e,n,t){if(!n)return"";const i=Oi(n.valueNode||n.entryNode).trim();if("email"===t?/^mailto:/i.test(i)||/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(i):/^tel:/i.test(i)||/^[+()\-\s\d]{5,}$/.test(i))return qi(i,t);const o=n.entryNode||n.valueNode;if(o){const n=Oi(e.any(o,me.ns.vcard("value"))).trim();if(n)return qi(n,t)}return qi(i,t)}function Qi(e,n){return e&&e.length&&e[0]?X`${function(e,n){if(!e)return X``;const t=Vi(n,e,"phone"),i=hi(e.type);return X`<li class="contact-info__item flex gap-2xs" role="listitem">
601
+ <div class="contact-info__icon-wrapper flex-center">
602
+ <span class="contact-info__icon" aria-hidden="true">${$i}</span>
79
603
  </div>
80
- `,ke=n=>{const{rolesByType:e,skills:t,languages:i}=n,o=e.FutureRole||[],r=e.CurrentRole||[],a=e.PastRole||[],s=t||[],l=i||[],d=Array.isArray(o)&&o.length>0,c=Array.isArray(r)&&r.length>0,A=Array.isArray(a)&&a.length>0,u=Array.isArray(s)&&s.length>0,p=Array.isArray(l)&&l.length>0;return d||c||A||u||p?nn`
81
- <article class="cvCard" aria-label="Resume" data-testid="curriculum-vitae">
82
- ${d?nn`
83
- <section class="cvSection" aria-labelledby="cv-future-heading">
84
- <h3 id="cv-future-heading">Future Roles</h3>
85
- <ul role="list" aria-label="Upcoming work experience">
86
- ${Se(o,!0)}
87
- </ul>
88
- </section>
89
- `:""}
90
-
91
- ${c?nn`
92
- <section class="cvSection" aria-labelledby="cv-current-heading">
93
- <h3 id="cv-current-heading">Current Roles</h3>
94
- <ul role="list" aria-label="Current work experience">
95
- ${Se(r,!0)}
96
- </ul>
97
- </section>
98
- `:""}
99
-
100
- ${A?nn`
101
- <section class="cvSection" aria-labelledby="cv-past-heading">
102
- <h3 id="cv-past-heading">Past Roles</h3>
103
- <ul role="list" aria-label="Previous work experience">
104
- ${Se(a,!0)}
105
- </ul>
106
- </section>
107
- `:""}
108
-
109
- ${u?nn`
110
- <section class="cvSection" aria-labelledby="cv-skills-heading">
111
- <h3 id="cv-skills-heading">Skills</h3>
112
- <ul role="list" aria-label="Professional skills and competencies">
113
- ${Fe(s,!0)}
114
- </ul>
115
- </section>
116
- `:""}
117
-
118
- ${p?nn`
119
- <section class="cvSection" aria-labelledby="cv-languages-heading">
120
- <h3 id="cv-languages-heading">Languages</h3>
121
- <ul role="list" aria-label="Known languages">
122
- ${$e(l,!0)}
123
- </ul>
124
- </section>
125
- `:""}
126
- </article>
127
- `:nn``};function Se(n,e=!1){return n&&n.length&&n[0]?nn`${function(n,e=!1){return n&&e?nn`
128
- <li class="cvRole" role="listitem">
129
- <strong class="cvOrg" aria-label="Organization">${n.orgName}</strong>
130
- <span aria-label="Role title">${Ie(n.roleText)}</span>
131
- <time aria-label="Employment period">${n.dates}</time>
132
- </li>`:nn``}(n[0],e)}${n.length>1?Se(n.slice(1),e):nn``}`:nn``}function Fe(n,e=!1){return n&&n.length&&n[0]?nn`${function(n,e=!1){return n&&e?nn`<li class="cvSkill">${Ie(n)}</li>`:nn``}(n[0],e)}${n.length>1?Fe(n.slice(1),e):nn``}`:nn``}function $e(n,e=!1){return n&&n.length&&n[0]?nn`${function(n,e=!1){return n&&e?nn`<li class="cvLanguage">${n}</li>`:nn``}(n[0],e)}${n.length>1?$e(n.slice(1),e):nn``}`:nn``}function Ie(n){if(n&&n[0]>""){const e=n.split(" ");for(let n=0;n<e.length;n++)e[n]=e[n].charAt(0).toUpperCase()+e[n].substring(1);return e.join(" ")}return""}const Te=n=>{const{accounts:e}=n;if(e.length)return nn`
133
- <section
134
- class="socialCard"
135
- aria-labelledby="social-card-title"
136
- data-testid="social-media"
604
+ <div class="flex-column">
605
+ <span class="contact-info__contact-point-value">${t}</span>
606
+ ${i?X`<span class="contact-info__contact-point-type"> ${i}</span>`:X``}
607
+ </div>
608
+ </li>`}(e[0],n)}${e.length>1?Qi(e.slice(1),n):X``}`:X``}function Zi(e,n){return e&&e.length&&e[0]?X`${function(e,n){if(!e)return X``;const t=Vi(n,e,"email"),i=bi(e.type);return X`<li class="contact-info__item flex gap-2xs" role="listitem">
609
+ <div class="contact-info__icon-wrapper flex-center">
610
+ <span class="contact-info__icon" aria-hidden="true">${Si}</span>
611
+ </div>
612
+ <div class="flex-column">
613
+ <span class="contact-info__contact-point-value">${t}</span>
614
+ ${i?X`<span class="contact-info__contact-point-type">${i}</span>`:X``}
615
+ </div>
616
+ </li>`}(e[0],n)}${e.length>1?Zi(e.slice(1),n):X``}`:X``}function Xi(e){return e&&e.length&&e[0]?X`${function(e){if(!e)return X``;const n=Oi(e.streetAddress||e.fullAddress).trim(),t=Oi(e.locality).trim(),i=Oi(e.region).trim(),o=Oi(e.postalCode).trim(),a=Oi(e.countryName).trim(),r=[[t,i].filter(Boolean).join(", "),o].filter(Boolean).join(" ");return X`
617
+ <li class="contact-info__item flex gap-2xs" role="listitem">
618
+ <div class="contact-info__icon-wrapper flex-center">
619
+ <span class="contact-info__icon" aria-hidden="true">${Ue}</span>
620
+ </div>
621
+ <span class="contact-info__address">
622
+ ${n?X`${n}<br />`:X``}
623
+ ${r?X`${r}<br />`:X``}
624
+ ${a}
625
+ </span>
626
+ </li>`}(e[0])}${e.length>1?Xi(e.slice(1)):X``}`:X``}function Gi(e,n,t,i,o){return X`
627
+ <section
628
+ aria-labelledby="contact-details-heading"
629
+ data-profile-section="contact-info"
630
+ class="profile__section--empty border-lighter rounded-md gap-lg profile-section-collapsible profile-section-collapsible--inline-mobile-actions"
631
+ role="region"
632
+ tabindex="-1"
633
+ data-expanded="false"
634
+ >
635
+ <header class="profile__section-header profile-section-collapsible__header">
636
+ <h2 id="contact-details-heading" tabindex="-1">${"Contact Info"}</h2>
637
+ <div class="profile-section-collapsible__actions flex-column">
638
+ <button
639
+ type="button"
640
+ class="profile__action-button profile-action-text flex-center profile-section-collapsible__edit-button"
641
+ aria-label="Add contact information"
642
+ @click=${a=>Pi(a,e,n,t,i,o)}
643
+ >
644
+ <span class="profile-section-collapsible__edit-label">${Xe} Add Contact</span>
645
+ <span class="profile-section-collapsible__edit-icon profile-section-collapsible__edit-icon--add" aria-hidden="true">${Oe}</span>
646
+ </button>
647
+ <button
648
+ type="button"
649
+ class="inline-flex-row"
650
+ aria-label="Toggle contact information section"
651
+ aria-controls="contact-details-panel"
652
+ aria-expanded="false"
653
+ @click=${Yi}
654
+ >
655
+ <span class="profile-section-collapsible__chevron" aria-hidden="true">⌄</span>
656
+ </button>
657
+ </div>
658
+ </header>
659
+ <div id="contact-details-panel" class="profile-section-collapsible__content" aria-hidden="true">
660
+ ${X`
661
+ <div class="profile__empty-state-content flex-column-center" role="group" aria-label="Empty contact information section">
662
+ <div class="contact-info__empty-icon-wrapper">
663
+ <span class="contact-info__empty-icon inline-flex-row">${nn}</span>
664
+ </div>
665
+ <p class="profile__empty-state-message contact-info__empty-message">
666
+ No additional contact info added yet.
667
+ </p>
668
+ </div>
669
+ `}
670
+ </div>
671
+ </section>
672
+ `}function Ki(e,n,t,i,o){const a={emails:(null==t?void 0:t.emails)||[],phones:(null==t?void 0:t.phones)||[],addresses:(null==t?void 0:t.addresses)||[]},r=a.emails.length>0||a.phones.length>0||a.addresses.length>0;return X`
673
+ ${!r&&"owner"===i?Gi(e,n,a,i,o):function(e,n,t,i,o){const a=(null==t?void 0:t.emails.length)>0||(null==t?void 0:t.phones.length)>0||(null==t?void 0:t.addresses.length)>0;return X`
674
+ <section
675
+ aria-labelledby="contact-details-heading"
676
+ class="profile__section border-lighter profile-section-collapsible profile-section-collapsible--inline-mobile-actions"
677
+ role="region"
678
+ tabindex="-1"
679
+ data-expanded="false"
680
+ >
681
+ <header class="profile__section-header profile-section-collapsible__header">
682
+ <h2 id="contact-details-heading" tabindex="-1">${"More Contacts"}</h2>
683
+ <div class="profile-section-collapsible__actions flex-column">
684
+ ${"owner"===i?X`
685
+ <button
686
+ type="button"
687
+ class="profile__action-button profile-action-text flex-center profile-section-collapsible__edit-button"
688
+ aria-label="Edit contact information"
689
+ @click=${a=>Pi(a,e,n,t,i,o)}>
690
+ <span class="profile-section-collapsible__edit-label">${an} Edit</span>
691
+ <span class="profile-section-collapsible__edit-icon" aria-hidden="true">${an}</span>
692
+ </button>
693
+ `:X``}
694
+ <button
695
+ type="button"
696
+ class="inline-flex-row"
697
+ aria-label="Toggle contact information section"
698
+ aria-controls="contact-details-panel"
699
+ aria-expanded="false"
700
+ @click=${Yi}
701
+ >
702
+ <span class="profile-section-collapsible__chevron" aria-hidden="true">⌄</span>
703
+ </button>
704
+ </div>
705
+ </header>
706
+ <div id="contact-details-panel" class="profile-section-collapsible__content" aria-hidden="true">
707
+ ${t.phones.length>0?X`
708
+ <ul class="contact-info__list flex-column" role="list" aria-label="Phone numbers">
709
+ ${Qi(t.phones,e)}
710
+ </ul>
711
+ `:X``}
712
+ ${t.emails.length>0?X`
713
+ <ul class="contact-info__list flex-column" role="list" aria-label="Email addresses">
714
+ ${Zi(t.emails,e)}
715
+ </ul>
716
+ `:X``}
717
+ ${t.addresses.length>0?X`
718
+ <ul class="contact-info__list flex-column" role="list" aria-label="Postal addresses">
719
+ ${Xi(t.addresses)}
720
+ </ul>
721
+ `:X``}
722
+ ${a?X``:X`<p>No contact details added yet.</p>`}
723
+ </div>
724
+ </section>
725
+ `}(e,n,a,i,o)}
726
+ `}const Ji="https://www.w3.org/ns/iana/language-code/";function eo(e){return(e||"").trim()}function no(e){const n=eo(e).toLowerCase();return n?n.startsWith(Ji)?n.slice(41):n:""}function to(e,n,t){const i=t.map(e=>({name:eo(e.name),publicId:no(e.publicId)})).filter(e=>Boolean(e.publicId));if(0===i.length)return[];const o=i.map(()=>Kt(n)),a=[],r=function(e,n){if(!e.length)return{head:me.ns.rdf("nil"),statements:[]};const t=e.map(()=>(0,Me.blankNode)()),i=[];return e.forEach((e,o)=>{const a=t[o],r=t[o+1]||me.ns.rdf("nil");i.push((0,Me.st)(a,me.ns.rdf("first"),e,n)),i.push((0,Me.st)(a,me.ns.rdf("rest"),r,n))}),{head:t[0],statements:i}}(o,n);return a.push((0,Me.st)(e,me.ns.schema("knowsLanguage"),r.head,n)),a.push(...r.statements),o.forEach((e,t)=>{const o=(0,Me.sym)(`${Ji}${i[t].publicId}`);a.push((0,Me.st)(e,me.ns.solid("publicId"),o,n)),i[t].name&&a.push((0,Me.st)(o,me.ns.schema("name"),(0,Me.literal)(i[t].name,"en"),n))}),a}function io(e){var n,t,i,o,a,r,l,s,d,c,A,p;return`${(null===(t=null===(n=e.subject)||void 0===n?void 0:n.toNT)||void 0===t?void 0:t.call(n))||(null===(i=e.subject)||void 0===i?void 0:i.value)} ${(null===(a=null===(o=e.predicate)||void 0===o?void 0:o.toNT)||void 0===a?void 0:a.call(o))||(null===(r=e.predicate)||void 0===r?void 0:r.value)} ${(null===(s=null===(l=e.object)||void 0===l?void 0:l.toNT)||void 0===s?void 0:s.call(l))||(null===(d=e.object)||void 0===d?void 0:d.value)} ${(null===(A=null===(c=e.why)||void 0===c?void 0:c.toNT)||void 0===A?void 0:A.call(c))||(null===(p=e.why)||void 0===p?void 0:p.value)}`}async function oo(e,n,t,i){const o=e.updater;if(!o||"function"!=typeof o.update)throw new Error("Language updates are not supported by this store updater.");const{safeDeletions:a,safeInsertions:r}=function(e,n,t){return{safeDeletions:Array.from(new Map((n||[]).filter(n=>!!(n&&n.subject&&n.predicate&&n.object)&&(!!e.holds(n.subject,n.predicate,n.object,n.why)||e.statementsMatching(n.subject,n.predicate,n.object,n.why).length>0)).map(e=>[io(e),e])).values()),safeInsertions:Array.from(new Map((t||[]).filter(e=>Boolean(e&&e.subject&&e.predicate&&e.object)).map(e=>[io(e),e])).values())}}(e,t,i);if(0===a.length&&0===r.length)return;try{return void await new Promise((e,n)=>{o.update(a,r,(t,i,o)=>{!0!==i?n(new Error(o||"Failed to save languages")):e()})})}catch(t){const i=t instanceof Error?t.message:String(t);if(!function(e){const n=(e||"").toLowerCase();return n.includes(" on patch ")||n.includes("web error: 501")||n.includes("web error: 405")||n.includes("web error: 400")}(i)||"function"!=typeof o.updateDav)throw t;if(e.fetcher&&"function"==typeof e.fetcher.load)try{await e.fetcher.load(n)}catch{}try{await new Promise((e,t)=>{o.updateDav(n,a,r,(n,o,a)=>{!0!==o?t(new Error(a||i||"Failed to save languages")):e()})})}catch(t){if(!function(e){return(e||"").toLowerCase().includes("no record of our http get request for document")}(t instanceof Error?t.message:String(t)))throw t;await async function(e,n,t,i){const o=e.updater,a=e.fetcher;if(!o||"function"!=typeof o.serialize||!a||"function"!=typeof a.webOperation)throw new Error("Language updates are not supported by this store updater.");const r=e.statementsMatching(void 0,void 0,void 0,n).slice(),l=new Set((t||[]).map(e=>io(e))),s=r.filter(e=>!l.has(io(e))).concat(i||[]),d="text/turtle",c=o.serialize(n.value,s,d),A=await a.webOperation("PUT",n.value,{noMeta:!0,contentType:d,body:c});if(!A||!0!==A.ok){const e=(null==A?void 0:A.status)||"unknown";throw new Error(`Web error: ${e} on PUT of <${n.value}>`)}e.remove(t),i.forEach(n=>{e.add(n.subject,n.predicate,n.object,n.why)})}(e,n,a,r)}}}async function ao(e,n,t,i){!function(e){var n;const t=e=>{e&&("function"!=typeof e.setPrefixForURI?(e.namespaces||(e.namespaces={}),e.namespaces.l=Ji):e.setPrefixForURI("l",Ji))},i=e;t(i),t(null===(n=null==i?void 0:i.updater)||void 0===n?void 0:n.store)}(e);const o=n.doc(),a=tt(n,e).map(e=>({name:eo(e.name),publicId:eo(e.publicId),proficiency:eo(e.proficiency),entryNode:e.entryNode.value,status:"existing"})),r=i&&i.length?function(e){return(e||[]).filter(e=>"deleted"!==e.status).filter(e=>Boolean(eo(e.publicId)||eo(e.name)||eo(e.entryNode))).map(e=>({...e,name:eo(e.name),publicId:eo(e.publicId),proficiency:eo(e.proficiency),entryNode:eo(e.entryNode)}))}(i):function(e,n){const t=new Map;e.forEach(e=>{t.set(e.entryNode,e)}),n.remove.forEach(e=>{e.entryNode&&t.delete(e.entryNode)}),n.update.forEach(e=>{e.entryNode&&t.has(e.entryNode)&&t.set(e.entryNode,e)}),n.create.forEach(e=>{eo(e.publicId)&&t.set(`new:${e.name}:${Math.random()}`,{...e,publicId:eo(e.publicId),proficiency:eo(e.proficiency)})});const i=new Map;return Array.from(t.values()).forEach(e=>{const n=eo(e.publicId);n&&(i.has(n)||i.set(n,{...e,publicId:n,proficiency:eo(e.proficiency)}))}),Array.from(i.values())}(a,t),l=e.each(n,me.ns.schema("knowsLanguage"),null,o),s=l.filter(e=>"BlankNode"===e.termType||"NamedNode"===e.termType),d=Array.from(new Map(s.flatMap(n=>function(e,n,t){const i=new Set,o=[];let a=n;for(;a;){const n=`${a.termType}:${a.value}`;if(i.has(n))break;i.add(n),o.push(a);const r=e.any(a,me.ns.rdf("rest"),null,t);if(!r||"NamedNode"===r.termType&&r.value===me.ns.rdf("nil").value)break;a=r}return o}(e,n,o)).map(e=>[`${e.termType}:${e.value}`,e])).values()),c=Array.from(new Set(l.flatMap(n=>Le(e,n)).filter(e=>"NamedNode"===e.termType||"BlankNode"===e.termType).map(e=>`${e.termType}:${e.value}`))).map(n=>{const[t,...i]=n.split(":"),o=i.join(":");return"BlankNode"===t?e.bnode(o):e.sym(o)}),A=Array.from(new Map(c.map(n=>e.any(n,me.ns.solid("publicId"),null,o)).filter(e=>Boolean(e&&"NamedNode"===e.termType)).map(e=>[`${e.termType}:${e.value}`,e])).values()),p=e.statementsMatching(n,me.ns.schema("knowsLanguage"),null,o);d.forEach(n=>{p.push(...e.statementsMatching(n,null,null,o))}),c.forEach(n=>{p.push(...e.statementsMatching(n,null,null,o))}),A.forEach(n=>{p.push(...e.statementsMatching(n,me.ns.schema("name"),null,o))});const u=to(n,o,r);await oo(e,o,p,u)}function ro(e){return mi(e)}function lo(e){return[e.name,e.publicId,e.proficiency].some(gi)}function so(e){return(e||"").trim().toLowerCase()}function co(e){return ro(e).toLowerCase().replace(/\(.*?\)/g," ").replace(/[^a-z\s-]/g," ").replace(/\s+/g," ").trim()}function Ao(e,n){var t;const i=null===(t=null==e?void 0:e[n])||void 0===t?void 0:t.value;return"string"==typeof i?i:""}async function po(e){var n;const t=ro(e);if(t.length<2||"function"!=typeof fetch)return[];const i=new URLSearchParams({query:(o=t,`SELECT ?item ?subject ?name WHERE {\n ?item wdt:P305 ?subject .\n OPTIONAL {\n ?item rdfs:label ?name .\n FILTER(langMatches(lang(?name), "en"))\n }\n FILTER regex(?name, "${o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}", "i")\n FILTER regex(?subject, "^..$", "i")\n } LIMIT 12`),format:"json"});var o;try{const e=await fetch(`https://query.wikidata.org/sparql?${i.toString()}`,{headers:{Accept:"application/sparql-results+json, application/json"}});if(!e.ok)return[];const t=await e.json(),o=Array.isArray(null===(n=null==t?void 0:t.results)||void 0===n?void 0:n.bindings)?t.results.bindings:[],a=new Set;return o.map(e=>{const n=so(Ao(e,"subject")),t=function(e){const n=(e||"").trim();return n?n.startsWith("http://")||n.startsWith("https://")?n:`https://www.w3.org/ns/iana/language-code/${so(n)}`:""}(n);return{name:ro(Ao(e,"name")||n),publicId:t,code:n}}).filter(e=>{if(!e.name||!e.publicId||2!==e.code.length)return!1;const n=e.publicId.toLowerCase();return!a.has(n)&&(a.add(n),!0)})}catch{return[]}}function uo(e,n){const t=ro(n).toLowerCase();if(!t)return null;const i=e.find(e=>e.name.toLowerCase()===t);if(i)return i;const o=co(n);return o&&e.find(e=>co(e.name)===o)||null}function fo(e,n){const t=wi(e,lo),i=t.create.length>0||t.update.length>0||t.remove.length>0,o=function(e,n){const t=e.filter(e=>"deleted"!==e.status&&Boolean((e.entryNode||"").trim())).map(e=>(e.entryNode||"").trim());if(t.length!==n.length)return!0;for(let e=0;e<t.length;e++)if(t[e]!==n[e])return!0;return!1}(e,n);if(!i&&!o)return"No language changes detected.";for(let n=0;n<e.length;n++){const t=e[n];if(t&&"deleted"!==t.status&&(gi(t.name)&&!gi(t.publicId)))return`Language ${n+1}: please choose a language from the suggestions list.`}return null}function mo(e){const n=document.querySelector("#profile-modal #modal-buttons button.btn-primary");n&&(n.disabled=function(e){return e.some(e=>!(!e||"deleted"===e.status||!gi(e.name)||gi(e.publicId)))}(e))}function go(e,n,t,i){let o=null,a=null;const r=e=>{o=e,a=e},l=e=>{e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move")},s=i=>{null!==o&&(((n,i)=>{if(n===i)return;const o=e[n];o&&(e.splice(n,1),e.splice(i,0,o),Object.keys(t).forEach(e=>{delete t[Number(e)]}))})(o,i),o=null,a=null,n())},d=()=>{o=null,a=null},c=e.map((e,n)=>({row:e,index:n})).filter(({row:e})=>"deleted"!==e.status);return X`
727
+ <section class="profile-edit-dialog__section" aria-label="Languages">
728
+ <fieldset>
729
+ <legend class="sr-only">Language entries</legend>
730
+ ${c.map(({index:o},c)=>function({rows:e,index:n,displayIndex:t,onDelete:i,onChange:o,onSearch:a,suggestions:r,onDragStart:l,onDragOver:s,onDrop:d,onDragEnd:c,isDropTarget:A}){const p=e[n],u=`Language ${t+1}`,f=`Language Proficiency ${t+1}`,m=`language-${n}`,g=`proficiency-${n}`,h=`proficiency-${n}`,C=`language-suggestions-${n}`,b=Boolean(p&&"deleted"!==p.status&&gi(p.name)&&!gi(p.publicId)),E=t=>i=>{const l=ro(i.target.value);if(e[n]){yi(e[n],t,l,lo);const i=uo(r,l);e[n].publicId=(null==i?void 0:i.publicId)||"",i&&(e[n].name=ro(i.name)),a(n,l),o()}};return X`
731
+ <div
732
+ class="profile-edit-dialog__row profile-edit-dialog__row--language ${A?"profile-edit-dialog__row--drop-target":""}"
733
+ @dragover=${e=>s(e)}
734
+ @drop=${()=>d(n)}
735
+ >
736
+ <button
737
+ type="button"
738
+ class="profile-edit-dialog__drag-handle"
739
+ aria-label=${`Reorder language ${t+1}`}
740
+ title="Drag to reorder"
741
+ draggable="true"
742
+ @dragstart=${()=>l(n)}
743
+ @dragend=${()=>c()}
137
744
  >
138
- <nav aria-label="Social media profiles">
139
- <ul class="socialList list-reset" role="list">
140
- ${e.map(n=>function(n){return n.homepage&&n.name&&n.icon?nn`
141
- <li class="socialItem" role="listitem">
142
- <a
143
- href="${n.homepage}"
144
- target="_blank"
145
- rel="noopener noreferrer"
146
- aria-label="Visit ${n.name} profile (opens in new tab)"
745
+ ${Qe}
746
+ </button>
747
+ <label aria-label=${`${u} Language`} class="label profile-edit-dialog__field">
748
+ <input
749
+ class="input"
750
+ type="text"
751
+ name=${m}
752
+ .value=${(null==p?void 0:p.name)||""}
753
+ required
754
+ data-contact-field="name"
755
+ data-entry-node=${(null==p?void 0:p.entryNode)||""}
756
+ data-row-status=${(null==p?void 0:p.status)||"n/a"}
757
+ placeholder="Language"
758
+ autocomplete="off"
759
+ list=${C}
760
+ inputmode="text"
761
+ aria-invalid=${b?"true":"false"}
762
+ @input=${E("name")}
763
+ @change=${_="name",e=>{E(_)(e)}}
764
+ />
765
+ <datalist id=${C}>
766
+ ${r.map(e=>X`<option value=${e.name}></option>`)}
767
+ </datalist>
768
+ <small class="profile-edit-dialog__input-help-text">Type to search and select one language suggestion.</small>
769
+ </label>
770
+ <label aria-label=${f} class="label" hidden>
771
+ <select name=${g} id=${h} @change=${t=>{const i=t.target.value;e[n]&&(vi(e[n],"proficiency",i),o())}} .value=${(null==p?void 0:p.proficiency)||""}>
772
+ <option value="Basic">Basic</option>
773
+ <option value="Intermediate">Intermediate</option>
774
+ <option value="Fluent">Fluent</option>
775
+ </select>
776
+ </label>
777
+ <div class="profile-edit-dialog__actions profile-edit-dialog__actions--edge">
778
+ <button
779
+ type="button"
780
+ class="profile-edit-dialog__delete-button"
781
+ aria-label=${`Delete language ${t+1}`}
782
+ title=${ve}
783
+ @click=${e=>{e.preventDefault(),i()}}
784
+ >
785
+ <span class="profile-edit-dialog__delete-icon" aria-hidden="true">${Ve}</span>
786
+ </button>
787
+ </div>
788
+ </div>
789
+ `;var _}({rows:e,index:o,displayIndex:c,onChange:n,onSearch:i,suggestions:t[o]||[],onDragStart:r,onDragOver:l,onDrop:s,onDragEnd:d,isDropTarget:a===o,onDelete:()=>{_i(e,o),delete t[o],n()}}))}
790
+ </fieldset>
791
+ </section>
792
+ `}function ho(e,n,t,i={}){const o=n,a=o.suggestionByIndex||(o.suggestionByIndex={}),r=o.searchSeqByIndex||(o.searchSeqByIndex={}),l=o.searchTimerByIndex||(o.searchTimerByIndex={}),s=(i={})=>ho(e,n,t,i);ue(X`
793
+ ${go(n.languages,s,a,(e,t)=>{l[e]&&clearTimeout(l[e]);const i=ro(t);if(i.length<2)return a[e]=[],void s();const o=(r[e]||0)+1;r[e]=o,l[e]=setTimeout(async()=>{const t=await po(i);if(r[e]!==o)return;a[e]=t;const l=n.languages[e];if(l){const e=uo(t,l.name);l.publicId=(null==e?void 0:e.publicId)||l.publicId}s()},220)})}
794
+ ${"owner"!==t?X`<p class="profile-edit-dialog__login-message">${we}</p>`:null}
795
+ `,e),mo(n.languages),i.focusSelector&&function(e,n){const t=e.querySelector(n);t&&"function"==typeof t.focus&&(t.scrollIntoView({block:"start",behavior:"auto"}),t.focus(),(t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement)&&t.select())}(e,i.focusSelector)}function Co(e,n){const t=document.createElement("form");t.classList.add("profile__edit-form");const i=function(e){const n=(e||[]).map(e=>({name:ro(ui(e.name)),publicId:ro(ui(e.publicId)),proficiency:ro(ui(e.proficiency)),entryNode:ui(e.entryNode),status:ui(e.entryNode)?"existing":"new"})).filter(e=>Boolean(e.name||e.entryNode||e.proficiency||e.publicId));return{languages:n.length?n:[{name:"",publicId:"",proficiency:"",entryNode:"",status:"new"}],initialExistingOrder:[]}}(e);i.initialExistingOrder=i.languages.filter(e=>Boolean((e.entryNode||"").trim())).map(e=>(e.entryNode||"").trim()),ho(t,i,n);return{form:t,formState:i,addRow:()=>{i.languages.unshift({name:"",publicId:"",proficiency:"",entryNode:"",status:"new"});const e=i;e.suggestionByIndex={},e.searchSeqByIndex={},e.searchTimerByIndex={},ho(t,i,n,{focusSelector:'[name="language-0"]'})}}}async function bo(e,n,t,i,o,a){var r;const l=(null===(r=e.currentTarget)||void 0===r?void 0:r.ownerDocument)||document,{form:s,formState:d,addRow:c}=Co(i,o),A=await Wt({title:"Edit Languages",dom:l,form:s,headerAction:{type:"button",label:"+ Add More",ariaLabel:"Add another language",onClick:c},submitLabel:Ee,cancelLabel:_e,validate:()=>"owner"!==o?we:fo(d.languages,d.initialExistingOrder),onSave:async()=>{const e=wi(d.languages,lo),i={create:e.create,update:e.update,remove:e.remove};await async function(e,n,t,i){try{await ao(e,n,t,i)}catch(e){const n=e instanceof Error?e.message:String(e);throw new Error(`Failed to save languages: ${n}`)}}(n,t,i,d.languages)},formatSaveError:e=>`Could not save language updates. ${e instanceof Error?e.message:String(e)}`});A&&a&&await a()}function Eo(e,n=!1){return e&&e.length&&e[0]?X`${function(e,n=!1){return e&&n?X`<li class="languages__item-label" role="listitem">${e.name}</li>`:X``}(e[0],n)}${e.length>1?Eo(e.slice(1),n):X``}`:X``}function _o(e,n,t,i,o){return X`
796
+ <section
797
+ aria-labelledby="languages-heading"
798
+ data-profile-section="languages"
799
+ class="profile__section--empty border-lighter rounded-md gap-lg profile-section-collapsible profile-section-collapsible--inline-mobile-actions"
800
+ role="region"
801
+ tabindex="-1"
802
+ data-expanded="false"
803
+ >
804
+ <header class="profile__section-header profile-section-collapsible__header">
805
+ <h2 id="languages-heading" tabindex="-1">${Ce}</h2>
806
+ <div class="profile-section-collapsible__actions flex-column">
807
+ <button
808
+ type="button"
809
+ class="profile__action-button profile-action-text flex-center profile-section-collapsible__edit-button"
810
+ aria-label="Add languages"
811
+ @click=${a=>bo(a,e,n,t,i,o)}
812
+ >
813
+ <span class="profile-section-collapsible__edit-label profile__add-more-content inline-flex-row">
814
+ <span class="profile__add-more-icon inline-flex-row" aria-hidden="true">${Xe}</span>
815
+ Add Languages
816
+ </span>
817
+ <span class="profile-section-collapsible__edit-icon profile-section-collapsible__edit-icon--add" aria-hidden="true">${Oe}</span>
818
+ </button>
819
+ <button
820
+ type="button"
821
+ class="inline-flex-row"
822
+ aria-label="Toggle languages section"
823
+ aria-controls="languages-panel"
824
+ aria-expanded="false"
825
+ @click=${Yi}
826
+ >
827
+ <span class="profile-section-collapsible__chevron" aria-hidden="true">⌄</span>
828
+ </button>
829
+ </div>
830
+ </header>
831
+ <div id="languages-panel" class="profile-section-collapsible__content" aria-hidden="true">
832
+ ${X`
833
+ <div class="profile__empty-state-content flex-column-center" role="group" aria-label="Empty languages section">
834
+ <div class="languages__empty-icon-wrapper">
835
+ <span class="languages__empty-icon inline-flex-row">${en}</span>
836
+ </div>
837
+ <p class="profile__empty-state-message languages__empty-message">
838
+ No languages added yet.
839
+ </p>
840
+ </div>
841
+ `}
842
+ </div>
843
+ </section>
844
+ `}function vo(e,n,t,i,o){const a=t||[],r=Array.isArray(a)&&a.length>0;return X`
845
+ ${!r&&"owner"===i?_o(e,n,a,i,o):function(e,n,t,i,o){const a=Array.isArray(t)&&t.length>0,r=e.each(n,me.ns.schema("knowsLanguage")).length>0;return X`
846
+ <section
847
+ class="profile__section border-lighter profile-section-collapsible profile-section-collapsible--inline-mobile-actions"
848
+ aria-labelledby="languages-heading"
849
+ role="region"
850
+ tabindex="-1"
851
+ data-expanded="false"
852
+ >
853
+ <header class="profile__section-header profile-section-collapsible__header">
854
+ <h2 id="languages-heading">${Ce}</h2>
855
+ <div class="profile-section-collapsible__actions flex-column">
856
+ ${"owner"===i?X`
857
+ <button
858
+ type="button"
859
+ class="profile__action-button profile-action-text flex-center profile-section-collapsible__edit-button"
860
+ aria-label="Add or edit languages"
861
+ @click=${a=>bo(a,e,n,t,i,o)}
147
862
  >
148
- <img
149
- class="socialIcon"
150
- src="${n.icon}"
151
- alt="${n.name} icon"
152
- width="40"
153
- height="40"
154
- loading="lazy"
155
- />
156
- <span class="text-wrap-anywhere">${n.name}</span>
157
- </a>
158
- </li>
159
- `:nn``}(n))}
160
- </ul>
161
- </nav>
162
- </section>
163
- `},Le=(n,e,t,i)=>{const{stuff:o}=i,r=e.dom||document;return nn`
863
+ <span class="profile-section-collapsible__edit-label profile__add-more-content inline-flex-row">
864
+ <span class="profile__add-more-icon inline-flex-row" aria-hidden="true">${Xe}</span>
865
+ Add More
866
+ </span>
867
+ <span class="profile-section-collapsible__edit-icon" aria-hidden="true">${an}</span>
868
+ </button>
869
+ `:X``}
870
+ <button
871
+ type="button"
872
+ class="inline-flex-row"
873
+ aria-label="Toggle languages section"
874
+ aria-controls="languages-panel"
875
+ aria-expanded="false"
876
+ @click=${Yi}
877
+ >
878
+ <span class="profile-section-collapsible__chevron" aria-hidden="true">⌄</span>
879
+ </button>
880
+ </div>
881
+ </header>
882
+ <div id="languages-panel" class="profile-section-collapsible__content" aria-hidden="true">
883
+ ${a?X`
884
+ <ul class="languages__list" role="list" aria-label="Known languages">
885
+ ${Eo(t,!0)}
886
+ </ul>
887
+ `:r?X`<p>Language details are missing for one or more entries.</p>`:X`<p>No languages added yet.</p>`}
888
+ </div>
889
+ </section>
890
+ `}(e,n,a,i,o)}
891
+ `}const wo="http://data.europa.eu/esco/skill/",yo="skill:";function Bo(e){return e.startsWith("_:")?e.slice(2):e}function xo(e,n,t,i){const o=Bo(i);return e.statementsMatching(n,me.ns.schema("skills"),null,t).filter(e=>Bo(e.object.value)===o||e.object.value===i)}function ko(e,n,t,i){if(!i.name)return[];if(!i.publicId)throw new Error(`Missing skill publicId for skill: ${i.name}`);const o=(0,Me.sym)(function(e){const n=e.trim();if(!n)return n;if(n.startsWith("skill:"))return n;if(n.startsWith(wo)){const e=n.slice(33);return e?`skill:${e}`:n}return n}(i.publicId));return[(0,Me.st)(e,me.ns.schema("skills"),t,n),(0,Me.st)(t,me.ns.solid("publicId"),o,n),(0,Me.st)(o,me.ns.schema("name"),(0,Me.literal)(i.name),n)]}async function Io(e,n,t){!function(e){const n=e;"function"!=typeof n.setPrefixForURI?(n.namespaces||(n.namespaces={}),n.namespaces.skill=yo):n.setPrefixForURI("skill",yo)}(e);const i=n.doc(),o=e.each(n,me.ns.schema("skills")),a=[],r=[],l=n=>{const t=Zt(e,n,me.ns.solid("publicId"),i);a.push(...t.linkedStatements)};t.remove.forEach(t=>{if(!t.entryNode)return;const r=Xt(o,t.entryNode);a.push(...xo(e,n,i,t.entryNode)),r&&"Literal"!==r.termType&&(a.push(...Vt(e,r,i)),"NamedNode"===r.termType&&l(r))}),t.update.forEach(t=>{if(!t.entryNode)return;const s=Xt(o,t.entryNode);s?(a.push(...xo(e,n,i,t.entryNode)),"Literal"!==s.termType&&(a.push(...Vt(e,s,i)),"NamedNode"===s.termType&&l(s)),"NamedNode"!==s.termType?r.push(...ko(n,i,Kt(i),t)):r.push(...ko(n,i,s,t))):r.push(...ko(n,i,Kt(i),t))}),t.create.forEach(e=>{r.push(...ko(n,i,Kt(i),e))}),await qt(e,a,r)}async function $o(e,n,t){try{await Io(e,n,t)}catch(e){const n=e instanceof Error?e.message:String(e);throw new Error(`Failed to save skills: ${n}`)}}const So="http://data.europa.eu/esco/skill/";function Do(e){const n=To(e);if(!n)return"";if(n.startsWith("skill:"))return n;if(n.startsWith(So)){const e=n.slice(33);return e?`skill:${e}`:n}return n}async function No(e){var n;const t=To(e);if(t.length<2||"function"!=typeof fetch)return[];try{const e=await fetch(function(e){return"https://ec.europa.eu/esco/api/search?language=$(language)&limit=$(limit)&type=skill&text=$(name)".replace("$(language)",encodeURIComponent("en")).replace("$(limit)",encodeURIComponent(String(8))).replace("$(name)",encodeURIComponent(e))}(t),{headers:{Accept:"application/json"}});if(!e.ok)return[];const i=await e.json(),o=Array.isArray(null===(n=null==i?void 0:i._embedded)||void 0===n?void 0:n.results)?i._embedded.results:[],a=new Set;return o.map(e=>{const n=To(function(e){var n;return(null==e?void 0:e.title)||(null==e?void 0:e.searchHit)||(null===(n=null==e?void 0:e.preferredLabel)||void 0===n?void 0:n.en)||(null==e?void 0:e.uri)||""}(e));return{label:n,uri:"string"==typeof(null==e?void 0:e.uri)?e.uri:""}}).filter(e=>{if(!e.label)return!1;const n=e.label.toLowerCase();return!a.has(n)&&(a.add(n),!0)})}catch{return[]}}function To(e){return mi(e)}function jo(e){return[e.name].some(gi)}function zo(e,n){const t=To(n).toLowerCase();return t&&e.find(e=>e.label.toLowerCase()===t)||null}function Fo(e){const n=document.querySelector("#profile-modal #modal-buttons button.btn-primary");n&&(n.disabled=function(e){return e.some(e=>!(!e||"deleted"===e.status||!gi(e.name)||gi(e.publicId)))}(e))}function Po(e,n,t,i){const o=e.map((e,n)=>({row:e,index:n})).filter(({row:e})=>"deleted"!==e.status);return X`
892
+ <section class="profile-edit-dialog__section" aria-label="Skills">
893
+ <fieldset>
894
+ <legend class="sr-only">Skill entries</legend>
895
+ ${o.map(({index:o},a)=>function({rows:e,index:n,displayIndex:t,onDelete:i,onChange:o,onSkillSearch:a,suggestions:r}){const l=e[n],s=`Skill ${t+1}`,d=`skill-${n}`,c=`skill-suggestions-${n}`,A=Boolean(l&&"deleted"!==l.status&&gi(l.name)&&!gi(l.publicId));return X`
896
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--full profile-edit-dialog__row--skill">
897
+ <label aria-label=${`${s} Name`} class="label profile-edit-dialog__field profile-edit-dialog__field--full">
898
+ <div class="profile-edit-dialog__input-wrap">
899
+ <span class="profile-edit-dialog__search-icon" aria-hidden="true">${qe}</span>
900
+ <input
901
+ class="input profile-edit-dialog__input--with-leading-icon"
902
+ type="text"
903
+ name=${d}
904
+ .value=${(null==l?void 0:l.name)||""}
905
+ required
906
+ data-contact-field="name"
907
+ data-entry-node=${(null==l?void 0:l.entryNode)||""}
908
+ data-row-status=${(null==l?void 0:l.status)||"n/a"}
909
+ placeholder="Skill"
910
+ autocomplete="off"
911
+ list=${c}
912
+ inputmode="text"
913
+ aria-invalid=${A?"true":"false"}
914
+ @input=${p="name",t=>{const i=To(t.target.value);if(e[n]){yi(e[n],p,i,jo);const t=zo(r,i);e[n].publicId=Do((null==t?void 0:t.uri)||""),a(n,i),o()}}}
915
+ />
916
+ </div>
917
+ <datalist id=${c}>
918
+ ${r.map(e=>X`<option value=${e.label}></option>`)}
919
+ </datalist>
920
+ <small class="profile-edit-dialog__input-help-text">Type to search ESCO and select one suggestion.</small>
921
+ </label>
922
+ <div class="profile-edit-dialog__actions profile-edit-dialog__actions--edge">
923
+ <button
924
+ type="button"
925
+ class="profile-edit-dialog__delete-button"
926
+ aria-label=${`Delete skill ${t+1}`}
927
+ title=${ve}
928
+ @click=${e=>{e.preventDefault(),i()}}
929
+ >
930
+ <span class="profile-edit-dialog__delete-icon" aria-hidden="true">${Ve}</span>
931
+ </button>
932
+ </div>
933
+ </div>
934
+ `;var p}({rows:e,index:o,displayIndex:a,onChange:n,onSkillSearch:i,suggestions:t[o]||[],onDelete:()=>{_i(e,o),delete t[o],n()}}))}
935
+ </fieldset>
936
+ </section>
937
+ `}function Lo(e,n,t,i={}){const o=n,a=o.suggestionByIndex||(o.suggestionByIndex={}),r=o.searchSeqByIndex||(o.searchSeqByIndex={}),l=o.searchTimerByIndex||(o.searchTimerByIndex={}),s=(i={})=>Lo(e,n,t,i);ue(X`
938
+ ${Po(n.skills,s,a,(e,t)=>{l[e]&&clearTimeout(l[e]);const i=To(t);if(i.length<2)return a[e]=[],void s();const o=(r[e]||0)+1;r[e]=o,l[e]=setTimeout(async()=>{const t=await No(i);if(r[e]!==o)return;a[e]=t;const l=n.skills[e];if(l){const e=zo(t,l.name);l.publicId=e?Do(e.uri):l.publicId}s()},220)})}
939
+ ${"owner"!==t?X`<p class="profile-edit-dialog__login-message">${we}</p>`:null}
940
+ `,e),Fo(n.skills),i.focusSelector&&function(e,n){const t=e.querySelector(n);t&&"function"==typeof t.focus&&(t.scrollIntoView({block:"start",behavior:"auto"}),t.focus(),(t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement)&&t.select())}(e,i.focusSelector)}function Mo(e,n){const t=document.createElement("form");t.classList.add("profile__edit-form");const i=function(e){const n=(e||[]).map(e=>({name:To(ui(e.name)),publicId:Do(ui(e.publicId)),entryNode:ui(e.entryNode),status:ui(e.entryNode)?"existing":"new"})).filter(e=>Boolean(e.name||e.publicId||e.entryNode));return{skills:n.length?n:[{name:"",publicId:"",entryNode:"",status:"new"}]}}(e);Lo(t,i,n);return{form:t,formState:i,addRow:()=>{i.skills.unshift({name:"",publicId:"",entryNode:"",status:"new"});const e=i;e.suggestionByIndex={},e.searchSeqByIndex={},e.searchTimerByIndex={},Lo(t,i,n,{focusSelector:'[name="skill-0"]'})}}}async function Wo(e,n,t,i,o,a){var r;const l=(null===(r=e.currentTarget)||void 0===r?void 0:r.ownerDocument)||document,{form:s,formState:d,addRow:c}=Mo(i,o),A=await Wt({title:"Edit Skills",dom:l,form:s,headerAction:{type:"button",label:"+ Add More",ariaLabel:"Add another skill",onClick:c},submitLabel:Ee,cancelLabel:_e,validate:()=>"owner"!==o?we:function(e){const n=wi(e,jo);if(!(n.create.length>0||n.update.length>0||n.remove.length>0))return"No skill changes detected.";for(let n=0;n<e.length;n++){const t=e[n];if(t&&"deleted"!==t.status&&gi(t.name)&&"existing"!==t.status&&!gi(t.publicId))return`Skill ${n+1}: please select a skill from the ESCO suggestions.`}return null}(d.skills),onSave:async()=>{const e=wi(d.skills,jo),i={create:e.create,update:e.update,remove:e.remove};await $o(n,t,i)},formatSaveError:e=>{const n=e instanceof Error?e.message:String(e);return`${ye} ${n}`}});A&&a&&await a()}function Ro(e,n,t,i,o){const a=Array.isArray(t)&&t.length>0;return X`
164
941
  <section
165
- class="stuffCard"
166
- aria-labelledby="stuff-card-title"
942
+ class="profile__section border-lighter profile-section-collapsible profile-section-collapsible--inline-mobile-actions"
943
+ aria-labelledby="skills-heading"
167
944
  role="region"
168
- data-testid="stuff"
945
+ tabindex="-1"
946
+ data-expanded="false"
169
947
  >
170
- <header>
171
- <h3 id="stuff-card-title" class="sr-only">Shared Resources</h3>
948
+ <header class="profile__section-header profile-section-collapsible__header">
949
+ <h2 id="skills-heading">${he}</h2>
950
+ <div class="profile-section-collapsible__actions flex-column">
951
+ ${"owner"===i?X`
952
+ <button
953
+ type="button"
954
+ class="profile__action-button profile-action-text flex-center profile-section-collapsible__edit-button"
955
+ aria-label="Add or edit skills"
956
+ @click=${a=>Wo(a,e,n,t,i,o)}
957
+ >
958
+ <span class="profile-section-collapsible__edit-label profile__add-more-content inline-flex-row">
959
+ <span class="profile__add-more-icon inline-flex-row" aria-hidden="true">${Xe}</span>
960
+ Add More
961
+ </span>
962
+ <span class="profile-section-collapsible__edit-icon" aria-hidden="true">${an}</span>
963
+ </button>
964
+ `:X``}
965
+ <button
966
+ type="button"
967
+ class="inline-flex-row"
968
+ aria-label="Toggle skills section"
969
+ aria-controls="skills-panel"
970
+ aria-expanded="false"
971
+ @click=${Yi}
972
+ >
973
+ <span class="profile-section-collapsible__chevron" aria-hidden="true">⌄</span>
974
+ </button>
975
+ </div>
172
976
  </header>
173
- <div>
174
- <table class="stuffTable" data-testid="stuffTable">
175
- <caption class="sr-only">Files and resources shared by ${n.name}</caption>
176
- <tbody class="zebra-stripe">
177
- ${Ne(o,r)}
178
- </tbody>
179
- </table>
977
+ <div
978
+ id="skills-panel"
979
+ class="profile-section-collapsible__content"
980
+ aria-hidden="true"
981
+ >
982
+ ${a?X`
983
+ <ul class="skills__list flex-column" role="list" aria-label="Professional skills and competencies">
984
+ ${t.map(t=>function(e,n,t,i,o){return e?X`
985
+ <li class="skills__item inline-flex-row" role="listitem">
986
+ <span class="skills__item-label">${function(e){if(e.trim().length>0){const n=e.split(" ");for(let e=0;e<n.length;e++)n[e]=n[e].charAt(0).toUpperCase()+n[e].substring(1);return n.join(" ")}return""}(e.name)}</span>
987
+ ${"owner"===i?X`
988
+ <button
989
+ type="button"
990
+ class="skills__remove-button inline-flex-row"
991
+ aria-label="Remove ${e.name} skill"
992
+ @click=${async a=>{if(a.preventDefault(),"owner"!==i)return;const r={name:e.name,publicId:e.publicId,entryNode:e.entryNode.value,status:"deleted"};await $o(n,t,{create:[],update:[],remove:[r]}),o&&await o()}}
993
+ >
994
+ ${rn}
995
+ </button>
996
+ `:""}
997
+ </li>
998
+ `:X``}(t,e,n,i,o))}
999
+ </ul>
1000
+ `:X`<p>No skills added yet.</p>`}
180
1001
  </div>
181
1002
  </section>
182
- `};function _e(n,e){return function(n,e){return bn.widgets.personTR(e,null,n.instance,{})}(n,e)}function Ne(n,e){return 0===n.length?nn``:nn`${_e(n[0],e)}${n.length>1?Ne(n.slice(1),e):nn``}`}async function Pe(n,e){const t=e.session.store,i=Xn(n,t),o=se(n,t),r=me(n,t),a=await be(n);return nn`
183
- <main
184
- id="main-content"
185
- class="profile-grid"
186
- style="--profile-grid-bg: radial-gradient(circle, ${i.backgroundColor} 80%, ${i.highlightColor} 100%)"
187
- role="main"
188
- aria-label="Profile for ${i.name}"
1003
+ `}function Uo(e,n,t,i,o){return X`
1004
+ <section
1005
+ aria-labelledby="skills-heading"
1006
+ data-profile-section="skills"
1007
+ class="profile__section--empty border-lighter rounded-md gap-lg profile-section-collapsible profile-section-collapsible--inline-mobile-actions"
1008
+ role="region"
189
1009
  tabindex="-1"
190
- >
1010
+ data-expanded="false"
1011
+ >
1012
+ <header class="profile__section-header profile-section-collapsible__header">
1013
+ <h2 id="skills-heading" tabindex="-1">${he}</h2>
1014
+ <div class="profile-section-collapsible__actions flex-column">
1015
+ <button
1016
+ type="button"
1017
+ class="profile__action-button profile-action-text flex-center profile-section-collapsible__edit-button"
1018
+ aria-label="Add skills"
1019
+ @click=${a=>Wo(a,e,n,t,i,o)}
1020
+ >
1021
+ <span class="profile-section-collapsible__edit-label profile__add-more-content inline-flex-row">
1022
+ <span class="profile__add-more-icon inline-flex-row" aria-hidden="true">${Xe}</span>
1023
+ Add Skills
1024
+ </span>
1025
+ <span class="profile-section-collapsible__edit-icon" aria-hidden="true">${an}</span>
1026
+ </button>
1027
+ <button
1028
+ type="button"
1029
+ class="inline-flex-row"
1030
+ aria-label="Toggle skills section"
1031
+ aria-controls="skills-panel"
1032
+ aria-expanded="false"
1033
+ @click=${Yi}
1034
+ >
1035
+ <span class="profile-section-collapsible__chevron" aria-hidden="true">⌄</span>
1036
+ </button>
1037
+ </div>
1038
+ </header>
1039
+ <div id="skills-panel" class="profile-section-collapsible__content" aria-hidden="true">
1040
+ ${X`
1041
+ <div class="profile__empty-state-content flex-column-center" role="group" aria-label="Empty skills section">
1042
+ <div class="skills__empty-icon-wrapper">
1043
+ <span class="skills__empty-icon inline-flex-row">${Je}</span>
1044
+ </div>
1045
+ <p class="profile__empty-state-message skills__empty-message">
1046
+ No skills added yet.
1047
+ </p>
1048
+ </div>
1049
+ `}
1050
+ </div>
1051
+ </section>
1052
+ `}function Ho(e){const n=((null==e?void 0:e.value)||"").trim();if(!n)return null;const t=n.slice(0,10);return(0,Me.literal)(t,me.ns.xsd("date"))}function Yo(e,n,t){if(!(t.orgName||t.orgType||t.orgLocation||t.orgHomePage))return[];const i=Kt(e),o=[(0,Me.st)(n,me.ns.org("organization"),i,e)],a=function(e){const n=(e||"").trim();if(!n)return null;if("PastRole"===n||"CurrentRole"===n||"FutureRole"===n)return null;if(n.startsWith("http://")||n.startsWith("https://")){const e=n.split(/[#/]/).pop();return"PastRole"===e||"CurrentRole"===e||"FutureRole"===e?null:(0,Me.sym)(n)}const t=n.match(/^([a-zA-Z][\w-]*):(.*)$/);if(t){const e=t[1].toLowerCase(),n=t[2].trim();return n?"PastRole"===n||"CurrentRole"===n||"FutureRole"===n?null:"schema"===e?me.ns.schema(n):"vcard"===e?me.ns.vcard(n):"solid"===e?me.ns.solid(n):"org"===e?me.ns.org(n):null:null}return me.ns.schema(n)}(t.orgType||"");return a&&o.push((0,Me.st)(i,me.ns.rdf("type"),a,e)),o.push((0,Me.st)(i,me.ns.rdf("type"),me.ns.vcard("Organization"),e)),t.orgName&&o.push((0,Me.st)(i,me.ns.schema("name"),(0,Me.literal)(t.orgName),e)),t.orgLocation&&o.push((0,Me.st)(i,me.ns.org("location"),(0,Me.literal)(t.orgLocation),e)),t.orgHomePage&&o.push((0,Me.st)(i,me.ns.schema("uri"),(0,Me.literal)(t.orgHomePage),e)),o}function Oo(e,n,t,i,o=!0){const a=[];if(o&&a.push((0,Me.st)(t,me.ns.org("member"),e,n)),a.push((0,Me.st)(t,me.ns.rdf("type"),function(e){var n,t,i,o;const a=(e.roleType||"").trim();if("PastRole"===a||"CurrentRole"===a||"FutureRole"===a)return me.ns.solid(a);if(e.isCurrentRole)return me.ns.solid("CurrentRole");const r=(new Date).toISOString().slice(0,10),l=(null===(t=null===(n=e.startDate)||void 0===n?void 0:n.value)||void 0===t?void 0:t.slice(0,10))||"",s=(null===(o=null===(i=e.endDate)||void 0===i?void 0:i.value)||void 0===o?void 0:o.slice(0,10))||"";return l&&l>r?me.ns.solid("FutureRole"):s&&s<r?me.ns.solid("PastRole"):me.ns.solid("FutureRole")}(i),n)),i.title&&a.push((0,Me.st)(t,me.ns.vcard("role"),(0,Me.literal)(i.title),n)),i.startDate){const e=Ho(i.startDate);e&&a.push((0,Me.st)(t,me.ns.schema("startDate"),e,n))}if(i.endDate&&!i.isCurrentRole){const e=Ho(i.endDate);e&&a.push((0,Me.st)(t,me.ns.schema("endDate"),e,n))}return i.description&&a.push((0,Me.st)(t,me.ns.schema("description"),(0,Me.literal)(i.description),n)),a.push(...Yo(n,t,i)),a}async function qo(e,n,t){try{await async function(e,n,t){const i=n.doc(),o=e.each(null,me.ns.org("member"),n,i),a=[],r=[];t.remove.forEach(n=>{if(!n.entryNode)return;const t=Xt(o,n.entryNode);if(t){const n=Zt(e,t,me.ns.org("organization"),i);a.push(...n.linkedStatements),a.push(...Vt(e,t,i))}}),t.update.forEach(t=>{if(!t.entryNode)return;const l=Xt(o,t.entryNode);if(!l)throw new Error("Could not find existing resume entry for update. Please reload profile data and try again.");if("BlankNode"===l.termType){const e=Kt(i);return void r.push(...Oo(n,i,e,t,!0))}[me.ns.rdf("type"),me.ns.vcard("role"),me.ns.schema("startDate"),me.ns.schema("endDate"),me.ns.schema("description")].forEach(n=>{Qt(e,l,n,i,a,r,null)});const s=Zt(e,l,me.ns.org("organization"),i);a.push(...s.linkedStatements),a.push(...s.linkStatements),r.push(...Oo(n,i,l,t,!1))}),t.create.forEach(e=>{r.push(...Oo(n,i,Kt(i),e))}),await qt(e,a,r)}(e,n,t)}catch(e){const n=e instanceof Error?e.message:String(e);throw new Error(`Failed to save resume: ${n}`)}}function Vo(e){return mi(e)}function Qo(e){const n=(e||"").trim();if(!n)return{year:"",month:""};const t=n.match(/^(\d{4})-(\d{2})/);if(t)return{year:t[1],month:t[2]};const i=n.match(/(\d{4})/);return{year:i?i[1]:"",month:""}}function Zo(e){return Boolean(e.isCurrentRole)||[e.title,e.roleType,ui(e.startDate),ui(e.endDate),e.orgName,e.orgType,e.orgLocation,e.orgHomePage,e.description].some(gi)}function Xo(e,n){const t=e.map((e,n)=>({resume:e,index:n})).filter(({resume:e})=>"deleted"!==e.status);return X`
1053
+ <section class="profile-edit-dialog__section profile-edit-dialog__section--resume" aria-label="Resume">
1054
+ <fieldset>
1055
+ <legend class="sr-only">Resume entries</legend>
1056
+ ${t.map(({index:t},i)=>function({resumeData:e,index:n,displayIndex:t,onDelete:i,onChange:o}){const a=e[n],r=`Resume ${t+1}`,l=`resume-experience-heading-${n}`,s=`resume-title-${n}`,d=`resume-organization-${n}`,c=`resume-organization-type-${n}`,A=`resume-organization-type-select-${n}`,p=`resume-company-url-${n}`,u=`resume-org-location-${n}`,f=`resume-description-${n}`,m=`resume-description-counter-${n}`,g=2e3,h=((null==a?void 0:a.description)||"").length,C=`Start Month ${t+1}`,b=`resume-start-month-${n}`,E=`resume-start-month-select-${n}`,_=`Start Year ${t+1}`,v=`resume-start-year-${n}`,w=`resume-start-year-select-${n}`,y=Qo(ui(null==a?void 0:a.startDate)),B=y.month,x=y.year,k=`End Month ${t+1}`,I=`resume-end-month-${n}`,$=`resume-end-month-select-${n}`,S=ui(null==a?void 0:a.endDate),D=`End Year ${t+1}`,N=`resume-end-year-${n}`,T=`resume-end-year-select-${n}`,j=Qo(S),z=j.month,F=j.year,P=`resume-current-role-${n}`,L=(new Date).getFullYear(),M=Array.from({length:120},(e,n)=>String(L-n)),W=Array.from(new Set([...M,x,F].filter(Boolean))).sort((e,n)=>Number(n)-Number(e)),R=[{value:"01",label:"January"},{value:"02",label:"February"},{value:"03",label:"March"},{value:"04",label:"April"},{value:"05",label:"May"},{value:"06",label:"June"},{value:"07",label:"July"},{value:"08",label:"August"},{value:"09",label:"September"},{value:"10",label:"October"},{value:"11",label:"November"},{value:"12",label:"December"}],U=(e,n="Select Month")=>X`
1057
+ <option value="" ?selected=${!e}>${n}</option>
1058
+ ${R.map(n=>X`
1059
+ <option value=${n.value} ?selected=${n.value===e}>${n.label}</option>
1060
+ `)}
1061
+ `,H=(e,n="Select Year")=>X`
1062
+ <option value="" ?selected=${!e}>${n}</option>
1063
+ ${W.map(n=>X`
1064
+ <option value=${n} ?selected=${n===e}>${n}</option>
1065
+ `)}
1066
+ `,Y=e=>n=>{const t=Vo(n.target.value);a&&(yi(a,e,t,Zo),o())},O=(e,n)=>{if(e&&n)return(0,Me.literal)(`${n}-${e}-01`)};return X`
1067
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--resume-entry-header" role="group" aria-labelledby=${l}>
1068
+ <h3 id=${l} class="profile-edit-dialog__entry-heading">${r}</h3>
1069
+ <div class="profile-edit-dialog__actions profile-edit-dialog__actions--edge">
1070
+ <button
1071
+ type="button"
1072
+ class="profile-edit-dialog__delete-button"
1073
+ aria-label=${`Delete resume ${t+1}`}
1074
+ title=${ve}
1075
+ @click=${e=>{e.preventDefault(),i()}}
1076
+ >
1077
+ <span class="profile-edit-dialog__delete-icon" aria-hidden="true">${Ve}</span>
1078
+ </button>
1079
+ </div>
1080
+ </div>
1081
+ <label aria-label=${`${r} Title`} class="label profile-edit-dialog__field">
1082
+ Title
1083
+ <input
1084
+ class="input"
1085
+ type="text"
1086
+ name=${s}
1087
+ .value=${(null==a?void 0:a.title)||""}
1088
+ data-contact-field="title"
1089
+ data-entry-node=${(null==a?void 0:a.entryNode)||""}
1090
+ data-row-status=${(null==a?void 0:a.status)||"n/a"}
1091
+ placeholder="Title"
1092
+ autocomplete="title"
1093
+ inputmode="text"
1094
+ @change=${Y("title")}
1095
+ />
1096
+ </label>
1097
+ <div class="profile-edit-dialog__row">
1098
+ <label aria-label=${`${r} Organization Name`} class="label profile-edit-dialog__field">
1099
+ Company or Organization
1100
+ <input
1101
+ class="input"
1102
+ type="text"
1103
+ name=${d}
1104
+ .value=${(null==a?void 0:a.orgName)||""}
1105
+ required
1106
+ data-contact-field="organizationName"
1107
+ data-entry-node=${(null==a?void 0:a.entryNode)||""}
1108
+ data-row-status=${(null==a?void 0:a.status)||"n/a"}
1109
+ placeholder="Company or Organization"
1110
+ autocomplete="organization"
1111
+ inputmode="text"
1112
+ @change=${Y("orgName")}
1113
+ />
1114
+ </label>
1115
+ <label aria-label=${`${r} Organization Type`} class="label profile-edit-dialog__field">
1116
+ Organization Type
1117
+ <select name=${c} id=${A} @change=${e=>{const n=e.target.value;a&&(vi(a,"orgType",n),o())}} .value=${(null==a?void 0:a.orgType)||""}>
1118
+ <option value="Corporation">Corporation</option>
1119
+ <option value="EducationalOrganization">Educational Organization</option>
1120
+ <option value="ResearchOrganization">Research Organization</option>
1121
+ <option value="GovernmentOrganization">Government Organization</option>
1122
+ <option value="NGO">NGO</option>
1123
+ <option value="PerformingGroup">Performing Group</option>
1124
+ <option value="Project">Project</option>
1125
+ <option value="SportsOrganization">Sports Organization</option>
1126
+ <option value="Other">Other</option>
1127
+ </select>
1128
+ </label>
1129
+ </div>
1130
+ <div class="profile-edit-dialog__row">
1131
+ <label aria-label=${`${r} Company URL`} class="label profile-edit-dialog__field">
1132
+ Company URL
1133
+ <input
1134
+ class="input"
1135
+ type="text"
1136
+ name=${p}
1137
+ .value=${(null==a?void 0:a.orgHomePage)||""}
1138
+ data-contact-field="orgHomePage"
1139
+ data-entry-node=${(null==a?void 0:a.entryNode)||""}
1140
+ data-row-status=${(null==a?void 0:a.status)||"n/a"}
1141
+ placeholder="Company URL"
1142
+ autocomplete="url"
1143
+ inputmode="text"
1144
+ @change=${Y("orgHomePage")}
1145
+ />
1146
+ </label>
1147
+ <label aria-label=${`${r} Location`} class="label profile-edit-dialog__field profile-edit-dialog__field--resume-location">
1148
+ Location
1149
+ <input
1150
+ class="input"
1151
+ type="text"
1152
+ name=${u}
1153
+ .value=${(null==a?void 0:a.orgLocation)||""}
1154
+ data-contact-field="orgLocation"
1155
+ data-entry-node=${(null==a?void 0:a.entryNode)||""}
1156
+ data-row-status=${(null==a?void 0:a.status)||"n/a"}
1157
+ placeholder="Location"
1158
+ autocomplete="address-level2"
1159
+ inputmode="text"
1160
+ @change=${Y("orgLocation")}
1161
+ />
1162
+ </label>
1163
+ </div>
1164
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--resume-dates">
1165
+ <label aria-label=${`Start Date ${t+1}`} class="label profile-edit-dialog__field profile-edit-dialog__field--date-group">
1166
+ <span>Start Date</span>
1167
+ <div class="profile-edit-dialog__date-pair">
1168
+ <select name=${b} id=${E} aria-label=${C} @change=${t=>{var i;const a=t.target.value,r=Qo(ui(null===(i=e[n])||void 0===i?void 0:i.startDate)).year||String(L),l=O(a,r);e[n]&&(yi(e[n],"startDate",l,Zo),o())}}>
1169
+ ${U(B)}
1170
+ </select>
1171
+ <select name=${v} id=${w} aria-label=${_} @change=${t=>{var i;const a=t.target.value,r=Qo(ui(null===(i=e[n])||void 0===i?void 0:i.startDate)).month||"01",l=O(r,a);e[n]&&(yi(e[n],"startDate",l,Zo),o())}}>
1172
+ ${H(x)}
1173
+ </select>
1174
+ </div>
1175
+ </label>
1176
+ <label aria-label=${`End Date ${t+1}`} class="label profile-edit-dialog__field profile-edit-dialog__field--date-group">
1177
+ <span>End Date</span>
1178
+ <div class="profile-edit-dialog__date-pair">
1179
+ <select
1180
+ name=${I}
1181
+ id=${$}
1182
+ aria-label=${k}
1183
+ @change=${t=>{var i;const a=t.target.value,r=Qo(ui(null===(i=e[n])||void 0===i?void 0:i.endDate)).year||String(L),l=O(a,r);e[n]&&(yi(e[n],"endDate",l,Zo),o())}}
1184
+ ?disabled=${Boolean(null==a?void 0:a.isCurrentRole)}
1185
+ >
1186
+ ${U(z,(null==a?void 0:a.isCurrentRole)?"Present":"Select Month")}
1187
+ </select>
1188
+ <select
1189
+ name=${N}
1190
+ id=${T}
1191
+ aria-label=${D}
1192
+ @change=${t=>{var i;const a=t.target.value,r=Qo(ui(null===(i=e[n])||void 0===i?void 0:i.endDate)).month||"01",l=O(r,a);e[n]&&(yi(e[n],"endDate",l,Zo),o())}}
1193
+ ?disabled=${Boolean(null==a?void 0:a.isCurrentRole)}
1194
+ >
1195
+ ${H(F,(null==a?void 0:a.isCurrentRole)?"":"Select Year")}
1196
+ </select>
1197
+ </div>
1198
+ </label>
1199
+ </div>
1200
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--inline-end">
1201
+ <label class="label profile-edit-dialog__checkbox-label" for=${P}>
1202
+ <input
1203
+ class="profile-edit-dialog__checkbox-input"
1204
+ type="checkbox"
1205
+ id=${P}
1206
+ name="isCurrentRole"
1207
+ .checked=${Boolean(null==a?void 0:a.isCurrentRole)}
1208
+ @change=${t=>{const i=t.target;if(e[n]){yi(e[n],"isCurrentRole",i.checked,Zo),i.checked&&yi(e[n],"endDate",void 0,Zo);const t=i.form||i.closest("form"),o=null==t?void 0:t.querySelector(`#${$}`),a=null==t?void 0:t.querySelector(`#${T}`);if(o){o.disabled=i.checked,o.value="";const e=o.options[0];e&&(e.text=i.checked?"Present":"Select Month")}if(a){a.disabled=i.checked,a.value="";const e=a.options[0];e&&(e.text=i.checked?"":"Select Year")}}}}
1209
+ />
1210
+ <span>I am currently working in this role</span>
1211
+ </label>
1212
+ </div>
1213
+ <label aria-label=${`${r} Description`} class="label profile-edit-dialog__field profile-edit-dialog__field--full profile-edit-dialog__field--stack">
1214
+ <span>Description</span>
1215
+ <textarea
1216
+ class="profile-edit-dialog__textarea"
1217
+ name=${f}
1218
+ rows="4"
1219
+ .value=${(null==a?void 0:a.description)||""}
1220
+ maxlength=${g}
1221
+ aria-describedby=${m}
1222
+ data-contact-field="description"
1223
+ data-entry-node=${(null==a?void 0:a.entryNode)||""}
1224
+ data-row-status=${(null==a?void 0:a.status)||"n/a"}
1225
+ placeholder="Description"
1226
+ autocomplete="off"
1227
+ inputmode="text"
1228
+ @input=${t=>{const i=Vo(t.target.value.slice(0,g));e[n]&&(yi(e[n],"description",i,Zo),o())}}
1229
+ ></textarea>
1230
+ <small id=${m} aria-live="polite">${h}/${g}</small>
1231
+ </label>
1232
+ `}({resumeData:e,index:t,displayIndex:i,onDelete:()=>{_i(e,t),n()},onChange:n}))}
1233
+ </fieldset>
1234
+ </section>
1235
+ `}function Go(e,n){const t=document.createElement("form");t.classList.add("profile__edit-form"),t.classList.add("profile__edit-form--resume");const i=function(e){const n=(e||[]).map(e=>{var n;return{title:Vo(ui(e.title)),roleType:Vo(ui(e.roleType)),startDate:e.startDate,endDate:e.endDate,isCurrentRole:null!==(n=e.isCurrentRole)&&void 0!==n?n:!e.endDate,orgName:Vo(ui(e.orgName)),orgType:Vo(ui(e.orgType)),orgLocation:Vo(ui(e.orgLocation)),orgHomePage:Vo(ui(e.orgHomePage)),description:Vo(ui(e.description)),entryNode:ui(e.entryNode),status:ui(e.entryNode)?"existing":"new"}}).filter(e=>Zo(e)||Boolean(e.entryNode));return{resumeData:n.length?n:[{title:"",roleType:"",startDate:void 0,endDate:void 0,isCurrentRole:!1,orgName:"",orgType:"",orgLocation:"",orgHomePage:"",description:"",entryNode:"",status:"new"}]}}(e),o=(e={})=>{const{preserveState:a=!0,focusSelector:r}=e,l=a?function(e){const n=e.closest("dialog"),t=null==n?void 0:n.querySelector("#modal-desc"),i=e.ownerDocument.activeElement;return{dialogScrollTop:(null==n?void 0:n.scrollTop)||0,descriptionScrollTop:(null==t?void 0:t.scrollTop)||0,activeId:(null==i?void 0:i.id)||"",activeName:(null==i?void 0:i.getAttribute("name"))||""}}(t):null;!function(e,n,t,i){ue(X`
1236
+ ${Xo(n.resumeData,t)}
1237
+ ${"owner"!==i?X`<p class="profile-edit-dialog__login-message">${we}</p>`:null}
1238
+ `,e)}(t,i,o,n),l&&function(e,n){const t=e.closest("dialog"),i=null==t?void 0:t.querySelector("#modal-desc");t&&(t.scrollTop=n.dialogScrollTop),i&&(i.scrollTop=n.descriptionScrollTop);const o=n.activeId&&"undefined"!=typeof CSS&&"function"==typeof CSS.escape?CSS.escape(n.activeId):n.activeId,a=n.activeName&&"undefined"!=typeof CSS&&"function"==typeof CSS.escape?CSS.escape(n.activeName):n.activeName;let r=null;o&&(r=e.querySelector(`#${o}`)),!r&&a&&(r=e.querySelector(`[name="${a}"]`)),r&&"function"==typeof r.focus&&r.focus({preventScroll:!0})}(t,l),r&&function(e,n){const t=e.querySelector(n);t&&"function"==typeof t.focus&&(t.focus({preventScroll:!0}),(t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement)&&t.select())}(t,r)};o();return{form:t,formState:i,rerender:o,addRow:()=>{i.resumeData.unshift({title:"",roleType:"",startDate:void 0,endDate:void 0,isCurrentRole:!1,orgName:"",orgType:"",orgLocation:"",orgHomePage:"",description:"",entryNode:"",status:"new"}),o({preserveState:!1,focusSelector:'[name="resume-title-0"]'})}}}async function Ko(e,n,t,i,o,a){var r;const l=(null===(r=e.currentTarget)||void 0===r?void 0:r.ownerDocument)||document,{form:s,formState:d,rerender:c,addRow:A}=Go(i,o),p=await Wt({title:"Edit Resume",dom:l,form:s,headerAction:{type:"button",label:"+ Add More",ariaLabel:"Add another resume entry",onClick:A},submitLabel:Ee,cancelLabel:_e,validate:async()=>{if("owner"!==o)return we;const e=wi(d.resumeData,Zo);if(!(e.create.length>0||e.update.length>0||e.remove.length>0))return"No resume changes detected.";const n=function(e){for(let n=0;n<e.length;n++){const t=e[n];if(!t||"deleted"===t.status)continue;if(!Zo(t))continue;const i=ui(t.endDate).trim();if(!t.isCurrentRole&&!i)return{ok:!1,message:`Resume ${n+1}: End Year is required unless "I am currently working in this role" is selected.`}}return{ok:!0}}(d.resumeData);return n.ok?null:n.message||"Please complete the required resume fields."},onSave:async()=>{const e=wi(d.resumeData,Zo);await qo(n,t,e),c()},formatSaveError:e=>`Could not save resume updates. ${e instanceof Error?e.message:String(e)}`});p&&(a?await a():await function(e,n="Information",t){return Mt({title:n,message:e,buttons:[{label:"OK",value:!0,primary:!0}],dom:t})}("Resume updates saved. Refresh to see latest values.","Saved",l))}function Jo(e){return e&&e.length?X`${e.map((e,n)=>function(e,n){if(!e)return X``;const t=`cv-role-title-${n}`,i=`cv-role-period-${n}`,o=`cv-role-org-${n}`,a=`cv-role-description-${n}`,r=e.description?`${i} ${o} ${a}`:`${i} ${o}`;return X`
1239
+ <li class="cvRole" role="listitem" aria-labelledby=${t} aria-describedby=${r}>
1240
+ <div class="cvRoleHeader">
1241
+ <h4 id=${t}>${e.title}</h4>
1242
+ <p id=${i} class="cvRolePeriod">
1243
+ <time datetime=${Hi(e.startDate)}>${Ui(e.startDate)}</time>
1244
+ <span aria-hidden="true"> to </span>
1245
+ ${e.endDate?X`<time datetime=${Hi(e.endDate)}>${Ui(e.endDate)}</time>`:X`<span>Present</span>`}
1246
+ </p>
1247
+ </div>
1248
+ <p class="cvOrg" id=${o}>
1249
+ <strong>${e.orgName}</strong>${e.orgLocation?X` | ${e.orgLocation}`:""}
1250
+ </p>
1251
+ ${e.description?X`
1252
+ <div class="cvDescriptionWrap">
1253
+ <p class="cvDescriptionText" id=${a}>${e.description}</p>
1254
+ <button
1255
+ type="button"
1256
+ class="cvDescriptionToggle"
1257
+ aria-controls=${a}
1258
+ aria-expanded="false"
1259
+ hidden
1260
+ @click=${Ri}
1261
+ >
1262
+ ...more
1263
+ </button>
1264
+ </div>
1265
+ `:""}
1266
+ </li>
1267
+ `}(e,n))}`:X``}function ea(e,n,t,i,o){Wi();const a=t.length>0,r=a?(l=t,Array.isArray(l)&&l.length>0?X`
1268
+ <article class="cvCard" aria-label="Resume" data-testid="curriculum-vitae">
1269
+ <section class="cvSection">
1270
+ <ul role="list" aria-label="Work experience in chronological order">
1271
+ ${Jo(l)}
1272
+ </ul>
1273
+ </section>
1274
+ </article>
1275
+ `:X``):X``;var l;return X`
1276
+ <section
1277
+ aria-labelledby="cv-heading"
1278
+ class="profile__section border-lighter profile-section-collapsible profile-section-collapsible--inline-mobile-actions"
1279
+ role="region"
1280
+ tabindex="-1"
1281
+ data-expanded="false"
1282
+ >
1283
+ <header class="profile__section-header profile-section-collapsible__header">
1284
+ <h2 id="cv-heading" tabindex="-1">${ge}</h2>
1285
+ <div class="profile-section-collapsible__actions flex-column">
1286
+ ${"owner"===i?X`
1287
+ <button
1288
+ type="button"
1289
+ class="profile__action-button profile-action-text flex-center profile-section-collapsible__edit-button"
1290
+ aria-label="Edit resume details"
1291
+ @click=${a=>Ko(a,e,n,t,i,o)}
1292
+ >
1293
+ <span class="profile-section-collapsible__edit-label">${an} Edit</span>
1294
+ <span class="profile-section-collapsible__edit-icon" aria-hidden="true">${an}</span>
1295
+ </button>
1296
+ `:X``}
1297
+ <button
1298
+ type="button"
1299
+ class="inline-flex-row"
1300
+ aria-label="Toggle resume section"
1301
+ aria-controls="cv-panel"
1302
+ aria-expanded="false"
1303
+ @click=${Yi}
1304
+ >
1305
+ <span class="profile-section-collapsible__chevron" aria-hidden="true">⌄</span>
1306
+ </button>
1307
+ </div>
1308
+ </header>
1309
+ <div id="cv-panel" class="profile-section-collapsible__content" aria-hidden="true">
1310
+ ${a?r:X`<p>No resume details added yet.</p>`}
1311
+ </div>
1312
+ </section>
1313
+ `}function na(e,n,t,i,o){return X`
1314
+ <section
1315
+ aria-labelledby="resume-heading"
1316
+ data-profile-section="resume"
1317
+ class="profile__section--empty border-lighter flex-column-center rounded-md gap-lg"
1318
+ role="region"
1319
+ tabindex="-1"
1320
+ >
1321
+ ${function(e,n,t,i,o){return X`
1322
+ <div class="profile__empty-state-content flex-column-center" role="group" aria-label="Empty resume section">
1323
+ <h2 id="resume-heading" tabindex="-1">${ge}</h2>
1324
+ <p class="profile__empty-state-message">
1325
+ You haven't included any professional experience yet. Consider adding your work history to enhance your resume.
1326
+ </p>
1327
+ </div>
1328
+ <button
1329
+ type="button"
1330
+ class="profile__action-button--empty"
1331
+ aria-label="Add resume details"
1332
+ @click=${a=>Ko(a,e,n,t,i,o)}
1333
+ >
1334
+ <span class="profile__action-icon" aria-hidden="true">${Ye} Add Resume</span>
1335
+ </button>
1336
+
1337
+ `}(e,n,t,i,o)}
1338
+ </section>
1339
+ `}function ta(e){const n=(e.url||"").trim();if(!n)return null;try{return(0,Me.sym)(new URL(n).href)}catch{return null}}function ia(e){const n=(e||"").trim();if(!n)return"";try{const e=new URL(n);return e.hash="",e.href}catch{return n}}function oa(e){var n,t,i,o,a,r,l,s,d,c,A,p;return`${(null===(t=null===(n=e.subject)||void 0===n?void 0:n.toNT)||void 0===t?void 0:t.call(n))||(null===(i=e.subject)||void 0===i?void 0:i.value)} ${(null===(a=null===(o=e.predicate)||void 0===o?void 0:o.toNT)||void 0===a?void 0:a.call(o))||(null===(r=e.predicate)||void 0===r?void 0:r.value)} ${(null===(s=null===(l=e.object)||void 0===l?void 0:l.toNT)||void 0===s?void 0:s.call(l))||(null===(d=e.object)||void 0===d?void 0:d.value)} ${(null===(A=null===(c=e.why)||void 0===c?void 0:c.toNT)||void 0===A?void 0:A.call(c))||(null===(p=e.why)||void 0===p?void 0:p.value)}`}async function aa(e,n,t,i){const o=e.updater;if(!o||"function"!=typeof o.update)throw new Error("Project updates are not supported by this store updater.");const{safeDeletions:a,safeInsertions:r}=function(e,n,t){return{safeDeletions:Array.from(new Map((n||[]).filter(n=>!!(n&&n.subject&&n.predicate&&n.object)&&e.holds(n.subject,n.predicate,n.object,n.why)).map(e=>[oa(e),e])).values()),safeInsertions:Array.from(new Map((t||[]).filter(e=>Boolean(e&&e.subject&&e.predicate&&e.object)).map(e=>[oa(e),e])).values())}}(e,t,i);if(0===a.length&&0===r.length)return;try{return void await new Promise((e,n)=>{o.update(a,r,(t,i,o)=>{!0!==i?n(new Error(o||"Failed to save projects")):e()})})}catch(t){const i=t instanceof Error?t.message:String(t);if(!function(e){const n=(e||"").toLowerCase();return n.includes(" on patch ")||n.includes("web error: 500")||n.includes("web error: 501")||n.includes("web error: 405")||n.includes("web error: 400")}(i)||"function"!=typeof o.updateDav)throw t;if(e.fetcher&&"function"==typeof e.fetcher.load)try{await e.fetcher.load(n)}catch{}try{await new Promise((e,t)=>{o.updateDav(n,a,r,(n,o,a)=>{!0!==o?t(new Error(a||i||"Failed to save projects")):e()})})}catch(t){if(!function(e){return(e||"").toLowerCase().includes("no record of our http get request for document")}(t instanceof Error?t.message:String(t)))throw t;await async function(e,n,t,i){const o=e.updater,a=e.fetcher;if(!o||"function"!=typeof o.serialize||!a||"function"!=typeof a.webOperation)throw new Error("Project updates are not supported by this store updater.");const r=e.statementsMatching(void 0,void 0,void 0,n).slice(),l=new Set((t||[]).map(e=>oa(e))),s=r.filter(e=>!l.has(oa(e))).concat(i||[]),d="text/turtle",c=o.serialize(n.value,s,d),A=await a.webOperation("PUT",n.value,{noMeta:!0,contentType:d,body:c});if(!A||!0!==A.ok){const e=(null==A?void 0:A.status)||"unknown";throw new Error(`Web error: ${e} on PUT of <${n.value}>`)}e.remove(t),i.forEach(n=>{e.add(n.subject,n.predicate,n.object,n.why)})}(e,n,a,r)}}}async function ra(e,n,t){try{await async function(e,n,t){const i=n.doc(),o=e.each(n,me.ns.solid("community"),null,i),a=new Map;o.forEach(e=>{if(!e||"NamedNode"!==e.termType)return;const n=ia(e.value);n&&!a.has(n)&&a.set(n,e)});const r=[],l=[],s=e=>{r.push((0,Me.st)(n,me.ns.solid("community"),e,i))},d=e=>{l.push((0,Me.st)(n,me.ns.solid("community"),e,i))};t.remove.forEach(e=>{const n=ia(e.entryNode||""),t=ia(e.url),i=n&&a.get(n)||t&&a.get(t);i&&s(i)}),t.update.forEach(e=>{const n=ta(e),t=ia(e.url),i=ia(e.entryNode||""),o=i&&a.get(i)||t&&a.get(t);o&&s(o),n&&d(n)});const c=new Set;t.create.forEach(e=>{const n=ia(e.url);if(n&&(a.has(n)||c.has(n)))return;const t=ta(e);t&&(d(t),n&&c.add(n))}),await aa(e,i,r,l)}(e,n,t)}catch(e){const n=e instanceof Error?e.message:String(e);throw new Error(`Failed to save projects: ${n}`)}}function la(e){return mi(e)}function sa(e){const n=la(e);if(!n)return!1;try{const e=new URL(n);return"https:"===e.protocol&&"/profile/card"===e.pathname&&"#me"===e.hash}catch{return!1}}function da(e){return[e.url,e.entryNode].some(gi)}function ca(e,n){return X`
1340
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--project">
1341
+ <label aria-label="Project or community WebID" class="label profile-edit-dialog__field profile-edit-dialog__field--full">
1342
+ <p>Type or paste a project or community WebID.</p>
1343
+ <div class="profile-edit-dialog__input-wrap">
1344
+ <input
1345
+ class="input profile-edit-dialog__input--with-action"
1346
+ type="text"
1347
+ name=${"project-0"}
1348
+ .value=${(null==e?void 0:e.url)||""}
1349
+ required
1350
+ data-contact-field="url"
1351
+ data-entry-node=${(null==e?void 0:e.entryNode)||""}
1352
+ data-row-status=${(null==e?void 0:e.status)||"n/a"}
1353
+ placeholder="Type or paste project/community WebID here"
1354
+ autocomplete="off"
1355
+ inputmode="text"
1356
+ @input=${n=>{const t=la(n.target.value);yi(e,"url",t,da)}}
1357
+ />
1358
+ <button
1359
+ type="button"
1360
+ class="profile-edit-dialog__paste-button rounded-sm gap-xxs"
1361
+ aria-label="Paste project or community URL from clipboard"
1362
+ title=${"Paste"}
1363
+ @click=${async t=>{var i;t.preventDefault();try{const o=await async function(e){const n=la(await navigator.clipboard.readText());return n?(yi(e,"url",n,da),n):""}(e);if(n(),!sa(o))return;const a=((null===(i=t.currentTarget)||void 0===i?void 0:i.ownerDocument)||document).querySelector("#profile-modal #modal-buttons .btn-primary");null==a||a.click()}catch{}}}
1364
+ >
1365
+ <span class="profile-edit-dialog__paste-icon" aria-hidden="true">${tn}</span>
1366
+ Paste
1367
+ </button>
1368
+ </div>
1369
+ </label>
1370
+ </div>
1371
+ `}function Aa(e,n,t){ue(X`
1372
+ ${ca(n.project,()=>Aa(e,n,t))}
1373
+ ${"owner"!==t?X`<p class="profile-edit-dialog__login-message">${we}</p>`:null}
1374
+ `,e)}function pa(e,n){const t=document.createElement("form");t.classList.add("profile__edit-form"),t.classList.add("profile__edit-form--projects");const i={project:{url:"",entryNode:"",status:"new"}};return Aa(t,i,n),{form:t,formState:i}}async function ua(e,n,t,i,o,a){var r;const l=(null===(r=e.currentTarget)||void 0===r?void 0:r.ownerDocument)||document,{form:s,formState:d}=pa(0,o),c=Wt({title:"Edit Projects & Communities",dom:l,form:s,headerAction:{type:"close"},validate:()=>{return"owner"!==o?we:gi((e=d.project).url)||gi(e.entryNode)?gi(e.url)?sa(e.url)?null:"Please enter a valid WebID in the form https://example.com/profile/card#me.":"WebID is required.":"Add a project WebID.";var e},onSave:async()=>{const e=wi([d.project],da),i={create:e.create,update:e.update,remove:e.remove};await ra(n,t,i)},formatSaveError:e=>`Could not save projects updates. ${e instanceof Error?e.message:String(e)}`}),A=l.querySelector("#profile-modal #modal-buttons"),p=null==A?void 0:A.style.display;A&&(A.style.display="none");let u=null;try{u=await c}finally{A&&(A.style.display=p||"")}u&&a&&await a()}var fa=a(2270),ma={};ma.styleTagTransform=u(),ma.setAttributes=d(),ma.insert=l().bind(null,"head"),ma.domAPI=i(),ma.insertStyleElement=A();n()(fa.A,ma);fa.A&&fa.A.locals&&fa.A.locals;function ga(e){const n=e.currentTarget,t=null==n?void 0:n.closest(".profile-section-collapsible");if(!n||!t)return;const i="true"!==t.getAttribute("data-mobile-expanded");t.setAttribute("data-mobile-expanded",String(i)),n.setAttribute("aria-expanded",String(i)),n.setAttribute("data-mobile-expanded",String(i));const o=n.querySelector(".project-card__more-label");o&&(o.textContent=i?"View Less":"View More")}function ha(e,n){var t;return{url:e.url,title:e.title,imageUrl:e.imageUrl,category:e.category,name:e.name,orgName:e.orgName,entryNode:(null===(t=e.entryNode)||void 0===t?void 0:t.value)||"",status:n}}function Ca(e,n,t,i,o){if(!e)return X``;const a=(e.category||"").trim().toLowerCase(),r="project"===a?"project":"community"===a?"community":"unknown",l=a&&"unknown"!==a?a.charAt(0).toUpperCase()+a.slice(1):"Uncategorized";return X`
1375
+ <li class="project-card flex-column" role="listitem">
1376
+ <a
1377
+ class="project-card__link"
1378
+ href=${e.url}
1379
+ target="_blank"
1380
+ rel="noopener noreferrer"
1381
+ aria-label=${e.title?`Open ${e.title}`:"Open project link"}
1382
+ >
1383
+ <div class="project-card__wrapper">
1384
+ <div class="project-card__thumb flex-center">
1385
+ ${function(e,n){return e?X`
1386
+ <img
1387
+ class="project-card__thumb-image"
1388
+ src=${e}
1389
+ alt=${n}
1390
+ loading="lazy"
1391
+ />
1392
+ `:X`
1393
+ <div class="project-card__thumb-fallback flex-center" role="img" aria-label=${n} tabindex="0">
1394
+ ${n}
1395
+ </div>
1396
+ `}(e.imageUrl,e.title||"Project preview")}
1397
+ </div>
1398
+ <div class="project-card__content">
1399
+ <p class="project-card__title"><strong>${e.title||e.url}</strong></p>
1400
+ <p class="project-card__organization">${e.orgName||"Organization unknown"}</p>
1401
+ <p class="project-card__category project-card__category--${r}">${l}</p>
1402
+ </div>
1403
+ </div>
1404
+ </a>
1405
+ ${"owner"===i?X`
1406
+ <div class="project-card__footer">
1407
+ <button
1408
+ type="button"
1409
+ class="project-card__follow-button flex-center gap-xxs"
1410
+ aria-label="Unfollow project"
1411
+ @click=${async a=>{if(a.preventDefault(),"owner"!==i)return;const r={create:[],update:[],remove:[ha(e,"deleted")]};await ra(n,t,r),o&&await o()}}
1412
+ >
1413
+ <span>${He} Following</span>
1414
+ </button>
1415
+ </div>
1416
+ `:X``}
1417
+ </li>
1418
+ `}function ba(e,n,t,i,o){return X`
1419
+ <section
1420
+ aria-labelledby="projects-heading"
1421
+ data-profile-section="projects"
1422
+ class="profile__section--empty border-lighter flex-column-center rounded-md gap-lg"
1423
+ role="region"
1424
+ tabindex="-1"
1425
+ >
1426
+ ${function(e,n,t,i,o){return X`
1427
+ <div class="profile__empty-state-content flex-column-center" role="group" aria-label="Empty projects section">
1428
+ <h2 id="projects-heading" tabindex="-1">${be}</h2>
1429
+ <p class="profile__empty-state-message">
1430
+ You haven't added any projects yet. Consider adding a project to boost your profile.
1431
+ </p>
1432
+ </div>
1433
+ <button
1434
+ type="button"
1435
+ class="profile__action-button--empty"
1436
+ aria-label="Add project details"
1437
+ @click=${t=>ua(t,e,n,0,i,o)}
1438
+ >
1439
+ <span class="profile__action-icon" aria-hidden="true">${Ye} Add Project</span>
1440
+ </button>
191
1441
 
192
- <article
193
- aria-labelledby="profile-card-heading"
194
- class="profileSection section-bg"
1442
+ `}(e,n,0,i,o)}
1443
+ </section>
1444
+ `}function Ea(e,n,t,i,o){return e&&e.length&&e[0]?X`${Ca(e[0],n,t,i,o)}${e.length>1?Ea(e.slice(1),n,t,i,o):X``}`:X``}function _a(e,n,t,i,o){const a=Array.isArray(t)&&t.length>0,r=Math.max(0,t.length-2);return X`
1445
+ <section
1446
+ class="profile__section border-lighter profile-section-collapsible profile-section-collapsible--inline-mobile-actions"
1447
+ aria-labelledby="projects-heading"
195
1448
  role="region"
196
1449
  tabindex="-1"
1450
+ data-expanded="false"
1451
+ data-mobile-expanded="${r>0?"false":"true"}"
197
1452
  >
198
- <header class="text-center mb-md">
199
- <h2 id="profile-card-heading" tabindex="-1">${i.name}</h2>
1453
+ <header class="profile__section-header profile-section-collapsible__header">
1454
+ <h2 id="projects-heading">${be}</h2>
1455
+ <div class="profile-section-collapsible__actions flex-column">
1456
+ ${"owner"===i?X`
1457
+ <button
1458
+ type="button"
1459
+ class="profile__action-button profile-action-text flex-center profile-section-collapsible__edit-button"
1460
+ aria-label="Add or edit projects"
1461
+ @click=${t=>ua(t,e,n,0,i,o)}
1462
+ >
1463
+ <span class="profile-section-collapsible__edit-label profile__add-more-content inline-flex-row">
1464
+ <span class="profile__add-more-icon inline-flex-row" aria-hidden="true">${Xe}</span>
1465
+ Add More
1466
+ </span>
1467
+ <span class="profile-section-collapsible__edit-icon profile-section-collapsible__edit-icon--add profile-section-collapsible__edit-icon--projects" aria-hidden="true">${Ye}</span>
1468
+ </button>
1469
+ `:X``}
1470
+ <button
1471
+ type="button"
1472
+ class="inline-flex-row"
1473
+ aria-label="Toggle projects section"
1474
+ aria-controls="projects-panel"
1475
+ aria-expanded="false"
1476
+ @click=${Yi}
1477
+ >
1478
+ <span class="profile-section-collapsible__chevron" aria-hidden="true">⌄</span>
1479
+ </button>
1480
+ </div>
200
1481
  </header>
201
- ${we(i,e,n)}
202
- </article>
1482
+ <div id="projects-panel" class="profile-section-collapsible__content" aria-hidden="true">
1483
+ ${a?X`
1484
+ <ul id="projects-rail" class="project-card__rail" role="list" aria-label="Known projects">
1485
+ ${Ea(t,e,n,i,o)}
1486
+ </ul>
1487
+ ${r>0?X`
1488
+ <button
1489
+ type="button"
1490
+ class="project-card__more-button"
1491
+ aria-controls="projects-rail"
1492
+ aria-expanded="false"
1493
+ data-mobile-expanded="false"
1494
+ @click=${ga}
1495
+ >
1496
+ <span class="project-card__more-icon" aria-hidden="true">${sn}</span>
1497
+ <span class="project-card__more-label">View More</span>
1498
+ </button>
1499
+ `:X``}
1500
+ `:X`<p>No projects added yet.</p>`}
1501
+ </div>
1502
+ </section>
1503
+ `}var va=a(1569),wa={};wa.styleTagTransform=u(),wa.setAttributes=d(),wa.insert=l().bind(null,"head"),wa.domAPI=i(),wa.insertStyleElement=A();n()(va.A,wa);va.A&&va.A.locals&&va.A.locals;function ya(e,n,t,i){const o=i.value.startsWith("tel:")?i.value:`tel:${i.value}`,a=(0,Me.sym)(o),r=[(0,Me.st)(e,me.ns.vcard("hasTelephone"),t,n),(0,Me.st)(t,me.ns.vcard("value"),a,n)];return i.type&&r.push((0,Me.st)(t,me.ns.rdf("type"),me.ns.vcard(i.type),n)),r}function Ba(e,n,t,i){const o=i.value.startsWith("mailto:")?i.value:`mailto:${i.value}`,a=(0,Me.sym)(o),r=[(0,Me.st)(e,me.ns.vcard("hasEmail"),t,n),(0,Me.st)(t,me.ns.vcard("value"),a,n)];return i.type&&r.push((0,Me.st)(t,me.ns.rdf("type"),me.ns.vcard(i.type),n)),r}function xa(e,n,t,i){const o=[(0,Me.st)(e,me.ns.vcard("hasAddress"),t,n)];return i.type&&o.push((0,Me.st)(t,me.ns.rdf("type"),me.ns.vcard(i.type),n)),i.streetAddress&&o.push((0,Me.st)(t,me.ns.vcard("street-address"),i.streetAddress,n)),i.locality&&o.push((0,Me.st)(t,me.ns.vcard("locality"),i.locality,n)),i.region&&o.push((0,Me.st)(t,me.ns.vcard("region"),i.region,n)),i.postalCode&&o.push((0,Me.st)(t,me.ns.vcard("postal-code"),i.postalCode,n)),i.countryName&&o.push((0,Me.st)(t,me.ns.vcard("country-name"),i.countryName,n)),o}function ka(e,n){return e.find(e=>Boolean(e.entryNode)&&Boolean(Xt(n,e.entryNode)))}function Ia(e){return e.find(e=>!e.entryNode)}async function $a(e,n,t){const i=n.doc(),o=[],a=[],r=(t,r)=>{const l=(r||"").trim(),s=l?(0,Me.literal)(l):null;Qt(e,n,t,i,o,a,s)},l=(t,l=!1)=>{const s=l?{name:"",nickname:"",dateOfBirth:"",jobTitle:"",orgName:"",imageSrc:""}:t;r(me.ns.vcard("fn"),s.name),r(me.ns.foaf("nick"),s.nickname),r(me.ns.vcard("nickname"),s.nickname),r(me.ns.vcard("bday"),s.dateOfBirth),r(me.ns.vcard("role"),s.jobTitle),r(me.ns.vcard("organization-name"),s.orgName),(t=>{const r=(t||"").trim(),l=r?r.startsWith("http://")||r.startsWith("https://")?(0,Me.sym)(r):(0,Me.literal)(r):null;Qt(e,n,me.ns.vcard("hasPhoto"),i,o,a,l)})(s.imageSrc)},s=t.remove[0],d=t.update[0],c=t.create[0],A=d||c||s;A&&l(A,Boolean(s&&!d&&!c)),await qt(e,o,a)}async function Sa(e,n,t){try{await $a(e,n,t.basicOps),await async function(e,n,t){const i=n.doc(),o=e.each(n,me.ns.vcard("hasTelephone"),null,i),a=[],r=[],l=ka(t.remove,o),s=ka(t.update,o),d=Ia(t.create)||t.create[0];if(null==l?void 0:l.entryNode){const t=Xt(o,l.entryNode);if(t){const o=Zt(e,n,me.ns.vcard("hasTelephone"),i).linkStatements.find(e=>{var n;return(null===(n=e.object)||void 0===n?void 0:n.value)===t.value});o&&a.push(o),a.push(...Vt(e,t,i))}}if(s){const t=Xt(o,s.entryNode);t&&(a.push(...Vt(e,t,i)),r.push(...ya(n,i,t,s)))}d&&r.push(...ya(n,i,Kt(i),d)),await qt(e,a,r)}(e,n,t.phoneOps),await async function(e,n,t){const i=n.doc(),o=e.each(n,me.ns.vcard("hasEmail"),null,i),a=[],r=[],l=ka(t.remove,o),s=ka(t.update,o),d=Ia(t.create)||t.create[0];if(null==l?void 0:l.entryNode){const t=Xt(o,l.entryNode);if(t){const o=Zt(e,n,me.ns.vcard("hasEmail"),i).linkStatements.find(e=>{var n;return(null===(n=e.object)||void 0===n?void 0:n.value)===t.value});o&&a.push(o),a.push(...Vt(e,t,i))}}if(s){const t=Xt(o,s.entryNode);t&&(a.push(...Vt(e,t,i)),r.push(...Ba(n,i,t,s)))}d&&r.push(...Ba(n,i,Kt(i),d)),await qt(e,a,r)}(e,n,t.emailOps),await async function(e,n,t){const i=n.doc(),o=e.each(n,me.ns.vcard("hasAddress"),null,i),a=[],r=[],l=ka(t.remove,o),s=ka(t.update,o),d=Ia(t.create)||t.create[0];if(null==l?void 0:l.entryNode){const t=Xt(o,l.entryNode);if(t){const o=Zt(e,n,me.ns.vcard("hasAddress"),i).linkStatements.find(e=>{var n;return(null===(n=e.object)||void 0===n?void 0:n.value)===t.value});o&&a.push(o),a.push(...Vt(e,t,i))}}if(s){const t=Xt(o,s.entryNode);t&&(a.push(...Vt(e,t,i)),r.push(...xa(n,i,t,s)))}d&&r.push(...xa(n,i,Kt(i),d)),await qt(e,a,r)}(e,n,t.addressOps)}catch(e){const n=e instanceof Error?e.message:String(e);throw new Error(`${Be} ${n}`)}}function Da(e){const n=e.match(/^(\d{2})[/-](\d{2})[/-](\d{4})$/);if(!n)return"";const[,t,i,o]=n;return`${t}-${i}-${o}`}function Na(e){const n=(e||"").trim();if(!n)return"";if(n.match(/^(\d{4})-(\d{2})-(\d{2})$/))return n;const t=n.match(/^(\d{2})[/-](\d{2})[/-](\d{4})$/);if(t){const[,e,n,i]=t;return`${i}-${n}-${e}`}return""}const Ta={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/svg+xml":"svg","image/webp":"webp","image/bmp":"bmp","image/tiff":"tiff","application/pdf":"pdf","text/plain":"txt","text/html":"html","application/json":"json","application/octet-stream":"bin"},ja=Object.fromEntries(Object.entries(Ta).map(([e,n])=>[n,e])),za=e=>Ta[e]||!1,Fa=e=>{var n;const t=(null===(n=e.split(".").pop())||void 0===n?void 0:n.toLowerCase())||"";return ja[t]||!1};me.icons.iconBase;const Pa=me.icons.iconBase+"noun_479395.svg";function La(e,n,t,i){const o=e.createElement("div");let a,r,l,s;o.className="profile-edit-dialog__camera-control flex-column-center";const d=(e,n)=>{e.style.display=n?"inline-flex":"none"},c=o.appendChild(e.createElement("table")).appendChild(e.createElement("tr")).appendChild(e.createElement("td"));c.setAttribute("colspan","4"),c.style.textAlign="center";const A=o.appendChild(e.createElement("div"));A.className="profile-edit-dialog__camera-control-actions";const p=o.appendChild(e.createElement("button"));p.type="button",p.classList.add("profile-edit-dialog__camera-control-cancel"),p.setAttribute("aria-label","Close camera"),p.setAttribute("title","Close"),ue(on,p),p.addEventListener("click",e=>{C(),i(null)});const u=A.appendChild(me.widgets.button(e,Pa,"Retake"));u.classList.add("profile-edit-dialog__camera-control-action"),u.addEventListener("click",e=>{c.removeChild(s),g()}),u.textContent="Retake",d(u,!1);const f=A.appendChild(me.widgets.button(e,me.icons.iconBase+"noun_10636.svg","Snap"));f.classList.add("profile-edit-dialog__camera-control-action"),f.addEventListener("click",function(){s=e.createElement("canvas"),s.setAttribute("width",me.style.canvasWidth),s.setAttribute("height",me.style.canvasHeight),s.setAttribute("style",me.style.controlStyle),c.appendChild(s);const n=s.getContext("2d");if(!n)throw new Error("Could not get canvas context for camera snapshot");n.drawImage(l,0,0,s.width,s.height),C(),l.parentNode.removeChild(l),s.toBlob(e=>{if(!e)throw new Error("Camera snapshot failed: no image blob produced");const n=`got blob type ${e.type} size ${e.size}`;console.debug(n),a=t(),r=e,d(m,!0),d(u,!0),d(f,!1)},"image/png")}),f.textContent="Take Photo",d(f,!1);const m=A.appendChild(me.widgets.continueButton(e));function g(){if(l=c.appendChild(e.createElement("video")),l.setAttribute("controls","1"),l.setAttribute("autoplay","1"),l.setAttribute("style",me.style.controlStyle),!navigator.mediaDevices)throw new Error("navigator.mediaDevices not available");navigator.mediaDevices.getUserMedia(h).then(e=>{l.srcObject=e,d(f,!0),d(m,!1),d(u,!1)}).catch(e=>{console.error("Unable to start camera preview",e),i(null)})}m.classList.add("profile-edit-dialog__camera-control-action"),m.addEventListener("click",e=>{!function(e,t){if(!e||!t)return;const o=e.type;console.debug("Putting "+e.size+" bytes of "+o+" to "+t),n.fetcher.webOperation("PUT",t.uri,{data:e,contentType:o}).then(e=>{console.debug("ok saved "+t),C(),i(t)},e=>{C(),alert(e)})}(r,a)}),m.textContent="Use Photo",d(m,!1);const h={video:{facingMode:{ideal:"environment"}}};function C(){l&&l.srcObject&&l.srcObject.getVideoTracks().forEach(e=>e.stop())}return g(),o}function Ma(e){return function(e){return"value"in e}(e)?gi(e.value):function(e){return"streetAddress"in e}(e)?[e.streetAddress,e.locality,e.region,e.postalCode,e.countryName].some(gi):!!function(e){return"name"in e}(e)&&[e.name,e.nickname,e.imageSrc,e.location,e.pronouns,e.dateOfBirth,e.jobTitle,e.orgName].some(gi)}function Wa(e){const n=mi(e||"").toLowerCase().replace(/\s+/g,"");return n?"he"===n||"he/him"===n?"He/Him":"she"===n||"she/her"===n?"She/Her":"they"===n||"they/them"===n?"They/Them":e||"":""}function Ra(e){const n=e=>{return{...e,type:(n=e.type,"Personal"===n?"Home":n||"")};var n};return{create:e.create.map(n),update:e.update.map(n),remove:e.remove.map(n)}}function Ua(e){const n=e=>{return{...e,type:(n=e.type,"Mobile"===n?"Cell":n||"")};var n};return{create:e.create.map(n),update:e.update.map(n),remove:e.remove.map(n)}}function Ha(e,n,t,i,o,a){const r="Full Name",l="Nickname",s="Pronouns",d="Job Title",c="Organization Name",A=e=>n=>{const i=Ii(n.target.value);t&&yi(t,e,i,Ma)};return X`
1504
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--heading-photo">
1505
+ <header class="mb-md" aria-label="Profile Image">
1506
+ <div class="profile-edit-dialog__image-frame">
1507
+ ${Za(t.imageSrc,t.name)}
1508
+ <button
1509
+ type="button"
1510
+ class="profile-edit-dialog__image-camera-button flex-center"
1511
+ aria-label="Take a photo"
1512
+ title="Take a photo"
1513
+ @click=${async i=>{i.preventDefault();const o=i.currentTarget,r=(null==o?void 0:o.ownerDocument)||document,l=null==o?void 0:o.closest(".profile-edit-dialog__row--heading-photo"),s=null==l?void 0:l.nextElementSibling,d=null==s?void 0:s.querySelector(".profile-edit-dialog__image-camera-capture-frame");if(!d||"true"===d.dataset.active)return;d.hidden=!1,d.dataset.active="true",d.replaceChildren();const c=()=>{const e=n.doc().uri,t=e.lastIndexOf("/"),i=t>=0?e.slice(0,t+1):e,o="undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now()}_${Math.floor(1e9*Math.random())}`;return(0,Me.sym)(`${i}camera_${o}.png`)},A=async e=>{d.replaceChildren(),d.hidden=!0,d.dataset.active="false",(null==e?void 0:e.uri)&&t&&(yi(t,"imageSrc",e.uri,Ma),a())};try{const n=La(r,e,c,A);d.appendChild(n)}catch(e){d.hidden=!0,d.dataset.active="false",d.replaceChildren(),console.error("Camera control failed to initialize",e)}}}
1514
+ >
1515
+ ${ln}
1516
+ </button>
1517
+ </div>
1518
+ </header>
1519
+
1520
+ <div class="profile-edit-dialog__image-preview" aria-label="Profile Photo Preview">
1521
+ <p class="profile-edit-dialog__image-preview-label"><strong>${"Profile Photo"}</strong></p>
1522
+ <p class="profile-edit-dialog__image-preview-description">${"Recommended: Square JPG, PNG. Max 2MB."}</p>
203
1523
 
204
- ${(()=>{const n=ke(o);return n&&n.strings&&""!==n.strings.join("").trim()?nn`
205
- <section
206
- aria-labelledby="cv-heading"
207
- class="profileSection section-bg"
208
- role="region"
209
- tabindex="-1"
1524
+ <div class="profile-edit-dialog__image-preview-actions">
1525
+ <button
1526
+ type="button"
1527
+ class="profile-edit-dialog__image-button profile-edit-dialog__image-upload-button flex-center"
1528
+ aria-label="Upload new profile photo"
1529
+ title="Upload New"
1530
+ @click=${async i=>{const o=i.currentTarget,r=((null==o?void 0:o.ownerDocument)||document).createElement("input");r.type="file",r.accept="image/*",r.addEventListener("change",async()=>{var i;const o=null===(i=r.files)||void 0===i?void 0:i[0];if(o&&t)try{const i=await async function(e,n,t){if(!e.fetcher)throw new Error("Store has no fetcher.");const i=t.type||Fa(t.name)||"application/octet-stream";if(!i.startsWith("image/"))throw new Error("Selected file is not an image.");const o=za(i)||"bin";let a=encodeURIComponent(t.name||`image.${o}`);i!==Fa(t.name||"")&&(a+=`_.${o}`);const r=function(e){const n=e.doc().uri,t=n.lastIndexOf("/");return t>=0?n.slice(0,t+1):n}(n);let l=`${r}${a}`;for(let t=0;e.holds(n,me.ns.vcard("hasPhoto"),(0,Me.sym)(l));t++)l=`${r}image_${t}.${o}`;try{const n=await t.arrayBuffer(),o=await e.fetcher.webOperation("PUT",l,{data:n,contentType:i});if(!o.ok)throw new Error(`Error uploading picture: ${o.status} ${o.statusText}`)}catch(e){throw new Error(`Error uploading picture: ${e}`)}return l}(e,n,o);yi(t,"imageSrc",i,Ma),a()}catch(e){console.error("Profile image upload failed",e)}}),r.click()}}
1531
+ >
1532
+ Upload New
1533
+ </button>
1534
+ <button
1535
+ type="button"
1536
+ class="profile-edit-dialog__image-button profile-edit-dialog__image-remove-button flex-center"
1537
+ aria-label="Delete profile photo"
1538
+ title="Remove"
1539
+ @click=${async e=>{t&&(yi(t,"imageSrc","",Ma),a())}}
210
1540
  >
211
- <header class="text-center mb-md">
212
- <h2 id="cv-heading" tabindex="-1">${Mn}</h2>
1541
+ Remove
1542
+ </button>
1543
+ </div>
1544
+ </div>
1545
+ </div>
1546
+ <div class="profile-edit-dialog__image-camera-capture-row">
1547
+ <div class="profile-edit-dialog__image-camera-capture-frame" hidden></div>
1548
+ </div>
1549
+ <div class="profile-edit flex-column gap-lg">
1550
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--equal">
1551
+ <label aria-label=${r} class="label profile-edit-dialog__field">
1552
+ ${r}
1553
+ <input
1554
+ class="input"
1555
+ type="text"
1556
+ name="name"
1557
+ .value=${(null==t?void 0:t.name)||""}
1558
+ required
1559
+ data-contact-field="name"
1560
+ data-entry-node=${(null==t?void 0:t.entryNode)||""}
1561
+ data-row-status=${(null==t?void 0:t.status)||"n/a"}
1562
+ placeholder="Full Name"
1563
+ autocomplete="name"
1564
+ inputmode="text"
1565
+ @change=${A("name")}
1566
+ />
1567
+ </label>
1568
+ <label aria-label=${l} class="label profile-edit-dialog__field">
1569
+ ${l}
1570
+ <input
1571
+ class="input"
1572
+ type="text"
1573
+ name="nickname"
1574
+ .value=${(null==t?void 0:t.nickname)||""}
1575
+ data-contact-field="nickname"
1576
+ data-entry-node=${(null==t?void 0:t.entryNode)||""}
1577
+ data-row-status=${(null==t?void 0:t.status)||"n/a"}
1578
+ placeholder="Nickname"
1579
+ autocomplete="nickname"
1580
+ inputmode="text"
1581
+ @change=${A("nickname")}
1582
+ />
1583
+ </label>
1584
+ </div>
1585
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--equal">
1586
+ <label aria-label=${s} class="label profile-edit-dialog__field-type profile-edit-dialog__field--stack">
1587
+ ${s}
1588
+ <select class="input" name="pronouns" @change=${e=>{const n=e.target.value;t&&vi(t,"pronouns",n)}} .value=${(null==t?void 0:t.pronouns)||""}>
1589
+ <option value="He/Him">He/Him</option>
1590
+ <option value="She/Her">She/Her</option>
1591
+ <option value="They/Them">They/Them</option>
1592
+ </select>
1593
+ </label>
1594
+ <label aria-label=${"DOB"} class="label profile-edit-dialog__field">
1595
+ ${"DOB"}
1596
+ <input
1597
+ class="input"
1598
+ type="date"
1599
+ name="profile-date-of-birth"
1600
+ .value=${Na(null==t?void 0:t.dateOfBirth)}
1601
+ data-contact-field="dateOfBirth"
1602
+ data-entry-node=${(null==t?void 0:t.entryNode)||""}
1603
+ data-row-status=${(null==t?void 0:t.status)||"n/a"}
1604
+ autocomplete="off"
1605
+ data-lpignore="true"
1606
+ data-1p-ignore="true"
1607
+ data-bwignore="true"
1608
+ @change=${e=>{const n=Ii(e.target.value);t&&yi(t,"dateOfBirth",Na(n),Ma)}}
1609
+ />
1610
+ </label>
1611
+ </div>
1612
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--equal">
1613
+ <label aria-label=${d} class="label profile-edit-dialog__field">
1614
+ ${d}
1615
+ <input
1616
+ class="input"
1617
+ type="text"
1618
+ name="jobTitle"
1619
+ .value=${(null==t?void 0:t.jobTitle)||""}
1620
+ data-contact-field="jobTitle"
1621
+ data-entry-node=${(null==t?void 0:t.entryNode)||""}
1622
+ data-row-status=${(null==t?void 0:t.status)||"n/a"}
1623
+ placeholder="Job Title"
1624
+ autocomplete="organization-title"
1625
+ inputmode="text"
1626
+ @change=${A("jobTitle")}
1627
+ />
1628
+ </label>
1629
+ <label aria-label=${c} class="label profile-edit-dialog__field">
1630
+ ${c}
1631
+ <input
1632
+ class="input"
1633
+ type="text"
1634
+ name="orgName"
1635
+ .value=${(null==t?void 0:t.orgName)||""}
1636
+ data-contact-field="orgName"
1637
+ data-entry-node=${(null==t?void 0:t.entryNode)||""}
1638
+ data-row-status=${(null==t?void 0:t.status)||"n/a"}
1639
+ placeholder="Organization Name"
1640
+ autocomplete="organization-name"
1641
+ inputmode="text"
1642
+ @change=${A("orgName")}
1643
+ />
1644
+ </label>
1645
+ </div>
1646
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--equal">
1647
+ <div class="profile-edit-dialog__field profile-edit-dialog__field--full">
1648
+ ${function({phone:e}){const n="phone-value",t=Ai((null==e?void 0:e.value)||"");let i=t.dialCode;return X`
1649
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--equal profile-edit-dialog__row--contact-point">
1650
+ <div class="profile-edit-dialog__field">
1651
+ <label aria-label=${"Phone Number"} class="label">
1652
+ <input
1653
+ class="input"
1654
+ type="tel"
1655
+ name=${n}
1656
+ .value=${t.localNumber}
1657
+ required
1658
+ data-contact-field="value"
1659
+ data-entry-node=${(null==e?void 0:e.entryNode)||""}
1660
+ data-row-status=${(null==e?void 0:e.status)||"n/a"}
1661
+ placeholder="Phone Number"
1662
+ autocomplete="tel-national"
1663
+ inputmode="tel"
1664
+ @input=${n=>{const t=xi(n.target.value);e&&yi(e,"value",pi(i,t),Ma)}}
1665
+ />
1666
+ </label>
1667
+ </div>
1668
+ <label aria-label=${"Phone Type"} class="label profile-edit-dialog__field-type profile-edit-dialog__field-type--contact-point">
1669
+ <select class="input" name=${"phone-type"} id="phone-type-select-${n}" @change=${n=>{const t=n.target.value;e&&vi(e,"type",t)}} .value=${(null==e?void 0:e.type)||""}>
1670
+ <option value="Mobile">Mobile</option>
1671
+ <option value="Home">Home</option>
1672
+ <option value="Work">Work</option>
1673
+ </select>
1674
+ </label>
1675
+ </div>
1676
+ `}({phone:i})}
1677
+ </div>
1678
+ <div class="profile-edit-dialog__field profile-edit-dialog__field--full">
1679
+ ${function({email:e}){const n="email-value";return X`
1680
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--equal profile-edit-dialog__row--contact-point">
1681
+ <label aria-label=${"Email Address"} class="label profile-edit-dialog__field">
1682
+ <input
1683
+ class="input"
1684
+ type="email"
1685
+ name=${n}
1686
+ .value=${(null==e?void 0:e.value)||""}
1687
+ required
1688
+ data-contact-field="value"
1689
+ data-entry-node=${(null==e?void 0:e.entryNode)||""}
1690
+ data-row-status=${(null==e?void 0:e.status)||"n/a"}
1691
+ placeholder="Email Address"
1692
+ autocomplete="email"
1693
+ inputmode="email"
1694
+ @input=${n=>{const t=Bi(n.target.value);e&&yi(e,"value",t,Ma)}}
1695
+ />
1696
+ </label>
1697
+ <label aria-label=${"Email Type"} class="label profile-edit-dialog__field-type profile-edit-dialog__field-type--contact-point">
1698
+ <select class="input" name=${"email-type"} id="email-type-select-${n}" @change=${n=>{const t=n.target.value;e&&vi(e,"type",t)}} .value=${(null==e?void 0:e.type)||""}>
1699
+ <option value="Personal">Personal</option>
1700
+ <option value="Office">Office</option>
1701
+ </select>
1702
+ </label>
1703
+ </div>
1704
+ `}({email:o})}
1705
+ </div>
1706
+ </div>
1707
+ </div>
1708
+ `}function Ya(e,n,t,i,o){ue(X`
1709
+ ${Ha(t,i,n.basicInfo,n.phone,n.email,()=>Ya(e,n,t,i,o))}
1710
+ ${function({address:e}){const n="Address",t=n=>t=>{const i=ki(t.target.value);e&&yi(e,n,i,Ma)};return X`
1711
+ <label aria-label=${`${n} Street`} class="label profile-edit-dialog__field profile-edit-dialog__field--row-width">
1712
+ Street Address
1713
+ <input
1714
+ class="input"
1715
+ type="text"
1716
+ name=${"address-street"}
1717
+ .value=${(null==e?void 0:e.streetAddress)||""}
1718
+ required
1719
+ data-contact-field="streetAddress"
1720
+ data-entry-node=${(null==e?void 0:e.entryNode)||""}
1721
+ data-row-status=${(null==e?void 0:e.status)||"n/a"}
1722
+ placeholder="Street Address"
1723
+ autocomplete="street-address"
1724
+ inputmode="text"
1725
+ @change=${t("streetAddress")}
1726
+ />
1727
+ </label>
1728
+
1729
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--equal profile-edit-dialog__row--full">
1730
+ <label aria-label=${`${n} Locality`} class="label profile-edit-dialog__field">
1731
+ Locality
1732
+ <input
1733
+ class="input"
1734
+ type="text"
1735
+ name=${"address-locality"}
1736
+ .value=${(null==e?void 0:e.locality)||""}
1737
+ data-contact-field="locality"
1738
+ data-entry-node=${(null==e?void 0:e.entryNode)||""}
1739
+ data-row-status=${(null==e?void 0:e.status)||"n/a"}
1740
+ placeholder="City / Locality"
1741
+ autocomplete="address-level2"
1742
+ inputmode="text"
1743
+ @change=${t("locality")}
1744
+ />
1745
+ </label>
1746
+ <label aria-label=${`${n} Postal Code`} class="label profile-edit-dialog__field">
1747
+ Postal Code
1748
+ <input
1749
+ class="input"
1750
+ type="text"
1751
+ name=${"address-postal"}
1752
+ .value=${(null==e?void 0:e.postalCode)||""}
1753
+ data-contact-field="postalCode"
1754
+ data-entry-node=${(null==e?void 0:e.entryNode)||""}
1755
+ data-row-status=${(null==e?void 0:e.status)||"n/a"}
1756
+ placeholder="Postal Code"
1757
+ autocomplete="postal-code"
1758
+ inputmode="text"
1759
+ @change=${t("postalCode")}
1760
+ />
1761
+ </label>
1762
+ </div>
1763
+
1764
+ <div class="profile-edit-dialog__row profile-edit-dialog__row--equal profile-edit-dialog__row--full">
1765
+ <label aria-label=${`${n} Region`} class="label profile-edit-dialog__field">
1766
+ Region
1767
+ <input
1768
+ class="input"
1769
+ type="text"
1770
+ name=${"address-region"}
1771
+ .value=${(null==e?void 0:e.region)||""}
1772
+ data-contact-field="region"
1773
+ data-entry-node=${(null==e?void 0:e.entryNode)||""}
1774
+ data-row-status=${(null==e?void 0:e.status)||"n/a"}
1775
+ placeholder="State / Region"
1776
+ inputmode="text"
1777
+ @change=${t("region")}
1778
+ />
1779
+ </label>
1780
+ <label aria-label=${`${n} Country`} class="label profile-edit-dialog__field">
1781
+ Country
1782
+ <input
1783
+ class="input"
1784
+ type="text"
1785
+ name=${"address-country"}
1786
+ .value=${(null==e?void 0:e.countryName)||""}
1787
+ data-contact-field="countryName"
1788
+ data-entry-node=${(null==e?void 0:e.entryNode)||""}
1789
+ data-row-status=${(null==e?void 0:e.status)||"n/a"}
1790
+ placeholder="Country"
1791
+ autocomplete="country-name"
1792
+ inputmode="text"
1793
+ @change=${t("countryName")}
1794
+ />
1795
+ </label>
1796
+ </div>
1797
+ `}({address:n.address})}
1798
+ ${"owner"!==o?X`<p class="profile-edit-dialog__login-message">${we}</p>`:null}
1799
+ `,e)}function Oa(e,n,t,i){const o=document.createElement("form");o.classList.add("profile__edit-form","profile-edit-dialog--heading","flex-column","gap-sm"),o.autocomplete="off",o.setAttribute("data-lpignore","true"),o.setAttribute("data-1p-ignore","true"),o.setAttribute("data-bwignore","true");const a=function(e){const n={name:mi(ui(e.name)),nickname:mi(ui(e.nickname||"")),imageSrc:mi(ui(e.imageSrc||"")),location:mi(ui(e.location||"")),pronouns:Wa(ui(e.pronouns||"")),dateOfBirth:mi(ui(e.dateOfBirth||"")),jobTitle:mi(ui(e.jobTitle||"")),orgName:mi(ui(e.orgName||"")),entryNode:ui(e.entryNode),status:ui(e.entryNode)?"existing":"new"},t=e.primaryEmail,i=e.primaryPhone,o=e.primaryAddress,a=bi(null==t?void 0:t.type),r=hi(null==i?void 0:i.type),l={value:Bi(ui(null==t?void 0:t.valueNode).replace(/^mailto:/i,"")),type:a,entryNode:ui(null==t?void 0:t.entryNode),status:ui(null==t?void 0:t.entryNode)?"existing":"new"},s={value:mi(ui((null==i?void 0:i.valueNode)||(null==i?void 0:i.entryNode)||"").replace(/^tel:/i,"")),type:r,entryNode:ui((null==i?void 0:i.entryNode)||""),status:ui((null==i?void 0:i.entryNode)||"")?"existing":"new"},d={streetAddress:ki(ui(null==o?void 0:o.streetAddress)),locality:ki(ui(null==o?void 0:o.locality)),region:ki(ui(null==o?void 0:o.region)),postalCode:ki(ui(null==o?void 0:o.postalCode)),countryName:ki(ui(null==o?void 0:o.countryName)),type:fi(null==o?void 0:o.type),entryNode:ui(null==o?void 0:o.entryNode),status:ui(null==o?void 0:o.entryNode)?"existing":"new"};return{basicInfo:n||{name:"",nickname:"",imageSrc:"",location:"",pronouns:"",dateOfBirth:"",jobTitle:"",orgName:"",entryNode:"",status:"new"},email:l||{value:"",type:"",entryNode:"",status:"new"},phone:s||{value:"",type:"",entryNode:"",status:"new"},address:d||{streetAddress:"",locality:"",region:"",postalCode:"",countryName:"",type:"",entryNode:"",status:"new"}}}(t);return Ya(o,a,e,n,i),{form:o,formState:a}}async function qa(e,n,t,i,o,a){const r=document,l=mi(ui(i.imageSrc||"")),{form:s,formState:d}=Oa(n,t,i,o),c=await Wt({title:"Edit Heading",dom:r,form:s,headerAction:{type:"close"},submitLabel:Ee,cancelLabel:_e,validate:()=>"owner"!==o?we:function(e){const n=wi([e.basicInfo],Ma),t=wi([e.phone],Ma),i=wi([e.email],Ma),o=wi([e.address],Ma);return n.create.length>0||n.update.length>0||n.remove.length>0||t.create.length>0||t.update.length>0||t.remove.length>0||i.create.length>0||i.update.length>0||i.remove.length>0||o.create.length>0||o.update.length>0||o.remove.length>0?null:"No intro changes detected."}(d),onSave:async()=>{const e=wi([d.phone],Ma),i=wi([d.email],Ma),o={basicOps:wi([d.basicInfo],Ma),phoneOps:Ua(e),emailOps:Ra(i),addressOps:wi([d.address],Ma)};await Sa(n,t,o);const a=mi(d.basicInfo.imageSrc||"");if(l&&l!==a)try{await async function(e,n,t){if(t&&e.fetcher)try{await e.fetcher.webOperation("DELETE",t)}catch(e){console.error(`Error deleting picture: ${e}`)}}(n,0,l)}catch(e){console.warn("Profile image file delete failed",e)}},formatSaveError:e=>{const n=e instanceof Error?e.message:String(e);return`${Be} ${n}`}});c&&a&&await a()}const Va=(e,n,t,i,o)=>{const{name:a,pronouns:r,jobTitle:l,dateOfBirth:s,location:d,primaryPhone:c,primaryEmail:A,imageSrc:p}=t,u="owner"===i,f=ui(null==c?void 0:c.valueNode).replace(/^tel:/i,""),m=ui(null==A?void 0:A.valueNode).replace(/^mailto:/i,""),g=function(e,n=""){const t=(e||"").trim();if(!t)return n;const i=t.match(/^(\d{4})-(\d{2})-(\d{2})/);if(i){const[,e,n,t]=i;return`${t}-${n}-${e}`}return Da(t)||t}(ui(s),"DD-MM-YYYY");return X`
1800
+ <section class="profile__section border-lighter" aria-labelledby="profile-name">
1801
+ <div class="profile__heading-top">
1802
+ <div class="profile__avatar">
1803
+ ${Za(p,a)}
1804
+ </div>
1805
+ <div class="profile__info">
1806
+ <header class="profile__header-bar mb-md">
1807
+ <div class="profile__identity" role="group" aria-label="Name and pronouns">
1808
+ <h1 id="profile-name" class="profile__name">${a}</h1>
1809
+ <span class="profile__pronouns">${r?`(${r})`:""}</span>
1810
+ </div>
1811
+ ${l?X`<div class="profile__role-org">${l}</div>`:K}
213
1812
  </header>
214
- <div>
215
- ${n}
1813
+ </div>
1814
+ ${u?X`
1815
+ <div class="profile__actions profile__heading-actions" aria-label="Profile actions">
1816
+ <button
1817
+ type="button"
1818
+ class="profile__action-button profile__heading-action-button profile-action-text flex-center"
1819
+ aria-label="Add or edit heading information"
1820
+ @click=${a=>qa(0,e.session.store,n,t,i,o)}
1821
+ >
1822
+ <span class="profile-section-collapsible__edit-label">${an} Edit</span>
1823
+ <span class="profile-section-collapsible__edit-icon" aria-hidden="true">${an}</span>
1824
+ </button>
1825
+ </div>
1826
+ `:K}
1827
+ <div class="profile__details">
1828
+ <div class="profile__meta-row" role="group" aria-label="Additional profile information">
1829
+ ${Qa(g,Re,"")}
1830
+ ${Qa(d,Ue,"")}
216
1831
  </div>
217
- </section>
218
- `:""})()}
1832
+ <div class="profile__contact-row" role="group" aria-label="Contact information">
1833
+ ${Qa(f,$i,"")}
1834
+ ${Qa(m,Si,"")}
1835
+ </div>
1836
+ </div>
1837
+ </div>
1838
+ </section>
1839
+ `},Qa=(e,n=K,t="")=>e?X`
1840
+ <div class="profile__item ${t?"":"profile__item--valueOnly"}">
1841
+ ${t?X`<span class="profile__label">${t}</span>`:K}
1842
+ <span class="profile__value">
1843
+ ${""!==n&&n!==K?X`<span class="profile__prefix-icon" aria-hidden="true">${n}</span>`:K}
1844
+ <span class="profile__value-text">${e}</span>
1845
+ </span>
1846
+ </div>
1847
+ `:K,Za=(e,n)=>e?X`
1848
+ <img
1849
+ class="profile__hero"
1850
+ src=${e}
1851
+ alt="${n}"
1852
+ width="140"
1853
+ height="140"
1854
+ loading="eager"
1855
+ />
1856
+ `:X`
1857
+ <div class="profile__hero-alt flex-center" role="img" aria-label="${n}" tabindex="0">
1858
+ <span class="profile__hero-icon">${Ge}</span>
1859
+ </div>
1860
+ `;var Xa=a(741),Ga={};Ga.styleTagTransform=u(),Ga.setAttributes=d(),Ga.insert=l().bind(null,"head"),Ga.domAPI=i(),Ga.insertStyleElement=A();n()(Xa.A,Ga);Xa.A&&Xa.A.locals&&Xa.A.locals;async function Ka(e,n,t){const i=n.doc(),o=[],a=[],r=(t,r=!1)=>{const l=r?{description:""}:t;((t,r)=>{const l=(r||"").trim(),s=l?(0,Me.literal)(l):null;Qt(e,n,t,i,o,a,s)})(me.ns.vcard("note"),l.description)},l=t.remove[0],s=t.update[0],d=t.create[0],c=s||d||l;c&&r(c,Boolean(l&&!s&&!d)),await qt(e,o,a)}function Ja(e){return gi(e.description)}function er(e,n,t){ue(X`
1861
+ ${function(e,n){const t="bio-description-counter",i=2600,o=((null==e?void 0:e.description)||"").length;return X`
1862
+ <section class="profile-edit-dialog__section" aria-label="Bio editor">
219
1863
 
220
- ${r.accounts&&r.accounts.length>0?nn`
221
- <aside
222
- aria-labelledby="social-heading"
223
- class="profileSection section-bg"
224
- role="complementary"
225
- tabindex="-1"
226
- >
227
- <header class="text-center mb-md">
228
- <h2 id="social-heading" tabindex="-1">${On}</h2>
229
- </header>
230
- <nav aria-label="Social media links">
231
- ${Te(r)}
232
- </nav>
233
- </aside>
1864
+ <label aria-label="Bio description" class="label profile-edit-dialog__bio-field-container">
1865
+ <span class="profile-edit-dialog__field-description">
1866
+ You can write about your years of experience, industry, or skills.
1867
+ People also talk about their achievements or previous job experiences.
1868
+ </span>
1869
+ <textarea
1870
+ class="profile-edit-dialog__textarea"
1871
+ name=${"bio-description"}
1872
+ rows="5"
1873
+ .value=${(null==e?void 0:e.description)||""}
1874
+ maxlength=${i}
1875
+ aria-describedby=${t}
1876
+ data-contact-field="description"
1877
+ data-entry-node=${(null==e?void 0:e.entryNode)||""}
1878
+ data-row-status=${(null==e?void 0:e.status)||"n/a"}
1879
+ placeholder="Write a short bio"
1880
+ autocomplete="off"
1881
+ @input=${t=>{const o=mi(t.target.value.slice(0,i));yi(e,"description",o,Ja),n()}}
1882
+ ></textarea>
1883
+ <small id=${t} aria-live="polite">${o}/${i}</small>
1884
+ </label>
1885
+ </section>
1886
+ `}(n.bio,()=>er(e,n,t))}
1887
+ ${"owner"!==t?X`<p class="profile-edit-dialog__login-message">${we}</p>`:null}
1888
+ `,e)}function nr(e,n){const t=document.createElement("form");t.classList.add("profile__edit-form");const i=function(e){return{bio:{description:mi(ui((null==e?void 0:e.description)||"")),entryNode:ui((null==e?void 0:e.entryNode)||""),status:ui((null==e?void 0:e.entryNode)||"")?"existing":"new"}}}(e);return er(t,i,n),{form:t,formState:i}}async function tr(e,n,t,i,o,a){var r;const l=(null===(r=e.currentTarget)||void 0===r?void 0:r.ownerDocument)||document,{form:s,formState:d}=nr(i,o),c=await Wt({title:"Edit Bio",dom:l,form:s,headerAction:{type:"none"},submitLabel:Ee,cancelLabel:_e,validate:()=>{if("owner"!==o)return we;const e=wi([d.bio],Ja);return e.create.length>0||e.update.length>0||e.remove.length>0?null:"No bio changes detected."},onSave:async()=>{const e=wi([d.bio],Ja);await async function(e,n,t){try{await Ka(e,n,t)}catch(e){const n=e instanceof Error?e.message:String(e);throw new Error(`${ke} ${n}`)}}(n,t,e)},formatSaveError:e=>{const n=e instanceof Error?e.message:String(e);return`${ke} ${n}`}});c&&a&&await a()}const ir=(e,n)=>X`
1889
+ <article class="bioCard" aria-label="Bio" data-testid="bio-card">
1890
+ <section class="bioSection">
1891
+ ${function(e){if(!e)return X``;const n="bio-description";return X`
1892
+ ${e.description?X`
1893
+ <div class="bioDescriptionWrap">
1894
+ <p class="bioDescriptionText" id=${n}>${e.description}</p>
1895
+ <button
1896
+ type="button"
1897
+ class="bioDescriptionToggle"
1898
+ aria-controls=${n}
1899
+ aria-expanded="false"
1900
+ hidden
1901
+ @click=${Ri}
1902
+ >
1903
+ ...more
1904
+ </button>
1905
+ </div>
234
1906
  `:""}
1907
+ `}(e)}
1908
+ </section>
1909
+ </article>
1910
+ `;function or(e,n,t,i,o){return X`
1911
+ <section
1912
+ aria-labelledby="bio-heading"
1913
+ data-profile-section="bio"
1914
+ class="profile__section border-lighter"
1915
+ role="region"
1916
+ tabindex="-1"
1917
+ >
1918
+ ${function(e,n,t,i,o){const a=ir(t),r=t;return X`
1919
+ <header class="profile__section-header profile-section-collapsible__header">
1920
+ <h2 id="bio-heading" tabindex="-1">${"Bio"}</h2>
1921
+ ${"owner"===i?X`
1922
+ <button
1923
+ type="button"
1924
+ class="profile__action-button profile-action-text flex-center"
1925
+ aria-label="Edit bio details"
1926
+ @click=${t=>tr(t,e,n,r,i,o)}
1927
+ >
1928
+ <span class="profile-section-collapsible__edit-label profile__action-icon">${an} Edit</span>
1929
+ <span class="profile-section-collapsible__edit-icon profile__action-icon" aria-hidden="true">${an}</span>
1930
+ </button>
1931
+ `:X``}
1932
+ </header>
1933
+ <div class="profile-section-collapsible__content">
1934
+ ${a}
1935
+ </div>
1936
+ `}(e,n,t,i,o)}
1937
+ </section>
1938
+ `}function ar(e,n,t,i,o){return X`
1939
+ <section
1940
+ aria-labelledby="bio-heading"
1941
+ data-profile-section="bio"
1942
+ class="profile__section--empty border-lighter flex-column-center rounded-md gap-lg"
1943
+ role="region"
1944
+ tabindex="-1"
1945
+ >
1946
+ ${function(e,n,t,i,o){const a=t;return X`
1947
+ <div class="profile__empty-state-content flex-column-center" role="group" aria-label="Empty bio section">
1948
+ <h2 id="bio-heading" tabindex="-1">${"Bio"}</h2>
1949
+ <p class="profile__empty-state-message">
1950
+ You haven't added any professional experience yet. Adding work history can boost your Bio.
1951
+ </p>
1952
+ </div>
1953
+ <button
1954
+ type="button"
1955
+ class="profile__action-button--empty"
1956
+ aria-label="Add bio details"
1957
+ @click=${t=>tr(t,e,n,a,i,o)}
1958
+ >
1959
+ <span class="profile__action-icon" aria-hidden="true">${Ye} Add Bio</span>
1960
+ </button>
235
1961
 
236
- ${a.stuff&&a.stuff.length>0?nn`
1962
+ `}(e,n,t,i,o)}
1963
+ </section>
1964
+ `}function rr(e,n,t,i,o){Wi();const a=function(e){return Boolean(((null==e?void 0:e.description)||"").trim())}(t);return X`
1965
+ ${!a&&"owner"===i?ar(e,n,t,i,o):or(e,n,t,i,o)}
1966
+ `}const lr="https://solidos.github.io/profile-pane/src/ontology/socialMedia.ttl#";function sr(e){return e?"function"==typeof e.toNT?e.toNT():"string"==typeof e.value?e.value:String(e):""}function dr(e){return{subject:sr(null==e?void 0:e.subject),predicate:sr(null==e?void 0:e.predicate),object:sr(null==e?void 0:e.object),graph:sr(null==e?void 0:e.why)}}function cr(e){const n=(e||"").trim();return n?n.startsWith("http://")||n.startsWith("https://")?(0,Me.sym)(n):(0,Me.literal)(n):null}function Ar(e){return"string"==typeof e?e.trim():null==e?"":String(e).trim()}function pr(e,n,t,i){var o;const a=[];(null==i?void 0:i.classUri)&&a.push((0,Me.st)(n,me.ns.rdf("type"),(0,Me.sym)(i.classUri),e));const r=Ar(t.name);if("other"===r.toLowerCase()||(null===(o=null==i?void 0:i.classUri)||void 0===o?void 0:o.endsWith("#OtherAccount"))){const i=cr(t.homepage),o=cr(t.icon);return i&&a.push((0,Me.st)(n,me.ns.foaf("homepage"),i,e)),o&&a.push((0,Me.st)(n,me.ns.foaf("icon"),o,e)),r&&"other"!==r.toLowerCase()&&a.push((0,Me.st)(n,me.ns.rdfs("label"),(0,Me.literal)(r),e)),a}const l=(null==i?void 0:i.userProfilePrefix)||(null==i?void 0:i.homepage),s=function(e,n){const t=Ar(e);if(!t)return"";const i=Ar(n);if(i){let e=t;const n=i.toLowerCase();for(;e.toLowerCase().startsWith(n);)e=e.slice(i.length);if(e)return e;try{const e=new URL(t),n=new URL(i),o=e=>e.toLowerCase().replace(/^www\./,""),a=o(e.hostname),r=o(n.hostname),l=(n.pathname||"/").replace(/\/+$/,""),s=e.pathname||"/";if(a===r&&s.startsWith(l)){const e=s.slice(l.length).replace(/^\/+/,"");if(e)return e}}catch{}}return t.replace(/^https?:\/\//i,"").replace(/^www\./i,"")}(Ar(t.homepage),l);return s&&a.push((0,Me.st)(n,me.ns.foaf("accountName"),(0,Me.literal)(s),e)),a}function ur(e){var n,t,i,o,a,r,l,s,d,c,A,p;return`${(null===(t=null===(n=e.subject)||void 0===n?void 0:n.toNT)||void 0===t?void 0:t.call(n))||(null===(i=e.subject)||void 0===i?void 0:i.value)} ${(null===(a=null===(o=e.predicate)||void 0===o?void 0:o.toNT)||void 0===a?void 0:a.call(o))||(null===(r=e.predicate)||void 0===r?void 0:r.value)} ${(null===(s=null===(l=e.object)||void 0===l?void 0:l.toNT)||void 0===s?void 0:s.call(l))||(null===(d=e.object)||void 0===d?void 0:d.value)} ${(null===(A=null===(c=e.why)||void 0===c?void 0:c.toNT)||void 0===A?void 0:A.call(c))||(null===(p=e.why)||void 0===p?void 0:p.value)}`}function fr(e){return Array.from(new Map((e||[]).map(e=>[ur(e),e])).values())}async function mr(e,n,t,i){if(!e.updater)throw new Error(Ie);const{safeDeletions:o,safeInsertions:a}=function(e,n,t){return{safeDeletions:Array.from(new Map((n||[]).filter(n=>!!(n&&n.subject&&n.predicate&&n.object)&&(!!e.holds(n.subject,n.predicate,n.object,n.why)||e.statementsMatching(n.subject,n.predicate,n.object,n.why).length>0)).map(e=>[ur(e),e])).values()),safeInsertions:Array.from(new Map((t||[]).filter(e=>Boolean(e&&e.subject&&e.predicate&&e.object)).map(e=>[ur(e),e])).values())}}(e,t,i);if(0!==o.length||0!==a.length){try{return void await qt(e,o,a)}catch(e){if(!function(e){const n=(e||"").toLowerCase();return n.includes(" on patch ")||n.includes("web error: 400")||n.includes("web error: 405")||n.includes("web error: 501")}(e instanceof Error?e.message:String(e)))throw e}await async function(e,n,t,i){const o=e.updater,a=e.fetcher;if(!o||"function"!=typeof o.serialize||!a||"function"!=typeof a.webOperation)throw new Error("Social updates are not supported by this store updater.");const r=e.statementsMatching(void 0,void 0,void 0,n).slice(),l=new Set((t||[]).map(e=>ur(e))),s=r.filter(e=>!l.has(ur(e))).concat(i||[]),d="text/turtle",c=o.serialize(n.value,s,d),A=await a.webOperation("PUT",n.value,{noMeta:!0,contentType:d,body:c});if(!A||!0!==A.ok){const e=(null==A?void 0:A.status)||"unknown";throw new Error(`Web error: ${e} on PUT of <${n.value}>`)}e.remove(t),i.forEach(n=>{e.add(n.subject,n.predicate,n.object,n.why)})}(e,n,o,a)}}async function gr(e,n,t,i){!function(e){const n=e;"function"!=typeof n.setPrefixForURI?(n.namespaces||(n.namespaces={}),n.namespaces.soc=lr):n.setPrefixForURI("soc",lr)}(e);const o=n.doc(),a=Wn(e),r=Yn(n,e).accounts.map(e=>({name:Ar(e.name),icon:Ar(e.icon),homepage:Ar(e.homepage),entryNode:e.entryNode.value,status:"existing"})),l=i&&i.length?function(e){return(e||[]).filter(e=>"deleted"!==e.status).filter(e=>Boolean(Ar(e.name)||Ar(e.homepage)||Ar(e.icon)||Ar(e.entryNode))).map(e=>({name:Ar(e.name),icon:Ar(e.icon),homepage:Ar(e.homepage),entryNode:Ar(e.entryNode),status:e.status}))}(i):function(e,n){const t=new Set(n.remove.map(e=>Ar(e.entryNode)).filter(Boolean)),i=new Map(n.update.map(e=>[Ar(e.entryNode),e]).filter(([e])=>Boolean(e)));return[...e.filter(e=>!t.has(Ar(e.entryNode))).map(e=>{const n=Ar(e.entryNode);return i.get(n)||e}),...n.create.filter(e=>Boolean(Ar(e.name)||Ar(e.homepage)||Ar(e.icon)))]}(r,t),s=e.each(n,me.ns.foaf("account"),null,o),d=fr(s.flatMap(n=>function(e,n,t){if(!e.any(n,me.ns.rdf("first"),null,t))return[];const i=new Set,o=[];let a=n;for(;a;){const n=`${a.termType}:${a.value}`;if(i.has(n))break;i.add(n),o.push(a);const r=e.any(a,me.ns.rdf("rest"),null,t);if(!r||"NamedNode"===r.termType&&r.value===me.ns.rdf("nil").value)break;a=r}return o}(e,n,o).flatMap(n=>e.statementsMatching(n,null,null,o)))),c=Array.from(new Map(s.flatMap(n=>Le(e,n)).filter(e=>"NamedNode"===e.termType).map(e=>[`${e.termType}:${e.value}`,e])).values()),A=l.map(e=>{if(Ar(e.entryNode)){const n=Xt(c,e.entryNode);if(n&&"NamedNode"===n.termType)return n}return Kt(o)}),p=[];if(A.length>0){const e=function(e,n){if(!n.length)return{head:me.ns.rdf("nil"),statements:[]};const t=n.map(()=>(0,Me.blankNode)()),i=[];return n.forEach((n,o)=>{const a=t[o],r=t[o+1]||me.ns.rdf("nil");i.push((0,Me.st)(a,me.ns.rdf("first"),n,e)),i.push((0,Me.st)(a,me.ns.rdf("rest"),r,e))}),{head:t[0],statements:i}}(o,A);p.push((0,Me.st)(n,me.ns.foaf("account"),e.head,o)),p.push(...e.statements)}l.forEach((e,n)=>{p.push(...pr(o,A[n],e,(e=>Ln(a,Ar(e.name)))(e)))});const u=fr([...e.statementsMatching(n,me.ns.foaf("account"),null,o),...d,...c.flatMap(n=>Vt(e,n,o))]);(function(){const e=null===globalThis||void 0===globalThis?void 0:globalThis.__PROFILE_PANE_SOCIAL_DEBUG__;return!0===e||"1"===e||"true"===e})()&&console.log("[social-mutations] patch payload",{subject:n.value,doc:o.value,nextRows:l,deletionsCount:u.length,insertionsCount:p.length,deletions:u.map(dr),insertions:fr(p).map(dr)}),await mr(e,o,u,fr(p))}function hr(e){return mi(e)}function Cr(e){const n=(e||"").trim();if(!n)return!1;try{const e=new URL(n);return"http:"===e.protocol||"https:"===e.protocol}catch{return!1}}function br(e){return gi(e.homepage)}function Er(e,n){const t=wi(e,br),i=t.create.length>0||t.update.length>0||t.remove.length>0,o=function(e,n){const t=e.filter(e=>"deleted"!==e.status&&Boolean((e.entryNode||"").trim())).map(e=>(e.entryNode||"").trim());if(t.length!==n.length)return!0;for(let e=0;e<t.length;e++)if(t[e]!==n[e])return!0;return!1}(e,n);if(!i&&!o)return"No social changes detected.";for(let n=0;n<e.length;n++){const t=e[n];if(!t||"deleted"===t.status)continue;if([t.name,t.icon,t.homepage].some(gi)){if(!gi(t.name)||!gi(t.icon))return`Social account ${n+1}: please choose an account type from the dropdown.`;if(!gi(t.homepage))return`Social account ${n+1}: please enter your personal profile link.`;if(!Cr(t.homepage||""))return`Social account ${n+1}: profile link must be a valid http(s) URL.`}}return null}function _r({rows:e,index:n,displayIndex:t,onDelete:i,onChange:o,options:a,onDragStart:r,onDragOver:l,onDrop:s,onDragEnd:d,isDropTarget:c}){const A=e[n],p=`Social Account Name ${t+1}`,u=`Social Account Homepage ${t+1}`;return X`
1967
+ <div
1968
+ class="profile-edit-dialog__row profile-edit-dialog__row--social ${c?"profile-edit-dialog__row--drop-target":""}"
1969
+ @dragover=${e=>l(e)}
1970
+ @drop=${()=>s(n)}
1971
+ >
1972
+ <button
1973
+ type="button"
1974
+ class="profile-edit-dialog__drag-handle"
1975
+ aria-label=${`Reorder social account ${t+1}`}
1976
+ title="Drag to reorder"
1977
+ draggable="true"
1978
+ @dragstart=${()=>r(n)}
1979
+ @dragend=${()=>d()}
1980
+ >
1981
+ ${Qe}
1982
+ </button>
1983
+ <img
1984
+ class="profile-edit-dialog__social-icon"
1985
+ src="${(null==A?void 0:A.icon)||pn}"
1986
+ alt="${(null==A?void 0:A.name)||"Social"} icon"
1987
+ width="30"
1988
+ height="30"
1989
+ loading="lazy"
1990
+ />
1991
+ <label aria-label=${p} class="label profile-edit-dialog__field profile-edit-dialog__field--social-type">
1992
+ ${function(e,n,t,i){const o=Ln(t,(null==e?void 0:e.name)||""),a=(null==o?void 0:o.label)||"";return X`
1993
+ <select
1994
+ class="profile-edit-dialog__social-account-select"
1995
+ name=${`social-account-type-${n}`}
1996
+ data-row-index=${String(n)}
1997
+ autocomplete="off"
1998
+ @change=${i}
1999
+ >
2000
+ <option value="">Select</option>
2001
+ ${t.map(e=>X`
2002
+ <option value=${e.label} ?selected=${e.label===a}>${e.label}</option>
2003
+ `)}
2004
+ </select>
2005
+ `}(A,n,a,t=>{const i=t.target,r=Ln(a,i.value);if(e[n]){if(!r)return yi(e[n],"name","",br),yi(e[n],"icon","",br),void o();yi(e[n],"name",r.label,br),yi(e[n],"icon",r.icon||pn,br),o()}})}
2006
+ </label>
2007
+ <label aria-label=${u} class="label profile-edit-dialog__field profile-edit-dialog__field--social-url">
2008
+ <input
2009
+ class="input"
2010
+ type="url"
2011
+ name=${`social-homepage-${n}`}
2012
+ .value=${(null==A?void 0:A.homepage)||""}
2013
+ data-contact-field="homepage"
2014
+ data-entry-node=${(null==A?void 0:A.entryNode)||""}
2015
+ data-row-status=${(null==A?void 0:A.status)||"n/a"}
2016
+ placeholder="Profile URL"
2017
+ autocomplete="url"
2018
+ inputmode="url"
2019
+ required
2020
+ @input=${f="homepage",t=>{const i=t.target,a="homepage"===f?mi(i.value).replace(/\s+/g,""):hr(i.value);e[n]&&(yi(e[n],f,a,br),o())}}
2021
+ />
2022
+ <small class="profile-edit-dialog__input-help-text">Paste your full profile URL (for example: https://example.com/username)</small>
2023
+ </label>
2024
+ <div class="profile-edit-dialog__actions profile-edit-dialog__actions--edge">
2025
+ <button
2026
+ type="button"
2027
+ class="profile-edit-dialog__delete-button"
2028
+ aria-label=${`Delete social account ${t+1}`}
2029
+ title=${ve}
2030
+ @click=${e=>{e.preventDefault(),i()}}
2031
+ >
2032
+ <span class="profile-edit-dialog__delete-icon" aria-hidden="true">${Ve}</span>
2033
+ </button>
2034
+ </div>
2035
+ </div>
2036
+ `;var f}function vr(e,n,t){let i=null,o=null;const a=e=>{i=e,o=e},r=e=>{e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move")},l=n=>{null!==i&&(((n,t)=>{if(n===t)return;const i=e[n];i&&(e.splice(n,1),e.splice(t,0,i))})(i,n),i=null,o=null,t())},s=()=>{i=null,o=null},d=e.map((e,n)=>({row:e,index:n})).filter(({row:e})=>"deleted"!==e.status);return X`
2037
+ <section class="profile-edit-dialog__section" aria-label="Social Accounts">
2038
+ <fieldset>
2039
+ <legend class="sr-only">Social account entries</legend>
2040
+ ${d.map(({index:i},d)=>_r({rows:e,index:i,displayIndex:d,onDelete:()=>{_i(e,i),t()},onChange:t,options:n,onDragStart:a,onDragOver:r,onDrop:l,onDragEnd:s,isDropTarget:o===i}))}
2041
+ </fieldset>
2042
+ </section>
2043
+ `}function wr(e,n,t,i,o={}){const a=Wn(t);ue(X`
2044
+ ${vr(n.socialAccounts,a,(o={})=>wr(e,n,t,i,o))}
2045
+ ${"owner"!==i?X`<p class="profile-edit-dialog__login-message">${we}</p>`:null}
2046
+ `,e),o.focusSelector&&function(e,n){const t=e.querySelector(n);t&&"function"==typeof t.focus&&(t.scrollIntoView({block:"start",behavior:"auto"}),t.focus())}(e,o.focusSelector)}function yr(e,n,t){const i=document.createElement("form");i.classList.add("profile__edit-form");const o=function(e){const n=(e||[]).map(e=>({name:hr(ui(e.name)),icon:hr(ui(e.icon)),homepage:hr(ui(e.homepage)),entryNode:ui(e.entryNode),status:ui(e.entryNode)?"existing":"new"})).filter(e=>Boolean(e.name||e.icon||e.homepage||e.entryNode));return{socialAccounts:n.length?n:[{name:"",icon:"",homepage:"",entryNode:"",status:"new"}],initialExistingOrder:[]}}(e);o.initialExistingOrder=o.socialAccounts.filter(e=>Boolean((e.entryNode||"").trim())).map(e=>(e.entryNode||"").trim()),wr(i,o,n,t);return{form:i,formState:o,addRow:()=>{o.socialAccounts.unshift({name:"",icon:"",homepage:"",entryNode:"",status:"new"}),wr(i,o,n,t,{focusSelector:'[name="social-account-type-0"]'})}}}async function Br(e,n,t,i,o,a){var r;const l=(null===(r=e.currentTarget)||void 0===r?void 0:r.ownerDocument)||document,{form:s,formState:d,addRow:c}=yr(i,n,o),A=await Wt({title:"Edit Social Accounts",dom:l,form:s,headerAction:{type:"button",label:"+ Add More",ariaLabel:"Add another social account",onClick:c},submitLabel:Ee,cancelLabel:_e,validate:()=>"owner"!==o?we:Er(d.socialAccounts,d.initialExistingOrder),onSave:async()=>{const e=wi(d.socialAccounts,br),i={create:e.create,update:e.update,remove:e.remove};await async function(e,n,t,i){try{await gr(e,n,t,i)}catch(e){const n=e instanceof Error?e.message:String(e);throw new Error(`${xe} ${n}`)}}(n,t,i,d.socialAccounts)},formatSaveError:e=>{const n=e instanceof Error?e.message:String(e);return n.startsWith(xe)?n:`${xe} ${n}`}});A&&a&&await a()}function xr(e){return Boolean((null==e?void 0:e.homepage)&&(null==e?void 0:e.name)&&(null==e?void 0:e.icon))}function kr(e){const n=e.currentTarget,t=null==n?void 0:n.closest(".socialCard");n&&t&&(t.setAttribute("data-mobile-expanded","true"),n.setAttribute("aria-expanded","true"),n.hidden=!0)}const Ir=(e,n)=>{const t=(e.accounts||[]).filter(xr),i=Math.max(0,t.length-10);return t.length?X`
2047
+ <section
2048
+ class="socialCard"
2049
+ aria-label="Social media"
2050
+ data-testid="social-media"
2051
+ data-mobile-expanded="${i>0?"false":"true"}"
2052
+ >
2053
+ <nav aria-label="Social media profiles">
2054
+ <ul class="socialList list-reset" role="list">
2055
+ ${t.map(e=>function(e){return X`
2056
+ <li class="socialItem" role="listitem">
2057
+ <a
2058
+ href="${e.homepage}"
2059
+ target="_blank"
2060
+ rel="noopener noreferrer"
2061
+ aria-label="Visit ${e.name} profile (opens in new tab)"
2062
+ >
2063
+ <img
2064
+ class="socialIcon"
2065
+ src="${e.icon}"
2066
+ alt="${e.name} icon"
2067
+ width="40"
2068
+ height="40"
2069
+ loading="lazy"
2070
+ />
2071
+ </a>
2072
+ </li>
2073
+ `}(e))}
2074
+ </ul>
2075
+ </nav>
2076
+ ${i>0?X`
2077
+ <button
2078
+ type="button"
2079
+ class="socialCard__more-button"
2080
+ aria-controls="social-media"
2081
+ aria-expanded="false"
2082
+ @click=${kr}
2083
+ >
2084
+ ${i} more
2085
+ </button>
2086
+ `:X``}
2087
+ </section>
2088
+ `:X``};function $r(e,n,t,i,o){return X`
237
2089
  <section
238
- aria-labelledby="stuff-heading"
239
- class="profileSection section-bg"
2090
+ aria-labelledby="social-heading"
2091
+ class="profile__section border-lighter profile-section-collapsible profile-section-collapsible--inline-mobile-actions"
240
2092
  role="region"
241
2093
  tabindex="-1"
2094
+ data-expanded="false"
242
2095
  >
243
- <header class="text-center mb-md">
244
- <h2 id="stuff-heading" tabindex="-1">${"Shared items"}</h2>
2096
+ <header class="profile__section-header profile-section-collapsible__header">
2097
+ <h2 id="social-heading" tabindex="-1">${$e}</h2>
2098
+ <div class="profile-section-collapsible__actions flex-column">
2099
+ ${"owner"===i?X`
2100
+ <button
2101
+ type="button"
2102
+ class="profile__action-button profile-action-text flex-center profile-section-collapsible__edit-button"
2103
+ aria-label="Edit social accounts"
2104
+ @click=${a=>Br(a,e,n,t.accounts,i,o)}
2105
+ >
2106
+ <span class="profile-section-collapsible__edit-label">${an} Edit</span>
2107
+ <span class="profile-section-collapsible__edit-icon" aria-hidden="true">${an}</span>
2108
+ </button>
2109
+ `:X``}
2110
+ <button
2111
+ type="button"
2112
+ class="inline-flex-row"
2113
+ aria-label="Toggle social accounts section"
2114
+ aria-controls="social-panel"
2115
+ aria-expanded="false"
2116
+ @click=${Yi}
2117
+ >
2118
+ <span class="profile-section-collapsible__chevron" aria-hidden="true">⌄</span>
2119
+ </button>
2120
+ </div>
245
2121
  </header>
246
- <div>
247
- ${Le(i,e,0,a)}
2122
+ <div id="social-panel" class="profile-section-collapsible__content" aria-hidden="true">
2123
+ ${function(e){const n=e.accounts&&e.accounts.length>0;return X`
2124
+ ${n?Ir(e):X`<p>No social accounts added yet.</p>`}
2125
+ `}(t)}
248
2126
  </div>
249
2127
  </section>
250
- `:""}
251
-
252
- ${(()=>{const t=Jn(n,e);return t?nn`
253
- <aside
254
- aria-labelledby="friends-heading"
255
- class="profileSection section-bg"
256
- role="complementary"
257
- tabindex="-1"
2128
+ `}function Sr(e,n,t,i,o){return X`
2129
+ <section
2130
+ aria-labelledby="social-heading"
2131
+ data-profile-section="social"
2132
+ class="profile__section--empty border-lighter flex-column-center rounded-md gap-lg profile-section-collapsible profile-section-collapsible--inline-mobile-actions"
2133
+ role="region"
2134
+ tabindex="-1"
2135
+ data-expanded="false"
2136
+ >
2137
+ <header class="profile__section-header profile-section-collapsible__header">
2138
+ <h2 id="social-heading" tabindex="-1">${$e}</h2>
2139
+ <div class="profile-section-collapsible__actions flex-column">
2140
+ <button
2141
+ type="button"
2142
+ class="profile__action-button profile-action-text flex-center profile-section-collapsible__edit-button"
2143
+ aria-label="Add social accounts"
2144
+ @click=${a=>Br(a,e,n,t.accounts,i,o)}
258
2145
  >
259
- <header class="text-center mb-md">
260
- <h2 id="friends-heading" tabindex="-1">${Un}</h2>
261
- </header>
262
- <div role="list" aria-label="Friend connections">
263
- ${t}
264
- </div>
265
- </aside>
266
- `:""})()}
267
-
268
- <section
269
- aria-labelledby="chat-heading"
270
- class="profileSection section-bg"
271
- role="region"
272
- tabindex="-1"
273
- >
274
- <header class="text-center mb-md">
275
- <h2 id="chat-heading" tabindex="-1">${"Contact"}</h2>
276
- </header>
277
- <div>
278
- ${((n,e)=>{const t=e.session.logic,i=e.session.paneRegistry.byName("long chat");return nn` ${_n(async function*(){const o=e.dom.createElement("section");o.setAttribute("class","chatSection section-centered"),o.setAttribute("aria-labelledby","chat-section-title"),o.setAttribute("role","region"),o.setAttribute("data-testid","chat");const r=e.dom.createElement("h3");let a;r.id="chat-section-title",r.className="sr-only",r.textContent="Communication",o.appendChild(r);try{yield nn`
279
- <div class="buttonSubSection">
280
- <div class="actionButton loading-text center" role="status" aria-live="polite">
281
- ${"Loading...".toUpperCase()}
2146
+ <span class="profile-section-collapsible__edit-label profile__add-more-content inline-flex-row">
2147
+ <span class="profile__add-more-icon inline-flex-row" aria-hidden="true">${Xe}</span>
2148
+ Add Account
2149
+ </span>
2150
+ <span class="profile-section-collapsible__edit-icon" aria-hidden="true">${an}</span>
2151
+ </button>
2152
+ <button
2153
+ type="button"
2154
+ class="inline-flex-row"
2155
+ aria-label="Toggle social accounts section"
2156
+ aria-controls="social-panel"
2157
+ aria-expanded="false"
2158
+ @click=${Yi}
2159
+ >
2160
+ <span class="profile-section-collapsible__chevron" aria-hidden="true">⌄</span>
2161
+ </button>
2162
+ </div>
2163
+ </header>
2164
+ <div id="social-panel" class="profile-section-collapsible__content" aria-hidden="true">
2165
+ ${X`
2166
+ <div class="profile__empty-state-content flex-column-center" role="group" aria-label="Empty social accounts section">
2167
+ <div class="social__empty-icon-wrapper">
2168
+ <span class="social__empty-icon inline-flex-row">${Ke}</span>
282
2169
  </div>
2170
+ <p class="profile__empty-state-message social__empty-message">
2171
+ No social media links added yet.
2172
+ </p>
2173
+ </div>
2174
+ `}
283
2175
  </div>
284
- `,a=await t.chat.getChat(n,!1)}catch(s){a=!1}if(a){const l=e.dom.createElement("div");l.setAttribute("role","log"),l.setAttribute("aria-label","Chat conversation"),l.appendChild(i.render(a,e,{})),o.appendChild(l),yield o}else{let d=Gn(Bn.authn.currentUser())?zn.toUpperCase():Rn.toUpperCase();const c=bn.widgets.button(e.dom,void 0,d,A,{needsBorder:!0});async function A(r){r.preventDefault();try{const r=await t.chat.getChat(n,!0);o.innerHTML="",o.appendChild(i.render(r,e,{}))}catch(n){Hn(o,e,n)}}function u(){Gn(Bn.authn.currentUser())?c.innerHTML=zn.toUpperCase():c.innerHTML=Rn.toUpperCase()}c.refresh=u(),c.setAttribute("type","button"),c.setAttribute("aria-describedby","chat-button-description");const p=e.dom.createElement("span");p.id="chat-button-description",p.className="sr-only",p.textContent="Start a new conversation or sign in to continue existing chat",c.classList.add("actionButton","btn-primary","action-button-focus"),o.appendChild(c),o.appendChild(p),yield o}}())} `})(n,e)}
2176
+ </section>
2177
+ `}function Dr(e,n,t,i,o,a,r,l){return X`
2178
+ <aside
2179
+ aria-labelledby="sidebar-heading"
2180
+ class="profile__sidebar p-sm"
2181
+ >
2182
+ <h2 id="sidebar-heading" class="sr-only">Sidebar</h2>
2183
+ <div aria-label="Sidebar Content" class="flex-column gap-md">
2184
+ ${function(e,n,t,i,o){const a=t||{accounts:[]},r=Array.isArray(a.accounts)&&a.accounts.length>0;return X`
2185
+ ${r||"owner"!==i?$r(e,n,a,i,o):Sr(e,n,a,i,o)}
2186
+ `}(e,n,t,r,l)}
2187
+ ${function(e,n,t,i,o){const a=t||[],r=Array.isArray(a)&&a.length>0;return X`
2188
+ ${r||"owner"!==i?Ro(e,n,a,i,o):Uo(e,n,a,i,o)}
2189
+ `}(e,n,i,r,l)}
2190
+ ${vo(e,n,o,r,l)}
2191
+ ${Ki(e,n,a,r,l)}
2192
+ ${function(e,n){return X`
2193
+ <section class="profile__section border-lighter profile__qr-code" aria-labelledby="qr-heading" tabindex="-1">
2194
+ <h2 id="qr-heading" class="sr-only">QR code</h2>
2195
+ <div class="qrcode-card__frame flex-center">
2196
+ ${Pe(e,n)}
285
2197
  </div>
286
2198
  </section>
287
- </main>
288
- `}function De(n,e){const t=n.dom.createElement("section");t.setAttribute("aria-labelledby","edit-profile-contact-heading"),t.classList.add("profileSection","section-bg","profile-form");const i=n.dom.createElement("header");i.classList.add("text-center","mb-md");const o=n.dom.createElement("h2");return o.id="edit-profile-contact-heading",o.classList.add("section-title"),o.textContent="Your profile",i.appendChild(o),t.appendChild(i),t.appendChild(function(n,e,t){const i=n.session.paneRegistry.byName(t);if(!i){const e=n.dom.createElement("div");return e.innerText=`Unable to load view: ${t}`,e}const o=i.render(e,n);let r;o&&"function"==typeof o.setAttribute?r=o:o&&o.nodeType===Node.TEXT_NODE?(r=n.dom.createElement("section"),r.appendChild(o)):(r=n.dom.createElement("section"),r.innerText=`View render did not return a valid Node for: ${t}`);return r.setAttribute("role","region"),r.setAttribute("aria-label",`${t} section`),r}(n,e,"contact")),t}var Re=r(6776),ze={};ze.styleTagTransform=p(),ze.setAttributes=d(),ze.insert=s().bind(null,"head"),ze.domAPI=i(),ze.insertStyleElement=A();e()(Re.A,ze);Re.A&&Re.A.locals&&Re.A.locals;var Me=r(5179),Oe={};Oe.styleTagTransform=p(),Oe.setAttributes=d(),Oe.insert=s().bind(null,"head"),Oe.domAPI=i(),Oe.insertStyleElement=A();e()(Me.A,Oe);Me.A&&Me.A.locals&&Me.A.locals;const Ue=bn.icons.iconBase+"noun_10636_grey.svg";function He(n,e,t,i,o){const r=Bn.store.each(t,o);(async()=>{Bn.store.fetcher&&await Promise.all(r.map(n=>{var e;return Bn.store.holds(n,null,null,null)?Promise.resolve():null===(e=Bn.store.fetcher)||void 0===e?void 0:e.load(n.value).catch(()=>{})})),r.sort((n,e)=>n.value>e.value?1:n.value<e.value?-1:0),bn.utils.syncTableToArray(e,r,r=>function(n,e,t,i,o,r){const a=t,s=n.createElement("img");s.src=function(n,e){const t=bn.widgets.findImage(n);if(t)return e.classList.add("profile-image"),t;return e.classList.add("default-profile-image"),Ue}((0,jn.sym)(t),s),s.alt=`Image of ${bn.utils.label((0,jn.sym)(t))}`;const l={image:s,title:bn.utils.label((0,jn.sym)(t)),link:!0};o&&(l.deleteFunction=function(){!async function(n,e,t,i,o,r){if(!Bn.store.updater)throw new Error("Store has no updater.");const a=Bn.store.statementsMatching(t,r,o,null);if(!a.length)return console.warn("No matching statement found to delete for",o.value),void He(n,e,t,i,r);try{if(await Bn.store.updater.update(a,[]),"function"==typeof Bn.store.removeStatements){if(Bn.store.holds(t,r,o,null))try{Bn.store.removeStatements(a)}catch(n){}}Bn.store.fetcher&&await Bn.store.fetcher.load(t.doc()),He(n,e,t,i,r)}catch(o){if(console.error("Error deleting:",o),"function"==typeof Bn.store.removeStatements)try{Bn.store.removeStatements(a)}catch(n){}Bn.store.fetcher&&await Bn.store.fetcher.load(t.doc()),He(n,e,t,i,r)}}(n,e,i,o,a,r)});return bn.widgets.renderAsRow(n,r,t,l)}(n,e,r,t,i,o))})()}function qe(n){if(n&&n.doc){return!!Bn.store.findTypeURIs(n.doc())[bn.ns.foaf("PersonalProfileDocument").uri]}return!1}const Ge=bn.icons.iconBase+"noun_34653_green.svg";const je=bn.icons.iconBase+"noun_34653_green.svg";const We={global:!0,icon:bn.icons.iconBase+"noun_492246.svg",name:"editProfile",label:()=>null,render:function(n,e){const t=e.dom,i=e.session.store,o=t.createElement("section");let r;o.setAttribute("data-testid","profile-editor"),o.setAttribute("role","region"),o.setAttribute("aria-label","Edit your profile");const a=t.createElement("main");a.setAttribute("id","profile-edit-main-content"),a.setAttribute("aria-busy","true"),a.setAttribute("tabindex","-1"),a.classList.add("profile-grid","no-focus-ring");const s=t.createElement("h1");s.classList.add("visually-hidden"),s.textContent="Edit Profile",a.appendChild(s),o.appendChild(a);const l=t.createElement("aside");l.classList.add("p-sm"),l.setAttribute("role","status"),l.setAttribute("aria-live","polite"),l.setAttribute("aria-atomic","true");const d=()=>{l.isConnected||o.appendChild(l)},c={dom:t,div:a,statusArea:l,me:null};return bn.login.ensureLoadedProfile(c).then(n=>{const o=n.me,s=o.doc();if(!i.updater)throw new Error("Store has no updater");if(i.any(o,bn.ns.solid("editableProfile")))r=i.any(o,bn.ns.solid("editableProfile"));else{if(!i.updater.editable(s.uri,i))return d(),void l.appendChild(bn.widgets.errorMessageBlock(t,`⚠️ Your profile ${s} is not editable, so we cannot do much here.`,"straw"));r=s}a.appendChild(De(e,o)),a.appendChild(function(n,e,t,i){const o=n.dom.createElement("section");o.setAttribute("data-testid","edit-cv-section"),o.setAttribute("aria-labelledby","edit-profile-cv-heading"),o.classList.add("profileSection","section-bg","profile-form");const r=n.dom.createElement("header");r.classList.add("text-center","mb-md");const a=n.dom.createElement("h2");if(a.id="edit-profile-cv-heading",a.classList.add("section-title"),a.textContent=Mn,r.appendChild(a),o.appendChild(r),!t){const e=n.dom.createElement("p");e.classList.add("p-md"),e.textContent="Login to add resume information to your profile.",o.appendChild(e)}return ce(o,e,'@prefix os: <http://www.w3.org/2000/10/swap/os#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix solid: <http://www.w3.org/ns/solid/terms#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix schema: <http://schema.org/>.\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix org: <http://www.w3.org/ns/org#>.\n@prefix esco: <http://data.europa.eu/esco/model#>.\n@prefix wd: <http://www.wikidata.org/entity/>.\n@prefix wdt: <http://www.wikidata.org/prop/direct/>.\n\n@prefix : <#>.\n\n:this\n <http://purl.org/dc/elements/1.1/title> "Resume form" ;\n a ui:Form ;\n ui:parts (\n :CVGroup\n :SkillsHeading :SkillsForm\n :LanguagesHeading :LanguagesForm\n ).\n\n# Curriculum Vitae: membership of organizations\n\n:CVGroup a ui:Group; \n ui:weight 1; \n ui:parts ( \n :ResumeHeading \n :involvementWithOrganizationsForm \n ).\n\n:ResumeHeading a ui:Heading; \n ui:contents "Add your work experience" .\n\n:involvementWithOrganizationsForm a ui:Multiple;\n ui:label "work experience";\n ui:property org:member; \n ui:reverse true; # link back from role to member\n ui:ordered false; # Allow user to order CV secions rather than force date order? No.\n ui:part :RoleMembershipForm.\n\norg:member owl:inverse [ ui:label "Work experience" ]. # timelimited involvement\n\n# This is a big important form for one of a series of roles in the list.\n\n:RoleMembershipForm a ui:Group; \n ui:weight 3; \n ui:parts ( \n :MembershipFormHeading\n :RoleClassifier \n :roleNameField\n :escoOccupationField \n :orgField \n :RoleDatesForm \n :RoleDescriptionForm).\n\n:MembershipFormHeading a ui:Heading; \n ui:contents "Details of the role"@en, "Détailes de ce rôle"@fr .\n\n:roleNameField a ui:SingleLineTextField;\n ui:label "Job title";\n ui:property vcard:role .\n\n:escoOccupationField a ui:AutocompleteField;\n ui:label "Find in occupation catalog";\n ui:property org:role;\n ui:dataSource :ESCO_Occupation_DataSource;\n ui:targetClass schema:Occupation .\n\n :ESCO_Occupation_DataSource a ui:DataSource;\n schema:name "ESCO";\n ui:targetClass schema:Occupation ;\n schema:logo <https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif>;\n ui:searchByNameURI "https://ec.europa.eu/esco/api/search?language=$(language)&type=occupation&text=$(name)".\n\n:orgField a ui:Choice; \n ui:label "For organization"@en, "Pour l\'organisation"@fr;\n ui:canMintNew true; \n ui:use :OrganizationCreationForm ;\n ui:property org:organization;\n ui:from vcard:Organization .\n\nvcard:Organization ui:creationForm :OrganizationCreationForm .\n\n###### eposodes in one\'s career - Roles\n\n:RoleClassifier a ui:Classifier; \n ui:label "Job type"@en;\n ui:category solid:Role .\n\n:RoleDatesForm a ui:Options; \n ui:dependingOn rdf:type; \n ui:case\n [ ui:for solid:PastRole; ui:use :TwoDateForm ],\n [ ui:for solid:CurrentRole; ui:use :StartDateForm ],\n [ ui:for solid:FutureRole; ui:use :StartDateForm ].\n\n :TwoDateForm a ui:Group; \n ui:weight 0; \n ui:parts ( :StartDateForm :EndDateForm ) .\n :StartDateForm a ui:DateField; \n ui:label "Start"@en,"Début"@fr;\n ui:property schema:startDate .\n :EndDateForm a ui:DateField; \n ui:label "End"@en,"Fin"@fr;\n ui:property schema:endDate .\n\nsolid:Role a rdfs:Class;\n owl:disjointUnionOf ( solid:PastRole solid:CurrentRole solid:FutureRole ) ;\n owl:oneOf ( solid:CurrentRole solid:PastRole solid:FutureRole ). # Future Role too?\n\nsolid:PastRole a rdfs:Class; rdfs:label "Former role"@en, "Ancien rôle"@fr, "Vergangene Rolle"@de, "Rol anterior"@es .\nsolid:CurrentRole a rdfs:Class; rdfs:label "Current role"@en, "Rôle actuel"@fr, "Momentane Rolle"@de , "Rol actual"@es .\nsolid:FutureRole a rdfs:Class; rdfs:label "Future role"@en, "Rôle à venir"@fr, "Zukünftige Rolle"@de, "Rol futuro"@es .\n\n:RoleDescriptionForm a ui:MultiLineTextField; \n ui:property schema:description;\n ui:label "Describe your role" .\n\n###### Organizations\n\n:OrganizationCreationForm a ui:Form; \n schema:name "Form for editing an organization using public data" ;\n ui:parts ( \n :OrgClassifier \n :OrganizationNameField\n :OrgSwitch\n :homePageURIField ) .\n\n:OrgClassifier a ui:Classifier; \n ui:label "Type"@en;\n ui:category solid:InterestingOrganization .\n\n:OrgSwitch a ui:Options; \n ui:dependingOn rdf:type;\n ui:case\n [ ui:for schema:Corporation; ui:use :CorporationForm ],\n [ ui:for schema:GovernmentOrganization; ui:use :GovernmentOrganizationForm ],\n [ ui:for schema:PerformingGroup; ui:use :PerformingGroupForm ],\n [ ui:for schema:Project; ui:use :ProjectForm ],\n [ ui:for schema:NGO; ui:use :NGOForm ],\n [ ui:for schema:EducationalOrganization; ui:use :EducationalOrganizationForm ],\n [ ui:for schema:ResearchOrganization; ui:use :ResearchOrganizationForm ],\n [ ui:for schema:SportsOrganization; ui:use :SportsOrganizationForm ].\n\n:OrganizationNameField a ui:SingleLineTextField ;\n ui:label "Name";\n ui:maxLength "200" ;\n ui:property schema:name .\n\n:homePageURIField a ui:NamedNodeURIField;\n ui:label "Homepage"@en;\n ui:property schema:uri .\n\n# Ontology data to drive the :OrgClassifier classifier\nsolid:InterestingOrganization owl:disjointUnionOf (\n # Airline - a Corporation\n # Consortium - a Corporation or a NGO\n schema:Corporation\n schema:EducationalOrganization\n schema:ResearchOrganization # Proposed. https://github.com/schemaorg/schemaorg/issues/2877\n # FundingScheme - eh?\n schema:GovernmentOrganization\n # LibrarySystem\n # LocalBusiness - Corporation\n # MedicalOrganization - a Corporation or a NGO\n schema:NGO\n # NewsMediaOrganization - a Corporation or a NGO\n schema:PerformingGroup # a band\n schema:Project # like Solid\n schema:SportsOrganization) .\n\n# This until the schema.org ontology adopts it\nschema:ResearchOrganization a rdfs:Class; \n rdfs:label "Research Organization"@en, "Organization de Recherche"@fr ,"organización de investigación"@es, \n "منظمة البحث"@ar, "अनुसंधान संगठन"@hi, "Forschungsorganisation"@de, "shirika la utafiti"@sw .\n\n##### Depending on the type of org, chose a different form\n\n#### Corporation\n:CorporationForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :CorporationAutocomplete ) .\n\n :CorporationAutocomplete a ui:AutocompleteField; \n ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q6881511>; # Enterprise\n ui:property solid:publicId; \n ui:dataSource :WikidataInstancesByName.\n\n :WikidataInstancesByName a ui:DataSource ;\n schema:name "Wikidata instances by name";\n ui:endpoint "https://query.wikidata.org/sparql" ;\n ui:searchByNameQuery """SELECT ?subject ?name\n WHERE {\n ?klass wdt:P279* $(targetClass) .\n ?subject wdt:P31 ?klass .\n ?subject rdfs:label ?name.\n FILTER regex(?name, "$(name)", "i")\n } LIMIT $(limit) """ ;\n\n # Note this form of the query is very experimental\n ui:searchByName [ ui:construct { ?subject schema:name ?name } ;\n ui:where { ?klass wdt:P279 ?targetClass .\n ?subject wdt:P31 ?klass; rdfs:label ?name .\n };\n ].\n\n#### Gouvernment\n:GovernmentOrganizationForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :GovernmentOrganizationAutocomplete ) .\n\n :GovernmentOrganizationAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q327333>; # GovernmentOrganization\n ui:property solid:publicId; \n ui:dataSource :WikidataInstancesByName.\n\n#### Educational\n:EducationalOrganizationForm a ui:Group; \n ui:weight 1; \n ui:parts ( \n :EducationalOrganizationAutocomplete ) .\n\n :EducationalOrganizationAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q2385804>; # EducationalOrganization\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### Research Group\n:ResearchOrganizationForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :ResearchOrganizationAutocomplete ) .\n\n :ResearchOrganizationAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q31855>; # research institute\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### NGO\n:NGOForm a ui:Group; ui:weight 0; \n ui:parts ( \n :NGOAutocomplete ) .\n\n :NGOAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q163740>; # Non-profit org\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### Performing group\n:PerformingGroupForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :PerformingGroupAutocomplete ) .\n\n :PerformingGroupAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q32178211>; # Music Org\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### Project\n:ProjectForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :ProjectAutocomplete ) . # :ProjectAutocomplete - no: supress, as not in WD\n\n :ProjectAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q170584>; # Project\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### Sports Organization\n :SportsOrganizationForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :SportsOrganizationAutocomplete ) .\n\n :SportsOrganizationAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q4438121>; # SportsOrganization\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#################### Skills\n\n:SkillsHeading a ui:Heading; \n ui:contents "Add your skills" .\n\n:SkillsForm a ui:Multiple;\n ui:label "skill";\n ui:property schema:skills;\n ui:ordered false; # Allow reader to order skills\n ui:part :SkillForm.\n\n:SkillForm a ui:Group; ui:weight 1; ui:parts ( :escoSkillField ).\n\n :escoSkillField a ui:AutocompleteField;\n ui:label "Find in skills catalog";\n ui:property solid:publicId;\n ui:dataSource :ESCO_Skill_DataSource;\n ui:targetClass schema:Skill .\n\n :ESCO_Skill_DataSource a ui:DataSource;\n schema:name "ESCO skill";\n ui:targetClass esco:Skill ;\n schema:logo <https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif>;\n ui:searchByNameURI "https://ec.europa.eu/esco/api/search?language=$(language)&limit=$(limit)&type=skill&text=$(name)".\n\n#################### Languages\n\n:LanguagesHeading a ui:Heading; ui:contents "Add your languages" .\n\n:LanguagesForm a ui:Multiple;\n ui:label "language";\n ui:property schema:knowsLanguage; \n ui:ordered true; # Allow user to order languages most important first.\n ui:part :LanguageForm.\n\n:LanguageForm a ui:Group; ui:weight 1; ui:parts ( :WikidataLanguageField ).\n\n :WikidataLanguageField a ui:AutocompleteField;\n ui:label "Language";\n ui:property solid:publicId; \n ui:dataSource :WikidataLanguageDataSource;\n ui:targetClass schema:Language .\n\n :WikidataLanguageDataSource\n schema:name "Find in wikidata";\n ui:endpoint "https://query.wikidata.org/sparql" ;\n ui:objectURIBase <https://www.w3.org/ns/iana/language-code/>;\n # Add this to any literal string returned as ?subject\n ui:searchByNameQuery """SELECT ?item ?subject ?name\n WHERE\n { ?item wdt:P305 ?subject .\n OPTIONAL {?item rdfs:label ?name}\n OPTIONAL {?item wdt:P1705 ?name}\n FILTER regex(?name, "$(name)", "i")\n FILTER regex(?subject, "^..$", "i")\n }""" .\n # Note we restrict code to two-letter codes with the second regex, so as to limit the deluge of languages\n # Hope there are not any important ones which have three-letter codes.\n # Omitted: SERVICE wikibase:label { bd:serviceParam wikibase:language "$(languages)". }',"resumeForm.ttl",i,n.dom,t),o}(e,o,r,i)),a.appendChild(function(n,e,t,i){const o=n.dom.createElement("section");o.setAttribute("data-testid","edit-social-section"),o.setAttribute("aria-labelledby","edit-profile-social-heading"),o.classList.add("profileSection","section-bg","profile-form");const r=n.dom.createElement("header");r.classList.add("text-center","mb-md");const a=n.dom.createElement("h2");if(a.id="edit-profile-social-heading",a.classList.add("section-title"),a.textContent=On,r.appendChild(a),o.appendChild(r),!t){const e=n.dom.createElement("p");e.classList.add("p-md"),e.textContent="Login to add social media accounts to your profile.",o.appendChild(e)}return ce(o,e,le,"socialMedia.ttl",i,n.dom,t),o}(e,o,r,i)),a.appendChild(function(n,e,t,i){const o=n.dom.createElement("section");o.setAttribute("data-testid","edit-other-preferences-section"),o.setAttribute("aria-labelledby","edit-profile-other-preferences-heading"),o.classList.add("profileSection","section-bg","profile-form");const r=n.dom.createElement("header");r.classList.add("text-center","mb-md");const a=n.dom.createElement("h2");return a.id="edit-profile-other-preferences-heading",a.classList.add("section-title"),a.textContent="Other preferences",r.appendChild(a),o.appendChild(r),ce(o,e,'@prefix os: <http://www.w3.org/2000/10/swap/os#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix solid: <http://www.w3.org/ns/solid/terms#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix schema: <http://schema.org/>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix wd: <http://www.wikidata.org/entity/>.\n@prefix wdt: <http://www.wikidata.org/prop/direct/>.\n\n@prefix : <#>.\n\n\n:this\n <http://purl.org/dc/elements/1.1/title> "Other preferences form" ;\n a ui:Form ;\n ui:parts (\n :styleGroup\n ).\n\n:styleGroup a ui:Group; ui:weight 0; \n ui:parts ( :styleHeading :backgroundColor :highlightColor ).\n\n:styleHeading a ui:Heading; ui:contents "The style of your public profile".\n\n:backgroundColor a ui:ColorField; ui:property solid:profileBackgroundColor;\n ui:label "Background color"; ui:default "#ffffff".\n:highlightColor a ui:ColorField; ui:property solid:profileHighlightColor;\n ui:label "Highlight color"; ui:default "#000000".',"otherPreferencesForm.ttl",i,n.dom,t),o}(e,o,r,i)),a.appendChild(function(n,e,t){const i=n.dom.createElement("section");i.setAttribute("aria-labelledby","edit-profile-friends-heading"),i.classList.add("profileSection","section-bg");const o=n.dom.createElement("header");o.classList.add("text-center","mb-md");const r=n.dom.createElement("h2");if(r.id="edit-profile-friends-heading",r.classList.add("section-title"),r.textContent=Un,o.appendChild(r),i.appendChild(o),t){let o=n.dom.createElement("div");o.classList.add("add-friend-button-container"),function(n,i){const o=n.appendChild(bn.widgets.button(i.dom,Ge,"Add a friend",l)),r=bn.ns.foaf("knows");o.setAttribute("class","add-button"),o.setAttribute("aria-label","Add a friend");const a=i.dom.createElement("span");async function l(o){const a=await bn.widgets.askName(i.dom,Bn.store,n,r,void 0,"WebID of the friend you");if(a){try{new URL(a)}catch{return void Hn(n,i,"Not a URL")}try{await Bn.store.fetcher.load(Bn.store.sym(a))}catch{return void Hn(n,i,"Not a valid WebID")}if(qe(Bn.store.sym(a)))return Yn(a,i,r).then(()=>{He(i.dom,s,e,t,r)}).catch(e=>{qn(n),Hn(n,i,e)});Hn(n,i,"WebID does not seem to exist")}}a.textContent="Add a friend",a.setAttribute("class","span"),n.appendChild(a)}(o,n),i.appendChild(o)}const a=i.appendChild(n.dom.createElement("table"));a.classList.add("edit-friends-attachment-outer");const s=a.appendChild(n.dom.createElement("tr")).appendChild(n.dom.createElement("td")).appendChild(n.dom.createElement("table"));return s.classList.add("attachmentTable","table","table-striped","table-hover"),a.refresh=He(n.dom,s,e,t,bn.ns.foaf("knows")),He(n.dom,s,e,t,bn.ns.foaf("knows")),i}(e,o,r)),a.appendChild(function(n,e,t){const i=n.dom.createElement("section");i.setAttribute("aria-labelledby","edit-profile-communities-heading"),i.classList.add("profileSection","section-bg");const o=n.dom.createElement("header");o.classList.add("text-center","mb-md");const r=n.dom.createElement("h2");if(r.id="edit-profile-communities-heading",r.classList.add("section-title"),r.textContent="Your communities",o.appendChild(r),i.appendChild(o),t){let o=n.dom.createElement("div");o.classList.add("add-community-button-container"),function(n,i){const o=n.appendChild(bn.widgets.button(i.dom,je,"Add a project or community",l)),r=bn.ns.solid("community");o.setAttribute("class","add-button"),o.setAttribute("aria-label","Add a new community");const a=i.dom.createElement("span");async function l(o){const a=await bn.widgets.askName(i.dom,Bn.store,n,r,void 0,"WebID of");if(a){try{new URL(a)}catch{return void Hn(n,i,"Not a URL")}try{await Bn.store.fetcher.load(Bn.store.sym(a))}catch{return void Hn(n,i,"Not a valid WebID")}if(qe(Bn.store.sym(a)))return Yn(a,i,r).then(()=>{He(i.dom,s,e,t,r)}).catch(e=>{qn(n),Hn(n,i,e)});Hn(n,i,"WebID does not seem to exist")}}a.textContent="Add a community or project",a.setAttribute("class","span"),n.appendChild(a)}(o,n),i.appendChild(o)}const a=i.appendChild(n.dom.createElement("table"));a.classList.add("edit-community-attachment-outer");const s=a.appendChild(n.dom.createElement("tr")).appendChild(n.dom.createElement("td")).appendChild(n.dom.createElement("table"));return s.classList.add("attachmentTable","table","table-striped","table-hover"),a.refresh=He(n.dom,s,e,t,bn.ns.solid("community")),He(n.dom,s,e,t,bn.ns.solid("community")),i}(e,o,r)),ue(a),a.setAttribute("aria-busy","false"),a.focus()}).catch(n=>{d(),l.appendChild(bn.widgets.errorMessageBlock(t,n,"#fee")),a.setAttribute("aria-busy","false")}),o}},Ve=We;var Ye=r(7583);const Qe={global:!1,icon:bn.icons.iconBase+"noun_15059.svg",name:"profile",label:function(n,e){const t=e.session.store.findTypeURIs(n);return t[bn.ns.vcard("Individual").uri]||t[bn.ns.foaf("Person").uri]||t[bn.ns.schema("Person").uri]?"Profile":null},editor:Ve,render:(n,e)=>{const t=e.dom.createElement("div");return async function(n,e){const t=n.each(e,bn.ns.rdfs("seeAlso"),null,e.doc());t.length>0&&await n.fetcher.load(t)}(e.session.store,n).then(async()=>{((n,e,t)=>{const i=t?.renderBefore??e;let o=i._$litPart$;if(void 0===o){const n=t?.renderBefore??null;i._$litPart$=o=new An(e.insertBefore(U(),n),n,void 0,t??{})}o._$AI(n)})(await Pe(n,e),t);const i=Array.from(t.getElementsByClassName("QRCode"));if(!i.length)return console.error("QRCode Ele missing");for(const n of i){const e=n.getAttribute("data-value");if(!e)return console.error("QRCode data-value missing");const t={type:"svg",color:{dark:n.getAttribute("highlightColor")||"#000000",light:n.getAttribute("backgroundColor")||"#ffffff"}};Ye.toString(e,t,function(e,t){e?console.error("QRcode error!",e):(n.innerHTML=t,n.style.width="80%",n.style.height="80%",n.style.margin="10%")})}}),t}},Ze=Qe})(),a=a.default})());
2199
+ `}(n,e)}
2200
+ </div>
2201
+ </aside>
2202
+ `}async function Nr(e,n,t){const i=n.session.store,o=function(e){let n="anonymous";return fe.authn.currentUser()&&fe.authn.currentUser().sameTerm(e)&&(n="owner"),fe.authn.currentUser()&&!fe.authn.currentUser().sameTerm(e)&&(n="authenticated"),n}(e),a=await $t(e,i),r=a.profileDetails,l=a.cvDetails,s=a.skills,d=a.languages,c=a.projects,A=a.bioDetails,p=a.social,u=a.contactInfo;return X`
2203
+ <div class="profile-pane-root">
2204
+ <main
2205
+ id="main-content"
2206
+ class="profile-grid"
2207
+ tabindex="-1"
2208
+ >
2209
+ <h1 id="profile-content-heading" class="sr-only">Profile for ${r.name}</h1>
2210
+
2211
+ <section
2212
+ class="profile__main flex-column gap-md p-sm"
2213
+ >
2214
+ <h2 id="profile-main-heading" class="sr-only">Main Profile Content</h2>
2215
+
2216
+ ${Va(n,e,r,o,t)}
2217
+ ${rr(i,e,A,o,t)}
2218
+ ${function(e,n,t,i,o){const a=t||[],r=a.length>0;return X`
2219
+ ${r||"owner"!==i?ea(e,n,a,i,o):na(e,n,a,i,o)}
2220
+ `}(i,e,l,o,t)}
2221
+ ${function(e,n,t,i,o){const a=Array.isArray(t)&&t.length>0;return X`
2222
+ ${a||"owner"!==i?_a(e,n,t,i,o):ba(e,n,0,i,o)}
2223
+ `}(i,e,c,o,t)}
2224
+
2225
+ </section>
2226
+ ${Dr(i,e,p,s,d,u,o,t)}
2227
+ </main>
2228
+ </div>
2229
+ `}var Tr=a(7583);const jr={global:!1,icon:me.icons.iconBase+"noun_15059.svg",name:"profile",label:function(e,n){const t=n.session.store.findTypeURIs(e);return t[me.ns.vcard("Individual").uri]||t[me.ns.foaf("Person").uri]||t[me.ns.schema("Person").uri]?"Profile":null},render:(e,n)=>{const t=n.dom.createElement("div"),i=n.session.store,o=async()=>{ue(await Nr(e,n,o),t);const i=Array.from(t.getElementsByClassName("qrcode-card"));if(!i.length)return console.error("QRCode Ele missing");for(const e of i){const n=e.getAttribute("data-value");if(!n)return console.error("QRCode data-value missing");const t={type:"svg",color:{dark:"#000000",light:"#ffffff"}};Tr.toString(n,t,function(n,t){if(n)console.error("QRcode error!",n);else{const n=e.querySelector('div[role="img"]');if(!n)return void console.error("QRCode image container missing");n.innerHTML=t,n.style.width="100%",n.style.height="100%",n.style.margin="0"}})}};return async function(e,n){const t=e.each(n,me.ns.rdfs("seeAlso"),null,n.doc());t.length>0&&await e.fetcher.load(t)}(i,e).then(async()=>{await o()}),t}},zr=jr})(),r=r.default})());
289
2230
  //# sourceMappingURL=profile-pane.min.js.map