ghost 6.60.0 → 6.62.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 (613) hide show
  1. package/components/ghost-storage-base-3.0.0.tgz +0 -0
  2. package/components/tryghost-adapter-base-cache-0.2.0.tgz +0 -0
  3. package/components/tryghost-adapter-base-jobs-0.0.0.tgz +0 -0
  4. package/components/tryghost-adapter-base-redirects-0.0.0.tgz +0 -0
  5. package/components/tryghost-adapter-base-route-settings-0.0.0.tgz +0 -0
  6. package/components/tryghost-adapter-base-scheduling-0.2.3.tgz +0 -0
  7. package/components/tryghost-adapter-base-sso-0.1.3.tgz +0 -0
  8. package/components/tryghost-admin-api-schema-0.0.0.tgz +0 -0
  9. package/components/tryghost-checkout-0.0.0.tgz +0 -0
  10. package/components/tryghost-custom-field-types-0.0.0.tgz +0 -0
  11. package/components/tryghost-i18n-0.0.0.tgz +0 -0
  12. package/components/tryghost-kg-card-factory-5.2.4.tgz +0 -0
  13. package/components/tryghost-kg-clean-basic-html-4.3.4.tgz +0 -0
  14. package/components/tryghost-kg-converters-1.2.5.tgz +0 -0
  15. package/components/tryghost-kg-default-cards-10.3.5.tgz +0 -0
  16. package/components/tryghost-kg-default-nodes-2.2.1.tgz +0 -0
  17. package/components/tryghost-kg-default-transforms-1.3.4.tgz +0 -0
  18. package/components/tryghost-kg-html-to-lexical-1.4.0.tgz +0 -0
  19. package/components/tryghost-kg-lexical-html-renderer-1.5.0.tgz +0 -0
  20. package/components/tryghost-kg-markdown-html-renderer-7.2.4.tgz +0 -0
  21. package/components/tryghost-kg-utils-1.1.4.tgz +0 -0
  22. package/components/tryghost-nql-string-0.0.0.tgz +0 -0
  23. package/components/tryghost-parse-email-address-0.0.0.tgz +0 -0
  24. package/content/settings/README.md +1 -1
  25. package/content/themes/casper/.gitignore +28 -0
  26. package/content/themes/casper/assets/built/casper.js +1 -1
  27. package/content/themes/casper/assets/built/screen.css +1 -1
  28. package/content/themes/casper/assets/css/screen.css +2 -1
  29. package/content/themes/casper/assets/js/lightbox.js +63 -46
  30. package/content/themes/casper/package.json +6 -6
  31. package/content/themes/casper/page.hbs +1 -0
  32. package/content/themes/casper/post.hbs +1 -0
  33. package/content/themes/source/.gitignore +28 -0
  34. package/content/themes/source/assets/built/screen.css +1 -1
  35. package/content/themes/source/assets/built/source.js +1 -1
  36. package/content/themes/source/assets/css/screen.css +2 -1
  37. package/content/themes/source/assets/js/lightbox.js +62 -45
  38. package/content/themes/source/assets/js/main.js +2 -2
  39. package/content/themes/source/package.json +4 -4
  40. package/content/themes/source/partials/feature-image.hbs +1 -0
  41. package/core/boot.js +62 -21
  42. package/core/built/admin/assets/Combination-B0l4MKVh.js +41 -0
  43. package/core/built/admin/assets/InterVariable-DiVDrmQJ.woff2 +0 -0
  44. package/core/built/admin/assets/InterVariable-Italic-FCBEiFp6.woff2 +0 -0
  45. package/core/built/admin/assets/{PolarAngleAxis-C4qtHy1B.js → PolarAngleAxis-pkMyqz8g.js} +1 -1
  46. package/core/built/admin/assets/{RadialBarChart-Bh09Stsj.js → RadialBarChart-JAKoS4KT.js} +1 -1
  47. package/core/built/admin/assets/{about-BgpmhCuM.js → about-Dyae_UT6.js} +1 -1
  48. package/core/built/admin/assets/account-migration-CESa0mnX.js +1 -0
  49. package/core/built/admin/assets/{action-list-lGzZLHc8.js → action-list-C4v0-du8.js} +1 -1
  50. package/core/built/admin/assets/activitypub/{account-migration-DMHuPnJn.js → account-migration-By69CgCp.js} +16 -16
  51. package/core/built/admin/assets/activitypub/activitypub.js +9 -10
  52. package/core/built/admin/assets/activitypub/{avatar-DhTo5D1B.js → avatar-DLPL3Abs.js} +59 -68
  53. package/core/built/admin/assets/activitypub/{avatar-flipboard-DnVgbEfa.js → avatar-flipboard-C9iDY-QV.js} +2 -2
  54. package/core/built/admin/assets/activitypub/{bluesky-sharing-BT4zAlW7.js → bluesky-sharing-BJcPMrDd.js} +37 -37
  55. package/core/built/admin/assets/activitypub/{content-formatters-BeDZ-DIa.js → content-formatters-3rTHg3mp.js} +18 -18
  56. package/core/built/admin/assets/activitypub/{copy-8sqxUuNd.js → copy-DIAOQoCZ.js} +2 -2
  57. package/core/built/admin/assets/activitypub/{domain-xQDDu1CS.js → domain-DUR4xSkV.js} +121 -121
  58. package/core/built/admin/assets/activitypub/{edit-profile-BXdF_r2G.js → edit-profile-BqtfzxCp.js} +40 -40
  59. package/core/built/admin/assets/activitypub/{explore-CMt7gKlL.js → explore-BxuJd-J4.js} +27 -27
  60. package/core/built/admin/assets/activitypub/{feed-Bwqdddp_.js → feed-BM1TcksA.js} +51 -51
  61. package/core/built/admin/assets/activitypub/{field-4co_8FVg.js → field-Dn7HHx2-.js} +3 -3
  62. package/core/built/admin/assets/activitypub/{hash-DwakMs4X.js → hash-Bm3WxYN4.js} +2 -2
  63. package/core/built/admin/assets/activitypub/inbox-CCjkuow2.js +1284 -0
  64. package/core/built/admin/assets/activitypub/{inbox-ckD4wo_r.js → inbox-d8oJRTf4.js} +2 -2
  65. package/core/built/admin/assets/activitypub/label-1AA_s9Fa.js +16 -0
  66. package/core/built/admin/assets/activitypub/layout-2-0bw6HN.js +1 -0
  67. package/core/built/admin/assets/activitypub/{moderation-KCCO7L2J.js → moderation-CnmxEB8w.js} +91 -91
  68. package/core/built/admin/assets/activitypub/{note-BX_Bz5A0.js → note-ZKc_Bnba.js} +24 -24
  69. package/core/built/admin/assets/activitypub/{notifications-BQOYGvRv.js → notifications-CB2tJZau.js} +51 -51
  70. package/core/built/admin/assets/activitypub/{onboarding-CNelD_uF.js → onboarding-BsJ9E5qf.js} +2 -2
  71. package/core/built/admin/assets/activitypub/{onboarding-mat5Hrl0.js → onboarding-CSUJJIlh.js} +2 -2
  72. package/core/built/admin/assets/activitypub/{preferences-6h43G9_q.js → preferences-0-JZnUkI.js} +1519 -1519
  73. package/core/built/admin/assets/activitypub/{profile-BMN9VVZ2.js → profile-C35cFIhM.js} +256 -256
  74. package/core/built/admin/assets/activitypub/{reply-ZNo04xsO.js → reply-DYK5vVqb.js} +2 -2
  75. package/core/built/admin/assets/activitypub/{routes-3B9mUQ7i.js → routes-BD4vscyc.js} +796 -790
  76. package/core/built/admin/assets/activitypub/{separator-D9taVCCa.js → separator-BbQqTm-p.js} +3 -3
  77. package/core/built/admin/assets/activitypub/settings-BsMROdqh.js +315 -0
  78. package/core/built/admin/assets/activitypub/{site-DHoMupSB.js → site-O0RL9YCN.js} +2 -2
  79. package/core/built/admin/assets/activitypub/{step-1-BsGGnBuT.js → step-1-BMSx7c_X.js} +6 -6
  80. package/core/built/admin/assets/activitypub/{step-2-teosIS0k.js → step-2-DtPQzlTH.js} +6 -6
  81. package/core/built/admin/assets/activitypub/{step-3-BjD5TokC.js → step-3-CLlOZTyt.js} +11 -11
  82. package/core/built/admin/assets/activitypub/{tabs-Cvwl1wXU.js → tabs-Dxk-b9M-.js} +306 -306
  83. package/core/built/admin/assets/activitypub/{topic-filter-C3LZJc2X.js → topic-filter-5yZH6tId.js} +3 -3
  84. package/core/built/admin/assets/activitypub/{use-activity-pub-queries-Dp9f0gov.js → use-activity-pub-queries-CV50qe03.js} +3 -3
  85. package/core/built/admin/assets/activitypub/{use-navigate-with-base-path-C4RI0sa9.js → use-navigate-with-base-path-Bmk5h4lW.js} +220 -220
  86. package/core/built/admin/assets/activitypub/{use-reply-chain-data-C2oNDMUH.js → use-reply-chain-data-Cbvzgjzd.js} +30 -30
  87. package/core/built/admin/assets/activitypub/{users-CoX6FT_K.js → users-BjcoP_HC.js} +7 -5
  88. package/core/built/admin/assets/activitypub/{x-Dxm6pV9X.js → x-DbQZOLiI.js} +2 -2
  89. package/core/built/admin/assets/add-integration-modal-BlF6rs_f.js +1 -0
  90. package/core/built/admin/assets/add-newsletter-modal-CglVQqah.js +1 -0
  91. package/core/built/admin/assets/add-recommendation-modal-wz7BsuaG.js +1 -0
  92. package/core/built/admin/assets/analytics-C4HE1gBg.js +1 -0
  93. package/core/built/admin/assets/{announcement-bar-modal-BTHiy1ZO.js → announcement-bar-modal-Ci4zz8jO.js} +1 -1
  94. package/core/built/admin/assets/{api-keys-Boy5pLbD.js → api-keys-Ck-Yteiv.js} +1 -1
  95. package/core/built/admin/assets/audience-CtbA54Sn.js +1 -0
  96. package/core/built/admin/assets/{automated-emails-te1D5kq-.js → automated-emails-D5VVMND9.js} +1 -1
  97. package/core/built/admin/assets/automations-CzKt5fb8.js +1 -0
  98. package/core/built/admin/assets/bluesky-sharing-BEtJ_gL_.js +1 -0
  99. package/core/built/admin/assets/{box-By_EgGtm.js → box-CdfQAP_F.js} +1 -1
  100. package/core/built/admin/assets/{brand-icon-09YqFZjV.js → brand-icon-CrIGOA3Z.js} +1 -1
  101. package/core/built/admin/assets/{breadcrumb-CcFr_ltt.js → breadcrumb-zUrZrBtW.js} +1 -1
  102. package/core/built/admin/assets/{button-BshWPHvn.js → button-eNMKQWXr.js} +1 -1
  103. package/core/built/admin/assets/{card-CiiE7QfM.js → card--VNbfgo3.js} +1 -1
  104. package/core/built/admin/assets/{chart-BnXyfH11.js → chart-BrhA41Zi.js} +1 -1
  105. package/core/built/admin/assets/chart-helpers-CfBKt0vT.js +1 -0
  106. package/core/built/admin/assets/{checkbox-Dwwr_3Py.js → checkbox-CgOn_tKW.js} +1 -1
  107. package/core/built/admin/assets/{chunk.524.91ecb33e6afc3bd8949b.js → chunk.524.a697dee88db67fdf6021.js} +4 -4
  108. package/core/built/admin/assets/{chunk.582.512549909741883f960c.js → chunk.582.5ed5d124cfca9c259b9c.js} +6 -6
  109. package/core/built/admin/assets/{chunk.16.f76a6314082d813d67e0.js → chunk.598.7e056fabb47ce7dbd73f.js} +14 -14
  110. package/core/built/admin/assets/{code-editor-view-BwIdPy_k.js → code-editor-view-BYNoAoNV.js} +1 -1
  111. package/core/built/admin/assets/{code-editor-view-CtkF82Fv.js → code-editor-view-K2wI-I5f.js} +1 -1
  112. package/core/built/admin/assets/color-picker-Ddw80xX6.js +3 -0
  113. package/core/built/admin/assets/color-picker-field-D9nUhvA7.js +1 -0
  114. package/core/built/admin/assets/combobox-w9j8PPQT.js +1 -0
  115. package/core/built/admin/assets/command-BfpHORBv.js +1 -0
  116. package/core/built/admin/assets/comments-BLmCmyCs.js +1 -0
  117. package/core/built/admin/assets/confirmation-context-CBM8G0Vj.js +1 -0
  118. package/core/built/admin/assets/{container-LiZf3XdY.js → container-BuQG1wuP.js} +1 -1
  119. package/core/built/admin/assets/{content-api-modal-BtpNI92-.js → content-api-modal-TXRz3U7S.js} +1 -1
  120. package/core/built/admin/assets/context-menu-_QMdd3kp.js +1 -0
  121. package/core/built/admin/assets/{copy-field-CglgRZyG.js → copy-field-6N01S07E.js} +1 -1
  122. package/core/built/admin/assets/create-ghost-browse-value-source-qIBymvvf.js +1 -0
  123. package/core/built/admin/assets/custom-field-type-option-BddFlJFa.js +1 -0
  124. package/core/built/admin/assets/custom-integration-modal-DmNquxUV.js +1 -0
  125. package/core/built/admin/assets/{data-list-CupF7bjM.js → data-list-CA2jYGPq.js} +1 -1
  126. package/core/built/admin/assets/{date-range-select-JPwM0yUj.js → date-range-select-uvz_DtPh.js} +1 -1
  127. package/core/built/admin/assets/design-and-theme-modal-BSmo12Op.js +2 -0
  128. package/core/built/admin/assets/{detail-page-D8lx2SdP.js → detail-page-Dnv-CdR1.js} +1 -1
  129. package/core/built/admin/assets/dirty-confirm-dialog-BZ1iytEd.js +1 -0
  130. package/core/built/admin/assets/{disabled-sources-indicator-BTJ2ClQu.js → disabled-sources-indicator-DMRrxsiJ.js} +1 -1
  131. package/core/built/admin/assets/{dist-DzcfoDJ3.js → dist-8YJUlf3B.js} +1 -1
  132. package/core/built/admin/assets/{dist-Cb5RSHSg.js → dist-B3keLvjj.js} +1 -1
  133. package/core/built/admin/assets/dist-Dcsslyo72.js +1 -0
  134. package/core/built/admin/assets/{dist-BT_Z-eCn.js → dist-Dgt2cr6a.js} +1 -1
  135. package/core/built/admin/assets/domain-BNYrt0aD.js +1 -0
  136. package/core/built/admin/assets/dropzone-D7nFdAe5.js +5 -0
  137. package/core/built/admin/assets/edit-profile-C5Asm4LA.js +1 -0
  138. package/core/built/admin/assets/editor-REokrzci.js +8 -0
  139. package/core/built/admin/assets/{embed-signup-form-modal-BFTPf04i.js → embed-signup-form-modal-Ds6mPEi5.js} +1 -1
  140. package/core/built/admin/assets/{empty-indicator-WB1WgT9h.js → empty-indicator-D9QdpuNX.js} +1 -1
  141. package/core/built/admin/assets/en-B1jX3WMs.js +1 -0
  142. package/core/built/admin/assets/explore-UY10Egsp.js +1 -0
  143. package/core/built/admin/assets/feature-image-placeholder-D1iF_8bc.js +1 -0
  144. package/core/built/admin/assets/feed-81C8mJWR.js +1 -0
  145. package/core/built/admin/assets/{field-LmNk7wZh.js → field-Dihp5p18.js} +1 -1
  146. package/core/built/admin/assets/filter-bar-Da1qxybu.js +1 -0
  147. package/core/built/admin/assets/filter-sources-BO9xUPj7.js +1 -0
  148. package/core/built/admin/assets/filters-CRUWecfY.js +1 -0
  149. package/core/built/admin/assets/filters-DirqNXjH.js +1 -0
  150. package/core/built/admin/assets/first-promoter-modal-CT6MxYZb.js +1 -0
  151. package/core/built/admin/assets/{ghost-c8807202a07c20030acb719ee0114815.css → ghost-8eabfc1ece81b03cf7b90780d31487e8.css} +1 -1
  152. package/core/built/admin/assets/{ghost-403cb39badad3df411fc0ba27d220047.js → ghost-c2848508292937415f20f5a830eea59e.js} +31 -28
  153. package/core/built/admin/assets/{ghost-dark-fbf1e384aaef3ae315e540f0eb7373a7.css → ghost-dark-a7bebe2c561f55369dcf29f4c820f7ff.css} +1 -1
  154. package/core/built/admin/assets/gift-link-modal-CQVAye17.js +1 -0
  155. package/core/built/admin/assets/{grid-CUciBfjf.js → grid-Dj29PY05.js} +1 -1
  156. package/core/built/admin/assets/growth-BWIu-6xj.js +3 -0
  157. package/core/built/admin/assets/growth-DU29oxeA.js +1 -0
  158. package/core/built/admin/assets/{heading-CRZZ2FUe.js → heading-Dh5SFVjL.js} +1 -1
  159. package/core/built/admin/assets/history-modal-CFd1Hvx6.js +1 -0
  160. package/core/built/admin/assets/html-field-CJBCLTvv.js +1 -0
  161. package/core/built/admin/assets/{images-C0XvUYMb.js → images-scfkWZiK.js} +1 -1
  162. package/core/built/admin/assets/{inbox-DZXDUt4s.js → inbox-Mcp4DXZN.js} +14 -14
  163. package/core/built/admin/assets/index-6MkPdCtr.js +4 -0
  164. package/core/built/admin/assets/index-Bn7QhcZu.css +2 -0
  165. package/core/built/admin/assets/index.es-CNnuNH0d.js +1 -0
  166. package/core/built/admin/assets/{inline-Cw-gigDW.js → inline-BWSs_VzR.js} +1 -1
  167. package/core/built/admin/assets/{input-group-BPAxETpQ.js → input-group-CMhe2DvY.js} +1 -1
  168. package/core/built/admin/assets/{input-surface-BdOe4KzO.js → input-surface-BsrIZeSF.js} +1 -1
  169. package/core/built/admin/assets/{integration-header-B4DyXV06.js → integration-header-Bm6IDb1A.js} +1 -1
  170. package/core/built/admin/assets/invite-user-modal-DfheMXs0.js +1 -0
  171. package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +14 -14
  172. package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +3 -3
  173. package/core/built/admin/assets/koenig-lexical/style.css +1 -1
  174. package/core/built/admin/assets/{koenig-lexical-60O_8aiO.js → koenig-lexical-DBSqAuiI.js} +3 -3
  175. package/core/built/admin/assets/koenig-loader-aFQNlJlD.js +2 -0
  176. package/core/built/admin/assets/kpi-card-DBRMfGOW.js +1 -0
  177. package/core/built/admin/assets/{kpi-card-fUHZlzBX.js → kpi-card-DFafD1qq.js} +1 -1
  178. package/core/built/admin/assets/kpi-helpers-Cv8i8hns.js +1 -0
  179. package/core/built/admin/assets/kpi-tabs-BJItvLYm.js +1 -0
  180. package/core/built/admin/assets/{label-VIG969IC.js → label-BnSCvffu.js} +1 -1
  181. package/core/built/admin/assets/label-picker-KVoo91sh.js +1 -0
  182. package/core/built/admin/assets/layout-Bjv2Ll-5.js +1 -0
  183. package/core/built/admin/assets/{link-helpers-Dtq9fxQg.js → link-helpers-MVDdnFCY.js} +1 -1
  184. package/core/built/admin/assets/{list-page-CdsnQR9N.js → list-page-BucXJ0hi.js} +1 -1
  185. package/core/built/admin/assets/member-custom-fields-DDQV6QeG.js +1 -0
  186. package/core/built/admin/assets/member-detail-CdJF6Agw.js +1 -0
  187. package/core/built/admin/assets/members-DjQbq9Z2.js +4 -0
  188. package/core/built/admin/assets/{modal-page-BMTzFHVO.js → modal-page-xCivTMvI.js} +1 -1
  189. package/core/built/admin/assets/moderation-AgCIEso4.js +1 -0
  190. package/core/built/admin/assets/{multi-select-combobox-CGohnsxJ.js → multi-select-combobox-BcITkUVr.js} +1 -1
  191. package/core/built/admin/assets/navigation-modal-BkT7b1M2.js +1 -0
  192. package/core/built/admin/assets/newsletter-BMMAuvgq.js +1 -0
  193. package/core/built/admin/assets/newsletter-detail-modal-0SCJ7Zpm.js +1 -0
  194. package/core/built/admin/assets/{newsletter-emails-D5ql1rud.js → newsletter-emails-DKzwafuh.js} +1 -1
  195. package/core/built/admin/assets/newsletters-BRBb_uQC.js +1 -0
  196. package/core/built/admin/assets/note-DyGHtS9a.js +1 -0
  197. package/core/built/admin/assets/notifications-ZgWniKna.js +1 -0
  198. package/core/built/admin/assets/nql-BLpCn7qX.js +21 -0
  199. package/core/built/admin/assets/offers-container-modal-B-E8TIWr.js +1 -0
  200. package/core/built/admin/assets/{onboarding-B4YhlZ0i.js → onboarding-CzIsre-d.js} +1 -1
  201. package/core/built/admin/assets/onboarding-qg8Akovm.js +1 -0
  202. package/core/built/admin/assets/{onboarding-route-Cu_ROWPn.js → onboarding-route-CaavZulg.js} +1 -1
  203. package/core/built/admin/assets/overview-BW8GLeYi.js +1 -0
  204. package/core/built/admin/assets/overview-BkXZNzaZ.js +1 -0
  205. package/core/built/admin/assets/{page-header-Cfds8pCg.js → page-header-De0VzKBi.js} +1 -1
  206. package/core/built/admin/assets/pagemenu-B5KKCpbA.js +1 -0
  207. package/core/built/admin/assets/pages-jgaFm69d.js +1 -0
  208. package/core/built/admin/assets/pages-route-CIUAQxtY.js +1 -0
  209. package/core/built/admin/assets/papaparse.min-cQwnxGCG.js +10 -0
  210. package/core/built/admin/assets/{pintura-modal-TDTrJ89x.js → pintura-modal-BZ2J9w3n.js} +1 -1
  211. package/core/built/admin/assets/portal-frame-B6Hr9wHc.js +1 -0
  212. package/core/built/admin/assets/portal-modal-D4ceei3t.js +1 -0
  213. package/core/built/admin/assets/post-analytics-header-BYCsT0GP.js +1 -0
  214. package/core/built/admin/assets/post-analytics-ot7f6pih.js +1 -0
  215. package/core/built/admin/assets/{post-analytics-provider-Cu3jNeFh.js → post-analytics-provider-Bo1gmYaP.js} +1 -1
  216. package/core/built/admin/assets/{post-share-modal-P1_M6o-H.js → post-share-modal-C-PaYZ_e.js} +1 -1
  217. package/core/built/admin/assets/posts-DuGazgTb.js +1 -0
  218. package/core/built/admin/assets/posts-list-screen-CBGGgjjj.js +2 -0
  219. package/core/built/admin/assets/posts-route-D6xmS7Vf.js +1 -0
  220. package/core/built/admin/assets/preferences-C5YJLp74.js +5 -0
  221. package/core/built/admin/assets/{preview-chrome-BOVO6_PE.js → preview-chrome-BljUBlOk.js} +1 -1
  222. package/core/built/admin/assets/{preview-modal-MlTjP8UU.js → preview-modal-BfeFqi5y.js} +1 -1
  223. package/core/built/admin/assets/profile-B8mx2yAu.js +1 -0
  224. package/core/built/admin/assets/{radio-group-CjtmsCPl.js → radio-group-DczlLKOn.js} +1 -1
  225. package/core/built/admin/assets/{router-provider-CJC58zTy.js → router-provider-B0gZyiGJ.js} +1 -1
  226. package/core/built/admin/assets/{schemas-CRsC53ls.js → schemas-DppqmpeJ.js} +2 -2
  227. package/core/built/admin/assets/select-cb0t_TAJ.js +1 -0
  228. package/core/built/admin/assets/settings-DZqxR0Da.js +1 -0
  229. package/core/built/admin/assets/settings-DvfTNdHQ.js +4 -0
  230. package/core/built/admin/assets/{settings-breadcrumbs-sLDNedBW.js → settings-breadcrumbs-DLzbRRSt.js} +1 -1
  231. package/core/built/admin/assets/{shade-app-F7WxOyfk-nufqw1hd.js → shade-app-CcS3f8MZ-vwURazk8.js} +2 -2
  232. package/core/built/admin/assets/share-modal-D2-Bz1_I.js +1 -0
  233. package/core/built/admin/assets/{skeleton-D7hwjdry.js → skeleton-Ce9GgUpf.js} +1 -1
  234. package/core/built/admin/assets/slack-modal-DYDTUria.js +1 -0
  235. package/core/built/admin/assets/sort-button-VVeQjjbu.js +1 -0
  236. package/core/built/admin/assets/{source-icon-BPsD5ees.js → source-icon-Ck5_5Kgq.js} +1 -1
  237. package/core/built/admin/assets/{stack-CIfOAAVf.js → stack-B2eszIiq.js} +1 -1
  238. package/core/built/admin/assets/stats-Rjmk5owg.js +1 -0
  239. package/core/built/admin/assets/stats-view-BGGmkmgv.js +1 -0
  240. package/core/built/admin/assets/{step-1-CMta6YFO.js → step-1-CsaBjeN4.js} +1 -1
  241. package/core/built/admin/assets/{step-2-BG04nh5q.js → step-2-D2vnxOOM.js} +1 -1
  242. package/core/built/admin/assets/{step-3-ZnMaVIPj.js → step-3-wBoLdGEb.js} +2 -2
  243. package/core/built/admin/assets/{stripe-button-DDoUKN5a.js → stripe-button-CDgLz0S0.js} +1 -1
  244. package/core/built/admin/assets/stripe-connect-modal-CSjMJetP.js +1 -0
  245. package/core/built/admin/assets/{switch-C9djUIMO.js → switch-CI4gLWqb.js} +1 -1
  246. package/core/built/admin/assets/{table-CrqQtkR2.js → table-Do6iQ83Q.js} +1 -1
  247. package/core/built/admin/assets/{tabs-CGisSbWq.js → tabs-D2yWLMp_.js} +1 -1
  248. package/core/built/admin/assets/tag-detail-BhXlOsCa.js +2 -0
  249. package/core/built/admin/assets/tags-ldukRApe.js +1 -0
  250. package/core/built/admin/assets/testimonials-modal-CtnZBJKl.js +1 -0
  251. package/core/built/admin/assets/{text-DU9Hv33_.js → text-BQDSDsKs.js} +1 -1
  252. package/core/built/admin/assets/{textarea-d9qEkMOP.js → textarea-DJ1Q5V39.js} +1 -1
  253. package/core/built/admin/assets/tier-detail-modal-BOs8e_G8.js +1 -0
  254. package/core/built/admin/assets/{toggle-group-CtKZURJd.js → toggle-group-ByUJsxwD.js} +1 -1
  255. package/core/built/admin/assets/{topic-filter-D8JT8Tq1.js → topic-filter-BgC3g5_v.js} +1 -1
  256. package/core/built/admin/assets/{transistor-modal-6PUf0idx.js → transistor-modal-Drr0SNfo.js} +1 -1
  257. package/core/built/admin/assets/trend-badge-6ye93YAW.js +1 -0
  258. package/core/built/admin/assets/{unsplash-modal-BPuDBPja.js → unsplash-modal-p6AoQoWp.js} +1 -1
  259. package/core/built/admin/assets/{use-analytics-data--opuzwcz.js → use-analytics-data-CWCMAESo.js} +1 -1
  260. package/core/built/admin/assets/use-check-theme-limit-error-B8bjF-gO.css +1 -0
  261. package/core/built/admin/assets/use-check-theme-limit-error-Cw3WQHy8.js +2 -0
  262. package/core/built/admin/assets/use-filter-params-BIni9taJ.js +1 -0
  263. package/core/built/admin/assets/use-growth-stats-DCVG3s9w.js +1 -0
  264. package/core/built/admin/assets/{use-limiter-TDSNiHPB.js → use-limiter-D2WRRx0H.js} +1 -1
  265. package/core/built/admin/assets/{use-navigate-with-base-path-CK989MlC.js → use-navigate-with-base-path-BHPA228f.js} +1 -1
  266. package/core/built/admin/assets/{use-pintura-config-CnCGrDFk.js → use-pintura-config-h-J0Lvta.js} +1 -1
  267. package/core/built/admin/assets/{use-pintura-editor-ntphvtUd.js → use-pintura-editor-BfN1UwzH.js} +1 -1
  268. package/core/built/admin/assets/use-post-referrers-Czg47m8s.js +1 -0
  269. package/core/built/admin/assets/use-reply-chain-data-ns0caK8k.js +1 -0
  270. package/core/built/admin/assets/{use-router-history-entry-BwfQS2mq.js → use-router-history-entry-uldn7zJO.js} +1 -1
  271. package/core/built/admin/assets/{use-setting-group-DQxV42-O.js → use-setting-group-DpcuCUDg.js} +1 -1
  272. package/core/built/admin/assets/use-settings-navigation-CZjGrhsp.js +1 -0
  273. package/core/built/admin/assets/{use-simple-pagination-B2TdNX67.js → use-simple-pagination-DzJWobPR.js} +1 -1
  274. package/core/built/admin/assets/{use-staff-users-QrR9voeC.js → use-staff-users-Csipb-O0.js} +1 -1
  275. package/core/built/admin/assets/use-tinybird-query-CSnGXzZh.js +1 -0
  276. package/core/built/admin/assets/use-tinybird-token-DTOKRR7e.js +1 -0
  277. package/core/built/admin/assets/{use-unsaved-changes-guard-DpYJcj1d.js → use-unsaved-changes-guard-CBzs-KPi.js} +1 -1
  278. package/core/built/admin/assets/{use-url-input-WnIqckzS.js → use-url-input-DFr8lCbS.js} +1 -1
  279. package/core/built/admin/assets/user-detail-modal-B_iUClI6.js +1 -0
  280. package/core/built/admin/assets/users-Cg-OeGzC.js +1 -0
  281. package/core/built/admin/assets/{virtual-list-D3MfPNOh.js → virtual-list-BW-padMe.js} +1 -1
  282. package/core/built/admin/assets/web-C1v33ehA.js +2 -0
  283. package/core/built/admin/assets/web-C4BKzn2T.js +1 -0
  284. package/core/built/admin/assets/{zapier-modal-BO6PS_Vd.js → zapier-modal-BBFfI6Ml.js} +1 -1
  285. package/core/built/admin/index.html +24 -30
  286. package/core/frontend/apps/private-blogging/lib/views/private.hbs +44 -43
  287. package/core/frontend/helpers/cancel_link.js +2 -2
  288. package/core/frontend/helpers/pagination.js +2 -2
  289. package/core/frontend/helpers/social_accounts.js +2 -2
  290. package/core/frontend/public/ghost.css +1 -1
  291. package/core/frontend/public/ghost.min.css +1 -1
  292. package/core/frontend/services/rendering/renderer.js +15 -0
  293. package/core/frontend/services/sitemap/user-map-generator.js +9 -2
  294. package/core/server/adapters/storage/LocalStorageBase.js +8 -5
  295. package/core/server/api/endpoints/db.js +19 -5
  296. package/core/server/api/endpoints/index.js +6 -2
  297. package/core/server/api/endpoints/mail.js +1 -1
  298. package/core/server/api/endpoints/member-metafields.js +89 -0
  299. package/core/server/api/endpoints/members.js +4 -4
  300. package/core/server/api/endpoints/posts.js +4 -3
  301. package/core/server/api/endpoints/tiers-checkout-config.js +59 -0
  302. package/core/server/api/endpoints/utils/serializers/input/members.js +4 -7
  303. package/core/server/api/endpoints/utils/serializers/output/config.js +1 -0
  304. package/core/server/api/endpoints/utils/serializers/output/index.js +6 -2
  305. package/core/server/api/endpoints/utils/serializers/output/{member-custom-fields.js → member-metafields.js} +2 -4
  306. package/core/server/api/endpoints/utils/serializers/output/members.js +2 -4
  307. package/core/server/api/endpoints/utils/serializers/output/tiers-checkout-config.js +12 -0
  308. package/core/server/api/endpoints/utils/validators/input/invitations.js +0 -5
  309. package/core/server/api/endpoints/utils/validators/input/pages.js +1 -1
  310. package/core/server/api/endpoints/utils/validators/input/posts.js +1 -1
  311. package/core/server/data/exporter/table-lists.js +3 -0
  312. package/core/server/data/importer/content-files.js +57 -0
  313. package/core/server/data/importer/handlers/image.js +2 -2
  314. package/core/server/data/importer/import-archive.js +131 -0
  315. package/core/server/data/importer/import-manager.js +18 -180
  316. package/core/server/data/importer/importers/content-file-importer.js +66 -4
  317. package/core/server/data/importer/importers/data/data-importer.js +3 -3
  318. package/core/server/data/migrations/utils/migrations.js +1 -1
  319. package/core/server/data/migrations/versions/6.61/2026-08-19-14-30-20-add-written-by-to-members-custom-field-values.js +42 -0
  320. package/core/server/data/migrations/versions/6.61/2026-08-19-14-38-53-add-members-custom-field-bindings-table.js +26 -0
  321. package/core/server/data/migrations/versions/6.61/2026-08-19-14-48-06-add-tier-checkout-field-tables.js +35 -0
  322. package/core/server/data/schema/schema.js +90 -0
  323. package/core/server/data/seeders/importers/automation-action-revisions-importer.js +3 -3
  324. package/core/server/data/seeders/importers/automation-actions-importer.js +3 -3
  325. package/core/server/data/seeders/importers/automation-run-steps-importer.js +3 -3
  326. package/core/server/data/seeders/importers/automation-runs-importer.js +5 -5
  327. package/core/server/data/seeders/importers/automations-importer.js +3 -3
  328. package/core/server/data/seeders/importers/comment-reports-importer.js +1 -1
  329. package/core/server/data/seeders/importers/comments-importer.js +1 -1
  330. package/core/server/data/seeders/importers/email-batches-importer.js +1 -1
  331. package/core/server/data/seeders/importers/email-recipients-importer.js +1 -1
  332. package/core/server/data/seeders/importers/emails-importer.js +1 -1
  333. package/core/server/data/seeders/importers/labels-importer.js +1 -1
  334. package/core/server/data/seeders/importers/members-click-events-importer.js +1 -1
  335. package/core/server/data/seeders/importers/members-created-events-importer.js +1 -1
  336. package/core/server/data/seeders/importers/members-feedback-importer.js +1 -1
  337. package/core/server/data/seeders/importers/members-importer.js +1 -1
  338. package/core/server/data/seeders/importers/members-login-events-importer.js +1 -1
  339. package/core/server/data/seeders/importers/members-products-importer.js +1 -1
  340. package/core/server/data/seeders/importers/members-status-events-importer.js +1 -1
  341. package/core/server/data/seeders/importers/members-stripe-customers-importer.js +1 -1
  342. package/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js +1 -1
  343. package/core/server/data/seeders/importers/members-subscribe-events-importer.js +1 -1
  344. package/core/server/data/seeders/importers/members-subscription-created-events-importer.js +1 -1
  345. package/core/server/data/seeders/importers/offer-redemptions-importer.js +1 -1
  346. package/core/server/data/seeders/importers/offers-importer.js +1 -1
  347. package/core/server/data/seeders/importers/posts-importer.js +1 -1
  348. package/core/server/data/seeders/importers/table-importer.js +2 -2
  349. package/core/server/data/seeders/importers/tags-importer.js +1 -1
  350. package/core/server/data/seeders/importers/users-importer.js +1 -1
  351. package/core/server/data/seeders/importers/web-mentions-importer.js +1 -1
  352. package/core/server/data/seeders/utils/random.js +3 -3
  353. package/core/server/ghost-server.js +3 -2
  354. package/core/server/lib/db-types/boolean.js +18 -0
  355. package/core/server/lib/image/image-size.js +24 -0
  356. package/core/server/lib/package-json/parse.js +2 -2
  357. package/core/server/lib/promise-pool.js +31 -0
  358. package/core/server/models/member.js +6 -17
  359. package/core/server/models/post.js +2 -2
  360. package/core/server/models/relations/authors.js +2 -16
  361. package/core/server/models/user.js +9 -2
  362. package/core/server/services/auth/passwordreset.js +13 -0
  363. package/core/server/services/automations/database-automations-repository.js +26 -26
  364. package/core/server/services/automations/poll.js +1 -0
  365. package/core/server/services/comments/comments-controller.js +30 -9
  366. package/core/server/services/comments/comments-service.js +55 -5
  367. package/core/server/services/content-import/csv/formula.js +12 -0
  368. package/core/server/services/content-import/csv/index.js +6 -1
  369. package/core/server/services/content-import/csv/parse.js +27 -6
  370. package/core/server/services/content-import/csv/serialize.js +13 -0
  371. package/core/server/services/content-import/import/assets.js +74 -0
  372. package/core/server/services/content-import/import/completion-email.js +164 -0
  373. package/core/server/services/content-import/import/errors-file.js +36 -0
  374. package/core/server/services/content-import/import/importer.js +204 -54
  375. package/core/server/services/content-import/import/local-media-url.js +63 -0
  376. package/core/server/services/content-import/import/media.js +254 -0
  377. package/core/server/services/content-import/import/post-data.js +1 -1
  378. package/core/server/services/content-import/import/post-link.js +11 -0
  379. package/core/server/services/content-import/import/post-repository.js +100 -0
  380. package/core/server/services/content-import/import/reader.js +9 -2
  381. package/core/server/services/content-import/import/relations.js +149 -0
  382. package/core/server/services/content-import/import/report.js +34 -0
  383. package/core/server/services/content-import/import/row.js +11 -2
  384. package/core/server/services/content-import/import/schema.js +30 -0
  385. package/core/server/services/content-import/import/source.js +125 -0
  386. package/core/server/services/content-import/import/staged-file.js +29 -0
  387. package/core/server/services/content-import/import/store.js +25 -2
  388. package/core/server/services/content-import/index.js +58 -34
  389. package/core/server/services/content-import/jobs/content-csv-import-job.js +20 -0
  390. package/core/server/services/custom-redirects/redirect-config-parser.js +2 -2
  391. package/core/server/services/custom-redirects/redirects-service.js +1 -1
  392. package/core/server/services/custom-redirects/validation.js +1 -1
  393. package/core/server/services/email-address/email-address-parser.js +30 -38
  394. package/core/server/services/email-address/email-address-service.js +37 -4
  395. package/core/server/services/email-analytics/email-analytics-service.js +8 -1
  396. package/core/server/services/email-analytics/index.js +2 -7
  397. package/core/server/services/email-analytics/lib/queries.js +7 -1
  398. package/core/server/services/email-service/batch-sending-service.js +0 -4
  399. package/core/server/services/email-service/email-renderer.js +14 -4
  400. package/core/server/services/email-service/email-service-wrapper.js +0 -9
  401. package/core/server/services/email-service/mailgun-email-provider.js +20 -9
  402. package/core/server/services/gift-links/schema.js +3 -3
  403. package/core/server/services/gifts/CONTEXT.md +1 -1
  404. package/core/server/services/gifts/constants.js +1 -1
  405. package/core/server/services/gifts/email-templates/gift-delivery.hbs +3 -3
  406. package/core/server/services/gifts/gift-bookshelf-repository.js +2 -2
  407. package/core/server/services/gifts/gift-delivery-bookshelf-repository.js +18 -9
  408. package/core/server/services/gifts/gift-delivery-schema.js +5 -5
  409. package/core/server/services/gifts/gift-delivery-service.js +4 -0
  410. package/core/server/services/gifts/gift-email-service.js +0 -1
  411. package/core/server/services/gifts/gift-schema.js +10 -10
  412. package/core/server/services/gifts/gift-service.js +4 -2
  413. package/core/server/services/gifts/index.js +3 -3
  414. package/core/server/services/gifts/jobs/index.js +4 -4
  415. package/core/server/services/indexnow-ping/indexnow-ping-service.js +2 -2
  416. package/core/server/services/invitations/accept.js +4 -2
  417. package/core/server/services/jobs/job-service.js +0 -9
  418. package/core/server/services/jobs-service/register-job-handlers.js +25 -15
  419. package/core/server/services/lib/mailgun-client.js +44 -8
  420. package/core/server/services/mail/ghost-mailer.js +4 -4
  421. package/core/server/services/media-inliner/external-media-inliner-job.js +12 -0
  422. package/core/server/services/media-inliner/external-media-inliner.js +103 -29
  423. package/core/server/services/media-inliner/service.js +13 -41
  424. package/core/server/services/media-inliner/types.js +2 -0
  425. package/core/server/services/member-welcome-emails/service.js +7 -7
  426. package/core/server/services/members/api.js +1 -0
  427. package/core/server/services/members/import-export/csv/parse.js +0 -7
  428. package/core/server/services/members/import-export/export/exporter.js +4 -6
  429. package/core/server/services/members/import-export/import/completion-email.js +2 -5
  430. package/core/server/services/members/import-export/import/importer.js +21 -5
  431. package/core/server/services/members/import-export/import/row.js +0 -3
  432. package/core/server/services/members/import-export/import/stripe-utils.js +6 -1
  433. package/core/server/services/members/import-export/index.js +10 -12
  434. package/core/server/services/members/jobs/clean-expired-comped-job.js +7 -0
  435. package/core/server/services/members/jobs/clean-expired-comped-task.js +145 -0
  436. package/core/server/services/members/jobs/index.js +48 -24
  437. package/core/server/services/members/members-api/controllers/member-controller.js +11 -0
  438. package/core/server/services/members/members-api/controllers/router-controller.js +3 -6
  439. package/core/server/services/members/members-api/members-api.js +9 -6
  440. package/core/server/services/members/members-api/repositories/event-repository.js +0 -4
  441. package/core/server/services/members/members-api/services/member-bread-service.js +53 -63
  442. package/core/server/services/members/members-api/services/payments-service.js +47 -1
  443. package/core/server/services/members/service.js +1 -5
  444. package/core/server/services/members-custom-fields/actions.js +27 -1
  445. package/core/server/services/members-custom-fields/bindings-service.js +120 -0
  446. package/core/server/services/members-custom-fields/codec.js +3 -4
  447. package/core/server/services/members-custom-fields/definitions-service.js +165 -22
  448. package/core/server/services/members-custom-fields/filter.js +75 -93
  449. package/core/server/services/members-custom-fields/index.js +11 -4
  450. package/core/server/services/members-custom-fields/key.js +2 -1
  451. package/core/server/services/members-custom-fields/models.js +1 -1
  452. package/core/server/services/members-custom-fields/queries.js +5 -0
  453. package/core/server/services/members-custom-fields/schema.js +37 -6
  454. package/core/server/services/members-custom-fields/serializers.js +3 -5
  455. package/core/server/services/members-custom-fields/values-service.js +65 -31
  456. package/core/server/services/mentions/mention-controller.js +23 -21
  457. package/core/server/services/mentions/process-webmention-job.js +16 -0
  458. package/core/server/services/mentions/service.js +8 -4
  459. package/core/server/services/public-config/config.js +7 -0
  460. package/core/server/services/route-settings/validation-errors.js +1 -1
  461. package/core/server/services/route-settings/yaml-parser.js +1 -1
  462. package/core/server/services/settings/settings-service.js +1 -8
  463. package/core/server/services/settings-helpers/settings-helpers.js +4 -6
  464. package/core/server/services/slack-ping/slack-ping-service.js +1 -1
  465. package/core/server/services/staff/staff-service-emails.js +2 -2
  466. package/core/server/services/stripe/config.js +14 -8
  467. package/core/server/services/stripe/service.js +10 -1
  468. package/core/server/services/stripe/services/checkout/completed-session.js +68 -0
  469. package/core/server/services/stripe/services/checkout/session-options.js +100 -0
  470. package/core/server/services/stripe/services/webhook/checkout-session-event-service.js +71 -1
  471. package/core/server/services/stripe/stripe-api.js +31 -0
  472. package/core/server/services/stripe/stripe-service.js +26 -9
  473. package/core/server/services/stripe/webhook-controller.js +10 -0
  474. package/core/server/services/tier-checkout-config/codec.js +99 -0
  475. package/core/server/services/tier-checkout-config/index.js +26 -0
  476. package/core/server/services/tier-checkout-config/models.js +63 -0
  477. package/core/server/services/tier-checkout-config/queries.js +80 -0
  478. package/core/server/services/tier-checkout-config/schema.js +33 -0
  479. package/core/server/services/tier-checkout-config/serializers.js +128 -0
  480. package/core/server/services/tier-checkout-config/service.js +304 -0
  481. package/core/server/services/tiers/service.js +21 -0
  482. package/core/server/services/update-check/index.js +13 -13
  483. package/core/server/services/update-check/jobs/update-check-job.js +7 -0
  484. package/core/server/services/update-check/update-check-service.js +2 -2
  485. package/core/server/web/admin/controller.js +1 -1
  486. package/core/server/web/api/endpoints/admin/routes.js +34 -20
  487. package/core/server/web/api/middleware/upload.js +2 -2
  488. package/core/server/web/parent/app.js +5 -0
  489. package/core/server/web/parent/middleware/filter-query-parameters.js +94 -0
  490. package/core/server/web/parent/middleware/index.js +1 -0
  491. package/core/server/web/query-parameter-policy/index.js +9 -0
  492. package/core/server/web/query-parameter-policy/policy.json +58 -0
  493. package/core/server/web/query-parameter-policy/schema.js +38 -0
  494. package/core/shared/config/defaults.json +3 -0
  495. package/core/shared/config/env/config.testing-mysql.json +4 -1
  496. package/core/shared/config/env/config.testing.json +3 -0
  497. package/core/shared/config/overrides.json +4 -2
  498. package/core/shared/labs.js +9 -15
  499. package/package.json +25 -25
  500. package/pnpm-lock.yaml +741 -108
  501. package/pnpm-workspace.yaml +12 -9
  502. package/tsconfig.json +2 -3
  503. package/components/tryghost-kg-default-nodes-2.2.0.tgz +0 -0
  504. package/core/built/admin/assets/Combination-gnJO3vIw.js +0 -41
  505. package/core/built/admin/assets/account-migration-8qTEI1i1.js +0 -1
  506. package/core/built/admin/assets/activitypub/inbox-DQ5CwLma.js +0 -1284
  507. package/core/built/admin/assets/activitypub/label-B72sfvEU.js +0 -16
  508. package/core/built/admin/assets/activitypub/layout-CXajhRsL.js +0 -1
  509. package/core/built/admin/assets/activitypub/settings-71gCm3SO.js +0 -315
  510. package/core/built/admin/assets/add-integration-modal--YpTq3c0.js +0 -1
  511. package/core/built/admin/assets/add-newsletter-modal-C8Ix2hol.js +0 -1
  512. package/core/built/admin/assets/add-recommendation-modal-CScuNFz4.js +0 -1
  513. package/core/built/admin/assets/alert-dialog-wEbVxANM.js +0 -1
  514. package/core/built/admin/assets/analytics-Cnji45H5.js +0 -1
  515. package/core/built/admin/assets/app-utils-D2Wp7ZSS.js +0 -1
  516. package/core/built/admin/assets/audience-DTLMXAFH.js +0 -1
  517. package/core/built/admin/assets/automations-BWpRCZ_f.js +0 -1
  518. package/core/built/admin/assets/bluesky-sharing-DHOpQxff.js +0 -1
  519. package/core/built/admin/assets/chart-helpers-B3OqQ6Ez.js +0 -1
  520. package/core/built/admin/assets/color-picker-Bmo1r9Fc.js +0 -3
  521. package/core/built/admin/assets/color-picker-field-DywowPhF.js +0 -1
  522. package/core/built/admin/assets/combobox-C4QCh6Yw.js +0 -1
  523. package/core/built/admin/assets/command-DcLbSifC.js +0 -1
  524. package/core/built/admin/assets/comments-Bxy_3WyE.js +0 -1
  525. package/core/built/admin/assets/confirmation-context-CLFHhyyH.js +0 -1
  526. package/core/built/admin/assets/custom-field-type-option-D0PXoSnP.js +0 -10
  527. package/core/built/admin/assets/custom-integration-modal-DCIHKN33.js +0 -1
  528. package/core/built/admin/assets/design-and-theme-modal-CZ-PkW7o.js +0 -23
  529. package/core/built/admin/assets/dialog-Db7c164G.js +0 -1
  530. package/core/built/admin/assets/dirty-confirm-dialog-CmARpZQS.js +0 -1
  531. package/core/built/admin/assets/dist-QLZuGq7o2.js +0 -1
  532. package/core/built/admin/assets/domain-D0SAtc-T.js +0 -1
  533. package/core/built/admin/assets/dropzone-CaPOeDRZ.js +0 -5
  534. package/core/built/admin/assets/edit-profile-By7v5XW5.js +0 -1
  535. package/core/built/admin/assets/editor-COXn4Atu.js +0 -8
  536. package/core/built/admin/assets/explore-BsNYrubV.js +0 -1
  537. package/core/built/admin/assets/feed-8RR1O1bK.js +0 -1
  538. package/core/built/admin/assets/filter-sources-4C0kF1NU.js +0 -1
  539. package/core/built/admin/assets/filters-CV5jCb9n.js +0 -1
  540. package/core/built/admin/assets/filters-Dmr0PoqU.js +0 -1
  541. package/core/built/admin/assets/first-promoter-modal-OCzSaL3B.js +0 -1
  542. package/core/built/admin/assets/gift-link-modal-0mzjn5oF.js +0 -1
  543. package/core/built/admin/assets/growth-55vWlGT_.js +0 -1
  544. package/core/built/admin/assets/growth-DA5AluYw.js +0 -3
  545. package/core/built/admin/assets/history-modal-G1s5hHz7.js +0 -1
  546. package/core/built/admin/assets/html-field-BegxsWpw.js +0 -1
  547. package/core/built/admin/assets/index-CDP9tIOk.js +0 -4
  548. package/core/built/admin/assets/index-Dqf2x-ry.css +0 -1
  549. package/core/built/admin/assets/index.es-BMUCj9TR.js +0 -1
  550. package/core/built/admin/assets/input-UHrKuvBT.js +0 -1
  551. package/core/built/admin/assets/invite-user-modal-BrAkxEO3.js +0 -1
  552. package/core/built/admin/assets/koenig-loader-DwVY_V-H.js +0 -1
  553. package/core/built/admin/assets/kpi-card-LERqWBoY.js +0 -1
  554. package/core/built/admin/assets/kpi-helpers-DB3ouhYF.js +0 -1
  555. package/core/built/admin/assets/kpi-tabs-BGvtMD8S.js +0 -1
  556. package/core/built/admin/assets/label-picker-BBWykUeA.js +0 -1
  557. package/core/built/admin/assets/layout-Di5K7doM.js +0 -1
  558. package/core/built/admin/assets/loading-indicator-SFTqyYVE.js +0 -1
  559. package/core/built/admin/assets/member-custom-fields-gOv6Hoh3.js +0 -1
  560. package/core/built/admin/assets/member-detail-D7mZDDp3.js +0 -1
  561. package/core/built/admin/assets/member-route-0Aa52Ntz.js +0 -1
  562. package/core/built/admin/assets/members-DvZG9t69.js +0 -2
  563. package/core/built/admin/assets/moderation-DzzPLDyl.js +0 -1
  564. package/core/built/admin/assets/navigation-modal-CI8Bx5vn.js +0 -1
  565. package/core/built/admin/assets/newsletter-Bg3cq5U-.js +0 -1
  566. package/core/built/admin/assets/newsletter-detail-modal-DQU3r4g2.js +0 -1
  567. package/core/built/admin/assets/newsletters-DMDfZbMS.js +0 -1
  568. package/core/built/admin/assets/note-i8k6pjaw.js +0 -1
  569. package/core/built/admin/assets/notifications-psA_2Ph4.js +0 -1
  570. package/core/built/admin/assets/offers-container-modal-BWfjSdyg.js +0 -1
  571. package/core/built/admin/assets/onboarding-DGQuV7Ew.js +0 -1
  572. package/core/built/admin/assets/overview-C-6xOLaf.js +0 -1
  573. package/core/built/admin/assets/overview-DaLhpRrC.js +0 -1
  574. package/core/built/admin/assets/pages-B6vr9F_D.js +0 -1
  575. package/core/built/admin/assets/popover-CFgqFDvC.js +0 -1
  576. package/core/built/admin/assets/portal-frame-DjBF-uy2.js +0 -1
  577. package/core/built/admin/assets/portal-modal-Cf0pBAk8.js +0 -1
  578. package/core/built/admin/assets/post-analytics-Buz1COoY.js +0 -1
  579. package/core/built/admin/assets/post-analytics-header-B-P0eFnT.js +0 -1
  580. package/core/built/admin/assets/posts-KY3aUhVV.js +0 -1
  581. package/core/built/admin/assets/preferences-Cq1aOiLy.js +0 -5
  582. package/core/built/admin/assets/profile-D6dHYf2o.js +0 -1
  583. package/core/built/admin/assets/select-D_RQaXgt.js +0 -1
  584. package/core/built/admin/assets/settings-B5hJKZ5C.js +0 -1
  585. package/core/built/admin/assets/settings-DIo_F-MF.js +0 -4
  586. package/core/built/admin/assets/share-modal-CLBfj377.js +0 -1
  587. package/core/built/admin/assets/shim-ClF_m5ux.js +0 -1
  588. package/core/built/admin/assets/slack-modal-Bt9I_tEo.js +0 -1
  589. package/core/built/admin/assets/sort-button-DMBXF7tP.js +0 -1
  590. package/core/built/admin/assets/stats-B_YkF7bp.js +0 -1
  591. package/core/built/admin/assets/stats-view-BOCp9RG8.js +0 -1
  592. package/core/built/admin/assets/stripe-connect-modal-BeSukI8q.js +0 -1
  593. package/core/built/admin/assets/tag-detail-2a3BfzTW.js +0 -2
  594. package/core/built/admin/assets/tags-Dp2_8UzL.js +0 -1
  595. package/core/built/admin/assets/testimonials-modal-C9nrypNo.js +0 -1
  596. package/core/built/admin/assets/tier-detail-modal-CxRwgTPR.js +0 -1
  597. package/core/built/admin/assets/use-check-theme-limit-error-C9-QhGdV.js +0 -1
  598. package/core/built/admin/assets/use-filter-params-CSpAvgD2.js +0 -1
  599. package/core/built/admin/assets/use-growth-stats-BOmoPDHJ.js +0 -1
  600. package/core/built/admin/assets/use-post-referrers-CbXLFIex.js +0 -1
  601. package/core/built/admin/assets/use-reply-chain-data-JYFKSO83.js +0 -1
  602. package/core/built/admin/assets/use-settings-navigation-BBzro2-V.js +0 -1
  603. package/core/built/admin/assets/use-tinybird-query-D2Aeoty5.js +0 -39
  604. package/core/built/admin/assets/use-tinybird-token-DBuwMmln.js +0 -1
  605. package/core/built/admin/assets/user-detail-modal-59mBJqxN.js +0 -1
  606. package/core/built/admin/assets/users-5msE1WMs.js +0 -1
  607. package/core/built/admin/assets/web-DUuX7nE2.js +0 -2
  608. package/core/built/admin/assets/web-N8ucs2aG.js +0 -1
  609. package/core/server/api/endpoints/member-custom-fields.js +0 -100
  610. package/core/server/services/jobs/worker-model-event-bridge.js +0 -149
  611. package/core/server/services/members/jobs/clean-expired-comped.js +0 -132
  612. package/core/server/services/update-check/run-update-check.js +0 -63
  613. /package/core/server/lib/{db-date.js → db-types/date.js} +0 -0
@@ -1 +1 @@
1
- a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}body{line-height:1}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{display:block;max-width:100%;height:auto}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{margin:.67em 0;font-size:2em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#fdffb6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}kbd{padding:3px 5px;font-family:var(--font-mono);font-size:1.5rem;background:#f6f8fa;border:1px solid rgba(124,139,154,.25);border-radius:6px;box-shadow:inset 0 -1px 0 rgba(124,139,154,.25)}@media (max-width:600px){kbd{font-size:1.3rem}}button,input,optgroup,select,textarea{margin:0;color:inherit;font:inherit}button{overflow:visible;border:none}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{padding:0;border:0}textarea{overflow:auto}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{color:var(--color-darkgrey);font-family:var(--gh-font-body,var(--font-sans));font-size:1.6rem;line-height:1.6em;font-weight:400;font-style:normal;letter-spacing:0;text-rendering:optimizeLegibility;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}::-moz-selection{text-shadow:none;background:#daf2fd}::selection{text-shadow:none;background:#daf2fd}hr{position:relative;display:block;width:100%;margin:2.5em 0 3.5em;padding:0;height:1px;border:0;border-top:1px solid #f0f0f0}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{margin:0;padding:0;border:0}textarea{resize:vertical}::not(.gh-content) blockquote,::not(.gh-content) dl,::not(.gh-content) ol,::not(.gh-content) p,::not(.gh-content) ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0}ol,ul{max-width:100%}li{padding-left:.3em;line-height:1.6em}li+li{margin-top:.5em}dt{float:left;margin:0 20px 0 0;width:120px;color:#daf2fd;font-weight:500;text-align:right}dd{margin:0 0 5px;text-align:left}sub,sup{line-height:1}blockquote{margin:1.5em 0;padding:0 1.6em;border-left:#daf2fd}blockquote small{display:inline-block;margin:.8em 0 .8em 1.5em;font-size:.9em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#15171a;text-decoration:none}h1,h2,h3,h4,h5,h6{margin-top:0;line-height:1.15;font-family:var(--gh-font-heading,var(--font-sans));font-weight:600;text-rendering:optimizeLegibility;letter-spacing:-.01em}h1{margin:0 0 .5em;font-size:4.8rem;font-weight:700;letter-spacing:-.015em}@media (max-width:600px){h1{font-size:2.8rem}}h2{margin:1.5em 0 .5em;font-size:2.8rem;font-weight:700}@media (max-width:600px){h2{font-size:2.3rem}}h3{margin:1.5em 0 .5em;font-size:2.4rem;font-weight:600}@media (max-width:600px){h3{font-size:1.7rem}}h4{margin:1.5em 0 .5em;font-size:2rem}@media (max-width:600px){h4{font-size:1.7rem}}h5{font-size:2rem}h5,h6{margin:1.5em 0 .5em}h6{font-size:1.8rem}:root{--color-green:#a4d037;--color-yellow:#fecd35;--color-red:#f05230;--color-darkgrey:#15171a;--color-midgrey:#738a94;--color-lightgrey:#f1f1f1;--color-secondary-text:#979797;--color-border:#e1e1e1;--color-wash:#e5eff5;--color-darkmode:#151719;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-serif:Georgia, Times, serif;--font-mono:Menlo, Courier, monospace}.viewport{position:relative;display:flex;flex-direction:column;min-height:100vh}.site-content{flex-grow:1}.outer{position:relative;padding:0 max(4vmin,20px)}.inner{margin:0 auto;max-width:1200px;width:100%}.site-header{position:relative;color:#fff;background:var(--ghost-accent-color)}.site-header-cover{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.site-header-content{position:relative;z-index:100;display:flex;align-items:center;padding-top:calc(19vmin + 44px);padding-bottom:19vmin;text-align:center;color:var(--color-darkgrey)}.has-cover .site-header-content{min-height:560px;background-color:var(--ghost-accent-color);color:#fff}.site-header-content.left-aligned{padding-bottom:0;text-align:left}.has-cover .site-header-content.left-aligned{align-items:flex-end;padding-bottom:max(4vmin,32px)}.site-header-content.no-content{padding-top:0;padding-bottom:2vmin}.site-header-inner{position:relative}.site-header-content.left-aligned .site-header-inner{align-items:flex-start}.site-logo{flex-shrink:0;margin:0 auto;max-height:120px}.site-header-content.left-aligned .site-logo{margin-right:auto;margin-left:0;max-height:96px}.site-title{z-index:10;margin:0;padding:0;font-size:5rem;font-weight:800}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .site-title{font-family:var(--gh-font-heading,var(--font-serif))}.has-cover .site-title{font-size:6rem}.site-header-content.left-aligned .site-title{font-size:4.4rem}.has-cover .site-header-content.left-aligned .site-title{font-size:4.6rem}.site-description{display:inline-block;z-index:10;max-width:960px;font-size:6rem;font-weight:700;line-height:1.1}.site-description:first-child{font-family:var(--gh-font-heading,var(--font-sans))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .site-description:first-child{font-family:var(--gh-font-heading,var(--font-serif))}:is(.site-logo,.site-title)+.site-description{max-width:640px;margin-top:16px;font-size:2.4rem;font-weight:400;line-height:1.4}.site-logo+.site-description{margin-top:20px}.site-title+.site-description{color:var(--color-secondary-text)}.has-cover .site-description{letter-spacing:-.005em;color:#fff}.has-cover :is(.site-logo,.site-title)+.site-description{font-size:2.4rem}.has-cover .site-header-content.left-aligned :is(.site-logo,.site-title)+.site-description{font-size:2.2rem}@media (min-width:992px){.is-head-stacked.has-cover .site-header-content{padding-top:calc(19vmin + 120px)}}@media (max-width:991px){.site-header-content{padding-top:calc(19vmin + 32px)}}@media (max-width:767px){.has-cover .site-header-content{min-height:240px}.site-header-inner{gap:16px}.site-logo{max-width:60%}.site-title{font-size:3.4rem!important}.site-description{font-size:2.2rem!important}.site-logo+.site-description,.site-title+.site-description{margin-top:12px!important}}.gh-head{height:88px;font-size:1.6rem;line-height:1.3em;background-color:#fff;z-index:150}.has-cover:not(.home-template) .gh-head{background-color:var(--ghost-accent-color);color:#fff}:is(.home-template,.paged:not(.tag-template):not(.author-template)).has-cover .gh-head{position:absolute;top:0;right:0;left:0;z-index:2000;background-color:transparent;color:#fff}.gh-head a{text-decoration:none}.gh-head-inner{display:grid;-moz-column-gap:40px;column-gap:40px;grid-auto-flow:row dense;align-items:center;height:100%}.gh-head-inner,.is-head-left-logo .gh-head-inner{grid-template-columns:auto 1fr auto}.is-head-left-logo.home-template .gh-head:not(.is-header-hidden) .gh-head-logo{display:none}.is-head-left-logo.home-template .gh-head:not(.is-header-hidden) .gh-head-menu{margin-left:-40px}@media (min-width:992px){.is-head-left-logo .gh-head-menu{margin-right:64px;margin-left:16px}}.is-head-middle-logo .gh-head-inner{grid-template-columns:1fr auto 1fr}.is-head-middle-logo .gh-head-brand{grid-column-start:2}@media (min-width:992px){.is-head-middle-logo .gh-head-menu{margin-right:64px}}.is-head-stacked .gh-head{height:auto}.is-head-stacked .gh-head-inner{grid-template-columns:1fr auto 1fr}.is-head-stacked .gh-head-brand{grid-row-start:1;grid-column-start:2}@media (min-width:992px){.is-head-stacked .gh-head-inner{padding:0}.is-head-stacked .gh-head-brand{position:relative;display:flex;align-items:center;height:80px}.is-head-stacked .gh-head-menu{grid-row-start:2;grid-column:1/4;justify-content:center;height:56px;margin:0 48px}.is-head-stacked .gh-head-menu:after,.is-head-stacked .gh-head-menu:before{position:absolute;top:80px;left:0;width:100%;height:1px;content:"";background-color:var(--color-lightgrey)}.is-head-stacked.has-cover .gh-head-menu:after,.is-head-stacked.has-cover .gh-head-menu:before{background-color:hsla(0,0%,100%,.2)}.is-head-stacked .gh-head-menu:after{top:136px}.is-head-stacked .gh-head-actions{grid-row-start:1;grid-column:1/4;justify-content:space-between}}.gh-head-brand{display:flex;align-items:center;height:40px;word-break:break-all}.gh-head-logo{display:block;font-family:var(--gh-font-heading,var(--font-sans));font-weight:800;font-size:2.6rem;letter-spacing:-.02em;color:inherit;white-space:nowrap}.gh-head-logo.no-image{margin-top:-5px}.has-cover .gh-head-logo{color:#fff}.gh-head-logo img{max-height:40px}.gh-head-menu{display:flex;align-items:center;margin-top:1px;font-weight:500}.gh-head-menu .nav{flex-wrap:wrap;gap:32px;list-style:none;margin:0;padding:0}.gh-head-menu .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-head-menu .nav li{margin:0;padding:0}.gh-head-menu .nav a{line-height:1.7;color:inherit}.gh-head-menu .nav a:hover{opacity:.9}.gh-head-menu .nav-more-toggle{position:relative;width:30px;height:30px;margin:0 -6px;padding:0;font-size:inherit;background-color:transparent;text-transform:inherit}.gh-head-menu .nav-more-toggle svg{width:24px;height:24px}@media (min-width:992px){body:not(.is-dropdown-loaded) .gh-head-menu .nav>li{opacity:0}}.gh-dropdown{position:absolute;top:100%;right:-16px;z-index:90;width:200px;padding:12px 0;margin-top:24px;opacity:0;visibility:hidden;text-align:left;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);transform:translate3d(0,6px,0);transition:opacity .3s,transform .2s}.is-head-middle-logo .gh-dropdown{right:auto;left:-24px}.is-dropdown-mega .gh-dropdown{display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:column;-moz-column-gap:40px;column-gap:40px;min-width:320px;padding:20px 32px}.is-dropdown-open .gh-dropdown{opacity:1;visibility:visible;transform:translateY(0)}.gh-head-menu .gh-dropdown li a{display:block;padding:6px 20px;color:#15171a}.is-dropdown-mega .gh-dropdown li a{padding:8px 0}.gh-social{display:flex;align-items:center;gap:20px}.gh-social-link{line-height:0;color:inherit}.gh-social-link:hover{opacity:.9}.gh-social-link svg{width:18px;height:18px}.gh-head-actions{display:flex;justify-content:flex-end;align-items:center;gap:24px;list-style:none;text-align:right}.gh-head-members{display:flex;gap:20px;align-items:center}.gh-head-link{font-weight:500;color:inherit}.gh-head-button{display:inline-flex;justify-content:center;align-items:center;padding:8px 20px;height:44px;font-weight:600;letter-spacing:-.005em;font-size:1.6rem;border-radius:48px;color:#fff;background:var(--ghost-accent-color)}.has-cover .gh-head-button{color:var(--color-darkgrey);background:#fff}@media (max-width:767px){.gh-head-members{flex-direction:column-reverse;gap:16px;width:100%}}.gh-search{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;cursor:pointer;background-color:transparent;border:0;outline:none}.gh-search:hover{opacity:.9}.gh-head-brand .gh-search{margin-right:8px}.gh-head-actions .gh-search{margin-right:-4px}@media (max-width:767px){.gh-head-actions .gh-search{display:none}}@media (min-width:768px){.gh-head-brand .gh-search{display:none}}.gh-burger{position:relative;display:none;width:30px;height:30px;padding:0;margin-right:-3px;cursor:pointer;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.gh-burger:after,.gh-burger:before{position:absolute;left:3px;width:24px;height:1px;content:"";background-color:var(--color-darkgrey);transition:all .2s cubic-bezier(.04,.04,.12,.96) .1008s}.has-cover .gh-burger:after,.has-cover .gh-burger:before{background-color:#fff}.gh-burger:before{top:11px}.gh-burger:after{bottom:11px}.gh-head-open .gh-burger:before{top:15px;transform:rotate(45deg)}.gh-head-open .gh-burger:after{bottom:14px;transform:rotate(-45deg)}@media (max-width:767px){#gh-head{height:64px}#gh-head .gh-head-inner{grid-template-rows:auto 1fr auto;grid-template-columns:1fr;gap:48px}#gh-head .gh-head-brand{display:grid;grid-template-columns:1fr auto auto;grid-column-start:1;align-items:center;height:64px}#gh-head .gh-head-logo{font-size:2.2rem}#gh-head .gh-head-brand .gh-search{margin-left:-6px}#gh-head .gh-burger{display:block}#gh-head .gh-head-actions,#gh-head .gh-head-menu{position:fixed;justify-content:center;visibility:hidden;opacity:0}#gh-head .gh-head-menu{margin:0;transition:none;transform:translateY(0)}#gh-head .nav{gap:16px;align-items:center;line-height:1.4}#gh-head .nav a{font-size:2.6rem;font-weight:600;text-transform:none}#gh-head .nav li{opacity:0;transform:translateY(-4px)}#gh-head :is(.gh-head-button,.gh-head-link){opacity:0;transform:translateY(8px)}#gh-head .gh-head-button{width:100%;font-size:1.8rem;text-transform:none;opacity:0;transform:translateY(8px)}.gh-head-open #gh-head{position:fixed;inset:0;z-index:3999999;height:100%;overflow-y:scroll;-webkit-overflow-scrolling:touch}.gh-head-open.has-cover #gh-head,.gh-head-open.has-cover #gh-head .gh-head-actions{background-color:var(--ghost-accent-color)}.gh-head-open #gh-head .gh-head-actions,.gh-head-open #gh-head .gh-head-menu{position:static;visibility:visible;opacity:1}.gh-head-open #gh-head .nav{display:flex;flex-direction:column}.gh-head-open #gh-head .nav li{opacity:1;transition:transform .2s,opacity .2s;transform:translateY(0)}.gh-head-open #gh-head .gh-head-actions{position:sticky;right:0;bottom:0;left:0;display:inline-flex;flex-direction:column;gap:12px;align-items:center;padding:max(4vmin,20px) 0 max(4vmin,28px);background-color:#fff}.gh-head-open #gh-head :is(.gh-head-button,.gh-head-link){opacity:1;transition:transform .4s,opacity .4s;transition-delay:.2s;transform:translateY(0)}.gh-head-open #gh-head .gh-head-link{transition-delay:.4s}}.post-feed{position:relative;display:grid;gap:4.8vmin 4vmin;grid-template-columns:repeat(6,1fr);padding:max(4.8vmin,36px) 0 0}:is(.tag-template,.author-template) .post-feed{margin-top:4vmin}@media (max-width:991px){.post-feed{grid-template-columns:1fr 1fr}}@media (max-width:767px){.post-feed{grid-template-columns:1fr;grid-gap:40px}}.post-card{position:relative;grid-column:span 2;display:flex;flex-direction:column;background-size:cover;word-break:break-word}.post-card-image-link{position:relative;overflow:hidden;display:block;margin-bottom:32px}.post-card-image-link:after{content:"";display:block;padding-bottom:55%}.post-card[class*=post-access-] .post-card-image-link:after{background-color:rgba(0,0,0,.5);backdrop-filter:blur(3px)}.post-card.keep-ratio[class*=post-access-] .post-card-image-link:after{position:absolute;inset:0;padding-bottom:0}.post-card.keep-ratio:not(.post-card-large):not(.post-card-full) .post-card-image-link:after{padding-bottom:0}.post-card-image{position:absolute;inset:0;width:100%;height:100%;background:var(--color-lightgrey) no-repeat center center;-o-object-fit:cover;object-fit:cover}.post-card.keep-ratio:not(.post-card-large):not(.post-card-full) .post-card-image{position:static}.post-card-access{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;gap:4px;font-size:1.5rem;font-weight:600;color:#fff}.post-card-content-link{position:relative;display:block;color:var(--color-darkgrey)}.post-card-content-link:hover{text-decoration:none}.post-feed .no-image .post-card-content-link{padding:0}.no-image .post-card-header{margin-top:0}.post-card-tags{display:flex;align-items:center;gap:12px;margin:0 0 10px;color:var(--color-secondary-text);font-size:1.4rem;font-weight:600;letter-spacing:-.005em;line-height:1}.post-card-featured{position:relative;display:flex;align-items:center;gap:3px;padding-left:18px;color:var(--ghost-accent-color)}.post-card-featured svg{position:absolute;left:0}.post-card-title{margin:0;font-size:2.6rem;font-weight:800;line-height:1.2}.post-card-content-link:hover .post-card-title{opacity:.9}.no-image .post-card-title{margin-top:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .post-card-title{font-family:var(--gh-font-heading,var(--font-serif));letter-spacing:-.005em}.post-card-title svg{margin-top:-3px;margin-left:-1px}.post-card-content{flex-grow:1;display:flex;flex-direction:column}.post-card-excerpt{display:-webkit-box;overflow-y:hidden;margin-top:12px;max-width:720px;font-size:1.6rem;line-height:1.5;-webkit-line-clamp:3;-webkit-box-orient:vertical;word-break:break-word}.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .post-card-excerpt{font-family:var(--gh-font-body,var(--font-sans))}.post-card:not(.post-card-large):not(.post-card-full):not(.dynamic):not(.no-image) .post-card-excerpt{-webkit-line-clamp:2}:is(.tag-template,.author-template) .post-card-excerpt{margin-top:6px}:is(.tag-template,.author-template) .post-card-large .post-card-excerpt{display:block;overflow-y:auto}.post-card-meta{margin-top:12px;padding:0;font-size:1.3rem;color:var(--color-secondary-text)}.post-card-meta,.post-card-meta>*{display:flex;align-items:center;gap:6px}.post-card-meta>*+:not(script):before{width:2px;height:2px;content:"";background-color:var(--color-secondary-text);border-radius:50%}.post-card-meta .sep{margin:0 4px}.author-profile-image{display:block;width:100%;height:100%;background:#1a1a1a;border-radius:100%;-o-object-fit:cover;object-fit:cover}.author-list{display:flex;margin:0 0 0 4px;padding:0;list-style:none}.author-list-item{position:relative;flex-shrink:0;margin:0;padding:0}@media (min-width:1001px){.post-card-large{grid-column:span 6;display:grid;grid-gap:4vmin;grid-template-columns:repeat(3,1fr);border-top:0}.post-card-large:not(.no-image) .post-card-header{margin-top:0}.post-card-large .post-card-image-link{position:relative;grid-column:span 2;margin-bottom:0}.post-card-large .post-card-content{grid-column:span 1}.post-card-large.no-image .post-card-content{grid-column:span 2}.post-card-large .post-card-image{position:absolute;width:100%;height:100%}.post-card-large .post-card-tags{margin-bottom:12px}.post-card-large .post-card-title{margin-top:0;font-size:4.4rem;line-height:1.05}.post-card-large .post-card-excerpt{margin-top:16px}.post-card-full{grid-column:span 6}.post-card-full .post-card-image-link{margin-bottom:40px}.post-card-full .post-card-tags{margin-bottom:14px}.post-card-full .post-card-title{font-size:6.4rem;line-height:.95}.post-card-full .post-card-excerpt{margin-top:20px;font-size:1.8rem}.post-card-large+.post-card-large:nth-child(2n){margin:32px 0}.post-card-large+.post-card-large:nth-child(2n) .post-card-content{order:-1}.post-card.dynamic{grid-column:span 3}.post-card.dynamic .post-card-title{font-size:3rem}}.pagination{display:none;grid-template-columns:1fr auto 1fr;align-items:center;margin-top:8vmin}html.no-infinite-scroll .pagination{display:grid}.pagination a{font-size:1.7rem;font-weight:600}.pagination .page-number{grid-column-start:2;color:var(--color-secondary-text)}.pagination .older-posts{grid-column-start:3;text-align:right}@media (max-width:767px){.pagination .page-number{display:none}}.article{word-break:break-word}.post-template .article{padding:max(8vmin,40px) 0 max(8vmin,64px)}.post-template .article-header{padding:0 0 max(6.4vmin,40px)}.page-template .article-header{padding:max(12vmin,64px) 0 max(3.2vmin,28px)}.article-tag{margin-bottom:16px;font-size:1.6rem}.article-tag a{color:var(--color-secondary-text)}.article-title{margin-bottom:0;font-size:clamp(3.2rem,5vw,5.2rem);font-weight:800;line-height:1.05;color:var(--color-darkgrey)}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .article-title{font-family:var(--gh-font-heading,var(--font-serif))}.article-excerpt{margin-top:20px;max-width:720px;font-size:2rem;line-height:1.45;color:var(--color-darkgrey)}.gh-canvas .article-image{grid-column:wide-start/wide-end;width:100%;margin:max(6.4vmin,40px) 0 0}.image-full .article-image{grid-column:full-start/full-end}.image-small .article-image{grid-column:main-start/main-end}.gh-canvas .article-image img{display:block;margin-left:auto;margin-right:auto;width:100%}@media (max-width:767px){.article-excerpt{margin-top:14px;font-size:1.7rem}}.gh-canvas,.kg-width-full.kg-content-wide{--gap:max(4vmin, 20px);--main:min(var(--content-width, 720px), 100% - var(--gap) * 2);--wide:minmax(0, calc((var(--container-width, 1200px) - var(--content-width, 720px))/2));--full:minmax(var(--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-start/main-end}.kg-content-wide>div,.kg-width-wide{grid-column:wide-start/wide-end}.kg-width-full{grid-column:full-start/full-end}.kg-width-full img{width:100%}.gh-content>*+*{margin-top:max(3.2vmin,24px);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]{margin:0;color:var(--color-darkgrey)}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-content>[id]{font-family:var(--gh-font-heading,var(--font-serif))}.gh-content>[id]:not(:first-child){margin:2em 0 0}.gh-content>[id]+*{margin-top:1.5rem!important}.gh-content>blockquote,.gh-content>hr{position:relative;margin-top:max(4.8vmin,32px)}.gh-content>blockquote+*,.gh-content>hr+*{margin-top:max(4.8vmin,32px)!important}.gh-content a{color:var(--ghost-accent-color);text-decoration:underline;word-break:break-word}.gh-content>blockquote:not([class]),.gh-content>dl,.gh-content>ol,.gh-content>p,.gh-content>ul{font-family:var(--gh-font-body,var(--font-serif));font-weight:400;font-size:2rem;line-height:1.6em}.gh-content>p img{margin:0 auto}.page-template .gh-content:only-child>:first-child:not(.kg-width-full){margin-top:max(12vmin,64px)}.page-template .gh-content>:last-child:not(.kg-width-full){margin-bottom:max(12vmin,64px)}.gh-content .kg-callout-card .kg-callout-text,.gh-content .kg-toggle-card .kg-toggle-content>ol,.gh-content .kg-toggle-card .kg-toggle-content>p,.gh-content .kg-toggle-card .kg-toggle-content>ul{font-family:var(--font-serif);font-weight:400;font-size:1.9rem;line-height:1.6em}.gh-content .kg-product-card .kg-product-card-description>ol,.gh-content .kg-product-card .kg-product-card-description>p,.gh-content .kg-product-card .kg-product-card-description>ul{font-size:1.7rem;line-height:1.6em}.gh-content .kg-callout-card .kg-callout-emoji{font-size:2.1rem;line-height:1.4em}.gh-content .kg-toggle-card .kg-toggle-heading-text{font-size:2rem}.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-callout-card .kg-callout-text,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-card .kg-toggle-content>ol,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-card .kg-toggle-content>p,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-card .kg-toggle-content>ul,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>blockquote,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>dl,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ol,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>p,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ul{font-family:var(--gh-font-body,var(--font-sans))}.gh-content .kg-product-card .kg-product-card-description>ol,.gh-content .kg-product-card .kg-product-card-description>ul,.gh-content .kg-toggle-card .kg-toggle-content>ol,.gh-content .kg-toggle-card .kg-toggle-content>ul,.gh-content>dl,.gh-content>ol,.gh-content>ul{padding-left:1.9em}.gh-content>blockquote:not([class]){position:relative;font-style:italic;padding:0}.gh-content>blockquote:not([class]):before{content:"";position:absolute;left:-1.5em;top:0;bottom:0;width:.3rem;background:var(--ghost-accent-color)}.gh-content :not(pre)>code{vertical-align:middle;padding:.15em .4em;border:1px solid #e1eaef;font-weight:400!important;font-size:.9em;line-height:1em;color:#15171a;background:#f0f6f9;border-radius:.25em}.gh-content pre{overflow:auto;padding:16px 20px;color:var(--color-wash);font-size:1.4rem;line-height:1.5em;background:var(--color-darkgrey);border-radius:5px;box-shadow:0 2px 6px -2px rgba(0,0,0,.1),0 0 1px rgba(0,0,0,.4)}.gh-content ol ol li{list-style-type:lower-alpha}.gh-content ol ol ol li{list-style-type:lower-roman}@media (max-width:650px){.gh-content .kg-callout-card .kg-callout-text,.gh-content .kg-toggle-card .kg-toggle-content>ol,.gh-content .kg-toggle-card .kg-toggle-content>p,.gh-content .kg-toggle-card .kg-toggle-content>ul,.gh-content>blockquote:not([class]),.gh-content>dl,.gh-content>ol,.gh-content>p,.gh-content>ul{font-size:1.8rem}.gh-content .kg-product-card .kg-product-card-description>ol,.gh-content .kg-product-card .kg-product-card-description>p,.gh-content .kg-product-card .kg-product-card-description>ul{font-size:1.6rem}.gh-content blockquote:not([class]):before{left:min(-4vmin,-20px)}}.gh-content .kg-card+:not(.kg-card),.gh-content :not(.kg-card):not([id])+.kg-card{margin-top:6vmin}.kg-embed-card{display:flex;flex-direction:column;align-items:center;width:100%}.gh-content iframe[src*="kickstarter.com"],.gh-content iframe[src*="player.vimeo.com"],.gh-content iframe[src*="youtube-nocookie.com"],.gh-content iframe[src*="youtube.com"],.kg-embed-card iframe[src*="kickstarter.com"],.kg-embed-card iframe[src*="player.vimeo.com"],.kg-embed-card iframe[src*="youtube-nocookie.com"],.kg-embed-card iframe[src*="youtube.com"]{aspect-ratio:16/9;width:100%;height:auto}.kg-image-card img{margin:auto}.kg-gallery-image,.kg-image[width][height]{cursor:pointer}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-toggle-card .kg-toggle-heading-text{font-family:var(--gh-font-heading,var(--font-serif))}.gh-content .kg-callout-card-accent a{text-decoration:underline}.kg-blockquote-alt{font-family:var(--font-serif);color:var(--color-midgrey)}.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .kg-blockquote-alt{font-family:var(--gh-font-body,var(--font-sans))}.kg-card.kg-header-card.kg-style-dark{background:var(--color-darkgrey)}.kg-header-card.kg-style-light h2.kg-header-card-header{color:#000}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-header-card h2.kg-header-card-header{font-family:var(--gh-font-heading,var(--font-serif))}figcaption{padding:1.5rem 1.5rem 0;text-align:center;color:rgba(0,0,0,.5);font-size:1.3rem;line-height:1.4em}figcaption strong{color:rgba(0,0,0,.8)}figcaption a{text-decoration:underline}iframe.instagram-media{margin:6vmin auto 0!important}iframe.instagram-media+script+:not([id]){margin-top:6vmin}.kg-width-full.kg-card-hascaption{display:grid;grid-template-columns:inherit}.kg-width-wide.kg-card-hascaption img{grid-column:wide-start/wide-end}.kg-width-full.kg-card-hascaption img{grid-column:1/-1}.kg-width-full.kg-card-hascaption figcaption{grid-column:main-start/main-end}.article-comments{margin:6vmin 0 0}.footnotes-sep{margin-bottom:30px}.footnotes{font-size:1.5rem}.footnotes p{margin:0}.footnote-backref{font-size:1.2rem;font-weight:700;text-decoration:none!important;box-shadow:none!important}.gh-content table:not(.gist table){display:inline-block;overflow-x:auto;max-width:100%;width:auto;border-spacing:0;border-collapse:collapse;font-family:var(--font-sans);font-size:1.6rem;white-space:nowrap;vertical-align:top;-webkit-overflow-scrolling:touch;background:radial-gradient(ellipse at left,rgba(0,0,0,.2) 0,transparent 75%) 0,radial-gradient(ellipse at right,rgba(0,0,0,.2) 0,transparent 75%) 100%;background-attachment:scroll,scroll;background-size:10px 100%,10px 100%;background-repeat:no-repeat}.gh-content table:not(.gist table) td:first-child{background-image:linear-gradient(90deg,#fff 50%,hsla(0,0%,100%,0));background-size:20px 100%;background-repeat:no-repeat}.gh-content table:not(.gist table) td:last-child{background-image:linear-gradient(270deg,#fff 50%,hsla(0,0%,100%,0));background-position:100% 0;background-size:20px 100%;background-repeat:no-repeat}.gh-content table:not(.gist table) th{color:var(--color-darkgrey);font-size:1.2rem;font-weight:700;letter-spacing:.2px;text-align:left;text-transform:uppercase;background-color:#f4f8fb}.gh-content table:not(.gist table) td,.gh-content table:not(.gist table) th{padding:6px 12px;border:1px solid #e3edf3}.article-byline{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:min(24px,5.6vmin) 0 0}.gh-button-share{display:inline-flex;align-items:center;flex-shrink:0;padding:.5em 1.2em;font-size:1.4rem;font-weight:600;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;white-space:nowrap;text-decoration:none}.gh-button-share:hover{border-color:rgba(0,0,0,.5)}html.dark-mode .gh-button-share{color:hsla(0,0%,100%,.85);border-color:hsla(0,0%,100%,.15)}html.dark-mode .gh-button-share:hover{border-color:hsla(0,0%,100%,.5)}.article-byline-content{flex-grow:1;display:flex;align-items:center}.article-byline-content .author-list{justify-content:flex-start;padding:0 14px 0 0}.article-byline-meta{color:var(--color-secondary-text);font-size:1.4rem;line-height:1.2em}.article-byline-meta .author-name{margin:0 0 6px;font-size:1.7rem;font-weight:700;letter-spacing:0}.article-byline-meta .bull{display:inline-block;margin:0 2px}.author-avatar{display:block;overflow:hidden;margin:0 -4px;width:min(56px,13.6vmin);height:min(56px,13.6vmin);border:2px solid #fff;border-radius:50%;background-color:var(--color-border)}.page-template .article-title{margin-bottom:0}@media (max-width:767px){.article-byline-content{flex-direction:column;align-items:flex-start;gap:16px}.article-byline-content .author-list{padding-right:12px}.article-byline-meta .author-name{margin-bottom:4px}}.footer-cta{position:relative;text-align:center}.footer-cta-title{margin:0 0 min(24px,6.4vmin);font-size:clamp(2.6rem,5vw,3.8rem);font-weight:800}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .footer-cta-title{font-family:var(--gh-font-heading,var(--font-serif))}.footer-cta-button{position:relative;display:inline-flex;align-items:center;justify-content:space-between;width:100%;max-width:500px;padding:5px 5px 5px 15px;font-size:1.7rem;color:var(--color-secondary-text);background:#fff;border:1px solid var(--color-border);border-radius:8px;transition:border-color .2s}.footer-cta-button:hover{border-color:#000}.footer-cta-button span{display:inline-block;padding:9px 15px;color:#fff;font-size:1.6rem;font-weight:600;letter-spacing:-.005em;background:var(--ghost-accent-color);border-radius:6px}.read-more-wrap{margin-top:2.4vmin}.footer-cta+.read-more-wrap{margin-top:max(12vmin,72px)}.read-more{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:4vmin}.read-more .post-card-tags{display:none}@media (max-width:1000px){.read-more{grid-template-columns:repeat(4,1fr)}.read-more .post-card:nth-child(3){display:none}}@media (max-width:700px){.read-more{grid-template-columns:repeat(2,1fr)}.read-more .post-card:nth-child(2){display:none}}.comments{display:flex;flex-direction:column;align-items:center;margin:60px 0 44px}.comments-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:32px;width:100%;max-width:720px}.comments h2{width:100%;max-width:720px;font-weight:800;font-size:3.4rem}.comments .comment-count{color:var(--color-midgrey);font-weight:600;white-space:nowrap}.comments #ghost-comments-root{width:100%;max-width:720px}.author-profile-pic{display:block;width:80px;height:80px;-o-object-fit:cover;object-fit:cover;margin:0 0 2rem;background:#1a1a1a;border-radius:50%}.author-profile-footer{margin-top:16px}.author-profile-location{font-weight:700}.author-profile-meta{display:flex;gap:12px}.author-profile-social-link{font-size:1.3rem;color:var(--color-secondary-text)}.author-profile-social-link:hover{color:var(--color-darkgrey)}.author-profile-social-link svg{width:16px;height:16px}@media (min-width:1001px){.author-template .post-card-large .post-card-content:only-child{grid-column:span 2;max-width:640px}}.tag-template .post-card-large .post-card-image-link{grid-column:2/span 2;order:2}.tag-template .post-card-large .post-card-content{order:1}@media (min-width:1001px){.tag-template .post-card-large .post-card-content:only-child{grid-column:span 2;max-width:640px}}.error-content{padding:14vw 4vw 2vw}.error-message{padding-bottom:10vw;text-align:center}.error-code{margin:0;font-size:12vw;line-height:1em;letter-spacing:-5px}.error-description{margin:0;color:var(--color-secondary-text);font-size:3.2rem;line-height:1.3em;letter-spacing:-.005em;font-weight:400}.error-link{display:inline-block;margin-top:5px}@media (min-width:940px){.error-content .post-card{margin-bottom:0;padding-bottom:0;border-bottom:none}}@media (max-width:800px){.error-content{padding-top:24vw}.error-code{font-size:11.2rem}.error-message{padding-bottom:16vw}.error-description{margin:5px 0 0;font-size:1.8rem}}@media (max-width:500px){.error-content{padding-top:28vw}.error-message{padding-bottom:14vw}}.site-footer{position:relative;margin:max(12vmin,64px) 0 0;padding-top:48px;padding-bottom:140px;color:#fff;background:#000}.page-template .site-footer{margin-top:0}.site-footer .inner{display:grid;grid-gap:40px;grid-template-columns:auto 1fr auto;align-items:center;color:hsla(0,0%,100%,.7);font-size:1.3rem}.site-footer-center{display:flex;flex-direction:column;align-items:center;gap:16px}.site-footer-social-links{display:flex;gap:20px}.site-footer-social-links a{display:inline-flex}.site-footer-social-links svg{width:16px;height:16px}.site-footer .copyright a{color:#fff;letter-spacing:-.015em;font-weight:500}.site-footer a{color:hsla(0,0%,100%,.7)}.site-footer a:hover{color:#fff;text-decoration:none}.site-footer-nav ul{display:flex;justify-content:center;flex-wrap:wrap;margin:0;padding:0;list-style:none}.site-footer-nav li{display:inline-flex;align-items:center;padding:0;margin:0;line-height:2em}.site-footer-nav a{position:relative;display:inline-flex;align-items:center;margin-left:10px}.site-footer-nav li:not(:first-child) a:before{content:"";display:block;width:2px;height:2px;margin:0 10px 0 0;background:#fff;border-radius:100%}@media (max-width:767px){.site-footer .inner{max-width:500px;grid-template-columns:1fr;grid-gap:0;text-align:center}.site-footer .copyright,.site-footer .copyright a{color:#fff;font-size:1.5rem}.site-footer .copyright,.site-footer-center{margin-bottom:16px}}html.dark-mode body{color:hsla(0,0%,100%,.75);background:var(--color-darkmode)}html.dark-mode img{opacity:.9}html.dark-mode kbd{background:#0c0d0e}html.dark-mode figcaption a{color:#fff}html.dark-mode body:not(.has-cover) .gh-head{background:var(--color-darkmode);color:#fff}html.dark-mode .gh-burger:after,html.dark-mode .gh-burger:before{background-color:#fff}html.dark-mode .site-header-content{color:#fff}html.dark-mode .site-header-cover{opacity:1}html.dark-mode .post-card-image{background:var(--color-darkmode)}html.dark-mode :is(.post-card-tags,.post-card-meta,.article-tag a,.byline-meta-content,.pagination .page-number){color:var(--color-secondary-text)}html.dark-mode .post-card-featured,html.dark-mode .post-card-title{color:#fff}html.dark-mode .post-card-excerpt{color:var(--color-secondary-text)}html.dark-mode .article-title,html.dark-mode .author-profile-location,html.dark-mode .author-profile-social-link:hover,html.dark-mode .pagination a{color:#fff}html.dark-mode .article-excerpt{color:var(--color-secondary-text)}html.dark-mode .post-full-image{background-color:#131416}html.dark-mode .author-avatar{border-color:var(--color-darkmode);background-color:#131416}html.dark-mode .author-profile-image{opacity:1}html.dark-mode .author-profile-image path{fill:var(--color-darkmode)}html.dark-mode .article-byline-meta .author-name a{color:#fff}html.dark-mode .no-image .author-social-link a{color:hsla(0,0%,100%,.75)}html.dark-mode .gh-content>[id]{color:hsla(0,0%,100%,.9)}html.dark-mode .gh-content pre{background:#000}html.dark-mode .gh-content :not(pre)>code{background:#0e0f11;border-color:#131416;color:var(--color-wash)}:where(html.dark-mode) .gh-content a{color:#fff}html.dark-mode .gh-content code{color:#fff;background:#000}html.dark-mode hr{border-top-color:#424242}html.dark-mode .gh-content hr:after{background:#131416;box-shadow:var(--color-darkmode) 0 0 0 5px}html.dark-mode figcaption{color:hsla(0,0%,100%,.6)}html.dark-mode .gh-content table:not(.gist table) td:first-child{background-image:linear-gradient(to right,var(--color-darkmode) 50%,rgba(21,23,25,0) 100%)}html.dark-mode .gh-content table:not(.gist table) td:last-child{background-image:linear-gradient(to left,var(--color-darkmode) 50%,rgba(21,23,25,0) 100%)}html.dark-mode .gh-content table:not(.gist table) th{color:hsla(0,0%,100%,.85);background-color:#282b2f}html.dark-mode .gh-content table:not(.gist table) td,html.dark-mode .gh-content table:not(.gist table) th{border:1px solid #282b2f}html.dark-mode .gh-content :is(input,textarea){color:#000}html.dark-mode .site-archive-header .no-image{color:hsla(0,0%,100%,.9);background:var(--color-darkmode)}html.dark-mode .kg-header-card.kg-style-dark{background:#000}html.dark-mode .kg-header-card.kg-style-light{background:#0b0c0e}html.dark-mode .kg-header-card h2.kg-header-card-header,html.dark-mode .kg-header-card h3.kg-header-card-subheader{color:#fff}html.dark-mode .kg-bookmark-card a.kg-bookmark-container,html.dark-mode .kg-bookmark-card a.kg-bookmark-container:hover{background:var(--color-darkmode)!important;color:#fff!important}html.dark-mode .footer-cta-title{color:#fff}@media (max-width:767px){html.dark-mode .gh-head-open:not(.has-cover) #gh-head,html.dark-mode .gh-head-open:not(.has-cover) #gh-head .gh-head-actions{background:var(--color-darkmode)}}@media (prefers-color-scheme:dark){html.auto-color body{color:hsla(0,0%,100%,.75);background:var(--color-darkmode)}html.auto-color img{opacity:.9}html.auto-color kbd{background:#0c0d0e}html.auto-color figcaption a{color:#fff}html.auto-color body:not(.has-cover) .gh-head{background:var(--color-darkmode);color:#fff}html.auto-color .gh-burger:after,html.auto-color .gh-burger:before{background-color:#fff}html.auto-color .site-header-content{color:#fff}html.auto-color .site-header-cover{opacity:1}html.auto-color .post-card-image{background:var(--color-darkmode)}html.auto-color :is(.post-card-tags,.post-card-meta,.article-tag a,.byline-meta-content,.pagination .page-number){color:var(--color-secondary-text)}html.auto-color .post-card-featured,html.auto-color .post-card-title{color:#fff}html.auto-color .post-card-excerpt{color:var(--color-secondary-text)}html.auto-color .article-title,html.auto-color .author-profile-location,html.auto-color .author-profile-social-link:hover,html.auto-color .pagination a{color:#fff}html.auto-color .article-excerpt{color:var(--color-secondary-text)}html.auto-color .post-full-image{background-color:#131416}html.auto-color .author-avatar{border-color:var(--color-darkmode);background-color:#131416}html.auto-color .author-profile-image{opacity:1}html.auto-color .author-profile-image path{fill:var(--color-darkmode)}html.auto-color .article-byline-meta .author-name a{color:#fff}html.auto-color .gh-button-share{color:hsla(0,0%,100%,.85);border-color:hsla(0,0%,100%,.15)}html.auto-color .gh-button-share:hover{border-color:hsla(0,0%,100%,.5)}html.auto-color .no-image .author-social-link a{color:hsla(0,0%,100%,.75)}html.auto-color .gh-content>[id]{color:hsla(0,0%,100%,.9)}html.auto-color .gh-content pre{background:#000}html.auto-color .gh-content :not(pre)>code{background:#0e0f11;border-color:#131416;color:var(--color-wash)}:where(html.auto-color) .gh-content a{color:#fff}html.auto-color .gh-content code{color:#fff;background:#000}html.auto-color hr{border-top-color:#424242}html.auto-color .gh-content hr:after{background:#131416;box-shadow:var(--color-darkmode) 0 0 0 5px}html.auto-color figcaption{color:hsla(0,0%,100%,.6)}html.auto-color .gh-content table:not(.gist table) td:first-child{background-image:linear-gradient(to right,var(--color-darkmode) 50%,rgba(21,23,25,0) 100%)}html.auto-color .gh-content table:not(.gist table) td:last-child{background-image:linear-gradient(to left,var(--color-darkmode) 50%,rgba(21,23,25,0) 100%)}html.auto-color .gh-content table:not(.gist table) th{color:hsla(0,0%,100%,.85);background-color:#282b2f}html.auto-color .gh-content table:not(.gist table) td,html.auto-color .gh-content table:not(.gist table) th{border:1px solid #282b2f}html.auto-color .gh-content :is(input,textarea){color:#000}html.auto-color .site-archive-header .no-image{color:hsla(0,0%,100%,.9);background:var(--color-darkmode)}html.auto-color .kg-header-card.kg-style-dark{background:#000}html.auto-color .kg-header-card.kg-style-light{background:#0b0c0e}html.auto-color .kg-header-card h2.kg-header-card-header,html.auto-color .kg-header-card h3.kg-header-card-subheader{color:#fff}html.auto-color .kg-bookmark-card a.kg-bookmark-container,html.auto-color .kg-bookmark-card a.kg-bookmark-container:hover{background:var(--color-darkmode)!important;color:#fff!important}html.auto-color .footer-cta-title{color:#fff}@media (max-width:767px){html.auto-color .gh-head-open:not(.has-cover) #gh-head,html.auto-color .gh-head-open:not(.has-cover) #gh-head .gh-head-actions{background:var(--color-darkmode)}}}.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:#000}.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:#fff;-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:#fff;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-color:#fff #fff transparent transparent;border-style:solid;border-width:2px;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}/*# sourceMappingURL=screen.css.map */
1
+ a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}body{line-height:1}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{display:block;max-width:100%;height:auto}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{margin:.67em 0;font-size:2em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#fdffb6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}kbd{padding:3px 5px;font-family:var(--font-mono);font-size:1.5rem;background:#f6f8fa;border:1px solid rgba(124,139,154,.25);border-radius:6px;box-shadow:inset 0 -1px 0 rgba(124,139,154,.25)}@media (max-width:600px){kbd{font-size:1.3rem}}button,input,optgroup,select,textarea{margin:0;color:inherit;font:inherit}button{overflow:visible;border:none}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{padding:0;border:0}textarea{overflow:auto}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{color:var(--color-darkgrey);font-family:var(--gh-font-body,var(--font-sans));font-size:1.6rem;line-height:1.6em;font-weight:400;font-style:normal;letter-spacing:0;text-rendering:optimizeLegibility;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}::-moz-selection{text-shadow:none;background:#daf2fd}::selection{text-shadow:none;background:#daf2fd}hr{position:relative;display:block;width:100%;margin:2.5em 0 3.5em;padding:0;height:1px;border:0;border-top:1px solid #f0f0f0}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{margin:0;padding:0;border:0}textarea{resize:vertical}::not(.gh-content) blockquote,::not(.gh-content) dl,::not(.gh-content) ol,::not(.gh-content) p,::not(.gh-content) ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0}ol,ul{max-width:100%}li{padding-left:.3em;line-height:1.6em}li+li{margin-top:.5em}dt{float:left;margin:0 20px 0 0;width:120px;color:#daf2fd;font-weight:500;text-align:right}dd{margin:0 0 5px;text-align:left}sub,sup{line-height:1}blockquote{margin:1.5em 0;padding:0 1.6em;border-left:#daf2fd}blockquote small{display:inline-block;margin:.8em 0 .8em 1.5em;font-size:.9em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#15171a;text-decoration:none}h1,h2,h3,h4,h5,h6{margin-top:0;line-height:1.15;font-family:var(--gh-font-heading,var(--font-sans));font-weight:600;text-rendering:optimizeLegibility;letter-spacing:-.01em}h1{margin:0 0 .5em;font-size:4.8rem;font-weight:700;letter-spacing:-.015em}@media (max-width:600px){h1{font-size:2.8rem}}h2{margin:1.5em 0 .5em;font-size:2.8rem;font-weight:700}@media (max-width:600px){h2{font-size:2.3rem}}h3{margin:1.5em 0 .5em;font-size:2.4rem;font-weight:600}@media (max-width:600px){h3{font-size:1.7rem}}h4{margin:1.5em 0 .5em;font-size:2rem}@media (max-width:600px){h4{font-size:1.7rem}}h5{font-size:2rem}h5,h6{margin:1.5em 0 .5em}h6{font-size:1.8rem}:root{--color-green:#a4d037;--color-yellow:#fecd35;--color-red:#f05230;--color-darkgrey:#15171a;--color-midgrey:#738a94;--color-lightgrey:#f1f1f1;--color-secondary-text:#979797;--color-border:#e1e1e1;--color-wash:#e5eff5;--color-darkmode:#151719;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-serif:Georgia, Times, serif;--font-mono:Menlo, Courier, monospace}.viewport{position:relative;display:flex;flex-direction:column;min-height:100vh}.site-content{flex-grow:1}.outer{position:relative;padding:0 max(4vmin,20px)}.inner{margin:0 auto;max-width:1200px;width:100%}.site-header{position:relative;color:#fff;background:var(--ghost-accent-color)}.site-header-cover{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.site-header-content{position:relative;z-index:100;display:flex;align-items:center;padding-top:calc(19vmin + 44px);padding-bottom:19vmin;text-align:center;color:var(--color-darkgrey)}.has-cover .site-header-content{min-height:560px;background-color:var(--ghost-accent-color);color:#fff}.site-header-content.left-aligned{padding-bottom:0;text-align:left}.has-cover .site-header-content.left-aligned{align-items:flex-end;padding-bottom:max(4vmin,32px)}.site-header-content.no-content{padding-top:0;padding-bottom:2vmin}.site-header-inner{position:relative}.site-header-content.left-aligned .site-header-inner{align-items:flex-start}.site-logo{flex-shrink:0;margin:0 auto;max-height:120px}.site-header-content.left-aligned .site-logo{margin-right:auto;margin-left:0;max-height:96px}.site-title{z-index:10;margin:0;padding:0;font-size:5rem;font-weight:800}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .site-title{font-family:var(--gh-font-heading,var(--font-serif))}.has-cover .site-title{font-size:6rem}.site-header-content.left-aligned .site-title{font-size:4.4rem}.has-cover .site-header-content.left-aligned .site-title{font-size:4.6rem}.site-description{display:inline-block;z-index:10;max-width:960px;font-size:6rem;font-weight:700;line-height:1.1}.site-description:first-child{font-family:var(--gh-font-heading,var(--font-sans))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .site-description:first-child{font-family:var(--gh-font-heading,var(--font-serif))}:is(.site-logo,.site-title)+.site-description{max-width:640px;margin-top:16px;font-size:2.4rem;font-weight:400;line-height:1.4}.site-logo+.site-description{margin-top:20px}.site-title+.site-description{color:var(--color-secondary-text)}.has-cover .site-description{letter-spacing:-.005em;color:#fff}.has-cover :is(.site-logo,.site-title)+.site-description{font-size:2.4rem}.has-cover .site-header-content.left-aligned :is(.site-logo,.site-title)+.site-description{font-size:2.2rem}@media (min-width:992px){.is-head-stacked.has-cover .site-header-content{padding-top:calc(19vmin + 120px)}}@media (max-width:991px){.site-header-content{padding-top:calc(19vmin + 32px)}}@media (max-width:767px){.has-cover .site-header-content{min-height:240px}.site-header-inner{gap:16px}.site-logo{max-width:60%}.site-title{font-size:3.4rem!important}.site-description{font-size:2.2rem!important}.site-logo+.site-description,.site-title+.site-description{margin-top:12px!important}}.gh-head{height:88px;font-size:1.6rem;line-height:1.3em;background-color:#fff;z-index:150}.has-cover:not(.home-template) .gh-head{background-color:var(--ghost-accent-color);color:#fff}:is(.home-template,.paged:not(.tag-template):not(.author-template)).has-cover .gh-head{position:absolute;top:0;right:0;left:0;z-index:2000;background-color:transparent;color:#fff}.gh-head a{text-decoration:none}.gh-head-inner{display:grid;-moz-column-gap:40px;column-gap:40px;grid-auto-flow:row dense;align-items:center;height:100%}.gh-head-inner,.is-head-left-logo .gh-head-inner{grid-template-columns:auto 1fr auto}.is-head-left-logo.home-template .gh-head:not(.is-header-hidden) .gh-head-logo{display:none}.is-head-left-logo.home-template .gh-head:not(.is-header-hidden) .gh-head-menu{margin-left:-40px}@media (min-width:992px){.is-head-left-logo .gh-head-menu{margin-right:64px;margin-left:16px}}.is-head-middle-logo .gh-head-inner{grid-template-columns:1fr auto 1fr}.is-head-middle-logo .gh-head-brand{grid-column-start:2}@media (min-width:992px){.is-head-middle-logo .gh-head-menu{margin-right:64px}}.is-head-stacked .gh-head{height:auto}.is-head-stacked .gh-head-inner{grid-template-columns:1fr auto 1fr}.is-head-stacked .gh-head-brand{grid-row-start:1;grid-column-start:2}@media (min-width:992px){.is-head-stacked .gh-head-inner{padding:0}.is-head-stacked .gh-head-brand{position:relative;display:flex;align-items:center;height:80px}.is-head-stacked .gh-head-menu{grid-row-start:2;grid-column:1/4;justify-content:center;height:56px;margin:0 48px}.is-head-stacked .gh-head-menu:after,.is-head-stacked .gh-head-menu:before{position:absolute;top:80px;left:0;width:100%;height:1px;content:"";background-color:var(--color-lightgrey)}.is-head-stacked.has-cover .gh-head-menu:after,.is-head-stacked.has-cover .gh-head-menu:before{background-color:hsla(0,0%,100%,.2)}.is-head-stacked .gh-head-menu:after{top:136px}.is-head-stacked .gh-head-actions{grid-row-start:1;grid-column:1/4;justify-content:space-between}}.gh-head-brand{display:flex;align-items:center;height:40px;word-break:break-all}.gh-head-logo{display:block;font-family:var(--gh-font-heading,var(--font-sans));font-weight:800;font-size:2.6rem;letter-spacing:-.02em;color:inherit;white-space:nowrap}.gh-head-logo.no-image{margin-top:-5px}.has-cover .gh-head-logo{color:#fff}.gh-head-logo img{max-height:40px}.gh-head-menu{display:flex;align-items:center;margin-top:1px;font-weight:500}.gh-head-menu .nav{flex-wrap:wrap;gap:32px;list-style:none;margin:0;padding:0}.gh-head-menu .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-head-menu .nav li{margin:0;padding:0}.gh-head-menu .nav a{line-height:1.7;color:inherit}.gh-head-menu .nav a:hover{opacity:.9}.gh-head-menu .nav-more-toggle{position:relative;width:30px;height:30px;margin:0 -6px;padding:0;font-size:inherit;background-color:transparent;text-transform:inherit}.gh-head-menu .nav-more-toggle svg{width:24px;height:24px}@media (min-width:992px){body:not(.is-dropdown-loaded) .gh-head-menu .nav>li{opacity:0}}.gh-dropdown{position:absolute;top:100%;right:-16px;z-index:90;width:200px;padding:12px 0;margin-top:24px;opacity:0;visibility:hidden;text-align:left;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);transform:translate3d(0,6px,0);transition:opacity .3s,transform .2s}.is-head-middle-logo .gh-dropdown{right:auto;left:-24px}.is-dropdown-mega .gh-dropdown{display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:column;-moz-column-gap:40px;column-gap:40px;min-width:320px;padding:20px 32px}.is-dropdown-open .gh-dropdown{opacity:1;visibility:visible;transform:translateY(0)}.gh-head-menu .gh-dropdown li a{display:block;padding:6px 20px;color:#15171a}.is-dropdown-mega .gh-dropdown li a{padding:8px 0}.gh-social{display:flex;align-items:center;gap:20px}.gh-social-link{line-height:0;color:inherit}.gh-social-link:hover{opacity:.9}.gh-social-link svg{width:18px;height:18px}.gh-head-actions{display:flex;justify-content:flex-end;align-items:center;gap:24px;list-style:none;text-align:right}.gh-head-members{display:flex;gap:20px;align-items:center}.gh-head-link{font-weight:500;color:inherit}.gh-head-button{display:inline-flex;justify-content:center;align-items:center;padding:8px 20px;height:44px;font-weight:600;letter-spacing:-.005em;font-size:1.6rem;border-radius:48px;color:#fff;background:var(--ghost-accent-color)}.has-cover .gh-head-button{color:var(--color-darkgrey);background:#fff}@media (max-width:767px){.gh-head-members{flex-direction:column-reverse;gap:16px;width:100%}}.gh-search{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;cursor:pointer;background-color:transparent;border:0;outline:none}.gh-search:hover{opacity:.9}.gh-head-brand .gh-search{margin-right:8px}.gh-head-actions .gh-search{margin-right:-4px}@media (max-width:767px){.gh-head-actions .gh-search{display:none}}@media (min-width:768px){.gh-head-brand .gh-search{display:none}}.gh-burger{position:relative;display:none;width:30px;height:30px;padding:0;margin-right:-3px;cursor:pointer;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.gh-burger:after,.gh-burger:before{position:absolute;left:3px;width:24px;height:1px;content:"";background-color:var(--color-darkgrey);transition:all .2s cubic-bezier(.04,.04,.12,.96) .1008s}.has-cover .gh-burger:after,.has-cover .gh-burger:before{background-color:#fff}.gh-burger:before{top:11px}.gh-burger:after{bottom:11px}.gh-head-open .gh-burger:before{top:15px;transform:rotate(45deg)}.gh-head-open .gh-burger:after{bottom:14px;transform:rotate(-45deg)}@media (max-width:767px){#gh-head{height:64px}#gh-head .gh-head-inner{grid-template-rows:auto 1fr auto;grid-template-columns:1fr;gap:48px}#gh-head .gh-head-brand{display:grid;grid-template-columns:1fr auto auto;grid-column-start:1;align-items:center;height:64px}#gh-head .gh-head-logo{font-size:2.2rem}#gh-head .gh-head-brand .gh-search{margin-left:-6px}#gh-head .gh-burger{display:block}#gh-head .gh-head-actions,#gh-head .gh-head-menu{position:fixed;justify-content:center;visibility:hidden;opacity:0}#gh-head .gh-head-menu{margin:0;transition:none;transform:translateY(0)}#gh-head .nav{gap:16px;align-items:center;line-height:1.4}#gh-head .nav a{font-size:2.6rem;font-weight:600;text-transform:none}#gh-head .nav li{opacity:0;transform:translateY(-4px)}#gh-head :is(.gh-head-button,.gh-head-link){opacity:0;transform:translateY(8px)}#gh-head .gh-head-button{width:100%;font-size:1.8rem;text-transform:none;opacity:0;transform:translateY(8px)}.gh-head-open #gh-head{position:fixed;inset:0;z-index:3999999;height:100%;overflow-y:scroll;-webkit-overflow-scrolling:touch}.gh-head-open.has-cover #gh-head,.gh-head-open.has-cover #gh-head .gh-head-actions{background-color:var(--ghost-accent-color)}.gh-head-open #gh-head .gh-head-actions,.gh-head-open #gh-head .gh-head-menu{position:static;visibility:visible;opacity:1}.gh-head-open #gh-head .nav{display:flex;flex-direction:column}.gh-head-open #gh-head .nav li{opacity:1;transition:transform .2s,opacity .2s;transform:translateY(0)}.gh-head-open #gh-head .gh-head-actions{position:sticky;right:0;bottom:0;left:0;display:inline-flex;flex-direction:column;gap:12px;align-items:center;padding:max(4vmin,20px) 0 max(4vmin,28px);background-color:#fff}.gh-head-open #gh-head :is(.gh-head-button,.gh-head-link){opacity:1;transition:transform .4s,opacity .4s;transition-delay:.2s;transform:translateY(0)}.gh-head-open #gh-head .gh-head-link{transition-delay:.4s}}.post-feed{position:relative;display:grid;gap:4.8vmin 4vmin;grid-template-columns:repeat(6,1fr);padding:max(4.8vmin,36px) 0 0}:is(.tag-template,.author-template) .post-feed{margin-top:4vmin}@media (max-width:991px){.post-feed{grid-template-columns:1fr 1fr}}@media (max-width:767px){.post-feed{grid-template-columns:1fr;grid-gap:40px}}.post-card{position:relative;grid-column:span 2;display:flex;flex-direction:column;background-size:cover;word-break:break-word}.post-card-image-link{position:relative;overflow:hidden;display:block;margin-bottom:32px}.post-card-image-link:after{content:"";display:block;padding-bottom:55%}.post-card[class*=post-access-] .post-card-image-link:after{background-color:rgba(0,0,0,.5);backdrop-filter:blur(3px)}.post-card.keep-ratio[class*=post-access-] .post-card-image-link:after{position:absolute;inset:0;padding-bottom:0}.post-card.keep-ratio:not(.post-card-large):not(.post-card-full) .post-card-image-link:after{padding-bottom:0}.post-card-image{position:absolute;inset:0;width:100%;height:100%;background:var(--color-lightgrey) no-repeat center center;-o-object-fit:cover;object-fit:cover}.post-card.keep-ratio:not(.post-card-large):not(.post-card-full) .post-card-image{position:static}.post-card-access{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;gap:4px;font-size:1.5rem;font-weight:600;color:#fff}.post-card-content-link{position:relative;display:block;color:var(--color-darkgrey)}.post-card-content-link:hover{text-decoration:none}.post-feed .no-image .post-card-content-link{padding:0}.no-image .post-card-header{margin-top:0}.post-card-tags{display:flex;align-items:center;gap:12px;margin:0 0 10px;color:var(--color-secondary-text);font-size:1.4rem;font-weight:600;letter-spacing:-.005em;line-height:1}.post-card-featured{position:relative;display:flex;align-items:center;gap:3px;padding-left:18px;color:var(--ghost-accent-color)}.post-card-featured svg{position:absolute;left:0}.post-card-title{margin:0;font-size:2.6rem;font-weight:800;line-height:1.2}.post-card-content-link:hover .post-card-title{opacity:.9}.no-image .post-card-title{margin-top:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .post-card-title{font-family:var(--gh-font-heading,var(--font-serif));letter-spacing:-.005em}.post-card-title svg{margin-top:-3px;margin-left:-1px}.post-card-content{flex-grow:1;display:flex;flex-direction:column}.post-card-excerpt{display:-webkit-box;overflow-y:hidden;margin-top:12px;max-width:720px;font-size:1.6rem;line-height:1.5;-webkit-line-clamp:3;-webkit-box-orient:vertical;word-break:break-word}.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .post-card-excerpt{font-family:var(--gh-font-body,var(--font-sans))}.post-card:not(.post-card-large):not(.post-card-full):not(.dynamic):not(.no-image) .post-card-excerpt{-webkit-line-clamp:2}:is(.tag-template,.author-template) .post-card-excerpt{margin-top:6px}:is(.tag-template,.author-template) .post-card-large .post-card-excerpt{display:block;overflow-y:auto}.post-card-meta{margin-top:12px;padding:0;font-size:1.3rem;color:var(--color-secondary-text)}.post-card-meta,.post-card-meta>*{display:flex;align-items:center;gap:6px}.post-card-meta>*+:not(script):before{width:2px;height:2px;content:"";background-color:var(--color-secondary-text);border-radius:50%}.post-card-meta .sep{margin:0 4px}.author-profile-image{display:block;width:100%;height:100%;background:#1a1a1a;border-radius:100%;-o-object-fit:cover;object-fit:cover}.author-list{display:flex;margin:0 0 0 4px;padding:0;list-style:none}.author-list-item{position:relative;flex-shrink:0;margin:0;padding:0}@media (min-width:1001px){.post-card-large{grid-column:span 6;display:grid;grid-gap:4vmin;grid-template-columns:repeat(3,1fr);border-top:0}.post-card-large:not(.no-image) .post-card-header{margin-top:0}.post-card-large .post-card-image-link{position:relative;grid-column:span 2;margin-bottom:0}.post-card-large .post-card-content{grid-column:span 1}.post-card-large.no-image .post-card-content{grid-column:span 2}.post-card-large .post-card-image{position:absolute;width:100%;height:100%}.post-card-large .post-card-tags{margin-bottom:12px}.post-card-large .post-card-title{margin-top:0;font-size:4.4rem;line-height:1.05}.post-card-large .post-card-excerpt{margin-top:16px}.post-card-full{grid-column:span 6}.post-card-full .post-card-image-link{margin-bottom:40px}.post-card-full .post-card-tags{margin-bottom:14px}.post-card-full .post-card-title{font-size:6.4rem;line-height:.95}.post-card-full .post-card-excerpt{margin-top:20px;font-size:1.8rem}.post-card-large+.post-card-large:nth-child(2n){margin:32px 0}.post-card-large+.post-card-large:nth-child(2n) .post-card-content{order:-1}.post-card.dynamic{grid-column:span 3}.post-card.dynamic .post-card-title{font-size:3rem}}.pagination{display:none;grid-template-columns:1fr auto 1fr;align-items:center;margin-top:8vmin}html.no-infinite-scroll .pagination{display:grid}.pagination a{font-size:1.7rem;font-weight:600}.pagination .page-number{grid-column-start:2;color:var(--color-secondary-text)}.pagination .older-posts{grid-column-start:3;text-align:right}@media (max-width:767px){.pagination .page-number{display:none}}.article{word-break:break-word}.post-template .article{padding:max(8vmin,40px) 0 max(8vmin,64px)}.post-template .article-header{padding:0 0 max(6.4vmin,40px)}.page-template .article-header{padding:max(12vmin,64px) 0 max(3.2vmin,28px)}.article-tag{margin-bottom:16px;font-size:1.6rem}.article-tag a{color:var(--color-secondary-text)}.article-title{margin-bottom:0;font-size:clamp(3.2rem,5vw,5.2rem);font-weight:800;line-height:1.05;color:var(--color-darkgrey)}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .article-title{font-family:var(--gh-font-heading,var(--font-serif))}.article-excerpt{margin-top:20px;max-width:720px;font-size:2rem;line-height:1.45;color:var(--color-darkgrey)}.gh-canvas .article-image{grid-column:wide-start/wide-end;width:100%;margin:max(6.4vmin,40px) 0 0}.image-full .article-image{grid-column:full-start/full-end}.image-small .article-image{grid-column:main-start/main-end}.gh-canvas .article-image img{display:block;margin-left:auto;margin-right:auto;width:100%}@media (max-width:767px){.article-excerpt{margin-top:14px;font-size:1.7rem}}.gh-canvas,.kg-width-full.kg-content-wide{--gap:max(4vmin, 20px);--main:min(var(--content-width, 720px), 100% - 2 * var(--gap));--wide:minmax(0, calc(.5 * (var(--container-width, 1200px) - var(--content-width, 720px))));--full:minmax(var(--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-start/main-end}.kg-content-wide>div,.kg-width-wide{grid-column:wide-start/wide-end}.kg-width-full{grid-column:full-start/full-end}.kg-width-full img{width:100%}.gh-content>*+*{margin-top:max(3.2vmin,24px);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]{margin:0;color:var(--color-darkgrey)}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-content>[id]{font-family:var(--gh-font-heading,var(--font-serif))}.gh-content>[id]:not(:first-child){margin:2em 0 0}.gh-content>[id]+*{margin-top:1.5rem!important}.gh-content>blockquote,.gh-content>hr{position:relative;margin-top:max(4.8vmin,32px)}.gh-content>blockquote+*,.gh-content>hr+*{margin-top:max(4.8vmin,32px)!important}.gh-content a{color:var(--ghost-accent-color);text-decoration:underline;word-break:break-word}.gh-content>blockquote:not([class]),.gh-content>dl,.gh-content>ol,.gh-content>p,.gh-content>ul{font-family:var(--gh-font-body,var(--font-serif));font-weight:400;font-size:2rem;line-height:1.6em}.gh-content>p img{margin:0 auto}.page-template .gh-content:only-child>:first-child:not(.kg-width-full){margin-top:max(12vmin,64px)}.page-template .gh-content>:last-child:not(.kg-width-full){margin-bottom:max(12vmin,64px)}.gh-content .kg-callout-card .kg-callout-text,.gh-content .kg-toggle-card .kg-toggle-content>ol,.gh-content .kg-toggle-card .kg-toggle-content>p,.gh-content .kg-toggle-card .kg-toggle-content>ul{font-family:var(--font-serif);font-weight:400;font-size:1.9rem;line-height:1.6em}.gh-content .kg-product-card .kg-product-card-description>ol,.gh-content .kg-product-card .kg-product-card-description>p,.gh-content .kg-product-card .kg-product-card-description>ul{font-size:1.7rem;line-height:1.6em}.gh-content .kg-callout-card .kg-callout-emoji{font-size:2.1rem;line-height:1.4em}.gh-content .kg-toggle-card .kg-toggle-heading-text{font-size:2rem}.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-callout-card .kg-callout-text,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-card .kg-toggle-content>ol,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-card .kg-toggle-content>p,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-card .kg-toggle-content>ul,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>blockquote,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>dl,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ol,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>p,.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ul{font-family:var(--gh-font-body,var(--font-sans))}.gh-content .kg-product-card .kg-product-card-description>ol,.gh-content .kg-product-card .kg-product-card-description>ul,.gh-content .kg-toggle-card .kg-toggle-content>ol,.gh-content .kg-toggle-card .kg-toggle-content>ul,.gh-content>dl,.gh-content>ol,.gh-content>ul{padding-left:1.9em}.gh-content>blockquote:not([class]){position:relative;font-style:italic;padding:0}.gh-content>blockquote:not([class]):before{content:"";position:absolute;left:-1.5em;top:0;bottom:0;width:.3rem;background:var(--ghost-accent-color)}.gh-content :not(pre)>code{vertical-align:middle;padding:.15em .4em;border:1px solid #e1eaef;font-weight:400!important;font-size:.9em;line-height:1em;color:#15171a;background:#f0f6f9;border-radius:.25em}.gh-content pre{overflow:auto;padding:16px 20px;color:var(--color-wash);font-size:1.4rem;line-height:1.5em;background:var(--color-darkgrey);border-radius:5px;box-shadow:0 2px 6px -2px rgba(0,0,0,.1),0 0 1px rgba(0,0,0,.4)}.gh-content ol ol li{list-style-type:lower-alpha}.gh-content ol ol ol li{list-style-type:lower-roman}@media (max-width:650px){.gh-content .kg-callout-card .kg-callout-text,.gh-content .kg-toggle-card .kg-toggle-content>ol,.gh-content .kg-toggle-card .kg-toggle-content>p,.gh-content .kg-toggle-card .kg-toggle-content>ul,.gh-content>blockquote:not([class]),.gh-content>dl,.gh-content>ol,.gh-content>p,.gh-content>ul{font-size:1.8rem}.gh-content .kg-product-card .kg-product-card-description>ol,.gh-content .kg-product-card .kg-product-card-description>p,.gh-content .kg-product-card .kg-product-card-description>ul{font-size:1.6rem}.gh-content blockquote:not([class]):before{left:min(-4vmin,-20px)}}.gh-content .kg-card+:not(.kg-card),.gh-content :not(.kg-card):not([id])+.kg-card{margin-top:6vmin}.kg-embed-card{display:flex;flex-direction:column;align-items:center;width:100%}.gh-content iframe[src*="kickstarter.com"],.gh-content iframe[src*="player.vimeo.com"],.gh-content iframe[src*="youtube-nocookie.com"],.gh-content iframe[src*="youtube.com"],.kg-embed-card iframe[src*="kickstarter.com"],.kg-embed-card iframe[src*="player.vimeo.com"],.kg-embed-card iframe[src*="youtube-nocookie.com"],.kg-embed-card iframe[src*="youtube.com"]{aspect-ratio:16/9;width:100%;height:auto}.kg-image-card img{margin:auto}.gh-feature-image,.kg-gallery-image,.kg-image[width][height]{cursor:pointer}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-toggle-card .kg-toggle-heading-text{font-family:var(--gh-font-heading,var(--font-serif))}.gh-content .kg-callout-card-accent a{text-decoration:underline}.kg-blockquote-alt{font-family:var(--font-serif);color:var(--color-midgrey)}.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .kg-blockquote-alt{font-family:var(--gh-font-body,var(--font-sans))}.kg-card.kg-header-card.kg-style-dark{background:var(--color-darkgrey)}.kg-header-card.kg-style-light h2.kg-header-card-header{color:#000}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-header-card h2.kg-header-card-header{font-family:var(--gh-font-heading,var(--font-serif))}figcaption{padding:1.5rem 1.5rem 0;text-align:center;color:rgba(0,0,0,.5);font-size:1.3rem;line-height:1.4em}figcaption strong{color:rgba(0,0,0,.8)}figcaption a{text-decoration:underline}iframe.instagram-media{margin:6vmin auto 0!important}iframe.instagram-media+script+:not([id]){margin-top:6vmin}.kg-width-full.kg-card-hascaption{display:grid;grid-template-columns:inherit}.kg-width-wide.kg-card-hascaption img{grid-column:wide-start/wide-end}.kg-width-full.kg-card-hascaption img{grid-column:1/-1}.kg-width-full.kg-card-hascaption figcaption{grid-column:main-start/main-end}.article-comments{margin:6vmin 0 0}.footnotes-sep{margin-bottom:30px}.footnotes{font-size:1.5rem}.footnotes p{margin:0}.footnote-backref{font-size:1.2rem;font-weight:700;text-decoration:none!important;box-shadow:none!important}.gh-content table:not(.gist table){display:inline-block;overflow-x:auto;max-width:100%;width:auto;border-spacing:0;border-collapse:collapse;font-family:var(--font-sans);font-size:1.6rem;white-space:nowrap;vertical-align:top;-webkit-overflow-scrolling:touch;background:radial-gradient(ellipse at left,rgba(0,0,0,.2),transparent 75%) 0,radial-gradient(ellipse at right,rgba(0,0,0,.2),transparent 75%) 100%;background-attachment:scroll,scroll;background-size:10px 100%,10px 100%;background-repeat:no-repeat}.gh-content table:not(.gist table) td:first-child{background-image:linear-gradient(90deg,#fff 50%,hsla(0,0%,100%,0));background-size:20px 100%;background-repeat:no-repeat}.gh-content table:not(.gist table) td:last-child{background-image:linear-gradient(270deg,#fff 50%,hsla(0,0%,100%,0));background-position:100% 0;background-size:20px 100%;background-repeat:no-repeat}.gh-content table:not(.gist table) th{color:var(--color-darkgrey);font-size:1.2rem;font-weight:700;letter-spacing:.2px;text-align:left;text-transform:uppercase;background-color:#f4f8fb}.gh-content table:not(.gist table) td,.gh-content table:not(.gist table) th{padding:6px 12px;border:1px solid #e3edf3}.article-byline{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:min(24px,5.6vmin) 0 0}.gh-button-share{display:inline-flex;align-items:center;flex-shrink:0;padding:.5em 1.2em;font-size:1.4rem;font-weight:600;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;white-space:nowrap;text-decoration:none}.gh-button-share:hover{border-color:rgba(0,0,0,.5)}html.dark-mode .gh-button-share{color:hsla(0,0%,100%,.85);border-color:hsla(0,0%,100%,.15)}html.dark-mode .gh-button-share:hover{border-color:hsla(0,0%,100%,.5)}.article-byline-content{flex-grow:1;display:flex;align-items:center}.article-byline-content .author-list{justify-content:flex-start;padding:0 14px 0 0}.article-byline-meta{color:var(--color-secondary-text);font-size:1.4rem;line-height:1.2em}.article-byline-meta .author-name{margin:0 0 6px;font-size:1.7rem;font-weight:700;letter-spacing:0}.article-byline-meta .bull{display:inline-block;margin:0 2px}.author-avatar{display:block;overflow:hidden;margin:0 -4px;width:min(56px,13.6vmin);height:min(56px,13.6vmin);border:2px solid #fff;border-radius:50%;background-color:var(--color-border)}.page-template .article-title{margin-bottom:0}@media (max-width:767px){.article-byline-content{flex-direction:column;align-items:flex-start;gap:16px}.article-byline-content .author-list{padding-right:12px}.article-byline-meta .author-name{margin-bottom:4px}}.footer-cta{position:relative;text-align:center}.footer-cta-title{margin:0 0 min(24px,6.4vmin);font-size:clamp(2.6rem,5vw,3.8rem);font-weight:800}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .footer-cta-title{font-family:var(--gh-font-heading,var(--font-serif))}.footer-cta-button{position:relative;display:inline-flex;align-items:center;justify-content:space-between;width:100%;max-width:500px;padding:5px 5px 5px 15px;font-size:1.7rem;color:var(--color-secondary-text);background:#fff;border:1px solid var(--color-border);border-radius:8px;transition:border-color .2s}.footer-cta-button:hover{border-color:#000}.footer-cta-button span{display:inline-block;padding:9px 15px;color:#fff;font-size:1.6rem;font-weight:600;letter-spacing:-.005em;background:var(--ghost-accent-color);border-radius:6px}.read-more-wrap{margin-top:2.4vmin}.footer-cta+.read-more-wrap{margin-top:max(12vmin,72px)}.read-more{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:4vmin}.read-more .post-card-tags{display:none}@media (max-width:1000px){.read-more{grid-template-columns:repeat(4,1fr)}.read-more .post-card:nth-child(3){display:none}}@media (max-width:700px){.read-more{grid-template-columns:repeat(2,1fr)}.read-more .post-card:nth-child(2){display:none}}.comments{display:flex;flex-direction:column;align-items:center;margin:60px 0 44px}.comments-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:32px;width:100%;max-width:720px}.comments h2{width:100%;max-width:720px;font-weight:800;font-size:3.4rem}.comments .comment-count{color:var(--color-midgrey);font-weight:600;white-space:nowrap}.comments #ghost-comments-root{width:100%;max-width:720px}.author-profile-pic{display:block;width:80px;height:80px;-o-object-fit:cover;object-fit:cover;margin:0 0 2rem;background:#1a1a1a;border-radius:50%}.author-profile-footer{margin-top:16px}.author-profile-location{font-weight:700}.author-profile-meta{display:flex;gap:12px}.author-profile-social-link{font-size:1.3rem;color:var(--color-secondary-text)}.author-profile-social-link:hover{color:var(--color-darkgrey)}.author-profile-social-link svg{width:16px;height:16px}@media (min-width:1001px){.author-template .post-card-large .post-card-content:only-child{grid-column:span 2;max-width:640px}}.tag-template .post-card-large .post-card-image-link{grid-column:2/span 2;order:2}.tag-template .post-card-large .post-card-content{order:1}@media (min-width:1001px){.tag-template .post-card-large .post-card-content:only-child{grid-column:span 2;max-width:640px}}.error-content{padding:14vw 4vw 2vw}.error-message{padding-bottom:10vw;text-align:center}.error-code{margin:0;font-size:12vw;line-height:1em;letter-spacing:-5px}.error-description{margin:0;color:var(--color-secondary-text);font-size:3.2rem;line-height:1.3em;letter-spacing:-.005em;font-weight:400}.error-link{display:inline-block;margin-top:5px}@media (min-width:940px){.error-content .post-card{margin-bottom:0;padding-bottom:0;border-bottom:none}}@media (max-width:800px){.error-content{padding-top:24vw}.error-code{font-size:11.2rem}.error-message{padding-bottom:16vw}.error-description{margin:5px 0 0;font-size:1.8rem}}@media (max-width:500px){.error-content{padding-top:28vw}.error-message{padding-bottom:14vw}}.site-footer{position:relative;margin:max(12vmin,64px) 0 0;padding-top:48px;padding-bottom:140px;color:#fff;background:#000}.page-template .site-footer{margin-top:0}.site-footer .inner{display:grid;grid-gap:40px;grid-template-columns:auto 1fr auto;align-items:center;color:hsla(0,0%,100%,.7);font-size:1.3rem}.site-footer-center{display:flex;flex-direction:column;align-items:center;gap:16px}.site-footer-social-links{display:flex;gap:20px}.site-footer-social-links a{display:inline-flex}.site-footer-social-links svg{width:16px;height:16px}.site-footer .copyright a{color:#fff;letter-spacing:-.015em;font-weight:500}.site-footer a{color:hsla(0,0%,100%,.7)}.site-footer a:hover{color:#fff;text-decoration:none}.site-footer-nav ul{display:flex;justify-content:center;flex-wrap:wrap;margin:0;padding:0;list-style:none}.site-footer-nav li{display:inline-flex;align-items:center;padding:0;margin:0;line-height:2em}.site-footer-nav a{position:relative;display:inline-flex;align-items:center;margin-left:10px}.site-footer-nav li:not(:first-child) a:before{content:"";display:block;width:2px;height:2px;margin:0 10px 0 0;background:#fff;border-radius:100%}@media (max-width:767px){.site-footer .inner{max-width:500px;grid-template-columns:1fr;grid-gap:0;text-align:center}.site-footer .copyright,.site-footer .copyright a{color:#fff;font-size:1.5rem}.site-footer .copyright,.site-footer-center{margin-bottom:16px}}html.dark-mode body{color:hsla(0,0%,100%,.75);background:var(--color-darkmode)}html.dark-mode img{opacity:.9}html.dark-mode kbd{background:#0c0d0e}html.dark-mode figcaption a{color:#fff}html.dark-mode body:not(.has-cover) .gh-head{background:var(--color-darkmode);color:#fff}html.dark-mode .gh-burger:after,html.dark-mode .gh-burger:before{background-color:#fff}html.dark-mode .site-header-content{color:#fff}html.dark-mode .site-header-cover{opacity:1}html.dark-mode .post-card-image{background:var(--color-darkmode)}html.dark-mode :is(.post-card-tags,.post-card-meta,.article-tag a,.byline-meta-content,.pagination .page-number){color:var(--color-secondary-text)}html.dark-mode .post-card-featured,html.dark-mode .post-card-title{color:#fff}html.dark-mode .post-card-excerpt{color:var(--color-secondary-text)}html.dark-mode .article-title,html.dark-mode .author-profile-location,html.dark-mode .author-profile-social-link:hover,html.dark-mode .pagination a{color:#fff}html.dark-mode .article-excerpt{color:var(--color-secondary-text)}html.dark-mode .post-full-image{background-color:#131416}html.dark-mode .author-avatar{border-color:var(--color-darkmode);background-color:#131416}html.dark-mode .author-profile-image{opacity:1}html.dark-mode .author-profile-image path{fill:var(--color-darkmode)}html.dark-mode .article-byline-meta .author-name a{color:#fff}html.dark-mode .no-image .author-social-link a{color:hsla(0,0%,100%,.75)}html.dark-mode .gh-content>[id]{color:hsla(0,0%,100%,.9)}html.dark-mode .gh-content pre{background:#000}html.dark-mode .gh-content :not(pre)>code{background:#0e0f11;border-color:#131416;color:var(--color-wash)}:where(html.dark-mode) .gh-content a{color:#fff}html.dark-mode .gh-content code{color:#fff;background:#000}html.dark-mode hr{border-top-color:#424242}html.dark-mode .gh-content hr:after{background:#131416;box-shadow:var(--color-darkmode) 0 0 0 5px}html.dark-mode figcaption{color:hsla(0,0%,100%,.6)}html.dark-mode .gh-content table:not(.gist table) td:first-child{background-image:linear-gradient(to right,var(--color-darkmode) 50%,rgba(21,23,25,0) 100%)}html.dark-mode .gh-content table:not(.gist table) td:last-child{background-image:linear-gradient(to left,var(--color-darkmode) 50%,rgba(21,23,25,0) 100%)}html.dark-mode .gh-content table:not(.gist table) th{color:hsla(0,0%,100%,.85);background-color:#282b2f}html.dark-mode .gh-content table:not(.gist table) td,html.dark-mode .gh-content table:not(.gist table) th{border:1px solid #282b2f}html.dark-mode .gh-content :is(input,textarea){color:#000}html.dark-mode .site-archive-header .no-image{color:hsla(0,0%,100%,.9);background:var(--color-darkmode)}html.dark-mode .kg-header-card.kg-style-dark{background:#000}html.dark-mode .kg-header-card.kg-style-light{background:#0b0c0e}html.dark-mode .kg-header-card h2.kg-header-card-header,html.dark-mode .kg-header-card h3.kg-header-card-subheader{color:#fff}html.dark-mode .kg-bookmark-card a.kg-bookmark-container,html.dark-mode .kg-bookmark-card a.kg-bookmark-container:hover{background:var(--color-darkmode)!important;color:#fff!important}html.dark-mode .footer-cta-title{color:#fff}@media (max-width:767px){html.dark-mode .gh-head-open:not(.has-cover) #gh-head,html.dark-mode .gh-head-open:not(.has-cover) #gh-head .gh-head-actions{background:var(--color-darkmode)}}@media (prefers-color-scheme:dark){html.auto-color body{color:hsla(0,0%,100%,.75);background:var(--color-darkmode)}html.auto-color img{opacity:.9}html.auto-color kbd{background:#0c0d0e}html.auto-color figcaption a{color:#fff}html.auto-color body:not(.has-cover) .gh-head{background:var(--color-darkmode);color:#fff}html.auto-color .gh-burger:after,html.auto-color .gh-burger:before{background-color:#fff}html.auto-color .site-header-content{color:#fff}html.auto-color .site-header-cover{opacity:1}html.auto-color .post-card-image{background:var(--color-darkmode)}html.auto-color :is(.post-card-tags,.post-card-meta,.article-tag a,.byline-meta-content,.pagination .page-number){color:var(--color-secondary-text)}html.auto-color .post-card-featured,html.auto-color .post-card-title{color:#fff}html.auto-color .post-card-excerpt{color:var(--color-secondary-text)}html.auto-color .article-title,html.auto-color .author-profile-location,html.auto-color .author-profile-social-link:hover,html.auto-color .pagination a{color:#fff}html.auto-color .article-excerpt{color:var(--color-secondary-text)}html.auto-color .post-full-image{background-color:#131416}html.auto-color .author-avatar{border-color:var(--color-darkmode);background-color:#131416}html.auto-color .author-profile-image{opacity:1}html.auto-color .author-profile-image path{fill:var(--color-darkmode)}html.auto-color .article-byline-meta .author-name a{color:#fff}html.auto-color .gh-button-share{color:hsla(0,0%,100%,.85);border-color:hsla(0,0%,100%,.15)}html.auto-color .gh-button-share:hover{border-color:hsla(0,0%,100%,.5)}html.auto-color .no-image .author-social-link a{color:hsla(0,0%,100%,.75)}html.auto-color .gh-content>[id]{color:hsla(0,0%,100%,.9)}html.auto-color .gh-content pre{background:#000}html.auto-color .gh-content :not(pre)>code{background:#0e0f11;border-color:#131416;color:var(--color-wash)}:where(html.auto-color) .gh-content a{color:#fff}html.auto-color .gh-content code{color:#fff;background:#000}html.auto-color hr{border-top-color:#424242}html.auto-color .gh-content hr:after{background:#131416;box-shadow:var(--color-darkmode) 0 0 0 5px}html.auto-color figcaption{color:hsla(0,0%,100%,.6)}html.auto-color .gh-content table:not(.gist table) td:first-child{background-image:linear-gradient(to right,var(--color-darkmode) 50%,rgba(21,23,25,0) 100%)}html.auto-color .gh-content table:not(.gist table) td:last-child{background-image:linear-gradient(to left,var(--color-darkmode) 50%,rgba(21,23,25,0) 100%)}html.auto-color .gh-content table:not(.gist table) th{color:hsla(0,0%,100%,.85);background-color:#282b2f}html.auto-color .gh-content table:not(.gist table) td,html.auto-color .gh-content table:not(.gist table) th{border:1px solid #282b2f}html.auto-color .gh-content :is(input,textarea){color:#000}html.auto-color .site-archive-header .no-image{color:hsla(0,0%,100%,.9);background:var(--color-darkmode)}html.auto-color .kg-header-card.kg-style-dark{background:#000}html.auto-color .kg-header-card.kg-style-light{background:#0b0c0e}html.auto-color .kg-header-card h2.kg-header-card-header,html.auto-color .kg-header-card h3.kg-header-card-subheader{color:#fff}html.auto-color .kg-bookmark-card a.kg-bookmark-container,html.auto-color .kg-bookmark-card a.kg-bookmark-container:hover{background:var(--color-darkmode)!important;color:#fff!important}html.auto-color .footer-cta-title{color:#fff}@media (max-width:767px){html.auto-color .gh-head-open:not(.has-cover) #gh-head,html.auto-color .gh-head-open:not(.has-cover) #gh-head .gh-head-actions{background:var(--color-darkmode)}}}.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:#000}.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:#fff;-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:#fff;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-color:#fff #fff transparent transparent;border-style:solid;border-width:2px;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}/*# sourceMappingURL=screen.css.map */
@@ -1601,7 +1601,8 @@ except for when immediately preceeded by a heading */
1601
1601
  }
1602
1602
 
1603
1603
  .kg-image[width][height],
1604
- .kg-gallery-image {
1604
+ .kg-gallery-image,
1605
+ .gh-feature-image {
1605
1606
  cursor: pointer;
1606
1607
  }
1607
1608
 
@@ -1,50 +1,57 @@
1
1
  function lightbox(trigger) {
2
+ var getItem = function (image) {
3
+ var width = image.getAttribute('width');
4
+ var height = image.getAttribute('height');
5
+
6
+ // Images without dimensions in the markup, like feature images, are
7
+ // measured from the source the browser picked out of the srcset
8
+ var src = width && height ? image.getAttribute('src') : (image.currentSrc || image.getAttribute('src'));
9
+
10
+ return {
11
+ src: src,
12
+ msrc: src,
13
+ w: width || image.naturalWidth,
14
+ h: height || image.naturalHeight,
15
+ el: image,
16
+ };
17
+ };
18
+
2
19
  var onThumbnailsClick = function (e) {
3
20
  e.preventDefault();
4
21
 
22
+ var pswpElement = document.querySelectorAll('.pswp')[0];
23
+ if (!pswpElement) return false;
24
+
5
25
  var items = [];
6
26
  var index = 0;
7
27
 
8
- var prevSibling = e.target.closest('.kg-card').previousElementSibling;
28
+ // Feature images live outside the content, so they open on their own
29
+ var card = e.target.closest('.kg-card');
9
30
 
10
- while (prevSibling && (prevSibling.classList.contains('kg-image-card') || prevSibling.classList.contains('kg-gallery-card'))) {
11
- var prevItems = [];
31
+ if (card) {
32
+ var prevSibling = card.previousElementSibling;
12
33
 
13
- prevSibling.querySelectorAll('img').forEach(function (item) {
14
- prevItems.push({
15
- src: item.getAttribute('src'),
16
- msrc: item.getAttribute('src'),
17
- w: item.getAttribute('width'),
18
- h: item.getAttribute('height'),
19
- el: item,
20
- })
34
+ while (prevSibling && (prevSibling.classList.contains('kg-image-card') || prevSibling.classList.contains('kg-gallery-card'))) {
35
+ var prevItems = [];
21
36
 
22
- index += 1;
23
- });
24
- prevSibling = prevSibling.previousElementSibling;
37
+ prevSibling.querySelectorAll('img').forEach(function (item) {
38
+ prevItems.push(getItem(item));
25
39
 
26
- items = prevItems.concat(items);
40
+ index += 1;
41
+ });
42
+ prevSibling = prevSibling.previousElementSibling;
43
+
44
+ items = prevItems.concat(items);
45
+ }
27
46
  }
28
47
 
29
- if (e.target.classList.contains('kg-image')) {
30
- items.push({
31
- src: e.target.getAttribute('src'),
32
- msrc: e.target.getAttribute('src'),
33
- w: e.target.getAttribute('width'),
34
- h: e.target.getAttribute('height'),
35
- el: e.target,
36
- });
48
+ if (!card || e.target.classList.contains('kg-image')) {
49
+ items.push(getItem(e.target));
37
50
  } else {
38
51
  var reachedCurrentItem = false;
39
52
 
40
53
  e.target.closest('.kg-gallery-card').querySelectorAll('img').forEach(function (item) {
41
- items.push({
42
- src: item.getAttribute('src'),
43
- msrc: item.getAttribute('src'),
44
- w: item.getAttribute('width'),
45
- h: item.getAttribute('height'),
46
- el: item,
47
- });
54
+ items.push(getItem(item));
48
55
 
49
56
  if (!reachedCurrentItem && item !== e.target) {
50
57
  index += 1;
@@ -54,22 +61,16 @@ function lightbox(trigger) {
54
61
  });
55
62
  }
56
63
 
57
- var nextSibling = e.target.closest('.kg-card').nextElementSibling;
58
-
59
- while (nextSibling && (nextSibling.classList.contains('kg-image-card') || nextSibling.classList.contains('kg-gallery-card'))) {
60
- nextSibling.querySelectorAll('img').forEach(function (item) {
61
- items.push({
62
- src: item.getAttribute('src'),
63
- msrc: item.getAttribute('src'),
64
- w: item.getAttribute('width'),
65
- h: item.getAttribute('height'),
66
- el: item,
67
- })
68
- });
69
- nextSibling = nextSibling.nextElementSibling;
70
- }
64
+ if (card) {
65
+ var nextSibling = card.nextElementSibling;
71
66
 
72
- var pswpElement = document.querySelectorAll('.pswp')[0];
67
+ while (nextSibling && (nextSibling.classList.contains('kg-image-card') || nextSibling.classList.contains('kg-gallery-card'))) {
68
+ nextSibling.querySelectorAll('img').forEach(function (item) {
69
+ items.push(getItem(item));
70
+ });
71
+ nextSibling = nextSibling.nextElementSibling;
72
+ }
73
+ }
73
74
 
74
75
  var options = {
75
76
  bgOpacity: 0.9,
@@ -89,6 +90,22 @@ function lightbox(trigger) {
89
90
  }
90
91
 
91
92
  var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
93
+
94
+ // An image can be clicked before it has finished decoding, in which case
95
+ // there's nothing to measure yet — load it and correct the size after
96
+ gallery.listen('gettingData', function (i, item) {
97
+ if (item.w > 0 && item.h > 0) return;
98
+
99
+ var image = new Image();
100
+ image.onload = function () {
101
+ item.w = this.naturalWidth;
102
+ item.h = this.naturalHeight;
103
+ gallery.invalidateCurrItems();
104
+ gallery.updateSize(true);
105
+ };
106
+ image.src = item.src;
107
+ });
108
+
92
109
  gallery.init();
93
110
 
94
111
  return false;
@@ -104,6 +121,6 @@ function lightbox(trigger) {
104
121
 
105
122
  (function () {
106
123
  lightbox(
107
- '.kg-image-card > .kg-image[width][height], .kg-gallery-image > img'
124
+ '.kg-image-card > .kg-image[width][height], .kg-gallery-image > img, .gh-feature-image'
108
125
  );
109
126
  })();
@@ -2,7 +2,7 @@
2
2
  "name": "casper",
3
3
  "description": "A clean, minimal default theme for the Ghost publishing platform",
4
4
  "demo": "https://demo.ghost.io",
5
- "version": "5.12.2",
5
+ "version": "5.12.3",
6
6
  "engines": {
7
7
  "ghost": ">=5.0.0",
8
8
  "node": ">=22.12.0"
@@ -24,7 +24,7 @@
24
24
  "ship": "STATUS=$(git status --porcelain); echo $STATUS; if [ -z \"$STATUS\" ]; then git push --follow-tags; else echo \"Uncomitted changes found.\" && exit 1; fi",
25
25
  "postship": "git fetch && gulp release"
26
26
  },
27
- "packageManager": "pnpm@11.22.0",
27
+ "packageManager": "pnpm@11.24.0",
28
28
  "author": {
29
29
  "name": "Ghost Foundation",
30
30
  "email": "hello@ghost.org",
@@ -51,9 +51,9 @@
51
51
  "devDependencies": {
52
52
  "@tryghost/release-utils": "0.9.1",
53
53
  "@tryghost/theme-translations": "0.0.22",
54
- "autoprefixer": "10.5.2",
54
+ "autoprefixer": "10.5.4",
55
55
  "beeper": "2.1.0",
56
- "cssnano": "8.0.2",
56
+ "cssnano": "9.0.1",
57
57
  "gscan": "6.4.2",
58
58
  "gulp": "5.0.1",
59
59
  "gulp-concat": "2.6.1",
@@ -61,8 +61,8 @@
61
61
  "gulp-postcss": "10.0.0",
62
62
  "gulp-uglify": "3.0.2",
63
63
  "gulp-zip": "6.1.0",
64
- "inquirer": "14.0.2",
65
- "postcss": "8.5.23",
64
+ "inquirer": "14.2.0",
65
+ "postcss": "8.5.26",
66
66
  "postcss-color-mod-function": "4.1.1",
67
67
  "postcss-easy-import": "4.0.0",
68
68
  "pump": "3.0.4"
@@ -20,6 +20,7 @@ into the {body} tag of the default.hbs template --}}
20
20
  {{!-- This is a responsive image, it loads different sizes depending on device
21
21
  https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
22
22
  <img
23
+ class="gh-feature-image"
23
24
  srcset="{{img_url feature_image size="s"}} 300w,
24
25
  {{img_url feature_image size="m"}} 600w,
25
26
  {{img_url feature_image size="l"}} 1000w,
@@ -66,6 +66,7 @@ into the {body} tag of the default.hbs template --}}
66
66
  {{!-- This is a responsive image, it loads different sizes depending on device
67
67
  https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
68
68
  <img
69
+ class="gh-feature-image"
69
70
  srcset="{{img_url feature_image size="s"}} 300w,
70
71
  {{img_url feature_image size="m"}} 600w,
71
72
  {{img_url feature_image size="l"}} 1000w,
@@ -0,0 +1,28 @@
1
+ b-cov
2
+ *.seed
3
+ *.log
4
+ *.csv
5
+ *.dat
6
+ *.out
7
+ *.pid
8
+ *.gz
9
+
10
+ pids
11
+ logs
12
+ results
13
+
14
+ npm-debug.log
15
+ node_modules
16
+ package-lock.json
17
+
18
+ .idea/*
19
+ *.iml
20
+ projectFilesBackup
21
+
22
+ .DS_Store
23
+
24
+ dist/
25
+
26
+ config.json
27
+ changelog.md
28
+ changelog.md.bk