From 2cbdde19465ceacdbcc0202d6bc9a7729edc17a9 Mon Sep 17 00:00:00 2001 From: Sergio Durzu Date: Wed, 26 Aug 2026 14:39:29 +0200 Subject: [PATCH 01/12] chore: initialize cosmonauta theme --- .github/workflows/deploy-theme.yml | 41 +++++++++ .github/workflows/test.yml | 9 +- README.md | 129 ++++++++++++++--------------- package.json | 2 +- 4 files changed, 110 insertions(+), 71 deletions(-) create mode 100644 .github/workflows/deploy-theme.yml diff --git a/.github/workflows/deploy-theme.yml b/.github/workflows/deploy-theme.yml new file mode 100644 index 000000000..b5a23f67a --- /dev/null +++ b/.github/workflows/deploy-theme.yml @@ -0,0 +1,41 @@ +name: Deploy Ghost theme + +on: + push: + branches: + - main + +permissions: + contents: read + +concurrency: + group: ghost-production-theme + cancel-in-progress: true + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd + with: + persist-credentials: false + + - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 + + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e + with: + node-version: 22.12.0 + cache: pnpm + cache-dependency-path: pnpm-lock.yaml + + - run: pnpm install --frozen-lockfile + - run: pnpm test:ci + + - name: Deploy cosmonauta to Ghost + uses: TryGhost/action-deploy-theme@v2 + with: + api-url: ${{ secrets.GHOST_ADMIN_API_URL }} + api-key: ${{ secrets.GHOST_ADMIN_API_KEY }} + theme-name: cosmonauta + exclude: node_modules dist diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7a079a449..796d90c93 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,14 +1,17 @@ -name: Test +name: Validate theme on: pull_request: + push: + branches: + - main permissions: contents: read jobs: test: - name: Test + name: Validate runs-on: ubuntu-latest steps: @@ -20,7 +23,7 @@ jobs: - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e with: - node-version: lts/* + node-version: 22.12.0 cache: pnpm cache-dependency-path: pnpm-lock.yaml diff --git a/README.md b/README.md index 1401c7c71..954f6c906 100644 --- a/README.md +++ b/README.md @@ -1,97 +1,92 @@ -# Source +# Cosmonauta -The default theme for [Ghost](http://github.com/tryghost/ghost/). This is the latest development version of Source! If you're just looking to download the latest release, head over to the [releases](https://github.com/TryGhost/Source/releases) page. +Tema personalizzato di [Ghost](https://ghost.org/) per cosmonauta.dev. È un fork di [TryGhost/Source](https://github.com/TryGhost/Source), mantenuto per integrare in modo controllato le release ufficiali di Source. -  +## Architettura Git -# First time using a Ghost theme? +Questo è un repository Git indipendente, anche se la directory `cosmonauta_theme/` si trova nel workspace del repository infrastrutturale. Il repository padre lo ignora e non deve mai aggiungerne file o commit. -Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. +- `origin`: `git@github.com:arrubiu/cosmonauta_theme.git`, il fork di Cosmonauta. +- `upstream`: `https://github.com/TryGhost/Source.git`, il tema ufficiale Ghost. +- `main`: la sola branch distribuita in produzione. -This theme has lots of code comments to help explain what's going on just by reading the code. Once you feel comfortable with how everything works, we also have full [theme API documentation](https://ghost.org/docs/themes/) which explains every possible Handlebars helper and template. +Verificare la configurazione con: -**The main files are:** - -- `default.hbs` - The parent template file, which includes your global header/footer -- `home.hbs` - The homepage -- `index.hbs` - The main template to generate a list of posts -- `post.hbs` - The template used to render individual posts -- `page.hbs` - Used for individual pages -- `tag.hbs` - Used for tag archives, eg. "all posts tagged with `news`" -- `author.hbs` - Used for author archives, eg. "all posts written by Jamie" - -One neat trick is that you can also create custom one-off templates by adding the slug of a page to a template file. For example: - -- `page-about.hbs` - Custom template for an `/about/` page -- `tag-news.hbs` - Custom template for `/tag/news/` archive -- `author-ali.hbs` - Custom template for `/author/ali/` archive - - -# Development - -Source styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node](https://nodejs.org/) and [pnpm](https://pnpm.io/). After that, from the theme's root directory: - -```bash -# install dependencies -pnpm install - -# run development server -pnpm dev +```sh +git remote -v ``` -Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. +## Prerequisiti -The `zip` Gulp task packages the theme files into `dist/.zip`, which you can then upload to your site. +Servono Node 22, Corepack/pnpm e accesso al repository GitHub. -```bash -# create .zip file -pnpm zip +```sh +node --version +corepack --version +pnpm --version ``` -# Publishing a release - -Releases are shipped from an up-to-date, clean `main` branch in two steps. Before starting, configure `GST_TOKEN` with a GitHub token that can create releases in `TryGhost/Source`. +Il file `package.json` richiede Node almeno `22.12.0` e definisce la versione di pnpm da usare. Se necessario, attivare Corepack: -First bump the version. This updates `package.json`, then creates a commit and annotated `v` git tag: - -```bash -# pick one of: patch | minor | major (or an explicit version, e.g. 1.8.0) -pnpm version minor +```sh +corepack enable ``` -Then run `ship`: +## Sviluppo quotidiano -```bash -pnpm ship -``` +Dalla root di questo repository: -`pnpm ship`: +```sh +pnpm install --frozen-lockfile +git switch -c feature/nome-modifica +# modificare template, CSS, JavaScript o asset +pnpm test:ci +git add -A +git commit -m "feat: descrizione della modifica" +git push -u origin feature/nome-modifica +``` -1. Builds the theme zip and runs GScan. -2. Refuses to continue if the working tree is not clean after the build. -3. Pushes the version commit and tag. -4. Prompts for the minimum compatible Ghost version and creates a draft GitHub release with the generated changelog. +Aprire una pull request verso `main` e fare il merge solo quando la CI è verde. Solo un push risultante dal merge in `main` esegue il deploy su Ghost produzione; branch e pull request non ricevono segreti né pubblicano modifiche. -Review and publish the draft GitHub release after the command completes. The pushed theme tag, rather than the GitHub release, is what the next Ghost release uses when updating its bundled Source theme. +## Deploy iniziale e rollback -> [!NOTE] -> `pnpm version` requires an explicit version or bump type. Run it before `pnpm ship`; the ship command does not perform the bump itself. +1. In Ghost Admin creare una Custom Integration chiamata `GitHub Actions`. +2. Nel repository GitHub, aggiungere i secret Actions `GHOST_ADMIN_API_URL` e `GHOST_ADMIN_API_KEY` con i valori dell’integrazione. +3. Fare merge in `main` e verificare il workflow **Deploy Ghost theme** nella scheda Actions. +4. Dopo il primo deploy, attivare `cosmonauta` una volta in Ghost Admin → Design. -# PostCSS Features Used +I deploy successivi aggiornano il tema già attivo. Per annullare una pubblicazione errata, fare il revert del merge su `main`; il nuovo push ridistribuisce la versione precedente. -- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser. +## Ricevere gli aggiornamenti ufficiali +Su [TryGhost/Source](https://github.com/TryGhost/Source), selezionare **Watch → Custom → Releases**. Le notifiche segnalano nuove release stabili. Non usare il pulsante GitHub **Sync fork**, perché sincronizza il ramo di sviluppo anziché la release scelta. -# SVG Icons +## Aggiornare da una release di Source -Source uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`. +Eseguire i comandi seguenti dalla root di questo repository. Sostituire `` con il tag ufficiale scelto, per esempio `v1.7.2`. -You can add your own SVG icons in the same manner. +```sh +git switch main +git pull --ff-only origin main +git fetch upstream --tags +git tag --sort=-version:refname | head -n 20 +git switch -c update/source- +git merge --no-ff +pnpm install --frozen-lockfile +pnpm test:ci +git status +git add -A +git commit -m "chore: merge Source " +git push -u origin update/source- +``` -# Translations +Se Git segnala conflitti, risolverli prima di eseguire `git add -A` e il commit. In `package.json` preservare sempre `"name": "cosmonauta"`; accettare invece gli aggiornamenti ufficiali a dipendenze, versione e compatibilità Ghost quando appropriati. Aprire una pull request verso `main` indicando il tag importato, gli eventuali conflitti e l’esito di `pnpm test:ci`. Non fare push diretti a `main`. -Please see [@TryGhost/Themes/theme-translations/README.md](https://github.com/TryGhost/Themes/blob/main/packages/theme-translations/README.md) for how to build, edit, or contribute translations. +## Verifica locale -# Copyright & License +```sh +pnpm test:ci +pnpm zip +``` -Copyright (c) 2013-2026 Ghost Foundation - Released under the [MIT license](LICENSE). +`pnpm test:ci` crea il pacchetto e lo controlla con GScan per la compatibilità Ghost. L’archivio generato in `dist/` è locale e non va versionato. diff --git a/package.json b/package.json index 0258e69ee..c0898dc60 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "source", + "name": "cosmonauta", "description": "A default theme for the Ghost publishing platform", "demo": "https://source.ghost.io", "version": "1.7.2", From 77694ae6cdf59026111714f583bd07216082fd47 Mon Sep 17 00:00:00 2001 From: Sergio Durzu Date: Wed, 26 Aug 2026 14:43:43 +0200 Subject: [PATCH 02/12] fix: use a pnpm-compatible Node version in CI (#1) --- .github/workflows/deploy-theme.yml | 2 +- .github/workflows/test.yml | 2 +- README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy-theme.yml b/.github/workflows/deploy-theme.yml index b5a23f67a..f1cf5b6fc 100644 --- a/.github/workflows/deploy-theme.yml +++ b/.github/workflows/deploy-theme.yml @@ -25,7 +25,7 @@ jobs: - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e with: - node-version: 22.12.0 + node-version: 22.13.0 cache: pnpm cache-dependency-path: pnpm-lock.yaml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 796d90c93..ac4e5b6f1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e with: - node-version: 22.12.0 + node-version: 22.13.0 cache: pnpm cache-dependency-path: pnpm-lock.yaml diff --git a/README.md b/README.md index 954f6c906..cbfc13ecd 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ corepack --version pnpm --version ``` -Il file `package.json` richiede Node almeno `22.12.0` e definisce la versione di pnpm da usare. Se necessario, attivare Corepack: +Il file `package.json` richiede Node almeno `22.12.0`; la CI usa Node `22.13.0`, compatibile con pnpm 11.22. Se necessario, attivare Corepack: ```sh corepack enable From 805ef8620d7f1b2cef8c669ba8bdb3a2d8dc6ee8 Mon Sep 17 00:00:00 2001 From: Sergio Durzu Date: Wed, 26 Aug 2026 14:55:31 +0200 Subject: [PATCH 03/12] docs: describe local theme preview (#2) --- README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/README.md b/README.md index cbfc13ecd..61a7b57ce 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,25 @@ git push -u origin feature/nome-modifica Aprire una pull request verso `main` e fare il merge solo quando la CI è verde. Solo un push risultante dal merge in `main` esegue il deploy su Ghost produzione; branch e pull request non ricevono segreti né pubblicano modifiche. +## Anteprima locale senza ZIP + +Il repository infrastrutturale monta questa directory nel Ghost locale come +`/var/lib/ghost/content/themes/cosmonauta`. Dalla root del repository +infrastrutturale avviare Ghost, poi lasciare il watcher del tema attivo: + +```sh +./local.sh up +cd cosmonauta_theme +pnpm install --frozen-lockfile +pnpm dev +``` + +In Ghost Admin locale (`http://localhost:2368/ghost`) attivare `cosmonauta` +da **Settings → Design**. Le modifiche a CSS e JavaScript sono ricompilate dal +watcher; dopo modifiche a file `.hbs` o `package.json`, eseguire +`./local.sh restart` dalla root del repository infrastrutturale. Questo mount +esiste solo nell'ambiente locale e non carica nulla in produzione. + ## Deploy iniziale e rollback 1. In Ghost Admin creare una Custom Integration chiamata `GitHub Actions`. From bab8973a6e1d03bb5e6dfcb1d04915a5131c15a8 Mon Sep 17 00:00:00 2001 From: Sergio Durzu Date: Wed, 26 Aug 2026 15:00:10 +0200 Subject: [PATCH 04/12] feat: add theme build and update commands (#3) --- README.md | 36 +++++++------ theme.sh | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+), 14 deletions(-) create mode 100755 theme.sh diff --git a/README.md b/README.md index 61a7b57ce..995272f62 100644 --- a/README.md +++ b/README.md @@ -82,24 +82,32 @@ Su [TryGhost/Source](https://github.com/TryGhost/Source), selezionare **Watch ## Aggiornare da una release di Source -Eseguire i comandi seguenti dalla root di questo repository. Sostituire `` con il tag ufficiale scelto, per esempio `v1.7.2`. +Per ricevere e preparare un aggiornamento ufficiale, dalla root di questo +repository eseguire: ```sh -git switch main -git pull --ff-only origin main -git fetch upstream --tags -git tag --sort=-version:refname | head -n 20 -git switch -c update/source- -git merge --no-ff -pnpm install --frozen-lockfile -pnpm test:ci -git status -git add -A -git commit -m "chore: merge Source " -git push -u origin update/source- +./theme.sh update +``` + +Lo script confronta il tag ufficiale più recente con quello già integrato, +crea `update/source-`, esegue merge, installazione e `pnpm test:ci`, poi +pubblica il branch e apre una pull request verso `main`. Non aggiorna né fa +push diretto a `main`. + +Se trova conflitti, errori di test o errori di push, interrompe l’operazione, +conserva il branch di update e mostra i comandi per riprendere senza perdere +il lavoro. Quando si risolve un conflitto, preservare sempre +`"name": "cosmonauta"` in `package.json`. + +## Comando build locale + +```sh +./theme.sh build ``` -Se Git segnala conflitti, risolverli prima di eseguire `git add -A` e il commit. In `package.json` preservare sempre `"name": "cosmonauta"`; accettare invece gli aggiornamenti ufficiali a dipendenze, versione e compatibilità Ghost quando appropriati. Aprire una pull request verso `main` indicando il tag importato, gli eventuali conflitti e l’esito di `pnpm test:ci`. Non fare push diretti a `main`. +Rigenera CSS, JavaScript e traduzioni con `pnpm build`. Se Ghost locale è in +esecuzione, lo riavvia per ricaricare il tema; altrimenti completa il build +senza errore. ## Verifica locale diff --git a/theme.sh b/theme.sh new file mode 100755 index 000000000..2d8854742 --- /dev/null +++ b/theme.sh @@ -0,0 +1,148 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +theme_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +stack_dir="$(cd "$theme_dir/.." && pwd)" + +usage() { + cat <<'EOF' +Usage: ./theme.sh + +Commands: + build Build theme assets and restart local Ghost when it is running. + update Merge the latest official Source tag into a new branch, validate it, + push the branch, and open a GitHub pull request when gh is available. +EOF +} + +require_command() { + command -v "$1" >/dev/null || { + echo "Required command not found: $1" >&2 + exit 1 + } +} + +restart_local_ghost_if_running() { + local compose + + if [[ ! -f "$stack_dir/.env.local" ]]; then + echo "Local Ghost is not configured; skipping restart." + return + fi + + require_command docker + compose=(docker compose --env-file "$stack_dir/.env.local" -f "$stack_dir/compose.yml" -f "$stack_dir/compose.local.yml") + + if "${compose[@]}" ps -q cosmonauta_dev_ghost | grep -q .; then + echo "Restarting local Ghost so it reloads the theme..." + "$stack_dir/local.sh" restart + else + echo "Local Ghost is not running; build completed without a restart." + fi +} + +build() { + require_command pnpm + pnpm build + restart_local_ghost_if_running +} + +latest_upstream_tag() { + git ls-remote --tags --refs upstream | + awk -F/ '{print $3}' | + sort -V | + tail -n 1 +} + +latest_merged_tag() { + git tag --merged HEAD --sort=-v:refname | head -n 1 +} + +update() { + local current_branch latest_tag current_tag update_branch + + require_command git + require_command pnpm + + [[ -z "$(git status --porcelain)" ]] || { + echo "Working tree is not clean. Commit or stash changes before updating." >&2 + exit 1 + } + + current_branch="$(git branch --show-current)" + [[ -n "$current_branch" ]] || { + echo "A named Git branch is required to update the theme." >&2 + exit 1 + } + + echo "Fetching official Source tags..." + git fetch --prune --prune-tags upstream 'refs/tags/*:refs/tags/*' + latest_tag="$(latest_upstream_tag)" + current_tag="$(latest_merged_tag)" + + [[ -n "$latest_tag" ]] || { + echo "No release tags were found in upstream." >&2 + exit 1 + } + + if [[ "$latest_tag" == "$current_tag" ]]; then + echo "Cosmonauta is already based on the latest Source release: $latest_tag" + return + fi + + update_branch="update/source-${latest_tag}" + if git show-ref --verify --quiet "refs/heads/$update_branch" || git ls-remote --exit-code --heads origin "$update_branch" >/dev/null 2>&1; then + echo "An update branch already exists: $update_branch" >&2 + echo "Review or resume it instead of creating a second update." >&2 + exit 1 + fi + + git switch main + git pull --ff-only origin main + git switch -c "$update_branch" + + echo "Merging Source $latest_tag..." + if ! git merge --no-ff "$latest_tag" -m "chore: merge Source $latest_tag"; then + git merge --abort || true + echo "Merge conflict: the update branch was kept for inspection." >&2 + echo "Resolve manually with: git switch $update_branch && git merge $latest_tag" >&2 + git switch "$current_branch" + exit 1 + fi + + if ! pnpm install --frozen-lockfile || ! pnpm test:ci; then + echo "Validation failed: $update_branch was kept without being pushed." >&2 + echo "Inspect the failure, fix it, then run: git push -u origin $update_branch" >&2 + git switch "$current_branch" + exit 1 + fi + + if ! git push -u origin "$update_branch"; then + echo "Push failed: the validated local branch was kept for retry." >&2 + echo "Retry with: git push -u origin $update_branch" >&2 + git switch "$current_branch" + exit 1 + fi + + if command -v gh >/dev/null && gh auth status >/dev/null 2>&1; then + if ! gh pr create \ + --base main \ + --head "$update_branch" \ + --title "chore: merge Source $latest_tag" \ + --body "Updates Cosmonauta from Source $current_tag to $latest_tag. Validation: pnpm test:ci."; then + echo "Branch pushed, but GitHub PR creation needs manual completion." >&2 + fi + else + echo "Branch pushed. Open a pull request from $update_branch to main." + fi + + git switch "$current_branch" + echo "Source update is ready for review: $update_branch" +} + +case "${1:-}" in + build) build ;; + update) update ;; + help|-h|--help|"") usage ;; + *) usage >&2; exit 64 ;; +esac From f6986092767e286ffc51e960aafbc1803a78ddb8 Mon Sep 17 00:00:00 2001 From: Sergio Durzu Date: Wed, 26 Aug 2026 15:03:23 +0200 Subject: [PATCH 05/12] fix: keep Source updates local until reviewed (#4) --- README.md | 24 +++++++++++------- theme.sh | 75 +++++++++++++++++++++++-------------------------------- 2 files changed, 46 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index 995272f62..a3a83dc9e 100644 --- a/README.md +++ b/README.md @@ -89,15 +89,21 @@ repository eseguire: ./theme.sh update ``` -Lo script confronta il tag ufficiale più recente con quello già integrato, -crea `update/source-`, esegue merge, installazione e `pnpm test:ci`, poi -pubblica il branch e apre una pull request verso `main`. Non aggiorna né fa -push diretto a `main`. - -Se trova conflitti, errori di test o errori di push, interrompe l’operazione, -conserva il branch di update e mostra i comandi per riprendere senza perdere -il lavoro. Quando si risolve un conflitto, preservare sempre -`"name": "cosmonauta"` in `package.json`. +Lo script richiede un worktree pulito e la branch locale `main`. Confronta il +tag ufficiale più recente con quello già integrato, poi esegue il merge con +`--no-commit`: non crea commit, non fa push e non apre pull request. Prosegue +con build, riavvio di Ghost locale e `./local.sh sync --yes`. + +> [!WARNING] +> Il sync sostituisce completamente database e upload di Ghost locale con la +> produzione. Il codice del tema non viene sostituito, perché è montato dalla +> directory `cosmonauta_theme/`. + +Dopo il sync, attivare `cosmonauta` in Ghost Admin locale e verificarlo su +`http://localhost:2368`. Se l’aggiornamento è valido, creare un branch, +committare il merge e seguire la normale PR verso `main`. Per annullare la +prova locale, eseguire `git merge --abort`. Se trova conflitti, build o sync +falliti, lo script non perde il merge locale e indica il rollback sicuro. ## Comando build locale diff --git a/theme.sh b/theme.sh index 2d8854742..9b3306794 100755 --- a/theme.sh +++ b/theme.sh @@ -10,8 +10,9 @@ Usage: ./theme.sh Commands: build Build theme assets and restart local Ghost when it is running. - update Merge the latest official Source tag into a new branch, validate it, - push the branch, and open a GitHub pull request when gh is available. + update Merge the latest official Source tag locally without committing it, + build it, restart local Ghost, and replace local Ghost data with + a production sync for manual verification. EOF } @@ -47,6 +48,16 @@ build() { restart_local_ghost_if_running } +sync_from_production() { + [[ -f "$stack_dir/.env.local" ]] || { + echo "Local Ghost is not configured; cannot synchronize production data." >&2 + return 1 + } + + echo "Synchronizing local Ghost data from production..." + "$stack_dir/local.sh" sync --yes +} + latest_upstream_tag() { git ls-remote --tags --refs upstream | awk -F/ '{print $3}' | @@ -59,7 +70,7 @@ latest_merged_tag() { } update() { - local current_branch latest_tag current_tag update_branch + local latest_tag current_tag require_command git require_command pnpm @@ -69,12 +80,12 @@ update() { exit 1 } - current_branch="$(git branch --show-current)" - [[ -n "$current_branch" ]] || { - echo "A named Git branch is required to update the theme." >&2 + [[ "$(git branch --show-current)" == "main" ]] || { + echo "Run update from the local main branch." >&2 exit 1 } + git pull --ff-only origin main echo "Fetching official Source tags..." git fetch --prune --prune-tags upstream 'refs/tags/*:refs/tags/*' latest_tag="$(latest_upstream_tag)" @@ -90,54 +101,30 @@ update() { return fi - update_branch="update/source-${latest_tag}" - if git show-ref --verify --quiet "refs/heads/$update_branch" || git ls-remote --exit-code --heads origin "$update_branch" >/dev/null 2>&1; then - echo "An update branch already exists: $update_branch" >&2 - echo "Review or resume it instead of creating a second update." >&2 - exit 1 - fi - - git switch main - git pull --ff-only origin main - git switch -c "$update_branch" - - echo "Merging Source $latest_tag..." - if ! git merge --no-ff "$latest_tag" -m "chore: merge Source $latest_tag"; then + echo "Merging Source $latest_tag locally without a commit..." + if ! git merge --no-ff --no-commit "$latest_tag"; then git merge --abort || true - echo "Merge conflict: the update branch was kept for inspection." >&2 - echo "Resolve manually with: git switch $update_branch && git merge $latest_tag" >&2 - git switch "$current_branch" + echo "Merge conflict: the working tree was restored to main." >&2 + echo "Resolve the update manually on a dedicated branch." >&2 exit 1 fi - if ! pnpm install --frozen-lockfile || ! pnpm test:ci; then - echo "Validation failed: $update_branch was kept without being pushed." >&2 - echo "Inspect the failure, fix it, then run: git push -u origin $update_branch" >&2 - git switch "$current_branch" + if ! build; then + echo "Build or local Ghost restart failed; the uncommitted merge was kept for inspection." >&2 + echo "To discard it safely, run: git merge --abort" >&2 exit 1 fi - if ! git push -u origin "$update_branch"; then - echo "Push failed: the validated local branch was kept for retry." >&2 - echo "Retry with: git push -u origin $update_branch" >&2 - git switch "$current_branch" + if ! sync_from_production; then + echo "Production sync failed; the uncommitted merge was kept for inspection." >&2 + echo "To discard it safely, run: git merge --abort" >&2 exit 1 fi - if command -v gh >/dev/null && gh auth status >/dev/null 2>&1; then - if ! gh pr create \ - --base main \ - --head "$update_branch" \ - --title "chore: merge Source $latest_tag" \ - --body "Updates Cosmonauta from Source $current_tag to $latest_tag. Validation: pnpm test:ci."; then - echo "Branch pushed, but GitHub PR creation needs manual completion." >&2 - fi - else - echo "Branch pushed. Open a pull request from $update_branch to main." - fi - - git switch "$current_branch" - echo "Source update is ready for review: $update_branch" + echo "Source $latest_tag is ready for local review and remains uncommitted." + echo "Activate cosmonauta in local Ghost Admin before reviewing it." + echo "Keep it later: create a branch, commit, push, and open a PR." + echo "Discard it: git merge --abort" } case "${1:-}" in From a441b1e04dd73ecc4b685498dff2dd21bb6f005e Mon Sep 17 00:00:00 2001 From: Sergio Durzu Date: Wed, 26 Aug 2026 15:07:10 +0200 Subject: [PATCH 06/12] fix: preview Source updates on a dedicated branch (#5) --- README.md | 12 +++++++----- theme.sh | 20 ++++++++++++++------ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index a3a83dc9e..5eeb0e38a 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,8 @@ repository eseguire: Lo script richiede un worktree pulito e la branch locale `main`. Confronta il tag ufficiale più recente con quello già integrato, poi esegue il merge con -`--no-commit`: non crea commit, non fa push e non apre pull request. Prosegue +`--no-commit` su un nuovo branch locale `update/source-`: non crea +commit, non fa push e non apre pull request. `main` resta invariata. Prosegue con build, riavvio di Ghost locale e `./local.sh sync --yes`. > [!WARNING] @@ -100,10 +101,11 @@ con build, riavvio di Ghost locale e `./local.sh sync --yes`. > directory `cosmonauta_theme/`. Dopo il sync, attivare `cosmonauta` in Ghost Admin locale e verificarlo su -`http://localhost:2368`. Se l’aggiornamento è valido, creare un branch, -committare il merge e seguire la normale PR verso `main`. Per annullare la -prova locale, eseguire `git merge --abort`. Se trova conflitti, build o sync -falliti, lo script non perde il merge locale e indica il rollback sicuro. +`http://localhost:2368`. Se l’aggiornamento è valido, committare il merge sul +branch `update/source-` e seguire la normale PR verso `main`. Per +annullare la prova locale, eseguire `git merge --abort`. Se trova conflitti, +build o sync falliti, lo script non perde il merge locale e indica il rollback +sicuro. ## Comando build locale diff --git a/theme.sh b/theme.sh index 9b3306794..989781de9 100755 --- a/theme.sh +++ b/theme.sh @@ -70,7 +70,7 @@ latest_merged_tag() { } update() { - local latest_tag current_tag + local latest_tag current_tag update_branch require_command git require_command pnpm @@ -101,11 +101,19 @@ update() { return fi - echo "Merging Source $latest_tag locally without a commit..." + update_branch="update/source-${latest_tag}" + if git show-ref --verify --quiet "refs/heads/$update_branch"; then + echo "The local update branch already exists: $update_branch" >&2 + echo "Review it or delete it before starting another update." >&2 + exit 1 + fi + + git switch -c "$update_branch" + echo "Merging Source $latest_tag into $update_branch without a commit..." if ! git merge --no-ff --no-commit "$latest_tag"; then git merge --abort || true - echo "Merge conflict: the working tree was restored to main." >&2 - echo "Resolve the update manually on a dedicated branch." >&2 + echo "Merge conflict: $update_branch was kept for manual resolution." >&2 + echo "Continue with: git merge $latest_tag" >&2 exit 1 fi @@ -121,9 +129,9 @@ update() { exit 1 fi - echo "Source $latest_tag is ready for local review and remains uncommitted." + echo "Source $latest_tag is ready on $update_branch and remains uncommitted." echo "Activate cosmonauta in local Ghost Admin before reviewing it." - echo "Keep it later: create a branch, commit, push, and open a PR." + echo "Keep it later: commit, push, and open a PR from this branch." echo "Discard it: git merge --abort" } From cd92dc13e9217815f0fe54a4b8e48899ad93b4f4 Mon Sep 17 00:00:00 2001 From: Sergio Durzu Date: Wed, 26 Aug 2026 15:09:13 +0200 Subject: [PATCH 07/12] fix: always reload Ghost during local builds (#6) --- README.md | 3 +-- theme.sh | 18 +++++------------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 5eeb0e38a..41cc4ff75 100644 --- a/README.md +++ b/README.md @@ -114,8 +114,7 @@ sicuro. ``` Rigenera CSS, JavaScript e traduzioni con `pnpm build`. Se Ghost locale è in -esecuzione, lo riavvia per ricaricare il tema; altrimenti completa il build -senza errore. +configurato, lo avvia o riavvia per ricaricare il tema. ## Verifica locale diff --git a/theme.sh b/theme.sh index 989781de9..2a44659d8 100755 --- a/theme.sh +++ b/theme.sh @@ -23,29 +23,21 @@ require_command() { } } -restart_local_ghost_if_running() { - local compose - +restart_local_ghost() { if [[ ! -f "$stack_dir/.env.local" ]]; then - echo "Local Ghost is not configured; skipping restart." + echo "Local Ghost is not configured; skipping restart." >&2 return fi require_command docker - compose=(docker compose --env-file "$stack_dir/.env.local" -f "$stack_dir/compose.yml" -f "$stack_dir/compose.local.yml") - - if "${compose[@]}" ps -q cosmonauta_dev_ghost | grep -q .; then - echo "Restarting local Ghost so it reloads the theme..." - "$stack_dir/local.sh" restart - else - echo "Local Ghost is not running; build completed without a restart." - fi + echo "Starting or restarting local Ghost so it reloads the theme..." + "$stack_dir/local.sh" restart } build() { require_command pnpm pnpm build - restart_local_ghost_if_running + restart_local_ghost } sync_from_production() { From e2a5b152250f251e0754e9cdb47361e1a77e180b Mon Sep 17 00:00:00 2001 From: Sergio Durzu Date: Wed, 26 Aug 2026 19:11:04 +0200 Subject: [PATCH 08/12] Upgrade cosmonauta custom theme (#7) --- AGENTS.md | 25 +++++++ README.md | 36 ++++++++++ assets/built/screen.css | 2 +- assets/built/screen.css.map | 2 +- assets/css/custom.css | 133 ++++++++++++++++++++++++++++++++++++ assets/js/custom.js | 5 ++ gulpfile.js | 8 ++- post.hbs | 22 +++++- tag.hbs | 6 +- 9 files changed, 230 insertions(+), 9 deletions(-) create mode 100644 assets/css/custom.css create mode 100644 assets/js/custom.js diff --git a/AGENTS.md b/AGENTS.md index 71644acd6..1f1237f88 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -23,3 +23,28 @@ Run the test command before opening a PR when theme files, generated assets, dep - Keep generated assets/built/ files in sync when source assets change and the repo tracks those outputs. - Do not commit node_modules/, local Ghost content, generated zip files outside tracked release expectations, or secrets. - Repo settings, descriptions, and branch rules belong on the GitHub repository; internal clean-repos metadata stays in TryGhost/cleanrepos. + +## Cosmonauta customizations + +This repository is a fork of TryGhost/Source. Preserve compatibility with +future Source releases by keeping Cosmonauta-specific changes isolated. + +- Put CSS customizations only in `assets/css/custom.css`; the Gulp build + appends it after Source's stylesheet. +- Put JavaScript customizations only in `assets/js/custom.js`; the Gulp build + appends it after Source's scripts. +- Do not modify Source CSS or JavaScript for a local customization when one of + the `custom.*` files can implement it. +- When a `.hbs` template or partial must change, make the smallest possible + edit and wrap every local block with these Handlebars comments: + + ```hbs + {{!-- COSMONAUTA CUSTOM: inizio — description --}} + {{!-- local code --}} + {{!-- COSMONAUTA CUSTOM: fine — description --}} + ``` + +- Use equivalent `COSMONAUTA CUSTOM: inizio` / `fine` comments for isolated + exceptions outside the `custom.*` files. +- Never edit `assets/built/` files by hand; regenerate them with `pnpm build` + (or `pnpm dev`) after source changes. diff --git a/README.md b/README.md index 41cc4ff75..1f7410f0e 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,42 @@ git push -u origin feature/nome-modifica Aprire una pull request verso `main` e fare il merge solo quando la CI è verde. Solo un push risultante dal merge in `main` esegue il deploy su Ghost produzione; branch e pull request non ricevono segreti né pubblicano modifiche. +## Personalizzazioni Cosmonauta e compatibilità con Source + +Questo tema deve restare il più possibile compatibile con le future release di +[TryGhost/Source](https://github.com/TryGhost/Source). Per ogni modifica +specifica di Cosmonauta, applicare queste regole. + +- Mettere tutte le regole CSS locali in `assets/css/custom.css`. Il build Gulp + lo aggiunge dopo `assets/css/screen.css` e lo compila nel consueto + `assets/built/screen.css`. +- Mettere tutti i comportamenti JavaScript locali in `assets/js/custom.js`. + Il build Gulp lo concatena per ultimo in `assets/built/source.js`, dopo gli + script di Source. +- Non modificare CSS o JavaScript originali di Source per introdurre una + personalizzazione quando i file `custom.*` possono risolverla. Usare + selettori mirati e limitare `!important` ai casi in cui non esista + un'alternativa affidabile. +- Se è indispensabile modificare un template o un partial `.hbs`, mantenere + l'intervento strettamente locale e racchiuderlo sempre in commenti + Handlebars che ne indicano chiaramente inizio e fine: + + ```hbs + {{!-- COSMONAUTA CUSTOM: inizio — breve descrizione --}} + {{!-- codice locale --}} + {{!-- COSMONAUTA CUSTOM: fine — breve descrizione --}} + ``` + +- Applicare la stessa delimitazione ai cambiamenti non-template che non + possono vivere nei file `custom.*`, scegliendo il commento appropriato al + linguaggio (`COSMONAUTA CUSTOM: inizio` / `fine`). +- Dopo modifiche a CSS o JavaScript eseguire `pnpm build` (oppure mantenere + attivo `pnpm dev`) e verificare che `assets/built/` sia aggiornato. Prima di + una pull request eseguire sempre `pnpm test:ci`. + +I file `assets/built/` sono artefatti tracciati: non modificarli a mano. Le +personalizzazioni devono essere apportate ai sorgenti e rigenerate dal build. + ## Anteprima locale senza ZIP Il repository infrastrutturale monta questa directory nel Ghost locale come diff --git a/assets/built/screen.css b/assets/built/screen.css index daecf2a16..5b8b12233 100644 --- a/assets/built/screen.css +++ b/assets/built/screen.css @@ -1 +1 @@ -:root{--color-white:#fff;--color-lighter-gray:rgba(0,0,0,.05);--color-light-gray:#e6e6e6;--color-mid-gray:#ccc;--color-dark-gray:#444;--color-darker-gray:#15171a;--color-black:#000;--color-primary-text:var(--color-darker-gray);--color-secondary-text:rgba(0,0,0,.55);--color-border:rgba(0,0,0,.08);--color-dark-border:rgba(0,0,0,.55);--font-sans:Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-serif:"EB Garamond", Georgia, Times, serif;--font-serif-alt:Georgia, Times, serif;--font-mono:"JetBrains Mono", Menlo, Consolas, Monaco, "Liberation Mono", "Lucida Console", monospace;--container-width:1320px;--container-gap:clamp(24px, 1.7032rem + 1.9355vw, 48px);--grid-gap:42px}:is(.gh-navigation,.gh-footer).has-accent-color,:root.has-light-text{--color-lighter-gray:hsla(0,0%,100%,.1);--color-darker-gray:#fff;--color-secondary-text:hsla(0,0%,100%,.64);--color-border:hsla(0,0%,100%,.15);--color-dark-border:hsla(0,0%,100%,.5)}*,:after,:before{box-sizing:border-box}*{margin:0}html{font-size:62.5%}body{line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}canvas,img,picture,svg,video{display:block;height:auto;max-width:100%}iframe{display:block}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{line-height:1.2}sub,sup{line-height:1}body{font-family:var(--gh-font-body,var(--font-sans));font-size:1.6rem;background-color:var(--background-color);color:var(--color-primary-text)}h1,h2,h3,h4,h5,h6{font-family:var(--gh-font-heading,var(--font-sans))}a{color:var(--color-darker-gray);text-decoration:none}a:hover{opacity:.8}.gh-button{display:inline-flex;gap:.4em;align-items:center;justify-content:center;padding:.8em 1.4em;font-size:1.5rem;font-weight:600;letter-spacing:-.004em;line-height:1;color:var(--color-white);cursor:pointer;background-color:var(--ghost-accent-color);border:0;border-radius:100px}.gh-button:hover{opacity:.95}.gh-icon-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;color:var(--color-darker-gray);cursor:pointer;background-color:transparent;border:0;outline:none}.gh-icon-button:hover :is(svg,span){opacity:.8}.gh-icon-button svg{width:20px;height:20px}.gh-form{display:flex;align-items:center;position:relative;max-width:560px;width:100%;height:56px;font-size:1.7rem;font-weight:450;letter-spacing:-.008em;border-radius:40px;background-color:var(--color-lighter-gray);transition:background-color .2s ease}.gh-form.success{pointer-events:none}.gh-form.error{box-shadow:0 0 0 1px red}.gh-form:hover{background-color:rgba(0,0,0,.065)}.gh-footer.has-accent-color .gh-form:hover,.has-light-text .gh-form:hover{background-color:hsla(0,0%,100%,.15)}.gh-form-input{position:absolute;inset:0;padding-inline:26px;width:100%;height:100%;font-size:inherit;letter-spacing:inherit;line-height:1.1;border:0;border-radius:40px;background-color:transparent;outline:none;transition:.3s ease-in-out}.gh-form-input::-moz-placeholder{color:rgba(0,0,0,.3)}.gh-form-input::placeholder,button.gh-form-input{color:rgba(0,0,0,.3)}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form-input,body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input,body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input{padding-inline:20px}.gh-form.gh-form.success .gh-form-input{opacity:.5}.gh-footer.has-accent-color .gh-form-input,.has-light-text .gh-form-input{color:#fff}.gh-footer.has-accent-color .gh-form-input::-moz-placeholder,.has-light-text .gh-form-input::-moz-placeholder{color:hsla(0,0%,100%,.55)}.gh-footer.has-accent-color .gh-form-input::placeholder,.has-light-text .gh-form-input::placeholder,.has-light-text button.gh-form-input{color:hsla(0,0%,100%,.55)}.gh-header.is-classic.has-image .gh-form-input{color:#15171a}.gh-header.is-classic.has-image .gh-form-input::-moz-placeholder{color:rgba(0,0,0,.5)}.gh-header.is-classic.has-image .gh-form-input::placeholder,.gh-header.is-classic.has-image .gh-form>svg,.gh-header.is-classic.has-image button.gh-form-input{color:rgba(0,0,0,.5)}button.gh-form-input{padding-inline-start:56px;text-align:left;color:var(--color-secondary-text);cursor:pointer}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) button.gh-form-input,body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input,body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input{padding-inline-start:50px}.gh-form .gh-button{position:absolute;right:6px;min-width:132px;padding-inline:24px;height:44px;font-size:inherit}.gh-form>svg{position:relative;left:22px;width:20px;height:20px;color:var(--color-secondary-text)}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form>svg{left:16px}.gh-form .gh-button svg{display:none;position:absolute;margin-top:1px}.gh-form .gh-button>span:last-child{display:none}.gh-form:is(.loading,.success) .gh-button>span:first-child{visibility:hidden}.gh-form.loading .gh-button svg:first-of-type{display:block}.gh-form.success .gh-button>span:first-child{display:none}.gh-form.success .gh-button>span:last-child{display:inline}.gh-form [data-members-error]{position:absolute;top:100%;margin-top:10px;width:100%;font-size:1.4rem;line-height:1.4}@media (max-width:576px){.gh-form{font-size:1.6rem}.gh-form .gh-button{min-width:104px;padding-inline:12px}}.gh-viewport{position:relative;display:flex;flex-direction:column;min-height:100vh}.gh-outer{padding:0 max(4vmin,20px)}.gh-outer .gh-outer{padding:0}.gh-inner{margin:0 auto;max-width:var(--container-width);width:100%}.gh-main{flex-grow:1}.gh-canvas,.kg-width-full.kg-content-wide{--main:min(var(--content-width, 720px), 100% - var(--container-gap) * 2);--wide:minmax(0, calc((var(--container-width, 1200px) - var(--content-width, 720px))/2));--full:minmax(var(--container-gap), 1fr);display:grid;grid-template-columns:[full-start] var(--full) [wide-start] var(--wide) [main-start] var(--main) [main-end] var(--wide) [wide-end] var(--full) [full-end]}.gh-canvas>*{grid-column:main}.kg-content-wide>div,.kg-width-wide{grid-column:wide}.kg-width-full{grid-column:full}.gh-navigation{height:100px;font-size:1.5rem;font-weight:550;background-color:var(--background-color);color:var(--color-darker-gray)}.gh-navigation :is(.gh-navigation-logo,a:not(.gh-button),.gh-icon-button){color:inherit}.gh-navigation-inner{display:grid;grid-auto-flow:row dense;-moz-column-gap:24px;column-gap:24px;align-items:center;height:100%}.gh-navigation-brand{line-height:1}.gh-navigation-logo{position:relative;font-family:var(--gh-font-heading,var(--font-sans));font-size:calc(2.4rem*var(--factor, 1));font-weight:725;letter-spacing:-.015em;white-space:nowrap}.gh-navigation-logo img{max-height:40px}.gh-navigation-menu{display:flex;gap:24px;align-items:center}.gh-navigation .nav{gap:28px;padding:0;margin:0;white-space:nowrap;list-style:none}.gh-navigation .nav,.nav a{display:inline-flex;align-items:center}.nav a{gap:.35em;vertical-align:middle}.nav-icon{display:block;width:1em;height:1em;flex:0 0 auto;-o-object-fit:contain;object-fit:contain}.gh-navigation .gh-more-toggle{position:relative;margin:0 -6px;font-size:inherit;text-transform:inherit}.gh-navigation .gh-more-toggle svg{width:24px;height:24px}.gh-navigation-actions{display:flex;gap:24px;align-items:center;justify-content:flex-end;background-color:var(--background-color)}.gh-navigation.has-accent-color .gh-navigation-actions{background-color:var(--ghost-accent-color)}.gh-navigation-members{display:flex;gap:20px;align-items:center;white-space:nowrap}.gh-navigation-members .gh-button{font-size:inherit;font-weight:600}.gh-search{margin-right:-2px;margin-left:-2px}@media (max-width:767px){.gh-navigation-logo{white-space:normal}.gh-navigation-members{flex-direction:column-reverse;gap:16px;width:100%}.gh-navigation-actions .gh-search{display:none}}@media (min-width:768px){.gh-navigation-brand .gh-search{display:none}.gh-navigation:not(.is-dropdown-loaded) .gh-navigation-menu .nav>li{opacity:0}}.gh-navigation.has-accent-color{background-color:var(--ghost-accent-color)}.gh-navigation.has-accent-color .gh-button{background-color:#fff;color:#15171a}.gh-navigation.is-left-logo .gh-navigation-inner{grid-template-columns:auto 1fr auto}@media (min-width:768px){.gh-navigation.is-left-logo .gh-navigation-logo:not(:has(img)){top:-2px}}@media (min-width:992px){.gh-navigation.is-left-logo .gh-navigation-menu{margin-right:100px;margin-left:16px}}.gh-navigation.is-middle-logo .gh-navigation-inner{grid-template-columns:1fr auto 1fr}.gh-navigation.is-middle-logo .gh-navigation-brand{grid-column-start:2}.gh-navigation.is-middle-logo .gh-navigation-actions{gap:28px}@media (min-width:992px){.gh-navigation.is-middle-logo .gh-navigation-menu{margin-right:64px}}.gh-navigation.is-stacked{position:relative;height:auto}.gh-navigation.is-stacked .gh-navigation-inner{grid-template-columns:1fr auto 1fr}.gh-navigation.is-stacked .gh-navigation-brand{display:flex;align-items:center;grid-row-start:1;grid-column-start:2;min-height:80px}@media (max-width:767px){.gh-navigation.is-stacked .gh-navigation-brand{min-height:unset}}@media (min-width:992px){.gh-navigation.is-stacked .gh-navigation-inner{padding:0}.gh-navigation.is-stacked .gh-navigation-brand{display:flex;align-items:center;height:80px}.gh-navigation.is-stacked .gh-navigation-menu{grid-row-start:2;grid-column:1/4;justify-content:center;height:60px;margin:0 48px}.gh-navigation.is-stacked .gh-navigation-menu:after,.gh-navigation.is-stacked .gh-navigation-menu:before{position:absolute;top:80px;left:0;width:100%;height:1px;content:"";background-color:var(--color-border)}.gh-navigation.is-stacked .gh-navigation-menu:after{top:140px}.gh-navigation.is-stacked .gh-navigation-actions{grid-row-start:1;grid-column:1/4;justify-content:space-between}.gh-navigation.is-stacked .gh-navigation-actions .gh-search{display:flex;gap:10px;width:auto}}.gh-dropdown{position:absolute;top:100%;right:-16px;z-index:90;width:200px;padding:12px 0;margin-top:24px;text-align:left;visibility:hidden;background-color:#fff;border-radius:5px;box-shadow:0 0 0 1px rgba(0,0,0,.04),0 7px 20px -5px rgba(0,0,0,.15);opacity:0;transition:opacity .3s,transform .2s;transform:translate3d(0,6px,0)}.gh-dropdown.is-left{right:auto;left:-16px}.is-dropdown-mega .gh-dropdown{display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:column;-moz-column-gap:40px;column-gap:40px;width:auto;padding:20px 32px}.is-dropdown-open .gh-dropdown{visibility:visible;opacity:1;transform:translateY(0)}.gh-dropdown li a{display:block;padding:7px 20px;line-height:1.5;white-space:normal;color:#15171a!important}.is-dropdown-mega .gh-dropdown li a{padding:8px 0}.gh-burger{display:flex;justify-content:center;align-items:center;position:relative;display:none;margin-right:-7px;margin-left:4px}.gh-burger svg{width:24px;height:24px}.gh-burger svg:last-child,.is-open .gh-burger svg:first-child{display:none}.is-open .gh-burger svg:last-child{display:block}@media (max-width:767px){.gh-burger{display:flex}#gh-navigation{height:64px}#gh-navigation .gh-navigation-inner{grid-template-rows:auto 1fr auto;grid-template-columns:1fr;gap:48px}#gh-navigation .gh-navigation-brand{display:grid;grid-template-columns:1fr auto auto;grid-column-start:1;align-items:center;height:64px}#gh-navigation .gh-navigation-logo{font-size:2.2rem}#gh-navigation .gh-navigation-actions,#gh-navigation .gh-navigation-menu{position:fixed;justify-content:center;visibility:hidden;opacity:0}#gh-navigation .gh-navigation-menu{transition:none;transform:translateY(0)}#gh-navigation .nav{gap:20px;align-items:center;line-height:1.4}#gh-navigation .nav a{font-size:1.75rem;font-weight:600;text-transform:none}#gh-navigation .nav li{opacity:0;transform:translateY(-4px)}#gh-navigation .gh-navigation-actions{text-align:center}#gh-navigation :is(.gh-button,a[data-portal=signin]){opacity:0;transform:translateY(8px)}#gh-navigation .gh-button{width:100%;font-size:1.75rem;text-transform:none}#gh-navigation a[data-portal=signin]{font-size:1.75rem}#gh-main{transition:opacity .4s}.is-open#gh-navigation{position:fixed;inset:0;z-index:3999999;height:100%;overflow-y:scroll;-webkit-overflow-scrolling:touch}.is-open#gh-navigation .gh-navigation-actions,.is-open#gh-navigation .gh-navigation-menu{position:static;visibility:visible;opacity:1}.is-open#gh-navigation .nav{display:flex;flex-direction:column}.is-open#gh-navigation .nav li{opacity:1;transition:transform .2s,opacity .2s;transform:translateY(0)}.is-open#gh-navigation .gh-navigation-actions{position:sticky;right:0;bottom:0;left:0;display:inline-flex;flex-direction:column;gap:12px;align-items:center;padding:var(--container-gap) 0}.is-open#gh-navigation :is(.gh-button,a[data-portal=signin]){opacity:1;transition:transform .4s,opacity .4s;transition-delay:.2s;transform:translateY(0)}.is-open#gh-navigation a[data-portal=signin]{transition-delay:.4s}.is-open#gh-main{opacity:0}}.gh-card{position:relative}.gh-card-link{display:flex;flex-direction:column;gap:20px}.gh-card-link:hover{opacity:1}.gh-card-image{position:relative;flex-shrink:0;aspect-ratio:16/9}.gh-card-image img{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.gh-card-wrapper{flex-grow:1}.gh-card-tag{display:none;margin-bottom:4px;font-size:1.2rem;font-weight:500;letter-spacing:.01em;text-transform:uppercase}.gh-card-title{font-size:calc(1.9rem*var(--factor, 1));font-weight:725;letter-spacing:-.014em;line-height:1.3}.gh-card-link:hover .gh-card-title{opacity:.8}.gh-card-excerpt{display:-webkit-box;overflow-y:hidden;margin-top:8px;font-size:1.45rem;line-height:1.4;-webkit-line-clamp:2;-webkit-box-orient:vertical}.gh-card-meta{align-items:center;padding-bottom:1px;font-size:1.25rem;font-weight:500;line-height:1.4;letter-spacing:-.004em;color:var(--color-secondary-text)}.gh-card-meta svg{position:relative;top:1px;display:inline-block;width:12px;height:12px;margin-right:2px}.gh-card-meta:not(:empty){margin-top:8px}.gh-card-author+.gh-card-date:before{content:"—";margin-right:4px}.gh-header{position:relative;margin-top:40px}.gh-header-inner{position:relative;overflow:hidden}.gh-header.is-magazine .gh-header-inner{display:grid;grid-template-columns:repeat(16,1fr);gap:var(--grid-gap)}.gh-header.is-magazine .gh-header-inner>div{display:flex;flex-direction:column;gap:var(--grid-gap);grid-row:1}.gh-header.is-magazine .gh-header-left{grid-column:1/span 4}.gh-header.is-magazine .gh-header-inner>.gh-card{position:relative;grid-column:5/span 8}.gh-header.is-magazine .gh-header-right{grid-column:13/-1}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-link{gap:28px}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-image{aspect-ratio:1.618033}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-tag{display:block;margin-bottom:12px}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;line-height:1.1;letter-spacing:-.022em}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-excerpt{margin-top:clamp(12px,.45vw + 10.18px,16px);font-size:1.8rem;letter-spacing:-.02em;max-width:90%}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-meta:not(:empty){margin-top:14px}.gh-header.is-magazine :is(.gh-header-left,.gh-header-right) .gh-card:last-child .gh-card-image{display:none}.gh-header.is-magazine .gh-header-inner>div .gh-card-excerpt{display:none}.gh-header.is-magazine .gh-header-inner>.gh-card:after,.gh-header.is-magazine .gh-header-inner>.gh-card:before{position:absolute;top:0;left:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}.gh-header.is-magazine .gh-header-inner>.gh-card:after{right:calc(var(--grid-gap)/-2);left:auto}.gh-header.is-magazine .gh-header-inner>div .gh-card+.gh-card:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}@media (max-width:1199px){.gh-header.is-magazine .gh-header-inner{grid-template-columns:repeat(12,1fr)}.gh-header.is-magazine .gh-header-inner>.gh-card{grid-column:1/span 8}.gh-header.is-magazine .gh-header-left{grid-column:9/-1}.gh-header.is-magazine .gh-header-inner>div.gh-header-right{grid-column:1/-1;grid-row:2;flex-direction:row}.gh-header.is-magazine .gh-header-right .gh-card{flex:1}.gh-header.is-magazine .gh-header-right .gh-card:last-child .gh-card-image{display:block}.gh-header.is-magazine .gh-header-right{position:relative}.gh-header.is-magazine .gh-header-right:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}.gh-header.is-magazine .gh-header-right .gh-card:before{display:none}.gh-header.is-magazine .gh-header-right .gh-card:after{position:absolute;top:0;right:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}}@media (max-width:991px){.gh-header.is-magazine .gh-header-left .gh-card:nth-child(2) .gh-card-image{display:none}}@media (max-width:767px){.gh-header.is-magazine .gh-header-inner{display:flex;flex-direction:column;gap:var(--grid-gap)}.gh-header.is-magazine .gh-header-inner>div.gh-header-right{flex-direction:column}.gh-header.is-magazine .gh-card-image{display:block!important}.gh-header.is-magazine .gh-card:before{display:block!important;position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}}.gh-header.is-highlight .gh-header-inner{display:grid;grid-template-columns:repeat(16,1fr);gap:var(--grid-gap)}.gh-header.is-highlight .gh-header-left{position:relative;grid-column:span 8}.gh-header.is-highlight .gh-header-left .gh-card{grid-column:span 8;grid-row:span 3}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-link{gap:28px}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-image{aspect-ratio:3/2}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-tag{display:block;margin-bottom:12px}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;line-height:1.1;letter-spacing:-.022em}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-excerpt{margin-top:clamp(12px,.45vw + 10.18px,16px);font-size:1.8rem}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-meta:not(:empty){margin-top:12px}.gh-header.is-highlight .gh-header-middle{position:relative;display:flex;flex-direction:column;gap:var(--grid-gap);grid-column:9/span 4}.gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt,.gh-header.is-highlight .gh-header-middle .gh-card:last-child .gh-card-image{display:none}.gh-header.is-highlight .gh-header-right{grid-column:13/-1}.gh-header.is-highlight .gh-featured{margin-top:0;padding:0}.gh-header.is-highlight .gh-featured-feed{display:flex;flex-direction:column}.gh-header.is-highlight .gh-featured-feed .gh-card-title{font-size:clamp(1.4rem,.23vw + 1.31rem,1.6rem)}.gh-header.is-highlight .gh-header-left:after,.gh-header.is-highlight .gh-header-middle:after{position:absolute;top:0;right:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}.gh-header.is-highlight .gh-card:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}.gh-header.is-highlight .gh-featured .gh-card:first-child:before{display:none}@media (max-width:1199px){.gh-header.is-highlight .gh-header-inner{grid-template-columns:repeat(9,1fr)}.gh-header.is-highlight .gh-header-left{grid-column:span 6}.gh-header.is-highlight .gh-header-middle{grid-column:7/-1}.gh-header.is-highlight .gh-header-right{grid-column:1/-1}.gh-header.is-highlight .gh-featured-feed{display:grid;grid-template-columns:repeat(3,1fr)}.gh-header.is-highlight .gh-featured-feed .gh-card:before{width:calc(100% + var(--grid-gap))}.gh-header.is-highlight .gh-featured-feed .gh-card:after{position:absolute;top:0;left:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}}@media (max-width:991px){.gh-header.is-highlight .gh-header-middle .gh-card:nth-child(2) .gh-card-image{display:none}}@media (max-width:767px){.gh-header.is-highlight .gh-header-inner{display:flex;flex-direction:column}.gh-header.is-highlight .gh-featured-feed{display:flex}.gh-header.is-highlight .gh-card-image{display:block!important}.gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt{display:-webkit-box}}.gh-header.is-classic{display:flex;margin-top:0;padding-block:160px}.gh-header.is-classic .gh-header-inner{display:flex;flex-direction:column;align-items:center;gap:48px;overflow:unset;margin:auto;max-width:1020px;text-align:center}.gh-header.is-classic .gh-header-title{font-size:calc(clamp(3rem, 1.82vw + 2.27rem, 4.6rem)*var(--factor, 1));line-height:1.1;letter-spacing:-.028em}.gh-header.is-classic.has-image{margin-top:0}.gh-header.is-classic.has-image:before{position:absolute;inset:0;content:"";opacity:.3;background-color:var(--color-black);transition:opacity 1.5s ease}.gh-header.is-classic.has-image .gh-header-inner{color:#fff}.gh-header.is-classic.has-image .gh-header-image{position:absolute;inset:0;z-index:-1;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.gh-header.is-classic.has-image .gh-form{background-color:#fff}.gh-cta{display:none;margin-top:max(4vw,40px)}.gh-header:is(.is-highlight,.is-magazine)+.gh-cta{display:block}.gh-cta-inner{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;gap:36px;padding:clamp(48px,3.64vw + 33.45px,80px) clamp(40px,2.73vw + 29.09px,64px);text-align:center;background-color:var(--color-lighter-gray)}.gh-cta-content{max-width:640px}.gh-cta-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;line-height:1.1;letter-spacing:-.021em}.gh-cta-description{margin-top:12px;font-size:1.8rem;line-height:1.4;letter-spacing:-.015em}.gh-featured{margin-top:100px}.gh-navigation+.gh-featured{margin-top:64px}.gh-header.is-classic:not(.has-image)+.gh-featured{margin-top:0}.gh-featured-inner{overflow:hidden}.gh-featured-title{margin-bottom:20px;padding-bottom:12px;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.gh-featured-feed{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--grid-gap)}.gh-featured-feed .gh-card{container-type:inline-size;container-name:featured-card}.gh-featured-feed .gh-card-link{display:flex;flex-direction:row-reverse;align-items:flex-start}.gh-featured-feed .gh-card-image{width:72px;aspect-ratio:1}@container featured-card (width < 240px){.gh-featured-feed .gh-card-image{display:none}}@container featured-card (240px <= width <= 270px){.gh-featured-feed .gh-card-image{width:64px}}.gh-featured-feed .gh-card-wrapper{container-type:inline-size;container-name:featured-card-wrapper}.gh-featured-feed .gh-card-title{font-size:1.6rem;font-weight:650;letter-spacing:-.011em}@container featured-card-wrapper (width < 170px){.gh-featured-feed .gh-card-title{font-size:1.6rem}}.gh-featured-feed .gh-card-excerpt{display:none}.gh-featured-feed .gh-card-meta:not(:empty){margin-top:8px}.gh-featured-feed .gh-card:before{position:absolute;top:0;left:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}@media (max-width:1199px){.gh-viewport>.gh-featured .gh-featured-feed{grid-template-columns:repeat(3,1fr)}.gh-viewport>.gh-featured .gh-featured-feed .gh-card:nth-child(4){display:none}}@media (max-width:767px){.gh-viewport>.gh-featured .gh-featured-feed{display:flex;flex-direction:column}}.gh-container{flex-grow:1;margin-top:64px}.gh-container-inner{display:grid;grid-template-columns:repeat(16,1fr);-moz-column-gap:var(--grid-gap);column-gap:var(--grid-gap)}:is(.gh-featured,.gh-cta)+.gh-container{margin-top:max(4vw,40px)}.gh-header.is-classic:not(.has-image)+.gh-container{margin-top:0}.gh-navigation+.gh-container .gh-container-title,:is(.paged,.tag-template,.author-template) .gh-container:not(.has-sidebar) .gh-container-title{display:none}.gh-more{display:none;grid-column:1/-1;margin-top:48px;font-size:calc(1.9rem*var(--factor, 1));font-weight:725;letter-spacing:-.014em}.gh-container.has-sidebar .gh-more{grid-column:span 12}.home-template .gh-feed:has(>:nth-child(12):last-child)~.gh-more{display:block}.gh-more a{display:flex;align-items:center;gap:4px}.gh-more svg{margin-top:-1px;width:18px;height:18px}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-more svg{margin-top:0}.gh-container.has-sidebar .gh-main{grid-column:1/span 12;position:relative}.gh-container.has-sidebar .gh-sidebar{grid-column:13/-1}.gh-container.has-sidebar .gh-main:after{position:absolute;top:0;right:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}.gh-container:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:3/span 12}.gh-container.is-list.no-image:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:4/span 10}.gh-header:is(.is-highlight,.is-magazine)~.gh-container.is-grid:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:1/-1}@media (max-width:1199px){.gh-container-inner{display:block;overflow:hidden}.gh-container.has-sidebar .gh-sidebar{display:none}}.gh-container-title{grid-column:1/-1;margin-bottom:calc(var(--grid-gap)/2);padding-bottom:12px;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.gh-container:not(:has(.gh-card)) .gh-container-title{display:none}.gh-container .gh-feed{gap:var(--grid-gap)}.gh-container .gh-card-meta:not(:empty){margin-top:12px}.gh-container.is-list .gh-feed{display:flex;flex-direction:column;container-type:inline-size;container-name:list-feed}.gh-container.is-list .gh-card-link{flex-direction:row;align-items:center;gap:24px}.gh-container.is-list .no-image .gh-card-link{padding-block:20px}.gh-container.is-list .gh-card-image{flex-shrink:0;width:220px;aspect-ratio:1.618033}@container list-feed (width < 600px){.gh-container.is-list .gh-card-image{width:160px}}.gh-container.is-list .gh-card:not(.no-image) .gh-card-wrapper{max-width:600px}.gh-container.is-list .gh-card-title{--factor:1.05}.gh-container.is-list .no-image .gh-card-title{--factor:1.2}.gh-container.is-list .gh-card-excerpt{margin-top:6px}.gh-container.is-list .gh-card+.gh-card:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}.home-template .gh-container.is-list .gh-card:first-child:before{display:none}@media (max-width:767px){.gh-container.is-list .gh-card-link{flex-direction:column;align-items:flex-start}.gh-container.is-list .gh-card-image{width:100%}}.gh-container.is-grid .gh-feed{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));row-gap:calc(var(--grid-gap)*1.5);overflow:hidden}.gh-container.is-grid .gh-card:before{top:calc(var(--grid-gap)/-2);right:calc(var(--grid-gap)/-2);height:1px}.gh-container.is-grid .gh-card:after,.gh-container.is-grid .gh-card:before{position:absolute;left:calc(var(--grid-gap)/-2);content:"";background-color:var(--color-border)}.gh-container.is-grid .gh-card:after{top:0;width:1px;height:100%}@media (max-width:767px){.gh-container.is-grid .gh-feed{grid-template-columns:repeat(2,1fr)}}@media (max-width:576px){.gh-container.is-grid .gh-feed{display:flex;flex-direction:column}}.gh-container.is-list.no-image .gh-card-image{display:none}.gh-sidebar-inner{position:sticky;top:calc(var(--grid-gap)/2)}.gh-sidebar-title{grid-column:1/-1;margin-bottom:calc(var(--grid-gap)/2);padding-bottom:12px;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.gh-about{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px 24px;min-height:380px;text-align:center;background-color:var(--color-lighter-gray)}.gh-about-icon{margin-bottom:24px;width:60px;height:60px;border-radius:50%}.gh-about-title{font-size:calc(2.4rem*var(--factor, 1));font-weight:700;letter-spacing:-.019em}.gh-about-description{margin-top:12px;font-size:1.45rem;line-height:1.4}.gh-about .gh-button{margin-top:32px}.gh-recommendations{margin-top:48px}.gh-recommendations .recommendations{display:flex;flex-direction:column;gap:26px;margin:0;padding:0;list-style-type:none}.gh-recommendations .recommendation:first-child{margin-top:4px}.gh-recommendations .recommendation a{display:grid;grid-template-columns:24px auto;gap:4px 12px}.gh-recommendations .recommendation a:hover{opacity:1}.gh-recommendations .recommendation-favicon{grid-row:span 2;width:100%;border-radius:4px}.gh-recommendations .recommendation-title{margin-top:-2px;font-size:1.5rem;font-weight:650;letter-spacing:-.009em}.gh-recommendations .recommendation a:hover .recommendation-title{opacity:.8}.gh-recommendations .recommendation-url{order:1;overflow:hidden;font-size:1.4rem;line-height:1.25;color:var(--color-secondary-text);text-overflow:ellipsis}.gh-recommendations .recommendation-description{display:-webkit-box;display:none;overflow-y:hidden;grid-column:2;font-size:1.4rem;line-height:1.4;color:var(--color-secondary-text);-webkit-line-clamp:2;-webkit-box-orient:vertical}.gh-recommendations button{display:inline-flex;align-items:center;gap:2px;margin-top:24px;padding:0;cursor:pointer;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;background-color:transparent;border:0;color:var(--color-darker-gray)}.gh-recommendations button svg{margin-top:-1px;width:12px}.gh-recommendations button:hover{opacity:.8}.gh-article{--container-width:1120px;word-break:break-word}.gh-article-header{margin:clamp(40px,3.64vw + 25.45px,72px) 0 40px}.gh-article-tag{margin-bottom:12px;font-size:1.3rem;font-weight:500;letter-spacing:.01em;text-transform:uppercase;color:var(--ghost-accent-color)}.gh-article-title{font-size:calc(clamp(3.4rem, 1.36vw + 2.85rem, 4.6rem)*var(--factor, 1));line-height:1.1;letter-spacing:-.022em}.gh-article-excerpt{margin-top:clamp(12px,.45vw + 10.18px,16px);max-width:720px;font-size:clamp(1.7rem,.23vw + 1.61rem,1.9rem);line-height:1.45;letter-spacing:-.018em}.gh-article-meta{display:flex;align-items:center;gap:8px;margin-left:6px}.gh-article-author-image{display:flex;margin-right:8px}.gh-article-author-image a{position:relative;margin:0 -8px;width:56px;height:56px;overflow:hidden;background-color:var(--color-light-gray);border-radius:50%;border:3px solid var(--background-color)}.gh-article-author-image a:first-child{z-index:10}.gh-article-author-image a:nth-child(2){z-index:9}.gh-article-author-image a:nth-child(3){z-index:8}.gh-article-author-image :is(img,svg){position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.gh-article-meta-wrapper{display:flex;flex-direction:column;gap:4px}.gh-article-author-name{font-size:1.6rem;font-weight:650;letter-spacing:-.013em}.gh-article-meta-content{font-size:1.35rem;font-weight:500;line-height:1.2;letter-spacing:-.006em;color:var(--color-secondary-text)}.gh-article-image{grid-column:wide;margin-top:40px}.gh-article-image img{width:100%}.page-template .gh-article-header{margin-block:72px 32px}.page-template .gh-content:only-child>:first-child:not(.kg-width-full){margin-top:64px}.page-template .gh-content>:last-child:not(.kg-width-full){margin-bottom:6vw}.page-template .gh-footer{margin-top:0}.gh-content{font-size:var(--content-font-size,1.7rem);letter-spacing:-.01em}.gh-content>*+*{margin-top:calc(28px*var(--content-spacing-factor, 1));margin-bottom:0}.gh-content>.kg-width-full+.kg-width-full:not(.kg-width-full.kg-card-hascaption+.kg-width-full){margin-top:0}.gh-content>[id]:not(:first-child){margin-top:calc(56px*var(--content-spacing-factor, 1))}.post-template .gh-content.drop-cap>p:first-of-type:first-letter{font-size:3.1em;float:left;line-height:1;margin:0 .2em 0 -1px;font-weight:700}.has-serif-body.post-template:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content.drop-cap>p:first-of-type:first-letter{font-size:3.2em}.gh-content>[id]+p{margin-top:calc(12px*var(--content-spacing-factor, 1))}.gh-content>:is(hr,blockquote,iframe){position:relative;margin-top:calc(48px*var(--content-spacing-factor, 1))!important}.gh-content>:is(hr,blockquote,iframe)+*{margin-top:calc(48px*var(--content-spacing-factor, 1))!important}.gh-content h1{font-size:calc(2.2em*var(--factor, 1));letter-spacing:-.02em}.gh-content h2{font-size:calc(1.6em*var(--factor, 1));letter-spacing:-.02em}.gh-content h3{font-size:calc(1.3em*var(--factor, 1));letter-spacing:-.017em}.gh-content a{color:var(--ghost-accent-color);text-decoration:underline}.gh-content .kg-callout-card .kg-callout-text,.gh-content .kg-toggle-card .kg-toggle-content>:is(ul,ol,p){font-size:.95em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-callout-text,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>ol,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>p,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>ul,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>blockquote,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>dl,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ol,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>p,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ul{font-family:var(--font-serif-alt)}.gh-content :is(ul,ol){padding-left:28px}.gh-content :is(li+li,li :is(ul,ol)){margin-top:8px}.gh-content ol ol li{list-style-type:lower-alpha}.gh-content ol ol ol li{list-style-type:lower-roman}.gh-content hr{width:100%;height:1px;background-color:var(--color-border);border:0}.gh-content .gh-table{overflow-x:scroll;-webkit-overflow-scrolling:touch}.gh-content .gh-table table{width:100%;font-family:var(--font-sans);font-size:1.5rem;white-space:nowrap;vertical-align:top;border-spacing:0;border-collapse:collapse}.gh-content .gh-table table th{font-size:1.2rem;font-weight:700;color:var(--color-darkgrey);text-align:left;text-transform:uppercase;letter-spacing:.2px}.gh-content .gh-table table :is(th,td),.gh-content .gh-table table td{padding:6px 12px;border-bottom:1px solid var(--color-border)}.gh-content .gh-table table :is(th,td):first-child{padding-left:0}.gh-content .gh-table table :is(th,td):last-child{padding-right:0}.gh-content pre{overflow:auto;padding:16px;font-size:1.5rem;line-height:1.5em;border-radius:6px}.gh-content :not(pre)>code,.gh-content pre{background:var(--color-lighter-gray);font-family:var(--font-mono)}.gh-content :not(pre)>code{vertical-align:baseline;padding:.15em .4em;font-weight:400;font-size:.95em;line-height:1em;border-radius:.25em}.gh-content :not(.kg-card):not(table):not([id])+:is(.kg-card,table){margin-top:calc(48px*var(--content-spacing-factor, 1))}.gh-content :is(.kg-card,table)+:not(.kg-card):not(table):not([id]){margin-top:calc(48px*var(--content-spacing-factor, 1))}.gh-content .kg-card.kg-width-full+:not(.kg-card):not([id]),.gh-content :not(.kg-card):not([id])+.kg-card.kg-width-full{margin-top:calc(68px*var(--content-spacing-factor, 1))}.kg-image{margin-right:auto;margin-left:auto}.kg-embed-card{display:flex;flex-direction:column;align-items:center;width:100%}.kg-gallery-image,.kg-image[width][height]{cursor:pointer}.kg-gallery-image a:hover,.kg-image-card a:hover{opacity:1!important}.kg-card.kg-toggle-card .kg-toggle-heading-text{font-size:2rem;font-weight:700}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-toggle-card .kg-toggle-heading-text{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-toggle-card .kg-toggle-heading-text{font-family:var(--font-mono)}.kg-callout-card.kg-card{border-radius:.25em}.kg-callout-card-accent a{text-decoration:underline}blockquote:not([class]){padding-left:2rem;border-left:4px solid var(--ghost-accent-color)}blockquote.kg-blockquote-alt{font-style:normal;font-weight:400;color:var(--color-secondary-text)}.kg-card.kg-button-card .kg-btn{height:unset;padding:.6em 1.2em;text-align:center;font-size:1em;line-height:1.2em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-card.kg-header-card h2.kg-header-card-header{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-card.kg-header-card h2.kg-header-card-header{font-family:var(--font-mono)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .kg-header-card h3.kg-header-card-subheader{font-family:var(--font-serif)}.kg-bookmark-card .kg-bookmark-container{border-radius:.25em!important}.kg-bookmark-card .kg-bookmark-container:hover{opacity:1}.kg-bookmark-card a.kg-bookmark-container,.kg-bookmark-card a.kg-bookmark-container:hover{background:var(--background-color)!important;color:var(--color-darker-gray)!important}.kg-bookmark-card .kg-bookmark-content{padding:1.15em}.kg-bookmark-card .kg-bookmark-title{font-size:.9em}.kg-bookmark-card .kg-bookmark-description{max-height:none;margin-top:.3em;font-size:.8em}.kg-bookmark-card .kg-bookmark-metadata{font-size:.8em}.kg-bookmark-card .kg-bookmark-thumbnail img{border-radius:0 .2em .2em 0}.kg-product-card.kg-card .kg-product-card-image{margin-bottom:12px}.kg-product-card.kg-card a.kg-product-card-button{height:2.8em;margin-top:12px}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-product-card.kg-card .kg-product-card-title{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-product-card.kg-card .kg-product-card-title{font-family:var(--font-mono)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .kg-product-card-description :is(p,ul,ol){font-family:var(--font-serif-alt)}.kg-file-card.kg-card .kg-file-card-container{padding:.6em}.kg-file-card.kg-card .kg-file-card-contents{margin:4px 8px 6px}.kg-file-card.kg-card .kg-file-card-metadata{font-size:.9em}.kg-file-card.kg-card .kg-file-card-filesize:before{margin-right:6px;margin-left:6px}figcaption{margin-top:12px;font-size:1.4rem;text-align:center}.kg-card.kg-width-full figcaption{padding:0 16px}figcaption a{color:var(--ghost-accent-color);text-decoration:underline}.gh-comments{margin-top:48px}.post-template .gh-container{margin-top:120px}.post-template .gh-container-inner{display:block}.post-template .gh-container.is-grid .gh-feed{grid-template-columns:repeat(4,1fr)}.post-template .gh-container .gh-container-title{display:block}.gh-archive{display:grid;grid-template-columns:repeat(16,1fr);gap:var(--grid-gap);margin-block:80px 24px}.gh-archive.has-image{margin-top:48px}.gh-archive-inner{display:grid;grid-template-columns:1fr 1fr;gap:var(--grid-gap);grid-column:1/-1;padding-bottom:clamp(40px,2.73vw + 29.09px,64px);border-bottom:1px solid var(--color-border)}.gh-archive.has-image .gh-archive-inner{align-items:center;grid-column:1/-1}.gh-archive:not(.has-sidebar):not(.has-image) .gh-archive-inner{grid-column:3/span 12}.gh-archive .gh-article-image{grid-column:auto;margin-top:0}:is(.tag-template,.author-template) .gh-container{margin-top:0}.author-template .gh-archive-inner{display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:24px}.author-template .gh-article-image{margin-top:0;width:120px;height:120px;border-radius:50%;-o-object-fit:cover;object-fit:cover}.author-template .gh-article-title{font-size:3.6rem}.gh-author-meta{display:flex;gap:10px;margin-top:14px;font-size:1.5rem;font-weight:550;color:var(--color-secondary-text)}.gh-author-meta a{color:inherit}.gh-author-social{display:flex;gap:16px;align-items:center;padding-left:3px}.gh-author-social svg{width:20px;height:20px}@media (max-width:1199px){.gh-archive{display:block}}@media (max-width:767px){.gh-archive-inner{display:flex;align-items:flex-start}.author-template .gh-archive-inner,.gh-archive-inner{flex-direction:column-reverse}}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]){--factor:1.15}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]){--factor:1.1}.has-sans-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-sans))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-serif));font-weight:550}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-mono))}.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .is-body{font-family:var(--gh-font-body,var(--font-sans))}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .is-body{font-family:var(--gh-font-body,var(--font-serif-alt))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-classic .gh-header-title{font-weight:550;letter-spacing:-.015em}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-classic .gh-header-title{letter-spacing:-.01em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form{border-radius:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-card-title{line-height:1.15;letter-spacing:-.006em;font-size:calc(2rem*var(--factor, 1))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-featured-feed .gh-card-title{font-size:calc(1.6rem*var(--factor, 1))}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-featured-feed .gh-card-title{font-size:calc(1.5rem*var(--factor, 1));letter-spacing:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-highlight .gh-featured-feed .gh-card-title{font-size:clamp(1.6rem,.23vw + 1.51rem,1.8rem)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-card-title{font-size:calc(1.8rem*var(--factor, 1));line-height:1.2}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-about-title{letter-spacing:-.009em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-article-title,.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-footer-signup-header{letter-spacing:-.019em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]){--content-font-size:1.9rem}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-card-excerpt{font-size:1.65rem;line-height:1.4;letter-spacing:.0005em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-header.is-highlight .gh-card:first-child .gh-card-excerpt,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-excerpt{font-size:1.8rem;letter-spacing:-.001em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-highlight .gh-header-left .gh-card-title,.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-title{font-weight:550;font-size:clamp(3.2rem,1.82vw + 2.47rem,4.9rem)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-about-description{font-size:1.6rem}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-article-excerpt,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-footer-signup-subhead{letter-spacing:0}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.gh-button,.gh-form,.gh-form-input),body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button,.gh-form,.gh-form-input),body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button,.gh-form,.gh-form-input){border-radius:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-cta-title{font-size:4.8rem}.gh-footer{margin-top:120px;font-size:1.5rem;color:var(--color-darker-gray)}.gh-footer a:not(.gh-button){color:inherit}.gh-footer.has-accent-color{background-color:var(--ghost-accent-color)}.gh-footer.has-accent-color .gh-footer-bar{border-top:0}.gh-footer.has-accent-color .gh-button{background-color:#fff;color:#15171a}.gh-footer-bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;-moz-column-gap:32px;column-gap:32px;margin-bottom:120px;padding-block:28px;font-weight:550;border-block:1px solid var(--color-border)}.gh-footer-logo{position:relative;font-family:var(--gh-font-heading,var(--font-sans));font-size:calc(2.4rem*var(--factor, 1));font-weight:725;letter-spacing:-.015em;white-space:nowrap}.gh-footer-logo img{max-height:40px}.gh-footer-menu .nav{display:flex;justify-content:center;gap:8px 28px;flex-wrap:wrap;margin:0;padding:0;list-style-type:none}.gh-footer-copyright{text-align:right;white-space:nowrap}.gh-footer-copyright a{text-decoration:underline}.gh-footer-signup{display:flex;flex-direction:column;align-items:center;margin-bottom:120px;text-align:center}.gh-footer-signup-header{font-size:calc(clamp(2.8rem,1.36vw + 2.25rem,4rem)*var(--factor, 1));font-weight:700;letter-spacing:-.03em}.gh-footer-signup-subhead{margin-top:12px;max-width:640px;font-size:1.8rem;font-weight:450;line-height:1.4;letter-spacing:-.014em;opacity:.75}.gh-footer-signup .gh-form{margin-top:40px}@media (max-width:991px){.gh-footer-bar{display:flex;flex-direction:column;gap:20px}}.gh-social-links{display:flex;justify-content:center;gap:20px;margin-bottom:32px}.gh-social-links a{will-change:opacity}.gh-social-links svg{width:20px;height:20px}.pswp{position:absolute;top:0;left:0;z-index:3999999;display:none;width:100%;height:100%;overflow:hidden;touch-action:none;outline:none;backface-visibility:hidden;-webkit-text-size-adjust:100%}.pswp img{max-width:none}.pswp--animate_opacity{opacity:.001;transition:opacity 333ms cubic-bezier(.4,0,.22,1);will-change:opacity}.pswp--open{display:block}.pswp--zoom-allowed .pswp__img{cursor:zoom-in}.pswp--zoomed-in .pswp__img{cursor:grab}.pswp--dragging .pswp__img{cursor:grabbing}.pswp__bg{background-color:rgba(0,0,0,.85);opacity:0;transition:opacity 333ms cubic-bezier(.4,0,.22,1);transform:translateZ(0);backface-visibility:hidden;will-change:opacity}.pswp__bg,.pswp__scroll-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__scroll-wrap{overflow:hidden}.pswp__container,.pswp__zoom-wrap{position:absolute;top:0;right:0;bottom:0;left:0;touch-action:none;backface-visibility:hidden}.pswp__container,.pswp__img{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.pswp__zoom-wrap{position:absolute;width:100%;transition:transform 333ms cubic-bezier(.4,0,.22,1);transform-origin:left top}.pswp--animated-in .pswp__bg,.pswp--animated-in .pswp__zoom-wrap{transition:none}.pswp__item{right:0;bottom:0;overflow:hidden}.pswp__img,.pswp__item{position:absolute;top:0;left:0}.pswp__img{width:auto;height:auto}.pswp__img--placeholder{backface-visibility:hidden}.pswp__img--placeholder--blank{background:var(--color-black)}.pswp--ie .pswp__img{top:0;left:0;width:100%!important;height:auto!important}.pswp__error-msg{position:absolute;top:50%;left:0;width:100%;margin-top:-8px;font-size:14px;line-height:16px;color:var(--color-secondary-text);text-align:center}.pswp__error-msg a{color:var(--color-secondary-text);text-decoration:underline}.pswp__button{position:relative;display:block;float:right;width:44px;height:44px;padding:0;margin:0;overflow:visible;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background:none;border:0;box-shadow:none;transition:opacity .2s}.pswp__button:focus,.pswp__button:hover{opacity:1}.pswp__button:active{outline:none;opacity:.9}.pswp__button::-moz-focus-inner{padding:0;border:0}.pswp__ui--over-close .pswp__button--close{opacity:1}.pswp__button,.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{width:44px;height:44px;background:url(../images/default-skin.png) 0 0 no-repeat;background-size:264px 88px}@media (min-resolution:1.1dppx),(min-resolution:105dpi){.pswp--svg .pswp__button,.pswp--svg .pswp__button--arrow--left:before,.pswp--svg .pswp__button--arrow--right:before{background-image:url(../images/default-skin.svg)}.pswp--svg .pswp__button--arrow--left,.pswp--svg .pswp__button--arrow--right{background:none}}.pswp__button--close{background-position:0 -44px}.pswp__button--share{background-position:-44px -44px}.pswp__button--fs{display:none}.pswp--supports-fs .pswp__button--fs{display:block}.pswp--fs .pswp__button--fs{background-position:-44px 0}.pswp__button--zoom{display:none;background-position:-88px 0}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__button--zoom{background-position:-132px 0}.pswp--touch .pswp__button--arrow--left,.pswp--touch .pswp__button--arrow--right{visibility:hidden}.pswp__button--arrow--left,.pswp__button--arrow--right{position:absolute;top:50%;width:70px;height:100px;margin-top:-50px;background:none}.pswp__button--arrow--left{left:0}.pswp__button--arrow--right{right:0}.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{position:absolute;top:35px;width:32px;height:30px;content:""}.pswp__button--arrow--left:before{left:6px;background-position:-138px -44px}.pswp__button--arrow--right:before{right:6px;background-position:-94px -44px}.pswp__counter{position:absolute;top:0;left:0;height:44px;padding:0 15px;font-size:11px;font-weight:700;line-height:44px;color:var(--color-white);-webkit-user-select:none;-moz-user-select:none;user-select:none}.pswp__caption{position:absolute;bottom:0;left:0;width:100%;min-height:44px}.pswp__caption__center{max-width:420px;padding:25px 15px 30px;margin:0 auto;font-size:11px;line-height:1.6;color:var(--color-white);text-align:center}.pswp__caption__center .post-caption-title{margin-bottom:7px;font-size:15px;font-weight:500;text-transform:uppercase}.pswp__caption__center .post-caption-meta-item+.post-caption-meta-item:before{padding:0 4px;content:"\02022"}.pswp__caption--empty{display:none}.pswp__caption--fake{visibility:hidden}.pswp__preloader{position:absolute;top:0;left:50%;width:44px;height:44px;margin-left:-22px;opacity:0;transition:opacity .25s ease-out;direction:ltr;will-change:opacity}.pswp__preloader__icn{width:20px;height:20px;margin:12px}.pswp__preloader--active{opacity:1}.pswp__preloader--active .pswp__preloader__icn{background:url(../images/preloader.gif) 0 0 no-repeat}.pswp--css_animation .pswp__preloader--active{opacity:1}.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn{animation:clockwise .5s linear infinite}.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut{animation:donut-rotate 1s cubic-bezier(.4,0,.22,1) infinite}.pswp--css_animation .pswp__preloader__icn{position:absolute;top:15px;left:15px;width:14px;height:14px;margin:0;background:none;opacity:.75}.pswp--css_animation .pswp__preloader__cut{position:relative;width:7px;height:14px;overflow:hidden}.pswp--css_animation .pswp__preloader__donut{position:absolute;top:0;left:0;box-sizing:border-box;width:14px;height:14px;margin:0;background:none;border:2px solid var(--color-white);border-bottom-color:transparent;border-left-color:transparent;border-radius:50%}@media screen and (max-width:1024px){.pswp__preloader{position:relative;top:auto;left:auto;float:right;margin:0}}@keyframes clockwise{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes donut-rotate{0%{transform:rotate(0)}50%{transform:rotate(-140deg)}to{transform:rotate(0)}}.pswp__ui{z-index:1550;visibility:visible;opacity:1;-webkit-font-smoothing:auto}.pswp__top-bar{position:absolute;top:0;left:0;width:100%;height:44px}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right,.pswp__caption,.pswp__top-bar{backface-visibility:hidden;transition:opacity 333ms cubic-bezier(.4,0,.22,1);will-change:opacity}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right{visibility:visible}.pswp__ui--idle .pswp__button--arrow--left,.pswp__ui--idle .pswp__button--arrow--right,.pswp__ui--idle .pswp__top-bar{opacity:0}.pswp__ui--hidden .pswp__button--arrow--left,.pswp__ui--hidden .pswp__button--arrow--right,.pswp__ui--hidden .pswp__caption,.pswp__ui--hidden .pswp__top-bar{opacity:.001}.pswp__ui--one-slide .pswp__button--arrow--left,.pswp__ui--one-slide .pswp__button--arrow--right,.pswp__ui--one-slide .pswp__counter{display:none}.pswp__element--disabled{display:none!important}.pswp--minimal--dark .pswp__top-bar{background:none}.gh-meta-share{display:flex;align-items:center;justify-content:space-between;margin-top:20px}.has-light-text .gh-button-share{border-color:hsla(0,0%,100%,.25);color:hsla(0,0%,100%,.85)}.has-light-text .gh-button-share:hover{border-color:hsla(0,0%,100%,.85)}.gh-button-share{display:inline-flex;align-items:center;border:1px solid rgba(0,0,0,.15);border-radius:999px;color:rgba(0,0,0,.85);background:transparent;cursor:pointer;transition:all .4s ease}.gh-button-share:hover{border-color:rgba(0,0,0,.5)}/*# sourceMappingURL=screen.css.map */ +:root{--color-white:#fff;--color-lighter-gray:rgba(0,0,0,.05);--color-light-gray:#e6e6e6;--color-mid-gray:#ccc;--color-dark-gray:#444;--color-darker-gray:#15171a;--color-black:#000;--color-primary-text:var(--color-darker-gray);--color-secondary-text:rgba(0,0,0,.55);--color-border:rgba(0,0,0,.08);--color-dark-border:rgba(0,0,0,.55);--font-sans:Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-serif:"EB Garamond", Georgia, Times, serif;--font-serif-alt:Georgia, Times, serif;--font-mono:"JetBrains Mono", Menlo, Consolas, Monaco, "Liberation Mono", "Lucida Console", monospace;--container-width:1320px;--container-gap:clamp(24px, 1.7032rem + 1.9355vw, 48px);--grid-gap:42px}:is(.gh-navigation,.gh-footer).has-accent-color,:root.has-light-text{--color-lighter-gray:hsla(0,0%,100%,.1);--color-darker-gray:#fff;--color-secondary-text:hsla(0,0%,100%,.64);--color-border:hsla(0,0%,100%,.15);--color-dark-border:hsla(0,0%,100%,.5)}*,:after,:before{box-sizing:border-box}*{margin:0}html{font-size:62.5%}body{line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}canvas,img,picture,svg,video{display:block;height:auto;max-width:100%}iframe{display:block}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{line-height:1.2}sub,sup{line-height:1}body{font-family:var(--gh-font-body,var(--font-sans));font-size:1.6rem;background-color:var(--background-color);color:var(--color-primary-text)}h1,h2,h3,h4,h5,h6{font-family:var(--gh-font-heading,var(--font-sans))}a{color:var(--color-darker-gray);text-decoration:none}a:hover{opacity:.8}.gh-button{display:inline-flex;gap:.4em;align-items:center;justify-content:center;padding:.8em 1.4em;font-size:1.5rem;font-weight:600;letter-spacing:-.004em;line-height:1;color:var(--color-white);cursor:pointer;background-color:var(--ghost-accent-color);border:0;border-radius:100px}.gh-button:hover{opacity:.95}.gh-icon-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;color:var(--color-darker-gray);cursor:pointer;background-color:transparent;border:0;outline:none}.gh-icon-button:hover :is(svg,span){opacity:.8}.gh-icon-button svg{width:20px;height:20px}.gh-form{display:flex;align-items:center;position:relative;max-width:560px;width:100%;height:56px;font-size:1.7rem;font-weight:450;letter-spacing:-.008em;border-radius:40px;background-color:var(--color-lighter-gray);transition:background-color .2s ease}.gh-form.success{pointer-events:none}.gh-form.error{box-shadow:0 0 0 1px red}.gh-form:hover{background-color:rgba(0,0,0,.065)}.gh-footer.has-accent-color .gh-form:hover,.has-light-text .gh-form:hover{background-color:hsla(0,0%,100%,.15)}.gh-form-input{position:absolute;inset:0;padding-inline:26px;width:100%;height:100%;font-size:inherit;letter-spacing:inherit;line-height:1.1;border:0;border-radius:40px;background-color:transparent;outline:none;transition:.3s ease-in-out}.gh-form-input::-moz-placeholder{color:rgba(0,0,0,.3)}.gh-form-input::placeholder,button.gh-form-input{color:rgba(0,0,0,.3)}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form-input,body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input,body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input{padding-inline:20px}.gh-form.gh-form.success .gh-form-input{opacity:.5}.gh-footer.has-accent-color .gh-form-input,.has-light-text .gh-form-input{color:#fff}.gh-footer.has-accent-color .gh-form-input::-moz-placeholder,.has-light-text .gh-form-input::-moz-placeholder{color:hsla(0,0%,100%,.55)}.gh-footer.has-accent-color .gh-form-input::placeholder,.has-light-text .gh-form-input::placeholder,.has-light-text button.gh-form-input{color:hsla(0,0%,100%,.55)}.gh-header.is-classic.has-image .gh-form-input{color:#15171a}.gh-header.is-classic.has-image .gh-form-input::-moz-placeholder{color:rgba(0,0,0,.5)}.gh-header.is-classic.has-image .gh-form-input::placeholder,.gh-header.is-classic.has-image .gh-form>svg,.gh-header.is-classic.has-image button.gh-form-input{color:rgba(0,0,0,.5)}button.gh-form-input{padding-inline-start:56px;text-align:left;color:var(--color-secondary-text);cursor:pointer}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) button.gh-form-input,body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input,body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input{padding-inline-start:50px}.gh-form .gh-button{position:absolute;right:6px;min-width:132px;padding-inline:24px;height:44px;font-size:inherit}.gh-form>svg{position:relative;left:22px;width:20px;height:20px;color:var(--color-secondary-text)}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form>svg{left:16px}.gh-form .gh-button svg{display:none;position:absolute;margin-top:1px}.gh-form .gh-button>span:last-child{display:none}.gh-form:is(.loading,.success) .gh-button>span:first-child{visibility:hidden}.gh-form.loading .gh-button svg:first-of-type{display:block}.gh-form.success .gh-button>span:first-child{display:none}.gh-form.success .gh-button>span:last-child{display:inline}.gh-form [data-members-error]{position:absolute;top:100%;margin-top:10px;width:100%;font-size:1.4rem;line-height:1.4}@media (max-width:576px){.gh-form{font-size:1.6rem}.gh-form .gh-button{min-width:104px;padding-inline:12px}}.gh-viewport{position:relative;display:flex;flex-direction:column;min-height:100vh}.gh-outer{padding:0 max(4vmin,20px)}.gh-outer .gh-outer{padding:0}.gh-inner{margin:0 auto;max-width:var(--container-width);width:100%}.gh-main{flex-grow:1}.gh-canvas,.kg-width-full.kg-content-wide{--main:min(var(--content-width, 720px), 100% - var(--container-gap) * 2);--wide:minmax(0, calc((var(--container-width, 1200px) - var(--content-width, 720px))/2));--full:minmax(var(--container-gap), 1fr);display:grid;grid-template-columns:[full-start] var(--full) [wide-start] var(--wide) [main-start] var(--main) [main-end] var(--wide) [wide-end] var(--full) [full-end]}.gh-canvas>*{grid-column:main}.kg-content-wide>div,.kg-width-wide{grid-column:wide}.kg-width-full{grid-column:full}.gh-navigation{height:100px;font-size:1.5rem;font-weight:550;background-color:var(--background-color);color:var(--color-darker-gray)}.gh-navigation :is(.gh-navigation-logo,a:not(.gh-button),.gh-icon-button){color:inherit}.gh-navigation-inner{display:grid;grid-auto-flow:row dense;-moz-column-gap:24px;column-gap:24px;align-items:center;height:100%}.gh-navigation-brand{line-height:1}.gh-navigation-logo{position:relative;font-family:var(--gh-font-heading,var(--font-sans));font-size:calc(2.4rem*var(--factor, 1));font-weight:725;letter-spacing:-.015em;white-space:nowrap}.gh-navigation-logo img{max-height:40px}.gh-navigation-menu{display:flex;gap:24px;align-items:center}.gh-navigation .nav{gap:28px;padding:0;margin:0;white-space:nowrap;list-style:none}.gh-navigation .nav,.nav a{display:inline-flex;align-items:center}.nav a{gap:.35em;vertical-align:middle}.nav-icon{display:block;width:1em;height:1em;flex:0 0 auto;-o-object-fit:contain;object-fit:contain}.gh-navigation .gh-more-toggle{position:relative;margin:0 -6px;font-size:inherit;text-transform:inherit}.gh-navigation .gh-more-toggle svg{width:24px;height:24px}.gh-navigation-actions{display:flex;gap:24px;align-items:center;justify-content:flex-end;background-color:var(--background-color)}.gh-navigation.has-accent-color .gh-navigation-actions{background-color:var(--ghost-accent-color)}.gh-navigation-members{display:flex;gap:20px;align-items:center;white-space:nowrap}.gh-navigation-members .gh-button{font-size:inherit;font-weight:600}.gh-search{margin-right:-2px;margin-left:-2px}@media (max-width:767px){.gh-navigation-logo{white-space:normal}.gh-navigation-members{flex-direction:column-reverse;gap:16px;width:100%}.gh-navigation-actions .gh-search{display:none}}@media (min-width:768px){.gh-navigation-brand .gh-search{display:none}.gh-navigation:not(.is-dropdown-loaded) .gh-navigation-menu .nav>li{opacity:0}}.gh-navigation.has-accent-color{background-color:var(--ghost-accent-color)}.gh-navigation.has-accent-color .gh-button{background-color:#fff;color:#15171a}.gh-navigation.is-left-logo .gh-navigation-inner{grid-template-columns:auto 1fr auto}@media (min-width:768px){.gh-navigation.is-left-logo .gh-navigation-logo:not(:has(img)){top:-2px}}@media (min-width:992px){.gh-navigation.is-left-logo .gh-navigation-menu{margin-right:100px;margin-left:16px}}.gh-navigation.is-middle-logo .gh-navigation-inner{grid-template-columns:1fr auto 1fr}.gh-navigation.is-middle-logo .gh-navigation-brand{grid-column-start:2}.gh-navigation.is-middle-logo .gh-navigation-actions{gap:28px}@media (min-width:992px){.gh-navigation.is-middle-logo .gh-navigation-menu{margin-right:64px}}.gh-navigation.is-stacked{position:relative;height:auto}.gh-navigation.is-stacked .gh-navigation-inner{grid-template-columns:1fr auto 1fr}.gh-navigation.is-stacked .gh-navigation-brand{display:flex;align-items:center;grid-row-start:1;grid-column-start:2;min-height:80px}@media (max-width:767px){.gh-navigation.is-stacked .gh-navigation-brand{min-height:unset}}@media (min-width:992px){.gh-navigation.is-stacked .gh-navigation-inner{padding:0}.gh-navigation.is-stacked .gh-navigation-brand{display:flex;align-items:center;height:80px}.gh-navigation.is-stacked .gh-navigation-menu{grid-row-start:2;grid-column:1/4;justify-content:center;height:60px;margin:0 48px}.gh-navigation.is-stacked .gh-navigation-menu:after,.gh-navigation.is-stacked .gh-navigation-menu:before{position:absolute;top:80px;left:0;width:100%;height:1px;content:"";background-color:var(--color-border)}.gh-navigation.is-stacked .gh-navigation-menu:after{top:140px}.gh-navigation.is-stacked .gh-navigation-actions{grid-row-start:1;grid-column:1/4;justify-content:space-between}.gh-navigation.is-stacked .gh-navigation-actions .gh-search{display:flex;gap:10px;width:auto}}.gh-dropdown{position:absolute;top:100%;right:-16px;z-index:90;width:200px;padding:12px 0;margin-top:24px;text-align:left;visibility:hidden;background-color:#fff;border-radius:5px;box-shadow:0 0 0 1px rgba(0,0,0,.04),0 7px 20px -5px rgba(0,0,0,.15);opacity:0;transition:opacity .3s,transform .2s;transform:translate3d(0,6px,0)}.gh-dropdown.is-left{right:auto;left:-16px}.is-dropdown-mega .gh-dropdown{display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:column;-moz-column-gap:40px;column-gap:40px;width:auto;padding:20px 32px}.is-dropdown-open .gh-dropdown{visibility:visible;opacity:1;transform:translateY(0)}.gh-dropdown li a{display:block;padding:7px 20px;line-height:1.5;white-space:normal;color:#15171a!important}.is-dropdown-mega .gh-dropdown li a{padding:8px 0}.gh-burger{display:flex;justify-content:center;align-items:center;position:relative;display:none;margin-right:-7px;margin-left:4px}.gh-burger svg{width:24px;height:24px}.gh-burger svg:last-child,.is-open .gh-burger svg:first-child{display:none}.is-open .gh-burger svg:last-child{display:block}@media (max-width:767px){.gh-burger{display:flex}#gh-navigation{height:64px}#gh-navigation .gh-navigation-inner{grid-template-rows:auto 1fr auto;grid-template-columns:1fr;gap:48px}#gh-navigation .gh-navigation-brand{display:grid;grid-template-columns:1fr auto auto;grid-column-start:1;align-items:center;height:64px}#gh-navigation .gh-navigation-logo{font-size:2.2rem}#gh-navigation .gh-navigation-actions,#gh-navigation .gh-navigation-menu{position:fixed;justify-content:center;visibility:hidden;opacity:0}#gh-navigation .gh-navigation-menu{transition:none;transform:translateY(0)}#gh-navigation .nav{gap:20px;align-items:center;line-height:1.4}#gh-navigation .nav a{font-size:1.75rem;font-weight:600;text-transform:none}#gh-navigation .nav li{opacity:0;transform:translateY(-4px)}#gh-navigation .gh-navigation-actions{text-align:center}#gh-navigation :is(.gh-button,a[data-portal=signin]){opacity:0;transform:translateY(8px)}#gh-navigation .gh-button{width:100%;font-size:1.75rem;text-transform:none}#gh-navigation a[data-portal=signin]{font-size:1.75rem}#gh-main{transition:opacity .4s}.is-open#gh-navigation{position:fixed;inset:0;z-index:3999999;height:100%;overflow-y:scroll;-webkit-overflow-scrolling:touch}.is-open#gh-navigation .gh-navigation-actions,.is-open#gh-navigation .gh-navigation-menu{position:static;visibility:visible;opacity:1}.is-open#gh-navigation .nav{display:flex;flex-direction:column}.is-open#gh-navigation .nav li{opacity:1;transition:transform .2s,opacity .2s;transform:translateY(0)}.is-open#gh-navigation .gh-navigation-actions{position:sticky;right:0;bottom:0;left:0;display:inline-flex;flex-direction:column;gap:12px;align-items:center;padding:var(--container-gap) 0}.is-open#gh-navigation :is(.gh-button,a[data-portal=signin]){opacity:1;transition:transform .4s,opacity .4s;transition-delay:.2s;transform:translateY(0)}.is-open#gh-navigation a[data-portal=signin]{transition-delay:.4s}.is-open#gh-main{opacity:0}}.gh-card{position:relative}.gh-card-link{display:flex;flex-direction:column;gap:20px}.gh-card-link:hover{opacity:1}.gh-card-image{position:relative;flex-shrink:0;aspect-ratio:16/9}.gh-card-image img{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.gh-card-wrapper{flex-grow:1}.gh-card-tag{display:none;margin-bottom:4px;font-size:1.2rem;font-weight:500;letter-spacing:.01em;text-transform:uppercase}.gh-card-title{font-size:calc(1.9rem*var(--factor, 1));font-weight:725;letter-spacing:-.014em;line-height:1.3}.gh-card-link:hover .gh-card-title{opacity:.8}.gh-card-excerpt{display:-webkit-box;overflow-y:hidden;margin-top:8px;font-size:1.45rem;line-height:1.4;-webkit-line-clamp:2;-webkit-box-orient:vertical}.gh-card-meta{align-items:center;padding-bottom:1px;font-size:1.25rem;font-weight:500;line-height:1.4;letter-spacing:-.004em;color:var(--color-secondary-text)}.gh-card-meta svg{position:relative;top:1px;display:inline-block;width:12px;height:12px;margin-right:2px}.gh-card-meta:not(:empty){margin-top:8px}.gh-card-author+.gh-card-date:before{content:"—";margin-right:4px}.gh-header{position:relative;margin-top:40px}.gh-header-inner{position:relative;overflow:hidden}.gh-header.is-magazine .gh-header-inner{display:grid;grid-template-columns:repeat(16,1fr);gap:var(--grid-gap)}.gh-header.is-magazine .gh-header-inner>div{display:flex;flex-direction:column;gap:var(--grid-gap);grid-row:1}.gh-header.is-magazine .gh-header-left{grid-column:1/span 4}.gh-header.is-magazine .gh-header-inner>.gh-card{position:relative;grid-column:5/span 8}.gh-header.is-magazine .gh-header-right{grid-column:13/-1}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-link{gap:28px}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-image{aspect-ratio:1.618033}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-tag{display:block;margin-bottom:12px}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;line-height:1.1;letter-spacing:-.022em}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-excerpt{margin-top:clamp(12px,.45vw + 10.18px,16px);font-size:1.8rem;letter-spacing:-.02em;max-width:90%}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-meta:not(:empty){margin-top:14px}.gh-header.is-magazine :is(.gh-header-left,.gh-header-right) .gh-card:last-child .gh-card-image{display:none}.gh-header.is-magazine .gh-header-inner>div .gh-card-excerpt{display:none}.gh-header.is-magazine .gh-header-inner>.gh-card:after,.gh-header.is-magazine .gh-header-inner>.gh-card:before{position:absolute;top:0;left:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}.gh-header.is-magazine .gh-header-inner>.gh-card:after{right:calc(var(--grid-gap)/-2);left:auto}.gh-header.is-magazine .gh-header-inner>div .gh-card+.gh-card:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}@media (max-width:1199px){.gh-header.is-magazine .gh-header-inner{grid-template-columns:repeat(12,1fr)}.gh-header.is-magazine .gh-header-inner>.gh-card{grid-column:1/span 8}.gh-header.is-magazine .gh-header-left{grid-column:9/-1}.gh-header.is-magazine .gh-header-inner>div.gh-header-right{grid-column:1/-1;grid-row:2;flex-direction:row}.gh-header.is-magazine .gh-header-right .gh-card{flex:1}.gh-header.is-magazine .gh-header-right .gh-card:last-child .gh-card-image{display:block}.gh-header.is-magazine .gh-header-right{position:relative}.gh-header.is-magazine .gh-header-right:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}.gh-header.is-magazine .gh-header-right .gh-card:before{display:none}.gh-header.is-magazine .gh-header-right .gh-card:after{position:absolute;top:0;right:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}}@media (max-width:991px){.gh-header.is-magazine .gh-header-left .gh-card:nth-child(2) .gh-card-image{display:none}}@media (max-width:767px){.gh-header.is-magazine .gh-header-inner{display:flex;flex-direction:column;gap:var(--grid-gap)}.gh-header.is-magazine .gh-header-inner>div.gh-header-right{flex-direction:column}.gh-header.is-magazine .gh-card-image{display:block!important}.gh-header.is-magazine .gh-card:before{display:block!important;position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}}.gh-header.is-highlight .gh-header-inner{display:grid;grid-template-columns:repeat(16,1fr);gap:var(--grid-gap)}.gh-header.is-highlight .gh-header-left{position:relative;grid-column:span 8}.gh-header.is-highlight .gh-header-left .gh-card{grid-column:span 8;grid-row:span 3}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-link{gap:28px}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-image{aspect-ratio:3/2}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-tag{display:block;margin-bottom:12px}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;line-height:1.1;letter-spacing:-.022em}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-excerpt{margin-top:clamp(12px,.45vw + 10.18px,16px);font-size:1.8rem}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-meta:not(:empty){margin-top:12px}.gh-header.is-highlight .gh-header-middle{position:relative;display:flex;flex-direction:column;gap:var(--grid-gap);grid-column:9/span 4}.gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt,.gh-header.is-highlight .gh-header-middle .gh-card:last-child .gh-card-image{display:none}.gh-header.is-highlight .gh-header-right{grid-column:13/-1}.gh-header.is-highlight .gh-featured{margin-top:0;padding:0}.gh-header.is-highlight .gh-featured-feed{display:flex;flex-direction:column}.gh-header.is-highlight .gh-featured-feed .gh-card-title{font-size:clamp(1.4rem,.23vw + 1.31rem,1.6rem)}.gh-header.is-highlight .gh-header-left:after,.gh-header.is-highlight .gh-header-middle:after{position:absolute;top:0;right:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}.gh-header.is-highlight .gh-card:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}.gh-header.is-highlight .gh-featured .gh-card:first-child:before{display:none}@media (max-width:1199px){.gh-header.is-highlight .gh-header-inner{grid-template-columns:repeat(9,1fr)}.gh-header.is-highlight .gh-header-left{grid-column:span 6}.gh-header.is-highlight .gh-header-middle{grid-column:7/-1}.gh-header.is-highlight .gh-header-right{grid-column:1/-1}.gh-header.is-highlight .gh-featured-feed{display:grid;grid-template-columns:repeat(3,1fr)}.gh-header.is-highlight .gh-featured-feed .gh-card:before{width:calc(100% + var(--grid-gap))}.gh-header.is-highlight .gh-featured-feed .gh-card:after{position:absolute;top:0;left:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}}@media (max-width:991px){.gh-header.is-highlight .gh-header-middle .gh-card:nth-child(2) .gh-card-image{display:none}}@media (max-width:767px){.gh-header.is-highlight .gh-header-inner{display:flex;flex-direction:column}.gh-header.is-highlight .gh-featured-feed{display:flex}.gh-header.is-highlight .gh-card-image{display:block!important}.gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt{display:-webkit-box}}.gh-header.is-classic{display:flex;margin-top:0;padding-block:160px}.gh-header.is-classic .gh-header-inner{display:flex;flex-direction:column;align-items:center;gap:48px;overflow:unset;margin:auto;max-width:1020px;text-align:center}.gh-header.is-classic .gh-header-title{font-size:calc(clamp(3rem, 1.82vw + 2.27rem, 4.6rem)*var(--factor, 1));line-height:1.1;letter-spacing:-.028em}.gh-header.is-classic.has-image{margin-top:0}.gh-header.is-classic.has-image:before{position:absolute;inset:0;content:"";opacity:.3;background-color:var(--color-black);transition:opacity 1.5s ease}.gh-header.is-classic.has-image .gh-header-inner{color:#fff}.gh-header.is-classic.has-image .gh-header-image{position:absolute;inset:0;z-index:-1;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.gh-header.is-classic.has-image .gh-form{background-color:#fff}.gh-cta{display:none;margin-top:max(4vw,40px)}.gh-header:is(.is-highlight,.is-magazine)+.gh-cta{display:block}.gh-cta-inner{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;gap:36px;padding:clamp(48px,3.64vw + 33.45px,80px) clamp(40px,2.73vw + 29.09px,64px);text-align:center;background-color:var(--color-lighter-gray)}.gh-cta-content{max-width:640px}.gh-cta-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;line-height:1.1;letter-spacing:-.021em}.gh-cta-description{margin-top:12px;font-size:1.8rem;line-height:1.4;letter-spacing:-.015em}.gh-featured{margin-top:100px}.gh-navigation+.gh-featured{margin-top:64px}.gh-header.is-classic:not(.has-image)+.gh-featured{margin-top:0}.gh-featured-inner{overflow:hidden}.gh-featured-title{margin-bottom:20px;padding-bottom:12px;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.gh-featured-feed{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--grid-gap)}.gh-featured-feed .gh-card{container-type:inline-size;container-name:featured-card}.gh-featured-feed .gh-card-link{display:flex;flex-direction:row-reverse;align-items:flex-start}.gh-featured-feed .gh-card-image{width:72px;aspect-ratio:1}@container featured-card (width < 240px){.gh-featured-feed .gh-card-image{display:none}}@container featured-card (240px <= width <= 270px){.gh-featured-feed .gh-card-image{width:64px}}.gh-featured-feed .gh-card-wrapper{container-type:inline-size;container-name:featured-card-wrapper}.gh-featured-feed .gh-card-title{font-size:1.6rem;font-weight:650;letter-spacing:-.011em}@container featured-card-wrapper (width < 170px){.gh-featured-feed .gh-card-title{font-size:1.6rem}}.gh-featured-feed .gh-card-excerpt{display:none}.gh-featured-feed .gh-card-meta:not(:empty){margin-top:8px}.gh-featured-feed .gh-card:before{position:absolute;top:0;left:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}@media (max-width:1199px){.gh-viewport>.gh-featured .gh-featured-feed{grid-template-columns:repeat(3,1fr)}.gh-viewport>.gh-featured .gh-featured-feed .gh-card:nth-child(4){display:none}}@media (max-width:767px){.gh-viewport>.gh-featured .gh-featured-feed{display:flex;flex-direction:column}}.gh-container{flex-grow:1;margin-top:64px}.gh-container-inner{display:grid;grid-template-columns:repeat(16,1fr);-moz-column-gap:var(--grid-gap);column-gap:var(--grid-gap)}:is(.gh-featured,.gh-cta)+.gh-container{margin-top:max(4vw,40px)}.gh-header.is-classic:not(.has-image)+.gh-container{margin-top:0}.gh-navigation+.gh-container .gh-container-title,:is(.paged,.tag-template,.author-template) .gh-container:not(.has-sidebar) .gh-container-title{display:none}.gh-more{display:none;grid-column:1/-1;margin-top:48px;font-size:calc(1.9rem*var(--factor, 1));font-weight:725;letter-spacing:-.014em}.gh-container.has-sidebar .gh-more{grid-column:span 12}.home-template .gh-feed:has(>:nth-child(12):last-child)~.gh-more{display:block}.gh-more a{display:flex;align-items:center;gap:4px}.gh-more svg{margin-top:-1px;width:18px;height:18px}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-more svg{margin-top:0}.gh-container.has-sidebar .gh-main{grid-column:1/span 12;position:relative}.gh-container.has-sidebar .gh-sidebar{grid-column:13/-1}.gh-container.has-sidebar .gh-main:after{position:absolute;top:0;right:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}.gh-container:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:3/span 12}.gh-container.is-list.no-image:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:4/span 10}.gh-header:is(.is-highlight,.is-magazine)~.gh-container.is-grid:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:1/-1}@media (max-width:1199px){.gh-container-inner{display:block;overflow:hidden}.gh-container.has-sidebar .gh-sidebar{display:none}}.gh-container-title{grid-column:1/-1;margin-bottom:calc(var(--grid-gap)/2);padding-bottom:12px;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.gh-container:not(:has(.gh-card)) .gh-container-title{display:none}.gh-container .gh-feed{gap:var(--grid-gap)}.gh-container .gh-card-meta:not(:empty){margin-top:12px}.gh-container.is-list .gh-feed{display:flex;flex-direction:column;container-type:inline-size;container-name:list-feed}.gh-container.is-list .gh-card-link{flex-direction:row;align-items:center;gap:24px}.gh-container.is-list .no-image .gh-card-link{padding-block:20px}.gh-container.is-list .gh-card-image{flex-shrink:0;width:220px;aspect-ratio:1.618033}@container list-feed (width < 600px){.gh-container.is-list .gh-card-image{width:160px}}.gh-container.is-list .gh-card:not(.no-image) .gh-card-wrapper{max-width:600px}.gh-container.is-list .gh-card-title{--factor:1.05}.gh-container.is-list .no-image .gh-card-title{--factor:1.2}.gh-container.is-list .gh-card-excerpt{margin-top:6px}.gh-container.is-list .gh-card+.gh-card:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}.home-template .gh-container.is-list .gh-card:first-child:before{display:none}@media (max-width:767px){.gh-container.is-list .gh-card-link{flex-direction:column;align-items:flex-start}.gh-container.is-list .gh-card-image{width:100%}}.gh-container.is-grid .gh-feed{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));row-gap:calc(var(--grid-gap)*1.5);overflow:hidden}.gh-container.is-grid .gh-card:before{top:calc(var(--grid-gap)/-2);right:calc(var(--grid-gap)/-2);height:1px}.gh-container.is-grid .gh-card:after,.gh-container.is-grid .gh-card:before{position:absolute;left:calc(var(--grid-gap)/-2);content:"";background-color:var(--color-border)}.gh-container.is-grid .gh-card:after{top:0;width:1px;height:100%}@media (max-width:767px){.gh-container.is-grid .gh-feed{grid-template-columns:repeat(2,1fr)}}@media (max-width:576px){.gh-container.is-grid .gh-feed{display:flex;flex-direction:column}}.gh-container.is-list.no-image .gh-card-image{display:none}.gh-sidebar-inner{position:sticky;top:calc(var(--grid-gap)/2)}.gh-sidebar-title{grid-column:1/-1;margin-bottom:calc(var(--grid-gap)/2);padding-bottom:12px;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.gh-about{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px 24px;min-height:380px;text-align:center;background-color:var(--color-lighter-gray)}.gh-about-icon{margin-bottom:24px;width:60px;height:60px;border-radius:50%}.gh-about-title{font-size:calc(2.4rem*var(--factor, 1));font-weight:700;letter-spacing:-.019em}.gh-about-description{margin-top:12px;font-size:1.45rem;line-height:1.4}.gh-about .gh-button{margin-top:32px}.gh-recommendations{margin-top:48px}.gh-recommendations .recommendations{display:flex;flex-direction:column;gap:26px;margin:0;padding:0;list-style-type:none}.gh-recommendations .recommendation:first-child{margin-top:4px}.gh-recommendations .recommendation a{display:grid;grid-template-columns:24px auto;gap:4px 12px}.gh-recommendations .recommendation a:hover{opacity:1}.gh-recommendations .recommendation-favicon{grid-row:span 2;width:100%;border-radius:4px}.gh-recommendations .recommendation-title{margin-top:-2px;font-size:1.5rem;font-weight:650;letter-spacing:-.009em}.gh-recommendations .recommendation a:hover .recommendation-title{opacity:.8}.gh-recommendations .recommendation-url{order:1;overflow:hidden;font-size:1.4rem;line-height:1.25;color:var(--color-secondary-text);text-overflow:ellipsis}.gh-recommendations .recommendation-description{display:-webkit-box;display:none;overflow-y:hidden;grid-column:2;font-size:1.4rem;line-height:1.4;color:var(--color-secondary-text);-webkit-line-clamp:2;-webkit-box-orient:vertical}.gh-recommendations button{display:inline-flex;align-items:center;gap:2px;margin-top:24px;padding:0;cursor:pointer;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;background-color:transparent;border:0;color:var(--color-darker-gray)}.gh-recommendations button svg{margin-top:-1px;width:12px}.gh-recommendations button:hover{opacity:.8}.gh-article{--container-width:1120px;word-break:break-word}.gh-article-header{margin:clamp(40px,3.64vw + 25.45px,72px) 0 40px}.gh-article-tag{margin-bottom:12px;font-size:1.3rem;font-weight:500;letter-spacing:.01em;text-transform:uppercase;color:var(--ghost-accent-color)}.gh-article-title{font-size:calc(clamp(3.4rem, 1.36vw + 2.85rem, 4.6rem)*var(--factor, 1));line-height:1.1;letter-spacing:-.022em}.gh-article-excerpt{margin-top:clamp(12px,.45vw + 10.18px,16px);max-width:720px;font-size:clamp(1.7rem,.23vw + 1.61rem,1.9rem);line-height:1.45;letter-spacing:-.018em}.gh-article-meta{display:flex;align-items:center;gap:8px;margin-left:6px}.gh-article-author-image{display:flex;margin-right:8px}.gh-article-author-image a{position:relative;margin:0 -8px;width:56px;height:56px;overflow:hidden;background-color:var(--color-light-gray);border-radius:50%;border:3px solid var(--background-color)}.gh-article-author-image a:first-child{z-index:10}.gh-article-author-image a:nth-child(2){z-index:9}.gh-article-author-image a:nth-child(3){z-index:8}.gh-article-author-image :is(img,svg){position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.gh-article-meta-wrapper{display:flex;flex-direction:column;gap:4px}.gh-article-author-name{font-size:1.6rem;font-weight:650;letter-spacing:-.013em}.gh-article-meta-content{font-size:1.35rem;font-weight:500;line-height:1.2;letter-spacing:-.006em;color:var(--color-secondary-text)}.gh-article-image{grid-column:wide;margin-top:40px}.gh-article-image img{width:100%}.page-template .gh-article-header{margin-block:72px 32px}.page-template .gh-content:only-child>:first-child:not(.kg-width-full){margin-top:64px}.page-template .gh-content>:last-child:not(.kg-width-full){margin-bottom:6vw}.page-template .gh-footer{margin-top:0}.gh-content{font-size:var(--content-font-size,1.7rem);letter-spacing:-.01em}.gh-content>*+*{margin-top:calc(28px*var(--content-spacing-factor, 1));margin-bottom:0}.gh-content>.kg-width-full+.kg-width-full:not(.kg-width-full.kg-card-hascaption+.kg-width-full){margin-top:0}.gh-content>[id]:not(:first-child){margin-top:calc(56px*var(--content-spacing-factor, 1))}.post-template .gh-content.drop-cap>p:first-of-type:first-letter{font-size:3.1em;float:left;line-height:1;margin:0 .2em 0 -1px;font-weight:700}.has-serif-body.post-template:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content.drop-cap>p:first-of-type:first-letter{font-size:3.2em}.gh-content>[id]+p{margin-top:calc(12px*var(--content-spacing-factor, 1))}.gh-content>:is(hr,blockquote,iframe){position:relative;margin-top:calc(48px*var(--content-spacing-factor, 1))!important}.gh-content>:is(hr,blockquote,iframe)+*{margin-top:calc(48px*var(--content-spacing-factor, 1))!important}.gh-content h1{font-size:calc(2.2em*var(--factor, 1));letter-spacing:-.02em}.gh-content h2{font-size:calc(1.6em*var(--factor, 1));letter-spacing:-.02em}.gh-content h3{font-size:calc(1.3em*var(--factor, 1));letter-spacing:-.017em}.gh-content a{color:var(--ghost-accent-color);text-decoration:underline}.gh-content .kg-callout-card .kg-callout-text,.gh-content .kg-toggle-card .kg-toggle-content>:is(ul,ol,p){font-size:.95em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-callout-text,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>ol,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>p,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>ul,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>blockquote,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>dl,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ol,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>p,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ul{font-family:var(--font-serif-alt)}.gh-content :is(ul,ol){padding-left:28px}.gh-content :is(li+li,li :is(ul,ol)){margin-top:8px}.gh-content ol ol li{list-style-type:lower-alpha}.gh-content ol ol ol li{list-style-type:lower-roman}.gh-content hr{width:100%;height:1px;background-color:var(--color-border);border:0}.gh-content .gh-table{overflow-x:scroll;-webkit-overflow-scrolling:touch}.gh-content .gh-table table{width:100%;font-family:var(--font-sans);font-size:1.5rem;white-space:nowrap;vertical-align:top;border-spacing:0;border-collapse:collapse}.gh-content .gh-table table th{font-size:1.2rem;font-weight:700;color:var(--color-darkgrey);text-align:left;text-transform:uppercase;letter-spacing:.2px}.gh-content .gh-table table :is(th,td),.gh-content .gh-table table td{padding:6px 12px;border-bottom:1px solid var(--color-border)}.gh-content .gh-table table :is(th,td):first-child{padding-left:0}.gh-content .gh-table table :is(th,td):last-child{padding-right:0}.gh-content pre{overflow:auto;padding:16px;font-size:1.5rem;line-height:1.5em;border-radius:6px}.gh-content :not(pre)>code,.gh-content pre{background:var(--color-lighter-gray);font-family:var(--font-mono)}.gh-content :not(pre)>code{vertical-align:baseline;padding:.15em .4em;font-weight:400;font-size:.95em;line-height:1em;border-radius:.25em}.gh-content :not(.kg-card):not(table):not([id])+:is(.kg-card,table){margin-top:calc(48px*var(--content-spacing-factor, 1))}.gh-content :is(.kg-card,table)+:not(.kg-card):not(table):not([id]){margin-top:calc(48px*var(--content-spacing-factor, 1))}.gh-content .kg-card.kg-width-full+:not(.kg-card):not([id]),.gh-content :not(.kg-card):not([id])+.kg-card.kg-width-full{margin-top:calc(68px*var(--content-spacing-factor, 1))}.kg-image{margin-right:auto;margin-left:auto}.kg-embed-card{display:flex;flex-direction:column;align-items:center;width:100%}.kg-gallery-image,.kg-image[width][height]{cursor:pointer}.kg-gallery-image a:hover,.kg-image-card a:hover{opacity:1!important}.kg-card.kg-toggle-card .kg-toggle-heading-text{font-size:2rem;font-weight:700}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-toggle-card .kg-toggle-heading-text{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-toggle-card .kg-toggle-heading-text{font-family:var(--font-mono)}.kg-callout-card.kg-card{border-radius:.25em}.kg-callout-card-accent a{text-decoration:underline}blockquote:not([class]){padding-left:2rem;border-left:4px solid var(--ghost-accent-color)}blockquote.kg-blockquote-alt{font-style:normal;font-weight:400;color:var(--color-secondary-text)}.kg-card.kg-button-card .kg-btn{height:unset;padding:.6em 1.2em;text-align:center;font-size:1em;line-height:1.2em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-card.kg-header-card h2.kg-header-card-header{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-card.kg-header-card h2.kg-header-card-header{font-family:var(--font-mono)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .kg-header-card h3.kg-header-card-subheader{font-family:var(--font-serif)}.kg-bookmark-card .kg-bookmark-container{border-radius:.25em!important}.kg-bookmark-card .kg-bookmark-container:hover{opacity:1}.kg-bookmark-card a.kg-bookmark-container,.kg-bookmark-card a.kg-bookmark-container:hover{background:var(--background-color)!important;color:var(--color-darker-gray)!important}.kg-bookmark-card .kg-bookmark-content{padding:1.15em}.kg-bookmark-card .kg-bookmark-title{font-size:.9em}.kg-bookmark-card .kg-bookmark-description{max-height:none;margin-top:.3em;font-size:.8em}.kg-bookmark-card .kg-bookmark-metadata{font-size:.8em}.kg-bookmark-card .kg-bookmark-thumbnail img{border-radius:0 .2em .2em 0}.kg-product-card.kg-card .kg-product-card-image{margin-bottom:12px}.kg-product-card.kg-card a.kg-product-card-button{height:2.8em;margin-top:12px}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-product-card.kg-card .kg-product-card-title{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-product-card.kg-card .kg-product-card-title{font-family:var(--font-mono)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .kg-product-card-description :is(p,ul,ol){font-family:var(--font-serif-alt)}.kg-file-card.kg-card .kg-file-card-container{padding:.6em}.kg-file-card.kg-card .kg-file-card-contents{margin:4px 8px 6px}.kg-file-card.kg-card .kg-file-card-metadata{font-size:.9em}.kg-file-card.kg-card .kg-file-card-filesize:before{margin-right:6px;margin-left:6px}figcaption{margin-top:12px;font-size:1.4rem;text-align:center}.kg-card.kg-width-full figcaption{padding:0 16px}figcaption a{color:var(--ghost-accent-color);text-decoration:underline}.gh-comments{margin-top:48px}.post-template .gh-container{margin-top:120px}.post-template .gh-container-inner{display:block}.post-template .gh-container.is-grid .gh-feed{grid-template-columns:repeat(4,1fr)}.post-template .gh-container .gh-container-title{display:block}.gh-archive{display:grid;grid-template-columns:repeat(16,1fr);gap:var(--grid-gap);margin-block:80px 24px}.gh-archive.has-image{margin-top:48px}.gh-archive-inner{display:grid;grid-template-columns:1fr 1fr;gap:var(--grid-gap);grid-column:1/-1;padding-bottom:clamp(40px,2.73vw + 29.09px,64px);border-bottom:1px solid var(--color-border)}.gh-archive.has-image .gh-archive-inner{align-items:center;grid-column:1/-1}.gh-archive:not(.has-sidebar):not(.has-image) .gh-archive-inner{grid-column:3/span 12}.gh-archive .gh-article-image{grid-column:auto;margin-top:0}:is(.tag-template,.author-template) .gh-container{margin-top:0}.author-template .gh-archive-inner{display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:24px}.author-template .gh-article-image{margin-top:0;width:120px;height:120px;border-radius:50%;-o-object-fit:cover;object-fit:cover}.author-template .gh-article-title{font-size:3.6rem}.gh-author-meta{display:flex;gap:10px;margin-top:14px;font-size:1.5rem;font-weight:550;color:var(--color-secondary-text)}.gh-author-meta a{color:inherit}.gh-author-social{display:flex;gap:16px;align-items:center;padding-left:3px}.gh-author-social svg{width:20px;height:20px}@media (max-width:1199px){.gh-archive{display:block}}@media (max-width:767px){.gh-archive-inner{display:flex;align-items:flex-start}.author-template .gh-archive-inner,.gh-archive-inner{flex-direction:column-reverse}}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]){--factor:1.15}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]){--factor:1.1}.has-sans-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-sans))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-serif));font-weight:550}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-mono))}.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .is-body{font-family:var(--gh-font-body,var(--font-sans))}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .is-body{font-family:var(--gh-font-body,var(--font-serif-alt))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-classic .gh-header-title{font-weight:550;letter-spacing:-.015em}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-classic .gh-header-title{letter-spacing:-.01em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form{border-radius:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-card-title{line-height:1.15;letter-spacing:-.006em;font-size:calc(2rem*var(--factor, 1))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-featured-feed .gh-card-title{font-size:calc(1.6rem*var(--factor, 1))}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-featured-feed .gh-card-title{font-size:calc(1.5rem*var(--factor, 1));letter-spacing:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-highlight .gh-featured-feed .gh-card-title{font-size:clamp(1.6rem,.23vw + 1.51rem,1.8rem)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-card-title{font-size:calc(1.8rem*var(--factor, 1));line-height:1.2}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-about-title{letter-spacing:-.009em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-article-title,.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-footer-signup-header{letter-spacing:-.019em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]){--content-font-size:1.9rem}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-card-excerpt{font-size:1.65rem;line-height:1.4;letter-spacing:.0005em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-header.is-highlight .gh-card:first-child .gh-card-excerpt,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-excerpt{font-size:1.8rem;letter-spacing:-.001em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-highlight .gh-header-left .gh-card-title,.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-title{font-weight:550;font-size:clamp(3.2rem,1.82vw + 2.47rem,4.9rem)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-about-description{font-size:1.6rem}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-article-excerpt,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-footer-signup-subhead{letter-spacing:0}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.gh-button,.gh-form,.gh-form-input),body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button,.gh-form,.gh-form-input),body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button,.gh-form,.gh-form-input){border-radius:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-cta-title{font-size:4.8rem}.gh-footer{margin-top:120px;font-size:1.5rem;color:var(--color-darker-gray)}.gh-footer a:not(.gh-button){color:inherit}.gh-footer.has-accent-color{background-color:var(--ghost-accent-color)}.gh-footer.has-accent-color .gh-footer-bar{border-top:0}.gh-footer.has-accent-color .gh-button{background-color:#fff;color:#15171a}.gh-footer-bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;-moz-column-gap:32px;column-gap:32px;margin-bottom:120px;padding-block:28px;font-weight:550;border-block:1px solid var(--color-border)}.gh-footer-logo{position:relative;font-family:var(--gh-font-heading,var(--font-sans));font-size:calc(2.4rem*var(--factor, 1));font-weight:725;letter-spacing:-.015em;white-space:nowrap}.gh-footer-logo img{max-height:40px}.gh-footer-menu .nav{display:flex;justify-content:center;gap:8px 28px;flex-wrap:wrap;margin:0;padding:0;list-style-type:none}.gh-footer-copyright{text-align:right;white-space:nowrap}.gh-footer-copyright a{text-decoration:underline}.gh-footer-signup{display:flex;flex-direction:column;align-items:center;margin-bottom:120px;text-align:center}.gh-footer-signup-header{font-size:calc(clamp(2.8rem,1.36vw + 2.25rem,4rem)*var(--factor, 1));font-weight:700;letter-spacing:-.03em}.gh-footer-signup-subhead{margin-top:12px;max-width:640px;font-size:1.8rem;font-weight:450;line-height:1.4;letter-spacing:-.014em;opacity:.75}.gh-footer-signup .gh-form{margin-top:40px}@media (max-width:991px){.gh-footer-bar{display:flex;flex-direction:column;gap:20px}}.gh-social-links{display:flex;justify-content:center;gap:20px;margin-bottom:32px}.gh-social-links a{will-change:opacity}.gh-social-links svg{width:20px;height:20px}.pswp{position:absolute;top:0;left:0;z-index:3999999;display:none;width:100%;height:100%;overflow:hidden;touch-action:none;outline:none;backface-visibility:hidden;-webkit-text-size-adjust:100%}.pswp img{max-width:none}.pswp--animate_opacity{opacity:.001;transition:opacity 333ms cubic-bezier(.4,0,.22,1);will-change:opacity}.pswp--open{display:block}.pswp--zoom-allowed .pswp__img{cursor:zoom-in}.pswp--zoomed-in .pswp__img{cursor:grab}.pswp--dragging .pswp__img{cursor:grabbing}.pswp__bg{background-color:rgba(0,0,0,.85);opacity:0;transition:opacity 333ms cubic-bezier(.4,0,.22,1);transform:translateZ(0);backface-visibility:hidden;will-change:opacity}.pswp__bg,.pswp__scroll-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__scroll-wrap{overflow:hidden}.pswp__container,.pswp__zoom-wrap{position:absolute;top:0;right:0;bottom:0;left:0;touch-action:none;backface-visibility:hidden}.pswp__container,.pswp__img{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.pswp__zoom-wrap{position:absolute;width:100%;transition:transform 333ms cubic-bezier(.4,0,.22,1);transform-origin:left top}.pswp--animated-in .pswp__bg,.pswp--animated-in .pswp__zoom-wrap{transition:none}.pswp__item{right:0;bottom:0;overflow:hidden}.pswp__img,.pswp__item{position:absolute;top:0;left:0}.pswp__img{width:auto;height:auto}.pswp__img--placeholder{backface-visibility:hidden}.pswp__img--placeholder--blank{background:var(--color-black)}.pswp--ie .pswp__img{top:0;left:0;width:100%!important;height:auto!important}.pswp__error-msg{position:absolute;top:50%;left:0;width:100%;margin-top:-8px;font-size:14px;line-height:16px;color:var(--color-secondary-text);text-align:center}.pswp__error-msg a{color:var(--color-secondary-text);text-decoration:underline}.pswp__button{position:relative;display:block;float:right;width:44px;height:44px;padding:0;margin:0;overflow:visible;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background:none;border:0;box-shadow:none;transition:opacity .2s}.pswp__button:focus,.pswp__button:hover{opacity:1}.pswp__button:active{outline:none;opacity:.9}.pswp__button::-moz-focus-inner{padding:0;border:0}.pswp__ui--over-close .pswp__button--close{opacity:1}.pswp__button,.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{width:44px;height:44px;background:url(../images/default-skin.png) 0 0 no-repeat;background-size:264px 88px}@media (min-resolution:1.1dppx),(min-resolution:105dpi){.pswp--svg .pswp__button,.pswp--svg .pswp__button--arrow--left:before,.pswp--svg .pswp__button--arrow--right:before{background-image:url(../images/default-skin.svg)}.pswp--svg .pswp__button--arrow--left,.pswp--svg .pswp__button--arrow--right{background:none}}.pswp__button--close{background-position:0 -44px}.pswp__button--share{background-position:-44px -44px}.pswp__button--fs{display:none}.pswp--supports-fs .pswp__button--fs{display:block}.pswp--fs .pswp__button--fs{background-position:-44px 0}.pswp__button--zoom{display:none;background-position:-88px 0}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__button--zoom{background-position:-132px 0}.pswp--touch .pswp__button--arrow--left,.pswp--touch .pswp__button--arrow--right{visibility:hidden}.pswp__button--arrow--left,.pswp__button--arrow--right{position:absolute;top:50%;width:70px;height:100px;margin-top:-50px;background:none}.pswp__button--arrow--left{left:0}.pswp__button--arrow--right{right:0}.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{position:absolute;top:35px;width:32px;height:30px;content:""}.pswp__button--arrow--left:before{left:6px;background-position:-138px -44px}.pswp__button--arrow--right:before{right:6px;background-position:-94px -44px}.pswp__counter{position:absolute;top:0;left:0;height:44px;padding:0 15px;font-size:11px;font-weight:700;line-height:44px;color:var(--color-white);-webkit-user-select:none;-moz-user-select:none;user-select:none}.pswp__caption{position:absolute;bottom:0;left:0;width:100%;min-height:44px}.pswp__caption__center{max-width:420px;padding:25px 15px 30px;margin:0 auto;font-size:11px;line-height:1.6;color:var(--color-white);text-align:center}.pswp__caption__center .post-caption-title{margin-bottom:7px;font-size:15px;font-weight:500;text-transform:uppercase}.pswp__caption__center .post-caption-meta-item+.post-caption-meta-item:before{padding:0 4px;content:"\02022"}.pswp__caption--empty{display:none}.pswp__caption--fake{visibility:hidden}.pswp__preloader{position:absolute;top:0;left:50%;width:44px;height:44px;margin-left:-22px;opacity:0;transition:opacity .25s ease-out;direction:ltr;will-change:opacity}.pswp__preloader__icn{width:20px;height:20px;margin:12px}.pswp__preloader--active{opacity:1}.pswp__preloader--active .pswp__preloader__icn{background:url(../images/preloader.gif) 0 0 no-repeat}.pswp--css_animation .pswp__preloader--active{opacity:1}.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn{animation:clockwise .5s linear infinite}.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut{animation:donut-rotate 1s cubic-bezier(.4,0,.22,1) infinite}.pswp--css_animation .pswp__preloader__icn{position:absolute;top:15px;left:15px;width:14px;height:14px;margin:0;background:none;opacity:.75}.pswp--css_animation .pswp__preloader__cut{position:relative;width:7px;height:14px;overflow:hidden}.pswp--css_animation .pswp__preloader__donut{position:absolute;top:0;left:0;box-sizing:border-box;width:14px;height:14px;margin:0;background:none;border:2px solid var(--color-white);border-bottom-color:transparent;border-left-color:transparent;border-radius:50%}@media screen and (max-width:1024px){.pswp__preloader{position:relative;top:auto;left:auto;float:right;margin:0}}@keyframes clockwise{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes donut-rotate{0%{transform:rotate(0)}50%{transform:rotate(-140deg)}to{transform:rotate(0)}}.pswp__ui{z-index:1550;visibility:visible;opacity:1;-webkit-font-smoothing:auto}.pswp__top-bar{position:absolute;top:0;left:0;width:100%;height:44px}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right,.pswp__caption,.pswp__top-bar{backface-visibility:hidden;transition:opacity 333ms cubic-bezier(.4,0,.22,1);will-change:opacity}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right{visibility:visible}.pswp__ui--idle .pswp__button--arrow--left,.pswp__ui--idle .pswp__button--arrow--right,.pswp__ui--idle .pswp__top-bar{opacity:0}.pswp__ui--hidden .pswp__button--arrow--left,.pswp__ui--hidden .pswp__button--arrow--right,.pswp__ui--hidden .pswp__caption,.pswp__ui--hidden .pswp__top-bar{opacity:.001}.pswp__ui--one-slide .pswp__button--arrow--left,.pswp__ui--one-slide .pswp__button--arrow--right,.pswp__ui--one-slide .pswp__counter{display:none}.pswp__element--disabled{display:none!important}.pswp--minimal--dark .pswp__top-bar{background:none}.gh-meta-share{display:flex;align-items:center;justify-content:space-between;margin-top:20px}.has-light-text .gh-button-share{border-color:hsla(0,0%,100%,.25);color:hsla(0,0%,100%,.85)}.has-light-text .gh-button-share:hover{border-color:hsla(0,0%,100%,.85)}.gh-button-share{display:inline-flex;align-items:center;border:1px solid rgba(0,0,0,.15);border-radius:999px;color:rgba(0,0,0,.85);background:transparent;cursor:pointer;transition:all .4s ease}.gh-button-share:hover{border-color:rgba(0,0,0,.5)}:root{--background-color:#fcf6e4 !important}.gh-article-tags{margin-bottom:12px}.gh-article-tags--footer{padding-block:32px}.gh-article-tags--footer .gh-article-tag{font-size:1.6rem}@media (min-width:992px){.tag-template .gh-article-title{white-space:nowrap}}.home-template .gh-header.is-classic.has-image,.post-template .gh-article-header.has-feature-image{min-height:clamp(460px,72svh,760px)}.home-template .gh-header.is-classic.has-image{padding-block:0}.post-template .gh-article-header.has-feature-image{position:relative;align-content:center;margin:0;color:var(--color-white);isolation:isolate}.post-template .gh-article-header.has-feature-image:before{position:absolute;inset:0;z-index:-1;content:"";background-color:rgba(0,0,0,.7)}.post-template .gh-article-header.has-feature-image .gh-article-image{position:absolute;inset:0;z-index:-2;grid-column:full;margin:0}.post-template .gh-article-header.has-feature-image .gh-article-image img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.post-template .gh-article-header.has-feature-image :is(a,.gh-article-tag,.gh-article-meta-content){color:inherit}.post-template .gh-article-header.has-feature-image .gh-article-author-image a{border-color:hsla(0,0%,100%,.8)}.post-template .gh-article-header.has-feature-image .gh-button-share{color:inherit;border-color:hsla(0,0%,100%,.6)}.post-template .gh-article-header.has-feature-image+.gh-content{padding-top:clamp(43px,3.33vw,64px)}body.home-template:has(.gh-header.is-classic.has-image) .gh-navigation,body.post-template:has(.gh-article-header.has-feature-image) .gh-navigation{position:absolute;z-index:10;width:100%;background-color:transparent;color:var(--color-white)}body.home-template:has(.gh-header.is-classic.has-image) .gh-navigation-actions,body.post-template:has(.gh-article-header.has-feature-image) .gh-navigation-actions{background-color:transparent}body.home-template:has(.gh-header.is-classic.has-image) .gh-navigation :is(.gh-navigation-logo,a:not(.gh-button),.gh-icon-button),body.post-template:has(.gh-article-header.has-feature-image) .gh-navigation :is(.gh-navigation-logo,a:not(.gh-button),.gh-icon-button){color:inherit}.post-template .gh-article-header.has-feature-image .gh-article-author-name a,.post-template .gh-article-header.has-feature-image .gh-article-tag,.post-template .gh-article-header.has-feature-image .gh-button-share,body.home-template:has(.gh-header.is-classic.has-image) .gh-navigation :is(.gh-navigation-menu a,.gh-search,.gh-navigation-members a:not(.gh-button),.gh-icon-button),body.post-template:has(.gh-article-header.has-feature-image) .gh-navigation :is(.gh-navigation-menu a,.gh-search,.gh-navigation-members a:not(.gh-button),.gh-icon-button){color:#fcf6e4}.post-template .gh-article-header.has-feature-image .gh-button-share{color:var(--ghost-accent-color);background-color:#fcf6e4;border-color:#fcf6e4}@media (max-width:767px){.home-template .gh-header.is-classic.has-image,.post-template .gh-article-header.has-feature-image{min-height:clamp(420px,78svh,620px)}}/*# sourceMappingURL=screen.css.map */ diff --git a/assets/built/screen.css.map b/assets/built/screen.css.map index ff88aea30..da1028f5f 100644 --- a/assets/built/screen.css.map +++ b/assets/built/screen.css.map @@ -1 +1 @@ -{"version":3,"sources":["screen.css"],"names":[],"mappings":"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","file":"screen.css","sourcesContent":["/* Table of contents\n/* ------------------------------------------------------------\n\nThis is a development CSS file which is built to a minified\nproduction stylesheet in assets/built/screen.css\n\n1. Variables\n2. Fonts\n3. Resets\n4. Globals\n5. Layout\n6. Navigation\n 6.1. Navigation styles\n 6.2. Navigation layouts\n 6.3. Dropdown menu\n 6.4. Mobile menu\n7. Card\n8. Header\n 8.1. Magazine layout\n 8.2. Highlight layout\n 8.3. Classic layout\n9. CTA\n10. Featured posts\n11. Container\n 11.1. With sidebar\n 11.2. Without sidebar\n12. Post list\n 12.1. List style\n 12.2. Grid style\n 12.3. No image list\n13. Sidebar\n14. Post/page\n 14.1. Article\n 14.2. Page template\n 14.3. Page without header\n15. Content\n16. Cards\n17. Comments\n18. Recent posts\n19. Archive\n20. Design settings\n21. Footer\n 21.1. Footer styles\n 21.2. Footer bar\n 21.3. Footer signup\n 21.4. Social links\n22. Lightbox\n\n*/\n\n/* 1. Variables\n/* ---------------------------------------------------------- */\n\n:root {\n --color-white: #fff;\n --color-lighter-gray: rgb(0 0 0 / 0.05);\n --color-light-gray: #e6e6e6;\n --color-mid-gray: #ccc;\n --color-dark-gray: #444;\n --color-darker-gray: #15171a;\n --color-black: #000;\n --color-primary-text: var(--color-darker-gray);\n --color-secondary-text: rgb(0 0 0 / 0.55);\n --color-border: rgb(0 0 0 / 0.08);\n --color-dark-border: rgb(0 0 0 / 0.55);\n --font-sans: Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n --font-serif: \"EB Garamond\", Georgia, Times, serif;\n --font-serif-alt: Georgia, Times, serif;\n --font-mono: \"JetBrains Mono\", Menlo, Consolas, Monaco, \"Liberation Mono\", \"Lucida Console\", monospace;\n --container-width: 1320px;\n --container-gap: clamp(24px, 1.7032rem + 1.9355vw, 48px);\n --grid-gap: 42px;\n}\n\n:root.has-light-text,\n:is(.gh-navigation, .gh-footer).has-accent-color {\n --color-lighter-gray: rgb(255 255 255 / 0.1);\n --color-darker-gray: #fff;\n --color-secondary-text: rgb(255 255 255 / 0.64);\n --color-border: rgb(255 255 255 / 0.15);\n --color-dark-border: rgb(255 255 255 / 0.5);\n}\n\n/* 2. Fonts\n/* ---------------------------------------------------------- */\n\n/* Fonts are preloaded and defined in default.hbs to avoid layout shift */\n\n/* 3. Resets\n/* ---------------------------------------------------------- */\n\n*, *::before, *::after {\n box-sizing: border-box;\n}\n\n* {\n margin: 0;\n}\n\nhtml {\n font-size: 62.5%;\n}\n\nbody {\n line-height: 1.6;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nimg, picture, video, canvas, svg {\n display: block;\n height: auto;\n max-width: 100%;\n}\n\niframe {\n display: block;\n}\n\ninput, button, textarea, select {\n font: inherit;\n}\n\np, h1, h2, h3, h4, h5, h6 {\n overflow-wrap: break-word;\n}\n\nh1, h2, h3, h4, h5, h6 {\n line-height: 1.2;\n}\n\nsub, sup {\n line-height: 1;\n}\n\n/* 4. Globals\n/* ---------------------------------------------------------- */\n\nbody {\n font-family: var(--gh-font-body, var(--font-sans));\n font-size: 1.6rem;\n background-color: var(--background-color);\n color: var(--color-primary-text);\n}\n\nh1, h2, h3, h4, h5, h6 {\n font-family: var(--gh-font-heading, var(--font-sans));\n}\n\na {\n color: var(--color-darker-gray);\n text-decoration: none;\n}\n\na:hover {\n opacity: 0.8;\n}\n\n.gh-button {\n display: inline-flex;\n gap: 0.4em;\n align-items: center;\n justify-content: center;\n padding: 0.8em 1.4em;\n font-size: 1.5rem;\n font-weight: 600;\n letter-spacing: -0.004em;\n line-height: 1;\n color: var(--color-white);\n cursor: pointer;\n background-color: var(--ghost-accent-color);\n border: 0;\n border-radius: 100px;\n}\n\n.gh-button:hover {\n opacity: 0.95;\n}\n\n.gh-icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n color: var(--color-darker-gray);\n cursor: pointer;\n background-color: transparent;\n border: 0;\n outline: none;\n}\n\n.gh-icon-button:hover :is(svg, span) {\n opacity: 0.8;\n}\n\n.gh-icon-button svg {\n width: 20px;\n height: 20px;\n}\n\n.gh-form {\n display: flex;\n align-items: center;\n position: relative;\n max-width: 560px;\n width: 100%;\n height: 56px;\n font-size: 1.7rem;\n font-weight: 450;\n letter-spacing: -0.008em;\n border-radius: 40px;\n background-color: var(--color-lighter-gray);\n transition: background-color 0.2s ease;\n}\n\n.gh-form.success {\n pointer-events: none;\n}\n\n.gh-form.error {\n box-shadow: 0 0 0 1px red;\n}\n\n.gh-form:hover {\n background-color: rgb(0 0 0 / 0.065);\n}\n\n.has-light-text .gh-form:hover,\n.gh-footer.has-accent-color .gh-form:hover {\n background-color: rgb(255 255 255 / 0.15);\n}\n\n.gh-form-input {\n position: absolute;\n inset: 0;\n padding-inline: 26px;\n width: 100%;\n height: 100%;\n font-size: inherit;\n letter-spacing: inherit;\n line-height: 1.1;\n border: 0;\n border-radius: 40px;\n background-color: transparent;\n outline: none;\n transition: 0.3s ease-in-out;\n}\n\n.gh-form-input::placeholder,\nbutton.gh-form-input {\n color: rgb(0 0 0 / 0.3);\n}\n\n:is(.has-serif-title, .has-mono-title):not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-form-input,\nbody[class*=\" gh-font-heading\"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input,\nbody[class^=\"gh-font-heading\"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input {\n padding-inline: 20px;\n}\n\n.gh-form.gh-form.success .gh-form-input {\n opacity: 0.5;\n}\n\n.has-light-text .gh-form-input,\n.gh-footer.has-accent-color .gh-form-input {\n color: #fff;\n}\n\n.has-light-text .gh-form-input::placeholder,\n.has-light-text button.gh-form-input,\n.gh-footer.has-accent-color .gh-form-input::placeholder {\n color: rgb(255 255 255 / 0.55);\n}\n\n.gh-header.is-classic.has-image .gh-form-input {\n color: #15171a;\n}\n\n.gh-header.is-classic.has-image .gh-form-input::placeholder,\n.gh-header.is-classic.has-image button.gh-form-input,\n.gh-header.is-classic.has-image .gh-form > svg {\n color: rgb(0 0 0 / 0.5);\n}\n\nbutton.gh-form-input {\n padding-inline-start: 56px;\n text-align: left;\n color: var(--color-secondary-text);\n cursor: pointer;\n}\n\n:is(.has-serif-title,.has-mono-title):not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) button.gh-form-input,\nbody[class*=\" gh-font-heading\"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input,\nbody[class^=\"gh-font-heading\"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input {\n padding-inline-start: 50px;\n}\n\n.gh-form .gh-button {\n position: absolute;\n right: 6px;\n min-width: 132px;\n padding-inline: 24px;\n height: 44px;\n font-size: inherit;\n}\n\n.gh-form > svg {\n position: relative;\n left: 22px;\n width: 20px;\n height: 20px;\n color: var(--color-secondary-text);\n}\n\n:is(.has-serif-title,.has-mono-title):not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-form > svg {\n left: 16px;\n}\n\n.gh-form .gh-button svg {\n display: none;\n position: absolute;\n margin-top: 1px;\n}\n\n.gh-form .gh-button > span:last-child {\n display: none;\n}\n\n.gh-form:is(.loading, .success) .gh-button > span:first-child {\n visibility: hidden;\n}\n\n.gh-form.loading .gh-button svg:first-of-type {\n display: block;\n}\n\n.gh-form.success .gh-button > span:first-child {\n display: none;\n}\n\n.gh-form.success .gh-button > span:last-child {\n display: inline;\n}\n\n.gh-form [data-members-error] {\n position: absolute;\n top: 100%;\n margin-top: 10px;\n width: 100%;\n font-size: 1.4rem;\n line-height: 1.4;\n}\n\n@media (max-width: 576px) {\n .gh-form {\n font-size: 1.6rem;\n }\n\n .gh-form .gh-button {\n min-width: 104px;\n padding-inline: 12px;\n }\n}\n\n/* 5. Layout\n/* ---------------------------------------------------------- */\n\n.gh-viewport {\n position: relative;\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n}\n\n.gh-outer {\n padding: 0 max(4vmin, 20px);\n}\n\n.gh-outer .gh-outer {\n padding: 0;\n}\n\n.gh-inner {\n margin: 0 auto;\n max-width: var(--container-width);\n width: 100%;\n}\n\n.gh-main {\n flex-grow: 1;\n}\n\n.gh-canvas,\n.kg-width-full.kg-content-wide {\n --main: min(var(--content-width, 720px), 100% - var(--container-gap) * 2);\n --wide: minmax(0, calc((var(--container-width, 1200px) - var(--content-width, 720px)) / 2));\n --full: minmax(var(--container-gap), 1fr);\n\n display: grid;\n grid-template-columns:\n [full-start] var(--full)\n [wide-start] var(--wide)\n [main-start] var(--main) [main-end]\n var(--wide) [wide-end]\n var(--full) [full-end];\n}\n\n.gh-canvas > * {\n grid-column: main;\n}\n\n.kg-width-wide,\n.kg-content-wide > div {\n grid-column: wide;\n}\n\n.kg-width-full {\n grid-column: full;\n}\n\n/* 6. Navigation\n/* ---------------------------------------------------------- */\n\n.gh-navigation {\n height: 100px;\n font-size: 1.5rem;\n font-weight: 550;\n background-color: var(--background-color);\n color: var(--color-darker-gray);\n}\n\n.gh-navigation :is(.gh-navigation-logo, a:not(.gh-button), .gh-icon-button) {\n color: inherit;\n}\n\n.gh-navigation-inner {\n display: grid;\n grid-auto-flow: row dense;\n column-gap: 24px;\n align-items: center;\n height: 100%;\n}\n\n.gh-navigation-brand {\n line-height: 1;\n}\n\n.gh-navigation-logo {\n position: relative;\n font-family: var(--gh-font-heading, var(--font-sans));\n font-size: calc(2.4rem * var(--factor, 1));\n font-weight: 725;\n letter-spacing: -0.015em;\n white-space: nowrap;\n}\n\n.gh-navigation-logo img {\n max-height: 40px;\n}\n\n.gh-navigation-menu {\n display: flex;\n gap: 24px;\n align-items: center;\n}\n\n.gh-navigation .nav {\n display: inline-flex;\n gap: 28px;\n align-items: center;\n padding: 0;\n margin: 0;\n white-space: nowrap;\n list-style: none;\n}\n\n.nav a {\n display: inline-flex;\n align-items: center;\n gap: 0.35em;\n vertical-align: middle;\n}\n\n.nav-icon {\n display: block;\n width: 1em;\n height: 1em;\n flex: 0 0 auto;\n object-fit: contain;\n}\n\n.gh-navigation .gh-more-toggle {\n position: relative;\n margin: 0 -6px;\n font-size: inherit;\n text-transform: inherit;\n}\n\n.gh-navigation .gh-more-toggle svg {\n width: 24px;\n height: 24px;\n}\n\n.gh-navigation-actions {\n display: flex;\n gap: 24px;\n align-items: center;\n justify-content: flex-end;\n background-color: var(--background-color);\n}\n\n.gh-navigation.has-accent-color .gh-navigation-actions {\n background-color: var(--ghost-accent-color);\n}\n\n.gh-navigation-members {\n display: flex;\n gap: 20px;\n align-items: center;\n white-space: nowrap;\n}\n\n.gh-navigation-members .gh-button {\n font-size: inherit;\n font-weight: 600;\n}\n\n.gh-search {\n margin-right: -2px;\n margin-left: -2px;\n}\n\n@media (max-width: 767px) {\n .gh-navigation-logo {\n white-space: normal;\n }\n\n .gh-navigation-members {\n flex-direction: column-reverse;\n gap: 16px;\n width: 100%;\n }\n\n .gh-navigation-actions .gh-search {\n display: none;\n }\n}\n\n@media (min-width: 768px) {\n .gh-navigation-brand .gh-search {\n display: none;\n }\n\n .gh-navigation:not(.is-dropdown-loaded) .gh-navigation-menu .nav > li {\n opacity: 0;\n }\n}\n\n/* 6.1. Navigation styles */\n\n.gh-navigation.has-accent-color {\n background-color: var(--ghost-accent-color);\n}\n\n.gh-navigation.has-accent-color .gh-button {\n background-color: #fff;\n color: #15171a;\n}\n\n/* 6.2. Navigation layouts */\n\n/*\n======================================================================\nLOGO Home About Collection Author Portal Login Subscribe\n======================================================================\n*/\n\n.gh-navigation.is-left-logo .gh-navigation-inner {\n grid-template-columns: auto 1fr auto;\n}\n\n@media (min-width: 768px) {\n .gh-navigation.is-left-logo .gh-navigation-logo:not(:has(img)) {\n top: -2px;\n }\n}\n\n@media (min-width: 992px) {\n .gh-navigation.is-left-logo .gh-navigation-menu {\n margin-right: 100px;\n margin-left: 16px;\n }\n}\n\n/*\n======================================================================\nHome About Collection LOGO Login Subscribe\n======================================================================\n*/\n\n.gh-navigation.is-middle-logo .gh-navigation-inner {\n grid-template-columns: 1fr auto 1fr;\n}\n\n.gh-navigation.is-middle-logo .gh-navigation-brand {\n grid-column-start: 2;\n}\n\n.gh-navigation.is-middle-logo .gh-navigation-actions {\n gap: 28px;\n}\n\n@media (min-width: 992px) {\n .gh-navigation.is-middle-logo .gh-navigation-menu {\n margin-right: 64px;\n }\n}\n\n/*\n======================================================================\nSearch LOGO Login Subscribe\n Home About Collection Author Portal\n======================================================================\n*/\n\n.gh-navigation.is-stacked {\n position: relative;\n height: auto;\n}\n\n.gh-navigation.is-stacked .gh-navigation-inner {\n grid-template-columns: 1fr auto 1fr;\n}\n\n.gh-navigation.is-stacked .gh-navigation-brand {\n display: flex;\n align-items: center;\n grid-row-start: 1;\n grid-column-start: 2;\n min-height: 80px;\n}\n\n@media (max-width: 767px) {\n .gh-navigation.is-stacked .gh-navigation-brand {\n min-height: unset;\n }\n}\n\n@media (min-width: 992px) {\n .gh-navigation.is-stacked .gh-navigation-inner {\n padding: 0;\n }\n\n .gh-navigation.is-stacked .gh-navigation-brand {\n display: flex;\n align-items: center;\n height: 80px;\n }\n\n .gh-navigation.is-stacked .gh-navigation-menu {\n grid-row-start: 2;\n grid-column: 1 / 4;\n justify-content: center;\n height: 60px;\n margin: 0 48px;\n }\n\n .gh-navigation.is-stacked .gh-navigation-menu::before,\n .gh-navigation.is-stacked .gh-navigation-menu::after {\n position: absolute;\n top: 80px;\n left: 0;\n width: 100%;\n height: 1px;\n content: \"\";\n background-color: var(--color-border);\n }\n\n .gh-navigation.is-stacked .gh-navigation-menu::after {\n top: 140px;\n }\n\n .gh-navigation.is-stacked .gh-navigation-actions {\n grid-row-start: 1;\n grid-column: 1 / 4;\n justify-content: space-between;\n }\n\n .gh-navigation.is-stacked .gh-navigation-actions .gh-search {\n display: flex;\n gap: 10px;\n width: auto;\n }\n}\n\n/* 6.3. Dropdown menu */\n\n.gh-dropdown {\n position: absolute;\n top: 100%;\n right: -16px;\n z-index: 90;\n width: 200px;\n padding: 12px 0;\n margin-top: 24px;\n text-align: left;\n visibility: hidden;\n background-color: #fff;\n border-radius: 5px;\n box-shadow: 0 0 0 1px rgb(0 0 0 / 0.04), 0 7px 20px -5px rgb(0 0 0 / 0.15);\n opacity: 0;\n transition: opacity 0.3s, transform 0.2s;\n transform: translate3d(0, 6px, 0);\n}\n\n.gh-dropdown.is-left {\n right: auto;\n left: -16px;\n}\n\n.is-dropdown-mega .gh-dropdown {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-auto-flow: column;\n column-gap: 40px;\n width: auto;\n padding: 20px 32px;\n}\n\n.is-dropdown-open .gh-dropdown {\n visibility: visible;\n opacity: 1;\n transform: translateY(0);\n}\n\n.gh-dropdown li a {\n display: block;\n padding: 7px 20px;\n line-height: 1.5;\n white-space: normal;\n color: #15171a !important;\n}\n\n.is-dropdown-mega .gh-dropdown li a {\n padding: 8px 0;\n}\n\n/* 6.4. Mobile menu */\n\n.gh-burger {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n display: none;\n margin-right: -7px;\n margin-left: 4px;\n}\n\n.gh-burger svg {\n width: 24px;\n height: 24px;\n}\n\n.gh-burger svg:last-child {\n display: none;\n}\n\n.is-open .gh-burger svg:first-child {\n display: none;\n}\n\n.is-open .gh-burger svg:last-child {\n display: block;\n}\n\n@media (max-width: 767px) {\n .gh-burger {\n display: flex;\n }\n\n #gh-navigation {\n height: 64px;\n }\n\n #gh-navigation .gh-navigation-inner {\n grid-template-rows: auto 1fr auto;\n grid-template-columns: 1fr;\n gap: 48px;\n }\n\n #gh-navigation .gh-navigation-brand {\n display: grid;\n grid-template-columns: 1fr auto auto;\n grid-column-start: 1;\n align-items: center;\n height: 64px;\n }\n\n #gh-navigation .gh-navigation-logo {\n font-size: 2.2rem;\n }\n\n #gh-navigation .gh-navigation-menu,\n #gh-navigation .gh-navigation-actions {\n position: fixed;\n justify-content: center;\n visibility: hidden;\n opacity: 0;\n }\n\n #gh-navigation .gh-navigation-menu {\n transition: none;\n transform: translateY(0);\n }\n\n #gh-navigation .nav {\n gap: 20px;\n align-items: center;\n line-height: 1.4;\n }\n\n #gh-navigation .nav a {\n font-size: 1.75rem;\n font-weight: 600;\n text-transform: none;\n }\n\n #gh-navigation .nav li {\n opacity: 0;\n transform: translateY(-4px);\n }\n\n #gh-navigation .gh-navigation-actions {\n text-align: center;\n }\n\n #gh-navigation :is(.gh-button, a[data-portal=\"signin\"]) {\n opacity: 0;\n transform: translateY(8px);\n }\n\n #gh-navigation .gh-button {\n width: 100%;\n font-size: 1.75rem;\n text-transform: none;\n }\n\n #gh-navigation a[data-portal=\"signin\"] {\n font-size: 1.75rem;\n }\n\n #gh-main {\n transition: opacity 0.4s;\n }\n\n .is-open#gh-navigation {\n position: fixed;\n inset: 0;\n z-index: 3999999;\n height: 100%;\n overflow-y: scroll;\n -webkit-overflow-scrolling: touch;\n }\n\n .is-open#gh-navigation .gh-navigation-menu,\n .is-open#gh-navigation .gh-navigation-actions {\n position: static;\n visibility: visible;\n opacity: 1;\n }\n\n .is-open#gh-navigation .nav {\n display: flex;\n flex-direction: column;\n }\n\n .is-open#gh-navigation .nav li {\n opacity: 1;\n transition: transform 0.2s, opacity 0.2s;\n transform: translateY(0);\n }\n\n .is-open#gh-navigation .gh-navigation-actions {\n position: sticky;\n right: 0;\n bottom: 0;\n left: 0;\n display: inline-flex;\n flex-direction: column;\n gap: 12px;\n align-items: center;\n padding: var(--container-gap) 0;\n }\n\n .is-open#gh-navigation :is(.gh-button, a[data-portal=\"signin\"]) {\n opacity: 1;\n transition: transform 0.4s, opacity 0.4s;\n transition-delay: 0.2s;\n transform: translateY(0);\n }\n\n .is-open#gh-navigation a[data-portal=\"signin\"] {\n transition-delay: 0.4s;\n }\n\n .is-open#gh-main {\n opacity: 0;\n }\n}\n\n/* 7. Card\n/* ---------------------------------------------------------- */\n\n.gh-card {\n position: relative;\n}\n\n.gh-card-link {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.gh-card-link:hover {\n opacity: 1;\n}\n\n.gh-card-image {\n position: relative;\n flex-shrink: 0;\n aspect-ratio: 16 / 9;\n}\n\n.gh-card-image img {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.gh-card-wrapper {\n flex-grow: 1;\n}\n\n.gh-card-tag {\n display: none;\n margin-bottom: 4px;\n font-size: 1.2rem;\n font-weight: 500;\n letter-spacing: 0.01em;\n text-transform: uppercase;\n}\n\n.gh-card-title {\n font-size: calc(1.9rem * var(--factor, 1));\n font-weight: 725;\n letter-spacing: -0.014em;\n line-height: 1.3;\n}\n\n.gh-card-link:hover .gh-card-title {\n opacity: 0.8;\n}\n\n.gh-card-excerpt {\n display: -webkit-box;\n overflow-y: hidden;\n margin-top: 8px;\n font-size: 1.45rem;\n line-height: 1.4;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.gh-card-meta {\n align-items: center;\n padding-bottom: 1px;\n font-size: 1.25rem;\n font-weight: 500;\n line-height: 1.4;\n letter-spacing: -0.004em;\n color: var(--color-secondary-text);\n}\n\n.gh-card-meta svg {\n position: relative;\n top: 1px;\n display: inline-block;\n width: 12px;\n height: 12px;\n margin-right: 2px;\n}\n\n.gh-card-meta:not(:empty) {\n margin-top: 8px;\n}\n\n.gh-card-author + .gh-card-date::before {\n content: \"—\";\n margin-right: 4px;\n}\n\n/* 8. Header\n/* ---------------------------------------------------------- */\n\n.gh-header {\n position: relative;\n margin-top: 40px;\n}\n\n.gh-header-inner {\n position: relative;\n overflow: hidden;\n}\n\n/* 8.1. Magazine layout */\n\n.gh-header.is-magazine .gh-header-inner {\n display: grid;\n grid-template-columns: repeat(16, 1fr);\n gap: var(--grid-gap);\n}\n\n.gh-header.is-magazine .gh-header-inner > div {\n display: flex;\n flex-direction: column;\n gap: var(--grid-gap);\n grid-row: 1;\n}\n\n.gh-header.is-magazine .gh-header-left {\n grid-column: 1 / span 4;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card {\n position: relative;\n grid-column: 5 / span 8;\n}\n\n.gh-header.is-magazine .gh-header-right {\n grid-column: 13 / -1;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-link {\n gap: 28px;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-image {\n aspect-ratio: 1.618033;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-tag {\n display: block;\n margin-bottom: 12px;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-title {\n font-size: clamp(2.8rem, 1.36vw + 2.25rem, 4rem);\n font-weight: 700;\n line-height: 1.1;\n letter-spacing: -0.022em;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-excerpt {\n margin-top: clamp(12px, 0.45vw + 10.18px, 16px);\n font-size: 1.8rem;\n letter-spacing: -0.02em;\n max-width: 90%;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-meta:not(:empty) {\n margin-top: 14px;\n}\n\n.gh-header.is-magazine :is(.gh-header-left, .gh-header-right) .gh-card:last-child .gh-card-image {\n display: none;\n}\n\n.gh-header.is-magazine .gh-header-inner > div .gh-card-excerpt {\n display: none;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card::before,\n.gh-header.is-magazine .gh-header-inner > .gh-card::after {\n position: absolute;\n top: 0;\n left: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card::after {\n right: calc(var(--grid-gap) / -2);\n left: auto;\n}\n\n.gh-header.is-magazine .gh-header-inner > div .gh-card + .gh-card::before {\n position: absolute;\n top: calc(var(--grid-gap) / -2);\n left: 0;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n}\n\n@media (max-width: 1199px) {\n .gh-header.is-magazine .gh-header-inner {\n grid-template-columns: repeat(12, 1fr);\n }\n\n .gh-header.is-magazine .gh-header-inner > .gh-card {\n grid-column: 1 / span 8;\n }\n\n .gh-header.is-magazine .gh-header-left {\n grid-column: 9 / -1;\n }\n\n .gh-header.is-magazine .gh-header-inner > div.gh-header-right {\n grid-column: 1 / -1;\n grid-row: 2;\n flex-direction: row;\n }\n\n .gh-header.is-magazine .gh-header-right .gh-card {\n flex: 1;\n }\n\n .gh-header.is-magazine .gh-header-right .gh-card:last-child .gh-card-image {\n display: block;\n }\n\n .gh-header.is-magazine .gh-header-right {\n position: relative;\n }\n\n .gh-header.is-magazine .gh-header-right::before {\n position: absolute;\n top: calc(var(--grid-gap) / -2);\n left: 0;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n }\n\n .gh-header.is-magazine .gh-header-right .gh-card::before {\n display: none;\n }\n\n .gh-header.is-magazine .gh-header-right .gh-card::after {\n position: absolute;\n top: 0;\n right: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n }\n}\n\n@media (max-width: 991px) {\n .gh-header.is-magazine .gh-header-left .gh-card:nth-child(2) .gh-card-image {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .gh-header.is-magazine .gh-header-inner {\n display: flex;\n flex-direction: column;\n gap: var(--grid-gap);\n }\n\n .gh-header.is-magazine .gh-header-inner > div.gh-header-right {\n flex-direction: column;\n }\n\n .gh-header.is-magazine .gh-card-image {\n display: block !important;\n }\n\n .gh-header.is-magazine .gh-card::before {\n display: block !important;\n position: absolute;\n top: calc(var(--grid-gap) / -2);\n left: 0;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n }\n}\n\n/* 8.2. Highlight layout */\n\n.gh-header.is-highlight .gh-header-inner {\n display: grid;\n grid-template-columns: repeat(16, 1fr);\n gap: var(--grid-gap);\n}\n\n.gh-header.is-highlight .gh-header-left {\n position: relative;\n grid-column: span 8;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card {\n grid-column: span 8;\n grid-row: span 3;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card .gh-card-link {\n gap: 28px;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card .gh-card-image {\n aspect-ratio: 3 / 2;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card .gh-card-tag {\n display: block;\n margin-bottom: 12px;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card .gh-card-title {\n font-size: clamp(2.8rem, 1.36vw + 2.25rem, 4rem);\n font-weight: 700;\n line-height: 1.1;\n letter-spacing: -0.022em;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card .gh-card-excerpt {\n margin-top: clamp(12px, 0.45vw + 10.18px, 16px);\n font-size: 1.8rem;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card .gh-card-meta:not(:empty) {\n margin-top: 12px;\n}\n\n.gh-header.is-highlight .gh-header-middle {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: var(--grid-gap);\n grid-column: 9 / span 4;\n}\n\n.gh-header.is-highlight .gh-header-middle .gh-card:last-child .gh-card-image {\n display: none;\n}\n\n.gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt {\n display: none;\n}\n\n.gh-header.is-highlight .gh-header-right {\n grid-column: 13 / -1;\n}\n\n.gh-header.is-highlight .gh-featured {\n margin-top: 0;\n padding: 0;\n}\n\n.gh-header.is-highlight .gh-featured-feed {\n display: flex;\n flex-direction: column;\n}\n\n.gh-header.is-highlight .gh-featured-feed .gh-card-title {\n font-size: clamp(1.4rem, 0.23vw + 1.31rem, 1.6rem);\n}\n\n.gh-header.is-highlight .gh-header-left::after,\n.gh-header.is-highlight .gh-header-middle::after {\n position: absolute;\n top: 0;\n right: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n}\n\n.gh-header.is-highlight .gh-card::before {\n position: absolute;\n top: calc(var(--grid-gap) / -2);\n left: 0;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n}\n\n.gh-header.is-highlight .gh-featured .gh-card:first-child::before {\n display: none;\n}\n\n@media (max-width: 1199px) {\n .gh-header.is-highlight .gh-header-inner {\n grid-template-columns: repeat(9, 1fr);\n }\n\n .gh-header.is-highlight .gh-header-left {\n grid-column: span 6;\n }\n\n .gh-header.is-highlight .gh-header-middle {\n grid-column: 7 / -1;\n }\n\n .gh-header.is-highlight .gh-header-right {\n grid-column: 1 / -1;\n }\n\n .gh-header.is-highlight .gh-featured-feed {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n }\n\n .gh-header.is-highlight .gh-featured-feed .gh-card:before {\n width: calc(100% + var(--grid-gap));\n }\n\n .gh-header.is-highlight .gh-featured-feed .gh-card::after {\n position: absolute;\n top: 0;\n left: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n }\n}\n\n@media (max-width: 991px) {\n .gh-header.is-highlight .gh-header-middle .gh-card:nth-child(2) .gh-card-image {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .gh-header.is-highlight .gh-header-inner {\n display: flex;\n flex-direction: column;\n }\n\n .gh-header.is-highlight .gh-featured-feed {\n display: flex;\n /* gap: var(--grid-gap); */\n }\n\n .gh-header.is-highlight .gh-card-image {\n display: block !important;\n }\n\n .gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt {\n display: -webkit-box;\n }\n}\n\n/* 8.3. Classic layout */\n\n.gh-header.is-classic {\n display: flex;\n margin-top: 0;\n padding-block: 160px;\n}\n\n.gh-header.is-classic .gh-header-inner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 48px;\n overflow: unset;\n margin: auto;\n max-width: 1020px;\n text-align: center;\n}\n\n.gh-header.is-classic .gh-header-title {\n font-size: calc(clamp(3rem, 1.82vw + 2.27rem, 4.6rem) * var(--factor, 1));\n line-height: 1.1;\n letter-spacing: -0.028em;\n}\n\n.gh-header.is-classic.has-image {\n margin-top: 0;\n}\n\n.gh-header.is-classic.has-image::before {\n position: absolute;\n inset: 0;\n content: \"\";\n opacity: 0.3;\n background-color: var(--color-black);\n transition: opacity 1.5s ease;\n}\n\n.gh-header.is-classic.has-image .gh-header-inner {\n color: #fff;\n}\n\n.gh-header.is-classic.has-image .gh-header-image {\n position: absolute;\n inset: 0;\n z-index: -1;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.gh-header.is-classic.has-image .gh-form {\n background-color: #fff;\n}\n\n/* 9. CTA\n/* ---------------------------------------------------------- */\n\n.gh-cta {\n display: none;\n margin-top: max(4vw, 40px);\n}\n\n.gh-header:is(.is-highlight, .is-magazine) + .gh-cta {\n display: block;\n}\n\n.gh-cta-inner {\n position: relative;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 36px;\n padding: clamp(48px, 3.64vw + 33.45px, 80px) clamp(40px, 2.73vw + 29.09px, 64px);\n text-align: center;\n background-color: var(--color-lighter-gray);\n}\n\n.gh-cta-content {\n max-width: 640px;\n}\n\n.gh-cta-title {\n font-size: clamp(2.8rem,1.36vw + 2.25rem,4rem);\n font-weight: 700;\n line-height: 1.1;\n letter-spacing: -0.021em;\n}\n\n.gh-cta-description {\n margin-top: 12px;\n font-size: 1.8rem;\n line-height: 1.4;\n letter-spacing: -0.015em;\n}\n\n/* 10. Featured posts\n/* ---------------------------------------------------------- */\n\n.gh-featured {\n margin-top: 100px;\n}\n\n.gh-navigation + .gh-featured {\n margin-top: 64px;\n}\n\n.gh-header.is-classic:not(.has-image) + .gh-featured {\n margin-top: 0;\n}\n\n.gh-featured-inner {\n overflow: hidden;\n}\n\n.gh-featured-title {\n margin-bottom: 20px;\n padding-bottom: 12px;\n font-size: 1.2rem;\n font-weight: 550;\n letter-spacing: 0.025em;\n text-transform: uppercase;\n border-bottom: 1px solid var(--color-border);\n}\n\n.gh-featured-feed {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--grid-gap);\n}\n\n.gh-featured-feed .gh-card {\n container-type: inline-size;\n container-name: featured-card;\n}\n\n.gh-featured-feed .gh-card-link {\n display: flex;\n flex-direction: row-reverse;\n align-items: flex-start;\n}\n\n.gh-featured-feed .gh-card-image {\n width: 72px;\n aspect-ratio: 1;\n}\n\n@container featured-card (width < 240px) {\n .gh-featured-feed .gh-card-image {\n display: none;\n }\n}\n\n@container featured-card (240px <= width <= 270px) {\n .gh-featured-feed .gh-card-image {\n width: 64px;\n }\n}\n\n.gh-featured-feed .gh-card-wrapper {\n container-type: inline-size;\n container-name: featured-card-wrapper;\n}\n\n.gh-featured-feed .gh-card-title {\n font-size: 1.6rem;\n font-weight: 650;\n letter-spacing: -0.011em;\n}\n\n@container featured-card-wrapper (width < 170px) {\n .gh-featured-feed .gh-card-title {\n font-size: 1.6rem;\n }\n}\n\n.gh-featured-feed .gh-card-excerpt {\n display: none;\n}\n\n.gh-featured-feed .gh-card-meta:not(:empty) {\n margin-top: 8px;\n}\n\n.gh-featured-feed .gh-card::before {\n position: absolute;\n top: 0;\n left: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n}\n\n@media (max-width: 1199px) {\n .gh-viewport > .gh-featured .gh-featured-feed {\n grid-template-columns: repeat(3, 1fr);\n }\n\n .gh-viewport > .gh-featured .gh-featured-feed .gh-card:nth-child(4) {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .gh-viewport > .gh-featured .gh-featured-feed {\n display: flex;\n flex-direction: column;\n }\n}\n\n/* 11. Container\n/* ---------------------------------------------------------- */\n\n.gh-container {\n flex-grow: 1;\n margin-top: 64px;\n}\n\n.gh-container-inner {\n display: grid;\n grid-template-columns: repeat(16, 1fr);\n column-gap: var(--grid-gap);\n}\n\n:is(.gh-featured, .gh-cta) + .gh-container {\n margin-top: max(4vw, 40px);\n}\n\n.gh-header.is-classic:not(.has-image) + .gh-container {\n margin-top: 0;\n}\n\n.gh-navigation + .gh-container .gh-container-title,\n:is(.paged, .tag-template, .author-template) .gh-container:not(.has-sidebar) .gh-container-title {\n display: none;\n}\n\n.gh-more {\n display: none;\n grid-column: 1 / -1;\n margin-top: 48px;\n font-size: calc(1.9rem * var(--factor, 1));\n font-weight: 725;\n letter-spacing: -0.014em;\n}\n\n.gh-container.has-sidebar .gh-more {\n grid-column: span 12;\n}\n\n.home-template .gh-feed:has(> :nth-child(12):last-child) ~ .gh-more {\n display: block;\n}\n\n.gh-more a {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.gh-more svg {\n margin-top: -1px;\n width: 18px;\n height: 18px;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-more svg {\n margin-top: 0;\n}\n\n/* 11.1. With sidebar */\n\n.gh-container.has-sidebar .gh-main {\n grid-column: 1 / span 12;\n position: relative;\n}\n\n.gh-container.has-sidebar .gh-sidebar {\n grid-column: 13 / -1;\n}\n\n.gh-container.has-sidebar .gh-main::after {\n position: absolute;\n top: 0;\n right: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n}\n\n/* 11.2. Without sidebar */\n\n.gh-container:not(.has-sidebar) :is(.gh-container-title, .gh-main, .gh-more) {\n grid-column: 3 / span 12;\n}\n\n.gh-container.is-list.no-image:not(.has-sidebar) :is(.gh-container-title, .gh-main, .gh-more) {\n grid-column: 4 / span 10;\n}\n\n.gh-header:is(.is-highlight, .is-magazine) ~ .gh-container.is-grid:not(.has-sidebar) :is(.gh-container-title, .gh-main, .gh-more) {\n grid-column: 1 / -1;\n}\n\n@media (max-width: 1199px) {\n .gh-container-inner {\n display: block;\n overflow: hidden;\n }\n\n .gh-container.has-sidebar .gh-sidebar {\n display: none;\n }\n}\n\n/* 12. Post list\n/* ---------------------------------------------------------- */\n\n.gh-container-title {\n grid-column: 1 / -1;\n margin-bottom: calc(var(--grid-gap) / 2);\n padding-bottom: 12px;\n font-size: 1.2rem;\n font-weight: 550;\n letter-spacing: 0.025em;\n text-transform: uppercase;\n border-bottom: 1px solid var(--color-border);\n}\n\n.gh-container:not(:has(.gh-card)) .gh-container-title {\n display: none;\n}\n\n.gh-container .gh-feed {\n gap: var(--grid-gap);\n}\n\n.gh-container .gh-card-meta:not(:empty) {\n margin-top: 12px;\n}\n\n/* 12.1. List style */\n\n.gh-container.is-list .gh-feed {\n display: flex;\n flex-direction: column;\n container-type: inline-size;\n container-name: list-feed;\n}\n\n.gh-container.is-list .gh-card-link {\n flex-direction: row;\n align-items: center;\n gap: 24px;\n}\n\n.gh-container.is-list .no-image .gh-card-link {\n padding-block: 20px;\n}\n\n.gh-container.is-list .gh-card-image {\n flex-shrink: 0;\n width: 220px;\n aspect-ratio: 1.618033;\n}\n\n@container list-feed (width < 600px) {\n .gh-container.is-list .gh-card-image {\n width: 160px;\n }\n}\n\n.gh-container.is-list .gh-card:not(.no-image) .gh-card-wrapper {\n max-width: 600px;\n}\n\n.gh-container.is-list .gh-card-title {\n --factor: 1.05;\n}\n\n.gh-container.is-list .no-image .gh-card-title {\n --factor: 1.2;\n}\n\n.gh-container.is-list .gh-card-excerpt {\n margin-top: 6px;\n}\n\n.gh-container.is-list .gh-card + .gh-card::before {\n position: absolute;\n top: calc(var(--grid-gap) / -2);\n left: 0;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n}\n\n.home-template .gh-container.is-list .gh-card:first-child:before {\n display: none;\n}\n\n@media (max-width: 767px) {\n .gh-container.is-list .gh-card-link {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .gh-container.is-list .gh-card-image {\n width: 100%;\n }\n}\n\n/* 12.2. Grid style */\n\n.gh-container.is-grid .gh-feed {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(248px, 1fr));\n row-gap: calc(var(--grid-gap) * 1.5);\n overflow: hidden;\n}\n\n.gh-container.is-grid .gh-card::before {\n position: absolute;\n top: calc(var(--grid-gap) / -2);\n right: calc(var(--grid-gap) / -2);\n left: calc(var(--grid-gap) / -2);\n content: \"\";\n height: 1px;\n background-color: var(--color-border);\n}\n\n.gh-container.is-grid .gh-card::after {\n position: absolute;\n top: 0;\n left: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n}\n\n@media (max-width: 767px) {\n .gh-container.is-grid .gh-feed {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 576px) {\n .gh-container.is-grid .gh-feed {\n display: flex;\n flex-direction: column;\n }\n}\n\n/* 12.3. No image list */\n\n.gh-container.is-list.no-image .gh-card-image {\n display: none;\n}\n\n/* 13. Sidebar\n/* ---------------------------------------------------------- */\n\n.gh-sidebar-inner {\n position: sticky;\n top: calc(var(--grid-gap) / 2);\n}\n\n.gh-sidebar-title {\n grid-column: 1 / -1;\n margin-bottom: calc(var(--grid-gap) / 2);\n padding-bottom: 12px;\n font-size: 1.2rem;\n font-weight: 550;\n letter-spacing: 0.025em;\n text-transform: uppercase;\n border-bottom: 1px solid var(--color-border);\n}\n\n.gh-about {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 48px 24px;\n min-height: 380px;\n text-align: center;\n background-color: var(--color-lighter-gray);\n}\n\n.gh-about-icon {\n margin-bottom: 24px;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n}\n\n.gh-about-title {\n font-size: calc(2.4rem * var(--factor, 1));\n font-weight: 700;\n letter-spacing: -0.019em;\n}\n\n.gh-about-description {\n margin-top: 12px;\n font-size: 1.45rem;\n line-height: 1.4;\n}\n\n.gh-about .gh-button {\n margin-top: 32px;\n}\n\n.gh-recommendations {\n margin-top: 48px;\n}\n\n.gh-recommendations .recommendations {\n display: flex;\n flex-direction: column;\n gap: 26px;\n margin: 0;\n padding: 0;\n list-style-type: none;\n}\n\n.gh-recommendations .recommendation:first-child {\n margin-top: 4px;\n}\n\n.gh-recommendations .recommendation a {\n display: grid;\n grid-template-columns: 24px auto;\n gap: 4px 12px;\n}\n\n.gh-recommendations .recommendation a:hover {\n opacity: 1;\n}\n\n.gh-recommendations .recommendation-favicon {\n grid-row: span 2;\n width: 100%;\n border-radius: 4px;\n}\n\n.gh-recommendations .recommendation-title {\n margin-top: -2px;\n font-size: 1.5rem;\n font-weight: 650;\n letter-spacing: -0.009em;\n}\n\n.gh-recommendations .recommendation a:hover .recommendation-title {\n opacity: 0.8;\n}\n\n.gh-recommendations .recommendation-url {\n order: 1;\n overflow: hidden;\n font-size: 1.4rem;\n line-height: 1.25;\n color: var(--color-secondary-text);\n text-overflow: ellipsis;\n}\n\n.gh-recommendations .recommendation-description {\n display: -webkit-box;\n display: none;\n overflow-y: hidden;\n grid-column: 2;\n font-size: 1.4rem;\n line-height: 1.4;\n color: var(--color-secondary-text);\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.gh-recommendations button {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n margin-top: 24px;\n padding: 0;\n cursor: pointer;\n font-size: 1.2rem;\n font-weight: 550;\n letter-spacing: 0.025em;\n text-transform: uppercase;\n background-color: transparent;\n border: 0;\n color: var(--color-darker-gray);\n}\n\n.gh-recommendations button svg {\n margin-top: -1px;\n width: 12px;\n}\n\n.gh-recommendations button:hover {\n opacity: 0.8;\n}\n\n/* 14. Post/page\n/* ---------------------------------------------------------- */\n\n/* 14.1. Article */\n\n.gh-article {\n --container-width: 1120px;\n\n word-break: break-word;\n}\n\n.gh-article-header {\n margin: clamp(40px, 3.64vw + 25.45px, 72px) 0 40px;\n}\n\n.gh-article-tag {\n margin-bottom: 12px;\n font-size: 1.3rem;\n font-weight: 500;\n letter-spacing: 0.01em;\n text-transform: uppercase;\n color: var(--ghost-accent-color);\n}\n\n.gh-article-title {\n font-size: calc(clamp(3.4rem, 1.36vw + 2.85rem, 4.6rem) * var(--factor, 1));\n line-height: 1.1;\n letter-spacing: -0.022em;\n}\n\n.gh-article-excerpt {\n margin-top: clamp(12px, 0.45vw + 10.18px, 16px);\n max-width: 720px;\n font-size: clamp(1.7rem, 0.23vw + 1.61rem, 1.9rem);\n line-height: 1.45;\n letter-spacing: -0.018em;\n}\n\n.gh-article-meta {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-left: 6px;\n}\n\n.gh-article-author-image {\n display: flex;\n margin-right: 8px;\n}\n\n.gh-article-author-image a {\n position: relative;\n margin: 0 -8px;\n width: 56px;\n height: 56px;\n overflow: hidden;\n background-color: var(--color-light-gray);\n border-radius: 50%;\n border: 3px solid var(--background-color);\n}\n\n.gh-article-author-image a:first-child {\n z-index: 10;\n}\n\n.gh-article-author-image a:nth-child(2) {\n z-index: 9;\n}\n\n.gh-article-author-image a:nth-child(3) {\n z-index: 8;\n}\n\n.gh-article-author-image :is(img, svg) {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.gh-article-meta-wrapper {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.gh-article-author-name {\n font-size: 1.6rem;\n font-weight: 650;\n letter-spacing: -0.013em;\n}\n\n.gh-article-meta-content {\n font-size: 1.35rem;\n font-weight: 500;\n line-height: 1.2;\n letter-spacing: -0.006em;\n color: var(--color-secondary-text);\n}\n\n.gh-article-image {\n grid-column: wide;\n margin-top: 40px;\n}\n\n.gh-article-image img {\n width: 100%;\n}\n\n/* 14.2. Page template */\n\n.page-template .gh-article-header {\n margin-block: 72px 32px;\n}\n\n/* 14.3. Page without header */\n\n.page-template .gh-content:only-child > *:first-child:not(.kg-width-full) {\n margin-top: 64px;\n}\n\n.page-template .gh-content > *:last-child:not(.kg-width-full) {\n margin-bottom: 6vw;\n}\n\n.page-template .gh-footer {\n margin-top: 0;\n}\n\n/* 15. Content\n/* ---------------------------------------------------------- */\n\n/* Content refers to styling all page and post content that is\ncreated within the Ghost editor. The main content handles\nheadings, text, images and lists. We deal with cards lower down. */\n\n.gh-content {\n font-size: var(--content-font-size, 1.7rem);\n letter-spacing: -0.01em;\n}\n\n/* Default vertical spacing */\n.gh-content > * + * {\n margin-top: calc(28px * var(--content-spacing-factor, 1));\n margin-bottom: 0;\n}\n\n/* Remove space between full-width cards */\n.gh-content > .kg-width-full + .kg-width-full:not(.kg-width-full.kg-card-hascaption + .kg-width-full) {\n margin-top: 0;\n}\n\n/* Add back a top margin to all headings,\nunless a heading is the very first element in the post content */\n.gh-content > [id]:not(:first-child) {\n margin-top: calc(56px * var(--content-spacing-factor, 1));\n}\n\n/* Add drop cap setting */\n.post-template .gh-content.drop-cap > p:first-of-type:first-letter {\n margin :0 0.2em 0em 0;\n font-size: 3.1em;\n float:left;\n line-height: 1;\n margin-left: -1px;\n font-weight: 700;\n}\n\n.has-serif-body.post-template:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content.drop-cap > p:first-of-type:first-letter {\n font-size: 3.2em;\n}\n\n/* Add a small margin between a heading and paragraph after it */\n.gh-content > [id] + p {\n margin-top: calc(12px * var(--content-spacing-factor, 1));\n}\n\n/* A larger margin before/after dividers, blockquotes and embeds */\n.gh-content > :is(hr, blockquote, iframe) {\n position: relative;\n margin-top: calc(48px * var(--content-spacing-factor, 1)) !important;\n}\n\n.gh-content > :is(hr, blockquote, iframe) + * {\n margin-top: calc(48px * var(--content-spacing-factor, 1)) !important;\n}\n\n/* Now the content typography styles */\n.gh-content h1 {\n font-size: calc(2.2em * var(--factor, 1));\n letter-spacing: -0.02em;\n}\n\n.gh-content h2 {\n font-size: calc(1.6em * var(--factor, 1));\n letter-spacing: -0.02em;\n}\n\n.gh-content h3 {\n font-size: calc(1.3em * var(--factor, 1));\n letter-spacing: -0.017em;\n}\n\n.gh-content a {\n color: var(--ghost-accent-color);\n text-decoration: underline;\n}\n\n.gh-content .kg-callout-card .kg-callout-text,\n.gh-content .kg-toggle-card .kg-toggle-content > :is(ul, ol, p) {\n font-size: 0.95em;\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content > blockquote,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content > ol,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content > ul,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content > dl,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content > p,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content .kg-callout-text,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content .kg-toggle-content > ol,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content .kg-toggle-content > ul,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content .kg-toggle-content > p {\n font-family: var(--font-serif-alt);\n}\n\n.gh-content :is(ul, ol) {\n padding-left: 28px;\n}\n\n.gh-content :is(li + li, li :is(ul, ol)) {\n margin-top: 8px;\n}\n\n.gh-content ol ol li {\n list-style-type: lower-alpha;\n}\n\n.gh-content ol ol ol li {\n list-style-type: lower-roman;\n}\n\n.gh-content hr {\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n border: 0;\n}\n\n.gh-content .gh-table {\n overflow-x: scroll;\n -webkit-overflow-scrolling: touch;\n}\n\n.gh-content .gh-table table {\n width: 100%;\n font-family: var(--font-sans);\n font-size: 1.5rem;\n white-space: nowrap;\n vertical-align: top;\n border-spacing: 0;\n border-collapse: collapse;\n}\n\n.gh-content .gh-table table th {\n font-size: 1.2rem;\n font-weight: 700;\n color: var(--color-darkgrey);\n text-align: left;\n text-transform: uppercase;\n letter-spacing: 0.2px;\n}\n\n.gh-content .gh-table table :is(th, td),\n.gh-content .gh-table table td {\n padding: 6px 12px;\n border-bottom: 1px solid var(--color-border);\n}\n\n.gh-content .gh-table table :is(th, td):first-child {\n padding-left: 0;\n}\n\n.gh-content .gh-table table :is(th, td):last-child {\n padding-right: 0;\n}\n\n.gh-content pre {\n overflow: auto;\n padding: 16px;\n font-size: 1.5rem;\n line-height: 1.5em;\n background: var(--color-lighter-gray);\n border-radius: 6px;\n font-family: var(--font-mono);\n}\n\n.gh-content :not(pre) > code {\n vertical-align: baseline;\n padding: 0.15em 0.4em;\n font-weight: 400;\n font-size: 0.95em;\n line-height: 1em;\n background: var(--color-lighter-gray);\n border-radius: 0.25em;\n font-family: var(--font-mono);\n}\n\n/* 16. Cards\n/* ---------------------------------------------------------- */\n\n/* Add extra margin before/after any cards, except for when immediately preceeded by a heading */\n\n.gh-content :not(.kg-card):not(table):not([id]) + :is(.kg-card, table) {\n margin-top: calc(48px * var(--content-spacing-factor, 1));\n}\n\n.gh-content :is(.kg-card, table) + :not(.kg-card):not(table):not([id]) {\n margin-top: calc(48px * var(--content-spacing-factor, 1));\n}\n\n.gh-content :not(.kg-card):not([id]) + .kg-card.kg-width-full {\n margin-top: calc(68px * var(--content-spacing-factor, 1));\n}\n\n.gh-content .kg-card.kg-width-full + :not(.kg-card):not([id]) {\n margin-top: calc(68px * var(--content-spacing-factor, 1));\n}\n\n/* Image */\n\n.kg-image {\n margin-right: auto;\n margin-left: auto;\n}\n\n/* Embed */\n\n.kg-embed-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n}\n\n/* Gallery */\n\n.kg-image[width][height],\n.kg-gallery-image {\n cursor: pointer;\n}\n\n.kg-image-card a:hover,\n.kg-gallery-image a:hover {\n opacity: 1 !important;\n}\n\n/* Toggle */\n\n.kg-card.kg-toggle-card .kg-toggle-heading-text {\n font-size: 2rem;\n font-weight: 700;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .kg-toggle-card .kg-toggle-heading-text {\n font-family: var(--font-serif);\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .kg-toggle-card .kg-toggle-heading-text {\n font-family: var(--font-mono);\n}\n\n/* Callout */\n\n.kg-callout-card.kg-card {\n border-radius: 0.25em;\n}\n\n.kg-callout-card-accent a {\n text-decoration: underline;\n}\n\n/* Blockquote */\n\nblockquote:not([class]) {\n padding-left: 2rem;\n border-left: 4px solid var(--ghost-accent-color);\n}\n\nblockquote.kg-blockquote-alt {\n font-style: normal;\n font-weight: 400;\n color: var(--color-secondary-text);\n}\n\n/* Button */\n\n.kg-card.kg-button-card .kg-btn {\n height: unset;\n padding: .6em 1.2em;\n text-align: center;\n font-size: 1em;\n line-height: 1.2em;\n}\n\n/* Header */\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .kg-card.kg-header-card h2.kg-header-card-header {\n font-family: var(--font-serif);\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .kg-card.kg-header-card h2.kg-header-card-header {\n font-family: var(--font-mono);\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .kg-header-card h3.kg-header-card-subheader {\n font-family: var(--font-serif);\n}\n\n/* Bookmark */\n\n.kg-bookmark-card .kg-bookmark-container {\n border-radius: 0.25em !important;\n}\n\n.kg-bookmark-card .kg-bookmark-container:hover {\n opacity: 1;\n}\n\n.kg-bookmark-card a.kg-bookmark-container,\n.kg-bookmark-card a.kg-bookmark-container:hover {\n background: var(--background-color) !important;\n color: var(--color-darker-gray) !important;\n}\n\n.kg-bookmark-card .kg-bookmark-content {\n padding: 1.15em;\n}\n\n.kg-bookmark-card .kg-bookmark-title {\n font-size: 0.9em;\n}\n\n.kg-bookmark-card .kg-bookmark-description {\n max-height: none;\n margin-top: 0.3em;\n font-size: 0.8em;\n}\n\n.kg-bookmark-card .kg-bookmark-metadata {\n font-size: 0.8em;\n}\n\n.kg-bookmark-card .kg-bookmark-thumbnail img {\n border-radius: 0 0.2em 0.2em 0;\n}\n\n/* Product */\n\n.kg-product-card.kg-card .kg-product-card-image {\n margin-bottom: 12px;\n}\n\n.kg-product-card.kg-card a.kg-product-card-button {\n height: 2.8em;\n margin-top: 12px;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .kg-product-card.kg-card .kg-product-card-title {\n font-family: var(--font-serif);\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .kg-product-card.kg-card .kg-product-card-title {\n font-family: var(--font-mono);\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .kg-product-card-description :is(p, ul, ol) {\n font-family: var(--font-serif-alt);\n}\n\n/* File */\n\n.kg-file-card.kg-card .kg-file-card-container {\n padding: 0.6em;\n}\n\n.kg-file-card.kg-card .kg-file-card-contents {\n margin: 4px 8px 6px;\n}\n\n.kg-file-card.kg-card .kg-file-card-metadata {\n font-size: 0.9em;\n}\n\n.kg-file-card.kg-card .kg-file-card-filesize::before {\n margin-right: 6px;\n margin-left: 6px;\n}\n\n/* Caption */\n\nfigcaption {\n margin-top: 12px;\n font-size: 1.4rem;\n text-align: center;\n}\n\n.kg-card.kg-width-full figcaption {\n padding: 0 16px;\n}\n\nfigcaption a {\n color: var(--ghost-accent-color);\n text-decoration: underline;\n}\n\n/* 17. Comments\n/* ---------------------------------------------------------- */\n\n.gh-comments {\n margin-top: 48px;\n}\n\n/* 18. Recent posts\n/* ---------------------------------------------------------- */\n\n.post-template .gh-container {\n margin-top: 120px;\n}\n\n.post-template .gh-container-inner {\n display: block;\n}\n\n.post-template .gh-container.is-grid .gh-feed {\n grid-template-columns: repeat(4, 1fr);\n}\n\n.post-template .gh-container .gh-container-title {\n display: block;\n}\n\n/* 19. Archive\n/* ---------------------------------------------------------- */\n\n.gh-archive {\n display: grid;\n grid-template-columns: repeat(16, 1fr);\n gap: var(--grid-gap);\n margin-block: 80px 24px;\n}\n\n.gh-archive.has-image {\n margin-top: 48px;\n}\n\n.gh-archive-inner {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--grid-gap);\n grid-column: 1 / -1;\n padding-bottom: clamp(40px, 2.73vw + 29.09px, 64px);\n border-bottom: 1px solid var(--color-border);\n}\n\n.gh-archive.has-image .gh-archive-inner {\n align-items: center;\n grid-column: 1 / -1;\n}\n\n.gh-archive:not(.has-sidebar):not(.has-image) .gh-archive-inner {\n grid-column: 3 / span 12;\n}\n\n.gh-archive .gh-article-image {\n grid-column: auto;\n margin-top: 0;\n}\n\n:is(.tag-template, .author-template) .gh-container {\n margin-top: 0;\n}\n\n.author-template .gh-archive-inner {\n display: flex;\n flex-direction: row-reverse;\n justify-content: flex-end;\n gap: 24px;\n}\n\n.author-template .gh-article-image {\n margin-top: 0;\n width: 120px;\n height: 120px;\n border-radius: 50%;\n object-fit: cover;\n}\n\n.author-template .gh-article-title {\n font-size: 3.6rem;\n}\n\n.gh-author-meta {\n display: flex;\n gap: 10px;\n margin-top: 14px;\n font-size: 1.5rem;\n font-weight: 550;\n color: var(--color-secondary-text);\n}\n\n.gh-author-meta a {\n color: inherit;\n}\n\n.gh-author-social {\n display: flex;\n gap: 16px;\n align-items: center;\n padding-left: 3px;\n}\n\n.gh-author-social svg {\n width: 20px;\n height: 20px;\n}\n\n@media (max-width: 1199px) {\n .gh-archive {\n display: block;\n }\n}\n\n@media (max-width: 767px) {\n .gh-archive-inner {\n display: flex;\n flex-direction: column-reverse;\n align-items: flex-start;\n }\n\n .author-template .gh-archive-inner {\n flex-direction: column-reverse;\n }\n}\n\n/* 20. Design settings\n/* ---------------------------------------------------------- */\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) {\n --factor: 1.15;\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) {\n --factor: 1.1;\n}\n\n.has-sans-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) :is(.is-title, .gh-content :is(h2, h3)) {\n font-family: var(--gh-font-heading, var(--font-sans));\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) :is(.is-title, .gh-content :is(h2, h3)) {\n font-family: var(--gh-font-heading, var(--font-serif));\n font-weight: 550;\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) :is(.is-title, .gh-content :is(h2, h3)) {\n font-family: var(--gh-font-heading, var(--font-mono));\n}\n\n.has-sans-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .is-body {\n font-family: var(--gh-font-body, var(--font-sans));\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .is-body {\n font-family: var(--gh-font-body, var(--font-serif-alt));\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-header.is-classic .gh-header-title {\n font-weight: 550;\n letter-spacing: -0.015em;\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-header.is-classic .gh-header-title {\n letter-spacing: -0.01em;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-form {\n border-radius: 0;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-card-title {\n line-height: 1.15;\n letter-spacing: -0.006em;\n font-size: calc(2.0rem*var(--factor, 1))\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-featured-feed .gh-card-title {\n font-size: calc(1.6rem*var(--factor, 1))\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-featured-feed .gh-card-title {\n font-size: calc(1.5rem*var(--factor, 1));\n letter-spacing: 0;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-header.is-highlight .gh-featured-feed .gh-card-title {\n font-size: clamp(1.6rem, 0.23vw + 1.51rem, 1.8rem);\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-card-title {\n font-size: calc(1.8rem*var(--factor, 1));\n line-height: 1.2;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-about-title {\n letter-spacing: -0.009em;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-footer-signup-header {\n letter-spacing: -0.019em;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-article-title {\n letter-spacing: -0.019em;\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) {\n --content-font-size: 1.9rem;\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-card-excerpt {\n font-size: 1.65rem;\n line-height: 1.4;\n letter-spacing: 0.0005em;\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-excerpt,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-header.is-highlight .gh-card:first-child .gh-card-excerpt {\n font-size: 1.8rem;\n letter-spacing: -0.001em;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-title,\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-header.is-highlight .gh-header-left .gh-card-title {\n font-weight: 550;\n font-size: clamp(3.2rem,1.82vw + 2.47rem,4.9rem)\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-about-description {\n font-size: 1.6rem;\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-article-excerpt {\n letter-spacing: 0;\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-footer-signup-subhead {\n letter-spacing: 0;\n}\n\n:is(.has-serif-title,.has-mono-title):not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) :is(.gh-button, .gh-form, .gh-form-input),\nbody[class*=\" gh-font-heading\"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button, .gh-form, .gh-form-input),\nbody[class^=\"gh-font-heading\"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button, .gh-form, .gh-form-input) {\n border-radius: 0;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-cta-title {\n font-size: 4.8rem;\n}\n\n/* 21. Footer\n/* ---------------------------------------------------------- */\n\n.gh-footer {\n margin-top: 120px;\n font-size: 1.5rem;\n color: var(--color-darker-gray);\n}\n\n.gh-footer a:not(.gh-button) {\n color: inherit;\n}\n\n/* 21.1 Footer styles */\n\n.gh-footer.has-accent-color {\n background-color: var(--ghost-accent-color);\n}\n\n.gh-footer.has-accent-color .gh-footer-bar {\n border-top: 0;\n}\n\n.gh-footer.has-accent-color .gh-button {\n background-color: #fff;\n color: #15171a;\n}\n\n/* 21.2. Footer bar */\n\n.gh-footer-bar {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n column-gap: 32px;\n margin-bottom: 120px;\n padding-block: 28px;\n font-weight: 550;\n border-block: 1px solid var(--color-border);\n}\n\n.gh-footer-logo {\n position: relative;\n font-family: var(--gh-font-heading, var(--font-sans));\n font-size: calc(2.4rem * var(--factor, 1));\n font-weight: 725;\n letter-spacing: -0.015em;\n white-space: nowrap;\n}\n\n.gh-footer-logo img {\n max-height: 40px;\n}\n\n.gh-footer-menu .nav {\n display: flex;\n justify-content: center;\n gap: 8px 28px;\n flex-wrap: wrap;\n margin: 0;\n padding: 0;\n list-style-type: none;\n}\n\n.gh-footer-copyright {\n text-align: right;\n white-space: nowrap;\n}\n\n.gh-footer-copyright a {\n text-decoration: underline;\n}\n\n/* 21.3. Footer signup */\n\n.gh-footer-signup {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-bottom: 120px;\n text-align: center;\n}\n\n.gh-footer-signup-header {\n font-size: calc(clamp(2.8rem,1.36vw + 2.25rem,4rem) * var(--factor, 1));\n font-weight: 700;\n letter-spacing: -0.03em;\n}\n\n.gh-footer-signup-subhead {\n margin-top: 12px;\n max-width: 640px;\n font-size: 1.8rem;\n font-weight: 450;\n line-height: 1.4;\n letter-spacing: -0.014em;\n opacity: 0.75;\n}\n\n.gh-footer-signup .gh-form {\n margin-top: 40px;\n}\n\n@media (max-width: 991px) {\n .gh-footer-bar {\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n}\n\n/* 21.4. Social links */\n\n.gh-social-links {\n display: flex;\n justify-content: center;\n gap: 20px;\n margin-bottom: 32px;\n}\n\n.gh-social-links a {\n will-change: opacity;\n}\n\n.gh-social-links svg {\n width: 20px;\n height: 20px;\n}\n\n/* 22. Lightbox\n/* ---------------------------------------------------------- */\n\n.pswp {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 3999999;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n -ms-touch-action: none;\n touch-action: none;\n outline: none;\n backface-visibility: hidden;\n -webkit-text-size-adjust: 100%;\n}\n\n.pswp img {\n max-width: none;\n}\n\n.pswp--animate_opacity {\n opacity: 0.001;\n transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);\n will-change: opacity;\n}\n\n.pswp--open {\n display: block;\n}\n\n.pswp--zoom-allowed .pswp__img {\n cursor: zoom-in;\n}\n\n.pswp--zoomed-in .pswp__img {\n cursor: grab;\n}\n\n.pswp--dragging .pswp__img {\n cursor: grabbing;\n}\n\n.pswp__bg {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.85);\n opacity: 0;\n transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);\n transform: translateZ(0);\n backface-visibility: hidden;\n will-change: opacity;\n}\n\n.pswp__scroll-wrap {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n.pswp__container,\n.pswp__zoom-wrap {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n touch-action: none;\n backface-visibility: hidden;\n}\n\n.pswp__container,\n.pswp__img {\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n -webkit-touch-callout: none;\n}\n\n.pswp__zoom-wrap {\n position: absolute;\n width: 100%;\n transition: transform 333ms cubic-bezier(0.4, 0, 0.22, 1);\n transform-origin: left top;\n}\n\n.pswp--animated-in .pswp__bg,\n.pswp--animated-in .pswp__zoom-wrap {\n transition: none;\n}\n\n.pswp__item {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n}\n\n.pswp__img {\n position: absolute;\n top: 0;\n left: 0;\n width: auto;\n height: auto;\n}\n\n.pswp__img--placeholder {\n backface-visibility: hidden;\n}\n\n.pswp__img--placeholder--blank {\n background: var(--color-black);\n}\n\n.pswp--ie .pswp__img {\n top: 0;\n left: 0;\n width: 100% !important;\n height: auto !important;\n}\n\n.pswp__error-msg {\n position: absolute;\n top: 50%;\n left: 0;\n width: 100%;\n margin-top: -8px;\n font-size: 14px;\n line-height: 16px;\n color: var(--color-secondary-text);\n text-align: center;\n}\n\n.pswp__error-msg a {\n color: var(--color-secondary-text);\n text-decoration: underline;\n}\n\n.pswp__button {\n position: relative;\n display: block;\n float: right;\n width: 44px;\n height: 44px;\n padding: 0;\n margin: 0;\n overflow: visible;\n appearance: none;\n cursor: pointer;\n background: none;\n border: 0;\n box-shadow: none;\n transition: opacity 0.2s;\n}\n\n.pswp__button:focus,\n.pswp__button:hover {\n opacity: 1;\n}\n\n.pswp__button:active {\n outline: none;\n opacity: 0.9;\n}\n\n.pswp__button::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\n\n.pswp__ui--over-close .pswp__button--close {\n opacity: 1;\n}\n\n.pswp__button,\n.pswp__button--arrow--left::before,\n.pswp__button--arrow--right::before {\n width: 44px;\n height: 44px;\n background: url(\"../images/default-skin.png\") 0 0 no-repeat;\n background-size: 264px 88px;\n}\n\n@media (-webkit-min-device-pixel-ratio: 1.1), (-webkit-min-device-pixel-ratio: 1.09375), (min-resolution: 105dpi), (min-resolution: 1.1dppx) {\n .pswp--svg .pswp__button,\n .pswp--svg .pswp__button--arrow--left::before,\n .pswp--svg .pswp__button--arrow--right::before {\n background-image: url(\"../images/default-skin.svg\");\n }\n\n .pswp--svg .pswp__button--arrow--left,\n .pswp--svg .pswp__button--arrow--right {\n background: none;\n }\n}\n\n.pswp__button--close {\n background-position: 0 -44px;\n}\n\n.pswp__button--share {\n background-position: -44px -44px;\n}\n\n.pswp__button--fs {\n display: none;\n}\n\n.pswp--supports-fs .pswp__button--fs {\n display: block;\n}\n\n.pswp--fs .pswp__button--fs {\n background-position: -44px 0;\n}\n\n.pswp__button--zoom {\n display: none;\n background-position: -88px 0;\n}\n\n.pswp--zoom-allowed .pswp__button--zoom {\n display: block;\n}\n\n.pswp--zoomed-in .pswp__button--zoom {\n background-position: -132px 0;\n}\n\n.pswp--touch .pswp__button--arrow--left,\n.pswp--touch .pswp__button--arrow--right {\n visibility: hidden;\n}\n\n.pswp__button--arrow--left,\n.pswp__button--arrow--right {\n position: absolute;\n top: 50%;\n width: 70px;\n height: 100px;\n margin-top: -50px;\n background: none;\n}\n\n.pswp__button--arrow--left {\n left: 0;\n}\n\n.pswp__button--arrow--right {\n right: 0;\n}\n\n.pswp__button--arrow--left::before,\n.pswp__button--arrow--right::before {\n position: absolute;\n top: 35px;\n width: 32px;\n height: 30px;\n content: \"\";\n}\n\n.pswp__button--arrow--left::before {\n left: 6px;\n background-position: -138px -44px;\n}\n\n.pswp__button--arrow--right::before {\n right: 6px;\n background-position: -94px -44px;\n}\n\n.pswp__counter {\n position: absolute;\n top: 0;\n left: 0;\n height: 44px;\n padding: 0 15px;\n font-size: 11px;\n font-weight: 700;\n line-height: 44px;\n color: var(--color-white);\n user-select: none;\n}\n\n.pswp__caption {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n min-height: 44px;\n}\n\n.pswp__caption__center {\n max-width: 420px;\n padding: 25px 15px 30px;\n margin: 0 auto;\n font-size: 11px;\n line-height: 1.6;\n color: var(--color-white);\n text-align: center;\n}\n\n.pswp__caption__center .post-caption-title {\n margin-bottom: 7px;\n font-size: 15px;\n font-weight: 500;\n text-transform: uppercase;\n}\n\n.pswp__caption__center .post-caption-meta-item + .post-caption-meta-item::before {\n padding: 0 4px;\n content: \"\\02022\";\n}\n\n.pswp__caption--empty {\n display: none;\n}\n\n.pswp__caption--fake {\n visibility: hidden;\n}\n\n.pswp__preloader {\n position: absolute;\n top: 0;\n left: 50%;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n opacity: 0;\n transition: opacity 0.25s ease-out;\n direction: ltr;\n will-change: opacity;\n}\n\n.pswp__preloader__icn {\n width: 20px;\n height: 20px;\n margin: 12px;\n}\n\n.pswp__preloader--active {\n opacity: 1;\n}\n\n.pswp__preloader--active .pswp__preloader__icn {\n background: url(\"../images/preloader.gif\") 0 0 no-repeat;\n}\n\n.pswp--css_animation .pswp__preloader--active {\n opacity: 1;\n}\n\n.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn {\n animation: clockwise 500ms linear infinite;\n}\n\n.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut {\n animation: donut-rotate 1000ms cubic-bezier(0.4, 0, 0.22, 1) infinite;\n}\n\n.pswp--css_animation .pswp__preloader__icn {\n position: absolute;\n top: 15px;\n left: 15px;\n width: 14px;\n height: 14px;\n margin: 0;\n background: none;\n opacity: 0.75;\n}\n\n.pswp--css_animation .pswp__preloader__cut {\n position: relative;\n width: 7px;\n height: 14px;\n overflow: hidden;\n}\n\n.pswp--css_animation .pswp__preloader__donut {\n position: absolute;\n top: 0;\n left: 0;\n box-sizing: border-box;\n width: 14px;\n height: 14px;\n margin: 0;\n background: none;\n border: 2px solid var(--color-white);\n border-bottom-color: transparent;\n border-left-color: transparent;\n border-radius: 50%;\n}\n\n@media screen and (max-width: 1024px) {\n .pswp__preloader {\n position: relative;\n top: auto;\n left: auto;\n float: right;\n margin: 0;\n }\n}\n\n@keyframes clockwise {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes donut-rotate {\n 0% {\n transform: rotate(0);\n }\n\n 50% {\n transform: rotate(-140deg);\n }\n\n 100% {\n transform: rotate(0);\n }\n}\n\n.pswp__ui {\n z-index: 1550;\n visibility: visible;\n opacity: 1;\n -webkit-font-smoothing: auto;\n}\n\n.pswp__top-bar {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 44px;\n}\n\n.pswp__caption,\n.pswp__top-bar,\n.pswp--has_mouse .pswp__button--arrow--left,\n.pswp--has_mouse .pswp__button--arrow--right {\n backface-visibility: hidden;\n transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);\n will-change: opacity;\n}\n\n.pswp--has_mouse .pswp__button--arrow--left,\n.pswp--has_mouse .pswp__button--arrow--right {\n visibility: visible;\n}\n\n.pswp__ui--idle .pswp__top-bar {\n opacity: 0;\n}\n\n.pswp__ui--idle .pswp__button--arrow--left,\n.pswp__ui--idle .pswp__button--arrow--right {\n opacity: 0;\n}\n\n.pswp__ui--hidden .pswp__top-bar,\n.pswp__ui--hidden .pswp__caption,\n.pswp__ui--hidden .pswp__button--arrow--left,\n.pswp__ui--hidden .pswp__button--arrow--right {\n opacity: 0.001;\n}\n\n.pswp__ui--one-slide .pswp__button--arrow--left,\n.pswp__ui--one-slide .pswp__button--arrow--right,\n.pswp__ui--one-slide .pswp__counter {\n display: none;\n}\n\n.pswp__element--disabled {\n display: none !important;\n}\n\n.pswp--minimal--dark .pswp__top-bar {\n background: none;\n}\n\n/* SHARE */\n.gh-meta-share {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 20px;\n}\n\n.has-light-text .gh-button-share {\n border-color: rgba(255, 255, 255, 0.25);\n color: rgba(255, 255, 255, 0.85);\n}\n\n.has-light-text .gh-button-share:hover {\n border-color: rgba(255, 255, 255, 0.85);\n}\n\n.gh-button-share {\n display: inline-flex;\n align-items: center;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 999px;\n color: rgba(0, 0, 0, 0.85);\n background: transparent;\n cursor: pointer;\n transition: all 0.4s ease;\n}\n\n.gh-button-share:hover {\n border-color: rgba(0, 0, 0, 0.5);\n}\n"]} \ No newline at end of file +{"version":3,"sources":["screen.css","custom.css"],"names":[],"mappings":"AAqDA,MACA,kBAAA,CACA,oCAAA,CACA,0BAAA,CACA,qBAAA,CACA,sBAAA,CACA,2BAAA,CACA,kBAAA,CACA,6CAAA,CACA,sCAAA,CACA,8BAAA,CACA,mCAAA,CACA,oKAAA,CACA,iDAAA,CACA,sCAAA,CACA,qGAAA,CACA,wBAAA,CACA,uDAAA,CACA,eACA,CAEA,qEAEA,uCAAA,CACA,wBAAA,CACA,0CAAA,CACA,kCAAA,CACA,sCACA,CAUA,iBACA,qBACA,CAEA,EACA,QACA,CAEA,KACA,eACA,CAEA,KACA,eAAA,CACA,kCAAA,CACA,iCACA,CAEA,6BACA,aAAA,CACA,WAAA,CACA,cACA,CAEA,OACA,aACA,CAEA,6BACA,YACA,CAEA,oBACA,wBACA,CAEA,kBACA,eACA,CAEA,QACA,aACA,CAKA,KACA,gDAAA,CACA,gBAAA,CACA,wCAAA,CACA,+BACA,CAEA,kBACA,mDACA,CAEA,EACA,8BAAA,CACA,oBACA,CAEA,QACA,UACA,CAEA,WACA,mBAAA,CACA,QAAA,CACA,kBAAA,CACA,sBAAA,CACA,kBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CACA,aAAA,CACA,wBAAA,CACA,cAAA,CACA,0CAAA,CACA,QAAA,CACA,mBACA,CAEA,iBACA,WACA,CAEA,gBACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CACA,8BAAA,CACA,cAAA,CACA,4BAAA,CACA,QAAA,CACA,YACA,CAEA,oCACA,UACA,CAEA,oBACA,UAAA,CACA,WACA,CAEA,SACA,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,eAAA,CACA,UAAA,CACA,WAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,0CAAA,CACA,oCACA,CAEA,iBACA,mBACA,CAEA,eACA,wBACA,CAEA,eACA,iCACA,CAEA,0EAEA,oCACA,CAEA,eACA,iBAAA,CACA,OAAA,CACA,mBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,sBAAA,CACA,eAAA,CACA,QAAA,CACA,kBAAA,CACA,4BAAA,CACA,YAAA,CACA,0BACA,CAEA,iCAEA,oBACA,CAHA,iDAEA,oBACA,CAEA,2rBAGA,mBACA,CAEA,wCACA,UACA,CAEA,0EAEA,UACA,CAEA,8GAGA,yBACA,CAJA,yIAGA,yBACA,CAEA,+CACA,aACA,CAEA,iEAGA,oBACA,CAJA,8JAGA,oBACA,CAEA,qBACA,yBAAA,CACA,eAAA,CACA,iCAAA,CACA,cACA,CAEA,6sBAGA,yBACA,CAEA,oBACA,iBAAA,CACA,SAAA,CACA,eAAA,CACA,mBAAA,CACA,WAAA,CACA,iBACA,CAEA,aACA,iBAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,iCACA,CAEA,kHACA,SACA,CAEA,wBACA,YAAA,CACA,iBAAA,CACA,cACA,CAEA,oCACA,YACA,CAEA,2DACA,iBACA,CAEA,8CACA,aACA,CAEA,6CACA,YACA,CAEA,4CACA,cACA,CAEA,8BACA,iBAAA,CACA,QAAA,CACA,eAAA,CACA,UAAA,CACA,gBAAA,CACA,eACA,CAEA,yBACA,SACA,gBACA,CAEA,oBACA,eAAA,CACA,mBACA,CACA,CAKA,aACA,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,gBACA,CAEA,UACA,yBACA,CAEA,oBACA,SACA,CAEA,UACA,aAAA,CACA,gCAAA,CACA,UACA,CAEA,SACA,WACA,CAEA,0CAEA,wEAAA,CACA,wFAAA,CACA,wCAAA,CAEA,YAAA,CACA,yJAMA,CAEA,aACA,gBACA,CAEA,oCAEA,gBACA,CAEA,eACA,gBACA,CAKA,eACA,YAAA,CACA,gBAAA,CACA,eAAA,CACA,wCAAA,CACA,8BACA,CAEA,0EACA,aACA,CAEA,qBACA,YAAA,CACA,wBAAA,CACA,oBAAA,CAAA,eAAA,CACA,kBAAA,CACA,WACA,CAEA,qBACA,aACA,CAEA,oBACA,iBAAA,CACA,mDAAA,CACA,uCAAA,CACA,eAAA,CACA,sBAAA,CACA,kBACA,CAEA,wBACA,eACA,CAEA,oBACA,YAAA,CACA,QAAA,CACA,kBACA,CAEA,oBAEA,QAAA,CAEA,SAAA,CACA,QAAA,CACA,kBAAA,CACA,eACA,CAEA,2BATA,mBAAA,CAEA,kBAYA,CALA,OAGA,SAAA,CACA,qBACA,CAEA,UACA,aAAA,CACA,SAAA,CACA,UAAA,CACA,aAAA,CACA,qBAAA,CAAA,kBACA,CAEA,+BACA,iBAAA,CACA,aAAA,CACA,iBAAA,CACA,sBACA,CAEA,mCACA,UAAA,CACA,WACA,CAEA,uBACA,YAAA,CACA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wCACA,CAEA,uDACA,0CACA,CAEA,uBACA,YAAA,CACA,QAAA,CACA,kBAAA,CACA,kBACA,CAEA,kCACA,iBAAA,CACA,eACA,CAEA,WACA,iBAAA,CACA,gBACA,CAEA,yBACA,oBACA,kBACA,CAEA,uBACA,6BAAA,CACA,QAAA,CACA,UACA,CAEA,kCACA,YACA,CACA,CAEA,yBACA,gCACA,YACA,CAEA,oEACA,SACA,CACA,CAIA,gCACA,0CACA,CAEA,2CACA,qBAAA,CACA,aACA,CAUA,iDACA,mCACA,CAEA,yBACA,+DACA,QACA,CACA,CAEA,yBACA,gDACA,kBAAA,CACA,gBACA,CACA,CAQA,mDACA,kCACA,CAEA,mDACA,mBACA,CAEA,qDACA,QACA,CAEA,yBACA,kDACA,iBACA,CACA,CASA,0BACA,iBAAA,CACA,WACA,CAEA,+CACA,kCACA,CAEA,+CACA,YAAA,CACA,kBAAA,CACA,gBAAA,CACA,mBAAA,CACA,eACA,CAEA,yBACA,+CACA,gBACA,CACA,CAEA,yBACA,+CACA,SACA,CAEA,+CACA,YAAA,CACA,kBAAA,CACA,WACA,CAEA,8CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CACA,aACA,CAEA,yGAEA,iBAAA,CACA,QAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,UAAA,CACA,oCACA,CAEA,oDACA,SACA,CAEA,iDACA,gBAAA,CACA,eAAA,CACA,6BACA,CAEA,4DACA,YAAA,CACA,QAAA,CACA,UACA,CACA,CAIA,aACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CACA,eAAA,CACA,iBAAA,CACA,qBAAA,CACA,iBAAA,CACA,oEAAA,CACA,SAAA,CACA,oCAAA,CACA,8BACA,CAEA,qBACA,UAAA,CACA,UACA,CAEA,+BACA,YAAA,CACA,6BAAA,CACA,qBAAA,CACA,oBAAA,CAAA,eAAA,CACA,UAAA,CACA,iBACA,CAEA,+BACA,kBAAA,CACA,SAAA,CACA,uBACA,CAEA,kBACA,aAAA,CACA,gBAAA,CACA,eAAA,CACA,kBAAA,CACA,uBACA,CAEA,oCACA,aACA,CAIA,WACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,iBAAA,CACA,YAAA,CACA,iBAAA,CACA,eACA,CAEA,eACA,UAAA,CACA,WACA,CAMA,8DACA,YACA,CAEA,mCACA,aACA,CAEA,yBACA,WACA,YACA,CAEA,eACA,WACA,CAEA,oCACA,gCAAA,CACA,yBAAA,CACA,QACA,CAEA,oCACA,YAAA,CACA,mCAAA,CACA,mBAAA,CACA,kBAAA,CACA,WACA,CAEA,mCACA,gBACA,CAEA,yEAEA,cAAA,CACA,sBAAA,CACA,iBAAA,CACA,SACA,CAEA,mCACA,eAAA,CACA,uBACA,CAEA,oBACA,QAAA,CACA,kBAAA,CACA,eACA,CAEA,sBACA,iBAAA,CACA,eAAA,CACA,mBACA,CAEA,uBACA,SAAA,CACA,0BACA,CAEA,sCACA,iBACA,CAEA,qDACA,SAAA,CACA,yBACA,CAEA,0BACA,UAAA,CACA,iBAAA,CACA,mBACA,CAEA,qCACA,iBACA,CAEA,SACA,sBACA,CAEA,uBACA,cAAA,CACA,OAAA,CACA,eAAA,CACA,WAAA,CACA,iBAAA,CACA,gCACA,CAEA,yFAEA,eAAA,CACA,kBAAA,CACA,SACA,CAEA,4BACA,YAAA,CACA,qBACA,CAEA,+BACA,SAAA,CACA,oCAAA,CACA,uBACA,CAEA,8CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,MAAA,CACA,mBAAA,CACA,qBAAA,CACA,QAAA,CACA,kBAAA,CACA,8BACA,CAEA,6DACA,SAAA,CACA,oCAAA,CACA,oBAAA,CACA,uBACA,CAEA,6CACA,oBACA,CAEA,iBACA,SACA,CACA,CAKA,SACA,iBACA,CAEA,cACA,YAAA,CACA,qBAAA,CACA,QACA,CAEA,oBACA,SACA,CAEA,eACA,iBAAA,CACA,aAAA,CACA,iBACA,CAEA,mBACA,iBAAA,CACA,OAAA,CACA,UAAA,CACA,WAAA,CACA,mBAAA,CAAA,gBACA,CAEA,iBACA,WACA,CAEA,aACA,YAAA,CACA,iBAAA,CACA,gBAAA,CACA,eAAA,CACA,oBAAA,CACA,wBACA,CAEA,eACA,uCAAA,CACA,eAAA,CACA,sBAAA,CACA,eACA,CAEA,mCACA,UACA,CAEA,iBACA,mBAAA,CACA,iBAAA,CACA,cAAA,CACA,iBAAA,CACA,eAAA,CACA,oBAAA,CACA,2BACA,CAEA,cACA,kBAAA,CACA,kBAAA,CACA,iBAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,iCACA,CAEA,kBACA,iBAAA,CACA,OAAA,CACA,oBAAA,CACA,UAAA,CACA,WAAA,CACA,gBACA,CAEA,0BACA,cACA,CAEA,qCACA,WAAA,CACA,gBACA,CAKA,WACA,iBAAA,CACA,eACA,CAEA,iBACA,iBAAA,CACA,eACA,CAIA,wCACA,YAAA,CACA,oCAAA,CACA,mBACA,CAEA,4CACA,YAAA,CACA,qBAAA,CACA,mBAAA,CACA,UACA,CAEA,uCACA,oBACA,CAEA,iDACA,iBAAA,CACA,oBACA,CAEA,wCACA,iBACA,CAEA,+DACA,QACA,CAEA,gEACA,qBACA,CAEA,8DACA,aAAA,CACA,kBACA,CAEA,gEACA,6CAAA,CACA,eAAA,CACA,eAAA,CACA,sBACA,CAEA,kEACA,2CAAA,CACA,gBAAA,CACA,qBAAA,CACA,aACA,CAEA,2EACA,eACA,CAEA,gGACA,YACA,CAEA,6DACA,YACA,CAEA,+GAEA,iBAAA,CACA,KAAA,CACA,6BAAA,CACA,UAAA,CACA,SAAA,CACA,WAAA,CACA,oCACA,CAEA,uDACA,8BAAA,CACA,SACA,CAEA,qEACA,iBAAA,CACA,4BAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,UAAA,CACA,oCACA,CAEA,0BACA,wCACA,oCACA,CAEA,iDACA,oBACA,CAEA,uCACA,gBACA,CAEA,4DACA,gBAAA,CACA,UAAA,CACA,kBACA,CAEA,iDACA,MACA,CAEA,2EACA,aACA,CAEA,wCACA,iBACA,CAEA,+CACA,iBAAA,CACA,4BAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,UAAA,CACA,oCACA,CAEA,wDACA,YACA,CAEA,uDACA,iBAAA,CACA,KAAA,CACA,8BAAA,CACA,UAAA,CACA,SAAA,CACA,WAAA,CACA,oCACA,CACA,CAEA,yBACA,4EACA,YACA,CACA,CAEA,yBACA,wCACA,YAAA,CACA,qBAAA,CACA,mBACA,CAEA,4DACA,qBACA,CAEA,sCACA,uBACA,CAEA,uCACA,uBAAA,CACA,iBAAA,CACA,4BAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,UAAA,CACA,oCACA,CACA,CAIA,yCACA,YAAA,CACA,oCAAA,CACA,mBACA,CAEA,wCACA,iBAAA,CACA,kBACA,CAEA,iDACA,kBAAA,CACA,eACA,CAEA,+DACA,QACA,CAEA,gEACA,gBACA,CAEA,8DACA,aAAA,CACA,kBACA,CAEA,gEACA,6CAAA,CACA,eAAA,CACA,eAAA,CACA,sBACA,CAEA,kEACA,2CAAA,CACA,gBACA,CAEA,2EACA,eACA,CAEA,0CACA,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,mBAAA,CACA,oBACA,CAMA,iJACA,YACA,CAEA,yCACA,iBACA,CAEA,qCACA,YAAA,CACA,SACA,CAEA,0CACA,YAAA,CACA,qBACA,CAEA,yDACA,8CACA,CAEA,8FAEA,iBAAA,CACA,KAAA,CACA,8BAAA,CACA,UAAA,CACA,SAAA,CACA,WAAA,CACA,oCACA,CAEA,wCACA,iBAAA,CACA,4BAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,UAAA,CACA,oCACA,CAEA,iEACA,YACA,CAEA,0BACA,yCACA,mCACA,CAEA,wCACA,kBACA,CAEA,0CACA,gBACA,CAEA,yCACA,gBACA,CAEA,0CACA,YAAA,CACA,mCACA,CAEA,0DACA,kCACA,CAEA,yDACA,iBAAA,CACA,KAAA,CACA,6BAAA,CACA,UAAA,CACA,SAAA,CACA,WAAA,CACA,oCACA,CACA,CAEA,yBACA,+EACA,YACA,CACA,CAEA,yBACA,yCACA,YAAA,CACA,qBACA,CAEA,0CACA,YAEA,CAEA,uCACA,uBACA,CAEA,oEACA,mBACA,CACA,CAIA,sBACA,YAAA,CACA,YAAA,CACA,mBACA,CAEA,uCACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,QAAA,CACA,cAAA,CACA,WAAA,CACA,gBAAA,CACA,iBACA,CAEA,uCACA,sEAAA,CACA,eAAA,CACA,sBACA,CAEA,gCACA,YACA,CAEA,uCACA,iBAAA,CACA,OAAA,CACA,UAAA,CACA,UAAA,CACA,mCAAA,CACA,4BACA,CAEA,iDACA,UACA,CAEA,iDACA,iBAAA,CACA,OAAA,CACA,UAAA,CACA,UAAA,CACA,WAAA,CACA,mBAAA,CAAA,gBACA,CAEA,yCACA,qBACA,CAKA,QACA,YAAA,CACA,wBACA,CAEA,kDACA,aACA,CAEA,cACA,iBAAA,CACA,eAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,QAAA,CACA,2EAAA,CACA,iBAAA,CACA,0CACA,CAEA,gBACA,eACA,CAEA,cACA,6CAAA,CACA,eAAA,CACA,eAAA,CACA,sBACA,CAEA,oBACA,eAAA,CACA,gBAAA,CACA,eAAA,CACA,sBACA,CAKA,aACA,gBACA,CAEA,4BACA,eACA,CAEA,mDACA,YACA,CAEA,mBACA,eACA,CAEA,mBACA,kBAAA,CACA,mBAAA,CACA,gBAAA,CACA,eAAA,CACA,qBAAA,CACA,wBAAA,CACA,2CACA,CAEA,kBACA,YAAA,CACA,mCAAA,CACA,mBACA,CAEA,2BACA,0BAAA,CACA,4BACA,CAEA,gCACA,YAAA,CACA,0BAAA,CACA,sBACA,CAEA,iCACA,UAAA,CACA,cACA,CAEA,yCACA,iCACA,YACA,CACA,CAEA,mDACA,iCACA,UACA,CACA,CAEA,mCACA,0BAAA,CACA,oCACA,CAEA,iCACA,gBAAA,CACA,eAAA,CACA,sBACA,CAEA,iDACA,iCACA,gBACA,CACA,CAEA,mCACA,YACA,CAEA,4CACA,cACA,CAEA,kCACA,iBAAA,CACA,KAAA,CACA,6BAAA,CACA,UAAA,CACA,SAAA,CACA,WAAA,CACA,oCACA,CAEA,0BACA,4CACA,mCACA,CAEA,kEACA,YACA,CACA,CAEA,yBACA,4CACA,YAAA,CACA,qBACA,CACA,CAKA,cACA,WAAA,CACA,eACA,CAEA,oBACA,YAAA,CACA,oCAAA,CACA,+BAAA,CAAA,0BACA,CAEA,wCACA,wBACA,CAEA,oDACA,YACA,CAEA,gJAEA,YACA,CAEA,SACA,YAAA,CACA,gBAAA,CACA,eAAA,CACA,uCAAA,CACA,eAAA,CACA,sBACA,CAEA,mCACA,mBACA,CAEA,iEACA,aACA,CAEA,WACA,YAAA,CACA,kBAAA,CACA,OACA,CAEA,aACA,eAAA,CACA,UAAA,CACA,WACA,CAEA,6FACA,YACA,CAIA,mCACA,qBAAA,CACA,iBACA,CAEA,sCACA,iBACA,CAEA,yCACA,iBAAA,CACA,KAAA,CACA,8BAAA,CACA,UAAA,CACA,SAAA,CACA,WAAA,CACA,oCACA,CAIA,2EACA,qBACA,CAEA,4FACA,qBACA,CAEA,6HACA,gBACA,CAEA,0BACA,oBACA,aAAA,CACA,eACA,CAEA,sCACA,YACA,CACA,CAKA,oBACA,gBAAA,CACA,qCAAA,CACA,mBAAA,CACA,gBAAA,CACA,eAAA,CACA,qBAAA,CACA,wBAAA,CACA,2CACA,CAEA,sDACA,YACA,CAEA,uBACA,mBACA,CAEA,wCACA,eACA,CAIA,+BACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,wBACA,CAEA,oCACA,kBAAA,CACA,kBAAA,CACA,QACA,CAEA,8CACA,kBACA,CAEA,qCACA,aAAA,CACA,WAAA,CACA,qBACA,CAEA,qCACA,qCACA,WACA,CACA,CAEA,+DACA,eACA,CAEA,qCACA,aACA,CAEA,+CACA,YACA,CAEA,uCACA,cACA,CAEA,+CACA,iBAAA,CACA,4BAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,UAAA,CACA,oCACA,CAEA,iEACA,YACA,CAEA,yBACA,oCACA,qBAAA,CACA,sBACA,CAEA,qCACA,UACA,CACA,CAIA,+BACA,YAAA,CACA,wDAAA,CACA,iCAAA,CACA,eACA,CAEA,sCAEA,4BAAA,CACA,8BAAA,CAGA,UAEA,CAEA,2EATA,iBAAA,CAGA,6BAAA,CACA,UAAA,CAEA,oCAWA,CARA,qCAEA,KAAA,CAGA,SAAA,CACA,WAEA,CAEA,yBACA,+BACA,mCACA,CACA,CAEA,yBACA,+BACA,YAAA,CACA,qBACA,CACA,CAIA,8CACA,YACA,CAKA,kBACA,eAAA,CACA,2BACA,CAEA,kBACA,gBAAA,CACA,qCAAA,CACA,mBAAA,CACA,gBAAA,CACA,eAAA,CACA,qBAAA,CACA,wBAAA,CACA,2CACA,CAEA,UACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,kBAAA,CACA,iBAAA,CACA,gBAAA,CACA,iBAAA,CACA,0CACA,CAEA,eACA,kBAAA,CACA,UAAA,CACA,WAAA,CACA,iBACA,CAEA,gBACA,uCAAA,CACA,eAAA,CACA,sBACA,CAEA,sBACA,eAAA,CACA,iBAAA,CACA,eACA,CAEA,qBACA,eACA,CAEA,oBACA,eACA,CAEA,qCACA,YAAA,CACA,qBAAA,CACA,QAAA,CACA,QAAA,CACA,SAAA,CACA,oBACA,CAEA,gDACA,cACA,CAEA,sCACA,YAAA,CACA,+BAAA,CACA,YACA,CAEA,4CACA,SACA,CAEA,4CACA,eAAA,CACA,UAAA,CACA,iBACA,CAEA,0CACA,eAAA,CACA,gBAAA,CACA,eAAA,CACA,sBACA,CAEA,kEACA,UACA,CAEA,wCACA,OAAA,CACA,eAAA,CACA,gBAAA,CACA,gBAAA,CACA,iCAAA,CACA,sBACA,CAEA,gDACA,mBAAA,CACA,YAAA,CACA,iBAAA,CACA,aAAA,CACA,gBAAA,CACA,eAAA,CACA,iCAAA,CACA,oBAAA,CACA,2BACA,CAEA,2BACA,mBAAA,CACA,kBAAA,CACA,OAAA,CACA,eAAA,CACA,SAAA,CACA,cAAA,CACA,gBAAA,CACA,eAAA,CACA,qBAAA,CACA,wBAAA,CACA,4BAAA,CACA,QAAA,CACA,8BACA,CAEA,+BACA,eAAA,CACA,UACA,CAEA,iCACA,UACA,CAOA,YACA,wBAAA,CAEA,qBACA,CAEA,mBACA,+CACA,CAEA,gBACA,kBAAA,CACA,gBAAA,CACA,eAAA,CACA,oBAAA,CACA,wBAAA,CACA,+BACA,CAEA,kBACA,wEAAA,CACA,eAAA,CACA,sBACA,CAEA,oBACA,2CAAA,CACA,eAAA,CACA,8CAAA,CACA,gBAAA,CACA,sBACA,CAEA,iBACA,YAAA,CACA,kBAAA,CACA,OAAA,CACA,eACA,CAEA,yBACA,YAAA,CACA,gBACA,CAEA,2BACA,iBAAA,CACA,aAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,wCAAA,CACA,iBAAA,CACA,wCACA,CAEA,uCACA,UACA,CAEA,wCACA,SACA,CAEA,wCACA,SACA,CAEA,sCACA,iBAAA,CACA,OAAA,CACA,UAAA,CACA,WAAA,CACA,mBAAA,CAAA,gBACA,CAEA,yBACA,YAAA,CACA,qBAAA,CACA,OACA,CAEA,wBACA,gBAAA,CACA,eAAA,CACA,sBACA,CAEA,yBACA,iBAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,iCACA,CAEA,kBACA,gBAAA,CACA,eACA,CAEA,sBACA,UACA,CAIA,kCACA,sBACA,CAIA,uEACA,eACA,CAEA,2DACA,iBACA,CAEA,0BACA,YACA,CASA,YACA,yCAAA,CACA,qBACA,CAGA,gBACA,sDAAA,CACA,eACA,CAGA,gGACA,YACA,CAIA,mCACA,sDACA,CAGA,iEAEA,eAAA,CACA,UAAA,CACA,aAAA,CACA,oBAAA,CACA,eACA,CAEA,yIACA,eACA,CAGA,mBACA,sDACA,CAGA,sCACA,iBAAA,CACA,gEACA,CAEA,wCACA,gEACA,CAGA,eACA,sCAAA,CACA,qBACA,CAEA,eACA,sCAAA,CACA,qBACA,CAEA,eACA,sCAAA,CACA,sBACA,CAEA,cACA,+BAAA,CACA,yBACA,CAEA,0GAEA,eACA,CAEA,q2BASA,iCACA,CAEA,uBACA,iBACA,CAEA,qCACA,cACA,CAEA,qBACA,2BACA,CAEA,wBACA,2BACA,CAEA,eACA,UAAA,CACA,UAAA,CACA,oCAAA,CACA,QACA,CAEA,sBACA,iBAAA,CACA,gCACA,CAEA,4BACA,UAAA,CACA,4BAAA,CACA,gBAAA,CACA,kBAAA,CACA,kBAAA,CACA,gBAAA,CACA,wBACA,CAEA,+BACA,gBAAA,CACA,eAAA,CACA,2BAAA,CACA,eAAA,CACA,wBAAA,CACA,mBACA,CAEA,sEAEA,gBAAA,CACA,2CACA,CAEA,mDACA,cACA,CAEA,kDACA,eACA,CAEA,gBACA,aAAA,CACA,YAAA,CACA,gBAAA,CACA,iBAAA,CAEA,iBAEA,CAEA,2CALA,oCAAA,CAEA,4BAYA,CATA,2BACA,uBAAA,CACA,kBAAA,CACA,eAAA,CACA,eAAA,CACA,eAAA,CAEA,mBAEA,CAOA,oEACA,sDACA,CAEA,oEACA,sDACA,CAMA,wHACA,sDACA,CAIA,UACA,iBAAA,CACA,gBACA,CAIA,eACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,UACA,CAIA,2CAEA,cACA,CAEA,iDAEA,mBACA,CAIA,gDACA,cAAA,CACA,eACA,CAEA,wHACA,6BACA,CAEA,uHACA,4BACA,CAIA,yBACA,mBACA,CAEA,0BACA,yBACA,CAIA,wBACA,iBAAA,CACA,+CACA,CAEA,6BACA,iBAAA,CACA,eAAA,CACA,iCACA,CAIA,gCACA,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,aAAA,CACA,iBACA,CAIA,iIACA,6BACA,CAEA,gIACA,4BACA,CAEA,qHACA,6BACA,CAIA,yCACA,6BACA,CAEA,+CACA,SACA,CAEA,0FAEA,4CAAA,CACA,wCACA,CAEA,uCACA,cACA,CAEA,qCACA,cACA,CAEA,2CACA,eAAA,CACA,eAAA,CACA,cACA,CAEA,wCACA,cACA,CAEA,6CACA,2BACA,CAIA,gDACA,kBACA,CAEA,kDACA,YAAA,CACA,eACA,CAEA,gIACA,6BACA,CAEA,+HACA,4BACA,CAEA,mHACA,iCACA,CAIA,8CACA,YACA,CAEA,6CACA,kBACA,CAEA,6CACA,cACA,CAEA,oDACA,gBAAA,CACA,eACA,CAIA,WACA,eAAA,CACA,gBAAA,CACA,iBACA,CAEA,kCACA,cACA,CAEA,aACA,+BAAA,CACA,yBACA,CAKA,aACA,eACA,CAKA,6BACA,gBACA,CAEA,mCACA,aACA,CAEA,8CACA,mCACA,CAEA,iDACA,aACA,CAKA,YACA,YAAA,CACA,oCAAA,CACA,mBAAA,CACA,sBACA,CAEA,sBACA,eACA,CAEA,kBACA,YAAA,CACA,6BAAA,CACA,mBAAA,CACA,gBAAA,CACA,gDAAA,CACA,2CACA,CAEA,wCACA,kBAAA,CACA,gBACA,CAEA,gEACA,qBACA,CAEA,8BACA,gBAAA,CACA,YACA,CAEA,kDACA,YACA,CAEA,mCACA,YAAA,CACA,0BAAA,CACA,wBAAA,CACA,QACA,CAEA,mCACA,YAAA,CACA,WAAA,CACA,YAAA,CACA,iBAAA,CACA,mBAAA,CAAA,gBACA,CAEA,mCACA,gBACA,CAEA,gBACA,YAAA,CACA,QAAA,CACA,eAAA,CACA,gBAAA,CACA,eAAA,CACA,iCACA,CAEA,kBACA,aACA,CAEA,kBACA,YAAA,CACA,QAAA,CACA,kBAAA,CACA,gBACA,CAEA,sBACA,UAAA,CACA,WACA,CAEA,0BACA,YACA,aACA,CACA,CAEA,yBACA,kBACA,YAAA,CAEA,sBACA,CAEA,qDAJA,6BAMA,CACA,CAKA,gFACA,aACA,CAEA,+EACA,YACA,CAEA,qHACA,mDACA,CAEA,sHACA,oDAAA,CACA,eACA,CAEA,qHACA,mDACA,CAEA,iFACA,gDACA,CAEA,kFACA,qDACA,CAEA,uHACA,eAAA,CACA,sBACA,CAEA,sHACA,qBACA,CAEA,yFACA,eACA,CAEA,+FACA,gBAAA,CACA,sBAAA,CACA,qCACA,CAEA,iHACA,uCACA,CAEA,gHACA,uCAAA,CACA,gBACA,CAEA,yIACA,8CACA,CAEA,8FACA,uCAAA,CACA,eACA,CAEA,gGACA,sBACA,CAMA,2MACA,sBACA,CAEA,yEACA,0BACA,CAEA,0FACA,iBAAA,CACA,eAAA,CACA,sBACA,CAEA,kRAEA,gBAAA,CACA,sBACA,CAEA,uRAEA,eAAA,CACA,+CACA,CAEA,+FACA,gBACA,CAMA,gMACA,gBACA,CAEA,swBAGA,eACA,CAEA,8FACA,gBACA,CAKA,WACA,gBAAA,CACA,gBAAA,CACA,8BACA,CAEA,6BACA,aACA,CAIA,4BACA,0CACA,CAEA,2CACA,YACA,CAEA,uCACA,qBAAA,CACA,aACA,CAIA,eACA,YAAA,CACA,kCAAA,CACA,kBAAA,CACA,oBAAA,CAAA,eAAA,CACA,mBAAA,CACA,kBAAA,CACA,eAAA,CACA,0CACA,CAEA,gBACA,iBAAA,CACA,mDAAA,CACA,uCAAA,CACA,eAAA,CACA,sBAAA,CACA,kBACA,CAEA,oBACA,eACA,CAEA,qBACA,YAAA,CACA,sBAAA,CACA,YAAA,CACA,cAAA,CACA,QAAA,CACA,SAAA,CACA,oBACA,CAEA,qBACA,gBAAA,CACA,kBACA,CAEA,uBACA,yBACA,CAIA,kBACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,mBAAA,CACA,iBACA,CAEA,yBACA,oEAAA,CACA,eAAA,CACA,qBACA,CAEA,0BACA,eAAA,CACA,eAAA,CACA,gBAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,WACA,CAEA,2BACA,eACA,CAEA,yBACA,eACA,YAAA,CACA,qBAAA,CACA,QACA,CACA,CAIA,iBACA,YAAA,CACA,sBAAA,CACA,QAAA,CACA,kBACA,CAEA,mBACA,mBACA,CAEA,qBACA,UAAA,CACA,WACA,CAKA,MACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,eAAA,CACA,YAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,6BACA,CAEA,UACA,cACA,CAEA,uBACA,YAAA,CACA,iDAAA,CACA,mBACA,CAEA,YACA,aACA,CAEA,+BACA,cACA,CAEA,4BACA,WACA,CAEA,2BACA,eACA,CAEA,UAMA,gCAAA,CACA,SAAA,CACA,iDAAA,CACA,uBAAA,CACA,0BAAA,CACA,mBACA,CAEA,6BAbA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAgBA,CAPA,mBAMA,eACA,CAEA,kCAEA,iBAAA,CACA,KAAA,CACA,OAAA,CACA,QAAA,CACA,MAAA,CACA,iBAAA,CACA,0BACA,CAEA,4BAEA,wBAAA,CAAA,qBAAA,CAAA,gBAAA,CACA,uCAAA,CACA,0BACA,CAEA,iBACA,iBAAA,CACA,UAAA,CACA,mDAAA,CACA,yBACA,CAEA,iEAEA,eACA,CAEA,YAGA,OAAA,CACA,QAAA,CAEA,eACA,CAEA,uBARA,iBAAA,CACA,KAAA,CAGA,MAUA,CANA,WAIA,UAAA,CACA,WACA,CAEA,wBACA,0BACA,CAEA,+BACA,6BACA,CAEA,qBACA,KAAA,CACA,MAAA,CACA,oBAAA,CACA,qBACA,CAEA,iBACA,iBAAA,CACA,OAAA,CACA,MAAA,CACA,UAAA,CACA,eAAA,CACA,cAAA,CACA,gBAAA,CACA,iCAAA,CACA,iBACA,CAEA,mBACA,iCAAA,CACA,yBACA,CAEA,cACA,iBAAA,CACA,aAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CACA,QAAA,CACA,gBAAA,CACA,uBAAA,CAAA,oBAAA,CAAA,eAAA,CACA,cAAA,CACA,eAAA,CACA,QAAA,CACA,eAAA,CACA,sBACA,CAEA,wCAEA,SACA,CAEA,qBACA,YAAA,CACA,UACA,CAEA,gCACA,SAAA,CACA,QACA,CAEA,2CACA,SACA,CAEA,mFAGA,UAAA,CACA,WAAA,CACA,wDAAA,CACA,0BACA,CAEA,wDACA,oHAGA,gDACA,CAEA,6EAEA,eACA,CACA,CAEA,qBACA,2BACA,CAEA,qBACA,+BACA,CAEA,kBACA,YACA,CAEA,qCACA,aACA,CAEA,4BACA,2BACA,CAEA,oBACA,YAAA,CACA,2BACA,CAEA,wCACA,aACA,CAEA,qCACA,4BACA,CAEA,iFAEA,iBACA,CAEA,uDAEA,iBAAA,CACA,OAAA,CACA,UAAA,CACA,YAAA,CACA,gBAAA,CACA,eACA,CAEA,2BACA,MACA,CAEA,4BACA,OACA,CAEA,qEAEA,iBAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,UACA,CAEA,kCACA,QAAA,CACA,gCACA,CAEA,mCACA,SAAA,CACA,+BACA,CAEA,eACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,WAAA,CACA,cAAA,CACA,cAAA,CACA,eAAA,CACA,gBAAA,CACA,wBAAA,CACA,wBAAA,CAAA,qBAAA,CAAA,gBACA,CAEA,eACA,iBAAA,CACA,QAAA,CACA,MAAA,CACA,UAAA,CACA,eACA,CAEA,uBACA,eAAA,CACA,sBAAA,CACA,aAAA,CACA,cAAA,CACA,eAAA,CACA,wBAAA,CACA,iBACA,CAEA,2CACA,iBAAA,CACA,cAAA,CACA,eAAA,CACA,wBACA,CAEA,8EACA,aAAA,CACA,gBACA,CAEA,sBACA,YACA,CAEA,qBACA,iBACA,CAEA,iBACA,iBAAA,CACA,KAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,SAAA,CACA,gCAAA,CACA,aAAA,CACA,mBACA,CAEA,sBACA,UAAA,CACA,WAAA,CACA,WACA,CAEA,yBACA,SACA,CAEA,+CACA,qDACA,CAEA,8CACA,SACA,CAEA,oEACA,uCACA,CAEA,sEACA,2DACA,CAEA,2CACA,iBAAA,CACA,QAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,eAAA,CACA,WACA,CAEA,2CACA,iBAAA,CACA,SAAA,CACA,WAAA,CACA,eACA,CAEA,6CACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,qBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,eAAA,CACA,mCAAA,CACA,+BAAA,CACA,6BAAA,CACA,iBACA,CAEA,qCACA,iBACA,iBAAA,CACA,QAAA,CACA,SAAA,CACA,WAAA,CACA,QACA,CACA,CAEA,qBACA,GACA,sBACA,CAEA,GACA,uBACA,CACA,CAEA,wBACA,GACA,mBACA,CAEA,IACA,yBACA,CAEA,GACA,mBACA,CACA,CAEA,UACA,YAAA,CACA,kBAAA,CACA,SAAA,CACA,2BACA,CAEA,eACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WACA,CAEA,uHAIA,0BAAA,CACA,iDAAA,CACA,mBACA,CAEA,yFAEA,kBACA,CAMA,sHAEA,SACA,CAEA,6JAIA,YACA,CAEA,qIAGA,YACA,CAEA,yBACA,sBACA,CAEA,oCACA,eACA,CAGA,eACA,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,eACA,CAEA,iCACA,gCAAA,CACA,yBACA,CAEA,uCACA,gCACA,CAEA,iBACA,mBAAA,CACA,kBAAA,CACA,gCAAA,CACA,mBAAA,CACA,qBAAA,CACA,sBAAA,CACA,cAAA,CACA,uBACA,CAEA,uBACA,2BACA,CCj0GA,MACA,qCACA,CAIA,iBACA,kBACA,CAEA,yBACA,kBACA,CAEA,yCACA,gBACA,CAIA,yBACA,gCACA,kBACA,CACA,CAIA,mGAEA,mCACA,CAEA,+CACA,eACA,CAEA,oDACA,iBAAA,CACA,oBAAA,CACA,QAAA,CACA,wBAAA,CACA,iBACA,CAEA,2DACA,iBAAA,CACA,OAAA,CACA,UAAA,CACA,UAAA,CACA,+BACA,CAEA,sEACA,iBAAA,CACA,OAAA,CACA,UAAA,CACA,gBAAA,CACA,QACA,CAEA,0EACA,UAAA,CACA,WAAA,CACA,mBAAA,CAAA,gBACA,CAEA,oGACA,aACA,CAEA,+EACA,+BACA,CAEA,qEACA,aAAA,CACA,+BACA,CAEA,gEACA,mCACA,CAEA,mJAEA,iBAAA,CACA,UAAA,CACA,UAAA,CACA,4BAAA,CACA,wBACA,CAEA,mKAEA,4BACA,CAEA,yQAEA,aACA,CAEA,wiBAKA,aACA,CAEA,qEACA,+BAAA,CACA,wBAAA,CACA,oBACA,CAEA,yBACA,mGAEA,mCACA,CACA","file":"screen.css","sourcesContent":["/* Table of contents\n/* ------------------------------------------------------------\n\nThis is a development CSS file which is built to a minified\nproduction stylesheet in assets/built/screen.css\n\n1. Variables\n2. Fonts\n3. Resets\n4. Globals\n5. Layout\n6. Navigation\n 6.1. Navigation styles\n 6.2. Navigation layouts\n 6.3. Dropdown menu\n 6.4. Mobile menu\n7. Card\n8. Header\n 8.1. Magazine layout\n 8.2. Highlight layout\n 8.3. Classic layout\n9. CTA\n10. Featured posts\n11. Container\n 11.1. With sidebar\n 11.2. Without sidebar\n12. Post list\n 12.1. List style\n 12.2. Grid style\n 12.3. No image list\n13. Sidebar\n14. Post/page\n 14.1. Article\n 14.2. Page template\n 14.3. Page without header\n15. Content\n16. Cards\n17. Comments\n18. Recent posts\n19. Archive\n20. Design settings\n21. Footer\n 21.1. Footer styles\n 21.2. Footer bar\n 21.3. Footer signup\n 21.4. Social links\n22. Lightbox\n\n*/\n\n/* 1. Variables\n/* ---------------------------------------------------------- */\n\n:root {\n --color-white: #fff;\n --color-lighter-gray: rgb(0 0 0 / 0.05);\n --color-light-gray: #e6e6e6;\n --color-mid-gray: #ccc;\n --color-dark-gray: #444;\n --color-darker-gray: #15171a;\n --color-black: #000;\n --color-primary-text: var(--color-darker-gray);\n --color-secondary-text: rgb(0 0 0 / 0.55);\n --color-border: rgb(0 0 0 / 0.08);\n --color-dark-border: rgb(0 0 0 / 0.55);\n --font-sans: Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n --font-serif: \"EB Garamond\", Georgia, Times, serif;\n --font-serif-alt: Georgia, Times, serif;\n --font-mono: \"JetBrains Mono\", Menlo, Consolas, Monaco, \"Liberation Mono\", \"Lucida Console\", monospace;\n --container-width: 1320px;\n --container-gap: clamp(24px, 1.7032rem + 1.9355vw, 48px);\n --grid-gap: 42px;\n}\n\n:root.has-light-text,\n:is(.gh-navigation, .gh-footer).has-accent-color {\n --color-lighter-gray: rgb(255 255 255 / 0.1);\n --color-darker-gray: #fff;\n --color-secondary-text: rgb(255 255 255 / 0.64);\n --color-border: rgb(255 255 255 / 0.15);\n --color-dark-border: rgb(255 255 255 / 0.5);\n}\n\n/* 2. Fonts\n/* ---------------------------------------------------------- */\n\n/* Fonts are preloaded and defined in default.hbs to avoid layout shift */\n\n/* 3. Resets\n/* ---------------------------------------------------------- */\n\n*, *::before, *::after {\n box-sizing: border-box;\n}\n\n* {\n margin: 0;\n}\n\nhtml {\n font-size: 62.5%;\n}\n\nbody {\n line-height: 1.6;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nimg, picture, video, canvas, svg {\n display: block;\n height: auto;\n max-width: 100%;\n}\n\niframe {\n display: block;\n}\n\ninput, button, textarea, select {\n font: inherit;\n}\n\np, h1, h2, h3, h4, h5, h6 {\n overflow-wrap: break-word;\n}\n\nh1, h2, h3, h4, h5, h6 {\n line-height: 1.2;\n}\n\nsub, sup {\n line-height: 1;\n}\n\n/* 4. Globals\n/* ---------------------------------------------------------- */\n\nbody {\n font-family: var(--gh-font-body, var(--font-sans));\n font-size: 1.6rem;\n background-color: var(--background-color);\n color: var(--color-primary-text);\n}\n\nh1, h2, h3, h4, h5, h6 {\n font-family: var(--gh-font-heading, var(--font-sans));\n}\n\na {\n color: var(--color-darker-gray);\n text-decoration: none;\n}\n\na:hover {\n opacity: 0.8;\n}\n\n.gh-button {\n display: inline-flex;\n gap: 0.4em;\n align-items: center;\n justify-content: center;\n padding: 0.8em 1.4em;\n font-size: 1.5rem;\n font-weight: 600;\n letter-spacing: -0.004em;\n line-height: 1;\n color: var(--color-white);\n cursor: pointer;\n background-color: var(--ghost-accent-color);\n border: 0;\n border-radius: 100px;\n}\n\n.gh-button:hover {\n opacity: 0.95;\n}\n\n.gh-icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n color: var(--color-darker-gray);\n cursor: pointer;\n background-color: transparent;\n border: 0;\n outline: none;\n}\n\n.gh-icon-button:hover :is(svg, span) {\n opacity: 0.8;\n}\n\n.gh-icon-button svg {\n width: 20px;\n height: 20px;\n}\n\n.gh-form {\n display: flex;\n align-items: center;\n position: relative;\n max-width: 560px;\n width: 100%;\n height: 56px;\n font-size: 1.7rem;\n font-weight: 450;\n letter-spacing: -0.008em;\n border-radius: 40px;\n background-color: var(--color-lighter-gray);\n transition: background-color 0.2s ease;\n}\n\n.gh-form.success {\n pointer-events: none;\n}\n\n.gh-form.error {\n box-shadow: 0 0 0 1px red;\n}\n\n.gh-form:hover {\n background-color: rgb(0 0 0 / 0.065);\n}\n\n.has-light-text .gh-form:hover,\n.gh-footer.has-accent-color .gh-form:hover {\n background-color: rgb(255 255 255 / 0.15);\n}\n\n.gh-form-input {\n position: absolute;\n inset: 0;\n padding-inline: 26px;\n width: 100%;\n height: 100%;\n font-size: inherit;\n letter-spacing: inherit;\n line-height: 1.1;\n border: 0;\n border-radius: 40px;\n background-color: transparent;\n outline: none;\n transition: 0.3s ease-in-out;\n}\n\n.gh-form-input::placeholder,\nbutton.gh-form-input {\n color: rgb(0 0 0 / 0.3);\n}\n\n:is(.has-serif-title, .has-mono-title):not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-form-input,\nbody[class*=\" gh-font-heading\"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input,\nbody[class^=\"gh-font-heading\"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input {\n padding-inline: 20px;\n}\n\n.gh-form.gh-form.success .gh-form-input {\n opacity: 0.5;\n}\n\n.has-light-text .gh-form-input,\n.gh-footer.has-accent-color .gh-form-input {\n color: #fff;\n}\n\n.has-light-text .gh-form-input::placeholder,\n.has-light-text button.gh-form-input,\n.gh-footer.has-accent-color .gh-form-input::placeholder {\n color: rgb(255 255 255 / 0.55);\n}\n\n.gh-header.is-classic.has-image .gh-form-input {\n color: #15171a;\n}\n\n.gh-header.is-classic.has-image .gh-form-input::placeholder,\n.gh-header.is-classic.has-image button.gh-form-input,\n.gh-header.is-classic.has-image .gh-form > svg {\n color: rgb(0 0 0 / 0.5);\n}\n\nbutton.gh-form-input {\n padding-inline-start: 56px;\n text-align: left;\n color: var(--color-secondary-text);\n cursor: pointer;\n}\n\n:is(.has-serif-title,.has-mono-title):not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) button.gh-form-input,\nbody[class*=\" gh-font-heading\"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input,\nbody[class^=\"gh-font-heading\"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input {\n padding-inline-start: 50px;\n}\n\n.gh-form .gh-button {\n position: absolute;\n right: 6px;\n min-width: 132px;\n padding-inline: 24px;\n height: 44px;\n font-size: inherit;\n}\n\n.gh-form > svg {\n position: relative;\n left: 22px;\n width: 20px;\n height: 20px;\n color: var(--color-secondary-text);\n}\n\n:is(.has-serif-title,.has-mono-title):not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-form > svg {\n left: 16px;\n}\n\n.gh-form .gh-button svg {\n display: none;\n position: absolute;\n margin-top: 1px;\n}\n\n.gh-form .gh-button > span:last-child {\n display: none;\n}\n\n.gh-form:is(.loading, .success) .gh-button > span:first-child {\n visibility: hidden;\n}\n\n.gh-form.loading .gh-button svg:first-of-type {\n display: block;\n}\n\n.gh-form.success .gh-button > span:first-child {\n display: none;\n}\n\n.gh-form.success .gh-button > span:last-child {\n display: inline;\n}\n\n.gh-form [data-members-error] {\n position: absolute;\n top: 100%;\n margin-top: 10px;\n width: 100%;\n font-size: 1.4rem;\n line-height: 1.4;\n}\n\n@media (max-width: 576px) {\n .gh-form {\n font-size: 1.6rem;\n }\n\n .gh-form .gh-button {\n min-width: 104px;\n padding-inline: 12px;\n }\n}\n\n/* 5. Layout\n/* ---------------------------------------------------------- */\n\n.gh-viewport {\n position: relative;\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n}\n\n.gh-outer {\n padding: 0 max(4vmin, 20px);\n}\n\n.gh-outer .gh-outer {\n padding: 0;\n}\n\n.gh-inner {\n margin: 0 auto;\n max-width: var(--container-width);\n width: 100%;\n}\n\n.gh-main {\n flex-grow: 1;\n}\n\n.gh-canvas,\n.kg-width-full.kg-content-wide {\n --main: min(var(--content-width, 720px), 100% - var(--container-gap) * 2);\n --wide: minmax(0, calc((var(--container-width, 1200px) - var(--content-width, 720px)) / 2));\n --full: minmax(var(--container-gap), 1fr);\n\n display: grid;\n grid-template-columns:\n [full-start] var(--full)\n [wide-start] var(--wide)\n [main-start] var(--main) [main-end]\n var(--wide) [wide-end]\n var(--full) [full-end];\n}\n\n.gh-canvas > * {\n grid-column: main;\n}\n\n.kg-width-wide,\n.kg-content-wide > div {\n grid-column: wide;\n}\n\n.kg-width-full {\n grid-column: full;\n}\n\n/* 6. Navigation\n/* ---------------------------------------------------------- */\n\n.gh-navigation {\n height: 100px;\n font-size: 1.5rem;\n font-weight: 550;\n background-color: var(--background-color);\n color: var(--color-darker-gray);\n}\n\n.gh-navigation :is(.gh-navigation-logo, a:not(.gh-button), .gh-icon-button) {\n color: inherit;\n}\n\n.gh-navigation-inner {\n display: grid;\n grid-auto-flow: row dense;\n column-gap: 24px;\n align-items: center;\n height: 100%;\n}\n\n.gh-navigation-brand {\n line-height: 1;\n}\n\n.gh-navigation-logo {\n position: relative;\n font-family: var(--gh-font-heading, var(--font-sans));\n font-size: calc(2.4rem * var(--factor, 1));\n font-weight: 725;\n letter-spacing: -0.015em;\n white-space: nowrap;\n}\n\n.gh-navigation-logo img {\n max-height: 40px;\n}\n\n.gh-navigation-menu {\n display: flex;\n gap: 24px;\n align-items: center;\n}\n\n.gh-navigation .nav {\n display: inline-flex;\n gap: 28px;\n align-items: center;\n padding: 0;\n margin: 0;\n white-space: nowrap;\n list-style: none;\n}\n\n.nav a {\n display: inline-flex;\n align-items: center;\n gap: 0.35em;\n vertical-align: middle;\n}\n\n.nav-icon {\n display: block;\n width: 1em;\n height: 1em;\n flex: 0 0 auto;\n object-fit: contain;\n}\n\n.gh-navigation .gh-more-toggle {\n position: relative;\n margin: 0 -6px;\n font-size: inherit;\n text-transform: inherit;\n}\n\n.gh-navigation .gh-more-toggle svg {\n width: 24px;\n height: 24px;\n}\n\n.gh-navigation-actions {\n display: flex;\n gap: 24px;\n align-items: center;\n justify-content: flex-end;\n background-color: var(--background-color);\n}\n\n.gh-navigation.has-accent-color .gh-navigation-actions {\n background-color: var(--ghost-accent-color);\n}\n\n.gh-navigation-members {\n display: flex;\n gap: 20px;\n align-items: center;\n white-space: nowrap;\n}\n\n.gh-navigation-members .gh-button {\n font-size: inherit;\n font-weight: 600;\n}\n\n.gh-search {\n margin-right: -2px;\n margin-left: -2px;\n}\n\n@media (max-width: 767px) {\n .gh-navigation-logo {\n white-space: normal;\n }\n\n .gh-navigation-members {\n flex-direction: column-reverse;\n gap: 16px;\n width: 100%;\n }\n\n .gh-navigation-actions .gh-search {\n display: none;\n }\n}\n\n@media (min-width: 768px) {\n .gh-navigation-brand .gh-search {\n display: none;\n }\n\n .gh-navigation:not(.is-dropdown-loaded) .gh-navigation-menu .nav > li {\n opacity: 0;\n }\n}\n\n/* 6.1. Navigation styles */\n\n.gh-navigation.has-accent-color {\n background-color: var(--ghost-accent-color);\n}\n\n.gh-navigation.has-accent-color .gh-button {\n background-color: #fff;\n color: #15171a;\n}\n\n/* 6.2. Navigation layouts */\n\n/*\n======================================================================\nLOGO Home About Collection Author Portal Login Subscribe\n======================================================================\n*/\n\n.gh-navigation.is-left-logo .gh-navigation-inner {\n grid-template-columns: auto 1fr auto;\n}\n\n@media (min-width: 768px) {\n .gh-navigation.is-left-logo .gh-navigation-logo:not(:has(img)) {\n top: -2px;\n }\n}\n\n@media (min-width: 992px) {\n .gh-navigation.is-left-logo .gh-navigation-menu {\n margin-right: 100px;\n margin-left: 16px;\n }\n}\n\n/*\n======================================================================\nHome About Collection LOGO Login Subscribe\n======================================================================\n*/\n\n.gh-navigation.is-middle-logo .gh-navigation-inner {\n grid-template-columns: 1fr auto 1fr;\n}\n\n.gh-navigation.is-middle-logo .gh-navigation-brand {\n grid-column-start: 2;\n}\n\n.gh-navigation.is-middle-logo .gh-navigation-actions {\n gap: 28px;\n}\n\n@media (min-width: 992px) {\n .gh-navigation.is-middle-logo .gh-navigation-menu {\n margin-right: 64px;\n }\n}\n\n/*\n======================================================================\nSearch LOGO Login Subscribe\n Home About Collection Author Portal\n======================================================================\n*/\n\n.gh-navigation.is-stacked {\n position: relative;\n height: auto;\n}\n\n.gh-navigation.is-stacked .gh-navigation-inner {\n grid-template-columns: 1fr auto 1fr;\n}\n\n.gh-navigation.is-stacked .gh-navigation-brand {\n display: flex;\n align-items: center;\n grid-row-start: 1;\n grid-column-start: 2;\n min-height: 80px;\n}\n\n@media (max-width: 767px) {\n .gh-navigation.is-stacked .gh-navigation-brand {\n min-height: unset;\n }\n}\n\n@media (min-width: 992px) {\n .gh-navigation.is-stacked .gh-navigation-inner {\n padding: 0;\n }\n\n .gh-navigation.is-stacked .gh-navigation-brand {\n display: flex;\n align-items: center;\n height: 80px;\n }\n\n .gh-navigation.is-stacked .gh-navigation-menu {\n grid-row-start: 2;\n grid-column: 1 / 4;\n justify-content: center;\n height: 60px;\n margin: 0 48px;\n }\n\n .gh-navigation.is-stacked .gh-navigation-menu::before,\n .gh-navigation.is-stacked .gh-navigation-menu::after {\n position: absolute;\n top: 80px;\n left: 0;\n width: 100%;\n height: 1px;\n content: \"\";\n background-color: var(--color-border);\n }\n\n .gh-navigation.is-stacked .gh-navigation-menu::after {\n top: 140px;\n }\n\n .gh-navigation.is-stacked .gh-navigation-actions {\n grid-row-start: 1;\n grid-column: 1 / 4;\n justify-content: space-between;\n }\n\n .gh-navigation.is-stacked .gh-navigation-actions .gh-search {\n display: flex;\n gap: 10px;\n width: auto;\n }\n}\n\n/* 6.3. Dropdown menu */\n\n.gh-dropdown {\n position: absolute;\n top: 100%;\n right: -16px;\n z-index: 90;\n width: 200px;\n padding: 12px 0;\n margin-top: 24px;\n text-align: left;\n visibility: hidden;\n background-color: #fff;\n border-radius: 5px;\n box-shadow: 0 0 0 1px rgb(0 0 0 / 0.04), 0 7px 20px -5px rgb(0 0 0 / 0.15);\n opacity: 0;\n transition: opacity 0.3s, transform 0.2s;\n transform: translate3d(0, 6px, 0);\n}\n\n.gh-dropdown.is-left {\n right: auto;\n left: -16px;\n}\n\n.is-dropdown-mega .gh-dropdown {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-auto-flow: column;\n column-gap: 40px;\n width: auto;\n padding: 20px 32px;\n}\n\n.is-dropdown-open .gh-dropdown {\n visibility: visible;\n opacity: 1;\n transform: translateY(0);\n}\n\n.gh-dropdown li a {\n display: block;\n padding: 7px 20px;\n line-height: 1.5;\n white-space: normal;\n color: #15171a !important;\n}\n\n.is-dropdown-mega .gh-dropdown li a {\n padding: 8px 0;\n}\n\n/* 6.4. Mobile menu */\n\n.gh-burger {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n display: none;\n margin-right: -7px;\n margin-left: 4px;\n}\n\n.gh-burger svg {\n width: 24px;\n height: 24px;\n}\n\n.gh-burger svg:last-child {\n display: none;\n}\n\n.is-open .gh-burger svg:first-child {\n display: none;\n}\n\n.is-open .gh-burger svg:last-child {\n display: block;\n}\n\n@media (max-width: 767px) {\n .gh-burger {\n display: flex;\n }\n\n #gh-navigation {\n height: 64px;\n }\n\n #gh-navigation .gh-navigation-inner {\n grid-template-rows: auto 1fr auto;\n grid-template-columns: 1fr;\n gap: 48px;\n }\n\n #gh-navigation .gh-navigation-brand {\n display: grid;\n grid-template-columns: 1fr auto auto;\n grid-column-start: 1;\n align-items: center;\n height: 64px;\n }\n\n #gh-navigation .gh-navigation-logo {\n font-size: 2.2rem;\n }\n\n #gh-navigation .gh-navigation-menu,\n #gh-navigation .gh-navigation-actions {\n position: fixed;\n justify-content: center;\n visibility: hidden;\n opacity: 0;\n }\n\n #gh-navigation .gh-navigation-menu {\n transition: none;\n transform: translateY(0);\n }\n\n #gh-navigation .nav {\n gap: 20px;\n align-items: center;\n line-height: 1.4;\n }\n\n #gh-navigation .nav a {\n font-size: 1.75rem;\n font-weight: 600;\n text-transform: none;\n }\n\n #gh-navigation .nav li {\n opacity: 0;\n transform: translateY(-4px);\n }\n\n #gh-navigation .gh-navigation-actions {\n text-align: center;\n }\n\n #gh-navigation :is(.gh-button, a[data-portal=\"signin\"]) {\n opacity: 0;\n transform: translateY(8px);\n }\n\n #gh-navigation .gh-button {\n width: 100%;\n font-size: 1.75rem;\n text-transform: none;\n }\n\n #gh-navigation a[data-portal=\"signin\"] {\n font-size: 1.75rem;\n }\n\n #gh-main {\n transition: opacity 0.4s;\n }\n\n .is-open#gh-navigation {\n position: fixed;\n inset: 0;\n z-index: 3999999;\n height: 100%;\n overflow-y: scroll;\n -webkit-overflow-scrolling: touch;\n }\n\n .is-open#gh-navigation .gh-navigation-menu,\n .is-open#gh-navigation .gh-navigation-actions {\n position: static;\n visibility: visible;\n opacity: 1;\n }\n\n .is-open#gh-navigation .nav {\n display: flex;\n flex-direction: column;\n }\n\n .is-open#gh-navigation .nav li {\n opacity: 1;\n transition: transform 0.2s, opacity 0.2s;\n transform: translateY(0);\n }\n\n .is-open#gh-navigation .gh-navigation-actions {\n position: sticky;\n right: 0;\n bottom: 0;\n left: 0;\n display: inline-flex;\n flex-direction: column;\n gap: 12px;\n align-items: center;\n padding: var(--container-gap) 0;\n }\n\n .is-open#gh-navigation :is(.gh-button, a[data-portal=\"signin\"]) {\n opacity: 1;\n transition: transform 0.4s, opacity 0.4s;\n transition-delay: 0.2s;\n transform: translateY(0);\n }\n\n .is-open#gh-navigation a[data-portal=\"signin\"] {\n transition-delay: 0.4s;\n }\n\n .is-open#gh-main {\n opacity: 0;\n }\n}\n\n/* 7. Card\n/* ---------------------------------------------------------- */\n\n.gh-card {\n position: relative;\n}\n\n.gh-card-link {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.gh-card-link:hover {\n opacity: 1;\n}\n\n.gh-card-image {\n position: relative;\n flex-shrink: 0;\n aspect-ratio: 16 / 9;\n}\n\n.gh-card-image img {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.gh-card-wrapper {\n flex-grow: 1;\n}\n\n.gh-card-tag {\n display: none;\n margin-bottom: 4px;\n font-size: 1.2rem;\n font-weight: 500;\n letter-spacing: 0.01em;\n text-transform: uppercase;\n}\n\n.gh-card-title {\n font-size: calc(1.9rem * var(--factor, 1));\n font-weight: 725;\n letter-spacing: -0.014em;\n line-height: 1.3;\n}\n\n.gh-card-link:hover .gh-card-title {\n opacity: 0.8;\n}\n\n.gh-card-excerpt {\n display: -webkit-box;\n overflow-y: hidden;\n margin-top: 8px;\n font-size: 1.45rem;\n line-height: 1.4;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.gh-card-meta {\n align-items: center;\n padding-bottom: 1px;\n font-size: 1.25rem;\n font-weight: 500;\n line-height: 1.4;\n letter-spacing: -0.004em;\n color: var(--color-secondary-text);\n}\n\n.gh-card-meta svg {\n position: relative;\n top: 1px;\n display: inline-block;\n width: 12px;\n height: 12px;\n margin-right: 2px;\n}\n\n.gh-card-meta:not(:empty) {\n margin-top: 8px;\n}\n\n.gh-card-author + .gh-card-date::before {\n content: \"—\";\n margin-right: 4px;\n}\n\n/* 8. Header\n/* ---------------------------------------------------------- */\n\n.gh-header {\n position: relative;\n margin-top: 40px;\n}\n\n.gh-header-inner {\n position: relative;\n overflow: hidden;\n}\n\n/* 8.1. Magazine layout */\n\n.gh-header.is-magazine .gh-header-inner {\n display: grid;\n grid-template-columns: repeat(16, 1fr);\n gap: var(--grid-gap);\n}\n\n.gh-header.is-magazine .gh-header-inner > div {\n display: flex;\n flex-direction: column;\n gap: var(--grid-gap);\n grid-row: 1;\n}\n\n.gh-header.is-magazine .gh-header-left {\n grid-column: 1 / span 4;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card {\n position: relative;\n grid-column: 5 / span 8;\n}\n\n.gh-header.is-magazine .gh-header-right {\n grid-column: 13 / -1;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-link {\n gap: 28px;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-image {\n aspect-ratio: 1.618033;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-tag {\n display: block;\n margin-bottom: 12px;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-title {\n font-size: clamp(2.8rem, 1.36vw + 2.25rem, 4rem);\n font-weight: 700;\n line-height: 1.1;\n letter-spacing: -0.022em;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-excerpt {\n margin-top: clamp(12px, 0.45vw + 10.18px, 16px);\n font-size: 1.8rem;\n letter-spacing: -0.02em;\n max-width: 90%;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-meta:not(:empty) {\n margin-top: 14px;\n}\n\n.gh-header.is-magazine :is(.gh-header-left, .gh-header-right) .gh-card:last-child .gh-card-image {\n display: none;\n}\n\n.gh-header.is-magazine .gh-header-inner > div .gh-card-excerpt {\n display: none;\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card::before,\n.gh-header.is-magazine .gh-header-inner > .gh-card::after {\n position: absolute;\n top: 0;\n left: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n}\n\n.gh-header.is-magazine .gh-header-inner > .gh-card::after {\n right: calc(var(--grid-gap) / -2);\n left: auto;\n}\n\n.gh-header.is-magazine .gh-header-inner > div .gh-card + .gh-card::before {\n position: absolute;\n top: calc(var(--grid-gap) / -2);\n left: 0;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n}\n\n@media (max-width: 1199px) {\n .gh-header.is-magazine .gh-header-inner {\n grid-template-columns: repeat(12, 1fr);\n }\n\n .gh-header.is-magazine .gh-header-inner > .gh-card {\n grid-column: 1 / span 8;\n }\n\n .gh-header.is-magazine .gh-header-left {\n grid-column: 9 / -1;\n }\n\n .gh-header.is-magazine .gh-header-inner > div.gh-header-right {\n grid-column: 1 / -1;\n grid-row: 2;\n flex-direction: row;\n }\n\n .gh-header.is-magazine .gh-header-right .gh-card {\n flex: 1;\n }\n\n .gh-header.is-magazine .gh-header-right .gh-card:last-child .gh-card-image {\n display: block;\n }\n\n .gh-header.is-magazine .gh-header-right {\n position: relative;\n }\n\n .gh-header.is-magazine .gh-header-right::before {\n position: absolute;\n top: calc(var(--grid-gap) / -2);\n left: 0;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n }\n\n .gh-header.is-magazine .gh-header-right .gh-card::before {\n display: none;\n }\n\n .gh-header.is-magazine .gh-header-right .gh-card::after {\n position: absolute;\n top: 0;\n right: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n }\n}\n\n@media (max-width: 991px) {\n .gh-header.is-magazine .gh-header-left .gh-card:nth-child(2) .gh-card-image {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .gh-header.is-magazine .gh-header-inner {\n display: flex;\n flex-direction: column;\n gap: var(--grid-gap);\n }\n\n .gh-header.is-magazine .gh-header-inner > div.gh-header-right {\n flex-direction: column;\n }\n\n .gh-header.is-magazine .gh-card-image {\n display: block !important;\n }\n\n .gh-header.is-magazine .gh-card::before {\n display: block !important;\n position: absolute;\n top: calc(var(--grid-gap) / -2);\n left: 0;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n }\n}\n\n/* 8.2. Highlight layout */\n\n.gh-header.is-highlight .gh-header-inner {\n display: grid;\n grid-template-columns: repeat(16, 1fr);\n gap: var(--grid-gap);\n}\n\n.gh-header.is-highlight .gh-header-left {\n position: relative;\n grid-column: span 8;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card {\n grid-column: span 8;\n grid-row: span 3;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card .gh-card-link {\n gap: 28px;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card .gh-card-image {\n aspect-ratio: 3 / 2;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card .gh-card-tag {\n display: block;\n margin-bottom: 12px;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card .gh-card-title {\n font-size: clamp(2.8rem, 1.36vw + 2.25rem, 4rem);\n font-weight: 700;\n line-height: 1.1;\n letter-spacing: -0.022em;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card .gh-card-excerpt {\n margin-top: clamp(12px, 0.45vw + 10.18px, 16px);\n font-size: 1.8rem;\n}\n\n.gh-header.is-highlight .gh-header-left .gh-card .gh-card-meta:not(:empty) {\n margin-top: 12px;\n}\n\n.gh-header.is-highlight .gh-header-middle {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: var(--grid-gap);\n grid-column: 9 / span 4;\n}\n\n.gh-header.is-highlight .gh-header-middle .gh-card:last-child .gh-card-image {\n display: none;\n}\n\n.gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt {\n display: none;\n}\n\n.gh-header.is-highlight .gh-header-right {\n grid-column: 13 / -1;\n}\n\n.gh-header.is-highlight .gh-featured {\n margin-top: 0;\n padding: 0;\n}\n\n.gh-header.is-highlight .gh-featured-feed {\n display: flex;\n flex-direction: column;\n}\n\n.gh-header.is-highlight .gh-featured-feed .gh-card-title {\n font-size: clamp(1.4rem, 0.23vw + 1.31rem, 1.6rem);\n}\n\n.gh-header.is-highlight .gh-header-left::after,\n.gh-header.is-highlight .gh-header-middle::after {\n position: absolute;\n top: 0;\n right: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n}\n\n.gh-header.is-highlight .gh-card::before {\n position: absolute;\n top: calc(var(--grid-gap) / -2);\n left: 0;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n}\n\n.gh-header.is-highlight .gh-featured .gh-card:first-child::before {\n display: none;\n}\n\n@media (max-width: 1199px) {\n .gh-header.is-highlight .gh-header-inner {\n grid-template-columns: repeat(9, 1fr);\n }\n\n .gh-header.is-highlight .gh-header-left {\n grid-column: span 6;\n }\n\n .gh-header.is-highlight .gh-header-middle {\n grid-column: 7 / -1;\n }\n\n .gh-header.is-highlight .gh-header-right {\n grid-column: 1 / -1;\n }\n\n .gh-header.is-highlight .gh-featured-feed {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n }\n\n .gh-header.is-highlight .gh-featured-feed .gh-card:before {\n width: calc(100% + var(--grid-gap));\n }\n\n .gh-header.is-highlight .gh-featured-feed .gh-card::after {\n position: absolute;\n top: 0;\n left: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n }\n}\n\n@media (max-width: 991px) {\n .gh-header.is-highlight .gh-header-middle .gh-card:nth-child(2) .gh-card-image {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .gh-header.is-highlight .gh-header-inner {\n display: flex;\n flex-direction: column;\n }\n\n .gh-header.is-highlight .gh-featured-feed {\n display: flex;\n /* gap: var(--grid-gap); */\n }\n\n .gh-header.is-highlight .gh-card-image {\n display: block !important;\n }\n\n .gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt {\n display: -webkit-box;\n }\n}\n\n/* 8.3. Classic layout */\n\n.gh-header.is-classic {\n display: flex;\n margin-top: 0;\n padding-block: 160px;\n}\n\n.gh-header.is-classic .gh-header-inner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 48px;\n overflow: unset;\n margin: auto;\n max-width: 1020px;\n text-align: center;\n}\n\n.gh-header.is-classic .gh-header-title {\n font-size: calc(clamp(3rem, 1.82vw + 2.27rem, 4.6rem) * var(--factor, 1));\n line-height: 1.1;\n letter-spacing: -0.028em;\n}\n\n.gh-header.is-classic.has-image {\n margin-top: 0;\n}\n\n.gh-header.is-classic.has-image::before {\n position: absolute;\n inset: 0;\n content: \"\";\n opacity: 0.3;\n background-color: var(--color-black);\n transition: opacity 1.5s ease;\n}\n\n.gh-header.is-classic.has-image .gh-header-inner {\n color: #fff;\n}\n\n.gh-header.is-classic.has-image .gh-header-image {\n position: absolute;\n inset: 0;\n z-index: -1;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.gh-header.is-classic.has-image .gh-form {\n background-color: #fff;\n}\n\n/* 9. CTA\n/* ---------------------------------------------------------- */\n\n.gh-cta {\n display: none;\n margin-top: max(4vw, 40px);\n}\n\n.gh-header:is(.is-highlight, .is-magazine) + .gh-cta {\n display: block;\n}\n\n.gh-cta-inner {\n position: relative;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 36px;\n padding: clamp(48px, 3.64vw + 33.45px, 80px) clamp(40px, 2.73vw + 29.09px, 64px);\n text-align: center;\n background-color: var(--color-lighter-gray);\n}\n\n.gh-cta-content {\n max-width: 640px;\n}\n\n.gh-cta-title {\n font-size: clamp(2.8rem,1.36vw + 2.25rem,4rem);\n font-weight: 700;\n line-height: 1.1;\n letter-spacing: -0.021em;\n}\n\n.gh-cta-description {\n margin-top: 12px;\n font-size: 1.8rem;\n line-height: 1.4;\n letter-spacing: -0.015em;\n}\n\n/* 10. Featured posts\n/* ---------------------------------------------------------- */\n\n.gh-featured {\n margin-top: 100px;\n}\n\n.gh-navigation + .gh-featured {\n margin-top: 64px;\n}\n\n.gh-header.is-classic:not(.has-image) + .gh-featured {\n margin-top: 0;\n}\n\n.gh-featured-inner {\n overflow: hidden;\n}\n\n.gh-featured-title {\n margin-bottom: 20px;\n padding-bottom: 12px;\n font-size: 1.2rem;\n font-weight: 550;\n letter-spacing: 0.025em;\n text-transform: uppercase;\n border-bottom: 1px solid var(--color-border);\n}\n\n.gh-featured-feed {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--grid-gap);\n}\n\n.gh-featured-feed .gh-card {\n container-type: inline-size;\n container-name: featured-card;\n}\n\n.gh-featured-feed .gh-card-link {\n display: flex;\n flex-direction: row-reverse;\n align-items: flex-start;\n}\n\n.gh-featured-feed .gh-card-image {\n width: 72px;\n aspect-ratio: 1;\n}\n\n@container featured-card (width < 240px) {\n .gh-featured-feed .gh-card-image {\n display: none;\n }\n}\n\n@container featured-card (240px <= width <= 270px) {\n .gh-featured-feed .gh-card-image {\n width: 64px;\n }\n}\n\n.gh-featured-feed .gh-card-wrapper {\n container-type: inline-size;\n container-name: featured-card-wrapper;\n}\n\n.gh-featured-feed .gh-card-title {\n font-size: 1.6rem;\n font-weight: 650;\n letter-spacing: -0.011em;\n}\n\n@container featured-card-wrapper (width < 170px) {\n .gh-featured-feed .gh-card-title {\n font-size: 1.6rem;\n }\n}\n\n.gh-featured-feed .gh-card-excerpt {\n display: none;\n}\n\n.gh-featured-feed .gh-card-meta:not(:empty) {\n margin-top: 8px;\n}\n\n.gh-featured-feed .gh-card::before {\n position: absolute;\n top: 0;\n left: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n}\n\n@media (max-width: 1199px) {\n .gh-viewport > .gh-featured .gh-featured-feed {\n grid-template-columns: repeat(3, 1fr);\n }\n\n .gh-viewport > .gh-featured .gh-featured-feed .gh-card:nth-child(4) {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .gh-viewport > .gh-featured .gh-featured-feed {\n display: flex;\n flex-direction: column;\n }\n}\n\n/* 11. Container\n/* ---------------------------------------------------------- */\n\n.gh-container {\n flex-grow: 1;\n margin-top: 64px;\n}\n\n.gh-container-inner {\n display: grid;\n grid-template-columns: repeat(16, 1fr);\n column-gap: var(--grid-gap);\n}\n\n:is(.gh-featured, .gh-cta) + .gh-container {\n margin-top: max(4vw, 40px);\n}\n\n.gh-header.is-classic:not(.has-image) + .gh-container {\n margin-top: 0;\n}\n\n.gh-navigation + .gh-container .gh-container-title,\n:is(.paged, .tag-template, .author-template) .gh-container:not(.has-sidebar) .gh-container-title {\n display: none;\n}\n\n.gh-more {\n display: none;\n grid-column: 1 / -1;\n margin-top: 48px;\n font-size: calc(1.9rem * var(--factor, 1));\n font-weight: 725;\n letter-spacing: -0.014em;\n}\n\n.gh-container.has-sidebar .gh-more {\n grid-column: span 12;\n}\n\n.home-template .gh-feed:has(> :nth-child(12):last-child) ~ .gh-more {\n display: block;\n}\n\n.gh-more a {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.gh-more svg {\n margin-top: -1px;\n width: 18px;\n height: 18px;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-more svg {\n margin-top: 0;\n}\n\n/* 11.1. With sidebar */\n\n.gh-container.has-sidebar .gh-main {\n grid-column: 1 / span 12;\n position: relative;\n}\n\n.gh-container.has-sidebar .gh-sidebar {\n grid-column: 13 / -1;\n}\n\n.gh-container.has-sidebar .gh-main::after {\n position: absolute;\n top: 0;\n right: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n}\n\n/* 11.2. Without sidebar */\n\n.gh-container:not(.has-sidebar) :is(.gh-container-title, .gh-main, .gh-more) {\n grid-column: 3 / span 12;\n}\n\n.gh-container.is-list.no-image:not(.has-sidebar) :is(.gh-container-title, .gh-main, .gh-more) {\n grid-column: 4 / span 10;\n}\n\n.gh-header:is(.is-highlight, .is-magazine) ~ .gh-container.is-grid:not(.has-sidebar) :is(.gh-container-title, .gh-main, .gh-more) {\n grid-column: 1 / -1;\n}\n\n@media (max-width: 1199px) {\n .gh-container-inner {\n display: block;\n overflow: hidden;\n }\n\n .gh-container.has-sidebar .gh-sidebar {\n display: none;\n }\n}\n\n/* 12. Post list\n/* ---------------------------------------------------------- */\n\n.gh-container-title {\n grid-column: 1 / -1;\n margin-bottom: calc(var(--grid-gap) / 2);\n padding-bottom: 12px;\n font-size: 1.2rem;\n font-weight: 550;\n letter-spacing: 0.025em;\n text-transform: uppercase;\n border-bottom: 1px solid var(--color-border);\n}\n\n.gh-container:not(:has(.gh-card)) .gh-container-title {\n display: none;\n}\n\n.gh-container .gh-feed {\n gap: var(--grid-gap);\n}\n\n.gh-container .gh-card-meta:not(:empty) {\n margin-top: 12px;\n}\n\n/* 12.1. List style */\n\n.gh-container.is-list .gh-feed {\n display: flex;\n flex-direction: column;\n container-type: inline-size;\n container-name: list-feed;\n}\n\n.gh-container.is-list .gh-card-link {\n flex-direction: row;\n align-items: center;\n gap: 24px;\n}\n\n.gh-container.is-list .no-image .gh-card-link {\n padding-block: 20px;\n}\n\n.gh-container.is-list .gh-card-image {\n flex-shrink: 0;\n width: 220px;\n aspect-ratio: 1.618033;\n}\n\n@container list-feed (width < 600px) {\n .gh-container.is-list .gh-card-image {\n width: 160px;\n }\n}\n\n.gh-container.is-list .gh-card:not(.no-image) .gh-card-wrapper {\n max-width: 600px;\n}\n\n.gh-container.is-list .gh-card-title {\n --factor: 1.05;\n}\n\n.gh-container.is-list .no-image .gh-card-title {\n --factor: 1.2;\n}\n\n.gh-container.is-list .gh-card-excerpt {\n margin-top: 6px;\n}\n\n.gh-container.is-list .gh-card + .gh-card::before {\n position: absolute;\n top: calc(var(--grid-gap) / -2);\n left: 0;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n}\n\n.home-template .gh-container.is-list .gh-card:first-child:before {\n display: none;\n}\n\n@media (max-width: 767px) {\n .gh-container.is-list .gh-card-link {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .gh-container.is-list .gh-card-image {\n width: 100%;\n }\n}\n\n/* 12.2. Grid style */\n\n.gh-container.is-grid .gh-feed {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(248px, 1fr));\n row-gap: calc(var(--grid-gap) * 1.5);\n overflow: hidden;\n}\n\n.gh-container.is-grid .gh-card::before {\n position: absolute;\n top: calc(var(--grid-gap) / -2);\n right: calc(var(--grid-gap) / -2);\n left: calc(var(--grid-gap) / -2);\n content: \"\";\n height: 1px;\n background-color: var(--color-border);\n}\n\n.gh-container.is-grid .gh-card::after {\n position: absolute;\n top: 0;\n left: calc(var(--grid-gap) / -2);\n content: \"\";\n width: 1px;\n height: 100%;\n background-color: var(--color-border);\n}\n\n@media (max-width: 767px) {\n .gh-container.is-grid .gh-feed {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 576px) {\n .gh-container.is-grid .gh-feed {\n display: flex;\n flex-direction: column;\n }\n}\n\n/* 12.3. No image list */\n\n.gh-container.is-list.no-image .gh-card-image {\n display: none;\n}\n\n/* 13. Sidebar\n/* ---------------------------------------------------------- */\n\n.gh-sidebar-inner {\n position: sticky;\n top: calc(var(--grid-gap) / 2);\n}\n\n.gh-sidebar-title {\n grid-column: 1 / -1;\n margin-bottom: calc(var(--grid-gap) / 2);\n padding-bottom: 12px;\n font-size: 1.2rem;\n font-weight: 550;\n letter-spacing: 0.025em;\n text-transform: uppercase;\n border-bottom: 1px solid var(--color-border);\n}\n\n.gh-about {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 48px 24px;\n min-height: 380px;\n text-align: center;\n background-color: var(--color-lighter-gray);\n}\n\n.gh-about-icon {\n margin-bottom: 24px;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n}\n\n.gh-about-title {\n font-size: calc(2.4rem * var(--factor, 1));\n font-weight: 700;\n letter-spacing: -0.019em;\n}\n\n.gh-about-description {\n margin-top: 12px;\n font-size: 1.45rem;\n line-height: 1.4;\n}\n\n.gh-about .gh-button {\n margin-top: 32px;\n}\n\n.gh-recommendations {\n margin-top: 48px;\n}\n\n.gh-recommendations .recommendations {\n display: flex;\n flex-direction: column;\n gap: 26px;\n margin: 0;\n padding: 0;\n list-style-type: none;\n}\n\n.gh-recommendations .recommendation:first-child {\n margin-top: 4px;\n}\n\n.gh-recommendations .recommendation a {\n display: grid;\n grid-template-columns: 24px auto;\n gap: 4px 12px;\n}\n\n.gh-recommendations .recommendation a:hover {\n opacity: 1;\n}\n\n.gh-recommendations .recommendation-favicon {\n grid-row: span 2;\n width: 100%;\n border-radius: 4px;\n}\n\n.gh-recommendations .recommendation-title {\n margin-top: -2px;\n font-size: 1.5rem;\n font-weight: 650;\n letter-spacing: -0.009em;\n}\n\n.gh-recommendations .recommendation a:hover .recommendation-title {\n opacity: 0.8;\n}\n\n.gh-recommendations .recommendation-url {\n order: 1;\n overflow: hidden;\n font-size: 1.4rem;\n line-height: 1.25;\n color: var(--color-secondary-text);\n text-overflow: ellipsis;\n}\n\n.gh-recommendations .recommendation-description {\n display: -webkit-box;\n display: none;\n overflow-y: hidden;\n grid-column: 2;\n font-size: 1.4rem;\n line-height: 1.4;\n color: var(--color-secondary-text);\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.gh-recommendations button {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n margin-top: 24px;\n padding: 0;\n cursor: pointer;\n font-size: 1.2rem;\n font-weight: 550;\n letter-spacing: 0.025em;\n text-transform: uppercase;\n background-color: transparent;\n border: 0;\n color: var(--color-darker-gray);\n}\n\n.gh-recommendations button svg {\n margin-top: -1px;\n width: 12px;\n}\n\n.gh-recommendations button:hover {\n opacity: 0.8;\n}\n\n/* 14. Post/page\n/* ---------------------------------------------------------- */\n\n/* 14.1. Article */\n\n.gh-article {\n --container-width: 1120px;\n\n word-break: break-word;\n}\n\n.gh-article-header {\n margin: clamp(40px, 3.64vw + 25.45px, 72px) 0 40px;\n}\n\n.gh-article-tag {\n margin-bottom: 12px;\n font-size: 1.3rem;\n font-weight: 500;\n letter-spacing: 0.01em;\n text-transform: uppercase;\n color: var(--ghost-accent-color);\n}\n\n.gh-article-title {\n font-size: calc(clamp(3.4rem, 1.36vw + 2.85rem, 4.6rem) * var(--factor, 1));\n line-height: 1.1;\n letter-spacing: -0.022em;\n}\n\n.gh-article-excerpt {\n margin-top: clamp(12px, 0.45vw + 10.18px, 16px);\n max-width: 720px;\n font-size: clamp(1.7rem, 0.23vw + 1.61rem, 1.9rem);\n line-height: 1.45;\n letter-spacing: -0.018em;\n}\n\n.gh-article-meta {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-left: 6px;\n}\n\n.gh-article-author-image {\n display: flex;\n margin-right: 8px;\n}\n\n.gh-article-author-image a {\n position: relative;\n margin: 0 -8px;\n width: 56px;\n height: 56px;\n overflow: hidden;\n background-color: var(--color-light-gray);\n border-radius: 50%;\n border: 3px solid var(--background-color);\n}\n\n.gh-article-author-image a:first-child {\n z-index: 10;\n}\n\n.gh-article-author-image a:nth-child(2) {\n z-index: 9;\n}\n\n.gh-article-author-image a:nth-child(3) {\n z-index: 8;\n}\n\n.gh-article-author-image :is(img, svg) {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.gh-article-meta-wrapper {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.gh-article-author-name {\n font-size: 1.6rem;\n font-weight: 650;\n letter-spacing: -0.013em;\n}\n\n.gh-article-meta-content {\n font-size: 1.35rem;\n font-weight: 500;\n line-height: 1.2;\n letter-spacing: -0.006em;\n color: var(--color-secondary-text);\n}\n\n.gh-article-image {\n grid-column: wide;\n margin-top: 40px;\n}\n\n.gh-article-image img {\n width: 100%;\n}\n\n/* 14.2. Page template */\n\n.page-template .gh-article-header {\n margin-block: 72px 32px;\n}\n\n/* 14.3. Page without header */\n\n.page-template .gh-content:only-child > *:first-child:not(.kg-width-full) {\n margin-top: 64px;\n}\n\n.page-template .gh-content > *:last-child:not(.kg-width-full) {\n margin-bottom: 6vw;\n}\n\n.page-template .gh-footer {\n margin-top: 0;\n}\n\n/* 15. Content\n/* ---------------------------------------------------------- */\n\n/* Content refers to styling all page and post content that is\ncreated within the Ghost editor. The main content handles\nheadings, text, images and lists. We deal with cards lower down. */\n\n.gh-content {\n font-size: var(--content-font-size, 1.7rem);\n letter-spacing: -0.01em;\n}\n\n/* Default vertical spacing */\n.gh-content > * + * {\n margin-top: calc(28px * var(--content-spacing-factor, 1));\n margin-bottom: 0;\n}\n\n/* Remove space between full-width cards */\n.gh-content > .kg-width-full + .kg-width-full:not(.kg-width-full.kg-card-hascaption + .kg-width-full) {\n margin-top: 0;\n}\n\n/* Add back a top margin to all headings,\nunless a heading is the very first element in the post content */\n.gh-content > [id]:not(:first-child) {\n margin-top: calc(56px * var(--content-spacing-factor, 1));\n}\n\n/* Add drop cap setting */\n.post-template .gh-content.drop-cap > p:first-of-type:first-letter {\n margin :0 0.2em 0em 0;\n font-size: 3.1em;\n float:left;\n line-height: 1;\n margin-left: -1px;\n font-weight: 700;\n}\n\n.has-serif-body.post-template:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content.drop-cap > p:first-of-type:first-letter {\n font-size: 3.2em;\n}\n\n/* Add a small margin between a heading and paragraph after it */\n.gh-content > [id] + p {\n margin-top: calc(12px * var(--content-spacing-factor, 1));\n}\n\n/* A larger margin before/after dividers, blockquotes and embeds */\n.gh-content > :is(hr, blockquote, iframe) {\n position: relative;\n margin-top: calc(48px * var(--content-spacing-factor, 1)) !important;\n}\n\n.gh-content > :is(hr, blockquote, iframe) + * {\n margin-top: calc(48px * var(--content-spacing-factor, 1)) !important;\n}\n\n/* Now the content typography styles */\n.gh-content h1 {\n font-size: calc(2.2em * var(--factor, 1));\n letter-spacing: -0.02em;\n}\n\n.gh-content h2 {\n font-size: calc(1.6em * var(--factor, 1));\n letter-spacing: -0.02em;\n}\n\n.gh-content h3 {\n font-size: calc(1.3em * var(--factor, 1));\n letter-spacing: -0.017em;\n}\n\n.gh-content a {\n color: var(--ghost-accent-color);\n text-decoration: underline;\n}\n\n.gh-content .kg-callout-card .kg-callout-text,\n.gh-content .kg-toggle-card .kg-toggle-content > :is(ul, ol, p) {\n font-size: 0.95em;\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content > blockquote,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content > ol,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content > ul,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content > dl,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content > p,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content .kg-callout-text,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content .kg-toggle-content > ol,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content .kg-toggle-content > ul,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-content .kg-toggle-content > p {\n font-family: var(--font-serif-alt);\n}\n\n.gh-content :is(ul, ol) {\n padding-left: 28px;\n}\n\n.gh-content :is(li + li, li :is(ul, ol)) {\n margin-top: 8px;\n}\n\n.gh-content ol ol li {\n list-style-type: lower-alpha;\n}\n\n.gh-content ol ol ol li {\n list-style-type: lower-roman;\n}\n\n.gh-content hr {\n width: 100%;\n height: 1px;\n background-color: var(--color-border);\n border: 0;\n}\n\n.gh-content .gh-table {\n overflow-x: scroll;\n -webkit-overflow-scrolling: touch;\n}\n\n.gh-content .gh-table table {\n width: 100%;\n font-family: var(--font-sans);\n font-size: 1.5rem;\n white-space: nowrap;\n vertical-align: top;\n border-spacing: 0;\n border-collapse: collapse;\n}\n\n.gh-content .gh-table table th {\n font-size: 1.2rem;\n font-weight: 700;\n color: var(--color-darkgrey);\n text-align: left;\n text-transform: uppercase;\n letter-spacing: 0.2px;\n}\n\n.gh-content .gh-table table :is(th, td),\n.gh-content .gh-table table td {\n padding: 6px 12px;\n border-bottom: 1px solid var(--color-border);\n}\n\n.gh-content .gh-table table :is(th, td):first-child {\n padding-left: 0;\n}\n\n.gh-content .gh-table table :is(th, td):last-child {\n padding-right: 0;\n}\n\n.gh-content pre {\n overflow: auto;\n padding: 16px;\n font-size: 1.5rem;\n line-height: 1.5em;\n background: var(--color-lighter-gray);\n border-radius: 6px;\n font-family: var(--font-mono);\n}\n\n.gh-content :not(pre) > code {\n vertical-align: baseline;\n padding: 0.15em 0.4em;\n font-weight: 400;\n font-size: 0.95em;\n line-height: 1em;\n background: var(--color-lighter-gray);\n border-radius: 0.25em;\n font-family: var(--font-mono);\n}\n\n/* 16. Cards\n/* ---------------------------------------------------------- */\n\n/* Add extra margin before/after any cards, except for when immediately preceeded by a heading */\n\n.gh-content :not(.kg-card):not(table):not([id]) + :is(.kg-card, table) {\n margin-top: calc(48px * var(--content-spacing-factor, 1));\n}\n\n.gh-content :is(.kg-card, table) + :not(.kg-card):not(table):not([id]) {\n margin-top: calc(48px * var(--content-spacing-factor, 1));\n}\n\n.gh-content :not(.kg-card):not([id]) + .kg-card.kg-width-full {\n margin-top: calc(68px * var(--content-spacing-factor, 1));\n}\n\n.gh-content .kg-card.kg-width-full + :not(.kg-card):not([id]) {\n margin-top: calc(68px * var(--content-spacing-factor, 1));\n}\n\n/* Image */\n\n.kg-image {\n margin-right: auto;\n margin-left: auto;\n}\n\n/* Embed */\n\n.kg-embed-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n}\n\n/* Gallery */\n\n.kg-image[width][height],\n.kg-gallery-image {\n cursor: pointer;\n}\n\n.kg-image-card a:hover,\n.kg-gallery-image a:hover {\n opacity: 1 !important;\n}\n\n/* Toggle */\n\n.kg-card.kg-toggle-card .kg-toggle-heading-text {\n font-size: 2rem;\n font-weight: 700;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .kg-toggle-card .kg-toggle-heading-text {\n font-family: var(--font-serif);\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .kg-toggle-card .kg-toggle-heading-text {\n font-family: var(--font-mono);\n}\n\n/* Callout */\n\n.kg-callout-card.kg-card {\n border-radius: 0.25em;\n}\n\n.kg-callout-card-accent a {\n text-decoration: underline;\n}\n\n/* Blockquote */\n\nblockquote:not([class]) {\n padding-left: 2rem;\n border-left: 4px solid var(--ghost-accent-color);\n}\n\nblockquote.kg-blockquote-alt {\n font-style: normal;\n font-weight: 400;\n color: var(--color-secondary-text);\n}\n\n/* Button */\n\n.kg-card.kg-button-card .kg-btn {\n height: unset;\n padding: .6em 1.2em;\n text-align: center;\n font-size: 1em;\n line-height: 1.2em;\n}\n\n/* Header */\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .kg-card.kg-header-card h2.kg-header-card-header {\n font-family: var(--font-serif);\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .kg-card.kg-header-card h2.kg-header-card-header {\n font-family: var(--font-mono);\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .kg-header-card h3.kg-header-card-subheader {\n font-family: var(--font-serif);\n}\n\n/* Bookmark */\n\n.kg-bookmark-card .kg-bookmark-container {\n border-radius: 0.25em !important;\n}\n\n.kg-bookmark-card .kg-bookmark-container:hover {\n opacity: 1;\n}\n\n.kg-bookmark-card a.kg-bookmark-container,\n.kg-bookmark-card a.kg-bookmark-container:hover {\n background: var(--background-color) !important;\n color: var(--color-darker-gray) !important;\n}\n\n.kg-bookmark-card .kg-bookmark-content {\n padding: 1.15em;\n}\n\n.kg-bookmark-card .kg-bookmark-title {\n font-size: 0.9em;\n}\n\n.kg-bookmark-card .kg-bookmark-description {\n max-height: none;\n margin-top: 0.3em;\n font-size: 0.8em;\n}\n\n.kg-bookmark-card .kg-bookmark-metadata {\n font-size: 0.8em;\n}\n\n.kg-bookmark-card .kg-bookmark-thumbnail img {\n border-radius: 0 0.2em 0.2em 0;\n}\n\n/* Product */\n\n.kg-product-card.kg-card .kg-product-card-image {\n margin-bottom: 12px;\n}\n\n.kg-product-card.kg-card a.kg-product-card-button {\n height: 2.8em;\n margin-top: 12px;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .kg-product-card.kg-card .kg-product-card-title {\n font-family: var(--font-serif);\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .kg-product-card.kg-card .kg-product-card-title {\n font-family: var(--font-mono);\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .kg-product-card-description :is(p, ul, ol) {\n font-family: var(--font-serif-alt);\n}\n\n/* File */\n\n.kg-file-card.kg-card .kg-file-card-container {\n padding: 0.6em;\n}\n\n.kg-file-card.kg-card .kg-file-card-contents {\n margin: 4px 8px 6px;\n}\n\n.kg-file-card.kg-card .kg-file-card-metadata {\n font-size: 0.9em;\n}\n\n.kg-file-card.kg-card .kg-file-card-filesize::before {\n margin-right: 6px;\n margin-left: 6px;\n}\n\n/* Caption */\n\nfigcaption {\n margin-top: 12px;\n font-size: 1.4rem;\n text-align: center;\n}\n\n.kg-card.kg-width-full figcaption {\n padding: 0 16px;\n}\n\nfigcaption a {\n color: var(--ghost-accent-color);\n text-decoration: underline;\n}\n\n/* 17. Comments\n/* ---------------------------------------------------------- */\n\n.gh-comments {\n margin-top: 48px;\n}\n\n/* 18. Recent posts\n/* ---------------------------------------------------------- */\n\n.post-template .gh-container {\n margin-top: 120px;\n}\n\n.post-template .gh-container-inner {\n display: block;\n}\n\n.post-template .gh-container.is-grid .gh-feed {\n grid-template-columns: repeat(4, 1fr);\n}\n\n.post-template .gh-container .gh-container-title {\n display: block;\n}\n\n/* 19. Archive\n/* ---------------------------------------------------------- */\n\n.gh-archive {\n display: grid;\n grid-template-columns: repeat(16, 1fr);\n gap: var(--grid-gap);\n margin-block: 80px 24px;\n}\n\n.gh-archive.has-image {\n margin-top: 48px;\n}\n\n.gh-archive-inner {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--grid-gap);\n grid-column: 1 / -1;\n padding-bottom: clamp(40px, 2.73vw + 29.09px, 64px);\n border-bottom: 1px solid var(--color-border);\n}\n\n.gh-archive.has-image .gh-archive-inner {\n align-items: center;\n grid-column: 1 / -1;\n}\n\n.gh-archive:not(.has-sidebar):not(.has-image) .gh-archive-inner {\n grid-column: 3 / span 12;\n}\n\n.gh-archive .gh-article-image {\n grid-column: auto;\n margin-top: 0;\n}\n\n:is(.tag-template, .author-template) .gh-container {\n margin-top: 0;\n}\n\n.author-template .gh-archive-inner {\n display: flex;\n flex-direction: row-reverse;\n justify-content: flex-end;\n gap: 24px;\n}\n\n.author-template .gh-article-image {\n margin-top: 0;\n width: 120px;\n height: 120px;\n border-radius: 50%;\n object-fit: cover;\n}\n\n.author-template .gh-article-title {\n font-size: 3.6rem;\n}\n\n.gh-author-meta {\n display: flex;\n gap: 10px;\n margin-top: 14px;\n font-size: 1.5rem;\n font-weight: 550;\n color: var(--color-secondary-text);\n}\n\n.gh-author-meta a {\n color: inherit;\n}\n\n.gh-author-social {\n display: flex;\n gap: 16px;\n align-items: center;\n padding-left: 3px;\n}\n\n.gh-author-social svg {\n width: 20px;\n height: 20px;\n}\n\n@media (max-width: 1199px) {\n .gh-archive {\n display: block;\n }\n}\n\n@media (max-width: 767px) {\n .gh-archive-inner {\n display: flex;\n flex-direction: column-reverse;\n align-items: flex-start;\n }\n\n .author-template .gh-archive-inner {\n flex-direction: column-reverse;\n }\n}\n\n/* 20. Design settings\n/* ---------------------------------------------------------- */\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) {\n --factor: 1.15;\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) {\n --factor: 1.1;\n}\n\n.has-sans-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) :is(.is-title, .gh-content :is(h2, h3)) {\n font-family: var(--gh-font-heading, var(--font-sans));\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) :is(.is-title, .gh-content :is(h2, h3)) {\n font-family: var(--gh-font-heading, var(--font-serif));\n font-weight: 550;\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) :is(.is-title, .gh-content :is(h2, h3)) {\n font-family: var(--gh-font-heading, var(--font-mono));\n}\n\n.has-sans-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .is-body {\n font-family: var(--gh-font-body, var(--font-sans));\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .is-body {\n font-family: var(--gh-font-body, var(--font-serif-alt));\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-header.is-classic .gh-header-title {\n font-weight: 550;\n letter-spacing: -0.015em;\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-header.is-classic .gh-header-title {\n letter-spacing: -0.01em;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-form {\n border-radius: 0;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-card-title {\n line-height: 1.15;\n letter-spacing: -0.006em;\n font-size: calc(2.0rem*var(--factor, 1))\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-featured-feed .gh-card-title {\n font-size: calc(1.6rem*var(--factor, 1))\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-featured-feed .gh-card-title {\n font-size: calc(1.5rem*var(--factor, 1));\n letter-spacing: 0;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-header.is-highlight .gh-featured-feed .gh-card-title {\n font-size: clamp(1.6rem, 0.23vw + 1.51rem, 1.8rem);\n}\n\n.has-mono-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-card-title {\n font-size: calc(1.8rem*var(--factor, 1));\n line-height: 1.2;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-about-title {\n letter-spacing: -0.009em;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-footer-signup-header {\n letter-spacing: -0.019em;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-article-title {\n letter-spacing: -0.019em;\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) {\n --content-font-size: 1.9rem;\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-card-excerpt {\n font-size: 1.65rem;\n line-height: 1.4;\n letter-spacing: 0.0005em;\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-header.is-magazine .gh-header-inner > .gh-card .gh-card-excerpt,\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-header.is-highlight .gh-card:first-child .gh-card-excerpt {\n font-size: 1.8rem;\n letter-spacing: -0.001em;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-title,\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-header.is-highlight .gh-header-left .gh-card-title {\n font-weight: 550;\n font-size: clamp(3.2rem,1.82vw + 2.47rem,4.9rem)\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-about-description {\n font-size: 1.6rem;\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-article-excerpt {\n letter-spacing: 0;\n}\n\n.has-serif-body:not([class*=\" gh-font-body\"]):not([class^=\"gh-font-body\"]) .gh-footer-signup-subhead {\n letter-spacing: 0;\n}\n\n:is(.has-serif-title,.has-mono-title):not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) :is(.gh-button, .gh-form, .gh-form-input),\nbody[class*=\" gh-font-heading\"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button, .gh-form, .gh-form-input),\nbody[class^=\"gh-font-heading\"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button, .gh-form, .gh-form-input) {\n border-radius: 0;\n}\n\n.has-serif-title:not([class*=\" gh-font-heading\"]):not([class^=\"gh-font-heading\"]) .gh-cta-title {\n font-size: 4.8rem;\n}\n\n/* 21. Footer\n/* ---------------------------------------------------------- */\n\n.gh-footer {\n margin-top: 120px;\n font-size: 1.5rem;\n color: var(--color-darker-gray);\n}\n\n.gh-footer a:not(.gh-button) {\n color: inherit;\n}\n\n/* 21.1 Footer styles */\n\n.gh-footer.has-accent-color {\n background-color: var(--ghost-accent-color);\n}\n\n.gh-footer.has-accent-color .gh-footer-bar {\n border-top: 0;\n}\n\n.gh-footer.has-accent-color .gh-button {\n background-color: #fff;\n color: #15171a;\n}\n\n/* 21.2. Footer bar */\n\n.gh-footer-bar {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n column-gap: 32px;\n margin-bottom: 120px;\n padding-block: 28px;\n font-weight: 550;\n border-block: 1px solid var(--color-border);\n}\n\n.gh-footer-logo {\n position: relative;\n font-family: var(--gh-font-heading, var(--font-sans));\n font-size: calc(2.4rem * var(--factor, 1));\n font-weight: 725;\n letter-spacing: -0.015em;\n white-space: nowrap;\n}\n\n.gh-footer-logo img {\n max-height: 40px;\n}\n\n.gh-footer-menu .nav {\n display: flex;\n justify-content: center;\n gap: 8px 28px;\n flex-wrap: wrap;\n margin: 0;\n padding: 0;\n list-style-type: none;\n}\n\n.gh-footer-copyright {\n text-align: right;\n white-space: nowrap;\n}\n\n.gh-footer-copyright a {\n text-decoration: underline;\n}\n\n/* 21.3. Footer signup */\n\n.gh-footer-signup {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-bottom: 120px;\n text-align: center;\n}\n\n.gh-footer-signup-header {\n font-size: calc(clamp(2.8rem,1.36vw + 2.25rem,4rem) * var(--factor, 1));\n font-weight: 700;\n letter-spacing: -0.03em;\n}\n\n.gh-footer-signup-subhead {\n margin-top: 12px;\n max-width: 640px;\n font-size: 1.8rem;\n font-weight: 450;\n line-height: 1.4;\n letter-spacing: -0.014em;\n opacity: 0.75;\n}\n\n.gh-footer-signup .gh-form {\n margin-top: 40px;\n}\n\n@media (max-width: 991px) {\n .gh-footer-bar {\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n}\n\n/* 21.4. Social links */\n\n.gh-social-links {\n display: flex;\n justify-content: center;\n gap: 20px;\n margin-bottom: 32px;\n}\n\n.gh-social-links a {\n will-change: opacity;\n}\n\n.gh-social-links svg {\n width: 20px;\n height: 20px;\n}\n\n/* 22. Lightbox\n/* ---------------------------------------------------------- */\n\n.pswp {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 3999999;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n -ms-touch-action: none;\n touch-action: none;\n outline: none;\n backface-visibility: hidden;\n -webkit-text-size-adjust: 100%;\n}\n\n.pswp img {\n max-width: none;\n}\n\n.pswp--animate_opacity {\n opacity: 0.001;\n transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);\n will-change: opacity;\n}\n\n.pswp--open {\n display: block;\n}\n\n.pswp--zoom-allowed .pswp__img {\n cursor: zoom-in;\n}\n\n.pswp--zoomed-in .pswp__img {\n cursor: grab;\n}\n\n.pswp--dragging .pswp__img {\n cursor: grabbing;\n}\n\n.pswp__bg {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.85);\n opacity: 0;\n transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);\n transform: translateZ(0);\n backface-visibility: hidden;\n will-change: opacity;\n}\n\n.pswp__scroll-wrap {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n.pswp__container,\n.pswp__zoom-wrap {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n touch-action: none;\n backface-visibility: hidden;\n}\n\n.pswp__container,\n.pswp__img {\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n -webkit-touch-callout: none;\n}\n\n.pswp__zoom-wrap {\n position: absolute;\n width: 100%;\n transition: transform 333ms cubic-bezier(0.4, 0, 0.22, 1);\n transform-origin: left top;\n}\n\n.pswp--animated-in .pswp__bg,\n.pswp--animated-in .pswp__zoom-wrap {\n transition: none;\n}\n\n.pswp__item {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n}\n\n.pswp__img {\n position: absolute;\n top: 0;\n left: 0;\n width: auto;\n height: auto;\n}\n\n.pswp__img--placeholder {\n backface-visibility: hidden;\n}\n\n.pswp__img--placeholder--blank {\n background: var(--color-black);\n}\n\n.pswp--ie .pswp__img {\n top: 0;\n left: 0;\n width: 100% !important;\n height: auto !important;\n}\n\n.pswp__error-msg {\n position: absolute;\n top: 50%;\n left: 0;\n width: 100%;\n margin-top: -8px;\n font-size: 14px;\n line-height: 16px;\n color: var(--color-secondary-text);\n text-align: center;\n}\n\n.pswp__error-msg a {\n color: var(--color-secondary-text);\n text-decoration: underline;\n}\n\n.pswp__button {\n position: relative;\n display: block;\n float: right;\n width: 44px;\n height: 44px;\n padding: 0;\n margin: 0;\n overflow: visible;\n appearance: none;\n cursor: pointer;\n background: none;\n border: 0;\n box-shadow: none;\n transition: opacity 0.2s;\n}\n\n.pswp__button:focus,\n.pswp__button:hover {\n opacity: 1;\n}\n\n.pswp__button:active {\n outline: none;\n opacity: 0.9;\n}\n\n.pswp__button::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\n\n.pswp__ui--over-close .pswp__button--close {\n opacity: 1;\n}\n\n.pswp__button,\n.pswp__button--arrow--left::before,\n.pswp__button--arrow--right::before {\n width: 44px;\n height: 44px;\n background: url(\"../images/default-skin.png\") 0 0 no-repeat;\n background-size: 264px 88px;\n}\n\n@media (-webkit-min-device-pixel-ratio: 1.1), (-webkit-min-device-pixel-ratio: 1.09375), (min-resolution: 105dpi), (min-resolution: 1.1dppx) {\n .pswp--svg .pswp__button,\n .pswp--svg .pswp__button--arrow--left::before,\n .pswp--svg .pswp__button--arrow--right::before {\n background-image: url(\"../images/default-skin.svg\");\n }\n\n .pswp--svg .pswp__button--arrow--left,\n .pswp--svg .pswp__button--arrow--right {\n background: none;\n }\n}\n\n.pswp__button--close {\n background-position: 0 -44px;\n}\n\n.pswp__button--share {\n background-position: -44px -44px;\n}\n\n.pswp__button--fs {\n display: none;\n}\n\n.pswp--supports-fs .pswp__button--fs {\n display: block;\n}\n\n.pswp--fs .pswp__button--fs {\n background-position: -44px 0;\n}\n\n.pswp__button--zoom {\n display: none;\n background-position: -88px 0;\n}\n\n.pswp--zoom-allowed .pswp__button--zoom {\n display: block;\n}\n\n.pswp--zoomed-in .pswp__button--zoom {\n background-position: -132px 0;\n}\n\n.pswp--touch .pswp__button--arrow--left,\n.pswp--touch .pswp__button--arrow--right {\n visibility: hidden;\n}\n\n.pswp__button--arrow--left,\n.pswp__button--arrow--right {\n position: absolute;\n top: 50%;\n width: 70px;\n height: 100px;\n margin-top: -50px;\n background: none;\n}\n\n.pswp__button--arrow--left {\n left: 0;\n}\n\n.pswp__button--arrow--right {\n right: 0;\n}\n\n.pswp__button--arrow--left::before,\n.pswp__button--arrow--right::before {\n position: absolute;\n top: 35px;\n width: 32px;\n height: 30px;\n content: \"\";\n}\n\n.pswp__button--arrow--left::before {\n left: 6px;\n background-position: -138px -44px;\n}\n\n.pswp__button--arrow--right::before {\n right: 6px;\n background-position: -94px -44px;\n}\n\n.pswp__counter {\n position: absolute;\n top: 0;\n left: 0;\n height: 44px;\n padding: 0 15px;\n font-size: 11px;\n font-weight: 700;\n line-height: 44px;\n color: var(--color-white);\n user-select: none;\n}\n\n.pswp__caption {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n min-height: 44px;\n}\n\n.pswp__caption__center {\n max-width: 420px;\n padding: 25px 15px 30px;\n margin: 0 auto;\n font-size: 11px;\n line-height: 1.6;\n color: var(--color-white);\n text-align: center;\n}\n\n.pswp__caption__center .post-caption-title {\n margin-bottom: 7px;\n font-size: 15px;\n font-weight: 500;\n text-transform: uppercase;\n}\n\n.pswp__caption__center .post-caption-meta-item + .post-caption-meta-item::before {\n padding: 0 4px;\n content: \"\\02022\";\n}\n\n.pswp__caption--empty {\n display: none;\n}\n\n.pswp__caption--fake {\n visibility: hidden;\n}\n\n.pswp__preloader {\n position: absolute;\n top: 0;\n left: 50%;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n opacity: 0;\n transition: opacity 0.25s ease-out;\n direction: ltr;\n will-change: opacity;\n}\n\n.pswp__preloader__icn {\n width: 20px;\n height: 20px;\n margin: 12px;\n}\n\n.pswp__preloader--active {\n opacity: 1;\n}\n\n.pswp__preloader--active .pswp__preloader__icn {\n background: url(\"../images/preloader.gif\") 0 0 no-repeat;\n}\n\n.pswp--css_animation .pswp__preloader--active {\n opacity: 1;\n}\n\n.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn {\n animation: clockwise 500ms linear infinite;\n}\n\n.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut {\n animation: donut-rotate 1000ms cubic-bezier(0.4, 0, 0.22, 1) infinite;\n}\n\n.pswp--css_animation .pswp__preloader__icn {\n position: absolute;\n top: 15px;\n left: 15px;\n width: 14px;\n height: 14px;\n margin: 0;\n background: none;\n opacity: 0.75;\n}\n\n.pswp--css_animation .pswp__preloader__cut {\n position: relative;\n width: 7px;\n height: 14px;\n overflow: hidden;\n}\n\n.pswp--css_animation .pswp__preloader__donut {\n position: absolute;\n top: 0;\n left: 0;\n box-sizing: border-box;\n width: 14px;\n height: 14px;\n margin: 0;\n background: none;\n border: 2px solid var(--color-white);\n border-bottom-color: transparent;\n border-left-color: transparent;\n border-radius: 50%;\n}\n\n@media screen and (max-width: 1024px) {\n .pswp__preloader {\n position: relative;\n top: auto;\n left: auto;\n float: right;\n margin: 0;\n }\n}\n\n@keyframes clockwise {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes donut-rotate {\n 0% {\n transform: rotate(0);\n }\n\n 50% {\n transform: rotate(-140deg);\n }\n\n 100% {\n transform: rotate(0);\n }\n}\n\n.pswp__ui {\n z-index: 1550;\n visibility: visible;\n opacity: 1;\n -webkit-font-smoothing: auto;\n}\n\n.pswp__top-bar {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 44px;\n}\n\n.pswp__caption,\n.pswp__top-bar,\n.pswp--has_mouse .pswp__button--arrow--left,\n.pswp--has_mouse .pswp__button--arrow--right {\n backface-visibility: hidden;\n transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);\n will-change: opacity;\n}\n\n.pswp--has_mouse .pswp__button--arrow--left,\n.pswp--has_mouse .pswp__button--arrow--right {\n visibility: visible;\n}\n\n.pswp__ui--idle .pswp__top-bar {\n opacity: 0;\n}\n\n.pswp__ui--idle .pswp__button--arrow--left,\n.pswp__ui--idle .pswp__button--arrow--right {\n opacity: 0;\n}\n\n.pswp__ui--hidden .pswp__top-bar,\n.pswp__ui--hidden .pswp__caption,\n.pswp__ui--hidden .pswp__button--arrow--left,\n.pswp__ui--hidden .pswp__button--arrow--right {\n opacity: 0.001;\n}\n\n.pswp__ui--one-slide .pswp__button--arrow--left,\n.pswp__ui--one-slide .pswp__button--arrow--right,\n.pswp__ui--one-slide .pswp__counter {\n display: none;\n}\n\n.pswp__element--disabled {\n display: none !important;\n}\n\n.pswp--minimal--dark .pswp__top-bar {\n background: none;\n}\n\n/* SHARE */\n.gh-meta-share {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 20px;\n}\n\n.has-light-text .gh-button-share {\n border-color: rgba(255, 255, 255, 0.25);\n color: rgba(255, 255, 255, 0.85);\n}\n\n.has-light-text .gh-button-share:hover {\n border-color: rgba(255, 255, 255, 0.85);\n}\n\n.gh-button-share {\n display: inline-flex;\n align-items: center;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 999px;\n color: rgba(0, 0, 0, 0.85);\n background: transparent;\n cursor: pointer;\n transition: all 0.4s ease;\n}\n\n.gh-button-share:hover {\n border-color: rgba(0, 0, 0, 0.5);\n}\n","/* Cosmonauta custom CSS\n/* ---------------------------------------------------------- */\n\n/*\n * Keep all local CSS overrides in this file. Gulp appends it after screen.css\n * and compiles both files into assets/built/screen.css.\n */\n\n/* COSMONAUTA CUSTOM: inizio — colore di sfondo globale */\n:root {\n --background-color: #fcf6e4 !important;\n}\n/* COSMONAUTA CUSTOM: fine — colore di sfondo globale */\n\n/* COSMONAUTA CUSTOM: inizio — inline post tags */\n.gh-article-tags {\n margin-bottom: 12px;\n}\n\n.gh-article-tags--footer {\n padding-block: 32px;\n}\n\n.gh-article-tags--footer .gh-article-tag {\n font-size: 1.6rem;\n}\n/* COSMONAUTA CUSTOM: fine — inline post tags */\n\n/* COSMONAUTA CUSTOM: inizio — titolo pagina tag su una riga */\n@media (min-width: 992px) {\n .tag-template .gh-article-title {\n white-space: nowrap;\n }\n}\n/* COSMONAUTA CUSTOM: fine — titolo pagina tag su una riga */\n\n/* COSMONAUTA CUSTOM: inizio — home e post hero */\n.home-template .gh-header.is-classic.has-image,\n.post-template .gh-article-header.has-feature-image {\n min-height: clamp(460px, 72svh, 760px);\n}\n\n.home-template .gh-header.is-classic.has-image {\n padding-block: 0;\n}\n\n.post-template .gh-article-header.has-feature-image {\n position: relative;\n align-content: center;\n margin: 0;\n color: var(--color-white);\n isolation: isolate;\n}\n\n.post-template .gh-article-header.has-feature-image::before {\n position: absolute;\n inset: 0;\n z-index: -1;\n content: \"\";\n background-color: rgb(0 0 0 / 0.7);\n}\n\n.post-template .gh-article-header.has-feature-image .gh-article-image {\n position: absolute;\n inset: 0;\n z-index: -2;\n grid-column: full;\n margin: 0;\n}\n\n.post-template .gh-article-header.has-feature-image .gh-article-image img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.post-template .gh-article-header.has-feature-image :is(a, .gh-article-tag, .gh-article-meta-content) {\n color: inherit;\n}\n\n.post-template .gh-article-header.has-feature-image .gh-article-author-image a {\n border-color: rgb(255 255 255 / 0.8);\n}\n\n.post-template .gh-article-header.has-feature-image .gh-button-share {\n color: inherit;\n border-color: rgb(255 255 255 / 0.6);\n}\n\n.post-template .gh-article-header.has-feature-image + .gh-content {\n padding-top: clamp(43px, 3.33vw, 64px);\n}\n\nbody.home-template:has(.gh-header.is-classic.has-image) .gh-navigation,\nbody.post-template:has(.gh-article-header.has-feature-image) .gh-navigation {\n position: absolute;\n z-index: 10;\n width: 100%;\n background-color: transparent;\n color: var(--color-white);\n}\n\nbody.home-template:has(.gh-header.is-classic.has-image) .gh-navigation-actions,\nbody.post-template:has(.gh-article-header.has-feature-image) .gh-navigation-actions {\n background-color: transparent;\n}\n\nbody.home-template:has(.gh-header.is-classic.has-image) .gh-navigation :is(.gh-navigation-logo, a:not(.gh-button), .gh-icon-button),\nbody.post-template:has(.gh-article-header.has-feature-image) .gh-navigation :is(.gh-navigation-logo, a:not(.gh-button), .gh-icon-button) {\n color: inherit;\n}\n\nbody.home-template:has(.gh-header.is-classic.has-image) .gh-navigation :is(.gh-navigation-menu a, .gh-search, .gh-navigation-members a:not(.gh-button), .gh-icon-button),\nbody.post-template:has(.gh-article-header.has-feature-image) .gh-navigation :is(.gh-navigation-menu a, .gh-search, .gh-navigation-members a:not(.gh-button), .gh-icon-button),\n.post-template .gh-article-header.has-feature-image .gh-article-tag,\n.post-template .gh-article-header.has-feature-image .gh-article-author-name a,\n.post-template .gh-article-header.has-feature-image .gh-button-share {\n color: #fcf6e4;\n}\n\n.post-template .gh-article-header.has-feature-image .gh-button-share {\n color: var(--ghost-accent-color);\n background-color: #fcf6e4;\n border-color: #fcf6e4;\n}\n\n@media (max-width: 767px) {\n .home-template .gh-header.is-classic.has-image,\n .post-template .gh-article-header.has-feature-image {\n min-height: clamp(420px, 78svh, 620px);\n }\n}\n/* COSMONAUTA CUSTOM: fine — home e post hero */\n"]} \ No newline at end of file diff --git a/assets/css/custom.css b/assets/css/custom.css new file mode 100644 index 000000000..9a962329e --- /dev/null +++ b/assets/css/custom.css @@ -0,0 +1,133 @@ +/* Cosmonauta custom CSS +/* ---------------------------------------------------------- */ + +/* + * Keep all local CSS overrides in this file. Gulp appends it after screen.css + * and compiles both files into assets/built/screen.css. + */ + +/* COSMONAUTA CUSTOM: inizio — colore di sfondo globale */ +:root { + --background-color: #fcf6e4 !important; +} +/* COSMONAUTA CUSTOM: fine — colore di sfondo globale */ + +/* COSMONAUTA CUSTOM: inizio — inline post tags */ +.gh-article-tags { + margin-bottom: 12px; +} + +.gh-article-tags--footer { + padding-block: 32px; +} + +.gh-article-tags--footer .gh-article-tag { + font-size: 1.6rem; +} +/* COSMONAUTA CUSTOM: fine — inline post tags */ + +/* COSMONAUTA CUSTOM: inizio — titolo pagina tag su una riga */ +@media (min-width: 992px) { + .tag-template .gh-article-title { + white-space: nowrap; + } +} +/* COSMONAUTA CUSTOM: fine — titolo pagina tag su una riga */ + +/* COSMONAUTA CUSTOM: inizio — home e post hero */ +.home-template .gh-header.is-classic.has-image, +.post-template .gh-article-header.has-feature-image { + min-height: clamp(460px, 72svh, 760px); +} + +.home-template .gh-header.is-classic.has-image { + padding-block: 0; +} + +.post-template .gh-article-header.has-feature-image { + position: relative; + align-content: center; + margin: 0; + color: var(--color-white); + isolation: isolate; +} + +.post-template .gh-article-header.has-feature-image::before { + position: absolute; + inset: 0; + z-index: -1; + content: ""; + background-color: rgb(0 0 0 / 0.7); +} + +.post-template .gh-article-header.has-feature-image .gh-article-image { + position: absolute; + inset: 0; + z-index: -2; + grid-column: full; + margin: 0; +} + +.post-template .gh-article-header.has-feature-image .gh-article-image img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.post-template .gh-article-header.has-feature-image :is(a, .gh-article-tag, .gh-article-meta-content) { + color: inherit; +} + +.post-template .gh-article-header.has-feature-image .gh-article-author-image a { + border-color: rgb(255 255 255 / 0.8); +} + +.post-template .gh-article-header.has-feature-image .gh-button-share { + color: inherit; + border-color: rgb(255 255 255 / 0.6); +} + +.post-template .gh-article-header.has-feature-image + .gh-content { + padding-top: clamp(43px, 3.33vw, 64px); +} + +body.home-template:has(.gh-header.is-classic.has-image) .gh-navigation, +body.post-template:has(.gh-article-header.has-feature-image) .gh-navigation { + position: absolute; + z-index: 10; + width: 100%; + background-color: transparent; + color: var(--color-white); +} + +body.home-template:has(.gh-header.is-classic.has-image) .gh-navigation-actions, +body.post-template:has(.gh-article-header.has-feature-image) .gh-navigation-actions { + background-color: transparent; +} + +body.home-template:has(.gh-header.is-classic.has-image) .gh-navigation :is(.gh-navigation-logo, a:not(.gh-button), .gh-icon-button), +body.post-template:has(.gh-article-header.has-feature-image) .gh-navigation :is(.gh-navigation-logo, a:not(.gh-button), .gh-icon-button) { + color: inherit; +} + +body.home-template:has(.gh-header.is-classic.has-image) .gh-navigation :is(.gh-navigation-menu a, .gh-search, .gh-navigation-members a:not(.gh-button), .gh-icon-button), +body.post-template:has(.gh-article-header.has-feature-image) .gh-navigation :is(.gh-navigation-menu a, .gh-search, .gh-navigation-members a:not(.gh-button), .gh-icon-button), +.post-template .gh-article-header.has-feature-image .gh-article-tag, +.post-template .gh-article-header.has-feature-image .gh-article-author-name a, +.post-template .gh-article-header.has-feature-image .gh-button-share { + color: #fcf6e4; +} + +.post-template .gh-article-header.has-feature-image .gh-button-share { + color: var(--ghost-accent-color); + background-color: #fcf6e4; + border-color: #fcf6e4; +} + +@media (max-width: 767px) { + .home-template .gh-header.is-classic.has-image, + .post-template .gh-article-header.has-feature-image { + min-height: clamp(420px, 78svh, 620px); + } +} +/* COSMONAUTA CUSTOM: fine — home e post hero */ diff --git a/assets/js/custom.js b/assets/js/custom.js new file mode 100644 index 000000000..3f80bbd34 --- /dev/null +++ b/assets/js/custom.js @@ -0,0 +1,5 @@ +/* Cosmonauta custom JavaScript + * + * Keep all local JavaScript enhancements in this file. Gulp includes it last + * in assets/built/source.js so it can depend on Source's own scripts. + */ diff --git a/gulpfile.js b/gulpfile.js index f347a251b..a60807650 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -46,7 +46,9 @@ function hbs(done) { function css(done) { pump([ - src('assets/css/screen.css', {sourcemaps: true}), + // Keep Cosmonauta additions after Source's stylesheet. + src(['assets/css/screen.css', 'assets/css/custom.css'], {sourcemaps: true}), + concat('screen.css'), postcss([ easyimport, autoprefixer(), @@ -62,7 +64,9 @@ function js(done) { src([ // pull in lib files first so our own code can depend on it 'assets/js/lib/*.js', - 'assets/js/*.js' + 'assets/js/!(custom).js', + // Keep Cosmonauta additions last, after Source's scripts. + 'assets/js/custom.js' ], {sourcemaps: true}), concat('source.js'), uglify(), diff --git a/post.hbs b/post.hbs index 5da34039a..89e8fbc67 100644 --- a/post.hbs +++ b/post.hbs @@ -7,11 +7,17 @@
-
+ {{!-- COSMONAUTA CUSTOM: inizio — abilita il hero dalla feature image --}} +
+ {{!-- COSMONAUTA CUSTOM: fine — abilita il hero dalla feature image --}} - {{#if primary_tag}} - + {{!-- COSMONAUTA CUSTOM: inizio — mostra tutti i tag del post nell'header --}} + {{#if tags}} + {{/if}} + {{!-- COSMONAUTA CUSTOM: fine — mostra tutti i tag del post nell'header --}}

{{title}}

{{#if custom_excerpt}}

{{custom_excerpt}}

@@ -55,6 +61,16 @@ {{content}} + {{!-- COSMONAUTA CUSTOM: inizio — mostra tutti i tag alla fine del post --}} + {{#if tags}} +
+ +
+ {{/if}} + {{!-- COSMONAUTA CUSTOM: fine — mostra tutti i tag alla fine del post --}} +
{{#if comments}} diff --git a/tag.hbs b/tag.hbs index 01374aac4..c443cbd70 100644 --- a/tag.hbs +++ b/tag.hbs @@ -7,7 +7,9 @@
-

{{name}}

+ {{!-- COSMONAUTA CUSTOM: inizio — titolo della pagina tag --}} +

Contenuti nel tag {{name}}

+ {{!-- COSMONAUTA CUSTOM: fine — titolo della pagina tag --}} {{#if description}}

{{description}}

{{/if}} @@ -19,4 +21,4 @@ {{> "components/post-list" feed="archive" postFeedStyle=@custom.post_feed_style showTitle=false showSidebar=@custom.show_publication_info_sidebar}} - \ No newline at end of file + From cee3bedefd780ae2f120f78a6ad1cc0f2978f5fd Mon Sep 17 00:00:00 2001 From: Sergio Durzu Date: Wed, 26 Aug 2026 19:15:40 +0200 Subject: [PATCH 09/12] ci: allow manual theme deployments --- .github/workflows/deploy-theme.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy-theme.yml b/.github/workflows/deploy-theme.yml index f1cf5b6fc..8093843dc 100644 --- a/.github/workflows/deploy-theme.yml +++ b/.github/workflows/deploy-theme.yml @@ -1,6 +1,7 @@ name: Deploy Ghost theme on: + workflow_dispatch: push: branches: - main From b214c201621130a86ece054538f977326ae69ce8 Mon Sep 17 00:00:00 2001 From: Sergio Durzu Date: Wed, 26 Aug 2026 19:32:50 +0200 Subject: [PATCH 10/12] chore: verify Actions push trigger (#8) --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 1f7410f0e..0d5352554 100644 --- a/README.md +++ b/README.md @@ -160,3 +160,6 @@ pnpm zip ``` `pnpm test:ci` crea il pacchetto e lo controlla con GScan per la compatibilità Ghost. L’archivio generato in `dist/` è locale e non va versionato. + + + From 4d51d5e32a51477f25985327da1eaf70346a560f Mon Sep 17 00:00:00 2001 From: Sergio Durzu Date: Wed, 26 Aug 2026 19:33:24 +0200 Subject: [PATCH 11/12] ci: remove theme validation workflow (#9) --- .github/workflows/test.yml | 42 -------------------------------------- 1 file changed, 42 deletions(-) delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index ac4e5b6f1..000000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Validate theme - -on: - pull_request: - push: - branches: - - main - -permissions: - contents: read - -jobs: - test: - name: Validate - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - with: - persist-credentials: false - - - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 - - - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e - with: - node-version: 22.13.0 - cache: pnpm - cache-dependency-path: pnpm-lock.yaml - - - run: pnpm install --frozen-lockfile - - - run: pnpm test:ci - - required-checks-pass: - name: Required checks pass - if: always() - needs: [test] - runs-on: ubuntu-latest - steps: - - name: Verify all required jobs succeeded - if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') - run: exit 1 From 5035d29ecc1d4b3235a815f69a45faf09ff8132b Mon Sep 17 00:00:00 2001 From: Sergio Durzu Date: Thu, 27 Aug 2026 12:57:14 +0200 Subject: [PATCH 12/12] Added target _blank to external links --- assets/built/source.js | 2 +- assets/built/source.js.map | 2 +- assets/js/custom.js | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/assets/built/source.js b/assets/built/source.js index 1b94003f5..6115797b3 100644 --- a/assets/built/source.js +++ b/assets/built/source.js @@ -1 +1 @@ -function dropdown(){let r=window.matchMedia("(max-width: 767px)"),a=document.querySelector(".gh-navigation"),s=a.querySelector(".gh-navigation-menu"),l=s?.querySelector(".nav");if(l){let e=document.querySelector(".gh-navigation-logo"),t=l.innerHTML;r.matches&&l.querySelectorAll("li").forEach(function(e,t){e.style.transitionDelay=.03*(t+1)+"s"});let n=function(){if(!r.matches){for(var e=[];l.offsetWidth+64>s.offsetWidth&&l.lastElementChild;)e.unshift(l.lastElementChild),l.lastElementChild.remove();if(e.length){let t=document.createElement("button"),n=(t.setAttribute("class","gh-more-toggle gh-icon-button"),t.setAttribute("aria-label","More"),t.innerHTML='',document.createElement("div"));n.setAttribute("class","gh-dropdown"),10<=e.length?(a.classList.add("is-dropdown-mega"),n.style.gridTemplateRows=`repeat(${Math.ceil(e.length/2)}, 1fr)`):a.classList.remove("is-dropdown-mega"),e.forEach(function(e){n.appendChild(e)}),t.appendChild(n),l.appendChild(t);var o=t.getBoundingClientRect(),i=window.innerWidth/2;o.left{l.innerHTML=t,n()},1)})}}function lightbox(e){document.querySelectorAll(e).forEach(function(e){e.addEventListener("click",function(e){var t=e;t.preventDefault();for(var n,o=[],i=0,r=t.target.closest(".kg-card").previousElementSibling;r&&(r.classList.contains("kg-image-card")||r.classList.contains("kg-gallery-card"));){var a=[];r.querySelectorAll("img").forEach(function(e){a.push({src:e.getAttribute("src"),msrc:e.getAttribute("src"),w:e.getAttribute("width"),h:e.getAttribute("height"),el:e}),i+=1}),r=r.previousElementSibling,o=a.concat(o)}t.target.classList.contains("kg-image")?o.push({src:t.target.getAttribute("src"),msrc:t.target.getAttribute("src"),w:t.target.getAttribute("width"),h:t.target.getAttribute("height"),el:t.target}):(n=!1,t.target.closest(".kg-gallery-card").querySelectorAll("img").forEach(function(e){o.push({src:e.getAttribute("src"),msrc:e.getAttribute("src"),w:e.getAttribute("width"),h:e.getAttribute("height"),el:e}),n||e===t.target?n=!0:i+=1}));for(var s=t.target.closest(".kg-card").nextElementSibling;s&&(s.classList.contains("kg-image-card")||s.classList.contains("kg-gallery-card"));)s.querySelectorAll("img").forEach(function(e){o.push({src:e.getAttribute("src"),msrc:e.getAttribute("src"),w:e.getAttribute("width"),h:e.getAttribute("height"),el:e})}),s=s.nextElementSibling;e=document.querySelectorAll(".pswp")[0];new PhotoSwipe(e,PhotoSwipeUI_Default,o,{bgOpacity:.9,closeOnScroll:!0,fullscreenEl:!1,history:!1,index:i,shareEl:!1,zoomEl:!1,getThumbBoundsFn:function(e){var e=o[e].el,t=window.pageYOffset||document.documentElement.scrollTop,e=e.getBoundingClientRect();return{x:e.left,y:e.top+t,w:e.width}}}).init()})})}function pagination(e=!0,s,l=!1){let c=document.querySelector(".gh-feed");if(!c)return;let t=!1,n=document.querySelector(".gh-footer"),u=document.querySelector(".gh-loadmore"),o=(!document.querySelector("link[rel=next]")&&u&&u.remove(),async function(){var o=document.querySelector("link[rel=next]");if(o)try{var e=await(await fetch(o.href)).text(),i=(new DOMParser).parseFromString(e,"text/html"),r=i.querySelectorAll(".gh-feed:not(.gh-featured):not(.gh-related) > *");let t=document.createDocumentFragment(),n=[];r.forEach(function(e){e=document.importNode(e,!0);l&&(e.style.visibility="hidden"),t.appendChild(e),n.push(e)}),c.appendChild(t),s&&s(n,d);var a=i.querySelector("link[rel=next]");a&&a.href?o.href=a.href:(o.remove(),u&&u.remove())}catch(e){throw o.remove(),e}}),d=async function(){n.getBoundingClientRect().top<=window.innerHeight&&document.querySelector("link[rel=next]")&&await o()};let i=new IntersectionObserver(async function(e){if(!t){if(t=!0,e[0].isIntersecting)if(l)await o();else for(;n.getBoundingClientRect().top<=window.innerHeight&&document.querySelector("link[rel=next]");)await o();t=!1,document.querySelector("link[rel=next]")||i.disconnect()}});e?i.observe(n):u.addEventListener("click",o)}((e,t)=>{"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",t):"object"==typeof module&&module.exports?module.exports=t():e.EvEmitter=t()})("undefined"!=typeof window?window:this,function(){function e(){}var t=e.prototype;return t.on=function(e,t){var n;if(e&&t)return-1==(n=(n=this._events=this._events||{})[e]=n[e]||[]).indexOf(t)&&n.push(t),this},t.once=function(e,t){var n;if(e&&t)return this.on(e,t),((n=this._onceEvents=this._onceEvents||{})[e]=n[e]||{})[t]=!0,this},t.off=function(e,t){e=this._events&&this._events[e];if(e&&e.length)return-1!=(t=e.indexOf(t))&&e.splice(t,1),this},t.emitEvent=function(e,t){var n=this._events&&this._events[e];if(n&&n.length){n=n.slice(0),t=t||[];for(var o=this._onceEvents&&this._onceEvents[e],i=0;i{"function"==typeof define&&define.amd?define(["ev-emitter/ev-emitter"],function(e){return n(t,e)}):"object"==typeof module&&module.exports?module.exports=n(t,require("ev-emitter")):t.imagesLoaded=n(t,t.EvEmitter)})("undefined"!=typeof window?window:this,function(t,e){function r(e,t){for(var n in t)e[n]=t[n];return e}function a(e,t,n){var o,i;return this instanceof a?(o="string"==typeof(o=e)?document.querySelectorAll(e):o)?(this.elements=(i=o,Array.isArray(i)?i:"object"==typeof i&&"number"==typeof i.length?c.call(i):[i]),this.options=r({},this.options),"function"==typeof t?n=t:r(this.options,t),n&&this.on("always",n),this.getImages(),s&&(this.jqDeferred=new s.Deferred),void setTimeout(this.check.bind(this))):void l.error("Bad element for imagesLoaded "+(o||e)):new a(e,t,n)}function n(e){this.img=e}function o(e,t){this.url=e,this.element=t,this.img=new Image}var s=t.jQuery,l=t.console,c=Array.prototype.slice,u=((a.prototype=Object.create(e.prototype)).options={},a.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},a.prototype.addElementImages=function(e){"IMG"==e.nodeName&&this.addImage(e),!0===this.options.background&&this.addElementBackgroundImages(e);var t=e.nodeType;if(t&&u[t]){for(var n=e.querySelectorAll("img"),o=0;o{"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.PhotoSwipeUI_Default=t()})(this,function(){return function(o,s){function e(e){if(T)return!0;e=e||window.event,C.timeToIdle&&C.mouseUsed&&!y&&a();for(var t,n,o=(e.target||e.srcElement).getAttribute("class")||"",i=0;i
',forceProgressiveLoading:!1,preload:[1,1],getNumItemsFn:function(){return $t.length}},rn=function(){return{center:{x:0,y:0},max:{x:0,y:0},min:{x:0,y:0}}},an=function(e,t,n){var o=e.bounds;o.center.x=Math.round((F.x-t)/2),o.center.y=Math.round((F.y-n)/2)+e.vGap.top,o.max.x=t>F.x?Math.round(F.x-t):o.center.x,o.max.y=n>F.y?Math.round(F.y-n)+e.vGap.top:o.center.y,o.min.x=t>F.x?0:o.center.x,o.min.y=n>F.y?e.vGap.top:o.center.y},sn=function(e,t,n){var o,i;return e.src&&!e.loadError?((o=!n)&&(e.vGap||(e.vGap={top:0,bottom:0}),I("parseVerticalMargin",e)),F.x=t.x,F.y=t.y-e.vGap.top-e.vGap.bottom,o&&(t=F.x/e.w,i=F.y/e.h,e.fitRatio=t=d.max.x&&n<=d.min.y&&n>=d.max.y)&&e.preventDefault(),f.panTo(t,n)},toggleDesktopZoom:function(e){e=e||{x:x.x/2+We.x,y:x.y/2+We.y};var t=h.getDoubleTapZoom(!0,f.currItem),n=v===t;f.mouseZoomedIn=!n,f.zoomTo(n?f.currItem.initialZoomLevel:t,e,333),p[(n?"remove":"add")+"Class"](m,"pswp--zoomed-in")}}});function pn(){hn&&clearTimeout(hn),vn&&clearTimeout(vn)}function fn(){var e=Sn(),t={};if(!(e.length<5)){var n,o=e.split("&");for(r=0;r{"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).reframe=t()})(this,function(){function t(){for(var e=0,t=0,n=arguments.length;t{let e=document.querySelector(".gh-navigation");var t=e.querySelector(".gh-burger");t&&t.addEventListener("click",function(){e.classList.contains("is-open")?(e.classList.remove("is-open"),document.documentElement.style.overflowY=null):(e.classList.add("is-open"),document.documentElement.style.overflowY="hidden")})})(),lightbox(".kg-image-card > .kg-image[width][height], .kg-gallery-image > img"),reframe(document.querySelectorAll(['.gh-content iframe[src*="youtube.com"]','.gh-content iframe[src*="youtube-nocookie.com"]','.gh-content iframe[src*="player.vimeo.com"]','.gh-content iframe[src*="kickstarter.com"][src*="video.html"]',".gh-content object",".gh-content embed"].join(","))),dropdown(),document.body.classList.contains("home-template")||document.body.classList.contains("post-template")||pagination(),document.querySelectorAll(".gh-content > table:not(.gist table)").forEach(function(e){var t=document.createElement("div");t.className="gh-table",e.parentNode.insertBefore(t,e),t.appendChild(e)});//# sourceMappingURL=source.js.map +function dropdown(){let r=window.matchMedia("(max-width: 767px)"),a=document.querySelector(".gh-navigation"),s=a.querySelector(".gh-navigation-menu"),l=s?.querySelector(".nav");if(l){let e=document.querySelector(".gh-navigation-logo"),t=l.innerHTML;r.matches&&l.querySelectorAll("li").forEach(function(e,t){e.style.transitionDelay=.03*(t+1)+"s"});let n=function(){if(!r.matches){for(var e=[];l.offsetWidth+64>s.offsetWidth&&l.lastElementChild;)e.unshift(l.lastElementChild),l.lastElementChild.remove();if(e.length){let t=document.createElement("button"),n=(t.setAttribute("class","gh-more-toggle gh-icon-button"),t.setAttribute("aria-label","More"),t.innerHTML='',document.createElement("div"));n.setAttribute("class","gh-dropdown"),10<=e.length?(a.classList.add("is-dropdown-mega"),n.style.gridTemplateRows=`repeat(${Math.ceil(e.length/2)}, 1fr)`):a.classList.remove("is-dropdown-mega"),e.forEach(function(e){n.appendChild(e)}),t.appendChild(n),l.appendChild(t);var o=t.getBoundingClientRect(),i=window.innerWidth/2;o.left{l.innerHTML=t,n()},1)})}}function lightbox(e){document.querySelectorAll(e).forEach(function(e){e.addEventListener("click",function(e){var t=e;t.preventDefault();for(var n,o=[],i=0,r=t.target.closest(".kg-card").previousElementSibling;r&&(r.classList.contains("kg-image-card")||r.classList.contains("kg-gallery-card"));){var a=[];r.querySelectorAll("img").forEach(function(e){a.push({src:e.getAttribute("src"),msrc:e.getAttribute("src"),w:e.getAttribute("width"),h:e.getAttribute("height"),el:e}),i+=1}),r=r.previousElementSibling,o=a.concat(o)}t.target.classList.contains("kg-image")?o.push({src:t.target.getAttribute("src"),msrc:t.target.getAttribute("src"),w:t.target.getAttribute("width"),h:t.target.getAttribute("height"),el:t.target}):(n=!1,t.target.closest(".kg-gallery-card").querySelectorAll("img").forEach(function(e){o.push({src:e.getAttribute("src"),msrc:e.getAttribute("src"),w:e.getAttribute("width"),h:e.getAttribute("height"),el:e}),n||e===t.target?n=!0:i+=1}));for(var s=t.target.closest(".kg-card").nextElementSibling;s&&(s.classList.contains("kg-image-card")||s.classList.contains("kg-gallery-card"));)s.querySelectorAll("img").forEach(function(e){o.push({src:e.getAttribute("src"),msrc:e.getAttribute("src"),w:e.getAttribute("width"),h:e.getAttribute("height"),el:e})}),s=s.nextElementSibling;e=document.querySelectorAll(".pswp")[0];new PhotoSwipe(e,PhotoSwipeUI_Default,o,{bgOpacity:.9,closeOnScroll:!0,fullscreenEl:!1,history:!1,index:i,shareEl:!1,zoomEl:!1,getThumbBoundsFn:function(e){var e=o[e].el,t=window.pageYOffset||document.documentElement.scrollTop,e=e.getBoundingClientRect();return{x:e.left,y:e.top+t,w:e.width}}}).init()})})}function pagination(e=!0,s,l=!1){let c=document.querySelector(".gh-feed");if(!c)return;let t=!1,n=document.querySelector(".gh-footer"),u=document.querySelector(".gh-loadmore"),o=(!document.querySelector("link[rel=next]")&&u&&u.remove(),async function(){var o=document.querySelector("link[rel=next]");if(o)try{var e=await(await fetch(o.href)).text(),i=(new DOMParser).parseFromString(e,"text/html"),r=i.querySelectorAll(".gh-feed:not(.gh-featured):not(.gh-related) > *");let t=document.createDocumentFragment(),n=[];r.forEach(function(e){e=document.importNode(e,!0);l&&(e.style.visibility="hidden"),t.appendChild(e),n.push(e)}),c.appendChild(t),s&&s(n,d);var a=i.querySelector("link[rel=next]");a&&a.href?o.href=a.href:(o.remove(),u&&u.remove())}catch(e){throw o.remove(),e}}),d=async function(){n.getBoundingClientRect().top<=window.innerHeight&&document.querySelector("link[rel=next]")&&await o()};let i=new IntersectionObserver(async function(e){if(!t){if(t=!0,e[0].isIntersecting)if(l)await o();else for(;n.getBoundingClientRect().top<=window.innerHeight&&document.querySelector("link[rel=next]");)await o();t=!1,document.querySelector("link[rel=next]")||i.disconnect()}});e?i.observe(n):u.addEventListener("click",o)}((e,t)=>{"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",t):"object"==typeof module&&module.exports?module.exports=t():e.EvEmitter=t()})("undefined"!=typeof window?window:this,function(){function e(){}var t=e.prototype;return t.on=function(e,t){var n;if(e&&t)return-1==(n=(n=this._events=this._events||{})[e]=n[e]||[]).indexOf(t)&&n.push(t),this},t.once=function(e,t){var n;if(e&&t)return this.on(e,t),((n=this._onceEvents=this._onceEvents||{})[e]=n[e]||{})[t]=!0,this},t.off=function(e,t){e=this._events&&this._events[e];if(e&&e.length)return-1!=(t=e.indexOf(t))&&e.splice(t,1),this},t.emitEvent=function(e,t){var n=this._events&&this._events[e];if(n&&n.length){n=n.slice(0),t=t||[];for(var o=this._onceEvents&&this._onceEvents[e],i=0;i{"function"==typeof define&&define.amd?define(["ev-emitter/ev-emitter"],function(e){return n(t,e)}):"object"==typeof module&&module.exports?module.exports=n(t,require("ev-emitter")):t.imagesLoaded=n(t,t.EvEmitter)})("undefined"!=typeof window?window:this,function(t,e){function r(e,t){for(var n in t)e[n]=t[n];return e}function a(e,t,n){var o,i;return this instanceof a?(o="string"==typeof(o=e)?document.querySelectorAll(e):o)?(this.elements=(i=o,Array.isArray(i)?i:"object"==typeof i&&"number"==typeof i.length?c.call(i):[i]),this.options=r({},this.options),"function"==typeof t?n=t:r(this.options,t),n&&this.on("always",n),this.getImages(),s&&(this.jqDeferred=new s.Deferred),void setTimeout(this.check.bind(this))):void l.error("Bad element for imagesLoaded "+(o||e)):new a(e,t,n)}function n(e){this.img=e}function o(e,t){this.url=e,this.element=t,this.img=new Image}var s=t.jQuery,l=t.console,c=Array.prototype.slice,u=((a.prototype=Object.create(e.prototype)).options={},a.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},a.prototype.addElementImages=function(e){"IMG"==e.nodeName&&this.addImage(e),!0===this.options.background&&this.addElementBackgroundImages(e);var t=e.nodeType;if(t&&u[t]){for(var n=e.querySelectorAll("img"),o=0;o{"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.PhotoSwipeUI_Default=t()})(this,function(){return function(o,s){function e(e){if(T)return!0;e=e||window.event,C.timeToIdle&&C.mouseUsed&&!y&&a();for(var t,n,o=(e.target||e.srcElement).getAttribute("class")||"",i=0;i