├── assets ├── built │ ├── vars.css │ ├── vars.css.map │ ├── infinitescroll.js │ ├── jquery.fitvids.js │ ├── jquery.fitvids.js.map │ ├── infinitescroll.js.map │ ├── screen.css │ └── screen.css.map ├── screenshot-desktop.jpg ├── css │ ├── vars.css │ ├── ghost │ │ ├── readmore.css │ │ ├── footer.css │ │ ├── errors.css │ │ ├── members.css │ │ ├── content.css │ │ └── header.css │ ├── components │ │ ├── buttons.css │ │ ├── forms.css │ │ └── global.css │ └── screen.css └── js │ ├── jquery.fitvids.js │ └── infinitescroll.js ├── renovate.json ├── partials ├── icons │ ├── arrow-left.hbs │ ├── arrow-right.hbs │ ├── rss.hbs │ ├── avatar.hbs │ ├── facebook.hbs │ ├── twitter.hbs │ └── loader.hbs └── card.hbs ├── .gitignore ├── .editorconfig ├── .github └── workflows │ ├── deploy-theme.yml │ └── test.yml ├── index.hbs ├── tag.hbs ├── page.hbs ├── LICENSE ├── error.hbs ├── author.hbs ├── post.hbs ├── README.md ├── gulpfile.js ├── package.json └── default.hbs /assets/built/vars.css: -------------------------------------------------------------------------------- 1 | 2 | /*# sourceMappingURL=vars.css.map */ -------------------------------------------------------------------------------- /assets/built/vars.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"vars.css"} -------------------------------------------------------------------------------- /assets/screenshot-desktop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TryGhost/Tribeca/HEAD/assets/screenshot-desktop.jpg -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "@tryghost:theme" 4 | ], 5 | "node": { 6 | "supportPolicy": ["lts_latest"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /partials/icons/arrow-left.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /partials/icons/arrow-right.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /partials/icons/rss.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | b-cov 2 | *.seed 3 | *.log 4 | *.csv 5 | *.dat 6 | *.out 7 | *.pid 8 | *.gz 9 | 10 | pids 11 | logs 12 | results 13 | 14 | npm-debug.log 15 | node_modules 16 | package-lock.json 17 | 18 | .idea/* 19 | *.iml 20 | projectFilesBackup 21 | 22 | .DS_Store 23 | 24 | dist/ 25 | -------------------------------------------------------------------------------- /partials/icons/avatar.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 4 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.hbs] 14 | insert_final_newline = false 15 | 16 | [*.md] 17 | trim_trailing_whitespace = false 18 | -------------------------------------------------------------------------------- /partials/icons/facebook.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/workflows/deploy-theme.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Theme 2 | on: 3 | push: 4 | branches: 5 | - main 6 | jobs: 7 | deploy: 8 | runs-on: ubuntu-18.04 9 | steps: 10 | - uses: actions/checkout@master 11 | - name: Deploy Ghost Theme 12 | uses: TryGhost/action-deploy-theme@v1.6.3 13 | with: 14 | api-url: ${{ secrets.GHOST_ADMIN_API_URL }} 15 | api-key: ${{ secrets.GHOST_ADMIN_API_KEY }} 16 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | on: 3 | pull_request: 4 | push: 5 | branches: 6 | - main 7 | - 'renovate/*' 8 | jobs: 9 | build: 10 | runs-on: ubuntu-18.04 11 | if: github.event_name == 'push' || (github.event_name == 'pull_request' && !startsWith(github.head_ref, 'renovate/')) 12 | strategy: 13 | matrix: 14 | node: [ '10' ] 15 | name: Node ${{ matrix.node }} 16 | steps: 17 | - uses: actions/checkout@v3 18 | - uses: actions/setup-node@v3 19 | with: 20 | node-version: ${{ matrix.node }} 21 | - run: yarn 22 | - run: yarn test:ci 23 | -------------------------------------------------------------------------------- /index.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 |
4 | {{#if @site.cover_image}} 5 | {{@site.title}} 6 | {{/if}} 7 |
8 |

{{@site.description}}

9 |
10 |
11 | 12 |
13 |
14 | 15 |
16 | {{#foreach posts}} 17 | 18 | {{> "card"}} {{!-- partials/card.hbs --}} 19 | 20 | {{/foreach}} 21 |
22 | 23 |
24 |
25 | 26 | {{!--
27 |
28 |

{{@site.description}}

29 |
30 |
--}} -------------------------------------------------------------------------------- /tag.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | {{#tag}} 4 |
5 | {{#if feature_image}} 6 | {{name}} 7 | {{/if}} 8 |
9 |

{{name}}

10 |

11 | {{#if description}} 12 | {{description}} 13 | {{else}} 14 | A collection of {{plural ../pagination.total empty='posts' singular='% post' plural='% posts'}} 15 | {{/if}} 16 |

17 |
18 |
19 | {{/tag}} 20 | 21 |
22 |
23 | 24 |
25 | {{#foreach posts}} 26 | 27 | {{> "card"}} {{!-- partials/card.hbs --}} 28 | 29 | {{/foreach}} 30 |
31 | 32 |
33 |
-------------------------------------------------------------------------------- /page.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | {{#post}} 4 |
5 | 6 |
7 |

{{title}}

8 | 9 | {{#if custom_excerpt}} 10 |

{{custom_excerpt}}

11 | {{/if}} 12 | 13 | {{#if feature_image}} 14 |
15 | {{#if feature_image_alt}}{{feature_image_alt}}{{else}}{{title}}{{/if}} 16 | {{#if feature_image_caption}} 17 |
{{feature_image_caption}}
18 | {{/if}} 19 |
20 | {{/if}} 21 |
22 | 23 |
24 | {{content}} 25 |
26 | 27 |
28 | {{/post}} 29 | -------------------------------------------------------------------------------- /partials/icons/twitter.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/css/vars.css: -------------------------------------------------------------------------------- 1 | /* Variables 2 | /* ---------------------------------------------------------- */ 3 | 4 | :root { 5 | 6 | /* Colours */ 7 | --color-primary: var(--ghost-accent-color, #3eb0ef); 8 | --color-base: #131313; 9 | --color-border: #ddd; 10 | --color-bg: #f5f5f5; 11 | 12 | /* Fonts */ 13 | --font-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; 14 | --font-serif: Georgia, Times, serif; 15 | --font-mono: Menlo, Courier, monospace; 16 | --font-light: 100; 17 | --font-normal: 400; 18 | --font-bold: 700; 19 | --font-heavy: 800; 20 | 21 | /* Breakpoints */ 22 | --xlarge: 1680px; 23 | --large: 1280px; 24 | --medium: 980px; 25 | --small: 740px; 26 | --xsmall: 480px; 27 | 28 | /* Sizes */ 29 | --height: 4rem; 30 | --margin: 2rem; 31 | --radius: 0.5rem; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /partials/icons/loader.hbs: -------------------------------------------------------------------------------- 1 | 3 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /assets/css/ghost/readmore.css: -------------------------------------------------------------------------------- 1 | /* Read More 2 | /* ---------------------------------------------------------- */ 3 | 4 | .gh-readmore { 5 | padding: 8vmin 4vw; 6 | font-size: 2.6rem; 7 | } 8 | 9 | .gh-readmore .gh-container { 10 | display: grid; 11 | grid-gap: 8vmin; 12 | grid-template-columns: 1fr 1fr; 13 | } 14 | 15 | .gh-readmore-prev { 16 | justify-content: flex-end; 17 | text-align: right; 18 | } 19 | 20 | .gh-readmore a { 21 | display: flex; 22 | color: currentColor; 23 | text-decoration: none; 24 | } 25 | 26 | .gh-readmore h4 { 27 | width: 100%; 28 | font-size: inherit; 29 | } 30 | 31 | .gh-readmore svg { 32 | display: inline-block; 33 | vertical-align: middle; 34 | height: 1em; 35 | margin: 0.15em 0 0; 36 | } 37 | 38 | .gh-readmore svg + h4, 39 | .gh-readmore h4 + svg { 40 | margin-left: 2vmin; 41 | } 42 | 43 | @media (max-width: 700px) { 44 | .gh-readmore { 45 | font-size: 1.6rem; 46 | } 47 | .gh-readmore svg { 48 | margin: 0.1em 0 0; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /assets/built/infinitescroll.js: -------------------------------------------------------------------------------- 1 | $(function(i){var t=1,o=window.location.pathname,r=i(document),a=i(".post-feed"),s=300,c=!1,l=!1,w=window.scrollY,d=window.innerHeight,u=r.height();function v(){w=window.scrollY,e()}function f(){d=window.innerHeight,u=r.height(),e()}function e(){c||requestAnimationFrame(n),c=!0}function n(){var e,n;if(n=/(?:page\/)(\d)(?:\/)$/i,(e=(e=o).replace(/#(.*)$/g,"").replace("////g","/")).match(n)&&(t=parseInt(e.match(n)[1]),e=e.replace(n,"")),o=e,!l)if(w+d<=u-s)c=!1;else{if(t>=maxPages)return window.removeEventListener("scroll",v,{passive:!0}),void window.removeEventListener("resize",f);l=!0,t+=1,i.get(o+"page/"+t+"/",function(e){e=document.createRange().createContextualFragment(e).querySelectorAll(".post");e.length&&[].forEach.call(e,function(e){a[0].appendChild(e)})}).fail(function(e){404===e.status&&(window.removeEventListener("scroll",v,{passive:!0}),window.removeEventListener("resize",f))}).always(function(){u=r.height(),c=l=!1})}}window.addEventListener("scroll",v,{passive:!0}),window.addEventListener("resize",f),n()}); 2 | //# sourceMappingURL=infinitescroll.js.map -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2025 Ghost Foundation 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /assets/css/ghost/footer.css: -------------------------------------------------------------------------------- 1 | /* Global Footer 2 | /* ---------------------------------------------------------- */ 3 | 4 | .gh-foot { 5 | display: flex; 6 | align-items: center; 7 | justify-content: center; 8 | padding: 8vmin 4vw; 9 | } 10 | 11 | .gh-foot .gh-container { 12 | width: auto; 13 | } 14 | 15 | .gh-foot a { 16 | color: inherit; 17 | } 18 | 19 | .gh-foot-menu { 20 | display: flex; 21 | align-items: center; 22 | justify-content: center; 23 | } 24 | 25 | .gh-foot-menu .nav { 26 | display: inline-flex; 27 | flex-wrap: wrap; 28 | align-items: center; 29 | justify-content: center; 30 | list-style: none; 31 | font-size: 1.8rem; 32 | } 33 | 34 | .gh-foot-menu .nav li { 35 | margin: 0 1.5vmin; 36 | padding: 0; 37 | } 38 | 39 | .gh-foot-menu .nav a { 40 | display: inline-block; 41 | padding: 3px 0; 42 | text-decoration: none; 43 | box-shadow: 0 -1px 0 0 currentcolor inset; 44 | } 45 | 46 | .gh-foot-meta { 47 | margin: 2rem 0; 48 | font-size: 1.5rem; 49 | text-align: center; 50 | opacity: 0.5; 51 | } 52 | 53 | @media (max-width: 700px) { 54 | .gh-foot-menu .nav { 55 | font-size: 1.6rem; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /partials/card.hbs: -------------------------------------------------------------------------------- 1 | {{!-- 2 | Re-usable card for linking to posts 3 | --}} 4 | 5 |
6 | 7 | {{#if feature_image}} 8 | {{#if feature_image_alt}}{{feature_image_alt}}{{else}}{{title}}{{/if}} 17 | {{/if}} 18 |
19 | {{reading_time}} 20 |

{{title}}

21 |

{{excerpt}}

22 | Read more 23 |
24 |
25 |
-------------------------------------------------------------------------------- /error.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{!< default}} 3 | 4 |
5 |
6 | 7 |
8 | 9 |

{{statusCode}}

10 |

{{message}}

11 | 12 | 13 | {{#if errorDetails}} 14 |
15 |

Theme errors:

16 |
    17 | {{#foreach errorDetails}} 18 |
  • 19 |
    {{{rule}}}
    20 | 21 | {{#foreach failures}} 22 | Ref: {{ref}}
    23 | Message: {{message}} 24 | {{/foreach}} 25 |
  • 26 | {{/foreach}} 27 |
28 |
29 | {{/if}} 30 | 31 |
32 | 33 |
34 |
-------------------------------------------------------------------------------- /assets/css/ghost/errors.css: -------------------------------------------------------------------------------- 1 | /* Error Templates 2 | /* ---------------------------------------------------------- */ 3 | 4 | .gh-error { 5 | flex: 1 0 auto; 6 | display: flex; 7 | flex-direction: column; 8 | justify-content: center; 9 | padding-bottom: 2vmin; 10 | } 11 | 12 | .gh-error-content { 13 | flex: 1 0 auto; 14 | text-align: center; 15 | } 16 | 17 | .gh-error-code { 18 | margin: 0; 19 | font-size: 14vmin; 20 | } 21 | 22 | .gh-error-description { 23 | max-width: 600px; 24 | margin: 0 auto; 25 | padding: 0 2rem; 26 | font-size: 4vmin; 27 | line-height: 1.2em; 28 | font-weight: 300; 29 | opacity: 0.6; 30 | } 31 | 32 | .gh-error-link { 33 | display: block; 34 | margin-top: 4vmin; 35 | font-size: 1.6rem; 36 | } 37 | 38 | .gh-error-stack { 39 | max-width: 600px; 40 | margin: 0 auto 0; 41 | padding: 8vmin 0; 42 | text-align: left; 43 | } 44 | 45 | .gh-error-stack-list { 46 | margin: 4vmin 0 0; 47 | font-size: 1.4rem; 48 | } 49 | 50 | .gh-error-stack-list > li { 51 | padding: 2rem 0; 52 | margin: 0; 53 | border-top: rgba(0,0,0,0.1) 1px solid; 54 | } 55 | 56 | .gh-error-stack-function { 57 | margin: 0 0 0.5em; 58 | font-size: 1.8rem; 59 | color: red; 60 | } 61 | -------------------------------------------------------------------------------- /author.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | {{#author}} 4 |
5 | {{#if cover_image}} 6 | {{name}} 7 | {{/if}} 8 |
9 | {{#if profile_image}} 10 | {{name}} 11 | {{/if}} 12 |

{{name}}

13 | {{#if bio}} 14 |

{{bio}}

15 | {{/if}} 16 | 17 |
18 | 29 |
30 |
31 |
32 | {{/author}} 33 | 34 |
35 |
36 | 37 |
38 | {{#foreach posts}} 39 | 40 | {{> "card"}} {{!-- partials/card.hbs --}} 41 | 42 | {{/foreach}} 43 |
44 | 45 |
46 |
-------------------------------------------------------------------------------- /assets/css/components/buttons.css: -------------------------------------------------------------------------------- 1 | /* Buttons 2 | /* ---------------------------------------------------------- */ 3 | 4 | .gh-button { 5 | display: inline-block; 6 | height: var(--height); 7 | padding: 0 2rem; 8 | border: 0; 9 | border-radius: var(--radius); 10 | cursor: pointer; 11 | font-family: var(--font-sans-serif); 12 | font-size: 1.4rem; 13 | font-weight: var(--font-normal); 14 | line-height: var(--height); 15 | text-align: center; 16 | text-decoration: none; 17 | white-space: nowrap; 18 | appearance: none; 19 | transition: 0.4s ease; 20 | } 21 | 22 | .gh-button.gh-button-fit { 23 | width: 100%; 24 | } 25 | 26 | .gh-button.gh-button-small { 27 | height: calc(var(--height) * 0.9); 28 | line-height: calc(var(--height) * 0.9); 29 | padding: 0 1.5rem; 30 | font-size: 1.2rem; 31 | } 32 | 33 | .gh-button.gh-button-large { 34 | height: calc(var(--height) * 1.14); 35 | line-height: calc(var(--height) * 1.14); 36 | padding: 0 3rem; 37 | font-size: 1.6rem; 38 | } 39 | 40 | .gh-button.gh-button-disabled, 41 | .gh-button:disabled { 42 | pointer-events: none; 43 | opacity: 0.4; 44 | } 45 | 46 | .gh-button { 47 | color: var(--color-primary) !important; 48 | background-color: transparent; 49 | box-shadow: inset 0 0 0 2px var(--color-primary); 50 | } 51 | 52 | .gh-button:hover { 53 | text-decoration: none; 54 | color: var(--color-primary) !important; 55 | box-shadow: inset 0 0 0 2px var(--color-primary); 56 | transition: 0.2s ease; 57 | } 58 | 59 | .gh-button.gh-button-primary { 60 | color: #fff !important; 61 | background-color: var(--color-primary); 62 | box-shadow: none; 63 | } 64 | 65 | .gh-button.gh-button-primary:hover { 66 | background-color: var(--color-primary); 67 | } 68 | -------------------------------------------------------------------------------- /assets/built/jquery.fitvids.js: -------------------------------------------------------------------------------- 1 | !function(o){"use strict";o.fn.fitVids=function(t){var e,i,r={customSelector:null,ignore:null};return document.getElementById("fit-vids-style")||(e=document.head||document.getElementsByTagName("head")[0],(i=document.createElement("div")).innerHTML='

x

',e.appendChild(i.childNodes[1])),t&&o.extend(r,t),this.each(function(){var t=['iframe[src*="player.vimeo.com"]','iframe[src*="youtube.com"]','iframe[src*="youtube-nocookie.com"]','iframe[src*="kickstarter.com"][src*="video.html"]',"object","embed"];r.customSelector&&t.push(r.customSelector);var d=".fitvidsignore";r.ignore&&(d=d+", "+r.ignore);t=o(this).find(t.join(","));(t=(t=t.not("object object")).not(d)).each(function(){var t,e,i=o(this);0
').parent(".fluid-width-video-wrapper").css("padding-top",100*t+"%"),i.removeAttr("height").removeAttr("width"))})})},o.fn.fitVids._count=0}(window.jQuery||window.Zepto); 2 | //# sourceMappingURL=jquery.fitvids.js.map -------------------------------------------------------------------------------- /post.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | {{#post}} 4 | 5 |
6 | 7 |
8 | 9 |

{{title}}

10 | 11 | {{#if custom_excerpt}} 12 |

{{custom_excerpt}}

13 | {{/if}} 14 | 15 | {{#if feature_image}} 16 |
17 | {{#if feature_image_alt}}{{feature_image_alt}}{{else}}{{title}}{{/if}} 18 | {{#if feature_image_caption}} 19 |
{{feature_image_caption}}
20 | {{/if}} 21 |
22 | {{/if}} 23 |
24 | 25 |
26 | {{content}} 27 |
28 | 29 |
30 | 31 | 34 | 35 | {{!-- 36 |
37 | If you want to embed comments, this is a good place to do it! 38 |
39 | --}} 40 | 41 |
42 | 43 |
44 | 45 | 57 | 58 | {{/post}} -------------------------------------------------------------------------------- /assets/css/ghost/members.css: -------------------------------------------------------------------------------- 1 | /* Members Forms 2 | /* ---------------------------------------------------------- */ 3 | 4 | form[data-members-form] .button-loader, 5 | form[data-members-form] .message-success, 6 | form[data-members-form] .message-error { 7 | display: none; 8 | } 9 | 10 | .message-success svg, 11 | .message-error svg { 12 | position: relative; 13 | top: -1px; 14 | margin-right: 5px; 15 | height: 15px; 16 | width: 15px; 17 | } 18 | .message-success svg { 19 | fill: #fff; 20 | } 21 | .message-error svg { 22 | fill: var(--color-primary); 23 | } 24 | 25 | form[data-members-form].success .message-success, 26 | form[data-members-form].error .message-error { 27 | position: fixed; 28 | top: 20px; 29 | left: 6vw; 30 | right: 6vw; 31 | z-index: 9999; 32 | max-width: calc(1400px - 12vw); 33 | margin: 0 auto; 34 | padding: 10px 0; 35 | color: #fff; 36 | font-size: 1.4rem; 37 | line-height: 1.5em; 38 | font-weight: 500; 39 | text-align: center; 40 | background: var(--color-base); 41 | border-radius: var(--radius); 42 | } 43 | form[data-members-form].success .message-success { 44 | background: var(--color-success); 45 | } 46 | form[data-members-form].error .message-error { 47 | color: var(--color-primary); 48 | background: #fff; 49 | box-shadow: var(--color-primary) 0 0 0 1px; 50 | } 51 | 52 | form[data-members-form] .button { 53 | position: relative; 54 | } 55 | 56 | /*-- Loading --*/ 57 | 58 | /* Hide button text */ 59 | form[data-members-form].loading .button-content { 60 | visibility: hidden; 61 | } 62 | 63 | /* Show loading spinner */ 64 | form[data-members-form].loading .button-loader { 65 | display: inline-block; 66 | position: absolute; 67 | left: 50%; 68 | margin-left: -19px; 69 | transform: scale(0.7); 70 | } 71 | 72 | .button-loader svg path, 73 | .button-loader svg rect{ 74 | fill: #fff; 75 | } 76 | 77 | /*-- Show success message on success --*/ 78 | form[data-members-form].success .message-success { 79 | display: block; 80 | } 81 | 82 | /*-- Show error message on error --*/ 83 | form[data-members-form].error .message-error { 84 | display: block; 85 | } 86 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tribeca 2 | 3 | A simple, beautiful theme for [Ghost](https://ghost.org) 4 | 5 |   6 | 7 | # First time using a Ghost theme? 8 | 9 | Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. 10 | 11 | We've documented our default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, we also have full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template. 12 | 13 | **The main files are:** 14 | 15 | - `default.hbs` - The main template file 16 | - `index.hbs` - Used for the home page 17 | - `post.hbs` - Used for individual posts 18 | - `page.hbs` - Used for individual pages 19 | - `tag.hbs` - Used for tag archives 20 | - `author.hbs` - Used for author archives 21 | 22 | One neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example: 23 | 24 | - `page-about.hbs` - Custom template for the `/about/` page 25 | - `tag-news.hbs` - Custom template for `/tag/news/` archive 26 | - `author-ali.hbs` - Custom template for `/author/ali/` archive 27 | 28 | 29 | # Development 30 | 31 | Styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node](https://nodejs.org/), [Yarn](https://yarnpkg.com/) and [Gulp](https://gulpjs.com) installed globally. After that, from the theme's root directory: 32 | 33 | ```bash 34 | # Install 35 | yarn 36 | 37 | # Run build & watch for changes 38 | $ yarn dev 39 | ``` 40 | 41 | Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. 42 | 43 | The `zip` Gulp task packages the theme files into `dist/.zip`, which you can then upload to your site. 44 | 45 | ```bash 46 | yarn zip 47 | ``` 48 | 49 | # PostCSS Features Used 50 | 51 | - 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. 52 | - Variables - Simple pure CSS variables 53 | - [Color Function](https://github.com/postcss/postcss-color-function) 54 | 55 | 56 | # Copyright & License 57 | 58 | Copyright (c) 2013-2025 Ghost Foundation - Released under the [MIT license](LICENSE). 59 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | const {series, watch, src, dest, parallel} = require('gulp'); 2 | const pump = require('pump'); 3 | 4 | // gulp plugins and utils 5 | var livereload = require('gulp-livereload'); 6 | var postcss = require('gulp-postcss'); 7 | var zip = require('gulp-zip'); 8 | var uglify = require('gulp-uglify'); 9 | var beeper = require('beeper'); 10 | 11 | // postcss plugins 12 | var autoprefixer = require('autoprefixer'); 13 | var colorFunction = require('postcss-color-function'); 14 | var cssnano = require('cssnano'); 15 | var customProperties = require('postcss-custom-properties'); 16 | var easyimport = require('postcss-easy-import'); 17 | 18 | function serve(done) { 19 | livereload.listen(); 20 | done(); 21 | } 22 | 23 | const handleError = (done) => { 24 | return function (err) { 25 | if (err) { 26 | beeper(); 27 | } 28 | return done(err); 29 | }; 30 | }; 31 | 32 | function hbs(done) { 33 | pump([ 34 | src(['*.hbs', 'partials/**/*.hbs', '!node_modules/**/*.hbs']), 35 | livereload() 36 | ], handleError(done)); 37 | } 38 | 39 | function css(done) { 40 | var processors = [ 41 | easyimport, 42 | customProperties({preserve: false}), 43 | colorFunction(), 44 | autoprefixer(), 45 | cssnano() 46 | ]; 47 | 48 | pump([ 49 | src('assets/css/*.css', {sourcemaps: true}), 50 | postcss(processors), 51 | dest('assets/built/', {sourcemaps: '.'}), 52 | livereload() 53 | ], handleError(done)); 54 | } 55 | 56 | function js(done) { 57 | pump([ 58 | src('assets/js/*.js', {sourcemaps: true}), 59 | uglify(), 60 | dest('assets/built/', {sourcemaps: '.'}), 61 | livereload() 62 | ], handleError(done)); 63 | } 64 | 65 | function zipper(done) { 66 | var targetDir = 'dist/'; 67 | var themeName = require('./package.json').name; 68 | var filename = themeName + '.zip'; 69 | 70 | pump([ 71 | src([ 72 | '**', 73 | '!node_modules', '!node_modules/**', 74 | '!dist', '!dist/**' 75 | ]), 76 | zip(filename), 77 | dest(targetDir) 78 | ], handleError(done)); 79 | } 80 | 81 | const cssWatcher = () => watch('assets/css/**', css); 82 | const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs', '!node_modules/**/*.hbs'], hbs); 83 | const watcher = parallel(cssWatcher, hbsWatcher); 84 | const build = series(css, js); 85 | const dev = series(build, serve, watcher); 86 | 87 | exports.build = build; 88 | exports.zip = series(build, zipper); 89 | exports.default = dev; 90 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tribeca", 3 | "description": "A custom theme for ghost", 4 | "demo": "https://tribeca.ghost.io", 5 | "version": "1.0.0", 6 | "engines": { 7 | "ghost": ">=4.0.0", 8 | "ghost-api": "v4" 9 | }, 10 | "license": "MIT", 11 | "screenshots": { 12 | "desktop": "assets/screenshot-desktop.jpg" 13 | }, 14 | "scripts": { 15 | "dev": "gulp", 16 | "zip": "gulp zip", 17 | "test": "gscan .", 18 | "test:ci": "gscan --fatal --verbose .", 19 | "pretest": "gulp build", 20 | "preship": "yarn test", 21 | "ship": "STATUS=$(git status --porcelain); echo $STATUS; if [ -z \"$STATUS\" ]; then yarn version && git push --follow-tags; fi" 22 | }, 23 | "author": { 24 | "name": "Ghost Foundation", 25 | "email": "hello@ghost.org", 26 | "url": "https://ghost.org" 27 | }, 28 | "gpm": { 29 | "type": "theme", 30 | "categories": [ 31 | "Minimal", 32 | "Magazine" 33 | ] 34 | }, 35 | "keywords": [ 36 | "ghost", 37 | "theme", 38 | "ghost-theme" 39 | ], 40 | "repository": { 41 | "type": "git", 42 | "url": "https://github.com/TryGhost/Tribeca.git" 43 | }, 44 | "bugs": "https://github.com/TryGhost/Tribeca/issues", 45 | "contributors": "https://github.com/TryGhost/Tribeca/graphs/contributors", 46 | "devDependencies": { 47 | "autoprefixer": "10.4.14", 48 | "beeper": "2.1.0", 49 | "cssnano": "5.1.15", 50 | "gscan": "4.1.4", 51 | "gulp": "4.0.2", 52 | "gulp-livereload": "4.0.2", 53 | "gulp-postcss": "9.0.1", 54 | "gulp-sourcemaps": "3.0.0", 55 | "gulp-uglify": "3.0.2", 56 | "gulp-util": "3.0.8", 57 | "gulp-watch": "5.0.1", 58 | "gulp-zip": "5.1.0", 59 | "postcss": "8.4.21", 60 | "postcss-color-function": "4.1.0", 61 | "postcss-custom-properties": "11.0.0", 62 | "postcss-easy-import": "3.0.0" 63 | }, 64 | "browserslist": [ 65 | "defaults" 66 | ], 67 | "config": { 68 | "posts_per_page": 15, 69 | "image_sizes": { 70 | "xxs": { 71 | "width": 30 72 | }, 73 | "xs": { 74 | "width": 100 75 | }, 76 | "s": { 77 | "width": 300 78 | }, 79 | "m": { 80 | "width": 600 81 | }, 82 | "l": { 83 | "width": 1200 84 | }, 85 | "xl": { 86 | "width": 2000 87 | } 88 | } 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /assets/css/components/forms.css: -------------------------------------------------------------------------------- 1 | /* Forms 2 | /* ---------------------------------------------------------- */ 3 | 4 | .gh-input, 5 | .gh-textarea { 6 | background: var(--color-bg); 7 | border-radius: var(--radius); 8 | border: none; 9 | border: solid 1px var(--color-border); 10 | color: inherit; 11 | display: block; 12 | outline: 0; 13 | padding: 0 0.6em; 14 | text-decoration: none; 15 | width: 100%; 16 | } 17 | 18 | .gh-input:focus { 19 | border-color: var(--color-primary); 20 | box-shadow: 0 0 0 1px var(--color-primary); 21 | } 22 | 23 | .gh-select { 24 | height: var(--height); 25 | padding-right: var(--height); 26 | text-overflow: ellipsis; 27 | } 28 | 29 | .gh-select option { 30 | color: var(--color-primary); 31 | background: var(--color-bg); 32 | } 33 | 34 | .gh-select:focus::-ms-value { 35 | background-color: transparent; 36 | } 37 | 38 | .gh-select::-ms-expand { 39 | display: none; 40 | } 41 | 42 | .gh-input, 43 | .gh-select { 44 | height: var(--height); 45 | } 46 | 47 | .gh-textarea { 48 | padding: 0.3em 0.6em; 49 | resize: vertical; 50 | } 51 | 52 | .gh-check { 53 | display: block; 54 | margin-right: -2em; 55 | opacity: 0; 56 | width: 1em; 57 | z-index: -1; 58 | } 59 | 60 | .gh-check + label, 61 | .gh-check + label { 62 | display: flex; 63 | align-items: center; 64 | color: var(--color-base); 65 | cursor: pointer; 66 | font-size: 1em; 67 | font-weight: var(--font-normal); 68 | padding-left: calc((var(--height) * 0.6) + 0.75em); 69 | padding-right: 2rem; 70 | position: relative; 71 | user-select: none; 72 | } 73 | 74 | .gh-check + label:before, 75 | .gh-check + label:before { 76 | background: var(--color-bg); 77 | border-radius: var(--radius); 78 | border: solid 1px var(--color-border); 79 | content: ''; 80 | display: inline-block; 81 | height: calc(var(--height) * 0.6); 82 | line-height: calc(var(--height) * 0.56); 83 | text-align: center; 84 | width: calc(var(--height) * 0.6); 85 | margin-right: 1rem; 86 | } 87 | 88 | .gh-check:checked + label:before, 89 | .gh-check:checked + label:before { 90 | background: var(--color-primary); 91 | border-color: var(--color-primary); 92 | color: var(--color-bg); 93 | content: '✓'; 94 | } 95 | 96 | .gh-check:focus + label:before, 97 | .gh-check:focus + label:before { 98 | border-color: var(--color-primary); 99 | box-shadow: 0 0 0 1px var(--color-primary); 100 | } 101 | 102 | 103 | .gh-check + label:before { 104 | border-radius: var(--radius); 105 | } 106 | 107 | .gh-check + label:before { 108 | border-radius: 100%; 109 | } 110 | -------------------------------------------------------------------------------- /assets/js/jquery.fitvids.js: -------------------------------------------------------------------------------- 1 | /*jshint browser:true */ 2 | /*! 3 | * FitVids 1.3 4 | * 5 | * 6 | * Copyright 2017, Chris Coyier + Dave Rupert + Ghost Foundation 7 | * This is an unofficial release, ported by John O'Nolan 8 | * Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ 9 | * Released under the MIT license 10 | * 11 | */ 12 | 13 | ;(function( $ ){ 14 | 15 | 'use strict'; 16 | 17 | $.fn.fitVids = function( options ) { 18 | var settings = { 19 | customSelector: null, 20 | ignore: null 21 | }; 22 | 23 | if(!document.getElementById('fit-vids-style')) { 24 | // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js 25 | var head = document.head || document.getElementsByTagName('head')[0]; 26 | var css = '.fluid-width-video-container{flex-grow: 1;width:100%;}.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}'; 27 | var div = document.createElement("div"); 28 | div.innerHTML = '

x

'; 29 | head.appendChild(div.childNodes[1]); 30 | } 31 | 32 | if ( options ) { 33 | $.extend( settings, options ); 34 | } 35 | 36 | return this.each(function(){ 37 | var selectors = [ 38 | 'iframe[src*="player.vimeo.com"]', 39 | 'iframe[src*="youtube.com"]', 40 | 'iframe[src*="youtube-nocookie.com"]', 41 | 'iframe[src*="kickstarter.com"][src*="video.html"]', 42 | 'object', 43 | 'embed' 44 | ]; 45 | 46 | if (settings.customSelector) { 47 | selectors.push(settings.customSelector); 48 | } 49 | 50 | var ignoreList = '.fitvidsignore'; 51 | 52 | if(settings.ignore) { 53 | ignoreList = ignoreList + ', ' + settings.ignore; 54 | } 55 | 56 | var $allVideos = $(this).find(selectors.join(',')); 57 | $allVideos = $allVideos.not('object object'); // SwfObj conflict patch 58 | $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video. 59 | 60 | $allVideos.each(function(){ 61 | var $this = $(this); 62 | if($this.parents(ignoreList).length > 0) { 63 | return; // Disable FitVids on this video. 64 | } 65 | if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } 66 | if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width')))) 67 | { 68 | $this.attr('height', 9); 69 | $this.attr('width', 16); 70 | } 71 | var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(), 72 | width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(), 73 | aspectRatio = height / width; 74 | if(!$this.attr('name')){ 75 | var videoName = 'fitvid' + $.fn.fitVids._count; 76 | $this.attr('name', videoName); 77 | $.fn.fitVids._count++; 78 | } 79 | $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%'); 80 | $this.removeAttr('height').removeAttr('width'); 81 | }); 82 | }); 83 | }; 84 | 85 | // Internal counter for unique video names. 86 | $.fn.fitVids._count = 0; 87 | 88 | // Works with either jQuery or Zepto 89 | })( window.jQuery || window.Zepto ); 90 | -------------------------------------------------------------------------------- /assets/css/components/global.css: -------------------------------------------------------------------------------- 1 | /* Reset 2 | /* ---------------------------------------------------------- */ 3 | 4 | *, 5 | *::before, 6 | *::after { 7 | box-sizing: border-box; 8 | } 9 | 10 | html { 11 | overflow-x: hidden; 12 | overflow-y: scroll; 13 | font-size: 62.5%; 14 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 15 | } 16 | 17 | body { 18 | min-height: 100vh; 19 | margin: 0; 20 | padding: 0; 21 | color: color(var(--color-base) l(+20%)); 22 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; 23 | font-size: 1.5rem; 24 | line-height: 1.6em; 25 | font-weight: 400; 26 | font-style: normal; 27 | background: #fff; 28 | scroll-behavior: smooth; 29 | overflow-x: hidden; 30 | -webkit-font-smoothing: antialiased; 31 | -moz-osx-font-smoothing: grayscale; 32 | } 33 | 34 | p, 35 | ul, 36 | ol, 37 | li, 38 | dl, 39 | dd, 40 | hr, 41 | pre, 42 | form, 43 | table, 44 | video, 45 | figure, 46 | figcaption, 47 | blockquote { 48 | margin: 0; 49 | padding: 0; 50 | } 51 | 52 | ul[class], 53 | ol[class] { 54 | padding: 0; 55 | list-style: none; 56 | } 57 | 58 | img { 59 | display: block; 60 | max-width: 100%; 61 | height: auto; 62 | } 63 | 64 | input, 65 | button, 66 | select, 67 | textarea { 68 | font: inherit; 69 | } 70 | 71 | fieldset { 72 | margin: 0; 73 | padding: 0; 74 | border: 0; 75 | } 76 | 77 | label { 78 | display: block; 79 | font-size: 0.9em; 80 | font-weight: 700; 81 | } 82 | 83 | hr { 84 | position: relative; 85 | display: block; 86 | width: 100%; 87 | height: 1px; 88 | border: 0; 89 | border-top: 1px solid currentcolor; 90 | opacity: 0.2; 91 | } 92 | 93 | ::selection { 94 | text-shadow: none; 95 | background: #cbeafb; 96 | } 97 | 98 | mark { 99 | background-color: #fdffb6; 100 | } 101 | 102 | small { 103 | font-size: 80%; 104 | } 105 | 106 | sub, 107 | sup { 108 | position: relative; 109 | font-size: 75%; 110 | line-height: 0; 111 | vertical-align: baseline; 112 | } 113 | sup { 114 | top: -0.5em; 115 | } 116 | sub { 117 | bottom: -0.25em; 118 | } 119 | 120 | a:not([class]) { 121 | color: var(--color-primary); 122 | text-decoration-skip-ink: auto; 123 | } 124 | 125 | a[class] { 126 | color: inherit; 127 | text-decoration: none; 128 | transition: 0.4s ease; 129 | } 130 | 131 | a[class]:hover { 132 | transition: 0.2s ease; 133 | } 134 | 135 | h1, 136 | h2, 137 | h3, 138 | h4, 139 | h5, 140 | h6 { 141 | margin: 0; 142 | line-height: 1.15em; 143 | font-weight: 700; 144 | } 145 | 146 | h1 { 147 | font-size: 4.6rem; 148 | letter-spacing: -0.5px; 149 | } 150 | @media (max-width: 500px) { 151 | h1 { 152 | font-size: 2.7rem; 153 | } 154 | } 155 | 156 | h2 { 157 | font-size: 3.6rem; 158 | } 159 | @media (max-width: 500px) { 160 | h2 { 161 | font-size: 2.2rem; 162 | } 163 | } 164 | 165 | h3 { 166 | font-size: 3.2rem; 167 | } 168 | @media (max-width: 500px) { 169 | h3 { 170 | font-size: 1.8rem; 171 | } 172 | } 173 | 174 | h4 { 175 | font-size: 2.6rem; 176 | } 177 | 178 | h5 { 179 | font-size: 2.4rem; 180 | } 181 | 182 | h6 { 183 | font-size: 2.2rem; 184 | } 185 | 186 | /* Remove all animations and transitions for people that prefer not to see them */ 187 | @media (prefers-reduced-motion: reduce) { 188 | * { 189 | animation-duration: 0.01ms !important; 190 | animation-iteration-count: 1 !important; 191 | transition-duration: 0.01ms !important; 192 | scroll-behavior: auto !important; 193 | } 194 | } 195 | -------------------------------------------------------------------------------- /assets/js/infinitescroll.js: -------------------------------------------------------------------------------- 1 | /* global maxPages */ 2 | 3 | // Code snippet inspired by https://github.com/douglasrodrigues5/ghost-blog-infinite-scroll 4 | $(function ($) { 5 | var currentPage = 1; 6 | var pathname = window.location.pathname; 7 | var $document = $(document); 8 | var $result = $('.post-feed'); 9 | var buffer = 300; 10 | 11 | var ticking = false; 12 | var isLoading = false; 13 | 14 | var lastScrollY = window.scrollY; 15 | var lastWindowHeight = window.innerHeight; 16 | var lastDocumentHeight = $document.height(); 17 | 18 | function onScroll() { 19 | lastScrollY = window.scrollY; 20 | requestTick(); 21 | } 22 | 23 | function onResize() { 24 | lastWindowHeight = window.innerHeight; 25 | lastDocumentHeight = $document.height(); 26 | requestTick(); 27 | } 28 | 29 | function requestTick() { 30 | if (!ticking) { 31 | requestAnimationFrame(infiniteScroll); 32 | } 33 | ticking = true; 34 | } 35 | 36 | function sanitizePathname(path) { 37 | var paginationRegex = /(?:page\/)(\d)(?:\/)$/i; 38 | 39 | // remove hash params from path 40 | path = path.replace(/#(.*)$/g, '').replace('////g', '/'); 41 | 42 | // remove pagination from the path and replace the current pages 43 | // with the actual requested page. E. g. `/page/3/` indicates that 44 | // the user actually requested page 3, so we should request page 4 45 | // next, unless it's the last page already. 46 | if (path.match(paginationRegex)) { 47 | currentPage = parseInt(path.match(paginationRegex)[1]); 48 | 49 | path = path.replace(paginationRegex, ''); 50 | } 51 | 52 | return path; 53 | } 54 | 55 | function infiniteScroll() { 56 | // sanitize the pathname from possible pagination or hash params 57 | pathname = sanitizePathname(pathname); 58 | 59 | // return if already loading 60 | if (isLoading) { 61 | return; 62 | } 63 | 64 | // return if not scroll to the bottom 65 | if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) { 66 | ticking = false; 67 | return; 68 | } 69 | 70 | /** 71 | * maxPages is defined in default.hbs and is the value 72 | * of the amount of pagination pages. 73 | * If we reached the last page or are past it, 74 | * we return and disable the listeners. 75 | */ 76 | if (currentPage >= maxPages) { 77 | window.removeEventListener('scroll', onScroll, {passive: true}); 78 | window.removeEventListener('resize', onResize); 79 | return; 80 | } 81 | 82 | isLoading = true; 83 | 84 | // next page 85 | currentPage += 1; 86 | 87 | // Load more 88 | var nextPage = pathname + 'page/' + currentPage + '/'; 89 | 90 | $.get(nextPage, function (content) { 91 | var parse = document.createRange().createContextualFragment(content); 92 | var posts = parse.querySelectorAll('.post'); 93 | if (posts.length) { 94 | [].forEach.call(posts, function (post) { 95 | $result[0].appendChild(post); 96 | }); 97 | } 98 | }).fail(function (xhr) { 99 | // 404 indicates we've run out of pages 100 | if (xhr.status === 404) { 101 | window.removeEventListener('scroll', onScroll, {passive: true}); 102 | window.removeEventListener('resize', onResize); 103 | } 104 | }).always(function () { 105 | lastDocumentHeight = $document.height(); 106 | isLoading = false; 107 | ticking = false; 108 | }); 109 | } 110 | 111 | window.addEventListener('scroll', onScroll, {passive: true}); 112 | window.addEventListener('resize', onResize); 113 | 114 | infiniteScroll(); 115 | }); 116 | -------------------------------------------------------------------------------- /default.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | {{meta_title}} 12 | 13 | {{ghost_head}} 14 | {{!-- Outputs SEO meta+structured data and important settings, should always be in --}} 15 | 16 | 17 | 18 |
19 | 20 |
21 | 52 |
53 | 54 |
55 | 56 | {{{body}}} 57 | {{!-- All content gets inserted here, index.hbs, post.hbs, etc --}} 58 | 59 |
60 | 61 |
62 |
63 |
64 | {{navigation}} 65 |
66 |
67 | Published with Ghost 68 |
69 |
70 |
71 | 72 |
73 | 74 | {{!-- --}} 75 | 76 | 77 | 78 | {{#if pagination.pages}} 79 | 82 | 83 | {{/if}} 84 | 85 | 93 | 94 | {{#is "post, page"}} 95 | 96 | 110 | {{/is}} 111 | 112 | {{ghost_foot}} 113 | {{!-- Outputs important scripts - should always be included before closing body tag --}} 114 | 115 | 116 | -------------------------------------------------------------------------------- /assets/built/jquery.fitvids.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"jquery.fitvids.js","sources":["jquery.fitvids.js"],"sourcesContent":["/*jshint browser:true */\n/*!\n* FitVids 1.3\n*\n*\n* Copyright 2017, Chris Coyier + Dave Rupert + Ghost Foundation\n* This is an unofficial release, ported by John O'Nolan\n* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/\n* Released under the MIT license\n*\n*/\n\n;(function( $ ){\n\n 'use strict';\n\n $.fn.fitVids = function( options ) {\n var settings = {\n customSelector: null,\n ignore: null\n };\n\n if(!document.getElementById('fit-vids-style')) {\n // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js\n var head = document.head || document.getElementsByTagName('head')[0];\n var css = '.fluid-width-video-container{flex-grow: 1;width:100%;}.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';\n var div = document.createElement(\"div\");\n div.innerHTML = '

x

';\n head.appendChild(div.childNodes[1]);\n }\n\n if ( options ) {\n $.extend( settings, options );\n }\n\n return this.each(function(){\n var selectors = [\n 'iframe[src*=\"player.vimeo.com\"]',\n 'iframe[src*=\"youtube.com\"]',\n 'iframe[src*=\"youtube-nocookie.com\"]',\n 'iframe[src*=\"kickstarter.com\"][src*=\"video.html\"]',\n 'object',\n 'embed'\n ];\n\n if (settings.customSelector) {\n selectors.push(settings.customSelector);\n }\n\n var ignoreList = '.fitvidsignore';\n\n if(settings.ignore) {\n ignoreList = ignoreList + ', ' + settings.ignore;\n }\n\n var $allVideos = $(this).find(selectors.join(','));\n $allVideos = $allVideos.not('object object'); // SwfObj conflict patch\n $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.\n\n $allVideos.each(function(){\n var $this = $(this);\n if($this.parents(ignoreList).length > 0) {\n return; // Disable FitVids on this video.\n }\n if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }\n if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))\n {\n $this.attr('height', 9);\n $this.attr('width', 16);\n }\n var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),\n width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),\n aspectRatio = height / width;\n if(!$this.attr('name')){\n var videoName = 'fitvid' + $.fn.fitVids._count;\n $this.attr('name', videoName);\n $.fn.fitVids._count++;\n }\n $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');\n $this.removeAttr('height').removeAttr('width');\n });\n });\n };\n\n // Internal counter for unique video names.\n $.fn.fitVids._count = 0;\n\n// Works with either jQuery or Zepto\n})( window.jQuery || window.Zepto );\n"],"names":["$","fn","fitVids","options","head","div","settings","customSelector","ignore","document","getElementById","getElementsByTagName","createElement","innerHTML","appendChild","childNodes","extend","this","each","selectors","push","ignoreList","$allVideos","find","join","not","aspectRatio","videoName","$this","parents","length","tagName","toLowerCase","parent","css","isNaN","attr","parseInt","height","width","_count","wrap","removeAttr","window","jQuery","Zepto"],"mappings":"CAYC,SAAWA,gBAIVA,EAAEC,GAAGC,QAAU,SAAUC,GACvB,IAOMC,EAEAC,EATFC,EAAW,CACbC,eAAgB,KAChBC,OAAQ,MAgBV,OAbIC,SAASC,eAAe,oBAEtBN,EAAOK,SAASL,MAAQK,SAASE,qBAAqB,QAAQ,IAE9DN,EAAMI,SAASG,cAAc,QAC7BC,UAAY,oUAChBT,EAAKU,YAAYT,EAAIU,WAAW,KAG7BZ,GACHH,EAAEgB,OAAQV,EAAUH,GAGfc,KAAKC,KAAK,WACf,IAAIC,EAAY,CACd,kCACA,6BACA,sCACA,oDACA,SACA,SAGEb,EAASC,gBACXY,EAAUC,KAAKd,EAASC,gBAG1B,IAAIc,EAAa,iBAEdf,EAASE,SACVa,EAAaA,EAAa,KAAOf,EAASE,QAGxCc,EAAatB,EAAEiB,MAAMM,KAAKJ,EAAUK,KAAK,OAE7CF,GADAA,EAAaA,EAAWG,IAAI,kBACJA,IAAIJ,IAEjBH,KAAK,WACd,IAYIQ,EAEEC,EAdFC,EAAQ5B,EAAEiB,MACwB,EAAnCW,EAAMC,QAAQR,GAAYS,QAGM,UAA/Bb,KAAKc,QAAQC,eAA6BJ,EAAMK,OAAO,UAAUH,QAAUF,EAAMK,OAAO,8BAA8BH,SACpHF,EAAMM,IAAI,WAAcN,EAAMM,IAAI,WAAcC,MAAMP,EAAMQ,KAAK,aAAcD,MAAMP,EAAMQ,KAAK,YAEpGR,EAAMQ,KAAK,SAAU,GACrBR,EAAMQ,KAAK,QAAS,KAIlBV,GAF0C,WAA/BT,KAAKc,QAAQC,eAA+BJ,EAAMQ,KAAK,YAAcD,MAAME,SAAST,EAAMQ,KAAK,UAAW,KAAUC,SAAST,EAAMQ,KAAK,UAAW,IAAMR,EAAMU,WACjKH,MAAME,SAAST,EAAMQ,KAAK,SAAU,KAA2CR,EAAMW,QAA1CF,SAAST,EAAMQ,KAAK,SAAU,KAElFR,EAAMQ,KAAK,UACTT,EAAY,SAAW3B,EAAEC,GAAGC,QAAQsC,OACxCZ,EAAMQ,KAAK,OAAQT,GACnB3B,EAAEC,GAAGC,QAAQsC,UAEfZ,EAAMa,KAAK,gGAAgGR,OAAO,8BAA8BC,IAAI,cAA8B,IAAdR,EAAmB,KACvLE,EAAMc,WAAW,UAAUA,WAAW,eAM5C1C,EAAEC,GAAGC,QAAQsC,OAAS,EAzEvB,CA4EGG,OAAOC,QAAUD,OAAOE"} -------------------------------------------------------------------------------- /assets/built/infinitescroll.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"infinitescroll.js","sources":["infinitescroll.js"],"sourcesContent":["/* global maxPages */\n\n// Code snippet inspired by https://github.com/douglasrodrigues5/ghost-blog-infinite-scroll\n$(function ($) {\n var currentPage = 1;\n var pathname = window.location.pathname;\n var $document = $(document);\n var $result = $('.post-feed');\n var buffer = 300;\n\n var ticking = false;\n var isLoading = false;\n\n var lastScrollY = window.scrollY;\n var lastWindowHeight = window.innerHeight;\n var lastDocumentHeight = $document.height();\n\n function onScroll() {\n lastScrollY = window.scrollY;\n requestTick();\n }\n\n function onResize() {\n lastWindowHeight = window.innerHeight;\n lastDocumentHeight = $document.height();\n requestTick();\n }\n\n function requestTick() {\n if (!ticking) {\n requestAnimationFrame(infiniteScroll);\n }\n ticking = true;\n }\n\n function sanitizePathname(path) {\n var paginationRegex = /(?:page\\/)(\\d)(?:\\/)$/i;\n\n // remove hash params from path\n path = path.replace(/#(.*)$/g, '').replace('////g', '/');\n\n // remove pagination from the path and replace the current pages\n // with the actual requested page. E. g. `/page/3/` indicates that\n // the user actually requested page 3, so we should request page 4\n // next, unless it's the last page already.\n if (path.match(paginationRegex)) {\n currentPage = parseInt(path.match(paginationRegex)[1]);\n\n path = path.replace(paginationRegex, '');\n }\n\n return path;\n }\n\n function infiniteScroll() {\n // sanitize the pathname from possible pagination or hash params\n pathname = sanitizePathname(pathname);\n\n // return if already loading\n if (isLoading) {\n return;\n }\n\n // return if not scroll to the bottom\n if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) {\n ticking = false;\n return;\n }\n\n /**\n * maxPages is defined in default.hbs and is the value\n * of the amount of pagination pages.\n * If we reached the last page or are past it,\n * we return and disable the listeners.\n */\n if (currentPage >= maxPages) {\n window.removeEventListener('scroll', onScroll, {passive: true});\n window.removeEventListener('resize', onResize);\n return;\n }\n\n isLoading = true;\n\n // next page\n currentPage += 1;\n\n // Load more\n var nextPage = pathname + 'page/' + currentPage + '/';\n\n $.get(nextPage, function (content) {\n var parse = document.createRange().createContextualFragment(content);\n var posts = parse.querySelectorAll('.post');\n if (posts.length) {\n [].forEach.call(posts, function (post) {\n $result[0].appendChild(post);\n });\n }\n }).fail(function (xhr) {\n // 404 indicates we've run out of pages\n if (xhr.status === 404) {\n window.removeEventListener('scroll', onScroll, {passive: true});\n window.removeEventListener('resize', onResize);\n }\n }).always(function () {\n lastDocumentHeight = $document.height();\n isLoading = false;\n ticking = false;\n });\n }\n\n window.addEventListener('scroll', onScroll, {passive: true});\n window.addEventListener('resize', onResize);\n\n infiniteScroll();\n});\n"],"names":["$","currentPage","pathname","window","location","$document","document","$result","buffer","ticking","isLoading","lastScrollY","scrollY","lastWindowHeight","innerHeight","lastDocumentHeight","height","onScroll","requestTick","onResize","requestAnimationFrame","infiniteScroll","path","paginationRegex","replace","match","parseInt","maxPages","removeEventListener","passive","get","content","posts","createRange","createContextualFragment","querySelectorAll","length","forEach","call","post","appendChild","fail","xhr","status","always","addEventListener"],"mappings":"AAGAA,EAAE,SAAUA,GACR,IAAIC,EAAc,EACdC,EAAWC,OAAOC,SAASF,SAC3BG,EAAYL,EAAEM,UACdC,EAAUP,EAAE,cACZQ,EAAS,IAETC,GAAU,EACVC,GAAY,EAEZC,EAAcR,OAAOS,QACrBC,EAAmBV,OAAOW,YAC1BC,EAAqBV,EAAUW,SAEnC,SAASC,IACLN,EAAcR,OAAOS,QACrBM,IAGJ,SAASC,IACLN,EAAmBV,OAAOW,YAC1BC,EAAqBV,EAAUW,SAC/BE,IAGJ,SAASA,IACAT,GACDW,sBAAsBC,GAE1BZ,GAAU,EAsBd,SAASY,IAnBT,IAA0BC,EAClBC,EAuBJ,GAvBIA,EAAkB,0BAGtBD,GAJsBA,EAqBMpB,GAjBhBsB,QAAQ,UAAW,IAAIA,QAAQ,QAAS,MAM3CC,MAAMF,KACXtB,EAAcyB,SAASJ,EAAKG,MAAMF,GAAiB,IAEnDD,EAAOA,EAAKE,QAAQD,EAAiB,KAQzCrB,EALOoB,GAQHZ,EAKJ,GAAIC,EAAcE,GAAoBE,EAAqBP,EACvDC,GAAU,MADd,CAWA,GAAIR,GAAe0B,SAGf,OAFAxB,OAAOyB,oBAAoB,SAAUX,EAAU,CAACY,SAAS,SACzD1B,OAAOyB,oBAAoB,SAAUT,GAIzCT,GAAY,EAGZT,GAAe,EAKfD,EAAE8B,IAFa5B,EAAW,QAAUD,EAAc,IAElC,SAAU8B,GAElBC,EADQ1B,SAAS2B,cAAcC,yBAAyBH,GAC1CI,iBAAiB,SAC/BH,EAAMI,QACN,GAAGC,QAAQC,KAAKN,EAAO,SAAUO,GAC7BhC,EAAQ,GAAGiC,YAAYD,OAGhCE,KAAK,SAAUC,GAEK,MAAfA,EAAIC,SACJxC,OAAOyB,oBAAoB,SAAUX,EAAU,CAACY,SAAS,IACzD1B,OAAOyB,oBAAoB,SAAUT,MAE1CyB,OAAO,WACN7B,EAAqBV,EAAUW,SAE/BP,EADAC,GAAY,KAKpBP,OAAO0C,iBAAiB,SAAU5B,EAAU,CAACY,SAAS,IACtD1B,OAAO0C,iBAAiB,SAAU1B,GAElCE"} -------------------------------------------------------------------------------- /assets/css/screen.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | This is a development CSS file which is compiled to a minified 4 | production stylesheet in assets/built/screen.css using: gulp dev 5 | 6 | */ 7 | 8 | /* Lib - Local component imports 9 | /* ---------------------------------------------------------- */ 10 | 11 | /* Base components */ 12 | @import "vars.css"; 13 | @import "components/global.css"; 14 | @import "components/forms.css"; 15 | @import "components/buttons.css"; 16 | 17 | /* Ghost components */ 18 | @import "ghost/header.css"; 19 | @import "ghost/content.css"; 20 | @import "ghost/readmore.css"; 21 | @import "ghost/members.css"; 22 | @import "ghost/errors.css"; 23 | @import "ghost/footer.css"; 24 | 25 | 26 | /* Main - Your styles here! Edit below 27 | /* ---------------------------------------------------------- */ 28 | 29 | html, 30 | .gh-viewport { 31 | display: flex; 32 | flex-direction: column; 33 | min-height: 100vh; 34 | color: #fff; 35 | background: #ce9898; 36 | /* background: #8a9d96; */ 37 | } 38 | 39 | .gh-main { 40 | flex: 1 0 auto; 41 | display: flex; 42 | flex-direction: column; 43 | } 44 | 45 | .gh-page { 46 | padding: 0 4vw; 47 | color: #000; 48 | background: #fff; 49 | } 50 | 51 | .gh-article { 52 | padding: 8vmin 0; 53 | } 54 | 55 | .gh-postfeed { 56 | padding: 8vmin 0; 57 | display: grid; 58 | grid-gap: 30px; 59 | grid-template-columns: 1fr 1fr 1fr; 60 | } 61 | 62 | @media (max-width: 900px) { 63 | .gh-postfeed { 64 | grid-template-columns: 1fr 1fr; 65 | } 66 | } 67 | 68 | .gh-container { 69 | width: 100%; 70 | max-width: 1300px; 71 | margin: 0 auto; 72 | } 73 | 74 | .gh-head-actions a { 75 | display: inline-flex; 76 | align-items: center; 77 | margin: 0; 78 | padding: 10px; 79 | } 80 | 81 | .gh-head-actions a svg { 82 | height: 1.8rem; 83 | fill: currentcolor; 84 | } 85 | 86 | .gh-head-actions a:first-child svg { 87 | margin-left: 20px; 88 | } 89 | 90 | .gh-head-actions a:last-child svg { 91 | height: 2rem; 92 | } 93 | 94 | /* Index 95 | /* ---------------------------------------------------------- */ 96 | 97 | .home-template .gh-hero { 98 | min-height: 100vh; 99 | padding-bottom: 4vw; 100 | } 101 | 102 | .home-template .gh-hero-content h1 { 103 | font-size: 6vmin; 104 | } 105 | 106 | .gh-card-link { 107 | display: flex; 108 | flex-direction: column; 109 | } 110 | 111 | .gh-card-image { 112 | width: 100%; 113 | max-height: 700px; 114 | object-fit: cover; 115 | margin-bottom: 2vmin; 116 | } 117 | 118 | .gh-card-meta { 119 | display: block; 120 | margin: 0 0 1rem; 121 | font-size: 1.2rem; 122 | line-height: 1.2em; 123 | letter-spacing: 0.5px; 124 | text-transform: uppercase; 125 | opacity: 0.8; 126 | } 127 | 128 | .gh-card-content { 129 | max-width: 720px; 130 | margin: 0 auto; 131 | font-size: 1.4rem; 132 | line-height: 1.5em; 133 | } 134 | 135 | .gh-card-content h2 { 136 | margin: 0; 137 | font-size: 1.8rem; 138 | } 139 | 140 | .gh-card-content p { 141 | margin: 1rem 0; 142 | } 143 | 144 | .gh-card-content > strong { 145 | display: inline-block; 146 | padding: 1px 0; 147 | font-weight: 500; 148 | box-shadow: 0 -1px 0 0 inset currentColor; 149 | opacity: 0.5; 150 | } 151 | 152 | 153 | /* Page 154 | /* ---------------------------------------------------------- */ 155 | 156 | .gh-page-head { 157 | margin: 0 auto; 158 | padding: 8vmin 0 4vmin; 159 | text-align: center; 160 | } 161 | 162 | .gh-page-image { 163 | margin: 4vmin 0 0 0; 164 | } 165 | 166 | .gh-page-head > p { 167 | max-width: 720px; 168 | margin: 0.3em auto 0; 169 | padding: 0 6vmin; 170 | font-size: 1.3em; 171 | line-height: 1.4em; 172 | opacity: 0.5; 173 | } 174 | 175 | @media (max-width: 700px) { 176 | .gh-page-head > p { 177 | font-size: 1.6rem; 178 | } 179 | } 180 | 181 | 182 | /* Post 183 | /* ---------------------------------------------------------- */ 184 | 185 | .gh-header { 186 | padding: 0 0 8vmin 0; 187 | text-align: center; 188 | } 189 | 190 | .gh-post-meta { 191 | display: block; 192 | margin: 0 0 1rem; 193 | font-size: 1.4rem; 194 | letter-spacing: 0.5px; 195 | text-transform: uppercase; 196 | opacity: 0.8; 197 | } 198 | 199 | .gh-excerpt { 200 | margin: 1rem 0 0 0; 201 | } 202 | 203 | .gh-feature-image { 204 | grid-column: wide-start / wide-end; 205 | width: 100%; 206 | margin: 8vmin 0 0; 207 | } 208 | 209 | .gh-post-footer { 210 | margin: 2rem 0; 211 | } 212 | 213 | 214 | /* Author Archive 215 | /* ---------------------------------------------------------- */ 216 | 217 | .gh-author-image { 218 | height: 10vmin; 219 | width: 10vmin; 220 | margin: 0 auto 1.5em; 221 | border-radius: 100%; 222 | overflow: hidden; 223 | object-fit: cover; 224 | } 225 | 226 | .gh-author-meta { 227 | margin: 2vmin 0 0 0; 228 | font-size: 1.2em; 229 | } 230 | 231 | .gh-author-links { 232 | display: flex; 233 | align-items: center; 234 | justify-content: center; 235 | } 236 | 237 | .gh-author-links a { 238 | position: relative; 239 | display: inline-flex; 240 | align-items: center; 241 | margin: 0 0.75vmin; 242 | color: currentColor; 243 | } 244 | 245 | .gh-author-links a + a:before { 246 | display: block; 247 | content: ""; 248 | margin: 0 1.25vmin 0 0; 249 | height: 1em; 250 | width: 1px; 251 | background: currentColor; 252 | transform: rotate(20deg); 253 | opacity: 0.4; 254 | } 255 | 256 | @media (max-width: 700px) { 257 | .gh-author-meta { 258 | font-size: 1.6rem; 259 | } 260 | } 261 | -------------------------------------------------------------------------------- /assets/css/ghost/content.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* Content grid 4 | /* ---------------------------------------------------------- */ 5 | 6 | .gh-canvas { 7 | display: grid; 8 | grid-template-columns: 9 | [full-start] 10 | minmax(calc(calc(100% - 1200px) / 2), 1fr) 11 | [wide-start] 12 | auto 13 | [main-start] 14 | 720px 15 | [main-end] 16 | auto 17 | [wide-end] 18 | minmax(calc(calc(100% - 1200px) / 2), 1fr) 19 | [full-end] 20 | ; 21 | } 22 | 23 | @media (max-width: 1296px) { 24 | .gh-canvas { 25 | grid-template-columns: 26 | [full-start] 27 | 4vw 28 | [wide-start] 29 | auto 30 | [main-start] 31 | 720px 32 | [main-end] 33 | auto 34 | [wide-end] 35 | 4vw 36 | [full-end] 37 | ; 38 | } 39 | } 40 | 41 | @media (max-width: 778px) { 42 | .gh-canvas { 43 | grid-template-columns: 44 | [full-start] 45 | 4vw 46 | [wide-start] 47 | 0 48 | [main-start] 49 | auto 50 | [main-end] 51 | 0 52 | [wide-end] 53 | 4vw 54 | [full-end] 55 | ; 56 | } 57 | } 58 | 59 | .gh-canvas > * { 60 | grid-column: main-start / main-end; 61 | } 62 | 63 | .kg-width-wide { 64 | grid-column: wide-start / wide-end; 65 | } 66 | 67 | .kg-width-full { 68 | grid-column: full-start / full-end; 69 | } 70 | 71 | 72 | /* Content & Typography 73 | /* ---------------------------------------------------------- */ 74 | 75 | .gh-content > * + * { 76 | margin-top: 4vmin; 77 | } 78 | 79 | .gh-content > [id] + * { 80 | margin-top: 1.5rem; 81 | } 82 | 83 | .gh-content [id] { 84 | margin: 1.5em 0 0; 85 | } 86 | 87 | .gh-content [id] + .kg-card, 88 | .gh-content blockquote + .kg-card { 89 | margin-top: 1.5rem; 90 | } 91 | 92 | .gh-canvas blockquote, 93 | .gh-canvas ol, 94 | .gh-canvas ul, 95 | .gh-canvas dl, 96 | .gh-canvas p { 97 | font-family: var(--font-serif); 98 | font-weight: 400; 99 | font-size: 2rem; 100 | line-height: 1.6em; 101 | } 102 | 103 | .gh-content ul, 104 | .gh-content ol, 105 | .gh-content dl { 106 | padding-left: 1.9em; 107 | } 108 | 109 | .gh-content hr { 110 | margin-top: 6vmin; 111 | } 112 | 113 | .gh-content hr + * { 114 | margin-top: 6vmin !important; 115 | } 116 | 117 | .gh-content blockquote { 118 | position: relative; 119 | font-style: italic; 120 | } 121 | 122 | .gh-content blockquote::before { 123 | content: ""; 124 | position: absolute; 125 | left: -1.5em; 126 | top: 0; 127 | bottom: 0; 128 | width: 0.3rem; 129 | background: var(--color-primary); 130 | } 131 | 132 | @media (max-width: 650px) { 133 | .gh-canvas blockquote, 134 | .gh-canvas ol, 135 | .gh-canvas ul, 136 | .gh-canvas dl, 137 | .gh-canvas p { 138 | font-size: 1.8rem; 139 | } 140 | 141 | .gh-content blockquote::before { 142 | left: -4vw; 143 | } 144 | } 145 | 146 | 147 | /* Cards 148 | /* ---------------------------------------------------------- */ 149 | 150 | :not(.kg-card):not([id]) + .kg-card { 151 | margin-top: 6vmin; 152 | } 153 | 154 | .kg-card + :not(.kg-card):not([id]) { 155 | margin-top: 6vmin; 156 | } 157 | 158 | figcaption { 159 | padding: 1.5rem 1.5rem 0; 160 | text-align: center; 161 | color: rgba(255,255,255,0.8); 162 | font-weight: 600; 163 | font-size: 1.3rem; 164 | line-height: 1.4em; 165 | } 166 | 167 | figcaption strong { 168 | color: rgba(255,255,255,1); 169 | } 170 | 171 | .gh-canvas :not(pre) code { 172 | vertical-align: middle; 173 | padding: 0.15em 0.4em 0.15em; 174 | border: #e1eaef 1px solid; 175 | font-weight: 400 !important; 176 | font-size: 0.9em; 177 | line-height: 1em; 178 | color: #dc0050; 179 | background: #f0f6f9; 180 | border-radius: 0.25em; 181 | } 182 | 183 | .gh-canvas > pre { 184 | overflow: scroll; 185 | padding: 16px 20px; 186 | background: rgba(255,255,255,0.8); 187 | border-radius: 5px; 188 | box-shadow: 0 2px 6px -2px rgba(0,0,0,.1), 0 0 1px rgba(0,0,0,.4); 189 | } 190 | 191 | .kg-embed-card { 192 | display: flex; 193 | flex-direction: column; 194 | align-items: center; 195 | width: 100%; 196 | } 197 | 198 | 199 | /* Galleries 200 | /* ---------------------------------------------------------- */ 201 | 202 | .kg-gallery-card + .kg-gallery-card { 203 | margin-top: 0.75em; 204 | } 205 | 206 | .kg-gallery-container { 207 | position: relative; 208 | } 209 | 210 | .kg-gallery-row { 211 | display: flex; 212 | flex-direction: row; 213 | justify-content: center; 214 | } 215 | 216 | .kg-gallery-image img { 217 | display: block; 218 | margin: 0; 219 | width: 100%; 220 | height: 100%; 221 | } 222 | 223 | .kg-gallery-row:not(:first-of-type) { 224 | margin: 0.75em 0 0 0; 225 | } 226 | 227 | .kg-gallery-image:not(:first-of-type) { 228 | margin: 0 0 0 0.75em; 229 | } 230 | 231 | 232 | /* Bookmark Cards 233 | /* ---------------------------------------------------------- */ 234 | 235 | .kg-bookmark-card, 236 | .kg-bookmark-publisher { 237 | position: relative; 238 | } 239 | 240 | .kg-bookmark-container { 241 | display: flex; 242 | flex-wrap: wrap; 243 | flex-direction: row-reverse; 244 | color: currentColor; 245 | background: rgba(255,255,255,0.6); 246 | font-family: inherit; 247 | text-decoration: none; 248 | border-radius: 5px; 249 | box-shadow: 0 2px 6px -2px rgba(0, 0, 0, 0.1), 0 0 1px rgba(0, 0, 0, 0.4); 250 | overflow: hidden; 251 | } 252 | 253 | .kg-bookmark-content { 254 | flex-basis: 0; 255 | flex-grow: 999; 256 | padding: 20px; 257 | order: 1; 258 | } 259 | 260 | .kg-bookmark-title { 261 | font-weight: 600; 262 | font-size: 1.5rem; 263 | } 264 | 265 | .kg-bookmark-description { 266 | display: -webkit-box; 267 | max-height: 45px; 268 | margin: 0.6em 0 0 0; 269 | font-size: 1.4rem; 270 | line-height: 1.55em; 271 | overflow: hidden; 272 | opacity: 0.8; 273 | -webkit-line-clamp: 2; 274 | -webkit-box-orient: vertical; 275 | } 276 | 277 | .kg-bookmark-metadata, 278 | .kg-bookmark-description { 279 | margin-top: 0.9em; 280 | } 281 | 282 | .kg-bookmark-metadata { 283 | display: flex; 284 | align-items: center; 285 | font-weight: 500; 286 | font-size: 1.3rem; 287 | white-space: nowrap; 288 | overflow: hidden; 289 | text-overflow: ellipsis; 290 | } 291 | 292 | .kg-bookmark-description { 293 | display: -webkit-box; 294 | -webkit-box-orient: vertical; 295 | -webkit-line-clamp: 2; 296 | overflow: hidden; 297 | } 298 | 299 | .kg-bookmark-icon { 300 | display: inline-block; 301 | width: 16px; 302 | height: 16px; 303 | vertical-align: text-bottom; 304 | margin-right: .5em; 305 | } 306 | 307 | .kg-bookmark-thumbnail { 308 | display: flex; 309 | flex-basis: 24rem; 310 | flex-grow: 1; 311 | } 312 | 313 | .kg-bookmark-thumbnail img { 314 | max-width: 100%; 315 | height: auto; 316 | vertical-align: bottom; 317 | object-fit: cover; 318 | } 319 | 320 | .kg-bookmark-author { 321 | white-space: nowrap; 322 | text-overflow: ellipsis; 323 | overflow: hidden; 324 | } 325 | 326 | .kg-bookmark-publisher::before { 327 | content: "•"; 328 | margin: 0 .5em; 329 | } 330 | 331 | 332 | /* Card captions 333 | /* ---------------------------------------------------------- */ 334 | 335 | .kg-width-full.kg-card-hascaption { 336 | display: grid; 337 | grid-template-columns: inherit; 338 | } 339 | 340 | .kg-width-wide.kg-card-hascaption img { 341 | grid-column: wide-start / wide-end; 342 | } 343 | .kg-width-full.kg-card-hascaption img { 344 | grid-column: 1 / -1; 345 | } 346 | 347 | .kg-width-full.kg-card-hascaption figcaption { 348 | grid-column: main-start / main-end; 349 | } 350 | 351 | 352 | /* Tables 353 | /* ---------------------------------------------------------- */ 354 | 355 | .gh-content table { 356 | border-collapse: collapse; 357 | width: 100%; 358 | } 359 | 360 | .gh-content th { 361 | padding: 0.5em 0.8em; 362 | text-align: left; 363 | font-size: .75em; 364 | text-transform: uppercase; 365 | } 366 | 367 | .gh-content td { 368 | padding: 0.4em 0.7em; 369 | } 370 | 371 | .gh-content tbody tr:nth-child(2n + 1) { 372 | background-color: rgba(0,0,0,0.1); 373 | padding: 1px; 374 | } 375 | 376 | .gh-content tbody tr:nth-child(2n + 2) td:last-child { 377 | box-shadow: 378 | inset 1px 0 rgba(0,0,0,0.1), 379 | inset -1px 0 rgba(0,0,0,0.1); 380 | } 381 | 382 | .gh-content tbody tr:nth-child(2n + 2) td { 383 | box-shadow: inset 1px 0 rgba(0,0,0,0.1); 384 | } 385 | 386 | .gh-content tbody tr:last-child { 387 | border-bottom: 1px solid rgba(0,0,0,.1); 388 | } 389 | -------------------------------------------------------------------------------- /assets/css/ghost/header.css: -------------------------------------------------------------------------------- 1 | /* Global Header 2 | /* ---------------------------------------------------------- */ 3 | 4 | .gh-head { 5 | position: relative; 6 | z-index: 10; 7 | padding: 3vw 4vw; 8 | font-size: 1.6rem; 9 | line-height: 1.3em; 10 | } 11 | 12 | .gh-head a { 13 | color: inherit; 14 | text-decoration: none; 15 | } 16 | 17 | .gh-head-inner { 18 | display: grid; 19 | grid-gap: 40px; 20 | grid-template-columns: 1fr auto 1fr; 21 | grid-auto-flow: row dense; 22 | } 23 | 24 | 25 | /* Brand 26 | /* ---------------------------------------------------------- */ 27 | 28 | .gh-head-brand { 29 | grid-column-start: 2; 30 | display: flex; 31 | align-items: center; 32 | max-width: 200px; 33 | text-align: center; 34 | word-break: break-all; 35 | } 36 | 37 | .gh-head-logo { 38 | display: block; 39 | padding: 10px 0; 40 | font-weight: 600; 41 | font-size: 2.2rem; 42 | line-height: 1.2em; 43 | } 44 | 45 | .gh-head-logo img { 46 | max-height: 40px; 47 | } 48 | 49 | 50 | /* Primary Navigation 51 | /* ---------------------------------------------------------- */ 52 | 53 | .gh-head-menu { 54 | display: flex; 55 | align-items: center; 56 | } 57 | 58 | .gh-head-menu .nav { 59 | display: inline-flex; 60 | flex-wrap: wrap; 61 | align-items: center; 62 | list-style: none; 63 | } 64 | 65 | .gh-head-menu .nav li { 66 | margin: 0 1.5vw 0 0; 67 | padding: 0; 68 | } 69 | 70 | .gh-head-menu .nav a { 71 | display: inline-block; 72 | padding: 5px 0; 73 | } 74 | 75 | .gh-head-menu .nav-current a { 76 | box-shadow: 0 -1px 0 0 currentcolor inset; 77 | } 78 | 79 | 80 | /* Secondary Navigation 81 | /* ---------------------------------------------------------- */ 82 | 83 | .gh-head-actions { 84 | display: flex; 85 | justify-content: flex-end; 86 | align-items: center; 87 | list-style: none; 88 | text-align: right; 89 | } 90 | 91 | .gh-head-actions-list { 92 | display: inline-flex; 93 | flex-wrap: wrap; 94 | justify-content: flex-end; 95 | align-items: center; 96 | } 97 | 98 | .gh-head-actions-list a { 99 | display: inline-block; 100 | margin: 0 0 0 1.5vw; 101 | padding: 5px 0; 102 | } 103 | 104 | 105 | /* Mobile Menu Trigger 106 | /* ---------------------------------------------------------- */ 107 | 108 | .gh-burger { 109 | position: relative; 110 | display: none; 111 | cursor: pointer; 112 | } 113 | 114 | .gh-burger-box { 115 | position: relative; 116 | display: flex; 117 | align-items: center; 118 | justify-content: center; 119 | width: 33px; 120 | height: 33px; 121 | } 122 | 123 | .gh-burger-inner { 124 | width: 100%; 125 | height: 100%; 126 | } 127 | 128 | .gh-burger-box::before { 129 | position: absolute; 130 | display: block; 131 | top: 0; 132 | left: 0; 133 | bottom: 0; 134 | margin: auto; 135 | content: ''; 136 | width: 100%; 137 | height: 1px; 138 | background: currentcolor; 139 | transition: transform 300ms cubic-bezier(.2,.6,.3,1), width 300ms cubic-bezier(.2,.6,.3,1); 140 | will-change: transform, width; 141 | } 142 | 143 | .gh-burger-inner::before, 144 | .gh-burger-inner::after { 145 | position: absolute; 146 | display: block; 147 | top: 0; 148 | left: 0; 149 | bottom: 0; 150 | margin: auto; 151 | content: ''; 152 | width: 100%; 153 | height: 1px; 154 | background: currentcolor; 155 | transition: transform 250ms cubic-bezier(.2,.7,.3,1), width 250ms cubic-bezier(.2,.7,.3,1); 156 | will-change: transform, width; 157 | } 158 | 159 | .gh-burger-inner::before { 160 | transform: translatey(-6px); 161 | } 162 | .gh-burger-inner::after { 163 | transform: translatey(6px); 164 | } 165 | 166 | body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::before { 167 | transform: translatey(-8px); 168 | } 169 | body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after { 170 | transform: translatey(8px); 171 | } 172 | 173 | .gh-head-open .gh-burger-box::before { 174 | width: 0; 175 | transform: translatex(19px); 176 | transition: transform 200ms cubic-bezier(.2,.7,.3,1), width 200ms cubic-bezier(.2,.7,.3,1); 177 | } 178 | 179 | .gh-head-open .gh-burger-inner::before { 180 | width: 26px; 181 | transform: translatex(6px) rotate(135deg); 182 | } 183 | 184 | .gh-head-open .gh-burger-inner::after { 185 | width: 26px; 186 | transform: translatex(6px) rotate(-135deg); 187 | } 188 | 189 | 190 | /* Layout Variants 191 | /* ---------------------------------------------------------- */ 192 | 193 | .gh-hero { 194 | position: relative; 195 | margin: calc(-46px - 6vw) 0 0; 196 | padding: calc(46px + 6vw) 4vw 3vw; 197 | display: flex; 198 | justify-content: center; 199 | align-items: center; 200 | text-align: center; 201 | overflow: hidden; 202 | } 203 | 204 | .gh-hero-img { 205 | position: absolute; 206 | top: 0; 207 | right: 0; 208 | bottom: 0; 209 | left: 0; 210 | height: 100%; 211 | width: 100%; 212 | object-fit: cover; 213 | } 214 | 215 | .gh-hero-content { 216 | position: relative; 217 | max-width: 900px; 218 | padding: 2vw 0 5vw; 219 | } 220 | 221 | .gh-hero-content h1 { 222 | font-size: 5vmin; 223 | } 224 | 225 | .gh-hero-content > p { 226 | max-width: 720px; 227 | margin: 0.3em auto 0; 228 | padding: 0 6vmin; 229 | font-size: 2.2vmin; 230 | line-height: 1.3em; 231 | opacity: 0.6; 232 | } 233 | 234 | @media (max-width: 900px) { 235 | .gh-hero-content > p { 236 | font-size: 1.8rem; 237 | } 238 | } 239 | 240 | .gh-head-brandnavactions .gh-head-brand { 241 | grid-column-start: 1; 242 | } 243 | 244 | .gh-head-brandnav .gh-head-inner { 245 | grid-gap: 0; 246 | grid-template-columns: auto max-content max-content; 247 | } 248 | .gh-head-brandnav .gh-head-brand { 249 | grid-column-start: 1; 250 | } 251 | .gh-head-brandnav .gh-head-menu { 252 | margin-left: 40px; 253 | } 254 | .gh-head-brandnav .gh-head-menu .nav li { 255 | margin: 0 0 0 1.5vw; 256 | padding: 0; 257 | } 258 | 259 | /* Center Stacked */ 260 | .gh-head-stacked .gh-container { 261 | grid-template-columns: 1fr; 262 | grid-gap: 2vmin; 263 | } 264 | .gh-head-stacked .gh-head-brand { 265 | grid-column-start: 1; 266 | width: 100%; 267 | max-width: none; 268 | display: flex; 269 | justify-content: center; 270 | text-align: center; 271 | } 272 | .gh-head-stacked .gh-head-menu, 273 | .gh-head-stacked .gh-head-actions, 274 | .gh-head-stacked .gh-head-actions-list { 275 | justify-content: center; 276 | } 277 | .gh-head-stacked .gh-head-actions a:first-child svg { 278 | margin-left: 0; 279 | } 280 | 281 | 282 | /* Mobile Menu 283 | /* ---------------------------------------------------------- */ 284 | /* IDs needed to ensure sufficient specificity */ 285 | 286 | @media (max-width: 900px) { 287 | .gh-burger { 288 | display: inline-block; 289 | } 290 | #gh-head { 291 | overflow: hidden; 292 | } 293 | #gh-head .gh-container { 294 | height: 100%; 295 | grid-template-columns: 1fr; 296 | } 297 | #gh-head .gh-head-brand { 298 | position: relative; 299 | z-index: 10; 300 | grid-column-start: auto; 301 | max-width: none; 302 | display: flex; 303 | align-items: center; 304 | justify-content: space-between; 305 | user-select: none; 306 | } 307 | #gh-head .gh-head-logo { 308 | font-size: 2.2rem; 309 | } 310 | #gh-head .gh-head-logo img { 311 | max-height: 40px; 312 | } 313 | #gh-head .gh-head-menu { 314 | align-self: center; 315 | display: flex; 316 | flex-direction: column; 317 | align-items: center; 318 | text-align: center; 319 | margin: 0 0 10vh 0; 320 | font-weight: 300; 321 | font-size: 3.6rem; 322 | line-height: 1.1em; 323 | } 324 | #gh-head .gh-head-menu .nav li { 325 | margin: 5px 0; 326 | } 327 | #gh-head .gh-head-menu .nav a { 328 | padding: 8px 0; 329 | } 330 | #gh-head .gh-head-menu .nav { 331 | display: flex; 332 | flex-direction: column; 333 | align-items: center; 334 | } 335 | #gh-head .gh-head-actions { 336 | padding: 20px 0; 337 | justify-content: center; 338 | text-align: left; 339 | } 340 | #gh-head .gh-head-actions a { 341 | margin: 0 10px; 342 | } 343 | /* Hide collapsed content */ 344 | #gh-head .gh-head-actions, 345 | #gh-head .gh-head-menu { 346 | display: none; 347 | } 348 | /* Open the menu */ 349 | .gh-head-open { 350 | overflow: hidden; 351 | height: 100vh; 352 | } 353 | .gh-head-open #gh-head { 354 | position: fixed; 355 | top: 0; 356 | right: 0; 357 | bottom: 0; 358 | left: 0; 359 | z-index: 900; 360 | background: inherit; 361 | overflow-y: scroll; 362 | } 363 | .gh-head-open #gh-head .gh-container { 364 | grid-template-rows: auto 1fr auto; 365 | } 366 | .gh-head-open #gh-head .gh-head-actions, 367 | .gh-head-open #gh-head .gh-head-menu { 368 | display: flex; 369 | } 370 | } 371 | 372 | @media (max-width: 600px) { 373 | #gh-head .gh-head-menu { 374 | font-size: 6vmin; 375 | } 376 | } 377 | -------------------------------------------------------------------------------- /assets/built/screen.css: -------------------------------------------------------------------------------- 1 | *,:after,:before{box-sizing:border-box}html{-webkit-tap-highlight-color:rgba(0,0,0,0);font-size:62.5%;overflow-x:hidden;overflow-y:scroll}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fff;color:#454545;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.5rem;font-style:normal;font-weight:400;line-height:1.6em;min-height:100vh;overflow-x:hidden;scroll-behavior:smooth}blockquote,body,dd,dl,figcaption,figure,form,hr,li,ol,p,pre,table,ul,video{margin:0;padding:0}ol[class],ul[class]{list-style:none;padding:0}img{display:block;height:auto;max-width:100%}button,input,select,textarea{font:inherit}fieldset{border:0;margin:0;padding:0}label{font-size:.9em;font-weight:700}hr,label{display:block}hr{border:0;border-top:1px solid;height:1px;opacity:.2;position:relative;width:100%}::-moz-selection{background:#cbeafb;text-shadow:none}::selection{background:#cbeafb;text-shadow:none}mark{background-color:#fdffb6}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}a:not([class]){color:var(--ghost-accent-color,#3eb0ef);-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}a[class]{color:inherit;text-decoration:none;transition:.4s ease}a[class]:hover{transition:.2s ease}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.15em;margin:0}h1{font-size:4.6rem;letter-spacing:-.5px}@media (max-width:500px){h1{font-size:2.7rem}}h2{font-size:3.6rem}@media (max-width:500px){h2{font-size:2.2rem}}h3{font-size:3.2rem}@media (max-width:500px){h3{font-size:1.8rem}}h4{font-size:2.6rem}h5{font-size:2.4rem}h6{font-size:2.2rem}@media (prefers-reduced-motion:reduce){*{-webkit-animation-duration:.01ms!important;animation-duration:.01ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.gh-input,.gh-textarea{background:#f5f5f5;border:1px solid #ddd;border-radius:.5rem;color:inherit;display:block;outline:0;padding:0 .6em;text-decoration:none;width:100%}.gh-input:focus{border-color:var(--ghost-accent-color,#3eb0ef);box-shadow:0 0 0 1px var(--ghost-accent-color,#3eb0ef)}.gh-select{height:4rem;padding-right:4rem;text-overflow:ellipsis}.gh-select option{background:#f5f5f5;color:var(--ghost-accent-color,#3eb0ef)}.gh-select:focus::-ms-value{background-color:transparent}.gh-select::-ms-expand{display:none}.gh-input,.gh-select{height:4rem}.gh-textarea{padding:.3em .6em;resize:vertical}.gh-check{display:block;margin-right:-2em;opacity:0;width:1em;z-index:-1}.gh-check+label{align-items:center;color:#131313;cursor:pointer;display:flex;font-size:1em;font-weight:400;padding-left:calc(2.4rem + .75em);padding-right:2rem;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.gh-check+label:before{background:#f5f5f5;border:1px solid #ddd;border-radius:.5rem;content:"";display:inline-block;height:2.4rem;line-height:2.24rem;margin-right:1rem;text-align:center;width:2.4rem}.gh-check:checked+label:before{background:var(--ghost-accent-color,#3eb0ef);border-color:var(--ghost-accent-color,#3eb0ef);color:#f5f5f5;content:"✓"}.gh-check:focus+label:before{border-color:var(--ghost-accent-color,#3eb0ef);box-shadow:0 0 0 1px var(--ghost-accent-color,#3eb0ef)}.gh-check+label:before{border-radius:.5rem;border-radius:100%}.gh-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:.5rem;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:1.4rem;font-weight:400;height:4rem;line-height:4rem;padding:0 2rem;text-align:center;text-decoration:none;transition:.4s ease;white-space:nowrap}.gh-button.gh-button-fit{width:100%}.gh-button.gh-button-small{font-size:1.2rem;height:3.6rem;line-height:3.6rem;padding:0 1.5rem}.gh-button.gh-button-large{font-size:1.6rem;height:4.56rem;line-height:4.56rem;padding:0 3rem}.gh-button.gh-button-disabled,.gh-button:disabled{opacity:.4;pointer-events:none}.gh-button{background-color:transparent}.gh-button,.gh-button:hover{box-shadow:inset 0 0 0 2px var(--ghost-accent-color,#3eb0ef);color:var(--ghost-accent-color,#3eb0ef)!important}.gh-button:hover{text-decoration:none;transition:.2s ease}.gh-button.gh-button-primary{box-shadow:none;color:#fff!important}.gh-button.gh-button-primary,.gh-button.gh-button-primary:hover{background-color:var(--ghost-accent-color,#3eb0ef)}.gh-head{font-size:1.6rem;line-height:1.3em;padding:3vw 4vw;position:relative;z-index:10}.gh-head a{color:inherit;text-decoration:none}.gh-head-inner{grid-gap:40px;display:grid;grid-auto-flow:row dense;grid-template-columns:1fr auto 1fr}.gh-head-brand{align-items:center;display:flex;grid-column-start:2;max-width:200px;text-align:center;word-break:break-all}.gh-head-logo{display:block;font-size:2.2rem;font-weight:600;line-height:1.2em;padding:10px 0}.gh-head-logo img{max-height:40px}.gh-head-menu{align-items:center;display:flex}.gh-head-menu .nav{align-items:center;display:inline-flex;flex-wrap:wrap;list-style:none}.gh-head-menu .nav li{margin:0 1.5vw 0 0;padding:0}.gh-head-menu .nav a{display:inline-block;padding:5px 0}.gh-head-menu .nav-current a{box-shadow:inset 0 -1px 0 0 currentcolor}.gh-head-actions{display:flex;list-style:none;text-align:right}.gh-head-actions,.gh-head-actions-list{align-items:center;justify-content:flex-end}.gh-head-actions-list{display:inline-flex;flex-wrap:wrap}.gh-head-actions-list a{display:inline-block;margin:0 0 0 1.5vw;padding:5px 0}.gh-burger{cursor:pointer;display:none;position:relative}.gh-burger-box{align-items:center;display:flex;height:33px;justify-content:center;position:relative;width:33px}.gh-burger-inner{height:100%;width:100%}.gh-burger-box:before{transition:transform .3s cubic-bezier(.2,.6,.3,1),width .3s cubic-bezier(.2,.6,.3,1)}.gh-burger-box:before,.gh-burger-inner:after,.gh-burger-inner:before{background:currentcolor;bottom:0;content:"";display:block;height:1px;left:0;margin:auto;position:absolute;top:0;width:100%;will-change:transform,width}.gh-burger-inner:after,.gh-burger-inner:before{transition:transform .25s cubic-bezier(.2,.7,.3,1),width .25s cubic-bezier(.2,.7,.3,1)}.gh-burger-inner:before{transform:translatey(-6px)}.gh-burger-inner:after{transform:translatey(6px)}body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner:before{transform:translatey(-8px)}body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner:after{transform:translatey(8px)}.gh-head-open .gh-burger-box:before{transform:translatex(19px);transition:transform .2s cubic-bezier(.2,.7,.3,1),width .2s cubic-bezier(.2,.7,.3,1);width:0}.gh-head-open .gh-burger-inner:before{transform:translatex(6px) rotate(135deg);width:26px}.gh-head-open .gh-burger-inner:after{transform:translatex(6px) rotate(-135deg);width:26px}.gh-hero{align-items:center;display:flex;justify-content:center;margin:calc(-46px - 6vw) 0 0;overflow:hidden;padding:calc(46px + 6vw) 4vw 3vw;position:relative;text-align:center}.gh-hero-img{bottom:0;height:100%;left:0;-o-object-fit:cover;object-fit:cover;position:absolute;right:0;top:0;width:100%}.gh-hero-content{max-width:900px;padding:2vw 0 5vw;position:relative}.gh-hero-content h1{font-size:5vmin}.gh-hero-content>p{font-size:2.2vmin;line-height:1.3em;margin:.3em auto 0;max-width:720px;opacity:.6;padding:0 6vmin}@media (max-width:900px){.gh-hero-content>p{font-size:1.8rem}}.gh-head-brandnavactions .gh-head-brand{grid-column-start:1}.gh-head-brandnav .gh-head-inner{grid-gap:0;grid-template-columns:auto -webkit-max-content -webkit-max-content;grid-template-columns:auto max-content max-content}.gh-head-brandnav .gh-head-brand{grid-column-start:1}.gh-head-brandnav .gh-head-menu{margin-left:40px}.gh-head-brandnav .gh-head-menu .nav li{margin:0 0 0 1.5vw;padding:0}.gh-head-stacked .gh-container{grid-gap:2vmin;grid-template-columns:1fr}.gh-head-stacked .gh-head-brand{display:flex;grid-column-start:1;justify-content:center;max-width:none;text-align:center;width:100%}.gh-head-stacked .gh-head-actions,.gh-head-stacked .gh-head-actions-list,.gh-head-stacked .gh-head-menu{justify-content:center}.gh-head-stacked .gh-head-actions a:first-child svg{margin-left:0}@media (max-width:900px){.gh-burger{display:inline-block}#gh-head{overflow:hidden}#gh-head .gh-container{grid-template-columns:1fr;height:100%}#gh-head .gh-head-brand{align-items:center;display:flex;grid-column-start:auto;justify-content:space-between;max-width:none;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:10}#gh-head .gh-head-logo{font-size:2.2rem}#gh-head .gh-head-logo img{max-height:40px}#gh-head .gh-head-menu{align-items:center;align-self:center;display:flex;flex-direction:column;font-size:3.6rem;font-weight:300;line-height:1.1em;margin:0 0 10vh;text-align:center}#gh-head .gh-head-menu .nav li{margin:5px 0}#gh-head .gh-head-menu .nav a{padding:8px 0}#gh-head .gh-head-menu .nav{align-items:center;display:flex;flex-direction:column}#gh-head .gh-head-actions{justify-content:center;padding:20px 0;text-align:left}#gh-head .gh-head-actions a{margin:0 10px}#gh-head .gh-head-actions,#gh-head .gh-head-menu{display:none}.gh-head-open{height:100vh;overflow:hidden}.gh-head-open #gh-head{background:inherit;bottom:0;left:0;overflow-y:scroll;position:fixed;right:0;top:0;z-index:900}.gh-head-open #gh-head .gh-container{grid-template-rows:auto 1fr auto}.gh-head-open #gh-head .gh-head-actions,.gh-head-open #gh-head .gh-head-menu{display:flex}}@media (max-width:600px){#gh-head .gh-head-menu{font-size:6vmin}}.gh-canvas{display:grid;grid-template-columns:[full-start] minmax(calc(50% - 600px),1fr) [wide-start] auto [main-start] 720px [main-end] auto [wide-end] minmax(calc(50% - 600px),1fr) [full-end]}@media (max-width:1296px){.gh-canvas{grid-template-columns:[full-start] 4vw [wide-start] auto [main-start] 720px [main-end] auto [wide-end] 4vw [full-end]}}@media (max-width:778px){.gh-canvas{grid-template-columns:[full-start] 4vw [wide-start] 0 [main-start] auto [main-end] 0 [wide-end] 4vw [full-end]}}.gh-canvas>*{grid-column:main-start/main-end}.kg-width-wide{grid-column:wide-start/wide-end}.kg-width-full{grid-column:full-start/full-end}.gh-content>*+*{margin-top:4vmin}.gh-content>[id]+*{margin-top:1.5rem}.gh-content [id]{margin:1.5em 0 0}.gh-content [id]+.kg-card,.gh-content blockquote+.kg-card{margin-top:1.5rem}.gh-canvas blockquote,.gh-canvas dl,.gh-canvas ol,.gh-canvas p,.gh-canvas ul{font-family:Georgia,Times,serif;font-size:2rem;font-weight:400;line-height:1.6em}.gh-content dl,.gh-content ol,.gh-content ul{padding-left:1.9em}.gh-content hr{margin-top:6vmin}.gh-content hr+*{margin-top:6vmin!important}.gh-content blockquote{font-style:italic;position:relative}.gh-content blockquote:before{background:var(--ghost-accent-color,#3eb0ef);bottom:0;content:"";left:-1.5em;position:absolute;top:0;width:.3rem}@media (max-width:650px){.gh-canvas blockquote,.gh-canvas dl,.gh-canvas ol,.gh-canvas p,.gh-canvas ul{font-size:1.8rem}.gh-content blockquote:before{left:-4vw}}.kg-card+:not(.kg-card):not([id]),:not(.kg-card):not([id])+.kg-card{margin-top:6vmin}figcaption{color:hsla(0,0%,100%,.8);font-size:1.3rem;font-weight:600;line-height:1.4em;padding:1.5rem 1.5rem 0;text-align:center}figcaption strong{color:#fff}.gh-canvas :not(pre) code{background:#f0f6f9;border:1px solid #e1eaef;border-radius:.25em;color:#dc0050;font-size:.9em;font-weight:400!important;line-height:1em;padding:.15em .4em;vertical-align:middle}.gh-canvas>pre{background:hsla(0,0%,100%,.8);border-radius:5px;box-shadow:0 2px 6px -2px rgba(0,0,0,.1),0 0 1px rgba(0,0,0,.4);overflow:scroll;padding:16px 20px}.kg-embed-card{align-items:center;display:flex;flex-direction:column;width:100%}.kg-gallery-card+.kg-gallery-card{margin-top:.75em}.kg-gallery-container{position:relative}.kg-gallery-row{display:flex;flex-direction:row;justify-content:center}.kg-gallery-image img{display:block;height:100%;margin:0;width:100%}.kg-gallery-row:not(:first-of-type){margin:.75em 0 0}.kg-gallery-image:not(:first-of-type){margin:0 0 0 .75em}.kg-bookmark-card,.kg-bookmark-publisher{position:relative}.kg-bookmark-container{background:hsla(0,0%,100%,.6);border-radius:5px;box-shadow:0 2px 6px -2px rgba(0,0,0,.1),0 0 1px rgba(0,0,0,.4);color:currentColor;display:flex;flex-direction:row-reverse;flex-wrap:wrap;font-family:inherit;overflow:hidden;text-decoration:none}.kg-bookmark-content{flex-basis:0;flex-grow:999;order:1;padding:20px}.kg-bookmark-title{font-size:1.5rem;font-weight:600}.kg-bookmark-description{font-size:1.4rem;line-height:1.55em;margin:.6em 0 0;max-height:45px;opacity:.8}.kg-bookmark-description,.kg-bookmark-metadata{margin-top:.9em}.kg-bookmark-metadata{align-items:center;display:flex;font-size:1.3rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kg-bookmark-description{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden}.kg-bookmark-icon{display:inline-block;height:16px;margin-right:.5em;vertical-align:text-bottom;width:16px}.kg-bookmark-thumbnail{display:flex;flex-basis:24rem;flex-grow:1}.kg-bookmark-thumbnail img{height:auto;max-width:100%;-o-object-fit:cover;object-fit:cover;vertical-align:bottom}.kg-bookmark-author{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kg-bookmark-publisher:before{content:"•";margin:0 .5em}.kg-width-full.kg-card-hascaption{display:grid;grid-template-columns:inherit}.kg-width-wide.kg-card-hascaption img{grid-column:wide-start/wide-end}.kg-width-full.kg-card-hascaption img{grid-column:1/-1}.kg-width-full.kg-card-hascaption figcaption{grid-column:main-start/main-end}.gh-content table{border-collapse:collapse;width:100%}.gh-content th{font-size:.75em;padding:.5em .8em;text-align:left;text-transform:uppercase}.gh-content td{padding:.4em .7em}.gh-content tbody tr:nth-child(odd){background-color:rgba(0,0,0,.1);padding:1px}.gh-content tbody tr:nth-child(2n+2) td:last-child{box-shadow:inset 1px 0 rgba(0,0,0,.1),inset -1px 0 rgba(0,0,0,.1)}.gh-content tbody tr:nth-child(2n+2) td{box-shadow:inset 1px 0 rgba(0,0,0,.1)}.gh-content tbody tr:last-child{border-bottom:1px solid rgba(0,0,0,.1)}.gh-readmore{font-size:2.6rem;padding:8vmin 4vw}.gh-readmore .gh-container{grid-gap:8vmin;display:grid;grid-template-columns:1fr 1fr}.gh-readmore-prev{justify-content:flex-end;text-align:right}.gh-readmore a{color:currentColor;display:flex;text-decoration:none}.gh-readmore h4{font-size:inherit;width:100%}.gh-readmore svg{display:inline-block;height:1em;margin:.15em 0 0;vertical-align:middle}.gh-readmore h4+svg,.gh-readmore svg+h4{margin-left:2vmin}@media (max-width:700px){.gh-readmore{font-size:1.6rem}.gh-readmore svg{margin:.1em 0 0}}form[data-members-form] .button-loader,form[data-members-form] .message-error,form[data-members-form] .message-success{display:none}.message-error svg,.message-success svg{height:15px;margin-right:5px;position:relative;top:-1px;width:15px}.message-success svg{fill:#fff}.message-error svg{fill:var(--ghost-accent-color,#3eb0ef)}form[data-members-form].error .message-error,form[data-members-form].success .message-success{background:#131313;border-radius:.5rem;color:#fff;font-size:1.4rem;font-weight:500;left:6vw;line-height:1.5em;margin:0 auto;max-width:calc(1400px - 12vw);padding:10px 0;position:fixed;right:6vw;text-align:center;top:20px;z-index:9999}form[data-members-form].success .message-success{background:var(--color-success)}form[data-members-form].error .message-error{background:#fff;box-shadow:var(--ghost-accent-color,#3eb0ef) 0 0 0 1px;color:var(--ghost-accent-color,#3eb0ef)}form[data-members-form] .button{position:relative}form[data-members-form].loading .button-content{visibility:hidden}form[data-members-form].loading .button-loader{display:inline-block;left:50%;margin-left:-19px;position:absolute;transform:scale(.7)}.button-loader svg path,.button-loader svg rect{fill:#fff}form[data-members-form].error .message-error,form[data-members-form].success .message-success{display:block}.gh-error{display:flex;flex:1 0 auto;flex-direction:column;justify-content:center;padding-bottom:2vmin}.gh-error-content{flex:1 0 auto;text-align:center}.gh-error-code{font-size:14vmin;margin:0}.gh-error-description{font-size:4vmin;font-weight:300;line-height:1.2em;margin:0 auto;max-width:600px;opacity:.6;padding:0 2rem}.gh-error-link{display:block;font-size:1.6rem;margin-top:4vmin}.gh-error-stack{margin:0 auto;max-width:600px;padding:8vmin 0;text-align:left}.gh-error-stack-list{font-size:1.4rem;margin:4vmin 0 0}.gh-error-stack-list>li{border-top:1px solid rgba(0,0,0,.1);margin:0;padding:2rem 0}.gh-error-stack-function{color:red;font-size:1.8rem;margin:0 0 .5em}.gh-foot{align-items:center;display:flex;justify-content:center;padding:8vmin 4vw}.gh-foot .gh-container{width:auto}.gh-foot a{color:inherit}.gh-foot-menu{display:flex}.gh-foot-menu,.gh-foot-menu .nav{align-items:center;justify-content:center}.gh-foot-menu .nav{display:inline-flex;flex-wrap:wrap;font-size:1.8rem;list-style:none}.gh-foot-menu .nav li{margin:0 1.5vmin;padding:0}.gh-foot-menu .nav a{box-shadow:inset 0 -1px 0 0 currentcolor;display:inline-block;padding:3px 0;text-decoration:none}.gh-foot-meta{font-size:1.5rem;margin:2rem 0;opacity:.5;text-align:center}@media (max-width:700px){.gh-foot-menu .nav{font-size:1.6rem}}.gh-viewport,html{background:#ce9898;color:#fff;display:flex;flex-direction:column;min-height:100vh}.gh-main{display:flex;flex:1 0 auto;flex-direction:column}.gh-page{background:#fff;color:#000;padding:0 4vw}.gh-article,.gh-postfeed{padding:8vmin 0}.gh-postfeed{grid-gap:30px;display:grid;grid-template-columns:1fr 1fr 1fr}@media (max-width:900px){.gh-postfeed{grid-template-columns:1fr 1fr}}.gh-container{margin:0 auto;max-width:1300px;width:100%}.gh-head-actions a{align-items:center;display:inline-flex;margin:0;padding:10px}.gh-head-actions a svg{fill:currentcolor;height:1.8rem}.gh-head-actions a:first-child svg{margin-left:20px}.gh-head-actions a:last-child svg{height:2rem}.home-template .gh-hero{min-height:100vh;padding-bottom:4vw}.home-template .gh-hero-content h1{font-size:6vmin}.gh-card-link{display:flex;flex-direction:column}.gh-card-image{margin-bottom:2vmin;max-height:700px;-o-object-fit:cover;object-fit:cover;width:100%}.gh-card-meta{display:block;font-size:1.2rem;letter-spacing:.5px;line-height:1.2em;margin:0 0 1rem;opacity:.8;text-transform:uppercase}.gh-card-content{font-size:1.4rem;line-height:1.5em;margin:0 auto;max-width:720px}.gh-card-content h2{font-size:1.8rem;margin:0}.gh-card-content p{margin:1rem 0}.gh-card-content>strong{box-shadow:inset 0 -1px 0 0 currentColor;display:inline-block;font-weight:500;opacity:.5;padding:1px 0}.gh-page-head{margin:0 auto;padding:8vmin 0 4vmin;text-align:center}.gh-page-image{margin:4vmin 0 0}.gh-page-head>p{font-size:1.3em;line-height:1.4em;margin:.3em auto 0;max-width:720px;opacity:.5;padding:0 6vmin}@media (max-width:700px){.gh-page-head>p{font-size:1.6rem}}.gh-header{padding:0 0 8vmin;text-align:center}.gh-post-meta{display:block;font-size:1.4rem;letter-spacing:.5px;margin:0 0 1rem;opacity:.8;text-transform:uppercase}.gh-excerpt{margin:1rem 0 0}.gh-feature-image{grid-column:wide-start/wide-end;margin:8vmin 0 0;width:100%}.gh-post-footer{margin:2rem 0}.gh-author-image{border-radius:100%;height:10vmin;margin:0 auto 1.5em;-o-object-fit:cover;object-fit:cover;overflow:hidden;width:10vmin}.gh-author-meta{font-size:1.2em;margin:2vmin 0 0}.gh-author-links{align-items:center;display:flex;justify-content:center}.gh-author-links a{align-items:center;color:currentColor;display:inline-flex;margin:0 .75vmin;position:relative}.gh-author-links a+a:before{background:currentColor;content:"";display:block;height:1em;margin:0 1.25vmin 0 0;opacity:.4;transform:rotate(20deg);width:1px}@media (max-width:700px){.gh-author-meta{font-size:1.6rem}} 2 | /*# sourceMappingURL=screen.css.map */ -------------------------------------------------------------------------------- /assets/built/screen.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["components/global.css","components/forms.css","components/buttons.css","ghost/header.css","ghost/content.css","ghost/readmore.css","ghost/members.css","ghost/errors.css","ghost/footer.css","screen.css"],"names":[],"mappings":"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","file":"screen.css","sourcesContent":["/* Reset\n/* ---------------------------------------------------------- */\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n overflow-x: hidden;\n overflow-y: scroll;\n font-size: 62.5%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nbody {\n min-height: 100vh;\n margin: 0;\n padding: 0;\n color: color(var(--color-base) l(+20%));\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Open Sans\", \"Helvetica Neue\", sans-serif;\n font-size: 1.5rem;\n line-height: 1.6em;\n font-weight: 400;\n font-style: normal;\n background: #fff;\n scroll-behavior: smooth;\n overflow-x: hidden;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\np,\nul,\nol,\nli,\ndl,\ndd,\nhr,\npre,\nform,\ntable,\nvideo,\nfigure,\nfigcaption,\nblockquote {\n margin: 0;\n padding: 0;\n}\n\nul[class],\nol[class] {\n padding: 0;\n list-style: none;\n}\n\nimg {\n display: block;\n max-width: 100%;\n height: auto;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n font: inherit;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n border: 0;\n}\n\nlabel {\n display: block;\n font-size: 0.9em;\n font-weight: 700;\n}\n\nhr {\n position: relative;\n display: block;\n width: 100%;\n height: 1px;\n border: 0;\n border-top: 1px solid currentcolor;\n opacity: 0.2;\n}\n\n::selection {\n text-shadow: none;\n background: #cbeafb;\n}\n\nmark {\n background-color: #fdffb6;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\n\na:not([class]) {\n color: var(--color-primary);\n text-decoration-skip-ink: auto;\n}\n\na[class] {\n color: inherit;\n text-decoration: none;\n transition: 0.4s ease;\n}\n\na[class]:hover {\n transition: 0.2s ease;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin: 0;\n line-height: 1.15em;\n font-weight: 700;\n}\n\nh1 {\n font-size: 4.6rem;\n letter-spacing: -0.5px;\n}\n@media (max-width: 500px) {\n h1 {\n font-size: 2.7rem;\n }\n}\n\nh2 {\n font-size: 3.6rem;\n}\n@media (max-width: 500px) {\n h2 {\n font-size: 2.2rem;\n }\n}\n\nh3 {\n font-size: 3.2rem;\n}\n@media (max-width: 500px) {\n h3 {\n font-size: 1.8rem;\n }\n}\n\nh4 {\n font-size: 2.6rem;\n}\n\nh5 {\n font-size: 2.4rem;\n}\n\nh6 {\n font-size: 2.2rem;\n}\n\n/* Remove all animations and transitions for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n * {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n","/* Forms\n/* ---------------------------------------------------------- */\n\n.gh-input,\n.gh-textarea {\n background: var(--color-bg);\n border-radius: var(--radius);\n border: none;\n border: solid 1px var(--color-border);\n color: inherit;\n display: block;\n outline: 0;\n padding: 0 0.6em;\n text-decoration: none;\n width: 100%;\n}\n\n.gh-input:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 1px var(--color-primary);\n}\n\n.gh-select {\n height: var(--height);\n padding-right: var(--height);\n text-overflow: ellipsis;\n}\n\n.gh-select option {\n color: var(--color-primary);\n background: var(--color-bg);\n}\n\n.gh-select:focus::-ms-value {\n background-color: transparent;\n}\n\n.gh-select::-ms-expand {\n display: none;\n}\n\n.gh-input,\n.gh-select {\n height: var(--height);\n}\n\n.gh-textarea {\n padding: 0.3em 0.6em;\n resize: vertical;\n}\n\n.gh-check {\n display: block;\n margin-right: -2em;\n opacity: 0;\n width: 1em;\n z-index: -1;\n}\n\n.gh-check + label,\n.gh-check + label {\n display: flex;\n align-items: center;\n color: var(--color-base);\n cursor: pointer;\n font-size: 1em;\n font-weight: var(--font-normal);\n padding-left: calc((var(--height) * 0.6) + 0.75em);\n padding-right: 2rem;\n position: relative;\n user-select: none;\n}\n\n.gh-check + label:before,\n.gh-check + label:before {\n background: var(--color-bg);\n border-radius: var(--radius);\n border: solid 1px var(--color-border);\n content: '';\n display: inline-block;\n height: calc(var(--height) * 0.6);\n line-height: calc(var(--height) * 0.56);\n text-align: center;\n width: calc(var(--height) * 0.6);\n margin-right: 1rem;\n}\n\n.gh-check:checked + label:before,\n.gh-check:checked + label:before {\n background: var(--color-primary);\n border-color: var(--color-primary);\n color: var(--color-bg);\n content: '✓';\n}\n\n.gh-check:focus + label:before,\n.gh-check:focus + label:before {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 1px var(--color-primary);\n}\n\n\n.gh-check + label:before {\n border-radius: var(--radius);\n}\n\n.gh-check + label:before {\n border-radius: 100%;\n}\n","/* Buttons\n/* ---------------------------------------------------------- */\n\n.gh-button {\n display: inline-block;\n height: var(--height);\n padding: 0 2rem;\n border: 0;\n border-radius: var(--radius);\n cursor: pointer;\n font-family: var(--font-sans-serif);\n font-size: 1.4rem;\n font-weight: var(--font-normal);\n line-height: var(--height);\n text-align: center;\n text-decoration: none;\n white-space: nowrap;\n appearance: none;\n transition: 0.4s ease;\n}\n\n.gh-button.gh-button-fit {\n width: 100%;\n}\n\n.gh-button.gh-button-small {\n height: calc(var(--height) * 0.9);\n line-height: calc(var(--height) * 0.9);\n padding: 0 1.5rem;\n font-size: 1.2rem;\n}\n\n.gh-button.gh-button-large {\n height: calc(var(--height) * 1.14);\n line-height: calc(var(--height) * 1.14);\n padding: 0 3rem;\n font-size: 1.6rem;\n}\n\n.gh-button.gh-button-disabled,\n.gh-button:disabled {\n pointer-events: none;\n opacity: 0.4;\n}\n\n.gh-button {\n color: var(--color-primary) !important;\n background-color: transparent;\n box-shadow: inset 0 0 0 2px var(--color-primary);\n}\n\n.gh-button:hover {\n text-decoration: none;\n color: var(--color-primary) !important;\n box-shadow: inset 0 0 0 2px var(--color-primary);\n transition: 0.2s ease;\n}\n\n.gh-button.gh-button-primary {\n color: #fff !important;\n background-color: var(--color-primary);\n box-shadow: none;\n}\n\n.gh-button.gh-button-primary:hover {\n background-color: var(--color-primary);\n}\n","/* Global Header\n/* ---------------------------------------------------------- */\n\n.gh-head {\n position: relative;\n z-index: 10;\n padding: 3vw 4vw;\n font-size: 1.6rem;\n line-height: 1.3em;\n}\n\n.gh-head a {\n color: inherit;\n text-decoration: none;\n}\n\n.gh-head-inner {\n display: grid;\n grid-gap: 40px;\n grid-template-columns: 1fr auto 1fr;\n grid-auto-flow: row dense;\n}\n\n\n/* Brand\n/* ---------------------------------------------------------- */\n\n.gh-head-brand {\n grid-column-start: 2;\n display: flex;\n align-items: center;\n max-width: 200px;\n text-align: center;\n word-break: break-all;\n}\n\n.gh-head-logo {\n display: block;\n padding: 10px 0;\n font-weight: 600;\n font-size: 2.2rem;\n line-height: 1.2em;\n}\n\n.gh-head-logo img {\n max-height: 40px;\n}\n\n\n/* Primary Navigation\n/* ---------------------------------------------------------- */\n\n.gh-head-menu {\n display: flex;\n align-items: center;\n}\n\n.gh-head-menu .nav {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n list-style: none;\n}\n\n.gh-head-menu .nav li {\n margin: 0 1.5vw 0 0;\n padding: 0;\n}\n\n.gh-head-menu .nav a {\n display: inline-block;\n padding: 5px 0;\n}\n\n.gh-head-menu .nav-current a {\n box-shadow: 0 -1px 0 0 currentcolor inset;\n}\n\n\n/* Secondary Navigation\n/* ---------------------------------------------------------- */\n\n.gh-head-actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n list-style: none;\n text-align: right;\n}\n\n.gh-head-actions-list {\n display: inline-flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n align-items: center;\n}\n\n.gh-head-actions-list a {\n display: inline-block;\n margin: 0 0 0 1.5vw;\n padding: 5px 0;\n}\n\n\n/* Mobile Menu Trigger\n/* ---------------------------------------------------------- */\n\n.gh-burger {\n position: relative;\n display: none;\n cursor: pointer;\n}\n\n.gh-burger-box {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 33px;\n height: 33px;\n}\n\n.gh-burger-inner {\n width: 100%;\n height: 100%;\n}\n\n.gh-burger-box::before {\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n bottom: 0;\n margin: auto;\n content: '';\n width: 100%;\n height: 1px;\n background: currentcolor;\n transition: transform 300ms cubic-bezier(.2,.6,.3,1), width 300ms cubic-bezier(.2,.6,.3,1);\n will-change: transform, width;\n}\n\n.gh-burger-inner::before,\n.gh-burger-inner::after {\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n bottom: 0;\n margin: auto;\n content: '';\n width: 100%;\n height: 1px;\n background: currentcolor;\n transition: transform 250ms cubic-bezier(.2,.7,.3,1), width 250ms cubic-bezier(.2,.7,.3,1);\n will-change: transform, width;\n}\n\n.gh-burger-inner::before {\n transform: translatey(-6px);\n}\n.gh-burger-inner::after {\n transform: translatey(6px);\n}\n\nbody:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::before {\n transform: translatey(-8px);\n}\nbody:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {\n transform: translatey(8px);\n}\n\n.gh-head-open .gh-burger-box::before {\n width: 0;\n transform: translatex(19px);\n transition: transform 200ms cubic-bezier(.2,.7,.3,1), width 200ms cubic-bezier(.2,.7,.3,1);\n}\n\n.gh-head-open .gh-burger-inner::before {\n width: 26px;\n transform: translatex(6px) rotate(135deg);\n}\n\n.gh-head-open .gh-burger-inner::after {\n width: 26px;\n transform: translatex(6px) rotate(-135deg);\n}\n\n\n/* Layout Variants\n/* ---------------------------------------------------------- */\n\n.gh-hero {\n position: relative;\n margin: calc(-46px - 6vw) 0 0;\n padding: calc(46px + 6vw) 4vw 3vw;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n overflow: hidden;\n}\n\n.gh-hero-img {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n width: 100%;\n object-fit: cover;\n}\n\n.gh-hero-content {\n position: relative;\n max-width: 900px;\n padding: 2vw 0 5vw;\n}\n\n.gh-hero-content h1 {\n font-size: 5vmin;\n}\n\n.gh-hero-content > p {\n max-width: 720px;\n margin: 0.3em auto 0;\n padding: 0 6vmin;\n font-size: 2.2vmin;\n line-height: 1.3em;\n opacity: 0.6;\n}\n\n@media (max-width: 900px) {\n .gh-hero-content > p {\n font-size: 1.8rem;\n }\n}\n\n.gh-head-brandnavactions .gh-head-brand {\n grid-column-start: 1;\n}\n\n.gh-head-brandnav .gh-head-inner {\n grid-gap: 0;\n grid-template-columns: auto max-content max-content;\n}\n.gh-head-brandnav .gh-head-brand {\n grid-column-start: 1;\n}\n.gh-head-brandnav .gh-head-menu {\n margin-left: 40px;\n}\n.gh-head-brandnav .gh-head-menu .nav li {\n margin: 0 0 0 1.5vw;\n padding: 0;\n}\n\n/* Center Stacked */\n.gh-head-stacked .gh-container {\n grid-template-columns: 1fr;\n grid-gap: 2vmin;\n}\n.gh-head-stacked .gh-head-brand {\n grid-column-start: 1;\n width: 100%;\n max-width: none;\n display: flex;\n justify-content: center;\n text-align: center;\n}\n.gh-head-stacked .gh-head-menu,\n.gh-head-stacked .gh-head-actions,\n.gh-head-stacked .gh-head-actions-list {\n justify-content: center;\n}\n.gh-head-stacked .gh-head-actions a:first-child svg {\n margin-left: 0;\n}\n\n\n/* Mobile Menu\n/* ---------------------------------------------------------- */\n/* IDs needed to ensure sufficient specificity */\n\n@media (max-width: 900px) {\n .gh-burger {\n display: inline-block;\n }\n #gh-head {\n overflow: hidden;\n }\n #gh-head .gh-container {\n height: 100%;\n grid-template-columns: 1fr;\n }\n #gh-head .gh-head-brand {\n position: relative;\n z-index: 10;\n grid-column-start: auto;\n max-width: none;\n display: flex;\n align-items: center;\n justify-content: space-between;\n user-select: none;\n }\n #gh-head .gh-head-logo {\n font-size: 2.2rem;\n }\n #gh-head .gh-head-logo img {\n max-height: 40px;\n }\n #gh-head .gh-head-menu {\n align-self: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n margin: 0 0 10vh 0;\n font-weight: 300;\n font-size: 3.6rem;\n line-height: 1.1em;\n }\n #gh-head .gh-head-menu .nav li {\n margin: 5px 0;\n }\n #gh-head .gh-head-menu .nav a {\n padding: 8px 0;\n }\n #gh-head .gh-head-menu .nav {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n #gh-head .gh-head-actions {\n padding: 20px 0;\n justify-content: center;\n text-align: left;\n }\n #gh-head .gh-head-actions a {\n margin: 0 10px;\n }\n /* Hide collapsed content */\n #gh-head .gh-head-actions,\n #gh-head .gh-head-menu {\n display: none;\n }\n /* Open the menu */\n .gh-head-open {\n overflow: hidden;\n height: 100vh;\n }\n .gh-head-open #gh-head {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 900;\n background: inherit;\n overflow-y: scroll;\n }\n .gh-head-open #gh-head .gh-container {\n grid-template-rows: auto 1fr auto;\n }\n .gh-head-open #gh-head .gh-head-actions,\n .gh-head-open #gh-head .gh-head-menu {\n display: flex;\n }\n}\n\n@media (max-width: 600px) {\n #gh-head .gh-head-menu {\n font-size: 6vmin;\n }\n}\n","\n\n/* Content grid\n/* ---------------------------------------------------------- */\n\n.gh-canvas {\n display: grid;\n grid-template-columns:\n [full-start]\n minmax(calc(calc(100% - 1200px) / 2), 1fr)\n [wide-start]\n auto\n [main-start]\n 720px\n [main-end]\n auto\n [wide-end]\n minmax(calc(calc(100% - 1200px) / 2), 1fr)\n [full-end]\n ;\n}\n\n@media (max-width: 1296px) {\n .gh-canvas {\n grid-template-columns:\n [full-start]\n 4vw\n [wide-start]\n auto\n [main-start]\n 720px\n [main-end]\n auto\n [wide-end]\n 4vw\n [full-end]\n ;\n }\n}\n\n@media (max-width: 778px) {\n .gh-canvas {\n grid-template-columns:\n [full-start]\n 4vw\n [wide-start]\n 0\n [main-start]\n auto\n [main-end]\n 0\n [wide-end]\n 4vw\n [full-end]\n ;\n }\n}\n\n.gh-canvas > * {\n grid-column: main-start / main-end;\n}\n\n.kg-width-wide {\n grid-column: wide-start / wide-end;\n}\n\n.kg-width-full {\n grid-column: full-start / full-end;\n}\n\n\n/* Content & Typography\n/* ---------------------------------------------------------- */\n\n.gh-content > * + * {\n margin-top: 4vmin;\n}\n\n.gh-content > [id] + * {\n margin-top: 1.5rem;\n}\n\n.gh-content [id] {\n margin: 1.5em 0 0;\n}\n\n.gh-content [id] + .kg-card,\n.gh-content blockquote + .kg-card {\n margin-top: 1.5rem;\n}\n\n.gh-canvas blockquote,\n.gh-canvas ol,\n.gh-canvas ul,\n.gh-canvas dl,\n.gh-canvas p {\n font-family: var(--font-serif);\n font-weight: 400;\n font-size: 2rem;\n line-height: 1.6em;\n}\n\n.gh-content ul,\n.gh-content ol,\n.gh-content dl {\n padding-left: 1.9em;\n}\n\n.gh-content hr {\n margin-top: 6vmin;\n}\n\n.gh-content hr + * {\n margin-top: 6vmin !important;\n}\n\n.gh-content blockquote {\n position: relative;\n font-style: italic;\n}\n\n.gh-content blockquote::before {\n content: \"\";\n position: absolute;\n left: -1.5em;\n top: 0;\n bottom: 0;\n width: 0.3rem;\n background: var(--color-primary);\n}\n\n@media (max-width: 650px) {\n .gh-canvas blockquote,\n .gh-canvas ol,\n .gh-canvas ul,\n .gh-canvas dl,\n .gh-canvas p {\n font-size: 1.8rem;\n }\n\n .gh-content blockquote::before {\n left: -4vw;\n }\n}\n\n\n/* Cards\n/* ---------------------------------------------------------- */\n\n:not(.kg-card):not([id]) + .kg-card {\n margin-top: 6vmin;\n}\n\n.kg-card + :not(.kg-card):not([id]) {\n margin-top: 6vmin;\n}\n\nfigcaption {\n padding: 1.5rem 1.5rem 0;\n text-align: center;\n color: rgba(255,255,255,0.8);\n font-weight: 600;\n font-size: 1.3rem;\n line-height: 1.4em;\n}\n\nfigcaption strong {\n color: rgba(255,255,255,1);\n}\n\n.gh-canvas :not(pre) code {\n vertical-align: middle;\n padding: 0.15em 0.4em 0.15em;\n border: #e1eaef 1px solid;\n font-weight: 400 !important;\n font-size: 0.9em;\n line-height: 1em;\n color: #dc0050;\n background: #f0f6f9;\n border-radius: 0.25em;\n}\n\n.gh-canvas > pre {\n overflow: scroll;\n padding: 16px 20px;\n background: rgba(255,255,255,0.8);\n border-radius: 5px;\n box-shadow: 0 2px 6px -2px rgba(0,0,0,.1), 0 0 1px rgba(0,0,0,.4);\n}\n\n.kg-embed-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n}\n\n\n/* Galleries\n/* ---------------------------------------------------------- */\n\n.kg-gallery-card + .kg-gallery-card {\n margin-top: 0.75em;\n}\n\n.kg-gallery-container {\n position: relative;\n}\n\n.kg-gallery-row {\n display: flex;\n flex-direction: row;\n justify-content: center;\n}\n\n.kg-gallery-image img {\n display: block;\n margin: 0;\n width: 100%;\n height: 100%;\n}\n\n.kg-gallery-row:not(:first-of-type) {\n margin: 0.75em 0 0 0;\n}\n\n.kg-gallery-image:not(:first-of-type) {\n margin: 0 0 0 0.75em;\n}\n\n\n/* Bookmark Cards\n/* ---------------------------------------------------------- */\n\n.kg-bookmark-card,\n.kg-bookmark-publisher {\n position: relative;\n}\n\n.kg-bookmark-container {\n display: flex;\n flex-wrap: wrap;\n flex-direction: row-reverse;\n color: currentColor;\n background: rgba(255,255,255,0.6);\n font-family: inherit;\n text-decoration: none;\n border-radius: 5px;\n box-shadow: 0 2px 6px -2px rgba(0, 0, 0, 0.1), 0 0 1px rgba(0, 0, 0, 0.4);\n overflow: hidden;\n}\n\n.kg-bookmark-content {\n flex-basis: 0;\n flex-grow: 999;\n padding: 20px;\n order: 1;\n}\n\n.kg-bookmark-title {\n font-weight: 600;\n font-size: 1.5rem;\n}\n\n.kg-bookmark-description {\n display: -webkit-box;\n max-height: 45px;\n margin: 0.6em 0 0 0;\n font-size: 1.4rem;\n line-height: 1.55em;\n overflow: hidden;\n opacity: 0.8;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.kg-bookmark-metadata,\n.kg-bookmark-description {\n margin-top: 0.9em;\n}\n\n.kg-bookmark-metadata {\n display: flex;\n align-items: center;\n font-weight: 500;\n font-size: 1.3rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.kg-bookmark-description {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n}\n\n.kg-bookmark-icon {\n display: inline-block;\n width: 16px;\n height: 16px;\n vertical-align: text-bottom;\n margin-right: .5em;\n}\n\n.kg-bookmark-thumbnail {\n display: flex;\n flex-basis: 24rem;\n flex-grow: 1;\n}\n\n.kg-bookmark-thumbnail img {\n max-width: 100%;\n height: auto;\n vertical-align: bottom;\n object-fit: cover;\n}\n\n.kg-bookmark-author {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.kg-bookmark-publisher::before {\n content: \"•\";\n margin: 0 .5em;\n}\n\n\n/* Card captions\n/* ---------------------------------------------------------- */\n\n.kg-width-full.kg-card-hascaption {\n display: grid;\n grid-template-columns: inherit;\n}\n\n.kg-width-wide.kg-card-hascaption img {\n grid-column: wide-start / wide-end;\n}\n.kg-width-full.kg-card-hascaption img {\n grid-column: 1 / -1;\n}\n\n.kg-width-full.kg-card-hascaption figcaption {\n grid-column: main-start / main-end;\n}\n\n\n/* Tables\n/* ---------------------------------------------------------- */\n\n.gh-content table {\n border-collapse: collapse;\n width: 100%;\n}\n\n.gh-content th {\n padding: 0.5em 0.8em;\n text-align: left;\n font-size: .75em;\n text-transform: uppercase;\n}\n\n.gh-content td {\n padding: 0.4em 0.7em;\n}\n\n.gh-content tbody tr:nth-child(2n + 1) {\n background-color: rgba(0,0,0,0.1);\n padding: 1px;\n}\n\n.gh-content tbody tr:nth-child(2n + 2) td:last-child {\n box-shadow:\n inset 1px 0 rgba(0,0,0,0.1),\n inset -1px 0 rgba(0,0,0,0.1);\n}\n\n.gh-content tbody tr:nth-child(2n + 2) td {\n box-shadow: inset 1px 0 rgba(0,0,0,0.1);\n}\n\n.gh-content tbody tr:last-child {\n border-bottom: 1px solid rgba(0,0,0,.1);\n}\n","/* Read More\n/* ---------------------------------------------------------- */\n\n.gh-readmore {\n padding: 8vmin 4vw;\n font-size: 2.6rem;\n}\n\n.gh-readmore .gh-container {\n display: grid;\n grid-gap: 8vmin;\n grid-template-columns: 1fr 1fr;\n}\n\n.gh-readmore-prev {\n justify-content: flex-end;\n text-align: right;\n}\n\n.gh-readmore a {\n display: flex;\n color: currentColor;\n text-decoration: none;\n}\n\n.gh-readmore h4 {\n width: 100%;\n font-size: inherit;\n}\n\n.gh-readmore svg {\n display: inline-block;\n vertical-align: middle;\n height: 1em;\n margin: 0.15em 0 0;\n}\n\n.gh-readmore svg + h4,\n.gh-readmore h4 + svg {\n margin-left: 2vmin;\n}\n\n@media (max-width: 700px) {\n .gh-readmore {\n font-size: 1.6rem;\n }\n .gh-readmore svg {\n margin: 0.1em 0 0;\n }\n}\n","/* Members Forms\n/* ---------------------------------------------------------- */\n\nform[data-members-form] .button-loader,\nform[data-members-form] .message-success,\nform[data-members-form] .message-error {\n display: none;\n}\n\n.message-success svg,\n.message-error svg {\n position: relative;\n top: -1px;\n margin-right: 5px;\n height: 15px;\n width: 15px;\n}\n.message-success svg {\n fill: #fff;\n}\n.message-error svg {\n fill: var(--color-primary);\n}\n\nform[data-members-form].success .message-success,\nform[data-members-form].error .message-error {\n position: fixed;\n top: 20px;\n left: 6vw;\n right: 6vw;\n z-index: 9999;\n max-width: calc(1400px - 12vw);\n margin: 0 auto;\n padding: 10px 0;\n color: #fff;\n font-size: 1.4rem;\n line-height: 1.5em;\n font-weight: 500;\n text-align: center;\n background: var(--color-base);\n border-radius: var(--radius);\n}\nform[data-members-form].success .message-success {\n background: var(--color-success);\n}\nform[data-members-form].error .message-error {\n color: var(--color-primary);\n background: #fff;\n box-shadow: var(--color-primary) 0 0 0 1px;\n}\n\nform[data-members-form] .button {\n position: relative;\n}\n\n/*-- Loading --*/\n\n/* Hide button text */\nform[data-members-form].loading .button-content {\n visibility: hidden;\n}\n\n/* Show loading spinner */\nform[data-members-form].loading .button-loader {\n display: inline-block;\n position: absolute;\n left: 50%;\n margin-left: -19px;\n transform: scale(0.7);\n}\n\n.button-loader svg path,\n.button-loader svg rect{\n fill: #fff;\n}\n\n/*-- Show success message on success --*/\nform[data-members-form].success .message-success {\n display: block;\n}\n\n/*-- Show error message on error --*/\nform[data-members-form].error .message-error {\n display: block;\n}\n","/* Error Templates\n/* ---------------------------------------------------------- */\n\n.gh-error {\n flex: 1 0 auto;\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding-bottom: 2vmin;\n}\n\n.gh-error-content {\n flex: 1 0 auto;\n text-align: center;\n}\n\n.gh-error-code {\n margin: 0;\n font-size: 14vmin;\n}\n\n.gh-error-description {\n max-width: 600px;\n margin: 0 auto;\n padding: 0 2rem;\n font-size: 4vmin;\n line-height: 1.2em;\n font-weight: 300;\n opacity: 0.6;\n}\n\n.gh-error-link {\n display: block;\n margin-top: 4vmin;\n font-size: 1.6rem;\n}\n\n.gh-error-stack {\n max-width: 600px;\n margin: 0 auto 0;\n padding: 8vmin 0;\n text-align: left;\n}\n\n.gh-error-stack-list {\n margin: 4vmin 0 0;\n font-size: 1.4rem;\n}\n\n.gh-error-stack-list > li {\n padding: 2rem 0;\n margin: 0;\n border-top: rgba(0,0,0,0.1) 1px solid;\n}\n\n.gh-error-stack-function {\n margin: 0 0 0.5em;\n font-size: 1.8rem;\n color: red;\n}\n","/* Global Footer\n/* ---------------------------------------------------------- */\n\n.gh-foot {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8vmin 4vw;\n}\n\n.gh-foot .gh-container {\n width: auto;\n}\n\n.gh-foot a {\n color: inherit;\n}\n\n.gh-foot-menu {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.gh-foot-menu .nav {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n list-style: none;\n font-size: 1.8rem;\n}\n\n.gh-foot-menu .nav li {\n margin: 0 1.5vmin;\n padding: 0;\n}\n\n.gh-foot-menu .nav a {\n display: inline-block;\n padding: 3px 0;\n text-decoration: none;\n box-shadow: 0 -1px 0 0 currentcolor inset;\n}\n\n.gh-foot-meta {\n margin: 2rem 0;\n font-size: 1.5rem;\n text-align: center;\n opacity: 0.5;\n}\n\n@media (max-width: 700px) {\n .gh-foot-menu .nav {\n font-size: 1.6rem;\n }\n}\n","/*\n\nThis is a development CSS file which is compiled to a minified\nproduction stylesheet in assets/built/screen.css using: gulp dev\n\n*/\n\n/* Lib - Local component imports\n/* ---------------------------------------------------------- */\n\n/* Base components */\n@import \"vars.css\";\n@import \"components/global.css\";\n@import \"components/forms.css\";\n@import \"components/buttons.css\";\n\n/* Ghost components */\n@import \"ghost/header.css\";\n@import \"ghost/content.css\";\n@import \"ghost/readmore.css\";\n@import \"ghost/members.css\";\n@import \"ghost/errors.css\";\n@import \"ghost/footer.css\";\n\n\n/* Main - Your styles here! Edit below\n/* ---------------------------------------------------------- */\n\nhtml,\n.gh-viewport {\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n color: #fff;\n background: #ce9898;\n /* background: #8a9d96; */\n}\n\n.gh-main {\n flex: 1 0 auto;\n display: flex;\n flex-direction: column;\n}\n\n.gh-page {\n padding: 0 4vw;\n color: #000;\n background: #fff;\n}\n\n.gh-article {\n padding: 8vmin 0;\n}\n\n.gh-postfeed {\n padding: 8vmin 0;\n display: grid;\n grid-gap: 30px;\n grid-template-columns: 1fr 1fr 1fr;\n}\n\n@media (max-width: 900px) {\n .gh-postfeed {\n grid-template-columns: 1fr 1fr;\n }\n}\n\n.gh-container {\n width: 100%;\n max-width: 1300px;\n margin: 0 auto;\n}\n\n.gh-head-actions a {\n display: inline-flex;\n align-items: center;\n margin: 0;\n padding: 10px;\n}\n\n.gh-head-actions a svg {\n height: 1.8rem;\n fill: currentcolor;\n}\n\n.gh-head-actions a:first-child svg {\n margin-left: 20px;\n}\n\n.gh-head-actions a:last-child svg {\n height: 2rem;\n}\n\n/* Index\n/* ---------------------------------------------------------- */\n\n.home-template .gh-hero {\n min-height: 100vh;\n padding-bottom: 4vw;\n}\n\n.home-template .gh-hero-content h1 {\n font-size: 6vmin;\n}\n\n.gh-card-link {\n display: flex;\n flex-direction: column;\n}\n\n.gh-card-image {\n width: 100%;\n max-height: 700px;\n object-fit: cover;\n margin-bottom: 2vmin;\n}\n\n.gh-card-meta {\n display: block;\n margin: 0 0 1rem;\n font-size: 1.2rem;\n line-height: 1.2em;\n letter-spacing: 0.5px;\n text-transform: uppercase;\n opacity: 0.8;\n}\n\n.gh-card-content {\n max-width: 720px;\n margin: 0 auto;\n font-size: 1.4rem;\n line-height: 1.5em;\n}\n\n.gh-card-content h2 {\n margin: 0;\n font-size: 1.8rem;\n}\n\n.gh-card-content p {\n margin: 1rem 0;\n}\n\n.gh-card-content > strong {\n display: inline-block;\n padding: 1px 0;\n font-weight: 500;\n box-shadow: 0 -1px 0 0 inset currentColor;\n opacity: 0.5;\n}\n\n\n/* Page\n/* ---------------------------------------------------------- */\n\n.gh-page-head {\n margin: 0 auto;\n padding: 8vmin 0 4vmin;\n text-align: center;\n}\n\n.gh-page-image {\n margin: 4vmin 0 0 0;\n}\n\n.gh-page-head > p {\n max-width: 720px;\n margin: 0.3em auto 0;\n padding: 0 6vmin;\n font-size: 1.3em;\n line-height: 1.4em;\n opacity: 0.5;\n}\n\n@media (max-width: 700px) {\n .gh-page-head > p {\n font-size: 1.6rem;\n }\n}\n\n\n/* Post\n/* ---------------------------------------------------------- */\n\n.gh-header {\n padding: 0 0 8vmin 0;\n text-align: center;\n}\n\n.gh-post-meta {\n display: block;\n margin: 0 0 1rem;\n font-size: 1.4rem;\n letter-spacing: 0.5px;\n text-transform: uppercase;\n opacity: 0.8;\n}\n\n.gh-excerpt {\n margin: 1rem 0 0 0;\n}\n\n.gh-feature-image {\n grid-column: wide-start / wide-end;\n width: 100%;\n margin: 8vmin 0 0;\n}\n\n.gh-post-footer {\n margin: 2rem 0;\n}\n\n\n/* Author Archive\n/* ---------------------------------------------------------- */\n\n.gh-author-image {\n height: 10vmin;\n width: 10vmin;\n margin: 0 auto 1.5em;\n border-radius: 100%;\n overflow: hidden;\n object-fit: cover;\n}\n\n.gh-author-meta {\n margin: 2vmin 0 0 0;\n font-size: 1.2em;\n}\n\n.gh-author-links {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.gh-author-links a {\n position: relative;\n display: inline-flex;\n align-items: center;\n margin: 0 0.75vmin;\n color: currentColor;\n}\n\n.gh-author-links a + a:before {\n display: block;\n content: \"\";\n margin: 0 1.25vmin 0 0;\n height: 1em;\n width: 1px;\n background: currentColor;\n transform: rotate(20deg);\n opacity: 0.4;\n}\n\n@media (max-width: 700px) {\n .gh-author-meta {\n font-size: 1.6rem;\n }\n}\n"]} --------------------------------------------------------------------------------