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
@@ -1 +1 @@
1
- :root{--color-white:#fff;--color-lighter-gray:rgba(0,0,0,.05);--color-light-gray:#e6e6e6;--color-mid-gray:#ccc;--color-dark-gray:#444;--color-darker-gray:#15171a;--color-black:#000;--color-primary-text:var(--color-darker-gray);--color-secondary-text:rgba(0,0,0,.55);--color-border:rgba(0,0,0,.08);--color-dark-border:rgba(0,0,0,.55);--font-sans:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;--font-serif:"EB Garamond",Georgia,Times,serif;--font-serif-alt:Georgia,Times,serif;--font-mono:"JetBrains Mono",Menlo,Consolas,Monaco,"Liberation Mono","Lucida Console",monospace;--container-width:1320px;--container-gap:clamp(24px,1.7032rem + 1.9355vw,48px);--grid-gap:42px}:is(.gh-navigation,.gh-footer).has-accent-color,:root.has-light-text{--color-lighter-gray:hsla(0,0%,100%,.1);--color-darker-gray:#fff;--color-secondary-text:hsla(0,0%,100%,.64);--color-border:hsla(0,0%,100%,.15);--color-dark-border:hsla(0,0%,100%,.5)}*,:after,:before{box-sizing:border-box}*{margin:0}html{font-size:62.5%}body{line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}canvas,img,picture,svg,video{display:block;height:auto;max-width:100%}iframe{display:block}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{line-height:1.2}sub,sup{line-height:1}body{background-color:var(--background-color);color:var(--color-primary-text);font-family:var(--gh-font-body,var(--font-sans));font-size:1.6rem}h1,h2,h3,h4,h5,h6{font-family:var(--gh-font-heading,var(--font-sans))}a{color:var(--color-darker-gray);text-decoration:none}a:hover{opacity:.8}.gh-button{align-items:center;background-color:var(--ghost-accent-color);border:0;border-radius:100px;color:var(--color-white);cursor:pointer;display:inline-flex;font-size:1.5rem;font-weight:600;gap:.4em;justify-content:center;letter-spacing:-.004em;line-height:1;padding:.8em 1.4em}.gh-button:hover{opacity:.95}.gh-icon-button{align-items:center;background-color:transparent;border:0;color:var(--color-darker-gray);cursor:pointer;display:inline-flex;height:32px;justify-content:center;outline:none;padding:0;width:32px}.gh-icon-button:hover :is(svg,span){opacity:.8}.gh-icon-button svg{height:20px;width:20px}.gh-form{align-items:center;background-color:var(--color-lighter-gray);border-radius:40px;display:flex;font-size:1.7rem;font-weight:450;height:56px;letter-spacing:-.008em;max-width:560px;position:relative;transition:background-color .2s ease;width:100%}.gh-form.success{pointer-events:none}.gh-form.error{box-shadow:0 0 0 1px red}.gh-form:hover{background-color:rgba(0,0,0,.065)}.gh-footer.has-accent-color .gh-form:hover,.has-light-text .gh-form:hover{background-color:hsla(0,0%,100%,.15)}.gh-form-input{background-color:transparent;border:0;border-radius:40px;font-size:inherit;height:100%;inset:0;letter-spacing:inherit;line-height:1.1;outline:none;padding-inline:26px;position:absolute;transition:.3s ease-in-out;width:100%}.gh-form-input::-moz-placeholder{color:rgba(0,0,0,.3)}.gh-form-input::placeholder,button.gh-form-input{color:rgba(0,0,0,.3)}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form-input,body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input,body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input{padding-inline:20px}.gh-form.gh-form.success .gh-form-input{opacity:.5}.gh-footer.has-accent-color .gh-form-input,.has-light-text .gh-form-input{color:#fff}.gh-footer.has-accent-color .gh-form-input::-moz-placeholder,.has-light-text .gh-form-input::-moz-placeholder{color:hsla(0,0%,100%,.55)}.gh-footer.has-accent-color .gh-form-input::placeholder,.has-light-text .gh-form-input::placeholder,.has-light-text button.gh-form-input{color:hsla(0,0%,100%,.55)}.gh-header.is-classic.has-image .gh-form-input{color:#15171a}.gh-header.is-classic.has-image .gh-form-input::-moz-placeholder{color:rgba(0,0,0,.5)}.gh-header.is-classic.has-image .gh-form-input::placeholder,.gh-header.is-classic.has-image .gh-form>svg,.gh-header.is-classic.has-image button.gh-form-input{color:rgba(0,0,0,.5)}button.gh-form-input{color:var(--color-secondary-text);cursor:pointer;padding-inline-start:56px;text-align:left}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) button.gh-form-input,body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input,body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input{padding-inline-start:50px}.gh-form .gh-button{font-size:inherit;height:44px;min-width:132px;padding-inline:24px;position:absolute;right:6px}.gh-form>svg{color:var(--color-secondary-text);height:20px;left:22px;position:relative;width:20px}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form>svg{left:16px}.gh-form .gh-button svg{display:none;margin-top:1px;position:absolute}.gh-form .gh-button>span:last-child{display:none}.gh-form:is(.loading,.success) .gh-button>span:first-child{visibility:hidden}.gh-form.loading .gh-button svg:first-of-type{display:block}.gh-form.success .gh-button>span:first-child{display:none}.gh-form.success .gh-button>span:last-child{display:inline}.gh-form [data-members-error]{font-size:1.4rem;line-height:1.4;margin-top:10px;position:absolute;top:100%;width:100%}@media (max-width:576px){.gh-form{font-size:1.6rem}.gh-form .gh-button{min-width:104px;padding-inline:12px}}.gh-viewport{display:flex;flex-direction:column;min-height:100vh;position:relative}.gh-outer{padding:0 max(4vmin,20px)}.gh-outer .gh-outer{padding:0}.gh-inner{margin:0 auto;max-width:var(--container-width);width:100%}.gh-main{flex-grow:1}.gh-canvas,.kg-width-full.kg-content-wide{--main:min(var(--content-width,720px),100% - var(--container-gap) * 2);--wide:minmax(0,calc((var(--container-width, 1200px) - var(--content-width, 720px))/2));--full:minmax(var(--container-gap),1fr);display:grid;grid-template-columns:[full-start] var(--full) [wide-start] var(--wide) [main-start] var(--main) [main-end] var(--wide) [wide-end] var(--full) [full-end]}.gh-canvas>*{grid-column:main}.kg-content-wide>div,.kg-width-wide{grid-column:wide}.kg-width-full{grid-column:full}.gh-navigation{background-color:var(--background-color);color:var(--color-darker-gray);font-size:1.5rem;font-weight:550;height:100px}.gh-navigation :is(.gh-navigation-logo,a:not(.gh-button),.gh-icon-button){color:inherit}.gh-navigation-inner{align-items:center;-moz-column-gap:24px;column-gap:24px;display:grid;grid-auto-flow:row dense;height:100%}.gh-navigation-brand{line-height:1}.gh-navigation-logo{font-family:var(--gh-font-heading,var(--font-sans));font-size:calc(2.4rem*var(--factor, 1));font-weight:725;letter-spacing:-.015em;position:relative;white-space:nowrap}.gh-navigation-logo img{max-height:40px}.gh-navigation-menu{align-items:center;display:flex;gap:24px}.gh-navigation .nav{align-items:center;display:inline-flex;gap:28px;list-style:none;margin:0;padding:0;white-space:nowrap}.gh-navigation .gh-more-toggle{font-size:inherit;margin:0 -6px;position:relative;text-transform:inherit}.gh-navigation .gh-more-toggle svg{height:24px;width:24px}.gh-navigation-actions{align-items:center;background-color:var(--background-color);display:flex;gap:24px;justify-content:flex-end}.gh-navigation.has-accent-color .gh-navigation-actions{background-color:var(--ghost-accent-color)}.gh-navigation-members{align-items:center;display:flex;gap:20px;white-space:nowrap}.gh-navigation-members .gh-button{font-size:inherit;font-weight:600}.gh-search{margin-left:-2px;margin-right:-2px}@media (max-width:767px){.gh-navigation-logo{white-space:normal}.gh-navigation-members{flex-direction:column-reverse;gap:16px;width:100%}.gh-navigation-actions .gh-search{display:none}}@media (min-width:768px){.gh-navigation-brand .gh-search{display:none}.gh-navigation:not(.is-dropdown-loaded) .gh-navigation-menu .nav>li{opacity:0}}.gh-navigation.has-accent-color{background-color:var(--ghost-accent-color)}.gh-navigation.has-accent-color .gh-button{background-color:#fff;color:#15171a}.gh-navigation.is-left-logo .gh-navigation-inner{grid-template-columns:auto 1fr auto}@media (min-width:768px){.gh-navigation.is-left-logo .gh-navigation-logo:not(:has(img)){top:-2px}}@media (min-width:992px){.gh-navigation.is-left-logo .gh-navigation-menu{margin-left:16px;margin-right:100px}}.gh-navigation.is-middle-logo .gh-navigation-inner{grid-template-columns:1fr auto 1fr}.gh-navigation.is-middle-logo .gh-navigation-brand{grid-column-start:2}.gh-navigation.is-middle-logo .gh-navigation-actions{gap:28px}@media (min-width:992px){.gh-navigation.is-middle-logo .gh-navigation-menu{margin-right:64px}}.gh-navigation.is-stacked{height:auto;position:relative}.gh-navigation.is-stacked .gh-navigation-inner{grid-template-columns:1fr auto 1fr}.gh-navigation.is-stacked .gh-navigation-brand{align-items:center;display:flex;grid-column-start:2;grid-row-start:1;min-height:80px}@media (max-width:767px){.gh-navigation.is-stacked .gh-navigation-brand{min-height:unset}}@media (min-width:992px){.gh-navigation.is-stacked .gh-navigation-inner{padding:0}.gh-navigation.is-stacked .gh-navigation-brand{align-items:center;display:flex;height:80px}.gh-navigation.is-stacked .gh-navigation-menu{grid-column:1/4;grid-row-start:2;height:60px;justify-content:center;margin:0 48px}.gh-navigation.is-stacked .gh-navigation-menu:after,.gh-navigation.is-stacked .gh-navigation-menu:before{background-color:var(--color-border);content:"";height:1px;left:0;position:absolute;top:80px;width:100%}.gh-navigation.is-stacked .gh-navigation-menu:after{top:140px}.gh-navigation.is-stacked .gh-navigation-actions{grid-column:1/4;grid-row-start:1;justify-content:space-between}.gh-navigation.is-stacked .gh-navigation-actions .gh-search{display:flex;gap:10px;width:auto}}.gh-dropdown{background-color:#fff;border-radius:5px;box-shadow:0 0 0 1px rgba(0,0,0,.04),0 7px 20px -5px rgba(0,0,0,.15);margin-top:24px;opacity:0;padding:12px 0;position:absolute;right:-16px;text-align:left;top:100%;transform:translate3d(0,6px,0);transition:opacity .3s,transform .2s;visibility:hidden;width:200px;z-index:90}.gh-dropdown.is-left{left:-16px;right:auto}.is-dropdown-mega .gh-dropdown{-moz-column-gap:40px;column-gap:40px;display:grid;grid-auto-flow:column;grid-template-columns:1fr 1fr;padding:20px 32px;width:auto}.is-dropdown-open .gh-dropdown{opacity:1;transform:translateY(0);visibility:visible}.gh-dropdown li a{color:#15171a!important;display:block;line-height:1.5;padding:7px 20px;white-space:normal}.is-dropdown-mega .gh-dropdown li a{padding:8px 0}.gh-burger{align-items:center;display:flex;display:none;justify-content:center;margin-left:4px;margin-right:-7px;position:relative}.gh-burger svg{height:24px;width:24px}.gh-burger svg:last-child,.is-open .gh-burger svg:first-child{display:none}.is-open .gh-burger svg:last-child{display:block}@media (max-width:767px){.gh-burger{display:flex}#gh-navigation{height:64px}#gh-navigation .gh-navigation-inner{gap:48px;grid-template-columns:1fr;grid-template-rows:auto 1fr auto}#gh-navigation .gh-navigation-brand{align-items:center;display:grid;grid-column-start:1;grid-template-columns:1fr auto auto;height:64px}#gh-navigation .gh-navigation-logo{font-size:2.2rem}#gh-navigation .gh-navigation-actions,#gh-navigation .gh-navigation-menu{justify-content:center;opacity:0;position:fixed;visibility:hidden}#gh-navigation .gh-navigation-menu{transform:translateY(0);transition:none}#gh-navigation .nav{align-items:center;gap:20px;line-height:1.4}#gh-navigation .nav a{font-size:1.75rem;font-weight:600;text-transform:none}#gh-navigation .nav li{opacity:0;transform:translateY(-4px)}#gh-navigation .gh-navigation-actions{text-align:center}#gh-navigation :is(.gh-button,a[data-portal=signin]){opacity:0;transform:translateY(8px)}#gh-navigation .gh-button{font-size:1.75rem;text-transform:none;width:100%}#gh-navigation a[data-portal=signin]{font-size:1.75rem}#gh-main{transition:opacity .4s}.is-open#gh-navigation{height:100%;inset:0;overflow-y:scroll;position:fixed;z-index:3999999;-webkit-overflow-scrolling:touch}.is-open#gh-navigation .gh-navigation-actions,.is-open#gh-navigation .gh-navigation-menu{opacity:1;position:static;visibility:visible}.is-open#gh-navigation .nav{display:flex;flex-direction:column}.is-open#gh-navigation .nav li{opacity:1;transform:translateY(0);transition:transform .2s,opacity .2s}.is-open#gh-navigation .gh-navigation-actions{align-items:center;bottom:0;display:inline-flex;flex-direction:column;gap:12px;left:0;padding:var(--container-gap) 0;position:sticky;right:0}.is-open#gh-navigation :is(.gh-button,a[data-portal=signin]){opacity:1;transform:translateY(0);transition:transform .4s,opacity .4s;transition-delay:.2s}.is-open#gh-navigation a[data-portal=signin]{transition-delay:.4s}.is-open#gh-main{opacity:0}}.gh-card{position:relative}.gh-card-link{display:flex;flex-direction:column;gap:20px}.gh-card-link:hover{opacity:1}.gh-card-image{aspect-ratio:16/9;flex-shrink:0;position:relative}.gh-card-image img{height:100%;inset:0;-o-object-fit:cover;object-fit:cover;position:absolute;width:100%}.gh-card-wrapper{flex-grow:1}.gh-card-tag{display:none;font-size:1.2rem;font-weight:500;letter-spacing:.01em;margin-bottom:4px;text-transform:uppercase}.gh-card-title{font-size:calc(1.9rem*var(--factor, 1));font-weight:725;letter-spacing:-.014em;line-height:1.3}.gh-card-link:hover .gh-card-title{opacity:.8}.gh-card-excerpt{display:-webkit-box;font-size:1.45rem;-webkit-line-clamp:2;line-height:1.4;margin-top:8px;overflow-y:hidden;-webkit-box-orient:vertical}.gh-card-meta{align-items:center;color:var(--color-secondary-text);font-size:1.25rem;font-weight:500;letter-spacing:-.004em;line-height:1.4;padding-bottom:1px}.gh-card-meta svg{display:inline-block;height:12px;margin-right:2px;position:relative;top:1px;width:12px}.gh-card-meta:not(:empty){margin-top:8px}.gh-card-author+.gh-card-date:before{content:"—";margin-right:4px}.gh-header{margin-top:40px;position:relative}.gh-header-inner{overflow:hidden;position:relative}.gh-header.is-magazine .gh-header-inner{display:grid;gap:var(--grid-gap);grid-template-columns:repeat(16,1fr)}.gh-header.is-magazine .gh-header-inner>div{display:flex;flex-direction:column;gap:var(--grid-gap);grid-row:1}.gh-header.is-magazine .gh-header-left{grid-column:1/span 4}.gh-header.is-magazine .gh-header-inner>.gh-card{grid-column:5/span 8;position:relative}.gh-header.is-magazine .gh-header-right{grid-column:13/-1}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-link{gap:28px}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-image{aspect-ratio:1.618033}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-tag{display:block;margin-bottom:12px}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;letter-spacing:-.022em;line-height:1.1}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-excerpt{font-size:1.8rem;letter-spacing:-.02em;margin-top:clamp(12px,.45vw + 10.18px,16px);max-width:90%}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-meta:not(:empty){margin-top:14px}.gh-header.is-magazine :is(.gh-header-left,.gh-header-right) .gh-card:last-child .gh-card-image{display:none}.gh-header.is-magazine .gh-header-inner>div .gh-card-excerpt{display:none}.gh-header.is-magazine .gh-header-inner>.gh-card:after,.gh-header.is-magazine .gh-header-inner>.gh-card:before{background-color:var(--color-border);content:"";height:100%;left:calc(var(--grid-gap)/-2);position:absolute;top:0;width:1px}.gh-header.is-magazine .gh-header-inner>.gh-card:after{left:auto;right:calc(var(--grid-gap)/-2)}.gh-header.is-magazine .gh-header-inner>div .gh-card+.gh-card:before{background-color:var(--color-border);content:"";height:1px;left:0;position:absolute;top:calc(var(--grid-gap)/-2);width:100%}@media (max-width:1199px){.gh-header.is-magazine .gh-header-inner{grid-template-columns:repeat(12,1fr)}.gh-header.is-magazine .gh-header-inner>.gh-card{grid-column:1/span 8}.gh-header.is-magazine .gh-header-left{grid-column:9/-1}.gh-header.is-magazine .gh-header-inner>div.gh-header-right{flex-direction:row;grid-column:1/-1;grid-row:2}.gh-header.is-magazine .gh-header-right .gh-card{flex:1}.gh-header.is-magazine .gh-header-right .gh-card:last-child .gh-card-image{display:block}.gh-header.is-magazine .gh-header-right{position:relative}.gh-header.is-magazine .gh-header-right:before{background-color:var(--color-border);content:"";height:1px;left:0;position:absolute;top:calc(var(--grid-gap)/-2);width:100%}.gh-header.is-magazine .gh-header-right .gh-card:before{display:none}.gh-header.is-magazine .gh-header-right .gh-card:after{background-color:var(--color-border);content:"";height:100%;position:absolute;right:calc(var(--grid-gap)/-2);top:0;width:1px}}@media (max-width:991px){.gh-header.is-magazine .gh-header-left .gh-card:nth-child(2) .gh-card-image{display:none}}@media (max-width:767px){.gh-header.is-magazine .gh-header-inner{display:flex;flex-direction:column;gap:var(--grid-gap)}.gh-header.is-magazine .gh-header-inner>div.gh-header-right{flex-direction:column}.gh-header.is-magazine .gh-card-image{display:block!important}.gh-header.is-magazine .gh-card:before{background-color:var(--color-border);content:"";display:block!important;height:1px;left:0;position:absolute;top:calc(var(--grid-gap)/-2);width:100%}}.gh-header.is-highlight .gh-header-inner{display:grid;gap:var(--grid-gap);grid-template-columns:repeat(16,1fr)}.gh-header.is-highlight .gh-header-left{grid-column:span 8;position:relative}.gh-header.is-highlight .gh-header-left .gh-card{grid-column:span 8;grid-row:span 3}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-link{gap:28px}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-image{aspect-ratio:3/2}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-tag{display:block;margin-bottom:12px}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;letter-spacing:-.022em;line-height:1.1}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-excerpt{font-size:1.8rem;margin-top:clamp(12px,.45vw + 10.18px,16px)}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-meta:not(:empty){margin-top:12px}.gh-header.is-highlight .gh-header-middle{display:flex;flex-direction:column;gap:var(--grid-gap);grid-column:9/span 4;position:relative}.gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt,.gh-header.is-highlight .gh-header-middle .gh-card:last-child .gh-card-image{display:none}.gh-header.is-highlight .gh-header-right{grid-column:13/-1}.gh-header.is-highlight .gh-featured{margin-top:0;padding:0}.gh-header.is-highlight .gh-featured-feed{display:flex;flex-direction:column}.gh-header.is-highlight .gh-featured-feed .gh-card-title{font-size:clamp(1.4rem,.23vw + 1.31rem,1.6rem)}.gh-header.is-highlight .gh-header-left:after,.gh-header.is-highlight .gh-header-middle:after{background-color:var(--color-border);content:"";height:100%;position:absolute;right:calc(var(--grid-gap)/-2);top:0;width:1px}.gh-header.is-highlight .gh-card:before{background-color:var(--color-border);content:"";height:1px;left:0;position:absolute;top:calc(var(--grid-gap)/-2);width:100%}.gh-header.is-highlight .gh-featured .gh-card:first-child:before{display:none}@media (max-width:1199px){.gh-header.is-highlight .gh-header-inner{grid-template-columns:repeat(9,1fr)}.gh-header.is-highlight .gh-header-left{grid-column:span 6}.gh-header.is-highlight .gh-header-middle{grid-column:7/-1}.gh-header.is-highlight .gh-header-right{grid-column:1/-1}.gh-header.is-highlight .gh-featured-feed{display:grid;grid-template-columns:repeat(3,1fr)}.gh-header.is-highlight .gh-featured-feed .gh-card:before{width:calc(100% + var(--grid-gap))}.gh-header.is-highlight .gh-featured-feed .gh-card:after{background-color:var(--color-border);content:"";height:100%;left:calc(var(--grid-gap)/-2);position:absolute;top:0;width:1px}}@media (max-width:991px){.gh-header.is-highlight .gh-header-middle .gh-card:nth-child(2) .gh-card-image{display:none}}@media (max-width:767px){.gh-header.is-highlight .gh-header-inner{display:flex;flex-direction:column}.gh-header.is-highlight .gh-featured-feed{display:flex}.gh-header.is-highlight .gh-card-image{display:block!important}.gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt{display:-webkit-box}}.gh-header.is-classic{display:flex;margin-top:0;padding-block:160px}.gh-header.is-classic .gh-header-inner{align-items:center;display:flex;flex-direction:column;gap:48px;margin:auto;max-width:1020px;overflow:unset;text-align:center}.gh-header.is-classic .gh-header-title{font-size:calc(clamp(3rem, 1.82vw + 2.27rem, 4.6rem)*var(--factor, 1));letter-spacing:-.028em;line-height:1.1}.gh-header.is-classic.has-image{margin-top:0}.gh-header.is-classic.has-image:before{background-color:var(--color-black);content:"";inset:0;opacity:.3;position:absolute;transition:opacity 1.5s ease}.gh-header.is-classic.has-image .gh-header-inner{color:#fff}.gh-header.is-classic.has-image .gh-header-image{height:100%;inset:0;-o-object-fit:cover;object-fit:cover;position:absolute;width:100%;z-index:-1}.gh-header.is-classic.has-image .gh-form{background-color:#fff}.gh-cta{display:none;margin-top:max(4vw,40px)}.gh-header:is(.is-highlight,.is-magazine)+.gh-cta{display:block}.gh-cta-inner{align-items:center;background-color:var(--color-lighter-gray);display:flex;flex-direction:column;gap:36px;overflow:hidden;padding:clamp(48px,3.64vw + 33.45px,80px) clamp(40px,2.73vw + 29.09px,64px);position:relative;text-align:center}.gh-cta-content{max-width:640px}.gh-cta-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;letter-spacing:-.021em;line-height:1.1}.gh-cta-description{font-size:1.8rem;letter-spacing:-.015em;line-height:1.4;margin-top:12px}.gh-featured{margin-top:100px}.gh-navigation+.gh-featured{margin-top:64px}.gh-header.is-classic:not(.has-image)+.gh-featured{margin-top:0}.gh-featured-inner{overflow:hidden}.gh-featured-title{border-bottom:1px solid var(--color-border);font-size:1.2rem;font-weight:550;letter-spacing:.025em;margin-bottom:20px;padding-bottom:12px;text-transform:uppercase}.gh-featured-feed{display:grid;gap:var(--grid-gap);grid-template-columns:repeat(4,1fr)}.gh-featured-feed .gh-card{container-name:featured-card;container-type:inline-size}.gh-featured-feed .gh-card-link{align-items:flex-start;display:flex;flex-direction:row-reverse}.gh-featured-feed .gh-card-image{aspect-ratio:1;width:72px}@container featured-card (width < 240px){.gh-featured-feed .gh-card-image{display:none}}@container featured-card (240px <= width <= 270px){.gh-featured-feed .gh-card-image{width:64px}}.gh-featured-feed .gh-card-wrapper{container-name:featured-card-wrapper;container-type:inline-size}.gh-featured-feed .gh-card-title{font-size:1.6rem;font-weight:650;letter-spacing:-.011em}@container featured-card-wrapper (width < 170px){.gh-featured-feed .gh-card-title{font-size:1.6rem}}.gh-featured-feed .gh-card-excerpt{display:none}.gh-featured-feed .gh-card-meta:not(:empty){margin-top:8px}.gh-featured-feed .gh-card:before{background-color:var(--color-border);content:"";height:100%;left:calc(var(--grid-gap)/-2);position:absolute;top:0;width:1px}@media (max-width:1199px){.gh-viewport>.gh-featured .gh-featured-feed{grid-template-columns:repeat(3,1fr)}.gh-viewport>.gh-featured .gh-featured-feed .gh-card:nth-child(4){display:none}}@media (max-width:767px){.gh-viewport>.gh-featured .gh-featured-feed{display:flex;flex-direction:column}}.gh-container{flex-grow:1;margin-top:64px}.gh-container-inner{-moz-column-gap:var(--grid-gap);column-gap:var(--grid-gap);display:grid;grid-template-columns:repeat(16,1fr)}:is(.gh-featured,.gh-cta)+.gh-container{margin-top:max(4vw,40px)}.gh-header.is-classic:not(.has-image)+.gh-container{margin-top:0}.gh-navigation+.gh-container .gh-container-title,:is(.paged,.tag-template,.author-template) .gh-container:not(.has-sidebar) .gh-container-title{display:none}.gh-more{display:none;font-size:calc(1.9rem*var(--factor, 1));font-weight:725;grid-column:1/-1;letter-spacing:-.014em;margin-top:48px}.gh-container.has-sidebar .gh-more{grid-column:span 12}.home-template .gh-feed:has(>:nth-child(12):last-child)~.gh-more{display:block}.gh-more a{align-items:center;display:flex;gap:4px}.gh-more svg{height:18px;margin-top:-1px;width:18px}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-more svg{margin-top:0}.gh-container.has-sidebar .gh-main{grid-column:1/span 12;position:relative}.gh-container.has-sidebar .gh-sidebar{grid-column:13/-1}.gh-container.has-sidebar .gh-main:after{background-color:var(--color-border);content:"";height:100%;position:absolute;right:calc(var(--grid-gap)/-2);top:0;width:1px}.gh-container:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:3/span 12}.gh-container.is-list.no-image:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:4/span 10}.gh-header:is(.is-highlight,.is-magazine)~.gh-container.is-grid:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:1/-1}@media (max-width:1199px){.gh-container-inner{display:block;overflow:hidden}.gh-container.has-sidebar .gh-sidebar{display:none}}.gh-container-title{border-bottom:1px solid var(--color-border);font-size:1.2rem;font-weight:550;grid-column:1/-1;letter-spacing:.025em;margin-bottom:calc(var(--grid-gap)/2);padding-bottom:12px;text-transform:uppercase}.gh-container:not(:has(.gh-card)) .gh-container-title{display:none}.gh-container .gh-feed{gap:var(--grid-gap)}.gh-container .gh-card-meta:not(:empty){margin-top:12px}.gh-container.is-list .gh-feed{container-name:list-feed;container-type:inline-size;display:flex;flex-direction:column}.gh-container.is-list .gh-card-link{align-items:center;flex-direction:row;gap:24px}.gh-container.is-list .no-image .gh-card-link{padding-block:20px}.gh-container.is-list .gh-card-image{aspect-ratio:1.618033;flex-shrink:0;width:220px}@container list-feed (width < 600px){.gh-container.is-list .gh-card-image{width:160px}}.gh-container.is-list .gh-card:not(.no-image) .gh-card-wrapper{max-width:600px}.gh-container.is-list .gh-card-title{--factor:1.05}.gh-container.is-list .no-image .gh-card-title{--factor:1.2}.gh-container.is-list .gh-card-excerpt{margin-top:6px}.gh-container.is-list .gh-card+.gh-card:before{background-color:var(--color-border);content:"";height:1px;left:0;position:absolute;top:calc(var(--grid-gap)/-2);width:100%}.home-template .gh-container.is-list .gh-card:first-child:before{display:none}@media (max-width:767px){.gh-container.is-list .gh-card-link{align-items:flex-start;flex-direction:column}.gh-container.is-list .gh-card-image{width:100%}}.gh-container.is-grid .gh-feed{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));overflow:hidden;row-gap:calc(var(--grid-gap)*1.5)}.gh-container.is-grid .gh-card:before{height:1px;right:calc(var(--grid-gap)/-2);top:calc(var(--grid-gap)/-2)}.gh-container.is-grid .gh-card:after,.gh-container.is-grid .gh-card:before{background-color:var(--color-border);content:"";left:calc(var(--grid-gap)/-2);position:absolute}.gh-container.is-grid .gh-card:after{height:100%;top:0;width:1px}@media (max-width:767px){.gh-container.is-grid .gh-feed{grid-template-columns:repeat(2,1fr)}}@media (max-width:576px){.gh-container.is-grid .gh-feed{display:flex;flex-direction:column}}.gh-container.is-list.no-image .gh-card-image{display:none}.gh-sidebar-inner{position:sticky;top:calc(var(--grid-gap)/2)}.gh-sidebar-title{border-bottom:1px solid var(--color-border);font-size:1.2rem;font-weight:550;grid-column:1/-1;letter-spacing:.025em;margin-bottom:calc(var(--grid-gap)/2);padding-bottom:12px;text-transform:uppercase}.gh-about{align-items:center;background-color:var(--color-lighter-gray);display:flex;flex-direction:column;justify-content:center;min-height:380px;padding:48px 24px;text-align:center}.gh-about-icon{border-radius:50%;height:60px;margin-bottom:24px;width:60px}.gh-about-title{font-size:calc(2.4rem*var(--factor, 1));font-weight:700;letter-spacing:-.019em}.gh-about-description{font-size:1.45rem;line-height:1.4;margin-top:12px}.gh-about .gh-button{margin-top:32px}.gh-recommendations{margin-top:48px}.gh-recommendations .recommendations{display:flex;flex-direction:column;gap:26px;list-style-type:none;margin:0;padding:0}.gh-recommendations .recommendation:first-child{margin-top:4px}.gh-recommendations .recommendation a{display:grid;gap:4px 12px;grid-template-columns:24px auto}.gh-recommendations .recommendation a:hover{opacity:1}.gh-recommendations .recommendation-favicon{border-radius:4px;grid-row:span 2;width:100%}.gh-recommendations .recommendation-title{font-size:1.5rem;font-weight:650;letter-spacing:-.009em;margin-top:-2px}.gh-recommendations .recommendation a:hover .recommendation-title{opacity:.8}.gh-recommendations .recommendation-url{color:var(--color-secondary-text);font-size:1.4rem;line-height:1.25;order:1;overflow:hidden;text-overflow:ellipsis}.gh-recommendations .recommendation-description{color:var(--color-secondary-text);display:-webkit-box;display:none;font-size:1.4rem;grid-column:2;-webkit-line-clamp:2;line-height:1.4;overflow-y:hidden;-webkit-box-orient:vertical}.gh-recommendations button{align-items:center;background-color:transparent;border:0;color:var(--color-darker-gray);cursor:pointer;display:inline-flex;font-size:1.2rem;font-weight:550;gap:2px;letter-spacing:.025em;margin-top:24px;padding:0;text-transform:uppercase}.gh-recommendations button svg{margin-top:-1px;width:12px}.gh-recommendations button:hover{opacity:.8}.gh-article{--container-width:1120px;word-break:break-word}.gh-article-header{margin:clamp(40px,3.64vw + 25.45px,72px) 0 40px}.gh-article-tag{color:var(--ghost-accent-color);font-size:1.3rem;font-weight:500;letter-spacing:.01em;margin-bottom:12px;text-transform:uppercase}.gh-article-title{font-size:calc(clamp(3.4rem, 1.36vw + 2.85rem, 4.6rem)*var(--factor, 1));letter-spacing:-.022em;line-height:1.1}.gh-article-excerpt{font-size:clamp(1.7rem,.23vw + 1.61rem,1.9rem);letter-spacing:-.018em;line-height:1.45;margin-top:clamp(12px,.45vw + 10.18px,16px);max-width:720px}.gh-article-meta{align-items:center;display:flex;gap:8px;margin-left:6px}.gh-article-author-image{display:flex;margin-right:8px}.gh-article-author-image a{background-color:var(--color-light-gray);border:3px solid var(--background-color);border-radius:50%;height:56px;margin:0 -8px;overflow:hidden;position:relative;width:56px}.gh-article-author-image a:first-child{z-index:10}.gh-article-author-image a:nth-child(2){z-index:9}.gh-article-author-image a:nth-child(3){z-index:8}.gh-article-author-image :is(img,svg){height:100%;inset:0;-o-object-fit:cover;object-fit:cover;position:absolute;width:100%}.gh-article-meta-wrapper{display:flex;flex-direction:column;gap:4px}.gh-article-author-name{font-size:1.6rem;font-weight:650;letter-spacing:-.013em}.gh-article-meta-content{color:var(--color-secondary-text);font-size:1.35rem;font-weight:500;letter-spacing:-.006em;line-height:1.2}.gh-article-image{grid-column:wide;margin-top:40px}.gh-article-image img{width:100%}.page-template .gh-article-header{margin-block:72px 32px}.page-template .gh-content:only-child>:first-child:not(.kg-width-full){margin-top:64px}.page-template .gh-content>:last-child:not(.kg-width-full){margin-bottom:6vw}.page-template .gh-footer{margin-top:0}.gh-content{font-size:var(--content-font-size,1.7rem);letter-spacing:-.01em}.gh-content>*+*{margin-bottom:0;margin-top:calc(28px*var(--content-spacing-factor, 1))}.gh-content>.kg-width-full+.kg-width-full:not(.kg-width-full.kg-card-hascaption+.kg-width-full){margin-top:0}.gh-content>[id]:not(:first-child){margin-top:calc(56px*var(--content-spacing-factor, 1))}.post-template .gh-content.drop-cap>p:first-of-type:first-letter{float:left;font-size:3.1em;font-weight:700;line-height:1;margin:0 .2em 0 -1px}.has-serif-body.post-template:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content.drop-cap>p:first-of-type:first-letter{font-size:3.2em}.gh-content>[id]+p{margin-top:calc(12px*var(--content-spacing-factor, 1))}.gh-content>:is(hr,blockquote,iframe){margin-top:calc(48px*var(--content-spacing-factor, 1))!important;position:relative}.gh-content>:is(hr,blockquote,iframe)+*{margin-top:calc(48px*var(--content-spacing-factor, 1))!important}.gh-content h1{font-size:calc(2.2em*var(--factor, 1));letter-spacing:-.02em}.gh-content h2{font-size:calc(1.6em*var(--factor, 1));letter-spacing:-.02em}.gh-content h3{font-size:calc(1.3em*var(--factor, 1));letter-spacing:-.017em}.gh-content a{color:var(--ghost-accent-color);text-decoration:underline}.gh-content .kg-callout-card .kg-callout-text,.gh-content .kg-toggle-card .kg-toggle-content>:is(ul,ol,p){font-size:.95em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-callout-text,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>ol,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>p,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>ul,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>blockquote,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>dl,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ol,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>p,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ul{font-family:var(--font-serif-alt)}.gh-content :is(ul,ol){padding-left:28px}.gh-content :is(li+li,li :is(ul,ol)){margin-top:8px}.gh-content ol ol li{list-style-type:lower-alpha}.gh-content ol ol ol li{list-style-type:lower-roman}.gh-content hr{background-color:var(--color-border);border:0;height:1px;width:100%}.gh-content .gh-table{overflow-x:scroll;-webkit-overflow-scrolling:touch}.gh-content .gh-table table{border-collapse:collapse;border-spacing:0;font-family:var(--font-sans);font-size:1.5rem;vertical-align:top;white-space:nowrap;width:100%}.gh-content .gh-table table th{color:var(--color-darkgrey);font-size:1.2rem;font-weight:700;letter-spacing:.2px;text-align:left;text-transform:uppercase}.gh-content .gh-table table :is(th,td),.gh-content .gh-table table td{border-bottom:1px solid var(--color-border);padding:6px 12px}.gh-content .gh-table table :is(th,td):first-child{padding-left:0}.gh-content .gh-table table :is(th,td):last-child{padding-right:0}.gh-content pre{border-radius:6px;font-size:1.5rem;line-height:1.5em;overflow:auto;padding:16px}.gh-content :not(pre)>code,.gh-content pre{background:var(--color-lighter-gray);font-family:var(--font-mono)}.gh-content :not(pre)>code{border-radius:.25em;font-size:.95em;font-weight:400;line-height:1em;padding:.15em .4em;vertical-align:baseline}.gh-content :not(.kg-card):not(table):not([id])+:is(.kg-card,table){margin-top:calc(48px*var(--content-spacing-factor, 1))}.gh-content :is(.kg-card,table)+:not(.kg-card):not(table):not([id]){margin-top:calc(48px*var(--content-spacing-factor, 1))}.gh-content .kg-card.kg-width-full+:not(.kg-card):not([id]),.gh-content :not(.kg-card):not([id])+.kg-card.kg-width-full{margin-top:calc(68px*var(--content-spacing-factor, 1))}.kg-image{margin-left:auto;margin-right:auto}.kg-embed-card{align-items:center;display:flex;flex-direction:column;width:100%}.kg-gallery-image,.kg-image[width][height]{cursor:pointer}.kg-gallery-image a:hover,.kg-image-card a:hover{opacity:1!important}.kg-card.kg-toggle-card .kg-toggle-heading-text{font-size:2rem;font-weight:700}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-toggle-card .kg-toggle-heading-text{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-toggle-card .kg-toggle-heading-text{font-family:var(--font-mono)}.kg-callout-card.kg-card{border-radius:.25em}.kg-callout-card-accent a{text-decoration:underline}blockquote:not([class]){border-left:4px solid var(--ghost-accent-color);padding-left:2rem}blockquote.kg-blockquote-alt{color:var(--color-secondary-text);font-style:normal;font-weight:400}.kg-card.kg-button-card .kg-btn{font-size:1em;height:unset;line-height:1.2em;padding:.6em 1.2em;text-align:center}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-card.kg-header-card h2.kg-header-card-header{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-card.kg-header-card h2.kg-header-card-header{font-family:var(--font-mono)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .kg-header-card h3.kg-header-card-subheader{font-family:var(--font-serif)}.kg-bookmark-card .kg-bookmark-container{border-radius:.25em!important}.kg-bookmark-card .kg-bookmark-container:hover{opacity:1}.kg-bookmark-card a.kg-bookmark-container,.kg-bookmark-card a.kg-bookmark-container:hover{background:var(--background-color)!important;color:var(--color-darker-gray)!important}.kg-bookmark-card .kg-bookmark-content{padding:1.15em}.kg-bookmark-card .kg-bookmark-title{font-size:.9em}.kg-bookmark-card .kg-bookmark-description{font-size:.8em;margin-top:.3em;max-height:none}.kg-bookmark-card .kg-bookmark-metadata{font-size:.8em}.kg-bookmark-card .kg-bookmark-thumbnail img{border-radius:0 .2em .2em 0}.kg-product-card.kg-card .kg-product-card-image{margin-bottom:12px}.kg-product-card.kg-card a.kg-product-card-button{height:2.8em;margin-top:12px}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-product-card.kg-card .kg-product-card-title{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-product-card.kg-card .kg-product-card-title{font-family:var(--font-mono)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .kg-product-card-description :is(p,ul,ol){font-family:var(--font-serif-alt)}.kg-file-card.kg-card .kg-file-card-container{padding:.6em}.kg-file-card.kg-card .kg-file-card-contents{margin:4px 8px 6px}.kg-file-card.kg-card .kg-file-card-metadata{font-size:.9em}.kg-file-card.kg-card .kg-file-card-filesize:before{margin-left:6px;margin-right:6px}figcaption{font-size:1.4rem;margin-top:12px;text-align:center}.kg-card.kg-width-full figcaption{padding:0 16px}figcaption a{color:var(--ghost-accent-color);text-decoration:underline}.gh-comments{margin-top:48px}.post-template .gh-container{margin-top:120px}.post-template .gh-container-inner{display:block}.post-template .gh-container.is-grid .gh-feed{grid-template-columns:repeat(4,1fr)}.post-template .gh-container .gh-container-title{display:block}.gh-archive{display:grid;gap:var(--grid-gap);grid-template-columns:repeat(16,1fr);margin-block:80px 24px}.gh-archive.has-image{margin-top:48px}.gh-archive-inner{border-bottom:1px solid var(--color-border);display:grid;gap:var(--grid-gap);grid-column:1/-1;grid-template-columns:1fr 1fr;padding-bottom:clamp(40px,2.73vw + 29.09px,64px)}.gh-archive.has-image .gh-archive-inner{align-items:center;grid-column:1/-1}.gh-archive:not(.has-sidebar):not(.has-image) .gh-archive-inner{grid-column:3/span 12}.gh-archive .gh-article-image{grid-column:auto;margin-top:0}:is(.tag-template,.author-template) .gh-container{margin-top:0}.author-template .gh-archive-inner{display:flex;flex-direction:row-reverse;gap:24px;justify-content:flex-end}.author-template .gh-article-image{border-radius:50%;height:120px;margin-top:0;-o-object-fit:cover;object-fit:cover;width:120px}.author-template .gh-article-title{font-size:3.6rem}.gh-author-meta{color:var(--color-secondary-text);display:flex;font-size:1.5rem;font-weight:550;gap:10px;margin-top:14px}.gh-author-meta a{color:inherit}.gh-author-social{align-items:center;display:flex;gap:16px;padding-left:3px}.gh-author-social svg{height:20px;width:20px}@media (max-width:1199px){.gh-archive{display:block}}@media (max-width:767px){.gh-archive-inner{align-items:flex-start;display:flex}.author-template .gh-archive-inner,.gh-archive-inner{flex-direction:column-reverse}}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]){--factor:1.15}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]){--factor:1.1}.has-sans-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-sans))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-serif));font-weight:550}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-mono))}.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .is-body{font-family:var(--gh-font-body,var(--font-sans))}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .is-body{font-family:var(--gh-font-body,var(--font-serif-alt))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-classic .gh-header-title{font-weight:550;letter-spacing:-.015em}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-classic .gh-header-title{letter-spacing:-.01em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form{border-radius:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-card-title{font-size:calc(2rem*var(--factor, 1));letter-spacing:-.006em;line-height:1.15}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-featured-feed .gh-card-title{font-size:calc(1.6rem*var(--factor, 1))}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-featured-feed .gh-card-title{font-size:calc(1.5rem*var(--factor, 1));letter-spacing:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-highlight .gh-featured-feed .gh-card-title{font-size:clamp(1.6rem,.23vw + 1.51rem,1.8rem)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-card-title{font-size:calc(1.8rem*var(--factor, 1));line-height:1.2}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-about-title{letter-spacing:-.009em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-article-title,.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-footer-signup-header{letter-spacing:-.019em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]){--content-font-size:1.9rem}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-card-excerpt{font-size:1.65rem;letter-spacing:.0005em;line-height:1.4}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-header.is-highlight .gh-card:first-child .gh-card-excerpt,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-excerpt{font-size:1.8rem;letter-spacing:-.001em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-highlight .gh-header-left .gh-card-title,.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-title{font-size:clamp(3.2rem,1.82vw + 2.47rem,4.9rem);font-weight:550}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-about-description{font-size:1.6rem}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-article-excerpt,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-footer-signup-subhead{letter-spacing:0}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.gh-button,.gh-form,.gh-form-input),body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button,.gh-form,.gh-form-input),body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button,.gh-form,.gh-form-input){border-radius:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-cta-title{font-size:4.8rem}.gh-footer{color:var(--color-darker-gray);font-size:1.5rem;margin-top:120px}.gh-footer a:not(.gh-button){color:inherit}.gh-footer.has-accent-color{background-color:var(--ghost-accent-color)}.gh-footer.has-accent-color .gh-footer-bar{border-top:0}.gh-footer.has-accent-color .gh-button{background-color:#fff;color:#15171a}.gh-footer-bar{align-items:center;border-block:1px solid var(--color-border);-moz-column-gap:32px;column-gap:32px;display:grid;font-weight:550;grid-template-columns:1fr auto 1fr;margin-bottom:120px;padding-block:28px}.gh-footer-logo{font-family:var(--gh-font-heading,var(--font-sans));font-size:calc(2.4rem*var(--factor, 1));font-weight:725;letter-spacing:-.015em;position:relative;white-space:nowrap}.gh-footer-logo img{max-height:40px}.gh-footer-menu .nav{display:flex;flex-wrap:wrap;gap:8px 28px;justify-content:center;list-style-type:none;margin:0;padding:0}.gh-footer-copyright{text-align:right;white-space:nowrap}.gh-footer-copyright a{text-decoration:underline}.gh-footer-signup{align-items:center;display:flex;flex-direction:column;margin-bottom:120px;text-align:center}.gh-footer-signup-header{font-size:calc(clamp(2.8rem,1.36vw + 2.25rem,4rem)*var(--factor, 1));font-weight:700;letter-spacing:-.03em}.gh-footer-signup-subhead{font-size:1.8rem;font-weight:450;letter-spacing:-.014em;line-height:1.4;margin-top:12px;max-width:640px;opacity:.75}.gh-footer-signup .gh-form{margin-top:40px}@media (max-width:991px){.gh-footer-bar{display:flex;flex-direction:column;gap:20px}}.gh-social-links{display:flex;gap:20px;justify-content:center;margin-bottom:32px}.gh-social-links a{will-change:opacity}.gh-social-links svg{height:20px;width:20px}.pswp{backface-visibility:hidden;display:none;height:100%;left:0;outline:none;overflow:hidden;position:absolute;top:0;touch-action:none;width:100%;z-index:3999999;-webkit-text-size-adjust:100%}.pswp img{max-width:none}.pswp--animate_opacity{opacity:.001;transition:opacity 333ms cubic-bezier(.4,0,.22,1);will-change:opacity}.pswp--open{display:block}.pswp--zoom-allowed .pswp__img{cursor:zoom-in}.pswp--zoomed-in .pswp__img{cursor:grab}.pswp--dragging .pswp__img{cursor:grabbing}.pswp__bg{backface-visibility:hidden;background-color:rgba(0,0,0,.85);opacity:0;transform:translateZ(0);transition:opacity 333ms cubic-bezier(.4,0,.22,1);will-change:opacity}.pswp__bg,.pswp__scroll-wrap{height:100%;left:0;position:absolute;top:0;width:100%}.pswp__scroll-wrap{overflow:hidden}.pswp__container,.pswp__zoom-wrap{backface-visibility:hidden;bottom:0;left:0;position:absolute;right:0;top:0;touch-action:none}.pswp__container,.pswp__img{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.pswp__zoom-wrap{position:absolute;transform-origin:left top;transition:transform 333ms cubic-bezier(.4,0,.22,1);width:100%}.pswp--animated-in .pswp__bg,.pswp--animated-in .pswp__zoom-wrap{transition:none}.pswp__item{bottom:0;overflow:hidden;right:0}.pswp__img,.pswp__item{left:0;position:absolute;top:0}.pswp__img{height:auto;width:auto}.pswp__img--placeholder{backface-visibility:hidden}.pswp__img--placeholder--blank{background:var(--color-black)}.pswp--ie .pswp__img{height:auto!important;left:0;top:0;width:100%!important}.pswp__error-msg{color:var(--color-secondary-text);font-size:14px;left:0;line-height:16px;margin-top:-8px;position:absolute;text-align:center;top:50%;width:100%}.pswp__error-msg a{color:var(--color-secondary-text);text-decoration:underline}.pswp__button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;box-shadow:none;cursor:pointer;display:block;float:right;height:44px;margin:0;overflow:visible;padding:0;position:relative;transition:opacity .2s;width:44px}.pswp__button:focus,.pswp__button:hover{opacity:1}.pswp__button:active{opacity:.9;outline:none}.pswp__button::-moz-focus-inner{border:0;padding:0}.pswp__ui--over-close .pswp__button--close{opacity:1}.pswp__button,.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{background:url(../images/default-skin.png) 0 0 no-repeat;background-size:264px 88px;height:44px;width:44px}@media (min-resolution:1.1dppx),(min-resolution:105dpi){.pswp--svg .pswp__button,.pswp--svg .pswp__button--arrow--left:before,.pswp--svg .pswp__button--arrow--right:before{background-image:url(../images/default-skin.svg)}.pswp--svg .pswp__button--arrow--left,.pswp--svg .pswp__button--arrow--right{background:none}}.pswp__button--close{background-position:0 -44px}.pswp__button--share{background-position:-44px -44px}.pswp__button--fs{display:none}.pswp--supports-fs .pswp__button--fs{display:block}.pswp--fs .pswp__button--fs{background-position:-44px 0}.pswp__button--zoom{background-position:-88px 0;display:none}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__button--zoom{background-position:-132px 0}.pswp--touch .pswp__button--arrow--left,.pswp--touch .pswp__button--arrow--right{visibility:hidden}.pswp__button--arrow--left,.pswp__button--arrow--right{background:none;height:100px;margin-top:-50px;position:absolute;top:50%;width:70px}.pswp__button--arrow--left{left:0}.pswp__button--arrow--right{right:0}.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{content:"";height:30px;position:absolute;top:35px;width:32px}.pswp__button--arrow--left:before{background-position:-138px -44px;left:6px}.pswp__button--arrow--right:before{background-position:-94px -44px;right:6px}.pswp__counter{color:var(--color-white);font-size:11px;font-weight:700;height:44px;left:0;line-height:44px;padding:0 15px;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pswp__caption{bottom:0;left:0;min-height:44px;position:absolute;width:100%}.pswp__caption__center{color:var(--color-white);font-size:11px;line-height:1.6;margin:0 auto;max-width:420px;padding:25px 15px 30px;text-align:center}.pswp__caption__center .post-caption-title{font-size:15px;font-weight:500;margin-bottom:7px;text-transform:uppercase}.pswp__caption__center .post-caption-meta-item+.post-caption-meta-item:before{content:"\02022";padding:0 4px}.pswp__caption--empty{display:none}.pswp__caption--fake{visibility:hidden}.pswp__preloader{direction:ltr;height:44px;left:50%;margin-left:-22px;opacity:0;position:absolute;top:0;transition:opacity .25s ease-out;width:44px;will-change:opacity}.pswp__preloader__icn{height:20px;margin:12px;width:20px}.pswp__preloader--active{opacity:1}.pswp__preloader--active .pswp__preloader__icn{background:url(../images/preloader.gif) 0 0 no-repeat}.pswp--css_animation .pswp__preloader--active{opacity:1}.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn{animation:clockwise .5s linear infinite}.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut{animation:donut-rotate 1s cubic-bezier(.4,0,.22,1) infinite}.pswp--css_animation .pswp__preloader__icn{background:none;height:14px;left:15px;margin:0;opacity:.75;position:absolute;top:15px;width:14px}.pswp--css_animation .pswp__preloader__cut{height:14px;overflow:hidden;position:relative;width:7px}.pswp--css_animation .pswp__preloader__donut{background:none;border-bottom:2px solid transparent;border-left:2px solid transparent;border-radius:50%;border-right:2px solid var(--color-white);border-top:2px solid var(--color-white);box-sizing:border-box;height:14px;left:0;margin:0;position:absolute;top:0;width:14px}@media screen and (max-width:1024px){.pswp__preloader{float:right;left:auto;margin:0;position:relative;top:auto}}@keyframes clockwise{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes donut-rotate{0%{transform:rotate(0)}50%{transform:rotate(-140deg)}to{transform:rotate(0)}}.pswp__ui{opacity:1;visibility:visible;z-index:1550;-webkit-font-smoothing:auto}.pswp__top-bar{height:44px;left:0;position:absolute;top:0;width:100%}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right,.pswp__caption,.pswp__top-bar{backface-visibility:hidden;transition:opacity 333ms cubic-bezier(.4,0,.22,1);will-change:opacity}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right{visibility:visible}.pswp__ui--idle .pswp__button--arrow--left,.pswp__ui--idle .pswp__button--arrow--right,.pswp__ui--idle .pswp__top-bar{opacity:0}.pswp__ui--hidden .pswp__button--arrow--left,.pswp__ui--hidden .pswp__button--arrow--right,.pswp__ui--hidden .pswp__caption,.pswp__ui--hidden .pswp__top-bar{opacity:.001}.pswp__ui--one-slide .pswp__button--arrow--left,.pswp__ui--one-slide .pswp__button--arrow--right,.pswp__ui--one-slide .pswp__counter{display:none}.pswp__element--disabled{display:none!important}.pswp--minimal--dark .pswp__top-bar{background:none}.gh-meta-share{align-items:center;display:flex;justify-content:space-between;margin-top:20px}.has-light-text .gh-button-share{border-color:hsla(0,0%,100%,.25);color:hsla(0,0%,100%,.85)}.has-light-text .gh-button-share:hover{border-color:hsla(0,0%,100%,.85)}.gh-button-share{align-items:center;background:transparent;border:1px solid rgba(0,0,0,.15);border-radius:999px;color:rgba(0,0,0,.85);cursor:pointer;display:inline-flex;transition:all .4s ease}.gh-button-share:hover{border-color:rgba(0,0,0,.5)}/*# sourceMappingURL=screen.css.map */
1
+ :root{--color-white:#fff;--color-lighter-gray:rgba(0,0,0,.05);--color-light-gray:#e6e6e6;--color-mid-gray:#ccc;--color-dark-gray:#444;--color-darker-gray:#15171a;--color-black:#000;--color-primary-text:var(--color-darker-gray);--color-secondary-text:rgba(0,0,0,.55);--color-border:rgba(0,0,0,.08);--color-dark-border:rgba(0,0,0,.55);--font-sans:Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-serif:"EB Garamond", Georgia, Times, serif;--font-serif-alt:Georgia, Times, serif;--font-mono:"JetBrains Mono", Menlo, Consolas, Monaco, "Liberation Mono", "Lucida Console", monospace;--container-width:1320px;--container-gap:clamp(24px, 1.7032rem + 1.9355vw, 48px);--grid-gap:42px}:is(.gh-navigation,.gh-footer).has-accent-color,:root.has-light-text{--color-lighter-gray:hsla(0,0%,100%,.1);--color-darker-gray:#fff;--color-secondary-text:hsla(0,0%,100%,.64);--color-border:hsla(0,0%,100%,.15);--color-dark-border:hsla(0,0%,100%,.5)}*,:after,:before{box-sizing:border-box}*{margin:0}html{font-size:62.5%}body{line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}canvas,img,picture,svg,video{display:block;height:auto;max-width:100%}iframe{display:block}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{line-height:1.2}sub,sup{line-height:1}body{font-family:var(--gh-font-body,var(--font-sans));font-size:1.6rem;background-color:var(--background-color);color:var(--color-primary-text)}h1,h2,h3,h4,h5,h6{font-family:var(--gh-font-heading,var(--font-sans))}a{color:var(--color-darker-gray);text-decoration:none}a:hover{opacity:.8}.gh-button{display:inline-flex;gap:.4em;align-items:center;justify-content:center;padding:.8em 1.4em;font-size:1.5rem;font-weight:600;letter-spacing:-.004em;line-height:1;color:var(--color-white);cursor:pointer;background-color:var(--ghost-accent-color);border:0;border-radius:100px}.gh-button:hover{opacity:.95}.gh-icon-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;color:var(--color-darker-gray);cursor:pointer;background-color:transparent;border:0;outline:none}.gh-icon-button:hover :is(svg,span){opacity:.8}.gh-icon-button svg{width:20px;height:20px}.gh-form{display:flex;align-items:center;position:relative;max-width:560px;width:100%;height:56px;font-size:1.7rem;font-weight:450;letter-spacing:-.008em;border-radius:40px;background-color:var(--color-lighter-gray);transition:background-color .2s ease}.gh-form.success{pointer-events:none}.gh-form.error{box-shadow:0 0 0 1px red}.gh-form:hover{background-color:rgba(0,0,0,.065)}.gh-footer.has-accent-color .gh-form:hover,.has-light-text .gh-form:hover{background-color:hsla(0,0%,100%,.15)}.gh-form-input{position:absolute;inset:0;padding-inline:26px;width:100%;height:100%;font-size:inherit;letter-spacing:inherit;line-height:1.1;border:0;border-radius:40px;background-color:transparent;outline:none;transition:.3s ease-in-out}.gh-form-input::-moz-placeholder{color:rgba(0,0,0,.3)}.gh-form-input::placeholder,button.gh-form-input{color:rgba(0,0,0,.3)}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form-input,body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input,body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input{padding-inline:20px}.gh-form.gh-form.success .gh-form-input{opacity:.5}.gh-footer.has-accent-color .gh-form-input,.has-light-text .gh-form-input{color:#fff}.gh-footer.has-accent-color .gh-form-input::-moz-placeholder,.has-light-text .gh-form-input::-moz-placeholder{color:hsla(0,0%,100%,.55)}.gh-footer.has-accent-color .gh-form-input::placeholder,.has-light-text .gh-form-input::placeholder,.has-light-text button.gh-form-input{color:hsla(0,0%,100%,.55)}.gh-header.is-classic.has-image .gh-form-input{color:#15171a}.gh-header.is-classic.has-image .gh-form-input::-moz-placeholder{color:rgba(0,0,0,.5)}.gh-header.is-classic.has-image .gh-form-input::placeholder,.gh-header.is-classic.has-image .gh-form>svg,.gh-header.is-classic.has-image button.gh-form-input{color:rgba(0,0,0,.5)}button.gh-form-input{padding-inline-start:56px;text-align:left;color:var(--color-secondary-text);cursor:pointer}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) button.gh-form-input,body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input,body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input{padding-inline-start:50px}.gh-form .gh-button{position:absolute;right:6px;min-width:132px;padding-inline:24px;height:44px;font-size:inherit}.gh-form>svg{position:relative;left:22px;width:20px;height:20px;color:var(--color-secondary-text)}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form>svg{left:16px}.gh-form .gh-button svg{display:none;position:absolute;margin-top:1px}.gh-form .gh-button>span:last-child{display:none}.gh-form:is(.loading,.success) .gh-button>span:first-child{visibility:hidden}.gh-form.loading .gh-button svg:first-of-type{display:block}.gh-form.success .gh-button>span:first-child{display:none}.gh-form.success .gh-button>span:last-child{display:inline}.gh-form [data-members-error]{position:absolute;top:100%;margin-top:10px;width:100%;font-size:1.4rem;line-height:1.4}@media (max-width:576px){.gh-form{font-size:1.6rem}.gh-form .gh-button{min-width:104px;padding-inline:12px}}.gh-viewport{position:relative;display:flex;flex-direction:column;min-height:100vh}.gh-outer{padding:0 max(4vmin,20px)}.gh-outer .gh-outer{padding:0}.gh-inner{margin:0 auto;max-width:var(--container-width);width:100%}.gh-main{flex-grow:1}.gh-canvas,.kg-width-full.kg-content-wide{--main:min(var(--content-width, 720px), 100% - var(--container-gap) * 2);--wide:minmax(0, calc((var(--container-width, 1200px) - var(--content-width, 720px))/2));--full:minmax(var(--container-gap), 1fr);display:grid;grid-template-columns:[full-start] var(--full) [wide-start] var(--wide) [main-start] var(--main) [main-end] var(--wide) [wide-end] var(--full) [full-end]}.gh-canvas>*{grid-column:main}.kg-content-wide>div,.kg-width-wide{grid-column:wide}.kg-width-full{grid-column:full}.gh-navigation{height:100px;font-size:1.5rem;font-weight:550;background-color:var(--background-color);color:var(--color-darker-gray)}.gh-navigation :is(.gh-navigation-logo,a:not(.gh-button),.gh-icon-button){color:inherit}.gh-navigation-inner{display:grid;grid-auto-flow:row dense;-moz-column-gap:24px;column-gap:24px;align-items:center;height:100%}.gh-navigation-brand{line-height:1}.gh-navigation-logo{position:relative;font-family:var(--gh-font-heading,var(--font-sans));font-size:calc(2.4rem*var(--factor, 1));font-weight:725;letter-spacing:-.015em;white-space:nowrap}.gh-navigation-logo img{max-height:40px}.gh-navigation-menu{display:flex;gap:24px;align-items:center}.gh-navigation .nav{gap:28px;padding:0;margin:0;white-space:nowrap;list-style:none}.gh-navigation .nav,.nav a{display:inline-flex;align-items:center}.nav a{gap:.35em;vertical-align:middle}.nav-icon{display:block;width:1em;height:1em;flex:0 0 auto;-o-object-fit:contain;object-fit:contain}.gh-navigation .gh-more-toggle{position:relative;margin:0 -6px;font-size:inherit;text-transform:inherit}.gh-navigation .gh-more-toggle svg{width:24px;height:24px}.gh-navigation-actions{display:flex;gap:24px;align-items:center;justify-content:flex-end;background-color:var(--background-color)}.gh-navigation.has-accent-color .gh-navigation-actions{background-color:var(--ghost-accent-color)}.gh-navigation-members{display:flex;gap:20px;align-items:center;white-space:nowrap}.gh-navigation-members .gh-button{font-size:inherit;font-weight:600}.gh-search{margin-right:-2px;margin-left:-2px}@media (max-width:767px){.gh-navigation-logo{white-space:normal}.gh-navigation-members{flex-direction:column-reverse;gap:16px;width:100%}.gh-navigation-actions .gh-search{display:none}}@media (min-width:768px){.gh-navigation-brand .gh-search{display:none}.gh-navigation:not(.is-dropdown-loaded) .gh-navigation-menu .nav>li{opacity:0}}.gh-navigation.has-accent-color{background-color:var(--ghost-accent-color)}.gh-navigation.has-accent-color .gh-button{background-color:#fff;color:#15171a}.gh-navigation.is-left-logo .gh-navigation-inner{grid-template-columns:auto 1fr auto}@media (min-width:768px){.gh-navigation.is-left-logo .gh-navigation-logo:not(:has(img)){top:-2px}}@media (min-width:992px){.gh-navigation.is-left-logo .gh-navigation-menu{margin-right:100px;margin-left:16px}}.gh-navigation.is-middle-logo .gh-navigation-inner{grid-template-columns:1fr auto 1fr}.gh-navigation.is-middle-logo .gh-navigation-brand{grid-column-start:2}.gh-navigation.is-middle-logo .gh-navigation-actions{gap:28px}@media (min-width:992px){.gh-navigation.is-middle-logo .gh-navigation-menu{margin-right:64px}}.gh-navigation.is-stacked{position:relative;height:auto}.gh-navigation.is-stacked .gh-navigation-inner{grid-template-columns:1fr auto 1fr}.gh-navigation.is-stacked .gh-navigation-brand{display:flex;align-items:center;grid-row-start:1;grid-column-start:2;min-height:80px}@media (max-width:767px){.gh-navigation.is-stacked .gh-navigation-brand{min-height:unset}}@media (min-width:992px){.gh-navigation.is-stacked .gh-navigation-inner{padding:0}.gh-navigation.is-stacked .gh-navigation-brand{display:flex;align-items:center;height:80px}.gh-navigation.is-stacked .gh-navigation-menu{grid-row-start:2;grid-column:1/4;justify-content:center;height:60px;margin:0 48px}.gh-navigation.is-stacked .gh-navigation-menu:after,.gh-navigation.is-stacked .gh-navigation-menu:before{position:absolute;top:80px;left:0;width:100%;height:1px;content:"";background-color:var(--color-border)}.gh-navigation.is-stacked .gh-navigation-menu:after{top:140px}.gh-navigation.is-stacked .gh-navigation-actions{grid-row-start:1;grid-column:1/4;justify-content:space-between}.gh-navigation.is-stacked .gh-navigation-actions .gh-search{display:flex;gap:10px;width:auto}}.gh-dropdown{position:absolute;top:100%;right:-16px;z-index:90;width:200px;padding:12px 0;margin-top:24px;text-align:left;visibility:hidden;background-color:#fff;border-radius:5px;box-shadow:0 0 0 1px rgba(0,0,0,.04),0 7px 20px -5px rgba(0,0,0,.15);opacity:0;transition:opacity .3s,transform .2s;transform:translate3d(0,6px,0)}.gh-dropdown.is-left{right:auto;left:-16px}.is-dropdown-mega .gh-dropdown{display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:column;-moz-column-gap:40px;column-gap:40px;width:auto;padding:20px 32px}.is-dropdown-open .gh-dropdown{visibility:visible;opacity:1;transform:translateY(0)}.gh-dropdown li a{display:block;padding:7px 20px;line-height:1.5;white-space:normal;color:#15171a!important}.is-dropdown-mega .gh-dropdown li a{padding:8px 0}.gh-burger{display:flex;justify-content:center;align-items:center;position:relative;display:none;margin-right:-7px;margin-left:4px}.gh-burger svg{width:24px;height:24px}.gh-burger svg:last-child,.is-open .gh-burger svg:first-child{display:none}.is-open .gh-burger svg:last-child{display:block}@media (max-width:767px){.gh-burger{display:flex}#gh-navigation{height:64px}#gh-navigation .gh-navigation-inner{grid-template-rows:auto 1fr auto;grid-template-columns:1fr;gap:48px}#gh-navigation .gh-navigation-brand{display:grid;grid-template-columns:1fr auto auto;grid-column-start:1;align-items:center;height:64px}#gh-navigation .gh-navigation-logo{font-size:2.2rem}#gh-navigation .gh-navigation-actions,#gh-navigation .gh-navigation-menu{position:fixed;justify-content:center;visibility:hidden;opacity:0}#gh-navigation .gh-navigation-menu{transition:none;transform:translateY(0)}#gh-navigation .nav{gap:20px;align-items:center;line-height:1.4}#gh-navigation .nav a{font-size:1.75rem;font-weight:600;text-transform:none}#gh-navigation .nav li{opacity:0;transform:translateY(-4px)}#gh-navigation .gh-navigation-actions{text-align:center}#gh-navigation :is(.gh-button,a[data-portal=signin]){opacity:0;transform:translateY(8px)}#gh-navigation .gh-button{width:100%;font-size:1.75rem;text-transform:none}#gh-navigation a[data-portal=signin]{font-size:1.75rem}#gh-main{transition:opacity .4s}.is-open#gh-navigation{position:fixed;inset:0;z-index:3999999;height:100%;overflow-y:scroll;-webkit-overflow-scrolling:touch}.is-open#gh-navigation .gh-navigation-actions,.is-open#gh-navigation .gh-navigation-menu{position:static;visibility:visible;opacity:1}.is-open#gh-navigation .nav{display:flex;flex-direction:column}.is-open#gh-navigation .nav li{opacity:1;transition:transform .2s,opacity .2s;transform:translateY(0)}.is-open#gh-navigation .gh-navigation-actions{position:sticky;right:0;bottom:0;left:0;display:inline-flex;flex-direction:column;gap:12px;align-items:center;padding:var(--container-gap) 0}.is-open#gh-navigation :is(.gh-button,a[data-portal=signin]){opacity:1;transition:transform .4s,opacity .4s;transition-delay:.2s;transform:translateY(0)}.is-open#gh-navigation a[data-portal=signin]{transition-delay:.4s}.is-open#gh-main{opacity:0}}.gh-card{position:relative}.gh-card-link{display:flex;flex-direction:column;gap:20px}.gh-card-link:hover{opacity:1}.gh-card-image{position:relative;flex-shrink:0;aspect-ratio:16/9}.gh-card-image img{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.gh-card-wrapper{flex-grow:1}.gh-card-tag{display:none;margin-bottom:4px;font-size:1.2rem;font-weight:500;letter-spacing:.01em;text-transform:uppercase}.gh-card-title{font-size:calc(1.9rem*var(--factor, 1));font-weight:725;letter-spacing:-.014em;line-height:1.3}.gh-card-link:hover .gh-card-title{opacity:.8}.gh-card-excerpt{display:-webkit-box;overflow-y:hidden;margin-top:8px;font-size:1.45rem;line-height:1.4;-webkit-line-clamp:2;-webkit-box-orient:vertical}.gh-card-meta{align-items:center;padding-bottom:1px;font-size:1.25rem;font-weight:500;line-height:1.4;letter-spacing:-.004em;color:var(--color-secondary-text)}.gh-card-meta svg{position:relative;top:1px;display:inline-block;width:12px;height:12px;margin-right:2px}.gh-card-meta:not(:empty){margin-top:8px}.gh-card-author+.gh-card-date:before{content:"—";margin-right:4px}.gh-header{position:relative;margin-top:40px}.gh-header-inner{position:relative;overflow:hidden}.gh-header.is-magazine .gh-header-inner{display:grid;grid-template-columns:repeat(16,1fr);gap:var(--grid-gap)}.gh-header.is-magazine .gh-header-inner>div{display:flex;flex-direction:column;gap:var(--grid-gap);grid-row:1}.gh-header.is-magazine .gh-header-left{grid-column:1/span 4}.gh-header.is-magazine .gh-header-inner>.gh-card{position:relative;grid-column:5/span 8}.gh-header.is-magazine .gh-header-right{grid-column:13/-1}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-link{gap:28px}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-image{aspect-ratio:1.618033}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-tag{display:block;margin-bottom:12px}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;line-height:1.1;letter-spacing:-.022em}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-excerpt{margin-top:clamp(12px,.45vw + 10.18px,16px);font-size:1.8rem;letter-spacing:-.02em;max-width:90%}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-meta:not(:empty){margin-top:14px}.gh-header.is-magazine :is(.gh-header-left,.gh-header-right) .gh-card:last-child .gh-card-image{display:none}.gh-header.is-magazine .gh-header-inner>div .gh-card-excerpt{display:none}.gh-header.is-magazine .gh-header-inner>.gh-card:after,.gh-header.is-magazine .gh-header-inner>.gh-card:before{position:absolute;top:0;left:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}.gh-header.is-magazine .gh-header-inner>.gh-card:after{right:calc(var(--grid-gap)/-2);left:auto}.gh-header.is-magazine .gh-header-inner>div .gh-card+.gh-card:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}@media (max-width:1199px){.gh-header.is-magazine .gh-header-inner{grid-template-columns:repeat(12,1fr)}.gh-header.is-magazine .gh-header-inner>.gh-card{grid-column:1/span 8}.gh-header.is-magazine .gh-header-left{grid-column:9/-1}.gh-header.is-magazine .gh-header-inner>div.gh-header-right{grid-column:1/-1;grid-row:2;flex-direction:row}.gh-header.is-magazine .gh-header-right .gh-card{flex:1}.gh-header.is-magazine .gh-header-right .gh-card:last-child .gh-card-image{display:block}.gh-header.is-magazine .gh-header-right{position:relative}.gh-header.is-magazine .gh-header-right:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}.gh-header.is-magazine .gh-header-right .gh-card:before{display:none}.gh-header.is-magazine .gh-header-right .gh-card:after{position:absolute;top:0;right:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}}@media (max-width:991px){.gh-header.is-magazine .gh-header-left .gh-card:nth-child(2) .gh-card-image{display:none}}@media (max-width:767px){.gh-header.is-magazine .gh-header-inner{display:flex;flex-direction:column;gap:var(--grid-gap)}.gh-header.is-magazine .gh-header-inner>div.gh-header-right{flex-direction:column}.gh-header.is-magazine .gh-card-image{display:block!important}.gh-header.is-magazine .gh-card:before{display:block!important;position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}}.gh-header.is-highlight .gh-header-inner{display:grid;grid-template-columns:repeat(16,1fr);gap:var(--grid-gap)}.gh-header.is-highlight .gh-header-left{position:relative;grid-column:span 8}.gh-header.is-highlight .gh-header-left .gh-card{grid-column:span 8;grid-row:span 3}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-link{gap:28px}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-image{aspect-ratio:3/2}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-tag{display:block;margin-bottom:12px}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;line-height:1.1;letter-spacing:-.022em}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-excerpt{margin-top:clamp(12px,.45vw + 10.18px,16px);font-size:1.8rem}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-meta:not(:empty){margin-top:12px}.gh-header.is-highlight .gh-header-middle{position:relative;display:flex;flex-direction:column;gap:var(--grid-gap);grid-column:9/span 4}.gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt,.gh-header.is-highlight .gh-header-middle .gh-card:last-child .gh-card-image{display:none}.gh-header.is-highlight .gh-header-right{grid-column:13/-1}.gh-header.is-highlight .gh-featured{margin-top:0;padding:0}.gh-header.is-highlight .gh-featured-feed{display:flex;flex-direction:column}.gh-header.is-highlight .gh-featured-feed .gh-card-title{font-size:clamp(1.4rem,.23vw + 1.31rem,1.6rem)}.gh-header.is-highlight .gh-header-left:after,.gh-header.is-highlight .gh-header-middle:after{position:absolute;top:0;right:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}.gh-header.is-highlight .gh-card:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}.gh-header.is-highlight .gh-featured .gh-card:first-child:before{display:none}@media (max-width:1199px){.gh-header.is-highlight .gh-header-inner{grid-template-columns:repeat(9,1fr)}.gh-header.is-highlight .gh-header-left{grid-column:span 6}.gh-header.is-highlight .gh-header-middle{grid-column:7/-1}.gh-header.is-highlight .gh-header-right{grid-column:1/-1}.gh-header.is-highlight .gh-featured-feed{display:grid;grid-template-columns:repeat(3,1fr)}.gh-header.is-highlight .gh-featured-feed .gh-card:before{width:calc(100% + var(--grid-gap))}.gh-header.is-highlight .gh-featured-feed .gh-card:after{position:absolute;top:0;left:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}}@media (max-width:991px){.gh-header.is-highlight .gh-header-middle .gh-card:nth-child(2) .gh-card-image{display:none}}@media (max-width:767px){.gh-header.is-highlight .gh-header-inner{display:flex;flex-direction:column}.gh-header.is-highlight .gh-featured-feed{display:flex}.gh-header.is-highlight .gh-card-image{display:block!important}.gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt{display:-webkit-box}}.gh-header.is-classic{display:flex;margin-top:0;padding-block:160px}.gh-header.is-classic .gh-header-inner{display:flex;flex-direction:column;align-items:center;gap:48px;overflow:unset;margin:auto;max-width:1020px;text-align:center}.gh-header.is-classic .gh-header-title{font-size:calc(clamp(3rem, 1.82vw + 2.27rem, 4.6rem)*var(--factor, 1));line-height:1.1;letter-spacing:-.028em}.gh-header.is-classic.has-image{margin-top:0}.gh-header.is-classic.has-image:before{position:absolute;inset:0;content:"";opacity:.3;background-color:var(--color-black);transition:opacity 1.5s ease}.gh-header.is-classic.has-image .gh-header-inner{color:#fff}.gh-header.is-classic.has-image .gh-header-image{position:absolute;inset:0;z-index:-1;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.gh-header.is-classic.has-image .gh-form{background-color:#fff}.gh-cta{display:none;margin-top:max(4vw,40px)}.gh-header:is(.is-highlight,.is-magazine)+.gh-cta{display:block}.gh-cta-inner{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;gap:36px;padding:clamp(48px,3.64vw + 33.45px,80px) clamp(40px,2.73vw + 29.09px,64px);text-align:center;background-color:var(--color-lighter-gray)}.gh-cta-content{max-width:640px}.gh-cta-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;line-height:1.1;letter-spacing:-.021em}.gh-cta-description{margin-top:12px;font-size:1.8rem;line-height:1.4;letter-spacing:-.015em}.gh-featured{margin-top:100px}.gh-navigation+.gh-featured{margin-top:64px}.gh-header.is-classic:not(.has-image)+.gh-featured{margin-top:0}.gh-featured-inner{overflow:hidden}.gh-featured-title{margin-bottom:20px;padding-bottom:12px;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.gh-featured-feed{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--grid-gap)}.gh-featured-feed .gh-card{container-type:inline-size;container-name:featured-card}.gh-featured-feed .gh-card-link{display:flex;flex-direction:row-reverse;align-items:flex-start}.gh-featured-feed .gh-card-image{width:72px;aspect-ratio:1}@container featured-card (width < 240px){.gh-featured-feed .gh-card-image{display:none}}@container featured-card (240px <= width <= 270px){.gh-featured-feed .gh-card-image{width:64px}}.gh-featured-feed .gh-card-wrapper{container-type:inline-size;container-name:featured-card-wrapper}.gh-featured-feed .gh-card-title{font-size:1.6rem;font-weight:650;letter-spacing:-.011em}@container featured-card-wrapper (width < 170px){.gh-featured-feed .gh-card-title{font-size:1.6rem}}.gh-featured-feed .gh-card-excerpt{display:none}.gh-featured-feed .gh-card-meta:not(:empty){margin-top:8px}.gh-featured-feed .gh-card:before{position:absolute;top:0;left:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}@media (max-width:1199px){.gh-viewport>.gh-featured .gh-featured-feed{grid-template-columns:repeat(3,1fr)}.gh-viewport>.gh-featured .gh-featured-feed .gh-card:nth-child(4){display:none}}@media (max-width:767px){.gh-viewport>.gh-featured .gh-featured-feed{display:flex;flex-direction:column}}.gh-container{flex-grow:1;margin-top:64px}.gh-container-inner{display:grid;grid-template-columns:repeat(16,1fr);-moz-column-gap:var(--grid-gap);column-gap:var(--grid-gap)}:is(.gh-featured,.gh-cta)+.gh-container{margin-top:max(4vw,40px)}.gh-header.is-classic:not(.has-image)+.gh-container{margin-top:0}.gh-navigation+.gh-container .gh-container-title,:is(.paged,.tag-template,.author-template) .gh-container:not(.has-sidebar) .gh-container-title{display:none}.gh-more{display:none;grid-column:1/-1;margin-top:48px;font-size:calc(1.9rem*var(--factor, 1));font-weight:725;letter-spacing:-.014em}.gh-container.has-sidebar .gh-more{grid-column:span 12}.home-template .gh-feed:has(>:nth-child(12):last-child)~.gh-more{display:block}.gh-more a{display:flex;align-items:center;gap:4px}.gh-more svg{margin-top:-1px;width:18px;height:18px}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-more svg{margin-top:0}.gh-container.has-sidebar .gh-main{grid-column:1/span 12;position:relative}.gh-container.has-sidebar .gh-sidebar{grid-column:13/-1}.gh-container.has-sidebar .gh-main:after{position:absolute;top:0;right:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}.gh-container:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:3/span 12}.gh-container.is-list.no-image:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:4/span 10}.gh-header:is(.is-highlight,.is-magazine)~.gh-container.is-grid:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:1/-1}@media (max-width:1199px){.gh-container-inner{display:block;overflow:hidden}.gh-container.has-sidebar .gh-sidebar{display:none}}.gh-container-title{grid-column:1/-1;margin-bottom:calc(var(--grid-gap)/2);padding-bottom:12px;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.gh-container:not(:has(.gh-card)) .gh-container-title{display:none}.gh-container .gh-feed{gap:var(--grid-gap)}.gh-container .gh-card-meta:not(:empty){margin-top:12px}.gh-container.is-list .gh-feed{display:flex;flex-direction:column;container-type:inline-size;container-name:list-feed}.gh-container.is-list .gh-card-link{flex-direction:row;align-items:center;gap:24px}.gh-container.is-list .no-image .gh-card-link{padding-block:20px}.gh-container.is-list .gh-card-image{flex-shrink:0;width:220px;aspect-ratio:1.618033}@container list-feed (width < 600px){.gh-container.is-list .gh-card-image{width:160px}}.gh-container.is-list .gh-card:not(.no-image) .gh-card-wrapper{max-width:600px}.gh-container.is-list .gh-card-title{--factor:1.05}.gh-container.is-list .no-image .gh-card-title{--factor:1.2}.gh-container.is-list .gh-card-excerpt{margin-top:6px}.gh-container.is-list .gh-card+.gh-card:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}.home-template .gh-container.is-list .gh-card:first-child:before{display:none}@media (max-width:767px){.gh-container.is-list .gh-card-link{flex-direction:column;align-items:flex-start}.gh-container.is-list .gh-card-image{width:100%}}.gh-container.is-grid .gh-feed{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));row-gap:calc(var(--grid-gap)*1.5);overflow:hidden}.gh-container.is-grid .gh-card:before{top:calc(var(--grid-gap)/-2);right:calc(var(--grid-gap)/-2);height:1px}.gh-container.is-grid .gh-card:after,.gh-container.is-grid .gh-card:before{position:absolute;left:calc(var(--grid-gap)/-2);content:"";background-color:var(--color-border)}.gh-container.is-grid .gh-card:after{top:0;width:1px;height:100%}@media (max-width:767px){.gh-container.is-grid .gh-feed{grid-template-columns:repeat(2,1fr)}}@media (max-width:576px){.gh-container.is-grid .gh-feed{display:flex;flex-direction:column}}.gh-container.is-list.no-image .gh-card-image{display:none}.gh-sidebar-inner{position:sticky;top:calc(var(--grid-gap)/2)}.gh-sidebar-title{grid-column:1/-1;margin-bottom:calc(var(--grid-gap)/2);padding-bottom:12px;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.gh-about{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px 24px;min-height:380px;text-align:center;background-color:var(--color-lighter-gray)}.gh-about-icon{margin-bottom:24px;width:60px;height:60px;border-radius:50%}.gh-about-title{font-size:calc(2.4rem*var(--factor, 1));font-weight:700;letter-spacing:-.019em}.gh-about-description{margin-top:12px;font-size:1.45rem;line-height:1.4}.gh-about .gh-button{margin-top:32px}.gh-recommendations{margin-top:48px}.gh-recommendations .recommendations{display:flex;flex-direction:column;gap:26px;margin:0;padding:0;list-style-type:none}.gh-recommendations .recommendation:first-child{margin-top:4px}.gh-recommendations .recommendation a{display:grid;grid-template-columns:24px auto;gap:4px 12px}.gh-recommendations .recommendation a:hover{opacity:1}.gh-recommendations .recommendation-favicon{grid-row:span 2;width:100%;border-radius:4px}.gh-recommendations .recommendation-title{margin-top:-2px;font-size:1.5rem;font-weight:650;letter-spacing:-.009em}.gh-recommendations .recommendation a:hover .recommendation-title{opacity:.8}.gh-recommendations .recommendation-url{order:1;overflow:hidden;font-size:1.4rem;line-height:1.25;color:var(--color-secondary-text);text-overflow:ellipsis}.gh-recommendations .recommendation-description{display:-webkit-box;display:none;overflow-y:hidden;grid-column:2;font-size:1.4rem;line-height:1.4;color:var(--color-secondary-text);-webkit-line-clamp:2;-webkit-box-orient:vertical}.gh-recommendations button{display:inline-flex;align-items:center;gap:2px;margin-top:24px;padding:0;cursor:pointer;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;background-color:transparent;border:0;color:var(--color-darker-gray)}.gh-recommendations button svg{margin-top:-1px;width:12px}.gh-recommendations button:hover{opacity:.8}.gh-article{--container-width:1120px;word-break:break-word}.gh-article-header{margin:clamp(40px,3.64vw + 25.45px,72px) 0 40px}.gh-article-tag{margin-bottom:12px;font-size:1.3rem;font-weight:500;letter-spacing:.01em;text-transform:uppercase;color:var(--ghost-accent-color)}.gh-article-title{font-size:calc(clamp(3.4rem, 1.36vw + 2.85rem, 4.6rem)*var(--factor, 1));line-height:1.1;letter-spacing:-.022em}.gh-article-excerpt{margin-top:clamp(12px,.45vw + 10.18px,16px);max-width:720px;font-size:clamp(1.7rem,.23vw + 1.61rem,1.9rem);line-height:1.45;letter-spacing:-.018em}.gh-article-meta{display:flex;align-items:center;gap:8px;margin-left:6px}.gh-article-author-image{display:flex;margin-right:8px}.gh-article-author-image a{position:relative;margin:0 -8px;width:56px;height:56px;overflow:hidden;background-color:var(--color-light-gray);border-radius:50%;border:3px solid var(--background-color)}.gh-article-author-image a:first-child{z-index:10}.gh-article-author-image a:nth-child(2){z-index:9}.gh-article-author-image a:nth-child(3){z-index:8}.gh-article-author-image :is(img,svg){position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.gh-article-meta-wrapper{display:flex;flex-direction:column;gap:4px}.gh-article-author-name{font-size:1.6rem;font-weight:650;letter-spacing:-.013em}.gh-article-meta-content{font-size:1.35rem;font-weight:500;line-height:1.2;letter-spacing:-.006em;color:var(--color-secondary-text)}.gh-article-image{grid-column:wide;margin-top:40px}.gh-article-image img{width:100%}.page-template .gh-article-header{margin-block:72px 32px}.page-template .gh-content:only-child>:first-child:not(.kg-width-full){margin-top:64px}.page-template .gh-content>:last-child:not(.kg-width-full){margin-bottom:6vw}.page-template .gh-footer{margin-top:0}.gh-content{font-size:var(--content-font-size,1.7rem);letter-spacing:-.01em}.gh-content>*+*{margin-top:calc(28px*var(--content-spacing-factor, 1));margin-bottom:0}.gh-content>.kg-width-full+.kg-width-full:not(.kg-width-full.kg-card-hascaption+.kg-width-full){margin-top:0}.gh-content>[id]:not(:first-child){margin-top:calc(56px*var(--content-spacing-factor, 1))}.post-template .gh-content.drop-cap>p:first-of-type:first-letter{font-size:3.1em;float:left;line-height:1;margin:0 .2em 0 -1px;font-weight:700}.has-serif-body.post-template:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content.drop-cap>p:first-of-type:first-letter{font-size:3.2em}.gh-content>[id]+p{margin-top:calc(12px*var(--content-spacing-factor, 1))}.gh-content>:is(hr,blockquote,iframe){position:relative;margin-top:calc(48px*var(--content-spacing-factor, 1))!important}.gh-content>:is(hr,blockquote,iframe)+*{margin-top:calc(48px*var(--content-spacing-factor, 1))!important}.gh-content h1{font-size:calc(2.2em*var(--factor, 1));letter-spacing:-.02em}.gh-content h2{font-size:calc(1.6em*var(--factor, 1));letter-spacing:-.02em}.gh-content h3{font-size:calc(1.3em*var(--factor, 1));letter-spacing:-.017em}.gh-content a{color:var(--ghost-accent-color);text-decoration:underline}.gh-content .kg-callout-card .kg-callout-text,.gh-content .kg-toggle-card .kg-toggle-content>:is(ul,ol,p){font-size:.95em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-callout-text,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>ol,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>p,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>ul,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>blockquote,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>dl,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ol,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>p,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ul{font-family:var(--font-serif-alt)}.gh-content :is(ul,ol){padding-left:28px}.gh-content :is(li+li,li :is(ul,ol)){margin-top:8px}.gh-content ol ol li{list-style-type:lower-alpha}.gh-content ol ol ol li{list-style-type:lower-roman}.gh-content hr{width:100%;height:1px;background-color:var(--color-border);border:0}.gh-content .gh-table{overflow-x:scroll;-webkit-overflow-scrolling:touch}.gh-content .gh-table table{width:100%;font-family:var(--font-sans);font-size:1.5rem;white-space:nowrap;vertical-align:top;border-spacing:0;border-collapse:collapse}.gh-content .gh-table table th{font-size:1.2rem;font-weight:700;color:var(--color-darkgrey);text-align:left;text-transform:uppercase;letter-spacing:.2px}.gh-content .gh-table table :is(th,td),.gh-content .gh-table table td{padding:6px 12px;border-bottom:1px solid var(--color-border)}.gh-content .gh-table table :is(th,td):first-child{padding-left:0}.gh-content .gh-table table :is(th,td):last-child{padding-right:0}.gh-content pre{overflow:auto;padding:16px;font-size:1.5rem;line-height:1.5em;border-radius:6px}.gh-content :not(pre)>code,.gh-content pre{background:var(--color-lighter-gray);font-family:var(--font-mono)}.gh-content :not(pre)>code{vertical-align:baseline;padding:.15em .4em;font-weight:400;font-size:.95em;line-height:1em;border-radius:.25em}.gh-content :not(.kg-card):not(table):not([id])+:is(.kg-card,table){margin-top:calc(48px*var(--content-spacing-factor, 1))}.gh-content :is(.kg-card,table)+:not(.kg-card):not(table):not([id]){margin-top:calc(48px*var(--content-spacing-factor, 1))}.gh-content .kg-card.kg-width-full+:not(.kg-card):not([id]),.gh-content :not(.kg-card):not([id])+.kg-card.kg-width-full{margin-top:calc(68px*var(--content-spacing-factor, 1))}.kg-image{margin-right:auto;margin-left:auto}.kg-embed-card{display:flex;flex-direction:column;align-items:center;width:100%}.kg-gallery-image,.kg-image[width][height]{cursor:pointer}.kg-gallery-image a:hover,.kg-image-card a:hover{opacity:1!important}.kg-card.kg-toggle-card .kg-toggle-heading-text{font-size:2rem;font-weight:700}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-toggle-card .kg-toggle-heading-text{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-toggle-card .kg-toggle-heading-text{font-family:var(--font-mono)}.kg-callout-card.kg-card{border-radius:.25em}.kg-callout-card-accent a{text-decoration:underline}blockquote:not([class]){padding-left:2rem;border-left:4px solid var(--ghost-accent-color)}blockquote.kg-blockquote-alt{font-style:normal;font-weight:400;color:var(--color-secondary-text)}.kg-card.kg-button-card .kg-btn{height:unset;padding:.6em 1.2em;text-align:center;font-size:1em;line-height:1.2em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-card.kg-header-card h2.kg-header-card-header{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-card.kg-header-card h2.kg-header-card-header{font-family:var(--font-mono)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .kg-header-card h3.kg-header-card-subheader{font-family:var(--font-serif)}.kg-bookmark-card .kg-bookmark-container{border-radius:.25em!important}.kg-bookmark-card .kg-bookmark-container:hover{opacity:1}.kg-bookmark-card a.kg-bookmark-container,.kg-bookmark-card a.kg-bookmark-container:hover{background:var(--background-color)!important;color:var(--color-darker-gray)!important}.kg-bookmark-card .kg-bookmark-content{padding:1.15em}.kg-bookmark-card .kg-bookmark-title{font-size:.9em}.kg-bookmark-card .kg-bookmark-description{max-height:none;margin-top:.3em;font-size:.8em}.kg-bookmark-card .kg-bookmark-metadata{font-size:.8em}.kg-bookmark-card .kg-bookmark-thumbnail img{border-radius:0 .2em .2em 0}.kg-product-card.kg-card .kg-product-card-image{margin-bottom:12px}.kg-product-card.kg-card a.kg-product-card-button{height:2.8em;margin-top:12px}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-product-card.kg-card .kg-product-card-title{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-product-card.kg-card .kg-product-card-title{font-family:var(--font-mono)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .kg-product-card-description :is(p,ul,ol){font-family:var(--font-serif-alt)}.kg-file-card.kg-card .kg-file-card-container{padding:.6em}.kg-file-card.kg-card .kg-file-card-contents{margin:4px 8px 6px}.kg-file-card.kg-card .kg-file-card-metadata{font-size:.9em}.kg-file-card.kg-card .kg-file-card-filesize:before{margin-right:6px;margin-left:6px}figcaption{margin-top:12px;font-size:1.4rem;text-align:center}.kg-card.kg-width-full figcaption{padding:0 16px}figcaption a{color:var(--ghost-accent-color);text-decoration:underline}.gh-comments{margin-top:48px}.post-template .gh-container{margin-top:120px}.post-template .gh-container-inner{display:block}.post-template .gh-container.is-grid .gh-feed{grid-template-columns:repeat(4,1fr)}.post-template .gh-container .gh-container-title{display:block}.gh-archive{display:grid;grid-template-columns:repeat(16,1fr);gap:var(--grid-gap);margin-block:80px 24px}.gh-archive.has-image{margin-top:48px}.gh-archive-inner{display:grid;grid-template-columns:1fr 1fr;gap:var(--grid-gap);grid-column:1/-1;padding-bottom:clamp(40px,2.73vw + 29.09px,64px);border-bottom:1px solid var(--color-border)}.gh-archive.has-image .gh-archive-inner{align-items:center;grid-column:1/-1}.gh-archive:not(.has-sidebar):not(.has-image) .gh-archive-inner{grid-column:3/span 12}.gh-archive .gh-article-image{grid-column:auto;margin-top:0}:is(.tag-template,.author-template) .gh-container{margin-top:0}.author-template .gh-archive-inner{display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:24px}.author-template .gh-article-image{margin-top:0;width:120px;height:120px;border-radius:50%;-o-object-fit:cover;object-fit:cover}.author-template .gh-article-title{font-size:3.6rem}.gh-author-meta{display:flex;gap:10px;margin-top:14px;font-size:1.5rem;font-weight:550;color:var(--color-secondary-text)}.gh-author-meta a{color:inherit}.gh-author-social{display:flex;gap:16px;align-items:center;padding-left:3px}.gh-author-social svg{width:20px;height:20px}@media (max-width:1199px){.gh-archive{display:block}}@media (max-width:767px){.gh-archive-inner{display:flex;align-items:flex-start}.author-template .gh-archive-inner,.gh-archive-inner{flex-direction:column-reverse}}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]){--factor:1.15}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]){--factor:1.1}.has-sans-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-sans))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-serif));font-weight:550}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-mono))}.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .is-body{font-family:var(--gh-font-body,var(--font-sans))}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .is-body{font-family:var(--gh-font-body,var(--font-serif-alt))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-classic .gh-header-title{font-weight:550;letter-spacing:-.015em}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-classic .gh-header-title{letter-spacing:-.01em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form{border-radius:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-card-title{line-height:1.15;letter-spacing:-.006em;font-size:calc(2rem*var(--factor, 1))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-featured-feed .gh-card-title{font-size:calc(1.6rem*var(--factor, 1))}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-featured-feed .gh-card-title{font-size:calc(1.5rem*var(--factor, 1));letter-spacing:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-highlight .gh-featured-feed .gh-card-title{font-size:clamp(1.6rem,.23vw + 1.51rem,1.8rem)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-card-title{font-size:calc(1.8rem*var(--factor, 1));line-height:1.2}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-about-title{letter-spacing:-.009em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-article-title,.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-footer-signup-header{letter-spacing:-.019em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]){--content-font-size:1.9rem}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-card-excerpt{font-size:1.65rem;line-height:1.4;letter-spacing:.0005em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-header.is-highlight .gh-card:first-child .gh-card-excerpt,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-excerpt{font-size:1.8rem;letter-spacing:-.001em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-highlight .gh-header-left .gh-card-title,.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-title{font-weight:550;font-size:clamp(3.2rem,1.82vw + 2.47rem,4.9rem)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-about-description{font-size:1.6rem}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-article-excerpt,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-footer-signup-subhead{letter-spacing:0}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.gh-button,.gh-form,.gh-form-input),body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button,.gh-form,.gh-form-input),body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button,.gh-form,.gh-form-input){border-radius:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-cta-title{font-size:4.8rem}.gh-footer{margin-top:120px;font-size:1.5rem;color:var(--color-darker-gray)}.gh-footer a:not(.gh-button){color:inherit}.gh-footer.has-accent-color{background-color:var(--ghost-accent-color)}.gh-footer.has-accent-color .gh-footer-bar{border-top:0}.gh-footer.has-accent-color .gh-button{background-color:#fff;color:#15171a}.gh-footer-bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;-moz-column-gap:32px;column-gap:32px;margin-bottom:120px;padding-block:28px;font-weight:550;border-block:1px solid var(--color-border)}.gh-footer-logo{position:relative;font-family:var(--gh-font-heading,var(--font-sans));font-size:calc(2.4rem*var(--factor, 1));font-weight:725;letter-spacing:-.015em;white-space:nowrap}.gh-footer-logo img{max-height:40px}.gh-footer-menu .nav{display:flex;justify-content:center;gap:8px 28px;flex-wrap:wrap;margin:0;padding:0;list-style-type:none}.gh-footer-copyright{text-align:right;white-space:nowrap}.gh-footer-copyright a{text-decoration:underline}.gh-footer-signup{display:flex;flex-direction:column;align-items:center;margin-bottom:120px;text-align:center}.gh-footer-signup-header{font-size:calc(clamp(2.8rem,1.36vw + 2.25rem,4rem)*var(--factor, 1));font-weight:700;letter-spacing:-.03em}.gh-footer-signup-subhead{margin-top:12px;max-width:640px;font-size:1.8rem;font-weight:450;line-height:1.4;letter-spacing:-.014em;opacity:.75}.gh-footer-signup .gh-form{margin-top:40px}@media (max-width:991px){.gh-footer-bar{display:flex;flex-direction:column;gap:20px}}.gh-social-links{display:flex;justify-content:center;gap:20px;margin-bottom:32px}.gh-social-links a{will-change:opacity}.gh-social-links svg{width:20px;height:20px}.pswp{position:absolute;top:0;left:0;z-index:3999999;display:none;width:100%;height:100%;overflow:hidden;touch-action:none;outline:none;backface-visibility:hidden;-webkit-text-size-adjust:100%}.pswp img{max-width:none}.pswp--animate_opacity{opacity:.001;transition:opacity 333ms cubic-bezier(.4,0,.22,1);will-change:opacity}.pswp--open{display:block}.pswp--zoom-allowed .pswp__img{cursor:zoom-in}.pswp--zoomed-in .pswp__img{cursor:grab}.pswp--dragging .pswp__img{cursor:grabbing}.pswp__bg{background-color:rgba(0,0,0,.85);opacity:0;transition:opacity 333ms cubic-bezier(.4,0,.22,1);transform:translateZ(0);backface-visibility:hidden;will-change:opacity}.pswp__bg,.pswp__scroll-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__scroll-wrap{overflow:hidden}.pswp__container,.pswp__zoom-wrap{position:absolute;top:0;right:0;bottom:0;left:0;touch-action:none;backface-visibility:hidden}.pswp__container,.pswp__img{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.pswp__zoom-wrap{position:absolute;width:100%;transition:transform 333ms cubic-bezier(.4,0,.22,1);transform-origin:left top}.pswp--animated-in .pswp__bg,.pswp--animated-in .pswp__zoom-wrap{transition:none}.pswp__item{right:0;bottom:0;overflow:hidden}.pswp__img,.pswp__item{position:absolute;top:0;left:0}.pswp__img{width:auto;height:auto}.pswp__img--placeholder{backface-visibility:hidden}.pswp__img--placeholder--blank{background:var(--color-black)}.pswp--ie .pswp__img{top:0;left:0;width:100%!important;height:auto!important}.pswp__error-msg{position:absolute;top:50%;left:0;width:100%;margin-top:-8px;font-size:14px;line-height:16px;color:var(--color-secondary-text);text-align:center}.pswp__error-msg a{color:var(--color-secondary-text);text-decoration:underline}.pswp__button{position:relative;display:block;float:right;width:44px;height:44px;padding:0;margin:0;overflow:visible;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background:none;border:0;box-shadow:none;transition:opacity .2s}.pswp__button:focus,.pswp__button:hover{opacity:1}.pswp__button:active{outline:none;opacity:.9}.pswp__button::-moz-focus-inner{padding:0;border:0}.pswp__ui--over-close .pswp__button--close{opacity:1}.pswp__button,.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{width:44px;height:44px;background:url(../images/default-skin.png) 0 0 no-repeat;background-size:264px 88px}@media (min-resolution:1.1dppx),(min-resolution:105dpi){.pswp--svg .pswp__button,.pswp--svg .pswp__button--arrow--left:before,.pswp--svg .pswp__button--arrow--right:before{background-image:url(../images/default-skin.svg)}.pswp--svg .pswp__button--arrow--left,.pswp--svg .pswp__button--arrow--right{background:none}}.pswp__button--close{background-position:0 -44px}.pswp__button--share{background-position:-44px -44px}.pswp__button--fs{display:none}.pswp--supports-fs .pswp__button--fs{display:block}.pswp--fs .pswp__button--fs{background-position:-44px 0}.pswp__button--zoom{display:none;background-position:-88px 0}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__button--zoom{background-position:-132px 0}.pswp--touch .pswp__button--arrow--left,.pswp--touch .pswp__button--arrow--right{visibility:hidden}.pswp__button--arrow--left,.pswp__button--arrow--right{position:absolute;top:50%;width:70px;height:100px;margin-top:-50px;background:none}.pswp__button--arrow--left{left:0}.pswp__button--arrow--right{right:0}.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{position:absolute;top:35px;width:32px;height:30px;content:""}.pswp__button--arrow--left:before{left:6px;background-position:-138px -44px}.pswp__button--arrow--right:before{right:6px;background-position:-94px -44px}.pswp__counter{position:absolute;top:0;left:0;height:44px;padding:0 15px;font-size:11px;font-weight:700;line-height:44px;color:var(--color-white);-webkit-user-select:none;-moz-user-select:none;user-select:none}.pswp__caption{position:absolute;bottom:0;left:0;width:100%;min-height:44px}.pswp__caption__center{max-width:420px;padding:25px 15px 30px;margin:0 auto;font-size:11px;line-height:1.6;color:var(--color-white);text-align:center}.pswp__caption__center .post-caption-title{margin-bottom:7px;font-size:15px;font-weight:500;text-transform:uppercase}.pswp__caption__center .post-caption-meta-item+.post-caption-meta-item:before{padding:0 4px;content:"\02022"}.pswp__caption--empty{display:none}.pswp__caption--fake{visibility:hidden}.pswp__preloader{position:absolute;top:0;left:50%;width:44px;height:44px;margin-left:-22px;opacity:0;transition:opacity .25s ease-out;direction:ltr;will-change:opacity}.pswp__preloader__icn{width:20px;height:20px;margin:12px}.pswp__preloader--active{opacity:1}.pswp__preloader--active .pswp__preloader__icn{background:url(../images/preloader.gif) 0 0 no-repeat}.pswp--css_animation .pswp__preloader--active{opacity:1}.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn{animation:clockwise .5s linear infinite}.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut{animation:donut-rotate 1s cubic-bezier(.4,0,.22,1) infinite}.pswp--css_animation .pswp__preloader__icn{position:absolute;top:15px;left:15px;width:14px;height:14px;margin:0;background:none;opacity:.75}.pswp--css_animation .pswp__preloader__cut{position:relative;width:7px;height:14px;overflow:hidden}.pswp--css_animation .pswp__preloader__donut{position:absolute;top:0;left:0;box-sizing:border-box;width:14px;height:14px;margin:0;background:none;border:2px solid var(--color-white);border-bottom-color:transparent;border-left-color:transparent;border-radius:50%}@media screen and (max-width:1024px){.pswp__preloader{position:relative;top:auto;left:auto;float:right;margin:0}}@keyframes clockwise{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes donut-rotate{0%{transform:rotate(0)}50%{transform:rotate(-140deg)}to{transform:rotate(0)}}.pswp__ui{z-index:1550;visibility:visible;opacity:1;-webkit-font-smoothing:auto}.pswp__top-bar{position:absolute;top:0;left:0;width:100%;height:44px}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right,.pswp__caption,.pswp__top-bar{backface-visibility:hidden;transition:opacity 333ms cubic-bezier(.4,0,.22,1);will-change:opacity}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right{visibility:visible}.pswp__ui--idle .pswp__button--arrow--left,.pswp__ui--idle .pswp__button--arrow--right,.pswp__ui--idle .pswp__top-bar{opacity:0}.pswp__ui--hidden .pswp__button--arrow--left,.pswp__ui--hidden .pswp__button--arrow--right,.pswp__ui--hidden .pswp__caption,.pswp__ui--hidden .pswp__top-bar{opacity:.001}.pswp__ui--one-slide .pswp__button--arrow--left,.pswp__ui--one-slide .pswp__button--arrow--right,.pswp__ui--one-slide .pswp__counter{display:none}.pswp__element--disabled{display:none!important}.pswp--minimal--dark .pswp__top-bar{background:none}.gh-meta-share{display:flex;align-items:center;justify-content:space-between;margin-top:20px}.has-light-text .gh-button-share{border-color:hsla(0,0%,100%,.25);color:hsla(0,0%,100%,.85)}.has-light-text .gh-button-share:hover{border-color:hsla(0,0%,100%,.85)}.gh-button-share{display:inline-flex;align-items:center;border:1px solid rgba(0,0,0,.15);border-radius:999px;color:rgba(0,0,0,.85);background:transparent;cursor:pointer;transition:all .4s ease}.gh-button-share:hover{border-color:rgba(0,0,0,.5)}/*# sourceMappingURL=screen.css.map */
@@ -476,6 +476,21 @@ body[class^="gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-head
476
476
  list-style: none;
477
477
  }
478
478
 
479
+ .nav a {
480
+ display: inline-flex;
481
+ align-items: center;
482
+ gap: 0.35em;
483
+ vertical-align: middle;
484
+ }
485
+
486
+ .nav-icon {
487
+ display: block;
488
+ width: 1em;
489
+ height: 1em;
490
+ flex: 0 0 auto;
491
+ object-fit: contain;
492
+ }
493
+
479
494
  .gh-navigation .gh-more-toggle {
480
495
  position: relative;
481
496
  margin: 0 -6px;
@@ -79,8 +79,11 @@ function zipper(done) {
79
79
  '**',
80
80
  '!node_modules', '!node_modules/**',
81
81
  '!dist', '!dist/**',
82
- '!yarn-error.log',
83
- '!yarn.lock',
82
+ '!pnpm-debug.log',
83
+ '!pnpm-lock.yaml',
84
+ '!pnpm-workspace.yaml',
85
+ '!AGENTS.md',
86
+ '!CLAUDE.md',
84
87
  '!gulpfile.js'
85
88
  ]),
86
89
  zip(filename),
@@ -100,7 +103,7 @@ exports.zip = series(build, zipper);
100
103
  exports.default = series(build, serve, watcher);
101
104
 
102
105
  exports.release = async () => {
103
- // @NOTE: https://yarnpkg.com/lang/en/docs/cli/version/
106
+ // @NOTE: https://pnpm.io/cli/version
104
107
  // require(./package.json) can run into caching issues, this re-reads from file everytime on release
105
108
  let packageJSON = JSON.parse(fs.readFileSync('./package.json'));
106
109
  const newVersion = packageJSON.version;
@@ -2,7 +2,7 @@
2
2
  "name": "source",
3
3
  "description": "A default theme for the Ghost publishing platform",
4
4
  "demo": "https://source.ghost.io",
5
- "version": "1.7.1",
5
+ "version": "1.7.2",
6
6
  "engines": {
7
7
  "ghost": ">=5.0.0",
8
8
  "node": ">=22.12.0"
@@ -11,13 +11,16 @@
11
11
  "scripts": {
12
12
  "dev": "gulp",
13
13
  "zip": "gulp zip",
14
+ "build": "gulp build",
14
15
  "test": "gscan .",
15
16
  "test:ci": "gscan --fatal --verbose .",
16
- "pretest": "gulp build",
17
- "preship": "yarn test",
18
- "ship": "STATUS=$(git status --porcelain); echo $STATUS; if [ -z \"$STATUS\" ]; then yarn version && git push --follow-tags; else echo \"Uncomitted changes found.\" && exit 1; fi",
17
+ "pretest": "pnpm zip",
18
+ "pretest:ci": "pnpm zip",
19
+ "preship": "pnpm test",
20
+ "ship": "STATUS=$(git status --porcelain); echo $STATUS; if [ -z \"$STATUS\" ]; then git push --follow-tags; else echo \"Uncommitted changes found.\" && exit 1; fi",
19
21
  "postship": "git fetch && gulp release"
20
22
  },
23
+ "packageManager": "pnpm@11.22.0",
21
24
  "author": {
22
25
  "name": "Ghost Foundation",
23
26
  "email": "hello@ghost.org",
@@ -42,12 +45,12 @@
42
45
  "bugs": "https://github.com/TryGhost/Source/issues",
43
46
  "contributors": "https://github.com/TryGhost/Source/graphs/contributors",
44
47
  "devDependencies": {
45
- "@tryghost/release-utils": "0.8.1",
46
- "@tryghost/theme-translations": "0.0.21",
47
- "autoprefixer": "10.4.24",
48
+ "@tryghost/release-utils": "0.9.1",
49
+ "@tryghost/theme-translations": "0.0.22",
50
+ "autoprefixer": "10.5.4",
48
51
  "beeper": "2.1.0",
49
- "cssnano": "7.1.2",
50
- "gscan": "6.2.1",
52
+ "cssnano": "8.0.5",
53
+ "gscan": "6.4.2",
51
54
  "gulp": "5.0.1",
52
55
  "gulp-concat": "2.6.1",
53
56
  "gulp-livereload": "4.0.2",
@@ -55,7 +58,7 @@
55
58
  "gulp-uglify": "3.0.2",
56
59
  "gulp-zip": "6.1.0",
57
60
  "inquirer": "14.0.2",
58
- "postcss": "8.5.10",
61
+ "postcss": "8.5.26",
59
62
  "postcss-easy-import": "4.0.0",
60
63
  "pump": "3.0.4"
61
64
  },
@@ -0,0 +1,3 @@
1
+ allowBuilds:
2
+ # Optional dtrace bindings for bunyan through gscan; not needed to build, zip, or scan the theme.
3
+ dtrace-provider: false
package/core/boot.js CHANGED
@@ -145,7 +145,7 @@ async function initCore({ghostServer, config}) {
145
145
 
146
146
  ghostServer.registerCleanupTask(async () => {
147
147
  await jobService.shutdown();
148
- });
148
+ }, 'Job Service');
149
149
  debug('End: Job Service');
150
150
 
151
151
  // Mentions Job Service allows mentions to be processed in the background
@@ -158,7 +158,7 @@ async function initCore({ghostServer, config}) {
158
158
 
159
159
  ghostServer.registerCleanupTask(async () => {
160
160
  await mentionsJobService.shutdown();
161
- });
161
+ }, 'Mentions Job Service');
162
162
  debug('End: Mentions Job Service');
163
163
 
164
164
  debug('Begin: Jobs Service');
@@ -166,7 +166,7 @@ async function initCore({ghostServer, config}) {
166
166
 
167
167
  ghostServer.registerCleanupTask(async () => {
168
168
  await jobsService.shutdown({timeoutMs: config.get('server:shutdownTimeout')});
169
- });
169
+ }, 'Jobs Service (in-memory)');
170
170
  debug('End: Jobs Service');
171
171
  }
172
172
 
@@ -352,6 +352,7 @@ async function initServices({ghostServer, config, prometheusClient}) {
352
352
  const postsPublic = require('./server/services/posts-public');
353
353
  const slackNotifications = require('./server/services/slack-notifications');
354
354
  const mediaInliner = require('./server/services/media-inliner');
355
+ const contentImport = require('./server/services/content-import');
355
356
  const donationService = require('./server/services/donations');
356
357
  const giftService = require('./server/services/gifts');
357
358
  const machinePaymentsService = require('./server/services/machine-payments');
@@ -412,6 +413,7 @@ async function initServices({ghostServer, config, prometheusClient}) {
412
413
  emailSuppressionList.init(),
413
414
  slackNotifications.init(),
414
415
  mediaInliner.init(),
416
+ contentImport.init(),
415
417
  donationService.init(),
416
418
  recommendationsService.init(),
417
419
  statsService.init(),
@@ -470,6 +472,11 @@ async function initBackgroundServices({config}) {
470
472
  logging.error(err);
471
473
  }
472
474
 
475
+ // Retry gift deliveries interrupted by a prior shutdown. Not awaited: recovery
476
+ // sends sequentially and must not hold up the remaining background services.
477
+ const giftService = require('./server/services/gifts');
478
+ giftService.recoverPendingDeliveries();
479
+
473
480
  const activitypub = require('./server/services/activitypub');
474
481
  await activitypub.init();
475
482
  // Load email analytics recurring jobs
@@ -580,7 +587,7 @@ async function bootGhost({backend = true, frontend = true, server = true} = {})
580
587
  if (prometheusClient) {
581
588
  prometheusClient.stop();
582
589
  }
583
- });
590
+ }, 'Prometheus client');
584
591
  debug('End: load server + minimal app');
585
592
  }
586
593
 
@@ -0,0 +1,41 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{n,t as r}from"./jsx-runtime-DX3WBWVO.js";import{a as i}from"./dist-Cb5RSHSg.js";import{n as a,t as o}from"./dist-CQJY6SVY.js";import{n as s,t as c}from"./dist-CqO2lWS0.js";var l=e(t(),1),u=e(n(),1),d=r(),f=function(){return f=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},f.apply(this,arguments)};function p(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n}function m(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}function h(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))}typeof window<`u`&&window.document&&window.document.createElement;function g(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}var _=l.useEffectEvent,v=l.useInsertionEffect;function y(e){if(typeof _==`function`)return _(e);let t=l.useRef(()=>{throw Error(`Cannot call an event handler while rendering.`)});return typeof v==`function`?v(()=>{t.current=e}):a(()=>{t.current=e}),l.useMemo(()=>((...e)=>t.current?.(...e)),[])}var b=l.useInsertionEffect||a;function x({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=S({defaultProp:t,onChange:n}),s=e!==void 0,c=s?e:i;{let t=l.useRef(e!==void 0);l.useEffect(()=>{let e=t.current;e!==s&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${s?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=s},[s,r])}return[c,l.useCallback(t=>{if(s){let n=C(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[s,e,a,o])]}function S({defaultProp:e,onChange:t}){let[n,r]=l.useState(e),i=l.useRef(n),a=l.useRef(t);return b(()=>{a.current=t},[t]),l.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function C(e){return typeof e==`function`}var w=`DismissableLayer`,T=`dismissableLayer.update`,E=`dismissableLayer.pointerDownOutside`,ee=`dismissableLayer.focusOutside`,te,D=l.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),O=l.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,deferPointerDownOutside:r=!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:s,onInteractOutside:u,onDismiss:f,...p}=e,m=l.useContext(D),[h,_]=l.useState(null),v=h?.ownerDocument??globalThis?.document,[,b]=l.useState({}),x=i(t,_),S=Array.from(m.layers),[C]=[...m.layersWithOutsidePointerEventsDisabled].slice(-1),w=S.indexOf(C),E=h?S.indexOf(h):-1,ee=m.layersWithOutsidePointerEventsDisabled.size>0,O=E>=w,k=l.useRef(!1),ne=re(e=>{let t=e.target;if(!(t instanceof Node))return;let n=[...m.branches].some(e=>e.contains(t));!O||n||(o?.(e),u?.(e),e.defaultPrevented||f?.())},{ownerDocument:v,deferPointerDownOutside:r,isDeferredPointerDownOutsideRef:k,dismissableSurfaces:m.dismissableSurfaces}),A=ie(e=>{if(r&&k.current)return;let t=e.target;[...m.branches].some(e=>e.contains(t))||(s?.(e),u?.(e),e.defaultPrevented||f?.())},v),j=h?E===S.length-1:!1,M=y(e=>{e.key===`Escape`&&(a?.(e),!e.defaultPrevented&&f&&(e.preventDefault(),f()))});return l.useEffect(()=>{if(j)return v.addEventListener(`keydown`,M,{capture:!0}),()=>v.removeEventListener(`keydown`,M,{capture:!0})},[v,j]),l.useEffect(()=>{if(h)return n&&(m.layersWithOutsidePointerEventsDisabled.size===0&&(te=v.body.style.pointerEvents,v.body.style.pointerEvents=`none`),m.layersWithOutsidePointerEventsDisabled.add(h)),m.layers.add(h),ae(),()=>{n&&(m.layersWithOutsidePointerEventsDisabled.delete(h),m.layersWithOutsidePointerEventsDisabled.size===0&&(v.body.style.pointerEvents=te))}},[h,v,n,m]),l.useEffect(()=>()=>{h&&(m.layers.delete(h),m.layersWithOutsidePointerEventsDisabled.delete(h),ae())},[h,m]),l.useEffect(()=>{let e=()=>b({});return document.addEventListener(T,e),()=>document.removeEventListener(T,e)},[]),(0,d.jsx)(c.div,{...p,ref:x,style:{pointerEvents:ee?O?`auto`:`none`:void 0,...e.style},onFocusCapture:g(e.onFocusCapture,A.onFocusCapture),onBlurCapture:g(e.onBlurCapture,A.onBlurCapture),onPointerDownCapture:g(e.onPointerDownCapture,ne.onPointerDownCapture)})});O.displayName=w;var k=`DismissableLayerBranch`,ne=l.forwardRef((e,t)=>{let n=l.useContext(D),r=l.useRef(null),a=i(t,r);return l.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,d.jsx)(c.div,{...e,ref:a})});ne.displayName=k;function A(){let e=l.useContext(D),[t,n]=l.useState(null);return l.useEffect(()=>{if(t)return e.dismissableSurfaces.add(t),()=>{e.dismissableSurfaces.delete(t)}},[t,e.dismissableSurfaces]),n}function re(e,t){let{ownerDocument:n=globalThis?.document,deferPointerDownOutside:r=!1,isDeferredPointerDownOutsideRef:i,dismissableSurfaces:a}=t,s=o(e),c=l.useRef(!1),u=l.useRef(!1),d=l.useRef(new Map),f=l.useRef(()=>{});return l.useEffect(()=>{function e(){u.current=!1,i.current=!1,d.current.clear()}function t(){return Array.from(d.current.values()).some(Boolean)}function o(e){if(!u.current)return;let t=e.target;t instanceof Node&&[...a].some(e=>e.contains(t))||d.current.set(e.type,!0),e.type===`click`&&window.setTimeout(()=>{u.current&&f.current()},0)}function l(e){u.current&&d.current.set(e.type,!1)}let p=a=>{if(a.target&&!c.current){let o=function(){n.removeEventListener(`click`,f.current);let r=t();e(),r||j(E,s,c,{discrete:!0})},c={originalEvent:a};u.current=!0,i.current=r&&a.button===0,d.current.clear(),!r||a.button!==0?o():(n.removeEventListener(`click`,f.current),f.current=o,n.addEventListener(`click`,f.current,{once:!0}))}else n.removeEventListener(`click`,f.current),e();c.current=!1},m=[`pointerup`,`mousedown`,`mouseup`,`touchstart`,`touchend`,`click`];for(let e of m)n.addEventListener(e,o,!0),n.addEventListener(e,l);let h=window.setTimeout(()=>{n.addEventListener(`pointerdown`,p)},0);return()=>{window.clearTimeout(h),n.removeEventListener(`pointerdown`,p),n.removeEventListener(`click`,f.current);for(let e of m)n.removeEventListener(e,o,!0),n.removeEventListener(e,l)}},[n,s,r,i,a]),{onPointerDownCapture:()=>c.current=!0}}function ie(e,t=globalThis?.document){let n=o(e),r=l.useRef(!1);return l.useEffect(()=>{let e=e=>{e.target&&!r.current&&j(ee,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function ae(){let e=new CustomEvent(T);document.dispatchEvent(e)}function j(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?s(i,a):i.dispatchEvent(a)}var M=0,N=null;function oe(){l.useEffect(()=>{N||={start:se(),end:se()};let{start:e,end:t}=N;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement(`afterbegin`,e),document.body.lastElementChild!==t&&document.body.insertAdjacentElement(`beforeend`,t),M++,()=>{M===1&&(N?.start.remove(),N?.end.remove(),N=null),M=Math.max(0,M-1)}},[])}function se(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var P=`focusScope.autoFocusOnMount`,F=`focusScope.autoFocusOnUnmount`,ce={bubbles:!1,cancelable:!0},le=`FocusScope`,ue=l.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:a,onUnmountAutoFocus:s,...u}=e,[f,p]=l.useState(null),m=o(a),h=o(s),g=l.useRef(null),_=i(t,p),v=l.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;l.useEffect(()=>{if(r){let e=function(e){if(v.paused||!f)return;let t=e.target;f.contains(t)?g.current=t:I(g.current,{select:!0})},t=function(e){if(v.paused||!f)return;let t=e.relatedTarget;t!==null&&(f.contains(t)||I(g.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&I(f)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return f&&r.observe(f,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,f,v.paused]),l.useEffect(()=>{if(f){_e.add(v);let e=document.activeElement;if(!f.contains(e)){let t=new CustomEvent(P,ce);f.addEventListener(P,m),f.dispatchEvent(t),t.defaultPrevented||(de(be(pe(f)),{select:!0}),document.activeElement===e&&I(f))}return()=>{f.removeEventListener(P,m),setTimeout(()=>{let t=new CustomEvent(F,ce);f.addEventListener(F,h),f.dispatchEvent(t),t.defaultPrevented||I(e??document.body,{select:!0}),f.removeEventListener(F,h),_e.remove(v)},0)}}},[f,m,h,v]);let y=l.useCallback(e=>{if(!n&&!r||v.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=fe(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&I(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&I(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,v.paused]);return(0,d.jsx)(c.div,{tabIndex:-1,...u,ref:_,onKeyDown:y})});ue.displayName=le;function de(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(I(r,{select:t}),document.activeElement!==n)return}function fe(e){let t=pe(e);return[me(t,e),me(t.reverse(),e)]}function pe(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function me(e,t){for(let n of e)if(!he(n,{upTo:t}))return n}function he(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function ge(e){return e instanceof HTMLInputElement&&`select`in e}function I(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&ge(e)&&t&&e.select()}}var _e=ve();function ve(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=ye(e,t),e.unshift(t)},remove(t){e=ye(e,t),e[0]?.resume()}}}function ye(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function be(e){return e.filter(e=>e.tagName!==`A`)}var xe=l.useId||(()=>void 0),Se=0;function Ce(e){let[t,n]=l.useState(xe());return a(()=>{e||n(e=>e??String(Se++))},[e]),e||(t?`radix-${t}`:``)}var we=`Portal`,Te=l.forwardRef((e,t)=>{let{container:n,...r}=e,[i,o]=l.useState(!1);a(()=>o(!0),[]);let s=n||i&&globalThis?.document?.body;return s?u.createPortal((0,d.jsx)(c.div,{...r,ref:t}),s):null});Te.displayName=we;function Ee(e,t){return l.useReducer((e,n)=>t[e][n]??e,e)}var De=e=>{let{present:t,children:n}=e,r=Oe(t),i=typeof n==`function`?n({present:r.isPresent}):l.Children.only(n),a=Ae(r.ref,je(i));return typeof n==`function`||r.isPresent?l.cloneElement(i,{ref:a}):null};De.displayName=`Presence`;function Oe(e){let[t,n]=l.useState(),r=l.useRef(null),i=l.useRef(e),o=l.useRef(`none`),[s,c]=Ee(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return l.useEffect(()=>{let e=L(r.current);o.current=s===`mounted`?e:`none`},[s]),a(()=>{let t=r.current,n=i.current;if(n!==e){let r=o.current,a=L(t);e?c(`MOUNT`):a===`none`||t?.display===`none`?c(`UNMOUNT`):c(n&&r!==a?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,c]),a(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,a=a=>{let o=L(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(c(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},s=e=>{e.target===t&&(o.current=L(r.current))};return t.addEventListener(`animationstart`,s),t.addEventListener(`animationcancel`,a),t.addEventListener(`animationend`,a),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,s),t.removeEventListener(`animationcancel`,a),t.removeEventListener(`animationend`,a)}}else c(`ANIMATION_END`)},[t,c]),{isPresent:[`mounted`,`unmountSuspended`].includes(s),ref:l.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function ke(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function Ae(...e){let t=l.useRef(e);return t.current=e,l.useCallback(e=>{let n=t.current,r=!1,i=n.map(t=>{let n=ke(t,e);return!r&&typeof n==`function`&&(r=!0),n});if(r)return()=>{for(let e=0;e<i.length;e++){let t=i[e];typeof t==`function`?t():ke(n[e],null)}}},[])}function L(e){return e?.animationName||`none`}function je(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Me=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},R=new WeakMap,z=new WeakMap,B={},V=0,Ne=function(e){return e&&(e.host||Ne(e.parentNode))},Pe=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=Ne(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},Fe=function(e,t,n,r){var i=Pe(t,Array.isArray(e)?e:[e]);B[n]||(B[n]=new WeakMap);var a=B[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(R.get(e)||0)+1,l=(a.get(e)||0)+1;R.set(e,c),a.set(e,l),o.push(e),c===1&&i&&z.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),V++,function(){o.forEach(function(e){var t=R.get(e)-1,i=a.get(e)-1;R.set(e,t),a.set(e,i),t||(z.has(e)||e.removeAttribute(r),z.delete(e)),i||e.removeAttribute(n)}),V--,V||(R=new WeakMap,R=new WeakMap,z=new WeakMap,B={})}},Ie=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Me(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Fe(r,i,n,`aria-hidden`)):function(){return null}},H=`right-scroll-bar-position`,U=`width-before-scroll-bar`,Le=`with-scroll-bars-hidden`,Re=`--removed-body-scroll-bar-size`;function W(e,t){return typeof e==`function`?e(t):e&&(e.current=t),e}function ze(e,t){var n=(0,l.useState)(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(e){var t=n.value;t!==e&&(n.value=e,n.callback(e,t))}}}})[0];return n.callback=t,n.facade}var Be=typeof window<`u`?l.useLayoutEffect:l.useEffect,Ve=new WeakMap;function He(e,t){var n=ze(t||null,function(t){return e.forEach(function(e){return W(e,t)})});return Be(function(){var t=Ve.get(n);if(t){var r=new Set(t),i=new Set(e),a=n.current;r.forEach(function(e){i.has(e)||W(e,null)}),i.forEach(function(e){r.has(e)||W(e,a)})}Ve.set(n,e)},[e]),n}function Ue(e){return e}function We(e,t){t===void 0&&(t=Ue);var n=[],r=!1;return{read:function(){if(r)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(e){var i=t(e,r);return n.push(i),function(){n=n.filter(function(e){return e!==i})}},assignSyncMedium:function(e){for(r=!0;n.length;){var t=n;n=[],t.forEach(e)}n={push:function(t){return e(t)},filter:function(){return n}}},assignMedium:function(e){r=!0;var t=[];if(n.length){var i=n;n=[],i.forEach(e),t=n}var a=function(){var n=t;t=[],n.forEach(e)},o=function(){return Promise.resolve().then(a)};o(),n={push:function(e){t.push(e),o()},filter:function(e){return t=t.filter(e),n}}}}}function Ge(e){e===void 0&&(e={});var t=We(null);return t.options=f({async:!0,ssr:!1},e),t}var Ke=function(e){var t=e.sideCar,n=p(e,[`sideCar`]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error(`Sidecar medium not found`);return l.createElement(r,f({},n))};Ke.isSideCarExport=!0;function qe(e,t){return e.useMedium(t),Ke}var Je=Ge(),G=function(){},K=l.forwardRef(function(e,t){var n=l.useRef(null),r=l.useState({onScrollCapture:G,onWheelCapture:G,onTouchMoveCapture:G}),i=r[0],a=r[1],o=e.forwardProps,s=e.children,c=e.className,u=e.removeScrollBar,d=e.enabled,m=e.shards,h=e.sideCar,g=e.noRelative,_=e.noIsolation,v=e.inert,y=e.allowPinchZoom,b=e.as,x=b===void 0?`div`:b,S=e.gapMode,C=p(e,[`forwardProps`,`children`,`className`,`removeScrollBar`,`enabled`,`shards`,`sideCar`,`noRelative`,`noIsolation`,`inert`,`allowPinchZoom`,`as`,`gapMode`]),w=h,T=He([n,t]),E=f(f({},C),i);return l.createElement(l.Fragment,null,d&&l.createElement(w,{sideCar:Je,removeScrollBar:u,shards:m,noRelative:g,noIsolation:_,inert:v,setCallbacks:a,allowPinchZoom:!!y,lockRef:n,gapMode:S}),o?l.cloneElement(l.Children.only(s),f(f({},E),{ref:T})):l.createElement(x,f({},E,{className:c,ref:T}),s))});K.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},K.classNames={fullWidth:U,zeroRight:H};var Ye,Xe=function(){if(Ye)return Ye;if(typeof __webpack_nonce__<`u`)return __webpack_nonce__};function Ze(){if(!document)return null;var e=document.createElement(`style`);e.type=`text/css`;var t=Xe();return t&&e.setAttribute(`nonce`,t),e}function Qe(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function $e(e){(document.head||document.getElementsByTagName(`head`)[0]).appendChild(e)}var et=function(){var e=0,t=null;return{add:function(n){e==0&&(t=Ze())&&(Qe(t,n),$e(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},tt=function(){var e=et();return function(t,n){l.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},nt=function(){var e=tt();return function(t){var n=t.styles,r=t.dynamic;return e(n,r),null}},rt={left:0,top:0,right:0,gap:0},q=function(e){return parseInt(e||``,10)||0},it=function(e){var t=window.getComputedStyle(document.body),n=t[e===`padding`?`paddingLeft`:`marginLeft`],r=t[e===`padding`?`paddingTop`:`marginTop`],i=t[e===`padding`?`paddingRight`:`marginRight`];return[q(n),q(r),q(i)]},at=function(e){if(e===void 0&&(e=`margin`),typeof window>`u`)return rt;var t=it(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},ot=nt(),J=`data-scroll-locked`,st=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),`
2
+ .${Le} {
3
+ overflow: hidden ${r};
4
+ padding-right: ${s}px ${r};
5
+ }
6
+ body[${J}] {
7
+ overflow: hidden ${r};
8
+ overscroll-behavior: contain;
9
+ ${[t&&`position: relative ${r};`,n===`margin`&&`
10
+ padding-left: ${i}px;
11
+ padding-top: ${a}px;
12
+ padding-right: ${o}px;
13
+ margin-left:0;
14
+ margin-top:0;
15
+ margin-right: ${s}px ${r};
16
+ `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)}
17
+ }
18
+
19
+ .${H} {
20
+ right: ${s}px ${r};
21
+ }
22
+
23
+ .${U} {
24
+ margin-right: ${s}px ${r};
25
+ }
26
+
27
+ .${H} .${H} {
28
+ right: 0 ${r};
29
+ }
30
+
31
+ .${U} .${U} {
32
+ margin-right: 0 ${r};
33
+ }
34
+
35
+ body[${J}] {
36
+ ${Re}: ${s}px;
37
+ }
38
+ `},ct=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},lt=function(){l.useEffect(function(){return document.body.setAttribute(J,(ct()+1).toString()),function(){var e=ct()-1;e<=0?document.body.removeAttribute(J):document.body.setAttribute(J,e.toString())}},[])},ut=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;lt();var a=l.useMemo(function(){return at(i)},[i]);return l.createElement(ot,{styles:st(a,!t,i,n?``:`!important`)})},Y=!1;if(typeof window<`u`)try{var X=Object.defineProperty({},"passive",{get:function(){return Y=!0,!0}});window.addEventListener(`test`,X,X),window.removeEventListener(`test`,X,X)}catch{Y=!1}var Z=Y?{passive:!1}:!1,dt=function(e){return e.tagName===`TEXTAREA`},ft=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!dt(e)&&n[t]===`visible`)},pt=function(e){return ft(e,`overflowY`)},mt=function(e){return ft(e,`overflowX`)},ht=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),vt(e,r)){var i=yt(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},gt=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},_t=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},vt=function(e,t){return e===`v`?pt(t):mt(t)},yt=function(e,t){return e===`v`?gt(t):_t(t)},bt=function(e,t){return e===`h`&&t===`rtl`?-1:1},xt=function(e,t,n,r,i){var a=bt(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=yt(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&vt(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},Q=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},St=function(e){return[e.deltaX,e.deltaY]},Ct=function(e){return e&&`current`in e?e.current:e},wt=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Tt=function(e){return`
39
+ .block-interactivity-${e} {pointer-events: none;}
40
+ .allow-interactivity-${e} {pointer-events: all;}
41
+ `},Et=0,$=[];function Dt(e){var t=l.useRef([]),n=l.useRef([0,0]),r=l.useRef(),i=l.useState(Et++)[0],a=l.useState(nt)[0],o=l.useRef(e);l.useEffect(function(){o.current=e},[e]),l.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=h([e.lockRef.current],(e.shards||[]).map(Ct),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=l.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=Q(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=ht(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=ht(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return xt(h,t,e,h===`h`?s:c,!0)},[]),c=l.useCallback(function(e){var n=e;if(!(!$.length||$[$.length-1]!==a)){var r=`deltaY`in n?St(n):Q(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&wt(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(Ct).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),u=l.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:Ot(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),d=l.useCallback(function(e){n.current=Q(e),r.current=void 0},[]),f=l.useCallback(function(t){u(t.type,St(t),t.target,s(t,e.lockRef.current))},[]),p=l.useCallback(function(t){u(t.type,Q(t),t.target,s(t,e.lockRef.current))},[]);l.useEffect(function(){return $.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener(`wheel`,c,Z),document.addEventListener(`touchmove`,c,Z),document.addEventListener(`touchstart`,d,Z),function(){$=$.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,Z),document.removeEventListener(`touchmove`,c,Z),document.removeEventListener(`touchstart`,d,Z)}},[]);var m=e.removeScrollBar,g=e.inert;return l.createElement(l.Fragment,null,g?l.createElement(a,{styles:Tt(i)}):null,m?l.createElement(ut,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Ot(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var kt=qe(Je,Dt),At=l.forwardRef(function(e,t){return l.createElement(K,f({},e,{ref:t,sideCar:kt}))});At.classNames=K.classNames;export{Ce as a,O as c,g as d,m as f,Te as i,A as l,Ie as n,ue as o,p,De as r,oe as s,At as t,x as u};
@@ -0,0 +1 @@
1
+ import{o as e,t}from"./rolldown-runtime-DAXXjFlN.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{In as r,Wn as i,dr as a}from"./button-BshWPHvn.js";import{o,t as s}from"./use-settings-navigation-aDSLtmEl.js";import{n as c}from"./components-CwL6a6As-B0E0-NBJ.js";import{ir as l}from"./index-BJz9Zlsc.js";import{n as u}from"./global-data-context-gAMDH9u1.js";import{s as d}from"./zapier-modal-a7t75iNI.js";var f=t(((e,t)=>{t.exports=typeof process==`object`&&{}.NODE_DEBUG&&/\bsemver\b/i.test({}.NODE_DEBUG)?(...e)=>console.error(`SEMVER`,...e):()=>{}})),p=t(((e,t)=>{var n=`2.0.0`,r=256;t.exports={MAX_LENGTH:r,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:r-6,MAX_SAFE_INTEGER:2**53-1||9007199254740991,RELEASE_TYPES:[`major`,`premajor`,`minor`,`preminor`,`patch`,`prepatch`,`prerelease`],SEMVER_SPEC_VERSION:n,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}})),m=t(((e,t)=>{var{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:i}=p(),a=f();e=t.exports={};var o=e.re=[],s=e.safeRe=[],c=e.src=[],l=e.safeSrc=[],u=e.t={},d=0,m=`[a-zA-Z0-9-]`,h=[[`\\s`,1],[`\\d`,i],[m,r]],g=e=>{for(let[t,n]of h)e=e.split(`${t}*`).join(`${t}{0,${n}}`).split(`${t}+`).join(`${t}{1,${n}}`);return e},_=(e,t,n)=>{let r=g(t),i=d++;a(e,i,t),u[e]=i,c[i]=t,l[i]=r,o[i]=new RegExp(t,n?`g`:void 0),s[i]=new RegExp(r,n?`g`:void 0)};_(`NUMERICIDENTIFIER`,`0|[1-9]\\d*`),_(`NUMERICIDENTIFIERLOOSE`,`\\d+`),_(`NONNUMERICIDENTIFIER`,`\\d*[a-zA-Z-]${m}*`),_(`MAINVERSION`,`(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})`),_(`MAINVERSIONLOOSE`,`(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})`),_(`PRERELEASEIDENTIFIER`,`(?:${c[u.NONNUMERICIDENTIFIER]}|${c[u.NUMERICIDENTIFIER]})`),_(`PRERELEASEIDENTIFIERLOOSE`,`(?:${c[u.NONNUMERICIDENTIFIER]}|${c[u.NUMERICIDENTIFIERLOOSE]})`),_(`PRERELEASE`,`(?:-(${c[u.PRERELEASEIDENTIFIER]}(?:\\.${c[u.PRERELEASEIDENTIFIER]})*))`),_(`PRERELEASELOOSE`,`(?:-?(${c[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[u.PRERELEASEIDENTIFIERLOOSE]})*))`),_(`BUILDIDENTIFIER`,`${m}+`),_(`BUILD`,`(?:\\+(${c[u.BUILDIDENTIFIER]}(?:\\.${c[u.BUILDIDENTIFIER]})*))`),_(`FULLPLAIN`,`v?${c[u.MAINVERSION]}${c[u.PRERELEASE]}?${c[u.BUILD]}?`),_(`FULL`,`^${c[u.FULLPLAIN]}$`),_(`LOOSEPLAIN`,`[v=\\s]*${c[u.MAINVERSIONLOOSE]}${c[u.PRERELEASELOOSE]}?${c[u.BUILD]}?`),_(`LOOSE`,`^${c[u.LOOSEPLAIN]}$`),_(`GTLT`,`((?:<|>)?=?)`),_(`XRANGEIDENTIFIERLOOSE`,`${c[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),_(`XRANGEIDENTIFIER`,`${c[u.NUMERICIDENTIFIER]}|x|X|\\*`),_(`XRANGEPLAIN`,`[v=\\s]*(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:${c[u.PRERELEASE]})?${c[u.BUILD]}?)?)?`),_(`XRANGEPLAINLOOSE`,`[v=\\s]*(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:${c[u.PRERELEASELOOSE]})?${c[u.BUILD]}?)?)?`),_(`XRANGE`,`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAIN]}$`),_(`XRANGELOOSE`,`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAINLOOSE]}$`),_(`COERCEPLAIN`,`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),_(`COERCE`,`${c[u.COERCEPLAIN]}(?:$|[^\\d])`),_(`COERCEFULL`,c[u.COERCEPLAIN]+`(?:${c[u.PRERELEASE]})?(?:${c[u.BUILD]})?(?:$|[^\\d])`),_(`COERCERTL`,c[u.COERCE],!0),_(`COERCERTLFULL`,c[u.COERCEFULL],!0),_(`LONETILDE`,`(?:~>?)`),_(`TILDETRIM`,`(\\s*)${c[u.LONETILDE]}\\s+`,!0),e.tildeTrimReplace=`$1~`,_(`TILDE`,`^${c[u.LONETILDE]}${c[u.XRANGEPLAIN]}$`),_(`TILDELOOSE`,`^${c[u.LONETILDE]}${c[u.XRANGEPLAINLOOSE]}$`),_(`LONECARET`,`(?:\\^)`),_(`CARETTRIM`,`(\\s*)${c[u.LONECARET]}\\s+`,!0),e.caretTrimReplace=`$1^`,_(`CARET`,`^${c[u.LONECARET]}${c[u.XRANGEPLAIN]}$`),_(`CARETLOOSE`,`^${c[u.LONECARET]}${c[u.XRANGEPLAINLOOSE]}$`),_(`COMPARATORLOOSE`,`^${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]})$|^$`),_(`COMPARATOR`,`^${c[u.GTLT]}\\s*(${c[u.FULLPLAIN]})$|^$`),_(`COMPARATORTRIM`,`(\\s*)${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]}|${c[u.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace=`$1$2$3`,_(`HYPHENRANGE`,`^\\s*(${c[u.XRANGEPLAIN]})\\s+-\\s+(${c[u.XRANGEPLAIN]})\\s*$`),_(`HYPHENRANGELOOSE`,`^\\s*(${c[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[u.XRANGEPLAINLOOSE]})\\s*$`),_(`STAR`,`(<|>)?=?\\s*\\*`),_(`GTE0`,`^\\s*>=\\s*0\\.0\\.0\\s*$`),_(`GTE0PRE`,`^\\s*>=\\s*0\\.0\\.0-0\\s*$`)})),h=t(((e,t)=>{var n=Object.freeze({loose:!0}),r=Object.freeze({});t.exports=e=>e?typeof e==`object`?e:n:r})),g=t(((e,t)=>{var n=/^[0-9]+$/,r=(e,t)=>{if(typeof e==`number`&&typeof t==`number`)return e===t?0:e<t?-1:1;let r=n.test(e),i=n.test(t);return r&&i&&(e=+e,t=+t),e===t?0:r&&!i?-1:i&&!r?1:e<t?-1:1};t.exports={compareIdentifiers:r,rcompareIdentifiers:(e,t)=>r(t,e)}})),_=t(((e,t)=>{var n=f(),{MAX_LENGTH:r,MAX_SAFE_INTEGER:i}=p(),{safeRe:a,t:o}=m(),s=h(),{compareIdentifiers:c}=g(),l=(e,t)=>{let n=t.split(`.`);if(n.length>e.length)return!1;for(let t=0;t<n.length;t++)if(c(e[t],n[t])!==0)return!1;return!0};t.exports=class e{constructor(t,c){if(c=s(c),t instanceof e){if(t.loose===!!c.loose&&t.includePrerelease===!!c.includePrerelease)return t;t=t.version}else if(typeof t!=`string`)throw TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>r)throw TypeError(`version is longer than ${r} characters`);n(`SemVer`,t,c),this.options=c,this.loose=!!c.loose,this.includePrerelease=!!c.includePrerelease;let l=t.trim().match(c.loose?a[o.LOOSE]:a[o.FULL]);if(!l)throw TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>i||this.major<0)throw TypeError(`Invalid major version`);if(this.minor>i||this.minor<0)throw TypeError(`Invalid minor version`);if(this.patch>i||this.patch<0)throw TypeError(`Invalid patch version`);l[4]?this.prerelease=l[4].split(`.`).map(e=>{if(/^[0-9]+$/.test(e)){let t=+e;if(t>=0&&t<i)return t}return e}):this.prerelease=[],this.build=l[5]?l[5].split(`.`):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(`.`)}`),this.version}toString(){return this.version}compare(t){if(n(`SemVer.compare`,this.version,this.options,t),!(t instanceof e)){if(typeof t==`string`&&t===this.version)return 0;t=new e(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(t){return t instanceof e||(t=new e(t,this.options)),this.major<t.major?-1:this.major>t.major?1:this.minor<t.minor?-1:this.minor>t.minor?1:this.patch<t.patch?-1:+(this.patch>t.patch)}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let e=this.prerelease[r],i=t.prerelease[r];if(n(`prerelease compare`,r,e,i),e===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(e===void 0)return-1;if(e===i)continue;return c(e,i)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let e=this.build[r],i=t.build[r];if(n(`build compare`,r,e,i),e===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(e===void 0)return-1;if(e===i)continue;return c(e,i)}while(++r)}inc(e,t,n){if(e.startsWith(`pre`)){if(!t&&n===!1)throw Error(`invalid increment argument: identifier is empty`);if(t){let e=`-${t}`.match(this.options.loose?a[o.PRERELEASELOOSE]:a[o.PRERELEASE]);if(!e||e[1]!==t)throw Error(`invalid identifier: ${t}`)}}switch(e){case`premajor`:this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(`pre`,t,n);break;case`preminor`:this.prerelease.length=0,this.patch=0,this.minor++,this.inc(`pre`,t,n);break;case`prepatch`:this.prerelease.length=0,this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`prerelease`:this.prerelease.length===0&&this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`release`:if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case`major`:(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case`minor`:(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case`patch`:this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case`pre`:{let e=+!!Number(n);if(this.prerelease.length===0)this.prerelease=[e];else{let r=this.prerelease.length;for(;--r>=0;)typeof this.prerelease[r]==`number`&&(this.prerelease[r]++,r=-2);if(r===-1){if(t===this.prerelease.join(`.`)&&n===!1)throw Error(`invalid increment argument: identifier already exists`);this.prerelease.push(e)}}if(t){let r=[t,e];if(n===!1&&(r=[t]),l(this.prerelease,t)){let e=this.prerelease[t.split(`.`).length];isNaN(e)&&(this.prerelease=r)}else this.prerelease=r}break}default:throw Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(`.`)}`),this}}})),v=e(t(((e,t)=>{var n=_();t.exports=(e,t,r=!1)=>{if(e instanceof n)return e;try{return new n(e,t)}catch(e){if(!r)return null;throw e}}}))(),1);function y(e){if(!e)return``;let t=e.indexOf(`+`),n=t===-1?``:e.slice(t+1),r=t===-1?e:e.slice(0,t);if(n&&n!==`moya`){let e=n.split(`.`),t=e[e.length-1];if(t&&/^[0-9a-f]{7,40}$/.test(t))return`https://github.com/TryGhost/Ghost/commit/${t}`}try{let e=(0,v.default)(r,{includePrerelease:!0})?.prerelease;if(e&&e.length>0){let t=String(e[0]).split(`-`)[1];return t?.startsWith(`g`)?`https://github.com/TryGhost/Ghost/commit/${t.slice(1)}`:``}}catch{return``}return`https://github.com/TryGhost/Ghost/releases/tag/v${r}`}function b(e,t){let n=!!e.match?.(/production/i);return!!(n&&t!==`mysql8`||!n&&t===`mysql5`)}var x=n();function S({label:e,version:t}){let n=y(t);return(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`strong`,{children:[e,`:`]}),` `,n?(0,x.jsx)(`a`,{className:`text-green`,href:n,rel:`noopener noreferrer`,target:`_blank`,children:t}):t]})}function C(){let{updateRoute:e}=s(),t=u().config,n=d();function f(){return new Date().getFullYear()}function p(){return!!t.enableDeveloperExperiments}function m(){return!t.hostSettings?.siteId}return(0,x.jsx)(o,{cancelLabel:``,footer:(0,x.jsx)(x.Fragment,{}),topRightContent:`close`,width:540,onClose:()=>{e(``)},children:(0,x.jsxs)(`div`,{className:`flex flex-col gap-4 pb-7`,children:[(0,x.jsx)(c,{className:`h-auto w-[120px] dark:invert`}),(0,x.jsxs)(`div`,{className:`mt-3 flex flex-col gap-1.5`,children:[n?.message&&(0,x.jsxs)(`div`,{className:`gh-prose-links mb-4 rounded-sm border border-green p-5`,children:[(0,x.jsx)(`strong`,{children:`Update available!`}),(0,x.jsx)(`div`,{dangerouslySetInnerHTML:{__html:n.message}})]}),(0,x.jsx)(S,{label:`Version`,version:t.version}),m()&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`strong`,{children:`Environment:`}),` `,t.environment]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`strong`,{children:`Database:`}),` `,t.database]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`strong`,{children:`Mail:`}),` `,t.mail?t.mail:`Native`]})]}),p()&&(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`strong`,{children:`Developer experiments:`}),` Enabled`]}),m()&&b(t.environment,t.database)&&(0,x.jsxs)(`div`,{className:`text-red-500 dark:text-red-400`,children:[`You are running an unsupported database in production. Please `,(0,x.jsx)(`a`,{href:`https://ghost.org/docs/faq/supported-databases/`,rel:`noopener noreferrer`,target:`_blank`,children:`upgrade to MySQL 8`}),`.`]})]}),(0,x.jsx)(l,{}),(0,x.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,x.jsxs)(`a`,{className:`flex items-center gap-2 hover:text-grey-900 dark:hover:text-grey-400`,href:`https://ghost.org/docs/`,rel:`noopener noreferrer`,target:`_blank`,children:[(0,x.jsx)(a,{className:`size-4`}),` User documentation`]}),(0,x.jsxs)(`a`,{className:`flex items-center gap-2 hover:text-grey-900 dark:hover:text-grey-400`,href:`https://forum.ghost.org/`,rel:`noopener noreferrer`,target:`_blank`,children:[(0,x.jsx)(i,{className:`size-4`}),` Get help with Ghost`]}),(0,x.jsxs)(`a`,{className:`flex items-center gap-2 hover:text-grey-900 dark:hover:text-grey-400`,href:`https://ghost.org/docs/contributing/`,rel:`noopener noreferrer`,target:`_blank`,children:[(0,x.jsx)(r,{className:`size-4`}),` Get involved`]})]}),(0,x.jsx)(l,{}),(0,x.jsxs)(`p`,{className:`max-w-[460px] text-sm`,children:[`Copyright © 2013 – `,f(),` Ghost Foundation, released under the `,(0,x.jsx)(`a`,{className:`text-green`,href:`https://github.com/TryGhost/Ghost/blob/main/LICENSE`,rel:`noopener noreferrer`,target:`_blank`,children:`MIT license`}),`. `,(0,x.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/`,rel:`noopener noreferrer`,target:`_blank`,children:`Ghost`}),` is a registered trademark of `,(0,x.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/trademark/`,rel:`noopener noreferrer`,target:`_blank`,children:`Ghost Foundation Ltd`}),`.`]})]})})}export{C as default};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{D as r,t as i}from"./button-BshWPHvn.js";import{t as a}from"./skeleton-D7hwjdry.js";import{i as o,o as s,r as c,t as l}from"./field-kJYZ2T3C.js";import{Bt as u,Di as d,V as f,bt as p,mr as m,pr as h,wt as g}from"./index-BJz9Zlsc.js";import"./layout-DC6QGDaw.js";var _=e(t(),1),v=n(),y=/^@?[^@\s]+@[^@\s]+$/;function b(e){let t=e.trim();return t.startsWith(`@`)?t:`@${t}`}function x(e){try{let t=new URL(e),n=t.pathname.match(/^\/users\/([^/]+)\/?$/);return n?`${decodeURIComponent(n[1])}@${t.hostname}`:`${t.hostname}${t.pathname}`}catch{return e}}function S(e){if(typeof e==`object`&&e&&`statusCode`in e&&typeof e.statusCode==`number`){if(e.statusCode===400)return`Enter a valid handle, like old@mastodon.social.`;if(e.statusCode===404)return`Could not find that profile. Check the handle and try again.`}return`Something went wrong, please try again.`}var C=()=>{let{data:e,isError:t,isLoading:n,refetch:C}=p(`index`),w=g(`index`),T=u(`index`),[E,D]=(0,_.useState)(``),[O,k]=(0,_.useState)(null),[A,j]=(0,_.useState)(null),[M,N]=(0,_.useState)(null),P=[...e?.aliases??[]].reverse(),F=n||t||P.length>0,I=async e=>{e.preventDefault();let t=E.trim();if(!y.test(t)){k(`Enter a valid handle, like old@mastodon.social.`);return}k(null),j(null);try{let e=b(t);await w.mutateAsync(e),D(``)}catch(e){k(S(e))}},L=async e=>{j(null),N(e);try{await T.mutateAsync(e)}catch{j(`Could not remove migration profile.`)}finally{N(null)}};return(0,v.jsx)(f,{children:(0,v.jsxs)(`div`,{className:`mx-auto max-w-[620px] py-[min(4vh,48px)]`,children:[(0,v.jsx)(`div`,{className:`flex items-center justify-between gap-8`,children:(0,v.jsx)(d,{children:`Account migration`})}),(0,v.jsx)(`div`,{className:`mt-3 text-base text-gray-800 dark:text-gray-600`,children:(0,v.jsxs)(`p`,{children:[`You can move your followers from another social web account (eg. `,(0,v.jsx)(`a`,{className:`underline hover:text-black dark:hover:text-white`,href:`https://docs.joinmastodon.org/user/moving/#move`,rel:`noopener noreferrer`,target:`_blank`,children:`Mastodon`}),`) to this one by creating an account alias. This action is harmless and reversible. The account migration is initiated from the old account.`]})}),(0,v.jsx)(`form`,{className:`mt-10`,onSubmit:I,children:(0,v.jsxs)(l,{"data-invalid":O?!0:void 0,children:[(0,v.jsx)(s,{htmlFor:`account-migration-source-handle`,children:`Old account handle`}),(0,v.jsx)(c,{id:`account-migration-source-handle-description`,children:`Specify the username@domain of the account you want to move from`}),(0,v.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row`,children:[(0,v.jsx)(m,{"aria-describedby":O?`account-migration-source-handle-error`:`account-migration-source-handle-description`,"aria-invalid":O?!0:void 0,autoComplete:`off`,className:`sm:flex-1`,id:`account-migration-source-handle`,placeholder:`username@domain`,value:E,"data-1p-ignore":!0,onChange:e=>D(e.target.value)}),(0,v.jsxs)(i,{className:`relative h-9 text-sm sm:w-auto`,disabled:w.isPending,type:`submit`,children:[(0,v.jsx)(`span`,{className:w.isPending?`invisible`:void 0,children:`Create alias`}),w.isPending&&(0,v.jsxs)(`span`,{className:`absolute inset-0 flex items-center justify-center`,children:[(0,v.jsx)(h,{color:`light`,size:`sm`}),(0,v.jsx)(`span`,{className:`sr-only`,children:`Creating alias...`})]})]})]}),O&&(0,v.jsx)(o,{id:`account-migration-source-handle-error`,children:O}),A&&(0,v.jsx)(o,{id:`account-migration-alias-error`,children:A})]})}),F&&(0,v.jsxs)(`div`,{className:`mt-10`,"data-testid":`account-migration-aliases`,children:[(0,v.jsx)(`div`,{className:`pb-3`,children:(0,v.jsx)(s,{asChild:!0,children:(0,v.jsx)(`div`,{children:`Account aliases`})})}),n?(0,v.jsx)(`div`,{className:`border-t border-gray-200 py-4 dark:border-gray-950`,children:(0,v.jsx)(a,{className:`h-5 w-48`})}):t?(0,v.jsxs)(`div`,{className:`flex items-center justify-between gap-4 border-t border-gray-200 py-4 text-sm text-gray-700 dark:border-gray-950 dark:text-gray-600`,children:[(0,v.jsx)(`span`,{children:`Could not load account aliases.`}),(0,v.jsx)(i,{className:`px-0 font-medium`,variant:`link`,onClick:()=>C(),children:`Retry`})]}):(0,v.jsx)(`div`,{className:`divide-y divide-gray-200 border-t border-gray-200 dark:divide-gray-950 dark:border-gray-950`,children:P.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center justify-between gap-4 py-4`,children:[(0,v.jsx)(`div`,{className:`min-w-0 truncate text-base text-black dark:text-white`,children:x(e.apId)}),(0,v.jsx)(i,{className:`shrink-0 px-0 font-medium text-gray-700 hover:text-red dark:text-gray-600 dark:hover:text-red`,disabled:M===e.apId,variant:`link`,onClick:()=>L(e.apId),children:M===e.apId?(0,v.jsx)(h,{size:`sm`}):(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(r,{size:15}),` Unlink`]})})]},e.apId))})]})]})})};export{C as default};