ghost 6.58.0 → 6.59.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 (453) hide show
  1. package/components/tryghost-adapter-base-scheduling-0.2.2.tgz +0 -0
  2. package/components/tryghost-adapter-base-sso-0.1.2.tgz +0 -0
  3. package/components/tryghost-i18n-0.0.0.tgz +0 -0
  4. package/components/tryghost-kg-default-nodes-2.2.0.tgz +0 -0
  5. package/components/tryghost-kg-html-to-lexical-1.4.0.tgz +0 -0
  6. package/components/tryghost-kg-lexical-html-renderer-1.5.0.tgz +0 -0
  7. package/content/themes/casper/.github/workflows/test.yml +11 -1
  8. package/content/themes/casper/AGENTS.md +25 -0
  9. package/content/themes/casper/assets/built/screen.css +1 -1
  10. package/content/themes/casper/assets/css/screen.css +15 -1
  11. package/content/themes/casper/gulpfile.js +3 -0
  12. package/content/themes/casper/package.json +8 -8
  13. package/content/themes/source/.gitattributes +5 -0
  14. package/content/themes/source/.github/workflows/test.yml +39 -0
  15. package/content/themes/source/AGENTS.md +25 -0
  16. package/content/themes/source/README.md +33 -4
  17. package/content/themes/source/assets/built/screen.css +1 -1
  18. package/content/themes/source/assets/css/screen.css +15 -0
  19. package/content/themes/source/gulpfile.js +6 -3
  20. package/content/themes/source/package.json +13 -10
  21. package/content/themes/source/pnpm-workspace.yaml +3 -0
  22. package/core/boot.js +11 -4
  23. package/core/built/admin/assets/Combination-BCm9FL4o.js +41 -0
  24. package/core/built/admin/assets/about-BdSCpjXG.js +1 -0
  25. package/core/built/admin/assets/account-migration-BpKAqo8k.js +1 -0
  26. package/core/built/admin/assets/activitypub/{account-migration-BpDeIF3G.js → account-migration-DVnYS1XG.js} +8 -8
  27. package/core/built/admin/assets/activitypub/activitypub.js +2 -2
  28. package/core/built/admin/assets/activitypub/{bluesky-sharing-aPMtrS3L.js → bluesky-sharing-DLVeE9ii.js} +31 -31
  29. package/core/built/admin/assets/activitypub/{content-formatters-BORfuA9G.js → content-formatters-DCsVic-t.js} +2 -2
  30. package/core/built/admin/assets/activitypub/{dist-ByFmDSNP2.js → dist-ByFmDSNP.js} +1 -1
  31. package/core/built/admin/assets/activitypub/{domain-CPdiB27_.js → domain-rrvDLfnK.js} +8 -8
  32. package/core/built/admin/assets/activitypub/{edit-profile-BY2PawIe.js → edit-profile-VT-piVxq.js} +23 -23
  33. package/core/built/admin/assets/activitypub/{explore-Sp9bgAwq.js → explore-DZg3m48P.js} +14 -14
  34. package/core/built/admin/assets/activitypub/{feed-BjtF4ohL.js → feed-BJqQvDMI.js} +41 -41
  35. package/core/built/admin/assets/activitypub/{field-BDOYVTg6.js → field-BezS4-1J.js} +2 -2
  36. package/core/built/admin/assets/activitypub/inbox-Uf0GVrI_.js +1284 -0
  37. package/core/built/admin/assets/activitypub/{label-1jhN-qhD.js → label-CZ6if4zK.js} +2 -2
  38. package/core/built/admin/assets/activitypub/layout-DNuYT4Gu.js +1 -0
  39. package/core/built/admin/assets/activitypub/moderation-CP6mDVky.js +340 -0
  40. package/core/built/admin/assets/activitypub/{note-nr_m_5yb.js → note-BlFkye2g.js} +16 -16
  41. package/core/built/admin/assets/activitypub/{notifications-BdcyivbT.js → notifications-GGTrGEdu.js} +163 -126
  42. package/core/built/admin/assets/activitypub/{preferences-CNqy1x9C.js → preferences-CjZXrZqr.js} +1550 -1551
  43. package/core/built/admin/assets/activitypub/{profile-DlY4rhbO.js → profile-CcXYxydm.js} +248 -248
  44. package/core/built/admin/assets/activitypub/{routes-CEHdEZzS.js → routes-nHCKlZl-.js} +1971 -1747
  45. package/core/built/admin/assets/activitypub/settings-pDzybcb3.js +315 -0
  46. package/core/built/admin/assets/activitypub/{site-CtBUCPBz.js → site-BZF0F8LN.js} +101 -101
  47. package/core/built/admin/assets/activitypub/{step-1-D9jGWyAy.js → step-1-C-Ns1Tfg.js} +3 -3
  48. package/core/built/admin/assets/activitypub/{step-3-KpUqpGWi.js → step-3-rDMNGmLg.js} +8 -8
  49. package/core/built/admin/assets/activitypub/{tabs-DvlsxTCI.js → tabs-CDjh3_Jp.js} +198 -198
  50. package/core/built/admin/assets/activitypub/{topic-filter-CIN1E2jg.js → topic-filter-CmTc8hpN.js} +2 -2
  51. package/core/built/admin/assets/activitypub/{use-activity-pub-queries-CATFd6YV.js → use-activity-pub-queries-DUDEdSdR.js} +286 -243
  52. package/core/built/admin/assets/activitypub/{use-reply-chain-data-DJ0vhA8V.js → use-reply-chain-data-TunGtmJl.js} +14 -14
  53. package/core/built/admin/assets/add-integration-modal-CXRQi1x0.js +1 -0
  54. package/core/built/admin/assets/add-newsletter-modal-t447KRYz.js +1 -0
  55. package/core/built/admin/assets/add-recommendation-modal-D882MdnR.js +1 -0
  56. package/core/built/admin/assets/{analytics-BC2oR8ay.js → analytics-Dj-WlzPf.js} +1 -1
  57. package/core/built/admin/assets/announcement-bar-modal-CwHKKw-a.js +1 -0
  58. package/core/built/admin/assets/api-keys-Boy5pLbD.js +1 -0
  59. package/core/built/admin/assets/audience-Cc40y7zQ.js +1 -0
  60. package/core/built/admin/assets/automations-DNLK5Udr.js +1 -0
  61. package/core/built/admin/assets/bluesky-sharing-Cm4aFaOl.js +1 -0
  62. package/core/built/admin/assets/breadcrumb-CcFr_ltt.js +1 -0
  63. package/core/built/admin/assets/button-BshWPHvn.js +1 -0
  64. package/core/built/admin/assets/chart-helpers-BsbzoWhK.js +1 -0
  65. package/core/built/admin/assets/{checkbox-LmClhqcS.js → checkbox-1G6KfK2q.js} +1 -1
  66. package/core/built/admin/assets/chunk-KS7C4IRE-DCsL4i4D.js +4 -0
  67. package/core/built/admin/assets/{chunk.408.1a258af360eb8d905508.js → chunk.301.5673a0caf7c49bb00212.js} +3 -3
  68. package/core/built/admin/assets/{chunk.524.4c693c3a00ac91df34fa.js → chunk.524.86db0d945468c852374b.js} +4 -4
  69. package/core/built/admin/assets/{chunk.582.20b600e329e58d12d7c2.js → chunk.582.c2f6216d3c4af303e236.js} +6 -6
  70. package/core/built/admin/assets/{code-editor-view-DqTOUnbM.js → code-editor-view-BVjtWyst.js} +1 -1
  71. package/core/built/admin/assets/{code-editor-view-bA0lfxUL.js → code-editor-view-y_zVfmCa.js} +1 -1
  72. package/core/built/admin/assets/color-picker-XEMPgNJE.js +3 -0
  73. package/core/built/admin/assets/{color-picker-field-Cv9GOJQZ.js → color-picker-field-BhplXcy5.js} +1 -1
  74. package/core/built/admin/assets/combobox-CRMJrvcQ.js +1 -0
  75. package/core/built/admin/assets/command-151T2eRx.js +1 -0
  76. package/core/built/admin/assets/comments-Bjbl9toF.js +1 -0
  77. package/core/built/admin/assets/confirmation-context-QmFxSjWy.js +1 -0
  78. package/core/built/admin/assets/{content-api-modal-BOFWRUkC.js → content-api-modal-CpeABXne.js} +1 -1
  79. package/core/built/admin/assets/{copy-field-8biQvNMD.js → copy-field-CglgRZyG.js} +1 -1
  80. package/core/built/admin/assets/custom-field-type-option-DSyJw4T4.js +1 -0
  81. package/core/built/admin/assets/custom-integration-modal-DWB9bRVp.js +1 -0
  82. package/core/built/admin/assets/date-range-select-kaKtab5O.js +1 -0
  83. package/core/built/admin/assets/design-and-theme-modal-86s2AaZ-.js +23 -0
  84. package/core/built/admin/assets/dirty-confirm-dialog-CTFdXXy7.js +1 -0
  85. package/core/built/admin/assets/disabled-sources-indicator-BFyCxUOx.js +1 -0
  86. package/core/built/admin/assets/dist-C1-Oy3Db.js +1 -0
  87. package/core/built/admin/assets/dist-CJJqYPep.js +1 -0
  88. package/core/built/admin/assets/dist-CNlMj7ML.js +1 -0
  89. package/core/built/admin/assets/dist-Kll2twSG.js +1 -0
  90. package/core/built/admin/assets/domain-BOoMvBG3.js +1 -0
  91. package/core/built/admin/assets/{dropzone-B21Entqz.js → dropzone-B6KWzsrb.js} +2 -2
  92. package/core/built/admin/assets/edit-profile-BagrYOrN.js +1 -0
  93. package/core/built/admin/assets/editor-AaJjqbpk.js +8 -0
  94. package/core/built/admin/assets/embed-signup-form-modal-B8L95KwR.js +8 -0
  95. package/core/built/admin/assets/explore-xbykZTlO.js +1 -0
  96. package/core/built/admin/assets/feed-BAHSipWv.js +1 -0
  97. package/core/built/admin/assets/{field-BQqLTgHM.js → field-kJYZ2T3C.js} +1 -1
  98. package/core/built/admin/assets/{filter-sources-FgqoUIL7.js → filter-sources-QeqFGNRB.js} +1 -1
  99. package/core/built/admin/assets/{filters-D0uIMD8n.js → filters-By5KQeV6.js} +1 -1
  100. package/core/built/admin/assets/filters-DtYpAkDd.js +1 -0
  101. package/core/built/admin/assets/first-promoter-modal-8A02oyjA.js +1 -0
  102. package/core/built/admin/assets/{ghost-ba408063a5922b458b4a8f216cf23251.js → ghost-f110822e67868c9fdf9a6c23754b2559.js} +9 -8
  103. package/core/built/admin/assets/gift-link-modal-DbYCyuhF.js +1 -0
  104. package/core/built/admin/assets/global-data-context-gAMDH9u1.js +1 -0
  105. package/core/built/admin/assets/growth-BSOxJGey.js +3 -0
  106. package/core/built/admin/assets/growth-BZTjURq5.js +1 -0
  107. package/core/built/admin/assets/history-modal-CCgWtlZE.js +1 -0
  108. package/core/built/admin/assets/html-field-BQC7XyLA.js +1 -0
  109. package/core/built/admin/assets/iframe-buffering-DnOlWTD4.js +1 -0
  110. package/core/built/admin/assets/{images-3cQgwfTD.js → images-D5UKr2SG.js} +1 -1
  111. package/core/built/admin/assets/{inbox-Dz_JblyJ.js → inbox-DvN15_YH.js} +45 -39
  112. package/core/built/admin/assets/index-BJz9Zlsc.js +67 -0
  113. package/core/built/admin/assets/index-Dg8cdR8E.css +1 -0
  114. package/core/built/admin/assets/{input-group-DpogNUIt.js → input-group-BPAxETpQ.js} +1 -1
  115. package/core/built/admin/assets/invite-user-modal-jcUaaNkW.js +1 -0
  116. package/core/built/admin/assets/{koenig-lexical-2KuqRwZI.js → koenig-lexical-CfXTYeli.js} +1 -1
  117. package/core/built/admin/assets/koenig-loader-DktFM3Uh.js +1 -0
  118. package/core/built/admin/assets/{kpi-card-Ck3tT2Wg.js → kpi-card-fUHZlzBX.js} +1 -1
  119. package/core/built/admin/assets/{kpi-card-DDIxptaS.js → kpi-card-o0urVtNL.js} +1 -1
  120. package/core/built/admin/assets/kpi-helpers-2FTF4a3-.js +1 -0
  121. package/core/built/admin/assets/kpi-tabs-B8-_k2dQ.js +1 -0
  122. package/core/built/admin/assets/{label-DodDsMzn.js → label-CiRS3i_f.js} +1 -1
  123. package/core/built/admin/assets/label-picker-ao7tuPaK.js +1 -0
  124. package/core/built/admin/assets/layout-DC6QGDaw.js +1 -0
  125. package/core/built/admin/assets/member-custom-fields-BW756-EV.js +1 -0
  126. package/core/built/admin/assets/member-detail-CGGgUTSl.js +1 -0
  127. package/core/built/admin/assets/members-ZcPthwG0.js +11 -0
  128. package/core/built/admin/assets/moderation-24bElWs3.js +1 -0
  129. package/core/built/admin/assets/multi-select-combobox-CZPrgz-Z.js +1 -0
  130. package/core/built/admin/assets/navigation-modal-BiTP4U_J.js +1 -0
  131. package/core/built/admin/assets/newsletter-B3Ihwizp.js +1 -0
  132. package/core/built/admin/assets/newsletter-detail-modal-CYsu4qhl.js +1 -0
  133. package/core/built/admin/assets/newsletter-emails-CDPR4-SP.js +1 -0
  134. package/core/built/admin/assets/newsletters-bJiYLJWl.js +1 -0
  135. package/core/built/admin/assets/note-7f6urVVA.js +1 -0
  136. package/core/built/admin/assets/notifications-rosQCyXH.js +1 -0
  137. package/core/built/admin/assets/offers-container-modal-J2j6NpDL.js +1 -0
  138. package/core/built/admin/assets/onboarding-route-DTjcThKl.js +1 -0
  139. package/core/built/admin/assets/overview-BxvWzGaf.js +1 -0
  140. package/core/built/admin/assets/overview-D6JG0hkZ.js +1 -0
  141. package/core/built/admin/assets/{page-header-VLPJfj_d.js → page-header-l7vXmLIw.js} +1 -1
  142. package/core/built/admin/assets/pintura-modal-BGHmudVB.js +1 -0
  143. package/core/built/admin/assets/portal-frame-DVc4VHX_.js +1 -0
  144. package/core/built/admin/assets/portal-modal-BCOcdiRi.js +1 -0
  145. package/core/built/admin/assets/{post-analytics-Gv81eN_g.js → post-analytics-CTSZMK6I.js} +1 -1
  146. package/core/built/admin/assets/post-analytics-header-Dt4RQGq0.js +1 -0
  147. package/core/built/admin/assets/{post-analytics-provider-O2YjZMhN.js → post-analytics-provider-C4ydiboO.js} +1 -1
  148. package/core/built/admin/assets/post-share-modal-DjH_a_1L.js +1 -0
  149. package/core/built/admin/assets/preferences-BLo6VJUS.js +5 -0
  150. package/core/built/admin/assets/preview-modal-BOgjgsJL.js +1 -0
  151. package/core/built/admin/assets/profile-DG6iCdRH.js +1 -0
  152. package/core/built/admin/assets/radio-group-ChHD4EQJ.js +1 -0
  153. package/core/built/admin/assets/router-provider-Bexg1t-V.js +1 -0
  154. package/core/built/admin/assets/select-ChxknEcT.js +1 -0
  155. package/core/built/admin/assets/settings-B0VDAhgV.js +1 -0
  156. package/core/built/admin/assets/settings-Dwo3CeAD.js +4 -0
  157. package/core/built/admin/assets/settings-breadcrumbs-sLDNedBW.js +1 -0
  158. package/core/built/admin/assets/share-modal-BDb2nacg.js +1 -0
  159. package/core/built/admin/assets/skeleton-D7hwjdry.js +1 -0
  160. package/core/built/admin/assets/slack-modal-CwNAD69x.js +1 -0
  161. package/core/built/admin/assets/sort-button-DhqpxkrO.js +1 -0
  162. package/core/built/admin/assets/source-icon-BPsD5ees.js +1 -0
  163. package/core/built/admin/assets/stats-WdDJ8c_1.js +1 -0
  164. package/core/built/admin/assets/stats-view-J3PI2eT_.js +1 -0
  165. package/core/built/admin/assets/step-1-2q1SjerQ.js +1 -0
  166. package/core/built/admin/assets/step-2-D5mJB3Uu.js +1 -0
  167. package/core/built/admin/assets/step-3-BpAuYTGZ.js +2 -0
  168. package/core/built/admin/assets/{stripe-button-Bh4p6Wud.js → stripe-button-DDoUKN5a.js} +1 -1
  169. package/core/built/admin/assets/stripe-connect-modal-pMdF3t4S.js +1 -0
  170. package/core/built/admin/assets/switch-B_1yU3Aw.js +1 -0
  171. package/core/built/admin/assets/{table-DghJxZMH.js → table-CrqQtkR2.js} +1 -1
  172. package/core/built/admin/assets/tabs-BhzVdh5p.js +1 -0
  173. package/core/built/admin/assets/tag-detail-CwJhI4qg.js +2 -0
  174. package/core/built/admin/assets/tags-CvJ0PgrB.js +1 -0
  175. package/core/built/admin/assets/testimonials-modal-CV82IAnI.js +1 -0
  176. package/core/built/admin/assets/tier-detail-modal-pLzCOfeg.js +1 -0
  177. package/core/built/admin/assets/toggle-group-BW_T4yn6.js +1 -0
  178. package/core/built/admin/assets/topic-filter-DkXjDejV.js +1 -0
  179. package/core/built/admin/assets/transistor-modal-TMRvHZ6B.js +1 -0
  180. package/core/built/admin/assets/unsplash-modal-CV92RdPw.js +1 -0
  181. package/core/built/admin/assets/{use-analytics-data-IxJcSjc9.js → use-analytics-data-BM_uV9SU.js} +1 -1
  182. package/core/built/admin/assets/use-check-theme-limit-error-DkBnXMSY.js +1 -0
  183. package/core/built/admin/assets/use-confirm-unload-SzlkOIpm.js +1 -0
  184. package/core/built/admin/assets/use-feature-flag-cahOlMva.js +1 -0
  185. package/core/built/admin/assets/use-filter-params-BX5qf0Cg.js +1 -0
  186. package/core/built/admin/assets/{use-growth-stats-1NW-8eEZ.js → use-growth-stats-D0LlWBe6.js} +1 -1
  187. package/core/built/admin/assets/{use-hash-link-navigation-guard-B9j6HIrV.js → use-hash-link-navigation-guard-B_Y3FhYH.js} +1 -1
  188. package/core/built/admin/assets/use-limiter-D3DHSoAj.js +2 -0
  189. package/core/built/admin/assets/{use-pintura-config-BjFChXV1.js → use-pintura-config-D63Xu0SG.js} +1 -1
  190. package/core/built/admin/assets/use-pintura-editor-Z51aFnC8.js +1 -0
  191. package/core/built/admin/assets/{use-post-referrers-Dp1BnTAK.js → use-post-referrers-Cvymr3gt.js} +1 -1
  192. package/core/built/admin/assets/use-query-params-BfzuqbcD.js +1 -0
  193. package/core/built/admin/assets/use-reply-chain-data-Dc18Ujqo.js +1 -0
  194. package/core/built/admin/assets/use-setting-group-DYRIzqC0.js +1 -0
  195. package/core/built/admin/assets/use-settings-navigation-aDSLtmEl.js +1 -0
  196. package/core/built/admin/assets/{use-simple-pagination-DsEGSJhe.js → use-simple-pagination-B2TdNX67.js} +1 -1
  197. package/core/built/admin/assets/{use-tinybird-query-Ci_DiPkX.js → use-tinybird-query-BvQIVuRc.js} +1 -1
  198. package/core/built/admin/assets/{use-tinybird-token-CsUwc722.js → use-tinybird-token-COQTPIwL.js} +1 -1
  199. package/core/built/admin/assets/use-upgrade-route-BZf1g59m.js +1 -0
  200. package/core/built/admin/assets/{use-url-input-BEZJpVgN.js → use-url-input-PcqZadXa.js} +1 -1
  201. package/core/built/admin/assets/user-detail-modal-DeO3SAZq.js +1 -0
  202. package/core/built/admin/assets/{virtual-list-D5ugXyZY.js → virtual-list-D3MfPNOh.js} +1 -1
  203. package/core/built/admin/assets/web-CDdyG7z1.js +2 -0
  204. package/core/built/admin/assets/web-CwQ8_QUc.js +1 -0
  205. package/core/built/admin/assets/zapier-modal-a7t75iNI.js +1 -0
  206. package/core/built/admin/index.html +15 -12
  207. package/core/frontend/apps/private-blogging/lib/helpers/input_password.js +2 -1
  208. package/core/frontend/helpers/body_class.js +2 -1
  209. package/core/frontend/helpers/cancel_link.js +2 -1
  210. package/core/frontend/helpers/color_to_rgba.js +2 -1
  211. package/core/frontend/helpers/content_api_key.js +2 -1
  212. package/core/frontend/helpers/content_api_url.js +2 -1
  213. package/core/frontend/helpers/contrast_text_color.js +2 -1
  214. package/core/frontend/helpers/facebook_url.js +2 -1
  215. package/core/frontend/helpers/ghost_foot.js +2 -1
  216. package/core/frontend/helpers/ghost_head.js +2 -1
  217. package/core/frontend/helpers/has.js +4 -2
  218. package/core/frontend/helpers/link_class.js +2 -1
  219. package/core/frontend/helpers/meta_description.js +2 -1
  220. package/core/frontend/helpers/meta_title.js +2 -1
  221. package/core/frontend/helpers/navigation.js +113 -22
  222. package/core/frontend/helpers/page_url.js +2 -1
  223. package/core/frontend/helpers/post_class.js +2 -1
  224. package/core/frontend/helpers/reading_time.js +2 -1
  225. package/core/frontend/helpers/social_accounts.js +2 -1
  226. package/core/frontend/helpers/social_url.js +2 -1
  227. package/core/frontend/helpers/total_members.js +2 -1
  228. package/core/frontend/helpers/total_paid_members.js +2 -1
  229. package/core/frontend/helpers/tpl/navigation.hbs +1 -1
  230. package/core/frontend/helpers/twitter_url.js +2 -1
  231. package/core/frontend/public/cards.manifest.json +1 -1
  232. package/core/server/api/endpoints/posts.js +7 -4
  233. package/core/server/api/endpoints/utils/permissions.js +2 -1
  234. package/core/server/api/endpoints/utils/validators/input/settings.js +83 -1
  235. package/core/server/data/exporter/table-lists.js +1 -0
  236. package/core/server/data/importer/handlers/json.js +2 -1
  237. package/core/server/data/migrations/versions/5.19/2022-09-02-20-52-backfill-new-product-columns.js +2 -1
  238. package/core/server/data/migrations/versions/5.21/2022-10-26-04-50-member-subscription-created-batch-id.js +4 -2
  239. package/core/server/data/migrations/versions/5.22/2022-10-31-12-03-backfill-new-product-columns.js +2 -1
  240. package/core/server/data/migrations/versions/6.58/2026-08-11-21-22-48-rename-email-batches-provider-id.js +1 -1
  241. package/core/server/data/migrations/versions/6.59/2026-08-18-17-06-46-add-gift-delivery-fields-to-gifts.js +26 -0
  242. package/core/server/data/migrations/versions/6.59/2026-08-18-17-07-01-add-gift-deliveries.js +20 -0
  243. package/core/server/data/schema/commands.js +48 -24
  244. package/core/server/data/schema/schema.js +28 -7
  245. package/core/server/data/seeders/importers/automation-action-revisions-importer.js +3 -36
  246. package/core/server/data/seeders/importers/automation-actions-importer.js +5 -41
  247. package/core/server/data/seeders/importers/automation-run-steps-importer.js +3 -36
  248. package/core/server/data/seeders/importers/automation-runs-importer.js +7 -42
  249. package/core/server/data/seeders/importers/automations-importer.js +3 -36
  250. package/core/server/data/seeders/importers/comment-reports-importer.js +5 -5
  251. package/core/server/data/seeders/importers/comments-importer.js +5 -5
  252. package/core/server/data/seeders/importers/email-batches-importer.js +5 -4
  253. package/core/server/data/seeders/importers/email-recipients-importer.js +12 -20
  254. package/core/server/data/seeders/importers/emails-importer.js +6 -6
  255. package/core/server/data/seeders/importers/labels-importer.js +3 -3
  256. package/core/server/data/seeders/importers/members-click-events-importer.js +5 -5
  257. package/core/server/data/seeders/importers/members-created-events-importer.js +13 -12
  258. package/core/server/data/seeders/importers/members-feedback-importer.js +7 -7
  259. package/core/server/data/seeders/importers/members-importer.js +4 -4
  260. package/core/server/data/seeders/importers/members-login-events-importer.js +3 -3
  261. package/core/server/data/seeders/importers/members-products-importer.js +2 -2
  262. package/core/server/data/seeders/importers/members-status-events-importer.js +4 -3
  263. package/core/server/data/seeders/importers/members-stripe-customers-importer.js +2 -2
  264. package/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js +7 -7
  265. package/core/server/data/seeders/importers/members-subscribe-events-importer.js +3 -3
  266. package/core/server/data/seeders/importers/members-subscription-created-events-importer.js +3 -3
  267. package/core/server/data/seeders/importers/offer-redemptions-importer.js +7 -7
  268. package/core/server/data/seeders/importers/offers-importer.js +3 -3
  269. package/core/server/data/seeders/importers/posts-importer.js +4 -4
  270. package/core/server/data/seeders/importers/table-importer.js +2 -35
  271. package/core/server/data/seeders/importers/tags-importer.js +2 -2
  272. package/core/server/data/seeders/importers/users-importer.js +2 -2
  273. package/core/server/data/seeders/importers/web-mentions-importer.js +2 -2
  274. package/core/server/data/seeders/utils/random.js +7 -0
  275. package/core/server/ghost-server.js +19 -5
  276. package/core/server/lib/db-date.js +72 -3
  277. package/core/server/models/gift-delivery.js +23 -0
  278. package/core/server/models/gift.js +9 -0
  279. package/core/server/models/index.js +3 -2
  280. package/core/server/models/settings.js +43 -4
  281. package/core/server/services/automations/database-automations-repository.js +38 -31
  282. package/core/server/services/automations/poll.js +1 -1
  283. package/core/server/services/content-import/csv/index.js +8 -0
  284. package/core/server/services/content-import/csv/parse.js +60 -0
  285. package/core/server/services/content-import/import/importer.js +222 -0
  286. package/core/server/services/content-import/import/post-data.js +52 -0
  287. package/core/server/services/content-import/import/reader.js +15 -0
  288. package/core/server/services/content-import/import/row.js +50 -0
  289. package/core/server/services/content-import/import/store.js +71 -0
  290. package/core/server/services/content-import/index.js +67 -0
  291. package/core/server/services/email-analytics/automation-email-analytics-batch-processor.js +1 -1
  292. package/core/server/services/email-analytics/index.js +3 -1
  293. package/core/server/services/email-analytics/jobs/index.js +2 -2
  294. package/core/server/services/email-service/email-service-wrapper.js +1 -1
  295. package/core/server/services/email-suppression-list/email-suppression-list.js +4 -2
  296. package/core/server/services/gifts/CONTEXT.md +27 -3
  297. package/core/server/services/gifts/README.md +8 -4
  298. package/core/server/services/gifts/constants.js +2 -1
  299. package/core/server/services/gifts/email-templates/gift-delivery.hbs +20 -0
  300. package/core/server/services/gifts/email-templates/gift-delivery.js +39 -0
  301. package/core/server/services/gifts/email-templates/gift-purchase-confirmation.hbs +2 -2
  302. package/core/server/services/gifts/email-templates/gift-purchase-confirmation.js +19 -4
  303. package/core/server/services/gifts/events/send-gift-delivery-event.js +15 -0
  304. package/core/server/services/gifts/gift-bookshelf-repository.js +23 -3
  305. package/core/server/services/gifts/gift-checkout-adapter.js +5 -3
  306. package/core/server/services/gifts/gift-codec.js +8 -0
  307. package/core/server/services/gifts/gift-delivery-bookshelf-repository.js +107 -0
  308. package/core/server/services/gifts/gift-delivery-codec.js +12 -0
  309. package/core/server/services/gifts/gift-delivery-schema.js +15 -0
  310. package/core/server/services/gifts/gift-delivery-service.js +209 -0
  311. package/core/server/services/gifts/gift-email-renderer.js +13 -1
  312. package/core/server/services/gifts/gift-email-service.js +97 -17
  313. package/core/server/services/gifts/gift-schema.js +10 -6
  314. package/core/server/services/gifts/gift-service.js +259 -34
  315. package/core/server/services/gifts/gift.js +59 -5
  316. package/core/server/services/gifts/index.js +69 -3
  317. package/core/server/services/lib/mailgun-client.js +5 -2
  318. package/core/server/services/mail/ghost-mailer.js +9 -1
  319. package/core/server/services/member-welcome-emails/service.js +6 -1
  320. package/core/server/services/members/members-api/controllers/router-controller.js +26 -8
  321. package/core/server/services/stripe/services/webhook/checkout-session-event-service.js +100 -12
  322. package/core/server/services/stripe/stripe-api.js +3 -2
  323. package/core/server/services/stripe/webhook-controller.js +6 -3
  324. package/core/server/services/stripe/webhook-manager.js +2 -0
  325. package/core/shared/labs.js +1 -0
  326. package/package.json +9 -8
  327. package/pnpm-lock.yaml +26 -11
  328. package/pnpm-workspace.yaml +5 -6
  329. package/content/themes/source/yarn.lock +0 -6232
  330. package/core/built/admin/assets/Combination-BDvCdg1t.js +0 -41
  331. package/core/built/admin/assets/about-B_BvSyLF.js +0 -1
  332. package/core/built/admin/assets/account-migration-oJUGxnzT.js +0 -1
  333. package/core/built/admin/assets/activitypub/dist-Dqggkccr.js +0 -215
  334. package/core/built/admin/assets/activitypub/inbox-z1o2j1Tb.js +0 -1221
  335. package/core/built/admin/assets/activitypub/layout-BRMezuty.js +0 -1
  336. package/core/built/admin/assets/activitypub/moderation-CZudJi8N.js +0 -160
  337. package/core/built/admin/assets/activitypub/settings-CrSV1cux.js +0 -107
  338. package/core/built/admin/assets/add-integration-modal-BW23PDYs.js +0 -1
  339. package/core/built/admin/assets/add-newsletter-modal-M0ls8BKO.js +0 -1
  340. package/core/built/admin/assets/add-recommendation-modal-B0NeBMzl.js +0 -1
  341. package/core/built/admin/assets/announcement-bar-modal-pXBqjQE_.js +0 -1
  342. package/core/built/admin/assets/api-keys-Df6uv1dT.js +0 -1
  343. package/core/built/admin/assets/audience-BY8od8If.js +0 -1
  344. package/core/built/admin/assets/automations-DCs6Wady.js +0 -1
  345. package/core/built/admin/assets/bluesky-sharing-D0P42Cws.js +0 -1
  346. package/core/built/admin/assets/breadcrumb-MTj_cKLb.js +0 -1
  347. package/core/built/admin/assets/chart-helpers-DcO3k_vA.js +0 -1
  348. package/core/built/admin/assets/chunk-KS7C4IRE-DG9HTHQ3.js +0 -4
  349. package/core/built/admin/assets/color-picker-CBlJMv3y.js +0 -3
  350. package/core/built/admin/assets/combobox-BbPJzjCp.js +0 -1
  351. package/core/built/admin/assets/command-BrhXIlDr.js +0 -1
  352. package/core/built/admin/assets/comments-Cu4rD1aJ.js +0 -1
  353. package/core/built/admin/assets/confirmation-provider-BEdrnHns.js +0 -1
  354. package/core/built/admin/assets/custom-field-type-option-CNhAgHbJ.js +0 -1
  355. package/core/built/admin/assets/custom-integration-modal-CrGOI8IB.js +0 -1
  356. package/core/built/admin/assets/date-range-select-Bsh4gIek.js +0 -1
  357. package/core/built/admin/assets/design-and-theme-modal-DWZguwWX.js +0 -23
  358. package/core/built/admin/assets/dirty-confirm-dialog-DmdMpgyN.js +0 -1
  359. package/core/built/admin/assets/disabled-sources-indicator-BLnmyWgt.js +0 -1
  360. package/core/built/admin/assets/dist-DMFGvqqU.js +0 -1
  361. package/core/built/admin/assets/dist-DlCyLrOC.js +0 -1
  362. package/core/built/admin/assets/dist-j1xxxnY8.js +0 -1
  363. package/core/built/admin/assets/domain-Dp9TRrFp.js +0 -1
  364. package/core/built/admin/assets/edit-profile-DG6lpMsr.js +0 -1
  365. package/core/built/admin/assets/editor-CPQOrhrn.js +0 -8
  366. package/core/built/admin/assets/embed-signup-form-modal-CgWniDha.js +0 -9
  367. package/core/built/admin/assets/explore-C3rzONJv.js +0 -1
  368. package/core/built/admin/assets/feed-DpUwS1cU.js +0 -1
  369. package/core/built/admin/assets/filters-DZJT29GW.js +0 -1
  370. package/core/built/admin/assets/first-promoter-modal-DJhQQheG.js +0 -1
  371. package/core/built/admin/assets/gift-link-modal-sdFLjND9.js +0 -1
  372. package/core/built/admin/assets/global-data-provider-CixmTX00.js +0 -1
  373. package/core/built/admin/assets/growth-0YYkBEeS.js +0 -1
  374. package/core/built/admin/assets/growth-DpjAPeQT.js +0 -3
  375. package/core/built/admin/assets/history-modal-BWJ4-cJ0.js +0 -1
  376. package/core/built/admin/assets/html-field-C-oa5DEl.js +0 -1
  377. package/core/built/admin/assets/iframe-buffering-Ba9sDpi2.js +0 -1
  378. package/core/built/admin/assets/index-BOJzlYiz.js +0 -67
  379. package/core/built/admin/assets/index-Bid6LAyc.css +0 -1
  380. package/core/built/admin/assets/invite-user-modal-DCiQSiuD.js +0 -1
  381. package/core/built/admin/assets/koenig-editor-base-BApy8Q7C.js +0 -1
  382. package/core/built/admin/assets/kpi-helpers-ssbuy-hD.js +0 -1
  383. package/core/built/admin/assets/kpi-tabs-BqoIM6bI.js +0 -1
  384. package/core/built/admin/assets/label-picker-Cvvbmzb5.js +0 -1
  385. package/core/built/admin/assets/layout-DkkGyev2.js +0 -1
  386. package/core/built/admin/assets/member-custom-fields-CvGcpaiW.js +0 -1
  387. package/core/built/admin/assets/member-detail-CMCMZ47_.js +0 -1
  388. package/core/built/admin/assets/members-sRl6fNfq.js +0 -11
  389. package/core/built/admin/assets/moderation-KhKwGqI1.js +0 -1
  390. package/core/built/admin/assets/multi-select-combobox-nhCff0_K.js +0 -1
  391. package/core/built/admin/assets/navigation-modal-MDJExWDJ.js +0 -1
  392. package/core/built/admin/assets/newsletter-BIBHumfV.js +0 -1
  393. package/core/built/admin/assets/newsletter-detail-modal-CfjBMH3v.js +0 -1
  394. package/core/built/admin/assets/newsletter-emails-ClDL-7dA.js +0 -1
  395. package/core/built/admin/assets/newsletters-CBe-IPzK.js +0 -1
  396. package/core/built/admin/assets/note-HnNUOt4d.js +0 -1
  397. package/core/built/admin/assets/notifications-Cj5e-258.js +0 -1
  398. package/core/built/admin/assets/offers-container-modal-BHwHtixC.js +0 -1
  399. package/core/built/admin/assets/onboarding-route-D_4jp7Nq.js +0 -1
  400. package/core/built/admin/assets/overview-CezDdg-F.js +0 -1
  401. package/core/built/admin/assets/overview-D5mM51Lj.js +0 -1
  402. package/core/built/admin/assets/pintura-modal-BXXJ8Iaa.js +0 -1
  403. package/core/built/admin/assets/portal-frame-BLCvF8f-.js +0 -1
  404. package/core/built/admin/assets/portal-modal-DN80tAcy.js +0 -1
  405. package/core/built/admin/assets/post-analytics-header-_ydSY8qO.js +0 -1
  406. package/core/built/admin/assets/post-share-modal-CzYak_a5.js +0 -1
  407. package/core/built/admin/assets/preferences-gneLb6LV.js +0 -5
  408. package/core/built/admin/assets/preview-modal-Bkq-tgVm.js +0 -1
  409. package/core/built/admin/assets/profile-CzXmCNTC.js +0 -1
  410. package/core/built/admin/assets/radio-group-Dsq5ZEbV.js +0 -1
  411. package/core/built/admin/assets/router-provider-CkB_ArLF.js +0 -1
  412. package/core/built/admin/assets/select-xuZAuDyS.js +0 -1
  413. package/core/built/admin/assets/settings-Ct8pabhr.js +0 -1
  414. package/core/built/admin/assets/settings-KSWWQanQ.js +0 -4
  415. package/core/built/admin/assets/settings-breadcrumbs-DbPGu-Tu.js +0 -1
  416. package/core/built/admin/assets/share-modal-CdiUx9WM.js +0 -1
  417. package/core/built/admin/assets/slack-modal-BP--Z3jE.js +0 -1
  418. package/core/built/admin/assets/sort-button-CjfKdlsL.js +0 -1
  419. package/core/built/admin/assets/source-icon-DHj1h6Ts.js +0 -1
  420. package/core/built/admin/assets/stats-C615kulJ.js +0 -1
  421. package/core/built/admin/assets/stats-view-BSMRdYiN.js +0 -1
  422. package/core/built/admin/assets/step-1-pSdGYtIF.js +0 -1
  423. package/core/built/admin/assets/step-2-T9Uy4eBD.js +0 -1
  424. package/core/built/admin/assets/step-3-D4uXe_XG.js +0 -2
  425. package/core/built/admin/assets/stripe-connect-modal-C2vTvepi.js +0 -1
  426. package/core/built/admin/assets/switch-CE2NuMn-.js +0 -1
  427. package/core/built/admin/assets/tabs-l9c7FjzI.js +0 -1
  428. package/core/built/admin/assets/tag-detail-DBw_M2-p.js +0 -2
  429. package/core/built/admin/assets/tags-DoWsAG6l.js +0 -1
  430. package/core/built/admin/assets/testimonials-modal-BZKePE2T.js +0 -1
  431. package/core/built/admin/assets/tier-detail-modal-D65pVWsN.js +0 -1
  432. package/core/built/admin/assets/toggle-group-uJnl42w3.js +0 -1
  433. package/core/built/admin/assets/topic-filter-BM7hz0kW.js +0 -1
  434. package/core/built/admin/assets/transistor-modal-VZOGN3od.js +0 -1
  435. package/core/built/admin/assets/unsplash-modal-CKGfACxF.js +0 -1
  436. package/core/built/admin/assets/use-check-theme-limit-error-CGp3CGT5.js +0 -1
  437. package/core/built/admin/assets/use-feature-flag-CSq2Lwzt.js +0 -1
  438. package/core/built/admin/assets/use-filter-params-0hcJJuEJ.js +0 -1
  439. package/core/built/admin/assets/use-limiter-ffwpsZPp.js +0 -2
  440. package/core/built/admin/assets/use-pintura-editor-Cb41oJyL.js +0 -1
  441. package/core/built/admin/assets/use-query-params-DHhhu8wi.js +0 -1
  442. package/core/built/admin/assets/use-reply-chain-data-C0ZUTkfk.js +0 -1
  443. package/core/built/admin/assets/use-setting-group-Bx8M6FL2.js +0 -1
  444. package/core/built/admin/assets/use-settings-navigation-BOZcat_V.js +0 -1
  445. package/core/built/admin/assets/use-upgrade-route-B3_DUiuT.js +0 -1
  446. package/core/built/admin/assets/user-detail-modal-595z1N5r.js +0 -1
  447. package/core/built/admin/assets/web-CAta3lRE.js +0 -1
  448. package/core/built/admin/assets/web-Ds9_wWJK.js +0 -2
  449. package/core/built/admin/assets/zapier-modal-CcfDZY53.js +0 -1
  450. package/core/server/data/seeders/utils/database-date.js +0 -28
  451. package/core/server/services/automations/database-date.js +0 -59
  452. /package/core/built/admin/assets/{dist-CqO2lWS02.js → dist-CqO2lWS0.js} +0 -0
  453. /package/core/server/services/{automations → lib}/mailgun-message-id.js +0 -0
@@ -0,0 +1,1284 @@
1
+ import { A as e, S as t, T as n, a as r, d as i, g as a, v as o, w as s } from "./_react-D4KM8XEu.js";
2
+ import { S as c, d as l } from "./chunk-KS7C4IRE-CnTrsgmM.js";
3
+ import { At as u, C as d, D as f, E as p, G as m, J as h, M as g, Q as _, S as v, T as y, Y as b, Z as x, _ as S, a as ee, b as C, et as w, g as T, h as E, m as D, n as O, o as k, q as A, tt as te, v as ne, w as re, x as ie } from "./routes-nHCKlZl-.js";
4
+ import { T as ae, g as oe, r as j, t as se, y as ce } from "./use-navigate-with-base-path-iCkcbMGk.js";
5
+ import { F as le, K as M, b as ue, h as de, q as N } from "./use-activity-pub-queries-DUDEdSdR.js";
6
+ import { a as fe, c as pe, f as P, i as me, l as he, n as F, r as I, t as L, u as R } from "./content-formatters-DCsVic-t.js";
7
+ import { t as z } from "./inbox-CZ7IOAMn.js";
8
+ import { i as ge, n as _e, r as ve, t as ye } from "./use-reply-chain-data-TunGtmJl.js";
9
+ import { t as be } from "./separator-B3k35sUV.js";
10
+ import "./layout-DNuYT4Gu.js";
11
+ import { t as B } from "./topic-filter-CmTc8hpN.js";
12
+ var V = oe("minus", [["path", {
13
+ d: "M5 12h14",
14
+ key: "1ays0h"
15
+ }]]);
16
+ //#endregion
17
+ //#region ../shade/es/components/ui/empty-indicator.js
18
+ i();
19
+ var H = c(), U = r.forwardRef(({ children: e, className: t, ...n }, r) => /* @__PURE__ */ (0, H.jsx)("div", {
20
+ ref: r,
21
+ className: ce("flex size-12 max-h-12 max-w-12 items-center justify-center rounded-full bg-muted [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground", t),
22
+ ...n,
23
+ children: e
24
+ }));
25
+ U.displayName = "EmptyBadge";
26
+ var W = r.forwardRef(({ children: e, className: t, title: n, description: r, actions: i, ...a }, o) => /* @__PURE__ */ (0, H.jsxs)("div", {
27
+ ref: o,
28
+ className: ce("flex flex-col items-center justify-center gap-3 text-center", t),
29
+ ...a,
30
+ children: [
31
+ /* @__PURE__ */ (0, H.jsx)(U, { children: e }),
32
+ /* @__PURE__ */ (0, H.jsxs)("div", {
33
+ className: "flex max-w-[320px] flex-col gap-1.5",
34
+ children: [/* @__PURE__ */ (0, H.jsx)("h3", {
35
+ className: "text-md font-medium tracking-normal text-pretty text-foreground",
36
+ children: n
37
+ }), r && /* @__PURE__ */ (0, H.jsx)("p", {
38
+ className: "text-sm leading-tight text-pretty text-muted-foreground",
39
+ children: r
40
+ })]
41
+ }),
42
+ i && /* @__PURE__ */ (0, H.jsx)("div", {
43
+ className: "flex items-center gap-2",
44
+ children: i
45
+ })
46
+ ]
47
+ }));
48
+ //#endregion
49
+ //#region src/views/inbox/components/customizer.tsx
50
+ W.displayName = "EmptyIndicator", i();
51
+ var G = [
52
+ "1.5rem",
53
+ "1.6rem",
54
+ "1.7rem",
55
+ "1.8rem",
56
+ "2rem"
57
+ ], K = {
58
+ BACKGROUND_COLOR: "ghost-ap-background-color",
59
+ FONT_SIZE: "ghost-ap-font-size",
60
+ FONT_FAMILY: "ghost-ap-font-family",
61
+ FONT_STYLE: "ghost-ap-font-style"
62
+ }, q = {
63
+ SYSTEM: {
64
+ id: "system",
65
+ color: "#fff",
66
+ background: "bg-white dark:bg-black",
67
+ button: "bg-white dark:bg-black",
68
+ border: "border-black/[8%] dark:border-gray-950"
69
+ },
70
+ SEPIA: {
71
+ id: "sepia",
72
+ color: "#FCF8F1",
73
+ background: "bg-[#FCF8F1]",
74
+ button: "bg-[#FCF8F1] hover:bg-black/[3%] text-black hover:text-black",
75
+ border: "border-black/[8%]"
76
+ },
77
+ LIGHT: {
78
+ id: "light",
79
+ color: "#fff",
80
+ background: "bg-white",
81
+ button: "hover:bg-black/[3%] text-black hover:text-black",
82
+ border: "border-black/[8%] dark:border-gray-950"
83
+ },
84
+ DARK: {
85
+ id: "dark",
86
+ color: "#15171a",
87
+ background: "bg-black",
88
+ button: "text-white dark:bg-black dark:hover:bg-gray-900",
89
+ border: "border-black/[8%] dark:border-gray-950"
90
+ }
91
+ }, xe = () => {
92
+ let [e, t] = n(() => localStorage.getItem(K.BACKGROUND_COLOR)?.toUpperCase() || "SYSTEM"), [r, i] = n(() => {
93
+ let e = localStorage.getItem(K.FONT_SIZE);
94
+ return e ? parseInt(e) : 2;
95
+ }), [a, s] = n(() => localStorage.getItem(K.FONT_STYLE) || "sans");
96
+ return o(() => {
97
+ localStorage.setItem(K.FONT_SIZE, r.toString());
98
+ }, [r]), o(() => {
99
+ localStorage.setItem(K.FONT_STYLE, a);
100
+ }, [a]), {
101
+ backgroundColor: e,
102
+ currentFontSizeIndex: r,
103
+ fontStyle: a,
104
+ handleColorChange: (e) => {
105
+ t(e), localStorage.setItem(K.BACKGROUND_COLOR, q[e].id);
106
+ },
107
+ setFontStyle: s,
108
+ increaseFontSize: () => {
109
+ i((e) => Math.min(e + 1, G.length - 1));
110
+ },
111
+ decreaseFontSize: () => {
112
+ i((e) => Math.max(e - 1, 0));
113
+ },
114
+ resetFontSize: () => i(2),
115
+ fontSize: G[r]
116
+ };
117
+ }, Se = ({ backgroundColor: e, currentFontSizeIndex: t, fontStyle: n, onColorChange: r, onFontStyleChange: i, onDecreaseFontSize: a, onIncreaseFontSize: o, onResetFontSize: s, onOpenChange: c }) => /* @__PURE__ */ (0, H.jsx)(Ce, {
118
+ backgroundColor: e,
119
+ currentFontSizeIndex: t,
120
+ fontStyle: n,
121
+ isActiveColor: (t) => e === t,
122
+ isActiveFont: (e) => n === e,
123
+ onColorChange: r,
124
+ onDecreaseFontSize: a,
125
+ onFontStyleChange: i,
126
+ onIncreaseFontSize: o,
127
+ onOpenChange: c,
128
+ onResetFontSize: s
129
+ }), Ce = ({ backgroundColor: e, isActiveColor: t, isActiveFont: n, onColorChange: r, onFontStyleChange: i, currentFontSizeIndex: a, onDecreaseFontSize: o, onIncreaseFontSize: s, onResetFontSize: c, onOpenChange: l }) => /* @__PURE__ */ (0, H.jsxs)(m, {
130
+ modal: !1,
131
+ onOpenChange: l,
132
+ children: [/* @__PURE__ */ (0, H.jsx)(h, {
133
+ asChild: !0,
134
+ children: /* @__PURE__ */ (0, H.jsx)(j, {
135
+ "aria-label": "Reading options",
136
+ className: `size-9 rounded-full ${q[e].button}`,
137
+ variant: "ghost",
138
+ children: /* @__PURE__ */ (0, H.jsx)(u.Typography, { className: "size-[18px]!" })
139
+ })
140
+ }), /* @__PURE__ */ (0, H.jsx)(A, {
141
+ align: "end",
142
+ className: "w-[224px]",
143
+ onCloseAutoFocus: (e) => e.preventDefault(),
144
+ onOpenAutoFocus: (e) => e.preventDefault(),
145
+ children: /* @__PURE__ */ (0, H.jsxs)("div", {
146
+ className: "flex flex-col gap-4",
147
+ children: [
148
+ /* @__PURE__ */ (0, H.jsxs)("div", {
149
+ className: "flex items-center justify-between gap-[6px]",
150
+ children: [
151
+ /* @__PURE__ */ (0, H.jsx)(j, {
152
+ className: `h-7 flex-1 rounded-[6px] bg-gray-200 p-0 text-[1.1rem] text-black hover:bg-gray-300 dark:bg-gray-950 dark:text-white dark:hover:bg-gray-900 [&_svg]:size-[14px] ${t("SYSTEM") ? "outline-2 outline-green" : ""}`,
153
+ variant: "secondary",
154
+ onClick: () => r("SYSTEM"),
155
+ children: "Auto"
156
+ }),
157
+ /* @__PURE__ */ (0, H.jsx)(j, {
158
+ className: `h-7 flex-1 rounded-[6px] bg-[#ece6d9] p-0 hover:bg-[#ece6d9] ${t("SEPIA") ? "outline-2 outline-green" : "border border-[#ece6d9]"}`,
159
+ onClick: () => r("SEPIA")
160
+ }),
161
+ /* @__PURE__ */ (0, H.jsx)(j, {
162
+ className: `h-7 flex-1 rounded-[6px] bg-white p-0 hover:bg-white ${t("LIGHT") ? "outline-2 outline-green" : "border border-gray-200"}`,
163
+ onClick: () => r("LIGHT")
164
+ }),
165
+ /* @__PURE__ */ (0, H.jsx)(j, {
166
+ className: `h-7 flex-1 rounded-[6px] bg-black p-0 hover:bg-black dark:border dark:border-gray-950 ${t("DARK") ? "outline-2 outline-green" : ""}`,
167
+ onClick: () => r("DARK")
168
+ })
169
+ ]
170
+ }),
171
+ /* @__PURE__ */ (0, H.jsxs)("div", {
172
+ className: "flex gap-2",
173
+ children: [/* @__PURE__ */ (0, H.jsxs)(j, {
174
+ className: `flex h-auto w-full flex-col gap-1 rounded-[6px] bg-gray-200 text-black hover:bg-gray-300 dark:bg-gray-950 dark:text-white dark:hover:bg-gray-900 ${n("sans") && "outline-2 outline-green"}`,
175
+ variant: "secondary",
176
+ onClick: () => i("sans"),
177
+ children: [/* @__PURE__ */ (0, H.jsx)("span", {
178
+ className: "text-[2rem] leading-none font-bold",
179
+ children: "Aa"
180
+ }), /* @__PURE__ */ (0, H.jsx)("span", {
181
+ className: "text-[1.1rem]",
182
+ children: "System"
183
+ })]
184
+ }), /* @__PURE__ */ (0, H.jsxs)(j, {
185
+ className: `flex h-auto w-full flex-col gap-1 rounded-[6px] bg-gray-200 text-black hover:bg-gray-300 dark:bg-gray-950 dark:text-white dark:hover:bg-gray-900 ${n("serif") && "outline-2 outline-green"}`,
186
+ variant: "secondary",
187
+ onClick: () => i("serif"),
188
+ children: [/* @__PURE__ */ (0, H.jsx)("span", {
189
+ className: "pt-1 font-serif text-[2rem] leading-none font-bold",
190
+ children: "Aa"
191
+ }), /* @__PURE__ */ (0, H.jsx)("span", {
192
+ className: "font-serif text-[1.2rem]",
193
+ children: "Serif"
194
+ })]
195
+ })]
196
+ }),
197
+ /* @__PURE__ */ (0, H.jsxs)("div", {
198
+ className: "flex gap-2",
199
+ children: [
200
+ /* @__PURE__ */ (0, H.jsx)(j, {
201
+ "aria-label": "Decrease text size",
202
+ className: "h-8 w-full rounded-[6px] bg-gray-200 text-black hover:bg-gray-300 dark:bg-gray-950 dark:text-white dark:hover:bg-gray-900 [&_svg]:size-[14px]",
203
+ disabled: a === 0,
204
+ variant: "secondary",
205
+ onClick: o,
206
+ children: /* @__PURE__ */ (0, H.jsx)(V, {})
207
+ }),
208
+ /* @__PURE__ */ (0, H.jsx)(j, {
209
+ "aria-label": "Reset text size",
210
+ className: "h-8 w-full rounded-[6px] bg-gray-200 text-black hover:bg-gray-300 dark:bg-gray-950 dark:text-white dark:hover:bg-gray-900",
211
+ variant: "secondary",
212
+ onClick: c,
213
+ children: /* @__PURE__ */ (0, H.jsx)("span", {
214
+ className: "text-[1.6rem] font-bold",
215
+ children: "Aa"
216
+ })
217
+ }),
218
+ /* @__PURE__ */ (0, H.jsx)(j, {
219
+ "aria-label": "Increase text size",
220
+ className: "h-8 w-full rounded-[6px] bg-gray-200 text-black hover:bg-gray-300 dark:bg-gray-950 dark:text-white dark:hover:bg-gray-900 [&_svg]:size-[14px]",
221
+ disabled: a === G.length - 1,
222
+ variant: "secondary",
223
+ onClick: s,
224
+ children: /* @__PURE__ */ (0, H.jsx)(P, {})
225
+ })
226
+ ]
227
+ })
228
+ ]
229
+ })
230
+ })]
231
+ });
232
+ //#endregion
233
+ //#region src/components/feed/table-of-contents.tsx
234
+ i();
235
+ var we = ({ tocItems: e, iframeElement: t, modalRef: i, className: a = "visible! absolute inset-y-0 right-7 z-40 hidden lg:block!", onOpenChange: s }) => {
236
+ let [c, l] = n(null), u = r.useRef(!1);
237
+ return o(() => {
238
+ if (!t?.contentDocument || e.length <= 1) return;
239
+ let n = i.current;
240
+ if (!n) return;
241
+ let r = () => {
242
+ if (u.current) return;
243
+ let r = t.contentDocument;
244
+ if (!r) return;
245
+ let i = n.scrollTop, a = e.map((e) => r.getElementById(e.id)).filter((e) => e !== null).map((e) => ({
246
+ id: e.id,
247
+ top: e.offsetTop
248
+ }));
249
+ if (!a.length) return;
250
+ let o = a.reduce((e, t) => t.top - 100 <= i ? t : e);
251
+ l(o?.id || null);
252
+ }, a = () => {
253
+ requestAnimationFrame(r);
254
+ };
255
+ return n.addEventListener("scroll", a), r(), () => {
256
+ n.removeEventListener("scroll", a);
257
+ };
258
+ }, [
259
+ t,
260
+ e,
261
+ i
262
+ ]), e.length <= 1 ? null : /* @__PURE__ */ (0, H.jsx)("div", {
263
+ className: a,
264
+ children: /* @__PURE__ */ (0, H.jsx)("div", {
265
+ className: "sticky top-1/2 -translate-y-1/2",
266
+ children: /* @__PURE__ */ (0, H.jsx)(De, {
267
+ activeHeading: c || "",
268
+ items: e,
269
+ onItemClick: (e) => {
270
+ if (!t?.contentDocument) return;
271
+ let n = t.contentDocument.getElementById(e);
272
+ n && i.current && (u.current = !0, l(e), i.current.scrollTo({
273
+ top: n.offsetTop - 20,
274
+ behavior: "smooth"
275
+ }), setTimeout(() => {
276
+ u.current = !1;
277
+ }, 1e3));
278
+ },
279
+ onOpenChange: s
280
+ })
281
+ })
282
+ });
283
+ }, Te = {
284
+ 1: "w-3",
285
+ 2: "w-2",
286
+ 3: "w-1"
287
+ }, Ee = {
288
+ 1: "pl-2",
289
+ 2: "pl-6",
290
+ 3: "pl-10"
291
+ }, De = ({ items: e, activeHeading: t, onItemClick: i, onOpenChange: a }) => {
292
+ let [o, s] = n(!1), c = r.useRef();
293
+ if (r.useEffect(() => () => {
294
+ c.current && clearTimeout(c.current);
295
+ }, []), e.length === 0) return null;
296
+ let l = (e) => Math.min(e, 3), u = (e) => Te[l(e)], d = (e) => Ee[l(e)], f = () => {
297
+ c.current && clearTimeout(c.current), s(!0), a?.(!0);
298
+ }, p = () => {
299
+ c.current = setTimeout(() => {
300
+ s(!1), a?.(!1);
301
+ }, 100);
302
+ };
303
+ return /* @__PURE__ */ (0, H.jsxs)(m, {
304
+ modal: !1,
305
+ open: o,
306
+ onOpenChange: s,
307
+ children: [/* @__PURE__ */ (0, H.jsx)(h, {
308
+ asChild: !0,
309
+ children: /* @__PURE__ */ (0, H.jsx)("div", {
310
+ className: "absolute top-1/2 right-2 flex -translate-y-1/2 flex-col items-end gap-2 rounded-md p-2 text-base dark:bg-black",
311
+ onMouseEnter: f,
312
+ onMouseLeave: p,
313
+ children: e.map((e) => /* @__PURE__ */ (0, H.jsx)("div", { className: `h-[2px] rounded-sm ${t === e.id ? "bg-black dark:bg-white" : "bg-gray-400 dark:bg-gray-700"} pr-1 transition-all ${u(e.level)}` }, e.id))
314
+ })
315
+ }), /* @__PURE__ */ (0, H.jsx)(A, {
316
+ align: "center",
317
+ className: "w-[240px] p-2",
318
+ side: "left",
319
+ sideOffset: -28,
320
+ onCloseAutoFocus: (e) => e.preventDefault(),
321
+ onMouseEnter: f,
322
+ onMouseLeave: p,
323
+ onOpenAutoFocus: (e) => e.preventDefault(),
324
+ children: /* @__PURE__ */ (0, H.jsx)("nav", {
325
+ "aria-label": "Table of contents navigation",
326
+ className: "max-h-[60vh] overflow-y-auto",
327
+ role: "navigation",
328
+ children: e.map((e) => /* @__PURE__ */ (0, H.jsx)("button", {
329
+ className: `line-clamp-2 block w-full cursor-pointer rounded py-1 text-left text-sm leading-tight ${t === e.id ? "text-black dark:text-white" : "text-gray-700 dark:text-gray-600"} hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-grey-950 dark:hover:text-white ${d(e.level)}`,
330
+ type: "button",
331
+ onClick: () => i(e.id),
332
+ children: /* @__PURE__ */ (0, H.jsx)("span", {
333
+ className: "line-clamp-2",
334
+ children: e.text
335
+ })
336
+ }, e.id))
337
+ })
338
+ })]
339
+ });
340
+ }, Oe = () => "<style>\n\n/* Variables */\n\n:root {\n --color-white: #fff;\n --color-lighter-gray: rgb(0 0 0 / 0.05);\n --color-light-gray: #e6e6e6;\n --color-mid-gray: #ccc;\n --color-dark-gray: #444;\n --color-darker-gray: #15171a;\n --color-black: #000;\n --color-primary-text: var(--color-darker-gray);\n --color-secondary-text: rgb(124 139 154);\n --color-border: rgb(0 0 0 / 0.08);\n --color-dark-border: rgb(0 0 0 / 0.55);\n --background-color: #fff;\n --font-sans: Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n --font-serif: \"EB Garamond\", Georgia, Times, serif;\n --font-serif-alt: Georgia, Times, serif;\n --font-mono: \"JetBrains Mono\", Menlo, Consolas, Monaco, \"Liberation Mono\", \"Lucida Console\", monospace;\n --letter-spacing: 0;\n --container-width: 1320px;\n --container-gap: clamp(24px, 1.7032rem + 1.9355vw, 48px);\n --ghost-accent-color: #15171a;\n}\n\n:root.has-light-text,\n:is(.gh-navigation, .gh-footer).has-accent-color {\n --color-lighter-gray: rgb(255 255 255 / 0.1);\n --color-darker-gray: #fff;\n --color-secondary-text: rgb(255 255 255 / 0.64);\n --color-border: rgb(255 255 255 / 0.15);\n --color-dark-border: rgb(255 255 255 / 0.5);\n --background-color: #15171a;\n}\n\n/* Resets */\n\n*, *::before, *::after {\n box-sizing: border-box;\n}\n\n* {\n margin: 0;\n}\n\nhtml {\n font-size: 62.5%;\n}\n\nbody {\n font-family: var(--font-sans);\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nimg, picture, video, canvas, svg {\n display: block;\n height: auto;\n max-width: 100%;\n}\n\niframe {\n display: block;\n}\n\ninput, button, textarea, select {\n font: inherit;\n}\n\np, h1, h2, h3, h4, h5, h6 {\n overflow-wrap: break-word;\n}\n\nh1, h2, h3, h4, h5, h6 {\n font-family: var(--font-sans);\n line-height: 1.2;\n}\n\n/* Globals */\n\nhtml {\n --container-width: 840px;\n --content-width: 640px;\n}\n\nbody {\n font-family: var(--font-sans);\n font-size: 1.6rem;\n background-color: var(--background-color);\n color: var(--color-primary-text);\n}\n\na {\n color: var(--color-darker-gray);\n text-decoration: none;\n}\n\na:not([class]):hover {\n opacity: 0.8;\n}\n\n.gh-canvas,\n.kg-width-full.kg-content-wide {\n --main: min(var(--content-width, 720px), 100% - var(--container-gap) * 2);\n --wide: minmax(0, calc((var(--container-width, 1200px) - var(--content-width, 720px)) / 2));\n --full: minmax(var(--container-gap), 1fr);\n\n display: grid;\n grid-template-columns:\n [full-start] var(--full)\n [wide-start] var(--wide)\n [main-start] var(--main) [main-end]\n var(--wide) [wide-end]\n var(--full) [full-end];\n}\n\n.gh-canvas > * {\n grid-column: main;\n}\n\n.kg-width-wide,\n.kg-content-wide > div {\n grid-column: full;\n}\n\n.kg-width-full {\n grid-column: full;\n}\n\n/* Article */\n\n.gh-article-header {\n margin: 24px 0 40px;\n}\n\n.gh-article-title {\n font-weight: 700;\n text-wrap: pretty;\n font-size: 3.6rem;\n letter-spacing: -0.015em;\n line-height: 1.1;\n}\n\n.gh-article-excerpt {\n margin-top: 12px;\n font-size: calc(var(--font-size) * 1.06 * var(--font-size-multiplier, 1));\n line-height: 1.4;\n text-wrap: pretty;\n}\n\n.has-serif-body .gh-article-excerpt {\n font-family: var(--font-serif-alt);\n}\n\n.gh-article-meta {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 16px;\n}\n\n.gh-article-meta:hover {\n opacity: 1;\n}\n\n.gh-article-author-image {\n display: flex;\n margin-right: 8px;\n margin-left: 6px;\n}\n\n.gh-article-author-image span {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n width: 46px;\n height: 46px;\n overflow: hidden;\n margin: 0 -8px;\n background-color: #F4F5F6;\n border-radius: 50%;\n border: 3px solid var(--background-color);\n}\n\nhtml.has-sepia-bg .gh-article-author-image span {\n background-color: #EFEDE6;\n}\n\nhtml.has-light-text .gh-article-author-image span {\n background-color: #394047;\n}\n\n.gh-article-author-image span:first-child {\n z-index: 10;\n}\n\n.gh-article-author-image span:nth-child(2) {\n z-index: 9;\n}\n\n.gh-article-author-image span:nth-child(3) {\n z-index: 8;\n}\n\n.gh-article-author-image img {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.gh-article-author-image svg {\n width: 18px;\n height: 18px;\n color: #95A1AD;\n}\n\n.gh-article-meta-wrapper {\n display: flex;\n flex-direction: column;\n gap: 1px;\n margin-top: -2px;\n}\n\n.gh-article-author-name {\n font-size: 1.5rem;\n font-weight: 600;\n letter-spacing: -0.008em;\n}\n\n.gh-article-source {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 1.5rem;\n line-height: 1.2;\n color: var(--color-secondary-text);\n width: fit-content;\n}\n\n.gh-article-source svg {\n width: 12px;\n height: 12px;\n margin-top: 1px;\n}\n\n.gh-article-meta:hover .gh-article-source {\n text-decoration: underline;\n}\n\n.gh-article-image {\n grid-column: full;\n margin-top: 40px;\n}\n\n.gh-article-image img {\n width: 100%;\n}\n\n/* Content */\n\n/* Content refers to styling all page and post content that is\ncreated within the Ghost editor. The main content handles\nheadings, text, images and lists. We deal with cards lower down. */\n\n.gh-content {\n font-size: calc(var(--font-size) * var(--font-size-multiplier, 1));\n overflow-x: hidden;\n letter-spacing: var(--letter-spacing);\n line-height: var(--line-height);\n}\n\n/* Default vertical spacing */\n.gh-content > * + * {\n margin-top: calc(28px * var(--content-spacing-factor, 1));\n margin-bottom: 0;\n}\n\n/* Remove space between full-width cards */\n.gh-content > .kg-width-full + .kg-width-full:not(.kg-width-full.kg-card-hascaption + .kg-width-full) {\n margin-top: 0;\n}\n\n/* Add back a top margin to all headings,\nunless a heading is the very first element in the post content */\n.gh-content > [id]:not(:first-child) {\n margin-top: calc(40px * var(--content-spacing-factor, 1));\n}\n\n/* Add a small margin between a heading and paragraph after it */\n.gh-content > [id] + p {\n margin-top: calc(12px * var(--content-spacing-factor, 1));\n}\n\n/* A larger margin before/after dividers, blockquotes and embeds */\n.gh-content > :is(hr, blockquote, iframe) {\n position: relative;\n margin-top: calc(48px * var(--content-spacing-factor, 1)) !important;\n}\n\n.gh-content > :is(hr, blockquote, iframe) + * {\n margin-top: calc(48px * var(--content-spacing-factor, 1)) !important;\n}\n\n/* Now the content typography styles */\n.gh-content [id] {\n letter-spacing: -0.005em;\n}\n\n.gh-content h1 {\n font-size: 1.9em;\n}\n\n.gh-content h2 {\n font-size: 1.6em;\n}\n\n.gh-content h3 {\n font-size: 1.3em;\n}\n\n.gh-content h4 {\n font-size: 1.2em;\n}\n\n.gh-content h5 {\n font-size: 1.1em;\n}\n\n.gh-content h6 {\n font-size: 1em;\n}\n\n.gh-content a:not([class]) {\n color: #14B8FF;\n text-decoration: underline;\n}\n\nhtml.has-light-text .gh-content a:not([class]) {\n color: #14B8FF;\n}\n\nhtml.has-sepia-bg .gh-content a:not([class]) {\n color: #DD6B02;\n}\n\n.gh-content .kg-callout-card .kg-callout-text,\n.gh-content .kg-toggle-card .kg-toggle-content > :is(ul, ol, p) {\n font-size: 0.95em;\n}\n\n.has-serif-body .gh-content > blockquote,\n.has-serif-body .gh-content > ol,\n.has-serif-body .gh-content > ul,\n.has-serif-body .gh-content > dl,\n.has-serif-body .gh-content > p,\n.has-serif-body .gh-content .kg-callout-text,\n.has-serif-body .gh-content .kg-toggle-content > ol,\n.has-serif-body .gh-content .kg-toggle-content > ul,\n.has-serif-body .gh-content .kg-toggle-content > p {\n font-family: var(--font-serif-alt);\n}\n\n.gh-content :is(ul, ol) {\n padding-left: 28px;\n}\n\n.gh-content :is(li + li, li :is(ul, ol)) {\n margin-top: 8px;\n}\n\n.gh-content ol ol li {\n list-style-type: lower-alpha;\n}\n\n.gh-content ol ol ol li {\n list-style-type: lower-roman;\n}\n\n.gh-content hr {\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n border: 0;\n}\n\n.gh-content .gh-table {\n overflow-x: scroll;\n -webkit-overflow-scrolling: touch;\n}\n\n.gh-content .gh-table table {\n width: 100%;\n font-family: var(--font-sans);\n font-size: 1.5rem;\n white-space: nowrap;\n vertical-align: top;\n border-spacing: 0;\n border-collapse: collapse;\n}\n\n.gh-content .gh-table table th {\n font-size: 1.2rem;\n font-weight: 700;\n color: var(--color-darkgrey);\n text-align: left;\n text-transform: uppercase;\n letter-spacing: 0.2px;\n}\n\n.gh-content .gh-table table :is(th, td),\n.gh-content .gh-table table td {\n padding: 6px 12px;\n border-bottom: 1px solid var(--color-border);\n}\n\n.gh-content .gh-table table :is(th, td):first-child {\n padding-left: 0;\n}\n\n.gh-content .gh-table table :is(th, td):last-child {\n padding-right: 0;\n}\n\n.gh-content pre {\n overflow: auto;\n padding: 16px;\n font-size: 1.5rem;\n line-height: 1.5em;\n background: var(--color-lighter-gray);\n border-radius: 6px;\n font-family: var(--font-mono);\n}\n\n.gh-content :not(pre) > code {\n vertical-align: baseline;\n padding: 0.15em 0.4em;\n font-weight: 400;\n font-size: 0.95em;\n line-height: 1em;\n background: var(--color-lighter-gray);\n border-radius: 0.25em;\n font-family: var(--font-mono);\n}\n\n.gh-content mark {\n color: inherit;\n background: rgb(255 225 54 / 25%);\n}\n\n/* Cards */\n\n/* Add extra margin before/after any cards, except for when immediately preceeded by a heading */\n\n.gh-content :not(.kg-card):not(table):not([id]) + :is(.kg-card, table) {\n margin-top: calc(48px * var(--content-spacing-factor, 1));\n}\n\n.gh-content :is(.kg-card, table) + :not(.kg-card):not(table):not([id]) {\n margin-top: calc(48px * var(--content-spacing-factor, 1));\n}\n\n.gh-content :not(.kg-card):not([id]) + .kg-card.kg-width-full {\n margin-top: calc(68px * var(--content-spacing-factor, 1));\n}\n\n.gh-content .kg-card.kg-width-full + :not(.kg-card):not([id]) {\n margin-top: calc(68px * var(--content-spacing-factor, 1));\n}\n\n.kg-image {\n margin-right: auto;\n margin-left: auto;\n}\n\n.kg-embed-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n}\n\n.kg-image-card a:hover,\n.kg-gallery-image a:hover {\n opacity: 1 !important;\n}\n\nblockquote:not([class]) {\n padding-left: 2rem;\n border-left: 4px solid var(--ghost-accent-color);\n}\n\nblockquote.kg-blockquote-alt {\n font-style: normal;\n font-weight: 400;\n color: var(--color-secondary-text);\n}\n\n.has-serif-body .kg-header-card h3.kg-header-card-subheader {\n font-family: var(--font-serif);\n}\n\n.has-serif-body .kg-product-card-description :is(p, ul, ol) {\n font-family: var(--font-serif-alt);\n}\n\n/* Caption */\n\nfigcaption {\n margin-top: 12px;\n font-size: 1.3rem;\n text-align: center;\n}\n\n.kg-card.kg-width-full figcaption {\n padding: 0 16px;\n}\n\nfigcaption a {\n color: rgb(29 78 216);\n text-decoration: underline;\n}\n\n/* Paid content styles */\n\n.gh-paid-content-notice {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 36px;\n background: rgba(0, 0, 0, 0.035);\n border-radius: 14px;\n font-size: 16px;\n}\n\nhtml.has-light-text .gh-paid-content-notice {\n background: rgba(255, 255, 255, 0.035);\n}\n\n.gh-paid-content-notice h3 {\n letter-spacing: -0.015em !important;\n}\n\n.gh-paid-content-notice p {\n max-width: 350px;\n text-align: center;\n line-height: 1.3em;\n}\n\n.gh-paid-content-cta {\n display: block;\n color: var(--background-color) !important;\n background: var(--color-primary-text);\n text-decoration: none !important;\n font-weight: 600;\n font-size: 0.9em;\n padding: 8px 16px;\n margin-top: 8px;\n border-radius: 6px;\n}\n\n/* Design settings /*\n\n.has-serif-body {\n --font-size-multiplier: 1.1;\n}\n\n.has-serif-body .gh-content > blockquote,\n.has-serif-body .gh-content > ol,\n.has-serif-body .gh-content > ul,\n.has-serif-body .gh-content > dl,\n.has-serif-body .gh-content > p,\n.has-serif-body .gh-content .kg-callout-card .kg-callout-text,\n.has-serif-body .gh-content .kg-toggle-card .kg-toggle-content > ol,\n.has-serif-body .gh-content .kg-toggle-card .kg-toggle-content > ul,\n.has-serif-body .gh-content .kg-toggle-card .kg-toggle-content > p {\n font-family: var(--font-serif-alt);\n}\n\n</style>", ke = /* @__PURE__ */ e({ default: () => Ae }), Ae = "(function() {\n const handleAudioPlayer = function (audioElementContainer) {\n const audioPlayerContainer = audioElementContainer.querySelector('.kg-audio-player-container');\n const playIconContainer = audioElementContainer.querySelector('.kg-audio-play-icon');\n const pauseIconContainer = audioElementContainer.querySelector('.kg-audio-pause-icon');\n const seekSlider = audioElementContainer.querySelector('.kg-audio-seek-slider');\n const playbackRateContainer = audioElementContainer.querySelector('.kg-audio-playback-rate');\n const muteIconContainer = audioElementContainer.querySelector('.kg-audio-mute-icon');\n const unmuteIconContainer = audioElementContainer.querySelector('.kg-audio-unmute-icon');\n const volumeSlider = audioElementContainer.querySelector('.kg-audio-volume-slider');\n const audio = audioElementContainer.querySelector('audio');\n const durationContainer = audioElementContainer.querySelector('.kg-audio-duration');\n const currentTimeContainer = audioElementContainer.querySelector('.kg-audio-current-time');\n let playbackRates = [{\n rate: 0.75,\n label: '0.7×'\n }, {\n rate: 1.0,\n label: '1×'\n }, {\n rate: 1.25,\n label: '1.2×'\n }, {\n rate: 1.75,\n label: '1.7×'\n }, {\n rate: 2.0,\n label: '2×'\n }];\n\n let raf = null;\n let currentPlaybackRateIdx = 1;\n\n const whilePlaying = () => {\n seekSlider.value = Math.floor(audio.currentTime);\n currentTimeContainer.textContent = calculateTime(seekSlider.value);\n audioPlayerContainer.style.setProperty('--seek-before-width', `${seekSlider.value / seekSlider.max * 100}%`);\n raf = requestAnimationFrame(whilePlaying);\n }\n\n const showRangeProgress = (rangeInput) => {\n if (rangeInput === seekSlider) {\n audioPlayerContainer.style.setProperty('--seek-before-width', rangeInput.value / rangeInput.max * 100 + '%');\n }\n else {\n audioPlayerContainer.style.setProperty('--volume-before-width', rangeInput.value / rangeInput.max * 100 + '%');\n }\n }\n\n const calculateTime = (secs) => {\n const minutes = Math.floor(secs / 60);\n const seconds = Math.floor(secs % 60);\n const returnedSeconds = seconds < 10 ? `0${seconds}` : `${seconds}`;\n return `${minutes}:${returnedSeconds}`;\n }\n\n const displayDuration = () => {\n durationContainer.textContent = calculateTime(audio.duration);\n }\n\n const setSliderMax = () => {\n seekSlider.max = Math.floor(audio.duration);\n }\n\n const displayBufferedAmount = () => {\n if (audio.buffered.length > 0) {\n const bufferedAmount = Math.floor(audio.buffered.end(audio.buffered.length - 1));\n audioPlayerContainer.style.setProperty('--buffered-width', `${(bufferedAmount / seekSlider.max) * 100}%`);\n }\n }\n\n if (audio.readyState > 0) {\n displayDuration();\n setSliderMax();\n displayBufferedAmount();\n } else {\n audio.addEventListener('loadedmetadata', () => {\n displayDuration();\n setSliderMax();\n displayBufferedAmount();\n });\n }\n\n playIconContainer.addEventListener('click', () => {\n playIconContainer.classList.add(\"kg-audio-hide\");\n pauseIconContainer.classList.remove(\"kg-audio-hide\");\n audio.play();\n requestAnimationFrame(whilePlaying);\n });\n\n pauseIconContainer.addEventListener('click', () => {\n pauseIconContainer.classList.add(\"kg-audio-hide\");\n playIconContainer.classList.remove(\"kg-audio-hide\");\n audio.pause();\n cancelAnimationFrame(raf);\n });\n\n muteIconContainer.addEventListener('click', () => {\n muteIconContainer.classList.add(\"kg-audio-hide\");\n unmuteIconContainer.classList.remove(\"kg-audio-hide\");\n audio.muted = false;\n });\n\n unmuteIconContainer.addEventListener('click', () => {\n unmuteIconContainer.classList.add(\"kg-audio-hide\");\n muteIconContainer.classList.remove(\"kg-audio-hide\");\n audio.muted = true;\n });\n\n playbackRateContainer.addEventListener('click', () => {\n let nextPlaybackRate = playbackRates[(currentPlaybackRateIdx + 1) % 5];\n currentPlaybackRateIdx = currentPlaybackRateIdx + 1;\n audio.playbackRate = nextPlaybackRate.rate;\n playbackRateContainer.textContent = nextPlaybackRate.label;\n });\n\n audio.addEventListener('progress', displayBufferedAmount);\n\n seekSlider.addEventListener('input', (e) => {\n showRangeProgress(e.target);\n currentTimeContainer.textContent = calculateTime(seekSlider.value);\n if (!audio.paused) {\n cancelAnimationFrame(raf);\n }\n });\n\n seekSlider.addEventListener('change', () => {\n audio.currentTime = seekSlider.value;\n if (!audio.paused) {\n requestAnimationFrame(whilePlaying);\n }\n });\n\n volumeSlider.addEventListener('input', (e) => {\n const value = e.target.value;\n showRangeProgress(e.target);\n audio.volume = value / 100;\n });\n }\n\n const audioCardElements = document.querySelectorAll('.kg-audio-card');\n\n for (let i = 0; i < audioCardElements.length; i++) {\n handleAudioPlayer(audioCardElements[i]);\n }\n})();\n", je = /* @__PURE__ */ e({ default: () => Me }), Me = "(function() {\n const images = document.querySelectorAll('.kg-gallery-image img');\n images.forEach(function (image) {\n const container = image.closest('.kg-gallery-image');\n const width = image.attributes.width.value;\n const height = image.attributes.height.value;\n const ratio = width / height;\n container.style.flex = ratio + ' 1 0%';\n })\n})();\n", Ne = /* @__PURE__ */ e({ default: () => Pe }), Pe = "(function() {\n const toggleHeadingElements = document.getElementsByClassName(\"kg-toggle-heading\");\n\n const toggleFn = function(event) {\n const targetElement = event.target;\n const parentElement = targetElement.closest('.kg-toggle-card');\n var toggleState = parentElement.getAttribute(\"data-kg-toggle-state\");\n if (toggleState === 'close') {\n parentElement.setAttribute('data-kg-toggle-state', 'open');\n } else {\n parentElement.setAttribute('data-kg-toggle-state', 'close');\n }\n };\n\n for (let i = 0; i < toggleHeadingElements.length; i++) {\n toggleHeadingElements[i].addEventListener('click', toggleFn, false);\n }\n})();\n", Fe = /* @__PURE__ */ e({ default: () => Ie }), Ie = "(function() {\n const handleVideoPlayer = function (videoElementContainer) {\n const videoPlayer = videoElementContainer.querySelector('.kg-video-player');\n const videoPlayerContainer = videoElementContainer.querySelector('.kg-video-player-container');\n const playIconContainer = videoElementContainer.querySelector('.kg-video-play-icon');\n const pauseIconContainer = videoElementContainer.querySelector('.kg-video-pause-icon');\n const seekSlider = videoElementContainer.querySelector('.kg-video-seek-slider');\n const playbackRateContainer = videoElementContainer.querySelector('.kg-video-playback-rate');\n const muteIconContainer = videoElementContainer.querySelector('.kg-video-mute-icon');\n const unmuteIconContainer = videoElementContainer.querySelector('.kg-video-unmute-icon');\n const volumeSlider = videoElementContainer.querySelector('.kg-video-volume-slider');\n const videoEl = videoElementContainer.querySelector('video');\n const durationContainer = videoElementContainer.querySelector('.kg-video-duration');\n const currentTimeContainer = videoElementContainer.querySelector('.kg-video-current-time');\n const largePlayIcon = videoElementContainer.querySelector('.kg-video-large-play-icon');\n const videoOverlay = videoElementContainer.querySelector('.kg-video-overlay');\n let playbackRates = [{\n rate: 0.75,\n label: '0.7×'\n }, {\n rate: 1.0,\n label: '1×'\n }, {\n rate: 1.25,\n label: '1.2×'\n }, {\n rate: 1.75,\n label: '1.7×'\n }, {\n rate: 2.0,\n label: '2×'\n }];\n\n let raf = null;\n let currentPlaybackRateIdx = 1;\n if (!!videoEl.loop) {\n largePlayIcon.classList.add(\"kg-video-hide-animated\");\n videoOverlay.classList.add(\"kg-video-hide-animated\");\n }\n const whilePlaying = () => {\n seekSlider.value = Math.floor(videoEl.currentTime);\n currentTimeContainer.textContent = calculateTime(seekSlider.value);\n videoPlayer.style.setProperty('--seek-before-width', `${seekSlider.value / seekSlider.max * 100}%`);\n raf = requestAnimationFrame(whilePlaying);\n }\n\n const showRangeProgress = (rangeInput) => {\n if (rangeInput === seekSlider) {\n videoPlayer.style.setProperty('--seek-before-width', rangeInput.value / rangeInput.max * 100 + '%');\n }\n else {\n videoPlayer.style.setProperty('--volume-before-width', rangeInput.value / rangeInput.max * 100 + '%');\n }\n }\n\n const calculateTime = (secs) => {\n const minutes = Math.floor(secs / 60);\n const seconds = Math.floor(secs % 60);\n const returnedSeconds = seconds < 10 ? `0${seconds}` : `${seconds}`;\n return `${minutes}:${returnedSeconds}`;\n }\n\n const displayDuration = () => {\n durationContainer.textContent = calculateTime(videoEl.duration);\n }\n\n const setSliderMax = () => {\n seekSlider.max = Math.floor(videoEl.duration);\n }\n\n const displayBufferedAmount = () => {\n if (videoEl.buffered.length > 0) {\n const bufferedAmount = Math.floor(videoEl.buffered.end(videoEl.buffered.length - 1));\n videoPlayer.style.setProperty('--buffered-width', `${(bufferedAmount / seekSlider.max) * 100}%`);\n }\n }\n\n if (videoEl.readyState > 0) {\n displayDuration();\n setSliderMax();\n displayBufferedAmount();\n if (videoEl.autoplay) {\n raf = requestAnimationFrame(whilePlaying);\n playIconContainer.classList.add(\"kg-video-hide\");\n pauseIconContainer.classList.remove(\"kg-video-hide\");\n }\n if (videoEl.muted) {\n unmuteIconContainer.classList.add(\"kg-video-hide\");\n muteIconContainer.classList.remove(\"kg-video-hide\");\n }\n } else {\n videoEl.addEventListener('loadedmetadata', () => {\n displayDuration();\n setSliderMax();\n displayBufferedAmount();\n if (videoEl.autoplay) {\n raf = requestAnimationFrame(whilePlaying);\n playIconContainer.classList.add(\"kg-video-hide\");\n pauseIconContainer.classList.remove(\"kg-video-hide\");\n }\n if (videoEl.muted) {\n unmuteIconContainer.classList.add(\"kg-video-hide\");\n muteIconContainer.classList.remove(\"kg-video-hide\");\n }\n });\n }\n\n videoElementContainer.onmouseover = () => {\n if (!videoEl.loop) {\n videoPlayerContainer.classList.remove(\"kg-video-hide-animated\");\n }\n }\n\n videoElementContainer.onmouseleave = () => {\n const isPlaying = !!(videoEl.currentTime > 0 && !videoEl.paused && !videoEl.ended && videoEl.readyState > 2);\n if (isPlaying) {\n videoPlayerContainer.classList.add(\"kg-video-hide-animated\");\n }\n }\n\n videoElementContainer.addEventListener('click', () => {\n if (!videoEl.loop) {\n const isPlaying = !!(videoEl.currentTime > 0 && !videoEl.paused && !videoEl.ended && videoEl.readyState > 2);\n if (isPlaying) {\n handleOnPause();\n } else {\n handleOnPlay();\n }\n }\n });\n\n videoEl.onplay = () => {\n largePlayIcon.classList.add(\"kg-video-hide-animated\");\n videoOverlay.classList.add(\"kg-video-hide-animated\");\n playIconContainer.classList.add(\"kg-video-hide\");\n pauseIconContainer.classList.remove(\"kg-video-hide\");\n };\n\n const handleOnPlay = () => {\n largePlayIcon.classList.add(\"kg-video-hide-animated\");\n videoOverlay.classList.add(\"kg-video-hide-animated\");\n playIconContainer.classList.add(\"kg-video-hide\");\n pauseIconContainer.classList.remove(\"kg-video-hide\");\n videoEl.play();\n raf = requestAnimationFrame(whilePlaying);\n }\n\n const handleOnPause = () => {\n pauseIconContainer.classList.add(\"kg-video-hide\");\n playIconContainer.classList.remove(\"kg-video-hide\");\n videoEl.pause();\n cancelAnimationFrame(raf);\n }\n\n largePlayIcon.addEventListener('click', (event) => {\n event.stopPropagation();\n handleOnPlay();\n });\n\n playIconContainer.addEventListener('click', (event) => {\n event.stopPropagation();\n handleOnPlay();\n });\n\n pauseIconContainer.addEventListener('click', (event) => {\n event.stopPropagation();\n handleOnPause();\n });\n\n muteIconContainer.addEventListener('click', (event) => {\n event.stopPropagation();\n muteIconContainer.classList.add(\"kg-video-hide\");\n unmuteIconContainer.classList.remove(\"kg-video-hide\");\n videoEl.muted = false;\n });\n\n unmuteIconContainer.addEventListener('click', (event) => {\n event.stopPropagation();\n unmuteIconContainer.classList.add(\"kg-video-hide\");\n muteIconContainer.classList.remove(\"kg-video-hide\");\n videoEl.muted = true;\n });\n\n playbackRateContainer.addEventListener('click', (event) => {\n event.stopPropagation();\n let nextPlaybackRate = playbackRates[(currentPlaybackRateIdx + 1) % 5];\n currentPlaybackRateIdx = currentPlaybackRateIdx + 1;\n videoEl.playbackRate = nextPlaybackRate.rate;\n playbackRateContainer.textContent = nextPlaybackRate.label;\n });\n\n videoEl.addEventListener('progress', displayBufferedAmount);\n\n seekSlider.addEventListener('input', (e) => {\n e.stopPropagation();\n showRangeProgress(e.target);\n currentTimeContainer.textContent = calculateTime(seekSlider.value);\n if (!videoEl.paused) {\n cancelAnimationFrame(raf);\n }\n });\n\n seekSlider.addEventListener('change', (event) => {\n event.stopPropagation();\n videoEl.currentTime = seekSlider.value;\n if (!videoEl.paused) {\n requestAnimationFrame(whilePlaying);\n }\n });\n\n volumeSlider.addEventListener('click', (event) => {\n event.stopPropagation();\n });\n\n seekSlider.addEventListener('click', (event) => {\n event.stopPropagation();\n });\n\n volumeSlider.addEventListener('input', (e) => {\n e.stopPropagation();\n const value = e.target.value;\n showRangeProgress(e.target);\n videoEl.volume = value / 100;\n });\n }\n\n const setVideoContainerAspectRatio = function(videoCard) {\n const container = videoCard.querySelector('.kg-video-container');\n const video = container.querySelector('video');\n if (container && video.width && video.height) {\n const aspectRatio = (video.height / video.width * 100).toFixed(3);\n container.style.paddingBottom = `${aspectRatio}%`;\n }\n };\n\n const videoCardElements = document.querySelectorAll('.kg-video-card');\n\n for (let i = 0; i < videoCardElements.length; i++) {\n setVideoContainerAspectRatio(videoCardElements[i]);\n handleVideoPlayer(videoCardElements[i]);\n }\n})();\n", Le = /* @__PURE__ */ e({ default: () => Re }), Re = ".kg-audio-card,\n.kg-audio-card * {\n box-sizing: border-box;\n}\n\n.kg-audio-card {\n display: flex;\n width: 100%;\n min-height: 96px;\n border-radius: 6px;\n padding: 4px;\n background: #fff;\n color: #222;\n box-shadow: inset 0 0 0 1px rgba(124, 139, 154, 0.25);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n}\n\n.kg-audio-card+.kg-audio-card {\n margin-top: 1em;\n}\n\n.kg-audio-thumbnail {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 80px;\n min-width: 80px;\n margin: 8px;\n background: transparent;\n object-fit: cover;\n aspect-ratio: 1/1;\n border-radius: 3px;\n}\n\n.kg-audio-thumbnail.placeholder {\n background: var(--ghost-accent-color);\n}\n\n.kg-audio-thumbnail.placeholder svg {\n width: 24px;\n height: 24px;\n fill: white;\n}\n\n.kg-audio-player-container {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 100%;\n --seek-before-width: 0%;\n --volume-before-width: 100%;\n --buffered-width: 0%;\n}\n\n.kg-audio-title {\n width: 100%;\n margin: 8px 0 0 0;\n padding: 8px 12px;\n border: none;\n font-family: inherit;\n font-size: 16px;\n font-weight: 600;\n line-height: 1.15em;\n background: transparent;\n}\n\n.kg-audio-player {\n display: flex;\n flex-grow: 1;\n align-items: center;\n padding: 8px 12px;\n}\n\n.kg-audio-current-time {\n min-width: 38px;\n padding: 0 4px;\n font-family: inherit;\n font-size: 12.5px;\n font-weight: 500;\n line-height: 1em;\n white-space: nowrap;\n}\n\n.kg-audio-time {\n width: 56px;\n color: #ababab;\n font-family: inherit;\n font-size: 12.5px;\n font-weight: 500;\n line-height: 1em;\n white-space: nowrap;\n}\n\n.kg-audio-duration {\n padding: 0 4px;\n}\n\n.kg-audio-play-icon,\n.kg-audio-pause-icon {\n position: relative;\n bottom: 1px;\n padding: 0px 4px 0 0;\n font-size: 0;\n background: transparent;\n}\n\n.kg-audio-hide {\n display: none !important;\n}\n\n.kg-audio-play-icon svg,\n.kg-audio-pause-icon svg {\n width: 14px;\n height: 14px;\n fill: currentColor;\n}\n\n.kg-audio-seek-slider {\n flex-grow: 1;\n margin: 0 4px;\n}\n\n@media (max-width: 640px) {\n .kg-audio-seek-slider {\n display: none;\n }\n}\n\n.kg-audio-playback-rate {\n min-width: 37px;\n padding: 0 4px;\n font-family: inherit;\n font-size: 12.5px;\n font-weight: 600;\n line-height: 1em;\n text-align: left;\n background: transparent;\n white-space: nowrap;\n}\n\n@media (max-width: 640px) {\n .kg-audio-playback-rate {\n padding-left: 8px;\n }\n}\n\n.kg-audio-mute-icon,\n.kg-audio-unmute-icon {\n position: relative;\n bottom: -1px;\n padding: 0 4px;\n font-size: 0;\n background: transparent;\n}\n\n@media (max-width: 640px) {\n .kg-audio-mute-icon,\n .kg-audio-unmute-icon {\n margin-left: auto;\n }\n}\n\n.kg-audio-mute-icon svg,\n.kg-audio-unmute-icon svg {\n width: 16px;\n height: 16px;\n fill: currentColor;\n}\n\n.kg-audio-volume-slider {\n width: 80px;\n}\n\n@media (max-width: 400px) {\n .kg-audio-volume-slider {\n display: none;\n }\n}\n\n.kg-audio-seek-slider::before {\n content: \"\";\n position: absolute;\n left: 0;\n width: var(--seek-before-width) !important;\n height: 4px;\n cursor: pointer;\n background-color: currentColor;\n border-radius: 2px;\n}\n\n.kg-audio-volume-slider::before {\n content: \"\";\n position: absolute;\n left: 0;\n width: var(--volume-before-width) !important;\n height: 4px;\n cursor: pointer;\n background-color: currentColor;\n border-radius: 2px;\n}\n\n/* Resetting browser styles\n/* --------------------------------------------------------------- */\n\n.kg-audio-player-container input[type=range] {\n position: relative;\n -webkit-appearance: none;\n background: transparent;\n}\n\n.kg-audio-player-container input[type=range]:focus {\n outline: none;\n}\n\n.kg-audio-player-container input[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n}\n\n.kg-audio-player-container input[type=range]::-ms-track {\n cursor: pointer;\n border-color: transparent;\n color: transparent;\n background: transparent;\n}\n\n.kg-audio-player-container button {\n display: flex;\n align-items: center;\n border: 0;\n cursor: pointer;\n}\n\n.kg-audio-player-container input[type=\"range\"] {\n height: auto;\n padding: 0;\n border: 0;\n}\n\n/* Chrome & Safari styles\n/* --------------------------------------------------------------- */\n\n.kg-audio-player-container input[type=\"range\"]::-webkit-slider-runnable-track {\n width: 100%;\n height: 4px;\n cursor: pointer;\n background: rgba(124, 139, 154, 0.25);\n border-radius: 2px;\n}\n\n.kg-audio-player-container input[type=\"range\"]::-webkit-slider-thumb {\n position: relative;\n box-sizing: content-box;\n width: 13px;\n height: 13px;\n margin: -5px 0 0 0;\n border: 0;\n cursor: pointer;\n background: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px rgba(0,0,0,.08), 0 1px 4px rgba(0,0,0,0.24);\n}\n\n.kg-audio-player-container input[type=\"range\"]:active::-webkit-slider-thumb {\n transform: scale(1.2);\n}\n\n/* Firefox styles\n/* --------------------------------------------------------------- */\n\n.kg-audio-player-container input[type=\"range\"]::-moz-range-track {\n width: 100%;\n height: 4px;\n cursor: pointer;\n background: rgba(124, 139, 154, 0.25);\n border-radius: 2px;\n}\n\n.kg-audio-player-container input[type=\"range\"]::-moz-range-progress {\n background: currentColor;\n border-radius: 2px;\n}\n\n.kg-audio-player-container input[type=\"range\"]::-moz-range-thumb {\n box-sizing: content-box;\n width: 13px;\n height: 13px;\n border: 0;\n cursor: pointer;\n background: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px rgba(0,0,0,.08), 0 1px 4px rgba(0,0,0,0.24);\n}\n\n.kg-audio-player-container input[type=\"range\"]:active::-moz-range-thumb {\n transform: scale(1.2);\n}\n\n/* Edge & IE styles\n/* --------------------------------------------------------------- */\n\n.kg-audio-player-container input[type=\"range\"]::-ms-track {\n width: 100%;\n height: 3px;\n border: solid transparent;\n color: transparent;\n cursor: pointer;\n background: transparent;\n}\n\n.kg-audio-player-container input[type=\"range\"]::-ms-fill-lower {\n background: #fff;\n}\n\n.kg-audio-player-container input[type=\"range\"]::-ms-fill-upper {\n background: currentColor;\n}\n\n.kg-audio-player-container input[type=\"range\"]::-ms-thumb {\n box-sizing: content-box;\n width: 13px;\n height: 13px;\n border: 0;\n cursor: pointer;\n background: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px rgba(0,0,0,.08), 0 1px 4px rgba(0,0,0,0.24);\n}\n\n.kg-audio-player-container input[type=\"range\"]:active::-ms-thumb {\n transform: scale(1.2);\n}\n", ze = /* @__PURE__ */ e({ default: () => J }), J = ".kg-blockquote-alt {\n font-size: 1.5em;\n font-style: italic;\n line-height: 1.7em;\n text-align: center;\n padding: 0 2.5em;\n}\n\n@media (max-width: 800px) {\n .kg-blockquote-alt {\n font-size: 1.4em;\n padding-left: 2em;\n padding-right: 2em;\n }\n}\n\n@media (max-width: 600px) {\n .kg-blockquote-alt {\n font-size: 1.2em;\n padding-left: 1.75em;\n padding-right: 1.75em;\n } \n}\n", Be = /* @__PURE__ */ e({ default: () => Ve }), Ve = ".kg-bookmark-card,\n.kg-bookmark-card * {\n box-sizing: border-box;\n}\n\n.kg-bookmark-card,\n.kg-bookmark-publisher {\n position: relative;\n /* width: 100%; */\n}\n\n.kg-bookmark-card a.kg-bookmark-container,\n.kg-bookmark-card a.kg-bookmark-container:hover {\n display: flex;\n background: #fff;\n text-decoration: none;\n border-radius: 6px;\n border: 1px solid rgb(124 139 154 / 25%);\n overflow: hidden;\n color: #222;\n}\n\n.kg-bookmark-content {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n flex-basis: 100%;\n align-items: flex-start;\n justify-content: flex-start;\n padding: 20px;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n}\n\n.kg-bookmark-title {\n font-size: 15px;\n line-height: 1.4em;\n font-weight: 600;\n}\n\n.kg-bookmark-description {\n display: -webkit-box;\n font-size: 14px;\n line-height: 1.5em;\n margin-top: 3px;\n font-weight: 400;\n max-height: 44px;\n overflow-y: hidden;\n opacity: 0.7;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.kg-bookmark-metadata {\n display: flex;\n align-items: center;\n margin-top: 22px;\n width: 100%;\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n}\n\n.kg-bookmark-metadata > *:not(img) {\n opacity: 0.7;\n}\n\n.kg-bookmark-icon {\n width: 20px;\n height: 20px;\n margin-right: 6px;\n}\n\n.kg-bookmark-author,\n.kg-bookmark-publisher {\n display: inline;\n}\n\n.kg-bookmark-publisher {\n text-overflow: ellipsis;\n overflow: hidden;\n max-width: 240px;\n white-space: nowrap;\n display: block;\n line-height: 1.65em;\n}\n\n.kg-bookmark-metadata > span:nth-of-type(2) {\n font-weight: 400;\n}\n\n.kg-bookmark-metadata > span:nth-of-type(2):before {\n content: \"•\";\n margin: 0 6px;\n}\n\n.kg-bookmark-metadata > span:last-of-type {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.kg-bookmark-thumbnail {\n position: relative;\n flex-grow: 1;\n min-width: 33%;\n}\n\n.kg-bookmark-thumbnail img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n position: absolute;\n top: 0;\n left: 0;\n border-radius: 0 2px 2px 0;\n}\n", Y = /* @__PURE__ */ e({ default: () => He }), He = ".kg-button-card,\n.kg-button-card * {\n box-sizing: border-box;\n}\n\n.kg-button-card {\n display: flex;\n position: static;\n align-items: center;\n width: 100%;\n justify-content: center;\n}\n\n.kg-button-card.kg-align-left {\n justify-content: flex-start;\n}\n\n.kg-button-card a.kg-btn {\n display: flex;\n position: static;\n align-items: center;\n padding: 0 1.2em;\n height: 2.4em;\n line-height: 1em;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n font-size: 0.95em;\n font-weight: 600;\n text-decoration: none;\n border-radius: 5px;\n transition: opacity 0.2s ease-in-out;\n}\n\n.kg-button-card a.kg-btn:hover {\n opacity: 0.85;\n}\n\n.kg-button-card a.kg-btn-accent {\n background-color: var(--ghost-accent-color);\n color: #fff;\n}", Ue = /* @__PURE__ */ e({ default: () => X }), X = ".kg-callout-card,\n.kg-callout-card * {\n box-sizing: border-box;\n}\n\n.kg-callout-card {\n display: flex;\n padding: 1.2em 1.6em;\n border-radius: 8px;\n}\n\n.kg-callout-card-grey {\n background: rgba(124, 139, 154, 0.13);\n}\n\n.kg-callout-card-white {\n background: transparent;\n box-shadow: inset 0 0 0 1px rgba(124, 139, 154, 0.2);\n}\n\n.kg-callout-card-blue {\n background: rgba(33, 172, 232, 0.12);\n}\n\n.kg-callout-card-green {\n background: rgba(52, 183, 67, 0.12);\n}\n\n.kg-callout-card-yellow {\n background: rgba(240, 165, 15, 0.13);\n}\n\n.kg-callout-card-red {\n background: rgba(209, 46, 46, 0.11);\n}\n\n.kg-callout-card-pink {\n background: rgba(225, 71, 174, 0.11);\n}\n\n.kg-callout-card-purple {\n background: rgba(135, 85, 236, 0.12);\n}\n\n.kg-callout-card-accent {\n background: var(--ghost-accent-color);\n color: #fff;\n}\n\n.kg-callout-card.kg-callout-card-accent a {\n color: #fff;\n text-decoration: underline;\n}\n\n.kg-callout-card div.kg-callout-emoji {\n padding-right: .8em;\n line-height: 1.25em;\n font-size: 1.15em;\n}\n\n.kg-callout-card div.kg-callout-text {\n font-size: .95em;\n line-height: 1.5em;\n}\n\n.kg-callout-card + .kg-callout-card {\n margin-top: 1em;\n}", We = /* @__PURE__ */ e({ default: () => Ge }), Ge = ".kg-collection-card {\n width: 100%;\n margin-top: 6vmin;\n}\n\n.kg-collection-card + * { \n margin-top: 6vmin; \n}\n\n.kg-collection-card-title {\n margin: .8rem 0 1.6rem 0;\n font-size: 1.5rem;\n font-weight: 700;\n text-transform: uppercase;\n}\n\na.kg-collection-card-post-wrapper {\n text-decoration: none;\n color: var(--text-color);\n}\n\na.kg-collection-card-post-wrapper:hover {\n opacity: 1;\n}\n\n\n.kg-collection-card-post {\n display: flex;\n gap: 3.2rem;\n}\n\n.kg-collection-card-img {\n position: relative;\n aspect-ratio: 3/2;\n}\n\n.kg-collection-card-img img {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\na.kg-collection-card-post-wrapper:hover img {\n opacity: .92;\n transition: all .2s ease;\n}\n\n.kg-collection-card-content {\n display: flex;\n flex-direction: column;\n font-size: 1.6rem;\n}\n\nh2.kg-collection-card-post-title {\n margin: 0;\n font-size: 2.4rem;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n}\n\np.kg-collection-card-post-excerpt {\n margin-top: 1.2rem;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n line-height: 1.4;\n}\n\n.kg-collection-card-post-meta {\n display: flex;\n opacity: .5;\n margin-top: 1.2rem;\n font-size: 1.3rem;\n font-weight: 500;\n}\n\n/* List layout */\n\n.kg-collection-card-list {\n display: flex;\n flex-direction: column;\n gap: 3.2rem;\n}\n\n@media (max-width: 767px) {\n .kg-collection-card-list .kg-collection-card-post {\n flex-direction: column;\n }\n}\n\n.kg-collection-card-list .kg-collection-card-img {\n flex: 0 0 30%;\n}\n\n/* Grid layout */\n\n.kg-collection-card-grid {\n display: grid;\n grid-template-columns: repeat(1,minmax(0,1fr));\n gap: 2.4rem;\n}\n\n@media (min-width: 640px) {\n .kg-collection-card-grid:not(.columns-1) {\n grid-template-columns: repeat(2,minmax(0,1fr));\n }\n}\n\n@media (min-width: 1024px) {\n .kg-collection-card-grid:not(.columns-1):not(.columns-2) {\n grid-template-columns: repeat(3,minmax(0,1fr));\n gap: 3.2rem\n }\n\n .kg-collection-card-grid.columns-1 {\n gap: 4.8rem\n }\n\n .kg-collection-card-grid.columns-2 {\n gap: 4rem\n }\n}\n\n@media (min-width: 1280px) {\n .kg-collection-card-grid:not(.columns-1):not(.columns-2):not(.columns-3) {\n grid-template-columns: repeat(4,minmax(0,1fr));\n }\n}\n\n.kg-collection-card-grid .kg-collection-card-post {\n flex-direction: column;\n gap: 1.2rem;\n}\n\n@media (min-width: 1024px) {\n .kg-collection-card-grid.columns-1 .kg-collection-card-post {\n gap: 2rem\n }\n\n .kg-collection-card-grid.columns-2 .kg-collection-card-post {\n gap: 1.6rem\n }\n}\n\n.kg-collection-card-grid.columns-1 .kg-collection-card-img,\n.kg-collection-card-grid.columns-2 .kg-collection-card-img {\n aspect-ratio: 16/9;\n}\n\n.kg-collection-card-grid .kg-collection-card-content {\n font-size: 1.5rem;\n}\n\n@media (min-width: 640px) {\n .kg-collection-card-grid .kg-collection-card-content {\n font-size: 1.6rem;\n }\n}\n\n@media (min-width: 1024px) {\n .kg-collection-card-grid.columns-1 .kg-collection-card-content {\n font-size: 1.8rem;\n }\n\n .kg-collection-card-grid.columns-3 .kg-collection-card-content,\n .kg-collection-card-grid.columns-4 .kg-collection-card-content {\n font-size: 1.5rem;\n }\n}\n\n.kg-collection-card-grid h2.kg-collection-card-post-title {\n font-size: 1.7rem;\n}\n\n.kg-collection-card-grid .kg-collection-card-post-meta {\n font-size: 1.25rem;\n}\n\n@media (min-width: 640px) {\n .kg-collection-card-grid h2.kg-collection-card-post-title {\n font-size: 1.9rem;\n }\n\n .kg-collection-card-grid.columns-1 h2.kg-collection-card-post-title {\n font-size: 2.4rem;\n }\n\n .kg-collection-card-grid:not(.columns-3):not(.columns-4) .kg-collection-card-post-meta {\n font-size: 1.3rem;\n }\n}\n\n@media (min-width: 1024px) {\n .kg-collection-card-grid.columns-1 h2.kg-collection-card-post-title {\n font-size: 3.6rem;\n }\n\n .kg-collection-card-grid.columns-2 h2.kg-collection-card-post-title {\n font-size: 2.4rem;\n }\n\n .kg-collection-card-grid.columns-1 .kg-collection-card-post-meta {\n font-size: 1.4rem;\n }\n}\n\n@media (min-width: 1280px) {\n .kg-collection-card-grid.columns-4 h2.kg-collection-card-post-title {\n font-size: 1.7rem;\n }\n}", Ke = /* @__PURE__ */ e({ default: () => Z }), Z = ".kg-cta-card,\n.kg-cta-card * {\n box-sizing: border-box;\n}\n\n.kg-cta-card {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n}\n\n.kg-cta-bg-grey {\n background: rgba(151, 163, 175, 0.14)\n}\n\n.kg-cta-bg-white {\n background: transparent;\n box-shadow: inset 0 0 0 1px rgba(124, 139, 154, 0.2);\n}\n\n.kg-cta-bg-blue {\n background: rgba(33, 172, 232, 0.12);\n}\n\n.kg-cta-bg-green {\n background: rgba(52, 183, 67, 0.12);\n}\n\n.kg-cta-bg-yellow {\n background: rgba(240, 165, 15, 0.13);\n}\n\n.kg-cta-bg-red {\n background: rgba(209, 46, 46, 0.11);\n}\n\n.kg-cta-bg-pink {\n background: rgba(225, 71, 174, 0.11);\n}\n\n.kg-cta-bg-purple {\n background: rgba(135, 85, 236, 0.12);\n}\n\n.kg-cta-sponsor-label-wrapper {\n margin: 0 1.5em;\n padding: .7em 0;\n border-bottom: 1px solid rgba(124, 139, 154, 0.2);\n}\n\n@media (max-width: 600px) {\n .kg-cta-sponsor-label-wrapper {\n margin: 0 1.25em;\n padding: .5em 0;\n }\n}\n\n.kg-cta-bg-none .kg-cta-sponsor-label-wrapper {\n margin: 0;\n padding-top: 0;\n}\n\n.kg-cta-has-img .kg-cta-sponsor-label-wrapper:not(.kg-cta-bg-none .kg-cta-sponsor-label-wrapper):not(.kg-cta-minimal .kg-cta-sponsor-label-wrapper),\n.kg-cta-bg-none.kg-cta-no-dividers .kg-cta-sponsor-label-wrapper {\n border-bottom: 0;\n}\n\n.kg-cta-sponsor-label {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n text-wrap: pretty;\n}\n\n.kg-cta-sponsor-label span:not(a span) {\n color: color-mix(in srgb, currentColor 45%, transparent);\n}\n\n.kg-cta-sponsor-label a,\n.kg-cta-sponsor-label a span {\n color: currentColor;\n transition: opacity 0.15s ease-in-out;\n}\n\n.kg-cta-sponsor-label a:hover,\n.kg-cta-sponsor-label a:hover span {\n color: currentColor;\n opacity: 0.85;\n}\n\n.kg-cta-link-accent .kg-cta-sponsor-label a {\n color: var(--ghost-accent-color);\n}\n\n.kg-cta-content {\n display: flex;\n padding: 1.5em;\n gap: 1.5em;\n}\n\n@media (max-width: 600px) {\n .kg-cta-content {\n padding: 1.25em;\n gap: 1.25em;\n }\n}\n\n.kg-cta-has-img .kg-cta-sponsor-label-wrapper + .kg-cta-content:not(.kg-cta-bg-none .kg-cta-content):not(.kg-cta-minimal .kg-cta-content) {\n padding-top: 0;\n}\n\n.kg-cta-bg-none .kg-cta-content {\n padding: 1.5em 0;\n border-bottom: 1px solid rgba(124, 139, 154, 0.2);\n}\n\n.kg-cta-bg-none.kg-cta-no-dividers .kg-cta-content {\n padding: 0;\n border-bottom: none;\n}\n\n.kg-cta-bg-none:not(.kg-cta-no-dividers) .kg-cta-content:not(.kg-cta-sponsor-label-wrapper + .kg-cta-content) {\n border-top: 1px solid rgba(124, 139, 154, 0.2);\n}\n\n@media (max-width: 600px) {\n .kg-cta-bg-none .kg-cta-content {\n padding: 1.25em 0;\n }\n}\n\n.kg-cta-minimal .kg-cta-content {\n flex-direction: row;\n}\n\n@media (max-width: 600px) {\n .kg-cta-minimal .kg-cta-content {\n flex-direction: column;\n gap: 1.6rem;\n }\n}\n\n.kg-cta-immersive .kg-cta-content {\n flex-direction: column;\n}\n\n.kg-cta-content-inner {\n display: flex;\n flex-direction: column;\n gap: 1.5em;\n}\n\n@media (max-width: 600px) {\n .kg-cta-content-inner {\n gap: 1.25em;\n }\n}\n\n.kg-cta-immersive.kg-cta-centered .kg-cta-content-inner {\n align-items: center;\n}\n\n.kg-cta-image-container {\n flex-shrink: 0;\n}\n\n.kg-cta-image-container img {\n width: 100%;\n height: auto;\n margin: 0;\n object-fit: cover;\n border-radius: 6px;\n}\n\n\n.kg-cta-minimal .kg-cta-image-container img {\n width: 64px;\n height: 64px;\n}\n\n@media (max-width: 600px) {\n .kg-cta-minimal .kg-cta-image-container img {\n width: 52px;\n height: 52px;\n }\n}\n\n.kg-cta-text p {\n margin: 0;\n line-height: 1.5em;\n text-wrap: pretty;\n}\n\n.kg-cta-bg-none .kg-cta-text p {\n line-height: unset;\n}\n\n.kg-cta-immersive.kg-cta-centered .kg-cta-text {\n text-align: center;\n}\n\n.kg-cta-text p + p {\n margin-top: 1.25em;\n}\n\n.kg-cta-text a {\n color: currentColor;\n transition: opacity 0.15s ease-in-out;\n}\n\n.kg-cta-text a:hover {\n color: currentColor;\n opacity: 0.85;\n}\n\n.kg-cta-link-accent .kg-cta-text a {\n color: var(--ghost-accent-color);\n}\n\na.kg-cta-button {\n display: flex;\n position: static;\n align-items: center;\n justify-content: center;\n padding: 0 1em;\n height: 2.5em;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n font-size: 0.95em;\n font-weight: 500;\n line-height: 1.65;\n text-decoration: none;\n border-radius: 6px;\n transition: opacity 0.15s ease-in-out;\n}\n\na.kg-cta-button:hover {\n opacity: 0.85;\n}\n\na.kg-cta-button.kg-style-accent {\n background-color: var(--ghost-accent-color);\n}\n\na.kg-cta-button {\n width: max-content;\n}\n\n.kg-cta-immersive.kg-cta-has-img a.kg-cta-button {\n width: 100%;\n}\n\n", qe = /* @__PURE__ */ e({ default: () => Je }), Je = ".kg-file-card,\n.kg-file-card * {\n box-sizing: border-box;\n}\n\n.kg-file-card {\n display: flex;\n}\n\n.kg-file-card a.kg-file-card-container {\n display: flex;\n align-items: stretch;\n justify-content: space-between;\n color: inherit;\n padding: 12px;\n min-height: 92px;\n background: #fff;\n color: #222;\n border: 1px solid rgb(124 139 154 / 25%);\n border-radius: 5px;\n transition: all ease-in-out 0.35s;\n text-decoration: none;\n width: 100%;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n}\n\n.kg-file-card a.kg-file-card-container:hover {\n border: 1px solid rgb(124 139 154 / 35%);\n}\n\n.kg-file-card-contents {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n margin: 4px 8px;\n width: 100%\n}\n\n.kg-file-card-title {\n font-size: 16px;\n font-weight: 600;\n line-height: 1.3em;\n}\n\n.kg-file-card-caption {\n font-size: 14px;\n line-height: 1.3em;\n opacity: 0.7;\n}\n\n.kg-file-card-title + .kg-file-card-caption {\n flex-grow: 1;\n margin-top: 3px;\n}\n\n.kg-file-card-metadata {\n display: inline;\n font-size: 14px;\n line-height: 1.3em;\n margin-top: 5px;\n}\n\n.kg-file-card-filename {\n display: inline;\n font-weight: 500;\n}\n\n.kg-file-card-filesize {\n display: inline-block;\n font-size: 14px;\n opacity: 0.6;\n}\n\n.kg-file-card-filesize:before {\n display: inline-block;\n content: \"\\2022\";\n margin-left: 6px;\n margin-right: 6px;\n}\n\n.kg-file-card-icon {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 80px;\n min-width: 80px;\n height: 100%;\n min-height: 80px;\n}\n\n.kg-file-card-icon:before {\n position: absolute;\n display: block;\n content: \"\";\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: currentColor;\n opacity: 0.06;\n transition: opacity ease-in-out 0.35s;\n border-radius: 3px;\n}\n\n.kg-file-card a.kg-file-card-container:hover .kg-file-card-icon:before {\n opacity: 0.08;\n}\n\n.kg-file-card-icon svg {\n width: 24px;\n height: 24px;\n color: var(--ghost-accent-color);\n}\n\n/* Size variations */\n.kg-file-card-medium a.kg-file-card-container {\n min-height: 72px;\n}\n\n.kg-file-card-medium .kg-file-card-caption {\n opacity: 1.0;\n font-weight: 500;\n}\n\n.kg-file-card-small a.kg-file-card-container {\n align-items: center;\n min-height: 52px;\n}\n\n.kg-file-card-small .kg-file-card-metadata {\n font-size: 14px;\n margin-top: 0;\n}\n\n.kg-file-card-small .kg-file-card-icon svg {\n width: 20px;\n height: 20px;\n}\n\n.kg-file-card + .kg-file-card {\n margin-top: 1em;\n}\n", Ye = /* @__PURE__ */ e({ default: () => Q }), Q = ".kg-gallery-card,\n.kg-gallery-card * {\n box-sizing: border-box;\n}\n\n.kg-gallery-card,\n.kg-image-card {\n --gap: 1.2rem;\n}\n\n.kg-image-card:not(.kg-card-hascaption) + .kg-image-card,\n.kg-image-card:not(.kg-card-hascaption) + .kg-gallery-card,\n.kg-gallery-card:not(.kg-card-hascaption) + .kg-image-card,\n.kg-gallery-card:not(.kg-card-hascaption) + .kg-gallery-card {\n margin-top: var(--gap);\n}\n\n.kg-gallery-container {\n position: relative;\n}\n\n.kg-gallery-row {\n display: flex;\n flex-direction: row;\n justify-content: center;\n}\n\n.kg-gallery-image img {\n display: block;\n margin: 0;\n width: 100%;\n height: 100%;\n}\n\n.kg-gallery-row:not(:first-of-type) {\n margin: var(--gap) 0 0;\n}\n\n.kg-gallery-image:not(:first-of-type) {\n margin: 0 0 0 var(--gap);\n}\n\n@media (max-width: 600px) {\n .kg-gallery-card,\n .kg-image-card {\n --gap: 0.6rem;\n }\n}\n", Xe = /* @__PURE__ */ e({ default: () => Ze }), Ze = ".kg-header-card,\n.kg-header-card * {\n box-sizing: border-box;\n}\n\n.kg-header-card {\n padding: 12vmin 4em;\n min-height: 60vh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.kg-header-card.kg-size-small {\n padding-top: 14vmin;\n padding-bottom: 14vmin;\n min-height: 40vh;\n}\n\n.kg-header-card.kg-size-large {\n padding-top: 18vmin;\n padding-bottom: 18vmin;\n min-height: 80vh;\n}\n\n.kg-header-card.kg-align-left {\n text-align: left;\n align-items: flex-start;\n}\n\n.kg-header-card.kg-style-dark {\n background: #151515;\n color: #ffffff;\n}\n\n.kg-header-card.kg-style-light {\n background-color: #fafafa;\n}\n\n.kg-header-card.kg-style-accent {\n background-color: var(--ghost-accent-color);\n}\n\n.kg-header-card.kg-style-image {\n position: relative;\n background-color: #e7e7e7;\n background-size: cover;\n background-position: center;\n}\n\n.kg-header-card.kg-style-image::before {\n position: absolute;\n display: block;\n content: \"\";\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: linear-gradient(0deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2));\n}\n\n.kg-header-card h2.kg-header-card-header {\n font-size: 5em;\n font-weight: 700;\n line-height: 1.1em;\n letter-spacing: -0.01em;\n margin: 0;\n}\n\n.kg-header-card h2.kg-header-card-header strong {\n font-weight: 800;\n}\n\n.kg-header-card.kg-size-small h2.kg-header-card-header {\n font-size: 4em;\n}\n\n.kg-header-card.kg-size-large h2.kg-header-card-header {\n font-size: 6em;\n}\n\n.kg-header-card h3.kg-header-card-subheader {\n font-size: 1.5em;\n font-weight: 500;\n line-height: 1.4em;\n margin: 0;\n max-width: 40em;\n}\n\n.kg-header-card h2 + h3.kg-header-card-subheader {\n margin: 0.35em 0 0;\n}\n\n.kg-header-card h3.kg-header-card-subheader strong {\n font-weight: 600;\n}\n\n.kg-header-card.kg-size-small h3.kg-header-card-subheader {\n font-size: 1.25em;\n}\n\n.kg-header-card.kg-size-large h3.kg-header-card-subheader {\n font-size: 1.75em;\n}\n\n.kg-header-card:not(.kg-style-light) h2.kg-header-card-header,\n.kg-header-card:not(.kg-style-light) h3.kg-header-card-subheader {\n color: #ffffff;\n}\n\n.kg-header-card.kg-style-accent h3.kg-header-card-subheader,\n.kg-header-card.kg-style-image h3.kg-header-card-subheader {\n opacity: 1.0;\n}\n\n.kg-header-card.kg-style-image h2.kg-header-card-header,\n.kg-header-card.kg-style-image h3.kg-header-card-subheader,\n.kg-header-card.kg-style-image a.kg-header-card-button {\n z-index: 999;\n}\n\n.kg-header-card h2.kg-header-card-header a,\n.kg-header-card h3.kg-header-card-subheader a {\n color: var(--ghost-accent-color);\n}\n\n.kg-header-card.kg-style-accent h2.kg-header-card-header a,\n.kg-header-card.kg-style-accent h3.kg-header-card-subheader a,\n.kg-header-card.kg-style-image h2.kg-header-card-header a,\n.kg-header-card.kg-style-image h3.kg-header-card-subheader a {\n color: #fff;\n}\n\n.kg-header-card a.kg-header-card-button {\n display: flex;\n position: static;\n align-items: center;\n fill: #fff;\n background: #fff;\n border-radius: 3px;\n outline: none;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n font-size: 1.05em;\n font-weight: 600;\n line-height: 1em;\n text-align: center;\n text-decoration: none;\n letter-spacing: .2px;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: #151515;\n height: 2.7em;\n padding: 0 1.2em;\n transition: opacity .2s ease;\n}\n\n.kg-header-card h2 + a.kg-header-card-button,\n.kg-header-card h3 + a.kg-header-card-button {\n margin: 1.75em 0 0;\n}\n\n.kg-header-card a.kg-header-card-button:hover {\n opacity: 0.85;\n}\n\n.kg-header-card.kg-size-large a.kg-header-card-button {\n font-size: 1.1em;\n height: 2.9em;\n}\n\n.kg-header-card.kg-size-large h2 + a.kg-header-card-button,\n.kg-header-card.kg-size-large h3 + a.kg-header-card-button {\n margin-top: 2em;\n}\n\n.kg-header-card.kg-size-small a.kg-header-card-button {\n height: 2.4em;\n font-size: 1em;\n}\n\n.kg-header-card.kg-size-small h2 + a.kg-header-card-button,\n.kg-header-card.kg-size-small h3 + a.kg-header-card-button {\n margin-top: 1.5em;\n}\n\n.kg-header-card.kg-style-image a.kg-header-card-button,\n.kg-header-card.kg-style-dark a.kg-header-card-button {\n background: #fff;\n color: #151515;\n}\n\n.kg-header-card.kg-style-light a.kg-header-card-button {\n background: var(--ghost-accent-color);\n color: #fff;\n}\n\n.kg-header-card.kg-style-accent a.kg-header-card-button {\n background: #fff;\n color: #151515;\n}\n\n@media (max-width: 640px) {\n .kg-header-card {\n padding-left: 1em;\n padding-right: 1em;\n }\n\n .kg-header-card h2.kg-header-card-header {\n font-size: 3.5em;\n }\n\n .kg-header-card.kg-size-large h2.kg-header-card-header {\n font-size: 4em;\n }\n\n .kg-header-card.kg-size-small h2.kg-header-card-header {\n font-size: 3em;\n }\n\n .kg-header-card h3.kg-header-card-subheader {\n font-size: 1.25em;\n }\n\n .kg-header-card.kg-size-large h3.kg-header-card-subheader {\n font-size: 1.5em;\n }\n\n .kg-header-card.kg-size-small h3.kg-header-card-subheader {\n font-size: 1em;\n }\n}\n", Qe = /* @__PURE__ */ e({ default: () => $e }), $e = ".kg-header-card.kg-v2 {\n position: relative;\n padding: 0;\n min-height: initial;\n text-align: initial;\n}\n\n.kg-header-card.kg-v2,\n.kg-header-card.kg-v2 * {\n box-sizing: border-box;\n}\n\n.kg-header-card.kg-v2 a,\n.kg-header-card.kg-v2 a span {\n color: currentColor;\n}\n\n.kg-header-card.kg-style-accent.kg-v2 {\n background-color: var(--ghost-accent-color);\n}\n\n.kg-header-card-content {\n width: 100%;\n}\n\n.kg-layout-split .kg-header-card-content {\n display: grid;\n grid-template-columns: 1fr 1fr;\n}\n\n.kg-header-card-text {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n height: 100%;\n padding: min(6.4vmax, 120px) min(4vmax, 80px);\n background-size: cover;\n background-position: center;\n text-align: left;\n}\n\n.kg-width-wide .kg-header-card-text {\n padding: min(10vmax, 220px) min(6.4vmax, 140px);\n}\n\n.kg-width-full .kg-header-card-text {\n padding: min(12vmax, 260px) 0;\n}\n\n.kg-layout-split .kg-header-card-text {\n padding: min(12vmax, 260px) min(4vmax, 80px);\n}\n\n.kg-layout-split.kg-content-wide .kg-header-card-text {\n padding: min(10vmax, 220px) 0 min(10vmax, 220px) min(4vmax, 80px);\n}\n\n.kg-layout-split.kg-content-wide.kg-swapped .kg-header-card-text {\n padding: min(10vmax, 220px) min(4vmax, 80px) min(10vmax, 220px) 0;\n}\n\n.kg-swapped .kg-header-card-text {\n grid-row: 1;\n}\n\n.kg-header-card-text.kg-align-center {\n align-items: center;\n text-align: center;\n}\n\n.kg-header-card.kg-style-image h2.kg-header-card-heading,\n.kg-header-card.kg-style-image .kg-header-card-subheading,\n.kg-header-card.kg-style-image.kg-v2 .kg-header-card-button {\n z-index: 999;\n}\n\n/* Background image */\n\n.kg-header-card > picture > .kg-header-card-image {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n background-color: #FFFFFF;\n pointer-events: none;\n}\n\n/* Split layout image */\n\n.kg-header-card-content .kg-header-card-image {\n width: 100%;\n /* this will force the image to follow the signup card height */\n height: 0;\n min-height: 100%;\n /**/\n object-fit: cover;\n object-position: center;\n}\n\n.kg-content-wide .kg-header-card-content .kg-header-card-image {\n height: 100%;\n padding: 5.6em 0;\n object-fit: contain;\n}\n\n/* Heading */\n\n.kg-header-card h2.kg-header-card-heading {\n margin: 0;\n font-size: clamp(1.7em, 4vw, 2.5em);\n font-weight: 700;\n line-height: 1.05em;\n letter-spacing: -0.01em;\n}\n\n.kg-header-card.kg-width-wide h2.kg-header-card-heading {\n font-size: clamp(1.7em, 5vw, 3.3em);\n}\n\n.kg-header-card.kg-width-full h2.kg-header-card-heading {\n font-size: clamp(1.9em, 5.6vw, 4.2em);\n}\n\n.kg-header-card.kg-width-full.kg-layout-split h2.kg-header-card-heading {\n font-size: clamp(1.9em, 4vw, 3.3em);\n}\n\n/* Subheading */\n\n.kg-header-card-subheading {\n margin: 0 0 2em;\n}\n\n.kg-header-card .kg-header-card-subheading {\n max-width: 40em;\n margin: 0;\n font-size: clamp(1.05em, 2vw, 1.4em);\n font-weight: 500;\n line-height: 1.2em;\n}\n\n.kg-header-card h2 + .kg-header-card-subheading {\n margin: 0.6em 0 0;\n}\n\n.kg-header-card .kg-header-card-subheading strong {\n font-weight: 600;\n}\n\n.kg-header-card.kg-width-wide .kg-header-card-subheading {\n font-size: clamp(1.05em, 2vw, 1.55em);\n}\n\n.kg-header-card.kg-width-full .kg-header-card-subheading:not(.kg-layout-split .kg-header-card-subheading) {\n max-width: min(65vmax, 1200px);\n font-size: clamp(1.05em, 2vw, 1.7em);\n}\n\n.kg-header-card.kg-width-full.kg-layout-split .kg-header-card-subheading {\n font-size: clamp(1.05em, 2vw, 1.55em);\n}\n\n.kg-header-card.kg-v2 .kg-header-card-button {\n display: flex;\n position: relative;\n align-items: center;\n height: 2.9em;\n min-height: 46px;\n padding: 0 1.2em;\n outline: none;\n border: none;\n font-size: 1em;\n font-weight: 600;\n line-height: 1em;\n text-align: center;\n text-decoration: none;\n letter-spacing: .2px;\n white-space: nowrap;\n text-overflow: ellipsis;\n border-radius: 3px;\n transition: opacity .2s ease;\n}\n\n.kg-header-card.kg-v2 .kg-header-card-button.kg-style-accent {\n background-color: var(--ghost-accent-color);\n}\n\n.kg-header-card.kg-v2 h2 + .kg-header-card-button,\n.kg-header-card.kg-v2 p + .kg-header-card-button {\n margin: 1.5em 0 0;\n}\n\n.kg-header-card.kg-v2 .kg-header-card-button:hover {\n opacity: 0.85;\n}\n\n.kg-header-card.kg-v2.kg-width-wide .kg-header-card-button {\n font-size: 1.05em;\n}\n\n.kg-header-card.kg-v2.kg-width-wide h2 + .kg-header-card-button,\n.kg-header-card.kg-v2.kg-width-wide p + .kg-header-card-button {\n margin-top: 1.75em;\n}\n\n.kg-header-card.kg-v2.kg-width-full .kg-header-card-button {\n font-size: 1.1em;\n}\n\n.kg-header-card.kg-v2.kg-width-full h2 + .kg-header-card-button,\n.kg-header-card.kg-v2.kg-width-full p + .kg-header-card-button {\n margin-top: 2em;\n}\n\n/* Responsive styles */\n\n@media (max-width: 640px) {\n .kg-layout-split .kg-header-card-content {\n grid-template-columns: 1fr;\n }\n\n .kg-width-wide .kg-header-card-text {\n padding: min(6.4vmax, 120px) min(4vmax, 80px);\n }\n\n .kg-layout-split.kg-content-wide .kg-header-card-text,\n .kg-layout-split.kg-content-wide.kg-swapped .kg-header-card-text {\n padding: min(9.6vmax, 180px) 0;\n }\n\n .kg-header-card.kg-width-full .kg-header-card-subheading:not(.kg-layout-split .kg-header-card-subheading) {\n max-width: unset;\n }\n\n .kg-header-card-content .kg-header-card-image:not(.kg-content-wide .kg-header-card-content .kg-header-card-image) {\n height: auto;\n min-height: unset;\n aspect-ratio: 1 / 1;\n }\n\n .kg-content-wide .kg-header-card-content .kg-header-card-image {\n padding: 1.7em 0 0;\n }\n\n .kg-content-wide.kg-swapped .kg-header-card-content .kg-header-card-image {\n padding: 0 0 1.7em;\n }\n\n .kg-header-card.kg-v2 .kg-header-card-button {\n height: 2.9em;\n }\n\n .kg-header-card.kg-v2.kg-width-wide .kg-header-card-button,\n .kg-header-card.kg-v2.kg-width-full .kg-header-card-button {\n font-size: 1em;\n }\n}\n", et = /* @__PURE__ */ e({ default: () => tt }), tt = ".kg-nft-card,\n.kg-nft-card * {\n box-sizing: border-box;\n}\n\n.kg-nft-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n}\n\n.kg-nft-card a.kg-nft-card-container {\n position: static;\n display: flex;\n flex: auto;\n flex-direction: column;\n text-decoration: none;\n font-family: -apple-system, BlinkMacSystemFont,\n 'avenir next', avenir,\n 'helvetica neue', helvetica,\n ubuntu,\n roboto, noto,\n 'segoe ui', arial,\n sans-serif;\n font-size: 14px;\n font-weight: 400;\n box-shadow: 0 2px 6px -2px rgb(0 0 0 / 10%), 0 0 1px rgb(0 0 0 / 40%);\n width: 100%;\n max-width: 512px;\n color: #222;\n background: #fff;\n border-radius: 5px;\n transition: none;\n}\n\n.kg-nft-card * {\n position: static;\n}\n\n.kg-nft-metadata {\n padding: 20px;\n width: 100%;\n}\n\n.kg-nft-image {\n border-radius: 5px 5px 0 0;\n width: 100%;\n}\n\n.kg-nft-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n}\n\n.kg-nft-header h4.kg-nft-title {\n font-family: inherit;\n font-size: 19px;\n font-weight: 700;\n line-height: 1.3em;\n min-width: unset;\n max-width: unset;\n margin: 0;\n color: #222;\n}\n\n.kg-nft-opensea-logo {\n margin-top: 2px;\n width: 100px;\n object-fit: scale-down;\n}\n\n.kg-nft-creator {\n font-family: inherit;\n line-height: 1.4em;\n margin: 4px 0 0;\n color: #ababab;\n}\n\n.kg-nft-creator span {\n font-weight: 500;\n color: #222;\n}\n\n.kg-nft-card p.kg-nft-description {\n font-family: inherit;\n font-size: 14px;\n line-height: 1.4em;\n margin: 20px 0 0;\n color: #222;\n}", nt = /* @__PURE__ */ e({ default: () => rt }), rt = ".kg-product-card,\n.kg-product-card * {\n box-sizing: border-box;\n}\n\n.kg-product-card {\n display: flex;\n align-items: center;\n flex-direction: column;\n width: 100%;\n}\n\n.kg-product-card-container {\n display: grid;\n grid-template-columns: auto min-content;\n align-items: center;\n grid-row-gap: 16px;\n background: transparent;\n max-width: 550px;\n padding: 20px;\n width: 100%;\n background: #fff;\n color: #222;\n border-radius: 5px;\n box-shadow: inset 0 0 0 1px rgb(124 139 154 / 25%);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n}\n\n.kg-product-card-image {\n grid-column: 1 / 3;\n justify-self: center;\n height: auto;\n}\n\n.kg-product-card-title-container {\n grid-column: 1 / 2;\n}\n\n.kg-product-card h4.kg-product-card-title {\n text-decoration: none;\n font-weight: 600;\n font-size: 21px;\n margin-top: 0;\n margin-bottom: 0;\n line-height: 1.15em;\n}\n\n.kg-product-card-description {\n grid-column: 1 / 3;\n}\n\n.kg-product-card .kg-product-card-description p,\n.kg-product-card .kg-product-card-description ol,\n.kg-product-card .kg-product-card-description ul {\n font-size: 14px;\n line-height: 1.5em;\n opacity: .7;\n margin-bottom: 0;\n}\n\n.kg-product-card .kg-product-card-description p:first-of-type {\n margin-top: -4px;\n}\n\n.kg-product-card .kg-product-card-description p:not(:first-of-type),\n.kg-product-card .kg-product-card-description ul,\n.kg-product-card .kg-product-card-description ol {\n margin-top: 0.95em;\n}\n\n.kg-product-card .kg-product-card-description li+li {\n margin-top: 0.5em;\n}\n\n.kg-product-card-rating {\n display: flex;\n align-items: center;\n grid-column: 2 / 3;\n align-self: start;\n justify-self: end;\n padding-left: 16px;\n}\n\n@media (max-width: 400px) {\n .kg-product-card-title-container {\n grid-column: 1 / 3;\n }\n\n .kg-product-card-rating {\n grid-column: 1 / 3;\n justify-self: start;\n margin-top: -15px;\n padding-left: 0;\n }\n}\n\n.kg-product-card-rating-star {\n height: 20px;\n width: 20px;\n}\n\n.kg-product-card-rating-star svg {\n width: 16px;\n height: 16px;\n fill: currentColor;\n opacity: 0.15;\n}\n\n.kg-product-card-rating-active.kg-product-card-rating-star svg {\n opacity: 1;\n}\n\n.kg-product-card a.kg-product-card-button {\n justify-content: center;\n grid-column: 1 / 3;\n display: flex;\n position: static;\n align-items: center;\n font-size: 14px;\n font-weight: 600;\n line-height: 1em;\n text-decoration: none;\n width: 100%;\n height: 38px;\n border-radius: 6px;\n padding: 0 12px;\n transition: opacity 0.2s ease-in-out;\n}\n\n.kg-product-card a.kg-product-card-btn-accent {\n background-color: var(--ghost-accent-color);\n color: #fff;\n}\n", it = /* @__PURE__ */ e({ default: () => at }), at = ".kg-signup-card {\n position: relative;\n}\n\n.kg-signup-card,\n.kg-signup-card * {\n box-sizing: border-box;\n}\n\n.kg-signup-card a,\n.kg-signup-card a span {\n color: currentColor;\n}\n\n.kg-signup-card.kg-style-accent {\n background-color: var(--ghost-accent-color);\n}\n\n.kg-layout-split .kg-signup-card-content {\n display: grid;\n grid-template-columns: 1fr 1fr;\n}\n\n.kg-signup-card-text {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n height: 100%;\n padding: min(4vmax, 80px);\n background-size: cover;\n background-position: center;\n text-align: left;\n}\n\n.kg-width-wide .kg-signup-card-text {\n padding: min(6.4vmax, 120px);\n}\n\n.kg-width-full .kg-signup-card-text {\n padding: min(12vmax, 260px) 0;\n}\n\n.kg-layout-split .kg-signup-card-text {\n padding: min(12vmax, 260px) min(4vmax, 80px);\n}\n\n.kg-layout-split.kg-content-wide .kg-signup-card-text {\n padding: min(10vmax, 220px) 0 min(10vmax, 220px) min(4vmax, 80px);\n}\n\n.kg-layout-split.kg-content-wide.kg-swapped .kg-signup-card-text {\n padding: min(10vmax, 220px) min(4vmax, 80px) min(10vmax, 220px) 0;\n}\n\n.kg-swapped .kg-signup-card-text {\n grid-row: 1;\n}\n\n.kg-signup-card-text.kg-align-center {\n align-items: center;\n text-align: center;\n}\n\n.kg-signup-card.kg-style-image h2.kg-signup-card-heading,\n.kg-signup-card.kg-style-image .kg-signup-card-subheading,\n.kg-signup-card.kg-style-image .kg-signup-card-button {\n z-index: 999;\n}\n\n/* Background image */\n\n.kg-signup-card > picture > .kg-signup-card-image {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n background-color: #FFFFFF;\n pointer-events: none;\n}\n\n/* Split layout image */\n\n.kg-signup-card-content .kg-signup-card-image {\n width: 100%;\n /* this will force the image to follow the signup card height */\n height: 0;\n min-height: 100%;\n /**/\n object-fit: cover;\n object-position: center;\n}\n\n.kg-content-wide .kg-signup-card-content .kg-signup-card-image {\n height: 100%;\n padding: 5.6em 0;\n object-fit: contain;\n}\n\n/* Heading */\n\n.kg-signup-card h2.kg-signup-card-heading {\n margin: 0;\n font-size: clamp(1.7em, 4vw, 2.5em);\n font-weight: 700;\n line-height: 1.05em;\n letter-spacing: -0.01em;\n}\n\n.kg-signup-card.kg-width-wide h2.kg-signup-card-heading {\n font-size: clamp(1.7em, 5vw, 3.3em);\n}\n\n.kg-signup-card.kg-width-full h2.kg-signup-card-heading {\n font-size: clamp(1.9em, 5.6vw, 4.2em);\n}\n\n.kg-signup-card.kg-width-full.kg-layout-split h2.kg-signup-card-heading {\n font-size: clamp(1.9em, 4vw, 3.3em);\n}\n\n/* Subheading */\n\n.kg-signup-card-subheading {\n margin: 0 0 2em;\n}\n\n.kg-signup-card .kg-signup-card-subheading {\n max-width: 40em;\n margin: 0;\n font-size: clamp(1.05em, 2vw, 1.4em);\n font-weight: 500;\n line-height: 1.2em;\n}\n\n.kg-signup-card h2 + .kg-signup-card-subheading {\n margin: 0.6em 0 0;\n}\n\n.kg-signup-card .kg-signup-card-subheading strong {\n font-weight: 600;\n}\n\n.kg-signup-card.kg-width-wide .kg-signup-card-subheading {\n font-size: clamp(1.05em, 2vw, 1.55em);\n}\n\n.kg-signup-card.kg-width-full .kg-signup-card-subheading:not(.kg-layout-split .kg-signup-card-subheading) {\n max-width: min(65vmax, 1200px);\n font-size: clamp(1.05em, 2vw, 1.7em);\n}\n\n.kg-signup-card.kg-width-full.kg-layout-split .kg-signup-card-subheading {\n font-size: clamp(1.05em, 2vw, 1.55em);\n}\n\n/* Subscribe form */\n\n.kg-signup-card-form {\n position: relative;\n display: flex;\n flex-shrink: 0;\n width: 100%;\n}\n\n.kg-align-center .kg-signup-card-form {\n justify-content: center;\n}\n\n.kg-signup-card-heading + .kg-signup-card-form,\n.kg-signup-card-subheading + .kg-signup-card-form {\n margin: min(2.4vmax, 48px) 0 0;\n}\n\n.kg-width-wide .kg-signup-card-heading + .kg-signup-card-form,\n.kg-width-wide .kg-signup-card-subheading + .kg-signup-card-form {\n margin: min(3.2vmax, 64px) 0 0;\n}\n\n.kg-width-full .kg-signup-card-heading + .kg-signup-card-form,\n.kg-width-full .kg-signup-card-subheading + .kg-signup-card-form {\n margin: min(4vmax, 80px) 0 0;\n}\n\n.kg-signup-card-fields {\n display: flex;\n width: 100%;\n padding: 3px;\n background: #FFFFFF;\n border: 1px solid #E6E6E6;\n border-radius: 4px;\n}\n\n.kg-width-wide .kg-signup-card-fields,\n.kg-width-full .kg-signup-card-fields {\n width: 100%;\n max-width: 500px;\n}\n\n.kg-signup-card-input {\n width: 100%;\n height: 2.9em;\n min-height: 46px;\n margin: 0 3px 0 0;\n padding: 12px 16px;\n border: none;\n background: #FFFFFF;\n font-size: 1.1em;\n}\n\n.kg-signup-card-input:focus,\n.kg-signup-card-input:focus-visible {\n outline: none;\n}\n\n.kg-signup-card-button {\n display: flex;\n position: relative;\n align-items: center;\n height: 2.9em;\n min-height: 46px;\n height: 100%;\n padding: 0 1.2em;\n outline: none;\n border: none;\n font-size: 1em;\n font-weight: 600;\n line-height: 1em;\n text-align: center;\n text-decoration: none;\n letter-spacing: .2px;\n white-space: nowrap;\n text-overflow: ellipsis;\n border-radius: 3px;\n transition: opacity .2s ease;\n cursor: pointer;\n}\n\n.kg-signup-card-button.kg-style-accent {\n background-color: var(--ghost-accent-color);\n}\n\n.kg-signup-card h2 + .kg-signup-card-button,\n.kg-signup-card p + .kg-signup-card-button {\n margin: 1.5em 0 0;\n}\n\n.kg-signup-card .kg-signup-card-button:hover {\n opacity: 0.85;\n}\n\n.kg-signup-card.kg-width-wide .kg-signup-card-button {\n font-size: 1.05em;\n}\n\n.kg-signup-card.kg-width-wide h2 + .kg-signup-card-button,\n.kg-signup-card.kg-width-wide p + .kg-signup-card-button {\n margin-top: 1.75em;\n}\n\n.kg-signup-card.kg-width-full .kg-signup-card-button {\n font-size: 1.1em;\n}\n\n.kg-signup-card.kg-width-full h2 + .kg-signup-card-button,\n.kg-signup-card.kg-width-full p + .kg-signup-card-button {\n margin-top: 2em;\n}\n\n/* Subscribe form states */\n\n.kg-signup-card-success,\n.kg-signup-card-error {\n display: none;\n}\n\n.kg-signup-card-form.success .kg-signup-card-fields {\n display: none;\n}\n\n.kg-signup-card-form.success .kg-signup-card-success {\n display: flex;\n align-items: center;\n height: 3em;\n font-size: 1.25em;\n font-weight: 500;\n line-height: 1.4em;\n}\n\n.kg-signup-card-form.error .kg-signup-card-fields {\n border: 1px solid #FF0000;\n box-shadow: inset 0 0 0 1px rgba(255, 0, 0, 0.2);\n}\n\n.kg-signup-card-form.error .kg-signup-card-error {\n position: absolute;\n bottom: calc(-1rem - 1.6em);\n display: block;\n font-size: inherit;\n}\n\n.kg-signup-card-button-loading {\n position: absolute;\n inset: 0;\n align-items: center;\n justify-content: center;\n display: none;\n}\n\n.kg-signup-card-form.loading .kg-signup-card-button-default {\n color: transparent;\n}\n\n.kg-signup-card-form.loading .kg-signup-card-button-loading {\n display: flex;\n}\n\n/* Disclaimer */\n\n.kg-signup-card-disclaimer {\n margin: 1rem 0 0;\n}\n\n.kg-signup-card-form.success + .kg-signup-card-disclaimer,\n.kg-signup-card-form.error + .kg-signup-card-disclaimer {\n visibility: hidden;\n}\n\n\n/* Responsive styles */\n\n@media (max-width: 640px) {\n .kg-layout-split .kg-signup-card-content {\n grid-template-columns: 1fr;\n }\n\n .kg-width-wide .kg-signup-card-text {\n padding: min(6.4vmax, 120px) min(4vmax, 80px);\n }\n\n .kg-layout-split.kg-content-wide .kg-signup-card-text,\n .kg-layout-split.kg-content-wide.kg-swapped .kg-signup-card-text {\n padding: min(9.6vmax, 180px) 0;\n }\n\n .kg-signup-card.kg-width-full .kg-signup-card-subheading:not(.kg-layout-split .kg-signup-card-subheading) {\n max-width: unset;\n }\n\n .kg-signup-card-content .kg-signup-card-image:not(.kg-content-wide .kg-signup-card-content .kg-signup-card-image) {\n height: auto;\n min-height: unset;\n aspect-ratio: 1 / 1;\n }\n\n .kg-content-wide .kg-signup-card-content .kg-signup-card-image {\n padding: 1.7em 0 0;\n }\n\n .kg-content-wide.kg-swapped .kg-signup-card-content .kg-signup-card-image {\n padding: 0 0 1.7em;\n }\n\n .kg-signup-card-input {\n height: 2.9em;\n padding: 6px 12px;\n font-size: 1em;\n }\n\n .kg-signup-card-button {\n height: 2.9em;\n }\n\n .kg-signup-card.kg-width-wide .kg-signup-card-button,\n .kg-signup-card.kg-width-full .kg-signup-card-button {\n font-size: 1em;\n }\n}\n", ot = /* @__PURE__ */ e({ default: () => st }), st = ".kg-toggle-card,\n.kg-toggle-card * {\n box-sizing: border-box;\n}\n\n.kg-toggle-card {\n background: transparent;\n box-shadow: inset 0 0 0 1px rgba(124, 139, 154, 0.25);\n border-radius: 4px;\n padding: 1.2em;\n}\n\n.kg-toggle-card[data-kg-toggle-state=\"close\"] .kg-toggle-content{\n height: 0;\n overflow: hidden;\n transition: opacity .5s ease, top .35s ease;\n opacity: 0;\n top: -0.5em;\n position: relative;\n}\n\n.kg-toggle-content {\n height: auto;\n opacity: 1;\n transition: opacity 1s ease, top .35s ease;\n top: 0;\n position: relative;\n}\n\n.kg-toggle-card[data-kg-toggle-state=\"close\"] svg {\n transform: unset;\n}\n\n.kg-toggle-heading {\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n}\n\n.kg-toggle-card h4.kg-toggle-heading-text {\n font-size: 1.15em;\n font-weight: 700;\n line-height: 1.3em;\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.kg-toggle-content p:first-of-type {\n margin-top: 0.5em;\n}\n\n.kg-toggle-card .kg-toggle-content p,\n.kg-toggle-card .kg-toggle-content ol,\n.kg-toggle-card .kg-toggle-content ul {\n font-size: 0.95em;\n line-height: 1.5em;\n margin-top: 0.95em;\n margin-bottom: 0;\n}\n\n.kg-toggle-card li + li {\n margin-top: 0.5em;\n}\n\n.kg-toggle-card-icon {\n height: 24px;\n width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: 1em;\n padding: 0;\n background: none;\n border: 0;\n cursor: pointer;\n}\n\n.kg-toggle-heading svg {\n width: 14px;\n color: rgba(124, 139, 154, 0.5);\n transition: all 0.3s;\n transform: rotate(-180deg);\n}\n\n.kg-toggle-heading path {\n fill: none;\n stroke: currentcolor;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 1.5;\n fill-rule: evenodd;\n}\n\n.kg-toggle-card + .kg-toggle-card {\n margin-top: 1em;\n}\n", ct = /* @__PURE__ */ e({ default: () => lt }), lt = ".kg-transistor-card {\n display: flex;\n justify-content: center;\n}\n\n.kg-transistor-placeholder {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2.4rem;\n width: 100%;\n max-width: 100%;\n padding: 3rem 2.4rem;\n border: 1px solid rgba(255, 255, 255, 0.14);\n border: 1px solid color-mix(in srgb, currentColor 14%, transparent);\n border-radius: 12px;\n background: rgba(255, 255, 255, 0.04);\n background: color-mix(in srgb, currentColor 4%, transparent);\n color: inherit;\n text-align: center;\n box-sizing: border-box;\n}\n\n.kg-transistor-icon {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 116px;\n height: 116px;\n border-radius: 14px;\n background: var(--ghost-accent-color, #b8a5ac);\n color: #fff;\n}\n\n.kg-transistor-icon svg {\n display: block;\n width: 56px;\n height: 56px;\n}\n\n.kg-transistor-content {\n min-width: 0;\n max-width: 640px;\n}\n\n.kg-transistor-title {\n margin: 0;\n color: inherit;\n font-size: 2.3rem;\n font-weight: 600;\n line-height: 1.2;\n}\n\n.kg-transistor-description {\n margin-top: 1.6rem;\n color: inherit;\n font-size: 1.6rem;\n line-height: 1.5;\n opacity: 0.65;\n}\n\n@media (max-width: 640px) {\n .kg-transistor-placeholder {\n gap: 1.6rem;\n padding: 2.4rem 1.8rem;\n }\n\n .kg-transistor-icon {\n width: 88px;\n height: 88px;\n border-radius: 12px;\n }\n\n .kg-transistor-icon svg {\n width: 44px;\n height: 44px;\n }\n\n .kg-transistor-title {\n font-size: 1.8rem;\n }\n\n .kg-transistor-description {\n margin-top: 1rem;\n font-size: 1.45rem;\n }\n}\n", ut = /* @__PURE__ */ e({ default: () => dt }), dt = ".kg-video-card,\n.kg-video-card * {\n box-sizing: border-box;\n}\n\n.kg-video-card {\n position: relative;\n --seek-before-width: 0%;\n --volume-before-width: 100%;\n --buffered-width: 0%;\n}\n\n.kg-video-card video {\n display: block;\n max-width: 100%;\n height: auto;\n}\n\n.kg-video-container {\n position: relative;\n height: 0;\n width: 100%;\n overflow: hidden;\n}\n\n.kg-video-container video {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.kg-video-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n background-image: linear-gradient(180deg,rgba(0,0,0,0.3) 0,transparent 70%,transparent 100%);\n z-index: 999;\n transition: opacity .2s ease-in-out;\n}\n\n.kg-video-large-play-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 72px;\n height: 72px;\n padding: 0;\n background: rgba(0, 0, 0, 0.5);\n border-radius: 50%;\n transition: opacity .2s ease-in-out;\n}\n\n.kg-video-large-play-icon svg {\n width: 20px;\n height: auto;\n margin-left: 2px;\n fill: #fff;\n}\n\n.kg-video-player-container {\n position: absolute;\n bottom: -1px;\n left: 0;\n right: 0;\n width: 100%;\n height: 80px;\n background: linear-gradient(rgba(0,0,0,0), rgba(0,0,0,.5));\n z-index: 999;\n transition: opacity .2s ease-in-out;\n}\n\n.kg-video-player {\n position: absolute;\n bottom: 0;\n display: flex;\n align-items: center;\n width: 100%;\n z-index: 9999;\n padding: 12px 16px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n background: rgba(0,0,0,.5);\n}\n\n.kg-video-current-time {\n min-width: 38px;\n padding: 0 4px;\n color: #fff;\n font-family: inherit;\n font-size: 12.5px;\n font-weight: 500;\n line-height: 1.4em;\n white-space: nowrap;\n}\n\n.kg-video-time {\n color: rgba(255, 255, 255, 0.6);\n font-family: inherit;\n font-size: 12.5px;\n font-weight: 500;\n line-height: 1.4em;\n white-space: nowrap;\n}\n\n.kg-video-duration {\n padding: 0 4px;\n}\n\n.kg-video-play-icon,\n.kg-video-pause-icon {\n position: relative;\n padding: 0px 4px 0 0;\n font-size: 0;\n background: transparent;\n}\n\n.kg-video-hide {\n display: none !important;\n}\n\n.kg-video-hide-animated {\n opacity: 0 !important;\n transition: opacity .2s ease-in-out;\n cursor: initial;\n}\n\n.kg-video-play-icon svg,\n.kg-video-pause-icon svg {\n width: 14px;\n height: 14px;\n fill: #fff;\n}\n\n.kg-video-seek-slider {\n flex-grow: 1;\n margin: 0 4px;\n}\n\n@media (max-width: 520px) {\n .kg-video-seek-slider {\n display: none;\n }\n}\n\n.kg-video-playback-rate {\n min-width: 37px;\n padding: 0 4px;\n color: #fff;\n font-family: inherit;\n font-size: 12.5px;\n font-weight: 600;\n line-height: 1.4em;\n text-align: left;\n background: transparent;\n white-space: nowrap;\n}\n\n@media (max-width: 520px) {\n .kg-video-playback-rate {\n padding-left: 8px;\n }\n}\n\n.kg-video-mute-icon,\n.kg-video-unmute-icon {\n position: relative;\n bottom: -1px;\n padding: 0 4px;\n font-size: 0;\n background: transparent;\n}\n\n@media (max-width: 520px) {\n .kg-video-mute-icon,\n .kg-video-unmute-icon {\n margin-left: auto;\n }\n}\n\n.kg-video-mute-icon svg,\n.kg-video-unmute-icon svg {\n width: 16px;\n height: 16px;\n fill: #fff;\n}\n\n.kg-video-volume-slider {\n width: 80px;\n}\n\n@media (max-width: 300px) {\n .kg-video-volume-slider {\n display: none;\n }\n}\n\n.kg-video-seek-slider::before {\n content: \"\";\n position: absolute;\n left: 0;\n width: var(--seek-before-width) !important;\n height: 4px;\n cursor: pointer;\n background-color: #EBEEF0;\n border-radius: 2px;\n}\n\n.kg-video-volume-slider::before {\n content: \"\";\n position: absolute;\n left: 0;\n width: var(--volume-before-width) !important;\n height: 4px;\n cursor: pointer;\n background-color: #EBEEF0;\n border-radius: 2px;\n}\n\n/* Resetting browser styles\n/* --------------------------------------------------------------- */\n\n.kg-video-card input[type=range] {\n position: relative;\n -webkit-appearance: none;\n background: transparent;\n}\n\n.kg-video-card input[type=range]:focus {\n outline: none;\n}\n\n.kg-video-card input[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n}\n\n.kg-video-card input[type=range]::-ms-track {\n cursor: pointer;\n border-color: transparent;\n color: transparent;\n background: transparent;\n}\n\n.kg-video-card button {\n display: flex;\n align-items: center;\n border: 0;\n cursor: pointer;\n}\n\n.kg-video-card input[type=\"range\"] {\n height: auto;\n padding: 0;\n border: 0;\n}\n\n/* Chrome & Safari styles\n/* --------------------------------------------------------------- */\n\n.kg-video-card input[type=\"range\"]::-webkit-slider-runnable-track {\n width: 100%;\n height: 4px;\n cursor: pointer;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 2px;\n}\n\n.kg-video-card input[type=\"range\"]::-webkit-slider-thumb {\n position: relative;\n box-sizing: content-box;\n width: 13px;\n height: 13px;\n margin: -5px 0 0 0;\n border: 0;\n cursor: pointer;\n background: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px rgba(0,0,0,.08), 0 1px 4px rgba(0,0,0,0.24);\n}\n\n.kg-video-card input[type=\"range\"]:active::-webkit-slider-thumb {\n transform: scale(1.2);\n}\n\n/* Firefox styles\n/* --------------------------------------------------------------- */\n\n.kg-video-card input[type=\"range\"]::-moz-range-track {\n width: 100%;\n height: 4px;\n cursor: pointer;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 2px;\n}\n\n.kg-video-card input[type=\"range\"]::-moz-range-progress {\n background: #EBEEF0;\n border-radius: 2px;\n}\n\n.kg-video-card input[type=\"range\"]::-moz-range-thumb {\n box-sizing: content-box;\n width: 13px;\n height: 13px;\n border: 0;\n cursor: pointer;\n background: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px rgba(0,0,0,.08), 0 1px 4px rgba(0,0,0,0.24);\n}\n\n.kg-video-card input[type=\"range\"]:active::-moz-range-thumb {\n transform: scale(1.2);\n}\n\n/* Edge & IE styles\n/* --------------------------------------------------------------- */\n\n.kg-video-card input[type=\"range\"]::-ms-track {\n width: 100%;\n height: 3px;\n border: solid transparent;\n color: transparent;\n cursor: pointer;\n background: transparent;\n}\n\n.kg-video-card input[type=\"range\"]::-ms-fill-lower {\n background: #fff;\n}\n\n.kg-video-card input[type=\"range\"]::-ms-fill-upper {\n background: #EBEEF0;\n}\n\n.kg-video-card input[type=\"range\"]::-ms-thumb {\n box-sizing: content-box;\n width: 13px;\n height: 13px;\n border: 0;\n cursor: pointer;\n background: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px rgba(0,0,0,.08), 0 1px 4px rgba(0,0,0,0.24);\n}\n\n.kg-video-card input[type=\"range\"]:active::-ms-thumb {\n transform: scale(1.2);\n}\n\n", ft = /* #__PURE__ */ Object.assign({
341
+ "../../ghost/core/core/frontend/src/cards/js/audio.js": ke,
342
+ "../../ghost/core/core/frontend/src/cards/js/gallery.js": je,
343
+ "../../ghost/core/core/frontend/src/cards/js/toggle.js": Ne,
344
+ "../../ghost/core/core/frontend/src/cards/js/video.js": Fe
345
+ }), pt = /* #__PURE__ */ Object.assign({
346
+ "../../ghost/core/core/frontend/src/cards/css/audio.css": Le,
347
+ "../../ghost/core/core/frontend/src/cards/css/blockquote.css": ze,
348
+ "../../ghost/core/core/frontend/src/cards/css/bookmark.css": Be,
349
+ "../../ghost/core/core/frontend/src/cards/css/button.css": Y,
350
+ "../../ghost/core/core/frontend/src/cards/css/callout.css": Ue,
351
+ "../../ghost/core/core/frontend/src/cards/css/collection.css": We,
352
+ "../../ghost/core/core/frontend/src/cards/css/cta.css": Ke,
353
+ "../../ghost/core/core/frontend/src/cards/css/file.css": qe,
354
+ "../../ghost/core/core/frontend/src/cards/css/gallery.css": Ye,
355
+ "../../ghost/core/core/frontend/src/cards/css/header.css": Xe,
356
+ "../../ghost/core/core/frontend/src/cards/css/header_v2.css": Qe,
357
+ "../../ghost/core/core/frontend/src/cards/css/nft.css": et,
358
+ "../../ghost/core/core/frontend/src/cards/css/product.css": nt,
359
+ "../../ghost/core/core/frontend/src/cards/css/signup.css": it,
360
+ "../../ghost/core/core/frontend/src/cards/css/toggle.css": ot,
361
+ "../../ghost/core/core/frontend/src/cards/css/transistor.css": ct,
362
+ "../../ghost/core/core/frontend/src/cards/css/video.css": ut
363
+ }), mt = Object.values(ft).map((e) => e.default).join("\n\n"), ht = Object.values(pt).map((e) => e.default).join("\n\n");
364
+ //#endregion
365
+ //#region src/views/inbox/components/reader.tsx
366
+ i();
367
+ var gt = "gh-sensitive-media-hidden", _t = "audio, canvas, embed, iframe, img, object, picture, source, svg, video", vt = ({ postUrl: e, heading: r, image: i, excerpt: c, authors: l, html: u, hideMedia: d = !1, backgroundColor: f, fontSize: p, fontStyle: m, onHeadingsExtracted: h, onIframeLoad: g, onLoadingChange: _, isPopoverOpen: v }) => {
368
+ let y = s(null), [b, x] = n(!0), [S, ee] = n("0px"), C = s(null), w = document.documentElement.classList.contains("dark") && f === "SYSTEM" || f === "DARK", T = Oe(), E = typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(hover: none) and (pointer: coarse)").matches, D = t(() => fe(me(E ? L(u) : u)), [u, E]), O = a(() => {
369
+ let e = y.current, t = e?.contentDocument;
370
+ if (!t) return;
371
+ t.documentElement.classList.toggle(gt, d);
372
+ let n = e.contentWindow;
373
+ n && typeof n.resizeIframe == "function" && n.resizeIframe();
374
+ }, [d]), k = `
375
+ <html class="${d ? `${gt} ` : ""}has-${w ? "light" : "dark"}-text has-${m}-body ${f === "SEPIA" && "has-sepia-bg"}">
376
+ <head>
377
+ ${T}
378
+ <style>
379
+ :root {
380
+ --font-size: ${p};
381
+ }
382
+ body {
383
+ margin: 0;
384
+ padding: 0;
385
+ overflow-y: hidden;
386
+ }
387
+ .has-sepia-bg {
388
+ --background-color: #FCF8F1;
389
+ }
390
+ .${gt} .gh-article-image,
391
+ .${gt} .gh-content :is(${_t}) {
392
+ display: none !important;
393
+ }
394
+ </style>
395
+ <style>
396
+ ${ht}
397
+ </style>
398
+
399
+ <script>
400
+ function resizeIframe() {
401
+ const height = document.body.scrollHeight;
402
+ window.parent.postMessage({
403
+ type: 'resize',
404
+ bodyHeight: height,
405
+ isLoaded: true
406
+ }, '*');
407
+ }
408
+
409
+ // Initialize resize observers
410
+ function setupResizeObservers() {
411
+ // ResizeObserver for overall size changes
412
+ const resizeObserver = new ResizeObserver(() => {
413
+ resizeIframe();
414
+ });
415
+ resizeObserver.observe(document.body);
416
+
417
+ // MutationObserver for DOM changes
418
+ const mutationObserver = new MutationObserver(() => {
419
+ resizeIframe();
420
+ });
421
+ mutationObserver.observe(document.body, {
422
+ childList: true,
423
+ subtree: true,
424
+ attributes: true
425
+ });
426
+
427
+ // Handle window resize
428
+ window.addEventListener('resize', resizeIframe);
429
+
430
+ // Initial resize
431
+ resizeIframe();
432
+
433
+ // Clean up function
434
+ return () => {
435
+ resizeObserver.disconnect();
436
+ mutationObserver.disconnect();
437
+ window.removeEventListener('resize', resizeIframe);
438
+ };
439
+ }
440
+
441
+ // Wait for images to load
442
+ function waitForImages() {
443
+ const images = document.getElementsByTagName('img');
444
+ Promise.all(Array.from(images).map(img => {
445
+ if (img.complete) return Promise.resolve();
446
+ return new Promise(resolve => {
447
+ img.onload = resolve;
448
+ img.onerror = resolve;
449
+ });
450
+ })).then(resizeIframe);
451
+ }
452
+
453
+ // Handle external resize triggers
454
+ window.addEventListener('message', (event) => {
455
+ if (event.data.type === 'triggerResize') {
456
+ resizeIframe();
457
+ }
458
+ });
459
+
460
+ // Initialize everything once DOM is ready
461
+ document.addEventListener('DOMContentLoaded', () => {
462
+ setupResizeObservers();
463
+ waitForImages();
464
+ });
465
+ <\/script>
466
+
467
+ <!-- Reframe.js — a plugin that makes iframes and videos responsive -->
468
+ <script>!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).reframe=t()}(this,function(){"use strict";function t(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;for(var i=Array(e),o=0,t=0;t<n;t++)for(var r=arguments[t],f=0,d=r.length;f<d;f++,o++)i[o]=r[f];return i}return function(e,s){return void 0===s&&(s="js-reframe"),("string"==typeof e?t(document.querySelectorAll(e)):"length"in e?t(e):[e]).forEach(function(e){var t,n,i,o,r,f,d,l;-1!==e.className.split(" ").indexOf(s)||-1<e.style.width.indexOf("%")||(i=e.getAttribute("height")||e.offsetHeight,o=e.getAttribute("width")||e.offsetWidth,r=("string"==typeof i?parseInt(i):i)/("string"==typeof o?parseInt(o):o)*100,(f=document.createElement("div")).className=s,(d=f.style).position="relative",d.width="100%",d.paddingTop=r+"%",(l=e.style).position="absolute",l.width="100%",l.height="100%",l.left="0",l.top="0",null!==(t=e.parentNode)&&void 0!==t&&t.insertBefore(f,e),null!==(n=e.parentNode)&&void 0!==n&&n.removeChild(e),f.appendChild(e))})}});<\/script>
469
+ </head>
470
+ <body>
471
+ <header class='gh-article-header gh-canvas'>
472
+ <h1 class='gh-article-title is-title' data-test-article-heading>${F(r)}</h1>
473
+ ${c ? `<p class='gh-article-excerpt'>${F(c)}</p>` : ""}
474
+ <a href="${e && I(e) ? F(e) : "#"}" target="_blank" rel="noopener noreferrer" class="gh-article-meta">
475
+ ${l && l.length > 0 ? `
476
+ <div class="gh-article-author-image">
477
+ ${l.map((e) => `
478
+ <span>
479
+ ${e.profile_image ? `<img src="${F(e.profile_image)}" alt="${F(e.name)}">` : "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" height=\"24\" width=\"24\"><path d=\"M6.75 6a5.25 5.25 0 1 0 10.5 0 5.25 5.25 0 1 0 -10.5 0\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"></path><path d=\"M2.25 23.25a9.75 9.75 0 0 1 19.5 0\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"></path></svg>"}
480
+ </span>
481
+ `).join("")}
482
+ </div>
483
+ ` : ""}
484
+ <div class="gh-article-meta-wrapper">
485
+ ${l && l.length > 0 ? `
486
+ <span class="gh-article-author-name">
487
+ ${l.length > 1 ? `${F(l[0].name)} and ${l.length - 1} ${l.length - 1 == 1 ? "other" : "others"}` : F(l[0].name)}
488
+ </span>
489
+ ` : ""}
490
+ <span class="gh-article-source">${e && I(e) ? F(new URL(e).hostname) : ""} <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link-icon lucide-external-link"><path d="M15 3h6v6"/><path d="M10 14 21 3"/><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/></svg></span>
491
+ </div>
492
+ </a>
493
+ ${i ? `
494
+ <figure class='gh-article-image'>
495
+ <img src='${F(i)}' alt='${F(r)}' />
496
+ </figure>
497
+ ` : ""}
498
+ </header>
499
+ <div class='gh-content gh-canvas is-body'>
500
+ ${D}
501
+ </div>
502
+ <script>
503
+ (function () {
504
+ const sources = [
505
+ '.gh-content iframe[src*="youtube.com"]',
506
+ '.gh-content iframe[src*="youtube-nocookie.com"]',
507
+ '.gh-content iframe[src*="player.vimeo.com"]',
508
+ '.gh-content iframe[src*="kickstarter.com"][src*="video.html"]',
509
+ '.gh-content object',
510
+ '.gh-content embed',
511
+ ];
512
+ reframe(document.querySelectorAll(sources.join(',')));
513
+ })();
514
+ <\/script>
515
+ <script>
516
+ ${mt}
517
+ <\/script>
518
+ </body>
519
+ </html>
520
+ `;
521
+ return o(() => {
522
+ let t = y.current;
523
+ if (!t) return;
524
+ let n = (e) => {
525
+ if (e.data.type === "resize") {
526
+ let n = `${e.data.bodyHeight + 24}px`;
527
+ ee(n), t.style.height = n, e.data.isLoaded && (O(), x(!1));
528
+ }
529
+ }, a = (e) => {
530
+ if (e.key === "Escape") {
531
+ e.preventDefault(), e.stopPropagation();
532
+ let t = new KeyboardEvent("keydown", {
533
+ key: "Escape",
534
+ code: "Escape",
535
+ keyCode: 27,
536
+ which: 27,
537
+ bubbles: !0,
538
+ cancelable: !0
539
+ });
540
+ document.dispatchEvent(t);
541
+ }
542
+ }, o = () => {
543
+ let e = t.contentWindow;
544
+ e && e.addEventListener("keydown", a), O();
545
+ };
546
+ t.addEventListener("load", o), window.addEventListener("message", n);
547
+ let s = [
548
+ D,
549
+ r,
550
+ c ?? "",
551
+ i ?? "",
552
+ e ?? "",
553
+ (l ?? []).map((e) => `${e.name}\0${e.profile_image}`).join("\n")
554
+ ].join("\n");
555
+ return C.current !== s && (C.current = s, x(!0), t.srcdoc = k), () => {
556
+ window.removeEventListener("message", n), t.removeEventListener("load", o);
557
+ let e = t.contentWindow;
558
+ e && e.removeEventListener("keydown", a);
559
+ };
560
+ }, [
561
+ D,
562
+ l,
563
+ c,
564
+ r,
565
+ k,
566
+ i,
567
+ e,
568
+ O
569
+ ]), o(() => {
570
+ O();
571
+ }, [O]), o(() => {
572
+ let e = y.current;
573
+ if (!e) return;
574
+ let t = e.contentDocument || e.contentWindow?.document;
575
+ if (!t) return;
576
+ let n = t.documentElement;
577
+ n.style.setProperty("--font-size", p), n.classList.remove("has-sans-body", "has-serif-body"), n.classList.add(`has-${m}-body`), n.classList.remove("has-dark-text", "has-light-text"), n.classList.add(`has-${w ? "light" : "dark"}-text`), f === "SEPIA" ? n.classList.add("has-sepia-bg") : n.classList.remove("has-sepia-bg");
578
+ let r = e.contentWindow;
579
+ if (r && typeof r.resizeIframe == "function") r.resizeIframe();
580
+ else {
581
+ let e = new Event("resize");
582
+ t.dispatchEvent(e);
583
+ }
584
+ }, [
585
+ p,
586
+ m,
587
+ f,
588
+ w
589
+ ]), o(() => {
590
+ let e = y.current;
591
+ if (!e) return;
592
+ let t = () => {
593
+ if (!e.contentDocument) return;
594
+ let t = Array.from(e.contentDocument.querySelectorAll(".gh-content > :is(h2, h3, h4, h5, h6)[id]"));
595
+ if (t.length === 0) return;
596
+ let n = Math.min(...t.map((e) => parseInt(e.tagName[1]))), r = t.map((e, t) => {
597
+ let r = `heading-${t}`;
598
+ e.id = r;
599
+ let i = parseInt(e.tagName[1]) - n + 1;
600
+ return {
601
+ id: r,
602
+ text: e.textContent || "",
603
+ level: i,
604
+ element: e
605
+ };
606
+ });
607
+ h?.(r), g?.(e);
608
+ };
609
+ return e.addEventListener("load", t), () => e.removeEventListener("load", t);
610
+ }, [h, g]), o(() => {
611
+ _?.(b);
612
+ }, [b, _]), /* @__PURE__ */ (0, H.jsx)("div", {
613
+ className: "w-full pb-6",
614
+ children: /* @__PURE__ */ (0, H.jsxs)("div", {
615
+ className: "relative -mx-6",
616
+ children: [b && /* @__PURE__ */ (0, H.jsxs)("div", {
617
+ className: "mx-auto mt-6 w-full max-w-[640px] max-lg:px-4",
618
+ children: [
619
+ /* @__PURE__ */ (0, H.jsxs)("div", {
620
+ className: "mb-6 flex flex-col gap-2",
621
+ children: [/* @__PURE__ */ (0, H.jsx)(R, { className: "h-8" }), /* @__PURE__ */ (0, H.jsx)(R, { className: "h-8 w-full max-w-md" })]
622
+ }),
623
+ /* @__PURE__ */ (0, H.jsx)(R, {
624
+ className: "mt-2 h-4",
625
+ count: 4,
626
+ randomize: !0
627
+ }),
628
+ /* @__PURE__ */ (0, H.jsx)(R, { className: "mt-8 h-[400px]" }),
629
+ /* @__PURE__ */ (0, H.jsx)(R, {
630
+ className: "mt-2 h-4",
631
+ containerClassName: "block mt-7 mb-4",
632
+ count: 8,
633
+ randomize: !0
634
+ })
635
+ ]
636
+ }), /* @__PURE__ */ (0, H.jsx)("iframe", {
637
+ ref: y,
638
+ id: "gh-ap-article-iframe",
639
+ style: {
640
+ width: "100%",
641
+ border: "none",
642
+ height: S,
643
+ overflow: "hidden",
644
+ opacity: +!b,
645
+ transition: "opacity 0.2s ease-in-out",
646
+ pointerEvents: v ? "none" : "auto"
647
+ },
648
+ title: "Embedded Content"
649
+ })]
650
+ })
651
+ });
652
+ }, yt = () => /* @__PURE__ */ (0, H.jsx)("div", { className: "h-px bg-black/[8%] dark:bg-gray-950" });
653
+ function bt(e) {
654
+ return new DOMParser().parseFromString(e, "text/html").querySelector(_t) !== null;
655
+ }
656
+ var $ = /* @__PURE__ */ new Map(), xt = ({ postId: e = null, onClose: i }) => {
657
+ let { backgroundColor: c, currentFontSizeIndex: l, fontStyle: u, fontSize: m, handleColorChange: h, setFontStyle: _, increaseFontSize: b, decreaseFontSize: x, resetFontSize: ee } = xe(), w = s(null), [O, A] = n(!1), [te, ae] = n(!1), [oe, j] = n(/* @__PURE__ */ new Set()), [ce, le] = n(/* @__PURE__ */ new Set()), [ue, de] = n(/* @__PURE__ */ new Set()), [N, fe] = n(!1), P = s(null), me = s(null), { post: F, processedReplies: I, isLoading: L, loadMoreChildren: z, loadMoreChildReplies: be, hasMoreChildren: B, hasMoreChildReplies: V } = ye(e ?? "", { includeAncestors: !1 }), U = F, W = U?.object, G = U?.actor, K = U?.object?.metadata?.ghostAuthors, Ce = W?.replyCount ?? 0, Te = W?.content ?? "", Ee = typeof W?.image == "string" ? W.image : W?.image?.url, De = t(() => bt(Te), [Te]), { contentWarning: Oe, shouldHideContentWarning: ke, shouldHideSensitiveMedia: Ae, canHideSensitiveMedia: je, revealSensitiveMedia: Me, hideSensitiveMedia: Ne, revealContentWarning: Pe } = C({
658
+ contentWarning: W?.contentWarning,
659
+ sensitive: W?.sensitive,
660
+ hasMedia: !!Ee || (W ? ne(W) !== null : !1) || De,
661
+ resetKey: e ?? void 0
662
+ });
663
+ o(() => {
664
+ if (!B) return;
665
+ P.current && P.current.disconnect();
666
+ let e = w.current;
667
+ if (e) return P.current = new IntersectionObserver(async (e) => {
668
+ if (e[0].isIntersecting && B && !N) {
669
+ fe(!0);
670
+ try {
671
+ await z();
672
+ } catch (e) {
673
+ console.error("Failed to load more top-level replies:", e);
674
+ } finally {
675
+ fe(!1);
676
+ }
677
+ }
678
+ }, {
679
+ root: e,
680
+ rootMargin: "200px"
681
+ }), me.current && P.current.observe(me.current), () => {
682
+ P.current && P.current.disconnect();
683
+ };
684
+ }, [
685
+ B,
686
+ N,
687
+ z
688
+ ]);
689
+ function Fe() {}
690
+ function Ie(e) {
691
+ j((t) => {
692
+ let n = new Set(t);
693
+ return n.has(e) ? n.delete(e) : (n.add(e), le((t) => {
694
+ let n = new Set(t);
695
+ return n.add(e), n;
696
+ })), n;
697
+ });
698
+ }
699
+ async function Le(e, t) {
700
+ if (!ue.has(e)) {
701
+ de((t) => new Set(t).add(e));
702
+ try {
703
+ be && await be(t);
704
+ } catch (e) {
705
+ console.error("Failed to load more replies for chain:", e);
706
+ } finally {
707
+ de((t) => {
708
+ let n = new Set(t);
709
+ return n.delete(e), n;
710
+ });
711
+ }
712
+ }
713
+ }
714
+ let Re = () => {}, ze = s(null), J = "640px", [Be, Ve] = n(0), [Y, He] = n(!0), [Ue] = k(Ve, 100);
715
+ o(() => {
716
+ let e = w.current, t = document.getElementById("object-content"), n = () => {
717
+ if (Y || !e || !t) return;
718
+ let n = t.getBoundingClientRect(), r = e.getBoundingClientRect();
719
+ if (n.height <= r.height) {
720
+ Ue(100);
721
+ return;
722
+ }
723
+ let i = Math.max(0, r.top - n.top), a = t.offsetHeight - e.offsetHeight, o = Math.min(Math.max(i / a * 100, 0), 100), s = Math.round(o / 1) * 1;
724
+ Ue(s);
725
+ };
726
+ if (Y) return;
727
+ let r = new MutationObserver(n);
728
+ return t && r.observe(t, {
729
+ childList: !0,
730
+ subtree: !0,
731
+ characterData: !0
732
+ }), e?.addEventListener("scroll", n), n(), () => {
733
+ e?.removeEventListener("scroll", n), r.disconnect();
734
+ };
735
+ }, [Y, Ue]);
736
+ let [X, We] = n([]), [Ge, Ke] = n(null), [Z, qe] = n(null), Je = a((e) => {
737
+ We(e);
738
+ }, []), Ye = a((e) => {
739
+ qe(e);
740
+ }, []);
741
+ o(() => {
742
+ if (!Z?.contentDocument || !X.length) return;
743
+ let e = setTimeout(() => {
744
+ let e = w.current;
745
+ if (!e) return;
746
+ let t = () => {
747
+ let t = Z.contentDocument;
748
+ if (!t || !t.documentElement) return;
749
+ let n = e.scrollTop, r = X.map((e) => t.getElementById(e.id)).filter((e) => e !== null).map((e) => ({
750
+ element: e,
751
+ id: e.id,
752
+ top: e.offsetTop
753
+ }));
754
+ if (!r.length) return;
755
+ let i = null;
756
+ for (let e of r) if (e.top - 100 <= n) i = e;
757
+ else break;
758
+ Ke(i?.id || null);
759
+ };
760
+ return e.addEventListener("scroll", t), t(), () => {
761
+ e.removeEventListener("scroll", t);
762
+ };
763
+ }, 100);
764
+ return () => clearTimeout(e);
765
+ }, [
766
+ Z,
767
+ X,
768
+ Ge
769
+ ]);
770
+ let Q = se();
771
+ return o(() => {
772
+ let t = w.current;
773
+ return () => {
774
+ t && e && $.set(e, t.scrollTop);
775
+ };
776
+ }, [e]), o(() => {
777
+ if (!Y && !L && e && w.current) {
778
+ let t = $.get(e);
779
+ t !== void 0 && t > 0 && setTimeout(() => {
780
+ w.current && (w.current.scrollTop = t);
781
+ }, 100);
782
+ }
783
+ }, [
784
+ Y,
785
+ L,
786
+ e
787
+ ]), L ? /* @__PURE__ */ (0, H.jsx)("div", {
788
+ className: `max-h-full overflow-auto rounded-md ${c === "DARK" && "dark"} ${(c === "LIGHT" || c === "SEPIA") && "light"} ${q[c].background}`,
789
+ children: /* @__PURE__ */ (0, H.jsx)("div", {
790
+ className: "flex h-full flex-col",
791
+ children: /* @__PURE__ */ (0, H.jsxs)("div", {
792
+ className: "relative flex-1",
793
+ children: [/* @__PURE__ */ (0, H.jsx)("div", {
794
+ className: `sticky top-0 z-50 flex h-[102px] items-center justify-center rounded-t-md border-b max-md:h-[68px] ${q[c].background} ${q[c].border}`,
795
+ children: /* @__PURE__ */ (0, H.jsxs)("div", {
796
+ className: "grid w-full px-8 max-lg:px-4",
797
+ style: { gridTemplateColumns: `1fr minmax(0,${J}) 1fr` },
798
+ children: [
799
+ /* @__PURE__ */ (0, H.jsx)("div", {
800
+ className: "flex items-center",
801
+ children: /* @__PURE__ */ (0, H.jsx)(f, {
802
+ className: q[c].button,
803
+ onClick: i
804
+ })
805
+ }),
806
+ /* @__PURE__ */ (0, H.jsxs)("div", {
807
+ className: "col-[2/3] mx-auto flex w-full items-center gap-3 max-md:hidden",
808
+ children: [/* @__PURE__ */ (0, H.jsx)(R, { className: "size-10 rounded-full" }), /* @__PURE__ */ (0, H.jsxs)("div", {
809
+ className: "grow pt-1",
810
+ children: [/* @__PURE__ */ (0, H.jsx)(R, { className: "w-full" }), /* @__PURE__ */ (0, H.jsx)(R, { className: "w-2/3" })]
811
+ })]
812
+ }),
813
+ /* @__PURE__ */ (0, H.jsx)("div", {
814
+ className: "col-[3/4] flex items-center justify-end gap-2",
815
+ children: /* @__PURE__ */ (0, H.jsx)(Se, {
816
+ backgroundColor: c,
817
+ currentFontSizeIndex: l,
818
+ fontStyle: u,
819
+ onColorChange: h,
820
+ onDecreaseFontSize: x,
821
+ onFontStyleChange: _,
822
+ onIncreaseFontSize: b,
823
+ onOpenChange: A,
824
+ onResetFontSize: ee
825
+ })
826
+ })
827
+ ]
828
+ })
829
+ }), /* @__PURE__ */ (0, H.jsx)("div", {
830
+ className: "relative flex-1 max-lg:px-4",
831
+ children: /* @__PURE__ */ (0, H.jsxs)("div", {
832
+ className: "mx-auto mt-11 w-full max-w-[640px]",
833
+ children: [
834
+ /* @__PURE__ */ (0, H.jsxs)("div", {
835
+ className: "mb-6 flex flex-col gap-2",
836
+ children: [/* @__PURE__ */ (0, H.jsx)(R, { className: "h-8" }), /* @__PURE__ */ (0, H.jsx)(R, { className: "h-8 w-full max-w-md" })]
837
+ }),
838
+ /* @__PURE__ */ (0, H.jsx)(R, {
839
+ className: "mt-2 h-4",
840
+ count: 4,
841
+ randomize: !0
842
+ }),
843
+ /* @__PURE__ */ (0, H.jsx)(R, { className: "mt-8 h-[400px]" }),
844
+ /* @__PURE__ */ (0, H.jsx)(R, {
845
+ className: "mt-2 h-4",
846
+ containerClassName: "block mt-7 mb-4",
847
+ count: 8,
848
+ randomize: !0
849
+ })
850
+ ]
851
+ })
852
+ })]
853
+ })
854
+ })
855
+ }) : F ? /* @__PURE__ */ (0, H.jsx)("div", {
856
+ ref: w,
857
+ className: `max-h-full overflow-auto rounded-md ${c === "DARK" && "dark"} ${(c === "LIGHT" || c === "SEPIA") && "light"} ${q[c].background}`,
858
+ "data-scrollable-container": !0,
859
+ children: /* @__PURE__ */ (0, H.jsx)(H.Fragment, { children: /* @__PURE__ */ (0, H.jsxs)("div", {
860
+ className: "flex h-full flex-col",
861
+ children: [/* @__PURE__ */ (0, H.jsxs)("div", {
862
+ className: "relative flex-1",
863
+ children: [/* @__PURE__ */ (0, H.jsx)("div", {
864
+ className: `sticky top-0 z-50 flex h-[102px] items-center justify-center rounded-t-md border-b max-md:h-[68px] ${q[c].background} ${q[c].border}`,
865
+ children: /* @__PURE__ */ (0, H.jsxs)("div", {
866
+ className: "grid w-full px-8 max-lg:px-4",
867
+ style: { gridTemplateColumns: `1fr minmax(0,${J}) 1fr` },
868
+ children: [
869
+ /* @__PURE__ */ (0, H.jsx)("div", {
870
+ className: "flex items-center",
871
+ children: /* @__PURE__ */ (0, H.jsx)(f, {
872
+ className: q[c].button,
873
+ onClick: i
874
+ })
875
+ }),
876
+ /* @__PURE__ */ (0, H.jsxs)("div", {
877
+ className: "col-[2/3] mx-auto flex w-full items-center justify-between gap-3 max-md:hidden",
878
+ children: [/* @__PURE__ */ (0, H.jsx)(y, {
879
+ actor: G,
880
+ isCurrentUser: W.authored,
881
+ children: /* @__PURE__ */ (0, H.jsxs)("div", {
882
+ className: "flex cursor-pointer items-center gap-3",
883
+ children: [/* @__PURE__ */ (0, H.jsx)("div", {
884
+ className: "relative z-10 pt-0.5",
885
+ children: /* @__PURE__ */ (0, H.jsx)(pe, { author: G })
886
+ }), /* @__PURE__ */ (0, H.jsxs)("div", {
887
+ className: "relative z-10 mt-0.5 flex min-w-0 cursor-pointer flex-col overflow-visible text-[1.5rem]",
888
+ onClick: (e) => v(G, Q, e),
889
+ children: [/* @__PURE__ */ (0, H.jsx)("div", {
890
+ className: "flex w-full",
891
+ children: /* @__PURE__ */ (0, H.jsx)("span", {
892
+ className: "min-w-0 truncate font-semibold whitespace-nowrap text-black hover:underline dark:text-white",
893
+ children: L ? /* @__PURE__ */ (0, H.jsx)(R, { className: "w-20" }) : G.name
894
+ })
895
+ }), /* @__PURE__ */ (0, H.jsxs)("div", {
896
+ className: "flex w-full",
897
+ children: [!L && /* @__PURE__ */ (0, H.jsx)("span", {
898
+ className: "truncate text-gray-700 after:mx-1 after:font-normal after:text-gray-700 after:content-[\"·\"]",
899
+ children: he(G)
900
+ }), /* @__PURE__ */ (0, H.jsx)("span", {
901
+ className: "text-gray-700",
902
+ children: L ? /* @__PURE__ */ (0, H.jsx)(R, { className: "w-[120px]" }) : ie(W, !W.authored)
903
+ })]
904
+ })]
905
+ })]
906
+ })
907
+ }), !W.authored && !L && /* @__PURE__ */ (0, H.jsx)(p, {
908
+ following: G.followedByMe ?? !1,
909
+ handle: he(G)
910
+ })]
911
+ }),
912
+ /* @__PURE__ */ (0, H.jsx)("div", {
913
+ className: "col-[3/4] flex items-center justify-end gap-2",
914
+ children: /* @__PURE__ */ (0, H.jsx)(Se, {
915
+ backgroundColor: c,
916
+ currentFontSizeIndex: l,
917
+ fontStyle: u,
918
+ onColorChange: h,
919
+ onDecreaseFontSize: x,
920
+ onFontStyleChange: _,
921
+ onIncreaseFontSize: b,
922
+ onOpenChange: A,
923
+ onResetFontSize: ee
924
+ })
925
+ })
926
+ ]
927
+ })
928
+ }), /* @__PURE__ */ (0, H.jsxs)("div", {
929
+ className: "relative flex-1",
930
+ children: [/* @__PURE__ */ (0, H.jsx)(we, {
931
+ iframeElement: Z,
932
+ modalRef: w,
933
+ tocItems: X,
934
+ onOpenChange: ae
935
+ }), !L && /* @__PURE__ */ (0, H.jsx)("div", {
936
+ className: "grow overflow-y-auto",
937
+ children: /* @__PURE__ */ (0, H.jsxs)("div", {
938
+ className: "mx-auto px-6 pt-5 pb-10",
939
+ style: { maxWidth: "904px" },
940
+ children: [
941
+ /* @__PURE__ */ (0, H.jsxs)("div", {
942
+ className: "flex flex-col items-center pb-8",
943
+ id: "object-content",
944
+ children: [ke && Oe ? /* @__PURE__ */ (0, H.jsx)(D, {
945
+ className: "w-full",
946
+ label: Oe,
947
+ onReveal: Pe
948
+ }) : /* @__PURE__ */ (0, H.jsxs)(H.Fragment, { children: [
949
+ Ae && /* @__PURE__ */ (0, H.jsx)(S, {
950
+ className: "w-full",
951
+ onReveal: Me
952
+ }),
953
+ je && /* @__PURE__ */ (0, H.jsx)("div", {
954
+ className: "mb-3 flex w-full justify-end",
955
+ children: /* @__PURE__ */ (0, H.jsx)(T, {
956
+ layout: "inline",
957
+ onHide: Ne
958
+ })
959
+ }),
960
+ /* @__PURE__ */ (0, H.jsx)("div", {
961
+ className: "w-full",
962
+ children: /* @__PURE__ */ (0, H.jsx)(vt, {
963
+ authors: K,
964
+ backgroundColor: c,
965
+ excerpt: W.summary ?? "",
966
+ fontSize: m,
967
+ fontStyle: u,
968
+ heading: W.name,
969
+ hideMedia: Ae,
970
+ html: Te,
971
+ image: Ee,
972
+ isPopoverOpen: O || te,
973
+ postUrl: W?.url || "",
974
+ onHeadingsExtracted: Je,
975
+ onIframeLoad: Ye,
976
+ onLoadingChange: He
977
+ })
978
+ })
979
+ ] }), /* @__PURE__ */ (0, H.jsx)("div", {
980
+ className: "-ml-3 w-full",
981
+ style: { maxWidth: J },
982
+ children: /* @__PURE__ */ (0, H.jsx)(re, {
983
+ actor: G,
984
+ commentCount: Ce,
985
+ layout: "modal",
986
+ likeCount: W.likeCount ?? 0,
987
+ object: W,
988
+ repostCount: W.repostCount ?? 0,
989
+ onLikeClick: Re
990
+ })
991
+ })]
992
+ }),
993
+ W.type === "Tombstone" && /* @__PURE__ */ (0, H.jsx)(ve, { last: !0 }),
994
+ /* @__PURE__ */ (0, H.jsxs)("div", {
995
+ className: "mx-auto w-full border-t border-black/[8%] dark:border-gray-950",
996
+ style: { maxWidth: J },
997
+ children: [/* @__PURE__ */ (0, H.jsx)(ge, { object: W }), /* @__PURE__ */ (0, H.jsx)(yt, {})]
998
+ }),
999
+ L && /* @__PURE__ */ (0, H.jsx)(g, { size: "lg" }),
1000
+ /* @__PURE__ */ (0, H.jsxs)("div", {
1001
+ ref: ze,
1002
+ className: "mx-auto w-full",
1003
+ style: { maxWidth: J },
1004
+ children: [I.map((t, n) => {
1005
+ let i = n === I.length - 1, a = t.mainReply.id, o = oe.has(a), s = ce.has(a), c = ue.has(a), l = t.chain.length > 0;
1006
+ return /* @__PURE__ */ (0, H.jsxs)(r.Fragment, { children: [
1007
+ /* @__PURE__ */ (0, H.jsx)(E, {
1008
+ actor: t.mainReply.actor,
1009
+ allowDelete: t.mainReply.object.authored,
1010
+ commentCount: t.mainReply.object.replyCount ?? 0,
1011
+ isChainParent: l,
1012
+ isPending: M(t.mainReply.id),
1013
+ last: !l,
1014
+ layout: "reply",
1015
+ likeCount: t.mainReply.object.likeCount ?? 0,
1016
+ object: t.mainReply.object,
1017
+ parentId: W.id,
1018
+ repostCount: t.mainReply.object.repostCount ?? 0,
1019
+ type: "Note",
1020
+ onClick: () => {
1021
+ let n = w.current;
1022
+ n && e && $.set(e, n.scrollTop), Q(`/notes/${encodeURIComponent(t.mainReply.id)}`);
1023
+ },
1024
+ onDelete: Fe
1025
+ }),
1026
+ l && t.chain[0] && /* @__PURE__ */ (0, H.jsx)(E, {
1027
+ actor: t.chain[0].actor,
1028
+ allowDelete: t.chain[0].object.authored,
1029
+ commentCount: t.chain[0].object.replyCount ?? 0,
1030
+ isChainContinuation: !0,
1031
+ isPending: M(t.chain[0].id),
1032
+ last: t.chain.length === 1,
1033
+ layout: "reply",
1034
+ likeCount: t.chain[0].object.likeCount ?? 0,
1035
+ object: t.chain[0].object,
1036
+ parentId: W.id,
1037
+ repostCount: t.chain[0].object.repostCount ?? 0,
1038
+ type: "Note",
1039
+ onClick: () => {
1040
+ let n = w.current;
1041
+ n && e && $.set(e, n.scrollTop), Q(`/notes/${encodeURIComponent(t.chain[0].id)}`);
1042
+ },
1043
+ onDelete: Fe
1044
+ }, t.chain[0].id),
1045
+ l && o && t.chain.slice(1).map((r, i) => {
1046
+ let a = i === t.chain.slice(1).length - 1, o = V && V(n), s = a && o;
1047
+ return /* @__PURE__ */ (0, H.jsx)(E, {
1048
+ actor: r.actor,
1049
+ allowDelete: r.object.authored,
1050
+ commentCount: r.object.replyCount ?? 0,
1051
+ isChainContinuation: !0,
1052
+ isPending: M(r.id),
1053
+ last: a && !s,
1054
+ layout: "reply",
1055
+ likeCount: r.object.likeCount ?? 0,
1056
+ object: r.object,
1057
+ parentId: W.id,
1058
+ repostCount: r.object.repostCount ?? 0,
1059
+ type: "Note",
1060
+ onClick: () => {
1061
+ let t = w.current;
1062
+ t && e && $.set(e, t.scrollTop), Q(`/notes/${encodeURIComponent(r.id)}`);
1063
+ },
1064
+ onDelete: Fe
1065
+ }, r.id);
1066
+ }),
1067
+ l && t.chain.length > 1 && !o && /* @__PURE__ */ (0, H.jsx)(_e, {
1068
+ variant: "expand",
1069
+ onClick: () => Ie(a)
1070
+ }),
1071
+ l && o && s && V && V(n) && /* @__PURE__ */ (0, H.jsx)(_e, {
1072
+ loading: c,
1073
+ variant: "loadMore",
1074
+ onClick: () => Le(a, n)
1075
+ }),
1076
+ !i && /* @__PURE__ */ (0, H.jsx)(yt, {})
1077
+ ] }, t.mainReply.id);
1078
+ }), N && /* @__PURE__ */ (0, H.jsx)("div", {
1079
+ className: "flex flex-col items-center justify-center text-center",
1080
+ children: /* @__PURE__ */ (0, H.jsx)(g, { size: "md" })
1081
+ })]
1082
+ }),
1083
+ B && /* @__PURE__ */ (0, H.jsx)("div", {
1084
+ ref: me,
1085
+ className: "h-1"
1086
+ })
1087
+ ]
1088
+ })
1089
+ })]
1090
+ })]
1091
+ }), !L && /* @__PURE__ */ (0, H.jsxs)("div", {
1092
+ className: "pointer-events-none visible! sticky bottom-0 hidden items-end justify-between px-10 pb-[42px] lg:flex!",
1093
+ children: [/* @__PURE__ */ (0, H.jsx)("div", {
1094
+ className: "pointer-events-auto text-gray-600",
1095
+ children: d(W.content ?? "")
1096
+ }), /* @__PURE__ */ (0, H.jsxs)("div", {
1097
+ className: "pointer-events-auto min-w-10 text-right text-gray-600 transition-all duration-200 ease-out",
1098
+ children: [Be, "%"]
1099
+ }, Be)]
1100
+ })]
1101
+ }) })
1102
+ }) : /* @__PURE__ */ (0, H.jsx)("div", {
1103
+ className: `max-h-full overflow-auto rounded-md ${c === "DARK" && "dark"} ${(c === "LIGHT" || c === "SEPIA") && "light"} ${q[c].background}`,
1104
+ children: /* @__PURE__ */ (0, H.jsx)("div", {
1105
+ className: "flex h-full flex-col",
1106
+ children: /* @__PURE__ */ (0, H.jsx)("div", {
1107
+ className: "relative flex-1",
1108
+ children: /* @__PURE__ */ (0, H.jsx)("div", {
1109
+ className: `sticky top-0 z-50 flex h-[102px] items-center justify-center rounded-t-md border-b max-md:h-[68px] ${q[c].background} ${q[c].border}`,
1110
+ children: /* @__PURE__ */ (0, H.jsxs)("div", {
1111
+ className: "grid w-full px-8 max-lg:px-4",
1112
+ style: { gridTemplateColumns: `1fr minmax(0,${J}) 1fr` },
1113
+ children: [/* @__PURE__ */ (0, H.jsx)("div", {
1114
+ className: "flex items-center",
1115
+ children: /* @__PURE__ */ (0, H.jsx)(f, {
1116
+ className: q[c].button,
1117
+ onClick: i
1118
+ })
1119
+ }), /* @__PURE__ */ (0, H.jsx)("div", {
1120
+ className: "col-[2/3] mx-auto flex w-full items-center gap-3 max-md:hidden",
1121
+ children: /* @__PURE__ */ (0, H.jsx)("div", {
1122
+ className: "grow text-center",
1123
+ children: /* @__PURE__ */ (0, H.jsx)("span", { children: "Error loading article." })
1124
+ })
1125
+ })]
1126
+ })
1127
+ })
1128
+ })
1129
+ })
1130
+ });
1131
+ };
1132
+ //#endregion
1133
+ //#region src/views/inbox/components/inbox-list.tsx
1134
+ i();
1135
+ var St = ({ isLoading: e, activities: t, currentTopic: r, fetchNextPage: i, hasNextPage: a, isFetchingNextPage: c, onTopicChange: u }) => {
1136
+ let d = se(), { canGoBack: f, goBack: p } = ae(), [m, h] = n(!1), v = l(), { topicsQuery: y } = le(), { data: S } = y, C = S && S.topics.length > 0;
1137
+ o(() => {
1138
+ h(!!v.postId);
1139
+ }, [v.postId]);
1140
+ let T = s(null), D = s(null), O = s(null);
1141
+ o(() => (T.current && T.current.disconnect(), T.current = new IntersectionObserver((e) => {
1142
+ e[0].isIntersecting && a && !c && i();
1143
+ }), D.current && T.current.observe(D.current), O.current && T.current.observe(O.current), () => {
1144
+ T.current && T.current.disconnect();
1145
+ }), [
1146
+ a,
1147
+ c,
1148
+ i
1149
+ ]);
1150
+ let k = Math.max(0, Math.floor(t.length * .75) - 1);
1151
+ return /* @__PURE__ */ (0, H.jsxs)(ee, { children: [
1152
+ C && /* @__PURE__ */ (0, H.jsx)(B, {
1153
+ currentTopic: r,
1154
+ excludeTopics: ["top"],
1155
+ onTopicChange: u
1156
+ }),
1157
+ /* @__PURE__ */ (0, H.jsx)("div", {
1158
+ className: "flex w-full flex-col",
1159
+ children: /* @__PURE__ */ (0, H.jsx)("div", {
1160
+ className: "w-full",
1161
+ children: t.length > 0 ? /* @__PURE__ */ (0, H.jsx)("div", {
1162
+ className: "my-4",
1163
+ children: /* @__PURE__ */ (0, H.jsx)("div", {
1164
+ className: "mx-auto flex min-h-[calc(100dvh_-_117px)] items-start gap-11",
1165
+ children: /* @__PURE__ */ (0, H.jsx)("div", {
1166
+ className: "flex w-full min-w-0 flex-col items-center",
1167
+ children: /* @__PURE__ */ (0, H.jsxs)("div", {
1168
+ className: "flex w-full min-w-0 flex-col items-start",
1169
+ children: [/* @__PURE__ */ (0, H.jsxs)("ul", {
1170
+ className: "mx-auto flex w-full flex-col",
1171
+ "data-testid": "inbox-list",
1172
+ children: [t.map((n, r) => /* @__PURE__ */ (0, H.jsxs)("li", {
1173
+ "data-testid": "inbox-item",
1174
+ "data-test-view-article": !0,
1175
+ children: [
1176
+ /* @__PURE__ */ (0, H.jsx)(E, {
1177
+ actor: n.actor,
1178
+ allowDelete: n.object.authored,
1179
+ commentCount: n.object.replyCount ?? 0,
1180
+ isLoading: e,
1181
+ isPending: M(n.id),
1182
+ layout: "inbox",
1183
+ likeCount: n.object.likeCount ?? 0,
1184
+ object: n.object,
1185
+ repostCount: n.object.repostCount ?? 0,
1186
+ type: n.type,
1187
+ onClick: () => {
1188
+ d(`/reader/${encodeURIComponent(n.id)}`);
1189
+ }
1190
+ }),
1191
+ r < t.length - 1 && /* @__PURE__ */ (0, H.jsx)(be, {}),
1192
+ r === k && /* @__PURE__ */ (0, H.jsx)("div", {
1193
+ ref: D,
1194
+ className: "h-1"
1195
+ })
1196
+ ]
1197
+ }, `${n.id}-${n.type}-${r}`)), c && /* @__PURE__ */ (0, H.jsx)("li", {
1198
+ className: "flex flex-col items-center justify-center gap-4 text-center",
1199
+ children: /* @__PURE__ */ (0, H.jsx)(g, { size: "md" })
1200
+ })]
1201
+ }), /* @__PURE__ */ (0, H.jsx)("div", {
1202
+ ref: O,
1203
+ className: "h-1"
1204
+ })]
1205
+ })
1206
+ })
1207
+ })
1208
+ }) : r === "following" ? /* @__PURE__ */ (0, H.jsx)("div", {
1209
+ className: "mt-[24vh]",
1210
+ children: /* @__PURE__ */ (0, H.jsx)(W, {
1211
+ actions: C ? /* @__PURE__ */ (0, H.jsx)(j, {
1212
+ onClick: () => d("/explore"),
1213
+ children: "Find accounts to follow →"
1214
+ }) : /* @__PURE__ */ (0, H.jsx)(j, {
1215
+ asChild: !0,
1216
+ children: /* @__PURE__ */ (0, H.jsx)("a", {
1217
+ href: "https://explore.ghost.org/social-web",
1218
+ rel: "noopener noreferrer",
1219
+ target: "_blank",
1220
+ children: "Find accounts to follow →"
1221
+ })
1222
+ }),
1223
+ description: "Start following publishers to see their long-form posts here.",
1224
+ title: "Your Reader is empty",
1225
+ children: /* @__PURE__ */ (0, H.jsx)(z, {})
1226
+ })
1227
+ }) : /* @__PURE__ */ (0, H.jsx)("div", {
1228
+ className: "mt-[24vh]",
1229
+ children: /* @__PURE__ */ (0, H.jsx)(W, {
1230
+ description: "Explore other topics for more content.",
1231
+ title: "Nothing here yet",
1232
+ children: /* @__PURE__ */ (0, H.jsx)(z, {})
1233
+ })
1234
+ })
1235
+ })
1236
+ }),
1237
+ /* @__PURE__ */ (0, H.jsx)(b, {
1238
+ open: m,
1239
+ onOpenChange: (e) => {
1240
+ e || (f ? p() : d("/reader")), h(e);
1241
+ },
1242
+ children: /* @__PURE__ */ (0, H.jsxs)(x, {
1243
+ className: "inset-y-3 h-[calc(100vh-24px)] w-screen max-w-[calc(100vw-24px)] animate-none! p-0 focus:outline-hidden dark:bg-gray-950",
1244
+ children: [/* @__PURE__ */ (0, H.jsxs)(w, {
1245
+ className: "hidden",
1246
+ children: [/* @__PURE__ */ (0, H.jsx)(te, { children: "Reader" }), /* @__PURE__ */ (0, H.jsx)(_, { children: "Ghost reader for long form articles" })]
1247
+ }), v.postId && /* @__PURE__ */ (0, H.jsx)(xt, {
1248
+ postId: v.postId,
1249
+ onClose: () => {
1250
+ f ? p() : d("/reader");
1251
+ }
1252
+ })]
1253
+ })
1254
+ })
1255
+ ] });
1256
+ };
1257
+ //#endregion
1258
+ //#region src/views/inbox/inbox.tsx
1259
+ i();
1260
+ var Ct = () => {
1261
+ let [e, t] = n("following"), { inboxQuery: r } = ue({ enabled: e === "following" }), { discoveryFeedQuery: i } = de({
1262
+ enabled: e !== "following",
1263
+ topic: e
1264
+ }), { data: a, error: o, fetchNextPage: s, hasNextPage: c, isFetchingNextPage: l, isLoading: u } = e === "following" ? r : i, d = o && N(o) && o.statusCode === 404 && e !== "following";
1265
+ return o && N(o) && !d ? /* @__PURE__ */ (0, H.jsx)(O, {
1266
+ errorCode: o.code,
1267
+ statusCode: o.statusCode
1268
+ }) : /* @__PURE__ */ (0, H.jsx)(St, {
1269
+ activities: d ? [] : a?.pages.flatMap((e) => e.posts) ?? Array.from({ length: 5 }, (e, t) => ({
1270
+ id: `placeholder-${t}`,
1271
+ object: {}
1272
+ })),
1273
+ currentTopic: e,
1274
+ fetchNextPage: s,
1275
+ hasNextPage: c,
1276
+ isFetchingNextPage: l,
1277
+ isLoading: u,
1278
+ onTopicChange: t
1279
+ });
1280
+ };
1281
+ //#endregion
1282
+ export { Ct as default };
1283
+
1284
+ //# sourceMappingURL=inbox-Uf0GVrI_.js.map