ghost 4.48.0 → 5.0.2
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.
- package/Gruntfile.js +24 -24
- package/README.md +3 -2
- package/content/themes/casper/assets/built/global.css +1 -1
- package/content/themes/casper/assets/built/global.css.map +1 -1
- package/content/themes/casper/assets/built/screen.css +1 -1
- package/content/themes/casper/assets/built/screen.css.map +1 -1
- package/content/themes/casper/assets/css/global.css +2 -2
- package/content/themes/casper/assets/css/screen.css +412 -664
- package/content/themes/casper/author.hbs +48 -35
- package/content/themes/casper/default.hbs +5 -23
- package/content/themes/casper/error-404.hbs +1 -1
- package/content/themes/casper/index.hbs +29 -22
- package/content/themes/casper/package.json +25 -37
- package/content/themes/casper/page.hbs +12 -12
- package/content/themes/casper/partials/icons/facebook.hbs +1 -1
- package/content/themes/casper/partials/icons/twitter.hbs +1 -1
- package/content/themes/casper/partials/post-card.hbs +26 -40
- package/content/themes/casper/post.hbs +54 -50
- package/content/themes/casper/tag.hbs +42 -47
- package/core/boot.js +18 -15
- package/core/bridge.js +24 -25
- package/core/built/assets/ghost-dark-b6e3268bcae976a8675b0d9ae54540f2.css +1 -0
- package/core/built/assets/ghost.min-a40c7b301c702bd84c2fae19366ab5d7.css +1 -0
- package/core/built/assets/{ghost.min-10ba0de3ecb93d63d62bb43ac11c740f.js → ghost.min-b37a2752b0abda202c14c948b8bc3587.js} +1138 -1212
- package/core/built/assets/icons/analytics.svg +14 -0
- package/core/built/assets/icons/calendar.svg +4 -1
- package/core/built/assets/icons/email-at.svg +1 -1
- package/core/built/assets/icons/email-name.svg +1 -1
- package/core/built/assets/icons/info.svg +1 -1
- package/core/built/assets/icons/twitter-logo.svg +3 -0
- package/core/built/assets/{vendor.min-97fd438f4772c5ec6bb30ad779b8530e.js → vendor.min-2bca41946dea27dc292428db605d466d.js} +99 -93
- package/core/cli/README.md +88 -0
- package/core/cli/command.js +129 -0
- package/core/cli/repl.js +32 -0
- package/core/cli/timetravel.js +87 -0
- package/core/frontend/apps/amp/lib/helpers/amp_content.js +10 -12
- package/core/frontend/apps/amp/lib/router.js +2 -3
- package/core/frontend/helpers/body_class.js +2 -2
- package/core/frontend/helpers/excerpt.js +0 -2
- package/core/frontend/helpers/get.js +23 -24
- package/core/frontend/helpers/ghost_head.js +104 -108
- package/core/frontend/helpers/navigation.js +0 -2
- package/core/frontend/helpers/prev_post.js +20 -26
- package/core/frontend/helpers/price.js +2 -2
- package/core/frontend/meta/author-url.js +2 -2
- package/core/frontend/meta/description.js +3 -3
- package/core/frontend/meta/excerpt.js +1 -2
- package/core/frontend/meta/generate-excerpt.js +2 -11
- package/core/frontend/meta/paginated-url.js +1 -1
- package/core/frontend/meta/rss-url.js +0 -1
- package/core/frontend/meta/url.js +4 -4
- package/core/frontend/services/data/entry-lookup.js +1 -1
- package/core/frontend/services/data/fetch-data.js +1 -1
- package/core/frontend/services/helpers/handlebars.js +11 -12
- package/core/frontend/services/proxy.js +11 -1
- package/core/frontend/services/rendering/context.js +1 -5
- package/core/frontend/services/rendering/format-response.js +9 -2
- package/core/frontend/services/rendering/index.js +0 -4
- package/core/frontend/services/rendering/render-entry.js +1 -1
- package/core/frontend/services/rendering/templates.js +15 -5
- package/core/frontend/services/routing/CollectionRouter.js +2 -2
- package/core/frontend/services/routing/EmailRouter.js +2 -2
- package/core/frontend/services/routing/ParentRouter.js +1 -1
- package/core/frontend/services/routing/PreviewRouter.js +3 -3
- package/core/frontend/services/routing/{config/v4.js → config.js} +3 -5
- package/core/frontend/services/routing/controllers/channel.js +0 -10
- package/core/frontend/services/routing/controllers/collection.js +0 -9
- package/core/frontend/services/routing/controllers/email-post.js +2 -7
- package/core/frontend/services/routing/controllers/entry.js +1 -3
- package/core/frontend/services/routing/controllers/index.js +2 -2
- package/core/frontend/services/routing/controllers/{preview.js → previews.js} +3 -8
- package/core/frontend/services/routing/controllers/static.js +1 -6
- package/core/frontend/services/routing/router-manager.js +38 -20
- package/core/frontend/services/rss/generate-feed.js +7 -9
- package/core/frontend/services/theme-engine/active.js +0 -8
- package/core/frontend/services/theme-engine/config/defaults.json +1 -3
- package/core/frontend/services/theme-engine/middleware/index.js +0 -1
- package/core/frontend/services/theme-engine/middleware/update-global-template-options.js +0 -69
- package/core/frontend/services/theme-engine/middleware/update-local-template-options.js +3 -6
- package/core/frontend/web/middleware/static-theme.js +14 -6
- package/core/frontend/web/routes.js +9 -9
- package/core/frontend/web/site.js +15 -18
- package/core/server/adapters/scheduling/post-scheduling/index.js +1 -1
- package/core/server/api/README.md +2 -6
- package/core/server/api/canary/authentication.js +4 -3
- package/core/server/api/canary/{email-preview.js → email-previews.js} +9 -8
- package/core/server/api/canary/index.js +14 -18
- package/core/server/api/canary/members.js +1 -13
- package/core/server/api/{v3/actions.js → canary/newsletters-public.js} +6 -6
- package/core/server/api/canary/newsletters.js +1 -13
- package/core/server/api/canary/notifications.js +17 -22
- package/core/server/api/canary/offers-public.js +28 -0
- package/core/server/api/canary/pages.js +1 -1
- package/core/server/api/canary/posts.js +4 -8
- package/core/server/api/canary/{preview.js → previews.js} +1 -1
- package/core/server/api/canary/schedules.js +1 -1
- package/core/server/api/canary/session.js +1 -1
- package/core/server/api/canary/settings-public.js +3 -1
- package/core/server/api/canary/settings.js +30 -16
- package/core/server/api/canary/utils/index.js +2 -4
- package/core/server/api/canary/utils/serializers/input/index.js +0 -4
- package/core/server/api/canary/utils/serializers/input/members.js +46 -17
- package/core/server/api/canary/utils/serializers/input/pages.js +0 -17
- package/core/server/api/canary/utils/serializers/input/posts.js +1 -28
- package/core/server/api/canary/utils/serializers/input/settings.js +61 -142
- package/core/server/api/canary/utils/serializers/input/tiers.js +56 -12
- package/core/server/api/canary/utils/serializers/output/authentication.js +2 -6
- package/core/server/api/canary/utils/serializers/output/index.js +2 -10
- package/core/server/api/canary/utils/serializers/output/mappers/index.js +1 -0
- package/core/server/api/canary/utils/serializers/output/mappers/newsletters.js +24 -0
- package/core/server/api/canary/utils/serializers/output/mappers/pages.js +1 -1
- package/core/server/api/canary/utils/serializers/output/mappers/posts.js +9 -7
- package/core/server/api/canary/utils/serializers/output/mappers/settings.js +5 -31
- package/core/server/api/canary/utils/serializers/output/members.js +18 -3
- package/core/server/api/canary/utils/serializers/output/offers.js +9 -1
- package/core/server/api/canary/utils/serializers/output/{preview.js → previews.js} +2 -2
- package/core/server/api/canary/utils/serializers/output/settings.js +6 -14
- package/core/server/api/canary/utils/serializers/output/site.js +0 -1
- package/core/server/api/canary/utils/serializers/output/tiers.js +35 -75
- package/core/server/api/canary/utils/serializers/output/utils/clean.js +5 -10
- package/core/server/api/canary/utils/serializers/output/utils/extra-attrs.js +0 -126
- package/core/server/api/canary/utils/serializers/output/utils/post-gating.js +1 -1
- package/core/server/api/canary/utils/serializers/output/utils/url.js +0 -5
- package/core/server/api/canary/utils/validators/input/index.js +2 -2
- package/core/server/api/canary/utils/validators/input/{passwordreset.js → password_reset.js} +2 -2
- package/core/server/api/canary/utils/validators/input/settings.js +2 -23
- package/core/server/api/canary/utils/validators/utils/json-schema.js +1 -2
- package/core/server/api/index.js +1 -7
- package/core/server/api/shared/serializers/input/utils/settings-key-group-mapper.js +2 -2
- package/core/server/api/shared/serializers/input/utils/settings-key-type-mapper.js +2 -4
- package/core/server/data/db/connection.js +0 -13
- package/core/server/data/exporter/table-lists.js +0 -3
- package/core/server/data/importer/importers/data/base.js +16 -7
- package/core/server/data/importer/importers/data/data-importer.js +38 -1
- package/core/server/data/importer/importers/data/newsletters.js +45 -0
- package/core/server/data/importer/importers/data/posts.js +40 -12
- package/core/server/data/importer/importers/data/products.js +68 -0
- package/core/server/data/importer/importers/data/settings.js +10 -10
- package/core/server/data/importer/importers/data/stripe-prices.js +59 -0
- package/core/server/data/importer/importers/data/stripe-products.js +61 -0
- package/core/server/data/migrations/utils/constants.js +3 -0
- package/core/server/data/migrations/utils/index.js +10 -0
- package/core/server/data/migrations/utils/migrations.js +156 -0
- package/core/server/data/migrations/utils/permissions.js +291 -0
- package/core/server/data/migrations/utils/schema.js +158 -0
- package/core/server/data/migrations/utils/settings.js +59 -0
- package/core/server/data/migrations/utils/tables.js +94 -0
- package/core/server/data/migrations/versions/1.25/01-final-v1.js +2 -0
- package/core/server/data/migrations/versions/1.25/02-noop.js +6 -0
- package/core/server/data/migrations/versions/2.37/01-final-v2.js +2 -0
- package/core/server/data/migrations/versions/3.41/01-final-v3.js +2 -0
- package/core/server/data/migrations/versions/4.0/22-solve-orphaned-webhooks.js +3 -9
- package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +2 -11
- package/core/server/data/migrations/versions/4.11/02-add-email-verification-required-setting.js +1 -1
- package/core/server/data/migrations/versions/4.12/02-fix-member-statuses.js +1 -1
- package/core/server/data/migrations/versions/4.14/02-fix-free-members-status-events.js +1 -1
- package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +1 -1
- package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +1 -1
- package/core/server/data/migrations/versions/4.35/2022-02-02-10-38-add-default-content-visibility-tiers-setting.js +1 -1
- package/core/server/data/migrations/versions/4.45/2022-04-21-02-55-add-notifications-key-entry-to-settings-table.js +1 -1
- package/core/server/data/migrations/versions/4.6/01-remove-comped-status.js +1 -1
- package/core/server/data/migrations/versions/4.7/03-add-labs-setting.js +1 -1
- package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +1 -1
- package/core/server/data/migrations/versions/4.9/06-add-comped-status.js +1 -1
- package/core/server/data/migrations/versions/4.9/07-update-comped-members-status-events.js +1 -1
- package/core/server/data/migrations/versions/5.0/2022-03-14-12-33-delete-duplicate-offer-redemptions.js +36 -0
- package/core/server/data/migrations/versions/5.0/2022-03-28-15-25-backfill-mrr-adjustments-for-offers.js +108 -0
- package/core/server/data/migrations/versions/5.0/2022-04-25-10-32-backfill-mrr-for-discounted-subscriptions.js +44 -0
- package/core/server/data/migrations/versions/5.0/2022-04-26-15-44-backfill-mrr-events-for-canceled-subscriptions.js +73 -0
- package/core/server/data/migrations/versions/5.0/2022-04-27-11-26-backfill-mrr-for-canceled-subscriptions.js +31 -0
- package/core/server/data/migrations/versions/5.0/2022-04-28-03-26-remove-author-id-column-from-posts-table.js +7 -0
- package/core/server/data/migrations/versions/5.0/2022-05-03-09-39-drop-nullable-subscribe-event-newsletter-id.js +4 -0
- package/core/server/data/migrations/versions/5.0/2022-05-04-15-24-map-existing-emails-to-default-newsletter.js +44 -0
- package/core/server/data/migrations/versions/5.0/2022-05-05-13-13-migrate-legacy-recipient-filters.js +30 -0
- package/core/server/data/migrations/versions/5.0/2022-05-05-13-29-add-newsletters-admin-integration-permission-roles.js +20 -0
- package/core/server/data/migrations/versions/5.0/2022-05-05-15-17-drop-oauth-table.js +3 -0
- package/core/server/data/migrations/versions/5.0/2022-05-06-08-16-cleanup-client-subscriber-permissions.js +68 -0
- package/core/server/data/migrations/versions/5.0/2022-05-06-13-22-add-frontend-integration.js +68 -0
- package/core/server/data/migrations/versions/5.0/2022-05-09-10-00-drop-members-subscribed-column.js +18 -0
- package/core/server/data/migrations/versions/5.0/2022-05-09-14-17-cleanup-invalid-users-status.js +17 -0
- package/core/server/data/migrations/versions/5.0/2022-05-10-08-33-drop-members-analytics-table.js +3 -0
- package/core/server/data/migrations/versions/5.0/2022-05-10-14-57-cleanup-invalid-posts-status.js +17 -0
- package/core/server/data/migrations/versions/5.0/2022-05-11-12-08-drop-webhooks-status-column.js +18 -0
- package/core/server/data/migrations/versions/5.0/2022-05-11-13-12-rename-settings.js +51 -0
- package/core/server/data/migrations/versions/5.0/2022-05-11-16-36-remove-unused-settings.js +54 -0
- package/core/server/data/migrations/versions/5.0/2022-05-12-10-29-add-newsletter-permissions-for-editors-and-authors.js +20 -0
- package/core/server/data/migrations/versions/5.0/2022-05-12-13-51-add-label-permissions-for-authors.js +12 -0
- package/core/server/data/migrations/versions/5.0/2022-05-13-11-38-drop-none-email-recipient-filter.js +28 -0
- package/core/server/data/migrations/versions/5.0/2022-05-21-00-00-regenerate-posts-html.js +70 -0
- package/core/server/data/schema/commands.js +35 -3
- package/core/server/data/schema/default-settings/default-settings.json +2 -159
- package/core/server/data/schema/fixtures/fixture-manager.js +11 -2
- package/core/server/data/schema/fixtures/fixtures.json +16 -7
- package/core/server/data/schema/schema.js +26 -38
- package/core/server/data/schema/validator.js +2 -0
- package/core/server/ghost-server.js +34 -64
- package/core/server/lib/image/gravatar.js +25 -9
- package/core/server/models/api-key.js +3 -26
- package/core/server/models/base/plugins/bulk-operations.js +14 -6
- package/core/server/models/integration.js +17 -0
- package/core/server/models/member.js +8 -4
- package/core/server/models/newsletter.js +27 -0
- package/core/server/models/post.js +30 -32
- package/core/server/models/relations/authors.js +74 -100
- package/core/server/models/settings.js +6 -2
- package/core/server/models/webhook.js +2 -1
- package/core/server/run-update-check.js +1 -1
- package/core/server/services/api-version-compatibility/index.js +24 -18
- package/core/server/services/api-version-compatibility/legacy-api-path-match.js +23 -0
- package/core/server/services/api-version-compatibility/mw-version-rewrites.js +36 -0
- package/core/server/services/auth/api-key/admin.js +8 -7
- package/core/server/services/auth/passwordreset.js +3 -3
- package/core/server/services/auth/session/express-session.js +1 -1
- package/core/server/services/auth/session/index.js +1 -1
- package/core/server/services/auth/setup.js +8 -8
- package/core/server/services/bulk-email/bulk-email-processor.js +5 -1
- package/core/server/services/email-analytics/lib/event-processor.js +25 -14
- package/core/server/services/frontend-data-service/frontend-data-service.js +27 -0
- package/core/server/services/frontend-data-service/index.js +6 -0
- package/core/server/services/mail/index.js +14 -1
- package/core/server/services/mega/email-preview.js +14 -15
- package/core/server/services/mega/mega.js +37 -52
- package/core/server/services/mega/post-email-serializer.js +18 -28
- package/core/server/services/members/api.js +0 -3
- package/core/server/services/members/config.js +0 -49
- package/core/server/services/members/exporter/query.js +7 -7
- package/core/server/services/members/middleware.js +3 -135
- package/core/server/services/members/service.js +0 -27
- package/core/server/services/members/settings.js +3 -9
- package/core/server/services/newsletters/service.js +78 -10
- package/core/server/services/posts/post-scheduling-service.js +5 -17
- package/core/server/services/posts/posts-service.js +15 -62
- package/core/server/services/public-config/site.js +0 -6
- package/core/server/services/route-settings/index.js +0 -3
- package/core/server/services/route-settings/settings-loader.js +10 -34
- package/core/server/services/route-settings/validate.js +1 -7
- package/core/server/services/settings/index.js +1 -77
- package/core/server/services/settings/settings-service.js +184 -0
- package/core/server/services/themes/validate.js +1 -1
- package/core/server/services/url/Resources.js +1 -3
- package/core/server/services/url/UrlGenerator.js +1 -1
- package/core/server/services/url/UrlService.js +6 -20
- package/core/server/services/url/{configs/v2.js → config.js} +0 -0
- package/core/server/services/users.js +2 -2
- package/core/server/services/webhooks/listen.js +5 -2
- package/core/server/services/webhooks/serialize.js +6 -7
- package/core/server/services/webhooks/trigger.js +62 -47
- package/core/server/update-check.js +1 -1
- package/core/server/web/admin/app.js +1 -1
- package/core/server/web/admin/views/default-prod.html +4 -4
- package/core/server/web/admin/views/default.html +4 -4
- package/core/server/web/api/app.js +3 -15
- package/core/server/web/api/canary/admin/app.js +1 -1
- package/core/server/web/api/canary/admin/middleware.js +3 -1
- package/core/server/web/api/canary/admin/routes.js +7 -23
- package/core/server/web/api/canary/content/app.js +2 -3
- package/core/server/web/api/canary/content/routes.js +5 -4
- package/core/server/web/members/app.js +5 -4
- package/core/server/web/parent/backend.js +0 -1
- package/core/server/web/parent/frontend.js +5 -6
- package/core/server/web/parent/middleware/ghost-locals.js +0 -3
- package/core/server/web/well-known.js +14 -1
- package/core/shared/config/defaults.json +5 -2
- package/core/shared/config/overrides.json +1 -27
- package/core/shared/html-to-plaintext.js +78 -10
- package/core/shared/labs.js +4 -8
- package/core/shared/settings-cache/cache.js +38 -4
- package/core/shared/settings-cache/public.js +13 -7
- package/core/shared/url-utils.js +0 -2
- package/ghost.js +6 -0
- package/package.json +66 -64
- package/yarn.lock +765 -1300
- package/core/built/assets/ghost-dark-c94ae212747200ca4bafc37cfb0714d8.css +0 -1
- package/core/built/assets/ghost.min-4084931bc22e794fe3722139050a80b3.css +0 -1
- package/core/frontend/helpers/author.js +0 -41
- package/core/frontend/helpers/products.js +0 -65
- package/core/frontend/services/rendering/secure.js +0 -19
- package/core/frontend/services/routing/config/canary.js +0 -61
- package/core/frontend/services/routing/config/v2.js +0 -54
- package/core/frontend/services/routing/config/v3.js +0 -54
- package/core/frontend/services/theme-engine/engines/create.js +0 -45
- package/core/frontend/services/theme-engine/engines/index.js +0 -5
- package/core/frontend/services/theme-engine/middleware/update-local-template-data.js +0 -9
- package/core/server/api/canary/products-public.js +0 -34
- package/core/server/api/canary/products.js +0 -116
- package/core/server/api/canary/utils/serializers/input/products.js +0 -28
- package/core/server/api/canary/utils/serializers/output/email-previews.js +0 -7
- package/core/server/api/canary/utils/serializers/output/products.js +0 -213
- package/core/server/api/v2/actions.js +0 -38
- package/core/server/api/v2/authentication.js +0 -191
- package/core/server/api/v2/authors-public.js +0 -69
- package/core/server/api/v2/config.js +0 -12
- package/core/server/api/v2/db.js +0 -120
- package/core/server/api/v2/images.js +0 -20
- package/core/server/api/v2/index.js +0 -147
- package/core/server/api/v2/integrations.js +0 -144
- package/core/server/api/v2/invites.js +0 -126
- package/core/server/api/v2/mail.js +0 -66
- package/core/server/api/v2/notifications.js +0 -96
- package/core/server/api/v2/oembed.js +0 -186
- package/core/server/api/v2/pages-public.js +0 -78
- package/core/server/api/v2/pages.js +0 -197
- package/core/server/api/v2/posts-public.js +0 -78
- package/core/server/api/v2/posts.js +0 -192
- package/core/server/api/v2/preview.js +0 -46
- package/core/server/api/v2/redirects.js +0 -28
- package/core/server/api/v2/roles.js +0 -19
- package/core/server/api/v2/schedules.js +0 -77
- package/core/server/api/v2/session.js +0 -70
- package/core/server/api/v2/settings-public.js +0 -17
- package/core/server/api/v2/settings.js +0 -195
- package/core/server/api/v2/site.js +0 -14
- package/core/server/api/v2/slack.js +0 -12
- package/core/server/api/v2/slugs.js +0 -51
- package/core/server/api/v2/tags-public.js +0 -71
- package/core/server/api/v2/tags.js +0 -159
- package/core/server/api/v2/themes.js +0 -133
- package/core/server/api/v2/users.js +0 -179
- package/core/server/api/v2/utils/index.js +0 -34
- package/core/server/api/v2/utils/permissions.js +0 -112
- package/core/server/api/v2/utils/serializers/index.js +0 -9
- package/core/server/api/v2/utils/serializers/input/db.js +0 -20
- package/core/server/api/v2/utils/serializers/input/index.js +0 -33
- package/core/server/api/v2/utils/serializers/input/integrations.js +0 -33
- package/core/server/api/v2/utils/serializers/input/pages.js +0 -203
- package/core/server/api/v2/utils/serializers/input/posts.js +0 -218
- package/core/server/api/v2/utils/serializers/input/settings.js +0 -152
- package/core/server/api/v2/utils/serializers/input/tags.js +0 -35
- package/core/server/api/v2/utils/serializers/input/users.js +0 -26
- package/core/server/api/v2/utils/serializers/input/utils/url.js +0 -71
- package/core/server/api/v2/utils/serializers/input/webhooks.js +0 -12
- package/core/server/api/v2/utils/serializers/output/actions.js +0 -13
- package/core/server/api/v2/utils/serializers/output/all.js +0 -25
- package/core/server/api/v2/utils/serializers/output/authentication.js +0 -68
- package/core/server/api/v2/utils/serializers/output/authors.js +0 -21
- package/core/server/api/v2/utils/serializers/output/config.js +0 -21
- package/core/server/api/v2/utils/serializers/output/db.js +0 -40
- package/core/server/api/v2/utils/serializers/output/images.js +0 -19
- package/core/server/api/v2/utils/serializers/output/index.js +0 -107
- package/core/server/api/v2/utils/serializers/output/integrations.js +0 -35
- package/core/server/api/v2/utils/serializers/output/invites.js +0 -24
- package/core/server/api/v2/utils/serializers/output/mail.js +0 -19
- package/core/server/api/v2/utils/serializers/output/notifications.js +0 -29
- package/core/server/api/v2/utils/serializers/output/oembed.js +0 -8
- package/core/server/api/v2/utils/serializers/output/pages.js +0 -26
- package/core/server/api/v2/utils/serializers/output/posts.js +0 -26
- package/core/server/api/v2/utils/serializers/output/preview.js +0 -9
- package/core/server/api/v2/utils/serializers/output/redirects.js +0 -5
- package/core/server/api/v2/utils/serializers/output/roles.js +0 -29
- package/core/server/api/v2/utils/serializers/output/schedules.js +0 -5
- package/core/server/api/v2/utils/serializers/output/settings.js +0 -61
- package/core/server/api/v2/utils/serializers/output/site.js +0 -16
- package/core/server/api/v2/utils/serializers/output/slugs.js +0 -11
- package/core/server/api/v2/utils/serializers/output/tags.js +0 -25
- package/core/server/api/v2/utils/serializers/output/themes.js +0 -25
- package/core/server/api/v2/utils/serializers/output/users.js +0 -45
- package/core/server/api/v2/utils/serializers/output/utils/clean.js +0 -174
- package/core/server/api/v2/utils/serializers/output/utils/date.js +0 -21
- package/core/server/api/v2/utils/serializers/output/utils/extra-attrs.js +0 -161
- package/core/server/api/v2/utils/serializers/output/utils/mapper.js +0 -136
- package/core/server/api/v2/utils/serializers/output/utils/post-gating.js +0 -29
- package/core/server/api/v2/utils/serializers/output/utils/settings-type-group-mapper.js +0 -24
- package/core/server/api/v2/utils/serializers/output/utils/url.js +0 -67
- package/core/server/api/v2/utils/serializers/output/webhooks.js +0 -15
- package/core/server/api/v2/utils/validators/index.js +0 -9
- package/core/server/api/v2/utils/validators/input/images.js +0 -85
- package/core/server/api/v2/utils/validators/input/index.js +0 -45
- package/core/server/api/v2/utils/validators/input/invitations.js +0 -49
- package/core/server/api/v2/utils/validators/input/invites.js +0 -21
- package/core/server/api/v2/utils/validators/input/oembed.js +0 -17
- package/core/server/api/v2/utils/validators/input/pages.js +0 -46
- package/core/server/api/v2/utils/validators/input/passwordreset.js +0 -36
- package/core/server/api/v2/utils/validators/input/posts.js +0 -46
- package/core/server/api/v2/utils/validators/input/settings.js +0 -79
- package/core/server/api/v2/utils/validators/input/setup.js +0 -17
- package/core/server/api/v2/utils/validators/input/tags.js +0 -6
- package/core/server/api/v2/utils/validators/input/users.js +0 -21
- package/core/server/api/v2/utils/validators/output/index.js +0 -1
- package/core/server/api/v2/utils/validators/utils/json-schema.js +0 -17
- package/core/server/api/v2/webhooks.js +0 -163
- package/core/server/api/v3/authentication.js +0 -192
- package/core/server/api/v3/authors-public.js +0 -69
- package/core/server/api/v3/config.js +0 -12
- package/core/server/api/v3/db.js +0 -131
- package/core/server/api/v3/email-preview.js +0 -74
- package/core/server/api/v3/email.js +0 -65
- package/core/server/api/v3/identities.js +0 -36
- package/core/server/api/v3/images.js +0 -20
- package/core/server/api/v3/index.js +0 -179
- package/core/server/api/v3/integrations.js +0 -150
- package/core/server/api/v3/invites.js +0 -125
- package/core/server/api/v3/labels.js +0 -162
- package/core/server/api/v3/mail.js +0 -66
- package/core/server/api/v3/memberSigninUrls.js +0 -33
- package/core/server/api/v3/members.js +0 -412
- package/core/server/api/v3/membersStripeConnect.js +0 -29
- package/core/server/api/v3/notifications.js +0 -96
- package/core/server/api/v3/oembed.js +0 -23
- package/core/server/api/v3/pages-public.js +0 -77
- package/core/server/api/v3/pages.js +0 -199
- package/core/server/api/v3/posts-public.js +0 -76
- package/core/server/api/v3/posts.js +0 -200
- package/core/server/api/v3/preview.js +0 -44
- package/core/server/api/v3/redirects.js +0 -47
- package/core/server/api/v3/roles.js +0 -19
- package/core/server/api/v3/schedules.js +0 -77
- package/core/server/api/v3/session.js +0 -70
- package/core/server/api/v3/settings-public.js +0 -17
- package/core/server/api/v3/settings.js +0 -224
- package/core/server/api/v3/site.js +0 -14
- package/core/server/api/v3/slack.js +0 -12
- package/core/server/api/v3/slugs.js +0 -48
- package/core/server/api/v3/snippets.js +0 -115
- package/core/server/api/v3/tags-public.js +0 -71
- package/core/server/api/v3/tags.js +0 -159
- package/core/server/api/v3/themes.js +0 -131
- package/core/server/api/v3/users.js +0 -242
- package/core/server/api/v3/utils/index.js +0 -34
- package/core/server/api/v3/utils/permissions.js +0 -116
- package/core/server/api/v3/utils/serializers/index.js +0 -9
- package/core/server/api/v3/utils/serializers/input/authors.js +0 -31
- package/core/server/api/v3/utils/serializers/input/db.js +0 -20
- package/core/server/api/v3/utils/serializers/input/index.js +0 -41
- package/core/server/api/v3/utils/serializers/input/integrations.js +0 -33
- package/core/server/api/v3/utils/serializers/input/members.js +0 -62
- package/core/server/api/v3/utils/serializers/input/pages.js +0 -208
- package/core/server/api/v3/utils/serializers/input/posts.js +0 -242
- package/core/server/api/v3/utils/serializers/input/settings.js +0 -168
- package/core/server/api/v3/utils/serializers/input/tags.js +0 -42
- package/core/server/api/v3/utils/serializers/input/users.js +0 -26
- package/core/server/api/v3/utils/serializers/input/utils/slug-filter-order.js +0 -18
- package/core/server/api/v3/utils/serializers/input/utils/url.js +0 -71
- package/core/server/api/v3/utils/serializers/input/webhooks.js +0 -12
- package/core/server/api/v3/utils/serializers/output/actions.js +0 -13
- package/core/server/api/v3/utils/serializers/output/all.js +0 -25
- package/core/server/api/v3/utils/serializers/output/authentication.js +0 -69
- package/core/server/api/v3/utils/serializers/output/authors.js +0 -21
- package/core/server/api/v3/utils/serializers/output/config.js +0 -25
- package/core/server/api/v3/utils/serializers/output/db.js +0 -40
- package/core/server/api/v3/utils/serializers/output/email-preview.js +0 -7
- package/core/server/api/v3/utils/serializers/output/emails.js +0 -13
- package/core/server/api/v3/utils/serializers/output/identities.js +0 -7
- package/core/server/api/v3/utils/serializers/output/images.js +0 -19
- package/core/server/api/v3/utils/serializers/output/index.js +0 -135
- package/core/server/api/v3/utils/serializers/output/integrations.js +0 -35
- package/core/server/api/v3/utils/serializers/output/invites.js +0 -24
- package/core/server/api/v3/utils/serializers/output/labels.js +0 -25
- package/core/server/api/v3/utils/serializers/output/mail.js +0 -19
- package/core/server/api/v3/utils/serializers/output/member-signin_urls.js +0 -7
- package/core/server/api/v3/utils/serializers/output/members.js +0 -228
- package/core/server/api/v3/utils/serializers/output/notifications.js +0 -29
- package/core/server/api/v3/utils/serializers/output/oembed.js +0 -8
- package/core/server/api/v3/utils/serializers/output/pages.js +0 -26
- package/core/server/api/v3/utils/serializers/output/posts.js +0 -26
- package/core/server/api/v3/utils/serializers/output/preview.js +0 -10
- package/core/server/api/v3/utils/serializers/output/redirects.js +0 -5
- package/core/server/api/v3/utils/serializers/output/roles.js +0 -29
- package/core/server/api/v3/utils/serializers/output/schedules.js +0 -5
- package/core/server/api/v3/utils/serializers/output/settings.js +0 -65
- package/core/server/api/v3/utils/serializers/output/site.js +0 -19
- package/core/server/api/v3/utils/serializers/output/slugs.js +0 -11
- package/core/server/api/v3/utils/serializers/output/snippets.js +0 -97
- package/core/server/api/v3/utils/serializers/output/tags.js +0 -25
- package/core/server/api/v3/utils/serializers/output/themes.js +0 -25
- package/core/server/api/v3/utils/serializers/output/users.js +0 -74
- package/core/server/api/v3/utils/serializers/output/utils/clean.js +0 -166
- package/core/server/api/v3/utils/serializers/output/utils/date.js +0 -21
- package/core/server/api/v3/utils/serializers/output/utils/extra-attrs.js +0 -174
- package/core/server/api/v3/utils/serializers/output/utils/mapper.js +0 -197
- package/core/server/api/v3/utils/serializers/output/utils/post-gating.js +0 -39
- package/core/server/api/v3/utils/serializers/output/utils/settings-type-group-mapper.js +0 -24
- package/core/server/api/v3/utils/serializers/output/utils/url.js +0 -67
- package/core/server/api/v3/utils/serializers/output/webhooks.js +0 -15
- package/core/server/api/v3/utils/validators/index.js +0 -9
- package/core/server/api/v3/utils/validators/input/images.js +0 -85
- package/core/server/api/v3/utils/validators/input/index.js +0 -61
- package/core/server/api/v3/utils/validators/input/invitations.js +0 -49
- package/core/server/api/v3/utils/validators/input/invites.js +0 -21
- package/core/server/api/v3/utils/validators/input/labels.js +0 -6
- package/core/server/api/v3/utils/validators/input/members.js +0 -6
- package/core/server/api/v3/utils/validators/input/oembed.js +0 -17
- package/core/server/api/v3/utils/validators/input/pages.js +0 -46
- package/core/server/api/v3/utils/validators/input/passwordreset.js +0 -36
- package/core/server/api/v3/utils/validators/input/posts.js +0 -46
- package/core/server/api/v3/utils/validators/input/settings.js +0 -89
- package/core/server/api/v3/utils/validators/input/setup.js +0 -17
- package/core/server/api/v3/utils/validators/input/snippets.js +0 -6
- package/core/server/api/v3/utils/validators/input/tags.js +0 -6
- package/core/server/api/v3/utils/validators/input/users.js +0 -22
- package/core/server/api/v3/utils/validators/input/webhooks.js +0 -27
- package/core/server/api/v3/utils/validators/output/index.js +0 -1
- package/core/server/api/v3/utils/validators/utils/json-schema.js +0 -17
- package/core/server/api/v3/webhooks.js +0 -130
- package/core/server/data/migrations/utils.js +0 -571
- package/core/server/data/migrations/versions/1.13/1-custom-template-post.js +0 -7
- package/core/server/data/migrations/versions/1.13/2-theme-permissions.js +0 -58
- package/core/server/data/migrations/versions/1.18/1-add-webhooks-table.js +0 -2
- package/core/server/data/migrations/versions/1.19/1-webhook-permissions.js +0 -31
- package/core/server/data/migrations/versions/1.20/1-remove-settings-keys.js +0 -65
- package/core/server/data/migrations/versions/1.21/1-add-contributor-role.js +0 -58
- package/core/server/data/migrations/versions/1.22/1-multiple-authors-DDL.js +0 -2
- package/core/server/data/migrations/versions/1.22/1-multiple-authors-DML.js +0 -63
- package/core/server/data/migrations/versions/1.25/1-update-koenig-beta-html.js +0 -70
- package/core/server/data/migrations/versions/1.25/2-demo-post.js +0 -55
- package/core/server/data/migrations/versions/1.3/1-post-excerpt.js +0 -7
- package/core/server/data/migrations/versions/1.4/1-codeinjection-post.js +0 -14
- package/core/server/data/migrations/versions/1.5/1-og-twitter-post.js +0 -34
- package/core/server/data/migrations/versions/1.7/1-add-backup-client.js +0 -10
- package/core/server/data/migrations/versions/1.9/1-add-permissions-redirect.js +0 -23
- package/core/server/data/migrations/versions/2.0/1-rename-amp-column.js +0 -44
- package/core/server/data/migrations/versions/2.0/2-update-posts.js +0 -7
- package/core/server/data/migrations/versions/2.0/3-remove-koenig-labs.js +0 -42
- package/core/server/data/migrations/versions/2.0/4-permalink-setting.js +0 -85
- package/core/server/data/migrations/versions/2.0/5-remove-demo-post.js +0 -85
- package/core/server/data/migrations/versions/2.0/6-replace-fixture-posts.js +0 -10
- package/core/server/data/migrations/versions/2.13/1-remove-empty-strings.js +0 -5
- package/core/server/data/migrations/versions/2.14/1-add-actions-table.js +0 -2
- package/core/server/data/migrations/versions/2.14/2-add-actions-permissions.js +0 -12
- package/core/server/data/migrations/versions/2.15/1-add-type-column-to-integrations.js +0 -8
- package/core/server/data/migrations/versions/2.15/2-insert-zapier-integration.js +0 -69
- package/core/server/data/migrations/versions/2.16/1-add-members-perrmissions.js +0 -1
- package/core/server/data/migrations/versions/2.17/1-normalize-settings.js +0 -74
- package/core/server/data/migrations/versions/2.17/2-posts-add-canonical-url.js +0 -7
- package/core/server/data/migrations/versions/2.18/1-restore-settings-from-backup.js +0 -134
- package/core/server/data/migrations/versions/2.2/1-add-sessions-table.js +0 -2
- package/core/server/data/migrations/versions/2.2/2-add-integrations-and-api-key-tables.js +0 -6
- package/core/server/data/migrations/versions/2.2/3-insert-admin-integration-role.js +0 -83
- package/core/server/data/migrations/versions/2.2/4-insert-integration-and-api-key-permissions.js +0 -77
- package/core/server/data/migrations/versions/2.2/5-add-mobiledoc-revisions-table.js +0 -2
- package/core/server/data/migrations/versions/2.21/1-update-editor-permissions.js +0 -28
- package/core/server/data/migrations/versions/2.22/1-add-member-permissions-to-roles.js +0 -47
- package/core/server/data/migrations/versions/2.27/1-insert-ghost-db-backup-role.js +0 -83
- package/core/server/data/migrations/versions/2.27/2-insert-db-backup-integration.js +0 -69
- package/core/server/data/migrations/versions/2.27/3-add-subdirectory-to-relative-canonical-urls.js +0 -100
- package/core/server/data/migrations/versions/2.28/1-add-db-backup-content-permission.js +0 -9
- package/core/server/data/migrations/versions/2.28/2-add-db-backup-content-permission-to-roles.js +0 -15
- package/core/server/data/migrations/versions/2.28/3-insert-ghost-scheduler-role.js +0 -84
- package/core/server/data/migrations/versions/2.28/4-insert-scheduler-integration.js +0 -69
- package/core/server/data/migrations/versions/2.28/5-add-scheduler-permission-to-roles.js +0 -23
- package/core/server/data/migrations/versions/2.28/6-add-type-column.js +0 -6
- package/core/server/data/migrations/versions/2.28/7-populate-type-column.js +0 -6
- package/core/server/data/migrations/versions/2.28/8-remove-page-column.js +0 -6
- package/core/server/data/migrations/versions/2.29/1-add-post-page-column.js +0 -20
- package/core/server/data/migrations/versions/2.29/2-populate-post-page-column.js +0 -98
- package/core/server/data/migrations/versions/2.29/3-remove-page-type-column.js +0 -15
- package/core/server/data/migrations/versions/2.3/1-add-webhook-columns.js +0 -45
- package/core/server/data/migrations/versions/2.3/2-add-webhook-edit-permission.js +0 -9
- package/core/server/data/migrations/versions/2.31/1-remove-name-and-password-from-members-table.js +0 -15
- package/core/server/data/migrations/versions/2.32/01-add-members-stripe-customers-table.js +0 -4
- package/core/server/data/migrations/versions/2.32/02-add-name-to-members-table.js +0 -7
- package/core/server/data/migrations/versions/2.33/01-correct-members-stripe-customers-table.js +0 -37
- package/core/server/data/migrations/versions/2.34/01-add-stripe-customers-subscriptions-table.js +0 -2
- package/core/server/data/migrations/versions/2.34/02-add-email-to-members-stripe-customers-table.js +0 -7
- package/core/server/data/migrations/versions/2.34/03-add-name-to-members-stripe-customers-table.js +0 -7
- package/core/server/data/migrations/versions/2.35/01-add-note-to-members-table.js +0 -7
- package/core/server/data/migrations/versions/2.37/01-add-self-signup-and-from address-to-members-settings.js +0 -67
- package/core/server/data/migrations/versions/2.6/1-add-webhook-permission-roles.js +0 -31
- package/core/server/data/migrations/versions/2.8/1-add-members-table.js +0 -2
- package/core/server/data/migrations/versions/3.0/01-remove-user-ghost-auth-columns.js +0 -14
- package/core/server/data/migrations/versions/3.0/02-drop-token-auth-tables.js +0 -31
- package/core/server/data/migrations/versions/3.0/03-drop-client-auth-tables.js +0 -35
- package/core/server/data/migrations/versions/3.0/04-add-posts-meta-table.js +0 -2
- package/core/server/data/migrations/versions/3.0/05-populate-posts-meta-table.js +0 -83
- package/core/server/data/migrations/versions/3.0/06-remove-posts-meta-columns.js +0 -44
- package/core/server/data/migrations/versions/3.0/07-add-posts-type-column.js +0 -8
- package/core/server/data/migrations/versions/3.0/08-populate-posts-type-column.js +0 -94
- package/core/server/data/migrations/versions/3.0/09-remove-posts-page-column.js +0 -7
- package/core/server/data/migrations/versions/3.0/10-remove-empty-strings.js +0 -81
- package/core/server/data/migrations/versions/3.0/11-update-posts-html.js +0 -7
- package/core/server/data/migrations/versions/3.0/12-populate-members-table-from-subscribers.js +0 -54
- package/core/server/data/migrations/versions/3.0/13-drop-subscribers-table.js +0 -34
- package/core/server/data/migrations/versions/3.0/14-remove-subscribers-flag.js +0 -24
- package/core/server/data/migrations/versions/3.1/01-add-send-email-when-published-to-posts.js +0 -7
- package/core/server/data/migrations/versions/3.1/02-add-email-subject-to-posts-meta.js +0 -7
- package/core/server/data/migrations/versions/3.1/03-add-email-preview-permissions.js +0 -18
- package/core/server/data/migrations/versions/3.1/04-add-subscribed-flag-to-members.js +0 -7
- package/core/server/data/migrations/versions/3.1/05-add-emails-table.js +0 -2
- package/core/server/data/migrations/versions/3.1/06-add-email-permissions.js +0 -15
- package/core/server/data/migrations/versions/3.1/07-add-uuid-field-to-members.js +0 -8
- package/core/server/data/migrations/versions/3.1/08-add-uuid-values-to-members.js +0 -23
- package/core/server/data/migrations/versions/3.1/09-add-further-email-permissions.js +0 -25
- package/core/server/data/migrations/versions/3.1/10-add-email-error-data-column.js +0 -8
- package/core/server/data/migrations/versions/3.11/01-remove-broken-complimentary-plan-from-members-settings.js +0 -68
- package/core/server/data/migrations/versions/3.12/01-add-identity-permission.js +0 -7
- package/core/server/data/migrations/versions/3.12/02-remove-legacy-is-paid-flag-from-settings.js +0 -93
- package/core/server/data/migrations/versions/3.18/01-add-email-preview-permissions-to-roles.js +0 -39
- package/core/server/data/migrations/versions/3.18/02-add-members_stripe_connect-auth-permissions.js +0 -7
- package/core/server/data/migrations/versions/3.19/01-update-member-from-email-address.js +0 -91
- package/core/server/data/migrations/versions/3.2/01-add-cancel-at-period-end-to-subscriptions.js +0 -7
- package/core/server/data/migrations/versions/3.22/01-removed-legacy-values-from-settings-table.js +0 -65
- package/core/server/data/migrations/versions/3.22/02-settings-key-renames.js +0 -90
- package/core/server/data/migrations/versions/3.22/03-add-group-and-flags-to-settings.js +0 -15
- package/core/server/data/migrations/versions/3.22/04-populate-settings-groups-and-flags.js +0 -194
- package/core/server/data/migrations/versions/3.22/05-migrate-members-subscription-settings.js +0 -182
- package/core/server/data/migrations/versions/3.22/06-migrate-stripe-connect-settings.js +0 -132
- package/core/server/data/migrations/versions/3.22/07-update-type-for-settings.js +0 -137
- package/core/server/data/migrations/versions/3.23/01-migrate-bulk-email-settings.js +0 -65
- package/core/server/data/migrations/versions/3.23/02-remove-bulk-email-settings.js +0 -48
- package/core/server/data/migrations/versions/3.23/03-update-portal-button-setting.js +0 -24
- package/core/server/data/migrations/versions/3.23/04-add-meta-columns-to-tags-table.js +0 -54
- package/core/server/data/migrations/versions/3.24/01-populate-group-for-new-portal-settings.js +0 -38
- package/core/server/data/migrations/versions/3.25/01-add-members-stripe-webhook-settings.js +0 -22
- package/core/server/data/migrations/versions/3.26/01-add-amp-gtag-id-setting.js +0 -20
- package/core/server/data/migrations/versions/3.29/01-remove-duplicate-subscriptions.js +0 -53
- package/core/server/data/migrations/versions/3.29/02-remove-duplicate-customers.js +0 -53
- package/core/server/data/migrations/versions/3.29/03-remove-orphaned-customers.js +0 -35
- package/core/server/data/migrations/versions/3.29/04-remove-orphaned-subscriptions.js +0 -35
- package/core/server/data/migrations/versions/3.29/05-add-member-constraints.js +0 -177
- package/core/server/data/migrations/versions/3.30/01-add-member-signin-url-permission-roles.js +0 -8
- package/core/server/data/migrations/versions/3.32/01-add-member-support-address-setting.js +0 -27
- package/core/server/data/migrations/versions/3.32/02-add-member-reply-address-setting.js +0 -20
- package/core/server/data/migrations/versions/3.32/03-add-routes-hash-setting.js +0 -20
- package/core/server/data/migrations/versions/3.33/01-add-email-recipients-tables.js +0 -8
- package/core/server/data/migrations/versions/3.34/01-add-tokens-table.js +0 -2
- package/core/server/data/migrations/versions/3.35/01-add-address-columns-to-emails-table.js +0 -14
- package/core/server/data/migrations/versions/3.36/01-add-snippets-table.js +0 -2
- package/core/server/data/migrations/versions/3.36/02-add-snippets-permissions.js +0 -56
- package/core/server/data/migrations/versions/3.37/01-update-portal-button-setting.js +0 -30
- package/core/server/data/migrations/versions/3.38/01-add-email-recipient-filter-column.js +0 -8
- package/core/server/data/migrations/versions/3.38/02-populate-email-recipient-filter-column.js +0 -34
- package/core/server/data/migrations/versions/3.38/03-add-recipient-filter-column.js +0 -8
- package/core/server/data/migrations/versions/3.38/04-populate-recipient-filter-column.js +0 -49
- package/core/server/data/migrations/versions/3.38/05-add-emails-track-opens-column.js +0 -7
- package/core/server/data/migrations/versions/3.38/06-add-newsletter-settings.js +0 -16
- package/core/server/data/migrations/versions/3.38/07-migrate-newsletter-settings-from-config.js +0 -48
- package/core/server/data/migrations/versions/3.38/08-repopulate-send-email-when-published-down-migration.js +0 -25
- package/core/server/data/migrations/versions/3.38/09-remove-send-email-when-published-column.js +0 -7
- package/core/server/data/migrations/versions/3.39/01-add-members-signup-redirect-settings.js +0 -16
- package/core/server/data/migrations/versions/3.39/02-add-user-id-to-api-keys-table.js +0 -7
- package/core/server/data/migrations/versions/3.39/03-add-email-track-opens-setting.js +0 -16
- package/core/server/data/migrations/versions/3.39/04-add-cancellation-reason-column.js +0 -7
- package/core/server/data/migrations/versions/3.39/05-remove-unused-columns-on-emails.js +0 -14
- package/core/server/data/migrations/versions/3.39/06-add-email-recipient-index.js +0 -58
- package/core/server/data/migrations/versions/3.39/07-add-email-recipients-event-timestamps.js +0 -19
- package/core/server/data/migrations/versions/3.39/08-add-email-stats-columns.js +0 -22
- package/core/server/data/migrations/versions/3.40/01-add-members-email-open-rate-column.js +0 -8
- package/core/server/data/migrations/versions/3.40/02-add members-email-aggregation-columns.js +0 -16
- package/core/server/data/migrations/versions/3.40/03-populate-members-email-counts.js +0 -15
- package/core/server/data/migrations/versions/3.41/01-add-firstpromoter-settings.js +0 -16
- package/core/server/data/migrations/versions/3.6/1-add-labels-table.js +0 -2
- package/core/server/data/migrations/versions/3.6/2-add-members-labels-table.js +0 -2
- package/core/server/data/migrations/versions/3.6/3-add-labels-permissions.js +0 -47
- package/core/server/data/migrations/versions/3.7/01-fix-incorrect-member-labels-foreign-keys.js +0 -46
- package/core/server/data/migrations/versions/3.8/01-add-geolocation-to-members.js +0 -7
- package/core/server/data/migrations/versions/3.9/01-add-member-sigin-url-permissions.js +0 -7
- package/core/server/services/mail/utils.js +0 -34
- package/core/server/services/url/configs/canary.js +0 -143
- package/core/server/services/url/configs/v3.js +0 -141
- package/core/server/services/url/configs/v4.js +0 -143
- package/core/server/web/api/v2/admin/app.js +0 -43
- package/core/server/web/api/v2/admin/middleware.js +0 -85
- package/core/server/web/api/v2/admin/routes.js +0 -200
- package/core/server/web/api/v2/content/app.js +0 -38
- package/core/server/web/api/v2/content/middleware.js +0 -23
- package/core/server/web/api/v2/content/routes.js +0 -37
- package/core/server/web/api/v3/admin/app.js +0 -43
- package/core/server/web/api/v3/admin/middleware.js +0 -89
- package/core/server/web/api/v3/admin/routes.js +0 -267
- package/core/server/web/api/v3/content/app.js +0 -38
- package/core/server/web/api/v3/content/middleware.js +0 -23
- package/core/server/web/api/v3/content/routes.js +0 -37
- package/core/server/web/oauth/app.js +0 -153
- package/core/server/web/oauth/index.js +0 -1
package/Gruntfile.js
CHANGED
|
@@ -3,11 +3,11 @@ const fs = require('fs-extra');
|
|
|
3
3
|
const path = require('path');
|
|
4
4
|
|
|
5
5
|
// Utility for outputting messages indicating that the admin is building, as it can take a while.
|
|
6
|
-
let
|
|
7
|
-
const
|
|
8
|
-
if (!
|
|
9
|
-
grunt.log.writeln('Building admin
|
|
10
|
-
setTimeout(
|
|
6
|
+
let hasBuiltAdmin = false;
|
|
7
|
+
const logBuildingAdmin = function (grunt) {
|
|
8
|
+
if (!hasBuiltAdmin) {
|
|
9
|
+
grunt.log.writeln('Building admin app... (can take ~1min)');
|
|
10
|
+
setTimeout(logBuildingAdmin, 5000, grunt);
|
|
11
11
|
}
|
|
12
12
|
};
|
|
13
13
|
|
|
@@ -15,18 +15,18 @@ module.exports = function (grunt) {
|
|
|
15
15
|
// grunt dev - use yarn dev instead!
|
|
16
16
|
// - Start a server & build assets on the fly whilst developing
|
|
17
17
|
grunt.registerTask('dev', 'Dev Mode; watch files and restart server on changes', function () {
|
|
18
|
-
if (grunt.option('
|
|
19
|
-
grunt.task.run(['clean:built', 'bgShell:
|
|
18
|
+
if (grunt.option('admin')) {
|
|
19
|
+
grunt.task.run(['clean:built', 'bgShell:admin']);
|
|
20
20
|
} else if (grunt.option('server')) {
|
|
21
21
|
grunt.task.run(['express:dev', 'watch']);
|
|
22
22
|
} else {
|
|
23
|
-
grunt.task.run(['clean:built', 'bgShell:
|
|
23
|
+
grunt.task.run(['clean:built', 'bgShell:admin', 'express:dev', 'watch']);
|
|
24
24
|
}
|
|
25
25
|
});
|
|
26
26
|
|
|
27
27
|
// grunt build -- use yarn build instead!
|
|
28
|
-
// - Builds the
|
|
29
|
-
grunt.registerTask('build', 'Build
|
|
28
|
+
// - Builds the admin without a watch task
|
|
29
|
+
grunt.registerTask('build', 'Build admin app in development mode',
|
|
30
30
|
['subgrunt:init', 'clean:tmp', 'ember']);
|
|
31
31
|
|
|
32
32
|
// Helpers for common deprecated tasks
|
|
@@ -41,7 +41,7 @@ module.exports = function (grunt) {
|
|
|
41
41
|
// --- Sub Commands
|
|
42
42
|
// Used to make other commands work
|
|
43
43
|
|
|
44
|
-
// Updates submodules, then installs and builds the
|
|
44
|
+
// Updates submodules, then installs and builds the admin for you
|
|
45
45
|
grunt.registerTask('init', 'Prepare the project for development',
|
|
46
46
|
['update_submodules:pinned', 'build']);
|
|
47
47
|
|
|
@@ -101,17 +101,17 @@ module.exports = function (grunt) {
|
|
|
101
101
|
},
|
|
102
102
|
|
|
103
103
|
// grunt-bg-shell
|
|
104
|
-
// Tools for building the
|
|
104
|
+
// Tools for building the admin
|
|
105
105
|
bgShell: {
|
|
106
|
-
|
|
106
|
+
admin: {
|
|
107
107
|
cmd: function () {
|
|
108
|
-
|
|
108
|
+
logBuildingAdmin(grunt);
|
|
109
109
|
return 'grunt subgrunt:watch';
|
|
110
110
|
},
|
|
111
|
-
bg: grunt.option('
|
|
111
|
+
bg: grunt.option('admin') ? false : true,
|
|
112
112
|
stdout: function (chunk) {
|
|
113
113
|
// hide certain output to prevent confusion when running alongside server
|
|
114
|
-
const filter = grunt.option('
|
|
114
|
+
const filter = grunt.option('admin') ? false : [
|
|
115
115
|
/> ghost-admin/,
|
|
116
116
|
/^Livereload/,
|
|
117
117
|
/^Serving on/
|
|
@@ -124,24 +124,24 @@ module.exports = function (grunt) {
|
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
if (chunk.indexOf('Slowest Nodes') !== -1) {
|
|
127
|
-
|
|
127
|
+
hasBuiltAdmin = true;
|
|
128
128
|
}
|
|
129
129
|
},
|
|
130
130
|
stderr: function (chunk) {
|
|
131
|
-
const skipFilter = grunt.option('
|
|
131
|
+
const skipFilter = grunt.option('admin') ? false : [
|
|
132
132
|
/- building/
|
|
133
133
|
].some(function (regexp) {
|
|
134
134
|
return regexp.test(chunk);
|
|
135
135
|
});
|
|
136
136
|
|
|
137
|
-
const errorFilter = grunt.option('
|
|
137
|
+
const errorFilter = grunt.option('admin') ? false : [
|
|
138
138
|
/^>>/
|
|
139
139
|
].some(function (regexp) {
|
|
140
140
|
return regexp.test(chunk);
|
|
141
141
|
});
|
|
142
142
|
|
|
143
143
|
if (!skipFilter) {
|
|
144
|
-
|
|
144
|
+
hasBuiltAdmin = errorFilter ? hasBuiltAdmin : true;
|
|
145
145
|
grunt.log.error(chunk);
|
|
146
146
|
}
|
|
147
147
|
}
|
|
@@ -238,21 +238,21 @@ module.exports = function (grunt) {
|
|
|
238
238
|
npmInstall: true
|
|
239
239
|
},
|
|
240
240
|
projects: {
|
|
241
|
-
'core/
|
|
241
|
+
'core/admin': 'init'
|
|
242
242
|
}
|
|
243
243
|
},
|
|
244
244
|
|
|
245
245
|
dev: {
|
|
246
|
-
'core/
|
|
246
|
+
'core/admin': 'shell:ember:dev'
|
|
247
247
|
},
|
|
248
248
|
|
|
249
249
|
prod: {
|
|
250
|
-
'core/
|
|
250
|
+
'core/admin': 'shell:ember:prod'
|
|
251
251
|
},
|
|
252
252
|
|
|
253
253
|
watch: {
|
|
254
254
|
projects: {
|
|
255
|
-
'core/
|
|
255
|
+
'core/admin': ['shell:ember:watch', '--live-reload-base-url="' + config.getSubdir() + '/ghost/"']
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
258
|
},
|
package/README.md
CHANGED
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
<a href="https://ghost.org/"><img src="https://user-images.githubusercontent.com/
|
|
38
|
+
<a href="https://ghost.org/"><img src="https://user-images.githubusercontent.com/353959/169805900-66be5b89-0859-4816-8da9-528ed7534704.png" alt="Fiercely independent, professional publishing. Ghost is the most popular open source, headless Node.js CMS which already works with all the tools you know and love." /></a>
|
|
39
|
+
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
<a href="https://ghost.org/pricing/#gh-light-mode-only" target="_blank"><img src="https://user-images.githubusercontent.com/65487235/157849437-9b8fcc48-1920-4b26-a1e8-5806db0e6bb9.png" alt="Ghost(Pro)" width="165px" /></a>
|
|
@@ -79,7 +80,7 @@ Check out our [official documentation](https://ghost.org/docs/) for more informa
|
|
|
79
80
|
|
|
80
81
|
### Contributors & advanced developers
|
|
81
82
|
|
|
82
|
-
For anyone wishing to contribute to Ghost or to hack/customize core files we recommend following our full development setup guides: [Contributor guide](https://ghost.org/docs/contributing/) • [Developer setup](https://ghost.org/docs/install/source/) • [Admin
|
|
83
|
+
For anyone wishing to contribute to Ghost or to hack/customize core files we recommend following our full development setup guides: [Contributor guide](https://ghost.org/docs/contributing/) • [Developer setup](https://ghost.org/docs/install/source/) • [Admin App dev guide](https://ghost.org/docs/install/source/#ghost-admin)
|
|
83
84
|
|
|
84
85
|
|
|
85
86
|
|
|
@@ -1,2 +1,2 @@
|
|
|
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}ol,ul{list-style:none}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
|
|
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}ol,ul{list-style:none}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(--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 1em}ul{list-style:disc}ol{list-style:decimal}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}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-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}
|
|
2
2
|
/*# sourceMappingURL=global.css.map */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["global.css"],"names":[],"mappings":"AAGA,8YA6EI,QAAS,CACT,SAAU,CACV,QAAS,CACT,YAAa,CACb,cAAe,CACf,uBACJ,CACA,KACI,aACJ,CACA,MAEI,eACJ,CACA,aAEI,WACJ,CACA,oDAII,UAAW,CACX,YACJ,CAKA,IACI,aAAc,CACd,cAAe,CACf,WACJ,CACA,KACI,qBAAsB,CACtB,sBAAuB,CAEvB,yBAA0B,CAC1B,6BACJ,CACA,iBAGI,kBACJ,CACA,EACI,4BACJ,CACA,iBAEI,SACJ,CACA,SAEI,eACJ,CACA,SAGI,iBACJ,CACA,GACI,cAAgB,CAChB,aACJ,CACA,MACI,aACJ,CACA,QAEI,iBAAkB,CAClB,aAAc,CACd,aAAc,CACd,uBACJ,CACA,IACI,SACJ,CACA,IACI,aACJ,CACA,IACI,QACJ,CACA,eACI,eACJ,CACA,KACI,wBACJ,CACA,kBAII,+BAAiC,CACjC,aACJ,CACA,IACI,eAAgB,CAChB,4BAA6B,CAC7B,gBAAiB,CACjB,kBAAmB,CACnB,sCAA2C,CAC3C,iBAAkB,CAClB,+CACJ,CACA,yBACI,IACI,gBACJ,CACJ,CACA,sCAKI,QAAS,CACT,aAAc,CACd,YACJ,CACA,OACI,gBAAiB,CACjB,WACJ,CACA,cAEI,mBACJ,CACA,oEAKI,cAAe,CAEf,yBACJ,CACA,sCAEI,cACJ,CACA,iDAEI,SAAU,CACV,QACJ,CACA,MACI,kBACJ,CACA,YACI,YACJ,CACA,uCAEI,qBAAsB,CACtB,SACJ,CACA,4FAEI,WACJ,CACA,mBACI,sBAAuB,CAEvB,4BACJ,CACA,+FAEI,uBACJ,CACA,OACI,SAAU,CACV,QACJ,CACA,SACI,aACJ,CACA,MACI,gBAAiB,CACjB,wBACJ,CACA,MAEI,SACJ,CAMA,KACI,eAAgB,CAEhB,yCACJ,CACA,KACI,
|
|
1
|
+
{"version":3,"sources":["global.css"],"names":[],"mappings":"AAGA,8YA6EI,QAAS,CACT,SAAU,CACV,QAAS,CACT,YAAa,CACb,cAAe,CACf,uBACJ,CACA,KACI,aACJ,CACA,MAEI,eACJ,CACA,aAEI,WACJ,CACA,oDAII,UAAW,CACX,YACJ,CAKA,IACI,aAAc,CACd,cAAe,CACf,WACJ,CACA,KACI,qBAAsB,CACtB,sBAAuB,CAEvB,yBAA0B,CAC1B,6BACJ,CACA,iBAGI,kBACJ,CACA,EACI,4BACJ,CACA,iBAEI,SACJ,CACA,SAEI,eACJ,CACA,SAGI,iBACJ,CACA,GACI,cAAgB,CAChB,aACJ,CACA,MACI,aACJ,CACA,QAEI,iBAAkB,CAClB,aAAc,CACd,aAAc,CACd,uBACJ,CACA,IACI,SACJ,CACA,IACI,aACJ,CACA,IACI,QACJ,CACA,eACI,eACJ,CACA,KACI,wBACJ,CACA,kBAII,+BAAiC,CACjC,aACJ,CACA,IACI,eAAgB,CAChB,4BAA6B,CAC7B,gBAAiB,CACjB,kBAAmB,CACnB,sCAA2C,CAC3C,iBAAkB,CAClB,+CACJ,CACA,yBACI,IACI,gBACJ,CACJ,CACA,sCAKI,QAAS,CACT,aAAc,CACd,YACJ,CACA,OACI,gBAAiB,CACjB,WACJ,CACA,cAEI,mBACJ,CACA,oEAKI,cAAe,CAEf,yBACJ,CACA,sCAEI,cACJ,CACA,iDAEI,SAAU,CACV,QACJ,CACA,MACI,kBACJ,CACA,YACI,YACJ,CACA,uCAEI,qBAAsB,CACtB,SACJ,CACA,4FAEI,WACJ,CACA,mBACI,sBAAuB,CAEvB,4BACJ,CACA,+FAEI,uBACJ,CACA,OACI,SAAU,CACV,QACJ,CACA,SACI,aACJ,CACA,MACI,gBAAiB,CACjB,wBACJ,CACA,MAEI,SACJ,CAMA,KACI,eAAgB,CAEhB,yCACJ,CACA,KACI,2BAA4B,CAC5B,4BAA6B,CAC7B,gBAAiB,CACjB,iBAAkB,CAClB,eAAgB,CAChB,iBAAkB,CAClB,gBAAiB,CACjB,iCAAkC,CAClC,eAAgB,CAEhB,kCAAmC,CACnC,iCAAkC,CAClC,oCACJ,CAEA,iBACI,gBAAiB,CACjB,kBACJ,CAHA,YACI,gBAAiB,CACjB,kBACJ,CAEA,GACI,iBAAkB,CAClB,aAAc,CACd,UAAW,CACX,oBAAqB,CACrB,SAAU,CACV,UAAW,CACX,QAAS,CACT,4BACJ,CAEA,kCAMI,qBACJ,CAEA,SACI,QAAS,CACT,SAAU,CACV,QACJ,CAEA,SACI,eACJ,CAEA,qHAKI,gBACJ,CAEA,MAEI,kBAAmB,CACnB,mBACJ,CAEA,wBAII,iBACJ,CAEA,GACI,eACJ,CAEA,GACI,kBACJ,CAEA,MAEI,cACJ,CAEA,GACI,iBAAmB,CACnB,iBACJ,CAEA,MACI,eACJ,CAEA,GACI,UAAW,CACX,iBAAkB,CAClB,WAAY,CACZ,aAAc,CACd,eAAgB,CAChB,gBACJ,CAEA,GACI,cAAiB,CACjB,eACJ,CAEA,WACI,cAAe,CACf,eAAwB,CACxB,mBACJ,CAEA,iBACI,oBAAqB,CACrB,wBAA2B,CAC3B,cAAgB,CAChB,UACJ,CAEA,wBACI,qBACJ,CAEA,gBACI,eACJ,CACA,kBACI,eACJ,CAEA,EACI,aAAc,CACd,oBACJ,CAEA,kBAMI,YAAa,CACb,gBAAiB,CACjB,eAAgB,CAChB,iCAAkC,CAClC,qBACJ,CAEA,GACI,eAAmB,CACnB,gBAAiB,CACjB,eAAgB,CAChB,sBACJ,CACA,yBACI,GACI,gBACJ,CACJ,CAEA,GACI,mBAAuB,CACvB,gBAAiB,CACjB,eACJ,CACA,yBACI,GACI,gBACJ,CACJ,CAEA,GACI,mBAAuB,CACvB,gBAAiB,CACjB,eACJ,CACA,yBACI,GACI,gBACJ,CACJ,CAEA,GACI,mBAAuB,CACvB,cACJ,CACA,yBACI,GACI,gBACJ,CACJ,CAEA,GAEI,cACJ,CAEA,MAJI,mBAOJ,CAHA,GAEI,gBACJ","file":"global.css","sourcesContent":["/* Reset\n/* ---------------------------------------------------------- */\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n margin: 0;\n padding: 0;\n border: 0;\n font: inherit;\n font-size: 100%;\n vertical-align: baseline;\n}\nbody {\n line-height: 1;\n}\nol,\nul {\n list-style: none;\n}\nblockquote,\nq {\n quotes: none;\n}\nblockquote:before,\nblockquote:after,\nq:before,\nq:after {\n content: \"\";\n content: none;\n}\ntable {\n border-spacing: 0;\n border-collapse: collapse;\n}\nimg {\n display: block;\n max-width: 100%;\n height: auto;\n}\nhtml {\n box-sizing: border-box;\n font-family: sans-serif;\n\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\n*,\n*:before,\n*:after {\n box-sizing: inherit;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nb,\nstrong {\n font-weight: bold;\n}\ni,\nem,\ndfn {\n font-style: italic;\n}\nh1 {\n margin: 0.67em 0;\n font-size: 2em;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nmark {\n background-color: #fdffb6;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nkbd {\n padding: 3px 5px;\n font-family: var(--font-mono);\n font-size: 1.5rem;\n background: #f6f8fa;\n border: 1px solid rgba(124, 139, 154, 0.25);\n border-radius: 6px;\n box-shadow: inset 0 -1px 0 rgba(124, 139, 154, 0.25);\n}\n@media (max-width: 600px) {\n kbd {\n font-size: 1.3rem;\n }\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n margin: 0; /* 3 */\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n}\nbutton {\n overflow: visible;\n border: none;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\n/* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n cursor: pointer; /* 3 */\n\n -webkit-appearance: button; /* 2 */\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\ninput {\n line-height: normal;\n}\ninput:focus {\n outline: none;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n box-sizing: content-box; /* 2 */\n\n -webkit-appearance: textfield; /* 1 */\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nlegend {\n padding: 0; /* 2 */\n border: 0; /* 1 */\n}\ntextarea {\n overflow: auto;\n}\ntable {\n border-spacing: 0;\n border-collapse: collapse;\n}\ntd,\nth {\n padding: 0;\n}\n\n/* ==========================================================================\n Base styles: opinionated defaults\n ========================================================================== */\n\nhtml {\n font-size: 62.5%;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n color: var(--color-darkgrey);\n font-family: var(--font-sans);\n font-size: 1.6rem;\n line-height: 1.6em;\n font-weight: 400;\n font-style: normal;\n letter-spacing: 0;\n text-rendering: optimizeLegibility;\n background: #fff;\n\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n -moz-font-feature-settings: \"liga\" on;\n}\n\n::selection {\n text-shadow: none;\n background: #daf2fd;\n}\n\nhr {\n position: relative;\n display: block;\n width: 100%;\n margin: 2.5em 0 3.5em;\n padding: 0;\n height: 1px;\n border: 0;\n border-top: 1px solid #f0f0f0;\n}\n\naudio,\ncanvas,\niframe,\nimg,\nsvg,\nvideo {\n vertical-align: middle;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n border: 0;\n}\n\ntextarea {\n resize: vertical;\n}\n\n::not(.gh-content) p,\n::not(.gh-content) ul,\n::not(.gh-content) ol,\n::not(.gh-content) dl,\n::not(.gh-content) blockquote {\n margin: 0 0 1.5em 0;\n}\n\nol,\nul {\n padding-left: 1.3em;\n padding-right: 1.5em;\n}\n\nol ol,\nul ul,\nul ol,\nol ul {\n margin: 0.5em 0 1em;\n}\n\nul {\n list-style: disc;\n}\n\nol {\n list-style: decimal;\n}\n\nul,\nol {\n max-width: 100%;\n}\n\nli {\n padding-left: 0.3em;\n line-height: 1.6em;\n}\n\nli + li {\n margin-top: 0.5em;\n}\n\ndt {\n float: left;\n margin: 0 20px 0 0;\n width: 120px;\n color: #daf2fd;\n font-weight: 500;\n text-align: right;\n}\n\ndd {\n margin: 0 0 5px 0;\n text-align: left;\n}\n\nblockquote {\n margin: 1.5em 0;\n padding: 0 1.6em 0 1.6em;\n border-left: #daf2fd;\n}\n\nblockquote small {\n display: inline-block;\n margin: 0.8em 0 0.8em 1.5em;\n font-size: 0.9em;\n opacity: 0.8;\n}\n/* Quotation marks */\nblockquote small:before {\n content: \"\\2014 \\00A0\";\n}\n\nblockquote cite {\n font-weight: bold;\n}\nblockquote cite a {\n font-weight: normal;\n}\n\na {\n color: #15171A;\n text-decoration: none;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n line-height: 1.15;\n font-weight: 600;\n text-rendering: optimizeLegibility;\n letter-spacing: -0.01em;\n}\n\nh1 {\n margin: 0 0 0.5em 0;\n font-size: 4.8rem;\n font-weight: 700;\n letter-spacing: -0.015em;\n}\n@media (max-width: 600px) {\n h1 {\n font-size: 2.8rem;\n }\n}\n\nh2 {\n margin: 1.5em 0 0.5em 0;\n font-size: 2.8rem;\n font-weight: 700;\n}\n@media (max-width: 600px) {\n h2 {\n font-size: 2.3rem;\n }\n}\n\nh3 {\n margin: 1.5em 0 0.5em 0;\n font-size: 2.4rem;\n font-weight: 600;\n}\n@media (max-width: 600px) {\n h3 {\n font-size: 1.7rem;\n }\n}\n\nh4 {\n margin: 1.5em 0 0.5em 0;\n font-size: 2rem;\n}\n@media (max-width: 600px) {\n h4 {\n font-size: 1.7rem;\n }\n}\n\nh5 {\n margin: 1.5em 0 0.5em 0;\n font-size: 2rem;\n}\n\nh6 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.8rem;\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
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}ol,ul{list-style:none}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:#35373a;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;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 1em}ul{list-style:disc}ol{list-style:decimal}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}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-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:#c5d2d9;--color-wash:#e5eff5;--color-darkmode:#151719;--font-sans-serif:-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{display:flex;flex-direction:column;min-height:100vh}.site-content{flex-grow:1}.outer{position:relative;padding:0 4vmin}.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;flex-direction:column;justify-content:center;align-items:center;padding:6vw 3vw;min-height:200px;max-height:340px;text-align:center}.site-title{z-index:10;margin:0 0 .15em;padding:0}.site-logo{max-height:55px}.site-header-content p{z-index:10;max-width:600px;margin:0 auto;line-height:1.2em;opacity:.8}@media (max-width:600px){.site-header-content p{max-width:80vmin;font-size:1.8rem}}.site-home-header{position:relative;z-index:1000;overflow:hidden}.site-header-content{padding:18vmin 4vmin;font-size:2.5rem;font-weight:400;color:#fff;background:var(--ghost-accent-color)}.site-header-content.large{padding-top:28vmin;padding-bottom:28vmin}.gh-head{padding:1vmin 4vmin;font-size:1.6rem;line-height:1.3em;color:#fff;background:var(--ghost-accent-color)}.gh-head a{color:inherit;text-decoration:none}.gh-head-inner{display:grid;grid-gap:2.5vmin;grid-template-columns:auto auto 1fr;grid-auto-flow:row dense}.gh-head-brand{display:flex;align-items:center;height:40px;max-width:200px;text-align:center;word-break:break-all}.gh-head-logo{display:block;padding:10px 0;font-weight:700;font-size:2rem;line-height:1.2em;letter-spacing:-.02em}.gh-head-logo img{max-height:26px}.gh-head-menu{display:flex;align-items:center;font-weight:500}.gh-head-menu .nav{display:inline-flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0}.gh-head-menu .nav li{margin:0 2.5vmin 0 0;padding:0}.gh-head-menu .nav a{display:inline-block;padding:5px 0;opacity:.8}.gh-head-menu .nav a:hover{opacity:1}.gh-head-actions{display:flex;list-style:none;text-align:right}.gh-head-actions,.gh-head-actions-list{justify-content:flex-end;align-items:center}.gh-head-actions-list{display:inline-flex;flex-wrap:wrap}.gh-head-actions-list a:not([class]){display:inline-block;margin:0 0 0 1.5vmin;padding:5px 0}.gh-social{margin:0 1.5vmin 0 0}.gh-social a{opacity:.8}.gh-social a+a{margin-left:.8rem}.gh-social a:hover{opacity:1}.gh-social svg{height:22px;width:22px;fill:#fff}.gh-social-facebook svg{height:20px;width:20px}a.gh-head-button{display:block;padding:8px 15px;color:var(--button-text-color,var(--color-darkgrey));font-weight:500;letter-spacing:-.015em;font-size:1.5rem;line-height:1em;background:var(--button-bg-color,#fff);border-radius:30px}.gh-burger{position:relative;display:none;cursor:pointer}.gh-burger-box{position:relative;display:flex;align-items:center;justify-content:center;width:33px;height:33px}.gh-burger-inner{width:100%;height:100%}.gh-burger-box:before{transition:transform .3s cubic-bezier(.2,.6,.3,1),width .3s cubic-bezier(.2,.6,.3,1)}.gh-burger-box:before,.gh-burger-inner:after,.gh-burger-inner:before{position:absolute;display:block;top:0;left:0;bottom:0;margin:auto;content:"";width:100%;height:1px;background:currentcolor;will-change:transform,width}.gh-burger-inner:after,.gh-burger-inner:before{transition:transform .25s cubic-bezier(.2,.7,.3,1),width .25s cubic-bezier(.2,.7,.3,1)}.gh-burger-inner:before{transform:translatey(-6px)}.gh-burger-inner:after{transform:translatey(6px)}body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner:before{transform:translatey(-8px)}body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner:after{transform:translatey(8px)}.gh-head-open .gh-burger-box:before{width:0;transform:translatex(19px);transition:transform .2s cubic-bezier(.2,.7,.3,1),width .2s cubic-bezier(.2,.7,.3,1)}.gh-head-open .gh-burger-inner:before{width:26px;transform:translatex(6px) rotate(135deg)}.gh-head-open .gh-burger-inner:after{width:26px;transform:translatex(6px) rotate(-135deg)}@media (max-width:900px){.gh-burger{display:inline-block}#gh-head{transition:all .4s ease-out;overflow:hidden}#gh-head .gh-head-inner{height:100%;grid-template-columns:1fr}#gh-head .gh-head-brand{position:relative;z-index:10;grid-column-start:auto;max-width:none;display:flex;align-items:center;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.home-template #gh-head.has-cover .gh-head-brand{justify-content:flex-end}#gh-head .gh-head-menu{align-self:center;display:flex;flex-direction:column;align-items:center;text-align:center;margin:0 0 10vh;font-weight:300;font-size:3.6rem;line-height:1.1em}#gh-head .gh-head-menu .nav li{margin:5px 0}#gh-head .gh-head-menu .nav a{padding:8px 0}#gh-head .gh-head-menu .nav{display:flex;flex-direction:column;align-items:center}#gh-head .gh-head-actions{padding:20px 0;justify-content:center;text-align:left}#gh-head .gh-head-actions a{margin:0 10px}#gh-head .gh-head-actions,#gh-head .gh-head-menu{display:none}.gh-head-open{overflow:hidden;height:100vh}.gh-head-open #gh-head{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3999999;overflow-y:scroll}.gh-head-open #gh-head .gh-head-inner{grid-template-rows:auto 1fr auto}.gh-head-open #gh-head .gh-head-actions,.gh-head-open #gh-head .gh-head-menu{display:flex}}@media (max-width:600px){#gh-head .gh-head-menu{font-size:6vmin}}.home-template .gh-head.has-cover{position:absolute;top:0;right:0;left:0;z-index:2000;background:transparent}.home-template.gh-head-open .gh-head{background:var(--ghost-accent-color)}.home-template .gh-head.has-cover .gh-head-logo{display:none}.home-template .gh-head.has-cover .gh-head-menu{margin-left:-2.5vmin}.post-feed{position:relative;display:grid;grid-gap:4vmin;grid-template-columns:1fr 1fr 1fr;padding:4vmin 0}.post-feed.list{row-gap:6vmin;max-width:940px;margin:2vmin auto 0}@media (max-width:1000px){.post-feed{grid-template-columns:1fr 1fr}}@media (max-width:700px){.post-feed{grid-template-columns:1fr;grid-gap:40px}}.post-card{position:relative;flex:1 1 301px;display:flex;flex-direction:column;min-height:220px;background-size:cover;word-break:break-word}@media (max-width:700px){.post-card{min-height:auto}}.post-card-image-link{position:relative;display:block;overflow:hidden;border-radius:3px}.post-card-image{width:100%;height:200px;background:var(--color-lightgrey) no-repeat 50%;-o-object-fit:cover;object-fit:cover}.post-card-content-link{position:relative;display:block;color:var(--color-darkgrey)}.post-card-content-link:hover{text-decoration:none}.post-card-header{margin:20px 0 0}.post-feed .no-image .post-card-content-link{padding:0}.no-image .post-card-header{margin-top:0}.post-card-primary-tag{margin:0 0 .2em;color:var(--ghost-accent-color);font-size:1.2rem;font-weight:500;letter-spacing:.2px;text-transform:uppercase}.post-card-title{margin:0 0 .4em;font-size:2.4rem;transition:color .2s ease-in-out}.no-image .post-card-title{margin-top:0}.has-serif-title .post-card-title{font-family:var(--font-serif)}.post-card-content{flex-grow:1;display:flex;flex-direction:column}.post-card-excerpt{max-width:56em;color:#60757e;font-family:var(--font-serif)}.has-sans-body .post-card-excerpt{font-family:var(--font-sans-serif)}.post-card-excerpt p{margin-bottom:1em;display:-webkit-box;overflow-y:hidden;-webkit-line-clamp:3;-webkit-box-orient:vertical;word-break:break-word}.post-card-meta{display:flex;align-items:center;padding:0}.author-profile-image,.avatar-wrapper{display:block;width:100%;height:100%;background:#e4eaed;border-radius:100%;-o-object-fit:cover;object-fit:cover}.post-card-meta .avatar-wrapper,.post-card-meta .profile-image-wrapper{position:relative}.author-list{display:flex;flex-wrap:wrap;margin:0 0 0 4px;padding:0;list-style:none}.author-list-item{position:relative;flex-shrink:0;margin:0;padding:0}.static-avatar{display:block;overflow:hidden;margin:0 0 0 -6px;width:36px;height:36px;border-radius:100%;box-shadow:0 0 0 1px hsla(0,0%,100%,.2)}.post-card-byline-content{flex:1 1 50%;display:flex;flex-direction:column;margin:0 0 0 8px;color:#90a2aa;font-size:1.4rem;line-height:1.2em;font-weight:400}.post-card-byline-content span{margin:0}.post-card-byline-content a{color:#373c44;font-weight:600}.post-card-byline-date{font-size:1.3rem;line-height:1.5em}.post-card-byline-date .bull{display:inline-block;margin:0 2px;opacity:.6}.single-author-byline{display:flex;flex-direction:column;margin-left:5px;color:#5c7078;font-size:1.3rem;line-height:1.4em;font-weight:500}.single-author{display:flex;align-items:center}.single-author .static-avatar{margin-left:-2px}.single-author-name{display:inline-block}@media (min-width:701px){.post-feed.list .post-card-large{grid-column:1/span 3;display:grid;grid-gap:4vmin;grid-template-columns:3fr 5fr;min-height:auto;border-top:0}.post-feed.list .post-card-large.no-image{grid-template-columns:1fr}.post-feed.list .post-card-large:not(.no-image) .post-card-header{margin-top:0}.post-feed.list .post-card-large .post-card-content{justify-content:flex-start;margin-top:-6px}}@media (min-width:1001px){.post-card-large{grid-column:1/span 3;display:grid;grid-gap:4vmin;grid-template-columns:1fr 1fr 1fr;min-height:280px;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:1/span 2;margin-bottom:0;min-height:380px}.post-feed.list .post-card-large .post-card-image-link{grid-column:1/span 1;height:-webkit-max-content;height:-moz-max-content;height:max-content;min-height:auto}.post-feed.list .post-card-large .post-card-image-link:after{content:"";display:block;padding-bottom:60%}.post-card-large .post-card-image{position:absolute;width:100%;height:100%}.post-card-large .post-card-content{justify-content:center}.post-card-large .post-card-title{margin-top:0;font-size:3.2rem}.post-feed.list .post-card-large .post-card-title{font-size:2.4rem}.post-card-large .post-card-excerpt p{font-size:1.7rem;line-height:1.55em;-webkit-line-clamp:8}}@media (max-width:500px){.post-card-title{font-size:1.9rem}.post-card-excerpt{font-size:1.6rem}}.article{padding:8vmin 0;word-break:break-word}.article-header{padding:0 0 6vmin}.article-tag{display:flex;justify-content:flex-start;align-items:center;margin:0 0 .5rem;color:var(--color-midgrey);font-size:1.3rem;line-height:1.4em;letter-spacing:.02em;font-weight:600;text-transform:uppercase}.article-tag a{color:var(--ghost-accent-color)}.article-title{color:#0a0b0c}.has-serif-title .article-title{font-family:var(--font-serif)}.article-excerpt{margin:0 0 1rem;font-size:2rem;line-height:1.4em;opacity:.6}.gh-canvas .article-image{grid-column:wide-start/wide-end;width:100%;margin:6vmin 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:600px){.article-excerpt{font-size:1.8rem}}.gh-canvas{display:grid;grid-template-columns:[full-start] minmax(4vmin,auto) [wide-start] minmax(auto,240px) [main-start] min(720px,calc(100% - 8vw)) [main-end] minmax(auto,240px) [wide-end] minmax(4vmin,auto) [full-end]}.gh-canvas>*{grid-column:main-start/main-end}.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:4vmin;margin-bottom:0}.gh-content>[id]{margin:0;color:var(--color-darkgrey)}.has-serif-title .gh-content>[id]{font-family: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:6vmin}.gh-content>blockquote+*,.gh-content>hr+*{margin-top:6vmin!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(--font-serif);font-weight:400;font-size:2.1rem;line-height:1.6em}.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 .gh-content .kg-callout-card .kg-callout-text,.has-sans-body .gh-content .kg-toggle-card .kg-toggle-content>ol,.has-sans-body .gh-content .kg-toggle-card .kg-toggle-content>p,.has-sans-body .gh-content .kg-toggle-card .kg-toggle-content>ul,.has-sans-body .gh-content>blockquote,.has-sans-body .gh-content>dl,.has-sans-body .gh-content>ol,.has-sans-body .gh-content>p,.has-sans-body .gh-content>ul{font-family: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)}@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.7rem}.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.5rem}.gh-content blockquote:not([class]):before{left:-4vmin}}.gh-content .kg-card+:not(.kg-card),.gh-content :not(.kg-card):not([id])+.kg-card{margin-top:6vmin;margin-bottom:0}.kg-embed-card{display:flex;flex-direction:column;align-items:center;width:100%}.kg-image-card img{margin:auto}.has-serif-title .kg-toggle-card .kg-toggle-heading-text{font-family: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 .kg-blockquote-alt{font-family: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:#0a0b0c}.has-serif-title .kg-header-card h2.kg-header-card-header{font-family:var(--font-serif)}figcaption{padding:1.5rem 1.5rem 0;text-align:center;color:rgba(0,0,0,.5);font-weight:600;font-size:1.3rem;line-height:1.4em}figcaption strong{color:rgba(0,0,0,.8)}figcaption a{color:var(--ghost-accent-color)}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}.post-full-content table{display:inline-block;overflow-x:auto;margin:.5em 0 2.5em;max-width:100%;width:auto;border-spacing:0;border-collapse:collapse;font-family:var(--font-sans-serif);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}.post-full-content table td:first-child{background-image:linear-gradient(90deg,#fff 50%,hsla(0,0%,100%,0));background-size:20px 100%;background-repeat:no-repeat}.post-full-content 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}.post-full-content 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}.post-full-content table td,.post-full-content table th{padding:6px 12px;border:1px solid #e2ecf3}.article-byline{display:flex;justify-content:space-between;margin:20px 0 0}.article-byline-content{flex-grow:1;display:flex;align-items:center}.article-byline-content .author-list{justify-content:flex-start;padding:0 12px 0 0}.article-byline-meta{color:#738a94;font-size:1.4rem;line-height:1.2em}.article-byline-meta h4{margin:0 0 3px;font-size:1.6rem}.article-byline-meta .bull{display:inline-block;margin:0 2px;opacity:.6}.author-avatar{display:block;overflow:hidden;margin:0 -4px;width:50px;height:50px;border:2px solid #fff;border-radius:100%;transition:all .5s cubic-bezier(.4,.01,.165,.99) .7s}.basic-info .avatar-wrapper{position:relative;margin:0;width:60px;height:60px;border:none;background:rgba(229,239,245,.1)}.basic-info .avatar-wrapper svg{margin:0;width:60px;height:60px;opacity:.15}.page-template .article-title{margin-bottom:0}.footer-cta{position:relative;margin-bottom:-40px;padding:9vmin 4vmin 10vmin;color:#fff;text-align:center;background:var(--color-darkgrey)}.footer-cta.cta-alt{padding:2vmin 4vmin 12vmin;background:transparent}.footer-cta h2{margin:0 0 30px;font-size:3.2rem}.footer-cta.cta-alt h2{color:var(--color-darkgrey)}@media (max-width:600px){.footer-cta h2{font-size:2.65rem}}.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.8rem;color:var(--color-midgrey);background:#fff;border-radius:8px}.footer-cta.cta-alt .footer-cta-button{border:1px solid var(--color-lightgrey)}.footer-cta-button span{display:inline-block;padding:10px 15px;color:#fff;font-weight:500;background:var(--ghost-accent-color);border-radius:5px}.read-more-wrap{width:100%;padding:4vmin;margin:40px auto -40px;border-bottom:1px solid hsla(0,0%,100%,.1);background:#0a0b0c}.read-more{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:4vmin}.read-more .post-card-title{color:#fff;opacity:.8}.read-more .post-card-excerpt{color:hsla(0,0%,100%,.6)}.read-more .post-card-byline-content a{color:#fff}@media (max-width:1000px){.read-more{grid-template-columns:1fr 1fr}.read-more article:nth-child(3){display:none}}@media (max-width:700px){.read-more{grid-template-columns:1fr}.read-more article:nth-child(2){display:none}}.author-template .posts{position:relative;height:100%;display:grid;grid-template-columns:200px 1fr 1fr;grid-gap:4vmin}.author-template .posts .post-feed{grid-column:2/4;grid-template-columns:1fr 1fr}.author-profile{padding:4vmin 0}.author-profile-content{height:auto;position:-webkit-sticky;position:sticky;top:4vmin;font-size:1.4rem;line-height:1.4em}.author-profile-pic{display:block;width:150px;height:150px;-o-object-fit:cover;object-fit:cover;margin:0 0 2rem;background:#e4eaed;border-radius:50%}.author-profile h1{margin:0 0 .3em;font-size:2rem}.author-profile p{margin:0 0 1.5em;color:#60757e}.author-profile-location{margin:0 0 1.5em;font-weight:700}.author-profile-social-link{display:block;padding:0 0 5px;font-size:1.3rem;color:#60757e;text-overflow:ellipsis;overflow:hidden;max-width:100%;white-space:nowrap}.author-profile-social-link:hover{color:var(--color-darkgrey)}@media (max-width:900px){.author-template .posts .post-feed{grid-template-columns:1fr}}@media (max-width:650px){.author-template .posts{grid-template-columns:1fr;grid-gap:0}.author-template .posts .post-feed{grid-column:1/auto}.author-profile{padding-right:0}.author-profile-content{display:flex;flex-direction:column;align-items:center;text-align:center}}.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}.error-content{padding:14vw 4vw 6vw}.error-message{padding-bottom:10vw;text-align:center}.error-code{margin:0;color:var(--ghost-accent-color);font-size:12vw;line-height:1em;letter-spacing:-5px}.error-description{margin:0;color:var(--color-midgrey);font-size:3.2rem;line-height:1.3em;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:40px 0 0;padding:40px 4vmin 140px;color:#fff;background:#0a0b0c}.site-footer .inner{display:grid;grid-gap:40px;grid-template-columns:auto 1fr auto;color:hsla(0,0%,100%,.7);font-size:1.3rem}.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 0 20px;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:800px){.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}}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:#212427}html.dark-mode .post-card,html.dark-mode .post-card:hover{border-bottom-color:#282b2f}html.dark-mode .post-card-byline-content a{color:hsla(0,0%,100%,.75)}html.dark-mode .post-card-byline-content a:hover{color:#fff}html.dark-mode .post-card-image{background:var(--color-darkmode)}html.dark-mode .post-card-title{color:hsla(0,0%,100%,.85)}html.dark-mode .post-card-excerpt{color:#90a2aa}html.dark-mode .post-full-content{background:var(--color-darkmode)}html.dark-mode .article-title{color:hsla(0,0%,100%,.9)}html.dark-mode .article-excerpt{color:#90a2aa}html.dark-mode .post-full-image{background-color:#282b2f}html.dark-mode .article-byline{border-top-color:#383d43}html.dark-mode .article-byline-meta h4 a{color:hsla(0,0%,100%,.75)}html.dark-mode .article-byline-meta h4 a:hover{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:#030303}html.dark-mode .gh-content :not(pre)>code{background:#23262b;border-color:#282b2f;color:var(--color-wash)}html.dark-mode .gh-content a:not(.kg-btn):not(.kg-nft-card-container):not(.kg-product-card-button):not(.kg-header-card-button),html.dark-mode .gh-content em,html.dark-mode .gh-content strong{color:#fff}html.dark-mode .gh-content code{color:#fff;background:#000}html.dark-mode hr{border-top-color:#282b2f}html.dark-mode .gh-content hr:after{background:#282b2f;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 td:first-child{background-image:linear-gradient(90deg,var(--color-darkmode) 50%,rgba(21,23,25,0))}html.dark-mode .gh-content table td:last-child{background-image:linear-gradient(270deg,var(--color-darkmode) 50%,rgba(21,23,25,0))}html.dark-mode .gh-content table th{color:hsla(0,0%,100%,.85);background-color:#282b2f}html.dark-mode .gh-content table td,html.dark-mode .gh-content table th{border:1px solid #282b2f}html.dark-mode .gh-content input{color:#303a3e}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:#0a0b0c}html.dark-mode .kg-header-card.kg-style-light{background:#202328}html.dark-mode .kg-header-card h2.kg-header-card-header,html.dark-mode .kg-header-card h3.kg-header-card-subheader{color:#fff}@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:#212427}html.auto-color .post-card,html.auto-color .post-card:hover{border-bottom-color:#282b2f}html.auto-color .post-card-byline-content a{color:hsla(0,0%,100%,.75)}html.auto-color .post-card-byline-content a:hover{color:#fff}html.auto-color .post-card-image{background:var(--color-darkmode)}html.auto-color .post-card-title{color:hsla(0,0%,100%,.85)}html.auto-color .post-card-excerpt{color:#90a2aa}html.auto-color .post-full-content{background:var(--color-darkmode)}html.auto-color .article-title{color:hsla(0,0%,100%,.9)}html.auto-color .article-excerpt{color:#90a2aa}html.auto-color .post-full-image{background-color:#282b2f}html.auto-color .article-byline{border-top-color:#383d43}html.auto-color .article-byline-meta h4 a{color:hsla(0,0%,100%,.75)}html.auto-color .article-byline-meta h4 a:hover{color:#fff}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:#030303}html.auto-color .gh-content :not(pre)>code{background:#23262b;border-color:#282b2f;color:var(--color-wash)}html.auto-color .gh-content a:not(.kg-btn):not(.kg-nft-card-container):not(.kg-product-card-button):not(.kg-header-card-button),html.auto-color .gh-content em,html.auto-color .gh-content strong{color:#fff}html.auto-color .gh-content code{color:#fff;background:#000}html.auto-color hr{border-top-color:#282b2f}html.auto-color .gh-content hr:after{background:#282b2f;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 td:first-child{background-image:linear-gradient(90deg,var(--color-darkmode) 50%,rgba(21,23,25,0))}html.auto-color .gh-content table td:last-child{background-image:linear-gradient(270deg,var(--color-darkmode) 50%,rgba(21,23,25,0))}html.auto-color .gh-content table th{color:hsla(0,0%,100%,.85);background-color:#282b2f}html.auto-color .gh-content table td,html.auto-color .gh-content table th{border:1px solid #282b2f}html.auto-color .gh-content input{color:#303a3e}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:#0a0b0c}html.auto-color .kg-header-card.kg-style-light{background:#202328}html.auto-color .kg-header-card h2.kg-header-card-header,html.auto-color .kg-header-card h3.kg-header-card-subheader{color:#fff}}
|
|
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}ol,ul{list-style:none}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(--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 1em}ul{list-style:disc}ol{list-style:decimal}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}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-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{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:6.4vmin;padding-bottom:6.4vmin;text-align:center;color:var(--color-darkgrey)}.has-cover-image .site-header-content{min-height:560px;background-color:var(--ghost-accent-color);color:#fff}body:not(.has-cover-image) .site-header-content:not(.left-aligned){padding-bottom:max(4.8vmin,24px)}.site-header-content.left-aligned{padding-bottom:0;text-align:left}.has-cover-image .site-header-content.left-aligned{align-items:flex-end;padding-bottom:6.4vmin}.site-header-content.no-content{padding-top:0}.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 .site-title{font-family:var(--font-serif)}.has-cover-image .site-title{font-size:6rem}.site-header-content.left-aligned .site-title{font-size:4.4rem}.has-cover-image .site-header-content.left-aligned .site-title{font-size:4.6rem}.site-description{display:inline-block;z-index:10;max-width:560px;font-size:2.4rem;font-weight:500;line-height:1.4}:is(.site-logo,.site-title)+.site-description{margin-top:8px;font-size:2.1rem;font-weight:400}.site-logo+.site-description{margin-top:20px}.site-title+.site-description{color:var(--color-secondary-text)}.has-cover-image .site-description{font-size:3.2rem;letter-spacing:-.005em;color:#fff}.has-cover-image :is(.site-logo,.site-title)+.site-description{font-size:2.4rem}.has-cover-image .site-header-content.left-aligned :is(.site-logo,.site-title)+.site-description{font-size:2.2rem}@media (max-width:767px){.has-cover-image .site-header-content{padding-bottom:36px;min-height:240px}.site-header-inner{gap:16px}.site-logo{max-width:60%}.site-title{font-size:3.4rem!important}.site-description{font-size:1.9rem!important}.site-logo+.site-description{margin-top:12px!important}.site-title+.site-description{margin-top:4px!important}}.gh-head{padding-top:min(24px,3.6vmin);padding-bottom:min(24px,3.6vmin);font-size:1.6rem;line-height:1.3em;background-color:#fff}.has-cover-image:not(.home-template) .gh-head{background-color:var(--ghost-accent-color);color:#fff}.home-template.has-cover-image .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;grid-gap:40px;grid-template-columns:auto auto 1fr;grid-auto-flow:row dense}.gh-head-brand{display:flex;align-items:center;height:40px;max-width:400px;word-break:break-all}.gh-head-logo{display:block;font-weight:800;font-size:2.6rem;letter-spacing:-.02em;color:inherit}.gh-head-logo.no-image{margin-top:-2px}.has-cover-image .gh-head-logo{color:#fff}.no-logo .gh-head-logo{display:none}.gh-head-logo img{max-height:26px}.gh-head-menu{display:flex;align-items:center;margin-top:1px;font-weight:500}.no-logo .gh-head-menu{margin-left:-40px}.gh-head-menu .nav{display:inline-flex;flex-wrap:wrap;align-items:center;gap:32px;list-style:none;margin:0;padding:0}.gh-head-menu .nav li{margin:0;padding:0}.gh-head-menu .nav a{display:inline-block;line-height:1.7;color:inherit}.gh-head-actions{display:flex;justify-content:flex-end;align-items:center;list-style:none;text-align:right}.gh-head-button{display:inline-flex;align-items:center;padding:8px 16px;height:40px;font-weight:600;letter-spacing:-.005em;font-size:1.5rem;border-radius:6px;color:#fff;background:var(--ghost-accent-color)}.has-cover-image .gh-head-button{color:var(--color-darkgrey);background:#fff}.gh-burger{position:relative;display:none;cursor:pointer}.gh-burger-box{position:relative;display:flex;align-items:center;justify-content:center;width:33px;height:33px}.has-cover-image .gh-burger-box{color:#fff}.gh-burger-inner{width:100%;height:100%}.gh-burger-box:before{transition:transform .3s cubic-bezier(.2,.6,.3,1),width .3s cubic-bezier(.2,.6,.3,1)}.gh-burger-box:before,.gh-burger-inner:after,.gh-burger-inner:before{position:absolute;display:block;top:0;left:0;bottom:0;margin:auto;content:"";width:100%;height:1px;background:currentcolor;will-change:transform,width}.gh-burger-inner:after,.gh-burger-inner:before{transition:transform .25s cubic-bezier(.2,.7,.3,1),width .25s cubic-bezier(.2,.7,.3,1)}.gh-burger-inner:before{transform:translatey(-6px)}.gh-burger-inner:after{transform:translatey(6px)}body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner:before{transform:translatey(-8px)}body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner:after{transform:translatey(8px)}.gh-head-open .gh-burger-box:before{width:0;transform:translatex(19px);transition:transform .2s cubic-bezier(.2,.7,.3,1),width .2s cubic-bezier(.2,.7,.3,1)}.gh-head-open .gh-burger-inner:before{width:26px;transform:translatex(6px) rotate(135deg)}.gh-head-open .gh-burger-inner:after{width:26px;transform:translatex(6px) rotate(-135deg)}@media (max-width:991px){.gh-burger{display:inline-block}#gh-head{overflow:hidden}#gh-head .gh-head-inner{height:100%;grid-template-columns:1fr}#gh-head .gh-head-brand{position:relative;z-index:10;grid-column-start:auto;max-width:none;display:flex;align-items:center;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.no-logo #gh-head .gh-head-brand{justify-content:flex-end}#gh-head .gh-head-menu{align-self:center;text-align:center;margin:0 0 10vh;font-weight:300;font-size:3.6rem;line-height:1.1em}#gh-head .gh-head-menu,#gh-head .gh-head-menu .nav{display:flex;flex-direction:column;align-items:center}#gh-head .gh-head-menu .nav{gap:16px;font-weight:500}#gh-head .gh-head-actions{padding:20px 0;justify-content:center;text-align:left}#gh-head .gh-head-actions a{margin:0 10px}#gh-head .gh-head-actions,#gh-head .gh-head-menu{display:none}.gh-head-open{overflow:hidden;height:100vh}.gh-head-open #gh-head{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3999999;overflow-y:scroll}.gh-head-open #gh-head .gh-head-inner{grid-template-rows:auto 1fr auto}.gh-head-open #gh-head .gh-head-actions,.gh-head-open #gh-head .gh-head-menu{display:flex}}@media (max-width:600px){#gh-head .gh-head-menu{font-size:6vmin}}.has-cover-image.gh-head-open .gh-head{background:var(--ghost-accent-color)}.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;display:block;margin-bottom:32px}.post-card-image-link:after{content:"";display:block;padding-bottom:55%}.post-card.keep-ratio:not(.post-card-large):not(.post-card-full) .post-card-image-link:after{display:none}.post-card-image{position:absolute;inset:0;width:100%;height:100%;background:var(--color-lightgrey) no-repeat 50%;-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-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-primary-tag{margin:0 0 10px;color:var(--color-secondary-text);font-size:1.4rem;font-weight:600;letter-spacing:-.005em;line-height:1}.post-card-title{margin:0;font-size:2.6rem;font-weight:800}.no-image .post-card-title{margin-top:0}.has-serif-title .post-card-title{font-family:var(--font-serif);letter-spacing:-.005em}.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 .post-card-excerpt{font-family: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}.post-card-meta{display:flex;align-items:center;margin-top:12px;padding:0;font-size:1.3rem;color:var(--color-secondary-text)}.post-card-meta .sep{margin:0 4px}.author-profile-image{display:block;width:100%;height:100%;background:#fff;border-radius:100%;-o-object-fit:cover;object-fit:cover}.author-list{display:flex;flex-wrap:wrap;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-primary-tag{margin-bottom:12px}.post-card-large .post-card-title{margin-top:0;font-size:4.4rem;line-height:1}.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-primary-tag{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}}.article{padding:max(8vmin,40px) 0 max(8vmin,64px);word-break:break-word}.page-template .article{padding-top:max(12vmin,64px)}.article-header{padding:0 0 max(6.4vmin,40px)}.page-template .article-header{padding-bottom: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;color:var(--color-darkgrey)}.has-serif-title .article-title{font-family: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{display:grid;grid-template-columns:[full-start] minmax(max(4vmin,20px),auto) [wide-start] minmax(auto,240px) [main-start] min(720px,calc(100% - 8vw)) [main-end] minmax(auto,240px) [wide-end] minmax(max(4vmin,20px),auto) [full-end]}.gh-canvas>*{grid-column:main-start/main-end}.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>[id]{margin:0;color:var(--color-darkgrey)}.has-serif-title .gh-content>[id]{font-family: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(--font-serif);font-weight:400;font-size:2rem;line-height:1.6em}.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 .gh-content .kg-callout-card .kg-callout-text,.has-sans-body .gh-content .kg-toggle-card .kg-toggle-content>ol,.has-sans-body .gh-content .kg-toggle-card .kg-toggle-content>p,.has-sans-body .gh-content .kg-toggle-card .kg-toggle-content>ul,.has-sans-body .gh-content>blockquote,.has-sans-body .gh-content>dl,.has-sans-body .gh-content>ol,.has-sans-body .gh-content>p,.has-sans-body .gh-content>ul{font-family: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)}@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;margin-bottom:0}.kg-embed-card{display:flex;flex-direction:column;align-items:center;width:100%}.kg-image-card img{margin:auto}.has-serif-title .kg-toggle-card .kg-toggle-heading-text{font-family: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 .kg-blockquote-alt{font-family: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:#0a0b0c}.has-serif-title .kg-header-card h2.kg-header-card-header{font-family: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}.post-full-content table{display:inline-block;overflow-x:auto;margin:.5em 0 2.5em;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}.post-full-content table td:first-child{background-image:linear-gradient(90deg,#fff 50%,hsla(0,0%,100%,0));background-size:20px 100%;background-repeat:no-repeat}.post-full-content 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}.post-full-content 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}.post-full-content table td,.post-full-content table th{padding:6px 12px;border:1px solid #e2ecf3}.article-byline{display:flex;justify-content:space-between;margin:min(24px,5.6vmin) 0 0}.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}.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 .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 .footer-cta-title{font-family: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:#c2c2c2}.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:max(12vmin,72px)}.read-more{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:4vmin}@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}}.author-profile-pic{display:block;width:80px;height:80px;-o-object-fit:cover;object-fit:cover;margin:0 0 2rem;background:#fff;border-radius:50%}.author-profile-footer{margin-top:16px}.author-profile-location{font-weight:700}.author-profile-meta{display:flex;gap:10px}.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}.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}.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:#0a0b0c}.site-footer .inner{display:grid;grid-gap:40px;grid-template-columns:auto 1fr auto;color:hsla(0,0%,100%,.7);font-size:1.3rem}.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 0 20px;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{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:#212427}html.dark-mode figcaption a{color:#fff}html.dark-mode .gh-head{background:var(--color-darkmode);color:#fff}html.dark-mode .gh-burger-box,html.dark-mode .site-header-content{color:#fff}html.dark-mode .post-card-image{background:var(--color-darkmode)}html.dark-mode :is(.post-card-primary-tag,.post-card-meta,.article-tag a,.byline-meta-content){color:#5f5f5f}html.dark-mode .post-card-title{color:#fff}html.dark-mode .post-card-excerpt{color:var(--color-secondary-text)}html.dark-mode .article-title{color:#fff}html.dark-mode .article-excerpt{color:var(--color-secondary-text)}html.dark-mode .post-full-image{background-color:#282b2f}html.dark-mode .article-byline{border-top-color:#383d43}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:#030303}html.dark-mode .gh-content :not(pre)>code{background:#23262b;border-color:#282b2f;color:var(--color-wash)}html.dark-mode .gh-content a:not(.kg-btn):not(.kg-nft-card-container):not(.kg-product-card-button):not(.kg-header-card-button),html.dark-mode .gh-content em,html.dark-mode .gh-content strong{color:#fff}html.dark-mode .gh-content code{color:#fff;background:#000}html.dark-mode hr{border-top-color:#282b2f}html.dark-mode .gh-content hr:after{background:#282b2f;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 td:first-child{background-image:linear-gradient(90deg,var(--color-darkmode) 50%,rgba(21,23,25,0))}html.dark-mode .gh-content table td:last-child{background-image:linear-gradient(270deg,var(--color-darkmode) 50%,rgba(21,23,25,0))}html.dark-mode .gh-content table th{color:hsla(0,0%,100%,.85);background-color:#282b2f}html.dark-mode .gh-content table td,html.dark-mode .gh-content table th{border:1px solid #282b2f}html.dark-mode .gh-content input{color:#303a3e}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:#0a0b0c}html.dark-mode .kg-header-card.kg-style-light{background:#202328}html.dark-mode .footer-cta-title,html.dark-mode .kg-header-card h2.kg-header-card-header,html.dark-mode .kg-header-card h3.kg-header-card-subheader{color:#fff}
|
|
2
2
|
/*# sourceMappingURL=screen.css.map */
|